Hi Dave and Sima, Please pull the following nova changes and other dependencies. There are two minor and trivial conflicts with Linus' tree [1] and the CONFIGFS tree [2]. There is also a minor, but slightly less trivial conflict with the Rust Xarray tree with a resolution in [3]. [1] https://lore.kernel.org/all/20250428123825.4acf2499 at canb.auug.org.au/ [2] https://lore.kernel.org/all/20250513135521.44a26953 at canb.auug.org.au/ [3] https://lore.kernel.org/all/877c344gmp.fsf at kernel.org/ The following changes since commit 0af2f6be1b4281385b618cb86ad946eded089ac8: Linux 6.15-rc1 (2025-04-06 13:11:33 -0700) are available in the Git repository at: https://gitlab.freedesktop.org/drm/nova.git tags/nova-next-v6.16-2025-05-20 for you to fetch changes up to 276c53c66e032c8e7cc0da63555f2742eb1afd69: gpu: drm: nova: select AUXILIARY_BUS instead of depending on it (2025-05-15 20:59:32 +0200) ---------------------------------------------------------------- Nova changes for v6.16 auxiliary: - bus abstractions - implementation for driver registration - add sample driver drm: - implement __drm_dev_alloc() - DRM core infrastructure Rust abstractions - device, driver and registration - DRM IOCTL - DRM File - GEM object - IntoGEMObject rework - generically implement AlwaysRefCounted through IntoGEMObject - refactor unsound from_gem_obj() into as_ref() - refactor into_gem_obj() into as_raw() driver-core: - merge topic/device-context-2025-04-17 from driver-core tree - implement Devres::access() - fix: doctest build under `!CONFIG_PCI` - accessor for Device::parent() - fix: conditionally expect `dead_code` for `parent()` - impl TryFrom<&Device> bus devices (PCI, platform) nova-core: - remove completed Vec extentions from task list - register auxiliary device for nova-drm - derive useful traits for Chipset - add missing GA100 chipset - take &Device<Bound> in Gpu::new() - infrastructure to generate register definitions - fix register layout of NV_PMC_BOOT_0 - move Firmware into own (Rust) module - fix: select AUXILIARY_BUS nova-drm: - initial driver skeleton (depends on drm and auxiliary bus abstractions) - fix: select AUXILIARY_BUS Rust (dependencies): - implement Opaque::zeroed() - implement Revocable::try_access_with() - implement Revocable::access() ---------------------------------------------------------------- Alexandre Courbot (11): rust/revocable: add try_access_with() convenience method samples: rust: convert PCI rust sample driver to use try_access_with() gpu: nova-core: derive useful traits for Chipset gpu: nova-core: add missing GA100 definition gpu: nova-core: take bound device in Gpu::new gpu: nova-core: define registers layout using helper macro gpu: nova-core: fix layout of NV_PMC_BOOT_0 gpu: nova-core: move Firmware to firmware module samples: rust: select AUXILIARY_BUS instead of depending on it gpu: nova-core: select AUXILIARY_BUS instead of depending on it gpu: drm: nova: select AUXILIARY_BUS instead of depending on it Andrew Ballance (1): gpu: nova-core: remove completed Vec extentions from task list Asahi Lina (6): rust: drm: ioctl: Add DRM ioctl abstraction rust: drm: add driver abstractions rust: drm: add device abstraction rust: drm: add DRM driver registration rust: drm: file: Add File abstraction rust: drm: gem: Add GEM object abstraction Danilo Krummrich (24): rust: device: implement impl_device_context_deref! rust: device: implement impl_device_context_into_aref! rust: device: implement device context for Device rust: platform: preserve device context in AsRef rust: pci: preserve device context in AsRef rust: device: implement Bound device context rust: pci: move iomap_region() to impl Device<Bound> rust: devres: require a bound device rust: dma: require a bound device Merge tag 'topic/device-context-2025-04-17' into nova-next rust: pci: impl TryFrom<&Device> for &pci::Device rust: platform: impl TryFrom<&Device> for &platform::Device rust: types: add `Opaque::zeroed` rust: device: implement Device::parent() rust: auxiliary: add auxiliary device / driver abstractions rust: auxiliary: add auxiliary registration samples: rust: add Rust auxiliary driver sample drm: drv: implement __drm_dev_alloc() MAINTAINERS: add DRM Rust source files to DRM DRIVERS rust: revocable: implement Revocable::access() rust: devres: implement Devres::access() samples: rust: pci: take advantage of Devres::access() gpu: nova-core: register auxiliary device for nova-drm drm: nova-drm: add initial driver skeleton Lyude Paul (4): rust: drm: gem: Use NonNull for Object::dev rust: drm: gem: Refactor IntoGEMObject::from_gem_obj() to as_ref() rust: drm: gem: s/into_gem_obj()/as_raw()/ rust: drm: gem: Implement AlwaysRefCounted for all gem objects automatically Miguel Ojeda (2): rust: device: conditionally expect `dead_code` for `parent()` rust: devres: fix doctest build under `!CONFIG_PCI` Documentation/gpu/nova/core/todo.rst | 16 ++--- MAINTAINERS | 17 ++++++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_drv.c | 58 +++++++++++++----- drivers/gpu/drm/nova/Kconfig | 14 +++++ drivers/gpu/drm/nova/Makefile | 3 + drivers/gpu/drm/nova/driver.rs | 69 +++++++++++++++++++++ drivers/gpu/drm/nova/file.rs | 74 +++++++++++++++++++++++ drivers/gpu/drm/nova/gem.rs | 49 +++++++++++++++ drivers/gpu/drm/nova/nova.rs | 18 ++++++ drivers/gpu/drm/nova/uapi.rs | 61 +++++++++++++++++++ drivers/gpu/nova-core/Kconfig | 1 + drivers/gpu/nova-core/driver.rs | 9 ++- drivers/gpu/nova-core/firmware.rs | 44 ++++++++++++-- drivers/gpu/nova-core/gpu.rs | 86 ++++++++++++-------------- drivers/gpu/nova-core/nova_core.rs | 2 + drivers/gpu/nova-core/regs.rs | 82 ++++++++++--------------- drivers/gpu/nova-core/regs/macros.rs | 380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/drm/drm_drv.h | 5 ++ include/uapi/drm/nova_drm.h | 101 +++++++++++++++++++++++++++++++ rust/bindings/bindings_helper.h | 7 +++ rust/helpers/auxiliary.c | 23 +++++++ rust/helpers/drm.c | 23 +++++++ rust/helpers/helpers.c | 2 + rust/helpers/pci.c | 5 ++ rust/helpers/platform.c | 5 ++ rust/kernel/auxiliary.rs | 360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/device.rs | 109 ++++++++++++++++++++++++++++++++- rust/kernel/devres.rs | 56 ++++++++++++++--- rust/kernel/dma.rs | 14 ++--- rust/kernel/drm/device.rs | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/drm/driver.rs | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/drm/file.rs | 99 ++++++++++++++++++++++++++++++ rust/kernel/drm/gem/mod.rs | 328 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/drm/ioctl.rs | 162 +++++++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/drm/mod.rs | 19 ++++++ rust/kernel/lib.rs | 4 ++ rust/kernel/pci.rs | 55 ++++++++++------- rust/kernel/platform.rs | 54 +++++++++-------- rust/kernel/revocable.rs | 28 +++++++++ rust/kernel/types.rs | 8 +++ rust/uapi/uapi_helper.h | 2 + samples/rust/Kconfig | 12 ++++ samples/rust/Makefile | 1 + samples/rust/rust_driver_auxiliary.rs | 120 ++++++++++++++++++++++++++++++++++++ samples/rust/rust_driver_pci.rs | 5 +- 47 files changed, 2762 insertions(+), 197 deletions(-) create mode 100644 drivers/gpu/drm/nova/Kconfig create mode 100644 drivers/gpu/drm/nova/Makefile create mode 100644 drivers/gpu/drm/nova/driver.rs create mode 100644 drivers/gpu/drm/nova/file.rs create mode 100644 drivers/gpu/drm/nova/gem.rs create mode 100644 drivers/gpu/drm/nova/nova.rs create mode 100644 drivers/gpu/drm/nova/uapi.rs create mode 100644 drivers/gpu/nova-core/regs/macros.rs create mode 100644 include/uapi/drm/nova_drm.h create mode 100644 rust/helpers/auxiliary.c create mode 100644 rust/helpers/drm.c create mode 100644 rust/kernel/auxiliary.rs create mode 100644 rust/kernel/drm/device.rs create mode 100644 rust/kernel/drm/driver.rs create mode 100644 rust/kernel/drm/file.rs create mode 100644 rust/kernel/drm/gem/mod.rs create mode 100644 rust/kernel/drm/ioctl.rs create mode 100644 rust/kernel/drm/mod.rs create mode 100644 samples/rust/rust_driver_auxiliary.rs