Skip to content

Commit 4d72b6a

Browse files
authored
Merge pull request torvalds#200 from zandrey/5.4.x+fslc
Update 5.4.x+fslc to v5.4.85
2 parents c121e64 + 2b222a0 commit 4d72b6a

File tree

44 files changed

+350
-97
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+350
-97
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5151,6 +5151,7 @@
51515151
device);
51525152
j = NO_REPORT_LUNS (don't use report luns
51535153
command, uas only);
5154+
k = NO_SAME (do not use WRITE_SAME, uas only)
51545155
l = NOT_LOCKABLE (don't try to lock and
51555156
unlock ejectable media, not on uas);
51565157
m = MAX_SECTORS_64 (don't transfer more

Documentation/virt/kvm/mmu.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ If the generation number of the spte does not equal the global generation
420420
number, it will ignore the cached MMIO information and handle the page
421421
fault through the slow path.
422422

423-
Since only 19 bits are used to store generation-number on mmio spte, all
423+
Since only 18 bits are used to store generation-number on mmio spte, all
424424
pages are zapped when there is an overflow.
425425

426426
Unfortunately, a single memory access might access kvm_memslots(kvm) multiple

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 5
33
PATCHLEVEL = 4
4-
SUBLEVEL = 84
4+
SUBLEVEL = 85
55
EXTRAVERSION =
66
NAME = Kleptomaniac Octopus
77

arch/x86/kernel/cpu/resctrl/internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ struct rftype {
276276
* struct mbm_state - status for each MBM counter in each domain
277277
* @chunks: Total data moved (multiply by rdt_group.mon_scale to get bytes)
278278
* @prev_msr Value of IA32_QM_CTR for this RMID last time we read it
279-
* @chunks_bw Total local data moved. Used for bandwidth calculation
280279
* @prev_bw_msr:Value of previous IA32_QM_CTR for bandwidth counting
281280
* @prev_bw The most recent bandwidth in MBps
282281
* @delta_bw Difference between the current and previous bandwidth
@@ -285,7 +284,6 @@ struct rftype {
285284
struct mbm_state {
286285
u64 chunks;
287286
u64 prev_msr;
288-
u64 chunks_bw;
289287
u64 prev_bw_msr;
290288
u32 prev_bw;
291289
u32 delta_bw;

arch/x86/kernel/cpu/resctrl/monitor.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,6 @@ static void mbm_bw_count(u32 rmid, struct rmid_read *rr)
280280
return;
281281

282282
chunks = mbm_overflow_count(m->prev_bw_msr, tval);
283-
m->chunks_bw += chunks;
284-
m->chunks = m->chunks_bw;
285283
cur_bw = (chunks * r->mon_scale) >> 20;
286284

287285
if (m->delta_comp)
@@ -451,15 +449,14 @@ static void mbm_update(struct rdt_domain *d, int rmid)
451449
}
452450
if (is_mbm_local_enabled()) {
453451
rr.evtid = QOS_L3_MBM_LOCAL_EVENT_ID;
452+
__mon_event_count(rmid, &rr);
454453

455454
/*
456455
* Call the MBA software controller only for the
457456
* control groups and when user has enabled
458457
* the software controller explicitly.
459458
*/
460-
if (!is_mba_sc(NULL))
461-
__mon_event_count(rmid, &rr);
462-
else
459+
if (is_mba_sc(NULL))
463460
mbm_bw_count(rmid, &rr);
464461
}
465462
}

arch/x86/kvm/mmu.c

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -407,11 +407,11 @@ static inline bool is_access_track_spte(u64 spte)
407407
}
408408

409409
/*
410-
* Due to limited space in PTEs, the MMIO generation is a 19 bit subset of
410+
* Due to limited space in PTEs, the MMIO generation is a 18 bit subset of
411411
* the memslots generation and is derived as follows:
412412
*
413413
* Bits 0-8 of the MMIO generation are propagated to spte bits 3-11
414-
* Bits 9-18 of the MMIO generation are propagated to spte bits 52-61
414+
* Bits 9-17 of the MMIO generation are propagated to spte bits 54-62
415415
*
416416
* The KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS flag is intentionally not included in
417417
* the MMIO generation number, as doing so would require stealing a bit from
@@ -420,36 +420,47 @@ static inline bool is_access_track_spte(u64 spte)
420420
* requires a full MMU zap). The flag is instead explicitly queried when
421421
* checking for MMIO spte cache hits.
422422
*/
423-
#define MMIO_SPTE_GEN_MASK GENMASK_ULL(17, 0)
424423

425424
#define MMIO_SPTE_GEN_LOW_START 3
426425
#define MMIO_SPTE_GEN_LOW_END 11
427-
#define MMIO_SPTE_GEN_LOW_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_END, \
428-
MMIO_SPTE_GEN_LOW_START)
429426

