linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm
@ 2016-01-28  3:00 Gabriel L. Somlo
  0 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:00 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

New since v5:

	- rebased on top of latest QEMU git master

Thanks,
  --Gabriel

>New since v4:
>
>	- rebased on top of Marc's DMA series
>	- drop machine compat dependency for insertion into x86/ssdt
>	  (patch 3/5), following agreement between Igor and Eduardo
>	- [mm]io register range now covers DMA register as well, if
>	  available.
>	- s/bios/firmware in doc file updates
>
>>New since v3:
>>
>>	- rebased to work on top of 87e896ab (introducing pc-*-25 classes),
>>	  inserting fw_cfg acpi node only for machines >= 2.5.
>>
>>	- reintroduce _STA with value 0x0B (bit 2 for u/i visibility turned
>>	  off to avoid Windows complaining -- thanks Igor for catching that!)
>>
>>If there's any other feedback besides questions regarding the
>>appropriateness of "QEMU0002" as the value of _HID, please don't hesitate!
>>
>>>New since v2:
>>>
>>>	- pc/i386 node in ssdt only on machine types *newer* than 2.4
>>>	  (as suggested by Eduardo)
>>>
>>>I appreciate any further comments and reviews. Hopefully we can make
>>>this palatable for upstream, modulo the lingering concerns about whether
>>>"QEMU0002" is ok to use as the value of _HID, which I'll hopefully get
>>>sorted out with the kernel crew...
>>>
>>>>New since v1:
>>>>
>>>>	- expose control register size (suggested by Marc Marí)
>>>>
>>>>	- leaving out _UID and _STA fields (thanks Shannon & Igor)
>>>>
>>>>	- using "QEMU0002" as the value of _HID (thanks Michael)
>>>>
>>>>	- added documentation blurb to docs/specs/fw_cfg.txt
>>>>	  (mainly to record usage of the "QEMU0002" string with fw_cfg).
>>>>
>>>>> This series adds a fw_cfg device node to the SSDT (on pc), or to the
>>>>> DSDT (on arm).
>>>>>
>>>>> 	- Patch 1/3 moves (and renames) the BIOS_CFG_IOPORT (0x510)
>>>>> 	  define from pc.c to pc.h, so that it could be used from
>>>>> 	  acpi-build.c in patch 2/3.
>>>>> 
>>>>> 	- Patch 2/3 adds a fw_cfg node to the pc SSDT.
>>>>> 
>>>>> 	- Patch 3/3 adds a fw_cfg node to the arm DSDT.
>>>>>
>>>>> I made up some names - "FWCF" for the node name, and "FWCF0001"
>>>>> for _HID; no idea whether that's appropriate, or how else I should
>>>>> figure out what to use instead...
>>>>>
>>>>> Also, using scope "\\_SB", based on where fw_cfg shows up in the
>>>>> output of "info qtree". Again, if that's wrong, please point me in
>>>>> the right direction.
>>>>>
>>>>> Re. 3/3 (also mentioned after the commit blurb in the patch itself),
>>>>> I noticed none of the other DSDT entries contain a _STA field, wondering
>>>>> why it would (not) make sense to include that, same as on the PC.

Gabriel L. Somlo (5):
  fw_cfg: expose control register size in fw_cfg.h
  pc: fw_cfg: move ioport base constant to pc.h
  acpi: pc: add fw_cfg device node to ssdt
  acpi: arm: add fw_cfg device node to dsdt
  fw_cfg: document ACPI device node information

 docs/specs/fw_cfg.txt     |  9 +++++++++
 hw/arm/virt-acpi-build.c  | 15 +++++++++++++++
 hw/i386/acpi-build.c      | 29 +++++++++++++++++++++++++++++
 hw/i386/pc.c              |  5 ++---
 hw/nvram/fw_cfg.c         |  4 +++-
 include/hw/i386/pc.h      |  2 ++
 include/hw/nvram/fw_cfg.h |  3 +++
 7 files changed, 63 insertions(+), 4 deletions(-)

-- 
2.4.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm
@ 2016-01-28  3:02 Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

New since v5:

	- rebased on top of latest QEMU git master

Thanks,
  --Gabriel

