* [GIT PULL] Driver core changes for 7.3-rc1
@ 2026-08-18 19:19 Danilo Krummrich
0 siblings, 0 replies; only message in thread
From: Danilo Krummrich @ 2026-08-18 19:19 UTC (permalink / raw)
To: Linus Torvalds
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Saravana Kannan,
Andrew Morton, driver-core, rust-for-linux, linux-kernel
Hi Linus,
Please pull these driver-core changes.
All commits have been in linux-next; two signed tags for "software node
fw_devlink support" and "Rust I/O type generalization and projection" have been
shared with other trees.
Expect a few minor conflicts with other trees (DRM, PM, PWM), and a minor
semantic one with the Rust tree [1].
Thanks,
Danilo
[1] https://lore.kernel.org/linux-next/20260807074729.108159-1-ojeda@kernel.org/
The following changes since commit db2ddb87143519e20a95aa36c60b36107b736a58:
Linux 7.2-rc7 (2026-08-09 14:54:50 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core.git tags/driver-core-7.3-rc1
for you to fetch changes up to 3b5ea0f078e1b72276e99c237f3dfc2fd72938bb:
rust: pci: expose the allocated interrupt type (2026-08-17 01:43:31 +0200)
----------------------------------------------------------------
Driver core changes for 7.3-rc1
- container_of:
- Apply typeof_member(), remove the local __mptr variable to eliminate
variable shadowing warnings on nested container_of() calls, and remove
unnecessary parentheses.
- core:
- Add driver name to probe debug print for initcall_debug.
- Avoid repeatedly printing the same 'Fixed dependency cycle' log.
- Unwind device_add() on attribute creation failure in
attribute_container_add_class_device().
- Remove statistics group if encryption group creation fails in
transport_add_class_device().
- debugfs:
- Fix lockdown check for mmap_prepare().
- Warn if file creation failed due to uninitialized debugfs.
- device property:
- Implement fw_devlink support for software nodes by adding
software_node_add_links(), which creates fwnode links from DEV_PROP_REF
properties to enable automatic probe ordering. Add kunit-managed fwnode
helpers and test coverage.
- Fix infinite loop in fwnode_for_each_child_node() when the secondary fwnode
has more than one child. Add test cases.
- Fix out-of-bounds access in software_node_get_reference_args() when called
with index -1 (UINT_MAX).
- Refactor to use RAII approach with __free().
- Add Bartosz Golaszewski as software node reviewer.
- firmware loader:
- Fix race where a sysfs fallback request can complete before being queued as
pending, leading to a use-after-free on the next fallback request.
- Reject 0-size built-in firmware and fail the build on empty firmware files
in CONFIG_EXTRA_FIRMWARE.
- kobject:
- Provide __KOBJ_ATTR() and __KOBJ_ATTR_RO/WO() initialization macros and
allow the constification of kobject attributes, enabling them to reside in
read-only memory.
- platform:
- Provide platform_device_set_of_node(), platform_device_set_fwnode(), and
platform_device_set_of_node_from_dev() helpers that encapsulate firmware
node reference counting for dynamically allocated platform devices. Convert
all in-tree users that manually assigned dev.of_node or dev.fwnode, fixing a
pre-existing refcount bug in powermac. Switch to counting references of all
firmware node types, not only OF nodes.
- Unify the release path for dynamically allocated platform devices by
removing platform_device_release_full(). Amend the fwnode setter API
contract to warn if a primary software node is overwritten. Add KUnit tests
for correct software node removal on device unregistration.
- Rust:
- Auxiliary:
- Add registration_data_with() closure-based API for invariant ForLt types.
- Debugfs:
- Migrate BinaryWriter and BinaryReaderMut trait requirements from
kernel::transmute traits to zerocopy traits.
- Device:
- Add BoundInternal device context and InternalBoundContext trait for bus
abstractions that need internal access to a bound device.
- Make the lifetime on Core and CoreInternal invariant to prevent coercion
to shorter lifetimes.
- Devres:
- Fix race between concurrent revokers where the losing revoker could return
before the winning revoker finished dropping the inner data, causing
use-after-free.
- Ensure revocation is complete before the device finishes unbinding by
making the synchronization bidirectional.
- Add DevresLt<F: ForLt>, a wrapper around Devres that shortens 'static back
to the caller's borrow scope. Implement ForLt and CovariantForLt for Bar,
IoMem, and ExclusiveIoMem.
- Driver:
- Switch from index-based to pointer-based device ID info lookup, storing
static references in driver_data. Centralize device ID handling in
device_id.rs, removing the open-coded ACPI/OF matching logic and duplicate
ID table from driver.rs.
- I/O:
- Make I/O regions typed (with a dynamically-sized Region type for the
existing untyped case), create view types representing subregions of a
mapped I/O region, and add io_project!() for safely creating subviews.
- Split Io into a base trait (IoBase) and an extension trait (Io) with a
blanket implementation, preventing implementers from overriding provided
methods that unsafe code relies on.
- Add a SysMem backend for shared system memory with volatile access, and
make Coherent implement Io via an I/O view type. Add IoSysMap as sum type
of Mmio and SysMem. Add copying methods (memcpy_{from,to}io()) and
read_val()/write_val() for typed access.
- Replace dma_read!()/dma_write!() with io_read!()/io_write!() for
primitives and copying methods for aggregates; drop the old macros.
Convert nova-core to use I/O projection.
- Fix internal shortcut rule dispatch in the register!() macro, remove
unused rule arguments, and use path fragments for alias destinations.
- IRQ:
- Make irq::Registration compatible with lifetime-bound drivers by
removing the 'static bound on Handler/ThreadedHandler and
replacing Devres<RegistrationInner> with direct
request_irq()/free_irq() calls. Handlers can now directly own
lifetime-bound device resources.
- PCI:
- Convert IrqVectorRegistration to a lifetime-annotated owning type,
giving drivers explicit control over the allocation lifetime.
IrqVector embeds a resolved IrqRequest, making the conversion
infallible. Remove the redundant
request_irq()/request_threaded_irq() wrappers from pci::Device.
- Add pci_irq_type() C helper and expose it via irq_type() on
IrqVectorRegistration and IrqVector, returning PCI_IRQ_MSIX, PCI_IRQ_MSI,
or PCI_IRQ_INTX.
- Mark pci::Device refcount methods inline.
- Serdev:
- Add Rust abstractions for the serial device bus, including serdev::Driver
trait, serdev::Device wrapping struct serdev_device, and serdev::Adapter
implementing RegistrationOps. Includes a sample driver. Markus Probst
takes over as serdev maintainer for both C and Rust code.
- Misc:
- Split ForLt into a base trait (providing the Of<'a> GAT) and an unsafe
CovariantForLt subtrait guaranteeing covariance, enabling invariant types
(e.g. those containing Mutex<&'bound T>) to participate in the ForLt
abstraction.
- Fix Coherent read past EOF returning -ERANGE instead of zero.
- Fix firmware example UB by avoiding null-pointer ARef.
- misc:
- Avoid iattr allocation in kernfs listxattr by using kernfs_iattrs_noalloc().
- Unregister SoC bus on early device registration failure.
- Remove unused DMA_FENCE_TRACE Kconfig symbol.
- Fix /sys/module path in comment.
- Refactor ISA bus init to remove nested blocks.
- Remove redundant nodemask clears in numa_init().
- Add kernel-doc for fwnode_operations and sys_soc.h, mark internal property
data as private for kernel-doc, and add property.h/fwnode.h to driver-api
infrastructure docs.
- Add MAINTAINERS entry for sys_soc.h.
----------------------------------------------------------------
Alban Bedel (1):
software node: Fix software_node_get_reference_args() with index -1
Alexandre Courbot (3):
rust: io: register: dispatch shortcut rules internally
rust: io: register: remove unused rule arguments
rust: io: register: use path fragment for alias destination
Andy Shevchenko (1):
device property: Refactor to use RAII approach
Bartosz Golaszewski (32):
powerpc/powermac: fix OF node refcount
driver core: platform: provide platform_device_set_of_node()
driver core: platform: provide platform_device_set_fwnode()
driver core: platform: provide platform_device_set_of_node_from_dev()
driver core: update kerneldoc for platform_device_alloc()
of: platform: use platform_device_set_of_node()
powerpc/powermac: use platform_device_set_of_node()
i2c: pxa-pci: use platform_device_set_of_node()
iommu/fsl: use platform_device_set_of_node()
net: bcmgenet: use platform_device_set_of_node()
pmdomain: imx: use platform_device_set_of_node()
mfd: tps6586: use platform_device_set_of_node()
slimbus: qcom-ngd-ctrl: use platform_device_set_of_node()
net: mv643xx: use platform_device_set_of_node()
drm/xe/i2c: use platform_device_set_fwnode()
platform/surface: gpe: use platform_device_set_fwnode()
usb: chipidea: use platform_device_set_of_node_from_dev()
usb: musb: use platform_device_set_of_node_from_dev()
reset: rzg2l: use platform_device_set_of_node_from_dev()
driver core: platform: count references to all kinds of firmware nodes
kunit: provide a set of fwnode-oriented helpers
software node: add fw_devlink support
software node: add kunit tests for fw_devlink support
MAINTAINERS: add myself as reviewer of software node support
driver core: platform: amend the API contract for fwnode setters
platform/surface: gpe: use platform_device_register_full()
drm/xe/i2c: use device_create_managed_software_node()
driver core: platform: unify release path
driver core: platform: tests: add test cases for correct swnode removal
platform/surface: gpe: add missing err.h include
ACPI/APMT: use platform_device_set_fwnode()
ACPI/IORT: use platform_device_set_fwnode()
Chun-Yi Lee (1):
debugfs: Fix lockdown check for mmap_prepare
Danilo Krummrich (24):
rust: types: rename ForLt to CovariantForLt
rust: types: introduce ForLt base trait for CovariantForLt
rust: auxiliary: add registration_data_with() for ForLt types
rust: auxiliary: sample: demonstrate ForLt with invariant Mutex type
rust: devres: add DevresLt for ForLt-aware device resource access
rust: pci: return DevresLt from Bar::into_devres()
rust: io: mem: return DevresLt from IoMem/ExclusiveIoMem::into_devres()
Merge patch series "ForLt/CovariantForLt split, auxiliary closure API and DevresLt"
Merge patch series "rust: I/O type generalization and projection"
rust: devres: fix race between concurrent revokers
rust: devres: ensure revocation is complete before device finishes unbinding
Merge patch series "software node: provide support for fw_devlink"
rust: device: add BoundInternal device context and InternalBoundContext trait
rust: device: move drvdata_borrow() to InternalBoundContext
fwnode: add missing kernel-doc for struct fwnode_operations members
MAINTAINERS: add sys_soc.h to DRIVER CORE
rust: irq: make Registration compatible with lifetime-bound drivers
Merge tag 'v7.2-rc7' into driver-core-next
rust: serdev: use ThisModule::as_ptr() instead of field access
rust: pci: convert IrqVectorRegistration to a lifetime-managed owning type
rust: pci: resolve IRQ in index() and embed IrqRequest in IrqVector
rust: pci: remove request_irq() and request_threaded_irq() from Device
PCI: Add pci_irq_type() to query the allocated interrupt type
rust: pci: expose the allocated interrupt type
David Laight (1):
kernfs: Replace strcpy(s, "../") with memcpy(s, "../", 4)
Dmitry Antipov (1):
kernfs: simplify kernfs_name_hash()
Dmitry Torokhov (2):
firmware_loader: builtin: ignore 0-size firmware
firmware_loader: builtin: fail build on empty firmware
Ethan Plant (1):
rust: pci: Mark Device refcount methods inline
Ewan D. Milne (1):
drivers: base: Remove statistics group if encryption group not created
Francesco Valla (1):
driver core: add driver name to probe debug print
Gary Guo (33):
rust: io: add dynamically-sized `Region` type
rust: io: add missing safety requirement in `IoCapable` methods
rust: io: restrict untyped IO access and `register!` to `Region`
rust: io: implement `Io` on reference types instead
rust: io: generalize `MmioRaw` to pointer to arbitrary type
rust: io: rename `Mmio` to `MmioOwned`
rust: io: implement `Mmio` as view type
rust: pci: io: make `ConfigSpace` a view
rust: io: use view types instead of addresses for `Io`
pwm: th1520: remove unnecessary `deref`
rust: io: remove `MmioOwned`
rust: io: move `Io` methods to extension trait
rust: io: add projection macro and methods
rust: io: implement a view type for `Coherent`
rust: io: add `read_val` and `write_val` functions on `Io`
gpu: nova-core: use I/O projection for cleaner encapsulation
rust: dma: drop `dma_read!` and `dma_write!` API
rust: io: add copying methods
rust: io: implement `IoSysMap`
rust: device: make lifetime on `Core` and `CoreInternal` invariant
rust: io: document const-offset requirement for infallible accessors
samples: rust: debugfs: fix excessive stack use
rust: devres: use `cast_pin_init` instead of manual reimplementation
rust: driver: remove `IdTable::id`
rust: driver: simplify `IdArray::new_without_index`
rust: pci: use `Option<&IdInfo>` for device ID info
rust: usb: use `Option<&IdInfo>` for device ID info
rust: driver: centralize device ID handling
rust: driver: remove `$module_table_name` from `module_device_table`
rust: driver: store pointers in `DeviceId`
rust: driver: remove open-coded matching logic
rust: driver: remove duplicate ID table
rust: net/phy: remove expansion from doc
Geert Uytterhoeven (1):
base: Remove unused DMA_FENCE_TRACE Kconfig symbol
Guru Das Srinagesh (1):
samples: rust_dma: use vertical import style
Josef Ippisch (2):
rust: debugfs: migrate debugfs traits requirements to zerocopy
rust: debugfs: remove unsafe blocks from traits impl for Vec
Laura Nao (1):
rust: io: add I/O backend for system memory with volatile access
Link Mauve (1):
rust: io: fix example in `register!` macro
Manuel Ebner (1):
docs: ABI: sysfs-uevent: add missing bracket
Markus Probst (3):
rust: add basic serial device bus abstractions
samples: rust: add Rust serial device bus sample device driver
MAINTAINERS: serdev: Add self for serdev
Miguel Ojeda (1):
rust: firmware: avoid UB in example by passing parameter
Mukesh Ojha (1):
firmware_loader: do not queue completed sysfs fallback requests
Randy Dunlap (3):
device property: mark internal data as private for kernel-doc
base: soc: fixup sys_soc.h kernel-doc warnings
docs/driver-api: infrastructure: add property.h and fwnode.h
Sang-Heon Jeon (1):
arch_numa: remove redundant nodemask clears in numa_init()
Syed Nayyar Waris (1):
isa: refactor code to remove nested blocks
Thomas Weißschuh (4):
kobject: Provide macros to initialize 'struct kobj_attribute'
samples/kobject: Switch to the new __KOBJ_ATTR() macro
kobject: Allow the constification of kobject attributes
samples/kobject: Constify kobject attributes
Vincent Mailhol (3):
container_of: apply typeof_member() to container_of()
container_of: remove useless pair of parentheses
container_of: remove local __mptr variable
Xu Yang (4):
driver core: avoid repeatedly printing the same 'Fixed dependency' log
device property: fix infinite loop in fwnode_for_each_child_node()
of: kobj: export of_node_ktype for use by modules
device property: add test cases for fwnode_for_each_child_node()
Yichong Chen (1):
kernfs: avoid iattr allocation in listxattr
Yohei Kojima (1):
debugfs: warn if file creation failed due to uninitialized debugfs
Younes Akhouayri (2):
rust: irq: fix C header path in module docs
rust: dma: return zero for Coherent reads past EOF
Yuho Choi (2):
driver core: attribute_container: Unwind device_add() on attr failure
driver core: soc: Unregister bus on early device registration failure
Zenghui Yu (1):
driver core: fix path of /sys/module in comment
Documentation/ABI/testing/sysfs-uevent | 2 +-
Documentation/driver-api/infrastructure.rst | 4 +
MAINTAINERS | 9 +-
arch/powerpc/platforms/powermac/low_i2c.c | 2 +-
drivers/acpi/arm64/apmt.c | 2 +-
drivers/acpi/arm64/iort.c | 2 +-
drivers/acpi/bus.c | 6 +-
drivers/base/Kconfig | 9 -
drivers/base/arch_numa.c | 4 -
drivers/base/attribute_container.c | 7 +-
drivers/base/core.c | 8 +-
drivers/base/dd.c | 4 +-
drivers/base/firmware_loader/builtin/Makefile | 32 ++-
drivers/base/firmware_loader/builtin/main.c | 2 +
drivers/base/firmware_loader/fallback.c | 10 +
drivers/base/isa.c | 16 +-
drivers/base/module.c | 2 +-
drivers/base/platform.c | 90 ++++++-
drivers/base/property.c | 41 +--
drivers/base/soc.c | 15 +-
drivers/base/swnode.c | 81 +++++-
drivers/base/test/Kconfig | 6 +
drivers/base/test/Makefile | 2 +
drivers/base/test/platform-device-test.c | 180 +++++++++++++
drivers/base/test/property-entry-test.c | 137 ++++++++++
drivers/base/test/swnode-devlink-test.c | 337 +++++++++++++++++++++++
drivers/base/transport_class.c | 5 +-
drivers/cpufreq/rcpufreq_dt.rs | 1 -
drivers/gpu/drm/nova/driver.rs | 1 -
drivers/gpu/drm/tyr/driver.rs | 1 -
drivers/gpu/drm/xe/xe_i2c.c | 22 +-
drivers/gpu/drm/xe/xe_i2c.h | 1 -
drivers/gpu/nova-core/driver.rs | 7 +-
drivers/gpu/nova-core/gpu.rs | 6 +-
drivers/gpu/nova-core/gsp.rs | 53 ++--
drivers/gpu/nova-core/gsp/cmdq.rs | 66 +++--
drivers/gpu/nova-core/gsp/fw.rs | 82 ++----
drivers/i2c/busses/i2c-pxa-pci.c | 3 +-
drivers/iommu/fsl_pamu.c | 16 +-
drivers/mfd/tps6586x.c | 2 +-
drivers/net/ethernet/broadcom/genet/bcmmii.c | 3 +-
drivers/net/ethernet/marvell/mv643xx_eth.c | 2 +-
drivers/of/kobj.c | 3 +
drivers/of/platform.c | 2 +-
drivers/platform/surface/surface_gpe.c | 40 +--
drivers/pmdomain/imx/gpc.c | 3 +-
drivers/pwm/pwm_th1520.rs | 13 +-
drivers/reset/reset-rzg2l-usbphy-ctrl.c | 2 +-
drivers/slimbus/qcom-ngd-ctrl.c | 2 +-
drivers/tty/serdev/Kconfig | 7 +
drivers/usb/chipidea/core.c | 2 +-
drivers/usb/musb/jz4740.c | 2 +-
fs/debugfs/file.c | 3 +-
fs/debugfs/inode.c | 5 +-
fs/kernfs/dir.c | 4 +-
fs/kernfs/inode.c | 4 +-
fs/kernfs/symlink.c | 2 +-
include/acpi/acpi_bus.h | 11 -
include/kunit/fwnode.h | 29 ++
include/linux/container_of.h | 5 +-
include/linux/fwnode.h | 4 +
include/linux/kobject.h | 75 +++++-
include/linux/pci.h | 30 +++
include/linux/platform_device.h | 8 +
include/linux/property.h | 2 +
include/linux/sys_soc.h | 9 +-
lib/kobject.c | 8 +-
lib/kunit/Makefile | 1 +
lib/kunit/fwnode.c | 146 ++++++++++
rust/bindings/bindings_helper.h | 1 +
rust/helpers/acpi.c | 16 --
rust/helpers/helpers.c | 2 +-
rust/helpers/io.c | 13 +
rust/helpers/pci.c | 5 +
rust/helpers/serdev.c | 22 ++
rust/kernel/acpi.rs | 14 +-
rust/kernel/auxiliary.rs | 96 ++++---
rust/kernel/debugfs/traits.rs | 41 +--
rust/kernel/device.rs | 71 +++--
rust/kernel/device_id.rs | 196 +++++++-------
rust/kernel/devres.rs | 151 ++++++++++-
rust/kernel/dma.rs | 287 +++++++++++---------
rust/kernel/driver.rs | 137 +---------
rust/kernel/firmware.rs | 8 +-
rust/kernel/i2c.rs | 26 +-
rust/kernel/io.rs | 1519 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
rust/kernel/io/mem.rs | 94 ++++---
rust/kernel/io/poll.rs | 6 +-
rust/kernel/io/register.rs | 86 +++---
rust/kernel/irq.rs | 2 +-
rust/kernel/irq/request.rs | 432 ++++++++++++++----------------
rust/kernel/lib.rs | 5 +
rust/kernel/net/phy.rs | 66 +----
rust/kernel/of.rs | 14 +-
rust/kernel/pci.rs | 32 +--
rust/kernel/pci/io.rs | 203 ++++++++------
rust/kernel/pci/irq.rs | 210 +++++++--------
rust/kernel/platform.rs | 53 ++--
rust/kernel/ptr.rs | 12 +
rust/kernel/serdev.rs | 604 +++++++++++++++++++++++++++++++++++++++++
rust/kernel/types.rs | 5 +-
rust/kernel/types/for_lt.rs | 103 +++++--
rust/kernel/usb.rs | 24 +-
rust/macros/for_lt.rs | 41 ++-
rust/macros/lib.rs | 18 +-
samples/kobject/kobject-example.c | 24 +-
samples/rust/Kconfig | 11 +
samples/rust/Makefile | 1 +
samples/rust/rust_debugfs.rs | 5 +-
samples/rust/rust_debugfs_scoped.rs | 5 +-
samples/rust/rust_dma.rs | 25 +-
samples/rust/rust_driver_auxiliary.rs | 100 ++++---
samples/rust/rust_driver_i2c.rs | 3 -
samples/rust/rust_driver_pci.rs | 4 +-
samples/rust/rust_driver_platform.rs | 2 -
samples/rust/rust_driver_serdev.rs | 88 ++++++
samples/rust/rust_driver_usb.rs | 3 +-
samples/rust/rust_i2c_client.rs | 2 -
samples/rust/rust_soc.rs | 2 -
119 files changed, 4751 insertions(+), 1842 deletions(-)
create mode 100644 drivers/base/test/swnode-devlink-test.c
create mode 100644 include/kunit/fwnode.h
create mode 100644 lib/kunit/fwnode.c
delete mode 100644 rust/helpers/acpi.c
create mode 100644 rust/helpers/serdev.c
create mode 100644 rust/kernel/serdev.rs
create mode 100644 samples/rust/rust_driver_serdev.rs
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-18 19:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-18 19:19 [GIT PULL] Driver core changes for 7.3-rc1 Danilo Krummrich
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.