svn commit: r250339 - head/sys/x86/acpica
Attilio Rao
attilio at FreeBSD.org
Tue May 7 22:49:57 UTC 2013
Author: attilio
Date: Tue May 7 22:49:56 2013
New Revision: 250339
URL: http://svnweb.freebsd.org/changeset/base/250339
Log:
Add functions to do ACPI System Locality Information Table parsing
and printing at boot.
For reference on table informations and purposes please review ACPI specs.
Sponsored by: EMC / Isilon storage division
Obtained from: jeff
Reviewed by: jhb (earlier version)
Modified:
head/sys/x86/acpica/srat.c
Modified: head/sys/x86/acpica/srat.c
==============================================================================
--- head/sys/x86/acpica/srat.c Tue May 7 22:46:24 2013 (r250338)
+++ head/sys/x86/acpica/srat.c Tue May 7 22:49:56 2013 (r250339)
@@ -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-head
mailing list