1. 10 9月, 2009 2 次提交
  2. 09 9月, 2009 1 次提交
  3. 04 9月, 2009 1 次提交
  4. 26 8月, 2009 1 次提交
    • D
      sparc64: Validate linear D-TLB misses. · d8ed1d43
      David S. Miller 提交于
      When page alloc debugging is not enabled, we essentially accept any
      virtual address for linear kernel TLB misses.  But with kgdb, kernel
      address probing, and other facilities we can try to access arbitrary
      crap.
      
      So, make sure the address we miss on will translate to physical memory
      that actually exists.
      
      In order to make this work we have to embed the valid address bitmap
      into the kernel image.  And in order to make that less expensive we
      make an adjustment, in that the max physical memory address is
      decreased to "1 << 41", even on the chips that support a 42-bit
      physical address space.  We can do this because bit 41 indicates
      "I/O space" and thus covers non-memory ranges.
      
      The result of this is that:
      
      1) kpte_linear_bitmap shrinks from 2K to 1K in size
      
      2) we need 64K more for the valid address bitmap
      
      We can't let the valid address bitmap be dynamically allocated
      once we start using it to validate TLB misses, otherwise we have
      crazy issues to deal with wrt. recursive TLB misses and such.
      
      If we're in a TLB miss it could be the deepest trap level that's legal
      inside of the cpu.  So if we TLB miss referencing the bitmap, the cpu
      will be out of trap levels and enter RED state.
      
      To guard against out-of-range accesses to the bitmap, we have to check
      to make sure no bits in the physical address above bit 40 are set.  We
      could export and use last_valid_pfn for this check, but that's just an
      unnecessary extra memory reference.
      
      On the plus side of all this, since we load all of these translations
      into the special 4MB mapping TSB, and we check the TSB first for TLB
      misses, there should be absolutely no real cost for these new checks
      in the TLB miss path.
      
      Reported-by: heyongli@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d8ed1d43
  5. 18 8月, 2009 3 次提交
  6. 17 8月, 2009 2 次提交
  7. 28 7月, 2009 1 次提交
    • B
      mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() · 9e1b32ca
      Benjamin Herrenschmidt 提交于
      mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
      
      Upcoming paches to support the new 64-bit "BookE" powerpc architecture
      will need to have the virtual address corresponding to PTE page when
      freeing it, due to the way the HW table walker works.
      
      Basically, the TLB can be loaded with "large" pages that cover the whole
      virtual space (well, sort-of, half of it actually) represented by a PTE
      page, and which contain an "indirect" bit indicating that this TLB entry
      RPN points to an array of PTEs from which the TLB can then create direct
      entries. Thus, in order to invalidate those when PTE pages are deleted,
      we need the virtual address to pass to tlbilx or tlbivax instructions.
      
      The old trick of sticking it somewhere in the PTE page struct page sucks
      too much, the address is almost readily available in all call sites and
      almost everybody implemets these as macros, so we may as well add the
      argument everywhere. I added it to the pmd and pud variants for consistency.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Acked-by: David Howells <dhowells@redhat.com> [MN10300 & FRV]
      Acked-by: NNick Piggin <npiggin@suse.de>
      Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com> [s390]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9e1b32ca
  8. 11 7月, 2009 1 次提交
  9. 18 6月, 2009 1 次提交
  10. 17 6月, 2009 1 次提交
    • R
      kmap_types: make most arches use generic header file · e4c9dd0f
      Randy Dunlap 提交于
      Convert most arches to use asm-generic/kmap_types.h.
      
      Move the KM_FENCE_ macro additions into asm-generic/kmap_types.h,
      controlled by __WITH_KM_FENCE from each arch's kmap_types.h file.
      
      Would be nice to be able to add custom KM_types per arch, but I don't yet
      see a nice, clean way to do that.
      
      Built on x86_64, i386, mips, sparc, alpha(tonyb), powerpc(tonyb), and
      68k(tonyb).
      
      Note: avr32 should be able to remove KM_PTE2 (since it's not used) and
      then just use the generic kmap_types.h file.  Get avr32 maintainer
      approval.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Cc: <linux-arch@vger.kernel.org>
      Acked-by: NMike Frysinger <vapier@gentoo.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Bryan Wu <cooloney@kernel.org>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Hirokazu Takata <takata@linux-m32r.org>
      Cc: "Luck Tony" <tony.luck@intel.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e4c9dd0f
  11. 16 6月, 2009 14 次提交
  12. 12 6月, 2009 5 次提交
    • R
      module: trim exception table on init free. · ad6561df
      Rusty Russell 提交于
      It's theoretically possible that there are exception table entries
      which point into the (freed) init text of modules.  These could cause
      future problems if other modules get loaded into that memory and cause
      an exception as we'd see the wrong fixup.  The only case I know of is
      kvm-intel.ko (when CONFIG_CC_OPTIMIZE_FOR_SIZE=n).
      
      Amerigo fixed this long-standing FIXME in the x86 version, but this
      patch is more general.
      
      This implements trim_init_extable(); most archs are simple since they
      use the standard lib/extable.c sort code.  Alpha and IA64 use relative
      addresses in their fixups, so thier trimming is a slight variation.
      
      Sparc32 is unique; it doesn't seem to define ARCH_HAS_SORT_EXTABLE,
      yet it defines its own sort_extable() which overrides the one in lib.
      It doesn't sort, so we have to mark deleted entries instead of
      actually trimming them.
      Inspired-by: NAmerigo Wang <amwang@redhat.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Cc: linux-alpha@vger.kernel.org
      Cc: sparclinux@vger.kernel.org
      Cc: linux-ia64@vger.kernel.org
      ad6561df
    • A
      asm-generic: rename page.h and uaccess.h · 5b17e1cd
      Arnd Bergmann 提交于
      The current asm-generic/page.h only contains the get_order
      function, and asm-generic/uaccess.h only implements
      unaligned accesses. This renames the file to getorder.h
      and uaccess-unaligned.h to make room for new page.h
      and uaccess.h file that will be usable by all simple
      (e.g. nommu) architectures.
      Signed-off-by: NRemis Lima Baima <remis.developer@googlemail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      5b17e1cd
    • A
      asm-generic: rename atomic.h to atomic-long.h · 72099ed2
      Arnd Bergmann 提交于
      The existing asm-generic/atomic.h only defines the
      atomic_long type. This renames it to atomic-long.h
      so we have a place to add a truly generic atomic.h
      that can be used on all non-SMP systems.
      Signed-off-by: NRemis Lima Baima <remis.developer@googlemail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      72099ed2
    • A
      asm-generic: introduce asm/bitsperlong.h · c31ae4bb
      Arnd Bergmann 提交于
      This provides a reliable way for asm-generic/types.h and other
      files to find out if it is running on a 32 or 64 bit platform.
      
      We cannot use CONFIG_64BIT for this in headers that are included
      from user space because CONFIG symbols are not available there.
      We also cannot do it inside of asm/types.h because some headers
      need the word size but cannot include types.h.
      
      The solution is to introduce a new header <asm/bitsperlong.h>
      that defines both __BITS_PER_LONG for user space and
      BITS_PER_LONG for usage in the kernel. The asm-generic
      version falls back to 32 bit unless the architecture overrides
      it, which I did for all 64 bit platforms.
      Signed-off-by: NRemis Lima Baima <remis.developer@googlemail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      c31ae4bb
    • A
      asm-generic: rename termios.h, signal.h and mman.h · 63b852a6
      Arnd Bergmann 提交于
      The existing asm-generic versions are incomplete and included
      by some architectures. New architectures should be able
      to use a generic version, so rename the existing files and
      change all users, which lets us add the new files.
      Signed-off-by: NRemis Lima Baima <remis.developer@googlemail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      63b852a6
  13. 07 6月, 2009 1 次提交
  14. 08 5月, 2009 1 次提交
  15. 15 4月, 2009 1 次提交
  16. 14 4月, 2009 1 次提交
  17. 09 4月, 2009 1 次提交
  18. 08 4月, 2009 1 次提交
  19. 03 4月, 2009 1 次提交