diff mbox series

[v2,07/11] hw/arm/virt-acpi-build: Add PC-DIMM in SRAT

Message ID 20190308114218.26692-8-shameerali.kolothum.thodi@huawei.com
State Superseded
Headers show
Series ARM virt: ACPI memory hotplug support | expand

Commit Message

Shameerali Kolothum Thodi March 8, 2019, 11:42 a.m. UTC
Generate Memory Affinity Structures for PC-DIMM ranges.

Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

Signed-off-by: Eric Auger <eric.auger@redhat.com>

Reviewed-by: Igor Mammedov <imammedo@redhat.com>

---
 hw/arm/virt-acpi-build.c | 9 +++++++++
 1 file changed, 9 insertions(+)

-- 
2.7.4

Comments

Igor Mammedov March 11, 2019, 2:55 p.m. UTC | #1
On Fri, 8 Mar 2019 11:42:14 +0000
Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> wrote:

> Generate Memory Affinity Structures for PC-DIMM ranges.

> 

> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> Signed-off-by: Eric Auger <eric.auger@redhat.com>

> Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> ---

>  hw/arm/virt-acpi-build.c | 9 +++++++++

>  1 file changed, 9 insertions(+)

> 

> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c

> index 87d66da..6cb7263 100644

> --- a/hw/arm/virt-acpi-build.c

> +++ b/hw/arm/virt-acpi-build.c

> @@ -524,6 +524,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)

>      int i, srat_start;

>      uint64_t mem_base;

>      MachineClass *mc = MACHINE_GET_CLASS(vms);

> +    MachineState *ms = MACHINE(vms);

>      const CPUArchIdList *cpu_list = mc->possible_cpu_arch_ids(MACHINE(vms));

>  

>      srat_start = table_data->len;

> @@ -549,6 +550,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),

> +                          nb_numa_nodes - 1,

> +                          MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED);

> +    }

> +


do we care about 'Windows' guests?
if yes then we should drop this patch,
see commit for reasoning dbb6da8ba7e

>      build_header(linker, table_data, (void *)(table_data->data + srat_start),

>                   "SRAT", table_data->len - srat_start, 3, NULL, NULL);

>  }
Shameerali Kolothum Thodi March 12, 2019, 9:57 a.m. UTC | #2
> -----Original Message-----

> From: Igor Mammedov [mailto:imammedo@redhat.com]

> Sent: 11 March 2019 14:55

> To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>

> Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org;

> eric.auger@redhat.com; peter.maydell@linaro.org;

> shannon.zhaosl@gmail.com; sameo@linux.intel.com;

> sebastien.boeuf@intel.com; Linuxarm <linuxarm@huawei.com>; xuwei (O)

> <xuwei5@huawei.com>

> Subject: Re: [PATCH v2 07/11] hw/arm/virt-acpi-build: Add PC-DIMM in SRAT

> 

> On Fri, 8 Mar 2019 11:42:14 +0000

> Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> wrote:

> 

> > Generate Memory Affinity Structures for PC-DIMM ranges.

> >

> > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > Signed-off-by: Eric Auger <eric.auger@redhat.com>

> > Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> > ---

> >  hw/arm/virt-acpi-build.c | 9 +++++++++

> >  1 file changed, 9 insertions(+)

> >

> > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c

> > index 87d66da..6cb7263 100644

> > --- a/hw/arm/virt-acpi-build.c

> > +++ b/hw/arm/virt-acpi-build.c

> > @@ -524,6 +524,7 @@ build_srat(GArray *table_data, BIOSLinker *linker,

> VirtMachineState *vms)

> >      int i, srat_start;

> >      uint64_t mem_base;

> >      MachineClass *mc = MACHINE_GET_CLASS(vms);

> > +    MachineState *ms = MACHINE(vms);

> >      const CPUArchIdList *cpu_list =

> mc->possible_cpu_arch_ids(MACHINE(vms));

> >

> >      srat_start = table_data->len;

> > @@ -549,6 +550,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),

> > +                          nb_numa_nodes - 1,

> > +                          MEM_AFFINITY_HOTPLUGGABLE |

> MEM_AFFINITY_ENABLED);

> > +    }

> > +

> 

> do we care about 'Windows' guests?

