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>] [day] [month] [year] [list]
Message-ID: <20170904075316.tbemdkgmtasjhzbi@gmail.com>
Date:   Mon, 4 Sep 2017 09:53:16 +0200
From:   Ingo Molnar <mingo@...nel.org>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     linux-kernel@...r.kernel.org, Thomas Gleixner <tglx@...utronix.de>,
        "H. Peter Anvin" <hpa@...or.com>,
        Peter Zijlstra <a.p.zijlstra@...llo.nl>,
        Andrew Morton <akpm@...ux-foundation.org>,
        Josh Poimboeuf <jpoimboe@...hat.com>,
        Andy Lutomirski <luto@...nel.org>,
        Borislav Petkov <bp@...en8.de>
Subject: [GIT PULL] x86/asm changes for v4.14

Linus,

Please pull the latest x86-asm-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-asm-for-linus

   # HEAD: dd88a0a0c8615417fe6b4285769b5b772de87279 objtool: Handle GCC stack pointer adjustment bug

The main highlights for this cycle are:

 - Introduce the ORC unwinder, which can be enabled via CONFIG_ORC_UNWINDER=y.

   The ORC unwinder is a lightweight, Linux kernel specific debuginfo
   implementation, which aims to be DWARF done right for unwinding. Objtool is
   used to generate the ORC unwinder tables during build, so the data format is 
   flexible and kernel internal: there's no dependency on debuginfo created by an
   external toolchain.

   The ORC unwinder is almost two orders of magnitude faster than the (out of 
   tree) DWARF unwinder - which is important for perf call graph profiling. It is 
   also significantly simpler and is coded defensively: there has not been a 
   single ORC related kernel crash so far, even with early versions. (knock on 
   wood!)

   But the main advantage is that enabling the ORC unwinder allows
   CONFIG_FRAME_POINTERS to be turned off - which speeds up the kernel measurably:

   With frame pointers disabled, GCC does not have to add frame pointer 
   instrumentation code to every function in the kernel.  The kernel's .text
   size decreases by about 3.2%, resulting in better cache utilization and fewer 
   instructions executed, resulting in a broad kernel-wide speedup. Average
   speedup of system calls should be roughly in the 1-3% range - measurements by
   Mel Gorman [1] have shown a speedup of 5-10% for some function execution
   intense workloads.

   The main cost of the unwinder is that the unwinder data has to be stored in
   RAM: the memory cost is 2-4MB of RAM, depending on kernel config - which is a 
   modest cost on modern x86 systems.

   Given how young the ORC unwinder code is it's not enabled by default - but
   given the performance advantages the plan is to eventually make it the default
   unwinder on x86.

   See Documentation/x86/orc-unwinder.txt for more details.

 - Remove lguest support: its intended role was that of a temporary proof of 
   concept for virtualization, plus its removal will enable the reduction 
   (removal) of the paravirt API as well, so Rusty agreed to its removal.
   (Juergen Gross)

 - Clean up and fix FSGS related functionality (Andy Lutomirski)

 - Clean up IO access APIs (Andy Shevchenko)

 - Enhance the symbol namespace (Jiri Slaby)

 Thanks,

	Ingo

------------------>
Andy Lutomirski (13):
      x86/entry/64: Refactor IRQ stacks and make them NMI-safe
      x86/entry/64: Initialize the top of the IRQ stack before switching stacks
      x86/ldt/64: Refresh DS and ES when modify_ldt changes an entry
      x86/asm/32: Make pt_regs's segment registers be 16 bits
      x86/traps: Don't clear segment high bits in early_idt_handler_common()
      x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads
      x86/xen/64: Rearrange the SYSCALL entries
      x86/asm/32: Fix regs_get_register() on segment registers
      x86/fsgsbase/64: Fully initialize FS and GS state in start_thread_common
      x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps
      selftests/x86/fsgsbase: Test selectors 1, 2, and 3
      x86/switch_to/64: Rewrite FS/GS switching yet again to fix AMD CPUs
      x86/xen/64: Fix the reported SS and CS in SYSCALL

