• Laurent Dufour's avatar
    powerpc/pseries: Fix endiannes issue in RTAS call from xmon · 5b1b543b
    Laurent Dufour authored
    commit 3b8a3c01 upstream.
    
    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: default avatarLaurent Dufour <ldufour@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
    5b1b543b
xmon.c 68.8 KB