diff options
author | Jan-Simon Möller <jsmoeller@linuxfoundation.org> | 2020-06-18 15:50:30 +0200 |
---|---|---|
committer | Jan-Simon Möller <jsmoeller@linuxfoundation.org> | 2020-06-18 15:50:54 +0200 |
commit | 6c9c707ddb18c8780a97a7a6819e5175788dc7db (patch) | |
tree | 5cc5de4288696fcc7897d2785d0851f3d88986f1 /meta-agl-bsp/meta-rcar-gen3 | |
parent | adc7ef9faf75833efbede5f5bdffc519010c5059 (diff) |
Cleanup draftsandbox/jsmoeller/cleanup
Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
Change-Id: I2be1b44049d74146546380e2eb866f0558a26822
Diffstat (limited to 'meta-agl-bsp/meta-rcar-gen3')
16 files changed, 1239 insertions, 2 deletions
diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-Fix-for-teec_trace.c-snprintf-Werror-format-truncati.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-Fix-for-teec_trace.c-snprintf-Werror-format-truncati.patch new file mode 100644 index 000000000..db8bdace3 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-Fix-for-teec_trace.c-snprintf-Werror-format-truncati.patch @@ -0,0 +1,28 @@ +From 30dd2986fb64aba7ee78d4e231c344e2c39d7999 Mon Sep 17 00:00:00 2001 +From: Simon Hughes <simon.hughes@arm.com> +Date: Thu, 21 Jun 2018 17:22:23 +0100 +Subject: [PATCH] Fix for teec_trace.c snprintf -Werror=format-truncation= + error. + +Signed-off-by: Simon Hughes <simon.hughes@arm.com> +--- + libteec/src/teec_trace.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/libteec/src/teec_trace.c b/libteec/src/teec_trace.c +index 78b79d6..c91bc43 100644 +--- a/libteec/src/teec_trace.c ++++ b/libteec/src/teec_trace.c +@@ -106,7 +106,8 @@ int _dprintf(const char *function, int flen, int line, int level, + */ + int thread_id = syscall(SYS_gettid); /* perf issue ? */ + +- snprintf(prefixed, MAX_PRINT_SIZE, ++ int len = 0; ++ len = snprintf(prefixed+len, MAX_PRINT_SIZE, + "%s [%d] %s:%s:%d: %s", + trace_level_strings[level], thread_id, prefix, func, + line, raw); +-- +2.7.4 + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-tee-supplicant-use-MMC_IOC_MULTI_CMD-for-RPMB-access.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-tee-supplicant-use-MMC_IOC_MULTI_CMD-for-RPMB-access.patch new file mode 100644 index 000000000..fddc7fc13 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/0001-tee-supplicant-use-MMC_IOC_MULTI_CMD-for-RPMB-access.patch @@ -0,0 +1,208 @@ +From 04a72e88f768722edff453694e70535d36a8b1b4 Mon Sep 17 00:00:00 2001 +From: Hiroki Negishi <hiroki.negishi.bx@renesas.com> +Date: Mon, 1 Apr 2019 13:10:57 +0900 +Subject: [PATCH] tee-supplicant: use MMC_IOC_MULTI_CMD for RPMB access + +To access RPMB, host should switch to RPMB partition. +And in RPMB partition, host should finish RPMB sequence. + +In case of using MMC_IOC_CMD as RPMB ioctl, eMMC driver switches +partition to user data area between WRITE command and READ command. +This may cause General failure. +In case of MMC_IOC_MULTI_CMD, eMMC driver keeps RPMB partition. + +This patch changes RPMB ioctl from MMC_IOC_CMD into MMC_IOC_MULTI_CMD +and changes ioctl parameters according to mmc utils. + +Signed-off-by: Hiroki Negishi <hiroki.negishi.bx@renesas.com> +--- + tee-supplicant/src/rpmb.c | 120 +++++++++++++++++++++++----------------------- + 1 file changed, 61 insertions(+), 59 deletions(-) + +diff --git a/tee-supplicant/src/rpmb.c b/tee-supplicant/src/rpmb.c +index cac9932..29da690 100644 +--- a/tee-supplicant/src/rpmb.c ++++ b/tee-supplicant/src/rpmb.c +@@ -114,6 +114,7 @@ static pthread_mutex_t rpmb_mutex = PTHREAD_MUTEX_INITIALIZER; + */ + + #define MMC_BLOCK_MAJOR 179 ++#define RPMB_MULTI_CMD_MAX_CMDS 3 + + /* mmc_ioc_cmd.opcode */ + #define MMC_SEND_EXT_CSD 8 +@@ -130,6 +131,9 @@ static pthread_mutex_t rpmb_mutex = PTHREAD_MUTEX_INITIALIZER; + + #define MMC_CMD_ADTC (1 << 5) /* Addressed data transfer command */ + ++#define MMC_RSP_SPI_S1 (1 << 7) /* one status byte */ ++#define MMC_RSP_SPI_R1 (MMC_RSP_SPI_S1) ++ + /* mmc_ioc_cmd.write_flag */ + #define MMC_CMD23_ARG_REL_WR (1 << 31) /* CMD23 reliable write */ + +@@ -610,26 +614,38 @@ static uint32_t read_ext_csd(int fd, uint8_t *ext_csd) + return TEEC_SUCCESS; + } + ++static inline void set_single_cmd(struct mmc_ioc_cmd *ioc, __u32 opcode, ++ int write_flag, unsigned int blocks) ++{ ++ ioc->opcode = opcode; ++ ioc->write_flag = write_flag; ++ ioc->arg = 0x0; ++ ioc->blksz = 512; ++ ioc->blocks = blocks; ++ ioc->flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; ++} ++ + static uint32_t rpmb_data_req(int fd, struct rpmb_data_frame *req_frm, + size_t req_nfrm, struct rpmb_data_frame *rsp_frm, + size_t rsp_nfrm) + { +- int st; ++ int err; + size_t i; + uint16_t msg_type = ntohs(req_frm->msg_type); +- struct mmc_ioc_cmd cmd; ++ struct mmc_ioc_cmd *ioc; ++ struct mmc_ioc_multi_cmd *mioc; ++ struct rpmb_data_frame frame_status = {0}; + +- memset(&cmd, 0, sizeof(cmd)); +- cmd.blksz = 512; +- cmd.blocks = req_nfrm; +- cmd.data_ptr = (uintptr_t)req_frm; +- cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; +- cmd.opcode = MMC_WRITE_MULTIPLE_BLOCK; +- cmd.write_flag = 1; ++ mioc = (struct mmc_ioc_multi_cmd *) ++ malloc(sizeof(struct mmc_ioc_multi_cmd) + ++ RPMB_MULTI_CMD_MAX_CMDS * sizeof(struct mmc_ioc_cmd)); ++ if (!mioc) ++ return -ENOMEM; + + for (i = 1; i < req_nfrm; i++) { + if (req_frm[i].msg_type != msg_type) { + EMSG("All request frames shall be of the same type"); ++ free(mioc); + return TEEC_ERROR_BAD_PARAMETERS; + } + } +@@ -642,77 +658,63 @@ static uint32_t rpmb_data_req(int fd, struct rpmb_data_frame *req_frm, + case RPMB_MSG_TYPE_REQ_AUTH_DATA_WRITE: + if (rsp_nfrm != 1) { + EMSG("Expected only one response frame"); ++ free(mioc); + return TEEC_ERROR_BAD_PARAMETERS; + } + +- /* Send write request frame(s) */ +- cmd.write_flag |= MMC_CMD23_ARG_REL_WR; +- /* +- * Black magic: tested on a HiKey board with a HardKernel eMMC +- * module. When postsleep values are zero, the kernel logs +- * random errors: "mmc_blk_ioctl_cmd: Card Status=0x00000E00" +- * and ioctl() fails. +- */ +- cmd.postsleep_min_us = 20000; +- cmd.postsleep_max_us = 50000; +- st = IOCTL(fd, MMC_IOC_CMD, &cmd); +- if (st < 0) +- return TEEC_ERROR_GENERIC; +- cmd.postsleep_min_us = 0; +- cmd.postsleep_max_us = 0; +- +- /* Send result request frame */ +- memset(rsp_frm, 0, 1); +- rsp_frm->msg_type = htons(RPMB_MSG_TYPE_REQ_RESULT_READ); +- cmd.data_ptr = (uintptr_t)rsp_frm; +- cmd.write_flag &= ~MMC_CMD23_ARG_REL_WR; +- st = IOCTL(fd, MMC_IOC_CMD, &cmd); +- if (st < 0) +- return TEEC_ERROR_GENERIC; +- +- /* Read response frame */ +- cmd.opcode = MMC_READ_MULTIPLE_BLOCK; +- cmd.write_flag = 0; +- cmd.blocks = rsp_nfrm; +- st = IOCTL(fd, MMC_IOC_CMD, &cmd); +- if (st < 0) +- return TEEC_ERROR_GENERIC; ++ mioc->num_of_cmds = 3; ++ ++ /* Write request */ ++ ioc = &mioc->cmds[0]; ++ set_single_cmd(ioc, MMC_WRITE_MULTIPLE_BLOCK, (1 << 31) | 1, 1); ++ mmc_ioc_cmd_set_data((*ioc), req_frm); ++ ++ /* Result request */ ++ ioc = &mioc->cmds[1]; ++ frame_status.msg_type = htobe16(RPMB_MSG_TYPE_REQ_RESULT_READ); ++ set_single_cmd(ioc, MMC_WRITE_MULTIPLE_BLOCK, 1, 1); ++ mmc_ioc_cmd_set_data((*ioc), &frame_status); ++ ++ /* Get response */ ++ ioc = &mioc->cmds[2]; ++ set_single_cmd(ioc, MMC_READ_MULTIPLE_BLOCK, 0, 1); ++ mmc_ioc_cmd_set_data((*ioc), rsp_frm); ++ + break; + + case RPMB_MSG_TYPE_REQ_WRITE_COUNTER_VAL_READ: + if (rsp_nfrm != 1) { + EMSG("Expected only one response frame"); ++ free(mioc); + return TEEC_ERROR_BAD_PARAMETERS; + } + + /* Fall through */ + case RPMB_MSG_TYPE_REQ_AUTH_DATA_READ: +- if (req_nfrm != 1) { +- EMSG("Expected only one request frame"); +- return TEEC_ERROR_BAD_PARAMETERS; +- } ++ mioc->num_of_cmds = 2; ++ ++ /* Read request */ ++ ioc = &mioc->cmds[0]; ++ set_single_cmd(ioc, MMC_WRITE_MULTIPLE_BLOCK, 1, 1); ++ mmc_ioc_cmd_set_data((*ioc), req_frm); ++ ++ /* Get response */ ++ ioc = &mioc->cmds[1]; ++ set_single_cmd(ioc, MMC_READ_MULTIPLE_BLOCK, 0, rsp_nfrm); ++ mmc_ioc_cmd_set_data((*ioc), rsp_frm); + +- /* Send request frame */ +- st = IOCTL(fd, MMC_IOC_CMD, &cmd); +- if (st < 0) +- return TEEC_ERROR_GENERIC; +- +- /* Read response frames */ +- cmd.data_ptr = (uintptr_t)rsp_frm; +- cmd.opcode = MMC_READ_MULTIPLE_BLOCK; +- cmd.write_flag = 0; +- cmd.blocks = rsp_nfrm; +- st = IOCTL(fd, MMC_IOC_CMD, &cmd); +- if (st < 0) +- return TEEC_ERROR_GENERIC; + break; + + default: + EMSG("Unsupported message type: %d", msg_type); ++ free(mioc); + return TEEC_ERROR_GENERIC; + } + +- return TEEC_SUCCESS; ++ err = ioctl(fd, MMC_IOC_MULTI_CMD, mioc); ++ ++ free(mioc); ++ return err; + } + + static uint32_t rpmb_get_dev_info(uint16_t dev_id, struct rpmb_dev_info *info) +-- +2.7.4 + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/optee.service b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/optee.service new file mode 100644 index 000000000..37fc4f752 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client/optee.service @@ -0,0 +1,9 @@ +[Unit] +Description=optee services + +[Service] +ExecStart=/usr/bin/tee-supplicant +ExecStop=/usr/bin/killall -s KILL tee-supplicant + +[Install] +WantedBy=multi-user.target diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb new file mode 100644 index 000000000..0319f2174 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-client_git.bb @@ -0,0 +1,63 @@ +DESCRIPTION = "OP-TEE Client" +LICENSE = "BSD-2-Clause" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=69663ab153298557a59c67a60a743e5b" +PR = "r0" +PV = "3.1.0+renesas+git${SRCPV}" +BRANCH = "master" +SRC_URI = "git://github.com/OP-TEE/optee_client.git;branch=${BRANCH}" +SRCREV = "3f16662284a69fdec97b1712064be94d1fed7ae7" + +SRC_URI += " \ + file://optee.service \ + file://0001-tee-supplicant-use-MMC_IOC_MULTI_CMD-for-RPMB-access.patch \ + file://0001-Fix-for-teec_trace.c-snprintf-Werror-format-truncati.patch \ +" + +inherit python3native systemd +SYSTEMD_SERVICE_${PN} = "optee.service" + +COMPATIBLE_MACHINE = "salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +S = "${WORKDIR}/git" + +# Recipe which fail to compile when enabling _FORTIFY_SOURCE=2 option +SECURITY_CFLAGS_pn-optee-client = "" + +EXTRA_OEMAKE = "RPMB_EMU=0" + +do_install () { + # Create destination directories + install -d ${D}/${libdir} + install -d ${D}/${includedir} + + # Install library + install -m 0755 ${S}/out/export/lib/libteec.so.1.0 ${D}/${libdir} + + # Create symbolic link + cd ${D}/${libdir} + ln -sf libteec.so.1.0 libteec.so.1 + ln -sf libteec.so.1 libteec.so + + # Install header files + install -m 0644 ${S}/out/export/include/* ${D}/${includedir} + + # Install systemd service configure file for OP-TEE client + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}/${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/optee.service ${D}/${systemd_system_unitdir} + fi +} + +# install the tee-supplicant for 64 bit only. +do_install_append_aarch64 () { + # Create destination directory + install -d ${D}/${bindir} + + # Install binary to bindir + install -m 0755 ${S}/out/export/bin/tee-supplicant ${D}/${bindir} +} + +RPROVIDES_${PN} += "optee-client" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples/0001-secure_storage-ta-Add-a-missing-include-file.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples/0001-secure_storage-ta-Add-a-missing-include-file.patch new file mode 100644 index 000000000..7627a0660 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples/0001-secure_storage-ta-Add-a-missing-include-file.patch @@ -0,0 +1,29 @@ +From be7079678aeb1503e0f681d977c47c44fd7b4f8c Mon Sep 17 00:00:00 2001 +From: Pierre Marzin <pierre.marzin@iot.bzh> +Date: Mon, 19 Aug 2019 09:33:17 +0000 +Subject: [PATCH] secure_storage: ta: Add a missing include file + +The commit 9890a50d3c26b377dcb27f5db680018e15a5a3de fix a size type by +using a format macro contant 'PRIu32' into a printf. This needs the +inttypes.h header file to build correctly with aarch64-linux-gnu-gcc. + +Signed-off-by: Pierre Marzin <pierre.marzin@iot.bzh> +--- + secure_storage/ta/secure_storage_ta.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/secure_storage/ta/secure_storage_ta.c b/secure_storage/ta/secure_storage_ta.c +index 3ccc12d..cfdfbb6 100644 +--- a/secure_storage/ta/secure_storage_ta.c ++++ b/secure_storage/ta/secure_storage_ta.c +@@ -28,6 +28,7 @@ + #include <secure_storage_ta.h> + #include <tee_internal_api.h> + #include <tee_internal_api_extensions.h> ++#include <inttypes.h> + + static TEE_Result delete_object(uint32_t param_types, TEE_Param params[4]) + { +-- +2.11.0 + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples_git.bb b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples_git.bb new file mode 100644 index 000000000..440fe8fdd --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-examples_git.bb @@ -0,0 +1,61 @@ +SUMMARY = "OP-TEE examples" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=cd95ab417e23b94f381dafc453d70c30" + + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit python3native + +PV = "3.6.0+git${SRCPV}" + +SRCREV = "292da2fd8db0176e0e96989268c63ef9ab910a6c" + +SRC_URI = " \ + git://github.com/linaro-swg/optee_examples;branch=master;name=master \ + file://0001-secure_storage-ta-Add-a-missing-include-file.patch \ +" + +COMPATIBLE_MACHINE = "(salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu)" +PLATFORM = "rcar" + +DEPENDS = "optee-os optee-client python-pycrypto-native" + +CFLAGS += "-Wno-extra -Wno-error=format" +TARGET_CFLAGS += "-Wno-extra -Wno-error=format" + +TARGET_CC_ARCH += "${LDFLAGS}" +INSANE_SKIP_${PN} = "ldflags" + +TA_DEV_KIT_DIR = "${STAGING_DIR_TARGET}/usr/share/optee/export-ta_arm64" + +OPTEE_CLIENT_EXPORT = "${STAGING_DIR_TARGET}/usr" + +TEEC_EXPORT = "${STAGING_DIR_TARGET}/usr" + +S = "${WORKDIR}/git" +EXTRA_OEMAKE = "\ + TEEC_EXPORT=${TEEC_EXPORT} \ + OPTEE_CLIENT_EXPORT=${OPTEE_CLIENT_EXPORT} \ + TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \ + HOST_CROSS_COMPILE=${TARGET_PREFIX} \ + TA_CROSS_COMPILE=${TARGET_PREFIX} \ + PLATFORM=${PLATFORM} \ + V=1 \ + " + +do_compile() { + oe_runmake +} + +do_install () { + mkdir -p ${D}${nonarch_base_libdir}/optee_armtz + mkdir -p ${D}${bindir} + install -D -p -m0755 ${S}/out/ca/* ${D}${bindir} + install -D -p -m0444 ${S}/out/ta/* ${D}${nonarch_base_libdir}/optee_armtz + mkdir -p ${D}${includedir} + cp ${S}/hello_world/ta/include/* ${D}${includedir} +} + +FILES_${PN} += "${nonarch_base_libdir}/optee_armtz/" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-core-define-syscall_t-as-void-void.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-core-define-syscall_t-as-void-void.patch new file mode 100644 index 000000000..bad7b27c6 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-core-define-syscall_t-as-void-void.patch @@ -0,0 +1,75 @@ +From f6d17e33e7b95c90a2521cfd37cd5cb511909fc4 Mon Sep 17 00:00:00 2001 +From: Jerome Forissier <jerome.forissier@linaro.org> +Date: Thu, 5 Jul 2018 13:07:52 +0200 +Subject: [PATCH] core: define syscall_t as void (*)(void) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +syscall_t is currently typedef'ed as TEE_Result (*)(void). It is used to +represent a pointer to any system call, in the syscall table for instance. +As such, the exact type behind syscall_t cannot reflect all the syscalls +since they have different prototypes. The current declaration with a +TEE_Result return type was probably chosen because it was a common +characteristic of all syscalls to return a TEE_Result. + +However, this type causes compilation warnings with GCC 8.1: + +core/arch/arm/tee/arch_svc.c:43:36: warning: cast between incompatible function types from ‘void (*)(long unsigned int)’ to ‘TEE_Result (*)(void)’ {aka ‘unsigned int (*)(void)’} [-Wcast-function-type] + #define SYSCALL_ENTRY(_fn) { .fn = (syscall_t)_fn } + ^ +core/arch/arm/tee/arch_svc.c:50:2: note: in expansion of macro ‘SYSCALL_ENTRY’ + SYSCALL_ENTRY(syscall_sys_return), + ^~~~~~~~~~~~~ + +The solution is to use 'void (*)(void)' instead, as explained in the GCC +documentation: + + -Wcast-function-type + + Warn when a function pointer is cast to an incompatible function + pointer. [...] The function type void (*) (void) is special and matches + everything, which can be used to suppress this warning. [...] + +Link: [1] https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html +Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> +Acked-by: Jens Wiklander <jens.wiklander@linaro.org> +--- + core/arch/arm/tee/arch_svc.c | 2 +- + core/arch/arm/tee/arch_svc_private.h | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/core/arch/arm/tee/arch_svc.c b/core/arch/arm/tee/arch_svc.c +index eb142ec..b2dd193 100644 +--- a/core/arch/arm/tee/arch_svc.c ++++ b/core/arch/arm/tee/arch_svc.c +@@ -208,7 +208,7 @@ void __weak tee_svc_handler(struct thread_svc_regs *regs) + } + + if (scn > TEE_SCN_MAX) +- scf = syscall_not_supported; ++ scf = (syscall_t)syscall_not_supported; + else + scf = tee_svc_syscall_table[scn].fn; + +diff --git a/core/arch/arm/tee/arch_svc_private.h b/core/arch/arm/tee/arch_svc_private.h +index c0b3a73..695e733 100644 +--- a/core/arch/arm/tee/arch_svc_private.h ++++ b/core/arch/arm/tee/arch_svc_private.h +@@ -7,8 +7,11 @@ + + #include <tee_api_types.h> + +-/* void argument but in reality it can be any number of arguments */ +-typedef TEE_Result (*syscall_t)(void); ++/* ++ * Generic "pointer to function" type. Actual syscalls take zero or more ++ * arguments and return TEE_Result. ++ */ ++typedef void (*syscall_t)(void); + + /* Helper function for tee_svc_handler() */ + uint32_t tee_svc_do_call(struct thread_svc_regs *regs, syscall_t func); +-- +2.7.4 + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch new file mode 100644 index 000000000..9621cf6c4 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os/0001-scripts-update-scripts-to-use-python3.patch @@ -0,0 +1,427 @@ +From 0d4941123b5a88351f5954f6de00892f85ed5abc Mon Sep 17 00:00:00 2001 +From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> +Date: Mon, 20 Jan 2020 22:32:13 +0000 +Subject: [PATCH] scripts: update scripts to use python3 + +Python2 is deprecated effective Jan. 2020, and is not available in +several distributions. + +Update scripts here to re-target then onto python version 3. + +Upstream-Status: Pending + +Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> +--- + scripts/gen_hashed_bin.py | 282 ++++++++++++++++++++------------------ + scripts/gen_ld_sects.py | 8 +- + scripts/pem_to_pub_c.py | 2 +- + scripts/sign.py | 2 +- + scripts/symbolize.py | 2 +- + scripts/ta_bin_to_c.py | 2 +- + scripts/tee_bin_parser.py | 2 +- + 7 files changed, 157 insertions(+), 143 deletions(-) + +diff --git a/scripts/gen_hashed_bin.py b/scripts/gen_hashed_bin.py +index 32350a47..a76a62cc 100755 +--- a/scripts/gen_hashed_bin.py ++++ b/scripts/gen_hashed_bin.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2014-2017, Linaro Limited +@@ -14,163 +14,177 @@ import hashlib + arch_id = {'arm32': 0, 'arm64': 1} + image_id = {'pager': 0, 'paged': 1} + ++ + def write_header_v1(outf, init_size, args, paged_size): +- magic = 0x4554504f # 'OPTE' +- version = 1; +- outf.write(struct.pack('<IBBHIIIII', \ +- magic, version, arch_id[args.arch], args.flags, init_size, \ +- args.init_load_addr_hi, args.init_load_addr_lo, \ +- args.init_mem_usage, paged_size)) ++ magic = 0x4554504f # 'OPTE' ++ version = 1 ++ outf.write(struct.pack('<IBBHIIIII', ++ magic, ++ version, ++ arch_id[args.arch], ++ args.flags, ++ init_size, ++ args.init_load_addr_hi, ++ args.init_load_addr_lo, ++ args.init_mem_usage, ++ paged_size)) ++ + + def write_header_v2(outf, init_size, args, paged_size): +- magic = 0x4554504f # 'OPTE' +- version = 2 +- nb_images = 1 if paged_size == 0 else 2 +- outf.write(struct.pack('<IBBHI', \ +- magic, version, arch_id[args.arch], args.flags, nb_images)) +- outf.write(struct.pack('<IIII', \ +- args.init_load_addr_hi, args.init_load_addr_lo, \ +- image_id['pager'], init_size)) +- if nb_images == 2: +- outf.write(struct.pack('<IIII', \ +- 0xffffffff, 0xffffffff, image_id['paged'], paged_size)) ++ magic = 0x4554504f # 'OPTE' ++ version = 2 ++ nb_images = 1 if paged_size == 0 else 2 ++ outf.write(struct.pack('<IBBHI', magic, version, ++ arch_id[args.arch], args.flags, nb_images)) ++ outf.write(struct.pack('<IIII', ++ args.init_load_addr_hi, args.init_load_addr_lo, ++ image_id['pager'], init_size)) ++ if nb_images == 2: ++ outf.write( ++ struct.pack( ++ '<IIII', ++ 0xffffffff, ++ 0xffffffff, ++ image_id['paged'], ++ paged_size)) ++ + + def append_to(outf, start_offs, in_fname, max_bytes=0xffffffff): +- #print "Appending %s@0x%x 0x%x bytes at position 0x%x" % \ +- #( in_fname, start_offs, max_bytes, int(outf.tell()) ) +- inf = open(in_fname, 'rb'); +- inf.seek(start_offs) +- while True : +- nbytes = min(16 * 1024, max_bytes) +- if nbytes == 0 : +- break +- #print "Reading %s %d bytes" % (in_fname, nbytes) +- buf = inf.read(nbytes) +- if not buf : +- break +- outf.write(buf) +- max_bytes -= len(buf) +- inf.close() ++ inf = open(in_fname, 'rb') ++ inf.seek(start_offs) ++ while True: ++ nbytes = min(16 * 1024, max_bytes) ++ if nbytes == 0: ++ break ++ buf = inf.read(nbytes) ++ if not buf: ++ break ++ outf.write(buf) ++ max_bytes -= len(buf) ++ inf.close() ++ + + def append_hashes(outf, in_fname): +- page_size = 4 * 1024 +- +- inf = open(in_fname, 'r') +- while True : +- page = inf.read(page_size) +- if len(page) == page_size : +- #print "Writing hash at position 0x%x" % \ +- #int(outf.tell()) +- outf.write(hashlib.sha256(page).digest()) +- elif len(page) == 0 : +- break +- else : +- print("Error: short read, got " + repr(len(page))) +- sys.exit(1) +- +- inf.close() ++ page_size = 4 * 1024 ++ ++ inf = open(in_fname, 'rb') ++ while True: ++ page = inf.read(page_size) ++ if len(page) == page_size: ++ outf.write(hashlib.sha256(page).digest()) ++ elif len(page) == 0: ++ break ++ else: ++ print("Error: short read, got {}".format(len(page))) ++ sys.exit(1) ++ ++ inf.close() ++ + + def int_parse(str): +- return int(str, 0) ++ return int(str, 0) ++ + + def get_args(): +- parser = argparse.ArgumentParser() +- parser.add_argument('--arch', required=True, \ +- choices=arch_id.keys(), \ +- help='Architecture') ++ parser = argparse.ArgumentParser() ++ parser.add_argument('--arch', required=True, ++ choices=list(arch_id.keys()), ++ help='Architecture') + +- parser.add_argument('--flags', \ +- type=int, default=0, \ +- help='Flags, currently none defined') ++ parser.add_argument('--flags', ++ type=int, default=0, ++ help='Flags, currently none defined') + +- parser.add_argument('--init_size', \ +- required=True, type=int_parse, \ +- help='Size of initialization part of binary') ++ parser.add_argument('--init_size', ++ required=True, type=int_parse, ++ help='Size of initialization part of binary') + +- parser.add_argument('--init_load_addr_hi', \ +- type=int_parse, default=0, \ +- help='Upper 32 bits of load address of binary') ++ parser.add_argument('--init_load_addr_hi', ++ type=int_parse, default=0, ++ help='Upper 32 bits of load address of binary') + +- parser.add_argument('--init_load_addr_lo', \ +- required=True, type=int_parse, \ +- help='Lower 32 bits of load address of binary') ++ parser.add_argument('--init_load_addr_lo', ++ required=True, type=int_parse, ++ help='Lower 32 bits of load address of binary') + +- parser.add_argument('--init_mem_usage', \ +- required=True, type=int_parse, \ +- help='Total amount of used memory when initializing'); ++ parser.add_argument('--init_mem_usage', ++ required=True, type=int_parse, ++ help='Total amount of used memory when initializing') + +- parser.add_argument('--tee_pager_bin', \ +- required=True, \ +- help='The input tee_pager.bin') ++ parser.add_argument('--tee_pager_bin', ++ required=True, ++ help='The input tee_pager.bin') + +- parser.add_argument('--tee_pageable_bin', \ +- required=True, \ +- help='The input tee_pageable.bin') ++ parser.add_argument('--tee_pageable_bin', ++ required=True, ++ help='The input tee_pageable.bin') + +- parser.add_argument('--out', \ +- required=False, type=argparse.FileType('wb'), \ +- help='The output tee.bin') ++ parser.add_argument('--out', ++ required=False, type=argparse.FileType('wb'), ++ help='The output tee.bin') + +- parser.add_argument('--out_header_v2', \ +- required=False, type=argparse.FileType('wb'), \ +- help='The output tee_header_v2.bin') ++ parser.add_argument('--out_header_v2', ++ required=False, type=argparse.FileType('wb'), ++ help='The output tee_header_v2.bin') + +- parser.add_argument('--out_pager_v2', \ +- required=False, type=argparse.FileType('wb'), \ +- help='The output tee_pager_v2.bin') ++ parser.add_argument('--out_pager_v2', ++ required=False, type=argparse.FileType('wb'), ++ help='The output tee_pager_v2.bin') + +- parser.add_argument('--out_pageable_v2', \ +- required=False, type=argparse.FileType('wb'), \ +- help='The output tee_pageable_v2.bin') ++ parser.add_argument('--out_pageable_v2', ++ required=False, type=argparse.FileType('wb'), ++ help='The output tee_pageable_v2.bin') ++ ++ return parser.parse_args() + +- return parser.parse_args(); + + def main(): +- args = get_args() +- init_bin_size = args.init_size +- tee_pager_fname = args.tee_pager_bin +- tee_pageable_fname = args.tee_pageable_bin +- pager_input_size = os.path.getsize(tee_pager_fname); +- paged_input_size = os.path.getsize(tee_pageable_fname); +- hash_size = paged_input_size / (4 * 1024) * \ +- hashlib.sha256().digest_size +- +- if paged_input_size % (4 * 1024) != 0: +- print("Error: pageable size not a multiple of 4K:" + \ +- repr(paged_input_size)) +- sys.exit(1) +- +- init_size = pager_input_size + \ +- min(init_bin_size, paged_input_size) + \ +- hash_size +- paged_size = paged_input_size - \ +- min(init_bin_size, paged_input_size) +- +- if args.out is not None: +- outf = args.out +- write_header_v1(outf, init_size, args, paged_size) +- append_to(outf, 0, tee_pager_fname) +- append_to(outf, 0, tee_pageable_fname, init_bin_size) +- append_hashes(outf, tee_pageable_fname) +- append_to(outf, init_bin_size, tee_pageable_fname) +- outf.close() +- +- if args.out_header_v2 is not None: +- outf = args.out_header_v2 +- write_header_v2(outf, init_size, args, paged_size) +- outf.close() +- +- if args.out_pager_v2 is not None: +- outf = args.out_pager_v2 +- append_to(outf, 0, tee_pager_fname) +- append_to(outf, 0, tee_pageable_fname, init_bin_size) +- append_hashes(outf, tee_pageable_fname) +- outf.close() +- +- if args.out_pageable_v2 is not None: +- outf = args.out_pageable_v2 +- append_to(outf, init_bin_size, tee_pageable_fname) +- outf.close() ++ args = get_args() ++ init_bin_size = args.init_size ++ tee_pager_fname = args.tee_pager_bin ++ tee_pageable_fname = args.tee_pageable_bin ++ pager_input_size = os.path.getsize(tee_pager_fname) ++ paged_input_size = os.path.getsize(tee_pageable_fname) ++ hash_size = paged_input_size // (4 * 1024) * \ ++ hashlib.sha256().digest_size ++ ++ if paged_input_size % (4 * 1024) != 0: ++ print("Error: pageable size not a multiple of 4K: {}".format( ++ paged_input_size)) ++ sys.exit(1) ++ ++ init_size = pager_input_size + \ ++ min(init_bin_size, paged_input_size) + \ ++ hash_size ++ paged_size = paged_input_size - \ ++ min(init_bin_size, paged_input_size) ++ ++ if args.out is not None: ++ outf = args.out ++ write_header_v1(outf, init_size, args, paged_size) ++ append_to(outf, 0, tee_pager_fname) ++ append_to(outf, 0, tee_pageable_fname, init_bin_size) ++ append_hashes(outf, tee_pageable_fname) ++ append_to(outf, init_bin_size, tee_pageable_fname) ++ outf.close() ++ ++ if args.out_header_v2 is not None: ++ outf = args.out_header_v2 ++ write_header_v2(outf, init_size, args, paged_size) ++ outf.close() ++ ++ if args.out_pager_v2 is not None: ++ outf = args.out_pager_v2 ++ append_to(outf, 0, tee_pager_fname) ++ append_to(outf, 0, tee_pageable_fname, init_bin_size) ++ append_hashes(outf, tee_pageable_fname) ++ outf.close() ++ ++ if args.out_pageable_v2 is not None: ++ outf = args.out_pageable_v2 ++ append_to(outf, init_bin_size, tee_pageable_fname) ++ outf.close() ++ + + if __name__ == "__main__": +- main() ++ main() +diff --git a/scripts/gen_ld_sects.py b/scripts/gen_ld_sects.py +index c5dc3a7b..2bdbb192 100755 +--- a/scripts/gen_ld_sects.py ++++ b/scripts/gen_ld_sects.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2017, Linaro Limited +@@ -8,8 +8,8 @@ import sys + import re + + def usage(): +- print "Usage: {0} <section reg exp match> [<skip section>...]".format( \ +- sys.argv[0]) ++ print("Usage: {0} <section reg exp match> [<skip section>...]".format( \ ++ sys.argv[0])) + sys.exit (1) + + def main(): +@@ -55,7 +55,7 @@ def main(): + if sect_name in skip_sections : + continue + +- print '\t*({0})'.format(sect_name) ++ print ('\t*({0})'.format(sect_name)) + + if __name__ == "__main__": + main() +diff --git a/scripts/pem_to_pub_c.py b/scripts/pem_to_pub_c.py +index 6b8fa365..0b03d62e 100755 +--- a/scripts/pem_to_pub_c.py ++++ b/scripts/pem_to_pub_c.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2015, Linaro Limited +diff --git a/scripts/sign.py b/scripts/sign.py +index ad47479b..348b40a2 100755 +--- a/scripts/sign.py ++++ b/scripts/sign.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # Copyright (c) 2015, 2017, Linaro Limited + # +diff --git a/scripts/symbolize.py b/scripts/symbolize.py +index 1eecf758..0e9bd3ed 100755 +--- a/scripts/symbolize.py ++++ b/scripts/symbolize.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2017, Linaro Limited +diff --git a/scripts/ta_bin_to_c.py b/scripts/ta_bin_to_c.py +index cabddbbd..f325fda0 100755 +--- a/scripts/ta_bin_to_c.py ++++ b/scripts/ta_bin_to_c.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2017, Linaro Limited +diff --git a/scripts/tee_bin_parser.py b/scripts/tee_bin_parser.py +index 5f7dd3f0..07da5791 100755 +--- a/scripts/tee_bin_parser.py ++++ b/scripts/tee_bin_parser.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # SPDX-License-Identifier: BSD-2-Clause + # + # Copyright (c) 2016, Linaro Limited +-- +2.17.1 + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb new file mode 100644 index 000000000..09deeb65a --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-os_git.bb @@ -0,0 +1,75 @@ + +DESCRIPTION = "OP-TEE OS" + +LICENSE = "BSD-2-Clause & BSD-3-Clause" +LIC_FILES_CHKSUM = " \ + file://LICENSE;md5=69663ab153298557a59c67a60a743e5b \ + file://${WORKDIR}/git_official/LICENSE;md5=69663ab153298557a59c67a60a743e5b \ +" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit deploy python3native + +PV = "3.1.0+renesas+git${SRCPV}" + +BRANCH = "rcar_gen3" +SRCREV_renesas = "19fb6dcbf42631f23afed406e893310eb30cd548" +SRCREV_officialgit = "e77020396508fc086d7a4d6137388b116e4a662f" +SRCREV_FORMAT = "renesas_officialgit" + +SRC_URI = " \ + git://github.com/renesas-rcar/optee_os.git;branch=${BRANCH};name=renesas \ + git://github.com/OP-TEE/optee_os.git;branch=master;name=officialgit;destsuffix=git_official \ +" + +SRC_URI_append = " \ + file://0001-core-define-syscall_t-as-void-void.patch \ + file://0001-scripts-update-scripts-to-use-python3.patch \ +" + +COMPATIBLE_MACHINE = "(salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu)" +PLATFORM = "rcar" + +DEPENDS = "python3-pycrypto-native" + +export CROSS_COMPILE64="${TARGET_PREFIX}" + +# Let the Makefile handle setting up the flags as it is a standalone application +LD[unexport] = "1" +LDFLAGS[unexport] = "1" +export CCcore="${CC}" +export LDcore="${LD}" +libdir[unexport] = "1" + +S = "${WORKDIR}/git" +EXTRA_OEMAKE = "-e MAKEFLAGS=" + +do_configure() { + git -C ${WORKDIR}/git_official checkout -B official 3.1.0 + git -C ${WORKDIR}/git_official cherry-pick -n ${SRCREV_officialgit} + cp -rn ${WORKDIR}/git_official/core/lib/libtomcrypt ${B}/core/lib/. +} + +do_compile() { + oe_runmake PLATFORM=${PLATFORM} CFG_ARM64_core=y +} + +do_install() { + install -d ${D}/usr/share/optee + cp -r ${S}/out/arm-plat-${PLATFORM}/export-ta_arm64 ${D}/usr/share/optee +} + +do_deploy() { + # Create deploy folder + install -d ${DEPLOYDIR} + + # Copy TEE OS to deploy folder + install -m 0644 ${S}/out/arm-plat-${PLATFORM}/core/tee.elf ${DEPLOYDIR}/tee-${MACHINE}.elf + install -m 0644 ${S}/out/arm-plat-${PLATFORM}/core/tee.bin ${DEPLOYDIR}/tee-${MACHINE}.bin + install -m 0644 ${S}/out/arm-plat-${PLATFORM}/core/tee.srec ${DEPLOYDIR}/tee-${MACHINE}.srec +} +addtask deploy before do_build after do_compile + +FILES_${PN}-staticdev += "${datadir}/optee/export-ta_arm64/lib/*.a" +FILES_${PN}-dev += "${datadir}/optee/export-ta_arm64" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test/optee_xtest_fix.diff b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test/optee_xtest_fix.diff new file mode 100644 index 000000000..5067086f1 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test/optee_xtest_fix.diff @@ -0,0 +1,13 @@ +diff --git a/host/xtest/regression_6000.c b/host/xtest/regression_6000.c +index 336ea14..2379e43 100644 +--- a/host/xtest/regression_6000.c ++++ b/host/xtest/regression_6000.c +@@ -82,6 +82,8 @@ static uint32_t fs_id_for_tee_storage_private(void) + return TEE_STORAGE_PRIVATE_REE; + #elif defined(CFG_RPMB_FS) + return TEE_STORAGE_PRIVATE_RPMB; ++#else ++ return TEE_STORAGE_PRIVATE; + #endif + } + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test_git.bb b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test_git.bb new file mode 100644 index 000000000..80a22b89f --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-test_git.bb @@ -0,0 +1,55 @@ +DESCRIPTION = "OP-TEE TEST" + +LICENSE = "GPLv2 & BSD-2-Clause" +LIC_FILES_CHKSUM = "file://${S}/host/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit python3native + +PV = "3.1.0+git${SRCPV}" + +SRCREV = "45218eb59b006ad20cc7610904f291dd85157a43" + +SRC_URI = " \ + git://github.com/OP-TEE/optee_test.git;branch=master;name=master \ + file://optee_xtest_fix.diff \ +" + +COMPATIBLE_MACHINE = "(salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu)" +PLATFORM = "rcar" + +DEPENDS = "optee-os optee-client python3-pycrypto-native" + +export CROSS_COMPILE64="${TARGET_PREFIX}" + +# Let the Makefile handle setting up the flags as it is a standalone application +LD[unexport] = "1" +LDFLAGS[unexport] = "1" +export CCcore="${CC}" +export LDcore="${LD}" +libdir[unexport] = "1" + +CFLAGS += "-Wno-extra -Wno-error=stringop-overflow -Wno-error=array-bounds" +TARGET_CFLAGS += "-Wno-extra -Wno-error=stringop-overflow -Wno-error=array-bounds" + +TARGET_CC_ARCH += "${LDFLAGS}" +INSANE_SKIP_${PN} = "ldflags" + +S = "${WORKDIR}/git" +EXTRA_OEMAKE = "-e MAKEFLAGS=" + +do_compile() { + oe_runmake CROSS_COMPILE=${CROSS_COMPILE64} PLATFORM=${PLATFORM} OPTEE_CLIENT_EXPORT=${STAGING_DIR_TARGET}/usr --no-builtin-variables TA_DEV_KIT_DIR="${STAGING_DIR_TARGET}/usr/share/optee/export-ta_arm64" +} + +do_install () { + install -D -p -m0755 ${S}/out/xtest/xtest ${D}${bindir}/xtest + + # install path should match the value set in optee-client/tee-supplicant + # default TEEC_LOAD_PATH is /lib + mkdir -p ${D}${nonarch_base_libdir}/optee_armtz/ + install -D -p -m0444 ${S}/out/ta/*/*.ta ${D}${nonarch_base_libdir}/optee_armtz/ +} + +FILES_${PN} += "${nonarch_base_libdir}/optee_armtz/" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-user-app-template_git.bb b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-user-app-template_git.bb new file mode 100644 index 000000000..d66060b05 --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/optee/optee-user-app-template_git.bb @@ -0,0 +1,57 @@ +SUMMARY = "OP-TEE user_app_template" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=cd95ab417e23b94f381dafc453d70c30" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit python3native + +PV = "0.1+git${SRCPV}" + +SRCREV = "0.1" + +SRC_URI = " \ + git://github.com/iotbzh/optee_user_app_template;branch=master \ +" + +COMPATIBLE_MACHINE = "(salvator-x|h3ulcb|m3ulcb|m3nulcb|ebisu)" +PLATFORM = "rcar" + +DEPENDS = "optee-os optee-client python-pycrypto-native" + +CFLAGS += "-Wno-extra -Wno-error=format" +TARGET_CFLAGS += "-Wno-extra -Wno-error=format" + +TARGET_CC_ARCH += "${LDFLAGS}" +INSANE_SKIP_${PN} = "ldflags" + +TA_DEV_KIT_DIR = "${STAGING_DIR_TARGET}/usr/share/optee/export-ta_arm64" + +OPTEE_CLIENT_EXPORT = "${STAGING_DIR_TARGET}/usr" + +TEEC_EXPORT = "${STAGING_DIR_TARGET}/usr" + +S = "${WORKDIR}/git" +EXTRA_OEMAKE = "\ + TEEC_EXPORT=${TEEC_EXPORT} \ + OPTEE_CLIENT_EXPORT=${OPTEE_CLIENT_EXPORT} \ + TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \ + HOST_CROSS_COMPILE=${TARGET_PREFIX} \ + TA_CROSS_COMPILE=${TARGET_PREFIX} \ + PLATFORM=${PLATFORM} \ + V=1 \ + " + +do_compile() { + oe_runmake +} + +do_install () { + mkdir -p ${D}${nonarch_base_libdir}/optee_armtz + mkdir -p ${D}${bindir} + install -D -p -m0755 ${S}/out/ca/* ${D}${bindir} + install -D -p -m0444 ${S}/out/ta/* ${D}${nonarch_base_libdir}/optee_armtz +} + +FILES_${PN} += "${nonarch_base_libdir}/optee_armtz/" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/ZZZZweston_%.ZZZbbappend index 6ce747270..921b5e857 100644 --- a/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/weston_%.bbappend +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-graphics/wayland/ZZZZweston_%.ZZZbbappend @@ -1 +1,4 @@ + DEPENDS_append_rcar-gen3 = " gstreamer1.0-plugins-base" + +PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-kernel/linux/files/9999-perf-libbft-upstream.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-kernel/linux/files/9999-perf-libbft-upstream.patch new file mode 100644 index 000000000..526a8169f --- /dev/null +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-kernel/linux/files/9999-perf-libbft-upstream.patch @@ -0,0 +1,132 @@ +From mboxrd@z Thu Jan 1 00:00:00 1970 +Return-Path: <SRS0=OrIQ=3R=vger.kernel.org=linux-kernel-owner@kernel.org> +X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on + aws-us-west-2-korg-lkml-1.web.codeaurora.org +X-Spam-Level: +X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, + DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, + HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, + SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no + version=3.4.0 +Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) + by smtp.lore.kernel.org (Postfix) with ESMTP id 15B3FC33CB2 + for <linux-kernel@archiver.kernel.org>; Tue, 28 Jan 2020 15:29:57 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) + by mail.kernel.org (Postfix) with ESMTP id DC2FA207FD + for <linux-kernel@archiver.kernel.org>; Tue, 28 Jan 2020 15:29:56 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="oudfIJtO" +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1726687AbgA1P34 (ORCPT + <rfc822;linux-kernel@archiver.kernel.org>); + Tue, 28 Jan 2020 10:29:56 -0500 +Received: from mail-pj1-f68.google.com ([209.85.216.68]:52776 "EHLO + mail-pj1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1725881AbgA1P3z (ORCPT + <rfc822;linux-kernel@vger.kernel.org>); + Tue, 28 Jan 2020 10:29:55 -0500 +Received: by mail-pj1-f68.google.com with SMTP id a6so1139461pjh.2 + for <linux-kernel@vger.kernel.org>; Tue, 28 Jan 2020 07:29:54 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=gYDQt040okirqe50Lrh3CEKmMOXPeZIYhDIO12JRm+M=; + b=oudfIJtO2XN4XvD+DQ8Ec3GIHqxMMk6ogkt8jzO33dudjAqdner4DPznSzh1Y7XrBd + ezD2ltpelFCHW3JRZgyfZqHAfW3s8KrKPaSSHQbDDQ7OXq3O+jtATKp0lwiThA4nB0uC + BigxCmlYdVAHdBtxBc59/KBRJsff1bIIF2ifAGCQEx7s/wndc9NORpanY5iLzy/VqDpT + Ja69ofWRIG1rsaAVpLA39lPLIkPyHjgG2/lirDlSXtlepON3OBYI/vPcMNV1OVcd5Maf + 8hFcwuDd5SEU+oue9keSK6X4vxGhivjKuT3Hz03+l8HEs3uZw+qK8Vd992Nm4wuWg47y + MbWQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=gYDQt040okirqe50Lrh3CEKmMOXPeZIYhDIO12JRm+M=; + b=A+s6wicuBVjcyP6oBJZcS0KkG8ps96rhnWKHa1DiKP6idYSTKnhlUlbHwRDnS45vY3 + EylYoM/iamGhD0lwUkgXn9y092J/xDRX81UC0xAivoh2XSrJ5QMoS26yAlLo+F6U7e97 + uYE2j5To+D+SwSdy78AwCLhcUALkraL7+IKkuLepgQ9CRqslm2ucLbMlsfen4ur6HzGv + hnGYhhI5Vr3RzUX/UYsfwMiT+klZsgtaKiXLiG/N+uKRPVbkfRYAA9jyv5EY9vtZHcMX + erWdta535FrzMEzbh1DSLezGLCbppqrpyRa48xixZSCwty4lZyD/lQ5GiGc2Eb6OBpH5 + yXJA== +X-Gm-Message-State: APjAAAWM554O6B18uKkyZR8xnKm0z5Pkt4u46QfadBN1BW++FYYtNsS/ + If4S1DoJJuqU2CuBGLwTQNk= +X-Google-Smtp-Source: APXvYqwBUq02rMUM31o3VOkfKkq08ooJejdl8gGvivEbHXaXtorSAN7XrAd3mphmADoU5Yi8R+kxTw== +X-Received: by 2002:a17:902:aa0b:: with SMTP id be11mr22410567plb.181.1580225394577; + Tue, 28 Jan 2020 07:29:54 -0800 (PST) +Received: from localhost.localdomain ([149.248.6.217]) + by smtp.gmail.com with ESMTPSA id y6sm20632148pgc.10.2020.01.28.07.29.51 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Tue, 28 Jan 2020 07:29:54 -0800 (PST) +From: Changbin Du <changbin.du@gmail.com> +To: Peter Zijlstra <peterz@infradead.org>, + Ingo Molnar <mingo@redhat.com>, + Arnaldo Carvalho de Melo <acme@kernel.org>, + Jiri Olsa <jolsa@redhat.com> +Cc: linux-kernel@vger.kernel.org, Changbin Du <changbin.du@gmail.com> +Subject: [PATCH] perf: Make perf able to build with latest libbfd +Date: Tue, 28 Jan 2020 23:29:38 +0800 +Message-Id: <20200128152938.31413-1-changbin.du@gmail.com> +X-Mailer: git-send-email 2.24.0 +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +Sender: linux-kernel-owner@vger.kernel.org +Precedence: bulk +List-ID: <linux-kernel.vger.kernel.org> +X-Mailing-List: linux-kernel@vger.kernel.org +Archived-At: <https://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com/> +List-Archive: <https://lore.kernel.org/lkml/> +List-Post: <mailto:linux-kernel@vger.kernel.org> + +libbfd has changed the bfd_section_* macros to inline functions +bfd_section_<field> since 2019-09-18. See below two commits: + o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html + o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html + +This fix make perf able to build with both old and new libbfd. + +Signed-off-by: Changbin Du <changbin.du@gmail.com> +--- + tools/perf/util/srcline.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c +index 6ccf6f6d09df..5b7d6c16d33f 100644 +--- a/tools/perf/util/srcline.c ++++ b/tools/perf/util/srcline.c +@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data) + bfd_vma pc, vma; + bfd_size_type size; + struct a2l_data *a2l = data; ++ flagword flags; + + if (a2l->found) + return; + +- if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0) ++#ifdef bfd_get_section_flags ++ flags = bfd_get_section_flags(abfd, section); ++#else ++ flags = bfd_section_flags(section); ++#endif ++ if ((flags & SEC_ALLOC) == 0) + return; + + pc = a2l->addr; ++#ifdef bfd_get_section_vma + vma = bfd_get_section_vma(abfd, section); ++#else ++ vma = bfd_section_vma(section); ++#endif ++#ifdef bfd_get_section_size + size = bfd_get_section_size(section); ++#else ++ size = bfd_section_size(section); ++#endif + + if (pc < vma || pc >= vma + size) + return; +-- +2.24.0 + + diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-multimedia/omx-module/omx-user-module.bbappend b/meta-agl-bsp/meta-rcar-gen3/recipes-multimedia/omx-module/omx-user-module.bbappend index b35c614c3..ce314aa7c 100644 --- a/meta-agl-bsp/meta-rcar-gen3/recipes-multimedia/omx-module/omx-user-module.bbappend +++ b/meta-agl-bsp/meta-rcar-gen3/recipes-multimedia/omx-module/omx-user-module.bbappend @@ -1,3 +1,5 @@ +PROVIDES += "virtual/libomxil" + setup_build_tree() { for omxmc in ${OMX_COMMON_SRC} ${OMX_VIDEO_DEC_COMMON_SRC} ${OMX_VIDEO_ENC_COMMON_SRC} do diff --git a/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh b/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh index ae299623f..7fd940b97 100644 --- a/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh +++ b/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh @@ -3,7 +3,7 @@ ZIP_1="R-Car_Gen3_Series_Evaluation_Software_Package_for_Linux-weston8-20191206.zip" ZIP_2="R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-weston8-20191021.zip" -COPY_SCRIPT="$METADIR/bsp/meta-renesas-rcar-gen3/meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh" +COPY_SCRIPT="$METADIR/bsp/meta-renesas/meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh" test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs DOWNLOAD_DIR=${XDG_DOWNLOAD_DIR:-$HOME/Downloads} @@ -70,7 +70,7 @@ function copy_mm_packages() { fi if [ -f $COPY_SCRIPT ]; then - cd $METADIR/bsp/meta-renesas-rcar-gen3/ + cd $METADIR/bsp/meta-renesas/ $COPY_SCRIPT -d -f $EXTRACT_DIR cd .. else |