mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
VT-d: use qword MMIO access for MSI address writes
Also make dmar_{read,write}q() actually do what their names suggest (we
don't need to be concerned of 32-bit restrictions anymore).
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
This commit is contained in:
1 parent
73cb5d43a8
commit
ae05fd3912
2 files changed
+5
-13
No files matched your search
@@ -1054,8 +1054,7 @@ static void dma_msi_set_affinity(struct irq_desc *desc, const cpumask_t *mask)
|
||||
|
||||
spin_lock_irqsave(&iommu->register_lock, flags);
|
||||
dmar_writel(iommu->reg, DMAR_FEDATA_REG, msg.data);
|
||||
dmar_writel(iommu->reg, DMAR_FEADDR_REG, msg.address_lo);
|
||||
dmar_writel(iommu->reg, DMAR_FEUADDR_REG, msg.address_hi);
|
||||
dmar_writeq(iommu->reg, DMAR_FEADDR_REG, msg.address);
|
||||
spin_unlock_irqrestore(&iommu->register_lock, flags);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,17 +51,10 @@
|
||||
#define DMAR_IRTA_REG 0xB8 /* intr remap */
|
||||
|
||||
#define OFFSET_STRIDE (9)
|
||||
#define dmar_readl(dmar, reg) readl(dmar + reg)
|
||||
#define dmar_writel(dmar, reg, val) writel(val, dmar + reg)
|
||||
#define dmar_readq(dmar, reg) ({ \
|
||||
u32 lo, hi; \
|
||||
lo = dmar_readl(dmar, reg); \
|
||||
hi = dmar_readl(dmar, reg + 4); \
|
||||
(((u64) hi) << 32) + lo; })
|
||||
#define dmar_writeq(dmar, reg, val) do {\
|
||||
dmar_writel(dmar, reg, (u32)val); \
|
||||
dmar_writel(dmar, reg + 4, (u32)((u64) val >> 32)); \
|
||||
} while (0)
|
||||
#define dmar_readl(dmar, reg) readl((dmar) + (reg))
|
||||
#define dmar_readq(dmar, reg) readq((dmar) + (reg))
|
||||
#define dmar_writel(dmar, reg, val) writel(val, (dmar) + (reg))
|
||||
#define dmar_writeq(dmar, reg, val) writeq(val, (dmar) + (reg))
|
||||
|
||||
#define VER_MAJOR(v) (((v) & 0xf0) >> 4)
|
||||
#define VER_MINOR(v) ((v) & 0x0f)
|
||||
|
||||