All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
	Zachary Amsden <zach@vmware.com>,
	Chris Wright <chrisw@sous-sol.org>, Andi Kleen <ak@suse.de>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Linus Torvalds <torvalds@osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Crash while mapping memory in pagetable_init() (Was: Re: .config)
Date: Fri, 13 Apr 2007 13:37:31 -0700	[thread overview]
Message-ID: <461FEA0B.40700@zytor.com> (raw)
In-Reply-To: <461FE8EC.3090304@zytor.com>

H. Peter Anvin wrote:
> Jeremy Fitzhardinge wrote:
>> H. Peter Anvin wrote:
>>> Really (pae ? 2M : 1M), in other words, plus the 128K for bootmem. 
>>> Note that this is creating page tables for, not erasing.  To map 2M,
>>> we will only use 2K of additional memory (meaning there is 50% chance
>>> we end up using an additional 4K page.)
>>>
>>> So the solution is simply to change INIT_MAP_BEYOND_END in head.S
>>> appropriately.
>> Like this?  Should we bother adding some slop pages for allocations
>> which happen before paging_init()?
> 
> Yes, although it really should be sensitive to CONFIG_X86_PAE.
> 
>>  
>>  /*
>>   * This is how much memory *in addition to the memory covered up to
>> - * and including _end* we need mapped initially.  We need one bit for
>> - * each possible page, but only in low memory, which means
>> - * 2^32/4096/8 = 128K worst case (4G/4G split.)
>> + * and including _end* we need mapped initially.
>> + * We need:
>> + *  - one bit for each possible page, but only in low memory, which 
>> means
>> + *     2^32/4096/8 = 128K worst case (4G/4G split.)
>> + *  - enough space to map all low memory, which means
>> + *     (2^32/4096) / 512 + 4 pages (worst case for PAE)
>>   *
>>   * Modulo rounding, each megabyte assigned here requires a kilobyte of
>>   * memory, which is currently unreclaimed.
>>   *
>>   * This should be a multiple of a page.
>>   */
>> -#define INIT_MAP_BEYOND_END    (128*1024)
>> +#define INIT_MAP_BEYOND_END    (128*1024 + (2048 + 4)*4096)
> 
> I suggest, for clarity and to minimize bloat:
> 
> #ifdef CONFIG_X86_PAE
> # define PAGE_TABLE_SIZE    ((2048+4)*4096)
> #else
> # define PAGE_TABLE_SIZE    ((1024+1)*4096)
> #endif
> 
> #define BOOTMEM_SIZE        (128*1024)
> 
> #define INIT_MAP_BEYOND_END    (BOOTMEM_SIZE+PAGE_TABLE_SIZE)
> 

Actually, better yet; there is no reason for these to be macros:

#ifdef CONFIG_X86_PAE
PAGE_TABLE_SIZE = (2048+4)*4096
#else
PAGE_TABLE_SIZE = (1024+1)*4096
#endif
BOOTMEM_SIZE = 128*1024

INIT_MAP_BEYOND_END = BOOTMEM_SIZE + PAGE_TABLE_SIZE

	-hpa


  parent reply	other threads:[~2007-04-13 20:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070413174913.GA25234@ezr.goop.org>
     [not found] ` <20070413183841.GP10574@sequoia.sous-sol.org>
     [not found]   ` <20070413190552.GQ10574@sequoia.sous-sol.org>
     [not found]     ` <461FD97B.1010203@goop.org>
2007-04-13 20:09       ` Crash while mapping memory in pagetable_init() (Was: Re: .config) Zachary Amsden
2007-04-13 20:12         ` Jeremy Fitzhardinge
2007-04-13 20:26         ` H. Peter Anvin
2007-04-13 20:27           ` Jeremy Fitzhardinge
2007-04-13 20:32             ` H. Peter Anvin
2007-04-13 20:36               ` Jeremy Fitzhardinge
2007-04-13 20:42                 ` H. Peter Anvin
2007-04-13 21:05                   ` Jeremy Fitzhardinge
2007-04-13 21:12                     ` H. Peter Anvin
2007-04-14  0:10                     ` Chris Wright
2007-04-13 20:37               ` H. Peter Anvin [this message]
2007-04-13 21:07                 ` Zachary Amsden

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=461FEA0B.40700@zytor.com \
    --to=hpa@zytor.com \
    --cc=ak@suse.de \
    --cc=chrisw@sous-sol.org \
    --cc=ebiederm@xmission.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    --cc=zach@vmware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.