On Fri, Feb 8, 2019 at 11:32 PM Michael Ellerman <m...@ellerman.id.au> wrote: > > Oliver O'Halloran <ooh...@gmail.com> writes: > > > This patch adds a debugfs interface to force scheduling a recovery event. > > This can be used to recover a specific PE or schedule a "special" recovery > > even that checks for errors at the PHB level. > > To force a recovery of a normal PE, use: > > > > echo '<#pe>:<#phb>' > /sys/kernel/debug/powerpc/eeh_force_recover > > > > To force a scan broken PHBs: > > > > echo 'null' > /sys/kernel/debug/powerpc/eeh_force_recover > > Why 'null', that seems like an odd choice. Why not "all" or "scan" or > something?
When an EEH event occurs the bit that is sent to the event handler is just a pointer the the struct eeh_pe. If the pointer is null it's then treated as a special event which indicates a PHB failure. I agree it's a bit dumb, but I don't really expect anyone except me or samb to use this interface so I went with what would make sense to someone familiar with the internals. > > Also it oopsed on me: > > [ 76.323164] sending failure event > [ 76.323421] BUG: Unable to handle kernel instruction fetch (NULL pointer?) > [ 76.323655] Faulting instruction address: 0x00000000 > [ 76.323856] Oops: Kernel access of bad area, sig: 11 [#1] > [ 76.323946] LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries > [ 76.324295] Modules linked in: vmx_crypto kvm binfmt_misc ip_tables > x_tables autofs4 crc32c_vpmsum > [ 76.324669] CPU: 2 PID: 97 Comm: eehd Not tainted > 5.0.0-rc2-gcc-8.2.0-00080-gfacc0d1d9517 #435 > [ 76.325054] NIP: 0000000000000000 LR: c0000000000451f8 CTR: > 0000000000000000 > [ 76.325402] REGS: c0000000fec779c0 TRAP: 0400 Not tainted > (5.0.0-rc2-gcc-8.2.0-00080-gfacc0d1d9517) > [ 76.325768] MSR: 800000014280b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]> > CR: 24000482 XER: 20000000 > [ 76.326243] CFAR: c000000000002528 IRQMASK: 0 > [ 76.326243] GPR00: c000000000045edc c0000000fec77c50 c000000001574000 > c0000000fec77cb0 > [ 76.326243] GPR04: 0000000000000000 00177d76e3e321bc 00177d76e4293a1f > 5deadbeef0000100 > [ 76.326243] GPR08: 5deadbeef0000200 0000000000000000 0000000000000000 > 00177d76e3e3216b > [ 76.326243] GPR12: 0000000000000000 c00000003fffdf00 c0000000001438a8 > c0000000fe211700 > [ 76.326243] GPR16: 0000000000000000 0000000000000000 0000000000000000 > 0000000000000000 > [ 76.326243] GPR20: 0000000000000000 0000000000000000 0000000000000000 > c000000000e814e8 > [ 76.326243] GPR24: c000000000e814c0 5deadbeef0000100 c000000001622480 > 0000000100000000 > [ 76.326243] GPR28: c000000001413310 c0000000016244e0 c0000000014132f0 > c0000001f84246a0 > [ 76.329073] NIP [0000000000000000] (null) > [ 76.329285] LR [c0000000000451f8] eeh_handle_special_event+0x78/0x348 > [ 76.329602] Call Trace: > [ 76.329762] [c0000000fec77c50] [c0000000fec77ce0] 0xc0000000fec77ce0 > (unreliable) > [ 76.330113] [c0000000fec77d00] [c000000000045edc] > eeh_event_handler+0x10c/0x1c0 > [ 76.330464] [c0000000fec77db0] [c000000000143a4c] kthread+0x1ac/0x1c0 > [ 76.330681] [c0000000fec77e20] [c00000000000bdc4] > ret_from_kernel_thread+0x5c/0x78 > [ 76.331026] Instruction dump: > [ 76.331197] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX > XXXXXXXX > [ 76.331550] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX > XXXXXXXX > [ 76.331803] ---[ end trace dc73d37df5bb9ecd ]--- > > > cheers This is probably a side effect of special events being a PowerNV specific concept. For a pseries guest there should never be any PHB PEs since (hardware) PHBs are a concept that is hidden to to a guest. It's like EEH is poorly thought out and full of layering violations or something...