diff mbox series

[2/3] arm-bsp/tc: upgrade version of hafnium

Message ID 20220909065927.11581-2-davidson.kumaresan@arm.com
State New
Headers show
Series [1/3] arm-bsp/tc: upgrade version of trusted-firmware-a | expand

Commit Message

Davidson Kumaresan Sept. 9, 2022, 6:59 a.m. UTC
Signed-off-by: Davidson K <davidson.kumaresan@arm.com>
Change-Id: I7ccc2ab23955291bcf7d87384ba1ac94c1568443
---
 ...nterrupt-controller-register-access.patch} |   0
 ..._INTERRUPT-to-signal-an-interrupted-.patch | 152 ---------
 ..._SECONDARY_EP_REGISTER_64-to-list-of.patch |  28 --
 ...atch => 0003-tc-increase-heap-pages.patch} |   0
 ...check-receiver-s-attributes-on-memor.patch | 318 ------------------
 .../recipes-bsp/hafnium/hafnium-tc.inc        |  12 +-
 .../hafnium/hafnium/pkg-config-native.patch   |  16 +-
 7 files changed, 14 insertions(+), 512 deletions(-)
 rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0004-feat-emulate-interrupt-controller-register-access.patch => 0002-feat-emulate-interrupt-controller-register-access.patch} (100%)
 delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
 delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
 rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0006-tc-increase-heap-pages.patch => 0003-tc-increase-heap-pages.patch} (100%)
 delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch

Comments

Jon Mason Sept. 9, 2022, 7:53 p.m. UTC | #1
On Fri, Sep 09, 2022 at 12:29:26PM +0530, Davidson K wrote:
> Signed-off-by: Davidson K <davidson.kumaresan@arm.com>
> Change-Id: I7ccc2ab23955291bcf7d87384ba1ac94c1568443

I'm seeing issues with hafium not building.  See
https://gitlab.com/jonmason00/meta-arm/-/jobs/3005738154

Thanks,
Jon


