UMA MD Small Allocator Runtime Switching

Nathan Whitehorn nwhitehorn at freebsd.org
Wed Aug 13 17:36:25 UTC 2008


John Baldwin wrote:
>
> [snipped bit about faking a direct map]
>> I thought about it, but we can only use 4K pages on the G5 so this would 
>> put a large amount of pressure on the page table. IBM removed the block 
>> translation mechanism from the G5 and the CPU's superpage support is not 
>> available in the 32-bit compatibility mode under which we currently run.
>>     
>
> Hmm, I didn't know you weren't running in full 64-bit mode.  Is that a 
> property of the G5 CPU that it only supports the 32-bit compat mode with 
> 64-bit extensions?
>   
No, it supports full 64-bit mode as well, and likes that much better. In 
fact, you have to do a fair bit of work to keep it in the compatibility 
mode: it switches to the full 64-bit mode whenever it takes a trap, for 
instance.

The initial porting target is the compatibility mode because (a) I'm 
lazy and didn't want to simultaneously do a brand new 64-bit port and 
deal with changes for the G5 and (b) it would be nice to have a single 
32-bit PPC install CD that works on all machines with 32-bit operating 
system support. It's the trying to avoid any #ifdef G5 that creates this 
problem with the UMA allocator.

I'm gotten this completely working using a bunch of dynamic switching 
stuff (I can boot multiuser and build world on both my G3 and G5 machine 
with the same kernel), but to do it I need to remove where it sets 
booted = 1 as an optimization when the MI UMA subsystem is initializing.
-Nathan



More information about the freebsd-arch mailing list