[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 33/35] acpi: build_facs: use build_append_int_noprefix() API t
From: |
Igor Mammedov |
Subject: |
[PATCH v4 33/35] acpi: build_facs: use build_append_int_noprefix() API to compose table |
Date: |
Fri, 24 Sep 2021 08:28:00 -0400 |
Drop usage of packed structures and explicit endian
conversions when building table and use endian agnostic
build_append_int_noprefix() API to build it.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
---
CC: marcel.apfelbaum@gmail.com
---
include/hw/acpi/acpi-defs.h | 14 --------------
hw/i386/acpi-build.c | 18 ++++++++++++++----
2 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
index 0b375e7589..1a0774edd6 100644
--- a/include/hw/acpi/acpi-defs.h
+++ b/include/hw/acpi/acpi-defs.h
@@ -117,18 +117,4 @@ typedef struct AcpiFadtData {
#define ACPI_FADT_ARM_PSCI_COMPLIANT (1 << 0)
#define ACPI_FADT_ARM_PSCI_USE_HVC (1 << 1)
-/*
- * ACPI 1.0 Firmware ACPI Control Structure (FACS)
- */
-struct AcpiFacsDescriptorRev1 {
- uint32_t signature; /* ACPI Signature */
- uint32_t length; /* Length of structure, in bytes */
- uint32_t hardware_signature; /* Hardware configuration signature */
- uint32_t firmware_waking_vector; /* ACPI OS waking vector */
- uint32_t global_lock; /* Global Lock */
- uint32_t flags;
- uint8_t resverved3 [40]; /* Reserved - must be zero */
-} QEMU_PACKED;
-typedef struct AcpiFacsDescriptorRev1 AcpiFacsDescriptorRev1;
-
#endif
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index fde48a7377..d1c28440f4 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -345,13 +345,23 @@ static void acpi_align_size(GArray *blob, unsigned align)
g_array_set_size(blob, ROUND_UP(acpi_data_len(blob), align));
}
-/* FACS */
+/*
+ * ACPI spec 1.0b,
+ * 5.2.6 Firmware ACPI Control Structure
+ */
static void
build_facs(GArray *table_data)
{
- AcpiFacsDescriptorRev1 *facs = acpi_data_push(table_data, sizeof *facs);
- memcpy(&facs->signature, "FACS", 4);
- facs->length = cpu_to_le32(sizeof(*facs));
+ const char *sig = "FACS";
+ const uint8_t reserved[40] = {};
+
+ g_array_append_vals(table_data, sig, 4); /* Signature */
+ build_append_int_noprefix(table_data, 64, 4); /* Length */
+ build_append_int_noprefix(table_data, 0, 4); /* Hardware Signature */
+ build_append_int_noprefix(table_data, 0, 4); /* Firmware Waking Vector */
+ build_append_int_noprefix(table_data, 0, 4); /* Global Lock */
+ build_append_int_noprefix(table_data, 0, 4); /* Flags */
+ g_array_append_vals(table_data, reserved, 40); /* Reserved */
}
static void build_append_pcihp_notify_entry(Aml *method, int slot)
--
2.27.0
- [PATCH v4 25/35] acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table, (continued)
- [PATCH v4 25/35] acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table, Igor Mammedov, 2021/09/24
- [PATCH v4 26/35] acpi: build_dsdt_microvm: use acpi_table_begin()/acpi_table_end() instead of build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 27/35] acpi: arm: virt: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 28/35] acpi: arm: virt: build_iort: use acpi_table_begin()/acpi_table_end() instead of build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 29/35] acpi: arm/virt: convert build_iort() to endian agnostic build_append_FOO() API, Igor Mammedov, 2021/09/24
- [PATCH v4 30/35] acpi: arm/virt: build_spcr: fix invalid cast, Igor Mammedov, 2021/09/24
- [PATCH v4 34/35] acpi: remove no longer used build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 35/35] acpi: AcpiGenericAddress no longer used to map/access fields of MMIO, drop packed attribute, Igor Mammedov, 2021/09/24
- [PATCH v4 31/35] acpi: arm/virt: build_spcr: use acpi_table_begin()/acpi_table_end() instead of build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 32/35] acpi: arm/virt: build_gtdt: use acpi_table_begin()/acpi_table_end() instead of build_header(), Igor Mammedov, 2021/09/24
- [PATCH v4 33/35] acpi: build_facs: use build_append_int_noprefix() API to compose table,
Igor Mammedov <=