diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/asm/pci.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/pci-dma.c | 64 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 1 |
3 files changed, 0 insertions, 67 deletions
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 676129229630..d498943b906c 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h | |||
@@ -135,8 +135,6 @@ void default_teardown_msi_irqs(struct pci_dev *dev); | |||
135 | #include "pci_64.h" | 135 | #include "pci_64.h" |
136 | #endif | 136 | #endif |
137 | 137 | ||
138 | void dma32_reserve_bootmem(void); | ||
139 | |||
140 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ | 138 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ |
141 | #include <asm-generic/pci-dma-compat.h> | 139 | #include <asm-generic/pci-dma-compat.h> |
142 | 140 | ||
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index 9ea999a4dcc1..b49d00da2aed 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c | |||
@@ -68,74 +68,10 @@ int dma_set_mask(struct device *dev, u64 mask) | |||
68 | } | 68 | } |
69 | EXPORT_SYMBOL(dma_set_mask); | 69 | EXPORT_SYMBOL(dma_set_mask); |
70 | 70 | ||
71 | #if defined(CONFIG_X86_64) && !defined(CONFIG_NUMA) | ||
72 | static __initdata void *dma32_bootmem_ptr; | ||
73 | static unsigned long dma32_bootmem_size __initdata = (128ULL<<20); | ||
74 | |||
75 | static int __init parse_dma32_size_opt(char *p) | ||
76 | { | ||
77 | if (!p) | ||
78 | return -EINVAL; | ||
79 | dma32_bootmem_size = memparse(p, &p); | ||
80 | return 0; | ||
81 | } | ||
82 | early_param("dma32_size", parse_dma32_size_opt); | ||
83 | |||
84 | void __init dma32_reserve_bootmem(void) | ||
85 | { | ||
86 | unsigned long size, align; | ||
87 | if (max_pfn <= MAX_DMA32_PFN) | ||
88 | return; | ||
89 | |||
90 | /* | ||
91 | * check aperture_64.c allocate_aperture() for reason about | ||
92 | * using 512M as goal | ||
93 | */ | ||
94 | align = 64ULL<<20; | ||
95 | size = roundup(dma32_bootmem_size, align); | ||
96 | dma32_bootmem_ptr = __alloc_bootmem_nopanic(size, align, | ||
97 | 512ULL<<20); | ||
98 | /* | ||
99 | * Kmemleak should not scan this block as it may not be mapped via the | ||
100 | * kernel direct mapping. | ||
101 | */ | ||
102 | kmemleak_ignore(dma32_bootmem_ptr); | ||
103 | if (dma32_bootmem_ptr) | ||
104 | dma32_bootmem_size = size; | ||
105 | else | ||
106 | dma32_bootmem_size = 0; | ||
107 | } | ||
108 | static void __init dma32_free_bootmem(void) | ||
109 | { | ||
110 | |||
111 | if (max_pfn <= MAX_DMA32_PFN) | ||
112 | return; | ||
113 | |||
114 | if (!dma32_bootmem_ptr) | ||
115 | return; | ||
116 | |||
117 | free_bootmem(__pa(dma32_bootmem_ptr), dma32_bootmem_size); | ||
118 | |||
119 | dma32_bootmem_ptr = NULL; | ||
120 | dma32_bootmem_size = 0; | ||
121 | } | ||
122 | #else | ||
123 | void __init dma32_reserve_bootmem(void) | ||
124 | { | ||
125 | } | ||
126 | static void __init dma32_free_bootmem(void) | ||
127 | { | ||
128 | } | ||
129 | |||
130 | #endif | ||
131 | |||
132 | void __init pci_iommu_alloc(void) | 71 | void __init pci_iommu_alloc(void) |
133 | { | 72 | { |
134 | struct iommu_table_entry *p; | 73 | struct iommu_table_entry *p; |
135 | 74 | ||
136 | /* free the range so iommu could get some range less than 4G */ | ||
137 | dma32_free_bootmem(); | ||
138 | |||
139 | sort_iommu_table(__iommu_table, __iommu_table_end); | 75 | sort_iommu_table(__iommu_table, __iommu_table_end); |
140 | check_iommu_entries(__iommu_table, __iommu_table_end); | 76 | check_iommu_entries(__iommu_table, __iommu_table_end); |
141 | 77 | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 4be9b398470e..cab4f24e2177 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -966,7 +966,6 @@ void __init setup_arch(char **cmdline_p) | |||
966 | 966 | ||
967 | initmem_init(); | 967 | initmem_init(); |
968 | memblock_find_dma_reserve(); | 968 | memblock_find_dma_reserve(); |
969 | dma32_reserve_bootmem(); | ||
970 | 969 | ||
971 | #ifdef CONFIG_KVM_CLOCK | 970 | #ifdef CONFIG_KVM_CLOCK |
972 | kvmclock_init(); | 971 | kvmclock_init(); |