From: Jan Beulich Date: Tue, 21 Mar 2023 12:46:39 +0000 (+0100) Subject: VT-d: constrain IGD check X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f971f5c531ce6a5fd6c1ff1f525f2c6837eeb78d;p=people%2Ftklengyel%2Fxen.git VT-d: constrain IGD check 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 Reviewed-by: Kevin Tian master commit: f8c4317295fa1cde1a81779b7e362651c084efb8 master date: 2023-03-14 10:44:08 +0100 --- diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c index 78c8bad151..78d4526446 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -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;