mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
@ 2026-06-24  6:39 Mukesh Ojha
  2026-06-25  1:14 ` Miaoqing Pan
  0 siblings, 1 reply; 9+ messages in thread
From: Mukesh Ojha @ 2026-06-24  6:39 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Mukesh Ojha, Sumit Garg

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

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>
---
Changes in v8: https://lore.kernel.org/lkml/20260522115936.201208-2-sumit.garg@kernel.org/  
 - Added a wpss copy engine memory similar to chrome for Wifi to work.
 - WPSS does not have firmware Stream, so that was removed.
 - Added wifi streams similar to chrome for wifi to work.
 - Removed this patch from Generic Pas patch series, can be followed
   separately.
 - Moved Sumit as co-author as part of modification done to the patch
   in the past.
 - Added some more kodiak's board variants in the makefile.

Changes in v1-v7:
 - mpss was disabled and will be enabled once the dependencies patches
  get merged.

 arch/arm64/boot/dts/qcom/Makefile        | 12 ++++++
 arch/arm64/boot/dts/qcom/kodiak-el2.dtso | 52 ++++++++++++++++++++++++
 arch/arm64/boot/dts/qcom/kodiak.dtsi     |  2 +-
 3 files changed, 65 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm64/boot/dts/qcom/kodiak-el2.dtso

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f09c..d2cee1190954 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -164,7 +164,11 @@ purwa-iot-evk-el2-dtbs	:= purwa-iot-evk.dtb x1-el2.dtbo
 
 dtb-$(CONFIG_ARCH_QCOM)	+= purwa-iot-evk-el2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-fairphone-fp5.dtb
+
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp.dtb
+qcm6490-idp-el2-dtbs := qcm6490-idp.dtb kodiak-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp-el2.dtb
+
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-particle-tachyon.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-shift-otter.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
@@ -176,12 +180,20 @@ qcs615-ride-el2-dtbs := qcs615-ride.dtb talos-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs615-ride-el2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-radxa-dragon-q6a.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2.dtb
+qcs6490-rb3gen2-el2-dtbs := qcs6490-rb3gen2.dtb kodiak-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-el2.dtb
 
 qcs6490-rb3gen2-vision-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-vision-mezzanine.dtbo
 qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-industrial-mezzanine.dtbo
 
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine.dtb
+qcs6490-rb3gen2-industrial-mezzanine-el2-dtbs := qcs6490-rb3gen2-industrial-mezzanine.dtb kodiak-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine-el2.dtb
+
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine.dtb
+qcs6490-rb3gen2-vision-mezzanine-el2-dtbs := qcs6490-rb3gen2-vision-mezzanine.dtb kodiak-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine-el2.dtb
+
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-minipc-g1iot.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-rubikpi3.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs8300-ride.dtb
diff --git a/arch/arm64/boot/dts/qcom/kodiak-el2.dtso b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
new file mode 100644
index 000000000000..91e4cda45b49
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ *
+ * Kodiak specific modifications required to boot in EL2.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&gpu_zap_shader {
+	status = "disabled";
+};
+
+&remoteproc_adsp {
+	iommus = <&apps_smmu 0x1800 0x0>;
+};
+
+&remoteproc_cdsp {
+	iommus = <&apps_smmu 0x11a0 0x0400>;
+};
+
+&remoteproc_mpss {
+	status = "disabled";
+};
+
+&reserved_memory {
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	wlan_ce_mem: wlan-ce@4cd000 {
+		no-map;
+		reg = <0x0 0x004cd000 0x0 0x1000>;
+	};
+};
+
+&venus {
+	status = "disabled";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&wifi {
+	memory-region = <&wlan_fw_mem>, <&wlan_ce_mem>;
+	status = "okay";
+
+	wifi-firmware {
+		iommus = <&apps_smmu 0x1c02 0x1>;
+	};
+};
diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
index fa540d8c2615..2486d15fa2ba 100644
--- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
+++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
@@ -91,7 +91,7 @@ sleep_clk: sleep-clk {
 		};
 	};
 
-	reserved-memory {
+	reserved_memory: reserved-memory {
 		#address-cells = <2>;
 		#size-cells = <2>;
 		ranges;
-- 
2.53.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-24  6:39 [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay Mukesh Ojha
@ 2026-06-25  1:14 ` Miaoqing Pan
  2026-06-25  6:33   ` Mukesh Ojha
  2026-06-29 11:36   ` Konrad Dybcio
  0 siblings, 2 replies; 9+ messages in thread
