|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/ACPI: fix mapping of FACS
commit 8b6d55c1261820bb9db8d867ce9ee77397d05203
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Nov 24 11:26:02 2020 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Nov 24 11:26:02 2020 +0100
x86/ACPI: fix mapping of FACS
acpi_fadt_parse_sleep_info() runs when the system is already in
SYS_STATE_boot. Hence its direct call to __acpi_map_table() won't work
anymore. This call should probably have been replaced long ago already,
as the layering violation hasn't been necessary for quite some time.
Fixes: 1c4aa69ca1e1 ("xen/acpi: Rework acpi_os_map_memory() and
acpi_os_unmap_memory()")
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
xen/arch/x86/acpi/boot.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c
index ed40ce56b4..cecb414681 100644
--- a/xen/arch/x86/acpi/boot.c
+++ b/xen/arch/x86/acpi/boot.c
@@ -422,8 +422,7 @@ acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt)
if (!facs_pa)
goto bad;
- facs = (struct acpi_table_facs *)
- __acpi_map_table(facs_pa, sizeof(struct acpi_table_facs));
+ facs = acpi_os_map_memory(facs_pa, sizeof(*facs));
if (!facs)
goto bad;
@@ -448,11 +447,16 @@ acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt)
offsetof(struct acpi_table_facs, firmware_waking_vector);
acpi_sinfo.vector_width = 32;
+ acpi_os_unmap_memory(facs, sizeof(*facs));
+
printk(KERN_INFO PREFIX
" wakeup_vec[%"PRIx64"], vec_size[%x]\n",
acpi_sinfo.wakeup_vector, acpi_sinfo.vector_width);
return;
-bad:
+
+ bad:
+ if (facs)
+ acpi_os_unmap_memory(facs, sizeof(*facs));
memset(&acpi_sinfo, 0,
offsetof(struct acpi_sleep_info, sleep_control));
memset(&acpi_sinfo.sleep_status + 1, 0,
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |