0b9afede3d
Machine vector selection has always been a bit of a hack given how early in system boot it needs to be done. Services like ACPI namespace are not available and there are non-trivial problems to moving them to early boot. However, there's no reason we can't change to a different machvec later in boot when the services we need are available. By adding a entry point for later initialization of the swiotlb, we can add an error path for the hpzx1 machevec initialization and fall back to the DIG machine vector if IOMMU hardware isn't found in the system. Since ia64 uses 4GB for zone DMA (no ISA support), it's trivial to allocate a contiguous range from the slab for bounce buffer usage. Signed-off-by: Alex Williamson <alex.williamson@hp.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
37 lines
1.5 KiB
C
37 lines
1.5 KiB
C
#ifndef _ASM_IA64_MACHVEC_HPZX1_h
|
|
#define _ASM_IA64_MACHVEC_HPZX1_h
|
|
|
|
extern ia64_mv_setup_t dig_setup;
|
|
extern ia64_mv_dma_alloc_coherent sba_alloc_coherent;
|
|
extern ia64_mv_dma_free_coherent sba_free_coherent;
|
|
extern ia64_mv_dma_map_single sba_map_single;
|
|
extern ia64_mv_dma_unmap_single sba_unmap_single;
|
|
extern ia64_mv_dma_map_sg sba_map_sg;
|
|
extern ia64_mv_dma_unmap_sg sba_unmap_sg;
|
|
extern ia64_mv_dma_supported sba_dma_supported;
|
|
extern ia64_mv_dma_mapping_error sba_dma_mapping_error;
|
|
|
|
/*
|
|
* This stuff has dual use!
|
|
*
|
|
* For a generic kernel, the macros are used to initialize the
|
|
* platform's machvec structure. When compiling a non-generic kernel,
|
|
* the macros are used directly.
|
|
*/
|
|
#define platform_name "hpzx1"
|
|
#define platform_setup dig_setup
|
|
#define platform_dma_init machvec_noop
|
|
#define platform_dma_alloc_coherent sba_alloc_coherent
|
|
#define platform_dma_free_coherent sba_free_coherent
|
|
#define platform_dma_map_single sba_map_single
|
|
#define platform_dma_unmap_single sba_unmap_single
|
|
#define platform_dma_map_sg sba_map_sg
|
|
#define platform_dma_unmap_sg sba_unmap_sg
|
|
#define platform_dma_sync_single_for_cpu machvec_dma_sync_single
|
|
#define platform_dma_sync_sg_for_cpu machvec_dma_sync_sg
|
|
#define platform_dma_sync_single_for_device machvec_dma_sync_single
|
|
#define platform_dma_sync_sg_for_device machvec_dma_sync_sg
|
|
#define platform_dma_supported sba_dma_supported
|
|
#define platform_dma_mapping_error sba_dma_mapping_error
|
|
|
|
#endif /* _ASM_IA64_MACHVEC_HPZX1_h */
|