Skip to content

Commit 57f6846

Browse files
committed
Merge tag 'kernel-5.14.0-570.10.1.el9_6' into main
This brings in changes from 9.6 since 5.1.el9_6. - dropped Makefile.rhelver changes - dropped KABI changes from redhat/rhel/src/kernel/rhel-9!3538+ v2: drop kernel.spec.template with_kabichk removal Signed-off-by: Patrick Talbert <ptalbert@redhat.com>
2 parents 2f93fda + 30f01cc commit 57f6846

File tree

54 files changed

+2377
-449
lines changed

Some content is hidden

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

54 files changed

+2377
-449
lines changed

Documentation/filesystems/gfs2-glocks.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ The gl_holders list contains all the queued lock requests (not
2020
just the holders) associated with the glock. If there are any
2121
held locks, then they will be contiguous entries at the head
2222
of the list. Locks are granted in strictly the order that they
23-
are queued, except for those marked LM_FLAG_PRIORITY which are
24-
used only during recovery, and even then only for journal locks.
23+
are queued.
2524

2625
There are three lock states that users of the glock layer can request,
2726
namely shared (SH), deferred (DF) and exclusive (EX). Those translate

arch/x86/include/asm/uaccess_64.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ copy_user_generic(void *to, const void *from, unsigned long len)
133133
"2:\n"
134134
_ASM_EXTABLE_UA(1b, 2b)
135135
:"+c" (len), "+D" (to), "+S" (from), ASM_CALL_CONSTRAINT
136-
: : "memory", "rax");
136+
: : "memory", "rax", "r8", "r9", "r10", "r11");
137137
clac();
138138
return len;
139139
}

arch/x86/lib/copy_user_64.S

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* NOTE! The calling convention is very intentionally the same as
2828
* for 'rep movs', so that we can rewrite the function call with
2929
* just a plain 'rep movs' on machines that have FSRM. But to make
30-
* it simpler for us, we can clobber rsi/rdi and rax freely.
30+
* it simpler for us, we can clobber rsi/rdi and rax/r8-r11 freely.
3131
*/
3232
SYM_FUNC_START(rep_movs_alternative)
3333
cmpq $64,%rcx
@@ -68,24 +68,55 @@ SYM_FUNC_START(rep_movs_alternative)
6868
_ASM_EXTABLE_UA( 3b, .Lcopy_user_tail)
6969

7070
.Llarge:
71-
0: ALTERNATIVE "jmp .Llarge_movsq", "rep movsb", X86_FEATURE_ERMS
71+
0: ALTERNATIVE "jmp .Lunrolled", "rep movsb", X86_FEATURE_ERMS
7272
1: RET
7373

74-
_ASM_EXTABLE_UA( 0b, 1b)
74+
_ASM_EXTABLE_UA( 0b, 1b)
7575

76-
.Llarge_movsq:
77-
movq %rcx,%rax
78-
shrq $3,%rcx
79-
andl $7,%eax
80-
0: rep movsq
81-
movl %eax,%ecx
76+
.p2align 4
77+
.Lunrolled:
78+
10: movq (%rsi),%r8
79+
11: movq 8(%rsi),%r9
80+
12: movq 16(%rsi),%r10
81+
13: movq 24(%rsi),%r11
82+
14: movq %r8,(%rdi)
83+
15: movq %r9,8(%rdi)
84+
16: movq %r10,16(%rdi)
85+
17: movq %r11,24(%rdi)
86+
20: movq 32(%rsi),%r8
87+
21: movq 40(%rsi),%r9
88+
22: movq 48(%rsi),%r10
89+
23: movq 56(%rsi),%r11
90+
24: movq %r8,32(%rdi)
91+
25: movq %r9,40(%rdi)
92+
26: movq %r10,48(%rdi)
93+
27: movq %r11,56(%rdi)
94+
addq $64,%rsi
95+
addq $64,%rdi
96+
subq $64,%rcx
97+
cmpq $64,%rcx
98+
jae .Lunrolled
99+
cmpl $8,%ecx
100+
jae .Lword
82101
testl %ecx,%ecx
83102
jne .Lcopy_user_tail
84103
RET
85104

