From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: "David Hildenbrand" <david@redhat.com>, "Paolo Bonzini" <pbonzini@redhat.com>, "Eduardo Habkost" <ehabkost@redhat.com>, "Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>, "Michael S. Tsirkin" <mst@redhat.com>, "Igor Mammedov" <imammedo@redhat.com>, "Ani Sinha" <ani@anisinha.ca>, "Peter Xu" <peterx@redhat.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, "Stefan Hajnoczi" <stefanha@redhat.com>, "Richard Henderson" <richard.henderson@linaro.org>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, "Hui Zhu" <teawater@gmail.com>, "Sebastien Boeuf" <sebastien.boeuf@intel.com>, kvm@vger.kernel.org Subject: [PATCH v1 08/12] vhost: Respect reserved memslots for memory devices when realizing a vhost device Date: Wed, 27 Oct 2021 14:45:27 +0200 [thread overview] Message-ID: <20211027124531.57561-9-david@redhat.com> (raw) In-Reply-To: <20211027124531.57561-1-david@redhat.com> Make sure that the current reservations can be fulfilled, otherwise we might run out of memslots later when memory devices start actually using the reserved memslots and crash. Signed-off-by: David Hildenbrand <david@redhat.com> --- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 49a1074097..a8f0d0bdf7 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -23,6 +23,7 @@ #include "standard-headers/linux/vhost_types.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" +#include "hw/mem/memory-device.h" #include "migration/blocker.h" #include "migration/qemu-file-types.h" #include "sysemu/dma.h" @@ -1319,7 +1320,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque, Error **errp) { uint64_t features; - int i, r, n_initialized_vqs = 0; + int i, r, reserved_memslots, backend_memslots, n_initialized_vqs = 0; hdev->vdev = NULL; hdev->migration_blocker = NULL; @@ -1415,9 +1416,13 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque, memory_listener_register(&hdev->memory_listener, &address_space_memory); QLIST_INSERT_HEAD(&vhost_devices, hdev, entry); - if (used_memslots > hdev->vhost_ops->vhost_backend_memslots_limit(hdev)) { - error_setg(errp, "vhost backend memory slots limit is less" - " than current number of present memory slots"); + reserved_memslots = memory_devices_get_reserved_memslots(); + backend_memslots = hdev->vhost_ops->vhost_backend_memslots_limit(hdev); + if (used_memslots + reserved_memslots > backend_memslots) { + error_setg(errp, "vhost backend memory slots limit (%d) is less" + " than current number of used (%d) and reserved (%d)" + " memory slots", backend_memslots, used_memslots, + reserved_memslots); r = -EINVAL; goto fail_busyloop; } -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: "Eduardo Habkost" <ehabkost@redhat.com>, kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>, "Richard Henderson" <richard.henderson@linaro.org>, "David Hildenbrand" <david@redhat.com>, "Stefan Hajnoczi" <stefanha@redhat.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, "Peter Xu" <peterx@redhat.com>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, "Sebastien Boeuf" <sebastien.boeuf@intel.com>, "Igor Mammedov" <imammedo@redhat.com>, "Ani Sinha" <ani@anisinha.ca>, "Paolo Bonzini" <pbonzini@redhat.com>, "Hui Zhu" <teawater@gmail.com> Subject: [PATCH v1 08/12] vhost: Respect reserved memslots for memory devices when realizing a vhost device Date: Wed, 27 Oct 2021 14:45:27 +0200 [thread overview] Message-ID: <20211027124531.57561-9-david@redhat.com> (raw) In-Reply-To: <20211027124531.57561-1-david@redhat.com> Make sure that the current reservations can be fulfilled, otherwise we might run out of memslots later when memory devices start actually using the reserved memslots and crash. Signed-off-by: David Hildenbrand <david@redhat.com> --- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 49a1074097..a8f0d0bdf7 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -23,6 +23,7 @@ #include "standard-headers/linux/vhost_types.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" +#include "hw/mem/memory-device.h" #include "migration/blocker.h" #include "migration/qemu-file-types.h" #include "sysemu/dma.h" @@ -1319,7 +1320,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque, Error **errp) { uint64_t features; - int i, r, n_initialized_vqs = 0; + int i, r, reserved_memslots, backend_memslots, n_initialized_vqs = 0; hdev->vdev = NULL; hdev->migration_blocker = NULL; @@ -1415,9 +1416,13 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque, memory_listener_register(&hdev->memory_listener, &address_space_memory); QLIST_INSERT_HEAD(&vhost_devices, hdev, entry); - if (used_memslots > hdev->vhost_ops->vhost_backend_memslots_limit(hdev)) { - error_setg(errp, "vhost backend memory slots limit is less" - " than current number of present memory slots"); + reserved_memslots = memory_devices_get_reserved_memslots(); + backend_memslots = hdev->vhost_ops->vhost_backend_memslots_limit(hdev); + if (used_memslots + reserved_memslots > backend_memslots) { + error_setg(errp, "vhost backend memory slots limit (%d) is less" + " than current number of used (%d) and reserved (%d)" + " memory slots", backend_memslots, used_memslots, + reserved_memslots); r = -EINVAL; goto fail_busyloop; } -- 2.31.1
next prev parent reply other threads:[~2021-10-27 12:46 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-27 12:45 [PATCH v1 00/12] virtio-mem: Expose device memory via multiple memslots David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 01/12] kvm: Return number of free memslots David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 02/12] vhost: " David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 13:36 ` Philippe Mathieu-Daudé 2021-10-27 13:36 ` Philippe Mathieu-Daudé 2021-10-27 13:37 ` David Hildenbrand 2021-10-27 13:37 ` David Hildenbrand 2021-10-27 14:04 ` David Hildenbrand 2021-10-27 14:04 ` David Hildenbrand 2021-10-27 14:11 ` Philippe Mathieu-Daudé 2021-10-27 14:11 ` Philippe Mathieu-Daudé 2021-10-27 15:33 ` Michael S. Tsirkin 2021-10-27 15:33 ` Michael S. Tsirkin 2021-10-27 15:45 ` David Hildenbrand 2021-10-27 15:45 ` David Hildenbrand 2021-10-27 16:11 ` Philippe Mathieu-Daudé 2021-10-27 16:11 ` Philippe Mathieu-Daudé 2021-10-27 16:51 ` David Hildenbrand 2021-10-27 16:51 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 03/12] memory: Allow for marking memory region aliases unmergeable David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 04/12] vhost: Don't merge unmergeable memory sections David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 05/12] memory-device: Move memory_device_check_addable() directly into memory_device_pre_plug() David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 06/12] memory-device: Generalize memory_device_used_region_size() David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 07/12] memory-device: Support memory devices that dynamically consume multiple memslots David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand [this message] 2021-10-27 12:45 ` [PATCH v1 08/12] vhost: Respect reserved memslots for memory devices when realizing a vhost device David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 09/12] memory: Drop mapping check from memory_region_get_ram_discard_manager() David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 10/12] virtio-mem: Fix typo in virito_mem_intersect_memory_section() function name David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2022-12-28 14:05 ` Philippe Mathieu-Daudé 2022-12-28 14:06 ` David Hildenbrand 2022-12-28 14:07 ` Philippe Mathieu-Daudé 2021-10-27 12:45 ` [PATCH v1 11/12] virtio-mem: Set the RamDiscardManager for the RAM memory region earlier David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-10-27 12:45 ` [PATCH v1 12/12] virtio-mem: Expose device memory via multiple memslots David Hildenbrand 2021-10-27 12:45 ` David Hildenbrand 2021-11-01 22:15 ` [PATCH v1 00/12] " Michael S. Tsirkin 2021-11-01 22:15 ` Michael S. Tsirkin 2021-11-02 8:33 ` David Hildenbrand 2021-11-02 8:33 ` David Hildenbrand 2021-11-02 11:35 ` Michael S. Tsirkin 2021-11-02 11:35 ` Michael S. Tsirkin 2021-11-02 11:55 ` David Hildenbrand 2021-11-02 11:55 ` David Hildenbrand 2021-11-02 17:06 ` Michael S. Tsirkin 2021-11-02 17:06 ` Michael S. Tsirkin 2021-11-02 17:10 ` David Hildenbrand 2021-11-02 17:10 ` David Hildenbrand 2021-11-07 8:14 ` Michael S. Tsirkin 2021-11-07 8:14 ` Michael S. Tsirkin 2021-11-07 9:21 ` David Hildenbrand 2021-11-07 9:21 ` David Hildenbrand 2021-11-07 10:21 ` Michael S. Tsirkin 2021-11-07 10:21 ` Michael S. Tsirkin 2021-11-07 10:53 ` David Hildenbrand 2021-11-07 10:53 ` David Hildenbrand
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=20211027124531.57561-9-david@redhat.com \ --to=david@redhat.com \ --cc=ani@anisinha.ca \ --cc=dgilbert@redhat.com \ --cc=ehabkost@redhat.com \ --cc=f4bug@amsat.org \ --cc=imammedo@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=marcel.apfelbaum@gmail.com \ --cc=mst@redhat.com \ --cc=pbonzini@redhat.com \ --cc=peterx@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=richard.henderson@linaro.org \ --cc=sebastien.boeuf@intel.com \ --cc=stefanha@redhat.com \ --cc=teawater@gmail.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: linkBe 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.