Skip to content

arm64: dts: qcom: kodiak-el2: remove wpss iommus, add wifi-firmware i…#756

Open
mukeshojha-linux wants to merge 1 commit into
qualcomm-linux:qcom-6.18.yfrom
mukeshojha-linux:wpss-fix
Open

arm64: dts: qcom: kodiak-el2: remove wpss iommus, add wifi-firmware i…#756
mukeshojha-linux wants to merge 1 commit into
qualcomm-linux:qcom-6.18.yfrom
mukeshojha-linux:wpss-fix

Conversation

@mukeshojha-linux

@mukeshojha-linux mukeshojha-linux commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

…ommus

The WPSS does not have dedicated firmware IOMMU context banks that Linux needs to manage. The SIDs in the WPSS range are in fact used for WCN6750 Wi-Fi firmware DMA operations (MSA firmware region and Copy Engine region) once Wi-Fi is brought up. The ath11k driver looks for a "wifi-firmware" child node under the Wi-Fi device and creates a dedicated platform device to map these firmware DMA regions through the IOMMU. This matches the pattern established in sc7280-chrome-common.dtsi where iommus are declared on the wifi-firmware child node under &wifi, not on remoteproc_wpss itself.

Remove iommu entries for wpss from kodiak-el2 overlay file.

CRs-Fixed: 4583945

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: CR Not Eligible for Merge

CR 4583945 is not eligible for merge.

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

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

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

All the existing variants Kodiak boards are using Gunyah hypervisor
which means that, so far, Linux-based OS could only boot in EL1 on those
devices.  However, it is possible for us to boot Linux at EL2 on these
devices [1].

When running under Gunyah, the remote processor firmware IOMMU
streams are controlled by Gunyah. However, without Gunyah, the IOMMU is
managed by the consumer of this DeviceTree. Therefore, describe the
firmware streams for each remote processor.

Add a EL2-specific DT overlay and apply it to Kodiak IOT variant devices
to create -el2.dtb for each of them alongside "normal" dtb.

Note that modem and media subsystems haven't been supported yet due
to missing dependencies. For GPU to work, zap shader is disabled and
in EL2 mode the kernel owns hardware watchdog which is enabled here.
And for wifi to work wpss copy engine memory need to be mapped for
WPSS firmware to work which is aligning with sc7280 chrome.

[1]
https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi

Link: https://lore.kernel.org/all/20260624063952.2242702-1-mukesh.ojha@oss.qualcomm.com/
Co-developed-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
Signed-off-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: CR Not Eligible for Merge

CR 4583945 is not eligible for merge.

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

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

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

@qlijarvis

Copy link
Copy Markdown

PR #756 — validate-patch

PR: #756

Verdict Issues Detailed Report
⚠️ 3 Full report

Final Summary

  1. Lore link present: Yes — Link tag present with message-ID 20260624063952.2242702-1-mukesh.ojha@oss.qualcomm.com
  2. Lore link matches PR commits: Cannot verify — network access restricted; unable to fetch upstream patch for comparison
  3. Upstream patch status: Unknown — FROMLIST prefix indicates pending upstream review; cannot verify current status due to network restrictions
  4. PR present in qcom-next: Not checked — no kernel tree access per constraints
Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #756 - FROMLIST: arm64: dts: qcom: kodiak: Add EL2 overlay
Upstream commit: https://lore.kernel.org/all/20260624063952.2242702-1-mukesh.ojha@oss.qualcomm.com/
Verdict: ⚠️ PARTIAL

Commit Message

Check Status Note
Subject matches upstream ⚠️ Cannot verify - lore link inaccessible (network restricted)
Body preserves rationale Comprehensive explanation of EL2 boot, Gunyah hypervisor context, and technical rationale
Fixes tag present/correct N/A Not a bug fix; new feature addition
Authorship preserved Mukesh Ojha as author, Co-developed-by tag for Sumit Garg properly formatted
Backport note (if applicable) N/A FROMLIST prefix indicates pending upstream submission

Diff

File Status Notes
arch/arm64/boot/dts/qcom/kodiak-el2.dtso Removes blank line, replaces remoteproc_wpss with reserved_memory + wifi nodes
arch/arm64/boot/dts/qcom/sc7280.dtsi Adds label reserved_memory: to enable overlay reference

Issues

  • Commit message tag ordering: The Link: tag appears before Co-developed-by and Signed-off-by tags. Per kernel convention, Link: should appear after all Signed-off-by tags (typically just before the --- separator).
  • Upstream verification blocked: Cannot fetch upstream patch from lore.kernel.org due to network restrictions. The lore link date (2026-06-24) matches the patch date, suggesting this is a very recent or future-dated submission.
  • remoteproc_wpss removal: The patch removes the &remoteproc_wpss IOMMU configuration without explanation in the commit message. The message mentions "describe the firmware streams for each remote processor" but the diff shows removal, not addition. This appears contradictory.

Verdict

Cannot fully validate due to network restrictions preventing upstream comparison. The patch structure is mostly correct, but tag ordering should be fixed and the remoteproc_wpss removal needs clarification.

Final Summary

  1. Lore link present: Yes — Link tag present with message-ID 20260624063952.2242702-1-mukesh.ojha@oss.qualcomm.com
  2. Lore link matches PR commits: Cannot verify — network access restricted; unable to fetch upstream patch for comparison
  3. Upstream patch status: Unknown — FROMLIST prefix indicates pending upstream review; cannot verify current status due to network restrictions
  4. PR present in qcom-next: Not checked — no kernel tree access per constraints

