LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
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:50 UTC|newest]
Thread overview: 29+ 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-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 \
--subject='Re: [patch 3/3] arch_rebalance_pgtables call' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).