On Mon, 2014-11-24 at 15:07 +0100, Laurent Dufour wrote: > On pseries system (LPAR) xmon failed to enter when running in LE mode, system > is hunging. Inititating xmon will lead to such an output on the console: > > SysRq : Entering xmon > cpu 0x15: Vector: 0 at [c0000003f39ffb10] > pc: c00000000007ed7c: sysrq_handle_xmon+0x5c/0x70 > lr: c00000000007ed7c: sysrq_handle_xmon+0x5c/0x70 > sp: c0000003f39ffc70 > msr: 8000000000009033 > current = 0xc0000003fafa7180 > paca = 0xc000000007d75e80 softe: 0 irq_happened: 0x01 > pid = 14617, comm = bash > Bad kernel stack pointer fafb4b0 at eca7cc4 > cpu 0x15: Vector: 300 (Data Access) at [c000000007f07d40] > pc: 000000000eca7cc4 > lr: 000000000eca7c44 > sp: fafb4b0 > msr: 8000000000001000 > dar: 10000000 > dsisr: 42000000 > current = 0xc0000003fafa7180 > paca = 0xc000000007d75e80 softe: 0 irq_happened: 0x01 > pid = 14617, comm = bash > cpu 0x15: Exception 300 (Data Access) in xmon, returning to main loop > xmon: WARNING: bad recursive fault on cpu 0x15 > > The root cause is that xmon is calling RTAS to turn off the surveillance > when entering xmon, and RTAS is requiring big endian parameters. > > This patch is byte swapping the RTAS arguments when running in LE mode. > > Signed-off-by: Laurent Dufour <lduf...@linux.vnet.ibm.com> > --- > arch/powerpc/xmon/xmon.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index b988b5addf86..c8efbb37d6e0 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -293,10 +293,10 @@ static inline void disable_surveillance(void) > args.token = rtas_token("set-indicator"); > if (args.token == RTAS_UNKNOWN_SERVICE) > return;
I just noticed we're not handling the token correctly here. It is be32 also. cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/