summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-06-01NFSD: Fix delegation reference leak in nfsd4_revoke_statesChuck Lever
When revoking delegation state, nfsd4_revoke_states() takes an extra reference on the stid before calling unhash_delegation_locked(). If unhash_delegation_locked() returns false (the delegation was already unhashed by a concurrent path), dp is set to NULL and revoke_delegation() is skipped, but the extra reference is never released. Each occurrence permanently pins the stid in memory. The leaked reference also prevents nfs4_put_stid() from decrementing cl_admin_revoked, leaving the counter permanently inflated. Drop the extra reference in the failure path. Fixes: 8dd91e8d31fe ("nfsd: fix race between laundromat and free_stateid") Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2026-06-01sunrpc: skip svc_xprt_enqueue when transport is busyChuck Lever
svc_xprt_resource_released() calls svc_xprt_enqueue() whenever XPT_DATA or XPT_DEFERRED is set. During RPC processing, svc_reserve_auth() reduces the reservation counter and triggers this path while the current thread still holds XPT_BUSY. The enqueue enters svc_xprt_ready(), executes an smp_rmb(), READ_ONCE(), and tracepoint, then returns false on seeing XPT_BUSY. Trace data from a 256KB NFSv3 WRITE workload over TCP shows this pattern generates roughly 195,000 wasted enqueue calls -- approximately one per RPC -- each paying the full svc_xprt_ready() cost for no benefit. Add a BUSY check alongside the existing DATA|DEFERRED check in svc_xprt_resource_released(). When the transport is BUSY, the holder will call svc_xprt_received() upon completion, which already checks for pending work flags and re-enqueues. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2026-06-01sunrpc: skip svc_xprt_enqueue in svc_xprt_received when idleChuck Lever
svc_xprt_received() unconditionally calls svc_xprt_enqueue() after clearing XPT_BUSY. When no work flags are pending, the enqueue traverses svc_xprt_ready() -- executing an smp_rmb(), READ_ONCE(), and tracepoint -- before returning false. Trace data from a 256KB NFSv3 workload over RDMA shows 85% of svc_xprt_received() invocations reach svc_xprt_enqueue() with no pending work flags. In the WRITE phase, 167,335 of 196,420 calls find no work; in the READ phase, 97,165 of 98,276. Each unnecessary call executes a memory barrier, a flags read, and (when tracing is active) fires the svc_xprt_enqueue tracepoint. Add a flags pre-check between clear_bit(XPT_BUSY) and svc_xprt_enqueue(). Both the clear and the subsequent READ_ONCE operate on the same xpt_flags word, so cache-line serialization of the atomic bitops ensures the read observes any flag set by a concurrent producer before the line was acquired for the clear. If a producer's set_bit occurs after the clear_bit, that producer's own svc_xprt_enqueue() call observes !XPT_BUSY and dispatches the transport. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2026-06-01sunrpc: skip svc_xprt_enqueue when no work is pendingChuck Lever
svc_reserve() and svc_xprt_release_slot() call svc_xprt_enqueue() after modifying xpt_reserved or xpt_nr_rqsts. The purpose is to re-dispatch the transport when write-space or a slot becomes available. However, when neither XPT_DATA nor XPT_DEFERRED is set, no thread can make progress on the transport and the enqueue accomplishes nothing. Trace data from a 256KB NFSv3 WRITE workload over RDMA shows 11.2 svc_xprt_enqueue() calls per RPC. Of these, 6.9 per RPC lack XPT_DATA and exit svc_xprt_ready() immediately after executing the smp_rmb(), READ_ONCE(), and tracepoint. svc_reserve() and svc_xprt_release_slot() account for roughly five of these per RPC. A new helper, svc_xprt_resource_released(), checks XPT_DATA | XPT_DEFERRED before calling svc_xprt_enqueue(). The existing smp_wmb() barriers are upgraded to smp_mb() to ensure the flags check observes a concurrent producer's set_bit(XPT_DATA). Each producer (svc_rdma_wc_receive, etc.) both sets XPT_DATA and calls svc_xprt_enqueue(), so even if the check reads a stale value, the producer's own enqueue provides a fallback path. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2026-06-01Merge remote-tracking branches 'vfs/vfs-7.2.casefold', ↵Chuck Lever
'vfs/vfs-7.2.directory.delegations' and 'vfs/vfs-7.2.exportfs' into vfs-7.2-merge
2026-06-01ASoC: spacemit: add K3 SoC supportMark Brown
Troy Mitchell <troy.mitchell@linux.spacemit.com> says: This series adds K3 SoC support for the SpacemiT I2S controller driver. Patch 1 adds the dt-bindings for the spacemit,k3-i2s compatible. The K3 SoC uses the same I2S IP as K1 but requires additional clocks (sysclk_div, c_sysclk, c_bclk) that are shared across multiple I2S controllers. Patch 2 adds driver support for K3 SoC with additional clocks. Link: https://patch.msgid.link/20260522-k3-i2s-v3-0-08e3eb811d93@linux.spacemit.com
2026-06-01ASoC: spacemit: add K3 SoC support with additional clocksTroy Mitchell
Add support for the SpacemiT K3 SoC I2S controller, which shares the same IP as K1 but requires additional clocks: sysclk_div, c_sysclk, and c_bclk. These clocks only exist on K3 and are not present on K1. The sysclk_div clock is present on most K3 I2S controllers except I2S1. The c_sysclk and c_bclk clocks are shared across multiple I2S controllers on K3. Use devm_clk_get_optional_enabled() to acquire these clocks so that the driver works on both K1 (where they are absent) and K3 without needing SoC-specific match data. For K3, the sysclk_div rate is set before sysclk in set_sysclk, and the common clock rates are configured in hw_params based on the sample rate. Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com> Link: https://patch.msgid.link/20260522-k3-i2s-v3-2-08e3eb811d93@linux.spacemit.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: dt-bindings: add SpacemiT K3 SoC compatibleTroy Mitchell
Add the spacemit,k3-i2s compatible string for the K3 SoC I2S controller. The K3 I2S IP is the same as K1 but requires additional clocks: a dedicated sysclk_div clock, along with common_sysclk and common_bclk which are shared across multiple I2S controllers on K3. Acked-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com> Link: https://patch.msgid.link/20260522-k3-i2s-v3-1-08e3eb811d93@linux.spacemit.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: aw88395: use struct_size() and __counted_by() for aw_containerRosen Penev
The firmware container allocations passed cont->size + sizeof(int) to kzalloc(), which was wrong: the struct contains an int len followed by a u8 data[] flexible array. It ended up being the same as the struct's size is only the int member but still wrong. Use the modern struct_size helper for this. Add __counted_by for extra runtime analysis. Assisted-by: Claude:Opus-4.7 Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260523011749.101555-1-rosenp@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ARM: dts: nxp: imx51-ts4800: Rename wdt node to watchdogEduard Bostina
The Technologic Systems TS-4800 watchdog node was previously named 'wdt', which violates the core watchdog.yaml schema expecting generic node names. Rename the node to 'watchdog' to fix the following dtbs_check warning: 'wdt' does not match '^(pmic|timer|watchdog)(@.*|-([0-9]|[1-9][0-9]+))?$' Signed-off-by: Eduard Bostina <egbostina@gmail.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-01dt-bindings: watchdog: Convert TS-4800 to DT schemaEduard Bostina
Convert the Technologic Systems TS-4800 watchdog timer bindings to DT schema. Signed-off-by: Eduard Bostina <egbostina@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-01ASoC: codecs: pcm3168a: Fix and updates for power managementMark Brown
Cezary Rojewski <cezary.rojewski@intel.com> says: Set of changes composed of one fix and two improvements. The fix leads the series and addresses "unbalanced disables" coming from the regulator core during S4 (hibernation) scenario. The SLEEP_PM_OPS are unset for the driver. Hibernation (S4) causes no resume (skipped thanks to smart_suspend=true) yet still performs the suspend sequence unconditionally, see device_complete() in drivers/base/power/main.c. In essence, we end up with double suspend (double disable) and thus the warning. Exemplary stack: unbalanced disables for regulator-dummy WARNING: drivers/regulator/core.c:3244 at _regulator_disable+0x161/0x270, CPU#6: kworker/u64:2/120 (...) Workqueue: pm pm_runtime_work RIP: 0010:_regulator_disable+0x161/0x270 (...) Call Trace: <TASK> regulator_bulk_disable+0xe4/0x220 ? __pfx_regulator_bulk_disable+0x10/0x10 ? pick_next_task_fair+0x36f/0x11f0 ? __pfx_regmap_unlock_mutex+0x10/0x10 ? regmap_unlock_mutex+0xe/0x20 pcm3168a_rt_suspend+0x57/0x90 [snd_soc_pcm3168a] ? __pfx_pcm3168a_rt_suspend+0x10/0x10 [snd_soc_pcm3168a] __rpm_callback+0x69/0x200 ? __pfx_pcm3168a_rt_suspend+0x10/0x10 [snd_soc_pcm3168a] rpm_callback+0xbc/0xd0 rpm_suspend+0x225/0x960 ? __pfx_rpm_suspend+0x10/0x10 ? __kasan_check_write+0x14/0x20 ? _raw_spin_lock_irq+0x8d/0xe0 ? __pfx__raw_spin_lock_irq+0x10/0x10 ? pwq_dec_nr_in_flight+0x63/0x4f0 pm_runtime_work+0xd0/0xf0 In regard to the improvements, both aim to drop redundant operations. One targets pm_runtime_idle() - no need to fire it manually, device-driver core will do that for us - while the second replaces preprocessor directive with pm_runtime_status_suspended() check. No !CONFIG_PM dependency equals better code coverege with default kconfigs. Link: https://patch.msgid.link/20260525201801.1336936-1-cezary.rojewski@intel.com
2026-06-01ASoC: codecs: pcm3168a: Drop CONFIG_PM-conditional preproc directiveCezary Rojewski
Revert changes done in commit 489db5d94150 ("ASoC: pcm3168a: Don't disable pcm3168a when CONFIG_PM defined") and add pm_runtime_status_suspended() check. The suspended-check addresses regulator's "unbalanced disables" warning during driver removal even when CONFIG_PM is enabled. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20260525201801.1336936-4-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: codecs: pcm3168a: Drop redundant pm_runtime_idle()Cezary Rojewski
Device-driver core runs pm_request_idle() right after the probing sequence already, see __driver_probe_device(). Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20260525201801.1336936-3-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: codecs: pcm3168a: Prevent regulator double-disable in S4Cezary Rojewski
The SLEEP_PM_OPS are unset for the driver. Hibernation (S4) causes no resume (skipped thanks to smart_suspend=true) yet still performs the suspend sequence unconditionally, see device_complete() in drivers/base/power/main.c. If S4 runs for already suspended pcm3168a device, we end up with "unbalanced disables" warning from the regulators. Assigning the operations fixes the problem. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20260525201801.1336936-2-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01tracing: Replace BUG_ON with lockdep_assert_held in uprobe_buffer functionsYash Suthar
Replace BUG_ON(!mutex_is_locked(&event_mutex)) with lockdep_assert_held(&event_mutex) in uprobe_buffer_enable() and uprobe_buffer_disable(). BUG_ON() will crash the kernel. mutex_is_locked() only checks if any task holds lock,but not the caller task. lockdep_assert_held() also check current task for lock and no crash on true condition. Link: https://lore.kernel.org/all/20260521192846.8306-1-yashsuthar983@gmail.com/ Signed-off-by: Yash Suthar <yashsuthar983@gmail.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
2026-06-01tracing: Use flexible array for entry fetch codeRosen Penev
Store probe entry fetch instructions in the probe_entry_arg allocation instead of allocating a separate instruction array. This keeps the entry fetch code tied to the entry argument lifetime while leaving regular probe_arg instruction arrays separately allocated and freed. Assisted-by: Codex:GPT-5.5 Link: https://lore.kernel.org/all/20260520215817.16560-1-rosenp@gmail.com/ Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
2026-06-01tracing/probes: Ensure the uprobe buffer size is bigger than event sizeMasami Hiramatsu (Google)
Add BUILD_BUG_ON() to ensure the uprobe per-CPU working buffer size is bigger than the event size. Link: https://lore.kernel.org/all/177849383209.8038.1902170479780501237.stgit@devnote2/ Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
2026-06-01ASoC: rsnd: Add RZ/G3E audio driver supportMark Brown
John Madieu <john.madieu.xa@bp.renesas.com> says: Add audio support for the Renesas RZ/G3E SoC to the R-Car Sound driver. The RZ/G3E audio subsystem is based on R-Car Sound IP but has several differences requiring dedicated handling: - SSI operates exclusively in BUSIF mode (no PIO) - 2-4 BUSIF channels per SSI (layout differs from R-Car) - Separate register regions for SCU, ADG, SSIU, SSI accessed by name - Per-SSI ADG and SSIF supply clocks - Dedicated audmapp clock/reset for Audio DMAC peri-peri - Per-SSI and per-module reset controllers via CPG - Unprefixed DT sub-node names (ssi, ssiu, src, ...) instead of rcar_sound,xxx - Hyphenated indexed clock/reset names (ssi-0, src-0, adg-ssi-0, audio-clka, ...) instead of the legacy dotted form Link: https://patch.msgid.link/20260525110230.4014435-1-john.madieu.xa@bp.renesas.com
2026-06-01ASoC: rsnd: Add system suspend/resume supportJohn Madieu
Add system suspend/resume support for the ASoC rsnd driver, required for RZ/G3E platforms. Distribute the per-module suspend/resume work across the relevant files (adg.c, ssi.c, ssiu.c, src.c, ctu.c, mix.c, dvc.c, dma.c) rather than centralising it in core.c. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-19-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Support unprefixed DT node names for RZ/G3EJohn Madieu
The RZ/G3E device tree binding uses standard unprefixed node names ("ssi", "ssiu", "src", "dvc", "mix", "ctu") instead of the legacy "rcar_sound," prefixed names used by R-Car bindings. Convert rsnd_parse_of_node() from a macro into a function that tries the legacy prefixed name first, then falls back to the unprefixed name by stripping the "rcar_sound," prefix. This makes the driver work transparently with both old and new bindings. While at it, update the related comments in dma.c, ssi.c and ssiu.c that reference the hardcoded "rcar_sound,ssiu" / "rcar_sound,ssi" names to note that the driver now accepts both the prefixed and the unprefixed forms. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-18-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: src: Add SRC reset support for RZ/G3EJohn Madieu
The RZ/G3E SoC exposes a shared SCU reset controller used by all SRC modules. Acquire it once and pass it through per-instance's rsnd_mod_init() so it is wired into the rsnd_mod->rstc plumbing. devm_reset_control_get_optional_shared() returns NULL when no reset is described in DT, leaving existing R-Car generations unaffected. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-17-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: src: Acquire shared SCU clocks for RZ/G3EJohn Madieu
The RZ/G3E SoC requires explicit SCU (Sampling Rate Converter Unit) clock management: - scu: SCU top-level module clock (CPG_CLKON_15.CLK6_ON) - scu_x2: SCU top-level double-rate clock (CPG_CLKON_15.CLK7_ON) - scu_supply: SCU register-access / housekeeping clock (CPG_CLKON_23.CLK14_ON) Without every one of them enabled, no SCU register is reachable. Hold these in a new struct rsnd_src_ctrl and acquire them with devm_clk_get_optional_enabled(). scu_supply is intentionally left untouched by the system suspend/resume path added later in the series, so SCU registers stay reachable across PM transitions. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-16-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: adg: Look up RZ/G3E clkin under audio-clk{a,b,c,i}John Madieu
The R-Car Sound ADG block has up to four external master-clock inputs named CLKA, CLKB, CLKC and CLKI by the silicon. On Gen2 R-Car these come from DT under the legacy names "clk_a", "clk_b", "clk_c", "clk_i" defined by renesas,rsnd.yaml. Gen4 collapses them to a single "clkin". The new standalone RZ/G3E sound binding (renesas,r9a09g047-sound.yaml) uses the standard DT naming convention with a vendor-meaningful prefix that matches the SoC datasheet pin labels: "audio-clka", "audio-clkb", "audio-clkc", "audio-clki". Add a third clkin name table for RZ/G3E and dispatch to it from rsnd_adg_get_clkin() in the same style as the existing Gen4 branch. The CLKA/B/C/I enum values, the clkin[] array, and the BRGA/BRGB derivation are unchanged - only the DT lookup names differ. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-15-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock managementJohn Madieu
RZ/G3E's ADG module requires explicit clock management for SSI audio interfaces that differs from R-Car Gen2/Gen3/Gen4: - Per-SSI ADG clocks (adg-ssi-N, or adg.ssi.N in legacy bindings) for each SSI module - A shared SSIF supply clock for the SSI subsystem These clocks are acquired using optional APIs, making them transparent to platforms that do not require them. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-14-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add ADG reset support for RZ/G3EJohn Madieu
RZ/G3E requires the ADG reset line to be deasserted for the audio subsystem to operate. The ADG module clock is already managed via rsnd_adg_clk_enable/disable() through adg->adg, so no additional clock handling is needed. Add support for the optional "adg" reset control on Renesas RZ/G3E SoC. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-13-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add SSI reset support for RZ/G3E platformJohn Madieu
Acquire the per-SSI reset controller and pass it through rsnd_mod_init() so it is wired into the rsnd_mod->rstc plumbing. The RZ/G3E SoC exposes one reset line per SSI instance. Use the indexed-name rsnd_devm_reset_control_get_optional_indexed() helper so the same code accepts both the hyphenated RZ/G3E names ("ssi-0", "ssi-1", ...) and the legacy dotted names used by R-Car ("ssi.0", ...). The helper returns NULL when no reset is described in DT, leaving existing R-Car generations unaffected. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-12-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: ssiu: Add RZ/G3E BUSIF supportJohn Madieu
Add support for the SSIU found on the Renesas RZ/G3E SoC, which provides a different BUSIF layout compared to earlier generations: - SSI0-SSI4: 4 BUSIF instances each (BUSIF0-3) - SSI5-SSI8: 1 BUSIF instance each (BUSIF0 only) - SSI9: 4 BUSIF instances (BUSIF0-3) - Total: 28 BUSIFs The RZ/G3E also has only two pairs of BUSIF error-status registers instead of four, and the SSI always operates in BUSIF mode: the SSI_MODE0 BUSIF/PIO select bit is not implemented and must not be written. While at it, add RSND_SSIU_BUSIF_STATUS_COUNT_2 as a capability flag in the match data, consumed via struct rsnd_ssiu_ctrl, to parametrise the two BUSIF error-status loops. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-11-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: ssiu: Add shared SSI reset controller supportJohn Madieu
The RZ/G3E SoC exposes a single shared "ssi-all" reset that gates all SSI/SSIU modules. Acquire it at SSIU probe and pass it through rsnd_mod_init() so it is wired into the rsnd_mod->rstc plumbing. devm_reset_control_get_optional_shared() returns NULL when no reset is described in DT, leaving existing R-Car generations unaffected. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-10-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add RZ/G3E DMA address calculation supportJohn Madieu
RZ/G3E has different DMA register base addresses and offset calculations compared to R-Car platforms. Add dedicated rsnd_rzg3e_dma_addr() function with dispatch from rsnd_dma_addr(), following the existing per-generation pattern. The function reuses rsnd_dma_addr_lookup() and rsnd_dma_addr_map. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-9-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Refactor DMA address tables with named structsJohn Madieu
Replace the raw multi-dimensional array used for DMA address lookup in rsnd_gen2_dma_addr() with properly named structs: rsnd_dma_addr (in/out pair), rsnd_dma_addr_dir (capture/playback arrays), and rsnd_dma_addr_map (src/ssi/ssiu module sets). While at it, extract the common lookup logic (is_ssi / use_src / use_cmd evaluation and table indexing) into a shared rsnd_dma_addr_lookup() function. No functional change. This is a preparatory refactor for upcoming RZ/G3E support which will add its own DMA address map using the same struct and lookup function. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-8-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add audmapp clock and reset support for RZ/G3EJohn Madieu
RZ/G3E requires additional audmapp clock and reset lines for Audio DMA-PP operation. Add global audmapp clock/reset management in rsnd_dma_probe() using optional APIs to remain transparent to other platforms. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-7-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add RZ/G3E SoC probing and register mapJohn Madieu
RZ/G3E audio subsystem has a different register layout compared to R-Car Gen2/Gen3/Gen4, as described below: - Different base address organization (SCU, ADG, SSIU, SSI as separate regions accessed by name) - Additional registers: AUDIO_CLK_SEL3, SSI_MODE3, SSI_CONTROL2 - Different register offsets within each region Add RZ/G3E SoC's audio subsystem register layouts and probe support. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-6-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Support hyphen or dot in indexed clock and reset namesJohn Madieu
The rsnd driver historically looks up per-instance clocks and resets using dot-separated names matching the ones declared in R-Car device tree bindings ("ssi.0", "src.0", "adg.ssi.0", ...). The dot separator is unusual for device tree clock-names / reset-names and newer Renesas SoC bindings (RZ/G3E and later) use the more standard hyphen form ("ssi-0", "src-0", ...). Rather than force every existing R-Car user to rename their DT entries, add a small set of helpers that try the hyphen form first and fall back to the dot form. While at it, convert the existing indexed devm_clk_get() call sites in the SSI, SRC, CTU, DVC and MIX probes to use the new helpers and drop the now unused per-module name buffers and NAME_SIZE defines. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-5-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Add reset controller support to rsnd_modJohn Madieu
The RZ/G3E SoC requires per-module reset control for the audio subsystem. Add reset controller support to struct rsnd_mod and update rsnd_mod_init() to accept and handle a reset_control parameter and mirror it in rsnd_mod_quit(). Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-4-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: rsnd: Fix RSND_SOC_MASK width to single nibbleJohn Madieu
RSND_SOC_MASK was defined as (0xFF << 4), spanning bits 4-11. This is wider than needed since only nibble B (bits 7:4) is used for SoC identifiers. Narrow it to (0xF << 4) to match the intended single-nibble allocation and prevent overlap with bits 8-11 which will be used by upcoming RZ series flags. No functional change, since the only current user (RSND_SOC_E) fits within a single nibble. Fixes: ba164a49f8f7 ("ASoC: rsnd: src: Avoid a potential deadlock") Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-3-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: dt-bindings: sound: Add DT binding for RZ/G3E soundJohn Madieu
Add a standalone device tree binding for the Renesas RZ/G3E (R9A09G047) sound controller. The RZ/G3E sound IP is based on R-Car Sound but differs in several ways: - Uses unprefixed sub-node names (ssi, ssiu, src, dvc, mix, ctu) instead of R-Car's rcar_sound,xxx prefixed names. - Supports up to 5 DMA controllers per direction, allowing multiple DMA entries with repeated channel names in SSIU, SRC and DVC sub-nodes. - Has 47 clocks including per-SSI ADG clocks (adg-ssi-[0-9]), SCU clocks (scu, scu_x2, scu_supply), SSIF supply clock, AUDMAC peri-peri clock, and ADG clock. - Has 14 reset lines including SCU, ADG and AUDMAC peri-peri resets. - SSI operates exclusively in BUSIF mode. These differences make the RZ/G3E binding incompatible with the existing renesas,rsnd.yaml, so it is added as a separate standalone binding with its own $ref to dai-common.yaml. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-2-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01Merge tag 'socfpga_fix_for_v7.1' of ↵Arnd Bergmann
git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into arm/fixes SoCFPGA dts fix for v7.1 - Fix OF node refcount leak * tag 'socfpga_fix_for_v7.1' of git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux: ARM: socfpga: Fix OF node refcount leak in SMP setup Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-01Merge tag 'at91-fixes-7.1' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into arm/fixes Microchip AT91 fixes for v7.1 This update includes: - a fix for the GMAC DT node on SAM9X7 SoC to properly describe the available clocks * tag 'at91-fixes-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux: ARM: dts: microchip: sam9x7: fix GMAC clock configuration Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-06-01MAINTAINERS: use new drbd-dev mailing listChristoph Böhmwalder
We are migrating from our own infrastructure to lists.linux.dev, so change the drbd-dev address to point to the new domain. Signed-off-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com> Link: https://patch.msgid.link/20260513065557.36042-1-christoph.boehmwalder@linbit.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-06-01ASoC: nau8822: add support for supply regulatorsMark Brown
Alexey Charkov <alchark@flipper.net> says: The Nuvoton NAU8822 codec has four power supply pins: VDDA, VDDB, VDDC and VDDSPK, which must be online and stable before the device can be accessed over I2C. On boards where these rails are software-controlled, probing the codec before the regulators are up results in -ENXIO errors during register access. This short series adds optional regulator support to both the device tree binding and the driver, so platforms that need explicit power sequencing can describe and enforce it: Link: https://patch.msgid.link/20260525-nau8822-reg-v2-0-7d37ae393e46@flipper.net
2026-06-01ASoC: codecs: nau8822: add support for supply regulatorsAlexey Charkov
NAU8822 has four power supply pins: VDDA, VDDB, VDDC, and VDDSPK, which need to be online and stable before communication with the device is attempted. Request and enable these regulators at init time, if provided. Also wait for 100 us after powering up the supply regulators before attempting to access the device registers, as recommended by the datasheet. This helps avoid -ENXIO errors when the codec is probed before the regulators are ready. Signed-off-by: Alexey Charkov <alchark@flipper.net> Link: https://patch.msgid.link/20260525-nau8822-reg-v2-2-7d37ae393e46@flipper.net Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: dt-bindings: nau8822: Add supply regulatorsAlexey Charkov
NAU8822 has 4 power supply pins: VDDA, VDDB, VDDC and VDDSPK, which need to be online and stable before communication with the device is attempted. List them (as optional) so that device tree users can ensure correct power sequencing. Signed-off-by: Alexey Charkov <alchark@flipper.net> Link: https://patch.msgid.link/20260525-nau8822-reg-v2-1-7d37ae393e46@flipper.net Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01spi: tegra210-quad: Allocate DMA memory for DMA engineAaron Kling
When the SPI controllers are running in DMA mode, it is the DMA engine that performs the memory accesses rather than the SPI controller. Pass the DMA engine's struct device pointer to the DMA API to make sure the correct DMA operations are used. Suggested-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Link: https://patch.msgid.link/20260525-tegra194-qspi-iommu-v2-1-a11c53f804b2@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01spi: imx: replace dmaengine_terminate_all() with dmaengine_terminate_sync()Carlos Song
dmaengine_terminate_all() has been deprecated, so replace it with dmaengine_terminate_sync(). Fixes: ba9b28652c75 ("spi: imx: enable DMA mode for target operation") Fixes: a450c8b77f92 ("spi: imx: handle DMA submission errors with dma_submit_error()") Signed-off-by: Carlos Song <carlos.song@nxp.com> Link: https://patch.msgid.link/20260525062928.3191821-1-carlos.song@oss.nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01spi: fsl-lpspi: fix DMA termination issuesMark Brown
Carlos Song (OSS) <carlos.song@oss.nxp.com> says: This series fixes two issues in the fsl-lpspi DMA transfer error paths. Patch 1 replaces the deprecated dmaengine_terminate_all() with dmaengine_terminate_sync() across all error paths in fsl_lpspi_dma_transfer(). Patch 2 fixes a missing RX DMA channel termination when TX descriptor preparation fails. Since the RX channel is already submitted and issued before the TX descriptor is prepared, returning -EINVAL without terminating the RX channel leaves it running against buffers that the SPI core will unmap, potentially causing memory corruption. Link: https://patch.msgid.link/20260525062357.3191349-1-carlos.song@oss.nxp.com
2026-06-01spi: fsl-lpspi: terminate the RX channel on TX prepare failure pathCarlos Song
When dmaengine_prep_slave_sg() fails for the TX channel, the error path terminates the TX DMA channel but leaves the RX channel running. Since the RX channel was already submitted and issued prior to preparing the TX descriptor, returning -EINVAL causes the SPI core to unmap the DMA buffers while the RX DMA engine continues writing to them, leading to potential memory corruption or use-after-free. Terminate the RX channel before returning on the TX prepare failure path. Fixes: 09c04466ce7e ("spi: lpspi: add dma mode support") Cc: stable@vger.kernel.org Signed-off-by: Carlos Song <carlos.song@nxp.com> Link: https://patch.msgid.link/20260525062357.3191349-3-carlos.song@oss.nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01spi: fsl-lpspi: replace dmaengine_terminate_all() with ↵Carlos Song
dmaengine_terminate_sync() dmaengine_terminate_all() has been deprecated, so replace it with dmaengine_terminate_sync(). Fixes: 09c04466ce7e ("spi: lpspi: add dma mode support") Cc: stable@vger.kernel.org Signed-off-by: Carlos Song <carlos.song@nxp.com> Link: https://patch.msgid.link/20260525062357.3191349-2-carlos.song@oss.nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01spi: atmel: fix DMA channel and bounce buffer leaksFelix Gu
The original code set use_dma to false when dma_alloc_coherent() for bounce buffers failed, but DMA channels acquired earlier via atmel_spi_configure_dma() were never freed. When devm_request_irq() or clk_prepare_enable() failed later in probe, the driver also did not release DMA channels or bounce buffers already allocated. The out_free_dma error path released DMA channels but did not free the bounce buffers. Fix by moving bounce buffer allocation into atmel_spi_configure_dma() and registering the devres cleanup for DMA channels and bounce buffers. Fixes: a9889ed62d06 ("spi: atmel: Implements transfers with bounce buffer") Signed-off-by: Felix Gu <ustc.gu@gmail.com> Link: https://patch.msgid.link/20260522-atmel-v3-1-23f8c6e6aa43@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01ASoC: mediatek: mt2701: fix snprintf boundsRosen Penev
For whatever reason, GCC is unable to figure out that i2s_num is a single digit number, with MT2701_BASE_CLK_NUM being the maximum value it represents. Add a min() call to help it out and fix W=1 errors regarding snprintf bounds. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260522014515.719973-1-rosenp@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>