[PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees

Xin Liu posted 1 patch 1 week, 1 day ago
There is a newer version of this series
arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
1 file changed, 8 insertions(+)
[PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Xin Liu 1 week, 1 day ago
All the existing variants Talos 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 remoteproc to the EL2 device trees to generate the corresponding
-el2.dtb files.

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

Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1-el2.dtso b/arch/arm64/boot/dts/qcom/x1-el2.dtso
index 175679be01eb..8279854fd73c 100644
--- a/arch/arm64/boot/dts/qcom/x1-el2.dtso
+++ b/arch/arm64/boot/dts/qcom/x1-el2.dtso
@@ -52,6 +52,14 @@ &pcie_smmu {
 	status = "okay";
 };
 
+&remoteproc_adsp {
+	iommus = <&apps_smmu 0x1000 0x0>;
+};
+
+&remoteproc_cdsp {
+	iommus = <&apps_smmu 0x0c00 0x0>;
+};
+
 /*
  * The "SBSA watchdog" is implemented in software in Gunyah
  * and can't be used when running in EL2.
-- 
2.43.0
Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Dmitry Baryshkov 1 week ago
On Thu, Jan 29, 2026 at 11:31:13PM -0800, Xin Liu wrote:
> All the existing variants Talos boards are using Gunyah hypervisor

Why are you mentioning Talos here?

> 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 remoteproc to the EL2 device trees to generate the corresponding
> -el2.dtb files.
> 
> [1]
> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi
> 
> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 

-- 
With best wishes
Dmitry
Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Xin Liu 5 days, 15 hours ago
On 1/31/2026 3:56 PM, Dmitry Baryshkov wrote:
> On Thu, Jan 29, 2026 at 11:31:13PM -0800, Xin Liu wrote:
>> All the existing variants Talos boards are using Gunyah hypervisor
> Why are you mentioning Talos here?

Thank you for your reminder. My fault, will update next version.


XIN

>
>> 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 remoteproc to the EL2 device trees to generate the corresponding
>> -el2.dtb files.
>>
>> [1]
>> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi
>>
>> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
>> ---
>>   arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Xilin Wu 1 week, 1 day ago
On 1/30/2026 3:31 PM, Xin Liu wrote:
> All the existing variants Talos 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 remoteproc to the EL2 device trees to generate the corresponding
> -el2.dtb files.
> 
> [1]
> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi
> 
> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
> ---
>   arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 

Hi Xin,

Will this work on Snapdragon X laptops running the older Windows 
firmware? I believe that Peripheral Image Loader support in EL2 requires 
a newer version of the TrustZone firmware.

I noticed that the TrustZone firmware used in hamoa_iot-ubuntu [1] has a 
different version string compared to the WP firmware found in laptops:

iot-ubuntu: TZ.XF.5.0
WP: TZ.XF.5.28.1


[1] 
https://softwarecenter.qualcomm.com/nexus/generic/software/chip/ubuntu_qualcomm_iot-spf-1-0/ubuntu-qualcomm-iot-spf-1-0_test_device_public/r1.0.r1_00004.0/hamoa_iot-ubun-1-0-r1/common/build/bin

-- 
Best regards,
Xilin Wu <sophon@radxa.com>
Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Xin Liu 5 days, 15 hours ago
On 1/30/2026 5:37 PM, Xilin Wu wrote:
> On 1/30/2026 3:31 PM, Xin Liu wrote:
>> All the existing variants Talos 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 remoteproc to the EL2 device trees to generate the corresponding
>> -el2.dtb files.
>>
>> [1]
>> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi 
>>
>>
>> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
>> ---
>>   arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>
> Hi Xin,
>
> Will this work on Snapdragon X laptops running the older Windows 
> firmware? I believe that Peripheral Image Loader support in EL2 
> requires a newer version of the TrustZone firmware.
>
> I noticed that the TrustZone firmware used in hamoa_iot-ubuntu [1] has 
> a different version string compared to the WP firmware found in laptops:
>
> iot-ubuntu: TZ.XF.5.0
> WP: TZ.XF.5.28.1
>
>
> [1] 
> https://softwarecenter.qualcomm.com/nexus/generic/software/chip/ubuntu_qualcomm_iot-spf-1-0/ubuntu-qualcomm-iot-spf-1-0_test_device_public/r1.0.r1_00004.0/hamoa_iot-ubun-1-0-r1/common/build/bin 
>
>
Hi,Xilin

Now firmware can not work, still need TZ team to modify some things. It 
is the only modification from kernel side, so I update it.

Uploading this modification will also facilitate debugging by TZ team.


Thanks,

Xin

Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Konrad Dybcio 1 week, 1 day ago
On 1/30/26 8:31 AM, Xin Liu wrote:
> All the existing variants Talos 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 remoteproc to the EL2 device trees to generate the corresponding
> -el2.dtb files.
> 
> [1]
> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi
> 
> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/x1-el2.dtso b/arch/arm64/boot/dts/qcom/x1-el2.dtso
> index 175679be01eb..8279854fd73c 100644
> --- a/arch/arm64/boot/dts/qcom/x1-el2.dtso
> +++ b/arch/arm64/boot/dts/qcom/x1-el2.dtso
> @@ -52,6 +52,14 @@ &pcie_smmu {
>  	status = "okay";
>  };
>  
> +&remoteproc_adsp {
> +	iommus = <&apps_smmu 0x1000 0x0>;

The mask should be 0x80 according to docs (although the resulting SID
is the same)

> +};
> +
> +&remoteproc_cdsp {
> +	iommus = <&apps_smmu 0x0c00 0x0>;

This looks in line with docs

Konrad
Re: [PATCH] arm64: dts: qcom: hamoa: Add remoteproc in EL2 device trees
Posted by Xin Liu 5 days, 16 hours ago
On 1/30/2026 5:24 PM, Konrad Dybcio wrote:
> On 1/30/26 8:31 AM, Xin Liu wrote:
>> All the existing variants Talos 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 remoteproc to the EL2 device trees to generate the corresponding
>> -el2.dtb files.
>>
>> [1]
>> https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-developer-touchpoints.html#uefi
>>
>> Signed-off-by: Xin Liu <xin.liu@oss.qualcomm.com>
>> ---
>>   arch/arm64/boot/dts/qcom/x1-el2.dtso | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/x1-el2.dtso b/arch/arm64/boot/dts/qcom/x1-el2.dtso
>> index 175679be01eb..8279854fd73c 100644
>> --- a/arch/arm64/boot/dts/qcom/x1-el2.dtso
>> +++ b/arch/arm64/boot/dts/qcom/x1-el2.dtso
>> @@ -52,6 +52,14 @@ &pcie_smmu {
>>   	status = "okay";
>>   };
>>   
>> +&remoteproc_adsp {
>> +	iommus = <&apps_smmu 0x1000 0x0>;
> The mask should be 0x80 according to docs (although the resulting SID
> is the same)

Thank you for your reminder, will update later.


XIN

>> +};
>> +
>> +&remoteproc_cdsp {
>> +	iommus = <&apps_smmu 0x0c00 0x0>;
> This looks in line with docs
>
> Konrad