On Tue, 20 May 2014 18:38:15 +0300 "Michael S. Tsirkin" <m...@redhat.com> wrote:
> On Tue, May 20, 2014 at 05:15:33PM +0200, Igor Mammedov wrote: > > Needed for Windows to use hotplugged memory device, otherwise > > it complains that server is not configured for memory hotplug. > > Tests shows that aftewards it uses dynamically provided > > proximity value from _PXM() method if available. > > > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > > --- > > hw/i386/acpi-build.c | 14 ++++++++++++++ > > 1 files changed, 14 insertions(+), 0 deletions(-) > > > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > > index 58e7306..97e3a82 100644 > > --- a/hw/i386/acpi-build.c > > +++ b/hw/i386/acpi-build.c > > @@ -1199,6 +1199,8 @@ build_srat(GArray *table_data, GArray *linker, > > uint64_t curnode; > > int srat_start, numa_start, slots; > > uint64_t mem_len, mem_base, next_base; > > + PCMachineState *pcms = PC_MACHINE(qdev_get_machine()); > > + ram_addr_t hotplug_as_size = memory_region_size(&pcms->hotplug_memory); > > > > srat_start = table_data->len; > > > > @@ -1263,6 +1265,18 @@ build_srat(GArray *table_data, GArray *linker, > > acpi_build_srat_memory(numamem, 0, 0, 0, MEM_AFFINITY_NOFLAGS); > > } > > > > + /* > > + * Fake entry required by Windows to enable memory hotplug in OS. > > + * Individual DIMM devices override proximity set here via _PXM method, > > + * which returns associated with it NUMA node id. > > Failed to parse this last sentence. what returns what associated with > what? Maybe split to 3-4 short sentences. How about: " Entry is required for Windows to enable memory hotplug in OS. Memory devices may override proximity set by this entry, providing _PXM method if necessary. " > > > + */ > > + if (hotplug_as_size) { > > + numamem = acpi_data_push(table_data, sizeof *numamem); > > + acpi_build_srat_memory(numamem, pcms->hotplug_memory_base, > > + hotplug_as_size, 0, > > MEM_AFFINITY_HOTPLUGGABLE | > > + MEM_AFFINITY_ENABLED); > > + } > > + > > build_header(linker, table_data, > > (void *)(table_data->data + srat_start), > > "SRAT", > > -- > > 1.7.1