linux/include
Thomas Renninger df92e69599 ACPI: track opregion names to avoid driver resource conflicts.
Small ACPICA extension to be able to store the name of operation regions in osl.c later

In ACPI, AML can define accesses to IO ports and System Memory by Operation
Regions.  Those are not registered as done by PNPACPI using resource templates
(and _CRS/_SRS methods).

The IO ports and System Memory regions may get accessed by arbitrary AML code.
 When native drivers are accessing the same resources bad things can happen
(e.g.  a critical shutdown temperature of 3000 C every 2 months or so).

It is not really possible to register the operation regions via
request_resource, as they often overlap with pnp or other resources (e.g.
statically setup IO resources below 0x100).

This approach stores all Operation Region declarations (IO and System Memory
only) at ACPI table parse time.  It offers a similar functionality like
request_region and let drivers which are known to possibly use the same IO
ports and Memory which are also often used by ACPI (hwmon and i2c) check for
ACPI interference.

A boot parameter acpi_enforce_resources=strict/lax/no is provided, which
is default set to lax:
  - strict: let conflicting drivers fail to load with an error message
  - lax:    let conflicting driver work normal with a warning message
  - no:     no functional change at all
Depending on the feedback and the kind of interferences we see, this
should be set to strict at later time.

Goal of this patch set is:
  - Identify ACPI interferences in bug reports (very hard to reproduce
    and to identify)
  - Find BIOSes for that an ACPI driver should exist for specific HW
    instead of a native one.
  - stability in general

Provide acpi_check_{mem_}region.

Drivers can additionally check against possible ACPI interference by also
invoking this shortly before they call request_region.
If -EBUSY is returned, the driver must not load.
Use acpi_enforce_resources=strict/lax/no options to:
  - strict: let conflicting drivers fail to load with an error message
  - lax:    let conflicting driver work normal with a warning message
  - no:     no functional change at all

Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Len Brown <len.brown@intel.com>
2008-02-07 00:59:18 -05:00
..
acpi ACPI: track opregion names to avoid driver resource conflicts. 2008-02-07 00:59:18 -05:00
asm-alpha alpha: fix warning by fixing flush_tlb_kernel_range() 2008-02-05 09:44:22 -08:00
asm-arm Merge branch 'async-tx-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop into fix 2008-02-06 11:16:11 -08:00
asm-avr32 Fix __const_udelay declaration and definition mismatches 2008-02-06 10:41:06 -08:00
asm-blackfin remove mm_{ptov,vtop}() 2008-02-06 10:41:01 -08:00
asm-cris cris: remove unused __dummy, CONST_ADDR and ADDR from bitops.h 2008-02-05 09:44:24 -08:00
asm-frv timerfd: fix remaining architectures 2008-02-05 14:37:15 -08:00
asm-generic remove support for un-needed _extratext section 2008-02-06 10:41:01 -08:00
asm-h8300 remove mm_{ptov,vtop}() 2008-02-06 10:41:01 -08:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2008-02-05 10:24:52 -08:00
asm-m32r Fix __const_udelay declaration and definition mismatches 2008-02-06 10:41:06 -08:00
asm-m68k cleanup after APUS removal 2008-02-06 10:41:01 -08:00
asm-m68knommu remove mm_{ptov,vtop}() 2008-02-06 10:41:01 -08:00
asm-mips add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
asm-parisc add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
asm-powerpc ps3: use symbolic names for video modes 2008-02-06 10:41:17 -08:00
asm-ppc add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
asm-s390 taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
asm-sh Fix __const_udelay declaration and definition mismatches 2008-02-06 10:41:06 -08:00
asm-sparc [SPARC]: Add new timerfd syscall entries. 2008-02-06 04:12:23 -08:00
asm-sparc64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-02-06 10:46:58 -08:00
asm-um uml: LDT mutex conversion 2008-02-05 09:44:31 -08:00
asm-v850 remove mm_{ptov,vtop}() 2008-02-06 10:41:01 -08:00
asm-x86 Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 2008-02-06 13:54:09 -08:00
asm-xtensa add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
crypto
keys
linux ACPI: track opregion names to avoid driver resource conflicts. 2008-02-07 00:59:18 -05:00
math-emu
media include/media/: Spelling fixes 2008-02-03 17:19:47 +02:00
mtd
net 9p: add support for sticky bit 2008-02-06 19:25:06 -06:00
pcmcia pcmcia: replace kio_addr_t with unsigned int everywhere 2008-02-05 09:44:08 -08:00
rdma
rxrpc
scsi include/scsi/: Spelling fixes 2008-02-03 17:47:00 +02:00
sound [ALSA] version 1.0.16rc2 2008-01-31 17:40:18 +01:00
video atmel_lcdfb: backlight control 2008-02-06 10:41:16 -08:00
xen
Kbuild