1. 20 Jun, 2008 4 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 · 55017923
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6:
        Blackfin Serial Driver: Use timer to poll CTS PIN instead of workqueue.
        Blackfin arch: fix typo error in bf548 serial header file
      55017923
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · b4eea67a
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        ahci: sis can't do PMP
        ata_piix: add TECRA M4 to broken suspend list
        LIBATA: Add HAVE_PATA_PLATFORM to select PATA_PLATFORM driver
        sata_mv: warn on PIO with multiple DRQs
        sata_mv: enable async_notify for 60x1 Rev.C0 and higher
        libata: don't check whether to use DMA or not for no data commands
        ahci: jmb361 has only one port
      b4eea67a
    • Linus Torvalds's avatar
      [watchdog] hpwdt: fix use of inline assembly · 1f6ef234
      Linus Torvalds authored
      The inline assembly in drivers/watchdog/hpwdt.c was incredibly broken,
      and included all the function prologue and epilogue stuff, even though
      it was itself then inside a C function where the compiler would add its
      own prologue and epilogue on top of it all.
      
      This then just _happened_ to work if you had exactly the right compiler
      version and exactly the right compiler flags, so that gcc just happened
      to not create any prologue at all (the gcc-generated epilogue wouldn't
      matter, since it would never be reached).
      
      But the more proper way to fix it is to simply not do this.  Move the
      inline asm to the top level, with no surrounding function at all (the
      better alternative would be to remove the prologue and make it actually
      use proper description of the arguments to the inline asm, but that's a
      bigger change than the one I'm willing to make right now).
      Tested-by: default avatarS.Çağlar Onur <caglar@pardus.org.tr>
      Acked-by: default avatarThomas Mingarelli <Thomas.Mingarelli@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1f6ef234
    • Linus Torvalds's avatar
      Reinstate ZERO_PAGE optimization in 'get_user_pages()' and fix XIP · 89f5b7da
      Linus Torvalds authored
      KAMEZAWA Hiroyuki and Oleg Nesterov point out that since the commit
      557ed1fa ("remove ZERO_PAGE") removed
      the ZERO_PAGE from the VM mappings, any users of get_user_pages() will
      generally now populate the VM with real empty pages needlessly.
      
      We used to get the ZERO_PAGE when we did the "handle_mm_fault()", but
      since fault handling no longer uses ZERO_PAGE for new anonymous pages,
      we now need to handle that special case in follow_page() instead.
      
      In particular, the removal of ZERO_PAGE effectively removed the core
      file writing optimization where we would skip writing pages that had not
      been populated at all, and increased memory pressure a lot by allocating
      all those useless newly zeroed pages.
      
      This reinstates the optimization by making the unmapped PTE case the
      same as for a non-existent page table, which already did this correctly.
      
      While at it, this also fixes the XIP case for follow_page(), where the
      caller could not differentiate between the case of a page that simply
      could not be used (because it had no "struct page" associated with it)
      and a page that just wasn't mapped.
      
      We do that by simply returning an error pointer for pages that could not
      be turned into a "struct page *".  The error is arbitrarily picked to be
      EFAULT, since that was what get_user_pages() already used for the
      equivalent IO-mapped page case.
      
      [ Also removed an impossible test for pte_offset_map_lock() failing:
        that's not how that function works ]
      Acked-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Acked-by: default avatarNick Piggin <npiggin@suse.de>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Hugh Dickins <hugh@veritas.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Roland McGrath <roland@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      89f5b7da
  2. 19 Jun, 2008 16 commits
  3. 18 Jun, 2008 20 commits