| From b5b31064959665f4cc616733be3d989ae4356636 Mon Sep 17 00:00:00 2001 |
| From: Emekcan Aras <emekcan.aras@arm.com> |
| Date: Sun, 18 Jun 2023 16:05:27 +0100 |
| Subject: [PATCH] plat: corstone1000: Initialize capsule update provider |
| |
| Initializes the capsule update service provider in se-proxy-sp.c deployment |
| for corstone1000. |
| |
| Signed-off-by: Emekcan Aras <emekcan.aras@arm.com> |
| Upstream-Status: Inappropriate [Design is to revisted] |
| |
| --- |
| deployments/se-proxy/env/commonsp/se_proxy_sp.c | 3 +++ |
| .../infra/corstone1000/service_proxy_factory.c | 17 +++++++++++++++++ |
| .../se-proxy/infra/service_proxy_factory.h | 1 + |
| 3 files changed, 21 insertions(+) |
| |
| diff --git a/deployments/se-proxy/env/commonsp/se_proxy_sp.c b/deployments/se-proxy/env/commonsp/se_proxy_sp.c |
| index 45fcb385..dc2a9d49 100644 |
| --- a/deployments/se-proxy/env/commonsp/se_proxy_sp.c |
| +++ b/deployments/se-proxy/env/commonsp/se_proxy_sp.c |
| @@ -77,6 +77,9 @@ void __noreturn sp_main(struct ffa_init_info *init_info) |
| } |
| rpc_demux_attach(&rpc_demux, SE_PROXY_INTERFACE_ID_ATTEST, rpc_iface); |
| |
| + rpc_iface = capsule_update_proxy_create(); |
| + rpc_demux_attach(&rpc_demux, SE_PROXY_INTERFACE_ID_CAPSULE_UPDATE, rpc_iface); |
| + |
| /* End of boot phase */ |
| result = sp_msg_wait(&req_msg); |
| if (result != SP_RESULT_OK) { |
| diff --git a/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c b/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c |
| index bacab1de..32d88c97 100644 |
| --- a/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c |
| +++ b/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c |
| @@ -14,6 +14,7 @@ |
| #include <service/crypto/factory/crypto_provider_factory.h> |
| #include <service/secure_storage/frontend/secure_storage_provider/secure_storage_provider.h> |
| #include <trace.h> |
| +#include <service/capsule_update/provider/capsule_update_provider.h> |
| |
| /* backends */ |
| #include <service/crypto/backend/psa_ipc/crypto_ipc_backend.h> |
| @@ -94,3 +95,19 @@ struct rpc_interface *its_proxy_create(void) |
| |
| return secure_storage_provider_init(&its_provider, backend); |
| } |
| + |
| +struct rpc_interface *capsule_update_proxy_create(void) |
| +{ |
| + static struct capsule_update_provider capsule_update_provider; |
| + static struct rpc_caller *capsule_update_caller; |
| + |
| + capsule_update_caller = psa_ipc_caller_init(&psa_ipc); |
| + |
| + if (!capsule_update_caller) |
| + return NULL; |
| + |
| + capsule_update_provider.client.caller = capsule_update_caller; |
| + |
| + return capsule_update_provider_init(&capsule_update_provider); |
| +} |
| + |
| diff --git a/deployments/se-proxy/infra/service_proxy_factory.h b/deployments/se-proxy/infra/service_proxy_factory.h |
| index 298d407a..02aa7fe2 100644 |
| --- a/deployments/se-proxy/infra/service_proxy_factory.h |
| +++ b/deployments/se-proxy/infra/service_proxy_factory.h |
| @@ -17,6 +17,7 @@ struct rpc_interface *attest_proxy_create(void); |
| struct rpc_interface *crypto_proxy_create(void); |
| struct rpc_interface *ps_proxy_create(void); |
| struct rpc_interface *its_proxy_create(void); |
| +struct rpc_interface *capsule_update_proxy_create(void); |
| |
| #ifdef __cplusplus |
| } |
| -- |
| 2.17.1 |
| |