]> xenbits.xensource.com Git - qemu-xen-4.0-testing.git/commitdiff
pass-through: Fix I/O BAR mapping problem xen-3.3.0-rc3
authorKeir Fraser <kfraser@endor.localdomain>
Wed, 6 Aug 2008 09:55:38 +0000 (10:55 +0100)
committerKeir Fraser <kfraser@endor.localdomain>
Wed, 6 Aug 2008 09:55:38 +0000 (10:55 +0100)
Check BAR type indicator to avoid I/O BAR being mistaken as 64-bit =
memory BAR.

Signed-off-by: Yu Zhao <yu.zhao@intel.com>
hw/pass-through.c

index 7b462344bbf096252cb60c50f6dc50327cd57f38..6d5686fcad48be6649739c16b2f94135d26c02e4 100644 (file)
@@ -1511,7 +1511,9 @@ static int pt_bar_reg_parse(
     /* check 64bit BAR */
     index = pt_bar_offset_to_index(reg->offset);
     if ((index > 0) && (index < PCI_ROM_SLOT) &&
-        (d->config[bar_64] & PCI_BASE_ADDRESS_MEM_TYPE_64))
+        ((d->config[bar_64] & (PCI_BASE_ADDRESS_SPACE |
+                               PCI_BASE_ADDRESS_MEM_TYPE_MASK)) ==
+         (PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64)))
     {
         region = &ptdev->bases[index-1];
         if (region->bar_flag != PT_BAR_FLAG_UPPER)