Skip to content

Commit 4473946

Browse files
committed
Merge remote-tracking branch 'stable/linux-6.12.y' into rpi-6.12.y
2 parents 391c2e3 + 4fc43de commit 4473946

File tree

161 files changed

+1901
-955
lines changed

Some content is hidden

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

161 files changed

+1901
-955
lines changed

Documentation/arch/arm64/silicon-errata.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ stable kernels.
198198
+----------------+-----------------+-----------------+-----------------------------+
199199
| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 |
200200
+----------------+-----------------+-----------------+-----------------------------+
201+
| ARM | Neoverse-V3AE | #3312417 | ARM64_ERRATUM_3194386 |
202+
+----------------+-----------------+-----------------+-----------------------------+
201203
| ARM | MMU-500 | #841119,826419 | N/A |
202204
+----------------+-----------------+-----------------+-----------------------------+
203205
| ARM | MMU-600 | #1076982,1209401| N/A |

Documentation/networking/seg6-sysctl.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ seg6_require_hmac - INTEGER
2525

2626
Default is 0.
2727

28+
/proc/sys/net/ipv6/seg6_* variables:
29+
====================================
30+
2831
seg6_flowlabel - INTEGER
2932
Controls the behaviour of computing the flowlabel of outer
3033
IPv6 header in case of SR T.encaps

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 = 6
33
PATCHLEVEL = 12
4-
SUBLEVEL = 54
4+
SUBLEVEL = 55
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

arch/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,7 @@ config HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC
861861
def_bool y
862862
depends on HAVE_CFI_ICALL_NORMALIZE_INTEGERS_CLANG
863863
depends on RUSTC_VERSION >= 107900
864+
depends on ARM64 || X86_64
864865
# With GCOV/KASAN we need this fix: https://github.com/rust-lang/rust/pull/129373
865866
depends on (RUSTC_LLVM_VERSION >= 190103 && RUSTC_VERSION >= 108200) || \
866867
(!GCOV_KERNEL && !KASAN_GENERIC && !KASAN_SW_TAGS)

arch/arm64/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,7 @@ config ARM64_ERRATUM_3194386
11121112
* ARM Neoverse-V1 erratum 3324341
11131113
* ARM Neoverse V2 erratum 3324336
11141114
* ARM Neoverse-V3 erratum 3312417
1115+
* ARM Neoverse-V3AE erratum 3312417
11151116

11161117
On affected cores "MSR SSBS, #0" instructions may not affect
11171118
subsequent speculative instructions, which may permit unexepected

arch/arm64/include/asm/cputype.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
#define ARM_CPU_PART_NEOVERSE_V2 0xD4F
9494
#define ARM_CPU_PART_CORTEX_A720 0xD81
9595
#define ARM_CPU_PART_CORTEX_X4 0xD82
96+
#define ARM_CPU_PART_NEOVERSE_V3AE 0xD83
9697
#define ARM_CPU_PART_NEOVERSE_V3 0xD84
9798
#define ARM_CPU_PART_CORTEX_X925 0xD85
9899
#define ARM_CPU_PART_CORTEX_A725 0xD87
@@ -180,6 +181,7 @@
180181
#define MIDR_NEOVERSE_V2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V2)
181182
#define MIDR_CORTEX_A720 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A720)
182183
#define MIDR_CORTEX_X4 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X4)
184+
#define MIDR_NEOVERSE_V3AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3AE)
183185
#define MIDR_NEOVERSE_V3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3)
184186
#define MIDR_CORTEX_X925 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X925)
185187
#define MIDR_CORTEX_A725 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A725)

arch/arm64/kernel/cpu_errata.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
455455
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
456456
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
457457
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),
458+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3AE),
458459
{}
459460
};
460461
#endif

arch/riscv/kernel/probes/kprobes.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,15 @@ static void __kprobes arch_simulate_insn(struct kprobe *p, struct pt_regs *regs)
4949
post_kprobe_handler(p, kcb, regs);
5050
}
5151

