summaryrefslogtreecommitdiff
path: root/hw/i386/pc.c
diff options
context:
space:
mode:
authorDr. David Alan Gilbert <dgilbert@redhat.com>2014-10-03 17:33:37 -0400
committerMichael S. Tsirkin <mst@redhat.com>2014-11-02 13:44:12 +0200
commit9b23cfb76b3a5e9eb5cc899eaf2f46bc46d33ba4 (patch)
tree7f07d1dac045dbd42cbba0ba8bcb4049c6207ccb /hw/i386/pc.c
parentcc43364de7773c9838cedf8f461b7788b8b4fd8e (diff)
downloadqemu-9b23cfb76b3a5e9eb5cc899eaf2f46bc46d33ba4.tar.gz
-machine vmport=off: Allow disabling of VMWare ioport emulation
This is a pc & q35 only machine opt. VMWare apparently doesn't like running under QEMU due to our incomplete emulation of it's special IO Port. This adds a pc & q35 property to allow it to be turned off. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Don Slutz <dslutz@verizon.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Diffstat (limited to 'hw/i386/pc.c')
-rw-r--r--hw/i386/pc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index a27a4b3279..dc2fe6a666 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1710,6 +1710,20 @@ static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
pcms->max_ram_below_4g = value;
}
+static bool pc_machine_get_vmport(Object *obj, Error **errp)
+{
+ PCMachineState *pcms = PC_MACHINE(obj);
+
+ return pcms->vmport;
+}
+
+static void pc_machine_set_vmport(Object *obj, bool value, Error **errp)
+{
+ PCMachineState *pcms = PC_MACHINE(obj);
+
+ pcms->vmport = value;
+}
+
static void pc_machine_initfn(Object *obj)
{
PCMachineState *pcms = PC_MACHINE(obj);
@@ -1722,6 +1736,11 @@ static void pc_machine_initfn(Object *obj)
pc_machine_get_max_ram_below_4g,
pc_machine_set_max_ram_below_4g,
NULL, NULL, NULL);
+ pcms->vmport = !xen_enabled();
+ object_property_add_bool(obj, PC_MACHINE_VMPORT,
+ pc_machine_get_vmport,
+ pc_machine_set_vmport,
+ NULL);
}
static void pc_machine_class_init(ObjectClass *oc, void *data)