All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"John Snow" <jsnow@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH v2 12/12] acpi: factor out fw_cfg_add_acpi_dsdt()
Date: Fri,  3 Apr 2020 10:05:02 +0200	[thread overview]
Message-ID: <20200403080502.8154-13-kraxel@redhat.com> (raw)
In-Reply-To: <20200403080502.8154-1-kraxel@redhat.com>

Add helper function to add fw_cfg device,
also move code to hw/i386/fw_cfg.c.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/fw_cfg.h     |  1 +
 hw/i386/acpi-build.c | 24 +-----------------------
 hw/i386/fw_cfg.c     | 28 ++++++++++++++++++++++++++++
 3 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/hw/i386/fw_cfg.h b/hw/i386/fw_cfg.h
index 9e742787792b..275f15c1c5e8 100644
--- a/hw/i386/fw_cfg.h
+++ b/hw/i386/fw_cfg.h
@@ -25,5 +25,6 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms,
                                uint16_t apic_id_limit);
 void fw_cfg_build_smbios(MachineState *ms, FWCfgState *fw_cfg);
 void fw_cfg_build_feature_control(MachineState *ms, FWCfgState *fw_cfg);
+void fw_cfg_add_acpi_dsdt(Aml *scope, FWCfgState *fw_cfg);
 
 #endif
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 23817d9005cc..55ece91655cf 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1874,30 +1874,8 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
 
     /* create fw_cfg node, unconditionally */
     {
-        /* when using port i/o, the 8-bit data register *always* overlaps
-         * with half of the 16-bit control register. Hence, the total size
-         * of the i/o region used is FW_CFG_CTL_SIZE; when using DMA, the
-         * DMA control register is located at FW_CFG_DMA_IO_BASE + 4 */
-        uint8_t io_size = object_property_get_bool(OBJECT(x86ms->fw_cfg),
-                                                   "dma_enabled", NULL) ?
-                          ROUND_UP(FW_CFG_CTL_SIZE, 4) + sizeof(dma_addr_t) :
-                          FW_CFG_CTL_SIZE;
-
         scope = aml_scope("\\_SB.PCI0");
-        dev = aml_device("FWCF");
-
-        aml_append(dev, aml_name_decl("_HID", aml_string("QEMU0002")));
-
-        /* device present, functioning, decoding, not shown in UI */
-        aml_append(dev, aml_name_decl("_STA", aml_int(0xB)));
-
-        crs = aml_resource_template();
-        aml_append(crs,
-            aml_io(AML_DECODE16, FW_CFG_IO_BASE, FW_CFG_IO_BASE, 0x01, io_size)
-        );
-        aml_append(dev, aml_name_decl("_CRS", crs));
-
-        aml_append(scope, dev);
+        fw_cfg_add_acpi_dsdt(scope, x86ms->fw_cfg);
         aml_append(dsdt, scope);
     }
 
diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c
index da60ada59462..c55abfb01abb 100644
--- a/hw/i386/fw_cfg.c
+++ b/hw/i386/fw_cfg.c
@@ -15,6 +15,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/numa.h"
 #include "hw/acpi/acpi.h"
+#include "hw/acpi/aml-build.h"
 #include "hw/firmware/smbios.h"
 #include "hw/i386/fw_cfg.h"
 #include "hw/timer/hpet.h"
@@ -179,3 +180,30 @@ void fw_cfg_build_feature_control(MachineState *ms, FWCfgState *fw_cfg)
     *val = cpu_to_le64(feature_control_bits | FEATURE_CONTROL_LOCKED);
     fw_cfg_add_file(fw_cfg, "etc/msr_feature_control", val, sizeof(*val));
 }
