Re: [BUGFIX] ACPI, APEI, EINJ Param support is disabled by default

Bjorn Helgaas
2011-07-20T15:22:54Z

On Wed, Jul 20, 2011 at 2:09 AM, Huang Ying <ying.huang@intel.com> wrote:
> EINJ parameter support is only usable for some specific BIOS.
> Originally, it is expected to have no harm for BIOS does not support
> it.  But now, we found it will cause issue (memory overwriting) for
> some BIOS.  So param support is disabled by default and only enabled
> when newly added module parameter named "param_extension" is
> explicitly specified.

Adding parameters always makes things harder for users. Is there any
way this could be done with a whitelist or other automatic mechanism?

Per 6e320ec1d98 (which added EINJ parameter support), parameters are
an unpublished extension and are not part of the ACPI spec. So if we
pick up an MMIO address from a SET_ERROR_TYPE WRITE_REGISTER
instruction and blindly fill in a structure (undefined by the spec)
presumed to be at that address, it doesn't seem surprising that things
will blow up on BIOSes that don't expect that behavior. After all,
the spec says to write to a generic address structure (not an
einj_parameter structure) when we interpret the WRITE_REGISTER
instruction (not at the magic time between SET_ERROR_TYPE and
EXECUTE_OPERATION).

If EINJ parameter support is ever added to the ACPI spec, I would
expect a new EINJ flag bit or similar indication to be added at the
same time, so the OS would know when to use it.

Can you add a whitelist of BIOSes that do support this extension?
Maybe you could define a GUID that future platforms could supply so
you wouldn't have to update the whitelist for every new platform that
supports it?

Bjorn