summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-06-09btrfs: zoned: fix deadlock waiting for ticket during data relocationJohannes Thumshirn
When performing data relocation on a zoned filesystem, BTRFS can deadlock in handle_reserve_tickets(). The relocation process is waiting on a space reservation ticket that can never be fulfilled, because the relocation itself is the operation responsible for freeing up that space. Fix this by introducing a new flush state, BTRFS_RESERVE_FLUSH_ZONED_RELOCATION, specifically for data chunk allocation during zoned relocation. Like BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE, this state uses priority_reclaim_data_space() instead of the normal flushing path, which avoids re-entering the relocation code and breaking the deadlock cycle. In btrfs_alloc_data_chunk_ondemand(), select this new flush state when the inode belongs to a data relocation root on a zoned filesystem. Fixes: e2a7fd22378f ("btrfs: zoned: add zone reclaim flush state for DATA space_info") Reviewed-by: Boris Burkov <boris@bur.io> Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
2026-06-09btrfs: zoned: don't account data relocation space-info in statfs free spaceJohannes Thumshirn
Don't account the free space in a data relocation space-info sub-group as usable free space in statfs. This is misleading as no user allocations can be made in this space-info sub-group. It is only a target for relocation. Fixes: f92ee31e031c ("btrfs: introduce btrfs_space_info sub-group") Reviewed-by: Boris Burkov <boris@bur.io> Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
2026-06-09btrfs: zoned: always set data_relocation_bgJohannes Thumshirn
When searching for a data relocation block-group on mount, btrfs_zoned_reserve_data_reloc_bg() is looking for the first empty DATA block-group. But it first checks if the block-group is empty and if yes continues the search, and then checks if it is the first DATA block-group. There is actually no point in looking for the second empty DATA block group as new DATA allocations will just allocate a new chunk for it. Pick the first DATA block-group without any allocations done and set it as relocation block-group. At first, the commit 694ce5e143d6 ("btrfs: zoned: reserve data_reloc block group on mount") introduced the functionality. At that time, we took second unused (used == 0) block group, as the first one might be a block group used for normal data. Later, commit daa0fde32235 ("btrfs: zoned: fix data relocation block group reservation") switched to look for an empty block group (alloc_offset == 0). At this point, there is no reason taking the second one anymore. So, this commit is fixing an issue in commit daa0fde32235. Reviewed-by: Boris Burkov <boris@bur.io> Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
2026-06-09arm64: Kconfig: Add ASPEED SoC family Kconfig supportRyan Chen
Add support for ASPEED SoC family like ast27XX 8th generation ASPEED BMCs. Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Link: https://lore.kernel.org/r/20260609-upstream_ast2700-v9-2-f631752f0cb1@aspeedtech.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09dt-bindings: arm: aspeed: Add AST2700 board compatibleRyan Chen
Add device tree compatible string for AST2700 based boards ("aspeed,ast2700-evb" and "aspeed,ast2700") to the Aspeed SoC board bindings. This allows proper schema validation and enables support for AST2700 platforms. Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20260609-upstream_ast2700-v9-1-f631752f0cb1@aspeedtech.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'riscv-dt-for-v7.2' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into soc/dt Microchip RISC-V devicetrees for v7.2 This time around, there's nothing other than patches for Microchip boards. All of this is low priority fixes and cleanup, centred on the pic64gx and beaglev-fire boards. There is no new support added. Signed-off-by: Conor Dooley <conor.dooley@microchip.com> * tag 'riscv-dt-for-v7.2' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux: riscv: dts: microchip: remove redudant enabling of syscontroller riscv: dts: microchip: fix pic64gx gpio interrupt-cells riscv: dts: microchip: add gpio line names on beaglev-fire riscv: dts: microchip: add adc interrupt on beaglev-fire riscv: dts: microchip: clean up beaglev-fire regulator node names riscv: dts: microchip: remove gpio hogs from beaglev-fire riscv: dts: microchip: gpio controllers on mpfs need 2 interrupt cells riscv: dts: microchip: sort pic64gx i2c nodes alphanumerically riscv: dts: microchip: update pic64gx gpio interrupts to better match the SoC riscv: dts: microchip: add tsu clock to macb on pic64gx Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09ASoC: cs35l56: Increase pm_runtime autosuspend delayRichard Fitzgerald
Increase the pm_runtime autosuspend delay to be longer than the timeout of the firmware's own inactivity timer. There is no point attempting to pm_runtime suspend any sooner than the firmware idle timeout because it would only mean the driver has to poll waiting for the firmware idle. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://patch.msgid.link/20260609122946.288103-1-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-09block: propagate in_flight to whole disk on partition I/OTang Yizhou
Now when I/O is submitted to a partition, the per-CPU in_flight[] counter is incremented only on the partition's block_device, not on the underlying whole disk. This leads to a problem which can be shown by a fio test: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mydev 252:1 0 20G 0 disk └─mydev1 259:0 0 10G 0 part iostat -xp 1 Device r/s rkB/s ... aqu-sz %util mydev 128153.00 512612.00 ... 13.22 72.20 mydev1 128154.00 512616.00 ... 13.22 100.00 %util is different between mydev and mydev1, which is unexpected. This is the cumulative effect of a series of patches. The root cause is commit e016b78201a2 ("block: return just one value from part_in_flight"), which deleted the branch in part_in_flight() that aggregated the whole-disk in_flight count on top of the partition's. Then the second commit is commit 10ec5e86f9b8 ("block: merge part_{inc,dev}_in_flight into their only callers"), which folded the whole-disk in_flight accounting into generic_start_io_acct() and generic_end_io_acct(). Those two helpers were then removed by commit e722fff238bb ("block: remove generic_{start,end}_io_acct"), and from that point on the whole disk's in_flight is no longer accounted at all. In update_io_ticks(), if calling bdev_count_inflight() finds that the inflight value of the whole device is 0, the accumulation of io_ticks will be skipped, causing the reported util% value to be underestimated. Fix it by restoring the whole-disk in_flight accounting. Fixes: e016b78201a2 ("block: return just one value from part_in_flight") Suggested-by: Leon Hwang <leon.huangfu@shopee.com> Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Tang Yizhou <yizhou.tang@shopee.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20260526021555.359500-1-yizhou.tang@shopee.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-06-09Merge tag 'v7.2-rockchip-dts64-2' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt We've got basic camera support on RK3588! New peripherals RK3588 vicap plus camera addition to some boards, RK3528 USB and USB enablement on some boards, RGA3 support on RK3588. Missing EL2 virtual timer interrupt added to RK3588. Some more added peripherals for the Khadas Edge 2L board. * tag 'v7.2-rockchip-dts64-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip: arm64: dts: rockchip: Fix vcc_sdio regulator max voltage on Pinebook Pro arm64: dts: rockchip: Enable USB 2.0 ports on NanoPi Zero2 arm64: dts: rockchip: Enable USB 2.0 ports on ArmSoM Sige1 arm64: dts: rockchip: Enable USB ports on Radxa ROCK 2A/2F arm64: dts: rockchip: Enable USB 2.0 ports on Radxa E20C arm64: dts: rockchip: Add USB nodes for RK3528 arm64: dts: rockchip: enable adc button for Radxa E25 arm64: dts: rockchip: Add Bluetooth support for Khadas Edge 2L arm64: dts: rockchip: Enable USB for Khadas Edge 2L arm64: dts: rockchip: Disable removed devices from rk3399-nanopi-r4s arm64: dts: rockchip: Fix EEPROM compatible on rk3399-nanopi-r4s-enterprise arm64: dts: rockchip: add radxa camera 4k on rock 5b+ cam1 arm64: dts: rockchip: add radxa camera 4k on rock 5b+ cam0 arm64: dts: rockchip: add vicap node to rk3588 arm64: dts: rockchip: Add EL2 virtual timer interrupt arm64: dts: rockchip: add rga3 dt nodes to rk3588 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09PM: QoS: Fix misc device registration unwindYuho Choi
cpu_latency_qos_init() registers cpu_dma_latency first and, when CONFIG_PM_QOS_CPU_SYSTEM_WAKEUP is enabled, registers cpu_wakeup_latency afterwards. The second registration overwrites the first return value. As a result, a failure to register cpu_dma_latency can be masked if the second registration succeeds. Conversely, if cpu_dma_latency succeeds and cpu_wakeup_latency fails, the function returns an error while leaving the first misc device registered. Return immediately on the first registration failure and deregister cpu_dma_latency if the second registration fails. Fixes: a4e6512a79d8 ("PM: QoS: Introduce a CPU system wakeup QoS limit") Signed-off-by: Yuho Choi <dbgh9129@gmail.com> Link: https://patch.msgid.link/20260608170748.82273-1-dbgh9129@gmail.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-06-09virtio-blk: clamp zone report to the report buffer capacityMichael Bommarito
virtblk_report_zones() trusts the device-reported number of zones when walking the report buffer: nz = min_t(u64, virtio64_to_cpu(vblk->vdev, report->nr_zones), nr_zones); ... for (i = 0; i < nz && zone_idx < nr_zones; i++) { ret = virtblk_parse_zone(vblk, &report->zones[i], ...); The buffer is allocated by virtblk_alloc_report_buffer(), whose size is capped by the queue's max hardware sectors and max segments and can therefore hold fewer descriptors than nr_zones. nz is bounded only by the device-supplied report->nr_zones and the requested nr_zones, never by the buffer's descriptor capacity. At probe time the request count is unbounded (blk_revalidate_disk_zones() calls report_zones() with nr_zones == UINT_MAX), so the device-supplied report->nr_zones is the sole gate: a device that reports more zones than fit in the buffer drives the loop to read report->zones[i] past the end of the allocation. A malicious or buggy virtio-blk device that reports an inflated nr_zones triggers this during zone revalidation at probe. KASAN reports a vmalloc-out-of-bounds read in virtblk_report_zones() against the report buffer allocated a few lines earlier. Clamp nz to the number of descriptors that actually fit in the report buffer. Fixes: 95bfec41bd3d ("virtio-blk: add support for zoned block devices") Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Link: https://patch.msgid.link/20260607124834.3059944-1-michael.bommarito@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-06-09Merge tag 'hisi-arm64-dt-for-7.2' of https://github.com/hisilicon/linux-hisi ↵Arnd Bergmann
into soc/dt ARM64: DT: HiSilicon ARM64 DT updates for v7.2 - Move role-switch endpoint into connector on hi3660-hikey960 * tag 'hisi-arm64-dt-for-7.2' of https://github.com/hisilicon/linux-hisi: arm64: dts: hisilicon: hi3660-hikey960: move role-switch endpoint into connector Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'imx-dt-7.2' of ↵Arnd Bergmann
git://git.kernel.org/pub/scm/linux/kernel/git/frank.li/linux into soc/dt i.MX ARM device tree changes for 7.2: DT Binding Cleanup: - Replaced undocumented compatible strings with proper ones: * edt,edt-ft5x06 -> edt,edt-ft5206 * marvell,88E1510 -> ethernet-phy-ieee802.3-c22 * karo,imx6qdl-tx6-sgtl5000 -> simple-audio-card - Fixed incorrect VAR-SOM-MX6UL references (corrected to VAR-SOM-MX6) - Added missing required properties: * #phy-cells for usb-nop-xceiv * #io-channel-cells to ADC nodes * bus-type for ov5642/ov5640 cameras * ti,deskew = <0> for ti,tfp410 - Added missing supply properties (power-supply, vdd-supply, dvdd-supply, avdd-supply) - Removed redundant/empty properties (bus-width for video-mux, empty clock-names) - Fixed boolean property warnings and non-existent property references - Converted TS-4800 watchdog to DT schema - Renamed wdt nodes to watchdog for consistency New Features Added: - PCIe Root Port nodes and PERST property for imx6qdl, imx6sx, and imx7d - OV5645 camera support for imx7d-pico-pi - LVDS display panel support for imx6ul-var-som - WiFi and Bluetooth support for VAR-SOM boards - nvmem-layout support for imx7 - New bus bindings: fsl,aipi-bus and fsl,emi-bus - New board binding: variscite,var-som-imx6ull Code Refactoring: - VAR-SOM-MX6UL/ULL: factored out common parts for CPU variants - Separated audio, ethernet (ENET1/ENET2), and SD card support into reusable components * tag 'imx-dt-7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/frank.li/linux: (35 commits) dt-bindings: soc: imx: Add fsl,aipi-bus and fsl,emi-bus ARM: dts: freescale: add bootph-all to i.MX7ULP watchdog nodes ARM: dts: imx7: add nvmem-layout ARM: dts: imx7d-pico-pi: add OV5645 camera support ARM: dts: imx6-display5: replace marvell,88E1510 with ethernet-phy-ieee802.3-c22 ARM: dts: imx: replace undocumented compatible string edt,edt-ft5x06 with edt,edt-ft5206 ARM: dts: imx6qdl-tx6: remove undocumented karo,imx6qdl-tx6-sgtl5000 and keep only simple-audio-card ARM: dts: imx: Add bus-type for ov5642/ov5640 ARM: dts: imx: remove redundant bus-width for video-mux ARM: dts: imx: add (power|vdd)-supply for related node ARM: dts: imx53-ppd: add '#phy-cells' for usb-nop-xceiv ARM: dts: imx53-qsb: add dvdd and avdd supply for panel sii,43wvf1g ARM: dts: imx: add ti,deskew = <0> for ti,tfp410 ARM: dts: imx7d: Add Root Port node and PERST property ARM: dts: imx6sx: Add Root Port node and PERST property ARM: dts: imx6qdl: Add Root Port node and PERST property ARM: dts: nxp: imx51-ts4800: Rename wdt node to watchdog dt-bindings: watchdog: Convert TS-4800 to DT schema ARM: dts: imx6ul: add #io-channel-cells to ADC ARM: dts: imx25: remove empty clock-names for nand-controller@bb000000 ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'apple-soc-dt-7.2' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux into soc/dt Apple SoC DT update for 7.2 Add minimal device trees for all t8122 / base M3 based devices and some required new compatibles to the dt-bindings. These are enough to boot Linux on these devices to a simple serial console but future work is required to make these machines useful for end users. Signed-off-by: Sven Peter <sven@kernel.org> * tag 'apple-soc-dt-7.2' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux: arm64: dts: apple: Initial t8122 (M3) device trees dt-bindings: arm: apple: Add M3 based devices dt-bindings: pwm: apple,s5l-fpwm: Add t8122 compatible dt-bindings: power: apple,pmgr-pwrstate: Add t8122 compatible dt-bindings: arm: apple: apple,pmgr: Add t8122 compatible Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'ti-k3-dt-for-v7.2' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/dt TI K3 device tree updates for v7.2 SoC Specific Features and Fixes: J722S: - Use ti,j7200-padconf compatible for pad configuration - Add MCU and wakeup domain peripherals specific to J722S - Use J722S-specific compatibles for WIZ, gmii-sel and CPSW3G nodes Board Specific Features and Fixes: AM62x (Toradex Verdin): - Add display overlays: DSI-to-HDMI adapter, DSI-to-LVDS adapter with 10.1" panel, capacitive touch displays in 7" DSI, 10.1" DSI and 10.1" LVDS configurations, and Mezzanine with 10.1" LVDS display - Add NAU8822 Bridge Tied Load audio support - Add OV5640 CSI camera overlays - Add Verdin Mezzanine CAN overlay - Reserve UART_4 for Cortex-M4F use AM625: - Add support for TQ-Systems TQMa62xx SoM and MBa62xx carrier board, including new dt-bindings compatible strings AM62x (phyBOARD-Lyra): - Add DT overlay for Lincoln LCD185-101CT OLDI panel AM62-LP SK: - Add system-power-controller node AM62A7 SK: - Add bootph-all tag to vqmmc regulator for proper boot sequencing J721S2-som: - Add bootph-pre-ram property to PMIC-B for proper early boot sequencing * tag 'ti-k3-dt-for-v7.2' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux: arm64: dts: ti: k3-am62-verdin: Add Mezzanine with Toradex Display 10.1" LVDS arm64: dts: ti: k3-am62-verdin: Add Toradex Verdin Mezzanine CAN arm64: dts: ti: k3-am62-verdin: Add Toradex OV5640 CSI Cameras arm64: dts: ti: k3-am62-verdin: Reserve UART_4 for Cortex-M4F arm64: dts: ti: k3-am62-verdin: Add NAU8822 Bridge Tied Load arm64: dts: ti: k3-am62-verdin: Add Toradex Capacitive Touch Display 7" DSI arm64: dts: ti: k3-am62-verdin: Add Toradex Capacitive Touch Display 10.1" DSI arm64: dts: ti: k3-am62-verdin: Add Toradex Capacitive Touch Display 10.1" LVDS arm64: dts: ti: k3-am62-verdin: Add Toradex DSI to LVDS adapter with 10.1" display arm64: dts: ti: k3-j722s-main: use J722S compatibles for WIZ, gmii-sel and CPSW3G arm64: dts: ti: k3-am62-verdin: Add DSI to HDMI adapter overlay arm64: dts: ti: Add TQ-Systems TQMa62xx SoM and MBa62xx carrier board Device Trees dt-bindings: arm: ti: Add compatible for AM625-based TQMa62xx SOM family and carrier board arm64: dts: ti: am62-phyboard-lyra: Add DT overlay for Lincoln LCD185-101CT panel arm64: dts: ti: k3-j721s2-som-p0: add bootph-pre-ram property to PMIC-B arm64: dts: ti: k3-j722s: Add wakeup domain peripherals specific to J722S arm64: dts: ti: k3-j722s: Add mcu domain peripherals specific to J722S arm64: dts: ti: k3-j722s: Use ti,j7200-padconf compatible arm64: dts: ti: k3-am62-lp-sk: Add system-power-controller arm64: dts: ti: k3-am62a7-sk: Add bootph-all tag to vqmmc Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'arm-soc/for-7.2/devicetree' of ↵Arnd Bergmann
https://github.com/Broadcom/stblinux into soc/dt This pull request contains Broadcom ARM-based SoCs Device Tree changes for 7.2, please pull the following: - Rosen moves the Meraki MX6X pinctrl configuration to the PWM node where it belongs, also fixes the USB3 GPIO for the R6300v2 and EA6500v2 routers - Jinseok fixes a gpio label for the bcm2711 systems (Raspberry Pi 4) * tag 'arm-soc/for-7.2/devicetree' of https://github.com/Broadcom/stblinux: arm: dts: bcm2711: Fix typo in gpio-line-names ARM: dts: BCM5301X: EA6500v2: fix USB3 ARM: dts: BCM5301X: R6300v2: fix USB3 ARM: dts: NSP: Move MX6X pinctrl config to PWM node Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09Merge tag 'tegra-for-7.2-arm64-dt' of ↵Arnd Bergmann
git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt arm64: tegra: Changes for v7.2-rc1 This contains a fix for GPIO on Jetson AGX Thor and enables the PCIe controllers used on this platform. Smaug (a.k.a. Pixel C) devices can now be properly powered off via the PMIC. Miscellaneous improvements are made across a number of different boards, such as SMMU enablement on Tegra194 platforms and some better bootloader interoperation on Chromium-based devices. Finally, various minor fixes to device tree properties round off this set of changes. * tag 'tegra-for-7.2-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: arm64: tegra: Enable SMMU on Tegra194 display controllers Revert "arm64: tegra: Disable ISO SMMU for Tegra194" arm64: tegra: Add #{address,size}-cells to Chromium-based /firmware arm64: tegra: Fix aspm-l1-entry-delay-ns L1 latency cells arm64: tegra: Mark MAX77620 as system power controller on Smaug arm64: tegra: Enable PCIe for Jetson AGX Thor arm64: tegra: Fix address of Tegra264 main GPIO controller arm64: tegra: Add aspm-l1-entry-delay-ns to PCIe nodes arm64: tegra: Fix Tegra234 MGBE PTP clock Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-09PCI: imx6: Assert ref_clk_en after reference clock stabilizes on i.MX95Richard Zhu
According to the PHY Databook Common Block Signals section, the ref_clk_en signal must remain de-asserted until the reference clock is running at the appropriate frequency. Once the clock is stable, ref_clk_en can be asserted. For lower power states where the reference clock to the PHY is disabled, ref_clk_en should also be de-asserted. Move the ref_clk_en bit manipulation into imx95_pcie_enable_ref_clk() to ensure the reference clock stabilizes before ref_clk_en is asserted and before the PHY reset is de-asserted. This aligns with the timing requirements specified in the PHY documentation. Fixes: d8574ce57d76 ("PCI: imx6: Add external reference clock input mode support") Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Reviewed-by: Frank Li <Frank.Li@nxp.com> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20260518072715.3166514-3-hongxing.zhu@nxp.com
2026-06-09PCI: imx6: Configure REF_USE_PAD before PHY reset for i.MX95Richard Zhu
According to the i.MX95 PCIe PHY Databook, the ref_use_pad signal in the Common Block Signals section selects the reference clock source connected to the PHY pads. Per the specification, any change to this input must be followed by a PHY reset assertion to take effect. Move the REF_USE_PAD configuration before the PHY reset toggle to comply with the required initialization sequence. Fixes: 47f54a902dcd ("PCI: imx6: Toggle the core reset for i.MX95 PCIe") Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> [mani: renamed the callback and helper to match the usecase] Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20260518072715.3166514-2-hongxing.zhu@nxp.com
2026-06-09Merge branch 'bpf-enforce-btf-pointer-write-checks-for-global-args'Kumar Kartikeya Dwivedi
Nuoqi Gui says: ==================== bpf: Enforce BTF pointer write checks for global args check_mem_reg() verifies both read and write access when a caller passes memory into a global subprogram. For PTR_TO_BTF_ID callers, check_helper_mem_access() currently always checks the access as BPF_READ. That lets a tracing program pass a task_struct field pointer to a global subprogram argument typed as writable memory. The direct field store is rejected with "only read is supported", but the callee is validated with a generic writable PTR_TO_MEM argument and can store through it. Forward the requested access type into the PTR_TO_BTF_ID helper-access path and add verifier coverage for the global-subprogram argument case. Validation (tested on bpf-next 8496d9020ff3): Without this series: direct BTF field store rejected with "only read is supported"; global-subprogram candidate loaded, attached, and runtime-confirmed. With this series applied: direct BTF field store rejected with "only read is supported"; global-subprogram candidate rejected with "only read is supported". Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> --- ==================== Link: https://patch.msgid.link/20260609-f01-04-btf-writable-arg-v1-0-f449cd970669@mails.tsinghua.edu.cn Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2026-06-09selftests/bpf: Cover writable BTF field global subprog argsNuoqi Gui
Add a verifier test for passing a BTF-backed task_struct field pointer to a global subprogram argument typed as writable memory. The direct field store is already rejected. The global subprogram path should be rejected too. The callee must not lose the BTF pointer's read-only provenance. It must not validate the argument as ordinary writable memory. Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> Link: https://lore.kernel.org/bpf/20260609-f01-04-btf-writable-arg-v1-2-f449cd970669@mails.tsinghua.edu.cn Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2026-06-09bpf: Enforce write checks for BTF pointer helper accessNuoqi Gui
check_mem_reg() verifies both read and write access for global subprogram memory arguments. When the caller register is PTR_TO_BTF_ID, check_helper_mem_access() currently forwards the access to check_ptr_to_btf_access() as BPF_READ regardless of the requested access type. This lets a BTF-backed kernel object field pointer pass the caller-side writable memory check for a global subprogram argument. The callee is then validated with a generic writable PTR_TO_MEM argument and can store through it, even though an equivalent direct BTF field store is rejected with "only read is supported". Forward the requested access type to check_ptr_to_btf_access(). This enforces existing BTF write restrictions for global subprogram memory arguments as well. Fixes: 3e30be4288b3 ("bpf: Allow helpers access trusted PTR_TO_BTF_ID.") Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> Link: https://lore.kernel.org/bpf/20260609-f01-04-btf-writable-arg-v1-1-f449cd970669@mails.tsinghua.edu.cn Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2026-06-09KVM: s390: Document the KVM_CAP_S390_HPAGE_2G capabilityClaudio Imbrenda
Document the KVM_CAP_S390_HPAGE_2G capability, which behaves very similarly to the existing KVM_CAP_S390_HPAGE_1M. Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-ID: <20260609150930.665370-5-imbrenda@linux.ibm.com>
2026-06-09KVM: s390: Allow for 2G hugepagesClaudio Imbrenda
Change gmap_2g_allowed() to perform the necessary checks to allow for 2G hugepages to be used, instead of returning false. The GMAP_FLAG_ALLOW_HPAGE_2G gmap flag is now taken into account. Also add appropriate kerneldoc comments. Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-ID: <20260609150930.665370-4-imbrenda@linux.ibm.com>
2026-06-09KVM: s390: Add capability to support 2G hugepagesClaudio Imbrenda
Add KVM_CAP_S390_HPAGE_2G to signal to userspace that 2G hugepages may be used to back the guest; restrictions apply similar to 1M hugepages. Enable the (for now still ignored) GMAP_FLAG_ALLOW_HPAGE_2G flag for the guest gmap, and propagate / disable it as necessary. Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-ID: <20260609150930.665370-3-imbrenda@linux.ibm.com>
2026-06-09KVM: s390: Add module parameter to fence 2G hugepagesClaudio Imbrenda
Add the hpage_2g module parameter to KVM to allow enabling or disabling 2G hugepages in KVM. If hpage_2g is enabled but hpage is not enabled, print a message and disable hpage_2g. Opportunistically fix the comment for the hpage module parameter. Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-ID: <20260609150930.665370-2-imbrenda@linux.ibm.com>
2026-06-09gpio: gpio-ltc4283: Add support for the LTC4283 Swap ControllerNuno Sá
The LTC4283 device has up to 8 pins that can be configured as GPIOs. Note that PGIO pins are not set as GPIOs by default so if they are configured to be used as GPIOs we need to make sure to initialize them to a sane default. They are set as inputs by default. Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20260502-ltc4283-support-v13-3-1c206542e652@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: ltc4283: Add support for the LTC4283 Swap ControllerNuno Sá
Support the LTC4283 Hot Swap Controller. The device features programmable current limit with foldback and independently adjustable inrush current to optimize the MOSFET safe operating area (SOA). The SOA timer limits MOSFET temperature rise for reliable protection against overstresses. An I2C interface and onboard ADC allow monitoring of board current, voltage, power, energy, and fault status. Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20260502-ltc4283-support-v13-2-1c206542e652@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09timers/migration: Temporarily disable per capacity hierarchiesFrederic Weisbecker
Some workloads with different CPU capacities consume more power with timer migration than before. The recently introduced per capacity hierarchies were supposed to alleviate this problem. However it appears to also regress other types of workloads, especially when plenty of capacities live together in the same machine. Disable the feature until a reasonable solution is found. Fixes: 098cbaad8e57 ("timers/migration: Split per-capacity hierarchies") Reported-by: Christian Loehle <christian.loehle@arm.com> Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Link: https://patch.msgid.link/20260609123356.28449-1-frederic@kernel.org Closes: https://lore.kernel.org/all/3b79338f-6cfc-4722-8062-9103db2c8ad1@arm.com
2026-06-09Merge tag 'mm-hotfixes-stable-2026-06-08-20-51' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Pull misc fixes from Andrew Morton: "11 hotfixes. 9 are for MM. 8 are cc:stable and the remaining 3 address post-7.1 issues or aren't considered suitable for backporting. Thre's a two-patch series "mm/damon/{reclaim,lru_sort}: handle ctx allocation failures" from SeongJae Park which fixes a couple of DAMON -ENOMEM bloopers. The rest are singletons - please see the individual changelogs for details" * tag 'mm-hotfixes-stable-2026-06-08-20-51' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: mm/mincore: handle non-swap entries before !CONFIG_SWAP guard arm64: mm: call pagetable dtor when freeing hot-removed page tables mm/list_lru: drain before clearing xarray entry on reparent mm/huge_memory: use correct flags for device private PMD entry mm/damon/lru_sort: handle ctx allocation failure mm/damon/reclaim: handle ctx allocation failure zram: fix use-after-free in zram_bvec_write_partial() MAINTAINERS: update Baoquan He's email address tools headers UAPI: sync linux/taskstats.h for procacct.c mm/cma_sysfs: skip inactive CMA areas in sysfs ipc/shm: serialize orphan cleanup with shm_nattch updates
2026-06-09dt-bindings: hwmon: Document the LTC4283 Swap ControllerNuno Sá
The LTC4283 is a negative voltage hot swap controller that drives an external N-channel MOSFET to allow a board to be safely inserted and removed from a live backplane. Special note for the "adi,vpower-drns-enable" property. It allows to choose between the attenuated MOSFET drain voltage or the attenuated input voltage at the RTNS pin (effectively choosing between input or output power). This is a system level decision not really intended to change at runtime and hence is being added as a Firmware property. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20260502-ltc4283-support-v13-1-1c206542e652@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/xdp720) Fix driver issues xdp720/730Ashish Yadav
Fix driver issues: - Add the missing regulator and property files in include - Declare XDP720_DEFAULT_RIMON as unsigned constant - Declare struct pmbus_driver_info xdp720_info as constant Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com> Link: https://lore.kernel.org/r/20260609072231.15486-4-Ashish.Yadav@infineon.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/xdp720) Add support for efuse xdp730Ashish Yadav
Adds support for the Infineon XDP730 Digital eFuse Controller by updating the existing XDP720 driver. Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com> Link: https://lore.kernel.org/r/20260609072231.15486-3-Ashish.Yadav@infineon.com [groeck: Fixed conflicts in xdp720_id declaration] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09dt-bindings: hwmon/pmbus: Add Infineon xdp730Ashish Yadav
Add documentation for the device tree binding of the XDP730 eFuse. Rename node to efuse to accurately reflect its hardware function. Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20260609072231.15486-2-Ashish.Yadav@infineon.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (adt7462) Add of_match_table to support devicetreeKory Maincent
Add of_match_table to add support of devicetree probing. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> [rgantois: Removed of_match_ptr().] Signed-off-by: Romain Gantois <romain.gantois@bootlin.com> Link: https://lore.kernel.org/r/20260608-adt7462-bindings-v2-1-272982c40325@bootlin.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (asus-ec-sensors) add ROG MAXIMUS Z790 EXTREMEBrian Downey
Add support for ROG MAXIMUS Z790 EXTREME Signed-off-by: Brian Downey <bdowne01@gmail.com> Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com> Link: https://lore.kernel.org/r/20260608060855.40469-1-eugene.shalygin@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/max20860a) Add driver for Analog Devices MAX20860ASyed Arif
Add a PMBus driver for the Analog Devices MAX20860A step-down DC-DC switching regulator. The MAX20860A provides monitoring of input/output voltage, output current, and temperature via the PMBus interface using linear data format. Optional regulator support is available via CONFIG_SENSORS_MAX20860A_REGULATOR. Signed-off-by: Syed Arif <arif.syed@hpe.com> Signed-off-by: Sanman Pradhan <psanman@juniper.net> Link: https://lore.kernel.org/r/20260601184516.919488-3-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09dt-bindings: hwmon: pmbus: Add Analog Devices MAX20860ASanman Pradhan
Add devicetree binding documentation for the Analog Devices MAX20860A step-down DC-DC switching regulator with PMBus interface. Signed-off-by: Sanman Pradhan <psanman@juniper.net> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20260601184516.919488-2-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus) Add support for Flex BMR316, BMR321, BMR350 and BMR351Daniel Nilsson
Add support for BMR316, BMR321, BMR350 and BMR351 DC/DC converter modules from Flex to the pmbus driver. Signed-off-by: Daniel Nilsson <linux@erq.se> Link: https://lore.kernel.org/r/20260603085712.659432-2-linux@erq.se [groeck: Resolved conflicts (explicit struct members in pmbus_id)] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: Use named initializers for platform_device_id arraysUwe Kleine-König (The Capable Hub)
Named initializers are better readable and more robust to changes of the struct definition. This robustness is relevant for a planned change to struct platform_device_id replacing .driver_data by an anonymous unit. While touching these arrays unify usage of commas. Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com> Link: https://lore.kernel.org/r/25d38df8db42d69f33fa30267c9fd5ea058223d0.1779894738.git.u.kleine-koenig@baylibre.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (cros_ec) Drop unused assignment of platform_device_id driver dataUwe Kleine-König (The Capable Hub)
The driver explicitly set the .driver_data member of struct platform_device_id to zero without relying on that value. Drop this unused assignments. While touching this array unify spacing and use named initializers for .name. Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com> Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org> Acked-by: Thomas Weißschuh <linux@weissschuh.net> Link: https://lore.kernel.org/r/972c9998054c7944f63266819d6fb08b36edb5c5.1779894738.git.u.kleine-koenig@baylibre.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (it87) Clamp negative values to zero in set_fan()Nikita Zhandarovich
set_fan() parses user input with kstrtol() and passes the resulting value to FAN16_TO_REG() on chips with 16-bit fan support. Negative fan speeds are not meaningful and should be rejected before conversion. Worst scenario, one may be able to abuse undefined behaviour of signed overflow to possibly induce rpm * 2 == 0 in FAN16_TO_REG(), thus causing a division by zero. Instead, clamp val < 0 to zero and keep the conversion in its valid input domain, avoiding unsafe arithmetic in the register conversion path. Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE. Fixes: 17d648bf5786 ("it87: Add support for the IT8716F") Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru> Link: https://lore.kernel.org/r/20260529141839.1639287-1-n.zhandarovich@fintech.ru Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (asus-ec-sensors) add ROG STRIX B850-E GAMING WIFIEugene Shalygin
The board has a similar sensor configuration to the ROG STRIX B850-I GAMING WIFI, but includes an additional T-Sensor header. The patch was provided via GitHub [1]. [1] https://github.com/zeule/asus-ec-sensors/pull/105 Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com> Link: https://lore.kernel.org/r/20260607123626.100630-1-eugene.shalygin@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (asus-ec-sensors) add ROG STRIX B650E-E GAMING WIFIVeronika Kossmann
Add support for ROG STRIX B650E-E GAMING WIFI Signed-off-by: Veronika Kossmann <nanodesuu@gmail.com> Co-developed-by: Oleg Tsvetkov <oleg-tsv@yandex.ru> Signed-off-by: Oleg Tsvetkov <oleg-tsv@yandex.ru> Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com> Link: https://lore.kernel.org/r/20260607110702.84599-2-eugene.shalygin@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (nct6683) Add support for ASRock Z890 Pro-AReiner Pröls
Add the ASRock Z890 Pro-A customer ID to the list of supported boards for the NCT6683 hardware monitoring driver. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Reiner Pröls <reiner.proels@gmail.com> Link: https://lore.kernel.org/r/20260521212632.223724-1-Reiner.Proels@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (adt7475) Add explicit header includeFlaviu Nistor
Since device_property_read_string() and similar functions defined in linux/property.h are used in the driver add explicit include for linux/mod_devicetable.h and linux/property.h rather than having implicit inclusions. Removed of_match_ptr() improving non-Device Tree compatibility of the driver and drop unnecessary __maybe_unused. Header linux/of.h can't be removed yet since macro is_of_node() is used. Signed-off-by: Flaviu Nistor <flaviu.nistor@gmail.com> Link: https://lore.kernel.org/r/20260522052352.12139-1-flaviu.nistor@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (lm63) expose PWM frequency and LUT hysteresis as writableJan-Henrik Bruhn
The driver caches the PWM frequency register and the CONFIG_FAN slow-clock select bit, but never lets userspace pick a different output frequency. Add a pwm1_freq sysfs attribute that selects the closest SCS + PFR combination for the requested value in Hz, gated by manual mode like set_pwm1(). PFR is clamped to 31 so that 2*PFR fits in the chip's 6-bit PWM register (matching the existing scaling assumption in show_pwm1). The hardware LUT hysteresis register is shared by all LUT entries, so the per-point pwm1_auto_pointN_temp_hyst attributes can't be made RW without N-to-1 cross-attribute side effects. Following the max31760 precedent, expose a single chip-wide pwm1_auto_point_temp_hyst attribute holding the hysteresis amount in millidegrees; the per-point attributes stay RO and continue to show the resulting absolute trip-down temperature for each entry. This was tested on a Linksys LGS328MPC switch hardware where the fan would not spin with the default PWM Frequency, which is why this change is required. Signed-off-by: Jan-Henrik Bruhn <kernel@jhbruhn.de> Link: https://lore.kernel.org/r/20260523133617.3439102-1-kernel@jhbruhn.de Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/adm1266) add rtc debugfs entryAbdurrahman Hussain
The driver seeds the chip's SET_RTC register once at probe with ktime_get_real_seconds(). Over a long uptime the chip's internal seconds counter drifts away from the host's wall-clock time, so the timestamp embedded in each blackbox record stops being meaningful in wall-clock terms. The datasheet recommends that the host periodically resynchronise the counter to address this; today the driver has no userspace-facing knob for that. Expose SET_RTC via an rtc debugfs file alongside the other adm1266 debugfs entries: read -- returns the chip's current SET_RTC seconds counter, so userspace can observe how far the chip has drifted from host wall-clock without writing anything. write -- the kernel re-reads ktime_get_real_seconds() itself and pushes it to the chip. The write payload is ignored; userspace does not get to supply its own timestamp value, so there is no way for it to push a wrong time into the chip. A small userspace agent (chrony hook, systemd-timesyncd dispatch script, or a periodic cron job) can write to this file to keep the chip's counter aligned with wall-clock across long uptimes. Both the read and write paths take pmbus_lock to serialise against the pmbus_core's own PAGE+register sequences and against the other adm1266 debugfs accessors that already run under the same lock. While at it, drop the now-redundant adm1266_set_rtc() probe-time helper. The new adm1266_rtc_set() callback does exactly the same byte-packing and write; probe just calls adm1266_rtc_set(client, 0) (the ignored @val argument) after pmbus_do_probe() so the pmbus_lock acquired by the new helper has a live mutex to take. Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai> Assisted-by: Claude-Code:claude-opus-4-7 Assisted-by: sashiko:gemini-3.1-pro-preview Link: https://lore.kernel.org/r/20260520-adm1266-v5-3-c72ef1fac1ea@nexthop.ai Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/adm1266) add powerup_counter debugfs entryAbdurrahman Hussain
The ADM1266 maintains a 16-bit non-volatile POWERUP_COUNTER register (0xE4, datasheet Rev. D, Table 93) that increments on every power cycle and cannot be reset by the host. Each blackbox record already embeds the counter at record time, so the standalone live value is primarily useful for matching a captured record back to the boot it came from when correlating logs. Expose it as a read-only debugfs file alongside sequencer_state. The block-read returns two payload bytes in little-endian order. Take pmbus_lock around the block-read so the access serialises with any pmbus_core sequence that sets PAGE on the device. Without it, a PAGE write from another thread could interleave between a PAGE set and a paged read elsewhere in the driver and corrupt either side's view of the device state machine. Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai> Assisted-by: Claude-Code:claude-opus-4-7 Assisted-by: sashiko:gemini-3.1-pro-preview Link: https://lore.kernel.org/r/20260520-adm1266-v5-2-c72ef1fac1ea@nexthop.ai Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2026-06-09hwmon: (pmbus/adm1266) add clear_blackbox debugfs entryAbdurrahman Hussain
The ADM1266 blackbox can be configured in two recording modes via BLACKBOX_CONFIG[0]: cyclic, where the device overwrites the oldest record once the 32-record buffer fills, and single, where it stops recording until the buffer is cleared. Deployments that need to preserve the full record history across multiple fault episodes typically run in single mode and need a way to clear the buffer after the records have been collected. Expose a write-only debugfs file alongside sequencer_state. Writing any data to it issues the documented clear-blackbox sub-command: a 2-byte block-write to READ_BLACKBOX (0xDE) with payload {0xFE, 0x00} (datasheet Rev. D). The clear is taken under pmbus_lock because READ_BLACKBOX is also used by adm1266_nvmem_read_blackbox() to walk records one at a time; both paths run under pmbus_lock so the clear cannot interleave mid-iteration and corrupt the read sequence. Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai> Assisted-by: Claude-Code:claude-opus-4-7 Assisted-by: sashiko:gemini-3.1-pro-preview Link: https://lore.kernel.org/r/20260520-adm1266-v5-1-c72ef1fac1ea@nexthop.ai Signed-off-by: Guenter Roeck <linux@roeck-us.net>