[PATCH 4/4] arm64: log CPU boot modes

Ard Biesheuvel ard.biesheuvel at linaro.org
Tue Mar 17 08:58:16 PDT 2015


On 13 March 2015 at 17:14, Mark Rutland <mark.rutland at arm.com> wrote:
> We currently don't log the boot mode for arm64 as we do for arm, and
> without KVM the user is provided with no indication as to which mode(s)
> CPUs were booted in, which can seriously hinder debugging in some cases.
>
> Add logging to the boot path once all CPUs are up. Where CPUs are
> mismatched in violation of the boot protocol, WARN and set a taint (as
> we do for CPU other CPU feature mismatches) given that the
> firmware/bootloader is buggy and should be fixed.
>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Marc Zyngier <marc.zyngier at arm.com>
> Cc: Will Deacon <will.deacon at arm.com>

Tested-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>

> ---
>  arch/arm64/kernel/setup.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
> index 781f469..1480894 100644
> --- a/arch/arm64/kernel/setup.c
> +++ b/arch/arm64/kernel/setup.c
> @@ -62,6 +62,7 @@
>  #include <asm/memblock.h>
>  #include <asm/psci.h>
>  #include <asm/efi.h>
> +#include <asm/virt.h>
>
>  unsigned int processor_id;
>  EXPORT_SYMBOL(processor_id);
> @@ -207,8 +208,20 @@ static void __init smp_build_mpidr_hash(void)
>  }
>  #endif
>
> +static void __init hyp_mode_check(void)
> +{
> +       if (is_hyp_mode_available())
> +               pr_info("CPU: All CPU(s) started at EL2\n");
> +       else if (is_hyp_mode_mismatched())
> +               WARN_TAINT(1, TAINT_CPU_OUT_OF_SPEC,
> +                          "CPU: CPUs started in inconsistent modes");
> +       else
> +               pr_info("CPU: All CPU(s) started at EL1\n");
> +}
> +
>  void __init do_post_cpus_up_work(void)
>  {
> +       hyp_mode_check();
>         apply_alternatives_all();
>  }
>
> --
> 1.9.1
>



More information about the linux-arm-kernel mailing list