[PATCH v2 17/39] acpi: Add a central location for table version numbers

Simon Glass sjg at chromium.org
Thu Mar 12 04:22:54 CET 2020


Hi Wolfgang,

On Tue, 10 Mar 2020 at 03:26, Wolfgang Wallner <
wolfgang.wallner at br-automation.com> wrote:
>
> Hi Simon,
>
> -----"Simon Glass" <sjg at chromium.org> schrieb: -----
> >
> > Each ACPI table has its own version number. Add the version numbers in a
> > single function so we can keep them consistent and easily see what
> > versions are supported.
> >
> > Start a new acpi_table file in a generic directory to house this
function.
> > We can move things over to this file from x86 as needed.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > Changes in v2:
> > - Move the sandbox acpi_table.h header file to an earlier patch
> > - Use #defines for MADT and MCFG version numbers
> >
> >  include/acpi_table.h  | 61 +++++++++++++++++++++++++++++++++++++++++++
> >  lib/Makefile          |  1 +
> >  lib/acpi/Makefile     |  4 +++
> >  lib/acpi/acpi_table.c | 60 ++++++++++++++++++++++++++++++++++++++++++
> >  test/dm/acpi.c        | 14 ++++++++++
> >  5 files changed, 140 insertions(+)
> >  create mode 100644 lib/acpi/Makefile
> >  create mode 100644 lib/acpi/acpi_table.c
> >
> > diff --git a/include/acpi_table.h b/include/acpi_table.h
> > index dd74895813..ccf6fa04db 100644
> > --- a/include/acpi_table.h
> > +++ b/include/acpi_table.h
> > @@ -202,6 +202,26 @@ struct __packed acpi_fadt {
> >       struct acpi_gen_regaddr x_gpe1_blk;
> >  };
> >
> > +/* FADT TABLE Revision values */
> > +#define ACPI_FADT_REV_ACPI_1_0               1
> > +#define ACPI_FADT_REV_ACPI_2_0               3
> > +#define ACPI_FADT_REV_ACPI_3_0               4
> > +#define ACPI_FADT_REV_ACPI_4_0               4
> > +#define ACPI_FADT_REV_ACPI_5_0               5
> > +#define ACPI_FADT_REV_ACPI_6_0               6
> > +
> > +/* MADT TABLE Revision values */
> > +#define ACPI_MADT_REV_ACPI_3_0               2
> > +#define ACPI_MADT_REV_ACPI_4_0               3
> > +#define ACPI_MADT_REV_ACPI_5_0               3
> > +#define ACPI_MADT_REV_ACPI_6_0               5
> > +
> > +#define ACPI_MCFG_REV_ACPI_3_0               1
> > +
> > +/* IVRS Revision Field */
> > +#define IVRS_FORMAT_FIXED    0x01    /* Type 10h & 11h only */
> > +#define IVRS_FORMAT_MIXED    0x02    /* Type 10h, 11h, & 40h */
> > +
> >  /* FACS flags */
> >  #define ACPI_FACS_S4BIOS_F           BIT(0)
> >  #define ACPI_FACS_64BIT_WAKE_F               BIT(1)
> > @@ -391,6 +411,47 @@ struct __packed acpi_spcr {
> >       u32 reserved2;
> >  };
> >
> > +/* Tables defined by ACPI and generated by U-Boot */
> > +enum acpi_tables {
> > +     ACPITAB_BERT,
> > +     ACPITAB_DBG2,
> > +     ACPITAB_DMAR,
> > +     ACPITAB_DSDT,
> > +     ACPITAB_FACS,
> > +     ACPITAB_FADT,
> > +     ACPITAB_HEST,
> > +     ACPITAB_HPET,
> > +     ACPITAB_IVRS,
> > +     ACPITAB_MADT,
> > +     ACPITAB_MCFG,
> > +     ACPITAB_RSDP,
> > +     ACPITAB_RSDT,
> > +     ACPITAB_SLIT,
> > +     ACPITAB_SRAT,
> > +     ACPITAB_SSDT,
> > +     ACPITAB_TCPA,
> > +     ACPITAB_TPM2,
> > +     ACPITAB_XSDT,
> > +     ACPITAB_ECDT,
> > +
> > +     /* Additional proprietary tables */
> > +     ACPITAB_VFCT,
> > +     ACPITAB_NHLT,
> > +     ACPITAB_SPMI,
> > +
> > +     ACPITAB_COUNT,
> > +};
> > +
> > +/**
> > + * acpi_get_table_revision() - Get the revision number generated for a
table
> > + *
> > + * This keeps the version-number information in one place
> > + *
> > + * @table: ACPI table to check
> > + * @return version number that U-Boot generates
> > + */
> > +int acpi_get_table_revision(enum acpi_tables table);
> > +
> >  #endif /* !__ACPI__*/
> >
> >  #include <asm/acpi_table.h>
> > diff --git a/lib/Makefile b/lib/Makefile
> > index 15259d0473..9df834c2fd 100644
> > --- a/lib/Makefile
> > +++ b/lib/Makefile
> > @@ -5,6 +5,7 @@
> >
> >  ifndef CONFIG_SPL_BUILD
> >
> > +obj-$(CONFIG_$(SPL_TPL_)ACPIGEN) += acpi/
>
> Is $(SPL_TPL_) needed here?
> I don't see a CONFIG_SPL_ACPIGEN, and this section of the file is also
covered
> by "ifndef CONFIG_SPL_BUILD".
>
> In any case, would it make sense to generate ACPI-related code for SPL
and TPL?
> As U-Boot does not use ACPI, but only provides it to the kernel, I would
> assume we only need to handle ACPI tables in the last U-Boot stage before
> booting a kernel.

That's right. The point of this is to only include it in U-Boot proper.
Actually I should use $SPL here so will fix that.

Regards,
Simon


More information about the U-Boot mailing list