diff options
author | Christoph Lameter <clameter@sgi.com> | 2007-02-10 04:43:11 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 13:51:18 -0500 |
commit | 09ae1f585e9def652cdb1d0484611d4f4dc2d5fd (patch) | |
tree | d759e739ae0a8ba72f20938d5ac8c19dac76acba | |
parent | 4b51d66989218aad731a721b5b28c79bf5388c09 (diff) |
[PATCH] optional ZONE_DMA: optional ZONE_DMA for ia64
ZONE_DMA less operation for IA64 SGI platform
Disable ZONE_DMA for SGI SN2. All memory is addressable by all devices and we
do not need any special memory pool.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/ia64/Kconfig | 4 | ||||
-rw-r--r-- | arch/ia64/mm/contig.c | 4 | ||||
-rw-r--r-- | arch/ia64/mm/discontig.c | 6 |
3 files changed, 11 insertions, 3 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 549ead597934..db185f34e341 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -25,8 +25,8 @@ config 64BIT | |||
25 | default y | 25 | default y |
26 | 26 | ||
27 | config ZONE_DMA | 27 | config ZONE_DMA |
28 | bool | 28 | def_bool y |
29 | default y | 29 | depends on !IA64_SGI_SN2 |
30 | 30 | ||
31 | config MMU | 31 | config MMU |
32 | bool | 32 | bool |
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index 63e6d49c5813..ca4d41e5f177 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c | |||
@@ -259,9 +259,11 @@ paging_init (void) | |||
259 | num_physpages = 0; | 259 | num_physpages = 0; |
260 | efi_memmap_walk(count_pages, &num_physpages); | 260 | efi_memmap_walk(count_pages, &num_physpages); |
261 | 261 | ||
262 | max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT; | ||
263 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 262 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
263 | #ifdef CONFIG_ZONE_DMA | ||
264 | max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT; | ||
264 | max_zone_pfns[ZONE_DMA] = max_dma; | 265 | max_zone_pfns[ZONE_DMA] = max_dma; |
266 | #endif | ||
265 | max_zone_pfns[ZONE_NORMAL] = max_low_pfn; | 267 | max_zone_pfns[ZONE_NORMAL] = max_low_pfn; |
266 | 268 | ||
267 | #ifdef CONFIG_VIRTUAL_MEM_MAP | 269 | #ifdef CONFIG_VIRTUAL_MEM_MAP |
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 6eae596c509d..16835108bb5b 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -37,7 +37,9 @@ struct early_node_data { | |||
37 | unsigned long pernode_size; | 37 | unsigned long pernode_size; |
38 | struct bootmem_data bootmem_data; | 38 | struct bootmem_data bootmem_data; |
39 | unsigned long num_physpages; | 39 | unsigned long num_physpages; |
40 | #ifdef CONFIG_ZONE_DMA | ||
40 | unsigned long num_dma_physpages; | 41 | unsigned long num_dma_physpages; |
42 | #endif | ||
41 | unsigned long min_pfn; | 43 | unsigned long min_pfn; |
42 | unsigned long max_pfn; | 44 | unsigned long max_pfn; |
43 | }; | 45 | }; |
@@ -633,9 +635,11 @@ static __init int count_node_pages(unsigned long start, unsigned long len, int n | |||
633 | unsigned long end = start + len; | 635 | unsigned long end = start + len; |
634 | 636 | ||
635 | mem_data[node].num_physpages += len >> PAGE_SHIFT; | 637 | mem_data[node].num_physpages += len >> PAGE_SHIFT; |
638 | #ifdef CONFIG_ZONE_DMA | ||
636 | if (start <= __pa(MAX_DMA_ADDRESS)) | 639 | if (start <= __pa(MAX_DMA_ADDRESS)) |
637 | mem_data[node].num_dma_physpages += | 640 | mem_data[node].num_dma_physpages += |
638 | (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; | 641 | (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; |
642 | #endif | ||
639 | start = GRANULEROUNDDOWN(start); | 643 | start = GRANULEROUNDDOWN(start); |
640 | start = ORDERROUNDDOWN(start); | 644 | start = ORDERROUNDDOWN(start); |
641 | end = GRANULEROUNDUP(end); | 645 | end = GRANULEROUNDUP(end); |
@@ -688,7 +692,9 @@ void __init paging_init(void) | |||
688 | } | 692 | } |
689 | 693 | ||
690 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 694 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
695 | #ifdef CONFIG_ZONE_DMA | ||
691 | max_zone_pfns[ZONE_DMA] = max_dma; | 696 | max_zone_pfns[ZONE_DMA] = max_dma; |
697 | #endif | ||
692 | max_zone_pfns[ZONE_NORMAL] = max_pfn; | 698 | max_zone_pfns[ZONE_NORMAL] = max_pfn; |
693 | free_area_init_nodes(max_zone_pfns); | 699 | free_area_init_nodes(max_zone_pfns); |
694 | 700 | ||