aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/acpi
diff options
context:
space:
mode:
authorTomasz Wroblewski <tomasz.wroblewski@citrix.com>2013-01-23 10:31:04 +0100
committerTomasz Wroblewski <tomasz.wroblewski@citrix.com>2013-01-23 10:31:04 +0100
commit529d5731e40e179e396397c633e10316a850044e (patch)
tree11e8507629429669ee00f8f4e93af056dfc15c50 /xen/include/acpi
parent00b70689c193b9cccb1fac3c3764bed77e152c4e (diff)
downloadxen-529d5731e40e179e396397c633e10316a850044e.tar.gz
xen-529d5731e40e179e396397c633e10316a850044e.tar.bz2
xen-529d5731e40e179e396397c633e10316a850044e.zip
fix acpi_dmar_zap/reinstate() (fixes S3 regression)
Fix S3 regression introduced by cs 23013:65d26504e843 (ACPI: large cleanup). The dmar virtual pointer returned from acpi_get_table cannot be safely stored away and used later, as the underlying acpi_os_map_memory / __acpi_map_table functions overwrite the mapping causing it to point to different tables than dmar (last fetched table is used). This subsequently causes acpi_dmar_reinstate() and acpi_dmar_zap() to write data to wrong table, causing its corruption and problems with consecutive s3 resumes. Added a new function to fetch ACPI table physical address, and establishing separate static mapping for dmar_table pointer instead of using acpi_get_table(). Signed-off-by: Tomasz Wroblewski <tomasz.wroblewski@citrix.com> Added call to acpi_tb_verify_table(). Fixed page count passed to map_pages_to_xen(). Cosmetic changes. Signed-off-by: Jan Beulich <jbeulich@suse.com> Committed-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/include/acpi')
-rw-r--r--xen/include/acpi/acpixf.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/xen/include/acpi/acpixf.h b/xen/include/acpi/acpixf.h
index cd2b4fbfc1..7ae1f07ca3 100644
--- a/xen/include/acpi/acpixf.h
+++ b/xen/include/acpi/acpixf.h
@@ -77,6 +77,9 @@ acpi_status
acpi_get_table(acpi_string signature,
acpi_native_uint instance, struct acpi_table_header **out_table);
+acpi_status
+acpi_get_table_phys(acpi_string signature, acpi_native_uint instance,
+ acpi_physical_address *addr, acpi_native_uint *len);
/*
* Namespace and name interfaces
*/