x86/ACPI: don't invalidate S5 data when S3 wakeup vector cannot be determined
authorJan Beulich <jbeulich@suse.com>
Tue, 5 Jan 2021 12:11:04 +0000 (13:11 +0100)
committerMaximilian Engelhardt <maxi@daemonizer.de>
Thu, 23 Mar 2023 19:40:49 +0000 (19:40 +0000)
We can be more tolerant as long as the data collected from FACS is only
needed to enter S3. A prior change already added suitable checking to
acpi_enter_sleep().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
(cherry picked from commit 16ca5b3f873f17f4fbdaecf46c133e1aa3d623b2)

Gbp-Pq: Name 0044-x86-ACPI-don-t-invalidate-S5-data-when-S3-wakeup-vec.patch

xen/arch/x86/acpi/boot.c

index 7994228d5094f86ef1302fa2ea88ea1f0def3a6d..9e857c3ab1e8f5217808c5c31288431bb76a9cae 100644 (file)
@@ -420,22 +420,22 @@ acpi_fadt_parse_sleep_info(const struct acpi_table_fadt *fadt)
                facs_pa = (uint64_t)fadt->facs;
        }
        if (!facs_pa)
-               goto bad;
+               return;
 
        facs = acpi_os_map_memory(facs_pa, sizeof(*facs));
        if (!facs)
-               goto bad;
+               return;
 
        if (strncmp(facs->signature, "FACS", 4)) {
                printk(KERN_ERR PREFIX "Invalid FACS signature %.4s\n",
                        facs->signature);
-               goto bad;
+               goto done;
        }
 
        if (facs->length < 24) {
                printk(KERN_ERR PREFIX "Invalid FACS table length: %#x",
                        facs->length);
-               goto bad;
+               goto done;
        }
 
        if (facs->length < 64)
@@ -452,6 +452,7 @@ acpi_fadt_parse_sleep_info(const struct acpi_table_fadt *fadt)
                offsetof(struct acpi_table_facs, firmware_waking_vector);
        acpi_sinfo.vector_width = 32;
 
+ done:
        acpi_os_unmap_memory(facs, sizeof(*facs));
 
        printk(KERN_INFO PREFIX