86-
1: leaq (%rax,%rcx,8),%rcx
87-
jmp .Lcopy_user_tail
88-
89-
_ASM_EXTABLE_UA( 0b, 1b)
105+
_ASM_EXTABLE_UA(10b, .Lcopy_user_tail)
106+
_ASM_EXTABLE_UA(11b, .Lcopy_user_tail)
107+
_ASM_EXTABLE_UA(12b, .Lcopy_user_tail)
108+
_ASM_EXTABLE_UA(13b, .Lcopy_user_tail)
109+
_ASM_EXTABLE_UA(14b, .Lcopy_user_tail)
110+
_ASM_EXTABLE_UA(15b, .Lcopy_user_tail)
111+
_ASM_EXTABLE_UA(16b, .Lcopy_user_tail)
112+
_ASM_EXTABLE_UA(17b, .Lcopy_user_tail)
113+
_ASM_EXTABLE_UA(20b, .Lcopy_user_tail)
114+
_ASM_EXTABLE_UA(21b, .Lcopy_user_tail)
115+
_ASM_EXTABLE_UA(22b, .Lcopy_user_tail)
116+
_ASM_EXTABLE_UA(23b, .Lcopy_user_tail)
117+
_ASM_EXTABLE_UA(24b, .Lcopy_user_tail)
118+
_ASM_EXTABLE_UA(25b, .Lcopy_user_tail)
119+
_ASM_EXTABLE_UA(26b, .Lcopy_user_tail)
120+
_ASM_EXTABLE_UA(27b, .Lcopy_user_tail)
90121
SYM_FUNC_END(rep_movs_alternative)
91122
EXPORT_SYMBOL(rep_movs_alternative)

