1. 27 3月, 2009 3 次提交
  2. 10 4月, 2008 1 次提交
    • P
      [IA64] fix getpid and set_tid_address fast system calls for pid namespaces · 96ded9da
      Pavel Emelyanov 提交于
      The sys_getpid() and sys_set_tid_address() behavior changed from
      
      	return current->tgid
      
      to
      
      	struct pid *pid;
      	pid = current->pids[PIDTYPE_PID].pid;
      	return pid->numbers[pid->level].nr;
      
      But the fast system calls on ia64 still operate the old way.  Patch them
      appropriately to let ia64 work with pid namespaces.  Besides, this is one more
      step in deprecating of pid and tgid on task_struct.
      
      The fsys_getppid() is to be patched as well, but its logic is much
      more complex now, so I will make it later.
      
      One thing I'm not 100% sure is the trick with the IA64_UPID_SHIFT.  On order
      to access the pid->level's element of an array I have to perform the following
      calculations
      
      	pid + sizeof(struct upid) * pid->level
      
      The problem is that ia64 can only multiply float point registers, while all
      the offsets I have in code are in rXX ones.  Fortunately, the sizeof(struct
      upid) is 32 bytes on ia64 (and is very unlikely to ever change), so the
      calculations get simpler:
      
      	pid + pid->level << 5
      
      So, I introduce the IA64_UPID_SHIFT and use the shl instruction.  I also
      looked at how gcc compiles the similar place and found that it makes it with
      shift as well.  Is this OK to do so?
      
      Tested with ski emulator with 2.6.24 kernel, but fits 2.6.25-rc4 and
      2.6.25-rc4-mm1 as well.
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Cc: David Mosberger-Tang <davidm@hpl.hp.com>
      Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: Amy Griffis <amy.griffis@hp.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      96ded9da
  3. 11 3月, 2008 1 次提交
    • H
      [IA64] cleanup and improve fsys_gettimeofday · 4fe01c68
      Hidetoshi Seto 提交于
      This patch does:
      
       - Remove outdated comments (which someday I marked with "?").
       - Reassemble instructions to fit them in fewer bundles.
       - If McKinley Errata 9 workaround is not needed, the workaround
         bundles will be patched out with NOPs. However it also not
         needed to have a totally NOP bundle (nop * 3) before branch.
      
      As a result, this makes the code path 3 (or 2) bundles shorter
      (and remove 1 unnecessary stop bit). It seems to be 1% faster.
      
      (10sec loop test, with nojitter @ Madison 1.5GHz x 4)
      Before:
       CPU  0:  0.14 (usecs) (0 errors / 69598875 iterations)
       CPU  1:  0.14 (usecs) (0 errors / 69630721 iterations)
       CPU  2:  0.14 (usecs) (0 errors / 69607850 iterations)
       CPU  3:  0.14 (usecs) (0 errors / 69619832 iterations)
      
      After:
       CPU  0:  0.14 (usecs) (0 errors / 70257728 iterations)
       CPU  1:  0.14 (usecs) (0 errors / 70309498 iterations)
       CPU  2:  0.14 (usecs) (0 errors / 70280639 iterations)
       CPU  3:  0.14 (usecs) (0 errors / 70260682 iterations)
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      4fe01c68
  4. 21 2月, 2008 1 次提交
    • H
      [IA64] VIRT_CPU_ACCOUNTING (accurate cpu time accounting) · b64f34cd
      Hidetoshi Seto 提交于
      This patch implements VIRT_CPU_ACCOUNTING for ia64,
      which enable us to use more accurate cpu time accounting.
      
      The VIRT_CPU_ACCOUNTING is an item of kernel config, which s390
      and powerpc arch have.  By turning this config on, these archs
      change the mechanism of cpu time accounting from tick-sampling
      based one to state-transition based one.
      
      The state-transition based accounting is done by checking time
      (cycle counter in processor) at every state-transition point,
      such as entrance/exit of kernel, interrupt, softirq etc.
      The difference between point to point is the actual time consumed
      during in the state. There is no doubt about that this value is
      more accurate than that of tick-sampling based accounting.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      b64f34cd
  5. 21 7月, 2007 1 次提交
  6. 14 7月, 2007 1 次提交
    • H
      [IA64] ar.itc access must really be after xtime_lock.sequence has been read · 829a9996
      Hidetoshi Seto 提交于
      The ".acq" semantics of the load only apply w.r.t. other data access.
      Reading the clock (ar.itc) isn't a data access so strange things can
      happen here.  Specifically the read of ar.itc can be launched as soon
      as the read of xtime_lock.sequence is ISSUED.  Since this may cache
      miss, and that might cause a thread switch, and there may be cache
      contention for the line containing xtime_lock, it may be a long time
      before the actual value is returned, so the ar.itc value may be very
      stale.
      
      Move the consumption of r28 up before the read of ar.itc to make sure
      that we really have got the current value of xtime_lock.sequence
      before look at ar.itc.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      829a9996
  7. 08 3月, 2007 1 次提交
    • F
      [IA64] fsys_getcpu for IA64 · 3bc207d2
      Fenghua Yu 提交于
      On 1.6GHz Montectio Tiger4, the following performance data is measured with
      kernel built with defconfig which has NUMA configured:
      
      Fastest sys_getcpu: 502 itc counts.
      Fastest fsys_getcpu: 28 itc counts.
      
      fsys_getcpu performance is largly impacted by whether data (node_to_cpu_map
      etc) is in cache. It can take fsys_getcpu up to ~150 itc counts in cold
      cache case.
      Signed-off-by: NFenghua Yu <fenghua.yu@intel.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      3bc207d2
  8. 01 3月, 2006 1 次提交
  9. 07 2月, 2006 1 次提交
  10. 14 1月, 2006 1 次提交
  11. 10 9月, 2005 1 次提交
  12. 10 6月, 2005 1 次提交
    • C
      [IA64] Fix race condition in the rt_sigprocmask fastcall · a2a64769
      Christoph Lameter 提交于
      current->blocked will be set to the value of current->thread_info->flags if the
      cmpxchg to update thread_info->flags fails. For performance reasons the store into
      current->blocked was placed in the cmpxchg loop. However, the cmpxchg overwrites the
      register holding the value to be stored. In the rare case of a retry the value of
      thread_info->flags will be written into current->blocked.
      
      The fix is to use another register so that the register containing the current->blocked
      value is not overwritten.
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      a2a64769
  13. 06 5月, 2005 1 次提交
  14. 04 5月, 2005 1 次提交
    • D
      [IA64] fix ia64 syscall auditing · 446b8831
      David Woodhouse 提交于
      Attached is a patch against David's audit.17 kernel that adds checks
      for the TIF_SYSCALL_AUDIT thread flag to the ia64 system call and
      signal handling code paths.  The patch enables auditing of system
      calls set up via fsys_bubble_down, as well as ensuring that
      audit_syscall_exit() is called on return from sigreturn.
      
      Neglecting to check for TIF_SYSCALL_AUDIT at these points results in
      incorrect information in audit_context, causing frequent system panics
      when system call auditing is enabled on an ia64 system.
      
      I have tested this patch and have seen no problems with it.
      
      [Original patch from Amy Griffis ported to current kernel by David Woodhouse]
      
      From: Amy Griffis <amy.griffis@hp.com>
      From: David Woodhouse <dwmw2@infradead.org>
      Signed-off-by: NChris Wright <chrisw@osdl.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      446b8831
  15. 29 4月, 2005 1 次提交
    • A
      [PATCH] fix ia64 syscall auditing · 3ac3ed55
      Amy Griffis 提交于
      Attached is a patch against David's audit.17 kernel that adds checks
      for the TIF_SYSCALL_AUDIT thread flag to the ia64 system call and
      signal handling code paths.The patch enables auditing of system
      calls set up via fsys_bubble_down, as well as ensuring that
      audit_syscall_exit() is called on return from sigreturn.
      
      Neglecting to check for TIF_SYSCALL_AUDIT at these points results in
      incorrect information in audit_context, causing frequent system panics
      when system call auditing is enabled on an ia64 system.
      Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
      3ac3ed55
  16. 28 4月, 2005 2 次提交
    • D
      [IA64] Annotate fsys_bubble_down() with McKinley dispatch info. · fbf7192b
      David Mosberger-Tang 提交于
      This patch changes comments & formatting only.  There is no code
      change.
      Signed-off-by: NDavid Mosberger-Tang <davidm@hpl.hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      fbf7192b
    • D
      [IA64] Reschedule fsys_bubble_down(). · 1ba7be7d
      David Mosberger-Tang 提交于
      Improvements come from eliminating srlz.i, not scheduling AR/CR-reads
      too early (while there are others still pending), scheduling the
      backing-store switch as well as possible, splitting the BBB bundle
      into a MIB/MBB pair.
      
      Why is it safe to eliminate the srlz.i?  Observe
      that we used to clear bits ~PSR_PRESERVED_BITS in PSR.L.  Since
      PSR_PRESERVED_BITS==PSR.{UP,MFL,MFH,PK,DT,PP,SP,RT,IC}, we
      ended up clearing PSR.{BE,AC,I,DFL,DFH,DI,DB,SI,TB}.  However,
      
       PSR.BE : already is turned off in __kernel_syscall_via_epc()
       PSR.AC : don't care (kernel normally turns PSR.AC on)
       PSR.I  : already turned off by the time fsys_bubble_down gets invoked
       PSR.DFL: always 0 (kernel never turns it on)
       PSR.DFH: don't care --- kernel never touches f32-f127 on its own
      	  initiative
       PSR.DI : always 0 (kernel never turns it on)
       PSR.SI : always 0 (kernel never turns it on)
       PSR.DB : don't care --- kernel never enables kernel-level breakpoints
       PSR.TB : must be 0 already; if it wasn't zero on entry to
      	  __kernel_syscall_via_epc, the branch to fsys_bubble_down
      	  will trigger a taken branch; the taken-trap-handler then
      	  converts the syscall into a break-based system-call.
      
      In other words: all the bits we're clearying are either 0 already or
      are don't cares!  Thus, we don't have to write PSR.L at all and we
      don't have to do a srlz.i either.
      
      Good for another ~20 cycle improvement for EPC-based heavy-weight
      syscalls.
      Signed-off-by: NDavid Mosberger-Tang <davidm@hpl.hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      1ba7be7d
  17. 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