Commit 7e90560c50f754d65884e251e94c1efa2a4b5784

Authored by Luca Tettamanti
Committed by Len Brown
1 parent 8e0ee43bc2

ACPI: acpi_enforce_resource=strict by default

Enforce strict resource checking - disallowing access by native
drivers to IO ports and memory regions claimed by ACPI firmware.

The patch is mainly aimed to block native hwmon drivers from touching
monitoring chips that ACPI thinks it own.

If this causes a regression, boot with "acpi_enforce_resources=lax"
which was the previous default.

http://bugzilla.kernel.org/show_bug.cgi?id=12376
http://bugzilla.kernel.org/show_bug.cgi?id=12541

Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
Acked-by: Pavel Machek <pavel@suse.cz>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Len Brown <len.brown@intel.com>

Showing 2 changed files with 19 additions and 3 deletions Side-by-side Diff

Documentation/kernel-parameters.txt
... ... @@ -258,6 +258,22 @@
258 258 to assume that this machine's pmtimer latches its value
259 259 and always returns good values.
260 260  
  261 + acpi_enforce_resources= [ACPI]
  262 + { strict | lax | no }
  263 + Check for resource conflicts between native drivers
  264 + and ACPI OperationRegions (SystemIO and SystemMemory
  265 + only). IO ports and memory declared in ACPI might be
  266 + used by the ACPI subsystem in arbitrary AML code and
  267 + can interfere with legacy drivers.
  268 + strict (default): access to resources claimed by ACPI
  269 + is denied; legacy drivers trying to access reserved
  270 + resources will fail to bind to device using them.
  271 + lax: access to resources claimed by ACPI is allowed;
  272 + legacy drivers trying to access reserved resources
  273 + will bind successfully but a warning message is logged.
  274 + no: ACPI OperationRegions are not marked as reserved,
  275 + no further checks are performed.
  276 +
261 277 agp= [AGP]
262 278 { off | try_unsupported }
263 279 off: disable AGP support
... ... @@ -1063,9 +1063,9 @@
1063 1063 * in arbitrary AML code and can interfere with legacy drivers.
1064 1064 * acpi_enforce_resources= can be set to:
1065 1065 *
1066   - * - strict (2)
  1066 + * - strict (default) (2)
1067 1067 * -> further driver trying to access the resources will not load
1068   - * - lax (default) (1)
  1068 + * - lax (1)
1069 1069 * -> further driver trying to access the resources will load, but you
1070 1070 * get a system message that something might go wrong...
1071 1071 *
... ... @@ -1077,7 +1077,7 @@
1077 1077 #define ENFORCE_RESOURCES_LAX 1
1078 1078 #define ENFORCE_RESOURCES_NO 0
1079 1079  
1080   -static unsigned int acpi_enforce_resources = ENFORCE_RESOURCES_LAX;
  1080 +static unsigned int acpi_enforce_resources = ENFORCE_RESOURCES_STRICT;
1081 1081  
1082 1082 static int __init acpi_enforce_resources_setup(char *str)
1083 1083 {