2019-09-10 19:08:25

by Mike Travis

[permalink] [raw]
Subject: [PATCH V2 6/8] 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 <[email protected]>
Reviewed-by: Steve Wahl <[email protected]>
Reviewed-by: Dimitri Sivanich <[email protected]>
---
V2: Removed redundant error message after call to uv_bios_init.
Removed redundant error message after call to decode_uv_systab.
Clarify selection of UV4 and higher when checking for extended UVsystab
in decode_uv_systab().
---
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)
+ /* 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

/* 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);


--


2019-10-07 14:52:02

by tip-bot2 for Jacob Pan

[permalink] [raw]
Subject: [tip: x86/platform] x86/platform/uv: Decode UVsystab Info

The following commit has been merged into the x86/platform branch of tip:

Commit-ID: f5a8f0ecb436a15f50215f27ab70a2e8626a6135
Gitweb: https://git.kernel.org/tip/f5a8f0ecb436a15f50215f27ab70a2e8626a6135
Author: Mike Travis <[email protected]>
AuthorDate: Tue, 10 Sep 2019 09:58:45 -05:00
Committer: Ingo Molnar <[email protected]>
CommitterDate: Mon, 07 Oct 2019 13:42:11 +02:00

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 <[email protected]>
Reviewed-by: Steve Wahl <[email protected]>
Reviewed-by: Dimitri Sivanich <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: H. Peter Anvin <[email protected]>
Cc: Hedi Berriche <[email protected]>
Cc: Justin Ernst <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Russ Anderson <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/kernel/apic/x2apic_uv_x.c | 12 ++++++++++--
1 file 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 b505905..ec940ad 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);