linux/arch/powerpc/kernel
Christophe Leroy (CS GROUP) 608328ba5b powerpc/32: Restore disabling of interrupts at interrupt/syscall exit
Commit 2997876c4a ("powerpc/32: Restore clearing of MSR[RI] at
interrupt/syscall exit") delayed clearing of MSR[RI], but missed that
both MSR[RI] and MSR[EE] are cleared at the same time, so the commit
also delayed the disabling of interrupts, leading to unexpected
behaviour.

To fix that, mostly revert the blamed commit and restore the clearing
of MSR[RI] in interrupt_exit_kernel_prepare() instead. For 8xx it
implies adding a synchronising instruction after the mtspr in order to
make sure no instruction counter interrupt (used for perf events) will
fire just after clearing MSR[RI].

Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Closes: https://lore.kernel.org/all/4d0bd05d-6158-1323-3509-744d3fbe8fc7@xenosoft.de/
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: https://lore.kernel.org/all/6b05eb1c-fdef-44e0-91a7-8286825e68f1@roeck-us.net/
Fixes: 2997876c4a ("powerpc/32: Restore clearing of MSR[RI] at interrupt/syscall exit")
Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/585ea521b2be99d293b539bbfae148366cfb3687.1766146895.git.chleroy@kernel.org
2025-12-22 18:25:07 +05:30
..
ptrace powerpc/ptrace: Use USER_REGSET_NOTE_TYPE() to specify regset note names 2025-07-14 22:27:48 -07:00
syscalls arch: hookup listns() system call 2025-11-03 17:41:18 +01:00
trace powerpc/ftrace: support CONFIG_FUNCTION_GRAPH_RETVAL 2025-09-16 16:13:00 +05:30
vdso powerpc/vdso: Fix build of VDSO32 with pcrel 2025-06-13 12:30:15 +05:30
.gitignore
85xx_entry_mapping.S powerpc: Remove CONFIG_FSL_BOOKE 2022-09-26 22:47:37 +10:00
Makefile powerpc: use always-y instead of extra-y in Makefiles 2025-08-20 14:02:13 +05:30
align.c
asm-offsets.c arch: Add the macro COMPILE_OFFSETS to all the asm-offsets.c 2025-09-25 09:57:15 +02:00
audit.c powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
audit_32.h powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
btext.c powerpc: Add reloc_offset() to font bitmap pointer used for bootx_printf() 2025-12-22 17:59:07 +05:30
cacheinfo.c powerpc: Constify struct kobj_type 2024-09-05 22:25:36 +10:00
cacheinfo.h
compat_audit.c powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
cpu_setup_6xx.S powerpc: rename SPRN_HID2 define to SPRN_HID2_750FX 2024-05-08 00:25:00 +10:00
cpu_setup_44x.S
cpu_setup_e500.S powerpc/32: Fix objtool unannotated intra-function call warnings 2022-11-18 19:00:06 +11:00
cpu_setup_pa6t.S
cpu_setup_power.c powerpc/dexcr: Add initial Dynamic Execution Control Register (DEXCR) support 2023-06-19 17:36:25 +10:00
cpu_setup_ppc970.S
cpu_specs.h powerpc: Remove core support for 40x 2024-06-28 22:28:47 +10:00
cpu_specs_8xx.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_44x.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_47x.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_85xx.h powerpc/cputable: Split cpu_specs[] for mpc85xx and e500mc 2022-09-26 23:00:05 +10:00
cpu_specs_book3s_32.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_book3s_64.h powerpc: Add Power11 architected and raw mode 2024-02-21 23:11:00 +11:00
cpu_specs_e500mc.h powerpc/cputable: Add missing PPC_FEATURE_BOOKE on PPC64 Book-E 2024-02-14 14:24:06 +11:00
cputable.c powerpc: Make cpu_spec __ro_after_init 2023-11-27 22:01:14 +11:00
crash_dump.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
dawr.c powerpc: Include asm/firmware.h in all users of firmware_has_feature() 2022-06-29 16:45:05 +10:00
dbell.c powerpc/64: Fix perf profiling asynchronous interrupt handlers 2023-01-30 20:07:42 +11:00
dexcr.c powerpc/dexcr: Add DEXCR prctl interface 2024-05-06 22:04:31 +10:00
dma-iommu.c powerpc: Convert to physical address DMA mapping 2025-10-29 10:27:30 +01:00
dma-mask.c dma-mapping: move arch_dma_set_mask() declaration to header 2023-07-31 17:54:28 +02:00
dma-swiotlb.c swiotlb: add a SWIOTLB_ANY flag to lift the low memory restriction 2022-04-18 07:21:12 +02:00
dt_cpu_ftrs.c mm/memblock: add memblock_alloc_or_panic interface 2025-01-25 20:22:38 -08:00
early_32.c
eeh.c powerpc/eeh: Export eeh_unfreeze_pe() 2025-07-26 13:07:52 +05:30
eeh_cache.c
eeh_driver.c powerpc/eeh: Use result of error_detected() in uevent 2025-08-14 15:58:11 -05:00
eeh_event.c powerpc: fix typos in comments 2022-05-05 22:12:44 +10:00
eeh_pe.c powerpc/eeh: Make EEH driver device hotplug safe 2025-07-26 13:09:10 +05:30
eeh_sysfs.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
entry_32.S powerpc/32: Restore disabling of interrupts at interrupt/syscall exit 2025-12-22 18:25:07 +05:30
epapr_hcalls.S powerpc/4xx: Remove CONFIG_BOOKE_OR_40x 2024-06-28 22:28:48 +10:00
epapr_paravirt.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
exceptions-64e.S powerpc/64e: drop unused TLB miss handlers 2024-07-12 15:52:15 -07:00
exceptions-64s.S powerpc/cell: Remove support for IBM Cell Blades 2025-02-26 21:15:07 +05:30
fadump.c powerpc/fadump: skip parameter area allocation when fadump is disabled 2025-10-13 09:41:31 +05:30
firmware.c powerpc: Export kvm_guest static key, for bcachefs six locks 2024-01-01 11:47:38 -05:00
fpu.S powerpc: Don't clobber f0/vs0 during fp|altivec register save 2023-11-28 23:04:43 +11:00
head_8xx.S powerpc/8xx: Remove left-over instruction and comments in DataStoreTLBMiss handler 2025-09-15 13:48:22 +05:30
head_32.h powerpc: Remove core support for 40x 2024-06-28 22:28:47 +10:00
head_44x.S powerpc/44x: Introduce _PAGE_READ and remove _PAGE_USER 2023-10-19 17:12:46 +11:00
head_64.S powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0 2024-06-23 11:54:13 +10:00
head_85xx.S powerpc/e500: use contiguous PMD instead of hugepd 2024-07-12 15:52:18 -07:00
head_book3s_32.S powerpc/603: Inconditionally use task PGDIR in DTLB misses 2024-08-30 21:29:55 +10:00
head_booke.h powerpc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers 2025-09-01 13:23:29 +05:30
hw_breakpoint.c powerpc/watchpoints: Annotate atomic context in more places 2023-09-18 12:23:47 +10:00
hw_breakpoint_constraints.c powerpc/watchpoint: Disable pagefaults when getting user instruction 2023-09-18 12:23:47 +10:00
idle.c treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
idle_6xx.S
idle_64e.S powerpc: add ISA v3.0 / v3.1 wait opcode macro 2022-09-28 19:22:10 +10:00
idle_85xx.S powerpc: Cleanup idle for e500 2022-09-26 23:00:14 +10:00
idle_book3s.S
ima_arch.c integrity: Always reference the blacklist keyring with appraisal 2023-08-01 08:17:25 -04:00
interrupt.c powerpc/32: Restore disabling of interrupts at interrupt/syscall exit 2025-12-22 18:25:07 +05:30
interrupt_64.S powerpc/64: Set task pt_regs->link to the LR value on scv entry 2024-02-05 22:43:19 +11:00
io.c powerpc/io: Use standard barrier macros in io.c 2025-02-26 21:15:09 +05:30
iomap.c
iommu.c dma-mapping updates for Linux 6.19: 2025-12-06 09:25:05 -08:00
irq.c powerpc/irq: use seq_put_decimal_ull_width() for decimal values 2024-11-10 22:33:52 +11:00
irq_64.c work around gcc bugs with 'asm goto' with outputs 2024-02-09 15:57:48 -08:00
isa-bridge.c mm: Introduce vmap_page_range() to map pages in PCI address space 2024-03-11 16:58:10 +01:00
jump_label.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
kdebugfs.c
kgdb.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
kprobes-ftrace.c kprobe/ftrace: bail out if ftrace was killed 2024-05-16 07:23:30 +09:00
kprobes.c powerpc updates for 6.13 2024-11-23 10:44:31 -08:00
kvm.c powerpc/kvm: Fix ifdef to remove build warning 2025-08-20 14:03:44 +05:30
kvm_emul.S
l2cr_6xx.S
legacy_serial.c serial: 8250: sanitize uart_port::serial_{in,out}() types 2025-06-17 13:42:34 +02:00
mce.c powerpc/mce: log the error for all unrecoverable errors 2023-02-10 22:17:34 +11:00
mce_power.c
misc.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
misc_32.S powerpc/32: Replace mulhdu() by mul_u64_u64_shr() 2024-12-10 08:15:30 +05:30
misc_64.S powerpc/64: Remove maple platform 2024-10-29 23:01:52 +11:00
module.c powerpc updates for 6.10 2024-05-17 09:05:46 -07:00
module_32.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
module_64.c powerpc64/modules: replace stub allocation sentinel with an explicit counter 2025-09-15 16:40:52 +05:30
msi.c
note.S
nvram_64.c printk: Add a short description string to kmsg_dump() 2024-07-17 12:35:24 +02:00
optprobes.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
optprobes_head.S powerpc: add definition for pt_regs offset within an interrupt frame 2022-12-02 17:54:08 +11:00
paca.c docs: move powerpc under arch 2023-10-10 13:35:55 -06:00
pci-common.c arch: Rename fbdev header and source files 2024-05-03 17:07:50 +02:00
pci-hotplug.c PCI: pnv_php: Fix surprise plug detection and recovery 2025-07-26 13:09:15 +05:30
pci_32.c mm/memblock: add memblock_alloc_or_panic interface 2025-01-25 20:22:38 -08:00
pci_64.c powerpc/pci_64: Init pcibios subsys a bit later 2023-03-14 23:36:27 +11:00
pci_dn.c powerpc/pci_dn: Add missing of_node_put() 2022-09-05 17:30:25 +10:00
pci_of_scan.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
pmc.c powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
ppc_save_regs.S powerpc: update ppc_save_regs to save current r1 in pt_regs 2023-06-19 17:37:14 +10:00
proc_powerpc.c powerpc: Replace strcpy() with strscpy() in proc_ppc64_init() 2025-05-15 09:54:54 +05:30
process.c powerpc/64s/slb: Fix SLB multihit issue during SLB preload 2025-11-18 12:35:52 +05:30
prom.c powerpc/crash: use generic crashkernel reservation 2025-03-16 22:30:48 -07:00
prom_entry_64.S powerpc/64: Rename entry_64.S to prom_entry_64.S 2023-06-15 14:04:19 +10:00
prom_init.c powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7 2025-03-07 19:08:38 +05:30
prom_init_check.sh powerpc/prom_init: Fix shellcheck warnings 2025-08-20 14:05:18 +05:30
prom_parse.c
reloc_32.S
reloc_64.S powerpc/64: avoid using r13 in relocate 2022-09-28 19:22:13 +10:00
rethook.c powerpc: Replace kretprobe code with rethook on powerpc 2024-09-05 22:25:36 +10:00
rtas-proc.c powerpc/rtas: Fix ppc_rtas_rmo_buf_show() kernel-doc 2023-11-07 13:13:45 +11:00
rtas-rtc.c powerpc/rtas: arch-wide function token lookup conversions 2023-02-13 22:35:03 +11:00
rtas.c powerpc/pseries: Define HVPIPE specific macros 2025-09-15 13:38:40 +05:30
rtas_entry.S powerpc/rtas: Fix RTAS MSR[HV] handling for Cell 2022-08-26 08:41:54 +10:00
rtas_flash.c powerpc: rtas: use lock guard for mutex 2025-06-23 09:57:10 +05:30
rtas_pci.c powerpc/rtas_pci: rename and properly expose config access APIs 2023-11-28 21:49:45 +11:00
rtasd.c powerpc/pseries: Define HVPIPE specific macros 2025-09-15 13:38:40 +05:30
secure_boot.c powerpc: Use str_enabled_disabled() helper function 2024-11-05 20:48:20 +11:00
security.c asm-generic: introduce text-patching.h 2024-11-07 14:25:15 -08:00
secvar-ops.c powerpc/secvar: Warn and error if multiple secvar ops are set 2023-02-12 22:12:36 +11:00
secvar-sysfs.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
setup-common.c powerpc/kdump: Add support for crashkernel CMA reservation 2025-11-11 14:11:08 +05:30
setup.h powerpc/4xx: Remove CONFIG_BOOKE_OR_40x 2024-06-28 22:28:48 +10:00
setup_32.c mm/memblock: add memblock_alloc_or_panic interface 2025-01-25 20:22:38 -08:00
setup_64.c powerpc/64: Drop unnecessary 'rc' variable 2025-08-20 13:54:05 +05:30
signal.c powerpc: Replace GPL 2.0+ README.legal boilerplate with SPDX 2023-09-19 20:05:58 +10:00
signal.h powerpc: Replace GPL 2.0+ README.legal boilerplate with SPDX 2023-09-19 20:05:58 +10:00
signal_32.c powerpc/signal32: Force inlining of __unsafe_save_user_regs() and save_tm_user_regs_unsafe() 2023-06-09 23:29:51 +10:00
signal_64.c powerpc/signal: Update comment for clarity 2022-07-28 16:22:14 +10:00
smp-tbsync.c
smp.c powerpc/smp: Expose die_id and die_cpumask 2025-11-14 11:12:56 +05:30
stacktrace.c powerpc: Replace kretprobe code with rethook on powerpc 2024-09-05 22:25:36 +10:00
static_call.c powerpc/static_call: Implement inline static calls 2025-02-26 21:09:43 +05:30
suspend.c
switch.S powerpc: Fix 'intra_function_call not a direct call' warning 2025-03-10 10:00:17 +05:30
swsusp.c
swsusp_32.S powerpc/32: Fix objtool unannotated intra-function call warnings 2022-11-18 19:00:06 +11:00
swsusp_64.c powerpc/suspend: Add prototype for do_after_copyback() 2023-11-30 13:15:49 +11:00
swsusp_85xx.S powerpc: Remove CONFIG_FSL_BOOKE 2022-09-26 22:47:37 +10:00
swsusp_asm64.S powerpc/64: asm use consistent global variable declaration and access 2022-09-28 19:22:12 +10:00
sys_ppc32.c powerpc/32: fix syscall wrappers with 64-bit arguments 2022-11-01 10:24:09 +11:00
syscall.c treewide: context_tracking: Rename CONTEXT_* into CT_STATE_* 2024-07-29 07:33:10 +05:30
syscalls.c powerpc: Adopt SYSCALL_DEFINE for arch-specific syscall handlers 2022-09-28 19:22:08 +10:00
sysfs.c powerpc/machdep: Drop include of dma-mapping.h 2024-10-29 23:01:05 +11:00
systbl.c powerpc: Don't add __powerpc_ prefix to syscall entry points 2022-10-07 00:59:54 +11:00
tau_6xx.c powerpc, workqueue: Use alloc_ordered_workqueue() to create ordered workqueues 2023-05-08 13:52:27 -10:00
time.c powerpc/time: Expose boot_tb via accessor 2025-09-22 14:48:56 +05:30
tm.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
traps.c powerpc: Rely on generic printing of preemption model 2025-03-17 11:23:39 +01:00
ucall.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
udbg.c powerpc: Remove UDBG_RTAS_CONSOLE 2025-02-26 21:15:09 +05:30
udbg_16550.c powerpc/64: Remove maple platform 2024-10-29 23:01:52 +11:00
uprobes.c powerpc: Reject probes on instructions that can't be single stepped 2022-05-06 00:00:20 +10:00
vdso.c powerpc/vdso: Include asm/syscalls.h for sys_ni_syscall() 2025-09-06 16:02:51 +05:30
vdso32_wrapper.S powerpc/vdso: Mark the vDSO code read-only after init 2024-12-18 13:46:38 +05:30
vdso64_wrapper.S powerpc/vdso: Mark the vDSO code read-only after init 2024-12-18 13:46:38 +05:30
vecemu.c
vector.S powerpc: Don't clobber f0/vs0 during fp|altivec register save 2023-11-28 23:04:43 +11:00
vmlinux.lds.S powerpc/vmlinux.lds: Drop .interp description 2025-11-11 14:23:27 +05:30
watchdog.c powerpc/watchdog: Switch to use hrtimer_setup() 2025-02-18 10:32:31 +01:00