summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Travis <mike.travis@hpe.com>2019-09-10 09:58:45 -0500
committerIngo Molnar <mingo@kernel.org>2019-10-07 13:42:11 +0200
commitf5a8f0ecb436a15f50215f27ab70a2e8626a6135 (patch)
treeba0acc1eed6cd422c9be4091cbdda7f4cffe082d
parent8785968bce1cc7368ea95c3e1e5b9210f56f6667 (diff)
downloadblackbird-op-linux-f5a8f0ecb436a15f50215f27ab70a2e8626a6135.tar.gz
blackbird-op-linux-f5a8f0ecb436a15f50215f27ab70a2e8626a6135.zip
x86/platform/uv: Decode UVsystab Info
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@hpe.com> Reviewed-by: Steve Wahl <steve.wahl@hpe.com> Reviewed-by: Dimitri Sivanich <dimitri.sivanich@hpe.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Christoph Hellwig <hch@infradead.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Hedi Berriche <hedi.berriche@hpe.com> Cc: Justin Ernst <justin.ernst@hpe.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russ Anderson <russ.anderson@hpe.com> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20190910145840.135325066@stormcage.eag.rdlabs.hpecorp.net Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index b5059050b46f..ec940add783e 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/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)
+ /* If system is uv3 or lower, there is no extended UVsystab */
+ if (is_uv_hubbed(0xfffffe) < uv(4) && is_uv_hubless(0xfffffe) < uv(4))
return 0; /* No extended UVsystab required */
st = uv_systab;
@@ -1554,8 +1555,15 @@ static __init int uv_system_init_hubless(void)
/* 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);
OpenPOWER on IntegriCloud