lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Mon, 11 Mar 2024 14:48:20 +0100
From: Ingo Molnar <mingo@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: linux-kernel@...r.kernel.org, the arch/x86 maintainers <x86@...nel.org>,
	Peter Zijlstra <peterz@...radead.org>,
	Uros Bizjak <ubizjak@...il.com>
Subject: [GIT PULL] x86/core changes for v6.9

Linus,

Please pull the latest x86/core git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-core-2024-03-11

   # HEAD: 35ce64922c8263448e58a2b9e8d15a64e11e9b2d x86/idle: Select idle routine only once

Core x86 changes for v6.9:

- The biggest change is the rework of the percpu code,
  to support the 'Named Address Spaces' GCC feature,
  by Uros Bizjak:

   - This allows C code to access GS and FS segment relative
     memory via variables declared with such attributes,
     which allows the compiler to better optimize those accesses
     than the previous inline assembly code.

   - The series also includes a number of micro-optimizations
     for various percpu access methods, plus a number of
     cleanups of %gs accesses in assembly code.

   - These changes have been exposed to linux-next testing for
     the last ~5 months, with no known regressions in this area.

- Fix/clean up __switch_to()'s broken but accidentally
  working handling of FPU switching - which also generates
  better code.

- Propagate more RIP-relative addressing in assembly code,
  to generate slightly better code.

- Rework the CPU mitigations Kconfig space to be less idiosyncratic,
  to make it easier for distros to follow & maintain these options.

- Rework the x86 idle code to cure RCU violations and
  to clean up the logic.

- Clean up the vDSO Makefile logic.

- Misc cleanups and fixes.

MERGE NOTES:

