Messages in this thread | | | Date | Mon, 25 Nov 2019 17:16:26 +0100 | From | Ingo Molnar <> | Subject | [GIT PULL] x86/iopl changes for v5.5 |
| |
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
| |