# HG changeset patch # User cegger@powermacg5.local # Date 1258980370 -3600 x86 NUMA support diff -r e76ff6390227 -r 516bd9c56a91 sys/arch/amd64/amd64/mainbus.c --- a/sys/arch/amd64/amd64/mainbus.c +++ b/sys/arch/amd64/amd64/mainbus.c @@ -61,6 +61,8 @@ __KERNEL_RCSID(0, "$NetBSD: mainbus.c,v #if NACPICA > 0 #include +#include +#include #endif #if NIPMI > 0 @@ -155,6 +157,7 @@ mainbus_attach(device_t parent, device_t #endif #if NACPICA > 0 int acpi_present = 0; + int rc; #endif #ifdef MPBIOS int mpbios_present = 0; @@ -199,8 +202,30 @@ mainbus_attach(device_t parent, device_t * Building the interrupt routing structures can only * be done later (via a callback). */ - if (acpi_present) + if (acpi_present) { mpacpi_active = mpacpi_scan_apics(self, &numcpus); + if (!acpisrat_exist()) { + aprint_error_dev(self, "ACPI SRAT table not present\n"); + } else { + if ((rc = acpisrat_init()) != 0) + aprint_error_dev(self, + "ACPI SRAT initialization failed, rc: %i\n", + rc); + else + acpisrat_dump(); + } + + if (!acpislit_exist()) { + aprint_error_dev(self, "ACPI SLIT table not present\n"); + } else { + if ((rc = acpislit_init()) != 0) + aprint_error_dev(self, + "ACPI SLIT initialization failed, rc: %i\n", + rc); + else + acpislit_dump(); + } + } #endif if (!mpacpi_active) { diff -r e76ff6390227 -r 516bd9c56a91 sys/arch/i386/i386/mainbus.c --- a/sys/arch/i386/i386/mainbus.c +++ b/sys/arch/i386/i386/mainbus.c @@ -75,6 +75,8 @@ __KERNEL_RCSID(0, "$NetBSD: mainbus.c,v #if NACPICA > 0 #include +#include +#include #endif #if NMCA > 0 @@ -219,6 +221,9 @@ mainbus_attach(device_t parent, device_t #if defined(PCI_BUS_FIXUP) int pci_maxbus = 0; #endif +#if NACPICA > 0 + int rc; +#endif int numcpus = 0; sc->sc_dev = self; @@ -257,8 +262,30 @@ mainbus_attach(device_t parent, device_t * Building the interrupt routing structures can only * be done later (via a callback). */ - if (sc->sc_acpi_present) + if (sc->sc_acpi_present) { sc->sc_mpacpi_active = mpacpi_scan_apics(self, &numcpus) != 0; + if (!acpisrat_exist()) { + aprint_error_dev(self, "ACPI SRAT table not present\n"); + } else { + if ((rc = acpisrat_init()) != 0) + aprint_error_dev(self, + "ACPI SRAT initialization failed, rc: %i\n", + rc); + else + acpisrat_dump(); + } + + if (!acpislit_exist()) { + aprint_error_dev(self, "ACPI SLIT table not present\n"); + } else { + if ((rc = acpislit_init()) != 0) + aprint_error_dev(self, + "ACPI SLIT initialization failed, rc: %i\n", + rc); + else + acpislit_dump(); + } + } #endif if (!sc->sc_mpacpi_active) { diff -r e76ff6390227 -r 516bd9c56a91 sys/arch/xen/x86/mainbus.c --- a/sys/arch/xen/x86/mainbus.c +++ b/sys/arch/xen/x86/mainbus.c @@ -66,6 +66,8 @@ __KERNEL_RCSID(0, "$NetBSD: mainbus.c,v #include #if NACPICA > 0 #include +#include +#include #include #include #endif /* NACPICA > 0 */ @@ -137,6 +139,9 @@ mainbus_attach(device_t parent, device_t union mainbus_attach_args mba; #if defined(DOM0OPS) int numcpus = 0; +#if NACPICA > 0 + int rc; +#endif #ifdef MPBIOS int mpbios_present = 0; #endif @@ -170,8 +175,32 @@ mainbus_attach(device_t parent, device_t #endif /* PCI_BUS_FIXUP */ #if NACPICA > 0 acpi_present = acpi_probe(); - if (acpi_present) + if (acpi_present) { mpacpi_active = mpacpi_scan_apics(self, &numcpus); + if (!acpisrat_exist()) { + aprint_error_dev(self, + "ACPI SRAT table not present\n"); + } else { + if ((rc = acpisrat_init()) != 0) + aprint_error_dev(self, + "ACPI SRAT initialization failed, rc: %i\n", + rc); + else + acpisrat_dump(); + } + + if (!acpislit_exist()) { + aprint_error_dev(self, + "ACPI SLIT table not present\n"); + } else { + if ((rc = acpislit_init()) != 0) + aprint_error_dev(self, + "ACPI SLIT initialization failed, rc: %i\n", + rc); + else + acpislit_dump(); + } + } if (!mpacpi_active) #endif {