[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH FYI 09/13] hw/acpi: expose more parameters for aml_m
From: |
Laszlo Ersek |
Subject: |
[Qemu-devel] [PATCH FYI 09/13] hw/acpi: expose more parameters for aml_method() |
Date: |
Sun, 13 Sep 2015 14:43:43 +0200 |
ACPI 1.0b defines the SerializeFlag in MethodFlags. We have not exposed
this until now, but serializing methods that create named objects is
warmly recommended by (recent versions of) the ACPI spec, and recent iasl
actually warns about it. Therefore expose SerializeFlag in a new function.
The old aml_method() function is preserved for old callers' sake.
While at it, expose the SyncLevel bitfield of MethodFlags as well. Because
that was introduced in ACPI 2.0, add a separate function for it. This
allows us to provide one comprehensive DefMethod implementation.
Cc: Paolo Bonzini <address@hidden>
Cc: Gal Hammer <address@hidden>
Cc: Igor Mammedov <address@hidden>
Cc: "Michael S. Tsirkin" <address@hidden>
Signed-off-by: Laszlo Ersek <address@hidden>
---
include/hw/acpi/aml-build.h | 3 +++
hw/acpi/aml-build.c | 26 +++++++++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
index ee54242..f8f96ec 100644
--- a/include/hw/acpi/aml-build.h
+++ b/include/hw/acpi/aml-build.h
@@ -266,6 +266,9 @@ Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed,
Aml *aml_scope(const char *name_format, ...) GCC_FMT_ATTR(1, 2);
Aml *aml_device(const char *name_format, ...) GCC_FMT_ATTR(1, 2);
Aml *aml_method(const char *name, int arg_count);
+Aml *aml_method_serialized(const char *name, int arg_count, bool serialized);
+Aml *aml_method_flags(const char *name, int arg_count, bool serialized,
+ int sync_level);
Aml *aml_if(Aml *predicate);
Aml *aml_else(void);
Aml *aml_while(Aml *predicate);
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index 7d58483..a0f187e 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -698,9 +698,33 @@ Aml *aml_while(Aml *predicate)
/* ACPI 1.0b: 16.2.5.2 Named Objects Encoding: DefMethod */
Aml *aml_method(const char *name, int arg_count)
{
+ return aml_method_serialized(name, arg_count, false);
+}
+
+/* ACPI 1.0b: 16.2.5.2 Named Objects Encoding: DefMethod */
+Aml *aml_method_serialized(const char *name, int arg_count, bool serialized)
+{
+ return aml_method_flags(name, arg_count, serialized, 0);
+}
+
+/* ACPI 2.0: 17.2.4.2 Named Objects Encoding: DefMethod */
+Aml *aml_method_flags(const char *name, int arg_count, bool serialized,
+ int sync_level)
+{
Aml *var = aml_bundle(0x14 /* MethodOp */, AML_PACKAGE);
build_append_namestring(var->buf, "%s", name);
- build_append_byte(var->buf, arg_count); /* MethodFlags: ArgCount */
+
+ assert(arg_count >= 0);
+ assert(arg_count <= 7);
+ if (serialized) {
+ assert(sync_level >= 0x00);
+ assert(sync_level <= 0x0f);
+ } else {
+ assert(sync_level == 0);
+ }
+
+ build_append_byte(var->buf,
+ arg_count | (serialized << 3) | (sync_level << 4));
return var;
}
--
1.8.3.1
- [Qemu-devel] [PATCH FYI 00/13] ACPI stuff for the DataTableRegion()-based VMGenID, (continued)
- [Qemu-devel] [PATCH FYI 00/13] ACPI stuff for the DataTableRegion()-based VMGenID, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 01/13] docs: describe QEMU's VMGenID design, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 02/13] hw/acpi: add i386 callbacks for injecting GPE 04 when the VMGENID changes, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 03/13] hw/acpi: rename "AcpiBuildTables.table_data" to "main_blob", Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 04/13] hw/acpi: allow RSDT entries to be relocated to various fw_cfg blobs, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 05/13] hw/acpi: add more flexible acpi_add_table() and build_header() variants, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 06/13] hw/acpi: introduce ACPI_BUILD_QEMUPARAM_FILE, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 07/13] hw/acpi: introduce the AcpiQemuParamTable structure, Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 08/13] hw/i386: build UEFI ACPI Data Table for VMGENID in the dedicated blob (WIP), Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 10/13] hw/acpi: add AML generator function for DataTableRegion(), Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 09/13] hw/acpi: expose more parameters for aml_method(),
Laszlo Ersek <=
- [Qemu-devel] [PATCH FYI 11/13] hw/acpi: add AML generator function for AccessAs(), Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 12/13] hw/acpi: add AML generator function for CreateQWordField(), Laszlo Ersek, 2015/09/13
- [Qemu-devel] [PATCH FYI 13/13] hw/i386: generate AML for the VMGENID device (WIP), Laszlo Ersek, 2015/09/13