From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59200) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XalvZ-0007t1-Eg for qemu-devel@nongnu.org; Sun, 05 Oct 2014 09:32:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XalvR-00022b-QG for qemu-devel@nongnu.org; Sun, 05 Oct 2014 09:32:45 -0400 Received: from mail-wi0-x22d.google.com ([2a00:1450:400c:c05::22d]:55945) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XalvR-00022T-G9 for qemu-devel@nongnu.org; Sun, 05 Oct 2014 09:32:37 -0400 Received: by mail-wi0-f173.google.com with SMTP id fb4so2378736wid.12 for ; Sun, 05 Oct 2014 06:32:36 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <5431486E.3050007@redhat.com> Date: Sun, 05 Oct 2014 15:32:30 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1412372017-5042-1-git-send-email-dslutz@verizon.com> <1412372017-5042-2-git-send-email-dslutz@verizon.com> In-Reply-To: <1412372017-5042-2-git-send-email-dslutz@verizon.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 1/1] -machine vmport=off: Allow disabling of VMWare ioport emulation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Don Slutz , qemu-devel@nongnu.org, "Dr. David Alan Gilbert" Cc: Michael Tokarev , Anthony Liguori , Stefan Hajnoczi , "Michael S. Tsirkin" Il 03/10/2014 23:33, Don Slutz ha scritto: > From: "Dr. David Alan Gilbert" > > 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 > Signed-off-by: Don Slutz > --- > hw/i386/pc.c | 19 +++++++++++++++++++ > hw/i386/pc_piix.c | 4 ++-- > hw/i386/pc_q35.c | 3 ++- > include/hw/i386/pc.h | 2 ++ > qemu-options.hx | 3 +++ > vl.c | 4 ++++ > 6 files changed, 32 insertions(+), 3 deletions(-) > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index 82a7daa..8e37a99 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -1687,6 +1687,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); > @@ -1699,6 +1713,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) > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 103d756..03a73ce 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -234,8 +234,8 @@ static void pc_init1(MachineState *machine, > pc_vga_init(isa_bus, pci_enabled ? pci_bus : NULL); > > /* init basic PC hardware */ > - pc_basic_device_init(isa_bus, gsi, &rtc_state, &floppy, xen_enabled(), > - 0x4); > + pc_basic_device_init(isa_bus, gsi, &rtc_state, &floppy, > + !pc_machine->vmport, 0x4); > > pc_nic_init(isa_bus, pci_bus); > > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > index d4a907c..c5ba93d 100644 > --- a/hw/i386/pc_q35.c > +++ b/hw/i386/pc_q35.c > @@ -241,7 +241,8 @@ static void pc_q35_init(MachineState *machine) > pc_register_ferr_irq(gsi[13]); > > /* init basic PC hardware */ > - pc_basic_device_init(isa_bus, gsi, &rtc_state, &floppy, false, 0xff0104); > + pc_basic_device_init(isa_bus, gsi, &rtc_state, &floppy, > + !pc_machine->vmport, 0xff0104); > > /* connect pm stuff to lpc */ > ich9_lpc_pm_init(lpc); > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h > index 77316d5..96febb9 100644 > --- a/include/hw/i386/pc.h > +++ b/include/hw/i386/pc.h > @@ -35,11 +35,13 @@ struct PCMachineState { > HotplugHandler *acpi_dev; > > uint64_t max_ram_below_4g; > + bool vmport; > }; > > #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device" > #define PC_MACHINE_MEMHP_REGION_SIZE "hotplug-memory-region-size" > #define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g" > +#define PC_MACHINE_VMPORT "vmport" > > /** > * PCMachineClass: > diff --git a/qemu-options.hx b/qemu-options.hx > index 365b56c..fe6b6e5 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -33,6 +33,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ > " property accel=accel1[:accel2[:...]] selects accelerator\n" > " supported accelerators are kvm, xen, tcg (default: tcg)\n" > " kernel_irqchip=on|off controls accelerated irqchip support\n" > + " vmport=on|off controls emulation of vmport (default: on)\n" > " kvm_shadow_mem=size of KVM shadow MMU\n" > " dump-guest-core=on|off include guest memory in a core dump (default=on)\n" > " mem-merge=on|off controls memory merge support (default: on)\n" > @@ -51,6 +52,8 @@ than one accelerator specified, the next one is used if the previous one fails > to initialize. > @item kernel_irqchip=on|off > Enables in-kernel irqchip support for the chosen accelerator when available. > +@item vmport=on|off > +Enables emulation of VMWare IO port, for vmmouse etc. (enabled by default) > @item kvm_shadow_mem=size > Defines the size of the KVM shadow MMU. > @item dump-guest-core=on|off > diff --git a/vl.c b/vl.c > index 9d2aaaf..26fa864 100644 > --- a/vl.c > +++ b/vl.c > @@ -389,6 +389,10 @@ static QemuOptsList qemu_machine_opts = { > .name = PC_MACHINE_MAX_RAM_BELOW_4G, > .type = QEMU_OPT_SIZE, > .help = "maximum ram below the 4G boundary (32bit boundary)", > + }, { > + .name = PC_MACHINE_VMPORT, > + .type = QEMU_OPT_BOOL, > + .help = "Enable vmport (pc & q35)", > },{ > .name = "iommu", > .type = QEMU_OPT_BOOL, > Reviewed-by: Paolo Bonzini