mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
x86: acpi: Fix calculation of DSDT length
Currently, the calculation for the length of the DSDT table includes any bytes that are added for alignment, but those bytes are not initialized. This is because the DSDT length is calculated after a call to acpi_inc_align(). Split this up into the following sequence: * acpi_inc() * Calculate DSDT length * acpi_align() Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
674c58c7b7
commit
3f6966ab2b
|
@ -427,7 +427,7 @@ ulong write_acpi_tables(ulong start_addr)
|
|||
(char *)&AmlCode + sizeof(struct acpi_table_header),
|
||||
dsdt->length - sizeof(struct acpi_table_header));
|
||||
|
||||
acpi_inc_align(ctx, dsdt->length - sizeof(struct acpi_table_header));
|
||||
acpi_inc(ctx, dsdt->length - sizeof(struct acpi_table_header));
|
||||
|
||||
/* Pack GNVS into the ACPI table area */
|
||||
for (i = 0; i < dsdt->length; i++) {
|
||||
|
@ -450,6 +450,8 @@ ulong write_acpi_tables(ulong start_addr)
|
|||
dsdt->checksum = 0;
|
||||
dsdt->checksum = table_compute_checksum((void *)dsdt, dsdt->length);
|
||||
|
||||
acpi_align(ctx);
|
||||
|
||||
/*
|
||||
* Fill in platform-specific global NVS variables. If this fails we
|
||||
* cannot return the error but this should only happen while debugging.
|
||||
|
|
Loading…
Reference in New Issue
Block a user