[OpenBIOS] Booting SunOS from OpenBIOS

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Wed Apr 3 10:31:10 CEST 2013


On 03/04/13 08:02, Artyom Tarasenko wrote:

>> Per IEEE 1275, 6.3.2.4, the claim method is supposed to entirely ignore the
>> virtual address if you provide an alignment. With a non-zero alignment, it's
>> supposed to allocate from a pool of its own address space.
>
> Thanks, this is a good starting point. Can you give some comments to an
> OpenSolaris comment below?
> http://fxr.watson.org/fxr/source/sun/sys/promif.h?v=OPENSOLARIS#L79
>
>   /*
>   * resource allocation group: OBP and IEEE 1275-1994.
>   * prom_alloc is platform dependent on SPARC.
>   */
>
> What is exactly platform dependent?

While the above is true for the IEEE 1275 claim word, there is 
definitely a different behaviour for the old romvec memalloc() method. 
Bear in mind that the parameters look like this in gdb:

Breakpoint 1, obp_memalloc (va=0xf0040000 <Address 0xf0040000 out of 
bounds>, size=262144, align=262144) at 
/home/build/src/openbios/openbios-git/openbios-devel/arch/sparc32/lib.c:273

However if we pass the align parameter to the virtual allocator too, as 
per my suggestion, the boot loader then blows up with the following message:

Alloc of 0x40000 bytes at 0xf0040000 refused.

So the old romvec routines clearly expect the specified virtual address 
to be allocated, even if an align parameter is passed. Currently we 
assume that this is just a physical alignment, so any clarification on 
this behaviour would be quite useful.

Of course we'll know a lot more if you can post the debug output 
requested in my previous email :)


ATB,

Mark.



More information about the OpenBIOS mailing list