mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 19:16:02 +02:00
- 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.
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQS2q/xV6QjXAdC7k+1FlHeO1qrKLgUCaoSPugAKCRBFlHeO1qrK
LlBrAP958EaYZVyfAsqq0EyHv86ahXKWoDDvkwbRUZA5CfV9tAD/bMWVtPLRYaaq
eNEZT7p5w3Haezh61H3c5zpuwFNMTA0=
=VRIa
-----END PGP SIGNATURE-----
Merge tag 'driver-core-7.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
Pull driver core updates from Danilo Krummrich:
"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"
* tag 'driver-core-7.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core: (129 commits)
rust: pci: expose the allocated interrupt type
PCI: Add pci_irq_type() to query the allocated interrupt type
rust: pci: remove request_irq() and request_threaded_irq() from Device
rust: pci: resolve IRQ in index() and embed IrqRequest in IrqVector
rust: pci: convert IrqVectorRegistration to a lifetime-managed owning type
kernfs: avoid iattr allocation in listxattr
rust: serdev: use ThisModule::as_ptr() instead of field access
ACPI/IORT: use platform_device_set_fwnode()
ACPI/APMT: use platform_device_set_fwnode()
firmware_loader: do not queue completed sysfs fallback requests
rust: pci: Mark Device refcount methods inline
rust: irq: make Registration compatible with lifetime-bound drivers
rust: net/phy: remove expansion from doc
rust: dma: return zero for Coherent reads past EOF
rust: io: register: use path fragment for alias destination
rust: io: register: remove unused rule arguments
rust: io: register: dispatch shortcut rules internally
MAINTAINERS: add sys_soc.h to DRIVER CORE
rust: debugfs: remove unsafe blocks from traits impl for Vec
rust: debugfs: migrate debugfs traits requirements to zerocopy
...
|
||
|---|---|---|
| .. | ||
| 88pm80x.c | ||
| 88pm800.c | ||
| 88pm805.c | ||
| 88pm860x-core.c | ||
| 88pm860x-i2c.c | ||
| 88pm886.c | ||
| aat2870-core.c | ||
| ab8500-core.c | ||
| ab8500-sysctrl.c | ||
| abx500-core.c | ||
| ac100.c | ||
| acer-ec-a500.c | ||
| act8945a.c | ||
| adp5520.c | ||
| adp5585.c | ||
| altera-a10sr.c | ||
| altera-sysmgr.c | ||
| arizona-core.c | ||
| arizona-i2c.c | ||
| arizona-irq.c | ||
| arizona-spi.c | ||
| arizona.h | ||
| as3711.c | ||
| as3722.c | ||
| at91-usart.c | ||
| atc260x-core.c | ||
| atc260x-i2c.c | ||
| atmel-flexcom.c | ||
| atmel-hlcdc.c | ||
| atmel-smc.c | ||
| axp20x-i2c.c | ||
| axp20x-rsb.c | ||
| axp20x.c | ||
| bcm590xx.c | ||
| bcm2835-pm.c | ||
| bd9571mwv.c | ||
| bq257xx.c | ||
| cgbc-core.c | ||
| cros_ec_dev.c | ||
| cs40l50-core.c | ||
| cs40l50-i2c.c | ||
| cs40l50-spi.c | ||
| cs42l43-i2c.c | ||
| cs42l43-sdw.c | ||
| cs42l43.c | ||
| cs42l43.h | ||
| cs47l15-tables.c | ||
| cs47l24-tables.c | ||
| cs47l35-tables.c | ||
| cs47l85-tables.c | ||
| cs47l90-tables.c | ||
| cs47l92-tables.c | ||
| cs5535-mfd.c | ||
| da903x.c | ||
| da9052-core.c | ||
| da9052-i2c.c | ||
| da9052-irq.c | ||
| da9052-spi.c | ||
| da9055-core.c | ||
| da9055-i2c.c | ||
| da9062-core.c | ||
| da9063-core.c | ||
| da9063-i2c.c | ||
| da9063-irq.c | ||
| da9150-core.c | ||
| db8500-prcmu-regs.h | ||
| db8500-prcmu.c | ||
| dln2.c | ||
| ene-kb3930.c | ||
| exynos-lpass.c | ||
| fsl-imx25-tsadc.c | ||
| gateworks-gsc.c | ||
| hi655x-pmic.c | ||
| hi6421-pmic-core.c | ||
| hi6421-spmi-pmic.c | ||
| intel_pmc_bxt.c | ||
| intel_quark_i2c_gpio.c | ||
| intel_soc_pmic_bxtwc.c | ||
| intel_soc_pmic_chtdc_ti.c | ||
| intel_soc_pmic_chtwc.c | ||
| intel_soc_pmic_crc.c | ||
| intel_soc_pmic_mrfld.c | ||
| intel-lpss-acpi.c | ||
| intel-lpss-pci.c | ||
| intel-lpss.c | ||
| intel-lpss.h | ||
| intel-m10-bmc-core.c | ||
| intel-m10-bmc-pmci.c | ||
| intel-m10-bmc-spi.c | ||
| ioc3.c | ||
| ipaq-micro.c | ||
| iqs62x.c | ||
| janz-cmodio.c | ||
| Kconfig | ||
| kempld-core.c | ||
| khadas-mcu.c | ||
| lm3533-core.c | ||
| lm3533-ctrlbank.c | ||
| lochnagar-i2c.c | ||
| loongson-se.c | ||
| lp873x.c | ||
| lp3943.c | ||
| lp8788-irq.c | ||
| lp8788.c | ||
| lp87565.c | ||
| lpc_ich.c | ||
| lpc_sch.c | ||
| ls2k-bmc-core.c | ||
| macsmc.c | ||
| madera-core.c | ||
| madera-i2c.c | ||
| madera-spi.c | ||
| madera.h | ||
| Makefile | ||
| max7360.c | ||
| max8907.c | ||
| max8925-core.c | ||
| max8925-i2c.c | ||
| max8997-irq.c | ||
| max8997.c | ||
| max8998-irq.c | ||
| max8998.c | ||
| max14577.c | ||
| max77541.c | ||
| max77620.c | ||
| max77650.c | ||
| max77686.c | ||
| max77693.c | ||
| max77705.c | ||
| max77714.c | ||
| max77759.c | ||
| max77843.c | ||
| mc13xxx-core.c | ||
| mc13xxx-i2c.c | ||
| mc13xxx-spi.c | ||
| mc13xxx.h | ||
| mcp-core.c | ||
| mcp-sa11x0.c | ||
| menelaus.c | ||
| menf21bmc.c | ||
| mfd-core.c | ||
| motorola-cpcap.c | ||
| mp2629.c | ||
| mt6358-irq.c | ||
| mt6360-core.c | ||
| mt6370.c | ||
| mt6370.h | ||
| mt6397-core.c | ||
| mt6397-irq.c | ||
| mxs-lradc.c | ||
| nct6694.c | ||
| ntxec.c | ||
| ocelot-core.c | ||
| ocelot-spi.c | ||
| ocelot.h | ||
| omap-usb-host.c | ||
| omap-usb-tll.c | ||
| omap-usb.h | ||
| palmas.c | ||
| pf1550.c | ||
| qcom_rpm.c | ||
| qcom-pm8xxx.c | ||
| qcom-pm8008.c | ||
| qcom-spmi-pmic.c | ||
| qnap-mcu.c | ||
| rave-sp.c | ||
| rc5t583-irq.c | ||
| rc5t583.c | ||
| rdc321x-southbridge.c | ||
| retu-mfd.c | ||
| rk8xx-core.c | ||
| rk8xx-i2c.c | ||
| rk8xx-spi.c | ||
| rn5t618.c | ||
| rohm-bd718x7.c | ||
| rohm-bd9576.c | ||
| rohm-bd71828.c | ||
| rohm-bd96801.c | ||
| rsmu_core.c | ||
| rsmu_i2c.c | ||
| rsmu_spi.c | ||
| rsmu.h | ||
| rt4831.c | ||
| rt5033.c | ||
| rt5120.c | ||
| rz-mtu3.c | ||
| rz-mtu3.h | ||
| sec-acpm.c | ||
| sec-common.c | ||
| sec-core.h | ||
| sec-i2c.c | ||
| sec-irq.c | ||
| si476x-cmd.c | ||
| si476x-i2c.c | ||
| si476x-prop.c | ||
| simple-mfd-i2c.c | ||
| simple-mfd-i2c.h | ||
| sky81452.c | ||
| sm501.c | ||
| smpro-core.c | ||
| sprd-sc27xx-spi.c | ||
| ssbi.c | ||
| stm32-lptimer.c | ||
| stm32-timers.c | ||
| stmfx.c | ||
| stmpe-i2c.c | ||
| stmpe-spi.c | ||
| stmpe.c | ||
| stmpe.h | ||
| stpmic1.c | ||
| stw481x.c | ||
| sun4i-gpadc.c | ||
| sun6i-prcm.c | ||
| syscon.c | ||
| tc3589x.c | ||
| ti_am335x_tscadc.c | ||
| ti-lmu.c | ||
| timberdale.c | ||
| timberdale.h | ||
| tps6105x.c | ||
| tps6507x.c | ||
| tps6586x.c | ||
| tps6594-core.c | ||
| tps6594-i2c.c | ||
| tps6594-spi.c | ||
| tps65010.c | ||
| tps65086.c | ||
| tps65090.c | ||
| tps65217.c | ||
| tps65218.c | ||
| tps65219.c | ||
| tps65910.c | ||
| tps65911-comparator.c | ||
| tps65912-core.c | ||
| tps65912-i2c.c | ||
| tps65912-spi.c | ||
| tqmx86.c | ||
| twl-core.c | ||
| twl-core.h | ||
| twl4030-audio.c | ||
| twl4030-irq.c | ||
| twl4030-power.c | ||
| twl6030-irq.c | ||
| twl6040.c | ||
| ucb1x00-assabet.c | ||
| ucb1x00-core.c | ||
| ucb1x00-ts.c | ||
| upboard-fpga.c | ||
| vexpress-sysreg.c | ||
| viperboard.c | ||
| vx855.c | ||
| wcd934x.c | ||
| wm97xx-core.c | ||
| wm831x-auxadc.c | ||
| wm831x-core.c | ||
| wm831x-i2c.c | ||
| wm831x-irq.c | ||
| wm831x-otp.c | ||
| wm831x-spi.c | ||
| wm5102-tables.c | ||
| wm5110-tables.c | ||
| wm8350-core.c | ||
| wm8350-gpio.c | ||
| wm8350-i2c.c | ||
| wm8350-irq.c | ||
| wm8350-regmap.c | ||
| wm8400-core.c | ||
| wm8994-core.c | ||
| wm8994-irq.c | ||
| wm8994-regmap.c | ||
| wm8994.h | ||
| wm8997-tables.c | ||
| wm8998-tables.c | ||