The ISIs always seem to start after CPU0 gets a decrementer interrupt. I
don't know if this is just how QEMU runs it or there may be some unwanted
interaction between CPUs in openpic or elsewhere that may need to be
fixed. Adding more ppc_* traces and debug options I get:
cpus[0] = 0x56286d68c5e0 0x56286d68f1a0
cpus[1] = 0x56286d7004e0 0x56286d7030a0
[...]
Raise exception at c00137e8 on CPU 0x56286d68c5e0 => SYSCALL (8) error=00
syscall r0=0000000000000078 r3=0000000000800711 r4=0000000000000000 r5=0000000000000611 r6=0000000000000000 r7=0000000004e70640 r8=0000000000000000 nip=c00137e8
ppc_excp_rfi Return from exception at 0xc0019700 with flags 0x0000000000009032
ppc_excp_rfi Return from exception at 0xc00137ec with flags 0x0000000000009032
ppc_excp_rfi Return from exception at 0xc00137ec with flags 0x0000000000009032
htab_base 0000000007fc0000 htab_mask 000000000003ffff hash 000000000000f8bf
0 htab=0000000007fc0000/000000000003ffff vsid=fff ptem=7ffbd hash=000000000000f8bf
found PTE at offset 00022fc0
PTE access granted !
macio_gpio_write addr 0xc val 0x4
macio_set_gpio setting GPIO 4 to 0
macio_gpio_irq_assert asserting GPIO 4
CPU Reset (CPU 1)
NIP fff00100 LR 00000000 CTR 00000000 XER 00000000 CPU#1
MSR 00000040 HID0 00000000 HF 6c000002 iidx 3 didx 3
TB 00000000 50792834 DECR 4244174466
GPR00 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR04 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR08 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR12 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR16 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR24 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR28 0000000000000000 0000000000000000 0000000000000000 0000000000000000
CR 00000000 [ - - - - - - - - ] RES 000@ffffffff
SRR0 00000000 SRR1 00000000 PVR 000c0209 VRSAVE 00000000
SPRG0 00000000 SPRG1 00000000 SPRG2 00000000 SPRG3 00000000
SPRG4 00000000 SPRG5 00000000 SPRG6 00000000 SPRG7 00000000
SDR1 00000000 DAR 00000000 DSISR 00000000
Raise exception at 00000100 on CPU 0x56286d7004e0 => RESET (64) error=00
macio_gpio_read addr 0x4 val 0x0
macio_gpio_write addr 0xc val 0x0
macio_set_gpio setting GPIO 4 to 1
macio_gpio_irq_deassert deasserting GPIO 4
macio_gpio_read addr 0x4 val 0x2
ppc_irq_set_exit env [0x56286d68f1a0] irq 0x00100 level 1 => pending 0x00000100 req 0x00000002
Raise exception at c000f018 on CPU 0x56286d68c5e0 => DECR (10) error=00
ppc_excp_rfi Return from exception at 0xc0011040 with flags 0x0000000000001032
htab_base 0000000000000000 htab_mask 000000000000ffff hash 0000000000000011
0 htab=0000000000000000/000000000000ffff vsid=0 ptem=0 hash=0000000000000011
1 htab=0000000000000000/000000000000ffff vsid=0 api=0 hash=ffffffffffffffee
Raise exception at c0011040 on CPU 0x56286d7004e0 => ISI (3) error=40000000
ppc_excp_isi ISI exception: msr=0x0000000000001032 nip=0xc0011040
ppc_excp_rfi Return from exception at 0xc0019b70 with flags 0x0000000000001032
htab_base 0000000000000000 htab_mask 000000000000ffff hash 0000000000000019
0 htab=0000000000000000/000000000000ffff vsid=0 ptem=0 hash=0000000000000019
1 htab=0000000000000000/000000000000ffff vsid=0 api=0 hash=ffffffffffffffe6
Raise exception at c0019b70 on CPU 0x56286d7004e0 => ISI (3) error=40000000
ppc_excp_isi ISI exception: msr=0x0000000000001032 nip=0xc0019b70
ppc_excp_rfi Return from exception at 0xc0019b70 with flags 0x0000000000001032
That's all I could figure out but I don't know how to make sense of these
logs.
Regards,
BALATON Zoltan