430427
#define MMIO_SPTE_GEN_HIGH_START PT64_SECOND_AVAIL_BITS_SHIFT
431428
#define MMIO_SPTE_GEN_HIGH_END 62
429+
430+
#define MMIO_SPTE_GEN_LOW_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_END, \
431+
MMIO_SPTE_GEN_LOW_START)
432432
#define MMIO_SPTE_GEN_HIGH_MASK GENMASK_ULL(MMIO_SPTE_GEN_HIGH_END, \
433433
MMIO_SPTE_GEN_HIGH_START)
434434

435+
#define MMIO_SPTE_GEN_LOW_BITS (MMIO_SPTE_GEN_LOW_END - MMIO_SPTE_GEN_LOW_START + 1)
436+
#define MMIO_SPTE_GEN_HIGH_BITS (MMIO_SPTE_GEN_HIGH_END - MMIO_SPTE_GEN_HIGH_START + 1)
437+
438+
/* remember to adjust the comment above as well if you change these */
439+
static_assert(MMIO_SPTE_GEN_LOW_BITS == 9 && MMIO_SPTE_GEN_HIGH_BITS == 9);
440+
441+
#define MMIO_SPTE_GEN_LOW_SHIFT (MMIO_SPTE_GEN_LOW_START - 0)
442+
#define MMIO_SPTE_GEN_HIGH_SHIFT (MMIO_SPTE_GEN_HIGH_START - MMIO_SPTE_GEN_LOW_BITS)
443+
444+
#define MMIO_SPTE_GEN_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_BITS + MMIO_SPTE_GEN_HIGH_BITS - 1, 0)
445+
435446
static u64 generation_mmio_spte_mask(u64 gen)
436447
{
437448
u64 mask;
438449

439450
WARN_ON(gen & ~MMIO_SPTE_GEN_MASK);
440451
BUILD_BUG_ON((MMIO_SPTE_GEN_HIGH_MASK | MMIO_SPTE_GEN_LOW_MASK) & SPTE_SPECIAL_MASK);
441452

442-
mask = (gen << MMIO_SPTE_GEN_LOW_START) & MMIO_SPTE_GEN_LOW_MASK;
443-
mask |= (gen << MMIO_SPTE_GEN_HIGH_START) & MMIO_SPTE_GEN_HIGH_MASK;
453+
mask = (gen << MMIO_SPTE_GEN_LOW_SHIFT) & MMIO_SPTE_GEN_LOW_MASK;
454+
mask |= (gen << MMIO_SPTE_GEN_HIGH_SHIFT) & MMIO_SPTE_GEN_HIGH_MASK;
444455
return mask;
445456
}
446457

447458
static u64 get_mmio_spte_generation(u64 spte)
448459
{
449460
u64 gen;
450461

451-
gen = (spte & MMIO_SPTE_GEN_LOW_MASK) >> MMIO_SPTE_GEN_LOW_START;
452-
gen |= (spte & MMIO_SPTE_GEN_HIGH_MASK) >> MMIO_SPTE_GEN_HIGH_START;
462+
gen = (spte & MMIO_SPTE_GEN_LOW_MASK) >> MMIO_SPTE_GEN_LOW_SHIFT;
463+
gen |= (spte & MMIO_SPTE_GEN_HIGH_MASK) >> MMIO_SPTE_GEN_HIGH_SHIFT;
453464
return gen;
454465
}
455466

