All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yao Zi via Grub-devel <grub-devel@gnu.org>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: Yao Zi <me@ziyao.cc>,
	jason@montleon.com, Trevor Gamblin <tgamblin@baylibre.com>
Subject: Re: [PATCH] Use medany instead of large model for RISCV
Date: Sat, 21 Mar 2026 08:23:58 +0000	[thread overview]
Message-ID: <ab5VnutXW8ubjfdX@pie> (raw)
In-Reply-To: <20260320144415.411971-1-tgamblin@baylibre.com>

On Fri, Mar 20, 2026 at 10:44:15AM -0400, Trevor Gamblin wrote:
> From: Jason Montleon <jason@montleon.com>
> 
> Upstream-Status: Submitted [https://savannah.gnu.org/bugs/?65909]
> 
> Signed-off-by: Jason Montleon <jason@montleon.com>
> Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
> ---
> We have recently added this to the openembedded-core layer to help with RISC-V
> builds on certain platforms (e.g. the VisionFive 2). I have left the patch as it
> is there, including the link to the original bug submission and the author's
> attribution. Jason, if you would like to change the attribution or anything
> about the patch, let me know and I can re-submit.

However on riscv64, medany memory model only allows addressing in +-2GiB
range, while large memory model could index the whole 64-bit address
space. This patch would break cases that grub core and dynamically
loaded modules (i.e. EFI memory allocated with type EFI_LOADER_CODE) are
located too far away to address each other with medany code model.

The issue reported in your link is related to handling of R_RISCV_ALIGN
relocations, which shouldn't happen anymore in Grub 2.14+ as commit
8fef533cf695 ("configure: Add -mno-relax on riscv*") is a fix for it.

Thanks,
Yao Zi

>  configure.ac | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index d19fb625d..2a070c577 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1675,7 +1675,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"
> @@ -1685,9 +1685,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.
> -- 
> 2.53.0
> 
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

  parent reply	other threads:[~2026-03-21  8:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-20 14:44 [PATCH] Use medany instead of large model for RISCV Trevor Gamblin
2026-03-20 18:37 ` Jason Montleon via Grub-devel
2026-03-20 21:54   ` Vladimir 'phcoder' Serbinenko
2026-03-21  8:23 ` Yao Zi via Grub-devel [this message]
2026-03-21 15:33   ` Trevor Gamblin

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=ab5VnutXW8ubjfdX@pie \
    --to=grub-devel@gnu.org \
    --cc=jason@montleon.com \
    --cc=me@ziyao.cc \
    --cc=tgamblin@baylibre.com \
    /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.
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.