Re: [PATCH] x86_64: fix page table size

From: Ingo Molnar
Date: Thu Feb 07 2008 - 03:49:52 EST



* Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:

> > btw., it would be nice to have some "lots of RAM simulation"
> > debugging code which would just _fake_ a really large e820 map and
> > would in the end throw away the 'fake' pages later during bootup.
> > Perhaps tell the early allocator to never allocate into these fake
> > areas [via an struct e820 entry flag], but all our sizing code and
> > the boot bitmaps, etc. would be sized accordingly, as if we had this
> > much RAM - and we'd trigger these nuances. We could put this into a
> > new "fakemem=128GB" boot option and hence we could boot with
> > fakemem=128GB on a 2GB box and could at least hope to be able to
> > boot [with some serious amount of RAM wasted on over-sized
> > pagetables, allocator bitmaps and mem_map[]]. Hm?
>
> sound interesting. but need some variable to prevent using non exist
> page.

yeah, exactly. You could try into using the "PG_arch_1" struct page
->flags bit - it's not utilized on x86. That way we could avoid free-ing
it into the general page pool. We could check for it in
arch/x86/mm/init_64.c's online_page() function [that's where we release
most pages into the page pool].

Perhaps it might also be handy to introduce a page_is_fake_ram(addr)
method that searches the e820 maps for fake ram, to make sure we never
allocate such ranges.

Such a feature would be very useful.

Ingo
--
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/