On Sat, 22 Mar 2025 at 01:21, Heinrich Schuchardt <heinrich.schucha...@canonical.com> wrote: > > Use acpi_update_checksum() for updating ACPI table header checksum. > > Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> > --- > lib/acpi/acpi_table.c | 18 +++++++----------- > lib/acpi/base.c | 6 ++---- > lib/acpi/csrt.c | 2 +- > lib/acpi/mcfg.c | 2 +- > lib/acpi/ssdt.c | 2 +- > 5 files changed, 12 insertions(+), 18 deletions(-) > > diff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c > index c0ed24984af..b5495d48a46 100644 > --- a/lib/acpi/acpi_table.c > +++ b/lib/acpi/acpi_table.c > @@ -195,9 +195,7 @@ int acpi_add_table(struct acpi_ctx *ctx, void *table) > (sizeof(u32) * (i + 1)); > > /* Re-calculate checksum */ > - rsdt->header.checksum = 0; > - rsdt->header.checksum = table_compute_checksum((u8 *)rsdt, > - > rsdt->header.length); > + acpi_update_checksum(&rsdt->header); > } > > if (ctx->xsdt) { > @@ -228,9 +226,7 @@ int acpi_add_table(struct acpi_ctx *ctx, void *table) > (sizeof(u64) * (i + 1)); > > /* Re-calculate checksum */ > - xsdt->header.checksum = 0; > - xsdt->header.checksum = table_compute_checksum((u8 *)xsdt, > - > xsdt->header.length); > + acpi_update_checksum(&xsdt->header); > } > > return 0; > @@ -268,7 +264,7 @@ int acpi_write_fadt(struct acpi_ctx *ctx, const struct > acpi_writer *entry) > > acpi_fill_fadt(fadt); > > - header->checksum = table_compute_checksum(fadt, header->length); > + acpi_update_checksum(header); > > return acpi_add_fadt(ctx, fadt); > } > @@ -303,7 +299,7 @@ int acpi_write_madt(struct acpi_ctx *ctx, const struct > acpi_writer *entry) > if (IS_ENABLED(CONFIG_ACPI_PARKING_PROTOCOL)) > acpi_write_park(madt); > > - header->checksum = table_compute_checksum((void *)madt, > header->length); > + acpi_update_checksum(header); > acpi_add_table(ctx, madt); > ctx->current = (void *)madt + madt->header.length; > > @@ -374,7 +370,7 @@ void acpi_create_dbg2(struct acpi_dbg2_header *dbg2, > /* Update structure lengths and checksum */ > device->length = current - (uintptr_t)device; > header->length = current - (uintptr_t)dbg2; > - header->checksum = table_compute_checksum(dbg2, header->length); > + acpi_update_checksum(header); > } > > int acpi_write_dbg2_pci_uart(struct acpi_ctx *ctx, struct udevice *dev, > @@ -549,7 +545,7 @@ static int acpi_write_spcr(struct acpi_ctx *ctx, const > struct acpi_writer *entry > spcr->baud_rate = 0; > > /* Fix checksum */ > - header->checksum = table_compute_checksum((void *)spcr, > header->length); > + acpi_update_checksum(header); > > acpi_add_table(ctx, spcr); > acpi_inc(ctx, spcr->header.length); > @@ -759,7 +755,7 @@ static int acpi_write_iort(struct acpi_ctx *ctx, const > struct acpi_writer *entry > > /* (Re)calculate length and checksum */ > iort->header.length = ctx->current - (void *)iort; > - iort->header.checksum = table_compute_checksum((void *)iort, > iort->header.length); > + acpi_update_checksum(&iort->header); > log_debug("IORT at %p, length %x\n", iort, iort->header.length); > > /* Drop the table if it is empty */ > diff --git a/lib/acpi/base.c b/lib/acpi/base.c > index 8b6af2bc43a..5c755b14c16 100644 > --- a/lib/acpi/base.c > +++ b/lib/acpi/base.c > @@ -50,8 +50,7 @@ static void acpi_write_rsdt(struct acpi_rsdt *rsdt) > /* Entries are filled in later, we come with an empty set */ > > /* Fix checksum */ > - header->checksum = table_compute_checksum(rsdt, > - sizeof(struct acpi_rsdt)); > + acpi_update_checksum(header); > } > > static void acpi_write_xsdt(struct acpi_xsdt *xsdt) > @@ -66,8 +65,7 @@ static void acpi_write_xsdt(struct acpi_xsdt *xsdt) > /* Entries are filled in later, we come with an empty set */ > > /* Fix checksum */ > - header->checksum = table_compute_checksum(xsdt, > - sizeof(struct acpi_xsdt)); > + acpi_update_checksum(header); > } > > static int acpi_write_base(struct acpi_ctx *ctx, > diff --git a/lib/acpi/csrt.c b/lib/acpi/csrt.c > index 00927e53406..b863c644c07 100644 > --- a/lib/acpi/csrt.c > +++ b/lib/acpi/csrt.c > @@ -40,7 +40,7 @@ int acpi_write_csrt(struct acpi_ctx *ctx, const struct > acpi_writer *entry) > > /* (Re)calculate length and checksum */ > header->length = (ulong)ctx->current - (ulong)csrt; > - header->checksum = table_compute_checksum(csrt, header->length); > + acpi_update_checksum(header); > > acpi_add_table(ctx, csrt); > > diff --git a/lib/acpi/mcfg.c b/lib/acpi/mcfg.c > index 8b8a5bfafae..e21fe7ce123 100644 > --- a/lib/acpi/mcfg.c > +++ b/lib/acpi/mcfg.c > @@ -57,7 +57,7 @@ int acpi_write_mcfg(struct acpi_ctx *ctx, const struct > acpi_writer *entry) > > /* (Re)calculate length and checksum */ > header->length = (ulong)ctx->current - (ulong)mcfg; > - header->checksum = table_compute_checksum(mcfg, header->length); > + acpi_update_checksum(header); > > acpi_add_table(ctx, mcfg); > > diff --git a/lib/acpi/ssdt.c b/lib/acpi/ssdt.c > index df1d739d117..41e2d3c2f6c 100644 > --- a/lib/acpi/ssdt.c > +++ b/lib/acpi/ssdt.c > @@ -35,7 +35,7 @@ int acpi_write_ssdt(struct acpi_ctx *ctx, const struct > acpi_writer *entry) > > /* (Re)calculate length and checksum */ > ssdt->length = ctx->current - (void *)ssdt; > - ssdt->checksum = table_compute_checksum((void *)ssdt, ssdt->length); > + acpi_update_checksum(ssdt); > log_debug("SSDT at %p, length %x\n", ssdt, ssdt->length); > > /* Drop the table if it is empty */ > -- > 2.48.1 >