From: Christoph Lameter <clameter@sgi.com>
To: unlisted-recipients:; (no To-header on input)
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [10/17] Use GFP_VFALLBACK for sparsemem.
Date: Tue, 25 Sep 2007 16:42:14 -0700 [thread overview]
Message-ID: <20070925234251.517563592@sgi.com> (raw)
In-Reply-To: 20070925234204.546836393@sgi.com
[-- Attachment #1: vcompound_sparse_gfp_vfallback --]
[-- Type: text/plain, Size: 1471 bytes --]
Sparsemem currently attempts first to do a physically contiguous mapping
and then falls back to vmalloc. The same thing can now be accomplished
using GFP_VFALLBACK.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
---
mm/sparse.c | 23 +++--------------------
1 file changed, 3 insertions(+), 20 deletions(-)
Index: linux-2.6/mm/sparse.c
===================================================================
--- linux-2.6.orig/mm/sparse.c 2007-09-19 18:05:34.000000000 -0700
+++ linux-2.6/mm/sparse.c 2007-09-19 18:27:25.000000000 -0700
@@ -269,32 +269,15 @@ void __init sparse_init(void)
#ifdef CONFIG_MEMORY_HOTPLUG
static struct page *__kmalloc_section_memmap(unsigned long nr_pages)
{
- struct page *page, *ret;
unsigned long memmap_size = sizeof(struct page) * nr_pages;
- page = alloc_pages(GFP_KERNEL|__GFP_NOWARN, get_order(memmap_size));
- if (page)
- goto got_map_page;
-
- ret = vmalloc(memmap_size);
- if (ret)
- goto got_map_ptr;
-
- return NULL;
-got_map_page:
- ret = (struct page *)pfn_to_kaddr(page_to_pfn(page));
-got_map_ptr:
- memset(ret, 0, memmap_size);
-
- return ret;
+ return (struct page *)__get_free_pages(GFP_VFALLBACK,
+ get_order(memmap_size));
}
static void __kfree_section_memmap(struct page *memmap, unsigned long nr_pages)
{
- if (is_vmalloc_addr(memmap))
- vfree(memmap);
- else
- free_pages((unsigned long)memmap,
+ free_pages((unsigned long)memmap,
get_order(sizeof(struct page) * nr_pages));
}
--
next prev parent reply other threads:[~2007-09-25 23:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-25 23:42 [00/17] Virtual Compound Page Support V1 Christoph Lameter
2007-09-25 23:42 ` [01/17] Vmalloc: Move vmalloc_to_page to mm/vmalloc Christoph Lameter
2007-09-25 23:42 ` [02/17] vmalloc: add const Christoph Lameter
2007-09-25 23:42 ` [03/17] i386: Resolve dependency of asm-i386/pgtable.h on highmem.h Christoph Lameter
2007-09-25 23:42 ` [04/17] is_vmalloc_addr(): Check if an address is within the vmalloc boundaries Christoph Lameter
2007-09-25 23:42 ` [05/17] vmalloc: clean up page array indexing Christoph Lameter
2007-09-25 23:42 ` [06/17] vunmap: return page array passed on vmap() Christoph Lameter
2007-09-25 23:42 ` [07/17] vmalloc_address(): Determine vmalloc address from page struct Christoph Lameter
2007-09-25 23:42 ` [08/17] GFP_VFALLBACK: Allow fallback of compound pages to virtual mappings Christoph Lameter
2007-09-25 23:42 ` [09/17] VFALLBACK: Debugging aid Christoph Lameter
2007-09-25 23:42 ` Christoph Lameter [this message]
2007-09-25 23:42 ` [11/17] GFP_VFALLBACK for zone wait table Christoph Lameter
2007-09-25 23:42 ` [12/17] Virtual Compound page allocation from interrupt context Christoph Lameter
2007-09-25 23:42 ` [13/17] Virtual compound page freeing in " Christoph Lameter
2007-09-28 4:52 ` KAMEZAWA Hiroyuki
2007-09-28 17:35 ` Christoph Lameter
2007-09-28 23:58 ` KAMEZAWA Hiroyuki
2007-09-25 23:42 ` [14/17] Allow bit_waitqueue to wait on a bit in a vmalloc area Christoph Lameter
2007-09-25 23:42 ` [15/17] SLUB: Support virtual fallback via SLAB_VFALLBACK Christoph Lameter
2007-09-25 23:42 ` [16/17] Allow virtual fallback for buffer_heads Christoph Lameter
2007-09-25 23:42 ` [17/17] Allow virtual fallback for dentries Christoph Lameter
-- strict thread matches above, loose matches on Subject: below --
2007-09-19 3:36 [00/17] [RFC] Virtual Compound Page Support Christoph Lameter
2007-09-19 3:36 ` [10/17] Use GFP_VFALLBACK for sparsemem Christoph Lameter
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=20070925234251.517563592@sgi.com \
--to=clameter@sgi.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.