|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] xen: Identify panic and reboot/halt functions as noreturn
On Mon, 2013-11-25 at 10:25 +0000, Andrew Cooper wrote:
> On an x86 build (GCC Debian 4.7.2-5), this reduces the .text size by exactly
> 4K, and .init.text by 1751 bytes.
>
> Even in a non-debug build, the generated code uses `call` rather than `jmp` so
> there should be no impact on any stack trace generation.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Keir Fraser <keir@xxxxxxx>
> CC: Jan Beulich <JBeulich@xxxxxxxx>
> CC: Ian Campbell <ian.campbell@xxxxxxxxxx>
> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> CC: Tim Deegan <tim@xxxxxxx>
>
> ---
>
> I believe I have identified each reasonable ARM function which could be tagged
> as noreturn, but am not overly familiar with the codebase.
>
> I have compile tested arm32 and arm64
> ---
> xen/arch/arm/shutdown.c | 6 +++---
> xen/arch/arm/smpboot.c | 2 +-
> xen/arch/x86/cpu/mcheck/mce.c | 2 +-
> xen/arch/x86/cpu/mcheck/mce.h | 2 +-
> xen/arch/x86/shutdown.c | 6 +++---
> xen/common/shutdown.c | 4 ++--
> xen/drivers/char/console.c | 2 +-
> xen/include/asm-arm/smp.h | 2 +-
> xen/include/xen/lib.h | 2 +-
> xen/include/xen/shutdown.h | 10 ++++++----
> 10 files changed, 20 insertions(+), 18 deletions(-)
>
> diff --git a/xen/arch/arm/shutdown.c b/xen/arch/arm/shutdown.c
> index 767cc12..58f1cf1 100644
> --- a/xen/arch/arm/shutdown.c
> +++ b/xen/arch/arm/shutdown.c
> @@ -11,12 +11,12 @@ static void raw_machine_reset(void)
> platform_reset();
> }
>
> -static void halt_this_cpu(void *arg)
> +static void noreturn halt_this_cpu(void *arg)
> {
> stop_cpu();
You also tag stop_cpu, are both necessary? Especially for a static
function.
> }
>
> -void machine_halt(void)
> +void noreturn machine_halt(void)
And you also tag halt_this_cpu which machine_halt ends with.
> {
> watchdog_disable();
> console_start_sync();
> @@ -25,7 +25,7 @@ void machine_halt(void)
> halt_this_cpu(NULL);
> }
>
> -void machine_restart(unsigned int delay_millisecs)
> +void noreturn machine_restart(unsigned int delay_millisecs)
> {
> int timeout = 10;
>
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 6c90fa6..7242331 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -310,7 +310,7 @@ void __cpu_disable(void)
> * scheduler will drop to the idle loop, which will call stop_cpu(). */
> }
>
> -void stop_cpu(void)
> +void noreturn stop_cpu(void)
> {
> local_irq_disable();
> cpu_is_dead = 1;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |