Commit c252a5bb authored by Yinghai Lu's avatar Yinghai Lu Committed by H. Peter Anvin

x86: Only call dma32_reserve_bootmem 64bit !CONFIG_NUMA

64bit NUMA already make enough space under 4G with new early_node_mem.
Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
LKML-Reference: <1265793639-15071-16-git-send-email-yinghai@kernel.org>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent cef625ee
...@@ -124,6 +124,8 @@ extern void pci_iommu_alloc(void); ...@@ -124,6 +124,8 @@ extern void pci_iommu_alloc(void);
#include "pci_64.h" #include "pci_64.h"
#endif #endif
void dma32_reserve_bootmem(void);
/* implement the pci_ DMA API in terms of the generic device dma_ one */ /* implement the pci_ DMA API in terms of the generic device dma_ one */
#include <asm-generic/pci-dma-compat.h> #include <asm-generic/pci-dma-compat.h>
......
...@@ -22,8 +22,6 @@ extern int (*pci_config_read)(int seg, int bus, int dev, int fn, ...@@ -22,8 +22,6 @@ extern int (*pci_config_read)(int seg, int bus, int dev, int fn,
extern int (*pci_config_write)(int seg, int bus, int dev, int fn, extern int (*pci_config_write)(int seg, int bus, int dev, int fn,
int reg, int len, u32 value); int reg, int len, u32 value);
extern void dma32_reserve_bootmem(void);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_X86_PCI_64_H */ #endif /* _ASM_X86_PCI_64_H */
...@@ -65,7 +65,7 @@ int dma_set_mask(struct device *dev, u64 mask) ...@@ -65,7 +65,7 @@ int dma_set_mask(struct device *dev, u64 mask)
} }
EXPORT_SYMBOL(dma_set_mask); EXPORT_SYMBOL(dma_set_mask);
#ifdef CONFIG_X86_64 #if defined(CONFIG_X86_64) && !defined(CONFIG_NUMA)
static __initdata void *dma32_bootmem_ptr; static __initdata void *dma32_bootmem_ptr;
static unsigned long dma32_bootmem_size __initdata = (128ULL<<20); static unsigned long dma32_bootmem_size __initdata = (128ULL<<20);
...@@ -116,14 +116,21 @@ static void __init dma32_free_bootmem(void) ...@@ -116,14 +116,21 @@ static void __init dma32_free_bootmem(void)
dma32_bootmem_ptr = NULL; dma32_bootmem_ptr = NULL;
dma32_bootmem_size = 0; dma32_bootmem_size = 0;
} }
#else
void __init dma32_reserve_bootmem(void)
{
}
static void __init dma32_free_bootmem(void)
{
}
#endif #endif
void __init pci_iommu_alloc(void) void __init pci_iommu_alloc(void)
{ {
#ifdef CONFIG_X86_64
/* free the range so iommu could get some range less than 4G */ /* free the range so iommu could get some range less than 4G */
dma32_free_bootmem(); dma32_free_bootmem();
#endif
if (pci_swiotlb_detect()) if (pci_swiotlb_detect())
goto out; goto out;
......
...@@ -969,14 +969,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -969,14 +969,7 @@ void __init setup_arch(char **cmdline_p)
initmem_init(0, max_pfn, acpi, k8); initmem_init(0, max_pfn, acpi, k8);
early_res_to_bootmem(0, max_low_pfn<<PAGE_SHIFT); early_res_to_bootmem(0, max_low_pfn<<PAGE_SHIFT);
#ifdef CONFIG_X86_64
/*
* dma32_reserve_bootmem() allocates bootmem which may conflict
* with the crashkernel command line, so do that after
* reserve_crashkernel()
*/
dma32_reserve_bootmem(); dma32_reserve_bootmem();
#endif
reserve_ibft_region(); reserve_ibft_region();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment