All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Laurent Vivier <lvivier@redhat.com>,
	Jonah Palmer <jonah.palmer@oracle.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>
Subject: [PULL 73/91] qmp: add QMP command x-query-virtio-status
Date: Mon, 16 May 2022 06:39:53 -0400	[thread overview]
Message-ID: <20220516095448.507876-74-mst@redhat.com> (raw)
In-Reply-To: <20220516095448.507876-1-mst@redhat.com>

From: Laurent Vivier <lvivier@redhat.com>

This new command shows the status of a VirtIODevice, including
its corresponding vhost device's status (if active).

Next patch will improve output by decoding feature bits, including
vhost device's feature bits (backend, protocol, acked, and features).
Also will decode status bits of a VirtIODevice.

[Jonah: From patch v12; added a check to @virtio_device_find
 to ensure synchronicity between @virtio_list and the devices in the QOM
 composition tree.]

Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com>
Message-Id: <1648819405-25696-5-git-send-email-jonah.palmer@oracle.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 qapi/virtio.json        | 222 ++++++++++++++++++++++++++++++++++++++++
 hw/virtio/virtio-stub.c |   5 +
 hw/virtio/virtio.c      | 104 +++++++++++++++++++
 3 files changed, 331 insertions(+)

diff --git a/qapi/virtio.json b/qapi/virtio.json
index aee0e40daa..ba61d83df7 100644
--- a/qapi/virtio.json
+++ b/qapi/virtio.json
@@ -66,3 +66,225 @@
 { 'command': 'x-query-virtio',
   'returns': [ 'VirtioInfo' ],
   'features': [ 'unstable' ] }
