OSDN Git Service

Merge branch 'x86-iopl-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Nov 2019 19:12:02 +0000 (11:12 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Nov 2019 19:12:02 +0000 (11:12 -0800)
Pull x86 iopl updates from Ingo Molnar:
 "This 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 implements that feature, with testing facilities and related
  cleanups"

[ "Simplification" may be an over-statement. The main goal is to avoid
  the cli/sti of iopl by effectively implementing the IO port access
  parts of iopl in terms of ioperm.

  This may end up not workign well in case people actually depend on
  cli/sti being available, or if there are mixed uses of iopl and
  ioperm. We will see..       - Linus ]

* 'x86-iopl-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
  x86/ioperm: Fix use of deprecated config option
  x86/entry/32: Clarify register saving in __switch_to_asm()
  selftests/x86/iopl: Extend test to cover IOPL emulation
  x86/ioperm: Extend IOPL config to control ioperm() as well
  x86/iopl: Remove legacy IOPL option
  x86/iopl: Restrict iopl() permission scope
  x86/iopl: Fixup misleading comment
  selftests/x86/ioperm: Extend testing so the shared bitmap is exercised
  x86/ioperm: Share I/O bitmap if identical
  x86/ioperm: Remove bitmap if all permissions dropped
  x86/ioperm: Move TSS bitmap update to exit to user work
  x86/ioperm: Add bitmap sequence number
  x86/ioperm: Move iobitmap data into a struct
  x86/tss: Move I/O bitmap data into a seperate struct
  x86/io: Speedup schedule out of I/O bitmap user
  x86/ioperm: Avoid bitmap allocation if no permissions are set
  x86/ioperm: Simplify first ioperm() invocation logic
  x86/iopl: Cleanup include maze
  x86/tss: Fix and move VMX BUILD_BUG_ON()
  x86/cpu: Unify cpu_init()
  ...

1  2 
arch/x86/Kconfig
arch/x86/entry/entry_32.S
arch/x86/include/asm/pgtable_32_types.h
arch/x86/include/asm/processor.h
arch/x86/kernel/cpu/common.c
arch/x86/kernel/doublefault.c
arch/x86/kvm/vmx/vmx.c
arch/x86/mm/cpu_entry_area.c

Simple merge
Simple merge
@@@ -44,11 -44,11 +44,11 @@@ extern bool __vmalloc_start_set; /* se
   * Define this here and validate with BUILD_BUG_ON() in pgtable_32.c
   * to avoid include recursion hell
   */
- #define CPU_ENTRY_AREA_PAGES  (NR_CPUS * 39)
+ #define CPU_ENTRY_AREA_PAGES  (NR_CPUS * 41)
  
 -#define CPU_ENTRY_AREA_BASE                                           \
 -      ((FIXADDR_TOT_START - PAGE_SIZE * (CPU_ENTRY_AREA_PAGES + 1))   \
 -       & PMD_MASK)
 +/* The +1 is for the readonly IDT page: */
 +#define CPU_ENTRY_AREA_BASE   \
 +      ((FIXADDR_TOT_START - PAGE_SIZE*(CPU_ENTRY_AREA_PAGES+1)) & PMD_MASK)
  
  #define LDT_BASE_ADDR         \
        ((CPU_ENTRY_AREA_BASE - PAGE_SIZE) & PMD_MASK)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge