* [Qemu-devel] [PATCH v7 1/5] fw_cfg: expose control register size in fw_cfg.h
2016-02-10 20:41 [Qemu-devel] [PATCH v7 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
@ 2016-02-10 20:41 ` Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-10 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
leif.lindholm, luto, qemu-arm, kraxel, pbonzini, imammedo,
lersek, 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 79c5742..ef2a219 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -32,7 +32,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
@@ -882,6 +881,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] 8+ messages in thread
* [Qemu-devel] [PATCH v7 2/5] pc: fw_cfg: move ioport base constant to pc.h
2016-02-10 20:41 [Qemu-devel] [PATCH v7 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
@ 2016-02-10 20:41 ` Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-10 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
leif.lindholm, luto, qemu-arm, kraxel, pbonzini, imammedo,
lersek, 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 0aeefd2..56ec6cd 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -78,7 +78,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)
@@ -756,7 +755,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:
*
@@ -1258,7 +1257,7 @@ void 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 8b3546e..79ffe5b 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -266,6 +266,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] 8+ messages in thread
* [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt
2016-02-10 20:41 [Qemu-devel] [PATCH v7 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
@ 2016-02-10 20:41 ` Gabriel L. Somlo
2016-02-11 15:19 ` Igor Mammedov
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
4 siblings, 1 reply; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-10 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
leif.lindholm, luto, qemu-arm, kraxel, pbonzini, imammedo,
lersek, 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 4554eb8..4762fd2 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2190,6 +2190,35 @@ build_dsdt(GArray *table_data, GArray *linker,
aml_append(scope, aml_name_decl("_S5", pkg));
aml_append(dsdt, 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(pcms->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(dsdt, 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] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
@ 2016-02-11 15:19 ` Igor Mammedov
2016-02-11 16:19 ` Gabriel L. Somlo
0 siblings, 1 reply; 8+ messages in thread
From: Igor Mammedov @ 2016-02-11 15:19 UTC (permalink / raw)
To: Gabriel L. Somlo
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
qemu-devel, leif.lindholm, luto, qemu-arm, kraxel, pbonzini,
lersek, rth
On Wed, 10 Feb 2016 15:41:38 -0500
"Gabriel L. Somlo" <somlo@cmu.edu> wrote:
> 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.
subj and commit msg:
s/SSDT/DSDT/
>
> 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 4554eb8..4762fd2 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -2190,6 +2190,35 @@ build_dsdt(GArray *table_data, GArray *linker,
> aml_append(scope, aml_name_decl("_S5", pkg));
> aml_append(dsdt, scope);
>
> + /* create fw_cfg node, unconditionally */
Will that unconditionally make all Windows guests ask for driver for unknown device?
> + {
> + /* 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(pcms->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(dsdt, scope);
> + }
> +
> if (misc->applesmc_io_base) {
> scope = aml_scope("\\_SB.PCI0.ISA");
> dev = aml_device("SMC");
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt
2016-02-11 15:19 ` Igor Mammedov
@ 2016-02-11 16:19 ` Gabriel L. Somlo
0 siblings, 0 replies; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-11 16:19 UTC (permalink / raw)
To: Igor Mammedov
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
qemu-devel, leif.lindholm, luto, qemu-arm, kraxel, pbonzini,
lersek, rth
On Thu, Feb 11, 2016 at 04:19:59PM +0100, Igor Mammedov wrote:
> On Wed, 10 Feb 2016 15:41:38 -0500
> "Gabriel L. Somlo" <somlo@cmu.edu> wrote:
>
> > 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.
> subj and commit msg:
> s/SSDT/DSDT/
Thanks for catching that, got it lined up for v8 :)
> >
> > 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 4554eb8..4762fd2 100644
> > --- a/hw/i386/acpi-build.c
> > +++ b/hw/i386/acpi-build.c
> > @@ -2190,6 +2190,35 @@ build_dsdt(GArray *table_data, GArray *linker,
> > aml_append(scope, aml_name_decl("_S5", pkg));
> > aml_append(dsdt, scope);
> >
> > + /* create fw_cfg node, unconditionally */
> Will that unconditionally make all Windows guests ask for driver for unknown device?
That didn't happen in my tests. With _STA set to 0xB, we have the
bit representing "device shown in the UI" set to "off", and so Windows
(XP and Win7 in my tests) completely ignore it.
Originally I was asked (by Eduardo, IIRC) to make insertion of the
fw_cfg acpi node conditional on the machine version, but then later we
collectively agreed to no longer require that, so there wasn't an if (...)
condition to put in front of the { ... } block anymore. I replaced the
condition with the comment that says "add unconditionally"; I can change
the wording on that if it's confusing, but I'd like to keep the extra
curly braces to match the way all other surrounding ACPI nodes are added.
Thanks,
--Gabriel
> > + {
> > + /* 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(pcms->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(dsdt, scope);
> > + }
> > +
> > if (misc->applesmc_io_base) {
> > scope = aml_scope("\\_SB.PCI0.ISA");
> > dev = aml_device("SMC");
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v7 4/5] acpi: arm: add fw_cfg device node to dsdt
2016-02-10 20:41 [Qemu-devel] [PATCH v7 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
` (2 preceding siblings ...)
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
@ 2016-02-10 20:41 ` Gabriel L. Somlo
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
4 siblings, 0 replies; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-10 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
leif.lindholm, luto, qemu-arm, kraxel, pbonzini, imammedo,
lersek, 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 8cf9a21..7d7998b 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -81,6 +81,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;
@@ -548,6 +562,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] 8+ messages in thread
* [Qemu-devel] [PATCH v7 5/5] fw_cfg: document ACPI device node information
2016-02-10 20:41 [Qemu-devel] [PATCH v7 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
` (3 preceding siblings ...)
2016-02-10 20:41 ` [Qemu-devel] [PATCH v7 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
@ 2016-02-10 20:41 ` Gabriel L. Somlo
4 siblings, 0 replies; 8+ messages in thread
From: Gabriel L. Somlo @ 2016-02-10 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, ehabkost, mst, matt, stefanha, ard.biesheuvel,
leif.lindholm, luto, qemu-arm, kraxel, pbonzini, imammedo,
lersek, 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] 8+ messages in thread