summaryrefslogtreecommitdiffstats
path: root/hw/hyperv
diff options
context:
space:
mode:
authorJon Doron2020-04-24 14:34:43 +0200
committerPaolo Bonzini2020-06-10 18:09:41 +0200
commit6775d15de18268718c2f971c2b2d255c76ff2240 (patch)
tree875b8532a5af2a0152e5dc5663b0b9c2bd1820f0 /hw/hyperv
parenti386:pc: whitelist dynamic vmbus-bridge (diff)
downloadqemu-6775d15de18268718c2f971c2b2d255c76ff2240.tar.gz
qemu-6775d15de18268718c2f971c2b2d255c76ff2240.tar.xz
qemu-6775d15de18268718c2f971c2b2d255c76ff2240.zip
i386: Hyper-V VMBus ACPI DSDT entry
Guest OS uses ACPI to discover VMBus presence. Add a corresponding entry to DSDT in case VMBus has been enabled. Experimentally Windows guests were found to require this entry to include two IRQ resources. They seem to never be used but they still have to be there. Make IRQ numbers user-configurable via corresponding properties; use 7 and 13 by default. Signed-off-by: Evgeny Yakovlev <eyakovlev@virtuozzo.com> Signed-off-by: Roman Kagan <rkagan@virtuozzo.com> Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Signed-off-by: Jon Doron <arilou@gmail.com> Message-Id: <20200424123444.3481728-6-arilou@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/hyperv')
-rw-r--r--hw/hyperv/vmbus.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c
index 802bbc8c96..2acb2185e8 100644
--- a/hw/hyperv/vmbus.c
+++ b/hw/hyperv/vmbus.c
@@ -2641,6 +2641,12 @@ static const VMStateDescription vmstate_vmbus_bridge = {
},
};
+static Property vmbus_bridge_props[] = {
+ DEFINE_PROP_UINT8("irq0", VMBusBridge, irq0, 7),
+ DEFINE_PROP_UINT8("irq1", VMBusBridge, irq1, 13),
+ DEFINE_PROP_END_OF_LIST()
+};
+
static void vmbus_bridge_class_init(ObjectClass *klass, void *data)
{
DeviceClass *k = DEVICE_CLASS(klass);
@@ -2651,6 +2657,7 @@ static void vmbus_bridge_class_init(ObjectClass *klass, void *data)
sk->explicit_ofw_unit_address = vmbus_bridge_ofw_unit_address;
set_bit(DEVICE_CATEGORY_BRIDGE, k->categories);
k->vmsd = &vmstate_vmbus_bridge;
+ device_class_set_props(k, vmbus_bridge_props);
/* override SysBusDevice's default */
k->user_creatable = true;
}