Re: [PATCH v3 1/3] ACPI : introduce macros for using the ACPI specification version

Rafael J. Wysocki
2015-07-03T23:24:11Z

On Friday, July 03, 2015 01:22:13 PM Al Stone wrote:
> On 07/02/2015 11:23 PM, Hanjun Guo wrote:
> > Hi Rafael,
> >
> > On 2015/7/3 8:21, Rafael J. Wysocki wrote:
> >> On Thursday, July 02, 2015 05:48:34 PM Al Stone wrote:
> >>> Add the __ACPI_FADT_SPEC_VERSION() helper macro to build a proper version
> >>> number from a major and minor revision number. Add also macros that use
> >>> the helper to construct the current version from the values in the FADT
> >>> (i.e., ACPI_FADT_SPEC_VERSION) and both the 5.1 and 6.0 versions.
> >>>
> >>> These macros are added in order to simplify retrieving and comparing ACPI
> >>> specification version numbers, since this is becoming a more frequent need.
> >>> In particular, there are some architectures that require at least a certain
> >>> version of the spec, and there are differences in some structure sizes that
> >>> have changed with recent versions but can only be tracked by spec version
> >>> number.
> >>>
> >>> Fixes: aeb823bbacc2 (ACPICA: ACPI 6.0: Add changes for FADT table.)
> >>> Signed-off-by: Al Stone <al.stone@linaro.org>
> >>> ---
> >>> include/linux/acpi.h | 10 ++++++++++
> >>> 1 file changed, 10 insertions(+)
> >>>
> >>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> >>> index c471dfc..0e525e8 100644
> >>> --- a/include/linux/acpi.h
> >>> +++ b/include/linux/acpi.h
> >>> @@ -48,6 +48,16 @@
> >>> #include <acpi/acpi_io.h>
> >>> #include <asm/acpi.h>
> >>>
> >>> +#define __ACPI_FADT_SPEC_VERSION(major, minor) \
> >>> + ((unsigned int)major << 8 | (unsigned int)minor)
> >>> +
> >>> +#define ACPI_FADT_SPEC_VERSION \
> >>> + __ACPI_FADT_SPEC_VERSION(acpi_gbl_FADT.header.revision, \
> >>> + acpi_gbl_FADT.minor_revision)
> >>> +
> >>> +#define ACPI_FADT_SPEC_VERSION_51 __ACPI_FADT_SPEC_VERSION(5, 1)
> >>> +#define ACPI_FADT_SPEC_VERSION_60 __ACPI_FADT_SPEC_VERSION(6, 0)
> >> I'd add underscores here, eg. ACPI_FADT_SPEC_VERSION_6_0
> >
> > Agreed.
>
> Will do. This was a flip of the coin, on my part.
>
> >> And what if there is 5.2 or even 5.3?
> >
> > Hmm, do you mean in the future or just now? for both two cases,
> > only 5.1 and 5.1 errata (still has the same ACPI version with 5.1)
> > will be available, then jump to 6.0 and going forward if new versions
> > in the future.
> >
> > I'm not sure if I understand your question correctly, if
> > not, please correct me :)
> >
> > Thanks
> > Hanjun
>
> I'm not sure I understand the question, either. Traditionally, the
> spec versioning has been exclusively linear -- i.e., now that 6.0
> has replaced 5.1, there will be no more 5.x. There may be errata
> published (e.g., there was a 5.1A, and a 6.0A is forthcoming) but
> the errata are not encoded in tables anywhere since they are meant
> only as corrections to the base version. This is unlikely to change,
> but not impossible, of course :).
>
> The only reason for putting in macros for 5.1 and 6.0 is that those
> are the versions that I'm concerned with for this particular fix and
> I know I will use them. If others are needed, I'd have those that
> need them add them.

It seems to me that you only need to compare acpi_gbl_FADT.header.revision
with 6 for this fix, though (if less than 6, use the old way, or use the
new way otherwise).

Isn't that the case?

Rafael