vt-d: Minor fixing of interrupt remapping
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 27 Jun 2008 13:11:41 +0000 (14:11 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 27 Jun 2008 13:11:41 +0000 (14:11 +0100)
When ir_ctrl->iremap_index == -1, it means there is no remap
entry. So it needn't to convert from remap format to normal ioapic
format.

Signed-off-by: Weidong Han <weidong.han@intel.com>
xen/drivers/passthrough/vtd/intremap.c

index 3b6a2795c4f1f7dabec1da13cda87f2dec290fdc..5654813b13693cf9d6a9e3b93d839a8483bd1774 100644 (file)
@@ -52,7 +52,7 @@ static void remap_entry_to_ioapic_rte(
     unsigned long flags;
     struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
 
-    if ( ir_ctrl == NULL || ir_ctrl->iremap_index < 0 )
+    if ( ir_ctrl == NULL )
     {
         dprintk(XENLOG_ERR VTDPREFIX,
                 "remap_entry_to_ioapic_rte: ir_ctl is not ready\n");
@@ -170,7 +170,8 @@ unsigned int io_apic_read_remap_rte(
     struct iommu *iommu = ioapic_to_iommu(mp_ioapics[apic].mpc_apicid);
     struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
 
-    if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 )
+    if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 ||
+         ir_ctrl->iremap_index == -1 )
     {
         *IO_APIC_BASE(apic) = reg;
         return *(IO_APIC_BASE(apic)+4);