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