* [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA"
@ 2015-10-28 16:57 Michael S. Tsirkin
2015-10-28 16:57 ` [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps" Michael S. Tsirkin
2015-10-29 10:31 ` [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Igor Mammedov
0 siblings, 2 replies; 4+ messages in thread
From: Michael S. Tsirkin @ 2015-10-28 16:57 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Eduardo Habkost, Paolo Bonzini
This reverts commit aa8580cddf011e8cedcf87f7a0fdea7549fc4704.
As described in
http://article.gmane.org/gmane.comp.emulators.qemu/371432
that commit causes linux guests to crash on memory hot-unplug.
The original problem it's trying to solve has now
been addressed within virtio.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/i386/pc.h | 1 -
hw/i386/pc.c | 6 ++----
hw/i386/pc_piix.c | 1 -
hw/i386/pc_q35.c | 1 -
4 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index c5961d7..93c6dab 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -60,7 +60,6 @@ struct PCMachineClass {
/*< public >*/
bool broken_reserved_end;
- bool inter_dimm_gap;
HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
DeviceState *dev);
};
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 208f553..b1800fc 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1614,7 +1614,6 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
HotplugHandlerClass *hhc;
Error *local_err = NULL;
PCMachineState *pcms = PC_MACHINE(hotplug_dev);
- PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
PCDIMMDevice *dimm = PC_DIMM(dev);
PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
MemoryRegion *mr = ddc->get_memory_region(dimm);
@@ -1630,8 +1629,8 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
goto out;
}
- pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align,
- pcmc->inter_dimm_gap, &local_err);
+ pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align, false,
+ &local_err);
if (local_err) {
goto out;
}
@@ -1951,7 +1950,6 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
PCMachineClass *pcmc = PC_MACHINE_CLASS(oc);
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
- pcmc->inter_dimm_gap = true;
pcmc->get_hotplug_handler = mc->get_hotplug_handler;
mc->get_hotplug_handler = pc_get_hotpug_handler;
mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id;
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 0eacde1..153a445 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -482,7 +482,6 @@ static void pc_i440fx_2_4_machine_options(MachineClass *m)
m->alias = NULL;
m->is_default = 0;
pcmc->broken_reserved_end = true;
- pcmc->inter_dimm_gap = false;
SET_MACHINE_COMPAT(m, PC_COMPAT_2_4);
}
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 3744abd..2f8f396 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -385,7 +385,6 @@ static void pc_q35_2_4_machine_options(MachineClass *m)
pc_q35_2_5_machine_options(m);
m->alias = NULL;
pcmc->broken_reserved_end = true;
- pcmc->inter_dimm_gap = false;
SET_MACHINE_COMPAT(m, PC_COMPAT_2_4);
}
--
MST
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps"
2015-10-28 16:57 [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Michael S. Tsirkin
@ 2015-10-28 16:57 ` Michael S. Tsirkin
2015-10-29 10:32 ` Igor Mammedov
2015-10-29 10:31 ` [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Igor Mammedov
1 sibling, 1 reply; 4+ messages in thread
From: Michael S. Tsirkin @ 2015-10-28 16:57 UTC (permalink / raw)
To: qemu-devel
Cc: Eduardo Habkost, Alexander Graf, qemu-ppc, Paolo Bonzini,
Igor Mammedov, David Gibson, Richard Henderson
This reverts commit df0acded19ec4b826aa095cfc19d341bd66fafd3.
There's no point to it now that the only user has been reverted.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/mem/pc-dimm.h | 7 +++----
hw/i386/pc.c | 3 +--
hw/mem/pc-dimm.c | 15 ++++++---------
hw/ppc/spapr.c | 2 +-
4 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index c1ee7b0..d83bf30 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -83,16 +83,15 @@ typedef struct MemoryHotplugState {
uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
uint64_t address_space_size,
- uint64_t *hint, uint64_t align, bool gap,
- uint64_t size, Error **errp);
+ uint64_t *hint, uint64_t align, uint64_t size,
+ Error **errp);
int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp);
int qmp_pc_dimm_device_list(Object *obj, void *opaque);
uint64_t pc_existing_dimms_capacity(Error **errp);
void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
- MemoryRegion *mr, uint64_t align, bool gap,
- Error **errp);
+ MemoryRegion *mr, uint64_t align, Error **errp);
void pc_dimm_memory_unplug(DeviceState *dev, MemoryHotplugState *hpms,
MemoryRegion *mr);
#endif
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index b1800fc..4bc5640 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1629,8 +1629,7 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
goto out;
}
- pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align, false,
- &local_err);
+ pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align, &local_err);
if (local_err) {
goto out;
}
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 2bae994..80f424b 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -33,8 +33,7 @@ typedef struct pc_dimms_capacity {
} pc_dimms_capacity;
void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
- MemoryRegion *mr, uint64_t align, bool gap,
- Error **errp)
+ MemoryRegion *mr, uint64_t align, Error **errp)
{
int slot;
MachineState *machine = MACHINE(qdev_get_machine());
@@ -50,7 +49,7 @@ void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
addr = pc_dimm_get_free_addr(hpms->base,
memory_region_size(&hpms->mr),
- !addr ? NULL : &addr, align, gap,
+ !addr ? NULL : &addr, align,
memory_region_size(mr), &local_err);
if (local_err) {
goto out;
@@ -295,8 +294,8 @@ static int pc_dimm_built_list(Object *obj, void *opaque)
uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
uint64_t address_space_size,
- uint64_t *hint, uint64_t align, bool gap,
- uint64_t size, Error **errp)
+ uint64_t *hint, uint64_t align, uint64_t size,
+ Error **errp)
{
GSList *list = NULL, *item;
uint64_t new_addr, ret = 0;
@@ -341,15 +340,13 @@ uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
goto out;
}
- if (ranges_overlap(dimm->addr, dimm_size, new_addr,
- size + (gap ? 1 : 0))) {
+ if (ranges_overlap(dimm->addr, dimm_size, new_addr, size)) {
if (hint) {
DeviceState *d = DEVICE(dimm);
error_setg(errp, "address range conflicts with '%s'", d->id);
goto out;
}
- new_addr = QEMU_ALIGN_UP(dimm->addr + dimm_size + (gap ? 1 : 0),
- align);
+ new_addr = QEMU_ALIGN_UP(dimm->addr + dimm_size, align);
}
}
ret = new_addr;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index d1b0e53..a9b5f2a 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2096,7 +2096,7 @@ static void spapr_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
goto out;
}
- pc_dimm_memory_plug(dev, &ms->hotplug_memory, mr, align, false, &local_err);
+ pc_dimm_memory_plug(dev, &ms->hotplug_memory, mr, align, &local_err);
if (local_err) {
goto out;
}
--
MST
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA"
2015-10-28 16:57 [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Michael S. Tsirkin
2015-10-28 16:57 ` [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps" Michael S. Tsirkin
@ 2015-10-29 10:31 ` Igor Mammedov
1 sibling, 0 replies; 4+ messages in thread
From: Igor Mammedov @ 2015-10-29 10:31 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Paolo Bonzini, qemu-devel, Eduardo Habkost, Richard Henderson
On Wed, 28 Oct 2015 18:57:00 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> This reverts commit aa8580cddf011e8cedcf87f7a0fdea7549fc4704.
>
> As described in
> http://article.gmane.org/gmane.comp.emulators.qemu/371432
> that commit causes linux guests to crash on memory hot-unplug.
>
> The original problem it's trying to solve has now
> been addressed within virtio.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/i386/pc.h | 1 -
> hw/i386/pc.c | 6 ++----
> hw/i386/pc_piix.c | 1 -
> hw/i386/pc_q35.c | 1 -
> 4 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index c5961d7..93c6dab 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -60,7 +60,6 @@ struct PCMachineClass {
>
> /*< public >*/
> bool broken_reserved_end;
> - bool inter_dimm_gap;
> HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
> DeviceState *dev);
> };
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 208f553..b1800fc 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1614,7 +1614,6 @@ static void pc_dimm_plug(HotplugHandler
> *hotplug_dev, HotplugHandlerClass *hhc;
> Error *local_err = NULL;
> PCMachineState *pcms = PC_MACHINE(hotplug_dev);
> - PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
> PCDIMMDevice *dimm = PC_DIMM(dev);
> PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
> MemoryRegion *mr = ddc->get_memory_region(dimm);
> @@ -1630,8 +1629,8 @@ static void pc_dimm_plug(HotplugHandler
> *hotplug_dev, goto out;
> }
>
> - pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align,
> - pcmc->inter_dimm_gap, &local_err);
> + pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align, false,
> + &local_err);
> if (local_err) {
> goto out;
> }
> @@ -1951,7 +1950,6 @@ static void pc_machine_class_init(ObjectClass
> *oc, void *data) PCMachineClass *pcmc = PC_MACHINE_CLASS(oc);
> HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
>
> - pcmc->inter_dimm_gap = true;
> pcmc->get_hotplug_handler = mc->get_hotplug_handler;
> mc->get_hotplug_handler = pc_get_hotpug_handler;
> mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 0eacde1..153a445 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -482,7 +482,6 @@ static void
> pc_i440fx_2_4_machine_options(MachineClass *m) m->alias = NULL;
> m->is_default = 0;
> pcmc->broken_reserved_end = true;
> - pcmc->inter_dimm_gap = false;
> SET_MACHINE_COMPAT(m, PC_COMPAT_2_4);
> }
>
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 3744abd..2f8f396 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -385,7 +385,6 @@ static void
> pc_q35_2_4_machine_options(MachineClass *m)
> pc_q35_2_5_machine_options(m); m->alias = NULL;
> pcmc->broken_reserved_end = true;
> - pcmc->inter_dimm_gap = false;
> SET_MACHINE_COMPAT(m, PC_COMPAT_2_4);
> }
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps"
2015-10-28 16:57 ` [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps" Michael S. Tsirkin
@ 2015-10-29 10:32 ` Igor Mammedov
0 siblings, 0 replies; 4+ messages in thread
From: Igor Mammedov @ 2015-10-29 10:32 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Eduardo Habkost, Alexander Graf, qemu-devel, qemu-ppc,
Paolo Bonzini, Richard Henderson, David Gibson
On Wed, 28 Oct 2015 18:57:03 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> This reverts commit df0acded19ec4b826aa095cfc19d341bd66fafd3.
>
> There's no point to it now that the only user has been reverted.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/mem/pc-dimm.h | 7 +++----
> hw/i386/pc.c | 3 +--
> hw/mem/pc-dimm.c | 15 ++++++---------
> hw/ppc/spapr.c | 2 +-
> 4 files changed, 11 insertions(+), 16 deletions(-)
>
> diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> index c1ee7b0..d83bf30 100644
> --- a/include/hw/mem/pc-dimm.h
> +++ b/include/hw/mem/pc-dimm.h
> @@ -83,16 +83,15 @@ typedef struct MemoryHotplugState {
>
> uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
> uint64_t address_space_size,
> - uint64_t *hint, uint64_t align, bool
> gap,
> - uint64_t size, Error **errp);
> + uint64_t *hint, uint64_t align,
> uint64_t size,
> + Error **errp);
>
> int pc_dimm_get_free_slot(const int *hint, int max_slots, Error
> **errp);
> int qmp_pc_dimm_device_list(Object *obj, void *opaque);
> uint64_t pc_existing_dimms_capacity(Error **errp);
> void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
> - MemoryRegion *mr, uint64_t align, bool gap,
> - Error **errp);
> + MemoryRegion *mr, uint64_t align, Error
> **errp); void pc_dimm_memory_unplug(DeviceState *dev,
> MemoryHotplugState *hpms, MemoryRegion *mr);
> #endif
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index b1800fc..4bc5640 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1629,8 +1629,7 @@ static void pc_dimm_plug(HotplugHandler
> *hotplug_dev, goto out;
> }
>
> - pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align, false,
> - &local_err);
> + pc_dimm_memory_plug(dev, &pcms->hotplug_memory, mr, align,
> &local_err); if (local_err) {
> goto out;
> }
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index 2bae994..80f424b 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -33,8 +33,7 @@ typedef struct pc_dimms_capacity {
> } pc_dimms_capacity;
>
> void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
> - MemoryRegion *mr, uint64_t align, bool gap,
> - Error **errp)
> + MemoryRegion *mr, uint64_t align, Error
> **errp) {
> int slot;
> MachineState *machine = MACHINE(qdev_get_machine());
> @@ -50,7 +49,7 @@ void pc_dimm_memory_plug(DeviceState *dev,
> MemoryHotplugState *hpms,
> addr = pc_dimm_get_free_addr(hpms->base,
> memory_region_size(&hpms->mr),
> - !addr ? NULL : &addr, align, gap,
> + !addr ? NULL : &addr, align,
> memory_region_size(mr), &local_err);
> if (local_err) {
> goto out;
> @@ -295,8 +294,8 @@ static int pc_dimm_built_list(Object *obj, void
> *opaque)
> uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
> uint64_t address_space_size,
> - uint64_t *hint, uint64_t align, bool
> gap,
> - uint64_t size, Error **errp)
> + uint64_t *hint, uint64_t align,
> uint64_t size,
> + Error **errp)
> {
> GSList *list = NULL, *item;
> uint64_t new_addr, ret = 0;
> @@ -341,15 +340,13 @@ uint64_t pc_dimm_get_free_addr(uint64_t
> address_space_start, goto out;
> }
>
> - if (ranges_overlap(dimm->addr, dimm_size, new_addr,
> - size + (gap ? 1 : 0))) {
> + if (ranges_overlap(dimm->addr, dimm_size, new_addr, size)) {
> if (hint) {
> DeviceState *d = DEVICE(dimm);
> error_setg(errp, "address range conflicts with
> '%s'", d->id); goto out;
> }
> - new_addr = QEMU_ALIGN_UP(dimm->addr + dimm_size + (gap ?
> 1 : 0),
> - align);
> + new_addr = QEMU_ALIGN_UP(dimm->addr + dimm_size, align);
> }
> }
> ret = new_addr;
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index d1b0e53..a9b5f2a 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2096,7 +2096,7 @@ static void spapr_memory_plug(HotplugHandler
> *hotplug_dev, DeviceState *dev, goto out;
> }
>
> - pc_dimm_memory_plug(dev, &ms->hotplug_memory, mr, align, false,
> &local_err);
> + pc_dimm_memory_plug(dev, &ms->hotplug_memory, mr, align,
> &local_err); if (local_err) {
> goto out;
> }
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-10-29 10:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-28 16:57 [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Michael S. Tsirkin
2015-10-28 16:57 ` [Qemu-devel] [PATCH 2/2] Revert "memhp: extend address auto assignment to support gaps" Michael S. Tsirkin
2015-10-29 10:32 ` Igor Mammedov
2015-10-29 10:31 ` [Qemu-devel] [PATCH 1/2] Revert "pc: memhp: force gaps between DIMM's GPA" Igor Mammedov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).