Re: 2.4.25-rc1: BUG: wrong zone alignment, it will crash

From: Michael Frank
Date: Fri Feb 06 2004 - 13:39:21 EST


On Saturday 07 February 2004 01:07, Randy.Dunlap wrote:
> On Sat, 7 Feb 2004 00:46:31 +0800 Michael Frank <mhf@xxxxxxxxxxxxx> wrote:
>
> | On Friday 06 February 2004 23:36, Rik van Riel wrote:
> | > On Fri, 6 Feb 2004, Michael Frank wrote:
> | >
> | > > > > 300MB HIGHMEM available.
> | > > > > 195MB LOWMEM available.
> | > > > > On node 0 totalpages: 126960
> | > > > > zone(0): 4096 pages.
> | > > > > zone(1): 46064 pages.
> | > > > > zone(2): 76800 pages.
> | > > > > BUG: wrong zone alignment, it will crash
> | >
> | > > It is supposed to work, just a bug in the zone alignment code.
> | >
> | > The error isn't in the kernel, it's between the chair and the keyboard.
> | > You have created a lowmem zone of a size that doesn't correctly
> | > align with the largest blocks used by the buddy allocator.
> | >
> | > > I have have to use HIGHMEM emulation for testing.
> | >
> | > Then you'll need to choose a different size for the highmem=
> | > parameter, one that doesn't cause an unaligned boundary.
> |
> | Which is not user friendly and does not match the documentation.
>
> Interesting boot option... but what doc. are you referring to?

Line 863 of 2.4.2[45]/arch/i386/setup.c

/*
* highmem=size forces highmem to be exactly 'size' bytes.
* This works even on boxes that have no highmem otherwise.
* This also works to reduce highmem size on bigger boxes.
*/
else if (!memcmp(from, "highmem=", 8))
highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT;

>
>
> | > Alternatively, you could submit a patch so the highmem= boot
> | > option parsing code does the aligning for you.
> |
> | OK, will do. I'll produce and test a patch.
>
> Please include an update to Documentation/kernel-parameters.txt .

Sure.

>
> | > However, that would simply be an improvement to the kernel and
> | > nothing like a bug you can demand to get fixed now.
> |
> | OK, Please note that I only passed on the message produced by the kernel
> | BUG: wrong zone alignment, it will crash
> |
> | Perhaps the kernel should have reported it as "Invalid value for highmem"
> | instead of "BUG" ;)
>
> How does this option work? Does it just fake highmem_pages of
> low memory as being in high memory?

Sort of, it maps some pages into highmem zone instead of lowmem zone.

Regards
Michael

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/