diff options
-rw-r--r-- | xen/drivers/passthrough/vtd/iommu.c | 17 | ||||
-rw-r--r-- | xen/include/asm-x86/msi.h | 12 |
2 files changed, 3 insertions, 26 deletions
diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 2eae02502a..3af5bc540b 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1074,22 +1074,11 @@ static void dma_msi_set_affinity(struct irq_desc *desc, const cpumask_t *mask) return; } - memset(&msg, 0, sizeof(msg)); - msg.data = MSI_DATA_VECTOR(desc->arch.vector) & 0xff; - msg.data |= 1 << 14; - msg.data |= (INT_DELIVERY_MODE != dest_LowestPrio) ? - MSI_DATA_DELIVERY_FIXED: - MSI_DATA_DELIVERY_LOWPRI; - - /* Follow MSI setting */ + msi_compose_msg(desc, &msg); + /* Are these overrides really needed? */ if (x2apic_enabled) msg.address_hi = dest & 0xFFFFFF00; - msg.address_lo = (MSI_ADDRESS_HEADER << (MSI_ADDRESS_HEADER_SHIFT + 8)); - msg.address_lo |= INT_DEST_MODE ? MSI_ADDR_DESTMODE_LOGIC: - MSI_ADDR_DESTMODE_PHYS; - msg.address_lo |= (INT_DELIVERY_MODE != dest_LowestPrio) ? - MSI_ADDR_REDIRECTION_CPU: - MSI_ADDR_REDIRECTION_LOWPRI; + msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK; msg.address_lo |= MSI_ADDR_DEST_ID(dest & 0xff); spin_lock_irqsave(&iommu->register_lock, flags); diff --git a/xen/include/asm-x86/msi.h b/xen/include/asm-x86/msi.h index 0201309e26..f723094cfb 100644 --- a/xen/include/asm-x86/msi.h +++ b/xen/include/asm-x86/msi.h @@ -149,18 +149,6 @@ int msi_free_irq(struct msi_desc *entry); /* * MSI Defined Data Structures */ -#define MSI_ADDRESS_HEADER 0xfee -#define MSI_ADDRESS_HEADER_SHIFT 12 -#define MSI_ADDRESS_HEADER_MASK 0xfff000 -#define MSI_ADDRESS_DEST_ID_MASK 0xfff0000f -#define MSI_TARGET_CPU_MASK 0xff -#define MSI_TARGET_CPU_SHIFT 12 -#define MSI_DELIVERY_MODE 0 -#define MSI_LEVEL_MODE 1 /* Edge always assert */ -#define MSI_TRIGGER_MODE 0 /* MSI is edge sensitive */ -#define MSI_PHYSICAL_MODE 0 -#define MSI_LOGICAL_MODE 1 -#define MSI_REDIRECTION_HINT_MODE 0 struct msg_data { #if defined(__LITTLE_ENDIAN_BITFIELD) |