diff options
author | Glauber Costa <gcosta@redhat.com> | 2008-04-08 12:20:54 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-19 13:19:57 -0400 |
commit | 116890d556af38d539597655c564a73e6eef3d9e (patch) | |
tree | 4c284032ee8b59fb97fd01b86ba6ca0b925480fe /arch/x86/kernel/pci-dma_64.c | |
parent | cb5867a5d8ca20e16ddc3397c36ee9c2e4cba219 (diff) |
x86: move x86_64-specific to common code.
This patch moves the bootmem functions, that are largely
x86_64-specific into pci-dma.c. The code goes inside an ifdef.
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/pci-dma_64.c')
-rw-r--r-- | arch/x86/kernel/pci-dma_64.c | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c index 42021300964a..6b204cc42890 100644 --- a/arch/x86/kernel/pci-dma_64.c +++ b/arch/x86/kernel/pci-dma_64.c | |||
@@ -271,74 +271,6 @@ static __init int iommu_setup(char *p) | |||
271 | } | 271 | } |
272 | early_param("iommu", iommu_setup); | 272 | early_param("iommu", iommu_setup); |
273 | 273 | ||
274 | static __initdata void *dma32_bootmem_ptr; | ||
275 | static unsigned long dma32_bootmem_size __initdata = (128ULL<<20); | ||
276 | |||
277 | static int __init parse_dma32_size_opt(char *p) | ||
278 | { | ||
279 | if (!p) | ||
280 | return -EINVAL; | ||
281 | dma32_bootmem_size = memparse(p, &p); | ||
282 | return 0; | ||
283 | } | ||
284 | early_param("dma32_size", parse_dma32_size_opt); | ||
285 | |||
286 | void __init dma32_reserve_bootmem(void) | ||
287 | { | ||
288 | unsigned long size, align; | ||
289 | if (end_pfn <= MAX_DMA32_PFN) | ||
290 | return; | ||
291 | |||
292 | align = 64ULL<<20; | ||
293 | size = round_up(dma32_bootmem_size, align); | ||
294 | dma32_bootmem_ptr = __alloc_bootmem_nopanic(size, align, | ||
295 | __pa(MAX_DMA_ADDRESS)); | ||
296 | if (dma32_bootmem_ptr) | ||
297 | dma32_bootmem_size = size; | ||
298 | else | ||
299 | dma32_bootmem_size = 0; | ||
300 | } | ||
301 | static void __init dma32_free_bootmem(void) | ||
302 | { | ||
303 | int node; | ||
304 | |||
305 | if (end_pfn <= MAX_DMA32_PFN) | ||
306 | return; | ||
307 | |||
308 | if (!dma32_bootmem_ptr) | ||
309 | return; | ||
310 | |||
311 | for_each_online_node(node) | ||
312 | free_bootmem_node(NODE_DATA(node), __pa(dma32_bootmem_ptr), | ||
313 | dma32_bootmem_size); | ||
314 | |||
315 | dma32_bootmem_ptr = NULL; | ||
316 | dma32_bootmem_size = 0; | ||
317 | } | ||
318 | |||
319 | void __init pci_iommu_alloc(void) | ||
320 | { | ||
321 | /* free the range so iommu could get some range less than 4G */ | ||
322 | dma32_free_bootmem(); | ||
323 | /* | ||
324 | * The order of these functions is important for | ||
325 | * fall-back/fail-over reasons | ||
326 | */ | ||
327 | #ifdef CONFIG_GART_IOMMU | ||
328 | gart_iommu_hole_init(); | ||
329 | #endif | ||
330 | |||
331 | #ifdef CONFIG_CALGARY_IOMMU | ||
332 | detect_calgary(); | ||
333 | #endif | ||
334 | |||
335 | detect_intel_iommu(); | ||
336 | |||
337 | #ifdef CONFIG_SWIOTLB | ||
338 | pci_swiotlb_init(); | ||
339 | #endif | ||
340 | } | ||
341 | |||
342 | #ifdef CONFIG_PCI | 274 | #ifdef CONFIG_PCI |
343 | /* Many VIA bridges seem to corrupt data for DAC. Disable it here */ | 275 | /* Many VIA bridges seem to corrupt data for DAC. Disable it here */ |
344 | 276 | ||