31 lines
1.3 KiB
Diff
31 lines
1.3 KiB
Diff
|
# Commit f8ecf31c31906552522c2a1b0d1cada07d78876e
|
||
|
# Date 2014-05-26 12:28:46 +0200
|
||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
VT-d: fix mask applied to DMIBAR in desktop chipset XSA-59 workaround
|
||
|
|
||
|
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" 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>
|
||
|
|
||
|
--- a/xen/drivers/passthrough/vtd/quirks.c
|
||
|
+++ b/xen/drivers/passthrough/vtd/quirks.c
|
||
|
@@ -467,7 +467,7 @@ void pci_vtd_quirk(const struct pci_dev
|
||
|
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 & 0x7ffffff000UL; /* bits 12...38 */
|
||
|
if ( (bar & 1) && pa &&
|
||
|
page_is_ram_type(paddr_to_pfn(pa), RAM_TYPE_RESERVED) )
|
||
|
{
|