From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BED5E34F48A for ; Fri, 21 Nov 2025 17:05:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763744751; cv=none; b=iBCspQuEdC2GeQXLgTqxG7wYGsqSIAb+E9hxpapmS/2f7pLnoyqqwNy1FUckvDamPlzA9iDKljUHt4HI6VgQFBg2WC5zPw+x0ozTM6/Dlony9HXm5F8RohWlrFAg/XzgSnnOHK8OokFQLX0IypHklXTPUHwhjywvO3voLklnlHA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763744751; c=relaxed/simple; bh=tmekbxR8wc1I7t6Q6VZZ1XIp/NWvYZvJ1hM4SKb77K0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=sL25SrjMa6amhNE1gHKuULHyMZ0E3jZAI6AuDClTjoDYDx/8QDCp7sgsVUd4/DqV1kuLGVAd9YfTVZofbfpNNBYEJPpkHf55RPEDT4kTjApbMTej/9BtaLA0/zJOtd1+y/hW94clIxpjML5IumlRxj9sAijj+Qn/sNnnQ0cf4tk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=GmE19yN0; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=BXPi5SIh; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="GmE19yN0"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="BXPi5SIh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763744740; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=pcee4/A8vRRbWn/DfexDhknhgtkMbBICYwtyayyfJMY=; b=GmE19yN0fhAmIiOHhrhJI24Xc1ag38TSw+XNPNnFgENV7F5kd065re5EA3lvDH+gx1BqoQ hyaPQgTd5bOzezKmOIaCHeBAd9x9hqy0LSdABOpcE6070PQ6yhqE/3xLlzvMkQzPeQ57nv AHp49Vmc9NSsABnWS5/GsSsBVYa7CiE= Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-120-K7DdHwk3NJC7ySWoG1I34Q-1; Fri, 21 Nov 2025 12:05:13 -0500 X-MC-Unique: K7DdHwk3NJC7ySWoG1I34Q-1 X-Mimecast-MFC-AGG-ID: K7DdHwk3NJC7ySWoG1I34Q_1763744713 Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8805054afa1so59590366d6.0 for ; Fri, 21 Nov 2025 09:05:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763744713; x=1764349513; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=pcee4/A8vRRbWn/DfexDhknhgtkMbBICYwtyayyfJMY=; b=BXPi5SIhUDHMl9uA/4qvsmhZ/PPEHjwxBTvyyCwngiTOlCOpUCivgMOWF1zvDA1P+r eb+JYu3rMiiDSEhxU2cUA2lBFe1hooNf1DqdupgMIDvS7MckWvDfRPwhnzK9NxPjoYFF gfy3Mlwmbtj4Ln6KwSxObZGyyaRBjge5NbLPTqt7Q92pKHfQV58PCO63QSFoZzW+ouIz UokFxynGobwrvgwLqSH0BmHM9sPQlQoKnwN2N9l53TkysFGo1jt6TcMnTcJsBNdt0MBT xG4OWnhU+at7o48lOBHt9mWksheFFo9x6oS9pUwdSW3YMvRrwRQCNyei4u/y+JxyVc77 siSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763744713; x=1764349513; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pcee4/A8vRRbWn/DfexDhknhgtkMbBICYwtyayyfJMY=; b=P4vPsf0q5r1XzsrXz5Bau2hkJ96fLJb9W4WMKVIFt2MYHtrdUKbcjX3ETRctVXfwGK Cm6/5/bnxtEgVs8lqG56KjiN3uWF88/Fjy1qDiQYXUWPofNcZfL5CKelYb02Uj6Po7TJ XBixSabsk9cCHowm8BKgT1NlYlqohBTu4DqGOFxdATlOuTLgONlsnfuioTu8/GU5YoUb tfOUDSz6lxsIW5VM7sHvRv9/FKXwY4MSTlRKdXVsTmdV0bDNcu+lrAqOREap1Lau/EhN 1CNW+DduJ7xRiT0oMaJtkTcFeoD4PtpyWTul/6d4foTPCeOEgHo4xa9okeNy5TGSpQ49 R2AA== X-Forwarded-Encrypted: i=1; AJvYcCXONn6Fvn/kyAwe26Kw1MZ9DlP2LkLfjc2AzHYnIlt5CJCvkHPDP3niyfUsTVRd/ykCd1+3hOW80wSFDDU=@vger.kernel.org X-Gm-Message-State: AOJu0Yxdc4Z+Eu04HoVgXKLU7LRDMvYDdzghsSmBnk6cC7RWU9z5gqQx IPiE80myU5HvXgu2T61Yrl6H6DfxxUjdjh5XGoWkUiUjYyf98XTGzUjT6TgxsmwYG1+LQD3KpZA VNKBZjasNZZFNl1BeTe/9z/r4zzhDyS6PvpVGWVDvX1Ld3T59AuZQKZRdl84mqgM5hA== X-Gm-Gg: ASbGncstcuYU7EDceT7/Reb+8vD4o2Orct0hZCRWoGc0/acbsiwEHyEpZwVsbqZ/172 PFeBolzx26cwtBrYZ7/n0DrMkNZrRPYsgLu8/I9R1uzJWw4jL8oQyN5MzNjvsM2dAngtQ4yiGeN U0ztNpg+/PFhUlJtlrEGTgh2dJ5NkDWNY3W9759w1QVpUq1kleYRULqYOSyREKB+LV7hC1y66+z 950dfAYN2kLtFFI04NdfGmOGoV4+fS26SV6S9KXG1ai4NP4C9cewpX6lHrjbPofhtkH+EBtH2qI 1tYp6XxnGn7z6tj+qssJzPQo/FYxJat0Aztsc6hTRZO3oN8Y/88BVQsHTviXzghqOaLzRCmliGt jxVyIGls7dA== X-Received: by 2002:ad4:5aae:0:b0:882:6cd3:7f64 with SMTP id 6a1803df08f44-8847c525dbemr42276346d6.44.1763744712789; Fri, 21 Nov 2025 09:05:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IGLRcV7K0Bhq8TE5Bm7cm2cdZ/VYsJmCfeBsteGuVKLE0o2xsrM2bCCmTKOW8kK51KJ84vQ/g== X-Received: by 2002:ad4:5aae:0:b0:882:6cd3:7f64 with SMTP id 6a1803df08f44-8847c525dbemr42275096d6.44.1763744712063; Fri, 21 Nov 2025 09:05:12 -0800 (PST) Received: from localhost ([2607:f2c0:b141:ac00:2fb1:d1df:b122:3b2c]) by smtp.gmail.com with UTF8SMTPSA id 6a1803df08f44-8846e446a06sm43506306d6.2.2025.11.21.09.05.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 09:05:11 -0800 (PST) Date: Fri, 21 Nov 2025 12:05:10 -0500 From: Peter Colberg To: Zhi Wang Cc: Danilo Krummrich , Bjorn Helgaas , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?B?QmrDtnJu?= Roy Baron , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Abdiel Janulgue , Daniel Almeida , Robin Murphy , Greg Kroah-Hartman , Dave Ertman , Ira Weiny , Leon Romanovsky , linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot , Alistair Popple , Joel Fernandes , John Hubbard , Jason Gunthorpe Subject: Re: [PATCH 0/8] rust: pci: add abstractions for SR-IOV capability Message-ID: Mail-Followup-To: Zhi Wang , Danilo Krummrich , Bjorn Helgaas , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?B?QmrDtnJu?= Roy Baron , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Abdiel Janulgue , Daniel Almeida , Robin Murphy , Greg Kroah-Hartman , Dave Ertman , Ira Weiny , Leon Romanovsky , linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot , Alistair Popple , Joel Fernandes , John Hubbard , Jason Gunthorpe References: <20251119-rust-pci-sriov-v1-0-883a94599a97@redhat.com> <20251120083213.6c5c01a5.zhiw@nvidia.com> <20251120203444.321378c2.zhiw@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251120203444.321378c2.zhiw@nvidia.com> On Thu, Nov 20, 2025 at 08:34:44PM +0200, Zhi Wang wrote: > On Thu, 20 Nov 2025 10:03:45 -0500 > Peter Colberg wrote: > > Hi Peter: > > I met some errors when compiling on driver-core-next branch, you can > fix those in the next spin. > > Fixes: > > diff --git a/drivers/gpu/nova-core/driver.rs > b/drivers/gpu/nova-core/driver.rs index ca0d5f8ad54b..730e745cad63 > 100644 --- a/drivers/gpu/nova-core/driver.rs > +++ b/drivers/gpu/nova-core/driver.rs > @@ -49,6 +49,7 @@ pub(crate) struct NovaCore { > ] > ); > > +#[vtable] > impl pci::Driver for NovaCore { > type IdInfo = (); > const ID_TABLE: pci::IdTable = &PCI_TABLE; > > diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs > index d6cc5d7e7cd7..2d68db076f92 100644 > --- a/rust/kernel/pci.rs > +++ b/rust/kernel/pci.rs > @@ -292,6 +292,7 @@ macro_rules! pci_device_table { > /// ] > /// ); > /// > +/// #[vtable] > /// impl pci::Driver for MyDriver { > /// type IdInfo = (); > /// const ID_TABLE: pci::IdTable = &PCI_TABLE; > > The code in the examples should be able to compile. > > You can enable doctest by: > > CONFIG_RUST_KERNEL_DOCTESTS=y > > Then: > > impl Device { > /// Returns the Physical Function (PF) device for a Virtual > Function (VF) device. /// > /// # Examples > /// > > snip > > /// ``` > /// let pf_pdev = vf_pdev.physfn()?; > /// let pf_drvdata = pf_pdev.as_ref().drvdata::()?; > > I saw this part is not able to be compiled.^ Thanks Zhi, I applied all fixes. Peter > > Z. > > > On Thu, Nov 20, 2025 at 08:32:13AM +0200, Zhi Wang wrote: > > > On Wed, 19 Nov 2025 17:19:04 -0500 > > > Peter Colberg wrote: > > > > > > Hi Peter: > > > > > > Thanks for the patches. :) I will test them with nova-core and come > > > back with Tested-bys. > > > > Perfect, thanks Zhi. > > > > > Nit: Let's use "kernel vertical" styles on imports. [1] > > > > > > [1] > > > https://lore.kernel.org/all/20251105120352.77603-1-dakr@kernel.org/ > > > > Thanks, done for patch "samples: rust: add SR-IOV driver sample". > > > > Peter > > > > > > > > > Add Rust abstractions for the Single Root I/O Virtualization > > > > (SR-IOV) capability of a PCI device. Provide a minimal set of > > > > wrappers for the SR-IOV C API to enable and disable SR-IOV for a > > > > device, and query if a PCI device is a Physical Function (PF) or > > > > Virtual Function (VF). > > > > > > > > Using the #[vtable] attribute, extend the pci::Driver trait with > > > > an optional bus callback sriov_configure() that is invoked when a > > > > user-space application writes the number of VFs to the sysfs file > > > > `sriov_numvfs` to enable SR-IOV, or zero to disable SR-IOV [1]. > > > > > > > > Add a method physfn() to return the Physical Function (PF) device > > > > for a Virtual Function (VF) device in the bound device context. > > > > Unlike for a PCI driver written in C, guarantee that when a VF > > > > device is bound to a driver, the underlying PF device is bound to > > > > a driver, too. > > > > > > > > When a device with enabled VFs is unbound from a driver, invoke > > > > the sriov_configure() callback to disable SR-IOV before the > > > > unbind() callback. To ensure the guarantee is upheld, call > > > > disable_sriov() to remove all VF devices if the driver has not > > > > done so already. > > > > > > > > This series is based on Danilo Krummrich's series > > > > "Device::drvdata() and driver/driver interaction (auxiliary)" > > > > applied to driver-core-next, which similarly guarantees that when > > > > an auxiliary bus device is bound to a driver, the underlying > > > > parent device is bound to a driver, too [2]. > > > > > > > > Add an SR-IOV driver sample that exercises the SR-IOV capability > > > > using QEMU's 82576 (igb) emulation and was used to test the > > > > abstractions [3]. > > > > > > > > [1] https://docs.kernel.org/PCI/pci-iov-howto.html > > > > [2] > > > > https://lore.kernel.org/rust-for-linux/20251020223516.241050-1-dakr@kernel.org/ > > > > [3] https://www.qemu.org/docs/master/system/devices/igb.html > > > > > > > > Signed-off-by: Peter Colberg > > > > --- > > > > John Hubbard (1): > > > > rust: pci: add is_virtfn(), to check for VFs > > > > > > > > Peter Colberg (7): > > > > rust: pci: add is_physfn(), to check for PFs > > > > rust: pci: add {enable,disable}_sriov(), to control SR-IOV > > > > capability rust: pci: add num_vf(), to return number of VFs > > > > rust: pci: add vtable attribute to pci::Driver trait > > > > rust: pci: add bus callback sriov_configure(), to control > > > > SR-IOV from sysfs rust: pci: add physfn(), to return PF device > > > > for VF device samples: rust: add SR-IOV driver sample > > > > > > > > MAINTAINERS | 1 + > > > > rust/kernel/pci.rs | 148 > > > > ++++++++++++++++++++++++++++++++++ samples/rust/Kconfig > > > > | 11 +++ samples/rust/Makefile | 1 + > > > > samples/rust/rust_dma.rs | 1 + > > > > samples/rust/rust_driver_auxiliary.rs | 1 + > > > > samples/rust/rust_driver_pci.rs | 1 + > > > > samples/rust/rust_driver_sriov.rs | 107 > > > > ++++++++++++++++++++++++ 8 files changed, 271 insertions(+) > > > > --- > > > > base-commit: e4addc7cc2dfcc19f1c8c8e47f3834b22cb21559 > > > > change-id: 20251026-rust-pci-sriov-ca8f501b2ae3 > > > > > > > > Best regards, > > > > > > > >