qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	Longpeng <longpeng2@huawei.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PULL 42/51] vdpa: commit all host notifier MRs in a single MR transaction
Date: Thu, 5 Jan 2023 04:16:37 -0500	[thread overview]
Message-ID: <20230105091310.263867-43-mst@redhat.com> (raw)
In-Reply-To: <20230105091310.263867-1-mst@redhat.com>

From: Longpeng <longpeng2@huawei.com>

This allows the vhost-vdpa device to batch the setup of all its MRs of
host notifiers.

This significantly reduces the device starting time, e.g. the time spend
on setup the host notifier MRs reduce from 423ms to 32ms for a VM with
64 vCPUs and 3 vhost-vDPA generic devices (vdpa_sim_blk, 64vq per device).

Signed-off-by: Longpeng <longpeng2@huawei.com>
Message-Id: <20221227072015.3134-4-longpeng2@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/virtio/vhost-vdpa.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index c295a8c917..542e003101 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -519,9 +519,18 @@ static void vhost_vdpa_host_notifiers_uninit(struct vhost_dev *dev, int n)
 {
     int i;
 
+    /*
+     * Pack all the changes to the memory regions in a single
+     * transaction to avoid a few updating of the address space
+     * topology.
+     */
+    memory_region_transaction_begin();
+
     for (i = dev->vq_index; i < dev->vq_index + n; i++) {
         vhost_vdpa_host_notifier_uninit(dev, i);
     }
+
+    memory_region_transaction_commit();
 }
 
 static void vhost_vdpa_host_notifiers_init(struct vhost_dev *dev)
@@ -534,17 +543,21 @@ static void vhost_vdpa_host_notifiers_init(struct vhost_dev *dev)
         return;
     }
 
+    /*
+     * Pack all the changes to the memory regions in a single
+     * transaction to avoid a few updating of the address space
+     * topology.
+     */
+    memory_region_transaction_begin();
+
     for (i = dev->vq_index; i < dev->vq_index + dev->nvqs; i++) {
         if (vhost_vdpa_host_notifier_init(dev, i)) {
-            goto err;
+            vhost_vdpa_host_notifiers_uninit(dev, i - dev->vq_index);
+            break;
         }
     }
 
-    return;
-
-err:
-    vhost_vdpa_host_notifiers_uninit(dev, i - dev->vq_index);
-    return;
+    memory_region_transaction_commit();
 }
 
 static void vhost_vdpa_svq_cleanup(struct vhost_dev *dev)
-- 
MST



  parent reply	other threads:[~2023-01-05  9:23 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-05  9:14 [PULL 00/51] virtio,pc,pci: features, cleanups, fixes Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 01/51] virtio_net: Modify virtio_net_get_config to early return Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 02/51] virtio_net: copy VIRTIO_NET_S_ANNOUNCE if device model has it Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 03/51] vdpa: handle VIRTIO_NET_CTRL_ANNOUNCE in vhost_vdpa_net_handle_ctrl_avail Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 04/51] vdpa: do not handle VIRTIO_NET_F_GUEST_ANNOUNCE in vhost-vdpa Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 05/51] hw/acpi/Kconfig: Rename ACPI_X86_ICH to ACPI_ICH9 Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 06/51] hw/acpi/Kconfig: Add missing dependencies " Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 07/51] hw/acpi/Kconfig: Do not needlessly build TYPE_PIIX4_PM in non-PC/Malta machines Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 08/51] hw/acpi/Kconfig: Add missing dependencies to ACPI_PIIX4 Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 09/51] hw/isa/Kconfig: Add missing dependency to VT82C686 Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 10/51] i386, mips: Resolve redundant ACPI and APM dependencies Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 11/51] hw/ppc/Kconfig: Remove unused dependencies from PEGASOS2 Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 12/51] vhost-user: Refactor vhost acked features saving Michael S. Tsirkin