>New since v4:
>
>	- rebased on top of Marc's DMA series
>	- drop machine compat dependency for insertion into x86/ssdt
>	  (patch 3/5), following agreement between Igor and Eduardo
>	- [mm]io register range now covers DMA register as well, if
>	  available.
>	- s/bios/firmware in doc file updates
>
>>New since v3:
>>
>>	- rebased to work on top of 87e896ab (introducing pc-*-25 classes),
>>	  inserting fw_cfg acpi node only for machines >= 2.5.
>>
>>	- reintroduce _STA with value 0x0B (bit 2 for u/i visibility turned
>>	  off to avoid Windows complaining -- thanks Igor for catching that!)
>>
>>If there's any other feedback besides questions regarding the
>>appropriateness of "QEMU0002" as the value of _HID, please don't hesitate!
>>
>>>New since v2:
>>>
>>>	- pc/i386 node in ssdt only on machine types *newer* than 2.4
>>>	  (as suggested by Eduardo)
>>>
>>>I appreciate any further comments and reviews. Hopefully we can make
>>>this palatable for upstream, modulo the lingering concerns about whether
>>>"QEMU0002" is ok to use as the value of _HID, which I'll hopefully get
>>>sorted out with the kernel crew...
>>>
>>>>New since v1:
>>>>
>>>>	- expose control register size (suggested by Marc Marí)
>>>>
>>>>	- leaving out _UID and _STA fields (thanks Shannon & Igor)
>>>>
>>>>	- using "QEMU0002" as the value of _HID (thanks Michael)
>>>>
>>>>	- added documentation blurb to docs/specs/fw_cfg.txt
>>>>	  (mainly to record usage of the "QEMU0002" string with fw_cfg).
>>>>
>>>>> This series adds a fw_cfg device node to the SSDT (on pc), or to the
>>>>> DSDT (on arm).
>>>>>
>>>>> 	- Patch 1/3 moves (and renames) the BIOS_CFG_IOPORT (0x510)
>>>>> 	  define from pc.c to pc.h, so that it could be used from
>>>>> 	  acpi-build.c in patch 2/3.
>>>>> 
>>>>> 	- Patch 2/3 adds a fw_cfg node to the pc SSDT.
>>>>> 
>>>>> 	- Patch 3/3 adds a fw_cfg node to the arm DSDT.
>>>>>
>>>>> I made up some names - "FWCF" for the node name, and "FWCF0001"
>>>>> for _HID; no idea whether that's appropriate, or how else I should
>>>>> figure out what to use instead...
>>>>>
>>>>> Also, using scope "\\_SB", based on where fw_cfg shows up in the
>>>>> output of "info qtree". Again, if that's wrong, please point me in
>>>>> the right direction.
>>>>>
>>>>> Re. 3/3 (also mentioned after the commit blurb in the patch itself),
>>>>> I noticed none of the other DSDT entries contain a _STA field, wondering
>>>>> why it would (not) make sense to include that, same as on the PC.

Gabriel L. Somlo (5):
  fw_cfg: expose control register size in fw_cfg.h
  pc: fw_cfg: move ioport base constant to pc.h
  acpi: pc: add fw_cfg device node to ssdt
  acpi: arm: add fw_cfg device node to dsdt
  fw_cfg: document ACPI device node information

 docs/specs/fw_cfg.txt     |  9 +++++++++
 hw/arm/virt-acpi-build.c  | 15 +++++++++++++++
 hw/i386/acpi-build.c      | 29 +++++++++++++++++++++++++++++
 hw/i386/pc.c              |  5 ++---
 hw/nvram/fw_cfg.c         |  4 +++-
 include/hw/i386/pc.h      |  2 ++
 include/hw/nvram/fw_cfg.h |  3 +++
 7 files changed, 63 insertions(+), 4 deletions(-)

-- 
2.4.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v6 1/5] fw_cfg: expose control register size in fw_cfg.h
  2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
