Messages in this thread |  | | Date | Fri, 05 Dec 2025 22:50:06 +1300 | | From | "Danilo Krummrich" <> | | Subject | [GIT PULL] Driver core changes for 6.19-rc1 |
| |
Hi Linus,
Please pull these driver-core changes.
There are a few conflicts with other trees: There are in total four minor import conflicts with the DRM and Rust trees. Additionally, there is a conflict with the tip tree replacing Rust native atomics in the debugfs code (the resolution in linux-next should be fine).
In order to avoid non-trivial conflicts, the PR also contains a few patches usually going through other trees, i.e. the introduction of I2C Rust infrastructure, a few uaccess patches, as well as one (more minor) patch each of FS, pin-init and timekeeping.
All changes have been in linux-next for at least five rounds; two (rather trivial) regression fixes [1][2] for two rounds.
- Danilo
[1] https://patch.msgid.link/20251202070927.14198-1-dev@null.aaront.org [2] https://patch.msgid.link/20251202210501.40998-1-dakr@kernel.org
The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:
Linux 6.18-rc3 (2025-10-26 15:59:49 -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-6.19-rc1
for you to fetch changes up to 473b9f331718267815649cd93801da832200db71:
rust: pci: fix build failure when CONFIG_PCI_MSI is disabled (2025-12-04 00:24:47 +1300)
---------------------------------------------------------------- Driver core changes for 6.19-rc1
- Arch Topology: - Move parse_acpi_topology() from arm64 to common code for reuse in RISC-V
- CPU: - Expose housekeeping CPUs through /sys/devices/system/cpu/housekeeping - Print a newline (or 0x0A) instead of '(null)' reading /sys/devices/system/cpu/nohz_full when nohz_full= is not set
- debugfs - Remove (broken) 'no-mount' mode - Remove redundant access mode checks in debugfs_get_tree() and debugfs_create_*() functions
- Devres: - Remove unused devm_free_percpu() helper - Move devm_alloc_percpu() from device.h to devres.h
- Firmware Loader: - Replace simple_strtol() with kstrtoint() - Do not call cancel_store() when no upload is in progress
- kernfs: - Increase struct super_block::maxbytes to MAX_LFS_FILESIZE - Fix a missing unwind path in __kernfs_new_node()
- Misc: - Increase the name size in struct auxiliary_device_id to 40 characters - Replace system_unbound_wq with system_dfl_wq and add WQ_PERCPU to alloc_workqueue()
- Platform: - Replace ERR_PTR() with IOMEM_ERR_PTR() in platform ioremap functions
- Rust: - Auxiliary: - Unregister auxiliary device on parent device unbind - Move parent() to impl Device; implement device context aware parent() for Device<Bound> - Illustrate how to safely obtain a driver's device private data when calling from an auxiliary driver into the parant device driver
- DebugFs: - Implement support for binary large objects
- Device: - Let probe() return the driver's device private data as pinned initializer, i.e. impl PinInit<Self, Error> - Implement safe accessor for a driver's device private data for Device<Bound> (returned reference can't out-live driver binding and guarantees the correct private data type) - Implement AsBusDevice trait, to be used by class device abstractions to derive the bus device type of the parent device
- DMA: - Store raw pointer of allocation as NonNull - Use start_ptr() and start_ptr_mut() to inherit correct mutability of self
- FS: - Add file::Offset type alias
- I2C: - Add abstractions for I2C device / driver infrastructure - Implement abstractions for manual I2C device registrations
- I/O: - Use "kernel vertical" style for imports - Define ResourceSize as resource_size_t - Move ResourceSize to top-level I/O module - Add type alias for phys_addr_t - Implement Rust version of read_poll_timeout_atomic()
- PCI: - Use "kernel vertical" style for imports - Move I/O and IRQ infrastructure to separate files - Add support for PCI interrupt vectors - Implement TryInto<IrqRequest<'a>> for IrqVector<'a> to convert an IrqVector bound to specific pci::Device into an IrqRequest bound to the same pci::Device's parent Device - Leverage pin_init_scope() to get rid of redundant Result in IRQ methods
- PinInit: - Add {pin_}init_scope() to execute code before creating an initializer
- Platform: - Leverage pin_init_scope() to get rid of redundant Result in IRQ methods
- Timekeeping: - Implement abstraction of udelay()
- Uaccess: - Implement read_slice_partial() and read_slice_file() for UserSliceReader - Implement write_slice_partial() and write_slice_file() for UserSliceWriter
- sysfs - Prepare the constification of struct attribute
---------------------------------------------------------------- Aaron Thompson (3): debugfs: Remove redundant access mode checks debugfs: Remove broken no-mount mode debugfs: Fix default access mode config check
Aaron Tomlin (3): sysfs/cpu: Use DEVICE_ATTR_RO for nohz_full attribute tick/nohz: avoid showing '(null)' if nohz_full= not set tick/nohz: Expose housekeeping CPUs in sysfs
Alice Ryhl (4): rust: io: define ResourceSize as resource_size_t rust: io: move ResourceSize to top-level io module rust: scatterlist: import ResourceSize from kernel::io rust: io: add typedef for phys_addr_t
Andy Shevchenko (2): devres: Remove unused devm_free_percpu() devres: Move devm_alloc_percpu() and related to devres.h
Benno Lossin (1): add `[pin_]init_scope` to execute code before creating an initializer
Danilo Krummrich (32): rust: pci: implement TryInto<IrqRequest<'a>> for IrqVector<'a> rust: pci: move I/O infrastructure to separate file rust: pci: move IRQ infrastructure to separate file rust: driver: let probe() return impl PinInit<Self, Error> rust: device: narrow the generic of drvdata_obtain() rust: device: introduce Device::drvdata() rust: auxiliary: consider auxiliary devices always have a parent rust: auxiliary: unregister on parent device unbind rust: auxiliary: move parent() to impl Device rust: auxiliary: implement parent() for Device<Bound> samples: rust: auxiliary: misc cleanup of ParentDriver::connect() samples: rust: auxiliary: illustrate driver interaction rust: usb: fix broken call to T::disconnect() rust: fs: add file::Offset type alias rust: uaccess: add UserSliceReader::read_slice_partial() rust: uaccess: add UserSliceReader::read_slice_file() rust: uaccess: add UserSliceWriter::write_slice_partial() rust: uaccess: add UserSliceWriter::write_slice_file() rust: debugfs: support for binary large objects rust: debugfs: support blobs from smart pointers samples: rust: debugfs: add example for blobs rust: debugfs: support binary large objects for ScopedDir samples: rust: debugfs_scoped: add example for blobs rust: auxiliary: fix false positive warning for missing a safety comment rust: pci: get rid of redundant Result in IRQ methods rust: platform: get rid of redundant Result in IRQ methods rust: debugfs: Implement BinaryReader for Mutex<T> only when T is Unpin rust: io: cleanup imports and use "kernel vertical" style rust: pci: use "kernel vertical" style for imports rust: dma: make use of start_ptr() and start_ptr_mut() rust: dma: use NonNull<T> instead of *mut T rust: pci: fix build failure when CONFIG_PCI_MSI is disabled
FUJITA Tomonori (3): rust: simplify read_poll_timeout's example code rust: add udelay() function rust: Add read_poll_timeout_atomic function
Greg Kroah-Hartman (1): Merge 6.18-rc3 into driver-core-next
Igor Korotin (4): rust: i2c: add basic I2C device and driver abstractions rust: i2c: add manual I2C device creation abstractions samples: rust: add Rust I2C sample driver samples: rust: add Rust I2C client registration sample
Jane Chu (1): fs/kernfs: raise sb->maxbytes to MAX_LFS_FILESIZE
Joel Fernandes (1): rust: pci: Allocate and manage PCI interrupt vectors
Kaushlendra Kumar (2): firmware_loader: Only call cancel when upload is active firmware_loader: Replace simple_strtol() with kstrtoint()
Marco Crivellari (2): driver core: replace use of system_unbound_wq with system_dfl_wq driver core: WQ_PERCPU added to alloc_workqueue users
Markus Probst (1): rust: Add trait to convert a device reference to a bus device reference
Miguel Ojeda (1): rust: i2c: prepare for `core::ffi::CStr`
Pei Xiao (1): platform: Use IOMEM_ERR_PTR for ioremap error returns
Peter Colberg (3): rust: pci: refer to legacy as INTx interrupts rust: pci: normalise spelling of PCI BAR samples: rust: fix module name for Rust PCI driver sample
Raag Jadav (1): mod_devicetable: Bump auxiliary_device_id name size
Thomas Weißschuh (7): sysfs: attribute_group: allow registration of const attribute sysfs: transparently handle const pointers in ATTRIBUTE_GROUPS() sysfs: introduce __SYSFS_FUNCTION_ALTERNATIVE() sysfs: attribute_group: enable const variants of is_visible() samples/kobject: add is_visible() callback to attribute group samples/kobject: constify 'struct foo_attribute' sysfs: simplify attribute definition macros
Vincent Liu (1): driver core: Check drivers_autoprobe for all added devices
Will Rosenberg (1): kernfs: fix memory leak of kernfs_iattrs in __kernfs_new_node
Yunhui Cui (1): arch_topology: move parse_acpi_topology() to common code
Documentation/ABI/testing/sysfs-devices-system-cpu | 11 + Documentation/admin-guide/kernel-parameters.txt | 6 +- Documentation/driver-api/driver-model/devres.rst | 1 - MAINTAINERS | 10 + arch/arm64/include/asm/topology.h | 3 + arch/arm64/kernel/topology.c | 101 -------- drivers/base/arch_topology.c | 96 +++++++- drivers/base/base.h | 16 ++ drivers/base/bus.c | 3 +- drivers/base/core.c | 2 +- drivers/base/cpu.c | 26 +- drivers/base/dd.c | 12 +- drivers/base/devres.c | 25 -- drivers/base/firmware_loader/sysfs.c | 10 +- drivers/base/firmware_loader/sysfs_upload.c | 6 +- drivers/cpufreq/rcpufreq_dt.rs | 4 +- drivers/gpu/drm/nova/driver.rs | 4 +- drivers/gpu/drm/nova/file.rs | 2 +- drivers/gpu/drm/tyr/driver.rs | 4 +- drivers/gpu/nova-core/driver.rs | 42 ++-- fs/debugfs/inode.c | 36 +-- fs/debugfs/internal.h | 13 - fs/kernfs/dir.c | 5 +- fs/kernfs/mount.c | 1 + fs/sysfs/group.c | 10 +- include/linux/arch_topology.h | 5 + include/linux/device.h | 19 -- include/linux/device/devres.h | 17 ++ include/linux/mod_devicetable.h | 2 +- include/linux/platform_device.h | 6 +- include/linux/sysfs.h | 48 ++-- lib/Kconfig.debug | 9 +- rust/bindings/bindings_helper.h | 7 + rust/helpers/pci.c | 14 +- rust/helpers/time.c | 5 + rust/kernel/auxiliary.rs | 120 +++++---- rust/kernel/cpufreq.rs | 4 +- rust/kernel/debugfs.rs | 110 ++++++++- rust/kernel/debugfs/file_ops.rs | 146 ++++++++++- rust/kernel/debugfs/traits.rs | 238 +++++++++++++++++- rust/kernel/device.rs | 130 +++++++++- rust/kernel/devres.rs | 18 +- rust/kernel/dma.rs | 29 ++- rust/kernel/driver.rs | 4 +- rust/kernel/fs/file.rs | 5 + rust/kernel/i2c.rs | 586 ++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/io.rs | 32 ++- rust/kernel/io/mem.rs | 36 +-- rust/kernel/io/poll.rs | 93 ++++++- rust/kernel/io/resource.rs | 31 +-- rust/kernel/lib.rs | 2 + rust/kernel/pci.rs | 231 ++++------------- rust/kernel/pci/id.rs | 5 +- rust/kernel/pci/io.rs | 144 +++++++++++ rust/kernel/pci/irq.rs | 252 +++++++++++++++++++ rust/kernel/platform.rs | 63 +++-- rust/kernel/scatterlist.rs | 2 +- rust/kernel/time/delay.rs | 37 +++ rust/kernel/uaccess.rs | 85 +++++++ rust/kernel/usb.rs | 25 +- rust/pin-init/src/lib.rs | 87 +++++++ samples/kobject/kset-example.c | 44 ++-- samples/rust/Kconfig | 25 +- samples/rust/Makefile | 2 + samples/rust/rust_debugfs.rs | 34 ++- samples/rust/rust_debugfs_scoped.rs | 14 +- samples/rust/rust_dma.rs | 37 ++- samples/rust/rust_driver_auxiliary.rs | 59 +++-- samples/rust/rust_driver_i2c.rs | 74 ++++++ samples/rust/rust_driver_pci.rs | 53 ++-- samples/rust/rust_driver_platform.rs | 6 +- samples/rust/rust_driver_usb.rs | 5 +- samples/rust/rust_i2c_client.rs | 147 +++++++++++ 73 files changed, 2876 insertions(+), 720 deletions(-) create mode 100644 rust/kernel/i2c.rs create mode 100644 rust/kernel/pci/io.rs create mode 100644 rust/kernel/pci/irq.rs create mode 100644 samples/rust/rust_driver_i2c.rs create mode 100644 samples/rust/rust_i2c_client.rs
|  |