Andy Shevchenko (5):
      x86/io: Define IO accessors by preprocessor
      x86/io: Include asm-generic/io.h to architectural code
      x86/io: Remove mem*io() duplications
      x86/io: Remove xlate_dev_kmem_ptr() duplication
      x86/io: Make readq() / writeq() API consistent

Jiri Slaby (4):
      x86/boot/32: Extract efi_pe_entry() from startup_32()
      x86/boot/64: Extract efi_pe_entry() from startup_64()
      x86/fpu/math-emu: Add ENDPROC to functions
      x86/entry/64: Use ENTRY() instead of ALIGN+GLOBAL for stub32_clone()

Josh Poimboeuf (20):
      x86/dumpstack: Fix occasionally missing registers
      x86/dumpstack: Fix interrupt and exception stack boundary checks
      objtool: Add ORC unwind table generation
      objtool, x86: Add facility for asm code to provide unwind hints
      x86/entry/64: Add unwind hint annotations
      x86/asm: Add unwind hint annotations to sync_core()
      objtool: Fix gcov check for older versions of GCC
      x86/asm: Make objtool unreachable macros independent from GCC version
      x86/unwind: Add the ORC unwinder
      x86/kconfig: Make it easier to switch to the new ORC unwinder
      x86/kconfig: Consolidate unwinders into multiple choice selection
      objtool: Assume unannotated UD2 instructions are dead ends
      objtool: Skip unreachable warnings for 'alt' instructions
      objtool: Fix '-mtune=atom' decoding support in objtool 2.0
      objtool: Disable GCC '-Wpacked' warnings
      x86/asm: Fix UNWIND_HINT_REGS macro for older binutils
      objtool: Fix validate_branch() return codes
      objtool: Track DRAP separately from callee-saved registers
      objtool: Fix objtool fallthrough detection with function padding
      objtool: Handle GCC stack pointer adjustment bug

Juergen Gross (2):
      x86/paravirt/xen: Remove xen_patch()
      x86/lguest: Remove lguest support

Kees Cook (2):
      x86/asm: Add suffix macro for GEN_*_RMWcc()
      x86/asm: Add ASM_UNREACHABLE

