for_each_of_cpu_node(np) {
r = of_property_read_u32(np, "numa-node-id", &nid); if (r) continue;
pr_debug("CPU on %u\n", nid); if (nid >= MAX_NUMNODES)
pr_warn("Node id %u exceeds maximum value\n", nid); else
node_set(nid, numa_nodes_parsed);
}
}
staticint __init of_numa_parse_memory_nodes(void)
{ struct device_node *np = NULL; struct resource rsrc;
u32 nid; int i, r = -EINVAL;
for_each_node_by_type(np, "memory") {
r = of_property_read_u32(np, "numa-node-id", &nid); if (r == -EINVAL) /* *propertydoesn'texistif-EINVAL,continue *lookingformorememorynodeswith *"numa-node-id"property
*/ continue;
if (nid >= MAX_NUMNODES) {
pr_warn("Node id %u exceeds maximum value\n", nid);
r = -EINVAL;
}
for (i = 0; !r && !of_address_to_resource(np, i, &rsrc); i++) {
r = numa_add_memblk(nid, rsrc.start, rsrc.end + 1); if (!r)
node_set(nid, numa_nodes_parsed);
}
if (!i || r) {
of_node_put(np);
pr_err("bad property in memory node\n"); return r ? : -EINVAL;
}
}
return r;
}
staticint __init of_numa_parse_distance_map_v1(struct device_node *map)
{ const __be32 *matrix; int entry_count; int i;
pr_info("parsing numa-distance-map-v1\n");
matrix = of_get_property(map, "distance-matrix", NULL); if (!matrix) {
pr_err("No distance-matrix property in distance-map\n"); return -EINVAL;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.