linux/include/acpi
Lv Zheng a26f0f39bc ACPICA: Utilities: split IO address types from data type models.
commit 2b8760100e upstream.

ACPICA commit aacf863cfffd46338e268b7415f7435cae93b451

It is reported that on a physically 64-bit addressed machine, 32-bit kernel
can trigger crashes in accessing the memory regions that are beyond the
32-bit boundary. The region field's start address should still be 32-bit
compliant, but after a calculation (adding some offsets), it may exceed the
32-bit boundary. This case is rare and buggy, but there are real BIOSes
leaked with such issues (see References below).

This patch fixes this gap by always defining IO addresses as 64-bit, and
allows OSPMs to optimize it for a real 32-bit machine to reduce the size of
the internal objects.

Internal acpi_physical_address usages in the structures that can be fixed
by this change include:
 1. struct acpi_object_region:
    acpi_physical_address		address;
 2. struct acpi_address_range:
    acpi_physical_address		start_address;
    acpi_physical_address		end_address;
 3. struct acpi_mem_space_context;
    acpi_physical_address		address;
 4. struct acpi_table_desc
    acpi_physical_address		address;
See known issues 1 for other usages.

Note that acpi_io_address which is used for ACPI_PROCESSOR may also suffer
from same problem, so this patch changes it accordingly.

For iasl, it will enforce acpi_physical_address as 32-bit to generate
32-bit OSPM compatible tables on 32-bit platforms, we need to define
ACPI_32BIT_PHYSICAL_ADDRESS for it in acenv.h.

Known issues:
 1. Cleanup of mapped virtual address
   In struct acpi_mem_space_context, acpi_physical_address is used as a virtual
   address:
    acpi_physical_address                   mapped_physical_address;
   It is better to introduce acpi_virtual_address or use acpi_size instead.
   This patch doesn't make such a change. Because this should be done along
   with a change to acpi_os_map_memory()/acpi_os_unmap_memory().
   There should be no functional problem to leave this unchanged except
   that only this structure is enlarged unexpectedly.

Link: aacf863c
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=87971
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=79501
Reported-and-tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reported-and-tested-by: Sial Nije <sialnije@gmail.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-05-06 21:59:18 +02:00
..
platform ACPICA: Utilities: split IO address types from data type models. 2015-05-06 21:59:18 +02:00
acbuffer.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acconfig.h ACPICA: Tests: Add CHECKSUM_ABORT protection for test utilities. 2013-11-21 13:47:03 +01:00
acexcep.h ACPICA: Cleanup exception codes. 2013-09-24 01:46:25 +02:00
acnames.h ACPICA: Predefine name macros: Sort list. 2013-10-30 12:24:21 +01:00
acoutput.h ACPICA: Remove unused macros, no functional change 2013-06-01 21:54:31 +02:00
acpi.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acpi_bus.h ACPI / hotplug: Generate online uevents for ACPI containers 2014-10-05 14:52:16 -07:00
acpi_drivers.h ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
acpi_io.h ACPI / i915: Fix incorrect <acpi/acpi.h> inclusions via <linux/acpi_io.h> 2013-12-07 01:24:33 +01:00
acpi_numa.h ACPI: Store SRAT table revision 2012-01-17 04:19:04 -05:00
acpiosxf.h ACPI / hotplug: Consolidate deferred execution of ACPI hotplug routines 2013-11-07 19:28:48 +01:00
acpixf.h ACPICA: Remove bool usage from ACPICA. 2014-01-27 23:59:08 +01:00
acrestyp.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
actbl.h ACPICA: Back port and refine validation of the XSDT root table. 2014-01-08 15:31:36 +01:00
actbl1.h ACPICA: Add helper macros to extract bus/segment numbers from HEST table. 2014-01-08 15:31:37 +01:00
actbl2.h ACPICA: Tables: Add full support for the DBG2 table. 2014-01-08 15:31:36 +01:00
actbl3.h ACPICA: Tables: Add full support for the PCCT table, update table definition. 2014-01-08 15:31:37 +01:00
actypes.h ACPICA: Utilities: split IO address types from data type models. 2015-05-06 21:59:18 +02:00
apei.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
button.h ACPI: make ACPI button funcs no-ops if not built in 2009-09-17 14:48:23 -07:00
ghes.h ACPI, CPER: Update cper info 2013-10-21 15:12:00 -07:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI / processor: Do not request ACPI cpufreq module directly 2013-10-30 00:00:30 +01:00
reboot.h Add the ability to reset the machine using the RESET_REG in ACPI's FADT table. 2008-07-16 23:27:08 +02:00
video.h Revert "ACPI / video / i915: No ACPI backlight if firmware expects Windows 8" 2013-07-26 14:59:20 +02:00