From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Mathieu Poirier" <mathieu.poirier@linaro.org>,
virtio-fs@redhat.com, "Viresh Kumar" <viresh.kumar@linaro.org>
Subject: Re: [PULL 07/55] hw/virtio: move vm_running check to virtio_device_started
Date: Sat, 5 Nov 2022 12:45:54 -0400 [thread overview]
Message-ID: <20221105093645-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20221010172813.204597-8-mst@redhat.com>
On Mon, Oct 10, 2022 at 01:29:10PM -0400, Michael S. Tsirkin wrote:
> From: Alex Bennée <alex.bennee@linaro.org>
>
> All the boilerplate virtio code does the same thing (or should at
> least) of checking to see if the VM is running before attempting to
> start VirtIO. Push the logic up to the common function to avoid
> getting a copy and paste wrong.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Message-Id: <20220802095010.3330793-11-alex.bennee@linaro.org>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
So, looking at the resulting code, I missed the fact that this function
is also used in virtio core. So this patch does not do what it's saying
it does (just refactor code).
Instead it completely changes the meaning for virtio core.
I thunk we should revert upstream, however, gpio has grown a
dependency on this since then.
Alex, could you take a look please?
> ---
> include/hw/virtio/virtio.h | 5 +++++
> hw/virtio/vhost-user-fs.c | 6 +-----
> hw/virtio/vhost-user-i2c.c | 6 +-----
> hw/virtio/vhost-user-rng.c | 6 +-----
> hw/virtio/vhost-user-vsock.c | 6 +-----
> hw/virtio/vhost-vsock.c | 6 +-----
> 6 files changed, 10 insertions(+), 25 deletions(-)
>
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index 9bb2485415..74e7ad5a92 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -100,6 +100,7 @@ struct VirtIODevice
> VirtQueue *vq;
> MemoryListener listener;
> uint16_t device_id;
> + /* @vm_running: current VM running state via virtio_vmstate_change() */
> bool vm_running;
> bool broken; /* device in invalid state, needs reset */
> bool use_disabled_flag; /* allow use of 'disable' flag when needed */
> @@ -376,6 +377,10 @@ static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t status)
> return vdev->started;
> }
>
> + if (!vdev->vm_running) {
> + return false;
> + }
> +
> return status & VIRTIO_CONFIG_S_DRIVER_OK;
> }
>
> diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c
> index e513e4fdda..d2bebba785 100644
> --- a/hw/virtio/vhost-user-fs.c
> +++ b/hw/virtio/vhost-user-fs.c
> @@ -122,11 +122,7 @@ static void vuf_stop(VirtIODevice *vdev)
> static void vuf_set_status(VirtIODevice *vdev, uint8_t status)
> {
> VHostUserFS *fs = VHOST_USER_FS(vdev);
> - bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
> -
> - if (!vdev->vm_running) {
> - should_start = false;
> - }
> + bool should_start = virtio_device_started(vdev, status);
>
> if (fs->vhost_dev.started == should_start) {
> return;
> diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c
> index 6020eee093..b930cf6d5e 100644
> --- a/hw/virtio/vhost-user-i2c.c
> +++ b/hw/virtio/vhost-user-i2c.c
> @@ -93,11 +93,7 @@ static void vu_i2c_stop(VirtIODevice *vdev)
> static void vu_i2c_set_status(VirtIODevice *vdev, uint8_t status)
> {
> VHostUserI2C *i2c = VHOST_USER_I2C(vdev);
> - bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
> -
> - if (!vdev->vm_running) {
> - should_start = false;
> - }
> + bool should_start = virtio_device_started(vdev, status);
>
> if (i2c->vhost_dev.started == should_start) {
> return;
> diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c
> index 3a7bf8e32d..a9c1c4bc79 100644
> --- a/hw/virtio/vhost-user-rng.c
> +++ b/hw/virtio/vhost-user-rng.c
> @@ -90,11 +90,7 @@ static void vu_rng_stop(VirtIODevice *vdev)
> static void vu_rng_set_status(VirtIODevice *vdev, uint8_t status)
> {
> VHostUserRNG *rng = VHOST_USER_RNG(vdev);
> - bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
> -
> - if (!vdev->vm_running) {
> - should_start = false;
> - }
> + bool should_start = virtio_device_started(vdev, status);
>
> if (rng->vhost_dev.started == should_start) {
> return;
> diff --git a/hw/virtio/vhost-user-vsock.c b/hw/virtio/vhost-user-vsock.c
> index 0f8ff99f85..22c1616ebd 100644
> --- a/hw/virtio/vhost-user-vsock.c
> +++ b/hw/virtio/vhost-user-vsock.c
> @@ -55,11 +55,7 @@ const VhostDevConfigOps vsock_ops = {
> static void vuv_set_status(VirtIODevice *vdev, uint8_t status)
> {
> VHostVSockCommon *vvc = VHOST_VSOCK_COMMON(vdev);
> - bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
> -
> - if (!vdev->vm_running) {
> - should_start = false;
> - }
> + bool should_start = virtio_device_started(vdev, status);
>
> if (vvc->vhost_dev.started == should_start) {
> return;
> diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
> index 0338de892f..8031c164a5 100644
> --- a/hw/virtio/vhost-vsock.c
> +++ b/hw/virtio/vhost-vsock.c
> @@ -70,13 +70,9 @@ static int vhost_vsock_set_running(VirtIODevice *vdev, int start)
> static void vhost_vsock_set_status(VirtIODevice *vdev, uint8_t status)
> {
> VHostVSockCommon *vvc = VHOST_VSOCK_COMMON(vdev);
> - bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
> + bool should_start = virtio_device_started(vdev, status);
> int ret;
>
> - if (!vdev->vm_running) {
> - should_start = false;
> - }
> -
> if (vvc->vhost_dev.started == should_start) {
> return;
> }
> --
> MST
>
next prev parent reply other threads:[~2022-11-05 16:47 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-10 17:28 [PULL 00/55] pc,virtio: features, tests, fixes, cleanups Michael S. Tsirkin
2022-10-10 17:28 ` [PULL 01/55] hw/virtio: incorporate backend features in features Michael S. Tsirkin
2022-10-10 17:28 ` [PULL 02/55] include/hw/virtio: more comment for VIRTIO_F_BAD_FEATURE Michael S. Tsirkin
2022-10-10 17:28 ` [PULL 03/55] include/hw: document vhost_dev feature life-cycle Michael S. Tsirkin
2022-10-10 17:28 ` [PULL 04/55] hw/virtio: fix some coding style issues Michael S. Tsirkin
2022-10-10 17:28 ` [PULL 05/55] hw/virtio: log potentially buggy guest drivers Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 06/55] hw/virtio: add some vhost-user trace events Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 07/55] hw/virtio: move vm_running check to virtio_device_started Michael S. Tsirkin
2022-10-14 7:30 ` Regression save/restore of vsock: (was [PULL 07/55] hw/virtio: move vm_running check to virtio_device_started) Christian Borntraeger
2022-10-14 8:31 ` Christian Borntraeger
2022-10-14 11:07 ` Alex Bennée
2022-10-14 11:58 ` Christian Borntraeger
2022-10-14 8:37 ` Alex Bennée
2022-10-14 8:44 ` Christian Borntraeger
2022-11-05 16:45 ` Michael S. Tsirkin [this message]
2022-11-07 9:21 ` [PULL 07/55] hw/virtio: move vm_running check to virtio_device_started Alex Bennée
2022-10-10 17:29 ` [PULL 08/55] hw/virtio: move vhd->started check into helper and add FIXME Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 09/55] hw/virtio: add boilerplate for vhost-user-gpio device Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 10/55] hw/virtio: add vhost-user-gpio-pci boilerplate Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 11/55] tests/qtest: pass stdout/stderr down to subtests Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 12/55] tests/qtest: add a timeout for subprocess_run_one_test Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 13/55] tests/qtest: use qos_printf instead of g_test_message Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 14/55] tests/qtest: catch unhandled vhost-user messages Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 15/55] tests/qtest: plain g_assert for VHOST_USER_F_PROTOCOL_FEATURES Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 16/55] tests/qtest: add assert to catch bad features Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 17/55] tests/qtest: implement stub for VHOST_USER_GET_CONFIG Michael S. Tsirkin
2022-10-10 17:29 ` [PULL 18/55] tests/qtest: add a get_features op to vhost-user-test Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 19/55] tests/qtest: enable tests for virtio-gpio Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 20/55] virtio: introduce VirtIOConfigSizeParams & virtio_get_config_size Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 21/55] virtio-blk: move config size params to virtio-blk-common Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 22/55] vhost-user-blk: make it possible to disable write-zeroes/discard Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 23/55] vhost-user-blk: make 'config_wce' part of 'host_features' Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 24/55] vhost-user-blk: dynamically resize config space based on features Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 25/55] tests/acpi: virt: allow acpi GTDT changes Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 26/55] acpi: arm/virt: build_gtdt: fix invalid 64-bit physical addresses Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 27/55] tests/acpi: virt: update ACPI GTDT binaries Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 28/55] mem/cxl-type3: Add sn option to provide serial number for PCI ecap Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 29/55] Revert "intel_iommu: Fix irqchip / X2APIC configuration checks" Michael S. Tsirkin
2022-10-10 17:39 ` David Woodhouse
2022-10-10 19:08 ` Peter Xu
2022-10-10 23:16 ` David Woodhouse
2022-10-11 0:04 ` Peter Xu
2022-10-10 17:30 ` [PULL 30/55] qmp: add QMP command x-query-virtio Michael S. Tsirkin
2022-10-10 17:30 ` [PULL 31/55] qmp: add QMP command x-query-virtio-status Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 32/55] qmp: decode feature & status bits in virtio-status Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 33/55] qmp: add QMP commands for virtio/vhost queue-status Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 34/55] qmp: add QMP command x-query-virtio-queue-element Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 35/55] hmp: add virtio commands Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 36/55] pci: Remove unused pci_get_*_by_mask() functions Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 37/55] pci: Sanity check mask argument to pci_set_*_by_mask() Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 38/55] hw/smbios: support for type 8 (port connector) Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 39/55] tests: acpi: whitelist pc/q35 DSDT due to HPET AML move Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 40/55] acpi: x86: deduplicate HPET AML building Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 41/55] tests: acpi: update expected blobs after HPET move Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 42/55] tests: acpi: whitelist pc/q35 DSDT due to HPET AML move Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 43/55] acpi: x86: refactor PDSM method to reduce nesting Michael S. Tsirkin
2022-10-10 17:31 ` [PULL 44/55] x86: acpi: _DSM: use Package to pass parameters Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 45/55] tests: acpi: update expected blobs Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 46/55] tests: acpi: whitelist pc/q35 DSDT before switching _DSM to use ASUN Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 47/55] x86: acpi: cleanup PCI device _DSM duplication Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 48/55] tests: acpi: update expected blobs Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 49/55] tests: acpi: whitelist pc/q35 DSDT before moving _ADR field Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 50/55] x86: pci: acpi: reorder Device's _ADR and _SUN fields Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 51/55] tests: acpi: update expected blobs Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 52/55] tests: acpi: whitelist pc/q35 DSDT before moving _ADR field Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 53/55] x86: pci: acpi: reorder Device's _DSM method Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 54/55] tests: acpi: update expected blobs Michael S. Tsirkin
2022-10-10 17:32 ` [PULL 55/55] x86: pci: acpi: consolidate PCI slots creation Michael S. Tsirkin
2022-10-12 20:04 ` [PULL 00/55] pc,virtio: features, tests, fixes, cleanups Stefan Hajnoczi
2022-10-12 20:59 ` Michael S. Tsirkin
2022-10-12 21:01 ` Stefan Hajnoczi
2022-10-12 21:25 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221105093645-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=dgilbert@redhat.com \
--cc=mathieu.poirier@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=viresh.kumar@linaro.org \
--cc=virtio-fs@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).