+
+##
+# @VhostStatus:
+#
+# Information about a vhost device. This information will only be
+# displayed if the vhost device is active.
+#
+# @n-mem-sections: vhost_dev n_mem_sections
+#
+# @n-tmp-sections: vhost_dev n_tmp_sections
+#
+# @nvqs: vhost_dev nvqs (number of virtqueues being used)
+#
+# @vq-index: vhost_dev vq_index
+#
+# @features: vhost_dev features
+#
+# @acked-features: vhost_dev acked_features
+#
+# @backend-features: vhost_dev backend_features
+#
+# @protocol-features: vhost_dev protocol_features
+#
+# @max-queues: vhost_dev max_queues
+#
+# @backend-cap: vhost_dev backend_cap
+#
+# @log-enabled: vhost_dev log_enabled flag
+#
+# @log-size: vhost_dev log_size
+#
+# Since: 7.0
+#
+##
+
+{ 'struct': 'VhostStatus',
+  'data': { 'n-mem-sections': 'int',
+            'n-tmp-sections': 'int',
+            'nvqs': 'uint32',
+            'vq-index': 'int',
+            'features': 'uint64',
+            'acked-features': 'uint64',
+            'backend-features': 'uint64',
+            'protocol-features': 'uint64',
+            'max-queues': 'uint64',
+            'backend-cap': 'uint64',
+            'log-enabled': 'bool',
+            'log-size': 'uint64' } }
+
+##
+# @VirtioStatus:
+#
+# Full status of the virtio device with most VirtIODevice members.
+# Also includes the full status of the corresponding vhost device
+# if the vhost device is active.
+#
+# @name: VirtIODevice name
+#
+# @device-id: VirtIODevice ID
+#
+# @vhost-started: VirtIODevice vhost_started flag
+#
+# @guest-features: VirtIODevice guest_features
+#
+# @host-features: VirtIODevice host_features
+#
+# @backend-features: VirtIODevice backend_features
+#
+# @device-endian: VirtIODevice device_endian
+#
+# @num-vqs: VirtIODevice virtqueue count. This is the number of active
+#           virtqueues being used by the VirtIODevice.
+#
+# @status: VirtIODevice configuration status (VirtioDeviceStatus)
+#
+# @isr: VirtIODevice ISR
+#
+# @queue-sel: VirtIODevice queue_sel
+#
+# @vm-running: VirtIODevice vm_running flag
+#
+# @broken: VirtIODevice broken flag
+#
+# @disabled: VirtIODevice disabled flag
+#
+# @use-started: VirtIODevice use_started flag
+#
+# @started: VirtIODevice started flag
+#
+# @start-on-kick: VirtIODevice start_on_kick flag
+#
+# @disable-legacy-check: VirtIODevice disabled_legacy_check flag
+#
+# @bus-name: VirtIODevice bus_name
+#
+# @use-guest-notifier-mask: VirtIODevice use_guest_notifier_mask flag
+#
+# @vhost-dev: Corresponding vhost device info for a given VirtIODevice.
+#             Present if the given VirtIODevice has an active vhost
+#             device.
+#
+# Since: 7.0
+#
+##
+
+{ 'struct': 'VirtioStatus',
+  'data': { 'name': 'str',
+            'device-id': 'uint16',
+            'vhost-started': 'bool',
+            'device-endian': 'str',
+            'guest-features': 'uint64',
+            'host-features': 'uint64',
+            'backend-features': 'uint64',
+            'num-vqs': 'int',
+            'status': 'uint8',
+            'isr': 'uint8',
+            'queue-sel': 'uint16',
+            'vm-running': 'bool',
+            'broken': 'bool',
+            'disabled': 'bool',
+            'use-started': 'bool',
+            'started': 'bool',
+            'start-on-kick': 'bool',
+            'disable-legacy-check': 'bool',
+            'bus-name': 'str',
+            'use-guest-notifier-mask': 'bool',
+            '*vhost-dev': 'VhostStatus' } }
+
+##
+# @x-query-virtio-status:
+#
+# Poll for a comprehensive status of a given virtio device
+#
+# @path: Canonical QOM path of the VirtIODevice
+#
+# Features:
+# @unstable: This command is meant for debugging.
+#
+# Returns: VirtioStatus of the virtio device
+#
+# Since: 7.0
+#
+# Examples:
+#
+# 1. Poll for the status of virtio-crypto (no vhost-crypto active)
+#
+# -> { "execute": "x-query-virtio-status",
+#      "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend" }
+#    }
+# <- { "return": {
+#            "device-endian": "little",
+#            "bus-name": "",
+#            "disable-legacy-check": false,
+#            "name": "virtio-crypto",
+#            "started": true,
+#            "device-id": 20,
+#            "backend-features": 0,
+#            "start-on-kick": false,
+#            "isr": 1,
+#            "broken": false,
+#            "status": 15,
+#            "num-vqs": 2,
+#            "guest-features": 5100273664,
+#            "host-features": 6325010432,
+#            "use-guest-notifier-mask": true,
+#            "vm-running": true,
+#            "queue-sel": 1,
+#            "disabled": false,
+#            "vhost-started": false,
+#            "use-started": true
+#      }
+#    }
+#
+# 2. Poll for the status of virtio-net (vhost-net is active)
+#
+# -> { "execute": "x-query-virtio-status",
+#      "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend" }
+#    }
+# <- { "return": {
+#            "device-endian": "little",
+#            "bus-name": "",
+#            "disabled-legacy-check": false,
+#            "name": "virtio-net",
+#            "started": true,
+#            "device-id": 1,
+#            "vhost-dev": {
+#               "n-tmp-sections": 4,
+#               "n-mem-sections": 4,
+#               "max-queues": 1,
+#               "backend-cap": 2,
+#               "log-size": 0,
+#               "backend-features": 0,
+#               "nvqs": 2,
+#               "protocol-features": 0,
+#               "vq-index": 0,
+#               "log-enabled": false,
+#               "acked-features": 5100306432,
+#               "features": 13908344832
+#            },
+#            "backend-features": 6337593319,
+#            "start-on-kick": false,
+#            "isr": 1,
+#            "broken": false,
+#            "status": 15,
+#            "num-vqs": 3,
+#            "guest-features": 5111807911,
+#            "host-features": 6337593319,
+#            "use-guest-notifier-mask": true,
+#            "vm-running": true,
+#            "queue-sel": 2,
+#            "disabled": false,
+#            "vhost-started": true,
+#            "use-started": true
+#      }
+#    }
+#
+##
+
+{ 'command': 'x-query-virtio-status',
+  'data': { 'path': 'str' },
+  'returns': 'VirtioStatus',
+  'features': [ 'unstable' ] }
diff --git a/hw/virtio/virtio-stub.c b/hw/virtio/virtio-stub.c
index 05a81edc92..0b432e8de7 100644
--- a/hw/virtio/virtio-stub.c
+++ b/hw/virtio/virtio-stub.c
@@ -12,3 +12,8 @@ VirtioInfoList *qmp_x_query_virtio(Error **errp)
 {
     return qmp_virtio_unsupported(errp);
 }
