1. 08 9月, 2010 1 次提交
  2. 01 9月, 2010 2 次提交
  3. 16 8月, 2010 2 次提交
  4. 15 8月, 2010 1 次提交
  5. 14 8月, 2010 1 次提交
  6. 11 8月, 2010 6 次提交
  7. 10 8月, 2010 1 次提交
    • C
      kmap_atomic: make kunmap_atomic() harder to misuse · 597781f3
      Cesar Eduardo Barros 提交于
      kunmap_atomic() is currently at level -4 on Rusty's "Hard To Misuse"
      list[1] ("Follow common convention and you'll get it wrong"), except in
      some architectures when CONFIG_DEBUG_HIGHMEM is set[2][3].
      
      kunmap() takes a pointer to a struct page; kunmap_atomic(), however, takes
      takes a pointer to within the page itself.  This seems to once in a while
      trip people up (the convention they are following is the one from
      kunmap()).
      
      Make it much harder to misuse, by moving it to level 9 on Rusty's list[4]
      ("The compiler/linker won't let you get it wrong").  This is done by
      refusing to build if the type of its first argument is a pointer to a
      struct page.
      
      The real kunmap_atomic() is renamed to kunmap_atomic_notypecheck()
      (which is what you would call in case for some strange reason calling it
      with a pointer to a struct page is not incorrect in your code).
      
      The previous version of this patch was compile tested on x86-64.
      
      [1] http://ozlabs.org/~rusty/index.cgi/tech/2008-04-01.html
      [2] In these cases, it is at level 5, "Do it right or it will always
          break at runtime."
      [3] At least mips and powerpc look very similar, and sparc also seems to
          share a common ancestor with both; there seems to be quite some
          degree of copy-and-paste coding here. The include/asm/highmem.h file
          for these three archs mention x86 CPUs at its top.
      [4] http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html
      [5] As an aside, could someone tell me why mn10300 uses unsigned long as
          the first parameter of kunmap_atomic() instead of void *?
      Signed-off-by: NCesar Eduardo Barros <cesarb@cesarb.net>
      Cc: Russell King <linux@arm.linux.org.uk> (arch/arm)
      Cc: Ralf Baechle <ralf@linux-mips.org> (arch/mips)
      Cc: David Howells <dhowells@redhat.com> (arch/frv, arch/mn10300)
      Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com> (arch/mn10300)
      Cc: Kyle McMartin <kyle@mcmartin.ca> (arch/parisc)
      Cc: Helge Deller <deller@gmx.de> (arch/parisc)
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> (arch/parisc)
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> (arch/powerpc)
      Cc: Paul Mackerras <paulus@samba.org> (arch/powerpc)
      Cc: "David S. Miller" <davem@davemloft.net> (arch/sparc)
      Cc: Thomas Gleixner <tglx@linutronix.de> (arch/x86)
      Cc: Ingo Molnar <mingo@redhat.com> (arch/x86)
      Cc: "H. Peter Anvin" <hpa@zytor.com> (arch/x86)
      Cc: Arnd Bergmann <arnd@arndb.de> (include/asm-generic)
      Cc: Rusty Russell <rusty@rustcorp.com.au> ("Hard To Misuse" list)
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      597781f3
  8. 05 8月, 2010 4 次提交
  9. 29 7月, 2010 3 次提交
  10. 27 7月, 2010 4 次提交
  11. 26 7月, 2010 1 次提交
    • R
      ARM: fix build warning in asm/elf.h · 392c57a2
      Russell King 提交于
        CC      kernel/elfcore.o
      In file included from include/linux/elf.h:7,
                       from kernel/elfcore.c:1:
      arch/arm/include/asm/elf.h:124: warning: 'struct mm_struct' declared inside parameter list
      arch/arm/include/asm/elf.h:124: warning: its scope is only this definition or declaration, which is probably not what you want
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      392c57a2
  12. 19 7月, 2010 1 次提交
  13. 17 7月, 2010 1 次提交
  14. 16 7月, 2010 3 次提交
  15. 09 7月, 2010 7 次提交
  16. 01 7月, 2010 1 次提交
    • W
      ARM: 6194/1: change definition of cpu_relax() for ARM11MPCore · 534be1d5
      Will Deacon 提交于
      Linux expects that if a CPU modifies a memory location, then that
      modification will eventually become visible to other CPUs in the system.
      
      On an ARM11MPCore processor, loads are prioritised over stores so it is
      possible for a store operation to be postponed if a polling loop immediately
      follows it. If the variable being polled indirectly depends on the outstanding
      store [for example, another CPU may be polling the variable that is pending
      modification] then there is the potential for deadlock if interrupts are
      disabled. This deadlock occurs in the KGDB testsuire when executing on an
      SMP ARM11MPCore configuration.
      
      This patch changes the definition of cpu_relax() to smp_mb() for ARMv6 cores,
      forcing a flushing of the write buffer on SMP systems before the next load
      takes place. If the Kernel is not compiled for SMP support, this will expand
      to a barrier() as before.
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      534be1d5
  17. 15 6月, 2010 1 次提交