public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk@arm.linux.org.uk>
To: Paul Mackerras <paulus@samba.org>
Cc: Andrew Morton <akpm@zip.com.au>,
	torvalds@transmeta.com, linux-kernel@vger.kernel.org
Subject: Re: page table page->index
Date: Tue, 30 Jul 2002 13:11:42 +0100	[thread overview]
Message-ID: <20020730131142.A6809@flint.arm.linux.org.uk> (raw)
In-Reply-To: <15684.52231.710183.242098@argo.ozlabs.ibm.com>; from paulus@samba.org on Mon, Jul 29, 2002 at 03:00:55PM +1000

On Mon, Jul 29, 2002 at 03:00:55PM +1000, Paul Mackerras wrote:
> Is this a problem in practice?  On i386, ppc, and the 64-bit
> architectures it isn't since user addresses can't go anywhere near
> ~0UL, but what about arm or m68k for instance?

Ok, let me provide a description of the virtual address space we have for
Linux on ARM CPUs:

 +----------------------+ <=== 4GB
 | "remapped" stuff [2] |
 +----------------------+ <=== 4GB - 64K
 |  static mapped MMIO  |
 +----------------------+ <=== (sub-architecture defined limit [3])
 |       ioremap,       |
 |       modules,       |
 | pci_alloc_consistent |
 |         heap         |
 +----------------------+
 | kernel direct mapped |
 |     ram & kernel     |
 +----------------------+ <=== (normally 3GB, may be as low as 1GB)
 |                      |
 /         User         /
 /                      /
 |                      |
 +----------------------+ <=== 4K
 |   CPU vectors [1]    |
 +----------------------+ <=== 0K

[1] CPU vectors are fixed at virtual address 0 on many CPUs.  However,
    later CPUs support an alternative virtual address of 4GB-64K

[2] This area is split into two areas; the top 32K is available for
    CPU implementation specific optimisations (eg, remapping pages
    for copy_user_page, clear_user_page).  The lower 32K is for
    alternate CPU vectors, and "generic" ARM kernel use (maybe
    remapping page tables for uncached access.)

[3] This is normally around 3.5GB or 3.75GB.

As far as Linux 2.5 is concerned, a pgd entry maps 2MB (the hardware
PGD maps 1MB, but to make rmap and 2nd level page table stuff simple,
we group two hardware pgd entries together to make one Linux pgd entry.)

So, to answer your question, remap_page_range shouldn't go anywhere
near the top-most PGD entry, so wrap around shouldn't be a problem
on ARM.

-- 
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


      reply	other threads:[~2002-07-30 12:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-29  5:00 page table page->index Paul Mackerras
2002-07-30 12:11 ` Russell King [this message]

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=20020730131142.A6809@flint.arm.linux.org.uk \
    --to=rmk@arm.linux.org.uk \
    --cc=akpm@zip.com.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulus@samba.org \
    --cc=torvalds@transmeta.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox