* [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6
@ 2024-02-06 7:02 David Hildenbrand
2024-02-06 7:02 ` [PULL 1/3] hv-balloon: use get_min_alignment() to express 32 GiB alignment David Hildenbrand
2024-02-06 7:11 ` [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
0 siblings, 2 replies; 3+ messages in thread
From: David Hildenbrand @ 2024-02-06 7:02 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Paolo Bonzini, David Hildenbrand
The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:
Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)
are available in the Git repository at:
https://github.com/davidhildenbrand/qemu.git tags/mem-2024-02-06
for you to fetch changes up to a32c31979a852a07d590effa1586f6ab4fa4d784:
oslib-posix: initialize backend memory objects in parallel (2024-02-04 17:51:13 +0100)
----------------------------------------------------------------
Hi,
"Host Memory Backends" and "Memory devices" queue ("mem"):
- Reintroduce memory region size checks for memory devices; the removal
lead to some undesired side effects
- Preallocate memory of memory backends in selected configurations
asynchronously (so we preallocate concurrently), to speed up QEMU
startup time.
----------------------------------------------------------------
David Hildenbrand (2):
hv-balloon: use get_min_alignment() to express 32 GiB alignment
memory-device: reintroduce memory region size check
Mark Kanda (1):
oslib-posix: initialize backend memory objects in parallel
backends/hostmem.c | 7 ++-
hw/hyperv/hv-balloon.c | 37 +++++++-----
hw/mem/memory-device.c | 14 +++++
hw/virtio/virtio-mem.c | 4 +-
include/hw/qdev-core.h | 5 ++
include/qemu/osdep.h | 18 +++++-
system/vl.c | 9 +++
util/oslib-posix.c | 131 +++++++++++++++++++++++++++++++----------
util/oslib-win32.c | 8 ++-
9 files changed, 180 insertions(+), 53 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PULL 1/3] hv-balloon: use get_min_alignment() to express 32 GiB alignment
2024-02-06 7:02 [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
@ 2024-02-06 7:02 ` David Hildenbrand
2024-02-06 7:11 ` [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
1 sibling, 0 replies; 3+ messages in thread
From: David Hildenbrand @ 2024-02-06 7:02 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Paolo Bonzini, David Hildenbrand,
Maciej S . Szmigiero
Let's implement the get_min_alignment() callback for memory devices, and
copy for the device memory region the alignment of the host memory
region. This mimics what virtio-mem does, and allows for re-introducing
proper alignment checks for the memory region size (where we don't care
about additional device requirements) in memory device core.
Message-ID: <20240117135554.787344-2-david@redhat.com>
Reviewed-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
hw/hyperv/hv-balloon.c | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/hw/hyperv/hv-balloon.c b/hw/hyperv/hv-balloon.c
index 0238365712..ade283335a 100644
--- a/hw/hyperv/hv-balloon.c
+++ b/hw/hyperv/hv-balloon.c
@@ -1477,22 +1477,7 @@ static void hv_balloon_ensure_mr(HvBalloon *balloon)
balloon->mr = g_new0(MemoryRegion, 1);
memory_region_init(balloon->mr, OBJECT(balloon), TYPE_HV_BALLOON,
memory_region_size(hostmem_mr));
-
- /*
- * The VM can indicate an alignment up to 32 GiB. Memory device core can
- * usually only handle/guarantee 1 GiB alignment. The user will have to
- * specify a larger maxmem eventually.
- *
- * The memory device core will warn the user in case maxmem might have to be
- * increased and will fail plugging the device if there is not sufficient
- * space after alignment.
- *
- * TODO: we could do the alignment ourselves in a slightly bigger region.
- * But this feels better, although the warning might be annoying. Maybe
- * we can optimize that in the future (e.g., with such a device on the
- * cmdline place/size the device memory region differently.
- */
- balloon->mr->align = MAX(32 * GiB, memory_region_get_alignment(hostmem_mr));
+ balloon->mr->align = memory_region_get_alignment(hostmem_mr);
}
static void hv_balloon_free_mr(HvBalloon *balloon)
@@ -1654,6 +1639,25 @@ static MemoryRegion *hv_balloon_md_get_memory_region(MemoryDeviceState *md,
return balloon->mr;
}
+static uint64_t hv_balloon_md_get_min_alignment(const MemoryDeviceState *md)
+{
+ /*
+ * The VM can indicate an alignment up to 32 GiB. Memory device core can
+ * usually only handle/guarantee 1 GiB alignment. The user will have to
+ * specify a larger maxmem eventually.
+ *
+ * The memory device core will warn the user in case maxmem might have to be
+ * increased and will fail plugging the device if there is not sufficient
+ * space after alignment.
+ *
+ * TODO: we could do the alignment ourselves in a slightly bigger region.
+ * But this feels better, although the warning might be annoying. Maybe
+ * we can optimize that in the future (e.g., with such a device on the
+ * cmdline place/size the device memory region differently.
+ */
+ return 32 * GiB;
+}
+
static void hv_balloon_md_fill_device_info(const MemoryDeviceState *md,
MemoryDeviceInfo *info)
{
@@ -1766,5 +1770,6 @@ static void hv_balloon_class_init(ObjectClass *klass, void *data)
mdc->get_memory_region = hv_balloon_md_get_memory_region;
mdc->decide_memslots = hv_balloon_decide_memslots;
mdc->get_memslots = hv_balloon_get_memslots;
+ mdc->get_min_alignment = hv_balloon_md_get_min_alignment;
mdc->fill_device_info = hv_balloon_md_fill_device_info;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6
2024-02-06 7:02 [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
2024-02-06 7:02 ` [PULL 1/3] hv-balloon: use get_min_alignment() to express 32 GiB alignment David Hildenbrand
@ 2024-02-06 7:11 ` David Hildenbrand
1 sibling, 0 replies; 3+ messages in thread
From: David Hildenbrand @ 2024-02-06 7:11 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Paolo Bonzini
On 06.02.24 08:02, David Hildenbrand wrote:
> The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:
>
> Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)
>
> are available in the Git repository at:
>
> https://github.com/davidhildenbrand/qemu.git tags/mem-2024-02-06
>
> for you to fetch changes up to a32c31979a852a07d590effa1586f6ab4fa4d784:
>
> oslib-posix: initialize backend memory objects in parallel (2024-02-04 17:51:13 +0100)
>
> ----------------------------------------------------------------
> Hi,
>
> "Host Memory Backends" and "Memory devices" queue ("mem"):
> - Reintroduce memory region size checks for memory devices; the removal
> lead to some undesired side effects
> - Preallocate memory of memory backends in selected configurations
> asynchronously (so we preallocate concurrently), to speed up QEMU
> startup time.
A mail address in the second patch is wrong. Will send a v2.
--
Cheers,
David / dhildenb
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-02-06 7:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-06 7:02 [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
2024-02-06 7:02 ` [PULL 1/3] hv-balloon: use get_min_alignment() to express 32 GiB alignment David Hildenbrand
2024-02-06 7:11 ` [PULL 0/3] Host Memory Backends and Memory devices queue 2024-02-6 David Hildenbrand
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).