[PATCH 6/8] x86/platform/uv: Decode UVsystab Info
From: Mike Travis
Date: Thu Sep 05 2019 - 14:49:10 EST
Decode the hubless UVsystab passed from BIOS to the kernel saving
pertinent info in a similar manner that hubbed UVsystabs are decoded.
Signed-off-by: Mike Travis <mike.travis@xxxxxxx>
Reviewed-by: Steve Wahl <steve.wahl@xxxxxxx>
Reviewed-by: Dimitri Sivanich <dimitri.sivanich@xxxxxxx>
To: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
To: Ingo Molnar <mingo@xxxxxxxxxx>
To: H. Peter Anvin <hpa@xxxxxxxxx>
To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
To: Borislav Petkov <bp@xxxxxxxxx>
To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Cc: Dimitri Sivanich <dimitri.sivanich@xxxxxxx>
Cc: Russ Anderson <russ.anderson@xxxxxxx>
Cc: Hedi Berriche <hedi.berriche@xxxxxxx>
Cc: Steve Wahl <steve.wahl@xxxxxxx>
Cc: x86@xxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
---
arch/x86/kernel/apic/x2apic_uv_x.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--- linux.orig/arch/x86/kernel/apic/x2apic_uv_x.c
+++ linux/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -1303,7 +1303,8 @@ static int __init decode_uv_systab(void)
struct uv_systab *st;
int i;
- if (uv_hub_info->hub_revision < UV4_HUB_REVISION_BASE)
+ /* Select only UV4 (hubbed or hubless) and higher */
+ if (is_uv_hubbed(-2) < uv(4) && is_uv_hubless(-2) < uv(4))
return 0; /* No extended UVsystab required */
st = uv_systab;
@@ -1554,8 +1555,15 @@ static __init int uv_system_init_hubless
/* Init kernel/BIOS interface */
rc = uv_bios_init();
+ if (rc < 0)
+ return rc;
- /* Create user access node if UVsystab available */
+ /* Process UVsystab */
+ rc = decode_uv_systab();
+ if (rc < 0)
+ return rc;
+
+ /* Create user access node */
if (rc >= 0)
uv_setup_proc_files(1);
--