@ 2016-01-28  3:02 ` Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

Expose the size of the control register (FW_CFG_CTL_SIZE) in fw_cfg.h.
Add comment to fw_cfg_io_realize() pointing out that since the
8-bit data register is always subsumed by the 16-bit control
register in the port I/O case, we use the control register width
as the *total* width of the (classic, non-DMA) port I/O region reserved
for the device.

Cc: Marc Marí <markmb@redhat.com>
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
---
 hw/nvram/fw_cfg.c         | 4 +++-
 include/hw/nvram/fw_cfg.h | 3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index a1d650d..06a4ff0 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -31,7 +31,6 @@
 #include "qemu/error-report.h"
 #include "qemu/config-file.h"
 
-#define FW_CFG_CTL_SIZE 2
 #define FW_CFG_NAME "fw_cfg"
 #define FW_CFG_PATH "/machine/" FW_CFG_NAME
 
@@ -881,6 +880,9 @@ static void fw_cfg_io_realize(DeviceState *dev, Error **errp)
     FWCfgIoState *s = FW_CFG_IO(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
 
+    /* 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 */
     memory_region_init_io(&s->comb_iomem, OBJECT(s), &fw_cfg_comb_mem_ops,
                           FW_CFG(s), "fwcfg", FW_CFG_CTL_SIZE);
     sysbus_add_io(sbd, s->iobase, &s->comb_iomem);
diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h
index 664eaf6..2667ca9 100644
--- a/include/hw/nvram/fw_cfg.h
+++ b/include/hw/nvram/fw_cfg.h
@@ -46,6 +46,9 @@
 
 #define FW_CFG_INVALID          0xffff
 
+/* width in bytes of fw_cfg control register */
+#define FW_CFG_CTL_SIZE         0x02
+
 #define FW_CFG_MAX_FILE_PATH    56
 
 #ifndef NO_QEMU_PROTOS
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v6 2/5] pc: fw_cfg: move ioport base constant to pc.h
  2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
@ 2016-01-28  3:02 ` Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

Move BIOS_CFG_IOPORT define from pc.c to pc.h, and rename
it to FW_CFG_IO_BASE.

Cc: Marc Marí <markmb@redhat.com>
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
---
 hw/i386/pc.c         | 5 ++---
 include/hw/i386/pc.h | 2 ++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 78cf8fa..aa79dd1 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -77,7 +77,6 @@
 #define DPRINTF(fmt, ...)
 #endif
 
-#define BIOS_CFG_IOPORT 0x510
 #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0)
 #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1)
 #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
@@ -755,7 +754,7 @@ static FWCfgState *bochs_bios_init(AddressSpace *as)
     int i, j;
     unsigned int apic_id_limit = pc_apic_id_limit(max_cpus);
 
-    fw_cfg = fw_cfg_init_io_dma(BIOS_CFG_IOPORT, BIOS_CFG_IOPORT + 4, as);
+    fw_cfg = fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4, as);
 
     /* FW_CFG_MAX_CPUS is a bit confusing/problematic on x86:
      *
@@ -1269,7 +1268,7 @@ FWCfgState *xen_load_linux(PCMachineState *pcms,
 
     assert(MACHINE(pcms)->kernel_filename != NULL);
 
-    fw_cfg = fw_cfg_init_io(BIOS_CFG_IOPORT);
+    fw_cfg = fw_cfg_init_io(FW_CFG_IO_BASE);
     rom_set_fw(fw_cfg);
 
     load_linux(pcms, fw_cfg);
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 65e8f24..0a4e0da 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -272,6 +272,8 @@ void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name);
 
 ISADevice *pc_find_fdc0(void);
 
+#define FW_CFG_IO_BASE     0x510
+
 /* acpi_piix.c */
 
 I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v6 3/5] acpi: pc: add fw_cfg device node to ssdt
  2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
