Merge branch 'linus' into core/iommu
authorIngo Molnar <mingo@elte.hu>
Fri, 16 Jan 2009 09:09:10 +0000 (10:09 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 16 Jan 2009 09:09:10 +0000 (10:09 +0100)
Conflicts:
arch/ia64/include/asm/dma-mapping.h
arch/ia64/include/asm/machvec.h
arch/ia64/include/asm/machvec_sn2.h

1  2 
arch/ia64/include/asm/dma-mapping.h
arch/ia64/include/asm/machvec.h
arch/ia64/include/asm/machvec_sn2.h
arch/ia64/sn/pci/pci_dma.c
drivers/pci/intel-iommu.c

@@@ -9,7 -9,47 +9,9 @@@
  #include <linux/scatterlist.h>
  #include <asm/swiotlb.h>
  
 -struct dma_mapping_ops {
 -      int             (*mapping_error)(struct device *dev,
 -                                       dma_addr_t dma_addr);
 -      void*           (*alloc_coherent)(struct device *dev, size_t size,
 -                              dma_addr_t *dma_handle, gfp_t gfp);
 -      void            (*free_coherent)(struct device *dev, size_t size,
 -                              void *vaddr, dma_addr_t dma_handle);
 -      dma_addr_t      (*map_single)(struct device *hwdev, unsigned long ptr,
 -                              size_t size, int direction);
 -      void            (*unmap_single)(struct device *dev, dma_addr_t addr,
 -                              size_t size, int direction);
 -      void            (*sync_single_for_cpu)(struct device *hwdev,
 -                              dma_addr_t dma_handle, size_t size,
 -                              int direction);
 -      void            (*sync_single_for_device)(struct device *hwdev,
 -                              dma_addr_t dma_handle, size_t size,
 -                              int direction);
 -      void            (*sync_single_range_for_cpu)(struct device *hwdev,
 -                              dma_addr_t dma_handle, unsigned long offset,
 -                              size_t size, int direction);
 -      void            (*sync_single_range_for_device)(struct device *hwdev,
 -                              dma_addr_t dma_handle, unsigned long offset,
 -                              size_t size, int direction);
 -      void            (*sync_sg_for_cpu)(struct device *hwdev,
 -                              struct scatterlist *sg, int nelems,
 -                              int direction);
 -      void            (*sync_sg_for_device)(struct device *hwdev,
 -                              struct scatterlist *sg, int nelems,
 -                              int direction);
 -      int             (*map_sg)(struct device *hwdev, struct scatterlist *sg,
 -                              int nents, int direction);
 -      void            (*unmap_sg)(struct device *hwdev,
 -                              struct scatterlist *sg, int nents,
 -                              int direction);
 -      int             (*dma_supported_op)(struct device *hwdev, u64 mask);
 -      int             is_phys;
 -};
 -
 -extern struct dma_mapping_ops *dma_ops;
+ #define ARCH_HAS_DMA_GET_REQUIRED_MASK
 +extern struct dma_map_ops *dma_ops;
  extern struct ia64_machine_vector ia64_mv;
  extern void set_iommu_machvec(void);
  
@@@ -44,7 -45,24 +44,8 @@@ typedef void ia64_mv_kernel_launch_even
  
  /* DMA-mapping interface: */
  typedef void ia64_mv_dma_init (void);
 -typedef void *ia64_mv_dma_alloc_coherent (struct device *, size_t, dma_addr_t *, gfp_t);
 -typedef void ia64_mv_dma_free_coherent (struct device *, size_t, void *, dma_addr_t);
 -typedef dma_addr_t ia64_mv_dma_map_single (struct device *, void *, size_t, int);
 -typedef void ia64_mv_dma_unmap_single (struct device *, dma_addr_t, size_t, int);
 -typedef int ia64_mv_dma_map_sg (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_unmap_sg (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_sync_single_for_cpu (struct device *, dma_addr_t, size_t, int);
 -typedef void ia64_mv_dma_sync_sg_for_cpu (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_sync_single_for_device (struct device *, dma_addr_t, size_t, int);
 -typedef void ia64_mv_dma_sync_sg_for_device (struct device *, struct scatterlist *, int, int);
 -typedef int ia64_mv_dma_mapping_error(struct device *, dma_addr_t dma_addr);
 -typedef int ia64_mv_dma_supported (struct device *, u64);
 -
 -typedef dma_addr_t ia64_mv_dma_map_single_attrs (struct device *, void *, size_t, int, struct dma_attrs *);
 -typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *);
 -typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
 -typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
+ typedef u64 ia64_mv_dma_get_required_mask (struct device *);
 +typedef struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
  
  /*
   * WARNING: The legacy I/O space is _architected_.  Platforms are
@@@ -128,7 -148,19 +129,8 @@@ extern void machvec_tlb_migrate_finish 
  #  define platform_global_tlb_purge   ia64_mv.global_tlb_purge
  #  define platform_tlb_migrate_finish ia64_mv.tlb_migrate_finish
  #  define platform_dma_init           ia64_mv.dma_init
 -#  define platform_dma_alloc_coherent ia64_mv.dma_alloc_coherent
 -#  define platform_dma_free_coherent  ia64_mv.dma_free_coherent
 -#  define platform_dma_map_single_attrs       ia64_mv.dma_map_single_attrs
 -#  define platform_dma_unmap_single_attrs     ia64_mv.dma_unmap_single_attrs
 -#  define platform_dma_map_sg_attrs   ia64_mv.dma_map_sg_attrs
 -#  define platform_dma_unmap_sg_attrs ia64_mv.dma_unmap_sg_attrs
 -#  define platform_dma_sync_single_for_cpu ia64_mv.dma_sync_single_for_cpu
 -#  define platform_dma_sync_sg_for_cpu        ia64_mv.dma_sync_sg_for_cpu
 -#  define platform_dma_sync_single_for_device ia64_mv.dma_sync_single_for_device
 -#  define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device
 -#  define platform_dma_mapping_error          ia64_mv.dma_mapping_error
 -#  define platform_dma_supported      ia64_mv.dma_supported
+ #  define platform_dma_get_required_mask ia64_mv.dma_get_required_mask
 +#  define platform_dma_get_ops                ia64_mv.dma_get_ops
  #  define platform_irq_to_vector      ia64_mv.irq_to_vector
  #  define platform_local_vector_to_irq        ia64_mv.local_vector_to_irq
  #  define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem
@@@ -171,7 -203,19 +173,8 @@@ struct ia64_machine_vector 
        ia64_mv_global_tlb_purge_t *global_tlb_purge;
        ia64_mv_tlb_migrate_finish_t *tlb_migrate_finish;
        ia64_mv_dma_init *dma_init;
 -      ia64_mv_dma_alloc_coherent *dma_alloc_coherent;
 -      ia64_mv_dma_free_coherent *dma_free_coherent;
 -      ia64_mv_dma_map_single_attrs *dma_map_single_attrs;
 -      ia64_mv_dma_unmap_single_attrs *dma_unmap_single_attrs;
 -      ia64_mv_dma_map_sg_attrs *dma_map_sg_attrs;
 -      ia64_mv_dma_unmap_sg_attrs *dma_unmap_sg_attrs;
 -      ia64_mv_dma_sync_single_for_cpu *dma_sync_single_for_cpu;
 -      ia64_mv_dma_sync_sg_for_cpu *dma_sync_sg_for_cpu;
 -      ia64_mv_dma_sync_single_for_device *dma_sync_single_for_device;
 -      ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device;
 -      ia64_mv_dma_mapping_error *dma_mapping_error;
 -      ia64_mv_dma_supported *dma_supported;
+       ia64_mv_dma_get_required_mask *dma_get_required_mask;
 +      ia64_mv_dma_get_ops *dma_get_ops;
        ia64_mv_irq_to_vector *irq_to_vector;
        ia64_mv_local_vector_to_irq *local_vector_to_irq;
        ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem;
        platform_global_tlb_purge,              \
        platform_tlb_migrate_finish,            \
        platform_dma_init,                      \
 -      platform_dma_alloc_coherent,            \
 -      platform_dma_free_coherent,             \
 -      platform_dma_map_single_attrs,          \
 -      platform_dma_unmap_single_attrs,        \
 -      platform_dma_map_sg_attrs,              \
 -      platform_dma_unmap_sg_attrs,            \
 -      platform_dma_sync_single_for_cpu,       \
 -      platform_dma_sync_sg_for_cpu,           \
 -      platform_dma_sync_single_for_device,    \
 -      platform_dma_sync_sg_for_device,        \
 -      platform_dma_mapping_error,                     \
 -      platform_dma_supported,                 \
+       platform_dma_get_required_mask,         \
 +      platform_dma_get_ops,                   \
        platform_irq_to_vector,                 \
        platform_local_vector_to_irq,           \
        platform_pci_get_legacy_mem,            \
@@@ -279,11 -332,47 +283,14 @@@ extern struct dma_map_ops *dma_get_ops(
  # define platform_kernel_launch_event machvec_noop
  #endif
  #ifndef platform_dma_init
 -# define platform_dma_init            swiotlb_init
 -#endif
 -#ifndef platform_dma_alloc_coherent
 -# define platform_dma_alloc_coherent  swiotlb_alloc_coherent
 -#endif
 -#ifndef platform_dma_free_coherent
 -# define platform_dma_free_coherent   swiotlb_free_coherent
 -#endif
 -#ifndef platform_dma_map_single_attrs
 -# define platform_dma_map_single_attrs        swiotlb_map_single_attrs
 -#endif
 -#ifndef platform_dma_unmap_single_attrs
 -# define platform_dma_unmap_single_attrs      swiotlb_unmap_single_attrs
 -#endif
 -#ifndef platform_dma_map_sg_attrs
 -# define platform_dma_map_sg_attrs    swiotlb_map_sg_attrs
 -#endif
 -#ifndef platform_dma_unmap_sg_attrs
 -# define platform_dma_unmap_sg_attrs  swiotlb_unmap_sg_attrs
 -#endif
 -#ifndef platform_dma_sync_single_for_cpu
 -# define platform_dma_sync_single_for_cpu     swiotlb_sync_single_for_cpu
 -#endif
 -#ifndef platform_dma_sync_sg_for_cpu
 -# define platform_dma_sync_sg_for_cpu         swiotlb_sync_sg_for_cpu
 -#endif
 -#ifndef platform_dma_sync_single_for_device
 -# define platform_dma_sync_single_for_device  swiotlb_sync_single_for_device
 -#endif
 -#ifndef platform_dma_sync_sg_for_device
 -# define platform_dma_sync_sg_for_device      swiotlb_sync_sg_for_device
 -#endif
 -#ifndef platform_dma_mapping_error
 -# define platform_dma_mapping_error           swiotlb_dma_mapping_error
 +# define platform_dma_init            swiotlb_dma_init
  #endif
 -#ifndef platform_dma_supported
 -# define  platform_dma_supported      swiotlb_dma_supported
 +#ifndef platform_dma_get_ops
 +# define platform_dma_get_ops         dma_get_ops
  #endif
+ #ifndef platform_dma_get_required_mask
+ # define  platform_dma_get_required_mask      ia64_dma_get_required_mask
+ #endif
  #ifndef platform_irq_to_vector
  # define platform_irq_to_vector               __ia64_irq_to_vector
  #endif
@@@ -55,7 -55,19 +55,8 @@@ extern ia64_mv_readb_t __sn_readb_relax
  extern ia64_mv_readw_t __sn_readw_relaxed;
  extern ia64_mv_readl_t __sn_readl_relaxed;
  extern ia64_mv_readq_t __sn_readq_relaxed;
 -extern ia64_mv_dma_alloc_coherent     sn_dma_alloc_coherent;
 -extern ia64_mv_dma_free_coherent      sn_dma_free_coherent;
 -extern ia64_mv_dma_map_single_attrs   sn_dma_map_single_attrs;
 -extern ia64_mv_dma_unmap_single_attrs sn_dma_unmap_single_attrs;
 -extern ia64_mv_dma_map_sg_attrs               sn_dma_map_sg_attrs;
 -extern ia64_mv_dma_unmap_sg_attrs     sn_dma_unmap_sg_attrs;
 -extern ia64_mv_dma_sync_single_for_cpu        sn_dma_sync_single_for_cpu;
 -extern ia64_mv_dma_sync_sg_for_cpu    sn_dma_sync_sg_for_cpu;
 -extern ia64_mv_dma_sync_single_for_device sn_dma_sync_single_for_device;
 -extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device;
 -extern ia64_mv_dma_mapping_error      sn_dma_mapping_error;
 -extern ia64_mv_dma_supported          sn_dma_supported;
+ extern ia64_mv_dma_get_required_mask  sn_dma_get_required_mask;
 +extern ia64_mv_dma_init                       sn_dma_init;
  extern ia64_mv_migrate_t              sn_migrate;
  extern ia64_mv_kernel_launch_event_t  sn_kernel_launch_event;
  extern ia64_mv_setup_msi_irq_t                sn_setup_msi_irq;
@@@ -99,7 -111,20 +100,8 @@@ extern ia64_mv_pci_fixup_bus_t             sn_pci_
  #define platform_pci_get_legacy_mem   sn_pci_get_legacy_mem
  #define platform_pci_legacy_read      sn_pci_legacy_read
  #define platform_pci_legacy_write     sn_pci_legacy_write
 -#define platform_dma_init             machvec_noop
 -#define platform_dma_alloc_coherent   sn_dma_alloc_coherent
 -#define platform_dma_free_coherent    sn_dma_free_coherent
 -#define platform_dma_map_single_attrs sn_dma_map_single_attrs
 -#define platform_dma_unmap_single_attrs       sn_dma_unmap_single_attrs
 -#define platform_dma_map_sg_attrs     sn_dma_map_sg_attrs
 -#define platform_dma_unmap_sg_attrs   sn_dma_unmap_sg_attrs
 -#define platform_dma_sync_single_for_cpu sn_dma_sync_single_for_cpu
 -#define platform_dma_sync_sg_for_cpu  sn_dma_sync_sg_for_cpu
 -#define platform_dma_sync_single_for_device sn_dma_sync_single_for_device
 -#define platform_dma_sync_sg_for_device       sn_dma_sync_sg_for_device
 -#define platform_dma_mapping_error            sn_dma_mapping_error
 -#define platform_dma_supported                sn_dma_supported
+ #define platform_dma_get_required_mask        sn_dma_get_required_mask
 +#define platform_dma_init             sn_dma_init
  #define platform_migrate              sn_migrate
  #define platform_kernel_launch_event    sn_kernel_launch_event
  #ifdef CONFIG_PCI_MSI
@@@ -346,7 -354,14 +346,13 @@@ static int sn_dma_mapping_error(struct 
  {
        return 0;
  }
 -EXPORT_SYMBOL(sn_dma_mapping_error);
  
+ u64 sn_dma_get_required_mask(struct device *dev)
+ {
+       return DMA_64BIT_MASK;
+ }
+ EXPORT_SYMBOL_GPL(sn_dma_get_required_mask);
  char *sn_pci_get_legacy_mem(struct pci_bus *bus)
  {
        if (!SN_PCIBUS_BUSSOFT(bus))
Simple merge