> ---
>  ...nterrupt-controller-register-access.patch} |   0
>  ..._INTERRUPT-to-signal-an-interrupted-.patch | 152 ---------
>  ..._SECONDARY_EP_REGISTER_64-to-list-of.patch |  28 --
>  ...atch => 0003-tc-increase-heap-pages.patch} |   0
>  ...check-receiver-s-attributes-on-memor.patch | 318 ------------------
>  .../recipes-bsp/hafnium/hafnium-tc.inc        |  12 +-
>  .../hafnium/hafnium/pkg-config-native.patch   |  16 +-
>  7 files changed, 14 insertions(+), 512 deletions(-)
>  rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0004-feat-emulate-interrupt-controller-register-access.patch => 0002-feat-emulate-interrupt-controller-register-access.patch} (100%)
>  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
>  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
>  rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0006-tc-increase-heap-pages.patch => 0003-tc-increase-heap-pages.patch} (100%)
>  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> 
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
> similarity index 100%
> rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch
> rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
> deleted file mode 100644
> index 2b57b239..00000000
> --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
> +++ /dev/null
> @@ -1,152 +0,0 @@
> -From e6bcc390749f0560b3bc92507ecbaaabc7145200 Mon Sep 17 00:00:00 2001
> -From: Lucian Paul-Trifu <lucian.paul-trifu@arm.com>
> -Date: Wed, 10 Mar 2021 11:31:02 +0000
> -Subject: [PATCH 2/5] fix(ff-a): Use FFA_INTERRUPT to signal an interrupted
> - FFA_MSG_WAIT
> -
> -Rather than FFA_ERROR(INTERRUPTED).
> -
> -Change-Id: I6b23a442714852b6183e0e46af6f0504ec0ee8f4
> -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> -Upstream-Status: Pending [Not submitted to upstream yet]
> ----
> - src/api.c                                                  | 2 +-
> - test/inc/test/vmapi/ffa.h                                  | 7 +++++++
> - test/vmapi/arch/aarch64/gicv3/services/common.c            | 3 +--
> - test/vmapi/arch/aarch64/gicv3/services/timer.c             | 2 +-
> - test/vmapi/el0_partitions/services/interruptible.c         | 3 +--
> - test/vmapi/el0_partitions/services/interruptible_echo.c    | 3 +--
> - test/vmapi/el0_partitions/services/receive_block.c         | 2 +-
> - .../primary_with_secondaries/services/interruptible.c      | 3 +--
> - .../primary_with_secondaries/services/receive_block.c      | 2 +-
> - 9 files changed, 15 insertions(+), 12 deletions(-)
> -
> -diff --git a/src/api.c b/src/api.c
> -index b713b7c..00c4d44 100644
> ---- a/src/api.c
> -+++ b/src/api.c
> -@@ -1588,7 +1588,7 @@ struct ffa_value api_ffa_msg_recv(bool block, struct vcpu *current,
> - 	 * received. If a message is received the return value will be set at
> - 	 * that time to FFA_SUCCESS.
> - 	 */
> --	return_code = ffa_error(FFA_INTERRUPTED);
> -+	return_code = (struct ffa_value){.func = FFA_INTERRUPT_32};
> - 	if (api_ffa_msg_recv_block_interrupted(current)) {
> - 		goto out;
> - 	}
> -diff --git a/test/inc/test/vmapi/ffa.h b/test/inc/test/vmapi/ffa.h
> -index 8fc1223..f0f3e75 100644
> ---- a/test/inc/test/vmapi/ffa.h
> -+++ b/test/inc/test/vmapi/ffa.h
> -@@ -24,6 +24,13 @@
> - 		EXPECT_EQ(ffa_error_code(v), (ffa_error)); \
> - 	} while (0)
> - 
> -+#define EXPECT_FFA_INTERRUPT(value)                        \
> -+	do {                                               \
> -+		struct ffa_value v = (value);              \
> -+		EXPECT_EQ(v.func, FFA_INTERRUPT_32);       \
> -+	} while (0)
> -+
> -+
> - /*
> -  * The bit 15 of the FF-A ID indicates whether the partition is executing
> -  * in the normal world, in case it is a Virtual Machine (VM); or in the
> -diff --git a/test/vmapi/arch/aarch64/gicv3/services/common.c b/test/vmapi/arch/aarch64/gicv3/services/common.c
> -index 06df28d..4ada9e2 100644
> ---- a/test/vmapi/arch/aarch64/gicv3/services/common.c
> -+++ b/test/vmapi/arch/aarch64/gicv3/services/common.c
> -@@ -22,8 +22,7 @@ struct ffa_value mailbox_receive_retry(void)
> - 
> - 	do {
> - 		received = ffa_msg_wait();
> --	} while (received.func == FFA_ERROR_32 &&
> --		 received.arg2 == FFA_INTERRUPTED);
> -+	} while (received.func == FFA_INTERRUPT_32);
> - 
> - 	return received;
> - }
> -diff --git a/test/vmapi/arch/aarch64/gicv3/services/timer.c b/test/vmapi/arch/aarch64/gicv3/services/timer.c
> -index 156f160..d5d2816 100644
> ---- a/test/vmapi/arch/aarch64/gicv3/services/timer.c
> -+++ b/test/vmapi/arch/aarch64/gicv3/services/timer.c
> -@@ -104,7 +104,7 @@ TEST_SERVICE(timer)
> - 		} else if (receive) {
> - 			struct ffa_value res = ffa_msg_wait();
> - 
> --			EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> -+			EXPECT_FFA_INTERRUPT(res);
> - 		} else {
> - 			/* Busy wait until the timer fires. */
> - 			while (!timer_fired) {
> -diff --git a/test/vmapi/el0_partitions/services/interruptible.c b/test/vmapi/el0_partitions/services/interruptible.c
> -index 0d00b16..4c9f099 100644
> ---- a/test/vmapi/el0_partitions/services/interruptible.c
> -+++ b/test/vmapi/el0_partitions/services/interruptible.c
> -@@ -50,8 +50,7 @@ static struct ffa_value mailbox_receive_retry()
> - 	do {
> - 		irq();
> - 		received = ffa_msg_wait();
> --	} while (received.func == FFA_ERROR_32 &&
> --		 ffa_error_code(received) == FFA_INTERRUPTED);
> -+	} while (received.func == FFA_INTERRUPT_32);
> - 
> - 	return received;
> - }
> -diff --git a/test/vmapi/el0_partitions/services/interruptible_echo.c b/test/vmapi/el0_partitions/services/interruptible_echo.c
> -index b618cf2..a857783 100644
> ---- a/test/vmapi/el0_partitions/services/interruptible_echo.c
> -+++ b/test/vmapi/el0_partitions/services/interruptible_echo.c
> -@@ -39,8 +39,7 @@ static struct ffa_value mailbox_receive_retry()
> - 	do {
> - 		irq();
> - 		received = ffa_msg_wait();
> --	} while (received.func == FFA_ERROR_32 &&
> --		 received.arg2 == FFA_INTERRUPTED);
> -+	} while (received.func == FFA_INTERRUPT_32);
> - 
> - 	return received;
> - }
> -diff --git a/test/vmapi/el0_partitions/services/receive_block.c b/test/vmapi/el0_partitions/services/receive_block.c
> -index 05a22f3..60da28b 100644
> ---- a/test/vmapi/el0_partitions/services/receive_block.c
> -+++ b/test/vmapi/el0_partitions/services/receive_block.c
> -@@ -27,7 +27,7 @@ TEST_SERVICE(receive_block)
> - 
> - 	for (i = 0; i < 10; ++i) {
> - 		struct ffa_value res = ffa_msg_wait();
> --		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> -+		EXPECT_FFA_INTERRUPT(res);
> - 	}
> - 
> - 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
> -diff --git a/test/vmapi/primary_with_secondaries/services/interruptible.c b/test/vmapi/primary_with_secondaries/services/interruptible.c
> -index cc1c1f9..005d1ff 100644
> ---- a/test/vmapi/primary_with_secondaries/services/interruptible.c
> -+++ b/test/vmapi/primary_with_secondaries/services/interruptible.c
> -@@ -46,8 +46,7 @@ struct ffa_value mailbox_receive_retry()
> - 
> - 	do {
> - 		received = ffa_msg_wait();
> --	} while (received.func == FFA_ERROR_32 &&
> --		 ffa_error_code(received) == FFA_INTERRUPTED);
> -+	} while (received.func == FFA_INTERRUPT_32);
> - 
> - 	return received;
> - }
> -diff --git a/test/vmapi/primary_with_secondaries/services/receive_block.c b/test/vmapi/primary_with_secondaries/services/receive_block.c
> -index edb4e3c..a6805ae 100644
> ---- a/test/vmapi/primary_with_secondaries/services/receive_block.c
> -+++ b/test/vmapi/primary_with_secondaries/services/receive_block.c
> -@@ -40,7 +40,7 @@ TEST_SERVICE(receive_block)
> - 
> - 	for (i = 0; i < 10; ++i) {
> - 		struct ffa_value res = ffa_msg_wait();
> --		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> -+		EXPECT_FFA_INTERRUPT(res);
> - 	}
> - 
> - 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
> --- 
> -2.17.1
> -
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
> deleted file mode 100644
> index 8d2cc139..00000000
> --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -From a6f466c2594b2f56d34fee72494fbd29ea9c7d21 Mon Sep 17 00:00:00 2001
> -From: Ben Horgan <ben.horgan@arm.com>
> -Date: Tue, 26 Apr 2022 12:59:42 +0000
> -Subject: [PATCH 3/5] fix(ff-a): Add FFA_SECONDARY_EP_REGISTER_64 to list of
> - features
> -
> -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> -Change-Id: Ic1344eb2c982c195210dc2c86aa6845f3e037077
> -Upstream-Status: Pending [Not submitted to upstream yet]
> ----
> - src/api.c | 1 +
> - 1 file changed, 1 insertion(+)
> -
> -diff --git a/src/api.c b/src/api.c
> -index 00c4d44..33a9b42 100644
> ---- a/src/api.c
> -+++ b/src/api.c
> -@@ -2021,6 +2021,7 @@ struct ffa_value api_ffa_features(uint32_t feature_function_id)
> - 	case FFA_MEM_PERM_SET_32:
> - 	case FFA_MEM_PERM_GET_64:
> - 	case FFA_MEM_PERM_SET_64:
> -+	case FFA_SECONDARY_EP_REGISTER_64:
> - #endif
> - 		return (struct ffa_value){.func = FFA_SUCCESS_32};
> - 
> --- 
> -2.17.1
> -
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
> similarity index 100%
> rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch
> rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> deleted file mode 100644
> index e5f9489e..00000000
> --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> +++ /dev/null
> @@ -1,318 +0,0 @@
> -From 64d5628c8439e4649e9c1da9b9e02ebd5c7fb8cf Mon Sep 17 00:00:00 2001
> -From: Ben Horgan <ben.horgan@arm.com>
> -Date: Thu, 28 Apr 2022 15:53:31 +0000
> -Subject: [PATCH 5/5] Revert "fix(ff-a): check receiver's attributes on memory
> - retrieve"
> -
> -This reverts commit a98603aa965e3ff3ca5383249213e2fd1a96d850.
> -
> -Change-Id: Ia71ce3ac52e9b2e85578372c24eb8d593b62435f
> -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> ----
> - src/ffa_memory.c                              | 76 ++++++-----------
> - test/vmapi/el0_partitions/memory_sharing.c    | 81 -------------------
> - .../primary_with_secondaries/memory_sharing.c | 81 -------------------
> - 3 files changed, 25 insertions(+), 213 deletions(-)
> -
> -diff --git a/src/ffa_memory.c b/src/ffa_memory.c
> -index ab47929..2fcc386 100644
> ---- a/src/ffa_memory.c
> -+++ b/src/ffa_memory.c
> -@@ -1344,42 +1344,6 @@ static struct ffa_value ffa_memory_send_complete(
> - 	return ffa_mem_success(share_state->memory_region->handle);
> - }
> - 
> --/**
> -- * Check that the memory attributes match Hafnium expectations:
> -- * Normal Memory, Inner shareable, Write-Back Read-Allocate
> -- * Write-Allocate Cacheable.
> -- */
> --static struct ffa_value ffa_memory_attributes_validate(
> --	ffa_memory_access_permissions_t attributes)
> --{
> --	enum ffa_memory_type memory_type;
> --	enum ffa_memory_cacheability cacheability;
> --	enum ffa_memory_shareability shareability;
> --
> --	memory_type = ffa_get_memory_type_attr(attributes);
> --	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
> --		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
> --			     memory_type, FFA_MEMORY_NORMAL_MEM);
> --		return ffa_error(FFA_DENIED);
> --	}
> --
> --	cacheability = ffa_get_memory_cacheability_attr(attributes);
> --	if (cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
> --		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
> --			     cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
> --		return ffa_error(FFA_DENIED);
> --	}
> --
> --	shareability = ffa_get_memory_shareability_attr(attributes);
> --	if (shareability != FFA_MEMORY_INNER_SHAREABLE) {
> --		dlog_verbose("Invalid shareability %#x, expected #%x.\n",
> --			     shareability, FFA_MEMORY_INNER_SHAREABLE);
> --		return ffa_error(FFA_DENIED);
> --	}
> --
> --	return (struct ffa_value){.func = FFA_SUCCESS_32};
> --}
> --
> - /**
> -  * Check that the given `memory_region` represents a valid memory send request
> -  * of the given `share_func` type, return the clear flag and permissions via the
> -@@ -1400,7 +1364,10 @@ static struct ffa_value ffa_memory_send_validate(
> - 	uint32_t constituents_length;
> - 	enum ffa_data_access data_access;
> - 	enum ffa_instruction_access instruction_access;
> --	struct ffa_value ret;
> -+	ffa_memory_access_permissions_t attributes;
> -+	enum ffa_memory_type memory_type;
> -+	enum ffa_memory_cacheability memory_cacheability;
> -+	enum ffa_memory_shareability memory_shareability;
> - 
> - 	assert(permissions != NULL);
> - 
> -@@ -1536,9 +1503,26 @@ static struct ffa_value ffa_memory_send_validate(
> - 	 * Normal Memory, Inner shareable, Write-Back Read-Allocate
> - 	 * Write-Allocate Cacheable.
> - 	 */
> --	ret = ffa_memory_attributes_validate(memory_region->attributes);
> --	if (ret.func != FFA_SUCCESS_32) {
> --		return ret;
> -+	attributes = memory_region->attributes;
> -+	memory_type = ffa_get_memory_type_attr(attributes);
> -+	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
> -+		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
> -+			     memory_type, FFA_MEMORY_NORMAL_MEM);
> -+		return ffa_error(FFA_INVALID_PARAMETERS);
> -+	}
> -+
> -+	memory_cacheability = ffa_get_memory_cacheability_attr(attributes);
> -+	if (memory_cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
> -+		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
> -+			     memory_cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
> -+		return ffa_error(FFA_INVALID_PARAMETERS);
> -+	}
> -+
> -+	memory_shareability = ffa_get_memory_shareability_attr(attributes);
> -+	if (memory_shareability != FFA_MEMORY_INNER_SHAREABLE) {
> -+		dlog_verbose("Invalid shareability %#x, expected %#x.\n",
> -+			     memory_shareability, FFA_MEMORY_INNER_SHAREABLE);
> -+		return ffa_error(FFA_INVALID_PARAMETERS);
> - 	}
> - 
> - 	return (struct ffa_value){.func = FFA_SUCCESS_32};
> -@@ -2376,6 +2360,7 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
> - 	 * Check permissions from sender against permissions requested by
> - 	 * receiver.
> - 	 */
> -+	/* TODO: Check attributes too. */
> - 	sent_permissions =
> - 		memory_region->receivers[0].receiver_permissions.permissions;
> - 	sent_data_access = ffa_get_data_access_attr(sent_permissions);
> -@@ -2453,17 +2438,6 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
> - 		panic("Got unexpected FFA_INSTRUCTION_ACCESS_RESERVED. Should "
> - 		      "be checked before this point.");
> - 	}
> --
> --	/*
> --	 * Ensure receiver's attributes are compatible with how Hafnium maps
> --	 * memory: Normal Memory, Inner shareable, Write-Back Read-Allocate
> --	 * Write-Allocate Cacheable.
> --	 */
> --	ret = ffa_memory_attributes_validate(retrieve_request->attributes);
> --	if (ret.func != FFA_SUCCESS_32) {
> --		goto out;
> --	}
> --
> - 	memory_to_attributes = ffa_memory_permissions_to_mode(
> - 		permissions, share_state->sender_orig_mode);
> - 	ret = ffa_retrieve_check_update(
> -diff --git a/test/vmapi/el0_partitions/memory_sharing.c b/test/vmapi/el0_partitions/memory_sharing.c
> -index 3756d7d..c29f029 100644
> ---- a/test/vmapi/el0_partitions/memory_sharing.c
> -+++ b/test/vmapi/el0_partitions/memory_sharing.c
> -@@ -2160,87 +2160,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
> - 	}
> - }
> - 
> --/**
> -- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
> -- * with hardcoded values and doesn't support custom mappings.
> -- */
> --TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
> --{
> --	struct ffa_value ret;
> --	struct mailbox_buffers mb = set_up_mailbox();
> --	uint32_t msg_size;
> --	ffa_memory_handle_t handle;
> --
> --	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
> --		ffa_mem_share,
> --		ffa_mem_lend,
> --	};
> --
> --	struct ffa_memory_region_constituent constituents[] = {
> --		{.address = (uint64_t)pages, .page_count = 2},
> --		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
> --	};
> --
> --	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail", mb.send);
> --
> --	struct {
> --		enum ffa_memory_type memory_type;
> --		enum ffa_memory_cacheability memory_cacheability;
> --		enum ffa_memory_shareability memory_shareability;
> --	} invalid_attributes[] = {
> --		/* Invalid memory type */
> --		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_INNER_SHAREABLE},
> --		/* Invalid cacheability */
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
> --		 FFA_MEMORY_INNER_SHAREABLE},
> --		/* Invalid shareability */
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_SHARE_NON_SHAREABLE},
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_OUTER_SHAREABLE}};
> --
> --	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
> --		/* Prepare memory region, and set all flags */
> --		EXPECT_EQ(ffa_memory_region_init(
> --				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
> --				  SERVICE_VM1, constituents,
> --				  ARRAY_SIZE(constituents), 0, 0,
> --				  FFA_DATA_ACCESS_RW,
> --				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> --				  FFA_MEMORY_NORMAL_MEM,
> --				  FFA_MEMORY_CACHE_WRITE_BACK,
> --				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
> --			  0);
> --
> --		ret = send_function[i](msg_size, msg_size);
> --		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
> --
> --		handle = ffa_mem_success_handle(ret);
> --
> --		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
> --			msg_size = ffa_memory_retrieve_request_init(
> --				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
> --				0, 0, FFA_DATA_ACCESS_RW,
> --				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> --				invalid_attributes[j].memory_type,
> --				invalid_attributes[j].memory_cacheability,
> --				invalid_attributes[j].memory_shareability);
> --
> --			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
> --
> --			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
> --					       msg_size, 0)
> --					  .func,
> --				  FFA_SUCCESS_32);
> --
> --			ffa_run(SERVICE_VM1, 0);
> --		}
> --
> --		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
> --	}
> --}
> --
> - /**
> -  * If memory is shared can't request zeroing of memory at both send and
> -  * relinquish.
> -diff --git a/test/vmapi/primary_with_secondaries/memory_sharing.c b/test/vmapi/primary_with_secondaries/memory_sharing.c
> -index 6080709..4bcf252 100644
> ---- a/test/vmapi/primary_with_secondaries/memory_sharing.c
> -+++ b/test/vmapi/primary_with_secondaries/memory_sharing.c
> -@@ -2307,87 +2307,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
> - 	}
> - }
> - 
> --/**
> -- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
> -- * with hardcoded values and doesn't support custom mappings.
> -- */
> --TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
> --{
> --	struct ffa_value ret;
> --	struct mailbox_buffers mb = set_up_mailbox();
> --	uint32_t msg_size;
> --	ffa_memory_handle_t handle;
> --
> --	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
> --		ffa_mem_share,
> --		ffa_mem_lend,
> --	};
> --
> --	struct ffa_memory_region_constituent constituents[] = {
> --		{.address = (uint64_t)pages, .page_count = 2},
> --		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
> --	};
> --
> --	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail_denied", mb.send);
> --
> --	struct {
> --		enum ffa_memory_type memory_type;
> --		enum ffa_memory_cacheability memory_cacheability;
> --		enum ffa_memory_shareability memory_shareability;
> --	} invalid_attributes[] = {
> --		/* Invalid memory type */
> --		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_INNER_SHAREABLE},
> --		/* Invalid cacheability */
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
> --		 FFA_MEMORY_INNER_SHAREABLE},
> --		/* Invalid shareability */
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_SHARE_NON_SHAREABLE},
> --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> --		 FFA_MEMORY_OUTER_SHAREABLE}};
> --
> --	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
> --		/* Prepare memory region, and set all flags */
> --		EXPECT_EQ(ffa_memory_region_init(
> --				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
> --				  SERVICE_VM1, constituents,
> --				  ARRAY_SIZE(constituents), 0, 0,
> --				  FFA_DATA_ACCESS_RW,
> --				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> --				  FFA_MEMORY_NORMAL_MEM,
> --				  FFA_MEMORY_CACHE_WRITE_BACK,
> --				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
> --			  0);
> --
> --		ret = send_function[i](msg_size, msg_size);
> --		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
> --
> --		handle = ffa_mem_success_handle(ret);
> --
> --		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
> --			msg_size = ffa_memory_retrieve_request_init(
> --				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
> --				0, 0, FFA_DATA_ACCESS_RW,
> --				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> --				invalid_attributes[j].memory_type,
> --				invalid_attributes[j].memory_cacheability,
> --				invalid_attributes[j].memory_shareability);
> --
> --			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
> --
> --			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
> --					       msg_size, 0)
> --					  .func,
> --				  FFA_SUCCESS_32);
> --
> --			ffa_run(SERVICE_VM1, 0);
> --		}
> --
> --		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
> --	}
> --}
> --
> - /**
> -  * If memory is shared can't request zeroing of memory at both send and
> -  * relinquish.
> --- 
> -2.17.1
> -
> diff --git a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> index c8f77dc6..9da9c117 100644
> --- a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> +++ b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> @@ -3,7 +3,10 @@
>  COMPATIBLE_MACHINE = "(tc?)"
>  HAFNIUM_PLATFORM = "secure_tc"
>  
> -SRCREV = "4eb7b54348234d7f4bbac64bac28f683d6574ba9"
> +# Intermediate SHA with 2.7 baseline version
> +SRCREV = "dd0561820946fe23bcd57cc129140437f72102a5"
> +PV = "2.7+git${SRCPV}"
> +
>  FILESEXTRAPATHS:prepend:tc := "${THISDIR}/files/tc:"
>  
>  SRC_URI:remove = " \
> @@ -12,11 +15,8 @@ SRC_URI:remove = " \
>  
>  SRC_URI:append = " \
>          file://0001-feat-emulate-cntp-timer-register-accesses-using-cnth.patch \
> -        file://0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch \
> -        file://0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch \
> -        file://0004-feat-emulate-interrupt-controller-register-access.patch \
> -        file://0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch \
> -        file://0006-tc-increase-heap-pages.patch \
> +        file://0002-feat-emulate-interrupt-controller-register-access.patch \
> +        file://0003-tc-increase-heap-pages.patch \
>          "
>  
>  do_compile() {
> diff --git a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> index bc031956..cccf28a1 100644
> --- a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> +++ b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> @@ -4,17 +4,17 @@ Upstream-Status: Inappropriate
>  Signed-off-by: Ross Burton <ross.burton@arm.com>
>  
>  diff --git a/scripts/Makefile b/scripts/Makefile
> -index b4b7d8b58..26a5160ee 100644
> +index 9adb6d247..5fe371c7d 100644
>  --- a/third_party/linux/scripts/Makefile
>  +++ b/third_party/linux/scripts/Makefile
> -@@ -10,8 +10,8 @@
> -
> - HOST_EXTRACFLAGS += -I$(srctree)/tools/include
> -
> +@@ -3,8 +3,8 @@
> + # scripts contains sources for various helper programs used throughout
> + # the kernel for the build process.
> + 
>  -CRYPTO_LIBS = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
>  -CRYPTO_CFLAGS = $(shell pkg-config --cflags libcrypto 2> /dev/null)
>  +CRYPTO_LIBS = $(shell pkg-config-native --libs libcrypto 2> /dev/null || echo -lcrypto)
>  +CRYPTO_CFLAGS = $(shell pkg-config-native --cflags libcrypto 2> /dev/null)
> -
> - hostprogs-$(CONFIG_BUILD_BIN2C)  += bin2c
> - hostprogs-$(CONFIG_KALLSYMS)     += kallsyms
> + 
> + hostprogs-always-$(CONFIG_BUILD_BIN2C)			+= bin2c
> + hostprogs-always-$(CONFIG_KALLSYMS)			+= kallsyms
> -- 
> 2.34.1
> 
>
Jon Mason Sept. 20, 2022, 2:36 p.m. UTC | #2
On Fri, Sep 09, 2022 at 03:53:35PM -0400, Jon Mason wrote:
> On Fri, Sep 09, 2022 at 12:29:26PM +0530, Davidson K wrote:
> > Signed-off-by: Davidson K <davidson.kumaresan@arm.com>
> > Change-Id: I7ccc2ab23955291bcf7d87384ba1ac94c1568443
> 
> I'm seeing issues with hafium not building.  See
> https://gitlab.com/jonmason00/meta-arm/-/jobs/3005738154
> 
> Thanks,
> Jon

The issue appears to be with my system.  It is working now.

> 
> 
> > ---
> >  ...nterrupt-controller-register-access.patch} |   0
> >  ..._INTERRUPT-to-signal-an-interrupted-.patch | 152 ---------
> >  ..._SECONDARY_EP_REGISTER_64-to-list-of.patch |  28 --
> >  ...atch => 0003-tc-increase-heap-pages.patch} |   0
> >  ...check-receiver-s-attributes-on-memor.patch | 318 ------------------
> >  .../recipes-bsp/hafnium/hafnium-tc.inc        |  12 +-
> >  .../hafnium/hafnium/pkg-config-native.patch   |  16 +-
> >  7 files changed, 14 insertions(+), 512 deletions(-)
> >  rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0004-feat-emulate-interrupt-controller-register-access.patch => 0002-feat-emulate-interrupt-controller-register-access.patch} (100%)
> >  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
> >  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
> >  rename meta-arm-bsp/recipes-bsp/hafnium/files/tc/{0006-tc-increase-heap-pages.patch => 0003-tc-increase-heap-pages.patch} (100%)
> >  delete mode 100644 meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> > 
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
> > similarity index 100%
> > rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch
> > rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
> > deleted file mode 100644
> > index 2b57b239..00000000
> > --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
> > +++ /dev/null
> > @@ -1,152 +0,0 @@
> > -From e6bcc390749f0560b3bc92507ecbaaabc7145200 Mon Sep 17 00:00:00 2001
> > -From: Lucian Paul-Trifu <lucian.paul-trifu@arm.com>
> > -Date: Wed, 10 Mar 2021 11:31:02 +0000
> > -Subject: [PATCH 2/5] fix(ff-a): Use FFA_INTERRUPT to signal an interrupted
> > - FFA_MSG_WAIT
> > -
> > -Rather than FFA_ERROR(INTERRUPTED).
> > -
> > -Change-Id: I6b23a442714852b6183e0e46af6f0504ec0ee8f4
> > -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> > -Upstream-Status: Pending [Not submitted to upstream yet]
> > ----
> > - src/api.c                                                  | 2 +-
> > - test/inc/test/vmapi/ffa.h                                  | 7 +++++++
> > - test/vmapi/arch/aarch64/gicv3/services/common.c            | 3 +--
> > - test/vmapi/arch/aarch64/gicv3/services/timer.c             | 2 +-
> > - test/vmapi/el0_partitions/services/interruptible.c         | 3 +--
> > - test/vmapi/el0_partitions/services/interruptible_echo.c    | 3 +--
> > - test/vmapi/el0_partitions/services/receive_block.c         | 2 +-
> > - .../primary_with_secondaries/services/interruptible.c      | 3 +--
> > - .../primary_with_secondaries/services/receive_block.c      | 2 +-
> > - 9 files changed, 15 insertions(+), 12 deletions(-)
> > -
> > -diff --git a/src/api.c b/src/api.c
> > -index b713b7c..00c4d44 100644
> > ---- a/src/api.c
> > -+++ b/src/api.c
> > -@@ -1588,7 +1588,7 @@ struct ffa_value api_ffa_msg_recv(bool block, struct vcpu *current,
> > - 	 * received. If a message is received the return value will be set at
> > - 	 * that time to FFA_SUCCESS.
> > - 	 */
> > --	return_code = ffa_error(FFA_INTERRUPTED);
> > -+	return_code = (struct ffa_value){.func = FFA_INTERRUPT_32};
> > - 	if (api_ffa_msg_recv_block_interrupted(current)) {
> > - 		goto out;
> > - 	}
> > -diff --git a/test/inc/test/vmapi/ffa.h b/test/inc/test/vmapi/ffa.h
> > -index 8fc1223..f0f3e75 100644
> > ---- a/test/inc/test/vmapi/ffa.h
> > -+++ b/test/inc/test/vmapi/ffa.h
> > -@@ -24,6 +24,13 @@
> > - 		EXPECT_EQ(ffa_error_code(v), (ffa_error)); \
> > - 	} while (0)
> > - 
> > -+#define EXPECT_FFA_INTERRUPT(value)                        \
> > -+	do {                                               \
> > -+		struct ffa_value v = (value);              \
> > -+		EXPECT_EQ(v.func, FFA_INTERRUPT_32);       \
> > -+	} while (0)
> > -+
> > -+
> > - /*
> > -  * The bit 15 of the FF-A ID indicates whether the partition is executing
> > -  * in the normal world, in case it is a Virtual Machine (VM); or in the
> > -diff --git a/test/vmapi/arch/aarch64/gicv3/services/common.c b/test/vmapi/arch/aarch64/gicv3/services/common.c
> > -index 06df28d..4ada9e2 100644
> > ---- a/test/vmapi/arch/aarch64/gicv3/services/common.c
> > -+++ b/test/vmapi/arch/aarch64/gicv3/services/common.c
> > -@@ -22,8 +22,7 @@ struct ffa_value mailbox_receive_retry(void)
> > - 
> > - 	do {
> > - 		received = ffa_msg_wait();
> > --	} while (received.func == FFA_ERROR_32 &&
> > --		 received.arg2 == FFA_INTERRUPTED);
> > -+	} while (received.func == FFA_INTERRUPT_32);
> > - 
> > - 	return received;
> > - }
> > -diff --git a/test/vmapi/arch/aarch64/gicv3/services/timer.c b/test/vmapi/arch/aarch64/gicv3/services/timer.c
> > -index 156f160..d5d2816 100644
> > ---- a/test/vmapi/arch/aarch64/gicv3/services/timer.c
> > -+++ b/test/vmapi/arch/aarch64/gicv3/services/timer.c
> > -@@ -104,7 +104,7 @@ TEST_SERVICE(timer)
> > - 		} else if (receive) {
> > - 			struct ffa_value res = ffa_msg_wait();
> > - 
> > --			EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> > -+			EXPECT_FFA_INTERRUPT(res);
> > - 		} else {
> > - 			/* Busy wait until the timer fires. */
> > - 			while (!timer_fired) {
> > -diff --git a/test/vmapi/el0_partitions/services/interruptible.c b/test/vmapi/el0_partitions/services/interruptible.c
> > -index 0d00b16..4c9f099 100644
> > ---- a/test/vmapi/el0_partitions/services/interruptible.c
> > -+++ b/test/vmapi/el0_partitions/services/interruptible.c
> > -@@ -50,8 +50,7 @@ static struct ffa_value mailbox_receive_retry()
> > - 	do {
> > - 		irq();
> > - 		received = ffa_msg_wait();
> > --	} while (received.func == FFA_ERROR_32 &&
> > --		 ffa_error_code(received) == FFA_INTERRUPTED);
> > -+	} while (received.func == FFA_INTERRUPT_32);
> > - 
> > - 	return received;
> > - }
> > -diff --git a/test/vmapi/el0_partitions/services/interruptible_echo.c b/test/vmapi/el0_partitions/services/interruptible_echo.c
> > -index b618cf2..a857783 100644
> > ---- a/test/vmapi/el0_partitions/services/interruptible_echo.c
> > -+++ b/test/vmapi/el0_partitions/services/interruptible_echo.c
> > -@@ -39,8 +39,7 @@ static struct ffa_value mailbox_receive_retry()
> > - 	do {
> > - 		irq();
> > - 		received = ffa_msg_wait();
> > --	} while (received.func == FFA_ERROR_32 &&
> > --		 received.arg2 == FFA_INTERRUPTED);
> > -+	} while (received.func == FFA_INTERRUPT_32);
> > - 
> > - 	return received;
> > - }
> > -diff --git a/test/vmapi/el0_partitions/services/receive_block.c b/test/vmapi/el0_partitions/services/receive_block.c
> > -index 05a22f3..60da28b 100644
> > ---- a/test/vmapi/el0_partitions/services/receive_block.c
> > -+++ b/test/vmapi/el0_partitions/services/receive_block.c
> > -@@ -27,7 +27,7 @@ TEST_SERVICE(receive_block)
> > - 
> > - 	for (i = 0; i < 10; ++i) {
> > - 		struct ffa_value res = ffa_msg_wait();
> > --		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> > -+		EXPECT_FFA_INTERRUPT(res);
> > - 	}
> > - 
> > - 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
> > -diff --git a/test/vmapi/primary_with_secondaries/services/interruptible.c b/test/vmapi/primary_with_secondaries/services/interruptible.c
> > -index cc1c1f9..005d1ff 100644
> > ---- a/test/vmapi/primary_with_secondaries/services/interruptible.c
> > -+++ b/test/vmapi/primary_with_secondaries/services/interruptible.c
> > -@@ -46,8 +46,7 @@ struct ffa_value mailbox_receive_retry()
> > - 
> > - 	do {
> > - 		received = ffa_msg_wait();
> > --	} while (received.func == FFA_ERROR_32 &&
> > --		 ffa_error_code(received) == FFA_INTERRUPTED);
> > -+	} while (received.func == FFA_INTERRUPT_32);
> > - 
> > - 	return received;
> > - }
> > -diff --git a/test/vmapi/primary_with_secondaries/services/receive_block.c b/test/vmapi/primary_with_secondaries/services/receive_block.c
> > -index edb4e3c..a6805ae 100644
> > ---- a/test/vmapi/primary_with_secondaries/services/receive_block.c
> > -+++ b/test/vmapi/primary_with_secondaries/services/receive_block.c
> > -@@ -40,7 +40,7 @@ TEST_SERVICE(receive_block)
> > - 
> > - 	for (i = 0; i < 10; ++i) {
> > - 		struct ffa_value res = ffa_msg_wait();
> > --		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
> > -+		EXPECT_FFA_INTERRUPT(res);
> > - 	}
> > - 
> > - 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
> > --- 
> > -2.17.1
> > -
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
> > deleted file mode 100644
> > index 8d2cc139..00000000
> > --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
> > +++ /dev/null
> > @@ -1,28 +0,0 @@
> > -From a6f466c2594b2f56d34fee72494fbd29ea9c7d21 Mon Sep 17 00:00:00 2001
> > -From: Ben Horgan <ben.horgan@arm.com>
> > -Date: Tue, 26 Apr 2022 12:59:42 +0000
> > -Subject: [PATCH 3/5] fix(ff-a): Add FFA_SECONDARY_EP_REGISTER_64 to list of
> > - features
> > -
> > -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> > -Change-Id: Ic1344eb2c982c195210dc2c86aa6845f3e037077
> > -Upstream-Status: Pending [Not submitted to upstream yet]
> > ----
> > - src/api.c | 1 +
> > - 1 file changed, 1 insertion(+)
> > -
> > -diff --git a/src/api.c b/src/api.c
> > -index 00c4d44..33a9b42 100644
> > ---- a/src/api.c
> > -+++ b/src/api.c
> > -@@ -2021,6 +2021,7 @@ struct ffa_value api_ffa_features(uint32_t feature_function_id)
> > - 	case FFA_MEM_PERM_SET_32:
> > - 	case FFA_MEM_PERM_GET_64:
> > - 	case FFA_MEM_PERM_SET_64:
> > -+	case FFA_SECONDARY_EP_REGISTER_64:
> > - #endif
> > - 		return (struct ffa_value){.func = FFA_SUCCESS_32};
> > - 
> > --- 
> > -2.17.1
> > -
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
> > similarity index 100%
> > rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch
> > rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> > deleted file mode 100644
> > index e5f9489e..00000000
> > --- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
> > +++ /dev/null
> > @@ -1,318 +0,0 @@
> > -From 64d5628c8439e4649e9c1da9b9e02ebd5c7fb8cf Mon Sep 17 00:00:00 2001
> > -From: Ben Horgan <ben.horgan@arm.com>
> > -Date: Thu, 28 Apr 2022 15:53:31 +0000
> > -Subject: [PATCH 5/5] Revert "fix(ff-a): check receiver's attributes on memory
> > - retrieve"
> > -
> > -This reverts commit a98603aa965e3ff3ca5383249213e2fd1a96d850.
> > -
> > -Change-Id: Ia71ce3ac52e9b2e85578372c24eb8d593b62435f
> > -Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> > ----
> > - src/ffa_memory.c                              | 76 ++++++-----------
> > - test/vmapi/el0_partitions/memory_sharing.c    | 81 -------------------
> > - .../primary_with_secondaries/memory_sharing.c | 81 -------------------
> > - 3 files changed, 25 insertions(+), 213 deletions(-)
> > -
> > -diff --git a/src/ffa_memory.c b/src/ffa_memory.c
> > -index ab47929..2fcc386 100644
> > ---- a/src/ffa_memory.c
> > -+++ b/src/ffa_memory.c
> > -@@ -1344,42 +1344,6 @@ static struct ffa_value ffa_memory_send_complete(
> > - 	return ffa_mem_success(share_state->memory_region->handle);
> > - }
> > - 
> > --/**
> > -- * Check that the memory attributes match Hafnium expectations:
> > -- * Normal Memory, Inner shareable, Write-Back Read-Allocate
> > -- * Write-Allocate Cacheable.
> > -- */
> > --static struct ffa_value ffa_memory_attributes_validate(
> > --	ffa_memory_access_permissions_t attributes)
> > --{
> > --	enum ffa_memory_type memory_type;
> > --	enum ffa_memory_cacheability cacheability;
> > --	enum ffa_memory_shareability shareability;
> > --
> > --	memory_type = ffa_get_memory_type_attr(attributes);
> > --	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
> > --		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
> > --			     memory_type, FFA_MEMORY_NORMAL_MEM);
> > --		return ffa_error(FFA_DENIED);
> > --	}
> > --
> > --	cacheability = ffa_get_memory_cacheability_attr(attributes);
> > --	if (cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
> > --		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
> > --			     cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
> > --		return ffa_error(FFA_DENIED);
> > --	}
> > --
> > --	shareability = ffa_get_memory_shareability_attr(attributes);
> > --	if (shareability != FFA_MEMORY_INNER_SHAREABLE) {
> > --		dlog_verbose("Invalid shareability %#x, expected #%x.\n",
> > --			     shareability, FFA_MEMORY_INNER_SHAREABLE);
> > --		return ffa_error(FFA_DENIED);
> > --	}
> > --
> > --	return (struct ffa_value){.func = FFA_SUCCESS_32};
> > --}
> > --
> > - /**
> > -  * Check that the given `memory_region` represents a valid memory send request
> > -  * of the given `share_func` type, return the clear flag and permissions via the
> > -@@ -1400,7 +1364,10 @@ static struct ffa_value ffa_memory_send_validate(
> > - 	uint32_t constituents_length;
> > - 	enum ffa_data_access data_access;
> > - 	enum ffa_instruction_access instruction_access;
> > --	struct ffa_value ret;
> > -+	ffa_memory_access_permissions_t attributes;
> > -+	enum ffa_memory_type memory_type;
> > -+	enum ffa_memory_cacheability memory_cacheability;
> > -+	enum ffa_memory_shareability memory_shareability;
> > - 
> > - 	assert(permissions != NULL);
> > - 
> > -@@ -1536,9 +1503,26 @@ static struct ffa_value ffa_memory_send_validate(
> > - 	 * Normal Memory, Inner shareable, Write-Back Read-Allocate
> > - 	 * Write-Allocate Cacheable.
> > - 	 */
> > --	ret = ffa_memory_attributes_validate(memory_region->attributes);
> > --	if (ret.func != FFA_SUCCESS_32) {
> > --		return ret;
> > -+	attributes = memory_region->attributes;
> > -+	memory_type = ffa_get_memory_type_attr(attributes);
> > -+	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
> > -+		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
> > -+			     memory_type, FFA_MEMORY_NORMAL_MEM);
> > -+		return ffa_error(FFA_INVALID_PARAMETERS);
> > -+	}
> > -+
> > -+	memory_cacheability = ffa_get_memory_cacheability_attr(attributes);
> > -+	if (memory_cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
> > -+		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
> > -+			     memory_cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
> > -+		return ffa_error(FFA_INVALID_PARAMETERS);
> > -+	}
> > -+
> > -+	memory_shareability = ffa_get_memory_shareability_attr(attributes);
> > -+	if (memory_shareability != FFA_MEMORY_INNER_SHAREABLE) {
> > -+		dlog_verbose("Invalid shareability %#x, expected %#x.\n",
> > -+			     memory_shareability, FFA_MEMORY_INNER_SHAREABLE);
> > -+		return ffa_error(FFA_INVALID_PARAMETERS);
> > - 	}
> > - 
> > - 	return (struct ffa_value){.func = FFA_SUCCESS_32};
> > -@@ -2376,6 +2360,7 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
> > - 	 * Check permissions from sender against permissions requested by
> > - 	 * receiver.
> > - 	 */
> > -+	/* TODO: Check attributes too. */
> > - 	sent_permissions =
> > - 		memory_region->receivers[0].receiver_permissions.permissions;
> > - 	sent_data_access = ffa_get_data_access_attr(sent_permissions);
> > -@@ -2453,17 +2438,6 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
> > - 		panic("Got unexpected FFA_INSTRUCTION_ACCESS_RESERVED. Should "
> > - 		      "be checked before this point.");
> > - 	}
> > --
> > --	/*
> > --	 * Ensure receiver's attributes are compatible with how Hafnium maps
> > --	 * memory: Normal Memory, Inner shareable, Write-Back Read-Allocate
> > --	 * Write-Allocate Cacheable.
> > --	 */
> > --	ret = ffa_memory_attributes_validate(retrieve_request->attributes);
> > --	if (ret.func != FFA_SUCCESS_32) {
> > --		goto out;
> > --	}
> > --
> > - 	memory_to_attributes = ffa_memory_permissions_to_mode(
> > - 		permissions, share_state->sender_orig_mode);
> > - 	ret = ffa_retrieve_check_update(
> > -diff --git a/test/vmapi/el0_partitions/memory_sharing.c b/test/vmapi/el0_partitions/memory_sharing.c
> > -index 3756d7d..c29f029 100644
> > ---- a/test/vmapi/el0_partitions/memory_sharing.c
> > -+++ b/test/vmapi/el0_partitions/memory_sharing.c
> > -@@ -2160,87 +2160,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
> > - 	}
> > - }
> > - 
> > --/**
> > -- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
> > -- * with hardcoded values and doesn't support custom mappings.
> > -- */
> > --TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
> > --{
> > --	struct ffa_value ret;
> > --	struct mailbox_buffers mb = set_up_mailbox();
> > --	uint32_t msg_size;
> > --	ffa_memory_handle_t handle;
> > --
> > --	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
> > --		ffa_mem_share,
> > --		ffa_mem_lend,
> > --	};
> > --
> > --	struct ffa_memory_region_constituent constituents[] = {
> > --		{.address = (uint64_t)pages, .page_count = 2},
> > --		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
> > --	};
> > --
> > --	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail", mb.send);
> > --
> > --	struct {
> > --		enum ffa_memory_type memory_type;
> > --		enum ffa_memory_cacheability memory_cacheability;
> > --		enum ffa_memory_shareability memory_shareability;
> > --	} invalid_attributes[] = {
> > --		/* Invalid memory type */
> > --		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_INNER_SHAREABLE},
> > --		/* Invalid cacheability */
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
> > --		 FFA_MEMORY_INNER_SHAREABLE},
> > --		/* Invalid shareability */
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_SHARE_NON_SHAREABLE},
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_OUTER_SHAREABLE}};
> > --
> > --	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
> > --		/* Prepare memory region, and set all flags */
> > --		EXPECT_EQ(ffa_memory_region_init(
> > --				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
> > --				  SERVICE_VM1, constituents,
> > --				  ARRAY_SIZE(constituents), 0, 0,
> > --				  FFA_DATA_ACCESS_RW,
> > --				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> > --				  FFA_MEMORY_NORMAL_MEM,
> > --				  FFA_MEMORY_CACHE_WRITE_BACK,
> > --				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
> > --			  0);
> > --
> > --		ret = send_function[i](msg_size, msg_size);
> > --		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
> > --
> > --		handle = ffa_mem_success_handle(ret);
> > --
> > --		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
> > --			msg_size = ffa_memory_retrieve_request_init(
> > --				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
> > --				0, 0, FFA_DATA_ACCESS_RW,
> > --				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> > --				invalid_attributes[j].memory_type,
> > --				invalid_attributes[j].memory_cacheability,
> > --				invalid_attributes[j].memory_shareability);
> > --
> > --			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
> > --
> > --			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
> > --					       msg_size, 0)
> > --					  .func,
> > --				  FFA_SUCCESS_32);
> > --
> > --			ffa_run(SERVICE_VM1, 0);
> > --		}
> > --
> > --		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
> > --	}
> > --}
> > --
> > - /**
> > -  * If memory is shared can't request zeroing of memory at both send and
> > -  * relinquish.
> > -diff --git a/test/vmapi/primary_with_secondaries/memory_sharing.c b/test/vmapi/primary_with_secondaries/memory_sharing.c
> > -index 6080709..4bcf252 100644
> > ---- a/test/vmapi/primary_with_secondaries/memory_sharing.c
> > -+++ b/test/vmapi/primary_with_secondaries/memory_sharing.c
> > -@@ -2307,87 +2307,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
> > - 	}
> > - }
> > - 
> > --/**
> > -- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
> > -- * with hardcoded values and doesn't support custom mappings.
> > -- */
> > --TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
> > --{
> > --	struct ffa_value ret;
> > --	struct mailbox_buffers mb = set_up_mailbox();
> > --	uint32_t msg_size;
> > --	ffa_memory_handle_t handle;
> > --
> > --	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
> > --		ffa_mem_share,
> > --		ffa_mem_lend,
> > --	};
> > --
> > --	struct ffa_memory_region_constituent constituents[] = {
> > --		{.address = (uint64_t)pages, .page_count = 2},
> > --		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
> > --	};
> > --
> > --	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail_denied", mb.send);
> > --
> > --	struct {
> > --		enum ffa_memory_type memory_type;
> > --		enum ffa_memory_cacheability memory_cacheability;
> > --		enum ffa_memory_shareability memory_shareability;
> > --	} invalid_attributes[] = {
> > --		/* Invalid memory type */
> > --		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_INNER_SHAREABLE},
> > --		/* Invalid cacheability */
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
> > --		 FFA_MEMORY_INNER_SHAREABLE},
> > --		/* Invalid shareability */
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_SHARE_NON_SHAREABLE},
> > --		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
> > --		 FFA_MEMORY_OUTER_SHAREABLE}};
> > --
> > --	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
> > --		/* Prepare memory region, and set all flags */
> > --		EXPECT_EQ(ffa_memory_region_init(
> > --				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
> > --				  SERVICE_VM1, constituents,
> > --				  ARRAY_SIZE(constituents), 0, 0,
> > --				  FFA_DATA_ACCESS_RW,
> > --				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> > --				  FFA_MEMORY_NORMAL_MEM,
> > --				  FFA_MEMORY_CACHE_WRITE_BACK,
> > --				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
> > --			  0);
> > --
> > --		ret = send_function[i](msg_size, msg_size);
> > --		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
> > --
> > --		handle = ffa_mem_success_handle(ret);
> > --
> > --		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
> > --			msg_size = ffa_memory_retrieve_request_init(
> > --				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
> > --				0, 0, FFA_DATA_ACCESS_RW,
> > --				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
> > --				invalid_attributes[j].memory_type,
> > --				invalid_attributes[j].memory_cacheability,
> > --				invalid_attributes[j].memory_shareability);
> > --
> > --			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
> > --
> > --			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
> > --					       msg_size, 0)
> > --					  .func,
> > --				  FFA_SUCCESS_32);
> > --
> > --			ffa_run(SERVICE_VM1, 0);
> > --		}
> > --
> > --		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
> > --	}
> > --}
> > --
> > - /**
> > -  * If memory is shared can't request zeroing of memory at both send and
> > -  * relinquish.
> > --- 
> > -2.17.1
> > -
> > diff --git a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> > index c8f77dc6..9da9c117 100644
> > --- a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> > +++ b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
> > @@ -3,7 +3,10 @@
> >  COMPATIBLE_MACHINE = "(tc?)"
> >  HAFNIUM_PLATFORM = "secure_tc"
> >  
> > -SRCREV = "4eb7b54348234d7f4bbac64bac28f683d6574ba9"
> > +# Intermediate SHA with 2.7 baseline version
> > +SRCREV = "dd0561820946fe23bcd57cc129140437f72102a5"
> > +PV = "2.7+git${SRCPV}"
> > +
> >  FILESEXTRAPATHS:prepend:tc := "${THISDIR}/files/tc:"
> >  
> >  SRC_URI:remove = " \
> > @@ -12,11 +15,8 @@ SRC_URI:remove = " \
> >  
> >  SRC_URI:append = " \
> >          file://0001-feat-emulate-cntp-timer-register-accesses-using-cnth.patch \
> > -        file://0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch \
> > -        file://0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch \
> > -        file://0004-feat-emulate-interrupt-controller-register-access.patch \
> > -        file://0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch \
> > -        file://0006-tc-increase-heap-pages.patch \
> > +        file://0002-feat-emulate-interrupt-controller-register-access.patch \
> > +        file://0003-tc-increase-heap-pages.patch \
> >          "
> >  
> >  do_compile() {
> > diff --git a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> > index bc031956..cccf28a1 100644
> > --- a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> > +++ b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
> > @@ -4,17 +4,17 @@ Upstream-Status: Inappropriate
> >  Signed-off-by: Ross Burton <ross.burton@arm.com>
> >  
> >  diff --git a/scripts/Makefile b/scripts/Makefile
> > -index b4b7d8b58..26a5160ee 100644
> > +index 9adb6d247..5fe371c7d 100644
> >  --- a/third_party/linux/scripts/Makefile
> >  +++ b/third_party/linux/scripts/Makefile
> > -@@ -10,8 +10,8 @@
> > -
> > - HOST_EXTRACFLAGS += -I$(srctree)/tools/include
> > -
> > +@@ -3,8 +3,8 @@
> > + # scripts contains sources for various helper programs used throughout
> > + # the kernel for the build process.
> > + 
> >  -CRYPTO_LIBS = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
> >  -CRYPTO_CFLAGS = $(shell pkg-config --cflags libcrypto 2> /dev/null)
> >  +CRYPTO_LIBS = $(shell pkg-config-native --libs libcrypto 2> /dev/null || echo -lcrypto)
> >  +CRYPTO_CFLAGS = $(shell pkg-config-native --cflags libcrypto 2> /dev/null)
> > -
> > - hostprogs-$(CONFIG_BUILD_BIN2C)  += bin2c
> > - hostprogs-$(CONFIG_KALLSYMS)     += kallsyms
> > + 
> > + hostprogs-always-$(CONFIG_BUILD_BIN2C)			+= bin2c
> > + hostprogs-always-$(CONFIG_KALLSYMS)			+= kallsyms
> > -- 
> > 2.34.1
> > 
> > 
>
diff mbox series

Patch

diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
similarity index 100%
rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0004-feat-emulate-interrupt-controller-register-access.patch
rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-feat-emulate-interrupt-controller-register-access.patch
diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
deleted file mode 100644
index 2b57b239..00000000
--- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch
+++ /dev/null
@@ -1,152 +0,0 @@ 
-From e6bcc390749f0560b3bc92507ecbaaabc7145200 Mon Sep 17 00:00:00 2001
-From: Lucian Paul-Trifu <lucian.paul-trifu@arm.com>
-Date: Wed, 10 Mar 2021 11:31:02 +0000
-Subject: [PATCH 2/5] fix(ff-a): Use FFA_INTERRUPT to signal an interrupted
- FFA_MSG_WAIT
-
-Rather than FFA_ERROR(INTERRUPTED).
-
-Change-Id: I6b23a442714852b6183e0e46af6f0504ec0ee8f4
-Signed-off-by: Ben Horgan <ben.horgan@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- src/api.c                                                  | 2 +-
- test/inc/test/vmapi/ffa.h                                  | 7 +++++++
- test/vmapi/arch/aarch64/gicv3/services/common.c            | 3 +--
- test/vmapi/arch/aarch64/gicv3/services/timer.c             | 2 +-
- test/vmapi/el0_partitions/services/interruptible.c         | 3 +--
- test/vmapi/el0_partitions/services/interruptible_echo.c    | 3 +--
- test/vmapi/el0_partitions/services/receive_block.c         | 2 +-
- .../primary_with_secondaries/services/interruptible.c      | 3 +--
- .../primary_with_secondaries/services/receive_block.c      | 2 +-
- 9 files changed, 15 insertions(+), 12 deletions(-)
-
-diff --git a/src/api.c b/src/api.c
-index b713b7c..00c4d44 100644
---- a/src/api.c
-+++ b/src/api.c
-@@ -1588,7 +1588,7 @@ struct ffa_value api_ffa_msg_recv(bool block, struct vcpu *current,
- 	 * received. If a message is received the return value will be set at
- 	 * that time to FFA_SUCCESS.
- 	 */
--	return_code = ffa_error(FFA_INTERRUPTED);
-+	return_code = (struct ffa_value){.func = FFA_INTERRUPT_32};
- 	if (api_ffa_msg_recv_block_interrupted(current)) {
- 		goto out;
- 	}
-diff --git a/test/inc/test/vmapi/ffa.h b/test/inc/test/vmapi/ffa.h
-index 8fc1223..f0f3e75 100644
---- a/test/inc/test/vmapi/ffa.h
-+++ b/test/inc/test/vmapi/ffa.h
-@@ -24,6 +24,13 @@
- 		EXPECT_EQ(ffa_error_code(v), (ffa_error)); \
- 	} while (0)
- 
-+#define EXPECT_FFA_INTERRUPT(value)                        \
-+	do {                                               \
-+		struct ffa_value v = (value);              \
-+		EXPECT_EQ(v.func, FFA_INTERRUPT_32);       \
-+	} while (0)
-+
-+
- /*
-  * The bit 15 of the FF-A ID indicates whether the partition is executing
-  * in the normal world, in case it is a Virtual Machine (VM); or in the
-diff --git a/test/vmapi/arch/aarch64/gicv3/services/common.c b/test/vmapi/arch/aarch64/gicv3/services/common.c
-index 06df28d..4ada9e2 100644
---- a/test/vmapi/arch/aarch64/gicv3/services/common.c
-+++ b/test/vmapi/arch/aarch64/gicv3/services/common.c
-@@ -22,8 +22,7 @@ struct ffa_value mailbox_receive_retry(void)
- 
- 	do {
- 		received = ffa_msg_wait();
--	} while (received.func == FFA_ERROR_32 &&
--		 received.arg2 == FFA_INTERRUPTED);
-+	} while (received.func == FFA_INTERRUPT_32);
- 
- 	return received;
- }
-diff --git a/test/vmapi/arch/aarch64/gicv3/services/timer.c b/test/vmapi/arch/aarch64/gicv3/services/timer.c
-index 156f160..d5d2816 100644
---- a/test/vmapi/arch/aarch64/gicv3/services/timer.c
-+++ b/test/vmapi/arch/aarch64/gicv3/services/timer.c
-@@ -104,7 +104,7 @@ TEST_SERVICE(timer)
- 		} else if (receive) {
- 			struct ffa_value res = ffa_msg_wait();
- 
--			EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
-+			EXPECT_FFA_INTERRUPT(res);
- 		} else {
- 			/* Busy wait until the timer fires. */
- 			while (!timer_fired) {
-diff --git a/test/vmapi/el0_partitions/services/interruptible.c b/test/vmapi/el0_partitions/services/interruptible.c
-index 0d00b16..4c9f099 100644
---- a/test/vmapi/el0_partitions/services/interruptible.c
-+++ b/test/vmapi/el0_partitions/services/interruptible.c
-@@ -50,8 +50,7 @@ static struct ffa_value mailbox_receive_retry()
- 	do {
- 		irq();
- 		received = ffa_msg_wait();
--	} while (received.func == FFA_ERROR_32 &&
--		 ffa_error_code(received) == FFA_INTERRUPTED);
-+	} while (received.func == FFA_INTERRUPT_32);
- 
- 	return received;
- }
-diff --git a/test/vmapi/el0_partitions/services/interruptible_echo.c b/test/vmapi/el0_partitions/services/interruptible_echo.c
-index b618cf2..a857783 100644
---- a/test/vmapi/el0_partitions/services/interruptible_echo.c
-+++ b/test/vmapi/el0_partitions/services/interruptible_echo.c
-@@ -39,8 +39,7 @@ static struct ffa_value mailbox_receive_retry()
- 	do {
- 		irq();
- 		received = ffa_msg_wait();
--	} while (received.func == FFA_ERROR_32 &&
--		 received.arg2 == FFA_INTERRUPTED);
-+	} while (received.func == FFA_INTERRUPT_32);
- 
- 	return received;
- }
-diff --git a/test/vmapi/el0_partitions/services/receive_block.c b/test/vmapi/el0_partitions/services/receive_block.c
-index 05a22f3..60da28b 100644
---- a/test/vmapi/el0_partitions/services/receive_block.c
-+++ b/test/vmapi/el0_partitions/services/receive_block.c
-@@ -27,7 +27,7 @@ TEST_SERVICE(receive_block)
- 
- 	for (i = 0; i < 10; ++i) {
- 		struct ffa_value res = ffa_msg_wait();
--		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
-+		EXPECT_FFA_INTERRUPT(res);
- 	}
- 
- 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
-diff --git a/test/vmapi/primary_with_secondaries/services/interruptible.c b/test/vmapi/primary_with_secondaries/services/interruptible.c
-index cc1c1f9..005d1ff 100644
---- a/test/vmapi/primary_with_secondaries/services/interruptible.c
-+++ b/test/vmapi/primary_with_secondaries/services/interruptible.c
-@@ -46,8 +46,7 @@ struct ffa_value mailbox_receive_retry()
- 
- 	do {
- 		received = ffa_msg_wait();
--	} while (received.func == FFA_ERROR_32 &&
--		 ffa_error_code(received) == FFA_INTERRUPTED);
-+	} while (received.func == FFA_INTERRUPT_32);
- 
- 	return received;
- }
-diff --git a/test/vmapi/primary_with_secondaries/services/receive_block.c b/test/vmapi/primary_with_secondaries/services/receive_block.c
-index edb4e3c..a6805ae 100644
---- a/test/vmapi/primary_with_secondaries/services/receive_block.c
-+++ b/test/vmapi/primary_with_secondaries/services/receive_block.c
-@@ -40,7 +40,7 @@ TEST_SERVICE(receive_block)
- 
- 	for (i = 0; i < 10; ++i) {
- 		struct ffa_value res = ffa_msg_wait();
--		EXPECT_FFA_ERROR(res, FFA_INTERRUPTED);
-+		EXPECT_FFA_INTERRUPT(res);
- 	}
- 
- 	memcpy_s(SERVICE_SEND_BUFFER(), FFA_MSG_PAYLOAD_MAX, message,
--- 
-2.17.1
-
diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
deleted file mode 100644
index 8d2cc139..00000000
--- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch
+++ /dev/null
@@ -1,28 +0,0 @@ 
-From a6f466c2594b2f56d34fee72494fbd29ea9c7d21 Mon Sep 17 00:00:00 2001
-From: Ben Horgan <ben.horgan@arm.com>
-Date: Tue, 26 Apr 2022 12:59:42 +0000
-Subject: [PATCH 3/5] fix(ff-a): Add FFA_SECONDARY_EP_REGISTER_64 to list of
- features
-
-Signed-off-by: Ben Horgan <ben.horgan@arm.com>
-Change-Id: Ic1344eb2c982c195210dc2c86aa6845f3e037077
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- src/api.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/api.c b/src/api.c
-index 00c4d44..33a9b42 100644
---- a/src/api.c
-+++ b/src/api.c
-@@ -2021,6 +2021,7 @@ struct ffa_value api_ffa_features(uint32_t feature_function_id)
- 	case FFA_MEM_PERM_SET_32:
- 	case FFA_MEM_PERM_GET_64:
- 	case FFA_MEM_PERM_SET_64:
-+	case FFA_SECONDARY_EP_REGISTER_64:
- #endif
- 		return (struct ffa_value){.func = FFA_SUCCESS_32};
- 
--- 
-2.17.1
-
diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
similarity index 100%
rename from meta-arm-bsp/recipes-bsp/hafnium/files/tc/0006-tc-increase-heap-pages.patch
rename to meta-arm-bsp/recipes-bsp/hafnium/files/tc/0003-tc-increase-heap-pages.patch
diff --git a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch b/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
deleted file mode 100644
index e5f9489e..00000000
--- a/meta-arm-bsp/recipes-bsp/hafnium/files/tc/0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch
+++ /dev/null
@@ -1,318 +0,0 @@ 
-From 64d5628c8439e4649e9c1da9b9e02ebd5c7fb8cf Mon Sep 17 00:00:00 2001
-From: Ben Horgan <ben.horgan@arm.com>
-Date: Thu, 28 Apr 2022 15:53:31 +0000
-Subject: [PATCH 5/5] Revert "fix(ff-a): check receiver's attributes on memory
- retrieve"
-
-This reverts commit a98603aa965e3ff3ca5383249213e2fd1a96d850.
-
-Change-Id: Ia71ce3ac52e9b2e85578372c24eb8d593b62435f
-Signed-off-by: Ben Horgan <ben.horgan@arm.com>
----
- src/ffa_memory.c                              | 76 ++++++-----------
- test/vmapi/el0_partitions/memory_sharing.c    | 81 -------------------
- .../primary_with_secondaries/memory_sharing.c | 81 -------------------
- 3 files changed, 25 insertions(+), 213 deletions(-)
-
-diff --git a/src/ffa_memory.c b/src/ffa_memory.c
-index ab47929..2fcc386 100644
---- a/src/ffa_memory.c
-+++ b/src/ffa_memory.c
-@@ -1344,42 +1344,6 @@ static struct ffa_value ffa_memory_send_complete(
- 	return ffa_mem_success(share_state->memory_region->handle);
- }
- 
--/**
-- * Check that the memory attributes match Hafnium expectations:
-- * Normal Memory, Inner shareable, Write-Back Read-Allocate
-- * Write-Allocate Cacheable.
-- */
--static struct ffa_value ffa_memory_attributes_validate(
--	ffa_memory_access_permissions_t attributes)
--{
--	enum ffa_memory_type memory_type;
--	enum ffa_memory_cacheability cacheability;
--	enum ffa_memory_shareability shareability;
--
--	memory_type = ffa_get_memory_type_attr(attributes);
--	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
--		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
--			     memory_type, FFA_MEMORY_NORMAL_MEM);
--		return ffa_error(FFA_DENIED);
--	}
--
--	cacheability = ffa_get_memory_cacheability_attr(attributes);
--	if (cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
--		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
--			     cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
--		return ffa_error(FFA_DENIED);
--	}
--
--	shareability = ffa_get_memory_shareability_attr(attributes);
--	if (shareability != FFA_MEMORY_INNER_SHAREABLE) {
--		dlog_verbose("Invalid shareability %#x, expected #%x.\n",
--			     shareability, FFA_MEMORY_INNER_SHAREABLE);
--		return ffa_error(FFA_DENIED);
--	}
--
--	return (struct ffa_value){.func = FFA_SUCCESS_32};
--}
--
- /**
-  * Check that the given `memory_region` represents a valid memory send request
-  * of the given `share_func` type, return the clear flag and permissions via the
-@@ -1400,7 +1364,10 @@ static struct ffa_value ffa_memory_send_validate(
- 	uint32_t constituents_length;
- 	enum ffa_data_access data_access;
- 	enum ffa_instruction_access instruction_access;
--	struct ffa_value ret;
-+	ffa_memory_access_permissions_t attributes;
-+	enum ffa_memory_type memory_type;
-+	enum ffa_memory_cacheability memory_cacheability;
-+	enum ffa_memory_shareability memory_shareability;
- 
- 	assert(permissions != NULL);
- 
-@@ -1536,9 +1503,26 @@ static struct ffa_value ffa_memory_send_validate(
- 	 * Normal Memory, Inner shareable, Write-Back Read-Allocate
- 	 * Write-Allocate Cacheable.
- 	 */
--	ret = ffa_memory_attributes_validate(memory_region->attributes);
--	if (ret.func != FFA_SUCCESS_32) {
--		return ret;
-+	attributes = memory_region->attributes;
-+	memory_type = ffa_get_memory_type_attr(attributes);
-+	if (memory_type != FFA_MEMORY_NORMAL_MEM) {
-+		dlog_verbose("Invalid memory type %#x, expected %#x.\n",
-+			     memory_type, FFA_MEMORY_NORMAL_MEM);
-+		return ffa_error(FFA_INVALID_PARAMETERS);
-+	}
-+
-+	memory_cacheability = ffa_get_memory_cacheability_attr(attributes);
-+	if (memory_cacheability != FFA_MEMORY_CACHE_WRITE_BACK) {
-+		dlog_verbose("Invalid cacheability %#x, expected %#x.\n",
-+			     memory_cacheability, FFA_MEMORY_CACHE_WRITE_BACK);
-+		return ffa_error(FFA_INVALID_PARAMETERS);
-+	}
-+
-+	memory_shareability = ffa_get_memory_shareability_attr(attributes);
-+	if (memory_shareability != FFA_MEMORY_INNER_SHAREABLE) {
-+		dlog_verbose("Invalid shareability %#x, expected %#x.\n",
-+			     memory_shareability, FFA_MEMORY_INNER_SHAREABLE);
-+		return ffa_error(FFA_INVALID_PARAMETERS);
- 	}
- 
- 	return (struct ffa_value){.func = FFA_SUCCESS_32};
-@@ -2376,6 +2360,7 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
- 	 * Check permissions from sender against permissions requested by
- 	 * receiver.
- 	 */
-+	/* TODO: Check attributes too. */
- 	sent_permissions =
- 		memory_region->receivers[0].receiver_permissions.permissions;
- 	sent_data_access = ffa_get_data_access_attr(sent_permissions);
-@@ -2453,17 +2438,6 @@ struct ffa_value ffa_memory_retrieve(struct vm_locked to_locked,
- 		panic("Got unexpected FFA_INSTRUCTION_ACCESS_RESERVED. Should "
- 		      "be checked before this point.");
- 	}
--
--	/*
--	 * Ensure receiver's attributes are compatible with how Hafnium maps
--	 * memory: Normal Memory, Inner shareable, Write-Back Read-Allocate
--	 * Write-Allocate Cacheable.
--	 */
--	ret = ffa_memory_attributes_validate(retrieve_request->attributes);
--	if (ret.func != FFA_SUCCESS_32) {
--		goto out;
--	}
--
- 	memory_to_attributes = ffa_memory_permissions_to_mode(
- 		permissions, share_state->sender_orig_mode);
- 	ret = ffa_retrieve_check_update(
-diff --git a/test/vmapi/el0_partitions/memory_sharing.c b/test/vmapi/el0_partitions/memory_sharing.c
-index 3756d7d..c29f029 100644
---- a/test/vmapi/el0_partitions/memory_sharing.c
-+++ b/test/vmapi/el0_partitions/memory_sharing.c
-@@ -2160,87 +2160,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
- 	}
- }
- 
--/**
-- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
-- * with hardcoded values and doesn't support custom mappings.
-- */
--TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
--{
--	struct ffa_value ret;
--	struct mailbox_buffers mb = set_up_mailbox();
--	uint32_t msg_size;
--	ffa_memory_handle_t handle;
--
--	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
--		ffa_mem_share,
--		ffa_mem_lend,
--	};
--
--	struct ffa_memory_region_constituent constituents[] = {
--		{.address = (uint64_t)pages, .page_count = 2},
--		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
--	};
--
--	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail", mb.send);
--
--	struct {
--		enum ffa_memory_type memory_type;
--		enum ffa_memory_cacheability memory_cacheability;
--		enum ffa_memory_shareability memory_shareability;
--	} invalid_attributes[] = {
--		/* Invalid memory type */
--		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_INNER_SHAREABLE},
--		/* Invalid cacheability */
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
--		 FFA_MEMORY_INNER_SHAREABLE},
--		/* Invalid shareability */
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_SHARE_NON_SHAREABLE},
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_OUTER_SHAREABLE}};
--
--	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
--		/* Prepare memory region, and set all flags */
--		EXPECT_EQ(ffa_memory_region_init(
--				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
--				  SERVICE_VM1, constituents,
--				  ARRAY_SIZE(constituents), 0, 0,
--				  FFA_DATA_ACCESS_RW,
--				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
--				  FFA_MEMORY_NORMAL_MEM,
--				  FFA_MEMORY_CACHE_WRITE_BACK,
--				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
--			  0);
--
--		ret = send_function[i](msg_size, msg_size);
--		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
--
--		handle = ffa_mem_success_handle(ret);
--
--		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
--			msg_size = ffa_memory_retrieve_request_init(
--				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
--				0, 0, FFA_DATA_ACCESS_RW,
--				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
--				invalid_attributes[j].memory_type,
--				invalid_attributes[j].memory_cacheability,
--				invalid_attributes[j].memory_shareability);
--
--			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
--
--			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
--					       msg_size, 0)
--					  .func,
--				  FFA_SUCCESS_32);
--
--			ffa_run(SERVICE_VM1, 0);
--		}
--
--		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
--	}
--}
--
- /**
-  * If memory is shared can't request zeroing of memory at both send and
-  * relinquish.
-diff --git a/test/vmapi/primary_with_secondaries/memory_sharing.c b/test/vmapi/primary_with_secondaries/memory_sharing.c
-index 6080709..4bcf252 100644
---- a/test/vmapi/primary_with_secondaries/memory_sharing.c
-+++ b/test/vmapi/primary_with_secondaries/memory_sharing.c
-@@ -2307,87 +2307,6 @@ TEST(memory_sharing, ffa_validate_retrieve_req_mbz)
- 	}
- }
- 
--/**
-- * Memory can't be shared with arbitrary attributes because Hafnium maps pages
-- * with hardcoded values and doesn't support custom mappings.
-- */
--TEST(memory_sharing, ffa_validate_retrieve_req_attributes)
--{
--	struct ffa_value ret;
--	struct mailbox_buffers mb = set_up_mailbox();
--	uint32_t msg_size;
--	ffa_memory_handle_t handle;
--
--	struct ffa_value (*send_function[])(uint32_t, uint32_t) = {
--		ffa_mem_share,
--		ffa_mem_lend,
--	};
--
--	struct ffa_memory_region_constituent constituents[] = {
--		{.address = (uint64_t)pages, .page_count = 2},
--		{.address = (uint64_t)pages + PAGE_SIZE * 3, .page_count = 1},
--	};
--
--	SERVICE_SELECT(SERVICE_VM1, "ffa_memory_share_fail_denied", mb.send);
--
--	struct {
--		enum ffa_memory_type memory_type;
--		enum ffa_memory_cacheability memory_cacheability;
--		enum ffa_memory_shareability memory_shareability;
--	} invalid_attributes[] = {
--		/* Invalid memory type */
--		{FFA_MEMORY_DEVICE_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_INNER_SHAREABLE},
--		/* Invalid cacheability */
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_NON_CACHEABLE,
--		 FFA_MEMORY_INNER_SHAREABLE},
--		/* Invalid shareability */
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_SHARE_NON_SHAREABLE},
--		{FFA_MEMORY_NORMAL_MEM, FFA_MEMORY_CACHE_WRITE_BACK,
--		 FFA_MEMORY_OUTER_SHAREABLE}};
--
--	for (uint32_t i = 0; i < ARRAY_SIZE(send_function); i++) {
--		/* Prepare memory region, and set all flags */
--		EXPECT_EQ(ffa_memory_region_init(
--				  mb.send, HF_MAILBOX_SIZE, HF_PRIMARY_VM_ID,
--				  SERVICE_VM1, constituents,
--				  ARRAY_SIZE(constituents), 0, 0,
--				  FFA_DATA_ACCESS_RW,
--				  FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
--				  FFA_MEMORY_NORMAL_MEM,
--				  FFA_MEMORY_CACHE_WRITE_BACK,
--				  FFA_MEMORY_INNER_SHAREABLE, NULL, &msg_size),
--			  0);
--
--		ret = send_function[i](msg_size, msg_size);
--		EXPECT_EQ(ret.func, FFA_SUCCESS_32);
--
--		handle = ffa_mem_success_handle(ret);
--
--		for (uint32_t j = 0; j < ARRAY_SIZE(invalid_attributes); ++j) {
--			msg_size = ffa_memory_retrieve_request_init(
--				mb.send, handle, HF_PRIMARY_VM_ID, SERVICE_VM1,
--				0, 0, FFA_DATA_ACCESS_RW,
--				FFA_INSTRUCTION_ACCESS_NOT_SPECIFIED,
--				invalid_attributes[j].memory_type,
--				invalid_attributes[j].memory_cacheability,
--				invalid_attributes[j].memory_shareability);
--
--			EXPECT_LE(msg_size, HF_MAILBOX_SIZE);
--
--			EXPECT_EQ(ffa_msg_send(HF_PRIMARY_VM_ID, SERVICE_VM1,
--					       msg_size, 0)
--					  .func,
--				  FFA_SUCCESS_32);
--
--			ffa_run(SERVICE_VM1, 0);
--		}
--
--		EXPECT_EQ(ffa_mem_reclaim(handle, 0).func, FFA_SUCCESS_32);
--	}
--}
--
- /**
-  * If memory is shared can't request zeroing of memory at both send and
-  * relinquish.
--- 
-2.17.1
-
diff --git a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
index c8f77dc6..9da9c117 100644
--- a/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
+++ b/meta-arm-bsp/recipes-bsp/hafnium/hafnium-tc.inc
@@ -3,7 +3,10 @@ 
 COMPATIBLE_MACHINE = "(tc?)"
 HAFNIUM_PLATFORM = "secure_tc"
 
-SRCREV = "4eb7b54348234d7f4bbac64bac28f683d6574ba9"
+# Intermediate SHA with 2.7 baseline version
+SRCREV = "dd0561820946fe23bcd57cc129140437f72102a5"
+PV = "2.7+git${SRCPV}"
+
 FILESEXTRAPATHS:prepend:tc := "${THISDIR}/files/tc:"
 
 SRC_URI:remove = " \
@@ -12,11 +15,8 @@  SRC_URI:remove = " \
 
 SRC_URI:append = " \
         file://0001-feat-emulate-cntp-timer-register-accesses-using-cnth.patch \
-        file://0002-fix-ff-a-Use-FFA_INTERRUPT-to-signal-an-interrupted-.patch \
-        file://0003-fix-ff-a-Add-FFA_SECONDARY_EP_REGISTER_64-to-list-of.patch \
-        file://0004-feat-emulate-interrupt-controller-register-access.patch \
-        file://0005-Revert-fix-ff-a-check-receiver-s-attributes-on-memor.patch \
-        file://0006-tc-increase-heap-pages.patch \
+        file://0002-feat-emulate-interrupt-controller-register-access.patch \
+        file://0003-tc-increase-heap-pages.patch \
         "
 
 do_compile() {
diff --git a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
index bc031956..cccf28a1 100644
--- a/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
+++ b/meta-arm/recipes-bsp/hafnium/hafnium/pkg-config-native.patch
@@ -4,17 +4,17 @@  Upstream-Status: Inappropriate
 Signed-off-by: Ross Burton <ross.burton@arm.com>
 
 diff --git a/scripts/Makefile b/scripts/Makefile
-index b4b7d8b58..26a5160ee 100644
+index 9adb6d247..5fe371c7d 100644
 --- a/third_party/linux/scripts/Makefile
 +++ b/third_party/linux/scripts/Makefile
-@@ -10,8 +10,8 @@
-
- HOST_EXTRACFLAGS += -I$(srctree)/tools/include
-
+@@ -3,8 +3,8 @@
+ # scripts contains sources for various helper programs used throughout
+ # the kernel for the build process.
+ 
 -CRYPTO_LIBS = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto)
 -CRYPTO_CFLAGS = $(shell pkg-config --cflags libcrypto 2> /dev/null)
 +CRYPTO_LIBS = $(shell pkg-config-native --libs libcrypto 2> /dev/null || echo -lcrypto)
 +CRYPTO_CFLAGS = $(shell pkg-config-native --cflags libcrypto 2> /dev/null)
-
- hostprogs-$(CONFIG_BUILD_BIN2C)  += bin2c
- hostprogs-$(CONFIG_KALLSYMS)     += kallsyms
+ 
+ hostprogs-always-$(CONFIG_BUILD_BIN2C)			+= bin2c
+ hostprogs-always-$(CONFIG_KALLSYMS)			+= kallsyms