1. 30 Jul, 2012 1 commit
    • Shlomo Pongratz's avatar
      IPoIB: Use a private hash table for path lookup in xmit path · b63b70d8
      Shlomo Pongratz authored
      Dave Miller <davem@davemloft.net> provided a detailed description of
      why the way IPoIB is using neighbours for its own ipoib_neigh struct
      is buggy:
      
          Any time an ipoib_neigh is changed, a sequence like the following is made:
      
          			spin_lock_irqsave(&priv->lock, flags);
          			/*
          			 * It's safe to call ipoib_put_ah() inside
          			 * priv->lock here, because we know that
          			 * path->ah will always hold one more reference,
          			 * so ipoib_put_ah() will never do more than
          			 * decrement the ref count.
          			 */
          			if (neigh->ah)
          				ipoib_put_ah(neigh->ah);
          			list_del(&neigh->list);
          			ipoib_neigh_free(dev, neigh);
          			spin_unlock_irqrestore(&priv->lock, flags);
          			ipoib_path_lookup(skb, n, dev);
      
          This doesn't work, because you're leaving a stale pointer to the freed up
          ipoib_neigh in the special neigh->ha pointer cookie.  Yes, it even fails
          with all the locking done to protect _changes_ to *ipoib_neigh(n), and
          with the code in ipoib_neigh_free() that NULLs out the pointer.
      
          The core issue is that read side calls to *to_ipoib_neigh(n) are not
          being synchronized at all, they are performed without any locking.  So
          whether we hold the lock or not when making changes to *ipoib_neigh(n)
          you still can have threads see references to freed up ipoib_neigh
          objects.
      
          	cpu 1			cpu 2
          	n = *ipoib_neigh()
          				*ipoib_neigh() = NULL
          				kfree(n)
          	n->foo == OOPS
      
          [..]
      
          Perhaps the ipoib code can have a private path database it manages
          entirely itself, which holds all the necessary information and is
          looked up by some generic key which is available easily at transmit
          time and does not involve generic neighbour entries.
      
      See <http://marc.info/?l=linux-rdma&m=132812793105624&w=2> and
      <http://marc.info/?l=linux-rdma&w=2&r=1&s=allows+references+to+freed+memory&q=b>
      for the full discussion.
      
      This patch aims to solve the race conditions found in the IPoIB driver.
      
      The patch removes the connection between the core networking neighbour
      structure and the ipoib_neigh structure.  In addition to avoiding the
      race described above, it allows us to handle SKBs carrying IP packets
      that don't have any associated neighbour.
      
      We add an ipoib_neigh hash table with N buckets where the key is the
      destination hardware address.  The ipoib_neigh is fetched from the
      hash table and instead of the stashed location in the neighbour
      structure. The hash table uses both RCU and reference counting to
      guarantee that no ipoib_neigh instance is ever deleted while in use.
      
      Fetching the ipoib_neigh structure instance from the hash also makes
      the special code in ipoib_start_xmit that handles remote and local
      bonding failover redundant.
      
      Aged ipoib_neigh instances are deleted by a garbage collection task
      that runs every M seconds and deletes every ipoib_neigh instance that
      was idle for at least 2*M seconds. The deletion is safe since the
      ipoib_neigh instances are protected using RCU and reference count
      mechanisms.
      
      The number of buckets (N) and frequency of running the GC thread (M),
      are taken from the exported arb_tbl.
      Signed-off-by: default avatarShlomo Pongratz <shlomop@mellanox.com>
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      b63b70d8
  2. 24 Jul, 2012 39 commits
    • Linus Torvalds's avatar
      Merge tag 'rdma-for-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 5dedb9f3
      Linus Torvalds authored
      Pull InfiniBand/RDMA changes from Roland Dreier:
       - Updates to the qib low-level driver
       - First chunk of changes for SR-IOV support for mlx4 IB
       - RDMA CM support for IPv6-only binding
       - Other misc cleanups and fixes
      
      Fix up some add-add conflicts in include/linux/mlx4/device.h and
      drivers/net/ethernet/mellanox/mlx4/main.c
      
      * tag 'rdma-for-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (30 commits)
        IB/qib: checkpatch fixes
        IB/qib: Add congestion control agent implementation
        IB/qib: Reduce sdma_lock contention
        IB/qib: Fix an incorrect log message
        IB/qib: Fix QP RCU sparse warnings
        mlx4: Put physical GID and P_Key table sizes in mlx4_phys_caps struct and paravirtualize them
        mlx4_core: Allow guests to have IB ports
        mlx4_core: Implement mechanism for reserved Q_Keys
        net/mlx4_core: Free ICM table in case of error
        IB/cm: Destroy idr as part of the module init error flow
        mlx4_core: Remove double function declarations
        IB/mlx4: Fill the masked_atomic_cap attribute in query device
        IB/mthca: Fill in sq_sig_type in query QP
        IB/mthca: Warning about event for non-existent QPs should show event type
        IB/qib: Fix sparse RCU warnings in qib_keys.c
        net/mlx4_core: Initialize IB port capabilities for all slaves
        mlx4: Use port management change event instead of smp_snoop
        IB/qib: RCU locking for MR validation
        IB/qib: Avoid returning EBUSY from MR deregister
        IB/qib: Fix UC MR refs for immediate operations
        ...
      5dedb9f3
    • Linus Torvalds's avatar
      Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · ddb03448
      Linus Torvalds authored
      Pull i2c updates from Jean Delvare:
       "The most important changes here are a big cleanup of the i2c-piix4
        driver, cleanups and interrupt support to the i2c-i801 driver, and
        support for the SCCB protocol."
      
      * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        i2c-omap: Add support for I2C_M_STOP message flag
        i2c: Fall back to emulated SMBus if the operation isn't supported natively
        i2c: Add SCCB support
        i2c-tiny-usb: Add support for the Robofuzz OSIF USB/I2C converter
        i2c-i801: Enable IRQ for byte_by_byte transactions
        i2c-i801: Enable interrupts on ICH5/7/8/9/10
        i2c-i801: Enable IRQ for SMBus transactions
        i2c-i801: Consolidate polling
        i2c-i801: Drop ENABLE_INT9
        i2c-i801: Rename some SMBHSTCNT bit constants
        i2c-i801: Check and return errors during byte-by-byte transfers
        i2c-i801: Clear only status bits in HST_STS
        i2c-i801: Refactor use of LAST_BYTE in i801_block_transaction_byte_by_byte
        i2c-smbus: Use module_i2c_driver()
        i2c/writing-clients: Mention module_i2c_driver()
        i2c-piix4: Support AMD auxiliary SMBus controller
        i2c-piix4: Separate registration and probing code
        i2c-piix4: Eliminate piix4_smba global variable
        i2c/busses: Use module_pci_driver
        i2c: Update Guenter Roeck's e-mail address
      ddb03448
    • Linus Torvalds's avatar
      Merge tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · dbf7b591
      Linus Torvalds authored
      Pull sound update from Takashi Iwai:
       "This is a fairly quiet release in all sound area.  Only a little bit
        of changes in the core side while most of changes are seen in the
        drivers.
      
        HD-audio:
         - A few new codec additions for Nvidia, Realtek and VIA
         - Intel Haswell audio support
         - Support for "phantom" jacks for consistent jack reporting
         - Major clean-ups in HDMI/DP driver codes
         - A workaround for inverted digital-mic pins with Realtek codecs
         - Removal of beep_mode=2 option
      
        ASoC:
         - Added the ability to add and remove DAPM paths dynamically, mostly
           for reparenting on clock changes
         - New machine drivers for Marvell Brownstone, ST-Ericsson Ux500
           reference platform and ttc-dkp
         - New CPU drivers for Blackfin BF6xx SPORTs in I2S mode, Marvell MMP,
           Synopsis Designware I2S controllers, and SPEAr DMA and S/PDIF
         - New CODEC drivers for Dialog DA732x, ST STA529, ST-Ericsson AB8500,
           TI Isabelle and Wolfson Microelectronics WM5102 and WM5110
         - DAPM fixes for the recent locking changes
         - Fix for _PRE and _POST widgets (which have been broken for a few
           releases now)
         - A couple of minor driver updates
      
        Misc
         - Conversion to new dev_pm_ops in platform and PCI drivers
         - LTC support and some fixes in PCXHR driver
         - A few fixes and PM support for ISA OPti9xx and WSS cards
         - Some TLV code cleanup
         - Move driver-specific headers from include/sound to local dirs"
      
      * tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (212 commits)
        ASoC: dapm: Fix _PRE and _POST events for DAPM performance improvements
        ALSA: hda - add dock support for Thinkpad X230 Tablet
        ALSA: hda - Turn on PIN_OUT from hdmi playback prepare.
        ASoC imx-audmux: add MX31_AUDMUX_PORT7_SSI_PINS_7 define
        ASoC: littlemill: Add userspace control of the WM1250 I/O
        ASoC: wm8994: Update micdet for irqdomain conversion
        ALSA: hda - make sure alc268 does not OOPS on codec parse
        ALSA: hda - Add support for Realtek ALC282
        ALSA: hda - Fix index number conflicts of phantom jacks
        ALSA: opti9xx: Fix section mismatch by PM support
        ALSA: snd-opti9xx: Implement suspend/resume
        ALSA: hda - Add new GPU codec ID to snd-hda
        ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCH
        ALSA: hda - add Haswell HDMI codec id
        ALSA: hda - Add DeviceID for Haswell HDA
        ALSA: wss_lib: Fix resume on Yamaha OPL3-SAx
        ALSA: wss_lib: fix suspend/resume
        ALSA: es1938: replace TLV_DB_RANGE_HEAD with DECLARE_TLV_DB_RANGE
        ALSA: tlv: add DECLARE_TLV_DB_RANGE()
        ALSA: tlv: add DECLARE_TLV_CONTAINER()
        ...
      dbf7b591
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial · d14b7a41
      Linus Torvalds authored
      Pull trivial tree from Jiri Kosina:
       "Trivial updates all over the place as usual."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (29 commits)
        Fix typo in include/linux/clk.h .
        pci: hotplug: Fix typo in pci
        iommu: Fix typo in iommu
        video: Fix typo in drivers/video
        Documentation: Add newline at end-of-file to files lacking one
        arm,unicore32: Remove obsolete "select MISC_DEVICES"
        module.c: spelling s/postition/position/g
        cpufreq: Fix typo in cpufreq driver
        trivial: typo in comment in mksysmap
        mach-omap2: Fix typo in debug message and comment
        scsi: aha152x: Fix sparse warning and make printing pointer address more portable.
        Change email address for Steve Glendinning
        Btrfs: fix typo in convert_extent_bit
        via: Remove bogus if check
        netprio_cgroup.c: fix comment typo
        backlight: fix memory leak on obscure error path
        Documentation: asus-laptop.txt references an obsolete Kconfig item
        Documentation: ManagementStyle: fixed typo
        mm/vmscan: cleanup comment error in balance_pgdat
        mm: cleanup on the comments of zone_reclaim_stat
        ...
      d14b7a41
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · e8ff13b0
      Linus Torvalds authored
      Pull HID updates from Jiri Kosina:
       "The list of changes worth pointing out explicitly:
      
        - We are getting 'UHID', which is a new framework for implementing HID
          transport drivers in userspace (this is different from HIDRAW, which
          is transport-independent and provides report parsing facilities;
          uhid is for the other (transport) part of the pipeline).
      
          It's needed for (and currently being used by) Bluetooth-LowEnergy,
          as its specification mandates things we don't want in the kernel.
      
          Written by David Herrmann.
      
        - there have been quite a few bugs in runtime suspend/resume paths
          (probably never reported to actually happen in the wild, but still).
          Alan Stern fixed those.
      
        - a few other driver updates and fixes and random new device support."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (45 commits)
        HID: add ASUS AIO keyboard model AK1D
        HID: add support for Cypress barcode scanner 04B4:ED81
        HID: Allow drivers to be their own listener
        HID: usbhid: fix error paths in suspend
        HID: usbhid: check for suspend or reset before restarting
        HID: usbhid: replace HID_REPORTED_IDLE with HID_SUSPENDED
        HID: usbhid: inline some simple routines
        HID: usbhid: fix autosuspend calls
        HID: usbhid: fix use-after-free bug
        HID: hid-core: optimize in case of hidraw
        HID: hidraw: fix list->buffer memleak
        HID: uhid: Fix sending events with invalid data
        HID: roccat: added sensor sysfs attribute for Savu
        HID: Add driver for Holtek based keyboards with broken HID
        HID: Add suport for the brightness control keys on HP keyboards
        HID: magicmouse: Implement Multi-touch Protocol B (MT-B)
        HID: magicmouse: Removing report_touches switch
        HID: roccat: rename roccat_common functions to roccat_common2
        HID: roccat: fix wrong hid_err usage on struct usb_device
        HID: roccat: move functionality to roccat-common
        ...
      e8ff13b0
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 0cd5ff59
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New drivers for DA9052/53 PMIC as well as HIH-6130/HIH-6131 humidity
        and temperature sensors.
      
        Convert drivers to use devm_ functions and to use dev_pm_ops.  Address
        a couple of Coverity errors/warnings as well as compile warnings.
        Some functional improvements in applesmc driver."
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (72 commits)
        hwmon: (applesmc) Ignore some temperature registers
        hwmon: (applesmc) Allow negative temperature values
        hwmon: (s3c-hwmon) Use devm_kzalloc instead of kzalloc
        hwmon: (w83781d) Fix compile warning
        hwmon: (applesmc) Shorten minimum wait time
        hwmon: (exynos4_tmu) Use struct dev_pm_ops for power management
        hwmon: (gpio-fan) Use struct dev_pm_ops for power management
        hwmon: (abituguru3) Use struct dev_pm_ops for power management
        hwmon: (abituguru) Use struct dev_pm_ops for power management
        hwmon: (acpi_power_meter) Fix unintentional integer overflow
        hwmon: (acpi_power_meter) Cleanup and optimizations
        hwmon: Honeywell Humidicon HIH-6130/HIH-6131 humidity and temperature sensor driver
        hwmon: (applesmc) Skip sensor mapping
        hwmon: (ntc_thermistor) Ensure that data->name string is terminated
        hwmon: (w83l785ts) Convert to use devm_ functions
        hwmon: (w83l785ts) Simplify code and improve readability
        hwmon: (smsc47m192) Convert to use devm_ functions
        hwmon: (smsc47m1) Convert to use devm_ functions
        hwmon: (smsc47b397) Convert to use devm_ functions
        hwmon: (k8temp) Convert to use devm_ functions
        ...
      0cd5ff59
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 3539fc54
      Linus Torvalds authored
      Pull watchdog changes from Wim Van Sebroeck:
       - conversion of iTCO_wdt and orion_wdt to the generic watchdog API
       - uses module_platform_driver() for s3c2410_wdt
       - Adds support for Jetway JNF99 Motherboard
       - various fixes
      
      * git://www.linux-watchdog.org/linux-watchdog:
        watchdog: orion_wdt: Convert driver to watchdog core
        watchdog: s3c2410_wdt: Use module_platform_driver()
        watchdog: sch311x_wdt: Fix Polarity when starting watchdog
        Watchdog: OMAP: Fix the runtime pm code to avoid module getting stuck intransition state.
        watchdog: ie6xx_wdt: section mismatch in ie6xx_wdt_probe()
        watchdog: bcm63xx_wdt: fix driver section mismatch
        watchdog: iTCO_wdt.c: convert to watchdog core
        char/ipmi: remove local ioctl defines replaced by generic ones
        watchdog: xilinx: Read clock frequency directly from DT node
        watchdog: coh901327_wdt: use clk_prepare/unprepare
        watchdog: f71808e_wdt: Add support for Jetway JNF99 motherboard
      3539fc54
    • Linus Torvalds's avatar
      Merge tag 'stable/for-linus-3.6-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm · 2b849570
      Linus Torvalds authored
      Pull frontswap updates from Konrad Rzeszutek Wilk:
       "Cleanups in code and documentation.  Little bit of refactoring for
        cleaner look."
      
      * tag 'stable/for-linus-3.6-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm:
        mm/frontswap: cleanup doc and comment error
        mm: frontswap: remove unneeded headers
        mm: frontswap: split out function to clear a page out
        mm: frontswap: remove unnecessary check during initialization
        mm: frontswap: make all branches of if statement in put page consistent
        mm: frontswap: split frontswap_shrink further to simplify locking
        mm: frontswap: split out __frontswap_unuse_pages
        mm: frontswap: split out __frontswap_curr_pages
        mm: frontswap: trivial coding convention issues
        mm: frontswap: remove casting from function calls through ops structure
      2b849570
    • Linus Torvalds's avatar
      Merge tag 'stable/for-linus-3.6-rc0-tag' of... · 62c4d9af
      Linus Torvalds authored
      Merge tag 'stable/for-linus-3.6-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      Pull Xen update from Konrad Rzeszutek Wilk:
       "Features:
         * Performance improvement to lower the amount of traps the hypervisor
           has to do 32-bit guests.  Mainly for setting PTE entries and
           updating TLS descriptors.
         * MCE polling driver to collect hypervisor MCE buffer and present
           them to /dev/mcelog.
         * Physical CPU online/offline support.  When an privileged guest is
           booted it is present with virtual CPUs, which might have an 1:1 to
           physical CPUs but usually don't.  This provides mechanism to
           offline/online physical CPUs.
        Bug-fixes for:
         * Coverity found fixes in the console and ACPI processor driver.
         * PVonHVM kexec fixes along with some cleanups.
         * Pages that fall within E820 gaps and non-RAM regions (and had been
           released to hypervisor) would be populated back, but potentially in
           non-RAM regions."
      
      * tag 'stable/for-linus-3.6-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen: populate correct number of pages when across mem boundary (v2)
        xen PVonHVM: move shared_info to MMIO before kexec
        xen: simplify init_hvm_pv_info
        xen: remove cast from HYPERVISOR_shared_info assignment
        xen: enable platform-pci only in a Xen guest
        xen/pv-on-hvm kexec: shutdown watches from old kernel
        xen/x86: avoid updating TLS descriptors if they haven't changed
        xen/x86: add desc_equal() to compare GDT descriptors
        xen/mm: zero PTEs for non-present MFNs in the initial page table
        xen/mm: do direct hypercall in xen_set_pte() if batching is unavailable
        xen/hvc: Fix up checks when the info is allocated.
        xen/acpi: Fix potential memory leak.
        xen/mce: add .poll method for mcelog device driver
        xen/mce: schedule a workqueue to avoid sleep in atomic context
        xen/pcpu: Xen physical cpus online/offline sys interface
        xen/mce: Register native mce handler as vMCE bounce back point
        x86, MCE, AMD: Adjust initcall sequence for xen
        xen/mce: Add mcelog support for Xen platform
      62c4d9af
    • Linus Torvalds's avatar
      Merge tag 'kvm-3.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 5fecc9d8
      Linus Torvalds authored
      Pull KVM updates from Avi Kivity:
       "Highlights include
        - full big real mode emulation on pre-Westmere Intel hosts (can be
          disabled with emulate_invalid_guest_state=0)
        - relatively small ppc and s390 updates
        - PCID/INVPCID support in guests
        - EOI avoidance; 3.6 guests should perform better on 3.6 hosts on
          interrupt intensive workloads)
        - Lockless write faults during live migration
        - EPT accessed/dirty bits support for new Intel processors"
      
      Fix up conflicts in:
       - Documentation/virtual/kvm/api.txt:
      
         Stupid subchapter numbering, added next to each other.
      
       - arch/powerpc/kvm/booke_interrupts.S:
      
         PPC asm changes clashing with the KVM fixes
      
       - arch/s390/include/asm/sigp.h, arch/s390/kvm/sigp.c:
      
         Duplicated commits through the kvm tree and the s390 tree, with
         subsequent edits in the KVM tree.
      
      * tag 'kvm-3.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (93 commits)
        KVM: fix race with level interrupts
        x86, hyper: fix build with !CONFIG_KVM_GUEST
        Revert "apic: fix kvm build on UP without IOAPIC"
        KVM guest: switch to apic_set_eoi_write, apic_write
        apic: add apic_set_eoi_write for PV use
        KVM: VMX: Implement PCID/INVPCID for guests with EPT
        KVM: Add x86_hyper_kvm to complete detect_hypervisor_platform check
        KVM: PPC: Critical interrupt emulation support
        KVM: PPC: e500mc: Fix tlbilx emulation for 64-bit guests
        KVM: PPC64: booke: Set interrupt computation mode for 64-bit host
        KVM: PPC: bookehv: Add ESR flag to Data Storage Interrupt
        KVM: PPC: bookehv64: Add support for std/ld emulation.
        booke: Added crit/mc exception handler for e500v2
        booke/bookehv: Add host crit-watchdog exception support
        KVM: MMU: document mmu-lock and fast page fault
        KVM: MMU: fix kvm_mmu_pagetable_walk tracepoint
        KVM: MMU: trace fast page fault
        KVM: MMU: fast path of handling guest page fault
        KVM: MMU: introduce SPTE_MMU_WRITEABLE bit
        KVM: MMU: fold tlb flush judgement into mmu_spte_update
        ...
      5fecc9d8
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next · 3c4cfade
      Linus Torvalds authored
      Pull networking changes from David S Miller:
      
       1) Remove the ipv4 routing cache.  Now lookups go directly into the FIB
          trie and use prebuilt routes cached there.
      
          No more garbage collection, no more rDOS attacks on the routing
          cache.  Instead we now get predictable and consistent performance,
          no matter what the pattern of traffic we service.
      
          This has been almost 2 years in the making.  Special thanks to
          Julian Anastasov, Eric Dumazet, Steffen Klassert, and others who
          have helped along the way.
      
          I'm sure that with a change of this magnitude there will be some
          kind of fallout, but such things ought the be simple to fix at this
          point.  Luckily I'm not European so I'll be around all of August to
          fix things :-)
      
          The major stages of this work here are each fronted by a forced
          merge commit whose commit message contains a top-level description
          of the motivations and implementation issues.
      
       2) Pre-demux of established ipv4 TCP sockets, saves a route demux on
          input.
      
       3) TCP SYN/ACK performance tweaks from Eric Dumazet.
      
       4) Add namespace support for netfilter L4 conntrack helpers, from Gao
          Feng.
      
       5) Add config mechanism for Energy Efficient Ethernet to ethtool, from
          Yuval Mintz.
      
       6) Remove quadratic behavior from /proc/net/unix, from Eric Dumazet.
      
       7) Support for connection tracker helpers in userspace, from Pablo
          Neira Ayuso.
      
       8) Allow userspace driven TX load balancing functions in TEAM driver,
          from Jiri Pirko.
      
       9) Kill off NLMSG_PUT and RTA_PUT macros, more gross stuff with
          embedded gotos.
      
      10) TCP Small Queues, essentially minimize the amount of TCP data queued
          up in the packet scheduler layer.  Whereas the existing BQL (Byte
          Queue Limits) limits the pkt_sched --> netdevice queuing levels,
          this controls the TCP --> pkt_sched queueing levels.
      
          From Eric Dumazet.
      
      11) Reduce the number of get_page/put_page ops done on SKB fragments,
          from Alexander Duyck.
      
      12) Implement protection against blind resets in TCP (RFC 5961), from
          Eric Dumazet.
      
      13) Support the client side of TCP Fast Open, basically the ability to
          send data in the SYN exchange, from Yuchung Cheng.
      
          Basically, the sender queues up data with a sendmsg() call using
          MSG_FASTOPEN, then they do the connect() which emits the queued up
          fastopen data.
      
      14) Avoid all the problems we get into in TCP when timers or PMTU events
          hit a locked socket.  The TCP Small Queues changes added a
          tcp_release_cb() that allows us to queue work up to the
          release_sock() caller, and that's what we use here too.  From Eric
          Dumazet.
      
      15) Zero copy on TX support for TUN driver, from Michael S. Tsirkin.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1870 commits)
        genetlink: define lockdep_genl_is_held() when CONFIG_LOCKDEP
        r8169: revert "add byte queue limit support".
        ipv4: Change rt->rt_iif encoding.
        net: Make skb->skb_iif always track skb->dev
        ipv4: Prepare for change of rt->rt_iif encoding.
        ipv4: Remove all RTCF_DIRECTSRC handliing.
        ipv4: Really ignore ICMP address requests/replies.
        decnet: Don't set RTCF_DIRECTSRC.
        net/ipv4/ip_vti.c: Fix __rcu warnings detected by sparse.
        ipv4: Remove redundant assignment
        rds: set correct msg_namelen
        openvswitch: potential NULL deref in sample()
        tcp: dont drop MTU reduction indications
        bnx2x: Add new 57840 device IDs
        tcp: avoid oops in tcp_metrics and reset tcpm_stamp
        niu: Change niu_rbr_fill() to use unlikely() to check niu_rbr_add_page() return value
        niu: Fix to check for dma mapping errors.
        net: Fix references to out-of-scope variables in put_cmsg_compat()
        net: ethernet: davinci_emac: add pm_runtime support
        net: ethernet: davinci_emac: Remove unnecessary #include
        ...
      3c4cfade
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · e017507f
      Linus Torvalds authored
      Pull s390 changes from Martin Schwidefsky:
       "No new functions, a few changes to make the code more robust, some
        cleanups and bug fixes."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (21 commits)
        s390/vtimer: rework virtual timer interface
        s390/dis: Add the servc instruction to the disassembler.
        s390/comments: unify copyright messages and remove file names
        s390/lgr: Add init check to lgr_info_log()
        s390/cpu init: use __get_cpu_var instead of per_cpu
        s390/idle: reduce size of s390_idle_data structure
        s390/idle: fix sequence handling vs cpu hotplug
        s390/ap: resend enable adapter interrupt request.
        s390/hypfs: Add missing get_next_ino()
        s390/dasd: add shutdown action
        s390/ipl: Fix ipib handling for "dumpreipl" shutdown action
        s390/smp: make absolute lowcore / cpu restart parameter accesses more robust
        s390/vmlogrdr: cleanup driver attribute usage
        s390/vmlogrdr: cleanup device attribute usage
        s390/ccwgroup: remove unused ccwgroup_device member
        s390/cio/chp: cleanup attribute usage
        s390/sigp: use sigp order code defines in assembly code
        s390/smp: use sigp cpu status definitions
        s390/smp/kvm: unifiy sigp definitions
        s390/smp: remove redundant check
        ...
      e017507f
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin · 759e2a25
      Linus Torvalds authored
      Pull blackfin changes from Bob Liu:
       "The big changes are adding PM and HDMI support for bf60x, other
        patches are various bug fix and code cleanup."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin: (48 commits)
        bf60x: fix build warning
        PM: add BF60x flash suspend and resume support
        blackfin: twi: read twi mmr via bfin_read macro
        dpm: deepsleep: reserve stack
        bf60x: cpufreq: fix anomaly 05000273
        bf609: add adv7511 display support
        blackfin: cplb-nompu: fix ROM cplb size for bf609-ezkit
        bf60x: Add double fault, hardware error and NMI SEC handler
        bf60x: update anomaly id in serial and twi driver headers.
        bf60x: vs6624 pin update
        bf60x: add default anomaly setting.
        bf60x: update bf60x anomaly list.
        bf60x: sec: Enable sec interrupt source priority configuration.
        bf60x: sec: Clean up interrupt initialization code for SEC.
        bf609: reuse bf5xx-i2s-pcm.c as i2s pcm driver
        bf561: add capabilities in adv7183_inputs
        bf609: convert vs6624 blank_clocks to black_pixels
        blackfin: fix musb macro name
        cleanup: sec and linkport only built on bf60x
        bfin: pint: add pint suspend and resume
        ...
      759e2a25
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming · 90e66dd9
      Linus Torvalds authored
      Pull C6X changes from Mark Salter:
      
        - remove use of legacy irqs which really wasn't needed
        - add support for C66x SoC on EVMC6678 board
        - clean up compiler warning
      
      * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
        C6X: clean up compiler warning
        C6X: add basic support for TMS320C6678 SoC
        C6X: remove dependence on legacy IRQs
        C6X: remove megamod-pic requirement on direct-mapped core pic
      90e66dd9
    • Laurent Pinchart's avatar
      i2c-omap: Add support for I2C_M_STOP message flag · fb604a3d
      Laurent Pinchart authored
      Generate a stop condition after each message marked with I2C_M_STOP.
      
      [JD: Add I2C_FUNC_PROTOCOL_MANGLING.]
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      fb604a3d
    • Laurent Pinchart's avatar
      i2c: Fall back to emulated SMBus if the operation isn't supported natively · 72fc2c7f
      Laurent Pinchart authored
      Adapter drivers might support only a subset of the SMBus operations
      natively. Those drivers currently have to manually emulate unsupported
      operations using I2C.
      
      Make the i2c_smbus_xfer() function fall back to
      i2c_smbus_xfer_emulated() when the adapter's .smbus_xfer() operation
      returns -EOPNOTSUPP, like it already does when the .smbus_xfer()
      operation isn't available at all.
      
      [JD: Minor optimization.]
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      72fc2c7f
    • Laurent Pinchart's avatar
      i2c: Add SCCB support · d47726c5
      Laurent Pinchart authored
      SCCB is a serial communication bus developed by Omnivision. Its 2-wire
      mode is very similar to SMBus byte data transactions, but requires the
      controller to ignore the ACK bit and to insert a stop condition after
      each message.
      
      Add a device SCCB flag and a message stop flag to be passed to
      controller drivers.
      
      [JD: Kill rogue definition in go7007 driver.]
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      d47726c5
    • Emmanuel Deloget's avatar
      i2c-tiny-usb: Add support for the Robofuzz OSIF USB/I2C converter · 68a7602f
      Emmanuel Deloget authored
      Robofuzz OSIF is a generic USB/iIC interface that embeds an ATMega8A
      AVR-RISC microcontroler.
      
      The device is based upon Till Harbaum's i2c-tiny-usb and although it
      enhances the original design with further functionnalities it still
      maintain compatibility with it with respect to the USB/I2C interface.
      Signed-off-by: default avatarEmmanuel Deloget <logout@free.fr>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      68a7602f
    • Daniel Kurtz's avatar
      i2c-i801: Enable IRQ for byte_by_byte transactions · d3ff6ce4
      Daniel Kurtz authored
      Byte-by-byte transactions are used primarily for accessing I2C devices
      with an SMBus controller.  For these transactions, for each byte that is
      read or written, the SMBus controller generates a BYTE_DONE IRQ.  The isr
      reads/writes the next byte, and clears the IRQ flag to start the next byte.
      On the penultimate IRQ, the isr also sets the LAST_BYTE flag.
      
      There is no locking around the cmd/len/count/data variables, since the
      I2C adapter lock ensures there is never multiple simultaneous transactions
      for the same device, and the driver thread never accesses these variables
      while interrupts might be occurring.
      
      The end result is faster I2C block read and write transactions.
      
      Note: This patch has only been tested and verified by doing I2C read and
      write block transfers on Cougar Point 6 Series PCH, as well as I2C read
      block transfers on ICH5.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      d3ff6ce4
    • Jean Delvare's avatar
      i2c-i801: Enable interrupts on ICH5/7/8/9/10 · 29b60854
      Jean Delvare authored
      Enable interrupts on more devices. ICH5, ICH7(-M) and ICH10 have been
      tested to work OK. ICH8 and ICH9 are expected to work just fine as
      they are very close to ICH7 and ICH10.
      
      Ultimately we want to enable this feature on at least every device
      since the ICH5, but for now we limit the exposure. We'll enable it for
      other devices if we don't get negative feedback.
      
      As a bonus, let the user know when interrupts are used.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Daniel Kurtz <djkurtz@chromium.org>
      29b60854
    • Daniel Kurtz's avatar
      i2c-i801: Enable IRQ for SMBus transactions · 636752bc
      Daniel Kurtz authored
      Add a new 'feature' to i2c-i801 to enable using PCI interrupts.
      When the feature is enabled, then an isr is installed for the device's
      PCI IRQ.
      
      An I2C/SMBus transaction is always terminated by one of the following
      interrupt sources: FAILED, BUS_ERR, DEV_ERR, or on success: INTR.
      
      When the isr fires for one of these cases, it sets the ->status variable
      and wakes up the waitq.  The waitq then saves off the status code, and
      clears ->status (in preparation for some future transaction).
      The SMBus controller generates an INTR irq at the end of each
      transaction where INTREN was set in the HST_CNT register.
      
      No locking is needed around accesses to priv->status since all writes to
      it are serialized: it is only ever set once in the isr at the end of a
      transaction, and cleared while no interrupts can occur.  In addition, the
      I2C adapter lock guarantees that entire I2C transactions for a single
      adapter are always serialized.
      
      For this patch, the INTREN bit is set only for SMBus block, byte and word
      transactions, but not for I2C reads or writes.  The use of the DS
      (BYTE_DONE) interrupt with byte-by-byte I2C transactions is implemented in
      a subsequent patch.
      
      The interrupt feature has only been enabled for COUGARPOINT hardware.
      In addition, it is disabled if SMBus is using the SMI# interrupt.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      636752bc
    • Jean Delvare's avatar
      i2c-i801: Consolidate polling · 6cad93c4
      Jean Delvare authored
      (Based on earlier work by Daniel Kurtz.)
      
      Come up with a consistent, driver-wide strategy for event polling. For
      intermediate steps of byte-by-byte block transactions, check for
      BYTE_DONE or any error flag being set. At the end of every transaction
      (regardless of PEC being used), check for both BUSY being cleared and
      INTR or any error flag being set. This ensures proper action for all
      transaction types.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Daniel Kurtz <djkurtz@chromium.org>
      6cad93c4
    • Daniel Kurtz's avatar
      i2c-i801: Drop ENABLE_INT9 · 37af8711
      Daniel Kurtz authored
      Later patches enable interrupts.  This preliminary patch removes the older
      unsupported ENABLE_INT9 flag.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      37af8711
    • Daniel Kurtz's avatar
      i2c-i801: Rename some SMBHSTCNT bit constants · edbeea63
      Daniel Kurtz authored
      Rename the SMBHSTCNT register bit access constants to match the style of
      other register bits.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      edbeea63
    • Daniel Kurtz's avatar
      i2c-i801: Check and return errors during byte-by-byte transfers · 70a1cc19
      Daniel Kurtz authored
      If an error is detected in the polling loop, abort the transaction and
      return an error code.
      
       * DEV_ERR is set if the device does not respond with an acknowledge, and
      the SMBus controller times out (minimum 25ms).
       * BUS_ERR is set if a bus arbitration collision is detected.  In other
      words, when the SMBus controller tries to generate a START condition, but
      detects that the SMBDATA is being held low, usually by another SMBus/I2C
      master.
       * FAILED is only set if a transaction is stopped by software (using
      the SMBHSTCNT KILL bit).
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      70a1cc19
    • Daniel Kurtz's avatar
      i2c-i801: Clear only status bits in HST_STS · 0ba8b8bf
      Daniel Kurtz authored
      Writing back the whole status register could clear unwanted bits.
      In particular, it could clear the "INUSE_STS" bit, which is a
      'hardware semaphore', that might be useful to use some day.
      To prepare for this, let's ban writing back the whole status to register
      HST_STS, of which this is the only instance.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      0ba8b8bf
    • Daniel Kurtz's avatar
      i2c-i801: Refactor use of LAST_BYTE in i801_block_transaction_byte_by_byte · efa3cb15
      Daniel Kurtz authored
      As a slight optimization, pull some logic out of the polling loop during
      byte-by-byte transactions by just setting the I801_LAST_BYTE bit, as
      defined in the i801 (PCH) datasheet, when reading the last byte of a
      byte-by-byte I2C_SMBUS_READ.
      Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      efa3cb15
    • Fabio Estevam's avatar
      i2c-smbus: Use module_i2c_driver() · fda2f4af
      Fabio Estevam authored
      Using module_i2c_driver() makes the code smaller and cleaner.
      Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      fda2f4af
    • Jean Delvare's avatar
      i2c/writing-clients: Mention module_i2c_driver() · 9cd3f2e8
      Jean Delvare authored
      Based on a previous patch from Peter Meerwald.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Acked-by: default avatarPeter Meerwald <p.meerwald@bct-electronic.com>
      9cd3f2e8
    • Andrew Armenia's avatar
      i2c-piix4: Support AMD auxiliary SMBus controller · 2a2f7404
      Andrew Armenia authored
      Some AMD chipsets, such as the SP5100, have an auxiliary SMBus
      controller with a second set of registers. This patch adds
      support for this auxiliary controller.
      
      Tested on ASUS KCMA-D8 motherboard.
      Signed-off-by: default avatarAndrew Armenia <andrew@asquaredlabs.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      2a2f7404
    • Andrew Armenia's avatar
      i2c-piix4: Separate registration and probing code · e154bf6f
      Andrew Armenia authored
      Some chipsets have multiple sets of SMBus registers each controlling a
      separate SMBus. Supporting these chipsets properly will require registering
      multiple I2C adapters for one piix4.
      
      The code to initialize and register the i2c_adapter structure has been
      separated from piix4_probe and allows registration of a piix4 adapter
      given its base address. Note that the i2c_adapter and i2c_piix4_adapdata
      structures are now dynamically allocated.
      Signed-off-by: default avatarAndrew Armenia <andrew@asquaredlabs.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      e154bf6f
    • Andrew Armenia's avatar
      i2c-piix4: Eliminate piix4_smba global variable · 14a8086d
      Andrew Armenia authored
      Some chipsets have multiple sets of piix4-compatible SMBus registers.
      Eliminating the global variable will allow these chipsets to be fully
      supported.
      
      Return value from piix4_setup and piix4_sb800_setup now returns the smba
      value detected. This is stored in a struct i2c_piix4_adapdata. Thus
      the global variable is eliminated.
      Signed-off-by: default avatarAndrew Armenia <andrew@asquaredlabs.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      14a8086d
    • Axel Lin's avatar
      i2c/busses: Use module_pci_driver · 56f21788
      Axel Lin authored
      Convert the drivers in drivers/i2c/busses/* to usemodule_pci_driver()
      macro which makes the code smaller and a bit simpler.
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Acked-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Rudolf Marek <r.marek@assembler.cz>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
      Cc: Tomoya MORINAGA <tomoya.rohm@gmail.com>
      56f21788
    • Guenter Roeck's avatar
      i2c: Update Guenter Roeck's e-mail address · 83a638df
      Guenter Roeck authored
      My old e-mail address won't be valid for much longer. Time to update it.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      83a638df
    • Jiri Kosina's avatar
      Merge branch 'uhid' into for-linus · c062c4d1
      Jiri Kosina authored
      Conflicts:
      	drivers/hid/Kconfig
      c062c4d1
    • Jiri Kosina's avatar
      Merge branches 'hidraw', 'magicmouse', 'multitouch', 'roccat', 'suspend-fixes'... · 929bd380
      Jiri Kosina authored
      Merge branches 'hidraw', 'magicmouse', 'multitouch', 'roccat', 'suspend-fixes' and 'upstream' into for-linus
      929bd380
    • Jan-Simon Möller's avatar
      Fix typo in include/linux/clk.h . · a58b3a4a
      Jan-Simon Möller authored
      Signed-off-by: default avatarJan-Simon Möller <jansimon.moeller@gmx.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      a58b3a4a
    • Masanari Iida's avatar
      pci: hotplug: Fix typo in pci · 367fa982
      Masanari Iida authored
      Correct spelling typo in drivers/pci/hotplug.
      Signed-off-by: default avatarMasanari Iida <standby24x7@gmail.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      367fa982
    • Masanari Iida's avatar
      iommu: Fix typo in iommu · 07db0409
      Masanari Iida authored
      Correct spelling typo in debug messages and comments
      in drivers/iommu.
      Signed-off-by: default avatarMasanari Iida <standby24x7@gmail.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      07db0409