[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 08/21] microvm/acpi: add minimal acpi support
From: |
Gerd Hoffmann |
Subject: |
Re: [PATCH v4 08/21] microvm/acpi: add minimal acpi support |
Date: |
Mon, 6 Jul 2020 16:11:06 +0200 |
On Sun, Jul 05, 2020 at 07:48:14AM -0400, Michael S. Tsirkin wrote:
> On Fri, Jul 03, 2020 at 09:25:10PM +0200, Gerd Hoffmann wrote:
> > On Fri, Jul 03, 2020 at 09:09:43AM -0400, Michael S. Tsirkin wrote:
> > > On Thu, Jul 02, 2020 at 10:48:46PM +0200, Gerd Hoffmann wrote:
> > > > + /* copy AML table into ACPI tables blob and patch header there */
> > > > + g_array_append_vals(table_data, dsdt->buf->data, dsdt->buf->len);
> > > > + build_header(linker, table_data,
> > > > + (void *)(table_data->data + table_data->len - dsdt->buf->len),
> > > > + "DSDT", dsdt->buf->len, 5, NULL, NULL);
> > >
> > > Why 5? Just curious ...
> >
> > IIRC because the hw reduced hardware profile needs acpi 5+ ...
> >
> > take care,
> > Gerd
>
> Well ACPI spec 5 says revision value is 2.
Yep. Confused that with FACS.rev
> Let's use standard practice in ACPI code, and add comments near each
> value documenting earliest spec revision where this appeared, chapter
> where they came from and some verbatim text that both explains and can
> be searched for in later spec revisions.
Incremental patch with the changes I have so far.
Anything important missing?
Is there a formal spec (other than the code for arm virt)
for the virtio-mmio acpi entries btw?
take care,
Gerd
>From bc82d52a013169b3738a06f33ac7d2289922a683 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 6 Jul 2020 16:04:36 +0200
Subject: [PATCH] [fixup] microvm acpi spec refs
---
hw/i386/acpi-microvm.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c
index 2f7e50718f70..51916cab42f7 100644
--- a/hw/i386/acpi-microvm.c
+++ b/hw/i386/acpi-microvm.c
@@ -131,7 +131,7 @@ build_dsdt_microvm(GArray *table_data, BIOSLinker *linker,
g_array_append_vals(table_data, dsdt->buf->data, dsdt->buf->len);
build_header(linker, table_data,
(void *)(table_data->data + table_data->len - dsdt->buf->len),
- "DSDT", dsdt->buf->len, 5, NULL, NULL);
+ "DSDT", dsdt->buf->len, 2, NULL, NULL);
free_aml_allocator();
}
@@ -144,25 +144,38 @@ static void acpi_build_microvm(AcpiBuildTables *tables,
GArray *tables_blob = tables->table_data;
unsigned dsdt, xsdt;
AcpiFadtData pmfadt = {
+ /*
+ * minimum version for ACPI_FADT_F_HW_REDUCED_ACPI,
+ * see acpi spec "4.1 Hardware-Reduced ACPI"
+ */
.rev = 5,
.minor_ver = 1,
+
.flags = ((1 << ACPI_FADT_F_HW_REDUCED_ACPI) |
(1 << ACPI_FADT_F_RESET_REG_SUP)),
+
+ /* Table 5-33 FADT Format -- SLEEP_CONTROL_REG */
.sleep_ctl = {
.space_id = AML_AS_SYSTEM_MEMORY,
.bit_width = 8,
.address = GED_MMIO_BASE_REGS + ACPI_GED_REG_SLEEP_CTL,
},
+
+ /* Table 5-33 FADT Format -- SLEEP_STATUS_REG */
.sleep_sts = {
.space_id = AML_AS_SYSTEM_MEMORY,
.bit_width = 8,
.address = GED_MMIO_BASE_REGS + ACPI_GED_REG_SLEEP_STS,
},
+
+ /* Table 5-33 FADT Format -- RESET_REG */
.reset_reg = {
.space_id = AML_AS_SYSTEM_MEMORY,
.bit_width = 8,
.address = GED_MMIO_BASE_REGS + ACPI_GED_REG_RESET,
},
+
+ /* Table 5-33 FADT Format -- RESET_VALUE */
.reset_val = ACPI_GED_RESET_VALUE,
};
@@ -191,7 +204,8 @@ static void acpi_build_microvm(AcpiBuildTables *tables,
/* RSDP is in FSEG memory, so allocate it separately */
{
AcpiRsdpData rsdp_data = {
- .revision = 2,
+ /* Table 5-27 RSDP Structure */
+ .revision = 2, /* rev2 needed for xsdt support */
.oem_id = ACPI_BUILD_APPNAME6,
.xsdt_tbl_offset = &xsdt,
.rsdt_tbl_offset = NULL,
--
2.18.4
- [PATCH v4 04/21] acpi: ged: add control regs, (continued)
- [PATCH v4 04/21] acpi: ged: add control regs, Gerd Hoffmann, 2020/07/02
- [PATCH v4 16/21] microvm: wire up hotplug, Gerd Hoffmann, 2020/07/02
- [PATCH v4 09/21] microvm/acpi: add acpi_dsdt_add_virtio() for x86, Gerd Hoffmann, 2020/07/02
- [PATCH v4 02/21] seabios: add microvm config, update build rules, Gerd Hoffmann, 2020/07/02
- [PATCH v4 03/21] seabios: add bios-microvm.bin binary, Gerd Hoffmann, 2020/07/02
- [PATCH v4 19/21] tests/acpi: allow override blkdev, Gerd Hoffmann, 2020/07/02
- [PATCH v4 08/21] microvm/acpi: add minimal acpi support, Gerd Hoffmann, 2020/07/02
[PATCH v4 20/21] tests/acpi: add microvm test, Gerd Hoffmann, 2020/07/02
[PATCH v4 07/21] microvm: make virtio irq base runtime configurable, Gerd Hoffmann, 2020/07/02
[PATCH v4 21/21] tests/acpi: update expected data files for microvm, Gerd Hoffmann, 2020/07/02
[PATCH v4 13/21] x86: constify x86_machine_is_*_enabled, Gerd Hoffmann, 2020/07/02
[PATCH v4 12/21] microvm/acpi: disable virtio-mmio cmdline hack, Gerd Hoffmann, 2020/07/02
[PATCH v4 15/21] x86: move cpu plug from pc to x86, Gerd Hoffmann, 2020/07/02
[PATCH v4 06/21] acpi: move acpi_dsdt_add_power_button() to ged, Gerd Hoffmann, 2020/07/02
[PATCH v4 10/21] microvm/acpi: use GSI 16-23 for virtio, Gerd Hoffmann, 2020/07/02
[PATCH v4 05/21] acpi: ged: add x86 device variant., Gerd Hoffmann, 2020/07/02
[PATCH v4 18/21] tests/acpi: allow microvm test data updates., Gerd Hoffmann, 2020/07/02