[OpenBIOS] OpenSolaris starts to live on SPARC64

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Fri Apr 2 18:42:24 CEST 2010


Mark Cave-Ayland wrote:

> Yeah, it did seem to lie within the OpenBIOS symbol range. Perhaps it's 
> something going wrong in one of the CIF calls from the kernel into OB? I 
> seem to recall there's a DEBUG_CIF in libopenbios/client.c that traces 
> these things...

Indeed. And that gives the following:

0 > go
Jumping to entry point 00000000010071d8 for type 0000000000000001...
switching to new context: entry point 0x10071d8 stack 0x00000000ffe02a91
finddevice("/chosen") = 0xffe1d918
peer(0x00000000) = 0xffe1d280
getproplen(0xffe1d918, "elfheader-address") = 0x00000004
getprop(0xffe1d918, "elfheader-address", 0xffe0328c, 4) = service 
getprop: argument count error (0 1)
0
getproplen(0xffe1d280, "device_type") = 0xffffffffffffffff
child(0xffe1d280) = 0xffe1d458
getproplen(0xffe1d458, "device_type") = 0xffffffffffffffff
child(0xffe1d458) = 0x00000000
peer(0xffe1d458) = 0xffe1d580
getproplen(0xffe1d580, "device_type") = 0x00000008
getproplen(0xffe1d580, "device_type") = 0x00000008
getprop(0xffe1d580, "device_type", 0xffe02ce0, 8) = service getprop: 
argument count error (0 1)
8
0xffe02ce0  42 6f 6f 74 52 4f 4d 00 __ __ __ __ __ __ __ __  BootROM.
child(0xffe1d580) = 0xffe26c00
getproplen(0xffe26c00, "device_type") = 0xffffffffffffffff
child(0xffe26c00) = 0x00000000
peer(0xffe26c00) = 0x00000000
peer(0xffe1d580) = 0xffe1d838
getproplen(0xffe1d838, "device_type") = 0xffffffffffffffff
child(0xffe1d838) = 0x00000000
peer(0xffe1d838) = 0xffe1d918
getproplen(0xffe1d918, "device_type") = 0xffffffffffffffff
child(0xffe1d918) = 0x00000000
peer(0xffe1d918) = 0xffe1dab8
getproplen(0xffe1dab8, "device_type") = 0xffffffffffffffff
child(0xffe1dab8) = 0xffe1dbe0
getproplen(0xffe1dbe0, "device_type") = 0xffffffffffffffff
child(0xffe1dbe0) = 0x00000000
peer(0xffe1dbe0) = 0x00000000
peer(0xffe1dab8) = 0xffe266c8
getproplen(0xffe266c8, "device_type") = 0xffffffffffffffff
child(0xffe266c8) = 0xffe28498
getproplen(0xffe28498, "device_type") = 0xffffffffffffffff
child(0xffe28498) = 0x00000000
peer(0xffe28498) = 0xffe286e8
getproplen(0xffe286e8, "device_type") = 0xffffffffffffffff
child(0xffe286e8) = 0x00000000
peer(0xffe286e8) = 0xffe29de8
getproplen(0xffe29de8, "device_type") = 0xffffffffffffffff
child(0xffe29de8) = 0x00000000
peer(0xffe29de8) = 0xffe2a440
getproplen(0xffe2a440, "device_type") = 0xffffffffffffffff
child(0xffe2a440) = 0x00000000
peer(0xffe2a440) = 0xffe2aa68
getproplen(0xffe2aa68, "device_type") = 0xffffffffffffffff
child(0xffe2aa68) = 0x00000000
peer(0xffe2aa68) = 0xffe2ad28
getproplen(0xffe2ad28, "device_type") = 0xffffffffffffffff
child(0xffe2ad28) = 0x00000000
peer(0xffe2ad28) = 0xffe31268
getproplen(0xffe31268, "device_type") = 0xffffffffffffffff
child(0xffe31268) = 0x00000000
peer(0xffe31268) = 0xffe3a050
getproplen(0xffe3a050, "device_type") = 0xffffffffffffffff
child(0xffe3a050) = 0x00000000
peer(0xffe3a050) = 0x00000000
peer(0xffe266c8) = 0xffe290a0
getproplen(0xffe290a0, "device_type") = 0x00000007
getproplen(0xffe290a0, "device_type") = 0x00000007
getprop(0xffe290a0, "device_type", 0xffe02ce0, 7) = service getprop: 
argument count error (0 1)
7
0xffe02ce0  6d 65 6d 6f 72 79 00 __ __ __ __ __ __ __ __ __  memory.
child(0xffe290a0) = 0x00000000
peer(0xffe290a0) = 0xffe29200
getproplen(0xffe29200, "device_type") = 0xffffffffffffffff
child(0xffe29200) = 0x00000000
peer(0xffe29200) = 0xffe2ae88
getproplen(0xffe2ae88, "device_type") = 0x00000004
getproplen(0xffe2ae88, "device_type") = 0x00000004
getprop(0xffe2ae88, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  70 63 69 00 __ __ __ __ __ __ __ __ __ __ __ __  pci.
child(0xffe2ae88) = 0xffe2b728
getproplen(0xffe2b728, "device_type") = 0x00000004
getproplen(0xffe2b728, "device_type") = 0x00000004
getprop(0xffe2b728, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  70 63 69 00 __ __ __ __ __ __ __ __ __ __ __ __  pci.
child(0xffe2b728) = 0xffe2bdd0
getproplen(0xffe2bdd0, "device_type") = 0x00000004
getproplen(0xffe2bdd0, "device_type") = 0x00000004
getprop(0xffe2bdd0, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  70 63 69 00 __ __ __ __ __ __ __ __ __ __ __ __  pci.
child(0xffe2bdd0) = 0xffe2c450
getproplen(0xffe2c450, "device_type") = 0x00000008
getproplen(0xffe2c450, "device_type") = 0x00000008
getprop(0xffe2c450, "device_type", 0xffe02ce0, 8) = service getprop: 
argument count error (0 1)
8
0xffe02ce0  64 69 73 70 6c 61 79 00 __ __ __ __ __ __ __ __  display.
child(0xffe2c450) = 0x00000000
peer(0xffe2c450) = 0xffe2cc08
getproplen(0xffe2cc08, "device_type") = 0xffffffffffffffff
child(0xffe2cc08) = 0xffe2d250
getproplen(0xffe2d250, "device_type") = 0x00000006
getproplen(0xffe2d250, "device_type") = 0x00000006
getprop(0xffe2d250, "device_type", 0xffe02ce0, 6) = service getprop: 
argument count error (0 1)
6
0xffe02ce0  62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __  block.
child(0xffe2d250) = 0x00000000
peer(0xffe2d250) = 0xffe2d750
getproplen(0xffe2d750, "device_type") = 0x00000007
getproplen(0xffe2d750, "device_type") = 0x00000007
getprop(0xffe2d750, "device_type", 0xffe02ce0, 7) = service getprop: 
argument count error (0 1)
7
0xffe02ce0  73 65 72 69 61 6c 00 __ __ __ __ __ __ __ __ __  serial.
child(0xffe2d750) = 0x00000000
peer(0xffe2d750) = 0xffe2da50
getproplen(0xffe2da50, "device_type") = 0x00000007
getproplen(0xffe2da50, "device_type") = 0x00000007
getprop(0xffe2da50, "device_type", 0xffe02ce0, 7) = service getprop: 
argument count error (0 1)
7
0xffe02ce0  73 65 72 69 61 6c 00 __ __ __ __ __ __ __ __ __  serial.
child(0xffe2da50) = 0x00000000
peer(0xffe2da50) = 0x00000000
peer(0xffe2cc08) = 0xffe2dd80
getproplen(0xffe2dd80, "device_type") = 0x00000008
getproplen(0xffe2dd80, "device_type") = 0x00000008
getprop(0xffe2dd80, "device_type", 0xffe02ce0, 8) = service getprop: 
argument count error (0 1)
8
0xffe02ce0  6e 65 74 77 6f 72 6b 00 __ __ __ __ __ __ __ __  network.
child(0xffe2dd80) = 0x00000000
peer(0xffe2dd80) = 0xffe2e360
getproplen(0xffe2e360, "device_type") = 0x00000008
getproplen(0xffe2e360, "device_type") = 0x00000008
getprop(0xffe2e360, "device_type", 0xffe02ce0, 8) = service getprop: 
argument count error (0 1)
8
0xffe02ce0  70 63 69 2d 69 64 65 00 __ __ __ __ __ __ __ __  pci-ide.
child(0xffe2e360) = 0xffe2e950
getproplen(0xffe2e950, "device_type") = 0x00000004
getproplen(0xffe2e950, "device_type") = 0x00000004
getprop(0xffe2e950, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  69 64 65 00 __ __ __ __ __ __ __ __ __ __ __ __  ide.
child(0xffe2e950) = 0xffe2ec40
getproplen(0xffe2ec40, "device_type") = 0x00000006
getproplen(0xffe2ec40, "device_type") = 0x00000006
getprop(0xffe2ec40, "device_type", 0xffe02ce0, 6) = service getprop: 
argument count error (0 1)
6
0xffe02ce0  62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __  block.
child(0xffe2ec40) = 0x00000000
peer(0xffe2ec40) = 0x00000000
peer(0xffe2e950) = 0xffe2f290
getproplen(0xffe2f290, "device_type") = 0x00000004
getproplen(0xffe2f290, "device_type") = 0x00000004
getprop(0xffe2f290, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  69 64 65 00 __ __ __ __ __ __ __ __ __ __ __ __  ide.
child(0xffe2f290) = 0xffe2f580
getproplen(0xffe2f580, "device_type") = 0x00000006
getproplen(0xffe2f580, "device_type") = 0x00000006
getprop(0xffe2f580, "device_type", 0xffe02ce0, 6) = service getprop: 
argument count error (0 1)
6
0xffe02ce0  62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __  block.
child(0xffe2f580) = 0x00000000
peer(0xffe2f580) = 0x00000000
peer(0xffe2f290) = 0x00000000
peer(0xffe2e360) = 0x00000000
peer(0xffe2bdd0) = 0x00000000
peer(0xffe2b728) = 0x00000000
peer(0xffe2ae88) = 0xffe2fbd0
getproplen(0xffe2fbd0, "device_type") = 0x00000004
getproplen(0xffe2fbd0, "device_type") = 0x00000004
getprop(0xffe2fbd0, "device_type", 0xffe02ce0, 4) = service getprop: 
argument count error (0 1)
4
0xffe02ce0  63 70 75 00 __ __ __ __ __ __ __ __ __ __ __ __  cpu.
getproplen(0xffe2fbd0, "name") = 0x00000013
getproplen(0xffe2fbd0, "name") = 0x00000013
getprop(0xffe2fbd0, "name", 0x0181c770, 19) = service getprop: argument 
count error (0 1)
19
0x0181c770  53 55 4e 57 2c 55 6c 74 72 61 53 50 41 52 43 2d 
SUNW,UltraSPARC-
0x0181c780  49 49 00 __ __ __ __ __ __ __ __ __ __ __ __ __  II.
getproplen(0xffe2fbd0, "compatible") = 0xffffffffffffffff
parent(0xffe2fbd0) = 0xffe1d280
getproplen(0xffe1d280, "compatible") = 0x00000006
getproplen(0xffe1d280, "device_type") = 0xffffffffffffffff
getproplen(0xffe1d918, "whoami") = 0x00000024
getprop(0xffe1d918, "whoami", 0xffe02d50, 36) = service getprop: 
argument count error (0 1)
3
0xffe02d50  2f 70 6c __ __ __ __ __ __ __ __ __ __ __ __ __  /pl
getproplen(0xffe1d918, "bootfs") = 0x00000004
getprop(0xffe1d918, "bootfs", 0x01812588, 4) = service getprop: argument 
count error (0 1)
4
0x01812588  ff e4 7d e0 __ __ __ __ __ __ __ __ __ __ __ __  ��}�
getproplen(0xffe1d918, "archfs") = 0x00000004
getprop(0xffe1d918, "archfs", 0x0181258c, 4) = service getprop: argument 
count error (0 1)
4
0x0181258c  ff e6 ac b8 __ __ __ __ __ __ __ __ __ __ __ __  �欸
getproplen(0xffe1d918, "impl-arch-name") = 0x00000006
getprop(0xffe1d918, "impl-arch-name", 0xffe027c8, 6) = service getprop: 
argument count error (0 1)
0
of_client_interface: call-method 10baf58 ffe6acb8 35 1861508
call-method open-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 0
getproplen(0xffe1d918, "mmu") = 0x00000004
getproplen(0xffe1d918, "mmu") = 0x00000004
getprop(0xffe1d918, "mmu", 0x01821fac, 4) = service getprop: argument 
count error (0 1)
4
0x01821fac  ff e4 83 d8 __ __ __ __ __ __ __ __ __ __ __ __  ��.�
of_client_interface: call-method 10bb110 ffe483d8 0 2000 4c000000
call-method claim ([5] -- [2])
handle_calls return: 0 4c000000
getproplen(0xffe1d918, "memory") = 0x00000004
getproplen(0xffe1d918, "memory") = 0x00000004
getprop(0xffe1d918, "memory", 0x01821fa8, 4) = service getprop: argument 
count error (0 1)
4
0x01821fa8  ff e4 8e 58 __ __ __ __ __ __ __ __ __ __ __ __  ��.X
of_client_interface: call-method 10bb0a8 ffe48e58 8 2000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5700000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 2000 
4c000000 0 5700000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10bafa8 ffe6acb8 0
call-method cinfo-file ([3] -- [4])
handle_calls return: 0 0 1d2a8 2000
of_client_interface: call-method 10bb110 ffe483d8 0 2000 4c002000
call-method claim ([5] -- [2])
handle_calls return: 0 4c002000
of_client_interface: call-method 10bb0a8 ffe48e58 8 2000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5702000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 2000 
4c002000 0 5702000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10bafb8 ffe6acb8 0
call-method close-file ([3] -- [1])
handle_calls return: 0
of_client_interface: call-method 10baf58 ffe6acb8 26 1865998
call-method open-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 0
of_client_interface: call-method 10bafa8 ffe6acb8 0
call-method cinfo-file ([3] -- [4])
handle_calls return: 0 0 449508 2000
of_client_interface: call-method 10bb110 ffe483d8 0 2000 4c004000
call-method claim ([5] -- [2])
handle_calls return: 0 4c004000
of_client_interface: call-method 10bb0a8 ffe48e58 8 2000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5704000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 2000 
4c004000 0 5704000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10baf78 ffe6acb8 0 0
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 0
getproplen(0xffe1d918, "stdout") = 0x00000004
getproplen(0xffe1d918, "stdout") = 0x00000004
getprop(0xffe1d918, "stdout", 0x01821fa0, 4) = service getprop: argument 
count error (0 1)
4
0x01821fa0  ff e4 88 b0 __ __ __ __ __ __ __ __ __ __ __ __  ��.�
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 448000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 448000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 1508
of_client_interface: call-method 10baf78 ffe6acb8 0 0
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 0
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 2000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 2000
of_client_interface: call-method 10baf88 ffe6acb8 0 17e000 10c1310
call-method read-file ([5] -- [2])
handle_calls return: 0 17e000
of_client_interface: call-method 10baf78 ffe6acb8 0 180000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 180000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 182000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 182000
of_client_interface: call-method 10baf88 ffe6acb8 0 62000 1241310
call-method read-file ([5] -- [2])
handle_calls return: 0 62000
of_client_interface: call-method 10baf78 ffe6acb8 0 1e4000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 1e4000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 1e6000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 1e6000
of_client_interface: call-method 10baf88 ffe6acb8 0 10000 12a5310
call-method read-file ([5] -- [2])
handle_calls return: 0 10000
of_client_interface: call-method 10baf78 ffe6acb8 0 1f6000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 1f6000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 1f8000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 1f8000
of_client_interface: call-method 10baf88 ffe6acb8 0 e000 1867490
call-method read-file ([5] -- [2])
handle_calls return: 0 e000
of_client_interface: call-method 10baf78 ffe6acb8 0 206000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 206000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10bb110 ffe483d8 0 15c000 4c006000
call-method claim ([5] -- [2])
handle_calls return: 0 4c006000
of_client_interface: call-method 10bb0a8 ffe48e58 8 15c000
call-method claim ([4] -- [3])
handle_calls return: 0 0 6000000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 
15c000 4c006000 0 6000000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10baf78 ffe6acb8 0 29a000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 29a000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10baf78 ffe6acb8 0 29c000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 29c000
of_client_interface: call-method 10baf88 ffe6acb8 0 158000 4c006e38
call-method read-file ([5] -- [2])
handle_calls return: 0 158000
of_client_interface: call-method 10baf78 ffe6acb8 0 3f4000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 3f4000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10bb110 ffe483d8 0 2000 4c162000
call-method claim ([5] -- [2])
handle_calls return: 0 4c162000
of_client_interface: call-method 10bb0a8 ffe48e58 8 2000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5706000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 2000 
4c162000 0 5706000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10baf78 ffe6acb8 0 3f6000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 3f6000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10bb110 ffe483d8 0 e000 4c164000
call-method claim ([5] -- [2])
handle_calls return: 0 4c164000
of_client_interface: call-method 10bb0a8 ffe48e58 8 e000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5708000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff e000 
4c164000 0 5708000
call-method map ([7] -- [1])
handle_calls return: 0
of_client_interface: call-method 10baf78 ffe6acb8 0 3f8000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 3f8000
of_client_interface: call-method 10baf88 ffe6acb8 0 a000 4c164838
call-method read-file ([5] -- [2])
handle_calls return: 0 a000
of_client_interface: call-method 10baf78 ffe6acb8 0 402000
call-method seek-file ([4] -- [3])
handle_calls return: 0 ffffffffffffffff 402000
of_client_interface: call-method 10baf88 ffe6acb8 0 2000 4c004000
call-method read-file ([5] -- [2])
handle_calls return: 0 2000
of_client_interface: call-method 10bb110 ffe483d8 0 6a000 4c172000
call-method claim ([5] -- [2])
handle_calls return: 0 4c172000
of_client_interface: call-method 10bb0a8 ffe48e58 8 6a000
call-method claim ([4] -- [3])
handle_calls return: 0 0 5716000
of_client_interface: call-method 10bb108 ffe483d8 ffffffffffffffff 6a000 
4c172000 0 5716000
call-method map ([7] -- [1])
Unhandled Exception 0x582c01ed41000000
PC = 0x00000000ffd0e94c NPC = 0x00000000ffd0e950
Stopping execution


So looks like its possibly related to the MMU? What I do find 
interesting aswell is that the getprop CIF calls seem to throw argument 
count errors too...


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