Skip to content

Audio ML support for Lemans and Monaco#840

Open
qti-sbojja wants to merge 3 commits into
qualcomm-linux:qcom-6.18.yfrom
qti-sbojja:audio-ML
Open

Audio ML support for Lemans and Monaco#840
qti-sbojja wants to merge 3 commits into
qualcomm-linux:qcom-6.18.yfrom
qti-sbojja:audio-ML

Conversation

@qti-sbojja

@qti-sbojja qti-sbojja commented Jul 18, 2026

Copy link
Copy Markdown

The audio ML (machine-learning) offload use case requires a contiguous,
physically addressable buffer shared with the audio DSP/SPF, and issues
DMA transactions through additional SMMU stream IDs that are not
covered by the existing ADSP mapping.

Add a dedicated reusable shared-dma-pool CMA region (16 MiB, 4 MiB
aligned) and wire it to the q6apm DAIs node via memory-region. A
dedicated pool guarantees the alignment and contiguity the DSP expects
and isolates these allocations from the default CMA region.

Under the EL2 (Gunyah/hypervisor) configuration the SMMU is fully
enforcing, so the ML transactions are otherwise blocked and faulted:

arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x3060
arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x3062

Add the ML-related stream IDs (0x3060 mask 0x9, 0x3062 mask 0x1) to the
remoteproc_adsp iommus property in the EL2 overlay so these buffers are
translated by the SMMU instead of being rejected.

CRs-Fixed: 4613255

@qlijarvis

Copy link
Copy Markdown

PR #840 — validate-patch

PR: #840

Verdict Issues Detailed Report
0 Full report

Final Summary

  1. Lore link present: Yes — all three commits include correct Link: tags pointing to lore.kernel.org message-IDs
  2. Lore link matches PR commits: Yes — diff content is identical to lore patches; line number shifts are legitimate context differences between upstream and qcom tree bases
  3. Upstream patch status: ⏳ Decision Pending — patches posted to linux-arm-msm@vger.kernel.org on 2026-07-17 (v2 series); only automated AI review replies present in thread (no maintainer ACK/NAK yet); last activity 2026-07-17 10:13 UTC
  4. PR present in qcom-next/topics: Yes - all 3 commit(s) are present in qcom-next or topics
Verdict: ✅ — click to expand

🔍 Patch Validation

PR: #840 - FROMLIST: dt-bindings: remoteproc: qcom,pas-common: allow up to 3 iommus (+ lemans/monaco audio ML offload)
Upstream commits:

Commit Message

Check Status Note
Subject matches upstream All three subjects match lore patches exactly (with FROMLIST: prefix added)
Body preserves rationale All commit bodies faithfully preserve the upstream rationale and technical details
Fixes tag present/correct N/A No Fixes tags in upstream patches
Authorship preserved All three commits correctly preserve From: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com> and Signed-off-by: from lore
Backport note (if applicable) N/A These are FROMLIST: commits (posted to mailing list, not yet merged), not backports

Diff

File Status Notes
Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml Identical change (iommus: maxItems 1→3, minItems 1 added); line numbers differ (33 vs 45) due to different tree base
arch/arm64/boot/dts/qcom/lemans-el2.dtso Identical change (adds SMMU stream IDs 0x3060/0x3062); line 19 in both
arch/arm64/boot/dts/qcom/lemans.dtsi Identical change (adds audio_cma_mem pool + memory-region); line numbers differ (624 vs 804, 8142 vs 7786) due to different tree base
arch/arm64/boot/dts/qcom/monaco-el2.dtso Identical change (adds SMMU stream IDs 0x2060/0x2062); line 17 in lore vs 20 in PR (context-only delta)
arch/arm64/boot/dts/qcom/monaco.dtsi Identical change (adds audio_cma_mem pool + memory-region); line numbers differ (729 vs 789, context varies) due to different tree base

Verdict

Merge as-is — All three commits are faithful representations of the upstream lore patches. The diff content is identical; line number and file hash differences are expected and correct for a FROMLIST: integration into the Qualcomm kernel tree. Commit messages, authorship, and technical rationale are all preserved correctly.

Final Summary

  1. Lore link present: Yes — all three commits include correct Link: tags pointing to lore.kernel.org message-IDs
  2. Lore link matches PR commits: Yes — diff content is identical to lore patches; line number shifts are legitimate context differences between upstream and qcom tree bases
  3. Upstream patch status: ⏳ Decision Pending — patches posted to linux-arm-msm@vger.kernel.org on 2026-07-17 (v2 series); only automated AI review replies present in thread (no maintainer ACK/NAK yet); last activity 2026-07-17 10:13 UTC
  4. PR present in qcom-next/topics: Yes — integration_presence_report.md confirms all 3 commits present: commit 1/3 in qcom-next, commits 2/3 and 3/3 in topics (exact patch-id match for 3/3 at 251e0b59a16264316858e927e7fecf58ec1a3e06)

