Am 28. Mai 2022 09:19:26 UTC schrieb Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk>: >This allows the QOM types in hw/acpi/piix4.c to be used elsewhere by simply >including >hw/acpi/piix4.h. > >Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> >--- > hw/acpi/piix4.c | 43 +------------------- > hw/i386/acpi-build.c | 1 + > include/hw/acpi/piix4.h | 75 +++++++++++++++++++++++++++++++++++ > include/hw/southbridge/piix.h | 2 - > 4 files changed, 78 insertions(+), 43 deletions(-) > create mode 100644 include/hw/acpi/piix4.h > >diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c >index 2735ff375e..7ee65b1bff 100644 >--- a/hw/acpi/piix4.c >+++ b/hw/acpi/piix4.c >@@ -28,6 +28,8 @@ > #include "hw/pci/pci.h" > #include "hw/qdev-properties.h" > #include "hw/acpi/acpi.h" >+#include "hw/acpi/pcihp.h"
No need to be included twice. >+#include "hw/acpi/piix4.h" > #include "sysemu/runstate.h" > #include "sysemu/sysemu.h" > #include "sysemu/xen.h" >@@ -56,47 +58,6 @@ struct pci_status { > uint32_t down; > }; > >-struct PIIX4PMState { >- /*< private >*/ >- PCIDevice parent_obj; >- /*< public >*/ >- >- MemoryRegion io; >- uint32_t io_base; >- >- MemoryRegion io_gpe; >- ACPIREGS ar; >- >- APMState apm; >- >- PMSMBus smb; >- uint32_t smb_io_base; >- >- qemu_irq irq; >- qemu_irq smi_irq; >- bool smm_enabled; >- bool smm_compat; >- Notifier machine_ready; >- Notifier powerdown_notifier; >- >- AcpiPciHpState acpi_pci_hotplug; >- bool use_acpi_hotplug_bridge; >- bool use_acpi_root_pci_hotplug; >- bool not_migrate_acpi_index; >- >- uint8_t disable_s3; >- uint8_t disable_s4; >- uint8_t s4_val; >- >- bool cpu_hotplug_legacy; >- AcpiCpuHotplug gpe_cpu; >- CPUHotplugState cpuhp_state; >- >- MemHotplugState acpi_memory_hotplug; >-}; >- >-OBJECT_DECLARE_SIMPLE_TYPE(PIIX4PMState, PIIX4_PM) >- > static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, > PCIBus *bus, PIIX4PMState *s); > >diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c >index c125939ed6..89ac326d7f 100644 >--- a/hw/i386/acpi-build.c >+++ b/hw/i386/acpi-build.c >@@ -46,6 +46,7 @@ > #include "hw/acpi/tpm.h" > #include "hw/acpi/vmgenid.h" > #include "hw/acpi/erst.h" >+#include "hw/acpi/piix4.h" > #include "sysemu/tpm_backend.h" > #include "hw/rtc/mc146818rtc_regs.h" > #include "migration/vmstate.h" >diff --git a/include/hw/acpi/piix4.h b/include/hw/acpi/piix4.h >new file mode 100644 >index 0000000000..32686a75c5 >--- /dev/null >+++ b/include/hw/acpi/piix4.h >@@ -0,0 +1,75 @@ >+/* >+ * ACPI implementation >+ * >+ * Copyright (c) 2006 Fabrice Bellard >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Lesser General Public >+ * License version 2.1 as published by the Free Software Foundation. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Lesser General Public License for more details. >+ * >+ * You should have received a copy of the GNU Lesser General Public >+ * License along with this library; if not, see <http://www.gnu.org/licenses/> >+ * >+ * Contributions after 2012-01-13 are licensed under the terms of the >+ * GNU GPL, version 2 or (at your option) any later version. >+ */ >+ >+#ifndef HW_ACPI_PIIX4_H >+#define HW_ACPI_PIIX4_H >+ >+#include "hw/pci/pci.h" >+#include "hw/acpi/acpi.h" >+#include "hw/acpi/cpu_hotplug.h" >+#include "hw/acpi/memory_hotplug.h" >+#include "hw/acpi/pcihp.h" >+#include "hw/i2c/pm_smbus.h" >+#include "hw/isa/apm.h" These headers don't need to be included in the .c file any more. >+ >+#define TYPE_PIIX4_PM "PIIX4_PM" >+OBJECT_DECLARE_SIMPLE_TYPE(PIIX4PMState, PIIX4_PM) >+ >+struct PIIX4PMState { >+ /*< private >*/ >+ PCIDevice parent_obj; >+ /*< public >*/ >+ >+ MemoryRegion io; >+ uint32_t io_base; >+ >+ MemoryRegion io_gpe; >+ ACPIREGS ar; >+ >+ APMState apm; >+ >+ PMSMBus smb; >+ uint32_t smb_io_base; >+ >+ qemu_irq irq; >+ qemu_irq smi_irq; >+ bool smm_enabled; >+ bool smm_compat; >+ Notifier machine_ready; >+ Notifier powerdown_notifier; >+ >+ AcpiPciHpState acpi_pci_hotplug; >+ bool use_acpi_hotplug_bridge; >+ bool use_acpi_root_pci_hotplug; >+ bool not_migrate_acpi_index; >+ >+ uint8_t disable_s3; >+ uint8_t disable_s4; >+ uint8_t s4_val; >+ >+ bool cpu_hotplug_legacy; >+ AcpiCpuHotplug gpe_cpu; >+ CPUHotplugState cpuhp_state; >+ >+ MemHotplugState acpi_memory_hotplug; >+}; >+ >+#endif >diff --git a/include/hw/southbridge/piix.h b/include/hw/southbridge/piix.h >index f63f83e5c6..c5b842b45d 100644 >--- a/include/hw/southbridge/piix.h >+++ b/include/hw/southbridge/piix.h >@@ -15,8 +15,6 @@ > #include "hw/pci/pci.h" > #include "qom/object.h" > >-#define TYPE_PIIX4_PM "PIIX4_PM" >- > I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base, > qemu_irq sci_irq, qemu_irq smi_irq, > int smm_enabled, DeviceState **piix4_pm);