From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707273; cv=none; d=zohomail.com; s=zohoarc; b=mdGVRu8SQO+t2WEkzme4x2OlAcBjOhRIqSAclfVsyFQ8klqnKNe5PWTJq4JWFOhnk1kgMy1lCuKiGj5jpMmEDAoAprJ3AIlODs2JehUltkfH4A0eJ/5jHfd/zUp9J/ePUrB43ahV2KDd7UQ30Z2AosTF7mN8He0biDuNmlUr6Rw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707273; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BDLn8He9nK6XbJ/8V88KJti2+rZ0Z1f8Yos0AnCw0VA=; b=lx2frxoSBS13NSwRdfxTNoyuwwPn5NcE+0UwBBqv1VeBVp/nMeEgSf1g0rmU51gtIz/NydoSjlwj9Hkql6XQ6JtoRIK72rzHH7TgVrStC3GTUH6qWs+A/4h8cgL2+1VBZrCE4aX5XRKHaSCaSii0gD0jTMIEddD1GwxemE1Gey8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707273429445.93213207074416; Tue, 6 Jan 2026 05:47:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196086.1513955 (Exim 4.92) (envelope-from ) id 1vd7PQ-0004Qu-52; Tue, 06 Jan 2026 13:47:40 +0000 Received: by outflank-mailman (output) from mailman id 1196086.1513955; Tue, 06 Jan 2026 13:47:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7PQ-0004Qn-22; Tue, 06 Jan 2026 13:47:40 +0000 Received: by outflank-mailman (input) for mailman id 1196086; Tue, 06 Jan 2026 13:47:39 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7PP-0004MT-8n for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:47:39 +0000 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [2a00:1450:4864:20::441]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 424d368c-eb06-11f0-b15e-2bf370ae4941; Tue, 06 Jan 2026 14:47:36 +0100 (CET) Received: by mail-wr1-x441.google.com with SMTP id ffacd0b85a97d-431048c4068so598447f8f.1 for ; Tue, 06 Jan 2026 05:47:36 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd5ee5eesm4452123f8f.34.2026.01.06.05.47.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:47:35 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 424d368c-eb06-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707256; x=1768312056; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=BDLn8He9nK6XbJ/8V88KJti2+rZ0Z1f8Yos0AnCw0VA=; b=IMu9it5QrAlG/ynaM5vWLVt0djk+r8fJuMGnjOyAWOZjhntETUZ2i1PYdrZCGpcpSj tSes/WK92yUsCT2IHQeVnSgsnBpr2hFIk8kgBVPIHCkq7Cqmia0nYzqB70wGgKdi7u2k CPQDNmOkboOFgOzY1uL7kBXjlUSfmoea/XsEi/U8sCfeufXWkGet9klA22NGO8ueB2Eh lit9gCsbVye8SRIorfeyCwL/RObgLpz5AUAR+XJmPReKSGMMxz1DGDd/cyG2lUU8P6Gz 1eveofkur4wEjwIBbex4tlb2Y3+rnnWf20gdUYt2QtXO5DYJKu2YM2bH2fZNltd1VUTS TYvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707256; x=1768312056; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BDLn8He9nK6XbJ/8V88KJti2+rZ0Z1f8Yos0AnCw0VA=; b=Az1ZXQAaDMTIxgV3TksvaUodBE4vCtDh3aLX5J7+MIiDmijJ/DZQRgtUTN6ihwATjA j+thELNJShwDF6F12oC0LLMqlnjxRyNe5qNIp7SCpFZgJ17ZPu8PVs4EYasbV1PyLOdK mOqK2QlYDqXU9NyvB8ObrWxIW3aDDOGU9FdfDyw37MqmJNFVumfePIlHBew69kkgrjV1 jYYqrD6oSrC6i+s4siCHytQa6EnwLgFLZU9/L/fp8eUFGUEzkvmVD9PeH6956zWtzu9a ZSaBwHiE7yapDEOMPGD1i722cCt4CiHm62VlnZBeMSx+xOIRK2+QQTkABPbtiUWyNLsK Dt6g== X-Gm-Message-State: AOJu0YyI5iJHymEtX8XV3Im1Mn2qUv2ouonDw1I2PNPtxRFYHQAbWKK0 uqNO0MBPk7CiQ4xQnwPnEUdkwy7u5TfQe1G4q4TaLuH3wlFu9+9J7880JloEuRZUksbik80vwOI tDHgT2g== X-Gm-Gg: AY/fxX7zZoE5VJ1m+t8rhT2Frq2wuRkxMFl3dIAorMSe+FBJDY3o4tTUYED3fbg1LLs +NMw05oFSb0RkpkhwhiqKcIpbqCj+aEsDIjAOoJZimeC1Tkh4ZH4YEYq2PDF/8ZSEP5VHmNOYZG 7ByqonUUVenCqWlxD6c9OKPsDcgvom6Ms3tgOJ6cCz4YihiIEi/ZdDMoj9zOSX9UmyKD9t+3s0/ vFajaGqgzNtTrnhEj6nHN60gnaWt9tSVyXPnRPrMObfqSWGoj6Q6tQsdMQVdqi9k6EqD3jorgSr uV3ViNt1OJkKRnq1J8KHxP0jigrNuvCWen6xlqj8ROpyTrvEUdH8vNMcxxuh1onj2cA/nztN5vm Et8WR0CsI+BQZ6dtm9+7BbnOR+GNUVnPDFKtyk/AMqZuD8izO/2EKcnsoCjoa1rxL9nArxnjJwy /23XUNwIPW5Eq9Dz2GRRmD/Ewr7wSMScQ2PyZJvspheIbh1NnFyoo+IEmh1XUZN3OdSzm44Ecuf NZClKcPP+oWAg== X-Google-Smtp-Source: AGHT+IGR1qjdN0+d6S1aRQi9RMdKImof2Me0oRB/iSacgv1pCD0vvzys+mivEscXWKdH61/P37RRUQ== X-Received: by 2002:a5d:4751:0:b0:430:2773:84d6 with SMTP id ffacd0b85a97d-432bcfc4e77mr2539572f8f.24.1767707255790; Tue, 06 Jan 2026 05:47:35 -0800 (PST) Message-ID: <52eb1293-b5d4-4f7a-b53b-285e4dd274a5@suse.com> Date: Tue, 6 Jan 2026 14:47:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 1/6] PCI: determine whether a device has extended config space From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707274908158500 Content-Type: text/plain; charset="utf-8" Legacy PCI devices don't have any extended config space. Reading any part thereof may return all ones or other arbitrary data, e.g. in some cases base config space contents repeatedly. Logic follows Linux 6.19-rc's pci_cfg_space_size(), albeit leveraging our determination of device type; in particular some comments are taken verbatim from there. Signed-off-by: Jan Beulich --- Note that alloc_pdev()'s switch doesn't handle DEV_TYPE_PCI2PCIe_BRIDGE at all. Such bridges will therefore not have ->ext_cfg set (which is likely wrong). Shouldn't we handle them like DEV_TYPE_LEGACY_PCI_BRIDGE (or DEV_TYPE_PCI?) anyway (just like VT-d's set_msi_source_id() does)? Linux also has CONFIG_PCI_QUIRKS, allowing to compile out the slightly risky code (as reads may in principle have side effects). Should we gain such, too? --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -310,6 +310,41 @@ static void apply_quirks(struct pci_dev * from trying to size the BARs or add handlers to trap access= es. */ pdev->ignore_bars =3D true; + + if ( pdev->ext_cfg ) + { + unsigned int pos; + + /* + * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 s= ays + * that when forwarding a type1 configuration request the bridge m= ust + * check that the extended register address field is zero. The br= idge + * is not permitted to forward the transactions and must handle it= as + * an Unsupported Request. Some bridges do not follow this rule a= nd + * simply drop the extended register bits, resulting in the standa= rd + * config space being aliased, every 256 bytes across the entire + * configuration space. Test for this condition by comparing the = first + * dword of each potential alias to the vendor/device ID. + * Known offenders: + * ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01= & 03) + * AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40) + */ + for ( pos =3D PCI_CFG_SPACE_SIZE; + pos < PCI_CFG_SPACE_EXP_SIZE; pos +=3D PCI_CFG_SPACE_SIZE ) + { + if ( pci_conf_read16(pdev->sbdf, pos) !=3D vendor || + pci_conf_read16(pdev->sbdf, pos + 2) !=3D device ) + break; + } + + if ( pos >=3D PCI_CFG_SPACE_EXP_SIZE ) + { + printk(XENLOG_WARNING + "%pp: extended config space aliases base one\n", + &pdev->sbdf); + pdev->ext_cfg =3D false; + } + } } =20 static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn) @@ -351,6 +386,8 @@ static struct pci_dev *alloc_pdev(struct unsigned long flags; =20 case DEV_TYPE_PCIe2PCI_BRIDGE: + pdev->ext_cfg =3D true; + fallthrough; case DEV_TYPE_LEGACY_PCI_BRIDGE: sec_bus =3D pci_conf_read8(pdev->sbdf, PCI_SECONDARY_BUS); sub_bus =3D pci_conf_read8(pdev->sbdf, PCI_SUBORDINATE_BUS); @@ -363,9 +400,19 @@ static struct pci_dev *alloc_pdev(struct pseg->bus2bridge[sec_bus].devfn =3D devfn; } spin_unlock_irqrestore(&pseg->bus2bridge_lock, flags); + + fallthrough; + case DEV_TYPE_PCI: + pos =3D pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_PCIX); + if ( pos && + (pci_conf_read32(pdev->sbdf, pos + PCI_X_STATUS) & + (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)) ) + pdev->ext_cfg =3D true; break; =20 case DEV_TYPE_PCIe_ENDPOINT: + pdev->ext_cfg =3D true; + pos =3D pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_EXP); BUG_ON(!pos); cap =3D pci_conf_read16(pdev->sbdf, pos + PCI_EXP_DEVCAP); @@ -409,9 +456,9 @@ static struct pci_dev *alloc_pdev(struct } break; =20 - case DEV_TYPE_PCI: case DEV_TYPE_PCIe_BRIDGE: case DEV_TYPE_PCI_HOST_BRIDGE: + pdev->ext_cfg =3D true; break; =20 default: @@ -420,6 +467,19 @@ static struct pci_dev *alloc_pdev(struct break; } =20 + if ( pdev->ext_cfg && + /* + * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express + * devices have 4096 bytes. Even if the device is capable, that + * doesn't mean we can access it. Maybe we don't have a way to + * generate extended config space accesses, or the device is behi= nd a + * reverse Express bridge. So we try reading the dword at + * PCI_CFG_SPACE_SIZE which must either be 0 or a valid extended + * capability header. + */ + pci_conf_read32(pdev->sbdf, PCI_CFG_SPACE_SIZE) =3D=3D 0xffffffff= U ) + pdev->ext_cfg =3D false; + apply_quirks(pdev); check_pdev(pdev); =20 @@ -717,6 +777,11 @@ int pci_add_device(u16 seg, u8 bus, u8 d =20 list_add(&pdev->vf_list, &pf_pdev->vf_list); } + + if ( !pdev->ext_cfg ) + printk(XENLOG_WARNING + "%pp: VF without extended config space?\n", + &pdev->sbdf); } } =20 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -126,6 +126,9 @@ struct pci_dev { =20 nodeid_t node; /* NUMA node */ =20 + /* Whether the device has extended config space. */ + bool ext_cfg; + /* Device to be quarantined, don't automatically re-assign to dom0 */ bool quarantine; From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707307; cv=none; d=zohomail.com; s=zohoarc; b=jff3et3tpYTsCytcbIhbzhbi/168GW89b8VFj4zQN9aUA/V/FLJm30+L8gGNJ+7h5y37v4mNGdF3YBEihlntnPtmoNLhvXySLIiFJ/b26EqJxw+JA3QpAU9iYAirnC5LAbLoTguVgO6FYFBB3rZs+cg5vwv3uv71Nv+GSomVmYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707307; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JRm8agxN0LTD6ZCWwor27j6bp3Ta0t1F7caudO6/9MY=; b=ZW5eoHSLNWyTF5gJTK7hACDtewnQSL0uaPx+UZ6RZ/gjhHsBvaMePqquwVSYiVJbs499iRYrpZlJH1rIBPPOAY302+AQMJfQAymbuU2FyIPkHmc/PWs6Opqr3PdavfJmQfXqK/kLJijkbqLvVnsPEmLV5YxH1VhqS71Hngko/2k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707307720262.1927297722747; Tue, 6 Jan 2026 05:48:27 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196094.1513964 (Exim 4.92) (envelope-from ) id 1vd7Pu-0004sD-FQ; Tue, 06 Jan 2026 13:48:10 +0000 Received: by outflank-mailman (output) from mailman id 1196094.1513964; Tue, 06 Jan 2026 13:48:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7Pu-0004s6-Cc; Tue, 06 Jan 2026 13:48:10 +0000 Received: by outflank-mailman (input) for mailman id 1196094; Tue, 06 Jan 2026 13:48:09 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7Pt-0004MT-3F for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:48:09 +0000 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [2a00:1450:4864:20::441]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 557fc6dc-eb06-11f0-b15e-2bf370ae4941; Tue, 06 Jan 2026 14:48:08 +0100 (CET) Received: by mail-wr1-x441.google.com with SMTP id ffacd0b85a97d-42fb0fc5aa9so457392f8f.1 for ; Tue, 06 Jan 2026 05:48:08 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd5ee5eesm4454297f8f.34.2026.01.06.05.48.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:48:07 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 557fc6dc-eb06-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707288; x=1768312088; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=JRm8agxN0LTD6ZCWwor27j6bp3Ta0t1F7caudO6/9MY=; b=dVmXSx4NqTJlAIOT800l6hvvirpS+dhJTVgLx5YEWw8ag8QmViP7g/XCXa31vH5iwI Q+xMOgx7G/HEMnjd14ENoNFxYfo+XIQBTZvCvS4IrnFOZHXnK5z9eU7zs4znTZKtSqCL TGiHkBXwmeZ5iSNpjW07TLeVEM9i4tZHeXauLbOd0YeK7ZGNUjiStrqKFtsul4zTyxIV pN18CUM1ZoFUuCaNeFzPWMM6/BJ+kb3XV9eJyPi/fcY5sjsnwnCeZREouvBZZJfd/RxL /a9KHJ6qbif06uV9MXGsLd3yTNDzHD0mPWgrs56flr7fao4byvDYw7aKsGXHnfI0G74p og6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707288; x=1768312088; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JRm8agxN0LTD6ZCWwor27j6bp3Ta0t1F7caudO6/9MY=; b=aYHRt62MsqgqMxr2kfRpzw8c/BfkZksTx3Ljbr4gSWL+zx6PpT6d1s8ZFb1SavJnP/ HJ6Y+vHVLjyVXOx/cQz/wIXvZPfXMhR5uhFEk6gHOZixscwQmUG5RrSkxDVG116Qxc/S dUo1a0XnYO9E0VejYC/RsFOikrf+JipLePR+MAH7JJUbGShNNKtSEQM6c3FNmM2khWQJ SQeRWo0XhUEF1yyfFMffPRgbfWtBVizHK2ARebGgZum/NXDAnx3FHOpMxHRICTqeHiL4 VfcmrudIx1UeU17x2DVAVzyPluoVNARLbGK7A5N4fn7sP25kZ8aSvscxesKnGE0WdUV/ l+nA== X-Gm-Message-State: AOJu0YzzjdBZd18Za0XJzNOKbedmUoWP1AjZFnoTlN2L1mvl30hLDP2O 0SzrrFl5AxY2+FDFyGK2aV/Sc/d7n3Jiogear1RdFWVRjkus/3QqUdDFwEcYERfQ1t6ohtl6UEU o7ZYcHA== X-Gm-Gg: AY/fxX4LDd7KE2wz/XnTOoIo/k1CpxORr74WH+JKUm2DL67K+V8qnzZSXRunEw9Xt6E x1RTq6zYST94kDwQmWREkkWjEIXbtaDN8ChK2DXioJy4q+rKCOaZmjEJT5Y8g+SC36J3LzPKYLS 0M5zfOj1fecHoVWw8zs3TnutQoOdbCSr4wKIITecxubyD9vd0hWNqncz/T0OrBCyCquy3a3yCzM 93Xb2NvUcWEUGuuimwD7f7gMtaQh2RNE3WAg9Z4rxml5tgkBTRbhmfDPl/FfzIcPeLuK3Nebqvg ml/nlVRYymz+InOry2PjYHHzfNCQnT5y2ImRNvT0yzLX57jDudXLuJvKtk4JIXPShRSnbpeL+rL e9vPVlNdl6re46ZjEzvlauMtjzwTt/OmYtHnyO1j25AKKzXs4RrCZ82OZ9HlQkqfiJ4ZWhmGZgI O7kYfmybxRqRUzQfvbAmRRsSEgqkP7iOtePjLYh3bh4Je5cg2Xk800ALsetuBWX3kCFU3hP6hr2 MTfvq3g6LEXBw== X-Google-Smtp-Source: AGHT+IF5NIuhIpx1takip1N4KLIGJjCkAL8DY16vJhPkQkrMtPtzdKpQzQLZOUhptMqlSyR+Bod4jA== X-Received: by 2002:a05:6000:2209:b0:430:fd84:317a with SMTP id ffacd0b85a97d-432bca50bcfmr4258704f8f.38.1767707288023; Tue, 06 Jan 2026 05:48:08 -0800 (PST) Message-ID: <2ee53e39-997e-4bca-be57-ac51f75b471d@suse.com> Date: Tue, 6 Jan 2026 14:48:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 2/6] PCI: pass pdev to pci_ats_{device,enabled}() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707308980158500 Content-Type: text/plain; charset="utf-8" This not only brings both in sync with {en,dis}able_ats_device() but also prepares for doing the same to pci_find_{,next_}ext_capability(). Signed-off-by: Jan Beulich Reviewed-by: Teddy Astie --- a/xen/drivers/passthrough/amd/iommu_cmd.c +++ b/xen/drivers/passthrough/amd/iommu_cmd.c @@ -285,7 +285,7 @@ void amd_iommu_flush_iotlb(u8 devfn, con if ( !ats_enabled ) return; =20 - if ( !pci_ats_enabled(pdev->seg, pdev->bus, pdev->devfn) ) + if ( !pci_ats_enabled(pdev) ) return; =20 iommu =3D find_iommu_for_device(pdev->sbdf); --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c @@ -121,7 +121,7 @@ static bool use_ats( { return !ivrs_dev->block_ats && iommu_has_cap(iommu, PCI_CAP_IOTLB_SHIFT) && - pci_ats_device(iommu->sbdf.seg, pdev->bus, pdev->devfn); + pci_ats_device(pdev); } =20 static int __must_check amd_iommu_setup_domain_device( @@ -274,8 +274,7 @@ static int __must_check amd_iommu_setup_ =20 ASSERT(pcidevs_locked()); =20 - if ( use_ats(pdev, iommu, ivrs_dev) && - !pci_ats_enabled(iommu->sbdf.seg, bus, pdev->devfn) ) + if ( use_ats(pdev, iommu, ivrs_dev) && !pci_ats_enabled(pdev) ) { if ( devfn =3D=3D pdev->devfn ) enable_ats_device(pdev, &iommu->ats_devices); @@ -418,8 +417,7 @@ static void amd_iommu_disable_domain_dev =20 ASSERT(pcidevs_locked()); =20 - if ( pci_ats_device(iommu->sbdf.seg, bus, pdev->devfn) && - pci_ats_enabled(iommu->sbdf.seg, bus, pdev->devfn) ) + if ( pci_ats_device(pdev) && pci_ats_enabled(pdev) ) disable_ats_device(pdev); =20 BUG_ON ( iommu->dev_table.buffer =3D=3D NULL ); --- a/xen/drivers/passthrough/ats.h +++ b/xen/drivers/passthrough/ats.h @@ -27,27 +27,25 @@ extern bool ats_enabled; int enable_ats_device(struct pci_dev *pdev, struct list_head *ats_list); void disable_ats_device(struct pci_dev *pdev); =20 -static inline int pci_ats_enabled(int seg, int bus, int devfn) +static inline int pci_ats_enabled(const struct pci_dev *pdev) { u32 value; int pos; =20 - pos =3D pci_find_ext_capability(PCI_SBDF(seg, bus, devfn), - PCI_EXT_CAP_ID_ATS); + pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); BUG_ON(!pos); =20 - value =3D pci_conf_read16(PCI_SBDF(seg, bus, devfn), pos + ATS_REG_CTL= ); + value =3D pci_conf_read16(pdev->sbdf, pos + ATS_REG_CTL); =20 return value & ATS_ENABLE; } =20 -static inline int pci_ats_device(int seg, int bus, int devfn) +static inline int pci_ats_device(const struct pci_dev *pdev) { if ( !ats_enabled ) return 0; =20 - return pci_find_ext_capability(PCI_SBDF(seg, bus, devfn), - PCI_EXT_CAP_ID_ATS); + return pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); } =20 #endif /* DRIVERS__PASSTHROUGH__ATS_H */ From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707333; cv=none; d=zohomail.com; s=zohoarc; b=NXQddARpYBr6ag+FqYxX5fY/DwuH9eyJB2sBkK7V+L02p9lAHUw4BoVHTR+Aixm9d8pQ9fwoSk0lpgEqITTyZkYBlvUZNOxKMgGDOrrL/4Y3V6q0I/9buP1eFMhi3IxYCuuTmmBgnZaRGZqr6mDjHGyL5fv86WY6UT3V0mUbOgY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ltpDchFjsfTzbthj3P9NFlV6ik3WXNe5NU0TTv/FNnM=; b=gft07KiQXTCdcVGajjpbbdaTcSMOygoIzH9zReQUHmIqanO/ysR8kolX4pMBLivwfH6iwsvvahLlMNzkNbPOeus7nMwSevE1oXIsX5hJyhiIvU5CSvuOGzH5ut0FATc7K/WE2xdMjUvURY2+mxsHIrpiT8N6AKMytfs5szNtAAQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707333723662.4474895669924; Tue, 6 Jan 2026 05:48:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196105.1513975 (Exim 4.92) (envelope-from ) id 1vd7QP-0005OT-Nn; Tue, 06 Jan 2026 13:48:41 +0000 Received: by outflank-mailman (output) from mailman id 1196105.1513975; Tue, 06 Jan 2026 13:48:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7QP-0005OK-Ki; Tue, 06 Jan 2026 13:48:41 +0000 Received: by outflank-mailman (input) for mailman id 1196105; Tue, 06 Jan 2026 13:48:40 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7QO-0004MT-0o for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:48:40 +0000 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [2a00:1450:4864:20::444]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 67bb659a-eb06-11f0-b15e-2bf370ae4941; Tue, 06 Jan 2026 14:48:39 +0100 (CET) Received: by mail-wr1-x444.google.com with SMTP id ffacd0b85a97d-430f5ecaa08so433731f8f.3 for ; Tue, 06 Jan 2026 05:48:39 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd0dabcbsm4276299f8f.7.2026.01.06.05.48.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:48:38 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 67bb659a-eb06-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707319; x=1768312119; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=ltpDchFjsfTzbthj3P9NFlV6ik3WXNe5NU0TTv/FNnM=; b=JJwofQooSi5Wf97O/1lDBaDM5LpLRaSpkF/jNV0lnxi+91wKRvHgTbziFWfnVoDROw mawGqpnVOZQc+SWjy8kj5wBXvpHBmDcicsvDCgUtmIkc7pPMx8Z8tiz7u9EI0kR492Jd arcbSCtzpzxH42/9Jm8HlIpCJCDHpQPkQQHtisJ4h3Ze7IjaJw/kFft5f4812m9YzazS VZYWC+fZrWHW8wlqUYdb9JZzXUZ53rPAvpnlnASKS4KBm/z7Td7aftpgVZm0Lrf4JPWF 6VKtaRwsBu8GWMDk2nnTjhv1MK7VO24OdSVr6gYSB8/ohL9mrM5sNsWOkYJd8k1HOXy6 3qAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707319; x=1768312119; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ltpDchFjsfTzbthj3P9NFlV6ik3WXNe5NU0TTv/FNnM=; b=R99vdiNRtlQBsI2NdZ++70rTEVYkCkYaVWc06XVx77yKztw8Lrf7kxxg3rbwlGbc7g uwhrlCdmrDiqj1mk6e748UaKWevWqMpbhT5ldWQ+Xlxxlcth8Bl9oDPMXzTnB3yLxfZm csSMt2BZNK0uqH8DuQ12l3BNLuuZrtppvyFLRFFIBhqRv4b8wFRuxk9Use3symkqaso6 3/uchiSUyNOqO1E/rJgRB9I4m7jnuuUMnAc37QxSNAgLnY85/G/lz4dOwTFQs05zdCaa zwUSIVK6E0Slmi4pZkpM8LPHc2EjRvE8JiWIcDfs0WGi9W3GKCoEmvSZSuCKI2fTkEj2 2hNw== X-Gm-Message-State: AOJu0YziQhj4uRcOoB6LYtueIu4d3yaz+4qsVwZl0VItEmRH0fKJoXXo xjlldGGPzIlRtQs2e79WyHn/62WRnyI6vu4yy5YHwMaZ5NK3Mwx6tKojLGntQFuiwOwaGWQpwqz qY2je7g== X-Gm-Gg: AY/fxX61ioS7GITmI70hIJo088sPYC2hFXD/eI7bqx34hvN4cofcTM+/gmkBL/m7Kny KngaAz0uXLWc69uguD/fnfeFaufn8UgSvv3N/Vt3lTLzA2Bwcc+DpKJW4V2hkSkl+UJWAd9iF2t xK140EPSne2zeLtqlhzwHiEIC1a4zet6C+kj0I5RHWoA5uq2kigaJP8SiJGL5XnRO7O8J1X3l2q NcU12Yjur4VO7b41zVJsOW4U8zt9UgCRVFaqd3kDHJjHCcd3yJx8cA5flX6i/9nxy3PLD9hP1yP IRTHYHs+fFxQJxavjOCuyvylyI4T6JIcNSJOtbm5xl6ty+djS6fCxF1LkZrHyhRY6MfBi5GIoxP cW1G/BKHhpe7pyOvSiOrhtayEhQMHX0/4MrMiIBzwQfnq4vDFIu3aG02GJjMX6Vbwa8bY8EA8nh q5JeYaOP9Ib4x7c2faxS/3NdKN9ODhNdkJOeMOdiTJWkCKUKmbDBob5eZdDSa9DJMEm4WBKt+TL YHmuhvpugZTiQ== X-Google-Smtp-Source: AGHT+IEbTX6zUm9ZKzRIj6MT6mo69QEiGCv+eHFQBB8LGf+XX7nLFSeR09wIaS9BTPIlmI6WqzHeNg== X-Received: by 2002:a05:6000:40e1:b0:432:5bf9:cf15 with SMTP id ffacd0b85a97d-432bca2cc68mr4245371f8f.5.1767707318683; Tue, 06 Jan 2026 05:48:38 -0800 (PST) Message-ID: Date: Tue, 6 Jan 2026 14:48:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 3/6] x86/MSI: pass pdev to read_pci_mem_bar() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707335137158500 Content-Type: text/plain; charset="utf-8" This not only reduces the number of parameters and local variables, but also prepares for doing the same to pci_find_{,next_}ext_capability(). Signed-off-by: Jan Beulich Reviewed-by: Teddy Astie --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -662,11 +662,11 @@ static int msi_capability_init(struct pc return 0; } =20 -static uint64_t read_pci_mem_bar(pci_sbdf_t sbdf, uint8_t bir, int vf, - const struct pf_info *pf_info) +static uint64_t read_pci_mem_bar(const struct pci_dev *pdev, uint8_t bir, + int vf) { - uint16_t seg =3D sbdf.seg; - uint8_t bus =3D sbdf.bus, slot =3D sbdf.dev, func =3D sbdf.fn; + uint16_t seg =3D pdev->sbdf.seg; + uint8_t bus =3D pdev->sbdf.bus, slot =3D pdev->sbdf.dev, func =3D pdev= ->sbdf.fn; u8 limit; u32 addr, base =3D PCI_BASE_ADDRESS_0; u64 disp =3D 0; @@ -676,20 +676,18 @@ static uint64_t read_pci_mem_bar(pci_sbd unsigned int pos; uint16_t ctrl, num_vf, offset, stride; =20 - ASSERT(pf_info); - - pos =3D pci_find_ext_capability(sbdf, PCI_EXT_CAP_ID_SRIOV); - ctrl =3D pci_conf_read16(sbdf, pos + PCI_SRIOV_CTRL); - num_vf =3D pci_conf_read16(sbdf, pos + PCI_SRIOV_NUM_VF); - offset =3D pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_OFFSET); - stride =3D pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_STRIDE); + pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_SRIOV); + ctrl =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL); + num_vf =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_NUM_VF); + offset =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_OFFSET); + stride =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_STRIDE); =20 if ( !pos || !(ctrl & PCI_SRIOV_CTRL_VFE) || !(ctrl & PCI_SRIOV_CTRL_MSE) || !num_vf || !offset || (num_vf > 1 && !stride) || bir >=3D PCI_SRIOV_NUM_BARS || - !pf_info->vf_rlen[bir] ) + !pdev->physfn.vf_rlen[bir] ) return 0; base =3D pos + PCI_SRIOV_BAR; vf -=3D PCI_BDF(bus, slot, func) + offset; @@ -703,8 +701,8 @@ static uint64_t read_pci_mem_bar(pci_sbd } if ( vf >=3D num_vf ) return 0; - BUILD_BUG_ON(ARRAY_SIZE(pf_info->vf_rlen) !=3D PCI_SRIOV_NUM_BARS); - disp =3D vf * pf_info->vf_rlen[bir]; + BUILD_BUG_ON(ARRAY_SIZE(pdev->physfn.vf_rlen) !=3D PCI_SRIOV_NUM_B= ARS); + disp =3D vf * pdev->physfn.vf_rlen[bir]; limit =3D PCI_SRIOV_NUM_BARS; } else switch ( pci_conf_read8(PCI_SBDF(seg, bus, slot, func), @@ -759,10 +757,6 @@ static int msix_capability_init(struct p u16 control; u64 table_paddr; u32 table_offset; - u16 seg =3D dev->seg; - u8 bus =3D dev->bus; - u8 slot =3D PCI_SLOT(dev->devfn); - u8 func =3D PCI_FUNC(dev->devfn); bool maskall =3D msix->host_maskall, zap_on_error =3D false; unsigned int pos =3D dev->msix_pos; =20 @@ -809,32 +803,20 @@ static int msix_capability_init(struct p (is_hardware_domain(current->domain) && (dev->domain =3D=3D current->domain || dev->domain =3D=3D dom_i= o))) ) { - unsigned int bir =3D table_offset & PCI_MSIX_BIRMASK, pbus, pslot,= pfunc; - int vf; + unsigned int bir =3D table_offset & PCI_MSIX_BIRMASK; + int vf =3D -1; + const struct pci_dev *pf_dev =3D dev; paddr_t pba_paddr; unsigned int pba_offset; - const struct pf_info *pf_info; =20 - if ( !dev->info.is_virtfn ) - { - pbus =3D bus; - pslot =3D slot; - pfunc =3D func; - vf =3D -1; - pf_info =3D NULL; - } - else + if ( dev->info.is_virtfn ) { - pbus =3D dev->info.physfn.bus; - pslot =3D PCI_SLOT(dev->info.physfn.devfn); - pfunc =3D PCI_FUNC(dev->info.physfn.devfn); vf =3D dev->sbdf.bdf; ASSERT(dev->pf_pdev); - pf_info =3D &dev->pf_pdev->physfn; + pf_dev =3D dev->pf_pdev; } =20 - table_paddr =3D read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc)= , bir, - vf, pf_info); + table_paddr =3D read_pci_mem_bar(pf_dev, bir, vf); WARN_ON(msi && msi->table_base !=3D table_paddr); if ( !table_paddr ) { @@ -857,8 +839,7 @@ static int msix_capability_init(struct p =20 pba_offset =3D pci_conf_read32(dev->sbdf, msix_pba_offset_reg(pos)= ); bir =3D (u8)(pba_offset & PCI_MSIX_BIRMASK); - pba_paddr =3D read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc), = bir, vf, - pf_info); + pba_paddr =3D read_pci_mem_bar(pf_dev, bir, vf); WARN_ON(!pba_paddr); pba_paddr +=3D pba_offset & ~PCI_MSIX_BIRMASK; From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707380; cv=none; d=zohomail.com; s=zohoarc; b=d0GNcQvRMhi7f5iSkv+NcZDQ3sQMbOn9/Y9tAk+lzwBgQcvvECEMuA0bqRNxKw7A9Rq4lEkT9EC+MZV+o19k1+CpT/EpP+5mGbAG/TXdtScdXv35jCM3xuOV4KVR2+JHQ9caSFWkzFrwVCIL8b2pICOFwRl6iitbl3EIte7t1y0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707380; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VALIeZIxI2UW6d8eRGujCTMwXTGh4om+pwgD9mOB0J8=; b=kgiROoFcDMpmqNZDbcNcpz2UWtN8CmJ2dQ018v3pSapJXrJ/VaeQfT0Mg0N7DoeNkwWPq02JaAvxJZdddSEUTrpLdZ2M8MZDl3sxvX3XKRCgfwid9F+xSEnUIwmW+9qN5yYqi0pSNt+zdlJzdMYf+TRNfj6qOm7m1wk/N8XJB/g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707380815877.5608884105435; Tue, 6 Jan 2026 05:49:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196111.1513984 (Exim 4.92) (envelope-from ) id 1vd7R5-0005vU-Vy; Tue, 06 Jan 2026 13:49:23 +0000 Received: by outflank-mailman (output) from mailman id 1196111.1513984; Tue, 06 Jan 2026 13:49:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7R5-0005vN-TC; Tue, 06 Jan 2026 13:49:23 +0000 Received: by outflank-mailman (input) for mailman id 1196111; Tue, 06 Jan 2026 13:49:22 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7R4-0004Q3-Fv for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:49:22 +0000 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [2a00:1450:4864:20::442]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7e9ebcc9-eb06-11f0-9ccf-f158ae23cfc8; Tue, 06 Jan 2026 14:49:17 +0100 (CET) Received: by mail-wr1-x442.google.com with SMTP id ffacd0b85a97d-4308d81fdf6so477272f8f.2 for ; Tue, 06 Jan 2026 05:49:17 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd0e199bsm4624650f8f.16.2026.01.06.05.49.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:49:16 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7e9ebcc9-eb06-11f0-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707357; x=1768312157; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=VALIeZIxI2UW6d8eRGujCTMwXTGh4om+pwgD9mOB0J8=; b=frlJ7Gu0egdILkXe7RuWMHpv3tKqQmRWdcxQC83nbUmMmpZIpa2m8xL5qDerAYmUcV gIjeMn4VrDEzP2qqNK45FkIz2nV5y0fjdMuJ+GT+BM+677C03Q0DElAtgAa4k+tQQwKU 5PxjT7+qnJdqLhJJoeCw8dedQzN8mHzq972scgHulvjtcYUfxXChsLuwGqVU54CXFE8f G8W2rZwTr8jOuy7qNRpAO59v9WC9W0AAqeGyKmIbBjHD4axF7Stx/kqQpBr9pg5aB3fL qXTpdIQHJuuSSYpnzcpz0CYqp1OD1C28Mqh2PiF2qIt5jHpngD/7E4abPi1LjICXnfXj 18jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707357; x=1768312157; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VALIeZIxI2UW6d8eRGujCTMwXTGh4om+pwgD9mOB0J8=; b=v5ux7GZohfbOikVvJPLcxralaOo6SkldnC+OQ1Iv1mbH1lUTVI1NTTjjvMMfrVYAlK CjF5vsnN80y9Cr44yBTew30lhauxq3UZEbls0mWOPPjcPmJiY+dY7P9IhJap11FuYNRr ewGSHozeYeUKT27OWihfIAbAvnZAb596jv25D94OZNC6iAiNW8eIJAIcZGS1E7hrb0c3 s6L2naJO76DMt64DbKrnT5Trb//ApyYQVNXY6rAt0vGqkcQNnpc2VmEfUpEb+ld6exnv wgNN5Jj4HnS5tD/xnYTbZSf5GJm91jvCnPCYKgtNiSYkzU3s/GfymCW+URmLFnXi6Nj0 fgjw== X-Gm-Message-State: AOJu0Yx6ctWXOfD2h5Tv4VFh0xYnFphQ5VXQWymaKQQ3rdZOxMHGL4DD 7TJItIN9exKWcZGMlxtjAEs1H8/vsygkaP2+DEPTt5IEmrs/+11ihQC7yBlX1DzJFQ8Q7CLbN75 HUoso+Q== X-Gm-Gg: AY/fxX4WwE5SZ4DiCV7T8qnG9/WM/sQwP7s2M1s6u+Sg7nKlvWcsOX89/3SkT8wLeVA y19U+Ob4MPnCZRk1uRDoD2bNHzXaBqmBpnIvDGkV8u8Dtz7gu/IptxUr4AwBIU5rZFKyq1hLE0F gEoEtKLEjC6fYQ2ylB0onWBfTMChyyp43P2jYg5OOJ32O6mgCubZrKsDETDit99DxtLyYYmbImk txX2edSlwYS8sBfg62m2pj+K8+hJJtYXNg4HqjKyLUkzy7x8ZxEJAYvK0bFaYwk4uT6NCskxoPD QYM/rFhyD59rfr3nZuIyE93+kZb+HeoT5eFqxfIgeGpPKNvqXn99HhaMogUgLNl10z6aW1lkmwz LM00lF6D6NEQ/PShBGDxAr7j0EqoXJ8oSXpqz/03cgIlPplTHNVtXu95wF+klgbFXZ/Ph1KRDik qylhz9a0IzajZWjSR4Sd4Ja0wetimS9EfpI89MWIIlCOWPuCwMiQGed+65Ecwr7J8iPWRH/k7zD 7pIbC2JhjuSuQ== X-Google-Smtp-Source: AGHT+IGQOlE1EGqvWFA9ndk3JdUEMv0/a8kKS8pTHu3PVfhb0xLjW9bG6MmEKyZoadHrRqGom2yCgA== X-Received: by 2002:a05:6000:40dc:b0:430:f325:435e with SMTP id ffacd0b85a97d-432bca2b787mr3565273f8f.16.1767707357020; Tue, 06 Jan 2026 05:49:17 -0800 (PST) Message-ID: <594cc7a9-710c-4863-b46f-f5e6bc0247de@suse.com> Date: Tue, 6 Jan 2026 14:49:15 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 4/6] PCI: pass pdev to pci_find_{,next_}ext_capability() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707381549158500 Content-Type: text/plain; charset="utf-8" This is in preparation of using attributes recorded for devices. Additionally locating (extended) capabilities of non-devices (e.g. phantom functions) makes no sense. While there also eliminate open-coding of PCI_CFG_SPACE_SIZE in adjacent code. Signed-off-by: Jan Beulich Reviewed-by: Teddy Astie --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -676,7 +676,7 @@ static uint64_t read_pci_mem_bar(const s unsigned int pos; uint16_t ctrl, num_vf, offset, stride; =20 - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_SRIOV); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); ctrl =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL); num_vf =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_NUM_VF); offset =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_OFFSET); --- a/xen/drivers/passthrough/ats.c +++ b/xen/drivers/passthrough/ats.c @@ -26,7 +26,7 @@ int enable_ats_device(struct pci_dev *pd u32 value; int pos; =20 - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ATS); BUG_ON(!pos); =20 if ( iommu_verbose ) --- a/xen/drivers/passthrough/ats.h +++ b/xen/drivers/passthrough/ats.h @@ -32,7 +32,7 @@ static inline int pci_ats_enabled(const u32 value; int pos; =20 - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ATS); BUG_ON(!pos); =20 value =3D pci_conf_read16(pdev->sbdf, pos + ATS_REG_CTL); @@ -45,7 +45,7 @@ static inline int pci_ats_device(const s if ( !ats_enabled ) return 0; =20 - return pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); + return pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ATS); } =20 #endif /* DRIVERS__PASSTHROUGH__ATS_H */ --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -641,7 +641,7 @@ static void pci_enable_acs(struct pci_de if ( !is_iommu_enabled(pdev->domain) ) return; =20 - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ACS); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ACS); if (!pos) return; =20 @@ -787,8 +787,7 @@ int pci_add_device(u16 seg, u8 bus, u8 d =20 if ( !pdev->info.is_virtfn && !pdev->physfn.vf_rlen[0] ) { - unsigned int pos =3D pci_find_ext_capability(pdev->sbdf, - PCI_EXT_CAP_ID_SRIOV); + unsigned int pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_= SRIOV); uint16_t ctrl =3D pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL= ); =20 if ( !pos ) --- a/xen/drivers/passthrough/vtd/x86/ats.c +++ b/xen/drivers/passthrough/vtd/x86/ats.c @@ -62,7 +62,7 @@ int ats_device(const struct pci_dev *pde return 0; =20 ats_drhd =3D find_ats_dev_drhd(drhd->iommu); - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ATS); =20 if ( pos && (ats_drhd =3D=3D NULL) ) { --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -531,10 +531,10 @@ void pci_vtd_quirk(const struct pci_dev /* Sandybridge-EP (Romley) */ case 0x3c00: /* host bridge */ case 0x3c01 ... 0x3c0b: /* root ports */ - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ERR); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR); if ( !pos ) { - pos =3D pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_VND= R); + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_VNDR); while ( pos ) { val =3D pci_conf_read32(pdev->sbdf, pos + PCI_VNDR_HEADER); @@ -543,7 +543,7 @@ void pci_vtd_quirk(const struct pci_dev pos +=3D PCI_VNDR_HEADER; break; } - pos =3D pci_find_next_ext_capability(pdev->sbdf, pos, + pos =3D pci_find_next_ext_capability(pdev, pos, PCI_EXT_CAP_ID_VNDR); } ff =3D 0; --- a/xen/drivers/pci/pci.c +++ b/xen/drivers/pci/pci.c @@ -89,9 +89,10 @@ unsigned int pci_find_next_cap(pci_sbdf_ * within the device's PCI configuration space or 0 if the device does * not support it. */ -unsigned int pci_find_ext_capability(pci_sbdf_t sbdf, unsigned int cap) +unsigned int pci_find_ext_capability(const struct pci_dev *pdev, + unsigned int cap) { - return pci_find_next_ext_capability(sbdf, 0, cap); + return pci_find_next_ext_capability(pdev, 0, cap); } =20 /** @@ -104,14 +105,15 @@ unsigned int pci_find_ext_capability(pci * within the device's PCI configuration space or 0 if the device does * not support it. */ -unsigned int pci_find_next_ext_capability(pci_sbdf_t sbdf, unsigned int st= art, +unsigned int pci_find_next_ext_capability(const struct pci_dev *pdev, + unsigned int start, unsigned int cap) { u32 header; int ttl =3D 480; /* 3840 bytes, minimum 8 bytes per capability */ - unsigned int pos =3D max(start, 0x100U); + unsigned int pos =3D max(start, PCI_CFG_SPACE_SIZE + 0U); =20 - header =3D pci_conf_read32(sbdf, pos); + header =3D pci_conf_read32(pdev->sbdf, pos); =20 /* * If we have no capabilities, this is indicated by cap ID, @@ -125,9 +127,9 @@ unsigned int pci_find_next_ext_capabilit if ( PCI_EXT_CAP_ID(header) =3D=3D cap && pos !=3D start ) return pos; pos =3D PCI_EXT_CAP_NEXT(header); - if ( pos < 0x100 ) + if ( pos < PCI_CFG_SPACE_SIZE ) break; - header =3D pci_conf_read32(sbdf, pos); + header =3D pci_conf_read32(pdev->sbdf, pos); } return 0; } --- a/xen/drivers/vpci/rebar.c +++ b/xen/drivers/vpci/rebar.c @@ -53,7 +53,7 @@ static int cf_check init_rebar(struct pc { uint32_t ctrl; unsigned int nbars; - unsigned int rebar_offset =3D pci_find_ext_capability(pdev->sbdf, + unsigned int rebar_offset =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_REB= AR); =20 if ( !rebar_offset ) --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -196,7 +196,7 @@ static struct vpci_register *vpci_get_pr static int vpci_ext_capability_hide( const struct pci_dev *pdev, unsigned int cap) { - const unsigned int offset =3D pci_find_ext_capability(pdev->sbdf, cap); + const unsigned int offset =3D pci_find_ext_capability(pdev, cap); struct vpci_register *r, *prev_r; struct vpci *vpci =3D pdev->vpci; uint32_t header, pre_header; @@ -264,7 +264,7 @@ static int vpci_init_capabilities(struct if ( !is_ext ) pos =3D pci_find_cap_offset(pdev->sbdf, cap); else if ( is_hardware_domain(pdev->domain) ) - pos =3D pci_find_ext_capability(pdev->sbdf, cap); + pos =3D pci_find_ext_capability(pdev, cap); =20 if ( !pos ) continue; @@ -333,7 +333,7 @@ void vpci_deassign_device(struct pci_dev if ( !capability->is_ext ) pos =3D pci_find_cap_offset(pdev->sbdf, cap); else if ( is_hardware_domain(pdev->domain) ) - pos =3D pci_find_ext_capability(pdev->sbdf, cap); + pos =3D pci_find_ext_capability(pdev, cap); if ( pos ) { int rc =3D capability->cleanup(pdev, false); --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -263,8 +263,10 @@ unsigned int pci_find_next_cap_ttl(pci_s unsigned int *ttl); unsigned int pci_find_next_cap(pci_sbdf_t sbdf, unsigned int pos, unsigned int cap); -unsigned int pci_find_ext_capability(pci_sbdf_t sbdf, unsigned int cap); -unsigned int pci_find_next_ext_capability(pci_sbdf_t sbdf, unsigned int st= art, +unsigned int pci_find_ext_capability(const struct pci_dev *pdev, + unsigned int cap); +unsigned int pci_find_next_ext_capability(const struct pci_dev *pdev, + unsigned int start, unsigned int cap); const char *parse_pci(const char *s, unsigned int *seg_p, unsigned int *bu= s_p, unsigned int *dev_p, unsigned int *func_p); From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707902; cv=none; d=zohomail.com; s=zohoarc; b=ZdYnylYTrz5m0IddbZDHHa/KKh0QZdL53sM7xMEnvDBossF7m17TP+094W87CU95OYzZ4LgFo9db5zYDmDV1PyPTA2w6g9QWOjZaWbo8ElXWofmL1LpCuBLD5T+1fPMB69FhJ4icUHEmV6oepR3BR//zC6WpcGuQz/0iBCj7228= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707902; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2cfIXKgHYTFCKsrX1bFpAF8sQFG6ytaJSHI//BPGSL8=; b=hP+S2bxnRK9uXxBTf8yOWumrg8RP4ve1qG9rAQo0pVAwHQl9Yb3q/02apSVFHHeD3/V42GL1pZZznzQZ428rywbIjrjA/AkfRWDdWgmw8N3S/UpPQSsGw2kC2Pxeej1VzRunjdbwsKtgMSunnYzZDzhvrK4zCr14MMqIho9FVhg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707901982478.0677657078892; Tue, 6 Jan 2026 05:58:21 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196149.1514025 (Exim 4.92) (envelope-from ) id 1vd7ZY-0000ha-HP; Tue, 06 Jan 2026 13:58:08 +0000 Received: by outflank-mailman (output) from mailman id 1196149.1514025; Tue, 06 Jan 2026 13:58:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7ZY-0000hT-Df; Tue, 06 Jan 2026 13:58:08 +0000 Received: by outflank-mailman (input) for mailman id 1196149; Tue, 06 Jan 2026 13:58:07 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7RZ-0004MT-DD for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:49:53 +0000 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [2a00:1450:4864:20::333]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 937f2561-eb06-11f0-b15e-2bf370ae4941; Tue, 06 Jan 2026 14:49:52 +0100 (CET) Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-47d3ba3a4deso6092685e9.2 for ; Tue, 06 Jan 2026 05:49:52 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d7f69e13bsm43099975e9.7.2026.01.06.05.49.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:49:51 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 937f2561-eb06-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707392; x=1768312192; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=2cfIXKgHYTFCKsrX1bFpAF8sQFG6ytaJSHI//BPGSL8=; b=HgCtGjAIicX+vNFSnc8f4jIhsV7yovP/PhlrweB0mNJBeSixojNOdvr6NTsPpZTZUR 3eCSMBjmZTBH5uFQ84qnd0aJSF2iiDOgXxeQAMqylPbMbBdn+sIIEgzknwcBf72jlj3h BIeE8osIDuY12KKkSl7LyI0Nzg/zGZ8LFIWVZhUTOwDsS8XPEzytxvKPwU+oQkCao3Fg rZ2yM9MrSgiDHZz5itam+IaDd+mFxRzdVFMW4yNDDVNE4B10YNQz8epEY13jnhNLHXhL 53jFpr3T8wvQdtwhnKOh+BI3O1iNy9Wyl5TDbA3U9HR3xKbL4Yp2NM4g+WZwY14Mb8Fm Vqeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707392; x=1768312192; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2cfIXKgHYTFCKsrX1bFpAF8sQFG6ytaJSHI//BPGSL8=; b=FMY9GBP7C0ts8itM2xB4MMuNIHQ5zH0gqaUoIsu41iUvy1RWPwS6c3zqWIoDdtiT9N Bl4NqhwdbAIAES+VdfJ7iByFMJ+cp2zF3Vpdh+e3ApbckNSkNBRMZoBTEiuQpqQdib4M N287IFTAcYh9tLKBfNayOlGNpRXTqDfql7ObX7H+rTtyovOmnwH3h6OtxVrw8R1Zq2qp HXV7lvieYzdY8vJ9/BM90r83D3k73vbOwKuB3NCcoMJzJGuOzC+IREZ6MOGApGoBNYP6 /vnH3uutv046BnM4f1FPmbNLwMYcSqM4pGTZG6joS7jyreS9exApBWaBCdqdocbUEAK9 bUGg== X-Gm-Message-State: AOJu0YxKXFswTGOJkRc22VEqpeFo7udM9xn6NbBmujmR9qWckkiQuttA YqMFJ2g6mUI72hTQ2dVzE/tAsSkWltGtDK48ePsQgvnz8AR8V1VutgAMsJOVCglSwBw2CwMUp10 33GA= X-Gm-Gg: AY/fxX6NDM/7f23vfSTsXAUhGe2SfsEfIo83puKfDhJE0fkWZy7ejBue6NQiDhlmMp9 5kNmH4Na+3PH0Yow8BlNnIY5QeXzvvRS3h+u0jzgVAIb0mZSieXr53QWIC7rgRuvflbrFn2DeuN EOj4p9DPtHaaPOcLKzKNYmYE2JtnTHbp/tgE/Pg78sZC/sdYnlMeZaHdDqC+vePwYbzU+w/Ut/K wx6X8ZZDp8xJsNCnOXiDDEDrbdZWByuUg3+Pq7SL9JFfHzQ2vyoRFmiGcnl02e+pDkuiaTrcX9o hayjVn8HaZAYbedGO799j8ZAMfKUzg64U9OYfzAtkoDaFt3YD6beyoF4FY7THlb8jBa9qusTlIP yqi68PffjXasjWdskXiNaZsoQnnVuTr8VQ9VHcAVq5v6mffVFNXaPNbZukZt8auHVv2ovyA8fUm nqT/uXqEuMpIVnEvlpF7TP8aFUas1bZtcOzYZp1we1POgxovh9ezjX13pbvkOJroYLWfRztan/V k0= X-Google-Smtp-Source: AGHT+IExk9a4kJflf5MXqX0+A74y+swup+hf1gx6iK7W3f/9V+3U0r2+q1yX0qkByPjLKAKoVBZhgA== X-Received: by 2002:a05:600c:620c:b0:477:54cd:200a with SMTP id 5b1f17b1804b1-47d7f066c8emr33236895e9.6.1767707392064; Tue, 06 Jan 2026 05:49:52 -0800 (PST) Message-ID: Date: Tue, 6 Jan 2026 14:49:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 5/6] PCI: don't look for ext-caps when there's no extended cfg space From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707902370158500 Content-Type: text/plain; charset="utf-8" Avoid interpreting as extended capabilities what may be about anything. In doing so, vPCI then also won't mis-interpret data from beyond base config space anymore. Fixes: 3b35911d709e ("Enable pci mmcfg and ATS for x86_64") Fixes: a845b50c12f3 ("vpci/header: Emulate extended capability list for dom= 0") Signed-off-by: Jan Beulich --- Because of the multiple prereq changes, despite the Fixes: tags I'm not quite sure whether to backport this. (I'm leaning towards "no".) --- a/xen/drivers/pci/pci.c +++ b/xen/drivers/pci/pci.c @@ -113,6 +113,12 @@ unsigned int pci_find_next_ext_capabilit int ttl =3D 480; /* 3840 bytes, minimum 8 bytes per capability */ unsigned int pos =3D max(start, PCI_CFG_SPACE_SIZE + 0U); =20 + if ( !pdev->ext_cfg ) + { + ASSERT(!start); + return 0; + } + header =3D pci_conf_read32(pdev->sbdf, pos); =20 /* From nobody Sat Feb 7 07:26:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1767707891; cv=none; d=zohomail.com; s=zohoarc; b=Oxm7100Zmp2Sx9hmjEKXmE1XeMONqdplry7ULscFhaOWip0CDR7DjaZmwCfFg0rqNwKCd9eDoLnjKp2ZCMMjsl+B+qMbkfxfImyrRyo/oVpfIUBOvxk7xxeFxk9u/4Hh35Jd0i45S4rBNF9PfWGZJXbqWtOIGZaRpbiA9h+mijI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767707891; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LxIHHnoWmRfEZQKRp7c/KawtwyGIc/YRyMoiBmbjtBI=; b=b9Zba+le13W1+yFJYD+59rWhE3AjXpLuJOaS/iTE1kCNwAniFNH88olqRJPyEg8yYJubleM0NocgK2YpqdHVZ6lZ4iY5PGYBlm54TLVbyKGQoptE4KQKmHaNrIXAwbKPq1m6/iZk+oSCNvmc1NQakNhejcg+HL3/hNRSoe4uDME= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1767707891503292.3278301822795; Tue, 6 Jan 2026 05:58:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1196143.1514015 (Exim 4.92) (envelope-from ) id 1vd7ZN-0000LD-A1; Tue, 06 Jan 2026 13:57:57 +0000 Received: by outflank-mailman (output) from mailman id 1196143.1514015; Tue, 06 Jan 2026 13:57:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7ZN-0000L6-6t; Tue, 06 Jan 2026 13:57:57 +0000 Received: by outflank-mailman (input) for mailman id 1196143; Tue, 06 Jan 2026 13:57:56 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vd7Rz-0004MT-QV for xen-devel@lists.xenproject.org; Tue, 06 Jan 2026 13:50:19 +0000 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [2a00:1450:4864:20::432]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a340ddc3-eb06-11f0-b15e-2bf370ae4941; Tue, 06 Jan 2026 14:50:19 +0100 (CET) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-43260a5a096so624029f8f.0 for ; Tue, 06 Jan 2026 05:50:19 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd0daa84sm4502490f8f.2.2026.01.06.05.50.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jan 2026 05:50:18 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: a340ddc3-eb06-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1767707418; x=1768312218; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=LxIHHnoWmRfEZQKRp7c/KawtwyGIc/YRyMoiBmbjtBI=; b=RsrYTQMd77w/i4NR2tSMUQeGxnUa5vi08TgmHHTS8+NeY12NvLXlLVr6Ma95yWIB/P d3qLDo8J+GttBcWDzz9RXYtm/51+CzY85nh2ROhV+PzYscPUmXCUc2VKmGt4lb/+qt0l O1IPOLTDwwf8STmaxY91GGjYAijrpLUvZVQjXqLnmqcHDoysY66XvBPI3RMOLasIWEyT PfCqlTvU7SKbPwTLKG3V0A1sxGNwFRJHEaxTF4xBV1X5LU+t7o/TihonsTKq9Mna2p3u 8QKwouyXfpdEAJnhYSInaKU6Kc8dWMj919mzRyuCPFpC18BB7wdf3lqCbZeZXqy76c1F HdkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767707418; x=1768312218; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LxIHHnoWmRfEZQKRp7c/KawtwyGIc/YRyMoiBmbjtBI=; b=ONIB+vNLqVZbdnEnKl5YSSBiy1962kRTXW7oaSHYsp5qEaSafsNJkdIeZXbVdR6iF7 YUuQdH1xJc+lLHOIjvFpiUsp4tuycuDC4GMnMXamWM+LCTn4HZWMzVFiNb4eMoHPShh9 4zK3/30ZDQMFN9xwUQ/52/7UbaOQ3EvXxWHhngSwYAlCO/1xYaXynvM65/ljWPBfmVIM A9KVfFU17t4v8XLIqvzAslkf2oqLb/uHw7TLSg9YvF5JWQN3nYBs+lwfAmHl+TgV5q4D kE7lMqmO4oB/oLWwO9+sjYpspQL17ui+x4QQ/rybXjA/WndqvHI1htDXkidXPWeiAoHA d+WA== X-Gm-Message-State: AOJu0YxTgMMgN/8XsZM9PpjYwc0zkteZUlfZ85C45gf0TJSE3CFkESls Pa8fFsDhWuQrz23bGTQ1Sf/J7uyuTi9wdKpgCkDG+5ivHMKfWL8gS4iTsml0k7plSnBwBMKxNwd cngA= X-Gm-Gg: AY/fxX7cfQNJK5Lh6QmfRKY9/eAVJargNQagFH3RstYNQsxwJK8j0OSpF6oFhP2Bvvg j0SQQCh66g/4embbNOp+MH1nUGVKI1NIYOj9Z+oWMJPnIRi/s/34m2I4nwTyHULc3XkwdSOqfeV wjp0F5h+CFwDqNBocRjlccWNDogDqQRnMyj8xYzWk+FCyP/iJGGN7K3vKCK+8+D9pbe/Md3wwO+ 6GVaaSkGVSA1IOQiQP15/qxbhLDS42ouEDMUQtihrYXWshlKnloeJ6TzMHxyOE9raxGYW4kIYUN IMTozgdhxZXdUkKlOBNRii+1Rx9OfOE0vWmbgkoKQzcNABj4bUWnbeRh0OL1Oo6uZZH00IOFPdA 25+uFjP/0bYj7LDkrUioGcJvPHnFpQsPilwHTEzFz8Xussk74kARIlhhYq53yxG3SZwfIyyoiqY NwEDAxm7F5xmdXEKgs7xaHvMbpADsUdd0Ra8mf4qodSlvWjb5W9sGyMPJJChYgTEZMqaqOJ5KbG Ao= X-Google-Smtp-Source: AGHT+IFoIKcKZEb6fpXZ3yLHOppIPAnw6aSQPSZKTVyBbq08Aq6Hb6k95aMw0wy4H5RvXABb/dNEoQ== X-Received: by 2002:a05:6000:2c0c:b0:427:23a:c339 with SMTP id ffacd0b85a97d-432bca2ac7fmr3599687f8f.14.1767707418501; Tue, 06 Jan 2026 05:50:18 -0800 (PST) Message-ID: <432bb0bd-96a6-4505-8c1c-7e8eb4de1f5c@suse.com> Date: Tue, 6 Jan 2026 14:50:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 6/6] vPCI/DomU: really no ext-caps without extended config space From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= , Stewart Hildebrand References: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <05bc9acd-3054-4c5a-be87-cfd8d7bfa0f8@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1767707892343158500 Content-Type: text/plain; charset="utf-8" Whether to emulate accesses to the first 32 bits of extended config space as read-as-zero or read-as-all-ones depends on whether a device actually has extended config space. If it doesn't, read-as-zero isn't correct; not getting this right may confuse functions like Linux 6.19-rc's pci_ext_cfg_is_aliased(). Fixes: a845b50c12f3 ("vpci/header: Emulate extended capability list for dom= 0") Signed-off-by: Jan Beulich --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -830,9 +830,14 @@ static int vpci_init_ext_capability_list unsigned int pos =3D PCI_CFG_SPACE_SIZE; =20 if ( !is_hardware_domain(pdev->domain) ) + { + if ( !pdev->ext_cfg ) + return 0; + /* Extended capabilities read as zero, write ignore for DomU */ return vpci_add_register(pdev->vpci, vpci_read_val, NULL, pos, 4, (void *)0); + } =20 do {