2006-12-01 03:49:25

by Shaohua Li

[permalink] [raw]
Subject: [patch]VMSPLIT_2G conflicts with PAE

PAGE_OFFSET is 0x78000000 with VMSPLIT_2G, this address is in the middle
of the second pgd entry with pae enabled. This breaks assumptions
(address is aligned to pgd entry's address) in a lot of places like
pagetable_init. Fixing the assumptions is hard (eg, low mapping). SO I
just changed the address to 0x80000000.

Signed-off-by: Shaohua Li <[email protected]>

diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 8ff1c6f..fddfb26 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -532,7 +532,7 @@ endchoice
config PAGE_OFFSET
hex
default 0xB0000000 if VMSPLIT_3G_OPT
- default 0x78000000 if VMSPLIT_2G
+ default 0x80000000 if VMSPLIT_2G
default 0x40000000 if VMSPLIT_1G
default 0xC0000000


2006-12-01 07:55:59

by Jens Axboe

[permalink] [raw]
Subject: Re: [patch]VMSPLIT_2G conflicts with PAE

On Fri, Dec 01 2006, Shaohua Li wrote:
> PAGE_OFFSET is 0x78000000 with VMSPLIT_2G, this address is in the middle
> of the second pgd entry with pae enabled. This breaks assumptions
> (address is aligned to pgd entry's address) in a lot of places like
> pagetable_init. Fixing the assumptions is hard (eg, low mapping). SO I
> just changed the address to 0x80000000.
>
> Signed-off-by: Shaohua Li <[email protected]>
>
> diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
> index 8ff1c6f..fddfb26 100644
> --- a/arch/i386/Kconfig
> +++ b/arch/i386/Kconfig
> @@ -532,7 +532,7 @@ endchoice
> config PAGE_OFFSET
> hex
> default 0xB0000000 if VMSPLIT_3G_OPT
> - default 0x78000000 if VMSPLIT_2G
> + default 0x80000000 if VMSPLIT_2G
> default 0x40000000 if VMSPLIT_1G
> default 0xC0000000

0x78000000 was chosen since it gives you the full 2G as low memory, if
you mave it 0x80000000 then you still have a little highmem and need
that turned on.

--
Jens Axboe

2006-12-01 08:34:57

by Shaohua Li

[permalink] [raw]
Subject: Re: [patch]VMSPLIT_2G conflicts with PAE

On Fri, 2006-12-01 at 08:55 +0100, Jens Axboe wrote:
> On Fri, Dec 01 2006, Shaohua Li wrote:
> > PAGE_OFFSET is 0x78000000 with VMSPLIT_2G, this address is in the middle
> > of the second pgd entry with pae enabled. This breaks assumptions
> > (address is aligned to pgd entry's address) in a lot of places like
> > pagetable_init. Fixing the assumptions is hard (eg, low mapping). SO I
> > just changed the address to 0x80000000.
> >
> > Signed-off-by: Shaohua Li <[email protected]>
> >
> > diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
> > index 8ff1c6f..fddfb26 100644
> > --- a/arch/i386/Kconfig
> > +++ b/arch/i386/Kconfig
> > @@ -532,7 +532,7 @@ endchoice
> > config PAGE_OFFSET
> > hex
> > default 0xB0000000 if VMSPLIT_3G_OPT
> > - default 0x78000000 if VMSPLIT_2G
> > + default 0x80000000 if VMSPLIT_2G
> > default 0x40000000 if VMSPLIT_1G
> > default 0xC0000000
>
> 0x78000000 was chosen since it gives you the full 2G as low memory, if
> you mave it 0x80000000 then you still have a little highmem and need
> that turned on.
Ok, Maybe the x86 relocatable patch (it seems removed the low identity
mapping) can help here. With it, we just need to fix pagetable_init.

Thanks,
Shaohua

2006-12-02 16:38:37

by Pavel Machek

[permalink] [raw]
Subject: Re: [patch]VMSPLIT_2G conflicts with PAE

Hi!

> PAGE_OFFSET is 0x78000000 with VMSPLIT_2G, this address is in the middle
> of the second pgd entry with pae enabled. This breaks assumptions
> (address is aligned to pgd entry's address) in a lot of places like
> pagetable_init. Fixing the assumptions is hard (eg, low mapping). SO I
> just changed the address to 0x80000000.
>
> Signed-off-by: Shaohua Li <[email protected]>
>
> diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
> index 8ff1c6f..fddfb26 100644
> --- a/arch/i386/Kconfig
> +++ b/arch/i386/Kconfig
> @@ -532,7 +532,7 @@ endchoice
> config PAGE_OFFSET
> hex
> default 0xB0000000 if VMSPLIT_3G_OPT
> - default 0x78000000 if VMSPLIT_2G
> + default 0x80000000 if VMSPLIT_2G
> default 0x40000000 if VMSPLIT_1G
> default 0xC0000000

Do we allow user entering arbitrary value here? In any case, it would
be nice to document alignment requirements of this one, because
otherwise someone *will* get it wrong.

--
Thanks for all the (sleeping) penguins.

2006-12-02 18:55:16

by Jan Engelhardt

[permalink] [raw]
Subject: Re: [patch]VMSPLIT_2G conflicts with PAE


>> PAGE_OFFSET is 0x78000000 with VMSPLIT_2G, this address is in the middle
>> of the second pgd entry with pae enabled. This breaks assumptions
>> (address is aligned to pgd entry's address) in a lot of places like
>> pagetable_init. Fixing the assumptions is hard (eg, low mapping). SO I
>> just changed the address to 0x80000000.
>
>Do we allow user entering arbitrary value here? In any case, it would
>be nice to document alignment requirements of this one, because
>otherwise someone *will* get it wrong.

There was a reason 0x78000000 was chosen
http://marc.theaimsgroup.com/?l=linux-kernel&m=113690073801820&w=2

Though further back in
http://marc.theaimsgroup.com/?l=linux-kernel&m=113689790817521&w=2
0x80000000 was indeed posted.


-`J'
--