[PATCH 1/2] x86: acpi: Fix calculation of DSDT length
Andy Shevchenko
andriy.shevchenko at linux.intel.com
Wed Sep 9 15:08:17 CEST 2020
On Wed, Sep 09, 2020 at 02:33:20PM +0200, Wolfgang Wallner wrote:
> 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()
Perhaps Fixes: tag?
In any case,
Reviewed-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> Signed-off-by: Wolfgang Wallner <wolfgang.wallner at br-automation.com>
>
> ---
>
> arch/x86/lib/acpi_table.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
> index 3a93fedfc3..6b827bfa3f 100644
> --- a/arch/x86/lib/acpi_table.c
> +++ b/arch/x86/lib/acpi_table.c
> @@ -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.
> --
> 2.28.0
>
>
--
With Best Regards,
Andy Shevchenko
More information about the U-Boot
mailing list