Sparsemem currently attempts to do a physically contiguous mapping and then falls back to vmalloc. The same thing can now be accomplished using virtual 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.25-rc5-mm1/mm/sparse.c =================================================================== --- linux-2.6.25-rc5-mm1.orig/mm/sparse.c 2008-03-20 18:04:45.345133447 -0700 +++ linux-2.6.25-rc5-mm1/mm/sparse.c 2008-03-20 19:32:53.361317058 -0700 @@ -327,24 +327,7 @@ static void __kfree_section_memmap(struc #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, @@ -355,11 +338,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); } #endif /* CONFIG_SPARSEMEM_VMEMMAP */ -- --
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Con Kolivas | Re: [ANNOUNCE] RSDL completely fair starvation free interactive cpu scheduler |
| David Miller | [GIT]: Networking |
| Alan Stern | Re: [linux-pm] Re: Hibernation considerations |
git: | |
| Junio C Hamano | Re: git-diff on touched files: bug or feature? |
| Johannes Schindelin | Re: MinGW port - initial work uploaded |
| Kay Sievers | Re: Rss produced by git is not valid xml? |
| Marek Zawirski | [EGIT PATCH 00/31] Push GUI, GUI improvements, various jgit stuff |
| frantisek holop | nptd regression in 4.2 |
| Thilo Pfennig | OpenBSD project goals |
| Luca Dell'Oca | Authenticate squid in Active Directory |
| Richard Stallman | Real men don't attack straw men |
| Julius Volz | [PATCHv3 00/24] Add first IPv6 support to IPVS |
| Paul Moore | [RFC PATCH v4 01/14] netlabel: Remove unneeded in-kernel API functions |
| David Miller | Re: [PATCH net-2.6.25 1/10][NETNS][FRAGS]: Move ctl tables around. |
| Wenji Wu | Re: RE: A Linux TCP SACK Question |
