linux/arch/powerpc/include/asm
Nicholas Piggin a3d96f70c1 powerpc/64s: Fix system reset vs general interrupt reentrancy
The system reset interrupt can occur when MSR_EE=0, and it currently
uses the PACA_EXGEN save area.

Some PACA_EXGEN interrupts have a window where MSR_RI=1 and MSR_EE=0
when the save area is still in use. A system reset interrupt in this
window can lead to undetected corruption when the save area gets
overwritten.

This patch introduces PACA_EXNMI save area for system reset exceptions,
which closes this corruption window. It's also helpful to retain the
EXGEN state for debugging situations, even if not considering the
recoverability aspect.

This patch also moves the PACA_EXMC area down to a less frequently used
part of the paca with the new save area.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-04-28 21:02:25 +10:00
..
book3s powerpc/mm: Fix missing page attributes in page table dump 2017-04-27 22:20:27 +10:00
nohash powerpc/mm/nohash: MM_SLICE is only used by book3s 64 2017-03-31 23:09:47 +11:00
8xx_immap.h
accounting.h sched/cputime, powerpc: Prepare accounting structure for cputime flush on tick 2017-01-14 09:54:12 +01:00
agp.h
archrandom.h powerpc: Use hardware RNG for arch_get_random_seed_* not arch_get_random_* 2015-07-23 19:52:03 +10:00
asm-compat.h powerpc/ebpf/jit: Implement JIT compiler for extended BPF 2016-06-24 15:17:57 +10:00
asm-offsets.h
asm-prototypes.h powerpc: Fix missing CRCs, add more asm-prototypes.h declarations 2017-03-21 22:09:26 +11:00
async_tx.h
atomic.h powerpc: Remove static branch prediction in atomic{, 64}_add_unless 2016-10-04 16:13:13 +11:00
backlight.h
barrier.h powerpc: define __smp_xxx 2016-01-12 20:46:53 +02:00
bitops.h powerpc: Add more PPC bit conversion macros 2017-04-06 19:58:53 +10:00
bootx.h
btext.h
bug.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
bugs.h
cache.h powerpc: Add new cache geometry aux vectors 2017-02-06 19:46:04 +11:00
cacheflush.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
cell-pmu.h
cell-regs.h
checksum.h powerpc/64: Fix checksum folding in csum_add() 2017-03-04 23:07:17 +11:00
cmpxchg.h powerpc: Fix __cmpxchg() to take a volatile ptr again 2016-11-25 14:07:50 +11:00
code-patching.h powerpc: Introduce a new helper to obtain function entry points 2017-04-24 19:07:58 +10:00
compat.h powerpc/kernel: Add SIG_SYS support for compat tasks 2015-07-29 11:56:13 +10:00
context_tracking.h
copro.h powerpc/cell: Make spu_flush_all_slbs() generic 2014-10-08 20:15:37 +11:00
cpm.h QE: Move QE from arch/powerpc to drivers/soc 2015-12-22 17:12:56 -06:00
cpm1.h
cpm2.h
cpu_has_feature.h powerpc: Fix build failure with clang due to BUILD_BUG_ON() 2017-01-25 13:36:10 +11:00
cpufeature.h powerpc: Add module autoloading based on CPU features 2016-07-21 20:33:57 +10:00
cpuidle.h powerpc/64s: Idle POWER8 avoid full state loss recovery where possible 2017-04-23 20:32:12 +10:00
cputable.h powerpc/64s: Remove SAO feature from Power9 DD1 2017-04-19 20:48:25 +10:00
cputhreads.h powerpc: cputhreads: Add missing include file 2016-08-22 11:09:33 +10:00
cputime.h sched/cputime: Remove generic asm headers 2017-02-01 09:14:07 +01:00
current.h
dbdma.h powerpc: Move Power Macintosh drivers to generic byteswappers 2015-03-23 14:29:40 +11:00
dbell.h powerpc/powernv: POWER9 support for msgsnd/doorbell IPI 2017-04-13 23:34:34 +10:00
dcr-generic.h
dcr-mmio.h
dcr-native.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
dcr-regs.h
dcr.h
debug.h powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
debugfs.h powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
delay.h
device.h treewide: Move dma_ops from struct dev_archdata into struct device 2017-01-24 12:23:35 -05:00
disassemble.h KVM: PPC: e500: Emulate TMCFG0 TMRN register 2015-10-15 15:58:16 +11:00
dma-mapping.h treewide: Consolidate get_dma_ops() implementations 2017-01-24 12:23:35 -05:00
dma.h
edac.h EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
eeh.h powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
eeh_event.h
ehv_pic.h
elf.h powerpc/64: Fix L1D cache shape vector reporting L1I values 2017-03-06 21:51:32 +11:00
emergency-restart.h
emulated_ops.h
epapr_hcalls.h
exception-64e.h powerpc/e6500: hw tablewalk: make sure we invalidate and write to the same tlb entry 2015-10-27 18:14:40 -05:00
exception-64s.h powerpc/64s: Fix system reset vs general interrupt reentrancy 2017-04-28 21:02:25 +10:00
exec.h
fadump.h powerpc/fadump: Set core e_flags using kernel's ELF ABI version 2016-09-13 17:36:01 +10:00
fb.h
feature-fixups.h powerpc/64s: Simplify POWER9 DD1 idle workaround code 2017-04-23 20:32:23 +10:00
firmware.h powerpc/pseries: Add hypercall wrappers for hash page table resizing 2017-02-09 21:45:48 +11:00
fixmap.h powerpc/8xx: Fix vaddr for IMMR early remap 2016-07-09 02:02:48 -05:00
floppy.h
fs_pd.h
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_hcalls.h scripts/spelling.txt: add "partiton" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
fsl_lbc.h uio: uio_fsl_elbc_gpcm: new driver 2015-01-12 05:04:13 -08:00
fsl_pamu_stash.h iommu/fsl: Various cleanups 2015-02-03 18:47:18 +01:00
fsl_pm.h powerpc/rcpm: add RCPM driver 2016-03-04 23:50:27 -06:00
ftrace.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
futex.h powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
grackle.h
hardirq.h powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
head-64.h powerpc/kprobes: Blacklist common exception handlers 2017-04-23 20:32:26 +10:00
heathrow.h
highmem.h kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
hmi.h powerpc: move hmi.c to arch/powerpc/kvm/ 2016-09-09 16:18:07 +10:00
hugetlb.h powerpc/mm: Fix little-endian 4K hugetlb 2017-01-18 11:58:50 +11:00
hvcall.h powerpc/pseries: Move struct hcall_stats to hvCall_inst.c 2017-03-20 19:02:49 +11:00
hvconsole.h
hvcserver.h
hvsi.h
hw_breakpoint.h
hw_irq.h powerpc/8xx: use SPRN_EIE and SPRN_EID to enable/disable interrupts 2016-09-25 02:38:53 -05:00
hydra.h powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
i8259.h
ibmebus.h
icswx.h crypto: nx-842 - Mask XERS0 bit in return value 2015-12-17 16:42:12 +08:00
ide.h
ima.h powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
immap_cpm2.h
io-defs.h
io-workarounds.h
io.h powerpc/mm: Wire up ioremap_cache() 2017-04-21 21:08:47 +10:00
io_event_irq.h
iommu.h powerpc/vfio_spapr_tce: Add reference counting to iommu_table 2017-03-30 21:42:11 +11:00
ipic.h
irq.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
irq_work.h powerpc: Re-enable dynticks 2015-02-23 14:52:04 +11:00
irqflags.h
isa-bridge.h powerpc: Add support for non-PCI ISA bridges 2017-01-31 13:54:17 +11:00
jump_label.h powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
Kbuild ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
kdebug.h
kdump.h
kexec.h powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
keylargo.h
kgdb.h
kmap_types.h
kprobes.h powerpc/kprobes: Add support for KPROBES_ON_FTRACE 2017-04-24 19:07:58 +10:00
kvm_asm.h KVM: PPC: Book3S HV: Enable hypervisor virtualization interrupts while in guest 2016-11-24 09:24:23 +11:00
kvm_book3s.h KVM: PPC: Book3S HV: Enable radix guest support 2017-01-31 19:11:52 +11:00
kvm_book3s_32.h
kvm_book3s_64.h powerpc/pseries: Skip using reserved virtual address range 2017-04-01 21:12:27 +11:00
kvm_book3s_asm.h powerpc: Consolidate variants of real-mode MMIOs 2017-04-10 21:43:16 +10:00
kvm_booke.h KVM: PPC: Book3S: correct width in XER handling 2015-08-22 11:16:19 +02:00
kvm_booke_hv_asm.h
kvm_fpu.h
kvm_host.h KVM: PPC: Book3S HV: Outline of KVM-HV HPT resizing implementation 2017-01-31 21:59:56 +11:00
kvm_para.h
kvm_ppc.h powerpc: Consolidate variants of real-mode MMIOs 2017-04-10 21:43:16 +10:00
libata-portmap.h libata: remove unused definitions from <asm/libata-portmap.h> 2016-09-22 11:50:19 -04:00
linkage.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
livepatch.h powerpc/livepatch: Remove klp_write_module_reloc() stub 2016-12-19 11:15:25 +01:00
local.h
lppaca.h
lv1call.h
machdep.h powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
macio.h
mc146818rtc.h
mce.h powerpc/book3s: Print task info if we take a machine check in user mode 2017-04-03 16:12:00 +10:00
mediabay.h
mm-arch-hooks.h powerpc/mm: tracking vDSO remap 2015-06-24 17:49:41 -07:00
mman.h powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
mmu-8xx.h powerpc/8xx: Implement support of hugepages 2016-12-09 22:49:07 -06:00
mmu-40x.h
mmu-44x.h
mmu-book3e.h powerpc/mm/nohash: MM_SLICE is only used by book3s 64 2017-03-31 23:09:47 +11:00
mmu.h powerpc/mm/hash: Support 68 bit VA 2017-03-31 23:10:00 +11:00
mmu_context.h Merge branch 'topic/ppc-kvm' into next 2017-04-28 20:19:37 +10:00
mmzone.h powerpc: implement arch_reserved_kernel_pages 2016-10-07 18:46:28 -07:00
module.h modversions: treat symbol CRCs as 32 bit quantities 2017-02-03 08:28:25 -08:00
mpc5xxx.h
mpc6xx.h
mpc52xx.h powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
mpc52xx_psc.h powerpc: mpc512x: drop bogus and unused psc register bit definitions 2015-10-22 16:06:08 +02:00
mpc85xx.h powerpc/fsl-booke: Add T4080 SVR value 2015-03-31 22:23:17 -05:00
mpc5121.h powerpc/512x: add LocalPlus Bus FIFO device driver 2015-10-22 15:19:40 +02:00
mpc8260.h
mpic.h powerpc/mpic: Add get_version API both for internal and external use 2015-03-23 19:51:17 -05:00
mpic_msgr.h powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
mpic_timer.h
msi_bitmap.h powerpc/msi: Free the bitmap if it was slab allocated 2015-10-05 21:32:50 +11:00
nmi.h powerpc: Add ppc64 hard lockup detector support 2015-04-11 20:49:27 +10:00
nvram.h powerpc/nvram: Move generic code for nvram and pstore 2015-03-23 14:05:49 +11:00
ohare.h
opal-api.h Merge branch 'topic/xive' (early part) into next 2017-04-12 22:31:37 +10:00
opal.h Merge branch 'topic/xive' (early part) into next 2017-04-12 22:31:37 +10:00
oprofile_impl.h
paca.h powerpc/64s: Fix system reset vs general interrupt reentrancy 2017-04-28 21:02:25 +10:00
page.h powerpc: do not make the entire heap executable 2017-02-22 16:41:29 -08:00
page_32.h powerpc32: Remove clear_pages() and define clear_page() inline 2016-03-11 17:20:11 -06:00
page_64.h powerpc/mm/slice: Move slice_mask struct definition to slice.c 2017-03-31 23:09:56 +11:00
parport.h powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pasemi_dma.h
pci-bridge.h powerpc: Move isa bridge definitions to separate include 2017-01-31 13:54:17 +11:00
pci.h treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00
percpu.h
perf_event.h powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
perf_event_fsl_emb.h
perf_event_server.h powerpc/perf: Support to export MMCRA[TEC*] field to userspace 2017-04-19 20:00:22 +10:00
pgalloc.h powerpc/mm: Copy pgalloc (part 2) 2016-05-11 21:53:49 +10:00
pgtable-be-types.h powerpc/mm: Fix little-endian 4K hugetlb 2017-01-18 11:58:50 +11:00
pgtable-types.h powerpc/mm: Fix little-endian 4K hugetlb 2017-01-18 11:58:50 +11:00
pgtable.h powerpc: port 64 bits pgtable_cache to 32 bits 2016-12-09 22:48:01 -06:00
plpar_wrappers.h powerpc/pseries: Add hypercall wrappers for hash page table resizing 2017-02-09 21:45:48 +11:00
pmac_feature.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
pnv-pci.h drivers/pci/hotplug: Mask PDC interrupt if required 2017-02-15 20:02:43 +11:00
powernv.h powerpc/powernv: Introduce address translation services for Nvlink2 2017-04-04 13:27:26 +10:00
ppc-opcode.h powerpc/powernv: POWER9 support for msgsnd/doorbell IPI 2017-04-13 23:34:34 +10:00
ppc-pci.h powerpc/eeh: Refactor EEH PE reset functions 2016-11-22 11:57:08 +11:00
ppc4xx.h powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
ppc4xx_ocm.h
ppc_asm.h powerpc/32: Remove FIX_SRR1 2017-01-26 17:49:32 -06:00
probes.h
processor.h powerpc/mm: Enable mappings above 128TB 2017-04-01 21:12:29 +11:00
prom.h powerpc: Update to new option-vector-5 format for CAS 2017-03-06 21:44:09 +11:00
ps3.h treewide: Consolidate get_dma_ops() implementations 2017-01-24 12:23:35 -05:00
ps3av.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
ps3gpu.h
ps3stor.h
pte-common.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
ptrace.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
reg.h powerpc/64s: Fix POWER9 machine check handler from stop state 2017-04-23 20:31:46 +10:00
reg_8xx.h powerpc/8xx: Perf events on PPC 8xx 2017-01-26 17:49:34 -06:00
reg_a2.h
reg_booke.h powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
reg_fsl_emb.h
rheap.h
rio.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
rtas.h powerpc/pseries: Implement indexed-count hotplug memory add 2017-02-17 17:57:30 +11:00
runlatch.h
scom.h
seccomp.h powerpc: switch to using asm-generic for seccomp.h 2015-04-17 09:04:10 -04:00
sections.h powerpc/kprobes: Blacklist exception handlers 2017-04-23 20:32:25 +10:00
serial.h
setjmp.h
setup.h powerpc: Put exception configuration in a common place 2016-07-21 18:56:31 +10:00
sfp-machine.h
shmparam.h
signal.h powerpc: signals: Stop using current in signal code 2016-10-04 16:43:07 +11:00
smp.h powerpc: Introduce msgsnd/doorbell barrier primitives 2017-04-13 23:34:33 +10:00
smu.h powerpc/pmac: Remove early allocation of the SMU command buffer 2016-07-21 18:56:38 +10:00
sparsemem.h powerpc/mm: Fix build break with BOOK3S_64=n and MEMORY_HOTPLUG=y 2017-02-15 19:58:39 +11:00
spinlock.h locking/core, powerpc: Implement vcpu_is_preempted(cpu) 2016-11-22 12:48:06 +01:00
spinlock_types.h
spu.h powerpc/cell: Move spu_handle_mm_fault() out of cell platform 2014-10-08 20:14:54 +11:00
spu_csa.h powerpc/cell: Drop support for 64K local store on 4K kernels 2015-08-18 19:29:49 +10:00
spu_info.h
spu_priv1.h
sstep.h powerpc: Emulate icbi, mcrf and conditional-trap instructions 2014-09-25 23:14:51 +10:00
string.h powerpc: Remove assembly versions of strcpy, strcat, strlen and strcmp 2016-06-14 13:58:25 +10:00
swab.h powerpc: Remove unused st_le*() and ld_le* functions 2015-03-24 13:33:52 +11:00
swiotlb.h treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00
switch_to.h powerpc/ptrace: Fix coredump since ptrace TM changes 2016-08-10 16:34:20 +10:00
synch.h powerpc: Factor do_feature_fixup calls 2016-07-21 18:51:42 +10:00
syscall.h powerpc: Change syscall_get_nr() to return int 2015-07-29 11:56:13 +10:00
syscalls.h powerpc/tracing: Allow tracing of mmap syscalls 2017-04-12 22:32:43 +10:00
systbl.h powerpc: Wire up statx() syscall 2017-03-16 20:45:53 +11:00
tce.h powerpc/powernv/pci: Remove SWINV constants and obsolete TCE code 2016-07-17 16:42:47 +10:00
termios.h
thread_info.h powerpc: Move THREAD_SHIFT config to Kconfig 2017-03-20 19:02:49 +11:00
time.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
timex.h
tlb.h mm: add tlb_remove_check_page_size_change to track page size change 2016-12-12 18:55:07 -08:00
tlbflush.h powerpc/mm: remove flush_tlb_page_nohash 2016-08-01 11:15:13 +10:00
tm.h powerpc: Remove do_load_up_transact_{fpu,altivec} 2016-10-04 20:33:16 +11:00
topology.h sched/topology: Rename topology_thread_cpumask() to topology_sibling_cpumask() 2015-05-27 15:22:15 +02:00
trace.h tracing: Have the reg function allow to fail 2016-12-09 09:13:30 -05:00
trace_clock.h powerpc/ftrace: add powerpc timebase as a trace clock source 2015-08-06 16:36:23 +10:00
tsi108.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
tsi108_irq.h
tsi108_pci.h genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
types.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
uaccess.h powerpc/sparse: Constify the address pointer in __get_user_nosleep() 2017-02-02 16:35:21 +11:00
udbg.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
uic.h
unaligned.h
uninorth.h powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
unistd.h powerpc: Wire up statx() syscall 2017-03-16 20:45:53 +11:00
uprobes.h
user.h
vdso.h
vdso_datapage.h powerpc: Standardise on NR_syscalls rather than __NR_syscalls. 2015-11-26 22:11:17 +11:00
vga.h powerpc: Move Power Macintosh drivers to generic byteswappers 2015-03-23 14:29:40 +11:00
vio.h remove <asm/scatterlist.h> 2015-05-05 13:35:39 -06:00
word-at-a-time.h powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
xics.h powerpc: Change the doorbell IPI calling convention 2017-04-13 23:34:33 +10:00
xilinx_intc.h powerpc/virtex: Use generic xilinx irqchip driver 2016-11-29 09:14:50 +00:00
xilinx_pci.h
xive-regs.h powerpc/xive: Native exploitation of the XIVE interrupt controller 2017-04-10 21:41:34 +10:00
xive.h powerpc/xive: Native exploitation of the XIVE interrupt controller 2017-04-10 21:41:34 +10:00
xmon.h powerpc/xive: Native exploitation of the XIVE interrupt controller 2017-04-10 21:41:34 +10:00
xor.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00