From nobody Mon Jun 29 06:51:59 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=1781690839; cv=none; d=zohomail.com; s=zohoarc; b=UdBnfz4GOLUwTEd97sRILv3tmEh+m71zJRdVna6rixFDdRngwrtY0sxr98mUlvHV3mKb49Z2QMSoA7KxRGfSqTE43qh9ZcGyAmLxaiIR23A4kgdnIQvxVzYP1eshmDvZFZ34072kUsgFrOMOUoO5SskN6SIRNZPG36EIkkPKizc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690839; 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=g805oiewD32KvK8soPofSnFfwWVGGy5xaH5rPwxt+n0=; b=mkRwHtwMBM7HGn6lzVZO/zW9O5T/uM+L77ru7D0iWD4vzFBbBYIa5BePTj7lIS5uNEQu/djAvRLVFOm+VkGJD1nAn7fhMDJ5flKG/S04Md0r6E0lb97AkrsG2lzKqxWJtQbzEOrJrOac0Mo4jy5c0k2i7OJ6OGiT+oEBlAm0Tww= 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 1781690839649928.2653667735577; Wed, 17 Jun 2026 03:07:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnAp-0003pr-O5; Wed, 17 Jun 2026 06:07:08 -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 1wZnAk-0003p0-WB for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:03 -0400 Received: from mail-dy1-x1342.google.com ([2607:f8b0:4864:20::1342]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAi-0008On-9V for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:01 -0400 Received: by mail-dy1-x1342.google.com with SMTP id 5a478bee46e88-30bb7d20ad9so2297921eec.1 for ; Wed, 17 Jun 2026 03:06:59 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690819; x=1782295619; 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=g805oiewD32KvK8soPofSnFfwWVGGy5xaH5rPwxt+n0=; b=bNn9SKj7DMwDxePGPm6fbX8d9BJrgLq53PfkGsdr8HNSIQl0BVEL/kM3rE6eRi5dH1 8h3NlD/RD9/CyUglg+RVppirJe+gUvsF04iOXWZ8GKh3Y5RUHYeN5WTJOo8AYtbf11cE aUnjB9fUB85WRehMH8kqkFUQdqEBoFgjCLBCzP8drIOJm/DL7c19/7WWeFG6utwRWQaI bbsncRNOQZbMbswgN2/GD0Lu8Smyim9W7V+OttsWz8Hxot9GsK4jeJLfmDrLbXNNUkyC GA8FTGf9DDcfemUO7F1YVmXxeCriiOw8yaRtRn3TNe2zPLhdUetvX+qjQDWsNFYsweOP QCFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690819; x=1782295619; 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=g805oiewD32KvK8soPofSnFfwWVGGy5xaH5rPwxt+n0=; b=tOLWzV09i2QBj/I/1Wuog/57GgWEZZQN4K5GS1LuGwAMLvUgDhx3EbwOWzNHMEap9K XYz5C9Aqj3h15JkvfmA6F49QXWcgmVtcnu+0GakGkasm48LnqKBTNLn0O5dqFknZTOIX dbaTZxcpe7+OYI8vI10UVdCFfFK5v/gDcFO95OXFevkqVqEuWwRS1Cjh5p6I9DBor89D rOPLfElYo3kZoXpoiggfW06nYJZkhmxvWNnVqzmQcF3oaBMVhwp0igHE0ma9HUzA0Xho PsRf0YN78EFv5phHxzuHOg9+oioKXTdTlRAh8+UMSQfKHNFU5Urd5lbJb+jHyjkK4Nuq 7CmA== X-Gm-Message-State: AOJu0Yy+w5xNXtBShU+GSilYYVg1YhjSLnMkZnuW0EcqyFjHebEn9Rfy YF1DRu3onQ9u+RUN9A6HBBOpeu8K2kD9wFuOzKb/lUzaOr028fbi3CVzbY73vOD0Aw== X-Gm-Gg: AfdE7ckbPne3uJjMwUodMfrwnAwLkXjAt4CCsesFDeViTtUdQ8y+6Z3dTHo92ln3nAF 4wiXVI8eOo4jhaQ7if1InEu+FscDKJIiPcGRTV5p+7iI+Bqadn1n5HCEwqjn8Zt1E5WtO778qjQ 78wdKAFIa9ywOkgd5xApTCXQCekrcG4hxSc6dQiXzQpO8z+IA78191M8PKVIBlFYozngi5A9C95 CaFVsMoDMnQIdUlgOczaq3i7nvz4jjif5L1qFYeI4/Ob54rvBPaNK6flCzyPCoj5tE/+1Rwr5Io iuAuTBm24dGddApRW8DRvQGePTYltOclTY1FZXW4vMb1+YPxYKMLtfBPyGqNp/zSDenGB3yu7/G rw/FS01gWjW4uGxx2O25l/8hVTgwUcymgL9x4ElGeCJhRFVF56RwZDamCfSIHdad4eXwtzBgsRm pCJ5JRjUhb/Dt3oe+hXNYC X-Received: by 2002:a05:7300:6902:b0:2f3:5266:fdfc with SMTP id 5a478bee46e88-30bca0aa2dcmr1790607eec.33.1781690818619; Wed, 17 Jun 2026 03:06:58 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 1/7] hw/pci: Recalculate option ROM checksum before patching ID Date: Wed, 17 Jun 2026 18:06:38 +0800 Message-ID: <20260617100646.28326-2-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1342; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1342.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: 1781690840000158500 Content-Type: text/plain; charset="utf-8" pci_patch_ids() only adjusts checksum based on the new IDs. For an option ROM with invalid checksum, the patched one will still have an invalid checksum. Always calculate the checksum and patch it if necessary to ensure the option ROM is valid. This is intended for fixing the romfile used in IGD passthrough as multiple IGD devices share the same rom with possible non-matching device ID, and its checksum is known to be bogus [1]. A helper function pci_rom_calculate_checksum() is added and exported for reusing in IGD-specific quirk later. [1] hw/vfio/pci.c:1090 Reported-by: K S Maan Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/pci/pci.c | 32 +++++++++++++++++++++++--------- include/hw/pci/pci.h | 2 ++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index cec065d108..601d65aef3 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2479,6 +2479,18 @@ static uint8_t pci_find_capability_at_offset(PCIDevi= ce *pdev, uint8_t offset) return found; } =20 +uint8_t pci_rom_calculate_checksum(const uint8_t *ptr, uint32_t size) +{ + uint8_t checksum =3D 0; + uint32_t i; + + for (i =3D 0; i < size; i++) { + checksum +=3D ptr[i]; + } + + return checksum; +} + /* Patch the PCI vendor and device ids in a PCI rom image if necessary. This is needed for an option rom which is used for more than one device= . */ static void pci_patch_ids(PCIDevice *pdev, uint8_t *ptr, uint32_t size) @@ -2514,25 +2526,27 @@ static void pci_patch_ids(PCIDevice *pdev, uint8_t = *ptr, uint32_t size) trace_pci_rom_and_pci_ids(pdev->romfile, vendor_id, device_id, rom_vendor_id, rom_device_id); =20 - checksum =3D ptr[6]; + /* In case the checksum is bogus */ + checksum =3D pci_rom_calculate_checksum(ptr, size); =20 if (vendor_id !=3D rom_vendor_id) { /* Patch vendor id and checksum (at offset 6 for etherboot roms). = */ - checksum +=3D (uint8_t)rom_vendor_id + (uint8_t)(rom_vendor_id >> = 8); - checksum -=3D (uint8_t)vendor_id + (uint8_t)(vendor_id >> 8); - trace_pci_rom_checksum_change(ptr[6], checksum); - ptr[6] =3D checksum; + checksum +=3D (uint8_t)vendor_id + (uint8_t)(vendor_id >> 8); + checksum -=3D (uint8_t)rom_vendor_id + (uint8_t)(rom_vendor_id >> = 8); pci_set_word(ptr + pcir_offset + 4, vendor_id); } =20 if (device_id !=3D rom_device_id) { /* Patch device id and checksum (at offset 6 for etherboot roms). = */ - checksum +=3D (uint8_t)rom_device_id + (uint8_t)(rom_device_id >> = 8); - checksum -=3D (uint8_t)device_id + (uint8_t)(device_id >> 8); - trace_pci_rom_checksum_change(ptr[6], checksum); - ptr[6] =3D checksum; + checksum +=3D (uint8_t)device_id + (uint8_t)(device_id >> 8); + checksum -=3D (uint8_t)rom_device_id + (uint8_t)(rom_device_id >> = 8); pci_set_word(ptr + pcir_offset + 6, device_id); } + + if (checksum) { + trace_pci_rom_checksum_change(ptr[6], ptr[6] - checksum); + ptr[6] -=3D checksum; + } } =20 /* Add an option rom for the device */ diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 5b179091de..2d8a4ad0eb 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -1103,4 +1103,6 @@ void pci_set_enabled(PCIDevice *pci_dev, bool state); void pci_set_power(PCIDevice *pci_dev, bool state); int pci_pm_init(PCIDevice *pci_dev, uint8_t offset, Error **errp); =20 +uint8_t pci_rom_calculate_checksum(const uint8_t *ptr, uint32_t size); + #endif --=20 2.53.0 From nobody Mon Jun 29 06:51:59 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=1781690892; cv=none; d=zohomail.com; s=zohoarc; b=n6JOCS5AEy/ImggZG4VeqHalojz2Clq3fbYFOi4LjUR4+b4aJmborSSSNDXV3FZBHJXfkLDzp9mn0l+uvCl90znT7DZriQAiWal9Km/qCmJlY3S++7yS7UPPDzUyYZUwwGZbH/94m3DN8FUhowUNg6nkrBjNful53y6sDB/lU+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690892; 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=hRYVLPHIUM7GrlbFP0n5EcLNdOMgTStoFfFbNYu20mg=; b=WKG91bnDmWT3HOju8A/VAmujO6QlFeA35XF36dNJH+VUp8Nt0gW67LyMpddVSnwcWkQJZiDexvif578WgameaBxcGRNT3urbDoOhquhBbSZI8ixzQ0pmSy0fe0qWSecUQ60/rnGtSUdX4amDeAtgtICh8OHP5HetqOLToevrApY= 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 1781690892632847.214910626768; Wed, 17 Jun 2026 03:08:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnAq-0003qU-OC; Wed, 17 Jun 2026 06:07:08 -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 1wZnAn-0003pS-7y for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:06 -0400 Received: from mail-dy1-x1343.google.com ([2607:f8b0:4864:20::1343]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAk-0008P3-Tz for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:04 -0400 Received: by mail-dy1-x1343.google.com with SMTP id 5a478bee46e88-30b9e755555so4850355eec.1 for ; Wed, 17 Jun 2026 03:07:02 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690821; x=1782295621; 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=hRYVLPHIUM7GrlbFP0n5EcLNdOMgTStoFfFbNYu20mg=; b=lo+u+CWUh6GXr0njCnWjTCj424C0UdgOOFrI6RIxwcfM7Tp+nOzAtP0z4buENrUkCG 8LAfo+9MNNVTi7SjrBZpEjSWqU+/O44t/VwkSRDR6lERkdJ0zQ8ewsObc/f31ZYcHJhz 8bmCBatyl9xmss+k8EQrx6QhdO+02mtZWwvFZzZ76CPSjiq+OYEvx3TSXmV6a/Cbbjtu HV1cjAYRxhPsZbYhJIKmTWuazqWQi7FXhOCAQ0Mlu6oxDpS0uGgfjUk68OtfFQqp8SyT 7VKwtX7Ytxg6A7nBE7gvw9FKT+E+5jNRVB/thpi8XOQShgAcLZFUIuf573AxaIh078U/ eBMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690821; x=1782295621; 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=hRYVLPHIUM7GrlbFP0n5EcLNdOMgTStoFfFbNYu20mg=; b=nXhC5c5k83hT/9rIvAcw/f4/66ssUjyn0QPhmvp89kTcqw6tTn81o+JpzKVyXmTcpA U1I/NyqpkVLXNu8pPYIl9cSeznSdfn/ZGpQjkEvbIzP1ARE2Qf2eQKufi0YBO3JSB/Xa 5ZCydAZVaV5shVJ7Glr8tLcJPSc2HH9FZl7afpzCku3wFibRyp44rBupDUHsygeMoZpE 0R0fA0/vAz4sk7W28Ay/IRuzOMX/S8x3n7AqTtxIQGUGcXgNADD6KUF0RDTkDNgIxGgr PFKgytP92XnGKKsUahORdgI57bgEq0YF8WlPeDFtuo3v6oNoN0FE5CutH2hZpW1mmHcY B/9g== X-Gm-Message-State: AOJu0YwsKHrH3x08c/F+6jRrGRFmPzBIBGuHgIow+29SN/22pC1FGmUL 1BWxIVpK0WBS3maq4KoXDn/vKRjrHvaNojhRehHpLVCjAP5UAHxN/CF9kvf2PZwbHw== X-Gm-Gg: AfdE7cmBs7owIDJPyDUVISX84nCqOSUv12oUrdasIKbf4uVQ/K+G6aCDl3kZ1QzQRxM 140+ysL2K91QL+K3zE31i/j4NV94zVGOFo8BtBD0WEN2IAf7XrbWCH0TCRon95EKTMQuaUMpB9y tkVvobtPzmnfrTddsxqqIlja0wGviN8xw5YvUdAfNnXhQaFRHnJRrPCTSPuaVHQEgXFZpWfP4G6 LFTVTwA7mrLzJvBavubiM0DufeGI/8YNhQKKyZAbsipxDhtlmvpU1GCnbPRuZ8daf78lDQODDEu km/2x8nujesv1/V81L/Ciyy9Kqqe5ul0GTmSwvsnHI/9g9jIYVkfIzwJNM2dqm8DrYi/6KXehB5 CH45uTpZHs5TcDlduEulQIknQzooLS5mRpZ4lYSehqTJaYV93jReP7NXAOGckr4XJ6HeuYIqaIO zfjmi+K70zMiSTtuLoBeWX X-Received: by 2002:a05:7300:5793:b0:304:ab8:f899 with SMTP id 5a478bee46e88-30bc9abc50emr1761053eec.8.1781690821409; Wed, 17 Jun 2026 03:07:01 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 2/7] hw/pci: Skip EFI option ROM in pci_patch_ids() Date: Wed, 17 Jun 2026 18:06:39 +0800 Message-ID: <20260617100646.28326-3-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1343; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1343.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: 1781690894487158500 Content-Type: text/plain; charset="utf-8" pci_patch_ids() patches the checksum at the reserved 0x06 byte, but for EFI option ROMs the 32 bits at 0x04 are the EFI signature and must be 0x00000EF1. Since OVMF does not check vendor/device IDs in the PCIR header or the checksum, skip patching for EFI ROMs. Reported-by: K S Maan Signed-off-by: Tomita Moeko Acked-by: Michael S. Tsirkin Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/pci/pci.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 601d65aef3..8e7872523a 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2513,11 +2513,16 @@ static void pci_patch_ids(PCIDevice *pdev, uint8_t = *ptr, uint32_t size) return; } pcir_offset =3D pci_get_word(ptr + 0x18); - if (pcir_offset + 8 >=3D size || memcmp(ptr + pcir_offset, "PCIR", 4))= { + if (pcir_offset + 0x14 >=3D size || memcmp(ptr + pcir_offset, "PCIR", = 4)) { trace_pci_bad_pcir_offset(pcir_offset); return; } =20 + /* OVMF won't check IDs in PCIR header, skip EFI roms */ + if (pci_get_byte(ptr + pcir_offset + 0x14) =3D=3D 0x03) { + return; + } + vendor_id =3D pci_get_word(pdev->config + PCI_VENDOR_ID); device_id =3D pci_get_word(pdev->config + PCI_DEVICE_ID); rom_vendor_id =3D pci_get_word(ptr + pcir_offset + 4); --=20 2.53.0 From nobody Mon Jun 29 06:51:59 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=1781690894; cv=none; d=zohomail.com; s=zohoarc; b=ecawyD3YZRV75OdBjCCU2K68ApreeeqfqDdDuy4PY/CofWOLHML+YDxVdbFnjeFjsSonjFoSDM+0F8t2l79th+SgXsUOWC0TG6op+kS8BnSxqi99gvcjt4gW4GjSC1Ydw522LMQVu7nkVTBqRuHoJJa5R7860nN4TD9OoM+4lnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690894; 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=zUMwvDssIR3uYg8o+wKDHFXkUTtBwn3FtTnPNCop7jI=; b=JGKhfZvZN3hdNvco8arLa2JlXnyavyzNUm5qkrPPWg7R94pkZ7vJCFNlWGoiRac7TqIzHPehg3hk3eD9FW+s2vkeaD04SYtqrqFonlWWXl8xYmeWIapuUlj8KO91oF2g8qt+b8DQ59qFR9FnpKvGQ1p2wupxwxai+Hk+fnwccL4= 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 1781690894764414.8610422471178; Wed, 17 Jun 2026 03:08:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnAy-0003sy-E1; Wed, 17 Jun 2026 06:07:16 -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 1wZnAp-0003q3-TR for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:08 -0400 Received: from mail-dy1-x1343.google.com ([2607:f8b0:4864:20::1343]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAn-0008PP-VZ for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:07 -0400 Received: by mail-dy1-x1343.google.com with SMTP id 5a478bee46e88-30bb7d20ad9so2298042eec.1 for ; Wed, 17 Jun 2026 03:07:05 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.07.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690824; x=1782295624; 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=zUMwvDssIR3uYg8o+wKDHFXkUTtBwn3FtTnPNCop7jI=; b=ZDr6iSKCgAWrxJg0r6IOckPcYilkiIIulQgyZsAkDYfz8MzUvi4U9wymhfbDIuUYIc VqZK4jeaA68THHwnN2qpOMudkygVprk1jEpZeMbuSpqzhAxpluPFRLzfV7KjkfEWmoKC nRWv2r256PRDRjuFKrMJJpBqgrFUvCXG8GHBWP7fF+oP8eOwV7J9vAReB+CkUn4LcJq/ 10WlgwyBnrz6L/eHBC4O9lj8aFkBD0iY1axdt5Rzet6QzMph2QxmdOk1hiEcNuoknM76 FjMFgpXeT8PeDijL5I3jhX6WvBPeElNnxVnQxf1nLh7/g3Hb38IBWIk3qi7MVyx8GgP3 EZ7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690824; x=1782295624; 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=zUMwvDssIR3uYg8o+wKDHFXkUTtBwn3FtTnPNCop7jI=; b=U/QCB41YeE1cNapI9fcC+nzMAspawmJPyUDDQ7nzufuQBHd5z3amhB8hGzKV3ONojz wvdYxQJI+9h5Wi8EswuUXG4k+zMZ7T864Nk13Zgsdq9rnJ0X4VEvzA/AOFeUTk2DirqS 2B7YwUH+3GRec6sOuuBx6bXB9/aYFE0oTvqJd73a2smUrAZNrfSYSOJE0oEaS2BeWyrc obHx85UDuLb0MwIPxDMqRdv96HeQeHYDN/EhDbhTsSHiw9dnYjZ605eZKoQ7Lgqx0/mZ q0iu9trcJrjg/cfbdKONIzuiAn1YEJKo8wT0e8keLpJKwbEvino7j3R28+rVfZhMkyMg xpiQ== X-Gm-Message-State: AOJu0YzZU7afzz0YrUwbzMeNivlmtreZXBNM5nbYuGJCrNYGvZAO/qJO 4ZcwKLe7XbSCLqHFxB9SXMX3rjqw0629V+MSg+J3DocQmTXtP1xQzjk5iwoR0FOPdQ== X-Gm-Gg: AfdE7cnxtdJ0/3L6ZcGW0HYXO9z4e6YZVv0p/LGw2ilW8KdG/7lG+IuGDh1rYkGYKT/ fshW6T3nxDrt/Eb7Cr8F5LKRFJzeNqNfP8WzxcfhGKL9HywkQP1m/LXn7m6caIC+4DnttiYM7g9 ptD5bDrl6IeQcDq5X3aUWNQQpgNcCx3lDBWJRlZEBLiQ1N8ouGroP7mBE4M15QwpLejAn3qhgtc EZ34dIYhiiwOmnWv8KuqHf+Aqu4ewzqMVP5L98SG7dj25GEIN7tSoinYtwRK2xRGul40JLUk77k jLHX9JNSv6qj/moHgDZHH9sen8PklmpnWk8P+5p5nrUsbDKeTjHZbmFaU2Lluddrw5KeaI8JoOz E4O/oEeF2Go6s5cSW+SINxJHDzkUKZ/MuSu3PRiL+QgGw+8PLrPXV2LfYpfufOrkqMOKsKDVhSv g10bs7p9u4jJS4vtZHOyJE X-Received: by 2002:a05:7301:1e4c:b0:2ed:6f94:9d96 with SMTP id 5a478bee46e88-30bc9f39f47mr1464576eec.19.1781690824165; Wed, 17 Jun 2026 03:07:04 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 3/7] hw/pci: Introduce rom_need_patch_id flag in PCIDevice Date: Wed, 17 Jun 2026 18:06:40 +0800 Message-ID: <20260617100646.28326-4-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1343; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1343.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: 1781690896325158500 Content-Type: text/plain; charset="utf-8" Allow external code (e.g., VFIO IGD passthrough) to request PCI ID patching for a custom romfile, replacing the existing is_default_rom flag for this purpose. Reported-by: K S Maan Signed-off-by: Tomita Moeko Acked-by: Michael S. Tsirkin Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/pci/pci.c | 14 ++++++-------- include/hw/pci/pci_device.h | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 8e7872523a..b4235834a0 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -352,7 +352,7 @@ static const TypeInfo cxl_bus_info =3D { =20 static void pci_update_mappings(PCIDevice *d); static void pci_irq_handler(void *opaque, int irq_num, int level); -static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom, Error= **); +static void pci_add_option_rom(PCIDevice *pdev, Error **); static void pci_del_option_rom(PCIDevice *pdev); =20 static uint16_t pci_default_sub_vendor_id =3D PCI_SUBVENDOR_ID_REDHAT_QUMR= ANET; @@ -2257,7 +2257,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error= **errp) PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(pci_dev); ObjectClass *klass =3D OBJECT_CLASS(pc); Error *local_err =3D NULL; - bool is_default_rom; uint16_t class_id; =20 /* @@ -2370,13 +2369,13 @@ static void pci_qdev_realize(DeviceState *qdev, Err= or **errp) } =20 /* rom loading */ - is_default_rom =3D false; if (pci_dev->romfile =3D=3D NULL && pc->romfile !=3D NULL) { + /* using a built-in default rom */ pci_dev->romfile =3D g_strdup(pc->romfile); - is_default_rom =3D true; + pci_dev->rom_need_patch_id =3D true; } =20 - pci_add_option_rom(pci_dev, is_default_rom, &local_err); + pci_add_option_rom(pci_dev, &local_err); if (local_err) { error_propagate(errp, local_err); pci_qdev_unrealize(DEVICE(pci_dev)); @@ -2555,8 +2554,7 @@ static void pci_patch_ids(PCIDevice *pdev, uint8_t *p= tr, uint32_t size) } =20 /* Add an option rom for the device */ -static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom, - Error **errp) +static void pci_add_option_rom(PCIDevice *pdev, Error **errp) { int64_t size =3D 0; g_autofree char *path =3D NULL; @@ -2654,7 +2652,7 @@ static void pci_add_option_rom(PCIDevice *pdev, bool = is_default_rom, return; } =20 - if (is_default_rom) { + if (pdev->rom_need_patch_id) { /* Only the default rom images will be patched (if needed). */ pci_patch_ids(pdev, ptr, size); } diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h index 5cac6e1688..8b9b6470e9 100644 --- a/include/hw/pci/pci_device.h +++ b/include/hw/pci/pci_device.h @@ -157,6 +157,7 @@ struct PCIDevice { char *romfile; uint32_t romsize; bool has_rom; + bool rom_need_patch_id; MemoryRegion rom; int32_t rom_bar; =20 --=20 2.53.0 From nobody Mon Jun 29 06:51:59 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=1781690865; cv=none; d=zohomail.com; s=zohoarc; b=D2OwgMrc91GZd5udxIvbhBqPnyGp52q8NcHU9TZl2NlHTLpUIDK9n0Uta9Z/rQtNVlRA1ybqwrGXu9B5E+tbijGuBFG3eEQp0YzK7JUk06rDcfgN9AowKTWv2lHUw7DZsM/bCJRuYGDRBFl1SwYLAFbUv+5tKZdFWR1a7LW/pq0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690865; 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=iTa0ZmGP95JPl4WlasVWnwFDJEUD2jnUmweoPYvW62I=; b=HJGV6hUEUa+bG8iYJV+uM+u1GBeGFDZdsM8lu9uPVP93HcqbPuPIYZBluNCYGOe2w4ZeglEnO2B0NVycJ7nVH03rYAzG3GQak1KGLEsasjbQFFVFPQseDozy3sHv318fRIwM4Ar3YV+h23xzkEL8a3FTim+C7RYYvDys29HbRXc= 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 1781690865115520.099856647223; Wed, 17 Jun 2026 03:07:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnAy-0003tQ-JG; Wed, 17 Jun 2026 06:07:16 -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 1wZnAr-0003qh-VL for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:10 -0400 Received: from mail-dy1-x1341.google.com ([2607:f8b0:4864:20::1341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAq-0008QD-II for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:09 -0400 Received: by mail-dy1-x1341.google.com with SMTP id 5a478bee46e88-30bc871ecdfso1164995eec.1 for ; Wed, 17 Jun 2026 03:07:08 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.07.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690827; x=1782295627; 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=iTa0ZmGP95JPl4WlasVWnwFDJEUD2jnUmweoPYvW62I=; b=okajfrxlBXtzjb0TSn5TpR4+ko4GrnSWAJoWy8TKcTEM3sTWMA/2ceA9pmj7YT4+sK /UB17Te67KXTRGj7hr/nvkZfLZKL3E5SB7N2x+0YtMiZuXuhVlLMwDjWlsIgLCsKnM3X syx4Kbs8ej1IInlrqePChKyLP0TXmsWGjZgAIn676B5aQglhsmsi8vU3pexUwyW3kR13 zCXirVdpNdMhlnJv0Nwu6FC/O5Vk2BUQCtUminCFw1QbFN9fvI52Qk6jGNxYB8yCUrEq i166rRK6eXP2N++iFog2RJBp9pdYVZCagiM+0J2wZOjH2cGL4VRy8ASLkKYuZ7vGJaAV Uahw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690827; x=1782295627; 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=iTa0ZmGP95JPl4WlasVWnwFDJEUD2jnUmweoPYvW62I=; b=K/s+UzcCz771gOMmHpVaLSEG79R1v4ivuXIPoMyvFfXkLDLbGrIIqfqDjEqK8G5cnP 1bFkeBzSu0FDAdFXCeYUb4Tmkjt5HmPU0fM1mktdxBPHG27VwUPMB8fwhZ85mlA3ZQET xi7Nu2WZhvR9UKM+Gb26k3doUYt7JTBz2N/+ykHWe2Btz4HGp3SYeX9plJHjr8daNRUn HXVhsElVVmnlcmCXfiEbmoYq12c3DcX5swrqkQHpFV4U/U45tVSRNizkKXXZ2twGARhS SjcRBoi9A2oVCm4rBd6W4hCDXWTedEeLysK1U7t2W33XLOEOvexzhB6hxyGb1CcN6TVt /HZg== X-Gm-Message-State: AOJu0YyyYzaotfr3VXhGW75PGrq0ovjPqysf2JU0Ui359L9zOscBm+dm qBcBUBL5Q2vMTkM5XdiMcNH5H1uLRajBBXb7VYwvH6AzbuNYBcxTDYByIvUTzGQ9Xw== X-Gm-Gg: AfdE7ckks3htEX5TUc/jFhLnXj8j4siQDpM8V6jO9goLDx6i+U9iOlECjY4xLRrU68P V0Tbc0b1IzZYqiH/o3GT9EWkHvBMkTHTzwYD4kUlQJClONUISnMsjPFra7d3UzO94ckRFa9qy+P aasM8fVeB8zSiQN/ss1aovG6wh5vAyFjeQZUS98akzKYimcm7He6ThcmcsJG1TY01yuvc/jvQB9 QEkb6CPsoJfJBHja7faF1kI2G3cG10p75sgSDB4Gt7kJ1Z9aH2cyZRArk+ogamucLI9N0uc0N2s lVel7AaRQqlNVpeIUg+zm9WWEzjIcMTB1OAw9KzC49GEG3SeHCqLQ/Rb56HrE/pE/mnnGpctZgY ptzoxZfJGWeU5dgXMNUCujP2DewK7MlzsqlFnV9gShcEkijtkI19GlQivrqGB9t8eWSHKgF62eN RRzlUv82xxiu1QquI1bsjy X-Received: by 2002:a05:7300:7643:b0:304:5b65:5971 with SMTP id 5a478bee46e88-30bc9f5886cmr1828902eec.20.1781690827105; Wed, 17 Jun 2026 03:07:07 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 4/7] hw/pci: Promote pci_patch_ids() to public pci_rom_patch_ids() Date: Wed, 17 Jun 2026 18:06:41 +0800 Message-ID: <20260617100646.28326-5-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1341; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1341.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: 1781690866461158500 Content-Type: text/plain; charset="utf-8" Remove the static qualifier from pci_patch_ids() and rename it to pci_rom_patch_ids(), adding a declaration in include/hw/pci/pci.h so external callers can reuse it. Reported-by: K S Maan Signed-off-by: Tomita Moeko Acked-by: Michael S. Tsirkin Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/pci/pci.c | 4 ++-- include/hw/pci/pci.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index b4235834a0..92d4e71c04 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2492,7 +2492,7 @@ uint8_t pci_rom_calculate_checksum(const uint8_t *ptr= , uint32_t size) =20 /* Patch the PCI vendor and device ids in a PCI rom image if necessary. This is needed for an option rom which is used for more than one device= . */ -static void pci_patch_ids(PCIDevice *pdev, uint8_t *ptr, uint32_t size) +void pci_rom_patch_ids(PCIDevice *pdev, uint8_t *ptr, uint32_t size) { uint16_t vendor_id; uint16_t device_id; @@ -2654,7 +2654,7 @@ static void pci_add_option_rom(PCIDevice *pdev, Error= **errp) =20 if (pdev->rom_need_patch_id) { /* Only the default rom images will be patched (if needed). */ - pci_patch_ids(pdev, ptr, size); + pci_rom_patch_ids(pdev, ptr, size); } } =20 diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 2d8a4ad0eb..298e0e6c31 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -1104,5 +1104,6 @@ void pci_set_power(PCIDevice *pci_dev, bool state); int pci_pm_init(PCIDevice *pci_dev, uint8_t offset, Error **errp); =20 uint8_t pci_rom_calculate_checksum(const uint8_t *ptr, uint32_t size); +void pci_rom_patch_ids(PCIDevice *pdev, uint8_t *ptr, uint32_t size); =20 #endif --=20 2.53.0 From nobody Mon Jun 29 06:51:59 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=1781690866; cv=none; d=zohomail.com; s=zohoarc; b=HOgCVnpbPMfReHBmmGlIjGSa3hz0mvyyiqlohHuM2AeU6FdlrArZYpSO7Q+xpoy/NCv5DWdbUnLII0La8cbPVr69g7uoRAuXc2D17nde9NC4yV0+Q05WxHK+1H9dBEkHPinIOTEunrzmn9OIKXuSio3YL8MiV53gleMZE1Atzck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690866; 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=89ekN/hJz/+HQ5oxlZwhes3IcxtRF+lWDbUwT5lFOzs=; b=hoNJtHxnEYBgb5iKmG5nyYWJ3c7N1vwEV3QKOXYuChI1eQjnOtBlpzQ31TcOcfJWGVCjcR7d/6NfY6XoptuN9DlXTfs50t0yXRvodqph6ZW1BswoxzfNXDrQlTUZ8aB5Rc0deqMrbfbj2omtfQBYCRmYYtOuK8Z2Hr37hRpmX3E= 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 1781690866139454.16943086901165; Wed, 17 Jun 2026 03:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnAy-0003tD-HD; Wed, 17 Jun 2026 06:07:16 -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 1wZnAv-0003qv-11 for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:14 -0400 Received: from mail-dy1-x1342.google.com ([2607:f8b0:4864:20::1342]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAt-0008Qs-Gj for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:12 -0400 Received: by mail-dy1-x1342.google.com with SMTP id 5a478bee46e88-30bcf74e617so1368741eec.1 for ; Wed, 17 Jun 2026 03:07:11 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.07.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690830; x=1782295630; 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=89ekN/hJz/+HQ5oxlZwhes3IcxtRF+lWDbUwT5lFOzs=; b=VHwwpLh9V/rLvPI7Y71Fho3VHhx0INO5FekVGdW4QRYSbHn/1QwwgbIpI3L/5v8iO+ v43DR8srzBx0OTrWWBVNyGVaLoSLTMb1D3riyauTJjXPUpeu5GQD9WlBIoamTK8WS4Ve skQdceCFTg4buz38Pus2eDjEdZbr9RpubOq64dktud4XPSiX8Re4U53FZ0o9AiHaSYAO qutBFqxB5tzqqS9RhDOc9Vb6xH+5tQEUSFLAR92cKP5BBCilleQNIporJVqEaVEySpbO FSP55Tte5jiIgGsD5iMJ7T3bqqagzBEbZMzMQ8GIWb/7GN4TDCMrooSNBu9k4CI/R2kB XFSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690830; x=1782295630; 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=89ekN/hJz/+HQ5oxlZwhes3IcxtRF+lWDbUwT5lFOzs=; b=Wv0XbuJK96IqXx/9RoB46jc451BtHZ/+6EPYdHwbB/L0GzbfIf2a71myca2Z8T7TGM m7ZONgIFSGg/QdBHl3V0IKMcBQvIxzRwXNFL7tT0Zo7OO4YEgKH/HJtvdexus3I7JTAE Qa5B4ffv1Vr5HbNdizi2usuttOB1UQVm4JvsFDdppso9K3dm14+DRQBNdmleDNmpuynl 8hDKFs0BkM+eFRU/iXkyeI/Ph/60bRK3dWMq3wdoK+V53Ol4oI4zBE7DOuEPHmTOK3ZN 6dIP2LdJtuJDl+jIg4eEVAqBi/Rd7IFoGf/VIhdQDvEkuRaNQ2fAxiX0SeDxsFX1biKm 3dLw== X-Gm-Message-State: AOJu0Yw+O+nt1mGe5BTioGkadqXjJqiVXiVRnm+1nneaxQcbnkv7M+If tA58TwjMv3SVDDDWjt3iA1R2bxtWTtkaqYfWrHU8Qx1TIqty3ylXBd3+JeA6Vz0vkQ== X-Gm-Gg: AfdE7clcVJhxE/n7ThIeCGRtjiAGZ1VVmkZx5ELXoWE1QG74kaE9PukkloFPP3QcvjI 5/om2CDjtwDc7PBO6E3j2aMGXODMkl0vyQtxNJZkG7soTWyJSyq9LnpK1QGenIoqYhRypcKG40p s4ZZ0JVaUmfMxTgr025OxhbCsMx+duZra09DGyPd+LymrLYJFzzXMSxazZC/RJUq/isISA8Mgza gJZ8scP/fqNZVstLc/BWXZYXiCJtl19p0eIhWoHRDgstJ4dr7Q9di6+9oIdxzsD9UBWSzVES7cp 9E1hk2wrbk8RmWg5eUc/Y8HLBaSYZ0pB1fnyxYVZ7ymn5Tnqvack4Gq+60t1xA6Oocei1dMauH4 qP5cwZDd0fIW+KEK91kGzwP7C4dxvXR2dHCTgHI0S/GJQxjlxMJGaiepb7V8Q/BNBNYSQMY0q/z CUC6oetdSRP7HAVwv8Xs3rGzwxCRok0Uk= X-Received: by 2002:a05:693c:20cb:10b0:30b:dd58:e134 with SMTP id 5a478bee46e88-30bdd58e697mr275747eec.21.1781690830076; Wed, 17 Jun 2026 03:07:10 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 5/7] vfio/igd: Toggle rom_need_patch_id flag on IGD devices Date: Wed, 17 Jun 2026 18:06:42 +0800 Message-ID: <20260617100646.28326-6-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1342; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1342.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: 1781690868150158501 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. Reported-by: K S Maan Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/vfio/igd.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index e091f21b6a..834539affb 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -512,12 +512,14 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, i= nt nr) static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vdev, Error **errp) { struct vfio_region_info *opregion =3D NULL; + struct vfio_region_info *rom =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; bool legacy_mode_enabled =3D false; + bool has_rombar =3D false; Error *err =3D NULL; =20 if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || @@ -534,6 +536,10 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *v= dev, Error **errp) gen =3D igd_gen(vdev); gmch =3D vfio_pci_read_config(pdev, IGD_GMCH, 4); =20 + has_rombar =3D !vfio_device_get_region_info(&vdev->vbasedev, + VFIO_PCI_ROM_REGION_INDEX, + &rom) && rom->size; + /* * For backward compatibility, enable legacy mode when * - Device geneation is 6 to 9 (including both) @@ -556,8 +562,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 +571,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 (!has_rombar && !pdev->romfile) { error_setg(&err, "Device has no ROM"); goto error; } @@ -610,6 +612,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 (has_rombar || pdev->romfile) { + 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 From nobody Mon Jun 29 06:51:59 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=1781690885; cv=none; d=zohomail.com; s=zohoarc; b=dOfxMcpVoOez98MlfmL9HLF/BJuQD4HFzOCBU88a0DZacLCvwuUem781tu61/yXa/5Wx4ZxTqS0xOhOz3ZCW9VsFh/mYBuSHMzYvfWQJXpgoaFl5ooJs2PN9iOiZqnCGDCloT3t40leqw6/P4agPFJ4vq1GwZEUMiZj3RlsS5L8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690885; 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=9k1bsJjY8Pm3QqNdtzXNMjSxvoCU22dmmB0G8fCK1/U=; b=WTlx2OEDyMZaVVbvtnR8rJJw1G1etIpCMGuRyhYoD9JTxGSxYEfZ8FOYrMNXFUbfjtQDKkDCADz/QyzuH4YLccOe7YQdHF7WYSjSjIQEYstNiMG5G94p9rjF8EUUZp9FyJhxve3BtllbkomrSsKmqH3XhJHSrA8g/COAJm7+q7s= 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 1781690885432759.2198868823697; Wed, 17 Jun 2026 03:08:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnB0-0003uQ-Jv; Wed, 17 Jun 2026 06:07:18 -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 1wZnAy-0003t5-E9 for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:16 -0400 Received: from mail-dy1-x1341.google.com ([2607:f8b0:4864:20::1341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAw-0008RR-VJ for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:16 -0400 Received: by mail-dy1-x1341.google.com with SMTP id 5a478bee46e88-304d8362a58so586175eec.1 for ; Wed, 17 Jun 2026 03:07:14 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.07.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690833; x=1782295633; 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=9k1bsJjY8Pm3QqNdtzXNMjSxvoCU22dmmB0G8fCK1/U=; b=Wf2R47mlFjyY8/HqUbzXav6HEf6TffkpXA95vCyK0BmbIFJqVZBb4hpBzoCZyuT3QY H7i8Ou2mE9chg1f6Y9LKFP6rDiXzWKcBe7qDl5G1f3GxM8AI1aK06gR44l+mhDLIjsRw T1Y8aP+/ZZGVPcFn+zezLXcB1YEt5KL/mK39aWa6oHqfJcNsFdb0sSM/T7toLya0pZJ8 OKSokj1b7P3Nmv8gnG9DmUzQnHiC+XZIPuqReCVZRDIX6DrQn8i9A1bnjkiCiylbtYJt sj37jpdScXDQ8YaGdrLtbJnuWO8rHZXDO6++VoMB/2n4fnYPhmx41p6hNDwytA9CLMLR 4QKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690833; x=1782295633; 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=9k1bsJjY8Pm3QqNdtzXNMjSxvoCU22dmmB0G8fCK1/U=; b=UPFj9gfrtZfS+D4VgKvdS0eck8Eu7GarJsoFP24IEzA5fkWD03aTjNVphUjVdIH1jH WXrTXKxbFKpD6rE+lWG9Wx+qQCbhjt3T7WXK7IZynk539eD8i1A5j6o6U8QA8kA84X8u muXbSZ52+ErGFRSBaVSLKGFhDGMJmC2YZ9ciZC3VQPQSUwYmPxAv7KFPwr6+MgNQWZ2G 2eJPwJnawfuURS6jRICdo/P2EK7WzWhhNQZyCk82ZB4qj80QYU/7rKBqed7gApDP/9I0 eef6QYbOB4St5Ynhds2SJm1Up3A05JYAJCHgDajguzxtVMBQeF+hy0MHKjiE8SnErhw8 G1zQ== X-Gm-Message-State: AOJu0YyoG/4DoZnff43hd0RoWDnV0ogiiv+15+kXO/EeRyHNu7q1Q6// 06romDQqNmGL8/yAjYY2MGfhaXbBoSM0YL5hgRpfbVaD84Ihp5tIXOcLRruMemY7gw== X-Gm-Gg: AfdE7clLiYyxS7jF7P01bq0KqGEbJkdvuwTzFRoB+ECD+Xcnl8MRGXPz7Jvrjda5Q3t nKufe+SDwpnsTowJqUUdJV5UNQqnLobXC6rf/LjfU6XRLBUpBMWzUBhI9nzM69KUbkyTKMzvsZM VanTOw+2mCQeTFXqvQChuZfYGll9ZpJoywsJ7VvutMPjb4/9HaWTD0QudP6UpWjtWiqmw4tEwwt d80XJQnYpNqJSKCpfnatQo4I+CECbMv0zp6jGF3y16R6VO++4832BwkzVIgCRIP3c/Sy9pSDZxe bCm2R5StNtBB5XKFL57hGcVsENLYmAJ+a/ckOBQPQEXBgAcZ8U2aHEnBr1WwExGvR6HbEmLDzPt fMs6tnXbzBDEHr3ao8KtU5ytsRlmIl31wPFGIfjFa548bgGsGcyDDMHXomoHkSvrQAAadFpetZg 1tWLgTUXDDCMjLfr1gqr5U X-Received: by 2002:a05:7300:ea06:b0:30b:7bc2:c70b with SMTP id 5a478bee46e88-30bcf0900aemr894783eec.9.1781690833225; Wed, 17 Jun 2026 03:07:13 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 6/7] vfio/pci: Use pci_rom_patch_ids() for IGD ROM ID patching Date: Wed, 17 Jun 2026 18:06:43 +0800 Message-ID: <20260617100646.28326-7-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-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::1341; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1341.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: 1781690886572158500 Content-Type: text/plain; charset="utf-8" Remove the duplicate inline logic in vfio_pci_load_rom() that patched the device ID in an IGD option ROM and replace it with a call to pci_rom_patch_ids(), conditioned on the rom_need_patch_id flag. Reported-by: K S Maan Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/vfio/pci.c | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 9c06b25e63..6cbd65126e 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1029,6 +1029,7 @@ static void vfio_update_msi(VFIOPCIDevice *vdev) =20 static void vfio_pci_load_rom(VFIOPCIDevice *vdev) { + PCIDevice *pdev =3D PCI_DEVICE(vdev); VFIODevice *vbasedev =3D &vdev->vbasedev; struct vfio_region_info *reg_info =3D NULL; uint64_t size; @@ -1084,34 +1085,8 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) } } =20 - /* - * Test the ROM signature against our device, if the vendor is correct - * but the device ID doesn't match, store the correct device ID and - * recompute the checksum. Intel IGD devices need this and are known - * to have bogus checksums so we can't simply adjust the checksum. - */ - if (pci_get_word(vdev->rom) =3D=3D 0xaa55 && - pci_get_word(vdev->rom + 0x18) + 8 < vdev->rom_size && - !memcmp(vdev->rom + pci_get_word(vdev->rom + 0x18), "PCIR", 4)) { - uint16_t vid, did; - - vid =3D pci_get_word(vdev->rom + pci_get_word(vdev->rom + 0x18) + = 4); - did =3D pci_get_word(vdev->rom + pci_get_word(vdev->rom + 0x18) + = 6); - - if (vid =3D=3D vdev->vendor_id && did !=3D vdev->device_id) { - int i; - uint8_t csum, *data =3D vdev->rom; - - pci_set_word(vdev->rom + pci_get_word(vdev->rom + 0x18) + 6, - vdev->device_id); - data[6] =3D 0; - - for (csum =3D 0, i =3D 0; i < vdev->rom_size; i++) { - csum +=3D data[i]; - } - - data[6] =3D -csum; - } + if (pdev->rom_need_patch_id) { + pci_rom_patch_ids(pdev, vdev->rom, vdev->rom_size); } } =20 --=20 2.53.0 From nobody Mon Jun 29 06:51:59 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=1781690900; cv=none; d=zohomail.com; s=zohoarc; b=lbEbD0D+dDWTDsgiWY8x8JPp01+UkjCeKgi3SSaEZMApJSIjngXU0T6AG5oqQKeVfFoAZPCjKUR05WN45/GLSoidttWrMjkhv2RZ9bWdQGLSHy67TdIqTcrTgkHkXDjLYh1Ne5CEC0b2KQi+7S7LD9ReCzEYI1PWDjSDua7Yb6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781690900; h=Content-Type: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=eR29j5eSW3jHnfyZlO9CmHsOeUjUcFAsBjZkoSBziy4=; b=a7yeCIHA5OCPCPBZFLoeAY7aqMtoeQWqwemnGke21hpEykl9sTe4LnHwZmG0Kx6yEjGCTQwSkyW8uZMP/8THiod5XRtHJU8Z9wy7E2+QnTSZiiTsmARHJIfKC0MqnziWvAKqXrb3mq5QuSmfYBOh0ee/2Z41QCrwyOxkCq2ihuM= 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 1781690900056823.2783151070505; Wed, 17 Jun 2026 03:08:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZnB4-0003zH-A1; Wed, 17 Jun 2026 06:07:22 -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 1wZnB2-0003yJ-Ql for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:20 -0400 Received: from mail-dy1-x1343.google.com ([2607:f8b0:4864:20::1343]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZnAz-0008Rn-KN for qemu-devel@nongnu.org; Wed, 17 Jun 2026 06:07:19 -0400 Received: by mail-dy1-x1343.google.com with SMTP id 5a478bee46e88-30759632453so8865716eec.1 for ; Wed, 17 Jun 2026 03:07:17 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081e5d3f20sm21858490eec.9.2026.06.17.03.07.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:07:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781690836; x=1782295636; 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=eR29j5eSW3jHnfyZlO9CmHsOeUjUcFAsBjZkoSBziy4=; b=ccElQpHUncg9PvCPw1y2KeH++e6L3MTqbGi19KJjUpV4RXAPlSJfc5CRV4xucuITpj h/Kd+jQb4O/iOul4F9SvtAD5i1sWMLT6dKu+Qrq6aus8TkpRoSjhdp6bOjsWdmSXO6Gv YugMwh/qZNiYrrr4fiCEizVLs/2FtWAoJe1pkLKFeyJFI5lQ3bJ8ecg0Xmm0SrWDg3yO 6tOTPboMIJrzroOdrjIJ035ZxN+/UzbTQuUt5n5JpGaZUCJR0i8teWwGvTi0nEnZ8/N6 GIhWOsZnMdj6YpMwi6dTH/d4+kjxwmaCtpap93mkB6nL6gwLWdUn9bV21fgp2T+0Ik0O V7eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781690836; x=1782295636; 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=eR29j5eSW3jHnfyZlO9CmHsOeUjUcFAsBjZkoSBziy4=; b=ri9BP5rfnoDpNHWhiSVDgOuj/Limy6ARgJdco4/OYzIL+2Z42ew7QOZsIzxqMY1iLT TJG87gk1/nvUyWHZBzsc86UYFAhx3kn7Vdi0gQv+qRN+0hO2UynkbeHWpo1H8o7viE/a j+vkkq+vh/+P3vq8b2joQqLyNLGbwcNay/7U60AznOCHMt18TqUzBosnTTtN3kPR2faC dHutcWMwsFh+VG9JvrutAvajKcNPhf6N2L0Av9yp0YDIVkTy5dG6BNgjfy+uPv9m2D66 gPcEuWxZSpGEPtVwUrvtThTqE/vklAvpifMeMrEfNFLDnVeqzQrH2eX2+KAWX4BtUxCj Ggkw== X-Gm-Message-State: AOJu0Ywd2IPUHJglAFCO3n+G4lkZnSWL6X9mmLDVB+OcMdim2QEPj1Bi UlVmQsSS+2cZUrGPsl2DUuE7UKQEnF4zzM2Tc3TFBS6Jhd664fXSk96gru9JfLlyzQ== X-Gm-Gg: AfdE7cl2wAnvft7CG+edd/U8xV/bADgnbILbjrBf7QgWY5Jgc1Otp6I43XHfFeJURf1 oK1v7nJn0LuxCGtlX6m2sG/RWhjOxLMeHCFLuNQz4LtbLJW1IyDfaVowMKD22a7sCi7WD7noCd5 78k9f8smVR8HDLZJY/dRdoLK5Z+cF5oy/MGAMldHvbMXMXm7+FVBknSZbyT0J5F1JUnrhG/tsXM mh3PpPm7JVGPzsOBiMAAmoakFzlOkdaez6qSiV/EXQXWZm8AUNU/SUog2AQlvpScE9sY/j1X03J k7ekHRqZ03H4j6lGBcLkDZBbOlneHn1AN3AmPWGLG7F0fwRTYuHAJKpTEXP12u6rV6UFMYgzVfE HfFuEWu29nOSeZDpfN0j8exTJSJ2AadPJojAzpef2mBY8OmTFK/7calsRY5UWWl7IqV52pM9k1X M2JDMHBJwD4fOkDkvukQ57E2Ygh+ZNutQ= X-Received: by 2002:a05:7300:7b8a:b0:304:ba84:a0cc with SMTP id 5a478bee46e88-30bca0faccamr1696169eec.33.1781690835993; Wed, 17 Jun 2026 03:07:15 -0700 (PDT) From: Tomita Moeko To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Michael S. Tsirkin" , Tomita Moeko , K S Maan Subject: [PATCH v3 7/7] vfio/igd: Clear saved BDSM in legacy VBIOS ROM at load time Date: Wed, 17 Jun 2026 18:06:44 +0800 Message-ID: <20260617100646.28326-8-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260617100646.28326-1-tomitamoeko@gmail.com> References: <20260617100646.28326-1-tomitamoeko@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::1343; envelope-from=tomitamoeko@gmail.com; helo=mail-dy1-x1343.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: 1781690900561158500 IGD does not come with a ROM BAR [1], the ROM BAR read by default from kernel is actually the host VBIOS shadow RAM region that contains host modifications on boot. With AI-assisted reverse engineering on VBIOS binaries, it is observed that VBIOS saves BDSM register value on first access and uses saved value if present. When the image is executed in guest, since there is already a saved HPA in VBIOS, it keeps using that value instead of the GPA programmed by SeaBIOS in BDSM register in PCI config space, causing VBIOS to program GTT entries with wrong address, resulting in garbled output in BIOS POST and the error below detected by i915 driver. i915 0000:00:02.0: [drm] *ERROR* Initial plane programming using invalid ra= nge, dma_addr=3D0x00000000db200000 ((null) [0x00000000baf00000-0x00000000be= efffff]) The previous solution, c4c45e943e51 ("vfio/pci: Intel graphics legacy mode assignment"), adjusts GTT entry addresses to (addr - host BDSM + guest BDSM) to workaround that. But it is removed in 5aed8b0f0be2 ("vfio/igd: Remove GTT write quirk in IO BAR 4") due to inconsistent values in MMIO BAR0 and IO BAR4. Considering it's unsafe to expose HPA to guest, a ROM quirk clearing the saved value in VBIOS image is introduced. It searches the BDSM accessor routine by matching a 19-byte signature anchored on the unique `mov $0x105e,%ax` instruction, then locate the offset of saved BDSM and clears it. This makes the routine fall through to the PCI config read on the first call inside the guest. The quirk is invoked in vfio_pci_load_rom(), and is gated on Gen 6-9 IGD devices with VGA access enabled and legacy (non-UEFI) PCIR code type in the ROM header. A new trace event vfio_pci_igd_vbios_patched is also introduced. [1] 3.5.15, 4th Generation Intel Core Processor Family Datasheet Vol. 2 https://www.intel.com/content/dam/www/public/us/en/documents/datasheets= /4th-gen-core-family-desktop-vol-2-datasheet.pdf Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3093 Reported-by: K S Maan Signed-off-by: Tomita Moeko Reviewed-by: Alex Williamson Tested-by: K S Maan --- hw/vfio/igd-stubs.c | 5 ++ hw/vfio/igd.c | 110 +++++++++++++++++++++++++++++++++++++++++++ hw/vfio/pci-quirks.c | 5 ++ hw/vfio/pci.c | 2 + hw/vfio/pci.h | 3 ++ hw/vfio/trace-events | 1 + 6 files changed, 126 insertions(+) diff --git a/hw/vfio/igd-stubs.c b/hw/vfio/igd-stubs.c index f7687d9091..879a8aff56 100644 --- a/hw/vfio/igd-stubs.c +++ b/hw/vfio/igd-stubs.c @@ -18,3 +18,8 @@ bool vfio_probe_igd_config_quirk(VFIOPCIDevice *vdev, Err= or **errp) { return true; } + +void vfio_probe_igd_legacy_rom_quirk(VFIOPCIDevice *vdev) +{ + return; +} diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 834539affb..9e2d7a9648 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -734,3 +734,113 @@ bool vfio_probe_igd_config_quirk(VFIOPCIDevice *vdev,= Error **errp) =20 return vfio_pci_igd_config_quirk(vdev, errp); } + +/* + * IGD ROM BAR read from kernel is actually the host VBIOS shadow RAM regi= on, + * which contains host modifications. In Gen 6-9 VBIOS, the routine below = is + * used to get BDSM value when programming the initial GTT. + * xx xx xx xx v: .long ? # saved value + * 66 53 push %ebx + * 66 2e 83 3e xx xx 00 cmpl $0x0,%cs:v # is saved value em= pty? + * 74 07 je 1f # if zero, go compu= te + * 66 2e a1 xx xx mov %cs:v,%eax # else return saved= value + * eb 0f jmp 2f + * b8 5e 10 1: mov $0x105e,%ax # dev 00:02.0, offs= et 5E + * e8 xx xx call pci_read_cfg_word + * 66 c1 e0 10 shl $0x10,%eax # left shift 16 bits + * 66 2e a3 xx xx mov %eax,%cs:v # save the result + * 66 5b 2=EF=BC=9Apop %ebx + * c3 ret + * When running the VBIOS in guest, saved value still reflects the host st= olen + * memory base address, which is not correct in guest. So we need to patch= the + * VBIOS to clear the saved value. + * + * The unique 19-byte starts at `cmpl $0,%cs:v` and ends at `mov $0x105e,%= ax` + * anchors the match to the routine. Both `cs:` displacements must referen= ce + * the same offset. + */ +static int igd_vbios_find_saved_bdsm(const uint8_t *rom, size_t rom_size, + uint16_t *bdsm_offset) +{ + static const uint8_t start[] =3D { 0x66, 0x2e, 0x83, 0x3e }; + static const uint8_t middle[] =3D { 0x00, 0x74, 0x07, 0x66, 0x2e, 0xa1= }; + static const uint8_t end[] =3D { 0xeb, 0x0f, 0xb8, 0x5e, 0x10 }; + uint16_t val; + size_t i; + bool found =3D false; + + if (rom_size < 19) { + return -ENOENT; + } + + for (i =3D 0; i + 19 <=3D rom_size; i++) { + if (memcmp(rom + i, start, sizeof(start)) !=3D 0 || + memcmp(rom + i + 6, middle, sizeof(middle)) !=3D 0 || + memcmp(rom + i + 14, end, sizeof(end)) !=3D 0) { + continue; + } + + /* same saved value address? */ + if (rom[i + 4] !=3D rom[i + 12] || rom[i + 5] !=3D rom[i + 13]) { + continue; + } + + if (found) { + return -EEXIST; + } + + val =3D rom[i + 4] | ((uint16_t)rom[i + 5] << 8); + if (val + sizeof(uint32_t) <=3D rom_size) { + *bdsm_offset =3D val; + found =3D true; + } + } + + if (!found) { + return -ENOENT; + } + + return 0; +} + +void vfio_probe_igd_legacy_rom_quirk(VFIOPCIDevice *vdev) +{ + int ret, gen; + uint16_t pcir_offset, bdsm_offset =3D 0; + uint8_t checksum; + + if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || + !vfio_is_vga(vdev) || !vdev->vga) { + return; + } + + /* Only Gen 6~9 devices have legacy VBIOS as Option ROM */ + gen =3D igd_gen(vdev); + if (gen < 6 || gen > 9) { + return; + } + + if (pci_get_word(vdev->rom) !=3D 0xaa55) { + return; + } + + /* Must be a legacy ROM */ + pcir_offset =3D pci_get_word(vdev->rom + 0x18); + if (pcir_offset + 0x14 >=3D vdev->rom_size || + memcmp(vdev->rom + pcir_offset, "PCIR", 4) || + pci_get_byte(vdev->rom + pcir_offset + 0x14) !=3D 0x00) { + return; + } + + ret =3D igd_vbios_find_saved_bdsm(vdev->rom, vdev->rom_size, &bdsm_off= set); + if (ret < 0) { + return; + } + + memset(vdev->rom + bdsm_offset, 0, sizeof(uint32_t)); + + checksum =3D pci_rom_calculate_checksum(vdev->rom, vdev->rom_size); + ((uint8_t *)vdev->rom)[6] -=3D checksum; + + trace_vfio_pci_igd_vbios_patched(vdev->vbasedev.name); +} diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index bccf31751f..45db968681 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1592,3 +1592,8 @@ bool vfio_add_virt_caps(VFIOPCIDevice *vdev, Error **= errp) =20 return true; } + +void vfio_rom_quirk_setup(VFIOPCIDevice *vdev) +{ + vfio_probe_igd_legacy_rom_quirk(vdev); +} diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 6cbd65126e..66d6315e6f 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1088,6 +1088,8 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) if (pdev->rom_need_patch_id) { pci_rom_patch_ids(pdev, vdev->rom, vdev->rom_size); } + + vfio_rom_quirk_setup(vdev); } =20 /* "Raw" read of underlying config space. */ diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index c3a1f53d35..d8d6c09632 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -251,10 +251,13 @@ void vfio_bar_quirk_exit(VFIOPCIDevice *vdev, int nr); void vfio_bar_quirk_finalize(VFIOPCIDevice *vdev, int nr); void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev); bool vfio_add_virt_caps(VFIOPCIDevice *vdev, Error **errp); +void vfio_rom_quirk_setup(VFIOPCIDevice *vdev); void vfio_quirk_reset(VFIOPCIDevice *vdev); VFIOQuirk *vfio_quirk_alloc(int nr_mem); + void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int nr); bool vfio_probe_igd_config_quirk(VFIOPCIDevice *vdev, Error **errp); +void vfio_probe_igd_legacy_rom_quirk(VFIOPCIDevice *vdev); =20 extern const PropertyInfo qdev_prop_nv_gpudirect_clique; =20 diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events index 8dbb477298..8ff8af7302 100644 --- a/hw/vfio/trace-events +++ b/hw/vfio/trace-events @@ -90,6 +90,7 @@ vfio_pci_igd_bar4_write(const char *name, uint32_t index,= uint32_t data, uint32_ vfio_pci_igd_bdsm_enabled(const char *name, int size) "%s %dMB" vfio_pci_igd_host_bridge_enabled(const char *name) "%s" vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s" +vfio_pci_igd_vbios_patched(const char *name) "%s" =20 # listener.c vfio_iommu_map_notify(const char *op, uint64_t iova_start, uint64_t iova_e= nd) "iommu %s @ 0x%"PRIx64" - 0x%"PRIx64 --=20 2.53.0