From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: benh@kernel.crashing.org
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org
Subject: Re: [patch 3/3] arch_rebalance_pgtables call
Date: Wed, 14 Nov 2007 12:49:46 +0100 [thread overview]
Message-ID: <1195040986.9446.23.camel@localhost> (raw)
In-Reply-To: <1195034796.28865.36.camel@pasglop>
On Wed, 2007-11-14 at 21:06 +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2007-11-14 at 10:26 +0100, Martin Schwidefsky wrote:
> > That patch allows processes to have different number of page table
> > levels, 31 bit processes have 2 levels (2GB), normal 64 bit processes
> > have 3 levels (4TB) and really big 64 bit processes can have 4 levels
> > (8PB). The downgrade of a page table to use less levels than the
> > parent
> > process is done in arch_pick_mmap_layout. The upgrade is done by using
> > the arch_rebalance_pgtables call. I've considered using the
> > arch_get_unmapped_area but got scared by the indirection in
> > get_unmapped_area:
> >
> > get_area = current->mm->get_unmapped_area;
> > if (file && file->f_op && file->f_op->get_unmapped_area)
> > get_area = file->f_op->get_unmapped_area;
> > addr = get_area(file, addr, len, pgoff, flags);
>
> Don't be, it's really only hugetlb and other arch specific stuff that
> hook in here on platforms with an MMU (It's also used by /dev/mem etc...
> for mmu-less platforms but you don't care).
I find 8 places where a get_unmapped_area function pointer is used:
ipc/shm.c: shm_get_unmapped_area / shm_file_operations
drivers/char/mem.c: get_unmapped_area_mem / mem_fops & kmem_fops
drivers/video/fbmem.c: get_fb_unmapped_area / fb_fops
drivers/pci/proc.c: get_pci_unmapped_area / proc_bus_pci_operations
fs/hugetlbfs/inode.c: hugetlb_get_unmapped_area / hugetlbfs_file_operations
fs/bad_inode.c: bad_file_get_unmapped_area / bad_file_ops
fs/ramfs/file-nommu.c: ramfs_nommu_get_unmapped_area / ramfs_file_operations
arch/powerpc/platforms/cell/spufs/file.c:
spufs_get_unmapped_area / spufs_mem_fops
They all either have an arch override, call get_unmapped_area again or
are not relevant. So it should be possible to do the upgrade in
arch_get_unmapped_area. I still have my doubts though, all future uses
of the get_unmapped_area pointer have to be checked and I feel it is
easier to understand to do the upgrade / rebalance of the page table at
the end of get_unmapped_area where every caller of mmap is guaranteed to
pass through.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
next prev parent reply other threads:[~2007-11-14 11:49 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-12 14:30 [patch 0/3] page table changes schwidefsky
2007-11-12 14:30 ` [patch 1/3] add mm argument to pte/pmd/pud/pgd_free schwidefsky
2007-11-12 14:30 ` [patch 2/3] CONFIG_HIGHPTE vs. sub-page page tables schwidefsky
2008-01-02 20:44 ` Christoph Hellwig
2008-01-02 21:24 ` Geert Uytterhoeven
2008-01-02 21:28 ` Benjamin Herrenschmidt
2008-01-03 13:12 ` Andi Kleen
2008-01-03 14:01 ` Boaz Harrosh
2008-02-01 23:15 ` Andrew Morton
2008-02-01 23:15 ` Andrew Morton
2008-02-03 5:37 ` Benjamin Herrenschmidt
2008-02-03 5:53 ` Andrew Morton
2008-02-03 6:46 ` Ingo Molnar
2008-02-04 10:36 ` Martin Schwidefsky
2008-02-04 10:51 ` Andrew Morton
2008-02-04 11:02 ` Russell King
2008-02-04 11:14 ` Andrew Morton
2008-02-05 14:39 ` Martin Schwidefsky
2008-02-05 18:46 ` Andrew Morton
2008-02-06 9:06 ` Martin Schwidefsky
2008-02-06 9:09 ` Andrew Morton
2008-02-06 9:15 ` Ingo Molnar
2008-02-06 15:50 ` Martin Schwidefsky
2007-11-12 14:30 ` [patch 3/3] arch_rebalance_pgtables call schwidefsky
2007-11-13 12:33 ` Nick Piggin
2007-11-14 9:26 ` Martin Schwidefsky
2007-11-14 10:06 ` Benjamin Herrenschmidt
2007-11-14 11:49 ` Martin Schwidefsky [this message]
2007-11-14 22:07 ` Benjamin Herrenschmidt
2007-11-15 17:13 ` Martin Schwidefsky
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=1195040986.9446.23.camel@localhost \
--to=schwidefsky@de.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
/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.