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: Yinghai Lu <yinghai@kernel.org> LKML-Reference: <1265793639-15071-16-git-send-email-yinghai@kernel.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
cef625eef8
commit
c252a5bb1f
4 changed files with 12 additions and 12 deletions
|
@ -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,
|
||||||
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)
|
||||||
}
|
}
|
||||||
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)
|
||||||
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)
|
||||||
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();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue