android_kernel_google_msm/arch/powerpc/include/asm
Thomas Huth 1f4cd884c1 powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers
commit 1c2cb594441d02815d304cccec9742ff5c707495 upstream.

The EPOW interrupt handler uses rtas_get_sensor(), which in turn
uses rtas_busy_delay() to wait for RTAS becoming ready in case it
is necessary. But rtas_busy_delay() is annotated with might_sleep()
and thus may not be used by interrupts handlers like the EPOW handler!
This leads to the following BUG when CONFIG_DEBUG_ATOMIC_SLEEP is
enabled:

 BUG: sleeping function called from invalid context at arch/powerpc/kernel/rtas.c:496
 in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/1
 CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0-rc2-thuth #6
 Call Trace:
 [c00000007ffe7b90] [c000000000807670] dump_stack+0xa0/0xdc (unreliable)
 [c00000007ffe7bc0] [c0000000000e1f14] ___might_sleep+0x134/0x180
 [c00000007ffe7c20] [c00000000002aec0] rtas_busy_delay+0x30/0xd0
 [c00000007ffe7c50] [c00000000002bde4] rtas_get_sensor+0x74/0xe0
 [c00000007ffe7ce0] [c000000000083264] ras_epow_interrupt+0x44/0x450
 [c00000007ffe7d90] [c000000000120260] handle_irq_event_percpu+0xa0/0x300
 [c00000007ffe7e70] [c000000000120524] handle_irq_event+0x64/0xc0
 [c00000007ffe7eb0] [c000000000124dbc] handle_fasteoi_irq+0xec/0x260
 [c00000007ffe7ef0] [c00000000011f4f0] generic_handle_irq+0x50/0x80
 [c00000007ffe7f20] [c000000000010f3c] __do_irq+0x8c/0x200
 [c00000007ffe7f90] [c0000000000236cc] call_do_irq+0x14/0x24
 [c00000007e6f39e0] [c000000000011144] do_IRQ+0x94/0x110
 [c00000007e6f3a30] [c000000000002594] hardware_interrupt_common+0x114/0x180

Fix this issue by introducing a new rtas_get_sensor_fast() function
that does not use rtas_busy_delay() - and thus can only be used for
sensors that do not cause a BUSY condition - known as "fast" sensors.

The EPOW sensor is defined to be "fast" in sPAPR - mpe.

Fixes: 587f83e8dd ("powerpc/pseries: Use rtas_get_sensor in RAS code")
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Zefan Li <lizefan@huawei.com>
2016-04-27 18:55:14 +08:00
..
8xx_immap.h
abs_addr.h powerpc: Remove FW_FEATURE ISERIES from arch code 2012-03-21 11:16:11 +11:00
agp.h
asm-compat.h
asm-offsets.h
async_tx.h
atomic.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
auxvec.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
backlight.h
barrier.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
bitops.h
bitsperlong.h
bootx.h
btext.h
bug.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
bugs.h
byteorder.h
cache.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
cacheflush.h
cell-pmu.h
cell-regs.h
checksum.h
clk_interface.h
cmpxchg.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
code-patching.h
compat.h
cpm.h
cpm1.h
cpm2.h
cputable.h powerpc: Add initial e6500 cpu support 2012-03-15 12:12:21 -05:00
cputhreads.h
cputime.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-01-06 17:58:22 -08:00
current.h
dbdma.h
dbell.h
dcr-generic.h
dcr-mmio.h
dcr-native.h
dcr-regs.h
dcr.h
debug.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
delay.h
device.h powerpc/eeh: Introduce EEH device 2012-03-09 11:39:29 +11:00
disassemble.h
div64.h
dma-mapping.h PowerPC: adapt for dma_map_ops changes 2012-03-28 16:36:33 +02:00
dma.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
edac.h
eeh.h powerpc/eeh: pseries platform config space access in EEH 2012-03-09 11:39:51 +11:00
eeh_event.h powerpc/eeh: Replace pci_dn with eeh_dev for EEH aux components 2012-03-09 11:39:46 +11:00
ehv_pic.h irq_domain/powerpc: Use common irq_domain structure instead of irq_host 2012-02-14 14:06:50 -07:00
elf.h
emergency-restart.h
emulated_ops.h
epapr_hcalls.h powerpc/epapr: add "memory" as a clobber to all hypercalls 2012-03-29 08:14:14 -05:00
errno.h
exception-64e.h
exception-64s.h powerpc: Fix bad stack check in exception entry 2014-01-08 09:42:11 -08:00
exec.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
fadump.h fadump: Invalidate registration and release reserved memory for general use. 2012-02-23 10:50:02 +11:00
fb.h
fcntl.h
feature-fixups.h
firmware.h powerpc: Remove FW_FEATURE ISERIES from arch code 2012-03-21 11:16:11 +11:00
fixmap.h
floppy.h
fs_pd.h
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_guts.h powerpc/8xxx: remove 85xx/86xx restrictions from fsl_guts.h 2012-03-29 08:14:07 -05:00
fsl_hcalls.h
fsl_ifc.h powerpc/fsl: Add support for Integrated Flash Controller 2012-01-04 15:41:22 -06:00
fsl_lbc.h
ftrace.h
futex.h
gpio.h
grackle.h
hardirq.h
heathrow.h
highmem.h highmem: kill all __kmap_atomic() 2012-03-20 21:48:30 +08:00
hugetlb.h
hvcall.h
hvconsole.h
hvcserver.h
hvsi.h
hw_breakpoint.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
hw_irq.h powerpc: Fix build of some debug irq code 2012-07-16 09:03:49 -07:00
hydra.h
i8259.h irq_domain/powerpc: Use common irq_domain structure instead of irq_host 2012-02-14 14:06:50 -07:00
ibmebus.h
ide.h
immap_cpm2.h
immap_qe.h
io-defs.h
io-workarounds.h
io.h
io_event_irq.h
ioctl.h
ioctls.h
iommu.h powerpc: Random little legacy iSeries removal tidy ups 2012-03-28 11:33:23 +11:00
ipcbuf.h
ipic.h
irq.h powerpc/irqdomain: Fix broken NR_IRQ references 2012-04-30 10:45:26 +10:00
irq_regs.h
irqflags.h powerpc: Rework lazy-interrupt handling 2012-03-09 13:25:06 +11:00
jump_label.h compiler/gcc4: Add quirk for 'asm goto' miscompilation bug 2014-04-14 06:44:16 -07:00
Kbuild
kdebug.h
kdump.h
kexec.h
keylargo.h Typos: change aditional to additional. 2012-02-21 11:40:36 +01:00
kgdb.h
kmap_types.h
kprobes.h
kvm.h KVM: PPC: Rename MMIO register identifiers 2012-03-05 14:52:41 +02:00
kvm_44x.h
kvm_asm.h
kvm_book3s.h powerpc/kvm: Fix VSID usage in 64-bit "PR" KVM 2012-05-16 15:02:11 +02:00
kvm_book3s_32.h KVM: PPC: Use get/set for to_svcpu to help preemption 2012-03-05 14:52:30 +02:00
kvm_book3s_64.h KVM: PPC: Allow for read-only pages backing a Book3S HV guest 2012-03-05 14:52:38 +02:00
kvm_book3s_asm.h
kvm_booke.h
kvm_e500.h KVM: PPC: Paravirtualize SPRG4-7, ESR, PIR, MASn 2012-03-05 14:52:26 +02:00
kvm_fpu.h
kvm_host.h KVM: Introduce kvm_memory_slot::arch and move lpage_info into it 2012-03-08 14:10:22 +02:00
kvm_para.h KVM: PPC: refer to paravirt docs in header file 2012-03-05 14:52:41 +02:00
kvm_ppc.h KVM: PPC: Add HPT preallocator 2012-03-05 14:57:28 +02:00
libata-portmap.h
linkage.h
local.h
local64.h
lppaca.h powerpc: Remove the remaining CONFIG_PPC_ISERIES pieces 2012-03-21 11:16:12 +11:00
lv1call.h
machdep.h powerpc: Remove NO_IRQ_IGNORE 2012-03-28 11:32:01 +11:00
macio.h
mc146818rtc.h
mediabay.h
mman.h
mmu-8xx.h
mmu-40x.h
mmu-44x.h
mmu-book3e.h KVM: PPC: e500: use hardware hint when loading TLB0 entries 2012-03-05 14:52:34 +02:00
mmu-hash32.h
mmu-hash64.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-03-28 14:41:36 -07:00
mmu.h
mmu_context.h
mmzone.h
module.h powerpc/modules: Module CRC relocation fix causes perf issues 2013-08-04 16:25:55 +08:00
mpc5xxx.h
mpc6xx.h
mpc8xx.h
mpc52xx.h
mpc52xx_psc.h
mpc5121.h
mpc8260.h
mpic.h powerpc/mpic: Properly set default triggers 2012-04-23 11:04:30 +10:00
mpic_msgr.h powerpc/mpic_msgr: fix compile error when SMP disabled 2012-04-19 14:55:56 -05:00
msgbuf.h
msi_bitmap.h
mutex.h
nvram.h
ohare.h
opal.h
oprofile_impl.h
paca.h powerpc: Rework lazy-interrupt handling 2012-03-09 13:25:06 +11:00
page.h powerpc: Work around gcc miscompilation of __pa() on 64-bit 2013-09-07 21:58:14 -07:00
page_32.h
page_64.h
param.h
parport.h
pasemi_dma.h
pci-bridge.h powerpc/eeh: Fix crash on converting OF node to edev 2012-10-13 05:38:39 +09:00
pci.h powerpc/PCI: compute I/O space bus-to-resource offset consistently 2012-03-20 10:41:44 -07:00
percpu.h
perf_event.h
perf_event_fsl_emb.h
perf_event_server.h powerpc/perf: Fix instruction address sampling on 970 and Power4 2012-03-28 11:33:24 +11:00
pgalloc-32.h
pgalloc-64.h
pgalloc.h
pgtable-ppc32.h
pgtable-ppc64-4k.h
pgtable-ppc64-64k.h
pgtable-ppc64.h
pgtable.h
pmac_feature.h
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
poll.h
posix_types.h powerpc: Use generic posix_types.h 2012-02-14 12:01:29 -08:00
ppc-opcode.h powerpc: Emulate non privileged DSCR read and write 2013-05-11 13:48:05 -07:00
ppc-pci.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-03-23 14:02:12 -07:00
ppc4xx.h
ppc_asm.h powerpc: Fix 64 bit builds with binutils 2.24 2014-06-16 13:45:45 -07:00
processor.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
prom.h
ps3.h
ps3av.h
ps3fb.h
ps3gpu.h
ps3stor.h
pSeries_reconfig.h
pte-8xx.h
pte-40x.h
pte-44x.h
pte-book3e.h
pte-common.h
pte-fsl-booke.h
pte-hash32.h
pte-hash64-4k.h
pte-hash64-64k.h
pte-hash64.h
ptrace.h powerpc: Implement GET_IP/SET_IP 2012-02-14 15:01:38 +11:00
qe.h
qe_ic.h
reg.h powerpc: Add "memory" attribute for mfmsr() 2012-08-09 08:31:27 -07:00
reg_8xx.h
reg_a2.h
reg_booke.h powerpc: fix build when CONFIG_BOOKE_WDT is enabled 2012-04-19 14:55:43 -05:00
reg_fsl_emb.h
resource.h
rheap.h
rio.h
rtas.h powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers 2016-04-27 18:55:14 +08:00
rtc.h
runlatch.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
scatterlist.h
scom.h
seccomp.h
sections.h
sembuf.h
serial.h
setjmp.h
setup.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
sfp-machine.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer 2013-04-05 10:04:14 -07:00
smp.h powerpc: Random little legacy iSeries removal tidy ups 2012-03-28 11:33:23 +11:00
smu.h
socket.h net: Add framework to allow sending packets with customized CRC. 2012-02-24 01:37:35 -08:00
sockios.h
sparsemem.h
spinlock.h powerpc: Remove the remaining CONFIG_PPC_ISERIES pieces 2012-03-21 11:16:12 +11:00
spinlock_types.h
spu.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
spu_csa.h
spu_info.h
spu_priv1.h
sstep.h
stat.h
statfs.h
string.h
swab.h
swiotlb.h
switch_to.h Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
synch.h
syscall.h
syscalls.h
systbl.h
tce.h
termbits.h
termios.h
thread_info.h powerpc: Rework runlatch code 2012-03-09 10:55:02 +11:00
time.h powerpc: Remove FW_FEATURE ISERIES from arch code 2012-03-21 11:16:11 +11:00
timex.h
tlb.h
tlbflush.h
topology.h cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
trace.h
tsi108.h
tsi108_irq.h
tsi108_pci.h
types.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
uaccess.h
ucc.h
ucc_fast.h
ucc_slow.h
ucontext.h
udbg.h powerpc: Random little legacy iSeries removal tidy ups 2012-03-28 11:33:23 +11:00
uic.h
unaligned.h
uninorth.h
unistd.h
user.h
vdso.h
vdso_datapage.h
vga.h
vio.h powerpc+sparc/vio: Modernize driver registration 2012-03-28 11:33:24 +11:00
wsp.h
xics.h irq_domain/powerpc: Use common irq_domain structure instead of irq_host 2012-02-14 14:06:50 -07:00
xilinx_intc.h
xilinx_pci.h
xmon.h
xor.h