提交 442da7dc 编写于 作者: S Shameer Kolothum 提交者: Michael S. Tsirkin

hw/arm/virt-acpi-build: Add PC-DIMM in SRAT

Generate Memory Affinity Structures for PC-DIMM ranges.

Also, Linux and Windows need ACPI SRAT table to make memory hotplug
work properly, however currently QEMU doesn't create SRAT table if
numa options aren't present on CLI. Hence add support(>=4.2) to
create numa node automatically (auto_enable_numa_with_memhp) when
QEMU is started with memory hotplug enabled but without '-numa'
options on CLI.
Signed-off-by: NShameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Signed-off-by: NEric Auger <eric.auger@redhat.com>
Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
Message-Id: <20190918130633.4872-7-shameerali.kolothum.thodi@huawei.com>
Acked-by: NPeter Maydell <peter.maydell@linaro.org>
Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
上级 cff51ac9
...@@ -546,6 +546,14 @@ build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) ...@@ -546,6 +546,14 @@ build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
} }
} }
if (ms->device_memory) {
numamem = acpi_data_push(table_data, sizeof *numamem);
build_srat_memory(numamem, ms->device_memory->base,
memory_region_size(&ms->device_memory->mr),
ms->numa_state->num_nodes - 1,
MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED);
}
build_header(linker, table_data, (void *)(table_data->data + srat_start), build_header(linker, table_data, (void *)(table_data->data + srat_start),
"SRAT", table_data->len - srat_start, 3, NULL, NULL); "SRAT", table_data->len - srat_start, 3, NULL, NULL);
} }
......
...@@ -2051,6 +2051,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) ...@@ -2051,6 +2051,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
hc->plug = virt_machine_device_plug_cb; hc->plug = virt_machine_device_plug_cb;
hc->unplug_request = virt_machine_device_unplug_request_cb; hc->unplug_request = virt_machine_device_unplug_request_cb;
mc->numa_mem_supported = true; mc->numa_mem_supported = true;
mc->auto_enable_numa_with_memhp = true;
} }
static void virt_instance_init(Object *obj) static void virt_instance_init(Object *obj)
...@@ -2156,6 +2157,7 @@ static void virt_machine_4_1_options(MachineClass *mc) ...@@ -2156,6 +2157,7 @@ static void virt_machine_4_1_options(MachineClass *mc)
virt_machine_4_2_options(mc); virt_machine_4_2_options(mc);
compat_props_add(mc->compat_props, hw_compat_4_1, hw_compat_4_1_len); compat_props_add(mc->compat_props, hw_compat_4_1, hw_compat_4_1_len);
vmc->no_ged = true; vmc->no_ged = true;
mc->auto_enable_numa_with_memhp = false;
} }
DEFINE_VIRT_MACHINE(4, 1) DEFINE_VIRT_MACHINE(4, 1)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册