From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38029) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2Hte-0008Sp-GY for qemu-devel@nongnu.org; Thu, 25 Jul 2013 05:31:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V2Hta-0003B3-0D for qemu-devel@nongnu.org; Thu, 25 Jul 2013 05:31:42 -0400 Received: from mx1.redhat.com ([209.132.183.28]:20007) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2HtZ-0003Ax-PO for qemu-devel@nongnu.org; Thu, 25 Jul 2013 05:31:37 -0400 Date: Thu, 25 Jul 2013 12:32:48 +0300 From: "Michael S. Tsirkin" Message-ID: <20130725093248.GA27524@redhat.com> References: <1374681580-17439-1-git-send-email-mst@redhat.com> <1374681580-17439-12-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1374681580-17439-12-git-send-email-mst@redhat.com> Subject: Re: [Qemu-devel] [PATCH v3 11/14] piix: APIs for pc guest info List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Aurelien Jarno On Wed, Jul 24, 2013 at 07:02:13PM +0300, Michael S. Tsirkin wrote: > This adds APIs that will be used to fill in guest info table, > implemented using QOM, to various piix components. > > Signed-off-by: Michael S. Tsirkin > --- > hw/acpi/piix4.c | 29 +++++++++++++++++++++++++++-- > hw/mips/mips_malta.c | 2 +- > hw/pci-host/piix.c | 8 ++++++++ > include/hw/i386/pc.h | 1 + > include/qemu/typedefs.h | 1 + > 5 files changed, 38 insertions(+), 3 deletions(-) Ouch, forgot to git add a file, so it's missing. include/hw/acpi/piix4.h below. Corrected patch with this chunk added below. It's trivial so not reposting. ---> Subject: piix: APIs for pc guest info This adds APIs that will be used to fill in guest info table, implemented using QOM, to various piix components. Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index c885690..2128f13 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -29,6 +29,7 @@ #include "exec/ioport.h" #include "hw/nvram/fw_cfg.h" #include "exec/address-spaces.h" +#include "hw/acpi/piix4.h" //#define DEBUG @@ -63,7 +64,7 @@ typedef struct CPUStatus { uint8_t sts[PIIX4_PROC_LEN]; } CPUStatus; -typedef struct PIIX4PMState { +struct PIIX4PMState { /*< private >*/ PCIDevice parent_obj; /*< public >*/ @@ -96,7 +97,7 @@ typedef struct PIIX4PMState { CPUStatus gpe_cpu; Notifier cpu_added_notifier; -} PIIX4PMState; +}; #define TYPE_PIIX4_PM "PIIX4_PM" @@ -458,6 +459,30 @@ static int piix4_pm_initfn(PCIDevice *dev) return 0; } +PIIX4PMState *piix4_pm_find(void) +{ + bool ambig; + Object *o = object_resolve_path_type("", "PIIX4_PM", &ambig); + + if (ambig || !o) { + return NULL; + } + return OBJECT_CHECK(PIIX4PMState, o, "PIIX4_PM"); +} + +void piix4_pm_get_acpi_pm_info(PIIX4PMState *s, AcpiPmInfo *info) +{ + info->s3_disabled = s->disable_s3; + info->s4_disabled = s->disable_s4; + info->s4_val = s->s4_val; + + info->acpi_enable_cmd = ACPI_ENABLE; + info->acpi_disable_cmd = ACPI_DISABLE; + info->gpe0_blk = GPE_BASE; + info->gpe0_blk_len = GPE_LEN; + info->sci_int = 9; +} + i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base, qemu_irq sci_irq, qemu_irq smi_irq, int kvm_enabled, FWCfgState *fw_cfg) diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c index de87241..14573ab 100644 --- a/hw/mips/mips_malta.c +++ b/hw/mips/mips_malta.c @@ -965,7 +965,7 @@ void mips_malta_init(QEMUMachineInitArgs *args) pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1); pci_create_simple(pci_bus, piix4_devfn + 2, "piix4-usb-uhci"); smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, - isa_get_irq(NULL, 9), NULL, 0, NULL); + isa_get_irq(NULL, 9), NULL, 0, NULL, NULL); /* TODO: Populate SPD eeprom data. */ smbus_eeprom_init(smbus, 8, NULL, 0); pit = pit_init(isa_bus, 0x40, 0, NULL); diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c index 3908860..daefdfb 100644 --- a/hw/pci-host/piix.c +++ b/hw/pci-host/piix.c @@ -349,6 +349,14 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix3_devfn, return b; } +PCIBus *find_i440fx(void) +{ + PCIHostState *s = OBJECT_CHECK(PCIHostState, + object_resolve_path("/machine/i440fx", NULL), + TYPE_PCI_HOST_BRIDGE); + return s ? s->bus : NULL; +} + /* PIIX3 PCI to ISA bridge */ static void piix3_set_irq_pic(PIIX3State *piix3, int pic_irq) { diff --git a/include/hw/acpi/piix4.h b/include/hw/acpi/piix4.h new file mode 100644 index 0000000..2876428 --- /dev/null +++ b/include/hw/acpi/piix4.h @@ -0,0 +1,10 @@ +#ifndef HW_ACPI_PIIX4_H +#define HW_ACPI_PIIX4_H + +#include "qemu/typedefs.h" + +PIIX4PMState *piix4_pm_find(void); + +void piix4_pm_get_acpi_pm_info(PIIX4PMState *, AcpiPmInfo *); + +#endif diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 7c0bd50..76af5cd 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -186,6 +186,7 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix_devfn, MemoryRegion *pci_memory, MemoryRegion *ram_memory); +PCIBus *find_i440fx(void); /* piix4.c */ extern PCIDevice *piix4_dev; int piix4_init(PCIBus *bus, ISABus **isa_bus, int devfn); diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h index cb66e19..7d42693 100644 --- a/include/qemu/typedefs.h +++ b/include/qemu/typedefs.h @@ -65,6 +65,7 @@ typedef struct QEMUSGList QEMUSGList; typedef struct SHPCDevice SHPCDevice; typedef struct FWCfgState FWCfgState; typedef struct PcGuestInfo PcGuestInfo; +typedef struct PIIX4PMState PIIX4PMState; typedef struct AcpiPmInfo AcpiPmInfo; #endif /* QEMU_TYPEDEFS_H */