From: Herman Rimm via Guix-patches via <guix-patches@gnu.org>
To: 74849@debbugs.gnu.org
Cc: Efraim Flashner <efraim@flashner.co.il>,
Vagrant Cascadian <vagrant@debian.org>
Subject: [bug#74849] [PATCH 6/6] gnu: arm-trusted-firmware-imx8mq: Fix build.
Date: Fri, 13 Dec 2024 13:25:49 +0100 [thread overview]
Message-ID: <c248400b84ce887b5476e812491867a46bfdb842.1734090979.git.herman@rimm.ee> (raw)
In-Reply-To: <cover.1734090979.git.herman@rimm.ee>
* gnu/local.mk (dist_patch_DATA): Register patches.
* gnu/packages/firmware.scm (make-arm-trusted-firmware): Add make-flags
argument. [source]: Use patches.
(arm-trusted-firmware-imx8mq): Refactor.
* gnu/packages/patches/8mq-enable-imx_hab_handler.patch: Add file.
* gnu/packages/patches/8mq-move-stack-to-ocram_s.patch: Add file.
Change-Id: I8a72c1ceb5e00e113ae91a7c2f5b733d981185d6
---
gnu/local.mk | 2 +
gnu/packages/firmware.scm | 35 ++------
.../patches/8mq-enable-imx_hab_handler.patch | 36 ++++++++
.../patches/8mq-move-stack-to-ocram_s.patch | 88 +++++++++++++++++++
4 files changed, 134 insertions(+), 27 deletions(-)
create mode 100644 gnu/packages/patches/8mq-enable-imx_hab_handler.patch
create mode 100644 gnu/packages/patches/8mq-move-stack-to-ocram_s.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 39b142af5a..9b3a557dc4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -931,6 +931,8 @@ MODULES_NOT_COMPILED += \
patchdir = $(guilemoduledir)/%D%/packages/patches
dist_patch_DATA = \
+ %D%/packages/patches/8mq-enable-imx_hab_handler.patch \
+ %D%/packages/patches/8mq-move-stack-to-ocram_s.patch \
%D%/packages/patches/abcl-fix-build-xml.patch \
%D%/packages/patches/ableton-link-system-libraries-debian.patch \
%D%/packages/patches/abiword-explictly-cast-bools.patch \
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 2e170fcc1d..df7ad30590 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1097,8 +1097,9 @@ (define-public ovmf-riscv64
(define-public ovmf
(deprecated-package "ovmf" ovmf-x86-64))
-(define* (make-arm-trusted-firmware platform
- #:key (triplet "aarch64-linux-gnu"))
+(define* (make-arm-trusted-firmware platform #:key
+ (triplet "aarch64-linux-gnu")
+ (make-flags '("DEBUG=1")))
(define (native-build?)
"Return #t if the host and target platforms differ."
(or (not triplet)
@@ -1117,6 +1118,8 @@ (define* (make-arm-trusted-firmware platform
(file-name (git-file-name "arm-trusted-firmware" version))
(sha256
(base32 "18rzhygvq0afcylirq9yis3kaa1nli14k2jrm64ih85gz4nhl99w"))
+ (patches (search-patches "8mq-enable-imx_hab_handler.patch"
+ "8mq-move-stack-to-ocram_s.patch"))
(modules '((guix build utils)))
;; Remove binary blobs: they don't reference a source or license.
(snippet #~(for-each delete-file (find-files "." "\\.bin$")))))
@@ -1144,7 +1147,7 @@ (define* (make-arm-trusted-firmware platform
#$@(if (not (native-build?))
(list (string-append "CROSS_COMPILE=" triplet "-"))
'())
- "DEBUG=1")
+ #$@make-flags)
#:tests? #f)) ;no test suite
(native-inputs (list python))
(home-page "https://www.trustedfirmware.org/")
@@ -1179,30 +1182,8 @@ (define-public arm-trusted-firmware-rk3399
(cross-binutils "arm-none-eabi")))))))
(define-public arm-trusted-firmware-imx8mq
- (let ((base (make-arm-trusted-firmware "imx8mq")))
- (package
- (inherit base)
- ;; Newer versions do not build and are essentially not supported
- ;; upstream.
- ;; XXX: explore using NXP maintained branch
- ;; https://github.com/nxp-imx/imx-atf
- (version "2.8")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- ;; There are only GitHub generated release snapshots.
- (url "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/")
- (commit (string-append "v" version))))
- (file-name (git-file-name "arm-trusted-firmware" version))
- (sha256
- (base32
- "0grq3fgxi9xhcljnhwlxjvdghyz15gaq50raw41xy4lm8rkmnzp3"))))
- (arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:make-flags flags ''())
- ;; Adding debug symbols causes the size to exceed limits.
- #~(delete "DEBUG=1" #$flags)))))))
+ ;; Remove debug symbols because of limited OCRAM.
+ (make-arm-trusted-firmware "imx8mq" #:make-flags '()))
(define make-crust-firmware
(mlambda (platform)
diff --git a/gnu/packages/patches/8mq-enable-imx_hab_handler.patch b/gnu/packages/patches/8mq-enable-imx_hab_handler.patch
new file mode 100644
index 0000000000..0ead773e4e
--- /dev/null
+++ b/gnu/packages/patches/8mq-enable-imx_hab_handler.patch
@@ -0,0 +1,36 @@
+From: Herman Rimm <herman@rimm.ee>
+Date: Sun, 8 Dec 2024 01:13:59 +0100
+Subject: [PATCH] fix(imx8m): 8mq: enable imx_hab_handler
+
+This completes af799814e2639a03b3453744f06a73e77cb66e86.
+
+Signed-off-by: Herman Rimm <herman@rimm.ee>
+---
+To submit to review.trustedfirmware.org, sign in with a GitHub account.
+
+diff --git a/plat/imx/common/include/imx_sip_svc.h b/plat/imx/common/include/imx_sip_svc.h
+index 404a82959..1948bc2eb 100644
+--- a/plat/imx/common/include/imx_sip_svc.h
++++ b/plat/imx/common/include/imx_sip_svc.h
+@@ -88,7 +88,8 @@ int imx_src_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3, void *handle);
+ #endif
+
+-#if defined(PLAT_imx8mm) || defined(PLAT_imx8mn) || defined(PLAT_imx8mp)
++#if defined(PLAT_imx8mm) || defined(PLAT_imx8mn) || defined(PLAT_imx8mp) || \
++ defined(PLAT_imx8mq)
+ int imx_hab_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3, u_register_t x4);
+ #endif
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index 73179dd0c..b1b954f1d 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -30,6 +30,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ plat/imx/imx8m/imx8mq/imx8mq_psci.c \
+ plat/imx/imx8m/gpc_common.c \
+ plat/imx/imx8m/imx_aipstz.c \
++ plat/imx/imx8m/imx_hab.c \
+ plat/imx/imx8m/imx8m_caam.c \
+ plat/imx/imx8m/imx8m_ccm.c \
+ plat/imx/imx8m/imx8m_psci_common.c \
diff --git a/gnu/packages/patches/8mq-move-stack-to-ocram_s.patch b/gnu/packages/patches/8mq-move-stack-to-ocram_s.patch
new file mode 100644
index 0000000000..1174881181
--- /dev/null
+++ b/gnu/packages/patches/8mq-move-stack-to-ocram_s.patch
@@ -0,0 +1,88 @@
+From: Jacky Bai <ping.bai@nxp.com>
+Date: Tue, 7 Jan 2020 15:48:36 +0800
+Subject: [PATCH] plat: imx8mq: move the stack & xlat table into ocram_s
+
+Move the stack & xlat table into ocram_s due to the
+ocram is not enough.
+
+Signed-off-by: Jacky Bai <ping.bai@nxp.com>
+Change-Id: I40a8e6c91f707598a38e420ff9f4be0c0a5dbf6c
+---
+Commit ae90cc5773abf5656e0e49f2ce746aa54f712b7b of:
+https://github.com/nxp-imx/imx-atf.git
+
+diff --git a/bl31/bl31.ld.S b/bl31/bl31.ld.S
+index 867dedb99..8be52bc7c 100644
+--- a/bl31/bl31.ld.S
++++ b/bl31/bl31.ld.S
+@@ -25,6 +25,10 @@ MEMORY {
+ #else /* SEPARATE_RWDATA_REGION */
+ #define RAM_RW RAM
+ #endif /* SEPARATE_RWDATA_REGION */
++
++#if XLAT_TABLE_IN_OCRAM_S
++ RAM_S (rwx): ORIGIN = 0x180000, LENGTH = 0x8000
++#endif
+ }
+
+ #ifdef PLAT_EXTRA_LD_SCRIPT
+@@ -198,9 +202,13 @@ SECTIONS {
+ __NOBITS_START__ = .;
+ #endif /* SEPARATE_NOBITS_REGION */
+
++#if !STACK_IN_OCRAM_S
+ STACK_SECTION >NOBITS
++#endif
+ BSS_SECTION >NOBITS
++#if !XLAT_TABLE_IN_OCRAM_S
+ XLAT_TABLE_SECTION >NOBITS
++#endif
+
+ #if USE_COHERENT_MEM
+ /*
+@@ -253,4 +261,15 @@ SECTIONS {
+ /DISCARD/ : {
+ *(.dynsym .dynstr .hash .gnu.hash)
+ }
++
++#if XLAT_TABLE_IN_OCRAM_S
++ . = 0x180000;
++ XLAT_TABLE_SECTION >RAM_S
++
++#if STACK_IN_OCRAM_S
++ STACK_SECTION >RAM_S
++#endif
++
++ASSERT(. <= OCRAM_S_LIMIT, "OCRAM_S limit has been exceeded.")
++#endif
+ }
+diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+index 70c2def7d..ddff0925c 100644
+--- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
++++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+@@ -48,6 +48,7 @@ static uint8_t mmio_read_8_ldrb(uintptr_t address)
+ static const mmap_region_t imx_mmap[] = {
+ MAP_REGION_FLAT(GPV_BASE, GPV_SIZE, MT_DEVICE | MT_RW), /* GPV map */
+ MAP_REGION_FLAT(IMX_ROM_BASE, IMX_ROM_SIZE, MT_MEMORY | MT_RO), /* ROM map */
++ MAP_REGION_FLAT(OCRAM_S_BASE, OCRAM_S_SIZE, MT_MEMORY | MT_RW), /* ROM map */
+ MAP_REGION_FLAT(IMX_AIPS_BASE, IMX_AIPS_SIZE, MT_DEVICE | MT_RW), /* AIPS map */
+ MAP_REGION_FLAT(IMX_GIC_BASE, IMX_GIC_SIZE, MT_DEVICE | MT_RW), /* GIC map */
+ MAP_REGION_FLAT(IMX_DDRPHY_BASE, IMX_DDR_IPS_SIZE, MT_DEVICE | MT_RW), /* DDRMIX map */
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index 73179dd0c..20a73d691 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -45,7 +45,12 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ ${XLAT_TABLES_LIB_SRCS} \
+ ${IMX_GIC_SOURCES}
+
+-ENABLE_PIE := 1
++XLAT_TABLE_IN_OCRAM_S := 1
++STACK_IN_OCRAM_S := 1
++
++$(eval $(call add_define,XLAT_TABLE_IN_OCRAM_S))
++$(eval $(call add_define,STACK_IN_OCRAM_S))
++
+ USE_COHERENT_MEM := 1
+ RESET_TO_BL31 := 1
+ A53_DISABLE_NON_TEMPORAL_HINT := 0
--
2.45.2
next prev parent reply other threads:[~2024-12-13 12:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-13 12:23 [bug#74849] [PATCH 0/6] Update ARM Trusted Firmware Herman Rimm via Guix-patches via
2024-12-13 12:25 ` [bug#74849] [PATCH 1/6] gnu: arm-trusted-firmware-rk3399: Reformat Herman Rimm via Guix-patches via
2024-12-13 12:25 ` [bug#74849] [PATCH 2/6] gnu: arm-trusted-firmware: Reformat Herman Rimm via Guix-patches via
2024-12-13 12:25 ` [bug#74849] [PATCH 3/6] import: utils: Move guix-name to (guix utils) Herman Rimm via Guix-patches via
2024-12-13 12:25 ` [bug#74849] [PATCH 4/6] gnu: make-arm-trusted-firmware: Use guix-name Herman Rimm via Guix-patches via
2024-12-15 8:04 ` Vagrant Cascadian
2024-12-13 12:25 ` [bug#74849] [PATCH 5/6] gnu: make-arm-trusted-firmware: Update to 2.12 Herman Rimm via Guix-patches via
2024-12-13 12:25 ` Herman Rimm via Guix-patches via [this message]
2024-12-15 8:36 ` [bug#74849] [PATCH 0/6] Update ARM Trusted Firmware Vagrant Cascadian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c248400b84ce887b5476e812491867a46bfdb842.1734090979.git.herman@rimm.ee \
--to=guix-patches@gnu.org \
--cc=74849@debbugs.gnu.org \
--cc=efraim@flashner.co.il \
--cc=herman@rimm.ee \
--cc=vagrant@debian.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.