>From the upstream bug report, filed in 2024:

|GRUB 2.12 does not compile correctly using large model on riscv64 using gcc 
14.1.1 (gcc-14.1.1-5.fc40.x86_64).
|
|It is my understanding that the large model should not really be used on 
riscv64 yet and trying to build GRUB 2.12 with it results in an error:
|
|+ ././grub-mkimage -O riscv64-efi -o grubriscv64.efi.orig -d grub-core --sbat 
././sbat.csv -m memdisk.squashfs -p /EFI/fedora all_video boot blscfg btrfs cat 
configfile cryptodisk echo ext2 f2fs fat font gcry_rijndael gcry_rsa 
gcry_serpent gcry_sha256 gcry_twofish gcry_whirlpool gfxmenu gfxterm gzio halt 
hfsplus http increment iso9660 jpeg loadenv loopback linux lvm luks luks2 
memdisk mdraid09 mdraid1x minicmd net normal part_apple part_msdos part_gpt 
password_pbkdf2 pgp png reboot regexp search search_fs_uuid search_fs_file 
search_label serial sleep squash4 syslinuxcfg test tftp version video xfs zstd 
efi_netfs efifwsetup efinet lsefi lsefimmap connectefi
|././grub-mkimage: error: relocation 0x2b is not implemented yet.
|
|medany builds successfully and boots on the VisionFive2 and on VMs.

Signed-off-by: Trevor Gamblin <[email protected]>
---
This was originally submitted to solve VisionFive 2 builds in meta-riscv:

https://github.com/riscv/meta-riscv/pull/553

But it was suggested to submit here instead so it could be applied more
generally. I've tested it out three ways to ensure no adverse boot/build
effects:

1. MACHINE=visionfive2 in meta-riscv (the original test case) via SD card on a 
VisionFive 2
2. MACHINE=genericx86-64 (via QEMU), with EFI support enabled
3. MACHINE=qemuriscv64, with EFI support enabled

 ...any-instead-of-large-model-for-RISCV.patch | 39 +++++++++++++++++++
 meta/recipes-bsp/grub/grub2.inc               |  1 +
 2 files changed, 40 insertions(+)
 create mode 100644 
meta/recipes-bsp/grub/files/0263-Use-medany-instead-of-large-model-for-RISCV.patch

diff --git 
a/meta/recipes-bsp/grub/files/0263-Use-medany-instead-of-large-model-for-RISCV.patch
 
b/meta/recipes-bsp/grub/files/0263-Use-medany-instead-of-large-model-for-RISCV.patch
new file mode 100644
index 0000000000..e10a116ae3
--- /dev/null
+++ 
b/meta/recipes-bsp/grub/files/0263-Use-medany-instead-of-large-model-for-RISCV.patch
@@ -0,0 +1,39 @@
+From fcf4b96cfd3a04e1cfa177b08afba4fd80c9978e Mon Sep 17 00:00:00 2001
+From: Jason Montleon <[email protected]>
+Date: Fri, 3 May 2024 13:18:37 -0400
+Subject: [PATCH] Use medany instead of large model for RISCV
+
+Upstream-Status: Submitted [https://savannah.gnu.org/bugs/?65909]
+
+Signed-off-by: Jason Montleon <[email protected]>
+Signed-off-by: Trevor Gamblin <[email protected]>
+---
+ configure.ac | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0d693f8..0289fe1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1653,7 +1653,7 @@ fi]
+ 
+ CFLAGS="$TARGET_CFLAGS"
+ 
+-if test "$target_cpu" = x86_64 || test "$target_cpu" = sparc64 || test 
"$target_cpu" = riscv64 ; then
++if test "$target_cpu" = x86_64 || test "$target_cpu" = sparc64 ; then
+   # Use large model to support 4G memory
+   AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
+     CFLAGS="$TARGET_CFLAGS -mcmodel=large"
+@@ -1663,9 +1663,11 @@ if test "$target_cpu" = x86_64 || test "$target_cpu" = 
sparc64 || test "$target_
+   ])
+   if test "x$grub_cv_cc_mcmodel" = xyes; then
+     TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
+-  elif test "$target_cpu" = sparc64 || test "$target_cpu" = riscv64; then
++  elif test "$target_cpu" = sparc64; then
+     TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
+   fi
++elif test "$target_cpu" = riscv64 ; then
++    TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
+ fi
+ 
+ # Stack smashing protector.
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index 8c62315e69..7cdeff5edd 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -19,6 +19,7 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
            file://0003-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
            
file://0001-Revert-configure-Check-linker-for-image-base-support.patch \
            
file://0002-Revert-configure-Print-a-more-helpful-error-if-autoc.patch \
+           file://0263-Use-medany-instead-of-large-model-for-RISCV.patch \
 "
 
 SRC_URI[sha256sum] = 
"d0415fbb3e739237064e173743a6e5f60c33a81ec02a069cc9152d80efff4967"
-- 
2.53.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#233268): 
https://lists.openembedded.org/g/openembedded-core/message/233268
Mute This Topic: https://lists.openembedded.org/mt/118353602/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to