Re: [PATCH 4/8] x86/platform/uv: Setup UV functions for Hubless UV Systems

From: Mike Travis
Date: Wed Sep 11 2019 - 16:58:38 EST




On 9/11/2019 1:44 PM, Mike Travis wrote:


On 9/10/2019 11:07 PM, Ingo Molnar wrote:

* Mike Travis <mike.travis@xxxxxxx> wrote:

+/* Initialize UV hubless systems */
+static __init int uv_system_init_hubless(void)
+{
+    int rc;
+
+    /* Setup PCH NMI handler */
+    uv_nmi_setup_hubless();
+
+    /* Init kernel/BIOS interface */
+    rc = uv_bios_init();
+
+    return rc;
+}

This looks like an excessive cleanup error by me.  The original was:

+static __init int uv_system_init_hubless(void)
+{
+       int rc;
+
+       /* Setup PCH NMI handler */
+       uv_nmi_setup_hubless();
+
+       /* Init kernel/BIOS interface */
+       rc = uv_bios_init();
+
+       /* Create user access node if UVsystab available */
+       if (rc >= 0)
+               uv_setup_proc_files(1);
+
+       return rc;
+}
+

Hubbed UV's do not have a non-UV BIOS, but hubless systems in theory can.   So uv_bios_init can fail on hubless systems if it has some other BIOS (unlikely but possible).  So I removed too much in this cleanup. I'll send another patch set that puts this back.

I discovered the problem... In a rearrangement of the patches this change does happen but in a later patch [5/8]:

/* Initialize UV hubless systems */
static __init int uv_system_init_hubless(void)
{
@@ -1468,6 +1555,10 @@ static __init int uv_system_init_hubless
/* Init kernel/BIOS interface */
rc = uv_bios_init();

+ /* Create user access node if UVsystab available */
+ if (rc >= 0)
+ uv_setup_proc_files(1);
+
return rc;
}

The mistake you saw [in patch 3/8] is very short lived... Hopefully no need for another patch set?


Thanks,
Mike


Am I the only one who immediately sees the trivial C transformation
through which this function could lose a local variable and become 4
lines shorter?

And this function got two Reviewed-by tags...

Thanks,

    Ingo