drivers/net/ethernet/freescale/enetc/enetc_ethtool.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ static const struct {
141141
{ ENETC_PM0_R255, "MAC rx 128-255 byte packets" },
142142
{ ENETC_PM0_R511, "MAC rx 256-511 byte packets" },
143143
{ ENETC_PM0_R1023, "MAC rx 512-1023 byte packets" },
144-
{ ENETC_PM0_R1518, "MAC rx 1024-1518 byte packets" },
145-
{ ENETC_PM0_R1519X, "MAC rx 1519 to max-octet packets" },
144+
{ ENETC_PM0_R1522, "MAC rx 1024-1522 byte packets" },
145+
{ ENETC_PM0_R1523X, "MAC rx 1523 to max-octet packets" },
146146
{ ENETC_PM0_ROVR, "MAC rx oversized packets" },
147147
{ ENETC_PM0_RJBR, "MAC rx jabber packets" },
148148
{ ENETC_PM0_RFRG, "MAC rx fragment packets" },
@@ -161,9 +161,13 @@ static const struct {
161161
{ ENETC_PM0_TBCA, "MAC tx broadcast frames" },
162162
{ ENETC_PM0_TPKT, "MAC tx packets" },
163163
{ ENETC_PM0_TUND, "MAC tx undersized packets" },
164+
{ ENETC_PM0_T64, "MAC tx 64 byte packets" },
164165
{ ENETC_PM0_T127, "MAC tx 65-127 byte packets" },
166+
{ ENETC_PM0_T255, "MAC tx 128-255 byte packets" },
167+
{ ENETC_PM0_T511, "MAC tx 256-511 byte packets" },
165168
{ ENETC_PM0_T1023, "MAC tx 512-1023 byte packets" },
166-
{ ENETC_PM0_T1518, "MAC tx 1024-1518 byte packets" },
169+
{ ENETC_PM0_T1522, "MAC tx 1024-1522 byte packets" },
170+
{ ENETC_PM0_T1523X, "MAC tx 1523 to max-octet packets" },
167171
{ ENETC_PM0_TCNP, "MAC tx control packets" },
168172
{ ENETC_PM0_TDFR, "MAC tx deferred packets" },
169173
{ ENETC_PM0_TMCOL, "MAC tx multiple collisions" },

drivers/net/ethernet/freescale/enetc/enetc_hw.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ enum enetc_bdr_type {TX, RX};
239239
#define ENETC_PM0_R255 0x8180
240240
#define ENETC_PM0_R511 0x8188
241241
#define ENETC_PM0_R1023 0x8190
242-
#define ENETC_PM0_R1518 0x8198
243-
#define ENETC_PM0_R1519X 0x81A0
242+
#define ENETC_PM0_R1522 0x8198
243+
#define ENETC_PM0_R1523X 0x81A0
244244
#define ENETC_PM0_ROVR 0x81A8
245245
#define ENETC_PM0_RJBR 0x81B0
246246
#define ENETC_PM0_RFRG 0x81B8
@@ -259,9 +259,13 @@ enum enetc_bdr_type {TX, RX};
259259
#define ENETC_PM0_TBCA 0x8250
260260
#define ENETC_PM0_TPKT 0x8260
261261
#define ENETC_PM0_TUND 0x8268
262+
#define ENETC_PM0_T64 0x8270
262263
#define ENETC_PM0_T127 0x8278
264+
#define ENETC_PM0_T255 0x8280
265+
#define ENETC_PM0_T511 0x8288
263266
#define ENETC_PM0_T1023 0x8290
264-
#define ENETC_PM0_T1518 0x8298
267+
#define ENETC_PM0_T1522 0x8298
268+
#define ENETC_PM0_T1523X 0x82A0
265269
#define ENETC_PM0_TCNP 0x82C0
266270
#define ENETC_PM0_TDFR 0x82D0
267271
#define ENETC_PM0_TMCOL 0x82D8

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535

3636
#define HCLGE_DBG_DFX_SSU_2_OFFSET 12
3737

38-
#pragma pack(1)
39-
4038
struct hclge_qos_pri_map_cmd {
4139
u8 pri0_tc : 4,
4240
pri1_tc : 4;
@@ -85,8 +83,6 @@ struct hclge_dbg_reg_type_info {
8583
struct hclge_dbg_reg_common_msg reg_msg;
8684
};
8785

88-
#pragma pack()
89-
9086
static struct hclge_dbg_dfx_message hclge_dbg_bios_common_reg[] = {
9187
{false, "Reserved"},
9288
{true, "BP_CPU_STATE"},

drivers/net/ethernet/mellanox/mlx4/en_netdev.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,8 +1383,10 @@ static void mlx4_en_tx_timeout(struct net_device *dev)
13831383
}
13841384

13851385
priv->port_stats.tx_timeout++;
1386-
en_dbg(DRV, priv, "Scheduling watchdog\n");
1387-
queue_work(mdev->workqueue, &priv->watchdog_task);
1386+
if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state)) {
1387+
en_dbg(DRV, priv, "Scheduling port restart\n");
1388+
queue_work(mdev->workqueue, &priv->restart_task);
1389+
}
13881390
}
13891391

