diff options
| author | Zhi Wang <zhiw@nvidia.com> | 2026-09-06 09:04:04 +0300 |
|---|---|---|
| committer | Danilo Krummrich <dakr@kernel.org> | 2026-10-13 01:12:58 +0200 |
| commit | d4ffc4896b3e709c6a5d7e5a78a1fddfc774fa25 (patch) | |
| tree | 0a7acdb0ec1cebed0030246b8b7c88b0abb683f8 /include/uapi/linux | |
| parent | 3aac49b236c137fa77b97968d25338a28c49f0f8 (diff) | |
| download | linux-next-d4ffc4896b3e709c6a5d7e5a78a1fddfc774fa25.tar.gz linux-next-d4ffc4896b3e709c6a5d7e5a78a1fddfc774fa25.zip | |
rust: pci: add extended capability and SR-IOV support
Rust PCI drivers have no typed interface for locating and accessing PCIe
extended capabilities.
The SR-IOV extended capability describes VF topology and VF BARs. Expose
this information through the Rust PCI abstraction so drivers can use the
existing typed configuration-space accessors instead of raw bindings.
Define ExtCapability to associate a capability ID with a register layout,
and add ConfigSpace::find_ext_capability() to locate and project that
layout. Bound the view at the next capability or the end of extended
configuration space. Add ExtSriovRegs and a decoded VF BAR iterator that
reads and validates all six VF BAR register slots up front, yields decoded
BAR addresses and widths in logical order, and keeps the raw
configuration-space slot advancement internal. Since PCI_EXT_CAP_NEXT() is
a function-like macro, expose it through a Rust helper.
Keep raw SR-IOV registers private because PCI core owns their state. Expose
the current First VF Offset through a read-only accessor because the Nova
GSP ABI needs the raw 16-bit First VF Offset in Routing ID space. The
pci_iov_virtfn_devfn() helper instead returns the low eight bits of a
calculated VF Routing ID.
Cc: Alexandre Courbot <acourbot@nvidia.com>
Cc: Gary Guo <gary@garyguo.net>
Cc: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Zhi Wang <zhiw@nvidia.com>
Link: https://patch.msgid.link/20260906060404.3336193-2-zhiw@nvidia.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'include/uapi/linux')
0 files changed, 0 insertions, 0 deletions
