Re: 2.6.23-rc1-mm1 sparsemem_vmemamp fix.

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