Skip to content

Commit 85364f5

Browse files
committed
Merge remote-tracking branch 'stable/linux-6.6.y' into rpi-6.6.y
2 parents b9e540f + 6d1dc55 commit 85364f5

File tree

282 files changed

+3279
-1994
lines changed

Some content is hidden

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

282 files changed

+3279
-1994
lines changed

MAINTAINERS

+1-1
Original file line numberDiff line numberDiff line change
@@ -13741,7 +13741,7 @@ M: Mathieu Desnoyers <[email protected]>
1374113741
M: "Paul E. McKenney" <[email protected]>
1374213742
1374313743
S: Supported
13744-
F: arch/powerpc/include/asm/membarrier.h
13744+
F: arch/*/include/asm/membarrier.h
1374513745
F: include/uapi/linux/membarrier.h
1374613746
F: kernel/sched/membarrier.c
1374713747

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 6
4-
SUBLEVEL = 50
4+
SUBLEVEL = 51
55
EXTRAVERSION =
66
NAME = Hurr durr I'ma ninja sloth
77

arch/arm/include/asm/pgtable.h

+2
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
151151

152152
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
153153

154+
#define pgdp_get(pgpd) READ_ONCE(*pgdp)
155+
154156
#define pud_page(pud) pmd_page(__pmd(pud_val(pud)))
155157
#define pud_write(pud) pmd_write(__pmd(pud_val(pud)))
156158

arch/arm64/include/asm/acpi.h

+12
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,18 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
119119
return acpi_cpu_get_madt_gicc(cpu)->uid;
120120
}
121121

122+
static inline int get_cpu_for_acpi_id(u32 uid)
123+
{
124+
int cpu;
125+
126+
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
127+
if (acpi_cpu_get_madt_gicc(cpu) &&
128+
uid == get_acpi_id_for_cpu(cpu))
129+
return cpu;
130+
131+
return -EINVAL;
132+
}
133+
122134
static inline void arch_fix_phys_package_id(int num, u32 slot) { }
123135
void __init acpi_init_cpus(void);
124136
int apei_claim_sea(struct pt_regs *regs);

arch/arm64/kernel/acpi_numa.c

-11
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,6 @@ int __init acpi_numa_get_nid(unsigned int cpu)
3434
return acpi_early_node_map[cpu];
3535
}
3636

37-
static inline int get_cpu_for_acpi_id(u32 uid)
38-
{
39-
int cpu;
40-
41-
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
42-
if (uid == get_acpi_id_for_cpu(cpu))
43-
return cpu;
44-
45-
return -EINVAL;
46-
}
47-
4837
static int __init acpi_parse_gicc_pxm(union acpi_subtable_headers *header,
4938
const unsigned long end)
5039
{

arch/loongarch/kernel/relocate.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <asm/bootinfo.h>
1414
#include <asm/early_ioremap.h>
1515
#include <asm/inst.h>
16+
#include <asm/io.h>
1617
#include <asm/sections.h>
1718
#include <asm/setup.h>
1819

@@ -170,7 +171,7 @@ unsigned long __init relocate_kernel(void)
170171
unsigned long kernel_length;
171172
unsigned long random_offset = 0;
172173
void *location_new = _text; /* Default to original kernel start */
173-
char *cmdline = early_ioremap(fw_arg1, COMMAND_LINE_SIZE); /* Boot command line is passed in fw_arg1 */
174+
char *cmdline = early_memremap_ro(fw_arg1, COMMAND_LINE_SIZE); /* Boot command line is passed in fw_arg1 */
174175

175176
strscpy(boot_command_line, cmdline, COMMAND_LINE_SIZE);
176177

@@ -182,6 +183,7 @@ unsigned long __init relocate_kernel(void)
182183
random_offset = (unsigned long)location_new - (unsigned long)(_text);
183184
#endif
184185
reloc_offset = (unsigned long)_text - VMLINUX_LOAD_ADDRESS;
186+
early_memunmap(cmdline, COMMAND_LINE_SIZE);
185187