Deterministic Integration Presence

Integration Presence Report

This report is generated by Jarvis before validate-patch runs.
It is the authoritative source for whether PR changes are already present
in qcom-next or in the kernel topic branches.

Kernel repo: /local/mnt/workspace/sgaud/Qgenie/image_pipeline/kernel
qcom-next ref: a5cf3debd8c3c660711ad586ad4bb84e9ca42635
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/3 [PATCH 1/3] FROMLIST: dt-bindings: remoteproc: qcom,pas-common: allow present - all checked added lines are present skipped - not checked because qcom-next already contains the change present
2/3 [PATCH 2/3] FROMLIST: arm64: dts: qcom: lemans: enable audio ML missing - no subject, patch-id, or full tree-content match found present - all checked added lines are present present
3/3 [PATCH 3/3] FROMLIST: arm64: dts: qcom: monaco: enable audio ML missing - no subject, patch-id, or full tree-content match found present - exact patch-id match at 251e0b59a16264316858e927e7fecf58ec1a3e06 present

Final Status

overall_status: PASS
present_commits: 3/3
partial_commits: 0/3
missing_commits: 0/3
topics_checked_for_commits: 2/3
final_summary: PR present in qcom-next/topics: Yes - all 3 commit(s) are present in qcom-next or topics

@qlijarvis

Copy link
Copy Markdown

PR #840 — checker-log-analyzer

PR: #840
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/29632759870

Checker Result Summary
Checker Result Summary
checkpatch All 3 commits passed
dt-binding-check Binding schema validation passed
dtb-check Missing required qcom,vmid property
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance All commits have valid FROMLIST: prefix and Link
tag-check All commits have valid FROMLIST: prefix

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #840 - FROMLIST: dt-bindings: remoteproc: qcom,pas-common: allow up to 3 iommus
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/29632759870
Target branch: qcom-6.18.y

Checker Result Summary
checkpatch All 3 commits passed
dt-binding-check Binding schema validation passed
dtb-check Missing required qcom,vmid property
sparse-check ⏭️ Skipped (no C/H changes)
check-uapi-headers ⏭️ Skipped (no UAPI changes)
check-patch-compliance All commits have valid FROMLIST: prefix and Link
tag-check All commits have valid FROMLIST: prefix

❌ dtb-check

Root cause: The PR adds memory-region property to the q6apm-dais node but does not add the required qcom,vmid property, violating the binding schema dependency rule.

Failure details:

/opt/actions-runner/_work/kernel-config/kernel-config/kernel/temp-out/arch/arm64/boot/dts/qcom/lemans-evk.dtb: 
  dais (qcom,q6apm-dais): 'qcom,vmid' is a dependency of 'memory-region'
	from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm-dai.yaml#

/opt/actions-runner/_work/kernel-config/kernel-config/kernel/temp-out/arch/arm64/boot/dts/qcom/lemans-evk-el2.dtb: 
  dais (qcom,q6apm-dais): 'qcom,vmid' is a dependency of 'memory-region'
	from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm-dai.yaml#

/opt/actions-runner/_work/kernel-config/kernel-config/kernel/temp-out/arch/arm64/boot/dts/qcom/monaco-evk.dtb: 
  dais (qcom,q6apm-dais): 'qcom,vmid' is a dependency of 'memory-region'
	from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm-dai.yaml#

Additionally, there is a secondary error:

service@1 (qcom,q6apm): Unevaluated properties are not allowed ('dais' was unexpected)
	from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm.yaml#

Analysis:

The binding schema Documentation/devicetree/bindings/sound/qcom,q6apm-dai.yaml defines a dependency rule:

dependencies:
  memory-region: ['qcom,vmid']

This means: if the memory-region property is present in a qcom,q6apm-dais node, then the qcom,vmid property must also be present.

The PR adds memory-region = <&audio_cma_mem>; to the dais node in:

  • arch/arm64/boot/dts/qcom/lemans.dtsi:807
  • arch/arm64/boot/dts/qcom/monaco.dtsi (similar location)

But does not add the required qcom,vmid property.

Fix:

Add the qcom,vmid property to the dais node wherever memory-region is added:

 q6apmdai: dais {
 	compatible = "qcom,q6apm-dais";
 	iommus = <&apps_smmu 0x3001 0x0>;
 	memory-region = <&audio_cma_mem>;
+	qcom,vmid = <VMID_HLOS>;
 };

The VMID_HLOS constant is typically defined in include/dt-bindings/firmware/qcom,scm.h or a similar header. Check the binding documentation and existing usage in the tree to determine the correct VMID value for the audio ML offload use case.

