diff mbox series

[v2] x86/trampoline: Collect other scattered trampoline symbols

Message ID 20241108145335.315884-1-andrew.cooper3@citrix.com (mailing list archive)
State New
Headers show
Series [v2] x86/trampoline: Collect other scattered trampoline symbols | expand

Commit Message

Andrew Cooper Nov. 8, 2024, 2:53 p.m. UTC
... and document them too.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Frediano Ziglio <frediano.ziglio@cloud.com>
CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>

v2:
 * Rebase

video.h, edd.h and e820.h also contain trampoline symbols, but they're pretty
well contained headers already.

kbd_shift_flags seems especially dubious.  It's a snapshot of the keyboard
state when Xen happened to pass through the trampoline, and surely cannot be
useful for dom0 in the slightest...
---
 xen/arch/x86/include/asm/processor.h  |  2 --
 xen/arch/x86/include/asm/setup.h      |  2 --
 xen/arch/x86/include/asm/trampoline.h | 15 +++++++++++++++
 3 files changed, 15 insertions(+), 4 deletions(-)


base-commit: 75035c386eeb8bd5dbed1831dbb96a35b31521f6

Comments

Frediano Ziglio Nov. 8, 2024, 3:38 p.m. UTC | #1
On Fri, Nov 8, 2024 at 2:53 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>
> ... and document them too.
>
> No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Frediano Ziglio <frediano.ziglio@cloud.com>
> CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>
> v2:
>  * Rebase
>
> video.h, edd.h and e820.h also contain trampoline symbols, but they're pretty
> well contained headers already.
>
> kbd_shift_flags seems especially dubious.  It's a snapshot of the keyboard
> state when Xen happened to pass through the trampoline, and surely cannot be
> useful for dom0 in the slightest...

I suppose an OT comment here.
It's just passed as a firmware information back to dom0.
It's used by the Linux kernel. See for instance
https://gfiber.googlesource.com/kernel/bruno/+/801f6772cecea6cfc7da61aa197716ab64db5f9e/arch/x86/xen/enlighten.c.

> ---
>  xen/arch/x86/include/asm/processor.h  |  2 --
>  xen/arch/x86/include/asm/setup.h      |  2 --
>  xen/arch/x86/include/asm/trampoline.h | 15 +++++++++++++++
>  3 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
> index 26e2fb13699a..877651212273 100644
> --- a/xen/arch/x86/include/asm/processor.h
> +++ b/xen/arch/x86/include/asm/processor.h
> @@ -96,8 +96,6 @@ extern void ctxt_switch_levelling(const struct vcpu *next);
>  extern void (*ctxt_switch_masking)(const struct vcpu *next);
>
>  extern bool opt_cpu_info;
> -extern u32 trampoline_efer;
> -extern u64 trampoline_misc_enable_off;
>
>  /* Maximum width of physical addresses supported by the hardware. */
>  extern unsigned int paddr_bits;
> diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
> index d7ed4f40024c..25c15ef9140d 100644
> --- a/xen/arch/x86/include/asm/setup.h
> +++ b/xen/arch/x86/include/asm/setup.h
> @@ -48,8 +48,6 @@ int remove_xen_ranges(struct rangeset *r);
>
>  int cf_check stub_selftest(void);
>
> -extern uint8_t kbd_shift_flags;
> -
>  #ifdef NDEBUG
>  # define highmem_start 0
>  #else
> diff --git a/xen/arch/x86/include/asm/trampoline.h b/xen/arch/x86/include/asm/trampoline.h
> index 57a1f85a539e..838c2f0b6fcd 100644
> --- a/xen/arch/x86/include/asm/trampoline.h
> +++ b/xen/arch/x86/include/asm/trampoline.h
> @@ -85,9 +85,24 @@ extern uint32_t trampoline_xen_phys_start;
>  /* A semaphore to indicate signs-of-life at the start of the AP boot path. */
>  extern uint8_t trampoline_cpu_started;
>
> +/*
> + * Extra MSR_EFER settings when activating Long Mode.  EFER_NXE is necessary
> + * for APs to boot if the BSP found and activated support.
> + */
> +extern uint32_t trampoline_efer;
> +
> +/*
> + * When nonzero, clear the specified bits in MSR_MISC_ENABLE.  This is
> + * necessary to clobber XD_DISABLE before trying to set MSR_EFER.NXE.
> + */
> +extern uint64_t trampoline_misc_enable_off;
> +
>  /* Quirks about video mode-setting on S3 resume. */
>  extern uint8_t video_flags;
>
> +/* BIOS Int 16h, Fn 02h.  The keyboard shift status. */
> +extern uint8_t kbd_shift_flags;
> +
>  /* Extended Display Identification Data, gathered from the BIOS. */
>  extern uint16_t boot_edid_caps;
>  extern uint8_t boot_edid_info[128];
>
> base-commit: 75035c386eeb8bd5dbed1831dbb96a35b31521f6

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Frediano
diff mbox series

Patch

diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
index 26e2fb13699a..877651212273 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -96,8 +96,6 @@  extern void ctxt_switch_levelling(const struct vcpu *next);
 extern void (*ctxt_switch_masking)(const struct vcpu *next);
 
 extern bool opt_cpu_info;
-extern u32 trampoline_efer;
-extern u64 trampoline_misc_enable_off;
 
 /* Maximum width of physical addresses supported by the hardware. */
 extern unsigned int paddr_bits;
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d7ed4f40024c..25c15ef9140d 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -48,8 +48,6 @@  int remove_xen_ranges(struct rangeset *r);
 
 int cf_check stub_selftest(void);
 
-extern uint8_t kbd_shift_flags;
-
 #ifdef NDEBUG
 # define highmem_start 0
 #else
diff --git a/xen/arch/x86/include/asm/trampoline.h b/xen/arch/x86/include/asm/trampoline.h
index 57a1f85a539e..838c2f0b6fcd 100644
--- a/xen/arch/x86/include/asm/trampoline.h
+++ b/xen/arch/x86/include/asm/trampoline.h
@@ -85,9 +85,24 @@  extern uint32_t trampoline_xen_phys_start;
 /* A semaphore to indicate signs-of-life at the start of the AP boot path. */
 extern uint8_t trampoline_cpu_started;
 
+/*
+ * Extra MSR_EFER settings when activating Long Mode.  EFER_NXE is necessary
+ * for APs to boot if the BSP found and activated support.
+ */
+extern uint32_t trampoline_efer;
+
+/*
+ * When nonzero, clear the specified bits in MSR_MISC_ENABLE.  This is
+ * necessary to clobber XD_DISABLE before trying to set MSR_EFER.NXE.
+ */
+extern uint64_t trampoline_misc_enable_off;
+
 /* Quirks about video mode-setting on S3 resume. */
 extern uint8_t video_flags;
 
+/* BIOS Int 16h, Fn 02h.  The keyboard shift status. */
+extern uint8_t kbd_shift_flags;
+
 /* Extended Display Identification Data, gathered from the BIOS. */
 extern uint16_t boot_edid_caps;
 extern uint8_t boot_edid_info[128];