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.tra...@hpe.com>
Reviewed-by: Steve Wahl <steve.w...@hpe.com>
Reviewed-by: Dimitri Sivanich <dimitri.sivan...@hpe.com>
---
 arch/x86/kernel/apic/x2apic_uv_x.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

--- linux.orig/arch/x86/kernel/apic/x2apic_uv_x.c
+++ linux/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -1323,7 +1323,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;
@@ -1574,8 +1575,19 @@ static __init int uv_system_init_hubless
 
        /* Init kernel/BIOS interface */
        rc = uv_bios_init();
+       if (rc < 0) {
+               pr_err("UV: BIOS init error:%d\n", rc);
+               return rc;
+       }
+
+       /* Process UVsystab */
+       rc = decode_uv_systab();
+       if (rc < 0) {
+               pr_err("UV: UVsystab decode error:%d\n", rc);
+               return rc;
+       }
 
-       /* Create user access node if UVsystab available */
+       /* Create user access node */
        if (rc >= 0)
                uv_setup_proc_files(1);
 

-- 

Reply via email to