Re: sparsemem panic in 2.6.17-rc5-mm1 and -mm2

Andrew Morton
2006-06-07T05:50:43Z

On Wed, 07 Jun 2006 15:36:25 +1000
Rusty Russell <rusty@rustcorp.com.au> wrote:

> On Tue, 2006-06-06 at 21:58 -0700, Andrew Morton wrote:
> > On Wed, 7 Jun 2006 09:43:55 +0900
> > KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
> >
> > > On Tue, 6 Jun 2006 00:27:58 -0700
> > > Andrew Morton <akpm@osdl.org> wrote:
> > >
> > > >
> > > > I tried sparsemem on my little x86 box here. Boots OK, after fixing up the
> > > > kswapd_init() patch (below).
> > > >
> > > > I'm wondering why I have 4k of highmem:
> > > >
> > >
> > > Could you show /proc/iomem of your 4k HIGHMEM box ?
> > > Does 4k HIGHMEM exist only when SPARSEMEM is selected ?
> >
> > Turns out that my 4 kbyte highmem zone (at least, as reported in
> > /proc/meminfo) is due to
> >
> > vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma.patch
>
> Thanks for this report, Andrew!
>
> Yes, MAXMEM is reduced by one page in the patch, taking into account
> that kernel memory tops out at __FIXADDR_TOP, not 0xFFFFFFFF. AFAICT
> this is in fact a bugfix, which becomes more important when
> __FIXADDR_TOP can be moved to create a larger memory hole (as for
> hypervisors).
>
> You now have 1 page more memory available in your system.

The kernel has differing opinions about that:

BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000038000000 (usable)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
896MB LOWMEM available.

> Use it
> wisely.

> I'm sure Gerd will slap me if I'm wrong on this. Here's the patch
> fragment:
>
> -#define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)
> +#define MAXMEM (__FIXADDR_TOP-__PAGE_OFFSET-__VMALLOC_RESERVE)

Well. Applying this with `patch -R' would presumably restore the situation.
But not having a clue why this change was made, I didn't bother trying it.

>From what you're saying, it appears that this patch is an unrelated change,
to fix the off-by-one? And that if this machine had anything other than
exactly 7*128MB of physical memory, I wouldn't have noticed?