1. 17 4月, 2008 34 次提交
  2. 16 4月, 2008 1 次提交
  3. 11 4月, 2008 2 次提交
    • R
      asmlinkage_protect replaces prevent_tail_call · 54a01510
      Roland McGrath 提交于
      The prevent_tail_call() macro works around the problem of the compiler
      clobbering argument words on the stack, which for asmlinkage functions
      is the caller's (user's) struct pt_regs.  The tail/sibling-call
      optimization is not the only way that the compiler can decide to use
      stack argument words as scratch space, which we have to prevent.
      Other optimizations can do it too.
      
      Until we have new compiler support to make "asmlinkage" binding on the
      compiler's own use of the stack argument frame, we have work around all
      the manifestations of this issue that crop up.
      
      More cases seem to be prevented by also keeping the incoming argument
      variables live at the end of the function.  This makes their original
      stack slots attractive places to leave those variables, so the compiler
      tends not clobber them for something else.  It's still no guarantee, but
      it handles some observed cases that prevent_tail_call() did not.
      Signed-off-by: NRoland McGrath <roland@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      54a01510
    • V
      x86: Simplify cpu_idle_wait · 783e391b
      Venki Pallipadi 提交于
      This patch also resolves hangs on boot:
      	http://lkml.org/lkml/2008/2/23/263
      	http://bugzilla.kernel.org/show_bug.cgi?id=10093
      
      The bug was causing once-in-few-reboots 10-15 sec wait during boot on
      certain laptops.
      
      Earlier commit 40d6a146 added
      smp_call_function in cpu_idle_wait() to kick cpus that are in tickless
      idle.  Looking at cpu_idle_wait code at that time, code seemed to be
      over-engineered for a case which is rarely used (while changing idle
      handler).
      
      Below is a simplified version of cpu_idle_wait, which just makes a dummy
      smp_call_function to all cpus, to make them come out of old idle handler
      and start using the new idle handler.  It eliminates code in the idle
      loop to handle cpu_idle_wait.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      783e391b
  4. 10 4月, 2008 1 次提交
    • S
      pop previous section in alternative.c · f4be31ec
      Steven Rostedt 提交于
      gcc expects all toplevel assembly to return to the original section type.
      The code in alteranative.c does not do this. This caused some strange bugs
      in sched-devel where code would end up in the .rodata section and when
      the kernel sets the NX bit on all .rodata, the kernel would crash when
      executing this code.
      
      This patch adds a .previous marker to return the code back to the
      original section.
      
      Credit goes to Andrew Pinski for telling me it wasn't a gcc bug but a
      bug in the toplevel asm code in the kernel.  ;-)
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f4be31ec
  5. 08 4月, 2008 2 次提交