Commit 279840d5ea ("x86/boot: install trap handlers much earlier on
boot"), perhaps not really intentionally, removed this check. Add it
back,
- preventing it to trigger before any output is set up,
- accompanying it with a (weaker, due to its open coding of what
  get_stack_bottom() does) build time check.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
---
While not strictly needed for 4.8, I thought I'd still submit it as a
possible candidate.

--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -643,6 +643,11 @@ void load_system_tables(void)
                .limit = (IDT_ENTRIES * sizeof(idt_entry_t)) - 1,
        };
 
+       /* Bottom-of-stack must be 16-byte aligned! */
+       BUILD_BUG_ON((sizeof(struct cpu_info) -
+                     offsetof(struct cpu_info, guest_cpu_user_regs.es)) & 0xf);
+       BUG_ON(system_state != SYS_STATE_early_boot && (stack_bottom & 0xf));
+
        /* Main stack for interrupts/exceptions. */
        tss->rsp0 = stack_bottom;
        tss->bitmap = IOBMP_INVALID_OFFSET;



x86: re-add stack alignment check

Commit 279840d5ea ("x86/boot: install trap handlers much earlier on
boot"), perhaps not really intentionally, removed this check. Add it
back,
- preventing it to trigger before any output is set up,
- accompanying it with a (weaker, due to its open coding of what
  get_stack_bottom() does) build time check.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
---
While not strictly needed for 4.8, I thought I'd still submit it as a
possible candidate.

--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -643,6 +643,11 @@ void load_system_tables(void)
                .limit = (IDT_ENTRIES * sizeof(idt_entry_t)) - 1,
        };
 
+       /* Bottom-of-stack must be 16-byte aligned! */
+       BUILD_BUG_ON((sizeof(struct cpu_info) -
+                     offsetof(struct cpu_info, guest_cpu_user_regs.es)) & 0xf);
+       BUG_ON(system_state != SYS_STATE_early_boot && (stack_bottom & 0xf));
+
        /* Main stack for interrupts/exceptions. */
        tss->rsp0 = stack_bottom;
        tss->bitmap = IOBMP_INVALID_OFFSET;
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to