Changes since v2: * Applied changes from Danilo's and Alex's review (thanks!): * Moved everything possible out of the new define_all_pci_classes!() and define_all_pci_vendors!() macros. * Used "impl TryFrom<u32> for Class/Vendor", instead of .from_u32(). * Made the new DeviceId methods infallible. * Upgraded DeviceId::from_id() to accept a Vendor struct. * Changed the names to be a little clearer: * class_code_raw() --> pci_class_code_raw() * class_enum() --> pci_class() * Added doctests for the items that are not yet used in real drivers. v2 is here: https://lore.kernel.org/20250818013305.1089446-1-jhubbard@xxxxxxxxxx Changes since v1: 1) Use the pci_device_table for filtering, instead of open-coding filters in the .probe() callback. 2) Add PCI Class (class, subclass, implementation) and PCI Vendor to Rust for Linux. 3) Rebased onto the latest nova-next branch, which is here: https://gitlab.freedesktop.org/drm/nova.git v1 is here: https://lore.kernel.org/20250813232859.224316-1-jhubbard@xxxxxxxxxx John Hubbard (3): rust: pci: provide access to PCI Class, subclass, implementation values gpu: nova-core: avoid probing non-display/compute PCI functions rust: pci: provide access to PCI Vendor values drivers/gpu/nova-core/driver.rs | 33 +- rust/kernel/pci.rs | 574 +++++++++++++++++++++++++- samples/rust/rust_dma.rs | 6 +- samples/rust/rust_driver_auxiliary.rs | 7 +- samples/rust/rust_driver_pci.rs | 4 +- 5 files changed, 604 insertions(+), 20 deletions(-) base-commit: 0dfc23ac2c5b3a62ab27fb9b6ee582b4bb5ce33c -- 2.50.1