From nobody Mon Jan 26 07:40:27 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=1768834009; cv=none; d=zohomail.com; s=zohoarc; b=JtbOA+Vaj4iiV5BeiOTzI8hG8TRqxLfgyjlFWKyzZD56EwLJXO6RAZQu3iFbnWbVIkBvVyjveRpsS2ibP0JwBiOJI45LNluoHZYrAC7YI9rnLj7JmNVQl/1XMr29N2IcdIWSl2eLPbM6cBIiBBTP9ve9+hmYMqsYF7XhWuG5ib0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768834009; 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=xnRmTKXNteKMqdZEfaFQJUrsWcgVdqBEXTb4msepQGA=; b=K1VU/3R/2ZGdJSvCOplrR5ACT7a8XwIdR5IMdB0ApbeEDDDPq7TZ1ON+rhte0FW4lDIfxjo2dnSn930r7SBRsspdDXyVeN952GvL+tqfgTNRvltUCUlQTZ41MByPPR9tTLdvn+c/ifHVkolFeEyY+Cp35WrhLfdjxiaRSiL0dpw= 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 1768834009055356.3709163848872; Mon, 19 Jan 2026 06:46:49 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1208131.1520368 (Exim 4.92) (envelope-from ) id 1vhqWX-0000F1-CH; Mon, 19 Jan 2026 14:46:33 +0000 Received: by outflank-mailman (output) from mailman id 1208131.1520368; Mon, 19 Jan 2026 14:46:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vhqWX-0000Eu-9F; Mon, 19 Jan 2026 14:46:33 +0000 Received: by outflank-mailman (input) for mailman id 1208131; Mon, 19 Jan 2026 14:46:32 +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 1vhqWW-0000Ek-67 for xen-devel@lists.xenproject.org; Mon, 19 Jan 2026 14:46:32 +0000 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [2a00:1450:4864:20::32f]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a46d932c-f545-11f0-b15e-2bf370ae4941; Mon, 19 Jan 2026 15:46:31 +0100 (CET) Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-47ee4338e01so17856695e9.2 for ; Mon, 19 Jan 2026 06:46:31 -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-43569926ff1sm23285772f8f.13.2026.01.19.06.46.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 06:46:30 -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: a46d932c-f545-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1768833990; x=1769438790; 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=xnRmTKXNteKMqdZEfaFQJUrsWcgVdqBEXTb4msepQGA=; b=fzxAM5LHtstpodnYk6gZik5wMRfgUlFcrxYMH3MzZoR2CfhZvg59HfEQGkD1rk3sof MmFS7pNhaoXwlfbB26p3FCmRJ1jlL8ZDBCkSQA+m5Nl92HnFWlkc1d7yR3z0maZwOj7w HRpmOZ6rfhHqekWEWG7i/3ac+ZW/fEAI3OW+w03llZ0KfTDtYeqdbhJ6k73okMGSCDiW fvEI2w1gFp8yQiykmZeFGfe6zopiGK3wDm0YOqDgGndxRkl0UxUtybzUWkoQCAwDJXr9 NQ9C/PZz6lfjwLN0qQYTj2tXm08CYBQNSPBGHm2Og463k6UChDX21GWtI9IymLPuyeFK pLew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768833990; x=1769438790; 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=xnRmTKXNteKMqdZEfaFQJUrsWcgVdqBEXTb4msepQGA=; b=jo885fV91QoDYB1sfHpm2w29TqtiKu9oOtAwJFhFEF1IynmfB1Ib9nGe2j8/rLd5tV vrNELBjcsfjYIyd20PLnOeh/Mwv52x98GUU7tG0HSq250X8btnK5VaqwIeAKqi5g25XD oGJcTsWa8eaE/hlTGGY5jtaDViKaFdBQp4t5oxLkIQDhxgQIHi+eFVtPubZvdu8bbL5d zZCzEDCJHMc8B3wGfrRlD3rbpLhQavad0YVyW0srmteeoN1iC80fZ9pxCsbAQw6je/DD mjmMbFM4PQfMjGEvQlWXx3KoOBSggfai4y98JXm4BU2huSAx+9zB2LmqwMv/hON0GZg/ BYdw== X-Gm-Message-State: AOJu0YwQ0TpMvftWjRNwfhme0Hbc1aozmIajwRkSpEPR+qQc3/HCy489 7V32fOrCRdDk9pCqtTvAh7AWNKtflXhxsFgJMTuKzXp0fKdlMtz2A3Jn0xMGvUmMPOta/yAMy6G eEbA= X-Gm-Gg: AY/fxX4qJPOMv+wOJYsDBSWAfqAt0g6QBLh7an8TA8e0g4ZAUw66PQywAqFf0a+BMKM dMBDufznPo33PEwOIt3eH21kFxZRcqqx5O6G5SGxyniZdLKOagYrU0j9amRuBjn7zZGFdvZW2Kj g5vueQ/rwVfPJdiEjMGLhjViGcpPQ7+G4+pxz/rIx1YBg8VVVg6//AnCU/qk9Ei6UFIA5b7YivP vRrNAWOAWOpPI7askf3Q+KzNhja4VX02mIcqD/E4LKkbqaUY8jhc9WzgnAKvIId/PwBLnRwC7Dt u+H5OYNqYeA146vSJ5agTSM5pK0che3jrEZszZ4RVEGiPoru1851lIcJpu1FBpdR9RXBwryp5zX iIWVXmsnS46bfNx02sHeeXjIioeof2445Zwg+0Ny15ikr+NzU7xisFmZq66KjF4zAeUFMcjEMUh fWvadZGVmKCxKOUq6rw5ViSXe/Kim9fGfEI6ecmGhNg08RMIVFx4chN2NlVLe0KCcD7CdJhaaOb 4A= X-Received: by 2002:a05:600c:6489:b0:459:db7b:988e with SMTP id 5b1f17b1804b1-4801eac331bmr135763005e9.13.1768833990294; Mon, 19 Jan 2026 06:46:30 -0800 (PST) Message-ID: Date: Mon, 19 Jan 2026 15:46:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 1/4] PCI: handle PCI->PCIe bridges as well in alloc_pdev() 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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1768834010303154100 Content-Type: text/plain; charset="utf-8" It's not clear why the enumerator was omitted, as these clearly shouldn't take the "default" path (issuing a warning). Handle them the same as legacy and PCIe->PCI bridges. Fixes: e7e08d86ad2f ("IOMMU/PCI: consolidate pdev_type() and cache its resu= lt for a given device") Signed-off-by: Jan Beulich Reviewed-by: Stewart Hildebrand --- v2: New. --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -351,6 +351,7 @@ static struct pci_dev *alloc_pdev(struct unsigned long flags; =20 case DEV_TYPE_PCIe2PCI_BRIDGE: + case DEV_TYPE_PCI2PCIe_BRIDGE: 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); From nobody Mon Jan 26 07:40:27 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=1768834030; cv=none; d=zohomail.com; s=zohoarc; b=OWNx4KmQ4oGb7m0XdhWf/oWDLGX3DbL8OctcOOfYLEQzJlrZ1s4wVfFNL1nGqPGBWgiamsuPD45vn0Cn5EVMMV10QKywxhnEb9JQah4QEDtNvUpc6XwnChQXUTc9MVLDozm+LYAd7SzrotCRX9qymPf8d+rfAnPATVfIIQrr92Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768834030; 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=+dUkXgiK2DH2wyqqSUw4eWQiqTgrfXkQw7d9LrW88Ck=; b=CT/Ozl8JZwO9K++cEmKRDT2C9Vhzm7AhM4p9y05gdIX4srt+zM2o2NR3RlDnAFDGcFIdvUBf9wSJ0ypUTMy+8kdWk2G1NAWq6lG7Ec7HXdK7sL3QasUJHuTnC7W73mgRnqH14ugADCZHH94Rotqrh9eHRJ8KxfQJwexXevuR8Gw= 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 17688340305301013.5794359182041; Mon, 19 Jan 2026 06:47:10 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1208139.1520379 (Exim 4.92) (envelope-from ) id 1vhqWu-0000hN-JG; Mon, 19 Jan 2026 14:46:56 +0000 Received: by outflank-mailman (output) from mailman id 1208139.1520379; Mon, 19 Jan 2026 14:46:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vhqWu-0000hE-GE; Mon, 19 Jan 2026 14:46:56 +0000 Received: by outflank-mailman (input) for mailman id 1208139; Mon, 19 Jan 2026 14:46:55 +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 1vhqWt-0000Ek-5y for xen-devel@lists.xenproject.org; Mon, 19 Jan 2026 14:46:55 +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 b2770eaa-f545-11f0-b15e-2bf370ae4941; Mon, 19 Jan 2026 15:46:54 +0100 (CET) Received: by mail-wr1-x444.google.com with SMTP id ffacd0b85a97d-43284ed32a0so2439382f8f.3 for ; Mon, 19 Jan 2026 06:46:54 -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-4356996cf42sm23755497f8f.20.2026.01.19.06.46.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 06:46:53 -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: b2770eaa-f545-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1768834014; x=1769438814; 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=+dUkXgiK2DH2wyqqSUw4eWQiqTgrfXkQw7d9LrW88Ck=; b=OvivTaFxonCBinYv5MWrG0oEcMTfSuD8J4n6yNBHe2MjAyYkgn6sgPMUtpb1oNeC3P 8yxOF1hpt/NN5Ap5NlTbBCQhCKTxD3Oxn/Dj6UE/KdsxZsLqvt/DtkrP4Q5RHQIrOgvu 7zw/MrKITyD+Q8jljQM4YMSLvuSwTYkJdhp6qtMnBp+CnY6MIu/EsSG2ALDf2oLsGnKW l2YenEFdj6FyHQcH9GW6OB6HxyioJUPbxNo+G+spnvlyJy3YLJbLGePAGD0robpsj2fy GPS2ckPWmOF1ITJkX7OPuop8VvX9Cp4I9JF3w6ILE2dTYNzGSGHyASGNllPYuoWCFkxD JvvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768834014; x=1769438814; 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=+dUkXgiK2DH2wyqqSUw4eWQiqTgrfXkQw7d9LrW88Ck=; b=lB1+HJiTIF8X70yrGkbypIxMjL4TnCF/RNA1hnbqRPjfBN1iU6k3RGmvsgfW8sIXrG X8wy0av+WN3DIwKmJ5QBd345eCXY2ehNkpsZl2FiwmHzpo2NZxvzN3nLrn4yx6KW3NYZ 4WHJNfVTMbkwX0vIiFKxyGanCdtaxhPePVmlznSCNarakZttSA/SJNWGAjzV6JEHmyOE bphKNpSleoXwP4jdAZ+WAMBJFLxdPTLuh4/jtg6o3dBRFpughCAqLzdeb/fSUesJ6Utn DXg+SRabaHyeRbR1OMWGBU4UMv5r/Jw88HaIq0bFAwgxh9v3xnr5P8xczCM3NcRAhTyr S6VQ== X-Gm-Message-State: AOJu0Yxp2XPrrXRQkjChAuKIvuJlvvwVyfyzapqJQGv83/fhuVCZKRv2 P/jrpam86WCzTHXtEbwl10+FLg0Ew/4G6vO5ci2IEwYcITp+NCJy9IlFqkscTDNOl4u0518t0aK oqQ6CcQ== X-Gm-Gg: AZuq6aIHi8C7KkU4f5cLP7NMJdvgx47ix2fPF9u0/bCNqO/6pF+vy0GYHdbmucMwSpc y4Ritdeu5x1dY7PvlLsRalykeWAEi9puCnCReuKC0hEhPU30Tr8i+jn/lvCEgmbOhzeoSh6HjM4 QVQX/o7MtFn7M1nR4o5k5jB6GoOte14Z/jnVstkoiZe15Y+j5lutK4PGb5UPV6g7H/ieRie+Cj3 qePPFfx63tXj7z+HBVwbMambcfxLKlQpiIMvmT89nf+puRylWw6HXTfR5Rx1lJPQz9BUNPneU0g iY2/oxYgZwpW3Nbon2Toj8Y7HYEYjwRrR3SfjLR80qCjjEwv1auvu7NT2bxnp+KDddMGJA+Zj6p kHM/6Gp+QEs4HGZaGObDE+yJk9Yixs1A82EoiL9ls7gx3mb0+gC/pRNdlC4JlpXA/h2D2BcUIMC J/si3rXQ8sYVD3LZ8n+DVHWxKJofAN7W/i4nXz8YaoHokq41SYNoJRxs+bJUzn1adklhIcUvE1H +s= X-Received: by 2002:a5d:5f94:0:b0:431:1d4:3a8a with SMTP id ffacd0b85a97d-43569972d22mr13740605f8f.7.1768834013906; Mon, 19 Jan 2026 06:46:53 -0800 (PST) Message-ID: Date: Mon, 19 Jan 2026 15:46:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 2/4] 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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1768834032686154100 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 Reviewed-by: Stewart Hildebrand --- Should we skip re-evaluation when pci_mmcfg_arch_enable() takes its early exit path? The warning near the bottom of pci_check_extcfg() may be issued multiple times for a single device now. Should we try to avoid that? Note that no vPCI adjustments are done here, but they're going to be needed: Whatever requires extended capabilities will need re- evaluating / newly establishing / tearing down in case an invocation of PHYSDEVOP_pci_mmcfg_reserved alters global state. 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? --- v2: Major re-work to also check upon PHYSDEVOP_pci_mmcfg_reserved invocation. --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -22,6 +22,8 @@ int physdev_map_pirq(struct domain *d, i struct msi_info *msi); int physdev_unmap_pirq(struct domain *d, int pirq); =20 +int cf_check physdev_check_pci_extcfg(struct pci_dev *pdev, void *arg); + #include "x86_64/mmconfig.h" =20 #ifndef COMPAT @@ -160,6 +162,17 @@ int physdev_unmap_pirq(struct domain *d, =20 return ret; } + +int cf_check physdev_check_pci_extcfg(struct pci_dev *pdev, void *arg) +{ + const struct physdev_pci_mmcfg_reserved *info =3D arg; + + ASSERT(pdev->seg =3D=3D info->segment); + if ( pdev->bus >=3D info->start_bus && pdev->bus <=3D info->end_bus ) + pci_check_extcfg(pdev); + + return 0; +} #endif /* COMPAT */ =20 ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) @@ -511,6 +524,11 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H =20 ret =3D pci_mmcfg_reserved(info.address, info.segment, info.start_bus, info.end_bus, info.flags); + + if ( !ret ) + ret =3D pci_segment_iterate(info.segment, physdev_check_pci_ex= tcfg, + &info); + if ( !ret && has_vpci(currd) && (info.flags & XEN_PCI_MMCFG_RESERV= ED) ) { /* --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -422,6 +422,9 @@ static struct pci_dev *alloc_pdev(struct } =20 apply_quirks(pdev); + + pci_check_extcfg(pdev); + check_pdev(pdev); =20 return pdev; @@ -718,6 +721,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 @@ -1041,6 +1049,75 @@ enum pdev_type pdev_type(u16 seg, u8 bus return pos ? DEV_TYPE_PCIe_ENDPOINT : DEV_TYPE_PCI; } =20 +void pci_check_extcfg(struct pci_dev *pdev) +{ + unsigned int pos, sig; + + pdev->ext_cfg =3D false; + + switch ( pdev->type ) + { + case DEV_TYPE_PCIe_ENDPOINT: + case DEV_TYPE_PCIe_BRIDGE: + case DEV_TYPE_PCI_HOST_BRIDGE: + case DEV_TYPE_PCIe2PCI_BRIDGE: + case DEV_TYPE_PCI2PCIe_BRIDGE: + break; + + case DEV_TYPE_LEGACY_PCI_BRIDGE: + 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)) ) + return; + break; + + default: + return; + } + + /* + * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express dev= ices + * 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 conf= ig + * space accesses, or the device is behind 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. + */ + if ( pci_conf_read32(pdev->sbdf, PCI_CFG_SPACE_SIZE) =3D=3D 0xffffffff= U ) + return; + + /* + * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 says = that + * when forwarding a type1 configuration request the bridge must check + * that the extended register address field is zero. The bridge is not + * permitted to forward the transactions and must handle it as an + * Unsupported Request. Some bridges do not follow this rule and simp= ly + * drop the extended register bits, resulting in the standard config s= pace + * being aliased, every 256 bytes across the entire configuration spac= e. + * Test for this condition by comparing the first dword of each potent= ial + * alias to the vendor/device ID. + * Known offenders: + * ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01 & 0= 3) + * AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40) + */ + sig =3D pci_conf_read32(pdev->sbdf, PCI_VENDOR_ID); + for ( pos =3D PCI_CFG_SPACE_SIZE; + pos < PCI_CFG_SPACE_EXP_SIZE; pos +=3D PCI_CFG_SPACE_SIZE ) + if ( pci_conf_read32(pdev->sbdf, pos) !=3D sig ) + break; + + if ( pos >=3D PCI_CFG_SPACE_EXP_SIZE ) + { + printk(XENLOG_WARNING "%pp: extended config space aliases base one= \n", + &pdev->sbdf); + return; + } + + pdev->ext_cfg =3D true; +} + /* * find the upstream PCIe-to-PCI/PCIX bridge or PCI legacy bridge * return 0: the device is integrated PCI device or PCIe @@ -1841,6 +1918,29 @@ int pci_iterate_devices(int (*handler)(s return pci_segments_iterate(iterate_all, &iter) ?: iter.rc; } =20 +/* Iterate a single PCI segment, with locking but without preemption. */ +int pci_segment_iterate(unsigned int segment, + int (*handler)(struct pci_dev *pdev, void *arg), + void *arg) +{ + struct pci_seg *seg =3D get_pseg(segment); + struct segment_iter iter =3D { + .handler =3D handler, + .arg =3D arg, + }; + + if ( !seg ) + return -ENODEV; + + pcidevs_lock(); + + iter.rc =3D iterate_all(seg, &iter) ?: iter.rc; + + pcidevs_unlock(); + + return iter.rc; +} + /* * Local variables: * mode: C --- 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 (accessible) extended config space. */ + bool ext_cfg; + /* Device to be quarantined, don't automatically re-assign to dom0 */ bool quarantine; =20 @@ -242,6 +245,11 @@ void pci_check_disable_device(u16 seg, u int pci_iterate_devices(int (*handler)(struct pci_dev *pdev, void *arg), void *arg); =20 +/* Iterate a single PCI segment, with locking but without preemption. */ +int pci_segment_iterate(unsigned int segment, + int (*handler)(struct pci_dev *pdev, void *arg), + void *arg); + uint8_t pci_conf_read8(pci_sbdf_t sbdf, unsigned int reg); uint16_t pci_conf_read16(pci_sbdf_t sbdf, unsigned int reg); uint32_t pci_conf_read32(pci_sbdf_t sbdf, unsigned int reg); @@ -260,6 +268,7 @@ 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); +void pci_check_extcfg(struct pci_dev *pdev); 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, From nobody Mon Jan 26 07:40:27 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=1768834067; cv=none; d=zohomail.com; s=zohoarc; b=f81NZ6PuBQB7x1FrCwDpyva3eNbwqIrjyBxxs6GKKaqU2UQcB1LrwI6bmc303FXt0w9o13p0VtH3jRKuhjz4koXmpne7yN9e1LYmmhtD2VBGgmzAnvnrQK+rbUImat4LfYGbMAogrvYycdhOrkg13XMKHej63yCVITjktgPZs0k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768834067; 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=Lv+DjTXHB2vGfsWxJJwveVk++IMAZWStLlGDqoa8ZvpINSvwIE5np9ujYT2t5AmAKzafBLhAWiTnsFAGhY9opxDLXFrtxgLCpmcjkz3r4Ctkbjb0POBHUb8t1yEcMmPwICOjfcEpkR/0r5T6nJoil24XATBAlFldIQ1QV9L8RhA= 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 176883406791343.87443185087193; Mon, 19 Jan 2026 06:47:47 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1208149.1520390 (Exim 4.92) (envelope-from ) id 1vhqXV-0001MP-0g; Mon, 19 Jan 2026 14:47:33 +0000 Received: by outflank-mailman (output) from mailman id 1208149.1520390; Mon, 19 Jan 2026 14:47:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vhqXU-0001MG-St; Mon, 19 Jan 2026 14:47:32 +0000 Received: by outflank-mailman (input) for mailman id 1208149; Mon, 19 Jan 2026 14:47:31 +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 1vhqXT-0001Lt-21 for xen-devel@lists.xenproject.org; Mon, 19 Jan 2026 14:47:31 +0000 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [2a00:1450:4864:20::42d]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id c69c21aa-f545-11f0-9ccf-f158ae23cfc8; Mon, 19 Jan 2026 15:47:29 +0100 (CET) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-42fbc305882so2451681f8f.0 for ; Mon, 19 Jan 2026 06:47:28 -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-43569921da2sm23567771f8f.1.2026.01.19.06.47.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 06:47:27 -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: c69c21aa-f545-11f0-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1768834048; x=1769438848; 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=SBQKG6gNmS7B0g+ci15OQ5lXx425LxvWxv5ZGep241pwPi5PUk1vxVqZqFujrVbyXD X11qFOugvvdvpOC6KZ5wSTC0Wut58JaHzW2X+ocUTnQxUjJ+Q2D/W6EejR+3+bQZmJXc 6+rnYq3/6knc2t1DGTquuP+jDW2pWdfIrg5s97qZ32K6plRWOVsja3GsQL1GJi0P8SjW 9GxfStn3l7zcRhwrM63NSIC6EpEC1Zo6sdaNCYf7NJkb+tvTt5yGEF931dfpxwoUOZl8 /5sqTHhSP0zHjdOG6sYblFhCiHGvd6rBhKpqzPCPI8RgCHkxxzsDqim8iRHK/D4xY7fZ tTEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768834048; x=1769438848; 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=xH/XC4QK6q1aMqqOGGoL19+T7McWqnVfsRox7ysQUmxdOw7Qo3+LwZm5V+un8Rcltp xdZTyWKRol4c7XGn7k6nGtgDAqQYReu0ceyxeShhGVxseGkmNfAbRae5qcFINdEsIk3m q9SUC1WZX/ih16I3raWmiZ8Cjsl0AWcOm39fDXzD/P2kKCa/PqwZ/bXJWRP4CSmBppwo c5eNTVVd+OUju535MpSIEc0D0JbpNlAMVOAA+71z8K2mQsalac/+/CJrs9SzPdopxOKf HqA3oiku0lHdd8KDPesrSWKVaOSIdmxAsg+8V4mQXSSSa0GQQyxgvRC9CrIviAuy/8Ge BJEg== X-Gm-Message-State: AOJu0Yxg1gWXPdzPZP15ky0bPHRoyWtaxJITpEz0iXVMW5F3AbYNZavX 9SjETbfdfGKpYR85AQLkS0uKliklyNN1ECqe2voUU0YvgQ0Mil/CKcsIgwOPkYsP/RDfYpzKQUi PG7g= X-Gm-Gg: AZuq6aK4TSxuhOVcI7Ybv2CzsuPldkxH1nGtyDEO5vUdwICYBtxCmACpXkmVFEdp/9M YlCL63A7tTPAJTS3EgZ7XgjNTI/aGgLAziqJtFTP/Fh4kv2jAP3QHW0XyfhnvrtoCh9lF9PInLl HwdpVfrsjH5GifpBVWSRorjElP2nakHrShPUh0NQMkaQDbwYBx6WnLxMniNZ/vScxtUY3oT89C+ l35mzFIfW97FnGOS4MNOgbOhykG9068asbEusmF1UkBkCab4R08FhWxzlM4yZerfzCFm3szgU7l rTlqm2AfH/C0ula7uLCkpl7/TIzEqcQr2Pv8JTGnvi8Mf0np9PEMPTCvS6t/fI2CMxt1D4lPyiL nIf53kkk2F5fVDlAGozJKBMerxTUq1PuHsCZ2UiRPBsHtfHcnrEVxx/pZDujkcLlUf7qCjVULdp xAsR4quXl9yA9YQsDDpPWk/hXRwekJFD4VpQFxB7rJGC33fTOOe1wU67ngKRmRfPHoU2XGOaaXT Dg= X-Received: by 2002:a05:6000:2c13:b0:430:f742:fbc8 with SMTP id ffacd0b85a97d-43569972d7bmr13723591f8f.6.1768834047591; Mon, 19 Jan 2026 06:47:27 -0800 (PST) Message-ID: <133c1cb0-bdb6-4c9a-bea8-c50f42ce58d7@suse.com> Date: Mon, 19 Jan 2026 15:47:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 3/4] 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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1768834071213154100 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 Mon Jan 26 07:40:27 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=1768834094; cv=none; d=zohomail.com; s=zohoarc; b=Le2Cb/qv1v1wZQiWDS0GadeNEX/LjS3MViJxrXndahP0rjiGBbFVOFVHVCBU9ddwsIDjNd0Q+Za/PlWHgVgse80s2DscQ2rfbwGSY3sBBNOe0UYSqMaKsnLRjSLFbbwWucMxm5EzeeuGjQGcb1IgYAANEI2GU1fwUtZDd25MoeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768834094; 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=HZhp4lo60CezqYtG/LSShEaKLc3dxqpLt1if4Znbi7sUAuj0GFVnF8WUZhTSkT28CwjLzk6tKp/yC2+QyJsqJKhpIfiOXFeFeYmWLxcVzPLV+2v/buVZDYr1F8aBeJA8EtHefAuHMIpuQYl4fPv9HcPyQCrIoZUgwgo/5wyoS9U= 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 1768834094300988.7911007752102; Mon, 19 Jan 2026 06:48:14 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1208161.1520398 (Exim 4.92) (envelope-from ) id 1vhqXy-0001r4-7Y; Mon, 19 Jan 2026 14:48:02 +0000 Received: by outflank-mailman (output) from mailman id 1208161.1520398; Mon, 19 Jan 2026 14:48:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vhqXy-0001qx-4j; Mon, 19 Jan 2026 14:48:02 +0000 Received: by outflank-mailman (input) for mailman id 1208161; Mon, 19 Jan 2026 14:48:01 +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 1vhqXx-0000Ek-9C for xen-devel@lists.xenproject.org; Mon, 19 Jan 2026 14:48:01 +0000 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [2a00:1450:4864:20::336]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d9c8ef6d-f545-11f0-b15e-2bf370ae4941; Mon, 19 Jan 2026 15:48:00 +0100 (CET) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-47ee4338e01so17864775e9.2 for ; Mon, 19 Jan 2026 06:48:00 -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-4356996dad0sm23506468f8f.27.2026.01.19.06.47.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 06:47:59 -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: d9c8ef6d-f545-11f0-b15e-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1768834080; x=1769438880; 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=TxLaI9HOXth5fRHyIUzPjqNZQ/ALpBNqQAdYSVadlU7apUJdF09BgIAr25iW0Dx4vd DFjR/2czV2Yw1lf4/lHA6lzSWWisPIkVeqwlAQTZWkm1VeS71kBZlrlryFg3IhDTpUUw elTM7fXLAEjzS2CSHAHfYht9460x/3XZ5c+gMTv2qPADdQ2c3FniwTJpPBRo0g478ei8 Tgv/0TehDcKJV3aPNKPSzj8FsejjFYw1FtAh+7Id05fUjGLKw/umx62oUqZiQABb0VTp UwOCJaSOlD4DimMFxpVUAwHvT0vrhH/Y2cxsx6vUPM3kZH/yBmaKD1aIVmLX5HAWBW6v aShA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768834080; x=1769438880; 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=jAY7K+3u/QGxsci/KC+WjuokVd8MrjtIbGe27pY+KzExfixf0PSLj9aQXrnT4Rt0Sy rWc1FAaSW2nAES7fb90q4qAZHieVjpYNaJTxrLLAIJ9u7keuvrM+p+T8tfeVbQaOn+k9 nALC4PGYPPa/0fsKiRe8fKjSoABv+qWcDSHdIMPGVbe/IIDAlP3tLMFuOap1gz4yPcA2 UEPijMY/SowRakrNSn74+YvA8YFjP0/5+qSClp3tFdG7Tekzgs21pzQAeHDVJbEKsn6m fyvJcF+xVfY/mY63rzUAbA3Z9lzAIY/AMOWcGDyg5iVWY2FIzkaP/OsY6hmt/d7e+GEZ OTOg== X-Gm-Message-State: AOJu0YyFGVglj6FjUY4QEVowa0QgV+f6cBbld5a4xxop/n9R06WA04K6 A0SgjEItb2q4O+TiM9yJGv4LgRHLm9a63VFbiTlLQxbBT0Zz9wRHty4s6VLW7kzok8GDl3SRcRd lBjg= X-Gm-Gg: AY/fxX4ltqcCjE2sDxeUotr4Ohvhi67PzdJXIUeTmDAZSWzgVmDvn3VSfPvFbcG4dJx nlo9f/mF9D8tmT1f57FaJEVeavb0a1/1aOgVSwb1qdvu0hIQYk3J69vAL7JqLU6vFUMRXX5xgQ/ yT+RhZaigJNzczvzxtejUmtnu3nzEMqlv+bw0n1xZZcjm0QjNlSpyZ62kThEymdht0YX28Ps2LW APBF7q7Y720Jj87+P0EPLZE4zO9X3Zm9meCQ+kGHNhePSX9v55jcGY9zDwhXbrwuY3jDkQ+LL8u kNilLvwFLDi7YghZCO9c4yCjJaGvLrcPSIYZO7Edb2WwmHh6pzCx9SorAThmZC5ltNnRQgGd972 aP3KvTx3Mq4WqQ903EQkesp899JSt75VDiTwCuC6RZFVOOoIY9LAR/MiE6oyjtzTB/LY9OslGWQ MWMyRggYpBh0egCevZjypN14zwN/crcISaz3jComFHtcKPXGK5tAz3kulsJtl2LLC1sSk+copYK qQ= X-Received: by 2002:a05:600c:4e15:b0:46e:37a7:48d1 with SMTP id 5b1f17b1804b1-4801eb181a8mr149210435e9.34.1768834079918; Mon, 19 Jan 2026 06:47:59 -0800 (PST) Message-ID: <96e90685-3321-4884-8fe7-f083c25ba7ab@suse.com> Date: Mon, 19 Jan 2026 15:48:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 4/4] 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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@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: <58091dc1-7bda-4536-8200-2d0a5679d4d1@suse.com> Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1768834097416154100 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 {