From nobody Mon Sep 21 07:51:42 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; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1780585726; cv=none; d=zohomail.com; s=zohoarc; b=TFD3aYZyV1re5fCVtVMoWwC4KPXh4+r4vNcsrqgKvRTA4AAa43DA6xvM2UiJTMRfLYgt3SMjw23RaGC1i/LNGjZEoPaxmYmviuKeajGrH7azd5arDCmjbT+/A4SMPnjG9krGweO1XlIudPAV/cljGm1cDr/FoT0+EUF5Z0DFjn8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780585726; h=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=WoqDAswymnFuDctzAHclbYUv6AH/JbUjYrzVeObwiVA=; b=Z4HddvoQAJG11sgzPOV1AZxph6l0q0nhhHSY1uKlEdAjPvaSz32nJmUI1jB05DvfkCvzN/FVT31X3rfku0x1WuuNWhCm9wLPnF4TnOkK+XGAtHJCc5vd/W+uW4Yjoin1lggZD7od/0a6lLJVaFfYnfCmW7wz9pHsE1YRb0EOZOE= 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=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780585726058123.47724335303587; Thu, 4 Jun 2026 08:08:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1328034.1592733 (Exim 4.92) (envelope-from ) id 1wV9gD-0005qX-8R; Thu, 04 Jun 2026 15:08:21 +0000 Received: by outflank-mailman (output) from mailman id 1328034.1592733; Thu, 04 Jun 2026 15:08:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wV9gC-0005ni-Pw; Thu, 04 Jun 2026 15:08:20 +0000 Received: by outflank-mailman (input) for mailman id 1328034; Thu, 04 Jun 2026 15:02:10 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wV9aE-00047V-OO for xen-devel@lists.xenproject.org; Thu, 04 Jun 2026 15:02:10 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wV9aE-00B95r-4e for xen-devel@lists.xenproject.org; Thu, 04 Jun 2026 17:02:10 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a219364-2eae-0a2a0a5409dd-0a2a4509e686-44 for ; Thu, 04 Jun 2026 17:02:10 +0200 Received: from [209.85.214.174] (helo=mail-pl1-f174.google.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a219370-2497-0a2a45090019-d155d6aea9d5-3 for ; Thu, 04 Jun 2026 17:02:09 +0200 Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2bf77d4a4e2so11468985ad.1 for ; Thu, 04 Jun 2026 08:02:09 -0700 (PDT) Received: from localhost ([2a03:2880:7ff:4d::]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16629d042sm63879855ad.60.2026.06.04.08.02.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 08:02:06 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780585328; x=1781190128; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WoqDAswymnFuDctzAHclbYUv6AH/JbUjYrzVeObwiVA=; b=jkGzUa7ya6kz419ZUmzAcQIQT2qYhnJm39MSBBSVdNsrHhfrpm/6gX3HqwQ+oUKgLw NNvjJXjASYCZdR+AHlAyhQhQG8r448Lh/TKF/TFUa8Hg8kH2SjR6WH67iXrb+yHrY1Io leATirggYiDe0BQU05MdXCeIGOxtlVjvR1yaYOkp9MMauAPqxf00PeEpIA7nx2jhPxIR Md88EqqKVKkdzMmosWaJDW44b07gF8UkNaVkbnBmGzqx0g3tGdqoAn+HDsHCwEMIeD8U moRemDlkaeWPGHH/9E4bz0rTickyh7nM/qjoIo0efqn9m84t0T6H/4hh74bixP3GWIvU 9bfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585328; x=1781190128; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WoqDAswymnFuDctzAHclbYUv6AH/JbUjYrzVeObwiVA=; b=ZQkiUBZ0/bN1+BXZbDPkURIoyGjrVqinAM6XpBeFywpceqgWSdkUHt2UufT5F6K6rP zdrBsuDZj4/3Dc6y0SDykdYw2zjEjhrRxlbnn1HCdGyFAn+FhYWv+zXp56aRZ2BQYNJq 1+CRSHb5yOZSYcYri0eRFiQj7l5+Q2cAJaZnqHOjFLBwIbIIZZuVoGD/edPyixFS4fnt bahNfuust7Lx5ilfodHwW/6KzLJZdMBTAOwKYICVpU+mjQ0KtUPOQNcqtGZ/M/AIXnPF sW6lOHwNIFHE415TziSHtIHjiM6mNJcXRN4OwfgE4IFhdwTTePD5iSdeYVuX0PHXF9Yt oMJA== X-Forwarded-Encrypted: i=1; AFNElJ9F2TGTk0Ob9G3f9d9AZbPKfA1qA+Q9FZvpcHx+jursVZtyCCj54Ppw+3W9NPOirL96dh6JBaY2/kY=@lists.xenproject.org X-Gm-Message-State: AOJu0YyNe8l4Kzc7drv5/PDgps0Z7dkBtPtJtdCbQuVnuzcT/jVQJei2 pW0ZIatkBuXZQHznoKrWM40uxm0LlPFKFMaWeOxniAQOMLSAaX8kQz6m X-Gm-Gg: Acq92OGjvF4lW960fGlhRq+nLBAp1Nj2J04KcTBl8IT//p2bRiURZJ2ANIPTh7tFi3u ivUuzM1JtNRePcJjUZQI+imSDrrl6QleTAwuz5D1j5Njtn49uaca6NIMaUirCy4G9grZ1K7XARD ddObmNd/LmNBkFk36JDhKSBRzHAg9jlKSnhkFsfL+ZWAwAidJyTMau3MeWjjfIxiHofXRSXCfeX VBKwSTwx+713rFq0SdabhTDFtUfQMkUVKOPPbg5T8A4WjG7CtByAiMrRae+7/adCsGl7LEyZpwJ hhOBTGaH2BjXNZYnStF18qr8+fRjJds1dQrQiiz6SHsQUVbV9CRW5WFhMnjwyl4mkpV/s/EZv3C ST8DeCBUyHAZEeL0LIg/x3mDbFLDM8rs+BZKsXkGjPIUMa3PbUb/OVOQffOcUb3Fu3MLUE5X6ej 2bOk0Ir96TcUO7ytNhMRqVKIlYzk6aIZLlF7AbCJo= X-Received: by 2002:a17:902:820e:b0:2c0:a858:8128 with SMTP id d9443c01a7336-2c197b1805fmr25629535ad.1.1780585327615; Thu, 04 Jun 2026 08:02:07 -0700 (PDT) From: Dimitri Daskalakis To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Mahesh J Salgaonkar , Oliver O'Halloran , Niklas Schnelle , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Alex Williamson , Jason Gunthorpe , Kevin Tian , Ankit Agrawal , Leon Romanovsky , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Keith Busch , Alexander Duyck , Jakub Kicinski , Dimitri Daskalakis , linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org Subject: [RFC 08/12] PCI: Add is_sriov bit to struct pci_dev Date: Thu, 4 Jun 2026 08:01:49 -0700 Message-ID: <20260604150153.3619662-9-dimitri.daskalakis1@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260604150153.3619662-1-dimitri.daskalakis1@gmail.com> References: <20260604150153.3619662-1-dimitri.daskalakis1@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-bad1c0/1780585330-40F66A53-11CEE0FF/0/0 X-purgate-type: clean X-purgate-size: 3084 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1780585727178154100 Content-Type: text/plain; charset="utf-8" From: Dimitri Daskalakis We need a way to disambiguate the virtualization type of a PF/VF. PFs may support multiple types of virtualization, while a VF should only support one. Tighten pci_is_sriov_physfn() / pci_is_sriov_virtfn() to ensure the is_sriov bit is set. This allows the existing is_physfn/is_virtfn bits to be agnostic of virtualization type. No functional changes for SR-IOV. Assisted-by: Claude:claude-opus-4.7 Signed-off-by: Dimitri Daskalakis --- arch/s390/pci/pci_iov.c | 1 + drivers/pci/iov.c | 4 ++++ include/linux/pci.h | 5 +++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/s390/pci/pci_iov.c b/arch/s390/pci/pci_iov.c index 13050ce5c3e9..82e9ef1f132f 100644 --- a/arch/s390/pci/pci_iov.c +++ b/arch/s390/pci/pci_iov.c @@ -53,6 +53,7 @@ static int zpci_iov_link_virtfn(struct pci_dev *pdev, str= uct pci_dev *virtfn, in return rc; =20 virtfn->is_virtfn =3D 1; + virtfn->is_sriov =3D 1; virtfn->multifunction =3D 0; virtfn->physfn =3D pci_dev_get(pdev); =20 diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index 5de26057b99a..4aed4f6a42c3 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -326,6 +326,7 @@ static struct pci_dev *pci_iov_scan_device(struct pci_d= ev *dev, int id, virtfn->vendor =3D dev->vendor; virtfn->device =3D iov->vf_device; virtfn->is_virtfn =3D 1; + virtfn->is_sriov =3D 1; virtfn->physfn =3D pci_dev_get(dev); virtfn->no_command_memory =3D 1; =20 @@ -897,6 +898,7 @@ static int sriov_init(struct pci_dev *dev, int pos) iov->dev =3D dev; =20 dev->sriov =3D iov; + dev->is_sriov =3D 1; dev->is_physfn =3D 1; rc =3D compute_max_vf_buses(dev); if (rc) @@ -906,6 +908,7 @@ static int sriov_init(struct pci_dev *dev, int pos) =20 fail_max_buses: dev->sriov =3D NULL; + dev->is_sriov =3D 0; dev->is_physfn =3D 0; failed: for (i =3D 0; i < PCI_SRIOV_NUM_BARS; i++) { @@ -926,6 +929,7 @@ static void sriov_release(struct pci_dev *dev) =20 kfree(dev->sriov); dev->sriov =3D NULL; + dev->is_sriov =3D 0; } =20 static void sriov_restore_vf_rebar_state(struct pci_dev *dev) diff --git a/include/linux/pci.h b/include/linux/pci.h index 28892243f49f..ca84f66425b2 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -479,6 +479,7 @@ struct pci_dev { unsigned int state_saved:1; unsigned int is_physfn:1; unsigned int is_virtfn:1; + unsigned int is_sriov:1; /* SR-IOV is enabled on this device (PF or VF) = */ unsigned int is_hotplug_bridge:1; unsigned int is_pciehp:1; unsigned int shpc_managed:1; /* SHPC owned by shpchp */ @@ -606,12 +607,12 @@ static inline struct pci_dev *pci_physfn(struct pci_d= ev *dev) =20 static inline bool pci_is_sriov_physfn(const struct pci_dev *dev) { - return dev->is_physfn; + return dev->is_physfn && dev->is_sriov; } =20 static inline bool pci_is_sriov_virtfn(const struct pci_dev *dev) { - return dev->is_virtfn; + return dev->is_virtfn && dev->is_sriov; } =20 struct pci_dev *pci_alloc_dev(struct pci_bus *bus); --=20 2.52.0