diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2024-04-13 00:51:14 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2024-04-13 01:10:08 +0300 |
commit | 44b3caf2214045a1492e7aa14e808ac6312930e1 (patch) | |
tree | bde7c89dc5680df7768224f05287625cfbcc79dc /meta-arm/meta-arm-bsp/recipes-security | |
parent | 03514f1996efa799e50da744818ba331c2e893b6 (diff) | |
download | openbmc-44b3caf2214045a1492e7aa14e808ac6312930e1.tar.xz |
subtree updates
poky: 110ee701b3..5950c63d54:
Alexander Kanavin (19):
ovmf: update 202308 -> 202402
attr: update 2.5.1 -> 2.5.2
dpkg: update 1.22.0 -> 1.22.5
gptfdisk: update 1.0.9 -> 1.0.10
icu: update 74-1 -> 74-2
go-helloworld: update to latest revision
libpam: update 1.5.3 -> 1.6.0
libtraceevent: update 1.7.3 -> 1.8.2
mdadm: update 4.2 -> 4.3
npth: update 1.6 -> 1.7
python3-lxml: update 5.0.0 -> 5.1.0
rpm: update 4.19.1 -> 4.19.1.1
ruby: update 3.2.2 -> 3.3.0
tcl: update 8.6.13 -> 8.6.14
texinfo: update 7.0.3 -> 7.1
waffle: update 1.7.2 -> 1.8.0
shadow: update 4.14.2 -> 4.15.0
meta/lib/oe/sstatesig.py: do not error out if sstate files fail on os.stat()
scripts/oe-setup-build: write a build environment initialization one-liner into the build directory
Bruce Ashfield (1):
perf: make bpf asm include arch conditional
Chen Qi (2):
ovmf: set CVE_STATUS for CVE-2014-8271
ovmf: set CVE_STATUS for a few CVEs
Denys Dmytriyenko (3):
mtd-utils: upgrade 2.1.6 -> 2.2.0
lzip: upgrade 1.24 -> 1.24.1
wayland-protocols: upgrade 1.33 -> 1.34
Harish Sadineni (1):
rust: set CVE_STATUS for CVE-2024-24576
Joao Marcos Costa (6):
classes: document new go-vendor class
migration updates for 5.0
release-notes updates for 5.0
ref-manual/variables: add new variables for v5.0
release-notes-5.0: add updates
release-notes-5.0: mention cmake-qemu.bbclass
Joe Slater (2):
init-ifupdown: modify interfaces for busybox
packagegroup-core-boot: recommend ifupdown
Jon Mason (4):
acpica: use github for SRC_URI
acpica: update to 20240322 release
yocto-bsp/linux-yocto-dev: add genericarm64
yocto-bsp/genericarm64: add virtio-gpu
Joshua Watt (1):
bitbake: siggen: Capture SSL environment for hashserver
Julien Stephan (1):
devtool: standard: throws appropriate error if source is in detached HEAD
Jörg Sommer (1):
kernel-dev: join mkdir commands with -p
K Sanjay Nayak (1):
xorg-xserver-config: Disable screen blanking for qemu images
Khem Raj (5):
llvm: Upgrade to 18.1.3 bugfix release
sanity: Use diff instead of meld by default
libseccomp: Fix build when python packageconfig is enabled
linux-yocto: Enable nft modules for ptest images
mdadm: Fix build with new musl
Lee Chee Yang (2):
release-notes-4.0.17: reorder CVEs
migration-guides: add release notes for 4.3.4
Max Krummenacher (1):
perf: add asm include required for v6.9+
Michael Haener (1):
iproute2: add bridge package
Michael Opdenacker (19):
manuals: fix duplicate "stylecheck" target
manuals: add initial sphinx-lint support
manuals: fix trailing spaces
manuals: fix incorrect double backticks
migration-guides: add missing opening tag colon
release-notes-5.0: documentation highlights
manuals: remove tab characters
dev-manual/debugging: mention new ``taskexp_ncurses`` option
migration-guides: release-notes-5.0: update docs highlights
bitbake: prserv: simplify the PRServerClient() interface
bitbake: prserv: use double quotes by default
bitbake: bitbake-prserv: replace deprecated optparse by argparse
bitbake: prserv: use self.logger instead of logger directly
bitbake: asyncrpc: include parse_address from hashserv
bitbake: prserv: capitalization and spacing improvements
bitbake: prserv: add extra requests
bitbake: prserv: remove redundant exception handler
bitbake: prserv: correct error message
bitbake: prserv: remove unnecessary code
Mikko Rapeli (1):
linux-yocto-dev: remove duplicate DEPENDS
Ninette Adhikari (3):
oe-build-perf-report: Add apache echarts to make report interactive
oe-build-perf-report: Display more than 300 commits and date instead of commit number
oe-build-perf-report: Improve report styling and add descriptions
Oleh Matiusha (1):
nativesdk-gzip: fix reproducibility issues
Peter Hoyes (1):
u-boot-tools: Package mkeficapsule
Peter Marko (2):
bitbake.conf: remove comment about oldincludedir
systemd: make predictable name mac policy opt-out
Quentin Schulz (2):
docs: conf.py: properly escape backslashes for latex_elements
manuals: refer to new yocto-patches mailing list wherever appropriate
Richard Purdie (10):
xwayland: Upgrade 23.2.4 -> 23.2.5
curl: Upgrade 8.6.0 -> 8.7.1
nghttp2: Upgrade 1.60.1 -> 1.61.0
pseudo: Update to pull in fchmodat fix
bitbake: doc/user-manual: Add BB_LOADFACTOR_MAX
bitbake: BBHandler: Handle unclosed functions correctly
testimage: Enable runtime 'login' screenshot tests
Revert "testimage: Enable runtime 'login' screenshot tests"
python3-websockets: Import from meta-python
buildtools-tarball: Add python3-websockets
Rob Woolley (1):
bitbake: wget: Make wget --passive-ftp option conditional on ftp/ftps
Ross Burton (2):
eudev: update Upstream-Status on netifnames.patch
classes/pypi: don't expose PYPI_ARCHIVE_NAME
Simone Weiß (1):
bitbake: doc: Add section for variable context
Wang Mingyu (87):
debianutils: upgrade 5.16 -> 5.17
diffoscope: upgrade 259 -> 260
encodings: upgrade 1.0.7 -> 1.1.0
gcr: upgrade 4.2.0 -> 4.2.1
ghostscript: upgrade 10.02.1 -> 10.03.0
libassuan: upgrade 2.5.6 -> 2.5.7
libfontenc: upgrade 1.1.7 -> 1.1.8
libpng: upgrade 1.6.42 -> 1.6.43
libsdl2: upgrade 2.30.0 -> 2.30.1
libxcb: upgrade 1.16 -> 1.16.1
libxcursor: upgrade 1.2.1 -> 1.2.2
libxdmcp: upgrade 1.1.4 -> 1.1.5
mkfontscale: upgrade 1.2.2 -> 1.2.3
pango: upgrade 1.52.0 -> 1.52.1
psmisc: upgrade 23.6 -> 23.7
python3-cython: upgrade 3.0.8 -> 3.0.9
python3-hypothesis: upgrade 6.98.15 -> 6.99.4
python3-importlib-metadata: upgrade 7.0.1 -> 7.0.2
python3-libarchive-c: upgrade 5.0 -> 5.1
python3-pygobject: update 3.46.0 -> 3.48.1
python3-pyopenssl: upgrade 24.0.0 -> 24.1.0
python3-pyparsing: upgrade 3.1.1 -> 3.1.2
python3-pytest-subtests: upgrade 0.11.0 -> 0.12.1
python3-pytest: upgrade 8.0.2 -> 8.1.1
python3-trove-classifiers: upgrade 2024.2.23 -> 2024.3.3
repo: upgrade 2.42 -> 2.44
shaderc: update 2023.8 -> 2024.0
stress-ng: upgrade 0.17.05 -> 0.17.06
xauth: upgrade 1.1.2 -> 1.1.3
xev: update 1.2.5 -> 1.2.6
gnupg: upgrade 2.4.4 -> 2.4.5
adwaita-icon-theme: upgrade 45.0 -> 46.0
at-spi2-core: upgrade 2.50.1 -> 2.52.0
bind: upgrade 9.18.24 -> 9.18.25
createrepo-c: upgrade 1.0.4 -> 1.1.0
enchant2: upgrade 2.6.7 -> 2.6.8
harfbuzz: upgrade 8.3.0 -> 8.3.1
libbsd: upgrade 0.12.1 -> 0.12.2
libcomps: upgrade 0.1.20 -> 0.1.21
libpciaccess: upgrade 0.18 -> 0.18.1
libwpe: upgrade 1.14.2 -> 1.16.0
libxkbcommon: upgrade 1.6.0 -> 1.7.0
libxml2: upgrade 2.12.5 -> 2.12.6
lighttpd: upgrade 1.4.74 -> 1.4.75
openssh: upgrade 9.6p1 -> 9.7p1
python3-hatchling: upgrade 1.21.1 -> 1.22.4
python3-importlib-metadata: upgrade 7.0.2 -> 7.1.0
python3-license-expression: upgrade 30.2.0 -> 30.3.0
python3-markdown: upgrade 3.5.2 -> 3.6
python3-packaging: upgrade 23.2 -> 24.0
python3-pyelftools: upgrade 0.30 -> 0.31
python3-referencing: upgrade 0.33.0 -> 0.34.0
python3-scons: upgrade 4.6.0 -> 4.7.0
python3-setuptools: upgrade 69.1.1 -> 69.2.0
python3-wheel: upgrade 0.42.0 -> 0.43.0
python3-zipp: upgrade 3.17.0 -> 3.18.1
vala: upgrade 0.56.15 -> 0.56.16
wget: upgrade 1.21.4 -> 1.24.5
mesa: upgrade 24.0.2 -> 24.0.3
vulkan: upgrade 1.3.275.0 -> 1.3.280.0
babeltrace2: upgrade 2.0.5 -> 2.0.6
bash-completion: upgrade 2.12.0 -> 2.13.0
btrfs-tools: upgrade 6.7.1 -> 6.8
coreutils: upgrade 9.4 -> 9.5
dnf: upgrade 4.19.0 -> 4.19.2
ell: upgrade 0.63 -> 0.64
enchant2: upgrade 2.6.8 -> 2.6.9
libdnf: upgrade 0.73.0 -> 0.73.1
libical: upgrade 3.0.17 -> 3.0.18
liburi-perl: upgrade 5.27 -> 5.28
libx11: upgrade 1.8.7 -> 1.8.9
libxmlb: upgrade 0.3.15 -> 0.3.17
libxmu: upgrade 1.1.4 -> 1.2.0
lttng-tools: upgrade 2.13.11 -> 2.13.13
man-db: upgrade 2.12.0 -> 2.12.1
mpg123: upgrade 1.32.5 -> 1.32.6
mtdev: upgrade 1.1.6 -> 1.1.7
pkgconf: upgrade 2.1.1 -> 2.2.0
python3-beartype: upgrade 0.17.2 -> 0.18.2
python3-build: upgrade 1.1.1 -> 1.2.1
python3-git: upgrade 3.1.42 -> 3.1.43
python3-pyasn1: upgrade 0.5.1 -> 0.6.0
python3-typing-extensions: upgrade 4.10.0 -> 4.11.0
rsync: upgrade 3.2.7 -> 3.3.0
ttyrun: upgrade 2.31.0 -> 2.32.0
u-boot: upgrade 2024.01 -> 2024.04
xorgproto: upgrade 2023.2 -> 2024.1
Yoann Congal (2):
ref-manual: variables: document CVE_DB_INCR_UPDATE_AGE_THRES variable
release-notes-5.0: document some cve, strace and qa changes
meta-raspberrypi: d072cc8a48..1879cb831f:
Max Stepanov (1):
rpi-eeprom: Update to support raspberrypi5 machine
meta-arm: d9e18ce792..17df9c4ebc:
Anusmita Dutta Mazumder (2):
arm-bsp/u-boot:corstone1000: add unique guid for fvp and mps3
arm-bsp/tf-m:corstone1000: add unique guid for fvp and mps3
Debbie Martin (1):
arm-systemready: Change get_json_result_dir helper
Harsimran Singh Tungal (1):
corstone1000:arm-bsp/tftf: upgrade tftf version to v2.10
Jon Mason (7):
arm-bsp: remove unused recipes
arm-bsp: Remove tc1
CI: update to kas 4.3.2
arm/optee-ftpm: update to the latest SHA
arm/trusted-firmware-a: update to 2.10.3 release
arm/opencsd: update to 1.5.2
arm-bsp/corstone1000: reformat u-boot patches
meta-security: 283a773f24..d1522af21d:
Armin Kuster (1):
README.md: update to new patches mailing list
meta-openembedded: a6bcdca5b4..4958bfe013:
Alex Kiernan (1):
mdns: Upgrade 2200.80.16 -> 2200.100.94.0.2
Beniamin Sandu (5):
mbedtls: upgrade 3.5.2 -> 3.6.0
mbedtls: upgrade 2.28.7 -> 2.28.8
unbound: upgrade 1.19.1 -> 1.19.3
libtorrent: remove CVE mention
libtorrent-rasterbar: add initial recipe for 2.0.10
Changqing Li (1):
nodejs: don't always disable io_uring
Dan McGregor (2):
dash: correct licence
libfido2: new recipe
Fathi Boudra (1):
composefs: add a new recipe
Guðni Már Gilbert (1):
python3-ecdsa: upgrade 0.18.0 -> 0.19.0
Khem Raj (17):
python3-pydantic-core: Enable benchmark tests
python3-pydbus: Fix typo in ptest package name
python3-netaddr: Ignore failing tests on musl
python3-pydantic: Ignore failing testcases
python3-pydantic-core: Skip failing ptests
python3-whoosh: Fix an intermittent ptest
python3-pyzmq: Fix ptests
Revert "libqmi: upgrade 1.34.0 -> 1.35.2"
Revert "libmbim: upgrade 1.30.0 -> 1.31.2"
nftables: Fix ptest runs
python3-flexparser,python3-flexcache: Add recipes
python3-pint: Switch to using github SRC_URI
libxml++: Delete recipe for 2.42.1
jemalloc: Update to tip of dev branch
libteam: Add missing dependencies revealed by ptests
oprofile: Fix failing ptests
ptest-packagelists-meta-oe: jemalloc and oprofile are passing now
Markus Volk (1):
dav1d: update 1.4.0 -> 1.4.1
Maxim Perevozchikov (1):
nginx: Disable login for www user
Peter Kjellerstedt (1):
libnice: Update to 0.1.22
Peter Marko (1):
syslog-ng: fix build without ipv6 in distro features
Randy MacLeod (5):
ncftp: Upgrade to 3.2.7
pimd: switch SRC_URI to https
tnftp: switch the SRC_URI to https
postfix: switch SRC_URI to http
libmad: switch links/SRC_URI to https sites
Rui Costa (1):
avro: add recipe for c++
Tom Geelen (4):
python3-casttube: upgrade 0.2.0 -> 0.2.1
python3-sqlalchemy: upgrade 2.0.25 --> 2.0.27
python3-charset-normalizer: add native build option to recipe
python3-chromecast: upgrade 13.1.0 -> 14.0.0
Xiangyu Chen (1):
libgpiod: fix QA error in ptest RDEPENDS
Yi Zhao (2):
rocksdb: fix build error for DEBUG_BUILD
rocksdb: fix build error for multilib
Yongchang Qiao (1):
packagegroup-meta-filesystems: Fix utils typo
alperak (5):
python3-bleak: enable ptest and add missing runtime dependency
python3-pillow: Upgrade 10.1.0 -> 10.3.0 and fix ptest
python3-flexcache: enable ptest
python3-flexparser: enable ptest and add missing runtime dependencies
python3-flexcache: add missing runtime dependencies
Change-Id: I06aa4dd845848eec6e165878d482977f48422765
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'meta-arm/meta-arm-bsp/recipes-security')
28 files changed, 0 insertions, 2394 deletions
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0001-WIP-Enable-managed-exit.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0001-WIP-Enable-managed-exit.patch deleted file mode 100644 index 4571409bc6..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0001-WIP-Enable-managed-exit.patch +++ /dev/null @@ -1,120 +0,0 @@ -From f449f6fdcbd987e18a26f0daeccfa447fe76821a Mon Sep 17 00:00:00 2001 -From: Olivier Deprez <olivier.deprez@arm.com> -Date: Mon, 16 Nov 2020 10:14:02 +0100 -Subject: [PATCH] WIP: Enable managed exit - -This change declares OP-TEE SP as supporting managed exit in response to -a NS interrupt triggering while the SWd runs. - -At init OP-TEE enables (HF_INTERRUPT_ENABLE) the managed exit virtual -interrupt through the Hafnium para-virtualized interface. - -Physical interrupts are trapped to the SPMC which injects a managed exit -interrupt to OP-TEE. The managed exit interrupt is acknowledged by -OP-TEE by HF_INTERUPT_GET hvc call. - -Note: this code change is meant with in mind the SPMC runs at SEL2. It -needs slight refactoring such that it does not break the SEL1 SPMC -configuration. - -Change-Id: I9a95f36cf517c11048ff04680007f40259c4f636 -Signed-off-by: Olivier Deprez <olivier.deprez@arm.com> -Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> - -Upstream-Status: Pending [Not submitted to upstream yet] -Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> - ---- - core/arch/arm/kernel/boot.c | 12 ++++++++++++ - core/arch/arm/kernel/thread_a64.S | 11 ++++++++++- - core/arch/arm/kernel/thread_spmc.c | 11 +++++++++++ - .../arm/plat-totalcompute/fdts/optee_sp_manifest.dts | 1 + - 4 files changed, 34 insertions(+), 1 deletion(-) - -diff --git a/core/arch/arm/kernel/boot.c b/core/arch/arm/kernel/boot.c -index dd34173e8..7d2ac74e8 100644 ---- a/core/arch/arm/kernel/boot.c -+++ b/core/arch/arm/kernel/boot.c -@@ -1424,6 +1424,18 @@ static void init_secondary_helper(unsigned long nsec_entry) - init_vfp_sec(); - init_vfp_nsec(); - -+ /* Enable managed exit interrupt for secondary core. */ -+ __asm__ volatile ( -+ "mov x0, %0;" -+ "mov x1, %1;" -+ "mov x2, %2;" -+ "mov x3, %3;" -+ "hvc #0" -+ : : "i" (0xff03), "i" (4), "i" (1), "i" (1)); -+ -+ IMSG("%s core %lu: enabled managed exit interrupt.", -+ __func__, get_core_pos()); -+ - IMSG("Secondary CPU %zu switching to normal world boot", get_core_pos()); - } - -diff --git a/core/arch/arm/kernel/thread_a64.S b/core/arch/arm/kernel/thread_a64.S -index 4fa97de24..4facc7631 100644 ---- a/core/arch/arm/kernel/thread_a64.S -+++ b/core/arch/arm/kernel/thread_a64.S -@@ -1162,6 +1162,14 @@ END_FUNC el0_sync_abort - bl dcache_op_louis - ic iallu - #endif -+ -+ /* HF_INTERRUPT_GET */ -+ mov x0, #0xff04 -+ hvc #0 -+ /* Expect managed exit interrupt */ -+ cmp x0, #4 -+ bne . -+ - /* - * Mark current thread as suspended - */ -@@ -1318,8 +1326,9 @@ LOCAL_FUNC elx_irq , : - #endif - END_FUNC elx_irq - -+#define HF_MANAGED_EXIT 1 - LOCAL_FUNC elx_fiq , : --#if defined(CFG_ARM_GICV3) -+#if defined(CFG_ARM_GICV3) || defined (HF_MANAGED_EXIT) - foreign_intr_handler fiq - #else - native_intr_handler fiq -diff --git a/core/arch/arm/kernel/thread_spmc.c b/core/arch/arm/kernel/thread_spmc.c -index 3b4ac0b4e..8f7c18dfa 100644 ---- a/core/arch/arm/kernel/thread_spmc.c -+++ b/core/arch/arm/kernel/thread_spmc.c -@@ -1517,6 +1517,17 @@ static TEE_Result spmc_init(void) - my_endpoint_id = spmc_get_id(); - DMSG("My endpoint ID %#x", my_endpoint_id); - -+ /* Enable managed exit interrupt for boot core. */ -+ __asm__ volatile ( -+ "mov x0, %0;" -+ "mov x1, %1;" -+ "mov x2, %2;" -+ "mov x3, %3;" -+ "hvc #0" -+ : : "i" (0xff03), "i" (4), "i" (1), "i" (1)); -+ -+ IMSG("%s enabled managed exit interrupt.", __func__); -+ - return TEE_SUCCESS; - } - #endif /* !defined(CFG_CORE_SEL1_SPMC) */ -diff --git a/core/arch/arm/plat-totalcompute/fdts/optee_sp_manifest.dts b/core/arch/arm/plat-totalcompute/fdts/optee_sp_manifest.dts -index 3ebbaddc8..56e69f372 100644 ---- a/core/arch/arm/plat-totalcompute/fdts/optee_sp_manifest.dts -+++ b/core/arch/arm/plat-totalcompute/fdts/optee_sp_manifest.dts -@@ -24,6 +24,7 @@ - xlat-granule = <0>; /* 4KiB */ - boot-order = <0>; - messaging-method = <0x3>; /* Direct request/response supported */ -+ managed-exit; /* Managed exit supported */ - - device-regions { - compatible = "arm,ffa-manifest-device-regions"; diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0002-plat-totalcompute-fix-TZDRAM-start-and-size.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0002-plat-totalcompute-fix-TZDRAM-start-and-size.patch deleted file mode 100644 index c516be4638..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/tc/0002-plat-totalcompute-fix-TZDRAM-start-and-size.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 5ddda749c60dce834bcd79e8b8d904858319adc0 Mon Sep 17 00:00:00 2001 -From: Rupinderjit Singh <rupinderjit.singh@arm.com> -Date: Tue, 7 Feb 2023 09:45:02 +0000 -Subject: [PATCH] plat-totalcompute: update TZDRAM_SIZE - -For CFG_CORE_SEL2_SPMC, manifest size is increased from 0x1000 to -0x4000 for boot protocol support. - -Signed-off-by: Rupinderjit Singh <rupinderjit.singh@arm.com> -Acked-by: Jens Wiklander <jens.wiklander@linaro.org> - -Upstream-Status: Backport -Signed-off-by: Jon Mason <jon.mason@arm.com> - ---- - core/arch/arm/plat-totalcompute/conf.mk | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/core/arch/arm/plat-totalcompute/conf.mk b/core/arch/arm/plat-totalcompute/conf.mk -index b39ac0f0667f..2f6c0ee1460a 100644 ---- a/core/arch/arm/plat-totalcompute/conf.mk -+++ b/core/arch/arm/plat-totalcompute/conf.mk -@@ -32,8 +32,9 @@ ifeq ($(CFG_CORE_SEL1_SPMC),y) - CFG_TZDRAM_START ?= 0xfd000000 - CFG_TZDRAM_SIZE ?= 0x02000000 - else ifeq ($(CFG_CORE_SEL2_SPMC),y) --CFG_TZDRAM_START ?= 0xfd281000 --CFG_TZDRAM_SIZE ?= 0x01d7f000 -+CFG_TZDRAM_START ?= 0xfd284000 -+# TZDRAM size 0x1980000 - 0x4000 manifest size -+CFG_TZDRAM_SIZE ?= 0x0197c000 - else - CFG_TZDRAM_START ?= 0xff000000 - CFG_TZDRAM_SIZE ?= 0x01000000 diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-test/tc/0001-xtest-Limit-tests-to-a-single-thread.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-test/tc/0001-xtest-Limit-tests-to-a-single-thread.patch deleted file mode 100644 index 370a81c1d5..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-test/tc/0001-xtest-Limit-tests-to-a-single-thread.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 73bef38c5697cd6bd3ddbe9046681087f4f6454e Mon Sep 17 00:00:00 2001 -From: Ben Horgan <ben.horgan@arm.com> -Date: Thu, 27 Jan 2022 10:33:04 +0000 -Subject: [PATCH] xtest: Limit tests to a single thread - -Signed-off-by: Ben Horgan <ben.horgan@arm.com> -Upstream-Status: Inappropriate [Workaround for intermittent failures] ---- - host/xtest/regression_1000.c | 2 +- - host/xtest/regression_2000.c | 2 +- - host/xtest/regression_6000.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/host/xtest/regression_1000.c b/host/xtest/regression_1000.c -index 9ee9d02..82d1def 100644 ---- a/host/xtest/regression_1000.c -+++ b/host/xtest/regression_1000.c -@@ -1080,7 +1080,7 @@ static void *test_1013_thread(void *arg) - return NULL; - } - --#define NUM_THREADS 3 -+#define NUM_THREADS 1 - - static void xtest_tee_test_1013_single(ADBG_Case_t *c, double *mean_concurrency, - const TEEC_UUID *uuid) -diff --git a/host/xtest/regression_2000.c b/host/xtest/regression_2000.c -index 0591a42..a9f4b95 100644 ---- a/host/xtest/regression_2000.c -+++ b/host/xtest/regression_2000.c -@@ -499,7 +499,7 @@ out: - return NULL; - } - --#define NUM_THREADS 3 -+#define NUM_THREADS 1 - - static void xtest_tee_test_2002(ADBG_Case_t *c) - { -diff --git a/host/xtest/regression_6000.c b/host/xtest/regression_6000.c -index ca1c254..d67ea7f 100644 ---- a/host/xtest/regression_6000.c -+++ b/host/xtest/regression_6000.c -@@ -1568,7 +1568,7 @@ exit: - } - - --#define NUM_THREADS 4 -+#define NUM_THREADS 1 - static void xtest_tee_test_6016_loop(ADBG_Case_t *c, uint32_t storage_id) - { - struct test_6016_thread_arg arg[NUM_THREADS] = { }; --- -2.17.1 - diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_3.20.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_3.20.0.bb deleted file mode 100644 index 3daab7f838..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_3.20.0.bb +++ /dev/null @@ -1,7 +0,0 @@ -require recipes-security/optee/optee-client.inc - -SRCREV = "dd2d39b49975d2ada7870fe2b7f5a84d0d3860dc" - -inherit pkgconfig -DEPENDS += "util-linux" -EXTRA_OEMAKE += "PKG_CONFIG=pkg-config" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_4.0.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_4.0.0.bb deleted file mode 100644 index dc9577c211..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-client_4.0.0.bb +++ /dev/null @@ -1,7 +0,0 @@ -require recipes-security/optee/optee-client.inc - -SRCREV = "acb0885c117e73cb6c5c9b1dd9054cb3f93507ee" - -inherit pkgconfig -DEPENDS += "util-linux" -EXTRA_OEMAKE += "PKG_CONFIG=pkg-config" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0001-allow-setting-sysroot-for-libgcc-lookup.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0001-allow-setting-sysroot-for-libgcc-lookup.patch deleted file mode 100644 index 54b667a6e5..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0001-allow-setting-sysroot-for-libgcc-lookup.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 843eb2ef918d5ae3d09de088110cb026ca25306b Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@arm.com> -Date: Tue, 26 May 2020 14:38:02 -0500 -Subject: [PATCH] allow setting sysroot for libgcc lookup - -Explicitly pass the new variable LIBGCC_LOCATE_CFLAGS variable when searching -for the compiler libraries as there's no easy way to reliably pass --sysroot -otherwise. - -Upstream-Status: Pending [https://github.com/OP-TEE/optee_os/issues/4188] -Signed-off-by: Ross Burton <ross.burton@arm.com> ---- - mk/gcc.mk | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/mk/gcc.mk b/mk/gcc.mk -index adc77a24f25e..81bfa78ad8d7 100644 ---- a/mk/gcc.mk -+++ b/mk/gcc.mk -@@ -13,11 +13,11 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \ - -print-file-name=include 2> /dev/null) - - # Get location of libgcc from gcc --libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \ -+libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \ - -print-libgcc-file-name 2> /dev/null) --libstdc++$(sm) := $(shell $(CXX$(sm)) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \ -+libstdc++$(sm) := $(shell $(CXX$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \ - -print-file-name=libstdc++.a 2> /dev/null) --libgcc_eh$(sm) := $(shell $(CXX$(sm)) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \ -+libgcc_eh$(sm) := $(shell $(CXX$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \ - -print-file-name=libgcc_eh.a 2> /dev/null) - - # Define these to something to discover accidental use diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0002-optee-enable-clang-support.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0002-optee-enable-clang-support.patch deleted file mode 100644 index b3e3098019..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0002-optee-enable-clang-support.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0ca5ef7c8256dbd9690a01a82397bc16a123e179 Mon Sep 17 00:00:00 2001 -From: Brett Warren <brett.warren@arm.com> -Date: Wed, 23 Sep 2020 09:27:34 +0100 -Subject: [PATCH] optee: enable clang support - -When compiling with clang, the LIBGCC_LOCATE_CFLAG variable used -to provide a sysroot wasn't included, which results in not locating -compiler-rt. This is mitigated by including the variable as ammended. - -Upstream-Status: Pending -ChangeId: 8ba69a4b2eb8ebaa047cb266c9aa6c2c3da45701 -Signed-off-by: Brett Warren <brett.warren@arm.com> ---- - mk/clang.mk | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mk/clang.mk b/mk/clang.mk -index a045beee8482..1ebe2f702dcd 100644 ---- a/mk/clang.mk -+++ b/mk/clang.mk -@@ -30,7 +30,7 @@ comp-cflags-warns-clang := -Wno-language-extension-token \ - - # Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of - # libgcc for clang --libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \ -+libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \ - -rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null) - - # Core ASLR relies on the executable being ready to run from its preferred load diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0003-core-link-add-no-warn-rwx-segments.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0003-core-link-add-no-warn-rwx-segments.patch deleted file mode 100644 index 5d4191ff99..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0003-core-link-add-no-warn-rwx-segments.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 741df4df0ec7b69b0573cff265dc1ae7cb70b55c Mon Sep 17 00:00:00 2001 -From: Jerome Forissier <jerome.forissier@linaro.org> -Date: Fri, 5 Aug 2022 09:48:03 +0200 -Subject: [PATCH] core: link: add --no-warn-rwx-segments - -Signed-off-by: Anton Antonov <Anton.Antonov@arm.com> -Upstream-Status: Backport [https://github.com/OP-TEE/optee_os/pull/5474] - -binutils ld.bfd generates one RWX LOAD segment by merging several sections -with mixed R/W/X attributes (.text, .rodata, .data). After version 2.38 it -also warns by default when that happens [1], which breaks the build due to ---fatal-warnings. The RWX segment is not a problem for the TEE core, since -that information is not used to set memory permissions. Therefore, silence -the warning. - -Link: [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107 -Link: https://sourceware.org/bugzilla/show_bug.cgi?id=29448 -Reported-by: Dominique Martinet <dominique.martinet@atmark-techno.com> -Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> -Acked-by: Jens Wiklander <jens.wiklander@linaro.org> ---- - core/arch/arm/kernel/link.mk | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk -index 0e96e606cd9d..3fbcb6804c6f 100644 ---- a/core/arch/arm/kernel/link.mk -+++ b/core/arch/arm/kernel/link.mk -@@ -37,6 +37,7 @@ link-ldflags += --sort-section=alignment - link-ldflags += --fatal-warnings - link-ldflags += --gc-sections - link-ldflags += $(link-ldflags-common) -+link-ldflags += $(call ld-option,--no-warn-rwx-segments) - - link-ldadd = $(LDADD) - link-ldadd += $(ldflags-external) -@@ -61,6 +62,7 @@ link-script-cppflags := \ - $(cppflagscore)) - - ldargs-all_objs := -T $(link-script-dummy) --no-check-sections \ -+ $(call ld-option,--no-warn-rwx-segments) \ - $(link-ldflags-common) \ - $(link-objs) $(link-ldadd) $(libgcccore) - cleanfiles += $(link-out-dir)/all_objs.o -@@ -75,7 +77,7 @@ $(link-out-dir)/unpaged_entries.txt: $(link-out-dir)/all_objs.o - $(AWK) '/ ____keep_pager/ { printf "-u%s ", $$3 }' > $@ - - unpaged-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \ -- $(link-ldflags-common) -+ $(link-ldflags-common) $(call ld-option,--no-warn-rwx-segments) - unpaged-ldadd := $(objs) $(link-ldadd) $(libgcccore) - cleanfiles += $(link-out-dir)/unpaged.o - $(link-out-dir)/unpaged.o: $(link-out-dir)/unpaged_entries.txt -@@ -104,7 +106,7 @@ $(link-out-dir)/init_entries.txt: $(link-out-dir)/all_objs.o - $(AWK) '/ ____keep_init/ { printf "-u%s ", $$3 }' > $@ - - init-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \ -- $(link-ldflags-common) -+ $(link-ldflags-common) $(call ld-option,--no-warn-rwx-segments) - init-ldadd := $(link-objs-init) $(link-out-dir)/version.o $(link-ldadd) \ - $(libgcccore) - cleanfiles += $(link-out-dir)/init.o diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0004-core-Define-section-attributes-for-clang.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0004-core-Define-section-attributes-for-clang.patch deleted file mode 100644 index 6229be9949..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0004-core-Define-section-attributes-for-clang.patch +++ /dev/null @@ -1,240 +0,0 @@ -From 162493e5b212b9d7391669a55be09b69b97a9cf8 Mon Sep 17 00:00:00 2001 -From: Emekcan Aras <emekcan.aras@arm.com> -Date: Wed, 21 Dec 2022 10:55:58 +0000 -Subject: [PATCH] core: Define section attributes for clang - -Clang's attribute section is not same as gcc, here we need to add flags -to sections so they can be eventually collected by linker into final -output segments. Only way to do so with clang is to use - -pragma clang section ... - -The behavious is described here [1], this allows us to define names bss -sections. This was not an issue until clang-15 where LLD linker starts -to detect the section flags before merging them and throws the following -errors - -| ld.lld: error: section type mismatch for .nozi.kdata_page -| >>> /mnt/b/yoe/master/build/tmp/work/qemuarm64-yoe-linux/optee-os-tadevkit/3.17.0-r0/build/core/arch/arm/kernel/thread.o:(.nozi.kdata_page): SHT_PROGBITS -| >>> output section .nozi: SHT_NOBITS -| -| ld.lld: error: section type mismatch for .nozi.mmu.l2 -| >>> /mnt/b/yoe/master/build/tmp/work/qemuarm64-yoe-linux/optee-os-tadevkit/3.17.0-r0/build/core/arch/arm/mm/core_mmu_lpae.o:(.nozi.mmu.l2): SHT_PROGBITS -| >>> output section .nozi: SHT_NOBITS - -These sections should be carrying SHT_NOBITS but so far it was not -possible to do so, this patch tries to use clangs pragma to get this -going and match the functionality with gcc. - -[1] https://intel.github.io/llvm-docs/clang/LanguageExtensions.html#specifying-section-names-for-global-objects-pragma-clang-section - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - core/arch/arm/kernel/thread.c | 19 +++++++++++++++-- - core/arch/arm/mm/core_mmu_lpae.c | 35 +++++++++++++++++++++++++++---- - core/arch/arm/mm/core_mmu_v7.c | 36 +++++++++++++++++++++++++++++--- - core/arch/arm/mm/pgt_cache.c | 12 ++++++++++- - core/kernel/thread.c | 13 +++++++++++- - 5 files changed, 104 insertions(+), 11 deletions(-) - -diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c -index 1cf76a0ca690..1e7f9f96b558 100644 ---- a/core/arch/arm/kernel/thread.c -+++ b/core/arch/arm/kernel/thread.c -@@ -44,15 +44,30 @@ static size_t thread_user_kcode_size __nex_bss; - #if defined(CFG_CORE_UNMAP_CORE_AT_EL0) && \ - defined(CFG_CORE_WORKAROUND_SPECTRE_BP_SEC) && defined(ARM64) - long thread_user_kdata_sp_offset __nex_bss; -+#ifdef __clang__ -+#ifndef CFG_VIRTUALIZATION -+#pragma clang section bss=".nozi.kdata_page" -+#else -+#pragma clang section bss=".nex_nozi.kdata_page" -+#endif -+#endif - static uint8_t thread_user_kdata_page[ - ROUNDUP(sizeof(struct thread_core_local) * CFG_TEE_CORE_NB_CORE, - SMALL_PAGE_SIZE)] - __aligned(SMALL_PAGE_SIZE) -+#ifndef __clang__ - #ifndef CFG_VIRTUALIZATION -- __section(".nozi.kdata_page"); -+ __section(".nozi.kdata_page") - #else -- __section(".nex_nozi.kdata_page"); -+ __section(".nex_nozi.kdata_page") - #endif -+#endif -+ ; -+#endif -+ -+/* reset BSS section to default ( .bss ) */ -+#ifdef __clang__ -+#pragma clang section bss="" - #endif - - #ifdef ARM32 -diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c -index 3f08eec623f3..e6dc9261c41e 100644 ---- a/core/arch/arm/mm/core_mmu_lpae.c -+++ b/core/arch/arm/mm/core_mmu_lpae.c -@@ -233,19 +233,46 @@ typedef uint16_t l1_idx_t; - typedef uint64_t base_xlat_tbls_t[CFG_TEE_CORE_NB_CORE][NUM_BASE_LEVEL_ENTRIES]; - typedef uint64_t xlat_tbl_t[XLAT_TABLE_ENTRIES]; - -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.base_table" -+#endif - static base_xlat_tbls_t base_xlation_table[NUM_BASE_TABLES] - __aligned(NUM_BASE_LEVEL_ENTRIES * XLAT_ENTRY_SIZE) -- __section(".nozi.mmu.base_table"); -+#ifndef __clang__ -+ __section(".nozi.mmu.base_table") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.l2" -+#endif - static xlat_tbl_t xlat_tables[MAX_XLAT_TABLES] -- __aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2"); -+ __aligned(XLAT_TABLE_SIZE) -+#ifndef __clang__ -+ __section(".nozi.mmu.l2") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - - #define XLAT_TABLES_SIZE (sizeof(xlat_tbl_t) * MAX_XLAT_TABLES) - -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.l2" -+#endif - /* MMU L2 table for TAs, one for each thread */ - static xlat_tbl_t xlat_tables_ul1[CFG_NUM_THREADS] -- __aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2"); -- -+#ifndef __clang__ -+ __aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - /* - * TAs page table entry inside a level 1 page table. - * -diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c -index cd85bd22d385..3e18f54f6cf8 100644 ---- a/core/arch/arm/mm/core_mmu_v7.c -+++ b/core/arch/arm/mm/core_mmu_v7.c -@@ -204,16 +204,46 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_ENTRIES]; - typedef uint32_t l2_xlat_tbl_t[NUM_L2_ENTRIES]; - typedef uint32_t ul1_xlat_tbl_t[NUM_UL1_ENTRIES]; - -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.l1" -+#endif - static l1_xlat_tbl_t main_mmu_l1_ttb -- __aligned(L1_ALIGNMENT) __section(".nozi.mmu.l1"); -+ __aligned(L1_ALIGNMENT) -+#ifndef __clang__ -+ __section(".nozi.mmu.l1") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - - /* L2 MMU tables */ -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.l2" -+#endif - static l2_xlat_tbl_t main_mmu_l2_ttb[MAX_XLAT_TABLES] -- __aligned(L2_ALIGNMENT) __section(".nozi.mmu.l2"); -+ __aligned(L2_ALIGNMENT) -+#ifndef __clang__ -+ __section(".nozi.mmu.l2") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - - /* MMU L1 table for TAs, one for each thread */ -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.ul1" -+#endif - static ul1_xlat_tbl_t main_mmu_ul1_ttb[CFG_NUM_THREADS] -- __aligned(UL1_ALIGNMENT) __section(".nozi.mmu.ul1"); -+ __aligned(UL1_ALIGNMENT) -+#ifndef __clang__ -+ __section(".nozi.mmu.ul1") -+#endif -+; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - - struct mmu_partition { - l1_xlat_tbl_t *l1_table; -diff --git a/core/arch/arm/mm/pgt_cache.c b/core/arch/arm/mm/pgt_cache.c -index 79553c6d2183..b9efdf42780b 100644 ---- a/core/arch/arm/mm/pgt_cache.c -+++ b/core/arch/arm/mm/pgt_cache.c -@@ -410,8 +410,18 @@ void pgt_init(void) - * has a large alignment, while .bss has a small alignment. The current - * link script is optimized for small alignment in .bss - */ -+#ifdef __clang__ -+#pragma clang section bss=".nozi.mmu.l2" -+#endif - static uint8_t pgt_tables[PGT_CACHE_SIZE][PGT_SIZE] -- __aligned(PGT_SIZE) __section(".nozi.pgt_cache"); -+ __aligned(PGT_SIZE) -+#ifndef __clang__ -+ __section(".nozi.pgt_cache") -+#endif -+ ; -+#ifdef __clang__ -+#pragma clang section bss="" -+#endif - size_t n; - - for (n = 0; n < ARRAY_SIZE(pgt_tables); n++) { -diff --git a/core/kernel/thread.c b/core/kernel/thread.c -index d1f2f3823be7..8de124ae5357 100644 ---- a/core/kernel/thread.c -+++ b/core/kernel/thread.c -@@ -38,13 +38,24 @@ struct thread_core_local thread_core_local[CFG_TEE_CORE_NB_CORE] __nex_bss; - name[stack_num][sizeof(name[stack_num]) / sizeof(uint32_t) - 1] - #endif - -+#define DO_PRAGMA(x) _Pragma (#x) -+ -+#ifdef __clang__ -+#define DECLARE_STACK(name, num_stacks, stack_size, linkage) \ -+DO_PRAGMA (clang section bss=".nozi_stack." #name) \ -+linkage uint32_t name[num_stacks] \ -+ [ROUNDUP(stack_size + STACK_CANARY_SIZE + STACK_CHECK_EXTRA, \ -+ STACK_ALIGNMENT) / sizeof(uint32_t)] \ -+ __attribute__((aligned(STACK_ALIGNMENT))); \ -+DO_PRAGMA(clang section bss="") -+#else - #define DECLARE_STACK(name, num_stacks, stack_size, linkage) \ - linkage uint32_t name[num_stacks] \ - [ROUNDUP(stack_size + STACK_CANARY_SIZE + STACK_CHECK_EXTRA, \ - STACK_ALIGNMENT) / sizeof(uint32_t)] \ - __attribute__((section(".nozi_stack." # name), \ - aligned(STACK_ALIGNMENT))) -- -+#endif - #define GET_STACK(stack) ((vaddr_t)(stack) + STACK_SIZE(stack)) - - DECLARE_STACK(stack_tmp, CFG_TEE_CORE_NB_CORE, STACK_TMP_SIZE, diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0005-core-arm-S-EL1-SPMC-boot-ABI-update.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0005-core-arm-S-EL1-SPMC-boot-ABI-update.patch deleted file mode 100644 index e6fe716812..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0005-core-arm-S-EL1-SPMC-boot-ABI-update.patch +++ /dev/null @@ -1,89 +0,0 @@ -From d0e32b6e202cde672c2b38dc568122a52be716b4 Mon Sep 17 00:00:00 2001 -From: Jens Wiklander <jens.wiklander@linaro.org> -Date: Mon, 21 Nov 2022 18:17:33 +0100 -Subject: [PATCH] core: arm: S-EL1 SPMC: boot ABI update - -Updates the boot ABI for S-EL1 SPMC to align better with other SPMCs, -like Hafnium, but also with the non-FF-A configuration. - -Register usage: -X0 - TOS FW config [1] address, if not NULL -X2 - System DTB, if not NULL - -Adds check in the default get_aslr_seed() to see if the system DTB is -present before trying to read kaslr-seed from secure-chosen. - -Note that this is an incompatible change and requires corresponding -change in TF-A ("feat(qemu): update abi between spmd and spmc") [2]. - -[1] A TF-A concept: TOS_FW_CONFIG - Trusted OS Firmware configuration - file. Used by Trusted OS (BL32), that is, OP-TEE in this case -Link: [2] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=25ae7ad1878244f78206cc7c91f7bdbd267331a1 - -Acked-by: Etienne Carriere <etienne.carriere@linaro.org> -Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> - -Upstream-Status: Backport [f1f431c7a92671b4fa397976d381cc5ad8adacc4] -Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com> ---- - core/arch/arm/kernel/boot.c | 8 +++++++- - core/arch/arm/kernel/entry_a64.S | 17 ++++++++--------- - 2 files changed, 15 insertions(+), 10 deletions(-) - -diff --git a/core/arch/arm/kernel/boot.c b/core/arch/arm/kernel/boot.c -index dd34173e838d..e02c02b6097d 100644 ---- a/core/arch/arm/kernel/boot.c -+++ b/core/arch/arm/kernel/boot.c -@@ -1502,11 +1502,17 @@ struct ns_entry_context *boot_core_hpen(void) - #if defined(CFG_DT) - unsigned long __weak get_aslr_seed(void *fdt) - { -- int rc = fdt_check_header(fdt); -+ int rc = 0; - const uint64_t *seed = NULL; - int offs = 0; - int len = 0; - -+ if (!fdt) { -+ DMSG("No fdt"); -+ goto err; -+ } -+ -+ rc = fdt_check_header(fdt); - if (rc) { - DMSG("Bad fdt: %d", rc); - goto err; -diff --git a/core/arch/arm/kernel/entry_a64.S b/core/arch/arm/kernel/entry_a64.S -index 4c6e9d75ca45..047ae1f25cc9 100644 ---- a/core/arch/arm/kernel/entry_a64.S -+++ b/core/arch/arm/kernel/entry_a64.S -@@ -143,21 +143,20 @@ - .endm - - FUNC _start , : --#if defined(CFG_CORE_SEL1_SPMC) - /* -- * With OP-TEE as SPMC at S-EL1 the SPMD (SPD_spmd) in TF-A passes -- * the DTB in x0, pagaeble part in x1 and the rest of the registers -- * are unused -+ * If CFG_CORE_FFA is enabled, then x0 if non-NULL holds the TOS FW -+ * config [1] address, else x0 if non-NULL holds the pagable part -+ * address. -+ * -+ * [1] A TF-A concept: TOS_FW_CONFIG - Trusted OS Firmware -+ * configuration file. Used by Trusted OS (BL32), that is, OP-TEE -+ * here. - */ -- mov x19, x1 /* Save pagable part */ -- mov x20, x0 /* Save DT address */ --#else -- mov x19, x0 /* Save pagable part address */ -+ mov x19, x0 - #if defined(CFG_DT_ADDR) - ldr x20, =CFG_DT_ADDR - #else - mov x20, x2 /* Save DT address */ --#endif - #endif - - adr x0, reset_vect_table diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0006-core-ffa-add-TOS_FW_CONFIG-handling.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0006-core-ffa-add-TOS_FW_CONFIG-handling.patch deleted file mode 100644 index da0422b97a..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0006-core-ffa-add-TOS_FW_CONFIG-handling.patch +++ /dev/null @@ -1,247 +0,0 @@ -From 9da324001fd93e1b3d9bca076e4afddbb5cac289 Mon Sep 17 00:00:00 2001 -From: Balint Dobszay <balint.dobszay@arm.com> -Date: Fri, 10 Feb 2023 11:07:27 +0100 -Subject: [PATCH] core: ffa: add TOS_FW_CONFIG handling - -At boot TF-A passes two DT addresses (HW_CONFIG and TOS_FW_CONFIG), but -currently only the HW_CONFIG address is saved, the other one is dropped. -This commit adds functionality to save the TOS_FW_CONFIG too, so we can -retrieve it later. This is necessary for the CFG_CORE_SEL1_SPMC use -case, because the SPMC manifest is passed in this DT. - -Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> -Signed-off-by: Balint Dobszay <balint.dobszay@arm.com> - -Upstream-Status: Backport [809fa817ae6331d98b55f7afaa3c20f8407822e4] -Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com> ---- - core/arch/arm/kernel/boot.c | 60 ++++++++++++++++++++++- - core/arch/arm/kernel/entry_a32.S | 3 +- - core/arch/arm/kernel/entry_a64.S | 13 ++++- - core/arch/arm/kernel/link_dummies_paged.c | 4 +- - core/arch/arm/kernel/secure_partition.c | 2 +- - core/include/kernel/boot.h | 7 ++- - 6 files changed, 81 insertions(+), 8 deletions(-) - -diff --git a/core/arch/arm/kernel/boot.c b/core/arch/arm/kernel/boot.c -index e02c02b6097d..98e13c072d8e 100644 ---- a/core/arch/arm/kernel/boot.c -+++ b/core/arch/arm/kernel/boot.c -@@ -1,6 +1,7 @@ - // SPDX-License-Identifier: BSD-2-Clause - /* - * Copyright (c) 2015-2022, Linaro Limited -+ * Copyright (c) 2023, Arm Limited - */ - - #include <arm.h> -@@ -83,6 +84,9 @@ struct dt_descriptor { - }; - - static struct dt_descriptor external_dt __nex_bss; -+#ifdef CFG_CORE_SEL1_SPMC -+static struct dt_descriptor tos_fw_config_dt __nex_bss; -+#endif - #endif - - #ifdef CFG_SECONDARY_INIT_CNTFRQ -@@ -1224,6 +1228,54 @@ static struct core_mmu_phys_mem *get_nsec_memory(void *fdt __unused, - #endif /*CFG_CORE_DYN_SHM*/ - #endif /*!CFG_DT*/ - -+#if defined(CFG_CORE_SEL1_SPMC) && defined(CFG_DT) -+void *get_tos_fw_config_dt(void) -+{ -+ if (!IS_ENABLED(CFG_MAP_EXT_DT_SECURE)) -+ return NULL; -+ -+ assert(cpu_mmu_enabled()); -+ -+ return tos_fw_config_dt.blob; -+} -+ -+static void init_tos_fw_config_dt(unsigned long pa) -+{ -+ struct dt_descriptor *dt = &tos_fw_config_dt; -+ void *fdt = NULL; -+ int ret = 0; -+ -+ if (!IS_ENABLED(CFG_MAP_EXT_DT_SECURE)) -+ return; -+ -+ if (!pa) -+ panic("No TOS_FW_CONFIG DT found"); -+ -+ fdt = core_mmu_add_mapping(MEM_AREA_EXT_DT, pa, CFG_DTB_MAX_SIZE); -+ if (!fdt) -+ panic("Failed to map TOS_FW_CONFIG DT"); -+ -+ dt->blob = fdt; -+ -+ ret = fdt_open_into(fdt, fdt, CFG_DTB_MAX_SIZE); -+ if (ret < 0) { -+ EMSG("Invalid Device Tree at %#lx: error %d", pa, ret); -+ panic(); -+ } -+ -+ IMSG("TOS_FW_CONFIG DT found"); -+} -+#else -+void *get_tos_fw_config_dt(void) -+{ -+ return NULL; -+} -+ -+static void init_tos_fw_config_dt(unsigned long pa __unused) -+{ -+} -+#endif /*CFG_CORE_SEL1_SPMC && CFG_DT*/ -+ - #ifdef CFG_CORE_DYN_SHM - static void discover_nsec_memory(void) - { -@@ -1361,10 +1413,16 @@ static bool cpu_nmfi_enabled(void) - * Note: this function is weak just to make it possible to exclude it from - * the unpaged area. - */ --void __weak boot_init_primary_late(unsigned long fdt) -+void __weak boot_init_primary_late(unsigned long fdt, -+ unsigned long tos_fw_config) - { - init_external_dt(fdt); -+ init_tos_fw_config_dt(tos_fw_config); -+#ifdef CFG_CORE_SEL1_SPMC -+ tpm_map_log_area(get_tos_fw_config_dt()); -+#else - tpm_map_log_area(get_external_dt()); -+#endif - discover_nsec_memory(); - update_external_dt(); - configure_console_from_dt(); -diff --git a/core/arch/arm/kernel/entry_a32.S b/core/arch/arm/kernel/entry_a32.S -index 0f14ca2f6ad9..3758fd8b7674 100644 ---- a/core/arch/arm/kernel/entry_a32.S -+++ b/core/arch/arm/kernel/entry_a32.S -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: BSD-2-Clause */ - /* - * Copyright (c) 2014, Linaro Limited -- * Copyright (c) 2021, Arm Limited -+ * Copyright (c) 2021-2023, Arm Limited - */ - - #include <arm32_macros.S> -@@ -560,6 +560,7 @@ shadow_stack_access_ok: - str r0, [r8, #THREAD_CORE_LOCAL_FLAGS] - #endif - mov r0, r6 /* DT address */ -+ mov r1, #0 /* unused */ - bl boot_init_primary_late - #ifndef CFG_VIRTUALIZATION - mov r0, #THREAD_CLF_TMP -diff --git a/core/arch/arm/kernel/entry_a64.S b/core/arch/arm/kernel/entry_a64.S -index 047ae1f25cc9..fa76437fb73c 100644 ---- a/core/arch/arm/kernel/entry_a64.S -+++ b/core/arch/arm/kernel/entry_a64.S -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: BSD-2-Clause */ - /* - * Copyright (c) 2015-2022, Linaro Limited -- * Copyright (c) 2021, Arm Limited -+ * Copyright (c) 2021-2023, Arm Limited - */ - - #include <platform_config.h> -@@ -320,7 +320,11 @@ clear_nex_bss: - bl core_mmu_set_default_prtn_tbl - #endif - -+#ifdef CFG_CORE_SEL1_SPMC -+ mov x0, xzr /* pager not used */ -+#else - mov x0, x19 /* pagable part address */ -+#endif - mov x1, #-1 - bl boot_init_primary_early - -@@ -337,7 +341,12 @@ clear_nex_bss: - mov x22, x0 - str wzr, [x22, #THREAD_CORE_LOCAL_FLAGS] - #endif -- mov x0, x20 /* DT address */ -+ mov x0, x20 /* DT address also known as HW_CONFIG */ -+#ifdef CFG_CORE_SEL1_SPMC -+ mov x1, x19 /* TOS_FW_CONFIG DT address */ -+#else -+ mov x1, xzr /* unused */ -+#endif - bl boot_init_primary_late - #ifdef CFG_CORE_PAUTH - init_pauth_per_cpu -diff --git a/core/arch/arm/kernel/link_dummies_paged.c b/core/arch/arm/kernel/link_dummies_paged.c -index 3b8287e06a11..023a5f3f558b 100644 ---- a/core/arch/arm/kernel/link_dummies_paged.c -+++ b/core/arch/arm/kernel/link_dummies_paged.c -@@ -1,6 +1,7 @@ - // SPDX-License-Identifier: BSD-2-Clause - /* - * Copyright (c) 2017-2021, Linaro Limited -+ * Copyright (c) 2023, Arm Limited - */ - #include <compiler.h> - #include <initcall.h> -@@ -27,7 +28,8 @@ void __section(".text.dummy.call_finalcalls") call_finalcalls(void) - } - - void __section(".text.dummy.boot_init_primary_late") --boot_init_primary_late(unsigned long fdt __unused) -+boot_init_primary_late(unsigned long fdt __unused, -+ unsigned long tos_fw_config __unused) - { - } - -diff --git a/core/arch/arm/kernel/secure_partition.c b/core/arch/arm/kernel/secure_partition.c -index 1d36e90b1cf7..d386f1e4d211 100644 ---- a/core/arch/arm/kernel/secure_partition.c -+++ b/core/arch/arm/kernel/secure_partition.c -@@ -1212,7 +1212,7 @@ static TEE_Result fip_sp_map_all(void) - int subnode = 0; - int root = 0; - -- fdt = get_external_dt(); -+ fdt = get_tos_fw_config_dt(); - if (!fdt) { - EMSG("No SPMC manifest found"); - return TEE_ERROR_GENERIC; -diff --git a/core/include/kernel/boot.h b/core/include/kernel/boot.h -index 260854473b8b..941e093b29a1 100644 ---- a/core/include/kernel/boot.h -+++ b/core/include/kernel/boot.h -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: BSD-2-Clause */ - /* - * Copyright (c) 2015-2020, Linaro Limited -- * Copyright (c) 2021, Arm Limited -+ * Copyright (c) 2021-2023, Arm Limited - */ - #ifndef __KERNEL_BOOT_H - #define __KERNEL_BOOT_H -@@ -46,7 +46,7 @@ extern const struct core_mmu_config boot_mmu_config; - /* @nsec_entry is unused if using CFG_WITH_ARM_TRUSTED_FW */ - void boot_init_primary_early(unsigned long pageable_part, - unsigned long nsec_entry); --void boot_init_primary_late(unsigned long fdt); -+void boot_init_primary_late(unsigned long fdt, unsigned long tos_fw_config); - void boot_init_memtag(void); - - void __panic_at_smc_return(void) __noreturn; -@@ -103,6 +103,9 @@ void *get_embedded_dt(void); - /* Returns external DTB if present, otherwise NULL */ - void *get_external_dt(void); - -+/* Returns TOS_FW_CONFIG DTB if present, otherwise NULL */ -+void *get_tos_fw_config_dt(void); -+ - /* - * get_aslr_seed() - return a random seed for core ASLR - * @fdt: Pointer to a device tree if CFG_DT_ADDR=y diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0007-core-spmc-handle-non-secure-interrupts.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0007-core-spmc-handle-non-secure-interrupts.patch deleted file mode 100644 index 94c1e04985..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0007-core-spmc-handle-non-secure-interrupts.patch +++ /dev/null @@ -1,275 +0,0 @@ -From 18ad0cce24addd45271edf3172ab9ce873186d7a Mon Sep 17 00:00:00 2001 -From: Imre Kis <imre.kis@arm.com> -Date: Tue, 18 Apr 2023 16:41:51 +0200 -Subject: [PATCH] core: spmc: handle non-secure interrupts - -Add FFA_INTERRUPT and FFA_RUN support for signaling non-secure -interrupts and for resuming to the secure world. If a secure partition -is preempted by a non-secure interrupt OP-TEE saves the SP's state and -sends an FFA_INTERRUPT to the normal world. After handling the interrupt -the normal world should send an FFA_RUN to OP-TEE so it can continue -running the SP. -If OP-TEE is the active FF-A endpoint (i.e. it is running TAs) the -non-secure interrupts are signaled by the existing -OPTEE_FFA_YIELDING_CALL_RETURN_INTERRUPT message instead of -FFA_INTERRUPT. - -Upstream-Status: Submitted [https://github.com/OP-TEE/optee_os/pull/6002] - -Signed-off-by: Imre Kis <imre.kis@arm.com> -Change-Id: I577ebe86d416ee494963216a66a3bfc8206921b4 ---- - core/arch/arm/include/ffa.h | 2 +- - .../arch/arm/include/kernel/spmc_sp_handler.h | 11 +++++++ - core/arch/arm/kernel/secure_partition.c | 17 ++++++++++ - core/arch/arm/kernel/spmc_sp_handler.c | 26 ++++++++++++++++ - core/arch/arm/kernel/thread.c | 7 +++++ - core/arch/arm/kernel/thread_spmc.c | 31 ++++++++++++++++++- - core/arch/arm/kernel/thread_spmc_a64.S | 30 ++++++++++++++++++ - 7 files changed, 122 insertions(+), 2 deletions(-) - -diff --git a/core/arch/arm/include/ffa.h b/core/arch/arm/include/ffa.h -index 5a19fb0c7ff3..b3d1d354735d 100644 ---- a/core/arch/arm/include/ffa.h -+++ b/core/arch/arm/include/ffa.h -@@ -50,7 +50,7 @@ - #define FFA_ID_GET U(0x84000069) - #define FFA_MSG_WAIT U(0x8400006B) - #define FFA_MSG_YIELD U(0x8400006C) --#define FFA_MSG_RUN U(0x8400006D) -+#define FFA_RUN U(0x8400006D) - #define FFA_MSG_SEND U(0x8400006E) - #define FFA_MSG_SEND_DIRECT_REQ_32 U(0x8400006F) - #define FFA_MSG_SEND_DIRECT_REQ_64 U(0xC400006F) -diff --git a/core/arch/arm/include/kernel/spmc_sp_handler.h b/core/arch/arm/include/kernel/spmc_sp_handler.h -index f5bda7bfe7d0..30c1e4691273 100644 ---- a/core/arch/arm/include/kernel/spmc_sp_handler.h -+++ b/core/arch/arm/include/kernel/spmc_sp_handler.h -@@ -25,6 +25,8 @@ void spmc_sp_start_thread(struct thread_smc_args *args); - int spmc_sp_add_share(struct ffa_rxtx *rxtx, - size_t blen, uint64_t *global_handle, - struct sp_session *owner_sp); -+void spmc_sp_set_to_preempted(struct ts_session *ts_sess); -+int spmc_sp_resume_from_preempted(uint16_t endpoint_id); - #else - static inline void spmc_sp_start_thread(struct thread_smc_args *args __unused) - { -@@ -37,6 +39,15 @@ static inline int spmc_sp_add_share(struct ffa_rxtx *rxtx __unused, - { - return FFA_NOT_SUPPORTED; - } -+ -+static inline void spmc_sp_set_to_preempted(struct ts_session *ts_sess __unused) -+{ -+} -+ -+static inline int spmc_sp_resume_from_preempted(uint16_t endpoint_id __unused) -+{ -+ return FFA_NOT_SUPPORTED; -+} - #endif - - #endif /* __KERNEL_SPMC_SP_HANDLER_H */ -diff --git a/core/arch/arm/kernel/secure_partition.c b/core/arch/arm/kernel/secure_partition.c -index d386f1e4d211..740be6d22e47 100644 ---- a/core/arch/arm/kernel/secure_partition.c -+++ b/core/arch/arm/kernel/secure_partition.c -@@ -999,6 +999,8 @@ static TEE_Result sp_enter_invoke_cmd(struct ts_session *s, - struct sp_session *sp_s = to_sp_session(s); - struct ts_session *sess = NULL; - struct thread_ctx_regs *sp_regs = NULL; -+ uint32_t thread_id = THREAD_ID_INVALID; -+ uint32_t rpc_target_info = 0; - uint32_t panicked = false; - uint32_t panic_code = 0; - -@@ -1011,8 +1013,23 @@ static TEE_Result sp_enter_invoke_cmd(struct ts_session *s, - sp_regs->cpsr = read_daif() & (SPSR_64_DAIF_MASK << SPSR_64_DAIF_SHIFT); - - exceptions = thread_mask_exceptions(THREAD_EXCP_ALL); -+ -+ /* -+ * Store endpoint ID and thread ID in rpc_target_info. This will be used -+ * as w1 in FFA_INTERRUPT in case of a NWd interrupt. -+ */ -+ rpc_target_info = thread_get_tsd()->rpc_target_info; -+ thread_id = thread_get_id(); -+ assert((thread_id & ~0xffff) == 0); -+ thread_get_tsd()->rpc_target_info = (sp_s->endpoint_id << 16) | -+ (thread_id & 0xffff); -+ - __thread_enter_user_mode(sp_regs, &panicked, &panic_code); -+ - sp_regs->cpsr = cpsr; -+ /* Restore rpc_target_info */ -+ thread_get_tsd()->rpc_target_info = rpc_target_info; -+ - thread_unmask_exceptions(exceptions); - - thread_user_clear_vfp(&ctx->uctx); -diff --git a/core/arch/arm/kernel/spmc_sp_handler.c b/core/arch/arm/kernel/spmc_sp_handler.c -index 46a15646ecf0..12681151a796 100644 ---- a/core/arch/arm/kernel/spmc_sp_handler.c -+++ b/core/arch/arm/kernel/spmc_sp_handler.c -@@ -366,6 +366,32 @@ cleanup: - return res; - } - -+void spmc_sp_set_to_preempted(struct ts_session *ts_sess) -+{ -+ if (ts_sess && is_sp_ctx(ts_sess->ctx)) { -+ struct sp_session *sp_sess = to_sp_session(ts_sess); -+ -+ assert(sp_sess->state == sp_busy); -+ -+ sp_sess->state = sp_preempted; -+ } -+} -+ -+int spmc_sp_resume_from_preempted(uint16_t endpoint_id) -+{ -+ struct sp_session *sp_sess = sp_get_session(endpoint_id); -+ -+ if (!sp_sess) -+ return FFA_INVALID_PARAMETERS; -+ -+ if (sp_sess->state != sp_preempted) -+ return FFA_DENIED; -+ -+ sp_sess->state = sp_busy; -+ -+ return FFA_OK; -+} -+ - static bool check_rxtx(struct ffa_rxtx *rxtx) - { - return rxtx && rxtx->rx && rxtx->tx && rxtx->size > 0; -diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c -index 1e7f9f96b558..8cd4dc961b02 100644 ---- a/core/arch/arm/kernel/thread.c -+++ b/core/arch/arm/kernel/thread.c -@@ -531,6 +531,13 @@ int thread_state_suspend(uint32_t flags, uint32_t cpsr, vaddr_t pc) - core_mmu_set_user_map(NULL); - } - -+ if (IS_ENABLED(CFG_SECURE_PARTITION)) { -+ struct ts_session *ts_sess = -+ TAILQ_FIRST(&threads[ct].tsd.sess_stack); -+ -+ spmc_sp_set_to_preempted(ts_sess); -+ } -+ - l->curr_thread = THREAD_ID_INVALID; - - if (IS_ENABLED(CFG_VIRTUALIZATION)) -diff --git a/core/arch/arm/kernel/thread_spmc.c b/core/arch/arm/kernel/thread_spmc.c -index 3b4ac0b4e35c..bc4e7687d618 100644 ---- a/core/arch/arm/kernel/thread_spmc.c -+++ b/core/arch/arm/kernel/thread_spmc.c -@@ -45,7 +45,7 @@ struct mem_frag_state { - #endif - - /* Initialized in spmc_init() below */ --static uint16_t my_endpoint_id; -+uint16_t my_endpoint_id; - - /* - * If struct ffa_rxtx::size is 0 RX/TX buffers are not mapped or initialized. -@@ -437,6 +437,32 @@ out: - FFA_PARAM_MBZ, FFA_PARAM_MBZ); - cpu_spin_unlock(&rxtx->spinlock); - } -+ -+static void spmc_handle_run(struct thread_smc_args *args) -+{ -+ uint16_t endpoint = (args->a1 >> 16) & 0xffff; -+ uint16_t thread_id = (args->a1 & 0xffff); -+ uint32_t rc = 0; -+ -+ if (endpoint != my_endpoint_id) { -+ /* -+ * The endpoint should be an SP, try to resume the SP from -+ * preempted into busy state. -+ */ -+ rc = spmc_sp_resume_from_preempted(endpoint); -+ if (rc) -+ goto out; -+ } -+ -+ thread_resume_from_rpc(thread_id, 0, 0, 0, 0); -+ -+ /* thread_resume_from_rpc return only of the thread_id is invalid */ -+ rc = FFA_INVALID_PARAMETERS; -+ -+out: -+ spmc_set_args(args, FFA_ERROR, FFA_PARAM_MBZ, rc, FFA_PARAM_MBZ, -+ FFA_PARAM_MBZ, FFA_PARAM_MBZ); -+} - #endif /*CFG_CORE_SEL1_SPMC*/ - - static void handle_yielding_call(struct thread_smc_args *args) -@@ -970,6 +996,9 @@ void thread_spmc_msg_recv(struct thread_smc_args *args) - case FFA_PARTITION_INFO_GET: - spmc_handle_partition_info_get(args, &nw_rxtx); - break; -+ case FFA_RUN: -+ spmc_handle_run(args); -+ break; - #endif /*CFG_CORE_SEL1_SPMC*/ - case FFA_INTERRUPT: - itr_core_handler(); -diff --git a/core/arch/arm/kernel/thread_spmc_a64.S b/core/arch/arm/kernel/thread_spmc_a64.S -index 21cb62513a42..7297005a6038 100644 ---- a/core/arch/arm/kernel/thread_spmc_a64.S -+++ b/core/arch/arm/kernel/thread_spmc_a64.S -@@ -14,6 +14,20 @@ - #include <kernel/thread.h> - #include <optee_ffa.h> - -+#if CFG_SECURE_PARTITION -+LOCAL_FUNC thread_ffa_interrupt , : -+ mov_imm x0, FFA_INTERRUPT /* FID */ -+ /* X1: Endpoint/vCPU IDs is set by caller */ -+ mov x2, #FFA_PARAM_MBZ /* Param MBZ */ -+ mov x3, #FFA_PARAM_MBZ /* Param MBZ */ -+ mov x4, #FFA_PARAM_MBZ /* Param MBZ */ -+ mov x5, #FFA_PARAM_MBZ /* Param MBZ */ -+ mov x6, #FFA_PARAM_MBZ /* Param MBZ */ -+ mov x7, #FFA_PARAM_MBZ /* Param MBZ */ -+ b .ffa_msg_loop -+END_FUNC thread_ffa_msg_wait -+#endif /* CFG_SECURE_PARTITION */ -+ - FUNC thread_ffa_msg_wait , : - mov_imm x0, FFA_MSG_WAIT /* FID */ - mov x1, #FFA_TARGET_INFO_MBZ /* Target info MBZ */ -@@ -171,6 +185,14 @@ END_FUNC thread_rpc - * The current thread as indicated by @thread_index has just been - * suspended. The job here is just to inform normal world the thread id to - * resume when returning. -+ * If the active FF-A endpoint is OP-TEE (or a TA) then an this function send an -+ * OPTEE_FFA_YIELDING_CALL_RETURN_INTERRUPT message to the normal world via the -+ * FFA_MSG_SEND_DIRECT_RESP interface. This is handled by the OP-TEE -+ * driver in Linux so it can schedule task to the thread. -+ * If the active endpoint is an SP the function sends an FFA_INTERRUPT. This is -+ * handled by the FF-A driver and after taking care of the NWd interrupts it -+ * returns via an FFA_RUN call. -+ * The active endpoint is determined by the upper 16 bits of rpc_target_info. - */ - FUNC thread_foreign_intr_exit , : - /* load threads[w0].tsd.rpc_target_info into w1 */ -@@ -178,6 +200,14 @@ FUNC thread_foreign_intr_exit , : - adr_l x2, threads - madd x1, x1, x0, x2 - ldr w1, [x1, #THREAD_CTX_TSD_RPC_TARGET_INFO] -+#if CFG_SECURE_PARTITION -+ adr_l x2, my_endpoint_id -+ ldrh w2, [x2] -+ lsr w3, w1, #16 -+ cmp w2, w3 -+ /* (threads[w0].tsd.rpc_target_info >> 16) != my_endpoint_id */ -+ bne thread_ffa_interrupt -+#endif /* CFG_SECURE_PARTITION */ - mov x2, #FFA_PARAM_MBZ - mov w3, #FFA_PARAM_MBZ - mov w4, #OPTEE_FFA_YIELDING_CALL_RETURN_INTERRUPT diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0008-core-spmc-configure-SP-s-NS-interrupt-action-based-o.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0008-core-spmc-configure-SP-s-NS-interrupt-action-based-o.patch deleted file mode 100644 index 9f7d781e2a..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/0008-core-spmc-configure-SP-s-NS-interrupt-action-based-o.patch +++ /dev/null @@ -1,148 +0,0 @@ -From e7835c526aabd8e5b6db335619a0d86165c587ed Mon Sep 17 00:00:00 2001 -From: Imre Kis <imre.kis@arm.com> -Date: Tue, 25 Apr 2023 14:19:14 +0200 -Subject: [PATCH] core: spmc: configure SP's NS interrupt action based on the - manifest - -Used mandatory ns-interrupts-action SP manifest property to configure -signaled or queued non-secure interrupt handling. - -Upstream-Status: Submitted [https://github.com/OP-TEE/optee_os/pull/6002] - -Signed-off-by: Imre Kis <imre.kis@arm.com> -Change-Id: I843e69e5dbb9613ecd8b95654e8ca1730a594ca6 ---- - .../arm/include/kernel/secure_partition.h | 2 + - core/arch/arm/kernel/secure_partition.c | 66 +++++++++++++++++-- - 2 files changed, 63 insertions(+), 5 deletions(-) - -diff --git a/core/arch/arm/include/kernel/secure_partition.h b/core/arch/arm/include/kernel/secure_partition.h -index 24b0a8cc07d2..51f6b697e5eb 100644 ---- a/core/arch/arm/include/kernel/secure_partition.h -+++ b/core/arch/arm/include/kernel/secure_partition.h -@@ -43,6 +43,8 @@ struct sp_session { - unsigned int spinlock; - const void *fdt; - bool is_initialized; -+ uint32_t ns_interrupts_action; -+ uint32_t ns_interrupts_action_inherited; - TAILQ_ENTRY(sp_session) link; - }; - -diff --git a/core/arch/arm/kernel/secure_partition.c b/core/arch/arm/kernel/secure_partition.c -index 740be6d22e47..b644e1c72e6a 100644 ---- a/core/arch/arm/kernel/secure_partition.c -+++ b/core/arch/arm/kernel/secure_partition.c -@@ -46,6 +46,10 @@ - SP_MANIFEST_ATTR_WRITE | \ - SP_MANIFEST_ATTR_EXEC) - -+#define SP_MANIFEST_NS_INT_QUEUED (0x0) -+#define SP_MANIFEST_NS_INT_MANAGED_EXIT (0x1) -+#define SP_MANIFEST_NS_INT_SIGNALED (0x2) -+ - #define SP_PKG_HEADER_MAGIC (0x474b5053) - #define SP_PKG_HEADER_VERSION_V1 (0x1) - #define SP_PKG_HEADER_VERSION_V2 (0x2) -@@ -907,6 +911,30 @@ static TEE_Result sp_init_uuid(const TEE_UUID *uuid, const void * const fdt) - return res; - DMSG("endpoint is 0x%"PRIx16, sess->endpoint_id); - -+ res = sp_dt_get_u32(fdt, 0, "ns-interrupts-action", -+ &sess->ns_interrupts_action); -+ -+ if (res) { -+ EMSG("Mandatory property is missing: ns-interrupts-action"); -+ return res; -+ } -+ -+ switch (sess->ns_interrupts_action) { -+ case SP_MANIFEST_NS_INT_QUEUED: -+ case SP_MANIFEST_NS_INT_SIGNALED: -+ /* OK */ -+ break; -+ -+ case SP_MANIFEST_NS_INT_MANAGED_EXIT: -+ EMSG("Managed exit is not implemented"); -+ return TEE_ERROR_NOT_IMPLEMENTED; -+ -+ default: -+ EMSG("Invalid ns-interrupts-action value: %d", -+ sess->ns_interrupts_action); -+ return TEE_ERROR_BAD_PARAMETERS; -+ } -+ - return TEE_SUCCESS; - } - -@@ -989,17 +1017,45 @@ TEE_Result sp_enter(struct thread_smc_args *args, struct sp_session *sp) - return res; - } - -+/* -+ * According to FF-A v1.1 section 8.3.1.4 if a caller requires less permissive -+ * active on NS interrupt than the callee, the callee must inherit the caller's -+ * configuration. -+ * Each SP's own NS action setting is stored in ns_interrupts_action. The -+ * effective action will be MIN([self action], [caller's action]) which is -+ * stored in the ns_interrupts_action_inherited field. -+ */ -+static void sp_cpsr_configure_foreing_interrupts(struct sp_session *s, -+ struct ts_session *caller, -+ uint64_t *cpsr) -+{ -+ if (caller) { -+ struct sp_session *caller_sp = to_sp_session(caller); -+ -+ s->ns_interrupts_action_inherited = -+ MIN(caller_sp->ns_interrupts_action_inherited, -+ s->ns_interrupts_action); -+ } else { -+ s->ns_interrupts_action_inherited = s->ns_interrupts_action; -+ } -+ -+ if (s->ns_interrupts_action_inherited == SP_MANIFEST_NS_INT_QUEUED) -+ *cpsr |= (THREAD_EXCP_FOREIGN_INTR << ARM32_CPSR_F_SHIFT); -+ else -+ *cpsr &= ~(THREAD_EXCP_FOREIGN_INTR << ARM32_CPSR_F_SHIFT); -+} -+ - static TEE_Result sp_enter_invoke_cmd(struct ts_session *s, - uint32_t cmd __unused) - { - struct sp_ctx *ctx = to_sp_ctx(s->ctx); - TEE_Result res = TEE_SUCCESS; - uint32_t exceptions = 0; -- uint64_t cpsr = 0; - struct sp_session *sp_s = to_sp_session(s); - struct ts_session *sess = NULL; - struct thread_ctx_regs *sp_regs = NULL; - uint32_t thread_id = THREAD_ID_INVALID; -+ struct ts_session *caller = NULL; - uint32_t rpc_target_info = 0; - uint32_t panicked = false; - uint32_t panic_code = 0; -@@ -1009,11 +1065,12 @@ static TEE_Result sp_enter_invoke_cmd(struct ts_session *s, - sp_regs = &ctx->sp_regs; - ts_push_current_session(s); - -- cpsr = sp_regs->cpsr; -- sp_regs->cpsr = read_daif() & (SPSR_64_DAIF_MASK << SPSR_64_DAIF_SHIFT); -- - exceptions = thread_mask_exceptions(THREAD_EXCP_ALL); - -+ /* Enable/disable foreign interrupts in CPSR/SPSR */ -+ caller = ts_get_calling_session(); -+ sp_cpsr_configure_foreing_interrupts(sp_s, caller, &sp_regs->cpsr); -+ - /* - * Store endpoint ID and thread ID in rpc_target_info. This will be used - * as w1 in FFA_INTERRUPT in case of a NWd interrupt. -@@ -1026,7 +1083,6 @@ static TEE_Result sp_enter_invoke_cmd(struct ts_session *s, - - __thread_enter_user_mode(sp_regs, &panicked, &panic_code); - -- sp_regs->cpsr = cpsr; - /* Restore rpc_target_info */ - thread_get_tsd()->rpc_target_info = rpc_target_info; - diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/CVE-2023-41325.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/CVE-2023-41325.patch deleted file mode 100644 index 08acce07f9..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-3.20.0/CVE-2023-41325.patch +++ /dev/null @@ -1,634 +0,0 @@ -From 800627f054959aac0dd3527495ee3fad0137600a Mon Sep 17 00:00:00 2001 -From: Jihwan Park <jihwp@amazon.com> -Date: Mon, 3 Jul 2023 08:51:47 +0200 -Subject: [PATCH] core: crypto_bignum_free(): add indirection and set pointer - to NULL - -To prevent human mistake, crypto_bignum_free() sets the location of the -bignum pointer to NULL after freeing it. - -Signed-off-by: Jihwan Park <jihwp@amazon.com> -Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> -Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> -Reviewed-by: Joakim Bech <joakim.bech@linaro.org> -Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com> - -CVE: CVE-2023-41325 -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> ---- - core/crypto/crypto.c | 4 +-- - core/drivers/crypto/caam/acipher/caam_dh.c | 8 ++--- - core/drivers/crypto/caam/acipher/caam_dsa.c | 14 ++++---- - core/drivers/crypto/caam/acipher/caam_ecc.c | 10 +++--- - core/drivers/crypto/caam/acipher/caam_rsa.c | 24 ++++++------- - core/drivers/crypto/se050/core/ecc.c | 14 ++++---- - core/drivers/crypto/se050/core/rsa.c | 38 ++++++++++----------- - core/drivers/crypto/versal/ecc.c | 6 ++-- - core/include/crypto/crypto.h | 2 +- - core/lib/libtomcrypt/dh.c | 8 ++--- - core/lib/libtomcrypt/dsa.c | 14 ++++---- - core/lib/libtomcrypt/ecc.c | 10 +++--- - core/lib/libtomcrypt/mpi_desc.c | 9 +++-- - core/lib/libtomcrypt/rsa.c | 22 ++++++------ - core/tee/tee_svc_cryp.c | 7 ++-- - lib/libmbedtls/core/bignum.c | 9 +++-- - lib/libmbedtls/core/dh.c | 8 ++--- - lib/libmbedtls/core/ecc.c | 10 +++--- - lib/libmbedtls/core/rsa.c | 22 ++++++------ - 19 files changed, 122 insertions(+), 117 deletions(-) - -diff --git a/core/crypto/crypto.c b/core/crypto/crypto.c -index 9f7d35097..60cb89a31 100644 ---- a/core/crypto/crypto.c -+++ b/core/crypto/crypto.c -@@ -498,9 +498,9 @@ void crypto_bignum_copy(struct bignum *to __unused, - bignum_cant_happen(); - } - --void crypto_bignum_free(struct bignum *a) -+void crypto_bignum_free(struct bignum **a) - { -- if (a) -+ if (a && *a) - panic(); - } - -diff --git a/core/drivers/crypto/caam/acipher/caam_dh.c b/core/drivers/crypto/caam/acipher/caam_dh.c -index 6131ff0ef..35fc44541 100644 ---- a/core/drivers/crypto/caam/acipher/caam_dh.c -+++ b/core/drivers/crypto/caam/acipher/caam_dh.c -@@ -195,10 +195,10 @@ static TEE_Result do_allocate_keypair(struct dh_keypair *key, size_t size_bits) - err: - DH_TRACE("Allocation error"); - -- crypto_bignum_free(key->g); -- crypto_bignum_free(key->p); -- crypto_bignum_free(key->x); -- crypto_bignum_free(key->y); -+ crypto_bignum_free(&key->g); -+ crypto_bignum_free(&key->p); -+ crypto_bignum_free(&key->x); -+ crypto_bignum_free(&key->y); - - return TEE_ERROR_OUT_OF_MEMORY; - } -diff --git a/core/drivers/crypto/caam/acipher/caam_dsa.c b/core/drivers/crypto/caam/acipher/caam_dsa.c -index 2696f0b3c..d60bb8e89 100644 ---- a/core/drivers/crypto/caam/acipher/caam_dsa.c -+++ b/core/drivers/crypto/caam/acipher/caam_dsa.c -@@ -309,10 +309,10 @@ static TEE_Result do_allocate_keypair(struct dsa_keypair *key, size_t l_bits, - err: - DSA_TRACE("Allocation error"); - -- crypto_bignum_free(key->g); -- crypto_bignum_free(key->p); -- crypto_bignum_free(key->q); -- crypto_bignum_free(key->x); -+ crypto_bignum_free(&key->g); -+ crypto_bignum_free(&key->p); -+ crypto_bignum_free(&key->q); -+ crypto_bignum_free(&key->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -358,9 +358,9 @@ static TEE_Result do_allocate_publickey(struct dsa_public_key *key, - err: - DSA_TRACE("Allocation error"); - -- crypto_bignum_free(key->g); -- crypto_bignum_free(key->p); -- crypto_bignum_free(key->q); -+ crypto_bignum_free(&key->g); -+ crypto_bignum_free(&key->p); -+ crypto_bignum_free(&key->q); - - return TEE_ERROR_OUT_OF_MEMORY; - } -diff --git a/core/drivers/crypto/caam/acipher/caam_ecc.c b/core/drivers/crypto/caam/acipher/caam_ecc.c -index 90e87c20a..6b12b6cbe 100644 ---- a/core/drivers/crypto/caam/acipher/caam_ecc.c -+++ b/core/drivers/crypto/caam/acipher/caam_ecc.c -@@ -169,8 +169,8 @@ static TEE_Result do_allocate_keypair(struct ecc_keypair *key, size_t size_bits) - err: - ECC_TRACE("Allocation error"); - -- crypto_bignum_free(key->d); -- crypto_bignum_free(key->x); -+ crypto_bignum_free(&key->d); -+ crypto_bignum_free(&key->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -204,7 +204,7 @@ static TEE_Result do_allocate_publickey(struct ecc_public_key *key, - err: - ECC_TRACE("Allocation error"); - -- crypto_bignum_free(key->x); -+ crypto_bignum_free(&key->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -216,8 +216,8 @@ err: - */ - static void do_free_publickey(struct ecc_public_key *key) - { -- crypto_bignum_free(key->x); -- crypto_bignum_free(key->y); -+ crypto_bignum_free(&key->x); -+ crypto_bignum_free(&key->y); - } - - /* -diff --git a/core/drivers/crypto/caam/acipher/caam_rsa.c b/core/drivers/crypto/caam/acipher/caam_rsa.c -index e860c641c..b59ab0b6e 100644 ---- a/core/drivers/crypto/caam/acipher/caam_rsa.c -+++ b/core/drivers/crypto/caam/acipher/caam_rsa.c -@@ -86,14 +86,14 @@ static uint8_t caam_era; - */ - static void do_free_keypair(struct rsa_keypair *key) - { -- crypto_bignum_free(key->e); -- crypto_bignum_free(key->d); -- crypto_bignum_free(key->n); -- crypto_bignum_free(key->p); -- crypto_bignum_free(key->q); -- crypto_bignum_free(key->qp); -- crypto_bignum_free(key->dp); -- crypto_bignum_free(key->dq); -+ crypto_bignum_free(&key->e); -+ crypto_bignum_free(&key->d); -+ crypto_bignum_free(&key->n); -+ crypto_bignum_free(&key->p); -+ crypto_bignum_free(&key->q); -+ crypto_bignum_free(&key->qp); -+ crypto_bignum_free(&key->dp); -+ crypto_bignum_free(&key->dq); - } - - /* -@@ -435,8 +435,8 @@ static TEE_Result do_allocate_publickey(struct rsa_public_key *key, - err_alloc_publickey: - RSA_TRACE("Allocation error"); - -- crypto_bignum_free(key->e); -- crypto_bignum_free(key->n); -+ crypto_bignum_free(&key->e); -+ crypto_bignum_free(&key->n); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -448,8 +448,8 @@ err_alloc_publickey: - */ - static void do_free_publickey(struct rsa_public_key *key) - { -- crypto_bignum_free(key->e); -- crypto_bignum_free(key->n); -+ crypto_bignum_free(&key->e); -+ crypto_bignum_free(&key->n); - } - - /* -diff --git a/core/drivers/crypto/se050/core/ecc.c b/core/drivers/crypto/se050/core/ecc.c -index d74334760..52f82c69d 100644 ---- a/core/drivers/crypto/se050/core/ecc.c -+++ b/core/drivers/crypto/se050/core/ecc.c -@@ -752,9 +752,9 @@ static TEE_Result do_alloc_keypair(struct ecc_keypair *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->x); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->x); -+ crypto_bignum_free(&s->y); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -768,8 +768,8 @@ static TEE_Result do_alloc_publickey(struct ecc_public_key *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->x); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->x); -+ crypto_bignum_free(&s->y); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -778,8 +778,8 @@ static void do_free_publickey(struct ecc_public_key *s) - if (!s) - return; - -- crypto_bignum_free(s->x); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->x); -+ crypto_bignum_free(&s->y); - } - - static struct drvcrypt_ecc driver_ecc = { -diff --git a/core/drivers/crypto/se050/core/rsa.c b/core/drivers/crypto/se050/core/rsa.c -index 815abb3cd..475d2b99a 100644 ---- a/core/drivers/crypto/se050/core/rsa.c -+++ b/core/drivers/crypto/se050/core/rsa.c -@@ -537,14 +537,14 @@ static TEE_Result do_alloc_keypair(struct rsa_keypair *s, - - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->e); -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -- crypto_bignum_free(s->qp); -- crypto_bignum_free(s->dp); -- crypto_bignum_free(s->dq); -+ crypto_bignum_free(&s->e); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); -+ crypto_bignum_free(&s->qp); -+ crypto_bignum_free(&s->dp); -+ crypto_bignum_free(&s->dq); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -556,7 +556,7 @@ static TEE_Result do_alloc_publickey(struct rsa_public_key *s, - if (!bn_alloc_max(&s->e)) - return TEE_ERROR_OUT_OF_MEMORY; - if (!bn_alloc_max(&s->n)) { -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->e); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -566,8 +566,8 @@ static TEE_Result do_alloc_publickey(struct rsa_public_key *s, - static void do_free_publickey(struct rsa_public_key *s) - { - if (s) { -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->e); - } - } - -@@ -587,14 +587,14 @@ static void do_free_keypair(struct rsa_keypair *s) - sss_se05x_key_store_erase_key(se050_kstore, &k_object); - } - -- crypto_bignum_free(s->e); -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -- crypto_bignum_free(s->qp); -- crypto_bignum_free(s->dp); -- crypto_bignum_free(s->dq); -+ crypto_bignum_free(&s->e); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); -+ crypto_bignum_free(&s->qp); -+ crypto_bignum_free(&s->dp); -+ crypto_bignum_free(&s->dq); - } - - static TEE_Result do_gen_keypair(struct rsa_keypair *key, size_t kb) -diff --git a/core/drivers/crypto/versal/ecc.c b/core/drivers/crypto/versal/ecc.c -index 3d5454509..18ec4f78d 100644 ---- a/core/drivers/crypto/versal/ecc.c -+++ b/core/drivers/crypto/versal/ecc.c -@@ -284,9 +284,9 @@ static TEE_Result sign(uint32_t algo, struct ecc_keypair *key, - - versal_mbox_alloc(bytes, NULL, &k); - crypto_bignum_bn2bin_eswap(key->curve, ephemeral.d, k.buf); -- crypto_bignum_free(ephemeral.d); -- crypto_bignum_free(ephemeral.x); -- crypto_bignum_free(ephemeral.y); -+ crypto_bignum_free(&ephemeral.d); -+ crypto_bignum_free(&ephemeral.x); -+ crypto_bignum_free(&ephemeral.y); - - /* Private key*/ - versal_mbox_alloc(bytes, NULL, &d); -diff --git a/core/include/crypto/crypto.h b/core/include/crypto/crypto.h -index 71a287ec6..0e6c139ce 100644 ---- a/core/include/crypto/crypto.h -+++ b/core/include/crypto/crypto.h -@@ -98,7 +98,7 @@ size_t crypto_bignum_num_bytes(struct bignum *a); - size_t crypto_bignum_num_bits(struct bignum *a); - void crypto_bignum_bn2bin(const struct bignum *from, uint8_t *to); - void crypto_bignum_copy(struct bignum *to, const struct bignum *from); --void crypto_bignum_free(struct bignum *a); -+void crypto_bignum_free(struct bignum **a); - void crypto_bignum_clear(struct bignum *a); - - /* return -1 if a<b, 0 if a==b, +1 if a>b */ -diff --git a/core/lib/libtomcrypt/dh.c b/core/lib/libtomcrypt/dh.c -index 4eb9916f2..b1d0a4d00 100644 ---- a/core/lib/libtomcrypt/dh.c -+++ b/core/lib/libtomcrypt/dh.c -@@ -28,10 +28,10 @@ TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->g); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->y); -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->g); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->y); -+ crypto_bignum_free(&s->x); - return TEE_ERROR_OUT_OF_MEMORY; - } - -diff --git a/core/lib/libtomcrypt/dsa.c b/core/lib/libtomcrypt/dsa.c -index a2dc720ed..d6243c469 100644 ---- a/core/lib/libtomcrypt/dsa.c -+++ b/core/lib/libtomcrypt/dsa.c -@@ -30,10 +30,10 @@ TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->g); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->g); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); -+ crypto_bignum_free(&s->y); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -52,9 +52,9 @@ TEE_Result crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->g); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -+ crypto_bignum_free(&s->g); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); - return TEE_ERROR_OUT_OF_MEMORY; - } - -diff --git a/core/lib/libtomcrypt/ecc.c b/core/lib/libtomcrypt/ecc.c -index 938378247..fa645e17a 100644 ---- a/core/lib/libtomcrypt/ecc.c -+++ b/core/lib/libtomcrypt/ecc.c -@@ -18,8 +18,8 @@ static void _ltc_ecc_free_public_key(struct ecc_public_key *s) - if (!s) - return; - -- crypto_bignum_free(s->x); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->x); -+ crypto_bignum_free(&s->y); - } - - /* -@@ -465,8 +465,8 @@ TEE_Result crypto_asym_alloc_ecc_keypair(struct ecc_keypair *s, - err: - s->ops = NULL; - -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -541,7 +541,7 @@ TEE_Result crypto_asym_alloc_ecc_public_key(struct ecc_public_key *s, - err: - s->ops = NULL; - -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -diff --git a/core/lib/libtomcrypt/mpi_desc.c b/core/lib/libtomcrypt/mpi_desc.c -index 235fbe630..ff8dd13c7 100644 ---- a/core/lib/libtomcrypt/mpi_desc.c -+++ b/core/lib/libtomcrypt/mpi_desc.c -@@ -763,10 +763,13 @@ struct bignum *crypto_bignum_allocate(size_t size_bits) - return (struct bignum *)bn; - } - --void crypto_bignum_free(struct bignum *s) -+void crypto_bignum_free(struct bignum **s) - { -- mbedtls_mpi_free((mbedtls_mpi *)s); -- free(s); -+ assert(s); -+ -+ mbedtls_mpi_free((mbedtls_mpi *)*s); -+ free(*s); -+ *s = NULL; - } - - void crypto_bignum_clear(struct bignum *s) -diff --git a/core/lib/libtomcrypt/rsa.c b/core/lib/libtomcrypt/rsa.c -index 8d0443f36..13ed23934 100644 ---- a/core/lib/libtomcrypt/rsa.c -+++ b/core/lib/libtomcrypt/rsa.c -@@ -131,7 +131,7 @@ TEE_Result sw_crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->e); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -143,8 +143,8 @@ void sw_crypto_acipher_free_rsa_public_key(struct rsa_public_key *s) - { - if (!s) - return; -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->e); - } - - -@@ -155,14 +155,14 @@ void sw_crypto_acipher_free_rsa_keypair(struct rsa_keypair *s) - { - if (!s) - return; -- crypto_bignum_free(s->e); -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -- crypto_bignum_free(s->qp); -- crypto_bignum_free(s->dp); -- crypto_bignum_free(s->dq); -+ crypto_bignum_free(&s->e); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); -+ crypto_bignum_free(&s->qp); -+ crypto_bignum_free(&s->dp); -+ crypto_bignum_free(&s->dq); - } - - TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key, -diff --git a/core/tee/tee_svc_cryp.c b/core/tee/tee_svc_cryp.c -index 534e5ac39..880809753 100644 ---- a/core/tee/tee_svc_cryp.c -+++ b/core/tee/tee_svc_cryp.c -@@ -869,8 +869,7 @@ static void op_attr_bignum_free(void *attr) - { - struct bignum **bn = attr; - -- crypto_bignum_free(*bn); -- *bn = NULL; -+ crypto_bignum_free(bn); - } - - static TEE_Result op_attr_value_from_user(void *attr, const void *buffer, -@@ -3445,8 +3444,8 @@ TEE_Result syscall_cryp_derive_key(unsigned long state, - } else { - res = TEE_ERROR_OUT_OF_MEMORY; - } -- crypto_bignum_free(pub); -- crypto_bignum_free(ss); -+ crypto_bignum_free(&pub); -+ crypto_bignum_free(&ss); - } else if (TEE_ALG_GET_MAIN_ALG(cs->algo) == TEE_MAIN_ALGO_ECDH) { - struct ecc_public_key key_public; - uint8_t *pt_secret; -diff --git a/lib/libmbedtls/core/bignum.c b/lib/libmbedtls/core/bignum.c -index 61f6c5c60..dea30f61a 100644 ---- a/lib/libmbedtls/core/bignum.c -+++ b/lib/libmbedtls/core/bignum.c -@@ -87,10 +87,13 @@ struct bignum *crypto_bignum_allocate(size_t size_bits) - return (struct bignum *)bn; - } - --void crypto_bignum_free(struct bignum *s) -+void crypto_bignum_free(struct bignum **s) - { -- mbedtls_mpi_free((mbedtls_mpi *)s); -- free(s); -+ assert(s); -+ -+ mbedtls_mpi_free((mbedtls_mpi *)*s); -+ free(*s); -+ *s = NULL; - } - - void crypto_bignum_clear(struct bignum *s) -diff --git a/lib/libmbedtls/core/dh.c b/lib/libmbedtls/core/dh.c -index b3415aaa7..e95aa1495 100644 ---- a/lib/libmbedtls/core/dh.c -+++ b/lib/libmbedtls/core/dh.c -@@ -35,10 +35,10 @@ TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->g); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->y); -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->g); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->y); -+ crypto_bignum_free(&s->x); - return TEE_ERROR_OUT_OF_MEMORY; - } - -diff --git a/lib/libmbedtls/core/ecc.c b/lib/libmbedtls/core/ecc.c -index fd4a51b9d..46cd9fd1c 100644 ---- a/lib/libmbedtls/core/ecc.c -+++ b/lib/libmbedtls/core/ecc.c -@@ -40,8 +40,8 @@ static void ecc_free_public_key(struct ecc_public_key *s) - if (!s) - return; - -- crypto_bignum_free(s->x); -- crypto_bignum_free(s->y); -+ crypto_bignum_free(&s->x); -+ crypto_bignum_free(&s->y); - } - - /* -@@ -484,8 +484,8 @@ TEE_Result crypto_asym_alloc_ecc_keypair(struct ecc_keypair *s, - return TEE_SUCCESS; - - err: -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -@@ -581,7 +581,7 @@ TEE_Result crypto_asym_alloc_ecc_public_key(struct ecc_public_key *s, - return TEE_SUCCESS; - - err: -- crypto_bignum_free(s->x); -+ crypto_bignum_free(&s->x); - - return TEE_ERROR_OUT_OF_MEMORY; - } -diff --git a/lib/libmbedtls/core/rsa.c b/lib/libmbedtls/core/rsa.c -index c3b5be509..a8aeb2c04 100644 ---- a/lib/libmbedtls/core/rsa.c -+++ b/lib/libmbedtls/core/rsa.c -@@ -183,7 +183,7 @@ TEE_Result sw_crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s, - goto err; - return TEE_SUCCESS; - err: -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->e); - return TEE_ERROR_OUT_OF_MEMORY; - } - -@@ -194,8 +194,8 @@ void sw_crypto_acipher_free_rsa_public_key(struct rsa_public_key *s) - { - if (!s) - return; -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->e); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->e); - } - - void crypto_acipher_free_rsa_keypair(struct rsa_keypair *s) -@@ -205,14 +205,14 @@ void sw_crypto_acipher_free_rsa_keypair(struct rsa_keypair *s) - { - if (!s) - return; -- crypto_bignum_free(s->e); -- crypto_bignum_free(s->d); -- crypto_bignum_free(s->n); -- crypto_bignum_free(s->p); -- crypto_bignum_free(s->q); -- crypto_bignum_free(s->qp); -- crypto_bignum_free(s->dp); -- crypto_bignum_free(s->dq); -+ crypto_bignum_free(&s->e); -+ crypto_bignum_free(&s->d); -+ crypto_bignum_free(&s->n); -+ crypto_bignum_free(&s->p); -+ crypto_bignum_free(&s->q); -+ crypto_bignum_free(&s->qp); -+ crypto_bignum_free(&s->dp); -+ crypto_bignum_free(&s->dq); - } - - TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key, --- -2.34.1 - diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bb deleted file mode 100644 index 202caa546e..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bb +++ /dev/null @@ -1,24 +0,0 @@ -require optee-os_3.20.0.bb - -SUMMARY = "OP-TEE Trusted OS TA devkit" -DESCRIPTION = "OP-TEE TA devkit for build TAs" -HOMEPAGE = "https://www.op-tee.org/" - -DEPENDS += "python3-pycryptodome-native" - -do_install() { - #install TA devkit - install -d ${D}${includedir}/optee/export-user_ta/ - for f in ${B}/export-ta_${OPTEE_ARCH}/* ; do - cp -aR $f ${D}${includedir}/optee/export-user_ta/ - done -} - -do_deploy() { - echo "Do not inherit do_deploy from optee-os." -} - -FILES:${PN} = "${includedir}/optee/" - -# Build paths are currently embedded -INSANE_SKIP:${PN}-dev += "buildpaths" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_4.0.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_4.0.0.bb deleted file mode 100644 index 9fe2697e60..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_4.0.0.bb +++ /dev/null @@ -1,29 +0,0 @@ -require optee-os_4.0.0.bb - -SUMMARY = "OP-TEE Trusted OS TA devkit" -DESCRIPTION = "OP-TEE TA devkit for build TAs" -HOMEPAGE = "https://www.op-tee.org/" - -DEPENDS += "python3-pycryptodome-native" - -do_install() { - #install TA devkit - install -d ${D}${includedir}/optee/export-user_ta/ - for f in ${B}/export-ta_${OPTEE_ARCH}/* ; do - cp -aR $f ${D}${includedir}/optee/export-user_ta/ - done -} - -do_deploy() { - echo "Do not inherit do_deploy from optee-os." -} - -FILES:${PN} = "${includedir}/optee/" - -# Build paths are currently embedded -INSANE_SKIP:${PN}-dev += "buildpaths" - -# Include extra headers needed by SPMC tests to TA DEVKIT. -# Supported after op-tee v3.20 -EXTRA_OEMAKE:append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee-spmc-test', \ - ' CFG_SPMC_TESTS=y', '' , d)}" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tc.inc b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tc.inc deleted file mode 100644 index c4049f5afb..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tc.inc +++ /dev/null @@ -1,33 +0,0 @@ -# TC0 specific configuration - -# Total Compute (tc) specific configuration for optee-os and optee-os-tadevkit - -FILESEXTRAPATHS:prepend := "${THISDIR}/files/optee-os/tc:" -SRC_URI:append:tc = " file://sp_layout.json \ - file://0001-WIP-Enable-managed-exit.patch \ - file://0002-plat-totalcompute-fix-TZDRAM-start-and-size.patch \ - " - -COMPATIBLE_MACHINE = "(tc?)" - -OPTEEMACHINE:tc1 = "totalcompute-tc1" - -# Enable optee memory layout and boot logs -EXTRA_OEMAKE += " CFG_TEE_CORE_LOG_LEVEL=3" - -# default disable latency benchmarks (over all OP-TEE layers) -EXTRA_OEMAKE += " CFG_TEE_BENCHMARK=n" - -# Enable stats -EXTRA_OEMAKE += " CFG_WITH_STATS=y" - -EXTRA_OEMAKE += " CFG_CORE_SEL2_SPMC=y" - -# Copy optee manifest file -do_install:append() { - install -d ${D}${nonarch_base_libdir}/firmware/ - install -m 644 ${WORKDIR}/sp_layout.json ${D}${nonarch_base_libdir}/firmware/ - install -m 644 \ - ${S}/core/arch/arm/plat-totalcompute/fdts/optee_sp_manifest.dts \ - ${D}${nonarch_base_libdir}/firmware/ -} diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os/0003-optee-enable-clang-support.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os/0003-optee-enable-clang-support.patch deleted file mode 100644 index 3c13ce3f02..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os/0003-optee-enable-clang-support.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 59d4c190eae11c93b26cca5a7b005a17dadc8248 Mon Sep 17 00:00:00 2001 -From: Brett Warren <brett.warren@arm.com> -Date: Wed, 23 Sep 2020 09:27:34 +0100 -Subject: [PATCH] optee: enable clang support - -When compiling with clang, the LIBGCC_LOCATE_CFLAG variable used -to provide a sysroot wasn't included, which results in not locating -compiler-rt. This is mitigated by including the variable as ammended. - -Upstream-Status: Pending -ChangeId: 8ba69a4b2eb8ebaa047cb266c9aa6c2c3da45701 -Signed-off-by: Brett Warren <brett.warren@arm.com> - ---- - mk/clang.mk | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mk/clang.mk b/mk/clang.mk -index a045beee8..1ebe2f702 100644 ---- a/mk/clang.mk -+++ b/mk/clang.mk -@@ -30,7 +30,7 @@ comp-cflags-warns-clang := -Wno-language-extension-token \ - - # Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of - # libgcc for clang --libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \ -+libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \ - -rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null) - - # Core ASLR relies on the executable being ready to run from its preferred load diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bb deleted file mode 100644 index 0638cf7fac..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bb +++ /dev/null @@ -1,18 +0,0 @@ -require recipes-security/optee/optee-os.inc - -DEPENDS += "dtc-native" - -FILESEXTRAPATHS:prepend := "${THISDIR}/${P}:" - -SRCREV = "8e74d47616a20eaa23ca692f4bbbf917a236ed94" -SRC_URI += " \ - file://0001-allow-setting-sysroot-for-libgcc-lookup.patch \ - file://0002-optee-enable-clang-support.patch \ - file://0003-core-link-add-no-warn-rwx-segments.patch \ - file://0004-core-Define-section-attributes-for-clang.patch \ - file://0005-core-arm-S-EL1-SPMC-boot-ABI-update.patch \ - file://0006-core-ffa-add-TOS_FW_CONFIG-handling.patch \ - file://0007-core-spmc-handle-non-secure-interrupts.patch \ - file://0008-core-spmc-configure-SP-s-NS-interrupt-action-based-o.patch \ - file://CVE-2023-41325.patch \ - " diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend deleted file mode 100644 index e276fb8629..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# Machine specific configurations - -MACHINE_OPTEE_OS_REQUIRE ?= "" -MACHINE_OPTEE_OS_REQUIRE:tc = "optee-os-tc.inc" - -require ${MACHINE_OPTEE_OS_REQUIRE} diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_4.0.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_4.0.0.bb deleted file mode 100644 index cb326042a5..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_4.0.0.bb +++ /dev/null @@ -1,10 +0,0 @@ -require recipes-security/optee/optee-os.inc - -DEPENDS += "dtc-native" - -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRCREV = "2a5b1d1232f582056184367fb58a425ac7478ec6" -SRC_URI += " \ - file://0003-optee-enable-clang-support.patch \ - " diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test-tc.inc b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test-tc.inc deleted file mode 100644 index af73675348..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test-tc.inc +++ /dev/null @@ -1,8 +0,0 @@ -# TC specific configuration - -FILESEXTRAPATHS:prepend := "${THISDIR}/files/optee-test/tc:" -SRC_URI:append:tc = " \ - file://0001-xtest-Limit-tests-to-a-single-thread.patch \ - " - -COMPATIBLE_MACHINE = "(tc?)" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0001-xtest-regression_1000-remove-unneeded-stat.h-include.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0001-xtest-regression_1000-remove-unneeded-stat.h-include.patch deleted file mode 100644 index 98c49a2087..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0001-xtest-regression_1000-remove-unneeded-stat.h-include.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 53642dc98630b9c725977ab935c5bdd9c401e1aa Mon Sep 17 00:00:00 2001 -From: Jon Mason <jon.mason@arm.com> -Date: Sat, 15 Jul 2023 15:08:43 -0400 -Subject: [PATCH] xtest: regression_1000: remove unneeded stat.h include - -Hack to work around musl compile error: - In file included from optee-test/3.17.0-r0/recipe-sysroot/usr/include/sys/stat.h:23, - from optee-test/3.17.0-r0/git/host/xtest/regression_1000.c:25: - optee-test/3.17.0-r0/recipe-sysroot/usr/include/bits/stat.h:17:26: error: expected identifier or '(' before '[' token - 17 | unsigned __unused[2]; - | ^ - -stat.h is not needed, since it is not being used in this file. So removing it. - -Upstream-Status: Backport -Signed-off-by: Jon Mason <jon.mason@arm.com> -Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> -Acked-by: Jens Wiklander <jens.wiklander@linaro.org> ---- - host/xtest/regression_1000.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/host/xtest/regression_1000.c b/host/xtest/regression_1000.c -index de32c4184fd8..25b4721cdc45 100644 ---- a/host/xtest/regression_1000.c -+++ b/host/xtest/regression_1000.c -@@ -22,7 +22,6 @@ - #include <stdio.h> - #include <stdlib.h> - #include <string.h> --#include <sys/stat.h> - #include <sys/types.h> - #include <ta_arm_bti.h> - #include <ta_concurrent.h> diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0002-ffa_spmc-Add-arm_ffa_user-driver-compatibility-check.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0002-ffa_spmc-Add-arm_ffa_user-driver-compatibility-check.patch deleted file mode 100644 index 24cdf0ad1a..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0002-ffa_spmc-Add-arm_ffa_user-driver-compatibility-check.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 717ff43f0d58e5f5a87893bd0cf3274a1e0164dc Mon Sep 17 00:00:00 2001 -From: Gabor Toth <gabor.toth2@arm.com> -Date: Fri, 3 Mar 2023 12:25:58 +0100 -Subject: [PATCH] ffa_spmc: Add arm_ffa_user driver compatibility check - -Check the version of the arm_ffa_user Kernel Driver and fail with a -meaningful message if incompatible driver is detected. - -Upstream-Status: Backport - -Signed-off-by: Gabor Toth <gabor.toth2@arm.com> -Acked-by: Jens Wiklander <jens.wiklander@linaro.org> ---- - host/xtest/ffa_spmc_1000.c | 68 ++++++++++++++++++++++++++++++++++---- - 1 file changed, 61 insertions(+), 7 deletions(-) - -diff --git a/host/xtest/ffa_spmc_1000.c b/host/xtest/ffa_spmc_1000.c -index 15f4a468a775..1839d03f29be 100644 ---- a/host/xtest/ffa_spmc_1000.c -+++ b/host/xtest/ffa_spmc_1000.c -@@ -1,11 +1,12 @@ - // SPDX-License-Identifier: BSD-3-Clause - /* -- * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved. -+ * Copyright (c) 2022-2023, Arm Limited and Contributors. All rights reserved. - */ - #include <fcntl.h> - #include <ffa.h> - #include <stdio.h> - #include <string.h> -+#include <errno.h> - #include <sys/ioctl.h> - #include <unistd.h> - #include "include/uapi/linux/arm_ffa_user.h" -@@ -17,6 +18,10 @@ - #define INCORRECT_ENDPOINT_ID 0xffff - #define NORMAL_WORLD_ENDPOINT_ID 0 - -+#define FFA_USER_REQ_VER_MAJOR 5 -+#define FFA_USER_REQ_VER_MINOR 0 -+#define FFA_USER_REQ_VER_PATCH 1 -+ - /* Get the 32 least significant bits of a handle.*/ - #define MEM_SHARE_HANDLE_LOW(x) ((x) & 0xffffffff) - /* Get the 32 most significant bits of a handle.*/ -@@ -62,6 +67,50 @@ static struct ffa_ioctl_ep_desc test_endpoint3 = { - .uuid_ptr = (uint64_t)test_endpoint3_uuid, - }; - -+static bool check_ffa_user_version(void) -+{ -+ FILE *f = NULL; -+ int ver_major = -1; -+ int ver_minor = -1; -+ int ver_patch = -1; -+ int scan_cnt = 0; -+ -+ f = fopen("/sys/module/arm_ffa_user/version", "r"); -+ if (f) { -+ scan_cnt = fscanf(f, "%d.%d.%d", -+ &ver_major, &ver_minor, &ver_patch); -+ fclose(f); -+ if (scan_cnt != 3) { -+ printf("error: failed to parse arm_ffa_user version\n"); -+ return false; -+ } -+ } else { -+ printf("error: failed to read arm_ffa_user module info - %s\n", -+ strerror(errno)); -+ return false; -+ } -+ -+ if (ver_major != FFA_USER_REQ_VER_MAJOR) -+ goto err; -+ -+ if (ver_minor < FFA_USER_REQ_VER_MINOR) -+ goto err; -+ -+ if (ver_minor == FFA_USER_REQ_VER_MINOR) -+ if (ver_patch < FFA_USER_REQ_VER_PATCH) -+ goto err; -+ -+ return true; -+ -+err: -+ printf("error: Incompatible arm_ffa_user driver detected."); -+ printf("Found v%d.%d.%d wanted >= v%d.%d.%d)\n", -+ ver_major, ver_minor, ver_patch, FFA_USER_REQ_VER_MAJOR, -+ FFA_USER_REQ_VER_MINOR, FFA_USER_REQ_VER_PATCH); -+ -+ return false; -+} -+ - static void close_debugfs(void) - { - int err = 0; -@@ -76,6 +125,9 @@ static void close_debugfs(void) - - static bool init_sp_xtest(ADBG_Case_t *c) - { -+ if (!check_ffa_user_version()) -+ return false; -+ - if (ffa_fd < 0) { - ffa_fd = open(FFA_DRIVER_FS_PATH, O_RDWR); - if (ffa_fd < 0) { -@@ -83,6 +135,7 @@ static bool init_sp_xtest(ADBG_Case_t *c) - return false; - } - } -+ - return true; - } - -@@ -99,7 +152,7 @@ static uint16_t get_endpoint_id(uint64_t endp) - struct ffa_ioctl_ep_desc sid = { .uuid_ptr = endp }; - - /* Get ID of destination SP based on UUID */ -- if(ioctl(ffa_fd, FFA_IOC_GET_PART_ID, &sid)) -+ if (ioctl(ffa_fd, FFA_IOC_GET_PART_ID, &sid)) - return INCORRECT_ENDPOINT_ID; - - return sid.id; -@@ -213,14 +266,15 @@ static int set_up_mem(struct ffa_ioctl_ep_desc *endp, - rc = share_mem(endpoint, handle); - ADBG_EXPECT_COMPARE_SIGNED(c, rc, ==, 0); - -- if (!ADBG_EXPECT_TRUE(c, handle != NULL)) -- return TEEC_ERROR_GENERIC; -+ if (!ADBG_EXPECT_NOT_NULL(c, handle)) -+ return TEEC_ERROR_GENERIC; - - /* SP will retrieve the memory region. */ - memset(args, 0, sizeof(*args)); - args->dst_id = endpoint; - args->args[MEM_SHARE_HANDLE_LOW_INDEX] = MEM_SHARE_HANDLE_LOW(*handle); -- args->args[MEM_SHARE_HANDLE_HIGH_INDEX] = MEM_SHARE_HANDLE_HIGH(*handle); -+ args->args[MEM_SHARE_HANDLE_HIGH_INDEX] = -+ MEM_SHARE_HANDLE_HIGH(*handle); - args->args[MEM_SHARE_HANDLE_ENDPOINT_INDEX] = NORMAL_WORLD_ENDPOINT_ID; - - rc = start_sp_test(endpoint, EP_RETRIEVE, args); -@@ -254,7 +308,7 @@ static void xtest_ffa_spmc_test_1002(ADBG_Case_t *c) - rc = start_sp_test(endpoint1_id, EP_TEST_SP, &args); - ADBG_EXPECT_COMPARE_SIGNED(c, rc, ==, 0); - if (!ADBG_EXPECT_COMPARE_UNSIGNED(c, args.args[0], ==, SPMC_TEST_OK)) -- goto out; -+ goto out; - - /* Set up memory and have the SP retrieve it. */ - Do_ADBG_BeginSubCase(c, "Test memory set-up"); -@@ -469,7 +523,7 @@ static void xtest_ffa_spmc_test_1005(ADBG_Case_t *c) - memset(&args, 0, sizeof(args)); - args.args[1] = endpoint2; - args.args[2] = endpoint3; -- rc = start_sp_test(endpoint1, EP_SP_MEM_SHARING_MULTI,&args); -+ rc = start_sp_test(endpoint1, EP_SP_MEM_SHARING_MULTI, &args); - ADBG_EXPECT_COMPARE_SIGNED(c, rc, ==, 0); - ADBG_EXPECT_COMPARE_UNSIGNED(c, args.args[0], ==, SPMC_TEST_OK); - diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0003-Update-arm_ffa_user-driver-dependency.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0003-Update-arm_ffa_user-driver-dependency.patch deleted file mode 100644 index 44d9f9477d..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test/0003-Update-arm_ffa_user-driver-dependency.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 3de910a19f01a2a9e1c9a6bd6feee1aef547f676 Mon Sep 17 00:00:00 2001 -From: Gabor Toth <gabor.toth2@arm.com> -Date: Fri, 3 Mar 2023 12:23:45 +0100 -Subject: [PATCH] Update arm_ffa_user driver dependency - -Updating arm-ffa-user to v5.0.1 to get the following changes: - - move to 64 bit direct messages - - add Linux Kernel v6.1 compatibility -The motivation is to update x-test to depend on the same driver -version as TS uefi-test and thus to enable running these in a single -configuration. -Note: arm_ffa_user.h was copied from: - - URL:https://git.gitlab.arm.com/linux-arm/linux-trusted-services.git - - SHA:18e3be71f65a405dfb5d97603ae71b3c11759861 - -Upstream-Status: Backport - -Signed-off-by: Gabor Toth <gabor.toth2@arm.com> -Acked-by: Jens Wiklander <jens.wiklander@linaro.org> ---- - host/xtest/include/uapi/linux/arm_ffa_user.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/host/xtest/include/uapi/linux/arm_ffa_user.h b/host/xtest/include/uapi/linux/arm_ffa_user.h -index 9ef0be3e1664..0acde4fb2020 100644 ---- a/host/xtest/include/uapi/linux/arm_ffa_user.h -+++ b/host/xtest/include/uapi/linux/arm_ffa_user.h -@@ -33,7 +33,7 @@ struct ffa_ioctl_ep_desc { - * @dst_id: [in] 16-bit ID of destination endpoint. - */ - struct ffa_ioctl_msg_args { -- __u32 args[5]; -+ __u64 args[5]; - __u16 dst_id; - }; - #define FFA_IOC_MSG_SEND _IOWR(FFA_IOC_MAGIC, FFA_IOC_BASE + 1, \ diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bb deleted file mode 100644 index 4409ad5f16..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bb +++ /dev/null @@ -1,8 +0,0 @@ -require recipes-security/optee/optee-test.inc - -SRC_URI += " \ - file://0001-xtest-regression_1000-remove-unneeded-stat.h-include.patch \ - file://0002-ffa_spmc-Add-arm_ffa_user-driver-compatibility-check.patch \ - file://0003-Update-arm_ffa_user-driver-dependency.patch \ - " -SRCREV = "5db8ab4c733d5b2f4afac3e9aef0a26634c4b444" diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bbappend deleted file mode 100644 index 490b350049..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_3.20.0.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# Machine specific configurations - -MACHINE_OPTEE_TEST_REQUIRE ?= "" -MACHINE_OPTEE_TEST_REQUIRE:tc = "optee-test-tc.inc" - -require ${MACHINE_OPTEE_TEST_REQUIRE} diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_4.0.0.bb b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_4.0.0.bb deleted file mode 100644 index ecd949f431..0000000000 --- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-test_4.0.0.bb +++ /dev/null @@ -1,11 +0,0 @@ -require recipes-security/optee/optee-test.inc - -SRCREV = "1c3d6be5eaa6174e3dbabf60928d15628e39b994" - -# Include ffa_spmc test group if the SPMC test is enabled. -# Supported after op-tee v3.20 -EXTRA_OEMAKE:append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee-spmc-test', \ - ' CFG_SPMC_TESTS=y CFG_SECURE_PARTITION=y', '' , d)}" - -RDEPENDS:${PN} += "${@bb.utils.contains('MACHINE_FEATURES', 'optee-spmc-test', \ - ' arm-ffa-user', '' , d)}" |