[OpenBIOS] Solaris 8: ESP device enumeration issue

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Sun Feb 20 13:08:52 CET 2011


On 17/02/11 21:03, Tarl Neustaedter wrote:

>> qemu: fatal: Trap 0x29 while interrupts disabled, Error state
>
>
> Trap 0x29 is "Internal processor error". It would be instructive to see
> what's at f004127c (the trap pc), since that looks like it should be in
> the range of the PROM code, not Solaris. Alternatively, it might be
> interesting to see what happens by printing out the client-interface
> calls, see which call we're tripping over.

Well I turned on some logging in OpenBIOS but couldn't see any ESP 
accesses during the SCSI bus probe. However, I tried enabling ESP 
debugging in qemu and that does show ESP accesses, implying that Solaris 
is now accessing the SCSI bus itself rather than through OpenBIOS.

The relevant section of the log looks like this:


vac: enabled in write through mode
mem = 131072K (0x8000000)
avail mem = 110419968
obp_nextnode(0x0) = 0xffd4527c
obp_proplen(0xffd4527c, reg) (not found)
obp_proplen(0xffd4527c, ranges) (not found)
obp_proplen(0xffd4527c, intr) (not found)
obp_proplen(0xffd4527c, interrupts) (not found)
obp_proplen(0xffd4527c, ttymodes) (not found)
obp_proplen(0xffd4527c, device_type) (not found)
root nexus = SUNW,SPARCstation-5
obp_proplen(0xffd4527c, pm-hardware-state) (not found)
obp_proplen(0xffd4527c, pm-want-child-notification?) (not found)
obp_proplen(0xffd4527c, pm-components) (not found)
obp_proplen(0xffd455e4, reg) (not found)
obp_proplen(0xffd455e4, ranges) (not found)
obp_proplen(0xffd455e4, intr) (not found)
obp_proplen(0xffd455e4, interrupts) (not found)
obp_proplen(0xffd455e4, reg) (not found)
obp_proplen(0xffd455e4, ranges) (not found)
obp_proplen(0xffd455e4, intr) (not found)
obp_proplen(0xffd455e4, interrupts) (not found)
obp_proplen(0xffd455e4, device_type) (not found)
obp_proplen(0xffd455e4, pm-hardware-state) (not found)
obp_proplen(0xffd455e4, pm-want-child-notification?) (not found)
obp_proplen(0xffd455e4, pm-components) (not found)
obp_fortheval_v2(0 0 f024360c f59a88c8 11  ['] find-device catch if 
2drop true else current-device device-end then swap l!)
obp_proplen(0xffd4caa4, reg) = 12
obp_proplen(0xffd4caa4, reg) = 12
obp_getprop(0xffd4caa4, reg) = 00 00 00 00 10 00 00 00 00 00 03 00
obp_proplen(0xffd4caa4, ranges) (not found)
obp_proplen(0xffd4caa4, intr) (not found)
obp_proplen(0xffd4caa4, interrupts) (not found)
obp_proplen(0xffd4caa4, device_type) (not found)
iommu0 at root: obio 0x10000000
obp_proplen(0xffd4caa4, pm-want-child-notification?) (not found)
obp_proplen(0xffd4caa4, pm-components) (not found)
obp_fortheval_v2(0 0 f024360c f59a88c8 21  ['] find-device catch if 
2drop true else current-device device-end then swap l!)
obp_proplen(0xffd4cc14, reg) = 12
obp_proplen(0xffd4cc14, reg) = 12
obp_getprop(0xffd4cc14, reg) = 00 00 00 00 10 00 10 00 00 00 00 28
obp_proplen(0xffd4cc14, ranges) = 120
obp_proplen(0xffd4cc14, ranges) = 120
obp_getprop(0xffd4cc14, ranges) = 00 00 00 00 00 00 00 00 00 00 00 00 20 
00 00 00 10 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 30 00 00 00 10 
00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 00 
00 00 03 00 00 00 00 00 00 00 00 50 00 00 00 10 00 00 00 00 00 00 04 00 
00 00 00 00 00 00 00 60 00 00 00 10 00 00 00 00 00 00 05 00 00 00 00 00 
00 00 00 70 00 00 00 10 00 00 00
obp_proplen(0xffd4cc14, intr) (not found)
obp_proplen(0xffd4cc14, interrupts) (not found)
obp_proplen(0xffd4cc14, device_type) = 13
obp_proplen(0xffd4cc14, device_type) = 13
obp_getprop(0xffd4cc14, device_type) = hierarchical
sbus0 at iommu0: obio 0x10001000
obp_proplen(0xffd4cc14, burst-sizes) = 4
obp_proplen(0xffd4cc14, burst-sizes) = 4
obp_getprop(0xffd4cc14, burst-sizes) = 0000003f
obp_proplen(0xffd4cc14, pm-hardware-state) (not found)
obp_proplen(0xffd4cc14, pm-want-child-notification?) (not found)
obp_proplen(0xffd4cc14, pm-components) (not found)
obp_fortheval_v2(0 0 f024360c f59a88c8 32  ['] find-device catch if 
2drop true else current-device device-end then swap l!)
obp_proplen(0xffd4cfec, reg) = 12
obp_proplen(0xffd4cfec, reg) = 12
obp_getprop(0xffd4cfec, reg) = 00 00 00 05 08 40 00 00 00 00 00 10
obp_proplen(0xffd4cfec, ranges) (not found)
obp_proplen(0xffd4cfec, intr) (not found)
obp_proplen(0xffd4cfec, interrupts) (not found)
obp_proplen(0xffd4cfec, device_type) (not found)
dma0 at sbus0: SBus slot 5 0x8400000
dma0 is /iommu at 0,10000000/sbus at 0,10001000/espdma at 5,8400000
obp_proplen(0xffd4cfec, pm-hardware-state) (not found)
obp_proplen(0xffd4cfec, pm-want-child-notification?) (not found)
obp_proplen(0xffd4cfec, pm-components) (not found)
obp_fortheval_v2(0 0 f024360c f59a88c8 40  ['] find-device catch if 
2drop true else current-device device-end then swap l!)
obp_proplen(0xffd4fb20, reg) = 12
obp_proplen(0xffd4fb20, reg) = 12
obp_getprop(0xffd4fb20, reg) = 00 00 00 05 08 80 00 00 00 00 00 10
obp_proplen(0xffd4fb20, ranges) (not found)
obp_proplen(0xffd4fb20, intr) = 8
obp_proplen(0xffd4fb20, intr) = 8
obp_getprop(0xffd4fb20, intr) = 00 00 00 24 00 00 00 00
obp_proplen(0xffd4fb20, interrupts) (not found)
obp_proplen(0xffd4fb20, device_type) = 5
obp_proplen(0xffd4fb20, device_type) = 5
obp_getprop(0xffd4fb20, device_type) = scsi
obp_proplen(0xffd4cc14, slave-only) (not found)
obp_proplen(0xffd4caa4, slave-only) (not found)
obp_proplen(0xffd4527c, slave-only) (not found)
obp_proplen(0xffd455e4, slave-only) (not found)
obp_proplen(0xffd4fb20, initiator-id) (not found)
obp_proplen(0xffd4cfec, initiator-id) (not found)
obp_proplen(0xffd4cc14, initiator-id) (not found)
obp_proplen(0xffd4caa4, initiator-id) (not found)
obp_proplen(0xffd4527c, initiator-id) (not found)
obp_proplen(0xffd455e4, initiator-id) (not found)
obp_proplen(0xffd4fb20, scsi-initiator-id) (not found)
obp_proplen(0xffd4cfec, scsi-initiator-id) (not found)
obp_proplen(0xffd4cc14, scsi-initiator-id) (not found)
obp_proplen(0xffd4caa4, scsi-initiator-id) (not found)
obp_proplen(0xffd4527c, scsi-initiator-id) (not found)
obp_proplen(0xffd455e4, scsi-initiator-id) (not found)
obp_proplen(0xffd4fb20, scsi-reset-delay) (not found)
obp_proplen(0xffd4cfec, scsi-reset-delay) (not found)
obp_proplen(0xffd4cc14, scsi-reset-delay) (not found)
obp_proplen(0xffd4caa4, scsi-reset-delay) (not found)
obp_proplen(0xffd4527c, scsi-reset-delay) (not found)
obp_proplen(0xffd455e4, scsi-reset-delay) (not found)
obp_proplen(0xffd4fb20, scsi-tag-age-limit) (not found)
obp_proplen(0xffd4cfec, scsi-tag-age-limit) (not found)
obp_proplen(0xffd4cc14, scsi-tag-age-limit) (not found)
obp_proplen(0xffd4caa4, scsi-tag-age-limit) (not found)
obp_proplen(0xffd4527c, scsi-tag-age-limit) (not found)
obp_proplen(0xffd455e4, scsi-tag-age-limit) (not found)
obp_proplen(0xffd4fb20, scsi-watchdog-tick) (not found)
obp_proplen(0xffd4cfec, scsi-watchdog-tick) (not found)
obp_proplen(0xffd4cc14, scsi-watchdog-tick) (not found)
obp_proplen(0xffd4caa4, scsi-watchdog-tick) (not found)
obp_proplen(0xffd4527c, scsi-watchdog-tick) (not found)
obp_proplen(0xffd455e4, scsi-watchdog-tick) (not found)
obp_proplen(0xffd4fb20, scsi-options) (not found)
obp_proplen(0xffd4cfec, scsi-options) (not found)
obp_proplen(0xffd4cc14, scsi-options) (not found)
obp_proplen(0xffd4caa4, scsi-options) (not found)
obp_proplen(0xffd4527c, scsi-options) (not found)
obp_proplen(0xffd455e4, scsi-options) (not found)
obp_proplen(0xffd4fb20, scsi-selection-timeout) (not found)
obp_proplen(0xffd4cfec, scsi-selection-timeout) (not found)
obp_proplen(0xffd4cc14, scsi-selection-timeout) (not found)
obp_proplen(0xffd4caa4, scsi-selection-timeout) (not found)
obp_proplen(0xffd4527c, scsi-selection-timeout) (not found)
obp_proplen(0xffd455e4, scsi-selection-timeout) (not found)
obp_proplen(0xffd4fb20, target0-scsi-options) (not found)
obp_proplen(0xffd4cfec, target0-scsi-options) (not found)
obp_proplen(0xffd4cc14, target0-scsi-options) (not found)
obp_proplen(0xffd4caa4, target0-scsi-options) (not found)
obp_proplen(0xffd4527c, target0-scsi-options) (not found)
obp_proplen(0xffd455e4, target0-scsi-options) (not found)
obp_proplen(0xffd4fb20, target1-scsi-options) (not found)
obp_proplen(0xffd4cfec, target1-scsi-options) (not found)
obp_proplen(0xffd4cc14, target1-scsi-options) (not found)
obp_proplen(0xffd4caa4, target1-scsi-options) (not found)
obp_proplen(0xffd4527c, target1-scsi-options) (not found)
obp_proplen(0xffd455e4, target1-scsi-options) (not found)
obp_proplen(0xffd4fb20, target2-scsi-options) (not found)
obp_proplen(0xffd4cfec, target2-scsi-options) (not found)
obp_proplen(0xffd4cc14, target2-scsi-options) (not found)
obp_proplen(0xffd4caa4, target2-scsi-options) (not found)
obp_proplen(0xffd4527c, target2-scsi-options) (not found)
obp_proplen(0xffd455e4, target2-scsi-options) (not found)
obp_proplen(0xffd4fb20, target3-scsi-options) (not found)
obp_proplen(0xffd4cfec, target3-scsi-options) (not found)
obp_proplen(0xffd4cc14, target3-scsi-options) (not found)
obp_proplen(0xffd4caa4, target3-scsi-options) (not found)
obp_proplen(0xffd4527c, target3-scsi-options) (not found)
obp_proplen(0xffd455e4, target3-scsi-options) (not found)
obp_proplen(0xffd4fb20, target4-scsi-options) (not found)
obp_proplen(0xffd4cfec, target4-scsi-options) (not found)
obp_proplen(0xffd4cc14, target4-scsi-options) (not found)
obp_proplen(0xffd4caa4, target4-scsi-options) (not found)
obp_proplen(0xffd4527c, target4-scsi-options) (not found)
obp_proplen(0xffd455e4, target4-scsi-options) (not found)
obp_proplen(0xffd4fb20, target5-scsi-options) (not found)
obp_proplen(0xffd4cfec, target5-scsi-options) (not found)
obp_proplen(0xffd4cc14, target5-scsi-options) (not found)
obp_proplen(0xffd4caa4, target5-scsi-options) (not found)
obp_proplen(0xffd4527c, target5-scsi-options) (not found)
obp_proplen(0xffd455e4, target5-scsi-options) (not found)
obp_proplen(0xffd4fb20, target6-scsi-options) (not found)
obp_proplen(0xffd4cfec, target6-scsi-options) (not found)
obp_proplen(0xffd4cc14, target6-scsi-options) (not found)
obp_proplen(0xffd4caa4, target6-scsi-options) (not found)
obp_proplen(0xffd4527c, target6-scsi-options) (not found)
obp_proplen(0xffd455e4, target6-scsi-options) (not found)
obp_proplen(0xffd4fb20, target7-scsi-options) (not found)
obp_proplen(0xffd4cfec, target7-scsi-options) (not found)
obp_proplen(0xffd4cc14, target7-scsi-options) (not found)
obp_proplen(0xffd4caa4, target7-scsi-options) (not found)
obp_proplen(0xffd4527c, target7-scsi-options) (not found)
obp_proplen(0xffd455e4, target7-scsi-options) (not found)
obp_proplen(0xffd4fb20, clock-frequency) = 4
obp_proplen(0xffd4fb20, clock-frequency) = 4
obp_getprop(0xffd4fb20, clock-frequency) = 02625a00
ESP: write reg[11]: 0x00 -> 0x00
ESP: write reg[11]: 0x00 -> 0x0a
ESP: read reg[11]: 0x0a
ESP: write reg[12]: 0x00 -> 0x00
ESP: write reg[12]: 0x00 -> 0x05
ESP: read reg[12]: 0x05
ESP: write reg[11]: 0x0a -> 0x08
ESP: write reg[12]: 0x05 -> 0x00
ESP: write reg[3]: 0x90 -> 0x03
ESP: Bus reset (03)
ESP: Raise IRQ
ESP: Lower enable
ESP: write reg[3]: 0x00 -> 0x02
ESP: Chip reset (02)
ESP: write reg[3]: 0x02 -> 0x80
ESP: NOP (80)
ESP: write reg[3]: 0x80 -> 0x80
ESP: NOP (80)
ESP: write reg[9]: 0x00 -> 0x00
ESP: write reg[5]: 0x00 -> 0xa3
ESP: write reg[6]: 0x00 -> 0x00
ESP: write reg[7]: 0x00 -> 0x00
ESP: read reg[14]: 0x04
ESP: read reg[14]: 0x04
ESP: write reg[8]: 0x00 -> 0x17
ESP: write reg[12]: 0x00 -> 0x01
ESP: write reg[11]: 0x00 -> 0x08
obp_proplen(0xffd4fb20, esp-options) (not found)
obp_proplen(0xffd4cfec, esp-options) (not found)
obp_proplen(0xffd4cc14, esp-options) (not found)
obp_proplen(0xffd4caa4, esp-options) (not found)
obp_proplen(0xffd4527c, esp-options) (not found)
obp_proplen(0xffd455e4, esp-options) (not found)
/iommu at 0,10000000/sbus at 0,10001000/espdma at 5,8400000/esp at 5,8800000 (esp0):
         esp-options=0x46
ESP: read reg[5]: 0x00
esp0 at dma0: SBus slot 5 0x8800000 sparc ipl 4
esp0 is /iommu at 0,10000000/sbus at 0,10001000/espdma at 5,8400000/esp at 5,8800000
obp_proplen(0xffd4fb20, pm-hardware-state) (not found)
obp_proplen(0xffd4fb20, pm-want-child-notification?) (not found)
obp_fortheval_v2(0 0 f024360c f59a88c8 47  ['] find-device catch if 
2drop true else current-device device-end then swap l!)
ESP: write reg[4]: 0x00 -> 0x00
ESP: write reg[6]: 0x00 -> 0x00
ESP: write reg[7]: 0x00 -> 0x00
ESP: write reg[12]: 0x01 -> 0x01
ESP: write reg[8]: 0x17 -> 0x07
ESP: write reg[0]: 0x00 -> 0x07
ESP: write reg[1]: 0x00 -> 0x00
ESP: Raise enable
ESP: write reg[3]: 0x80 -> 0xc2
ESP: Select with ATN (c2)
ESP: get_cmd: len 7 target 0
ESP: Raise IRQ
qemu: fatal: Trap 0x29 while interrupts disabled, Error state
pc: f004127c  npc: f0041280
General Registers:
%g0-7: 00000000 f02441a0 04400fc1 00007000 f5af4e40 f0243b88 00000000 
f0244020

Current Register Window:
%o0-7: ffff8000 00008000 00000f00 044000c0 f5948688 ffed7000 fbe3a4b8 
f0041be4
%l0-7: 04400fc0 f0041c78 f0041c7c 00000001 0000010f 00000001 0000002a 
fbe39f78
%i0-7: ffff8000 00008000 00000f00 044000c1 00000002 ffed7000 fbe3a020 
f0041be4

Floating Point Registers:
%f00: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f04: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f08: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f12: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f16: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f20: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f24: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f28: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
psr: 04000fc0 (icc: ---- SPE: SP-) wim: 00000001
fsr: 00080000 y: 00000000
Aborted


In terms of the Solaris code, the trap appears to be coming from an 
interrupt routine which makes me wonder if OpenBIOS perhaps isn't 
leaving the ESP in a tidy state, so that when Solaris finally takes over 
the bus it causes a crash.


ATB,

Mark.

-- 
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs



More information about the OpenBIOS mailing list