linux/include/acpi
Jessica Clarke 5d6e59665d ACPICA: Use original pointer for virtual origin tables
ACPICA commit dfa3feffa8f760b686207d09dc880cd2f26c72af

Currently the pointer to the table is cast to acpi_physical_address and
later cast back to a pointer to be dereferenced. Whether or not this is
supported is implementation-defined.

On CHERI, and thus Arm's experimental Morello prototype architecture,
pointers are represented as capabilities, which are unforgeable bounded
pointers, providing always-on fine-grained spatial memory safety. This
means that any pointer cast to a plain integer will lose all its
associated metadata, and when cast back to a pointer it will give a
null-derived pointer (one that has the same metadata as null but an
address equal to the integer) that will trap on any dereference. As a
result, this is an implementation where acpi_physical_address cannot be
used as a hack to store real pointers.

Thus, alter the lifecycle of table descriptors. Internal physical tables
keep the current behaviour where only the address is set on install, and
the pointer is set on acquire. Virtual tables (internal and external)
now store the pointer on initialisation and use that on acquire (which
will redundantly set *table_ptr to itself, but changing that is both
unnecessary and overly complicated as acpi_tb_acquire_table is called with
both a pointer to a variable and a pointer to Table->Pointer itself).

This requires propagating the (possible) table pointer everywhere in
order to make sure pointers make it through to acpi_tb_acquire_temp_table,
which requires a change to the acpi_install_table interface. Instead of
taking an ACPI_PHYSADDR_TYPE and a boolean indicating whether it's
physical or virtual, it is now split into acpi_install_table (that takes
an external virtual table pointer) and acpi_install_physical_table (that
takes an ACPI_PHYSADDR_TYPE for an internal physical table address).
This also has the benefit of providing a cleaner API.

Link: https://github.com/acpica/acpica/commit/dfa3feff
Signed-off-by: Bob Moore <robert.moore@intel.com>
[ rjw: Adjust the code in tables.c to match interface changes ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2021-12-27 17:01:28 +01:00
..
platform ACPI: Drop ACPI_USE_BUILTIN_STDARG ifdef from acgcc.h 2021-11-05 15:51:13 +01:00
acbuffer.h ACPICA: Add _PLD panel positions 2021-06-07 14:04:43 +02:00
acconfig.h ACPICA: Add support for PlatformRtMechanism OperationRegion handler 2021-06-07 14:04:43 +02:00
acexcep.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acnames.h ACPICA: Add method name "_DIS" For use with aslmethod.c 2021-08-16 16:47:02 +02:00
acoutput.h ACPICA: Macros should not use a trailing semicolon 2021-08-16 16:47:02 +02:00
acpi_bus.h ACPI: scan: Obtain device's desired enumeration power state 2021-11-03 19:03:55 +01:00
acpi_drivers.h Merge branches 'acpi-pci' and 'acpi-processor' 2021-04-26 17:03:05 +02:00
acpi_io.h Revert "ACPI: Add memory semantics to acpi_os_map_memory()" 2021-09-23 20:39:36 +02:00
acpi_lpat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_numa.h ACPI: NUMA: fix typo in a comment 2021-06-07 16:41:10 +02:00
acpi.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acpiosxf.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acpixf.h ACPICA: Use original pointer for virtual origin tables 2021-12-27 17:01:28 +01:00
acrestyp.h ACPICA: ACPI 6.4: add CSI2Bus resource template 2021-04-07 19:09:01 +02:00
actbl1.h ACPICA: Headers: Add new DBG2 Serial Port Subtypes 2021-08-16 16:47:02 +02:00
actbl2.h Merge branches 'acpi-x86', 'acpi-resources', 'acpi-scan' and 'acpi-misc' 2021-11-02 18:04:33 +01:00
actbl3.h ACPICA: ACPI 6.4 SRAT: add Generic Port Affinity type 2021-10-05 15:53:37 +02:00
actbl.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
actypes.h ACPICA: Use original data_table_region pointer for accesses 2021-12-27 17:01:28 +01:00
acuuid.h ACPICA: ACPI 6.4: add USB4 capabilities UUID 2021-04-07 19:09:00 +02:00
apei.h ACPI: APEI: mark apei_hest_parse() static 2021-10-27 20:34:47 +02:00
battery.h ACPI: battery: include linux/power_supply.h 2020-09-25 18:31:19 +02:00
button.h ACPI: button: move HIDs to acpi/button.h 2020-02-13 23:36:23 +01:00
cppc_acpi.h ACPI: CPPC: Introduce cppc_get_nominal_perf() 2021-09-07 21:15:16 +02:00
ghes.h ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records 2020-09-16 10:30:42 +01:00
hed.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
nfit.h acpi, nfit: Add function to look up nvdimm device and provide SMBIOS handle 2018-03-14 12:43:50 +01:00
pcc.h mailbox: pcc: Use PCC mailbox channel pointer instead of standard 2021-10-29 22:46:38 -05:00
pdc_intel.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
processor.h x86: ACPI: fix CPU hotplug deadlock 2020-04-04 16:28:24 +02:00
reboot.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
video.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00