From 03524780fff3433966d0e6235bb96cecad88af0e Mon Sep 17 00:00:00 2001 From: Venkateshwar S Date: Sun, 12 Oct 2025 23:12:02 -0700 Subject: [PATCH] soc/qualcomm/x1p42100: Support loading QTEE FW config files This patch adds support to load the config files associated with the QTEE firmware in X1P42100. TEST=Create an image.serial.bin and ensure it boots on X1P42100. Ensure config files are loaded into the appropriate regions. [INFO ] CBFS: Found 'fallback/tzoem_cfg' @0x3ab3c0 size 0x3900 [DEBUG] read SPI 0xfdb418 0x3900: 1200 us, 12160 KB/s, 97.280 Mbps [INFO ] VB2:vb2_secdata_kernel_get() VB2_SECDATA_KERNEL_FLAGS not supported for secdata_kernel v0, return 0 [INFO ] VB2:vb2_digest_init() 14592 bytes, hash algo 2, HW acceleration forbidden [DEBUG] Loading segment from ROM address 0x9f8040f8 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd802a000 memsize 0x1d0 srcaddr 0x9f80414c filesize 0xd2 [DEBUG] Loading Segment: addr: 0xd802a000 memsz: 0x00000000000001d0 filesz: 0x00000000000000d2 [DEBUG] using LZMA [SPEW ] [ 0xd802a000, d802a1d0, 0xd802a1d0) <- 9f80414c [DEBUG] Loading segment from ROM address 0x9f804114 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd802f000 memsize 0x9000 srcaddr 0x9f80421e filesize 0x37da [DEBUG] Loading Segment: addr: 0xd802f000 memsz: 0x0000000000009000 filesz: 0x00000000000037da [DEBUG] using LZMA [SPEW ] [ 0xd802f000, d8038000, 0xd8038000) <- 9f80421e [DEBUG] Loading segment from ROM address 0x9f804130 [DEBUG] Entry Point 0xd802f000 [SPEW ] Loaded segments [INFO ] CBFS: Found 'fallback/tzqti_cfg' @0x3aed40 size 0x19c3 [DEBUG] read SPI 0xfded98 0x19c3: 562 us, 11734 KB/s, 93.872 Mbps [INFO ] VB2:vb2_secdata_kernel_get() VB2_SECDATA_KERNEL_FLAGS not supported for secdata_kernel v0, return 0 [INFO ] VB2:vb2_digest_init() 6595 bytes, hash algo 2, HW acceleration forbidden [DEBUG] Loading segment from ROM address 0x9f8040f8 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd803b000 memsize 0x1d0 srcaddr 0x9f80414c filesize 0xd2 [DEBUG] Loading Segment: addr: 0xd803b000 memsz: 0x00000000000001d0 filesz: 0x00000000000000d2 [DEBUG] using LZMA [SPEW ] [ 0xd803b000, d803b1d0, 0xd803b1d0) <- 9f80414c [DEBUG] Loading segment from ROM address 0x9f804114 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd8040000 memsize 0xe000 srcaddr 0x9f80421e filesize 0x189d [DEBUG] Loading Segment: addr: 0xd8040000 memsz: 0x000000000000e000 filesz: 0x000000000000189d [DEBUG] using LZMA [SPEW ] [ 0xd8040000, d804e000, 0xd804e000) <- 9f80421e [DEBUG] Loading segment from ROM address 0x9f804130 [DEBUG] Entry Point 0xd8040000 [SPEW ] Loaded segments [INFO ] CBFS: Found 'fallback/tzac_cfg' @0x3b0780 size 0x1f0d [DEBUG] read SPI 0xfe07d8 0x1f0d: 670 us, 11864 KB/s, 94.912 Mbps [INFO ] VB2:vb2_secdata_kernel_get() VB2_SECDATA_KERNEL_FLAGS not supported for secdata_kernel v0, return 0 [INFO ] VB2:vb2_digest_init() 7949 bytes, hash algo 2, HW acceleration forbidden [DEBUG] Loading segment from ROM address 0x9f8040f8 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd8019000 memsize 0xb800 srcaddr 0x9f804130 filesize 0x1ed5 [DEBUG] Loading Segment: addr: 0xd8019000 memsz: 0x000000000000b800 filesz: 0x0000000000001ed5 [DEBUG] using LZMA [SPEW ] [ 0xd8019000, d8024800, 0xd8024800) <- 9f804130 [DEBUG] Loading segment from ROM address 0x9f804114 [DEBUG] Entry Point 0xd8019000 [SPEW ] Loaded segments [INFO ] CBFS: Found 'fallback/hypac_cfg' @0x3b2700 size 0x11f2 [DEBUG] read SPI 0xfe2758 0x11f2: 400 us, 11485 KB/s, 91.880 Mbps [INFO ] VB2:vb2_secdata_kernel_get() VB2_SECDATA_KERNEL_FLAGS not supported for secdata_kernel v0, return 0 [INFO ] VB2:vb2_digest_init() 4594 bytes, hash algo 2, HW acceleration forbidden [DEBUG] Loading segment from ROM address 0x9f8040f8 [DEBUG] data (compression=1) [DEBUG] New segment dstaddr 0xd8000000 memsize 0xc8f4 srcaddr 0x9f804130 filesize 0x11ba [DEBUG] Loading Segment: addr: 0xd8000000 memsz: 0x000000000000c8f4 filesz: 0x00000000000011ba [DEBUG] using LZMA [SPEW ] [ 0xd8000000, d800c8f4, 0xd800c8f4) <- 9f804130 [DEBUG] Loading segment from ROM address 0x9f804114 [DEBUG] Entry Point 0xd8000000 [SPEW ] Loaded segments Change-Id: If07840fca327e51c385dbe3f33b9f775bbee7654 Signed-off-by: Venkateshwar S Reviewed-on: https://review.coreboot.org/c/coreboot/+/89550 Reviewed-by: Subrata Banik Tested-by: build bot (Jenkins) --- src/soc/qualcomm/x1p42100/Makefile.mk | 32 +++++++++++++++++++++++++++ src/soc/qualcomm/x1p42100/soc.c | 28 +++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/soc/qualcomm/x1p42100/Makefile.mk b/src/soc/qualcomm/x1p42100/Makefile.mk index 7325d9bf7a..ab23dde75d 100644 --- a/src/soc/qualcomm/x1p42100/Makefile.mk +++ b/src/soc/qualcomm/x1p42100/Makefile.mk @@ -262,6 +262,38 @@ $(GSI_FW_CBFS)-type := raw $(GSI_FW_CBFS)-compression := $(CBFS_COMPRESS_FLAG) cbfs-files-y += $(GSI_FW_CBFS) +################################################################################ +DEVCFG_TZ_FILE := $(X1P42100_BLOB)/qtee/tz_oem_config.mbn +DEVCFG_TZ_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/tzoem_cfg +$(DEVCFG_TZ_FILE_CBFS)-file := $(DEVCFG_TZ_FILE) +$(DEVCFG_TZ_FILE_CBFS)-type := payload +$(DEVCFG_TZ_FILE_CBFS)-compression := $(CBFS_COMPRESS_FLAG) +cbfs-files-y += $(DEVCFG_TZ_FILE_CBFS) + +################################################################################ +TZQTI_CFG_FILE := $(X1P42100_BLOB)/qtee/tz_qti_config.mbn +TZQTI_CFG_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/tzqti_cfg +$(TZQTI_CFG_FILE_CBFS)-file := $(TZQTI_CFG_FILE) +$(TZQTI_CFG_FILE_CBFS)-type := payload +$(TZQTI_CFG_FILE_CBFS)-compression := $(CBFS_COMPRESS_FLAG) +cbfs-files-y += $(TZQTI_CFG_FILE_CBFS) + +################################################################################ +TZAC_CFG_FILE := $(X1P42100_BLOB)/ac_policy/tz_ac_config.elf +TZAC_CFG_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/tzac_cfg +$(TZAC_CFG_FILE_CBFS)-file := $(TZAC_CFG_FILE) +$(TZAC_CFG_FILE_CBFS)-type := payload +$(TZAC_CFG_FILE_CBFS)-compression := $(CBFS_COMPRESS_FLAG) +cbfs-files-y += $(TZAC_CFG_FILE_CBFS) + +################################################################################ +HYPAC_CFG_FILE := $(X1P42100_BLOB)/ac_policy/hyp_ac_config.elf +HYPAC_CFG_FILE_CBFS := $(CONFIG_CBFS_PREFIX)/hypac_cfg +$(HYPAC_CFG_FILE_CBFS)-file := $(HYPAC_CFG_FILE) +$(HYPAC_CFG_FILE_CBFS)-type := payload +$(HYPAC_CFG_FILE_CBFS)-compression := $(CBFS_COMPRESS_FLAG) +cbfs-files-y += $(HYPAC_CFG_FILE_CBFS) + endif # ifeq ($(CONFIG_USE_QC_BLOBS),y) endif # ifeq ($(CONFIG_QC_BLOBS_UPSTREAM),y) diff --git a/src/soc/qualcomm/x1p42100/soc.c b/src/soc/qualcomm/x1p42100/soc.c index ffa3a0e7d9..d4fdb87396 100644 --- a/src/soc/qualcomm/x1p42100/soc.c +++ b/src/soc/qualcomm/x1p42100/soc.c @@ -6,6 +6,7 @@ #include #include #include +#include static struct device_operations pci_domain_ops = { .read_resources = &qcom_pci_domain_read_resources, @@ -56,9 +57,36 @@ static void soc_read_resources(struct device *dev) reserved_ram_range(dev, index++, (uintptr_t)_dram_smem, REGION_SIZE(dram_smem)); } +static void qtee_fw_config_load(void) +{ + if (!CONFIG(ARM64_USE_SECURE_OS)) + return; + + struct prog devcfg_tz = PROG_INIT(PROG_PAYLOAD, + CONFIG_CBFS_PREFIX"/tzoem_cfg"); + if (!selfload(&devcfg_tz)) + die("devcfg_tz load failed"); + + struct prog tzqti_cfg = PROG_INIT(PROG_PAYLOAD, + CONFIG_CBFS_PREFIX"/tzqti_cfg"); + if (!selfload(&tzqti_cfg)) + die("tzqti_cfg load failed"); + + struct prog tzac_cfg = PROG_INIT(PROG_PAYLOAD, + CONFIG_CBFS_PREFIX"/tzac_cfg"); + if (!selfload(&tzac_cfg)) + die("tzac_cfg load failed"); + + struct prog hypac_cfg = PROG_INIT(PROG_PAYLOAD, + CONFIG_CBFS_PREFIX"/hypac_cfg"); + if (!selfload(&hypac_cfg)) + die("hypac_cfg load failed"); +} + static void soc_init(struct device *dev) { cpucp_fw_load_reset(); + qtee_fw_config_load(); } static struct device_operations soc_ops = {