[PATCH v2 3/3] hyperv/synic: Mark regions as no vhost

Dr. David Alan Gilbert (git) posted 3 patches 6 years ago
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
[PATCH v2 3/3] hyperv/synic: Mark regions as no vhost
Posted by Dr. David Alan Gilbert (git) 6 years ago
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

Mark synic regions as novhost; they are splitting huge page memory
and breaking vhost region joining.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 hw/hyperv/hyperv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/hw/hyperv/hyperv.c b/hw/hyperv/hyperv.c
index da8ce82725..5dbbb14fdd 100644
--- a/hw/hyperv/hyperv.c
+++ b/hw/hyperv/hyperv.c
@@ -99,6 +99,14 @@ static void synic_realize(DeviceState *dev, Error **errp)
                            sizeof(*synic->msg_page), &error_abort);
     memory_region_init_ram(&synic->event_page_mr, obj, eventp_name,
                            sizeof(*synic->event_page), &error_abort);
+    /*
+     * The guest can put the synic pages anywhere, including
+     * fragmenting something the host might want to keep as a huge
+     * page.
+     */
+    memory_region_set_no_vhost(&synic->msg_page_mr, true);
+    memory_region_set_no_vhost(&synic->event_page_mr, true);
+
     synic->msg_page = memory_region_get_ram_ptr(&synic->msg_page_mr);
     synic->event_page = memory_region_get_ram_ptr(&synic->event_page_mr);
 
-- 
2.24.1