hvmloader: skip upper field of 64 bit base address register.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 28 Aug 2008 08:59:49 +0000 (09:59 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 28 Aug 2008 08:59:49 +0000 (09:59 +0100)
Signed-off-by: Yuji Shimada <shimada-yxb@necst.nec.co.jp>
tools/firmware/hvmloader/hvmloader.c

index d12dc916b995e65968f7ec56205b6fce9d739616..9b578d89e75fedc331a35467db87df81b988442a 100644 (file)
@@ -243,6 +243,13 @@ static void pci_setup(void)
             bars[i].bar_sz  = bar_sz;
 
             nr_bars++;
+
+            /* Skip the upper-half of the address for a 64-bit BAR. */
+            if ( (bar_data & (PCI_BASE_ADDRESS_SPACE |
+                              PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == 
+                 (PCI_BASE_ADDRESS_SPACE_MEMORY | 
+                  PCI_BASE_ADDRESS_MEM_TYPE_64) )
+                bar++;
         }
 
         /* Map the interrupt. */