> if yes then we should drop this patch,

> see commit for reasoning dbb6da8ba7e


If I understood that commit, that is reverting to use a single entry for whole
hotplug area instead of splitting into multiple entries. ie, remove
build_srat_hotpluggable_memory() and use build_srat_memory() instead,
which is what this patch does.

May be I am missing something here. Please let me know.

Thanks,
Shameer

> >      build_header(linker, table_data, (void *)(table_data->data +

> srat_start),

> >                   "SRAT", table_data->len - srat_start, 3, NULL, NULL);

> >  }
Igor Mammedov March 12, 2019, 12:50 p.m. UTC | #3
On Tue, 12 Mar 2019 09:57:58 +0000
Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com> wrote:

> > -----Original Message-----

> > From: Igor Mammedov [mailto:imammedo@redhat.com]

> > Sent: 11 March 2019 14:55

> > To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>

> > Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org;

> > eric.auger@redhat.com; peter.maydell@linaro.org;

> > shannon.zhaosl@gmail.com; sameo@linux.intel.com;

> > sebastien.boeuf@intel.com; Linuxarm <linuxarm@huawei.com>; xuwei (O)

> > <xuwei5@huawei.com>

> > Subject: Re: [PATCH v2 07/11] hw/arm/virt-acpi-build: Add PC-DIMM in SRAT

> > 

> > On Fri, 8 Mar 2019 11:42:14 +0000

> > Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> wrote:

> >   

> > > Generate Memory Affinity Structures for PC-DIMM ranges.

> > >

> > > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > > Signed-off-by: Eric Auger <eric.auger@redhat.com>

> > > Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> > > ---

> > >  hw/arm/virt-acpi-build.c | 9 +++++++++

> > >  1 file changed, 9 insertions(+)

> > >

> > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c

> > > index 87d66da..6cb7263 100644

> > > --- a/hw/arm/virt-acpi-build.c

> > > +++ b/hw/arm/virt-acpi-build.c

> > > @@ -524,6 +524,7 @@ build_srat(GArray *table_data, BIOSLinker *linker,  

> > VirtMachineState *vms)  

> > >      int i, srat_start;

> > >      uint64_t mem_base;

> > >      MachineClass *mc = MACHINE_GET_CLASS(vms);

> > > +    MachineState *ms = MACHINE(vms);

> > >      const CPUArchIdList *cpu_list =  

> > mc->possible_cpu_arch_ids(MACHINE(vms));  

> > >

> > >      srat_start = table_data->len;

> > > @@ -549,6 +550,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),  

> > > +                          nb_numa_nodes - 1,

> > > +                          MEM_AFFINITY_HOTPLUGGABLE |  

> > MEM_AFFINITY_ENABLED);  

> > > +    }

> > > +  

> > 

> > do we care about 'Windows' guests?

> > if yes then we should drop this patch,

> > see commit for reasoning dbb6da8ba7e  

> 

> If I understood that commit, that is reverting to use a single entry for whole

> hotplug area instead of splitting into multiple entries. ie, remove

> build_srat_hotpluggable_memory() and use build_srat_memory() instead,

> which is what this patch does.

> 

> May be I am missing something here. Please let me know.

Apologies it's my mistake :/, you are totally right.
This patch looks fine me.

> 

> Thanks,

> Shameer

> 

> > >      build_header(linker, table_data, (void *)(table_data->data +  

> > srat_start),  

> > >                   "SRAT", table_data->len - srat_start, 3, NULL, NULL);

> > >  }  

>
diff mbox series

Patch

diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 87d66da..6cb7263 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -524,6 +524,7 @@  build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
     int i, srat_start;
     uint64_t mem_base;
     MachineClass *mc = MACHINE_GET_CLASS(vms);
+    MachineState *ms = MACHINE(vms);
     const CPUArchIdList *cpu_list = mc->possible_cpu_arch_ids(MACHINE(vms));
 
     srat_start = table_data->len;
@@ -549,6 +550,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),
+                          nb_numa_nodes - 1,
+                          MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED);
+    }
+
     build_header(linker, table_data, (void *)(table_data->data + srat_start),
                  "SRAT", table_data->len - srat_start, 3, NULL, NULL);
 }