Re: SRAT v1 support

From: xb
Date: Mon May 18 2009 - 07:19:47 EST


yes, could be simpler :-)

I just saw that Kurt Garloff from Suse has published 3 patches on kernel mailing list that fixes the SRAT v1 issue:
[PATCH 0/3]: Discard reserved PXM bits for SRAT v1
[PATCH 1/3]: Store SRAT revision
[PATCH 2/3]: x86-64: Handle SRAT v1 and v2 consistently

It looks OK for us.

Thanks.
Xavier


Yinghai Lu wrote:
On Fri, May 15, 2009 at 7:51 AM, xb <xavier.bru@xxxxxxxx> wrote:
Recent linux kernels suppose that the SRAT table is in rev 2 format (ACPI
3.0), but some BIOSes still provide SRAT table in rev 1.
The rev 2 of the SRAT extension mainly provides an extension of the
"proximity_domain" item from 8 bits to 32 bits, using a "reserved" field of
the structure.
When the "reserved" field is not null, linux finds a wrong proximity domain,
and numa initialization is wrong.
Following patch tests the SRAT revision to allow a correct initialization:

This patch tests the version of SRAT ACPI table to allow supporting SRAT rev
1 and SRAT rev 2.

diff -Nru linux-2.6.29-rc7-orig/arch/x86/kernel/acpi/boot.c
linux-2.6.29-rc7-tmp/arch/x86/kernel/acpi/boot.c
--- linux-2.6.29-rc7-orig/arch/x86/kernel/acpi/boot.c 2009-03-12
14:41:38.000000000 +0100
+++ linux-2.6.29-rc7-tmp/arch/x86/kernel/acpi/boot.c 2009-03-16
14:52:07.000000000 +0100
@@ -260,7 +260,8 @@
}

static int __init
-acpi_parse_lapic(struct acpi_subtable_header * header, const unsigned long
end)
+acpi_parse_lapic(const struct acpi_subtable_header * const header,
+ const unsigned long end, const int rev)

do we need to pass that rev all over around?

looks like we could use one srat_version or pxm_mask variable to get
the same result.

YH
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/