Jonathan A. Kollasch (jakllsch@kollasch.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10912
-gerrit
commit 86e0efc1f913d54692a1ca668e7a4cbf909670fa Author: Jonathan A. Kollasch jakllsch@kollasch.net Date: Mon Jul 13 21:03:10 2015 -0500
AMD K8: Avoid duplicate variables in SSDT on multisocket systems
Related-to: I3175c8b29e94a27a2db6b11f8fc9e1d91bde11f9 (ACPI: Fix corrupt SSDT table on multiprocessor AMD Family 10h systems)
Change-Id: I0b5f265278d90cbaeddc6fc4432933856050f784 Signed-off-by: Jonathan A. Kollasch jakllsch@kollasch.net --- src/northbridge/amd/amdk8/acpi.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/src/northbridge/amd/amdk8/acpi.c b/src/northbridge/amd/amdk8/acpi.c index 10228cf..ce49b90 100644 --- a/src/northbridge/amd/amdk8/acpi.c +++ b/src/northbridge/amd/amdk8/acpi.c @@ -282,6 +282,17 @@ static void k8acpi_write_pci_data(int dlen, const char *name, int offset) {
void k8acpi_write_vars(device_t device) { + /* + * If more than one physical CPU is installed k8acpi_write_vars() + * is called more than once. If we don't prevent it, a SSDT table + * with duplicate variables will cause some ACPI parsers to be + * confused enough to fail. + */ + static uint8_t ssdt_generated = 0; + if (ssdt_generated) + return; + ssdt_generated = 1; + msr_t msr; char pscope[] = "\_SB.PCI0";