Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 1 | From 3bb5826af8e3891617d41a30419de0ce089f9fc3 Mon Sep 17 00:00:00 2001 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 2 | From: Vishnu Banavath <vishnu.banavath@arm.com> |
| 3 | Date: Fri, 10 Dec 2021 20:03:35 +0000 |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 4 | Subject: [PATCH 19/26] efi_capsule: corstone1000: pass interface id and buffer |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 5 | event id using register w4 |
| 6 | |
| 7 | Initially the interface/event IDs are passed to the SP using register |
| 8 | w3 and w5. |
| 9 | |
| 10 | Now the SE proxy SP requires this arguments to be in register w4. |
| 11 | |
| 12 | This change is to pass interface ID(31:16) and event ID(15:0) |
| 13 | to SE proxy SP to trigger an event to secure enclave about |
| 14 | firmware update. |
| 15 | |
| 16 | Signed-off-by: Vishnu Banavath <vishnu.banavath@arm.com> |
| 17 | Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> |
| 18 | Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 19 | Upstream-Status: Pending [Not submitted to upstream yet] |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 20 | --- |
| 21 | include/configs/corstone1000.h | 6 ++++++ |
| 22 | lib/efi_loader/efi_capsule.c | 11 +++++++---- |
| 23 | 2 files changed, 13 insertions(+), 4 deletions(-) |
| 24 | |
| 25 | diff --git a/include/configs/corstone1000.h b/include/configs/corstone1000.h |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 26 | index 2d89a8966e..4637dd5d5d 100644 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 27 | --- a/include/configs/corstone1000.h |
| 28 | +++ b/include/configs/corstone1000.h |
| 29 | @@ -24,6 +24,12 @@ |
| 30 | #define CORSTONE1000_BUFFER_READY_EVT (0x1) |
| 31 | #define CORSTONE1000_KERNEL_STARTED_EVT (0x2) |
| 32 | |
| 33 | +#define PREP_SEPROXY_SVC_ID_MASK GENMASK(31, 16) |
| 34 | +#define PREP_SEPROXY_SVC_ID(x) (FIELD_PREP(PREP_SEPROXY_SVC_ID_MASK, (x))) |
| 35 | + |
| 36 | +#define PREP_SEPROXY_EVT_MASK GENMASK(15, 0) |
| 37 | +#define PREP_SEPROXY_EVT(x) (FIELD_PREP(PREP_SEPROXY_EVT_MASK, (x))) |
| 38 | + |
| 39 | /* Size in 4KB pages of the EFI capsule buffer */ |
| 40 | #define CORSTONE1000_CAPSULE_BUFFER_SIZE (8192) /* 32 MB */ |
| 41 | |
| 42 | diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 43 | index c0f3427a60..bf8bd68256 100644 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 44 | --- a/lib/efi_loader/efi_capsule.c |
| 45 | +++ b/lib/efi_loader/efi_capsule.c |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame] | 46 | @@ -28,6 +28,8 @@ |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 47 | #ifdef CONFIG_TARGET_CORSTONE1000 |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 48 | #include <arm_ffa.h> |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 49 | #include <cpu_func.h> |
| 50 | +#include <linux/bitfield.h> |
| 51 | +#include <linux/bitops.h> |
| 52 | |
| 53 | void *__efi_runtime_data corstone1000_capsule_buf; /* capsule shared buffer virtual address */ |
| 54 | efi_guid_t corstone1000_capsule_guid = EFI_CORSTONE1000_CAPSULE_ID_GUID; |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 55 | @@ -582,11 +584,12 @@ static int __efi_runtime efi_corstone1000_buffer_ready_event(u32 capsule_image_s |
| 56 | log_debug("[%s]\n", __func__); |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 57 | |
| 58 | /* |
| 59 | - * setting the buffer ready event arguments |
| 60 | + * setting the buffer ready event arguments in register w4: |
| 61 | + * - capsule update interface ID (31:16) |
| 62 | + * - the buffer ready event ID (15:0) |
| 63 | */ |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 64 | - msg.data0 = CORSTONE1000_SEPROXY_UPDATE_SVC_ID; /* x3 */ |
| 65 | - msg.data1 = capsule_image_size; /* x4 */ |
| 66 | - msg.data2 = CORSTONE1000_BUFFER_READY_EVT; /* x5 */ |
| 67 | + msg.data1 = PREP_SEPROXY_SVC_ID(CORSTONE1000_SEPROXY_UPDATE_SVC_ID) | |
| 68 | + PREP_SEPROXY_EVT(CORSTONE1000_BUFFER_READY_EVT); /* w4 */ |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 69 | |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 70 | return ffa_bus_ops_get()->sync_send_receive(CORSTONE1000_SEPROXY_PART_ID, &msg); |
| 71 | } |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 72 | -- |
Patrick Williams | 8dd6848 | 2022-10-04 07:57:18 -0500 | [diff] [blame^] | 73 | 2.17.1 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 74 | |