3484d79813
For NUMA emulation, our SLIT should represent the true NUMA topology of the system but our proximity domain to node ID mapping needs to reflect the emulated state. When NUMA emulation has successfully setup fake nodes on the system, a new function, acpi_fake_nodes() is called. This function determines the proximity domain (_PXM) for each true node found on the system. It then finds which emulated nodes have been allocated on this true node as determined by its starting address. The node ID to PXM mapping is changed so that each fake node ID points to the PXM of the true node that it is located on. If the machine failed to register a SLIT, then we assume there is no special requirement for emulated node affinity so we use the default LOCAL_DISTANCE, which is newly exported to this code, as our measurement if the emulated nodes appear in the same PXM. Otherwise, we use REMOTE_DISTANCE. PXM_INVAL and NID_INVAL are also exported to the ACPI header file so that we can compare node_to_pxm() results in generic code (in this case, the SRAT code). Cc: Len Brown <lenb@kernel.org> Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
21 lines
522 B
C
21 lines
522 B
C
#ifndef __ACPI_NUMA_H
|
|
#define __ACPI_NUMA_H
|
|
|
|
#ifdef CONFIG_ACPI_NUMA
|
|
#include <linux/kernel.h>
|
|
|
|
/* Proximity bitmap length */
|
|
#if MAX_NUMNODES > 256
|
|
#define MAX_PXM_DOMAINS MAX_NUMNODES
|
|
#else
|
|
#define MAX_PXM_DOMAINS (256) /* Old pxm spec is defined 8 bit */
|
|
#endif
|
|
|
|
extern int pxm_to_node(int);
|
|
extern int node_to_pxm(int);
|
|
extern void __acpi_map_pxm_to_node(int, int);
|
|
extern int acpi_map_pxm_to_node(int);
|
|
extern void __cpuinit acpi_unmap_pxm_to_node(int);
|
|
|
|
#endif /* CONFIG_ACPI_NUMA */
|
|
#endif /* __ACP_NUMA_H */
|