13901392

@@ -1738,6 +1740,7 @@ int mlx4_en_start_port(struct net_device *dev)
17381740
mlx4_en_deactivate_cq(priv, cq);
17391741
goto tx_err;
17401742
}
1743+
clear_bit(MLX4_EN_TX_RING_STATE_RECOVERING, &tx_ring->state);
17411744
if (t != TX_XDP) {
17421745
tx_ring->tx_queue = netdev_get_tx_queue(dev, i);
17431746
tx_ring->recycle_ring = NULL;
@@ -1834,6 +1837,7 @@ int mlx4_en_start_port(struct net_device *dev)
18341837
local_bh_enable();
18351838
}
18361839

1840+
clear_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state);
18371841
netif_tx_start_all_queues(dev);
18381842
netif_device_attach(dev);
18391843

@@ -2004,7 +2008,7 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)
20042008
static void mlx4_en_restart(struct work_struct *work)
20052009
{
20062010
struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv,
2007-
watchdog_task);
2011+
restart_task);
20082012
struct mlx4_en_dev *mdev = priv->mdev;
20092013
struct net_device *dev = priv->dev;
20102014

@@ -2386,7 +2390,7 @@ static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu)
23862390
if (netif_running(dev)) {
23872391
mutex_lock(&mdev->state_lock);
23882392
if (!mdev->device_up) {
2389-
/* NIC is probably restarting - let watchdog task reset
2393+
/* NIC is probably restarting - let restart task reset
23902394
* the port */
23912395
en_dbg(DRV, priv, "Change MTU called with card down!?\n");
23922396
} else {
@@ -2395,7 +2399,9 @@ static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu)
23952399
if (err) {
23962400
en_err(priv, "Failed restarting port:%d\n",
23972401
priv->port);
2398-
queue_work(mdev->workqueue, &priv->watchdog_task);
2402+
if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING,
2403+
&priv->state))
2404+
queue_work(mdev->workqueue, &priv->restart_task);
23992405
}
24002406
}
24012407
mutex_unlock(&mdev->state_lock);
@@ -2865,7 +2871,8 @@ static int mlx4_xdp_set(struct net_device *dev, struct bpf_prog *prog)
28652871
if (err) {
28662872
en_err(priv, "Failed starting port %d for XDP change\n",
28672873
priv->port);
2868-
queue_work(mdev->workqueue, &priv->watchdog_task);
2874+
if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state))
2875+
queue_work(mdev->workqueue, &priv->restart_task);
28692876
}
28702877
}
28712878

@@ -3263,7 +3270,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
32633270
priv->counter_index = MLX4_SINK_COUNTER_INDEX(mdev->dev);
32643271
spin_lock_init(&priv->stats_lock);
32653272
INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode);
3266-
INIT_WORK(&priv->watchdog_task, mlx4_en_restart);
3273+
INIT_WORK(&priv->restart_task, mlx4_en_restart);
32673274
INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate);
32683275
INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats);
32693276
INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task);

drivers/net/ethernet/mellanox/mlx4/en_tx.c

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,35 @@ int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring)
392392
return cnt;
393393
}
394394