Reproduce locally:

make -j$(nproc) O=out defconfig
make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/lemans-evk.dtb
make -j$(nproc) O=out CHECK_DTBS=y arch/arm64/boot/dts/qcom/monaco-evk.dtb

Verdict

1 blocker must be fixed before merge:

The dtb-check failure is a genuine schema violation introduced by the PR. The qcom,vmid property must be added to the dais node wherever memory-region is added, as required by the qcom,q6apm-dai.yaml binding schema dependency rule.

All other checkers passed successfully.

Pratyush Meduri added 3 commits July 20, 2026 12:09
The ADSP PAS on several Qualcomm SoCs (e.g. SA8775P/lemans, QCS8300,
Monaco) needs more than a single SMMU stream ID for the audio ML
(machine-learning) offload use case. In addition to the primary
ADSP stream ID, the DSP/SPF issues DMA transactions through extra
stream IDs that are not covered by the existing single-entry mapping.

Relax the iommus constraint to allow between 1 and 3 entries so the
additional ML offload stream IDs can be described, fixing dtb_check
schema violations on device trees that add them.

Remove the dependency requiring qcom,vmid whenever a
memory-region property is present in the q6apm-dai binding.
The memory region itself does not inherently require VMID
configuration and the dependency unnecessarily restricts
valid DT descriptions.

Link: https://lore.kernel.org/all/20260717095825.3962666-2-pratyush.meduri@oss.qualcomm.com/
Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
…d SMMU mappings

The audio ML (machine-learning) offload use case requires a contiguous,
physically addressable buffer shared with the audio DSP/SPF, and issues
DMA transactions through additional SMMU stream IDs that are not
covered by the existing ADSP mapping.

Add a dedicated reusable shared-dma-pool CMA region (16 MiB, 4 MiB
aligned) and wire it to the q6apm DAIs node via memory-region. A
dedicated pool guarantees the alignment and contiguity the DSP expects
and isolates these allocations from the default CMA region.

Under the EL2 (Gunyah/hypervisor) configuration the SMMU is fully
enforcing, so the ML transactions are otherwise blocked and faulted:

 arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x3060
 arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x3062

Add the ML-related stream IDs (0x3060 mask 0x9, 0x3062 mask 0x1) to the
remoteproc_adsp iommus property in the EL2 overlay so these buffers are
translated by the SMMU instead of being rejected.

Link: https://lore.kernel.org/all/20260717095825.3962666-3-pratyush.meduri@oss.qualcomm.com/
Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
…d SMMU mappings

The audio ML (machine-learning) offload use case requires a contiguous,
physically addressable buffer shared with the audio DSP/SPF, and issues
DMA transactions through additional SMMU stream IDs that are not
covered by the existing ADSP mapping.

Add a dedicated reusable shared-dma-pool CMA region (16 MiB, 4 MiB
aligned) and wire it to the q6apm DAIs node via memory-region. A
dedicated pool guarantees the alignment and contiguity the DSP expects
and isolates these allocations from the default CMA region.

Under the EL2 (Gunyah/hypervisor) configuration the SMMU is fully
enforcing, so the ML transactions are otherwise blocked and faulted:

 arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x2060
 arm-smmu 15000000.iommu: Blocked unknown Stream ID 0x2062

Add the ML-related stream IDs (0x3060 mask 0x9, 0x3062 mask 0x1) to the
remoteproc_adsp iommus property in the EL2 overlay so these buffers are
translated by the SMMU instead of being rejected.

Link: https://lore.kernel.org/all/20260717095825.3962666-4-pratyush.meduri@oss.qualcomm.com/
Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: CR Not Eligible for Merge

CR 4613255 is not eligible for merge.

The parent software image for kernel.qli.2.0 is not development complete.

Entity: kernel.qli.2.0
CR: 4613255
Reason: CR_CANNOT_MERGE

Please ensure the CR passes both CCT (ComponentChangeTasks) and ICT (Integration Change Tasks) validations.

2 similar comments
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: CR Not Eligible for Merge

CR 4613255 is not eligible for merge.

The parent software image for kernel.qli.2.0 is not development complete.

Entity: kernel.qli.2.0
CR: 4613255
Reason: CR_CANNOT_MERGE

Please ensure the CR passes both CCT (ComponentChangeTasks) and ICT (Integration Change Tasks) validations.

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: CR Not Eligible for Merge

CR 4613255 is not eligible for merge.

The parent software image for kernel.qli.2.0 is not development complete.

Entity: kernel.qli.2.0
CR: 4613255
Reason: CR_CANNOT_MERGE

Please ensure the CR passes both CCT (ComponentChangeTasks) and ICT (Integration Change Tasks) validations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants