]> Git Repo - linux.git/commitdiff
Merge tag 'x86-boot-2025-01-21' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <[email protected]>
Fri, 24 Jan 2025 13:54:26 +0000 (05:54 -0800)
committerLinus Torvalds <[email protected]>
Fri, 24 Jan 2025 13:54:26 +0000 (05:54 -0800)
Pull x86 boot updates from Ingo Molnar:

 - A large and involved preparatory series to pave the way to add
   exception handling for relocate_kernel - which will be a debugging
   facility that has aided in the field to debug an exceptionally hard
   to debug early boot bug. Plus assorted cleanups and fixes that were
   discovered along the way, by David Woodhouse:

      - Clean up and document register use in relocate_kernel_64.S
      - Use named labels in swap_pages in relocate_kernel_64.S
      - Only swap pages for ::preserve_context mode
      - Allocate PGD for x86_64 transition page tables separately
      - Copy control page into place in machine_kexec_prepare()
      - Invoke copy of relocate_kernel() instead of the original
      - Move relocate_kernel to kernel .data section
      - Add data section to relocate_kernel
      - Drop page_list argument from relocate_kernel()
      - Eliminate writes through kernel mapping of relocate_kernel page
      - Clean up register usage in relocate_kernel()
      - Mark relocate_kernel page as ROX instead of RWX
      - Disable global pages before writing to control page
      - Ensure preserve_context flag is set on return to kernel
      - Use correct swap page in swap_pages function
      - Fix stack and handling of re-entry point for ::preserve_context
      - Mark machine_kexec() with __nocfi
      - Cope with relocate_kernel() not being at the start of the page
      - Use typedef for relocate_kernel_fn function prototype
      - Fix location of relocate_kernel with -ffunction-sections (fix by Nathan Chancellor)

 - A series to remove the last remaining absolute symbol references from
   .head.text, and enforce this at build time, by Ard Biesheuvel:

      - Avoid WARN()s and panic()s in early boot code
      - Don't hang but terminate on failure to remap SVSM CA
      - Determine VA/PA offset before entering C code
      - Avoid intentional absolute symbol references in .head.text
      - Disable UBSAN in early boot code
      - Move ENTRY_TEXT to the start of the image
      - Move .head.text into its own output section
      - Reject absolute references in .head.text

 - The above build-time enforcement uncovered a handful of bugs of
   essentially non-working code, and a wrokaround for a toolchain bug,
   fixed by Ard Biesheuvel as well:

      - Fix spurious undefined reference when CONFIG_X86_5LEVEL=n, on GCC-12
      - Disable UBSAN on SEV code that may execute very early
      - Disable ftrace branch profiling in SEV startup code

 - And miscellaneous cleanups:

      - kexec_core: Add and update comments regarding the KEXEC_JUMP flow (Rafael J. Wysocki)
      - x86/sysfs: Constify 'struct bin_attribute' (Thomas Weißschuh)"

* tag 'x86-boot-2025-01-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
  x86/sev: Disable ftrace branch profiling in SEV startup code
  x86/kexec: Use typedef for relocate_kernel_fn function prototype
  x86/kexec: Cope with relocate_kernel() not being at the start of the page
  kexec_core: Add and update comments regarding the KEXEC_JUMP flow
  x86/kexec: Mark machine_kexec() with __nocfi
  x86/kexec: Fix location of relocate_kernel with -ffunction-sections
  x86/kexec: Fix stack and handling of re-entry point for ::preserve_context
  x86/kexec: Use correct swap page in swap_pages function
  x86/kexec: Ensure preserve_context flag is set on return to kernel
  x86/kexec: Disable global pages before writing to control page
  x86/sev: Don't hang but terminate on failure to remap SVSM CA
  x86/sev: Disable UBSAN on SEV code that may execute very early
  x86/boot/64: Fix spurious undefined reference when CONFIG_X86_5LEVEL=n, on GCC-12
  x86/sysfs: Constify 'struct bin_attribute'
  x86/kexec: Mark relocate_kernel page as ROX instead of RWX
  x86/kexec: Clean up register usage in relocate_kernel()
  x86/kexec: Eliminate writes through kernel mapping of relocate_kernel page
  x86/kexec: Drop page_list argument from relocate_kernel()
  x86/kexec: Add data section to relocate_kernel
  x86/kexec: Move relocate_kernel to kernel .data section
  ...

1  2 
arch/x86/coco/sev/core.c
arch/x86/coco/sev/shared.c
arch/x86/include/asm/sev-common.h
arch/x86/kernel/callthunks.c
arch/x86/kernel/relocate_kernel_64.S
arch/x86/kernel/vmlinux.lds.S

Simple merge
Simple merge
index 6ef92432a5cef1f7eb9fcf0704c245ea5d9b3706,577b64dda8b4edf87389543f22bea8163ef41847..dcbccdb280f9e89c59aa899601751d4e0e62c2f1
@@@ -206,7 -206,7 +206,8 @@@ struct snp_psc_desc 
  #define GHCB_TERM_NO_SVSM             7       /* SVSM is not advertised in the secrets page */
  #define GHCB_TERM_SVSM_VMPL0          8       /* SVSM is present but has set VMPL to 0 */
  #define GHCB_TERM_SVSM_CAA            9       /* SVSM is present but CAA is not page aligned */
 -#define GHCB_TERM_SVSM_CA_REMAP_FAIL  10      /* SVSM is present but CA could not be remapped */
 +#define GHCB_TERM_SECURE_TSC          10      /* Secure TSC initialization failed */
++#define GHCB_TERM_SVSM_CA_REMAP_FAIL  11      /* SVSM is present but CA could not be remapped */
  
  #define GHCB_RESP_CODE(v)             ((v) & GHCB_MSR_INFO_MASK)
  
index f17d166078823ca8f1f19e6a792be2e766255e45,51c3e0049152df87f8623d4b5e7c65687e3d5a1c..8418a892d195a99ff9dfb5473c3d5afbded5b221
@@@ -142,6 -147,12 +147,7 @@@ static bool skip_addr(void *dest
        if (dest >= (void *)relocate_kernel &&
            dest < (void*)relocate_kernel + KEXEC_CONTROL_CODE_MAX_SIZE)
                return true;
 -#endif
 -#ifdef CONFIG_XEN
 -      if (dest >= (void *)hypercall_page &&
 -          dest < (void*)hypercall_page + PAGE_SIZE)
 -              return true;
+ # endif
  #endif
        return false;
  }
Simple merge
Simple merge
This page took 0.081348 seconds and 4 git commands to generate.