[OpenBIOS] Haiku/ppc regression?

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Fri May 21 10:00:26 CEST 2010


Andreas Färber wrote:

> I've dug some more and noticed that the data parsed from 
> /chosen/mmu/translations seems wrong:
> 
> 0: map: 0x00000000, length 16384 -> physical: 0x00000000, mode 132972544
> 1: map: 0x00030000, length 0 -> physical: 0x07f00000, mode 1048576
> 2: map: 0x00000002, length -2147483648 -> physical: 0x000eb000, mode 106
> 
> Note the weird mode and subsequent values. It looks as if Haiku expects 
> (and gets on real OpenFirmware):
> void *virtual_address
> int length
> void *physical_address
> int mode
> whereas OpenBIOS writes in 
> libopenbios/ofmem_common.c:ofmem_update_mmu_translations:
> props[ncells++] = t->virt
> props[ncells++] = t->size
> props[ncells++] = t->mode
> 
> Should this be changed as follows, or is this platform-dependent?

Hmmm that's interesting. According to the OpenSolaris kernel source the 
translations property is mapped to the following struct:

http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/sun4v/sys/prom_plat.h

struct translation {
  	uint32_t virt_hi;	/* upper 32 bits of vaddr */
  	uint32_t virt_lo;	/* lower 32 bits of vaddr */
  	uint32_t size_hi;	/* upper 32 bits of size in bytes */
  	uint32_t size_lo;	/* lower 32 bits of size in bytes */
  	uint32_t tte_hi;	/* higher 32 bites of tte */
  	uint32_t tte_lo;	/* lower 32 bits of tte */
};

And in Haiku:

http://dev.haiku-os.org/browser/haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp
	
struct translation_map {
         void    *virtual_address;
         int     length;
         void    *physical_address;
         int     mode;
} translations[64];


So in short, it does indeed look as if there are some platform 
differences here. I guess this extra field is based upon the Mac OF 
implementation so it would be good for someone to verify this on a real 
Mac before we go and hack the source for PPC-only hosts. Note that I 
can't see any references to the translations property in the OF spec so 
I guess it must be an extension.


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