On Wed, Apr 3, 2013 at 2:34 PM, Mark Cave-Ayland mark.cave-ayland@ilande.co.uk wrote:
On 03/04/13 13:14, Mark Cave-Ayland wrote:
Very interesting. That could actually be right for two reasons:
0x1000 is a multiple of page size
If you're not checking the return result, then what is the sense in
requesting the same allocation (va = 0) twice?
So yes, I'd definitely try adding some test code to check if va == 0, and if so, set align = size before calling ofmem_claim_virt().
Trivial patch attached - a quick test shows that it still boots my Solaris 8 CD here.
SunOS crashes at the same place as with your previous patch. (Which is probably a good sign).
There is one interesting thing when I try to boot kadb: OFMEM: ofmem_claim phys=ffffffffffffffff size=00001000 align=00001000 OFMEM: ofmem_claim_virt virt=00000000 size=00001000 align=00001000 OFMEM: ofmem_map_page_range ffc66000 -> 006f7a000 00001000 mode 000000bc ... OFMEM: ofmem_claim phys=ffffffffffffffff size=00002000 align=00002000 OFMEM: ofmem_claim_virt virt=ffc65000 size=00002000 align=00000000 OFMEM: Non-free virtual memory claimed! (and here it goes astray)
Does IEEE-1275 say something about this case?
-- Regards, Artyom Tarasenko
linux/sparc and solaris/sparc under qemu blog: http://tyom.blogspot.com/search/label/qemu