On 2016/4/22 21:26, Andrew Jones wrote: >> + core->flags = cpu_to_le32(1); >> > + } >> > + g_free(cpu_node); >> > + >> > + mem_base = guest_info->memmap[VIRT_MEM].base; >> > + for (i = 0; i < nb_numa_nodes; ++i) { >> > + mem_len = numa_info[i].node_mem; >> > + numamem = acpi_data_push(table_data, sizeof *numamem); >> > + numamem->type = ACPI_SRAT_MEMORY; >> > + numamem->length = sizeof(*numamem); >> > + memset(numamem->proximity, 0, 4); >> > + numamem->proximity[0] = i; > This is weird (but I see x86 does it too). The spec says proximity is > "Integer that represents the proximity domain to which the processor > belongs", and its 4 bytes. So why doesn't the structure define it as > a uint32_t and then we'd just do > > numamem->proximity = cpu_to_le32(i); > > (adding Igor) > >> > + numamem->flags = cpu_to_le32(1); >> > + numamem->base_addr = cpu_to_le64(mem_base); >> > + numamem->range_length = cpu_to_le64(mem_len); > How about moving acpi_build_srat_memory from hw/i386/acpi-build.c to > somewhere in hw/acpi and reusing it? > Good point! Will do that.
Thanks, -- Shannon