From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04D1E192B85 for ; Tue, 28 Jan 2025 18:57:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738090645; cv=none; b=YeZdr5CPGaIwZzbYOqGJgBs74V33/U5enEPmS7SoMNqVu6fMNudN4TY0ODgRKG3GjUabHfsPTITmY5vsgavvnr3+BktGIBgozOi0r3qeCIu9lsOsZnISosIiGcROhe9XkyBUpGDO6MOzvHCqniQA3XaZIbTk1UyqwucZwQDIPf8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738090645; c=relaxed/simple; bh=kwcaSFSLz8klWde59bdrM+FldGFxhTVbTDGbdiW68eA=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=jQSIAsIn2bV69+TzGmFaZpCAIXwXO2US7uFFaFzXcj0NVd0pZ4T0x5A/Ils3d0iih/IQiJQBGitAGdGh5MAssR9oDoPC5thhGGL/Efi885+PLMncP8uyqGOpMQFUigI2p+U3uwUu3yMPKDCf+ACVTEzRGtSPPQ9TtC+IoIpJjGA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=ot1b1gig; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="ot1b1gig" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0AB6CC4CED3; Tue, 28 Jan 2025 18:57:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1738090644; bh=kwcaSFSLz8klWde59bdrM+FldGFxhTVbTDGbdiW68eA=; h=Date:From:To:Cc:Subject:From; b=ot1b1gigxKD0kRa83VxblwlCpSs+0HWJ7z3Ytn4KmMcWyFneLLq9HIQQOxgjYE6F1 UI5RyCxhy9Ne2BiD9PVyHs2gTuAxkL49yN1YnDgE2Qc/hAl5XRR/8Ufh5VkAVrRSTK AsQhWNZnckTOnX9kJcZlMtNq7Eez2z00esof9cnQ= Date: Tue, 28 Jan 2025 19:57:21 +0100 From: Greg KH To: Linus Torvalds , Andrew Morton Cc: linux-kernel@vger.kernel.org, Stephen Rothwell , Al Viro Subject: [GIT PULL] Driver core / debugfs updates for 6.14-rc1 Message-ID: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit The following changes since commit 5bc55a333a2f7316b58edc7573e8e893f7acb532: Linux 6.13-rc7 (2025-01-12 14:37:56 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git tags/driver-core-6.14-rc1 for you to fetch changes up to 01b3cb620815fc3feb90ee117d9445a5b608a9f7: rust: device: Use as_char_ptr() to avoid explicit cast (2025-01-16 11:07:27 +0100) ---------------------------------------------------------------- Driver core and debugfs updates Here is the big set of driver core and debugfs updates for 6.14-rc1. It's coming late in the merge cycle as there are a number of merge conflicts with your tree now, and I wanted to make sure they were working properly. To resolve them, look in linux-next, and I will send the "fixup" patch as a response to the pull request. Included in here is a bunch of driver core, PCI, OF, and platform rust bindings (all acked by the different subsystem maintainers), hence the merge conflict with the rust tree, and some driver core api updates to mark things as const, which will also require some fixups due to new stuff coming in through other trees in this merge window. There are also a bunch of debugfs updates from Al, and there is at least one user that does have a regression with these, but Al is working on tracking down the fix for it. In my use (and everyone else's linux-next use), it does not seem like a big issue at the moment. Here's a short list of the things in here: - driver core bindings for PCI, platform, OF, and some i/o functions. We are almost at the "write a real driver in rust" stage now, depending on what you want to do. - misc device rust bindings and a sample driver to show how to use them - debugfs cleanups in the fs as well as the users of the fs api for places where drivers got it wrong or were unnecessarily doing things in complex ways. - driver core const work, making more of the api take const * for different parameters to make the rust bindings easier overall. - other small fixes and updates All of these have been in linux-next with all of the aforementioned merge conflicts, and the one debugfs issue, which looks to be resolved "soon". Signed-off-by: Greg Kroah-Hartman ---------------------------------------------------------------- Al Viro (21): debugfs: separate cache for debugfs inodes debugfs: move ->automount into debugfs_inode_info debugfs: get rid of dynamically allocation proxy_ops debugfs: don't mess with bits in ->d_fsdata debugfs: allow to store an additional opaque pointer at file creation debugfs: take debugfs_short_fops definition out of ifdef carl9170: stop embedding file_operations into their objects b43: stop embedding struct file_operations into their objects b43legacy: make use of debugfs_get_aux() netdevsim: don't embed file_operations into your structs mediatek: stop messing with ->d_iname greybus/camera - stop messing with ->d_iname mtu3: don't mess wiht ->d_iname xhci: don't mess with ->d_iname qat: don't mess with ->d_name sof-client-ipc-flood-test: don't mess with ->d_name slub: don't mess with ->d_name arm_scmi: don't mess with ->d_parent->d_name octeontx2: don't mess with ->d_parent or ->d_parent->d_name orangefs-debugfs: don't mess with ->d_name saner replacement for debugfs_rename() Alice Ryhl (4): rust: miscdevice: access file in fops rust: miscdevice: access the `struct miscdevice` from fops->open() rust: miscdevice: add fops->show_fdinfo() hook miscdevice: rust: use build_error! macro instead of function Bartosz Golaszewski (1): mux: constify mux class Brian Norris (4): drivers: base: Don't match devices with NULL of_node/fwnode/etc drivers: base: test: Enable device model tests with KUNIT_ALL_TESTS drivers: base: test: Add ...find_device_by...(... NULL) tests kunit: platform: Resolve 'struct completion' warning Danilo Krummrich (19): rust: module: add trait `ModuleMetadata` rust: implement generic driver registration rust: implement `IdArray`, `IdTable` and `RawDeviceId` rust: types: add `Opaque::pin_init` rust: add `io::{Io, IoRaw}` base types rust: add devres abstraction rust: pci: add basic PCI device / driver abstractions rust: pci: implement I/O mappable `pci::Bar` samples: rust: add Rust PCI sample driver rust: of: add `of::DeviceId` abstraction rust: driver: implement `Adapter` rust: platform: add basic platform device / driver abstractions samples: rust: add Rust platform sample driver MAINTAINERS: add Danilo to DRIVER CORE rust: pci: do not depend on CONFIG_PCI_MSI rust: io: move module entry to its correct location rust: driver: address soundness issue in `RegistrationOps` devres: add devm_remove_action_nowarn() rust: devres: remove action in `Devres::drop` Dr. David Alan Gilbert (1): kobject: Remove unused functions Greg Kroah-Hartman (1): Merge 6.13-rc7 into driver-core-next Heiner Kallweit (1): drivers: core: remove device_link argument from class_compat_[create|remove]_link Kunwu Chan (1): ARM: riscpc: make ecard_bus_type constant Lee Jones (6): rust: miscdevice: Provide accessor to pull out miscdevice::this_device Documentation: ioctl-number: Carve out some identifiers for use by sample drivers samples: rust: Provide example using the new Rust MiscDevice abstraction samples: rust_misc_device: Demonstrate additional get/set value functionality MAINTAINERS: Add Rust Misc Sample to MISC entry samples: rust_misc_device: Provide an example C program to exercise functionality Randy Dunlap (1): devcoredump: cleanup some comments Ricardo B. Marliere (1): bus: fsl-mc: constify the struct device_type usage Thomas Weißschuh (10): kheaders: Simplify attribute through __BIN_ATTR_SIMPLE_RO() kernel/ksysfs.c: simplify bin_attribute definition MAINTAINERS: add include/linux/sysfs.h sysfs: constify macro BIN_ATTRIBUTE_GROUPS() sysfs: constify bin_attribute argument of sysfs_bin_attr_simple_read() btf: Switch vmlinux BTF attribute to sysfs_bin_attr_simple_read() btf: Switch module BTF attribute to sysfs_bin_attr_simple_read() firmware_loader: Constify 'struct bin_attribute' devcoredump: Define 'struct bin_attribute' through macro devcoredump: Constify 'struct bin_attribute' Viresh Kumar (3): rust: device: Add property_present() rust: device: Replace CString with CStr in property_present() rust: device: Use as_char_ptr() to avoid explicit cast Wedson Almeida Filho (2): rust: add rcu abstraction rust: add `Revocable` type Zijun Hu (20): libnvdimm: Replace namespace_match() with device_find_child_by_name() slimbus: core: Constify slim_eaddr_equal() bus: fsl-mc: Constify fsl_mc_device_match() driver core: Constify API device_find_child() and adapt for various usages driver core: Simplify API device_find_child_by_name() implementation driver core: Remove match_any() slimbus: core: Remove of_slim_match_dev() gpio: sim: Remove gpio_sim_dev_match_fwnode() driver core: Introduce an device matching API device_match_type() cxl/pmem: Replace match_nvdimm_bridge() with API device_match_type() cxl/pmem: Remove is_cxl_nvdimm_bridge() usb: typec: class: Remove both cable_match() and partner_match() driver core: class: Fix wild pointer dereferences in API class_dev_iter_next() blk-cgroup: Fix class @block_class's subsystem refcount leakage driver core: Move true expression out of if condition in 3 device finding APIs driver core: Rename declaration parameter name for API device_find_child() cluster driver core: Correct parameter check for API device_for_each_child_reverse_from() driver core: Correct API device_for_each_child_reverse_from() prototype driver core: Introduce device_iter_t for device iterating APIs driver core: Move two simple APIs for finding child device to header Documentation/filesystems/debugfs.rst | 12 +- Documentation/userspace-api/ioctl/ioctl-number.rst | 1 + MAINTAINERS | 12 + arch/arm/include/asm/ecard.h | 2 +- arch/arm/mach-rpc/ecard.c | 2 +- arch/powerpc/platforms/powernv/opal.c | 2 +- arch/sparc/kernel/vio.c | 6 +- block/blk-cgroup.c | 1 + drivers/base/bus.c | 9 +- drivers/base/class.c | 42 +- drivers/base/core.c | 83 ++-- drivers/base/devcoredump.c | 22 +- drivers/base/devres.c | 23 +- drivers/base/driver.c | 9 +- drivers/base/firmware_loader/sysfs.c | 14 +- drivers/base/test/Kconfig | 1 + drivers/base/test/platform-device-test.c | 41 +- drivers/block/sunvdc.c | 6 +- drivers/bus/fsl-mc/dprc-driver.c | 8 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 36 +- .../crypto/intel/qat/qat_common/adf_tl_debugfs.c | 36 +- drivers/cxl/core/hdm.c | 2 +- drivers/cxl/core/pci.c | 4 +- drivers/cxl/core/pmem.c | 15 +- drivers/cxl/core/region.c | 23 +- drivers/cxl/cxl.h | 1 - drivers/firewire/core-device.c | 4 +- drivers/firmware/arm_scmi/bus.c | 4 +- drivers/firmware/arm_scmi/raw_mode.c | 12 +- drivers/firmware/efi/dev-path-parser.c | 4 +- drivers/gpio/gpio-sim.c | 7 +- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +- drivers/hwmon/hwmon.c | 2 +- drivers/media/pci/mgb4/mgb4_core.c | 4 +- drivers/mux/core.c | 2 +- drivers/net/bonding/bond_debugfs.c | 9 +- drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c | 19 +- .../ethernet/marvell/octeontx2/af/rvu_debugfs.c | 76 ++-- drivers/net/ethernet/marvell/skge.c | 5 +- drivers/net/ethernet/marvell/sky2.c | 5 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +- drivers/net/netdevsim/hwstats.c | 29 +- drivers/net/wireless/ath/carl9170/debug.c | 28 +- drivers/net/wireless/broadcom/b43/debugfs.c | 27 +- drivers/net/wireless/broadcom/b43legacy/debugfs.c | 26 +- drivers/nvdimm/bus.c | 2 +- drivers/nvdimm/claim.c | 9 +- drivers/of/unittest-data/tests-platform.dtsi | 5 + drivers/opp/debugfs.c | 10 +- drivers/phy/mediatek/phy-mtk-tphy.c | 40 +- drivers/pwm/core.c | 2 +- drivers/rpmsg/rpmsg_core.c | 4 +- drivers/s390/cio/chp.c | 28 +- drivers/scsi/qla4xxx/ql4_os.c | 3 +- drivers/scsi/scsi_transport_iscsi.c | 10 +- drivers/slimbus/core.c | 17 +- drivers/staging/greybus/camera.c | 17 +- drivers/thunderbolt/retimer.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/tty/serial/serial_core.c | 4 +- drivers/usb/host/xhci-debugfs.c | 25 +- drivers/usb/mtu3/mtu3_debugfs.c | 40 +- drivers/usb/typec/class.c | 31 +- drivers/vfio/mdev/mdev_core.c | 4 +- fs/debugfs/file.c | 165 ++++---- fs/debugfs/inode.c | 202 +++++----- fs/debugfs/internal.h | 48 ++- fs/orangefs/orangefs-debugfs.c | 16 +- fs/sysfs/file.c | 2 +- include/kunit/platform_device.h | 1 + include/linux/debugfs.h | 44 ++- include/linux/device.h | 66 +++- include/linux/device/bus.h | 8 +- include/linux/device/class.h | 10 +- include/linux/device/driver.h | 2 +- include/linux/fsl/mc.h | 30 +- include/linux/kobject_ns.h | 2 - include/linux/sysfs.h | 6 +- include/scsi/scsi_transport_iscsi.h | 4 +- kernel/bpf/btf.c | 15 +- kernel/bpf/sysfs_btf.c | 12 +- kernel/kheaders.c | 19 +- kernel/ksysfs.c | 21 +- kernel/module/sysfs.c | 2 +- lib/kobject.c | 24 -- mm/shrinker_debug.c | 16 +- mm/slub.c | 13 +- net/dsa/dsa.c | 2 +- net/hsr/hsr_debugfs.c | 9 +- net/mac80211/debugfs_netdev.c | 11 +- net/wireless/core.c | 5 +- rust/bindings/bindings_helper.h | 4 + rust/helpers/device.c | 10 + rust/helpers/helpers.c | 5 + rust/helpers/io.c | 101 +++++ rust/helpers/pci.c | 18 + rust/helpers/platform.c | 13 + rust/helpers/rcu.c | 13 + rust/kernel/device.rs | 7 + rust/kernel/device_id.rs | 165 ++++++++ rust/kernel/devres.rs | 201 ++++++++++ rust/kernel/driver.rs | 188 +++++++++ rust/kernel/io.rs | 260 ++++++++++++ rust/kernel/lib.rs | 20 + rust/kernel/miscdevice.rs | 104 ++++- rust/kernel/of.rs | 60 +++ rust/kernel/pci.rs | 434 +++++++++++++++++++++ rust/kernel/platform.rs | 200 ++++++++++ rust/kernel/revocable.rs | 219 +++++++++++ rust/kernel/sync.rs | 1 + rust/kernel/sync/rcu.rs | 47 +++ rust/kernel/types.rs | 11 + rust/macros/module.rs | 4 + samples/rust/Kconfig | 31 ++ samples/rust/Makefile | 3 + samples/rust/rust_driver_pci.rs | 110 ++++++ samples/rust/rust_driver_platform.rs | 49 +++ samples/rust/rust_misc_device.rs | 238 +++++++++++ sound/soc/sof/sof-client-ipc-flood-test.c | 39 +- tools/testing/cxl/test/cxl.c | 2 +- 120 files changed, 3256 insertions(+), 995 deletions(-) create mode 100644 rust/helpers/device.c create mode 100644 rust/helpers/io.c create mode 100644 rust/helpers/pci.c create mode 100644 rust/helpers/platform.c create mode 100644 rust/helpers/rcu.c create mode 100644 rust/kernel/device_id.rs create mode 100644 rust/kernel/devres.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/io.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pci.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/sync/rcu.rs create mode 100644 samples/rust/rust_driver_pci.rs create mode 100644 samples/rust/rust_driver_platform.rs create mode 100644 samples/rust/rust_misc_device.rs