[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] vt-d: Define a struct IO_xAPIC_route_entry to accommodate both ioapic
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1223546893 -3600 # Node ID b8f329d2c074a06b47f3be2b4e0bfe1ac5b232e5 # Parent 10dec51bfa817f4f5c54f2bd9c1f94cffe748361 vt-d: Define a struct IO_xAPIC_route_entry to accommodate both ioapic and iosapic. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx> --- xen/drivers/passthrough/vtd/intremap.c | 10 ++++---- xen/drivers/passthrough/vtd/vtd.h | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff -r 10dec51bfa81 -r b8f329d2c074 xen/drivers/passthrough/vtd/intremap.c --- a/xen/drivers/passthrough/vtd/intremap.c Thu Oct 09 10:16:49 2008 +0100 +++ b/xen/drivers/passthrough/vtd/intremap.c Thu Oct 09 11:08:13 2008 +0100 @@ -44,7 +44,7 @@ u16 apicid_to_bdf(int apic_id) } static int remap_entry_to_ioapic_rte( - struct iommu *iommu, struct IO_APIC_route_entry *old_rte) + struct iommu *iommu, struct IO_xAPIC_route_entry *old_rte) { struct iremap_entry *iremap_entry = NULL, *iremap_entries; struct IO_APIC_route_remap_entry *remap_rte; @@ -90,13 +90,13 @@ static int remap_entry_to_ioapic_rte( } static int ioapic_rte_to_remap_entry(struct iommu *iommu, - int apic_id, struct IO_APIC_route_entry *old_rte, + int apic_id, struct IO_xAPIC_route_entry *old_rte, unsigned int rte_upper, unsigned int value) { struct iremap_entry *iremap_entry = NULL, *iremap_entries; struct iremap_entry new_ire; struct IO_APIC_route_remap_entry *remap_rte; - struct IO_APIC_route_entry new_rte; + struct IO_xAPIC_route_entry new_rte; int index; unsigned long flags; struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu); @@ -177,7 +177,7 @@ unsigned int io_apic_read_remap_rte( unsigned int io_apic_read_remap_rte( unsigned int apic, unsigned int reg) { - struct IO_APIC_route_entry old_rte = { 0 }; + struct IO_xAPIC_route_entry old_rte = { 0 }; struct IO_APIC_route_remap_entry *remap_rte; int rte_upper = (reg & 1) ? 1 : 0; struct iommu *iommu = ioapic_to_iommu(mp_ioapics[apic].mpc_apicid); @@ -222,7 +222,7 @@ void io_apic_write_remap_rte( void io_apic_write_remap_rte( unsigned int apic, unsigned int reg, unsigned int value) { - struct IO_APIC_route_entry old_rte = { 0 }; + struct IO_xAPIC_route_entry old_rte = { 0 }; struct IO_APIC_route_remap_entry *remap_rte; unsigned int rte_upper = (reg & 1) ? 1 : 0; struct iommu *iommu = ioapic_to_iommu(mp_ioapics[apic].mpc_apicid); diff -r 10dec51bfa81 -r b8f329d2c074 xen/drivers/passthrough/vtd/vtd.h --- a/xen/drivers/passthrough/vtd/vtd.h Thu Oct 09 10:16:49 2008 +0100 +++ b/xen/drivers/passthrough/vtd/vtd.h Thu Oct 09 11:08:13 2008 +0100 @@ -22,6 +22,43 @@ #define _VTD_H_ #include <xen/iommu.h> + +/* Accomodate both IOAPIC and IOSAPIC. */ +struct IO_xAPIC_route_entry { + __u32 vector : 8, + delivery_mode : 3, /* 000: FIXED + * 001: lowest prio + * 111: ExtINT + */ + dest_mode : 1, /* 0: physical, 1: logical */ + delivery_status : 1, + polarity : 1, + irr : 1, + trigger : 1, /* 0: edge, 1: level */ + mask : 1, /* 0: enabled, 1: disabled */ + __reserved_2 : 15; + + union { + struct { __u32 + __reserved_1 : 24, + physical_dest : 4, + __reserved_2 : 4; + } physical; + + struct { __u32 + __reserved_1 : 24, + logical_dest : 8; + } logical; + +#ifdef __ia64__ + struct { __u32 + __reserved_1 : 16, + dest_id : 16; + }; +#endif + } dest; + +} __attribute__ ((packed)); struct IO_APIC_route_remap_entry { union { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |