From nobody Tue Aug 25 20:20:24 2026 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=1780508089; cv=none; d=zohomail.com; s=zohoarc; b=bPtG5aXJ2r9wX5Lau5SzvSqSLtQFFCcquXznCdo/kmOww0InW6v8epaJprP5+1rFN+JE9Hm3MKyw6YwdMO/8IRw63ynW4oDiTr7/papeHZ5HQyClNG/jkcpCh3Xo5nNzb4mVNbcYOhUaiI+Pu/XMCfl6QD2iRjqlHelqCOFbfGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780508089; 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=qy1UUF3hxI4Wh5XfXs+GeaEbG1d+3h7FaO5OzNWRyiE=; b=P7Nd3+W4c+Yg0Z7Y4nNkXNCt3o7E+xol+i/eOUR/e0oFzop5Yl9yCdS/laAfONTzH8n0yZFuog/HUWJTc3yOQJsiF7hJmnyxF28JTALJxX4whS1ed6p89MtGcZptZDlu1+glqC4gGMrAPJZ5WBmygbDYfY0IttIE1IM7ksAqzqA= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780508089320790.0808572147674; Wed, 3 Jun 2026 10:34:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUpU1-0003qC-RH; Wed, 03 Jun 2026 13:34:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUpTx-0003ok-6C for qemu-devel@nongnu.org; Wed, 03 Jun 2026 13:34:22 -0400 Received: from mail-dl1-x1243.google.com ([2607:f8b0:4864:20::1243]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUpTv-0003J6-7H for qemu-devel@nongnu.org; Wed, 03 Jun 2026 13:34:20 -0400 Received: by mail-dl1-x1243.google.com with SMTP id a92af1059eb24-137bd9ed2b1so4130859c88.1 for ; Wed, 03 Jun 2026 10:34:18 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffa:7da0:c45e:b5c8:d6e8:bd7e]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3074d9fde90sm4354810eec.0.2026.06.03.10.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 10:34:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780508058; x=1781112858; 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=qy1UUF3hxI4Wh5XfXs+GeaEbG1d+3h7FaO5OzNWRyiE=; b=CZkk4xAzTpwr/cJR1G0dQg3CJ7PlivI2r2x1fNgqLyZtuZpuethI7Sp69Qwu3ZFNDk tNmC7ViQxYn18cfIwnp614F12KvuXmf2bbb33MRGsClb6dZn+duQOAk4c1nkiy60JnEy oB4NSyFngpDNILgd8EoIJUkWRE85c9+Ew3YT1DANwNw3EPekLdG0OjHegSOkB7aTZkoa vOPBVunFFRuI5C4wwFpBIvpbFqGySeQxdDMy+yy5LS9+3ylFTz22sGBzagkfO/Rh341Q f5kd//JIwKBeSglrw165sXpm6Cl8qgKSo5NzBrPd+1NFu91TpINDfsX1zqn/VPlJZZHW MqaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780508058; x=1781112858; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qy1UUF3hxI4Wh5XfXs+GeaEbG1d+3h7FaO5OzNWRyiE=; b=tBSCO5pStdMLv8iTgqUKK29HaEJskVR9Ey4RAR9HTdfYbR1N4LwNeC5G3JWsAboaUb LdrVkd/RXhLIRM6FkfHf2SeOAXbKgyimiSBeZUB75Czr//1dFF/+VCPUGFoXQ4O6dvq1 quNBsd5UD0PpzIOB+z/P7MJoZo9d/7PPM5jFtuFLG0ATO4EcehcSW1Rrdmu1a/RwYolh uSNKMtBRQSG5DGoSnwd4P1cCvjAIi2jdtZg/E1o3V/vs76TKUT28jvSeIBLz4dEtjlxk szZWcONUMkVF2vMWf+sluwS9zrXZNChjy7hz2udRYGLLFyJ3kyoDjDp83jcs5AGhWL5R Vqzw== X-Gm-Message-State: AOJu0YxELAk3C/k3ucuFEi3AlhnC2PLhp4bCG7XYdVfbvk2vr+EX8bqW SBcwAbc5sDdqd/5p5FDd/ZQc7j9azlGu7LuZtsBvDh/D2Z3G4YBw9rY3S0fvqYJA3w== X-Gm-Gg: Acq92OEUPK4nNzSK/B95Gy/lMt40aPdMm6sop44+CYupr8/HTZ4VsYrZ/oh+ZAmaYqh 1Hkzfz2pz1HihhKvIxd2xOmxS00SSlWX1raJ1fI6TbNc3Zt/rjyU4tUR+JXQf/RFwb2bxJrVz1p e8GvxSDQ97/Vo1NZH0HbT6DRVwXQJyVneWXNofapT0X5Xusz1AqV+MyFzolUsDoQCuj4/DN7FUQ 7cBCgZscSoqXpBRDc3pWkRlLaC4s4K7AX5Fzwt+m0nyLBHgZwwM03NMGGR1cd6eLix2wqWPZZkq wnvBImq9ZdnZyJBF8LKf/+BMUiibi7TnpsYgCWUKp7AB2cxU6bFw4roiNmf7afghzvuXFuM3xYx rXl5Psra9JmzXkdKuQYFFl9Lu1X5vRQlDdZB7xMOSR0CFLfK+SCZm/3J4JPihle0qrmD5bdb3/X ZbdqaBcq1cCImnz5ps0nJwXa8rNAw7bGv0HwhUsXh7pg== X-Received: by 2002:a05:7300:dc8c:b0:2df:7fe3:96a with SMTP id 5a478bee46e88-3074f843547mr2218341eec.0.1780508057557; Wed, 03 Jun 2026 10:34:17 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , K S Maan Subject: [PATCH 5/6] vfio/igd: Toggle rom_need_patch_id flag on IGD devices Date: Thu, 4 Jun 2026 01:33:53 +0800 Message-ID: <20260603173355.36121-6-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260603173355.36121-1-tomitamoeko@gmail.com> References: <20260603173355.36121-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1243; envelope-from=tomitamoeko@gmail.com; helo=mail-dl1-x1243.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: qemu development 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: 1780508091558158500 Content-Type: text/plain; charset="utf-8" IGD ROMs are known to have wrong device IDs and bogus checksums. Toggle the rom_need_patch_id flag when the IGD has ROM BAR or custom romfile so that pci_rom_patch_ids() will correct the vendor/device IDs and checksum. The ROM BAR availability check is extracted into vfio_pci_igd_has_rom_bar() to avoid duplicating the region info lookup. Reported-by: K S Maan Signed-off-by: Tomita Moeko Tested-by: K S Maan --- hw/vfio/igd.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index e091f21b6a..17437ae18d 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -509,11 +509,22 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, i= nt nr) QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, bdsm_quirk, next); } =20 +static bool vfio_pci_igd_has_rom_bar(VFIOPCIDevice *vdev) +{ + struct vfio_region_info *rom =3D NULL; + int ret; + + ret =3D vfio_device_get_region_info(&vdev->vbasedev, + VFIO_PCI_ROM_REGION_INDEX, &rom); + + return !ret && rom->size; +} + static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vdev, Error **errp) { struct vfio_region_info *opregion =3D NULL; PCIDevice *pdev =3D PCI_DEVICE(vdev); - int ret, gen; + int gen; uint64_t gms_size =3D 0; uint64_t *bdsm_size; uint32_t gmch; @@ -556,8 +567,6 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) * - OpRegion * - Same LPC bridge and Host bridge VID/DID/SVID/SSID as host */ - struct vfio_region_info *rom =3D NULL; - legacy_mode_enabled =3D true; info_report("IGD legacy mode enabled, " "use x-igd-legacy-mode=3Doff to disable it if unwanted= ."); @@ -567,9 +576,7 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) * there's no ROM, there's no point in setting up this quirk. * NB. We only seem to get BIOS ROMs, so UEFI VM would need CSM su= pport. */ - ret =3D vfio_device_get_region_info(&vdev->vbasedev, - VFIO_PCI_ROM_REGION_INDEX, &rom); - if ((ret || !rom->size) && !pdev->romfile) { + if (!vfio_pci_igd_has_rom_bar(vdev) && !pdev->romfile) { error_setg(&err, "Device has no ROM"); goto error; } @@ -610,6 +617,14 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) goto error; } =20 + /* + * IGD are known to have bad checksums and wrong device ID in its rom, + * request to patch it. + */ + if (pdev->romfile || vfio_pci_igd_has_rom_bar(vdev)) { + pdev->rom_need_patch_id =3D true; + } + /* * ASLS (OpRegion address) is read-only, emulated * It contains HPA, guest firmware need to reprogram it with GPA. --=20 2.53.0