Please note that there's three merge commits in this branch, which is 
higher than is typical in x86 topic trees. This happened due to the 
unusually long testing lifecycle of the percpu changes that involved 3 
merge windows, which generated a longer history and various interactions 
with other WIP core x86 changes that we felt better about to carry in a 
single tree. [ Should there be any conceptual problems with the percpu 
changes that we missed, then we can still unwind these dependencies in a 
relatively straightforward fashion, so there's no merge pressure on you. ]

This tree also has a new conflict with recent upstream in 
arch/x86/entry/entry.S, due to a recent x86/urgent VERW related fix.

The interaction is between:

  # upstream (x86/urgent)
  baf8361e5455 ("x86/bugs: Add asm helpers for executing VERW")

.. which added the new mds_verw_sel VERW method, and this commit in x86/core:

  # x86/core:
  4461438a8405 x86/retpoline: Ensure default return thunk isn't used at runtime

.. which added the __warn_thunk method.

The conflict is contextual only, it's fine to put the new __warn_thunk line 
anywhere in entry.S, as long as it's outside the other section blocks. 
Putting it last in the file is the most straightforward resolution.

 Thanks,

	Ingo

------------------>
Arnd Bergmann (1):
      x86/alternatives: Move apply_relocation() out of init section

Breno Leitao (10):
      x86/bugs: Rename CONFIG_GDS_FORCE_MITIGATION => CONFIG_MITIGATION_GDS_FORCE
      x86/bugs: Rename CONFIG_CPU_IBPB_ENTRY       => CONFIG_MITIGATION_IBPB_ENTRY
      x86/bugs: Rename CONFIG_CALL_DEPTH_TRACKING  => CONFIG_MITIGATION_CALL_DEPTH_TRACKING
      x86/bugs: Rename CONFIG_PAGE_TABLE_ISOLATION => CONFIG_MITIGATION_PAGE_TABLE_ISOLATION
      x86/bugs: Rename CONFIG_RETPOLINE            => CONFIG_MITIGATION_RETPOLINE
      x86/bugs: Rename CONFIG_SLS                  => CONFIG_MITIGATION_SLS
      x86/bugs: Rename CONFIG_CPU_UNRET_ENTRY      => CONFIG_MITIGATION_UNRET_ENTRY
      x86/bugs: Rename CONFIG_CPU_IBRS_ENTRY       => CONFIG_MITIGATION_IBRS_ENTRY
      x86/bugs: Rename CONFIG_CPU_SRSO             => CONFIG_MITIGATION_SRSO
      x86/bugs: Rename CONFIG_RETHUNK              => CONFIG_MITIGATION_RETHUNK

Daniel Micay (1):
      x86/vdso: Move vDSO to mmap region

Ingo Molnar (2):
      x86/callthunks: Mark apply_relocation() as __init_or_module
      x86/vdso/kbuild: Group non-standard build attributes and primary object file rules together

Josh Poimboeuf (2):
      x86/retpoline: Ensure default return thunk isn't used at runtime
      x86/vdso: Fix rethunk patching for vdso-image-{32,64}.o

Kees Cook (1):
      x86: Increase brk randomness entropy for 64-bit systems

Linus Torvalds (1):
      x86/fpu: Clean up FPU switching in the middle of task switching

Masahiro Yamada (4):
      x86/vdso: Consolidate targets and clean-files
      x86/vdso: Simplify obj-y addition
      x86/vdso: Use $(addprefix ) instead of $(foreach )
      x86/vdso: Use CONFIG_COMPAT_32 to specify vdso32

Nadav Amit (1):
      x86/percpu: Use compiler segment prefix qualifier

Thomas Gleixner (6):
      sched/idle: Conditionally handle tick broadcast in default_idle_call()
      x86/idle: Sanitize X86_BUG_AMD_E400 handling
      x86/idle: Clean up idle selection
      x86/idle: Cleanup idle_setup()
      x86/idle: Let prefer_mwait_c1_over_halt() return bool
      x86/idle: Select idle routine only once

Uros Bizjak (23):
      x86/percpu: Enable named address spaces with known compiler version
      x86/percpu: Use C for percpu read/write accessors
      x86/percpu: Disable named address spaces for KASAN
      x86/percpu: Rewrite arch_raw_cpu_ptr() to be easier for compilers to optimize
      x86/percpu: Use C for arch_raw_cpu_ptr(), to improve code generation
      x86/percpu: Use the correct asm operand modifier in percpu_stable_op()
      x86/percpu: Correct PER_CPU_VAR() usage to include symbol and its addend
      x86/percpu, xen: Correct PER_CPU_VAR() usage to include symbol and its addend
      x86/percpu: Introduce %rip-relative addressing to PER_CPU_VAR()
      x86/percpu: Introduce const-qualified const_pcpu_hot to micro-optimize code generation
      x86/percpu: Return correct variable from current_top_of_stack()
      x86/percpu: Define PER_CPU_VAR macro also for !__ASSEMBLY__
      x86/callthunks: Handle %rip-relative relocations in call thunk template
      x86/callthunks: Fix and unify call thunks assembly snippets
      x86/acpi: Use %rip-relative addressing in wakeup_64.S
      x86/percpu: Declare const_pcpu_hot as extern const variable
      x86/smp: Move the call to smp_processor_id() after the early exit in native_stop_other_cpus()
      x86/smp: Use atomic_try_cmpxchg in native_stop_other_cpus()
      x86/callthunks: Correct calculation of dest address in is_callthunk()
      x86/percpu: Fix "const_pcpu_hot" version generation failure
      x86/traps: Use current_top_of_stack() helper in traps.c
      x86/percpu: Avoid sparse warning with cast to named address space
      x86/percpu: Use %RIP-relative address in untagged_addr()


 Documentation/admin-guide/hw-vuln/spectre.rst   |   8 +-
 Documentation/admin-guide/kernel-parameters.txt |   4 +-
 Documentation/arch/x86/pti.rst                  |   6 +-
 arch/x86/Kconfig                                |  45 ++++--
 arch/x86/Makefile                               |  11 +-
 arch/x86/boot/compressed/ident_map_64.c         |   4 +-
 arch/x86/configs/i386_defconfig                 |   2 +-
 arch/x86/entry/calling.h                        |  74 ++++++++-
 arch/x86/entry/entry.S                          |   4 +
 arch/x86/entry/entry_32.S                       |   2 +-
 arch/x86/entry/entry_64.S                       |   8 +-
 arch/x86/entry/thunk_32.S                       |  34 +----
 arch/x86/entry/thunk_64.S                       |  33 ----
 arch/x86/entry/vdso/Makefile                    |  57 +++----
 arch/x86/entry/vdso/vma.c                       |  57 +------
 arch/x86/include/asm/current.h                  |   9 +-
 arch/x86/include/asm/disabled-features.h        |  10 +-
 arch/x86/include/asm/elf.h                      |   1 -
 arch/x86/include/asm/fpu/sched.h                |  10 +-
 arch/x86/include/asm/linkage.h                  |  16 +-
 arch/x86/include/asm/nospec-branch.h            |  55 +++----
 arch/x86/include/asm/percpu.h                   | 191 ++++++++++++++++++------
 arch/x86/include/asm/pgalloc.h                  |   2 +-
 arch/x86/include/asm/pgtable-3level.h           |   2 +-
 arch/x86/include/asm/pgtable.h                  |  18 +--
 arch/x86/include/asm/pgtable_64.h               |   3 +-
 arch/x86/include/asm/preempt.h                  |   2 +-
 arch/x86/include/asm/processor-flags.h          |   2 +-
 arch/x86/include/asm/processor.h                |   5 +-
 arch/x86/include/asm/pti.h                      |   2 +-
 arch/x86/include/asm/static_call.h              |   2 +-
 arch/x86/include/asm/text-patching.h            |   2 +
 arch/x86/include/asm/uaccess_64.h               |  11 +-
 arch/x86/kernel/acpi/wakeup_64.S                |  24 +--
 arch/x86/kernel/alternative.c                   |  23 ++-
 arch/x86/kernel/asm-offsets.c                   |   2 +-
 arch/x86/kernel/callthunks.c                    |  32 +++-
 arch/x86/kernel/cpu/amd.c                       |   2 +-
 arch/x86/kernel/cpu/bugs.c                      |  48 +++---
 arch/x86/kernel/cpu/common.c                    |   5 +-
 arch/x86/kernel/dumpstack.c                     |   2 +-
 arch/x86/kernel/ftrace.c                        |   3 +-
 arch/x86/kernel/head_32.S                       |   4 +-
 arch/x86/kernel/head_64.S                       |   4 +-
 arch/x86/kernel/kprobes/opt.c                   |   2 +-
 arch/x86/kernel/ldt.c                           |   8 +-
 arch/x86/kernel/process.c                       |  99 +++++-------
 arch/x86/kernel/process_32.c                    |   7 +-
 arch/x86/kernel/process_64.c                    |   7 +-
 arch/x86/kernel/smp.c                           |  10 +-
 arch/x86/kernel/static_call.c                   |   2 +-
 arch/x86/kernel/sys_x86_64.c                    |   7 -
 arch/x86/kernel/traps.c                         |   4 +-
 arch/x86/kernel/vmlinux.lds.S                   |  11 +-
 arch/x86/kvm/mmu/mmu.c                          |   2 +-
 arch/x86/kvm/mmu/mmu_internal.h                 |   2 +-
 arch/x86/kvm/svm/svm.c                          |   2 +-
 arch/x86/kvm/svm/vmenter.S                      |   4 +-
 arch/x86/kvm/vmx/vmx.c                          |   2 +-
 arch/x86/lib/Makefile                           |   2 +-
 arch/x86/lib/cmpxchg16b_emu.S                   |  12 +-
 arch/x86/lib/cmpxchg8b_emu.S                    |  30 ++--
 arch/x86/lib/retpoline.S                        |  41 +++--
 arch/x86/mm/Makefile                            |   2 +-
 arch/x86/mm/debug_pagetables.c                  |   4 +-
 arch/x86/mm/dump_pagetables.c                   |   4 +-
 arch/x86/mm/pgtable.c                           |   4 +-
 arch/x86/mm/tlb.c                               |  10 +-
 arch/x86/net/bpf_jit_comp.c                     |   4 +-
 arch/x86/net/bpf_jit_comp32.c                   |   2 +-
 arch/x86/purgatory/Makefile                     |   2 +-
 arch/x86/xen/xen-asm.S                          |  10 +-
 include/linux/compiler-gcc.h                    |   2 +-
 include/linux/compiler.h                        |   2 +-
 include/linux/cpu.h                             |   2 +
 include/linux/indirect_call_wrapper.h           |   2 +-
 include/linux/module.h                          |   2 +-
 include/linux/objtool.h                         |   2 +-
 include/linux/pti.h                             |   2 +-
 include/linux/tick.h                            |   3 +
 include/net/netfilter/nf_tables_core.h          |   2 +-
 include/net/tc_wrapper.h                        |   2 +-
 kernel/sched/idle.c                             |  21 +++
 kernel/time/Kconfig                             |   5 +
 kernel/trace/ring_buffer.c                      |   2 +-
 net/netfilter/Makefile                          |   2 +-
 net/netfilter/nf_tables_core.c                  |   6 +-
 net/netfilter/nft_ct.c                          |   4 +-
 net/netfilter/nft_lookup.c                      |   2 +-
 net/sched/sch_api.c                             |   2 +-
 scripts/Makefile.lib                            |   8 +-
 scripts/Makefile.vmlinux_o                      |   2 +-
 scripts/generate_rust_target.rs                 |   2 +-
 scripts/mod/modpost.c                           |   2 +-
 tools/arch/x86/include/asm/disabled-features.h  |  10 +-
 tools/objtool/arch/x86/special.c                |   2 +-
 tools/objtool/check.c                           |   4 +-
 97 files changed, 669 insertions(+), 563 deletions(-)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