395+
static void mlx4_en_handle_err_cqe(struct mlx4_en_priv *priv, struct mlx4_err_cqe *err_cqe,
396+
u16 cqe_index, struct mlx4_en_tx_ring *ring)
397+
{
398+
struct mlx4_en_dev *mdev = priv->mdev;
399+
struct mlx4_en_tx_info *tx_info;
400+
struct mlx4_en_tx_desc *tx_desc;
401+
u16 wqe_index;
402+
int desc_size;
403+
404+
en_err(priv, "CQE error - cqn 0x%x, ci 0x%x, vendor syndrome: 0x%x syndrome: 0x%x\n",
405+
ring->sp_cqn, cqe_index, err_cqe->vendor_err_syndrome, err_cqe->syndrome);
406+
print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET, 16, 1, err_cqe, sizeof(*err_cqe),
407+
false);
408+
409+
wqe_index = be16_to_cpu(err_cqe->wqe_index) & ring->size_mask;
410+
tx_info = &ring->tx_info[wqe_index];
411+
desc_size = tx_info->nr_txbb << LOG_TXBB_SIZE;
412+
en_err(priv, "Related WQE - qpn 0x%x, wqe index 0x%x, wqe size 0x%x\n", ring->qpn,
413+
wqe_index, desc_size);
414+
tx_desc = ring->buf + (wqe_index << LOG_TXBB_SIZE);
415+
print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET, 16, 1, tx_desc, desc_size, false);
416+
417+
if (test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state))
418+
return;
419+
420+
en_err(priv, "Scheduling port restart\n");
421+
queue_work(mdev->workqueue, &priv->restart_task);
422+
}
423+
395424
bool mlx4_en_process_tx_cq(struct net_device *dev,
396425
struct mlx4_en_cq *cq, int napi_budget)
397426
{
@@ -438,13 +467,10 @@ bool mlx4_en_process_tx_cq(struct net_device *dev,
438467
dma_rmb();
439468

440469
if (unlikely((cqe->owner_sr_opcode & MLX4_CQE_OPCODE_MASK) ==
441-
MLX4_CQE_OPCODE_ERROR)) {
442-
struct mlx4_err_cqe *cqe_err = (struct mlx4_err_cqe *)cqe;
443-
444-
en_err(priv, "CQE error - vendor syndrome: 0x%x syndrome: 0x%x\n",
445-
cqe_err->vendor_err_syndrome,
446-
cqe_err->syndrome);
447-
}
470+
MLX4_CQE_OPCODE_ERROR))
471+
if (!test_and_set_bit(MLX4_EN_TX_RING_STATE_RECOVERING, &ring->state))
472+
mlx4_en_handle_err_cqe(priv, (struct mlx4_err_cqe *)cqe, index,
473+
ring);
448474

449475
/* Skip over last polled CQE */
450476
new_index = be16_to_cpu(cqe->wqe_index) & size_mask;

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,10 @@ struct mlx4_en_page_cache {
271271
} buf[MLX4_EN_CACHE_SIZE];
272272
};
273273

274+
enum {
275+
MLX4_EN_TX_RING_STATE_RECOVERING,
276+
};
277+
274278
struct mlx4_en_priv;
275279

276280
struct mlx4_en_tx_ring {
@@ -317,6 +321,7 @@ struct mlx4_en_tx_ring {
317321
* Only queue_stopped might be used if BQL is not properly working.
318322
*/
319323
unsigned long queue_stopped;
324+
unsigned long state;
320325
struct mlx4_hwq_resources sp_wqres;
321326
struct mlx4_qp sp_qp;
322327
struct mlx4_qp_context sp_context;
@@ -530,6 +535,10 @@ struct mlx4_en_stats_bitmap {
530535
struct mutex mutex; /* for mutual access to stats bitmap */
531536
};
532537

538+
enum {
539+
MLX4_EN_STATE_FLAG_RESTARTING,
540+
};
541+
533542
struct mlx4_en_priv {
534543
struct mlx4_en_dev *mdev;
535544
struct mlx4_en_port_profile *prof;
@@ -595,7 +604,7 @@ struct mlx4_en_priv {
595604
struct mlx4_en_cq *rx_cq[MAX_RX_RINGS];
596605
struct mlx4_qp drop_qp;
597606
struct work_struct rx_mode_task;
598-
struct work_struct watchdog_task;
607+
struct work_struct restart_task;
599608
struct work_struct linkstate_task;
600609
struct delayed_work stats_task;
601610
struct delayed_work service_task;
@@ -643,6 +652,7 @@ struct mlx4_en_priv {
643652
u32 pflags;
644653
u8 rss_key[MLX4_EN_RSS_KEY_SIZE];
645654
u8 rss_hash_fn;
655+
unsigned long state;
646656
};
647657

648658
enum mlx4_en_wol {

0 commit comments

Comments
 (0)