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]>
To: Thomas Gleixner <[email protected]>
To: Ingo Molnar <[email protected]>
To: H. Peter Anvin <[email protected]>
To: Andrew Morton <[email protected]>
To: Borislav Petkov <[email protected]>
To: Christoph Hellwig <[email protected]>
To: Sasha Levin <[email protected]>
Cc: Dimitri Sivanich <[email protected]>
Cc: Russ Anderson <[email protected]>
Cc: Hedi Berriche <[email protected]>
Cc: Steve Wahl <[email protected]>
Cc: Justin Ernst <[email protected]>
Cc: [email protected]
Cc: [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);
 

-- 

Reply via email to