Commit-ID: 20a8378aa9dd108a01cb0e695599f5257a885c4b Gitweb: https://git.kernel.org/tip/20a8378aa9dd108a01cb0e695599f5257a885c4b Author: Mike Travis <mike.travis@xxxxxxx> AuthorDate: Tue, 2 Oct 2018 13:01:45 -0500 Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx> CommitDate: Tue, 2 Oct 2018 21:29:16 +0200 x86/platform/uv: Provide is_early_uv_system() Introduce is_early_uv_system() which uses efi.uv_systab to decide early in the boot process whether the kernel runs on a UV system. This is needed to skip other early setup/init code that might break the UV platform if done too early such as before necessary ACPI tables parsing takes place. Suggested-by: Hedi Berriche <hedi.berriche@xxxxxxx> Signed-off-by: Mike Travis <mike.travis@xxxxxxx> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Reviewed-by: Russ Anderson <rja@xxxxxxx> Reviewed-by: Dimitri Sivanich <sivanich@xxxxxxx> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> Cc: Russ Anderson <russ.anderson@xxxxxxx> Cc: Dimitri Sivanich <dimitri.sivanich@xxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Kate Stewart <kstewart@xxxxxxxxxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Philippe Ombredanne <pombredanne@xxxxxxxx> Cc: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Len Brown <len.brown@xxxxxxxxx> Cc: Dou Liyang <douly.fnst@xxxxxxxxxxxxxx> Cc: Xiaoming Gao <gxm.linux.kernel@xxxxxxxxx> Cc: Rajvi Jingar <rajvi.jingar@xxxxxxxxx> Link: https://lkml.kernel.org/r/20181002180144.801700401@xxxxxxxxxxxxxxxxxxxxxxxxxx --- arch/x86/include/asm/uv/uv.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/x86/include/asm/uv/uv.h b/arch/x86/include/asm/uv/uv.h index a80c0673798f..e60c45fd3679 100644 --- a/arch/x86/include/asm/uv/uv.h +++ b/arch/x86/include/asm/uv/uv.h @@ -10,8 +10,13 @@ struct cpumask; struct mm_struct; #ifdef CONFIG_X86_UV +#include <linux/efi.h> extern enum uv_system_type get_uv_system_type(void); +static inline bool is_early_uv_system(void) +{ + return !((efi.uv_systab == EFI_INVALID_TABLE_ADDR) || !efi.uv_systab); +} extern int is_uv_system(void); extern int is_uv_hubless(void); extern void uv_cpu_init(void); @@ -23,6 +28,7 @@ extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, #else /* X86_UV */ static inline enum uv_system_type get_uv_system_type(void) { return UV_NONE; } +static inline bool is_early_uv_system(void) { return 0; } static inline int is_uv_system(void) { return 0; } static inline int is_uv_hubless(void) { return 0; } static inline void uv_cpu_init(void) { }