[PATCH v2 1/2] x86/UV: Introduce a helper function to check UV system at earlier stage

From: Baoquan He
Date: Sat May 20 2017 - 08:02:54 EST

The SGI BIOS adds UVsystab, and only systems running SGI BIOS
(and now HPE Hawks2) will have UVsystab. And UVsystab is detected in
efi_init() which is at very early stage. So introduce a new helper
function is_early_uv_system() for later usage.

Signed-off-by: Baoquan He <bhe@xxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
Cc: x86@xxxxxxxxxx
Cc: Russ Anderson <rja@xxxxxxx>
Cc: Dimitri Sivanich <sivanich@xxxxxxx>
Cc: "travis@xxxxxxx" <travis@xxxxxxx>
Cc: Mike Travis <mike.travis@xxxxxxx>
Cc: Frank Ramsay <frank.ramsay@xxxxxxx>
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 6686820..159f698 100644
--- a/arch/x86/include/asm/uv/uv.h
+++ b/arch/x86/include/asm/uv/uv.h
@@ -19,6 +19,11 @@ extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
unsigned long start,
unsigned long end,
unsigned int cpu);
+#include <linux/efi.h>
+static inline int is_early_uv_system(void)
+ return !((efi.uv_systab == EFI_INVALID_TABLE_ADDR) || !efi.uv_systab);

#else /* X86_UV */

@@ -31,6 +36,7 @@ static inline const struct cpumask *
uv_flush_tlb_others(const struct cpumask *cpumask, struct mm_struct *mm,
unsigned long start, unsigned long end, unsigned int cpu)
{ return cpumask; }
+static inline int is_early_uv_system(void) { return 0; }

#endif /* X86_UV */