Messages in this thread | | | Subject | [PATCH 00/17] x86, mpx updates for 4.2 (take 5) | From | Dave Hansen <> | Date | Wed, 22 Apr 2015 11:27:29 -0700 |
| |
Changes from take 4 / v19:
* Do not pass a task_struct around when we are really just going to operate on current
Changes from take 3 / v18 (all minor):
* use DECLARE_EVENT_CLASS()/DEFINE_EVENT() for the ranged tracepoints to save 10 lines of code.
Changes from take 2 / v17 (all minor):
* fix a couple of whitespace borkages caught by checkpatch, and a spelling error or two. * replace printk with pr_info() for boot disable * change trace print format for address intervals * fix up variable name in tsk_get_xsave_addr() comment * remove tsk_get_xsave_field() GPL export * fix up Qiaowei's From:
--
Hi x86 maintainers,
There are 4 basic things going on here: 1. Make FPU/xsave code preempt safe and work properly 2. Add trace points to make kernel and app debugging easier 3. Add a boot-time disable for mpx 4. Support 32-bit binaries to run on 64-bit kernels
I've hesitated sending this in the past few weeks as the FPU code had a lot of churn and affected our ability to test on current kernels. It seems to have settled down and appears more stable now.
As mentioned in the tsk_get_xsave_addr() patches, this must be applied after Oleg's fixes which currently ends with:
commit 7fc253e27 ("x86/fpu: Kill eager_fpu_init_bp()")
This also sees breakage unless either booted with 'noxsaves' or if it has Fenghua's set from here applied:
http://lkml.kernel.org/r/1429678319-61356-1-git-send-email-fenghua.yu@intel.com
This set is also available against 4.0-rc4 in git:
git://git.kernel.org/pub/scm/linux/kernel/git/daveh/x86-mpx.git mpx-v20
Dave Hansen (17): x86, fpu: wrap get_xsave_addr() to make it safer x86, mpx: use new tsk_get_xsave_addr() x86, mpx: trace #BR exceptions x86, mpx: trace entry to bounds exception paths x86, mpx: trace ranged MPX operations x86, mpx: trace allocation of new bounds tables x86, mpx: boot-time disable x86: make is_64bit_mm() widely available x86: make __VIRTUAL_MASK safe to use on 32 bit x86, mpx: we do not allocate the bounds directory x86, mpx: remove redundant MPX_BNDCFG_ADDR_MASK x86, mpx: Add temporary variable to reduce masking x86, mpx: new directory entry to addr helper x86, mpx: do 32-bit-only cmpxchg for 32-bit apps x86, mpx: support 32-bit binaries on 64-bit kernel x86, mpx: allow mixed binaries again x86, mpx: cleanup: do not pass task around when unnecessary
Documentation/kernel-parameters.txt | 4 + arch/x86/include/asm/mmu_context.h | 13 ++ arch/x86/include/asm/mpx.h | 76 +++++----- arch/x86/include/asm/page_types.h | 8 + arch/x86/include/asm/processor.h | 12 +- arch/x86/include/asm/trace/mpx.h | 121 +++++++++++++++ arch/x86/include/asm/xsave.h | 1 + arch/x86/kernel/cpu/common.c | 16 ++ arch/x86/kernel/traps.c | 13 +- arch/x86/kernel/uprobes.c | 10 +- arch/x86/kernel/xsave.c | 32 ++++ arch/x86/mm/mpx.c | 283 ++++++++++++++++++++++++++++-------- kernel/sys.c | 8 +- 13 files changed, 473 insertions(+), 124 deletions(-) create mode 100644 arch/x86/include/asm/trace/mpx.h
| |