* [PATCH AUTOSEL 7.0-6.18] drm/imx: parallel-display: add DRM_DISPLAY_HELPER for DRM_IMX_PARALLEL_DISPLAY
[not found] <20260420132314.1023554-1-sashal@kernel.org>
@ 2026-04-20 13:18 ` Sasha Levin
2026-04-20 13:18 ` [PATCH AUTOSEL 7.0-6.1] ASoC: mxs-sgtl5000: disable MCLK on error paths of mxs_sgtl5000_probe() Sasha Levin
` (2 subsequent siblings)
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-04-20 13:18 UTC (permalink / raw)
To: patches, stable
Cc: Martin Kepplinger-Novakovic, kernel test robot, Philipp Zabel,
Sasha Levin, maarten.lankhorst, mripard, tzimmermann, airlied,
simona, Frank.Li, dri-devel, imx, linux-arm-kernel, linux-kernel
From: Martin Kepplinger-Novakovic <martin.kepplinger-novakovic@ginzinger.com>
[ Upstream commit 02df94d98ff837074788ce921edf67707dbad404 ]
When I build for an old imx53 platform I see the same as the test robot
saw before:
arm-buildroot-linux-gnueabihf-ld: drivers/gpu/drm/imx/ipuv3/parallel-display.o: in function `imx_pd_bind':
parallel-display.c:(.text+0xb8): undefined reference to `drm_bridge_connector_init'
Selecting DRM_DISPLAY_HELPER for DRM_IMX_PARALLEL_DISPLAY fixes the build.
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202512241721.jZgcwRfr-lkp@intel.com/
Signed-off-by: Martin Kepplinger-Novakovic <martin.kepplinger-novakovic@ginzinger.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Link: https://patch.msgid.link/20260121102607.4087362-1-martin.kepplinger-novakovic@ginzinger.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
Now I have all the information needed for a thorough analysis. Let me
compile the full assessment.
---
## PHASE 1: COMMIT MESSAGE FORENSICS
### Step 1.1: Subject Line
- **Subsystem:** drm/imx: parallel-display
- **Action verb:** "add" (Kconfig dependency)
- **Summary:** Add missing `DRM_DISPLAY_HELPER` Kconfig select for
`DRM_IMX_PARALLEL_DISPLAY`
- Record: [drm/imx subsystem] [add missing dependency] [fixes link error
for drm_bridge_connector_init]
### Step 1.2: Tags
- **Reported-by:** kernel test robot `<lkp@intel.com>` — automated build
testing found this
- **Closes:** lore link to kbuild error report
- **Signed-off-by:** Martin Kepplinger-Novakovic (author), Philipp Zabel
(maintainer)
- **Reviewed-by:** Philipp Zabel (subsystem maintainer)
- **Link:** patch.msgid.link to original submission
- No Fixes: tag, no Cc: stable (expected for manual review candidates)
- Record: Kernel test robot reported build failure. Subsystem maintainer
reviewed AND committed.
### Step 1.3: Body Text
The commit message includes the exact linker error:
```
arm-buildroot-linux-gnueabihf-ld: ... undefined reference to
`drm_bridge_connector_init'
```
The author confirms reproducing this on a real imx53 platform build. The
fix is explicitly stated: "Selecting DRM_DISPLAY_HELPER for
DRM_IMX_PARALLEL_DISPLAY fixes the build."
Record: [Build failure — linker error for undefined
`drm_bridge_connector_init`] [Symptom: build fails for imx53 parallel
display] [Confirmed by both author and test robot]
### Step 1.4: Hidden Bug Fix Detection
This is explicitly a build fix, not disguised. No hidden complexity.
---
## PHASE 2: DIFF ANALYSIS
### Step 2.1: Inventory
- **Files changed:** 1 (`drivers/gpu/drm/imx/ipuv3/Kconfig`)
- **Lines added:** 1 (`select DRM_DISPLAY_HELPER`)
- **Lines removed:** 0
- **Scope:** Single-file, single-line Kconfig change
- Record: [1 file, +1 line, single Kconfig select statement]
### Step 2.2: Code Flow
- **Before:** `DRM_IMX_PARALLEL_DISPLAY` selects `DRM_BRIDGE_CONNECTOR`
but not `DRM_DISPLAY_HELPER`
- **After:** Also selects `DRM_DISPLAY_HELPER`
The root cause: `DRM_BRIDGE_CONNECTOR` is defined inside `if
DRM_DISPLAY_HELPER` in `drivers/gpu/drm/display/Kconfig` (line 15-17).
The `drm_bridge_connector.o` object is compiled as part of the
`drm_display_helper` module. Without `DRM_DISPLAY_HELPER` enabled,
`drm_bridge_connector_init()` is never compiled, causing the linker
error.
### Step 2.3: Bug Mechanism
Category: **Build fix** — missing Kconfig dependency causes link
failure.
### Step 2.4: Fix Quality
- Obviously correct: the function is in the `drm_display_helper` module,
so the module must be selected
- Minimal: 1 line
- Zero runtime regression risk: only affects build-time dependency
resolution
- Record: [Perfect quality, zero regression risk]
---
## PHASE 3: GIT HISTORY INVESTIGATION
### Step 3.1: Blame
From `git blame`, `DRM_BRIDGE_CONNECTOR` was added to this Kconfig by
commit f673055a46784 ("drm/imx: Add missing DRM_BRIDGE_CONNECTOR
dependency") in the v6.13 cycle. That commit itself was a partial fix —
it added the `DRM_BRIDGE_CONNECTOR` select but missed adding
`DRM_DISPLAY_HELPER`.
### Step 3.2: Root Cause Chain
- Commit 9da7ec9b19d8 ("drm/bridge-connector: move to DRM_DISPLAY_HELPER
module") moved `drm_bridge_connector` under `DRM_DISPLAY_HELPER` —
root cause
- Commit 5f6e56d3319d2 ("drm/imx: parallel-display: switch to
drm_panel_bridge") introduced bridge usage
- Commit f673055a46784 added `select DRM_BRIDGE_CONNECTOR` but missed
`DRM_DISPLAY_HELPER`
- The bug is that several commits were applied to bring bridge_connector
to imx but the Kconfig dependency chain was incomplete
### Step 3.3: Prerequisite Check
All prerequisite commits (5f6e56d3319d2, f673055a46784, ef214002e6b38)
are already in v7.0. This fix applies standalone.
### Step 3.4: Author Context
Martin Kepplinger-Novakovic is a recognized contributor (has
MAINTAINERS/CREDITS changes). The fix was reviewed by Philipp Zabel, the
actual subsystem maintainer for drm/imx.
### Step 3.5: Stable Tree Applicability
- **v6.12:** Bug does NOT exist — `parallel-display.c` doesn't call
`drm_bridge_connector_init()` (verified: 0 occurrences)
- **v6.13:** Bug EXISTS — Kconfig has `select DRM_BRIDGE_CONNECTOR` but
not `select DRM_DISPLAY_HELPER`
- **v6.14:** Bug EXISTS — same Kconfig state as v6.13
- **v7.0:** Bug EXISTS — confirmed identical Kconfig state, fix applies
cleanly
---
## PHASE 4: MAILING LIST RESEARCH
### Step 4.1-4.2: Original Discussion
- b4 dig for the prior commit (f673055a46784) found the thread at lore.
It was a single-patch fix
- The current fix was submitted by the author after hitting the build
failure on real hardware
- Reviewed-by from Philipp Zabel (the drm/imx maintainer who also
committed it)
### Step 4.3: Bug Report
The kernel test robot (kbuild) reported the linker error, referenced in
the Closes: tag.
### Step 4.4-4.5: Series Context
Standalone single-patch fix, no dependencies on other uncommitted
patches.
---
## PHASE 5: CODE SEMANTIC ANALYSIS
### Step 5.1-5.4: Function Analysis
`drm_bridge_connector_init()` is called at line 206 of `parallel-
display.c` in `imx_pd_bind()`. This is the driver probe/bind path —
critical for anyone using the i.MX parallel display interface. Without
this fix, the driver simply cannot be built (link error).
### Step 5.5: Similar Patterns
Many other DRM drivers already `select DRM_DISPLAY_HELPER` alongside
`DRM_BRIDGE_CONNECTOR` (verified via grep: bridge/Kconfig,
panel/Kconfig, rockchip/Kconfig all have it). The IMX parallel display
was simply missed.
---
## PHASE 6: CROSS-REFERENCING
### Step 6.1: Bug Exists in Stable
Confirmed the bug exists in v7.0. The Kconfig file in v7.0 exactly
matches the "before" state of the diff.
### Step 6.2: Backport Complexity
**Clean apply** — the diff applies directly to v7.0 without any
modifications.
### Step 6.3: No Existing Fix
No alternative fix exists in v7.0 for this issue.
---
## PHASE 7: SUBSYSTEM CONTEXT
### Step 7.1: Subsystem
- **Path:** drivers/gpu/drm/imx/ipuv3
- **Criticality:** PERIPHERAL (embedded i.MX ARM platform, but has real
users building kernels for imx53 boards)
### Step 7.2: Activity
The subsystem has moderate activity with several recent Kconfig fixes
for the same dependency chain.
---
## PHASE 8: IMPACT AND RISK
### Step 8.1: Affected Users
Anyone building a kernel with `CONFIG_DRM_IMX_PARALLEL_DISPLAY=y/m`
where `DRM_DISPLAY_HELPER` is not otherwise selected. This affects
embedded Linux developers targeting i.MX53 platforms.
### Step 8.2: Trigger
100% reproducible — any build with the right config fails. Not a timing
issue.
### Step 8.3: Severity
**Build failure** — the kernel cannot be compiled with this driver
enabled. Severity: HIGH for affected users.
### Step 8.4: Risk-Benefit
- **Benefit:** HIGH — fixes a hard build failure, enables compilation of
i.MX parallel display driver
- **Risk:** NEAR-ZERO — 1-line Kconfig `select` addition, no runtime
code change whatsoever
- **Ratio:** Excellent
---
## PHASE 9: FINAL SYNTHESIS
### Step 9.1: Evidence Summary
**FOR backporting:**
- Fixes a real, reproducible build failure (linker error)
- Single-line Kconfig change — minimal scope
- Zero runtime regression risk
- Reported by kernel test robot AND reproduced by author on real
hardware
- Reviewed and committed by subsystem maintainer
- Bug exists in v7.0 (verified)
- Clean apply to v7.0
**AGAINST backporting:**
- None identified
### Step 9.2: Stable Rules Checklist
1. Obviously correct and tested? **YES** — Kconfig dependency is
unambiguously needed
2. Fixes a real bug? **YES** — hard build failure
3. Important issue? **YES** — prevents building the driver entirely
4. Small and contained? **YES** — 1 line in 1 file
5. No new features or APIs? **YES** — purely a build dependency fix
6. Can apply to stable? **YES** — clean apply verified
### Step 9.3: Exception Category
This is a **BUILD FIX** — one of the explicitly allowed exception
categories for stable.
---
## Verification
- [Phase 1] Parsed tags: Reported-by kernel test robot, Reviewed-by
Philipp Zabel (maintainer), Closes link to kbuild report
- [Phase 2] Diff analysis: +1 line `select DRM_DISPLAY_HELPER` in
Kconfig
- [Phase 3] git blame: `DRM_BRIDGE_CONNECTOR` added by f673055a46784 in
v6.13 cycle without matching `DRM_DISPLAY_HELPER`
- [Phase 3] git show v7.0:Kconfig: confirmed bug exists (missing select
DRM_DISPLAY_HELPER)
- [Phase 3] git show v6.12:parallel-display.c: confirmed 0 calls to
`drm_bridge_connector_init`, bug doesn't exist pre-6.13
- [Phase 3] git show v6.13/v6.14:Kconfig: confirmed bug present in both
- [Phase 4] b4 dig -c f673055a46784: found original thread for the
incomplete fix
- [Phase 5] Grep: `drm_bridge_connector_init` called at line 206 in
`imx_pd_bind()`
- [Phase 5] Grep: `DRM_BRIDGE_CONNECTOR` inside `if DRM_DISPLAY_HELPER`
at display/Kconfig:15-17
- [Phase 5] Grep: `drm_display_helper-$(CONFIG_DRM_BRIDGE_CONNECTOR)` in
display/Makefile confirms build dependency
- [Phase 6] v7.0 Kconfig state matches diff's "before" — clean apply
guaranteed
- [Phase 8] Failure mode: 100% reproducible link error, severity HIGH
for affected configs
This is a textbook build fix: one-line Kconfig dependency addition, zero
runtime risk, fixes a hard build failure for i.MX parallel display
users. It meets every stable kernel criterion.
**YES**
drivers/gpu/drm/imx/ipuv3/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/imx/ipuv3/Kconfig b/drivers/gpu/drm/imx/ipuv3/Kconfig
index acaf250890019..b2240998df4f1 100644
--- a/drivers/gpu/drm/imx/ipuv3/Kconfig
+++ b/drivers/gpu/drm/imx/ipuv3/Kconfig
@@ -15,6 +15,7 @@ config DRM_IMX_PARALLEL_DISPLAY
depends on DRM_IMX
select DRM_BRIDGE
select DRM_BRIDGE_CONNECTOR
+ select DRM_DISPLAY_HELPER
select DRM_IMX_LEGACY_BRIDGE
select DRM_PANEL_BRIDGE
select VIDEOMODE_HELPERS
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH AUTOSEL 7.0-6.1] ASoC: mxs-sgtl5000: disable MCLK on error paths of mxs_sgtl5000_probe()
[not found] <20260420132314.1023554-1-sashal@kernel.org>
2026-04-20 13:18 ` [PATCH AUTOSEL 7.0-6.18] drm/imx: parallel-display: add DRM_DISPLAY_HELPER for DRM_IMX_PARALLEL_DISPLAY Sasha Levin
@ 2026-04-20 13:18 ` Sasha Levin
2026-04-20 13:20 ` [PATCH AUTOSEL 6.18] arm64: dts: imx93-9x9-qsb: change usdhc tuning step for eMMC and SD Sasha Levin
2026-04-20 13:21 ` [PATCH AUTOSEL 6.18] arm64: dts: imx8mq: Set the correct gpu_ahb clock frequency Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-04-20 13:18 UTC (permalink / raw)
To: patches, stable
Cc: Haoxiang Li, Mark Brown, Sasha Levin, lgirdwood, perex, tiwai,
Frank.Li, linux-sound, imx, linux-arm-kernel, linux-kernel
From: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
[ Upstream commit c8ef13d692f19cdbbf195fb845421a5b71801704 ]
Call mxs_saif_put_mclk() to disable MCLK on error
paths of mxs_sgtl5000_probe().
Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Link: https://patch.msgid.link/20260401053051.586290-1-lihaoxiang@isrc.iscas.ac.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
Now I have a complete picture. Let me compile the full analysis.
---
## PHASE 1: COMMIT MESSAGE FORENSICS
**Step 1.1: Subject Line**
- Subsystem: `ASoC: mxs-sgtl5000`
- Action verb: "disable" (implies fixing a missing cleanup)
- Summary: Disable MCLK on error paths of `mxs_sgtl5000_probe()`
- Record: [ASoC/mxs-sgtl5000] [disable/fix] [Add missing
mxs_saif_put_mclk() on probe error paths]
**Step 1.2: Tags**
- Signed-off-by: Haoxiang Li (author) - a contributor focused on error-
path resource leak fixes
- Link: `https://patch.msgid.link/20260401053051.586290-1-
lihaoxiang@isrc.iscas.ac.cn`
- Signed-off-by: Mark Brown (ASoC maintainer applied the patch)
- No Fixes: tag, no Reported-by, no Cc: stable (expected for review
candidates)
**Step 1.3: Commit Body**
The message is concise: call `mxs_saif_put_mclk()` to disable MCLK on
error paths. The bug is a resource leak - `mxs_saif_get_mclk()` enables
a hardware clock, and if probe fails after that point, the clock remains
enabled.
**Step 1.4: Hidden Bug Fix Detection**
This IS a resource leak fix. The wording "disable MCLK on error paths"
is a classic resource-leak-on-error-path fix pattern.
## PHASE 2: DIFF ANALYSIS
**Step 2.1: Inventory**
- 1 file changed: `sound/soc/mxs/mxs-sgtl5000.c`
- 2 lines added: two `mxs_saif_put_mclk(0)` calls + braces adjustment
- Functions modified: `mxs_sgtl5000_probe()`
- Scope: single-file surgical fix
**Step 2.2: Code Flow Change**
Two error paths are fixed:
1. **`snd_soc_of_parse_audio_routing()` failure** (line 160): BEFORE:
returned directly without disabling MCLK. AFTER: calls
`mxs_saif_put_mclk(0)` before returning.
2. **`devm_snd_soc_register_card()` failure** (line 165): BEFORE:
returned directly without disabling MCLK. AFTER: calls
`mxs_saif_put_mclk(0)` before returning.
**Step 2.3: Bug Mechanism**
Category: **Error path / resource leak fix**.
`mxs_saif_get_mclk()` at line 144:
- Calls `__mxs_saif_get_mclk()` which sets `saif->mclk_in_use = 1`
- Calls `clk_prepare_enable(saif->clk)` to enable the hardware clock
- Writes to SAIF_CTRL to enable MCLK output
When probe fails after this, `mxs_saif_put_mclk()` (which disables the
clock, clears MCLK output, and sets `mclk_in_use = 0`) is never called.
The `remove()` callback only runs if `probe()` succeeded.
**Step 2.4: Fix Quality**
- Obviously correct: mirrors the cleanup done in `mxs_sgtl5000_remove()`
- Minimal/surgical: only 2 meaningful lines added
- Regression risk: essentially zero - only affects error paths
- The fix follows the exact same pattern as the existing `remove()`
function
## PHASE 3: GIT HISTORY INVESTIGATION
**Step 3.1: Blame Analysis**
- The `mxs_saif_get_mclk()` call was introduced in the original driver
commit `fcb5e47eff29a1` (2011, v3.2). So the register_card error-path
leak has existed since 2011.
- The audio-routing error path was introduced by `949293d45d6b09` (2018,
v4.16) which added `snd_soc_of_parse_audio_routing()` without cleanup
on failure.
- Both error paths predate all active stable trees.
**Step 3.2: No Fixes: tag** (expected for review candidates)
**Step 3.3: Related Changes**
- `6ae0a4d8fec55` (2022): Fixed a different resource leak (of_node_put)
in the same probe function - shows this function has a history of
incomplete error handling.
- `7a17f6a95a613` (2021): Switched to `dev_err_probe()` for
register_card failure.
**Step 3.4: Author Context**
Haoxiang Li is a prolific error-path/resource-leak fix contributor.
Their commit history shows many similar fixes across kernel subsystems
(PCI, SCSI, media, DRM, clock, bus drivers).
**Step 3.5: Dependencies**
No dependencies. The fix only adds `mxs_saif_put_mclk(0)` calls, which
has existed since the driver was created. Should apply cleanly to all
stable trees.
## PHASE 4: MAILING LIST RESEARCH
Lore was not accessible due to bot protection. However:
- The patch was accepted by Mark Brown (ASoC subsystem maintainer)
directly
- The Link tag points to the original submission
- Single-version submission (no v2/v3), suggesting it was
straightforward
## PHASE 5: CODE SEMANTIC ANALYSIS
**Step 5.1: Functions Modified**
Only `mxs_sgtl5000_probe()` is modified.
**Step 5.2: Resource Chain**
- `mxs_saif_get_mclk()` → `__mxs_saif_get_mclk()` → sets
`mclk_in_use=1`, clears CLKGATE, configures clock rate →
`clk_prepare_enable()` → writes SAIF_CTRL to enable MCLK RUN
- `mxs_saif_put_mclk()` → `clk_disable_unprepare()` → sets CLKGATE →
clears RUN → `mclk_in_use=0`
Without the fix, on error: clock stays enabled, hardware MCLK output
stays active, `mclk_in_use` remains 1 (preventing future attempts to get
MCLK).
## PHASE 6: STABLE TREE ANALYSIS
**Step 6.1: Code Presence**
The buggy code exists in ALL active stable trees:
- The register_card error leak exists since v3.2 (2011)
- The audio-routing error leak exists since v4.16 (2018)
- All stable trees (5.4.y, 5.10.y, 5.15.y, 6.1.y, 6.6.y, 6.12.y) contain
both bugs
**Step 6.2: Backport Difficulty**
The patch should apply cleanly or with trivial fuzz. Stable trees older
than 6.1 use `of_find_property()` instead of `of_property_present()`,
but the error path code is unchanged. The `devm_snd_soc_register_card`
error path in trees before 5.15 uses slightly different error printing
(not `dev_err_probe`), but the fix location is the same.
## PHASE 7: SUBSYSTEM CONTEXT
- Subsystem: ASoC (sound/soc) - audio driver infrastructure
- Criticality: PERIPHERAL (MXS/i.MX28 embedded audio, specific platform)
- The MXS SAIF + SGTL5000 combination is used on Freescale/NXP i.MX28
boards
## PHASE 8: IMPACT AND RISK ASSESSMENT
**Step 8.1: Affected Users**
Platform-specific: users of i.MX28 boards with SGTL5000 audio codec
(embedded systems).
**Step 8.2: Trigger**
Probe failure on the audio device. This can be triggered by:
- Invalid/malformed audio-routing DT property
- `devm_snd_soc_register_card()` failure (e.g., codec not ready, probe
deferral errors)
**Step 8.3: Failure Mode**
- Clock resource leak (hardware clock left enabled, consuming power)
- `mclk_in_use` flag remains set, potentially blocking future MCLK
acquisition
- Severity: MEDIUM (resource leak, not crash)
**Step 8.4: Risk-Benefit**
- BENEFIT: Fixes resource leak on error paths. Clean cleanup of hardware
state.
- RISK: Very low. Only 2 lines, only error paths, mirrors existing
remove() logic.
- Ratio: Favorable. Very low risk fix for a real resource leak.
## PHASE 9: FINAL SYNTHESIS
**Evidence FOR backporting:**
- Fixes a real resource leak (hardware clock left enabled on probe
failure)
- Fixes `mclk_in_use` state leak that can prevent subsequent attempts
- Tiny, surgical fix (2 lines of meaningful code)
- Obviously correct (mirrors the cleanup in `remove()`)
- Accepted by ASoC subsystem maintainer (Mark Brown)
- Bug exists in all stable trees (since v3.2/v4.16)
- Zero regression risk (only error paths affected)
- The same function had a prior similar fix (`6ae0a4d8fec55` for
of_node_put)
**Evidence AGAINST:**
- Platform-specific driver (limited user base, i.MX28)
- No Reported-by (found by code review, not user complaint)
- Resource leak, not crash/security/corruption
- No Fixes: tag (but expected for review candidates)
**Stable Rules Checklist:**
1. Obviously correct and tested? **YES** - mirrors remove() pattern,
accepted by maintainer
2. Fixes a real bug? **YES** - clock resource leak on error
3. Important issue? **MEDIUM** - resource leak, not critical severity
4. Small and contained? **YES** - 2 lines, 1 file
5. No new features? **YES** - pure bugfix
6. Can apply to stable? **YES** - should apply cleanly to all active
trees
## Verification
- [Phase 1] Parsed tags: Link to patch.msgid.link, SOB by Mark Brown
(maintainer), author Haoxiang Li
- [Phase 2] Diff analysis: 2 lines of `mxs_saif_put_mclk(0)` added to
two error paths in `mxs_sgtl5000_probe()`
- [Phase 3] git blame: `mxs_saif_get_mclk()` introduced in
fcb5e47eff29a1 (v3.2, 2011); audio-routing error path introduced in
949293d45d6b09 (v4.16, 2018)
- [Phase 3] git show 949293d45d6b09: confirmed it added
`snd_soc_of_parse_audio_routing()` error path without cleanup
- [Phase 3] git show 6ae0a4d8fec55: confirmed prior error-handling fix
in same function (of_node_put leak)
- [Phase 3] Author commits: Haoxiang Li is a serial error-path leak
fixer
- [Phase 4] Lore inaccessible due to bot protection; patch accepted by
Mark Brown directly
- [Phase 5] Read mxs_saif_get_mclk: confirms it enables clock + sets
mclk_in_use=1; put_mclk disables clock + clears flag
- [Phase 6] Code exists in all stable trees from 5.4.y through 6.12.y
- [Phase 6] git log v6.6..HEAD: only 4 commits to this file since v6.6,
none conflicting
- [Phase 8] Failure mode: clock resource leak + mclk_in_use state leak
on probe error, severity MEDIUM
The fix is small, surgical, obviously correct, and fixes a real resource
leak that has existed since 2011/2018. It meets all stable kernel
criteria.
**YES**
sound/soc/mxs/mxs-sgtl5000.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/mxs/mxs-sgtl5000.c b/sound/soc/mxs/mxs-sgtl5000.c
index 245f174116384..f1c0e612313dd 100644
--- a/sound/soc/mxs/mxs-sgtl5000.c
+++ b/sound/soc/mxs/mxs-sgtl5000.c
@@ -157,13 +157,16 @@ static int mxs_sgtl5000_probe(struct platform_device *pdev)
if (ret) {
dev_err(&pdev->dev, "failed to parse audio-routing (%d)\n",
ret);
+ mxs_saif_put_mclk(0);
return ret;
}
}
ret = devm_snd_soc_register_card(&pdev->dev, card);
- if (ret)
+ if (ret) {
+ mxs_saif_put_mclk(0);
return dev_err_probe(&pdev->dev, ret, "snd_soc_register_card failed\n");
+ }
return 0;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH AUTOSEL 6.18] arm64: dts: imx93-9x9-qsb: change usdhc tuning step for eMMC and SD
[not found] <20260420132314.1023554-1-sashal@kernel.org>
2026-04-20 13:18 ` [PATCH AUTOSEL 7.0-6.18] drm/imx: parallel-display: add DRM_DISPLAY_HELPER for DRM_IMX_PARALLEL_DISPLAY Sasha Levin
2026-04-20 13:18 ` [PATCH AUTOSEL 7.0-6.1] ASoC: mxs-sgtl5000: disable MCLK on error paths of mxs_sgtl5000_probe() Sasha Levin
@ 2026-04-20 13:20 ` Sasha Levin
2026-04-20 13:21 ` [PATCH AUTOSEL 6.18] arm64: dts: imx8mq: Set the correct gpu_ahb clock frequency Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-04-20 13:20 UTC (permalink / raw)
To: patches, stable
Cc: Luke Wang, Frank Li, Sasha Levin, robh, krzk+dt, conor+dt,
shawnguo, peng.fan, devicetree, imx, linux-arm-kernel,
linux-kernel
From: Luke Wang <ziniu.wang_1@nxp.com>
[ Upstream commit 08903184553def7ba1ad6ba4fa8afe1ba2ee0a21 ]
During system resume, the following errors occurred:
[ 430.638625] mmc1: error -84 writing Cache Enable bit
[ 430.643618] mmc1: error -84 doing runtime resume
For eMMC and SD, there are two tuning pass windows and the gap between
those two windows may only have one cell. If tuning step > 1, the gap may
just be skipped and host assumes those two windows as a continuous
windows. This will cause a wrong delay cell near the gap to be selected.
Set the tuning step to 1 to avoid selecting the wrong delay cell.
For SDIO, the gap is sufficiently large, so the default tuning step does
not cause this issue.
Fixes: 0565d20cd8c2 ("arm64: dts: freescale: Support i.MX93 9x9 Quick Start Board")
Signed-off-by: Luke Wang <ziniu.wang_1@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
Error: Failed to generate final synthesis
arch/arm64/boot/dts/freescale/imx93-9x9-qsb.dts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-9x9-qsb.dts b/arch/arm64/boot/dts/freescale/imx93-9x9-qsb.dts
index 0852067eab2cb..197c8f8b7f669 100644
--- a/arch/arm64/boot/dts/freescale/imx93-9x9-qsb.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-9x9-qsb.dts
@@ -507,6 +507,7 @@ &usdhc1 {
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
bus-width = <8>;
non-removable;
+ fsl,tuning-step = <1>;
status = "okay";
};
@@ -519,6 +520,7 @@ &usdhc2 {
vmmc-supply = <®_usdhc2_vmmc>;
bus-width = <4>;
no-mmc;
+ fsl,tuning-step = <1>;
status = "okay";
};
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH AUTOSEL 6.18] arm64: dts: imx8mq: Set the correct gpu_ahb clock frequency
[not found] <20260420132314.1023554-1-sashal@kernel.org>
` (2 preceding siblings ...)
2026-04-20 13:20 ` [PATCH AUTOSEL 6.18] arm64: dts: imx93-9x9-qsb: change usdhc tuning step for eMMC and SD Sasha Levin
@ 2026-04-20 13:21 ` Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-04-20 13:21 UTC (permalink / raw)
To: patches, stable
Cc: Sebastian Krzyszkowiak, Frank Li, Peng Fan, Fabio Estevam,
Sasha Levin, robh, krzk+dt, conor+dt, shawnguo, l.stach, agx,
devicetree, imx, linux-arm-kernel, linux-kernel
From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
[ Upstream commit 1f99b5d93d99ca17d50b386a674d0ce1f20932d8 ]
According to i.MX 8M Quad Reference Manual, GPU_AHB_CLK_ROOT's maximum
frequency is 400MHz.
Fixes: 45d2c84eb3a2 ("arm64: dts: imx8mq: add GPU node")
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
Error: Failed to generate final synthesis
arch/arm64/boot/dts/freescale/imx8mq.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
index 607962f807beb..6a25e219832ce 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -1632,7 +1632,7 @@ gpu: gpu@38000000 {
<&clk IMX8MQ_GPU_PLL_OUT>,
<&clk IMX8MQ_GPU_PLL>;
assigned-clock-rates = <800000000>, <800000000>,
- <800000000>, <800000000>, <0>;
+ <800000000>, <400000000>, <0>;
power-domains = <&pgc_gpu>;
};
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread