Re: [PATCH 6/8] x86/platform/uv: Decode UVsystab Info

From: Mike Travis
Date: Thu Sep 05 2019 - 10:47:54 EST

On 9/5/2019 7:16 AM, Greg KH wrote:
On Thu, Sep 05, 2019 at 08:02:58AM -0500, Mike Travis wrote:
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@xxxxxxx>
Reviewed-by: Steve Wahl <steve.wahl@xxxxxxx>
Reviewed-by: Dimitri Sivanich <dimitri.sivanich@xxxxxxx>
To: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
To: Ingo Molnar <mingo@xxxxxxxxxx>
To: H. Peter Anvin <hpa@xxxxxxxxx>
To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
To: Borislav Petkov <bp@xxxxxxxxx>
To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Cc: Dimitri Sivanich <dimitri.sivanich@xxxxxxx>
Cc: Russ Anderson <russ.anderson@xxxxxxx>
Cc: Hedi Berriche <hedi.berriche@xxxxxxx>
Cc: Steve Wahl <steve.wahl@xxxxxxx>
Cc: x86@xxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: stable@xxxxxxxxxxxxxxx
arch/x86/kernel/apic/x2apic_uv_x.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

If you are trying to get one of my automated "WTF: patch XXXX was
seriously submitted to be applied to the stable tree?" emails, you are
on track for it...

Please go read the documentation link I sent you last time and figure
out how you can justify any of this patch series for a stable kernel

Is it because it has fixes for new hardware? If so, then I'll quit submitting them to stable (we've had requests from distros for all updates be in the stable tree for acceptance). Otherwise I thought it does comply with:

" - To have the patch automatically included in the stable tree,
add the tag
Cc: stable@xxxxxxxxxxxxxxx
in the sign-off area. Once the patch is merged it will be applied
to the stable tree without anything else needing to be done by the
author or subsystem maintainer."

Or is there some other reason that I'm not understanding?

Also, nit:

--- 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)
+ /* 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;
@@ -1554,8 +1555,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);

Why isn't that function printing an error?

+ return rc;
+ }
+ /* Process UVsystab */
+ rc = decode_uv_systab();
+ if (rc < 0) {
+ pr_err("UV: UVsystab decode error:%d\n", rc);

Same here, have the function itself print the error, makes this type of
stuff much cleaner.

You're right this would be much cleaner. Mostly this was done because of the rarity of an error here, and the specifics (BIOS failures) usually cannot be dealt with by users. The system log is captured as part of the error and packaged with other fault details that are analyzed internally.

But I will make the changes you are suggesting. And thanks.

greg k-h