x86/acpigen: Fix BufferSize of ResourceTemplate
Don't start counting the buffer size amidst the BufferSize field
itself. This should help with a regression introduced in Linux
with [1] which checks the BufferSize field.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=57707a9a778
Change-Id: I7349c8e281c41384491d730dfeac3336f29992f7
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/19284
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
diff --git a/src/arch/x86/acpigen.c b/src/arch/x86/acpigen.c
index d3aaa3d..59bfee3 100644
--- a/src/arch/x86/acpigen.c
+++ b/src/arch/x86/acpigen.c
@@ -862,6 +862,8 @@
acpigen_write_len_f();
acpigen_emit_byte(WORD_PREFIX);
len_stack[ltop++] = acpigen_get_current();
+ /* Add 2 dummy bytes for the ACPI word (keep aligned with
+ the calclulation in acpigen_write_resourcetemplate() below). */
acpigen_emit_byte(0x00);
acpigen_emit_byte(0x00);
}
@@ -879,7 +881,9 @@
acpigen_emit_byte(0x79);
acpigen_emit_byte(0x00);
- len = gencurrent - p;
+ /* Start counting past the 2-bytes length added in
+ acpigen_write_resourcetemplate() above. */
+ len = acpigen_get_current() - (p + 2);
/* patch len word */
p[0] = len & 0xff;