+
+VirtioStatus *qmp_x_query_virtio_status(const char *path, Error **errp)
+{
+    return qmp_virtio_unsupported(errp);
+}
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index bdfa82e9c0..3e0a484660 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -3939,6 +3939,110 @@ VirtioInfoList *qmp_x_query_virtio(Error **errp)
     return list;
 }
 
+static VirtIODevice *virtio_device_find(const char *path)
+{
+    VirtIODevice *vdev;
+
+    QTAILQ_FOREACH(vdev, &virtio_list, next) {
+        DeviceState *dev = DEVICE(vdev);
+
+        if (strcmp(dev->canonical_path, path) != 0) {
+            continue;
+        }
+
+        Error *err = NULL;
+        QObject *obj = qmp_qom_get(dev->canonical_path, "realized", &err);
+        if (err == NULL) {
+            GString *is_realized = qobject_to_json_pretty(obj, true);
+            /* virtio device is NOT realized, remove it from list */
+            if (!strncmp(is_realized->str, "false", 4)) {
+                g_string_free(is_realized, true);
+                qobject_unref(obj);
+                QTAILQ_REMOVE(&virtio_list, vdev, next);
+                return NULL;
+            }
+            g_string_free(is_realized, true);
+        } else {
+            /* virtio device doesn't exist in QOM tree */
+            QTAILQ_REMOVE(&virtio_list, vdev, next);
+            qobject_unref(obj);
+            return NULL;
+        }
+        /* device exists in QOM tree & is realized */
+        qobject_unref(obj);
+        return vdev;
+    }
+    return NULL;
+}
+
+VirtioStatus *qmp_x_query_virtio_status(const char *path, Error **errp)
+{
+    VirtIODevice *vdev;
+    VirtioStatus *status;
+
+    vdev = virtio_device_find(path);
+    if (vdev == NULL) {
+        error_setg(errp, "Path %s is not a VirtIODevice", path);
+        return NULL;
+    }
+
+    status = g_new0(VirtioStatus, 1);
+    status->name = g_strdup(vdev->name);
+    status->device_id = vdev->device_id;
+    status->vhost_started = vdev->vhost_started;
+    status->guest_features = vdev->guest_features;
+    status->host_features = vdev->host_features;
+    status->backend_features = vdev->backend_features;
+
+    switch (vdev->device_endian) {
+    case VIRTIO_DEVICE_ENDIAN_LITTLE:
+        status->device_endian = g_strdup("little");
+        break;
+    case VIRTIO_DEVICE_ENDIAN_BIG:
+        status->device_endian = g_strdup("big");
+        break;
+    default:
+        status->device_endian = g_strdup("unknown");
+        break;
+    }
+
+    status->num_vqs = virtio_get_num_queues(vdev);
+    status->status = vdev->status;
+    status->isr = vdev->isr;
+    status->queue_sel = vdev->queue_sel;
+    status->vm_running = vdev->vm_running;
+    status->broken = vdev->broken;
+    status->disabled = vdev->disabled;
+    status->use_started = vdev->use_started;
+    status->started = vdev->started;
+    status->start_on_kick = vdev->start_on_kick;
+    status->disable_legacy_check = vdev->disable_legacy_check;
+    status->bus_name = g_strdup(vdev->bus_name);
+    status->use_guest_notifier_mask = vdev->use_guest_notifier_mask;
+    status->has_vhost_dev = vdev->vhost_started;
+
+    if (vdev->vhost_started) {
+        VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(vdev);
+        struct vhost_dev *hdev = vdc->get_vhost(vdev);
+
+        status->vhost_dev = g_new0(VhostStatus, 1);
+        status->vhost_dev->n_mem_sections = hdev->n_mem_sections;
+        status->vhost_dev->n_tmp_sections = hdev->n_tmp_sections;
+        status->vhost_dev->nvqs = hdev->nvqs;
+        status->vhost_dev->vq_index = hdev->vq_index;
+        status->vhost_dev->features = hdev->features;
+        status->vhost_dev->acked_features = hdev->acked_features;
+        status->vhost_dev->backend_features = hdev->backend_features;
+        status->vhost_dev->protocol_features = hdev->protocol_features;
+        status->vhost_dev->max_queues = hdev->max_queues;
+        status->vhost_dev->backend_cap = hdev->backend_cap;
+        status->vhost_dev->log_enabled = hdev->log_enabled;
+        status->vhost_dev->log_size = hdev->log_size;
+    }
+
+    return status;
+}
+
 static const TypeInfo virtio_device_info = {
     .name = TYPE_VIRTIO_DEVICE,
     .parent = TYPE_DEVICE,
-- 
MST



  parent reply	other threads:[~2022-05-16 12:42 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-16 10:35 [PULL 00/91] virtio,pc,pci: fixes,cleanups,features Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 01/91] virtio: fix feature negotiation for ACCESS_PLATFORM Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 02/91] intel-iommu: correct the value used for error_setg_errno() Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 03/91] hw/pci/cxl: Add a CXL component type (interface) Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 04/91] hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5) Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 05/91] MAINTAINERS: Add entry for Compute Express Link Emulation Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 06/91] hw/cxl/device: Introduce a CXL device (8.2.8) Michael S. Tsirkin
