diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-12-16 15:17:36 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-17 12:58:19 -0500 |
commit | cfb80c9eae8c7ed8f2ee81090062d15ead51cbe8 (patch) | |
tree | 8343c02e8599f0e038cc9c0b303854193fb38e37 /arch/x86/kernel | |
parent | 8ce7996009bab7b2d23e7af7ad831fed7eb6faa1 (diff) |
x86: unify pci iommu setup and allow swiotlb to compile for 32 bit
swiotlb on 32 bit will be used by Xen domain 0 support.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/x86/kernel/pci-dma.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/pci-swiotlb_64.c | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index b62a7667828e..a9c656f2d661 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
@@ -105,6 +105,8 @@ microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o | |||
105 | microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o | 105 | microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o |
106 | obj-$(CONFIG_MICROCODE) += microcode.o | 106 | obj-$(CONFIG_MICROCODE) += microcode.o |
107 | 107 | ||
108 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o # NB rename without _64 | ||
109 | |||
108 | ### | 110 | ### |
109 | # 64 bit specific files | 111 | # 64 bit specific files |
110 | ifeq ($(CONFIG_X86_64),y) | 112 | ifeq ($(CONFIG_X86_64),y) |
@@ -118,7 +120,6 @@ ifeq ($(CONFIG_X86_64),y) | |||
118 | obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o | 120 | obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o |
119 | obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o | 121 | obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o |
120 | obj-$(CONFIG_AMD_IOMMU) += amd_iommu_init.o amd_iommu.o | 122 | obj-$(CONFIG_AMD_IOMMU) += amd_iommu_init.o amd_iommu.o |
121 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o | ||
122 | 123 | ||
123 | obj-$(CONFIG_PCI_MMCONFIG) += mmconf-fam10h_64.o | 124 | obj-$(CONFIG_PCI_MMCONFIG) += mmconf-fam10h_64.o |
124 | endif | 125 | endif |
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index e150ad4f0ccc..00e07447a5bd 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c | |||
@@ -105,11 +105,15 @@ static void __init dma32_free_bootmem(void) | |||
105 | dma32_bootmem_ptr = NULL; | 105 | dma32_bootmem_ptr = NULL; |
106 | dma32_bootmem_size = 0; | 106 | dma32_bootmem_size = 0; |
107 | } | 107 | } |
108 | #endif | ||
108 | 109 | ||
109 | void __init pci_iommu_alloc(void) | 110 | void __init pci_iommu_alloc(void) |
110 | { | 111 | { |
112 | #ifdef CONFIG_X86_64 | ||
111 | /* free the range so iommu could get some range less than 4G */ | 113 | /* free the range so iommu could get some range less than 4G */ |
112 | dma32_free_bootmem(); | 114 | dma32_free_bootmem(); |
115 | #endif | ||
116 | |||
113 | /* | 117 | /* |
114 | * The order of these functions is important for | 118 | * The order of these functions is important for |
115 | * fall-back/fail-over reasons | 119 | * fall-back/fail-over reasons |
@@ -125,8 +129,6 @@ void __init pci_iommu_alloc(void) | |||
125 | pci_swiotlb_init(); | 129 | pci_swiotlb_init(); |
126 | } | 130 | } |
127 | 131 | ||
128 | #endif | ||
129 | |||
130 | void *dma_generic_alloc_coherent(struct device *dev, size_t size, | 132 | void *dma_generic_alloc_coherent(struct device *dev, size_t size, |
131 | dma_addr_t *dma_addr, gfp_t flag) | 133 | dma_addr_t *dma_addr, gfp_t flag) |
132 | { | 134 | { |
diff --git a/arch/x86/kernel/pci-swiotlb_64.c b/arch/x86/kernel/pci-swiotlb_64.c index f47a097a135b..a991afea6700 100644 --- a/arch/x86/kernel/pci-swiotlb_64.c +++ b/arch/x86/kernel/pci-swiotlb_64.c | |||
@@ -62,8 +62,10 @@ struct dma_mapping_ops swiotlb_dma_ops = { | |||
62 | void __init pci_swiotlb_init(void) | 62 | void __init pci_swiotlb_init(void) |
63 | { | 63 | { |
64 | /* don't initialize swiotlb if iommu=off (no_iommu=1) */ | 64 | /* don't initialize swiotlb if iommu=off (no_iommu=1) */ |
65 | #ifdef CONFIG_X86_64 | ||
65 | if (!iommu_detected && !no_iommu && max_pfn > MAX_DMA32_PFN) | 66 | if (!iommu_detected && !no_iommu && max_pfn > MAX_DMA32_PFN) |
66 | swiotlb = 1; | 67 | swiotlb = 1; |
68 | #endif | ||
67 | if (swiotlb_force) | 69 | if (swiotlb_force) |
68 | swiotlb = 1; | 70 | swiotlb = 1; |
69 | if (swiotlb) { | 71 | if (swiotlb) { |