From: Shiju Jose shiju.jose@huawei.com
Add changes to run a secondary OP-TEE at S-EL1 for SPMC_AT_EL=2, where Hafnium is loaded at S-EL2.
Signed-off-by: Shiju Jose shiju.jose@huawei.com
Changes: V2 -> V3 1. Changes w.r.t the relocatable OP-TEE support. 2. Remove building of secondary OP-TEE as the primary OP-TEE binary use as the secondary OP-TEE as well.
V1 -> V2 1. Changed patch subject and patch description. 2. Fix for the comments from Jens Wiklander by adding separate build flags and build path for the secondary OP-TEE. --- qemu_v8/optee_sp_manifest.dts | 9 ++++ qemu_v8/secondary_optee_sp_manifest.dts | 55 +++++++++++++++++++++++++ qemu_v8/sp_layout.json | 4 ++ qemu_v8/spmc_el2_manifest.dts | 10 ++++- qemu_v8/tb_fw_config.dts | 4 ++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 qemu_v8/secondary_optee_sp_manifest.dts
diff --git a/qemu_v8/optee_sp_manifest.dts b/qemu_v8/optee_sp_manifest.dts index e576295..7ffdea5 100644 --- a/qemu_v8/optee_sp_manifest.dts +++ b/qemu_v8/optee_sp_manifest.dts @@ -29,6 +29,9 @@ messaging-method = <0x3>; /* Direct messaging only */ ns-interrupts-action = <1>; /* NS_ACTION_ME */
+ /* mem-size OP-TEE specific binding. */ + mem-size = <0x700000>; + /* Boot protocol */ gp-register-num = <0x0>;
@@ -43,4 +46,10 @@ interrupts = <0x28 0xb01>; }; }; + + /* Boot Info */ + boot-info { + compatible = "arm,ffa-manifest-boot-info"; + ffa_manifest; + }; }; diff --git a/qemu_v8/secondary_optee_sp_manifest.dts b/qemu_v8/secondary_optee_sp_manifest.dts new file mode 100644 index 0000000..0d22da8 --- /dev/null +++ b/qemu_v8/secondary_optee_sp_manifest.dts @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2020, Arm Limited. All rights reserved. + * Copyright (c) 2022, Linaro Limited + * + * SPDX-License-Identifier: BSD-3-Clause + * + * This file is a Partition Manifest (PM) for a minimal Secure Partition (SP) + * that has additional optional properties defined. + * + */ + +/dts-v1/; + +/ { + compatible = "arm,ffa-manifest-1.0"; + + /* Properties */ + description = "sec-op-tee"; + ffa-version = <0x00010001>; /* 31:16 - Major, 15:0 - Minor */ + uuid = <0xe4b5f42f 0xed112faf 0x3351d7b9 0xe9cc99fc>; + id = <1>; + execution-ctx-count = <8>; + exception-level = <2>; /* S-EL1 */ + execution-state = <0>; /* AARCH64 */ + load-address = <0xea00000>; + entrypoint-offset = <0x4000>; + xlat-granule = <0>; /* 4KiB */ + boot-order = <0>; + messaging-method = <0x3>; /* Direct messaging only */ + ns-interrupts-action = <1>; /* NS_ACTION_ME */ + + /* mem-size OP-TEE specific binding. */ + mem-size = <0x600000>; + + /* Boot protocol */ + gp-register-num = <0x0>; + + device-regions { + compatible = "arm,ffa-manifest-device-regions"; + + uart1 { + base-address = <0x00000000 0x09040000>; + pages-count = <1>; + attributes = <0x3>; /* read-write */ + /* SPI, level-triggered, secure, priority=1 */ + interrupts = <0x28 0xb01>; + }; + }; + + /* Boot Info */ + boot-info { + compatible = "arm,ffa-manifest-boot-info"; + ffa_manifest; + }; +}; diff --git a/qemu_v8/sp_layout.json b/qemu_v8/sp_layout.json index c6a02a9..4054542 100644 --- a/qemu_v8/sp_layout.json +++ b/qemu_v8/sp_layout.json @@ -2,5 +2,9 @@ "op-tee" : { "image": "../../optee_os/out/arm/core/tee-pager_v2.bin", "pm": "optee_sp_manifest.dts" + }, + "sec-op-tee" : { + "image": "../../optee_os/out/arm/core/tee-pager_v2.bin", + "pm": "secondary_optee_sp_manifest.dts" } } diff --git a/qemu_v8/spmc_el2_manifest.dts b/qemu_v8/spmc_el2_manifest.dts index 7acaa38..5ad23dc 100644 --- a/qemu_v8/spmc_el2_manifest.dts +++ b/qemu_v8/spmc_el2_manifest.dts @@ -30,7 +30,15 @@ load_address = <0xe300000>; debug_name = "op-tee"; vcpu_count = <4>; - mem_size = <0xd00000>; + mem_size = <0x700000>; + }; + + vm2 { + is_ffa_partition; + load_address = <0xea00000>; + debug_name = "sec-op-tee"; + vcpu_count = <4>; + mem_size = <0x600000>; }; };
diff --git a/qemu_v8/tb_fw_config.dts b/qemu_v8/tb_fw_config.dts index 68f7b3b..ce3c26a 100644 --- a/qemu_v8/tb_fw_config.dts +++ b/qemu_v8/tb_fw_config.dts @@ -14,5 +14,9 @@ uuid = "486178e0-e7f8-11e3-bc5e-0002a5d5c51b"; load-address = <0xe300000>; }; + sec-op-tee { + uuid = "2ff4b5e4-af2f-11ed-b9d7-5133fc99cce9"; + load-address = <0xea00000>; + }; }; };
Hi,
On Mon, Jun 26, 2023 at 1:13 PM shiju.jose@huawei.com wrote:
From: Shiju Jose shiju.jose@huawei.com
Add changes to run a secondary OP-TEE at S-EL1 for SPMC_AT_EL=2, where Hafnium is loaded at S-EL2.
Signed-off-by: Shiju Jose shiju.jose@huawei.com
With https://github.com/OP-TEE/build/pull/663 I'm trying to upstream the Hafnium setup. Once that's merged please create a pull request against https://github.com/OP-TEE/build and we can continue reviewing this patch there.
Thanks, Jens
Changes: V2 -> V3
- Changes w.r.t the relocatable OP-TEE support.
- Remove building of secondary OP-TEE as the primary OP-TEE
binary use as the secondary OP-TEE as well.
V1 -> V2
- Changed patch subject and patch description.
- Fix for the comments from Jens Wiklander by adding separate build flags and build path for the secondary OP-TEE.
qemu_v8/optee_sp_manifest.dts | 9 ++++ qemu_v8/secondary_optee_sp_manifest.dts | 55 +++++++++++++++++++++++++ qemu_v8/sp_layout.json | 4 ++ qemu_v8/spmc_el2_manifest.dts | 10 ++++- qemu_v8/tb_fw_config.dts | 4 ++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 qemu_v8/secondary_optee_sp_manifest.dts
diff --git a/qemu_v8/optee_sp_manifest.dts b/qemu_v8/optee_sp_manifest.dts index e576295..7ffdea5 100644 --- a/qemu_v8/optee_sp_manifest.dts +++ b/qemu_v8/optee_sp_manifest.dts @@ -29,6 +29,9 @@ messaging-method = <0x3>; /* Direct messaging only */ ns-interrupts-action = <1>; /* NS_ACTION_ME */
/* mem-size OP-TEE specific binding. */
mem-size = <0x700000>;
/* Boot protocol */ gp-register-num = <0x0>;
@@ -43,4 +46,10 @@ interrupts = <0x28 0xb01>; }; };
/* Boot Info */
boot-info {
compatible = "arm,ffa-manifest-boot-info";
ffa_manifest;
};
}; diff --git a/qemu_v8/secondary_optee_sp_manifest.dts b/qemu_v8/secondary_optee_sp_manifest.dts new file mode 100644 index 0000000..0d22da8 --- /dev/null +++ b/qemu_v8/secondary_optee_sp_manifest.dts @@ -0,0 +1,55 @@ +/*
- Copyright (c) 2020, Arm Limited. All rights reserved.
- Copyright (c) 2022, Linaro Limited
- SPDX-License-Identifier: BSD-3-Clause
- This file is a Partition Manifest (PM) for a minimal Secure Partition (SP)
- that has additional optional properties defined.
- */
+/dts-v1/;
+/ {
compatible = "arm,ffa-manifest-1.0";
/* Properties */
description = "sec-op-tee";
ffa-version = <0x00010001>; /* 31:16 - Major, 15:0 - Minor */
uuid = <0xe4b5f42f 0xed112faf 0x3351d7b9 0xe9cc99fc>;
id = <1>;
execution-ctx-count = <8>;
exception-level = <2>; /* S-EL1 */
execution-state = <0>; /* AARCH64 */
load-address = <0xea00000>;
entrypoint-offset = <0x4000>;
xlat-granule = <0>; /* 4KiB */
boot-order = <0>;
messaging-method = <0x3>; /* Direct messaging only */
ns-interrupts-action = <1>; /* NS_ACTION_ME */
/* mem-size OP-TEE specific binding. */
mem-size = <0x600000>;
/* Boot protocol */
gp-register-num = <0x0>;
device-regions {
compatible = "arm,ffa-manifest-device-regions";
uart1 {
base-address = <0x00000000 0x09040000>;
pages-count = <1>;
attributes = <0x3>; /* read-write */
/* SPI, level-triggered, secure, priority=1 */
interrupts = <0x28 0xb01>;
};
};
/* Boot Info */
boot-info {
compatible = "arm,ffa-manifest-boot-info";
ffa_manifest;
};
+}; diff --git a/qemu_v8/sp_layout.json b/qemu_v8/sp_layout.json index c6a02a9..4054542 100644 --- a/qemu_v8/sp_layout.json +++ b/qemu_v8/sp_layout.json @@ -2,5 +2,9 @@ "op-tee" : { "image": "../../optee_os/out/arm/core/tee-pager_v2.bin", "pm": "optee_sp_manifest.dts"
},
"sec-op-tee" : {
"image": "../../optee_os/out/arm/core/tee-pager_v2.bin",
"pm": "secondary_optee_sp_manifest.dts" }
} diff --git a/qemu_v8/spmc_el2_manifest.dts b/qemu_v8/spmc_el2_manifest.dts index 7acaa38..5ad23dc 100644 --- a/qemu_v8/spmc_el2_manifest.dts +++ b/qemu_v8/spmc_el2_manifest.dts @@ -30,7 +30,15 @@ load_address = <0xe300000>; debug_name = "op-tee"; vcpu_count = <4>;
mem_size = <0xd00000>;
mem_size = <0x700000>;
};
vm2 {
is_ffa_partition;
load_address = <0xea00000>;
debug_name = "sec-op-tee";
vcpu_count = <4>;
mem_size = <0x600000>; }; };
diff --git a/qemu_v8/tb_fw_config.dts b/qemu_v8/tb_fw_config.dts index 68f7b3b..ce3c26a 100644 --- a/qemu_v8/tb_fw_config.dts +++ b/qemu_v8/tb_fw_config.dts @@ -14,5 +14,9 @@ uuid = "486178e0-e7f8-11e3-bc5e-0002a5d5c51b"; load-address = <0xe300000>; };
sec-op-tee {
uuid = "2ff4b5e4-af2f-11ed-b9d7-5133fc99cce9";
load-address = <0xea00000>;
}; };
};
2.25.1
Hi Jens,
-----Original Message----- From: Jens Wiklander jens.wiklander@linaro.org Sent: 11 July 2023 10:02 To: Shiju Jose shiju.jose@huawei.com Cc: linaro-open-discussions@op-lists.linaro.org; Olivier.Deprez@arm.com; Linuxarm linuxarm@huawei.com; Jonathan Cameron jonathan.cameron@huawei.com; Zengtao (B) prime.zeng@hisilicon.com; zhouguangwei (C) zhouguangwei5@huawei.com Subject: Re: [PATCH V3 1/1] qemu_v8: add support to run secondary OP-TEE
Hi,
On Mon, Jun 26, 2023 at 1:13 PM shiju.jose@huawei.com wrote:
From: Shiju Jose shiju.jose@huawei.com
Add changes to run a secondary OP-TEE at S-EL1 for SPMC_AT_EL=2, where Hafnium is loaded at S-EL2.
Signed-off-by: Shiju Jose shiju.jose@huawei.com
With https://github.com/OP-TEE/build/pull/663 I'm trying to upstream the Hafnium setup. Once that's merged please create a pull request against https://github.com/OP-TEE/build and we can continue reviewing this patch there.
Sure.
Thanks, Shiju
Thanks, Jens
...
2.25.1
linaro-open-discussions@op-lists.linaro.org