From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=45965 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PhvRt-0004P8-05 for qemu-devel@nongnu.org; Tue, 25 Jan 2011 21:49:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PhvRr-0007Oj-Le for qemu-devel@nongnu.org; Tue, 25 Jan 2011 21:49:32 -0500 Received: from mail.valinux.co.jp ([210.128.90.3]:39729) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PhvRr-0007Nf-4q for qemu-devel@nongnu.org; Tue, 25 Jan 2011 21:49:31 -0500 Date: Wed, 26 Jan 2011 11:49:24 +0900 From: Isaku Yamahata Subject: Re: [Qemu-devel] [PATCH V9 16/16] acpi-piix4: Add Xen hypercall for sleep state. Message-ID: <20110126024924.GA25296@valinux.co.jp> References: <1295965760-31508-1-git-send-email-anthony.perard@citrix.com> <1295965760-31508-17-git-send-email-anthony.perard@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1295965760-31508-17-git-send-email-anthony.perard@citrix.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony.perard@citrix.com Cc: Xen Devel , QEMU-devel , Stefano Stabellini On Tue, Jan 25, 2011 at 02:29:20PM +0000, anthony.perard@citrix.com wrote: > From: Anthony PERARD > > Signed-off-by: Anthony PERARD > --- > hw/acpi_piix4.c | 4 ++++ > hw/xen.h | 2 ++ > xen-all.c | 7 +++++++ > xen-stub.c | 4 ++++ > 4 files changed, 17 insertions(+), 0 deletions(-) > > diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c > index 5bbc2b5..ea94bf9 100644 > --- a/hw/acpi_piix4.c > +++ b/hw/acpi_piix4.c > @@ -23,6 +23,7 @@ > #include "acpi.h" > #include "sysemu.h" > #include "range.h" > +#include "xen.h" > > //#define DEBUG > > @@ -181,6 +182,9 @@ static void pm_ioport_write(IORange *ioport, uint64_t addr, unsigned width, > if (s->cmos_s3) { > qemu_irq_raise(s->cmos_s3); > } > + if (xen_enabled()) { > + xen_set_hvm_sleep_state(); > + } > default: > break; > } Why not utilize cmos_s3 callback? Something like - cmos_s3 = qemu_allocate_irqs(pc_cmos_set_s3_resume, rtc_state, 1); + cmos_s3 = qemu_allocate_irqs(xen_cmos_set_s3_resume, rtc_state, 1); smbus = piix4_pm_init(pci_bus, piix3_devfn + 3, 0xb100, isa_reserve_irq(9), *cmos_s3, *smi_irq, kvm_enabled()); xen_cmos_set_s3_resume() pc_cmos_set_s3_resume() xen_set_hvm_sleep_state() thanks, > diff --git a/hw/xen.h b/hw/xen.h > index dd3fb68..8920550 100644 > --- a/hw/xen.h > +++ b/hw/xen.h > @@ -44,6 +44,8 @@ int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num); > void xen_piix3_set_irq(void *opaque, int irq_num, int level); > void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len); > > +void xen_set_hvm_sleep_state(void); > + > int xen_init(int smp_cpus); > > #if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY) > diff --git a/xen-all.c b/xen-all.c > index c2d37d6..86ebfcb 100644 > --- a/xen-all.c > +++ b/xen-all.c > @@ -464,6 +464,13 @@ static void xen_main_loop_prepare(XenIOState *state) > } > > > +/* ACPI */ > + > +void xen_set_hvm_sleep_state(void) > +{ > + xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 3); > +} > + > /* Initialise Xen */ > > static void xen_vm_change_state_handler(void *opaque, int running, int reason) > diff --git a/xen-stub.c b/xen-stub.c > index c9f477d..d22f475 100644 > --- a/xen-stub.c > +++ b/xen-stub.c > @@ -28,6 +28,10 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size) > { > } > > +void xen_set_hvm_sleep_state(void) > +{ > +} > + > int xen_init(int smp_cpus) > { > return -ENOSYS; > -- > 1.7.1 > > -- yamahata