drivers/iommu/intel/dmar.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,6 +2056,7 @@ int enable_drhd_fault_handling(unsigned int cpu)
20562056
/*
20572057
* Enable fault control interrupt.
20582058
*/
2059+
guard(rwsem_read)(&dmar_global_lock);
20592060
for_each_iommu(iommu, drhd) {
20602061
u32 fault_status;
20612062
int ret;

drivers/iommu/intel/iommu.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3307,7 +3307,14 @@ int __init intel_iommu_init(void)
33073307
iommu_device_sysfs_add(&iommu->iommu, NULL,
33083308
intel_iommu_groups,
33093309
"%s", iommu->name);
3310+
/*
3311+
* The iommu device probe is protected by the iommu_probe_device_lock.
3312+
* Release the dmar_global_lock before entering the device probe path
3313+
* to avoid unnecessary lock order splat.
3314+
*/
3315+
up_read(&dmar_global_lock);
33103316
iommu_device_register(&iommu->iommu, &intel_iommu_ops, NULL);
3317+
down_read(&dmar_global_lock);
33113318

33123319
iommu_pmu_register(iommu);
33133320
}
@@ -4547,9 +4554,6 @@ static int context_setup_pass_through_cb(struct pci_dev *pdev, u16 alias, void *
45474554
{
45484555
struct device *dev = data;
45494556

4550-
if (dev != &pdev->dev)
4551-
return 0;
4552-
45534557
return context_setup_pass_through(dev, PCI_BUS_NUM(alias), alias & 0xff);
45544558
}
45554559

drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// SPDX-License-Identifier: GPL-2.0-only
2+
#include <linux/iommu.h>
23
#include <linux/platform_device.h>
34
#include <linux/of_device.h>
45
#include <linux/module.h>
@@ -19,6 +20,8 @@ struct tegra_mgbe {
1920
struct reset_control *rst_mac;
2021
struct reset_control *rst_pcs;
2122

23+
u32 iommu_sid;
24+
2225
void __iomem *hv;
2326
void __iomem *regs;
2427
void __iomem *xpcs;
@@ -50,7 +53,6 @@ struct tegra_mgbe {
5053
#define MGBE_WRAP_COMMON_INTR_ENABLE 0x8704
5154
#define MAC_SBD_INTR BIT(2)
5255
#define MGBE_WRAP_AXI_ASID0_CTRL 0x8400
53-
#define MGBE_SID 0x6
5456

5557
static int __maybe_unused tegra_mgbe_suspend(struct device *dev)
5658
{
@@ -84,7 +86,7 @@ static int __maybe_unused tegra_mgbe_resume(struct device *dev)
8486
writel(MAC_SBD_INTR, mgbe->regs + MGBE_WRAP_COMMON_INTR_ENABLE);
8587

8688
/* Program SID */
87-
writel(MGBE_SID, mgbe->hv + MGBE_WRAP_AXI_ASID0_CTRL);
89+
writel(mgbe->iommu_sid, mgbe->hv + MGBE_WRAP_AXI_ASID0_CTRL);
8890

8991
value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_STATUS);
9092
if ((value & XPCS_WRAP_UPHY_STATUS_TX_P_UP) == 0) {
@@ -241,6 +243,12 @@ static int tegra_mgbe_probe(struct platform_device *pdev)
241243
if (IS_ERR(mgbe->xpcs))
242244
return PTR_ERR(mgbe->xpcs);
243245

246+
/* get controller's stream id from iommu property in device tree */
247+
if (!tegra_dev_iommu_get_stream_id(mgbe->dev, &mgbe->iommu_sid)) {
248+
dev_err(mgbe->dev, "failed to get iommu stream id\n");
249+
return -EINVAL;
250+
}
251+
244252
res.addr = mgbe->regs;
245253
res.irq = irq;
246254

@@ -346,7 +354,7 @@ static int tegra_mgbe_probe(struct platform_device *pdev)
346354
writel(MAC_SBD_INTR, mgbe->regs + MGBE_WRAP_COMMON_INTR_ENABLE);
347355

348356
/* Program SID */
349-
writel(MGBE_SID, mgbe->hv + MGBE_WRAP_AXI_ASID0_CTRL);
357+
writel(mgbe->iommu_sid, mgbe->hv + MGBE_WRAP_AXI_ASID0_CTRL);
350358

351359
plat->flags |= STMMAC_FLAG_SERDES_UP_AFTER_PHY_LINKUP;
352360

drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ static int tc_setup_cbs(struct stmmac_priv *priv,
396396
return ret;
397397

398398
priv->plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
399+
return 0;
399400
}
400401

401402
/* Final adjustments for HW */

drivers/scsi/qla2xxx/qla_os.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6902,12 +6902,15 @@ qla2x00_do_dpc(void *data)
69026902
set_user_nice(current, MIN_NICE);
69036903

69046904
set_current_state(TASK_INTERRUPTIBLE);
6905-
while (!kthread_should_stop()) {
6905+
while (1) {
69066906
ql_dbg(ql_dbg_dpc, base_vha, 0x4000,
69076907
"DPC handler sleeping.\n");
69086908

69096909
schedule();
69106910

6911+
if (kthread_should_stop())
6912+
break;
6913+
69116914
if (test_and_clear_bit(DO_EEH_RECOVERY, &base_vha->dpc_flags))
69126915
qla_pci_set_eeh_busy(base_vha);
69136916

@@ -6920,15 +6923,16 @@ qla2x00_do_dpc(void *data)
69206923
goto end_loop;
69216924
}
69226925

6926+
if (test_bit(UNLOADING, &base_vha->dpc_flags))
6927+
/* don't do any work. Wait to be terminated by kthread_stop */
6928+
goto end_loop;
6929+
69236930
ha->dpc_active = 1;
69246931

69256932
ql_dbg(ql_dbg_dpc + ql_dbg_verbose, base_vha, 0x4001,
69266933
"DPC handler waking up, dpc_flags=0x%lx.\n",
69276934
base_vha->dpc_flags);
69286935

6929-
if (test_bit(UNLOADING, &base_vha->dpc_flags))
6930-
break;
6931-
69326936
if (IS_P3P_TYPE(ha)) {
69336937
if (IS_QLA8044(ha)) {
69346938
if (test_and_clear_bit(ISP_UNRECOVERABLE,
@@ -7241,9 +7245,6 @@ qla2x00_do_dpc(void *data)
72417245
*/
72427246
ha->dpc_active = 0;
72437247

7244-
/* Cleanup any residual CTX SRBs. */
7245-
qla2x00_abort_all_cmds(base_vha, DID_NO_CONNECT << 16);
7246-
72477248
return 0;
72487249
}
72497250

0 commit comments

Comments
 (0)