|
@@ -42,15 +42,25 @@ static __init inline int srat_disabled(void)
|
|
|
return acpi_numa < 0;
|
|
|
}
|
|
|
|
|
|
-/* Callback for SLIT parsing */
|
|
|
+/*
|
|
|
+ * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for
|
|
|
+ * I/O localities since SRAT does not list them. I/O localities are
|
|
|
+ * not supported at this point.
|
|
|
+ */
|
|
|
void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
|
|
|
{
|
|
|
int i, j;
|
|
|
|
|
|
- for (i = 0; i < slit->locality_count; i++)
|
|
|
- for (j = 0; j < slit->locality_count; j++)
|
|
|
+ for (i = 0; i < slit->locality_count; i++) {
|
|
|
+ if (pxm_to_node(i) == NUMA_NO_NODE)
|
|
|
+ continue;
|
|
|
+ for (j = 0; j < slit->locality_count; j++) {
|
|
|
+ if (pxm_to_node(j) == NUMA_NO_NODE)
|
|
|
+ continue;
|
|
|
numa_set_distance(pxm_to_node(i), pxm_to_node(j),
|
|
|
slit->entry[slit->locality_count * i + j]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Callback for Proximity Domain -> x2APIC mapping */
|