1. 27 Nov, 2008 4 commits
    • Russell King's avatar
      [ARM] copypage: provide our own copy_user_highpage() · 063b0a42
      Russell King authored
      We used to override the copy_user_page() function.  However, this
      is not only inefficient, it also causes additional complexity for
      highmem support, since we convert from a struct page to a kernel
      direct mapped address and back to a struct page again.
      
      Moreover, with highmem support, we end up pointlessly setting up
      kmap entries for pages which we're going to remap.  So, push the
      kmapping down into the copypage implementation files where it's
      required.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      063b0a42
    • Russell King's avatar
      d73e60b7
    • Russell King's avatar
      Allow architectures to override copy_user_highpage() · 487ff320
      Russell King authored
      With aliasing VIPT cache support, the ARM implementation of
      clear_user_page() and copy_user_page() sets up a temporary kernel space
      mapping such that we have the same cache colour as the userspace page.
      This avoids having to consider any userspace aliases from this operation.
      
      However, when highmem is enabled, kmap_atomic() have to setup mappings.
      The copy_user_highpage() and clear_user_highpage() call these functions
      before delegating the copies to copy_user_page() and clear_user_page().
      
      The effect of this is that each of the *_user_highpage() functions setup
      their own kmap mapping, followed by the *_user_page() functions setting
      up another mapping.  This is rather wasteful.
      
      Thankfully, copy_user_highpage() can be overriden by architectures by
      defining __HAVE_ARCH_COPY_USER_HIGHPAGE.  However, replacement of
      clear_user_highpage() is more difficult because its inline definition
      is not conditional.  It seems that you're expected to define
      __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE and provide a replacement
      __alloc_zeroed_user_highpage() implementation instead.
      
      The allocation itself is fine, so we don't want to override that.  What
      we really want to do is to override clear_user_highpage() with our own
      version which doesn't kmap_atomic() unnecessarily.
      
      Other VIPT architectures (PARISC and SH) would also like to override
      this function as well.
      Acked-by: default avatarHugh Dickins <hugh@veritas.com>
      Acked-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
      Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      487ff320
    • Russell King's avatar
  2. 26 Nov, 2008 1 commit
  3. 25 Nov, 2008 2 commits
  4. 23 Nov, 2008 1 commit
  5. 22 Nov, 2008 2 commits
  6. 21 Nov, 2008 1 commit
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · ed313489
      Linus Torvalds authored
      * master.kernel.org:/home/rmk/linux-2.6-arm:
        [ARM] 5330/1: mach-pxa: Fixup reset for systems using reboot=cold or other strings
        [ARM] pxa: fix incorrect PCMCIA PSKTSEL pin configuration for spitz
        [ARM] pxa: fix I2C controller device being registered twice on Akita
        pxafb: only initialize the smart panel thread when dealing with a smartpanel
        pxafb: introduce LCD_TYPE_MASK and use it.
      ed313489
  7. 20 Nov, 2008 29 commits