| Message ID | 20260807152353.306889-2-thorsten.blum@linux.dev (mailing list archive) |
|---|---|
| State | New |
| Headers | show |
| Series | powerpc/boot: Mark exit() and ps3_exit() as __noreturn | expand |
Le 07/08/2026 à 17:23, Thorsten Blum a écrit : > Since neither exit() nor ps3_exit() return, annotate both functions with > the __noreturn attribute to improve compiler optimizations. Is it worth spending time optimising a boot sequence that will run only once at startup ? Do you have any figure on the improvement ? Christophe > > Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> > --- > arch/powerpc/boot/ops.h | 2 +- > arch/powerpc/boot/ps3.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h > index a40c2162a4e9..df52b14816e2 100644 > --- a/arch/powerpc/boot/ops.h > +++ b/arch/powerpc/boot/ops.h > @@ -217,7 +217,7 @@ static inline void free(void *ptr) > platform_ops.free(ptr); > } > > -static inline void exit(void) > +static inline void __noreturn exit(void) > { > if (platform_ops.exit) > platform_ops.exit(); > diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c > index 89ff46b8b225..22fa35960926 100644 > --- a/arch/powerpc/boot/ps3.c > +++ b/arch/powerpc/boot/ps3.c > @@ -45,7 +45,7 @@ static void ps3_console_write(const char *buf, int len) > { > } > > -static void ps3_exit(void) > +static void __noreturn ps3_exit(void) > { > printf("ps3_exit\n"); >
On Fri, Aug 07, 2026 at 05:32:44PM +0200, Christophe Leroy (CS GROUP) wrote: > Le 07/08/2026 à 17:23, Thorsten Blum a écrit : > > Since neither exit() nor ps3_exit() return, annotate both functions with > > the __noreturn attribute to improve compiler optimizations. > > Is it worth spending time optimising a boot sequence that will run only once > at startup ? > > Do you have any figure on the improvement ? No, and I haven't checked its impact. Maybe compilers can already infer that both functions never return and optimize them accordingly. Besides potential compiler optimizations, it also serves as documentation. I can reword the commit message to clarify that, or drop the patch. Thanks, Thorsten
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index a40c2162a4e9..df52b14816e2 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h @@ -217,7 +217,7 @@ static inline void free(void *ptr) platform_ops.free(ptr); } -static inline void exit(void) +static inline void __noreturn exit(void) { if (platform_ops.exit) platform_ops.exit(); diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c index 89ff46b8b225..22fa35960926 100644 --- a/arch/powerpc/boot/ps3.c +++ b/arch/powerpc/boot/ps3.c @@ -45,7 +45,7 @@ static void ps3_console_write(const char *buf, int len) { } -static void ps3_exit(void) +static void __noreturn ps3_exit(void) { printf("ps3_exit\n");
Since neither exit() nor ps3_exit() return, annotate both functions with the __noreturn attribute to improve compiler optimizations. Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> --- arch/powerpc/boot/ops.h | 2 +- arch/powerpc/boot/ps3.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)