[OpenBIOS] Solaris 8 - fun with CPUs :)

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Tue Apr 19 00:15:54 CEST 2011


On 18/04/11 17:00, Mark Cave-Ayland wrote:

> A quick watchpoint later showed that this is in fact controlled by the
> presence of a zero-length attribute called "aligned-allocator" under
> /openprom. Since this property appears in the sample prtconf output,
> then it suggests that this code path is triggered by OBP. Rather
> bizarrely, if I add this property to OpenBIOS then kadb crashes further
> down the line - BUT if I simply use gdb to make kadb think the property
> is present by changing the relevant register within gdb then I am able
> to load kadb?!
>
> I think I'm probably about 90% there when it comes to getting kadb up
> and running under OpenBIOS, but I still need to figure out why just
> adding the missing property isn't enough here.

Okay - so it looks like I win the prize for discovering a new romvec 
entry point :)  When the /openprom/aligned-allocator property exists 
with zero length, kadb somehow manages to get ufsboot to jump to a 
different offset within the romvec parameter block. Tracing the offset 
through gdb shows that it is trying to jump to the function pointer at 
this location in openprom.h:

int filler[15];

Hmmm. Since this was set to NULL, it was causing kadb to trap when 
trying to allocate memory from OpenBIOS. Anyhow the parameters look 
pretty much like obp_dumb_memalloc() except with an extra parameter 
probably giving the alignment. So with a quick patch I can now fire up 
kadb like this:


Configuration device id QEMU version 1 machine id 32
CPUs: 1 x FMI,MB86904
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.0 built on Apr 18 2011 21:08
   Type 'help' for detailed information

0 > boot cdrom:d kadb -kvd Not a bootable ELF image
Loading a.out image...
Loaded 7680 bytes
entry point is 0x4000
bootpath: /iommu/sbus/espdma/esp/sd at 2,0:d

Jumping to entry point 00004000 for type 00000005...
switching to new context:
Size: 119204+222573+28987 Bytes
kadb:
kadb: kernel/unix
Size: 259040+54154+47486 Bytes
/platform/SUNW,SPARCstation-5/kernel/unix loaded - 0x95000 bytes used
kadb[0]: :c
stopped at:
scb:            sethi   %hi(0xf0041000), %l3
kadb[0]: :c
SunOS Release 5.8 Version Generic_108528-09 32-bit
Copyright 1983-2001 Sun Microsystems, Inc.  All rights reserved.
\


Alas unfortunately I have no idea what this new mystery function is 
called, so if anyone can come up with a more suitable name please let me 
know.


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