1. 29 6月, 2005 1 次提交
    • D
      [IA64] Speed up lfetch.fault [NULL] · 458f9355
      David Mosberger-Tang 提交于
      This patch greatly speeds up the handling of lfetch.fault instructions
      which result in NaT consumption. Due to the NaT-page mapped at address
      0, this is guaranteed to happen when lfetch.fault'ing a NULL pointer.
      With this patch in place, we can even define prefetch()/prefetchw() as
      lfetch.fault without significant performance degradation.  More
      importantly, it allows compilers to be more aggressive with using
      lfetch.fault on pointers that might be NULL.
      Signed-off-by: NDavid Mosberger-Tang <davidm@hpl.hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      458f9355
  2. 22 6月, 2005 1 次提交
    • K
      [IA64] fix nested_dtlb_miss handler for hugetlb address · 0393eed5
      Ken Chen 提交于
      The nested_dtlb_miss handler currently does not handle fault from
      hugetlb address correctly.  It walks the page table assuming PAGE_SIZE.
      Thus when taking a fault triggered from hugetlb address, it would not
      calculate the pgd/pmd/pte address correctly and thus result an incorrect
      invocation of ia64_do_page_fault().  In there, kernel will signal SIGBUS
      and application dies (The faulting address is perfectly legal and we
      have a valid pte for the corresponding user hugetlb address as well).
      This patch fix the described kernel bug.  Since nested_dtlb_miss is a
      rare event and a slow path anyway, I'm making the change without #ifdef
      CONFIG_HUGETLB_PAGE for code readability.  Tony, please apply.
      Signed-off-by: NKen Chen <kenneth.w.chen@intel.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      0393eed5
  3. 28 4月, 2005 2 次提交
    • D
      [IA64] Reschedule break_fault() for better performance. · f8fa5448
      David Mosberger-Tang 提交于
      This patch reorganizes break_fault() to optimistically assume that a
      system-call is being performed from user-space (which is almost always
      the case).  If it turns out that (a) we're not being called due to a
      system call or (b) we're being called from within the kernel, we fixup
      the no-longer-valid assumptions in non_syscall() and .break_fixup(),
      respectively.
      
      With this approach, there are 3 major phases:
      
       - Phase 1: Read various control & application registers, in
      	    particular the current task pointer from AR.K6.
       - Phase 2: Do all memory loads (load system-call entry,
      	    load current_thread_info()->flags, prefetch
      	    kernel register-backing store) and switch
      	    to kernel register-stack.
       - Phase 3: Call ia64_syscall_setup() and invoke
      	    syscall-handler.
      
      Good for 26-30 cycles of improvement on break-based syscall-path.
      Signed-off-by: NDavid Mosberger-Tang <davidm@hpl.hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      f8fa5448
    • D
      [IA64] In syscall-entry, use st8 instead of stf8 to clear pt_regs.r8 · 060561ff
      David Mosberger-Tang 提交于
      Using stf8 seemed like a clever idea at the time, but stf8 forces
      the cache-line to be invalidated in the L1D (if it happens to be
      there already).  This patch eliminates a guaranteed L1D cache-miss
      and, by itself, is good for a 1-2 cycle improvement for heavy-weight
      syscalls.
      Signed-off-by: NDavid Mosberger-Tang <davidm@hpl.hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      060561ff
  4. 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