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>
This commit is contained in:
Nico Huber 2017-04-14 00:08:18 +02:00
parent eca093ecfe
commit 7d89ce3097
1 changed files with 5 additions and 1 deletions

View File

@ -862,6 +862,8 @@ void acpigen_write_resourcetemplate_header(void)
acpigen_write_len_f(); acpigen_write_len_f();
acpigen_emit_byte(WORD_PREFIX); acpigen_emit_byte(WORD_PREFIX);
len_stack[ltop++] = acpigen_get_current(); 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);
acpigen_emit_byte(0x00); acpigen_emit_byte(0x00);
} }
@ -879,7 +881,9 @@ void acpigen_write_resourcetemplate_footer(void)
acpigen_emit_byte(0x79); acpigen_emit_byte(0x79);
acpigen_emit_byte(0x00); 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 */ /* patch len word */
p[0] = len & 0xff; p[0] = len & 0xff;