2023-01-05  9:14 ` [PULL 13/51] vhost-user: Refactor the chr_closed_bh Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 14/51] vhost-user: Fix the virtio features negotiation flaw Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 15/51] virtio: introduce macro VIRTIO_CONFIG_IRQ_IDX Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 16/51] virtio-pci: decouple notifier from interrupt process Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 17/51] virtio-pci: decouple the single vector from the " Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 18/51] vhost: introduce new VhostOps vhost_set_config_call Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 19/51] vhost-vdpa: add support for config interrupt Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 20/51] virtio: add support for configure interrupt Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 21/51] vhost: " Michael S. Tsirkin
2023-01-05  9:21   ` Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 22/51] virtio-net: " Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 23/51] virtio-mmio: " Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 24/51] virtio-pci: " Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 25/51] hw/virtio: Rename virtio_device_find() -> qmp_find_virtio_device() Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 26/51] hw/virtio: Extract QMP QOM-specific functions to virtio-qmp.c Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 27/51] include/hw/pci: Break inclusion loop pci_bridge.h and cxl.h Michael S. Tsirkin
2023-01-05  9:21   ` Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 29/51] include/hw/cxl: Include hw/cxl/*.h where needed Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 30/51] include/hw/pci: Clean up a few things checkpatch.pl would flag Michael S. Tsirkin
2023-01-05  9:15 ` [PULL 31/51] include/hw/pci: Split pci_device.h off pci.h Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 34/51] include/hw/virtio: Break inclusion loop Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 35/51] include: Include headers where needed Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 36/51] include: Don't include qemu/osdep.h Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 37/51] docs/devel: Rules on #include in headers Michael S. Tsirkin
2023-01-09 12:03   ` Markus Armbruster
2023-01-05  9:16 ` [PULL 38/51] vdpa-dev: get iova range explicitly Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 39/51] vdpa: harden the error path if get_iova_range failed Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 40/51] vhost: simplify vhost_dev_enable_notifiers Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 41/51] vhost: configure all host notifiers in a single MR transaction Michael S. Tsirkin
2023-01-05  9:16 ` Michael S. Tsirkin [this message]
2023-01-05  9:16 ` [PULL 43/51] virtio-pci: fix proxy->vector_irqfd leak in virtio_pci_set_guest_notifiers Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 44/51] tests: virt: Allow changes to PPTT test table Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 45/51] hw/acpi/aml-build: Only generate cluster node in PPTT when specified Michael S. Tsirkin
2023-05-10 10:13   ` Philippe Mathieu-Daudé
2023-05-13  7:22     ` Yicong Yang via
2023-01-05  9:16 ` [PULL 46/51] tests: virt: Update expected ACPI tables for virt test Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 47/51] tests: acpi: Add and whitelist *.topology blobs Michael S. Tsirkin
2023-01-05  9:16 ` [PULL 48/51] tests: acpi: aarch64: Add topology test for aarch64 Michael S. Tsirkin
2023-01-05  9:17 ` [PULL 49/51] tests: acpi: aarch64: Add *.topology tables Michael S. Tsirkin
2023-01-05  9:17 ` [PULL 50/51] acpi: cpuhp: fix guest-visible maximum access size to the legacy reg block Michael S. Tsirkin
2023-01-05  9:56   ` Michael S. Tsirkin
2023-01-05 16:01     ` Laszlo Ersek
2023-01-05 16:29       ` Philippe Mathieu-Daudé
2023-01-05 16:35         ` Michael S. Tsirkin
2023-01-05  9:17 ` [PULL 51/51] vhost-scsi: fix memleak of vsc->inflight Michael S. Tsirkin
2023-01-05  9:21 ` [PULL 28/51] include/hw/cxl: Move typedef PXBDev to cxl.h, and put it to use Michael S. Tsirkin
2023-01-05  9:22 ` [PULL 32/51] include/hw/pci: Include hw/pci/pci.h where needed Michael S. Tsirkin
2023-01-05  9:22 ` [PULL 33/51] include/hw/cxl: Break inclusion loop cxl_pci.h and cxl_cdat_h Michael S. Tsirkin
2023-01-05  9:56 ` [PULL 00/51] virtio,pc,pci: features, cleanups, fixes Michael S. Tsirkin
2023-01-05 16:31   ` Michael S. Tsirkin
2023-01-05 21:04     ` Peter Maydell
2023-01-05 21:50       ` Michael S. Tsirkin
2023-01-05 21:53       ` Michael S. Tsirkin
2023-01-06 15:29         ` Peter Maydell
2023-01-08 13:57           ` Michael S. Tsirkin
2023-01-09 13:43             ` Markus Armbruster
2023-01-10 18:28               ` Markus Armbruster
2023-01-09 15:54             ` Peter Maydell
2023-01-05 16:30 ` [PULL v2 50/51] acpi: cpuhp: fix guest-visible maximum access size to the legacy reg block 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=20230105091310.263867-43-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=longpeng2@huawei.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@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 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).