linux-bl808/arch/powerpc/kernel
Nicholas Piggin 3db40c312c powerpc/64: Fix __check_irq_replay missing decrementer interrupt
If the decrementer wraps again and de-asserts the decrementer
exception while hard-disabled, __check_irq_replay() has a test to
notice the wrap when interrupts are re-enabled.

The decrementer check must be done when clearing the PACA_IRQ_HARD_DIS
flag, not when the PACA_IRQ_DEC flag is tested. Previously this worked
because the decrementer interrupt was always the first one checked
after clearing the hard disable flag, but HMI check was moved ahead of
that, which introduced this bug.

This can cause a missed decrementer interrupt if we soft-disable
interrupts then take an HMI which is recorded in irq_happened, then
hard-disable interrupts for > 4s to wrap the decrementer.

Fixes: e0e0d6b739 ("powerpc/64: Replay hypervisor maintenance interrupt first")
Cc: stable@vger.kernel.org # v4.9+
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-08-04 12:55:49 +10:00
..
trace
vdso32
vdso64
.gitignore
align.c
asm-offsets.c
audit.c
btext.c
cacheinfo.c
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
cpu_setup_ppc970.S
cputable.c
crash.c
crash_dump.c
dbell.c
dma-iommu.c
dma-swiotlb.c
dma.c
dt_cpu_ftrs.c powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
eeh.c
eeh_cache.c
eeh_dev.c
eeh_driver.c
eeh_event.c
eeh_pe.c
eeh_sysfs.c
entry_32.S
entry_64.S
epapr_hcalls.S
epapr_paravirt.c
exceptions-64e.S
exceptions-64s.S powerpc/64s: Fix stack setup in watchdog soft_nmi_common() 2017-07-31 20:22:37 +10:00
fadump.c powerpc/fadump: use the correct VMCOREINFO_NOTE_SIZE for phdr 2017-07-12 16:25:59 -07:00
firmware.c
fpu.S
fsl_booke_entry_mapping.S
head_8xx.S
head_32.S
head_40x.S
head_44x.S
head_64.S
head_booke.h
head_fsl_booke.S
hw_breakpoint.c
idle.c
idle_6xx.S
idle_book3e.S
idle_book3s.S powerpc/perf: POWER9 PMU stops after idle workaround 2017-08-04 12:52:26 +10:00
idle_e500.S
idle_power4.S
ima_kexec.c
io-workarounds.c
io.c
iomap.c
iommu.c
irq.c powerpc/64: Fix __check_irq_replay missing decrementer interrupt 2017-08-04 12:55:49 +10:00
isa-bridge.c
jump_label.c
kexec_elf_64.c
kgdb.c
kprobes-ftrace.c
kprobes.c
kvm.c powerpc/64s: implement arch-specific hardlockup watchdog 2017-07-12 16:26:02 -07:00
kvm_emul.S
l2cr_6xx.S
legacy_serial.c
machine_kexec.c
machine_kexec_32.c
machine_kexec_64.c
machine_kexec_file_64.c
Makefile powerpc/64s: implement arch-specific hardlockup watchdog 2017-07-12 16:26:02 -07:00
mce.c
mce_power.c powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
misc.S
misc_32.S
misc_64.S powerpc/kexec: Fix radix to hash kexec due to IAMR/AMOR 2017-07-10 21:07:38 +10:00
module.c
module_32.c
module_64.c
msi.c
nvram_64.c
of_platform.c
optprobes.c
optprobes_head.S
paca.c
pci-common.c
pci-hotplug.c
pci_32.c
pci_64.c
pci_dn.c
pci_of_scan.c
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c
process.c
prom.c
prom_init.c powerpc: don't fortify prom_init 2017-07-12 16:26:03 -07:00
prom_init_check.sh
prom_parse.c
ptrace.c powerpc/tm: Fix saving of TM SPRs in core dump 2017-07-28 15:56:06 +10:00
ptrace32.c
reloc_32.S
reloc_64.S
rtas-proc.c
rtas-rtc.c
rtas.c
rtas_flash.c
rtas_pci.c
rtasd.c
setup-common.c
setup.h
setup_32.c
setup_64.c powerpc/64s: implement arch-specific hardlockup watchdog 2017-07-12 16:26:02 -07:00
signal.c
signal.h
signal_32.c
signal_64.c
smp-tbsync.c
smp.c Linux v4.13-rc1 2017-07-31 20:20:29 +10:00
stacktrace.c
suspend.c
swsusp.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c
syscalls.c
sysfs.c
systbl.S
systbl_chk.c
systbl_chk.sh
tau_6xx.c
time.c
tm.S
traps.c
udbg.c
udbg_16550.c
uprobes.c
vdso.c
vecemu.c
vector.S
vmlinux.lds.S
watchdog.c powerpc/64s: implement arch-specific hardlockup watchdog 2017-07-12 16:26:02 -07:00