[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vho
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge |
Date: |
Mon, 24 Jul 2017 11:14:19 +0200 |
On Sun, 23 Jul 2017 20:46:11 +0800
Peng Hao <address@hidden> wrote:
> When a guest that has several hotplugged dimms is migrated, on
> destination it will fail to resume. Because regions on source
> are merged and on destination the order of realizing devices
> is different from on source with dimms, so when part of devices
> are realizd some region can not be merged.That may be more than
> vhost slot limit.
>
> Signed-off-by: Peng Hao <address@hidden>
> Signed-off-by: Wang Yechao <address@hidden>
> ---
> hw/mem/pc-dimm.c | 2 +-
> include/sysemu/sysemu.h | 1 +
> vl.c | 5 +++++
> 3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index ea67b46..13f3db5 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -101,7 +101,7 @@ void pc_dimm_memory_plug(DeviceState *dev,
> MemoryHotplugState *hpms,
> goto out;
> }
>
> - if (!vhost_has_free_slot()) {
> + if (!vhost_has_free_slot() && qemu_is_machine_init_done()) {
> error_setg(&local_err, "a used vhost backend has no free"
> " memory slots left");
that doesn't fix issue,
1st: number of used entries is changing after machine_init_done() is called
as regions continue to mapped/unmapped during runtime
2nd: it brings regression and allows to start QEMU with number memory
regions more than supported by backend, which combined with missing
error handling in vhost will lead to qemu crashes or obscure bugs in
guest breaking vhost enabled drivers.
i.e. patch undoes what were fixed by
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg00789.html
> goto out;
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index b213696..48228ad 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -88,6 +88,7 @@ void qemu_system_guest_panicked(GuestPanicInformation
> *info);
> void qemu_add_exit_notifier(Notifier *notify);
> void qemu_remove_exit_notifier(Notifier *notify);
>
> +bool qemu_is_machine_init_done(void);
> void qemu_add_machine_init_done_notifier(Notifier *notify);
> void qemu_remove_machine_init_done_notifier(Notifier *notify);
>
> diff --git a/vl.c b/vl.c
> index fb6b2ef..43aee22 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2681,6 +2681,11 @@ static void qemu_run_exit_notifiers(void)
>
> static bool machine_init_done;
>
> +bool qemu_is_machine_init_done(void)
> +{
> + return machine_init_done;
> +}
> +
> void qemu_add_machine_init_done_notifier(Notifier *notify)
> {
> notifier_list_add(&machine_init_done_notifiers, notify);
- [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Peng Hao, 2017/07/23
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge,
Igor Mammedov <=
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Michael S. Tsirkin, 2017/07/24
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Igor Mammedov, 2017/07/25
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Michael S. Tsirkin, 2017/07/25
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Igor Mammedov, 2017/07/26
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Michael S. Tsirkin, 2017/07/26
- Re: [Qemu-devel] [PATCH V2] vhost: fix a migration failed because of vhost region merge, Igor Mammedov, 2017/07/28