From: Hiroyuki KAMEZAWA <kamezawa.hiroyu@jp.fujitsu.com>
To: linux-ia64@vger.kernel.org
Subject: [PATCH] modifing vmemmap initialization [1/1] : modifies init sequence
Date: Tue, 21 Dec 2004 07:20:29 +0000 [thread overview]
Message-ID: <41C7CEBD.6030709@jp.fujitsu.com> (raw)
In-Reply-To: <41C7CC9E.7080602@jp.fujitsu.com>
[-- Attachment #1: Type: text/plain, Size: 387 bytes --]
This patch adjust calling sequence of virtual_mem_map_alloc(),
which is added by previous patch.
There are 3 combinations of config..
CONFIG_DISCONTIGMEM != y && CONFIG_VIRTUAL_MEM_MAP != y
CONFIG_DISCONTIGMEM != y && CONFIG_VIRTUAL_MEM_MAP = y
CONFIG_DISCONTIGMEM = y && CONFIG_VIRTUAL_MEM_MAP = y
I don't want to use many #ifdefs but..
-- Kame <kamezawa.horoyu@jp.fujitsu.com>
[-- Attachment #2: vmemmap_adjust_callpath.patch --]
[-- Type: text/x-patch, Size: 4411 bytes --]
Curret ia64's vmem_map initialization path is different from other archs.
This patch modifies it.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
---
linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/contig.c | 2 --
linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/discontig.c | 6 ------
linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/init.c | 7 ++++---
linux-2.6.10-rc3-mm1-kamezawa/include/asm-ia64/meminit.h | 2 +-
linux-2.6.10-rc3-mm1-kamezawa/mm/page_alloc.c | 7 +++++--
5 files changed, 10 insertions(+), 14 deletions(-)
diff -puN arch/ia64/mm/init.c~vmemmap_adjust_callpath arch/ia64/mm/init.c
--- linux-2.6.10-rc3-mm1/arch/ia64/mm/init.c~vmemmap_adjust_callpath 2004-12-21 14:55:46.204902072 +0900
+++ linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/init.c 2004-12-21 14:55:46.216900248 +0900
@@ -407,7 +407,7 @@ create_mem_map_page_table (u64 start, u6
return 0;
}
-void
+struct page *
virtual_mem_map_alloc(struct pglist_data *pgdat)
{
unsigned long map_size;
@@ -415,7 +415,7 @@ virtual_mem_map_alloc(struct pglist_data
unsigned long max_gap = 0;
efi_memmap_walk(find_largest_hole, (u64 *)&max_gap);
if (max_gap < LARGE_GAP) {
- return;
+ return NULL;
}
#endif
if (pgdat == NODE_DATA(0)) {
@@ -428,7 +428,8 @@ virtual_mem_map_alloc(struct pglist_data
mem_map = vmem_map;
#endif
}
- return;
+ pgdat->node_mem_map = vmem_map + pgdat->node_start_pfn;
+ return pgdat->node_mem_map;
}
struct memmap_init_callback_data {
diff -puN arch/ia64/mm/contig.c~vmemmap_adjust_callpath arch/ia64/mm/contig.c
--- linux-2.6.10-rc3-mm1/arch/ia64/mm/contig.c~vmemmap_adjust_callpath 2004-12-21 14:55:46.206901768 +0900
+++ linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/contig.c 2004-12-21 14:55:46.217900096 +0900
@@ -262,8 +262,6 @@ paging_init (void)
(num_physpages - num_dma_physpages));
}
}
- virtual_mem_map_alloc(&contig_page_data);
- contig_page_data.node_mem_map = mem_map;
free_area_init_node(0, &contig_page_data, zones_size,
0, zholes_size);
#else /* !CONFIG_VIRTUAL_MEM_MAP */
diff -puN arch/ia64/mm/discontig.c~vmemmap_adjust_callpath arch/ia64/mm/discontig.c
--- linux-2.6.10-rc3-mm1/arch/ia64/mm/discontig.c~vmemmap_adjust_callpath 2004-12-21 14:55:46.208901464 +0900
+++ linux-2.6.10-rc3-mm1-kamezawa/arch/ia64/mm/discontig.c 2004-12-21 14:55:46.217900096 +0900
@@ -676,13 +676,7 @@ void __init paging_init(void)
mem_data[node].num_dma_physpages);
}
- if (node == 0) {
- virtual_mem_map_alloc(NODE_DATA(0));
- }
-
pfn_offset = mem_data[node].min_pfn;
-
- NODE_DATA(node)->node_mem_map = vmem_map + pfn_offset;
free_area_init_node(node, NODE_DATA(node), zones_size,
pfn_offset, zholes_size);
}
diff -puN mm/page_alloc.c~vmemmap_adjust_callpath mm/page_alloc.c
--- linux-2.6.10-rc3-mm1/mm/page_alloc.c~vmemmap_adjust_callpath 2004-12-21 14:55:46.211901008 +0900
+++ linux-2.6.10-rc3-mm1-kamezawa/mm/page_alloc.c 2004-12-21 14:55:46.219899792 +0900
@@ -1738,7 +1738,10 @@ static void __init free_area_init_core(s
void __init node_alloc_mem_map(struct pglist_data *pgdat)
{
unsigned long size;
-
+#ifdef CONFIG_VIRTUAL_MEM_MAP
+ if (virtual_mem_map_alloc(pgdat))
+ return;
+#endif
size = (pgdat->node_spanned_pages + 1) * sizeof(struct page);
pgdat->node_mem_map = alloc_bootmem_node(pgdat, size);
#ifndef CONFIG_DISCONTIGMEM
@@ -1754,7 +1757,7 @@ void __init free_area_init_node(int nid,
pgdat->node_start_pfn = node_start_pfn;
calculate_zone_totalpages(pgdat, zones_size, zholes_size);
- if (!pfn_to_page(node_start_pfn))
+ if (!pgdat->node_mem_map && pgdat->node_spanned_pages)
node_alloc_mem_map(pgdat);
free_area_init_core(pgdat, zones_size, zholes_size);
diff -puN include/asm-ia64/meminit.h~vmemmap_adjust_callpath include/asm-ia64/meminit.h
--- linux-2.6.10-rc3-mm1/include/asm-ia64/meminit.h~vmemmap_adjust_callpath 2004-12-21 14:55:46.214900552 +0900
+++ linux-2.6.10-rc3-mm1-kamezawa/include/asm-ia64/meminit.h 2004-12-21 14:55:46.220899640 +0900
@@ -56,7 +56,7 @@ extern int filter_rsvd_memory (unsigned
extern int find_largest_hole (u64 start, u64 end, void *arg);
extern int create_mem_map_page_table (u64 start, u64 end, void *arg);
struct pglist_data;
- extern void virtual_mem_map_alloc(struct pglist_data *pgdat);
+ extern struct page *virtual_mem_map_alloc(struct pglist_data *pgdat);
#endif
#endif /* meminit_h */
_
next prev parent reply other threads:[~2004-12-21 7:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-21 7:11 [PATCH] modifing vmemmap initialization [0/1] : move vmemmap creation Hiroyuki KAMEZAWA
2004-12-21 7:20 ` Hiroyuki KAMEZAWA [this message]
2004-12-21 18:33 ` [PATCH] modifing vmemmap initialization [1/1] : modifies init sequence Christoph Hellwig
2004-12-21 18:39 ` Matthew Wilcox
2004-12-22 1:16 ` [PATCH] modifing vmemmap initialization [1/1] : modifies init Hiroyuki KAMEZAWA
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=41C7CEBD.6030709@jp.fujitsu.com \
--to=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-ia64@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.