]> xenbits.xensource.com Git - xen.git/commitdiff
VT-d: fix mask applied to DMIBAR in desktop chipset XSA-59 workaround
authorJan Beulich <jbeulich@suse.com>
Tue, 3 Jun 2014 10:21:12 +0000 (12:21 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 3 Jun 2014 10:21:12 +0000 (12:21 +0200)
In commit  ("VT-d: suppress UR signaling for desktop chipsets")
the mask applied to the value read from DMIBAR is to narrow, only the
comment accompanying it was correct. Fix that and tag the literal
number as "long long" at once to avoid eventual compiler warnings.

The widest possible value so far is 39 bits; all chipsets covered here
but having less than this number of bits have the remaining bits marked
reserved (zero), and hence there's no need for making the mask chipset
specific.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Yang Zhang <yang.z.zhang@intel.com>
master commit: f8ecf31c31906552522c2a1b0d1cada07d78876e
master date: 2014-05-26 12:28:46 +0200

xen/drivers/passthrough/vtd/quirks.c

index bfa25d7bc5964ff34b86c9ffa1c7cd9e823617b4..c0f409f19cf4fc0bd6421ff17097454e123360d2 100644 (file)
@@ -474,7 +474,7 @@ void pci_vtd_quirk(const struct pci_dev *pdev)
     case 0xc00: case 0xc04: case 0xc08: /* Haswell */
         bar = pci_conf_read32(seg, bus, dev, func, 0x6c);
         bar = (bar << 32) | pci_conf_read32(seg, bus, dev, func, 0x68);
-        pa = bar & 0x7fffff000; /* bits 12...38 */
+        pa = bar & 0x7ffffff000ULL; /* bits 12...38 */
         if ( (bar & 1) && pa &&
              page_is_ram_type(paddr_to_pfn(pa), RAM_TYPE_RESERVED) )
         {