From: Miaoqing Pan @ 2026-06-25  1:14 UTC (permalink / raw)
  To: Mukesh Ojha, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Sumit Garg



On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
> 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
>
> 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>
> ---
> Changes in v8: https://lore.kernel.org/lkml/20260522115936.201208-2-sumit.garg@kernel.org/
>   - Added a wpss copy engine memory similar to chrome for Wifi to work.
>   - WPSS does not have firmware Stream, so that was removed.
>   - Added wifi streams similar to chrome for wifi to work.
>   - Removed this patch from Generic Pas patch series, can be followed
>     separately.
>   - Moved Sumit as co-author as part of modification done to the patch
>     in the past.
>   - Added some more kodiak's board variants in the makefile.
>
> Changes in v1-v7:
>   - mpss was disabled and will be enabled once the dependencies patches
>    get merged.
>
>   arch/arm64/boot/dts/qcom/Makefile        | 12 ++++++
>   arch/arm64/boot/dts/qcom/kodiak-el2.dtso | 52 ++++++++++++++++++++++++
>   arch/arm64/boot/dts/qcom/kodiak.dtsi     |  2 +-
>   3 files changed, 65 insertions(+), 1 deletion(-)
>   create mode 100644 arch/arm64/boot/dts/qcom/kodiak-el2.dtso
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 6f33c4e2f09c..d2cee1190954 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -164,7 +164,11 @@ purwa-iot-evk-el2-dtbs	:= purwa-iot-evk.dtb x1-el2.dtbo
>   
>   dtb-$(CONFIG_ARCH_QCOM)	+= purwa-iot-evk-el2.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-fairphone-fp5.dtb
> +
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp.dtb
> +qcm6490-idp-el2-dtbs := qcm6490-idp.dtb kodiak-el2.dtbo
> +dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp-el2.dtb
> +
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-particle-tachyon.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-shift-otter.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
> @@ -176,12 +180,20 @@ qcs615-ride-el2-dtbs := qcs615-ride.dtb talos-el2.dtbo
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs615-ride-el2.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-radxa-dragon-q6a.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2.dtb
> +qcs6490-rb3gen2-el2-dtbs := qcs6490-rb3gen2.dtb kodiak-el2.dtbo
> +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-el2.dtb
>   
>   qcs6490-rb3gen2-vision-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-vision-mezzanine.dtbo
>   qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-industrial-mezzanine.dtbo
>   
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine.dtb
> +qcs6490-rb3gen2-industrial-mezzanine-el2-dtbs := qcs6490-rb3gen2-industrial-mezzanine.dtb kodiak-el2.dtbo
> +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine-el2.dtb
> +
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine.dtb
> +qcs6490-rb3gen2-vision-mezzanine-el2-dtbs := qcs6490-rb3gen2-vision-mezzanine.dtb kodiak-el2.dtbo
> +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine-el2.dtb
> +
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-minipc-g1iot.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-rubikpi3.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs8300-ride.dtb
> diff --git a/arch/arm64/boot/dts/qcom/kodiak-el2.dtso b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
> new file mode 100644
> index 000000000000..91e4cda45b49
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
> @@ -0,0 +1,52 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + *
> + * Kodiak specific modifications required to boot in EL2.
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +&gpu_zap_shader {
> +	status = "disabled";
> +};
> +
> +&remoteproc_adsp {
> +	iommus = <&apps_smmu 0x1800 0x0>;
> +};
> +
> +&remoteproc_cdsp {
> +	iommus = <&apps_smmu 0x11a0 0x0400>;
> +};
> +
> +&remoteproc_mpss {
> +	status = "disabled";
> +};
> +
> +&reserved_memory {
> +	#address-cells = <2>;
> +	#size-cells = <2>;
> +
> +	wlan_ce_mem: wlan-ce@4cd000 {
> +		no-map;
> +		reg = <0x0 0x004cd000 0x0 0x1000>;
> +	};
> +};
> +
Is it necessary to redefine |wlan_ce_mem|? Can we consider updating 
|qcs6490-rb3gen2.dts|?
I have verified that with the following changes, *NON-KVM works fine*, 
and |wlan_ce_mem| is only used by the WCN6750 firmware.

--- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
+++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
@@ -26,7 +26,6 @@
/delete-node/ &adsp_mem;
/delete-node/ &cdsp_mem;
/delete-node/ &video_mem;
-/delete-node/ &wlan_ce_mem;
/delete-node/ &wpss_mem;
/delete-node/ &xbl_mem;

@@ -1686,7 +1685,6 @@ &venus {
};

&wifi {
-       memory-region = <&wlan_fw_mem>;
         qcom,calibration-variant = "Qualcomm_rb3gen2";


> +&venus {
> +	status = "disabled";
> +};
> +
> +&watchdog {
> +	status = "okay";
> +};
> +
> +&wifi {
> +	memory-region = <&wlan_fw_mem>, <&wlan_ce_mem>;
> +	status = "okay";
> +
> +	wifi-firmware {
> +		iommus = <&apps_smmu 0x1c02 0x1>;
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> index fa540d8c2615..2486d15fa2ba 100644
> --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
> +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> @@ -91,7 +91,7 @@ sleep_clk: sleep-clk {
>   		};
>   	};
>   
> -	reserved-memory {
> +	reserved_memory: reserved-memory {
>   		#address-cells = <2>;
>   		#size-cells = <2>;
>   		ranges;


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-25  1:14 ` Miaoqing Pan
@ 2026-06-25  6:33   ` Mukesh Ojha
  2026-06-29 11:36   ` Konrad Dybcio
  1 sibling, 0 replies; 9+ messages in thread
From: Mukesh Ojha @ 2026-06-25  6:33 UTC (permalink / raw)
  To: Miaoqing Pan
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel,
	Sumit Garg

On Thu, Jun 25, 2026 at 09:14:41AM +0800, Miaoqing Pan wrote:
> 
> 
> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
> > 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
> > 
> > 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>
> > ---
> > Changes in v8: https://lore.kernel.org/lkml/20260522115936.201208-2-sumit.garg@kernel.org/
> >   - Added a wpss copy engine memory similar to chrome for Wifi to work.
> >   - WPSS does not have firmware Stream, so that was removed.
> >   - Added wifi streams similar to chrome for wifi to work.
> >   - Removed this patch from Generic Pas patch series, can be followed
> >     separately.
> >   - Moved Sumit as co-author as part of modification done to the patch
> >     in the past.
> >   - Added some more kodiak's board variants in the makefile.
> > 
> > Changes in v1-v7:
> >   - mpss was disabled and will be enabled once the dependencies patches
> >    get merged.
> > 
> >   arch/arm64/boot/dts/qcom/Makefile        | 12 ++++++
> >   arch/arm64/boot/dts/qcom/kodiak-el2.dtso | 52 ++++++++++++++++++++++++
> >   arch/arm64/boot/dts/qcom/kodiak.dtsi     |  2 +-
> >   3 files changed, 65 insertions(+), 1 deletion(-)
> >   create mode 100644 arch/arm64/boot/dts/qcom/kodiak-el2.dtso
> > 
> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > index 6f33c4e2f09c..d2cee1190954 100644
> > --- a/arch/arm64/boot/dts/qcom/Makefile
> > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > @@ -164,7 +164,11 @@ purwa-iot-evk-el2-dtbs	:= purwa-iot-evk.dtb x1-el2.dtbo
> >   dtb-$(CONFIG_ARCH_QCOM)	+= purwa-iot-evk-el2.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-fairphone-fp5.dtb
> > +
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp.dtb
> > +qcm6490-idp-el2-dtbs := qcm6490-idp.dtb kodiak-el2.dtbo
> > +dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp-el2.dtb
> > +
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-particle-tachyon.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-shift-otter.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
> > @@ -176,12 +180,20 @@ qcs615-ride-el2-dtbs := qcs615-ride.dtb talos-el2.dtbo
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs615-ride-el2.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-radxa-dragon-q6a.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2.dtb
> > +qcs6490-rb3gen2-el2-dtbs := qcs6490-rb3gen2.dtb kodiak-el2.dtbo
> > +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-el2.dtb
> >   qcs6490-rb3gen2-vision-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-vision-mezzanine.dtbo
> >   qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-industrial-mezzanine.dtbo
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine.dtb
> > +qcs6490-rb3gen2-industrial-mezzanine-el2-dtbs := qcs6490-rb3gen2-industrial-mezzanine.dtb kodiak-el2.dtbo
> > +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-industrial-mezzanine-el2.dtb
> > +
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine.dtb
> > +qcs6490-rb3gen2-vision-mezzanine-el2-dtbs := qcs6490-rb3gen2-vision-mezzanine.dtb kodiak-el2.dtbo
> > +dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-rb3gen2-vision-mezzanine-el2.dtb
> > +
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-minipc-g1iot.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs6490-thundercomm-rubikpi3.dtb
> >   dtb-$(CONFIG_ARCH_QCOM)	+= qcs8300-ride.dtb
> > diff --git a/arch/arm64/boot/dts/qcom/kodiak-el2.dtso b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
> > new file mode 100644
> > index 000000000000..91e4cda45b49
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso
> > @@ -0,0 +1,52 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> > + *
> > + * Kodiak specific modifications required to boot in EL2.
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +&gpu_zap_shader {
> > +	status = "disabled";
> > +};
> > +
> > +&remoteproc_adsp {
> > +	iommus = <&apps_smmu 0x1800 0x0>;
> > +};
> > +
> > +&remoteproc_cdsp {
> > +	iommus = <&apps_smmu 0x11a0 0x0400>;
> > +};
> > +
> > +&remoteproc_mpss {
> > +	status = "disabled";
> > +};
> > +
> > +&reserved_memory {
> > +	#address-cells = <2>;
> > +	#size-cells = <2>;
> > +
> > +	wlan_ce_mem: wlan-ce@4cd000 {
> > +		no-map;
> > +		reg = <0x0 0x004cd000 0x0 0x1000>;
> > +	};
> > +};
> > +
> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating
> |qcs6490-rb3gen2.dts|?
> I have verified that with the following changes, *NON-KVM works fine*, and
> |wlan_ce_mem| is only used by the WCN6750 firmware.

Thanks for the review.

I was unsure about it, hence kept it as how Chrome kept it; I am
fine to keep as suggested as it seems to me these regions were
only needed for wifi-firmware mentioned, and we should not have deleted
it for qcs6490-rb3gen2.dts and idp too, will do the change that
will make this much cleaner.

> 
> --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
> +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
> @@ -26,7 +26,6 @@
> /delete-node/ &adsp_mem;
> /delete-node/ &cdsp_mem;
> /delete-node/ &video_mem;
> -/delete-node/ &wlan_ce_mem;
> /delete-node/ &wpss_mem;
> /delete-node/ &xbl_mem;
> 
> @@ -1686,7 +1685,6 @@ &venus {
> };
> 
> &wifi {
> -       memory-region = <&wlan_fw_mem>;
>         qcom,calibration-variant = "Qualcomm_rb3gen2";
> 
> 
> > +&venus {
> > +	status = "disabled";
> > +};
> > +
> > +&watchdog {
> > +	status = "okay";
> > +};
> > +
> > +&wifi {
> > +	memory-region = <&wlan_fw_mem>, <&wlan_ce_mem>;
> > +	status = "okay";
> > +
> > +	wifi-firmware {
> > +		iommus = <&apps_smmu 0x1c02 0x1>;
> > +	};
> > +};
> > diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> > index fa540d8c2615..2486d15fa2ba 100644
> > --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
> > @@ -91,7 +91,7 @@ sleep_clk: sleep-clk {
> >   		};
> >   	};
> > -	reserved-memory {
> > +	reserved_memory: reserved-memory {
> >   		#address-cells = <2>;
> >   		#size-cells = <2>;
> >   		ranges;
> 

-- 
-Mukesh Ojha

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-25  1:14 ` Miaoqing Pan
  2026-06-25  6:33   ` Mukesh Ojha
@ 2026-06-29 11:36   ` Konrad Dybcio
  2026-06-29 12:22     ` Mukesh Ojha
  1 sibling, 1 reply; 9+ messages in thread
From: Konrad Dybcio @ 2026-06-29 11:36 UTC (permalink / raw)
  To: Miaoqing Pan, Mukesh Ojha, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Sumit Garg

On 6/25/26 3:14 AM, Miaoqing Pan wrote:
> 
> 
> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
>> 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].

[...]

> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
> I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.

Is there a good reason non-chrome devices never defined that region in
the first place?

My guess-understanding is that UEFI allocates a region for it on
Qualcomm platforms already, and if unspecified, we reserve memory
again, wherever the allocator decides to

is that roughly right?

Konrad

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-29 11:36   ` Konrad Dybcio
@ 2026-06-29 12:22     ` Mukesh Ojha
  2026-06-29 14:08       ` Konrad Dybcio
  0 siblings, 1 reply; 9+ messages in thread
From: Mukesh Ojha @ 2026-06-29 12:22 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Miaoqing Pan, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel, Sumit Garg

On Mon, Jun 29, 2026 at 01:36:34PM +0200, Konrad Dybcio wrote:
> On 6/25/26 3:14 AM, Miaoqing Pan wrote:
> > 
> > 
> > On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
> >> 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].
> 
> [...]
> 
> > Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
> > I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.
> 
> Is there a good reason non-chrome devices never defined that region in
> the first place?

This region is needed by WPSS and non-Chrome (Gunyah) has IOMMU
control, maps it for WPSS during boot up while Linux at EL2 needs
to map it for WPSS in Gunyah's absence.

> 
> My guess-understanding is that UEFI allocates a region for it on
> Qualcomm platforms already, and if unspecified, we reserve memory
> again, wherever the allocator decides to
> 
> is that roughly right?
> 
> Konrad

-- 
-Mukesh Ojha

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-29 12:22     ` Mukesh Ojha
@ 2026-06-29 14:08       ` Konrad Dybcio
  2026-06-30  6:30         ` Mukesh Ojha
  0 siblings, 1 reply; 9+ messages in thread
From: Konrad Dybcio @ 2026-06-29 14:08 UTC (permalink / raw)
  To: Mukesh Ojha
  Cc: Miaoqing Pan, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel, Sumit Garg

On 6/29/26 2:22 PM, Mukesh Ojha wrote:
> On Mon, Jun 29, 2026 at 01:36:34PM +0200, Konrad Dybcio wrote:
>> On 6/25/26 3:14 AM, Miaoqing Pan wrote:
>>>
>>>
>>> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
>>>> 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].
>>
>> [...]
>>
>>> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
>>> I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.
>>
>> Is there a good reason non-chrome devices never defined that region in
>> the first place?
> 
> This region is needed by WPSS and non-Chrome (Gunyah) has IOMMU
> control, maps it for WPSS during boot up while Linux at EL2 needs
> to map it for WPSS in Gunyah's absence.

Right, I'm asking about it usefulness on devices *with* Gunyah

Konrad

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-29 14:08       ` Konrad Dybcio
@ 2026-06-30  6:30         ` Mukesh Ojha
  2026-07-01 12:26           ` Konrad Dybcio
  0 siblings, 1 reply; 9+ messages in thread
From: Mukesh Ojha @ 2026-06-30  6:30 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Miaoqing Pan, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel, Sumit Garg

On Mon, Jun 29, 2026 at 04:08:26PM +0200, Konrad Dybcio wrote:
> On 6/29/26 2:22 PM, Mukesh Ojha wrote:
> > On Mon, Jun 29, 2026 at 01:36:34PM +0200, Konrad Dybcio wrote:
> >> On 6/25/26 3:14 AM, Miaoqing Pan wrote:
> >>>
> >>>
> >>> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
> >>>> 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].
> >>
> >> [...]
> >>
> >>> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
> >>> I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.
> >>
> >> Is there a good reason non-chrome devices never defined that region in
> >> the first place?
> > 
> > This region is needed by WPSS and non-Chrome (Gunyah) has IOMMU
> > control, maps it for WPSS during boot up while Linux at EL2 needs
> > to map it for WPSS in Gunyah's absence.
> 
> Right, I'm asking about it usefulness on devices *with* Gunyah

Ideally, it does not need to be mentioned in the OS device tree when
Gunyah is present as there is no user in OS..

> 
> Konrad

-- 
-Mukesh Ojha

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-06-30  6:30         ` Mukesh Ojha
@ 2026-07-01 12:26           ` Konrad Dybcio
  2026-07-01 12:38             ` Mukesh Ojha
  0 siblings, 1 reply; 9+ messages in thread
From: Konrad Dybcio @ 2026-07-01 12:26 UTC (permalink / raw)
  To: Mukesh Ojha
  Cc: Miaoqing Pan, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel, Sumit Garg

On 6/30/26 8:30 AM, Mukesh Ojha wrote:
> On Mon, Jun 29, 2026 at 04:08:26PM +0200, Konrad Dybcio wrote:
>> On 6/29/26 2:22 PM, Mukesh Ojha wrote:
>>> On Mon, Jun 29, 2026 at 01:36:34PM +0200, Konrad Dybcio wrote:
>>>> On 6/25/26 3:14 AM, Miaoqing Pan wrote:
>>>>>
>>>>>
>>>>> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
>>>>>> 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].
>>>>
>>>> [...]
>>>>
>>>>> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
>>>>> I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.
>>>>
>>>> Is there a good reason non-chrome devices never defined that region in
>>>> the first place?
>>>
>>> This region is needed by WPSS and non-Chrome (Gunyah) has IOMMU
>>> control, maps it for WPSS during boot up while Linux at EL2 needs
>>> to map it for WPSS in Gunyah's absence.
>>
>> Right, I'm asking about it usefulness on devices *with* Gunyah
> 
> Ideally, it does not need to be mentioned in the OS device tree when
> Gunyah is present as there is no user in OS..

But it's also reserved (in the UEFI map), right?

Konrad

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay
  2026-07-01 12:26           ` Konrad Dybcio
@ 2026-07-01 12:38             ` Mukesh Ojha
  0 siblings, 0 replies; 9+ messages in thread
From: Mukesh Ojha @ 2026-07-01 12:38 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Miaoqing Pan, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel, Sumit Garg

On Wed, Jul 01, 2026 at 02:26:11PM +0200, Konrad Dybcio wrote:
> On 6/30/26 8:30 AM, Mukesh Ojha wrote:
> > On Mon, Jun 29, 2026 at 04:08:26PM +0200, Konrad Dybcio wrote:
> >> On 6/29/26 2:22 PM, Mukesh Ojha wrote:
> >>> On Mon, Jun 29, 2026 at 01:36:34PM +0200, Konrad Dybcio wrote:
> >>>> On 6/25/26 3:14 AM, Miaoqing Pan wrote:
> >>>>>
> >>>>>
> >>>>> On 6/24/2026 2:39 PM, Mukesh Ojha wrote:
> >>>>>> 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].
> >>>>
> >>>> [...]
> >>>>
> >>>>> Is it necessary to redefine |wlan_ce_mem|? Can we consider updating |qcs6490-rb3gen2.dts|?
> >>>>> I have verified that with the following changes, *NON-KVM works fine*, and |wlan_ce_mem| is only used by the WCN6750 firmware.
> >>>>
> >>>> Is there a good reason non-chrome devices never defined that region in
> >>>> the first place?
> >>>
> >>> This region is needed by WPSS and non-Chrome (Gunyah) has IOMMU
> >>> control, maps it for WPSS during boot up while Linux at EL2 needs
> >>> to map it for WPSS in Gunyah's absence.
> >>
> >> Right, I'm asking about it usefulness on devices *with* Gunyah
> > 
> > Ideally, it does not need to be mentioned in the OS device tree when
> > Gunyah is present as there is no user in OS..
> 
> But it's also reserved (in the UEFI map), right?

This is device memory and not a normal memory.

-- 
-Mukesh Ojha

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-07-01 12:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-24  6:39 [PATCH v8] arm64: dts: qcom: kodiak: Add EL2 overlay Mukesh Ojha
2026-06-25  1:14 ` Miaoqing Pan
2026-06-25  6:33   ` Mukesh Ojha
2026-06-29 11:36   ` Konrad Dybcio
2026-06-29 12:22     ` Mukesh Ojha
2026-06-29 14:08       ` Konrad Dybcio
2026-06-30  6:30         ` Mukesh Ojha
2026-07-01 12:26           ` Konrad Dybcio
2026-07-01 12:38             ` Mukesh Ojha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox