[Pdbg] [PATCH v2] WIP: POWER8 SRESET

Artem Senichev artemsen at gmail.com
Thu Mar 7 19:58:48 AEDT 2019


On Thu, Mar 07, 2019 at 04:43:34PM +1100, Alistair Popple wrote:
> SRESET on POWER8 is made more complex because it can only be run if a
> thread is in a powersave state. This makes getting an active thread
> into SRESET hard because we need to emulate what the processor does
> using instruction ramming.
> 
> This patch aims to implement this sequence. If a thread is in a nap
> state it will just use the direct controls, however if it is in an
> active state it will quiesce the thread and use instruction ramming to
> put the thread at the 0x100 sreset exception vector.
> 
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
>  libpdbg/chip.c   | 42 ++++++++++++++++++++++++++++++++++++++++++
>  libpdbg/p8chip.c | 24 ++++++++++++++++++------
>  src/thread.c     | 14 ++++++++++++++
>  3 files changed, 74 insertions(+), 6 deletions(-)

Hi Alistair,
I've tried the patch, just out of curiosity, it looks like two
simultaneous sreset signal are send to the host, the kernel hangs with
message:

cpu 0x0: Vector: 100 (System Reset) at [c000000001d07bb8]
    pc: c0000000000a84d8: power7_idle_type+0x68/0x90
    lr: c0000000000a84d8: power7_idle_type+0x68/0x90
    sp: c000000001d07d30
   msr: 9000000000001033
  current = 0xc000000001cb1900
  paca    = 0xc000000001f70000	 irqmask: 0x03	 irq_happened: 0x01
    pid   = 0, comm = swapper/0
Linux version 5.0.0 (art at art) (gcc version 8.3.0 (Buildroot 2019.05-git-01359-g9550765adb)) #2 SMP Thu Mar 7 10:39:05 MSK 2019
cpu 0x80: Vector: 100 (System Reset) at [c000003fcadb3bd8]
    pc: c0000000000a84d8: power7_idle_type+0x68/0x90
    lr: c0000000000a84d8: power7_idle_type+0x68/0x90
    sp: c000003fcadb3d50
   msr: 9000000000001033
  current = 0xc000003fcad45600
  paca    = 0xc000003fff6db880	 irqmask: 0x03	 irq_happened: 0x01
    pid   = 0, comm = swapper/128
Linux version 5.0.0 (art at art) (gcc version 8.3.0 (Buildroot 2019.05-git-01359-g9550765adb)) #2 SMP Thu Mar 7 10:39:05 MSK 2019

It happens when the target CPU thread is idle, with 100% loading there
is still 'cpu 0x0: Vector: 400 (Instruction Access)' error.

-- 
Regards,
Artem Senichev
Software Engineer, YADRO.


More information about the Pdbg mailing list