From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54427) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T6lfX-0005uh-89 for qemu-devel@nongnu.org; Wed, 29 Aug 2012 13:03:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T6lfW-0003Ch-2C for qemu-devel@nongnu.org; Wed, 29 Aug 2012 13:03:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38005) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T6lfV-0003CI-QY for qemu-devel@nongnu.org; Wed, 29 Aug 2012 13:03:05 -0400 From: Igor Mammedov Date: Wed, 29 Aug 2012 19:02:44 +0200 Message-Id: <1346259767-991-3-git-send-email-imammedo@redhat.com> In-Reply-To: <1346259767-991-1-git-send-email-imammedo@redhat.com> References: <1346259767-991-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [PATCH 2/5] acpi: use notifier for signaling guest system_powerdown command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: peter.maydell@linaro.org, qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, mst@redhat.com, jan.kiszka@siemens.com, lcapitulino@redhat.com, blauwirbel@gmail.com, alex.williamson@redhat.com, kraxel@redhat.com, pbonzini@redhat.com In addition, there is no need to allocate an extra irq just for rising SCI in irq handler. Just rise SCI right from notifier handler instead. Signed-off-by: Igor Mammedov --- hw/acpi_piix4.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c index 72d6e5c..4b9d0e8 100644 --- a/hw/acpi_piix4.c +++ b/hw/acpi_piix4.c @@ -67,6 +67,7 @@ typedef struct PIIX4PMState { qemu_irq smi_irq; int kvm_enabled; Notifier machine_ready; + Notifier powerdown_notifier; /* for pci hotplug */ struct pci_status pci0_status; @@ -359,9 +360,9 @@ static void piix4_reset(void *opaque) piix4_update_hotplug(s); } -static void piix4_powerdown(void *opaque, int irq, int power_failing) +static void piix4_pm_powerdown_req(Notifier *n, void *opaque) { - PIIX4PMState *s = opaque; + PIIX4PMState *s = container_of(n, PIIX4PMState, powerdown_notifier); assert(s != NULL); acpi_pm1_evt_power_down(&s->ar); @@ -415,7 +416,8 @@ static int piix4_pm_initfn(PCIDevice *dev) acpi_pm_tmr_init(&s->ar, pm_tmr_timer); acpi_gpe_init(&s->ar, GPE_LEN); - qemu_system_powerdown = *qemu_allocate_irqs(piix4_powerdown, s, 1); + s->powerdown_notifier.notify = piix4_pm_powerdown_req; + qemu_register_powerdown_notifier(&s->powerdown_notifier); pm_smbus_init(&s->dev.qdev, &s->smb); s->machine_ready.notify = piix4_pm_machine_ready; -- 1.7.11.4