arm64: consistently log boot/secondary CPU IDs
authorMark Rutland <mark.rutland@arm.com>
Wed, 27 Sep 2017 13:50:38 +0000 (14:50 +0100)
committerWill Deacon <will.deacon@arm.com>
Wed, 4 Oct 2017 12:42:52 +0000 (13:42 +0100)
Currently we inconsistently log identifying information for the boot CPU
and secondary CPUs. For the boot CPU, we log the MIDR and MPIDR across
separate messages, whereas for the secondary CPUs we only log the MIDR.

In some cases, it would be useful to know the MPIDR of secondary CPUs,
and it would be nice for these messages to be consistent.

This patch ensures that in the primary and secondary boot paths, we log
both the MPIDR and MIDR in a single message, with a consistent format.
the MPIDR is consistently padded to 10 hex characters to cover Aff3 in
bits 39:32, so that IDs can be compared easily.

The newly redundant message in setup_arch() is removed.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Al Stone <ahs3@redhat.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
[will: added '0x' prefixes consistently]
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/setup.c
arch/arm64/kernel/smp.c

index b2fdb59b69f6d735a57ff19f1e8b3cc8e2edc3cc..4bab73e80e33719aea343e1a09ccae016eaae32d 100644 (file)
@@ -102,7 +102,8 @@ void __init smp_setup_processor_id(void)
         * access percpu variable inside lock_release
         */
        set_my_cpu_offset(0);
-       pr_info("Booting Linux on physical CPU 0x%lx\n", (unsigned long)mpidr);
+       pr_info("Booting Linux on physical CPU 0x%010lx [0x%08x]\n",
+               (unsigned long)mpidr, read_cpuid_id());
 }
 
 bool arch_match_cpu_phys_id(int cpu, u64 phys_id)
@@ -243,8 +244,6 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID };
 
 void __init setup_arch(char **cmdline_p)
 {
-       pr_info("Boot CPU: AArch64 Processor [%08x]\n", read_cpuid_id());
-
        init_mm.start_code = (unsigned long) _text;
        init_mm.end_code   = (unsigned long) _etext;
        init_mm.end_data   = (unsigned long) _edata;
index 9f7195a5773ee66138bc5170508f8c251f501e47..824561ef6b8a906e0abc7c4124db4e13e876f838 100644 (file)
@@ -216,6 +216,7 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
  */
 asmlinkage void secondary_start_kernel(void)
 {
+       u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK;
        struct mm_struct *mm = &init_mm;
        unsigned int cpu;
 
@@ -265,8 +266,9 @@ asmlinkage void secondary_start_kernel(void)
         * the CPU migration code to notice that the CPU is online
         * before we continue.
         */
-       pr_info("CPU%u: Booted secondary processor [%08x]\n",
-                                        cpu, read_cpuid_id());
+       pr_info("CPU%u: Booted secondary processor 0x%010lx [0x%08x]\n",
+                                        cpu, (unsigned long)mpidr,
+                                        read_cpuid_id());
        update_cpu_boot_status(CPU_BOOT_SUCCESS);
        set_cpu_online(cpu, true);
        complete(&cpu_running);