From nobody Wed May 8 23:53:10 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; dkim=fail; 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1560505271; cv=none; d=zoho.com; s=zohoarc; b=bKl0pByViAK4oo9g6r4a/1qym2mpHSg43OKqMcZK3JqSPWDbMj7D081xDfbqLVKJHArMNebGX8xvsConGwOQcS3rVYJP6DjCIPWiVOa90OBuEDRO4JslK4IFtQCKIteBaW12Ac+fBdTSX9QKfOqWdD4NGKk6Wxlh8q0sNwX6/Pc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560505271; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=MaNnBhq230BAubeMqIN5LqpwAUYnao6c+evwILoE4ik=; b=PSOWrhzN0bLJR3hFiv06XizSKE3WAF6/4dSecj5g6dc3gIRq/LhzhdfFIcGq/kS0aUV0BqibdeA4i9T42QPXLQCYn6CDP5YQHn1/ax9V1rhp9gTYOMPmfCYeC9X6wlUCB+pba85C7zdKL3GjS0I7Ve3B3w9/xbvJHUTGsUzr9KQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; 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 1560505271199649.9854698478475; Fri, 14 Jun 2019 02:41:11 -0700 (PDT) Received: from localhost ([::1]:49612 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbihq-00079g-0C for importer@patchew.org; Fri, 14 Jun 2019 05:41:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40605) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbieL-0004gq-Ih for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:37:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hbiZ4-0000mO-7N for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:07 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:42747) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hbiZ4-0000m7-1P for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:06 -0400 Received: by mail-pg1-x544.google.com with SMTP id l19so1213024pgh.9 for ; Fri, 14 Jun 2019 02:32:05 -0700 (PDT) Received: from localhost ([116.247.112.152]) by smtp.gmail.com with ESMTPSA id 24sm2166173pgn.32.2019.06.14.02.32.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2019 02:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MaNnBhq230BAubeMqIN5LqpwAUYnao6c+evwILoE4ik=; b=DTDUxy7THN8vdbsc/IYZQii4wnr6/XIVBLqdtAPiZr2gzGfmCI965b1y0kY3/PMVAa 6SdyvERRyTsczD+iLQN8kWwsXJNi2u3IDrKUApDX59UjXCaxx33EcITzGhu5HTVfwglq Ib782zDbkJEKljRN3qwTSe87AWm8zxGakol7XTTShR6h0haa0bVgEjSaQ/2mrh5/J67P l9ijbuX43Lo71uWNr5sMKR6YAUtgCz+ePHlmp6mYvunKHRN7iu+2qC41NdeGjoM049Y3 3i2WyNECmaWwefCEnAqoM/QbQ7mBfhnvDCr5xES5zUu6WZf8lHSzy3XJ9d0vPG2/zqGp UE7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MaNnBhq230BAubeMqIN5LqpwAUYnao6c+evwILoE4ik=; b=LE+7/lRGEEgKhADD2aY/ilV4asx34rJ2A8VI57BxtF6DMyHGuGbYJJDDVzdfifmo/g UvCFGjVfrzL6cmKlclYCrhJ8ZdMxx1rnrLjx/LRJ/iBEzEda2MPyYUQ8kH/MJiSPXIgi XjrEJIqsqZVNgwk0h5zsbyrzlt5ELyzHud82ZPJCdC7BF6Req0EYBaXRXoOI+jI967z1 WCBGPyuY5F2BVokFWa+QIf9k8BVw/iXM8qXYZepedqDOItLsA36GfkIdBPb3Y4707jxT i8TL3HmwglDokzg8dz2hoIS0V7NCd1ETnHYeIdijuaxADePjt3sAk3Fc3KuyvkKRekMd VLaw== X-Gm-Message-State: APjAAAWbgVxdJX2+cimWCQbmZlDz/4Qb1e6XUndkVMp3mRTlaZLUHVZN FZ+LPnzApCOv0AJfBMuGPuk= X-Google-Smtp-Source: APXvYqy27LsXxxAhrUE6QdMBKy+muFTNJE23qY3Ji73EOfRIQt6kfBeI/ZNdQa+3TAubavAhlp3E4Q== X-Received: by 2002:a62:a511:: with SMTP id v17mr95204312pfm.129.1560504725081; Fri, 14 Jun 2019 02:32:05 -0700 (PDT) From: elohimes@gmail.com X-Google-Original-From: xieyongji@baidu.com To: mst@redhat.com, groug@kaod.org Date: Fri, 14 Jun 2019 17:31:17 +0800 Message-Id: <20190614093121.5580-2-xieyongji@baidu.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614093121.5580-1-xieyongji@baidu.com> References: <20190614093121.5580-1-xieyongji@baidu.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH v3 1/5] virtio: add "use-started" property 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: qemu-devel@nongnu.org, Xie Yongji , dgilbert@redhat.com, ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Xie Yongji In order to avoid migration issues, we introduce a "use-started" property to the base virtio device to indicate whether use "started" flag or not. This property will be true by default and set to false when machine type <=3D 4.0.1. Suggested-by: Greg Kurz Signed-off-by: Xie Yongji --- hw/block/vhost-user-blk.c | 4 ++-- hw/core/machine.c | 8 ++++++-- hw/virtio/virtio.c | 18 +++++++----------- include/hw/virtio/virtio.h | 21 +++++++++++++++++++++ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 9cb61336a6..85bc4017e7 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -191,7 +191,7 @@ static void vhost_user_blk_stop(VirtIODevice *vdev) static void vhost_user_blk_set_status(VirtIODevice *vdev, uint8_t status) { VHostUserBlk *s =3D VHOST_USER_BLK(vdev); - bool should_start =3D vdev->started; + bool should_start =3D virtio_device_started(vdev, status); int ret; =20 if (!vdev->vm_running) { @@ -317,7 +317,7 @@ static int vhost_user_blk_connect(DeviceState *dev) } =20 /* restore vhost state */ - if (vdev->started) { + if (virtio_device_started(vdev, vdev->status)) { ret =3D vhost_user_blk_start(vdev); if (ret < 0) { error_report("vhost-user-blk: vhost start failed: %s", diff --git a/hw/core/machine.c b/hw/core/machine.c index f1a0f45f9c..60d1e27d2c 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -24,10 +24,14 @@ #include "hw/pci/pci.h" #include "hw/mem/nvdimm.h" =20 -GlobalProperty hw_compat_4_0_1[] =3D {}; +GlobalProperty hw_compat_4_0_1[] =3D { + { "virtio-device", "use-started", "false" }, +}; const size_t hw_compat_4_0_1_len =3D G_N_ELEMENTS(hw_compat_4_0_1); =20 -GlobalProperty hw_compat_4_0[] =3D {}; +GlobalProperty hw_compat_4_0[] =3D { + { "virtio-device", "use-started", "false" }, +}; const size_t hw_compat_4_0_len =3D G_N_ELEMENTS(hw_compat_4_0); =20 GlobalProperty hw_compat_3_1[] =3D { diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 07f4a64b48..19062fbb96 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1162,10 +1162,8 @@ int virtio_set_status(VirtIODevice *vdev, uint8_t va= l) } } } - vdev->started =3D val & VIRTIO_CONFIG_S_DRIVER_OK; - if (unlikely(vdev->start_on_kick && vdev->started)) { - vdev->start_on_kick =3D false; - } + + virtio_set_started(vdev, val & VIRTIO_CONFIG_S_DRIVER_OK); =20 if (k->set_status) { k->set_status(vdev, val); @@ -1536,8 +1534,7 @@ static bool virtio_queue_notify_aio_vq(VirtQueue *vq) ret =3D vq->handle_aio_output(vdev, vq); =20 if (unlikely(vdev->start_on_kick)) { - vdev->started =3D true; - vdev->start_on_kick =3D false; + virtio_set_started(vdev, true); } } =20 @@ -1557,8 +1554,7 @@ static void virtio_queue_notify_vq(VirtQueue *vq) vq->handle_output(vdev, vq); =20 if (unlikely(vdev->start_on_kick)) { - vdev->started =3D true; - vdev->start_on_kick =3D false; + virtio_set_started(vdev, true); } } } @@ -1579,8 +1575,7 @@ void virtio_queue_notify(VirtIODevice *vdev, int n) } =20 if (unlikely(vdev->start_on_kick)) { - vdev->started =3D true; - vdev->start_on_kick =3D false; + virtio_set_started(vdev, true); } } =20 @@ -2291,7 +2286,7 @@ static void virtio_vmstate_change(void *opaque, int r= unning, RunState state) VirtIODevice *vdev =3D opaque; BusState *qbus =3D qdev_get_parent_bus(DEVICE(vdev)); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); - bool backend_run =3D running && vdev->started; + bool backend_run =3D running && virtio_device_started(vdev, vdev->stat= us); vdev->vm_running =3D running; =20 if (backend_run) { @@ -2669,6 +2664,7 @@ static void virtio_device_instance_finalize(Object *o= bj) =20 static Property virtio_properties[] =3D { DEFINE_VIRTIO_COMMON_FEATURES(VirtIODevice, host_features), + DEFINE_PROP_BOOL("use-started", VirtIODevice, use_started, true), DEFINE_PROP_END_OF_LIST(), }; =20 diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 27c0efc3d0..15d5366939 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -105,6 +105,7 @@ struct VirtIODevice uint16_t device_id; bool vm_running; bool broken; /* device in invalid state, needs reset */ + bool use_started; bool started; bool start_on_kick; /* virtio 1.0 transitional devices support that */ VMChangeStateEntry *vmstate; @@ -351,4 +352,24 @@ static inline bool virtio_is_big_endian(VirtIODevice *= vdev) /* Devices conforming to VIRTIO 1.0 or later are always LE. */ return false; } + +static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t statu= s) +{ + if (vdev->use_started) { + return vdev->started; + } + + return status & VIRTIO_CONFIG_S_DRIVER_OK; +} + +static inline void virtio_set_started(VirtIODevice *vdev, bool started) +{ + if (started) { + vdev->start_on_kick =3D false; + } + + if (vdev->use_started) { + vdev->started =3D started; + } +} #endif --=20 2.17.1 From nobody Wed May 8 23:53:10 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; dkim=fail; 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1560505940; cv=none; d=zoho.com; s=zohoarc; b=DstExhf/i+CgWJte6TR+phYiIHms6JdX/B8l6etI8kraWmfT5I/4i2T2CsU2Rv9mHI7pY7x9SfUQo2Z5G+IeEVYwgjNnVUlkklztZoZWZ4CFT+YK4aqV8NfDTmHakY0PoJHm0d/D49IwlH1VwLW7kGNj8Pf7eFLXQirjDm6Wevo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560505940; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=uXimO1fIrN/suCveCkDvGhUQ6cXgmIUR+zvZ/sjAqMA=; b=U6ZCD+fqF/BPWf1AzDnCkjaVuw/Zh+gsLZUpehy0NjrOC9B5yFuUageufFPAlA9Y0F8Pv/b68gwJ8WstHOwU2m8Gf+ZS69/FTPTQl+ZWx69FslKmKbJ/RW07DOw/dr8U89ksqtqAnSmsmYIl+IXZS0h6kiO+aT3/hxGunopcuI0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; 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 1560505940299345.31641899748445; Fri, 14 Jun 2019 02:52:20 -0700 (PDT) Received: from localhost ([::1]:49698 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbisd-0000oW-AZ for importer@patchew.org; Fri, 14 Jun 2019 05:52:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40698) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbieL-0004hV-GP for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:37:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hbiZ7-0000nP-2R for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:09 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:44739) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hbiZ6-0000mw-TF for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:09 -0400 Received: by mail-pf1-x444.google.com with SMTP id t16so1084997pfe.11 for ; Fri, 14 Jun 2019 02:32:08 -0700 (PDT) Received: from localhost ([116.247.112.152]) by smtp.gmail.com with ESMTPSA id j8sm2134156pfi.148.2019.06.14.02.32.07 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2019 02:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uXimO1fIrN/suCveCkDvGhUQ6cXgmIUR+zvZ/sjAqMA=; b=JPZ2VhFsJRluFjtUxMi88kSfvo4YX+asIgRqnRZfntfVdBfPUonLJGXY8+2C6zaTj/ pu3EzrAoCZp1y/j2RkUMdpY9GYagH8UgRdLG0Nw6W/o0qELz8rTn+giJBxD4dmROZDVb maHECFWkeYHC/BzpaTD2cic/DuWnKufJlv3SGTRKJD7+Q9DDDmQG8SBo0b8wM09kK+xh FXIXUMU7FXV/tFcHCFKbqkKoPpsmLtLHUvFVAYVyHfGXrH21vdtvh9LLp93UDwLAQL+6 DkYnl6rxkbjfNCZ48SamO9i42zGAyfXoEuxvbvMb9ew58bK2WevIsmBsl2K0nfwySx1m rnAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uXimO1fIrN/suCveCkDvGhUQ6cXgmIUR+zvZ/sjAqMA=; b=JAdqxnx2EP8Wt8Hbq/7DSOQv/H7BuDdRkYzXo8MeSOJzlbaHkzSiEeKyYUXLYQxgMP I6ARETIEhXoMo1H8UwDoCBHkJzljAl2Tpx1p8QDpaPyiHfTUnOAnSs0boRLjYWvtcspG 3dAeEMIURVWfTcwbYqO4Ugy1bzt6M6xIqb9xBcqUoq+zNxgsZPi4Ea3j02N5dl8n/vmo I3yrcF4OAeK/0l0fNKYvWlzrwTz7WVOW2FOS5JXYhoXsD/cvqjS/pBLVckDLVA6T25dL PofYyyI+XFSEqbPb+RdiGnFjir4GFoCY4gGNRUwB61sh4ZLIhY0cOTtQ8JyE3kbS9z8P SWIg== X-Gm-Message-State: APjAAAW/du5q1Az/KpXEj6/P3m2A4S5pcTnSTi9eJXgokHNJD7oOPNYb 9Ntg/rMDK3s/1z+JX9tcJhY= X-Google-Smtp-Source: APXvYqw+VlBZU72y/mvqwSUeSEPehB3IAora8db+7KXnXe3oL8o2zJtQ5UsrWviP9ycV2/GXenJbtw== X-Received: by 2002:a65:510c:: with SMTP id f12mr33622507pgq.92.1560504727855; Fri, 14 Jun 2019 02:32:07 -0700 (PDT) From: elohimes@gmail.com X-Google-Original-From: xieyongji@baidu.com To: mst@redhat.com, groug@kaod.org Date: Fri, 14 Jun 2019 17:31:18 +0800 Message-Id: <20190614093121.5580-3-xieyongji@baidu.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614093121.5580-1-xieyongji@baidu.com> References: <20190614093121.5580-1-xieyongji@baidu.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::444 Subject: [Qemu-devel] [PATCH v3 2/5] virtio: Set "start_on_kick" for legacy devices 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: qemu-devel@nongnu.org, Xie Yongji , dgilbert@redhat.com, ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Xie Yongji Besides virtio 1.0 transitional devices, we should also set "start_on_kick" flag for legacy devices (virtio 0.9). Signed-off-by: Xie Yongji Reviewed-by: Greg Kurz --- hw/virtio/virtio.c | 6 ++---- include/hw/virtio/virtio.h | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 19062fbb96..473881e9ec 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1212,8 +1212,7 @@ void virtio_reset(void *opaque) k->reset(vdev); } =20 - vdev->start_on_kick =3D (virtio_host_has_feature(vdev, VIRTIO_F_VERSIO= N_1) && - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_= 1)); + vdev->start_on_kick =3D !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSIO= N_1); vdev->started =3D false; vdev->broken =3D false; vdev->guest_features =3D 0; @@ -2325,8 +2324,7 @@ void virtio_init(VirtIODevice *vdev, const char *name, g_malloc0(sizeof(*vdev->vector_queues) * nvectors); } =20 - vdev->start_on_kick =3D (virtio_host_has_feature(vdev, VIRTIO_F_VERSIO= N_1) && - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_= 1)); + vdev->start_on_kick =3D !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSIO= N_1); vdev->started =3D false; vdev->device_id =3D device_id; vdev->status =3D 0; diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 15d5366939..b189788cb2 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -107,7 +107,7 @@ struct VirtIODevice bool broken; /* device in invalid state, needs reset */ bool use_started; bool started; - bool start_on_kick; /* virtio 1.0 transitional devices support that */ + bool start_on_kick; /* when virtio 1.0 feature has not been negotiated= */ VMChangeStateEntry *vmstate; char *bus_name; uint8_t device_endian; --=20 2.17.1 From nobody Wed May 8 23:53:10 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; dkim=fail; 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1560505445; cv=none; d=zoho.com; s=zohoarc; b=Ig20SQ302wmO9B/xUhdL1z65NROEZO7gxSeP1n05B10jIaSOQmTvSuOMxem0LqUZiB9hDjbKwzo2+NufncyLe4QIXF72kARYAYTojjyrfbkInT0plTL7xGnE8G+msCsKcHjLlwgJybSnuPfqc4imsZSVI5gx2yloZkCtStjaOGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560505445; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=5gEwUgV90VGPkybRlF87iI9aEs2jpt7pXyXMGJx2x8Y=; b=KkD0ef7UCoWnvyVLDHXSvTxd2/yyBomqhcUODaYNVue1Kp6/t8PoDbZQQa37c1YtMqyB1WMs4dMYqMQevdVl36RU61mx5Bt5Ki0VZ72U92mlSP0QXGA4Xjeqwy//H2OV1wZICakFobQpS6gBvLL7/JLVbOglBTwF/qndHiLy84E= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; 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 1560505445850540.8379853049801; Fri, 14 Jun 2019 02:44:05 -0700 (PDT) Received: from localhost ([::1]:49632 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbikb-0001vV-Fl for importer@patchew.org; Fri, 14 Jun 2019 05:44:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40783) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbieL-0004oG-Fb for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:37:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hbiZ9-0000oH-QK for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:12 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:41939) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hbiZ9-0000nu-KL for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:11 -0400 Received: by mail-pf1-x443.google.com with SMTP id m30so1093071pff.8 for ; Fri, 14 Jun 2019 02:32:11 -0700 (PDT) Received: from localhost ([116.247.112.152]) by smtp.gmail.com with ESMTPSA id a16sm2192308pfc.167.2019.06.14.02.32.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2019 02:32:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5gEwUgV90VGPkybRlF87iI9aEs2jpt7pXyXMGJx2x8Y=; b=BwaiTHXxkT6K7/708vu76GMse0kABjKG3hkK+BaBl8N36soaDkPMff4FsXjkSATTUV SKteHTtQF9QGG+E0uf9O48Qo/GnSsaeFrHj/mAXM/Bl3Qf/IP2Uku8Ew8yLZGhyuTI2u Ko+A/u9rdNnZ9lG4Mfpb2AjN+lPGk4cBGzHuaIZQJxGRs9sNzcb+MX93538H4kXGNzqV CCfgX37wiGWX/oQN4tia/0Kochp9yI9glYBTkv9vs3DfRgH91gCsIp8UGvzspV//SHJp GsFI91R4Dy449oNAJtXvhLcs1mo6nLBNaw/hFJd9Pezr8LimssfdHQpt56g/cpziQ1cS jkwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5gEwUgV90VGPkybRlF87iI9aEs2jpt7pXyXMGJx2x8Y=; b=t51Oq5/ogBrdcZDPoAVm5U0NFRhkyIE7M4VAAHsKffbZGtqwxG0+Ouoix0waJqoQMh GXM0CSpLqf+jspTbvarTheZoyzC9M/QoYILAuY0JOD6PJXWSgTYnc/fyp/tRLdz8S98m lj7MKGDxkuQ0g4aSY7wGQXLp9oEzKjunLPkJrF7/e+oMqXbaAmNKaYZ1S5RYE4w/N9iB 5sh2TfOdKqV8dz5HA7l879/SNufF6ezkayT/UR4CwiZABNrbSHHVVtnbHA0/MNDWoMKW NQ2SNUqSp4Xb3ApI1EqZoNRRBIIc5BQM4aoCj1yCOI44DR94INtfMkAsq97bOFJ/bd6B 3Mrg== X-Gm-Message-State: APjAAAVNWa5ZAX/xBy8kz9mCXXQBwaP/Ech0q5g/HVLmZ9FIC1Roj4qn Pd1djHZiqU+WWgVDQt4HR0o= X-Google-Smtp-Source: APXvYqzj/n2IdbnCf8ihfJiEN6zuoZ+ug1PQVlNbzde0lWnz1DjFhmjcP53JbrImofNiKV0JvQgVVg== X-Received: by 2002:a63:8449:: with SMTP id k70mr35872853pgd.208.1560504730772; Fri, 14 Jun 2019 02:32:10 -0700 (PDT) From: elohimes@gmail.com X-Google-Original-From: xieyongji@baidu.com To: mst@redhat.com, groug@kaod.org Date: Fri, 14 Jun 2019 17:31:19 +0800 Message-Id: <20190614093121.5580-4-xieyongji@baidu.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614093121.5580-1-xieyongji@baidu.com> References: <20190614093121.5580-1-xieyongji@baidu.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH v3 3/5] virtio: Set "start_on_kick" on virtio_set_features() 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: qemu-devel@nongnu.org, Xie Yongji , dgilbert@redhat.com, ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Xie Yongji The guest feature is not set correctly on virtio_reset() and virtio_init(). So we should not use it to set "start_on_kick" at that point. This patch set "start_on_kick" on virtio_set_features() instead. Fixes: badaf79cfdbd3 ("virtio: Introduce started flag to VirtioDevice") Signed-off-by: Xie Yongji Reviewed-by: Greg Kurz --- hw/virtio/virtio.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 473881e9ec..034320d277 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1212,7 +1212,7 @@ void virtio_reset(void *opaque) k->reset(vdev); } =20 - vdev->start_on_kick =3D !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSIO= N_1); + vdev->start_on_kick =3D false; vdev->started =3D false; vdev->broken =3D false; vdev->guest_features =3D 0; @@ -2063,14 +2063,21 @@ int virtio_set_features(VirtIODevice *vdev, uint64_= t val) return -EINVAL; } ret =3D virtio_set_features_nocheck(vdev, val); - if (!ret && virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) { - /* VIRTIO_RING_F_EVENT_IDX changes the size of the caches. */ - int i; - for (i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { - if (vdev->vq[i].vring.num !=3D 0) { - virtio_init_region_cache(vdev, i); + if (!ret) { + if (virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) { + /* VIRTIO_RING_F_EVENT_IDX changes the size of the caches. */ + int i; + for (i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { + if (vdev->vq[i].vring.num !=3D 0) { + virtio_init_region_cache(vdev, i); + } } } + + if (!virtio_device_started(vdev, vdev->status) && + !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { + vdev->start_on_kick =3D true; + } } return ret; } @@ -2222,6 +2229,11 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f, int= version_id) } } =20 + if (!virtio_device_started(vdev, vdev->status) && + !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { + vdev->start_on_kick =3D true; + } + rcu_read_lock(); for (i =3D 0; i < num; i++) { if (vdev->vq[i].vring.desc) { @@ -2324,7 +2336,7 @@ void virtio_init(VirtIODevice *vdev, const char *name, g_malloc0(sizeof(*vdev->vector_queues) * nvectors); } =20 - vdev->start_on_kick =3D !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSIO= N_1); + vdev->start_on_kick =3D false; vdev->started =3D false; vdev->device_id =3D device_id; vdev->status =3D 0; --=20 2.17.1 From nobody Wed May 8 23:53:10 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; dkim=fail; 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1560505452; cv=none; d=zoho.com; s=zohoarc; b=U94uGIDq2mNtx7bLcMHEQhuwL5LJ6O8me339zEIQRMh+7WnUw3PHOyBYJJzm2mP0n8+0TuahfStnfn6j9mKinFEnlMFoaqPlndWklkyPGFuGjuf6i8kn617OpZQo+r1k3Dce0SiEm+msr+hmIyt10wESTG//zIlOdA8HpoDjP68= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560505452; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=dzTNWL7QYHXYrYeoVVUd6Gcm/t/F3nzsiE9MlJaHKkY=; b=GnFWn88f+Ufoe06YSrR2Z8a4q2PPCoDjVRbvVtzyTvlMsX8fwjNa79y7Yh2QOu7TbxgGmnmVquPMVLnxTF2KUeTDtslD5nVWbJIk5gC0UtK2FmQgthSjl0rjdhgpGlM3Ips5O8BoZYCK9T/RFeUYMEv+G90DoikYjdMyUKqMr98= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; 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 1560505452590254.4692359888238; Fri, 14 Jun 2019 02:44:12 -0700 (PDT) Received: from localhost ([::1]:49634 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbikg-0002F5-Gu for importer@patchew.org; Fri, 14 Jun 2019 05:44:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40605) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbieK-0004gq-77 for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:37:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hbiZD-0000pL-DA for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:16 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:46461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hbiZD-0000pF-78 for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:15 -0400 Received: by mail-pg1-x544.google.com with SMTP id v9so1204125pgr.13 for ; Fri, 14 Jun 2019 02:32:15 -0700 (PDT) Received: from localhost ([116.247.112.152]) by smtp.gmail.com with ESMTPSA id f11sm8113834pjg.1.2019.06.14.02.32.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2019 02:32:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dzTNWL7QYHXYrYeoVVUd6Gcm/t/F3nzsiE9MlJaHKkY=; b=inzXWINMXCpAmFDZiV2imzYQs4R/vtHlNH/9ByH5fhb52IIVP5nOP+LS0BkfA9TJ5G 9/0taxQX0YXPqs0nyBbWO3GJVadE+eujzv1918Oh7atkisbezqrK7P4LKONn5e+WIcNI VtcT82HHmcbbMl9WvGnK/Xhr90r4x2PZ8wBIyANzE9s/zwjNznTnEp5pLbl+75hBJIT/ z+oFxGPqRdbgfXtzxAsW2vQxeEagV54E9+xH2UL1LPoPqXGnxCCarV4QLdBnd12c0Qy4 NLgSoA68HYDHjs3fVVUwf2k9zTpTpGwMp3tNIDtUXku7TiJzNlbs9CS1vaGuh1PQZ6vx Bwow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dzTNWL7QYHXYrYeoVVUd6Gcm/t/F3nzsiE9MlJaHKkY=; b=Uk3GoZbY715dNf72TN/T0JbezJzrj1q64QP1b1MgDNlxqbXuUIoeT8NdW9xgCU0g5x vhzkOsxmqHVf+W0zNZqc7R5sWKC8dU0xVp0E+R0rGBfByZxnI3bmTnIb5fMA6EOs1kWX KLIJyF8RKSqLZb+jsdjTBt+8FWCkcr7JQ6Gw3U1aSuoeHK9D0S1cbR/IKyGsNuYWuDjq yY7lYrQFv+7MWY8uKKKuCf7O21aEa2ATMwexkOV6c7RyKl0jVmByOog2ZYfUGgtjofJw pO2N3Yp82cEHSS2xSbY1mAcN5y5qZu0fSGZWoidZptqCe4mVIcvrsQ9gE8SgY6UxPa91 S5Pg== X-Gm-Message-State: APjAAAUTJTKlHh71Ur7rYdeKSWM2ldocdL158fXSCvDwl0aZoc+peBqS UJ0STSztiUyRL/kfrscKJRc= X-Google-Smtp-Source: APXvYqyQwF9C1bku9mPv3UA6kcin3IDwL9/gMImtinrEIL9CwSLIaUpU3ADaKu4X5kQ617Jh7PTj9g== X-Received: by 2002:a17:90a:2244:: with SMTP id c62mr10336832pje.29.1560504734518; Fri, 14 Jun 2019 02:32:14 -0700 (PDT) From: elohimes@gmail.com X-Google-Original-From: xieyongji@baidu.com To: mst@redhat.com, groug@kaod.org Date: Fri, 14 Jun 2019 17:31:20 +0800 Message-Id: <20190614093121.5580-5-xieyongji@baidu.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614093121.5580-1-xieyongji@baidu.com> References: <20190614093121.5580-1-xieyongji@baidu.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH v3 4/5] virtio: Make sure we get correct state of device on handle_aio_output() 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: qemu-devel@nongnu.org, Xie Yongji , dgilbert@redhat.com, ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Xie Yongji We should set the flags: "start_on_kick" and "started" after we call the kick functions (handle_aio_output() and handle_output()). Signed-off-by: Xie Yongji --- hw/virtio/virtio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 034320d277..b4301f9e02 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1571,10 +1571,10 @@ void virtio_queue_notify(VirtIODevice *vdev, int n) event_notifier_set(&vq->host_notifier); } else if (vq->handle_output) { vq->handle_output(vdev, vq); - } =20 - if (unlikely(vdev->start_on_kick)) { - virtio_set_started(vdev, true); + if (unlikely(vdev->start_on_kick)) { + virtio_set_started(vdev, true); + } } } =20 --=20 2.17.1 From nobody Wed May 8 23:53:10 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; dkim=fail; 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1560505736; cv=none; d=zoho.com; s=zohoarc; b=KI27e/HPMvK/yFU6buAKVfSFm7PbUvXLefVSmmYnSsmcGVYOcv6ODlf2WPHkSJcfOcgGalaQ8im1E5f3uJK1ybEjhexhqwpmexqsrkSbcZP9ttsIJNR8nO/oONNAz8ALgQ/qsmpMdfDNM6Ay2Fv+60OoT9DWSlzAArb10J+re+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560505736; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=XDE2icSbolLOa01WawYlTzTQ3MDApcSEwbj0XrcaTAM=; b=g2xCB43yPMGbCDsgVXdSt3P3jyCsDJmbXGvrUIMv8trInxc2jcpRw2UQ4llrMwvFzuZ4GdyjrGvG+3YRmTLNNuiOc+lhEhbC8sdATbOvR4oabFHItLgwfmkD7Bgj+KQr4UhHkwPdwMFnH2KGKSTgNXBKW5A5PcIkEqZNgxEUmrw= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; 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 1560505736789786.2600173788676; Fri, 14 Jun 2019 02:48:56 -0700 (PDT) Received: from localhost ([::1]:49672 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbipG-0005sq-KU for importer@patchew.org; Fri, 14 Jun 2019 05:48:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40783) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hbieK-0004oG-56 for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:37:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hbiZF-0000q9-RY for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:18 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:38858) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hbiZF-0000pv-Md for qemu-devel@nongnu.org; Fri, 14 Jun 2019 05:32:17 -0400 Received: by mail-pf1-x441.google.com with SMTP id a186so1098737pfa.5 for ; Fri, 14 Jun 2019 02:32:17 -0700 (PDT) Received: from localhost ([116.247.112.152]) by smtp.gmail.com with ESMTPSA id o26sm2300980pgv.47.2019.06.14.02.32.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2019 02:32:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XDE2icSbolLOa01WawYlTzTQ3MDApcSEwbj0XrcaTAM=; b=hVsud2sK/QSUbdHBBRmIvY5nK5Pam3KE4VfxjiBlZYAALULvpakZksta5eDLByRQA9 bEvEGs4CgwjIlqb26WM3jgQakL2vKyllH2AlyAAiD3RzH9UaUhiMS9a/HxGqkzg4tcZM RjbvvzpHsbhITFpYQPf9uewQB7OYupwjcfS2BVaKh4dnMLcxmrnsfVT5B27CNY0cueTw dY7mIBrb6OURmBt//zJoLgtlR2tKicH8Jdi5Wy8XfyIADNMRJPBTZgGIhdZTtlbKUl2n QhK9WmENo1GIXCXwwL9dR2WJte/P6Vd3XoxZ7QC8AHRRB9qghKsliisxIRdro37ENKng 8tbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XDE2icSbolLOa01WawYlTzTQ3MDApcSEwbj0XrcaTAM=; b=bTMlZunTYlnV5nsWWAORE0l42csCjdzxrJJJDDYCdQId36q1VChren9Sr1cX3TEOQ9 lZ9tj8CKoq617+pWqyR3LwUJEu0JUh2qUJGyibn0FBDv3FOZ9rc+hDZYlll6T1Bu4KZk +aj4ADJf/MPLh8nfMvkkJ2iVX0kMk9lqGG4SSZvIKgCyCFWE2zGVbXuvMacl0UUATD6R TOYBhPgPthPg9tRamylLnFhEp1R8ZCcdlVB9/qUFhhj2ZRiJFGqp/ydwPNOvHfzGDpp6 Om77Tjp7/1fbf9SiNbo3ba0bdVsUsIxBA3XE4SKxumgYDRBS2F+VUUALUvctgZsfwCXl gX/w== X-Gm-Message-State: APjAAAU/5Wes8r9zUPGqDk/0K95Uq8Hj5sD6kJ1Jt5X1tHI9tvFbJ7Tc L7rsLYuH2mAYlvxMXe5S/qc= X-Google-Smtp-Source: APXvYqx3D1bPiHSnIanbuiAHuzs4AsQDW/a5swnZaz8bNEqpaS9eOWEyW9ZnCXeaDTJwS+pwTHnLxw== X-Received: by 2002:a63:f959:: with SMTP id q25mr26668682pgk.357.1560504736820; Fri, 14 Jun 2019 02:32:16 -0700 (PDT) From: elohimes@gmail.com X-Google-Original-From: xieyongji@baidu.com To: mst@redhat.com, groug@kaod.org Date: Fri, 14 Jun 2019 17:31:21 +0800 Message-Id: <20190614093121.5580-6-xieyongji@baidu.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614093121.5580-1-xieyongji@baidu.com> References: <20190614093121.5580-1-xieyongji@baidu.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::441 Subject: [Qemu-devel] [PATCH v3 5/5] virtio: Don't change "started" flag on virtio_vmstate_change() 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: qemu-devel@nongnu.org, Xie Yongji , dgilbert@redhat.com, ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Xie Yongji We will call virtio_set_status() on virtio_vmstate_change(). The "started" flag should not be changed in this case. Otherwise, we may get an incorrect value when we set "started" flag but not set DRIVER_OK in source VM. Signed-off-by: Xie Yongji --- hw/virtio/virtio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index b4301f9e02..9af2e339af 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1163,7 +1163,10 @@ int virtio_set_status(VirtIODevice *vdev, uint8_t va= l) } } =20 - virtio_set_started(vdev, val & VIRTIO_CONFIG_S_DRIVER_OK); + if ((vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) !=3D + (val & VIRTIO_CONFIG_S_DRIVER_OK)) { + virtio_set_started(vdev, val & VIRTIO_CONFIG_S_DRIVER_OK); + } =20 if (k->set_status) { k->set_status(vdev, val); --=20 2.17.1