From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595661; cv=none; d=zoho.com; s=zohoarc; b=VWi8gRB8yfDj5W5RyQFjLj0bfqQWKQNN0cOlg6aiwqxTtKsW1lLLrUei7bAFC4rhcoROJn1Q4UYSgnsNvab5pcEsoYrx4/xtvur6kaISK4uYQLSGMpNqwDC7/ZUg4VYV6BKEaW3GsYAqz94QogFn+DQaWr5Mio2tyfCoXKdwR/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595661; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7OXEs3KtoRc+strAph+4QeutMmajbn5gfETF5RdRxpk=; b=YBDAl1SPDDBEUoW6kL1/Y9umtKZkaFmcCXJIjub2BzRrH7ZRf85qDo+H4q9xfzwrNvFre3YZOm7wP32IEJQLuu/Yg9WUycqeaMZI5onuLIyfvxIcCwnB9GSvy5Q+Y+RwnZ+z68mHCpyBURyChOWYXtXXXHgor76mLd5BI3ekjhk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562595661708628.372402108332; Mon, 8 Jul 2019 07:21:01 -0700 (PDT) Received: from localhost ([::1]:42136 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUVm-0003cV-PR for importer@patchew.org; Mon, 08 Jul 2019 10:20:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39837) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTZ-0001fJ-3s for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTX-0008LY-SO for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35284) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTU-0008C0-TF; Mon, 08 Jul 2019 10:18:37 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EC8723082B45; Mon, 8 Jul 2019 14:18:23 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id E73FA2B1D8; Mon, 8 Jul 2019 14:18:20 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:07 +0200 Message-Id: <20190708141812.3974-2-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Mon, 08 Jul 2019 14:18:30 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 1/6] vl: add qemu_add_vm_change_state_handler_prio() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Add an API for registering vm change state handlers with a well-defined ordering. This is necessary when handlers depend on each other. Small coding style fixes are included to make checkpatch.pl happy. Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- include/sysemu/sysemu.h | 2 ++ vl.c | 59 ++++++++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 61579ae71e..984c439ac9 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -29,6 +29,8 @@ typedef void VMChangeStateHandler(void *opaque, int runni= ng, RunState state); =20 VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler = *cb, void *opaque); +VMChangeStateEntry *qemu_add_vm_change_state_handler_prio( + VMChangeStateHandler *cb, void *opaque, int priority); void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); void vm_state_notify(int running, RunState state); =20 diff --git a/vl.c b/vl.c index 280e709e2c..5089fce6c5 100644 --- a/vl.c +++ b/vl.c @@ -1365,28 +1365,57 @@ static int machine_help_func(QemuOpts *opts, Machin= eState *machine) struct vm_change_state_entry { VMChangeStateHandler *cb; void *opaque; - QLIST_ENTRY (vm_change_state_entry) entries; + QTAILQ_ENTRY(vm_change_state_entry) entries; + int priority; }; =20 -static QLIST_HEAD(, vm_change_state_entry) vm_change_state_head; +static QTAILQ_HEAD(, vm_change_state_entry) vm_change_state_head; =20 -VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler = *cb, - void *opaque) +/** + * qemu_add_vm_change_state_handler_prio: + * @cb: the callback to invoke + * @opaque: user data passed to the callback + * @priority: low priorities execute first when the vm runs and the revers= e is + * true when the vm stops + * + * Register a callback function that is invoked when the vm starts or stops + * running. + * + * Returns: an entry to be freed using qemu_del_vm_change_state_handler() + */ +VMChangeStateEntry *qemu_add_vm_change_state_handler_prio( + VMChangeStateHandler *cb, void *opaque, int priority) { VMChangeStateEntry *e; + VMChangeStateEntry *other; =20 - e =3D g_malloc0(sizeof (*e)); - + e =3D g_malloc0(sizeof(*e)); e->cb =3D cb; e->opaque =3D opaque; - QLIST_INSERT_HEAD(&vm_change_state_head, e, entries); + e->priority =3D priority; + + /* Keep list sorted in ascending priority order */ + QTAILQ_FOREACH(other, &vm_change_state_head, entries) { + if (priority < other->priority) { + QTAILQ_INSERT_BEFORE(other, e, entries); + return e; + } + } + + QTAILQ_INSERT_TAIL(&vm_change_state_head, e, entries); return e; } =20 +VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler = *cb, + void *opaque) +{ + return qemu_add_vm_change_state_handler_prio(cb, opaque, 0); +} + void qemu_del_vm_change_state_handler(VMChangeStateEntry *e) { - QLIST_REMOVE (e, entries); - g_free (e); + QTAILQ_REMOVE(&vm_change_state_head, e, entries); + g_free(e); } =20 void vm_state_notify(int running, RunState state) @@ -1395,8 +1424,14 @@ void vm_state_notify(int running, RunState state) =20 trace_vm_state_notify(running, state, RunState_str(state)); =20 - QLIST_FOREACH_SAFE(e, &vm_change_state_head, entries, next) { - e->cb(e->opaque, running, state); + if (running) { + QTAILQ_FOREACH_SAFE(e, &vm_change_state_head, entries, next) { + e->cb(e->opaque, running, state); + } + } else { + QTAILQ_FOREACH_REVERSE_SAFE(e, &vm_change_state_head, entries, nex= t) { + e->cb(e->opaque, running, state); + } } } =20 @@ -2911,7 +2946,7 @@ int main(int argc, char **argv, char **envp) exit(1); } =20 - QLIST_INIT (&vm_change_state_head); + QTAILQ_INIT(&vm_change_state_head); os_setup_early_signal_handling(); =20 cpu_option =3D NULL; --=20 2.20.1 From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595790; cv=none; d=zoho.com; s=zohoarc; b=FWl9YJ6mmOpKwu2KdkEG2NUqsDvqglgRBgKBRceXIPlK/IJYrbmyHhy6kIZ2y0z0tMoQ4Am7QH3gnjWYEnZFup320lpoDx0BksFF5jRZk4HOTt2a9ml5y5RTbVKMXFtl94zrrm1zD0cNE/tOJwH6YGFg4eyAW0PR51xk/XGqPEI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595790; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=u+XNUlUutkWvA0KGVSEHqpst4yATyBYs1MRmk0S+SO8=; b=P6jWy7CLJ+TFLHcidVHa41ikkzGf8ExRSgmEP0DM+XvosAsoLspw5dI3FC0iTV1ZqpIMbBL7lYM5n43vBxXgwjqIre2kT+soeApNAvtR+8SamUUIWMs28Z90jIneCy8onNJRXTBvmltOD7oaWkjsBns5HptHWNvKfa6eRCo1qFo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562595790875495.3049194806857; Mon, 8 Jul 2019 07:23:10 -0700 (PDT) Received: from localhost ([::1]:42156 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUXn-0006Ez-Dj for importer@patchew.org; Mon, 08 Jul 2019 10:23:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39926) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTd-0001t0-Mp for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTc-0008VZ-AX for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47578) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTZ-0008Nh-79; Mon, 08 Jul 2019 10:18:41 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4DD722E95AF; Mon, 8 Jul 2019 14:18:26 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4520551F00; Mon, 8 Jul 2019 14:18:24 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:08 +0200 Message-Id: <20190708141812.3974-3-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 08 Jul 2019 14:18:30 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 2/6] qdev: add qdev_add_vm_change_state_handler() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Children sometimes depend on their parent's vm change state handler having completed. Add a vm change state handler API for devices that guarantees tree depth ordering. Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- include/hw/qdev-core.h | 5 +++ hw/core/vm-change-state-handler.c | 61 +++++++++++++++++++++++++++++++ hw/core/Makefile.objs | 1 + 3 files changed, 67 insertions(+) create mode 100644 hw/core/vm-change-state-handler.c diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index fa55dc10ae..e157fc4acd 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -6,6 +6,7 @@ #include "qom/object.h" #include "hw/irq.h" #include "hw/hotplug.h" +#include "sysemu/sysemu.h" =20 enum { DEV_NVECTORS_UNSPECIFIED =3D -1, @@ -450,4 +451,8 @@ static inline bool qbus_is_hotpluggable(BusState *bus) void device_listener_register(DeviceListener *listener); void device_listener_unregister(DeviceListener *listener); =20 +VMChangeStateEntry *qdev_add_vm_change_state_handler(DeviceState *dev, + VMChangeStateHandler = *cb, + void *opaque); + #endif diff --git a/hw/core/vm-change-state-handler.c b/hw/core/vm-change-state-ha= ndler.c new file mode 100644 index 0000000000..f814813bdd --- /dev/null +++ b/hw/core/vm-change-state-handler.c @@ -0,0 +1,61 @@ +/* + * qdev vm change state handlers + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#include "qemu/osdep.h" +#include "hw/qdev.h" + +static int qdev_get_dev_tree_depth(DeviceState *dev) +{ + int depth; + + for (depth =3D 0; dev; depth++) { + BusState *bus =3D dev->parent_bus; + + if (!bus) { + break; + } + + dev =3D bus->parent; + } + + return depth; +} + +/** + * qdev_add_vm_change_state_handler: + * @dev: the device that owns this handler + * @cb: the callback function to be invoked + * @opaque: user data passed to the callback function + * + * This function works like qemu_add_vm_change_state_handler() except call= backs + * are invoked in qdev tree depth order. Ordering is desirable when callb= acks + * of children depend on their parent's callback having completed first. + * + * For example, when qdev_add_vm_change_state_handler() is used, a host + * controller's callback is invoked before the children on its bus when th= e VM + * starts running. The order is reversed when the VM stops running. + * + * Returns: an entry to be freed with qemu_del_vm_change_state_handler() + */ +VMChangeStateEntry *qdev_add_vm_change_state_handler(DeviceState *dev, + VMChangeStateHandler = *cb, + void *opaque) +{ + int depth =3D qdev_get_dev_tree_depth(dev); + + return qemu_add_vm_change_state_handler_prio(cb, opaque, depth); +} diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs index 585b734358..f8481d959f 100644 --- a/hw/core/Makefile.objs +++ b/hw/core/Makefile.objs @@ -7,6 +7,7 @@ common-obj-$(CONFIG_SOFTMMU) +=3D fw-path-provider.o common-obj-y +=3D irq.o common-obj-y +=3D hotplug.o common-obj-$(CONFIG_SOFTMMU) +=3D nmi.o +common-obj-$(CONFIG_SOFTMMU) +=3D vm-change-state-handler.o =20 common-obj-$(CONFIG_EMPTY_SLOT) +=3D empty_slot.o common-obj-$(CONFIG_XILINX_AXI) +=3D stream.o --=20 2.20.1 From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595670; cv=none; d=zoho.com; s=zohoarc; b=hvGXkE+UIF3l4jY/v4j662t8nO2HOF7u5GHoz/Dmzicn+OJhbODYk3BA/6UmFTEd06qZqc6/WWXCwJLKj9aQFpj/hogCvE/9EO9zRA9/K1kelbUjWIN8uSh/8gkSbfKoN9iJUgFxzukcxTMxlX14pmg7BZssQOJss8LNzzD095A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595670; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9AOS3pTW12RP+LzbHbTvUUBO+MmutUoJLxRqdEm3FHM=; b=KQhd3vihO1Pd64tk9PPR8Hc8Ef9Gfe9590xEMSdoF8UwNfvbUiwxpC+lauoBAgeW+xItWPAkNwtPOZrOR88ELZibFELHUWtZkNyvfbNCWhWNjK0CpzVHgPcWoVoLIMZ+2olpQ84YcoYCMrEaaupRvnJNjVqcB6oZIPzN9cbfbu0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562595670252939.1051160496257; Mon, 8 Jul 2019 07:21:10 -0700 (PDT) Received: from localhost ([::1]:42138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUVx-0003zc-B0 for importer@patchew.org; Mon, 08 Jul 2019 10:21:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39910) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTc-0001po-Ol for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTb-0008V3-MJ for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39178) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTZ-0008No-A1; Mon, 08 Jul 2019 10:18:41 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BEF3730860AE; Mon, 8 Jul 2019 14:18:30 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id 98C092B18D; Mon, 8 Jul 2019 14:18:26 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:09 +0200 Message-Id: <20190708141812.3974-4-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Mon, 08 Jul 2019 14:18:40 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 3/6] virtio-scsi: restart DMA after iothread X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi When the 'cont' command resumes guest execution the vm change state handlers are invoked. Unfortunately there is no explicit ordering between classic qemu_add_vm_change_state_handler() callbacks. When two layers of code both use vm change state handlers, we don't control which handler runs first. virtio-scsi with iothreads hits a deadlock when a failed SCSI command is restarted and completes before the iothread is re-initialized. This patch uses the new qdev_add_vm_change_state_handler() API to guarantee that virtio-scsi's virtio change state handler executes before the SCSI bus children. This way DMA is restarted after the iothread has re-initialized. Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- hw/scsi/scsi-bus.c | 4 ++-- hw/virtio/virtio.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 196136a307..fdc3a0e4e0 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -207,8 +207,8 @@ static void scsi_qdev_realize(DeviceState *qdev, Error = **errp) error_propagate(errp, local_err); return; } - dev->vmsentry =3D qemu_add_vm_change_state_handler(scsi_dma_restart_cb, - dev); + dev->vmsentry =3D qdev_add_vm_change_state_handler(DEVICE(dev), + scsi_dma_restart_cb, dev); } =20 static void scsi_qdev_unrealize(DeviceState *qdev, Error **errp) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 18f9f4c372..a94ea18a9c 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2362,8 +2362,8 @@ void virtio_init(VirtIODevice *vdev, const char *name, } else { vdev->config =3D NULL; } - vdev->vmstate =3D qemu_add_vm_change_state_handler(virtio_vmstate_chan= ge, - vdev); + vdev->vmstate =3D qdev_add_vm_change_state_handler(DEVICE(vdev), + virtio_vmstate_change, vdev); vdev->device_endian =3D virtio_default_endian(); vdev->use_guest_notifier_mask =3D true; } --=20 2.20.1 From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595818; cv=none; d=zoho.com; s=zohoarc; b=cQ4q3smSj+2DtE0BFyjtJuRagKE87JbdA5OY7O7DIfgdL/k9sVTUK86FtCebWFjW1UHJBWiLkajM5zksRr2WCnj0jXltmkuDzSDkqqBJoQltJBZ8pYA5moi5/UgKP/Xc5Hzht2iW0N46dmGJOKQDYqxqVTOAAJav4ApvNuKYRrY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595818; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=HxCMKM2YOqvq7Kc7sknMwym1l/uTJdp9QwdARnpUOJg=; b=ktDJpCDnyzBGAdbpvReEuX9fQ0IMW9VcPNimGbvJ849jcY4XTbJUDS49BpVYCdzARLCRQqThn42Hdhy762qmXCPJm20DpajHJhmHpbwgyvpv6j0Fq7XV56uZS/kVjPanR5ISRTGCfQXHh+AQmJkY4AqxSZrHqfO+TRnWYRGVryY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562595818659476.50389873298616; Mon, 8 Jul 2019 07:23:38 -0700 (PDT) Received: from localhost ([::1]:42158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUYL-0006aX-5c for importer@patchew.org; Mon, 08 Jul 2019 10:23:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39912) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTc-0001qK-TR for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTb-0008VA-OW for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47568) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTY-0008LM-Be; Mon, 08 Jul 2019 10:18:40 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A1B902E95BE; Mon, 8 Jul 2019 14:18:34 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id 143B751DFA; Mon, 8 Jul 2019 14:18:30 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:10 +0200 Message-Id: <20190708141812.3974-5-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 08 Jul 2019 14:18:39 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 4/6] block/qcow: Improve error when opening qcow2 files as qcow X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: John Snow Reported-by: radmehrsaeed7@gmail.com Fixes: https://bugs.launchpad.net/bugs/1832914 Signed-off-by: John Snow Reviewed-by: Maxim Levitsky Reviewed-by: Eric Blake Signed-off-by: Kevin Wolf --- block/qcow.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/block/qcow.c b/block/qcow.c index 6dee5bb792..5bdf72ba33 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -156,7 +156,12 @@ static int qcow_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } if (header.version !=3D QCOW_VERSION) { - error_setg(errp, "Unsupported qcow version %" PRIu32, header.versi= on); + error_setg(errp, "qcow (v%d) does not support qcow version %" PRIu= 32, + QCOW_VERSION, header.version); + if (header.version =3D=3D 2 || header.version =3D=3D 3) { + error_append_hint(errp, "Try the 'qcow2' driver instead.\n"); + } + ret =3D -ENOTSUP; goto fail; } --=20 2.20.1 From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595780; cv=none; d=zoho.com; s=zohoarc; b=GKQS0YliZwkoOWT8q45OHk0RlmbEhm6YFamPj5e5RtQPFf0vd7VUpvguF8CqtuH9q94EskLBdD/oCzgNj4vAvf5dOzAWGkAq18R4IJkZAEv5mLvZ7OiedeKuXwEIN6Wc4c9m4OKcE1CIm05UbomUpv/A1N/M6gkK7EkCllQVs+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595780; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=KehiZrxEmc0aETkP/vXFRe48cw8lSBWGunlELhHgHog=; b=aZTAdWbi7n7BwD5mjT2oOIQQvqaQKHnbCtHHRugk59cvFnY5+kRxtCIZHBkjcI+pDP7uvkopp1aPEdX/sMPrb85+pDIJ3tQOT2+sE9ZeJQ095XyaI8RZhf3qiHrr70Ev8aN/e12Tsz/Bw224w8IBvS7jPKkMlkTHPXO8JgBmm4Q= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 156259578043845.22320253752116; Mon, 8 Jul 2019 07:23:00 -0700 (PDT) Received: from localhost ([::1]:42154 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUXe-000628-3Z for importer@patchew.org; Mon, 08 Jul 2019 10:22:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39831) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTY-0001fH-QP for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTX-0008LS-Rt for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:18:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59190) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTV-0008E4-O0; Mon, 08 Jul 2019 10:18:37 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F2D75A3B76; Mon, 8 Jul 2019 14:18:36 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id EBB4A2B1D1; Mon, 8 Jul 2019 14:18:34 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:11 +0200 Message-Id: <20190708141812.3974-6-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 08 Jul 2019 14:18:37 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 5/6] MAINTAINERS: update RBD block maintainer X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Jason Dillaman Remove Josh as per his request since he is no longer the upstream RBD tech lead. Add myself as the maintainer since I am the current RBD tech lead. Signed-off-by: Jason Dillaman Reviewed-by: Josh Durgin Signed-off-by: Kevin Wolf --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 2cce50287a..cc9636b43a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2385,7 +2385,7 @@ S: Supported F: block/vmdk.c =20 RBD -M: Josh Durgin +M: Jason Dillaman L: qemu-block@nongnu.org S: Supported F: block/rbd.c --=20 2.20.1 From nobody Tue May 7 06:25:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562595884; cv=none; d=zoho.com; s=zohoarc; b=RSYV7ZghAe2jXUr3LpiFTRPjrTH/aUzyo2Y8tMXve6xUDf/I2clJWvcxi+jYUyDDfx7P2vDSCxSIGpP3oCnwif2ivQOJS8yIQ+Qkc+5c1owFrc9NiABCgN25pT72eXDgLgzqn4i692p36f0oAp/cOT82cWfo7IF3DdDmEsHf6v8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562595884; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=EbISs1R9ySU2N8azjpqdj2BlcntfQ0E2dkO/UdSLaZc=; b=oMEq8g+gPATYA+b63LT2TImnQwSFABrZ2exBQ59X5nnV+WUwRXp6WI/6gPldnmdJO6PMYbWUSkke6zLdElfZZmd73thOtBYwhoPAL+4SHvtfCbfoLKs2aT3ySfpuRUlM4oxhZVVW6NvaAKHZ0tH/Dhf6oAbEwSAMOQs//SB/1ZM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562595884611459.3746549520582; Mon, 8 Jul 2019 07:24:44 -0700 (PDT) Received: from localhost ([::1]:42180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUZM-0008Oo-Jx for importer@patchew.org; Mon, 08 Jul 2019 10:24:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40008) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkUTw-0002Bt-N2 for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:19:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkUTt-0000id-QO for qemu-devel@nongnu.org; Mon, 08 Jul 2019 10:19:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43650) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hkUTo-0000Ux-Q0; Mon, 08 Jul 2019 10:18:57 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 52E5B3002738; Mon, 8 Jul 2019 14:18:40 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-116-204.ams2.redhat.com [10.36.116.204]) by smtp.corp.redhat.com (Postfix) with ESMTP id 492F851F02; Mon, 8 Jul 2019 14:18:37 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Mon, 8 Jul 2019 16:18:12 +0200 Message-Id: <20190708141812.3974-7-kwolf@redhat.com> In-Reply-To: <20190708141812.3974-1-kwolf@redhat.com> References: <20190708141812.3974-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Mon, 08 Jul 2019 14:18:45 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 6/6] qcow2: Allow -o compat=v3 during qemu-img amend X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Eric Blake Commit b76b4f60 allowed '-o compat=3Dv3' as an alias for the less-appealing '-o compat=3D1.1' for 'qemu-img create' since we want to use the QMP form as much as possible, but forgot to do likewise for qemu-img amend. Also, it doesn't help that '-o help' doesn't list our new preferred spellings. Signed-off-by: Eric Blake Signed-off-by: Kevin Wolf --- block/qcow2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 2a59eb27fe..039bdc2f7e 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -4823,9 +4823,9 @@ static int qcow2_amend_options(BlockDriverState *bs, = QemuOpts *opts, compat =3D qemu_opt_get(opts, BLOCK_OPT_COMPAT_LEVEL); if (!compat) { /* preserve default */ - } else if (!strcmp(compat, "0.10")) { + } else if (!strcmp(compat, "0.10") || !strcmp(compat, "v2")) { new_version =3D 2; - } else if (!strcmp(compat, "1.1")) { + } else if (!strcmp(compat, "1.1") || !strcmp(compat, "v3")) { new_version =3D 3; } else { error_setg(errp, "Unknown compatibility level %s", compat); @@ -5098,7 +5098,7 @@ static QemuOptsList qcow2_create_opts =3D { { .name =3D BLOCK_OPT_COMPAT_LEVEL, .type =3D QEMU_OPT_STRING, - .help =3D "Compatibility level (0.10 or 1.1)" + .help =3D "Compatibility level (v2 [0.10] or v3 [1.1])" }, { .name =3D BLOCK_OPT_BACKING_FILE, --=20 2.20.1