[PATCH 3/5] x86/acpi: simplify updating header checksum
Matthias Brugger
mbrugger at suse.com
Tue Mar 25 15:58:44 CET 2025
On 22/03/2025 00:21, Heinrich Schuchardt wrote:
> Use acpi_update_checksum() for updating ACPI table header checksum.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
Reviewed-by: Matthias Brugger <mbrugger at suse.com>
> ---
> arch/x86/cpu/apollolake/hostbridge.c | 2 +-
> arch/x86/lib/acpi_nhlt.c | 2 +-
> arch/x86/lib/acpi_table.c | 11 ++++-------
> 3 files changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/arch/x86/cpu/apollolake/hostbridge.c b/arch/x86/cpu/apollolake/hostbridge.c
> index 039236df02d..284f16cfd91 100644
> --- a/arch/x86/cpu/apollolake/hostbridge.c
> +++ b/arch/x86/cpu/apollolake/hostbridge.c
> @@ -298,7 +298,7 @@ static int apl_acpi_hb_write_tables(const struct udevice *dev,
>
> /* (Re)calculate length and checksum */
> header->length = ctx->current - (void *)dmar;
> - header->checksum = table_compute_checksum((void *)dmar, header->length);
> + acpi_update_checksum(header);
>
> acpi_align(ctx);
> acpi_add_table(ctx, dmar);
> diff --git a/arch/x86/lib/acpi_nhlt.c b/arch/x86/lib/acpi_nhlt.c
> index 880ef31df7d..8aae5fa5af7 100644
> --- a/arch/x86/lib/acpi_nhlt.c
> +++ b/arch/x86/lib/acpi_nhlt.c
> @@ -414,7 +414,7 @@ int nhlt_serialise_oem_overrides(struct acpi_ctx *ctx, struct nhlt *nhlt,
> cur.start = (void *)header;
> nhlt_serialise_endpoints(nhlt, &cur);
>
> - header->checksum = table_compute_checksum(header, sz);
> + acpi_update_checksum(header);
> nhlt_free_resources(nhlt);
> assert(cur.buf - cur.start == sz);
>
> diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
> index 3186e48d63b..b13292c4150 100644
> --- a/arch/x86/lib/acpi_table.c
> +++ b/arch/x86/lib/acpi_table.c
> @@ -173,7 +173,7 @@ int acpi_write_tcpa(struct acpi_ctx *ctx, const struct acpi_writer *entry)
> /* (Re)calculate length and checksum */
> current = (u32)tcpa + sizeof(struct acpi_tcpa);
> header->length = current - (u32)tcpa;
> - header->checksum = table_compute_checksum(tcpa, header->length);
> + acpi_update_checksum(header);
>
> acpi_inc(ctx, tcpa->header.length);
> acpi_add_table(ctx, tcpa);
> @@ -242,7 +242,7 @@ static int acpi_write_tpm2(struct acpi_ctx *ctx,
> tpm2->lasa = nomap_to_sysmem(lasa);
>
> /* Calculate checksum. */
> - header->checksum = table_compute_checksum(tpm2, header->length);
> + acpi_update_checksum(header);
>
> acpi_inc(ctx, tpm2->header.length);
> acpi_add_table(ctx, tpm2);
> @@ -279,9 +279,7 @@ int acpi_write_gnvs(struct acpi_ctx *ctx, const struct acpi_writer *entry)
> * patched the GNVS address. Set the checksum to zero since it
> * is part of the region being checksummed.
> */
> - ctx->dsdt->checksum = 0;
> - ctx->dsdt->checksum = table_compute_checksum((void *)ctx->dsdt,
> - ctx->dsdt->length);
> + acpi_update_checksum(ctx->dsdt);
> }
>
> /* Fill in platform-specific global NVS variables */
> @@ -330,8 +328,7 @@ static int acpi_create_hpet(struct acpi_hpet *hpet)
> hpet->number = 0;
> hpet->min_tick = 0; /* HPET_MIN_TICKS */
>
> - header->checksum = table_compute_checksum(hpet,
> - sizeof(struct acpi_hpet));
> + acpi_update_checksum(header);
>
> return 0;
> }
More information about the U-Boot
mailing list