From nobody Tue Jun 9 01:17:07 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=1780926445; cv=none; d=zohomail.com; s=zohoarc; b=eZM/R9mKI5e5Xt1D+B4+76OIkdnvpXpQqYR76ghnom2w4MBz7A4DB7QJkAdnrvqdJCz+FjaFWTiJY0lJN814YY5DM5pri8jcdEOqeY8Tp8bRcCoOX9PsVGZ7ALXzAxLQ/0lKoeid3ywEesVig6F755Y2vxvlBt3SkI+pKgA6KBM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926445; 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=eDzzbFb0YuuJuUhAbDva2aKW7NQ6P8hnFa3Zvvz7W6Y=; b=ekuCWKnaHG3h3ng2EePOcIxqKmoJfZuu6wunaEyavtsvYif4udnmSsjCFzuJWGtr0ZMXV0JF8JyedhwUKnh1QJMrIJCAaYhcjHmpw2mIeyKJIq3l/87Kq+j+2XN3nYXgO9NmhgOMEntTKrBOdtY41D3Ctk7YliYxgnXGf3ZPwJ4= 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 1780926445211437.3438974424412; Mon, 8 Jun 2026 06:47:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJ2-0001d1-EP; Mon, 08 Jun 2026 09:46:20 -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 1wWaIz-0001cE-Vz for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:18 -0400 Received: from mail-dl1-x1242.google.com ([2607:f8b0:4864:20::1242]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wWaIy-0001mQ-Ef for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:17 -0400 Received: by mail-dl1-x1242.google.com with SMTP id a92af1059eb24-1363e78746eso4604216c88.1 for ; Mon, 08 Jun 2026 06:46:16 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926375; x=1781531175; 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=eDzzbFb0YuuJuUhAbDva2aKW7NQ6P8hnFa3Zvvz7W6Y=; b=MZ/46JNe3QQP7ibcdck1ffi+LjJr0n+NEzWWXwiCvvKVUZ8A8/fZbD5LtOxeX+xY8l RdzZaMZZJQMAJO9fro0ObLcKXaI1OtwPWKtwohc6s4Q0TUHUq3p3xLK3lbJNCi/Z8KeQ +HaY6ymtfsSPyT+wGBcglbea0CPPg9TGiLqPKGG2PtUOcr26sFeB4CluK7zw9aF6XWpf sm6E8DN4ewa2+QCTnftWSWuGWEoR6GltzyK8I6NvloRZ5sEzxTVgpv1XgvLiitozgzjG vCqoYHbORQ2tFn88v5+p9bRVmep2PphPauiNCH0z0ZFEryKMgi6i2lyVfrAe5bPlA8s2 GNHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926375; x=1781531175; 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=eDzzbFb0YuuJuUhAbDva2aKW7NQ6P8hnFa3Zvvz7W6Y=; b=VxYvaoBzPfG79p5SoLOwHPufsCdybMY1CkwtRDn0KsxcHA+4/7aZG+sesWVM9zNa+9 B/Tc1/dfphN69HumOJ77CYSIIpo5sjpDR3i2UD4U1q6FXzjDgmeRkhDZUofa0dBetqp+ 6sUnLJlw7bGbnVOHO0tmdxasdcFkRaLNtGZOrMly5zxJYHCkTCzhzsSZu/SP06PCB8+t QvMyOaJ4n1KUdaBnNHPXJDi8j0fPWU10FGEiV0A9HGOSec3r/YjL7Zgu0krxzjpDu5s2 tN2zFyJysN7wyDnyZanKqJYt7nJS6AFD5fq2v8+eZerwflDYiHocgCh6KoO9tsTbhM23 a3oQ== X-Gm-Message-State: AOJu0YwZBJWq1zNrLKp+OMK8slQVU2lTKdh9ZlVkJJIS1ef2Kzk2CQjm k0AHm/Qs9jZnWZ6G7MBZil0x618Sr2aaweSl9qFaal0+KIWfEmSMO9nVzM1cOdPhXQ== X-Gm-Gg: Acq92OFOvZhdOblcQ61DawVP+VfvUk3kZfverff9MUrFvsykUgvIUygp0naD1cJRcGJ Q1YYPrQM6e1yCapyaNds4lV9ZlzCpqxdJ7ehP3JpuYpORHJD350Js7JiK5Oc2oSFy2oCeAEzaGa QXoU6C3EP01FEDvYGw6MfGisYJ7Q3tS4oiOac1EWQyWkp8Ju//9KbfnGtPIbauFOF7FOrzIg6Wg wi+kJDvv8aGr+LtQ92XeRdGfBsmZTKfTaL9NWUyWEsJCvF3Fuj/lFqbRO+yiAG7Z6m1ZTiDAwZg WgU3H5TFGRLALg/i/u5VXg5scTmms9/qBNwj27oAAu/Qr+rvk/H0+bDvuJ5Ye6zXGGxoYJy79iu St7V8tGVSpZ+znpgtf2IMuerEccNuwpeAbrb8L4sxlhUV+C/G0ESgKs89khdD9APsjqnlcI2qzg Xy2S99exib2dNpIWSVRAtuTEtfS0QS9kXM3u0T6rI5ow== X-Received: by 2002:a05:7022:6ba1:b0:136:d237:b42f with SMTP id a92af1059eb24-1380671e4f7mr7603799c88.32.1780926374787; Mon, 08 Jun 2026 06:46:14 -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 v2 1/7] hw/pci: Recalculate option ROM checksum before patching ID Date: Mon, 8 Jun 2026 21:45:52 +0800 Message-ID: <20260608134559.23971-2-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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::1242; envelope-from=tomitamoeko@gmail.com; helo=mail-dl1-x1242.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: 1780926445992158501 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 --- hw/pci/pci.c | 35 ++++++++++++++++++++++++++--------- include/hw/pci/pci.h | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index cec065d108..742917f79d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2479,6 +2479,21 @@ 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++) { + if (i =3D=3D 6) { + continue; + } + 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 +2529,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 (ptr[6] !=3D (uint8_t)-checksum) { + trace_pci_rom_checksum_change(ptr[6], (uint8_t)-checksum); + ptr[6] =3D (uint8_t)-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 Tue Jun 9 01:17:07 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=1780926456; cv=none; d=zohomail.com; s=zohoarc; b=j5HQTlWpvRjGtLa/RcvZhTOPxBizx2roBU3tTt7b8KMnXGYyqNbhCQooQ6iGLO+UfTUdtcCu8HJkMM+iaqmfIeD9/OBBiO454g0wB+gPJWljDUQUtLXU9+LHIscqttD/99BI98mLuAJuoNlC+b700rpmQDdr/Oz7D3IPfBjmceg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926456; 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=cUkgsoVilVlPYda9uQfkBVnUfVlq2StBmKHYa49s4ww=; b=gDTaC3i+Ut7UEOLEgxulQNxo8zMI2EhPIAHRs3/NrwldiN8B5bLVYiNc8YlzbzUh8pLpwxSO26Fj66PM3PsaSvdnYQJIVqBR/11JNUuohW0lsSjrjWgdqg9MwSum1Bcge06KMjpMhe8p4vML0+VNA+4tCx8Z0Wg+37CxY3HAev8= 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 1780926456602129.79345947969466; Mon, 8 Jun 2026 06:47:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJ7-0001eB-BU; Mon, 08 Jun 2026 09:46: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 1wWaJ3-0001du-Mk for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:22 -0400 Received: from mail-dl1-x1242.google.com ([2607:f8b0:4864:20::1242]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wWaJ2-0001ms-BY for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:21 -0400 Received: by mail-dl1-x1242.google.com with SMTP id a92af1059eb24-138129a622dso293850c88.0 for ; Mon, 08 Jun 2026 06:46:20 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926379; x=1781531179; 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=cUkgsoVilVlPYda9uQfkBVnUfVlq2StBmKHYa49s4ww=; b=lHu5BfIbnFal5PpclzSnLxLK7h75uxu2bYlJxvdGUXYjT6bPzCNGYgNeEQApz8YKdS Z3PhIawfatE7+V6G1nV5kekmfdceAIpc2I1I8kvrF3f6AmZIX9I65is/oGAFgO2nI/Yq vd1TxvhA3Lt4xN9xpK3rOI1D5hwECbPIVHkHULhuChkcAl3SeTqn6Z6SmUaAkDoSEeu9 v+DSpliLPaztnzeGLNL4OglTioURhh/UXPPlP6tD7222CEIp2fal7kEdo14rQtIJ3QDR otjTon9bHEaaROx1vdd5ksa/81EjOG/QVa2IiimekORYT+KBTQ4MVVTvjeZ3OcK/uSfy zXtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926379; x=1781531179; 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=cUkgsoVilVlPYda9uQfkBVnUfVlq2StBmKHYa49s4ww=; b=ZN2KYebtAHvAfDpCue87FCzrKyrmqVEVSwRyItz+zrNR1ChVo8EvEoIybKbpJ23fia yNYNVH9gUKbo8j67cq24nFL2H9LsnUNUs0ZNzQvPs8oBDJ9UTLiblzxVoF2dyzcdUG+T zbJeSe8Cug2aU11NV5fuErsvXtzQ012/FYeOrTKdiuIfMUNSTaU7xeeFDLRFfab7+LuN BwUdEwtbdpO/UGFUaGl8Z0DRK8cM2fDTce8FISp30Z2KRKg/7b7RXrPjfMpPOV6swMpz lhlQwTfQoEg4f+XWRoCgTYeLUo/+LFtmr8p754uNDKhCW/4S4+zTKxq6Dxiu8gE8WFNp yRMw== X-Gm-Message-State: AOJu0YxuMg5YDwVV/WEJI0aX4+iiShFHqOmChsruZTYRZjAtHSphdAFF I6J4gEojdTNUkedo89iEssoB2mdlHIrAAb2mnhOBsE3dYX/GOwnUqwuMrjfkxOLIKA== X-Gm-Gg: Acq92OGLUXgL1kotBVTZHtBpQflG83X5a5yqln0AdUbHhZRvw3xEWojKNspw4gghqlo oZmlXdZyDd8qkSwuKDqIce6JtF0OJ3cFa/Tnvvne36AWVUm/hxuf0NkTOW492KlFa1kXUjHX4Zd s5pxSroljX7dpJJWZ+pn1IPOVgkbfjq8mMij+D7l6sQEjUJZd7YafJelqvaJA+3N3DuXEZhlQoD 94kitClGyGr8mc0Oo83UDHbdcg86Y1eCo+2NIa8arOux8BYWTE4d7iXVKllnum1rW1nWT3K948e YcvQdJzsjJWJHEnHTV+HJzIq+6+Qs6F/PI/NsX6hTJ4V1SBtJiNEuk80Kb0T91IGFWr4g2rrhnO NHOJIfFiMevclnCfv9Tov6frUoB9MXJPlZkPJOmYqVbtf1yKlefHTI4eakBdUdiRQKQc3jMhOWL JzATL5XfS/F1EdXqstDLaMUchIm70ToW/pK2iHTwRsOg== X-Received: by 2002:a05:7022:390:b0:137:f4ec:2a12 with SMTP id a92af1059eb24-138065b6fb1mr7016503c88.0.1780926378949; Mon, 08 Jun 2026 06:46:18 -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 v2 2/7] hw/pci: Skip EFI option ROM in pci_patch_ids() Date: Mon, 8 Jun 2026 21:45:53 +0800 Message-ID: <20260608134559.23971-3-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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::1242; envelope-from=tomitamoeko@gmail.com; helo=mail-dl1-x1242.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: 1780926459706154100 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 --- hw/pci/pci.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 742917f79d..eb10e586d5 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2521,6 +2521,11 @@ static void pci_patch_ids(PCIDevice *pdev, uint8_t *= ptr, uint32_t size) 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 Tue Jun 9 01:17:07 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=1780926445; cv=none; d=zohomail.com; s=zohoarc; b=RZNLhFIWELD4bfoGq2YjraJHzGXj22gLRmNQtZksl6sVgD9keEjR1sytmB1ixTodUAAS65V5UHhpmZ2qNDU2NRRM8yL+495Pb/2tw3Xo7Lyro5w97uZ/Tx8UAwLKYnEmIoW/mbXhtuGfJqzKkuAzZmTwJuOehDC/cXskwL3/2AU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926445; 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=jsRz8Y6G16FABvT4pO5G4JPM/Kif2MGsulppFYVI0J8=; b=gfcmOPl9Zj0J3AhmNEAX/kEkdi545TO/c1AuvZBSrbjZjwet3fdgX7iPPxcOkEcRQS6DUyX57jPLXc2OJu33hX7VPabyGR3IfKTHVpdZEMHYbNDFV8/bBX0TD75/FrFerGGnjPwSFHAeC1cFNLISZxPT9djBDlS8haBIfbfgBe0= 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 1780926445494772.7337571736964; Mon, 8 Jun 2026 06:47:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJC-0001fc-A7; Mon, 08 Jun 2026 09:46:30 -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 1wWaJ7-0001er-QS for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:27 -0400 Received: from mail-dl1-x1244.google.com ([2607:f8b0:4864:20::1244]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wWaJ6-0001nF-91 for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:25 -0400 Received: by mail-dl1-x1244.google.com with SMTP id a92af1059eb24-138129a622dso294001c88.0 for ; Mon, 08 Jun 2026 06:46:23 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926383; x=1781531183; 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=jsRz8Y6G16FABvT4pO5G4JPM/Kif2MGsulppFYVI0J8=; b=Xu8lCmY4z4R2SO+KMxJGwEdtWC8EEe9WaqUecah/fvGoQPa6OnNU4JnKHdr9H53L1k TFquLhAH/4I1DDO+4+zb1aV+/gVX5HbB4SbgI8bW34oLddkRXszc5B0EAlJaxryXP9Mn D4AORMPGRdReKWpWYxCtEvGS6UCD9UK0VWcMnOyJZRQRzRML4qWDhnfiVTkBaUh67zvY 9Cwf0l09EKbo3KRa17A6m1zt8ZlsxFs/DaSjUBswnP9Kx4zzNRMKmiwGTW/7SS3ciEwE rIjo/7U+CmigGZWZlq13FyLt05EAHyluDU2yt02GWm/N5aaMxIhN6ol2511DfTvCHerH JlLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926383; x=1781531183; 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=jsRz8Y6G16FABvT4pO5G4JPM/Kif2MGsulppFYVI0J8=; b=GFVZu8alfNZ5HmIH45gUWnu6s4iSPZvH8E87WJ0jRt4SILm3KHkAM9KBtMjUgmdzWq V5t5j19HUdpjP8wABmw30xJdLcNV1bmm6KyIv3tl/j5RtmHthCIaEJOor/kzwsgbg/CK kb5+PV0FIhFmAyJiR62Hg0VuW05iBoJ3MFrd8XDhYjquIAgRhkrfy1gDhPgxHEaBP6/o pnKHy94TtSah+RkIfKIkUL0uqDIGPtP1CLduLvktu+3ArqlSnLvhxdMM/N42KxqbPIxg AhNKoKGMgm4hu07J2+h2GtqaJfJHqDXuN9fTOR1gPo/sw1Txj9HlQ3eG02j6wyxEy29Y L59A== X-Gm-Message-State: AOJu0Yw0xDQCYOL39n87otIG2kdQLIRUiifHxX5l5svG2mb5X4+GTk8L x+LDzsqWXg/FYxvmajO0QpttsLcynShe2+Z0kOHNBsZ9+ytQgNvJn9PAVD1Uy6fsZw== X-Gm-Gg: Acq92OEWr20AY5e+FmMHxrsfccJMOrVpGD/JM/YY+X9lzBl71azzMCGHpAGpvXwRJjG s2QzV114ZJHmWlHdcogVE0ncnQR06T9Ts9NOIDX9wtnuAnqazICx0HgmbDfFV4uum6dpaUVJ+mt LiVz2uGfegkF3/eV8ZVEEXttzfJm2dwnSpGWmAQ60W1JeYHu7dkWE5eFCzVJ/mk9+4qsjNP8vhW I+xYVW2LckwW7YoHm8oxBVH2g2SjYxSmJXfXqzs4GMmuyCdVq64Ec1jUcBpLOervk/Hggff5YHl N+KOG8GZim7AxNs/M5hBo2Z2h3I6WYoWSeHkwYAB/r42XedehGjWdbNV6gL0YbkTbPvOwxbjeds bmOqdpuZN5SS6iPnJ9+Jp9EB/2eHBKPr8Ly8ElA5tGqPw5V7nyQipIv+nq78lcf6/RuytsrCpGz eiJHtMv7pe050FNxd1N238utlUKU9FQ6W9xEMkUpkWYg== X-Received: by 2002:a05:7022:1005:b0:134:d708:1a24 with SMTP id a92af1059eb24-138066cd622mr7919942c88.17.1780926382726; Mon, 08 Jun 2026 06:46:22 -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 v2 3/7] hw/pci: Introduce rom_need_patch_id flag in PCIDevice Date: Mon, 8 Jun 2026 21:45:54 +0800 Message-ID: <20260608134559.23971-4-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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::1244; envelope-from=tomitamoeko@gmail.com; helo=mail-dl1-x1244.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: 1780926445975158500 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 --- 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 eb10e586d5..0facc05aed 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)); @@ -2558,8 +2557,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; @@ -2657,7 +2655,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 Tue Jun 9 01:17:07 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=1780926445; cv=none; d=zohomail.com; s=zohoarc; b=Yzhn63M7Q5Z612PZv+KoevPO+NXFLo7ETKseZ2ocJ9H7v8TpGwZ0TKA2hJZtkyA9hNlouTS38M2RtoqhsNBNuhp0VLsCbwJF/99cB9QVZrKHf7P8uhtjstQt7WXEX+nGGE55OUtPmA4ct11Isrk59+zQ6w0WnZuwc6nsHvzLEHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926445; 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=2AsBAt4ofYYD3HWvIECkW2Aa4aB4woL/62DS1Pf6WdI=; b=X7mdjnkEIwzGxSNNBBkujafY83t6ormsCh12/ySZxLE4jcYGwsZQhgylPAh8mXK/dYlkOjF00gNx0D7ZmWcwda7GQxD8RS9vnJvpSn6QXCtqLOBVe6dK2F42zTKWogS3gZkYqz8lxx0cCmv/naDAH9RFIbEsUpehpj5CJQ2VWuY= 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 1780926445387925.1746692227217; Mon, 8 Jun 2026 06:47:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJH-0001gD-Lt; Mon, 08 Jun 2026 09:46:35 -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 1wWaJB-0001fP-Ua for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:29 -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 1wWaJA-0001nU-F8 for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:29 -0400 Received: by mail-dl1-x1243.google.com with SMTP id a92af1059eb24-1382533d428so30756c88.1 for ; Mon, 08 Jun 2026 06:46:27 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926386; x=1781531186; 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=2AsBAt4ofYYD3HWvIECkW2Aa4aB4woL/62DS1Pf6WdI=; b=hzflAIy1qhtkQxI6iWwLvQCR5YbT46NWdtzQ2ufocqgCO95uxLRGgZkstFTHuswdx/ EOWD/gdsSJX9Im5+9xsiHmHwebjLW1M7I77Sdh7ay91xCKsvnBe9KBOCulhZ1+hqA/xW FvhLbBoTFzEZeqx1HipISCenr9ok/3HUocFlhSJdrMh7KmLx4usdfLAJDPNXN+h1j/Zb A7ShSOzKSly+NzZqCGTqE2faiI8PvMTDgJVvXE9qucgRpAgSx++36w7at9gUK4cPwP30 hqU83TUXjEQ3jq0wMBuF8R6QQc1QMtg/LKfrBVCj5UuKuQ1PNbWhGmRy9DGqCE4HD1iu Od+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926386; x=1781531186; 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=2AsBAt4ofYYD3HWvIECkW2Aa4aB4woL/62DS1Pf6WdI=; b=JIaNrji+adceGiiQgwS0Vza1yMMOatBSfGsukwJRG+MpcoBflYEHIRKzu2/HWEZPtF tjFuG4AwQUEclPOo0stDuDl8825tgDKyh/0el8/ZCCdZIZE3aHfGFVz+gXhsQVvDeO6I /bKdX838qjCDvk3wyQANuuSRIH54EGvfaRTQzrEqg89hg020WZkALqc6i+FIvDiGZUy9 Mr0LYsJfmy7ympZLKKc9DEqNuKwsGT/QBzllSv42H1/kY8zgtTBm2GKCpwMqvcDxQ71W xt+2JyWeKpWJaF+tjCv4O2as568McD47bCgBCxIefzkp169RFtnkM4KmnD5sdQuN8kGA W80w== X-Gm-Message-State: AOJu0YwS528ToRJza4v0DkOl+QpcMQE89fvLmrOhCWc6Af4vLS5ZHe9Y pHRmAzAdkKmB43CbaMRzhdx7Y5hHBIW6e2VzjILmW+1fv39LOVPtIYqQJA6d1jdq1A== X-Gm-Gg: Acq92OFyUrnli7rukDdjul4RvyP3h7o6dSVd3rFdbMvsbM9sljnPbMcwbq6aE6w7uU4 v6+GJoPh7NM8yTzb+7eGeAHCFW3XrZpmed8TY5VCCTiErqjQPd+8X1xEPjunOLioj3BEgOScdu7 e2x4qAzLpKTWWNz74uFoEOVi4YY+4baMaV97PySgXPt/YDpJkS5Q4dWm1UDGE3tMM3y6g1B4IYV AjIq+8HdlAmeIgt6zSJVTWPoY8CsSDpsVgBNJBdc4G+qhHn3X8s3+mlJx5s+fJeRgNcpc8VxtOC Z39Fg+BpmV1KQfTscR/cqaDT7BXs/UKFYOkhUQbVRfM+8/TYko5p3ZU2R9O+EmZJfb51tpOYgyN YHXorvnB+edgv4W0xMXKTU8l4zbl3ul6Dl7ClQu1QRN/e4aFt+HSHjypwrKVwMRVWj4thwo4DI8 tXA7w/v4HelCeJ1G69PXMArDbJuKhwbP/MiiacrmiLMQ== X-Received: by 2002:a05:7022:ef18:b0:137:6781:7dd7 with SMTP id a92af1059eb24-1380670b7aamr7438089c88.20.1780926386409; Mon, 08 Jun 2026 06:46:26 -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 v2 4/7] hw/pci: Promote pci_patch_ids() to public pci_rom_patch_ids() Date: Mon, 8 Jun 2026 21:45:55 +0800 Message-ID: <20260608134559.23971-5-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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: 1780926447643154100 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 --- 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 0facc05aed..752cea0e77 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2495,7 +2495,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; @@ -2657,7 +2657,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 Tue Jun 9 01:17:07 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=1780926463; cv=none; d=zohomail.com; s=zohoarc; b=AG93+EzOYM8wwEQbdw3JhVyOwSHc4CNsLqG/Sz4sbxvph+VuqNfHPo9OGjnPKzo0yUZeyHPxWtcYOaYR9vD6c3TMDdGRmWvNxTt016ua8CJlZ3cC8kKNhKGvLr5Y5gSYZPQQb1RXdGwWvkx1r45QGv95DYQj/NhmlbD8G+nH+Lw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926463; 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=c9y+t/Fr9Tl1tYTPTG4duB8hZcqcNG0G4wjflSFcDM17TmqV4+U57rW0CAIeBWFc+tiL6UWJ2vJB6tSU5tFQArZnyPPtAQLRdYa7trmH9qwNH8rIt9zO/Ved43eqXAOvLYt9OUDqE1XhbVwMGT5kkdKFG0QLuLNI/kjOY+yNswo= 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 178092646310125.16900964979925; Mon, 8 Jun 2026 06:47:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJJ-0001tK-Kd; Mon, 08 Jun 2026 09:46:37 -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 1wWaJF-0001h7-H0 for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:35 -0400 Received: from mail-dl1-x1241.google.com ([2607:f8b0:4864:20::1241]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wWaJD-0001nu-Ct for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:32 -0400 Received: by mail-dl1-x1241.google.com with SMTP id a92af1059eb24-1382533d428so30908c88.1 for ; Mon, 08 Jun 2026 06:46:31 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926390; x=1781531190; 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=kpXwD6G5xqyKZMyXnTj6CPJa8kIAbVWDoHqoj8W0XrX7xW3Kbd3W4oNh3ol2Qag5k8 KmBYC5Al5d1ThSYWHj2Lzr0Xrtp0Xbqp8eTFqB3LLJKiFdZYWDbVq9djw0412cOqix0s O8LSNpJXSm/uml7Pi3D18VFKLhyqSOWnWm4DhkWlZ2LBfdTYFDucKoAHN0VaSO31NPO4 IAz1eykqXjxsPTwbEbcgIUnRbna5PRcyXdiPAO+6KHZ5fkJhgEDzvkSphTf7qI7sz2jB PzbRBGYmrr8f2tmjVbLNp+2CKQcQkwLmyTL00wFYUJnm593vURuMCY8onMkXa+GjWRig mS4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926390; x=1781531190; 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=dXtZAo3GiJ3FlLmP3AQVerPtXXBw27M2ASmJ2YEQf7xQY0oarOyshcvkrXZHGDJVFZ PDicbbBrDmFxfLLQvzZUir2eg63YpSxIIcWiAuV7zyoSLNhJc1b7f6/FWzYMx23URCKs 7HFdtxsPlY784cH0lSFN/l93gN1cZM/+QRyEk4XQS4i54Pk1DULO7ZoGHmrwgoMeVjJh +HqlgVUe9t/h2PVFyEHoJk9MeSae6yWX8Gd99tqUJPkQ/oBkR3LruixwNK7qf0Z+6SDt xw6vRNxxPFC6lxbZ9wWJsmLF2zebX9mT/pviKnkYxYYAm/66oZr3tOZA+qviFOs6nrZM F82g== X-Gm-Message-State: AOJu0YyDppv6fC1fLaqb7ojhJD16WQPGH5sqzKU9IWOYnAZXcaOAqu+F SswcTpC0nq625JG5FpqYuphx0tkVv6kqWo9UhtINgQfKph762ZbRy3FWUiG/IL8r7w== X-Gm-Gg: Acq92OFn5T5pUKPoOVbifnVEXj+nN1doTUTUzgKdKYznPtnthMbrAPLTt5AM65U9SeI 7ssieUs06qy0SU1C5lvFmp5R56EtJBT9uaYvSL3rJiMw8zKsyQY+6GXrz4rGttkwjvVaBSlV9kO +icn59M39b8EPLWsMFGlkEOW3xWyaI7wq2Gl6wixoFkgHYGCu1iL0yfbGxRHW6y+dpHN2vJcP7G rDZ7MZUnGfDBuknadr70S1UCQ/CHxRiYjT4y3toHk8bPeZpIf+UrBLtcdvFVF9PMSqbPZB7OqNK YZ/n8oSw7TXb6JFqXBxsMn0AGdgL+jq2mAPn8SuJBSxpUvnDMF2sqO0dNTr7EnOpU+0+4SNp+BW CDaeRtmbnT9GD2isMkLkkKPnjfewr7vZ6erB+kAYwKIO3ArO4YSeGgB5J6JFXLpdard/j/w/MzO OWAOnC/v6BjankYT6mGsSsMkA0AIO4ImwLI2AHZ0iHyQ== X-Received: by 2002:a05:7022:6081:b0:137:f764:85f5 with SMTP id a92af1059eb24-1380672a5e2mr8665213c88.32.1780926389677; Mon, 08 Jun 2026 06:46:29 -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 v2 5/7] vfio/igd: Toggle rom_need_patch_id flag on IGD devices Date: Mon, 8 Jun 2026 21:45:56 +0800 Message-ID: <20260608134559.23971-6-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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::1241; envelope-from=tomitamoeko@gmail.com; helo=mail-dl1-x1241.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: 1780926464611158500 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 --- 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 Tue Jun 9 01:17:07 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=1780926445; cv=none; d=zohomail.com; s=zohoarc; b=HoVW/TLEX1HQlnGSGyKif0cYUK1aexRcN96mKEitaA4/b6Fn5PNedjg6IfjQOKp+SlUm4i+HaOR83VK95AKwPTH5msZ7MrKmX6Q+J/AQrhtO3M4vzrT/2lpJZ2clLgaFbdTt0awJK/RIlM9TQeNRk3PF6cdgedsift13lr+qDcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926445; 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=V/5eWk02X/lpHR0EkJPxIePuobgrX/uL03FzQ69hh+tImpNyNLUAKQa0/zjyjpUVUrrn3JcM8l1TUBy/22bEPiz7DfDv12OxNj+eYgkBJyPtwQL5CqmDbqkCSkivU1rgcKyKqy0UL8iWRlEWRO420BoRmVKLAzdn/90G1VrsU5I= 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 1780926445141619.0228220042911; Mon, 8 Jun 2026 06:47:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJK-0001wb-DG; Mon, 08 Jun 2026 09:46:38 -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 1wWaJI-0001rE-U1 for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:37 -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 1wWaJH-0001oU-6v for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:36 -0400 Received: by mail-dl1-x1243.google.com with SMTP id a92af1059eb24-138188a7dccso3849298c88.1 for ; Mon, 08 Jun 2026 06:46:34 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926394; x=1781531194; 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=QLaMXjh+KHgPLxmtXVQM0l4X/XP+pJuTGQb04Jgq7wIB+MqKzRU0MdTzjkkDWqnDpj W8TEBKgUSruq040MaqLYlNqEewWPqWLsOeXnTzwEq38stDRhGkS7tcB4K8MZ2QinoBmN Ini7DMm11Zt5ZudYyYmxe9SYdWZTLgmwYZxaElI7RF73+QFZJWW/WOpVkb+7G0tCJk7H J/rrVLDFC9mJZhcpRYbCDNxOItl/kgVOoLbCWZiPomiQEGi3PnuoA8jDIJoTkdL1loYp jZ4MD4sL5+g2oaofMRYm024fbzxXasvx5NwYwkHWF+oKbPdO2wz01wSJAzIVsQA33WWI ggBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926394; x=1781531194; 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=mtHOr+DFDPBWtEmi8IwaU12j2mUHe/0lCllvbwlWvpqiwIUtvJG07gZtZsU/wHMgBP OheEsNK8KvHtbtwZJToTsKFEzPP4CMzCbc//5/fAfNSXc+UIZiP6Co9nB3EVyP4C5A5a EpV14l02LRkftqESjsZbaJ7z87P2SI3r3BFx2HwgFJDpk7VS4PbqxKrKmCbP5/m4iYae DJNbSIOPmHZpQjW2Cv/2BkzXl3L9HCHb0IyDi+JGEXySMmBqDmVK+maXmkGHrGn5UrXg +wOQ4cTrivM+lf0M5oAj++DL/xT2Kc1XHUmKjmCUZesmksn/JvBP4ki3QfyFt6dTbqCX cs6A== X-Gm-Message-State: AOJu0YwnX3qkb0yZhqKCVY7qv9zMnpaLQoCfQAOzDA8FPwmJ10mHgpUS UZMO/Zo4rWpnqHjWgubEEFasZd/ddcrEGv4BslCwmzr/c7OPJ03bHomYTKkZaOj2+g== X-Gm-Gg: Acq92OHcwLINvgnPBf5uSu4TgduTxVonTNiqtVDPRcn3i2vOVeU3zxEuhZkMqTE4p4H PmPza/FsMELE8WGZJFzeHzVyY3En1psMoSnkslt/UcVuAWfCvNFlm0cbxYtdh3pjqwkdrW9pJDV HR6ajiSUJl+14AqER7oIFJ3rznQZCqF+k7tqg0ULiaoTGJ4dAV3RJ8a/B+jJKRzRTWgzR7r95Q/ BHXMONY5ok/juLMSx3Zu5VZLZTNoJZKhsUBYCDy+hk1wytuFlgdylQb/9/0r8yuMrSaGyotpAIW f7R1gV2jy9a3/0liU3UcC5lRlBXTdMm+xU7oFpd1eanCz+bQb8awxhwABExCBVdhQnYQnlmftVr fM1y2Fw9zAQYdQ6qduqRGuX75uZKPi/lLr1LKTx2yELDxkxnzvdvkbT1As5TCR1KN94qcjNCvhy sK9dLpAQGveq5NGRjfYlSMOBSzbZ53jUt8Tf2VSxRSWQ== X-Received: by 2002:a05:7022:f8f:b0:135:608a:2864 with SMTP id a92af1059eb24-138067251ebmr7691398c88.33.1780926393565; Mon, 08 Jun 2026 06:46:33 -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 v2 6/7] vfio/pci: Use pci_rom_patch_ids() for IGD ROM ID patching Date: Mon, 8 Jun 2026 21:45:57 +0800 Message-ID: <20260608134559.23971-7-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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: 1780926447620154100 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 --- 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 Tue Jun 9 01:17:07 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=1780926445; cv=none; d=zohomail.com; s=zohoarc; b=OINbZe9NIVgGqagXqFErsLaKqb7U+xHh9NbFEAX+7ecxmTQTTCIWmRD39kvPfg2MKMqdsghuSUv3mxnH3VaE/ZOHKAasfkFr2ElFTBMdeFYFBHYPy9NuOtKkzHitpykyCiIvWkU+JZmLlo9wu1s1iqLSw3lvjbf8Ldo4TPVQ+1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780926445; 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=pmVUDnOf12D/8Gz/HBWKseB4q9uhka05+EsRNjPTTjQ=; b=eTDitreEg14wkzW176FR/I2TpjBgF1KojiU7L2PAaJ2rGgTNv1L3TR1xolAh5kIKpparA0ktx8/jIe92IzhX8yUhcd+AJtpwiNfJez+Jj/lt52pak2946EjWZuSNP5V2ho3DUFrH4Hmzqr5fQ4OvdkW83ktyQ05T5trb/qhwEls= 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 1780926445922133.44864794403088; Mon, 8 Jun 2026 06:47:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWaJP-00027a-AH; Mon, 08 Jun 2026 09:46:43 -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 1wWaJN-00025v-5r for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:41 -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 1wWaJK-0001qj-P5 for qemu-devel@nongnu.org; Mon, 08 Jun 2026 09:46:40 -0400 Received: by mail-dy1-x1342.google.com with SMTP id 5a478bee46e88-307263ad0cbso5519912eec.0 for ; Mon, 08 Jun 2026 06:46:38 -0700 (PDT) Received: from kotori-desktop ([2408:820c:8ffd:b5b0:12ba:d5b5:2236:f1f1]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f54c9c12sm12335970c88.6.2026.06.08.06.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 06:46:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780926397; x=1781531197; 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=pmVUDnOf12D/8Gz/HBWKseB4q9uhka05+EsRNjPTTjQ=; b=fEJu6qi/MXVi0feK3NIZksjsF+KnbclSSvL4zfHA/KATUQL/UaniNZxlVu1ejlLYaQ TL+Zbu9RWQVBShA0bv/Fv0P0sYesGjepTWc0KFEfaHMf+1Qd6oLd/uZfIsNs93CQ7EdT Gh6j+P3a8XE/cLxFxWbN3Zyrg8FXbfUW9qALLKG0zkkxcjvxuH1HmELCjT13W4jFeODb +HMY1tzRbEK9RIOLdHhfTKWmFD1REQ0rbaTIsyamo8q4QUnOoa05yj20AsLyDr320k4W ybaLgizfzSNnY9WqBPsKn1mTnZS+P+nO6FaA2AP3tFAclO0oGBY1HIl8m3hFwnMRNX2z bSwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780926397; x=1781531197; 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=pmVUDnOf12D/8Gz/HBWKseB4q9uhka05+EsRNjPTTjQ=; b=Iszfzg2/hTPEnx/DzlAUuCYFccagSzSq+ObOQOptilAnByI0NGGR6JepnT1phUBvXy u1tkG+1FdFGAy+Nh00iruJQ8h2xaoxaOYpfQe83rYfn1dDk2L0oBJ+zDqhVnk7XS0qu6 tRH1cxZhBP/SCfYMVxWbEcaiW/Lb2fAsNHy9S4VT7mJNMnFRkv+jfnPiUQp5bRRzws/9 SNYhsmZdWZj5ohjtSP44msJK1koD7ZibeAysiVziOW51YfVYMVYMaIluiSgIGWdQfOEv AGRZaH1x2OWmOCOQqUjh7DbywlBZviCpaO1vX2X1mv5ql+lUqpTjQ95Phy1DsqGitakp vaiQ== X-Gm-Message-State: AOJu0YxeGHbzLBtSLaqpLleJc/QqD7CCApLpulZIsRvDkkgUKMJp1Mt2 n+FbYASng/ffYrMSKmWTf9dhYANxD1yooyzA7LAEjdP3Ad/90LDMHl+QelovIaD3/g== X-Gm-Gg: Acq92OFlwjaR84bE7bZJJsMRh+A7pnekNWOzn79ASeRs3VPp+psyy0Hl4YHGKnKhSLd gov4a79pUwbMIQp7fvjcAAM5eHC+uLrZT2ZfwUycj5e1getJslz0StoB8mB8J8DzElIHlkB+5Wm ysja+n3OgW990tTfwDfjtx1yScSJUnadZkIXNQmq+SDV+w1OC+ZSOa78zRi2oZ3J3fkHAOuwq2M o8u+HWhSiATWRmFGgDGXxYgKXxmmOFqClOou+mwUB7sCNTF8v+Lv/jYL+8f8lusJgZNs/1pMTxH aKXRKuUXSTIQES7Wc24fSP1ajuSF+1hcvMRRTPW2pRXIt/VcKSoJnhIGBk7Yl7Sk5r1nbVc82na 1RKoIM6aBg07C8/9PjnwtasZ4mao8eb2nXriLf1ACebVJ6pTOpErWc3bzXlk73+SXszrmZ7M7Ch oP3KeKZeyRQJai+jARB5z16X6jNx1eCK/IRA7OuxivQg== X-Received: by 2002:a05:693c:2d85:b0:304:dc05:607e with SMTP id 5a478bee46e88-3077af08540mr9121368eec.14.1780926396855; Mon, 08 Jun 2026 06:46:36 -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 v2 7/7] vfio/igd: Clear saved BDSM in legacy VBIOS ROM at load time Date: Mon, 8 Jun 2026 21:45:58 +0800 Message-ID: <20260608134559.23971-8-tomitamoeko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260608134559.23971-1-tomitamoeko@gmail.com> References: <20260608134559.23971-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::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: 1780926447819158500 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 --- 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..4b49038753 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 < 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 (uint8_t)-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 2049159015..7dc334ccb3 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