]> xenbits.xensource.com Git - people/tklengyel/xen.git/commitdiff
VT-d: constrain IGD check
authorJan Beulich <jbeulich@suse.com>
Tue, 21 Mar 2023 12:46:39 +0000 (13:46 +0100)
committerJan Beulich <jbeulich@suse.com>
Tue, 21 Mar 2023 12:46:39 +0000 (13:46 +0100)
Marking a DRHD as controlling an IGD isn't very sensible without
checking that at the very least it's a graphics device that lives at
0000:00:02.0. Re-use the reading of the class-code to control both the
clearing of "gfx_only" and the setting of "igd_drhd_address".

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
master commit: f8c4317295fa1cde1a81779b7e362651c084efb8
master date: 2023-03-14 10:44:08 +0100

xen/drivers/passthrough/vtd/dmar.c

index 78c8bad1515a231b0a501308e3003a5ce124fb2b..78d452644600363d209c0db7773e5bd7cc0a8671 100644 (file)
@@ -391,15 +391,12 @@ static int __init acpi_parse_dev_scope(
 
             if ( drhd )
             {
-                if ( (seg == 0) && (bus == 0) && (path->dev == 2) &&
-                     (path->fn == 0) )
-                    igd_drhd_address = drhd->address;
-
-                if ( gfx_only &&
-                     pci_conf_read8(PCI_SBDF(seg, bus, path->dev, path->fn),
+                if ( pci_conf_read8(PCI_SBDF(seg, bus, path->dev, path->fn),
                                     PCI_CLASS_DEVICE + 1) != 0x03
                                     /* PCI_BASE_CLASS_DISPLAY */ )
                     gfx_only = false;
+                else if ( !seg && !bus && path->dev == 2 && !path->fn )
+                    igd_drhd_address = drhd->address;
             }
 
             break;