/* Conform to ACPI 2.0 SLIT distance definitions */
#define LOCAL_DISTANCE 10
#define REMOTE_DISTANCE 20
在kernel中首先通过numa_alloc_distance来初始化numa_distance数组,如果是本地node,则默认初始化为10,如果是远端node,则默认初始化为20.
static int __init numa_alloc_distance(void)
{
/* fill with the default distances */
for (i = 0; i < numa_distance_cnt; i++)
for (j = 0; j < numa_distance_cnt; j++)
numa_distance[i * numa_distance_cnt + j] = i == j ?
LOCAL_DISTANCE : REMOTE_DISTANCE;
}
如果在dtb中有如下节点
distance-map {
compatible = "numa-distance";
distance-matrix = <0 1 5>, <2 3 5>;
};
则会调用numa_set_distance 来设定numa_distance 数组,也就是说numa_distance中没有初始化的本地node的distance是10,远端node的distance是20.这也就是distance-matrix 中沒有設定node的默認值.
void __init numa_set_distance(int from, int to, int distance)
{
numa_distance[from * numa_distance_cnt + to] = distance;
}
#define LOCAL_DISTANCE 10
#define REMOTE_DISTANCE 20
在kernel中首先通过numa_alloc_distance来初始化numa_distance数组,如果是本地node,则默认初始化为10,如果是远端node,则默认初始化为20.
static int __init numa_alloc_distance(void)
{
/* fill with the default distances */
for (i = 0; i < numa_distance_cnt; i++)
for (j = 0; j < numa_distance_cnt; j++)
numa_distance[i * numa_distance_cnt + j] = i == j ?
LOCAL_DISTANCE : REMOTE_DISTANCE;
}
如果在dtb中有如下节点
distance-map {
compatible = "numa-distance";
distance-matrix = <0 1 5>, <2 3 5>;
};
则会调用numa_set_distance 来设定numa_distance 数组,也就是说numa_distance中没有初始化的本地node的distance是10,远端node的distance是20.这也就是distance-matrix 中沒有設定node的默認值.
void __init numa_set_distance(int from, int to, int distance)
{
numa_distance[from * numa_distance_cnt + to] = distance;
}