]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.arch/ia64-node_mem_map-node_start_pfn.diff
Add a patch to fix Intel E100 wake-on-lan problems.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / ia64-node_mem_map-node_start_pfn.diff
CommitLineData
6a930a95
BS
1From: Bernhard Walle <bwalle@suse.de>
2Subject: [PATCH] Fix memory map for ia64/discontmem for kdump
3
4makedumpfile[1] cannot run on ia64 discontigmem kernel, because the member
5node_mem_map of struct pgdat_list has invalid value. This patch fixes it.
6
7node_start_pfn shows the start pfn of each node, and node_mem_map should
8point 'struct page' of each node's node_start_pfn.
9On my machine, node0's node_start_pfn shows 0x400 and its node_mem_map points
100xa0007fffbf000000. This address is the same as vmem_map, so the node_mem_map
11points 'struct page' of pfn 0, even if its node_start_pfn shows 0x400.
12
13The cause is due to the round down of min_pfn in count_node_pages() and
14node0's node_mem_map points 'struct page' of inactive pfn (0x0).
15This patch fixes it.
16
17
18makedumpfile[1]: dump filtering command
19https://sourceforge.net/projects/makedumpfile/
20
21Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
22Acked-by: Bernhard Walle <bwalle@suse.de>
23
24---
25 arch/ia64/include/asm/meminit.h | 1 -
26 arch/ia64/mm/discontig.c | 1 -
27 2 files changed, 2 deletions(-)
28
29--- a/arch/ia64/include/asm/meminit.h
30+++ b/arch/ia64/include/asm/meminit.h
31@@ -47,7 +47,6 @@ extern int reserve_elfcorehdr(unsigned l
32 */
33 #define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1))
34 #define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1))
35-#define ORDERROUNDDOWN(n) ((n) & ~((PAGE_SIZE<<MAX_ORDER)-1))
36
37 #ifdef CONFIG_NUMA
38 extern void call_pernode_memory (unsigned long start, unsigned long len, void *func);
39--- a/arch/ia64/mm/discontig.c
40+++ b/arch/ia64/mm/discontig.c
41@@ -635,7 +635,6 @@ static __init int count_node_pages(unsig
42 (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT;
43 #endif
44 start = GRANULEROUNDDOWN(start);
45- start = ORDERROUNDDOWN(start);
46 end = GRANULEROUNDUP(end);
47 mem_data[node].max_pfn = max(mem_data[node].max_pfn,
48 end >> PAGE_SHIFT);