ACPI / tables: Convert initrd table override to table upgrade mechanism
authorLv Zheng <lv.zheng@intel.com>
Mon, 11 Apr 2016 02:13:33 +0000 (10:13 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 18 Apr 2016 21:59:09 +0000 (23:59 +0200)
commit5d8813271f8a7c86027afb2ef554f2a5a9ba7c15
tree75e3ea3cafe1b4be9ce00a7352ce75ca0c9fb7a4
parentaf06f8b7a102417e93dc57ee7affb9fedcf5d83f
ACPI / tables: Convert initrd table override to table upgrade mechanism

This patch converts the initrd table override mechanism to the table
upgrade mechanism by restricting its usage to the tables released with
compatibility and more recent revision.

This use case has been encouraged by the ACPI specification:

 1. OEMID:
    An OEM-supplied string that identifies the OEM.

 2. OEM Table ID:
    An OEM-supplied string that the OEM uses to identify the particular data
    table. This field is particularly useful when defining a definition
    block to distinguish definition block functions. OEM assigns each
    dissimilar table a new OEM Table Id.

 3. OEM Revision:
    An OEM-supplied revision number. Larger numbers are assumed to be newer
    revisions.

For OEMs, good practices will ensure consistency when assigning OEMID and
OEM Table ID fields in any table. The intent of these fields is to allow
for a binary control system that support services can use. Because many
support function can be automated, it is useful when a tool can
programatically determine which table release is a compatible and more
recent revision of a prior table on the same OEMID and OEM Table ID.

The facility can now be used by the vendors to upgrade wrong tables for bug
fixing purpose, thus lockdep disabling taint is not suitable for it and it
should be a default 'y' option to implement the spec encouraged use case.

Note that, by implementing table upgrade inside of ACPICA itself, it is
possible to remove acpi_table_initrd_override() and tables can be upgraded
by acpi_install_table() automatically. Though current ACPICA impelentation
hasn't implemented this, this patched changes the table flag setting timing
to allow this to be implemented in ACPICA without changing the code here.

Documentation of initrd override mechanism is upgraded accordingly.

Original-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/acpi/initrd_table_override.txt
drivers/acpi/Kconfig
drivers/acpi/tables.c