From 60ea4c3507f00781be41822271ba869da28d997e Mon Sep 17 00:00:00 2001 From: J-Alves Date: Wed, 28 Jul 2021 13:57:09 +0100 Subject: fix(cactus): memory sharing tests failure MP The last test to share memory functionality tested the FFA_MEMORY_DONATE interface. After donating the memory, the original owner didn't update its stage-1 translation at EL1. Hence, when booting a MP setup, there would be a data abort, as at stage-2 translation the memory region is now owned by the receiver of the test. Share memory region was being allocated part of the BSS section, was being mapped as a static region in the xlat libraries. A static region is not meant to be unmapped. To fix the above points: - allocated a memory region in the partition manifest of all Cactus SPs for the sake of the memory sharing tests. - at stage-1 before using it for the first memory share operation, the sender would map its segment as a dynamic region. - if test included a FFA_MEMORY_DONATE call, after donation the owner unmaps the memory region from its stage-1 translation. Signed-off-by: J-Alves Change-Id: I039c0d0d1633688b0e9d6ba1e2bbebfd518fc72b --- spm/cactus/plat/arm/fvp/fdts/cactus.dts | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'spm/cactus/plat/arm/fvp/fdts/cactus.dts') diff --git a/spm/cactus/plat/arm/fvp/fdts/cactus.dts b/spm/cactus/plat/arm/fvp/fdts/cactus.dts index 7d74e1e..759adc4 100644 --- a/spm/cactus/plat/arm/fvp/fdts/cactus.dts +++ b/spm/cactus/plat/arm/fvp/fdts/cactus.dts @@ -57,6 +57,14 @@ attributes = <0x3>; /* read-write */ }; + /* Memory to be shared in memory sharing tests. */ + share-memory { + description = "share-memory"; + pages-count = <1>; + base-address =<0x00000000 0x7500000>; + attributes = <0x3>; /* read-write */ + }; + /* Without optional base-address */ test-memory { description = "test-memory"; -- cgit v1.2.3