52-
static bool __kprobes arch_check_kprobe(struct kprobe *p)
52+
static bool __kprobes arch_check_kprobe(unsigned long addr)
5353
{
54-
unsigned long tmp = (unsigned long)p->addr - p->offset;
55-
unsigned long addr = (unsigned long)p->addr;
54+
unsigned long tmp, offset;
55+
56+
/* start iterating at the closest preceding symbol */
57+
if (!kallsyms_lookup_size_offset(addr, NULL, &offset))
58+
return false;
59+
60+
tmp = addr - offset;
5661

5762
while (tmp <= addr) {
5863
if (tmp == addr)
@@ -71,7 +76,7 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
7176
if ((unsigned long)insn & 0x1)
7277
return -EILSEQ;
7378

74-
if (!arch_check_kprobe(p))
79+
if (!arch_check_kprobe((unsigned long)p->addr))
7580
return -EILSEQ;
7681

7782
/* copy instruction */

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

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -312,38 +312,52 @@ static u64 mbm_overflow_count(u64 prev_msr, u64 cur_msr, unsigned int width)
312312
return chunks >> shift;
313313
}
314314

315+
static u64 get_corrected_val(struct rdt_resource *r, struct rdt_mon_domain *d,
316+
u32 rmid, enum resctrl_event_id eventid, u64 msr_val)
317+
{
318+
struct rdt_hw_mon_domain *hw_dom = resctrl_to_arch_mon_dom(d);
319+
struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
320+
struct arch_mbm_state *am;
321+
u64 chunks;
322+
323+
am = get_arch_mbm_state(hw_dom, rmid, eventid);
324+
if (am) {
325+
am->chunks += mbm_overflow_count(am->prev_msr, msr_val,
326+
hw_res->mbm_width);
327+
chunks = get_corrected_mbm_count(rmid, am->chunks);
328+
am->prev_msr = msr_val;
329+
} else {
330+
chunks = msr_val;
331+
}
332+
333+
return chunks * hw_res->mon_scale;
334+
}
335+
315336
int resctrl_arch_rmid_read(struct rdt_resource *r, struct rdt_mon_domain *d,
316337
u32 unused, u32 rmid, enum resctrl_event_id eventid,
317338
u64 *val, void *ignored)
318339
{
319340
struct rdt_hw_mon_domain *hw_dom = resctrl_to_arch_mon_dom(d);
320-
struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
321341
int cpu = cpumask_any(&d->hdr.cpu_mask);
322342
struct arch_mbm_state *am;
323-
u64 msr_val, chunks;
343+
u64 msr_val;
324344
u32 prmid;
325345
int ret;
326346

327347
resctrl_arch_rmid_read_context_check();
328348

329349
prmid = logical_rmid_to_physical_rmid(cpu, rmid);
330350
ret = __rmid_read_phys(prmid, eventid, &msr_val);
331-
if (ret)
332-
return ret;
333351

334-
am = get_arch_mbm_state(hw_dom, rmid, eventid);
335-
if (am) {
336-
am->chunks += mbm_overflow_count(am->prev_msr, msr_val,
337-
hw_res->mbm_width);
338-
chunks = get_corrected_mbm_count(rmid, am->chunks);
339-
am->prev_msr = msr_val;
340-
} else {
341-
chunks = msr_val;
352+
if (!ret) {
353+
*val = get_corrected_val(r, d, rmid, eventid, msr_val);
354+
} else if (ret == -EINVAL) {
355+
am = get_arch_mbm_state(hw_dom, rmid, eventid);
356+
if (am)
357+
am->prev_msr = 0;
342358
}
343359

344-
*val = chunks * hw_res->mon_scale;
345-
346-
return 0;
360+
return ret;
347361
}
348362

349363
static void limbo_release_entry(struct rmid_entry *entry)

drivers/accel/qaic/qaic.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ struct dma_bridge_chan {
9191
* response queue's head and tail pointer of this DBC.
9292
*/
9393
void __iomem *dbc_base;
94+
/* Synchronizes access to Request queue's head and tail pointer */
95+
struct mutex req_lock;
9496
/* Head of list where each node is a memory handle queued in request queue */
9597
struct list_head xfer_list;
9698
/* Synchronizes DBC readers during cleanup */

0 commit comments

Comments
 (0)