[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 16/17] vhost: Only align sections for vhost-user
From: |
Michael S. Tsirkin |
Subject: |
[PULL v2 16/17] vhost: Only align sections for vhost-user |
Date: |
Wed, 22 Jan 2020 01:50:34 -0500 |
From: "Dr. David Alan Gilbert" <address@hidden>
I added hugepage alignment code in c1ece84e7c9 to deal with
vhost-user + postcopy which needs aligned pages when using userfault.
However, on x86 the lower 2MB of address space tends to be shotgun'd
with small fragments around the 512-640k range - e.g. video RAM, and
with HyperV synic pages tend to sit around there - again splitting
it up. The alignment code complains with a 'Section rounded to ...'
error and gives up.
Since vhost-user already filters out devices without an fd
(see vhost-user.c vhost_user_mem_section_filter) it shouldn't be
affected by those overlaps.
Turn the alignment off on vhost-kernel so that it doesn't try
and align, and thus won't hit the rounding issues.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
---
hw/virtio/vhost.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 774d87d98e..25fd469179 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -547,26 +547,28 @@ static void vhost_region_add_section(struct vhost_dev
*dev,
uintptr_t mrs_host = (uintptr_t)memory_region_get_ram_ptr(section->mr) +
section->offset_within_region;
RAMBlock *mrs_rb = section->mr->ram_block;
- size_t mrs_page = qemu_ram_pagesize(mrs_rb);
trace_vhost_region_add_section(section->mr->name, mrs_gpa, mrs_size,
mrs_host);
- /* Round the section to it's page size */
- /* First align the start down to a page boundary */
- uint64_t alignage = mrs_host & (mrs_page - 1);
- if (alignage) {
- mrs_host -= alignage;
- mrs_size += alignage;
- mrs_gpa -= alignage;
+ if (dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER) {
+ /* Round the section to it's page size */
+ /* First align the start down to a page boundary */
+ size_t mrs_page = qemu_ram_pagesize(mrs_rb);
+ uint64_t alignage = mrs_host & (mrs_page - 1);
+ if (alignage) {
+ mrs_host -= alignage;
+ mrs_size += alignage;
+ mrs_gpa -= alignage;
+ }
+ /* Now align the size up to a page boundary */
+ alignage = mrs_size & (mrs_page - 1);
+ if (alignage) {
+ mrs_size += mrs_page - alignage;
+ }
+ trace_vhost_region_add_section_aligned(section->mr->name, mrs_gpa,
mrs_size,
+ mrs_host);
}
- /* Now align the size up to a page boundary */
- alignage = mrs_size & (mrs_page - 1);
- if (alignage) {
- mrs_size += mrs_page - alignage;
- }
- trace_vhost_region_add_section_aligned(section->mr->name, mrs_gpa,
mrs_size,
- mrs_host);
if (dev->n_tmp_sections) {
/* Since we already have at least one section, lets see if
--
MST
- [PULL v2 06/17] acpi: cpuhp: introduce 'Command data 2' field, (continued)
- [PULL v2 06/17] acpi: cpuhp: introduce 'Command data 2' field, Michael S. Tsirkin, 2020/01/22
- [PULL v2 07/17] acpi: cpuhp: spec: add typical usecases, Michael S. Tsirkin, 2020/01/22
- [PULL v2 08/17] acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command, Michael S. Tsirkin, 2020/01/22
- [PULL v2 09/17] bios-tables-test: document expected file update, Michael S. Tsirkin, 2020/01/22
- [PULL v2 10/17] virtio-9p-device: fix memleak in virtio_9p_device_unrealize, Michael S. Tsirkin, 2020/01/22
- [PULL v2 12/17] virtio-scsi: delete vqs in unrealize to avoid memleaks, Michael S. Tsirkin, 2020/01/22
- [PULL v2 11/17] virtio-9p-device: convert to new virtio_delete_queue, Michael S. Tsirkin, 2020/01/22
- [PULL v2 13/17] virtio-scsi: convert to new virtio_delete_queue, Michael S. Tsirkin, 2020/01/22
- [PULL v2 14/17] vhost-vsock: delete vqs in vhost_vsock_unrealize to avoid memleaks, Michael S. Tsirkin, 2020/01/22
- [PULL v2 15/17] vhost: Add names to section rounded warning, Michael S. Tsirkin, 2020/01/22
- [PULL v2 16/17] vhost: Only align sections for vhost-user,
Michael S. Tsirkin <=
- [PULL v2 17/17] i386:acpi: Remove _HID from the SMBus ACPI entry, Michael S. Tsirkin, 2020/01/22
- Re: [PULL v2 00/17] virtio, pc: fixes, features, no-reply, 2020/01/22
- Re: [PULL v2 00/17] virtio, pc: fixes, features, Peter Maydell, 2020/01/23