On Fri, 1 Mar 2019 09:23:11 +0000 Shameerali Kolothum Thodi <shameerali.kolothum.th...@huawei.com> wrote:
> > -----Original Message----- > > From: Igor Mammedov [mailto:imamm...@redhat.com] > > Sent: 01 March 2019 09:12 > > To: Shameerali Kolothum Thodi <shameerali.kolothum.th...@huawei.com> > > Cc: eric.au...@redhat.com; shannon.zha...@gmail.com; > > peter.mayd...@linaro.org; qemu-devel@nongnu.org; qemu-...@nongnu.org; > > Linuxarm <linux...@huawei.com>; xuwei (O) <xuw...@huawei.com> > > Subject: Re: [Qemu-devel] [RFC PATCH 3/4] hw/arm/virt: Enable pc-dimm > > hotplug support > > > > On Mon, 28 Jan 2019 11:05:45 +0000 > > Shameer Kolothum <shameerali.kolothum.th...@huawei.com> wrote: > > > > > pc-dimm memory hotplug is enabled using GPIO(Pin 2) based ACPI > > > event. Hot removal functionality is not yet supported. > > > > > > Signed-off-by: Shameer Kolothum <shameerali.kolothum.th...@huawei.com> > > > --- > > > hw/arm/virt.c | 57 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > > > 1 file changed, 55 insertions(+), 2 deletions(-) > > > > > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > > > index 884960d..cf64554 100644 > > > --- a/hw/arm/virt.c > > > +++ b/hw/arm/virt.c > > > @@ -62,6 +62,7 @@ > > > #include "hw/mem/pc-dimm.h" > > > #include "hw/mem/nvdimm.h" > > > #include "hw/acpi/acpi.h" > > > +#include "hw/acpi/pc-hotplug.h" > > it looks like x86 specific file, what is this here for? > > Yes. That is for ACPI_MEMORY_HOTPLUG_BASE which is only used by x86 > at the moment. I guess, it can be moved to hw/acpi/memory_hotplug.h ? it's GPA and pc/q35 impl. specific so you should use it, this address will always be board specific one. Makeup a virt specific one > > > > > > > #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \ > > > static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ > > > @@ -1651,7 +1652,14 @@ static void machvirt_init(MachineState > > *machine) > > > nvdimm_init_acpi_state(acpi_nvdimm_state, sysmem, > > > vms->fw_cfg, OBJECT(vms)); > > > } > > > + if (vms->acpi_memhp_state.is_enabled) { > > > + MemHotplugState *state = &vms->acpi_memhp_state; > > > + hwaddr base; > > > > > > + state->hw_reduced_acpi = true; > > > + base = vms->memmap[VIRT_ACPI_IO].base + > > ACPI_MEMORY_HOTPLUG_BASE; well, this is confusing, why adding 2 base addresses? If vms->memmap[VIRT_ACPI_IO].base is already set than why not use it as is without adding an offset? > > > + acpi_memory_hotplug_init(sysmem, OBJECT(vms), state, base); > > > + } > > > vms->bootinfo.ram_size = machine->ram_size; > > > vms->bootinfo.kernel_filename = machine->kernel_filename; > > > vms->bootinfo.kernel_cmdline = machine->kernel_cmdline; > > [...]