diff mbox series

[PATCH-for-4.2,v10,07/11] hw/arm: Factor out powerdown notifier from GPIO

Message ID 20190904085629.13872-8-shameerali.kolothum.thodi@huawei.com
State Superseded
Headers show
Series ARM virt: ACPI memory hotplug support | expand

Commit Message

Shameerali Kolothum Thodi Sept. 4, 2019, 8:56 a.m. UTC
This is in preparation of using GED device for
system_powerdown event. Make the powerdown notifier
registration independent of create_gpio() fn.

Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

Reviewed-by: Eric Auger <eric.auger@redhat.com>

---
 hw/arm/virt.c         | 12 ++++--------
 include/hw/arm/virt.h |  1 +
 2 files changed, 5 insertions(+), 8 deletions(-)

-- 
2.17.1

Comments

Igor Mammedov Sept. 11, 2019, 1:08 p.m. UTC | #1
On Wed, 4 Sep 2019 09:56:25 +0100
Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> wrote:

> This is in preparation of using GED device for

> system_powerdown event. Make the powerdown notifier

> registration independent of create_gpio() fn.

> 

> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> Reviewed-by: Eric Auger <eric.auger@redhat.com>


Reviewed-by: Igor Mammedov <imammedo@redhat.com>


> ---

>  hw/arm/virt.c         | 12 ++++--------

>  include/hw/arm/virt.h |  1 +

>  2 files changed, 5 insertions(+), 8 deletions(-)

> 

> diff --git a/hw/arm/virt.c b/hw/arm/virt.c

> index 95accc28f1..89ee37d7de 100644

> --- a/hw/arm/virt.c

> +++ b/hw/arm/virt.c

> @@ -791,10 +791,6 @@ static void virt_powerdown_req(Notifier *n, void *opaque)

>      qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);

>  }

>  

> -static Notifier virt_system_powerdown_notifier = {

> -    .notify = virt_powerdown_req

> -};

> -

>  static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)

>  {

>      char *nodename;

> @@ -835,10 +831,6 @@ static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)

>                            KEY_POWER);

>      qemu_fdt_setprop_cells(vms->fdt, "/gpio-keys/poweroff",

>                             "gpios", phandle, 3, 0);

> -

> -    /* connect powerdown request */

> -    qemu_register_powerdown_notifier(&virt_system_powerdown_notifier);

> -

>      g_free(nodename);

>  }

>  

> @@ -1730,6 +1722,10 @@ static void machvirt_init(MachineState *machine)

>          vms->acpi_dev = create_acpi_ged(vms, pic);

>      }

>  

> +     /* connect powerdown request */

> +     vms->powerdown_notifier.notify = virt_powerdown_req;

> +     qemu_register_powerdown_notifier(&vms->powerdown_notifier);

> +

>      /* Create mmio transports, so the user can create virtio backends

>       * (which will be automatically plugged in to the transports). If

>       * no backend is created the transport will just sit harmlessly idle.

> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h

> index 577ee49b4b..0b41083e9d 100644

> --- a/include/hw/arm/virt.h

> +++ b/include/hw/arm/virt.h

> @@ -137,6 +137,7 @@ typedef struct {

>      int psci_conduit;

>      hwaddr highest_gpa;

>      DeviceState *acpi_dev;

> +    Notifier powerdown_notifier;

>  } VirtMachineState;

>  

>  #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 95accc28f1..89ee37d7de 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -791,10 +791,6 @@  static void virt_powerdown_req(Notifier *n, void *opaque)
     qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);
 }
 
-static Notifier virt_system_powerdown_notifier = {
-    .notify = virt_powerdown_req
-};
-
 static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
 {
     char *nodename;
@@ -835,10 +831,6 @@  static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
                           KEY_POWER);
     qemu_fdt_setprop_cells(vms->fdt, "/gpio-keys/poweroff",
                            "gpios", phandle, 3, 0);
-
-    /* connect powerdown request */
-    qemu_register_powerdown_notifier(&virt_system_powerdown_notifier);
-
     g_free(nodename);
 }
 
@@ -1730,6 +1722,10 @@  static void machvirt_init(MachineState *machine)
         vms->acpi_dev = create_acpi_ged(vms, pic);
     }
 
+     /* connect powerdown request */
+     vms->powerdown_notifier.notify = virt_powerdown_req;
+     qemu_register_powerdown_notifier(&vms->powerdown_notifier);
+
     /* Create mmio transports, so the user can create virtio backends
      * (which will be automatically plugged in to the transports). If
      * no backend is created the transport will just sit harmlessly idle.
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index 577ee49b4b..0b41083e9d 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -137,6 +137,7 @@  typedef struct {
     int psci_conduit;
     hwaddr highest_gpa;
     DeviceState *acpi_dev;
+    Notifier powerdown_notifier;
 } VirtMachineState;
 
 #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)