linux/arch/powerpc/kernel
Nicholas Piggin 8defc2a5dd powerpc/64s/interrupt: Fix decrementer storm
The decrementer exception can fail to be cleared when the interrupt
returns in the case where the decrementer wraps with the next timer
still beyond decrementer_max. This results in a decrementer interrupt
storm. This is triggerable with small decrementer system with hard
and soft watchdogs disabled.

Fix this by always programming the decrementer if there was no timer.

Fixes: 0faf20a1ad ("powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use")
Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220124143930.3923442-1-npiggin@gmail.com
2022-01-25 16:50:10 +11:00
..
ptrace powerpc: Snapshot thread flags 2021-12-01 00:06:44 +01:00
syscalls mm/mempolicy: wire up syscall set_mempolicy_home_node 2022-01-15 16:30:30 +02:00
trace powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
vdso32 powerpc updates for 5.13 2021-04-30 12:22:28 -07:00
vdso64 powerpc/vdso: Don't use r30 to avoid breaking Go lang 2021-07-29 23:13:12 +10:00
.gitignore
align.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
asm-offsets.c powerpc/config: Add CONFIG_BOOKE_OR_40x 2021-12-09 22:41:19 +11:00
audit.c Revert "powerpc/audit: Convert powerpc to AUDIT_ARCH_COMPAT_GENERIC" 2021-10-27 22:30:32 +11:00
btext.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
cacheinfo.c powerpc/cacheinfo: use default_groups in kobj_type 2022-01-05 10:58:23 +11:00
cacheinfo.h
compat_audit.c Revert "powerpc/audit: Convert powerpc to AUDIT_ARCH_COMPAT_GENERIC" 2021-10-27 22:30:32 +11:00
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc: Retire e200 core (mpc555x processor) 2020-12-05 21:49:18 +11:00
cpu_setup_pa6t.S
cpu_setup_power.c powerpc/64s: Always set PMU control registers to frozen/disabled when not in use 2021-11-24 21:08:57 +11:00
cpu_setup_ppc970.S
cputable.c arch: powerpc: Stop building and using oprofile 2021-01-29 10:05:51 +05:30
crash_dump.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
dawr.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
dbell.c powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use 2021-12-16 21:31:45 +11:00
dma-iommu.c powerpc/iommu: Report the correct most efficient DMA mask for PCI devices 2021-09-30 17:10:17 +10:00
dma-mask.c
dma-swiotlb.c
dt_cpu_ftrs.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
early_32.c
eeh_cache.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
eeh_driver.c powerpc/eeh: Use a goto for recovery failures 2021-11-25 11:25:31 +11:00
eeh_event.c
eeh_pe.c
eeh_sysfs.c
eeh.c pci-v5.16-changes 2021-11-06 14:36:12 -07:00
entry_32.S powerpc/config: Add CONFIG_BOOKE_OR_40x 2021-12-09 22:41:19 +11:00
entry_64.S powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
epapr_hcalls.S
epapr_paravirt.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
exceptions-64e.S powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
exceptions-64s.S powerpc/64/asm: Do not reassign labels 2021-12-23 22:35:12 +11:00
fadump.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
firmware.c powerpc: fix unbalanced node refcount in check_kvm_guest() 2021-10-09 00:15:59 +11:00
fpu.S powerpc/64s/interrupt: handle MSR EE and RI in interrupt entry wrapper 2021-12-16 21:31:45 +11:00
fsl_booke_entry_mapping.S powerpc/booke: Avoid link stack corruption in several places 2021-08-25 13:35:47 +10:00
head_8xx.S powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX 2021-11-16 21:37:10 +11:00
head_32.h powerpc updates for 5.17 2022-01-14 15:17:26 +01:00
head_40x.S powerpc/kuap: Wire-up KUAP on 40x 2021-12-09 22:41:20 +11:00
head_44x.S powerpc/kuap: Wire-up KUAP on 44x 2021-12-09 22:41:20 +11:00
head_64.S powerpc/64/asm: Do not reassign labels 2021-12-23 22:35:12 +11:00
head_book3s_32.S powerpc/32s: Do kuep_lock() and kuep_unlock() in assembly 2021-12-09 22:41:17 +11:00
head_booke.h powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
head_fsl_booke.S powerpc/kuap: Wire-up KUAP on 85xx in 32 bits mode. 2021-12-09 22:41:20 +11:00
hw_breakpoint_constraints.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
hw_breakpoint.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
idle_6xx.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
idle_book3e.S
idle_book3s.S powerpc/idle: Don't corrupt back chain when going idle 2021-10-20 21:37:58 +11:00
idle_e500.S powerpc/32: Return directly from power_save_ppc32_restore() 2021-03-29 13:22:10 +11:00
idle.c powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
ima_arch.c
interrupt_64.S powerpc/64s: Mask SRR0 before checking against the masked NIP 2022-01-18 10:25:18 +11:00
interrupt.c powerpc updates for 5.17 2022-01-14 15:17:26 +01:00
io-workarounds.c powerpc: Fix reverse map real-mode address lookup with huge vmalloc 2021-05-28 22:54:27 +10:00
io.c
iomap.c
iommu.c powerpc updates for 5.15 2021-09-03 11:22:50 -07:00
irq.c powerpc/64s/interrupt: Don't enable MSR[EE] in irq handlers unless perf is in use 2021-12-16 21:31:45 +11:00
isa-bridge.c mm/vmalloc: remove unmap_kernel_range 2021-04-30 11:20:40 -07:00
jump_label.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
kdebugfs.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
kgdb.c powerpc/config: Add CONFIG_BOOKE_OR_40x 2021-12-09 22:41:19 +11:00
kprobes-ftrace.c ftrace: disable preemption when recursion locked 2021-10-27 11:21:49 -04:00
kprobes.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
kvm_emul.S
kvm.c gup: Turn fault_in_pages_{readable,writeable} into fault_in_{readable,writeable} 2021-10-18 16:33:03 +02:00
l2cr_6xx.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
legacy_serial.c powerpc/legacy_serial: Fix UBSAN: array-index-out-of-bounds 2021-05-12 11:07:39 +10:00
Makefile powerpc updates for 5.17 2022-01-14 15:17:26 +01:00
mce_power.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
mce.c powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
misc_32.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
misc_64.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
misc.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
module_32.c powerpc/ftrace: Activate HAVE_DYNAMIC_FTRACE_WITH_REGS on PPC32 2021-11-29 22:49:29 +11:00
module_64.c powerpc/module_64: Fix livepatching for RO modules 2021-12-14 23:13:03 +11:00
module.c powerpc/modules: Don't WARN on first module allocation attempt 2021-11-30 22:44:32 +11:00
msi.c
note.S
nvram_64.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
of_platform.c
optprobes_head.S powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
optprobes.c powerpc/inst: Define ppc_inst_t as u32 on PPC32 2021-12-09 22:41:21 +11:00
paca.c powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU 2021-12-09 22:41:13 +11:00
pci_32.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
pci_64.c mm/vmalloc: remove unmap_kernel_range 2021-04-30 11:20:40 -07:00
pci_dn.c powerpc/pci: Move PHB discovery for PCI_DN using platforms 2021-02-09 00:01:05 +11:00
pci_of_scan.c
pci-common.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
pci-hotplug.c
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
process.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
prom_init_check.sh
prom_init.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
prom_parse.c
prom.c powerpc updates for 5.17 2022-01-14 15:17:26 +01:00
reloc_32.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
reloc_64.S
rtas_flash.c
rtas_pci.c
rtas-proc.c powerpc/rtas: rename RTAS_RMOBUF_MAX to RTAS_USER_REGION_SIZE 2021-04-14 23:04:16 +10:00
rtas-rtc.c powerpc/rtas-rtc: remove unused constant 2021-06-25 14:47:20 +10:00
rtas.c powerpc/rtas: rtas_busy_delay_time() kernel-doc 2021-11-25 11:25:33 +11:00
rtasd.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
secure_boot.c
security.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
secvar-ops.c
secvar-sysfs.c
setup_32.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
setup_64.c Merge branch 'akpm' (patches from Andrew) 2022-01-20 10:41:01 +02:00
setup-common.c powerpc: Mark probe_machine() __init and static 2021-11-29 22:49:26 +11:00
setup.h powerpc/config: Add CONFIG_BOOKE_OR_40x 2021-12-09 22:41:19 +11:00
signal_32.c powerpc/signal32: Use struct_group() to zero spe regs 2021-12-02 10:39:00 +11:00
signal_64.c signal: Replace force_fatal_sig with force_exit_sig when in doubt 2021-11-19 09:15:58 -06:00
signal.c entry: rseq: Call rseq_handle_notify_resume() in tracehook_notify_resume() 2021-09-22 10:24:01 -04:00
signal.h powerpc/signal32: Fix sigset_t copy 2021-11-16 21:24:16 +11:00
smp-tbsync.c
smp.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
stacktrace.c kprobes: treewide: Make it harder to refer kretprobe_trampoline directly 2021-09-30 21:24:06 -04:00
static_call.c powerpc/32: Add support for out-of-line static calls 2021-10-22 15:22:05 +11:00
suspend.c
swsusp_32.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
swsusp_64.c powerpc/machdep: Remove stale functions from ppc_md structure 2021-10-22 15:22:05 +11:00
swsusp_asm64.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
swsusp_booke.S
swsusp.c
sys_ppc32.c powerpc/compat_sys: swap hi/lo parts of 64-bit syscall args in LE mode 2021-02-11 23:35:07 +11:00
syscalls.c powerpc/syscalls: Simplify do_mmap2() 2021-08-25 13:35:48 +10:00
sysfs.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
systbl_chk.sh
systbl.S powerpc/syscalls: switch to generic syscalltbl.sh 2021-04-14 23:04:16 +10:00
tau_6xx.c powerpc/tau: Add 'static' storage qualifier to 'tau_work' definition 2021-08-20 17:00:53 +10:00
time.c powerpc/64s/interrupt: Fix decrementer storm 2022-01-25 16:50:10 +11:00
tm.S powerpc: flexible GPR range save/restore macros 2021-11-29 23:15:20 +11:00
traps.c exit: Add and use make_task_dead. 2021-12-13 12:04:45 -06:00
ucall.S
udbg_16550.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
udbg.c isystem: ship and use stdarg.h 2021-08-19 09:02:55 +09:00
uprobes.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
vdso32_wrapper.S powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o 2021-01-30 22:23:42 +11:00
vdso64_wrapper.S powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o 2021-01-30 22:23:42 +11:00
vdso.c powerpc/vdso: Add support for time namespaces 2021-04-14 23:04:44 +10:00
vecemu.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
vector.S powerpc/64s/interrupt: handle MSR EE and RI in interrupt entry wrapper 2021-12-16 21:31:45 +11:00
vmlinux.lds.S powerpc/toc: Future proof kernel toc 2021-12-23 22:35:01 +11:00
watchdog.c powerpc/watchdog: help remote CPUs to flush NMI printk output 2021-11-29 23:08:43 +11:00