1. 16 Sep, 2009 16 commits
    • Andi Kleen's avatar
      HWPOISON: The high level memory error handler in the VM v7 · 6a46079c
      Andi Kleen authored
      Add the high level memory handler that poisons pages
      that got corrupted by hardware (typically by a two bit flip in a DIMM
      or a cache) on the Linux level. The goal is to prevent everyone
      from accessing these pages in the future.
      
      This done at the VM level by marking a page hwpoisoned
      and doing the appropriate action based on the type of page
      it is.
      
      The code that does this is portable and lives in mm/memory-failure.c
      
      To quote the overview comment:
      
      High level machine check handler. Handles pages reported by the
      hardware as being corrupted usually due to a 2bit ECC memory or cache
      failure.
      
      This focuses on pages detected as corrupted in the background.
      When the current CPU tries to consume corruption the currently
      running process can just be killed directly instead. This implies
      that if the error cannot be handled for some reason it's safe to
      just ignore it because no corruption has been consumed yet. Instead
      when that happens another machine check will happen.
      
      Handles page cache pages in various states. The tricky part
      here is that we can access any page asynchronous to other VM
      users, because memory failures could happen anytime and anywhere,
      possibly violating some of their assumptions. This is why this code
      has to be extremely careful. Generally it tries to use normal locking
      rules, as in get the standard locks, even if that means the
      error handling takes potentially a long time.
      
      Some of the operations here are somewhat inefficient and have non
      linear algorithmic complexity, because the data structures have not
      been optimized for this case. This is in particular the case
      for the mapping from a vma to a process. Since this case is expected
      to be rare we hope we can get away with this.
      
      There are in principle two strategies to kill processes on poison:
      - just unmap the data and wait for an actual reference before
      killing
      - kill as soon as corruption is detected.
      Both have advantages and disadvantages and should be used
      in different situations. Right now both are implemented and can
      be switched with a new sysctl vm.memory_failure_early_kill
      The default is early kill.
      
      The patch does some rmap data structure walking on its own to collect
      processes to kill. This is unusual because normally all rmap data structure
      knowledge is in rmap.c only. I put it here for now to keep
      everything together and rmap knowledge has been seeping out anyways
      
      Includes contributions from Johannes Weiner, Chris Mason, Fengguang Wu,
      Nick Piggin (who did a lot of great work) and others.
      
      Cc: npiggin@suse.de
      Cc: riel@redhat.com
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Reviewed-by: default avatarHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
      6a46079c
    • Andi Kleen's avatar
      HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process · 4db96cf0
      Andi Kleen authored
      This allows processes to override their early/late kill
      behaviour on hardware memory errors.
      
      Typically applications which are memory error aware is
      better of with early kill (see the error as soon
      as possible), all others with late kill (only
      see the error when the error is really impacting execution)
      
      There's a global sysctl, but this way an application
      can set its specific policy.
      
      We're using two bits, one to signify that the process
      stated its intention and that
      
      I also made the prctl future proof by enforcing
      the unused arguments are 0.
      
      The state is inherited to children.
      
      Note this makes us officially run out of process flags
      on 32bit, but the next patch can easily add another field.
      
      Manpage patch will be supplied separately.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      4db96cf0
    • Wu Fengguang's avatar
      HWPOISON: shmem: call set_page_dirty() with locked page · 6746aff7
      Wu Fengguang authored
      The dirtying of page and set_page_dirty() can be moved into the page lock.
      
      - In shmem_write_end(), the page was dirtied while the page lock was held,
        but it's being marked dirty just after dropping the page lock.
      - In shmem_symlink(), both dirtying and marking can be moved into page lock.
      
      It's valuable for the hwpoison code to know whether one bad page can be dropped
      without losing data. It mainly judges by testing the PG_dirty bit after taking
      the page lock. So it becomes important that the dirtying of page and the
      marking of dirtiness are both done inside the page lock. Which is a common
      practice, but sadly not a rule.
      
      The noticeable exceptions are
      - mapped pages
      - pages with buffer_heads
      The above pages could go dirty at any time. Fortunately the hwpoison will
      unmap the page and release the buffer_heads beforehand anyway.
      
      Many other types of pages (eg. metadata pages) can also be dirtied at will by
      their owners, the hwpoison code cannot do meaningful things to them anyway.
      Only the dirtiness of pagecache pages owned by regular files are interested.
      
      v2: AK: Add comment about set_page_dirty rules (suggested by Peter Zijlstra)
      Acked-by: default avatarHugh Dickins <hugh.dickins@tiscali.co.uk>
      Reviewed-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      6746aff7
    • Andi Kleen's avatar
      HWPOISON: Define a new error_remove_page address space op for async truncation · 25718736
      Andi Kleen authored
      Truncating metadata pages is not safe right now before
      we haven't audited all file systems.
      
      To enable truncation only for data address space define
      a new address_space callback error_remove_page.
      
      This is used for memory_failure.c memory error handling.
      
      This can be then set to truncate_inode_page()
      
      This patch just defines the new operation and adds documentation.
      
      Callers and users come in followon patches.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      25718736
    • Wu Fengguang's avatar
      HWPOISON: Add invalidate_inode_page · 83f78668
      Wu Fengguang authored
      Add a simple way to invalidate a single page
      This is just a refactoring of the truncate.c code.
      Originally from Fengguang, modified by Andi Kleen.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      83f78668
    • Nick Piggin's avatar
      HWPOISON: Refactor truncate to allow direct truncating of page v2 · 750b4987
      Nick Piggin authored
      Extract out truncate_inode_page() out of the truncate path so that
      it can be used by memory-failure.c
      
      [AK: description, headers, fix typos]
      v2: Some white space changes from Fengguang Wu
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      750b4987
    • Wu Fengguang's avatar
      HWPOISON: check and isolate corrupted free pages v2 · 2a7684a2
      Wu Fengguang authored
      If memory corruption hits the free buddy pages, we can safely ignore them.
      No one will access them until page allocation time, then prep_new_page()
      will automatically check and isolate PG_hwpoison page for us (for 0-order
      allocation).
      
      This patch expands prep_new_page() to check every component page in a high
      order page allocation, in order to completely stop PG_hwpoison pages from
      being recirculated.
      
      Note that the common case -- only allocating a single page, doesn't
      do any more work than before. Allocating > order 0 does a bit more work,
      but that's relatively uncommon.
      
      This simple implementation may drop some innocent neighbor pages, hopefully
      it is not a big problem because the event should be rare enough.
      
      This patch adds some runtime costs to high order page users.
      
      [AK: Improved description]
      
      v2: Andi Kleen:
      Port to -mm code
      Move check into separate function.
      Don't dump stack in bad_pages for hwpoisoned pages.
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      2a7684a2
    • Andi Kleen's avatar
      HWPOISON: Handle hardware poisoned pages in try_to_unmap · 888b9f7c
      Andi Kleen authored
      When a page has the poison bit set replace the PTE with a poison entry.
      This causes the right error handling to be done later when a process runs
      into it.
      
      v2: add a new flag to not do that (needed for the memory-failure handler
      later) (Fengguang)
      v3: remove unnecessary is_migration_entry() test (Fengguang, Minchan)
      Reviewed-by: default avatarMinchan Kim <minchan.kim@gmail.com>
      Reviewed-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      888b9f7c
    • Andi Kleen's avatar
      HWPOISON: Use bitmask/action code for try_to_unmap behaviour · 14fa31b8
      Andi Kleen authored
      try_to_unmap currently has multiple modi (migration, munlock, normal unmap)
      which are selected by magic flag variables. The logic is not very straight
      forward, because each of these flag change multiple behaviours (e.g.
      migration turns off aging, not only sets up migration ptes etc.)
      Also the different flags interact in magic ways.
      
      A later patch in this series adds another mode to try_to_unmap, so
      this becomes quickly unmanageable.
      
      Replace the different flags with a action code (migration, munlock, munmap)
      and some additional flags as modifiers (ignore mlock, ignore aging).
      This makes the logic more straight forward and allows easier extension
      to new behaviours. Change all the caller to declare what they want to
      do.
      
      This patch is supposed to be a nop in behaviour. If anyone can prove
      it is not that would be a bug.
      
      Cc: Lee.Schermerhorn@hp.com
      Cc: npiggin@suse.de
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      14fa31b8
    • Andi Kleen's avatar
      HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2 · a6e04aa9
      Andi Kleen authored
      Add VM_FAULT_HWPOISON handling to the x86 page fault handler. This is
      very similar to VM_FAULT_OOM, the only difference is that a different
      si_code is passed to user space and the new addr_lsb field is initialized.
      
      v2: Make the printk more verbose/unique
      
      Cc: x86@kernel.org
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      a6e04aa9
    • Andi Kleen's avatar
      HWPOISON: Add poison check to page fault handling · a3b947ea
      Andi Kleen authored
      Bail out early when hardware poisoned pages are found in page fault handling.
      Since they are poisoned they should not be mapped freshly into processes,
      because that would cause another (potentially deadly) machine check
      
      This is generally handled in the same way as OOM, just a different
      error code is returned to the architecture code.
      
      v2: Do a page unlock if needed (Fengguang Wu)
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      a3b947ea
    • Andi Kleen's avatar
      HWPOISON: Add basic support for poisoned pages in fault handler v3 · d1737fdb
      Andi Kleen authored
      - Add a new VM_FAULT_HWPOISON error code to handle_mm_fault. Right now
      architectures have to explicitely enable poison page support, so
      this is forward compatible to all architectures. They only need
      to add it when they enable poison page support.
      - Add poison page handling in swap in fault code
      
      v2: Add missing delayacct_clear_flag (Hidehiro Kawai)
      v3: Really use delayacct_clear_flag (Hidehiro Kawai)
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      d1737fdb
    • Andi Kleen's avatar
      HWPOISON: Add new SIGBUS error codes for hardware poison signals · ad5fa913
      Andi Kleen authored
      Add new SIGBUS codes for reporting machine checks as signals. When
      the hardware detects an uncorrected ECC error it can trigger these
      signals.
      
      This is needed for telling KVM's qemu about machine checks that happen to
      guests, so that it can inject them, but might be also useful for other programs.
      I find it useful in my test programs.
      
      This patch merely defines the new types.
      
      - Define two new si_codes for SIGBUS.  BUS_MCEERR_AO and BUS_MCEERR_AR
      * BUS_MCEERR_AO is for "Action Optional" machine checks, which means that some
      corruption has been detected in the background, but nothing has been consumed
      so far. The program can ignore those if it wants (but most programs would
      already get killed)
      * BUS_MCEERR_AR is for "Action Required" machine checks. This happens
      when corrupted data is consumed or the application ran into an area
      which has been known to be corrupted earlier. These require immediate
      action and cannot just returned to. Most programs would kill themselves.
      - They report the address of the corruption in the user address space
      in si_addr.
      - Define a new si_addr_lsb field that reports the extent of the corruption
      to user space. That's currently always a (small) page. The user application
      cannot tell where in this page the corruption happened.
      
      AK: I plan to write a man page update before anyone asks.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      ad5fa913
    • Andi Kleen's avatar
      HWPOISON: Add support for poison swap entries v2 · a7420aa5
      Andi Kleen authored
      Memory migration uses special swap entry types to trigger special actions on
      page faults. Extend this mechanism to also support poisoned swap entries, to
      trigger poison handling on page faults. This allows follow-on patches to
      prevent processes from faulting in poisoned pages again.
      
      v2: Fix overflow in MAX_SWAPFILES (Fengguang Wu)
      v3: Better overflow fix (Hidehiro Kawai)
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      a7420aa5
    • Andi Kleen's avatar
      HWPOISON: Export some rmap vma locking to outside world · 10be22df
      Andi Kleen authored
      Needed for later patch that walks rmap entries on its own.
      
      This used to be very frowned upon, but memory-failure.c does
      some rather specialized rmap walking and rmap has been stable
      for quite some time, so I think it's ok now to export it.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      10be22df
    • Andi Kleen's avatar
      HWPOISON: Add page flag for poisoned pages · d466f2fc
      Andi Kleen authored
      Hardware poisoned pages need special handling in the VM and shouldn't be
      touched again. This requires a new page flag. Define it here.
      
      The page flags wars seem to be over, so it shouldn't be a problem
      to get a new one.
      
      v2: Add TestSetHWPoison (suggested by Johannes Weiner)
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      d466f2fc
  2. 15 Sep, 2009 24 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6 · 0cb583fd
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6:
        ide: fixup for fujitsu disk
        ide: convert to ->proc_fops
        at91_ide: remove headers specific for at91sam9263
        IDE: palm_bk3710: convert clock usage after clkdev conversion
        ide: fix races in handling of user-space SET XFER commands
        ide: allow ide_dev_read_id() to be called from the IRQ context
        ide: ide-taskfile.c fix style problems
        drivers/ide/ide-cd.c: Use DIV_ROUND_CLOSEST
        ide-tape: fix handling of postponed rqs
        ide-tape: convert to ide_debug_log macro
        ide-tape: fix debug call
        ide: Fix annoying warning in ide_pio_bytes().
        IDE: Save a call to PageHighMem()
      0cb583fd
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 723e9db7
      Linus Torvalds authored
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (134 commits)
        powerpc/nvram: Enable use Generic NVRAM driver for different size chips
        powerpc/iseries: Fix oops reading from /proc/iSeries/mf/*/cmdline
        powerpc/ps3: Workaround for flash memory I/O error
        powerpc/booke: Don't set DABR on 64-bit BookE, use DAC1 instead
        powerpc/perf_counters: Reduce stack usage of power_check_constraints
        powerpc: Fix bug where perf_counters breaks oprofile
        powerpc/85xx: Fix SMP compile error and allow NULL for smp_ops
        powerpc/irq: Improve nanodoc
        powerpc: Fix some late PowerMac G5 with PCIe ATI graphics
        powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT
        powerpc/book3e: Add missing page sizes
        powerpc/pseries: Fix to handle slb resize across migration
        powerpc/powermac: Thermal control turns system off too eagerly
        powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan()
        powerpc/405ex: support cuImage via included dtb
        powerpc/405ex: provide necessary fixup function to support cuImage
        powerpc/40x: Add support for the ESTeem 195E (PPC405EP) SBC
        powerpc/44x: Add Eiger AMCC (AppliedMicro) PPC460SX evaluation board support.
        powerpc/44x: Update Arches defconfig
        powerpc/44x: Update Arches dts
        ...
      
      Fix up conflicts in drivers/char/agp/uninorth-agp.c
      723e9db7
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu · ada3fa15
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (46 commits)
        powerpc64: convert to dynamic percpu allocator
        sparc64: use embedding percpu first chunk allocator
        percpu: kill lpage first chunk allocator
        x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA
        percpu: update embedding first chunk allocator to handle sparse units
        percpu: use group information to allocate vmap areas sparsely
        vmalloc: implement pcpu_get_vm_areas()
        vmalloc: separate out insert_vmalloc_vm()
        percpu: add chunk->base_addr
        percpu: add pcpu_unit_offsets[]
        percpu: introduce pcpu_alloc_info and pcpu_group_info
        percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward
        percpu: add @align to pcpu_fc_alloc_fn_t
        percpu: make @dyn_size mandatory for pcpu_setup_first_chunk()
        percpu: drop @static_size from first chunk allocators
        percpu: generalize first chunk allocator selection
        percpu: build first chunk allocators selectively
        percpu: rename 4k first chunk allocator to page
        percpu: improve boot messages
        percpu: fix pcpu_reclaim() locking
        ...
      
      Fix trivial conflict as by Tejun Heo in kernel/sched.c
      ada3fa15
    • Nicolas Pitre's avatar
      Nicolas Pitre has a new email address · 2f82af08
      Nicolas Pitre authored
      Due to problems at cam.org, my nico@cam.org email address is no longer
      valid.  FRom now on, nico@fluxnic.net should be used instead.
      Signed-off-by: default avatarNicolas Pitre <nico@fluxnic.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2f82af08
    • Linus Torvalds's avatar
      Merge branch 'perfcounters-fixes-for-linus' of... · f199fd99
      Linus Torvalds authored
      Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        perf_counter: Fix buffer overflow in perf_copy_attr()
      f199fd99
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 · 043fe50f
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (213 commits)
        V4L/DVB (12720): em28xx-cards: Add vendor/product id for Kworld DVD Maker 2
        V4L/DVB (12713): em28xx: Cleanups at ir_i2c handler
        V4L/DVB (12712): em28xx: properly load ir-kbd-i2c when needed
        V4L/DVB (12701): saa7134: ir-kbd-i2c init data needs a persistent object
        V4L/DVB (12699): cx18: ir-kbd-i2c initialization data should point to a persistent object
        V4L/DVB (12698): em28xx: ir-kbd-i2c init data needs a persistent object
        V4L/DVB (12707): gspca - sn9c20x: Add SXGA support to MT9M111
        V4L/DVB (12706): gspca - sn9c20x: disable exposure/gain controls for MT9M111 sensors.
        V4L/DVB (12705): gspca - sn9c20x: Add SXGA support to SOI968
        V4L/DVB (12703): gspca - sn9c20x: Reduces size of object
        V4L/DVB (12704): gspca - sn9c20x: Fix exposure on SOI968 sensors
        V4L/DVB (12696): gspca - sonixj / sn9c102: Two drivers for 0c45:60fc and 0c45:613e.
        V4L/DVB (12695): gspca - vc032x: Do the LED work with the sensor hv7131r.
        V4L/DVB (12694): gspca - vc032x: Change the start exchanges of the sensor hv7131r.
        V4L/DVB (12693): gspca - sunplus: The brightness is signed.
        V4L/DVB (12692): gspca - sunplus: Optimize code.
        V4L/DVB (12691): gspca - sonixj: Don't use mdelay().
        V4L/DVB (12690): gspca - pac7311: Webcam 06f8:3009 added.
        V4L/DVB (12686): dvb-core: check supported QAM modulations
        V4L/DVB (12685): dvb-core: check fe->ops.set_frontend return value
        ...
      043fe50f
    • Linus Torvalds's avatar
      Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · 22742390
      Linus Torvalds authored
      * 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, pat: Fix cacheflush address in change_page_attr_set_clr()
        mm: remove !NUMA condition from PAGEFLAGS_EXTENDED condition set
        x86: Fix earlyprintk=dbgp for machines without NX
        x86, pat: Sanity check remap_pfn_range for RAM region
        x86, pat: Lookup the protection from memtype list on vm_insert_pfn()
        x86, pat: Add lookup_memtype to get the current memtype of a paddr
        x86, pat: Use page flags to track memtypes of RAM pages
        x86, pat: Generalize the use of page flag PG_uncached
        x86, pat: Add rbtree to do quick lookup in memtype tracking
        x86, pat: Add PAT reserve free to io_mapping* APIs
        x86, pat: New i/f for driver to request memtype for IO regions
        x86, pat: ioremap to follow same PAT restrictions as other PAT users
        x86, pat: Keep identity maps consistent with mmaps even when pat_disabled
        x86, mtrr: make mtrr_aps_delayed_init static bool
        x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init
        generic-ipi: Allow cpus not yet online to call smp_call_function with irqs disabled
        x86: Fix an incorrect argument of reserve_bootmem()
        x86: Fix system crash when loading with "reservetop" parameter
      22742390
    • Linus Torvalds's avatar
      Merge branch 'x86-txt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · 1aaf2e59
      Linus Torvalds authored
      * 'x86-txt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, intel_txt: clean up the impact on generic code, unbreak non-x86
        x86, intel_txt: Handle ACPI_SLEEP without X86_TRAMPOLINE
        x86, intel_txt: Fix typos in Kconfig help
        x86, intel_txt: Factor out the code for S3 setup
        x86, intel_txt: tboot.c needs <asm/fixmap.h>
        intel_txt: Force IOMMU on for Intel TXT launch
        x86, intel_txt: Intel TXT Sx shutdown support
        x86, intel_txt: Intel TXT reboot/halt shutdown support
        x86, intel_txt: Intel TXT boot support
      1aaf2e59
    • Linus Torvalds's avatar
      Merge branch 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 · 66a4fe0c
      Linus Torvalds authored
      * 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6:
        agp/intel: remove restore in resume
        agp: fix uninorth build
        intel-agp: Set dma mask for i915
        agp: kill phys_to_gart() and gart_to_phys()
        intel-agp: fix sglist allocation to avoid vmalloc()
        intel-agp: Move repeated sglist free into separate function
        agp: Switch agp_{un,}map_page() to take struct page * argument
        agp: tidy up handling of scratch pages w.r.t. DMA API
        intel_agp: Use PCI DMA API correctly on chipsets new enough to have IOMMU
        agp: Add generic support for graphics dma remapping
        agp: Switch mask_memory() method to take address argument again, not page
      66a4fe0c
    • Wu Zhangjin's avatar
      ide: fixup for fujitsu disk · a2d10568
      Wu Zhangjin authored
      This patch will fix the following problem on Yeeloong netbook with
      fujitsu disk.
      
      irq 14: nobody cared (try booting with the "irqpoll" option)
      Call Trace:
      [<ffffffff8020d438>] dump_stack+0x8/0x40
      [<ffffffff8027ec64>] __report_bad_irq+0x58/0xe4
      [<ffffffff8027ee6c>] note_interrupt+0x17c/0x23c
      [<ffffffff8027f9b8>] handle_level_irq+0xcc/0x134
      [<ffffffff802125b0>] mach_irq_dispatch+0xb8/0x1e0
      [<ffffffff8020041c>] ret_from_irq+0x0/0x4
      [<ffffffff8029e678>] free_hot_cold_page+0x224/0x2a0
      [<ffffffff8026f794>] swsusp_free+0xb0/0x14c
      [<ffffffff8026ec08>] hibernate+0x198/0x218
      [<ffffffff8026cfa8>] state_store+0x90/0x138
      [<ffffffff8032b5a4>] sysfs_write_file+0x130/0x194
      [<ffffffff802c94fc>] vfs_write+0xb8/0x180
      [<ffffffff802c96b8>] SyS_write+0x50/0x98
      [<ffffffff80203fd8>] handle_sys+0x158/0x174
      
      handlers:
      [<ffffffff80429670>] (ide_intr+0x0/0x300)
      Disabling IRQ #14
      
      References:
      
      1. commit 1fde02e7146d4a1bab80fd1506f9018fe71e8521 of
      git://dev.lemote.com/linux_loongson.git
      2. 8bc1e5aa (ide: respect quirk_drives[]
      list on all controllers)
      Signed-off-by: default avatarYan Hua <yanh@lemote.com>
      Signed-off-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a2d10568
    • Xiao Guangrong's avatar
      perf_counter: Fix buffer overflow in perf_copy_attr() · b3e62e35
      Xiao Guangrong authored
      If we pass a big size data over perf_counter_open() syscall,
      the kernel will copy this data to a small buffer, it will
      cause kernel crash.
      
      This bug makes the kernel unsafe and non-root local user can
      trigger it.
      Signed-off-by: default avatarXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Acked-by: default avatarPaul Mackerras <paulus@samba.org>
      Cc: <stable@kernel.org>
      LKML-Reference: <4AAF37D4.5010706@cn.fujitsu.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      b3e62e35
    • Linus Torvalds's avatar
      Merge branch 'for-linus3' of... · 18240904
      Linus Torvalds authored
      Merge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
      
      * 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
        SELinux: inline selinux_is_enabled in !CONFIG_SECURITY_SELINUX
        KEYS: Fix garbage collector
        KEYS: Unlock tasklist when exiting early from keyctl_session_to_parent
        CRED: Allow put_cred() to cope with a NULL groups list
        SELinux: flush the avc before disabling SELinux
        SELinux: seperate avc_cache flushing
        Creds: creds->security can be NULL is selinux is disabled
      18240904
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 · f86054c2
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6: (23 commits)
        at_hdmac: Rework suspend_late()/resume_early()
        PM: Reset transition_started at dpm_resume_noirq
        PM: Update kerneldoc comments in drivers/base/power/main.c
        PM: Add convenience macro to make switching to dev_pm_ops less error-prone
        hp-wmi: Switch driver to dev_pm_ops
        floppy: Switch driver to dev_pm_ops
        PM: Trivial fixes
        PM / Hibernate / Memory hotplug: Always use for_each_populated_zone()
        PM/Hibernate: Do not try to allocate too much memory too hard (rev. 2)
        PM/Hibernate: Do not release preallocated memory unnecessarily (rev. 2)
        PM/Hibernate: Rework shrinking of memory
        PM: Fix typo in label name s/Platofrm_finish/Platform_finish/
        PM: Run-time PM platform device bus support
        PM: Introduce core framework for run-time PM of I/O devices (rev. 17)
        Driver Core: Make PM operations a const pointer
        PM: Remove platform device suspend_late()/resume_early() V2
        USB: Rework musb suspend()/resume_early()
        I2C: Rework i2c-s3c2410 suspend_late()/resume() V2
        I2C: Rework i2c-pxa suspend_late()/resume_early()
        DMA: Rework txx9dmac suspend_late()/resume_early()
        ...
      
      Fix trivial conflict in drivers/base/platform.c (due to same
      constification patch being merged in both sides, along with some other
      PM work in the PM branch)
      f86054c2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-kconfig · c91d7d54
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-kconfig:
        kconfig: add missing dependency of conf to localyesconfig
        kconfig: test if a .config already exists
        kconfig: make local .config default for streamline_config
        kconfig: test for /boot/config-uname after /proc/config.gz in localconfig
        kconfig: unset IKCONFIG_PROC and clean up nesting
        kconfig: search for a config to base the local(mod|yes)config on
        kconfig: keep config.gz around even if CONFIG_IKCONFIG_PROC is not set
        kconfig: have extract-ikconfig read ELF files
        kconfig: add check if end exists in extract-ikconfig
        kconfig: enable CONFIG_IKCONFIG from streamline_config.pl
        kconfig: do not warn about modules built in
        kconfig: streamline_config.pl do not stop with no depends
        kconfig: add make localyesconfig option
        kconfig: make localmodconfig to run streamline_config.pl
        kconfig: add streamline_config.pl to scripts
      c91d7d54
    • Douglas Schilling Landgraf's avatar
      V4L/DVB (12720): em28xx-cards: Add vendor/product id for Kworld DVD Maker 2 · ea47689e
      Douglas Schilling Landgraf authored
      Added Kworld DVD Maker 2
      Thanks to C Western <l@c-m-w.me.uk> for reporting this board.
      Signed-off-by: default avatarDouglas Schilling Landgraf <dougsland@redhat.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      ea47689e
    • Eric Paris's avatar
      SELinux: inline selinux_is_enabled in !CONFIG_SECURITY_SELINUX · 8a478905
      Eric Paris authored
      Without this patch building a kernel emits millions of warning like:
      
      include/linux/selinux.h:92: warning: ?selinux_is_enabled? defined but not used
      
      When it is build without CONFIG_SECURITY_SELINUX.  This is harmless, but
      the function should be inlined, so it gets compiled out.
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      8a478905
    • Tejun Heo's avatar
      Merge branch 'for-next' into for-linus · 5579fd7e
      Tejun Heo authored
      * pcpu_chunk_page_occupied() doesn't exist in for-next.
      * pcpu_chunk_addr_search() updated to use raw_smp_processor_id().
      
      Conflicts:
      	mm/percpu.c
      5579fd7e
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 133309a8
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (52 commits)
        Input: bcm5974 - silence uninitialized variables warnings
        Input: wistron_btns - add keymap for AOpen 1557
        Input: psmouse - use boolean type
        Input: i8042 - use platform_driver_probe
        Input: i8042 - use boolean type where it makes sense
        Input: i8042 - try disabling and re-enabling AUX port at close
        Input: pxa27x_keypad - allow modifying keymap from userspace
        Input: sunkbd - fix formatting
        Input: i8042 - bypass AUX IRQ delivery test on laptops
        Input: wacom_w8001 - simplify querying logic
        Input: atkbd - allow setting force-release bitmap via sysfs
        Input: w90p910_keypad - move a dereference below a NULL test
        Input: add twl4030_keypad driver
        Input: matrix-keypad - add function to build device keymap
        Input: tosakbd - fix cleaning up KEY_STROBEs after error
        Input: joydev - validate axis/button maps before clobbering current ones
        Input: xpad - add USB ID for the drumkit controller from Rock Band
        Input: w90p910_keypad - rename driver name to match platform
        Input: add new driver for Sentelic Finger Sensing Pad
        Input: psmouse - allow defining read-only attributes
        ...
      133309a8
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 5489375d
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: completely remove apple mightymouse from blacklist
        HID: support larger reports than 64 bytes in hiddev
        HID: local function should be static
        HID: ignore Philips IEEE802.15.4 RF Dongle
        HID: ignore all recent SoundGraph iMON devices
        HID: fix memory leak on error patch in debug code
        HID: fix overrun in quirks initialization
        HID: Drop NULL test on list_entry result
        HID: driver for Twinhan USB 6253:0100 remote control
        HID: adding __init/__exit macros to module init/exit functions
        HID: add rumble support for Thrustmaster Dual Trigger 3-in-1
        HID: ntrig tool separation and pen usages
        HID: Avoid double spin_lock_init on usbhid->lock
        HID: add force feedback support for Logitech WingMan Formula Force GP
        HID: Support new variants of Samsung USB IR receiver (0419:0001)
        HID: fix memory leak on error path in debug code
        HID: fix debugfs build with !CONFIG_DEBUG_FS
        HID: use debugfs for events/reports dumping
        HID: use debugfs for report dumping descriptor
      5489375d
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block · 355bbd8c
      Linus Torvalds authored
      * 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block: (29 commits)
        block: use blkdev_issue_discard in blk_ioctl_discard
        Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads
        block: don't assume device has a request list backing in nr_requests store
        block: Optimal I/O limit wrapper
        cfq: choose a new next_req when a request is dispatched
        Seperate read and write statistics of in_flight requests
        aoe: end barrier bios with EOPNOTSUPP
        block: trace bio queueing trial only when it occurs
        block: enable rq CPU completion affinity by default
        cfq: fix the log message after dispatched a request
        block: use printk_once
        cciss: memory leak in cciss_init_one()
        splice: update mtime and atime on files
        block: make blk_iopoll_prep_sched() follow normal 0/1 return convention
        cfq-iosched: get rid of must_alloc flag
        block: use interrupts disabled version of raise_softirq_irqoff()
        block: fix comment in blk-iopoll.c
        block: adjust default budget for blk-iopoll
        block: fix long lines in block/blk-iopoll.c
        block: add blk-iopoll, a NAPI like approach for block devices
        ...
      355bbd8c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · 39695224
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (209 commits)
        [SCSI] fix oops during scsi scanning
        [SCSI] libsrp: fix memory leak in srp_ring_free()
        [SCSI] libiscsi, bnx2i: make bound ep check common
        [SCSI] libiscsi: add completion function for drivers that do not need pdu processing
        [SCSI] scsi_dh_rdac: changes for rdac debug logging
        [SCSI] scsi_dh_rdac: changes to collect the rdac debug information during the initialization
        [SCSI] scsi_dh_rdac: move the init code from rdac_activate to rdac_bus_attach
        [SCSI] sg: fix oops in the error path in sg_build_indirect()
        [SCSI] mptsas : Bump version to 3.04.12
        [SCSI] mptsas : FW event thread and scsi mid layer deadlock in SYNCHRONIZE CACHE command
        [SCSI] mptsas : Send DID_NO_CONNECT for pending IOs of removed device
        [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic
        [SCSI] mptsas : NULL pointer on big endian systems causing Expander not to tear off
        [SCSI] mptsas : Sanity check for phyinfo is added
        [SCSI] scsi_dh_rdac: Add support for Sun StorageTek ST2500, ST2510 and ST2530
        [SCSI] pmcraid: PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller
        [SCSI] qla2xxx: Update version number to 8.03.01-k6.
        [SCSI] qla2xxx: Properly delete rports attached to a vport.
        [SCSI] qla2xxx: Correct various NPIV issues.
        [SCSI] qla2xxx: Correct qla2x00_eh_wait_on_command() to wait correctly.
        ...
      39695224
    • Linus Torvalds's avatar
      Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 · a9bbd210
      Linus Torvalds authored
      * 'docs-next' of git://git.lwn.net/linux-2.6:
        Document the flex_array library.
        Doc: seq_file.txt fix wrong dd command example.
      a9bbd210
    • Linus Torvalds's avatar
      Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm · 2ca7d674
      Linus Torvalds authored
      * 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (257 commits)
        [ARM] Update mach-types
        ARM: 5636/1: Move vendor enum to AMBA include
        ARM: Fix pfn_valid() for sparse memory
        [ARM] orion5x: Add LaCie NAS 2Big Network support
        [ARM] pxa/sharpsl_pm: zaurus c3000 aka spitz: fix resume
        ARM: 5686/1: at91: Correct AC97 reset line in at91sam9263ek board
        ARM: 5640/1: This patch modifies the support of AC97 on the at91sam9263 ek board
        ARM: 5689/1: Update default config of HP Jornada 700-series machines
        ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() with highmem
        ARM: 5688/1: ks8695_serial: disable_irq() lockup
        ARM: 5687/1: fix an oops with highmem
        ARM: 5684/1: Add nuc960 platform to w90x900
        ARM: 5683/1: Add nuc950 platform to w90x900
        ARM: 5682/1: Add cpu.c and dev.c and modify some files of w90p910 platform
        ARM: 5626/1: add suspend/resume functions to amba-pl011 serial driver
        ARM: 5625/1: fix hard coded 4K resource size in amba bus detection
        MMC: MMCI: convert realview MMC to use gpiolib
        ARM: 5685/1: Make MMCI driver compile without gpiolib
        ARM: implement highpte
        ARM: Show FIQ in /proc/interrupts on CONFIG_FIQ
        ...
      
      Fix up trivial conflict in arch/arm/kernel/signal.c.
      
      It was due to the TIF_NOTIFY_RESUME addition in commit d0420c83 ("KEYS:
      Extend TIF_NOTIFY_RESUME to (almost) all architectures") and follow-ups.
      2ca7d674
    • Hugh Dickins's avatar
      fix undefined reference to user_shm_unlock · 2195d281
      Hugh Dickins authored
      My 353d5c30 "mm: fix hugetlb bug due to
      user_shm_unlock call" broke the CONFIG_SYSVIPC !CONFIG_MMU build of both
      2.6.31 and 2.6.30.6: "undefined reference to `user_shm_unlock'".
      
      gcc didn't understand my comment! so couldn't figure out to optimize
      away user_shm_unlock() from the error path in the hugetlb-less case, as
      it does elsewhere.  Help it to do so, in a language it understands.
      Reported-by: default avatarMike Frysinger <vapier@gentoo.org>
      Signed-off-by: default avatarHugh Dickins <hugh.dickins@tiscali.co.uk>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2195d281