系列文章目录
第二十二章 QEMU系统仿真的机器创建分析实例
文章目录
- 系列文章目录
- 第二十二章 QEMU系统仿真的机器创建分析实例
- 前言
- 一、QEMU是什么?
- 二、QEMU系统仿真的机器创建分析实例
- 1.系统仿真的命令行参数
- 2. 解析机器的存储设备设置
- parse_numa_opts()
- parse_numa_node()
- parse_numa_distance()
- machine_set_cpu_numa_node()
- parse_numa_hmat_lb()
- parse_numa_hmat_cache()
- 3.调试输出
- 总结
前言
本文以 QEMU 8.2.2 为例,分析其作为系统仿真工具的工作过程,并为读者展示各种 QEMU 系统仿真的启动配置实例。
本文读者需要具备一定的 QEMU 系统仿真使用经验,并对 C 语言编程有一定了解。
一、QEMU是什么?
QEMU 是一个通用且开源的机器模拟器和虚拟机。
其官方主页是:https://www.qemu.org/
二、QEMU系统仿真的机器创建分析实例
1.系统仿真的命令行参数
QEMU 作为系统仿真工具,其入口代码在 system/main.c 文件中,初始化函数 qemu_init() 的实现在 system/vl.c 文件中。
前文完成创建目标机器的过程分析,本文将继续后续运行过程的分析,读者需要对 QEMU 系统启动过程的程序代码有所了解,相关内容可以参考《QEMU系统分析之启动篇》系列文章。
..\qemu\8.2.2-qkd\qemu-system-x86_64.exe -cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2" -M "q35,accel=whpx,smm=off" -object "memory-backend-ram,id=ram0,size=4G,prealloc=on,share=on,merge=off,dump=off" -object "memory-backend-ram,id=ram1,size=2G,prealloc=on,share=on,merge=off,dump=off" -numa "node,memdev=ram0,cpus=0,nodeid=0" -numa "node,memdev=ram1,cpus=1,nodeid=1" -smp "cpus=2" -m "6G" -audio "sdl,model=hda" -vga "std" -netdev "user,id=mynet0" -device "e1000,id=nic1,netdev=mynet0" -L "data" -qtest "unix:qtest-sock,server,nowait"
2. 解析机器的存储设备设置
这部分代码在 system/vl.c 文件中,实现如下:
int qemu_init(int argc, char **argv)
{
...
parse_numa_opts(current_machine);
...
}
前文分析了解析机器的存储设备设置的过程,本文将分析解析 NUMA 结点配置项的过程。
parse_numa_opts()
函数 parse_numa_opts() 代码如下:
static int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
{
NumaOptions *object = NULL;
MachineState *ms = MACHINE(opaque);
Error *err = NULL;
Visitor *v = opts_visitor_new(opts);
visit_type_NumaOptions(v, NULL, &object, errp);
visit_free(v);
if (!object) {
return -1;
}
/* Fix up legacy suffix-less format */
if ((object->type == NUMA_OPTIONS_TYPE_NODE) && object->u.node.has_mem) {
const char *mem_str = qemu_opt_get(opts, "mem");
int ret = qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem);
if (ret < 0) {
error_setg_errno(&err, -ret, "could not parse memory size '%s'",
mem_str);
}
}
if (!err) {
set_numa_options(ms, object, &err);
}
qapi_free_NumaOptions(object);
if (err) {
error_propagate(errp, err);
return -1;
}
return 0;
}
void parse_numa_opts(MachineState *ms)
{
qemu_opts_foreach(qemu_find_opts("numa"), parse_numa, ms, &error_fatal);
}
首先,调用函数 object_resolve_path_type() 获取存储设备的后端驱动,代码如下:
backend = object_resolve_path_type(ram_memdev_id,
TYPE_MEMORY_BACKEND, NULL);```
---
#### set_numa_options()
代码如下:
```c
void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp)
{
if (!ms->numa_state) {
error_setg(errp, "NUMA is not supported by this machine-type");
return;
}
switch (object->type) {
case NUMA_OPTIONS_TYPE_NODE:
parse_numa_node(ms, &object->u.node, errp);
break;
case NUMA_OPTIONS_TYPE_DIST:
parse_numa_distance(ms, &object->u.dist, errp);
break;
case NUMA_OPTIONS_TYPE_CPU:
if (!object->u.cpu.has_node_id) {
error_setg(errp, "Missing mandatory node-id property");
return;
}
if (!ms->numa_state->nodes[object->u.cpu.node_id].present) {
error_setg(errp, "Invalid node-id=%" PRId64 ", NUMA node must be "
"defined with -numa node,nodeid=ID before it's used with "
"-numa cpu,node-id=ID", object->u.cpu.node_id);
return;
}
machine_set_cpu_numa_node(ms,
qapi_NumaCpuOptions_base(&object->u.cpu),
errp);
break;
case NUMA_OPTIONS_TYPE_HMAT_LB:
if (!ms->numa_state->hmat_enabled) {
error_setg(errp, "ACPI Heterogeneous Memory Attribute Table "
"(HMAT) is disabled, enable it with -machine hmat=on "
"before using any of hmat specific options");
return;
}
parse_numa_hmat_lb(ms->numa_state, &object->u.hmat_lb, errp);
break;
case NUMA_OPTIONS_TYPE_HMAT_CACHE:
if (!ms->numa_state->hmat_enabled) {
error_setg(errp, "ACPI Heterogeneous Memory Attribute Table "
"(HMAT) is disabled, enable it with -machine hmat=on "
"before using any of hmat specific options");
return;
}
parse_numa_hmat_cache(ms, &object->u.hmat_cache, errp);
break;
default:
abort();
}
}
在函数 set_numa_options() 中,根据 NUMA 配置的类型分别调用相应的处理函数,代码如下:
parse_numa_node()
代码如下:
static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
Error **errp)
{
Error *err = NULL;
uint16_t nodenr;
uint16List *cpus = NULL;
MachineClass *mc = MACHINE_GET_CLASS(ms);
unsigned int max_cpus = ms->smp.max_cpus;
NodeInfo *numa_info = ms->numa_state->nodes;
if (node->has_nodeid) {
nodenr = node->nodeid;
} else {
nodenr = ms->numa_state->num_nodes;
}
if (nodenr >= MAX_NODES) {
error_setg(errp, "Max number of NUMA nodes reached: %"
PRIu16 "", nodenr);
return;
}
if (numa_info[nodenr].present) {
error_setg(errp, "Duplicate NUMA nodeid: %" PRIu16, nodenr);
return;
}
/*
* If not set the initiator, set it to MAX_NODES. And if
* HMAT is enabled and this node has no cpus, QEMU will raise error.
*/
numa_info[nodenr].initiator = MAX_NODES;
if (node->has_initiator) {
if (!ms->numa_state->hmat_enabled) {
error_setg(errp, "ACPI Heterogeneous Memory Attribute Table "
"(HMAT) is disabled, enable it with -machine hmat=on "
"before using any of hmat specific options");
return;
}
if (node->initiator >= MAX_NODES) {
error_report("The initiator id %" PRIu16 " expects an integer "
"between 0 and %d", node->initiator,
MAX_NODES - 1);
return;
}
numa_info[nodenr].initiator = node->initiator;
}
for (cpus = node->cpus; cpus; cpus = cpus->next) {
CpuInstanceProperties props;
if (cpus->value >= max_cpus) {
error_setg(errp,
"CPU index (%" PRIu16 ")"
" should be smaller than maxcpus (%d)",
cpus->value, max_cpus);
return;
}
props = mc->cpu_index_to_instance_props(ms, cpus->value);
props.node_id = nodenr;
props.has_node_id = true;
machine_set_cpu_numa_node(ms, &props, &err);
if (err) {
error_propagate(errp, err);
return;
}
}
have_memdevs = have_memdevs || node->memdev;
have_mem = have_mem || node->has_mem;
if ((node->has_mem && have_memdevs) || (node->memdev && have_mem)) {
error_setg(errp, "numa configuration should use either mem= or memdev=,"
"mixing both is not allowed");
return;
}
if (node->has_mem) {
if (!mc->numa_mem_supported) {
error_setg(errp, "Parameter -numa node,mem is not supported by this"
" machine type");
error_append_hint(errp, "Use -numa node,memdev instead\n");
return;
}
numa_info[nodenr].node_mem = node->mem;
if (!qtest_enabled()) {
warn_report("Parameter -numa node,mem is deprecated,"
" use -numa node,memdev instead");
}
}
if (node->memdev) {
Object *o;
o = object_resolve_path_type(node->memdev, TYPE_MEMORY_BACKEND, NULL);
if (!o) {
error_setg(errp, "memdev=%s is ambiguous", node->memdev);
return;
}
object_ref(o);
numa_info[nodenr].node_mem = object_property_get_uint(o, "size", NULL);
numa_info[nodenr].node_memdev = MEMORY_BACKEND(o);
}
numa_info[nodenr].present = true;
max_numa_nodeid = MAX(max_numa_nodeid, nodenr + 1);
ms->numa_state->num_nodes++;
}
parse_numa_distance()
代码如下:
static
void parse_numa_distance(MachineState *ms, NumaDistOptions *dist, Error **errp)
{
uint16_t src = dist->src;
uint16_t dst = dist->dst;
uint8_t val = dist->val;
NodeInfo *numa_info = ms->numa_state->nodes;
if (src >= MAX_NODES || dst >= MAX_NODES) {
error_setg(errp, "Parameter '%s' expects an integer between 0 and %d",
src >= MAX_NODES ? "src" : "dst", MAX_NODES - 1);
return;
}
if (!numa_info[src].present || !numa_info[dst].present) {
error_setg(errp, "Source/Destination NUMA node is missing. "
"Please use '-numa node' option to declare it first.");
return;
}
if (val < NUMA_DISTANCE_MIN) {
error_setg(errp, "NUMA distance (%" PRIu8 ") is invalid, "
"it shouldn't be less than %d.",
val, NUMA_DISTANCE_MIN);
return;
}
if (src == dst && val != NUMA_DISTANCE_MIN) {
error_setg(errp, "Local distance of node %d should be %d.",
src, NUMA_DISTANCE_MIN);
return;
}
numa_info[src].distance[dst] = val;
ms->numa_state->have_numa_distance = true;
}
machine_set_cpu_numa_node()
代码如下:
/**
* machine_set_cpu_numa_node:
* @machine: machine object to modify
* @props: specifies which cpu objects to assign to
* numa node specified by @props.node_id
* @errp: if an error occurs, a pointer to an area to store the error
*
* Associate NUMA node specified by @props.node_id with cpu slots that
* match socket/core/thread-ids specified by @props. It's recommended to use
* query-hotpluggable-cpus.props values to specify affected cpu slots,
* which would lead to exact 1:1 mapping of cpu slots to NUMA node.
*
* However for CLI convenience it's possible to pass in subset of properties,
* which would affect all cpu slots that match it.
* Ex for pc machine:
* -smp 4,cores=2,sockets=2 -numa node,nodeid=0 -numa node,nodeid=1 \
* -numa cpu,node-id=0,socket_id=0 \
* -numa cpu,node-id=1,socket_id=1
* will assign all child cores of socket 0 to node 0 and
* of socket 1 to node 1.
*
* On attempt of reassigning (already assigned) cpu slot to another NUMA node,
* return error.
* Empty subset is disallowed and function will return with error in this case.
*/
void machine_set_cpu_numa_node(MachineState *machine,
const CpuInstanceProperties *props, Error **errp)
{
MachineClass *mc = MACHINE_GET_CLASS(machine);
NodeInfo *numa_info = machine->numa_state->nodes;
bool match = false;
int i;
if (!mc->possible_cpu_arch_ids) {
error_setg(errp, "mapping of CPUs to NUMA node is not supported");
return;
}
/* disabling node mapping is not supported, forbid it */
assert(props->has_node_id);
/* force board to initialize possible_cpus if it hasn't been done yet */
mc->possible_cpu_arch_ids(machine);
for (i = 0; i < machine->possible_cpus->len; i++) {
CPUArchId *slot = &machine->possible_cpus->cpus[i];
/* reject unsupported by board properties */
if (props->has_thread_id && !slot->props.has_thread_id) {
error_setg(errp, "thread-id is not supported");
return;
}
if (props->has_core_id && !slot->props.has_core_id) {
error_setg(errp, "core-id is not supported");
return;
}
if (props->has_cluster_id && !slot->props.has_cluster_id) {
error_setg(errp, "cluster-id is not supported");
return;
}
if (props->has_socket_id && !slot->props.has_socket_id) {
error_setg(errp, "socket-id is not supported");
return;
}
if (props->has_die_id && !slot->props.has_die_id) {
error_setg(errp, "die-id is not supported");
return;
}
/* skip slots with explicit mismatch */
if (props->has_thread_id && props->thread_id != slot->props.thread_id) {
continue;
}
if (props->has_core_id && props->core_id != slot->props.core_id) {
continue;
}
if (props->has_cluster_id &&
props->cluster_id != slot->props.cluster_id) {
continue;
}
if (props->has_die_id && props->die_id != slot->props.die_id) {
continue;
}
if (props->has_socket_id && props->socket_id != slot->props.socket_id) {
continue;
}
/* reject assignment if slot is already assigned, for compatibility
* of legacy cpu_index mapping with SPAPR core based mapping do not
* error out if cpu thread and matched core have the same node-id */
if (slot->props.has_node_id &&
slot->props.node_id != props->node_id) {
error_setg(errp, "CPU is already assigned to node-id: %" PRId64,
slot->props.node_id);
return;
}
/* assign slot to node as it's matched '-numa cpu' key */
match = true;
slot->props.node_id = props->node_id;
slot->props.has_node_id = props->has_node_id;
if (machine->numa_state->hmat_enabled) {
if ((numa_info[props->node_id].initiator < MAX_NODES) &&
(props->node_id != numa_info[props->node_id].initiator)) {
error_setg(errp, "The initiator of CPU NUMA node %" PRId64
" should be itself (got %" PRIu16 ")",
props->node_id, numa_info[props->node_id].initiator);
return;
}
numa_info[props->node_id].has_cpu = true;
numa_info[props->node_id].initiator = props->node_id;
}
}
if (!match) {
error_setg(errp, "no match found");
}
}
static void machine_get_smp(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
MachineState *ms = MACHINE(obj);
SMPConfiguration *config = &(SMPConfiguration){
.has_cpus = true, .cpus = ms->smp.cpus,
.has_drawers = true, .drawers = ms->smp.drawers,
.has_books = true, .books = ms->smp.books,
.has_sockets = true, .sockets = ms->smp.sockets,
.has_dies = true, .dies = ms->smp.dies,
.has_clusters = true, .clusters = ms->smp.clusters,
.has_cores = true, .cores = ms->smp.cores,
.has_threads = true, .threads = ms->smp.threads,
.has_maxcpus = true, .maxcpus = ms->smp.max_cpus,
};
if (!visit_type_SMPConfiguration(v, name, &config, &error_abort)) {
return;
}
}
parse_numa_hmat_lb()
代码如下:
void parse_numa_hmat_lb(NumaState *numa_state, NumaHmatLBOptions *node,
Error **errp)
{
int i, first_bit, last_bit;
uint64_t max_entry, temp_base, bitmap_copy;
NodeInfo *numa_info = numa_state->nodes;
HMAT_LB_Info *hmat_lb =
numa_state->hmat_lb[node->hierarchy][node->data_type];
HMAT_LB_Data lb_data = {};
HMAT_LB_Data *lb_temp;
/* Error checking */
if (node->initiator > numa_state->num_nodes) {
error_setg(errp, "Invalid initiator=%d, it should be less than %d",
node->initiator, numa_state->num_nodes);
return;
}
if (node->target > numa_state->num_nodes) {
error_setg(errp, "Invalid target=%d, it should be less than %d",
node->target, numa_state->num_nodes);
return;
}
if (!numa_info[node->initiator].has_cpu) {
error_setg(errp, "Invalid initiator=%d, it isn't an "
"initiator proximity domain", node->initiator);
return;
}
if (!numa_info[node->target].present) {
error_setg(errp, "The target=%d should point to an existing node",
node->target);
return;
}
if (!hmat_lb) {
hmat_lb = g_malloc0(sizeof(*hmat_lb));
numa_state->hmat_lb[node->hierarchy][node->data_type] = hmat_lb;
hmat_lb->list = g_array_new(false, true, sizeof(HMAT_LB_Data));
}
hmat_lb->hierarchy = node->hierarchy;
hmat_lb->data_type = node->data_type;
lb_data.initiator = node->initiator;
lb_data.target = node->target;
if (node->data_type <= HMATLB_DATA_TYPE_WRITE_LATENCY) {
/* Input latency data */
if (!node->has_latency) {
error_setg(errp, "Missing 'latency' option");
return;
}
if (node->has_bandwidth) {
error_setg(errp, "Invalid option 'bandwidth' since "
"the data type is latency");
return;
}
/* Detect duplicate configuration */
for (i = 0; i < hmat_lb->list->len; i++) {
lb_temp = &g_array_index(hmat_lb->list, HMAT_LB_Data, i);
if (node->initiator == lb_temp->initiator &&
node->target == lb_temp->target) {
error_setg(errp, "Duplicate configuration of the latency for "
"initiator=%d and target=%d", node->initiator,
node->target);
return;
}
}
hmat_lb->base = hmat_lb->base ? hmat_lb->base : UINT64_MAX;
if (node->latency) {
/* Calculate the temporary base and compressed latency */
max_entry = node->latency;
temp_base = 1;
while (QEMU_IS_ALIGNED(max_entry, 10)) {
max_entry /= 10;
temp_base *= 10;
}
/* Calculate the max compressed latency */
temp_base = MIN(hmat_lb->base, temp_base);
max_entry = node->latency / hmat_lb->base;
max_entry = MAX(hmat_lb->range_bitmap, max_entry);
/*
* For latency hmat_lb->range_bitmap record the max compressed
* latency which should be less than 0xFFFF (UINT16_MAX)
*/
if (max_entry >= UINT16_MAX) {
error_setg(errp, "Latency %" PRIu64 " between initiator=%d and "
"target=%d should not differ from previously entered "
"min or max values on more than %d", node->latency,
node->initiator, node->target, UINT16_MAX - 1);
return;
} else {
hmat_lb->base = temp_base;
hmat_lb->range_bitmap = max_entry;
}
/*
* Set lb_info_provided bit 0 as 1,
* latency information is provided
*/
numa_info[node->target].lb_info_provided |= BIT(0);
}
lb_data.data = node->latency;
} else if (node->data_type >= HMATLB_DATA_TYPE_ACCESS_BANDWIDTH) {
/* Input bandwidth data */
if (!node->has_bandwidth) {
error_setg(errp, "Missing 'bandwidth' option");
return;
}
if (node->has_latency) {
error_setg(errp, "Invalid option 'latency' since "
"the data type is bandwidth");
return;
}
if (!QEMU_IS_ALIGNED(node->bandwidth, MiB)) {
error_setg(errp, "Bandwidth %" PRIu64 " between initiator=%d and "
"target=%d should be 1MB aligned", node->bandwidth,
node->initiator, node->target);
return;
}
/* Detect duplicate configuration */
for (i = 0; i < hmat_lb->list->len; i++) {
lb_temp = &g_array_index(hmat_lb->list, HMAT_LB_Data, i);
if (node->initiator == lb_temp->initiator &&
node->target == lb_temp->target) {
error_setg(errp, "Duplicate configuration of the bandwidth for "
"initiator=%d and target=%d", node->initiator,
node->target);
return;
}
}
hmat_lb->base = hmat_lb->base ? hmat_lb->base : 1;
if (node->bandwidth) {
/* Keep bitmap unchanged when bandwidth out of range */
bitmap_copy = hmat_lb->range_bitmap;
bitmap_copy |= node->bandwidth;
first_bit = ctz64(bitmap_copy);
temp_base = UINT64_C(1) << first_bit;
max_entry = node->bandwidth / temp_base;
last_bit = 64 - clz64(bitmap_copy);
/*
* For bandwidth, first_bit record the base unit of bandwidth bits,
* last_bit record the last bit of the max bandwidth. The max
* compressed bandwidth should be less than 0xFFFF (UINT16_MAX)
*/
if ((last_bit - first_bit) > UINT16_BITS ||
max_entry >= UINT16_MAX) {
error_setg(errp, "Bandwidth %" PRIu64 " between initiator=%d "
"and target=%d should not differ from previously "
"entered values on more than %d", node->bandwidth,
node->initiator, node->target, UINT16_MAX - 1);
return;
} else {
hmat_lb->base = temp_base;
hmat_lb->range_bitmap = bitmap_copy;
}
/*
* Set lb_info_provided bit 1 as 1,
* bandwidth information is provided
*/
numa_info[node->target].lb_info_provided |= BIT(1);
}
lb_data.data = node->bandwidth;
} else {
assert(0);
}
g_array_append_val(hmat_lb->list, lb_data);
}
parse_numa_hmat_cache()
代码如下:
void parse_numa_hmat_cache(MachineState *ms, NumaHmatCacheOptions *node,
Error **errp)
{
int nb_numa_nodes = ms->numa_state->num_nodes;
NodeInfo *numa_info = ms->numa_state->nodes;
NumaHmatCacheOptions *hmat_cache = NULL;
if (node->node_id >= nb_numa_nodes) {
error_setg(errp, "Invalid node-id=%" PRIu32 ", it should be less "
"than %d", node->node_id, nb_numa_nodes);
return;
}
if (numa_info[node->node_id].lb_info_provided != (BIT(0) | BIT(1))) {
error_setg(errp, "The latency and bandwidth information of "
"node-id=%" PRIu32 " should be provided before memory side "
"cache attributes", node->node_id);
return;
}
if (node->level < 1 || node->level >= HMAT_LB_LEVELS) {
error_setg(errp, "Invalid level=%" PRIu8 ", it should be larger than 0 "
"and less than or equal to %d", node->level,
HMAT_LB_LEVELS - 1);
return;
}
assert(node->associativity < HMAT_CACHE_ASSOCIATIVITY__MAX);
assert(node->policy < HMAT_CACHE_WRITE_POLICY__MAX);
if (ms->numa_state->hmat_cache[node->node_id][node->level]) {
error_setg(errp, "Duplicate configuration of the side cache for "
"node-id=%" PRIu32 " and level=%" PRIu8,
node->node_id, node->level);
return;
}
if ((node->level > 1) &&
ms->numa_state->hmat_cache[node->node_id][node->level - 1] == NULL) {
error_setg(errp, "Cache level=%u shall be defined first",
node->level - 1);
return;
}
if ((node->level > 1) &&
(node->size <=
ms->numa_state->hmat_cache[node->node_id][node->level - 1]->size)) {
error_setg(errp, "Invalid size=%" PRIu64 ", the size of level=%" PRIu8
" should be larger than the size(%" PRIu64 ") of "
"level=%u", node->size, node->level,
ms->numa_state->hmat_cache[node->node_id]
[node->level - 1]->size,
node->level - 1);
return;
}
if ((node->level < HMAT_LB_LEVELS - 1) &&
ms->numa_state->hmat_cache[node->node_id][node->level + 1] &&
(node->size >=
ms->numa_state->hmat_cache[node->node_id][node->level + 1]->size)) {
error_setg(errp, "Invalid size=%" PRIu64 ", the size of level=%" PRIu8
" should be less than the size(%" PRIu64 ") of "
"level=%u", node->size, node->level,
ms->numa_state->hmat_cache[node->node_id]
[node->level + 1]->size,
node->level + 1);
return;
}
hmat_cache = g_malloc0(sizeof(*hmat_cache));
memcpy(hmat_cache, node, sizeof(*hmat_cache));
ms->numa_state->hmat_cache[node->node_id][node->level] = hmat_cache;
}
3.调试输出
首先,添加跟踪调试信息,修改后的代码如下:
int qemu_init(int argc, char **argv)
{
...
huedbg_flag = 1;
HUEDBG("\n");
parse_numa_opts(current_machine);
HUEDBG("\n");
huedbg_flag = 0;
...
}
运行后,输出信息如下:
[3364]../system/vl.c/qemu_init(3870):
[3364]../qom/object.c/type_table_lookup(103):lookup type(machine) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/type_table_lookup(103):lookup type(machine) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/type_table_lookup(103):lookup type(machine) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/type_table_lookup(103):lookup type(x86-machine) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/type_table_lookup(103):lookup type(machine) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-socket) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-socket) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(pc-q35-8.2-machine) has parent(generic-pc-machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(pc-q35-8.2-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(generic-pc-machine) has parent(x86-machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(generic-pc-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(x86-machine) has parent(machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(x86-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(machine) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(cfi.pflash01) has parent(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(cfi.pflash01) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(sys-bus-device) has parent(device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(sys-bus-device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(device) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(cfi.pflash01) has parent(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(cfi.pflash01) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(sys-bus-device) has parent(device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(sys-bus-device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(device) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(bus)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(System) has parent(bus)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(System) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(bus) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(bus) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(qtest) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(qtest) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/type_table_lookup(103):lookup type(memory-backend) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/type_table_lookup(103):lookup type(memory-backend) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(28):<<<deep>>>=[9]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(30):node_mem=[0000000100000000]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(31):node_memdev=[00000218aeb1cfd0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(32):present=[1]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(33):has_cpu=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(34):lb_info_provided=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(35):initiator=[128]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(36):distance=[00000218aeb45a3e]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[000]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[001]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[002]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[003]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[004]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[005]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[006]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[007]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[008]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[009]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[010]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[011]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[012]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[013]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[014]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[015]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[016]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[017]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[018]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[019]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[020]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[021]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[022]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[023]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[024]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[025]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[026]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[027]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[028]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[029]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[030]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[031]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[032]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[033]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[034]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[035]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[036]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[037]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[038]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[039]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[040]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[041]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[042]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[043]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[044]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[045]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[046]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[047]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[048]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[049]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[050]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[051]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[052]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[053]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[054]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[055]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[056]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[057]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[058]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[059]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[060]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[061]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[062]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[063]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[064]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[065]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[066]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[067]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[068]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[069]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[070]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[071]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[072]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[073]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[074]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[075]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[076]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[077]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[078]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[079]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[080]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[081]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[082]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[083]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[084]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[085]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[086]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[087]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[088]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[089]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[090]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[091]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[092]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[093]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[094]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[095]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[096]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[097]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[098]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[099]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[100]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[101]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[102]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[103]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[104]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[105]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[106]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[107]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[108]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[109]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[110]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[111]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[112]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[113]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[114]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[115]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[116]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[117]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[118]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[119]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[120]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[121]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[122]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[123]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[124]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[125]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[126]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[127]=[0]
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-socket) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-socket) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(chardev)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(pc-q35-8.2-machine) has parent(generic-pc-machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(pc-q35-8.2-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(generic-pc-machine) has parent(x86-machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(generic-pc-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(machine)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(x86-machine) has parent(machine)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(x86-machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(machine) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(machine) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(cfi.pflash01) has parent(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(cfi.pflash01) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(sys-bus-device) has parent(device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(sys-bus-device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(device) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(cfi.pflash01) has parent(sys-bus-device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(cfi.pflash01) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(device)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(sys-bus-device) has parent(device)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(sys-bus-device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(device) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(device) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(bus)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(System) has parent(bus)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(System) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(bus) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(bus) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(qtest) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(qtest) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/type_table_lookup(103):lookup type(memory-backend) in hash table
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-region) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-region) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend-ram) has parent(memory-backend)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend-ram) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(194):parent_type(object)
[3364]../qom/object.c/object_class_get_parent(1138):objclass(memory-backend) has parent(object)
[3364]../qom/object.c/object_class_get_parent(1141):objclass(memory-backend) return
[3364]../qom/object.c/object_class_get_parent(1130):enter
[3364]../qom/object.c/type_get_parent(196):no parent_type
[3364]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(28):<<<deep>>>=[9]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(30):node_mem=[0000000080000000]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(31):node_memdev=[00000218aeb1a5d0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(32):present=[1]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(33):has_cpu=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(34):lb_info_provided=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(35):initiator=[128]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(36):distance=[00000218aeb45ad6]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[000]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[001]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[002]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[003]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[004]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[005]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[006]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[007]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[008]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[009]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[010]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[011]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[012]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[013]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[014]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[015]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[016]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[017]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[018]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[019]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[020]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[021]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[022]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[023]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[024]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[025]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[026]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[027]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[028]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[029]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[030]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[031]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[032]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[033]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[034]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[035]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[036]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[037]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[038]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[039]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[040]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[041]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[042]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[043]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[044]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[045]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[046]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[047]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[048]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[049]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[050]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[051]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[052]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[053]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[054]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[055]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[056]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[057]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[058]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[059]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[060]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[061]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[062]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[063]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[064]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[065]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[066]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[067]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[068]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[069]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[070]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[071]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[072]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[073]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[074]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[075]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[076]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[077]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[078]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[079]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[080]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[081]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[082]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[083]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[084]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[085]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[086]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[087]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[088]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[089]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[090]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[091]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[092]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[093]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[094]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[095]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[096]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[097]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[098]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[099]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[100]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[101]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[102]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[103]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[104]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[105]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[106]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[107]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[108]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[109]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[110]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[111]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[112]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[113]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[114]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[115]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[116]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[117]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[118]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[119]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[120]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[121]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[122]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[123]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[124]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[125]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[126]=[0]
[3364]../util/huedbg-numa.c/huedbg_dump_NodeInfo(38):distance[127]=[0]
[3364]../system/vl.c/qemu_init(3872):
几个需要关注的地方:
[22148]../util/huedbg-numa.c/huedbg_dump_NodeInfo(31):node_mem=[0000000100000000]
...
[22148]../util/huedbg-numa.c/huedbg_dump_NodeInfo(31):node_mem=[0000000100000000]
分别对应命令行参数中 -numa 中 memdev 对应的 ram0 和 ram1 的存储尺寸。
总结
以上分析了系统初始化过程中解析 NUMA 结点配置项的过程。