Patrick Georgi submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Furquan Shaikh: Looks good to me, approved
arch/x86/acpi_device: Allow empty child references

Currently if a child table is created and added to a property list
without adding any properties to that child it will generate an
empty package. For example:

struct acpi_dp *dsd = acpi_dp_new_table("_DSD");
struct acpi_dp *prop = acpi_dp_new_table("PROP");
acpi_dp_add_child(dsd, "dsd-prop", prop);
acpi_dp_write(dsd);

Results in an empty PROP package:

Name (_DSD, Package (2)
{
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b")
Package (1) {
Package (2) {
"dsd-prop",
"PROP"
}
}
}
Name (PROP, Package (0)
{
}

Empty packages don't seem to be explicitly forbidden, but they don't
serve a purpose with device properties. Instead, if packages without
any properties or children are skipped then this empty package is not
written and the added child property can refer to another property that
is already defined.

This allows creating property references to existing tables, which can
save duplication and namespace collision issues with nested properties.

BUG=b:146482091

Signed-off-by: Duncan Laurie <dlaurie@google.com>
Change-Id: I9fee2ceb8a4496b90c7210533eee8c2b186cdfff
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40880
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
---
M src/arch/x86/acpi_device.c
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/arch/x86/acpi_device.c b/src/arch/x86/acpi_device.c
index b4016ef..f3ee1e7 100644
--- a/src/arch/x86/acpi_device.c
+++ b/src/arch/x86/acpi_device.c
@@ -665,7 +665,7 @@
char *dp_count, *prop_count = NULL;
int child_count = 0;

- if (!table || table->type != ACPI_DP_TYPE_TABLE)
+ if (!table || table->type != ACPI_DP_TYPE_TABLE || !table->next)
return;

/* Name (name) */

To view, visit change 40880. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I9fee2ceb8a4496b90c7210533eee8c2b186cdfff
Gerrit-Change-Number: 40880
Gerrit-PatchSet: 3
Gerrit-Owner: Duncan Laurie <dlaurie@chromium.org>
Gerrit-Reviewer: Furquan Shaikh <furquan@google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-MessageType: merged