From: Jan Beulich Date: Tue, 24 Nov 2020 10:26:02 +0000 (+0100) Subject: x86/ACPI: fix mapping of FACS X-Git-Tag: archive/raspbian/4.14.3+32-g9de3671772-1_deb11u1+rpi1^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f4645681b76b718ef3e144e763b40f31c5e84363;p=xen.git 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 Acked-by: Roger Pau Monné (cherry picked from commit 8b6d55c1261820bb9db8d867ce9ee77397d05203) Gbp-Pq: Name 0041-x86-ACPI-fix-mapping-of-FACS.patch --- diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c index 38c2b76e00..3ad4105351 100644 --- a/xen/arch/x86/acpi/boot.c +++ b/xen/arch/x86/acpi/boot.c @@ -422,8 +422,7 @@ acpi_fadt_parse_sleep_info(const 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(const 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,