diff mbox series

[1/7] efi/riscv: libstub: mark when compiling libstub

Message ID 20221110164924.529386-2-heiko@sntech.de (mailing list archive)
State Superseded
Headers show
Series Zbb string optimizations and call support in alternatives | expand

Checks

Context Check Description
conchuod/tree_selection fail Guessing tree name failed

Commit Message

Heiko Stuebner Nov. 10, 2022, 4:49 p.m. UTC
From: Heiko Stuebner <heiko.stuebner@vrull.eu>

We want to runtime-optimize some core functions (str*, mem*)
but not have this leak into libstub. Instead libstub
for the short while it's running should just use the generic
implementation.

To be able to determine whether functions are getting compiled
as part of libstub or not, add a compile-flag we can check
via #ifdef.

Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu>
---
 drivers/firmware/efi/libstub/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Conor Dooley Nov. 13, 2022, 5:16 p.m. UTC | #1
On Thu, Nov 10, 2022 at 05:49:18PM +0100, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner@vrull.eu>
> 
> We want to runtime-optimize some core functions (str*, mem*)
> but not have this leak into libstub. Instead libstub
> for the short while it's running should just use the generic

Totally pedantic reword, mostly b/c I am an eejit and confused myself
the first time reading this:

"Instead, libstub, for the short while it's running, should just use
the generic implementation."

> implementation.
> 
> To be able to determine whether functions are getting compiled
> as part of libstub or not, add a compile-flag we can check
> via #ifdef.

Exempting the stub makes sense to me given when it runs. What's the
actual downside of not exempting it though?

> Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu>
> ---
>  drivers/firmware/efi/libstub/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> index b1601aad7e1a..39c8e3da1937 100644
> --- a/drivers/firmware/efi/libstub/Makefile
> +++ b/drivers/firmware/efi/libstub/Makefile
> @@ -25,7 +25,7 @@ cflags-$(CONFIG_ARM)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
>  				   -fno-builtin -fpic \
>  				   $(call cc-option,-mno-single-pic-base)
>  cflags-$(CONFIG_RISCV)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> -				   -fpic
> +				   -fpic -DRISCV_EFISTUB
>  cflags-$(CONFIG_LOONGARCH)	:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
>  				   -fpie
>  
> -- 
> 2.35.1
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
Heiko Stuebner Nov. 13, 2022, 5:20 p.m. UTC | #2
Am Sonntag, 13. November 2022, 18:16:10 CET schrieb Conor Dooley:
> On Thu, Nov 10, 2022 at 05:49:18PM +0100, Heiko Stuebner wrote:
> > From: Heiko Stuebner <heiko.stuebner@vrull.eu>
> > 
> > We want to runtime-optimize some core functions (str*, mem*)
> > but not have this leak into libstub. Instead libstub
> > for the short while it's running should just use the generic
> 
> Totally pedantic reword, mostly b/c I am an eejit and confused myself
> the first time reading this:
> 
> "Instead, libstub, for the short while it's running, should just use
> the generic implementation."
> 
> > implementation.
> > 
> > To be able to determine whether functions are getting compiled
> > as part of libstub or not, add a compile-flag we can check
> > via #ifdef.
> 
> Exempting the stub makes sense to me given when it runs. What's the
> actual downside of not exempting it though?

You run into build-errors.

I.e. the alternatives (zbb-variants in this case) get compiled
so there is the reference to the _strlen_zbb function in the efi-stub,
which of course is not fullfillable, hence the "magic" in patch6 :-) .


Heiko


> > Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu>
> > ---
> >  drivers/firmware/efi/libstub/Makefile | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > index b1601aad7e1a..39c8e3da1937 100644
> > --- a/drivers/firmware/efi/libstub/Makefile
> > +++ b/drivers/firmware/efi/libstub/Makefile
> > @@ -25,7 +25,7 @@ cflags-$(CONFIG_ARM)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> >  				   -fno-builtin -fpic \
> >  				   $(call cc-option,-mno-single-pic-base)
> >  cflags-$(CONFIG_RISCV)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> > -				   -fpic
> > +				   -fpic -DRISCV_EFISTUB
> >  cflags-$(CONFIG_LOONGARCH)	:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> >  				   -fpie
> >  
>
Conor Dooley Nov. 13, 2022, 6:06 p.m. UTC | #3
On Sun, Nov 13, 2022 at 06:20:29PM +0100, Heiko Stübner wrote:
> Am Sonntag, 13. November 2022, 18:16:10 CET schrieb Conor Dooley:
> > On Thu, Nov 10, 2022 at 05:49:18PM +0100, Heiko Stuebner wrote:
> > > From: Heiko Stuebner <heiko.stuebner@vrull.eu>
> > > 
> > > We want to runtime-optimize some core functions (str*, mem*)
> > > but not have this leak into libstub. Instead libstub
> > > for the short while it's running should just use the generic
> > 
> > Totally pedantic reword, mostly b/c I am an eejit and confused myself
> > the first time reading this:
> > 
> > "Instead, libstub, for the short while it's running, should just use
> > the generic implementation."
> > 
> > > implementation.
> > > 
> > > To be able to determine whether functions are getting compiled
> > > as part of libstub or not, add a compile-flag we can check
> > > via #ifdef.
> > 
> > Exempting the stub makes sense to me given when it runs. What's the
> > actual downside of not exempting it though?
> 
> You run into build-errors.

Ah right, I figured it had to be something more than avoiding some
overhead. Might be worth noting that the purpose is to avoid build
errors.
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>

> 
> I.e. the alternatives (zbb-variants in this case) get compiled
> so there is the reference to the _strlen_zbb function in the efi-stub,
> which of course is not fullfillable, hence the "magic" in patch6 :-) .
> 
> 
> Heiko
> 
> 
> > > Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu>
> > > ---
> > >  drivers/firmware/efi/libstub/Makefile | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
> > > index b1601aad7e1a..39c8e3da1937 100644
> > > --- a/drivers/firmware/efi/libstub/Makefile
> > > +++ b/drivers/firmware/efi/libstub/Makefile
> > > @@ -25,7 +25,7 @@ cflags-$(CONFIG_ARM)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> > >  				   -fno-builtin -fpic \
> > >  				   $(call cc-option,-mno-single-pic-base)
> > >  cflags-$(CONFIG_RISCV)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> > > -				   -fpic
> > > +				   -fpic -DRISCV_EFISTUB
> > >  cflags-$(CONFIG_LOONGARCH)	:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
> > >  				   -fpie
> > >  
> > 
> 
> 
> 
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
diff mbox series

Patch

diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index b1601aad7e1a..39c8e3da1937 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -25,7 +25,7 @@  cflags-$(CONFIG_ARM)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
 				   -fno-builtin -fpic \
 				   $(call cc-option,-mno-single-pic-base)
 cflags-$(CONFIG_RISCV)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
-				   -fpic
+				   -fpic -DRISCV_EFISTUB
 cflags-$(CONFIG_LOONGARCH)	:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
 				   -fpie