Am 24.05.2010 um 18:57 schrieb Mark Cave-Ayland:
Andreas Färber wrote:
The question is, why does claim overwrite the 0x07ed0000 identity map of length 1245184, that I see [...] in my debug output now, with a 0x07f00000 map when using the vanilla OpenBIOS code?
What is the identity map? Is it something used in general for PPC or is it specific to Haiku?
Maybe I misworded, I meant an identity-mapped memory translation, i.e. physical and virtual address identical. Nothing ppc or Haiku specific.
Map before claim (vanilla): ... 0x07ed0000 -> 0x07ed0000 (1245184) ...
Map after claim (vanilla): ... [0x07ed0000..0x07f00000 no longer mapped!] 0x07f00000 -> 0x07f00000 (1048576) ...
Expected map after claim: ... 0x07d00000 -> 0x07d00000 (1048576) -- or wherever it fits [0x07ed0000..0x07f00000 possibly mapped] 0x07f00000 -> 0x07f00000 (1048576) -- OpenBIOS ...
Two bugs IMO: a) The map is shortened. b) OpenBIOS memory is reused. The latter made Haiku/OpenBIOS hang.
Also if you enable DEBUG_CIF in libopenbios/client.c, do you see any more useful information?
I enabled CONFIG_DEBUG_OFMEM; the Haiku code will be calling ofmem_claim(NULL, 1048576, 1048576) in case of default -m 128. Whatever exactly the problem is, it must be between the ofmem implementation and its users inside OpenBIOS.
Andreas