+
+void fw_cfg_add_acpi_dsdt(Aml *scope, FWCfgState *fw_cfg)
+{
+    /*
+     * when using port i/o, the 8-bit data register *always* overlaps
+     * with half of the 16-bit control register. Hence, the total size
+     * of the i/o region used is FW_CFG_CTL_SIZE; when using DMA, the
+     * DMA control register is located at FW_CFG_DMA_IO_BASE + 4
+     */
+    Object *obj = OBJECT(fw_cfg);
+    uint8_t io_size = object_property_get_bool(obj, "dma_enabled", NULL) ?
+        ROUND_UP(FW_CFG_CTL_SIZE, 4) + sizeof(dma_addr_t) :
+        FW_CFG_CTL_SIZE;
+    Aml *dev = aml_device("FWCF");
+    Aml *crs = aml_resource_template();
+
+    aml_append(dev, aml_name_decl("_HID", aml_string("QEMU0002")));
+
+    /* device present, functioning, decoding, not shown in UI */
+    aml_append(dev, aml_name_decl("_STA", aml_int(0xB)));
+
+    aml_append(crs,
+        aml_io(AML_DECODE16, FW_CFG_IO_BASE, FW_CFG_IO_BASE, 0x01, io_size));
+
+    aml_append(dev, aml_name_decl("_CRS", crs));
+    aml_append(scope, dev);
+}
-- 
2.18.2



  parent reply	other threads:[~2020-04-03  8:06 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03  8:04 [PATCH v2 00/12] acpi: i386 tweaks Gerd Hoffmann
2020-04-03  8:04 ` [PATCH v2 01/12] move 'typedef Aml' to qemu/types.h Gerd Hoffmann
2020-04-03  9:41   ` Igor Mammedov
2020-04-03  8:04 ` [PATCH v2 02/12] acpi: add aml builder stubs Gerd Hoffmann
2020-04-03  9:43   ` Igor Mammedov
2020-04-03  8:04 ` [PATCH v2 03/12] acpi: drop pointless _STA method Gerd Hoffmann
2020-04-03  9:45   ` Igor Mammedov
2020-04-03  8:04 ` [PATCH v2 04/12] acpi: serial: don't use " Gerd Hoffmann
2020-04-03 10:00   ` Igor Mammedov
2020-04-06 10:20     ` Gerd Hoffmann
2020-04-03  8:04 ` [PATCH v2 05/12] acpi: parallel: " Gerd Hoffmann
2020-04-03 10:01   ` Igor Mammedov
2020-04-03  8:04 ` [PATCH v2 06/12] acpi: add ISADeviceClass->build_aml() Gerd Hoffmann
2020-04-03 10:05   ` Igor Mammedov
2020-04-06 10:22   ` Igor Mammedov
2020-04-07 10:18     ` Gerd Hoffmann
2020-04-03  8:04 ` [PATCH v2 07/12] acpi: move aml builder code for rtc device Gerd Hoffmann
2020-04-03 10:09   ` Igor Mammedov
2020-04-06  8:25     ` Gerd Hoffmann
2020-04-06 12:17       ` Igor Mammedov
2020-04-07 10:26         ` Gerd Hoffmann
2020-04-08 11:27           ` Igor Mammedov
2020-04-08 12:59             ` Gerd Hoffmann
2020-04-08 20:28               ` Cameron Esfahani via
2020-04-03  8:04 ` [PATCH v2 08/12] acpi: move aml builder code for serial device Gerd Hoffmann
2020-04-03 10:10   ` Igor Mammedov
2020-04-03  8:04 ` [PATCH v2 09/12] acpi: move aml builder code for parallel device Gerd Hoffmann
2020-04-03 10:12   ` Igor Mammedov
2020-04-03 10:16     ` Igor Mammedov
2020-04-06 10:26       ` Gerd Hoffmann
2020-04-06 11:39         ` Paolo Bonzini
2020-04-06 12:14         ` Igor Mammedov
2020-04-03  8:05 ` [PATCH v2 10/12] acpi: move aml builder code for floppy device Gerd Hoffmann
2020-04-03  8:05 ` [PATCH v2 11/12] acpi: move aml builder code for i8042 (kbd+mouse) device Gerd Hoffmann
2020-04-03  8:05 ` Gerd Hoffmann [this message]
2020-04-03  8:50 ` [PATCH v2 00/12] acpi: i386 tweaks no-reply
2020-04-03  9:09 ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200403080502.8154-13-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.