1. 16 Dec, 2005 3 commits
    • Jack Steiner's avatar
      [IA64-SGI] Missed TLB flush · d74700e6
      Jack Steiner authored
      I see why the problem exists only on SN. SN uses a different hardware
      mechanism to purge TLB entries across nodes.
      
      It looks like there is a bug in the SN TLB flushing code. During context switch,
      kernel threads inherit the mm of the task that was previously running on the
      cpu. This confuses the code in sn2_global_tlb_purge().
      
      The result is a missed TLB purge for the task that owns the "borrowed" mm.
      
      (I hit the problem running heavy stress where kswapd was purging code pages of
      a user task that woke kswapd. The user task took a SIGILL fault trying to
      execute code in the page that had been ripped out from underneath it).
      Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      d74700e6
    • Jes Sorensen's avatar
      [IA64] uncached ref count leak · 3bd7f017
      Jes Sorensen authored
      Use raw_smp_processor_id() instead of get_cpu() as we don't need the
      extra features of get_cpu().
      Signed-off-by: default avatarJes Sorensen <jes@trained-monkey.org>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      3bd7f017
    • John Hawkes's avatar
      [IA64] disable preemption in udelay() · f5899b5d
      John Hawkes authored
      The udelay() inline for ia64 uses the ITC.  If CONFIG_PREEMPT is enabled
      and the platform has unsynchronized ITCs and the calling task migrates
      to another CPU while doing the udelay loop, then the effective delay may
      be too short or very, very long.
      
      This patch disables preemption around 100 usec chunks of the overall
      desired udelay time.  This minimizes preemption-holdoffs.
      
      udelay() is now too big to be inline, move it out of line and export it.
      Signed-off-by: default avatarJohn Hawkes <hawkes@sgi.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      f5899b5d
  2. 15 Dec, 2005 37 commits