1. 02 11月, 2011 4 次提交
  2. 15 9月, 2011 1 次提交
    • I
      um: Save FPU registers between task switches · fbfe9c84
      Ingo van Lil 提交于
      Some time ago Jeff prepared 42daba31 ("uml: stop saving process FP
      state") for UML to stop saving the process FP state between task
      switches.  The assumption was that since with SKAS0 every guest process
      runs inside a host process context the host OS will take care of keeping
      the proper FP state.
      
      Unfortunately this is not true for multi-threaded applications, where
      all guest threads share a single host process context yet all may use
      the FPU on their own.  Although I haven't verified it I suspect things
      to be even worse in SKAS3 mode where all guest processes run inside a
      single host process.
      
      The patch reintroduces the saving and restoring of the FP context
      between task switches.
      
      [richard@nod.at: Ingo posted this patch in 2009, sadly it was never applied
      and got lost. Now in 2011 the problem was reported by Gunnar.]
      Signed-off-by: NIngo van Lil <inguin@gmx.de>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Reported-by: <gunnarlindroth@hotmail.com>
      Tested-by: <gunnarlindroth@hotmail.com>
      Cc: Stanislav Meduna <stano@meduna.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fbfe9c84
  3. 23 10月, 2008 4 次提交
  4. 17 10月, 2007 9 次提交
    • J
      uml: eliminate floating point state from register file · 75c7e214
      Jeff Dike 提交于
      The floating point fields in the pt_regs register file aren't used, so they
      are deleted.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      75c7e214
    • J
      uml: floating point signal delivery fixes · a5f6096c
      Jeff Dike 提交于
      Handle floating point state in across signals correctly.  UML/i386 needs to
      know whether the host does PTRACE_[GS]ETFPXREGS, so an arch_init_registers
      hook is added, which on x86_64 does nothing.
      
      UML doesn't save and restore floating point registers on kernel entry and
      exit, so they need to be copied between the host process and the sigcontext.
      save_fpx_registers and restore_fpx_registers are added for this purpose.
      save_fp_registers and restore_fp_registers already exist.
      
      There was a bunch of floating point state conversion code in
      arch/um/sys-i386/ptrace.c which isn't needed there, but is needed in signal.c,
      so it is moved over.
      
      The i386 code now distinguishes between fp and fpx state and handles them
      correctly.  The x86_64 code just needs to copy state as-is between the host
      process and the stack.  There are also some fixes there to pass the correct
      address of the floating point state around.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a5f6096c
    • J
      uml: remove os_* usage from userspace files · 8ca842c4
      Jeff Dike 提交于
      This patch fixes some userspace files which were calling libc through the os_*
      wrappers.
      
      It turns out that there was only one user of os_new_tty_pgrp, so it can be
      deleted.
      
      There are also some style and whitespace fixes in here.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8ca842c4
    • J
      uml: rename pt_regs general-purpose register file · 18baddda
      Jeff Dike 提交于
      Before the removal of tt mode, access to a register on the skas-mode side of a
      pt_regs struct looked like pt_regs.regs.skas.regs.regs[FOO].  This was bad
      enough, but it became pt_regs.regs.regs.regs[FOO] with the removal of the
      union from the middle.  To get rid of the run of three "regs", the last field
      is renamed to "gp".
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      18baddda
    • J
      uml: style fixes pass 3 · ba180fd4
      Jeff Dike 提交于
      Formatting changes in the files which have been changed in the course
      of folding foo_skas functions into their callers.  These include:
      	copyright updates
      	header file trimming
      	style fixes
      	adding severity to printks
      
      These changes should be entirely non-functional.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ba180fd4
    • J
      uml: remove code made redundant by CHOOSE_MODE removal · 77bf4400
      Jeff Dike 提交于
      This patch makes a number of simplifications enabled by the removal of
      CHOOSE_MODE.  There were lots of functions that looked like
      
      	int foo(args){
      		foo_skas(args);
      	}
      
      The bodies of foo_skas are now folded into foo, and their declarations (and
      sometimes entire header files) are deleted.
      
      In addition, the union uml_pt_regs, which was a union between the tt and skas
      register formats, is now a struct, with the tt-mode arm of the union being
      removed.
      
      It turns out that usr2_handler was unused, so it is gone.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      77bf4400
    • J
      uml: throw out CHOOSE_MODE · 6aa802ce
      Jeff Dike 提交于
      The next stage after removing code which depends on CONFIG_MODE_TT is removing
      the CHOOSE_MODE abstraction, which provided both compile-time and run-time
      branching to either tt-mode or skas-mode code.
      
      This patch removes choose-mode.h and all inclusions of it, and replaces all
      CHOOSE_MODE invocations with the skas branch.  This leaves a number of trivial
      functions which will be dealt with in a later patch.
      
      There are some changes in the uaccess and tls support which go somewhat beyond
      this and eliminate some of the now-redundant functions.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6aa802ce
    • J
      uml: throw out CONFIG_MODE_TT · 42fda663
      Jeff Dike 提交于
      This patchset throws out tt mode, which has been non-functional for a while.
      
      This is done in phases, interspersed with code cleanups on the affected files.
      
      The removal is done as follows:
      	remove all code, config options, and files which depend on
      CONFIG_MODE_TT
      	get rid of the CHOOSE_MODE macro, which decided whether to
      call tt-mode or skas-mode code, and replace invocations with their
      skas portions
      	replace all now-trivial procedures with their skas equivalents
      
      There are now a bunch of now-redundant pieces of data structures, including
      mode-specific pieces of the thread structure, pt_regs, and mm_context.  These
      are all replaced with their skas-specific contents.
      
      As part of the ongoing style compliance project, I made a style pass over all
      files that were changed.  There are three such patches, one for each phase,
      covering the files affected by that phase but no later ones.
      
      I noticed that we weren't freeing the LDT state associated with a process when
      it exited, so that's fixed in one of the later patches.
      
      The last patch is a tidying patch which I've had for a while, but which caused
      inexplicable crashes under tt mode.  Since that is no longer a problem, this
      can now go in.
      
      This patch:
      
      Start getting rid of tt mode support.
      
      This patch throws out CONFIG_MODE_TT and all config options, code, and files
      which depend on it.
      
      CONFIG_MODE_SKAS is gone and everything that depends on it is included
      unconditionally.
      
      The few changed lines are in re-written Kconfig help, lines which needed
      something skas-related removed from them, and a few more which weren't
      strictly deletions.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      42fda663
    • J
      uml: stop saving process FP state · 42daba31
      Jeff Dike 提交于
      Throw out a lot of code dealing with saving and restoring floating-point
      state.  In skas mode, where processes run in a restoring floating-point state
      on kernel entry and exit is pointless.
      
      This eliminates most of arch/um/os-Linux/sys-{i386,x86_64}/registers.c.  Most
      of what remained is now arch-indpendent, and can be moved up to
      arch/um/os-Linux/registers.c.  Both arches need the jmp_buf accessor
      get_thread_reg, and i386 needs {save,restore}_fp_regs because it cheats during
      sigreturn by getting the fp state using ptrace rather than copying it out of
      the process sigcontext.
      
      After this, it turns out that arch/um/include/skas/mode-skas.h is almost
      completely unneeded.  The declarations in it are variables which either don't
      exist or which don't have global scope.  The one exception is
      kill_off_processes_skas.  If that's removed, this header can be deleted.
      
      This uncovered a bug in user.h, which wasn't correctly making sure that a
      size_t definition was available to both userspace and kernelspace files.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      42daba31
  5. 08 12月, 2006 1 次提交
  6. 01 4月, 2006 1 次提交
    • P
      [PATCH] uml: clean arch_switch usage · 972410b0
      Paolo 'Blaisorblade' Giarrusso 提交于
      Call arch_switch also in switch_to_skas, even if it's, for now, a no-op for
      that case (and mark this in the comment); this will change soon.
      
      Also, arch_switch for TT mode is actually useless when the PT proxy (a
      complicate debugging instrumentation for TT mode) is not enabled.  In fact, it
      only calls update_debugregs, which checks debugregs_seq against seq (to check
      if the registers are up-to-date - seq here means a "version number" of the
      registers).
      
      If the ptrace proxy is not enabled, debugregs_seq always stays 0 and
      update_debugregs will be a no-op.  So, optimize this out (the compiler can't
      do it).
      
      Also, I've been disappointed by the fact that it would make a lot of sense if,
      after calling a successful
      update_debugregs(current->thread.arch.debugregs_seq),
      current->thread.arch.debugregs_seq were updated with the new debugregs_seq.
      But this is not done.  Is this a bug or a feature?  For all purposes, it seems
      a bug (otherwise the whole mechanism does not make sense, which is also a
      possibility to check), which causes some performance only problems (not
      correctness), since we write_debugregs when not needed.
      
      Also, as suggested by Jeff, remove a redundant enabling of SIGVTALRM,
      comprised in the subsequent local_irq_enable().  I'm just a bit dubious if
      ordering matters there...
      Signed-off-by: NPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: NJeff Dike <jdike@addtoit.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      972410b0
  7. 14 6月, 2005 1 次提交
  8. 21 5月, 2005 1 次提交
    • J
      [PATCH] uml: small fixes left over from rc4 · ba9950c8
      Jeff Dike 提交于
      Some changes that I sent in didn't make 2.6.12-rc4 for some reason.  This
      adds them back.  We have
      	an x86_64 definition of TOP_ADDR
      	a reimplementation of the x86_64 csum_partial_copy_from_user
      	some syntax fixes in arch/um/kernel/ptrace.c
      	removal of a CFLAGS definition in the x86_64 Makefile
      	some include changes in the x86_64 ptrace.c and user-offsets.h
      	a syntax fix in elf-x86_64.h
      Also moved an include in the i386 and x86_64 Makefiles to make the symlinks
      work, and some small fixes from Al Viro.
      Signed-off-by: NJeff Dike <jdike@addtoit.com>
      Cc: <viro@parcelfarce.linux.theplanet.co.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ba9950c8
  9. 06 5月, 2005 1 次提交
    • B
      [PATCH] uml: S390 preparation, abstract host page fault data · c578455a
      Bodo Stroesser 提交于
      This patch removes the arch-specific fault/trap-infos from thread and
      skas-regs.
      
      It adds a new struct faultinfo, that is arch-specific defined in
      sysdep/faultinfo.h.
      
      The structure is inserted in thread.arch and thread.regs.skas and
      thread.regs.tt
      
      Now, segv and other trap-handlers can copy the contents from regs.X.faultinfo
      to thread.arch.faultinfo with one simple assignment.
      
      Also, the number of macros necessary is reduced to
      
      FAULT_ADDRESS(struct faultinfo)
          extracts the faulting address from faultinfo
      
      FAULT_WRITE(struct faultinfo)
          extracts the "is_write" flag
      
      SEGV_IS_FIXABLE(struct faultinfo)
          is true for the fixable segvs, i.e. (TRAP == 14)
          on i386
      
      UPT_FAULTINFO(regs)
          result is (struct faultinfo *) to the faultinfo
          in regs->skas.faultinfo
      
      GET_FAULTINFO_FROM_SC(struct faultinfo, struct sigcontext *)
          copies the relevant parts of the sigcontext to
          struct faultinfo.
      
      On SIGSEGV, call user_signal() instead of handle_segv(), if the architecture
      provides the information needed in PTRACE_FAULTINFO, or if PTRACE_FAULTINFO is
      missing, because segv-stub will provide the info.
      
      The benefit of the change is, that in case of a non-fixable SIGSEGV, we can
      give user processes a SIGSEGV, instead of possibly looping on pagefault
      handling.
      
      Since handle_segv() sikked arch_fixup() implicitly by passing ip==0 to segv(),
      I changed segv() to call arch_fixup() only, if !is_user.
      Signed-off-by: NBodo Stroesser <bstroesser@fujitsu-siemens.com>
      Signed-off-by: NJeff Dike <jdike@addtoit.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c578455a
  10. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4