Using the trace, it looks like it is reading from PCI just fine:
I am ramping up on QEMU monitor's usage... Thanks for the help.
Code: Select all
(qemu) info registers
PC=000000023bb34a00 X00=ffffffff8004c020 X01=ffffffff8004ace0
X02=0000000000000000 X03=0060000000000613 X04=00000000000000f5
X05=ffffffff8004b4c5 X06=0000000000000000 X07=0000000000000032
X08=ffffffff800225e6 X09=0000000000000049 X10=ffffffff800225ed
X11=0000000009000000 X12=0000000000000007 X13=0000000000000000
X14=0000000000000032 X15=0000000240000000 X16=0000000000000000
X17=ffffffff80020d24 X18=000000000000002e X19=ffffffff8004ace0
X20=ffffffff8004c050 X21=ffffffff8004c050 X22=ffffffff80021209
X23=ffffffff8004b4d0 X24=ffff8002384a002c X25=ffffffff8004ac08
X26=0000000000000000 X27=0000000000000000 X28=0000000000000000
X29=ffffffff8004aba0 X30=ffffffff8001dadc SP=ffffffff8004aba0
PSTATE=000003c5 ---- EL1h FPCR=00000000 FPSR=00000000
ffffffff800xxxxx is my kernel
PC is at 000000023bb34a00, which according to my memory map is "available conventional memory", which is a bit puzzling. It is near UEFI Runtime Services Code, I wonder if this is some exception handler (but I have exited boot services already).
Code: Select all
(qemu) x/32i 0x000000023bb34a00
0x23bb34a00: 4cf33c50 .byte 0x50, 0x3c, 0xf3, 0x4c
0x23bb34a04: 000055c0 .byte 0xc0, 0x55, 0x00, 0x00
0x23bb34a08: 4c2037b0 .byte 0xb0, 0x37, 0x20, 0x4c
0x23bb34a0c: 000055c0 .byte 0xc0, 0x55, 0x00, 0x00
0x23bb34a10: 00000020 .byte 0x20, 0x00, 0x00, 0x00
0x23bb34a14: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a18: 00000010 .byte 0x10, 0x00, 0x00, 0x00
0x23bb34a1c: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a20: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a24: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a28: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a2c: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a30: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a34: 00000000 .byte 0x00, 0x00, 0x00, 0x00
Everytime I dump the above, the first 3 bytes are different. This is very puzzling.
Dumping from xxx9f0 I get constant memory at xxxa00:
Code: Select all
(qemu) x/32i 0x000000023bb349f0
...
0x23bb34a00: 00000020 .byte 0x20, 0x00, 0x00, 0x00
0x23bb34a04: 00000000 .byte 0x00, 0x00, 0x00, 0x00
0x23bb34a08: 00000015 .byte 0x15, 0x00, 0x00, 0x00
0x23bb34a0c: 00000000 .byte 0x00, 0x00, 0x00, 0x00