]> xenbits.xensource.com Git - xen.git/commitdiff
x86/ACPI: don't overwrite FADT
authorJan Beulich <jbeulich@suse.com>
Mon, 11 Jan 2021 13:55:52 +0000 (14:55 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 11 Jan 2021 13:55:52 +0000 (14:55 +0100)
When marking fields invalid for our own purposes, we should do so in our
local copy (so we will notice later on), not in the firmware provided
one (which another entity may want to look at again, e.g. after kexec).
Also mark the function parameter const to notice such issues right away.

Instead use the pointer at the firmware copy for specifying an adjacent
printk()'s arguments. If nothing else this at least reduces the number
of relocations the assembler hasto emit and the linker has to process.

Fixes: 62d1a69a4e9f ("ACPI: support v5 (reduced HW) sleep interface")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/acpi/boot.c

index 6345490f93c991a1c23de58d0a59939704ef7347..9e857c3ab1e8f5217808c5c31288431bb76a9cae 100644 (file)
@@ -349,7 +349,7 @@ static int __init acpi_invalidate_bgrt(struct acpi_table_header *table)
 
 /* Get pm1x_cnt and pm1x_evt information for ACPI sleep */
 static void __init
-acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt)
+acpi_fadt_parse_sleep_info(const struct acpi_table_fadt *fadt)
 {
        struct acpi_table_facs *facs = NULL;
        uint64_t facs_pa;
@@ -362,10 +362,10 @@ acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt)
                printk(KERN_INFO PREFIX
                       "v5 SLEEP INFO: control[%d:%"PRIx64"],"
                       " status[%d:%"PRIx64"]\n",
-                      acpi_sinfo.sleep_control.space_id,
-                      acpi_sinfo.sleep_control.address,
-                      acpi_sinfo.sleep_status.space_id,
-                      acpi_sinfo.sleep_status.address);
+                      fadt->sleep_control.space_id,
+                      fadt->sleep_control.address,
+                      fadt->sleep_status.space_id,
+                      fadt->sleep_status.address);
 
                if ((fadt->sleep_control.address &&
                     (fadt->sleep_control.bit_offset ||
@@ -384,8 +384,8 @@ acpi_fadt_parse_sleep_info(struct acpi_table_fadt *fadt)
                               fadt->sleep_status.bit_offset,
                               fadt->sleep_status.bit_width,
                               fadt->sleep_status.access_width);
-                       fadt->sleep_control.address = 0;
-                       fadt->sleep_status.address = 0;
+                       acpi_sinfo.sleep_control.address = 0;
+                       acpi_sinfo.sleep_status.address = 0;
                }
        }