From: Fernando Luis Vazquez Cao With the advent of kdump, the assumption that the boot CPU when booting an UP kernel is always the CPU with a hardware ID of 0 (usually referred to as BSP on some architectures) is not valid anymore. Signed-off-by: Fernando Luis Vazquez Cao Cc: Andi Kleen Cc: Vivek Goyal Cc: "Eric W. Biederman" Cc: Richard Henderson Cc: Ivan Kokshaysky Acked-by: Paul Mackerras Cc: Benjamin Herrenschmidt Cc: Hirokazu Takata Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: "David S. Miller" Cc: Jeff Dike Cc: "Luck, Tony" Acked-by: Simon Horman Signed-off-by: Andrew Morton --- include/asm-alpha/smp.h | 1 + include/asm-m32r/smp.h | 6 +++++- include/asm-powerpc/smp.h | 1 + include/asm-s390/smp.h | 1 + include/asm-sparc/smp.h | 1 + include/asm-sparc64/smp.h | 1 + include/asm-um/smp.h | 4 ++++ include/linux/smp.h | 1 - 8 files changed, 14 insertions(+), 2 deletions(-) diff -puN include/asm-alpha/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-alpha/smp.h --- a/include/asm-alpha/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-alpha/smp.h @@ -51,6 +51,7 @@ int smp_call_function_on_cpu(void (*func #else /* CONFIG_SMP */ +#define hard_smp_processor_id() 0 #define smp_call_function_on_cpu(func,info,retry,wait,cpu) ({ 0; }) #endif /* CONFIG_SMP */ diff -puN include/asm-m32r/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-m32r/smp.h --- a/include/asm-m32r/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-m32r/smp.h @@ -108,6 +108,10 @@ extern unsigned long send_IPI_mask_phys( #define IPI_SHIFT (0) #define NR_IPIS (8) -#endif /* CONFIG_SMP */ +#else /* CONFIG_SMP */ + +#define hard_smp_processor_id() 0 + +#endif /* CONFIG_SMP */ #endif /* _ASM_M32R_SMP_H */ diff -puN include/asm-powerpc/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-powerpc/smp.h --- a/include/asm-powerpc/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-powerpc/smp.h @@ -83,6 +83,7 @@ extern void __cpu_die(unsigned int cpu); #else /* for UP */ +#define hard_smp_processor_id() 0 #define smp_setup_cpu_maps() #endif /* CONFIG_SMP */ diff -puN include/asm-s390/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-s390/smp.h --- a/include/asm-s390/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-s390/smp.h @@ -113,6 +113,7 @@ static inline void smp_send_stop(void) __load_psw_mask(psw_kernel_bits & ~PSW_MASK_MCHECK); } +#define hard_smp_processor_id() 0 #define smp_cpu_not_running(cpu) 1 #define smp_get_cpu(cpu) ({ 0; }) #define smp_put_cpu(cpu) ({ 0; }) diff -puN include/asm-sparc/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-sparc/smp.h --- a/include/asm-sparc/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-sparc/smp.h @@ -165,6 +165,7 @@ void smp_setup_cpu_possible_map(void); #else /* SMP */ +#define hard_smp_processor_id() 0 #define smp_setup_cpu_possible_map() do { } while (0) #endif /* !(SMP) */ diff -puN include/asm-sparc64/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-sparc64/smp.h --- a/include/asm-sparc64/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-sparc64/smp.h @@ -47,6 +47,7 @@ extern void smp_setup_cpu_possible_map(v #else +#define hard_smp_processor_id() 0 #define smp_setup_cpu_possible_map() do { } while (0) #endif /* !(CONFIG_SMP) */ diff -puN include/asm-um/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/asm-um/smp.h --- a/include/asm-um/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/asm-um/smp.h @@ -24,6 +24,10 @@ extern inline void smp_cpus_done(unsigne extern struct task_struct *idle_threads[NR_CPUS]; +#else + +#define hard_smp_processor_id() 0 + #endif #endif diff -puN include/linux/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up include/linux/smp.h --- a/include/linux/smp.h~remove-hardcoding-of-hard_smp_processor_id-on-up +++ a/include/linux/smp.h @@ -83,7 +83,6 @@ void smp_prepare_boot_cpu(void); * These macros fold the SMP functionality into a single CPU system */ #define raw_smp_processor_id() 0 -#define hard_smp_processor_id() 0 static inline int up_smp_call_function(void) { return 0; _