1. 01 11月, 2011 8 次提交
    • C
      Cross Memory Attach · fcf63409
      Christopher Yeoh 提交于
      The basic idea behind cross memory attach is to allow MPI programs doing
      intra-node communication to do a single copy of the message rather than a
      double copy of the message via shared memory.
      
      The following patch attempts to achieve this by allowing a destination
      process, given an address and size from a source process, to copy memory
      directly from the source process into its own address space via a system
      call.  There is also a symmetrical ability to copy from the current
      process's address space into a destination process's address space.
      
      - Use of /proc/pid/mem has been considered, but there are issues with
        using it:
        - Does not allow for specifying iovecs for both src and dest, assuming
          preadv or pwritev was implemented either the area read from or
        written to would need to be contiguous.
        - Currently mem_read allows only processes who are currently
        ptrace'ing the target and are still able to ptrace the target to read
        from the target. This check could possibly be moved to the open call,
        but its not clear exactly what race this restriction is stopping
        (reason  appears to have been lost)
        - Having to send the fd of /proc/self/mem via SCM_RIGHTS on unix
        domain socket is a bit ugly from a userspace point of view,
        especially when you may have hundreds if not (eventually) thousands
        of processes  that all need to do this with each other
        - Doesn't allow for some future use of the interface we would like to
        consider adding in the future (see below)
        - Interestingly reading from /proc/pid/mem currently actually
        involves two copies! (But this could be fixed pretty easily)
      
      As mentioned previously use of vmsplice instead was considered, but has
      problems.  Since you need the reader and writer working co-operatively if
      the pipe is not drained then you block.  Which requires some wrapping to
      do non blocking on the send side or polling on the receive.  In all to all
      communication it requires ordering otherwise you can deadlock.  And in the
      example of many MPI tasks writing to one MPI task vmsplice serialises the
      copying.
      
      There are some cases of MPI collectives where even a single copy interface
      does not get us the performance gain we could.  For example in an
      MPI_Reduce rather than copy the data from the source we would like to
      instead use it directly in a mathops (say the reduce is doing a sum) as
      this would save us doing a copy.  We don't need to keep a copy of the data
      from the source.  I haven't implemented this, but I think this interface
      could in the future do all this through the use of the flags - eg could
      specify the math operation and type and the kernel rather than just
      copying the data would apply the specified operation between the source
      and destination and store it in the destination.
      
      Although we don't have a "second user" of the interface (though I've had
      some nibbles from people who may be interested in using it for intra
      process messaging which is not MPI).  This interface is something which
      hardware vendors are already doing for their custom drivers to implement
      fast local communication.  And so in addition to this being useful for
      OpenMPI it would mean the driver maintainers don't have to fix things up
      when the mm changes.
      
      There was some discussion about how much faster a true zero copy would
      go. Here's a link back to the email with some testing I did on that:
      
      http://marc.info/?l=linux-mm&m=130105930902915&w=2
      
      There is a basic man page for the proposed interface here:
      
      http://ozlabs.org/~cyeoh/cma/process_vm_readv.txt
      
      This has been implemented for x86 and powerpc, other architecture should
      mainly (I think) just need to add syscall numbers for the process_vm_readv
      and process_vm_writev. There are 32 bit compatibility versions for
      64-bit kernels.
      
      For arch maintainers there are some simple tests to be able to quickly
      verify that the syscalls are working correctly here:
      
      http://ozlabs.org/~cyeoh/cma/cma-test-20110718.tgzSigned-off-by: NChris Yeoh <yeohc@au1.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: David Howells <dhowells@redhat.com>
      Cc: James Morris <jmorris@namei.org>
      Cc: <linux-man@vger.kernel.org>
      Cc: <linux-arch@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fcf63409
    • W
      ipc/mqueue.c: fix wrong use of schedule_hrtimeout_range_clock() · 32ea845d
      Wanlong Gao 提交于
      Fix the wrong use of schedule_hrtimeout_range_clock() in wq_sleep(),
      although it is harmless for the syscall mq_timed* now.  It was introduced
      by 9ca7d8e6 ("mqueue: Convert message queue timeout to use hrtimers").
      Signed-off-by: NWanlong Gao <gaowanlong@cn.fujitsu.com>
      Cc: Carsten Emde <C.Emde@osadl.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      32ea845d
    • A
      /proc/self/numa_maps: restore "huge" tag for hugetlb vmas · fc360bd9
      Andrew Morton 提交于
      The display of the "huge" tag was accidentally removed in 29ea2f69 ("mm:
      use walk_page_range() instead of custom page table walking code").
      Reported-by: NStephen Hemminger <shemminger@vyatta.com>
      Tested-by: NStephen Hemminger <shemminger@vyatta.com>
      Reviewed-by: NStephen Wilson <wilsons@start.ca>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Hugh Dickins <hughd@google.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Christoph Lameter <cl@linux-foundation.org>
      Cc: <stable@kernel.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fc360bd9
    • A
      include/linux/dmar.h: forward-declare struct acpi_dmar_header · 6eea69dd
      Andrew Morton 提交于
      x86_64 allnoconfig:
      
      In file included from arch/x86/kernel/pci-dma.c:3:
      include/linux/dmar.h:248: warning: 'struct acpi_dmar_header' declared inside parameter list
      include/linux/dmar.h:248: warning: its scope is only this definition or declaration, which is probably not what you want
      
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6eea69dd
    • C
      dma-mapping: fix sync_single_range_* DMA debugging · 07a72309
      Clemens Ladisch 提交于
      Commit 5fd75a78 (dma-mapping: remove unnecessary sync_single_range_*
      in dma_map_ops) unified not only the dma_map_ops but also the
      corresponding debug_dma_sync_* calls.  This led to spurious WARN()ings
      like the following because the DMA debug code was no longer able to detect
      the DMA buffer base address without the separate offset parameter:
      
      WARNING: at lib/dma-debug.c:911 check_sync+0xce/0x446()
      firewire_ohci 0000:04:00.0: DMA-API: device driver tries to sync DMA memory it has not allocated [device address=0x00000000cedaa400] [size=1024 bytes]
      Call Trace: ...
       [<ffffffff811326a5>] check_sync+0xce/0x446
       [<ffffffff81132ad9>] debug_dma_sync_single_for_device+0x39/0x3b
       [<ffffffffa01d6e6a>] ohci_queue_iso+0x4f3/0x77d [firewire_ohci]
       ...
      
      To fix this, unshare the sync_single_* and sync_single_range_*
      implementations so that we are able to call the correct debug_dma_sync_*
      functions.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
      Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      07a72309
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 1a4ceab1
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (27 commits)
        vlan: allow nested vlan_do_receive()
        ipv6: fix route lookup in addrconf_prefix_rcv()
        bonding: eliminate bond_close race conditions
        qlcnic: fix beacon and LED test.
        qlcnic: Updated License file
        qlcnic: updated reset sequence
        qlcnic: reset loopback mode if promiscous mode setting fails.
        qlcnic: skip IDC ack check in fw reset path.
        i825xx: Fix incorrect dependency for BVME6000_NET
        ipv6: fix route error binding peer in func icmp6_dst_alloc
        ipv6: fix error propagation in ip6_ufo_append_data()
        stmmac: update normal descriptor structure (v2)
        stmmac: fix NULL pointer dereference in capabilities fixup (v2)
        stmmac: fix a bug while checking the HW cap reg (v2)
        be2net: Changing MAC Address of a VF was broken.
        be2net: Refactored be_cmds.c file.
        bnx2x: update driver version to 1.70.30-0
        bnx2x: use FW 7.0.29.0
        bnx2x: Enable changing speed when port type is PORT_DA
        bnx2x: Fix 54618se LED behavior
        ...
      1a4ceab1
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 83f89ca7
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Fix masking and shifting in VIS fpcmp emulation.
        sparc32: Correct the return value of memcpy.
        sparc32: Remove uses of %g7 in memcpy implementation.
        sparc32: Remove non-kernel code from memcpy implementation.
      83f89ca7
    • L
      Merge branch 'for-linus' of git://neil.brown.name/md · 571109f5
      Linus Torvalds 提交于
      * 'for-linus' of git://neil.brown.name/md:
        md/raid10:  Fix bug when activating a hot-spare.
      571109f5
  2. 31 10月, 2011 7 次提交
    • D
      2e8ecdc0
    • N
      md/raid10: Fix bug when activating a hot-spare. · 7fcc7c8a
      NeilBrown 提交于
      This is a fairly serious bug in RAID10.
      
      When a RAID10 array is degraded and a hot-spare is activated, the
      spare does not take up the empty slot, but rather replaces the first
      working device.
      This is likely to make the array non-functional.   It would normally
      be possible to recover the data, but that would need care and is not
      guaranteed.
      
      This bug was introduced in commit
         2bb77736
      which first appeared in 3.1.
      
      Cc: stable@kernel.org
      Signed-off-by: NNeilBrown <neilb@suse.de>
      7fcc7c8a
    • L
      Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 839d8810
      Linus Torvalds 提交于
      * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        i2c: Functions for byte-swapped smbus_write/read_word_data
        i2c-algo-pca: Return standard fault codes
        i2c-algo-bit: Return standard fault codes
        i2c-algo-bit: Be verbose on bus testing failure
        i2c-algo-bit: Let user test buses without failing
        i2c/scx200_acb: Fix section mismatch warning in scx200_pci_drv
        i2c: I2C_ELEKTOR should depend on HAS_IOPORT
      839d8810
    • L
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 0cfdc724
      Linus Torvalds 提交于
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (33 commits)
        iommu/core: Remove global iommu_ops and register_iommu
        iommu/msm: Use bus_set_iommu instead of register_iommu
        iommu/omap: Use bus_set_iommu instead of register_iommu
        iommu/vt-d: Use bus_set_iommu instead of register_iommu
        iommu/amd: Use bus_set_iommu instead of register_iommu
        iommu/core: Use bus->iommu_ops in the iommu-api
        iommu/core: Convert iommu_found to iommu_present
        iommu/core: Add bus_type parameter to iommu_domain_alloc
        Driver core: Add iommu_ops to bus_type
        iommu/core: Define iommu_ops and register_iommu only with CONFIG_IOMMU_API
        iommu/amd: Fix wrong shift direction
        iommu/omap: always provide iommu debug code
        iommu/core: let drivers know if an iommu fault handler isn't installed
        iommu/core: export iommu_set_fault_handler()
        iommu/omap: Fix build error with !IOMMU_SUPPORT
        iommu/omap: Migrate to the generic fault report mechanism
        iommu/core: Add fault reporting mechanism
        iommu/core: Use PAGE_SIZE instead of hard-coded value
        iommu/core: use the existing IS_ALIGNED macro
        iommu/msm: ->unmap() should return order of unmapped page
        ...
      
      Fixup trivial conflicts in drivers/iommu/Makefile: "move omap iommu to
      dedicated iommu folder" vs "Rename the DMAR and INTR_REMAP config
      options" just happened to touch lines next to each other.
      0cfdc724
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · b48aeab6
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        amd64_edac: Cleanup return type of amd64_determine_edac_cap()
        amd64_edac: Add a fix for Erratum 505
        EDAC, MCE, AMD: Simplify NB MCE decoder interface
        EDAC, MCE, AMD: Drop local coreid reporting
        EDAC, MCE, AMD: Print valid addr when reporting an error
        EDAC, MCE, AMD: Print CPU number when reporting the error
      b48aeab6
    • L
      Merge branch 'kvm-updates/3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm · 1bc87b00
      Linus Torvalds 提交于
      * 'kvm-updates/3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: (75 commits)
        KVM: SVM: Keep intercepting task switching with NPT enabled
        KVM: s390: implement sigp external call
        KVM: s390: fix register setting
        KVM: s390: fix return value of kvm_arch_init_vm
        KVM: s390: check cpu_id prior to using it
        KVM: emulate lapic tsc deadline timer for guest
        x86: TSC deadline definitions
        KVM: Fix simultaneous NMIs
        KVM: x86 emulator: convert push %sreg/pop %sreg to direct decode
        KVM: x86 emulator: switch lds/les/lss/lfs/lgs to direct decode
        KVM: x86 emulator: streamline decode of segment registers
        KVM: x86 emulator: simplify OpMem64 decode
        KVM: x86 emulator: switch src decode to decode_operand()
        KVM: x86 emulator: qualify OpReg inhibit_byte_regs hack
        KVM: x86 emulator: switch OpImmUByte decode to decode_imm()
        KVM: x86 emulator: free up some flag bits near src, dst
        KVM: x86 emulator: switch src2 to generic decode_operand()
        KVM: x86 emulator: expand decode flags to 64 bits
        KVM: x86 emulator: split dst decode to a generic decode_operand()
        KVM: x86 emulator: move memop, memopp into emulation context
        ...
      1bc87b00
    • L
      Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 · acff987d
      Linus Torvalds 提交于
      * 'fbdev-next' of git://github.com/schandinat/linux-2.6: (270 commits)
        video: platinumfb: Add __devexit_p at necessary place
        drivers/video: fsl-diu-fb: merge diu_pool into fsl_diu_data
        drivers/video: fsl-diu-fb: merge diu_hw into fsl_diu_data
        drivers/video: fsl-diu-fb: only DIU modes 0 and 1 are supported
        drivers/video: fsl-diu-fb: remove unused panel operating mode support
        drivers/video: fsl-diu-fb: use an enum for the AOI index
        drivers/video: fsl-diu-fb: add several new video modes
        drivers/video: fsl-diu-fb: remove broken screen blanking support
        drivers/video: fsl-diu-fb: move some definitions out of the header file
        drivers/video: fsl-diu-fb: fix some ioctls
        video: da8xx-fb: Increased resolution configuration of revised LCDC IP
        OMAPDSS: picodlp: add missing #include <linux/module.h>
        fb: fix au1100fb bitrot.
        mx3fb: fix NULL pointer dereference in screen blanking.
        video: irq: Remove IRQF_DISABLED
        smscufx: change edid data to u8 instead of char
        OMAPDSS: DISPC: zorder support for DSS overlays
        OMAPDSS: DISPC: VIDEO3 pipeline support
        OMAPDSS/OMAP_VOUT: Fix incorrect OMAP3-alpha compatibility setting
        video/omap: fix build dependencies
        ...
      
      Fix up conflicts in:
       - drivers/staging/xgifb/XGI_main_26.c
      	Changes to XGIfb_pan_var()
       - drivers/video/omap/{lcd_apollon.c,lcd_ldp.c,lcd_overo.c}
      	Removed (or in the case of apollon.c, merged into the generic
      	DSS panel in drivers/video/omap2/displays/panel-generic-dpi.c)
      acff987d
  3. 30 10月, 2011 21 次提交
  4. 29 10月, 2011 4 次提交
    • L
      Merge git://github.com/rustyrussell/linux · ce949717
      Linus Torvalds 提交于
      * git://github.com/rustyrussell/linux:
        lguest: move process freezing before pending signals check
        lguest: don't allow KVM-detection cpuid.
        lguest: Allow running under paravirt-enabled KVM.
      ce949717
    • L
      Merge branch 'devicetree/merge' of git://git.secretlab.ca/git/linux-2.6 · 24984247
      Linus Torvalds 提交于
      * 'devicetree/merge' of git://git.secretlab.ca/git/linux-2.6:
        ARM: mark empty gpio.h files empty
        gpio: Fix ARM versatile-express build failure
        of: include errno.h
      24984247
    • L
      Merge branch 'spi/next' of git://git.secretlab.ca/git/linux-2.6 · 18c06353
      Linus Torvalds 提交于
      * 'spi/next' of git://git.secretlab.ca/git/linux-2.6:
        drivercore: Add helper macro for platform_driver boilerplate
        spi: irq: Remove IRQF_DISABLED
        OMAP: SPI: Fix the trying to free nonexistent resource error
        spi/spi-ep93xx: add module.h include
        spi/tegra: fix compilation error in spi-tegra.c
        spi: spi-dw: fix all sparse warnings
        spi/spi-pl022: Call pl022_dma_remove(pl022) only if enable_dma is true
        spi/spi-pl022: calculate_effective_freq() must set rate <= requested rate
        spi/spi-pl022: Don't allocate more sg than required.
        spi/spi-pl022: Use GFP_ATOMIC for allocation from tasklet
        spi/spi-pl022: Resolve formatting issues
      18c06353
    • L
      Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 · 41684f67
      Linus Torvalds 提交于
      * 'gpio/next' of git://git.secretlab.ca/git/linux-2.6:
        h8300: Move gpio.h to gpio-internal.h
        gpio: pl061: add DT binding support
        gpio: fix build error in include/asm-generic/gpio.h
        gpiolib: Ensure struct gpio is always defined
        irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip
        gpio-ml-ioh: Use NUMA_NO_NODE not GFP_KERNEL
        gpio-pch: Use NUMA_NO_NODE not GFP_KERNEL
        gpio: langwell: ensure alternate function is cleared
        gpio-pch: Support interrupt function
        gpio-pch: Save register value in suspend()
        gpio-pch: modify gpio_nums and mask
        gpio-pch: support ML7223 IOH n-Bus
        gpio-pch: add spinlock in suspend/resume processing
        gpio-pch: Delete invalid "restore" code in suspend()
        gpio-ml-ioh: Fix suspend/resume issue
        gpio-ml-ioh: Support interrupt function
        gpio-ml-ioh: Delete unnecessary code
        gpio/mxc: add chained_irq_enter/exit() to mx3_gpio_irq_handler()
        gpio/nomadik: use genirq core to track enablement
        gpio/nomadik: disable clocks when unused
      41684f67