2022-05-16 10:35 ` [PULL 07/91] hw/cxl/device: Implement the CAP array (8.2.8.1-2) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 08/91] hw/cxl/device: Implement basic mailbox (8.2.8.4) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 09/91] hw/cxl/device: Add memory device utilities Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 10/91] hw/cxl/device: Add cheap EVENTS implementation (8.2.9.1) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 11/91] hw/cxl/device: Timestamp implementation (8.2.9.3) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 12/91] hw/cxl/device: Add log commands (8.2.9.4) + CEL Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 13/91] hw/pxb: Use a type for realizing expanders Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 14/91] hw/pci/cxl: Create a CXL bus type Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 15/91] cxl: Machine level control on whether CXL support is enabled Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 16/91] hw/pxb: Allow creation of a CXL PXB (host bridge) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 17/91] qtest/cxl: Introduce initial test for pxb-cxl only Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 18/91] hw/cxl/rp: Add a root port Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 19/91] hw/cxl/device: Add a memory device (8.2.8.5) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 20/91] hw/cxl/device: Implement MMIO HDM decoding (8.2.5.12) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 21/91] hw/cxl/device: Add some trivial commands Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 22/91] hw/cxl/device: Plumb real Label Storage Area (LSA) sizing Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 23/91] hw/cxl/device: Implement get/set Label Storage Area (LSA) Michael S. Tsirkin
2022-05-16 10:36 ` [PULL 24/91] qtests/cxl: Add initial root port and CXL type3 tests Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 25/91] hw/cxl/component: Implement host bridge MMIO (8.2.5, table 142) Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 26/91] acpi/cxl: Add _OSC implementation (9.14.2) Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 27/91] acpi/cxl: Create the CEDT (9.14.1) Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 28/91] hw/cxl/component: Add utils for interleave parameter encoding/decoding Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 29/91] hw/cxl/host: Add support for CXL Fixed Memory Windows Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 30/91] acpi/cxl: Introduce CFMWS structures in CEDT Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 31/91] hw/pci-host/gpex-acpi: Add support for dsdt construction for pxb-cxl Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 32/91] pci/pcie_port: Add pci_find_port_by_pn() Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 33/91] CXL/cxl_component: Add cxl_get_hb_cstate() Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 34/91] mem/cxl_type3: Add read and write functions for associated hostmem Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 35/91] cxl/cxl-host: Add memops for CFMWS region Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 36/91] hw/cxl/component Add a dumb HDM decoder handler Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 37/91] i386/pc: Enable CXL fixed memory windows Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 38/91] tests/acpi: q35: Allow addition of a CXL test Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 39/91] qtests/bios-tables-test: Add a test for CXL emulation Michael S. Tsirkin
2022-05-16 10:37 ` [PULL 40/91] tests/acpi: Add tables " Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 41/91] qtest/cxl: Add more complex test cases with CFMWs Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 42/91] docs/cxl: Add initial Compute eXpress Link (CXL) documentation Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 43/91] vhost: Track descriptor chain in private at SVQ Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 44/91] vhost: Fix device's used descriptor dequeue Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 45/91] vdpa: Fix bad index calculus at vhost_vdpa_get_vring_base Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 46/91] vdpa: Fix index calculus at vhost_vdpa_svqs_start Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 47/91] hw/virtio: Replace g_memdup() by g_memdup2() Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 48/91] vhost: Fix element in vhost_svq_add failure Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 49/91] target/i386: Fix sanity check on max APIC ID / X2APIC enablement Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 50/91] intel_iommu: Support IR-only mode without DMA translation Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 51/91] intel_iommu: Only allow interrupt remapping to be enabled if it's supported Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 52/91] intel_iommu: Fix irqchip / X2APIC configuration checks Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 53/91] intel-iommu: remove VTD_FR_RESERVED_ERR Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 54/91] intel-iommu: block output address in interrupt address range Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 55/91] intel-iommu: update root_scalable before switching as during post_load Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 56/91] intel-iommu: update iq_dw during post load Michael S. Tsirkin
2022-05-16 10:38 ` [PULL 57/91] vhost_net: Print feature masks in hex Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 58/91] hw/virtio: move virtio-pci.h into shared include space Michael S. Tsirkin
2022-05-16 10:39   ` [Virtio-fs] " Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 59/91] virtio-pci: add notification trace points Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 60/91] hw/virtio: add vhost_user_[read|write] " Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 61/91] docs: vhost-user: clean up request/reply description Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 62/91] docs: vhost-user: rewrite section on ring state machine Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 63/91] docs: vhost-user: replace master/slave with front-end/back-end Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 64/91] vhost-user.rst: add clarifying language about protocol negotiation Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 65/91] libvhost-user: expose vu_request_to_string Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 66/91] docs/devel: start documenting writing VirtIO devices Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 67/91] include/hw: start documenting the vhost API Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 68/91] hw/virtio/vhost-user: don't suppress F_CONFIG when supported Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 69/91] virtio/vhost-user: dynamically assign VhostUserHostNotifiers Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 70/91] virtio: drop name parameter for virtio_init() Michael S. Tsirkin
2022-05-16 10:39   ` [Virtio-fs] " Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 71/91] virtio: add vhost support for virtio devices Michael S. Tsirkin
2022-05-16 10:39   ` [Virtio-fs] " Michael S. Tsirkin
2022-05-16 10:39 ` [PULL 72/91] qmp: add QMP command x-query-virtio Michael S. Tsirkin
2022-05-16 10:39 ` Michael S. Tsirkin [this message]
2022-05-16 10:39 ` [PULL 74/91] qmp: decode feature & status bits in virtio-status Michael S. Tsirkin
2022-05-16 10:39   ` [Virtio-fs] " Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 75/91] qmp: add QMP commands for virtio/vhost queue-status Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 76/91] qmp: add QMP command x-query-virtio-queue-element Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 77/91] hmp: add virtio commands Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 78/91] vhost-user: more master/slave things Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 79/91] docs/vhost-user: Clarifications for VHOST_USER_ADD/REM_MEM_REG Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 80/91] include/hw/pci/pcie_host: Correct PCIE_MMCFG_BUS_MASK Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 81/91] include/hw/pci/pcie_host: Correct PCIE_MMCFG_SIZE_MAX Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 82/91] hw/i386: Make pit a property of common x86 base machine type Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 83/91] hw/i386: Make pic " Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 84/91] hw/i386/amd_iommu: Fix IOMMU event log encoding errors Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 85/91] virtio-net: setup vhost_dev and notifiers for cvq only when feature is negotiated Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 86/91] virtio-net: align ctrl_vq index for non-mq guest for vhost_vdpa Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 87/91] vhost-vdpa: fix improper cleanup in net_init_vhost_vdpa Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 88/91] vhost-net: fix improper cleanup in vhost_net_start Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 89/91] vhost-vdpa: backend feature should set only once Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 90/91] vhost-vdpa: change name and polarity for vhost_vdpa_one_time_request() Michael S. Tsirkin
2022-05-16 10:40 ` [PULL 91/91] virtio-net: don't handle mq request in userspace handler for vhost-vdpa Michael S. Tsirkin
2022-05-16 19:01 ` [PULL 00/91] virtio,pc,pci: fixes,cleanups,features Richard Henderson
2022-05-16 20:05   ` Michael S. Tsirkin

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=20220516095448.507876-74-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=jonah.palmer@oracle.com \
    --cc=lvivier@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.