Thread (3 messages) 3 messages, 2 authors, 2023-03-02

Re: [PATCH v2 04/24] arm64/cpu: Mark cpu_die() __noreturn

From: Josh Poimboeuf <jpoimboe@kernel.org>
Date: 2023-02-15 19:45:49
Also in: linux-alpha, linux-mips, linux-sh, linuxppc-dev, lkml, loongarch, sparclinux

Possibly related (same subject, not in this thread)

On Wed, Feb 15, 2023 at 01:09:21PM +0000, Mark Rutland wrote:
On Tue, Feb 14, 2023 at 09:13:08AM +0100, Philippe Mathieu-Daudé wrote:
quoted
On 14/2/23 08:05, Josh Poimboeuf wrote:
quoted
cpu_die() doesn't return.  Annotate it as such.  By extension this also
makes arch_cpu_idle_dead() noreturn.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
  arch/arm64/include/asm/smp.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/include/asm/smp.h b/arch/arm64/include/asm/smp.h
index fc55f5a57a06..5733a31bab08 100644
--- a/arch/arm64/include/asm/smp.h
+++ b/arch/arm64/include/asm/smp.h
@@ -100,7 +100,7 @@ static inline void arch_send_wakeup_ipi_mask(const struct cpumask *mask)
  extern int __cpu_disable(void);
  extern void __cpu_die(unsigned int cpu);
-extern void cpu_die(void);
+extern void __noreturn cpu_die(void);
  extern void cpu_die_early(void);
Shouldn't cpu_operations::cpu_die() be declared noreturn first?
The cpu_die() function ends with a BUG(), and so does not return, even if a
cpu_operations::cpu_die() function that it calls erroneously returned.

We *could* mark cpu_operations::cpu_die() as noreturn, but I'd prefer that we
did not so that the compiler doesn't optimize away the BUG() which is there to
catch such erroneous returns.

That said, could we please add __noreturn to the implementation of cpu_die() in
arch/arm64/kernel/smp.c? i.e. the fixup below.
Done.
With that fixup:

Acked-by: Mark Rutland <mark.rutland@arm.com>
Thanks!

-- 
Josh

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help