186188
if (random_offset) {
187189
kernel_length = (long)(_end) - (long)(_text);

arch/mips/kernel/cevt-r4k.c

+7-8
Original file line numberDiff line numberDiff line change
@@ -303,13 +303,6 @@ int r4k_clockevent_init(void)
303303
if (!c0_compare_int_usable())
304304
return -ENXIO;
305305

306-
/*
307-
* With vectored interrupts things are getting platform specific.
308-
* get_c0_compare_int is a hook to allow a platform to return the
309-
* interrupt number of its liking.
310-
*/
311-
irq = get_c0_compare_int();
312-
313306
cd = &per_cpu(mips_clockevent_device, cpu);
314307

315308
cd->name = "MIPS";
@@ -320,7 +313,6 @@ int r4k_clockevent_init(void)
320313
min_delta = calculate_min_delta();
321314

322315
cd->rating = 300;
323-
cd->irq = irq;
324316
cd->cpumask = cpumask_of(cpu);
325317
cd->set_next_event = mips_next_event;
326318
cd->event_handler = mips_event_handler;
@@ -332,6 +324,13 @@ int r4k_clockevent_init(void)
332324

333325
cp0_timer_irq_installed = 1;
334326

327+
/*
328+
* With vectored interrupts things are getting platform specific.
329+
* get_c0_compare_int is a hook to allow a platform to return the
330+
* interrupt number of its liking.
331+
*/
332+
irq = get_c0_compare_int();
333+
335334
if (request_irq(irq, c0_compare_interrupt, flags, "timer",
336335
c0_compare_interrupt))
337336
pr_err("Failed to request irq %d (timer)\n", irq);

arch/powerpc/include/asm/nohash/mmu-e500.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,7 @@ extern unsigned long linear_map_top;
303303
extern int book3e_htw_mode;
304304

305305
#define PPC_HTW_NONE 0
306-
#define PPC_HTW_IBM 1
307-
#define PPC_HTW_E6500 2
306+
#define PPC_HTW_E6500 1
308307

309308
/*
310309
* 64-bit booke platforms don't load the tlb in the tlb miss handler code.

arch/powerpc/kernel/vdso/vdso32.lds.S

+3-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ SECTIONS
7474
.got : { *(.got) } :text
7575
.plt : { *(.plt) }
7676

77+
.rela.dyn : { *(.rela .rela*) }
78+
7779
_end = .;
7880
__end = .;
7981
PROVIDE(end = .);
@@ -87,7 +89,7 @@ SECTIONS
8789
*(.branch_lt)
8890
*(.data .data.* .gnu.linkonce.d.* .sdata*)
8991
*(.bss .sbss .dynbss .dynsbss)
90-
*(.got1 .glink .iplt .rela*)
92+
*(.got1 .glink .iplt)
9193
}
9294
}
9395

arch/powerpc/kernel/vdso/vdso64.lds.S

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ SECTIONS
6969
.eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
7070
.eh_frame : { KEEP (*(.eh_frame)) } :text
7171
.gcc_except_table : { *(.gcc_except_table) }
72-
.rela.dyn ALIGN(8) : { *(.rela.dyn) }
72+
.rela.dyn ALIGN(8) : { *(.rela .rela*) }
7373

7474
.got ALIGN(8) : { *(.got .toc) }
7575

@@ -86,7 +86,7 @@ SECTIONS
8686
*(.data .data.* .gnu.linkonce.d.* .sdata*)
8787
*(.bss .sbss .dynbss .dynsbss)
8888
*(.opd)
89-
*(.glink .iplt .plt .rela*)
89+
*(.glink .iplt .plt)
9090
}
9191
}
9292

arch/powerpc/lib/qspinlock.c

+9-1
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,15 @@ static __always_inline void queued_spin_lock_mcs_queue(struct qspinlock *lock, b
715715
}
716716

717717
release:
718-
qnodesp->count--; /* release the node */
718+
/*
719+
* Clear the lock before releasing the node, as another CPU might see stale
720+
* values if an interrupt occurs after we increment qnodesp->count
721+
* but before node->lock is initialized. The barrier ensures that
722+
* there are no further stores to the node after it has been released.
723+
*/
724+
node->lock = NULL;
725+
barrier();
726+
qnodesp->count--;
719727
}
720728

721729
void queued_spin_lock_slowpath(struct qspinlock *lock)

arch/powerpc/mm/nohash/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
44

55
obj-y += mmu_context.o tlb.o tlb_low.o kup.o
6-
obj-$(CONFIG_PPC_BOOK3E_64) += tlb_low_64e.o book3e_pgtable.o
6+
obj-$(CONFIG_PPC_BOOK3E_64) += tlb_64e.o tlb_low_64e.o book3e_pgtable.o
77
obj-$(CONFIG_40x) += 40x.o
88
obj-$(CONFIG_44x) += 44x.o
99
obj-$(CONFIG_PPC_8xx) += 8xx.o

0 commit comments

Comments
 (0)