@ 2016-01-28  3:02 ` Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
  4 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

Add a fw_cfg device node to the ACPI SSDT. While the guest-side
firmware can't utilize this information (since it has to access
the hard-coded fw_cfg device to extract ACPI tables to begin with),
having fw_cfg listed in ACPI will help the guest kernel keep a more
accurate inventory of in-use IO port regions.

Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
---
 hw/i386/acpi-build.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 78758e2..8a9ae9d 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2100,6 +2100,35 @@ build_ssdt(GArray *table_data, GArray *linker,
     aml_append(scope, aml_name_decl("_S5", pkg));
     aml_append(ssdt, scope);
 
+    /* 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(guest_info->fw_cfg),
+                                                   "dma_enabled", NULL) ?
+                          ROUND_UP(FW_CFG_CTL_SIZE, 4) + sizeof(dma_addr_t) :
+                          FW_CFG_CTL_SIZE;
+
+        scope = aml_scope("\\_SB");
+        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);
+        aml_append(ssdt, scope);
+    }
+
     if (misc->applesmc_io_base) {
         scope = aml_scope("\\_SB.PCI0.ISA");
         dev = aml_device("SMC");
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v6 4/5] acpi: arm: add fw_cfg device node to dsdt
  2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
                   ` (2 preceding siblings ...)
  2016-01-28  3:02 ` [PATCH v6 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
@ 2016-01-28  3:02 ` Gabriel L. Somlo
  2016-01-28  3:02 ` [PATCH v6 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
  4 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

Add a fw_cfg device node to the ACPI DSDT. This is mostly
informational, as the authoritative fw_cfg MMIO region(s)
are listed in the Device Tree. However, since we are building
ACPI tables, we might as well be thorough while at it...

Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
---
 hw/arm/virt-acpi-build.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 87fbe7c..20bbdf2 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -95,6 +95,20 @@ static void acpi_dsdt_add_uart(Aml *scope, const MemMapEntry *uart_memmap,
     aml_append(scope, dev);
 }
 
+static void acpi_dsdt_add_fw_cfg(Aml *scope, const MemMapEntry *fw_cfg_memmap)
+{
+    Aml *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)));
+
+    Aml *crs = aml_resource_template();
+    aml_append(crs, aml_memory32_fixed(fw_cfg_memmap->base,
+                                       fw_cfg_memmap->size, AML_READ_WRITE));
+    aml_append(dev, aml_name_decl("_CRS", crs));
+    aml_append(scope, dev);
+}
+
 static void acpi_dsdt_add_flash(Aml *scope, const MemMapEntry *flash_memmap)
 {
     Aml *dev, *crs;
@@ -565,6 +579,7 @@ build_dsdt(GArray *table_data, GArray *linker, VirtGuestInfo *guest_info)
     acpi_dsdt_add_uart(scope, &memmap[VIRT_UART],
                        (irqmap[VIRT_UART] + ARM_SPI_BASE));
     acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
+    acpi_dsdt_add_fw_cfg(scope, &memmap[VIRT_FW_CFG]);
     acpi_dsdt_add_virtio(scope, &memmap[VIRT_MMIO],
                     (irqmap[VIRT_MMIO] + ARM_SPI_BASE), NUM_VIRTIO_TRANSPORTS);
     acpi_dsdt_add_pci(scope, memmap, (irqmap[VIRT_PCIE] + ARM_SPI_BASE),
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v6 5/5] fw_cfg: document ACPI device node information
  2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
                   ` (3 preceding siblings ...)
  2016-01-28  3:02 ` [PATCH v6 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
@ 2016-01-28  3:02 ` Gabriel L. Somlo
  4 siblings, 0 replies; 7+ messages in thread
From: Gabriel L. Somlo @ 2016-01-28  3:02 UTC (permalink / raw)
  To: gregkh, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	arnd, lersek, ralf, rmk+kernel, eric, hanjun.guo, zajec5,
	sudeep.holla, agross, linux-api, linux-kernel, devicetree
  Cc: peter.maydell, ehabkost, ard.biesheuvel, matt, stefanha, mst,
	qemu-devel, leif.lindholm, luto, kraxel, pbonzini, imammedo,
	revol, rth

Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
---
 docs/specs/fw_cfg.txt | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/docs/specs/fw_cfg.txt b/docs/specs/fw_cfg.txt
index 2099ad9..5414140 100644
--- a/docs/specs/fw_cfg.txt
+++ b/docs/specs/fw_cfg.txt
@@ -84,6 +84,15 @@ Selector Register address: Base + 8 (2 bytes)
 Data Register address:     Base + 0 (8 bytes)
 DMA Address address:       Base + 16 (8 bytes)
 
+== ACPI Interface ==
+
+The fw_cfg device is defined with ACPI ID "QEMU0002". Since we expect
+ACPI tables to be passed into the guest through the fw_cfg device itself,
+the guest-side firmware can not use ACPI to find fw_cfg. However, once the
+firmware is finished setting up ACPI tables and hands control over to the
+guest kernel, the latter can use the fw_cfg ACPI node for a more accurate
+inventory of in-use IOport or MMIO regions.
+
 == Firmware Configuration Items ==
 
 === Signature (Key 0x0000, FW_CFG_SIGNATURE) ===
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-01-28  3:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-28  3:02 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
2016-01-28  3:02 ` [PATCH v6 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
2016-01-28  3:02 ` [PATCH v6 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
2016-01-28  3:02 ` [PATCH v6 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
2016-01-28  3:02 ` [PATCH v6 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
2016-01-28  3:02 ` [PATCH v6 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
  -- strict thread matches above, loose matches on Subject: below --
2016-01-28  3:00 [PATCH v6 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).