[<prev] [next>] [day] [month] [year] [list]
Message-Id: <DEQ6U11MLIQW.370OVLWEKUIKV@kernel.org>
Date: Fri, 05 Dec 2025 22:50:06 +1300
From: "Danilo Krummrich" <dakr@...nel.org>
To: "Linus Torvalds" <torvalds@...ux-foundation.org>
Cc: "Greg Kroah-Hartman" <gregkh@...uxfoundation.org>, "Rafael J. Wysocki"
<rafael@...nel.org>, "Saravana Kannan" <saravanak@...gle.com>, "Andrew
Morton" <akpm@...ux-foundation.org>, <rust-for-linux@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
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
Powered by blists - more mailing lists