[haiku-commits] Re: r37068 - haiku/trunk/src/system/kernel/arch/x86

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 09 Jun 2010 12:10:45 +0200

On 2010-06-09 at 08:35:50 [+0200], Stefano Ceccherini 
<stefano.ceccherini@xxxxxxxxx> wrote:
> 2010/6/8  <ingo_weinhold@xxxxxx>:
> > Author: bonefish
> > Date: 2010-06-08 23:43:19 +0200 (Tue, 08 Jun 2010)
> > New Revision: 37068
> > Changeset: http://dev.haiku-os.org/changeset/37068/haiku
> >
> > Modified:
> >   haiku/trunk/src/system/kernel/arch/x86/arch_vm_translation_map.cpp
> > Log:
> > Only use PAE, if supported by the CPU.
> >
> 
> Will PAE be available also on 32-bit haiku ?

In fact only there. PAE is a x86 (IA32) feature. x86_64 paging uses 
somewhat similar structures, but is still different (and called 
differently).

> I know it has some overhead, but AFAIK it's necessary if you want to
> use the no-execute capabilities.

Well, when Haiku gets to the point where we actually start making it more 
secure there probably won't be any non 64 bit machines around anymore. ;-)

Anyway, to be able to use PAE Haiku has to be built with 64 bit physical 
addresses (__HAIKU_ARCH_PHYSICAL_BITS = 64 in <config/HaikuConfig.h>), 
which ATM breaks binary compatibility of the kernel -- 
map_physical_memory() and get_memory_map() are affected. That's easily 
solved for the former, but the latter returns only 32 bit physical 
addresses and there's nothing that can be done when the address to return 
is actually wider.

Drivers in our repository can be adjusted, of course, and, from what I've 
seen, quite a few have to be. I've also seen that some hardware only seems 
to support 32 bit physical addresses, which also has to be dealt with 
somehow. These are tasks necessary for the x86_64 as well, BTW.

So, to sum it up, although I'll probably have implemented PAE support in a 
few days, I'm afraid we can't enable it or even just build it in by default 
anytime soon.

CU, Ingo

Other related posts: