qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/4] ich9: add notifer for ec to generate sci


From: Michael S. Tsirkin
Subject: Re: [Qemu-devel] [PATCH 3/4] ich9: add notifer for ec to generate sci
Date: Tue, 28 May 2013 09:40:50 +0300

On Wed, May 22, 2013 at 11:46:36AM +0800, liguang wrote:
> Signed-off-by: liguang <address@hidden>
> ---
>  hw/acpi/ich9.c         |   15 +++++++++++++++
>  include/hw/acpi/ich9.h |    1 +
>  2 files changed, 16 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
> index 582dbec..2ecde32 100644
> --- a/hw/acpi/ich9.c
> +++ b/hw/acpi/ich9.c
> @@ -33,6 +33,7 @@
>  #include "exec/address-spaces.h"
>  
>  #include "hw/i386/ich9.h"
> +#include "hw/acpi/ec.h"
>  
>  //#define DEBUG
>  
> @@ -43,6 +44,8 @@ do { printf("%s "fmt, __func__, ## __VA_ARGS__); } while (0)
>  #define ICH9_DEBUG(fmt, ...)    do { } while (0)
>  #endif
>  
> +#define GPE_EC_SCI_STATUS (0x1 << (16 + 1))
> +
>  static void pm_update_sci(ICH9LPCPMRegs *pm)
>  {
>      int sci_level, pm1a_sts;
> @@ -202,6 +205,15 @@ static void pm_powerdown_req(Notifier *n, void *opaque)
>      acpi_pm1_evt_power_down(&pm->acpi_regs);
>  }
>  
> +static void pm_ec_sci_req(Notifier *n, void *opaque)
> +{
> +    ICH9LPCPMRegs *pm = container_of(n, ICH9LPCPMRegs, ec_sci_notifier);
> +    ACPIGPE *gpe = &pm->acpi_regs.gpe;
> +
> +    *gpe->sts |= GPE_EC_SCI_STATUS;
> +    pm_update_sci(pm);
> +}
> +
>  void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
>                    qemu_irq sci_irq)
>  {
> @@ -227,4 +239,7 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
>      qemu_register_reset(pm_reset, pm);
>      pm->powerdown_notifier.notify = pm_powerdown_req;
>      qemu_register_powerdown_notifier(&pm->powerdown_notifier);
> +
> +    pm->ec_sci_notifier.notify = pm_ec_sci_req;
> +    qemu_register_ec_sci_notifier(&pm->ec_sci_notifier);
>  }

So an EC is using ICH9 to send SCI to guest,
but ICH9 should not worry about EC that's connected to it.
So it should be something like
qemu_register_sci_notifier
and not make ich9 depend on ec.

> diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
> index b1fe71f..f358deb 100644
> --- a/include/hw/acpi/ich9.h
> +++ b/include/hw/acpi/ich9.h
> @@ -42,6 +42,7 @@ typedef struct ICH9LPCPMRegs {
>  
>      uint32_t pm_io_base;
>      Notifier powerdown_notifier;
> +    Notifier ec_sci_notifier;
>  } ICH9LPCPMRegs;
>  
>  void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
> -- 
> 1.7.2.5



reply via email to

[Prev in Thread] Current Thread [Next in Thread]