svn commit: r250260 - user/attilio/jeff-numa/sys/x86/acpica
Attilio Rao
attilio at FreeBSD.org
Sat May 4 23:33:55 UTC 2013
Author: attilio
Date: Sat May 4 23:33:54 2013
New Revision: 250260
URL: http://svnweb.freebsd.org/changeset/base/250260
Log:
Add code to correctly parse and display ACPI SLIT
(System Locality Information Table).
Sponsored by: EMC / Isilon storage division
Obtained from: jeff
Modified:
user/attilio/jeff-numa/sys/x86/acpica/srat.c
Modified: user/attilio/jeff-numa/sys/x86/acpica/srat.c
==============================================================================
--- user/attilio/jeff-numa/sys/x86/acpica/srat.c Sat May 4 22:50:15 2013 (r250259)
+++ user/attilio/jeff-numa/sys/x86/acpica/srat.c Sat May 4 23:33:54 2013 (r250260)
@@ -331,6 +331,48 @@ srat_walk_table(acpi_subtable_handler *h
acpi_walk_subtables(srat + 1, (char *)srat + srat->Header.Length,
handler, arg);
}
+
+static void
+acpi_handle_slit(ACPI_TABLE_SLIT *slit)
+{
+ UINT64 i, j;
+
+ printf("ACPI System Locality Information Table: %ju localities\n",
+ (uintmax_t)slit->LocalityCount);
+ printf(" ");
+ for (i = 0; i < slit->LocalityCount; i++)
+ printf(" %3ju", (uintmax_t)i);
+ printf("\n +");
+ for (i = 0; i < slit->LocalityCount; i++)
+ printf("----");
+ printf("\n");
+ for (i = 0; i < slit->LocalityCount; i++) {
+ printf(" %3ju |", (uintmax_t)i);
+ for (j = 0; j < slit->LocalityCount; j++)
+ printf(" %3u",
+ slit->Entry[i * slit->LocalityCount + j]);
+ printf("\n");
+ }
+}
+
+static void
+parse_slit(void *arg __unused)
+{
+ ACPI_TABLE_SLIT *slit;
+ vm_paddr_t slit_physaddr;
+
+ if (resource_disabled("slit", 0))
+ return;
+
+ slit_physaddr = acpi_find_table(ACPI_SIG_SLIT);
+ if (slit_physaddr == 0)
+ return;
+ slit = acpi_map_table(slit_physaddr, ACPI_SIG_SLIT);
+ acpi_handle_slit(slit);
+ acpi_unmap_table(slit);
+}
+
+SYSINIT(parse_slit, SI_SUB_VM - 1, SI_ORDER_SECOND, parse_slit, NULL);
/*
* Setup per-CPU ACPI IDs.
More information about the svn-src-user
mailing list