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.shevche...@linux.intel.com>

> Signed-off-by: Wolfgang Wallner <wolfgang.wall...@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


Reply via email to