From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH 1.1 1/4] xen: do not initialize the interval timer and PCSPK emulator Date: Mon, 14 May 2012 11:38:34 -0500 Message-ID: <4FB1350A.6020106@codemonkey.ws> References: <1336567456-20202-1-git-send-email-stefano.stabellini@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1336567456-20202-1-git-send-email-stefano.stabellini@eu.citrix.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: Stefano Stabellini Cc: xen-devel@lists.xensource.com, qemu-devel@nongnu.org List-Id: xen-devel@lists.xenproject.org On 05/09/2012 07:44 AM, Stefano Stabellini wrote: > PIT and PCSPK are emulated by the hypervisor so we don't need to emulate > them in Qemu: this patch prevents Qemu from waking up needlessly at > PIT_FREQ on Xen. > > Signed-off-by: Stefano Stabellini > --- > hw/pc.c | 23 +++++++++++++---------- > 1 files changed, 13 insertions(+), 10 deletions(-) > > diff --git a/hw/pc.c b/hw/pc.c > index 4d34a33..c52caf6 100644 > --- a/hw/pc.c > +++ b/hw/pc.c > @@ -47,6 +47,7 @@ > #include "ui/qemu-spice.h" > #include "memory.h" > #include "exec-memory.h" > +#include "arch_init.h" > > /* output Bochs bios info messages */ > //#define DEBUG_BIOS > @@ -1097,7 +1098,7 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, > qemu_irq pit_alt_irq = NULL; > qemu_irq rtc_irq = NULL; > qemu_irq *a20_line; > - ISADevice *i8042, *port92, *vmmouse, *pit; > + ISADevice *i8042, *port92, *vmmouse, *pit = NULL; > qemu_irq *cpu_exit_irq; > > register_ioport_write(0x80, 1, 1, ioport80_write, NULL); > @@ -1126,16 +1127,18 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, > > qemu_register_boot_set(pc_boot_set, *rtc_state); > > - if (kvm_irqchip_in_kernel()) { > - pit = kvm_pit_init(isa_bus, 0x40); > - } else { > - pit = pit_init(isa_bus, 0x40, pit_isa_irq, pit_alt_irq); > - } > - if (hpet) { > - /* connect PIT to output control line of the HPET */ > - qdev_connect_gpio_out(hpet, 0, qdev_get_gpio_in(&pit->qdev, 0)); > + if (!xen_available()) { Shouldn't this be xen_enabled()? Regards, Anthony Liguori > + if (kvm_irqchip_in_kernel()) { > + pit = kvm_pit_init(isa_bus, 0x40); > + } else { > + pit = pit_init(isa_bus, 0x40, pit_isa_irq, pit_alt_irq); > + } > + if (hpet) { > + /* connect PIT to output control line of the HPET */ > + qdev_connect_gpio_out(hpet, 0, qdev_get_gpio_in(&pit->qdev, 0)); > + } > + pcspk_init(isa_bus, pit); > } > - pcspk_init(isa_bus, pit); > > for(i = 0; i< MAX_SERIAL_PORTS; i++) { > if (serial_hds[i]) {