From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856732; cv=none; d=zohomail.com; s=zohoarc; b=Na25gCNAS9QCgq+Qo2lhctT5AN+BtoN2+NzOjkLbvUCGLvd8g0/8JFK69913uikzyW9vC5EOxCQ4T2tWtJ3TB+JDPPkTMgAe3ueejLILK2c2nfncppBB9MrcF6cjabwr68bzPsILORmPxNMbI00asGhSQo+4Ym3Jssmy8TChF9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856732; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=duZXrZnRA5wj2/8ui2msQzSMqliRghPddVvk8iG7h/c=; b=eCelAgp29lm3IqI3x/AFWdWeqt5gmcAoWy60GzZ8rnJjGVJeiJbqHkVr49aspYmIpLJpKPSKwurZgOtomwL3ENAE3wRvB2qE3yHZxNLpdlTYnIitemKF8wxxChEYNkO7dspgJCVAN8Gps39U0mcyeolw91fHvBTQ6pISgCXR81I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856732910725.6071859330887; Mon, 28 Apr 2025 09:12:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R4v-0002U9-Jj; Mon, 28 Apr 2025 12:11:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R3t-0001wp-RM for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:34 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R3p-0008Nn-J4 for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:28 -0400 Received: by mail-pl1-x643.google.com with SMTP id d9443c01a7336-22c33e5013aso60107435ad.0 for ; Mon, 28 Apr 2025 09:10:23 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856622; x=1746461422; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=duZXrZnRA5wj2/8ui2msQzSMqliRghPddVvk8iG7h/c=; b=eAwe743hZeLuK0+ETgKR0DMXjeGDr+Yh9Bk1Jy8as6F4IoeupBSPTHOqjWLrNFt2Bt t36Rtn8NT5708ROlyHfBMiW+tOwXN6UJnOBRg8PLsJuZHHKdpztE/smj68I0mwQ+1Kkb 6lP8r6Pnp5ICPQ5I2Y/ve7FxUJdcMXy8AQ4nqEMUseC4xf5b1cbzzh6tJWIDEf3w9Th1 vtM5lEEwILa+aWkjeG47LJlxA9zAsY52ZMtN80W78sKco+jDHMSFPDxXnJLM5MJ5SFxS MxSG1DvcCtVddYNGBwOnh7yUnx7XGPjhliXxyaWsDPoS7m0fquVF0RrPlMmLEoRcZ7GU 8EvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856622; x=1746461422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=duZXrZnRA5wj2/8ui2msQzSMqliRghPddVvk8iG7h/c=; b=tBJZHE/a5bD7Cpn1QvBuezcczubaHBvplpMuCnGODNdf6fmAS47JWs8nrLzBqiQU2C zbC31M1Yh32p3RiSTZ89JzVrgE9cIip640F1Kh5Foi1VYiePc6VF/vmjErZEp2PUdRuD ACYdInRfLFCZeAK1rEJdavKwgClAppylcs+o8AkA7K8Rc4v5w3m7JMkG2za3LIEGXuix udYxqrDhcnAgrgnOl5FA/T3Wc6iTGEwMbnhfIc7G0pfU/vCFKb83g/bgdCsxwDMaN3Qk ezJ1rNwoI2MUJbdIJj8ekwPPY/MBjsoSUhYpwH4TwT4gFeuEQ5Zwk5nc7bRc59GZCeA2 tHBw== X-Gm-Message-State: AOJu0YzmXJ33z8K0qlYUVlpzrcenCDpH+0YnH85t+EAslmBf8vEsrLTu vLo9XVWL4b3hiEto9y/gUmlPDxeAmGHawH3OKXCRcAd8Oup8ONo= X-Gm-Gg: ASbGncvdNDgVl32jp0aPCIxmPlRNRFKbFnY8UFvLJXP6X2veL1DNKo+VRMsjT6JBAO6 j/JPCZpW757k4xxJ5KwLQA30C+EjmAmGW3cwJpPuMX2Nd0gLZWGkSc7DXjCFZZ//5WQdcKIOks3 HdrfNeVH/hatKe6UzQtULm3W+9NP1dI4g+4CFGYy5AUar8Jeqqc6iVCPMg98q74wjLOamH0k+BB T8fXcOg3A3pLVW4/tJ4m4hb987wVJNq57er6rcvh27DJ7NxvYIhod454gSkicWJNtXXpvoq68Xb o00PsTP5rg7qPM/nfguI9c3gJVw+rMEFHMco6kcwS+fZ00qQGNs+jKPB X-Google-Smtp-Source: AGHT+IH94K57H6yfgOVlI7r9VYrXUFkZWzvwefbsfyWt1wX2m1BwFaS1GamjeS7scOsyjFHJ41Xnbg== X-Received: by 2002:a17:903:41c9:b0:223:f9a4:3fa8 with SMTP id d9443c01a7336-22dc6a040dcmr136348865ad.19.1745856622320; Mon, 28 Apr 2025 09:10:22 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 1/9] vfio/igd: Restrict legacy mode to Gen6-9 devices Date: Tue, 29 Apr 2025 00:09:56 +0800 Message-ID: <20250428161004.35613-2-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x643.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856734354019100 Content-Type: text/plain; charset="utf-8" Intel only provides legacy VBIOS for IGD up to Gen9, and there is no CSM support on later devices. Additionally, Seabios can only handle 32-bit BDSM register used until Gen9. Since legacy mode requires VGA capability, restrict it to Gen6 through Gen9 devices. Link: https://lore.kernel.org/qemu-devel/20250325172239.27926-1-tomitamoeko= @gmail.com/T/ Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- docs/igd-assign.txt | 1 + hw/vfio/igd.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/igd-assign.txt b/docs/igd-assign.txt index 3aed7956d5..95beb76812 100644 --- a/docs/igd-assign.txt +++ b/docs/igd-assign.txt @@ -47,6 +47,7 @@ Intel document [1] shows how to dump VBIOS to file. For U= EFI Option ROM, see =20 QEMU also provides a "Legacy" mode that implicitly enables full functional= ity on IGD, it is automatically enabled when +* IGD generation is 6 to 9 (Sandy Bridge to Comet Lake) * Machine type is i440fx * IGD is assigned to guest BDF 00:02.0 * ROM BAR or romfile is present diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 6678e0e5cd..cecc3245b7 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -516,11 +516,13 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *= vdev, Error **errp) =20 /* * For backward compatibility, enable legacy mode when + * - Device geneation is 6 to 9 (including both) * - Machine type is i440fx (pc_piix) * - IGD device is at guest BDF 00:02.0 * - Not manually disabled by x-igd-legacy-mode=3Doff */ if ((vdev->igd_legacy_mode !=3D ON_OFF_AUTO_OFF) && + (gen >=3D 6 && gen <=3D 9) && !strcmp(MACHINE_GET_CLASS(qdev_get_machine())->family, "pc_piix") = && (&vdev->pdev =3D=3D pci_find_device(pci_device_root_bus(&vdev->pde= v), 0, PCI_DEVFN(0x2, 0)))) { @@ -565,7 +567,9 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) vdev->features |=3D VFIO_FEATURE_ENABLE_IGD_LPC; } else if (vdev->igd_legacy_mode =3D=3D ON_OFF_AUTO_ON) { error_setg(&err, - "Machine is not i440fx or assigned BDF is not 00:02.0"); + "Machine is not i440fx, assigned BDF is not 00:02.0, " + "or device %04x (gen %d) doesn't support legacy mode", + vdev->device_id, gen); goto error; } =20 --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856757; cv=none; d=zohomail.com; s=zohoarc; b=htP61UpF1Ei5PoYcPCsj2ILOKQuIMBnggxXCSCQdpdXZvmpwbz+FmysXrsvr+q4cxPND9iWeDwjxJMguOCepjKM55JYnd0Tv5KWOik9m2EKmCmikwU18LKSDQ8uoEYAGEYnEyUdKgSozodKft2M1+flRQPDGq/25QTES87t2eQY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856757; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=I+hBDhes3/DrcIWlptsB64Pmy5+nfTxX6Db/iDs1KCE=; b=jtImaBSqkCCdcwBDxNx11hfuGGnukCLgyQvspwsfkPQJePYIB8f6PVY7MIBBFHx9I1eVle7RS2zRe5tZLxl2JibuIKlisZx1JK+WeJjnJCkMtqlX23NR+t0ccPU/b39m2s1GTSmT1w9EXIs8KrGiJAKxxLVFaF2rrltDisdT2X0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856757090282.23882903048127; Mon, 28 Apr 2025 09:12:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R5C-0002ww-SA; Mon, 28 Apr 2025 12:11:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R46-0002Az-VO for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:51 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R3t-0008P4-LK for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:42 -0400 Received: by mail-pl1-x643.google.com with SMTP id d9443c01a7336-2240b4de12bso75494765ad.2 for ; Mon, 28 Apr 2025 09:10:28 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856626; x=1746461426; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=I+hBDhes3/DrcIWlptsB64Pmy5+nfTxX6Db/iDs1KCE=; b=kqJ5EURp6S+KLM7HxWrJ5TnZTd9egvuFIT0/Jzfp9t/+NsvBnDNEpJAMWyBoxEmwgV uagE05vSuFA2EG45seEBCe1qbw2+Hluns/7/VzKsPtLLmvl8T1GTTjoch6TnluBzTeS6 xBNX49RzvGZwN8pP67EyiStH8QKfKhJk0LodzmwPHx14pC8e0+IvrPuCUqDeZi0RbbKJ l/IunLJpC4SsGpDIywvAn2h3FztYyOS+IxfaCV9GWaGPCmrNuBOkIMG86h6u6wPQj52l 8ZH/vcGWy00lO0fWESC86vRnxiLQDd+V9vNbtFkMQqVfqqjuHxCtldg3uwGtyTE3NYKY WzyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856626; x=1746461426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I+hBDhes3/DrcIWlptsB64Pmy5+nfTxX6Db/iDs1KCE=; b=OWjeqYA5H3L3z3NH4fv3y9521q0bC+aoTDSRmLtGMtDGpxJ6t75Cdh5iGPmO9C37KO t2LPWcL+NP5M130UQBcn2RNB7AvkpDkvpW5KCOIaKfuO8/qzqb9P3FEnKuaVPKso1EXc pk3X7opCdG02Z8W/eHcxYrr3bAm4NcMNAl6tiz+tqR1I2tt6yHvLOLX7Yws161T4Hpxb E0BOMQzI/bwr0wWeREI+RRvG75s1dLtucYiA430Yq/CsqlSFge8ITHilDv1YR78H8paV d3FfB2dSyum5stU35VMNYweiQbfv21efiKn7AUYiaiBn/8dvAvw774azLH0eFOEus+US WUxw== X-Gm-Message-State: AOJu0YyGDd4eOo9tcmY3U973aaq+NQ3iSRo+8GBr9okKZhJd760YHpCL s5fmB7mzTewrox2aDoj8E4CxbubBWCv9emlIVFYPn9bELhR5utM= X-Gm-Gg: ASbGncsdAk7+0oEOjgX6DdEHZjNXRudRxKhnkIx1J810TovdykDRX5ZHeaAYL1ZiWJh 40YIC3jJ3h0DV2YDwHKJaxZuCfUWR73F/5WqWPJRI2JQifQdtR1Q/JjtnoKpgLR/urdGHAv4iKH ENFjlzegBk/vVzTXewoMN/IDcf4QtSsXbzzdiozrO0cqBqROnuM64CC9NrIJ0NJvOWrnsT6Y1yv uTsDa5s112ykuOz3lbhQTSVvEL9C4H7KUYh3SrcYafqJjm8qb2NoNGTzXQwDmn8N67ZWdiDRfXC 2TYAP3CwLqBXrUR2v/xBYZa5nOBZozWptJRkSR8NIZILVtxLp+wuINBE X-Google-Smtp-Source: AGHT+IGHrAlQjtNfNelP3s4SZrhhlaFRgStmo2Z7AIrMI8EPbpiLPNUP/51zzUtf+nK4OUzO7zbWfQ== X-Received: by 2002:a17:902:f60e:b0:224:c46:d166 with SMTP id d9443c01a7336-22dc6a684famr156183585ad.40.1745856625758; Mon, 28 Apr 2025 09:10:25 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 2/9] vfio/igd: Always emulate ASLS (OpRegion) register Date: Tue, 29 Apr 2025 00:09:57 +0800 Message-ID: <20250428161004.35613-3-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x643.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856758067019000 Content-Type: text/plain; charset="utf-8" ASLS register represents the base address of OpRegion, and it is programmed with HPA. In IGD passthrough scenario, it needs to be reprogrammed with GPA by guest firmware. To prevent guest accessing wrong memory range, ASLS should always be emulated and cleared. In GVT-g scenario, emulating ASLS is unnecessary as access is handled by kvmgt backend [1]. [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tre= e/drivers/gpu/drm/i915/gvt/cfg_space.c?h=3Dv6.14#n295 Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index cecc3245b7..ae19456457 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -182,10 +182,6 @@ static bool vfio_pci_igd_opregion_init(VFIOPCIDevice *= vdev, =20 trace_vfio_pci_igd_opregion_enabled(vdev->vbasedev.name); =20 - pci_set_long(vdev->pdev.config + IGD_ASLS, 0); - pci_set_long(vdev->pdev.wmask + IGD_ASLS, ~0); - pci_set_long(vdev->emulated_config_bits + IGD_ASLS, ~0); - return true; } =20 @@ -583,7 +579,15 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_LPC) && !vfio_pci_igd_setup_lpc_bridge(vdev, errp)) { goto error; - } + } + + /* + * ASLS (OpRegion address) is read-only, emulated + * It contains HPA, guest firmware need to reprogram it with GPA. + */ + pci_set_long(vdev->pdev.config + IGD_ASLS, 0); + pci_set_long(vdev->pdev.wmask + IGD_ASLS, ~0); + pci_set_long(vdev->emulated_config_bits + IGD_ASLS, ~0); =20 /* * Allow user to override dsm size using x-igd-gms option, in multiple= s of --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856929; cv=none; d=zohomail.com; s=zohoarc; b=f+9ncdNkhQ8AkLx5kL5DBs8fyKN5jAu6fjdkm14tNChRFCo0gMbAWZm73wJyuAvm4SvO25pnSKPQ8bJp21t/0YAAKR7c8/4Zh9+oRLma+1dJi2eACKyaKCO9gcmMDqF7SjBtvmaAXacZJyFjsnkwmyES//0CecLWDQPRE5vF//w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856929; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t5z/5Pn/MHMC5yQ1xd7cZlEMU1fDDg/ajH/oCS93mEs=; b=YMH/E41OqRqXWCMqv1DZtn/vQDy4pB6UHmIJMvIhpHaSemzjBRoGItsbIPzzOona6XoEvsYvxVjA0IREDu3hHXo8ehTwHNnxkaoXPhZBVHCfODpPHOhRe147jQFvj4gvnwUhiVxxgUSzkBWSZFEizSu/HKCDgxxKM1XtUo6j1kE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856929830493.55578532383686; Mon, 28 Apr 2025 09:15:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R5t-0003gj-Qj; Mon, 28 Apr 2025 12:12:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R49-0002BL-53 for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:54 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R3y-0008PO-CS for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:43 -0400 Received: by mail-pl1-x643.google.com with SMTP id d9443c01a7336-22c33e5013aso60109005ad.0 for ; Mon, 28 Apr 2025 09:10:31 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856630; x=1746461430; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t5z/5Pn/MHMC5yQ1xd7cZlEMU1fDDg/ajH/oCS93mEs=; b=KOUfeaHiizzUkyXsphGcJLII/qG/qHT3UutNFuEyFA/af9JVBFPeK4wWgjPdjpeh5H 3+KURqSdbabKgeat3+pYMjSFjoAvpNvIp5H7mawNeEJDHtj5oDgs76BC+vwxYMD+F/zQ 0v/QQUhh31w9dvCcjAnNp5Sg1Xgusa1t96JVsMvqv7q73lxgW0cC7FrFqI0EYfl11ae+ Hoj4SEzEyUmhP5Hz9KvW4afCG+IAgzMSPInxcX+gSEaAeDqGhqZKJWRWTX6PjbKKHW2w V4fpDwqosXx09PeBc9rOHo/mhMgiChFi87GAoBJdE0Ook/2++6opXOinGVh2N3uMp53s mmZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856630; x=1746461430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t5z/5Pn/MHMC5yQ1xd7cZlEMU1fDDg/ajH/oCS93mEs=; b=gAQUtCHgwRdhFY7PeFQCKOSfxxce8dXXzN45U8w1E2swZHCFKsNcIZhnTy50zsHcOP QDq9SzK8V3x467o3YCe3ORI2djsJyCD43Yx674hvXjeKcuh9GLSBMJxv3VzJLeJ3xyDO 49sLzfnlMpJ46CE3wd9IRvFPXkP8pEkQSflzJa0oOf0Dc1GixfGK5WRJN1YHj3VuUYHA djlmUrVdO/C9aVCEPJeMnK134diFpv7/dXRWkTc9GVEHnZ15SgxndoYEBZu+4dJ5ZoB1 NQsKFNkDXwR1DKwi4gWpAEGGwBygdjSjLkpTd61LbylPMDQfrmBOcFnPtP7eKFiaY4Jq s/Wg== X-Gm-Message-State: AOJu0YxPCjuBa/xEloEhMLRMdyXUsNkr3ctXXVccifiaIhaiVq2W+s62 DnF66iuWlJFDQQP1j1LY4pPsyU8KehA3ldW1NXfm83IP5w3v6SI= X-Gm-Gg: ASbGncs6pxgq5JRRJBAvPpn/jYcYkIo9wujRw1bEqOgHONqiTAAE2D3p1CCWGq6L2Go SHEtg0oJOLhB3I5H/ClCpCfpsiGFc6jR1dls54PJgT7kIOz+UlYaBiHw1OLPv44f4i9G+ssR/1A mgn37HJLfqVFhcrxY05rpjBIA/W11Chhm9tkGMr73qa8HM0Kil85iFWSVb9oGAlk9WwG6WaB1e9 YPy4tIqyxIZnexonoqSTYYNL3oBqjEx1Ii/lnQTRnwbMWRaqqz+yZu/GvM2h6lpDZSZUAjfmJFb J3vlwR5ANkL6fCJGbf0GTToaQRyp4Xe9HHpdgsRyMuXYl4/HfIIFIGpLVqhOaOR+spw= X-Google-Smtp-Source: AGHT+IGkLldzK/oIf+6Q9o2RJOYSxFihpPBU1ofBoRRD4ecytderRXUylBMq5xZSOEngRJdUcEhNOA== X-Received: by 2002:a17:902:ea03:b0:21f:2ded:76ea with SMTP id d9443c01a7336-22dc6a6c939mr148864215ad.36.1745856630174; Mon, 28 Apr 2025 09:10:30 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 3/9] vfio/igd: Detect IGD device by OpRegion Date: Tue, 29 Apr 2025 00:09:58 +0800 Message-ID: <20250428161004.35613-4-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x643.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856931407019100 Content-Type: text/plain; charset="utf-8" There is currently no straightforward way to distinguish if a Intel graphics device is IGD or discrete GPU. However, only IGD devices have OpRegion. Use the presence of VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION to identify IGD devices. Still, OpRegion on hotplugged IGD device is not supported. Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index ae19456457..d6880cbff7 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -185,9 +185,10 @@ static bool vfio_pci_igd_opregion_init(VFIOPCIDevice *= vdev, return true; } =20 -static bool vfio_pci_igd_setup_opregion(VFIOPCIDevice *vdev, Error **errp) +static bool vfio_pci_igd_opregion_detect(VFIOPCIDevice *vdev, + struct vfio_region_info **opregio= n, + Error **errp) { - g_autofree struct vfio_region_info *opregion =3D NULL; int ret; =20 /* Hotplugging is not supported for opregion access */ @@ -198,17 +199,13 @@ static bool vfio_pci_igd_setup_opregion(VFIOPCIDevice= *vdev, Error **errp) =20 ret =3D vfio_device_get_region_info_type(&vdev->vbasedev, VFIO_REGION_TYPE_PCI_VENDOR_TYPE | PCI_VENDOR_ID_INTEL, - VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION, &opregion); + VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION, opregion); if (ret) { error_setg_errno(errp, -ret, "Device does not supports IGD OpRegion feature"); return false; } =20 - if (!vfio_pci_igd_opregion_init(vdev, opregion, errp)) { - return false; - } - return true; } =20 @@ -479,6 +476,7 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int= nr) =20 static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vdev, Error **errp) { + g_autofree struct vfio_region_info *opregion =3D NULL; int ret, gen; uint64_t gms_size; uint64_t *bdsm_size; @@ -486,16 +484,17 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *= vdev, Error **errp) bool legacy_mode_enabled =3D false; Error *err =3D NULL; =20 - /* - * This must be an Intel VGA device at address 00:02.0 for us to even - * consider enabling legacy mode. The vBIOS has dependencies on the - * PCI bus address. - */ if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || !vfio_is_vga(vdev)) { return true; } =20 + /* IGD device always comes with OpRegion */ + if (!vfio_pci_igd_opregion_detect(vdev, &opregion, errp)) { + return true; + } + info_report("OpRegion detected on Intel display %x.", vdev->device_id); + /* * IGD is not a standard, they like to change their specs often. We * only attempt to support back to SandBridge and we hope that newer @@ -571,7 +570,7 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) =20 /* Setup OpRegion access */ if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_OPREGION) && - !vfio_pci_igd_setup_opregion(vdev, errp)) { + !vfio_pci_igd_opregion_init(vdev, opregion, errp)) { goto error; } =20 @@ -671,8 +670,11 @@ error: */ static bool vfio_pci_kvmgt_config_quirk(VFIOPCIDevice *vdev, Error **errp) { + g_autofree struct vfio_region_info *opregion =3D NULL; + if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_OPREGION) && - !vfio_pci_igd_setup_opregion(vdev, errp)) { + (!vfio_pci_igd_opregion_detect(vdev, &opregion, errp) || + !vfio_pci_igd_opregion_init(vdev, opregion, errp))) { return false; } =20 --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856910; cv=none; d=zohomail.com; s=zohoarc; b=BrGAXOL+Wq79di6aCm0qpxXinygNjw8Lpy/vVpZkn7uXHrsdqsgGuM9svmVdNhhva9Vh8IYZYW1LcjSNGpC2Fh6NdUs6IR6djRnGBv+GUN33kSuadHXCqyjHdVLZxXz9u4Aq8sluhYlUl4gGNRxCSeAhfXm+Q+A2yGRLVd7V3Uk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856910; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xgk5hGTss7Ugjr6726XgfRiiCnxnWB9tkmwUy+R3V5c=; b=OYkew43sxJzq+6EtdmZNtflMYKNJU180a6VrNl+D9oJwNrl7YaCLCHg9zmn+4/mfLBZ0d16l5jS/Qhrq54uoCIQrOYSGrlhvesInb4EK9eWQsvoXfn/YSUavxm7xFG2gkO6DflcRMvcMT3GS+ZJt/sR4eDjsHbQQYqeaI+rqnCY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856909994758.0806591829755; Mon, 28 Apr 2025 09:15:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R5O-0003MV-BQ; Mon, 28 Apr 2025 12:12:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R49-0002BM-5R for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:54 -0400 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R40-0008Pc-Fx for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:44 -0400 Received: by mail-pl1-x641.google.com with SMTP id d9443c01a7336-224171d6826so75952035ad.3 for ; Mon, 28 Apr 2025 09:10:34 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856634; x=1746461434; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xgk5hGTss7Ugjr6726XgfRiiCnxnWB9tkmwUy+R3V5c=; b=acx6HSml5maa5sTJzPkiltH18fQDxJmbLoD20A5cx5y366FKJIJcyGb1F47UVIYXyg cp9RwaLgLvefN3XcADNADofAUfZrCMCXs/dGkeuFCEHa72i36SxpmJLLQB8PXd8qmktC hp9OiVZumyRGcM+dEVuj6yXsoEdr53qpOT0U07GTqT3tekdeRUoPz2jejRQl+jfMiXVd qUoYLSUDczElEvbJOREJjNvTV6mWIFSmi7ZYVCUI2siI5dVcjZ0ElfUe4MQ789DAhtxV ygrUF3pgjkSDxMch6OOhNOlP57Ou998LGITsy+d8kmqoCRTRnCl88bN+YzXVBqMK/Kgr D8wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856634; x=1746461434; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xgk5hGTss7Ugjr6726XgfRiiCnxnWB9tkmwUy+R3V5c=; b=wcYEE3R7GUUoP+359fHrgQTwxJG3qUKuIfCX/8msezVGPdttVDg4FeaC4YC/U/oH2y 8tklQrmwvJ0yFQkI/wn9uIGpDLxJT6MppIzPj5cqxFWtiQofV7EPMQqN/ckG+6zY4Cua LvR31670FElErPTv5lPSuqsFP/6/ynYVo+Hk02KkZhATVrz5tGjg5jcWgowrZPkqsL94 zWcUkOGSnY4+kJ/fT+IiMbUA4JwK8e6hSRU6VKK20j/1z8oBhmyRCwxCIXlXuliLGe8l 00cAVHhk86tDxtefjQPaoRSo61UXKcXcSiBaDBSdzvtgqkmM9nTDIG9pDwV21XaJImjt 1sSg== X-Gm-Message-State: AOJu0YzYY7fbyHcfxwLqWidcZLy7RSRS3XY4wcs9YVjtuppVW2iCiL3x ZiS17vFMN9OOu+pEYotJeKANffjOThnLpG6zTiX5nUbAO8tjsVg= X-Gm-Gg: ASbGnctrdMHcT3lm3e2PK/yIViJ8VIm1sXjLu9YghDB39qQQ7YxiTTb+lIcrFECEfFj s26TmXFsNYONtFLVhfV7Pgz5Q/q7LR8R+g5Jxo/9rgf5HNmjzPWmd8DsH+a/wKKOvfktV5eQtZ0 eK/5Z18k09GtonFUXHJhAmaSMYYBbWRf6BmhVi0uyfVpgYfNLqqhXiXjLUTPZjU8jBURiXqPuCj rfuGKxgyRR4BKgEIFSK0YrGWGckFa5m7Vo+J2NPmsoouuzyXx8Y0hv39mnjThgo97b4Bc2Pb3+N ArhSIo4r5LlEUm9x+heJAasFfOqe0L9lF9cbMGS1KrQqTht7S9zcgGXP X-Google-Smtp-Source: AGHT+IGUhnbh7jY2JhR4fmDq2RzDjdMQQCmO6tIKr2aw+Vlx8D5N746yyKadjKZSUm+9gFC9bk2dBw== X-Received: by 2002:a17:903:1b6e:b0:220:e1e6:4472 with SMTP id d9443c01a7336-22dc6a04758mr126653165ad.13.1745856633838; Mon, 28 Apr 2025 09:10:33 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 4/9] vfio/igd: Check vendor and device ID on GVT-g mdev Date: Tue, 29 Apr 2025 00:09:59 +0800 Message-ID: <20250428161004.35613-5-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::641; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x641.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856914255019100 Content-Type: text/plain; charset="utf-8" Check the vendor and device ID on GVT-g mdev to ensure it is a supported device [1]. This extra check is required for automatically enabling OpRegion access later. Note that Cherryview and Gemini Lake are marked as supported here since current code cannot distinguish them with other Gen8 and Gen9 devices. Since mdev cannot be created on these devices, this has no functional impact. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree= /drivers/gpu/drm/i915/intel_gvt.c?h=3Dv6.14#n52 Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index d6880cbff7..c6ecbefb35 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -671,6 +671,18 @@ error: static bool vfio_pci_kvmgt_config_quirk(VFIOPCIDevice *vdev, Error **errp) { g_autofree struct vfio_region_info *opregion =3D NULL; + int gen; + + if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || + !vfio_is_vga(vdev)) { + return true; + } + + /* FIXME: Cherryview is Gen8, but don't support GVT-g */ + gen =3D igd_gen(vdev); + if (gen !=3D 8 && gen !=3D 9) { + return true; + } =20 if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_OPREGION) && (!vfio_pci_igd_opregion_detect(vdev, &opregion, errp) || --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856724; cv=none; d=zohomail.com; s=zohoarc; b=LBtbmxvi0ccA3Emz3FIziwue+oCsLcylKZuOZy2LX9Km/1Sqi2p4Nw6Hg1rTODabh55/+N4RrR9A4OBrpddsgI3LAh7Wgq8Hcj6jM/1X83k3yVWUZquC2ZmQ3xJyhji5GSuhFrv5Pf8QOAwZb5MXJnK6S3yFDOiTgVUHXyI/qik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856724; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=faK2QqFAYgv8BYf+WQYaPP11E1ZqL7Z8duqRRmq87aw=; b=ekKCLvfMDgER3qcGJ/yl0Cr9JBBIXHhxsNTpKqKTdmxxht7FJiccbfSIlyMeuGqYAf0Ea+kTGRm1ydBJDVqOEg94+Mk/7myJ6OxBI9uf8UVn6DYSC8JsqNgdUhjmh33iQ4aHOxR6//oZSoYYOJNr7ZcbkVOfh7wdZpa9Gcwjf8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856724002387.1245864796731; Mon, 28 Apr 2025 09:12:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R4i-0002OA-6V; Mon, 28 Apr 2025 12:11:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R45-00025k-Le for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:51 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R42-0008Pv-UE for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:40 -0400 Received: by mail-pl1-x644.google.com with SMTP id d9443c01a7336-223fd89d036so62339195ad.1 for ; Mon, 28 Apr 2025 09:10:38 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856637; x=1746461437; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=faK2QqFAYgv8BYf+WQYaPP11E1ZqL7Z8duqRRmq87aw=; b=SCDSR2ODBnKo6sQGq0cfMPL+mGTfzZQEO6EbqH1kaET4Var7FuugoVw1gMjiyvgkeo /t1cCXUJwQbcccHcI0qKP4O9aYMCF+EmyvSxQBB3lspflE1Yq+VDY81yoknDy/8HdvHJ yDTfNMr6OtcUw1Z8MwYSXzuaKk/D7KmNuQmjxO6NKbQFaOvmhqIcVtUMuUZRYMs/2ncx 77FoaMlJ5SqKZUH+zu0lsGj0x829lCkm1p8DRmSi6HKfDW7G9/gO7WFuMGP5fsXqS/YW EUvmENDvbj8vAjfprjnEZVnc7QjCmWd9+ZutcwtA8J+Edx0egaDglnZgWuXMbkzRLc8X Kfrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856637; x=1746461437; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=faK2QqFAYgv8BYf+WQYaPP11E1ZqL7Z8duqRRmq87aw=; b=EMwAbycoFXXVXFXM3r2QvknUn1BuxzOSWVMse/7jnyQJqToZmyesZlH9WI5WDnSijr K9YgIpVk5CIIyPWFqImHrLDiaWvOs27XjFtxmasCtuh3zYuTMgPcnuBfx7xfocdcrDSv Nj3Hett2sdPJqD0RnwJ8Lo8LUeXgfSORPHezaTWEPEGvkrDxjasDKaVbzTXxxa8K1aOZ GzA0AF4nPo/zJJM3d20tCFPyAI0nrdv8bajD6eG6G+4RYNzN/CPVj//gu3u5OrxuIhgi JebNRxyTTVYXd7WQFLu7b5V+ARwDDq+8cS0wBqRmNQv/+0qNJd5dsKBZrNzdgeVkylvO hdew== X-Gm-Message-State: AOJu0YyGqqw2VLKvFWgvnjT2vhKt+USYCTZYepDBXQ5UypgEgsNSR+p0 J94oRp0F95HnOAV8KF0PKDZgtGvQm0Xm0qrpGIN7sGsz0JP4+Nk= X-Gm-Gg: ASbGncsSW0EhE+Tu48wE+pccvOA55w8VXaTjSNEaLhW5JzX1nXMIbeXNUaSoS6iQimu Vndt/WJByE/5WkcgL0ENjoom+VB1We8sEMhwaP7R5h9lWbolySPzw/82gydLSYvKW7tcfUMZYj0 yoJE3BVRul2NP2zfDlT9xt73gZRdwrcVAustFyz7eGFY0GVvqNuVNW1BsNY3Rm38hPl68wf77PO IUwBK7w7z02MT36NZlWj3n+2U1ujWiBWBWuyEajmgseJvVcGzb1syEhQdmorD/YY5YwaFmVHbbE cVy9KY9/Tbkngm+HVM9Wfr2JwPwY83Dm34YhNSnmDxS+USM5BL2kvThMTu21Dslv0j0= X-Google-Smtp-Source: AGHT+IEg/EOmSTIYWdOYjAUqlu65/nnG0tTbAeJVcvtgUTkyoNWr727LxaM+vpQRX0Z7fOQ/dxWZog== X-Received: by 2002:a17:902:f687:b0:223:faf5:c82 with SMTP id d9443c01a7336-22dc69efa54mr122543175ad.8.1745856637186; Mon, 28 Apr 2025 09:10:37 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 5/9] vfio/igd: Check OpRegion support on GVT-g mdev Date: Tue, 29 Apr 2025 00:10:00 +0800 Message-ID: <20250428161004.35613-6-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::644; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x644.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856726942019100 Content-Type: text/plain; charset="utf-8" The Intel GVT-g backend `kvmgt` always emulates OpRegion for vGPU, make sure the OpRegion is present for enabling access to it automatically later. Also, hotplugging GVT-g vGPU is now always disallowed regardless of OpRegion to prevent potential issues. Intel has never claimed support for GVT-g hotplugging. Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index c6ecbefb35..496d3df598 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -684,9 +684,13 @@ static bool vfio_pci_kvmgt_config_quirk(VFIOPCIDevice = *vdev, Error **errp) return true; } =20 + if (!vfio_pci_igd_opregion_detect(vdev, &opregion, errp)) { + /* Should never reach here, KVMGT always emulates OpRegion */ + return false; + } + if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_OPREGION) && - (!vfio_pci_igd_opregion_detect(vdev, &opregion, errp) || - !vfio_pci_igd_opregion_init(vdev, opregion, errp))) { + !vfio_pci_igd_opregion_init(vdev, opregion, errp)) { return false; } =20 --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856905; cv=none; d=zohomail.com; s=zohoarc; b=JFY1qAVgnjjmI5wRvx0B1Ip68KgLC+1H9wI4Gpu2Os+f9IEIKC6ag4q+umcgLN78jncr6S2a74spKv7sBlXJHJqzT08b0/WrKHUxHASXI3Ma2QHnSgx8WnpeZvQ64b5Ca9P0qcMAdKzYg1a2uTSaHpVo896pV3Oxw/+kXPi4uTM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856905; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9fhN0VyLSegOAjwuvnZ1woBdLvhXgEUMO0BwptjYJj8=; b=YOrWe2RymKwE6pC3cKj1y+Ocvbjn1izL18Z/YVt6I0k7YiVBxz1/Dibr3EXakywEIXl/GXmzdvo43sBjvhgq2O27BQHl0OY8XSJeuNahnAuJ87DZZhdTQLdzqOnjXSuyl4pPnr2Q8goubD4qNhzfrW/y6Nn3lvJnyBbCj0xMiKo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174585690573930.610275342640875; Mon, 28 Apr 2025 09:15:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R5x-0003uM-Du; Mon, 28 Apr 2025 12:12:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R4F-0002CK-UR for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:55 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R49-0008Qc-VI for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:51 -0400 Received: by mail-pl1-x644.google.com with SMTP id d9443c01a7336-22c33e4fdb8so53564825ad.2 for ; Mon, 28 Apr 2025 09:10:42 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856642; x=1746461442; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9fhN0VyLSegOAjwuvnZ1woBdLvhXgEUMO0BwptjYJj8=; b=XU/KHaqlTGEKLZHJaRJ501/5Noqg5cuAMqKnL1vw40HInuW5IrIodJOTWtoVVGXcxS NoeJADmsGrVw6cScA9SoPY7Y8c3wzyv07aw184+rBFcyGKMfm+wcuNuHzy44YNHSamvK ndzoGQZpEwOdnOD+AW9yVvgnXx+DlY9lhJdtMD6GE5FUDSpdkbMdxQR29nsybWDZn9/s hInsO+dlmzTtCTgbaEH3VIGfBYUg/0Ald8CMKYITTaDa9Z32729Ir+rbFS6Cg0rfII9g 4bJ919F2LLo8ck+0dMZKUIYp+4U0wg0Q8Y8j5eDW6PlEBCbYfK3DqlsyQHLf9Y/ygavE 0uyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856642; x=1746461442; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9fhN0VyLSegOAjwuvnZ1woBdLvhXgEUMO0BwptjYJj8=; b=sDRcBrE7sVHxjddxjs+3IzzROH0WhlHuAAN896iUo1deaUWemDQtjnWakPkUqcaJvs WXBXDN2lAff2HObLmOleXJpadu2nwtNSnwqJejjJe1vXWJjVVRuwUM4oExTWH1bCWf5w sgzs6BDhrr/Yf6kEddfC+AlE2ePJ4emEbYFf/xMei3tjaFoQoN4zsQpE/AZO0EKX4UW1 zV4myDdEDaMXQ6UlJi31OaU77UxNX1CWxE5zcYaU9f8gbbKxwP2BlkFArLRfe16vYSLf fsaFoFyqQEJKxc6O8PQJ+qvBfg0KrkElUH7ZqwZw3GiALMtx20+6z/AS5C6PDYP3S9ud DH0Q== X-Gm-Message-State: AOJu0YyVzNaK7mDALKhOPwXcswKwZ8LHh2A2oVFilFnHUw4PryhAKmu3 JfcNdNjNZrMddmVcqAqV8t3OP1IL0R9uOtMtOxwqow8RrYObizM= X-Gm-Gg: ASbGnct3SDAeftycaeYkNAy4tGxp2dzFOVTuQ80w+8fC4siPITPn2E9glci7ZOoJm8Q nVlyZ+igiBU+9NbTvt/gk9otrih3q4Zjm1DSKDGgPX60T0TS59MMANJOkE7kZpiF/XpRh0N2m+1 vzaUd3YNORXhAX+2iYvxCJoLLogVdabGwvTl+aRtT4wasCLti/87ddKM/xoor8vxgzWK3OzGpZI clOfIYYB7PX8qf1cLa9PB9XLgYQ4R9FOJB+SDUCSlI+Qn6G4jFsDC1RfGzF3gEadeBr0rFyLcPX SbkTJIL42IkvvBtlpUkWlPXmjOoANnIz7i00Y9jBz+LosEmFohO+oYqj X-Google-Smtp-Source: AGHT+IGOtORRFBZhqBFIVRplUhNCQjH+UBq0vzYsv3blOegcIFMh5wKcWZno+md0N/gEUAfnswBt0Q== X-Received: by 2002:a17:903:1212:b0:223:325c:89de with SMTP id d9443c01a7336-22de5eca45bmr2947185ad.1.1745856641846; Mon, 28 Apr 2025 09:10:41 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 6/9] vfio/igd: Enable OpRegion by default Date: Tue, 29 Apr 2025 00:10:01 +0800 Message-ID: <20250428161004.35613-7-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::644; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x644.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856906991019100 Content-Type: text/plain; charset="utf-8" As the presence of OpRegion is used to detect IGD device now, and guest driver usually depends on OpRegion to work. Enable OpRegion on IGD devices by default for out-of-the-box passthrough experience (except pre-boot display output), especially for libvirt users. Example of IGD passthrough with libvirt:
Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- docs/igd-assign.txt | 4 ++-- hw/vfio/pci.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/igd-assign.txt b/docs/igd-assign.txt index 95beb76812..fc444503ff 100644 --- a/docs/igd-assign.txt +++ b/docs/igd-assign.txt @@ -102,7 +102,7 @@ digital formats work well. =20 Options =3D=3D=3D=3D=3D=3D=3D -* x-igd-opregion=3D[on|*off*] +* x-igd-opregion=3D[*on*|off] Copy host IGD OpRegion and expose it to guest with fw_cfg =20 * x-igd-lpc=3D[on|*off*] @@ -124,7 +124,7 @@ Examples =20 * Adding IGD with OpRegion and LPC ID hack, but without VGA ranges (For UEFI guests) - -device vfio-pci,host=3D00:02.0,id=3Dhostdev0,addr=3D2.0,x-igd-legacy-mo= de=3Doff,x-igd-opregion=3Don,x-igd-lpc=3Don,romfile=3Defi_oprom.rom + -device vfio-pci,host=3D00:02.0,id=3Dhostdev0,addr=3D2.0,x-igd-legacy-mo= de=3Doff,x-igd-lpc=3Don,romfile=3Defi_oprom.rom =20 =20 Guest firmware diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 05a7a62204..38ff231625 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3361,7 +3361,7 @@ static const Property vfio_pci_dev_properties[] =3D { DEFINE_PROP_BIT("x-req", VFIOPCIDevice, features, VFIO_FEATURE_ENABLE_REQ_BIT, true), DEFINE_PROP_BIT("x-igd-opregion", VFIOPCIDevice, features, - VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT, false), + VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT, true), DEFINE_PROP_BIT("x-igd-lpc", VFIOPCIDevice, features, VFIO_FEATURE_ENABLE_IGD_LPC_BIT, false), DEFINE_PROP_ON_OFF_AUTO("x-igd-legacy-mode", VFIOPCIDevice, --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856809; cv=none; d=zohomail.com; s=zohoarc; b=n+IXtchvwDEyR6e1P0vRbASXBZgzuUkxz6haN25HT5kUJ5u0/hBW7X8PkFFUaURhMHlPx7KAfLIdipT9RMVhfbr271OP+Pi64QcmD1QRpL/FU0YEWkofqBGD/RhNAuvuEkdzmGI3kftBCEPmBkxLbufZ8FdfD/tHmNVURMLG95g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856809; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7aE8b1UhajUDkj6qd0OYblaMEqfKDSI9mrQFdziqmhQ=; b=IykG2NeUfpJatjaBzePnTpcncY3snzF9abSGPcu7rEgqlnI4CV05c2j5F/wwKaxguoZm+NvWrjI8MKkHNoq6+FgTjX13uotpnIeBZYxrsuhWC3wQD1FqWfu1Ee0xRuGT8xye2jZ9iNGlVGdYuf9paq1b2hYcsNlMHFz4sUP3jvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856809948883.2604261994297; Mon, 28 Apr 2025 09:13:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R60-0004Ha-NZ; Mon, 28 Apr 2025 12:12:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R4M-0002EF-SN for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:11:01 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R4E-0008RL-5q for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:10:54 -0400 Received: by mail-pl1-x642.google.com with SMTP id d9443c01a7336-225df540edcso60591745ad.0 for ; Mon, 28 Apr 2025 09:10:47 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856646; x=1746461446; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7aE8b1UhajUDkj6qd0OYblaMEqfKDSI9mrQFdziqmhQ=; b=fTRKidCXePIqlZiARiHuHKUlhVElkxwY2ENoHWf7wMs43Vi7PVyqpvkaCaeSMpGipO Lq8I9TACyeK5HGDiy0cFR6QocHZsPwqdZf3maYxtzLMwa6LCudjG7cmduXxXIEtAgszX dt5KkaeFBW8rH/Gi60WQm+vB/VhQyDMwaXY2EcNpI4UvY9Qxrzuw0wvfMWPr7N799oIK gEKUOCsjpT5b9y2ZE8gsy5+gpBCXpv9FU7bkM6tEg14v2FhR0ExHLGhlO5xIr8CEc5ou TWkhXOJcqIWDZAxB7bH1EGOn0ecUqyX3HVsPgi/w4Oj4WPymWEHp2Cx6HQon5VMi5zzY itsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856646; x=1746461446; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7aE8b1UhajUDkj6qd0OYblaMEqfKDSI9mrQFdziqmhQ=; b=tqbxNxruUj+yemcUD3jhNpkL7S6L807MLn/0EUa2pDj1zRLlaFTywsTBVJwZx5mFC0 ve5jj0cOiddy5QqGoQtZnIIXnHADRLatIzZPzF1E6oLwjo3F0vQeqX7Qyz7eYS14gnXK j94InNxPtppZh4zG8z3hHcjNctDXB3o5jEkTJv5nRERatDENKC+PDiCtic6j8x3PXdZk Rk5H8hH5gOB/d4mn/ipUNgWkZtYBT2Oq14j9UStbt8BJxY+ztFwGw/pWgcWhb7+toe6f WWqWwXai9iHEqwsPnpswF2Bn4DQoD5VVnwPXYQLNk30ueMZyo96sPRj7ueaJ0ZrJ5aF8 481Q== X-Gm-Message-State: AOJu0YyvGUPvBTz+MR5SHSa/1/AglhWB0f07NbebBwFdKQjbfAtB31j1 99a6UdSVEvMKwr3YyXKBPi9xHoeU2l4nyBaSVqqF2smbAd7rliA= X-Gm-Gg: ASbGncu/yfs8CS3NPIfd09C7We7qcWJdzkfjq2hvF9ocXGXUkoHfgTAnzJbVZ8rTWX2 9dSFr/MNHacMQ5WAs7WjnFcFnraYSHEGzESCgeu+F0xldAL4gbtqaXw0IMDiWhIRZF9FptJdLPE 4dotHkXQJKo43Ec43T1f4LT5GnWnX9IPBd03Vkhg6WDQwmseP9oI62svUDMYu8LL0UgF6zZ+sdq TrfeXqacC6zp8rCm9qbMt0Zq0JMHNXvqyOsUfmo+/wn/OKizbO9co8BufcVK3FoHZwZDbAnGrR2 7o8sJ6rB8mqHA/Y1ZJqKHvngIwSd7jBKzLZ4xcipWbBbwRQRD4KhP1vb X-Google-Smtp-Source: AGHT+IF0P4WqVmtv2hEgazmdoJOonBje32hXkn1pw5WMtRPCiXTmlp0XUAXweGDpid1uxs2zR4N8hA== X-Received: by 2002:a17:903:3bae:b0:215:a2f4:d4ab with SMTP id d9443c01a7336-22dbf8ea2ecmr160007625ad.7.1745856646136; Mon, 28 Apr 2025 09:10:46 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 7/9] vfio/igd: Allow overriding GMS with 0xf0 to 0xfe on Gen9+ Date: Tue, 29 Apr 2025 00:10:02 +0800 Message-ID: <20250428161004.35613-8-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::642; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x642.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856812494019100 Content-Type: text/plain; charset="utf-8" On Gen9 and later IGD devices, GMS 0xf0 to 0xfe represents 4MB to 60MB pre-allocated memory size in 4MB increments. Allow users overriding GMS with these values. Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 59 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 496d3df598..7f289a62a3 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -411,6 +411,44 @@ static bool vfio_pci_igd_setup_lpc_bridge(VFIOPCIDevic= e *vdev, Error **errp) return true; } =20 +static bool vfio_pci_igd_override_gms(int gen, uint32_t gms, uint32_t *gmc= h) +{ + bool ret =3D false; + + if (gen =3D=3D -1) { + error_report("x-igd-gms is not supported on this device"); + } else if (gen < 8) { + if (gms <=3D 0x10) { + *gmch &=3D ~(IGD_GMCH_GEN6_GMS_MASK << IGD_GMCH_GEN6_GMS_SHIFT= ); + *gmch |=3D gms << IGD_GMCH_GEN6_GMS_SHIFT; + ret =3D true; + } else { + error_report(QERR_INVALID_PARAMETER_VALUE, "x-igd-gms", "0~0x1= 0"); + } + } else if (gen =3D=3D 8) { + if (gms <=3D 0x40) { + *gmch &=3D ~(IGD_GMCH_GEN8_GMS_MASK << IGD_GMCH_GEN8_GMS_SHIFT= ); + *gmch |=3D gms << IGD_GMCH_GEN8_GMS_SHIFT; + ret =3D true; + } else { + error_report(QERR_INVALID_PARAMETER_VALUE, "x-igd-gms", "0~0x4= 0"); + } + } else { + /* 0x0 to 0x40: 32MB increments starting at 0MB */ + /* 0xf0 to 0xfe: 4MB increments starting at 4MB */ + if ((gms <=3D 0x40) || (gms >=3D 0xf0 && gms <=3D 0xfe)) { + *gmch &=3D ~(IGD_GMCH_GEN8_GMS_MASK << IGD_GMCH_GEN8_GMS_SHIFT= ); + *gmch |=3D gms << IGD_GMCH_GEN8_GMS_SHIFT; + ret =3D true; + } else { + error_report(QERR_INVALID_PARAMETER_VALUE, + "x-igd-gms", "0~0x40 or 0xf0~0xfe"); + } + } + + return ret; +} + #define IGD_GGC_MMIO_OFFSET 0x108040 #define IGD_BDSM_MMIO_OFFSET 0x1080C0 =20 @@ -593,24 +631,9 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) * 32MiB. This option should only be used when the desired size cannot= be * set from DVMT Pre-Allocated option in host BIOS. */ - if (vdev->igd_gms) { - if (gen < 8) { - if (vdev->igd_gms <=3D 0x10) { - gmch &=3D ~(IGD_GMCH_GEN6_GMS_MASK << IGD_GMCH_GEN6_GMS_SH= IFT); - gmch |=3D vdev->igd_gms << IGD_GMCH_GEN6_GMS_SHIFT; - } else { - error_report(QERR_INVALID_PARAMETER_VALUE, - "x-igd-gms", "0~0x10"); - } - } else { - if (vdev->igd_gms <=3D 0x40) { - gmch &=3D ~(IGD_GMCH_GEN8_GMS_MASK << IGD_GMCH_GEN8_GMS_SH= IFT); - gmch |=3D vdev->igd_gms << IGD_GMCH_GEN8_GMS_SHIFT; - } else { - error_report(QERR_INVALID_PARAMETER_VALUE, - "x-igd-gms", "0~0x40"); - } - } + if (vdev->igd_gms && + !vfio_pci_igd_override_gms(gen, vdev->igd_gms, &gmch)) { + return false; } =20 gms_size =3D igd_stolen_memory_size(gen, gmch); --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856905; cv=none; d=zohomail.com; s=zohoarc; b=NNs5zyO/1/LaFZMfmJsSlLV+VlqV5HOCGpKUPykac20CcPapLZraDstb05KT0hEe0U9yWNuWMhQtnepEn1uWQ5BQjGhkOVb/XG1dYJ5gKsMdbFA4Iq+1rHtWeDvnIx1+w/Efx/UGextz6pHFideQt8upUXlMyqz1XTSnT4oVD9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856905; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=04Ru2G52IZKwkHppg+UoPnW9YEjqrdfMwPJFhOoWFbw=; b=UYFc/9krQU2nLCt76X2pYlnbQjwJHVSsyVZ4oIWKr7j6+dVrHZecuUMHsVokQjh+rzPNA32ddE+uMOElk+95RPYn1xe042dDNDa3JeKVijM2D+kxKMfwTvGVKy4/jq4m9M77jkv4Vy6RrSV9xrrMW0t8lg9cdwJBqO7Ik3qACKg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856905728235.29680019012653; Mon, 28 Apr 2025 09:15:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R70-0005Tg-78; Mon, 28 Apr 2025 12:13:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R4P-0002HT-Hy for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:11:04 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R4L-0008S0-Lw for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:11:00 -0400 Received: by mail-pl1-x642.google.com with SMTP id d9443c01a7336-2295d78b433so53455445ad.2 for ; Mon, 28 Apr 2025 09:10:53 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856651; x=1746461451; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=04Ru2G52IZKwkHppg+UoPnW9YEjqrdfMwPJFhOoWFbw=; b=Yv+xLR1TvoBdSmPO/eope6BLRnUIbGhUW/TtbqL/sCtA8ttvxpoL3/JOoZAsAYL547 4GkmdTmnKuvO9sn7kfOLhBmr4zH64FKkt9Q0siZYxGAqpai4106LAM0k6/LY38IPiRx5 UGjUNj1BPLF0u+/mgPBf+8+MxVssso0zOtm2cW1taDUrEIjPid5yi2y+IRWBKunQSvAZ SO8Upy5uIvBfa4c/dY5Q5KzHKriKfD6eNvJf1K7LYMoTcO5sFW2qASkyIxrLi3W/jLhf oWQ153cRtU4i92ma3a4MDrWfrnM8JyDeMMJKQ+LMvGfJZDHGdeSiYhwWc/qRl/UhOjH5 nPqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856651; x=1746461451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=04Ru2G52IZKwkHppg+UoPnW9YEjqrdfMwPJFhOoWFbw=; b=vJ+Kh0MldljSmL4NmpjO4AnPltQtDv+YjNUdojYXWV7avE8AF8kmyUwMZ6jdEJyKif vfMVEyW7O+j4UHp2G495nFrKDwa3xX3cK9Z7bkmGAIUAp+TwvjyFvFTJZDdcwn1/HZNE x08Y2b2jJAqkkuiqWreTknmfVNeVFqjgwVHJj7OAEM4WBYmcQ0Nh2I5WkiLSsdszet58 qgD7LpV9+3BDCBH+mzLh5qM9YfgvffVDZUwTjuvIPAaLfHFbSrvx53vDNy3TBnlwEWLM 9PMzKrpn2cbzHIBWefNqdMM0WIen6s/n4iiyK0NQ/S18UdUr+igD+Ji5UhsivJ1FG2Ra +AyA== X-Gm-Message-State: AOJu0YwQFcTaRU34SSrb1YmV4rRlSMtaAXNbX1HjOlTl1B/XbX0Bjz5o Ih2QC3q+xtTaOwi23DOi8z+/QoQEmzvALSNLMi6n8tDvt7iorDM= X-Gm-Gg: ASbGncsDn47/a8GOvvTDSmffjl8XQMLsa6HRSppXIzcFy9DQIlFJ97T0kGQwgaTD3n9 tiF7Ct1jco4ToUqbhcvyr8xeaXS946aVi48caFIuv28JO7VSUoSZoegJnOlo0j+RSP68N3wl5sR yFZ/mpdwXGMxViBiqYij/6LddqpkCmrelopnXkzBBsvVp/1/UPRCro2UucLlLJbJEvJAYX/d6UX pNj4QgA8zI2BdieJ7w4Ab5RwVFCdo7x6Ho3tc4NcOEqIErq706zXrYDgZTChaHoMGp7XcPNftJu FBSYPaQN6awgouEUCsqyrk+876susLQcQ+SYEzievrIBNONir/yhN2S5 X-Google-Smtp-Source: AGHT+IHJ9KKGnrSW1+N3nRSLeam5U+W/J0vSSY/JBIZz9s1ub8+XCY51mIvjV+QgIXYXdIBjvAZ35g== X-Received: by 2002:a17:903:228a:b0:223:4d5e:789d with SMTP id d9443c01a7336-22dc6a0013dmr148209445ad.19.1745856651582; Mon, 28 Apr 2025 09:10:51 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 8/9] vfio/igd: Only emulate GGC register when x-igd-gms is set Date: Tue, 29 Apr 2025 00:10:03 +0800 Message-ID: <20250428161004.35613-9-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::642; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x642.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856906709019000 Content-Type: text/plain; charset="utf-8" x-igd-gms is used for overriding DSM region size in GGC register in both config space and MMIO BAR0, by default host value is used. There is no need to emulate it in default case. Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- hw/vfio/igd.c | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 7f289a62a3..5d12f753ab 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -477,22 +477,24 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, i= nt nr) return; } =20 - ggc_quirk =3D vfio_quirk_alloc(1); - ggc_mirror =3D ggc_quirk->data =3D g_malloc0(sizeof(*ggc_mirror)); - ggc_mirror->mem =3D ggc_quirk->mem; - ggc_mirror->vdev =3D vdev; - ggc_mirror->bar =3D nr; - ggc_mirror->offset =3D IGD_GGC_MMIO_OFFSET; - ggc_mirror->config_offset =3D IGD_GMCH; - - memory_region_init_io(ggc_mirror->mem, OBJECT(vdev), - &vfio_generic_mirror_quirk, ggc_mirror, - "vfio-igd-ggc-quirk", 2); - memory_region_add_subregion_overlap(vdev->bars[nr].region.mem, - ggc_mirror->offset, ggc_mirror->me= m, - 1); + if (vdev->igd_gms) { + ggc_quirk =3D vfio_quirk_alloc(1); + ggc_mirror =3D ggc_quirk->data =3D g_malloc0(sizeof(*ggc_mirror)); + ggc_mirror->mem =3D ggc_quirk->mem; + ggc_mirror->vdev =3D vdev; + ggc_mirror->bar =3D nr; + ggc_mirror->offset =3D IGD_GGC_MMIO_OFFSET; + ggc_mirror->config_offset =3D IGD_GMCH; =20 - QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, ggc_quirk, next); + memory_region_init_io(ggc_mirror->mem, OBJECT(vdev), + &vfio_generic_mirror_quirk, ggc_mirror, + "vfio-igd-ggc-quirk", 2); + memory_region_add_subregion_overlap(vdev->bars[nr].region.mem, + ggc_mirror->offset, ggc_mirror= ->mem, + 1); + + QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, ggc_quirk, next); + } =20 bdsm_quirk =3D vfio_quirk_alloc(1); bdsm_mirror =3D bdsm_quirk->data =3D g_malloc0(sizeof(*bdsm_mirror)); @@ -631,9 +633,15 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) * 32MiB. This option should only be used when the desired size cannot= be * set from DVMT Pre-Allocated option in host BIOS. */ - if (vdev->igd_gms && - !vfio_pci_igd_override_gms(gen, vdev->igd_gms, &gmch)) { - return false; + if (vdev->igd_gms) { + if (vfio_pci_igd_override_gms(gen, vdev->igd_gms, &gmch)) { + /* GMCH is read-only, emulated */ + pci_set_long(vdev->pdev.config + IGD_GMCH, gmch); + pci_set_long(vdev->pdev.wmask + IGD_GMCH, 0); + pci_set_long(vdev->emulated_config_bits + IGD_GMCH, ~0); + } else { + return false; + } } =20 gms_size =3D igd_stolen_memory_size(gen, gmch); @@ -651,11 +659,6 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) fw_cfg_add_file(fw_cfg_find(), "etc/igd-bdsm-size", bdsm_size, sizeof(*bdsm_size)); =20 - /* GMCH is read-only, emulated */ - pci_set_long(vdev->pdev.config + IGD_GMCH, gmch); - pci_set_long(vdev->pdev.wmask + IGD_GMCH, 0); - pci_set_long(vdev->emulated_config_bits + IGD_GMCH, ~0); - /* BDSM is read-write, emulated. The BIOS needs to be able to write i= t */ if (gen < 11) { pci_set_long(vdev->pdev.config + IGD_BDSM, 0); --=20 2.47.2 From nobody Sat Nov 15 23:38:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745856823; cv=none; d=zohomail.com; s=zohoarc; b=SOVIOgsZoMCjP6iboAtCLjdgDHqSN7gNwfQHPt7eE1gIYjcvkXbxmuHpalppOITfixt9Xztwgy0yKi+avOFknY2WPaJYc3Tqgg3WqsuhuobBL7McJhapDIy/EnBEE/KJM1a8TYij1DoPbxvqpjDsXveAFe/4XD4eJWPJMlg4mYs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745856823; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1tofO1fjLfV16+5pmOlGiWTshkdEcJwV1QmKOpFbsnA=; b=KmWQjFbiL/M3Xq0UjlJmg6mmSmHnJ6e8UMNKqXwuG0L2mVUvzOxXiUvU4Kg3TgfDrGU89pb3/EYTnFj0XpZUk3Ic6GlFhDX+/SwzAdJFIpm1uIM8ErvQyn5VcGYKAayCHm4WLmGvoRcb7N6Ovwu1GBV2uyHIgL983AS2qtn3asU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745856823245320.821706484953; Mon, 28 Apr 2025 09:13:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u9R6N-0004wl-Bs; Mon, 28 Apr 2025 12:13:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u9R4T-0002M5-Uh for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:11:08 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u9R4L-0008SC-MS for qemu-devel@nongnu.org; Mon, 28 Apr 2025 12:11:03 -0400 Received: by mail-pl1-x642.google.com with SMTP id d9443c01a7336-22423adf751so51185525ad.2 for ; Mon, 28 Apr 2025 09:10:56 -0700 (PDT) Received: from localhost.localdomain ([139.227.182.191]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5221677sm84357515ad.248.2025.04.28.09.10.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 09:10:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745856655; x=1746461455; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1tofO1fjLfV16+5pmOlGiWTshkdEcJwV1QmKOpFbsnA=; b=dSPdhW1/WqL3VCQ7DSHYw9mYsw2bzWAMO9sUk6XEwMMLs0W7Igp344EDoake/QMh31 hv4xRjna10brOrov3eWZJADpFzbZYJfY0C9wyYyGrEH39L5qlLaQGxBKOE9nIYcHVV1R aNSnRMWJMM3R1zmYstnftROwwhX3KM4OOEPC7Z1ISBua2ySP/V2j1FfePpKKP0PCpg1W /wDC+ocF1tKZJOP8lqJSb2XfEWz1kDmFojirTiqM0AYZyKeJbrJaBtOjpwfk0yJo5H7F 61bLwsOlSaFyf+8sJyLgimHLmihWtm6hvAu3DSHchtD7P4gtDm7/tiZ0Y1VVppsl66LW kd0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745856655; x=1746461455; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1tofO1fjLfV16+5pmOlGiWTshkdEcJwV1QmKOpFbsnA=; b=G6iQDCEGIsWV98KHnHJex5Bi+/7BIM0ZEODDttXQx00LIIFsz2CxBZVcPQCO7E5Rjv gGCbIefx93gH0V4ryj6G+v6Emy6LuscTxbgp/FLrn2Wnc6ENJwphF5bS6aOD76hvuFtR reiZQha4nzk8wdaeTNgnAQ8EjhqwKpXhnwMh+NIkpNpd4XbWWje6sW7+sNQpCyheSWXH 822Fx05+cxMuUwYWgeVJJe/E7yl5WrFnzpUL1NKiDvb0LLy/CPVisPIKK52/fIwauIDi IFXbXzu9jAEBvDSXlElraaA4HWmj/whEJkRVD7tI+CN8HA/mnscdaYh2xwgo0BnImlTg 2pBw== X-Gm-Message-State: AOJu0YzK5QB4r+9ZJ4i1AujwrVIPgLcnOjZWYJXl5KAVSGzR9Wx6lGrk dZ4WgVP9yH/KDrtklxMT6T/nCdDXJSU7Vn+KF3I1jU1nA0UToA4= X-Gm-Gg: ASbGncs4cM3tJ9ycRND/MLPKjJpnN3smIuNuoaZ2WeyIHJVQBe+7f8O4cBLiQx9/k8U FXA8pfiH2lz9hAhL5quHMT7oSIMNAtJ+3+U0IULFJf7t0j0qfKu2VZdIZIEruT44/GwDVSVKne8 PdqZ9+3pqSUNBldYuYoAafM8+NRSGJg9zzUZgaf6jNPFxTLoHAfCVLs00Jv0MvTMhH5+GsKpNgI JVFUajUFMGkerpg4Pt0fINcY3C66t5P+bY8piOw3ZLPkrPE1ISrHU4EAg02PGgPpmx5tZV6FL9B Rx8o8I3UrO4Z9PGOwid2d6bJ8zTgNYkSbWaeVS0I8A98KFa10FNiFYfI X-Google-Smtp-Source: AGHT+IGqJu2X0w/JwZN/gzfyl2rDijbHhFHSyNAF3vap9k7bTGcI76TGhr9TqWJWcOQDCXy9gEE+JQ== X-Received: by 2002:a17:902:e805:b0:224:de2:7fd0 with SMTP id d9443c01a7336-22dbf5fc55dmr185546205ad.25.1745856655054; Mon, 28 Apr 2025 09:10:55 -0700 (PDT) From: Tomita Moeko To: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko Cc: qemu-devel@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PATCH 9/9] vfio/igd: Remove generation limitation for IGD passthrough Date: Tue, 29 Apr 2025 00:10:04 +0800 Message-ID: <20250428161004.35613-10-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250428161004.35613-1-tomitamoeko@gmail.com> References: <20250428161004.35613-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::642; envelope-from=tomitamoeko@gmail.com; helo=mail-pl1-x642.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745856824457019000 Content-Type: text/plain; charset="utf-8" Starting from Intel Core Ultra Series (Meteor Lake), Data Stolen Memory has became a part of LMEMBAR (MMIO BAR2) [1][2], meaning that BDSM and GGC register quirks are no longer needed on these platforms. To support Meteor/Arrow/Lunar Lake and future IGD devices, remove the generation limitation in IGD passthrough, and apply BDSM and GGC quirks only to known Gen6-12 devices. [1] https://edc.intel.com/content/www/us/en/design/publications/14th-genera= tion-core-processors-cfg-and-mem-registers/d2-f0-processor-graphics-registe= rs/ [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree= /drivers/gpu/drm/i915/gem/i915_gem_stolen.c?h=3Dv6.14#n142 Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Reviewed-by: Corvin K=C3=B6hne Tested-by: Alex Williamson --- docs/igd-assign.txt | 6 +++++ hw/vfio/igd.c | 58 ++++++++++++++++----------------------------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/docs/igd-assign.txt b/docs/igd-assign.txt index fc444503ff..af4e8391fc 100644 --- a/docs/igd-assign.txt +++ b/docs/igd-assign.txt @@ -157,6 +157,12 @@ fw_cfg requirements on the VM firmware: it's expected that this fw_cfg file is only relevant to a single PCI class VGA device with Intel vendor ID, appearing at PCI bus address 00:= 02.0. =20 + Starting from Meteor Lake, IGD devices access stolen memory via its MMIO + BAR2 (LMEMBAR) and removed the BDSM register in config space. There is + no need for guest firmware to allocate data stolen memory in guest addr= ess + space and write it to BDSM register. Value of this fw_cfg file is 0 in + such case. + Upstream Seabios has OpRegion and BDSM (pre-Gen11 device only) support. However, the support is not accepted by upstream EDK2/OVMF. A recommended solution is to create a virtual OpRom with following DXE drivers: diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 5d12f753ab..2584861ae6 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -103,6 +103,7 @@ static int igd_gen(VFIOPCIDevice *vdev) /* * Unfortunately, Intel changes it's specification quite often. This m= akes * it impossible to use a suitable default value for unknown devices. + * Return -1 for not applying any generation-specific quirks. */ return -1; } @@ -458,20 +459,12 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, i= nt nr) VFIOConfigMirrorQuirk *ggc_mirror, *bdsm_mirror; int gen; =20 - /* - * This must be an Intel VGA device at address 00:02.0 for us to even - * consider enabling legacy mode. Some driver have dependencies on the= PCI - * bus address. - */ if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || !vfio_is_vga(vdev) || nr !=3D 0) { return; } =20 - /* - * Only on IGD devices of gen 11 and above, the BDSM register is mirro= red - * into MMIO space and read from MMIO space by the Windows driver. - */ + /* Only on IGD Gen6-12 device needs quirks in BAR 0 */ gen =3D igd_gen(vdev); if (gen < 6) { return; @@ -518,7 +511,7 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) { g_autofree struct vfio_region_info *opregion =3D NULL; int ret, gen; - uint64_t gms_size; + uint64_t gms_size =3D 0; uint64_t *bdsm_size; uint32_t gmch; bool legacy_mode_enabled =3D false; @@ -535,18 +528,7 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) } info_report("OpRegion detected on Intel display %x.", vdev->device_id); =20 - /* - * IGD is not a standard, they like to change their specs often. We - * only attempt to support back to SandBridge and we hope that newer - * devices maintain compatibility with generation 8. - */ gen =3D igd_gen(vdev); - if (gen =3D=3D -1) { - error_report("IGD device %s is unsupported in legacy mode, " - "try SandyBridge or newer", vdev->vbasedev.name); - return true; - } - gmch =3D vfio_pci_read_config(&vdev->pdev, IGD_GMCH, 4); =20 /* @@ -644,32 +626,34 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *= vdev, Error **errp) } } =20 - gms_size =3D igd_stolen_memory_size(gen, gmch); + if (gen > 0) { + gms_size =3D igd_stolen_memory_size(gen, gmch); + + /* BDSM is read-write, emulated. BIOS needs to be able to write it= */ + if (gen < 11) { + pci_set_long(vdev->pdev.config + IGD_BDSM, 0); + pci_set_long(vdev->pdev.wmask + IGD_BDSM, ~0); + pci_set_long(vdev->emulated_config_bits + IGD_BDSM, ~0); + } else { + pci_set_quad(vdev->pdev.config + IGD_BDSM_GEN11, 0); + pci_set_quad(vdev->pdev.wmask + IGD_BDSM_GEN11, ~0); + pci_set_quad(vdev->emulated_config_bits + IGD_BDSM_GEN11, ~0); + } + } =20 /* * Request reserved memory for stolen memory via fw_cfg. VM firmware * must allocate a 1MB aligned reserved memory region below 4GB with - * the requested size (in bytes) for use by the Intel PCI class VGA - * device at VM address 00:02.0. The base address of this reserved - * memory region must be written to the device BDSM register at PCI - * config offset 0x5C. + * the requested size (in bytes) for use by the IGD device. The base + * address of this reserved memory region must be written to the + * device BDSM register. + * For newer device without BDSM register, this fw_cfg item is 0. */ bdsm_size =3D g_malloc(sizeof(*bdsm_size)); *bdsm_size =3D cpu_to_le64(gms_size); fw_cfg_add_file(fw_cfg_find(), "etc/igd-bdsm-size", bdsm_size, sizeof(*bdsm_size)); =20 - /* BDSM is read-write, emulated. The BIOS needs to be able to write i= t */ - if (gen < 11) { - pci_set_long(vdev->pdev.config + IGD_BDSM, 0); - pci_set_long(vdev->pdev.wmask + IGD_BDSM, ~0); - pci_set_long(vdev->emulated_config_bits + IGD_BDSM, ~0); - } else { - pci_set_quad(vdev->pdev.config + IGD_BDSM_GEN11, 0); - pci_set_quad(vdev->pdev.wmask + IGD_BDSM_GEN11, ~0); - pci_set_quad(vdev->emulated_config_bits + IGD_BDSM_GEN11, ~0); - } - trace_vfio_pci_igd_bdsm_enabled(vdev->vbasedev.name, (gms_size / MiB)); =20 return true; --=20 2.47.2