@qlijarvis

Copy link
Copy Markdown

PR #756 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch No style issues detected
dt-binding-check ⏭️ Skipped - no binding changes
dtb-check Pre-existing schema validation error (not introduced by this PR)
sparse-check ⏭️ Skipped - no C code changes
check-uapi-headers ⏭️ Skipped - no UAPI changes
check-patch-compliance Patch differs from upstream lore link
tag-check N/A Not applicable for qcom-6.18.y
qcom-next-check FROMLIST: prefix present

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #756 - FROMLIST: arm64: dts: qcom: kodiak: Add EL2 overlay
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/28092202077

Checker Result Summary
checkpatch No style issues detected
dt-binding-check ⏭️ Skipped - no binding changes
dtb-check Pre-existing schema validation error (not introduced by this PR)
sparse-check ⏭️ Skipped - no C code changes
check-uapi-headers ⏭️ Skipped - no UAPI changes
check-patch-compliance Patch differs from upstream lore link
tag-check N/A Not applicable for qcom-6.18.y
qcom-next-check FROMLIST: prefix present

❌ check-patch-compliance

Root cause: The patch content in PR #756 differs from the upstream patch referenced in the Link: trailer.

Failure details:

Checking commit: FROMLIST: arm64: dts: qcom: kodiak: Add EL2 overlay
Change is different from the one mentioned in Link

Fix: This checker validates that FROMLIST/UPSTREAM patches match their upstream lore.kernel.org references exactly. The failure indicates one of:

  1. The patch was modified after being posted to the mailing list
  2. The Link: trailer points to a different version than what's in the PR
  3. Local changes were made that deviate from upstream

Action required:

Reproduce locally:

cd kernel-repo
git fetch origin pull/756/head:pr-756
git checkout qcom-6.18.y
git merge --no-commit pr-756
bash kernel-checkers/check-patch-compliance.sh --kernel-src . --base qcom-6.18.y --head HEAD

❌ dtb-check

Root cause: Pre-existing devicetree schema validation error in qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtb - NOT introduced by this PR.

Failure details:

qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtb: serial@990000 (qcom,geni-uart): 
  Node has both 'interrupts' and 'interrupts-extended' properties, which is ambiguous 
  per DT schema - valid under each of {'required': ['interrupts-extended']}, 
  {'required': ['interrupts']}

Analysis: The dtb-check script compares errors between the base branch (qcom-6.18.y) and the PR head. This error appears in the "new errors" list, but it's actually a pre-existing issue in an unrelated board file (qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtb). The PR only touches:

  • arch/arm64/boot/dts/qcom/kodiak-el2.dtso
  • arch/arm64/boot/dts/qcom/sc7280.dtsi

Neither of these files is related to the failing dtb. This is likely a false positive caused by:

  1. Timing differences in schema validation between base and head builds
  2. A pre-existing schema violation that's now being caught
  3. Changes in the DT validation tooling between runs

Verdict for this PR: This dtb-check failure is not a blocker for PR #756 as it's unrelated to the changes introduced.

Fix (for the pre-existing issue, not this PR):
The serial@990000 node in the cologne board file should use either interrupts OR interrupts-extended, not both. Someone should file a separate issue/PR to fix:

arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dts

Verdict

1 blocker to fix: check-patch-compliance failure requires investigation and resolution. The patch content must either match the upstream lore link exactly, or the deviation must be documented/justified.

The dtb-check failure is a false positive (pre-existing unrelated issue) and should not block this PR.

@qcomlnxci

Copy link
Copy Markdown

Test Matrix

Test Case lemans-evk monaco-evk qcs615-ride qcs6490-rb3gen2 qcs8300-ride qcs9100-ride-r3 x1e80100-crd
BT_FW_KMD_Service ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
BT_ON_OFF ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
BT_SCAN ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
CPUFreq_Validation ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
CPU_affinity ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
DSP_AudioPD ◻️ ✅ Pass ⚠️ skip ✅ Pass ✅ Pass ⚠️ skip ◻️
Ethernet ◻️ ✅ Pass ⚠️ skip ⚠️ skip ⚠️ skip ⚠️ skip ◻️
Freq_Scaling ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
GIC ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
IPA ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
Interrupts ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
OpenCV ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
PCIe ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
Probe_Failure_Check ◻️ ❌ Fail ❌ Fail ❌ Fail ❌ Fail ❌ Fail ◻️
RMNET ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
UFS_Validation ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
USBHost ◻️ ❌ Fail ❌ Fail ❌ Fail ❌ Fail ❌ Fail ◻️
WiFi_Firmware_Driver ◻️ ❌ Fail ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
WiFi_OnOff ◻️ ❌ Fail ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
adsp_remoteproc ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ❌ Fail ◻️
cdsp_remoteproc ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ❌ Fail ◻️
gpdsp_remoteproc ◻️ ✅ Pass ⚠️ skip ⚠️ skip ✅ Pass ❌ Fail ◻️
hotplug ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
irq ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
kaslr ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
pinctrl ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
qcom_hwrng ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
remoteproc ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ❌ Fail ◻️
rngtest ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
shmbridge ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
smmu ◻️ ✅ Pass ❌ Fail ✅ Pass ✅ Pass ❌ Fail ◻️
watchdog ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️
wpss_remoteproc ◻️ ✅ Pass ✅ Pass ✅ Pass ✅ Pass ✅ Pass ◻️

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.

4 participants