Commit e56b2b60 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'x86-urgent-2023-09-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingo Molnar:
 "Fix preemption delays in the SGX code, remove unnecessarily
  UAPI-exported code, fix a ld.lld linker (in)compatibility quirk and
  make the x86 SMP init code a bit more conservative to fix kexec()
  lockups"

* tag 'x86-urgent-2023-09-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/sgx: Break up long non-preemptible delays in sgx_vepc_release()
  x86: Remove the arch_calc_vm_prot_bits() macro from the UAPI
  x86/build: Fix linker fill bytes quirk/incompatibility for ld.lld
  x86/smp: Don't send INIT to non-present and non-booted CPUs
parents e79dbf03 3d7d72a3
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MMAN_H__
#define __ASM_MMAN_H__
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
#define arch_calc_vm_prot_bits(prot, key) ( \
((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \
((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \
((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \
((key) & 0x8 ? VM_PKEY_BIT3 : 0))
#endif
#include <uapi/asm/mman.h>
#endif /* __ASM_MMAN_H__ */
...@@ -5,14 +5,6 @@ ...@@ -5,14 +5,6 @@
#define MAP_32BIT 0x40 /* only give out 32bit addresses */ #define MAP_32BIT 0x40 /* only give out 32bit addresses */
#define MAP_ABOVE4G 0x80 /* only map above 4GB */ #define MAP_ABOVE4G 0x80 /* only map above 4GB */
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
#define arch_calc_vm_prot_bits(prot, key) ( \
((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \
((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \
((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \
((key) & 0x8 ? VM_PKEY_BIT3 : 0))
#endif
/* Flags for map_shadow_stack(2) */ /* Flags for map_shadow_stack(2) */
#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */ #define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */
......
...@@ -204,6 +204,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file) ...@@ -204,6 +204,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file)
continue; continue;
xa_erase(&vepc->page_array, index); xa_erase(&vepc->page_array, index);
cond_resched();
} }
/* /*
...@@ -222,6 +223,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file) ...@@ -222,6 +223,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file)
list_add_tail(&epc_page->list, &secs_pages); list_add_tail(&epc_page->list, &secs_pages);
xa_erase(&vepc->page_array, index); xa_erase(&vepc->page_array, index);
cond_resched();
} }
/* /*
...@@ -243,6 +245,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file) ...@@ -243,6 +245,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file)
if (sgx_vepc_free_page(epc_page)) if (sgx_vepc_free_page(epc_page))
list_add_tail(&epc_page->list, &secs_pages); list_add_tail(&epc_page->list, &secs_pages);
cond_resched();
} }
if (!list_empty(&secs_pages)) if (!list_empty(&secs_pages))
......
...@@ -1250,7 +1250,7 @@ bool smp_park_other_cpus_in_init(void) ...@@ -1250,7 +1250,7 @@ bool smp_park_other_cpus_in_init(void)
if (this_cpu) if (this_cpu)
return false; return false;
for_each_present_cpu(cpu) { for_each_cpu_and(cpu, &cpus_booted_once_mask, cpu_present_mask) {
if (cpu == this_cpu) if (cpu == this_cpu)
continue; continue;
apicid = apic->cpu_present_to_apicid(cpu); apicid = apic->cpu_present_to_apicid(cpu);
......
...@@ -156,7 +156,7 @@ SECTIONS ...@@ -156,7 +156,7 @@ SECTIONS
ALIGN_ENTRY_TEXT_END ALIGN_ENTRY_TEXT_END
*(.gnu.warning) *(.gnu.warning)
} :text =0xcccc } :text = 0xcccccccc
/* End of text section, which should occupy whole number of pages */ /* End of text section, which should occupy whole number of pages */
_etext = .; _etext = .;
......
...@@ -81,7 +81,6 @@ arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO ...@@ -81,7 +81,6 @@ arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT
arch/x86/include/uapi/asm/auxvec.h:CONFIG_IA32_EMULATION arch/x86/include/uapi/asm/auxvec.h:CONFIG_IA32_EMULATION
arch/x86/include/uapi/asm/auxvec.h:CONFIG_X86_64 arch/x86/include/uapi/asm/auxvec.h:CONFIG_X86_64
arch/x86/include/uapi/asm/mman.h:CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
" "
for c in $configs for c in $configs
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment