All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: akpm@linux-foundation.org
Cc: linux-mm@kvack.org, apw@shadowen.org
Subject: [06/11] sparsemem: Use virtualizable compound page
Date: Tue, 29 Apr 2008 21:42:57 -0700	[thread overview]
Message-ID: <20080430044320.303065251@sgi.com> (raw)
In-Reply-To: 20080430044251.266380837@sgi.com

[-- Attachment #1: vcp_sparsemem_fallback --]
[-- Type: text/plain, Size: 1920 bytes --]

Sparsemem currently attempts to allocate a physically contiguous memmap
and then falls back to vmalloc. The same can now be accomplished
using a request for a virtualizable compound pages.

Cc: apw@shadowen.org
Signed-off-by: Christoph Lameter <clameter@sgi.com>
---
 mm/sparse.c |   25 ++-----------------------
 1 file changed, 2 insertions(+), 23 deletions(-)

Index: linux-2.6/mm/sparse.c
===================================================================
--- linux-2.6.orig/mm/sparse.c	2008-04-29 16:50:39.761208362 -0700
+++ linux-2.6/mm/sparse.c	2008-04-29 17:07:42.773707952 -0700
@@ -383,24 +383,7 @@ static void free_map_bootmem(struct page
 #else
 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 __alloc_vcompound(GFP_KERNEL, get_order(memmap_size)));
 }
 
 static inline struct page *kmalloc_section_memmap(unsigned long pnum, int nid,
@@ -411,11 +394,7 @@ static inline struct page *kmalloc_secti
 
 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,
-			   get_order(sizeof(struct page) * nr_pages));
+	__free_vcompound(memmap);
 }
 
 static void free_map_bootmem(struct page *page, unsigned long nr_pages)

-- 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2008-04-30  4:42 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30  4:42 [00/11] Virtualizable Compound Page Support V5 Christoph Lameter
2008-04-30  4:42 ` [01/11] vmalloc: Return page array on vunmap Christoph Lameter
2008-04-30  4:42 ` [02/11] vcompound: pageflags: Add PageVcompound() Christoph Lameter
2008-04-30  4:42 ` [03/11] vmallocinfo: Support display of virtualized compound pages Christoph Lameter
2008-04-30  4:42 ` [04/11] vcompound: Core piece for virtualizable compound page allocation Christoph Lameter
2008-04-30  4:42 ` [05/11] vcompound: Debugging aid Christoph Lameter
2008-04-30  4:42 ` Christoph Lameter [this message]
2008-04-30  4:42 ` [07/11] vcompound: bit waitqueue support Christoph Lameter
2008-04-30  4:42 ` [08/11] crypto: Use virtualizable compounds for temporary order 2 allocation Christoph Lameter
2008-04-30  4:43 ` [09/11] slub: Use virtualizable compound for buffer Christoph Lameter
2008-04-30  4:43 ` [10/11] vcompound: Fallback for zone wait table Christoph Lameter
2008-04-30  4:43 ` [11/11] e1000: Avoid vmalloc through virtualizable compound page Christoph Lameter
2008-04-30  4:43   ` 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=20080430044320.303065251@sgi.com \
    --to=clameter@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=apw@shadowen.org \
    --cc=linux-mm@kvack.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.