Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: <linux-kernel@...>, apw@shadowen.org <apw@...>, <clameter@...>
Date: Thursday, July 26, 2007 - 8:58 am

Fix sparsemem_vmemmap init. sorry if known bug.

This patch fixes page table handling in sparsemem_vmammap.

Without this, part of vmem_map is not mapped because each section's start addr of
mem_map is not aligned to PGD/PMD/PUD. 
(In ia64, secion's mem_map size is 3670016bytes. )

for example, 

 addr     pmd_addr_end(addr_end)         addr + PMD_SIZE
  |XXXXXXXXXX|??????????????????????????????|XXXXXXXXXXXXXXXXXX

  X ... initialized vmem_map
  ? ... not intialized

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>



---
 mm/sparse.c |   24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

Index: devel-2.6.23-rc1-mm1/mm/sparse.c
===================================================================
--- devel-2.6.23-rc1-mm1.orig/mm/sparse.c
+++ devel-2.6.23-rc1-mm1/mm/sparse.c
@@ -320,7 +320,7 @@ static int __meminit vmemmap_populate_pt
 {
 	pte_t *pte;
 
-	for (pte = pte_offset_map(pmd, addr); addr < end;
+	for (pte = pte_offset_kernel(pmd, addr); addr < end;
 						pte++, addr += PAGE_SIZE)
 		if (pte_none(*pte)) {
 			pte_t entry;
@@ -345,9 +345,10 @@ int __meminit vmemmap_populate_pmd(pud_t
 {
 	pmd_t *pmd;
 	int error = 0;
+	unsigned long next;
 
 	for (pmd = pmd_offset(pud, addr); addr < end && !error;
-						pmd++, addr += PMD_SIZE) {
+						pmd++, addr = next) {
 		if (pmd_none(*pmd)) {
 			void *p = vmemmap_alloc_block(PAGE_SIZE, node);
 			if (!p)
@@ -357,9 +358,8 @@ int __meminit vmemmap_populate_pmd(pud_t
 		} else
 			vmemmap_verify((pte_t *)pmd, node,
 					pmd_addr_end(addr, end), end);
-
-		error = vmemmap_populate_pte(pmd, addr,
-					pmd_addr_end(addr, end), node);
+		next = pmd_addr_end(addr, end);
+		error = vmemmap_populate_pte(pmd, addr, next, node);
 	}
 	return error;
 }
@@ -370,9 +370,10 @@ static int __meminit vmemmap_populate_pu
 {
 	pud_t *pud;
 	int error = 0;
+	unsigned long next;
 
 	for (pud = pud_offset(pgd, addr); addr < end && !error;
-						pud++, addr += PUD_SIZE) {
+						pud++, addr = next) {
 		if (pud_none(*pud)) {
 			void *p = vmemmap_alloc_block(PAGE_SIZE, node);
 			if (!p)
@@ -380,8 +381,8 @@ static int __meminit vmemmap_populate_pu
 
 			pud_populate(&init_mm, pud, p);
 		}
-		error = vmemmap_populate_pmd(pud, addr,
-					pud_addr_end(addr, end), node);
+		next = pud_addr_end(addr, end);
+		error = vmemmap_populate_pmd(pud, addr, next, node);
 	}
 	return error;
 }
@@ -392,13 +393,14 @@ int __meminit vmemmap_populate(struct pa
 	pgd_t *pgd;
 	unsigned long addr = (unsigned long)start_page;
 	unsigned long end = (unsigned long)(start_page + nr);
+	unsigned long next;
 	int error = 0;
 
 	printk(KERN_DEBUG "[%lx-%lx] Virtual memory section"
 		" (%ld pages) node %d\n", addr, end - 1, nr, node);
 
 	for (pgd = pgd_offset_k(addr); addr < end && !error;
-					pgd++, addr += PGDIR_SIZE) {
+					pgd++, addr = next) {
 		if (pgd_none(*pgd)) {
 			void *p = vmemmap_alloc_block(PAGE_SIZE, node);
 			if (!p)
@@ -406,8 +408,8 @@ int __meminit vmemmap_populate(struct pa
 
 			pgd_populate(&init_mm, pgd, p);
 		}
-		error = vmemmap_populate_pud(pgd, addr,
-					pgd_addr_end(addr, end), node);
+		next = pgd_addr_end(addr,end);
+		error = vmemmap_populate_pud(pgd, addr, next, node);
 	}
 	return error;
 }

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 7:03 am)
Re: 2.6.23-rc1-mm1, Grant Wilson, (Sun Jul 29, 11:49 am)
Re: 2.6.23-rc1-mm1, Dave Young, (Mon Jul 30, 5:58 am)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Mon Jul 30, 2:27 pm)
Re: 2.6.23-rc1-mm1, Christoph Hellwig, (Mon Jul 30, 2:42 pm)
Re: 2.6.23-rc1-mm1, Satyam Sharma, (Mon Jul 30, 6:18 pm)
Re: 2.6.23-rc1-mm1, Dave Young, (Mon Jul 30, 9:21 pm)
[-mm patch] security/ cleanups, Adrian Bunk, (Sun Jul 29, 11:00 am)
Re: [-mm patch] security/ cleanups, James Morris, (Mon Jul 30, 7:47 am)
[-mm patch] make struct sdio_dev_attrs[] static, Adrian Bunk, (Sun Jul 29, 10:58 am)
Re: [-mm patch] make struct sdio_dev_attrs[] static, Pierre Ossman, (Sun Jul 29, 3:29 pm)
[-mm patch] kernel/pid.c: remove unused exports, Adrian Bunk, (Sun Jul 29, 10:59 am)
[-mm patch] make scsi_host_link_pm_policy() static, Adrian Bunk, (Sun Jul 29, 10:58 am)
Re: [-mm patch] USB: make dev_attr_authorized_default static, Inaky Perez-Gonzalez, (Tue Jul 31, 3:13 pm)
[-mm patch] export v4l2_int_device_{,un}register, Adrian Bunk, (Sun Jul 29, 10:59 am)
[-mm patch] kernel/printk.c: make 2 variables static, Adrian Bunk, (Sun Jul 29, 10:59 am)
Re: [-mm patch] kernel/printk.c: make 2 variables static, Randy Dunlap, (Sun Jul 29, 12:51 pm)
[-mm patch] MTD onenand_sim.c: make struct info static, Adrian Bunk, (Sun Jul 29, 10:58 am)
[-mm patch] fs/ecryptfs/: make code static, Adrian Bunk, (Sun Jul 29, 10:57 am)
[-mm patch] make hugetlbfs_read() static, Adrian Bunk, (Sun Jul 29, 10:57 am)
[PATCH -mm] Fix libata warnings with CONFIG_PM=n, Gabriel C, (Sat Jul 28, 3:32 pm)
mm/sparse.c compile error ( Re: 2.6.23-rc1-mm1 ), Gabriel C, (Sat Jul 28, 1:07 pm)
Re: mm/sparse.c compile error ( Re: 2.6.23-rc1-mm1 ), Andrew Morton, (Sat Jul 28, 1:30 pm)
Re: mm/sparse.c compile error ( Re: 2.6.23-rc1-mm1 ), Andy Whitcroft, (Mon Jul 30, 8:16 am)
[PATCH] docs: note about select in kconfig-language.txt, Jarek Poplawski, (Mon Aug 6, 7:51 am)
[-mm patch] xtensa console.c: remove duplicate #include, Frederik Deweerdt, (Fri Jul 27, 9:28 am)
Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix., KAMEZAWA Hiroyuki, (Thu Jul 26, 8:58 am)
Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix., Andy Whitcroft, (Thu Jul 26, 10:39 am)
Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix., Andy Whitcroft, (Thu Jul 26, 10:44 am)
[-mm patch] DMA engine kconfig improvements, Adrian Bunk, (Thu Jul 26, 1:26 am)
RE: [-mm patch] DMA engine kconfig improvements, Nelson, Shannon, (Wed Aug 15, 7:36 pm)
Re: [-mm patch] DMA engine kconfig improvements, Dan Williams, (Fri Aug 3, 10:15 pm)
Re: [-mm patch] DMA engine kconfig improvements, Adrian Bunk, (Thu Aug 9, 8:43 pm)
2.6.23-rc1-mm1: git-kgdb breaks sh compilation, Adrian Bunk, (Wed Jul 25, 5:17 pm)
Re: 2.6.23-rc1-mm1: git-kgdb breaks sh compilation, Paul Mundt, (Wed Jul 25, 9:45 pm)
2.6.23-rc1-mm1: m32r is_init() compile error, Adrian Bunk, (Wed Jul 25, 5:01 pm)
Re: 2.6.23-rc1-mm1, Michal Piotrowski, (Wed Jul 25, 2:48 pm)
Re: 2.6.23-rc1-mm1, Sam Ravnborg, (Wed Jul 25, 2:53 pm)
Re: 2.6.23-rc1-mm1, H. Peter Anvin, (Wed Jul 25, 3:18 pm)
Re: 2.6.23-rc1-mm1, Gabriel C, (Wed Jul 25, 4:58 pm)
Re: 2.6.23-rc1-mm1, Gabriel C, (Wed Jul 25, 5:05 pm)
Re: 2.6.23-rc1-mm1, Greg KH, (Wed Jul 25, 8:07 pm)
Re: 2.6.23-rc1-mm1, Dave Hansen, (Thu Jul 26, 4:18 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 8:28 pm)
Re: 2.6.23-rc1-mm1, Dave Young, (Wed Jul 25, 9:55 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 10:23 pm)
Re: 2.6.23-rc1-mm1, H. Peter Anvin, (Wed Jul 25, 5:11 pm)
Re: 2.6.23-rc1-mm1, Gabriel C, (Wed Jul 25, 5:13 pm)
Re: 2.6.23-rc1-mm1, Sam Ravnborg, (Wed Jul 25, 3:21 pm)
2.6.23-rc1-mm1: reiser4 &lt;-&gt; lzo compile error, Adrian Bunk, (Wed Jul 25, 2:22 pm)
Re: 2.6.23-rc1-mm1: reiser4 &lt;-&gt; lzo compile error, Edward Shishkin, (Fri Jul 27, 8:35 am)
Re: 2.6.23-rc1-mm1: reiser4 &lt;-&gt; lzo compile error, Richard Purdie, (Fri Jul 27, 11:11 am)
Re: 2.6.23-rc1-mm1: reiser4 &lt;-&gt; lzo compile error, Edward Shishkin, (Wed Jul 25, 2:44 pm)
2.6.23-rc1-mm1: net/ipv4/fib_trie.c compile error, Adrian Bunk, (Wed Jul 25, 2:15 pm)
Re: 2.6.23-rc1-mm1 -- mostly fails to build, Andy Whitcroft, (Wed Jul 25, 12:36 pm)
Re: 2.6.23-rc1-mm1 -- mostly fails to build, Andy Whitcroft, (Wed Jul 25, 6:41 pm)
Re: 2.6.23-rc1-mm1 -- mostly fails to build, Andrew Morton, (Thu Jul 26, 1:56 am)
Re: 2.6.23-rc1-mm1 -- mostly fails to build, Yinghai Lu, (Thu Jul 26, 1:53 pm)
2.6.23-rc1-mm1: SCSI_SRP_ATTRS compile error, Adrian Bunk, (Wed Jul 25, 2:06 pm)
Re: 2.6.23-rc1-mm1: SCSI_SRP_ATTRS compile error, FUJITA Tomonori, (Thu Jul 26, 6:49 am)
Re: 2.6.23-rc1-mm1 -- mostly fails to build, Sam Ravnborg, (Wed Jul 25, 1:04 pm)
Re: 2.6.23-rc1-mm1, Michal Piotrowski, (Wed Jul 25, 12:32 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 5:56 pm)
Re: 2.6.23-rc1-mm1, Cedric Le Goater, (Wed Jul 25, 8:55 am)
Re: 2.6.23-rc1-mm1: chipsfb_pci_suspend problem, Rafael J. Wysocki, (Wed Jul 25, 9:48 am)
Re: 2.6.23-rc1-mm1: chipsfb_pci_suspend problem, Andrew Morton, (Wed Jul 25, 4:22 pm)
Re: 2.6.23-rc1-mm1: chipsfb_pci_suspend problem, Pavel Machek, (Wed Jul 25, 6:45 pm)
Re: 2.6.23-rc1-mm1, Cedric Le Goater, (Wed Jul 25, 8:40 am)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 4:05 pm)
Re: 2.6.23-rc1-mm1, Cedric Le Goater, (Wed Jul 25, 8:25 am)
Re: 2.6.23-rc1-mm1, Len Brown, (Wed Jul 25, 1:23 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 2:58 pm)
Re: 2.6.23-rc1-mm1, Len Brown, (Wed Jul 25, 7:26 pm)
Re: 2.6.23-rc1-mm1, Mel Gorman, (Thu Jul 26, 5:41 am)
Re: 2.6.23-rc1-mm1, Cedric Le Goater, (Thu Jul 26, 9:53 am)
Re: 2.6.23-rc1-mm1, Torsten Kaiser, (Wed Jul 25, 3:13 pm)
Re: 2.6.23-rc1-mm1, Torsten Kaiser, (Wed Jul 25, 4:22 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Wed Jul 25, 4:36 pm)
Re: 2.6.23-rc1-mm1, Torsten Kaiser, (Wed Jul 25, 5:52 pm)
Re: 2.6.23-rc1-mm1, Andrew Morton, (Thu Jul 26, 3:25 am)
Re: 2.6.23-rc1-mm1, Torsten Kaiser, (Thu Jul 26, 1:54 pm)
Re: 2.6.23-rc1-mm1, Torsten Kaiser, (Sat Jul 28, 10:03 am)