[OpenBIOS] OpenSolaris starts to live on SPARC64

Artyom Tarasenko atar4qemu at googlemail.com
Tue Apr 6 01:11:49 CEST 2010


2010/4/5 Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>:
> Mark Cave-Ayland wrote:
>
>>> Unmodified Solaris 2.6 doesn't get this far, I guess due to the 80
>>> chars limitation. Will check the patched version later.
>>
>> Hmmmm this looks more promising. If you compile with DEBUG_CIF enabled in
>> libopenbios/client.c and try again then you can see all the calls into
>> OpenBIOS, and hence the device nodes and properties that are being accessed.
>> This will probably tell you why you are getting the null path error. It's
>> interesting to note that type 0x5 is an a.out as opposed to an ELF binary.
>
> Actually, I was totally wrong. SPARC32 uses the romvec interface, so instead
> have a look at compiling with CONFIG_DEBUG_OBP set in arch/sparc32/romvec.c
> to see what the client is trying to do.

ok, 2.6 confirms that there is a problem with 80 characters limit:
...

obp_devread(fd 0xffd9e740, buf 0xe110, nbytes 8192) = 8192
obp_devseek(fd 0xffd9e740, hi 0, lo 15065088) = 0
obp_devread(fd 0xffd9e740, buf 0xe110, nbytes 8192) = 8192
obp_devclose(0xffd9e740) = 1
obp_fortheval_v2( ['] find-device catch if 2drop true else
current-device device-end then swap l!)
Unhandled Exception 0x00000007
PC = 0xffd05580 NPC = 0xffd05024
Stopping execution

2.5.1 :

obp_devread(fd 0xffd9eb94, buf 0xf00a0778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275275776) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00a2778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275283968) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00a4778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275292160) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00a6778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275316736) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00a8778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275324928) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00aa778, nbytes 8192) = 8192
obp_devseek(fd 0xffd9eb94, hi 0, lo 275333120) = 0
obp_devread(fd 0xffd9eb94, buf 0xf00ac778, nbytes 8192) = 8192

And then it just hangs. I don't see the "krtld: error during initial
load/link phase" message.

-- 
Regards,
Artyom Tarasenko

solaris/sparc under qemu blog: http://tyom.blogspot.com/



More information about the OpenBIOS mailing list