Peter Zijlstra (1):
      x86: Clarify/fix no-op barriers for text_poke_bp()


 Documentation/x86/orc-unwinder.txt               |  179 ++
 MAINTAINERS                                      |   11 -
 arch/um/include/asm/unwind.h                     |    8 +
 arch/x86/Kbuild                                  |    3 -
 arch/x86/Kconfig                                 |    6 +-
 arch/x86/Kconfig.debug                           |   59 +-
 arch/x86/boot/compressed/head_32.S               |  129 +-
 arch/x86/boot/compressed/head_64.S               |  112 +-
 arch/x86/configs/tiny.config                     |    2 +
 arch/x86/entry/Makefile                          |    1 -
 arch/x86/entry/calling.h                         |    5 +
 arch/x86/entry/entry_64.S                        |  179 +-
 arch/x86/entry/entry_64_compat.S                 |   11 +-
 arch/x86/ia32/ia32_signal.c                      |    2 +-
 arch/x86/include/asm/elf.h                       |   15 +-
 arch/x86/include/asm/io.h                        |   98 +-
 arch/x86/include/asm/lguest.h                    |   91 -
 arch/x86/include/asm/lguest_hcall.h              |   74 -
 arch/x86/include/asm/module.h                    |    9 +
 arch/x86/include/asm/orc_lookup.h                |   46 +
 arch/x86/include/asm/orc_types.h                 |  107 +
 arch/x86/include/asm/processor.h                 |    5 +-
 arch/x86/include/asm/ptrace.h                    |   43 +-
 arch/x86/include/asm/rmwcc.h                     |   37 +-
 arch/x86/include/asm/unwind.h                    |   76 +-
 arch/x86/include/asm/unwind_hints.h              |  105 +
 arch/x86/include/uapi/asm/bootparam.h            |    2 +-
 arch/x86/kernel/Makefile                         |    8 +-
 arch/x86/kernel/alternative.c                    |   22 +-
 arch/x86/kernel/asm-offsets_32.c                 |   20 -
 arch/x86/kernel/dumpstack.c                      |   14 +-
 arch/x86/kernel/dumpstack_32.c                   |    4 +-
 arch/x86/kernel/dumpstack_64.c                   |    4 +-
 arch/x86/kernel/head_32.S                        |   22 +-
 arch/x86/kernel/ldt.c                            |   21 +
 arch/x86/kernel/module.c                         |   11 +-
 arch/x86/kernel/platform-quirks.c                |    1 -
 arch/x86/kernel/process_32.c                     |    2 +-
 arch/x86/kernel/process_64.c                     |  242 +-
 arch/x86/kernel/setup.c                          |    3 +
 arch/x86/kernel/signal.c                         |    2 +-
 arch/x86/kernel/step.c                           |    2 +-
 arch/x86/kernel/unwind_frame.c                   |   39 +-
 arch/x86/kernel/unwind_guess.c                   |    5 +
 arch/x86/kernel/unwind_orc.c                     |  582 ++++
 arch/x86/kernel/vmlinux.lds.S                    |    3 +
 arch/x86/kvm/Kconfig                             |    1 -
 arch/x86/lguest/Kconfig                          |   14 -
 arch/x86/lguest/Makefile                         |    2 -
 arch/x86/lguest/boot.c                           | 1558 ----------
 arch/x86/lguest/head_32.S                        |  192 --
 arch/x86/math-emu/div_Xsig.S                     |    1 +
 arch/x86/math-emu/div_small.S                    |    2 +-
 arch/x86/math-emu/mul_Xsig.S                     |    4 +-
 arch/x86/math-emu/polynom_Xsig.S                 |    1 +
 arch/x86/math-emu/reg_norm.S                     |    2 +
 arch/x86/math-emu/reg_round.S                    |    2 +
 arch/x86/math-emu/reg_u_add.S                    |    1 +
 arch/x86/math-emu/reg_u_div.S                    |    2 +
 arch/x86/math-emu/reg_u_mul.S                    |    1 +
 arch/x86/math-emu/reg_u_sub.S                    |    1 +
 arch/x86/math-emu/round_Xsig.S                   |    4 +-
 arch/x86/math-emu/shr_Xsig.S                     |    1 +
 arch/x86/math-emu/wm_shrx.S                      |    2 +
 arch/x86/math-emu/wm_sqrt.S                      |    1 +
 arch/x86/mm/extable.c                            |    2 +-
 arch/x86/xen/enlighten_pv.c                      |   59 +-
 arch/x86/xen/xen-asm.S                           |   26 +-
 arch/x86/xen/xen-asm.h                           |   12 -
 arch/x86/xen/xen-asm_32.S                        |   27 +-
 arch/x86/xen/xen-asm_64.S                        |   61 +-
 arch/x86/xen/xen-ops.h                           |   15 +-
 drivers/Makefile                                 |    1 -
 drivers/block/Kconfig                            |    2 +-
 drivers/char/Kconfig                             |    2 +-
 drivers/char/virtio_console.c                    |    2 +-
 drivers/lguest/Kconfig                           |   13 -
 drivers/lguest/Makefile                          |   26 -
 drivers/lguest/README                            |   47 -
 drivers/lguest/core.c                            |  398 ---
 drivers/lguest/hypercalls.c                      |  304 --
 drivers/lguest/interrupts_and_traps.c            |  706 -----
 drivers/lguest/lg.h                              |  258 --
 drivers/lguest/lguest_user.c                     |  446 ---
 drivers/lguest/page_tables.c                     | 1239 --------
 drivers/lguest/segments.c                        |  228 --
 drivers/lguest/x86/core.c                        |  724 -----
 drivers/lguest/x86/switcher_32.S                 |  388 ---
 drivers/net/Kconfig                              |    2 +-
 drivers/tty/hvc/Kconfig                          |    2 +-
 drivers/virtio/Kconfig                           |    4 +-
 include/asm-generic/io.h                         |   27 +
 include/asm-generic/vmlinux.lds.h                |   27 +-
 include/linux/compiler-gcc.h                     |   11 -
 include/linux/compiler.h                         |   28 +-
 include/linux/lguest.h                           |   73 -
 include/linux/lguest_launcher.h                  |   44 -
 include/uapi/linux/virtio_ring.h                 |    4 +-
 lib/Kconfig.debug                                |    9 +-
 scripts/Makefile.build                           |   17 +-
 tools/Makefile                                   |   11 +-
 tools/lguest/.gitignore                          |    2 -
 tools/lguest/Makefile                            |   14 -
 tools/lguest/extract                             |   58 -
 tools/lguest/lguest.c                            | 3420 ----------------------
 tools/lguest/lguest.txt                          |  125 -
 tools/objtool/Build                              |    3 +
 tools/objtool/Documentation/stack-validation.txt |   56 +-
 tools/objtool/Makefile                           |    6 +-
 tools/objtool/arch.h                             |    5 +-
 tools/objtool/arch/x86/decode.c                  |   91 +-
 tools/objtool/builtin-check.c                    |    7 +-
 tools/objtool/builtin-orc.c                      |   70 +
 tools/objtool/builtin.h                          |    1 +
 tools/objtool/cfi.h                              |    2 +-
 tools/objtool/check.c                            |  498 +++-
 tools/objtool/check.h                            |   22 +-
 tools/objtool/elf.c                              |  212 +-
 tools/objtool/elf.h                              |   15 +-
 tools/objtool/objtool.c                          |    3 +-
 tools/objtool/orc.h                              |   30 +
 tools/objtool/orc_dump.c                         |  212 ++
 tools/objtool/orc_gen.c                          |  214 ++
 tools/objtool/orc_types.h                        |  107 +
 tools/testing/selftests/x86/fsgsbase.c           |   41 +-
 125 files changed, 3327 insertions(+), 11346 deletions(-)
 create mode 100644 Documentation/x86/orc-unwinder.txt
 create mode 100644 arch/um/include/asm/unwind.h
 delete mode 100644 arch/x86/include/asm/lguest.h
 delete mode 100644 arch/x86/include/asm/lguest_hcall.h
 create mode 100644 arch/x86/include/asm/orc_lookup.h
 create mode 100644 arch/x86/include/asm/orc_types.h
 create mode 100644 arch/x86/include/asm/unwind_hints.h
 create mode 100644 arch/x86/kernel/unwind_orc.c
 delete mode 100644 arch/x86/lguest/Kconfig
 delete mode 100644 arch/x86/lguest/Makefile
 delete mode 100644 arch/x86/lguest/boot.c
 delete mode 100644 arch/x86/lguest/head_32.S
 delete mode 100644 arch/x86/xen/xen-asm.h
 delete mode 100644 drivers/lguest/Kconfig
 delete mode 100644 drivers/lguest/Makefile
 delete mode 100644 drivers/lguest/README
 delete mode 100644 drivers/lguest/core.c
 delete mode 100644 drivers/lguest/hypercalls.c
 delete mode 100644 drivers/lguest/interrupts_and_traps.c
 delete mode 100644 drivers/lguest/lg.h
 delete mode 100644 drivers/lguest/lguest_user.c
 delete mode 100644 drivers/lguest/page_tables.c
 delete mode 100644 drivers/lguest/segments.c
 delete mode 100644 drivers/lguest/x86/core.c
 delete mode 100644 drivers/lguest/x86/switcher_32.S
 delete mode 100644 include/linux/lguest.h
 delete mode 100644 include/linux/lguest_launcher.h
 delete mode 100644 tools/lguest/.gitignore
 delete mode 100644 tools/lguest/Makefile
 delete mode 100644 tools/lguest/extract
 delete mode 100644 tools/lguest/lguest.c
 delete mode 100644 tools/lguest/lguest.txt
 create mode 100644 tools/objtool/builtin-orc.c
 create mode 100644 tools/objtool/orc.h
 create mode 100644 tools/objtool/orc_dump.c
 create mode 100644 tools/objtool/orc_gen.c
 create mode 100644 tools/objtool/orc_types.h

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