[GIT PULL] x86/iopl changes for v5.5

From: Ingo Molnar
Date: Mon Nov 25 2019 - 11:16:32 EST


Linus,

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

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

# HEAD: e3cb0c7102f04c83bf1a7cb1d052e92749310b46 x86/ioperm: Fix use of deprecated config option

This tree implements a nice simplification of the iopl and ioperm code
that Thomas Gleixner discovered: we can implement the IO privilege
features of the iopl system call by using the IO permission bitmap in
permissive mode, while trapping CLI/STI/POPF/PUSHF uses in user-space if
they change the interrupt flag.

This tree implements that feature, with testing facilities and related
cleanups.

Thanks,

Ingo

------------------>
Alexander Duyck (1):
x86/ioperm: Fix use of deprecated config option

Thomas Gleixner (21):
x86/ptrace: Prevent truncation of bitmap size
x86/process: Unify copy_thread_tls()
x86/cpu: Unify cpu_init()
x86/tss: Fix and move VMX BUILD_BUG_ON()
x86/iopl: Cleanup include maze
x86/ioperm: Simplify first ioperm() invocation logic
x86/ioperm: Avoid bitmap allocation if no permissions are set
x86/io: Speedup schedule out of I/O bitmap user
x86/tss: Move I/O bitmap data into a seperate struct
x86/ioperm: Move iobitmap data into a struct
x86/ioperm: Add bitmap sequence number
x86/ioperm: Move TSS bitmap update to exit to user work
x86/ioperm: Remove bitmap if all permissions dropped
x86/ioperm: Share I/O bitmap if identical
selftests/x86/ioperm: Extend testing so the shared bitmap is exercised
x86/iopl: Fixup misleading comment
x86/iopl: Restrict iopl() permission scope
x86/iopl: Remove legacy IOPL option
x86/ioperm: Extend IOPL config to control ioperm() as well
selftests/x86/iopl: Extend test to cover IOPL emulation
x86/entry/32: Clarify register saving in __switch_to_asm()


arch/x86/Kconfig | 18 +++
arch/x86/entry/common.c | 4 +
arch/x86/entry/entry_32.S | 8 +-
arch/x86/include/asm/io_bitmap.h | 29 +++++
arch/x86/include/asm/paravirt.h | 4 -
arch/x86/include/asm/paravirt_types.h | 2 -
arch/x86/include/asm/pgtable_32_types.h | 2 +-
arch/x86/include/asm/processor.h | 113 ++++++++++-------
arch/x86/include/asm/ptrace.h | 6 +
arch/x86/include/asm/switch_to.h | 10 ++
arch/x86/include/asm/thread_info.h | 14 ++-
arch/x86/include/asm/xen/hypervisor.h | 2 -
arch/x86/kernel/cpu/common.c | 188 ++++++++++++----------------
arch/x86/kernel/doublefault.c | 2 +-
arch/x86/kernel/ioport.c | 209 +++++++++++++++++++++-----------
arch/x86/kernel/paravirt.c | 2 -
arch/x86/kernel/process.c | 205 ++++++++++++++++++++++++-------
arch/x86/kernel/process_32.c | 77 ------------
arch/x86/kernel/process_64.c | 86 -------------
arch/x86/kernel/ptrace.c | 12 +-
arch/x86/kvm/vmx/vmx.c | 8 --
arch/x86/mm/cpu_entry_area.c | 8 ++
arch/x86/xen/enlighten_pv.c | 10 --
tools/testing/selftests/x86/ioperm.c | 16 ++-
tools/testing/selftests/x86/iopl.c | 129 ++++++++++++++++++--
25 files changed, 686 insertions(+), 478 deletions(-)
create mode 100644 arch/x86/include/asm/io_bitmap.h