1. 02 10月, 2006 1 次提交
  2. 01 10月, 2006 1 次提交
    • M
      [PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks · ef6edc97
      Martin Schwidefsky 提交于
      On systems running with virtual cpus there is optimization potential in
      regard to spinlocks and rw-locks.  If the virtual cpu that has taken a lock
      is known to a cpu that wants to acquire the same lock it is beneficial to
      yield the timeslice of the virtual cpu in favour of the cpu that has the
      lock (directed yield).
      
      With CONFIG_PREEMPT="n" this can be implemented by the architecture without
      common code changes.  Powerpc already does this.
      
      With CONFIG_PREEMPT="y" the lock loops are coded with _raw_spin_trylock,
      _raw_read_trylock and _raw_write_trylock in kernel/spinlock.c.  If the lock
      could not be taken cpu_relax is called.  A directed yield is not possible
      because cpu_relax doesn't know anything about the lock.  To be able to
      yield the lock in favour of the current lock holder variants of cpu_relax
      for spinlocks and rw-locks are needed.  The new _raw_spin_relax,
      _raw_read_relax and _raw_write_relax primitives differ from cpu_relax
      insofar that they have an argument: a pointer to the lock structure.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ef6edc97
  3. 26 9月, 2006 1 次提交
    • D
      [PATCH] Standardize pxx_page macros · 46a82b2d
      Dave McCracken 提交于
      One of the changes necessary for shared page tables is to standardize the
      pxx_page macros.  pte_page and pmd_page have always returned the struct
      page associated with their entry, while pte_page_kernel and pmd_page_kernel
      have returned the kernel virtual address.  pud_page and pgd_page, on the
      other hand, return the kernel virtual address.
      
      Shared page tables needs pud_page and pgd_page to return the actual page
      structures.  There are very few actual users of these functions, so it is
      simple to standardize their usage.
      
      Since this is basic cleanup, I am submitting these changes as a standalone
      patch.  Per Hugh Dickins' comments about it, I am also changing the
      pxx_page_kernel macros to pxx_page_vaddr to clarify their meaning.
      Signed-off-by: NDave McCracken <dmccr@us.ibm.com>
      Cc: Hugh Dickins <hugh@veritas.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      46a82b2d
  4. 24 9月, 2006 1 次提交
  5. 22 9月, 2006 3 次提交
    • V
      POWERPC: overhaul with cpm2_map mechanism · d3465c92
      Vitaly Bordug 提交于
      Incorporating the new way of cpm2 immr access, introduced in the previous
      patch, into CPM2 peripheral devices (fs_enet and cpm_uart). Both ppc and
      powerpc approved working( real actions taken in powerpc only, ppc just
      has a wrapper to keep init stuff consistent).
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      d3465c92
    • V
      POWERPC: Get rid of remapping the whole immr · fc8e50e3
      Vitaly Bordug 提交于
      The stuff below cleans up the code attempting to remap the whole cpm2_immr
      early, as well as places happily assuming that fact. This is more like the 2.4
      legacy stuff, and is at least confusing and unclear now.
      
      To keep the world comfortable, a new mechanism is introduced: before accessing
      specific immr register/register set, one needs to map it, using cpm2_map(<reg>),
      for instance, access to CPM command register will look like
      	volatile cpm_cpm2_t *cp = cpm2_map(im_cpm);
      keeping the code clear, yet without "already defined somewhere" cpm2_immr.
      
      So far, unmapping code is not implemented, but it's not a big deal to add it,
      if the whole idea makes sense.
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      fc8e50e3
    • V
      POWERPC: Move generic cpm2 stuff to powerpc · b0c110b4
      Vitaly Bordug 提交于
      This moves the cpm2 common code and PIC stuff to the powerpc. Most of the files
      were just copied from ppc/, with minor tuning to make it compile, and, subsequently, work.
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      b0c110b4
  6. 21 9月, 2006 2 次提交
  7. 20 9月, 2006 3 次提交
  8. 13 9月, 2006 1 次提交
    • P
      [POWERPC] Fix MMIO ops to provide expected barrier behaviour · f007cacf
      Paul Mackerras 提交于
      This changes the writeX family of functions to have a sync instruction
      before the MMIO store rather than after, because the generally expected
      behaviour is that the device receiving the MMIO store can be guaranteed
      to see the effects of any preceding writes to normal memory.
      
      To preserve ordering between writeX and readX, and to preserve ordering
      between preceding stores and the readX, the readX family of functions
      have had an sync added before the load.
      
      Although writeX followed by spin_unlock is not officially guaranteed
      to keep the writeX inside the spin-locked region unless an mmiowb()
      is used, there are currently drivers that depend on the previous
      behaviour on powerpc, which was that the mmiowb wasn't actually required.
      Therefore we have a per-cpu flag that is set by writeX, cleared by
      __raw_spin_lock and mmiowb, and tested by __raw_spin_unlock.  If it is
      set, __raw_spin_unlock does a sync and clears it.
      
      This changes both 32-bit and 64-bit readX/writeX.  32-bit already has a
      sync in __raw_spin_unlock (since lwsync doesn't exist on 32-bit), and thus
      doesn't need the per-cpu flag.
      
      Tested on G5 (PPC970) and POWER5.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      f007cacf
  9. 20 8月, 2006 1 次提交
  10. 15 7月, 2006 1 次提交
    • S
      [PATCH] remove set_wmb - arch removal · 52393ccc
      Steven Rostedt 提交于
      set_wmb should not be used in the kernel because it just confuses the
      code more and has no benefit.  Since it is not currently used in the
      kernel this patch removes it so that new code does not include it.
      
      All archs define set_wmb(var, value) to do { var = value; wmb(); }
      while(0) except ia64 and sparc which use a mb() instead.  But this is
      still moot since it is not used anyway.
      
      Hasn't been tested on any archs but x86 and x86_64 (and only compiled
      tested)
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      52393ccc
  11. 03 7月, 2006 1 次提交
  12. 01 7月, 2006 1 次提交
  13. 28 6月, 2006 1 次提交
  14. 27 6月, 2006 1 次提交
  15. 26 6月, 2006 1 次提交
  16. 15 6月, 2006 1 次提交
  17. 11 6月, 2006 1 次提交
  18. 09 5月, 2006 1 次提交
  19. 03 5月, 2006 1 次提交
  20. 28 4月, 2006 2 次提交
  21. 26 4月, 2006 1 次提交
  22. 05 4月, 2006 1 次提交
  23. 29 3月, 2006 1 次提交
  24. 28 3月, 2006 3 次提交
  25. 27 3月, 2006 2 次提交
  26. 24 2月, 2006 1 次提交
    • P
      powerpc: Implement accurate task and CPU time accounting · c6622f63
      Paul Mackerras 提交于
      This implements accurate task and cpu time accounting for 64-bit
      powerpc kernels.  Instead of accounting a whole jiffy of time to a
      task on a timer interrupt because that task happened to be running at
      the time, we now account time in units of timebase ticks according to
      the actual time spent by the task in user mode and kernel mode.  We
      also count the time spent processing hardware and software interrupts
      accurately.  This is conditional on CONFIG_VIRT_CPU_ACCOUNTING.  If
      that is not set, we do tick-based approximate accounting as before.
      
      To get this accurate information, we read either the PURR (processor
      utilization of resources register) on POWER5 machines, or the timebase
      on other machines on
      
      * each entry to the kernel from usermode
      * each exit to usermode
      * transitions between process context, hard irq context and soft irq
        context in kernel mode
      * context switches.
      
      On POWER5 systems with shared-processor logical partitioning we also
      read both the PURR and the timebase at each timer interrupt and
      context switch in order to determine how much time has been taken by
      the hypervisor to run other partitions ("steal" time).  Unfortunately,
      since we need values of the PURR on both threads at the same time to
      accurately calculate the steal time, and since we can only calculate
      steal time on a per-core basis, the apportioning of the steal time
      between idle time (time which we ceded to the hypervisor in the idle
      loop) and actual stolen time is somewhat approximate at the moment.
      
      This is all based quite heavily on what s390 does, and it uses the
      generic interfaces that were added by the s390 developers,
      i.e. account_system_time(), account_user_time(), etc.
      
      This patch doesn't add any new interfaces between the kernel and
      userspace, and doesn't change the units in which time is reported to
      userspace by things such as /proc/stat, /proc/<pid>/stat, getrusage(),
      times(), etc.  Internally the various task and cpu times are stored in
      timebase units, but they are converted to USER_HZ units (1/100th of a
      second) when reported to userspace.  Some precision is therefore lost
      but there should not be any accumulating error, since the internal
      accumulation is at full precision.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      c6622f63
  27. 20 2月, 2006 1 次提交
    • O
      [PATCH] powerpc: remove duplicate exports · 0728a2f9
      Olaf Hering 提交于
      A few symbols are exported twice, remove them from ppc_ksyms.c
      Remove users of sys_ctrler in arch/ppc/
      
      WARNING: vmlinux: duplicate symbol '__delay' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol '__up' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol '__down' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol '__down_interruptible' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'sys_ctrler' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strncat' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strncmp' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strchr' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strrchr' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strnlen' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strpbrk' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'memscan' previous definition was in vmlinux
      WARNING: vmlinux: duplicate symbol 'strstr' previous definition was in vmlinux
      Signed-off-by: NOlaf Hering <olh@suse.de>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      0728a2f9
  28. 10 2月, 2006 2 次提交
  29. 07 2月, 2006 2 次提交