iommu/vt-d: Use plain writeq() for dmar_writeq() where available
authorDavid Woodhouse <David.Woodhouse@intel.com>
Tue, 13 Oct 2015 19:48:21 +0000 (20:48 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Tue, 13 Oct 2015 19:48:23 +0000 (20:48 +0100)
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
include/linux/intel-iommu.h

index 6240063bdcac4c42da3f108e9b81c5800085c29b..08802b99f057fd6d0ce8f8d1a1a4437b54242a53 100644 (file)
 #define DMAR_IRTA_REG  0xb8    /* Interrupt remapping table addr register */
 
 #define OFFSET_STRIDE          (9)
-/*
-#define dmar_readl(dmar, reg) readl(dmar + reg)
-#define dmar_readq(dmar, reg) ({ \
-               u32 lo, hi; \
-               lo = readl(dmar + reg); \
-               hi = readl(dmar + reg + 4); \
-               (((u64) hi) << 32) + lo; })
-*/
+
+#ifdef CONFIG_64BIT
+#define dmar_readq(a) readq(a)
+#define dmar_writeq(a,v) writeq(v,a)
+#else
 static inline u64 dmar_readq(void __iomem *addr)
 {
        u32 lo, hi;
@@ -80,6 +77,7 @@ static inline void dmar_writeq(void __iomem *addr, u64 val)
        writel((u32)val, addr);
        writel((u32)(val >> 32), addr + 4);
 }
+#endif
 
 #define DMAR_VER_MAJOR(v)              (((v) & 0xf0) >> 4)
 #define DMAR_VER_MINOR(v)              ((v) & 0x0f)