diff options
Diffstat (limited to 'arch/ia64/hp/common/hwsw_iommu.c')
-rw-r--r-- | arch/ia64/hp/common/hwsw_iommu.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c index 80f8ef013939..317c334c5a18 100644 --- a/arch/ia64/hp/common/hwsw_iommu.c +++ b/arch/ia64/hp/common/hwsw_iommu.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
18 | 18 | ||
19 | /* swiotlb declarations & definitions: */ | 19 | /* swiotlb declarations & definitions: */ |
20 | extern void swiotlb_init_with_default_size (size_t size); | 20 | extern int swiotlb_late_init_with_default_size (size_t size); |
21 | extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; | 21 | extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; |
22 | extern ia64_mv_dma_free_coherent swiotlb_free_coherent; | 22 | extern ia64_mv_dma_free_coherent swiotlb_free_coherent; |
23 | extern ia64_mv_dma_map_single swiotlb_map_single; | 23 | extern ia64_mv_dma_map_single swiotlb_map_single; |
@@ -67,7 +67,16 @@ void | |||
67 | hwsw_init (void) | 67 | hwsw_init (void) |
68 | { | 68 | { |
69 | /* default to a smallish 2MB sw I/O TLB */ | 69 | /* default to a smallish 2MB sw I/O TLB */ |
70 | swiotlb_init_with_default_size (2 * (1<<20)); | 70 | if (swiotlb_late_init_with_default_size (2 * (1<<20)) != 0) { |
71 | #ifdef CONFIG_IA64_GENERIC | ||
72 | /* Better to have normal DMA than panic */ | ||
73 | printk(KERN_WARNING "%s: Failed to initialize software I/O TLB," | ||
74 | " reverting to hpzx1 platform vector\n", __FUNCTION__); | ||
75 | machvec_init("hpzx1"); | ||
76 | #else | ||
77 | panic("Unable to initialize software I/O TLB services"); | ||
78 | #endif | ||
79 | } | ||
71 | } | 80 | } |
72 | 81 | ||
73 | void * | 82 | void * |