aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/pci-dma_64.c
diff options
context:
space:
mode:
authorGlauber Costa <gcosta@redhat.com>2008-04-08 12:20:54 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-19 13:19:57 -0400
commit116890d556af38d539597655c564a73e6eef3d9e (patch)
tree4c284032ee8b59fb97fd01b86ba6ca0b925480fe /arch/x86/kernel/pci-dma_64.c
parentcb5867a5d8ca20e16ddc3397c36ee9c2e4cba219 (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.c68
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}
272early_param("iommu", iommu_setup); 272early_param("iommu", iommu_setup);
273 273
274static __initdata void *dma32_bootmem_ptr;
275static unsigned long dma32_bootmem_size __initdata = (128ULL<<20);
276
277static 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}
284early_param("dma32_size", parse_dma32_size_opt);
285
286void __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}
301static 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
319void __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