Re: [PATCH 7/7] powerpc/eeh: Add eeh_force_recover to debugfs
From: Oliver <oohall@gmail.com>
Date: 2019-02-08 12:55:27
On Fri, Feb 8, 2019 at 11:32 PM Michael Ellerman [off-list ref] wrote:
Oliver O'Halloran [off-list ref] writes:quoted
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_recoverWhy '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...