1. 14 Aug, 2014 36 commits
    • Vincent Zwanenburg's avatar
      Add a new PID/VID 0227/0930 for AR3012. · 89d2975f
      Vincent Zwanenburg authored
      usb devices info:
      
      T:  Bus=01 Lev=02 Prnt=05 Port=00 Cnt=01 Dev#= 20 Spd=12   MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0930 ProdID=0227 Rev= 0.02
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: default avatarVincent Zwanenburg <vincentz@topmail.ie>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      89d2975f
    • Varka Bhadram's avatar
      MAINTAINERS: update maintainers info · ebef9c12
      Varka Bhadram authored
      adds the mailing list address for bluetooth 6loWPAN and
      IEEE-802.15.4 subsystems. Also adds web page info.
      Signed-off-by: default avatarVarka Bhadram <varkab@cdac.in>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      ebef9c12
    • Loic Poulain's avatar
      Bluetooth: Fix HCI H5 corrupted ack value · 4807b518
      Loic Poulain authored
      In this expression: seq = (seq - 1) % 8
      seq (u8) is implicitly converted to an int in the arithmetic operation.
      So if seq value is 0, operation is ((0 - 1) % 8) => (-1 % 8) => -1.
      The new seq value is 0xff which is an invalid ACK value, we expect 0x07.
      It leads to frequent dropped ACK and retransmission.
      Fix this by using '&' binary operator instead of '%'.
      Signed-off-by: default avatarLoic Poulain <loic.poulain@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Cc: stable@vger.kernel.org
      4807b518
    • Johan Hedberg's avatar
      Bluetooth: Convert SMP to use l2cap_chan infrastructure · 5d88cc73
      Johan Hedberg authored
      Now that we have all the necessary pieces in place we can fully convert
      SMP to use the L2CAP channel infrastructure. This patch adds the
      necessary callbacks and removes the now unneeded conn->smp_chan pointer.
      
      One notable behavioral change in this patch comes from the following
      code snippet:
      
      -       case L2CAP_CID_SMP:
      -               if (smp_sig_channel(conn, skb))
      -                       l2cap_conn_del(conn->hcon, EACCES);
      
      This piece of code was essentially forcing a disconnection if garbage
      SMP data was received. The l2cap_conn_del() function is private to
      l2cap_conn.c so we don't have access to it anymore when using the L2CAP
      channel callbacks. Therefore, the behavior of the new code is simply to
      return errors in the recv() callback (which is simply the old
      smp_sig_channel()), but no disconnection will occur.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      5d88cc73
    • Johan Hedberg's avatar
      Bluetooth: Make AES crypto context private to SMP · defce9e8
      Johan Hedberg authored
      Now that we have per-adapter SMP data thanks to the root SMP L2CAP
      channel we can take advantage of it and attach the AES crypto context
      (only used for SMP) to it. This means that the smp_irk_matches() and
      smp_generate_rpa() function can be converted to internally handle the
      AES context.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      defce9e8
    • Johan Hedberg's avatar
      Bluetooth: Add SMP L2CAP channel skeleton · 70db83c4
      Johan Hedberg authored
      This patch creates the initial SMP L2CAP channels and a skeleton for
      their callbacks. There is one per-adapter channel created upon adapter
      registration, and then one channel per-connection created through the
      new_connection callback. The channels are registered with the reserved
      CID 0x1f for now in order to not conflict with existing SMP
      functionality. Once everything is in place the value can be changed to
      what it should be, i.e. L2CAP_CID_SMP.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      70db83c4
    • Johan Hedberg's avatar
      Bluetooth: Add more L2CAP convenience callbacks · f193844c
      Johan Hedberg authored
      In preparation for converting SMP to use l2cap_chan it's useful to add a
      few more callback helpers so that smp.c won't need to define all of its
      own.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      f193844c
    • Johan Hedberg's avatar
      Bluetooth: Move SMP (de)initialization to smp.c · 711eafe3
      Johan Hedberg authored
      As preparation for moving SMP to use l2cap_chan infrastructure we need
      to move the (de)initialization functions to smp.c (where they'll
      eventually need access to the local L2CAP channel callbacks).
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      711eafe3
    • Johan Hedberg's avatar
      Bluetooth: Move SMP initialization after HCI init · 54506918
      Johan Hedberg authored
      First of all, it's wasteful to initialize SMP if it's never going to be
      used (e.g. on non-LE controllers). Second of all, when we move to use
      l2cap_chan we need to know the real local address, meaning we must have
      completed at least part of the HCI init. This patch moves the SMP
      initialization to after the HCI init procedure and makes it depend on
      whether the controller actually supports LE.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      54506918
    • Johan Hedberg's avatar
      Bluetooth: Refactor SMP (de)initialization into separate functions · 222916e3
      Johan Hedberg authored
      As preparation for converting SMP to use the l2cap_chan infrastructure
      refactor the (de)initialization into separate functions.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      222916e3
    • Johan Hedberg's avatar
      Bluetooth: Fix IRK lookup when tfm_aes is not available · 893edede
      Johan Hedberg authored
      If the AES crypto has not been initialized properly we should cleanly
      return from the hci_find_irk_by_rpa() function. Right now this will not
      happen in practice, but once (in subsequent patches) SMP init is moved
      to after the HCI init procedure it is possible that the pointer is NULL.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      893edede
    • Johan Hedberg's avatar
      Bluetooth: Fix hci_update_random_address() error return for no crypto · fabed38f
      Johan Hedberg authored
      If the AES crypto context is not available we cannot generate new RPAs.
      We should therefore cleanly return an error from the function
      responsible for updating the random address.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      fabed38f
    • Johan Hedberg's avatar
      Bluetooth: Fix using HCI_CONN_LE_SMP_PEND to check for SMP context · d3368605
      Johan Hedberg authored
      The code is consistently using the HCI_CONN_LE_SMP_PEND flag check for
      the existence of the SMP context, with the exception of this one place
      in smp_sig_channel(). This patch converts the place to use the flag just
      like all other instances.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      d3368605
    • Johan Hedberg's avatar
      Bluetooth: Call l2cap_le_conn_ready after notifying channels · 79a05727
      Johan Hedberg authored
      For most cases it makes no difference whether l2cap_le_conn_ready() is
      called before or after calling the channel ready() callbacks, however
      for upcoming SMP code we need this as the ready() callback initializes
      certain structures that a call to smp_conn_security() from
      l2cap_le_conn_ready() depends on. Therefore, move the call to
      l2cap_le_conn_ready() after iterating through and notifying channels.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      79a05727
    • Johan Hedberg's avatar
      Bluetooth: Call L2CAP teardown callback before clearing chan->conn · 72847ce0
      Johan Hedberg authored
      L2CAP channel implementations may want to still access the chan->conn
      pointer. This will particularly be the case for SMP that will want to
      clear a reference to the SMP channel in the l2cap_conn structure. The
      only user of the teardown callback so far is l2cap_sock.c and for the
      code there it makes no difference whether the callback is called before
      or after clearing the chan->conn pointer.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      72847ce0
    • Johan Hedberg's avatar
      Bluetooth: Move parts of fixed channel initialization to l2cap_add_scid · 14824308
      Johan Hedberg authored
      The l2cap_add_scid function is used for registering a fixed L2CAP
      channel. Instead of having separate initialization of the channel type
      and outgoing MTU in l2cap_sock.c it's more intuitive to do these things
      in the l2cap_add_scid function itself (and thereby make the
      functionality available to other users besides l2cap_sock.c).
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      14824308
    • Johan Hedberg's avatar
      Bluetooth: Remove special ATT data channel handling · 06171e05
      Johan Hedberg authored
      Now that we've got the fixed channel infrastructure cleaned up in a
      generic way there's no longer a need to have a dedicated function for
      handling data on the ATT channel. Instead the generic
      l2cap_data_channel() handler will be able to do the exact same thing.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      06171e05
    • Johan Hedberg's avatar
      Bluetooth: Improve fixed channel lookup based on link type · 54a1b626
      Johan Hedberg authored
      When notifying global fixed channels of new connections it doesn't make
      sense to consider channels meant for a different link type than the one
      available. This patch adds an extra parameter to the
      l2cap_global_fixed_chan() lookup function and ensures that only channels
      matching the current hci_conn type are looked up.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      54a1b626
    • Johan Hedberg's avatar
      Bluetooth: Move L2CAP fixed channel creation into l2cap_conn_cfm · e760ec12
      Johan Hedberg authored
      In order to remove special handling of fixed L2CAP channels we need to
      start creating them in a single place instead of having per-channel
      exceptions. The most natural place is the l2cap_conn_cfm() function
      which is called whenever there is a new baseband link.
      
      The only really special case so far has been the ATT socket, so in order
      not to break the code in between this patch removes the ATT special
      handling at the same time as it adds the generic fixed channel handling
      from l2cap_le_conn_ready() into the hci_conn_cfm() function. As a
      related change the channel locking in l2cap_conn_ready() becomes simpler
      and we can thereby move the smp_conn_security() call into the
      l2cap_le_conn_ready() function.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e760ec12
    • Johan Hedberg's avatar
      Bluetooth: Refactor l2cap_connect_cfm · dc0f5088
      Johan Hedberg authored
      This patch is a simple refactoring of l2cap_connect_cfm to allow easier
      extension of the function.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      dc0f5088
    • Johan Hedberg's avatar
      Bluetooth: Remove special handling of ATT in l2cap_security_cfm() · 191eb398
      Johan Hedberg authored
      With the update to sk->resume() and __l2cap_no_conn_pending() we
      no-longer need to have special handling of ATT channels in the
      l2cap_security_cfm() function. The chan->sec_level update when
      encryption has been enabled is safe to do for any kind of channel, and
      the loop takes later care of calling chan->ready() or chan->resume() if
      necessary.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      191eb398
    • Johan Hedberg's avatar
      Bluetooth: Resume BT_CONNECTED state after LE security elevation · d52deb17
      Johan Hedberg authored
      The LE ATT socket uses a special trick where it temporarily sets
      BT_CONFIG state for the duration of a security level elevation. In order
      to not require special hacks for going back to BT_CONNECTED state in the
      l2cap_core.c code the most reasonable place to resume the state is the
      resume callback. This patch adds a new flag to track the pending
      security level change and ensures that the state is set back to
      BT_CONNECTED in the resume callback in case the flag is set.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      d52deb17
    • Johan Hedberg's avatar
      Bluetooth: Fix __l2cap_no_conn_pending() usage with all channels · 5ff6f34d
      Johan Hedberg authored
      The __l2cap_no_conn_pending() function would previously only return a
      meaningful value for connection oriented channels and was therefore not
      useful for anything else. As preparation of making the L2CAP code more
      generic allow the function to be called for other channel types as well
      by returning a meaningful value for them.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      5ff6f34d
    • Johan Hedberg's avatar
      Bluetooth: Fix reference counting of global L2CAP channels · a24cce14
      Johan Hedberg authored
      When looking up entries from the global L2CAP channel list there needs
      to be a guarantee that other code doesn't go and remove the entry after
      a channel has been returned by the lookup function. This patch makes
      sure that the channel reference is incremented before the read lock is
      released in the global channel lookup functions. The patch also adds the
      corresponding l2cap_chan_put() calls once the channels pointers are
      no-longer needed.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      a24cce14
    • Johan Hedberg's avatar
      Bluetooth: Fix confusion between parent and child channel for 6lowpan · 2b293490
      Johan Hedberg authored
      The new_connection L2CAP channel callback creates a new channel based on
      the provided parent channel. The 6lowpan code was confusingly naming the
      child channel "pchan" and the parent channel "chan". This patch swaps
      the names.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      2b293490
    • Johan Hedberg's avatar
      Bluetooth: Remove redundant check for remote_key_dist · 5fcb9347
      Johan Hedberg authored
      In the smp_cmd_sign_info() function the SMP_DIST_SIGN bit is explicitly
      cleared early on in the function. This means that there's no need to
      check for it again before calling smp_distribute_keys().
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      5fcb9347
    • Johan Hedberg's avatar
      Bluetooth: Disable page scan if all whitelisted devices are connected · 22f433dc
      Johan Hedberg authored
      When we're not connectable and all whitelisted (BR/EDR) devices are
      connected it doesn't make sense to keep page scan enabled. This patch
      adds code to check for any disconnected whitelist devices and if there
      are none take the appropriate action in the hci_update_page_scan()
      function to disable page scan.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      22f433dc
    • Johan Hedberg's avatar
      Bluetooth: Create unified helper function for updating page scan · 432df05e
      Johan Hedberg authored
      Similar to our hci_update_background_scan() function we can simplify a
      lot of code by creating a unified helper function for doing page scan
      updates. This patch adds such a function to hci_core.c and updates all
      the relevant places to use it.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      432df05e
    • Johan Hedberg's avatar
      Bluetooth: Add convenience function to check for pending power off · 84c61d92
      Johan Hedberg authored
      There are several situations where we're interested in knowing whether
      we're currently in the process of powering off an adapter. This patch
      adds a convenience function for the purpose and makes it public since
      we'll soon need to access it from hci_event.c as well.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      84c61d92
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f0094b28
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Several networking final fixes and tidies for the merge window:
      
         1) Changes during the merge window unintentionally took away the
            ability to build bluetooth modular, fix from Geert Uytterhoeven.
      
         2) Several phy_node reference count bug fixes from Uwe Kleine-König.
      
         3) Fix ucc_geth build failures, also from Uwe Kleine-König.
      
         4) Fix klog false positivies when netlink messages go to network
            taps, by properly resetting the network header.  Fix from Daniel
            Borkmann.
      
         5) Sizing estimate of VF netlink messages is too small, from Jiri
            Benc.
      
         6) New APM X-Gene SoC ethernet driver, from Iyappan Subramanian.
      
         7) VLAN untagging is erroneously dependent upon whether the VLAN
            module is loaded or not, but there are generic dependencies that
            matter wrt what can be expected as the SKB enters the stack.
            Make the basic untagging generic code, and do it unconditionally.
            From Vlad Yasevich.
      
         8) xen-netfront only has so many slots in it's transmit queue so
            linearize packets that have too many frags.  From Zoltan Kiss.
      
         9) Fix suspend/resume PHY handling in bcmgenet driver, from Florian
            Fainelli"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (55 commits)
        net: bcmgenet: correctly resume adapter from Wake-on-LAN
        net: bcmgenet: update UMAC_CMD only when link is detected
        net: bcmgenet: correctly suspend and resume PHY device
        net: bcmgenet: request and enable main clock earlier
        net: ethernet: myricom: myri10ge: myri10ge.c: Cleaning up missing null-terminate after strncpy call
        xen-netfront: Fix handling packets on compound pages with skb_linearize
        net: fec: Support phys probed from devicetree and fixed-link
        smsc: replace WARN_ON() with WARN_ON_SMP()
        xen-netback: Don't deschedule NAPI when carrier off
        net: ethernet: qlogic: qlcnic: Remove duplicate object file from Makefile
        wan: wanxl: Remove typedefs from struct names
        m68k/atari: EtherNEC - ethernet support (ne)
        net: ethernet: ti: cpmac.c: Cleaning up missing null-terminate after strncpy call
        hdlc: Remove typedefs from struct names
        airo_cs: Remove typedef local_info_t
        atmel: Remove typedef atmel_priv_ioctl
        com20020_cs: Remove typedef com20020_dev_t
        ethernet: amd: Remove typedef local_info_t
        net: Always untag vlan-tagged traffic on input.
        drivers: net: Add APM X-Gene SoC ethernet driver support.
        ...
      f0094b28
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 13b102bf
      Linus Torvalds authored
      Pull Sparc fixes from David Miller:
       "Sparc bug fixes, one of which was preventing successful SMP boots with
        mainline"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Fix pcr_ops initialization and usage bugs.
        sparc64: Do not disable interrupts in nmi_cpu_busy()
        sparc: Hook up seccomp and getrandom system calls.
        sparc: fix decimal printf format specifiers prefixed with 0x
      13b102bf
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 81c02a21
      Linus Torvalds authored
      Pull x86/apic updates from Thomas Gleixner:
       "This is a major overhaul to the x86 apic subsystem consisting of the
        following parts:
      
         - Remove obsolete APIC driver abstractions (David Rientjes)
      
         - Use the irqdomain facilities to dynamically allocate IRQs for
           IOAPICs.  This is a prerequisite to enable IOAPIC hotplug support,
           and it also frees up wasted vectors (Jiang Liu)
      
         - Misc fixlets.
      
        Despite the hickup in Ingos previous pull request - caused by the
        missing fixup for the suspend/resume issue reported by Borislav - I
        strongly recommend that this update finds its way into 3.17.  Some
        history for you:
      
        This is preparatory work for physical IOAPIC hotplug.  The first
        attempt to support this was done by Yinghai and I shot it down because
        it just added another layer of obscurity and complexity to the already
        existing mess without tackling the underlying shortcomings of the
        current implementation.
      
        After quite some on- and offlist discussions, I requested that the
        design of this functionality must use generic infrastructure, i.e.
        irq domains, which provide all the mechanisms to dynamically map linux
        interrupt numbers to physical interrupts.
      
        Jiang picked up the idea and did a great job of consolidating the
        existing interfaces to manage the x86 (IOAPIC) interrupt system by
        utilizing irq domains.
      
        The testing in tip, Linux-next and inside of Intel on various machines
        did not unearth any oddities until Borislav exposed it to one of his
        oddball machines.  The issue was resolved quickly, but unfortunately
        the fix fell through the cracks and did not hit the tip tree before
        Ingo sent the pull request.  Not entirely Ingos fault, I also assumed
        that the fix was already merged when Ingo asked me whether he could
        send it.
      
        Nevertheless this work has a proper design, has undergone several
        rounds of review and the final fallout after applying it to tip and
        integrating it into Linux-next has been more than moderate.  It's the
        ground work not only for IOAPIC hotplug, it will also allow us to move
        the lowlevel vector allocation into the irqdomain hierarchy, which
        will benefit other architectures as well.  Patches are posted already,
        but they are on hold for two weeks, see below.
      
        I really appreciate the competence and responsiveness Jiang has shown
        in course of this endavour.  So I'm sure that any fallout of this will
        be addressed in a timely manner.
      
        FYI, I'm vanishing for 2 weeks into my annual kids summer camp kitchen
        duty^Wvacation, while you folks are drooling at KS/LinuxCon :) But HPA
        will have a look at the hopefully zero fallout until I'm back"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
        x86, irq, PCI: Keep IRQ assignment for PCI devices during suspend/hibernation
        x86/apic/vsmp: Make is_vsmp_box() static
        x86, apic: Remove enable_apic_mode callback
        x86, apic: Remove setup_portio_remap callback
        x86, apic: Remove multi_timer_check callback
        x86, apic: Replace noop_check_apicid_used
        x86, apic: Remove check_apicid_present callback
        x86, apic: Remove mps_oem_check callback
        x86, apic: Remove smp_callin_clear_local_apic callback
        x86, apic: Replace trampoline physical addresses with defaults
        x86, apic: Remove x86_32_numa_cpu_node callback
        x86: intel-mid: Use the new io_apic interfaces
        x86, vsmp: Remove is_vsmp_box() from apic_is_clustered_box()
        x86, irq: Clean up irqdomain transition code
        x86, irq, devicetree: Release IOAPIC pin when PCI device is disabled
        x86, irq, SFI: Release IOAPIC pin when PCI device is disabled
        x86, irq, mpparse: Release IOAPIC pin when PCI device is disabled
        x86, irq, ACPI: Release IOAPIC pin when PCI device is disabled
        x86, irq: Introduce helper functions to release IOAPIC pin
        x86, irq: Simplify the way to handle ISA IRQ
        ...
      81c02a21
    • Linus Torvalds's avatar
      Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d27c0d90
      Linus Torvalds authored
      Pull x86/efix fixes from Peter Anvin:
       "Two EFI-related Kconfig changes, which happen to touch immediately
        adjacent lines in Kconfig and thus collapse to a single patch"
      
      * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub
        x86/efi: Fix 3DNow optimization build failure in EFI stub
      d27c0d90
    • Linus Torvalds's avatar
      Merge branch 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7453f33b
      Linus Torvalds authored
      Pull x86/xsave changes from Peter Anvin:
       "This is a patchset to support the XSAVES instruction required to
        support context switch of supervisor-only features in upcoming
        silicon.
      
        This patchset missed the 3.16 merge window, which is why it is based
        on 3.15-rc7"
      
      * 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, xsave: Add forgotten inline annotation
        x86/xsaves: Clean up code in xstate offsets computation in xsave area
        x86/xsave: Make it clear that the XSAVE macros use (%edi)/(%rdi)
        Define kernel API to get address of each state in xsave area
        x86/xsaves: Enable xsaves/xrstors
        x86/xsaves: Call booting time xsaves and xrstors in setup_init_fpu_buf
        x86/xsaves: Save xstate to task's xsave area in __save_fpu during booting time
        x86/xsaves: Add xsaves and xrstors support for booting time
        x86/xsaves: Clear reserved bits in xsave header
        x86/xsaves: Use xsave/xrstor for saving and restoring user space context
        x86/xsaves: Use xsaves/xrstors for context switch
        x86/xsaves: Use xsaves/xrstors to save and restore xsave area
        x86/xsaves: Define a macro for handling xsave/xrstor instruction fault
        x86/xsaves: Define macros for xsave instructions
        x86/xsaves: Change compacted format xsave area header
        x86/alternative: Add alternative_input_2 to support alternative with two features and input
        x86/xsaves: Add a kernel parameter noxsaves to disable xsaves/xrstors
      7453f33b
    • Linus Torvalds's avatar
      Merge tag 'metag-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag · fd1cf905
      Linus Torvalds authored
      Pull metag architecture updates from James Hogan:
       "Just a couple of minor static analysis fixes, removal of a NULL check
        that should never happen, and fix an error check where an unsigned
        value was being checked to see if it was negative"
      
      * tag 'metag-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
        metag: cachepart: Fix failure check
        metag: hugetlbpage: Remove null pointer checks that could never happen
      fd1cf905
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.17-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 06b8ab55
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
         - stable fix for a bug in nfs3_list_one_acl()
         - speed up NFS path walks by supporting LOOKUP_RCU
         - more read/write code cleanups
         - pNFS fixes for layout return on close
         - fixes for the RCU handling in the rpcsec_gss code
         - more NFS/RDMA fixes"
      
      * tag 'nfs-for-3.17-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (79 commits)
        nfs: reject changes to resvport and sharecache during remount
        NFS: Avoid infinite loop when RELEASE_LOCKOWNER getting expired error
        SUNRPC: remove all refcounting of groupinfo from rpcauth_lookupcred
        NFS: fix two problems in lookup_revalidate in RCU-walk
        NFS: allow lockless access to access_cache
        NFS: teach nfs_lookup_verify_inode to handle LOOKUP_RCU
        NFS: teach nfs_neg_need_reval to understand LOOKUP_RCU
        NFS: support RCU_WALK in nfs_permission()
        sunrpc/auth: allow lockless (rcu) lookup of credential cache.
        NFS: prepare for RCU-walk support but pushing tests later in code.
        NFS: nfs4_lookup_revalidate: only evaluate parent if it will be used.
        NFS: add checks for returned value of try_module_get()
        nfs: clear_request_commit while holding i_lock
        pnfs: add pnfs_put_lseg_async
        pnfs: find swapped pages on pnfs commit lists too
        nfs: fix comment and add warn_on for PG_INODE_REF
        nfs: check wait_on_bit_lock err in page_group_lock
        sunrpc: remove "ec" argument from encrypt_v2 operation
        sunrpc: clean up sparse endianness warnings in gss_krb5_wrap.c
        sunrpc: clean up sparse endianness warnings in gss_krb5_seal.c
        ...
      06b8ab55
  2. 13 Aug, 2014 4 commits
    • Linus Torvalds's avatar
      Merge tag 'xfs-for-linus-3.17-rc1' of git://oss.sgi.com/xfs/xfs · dc1cc851
      Linus Torvalds authored
      Pull xfs update from Dave Chinner:
       "This update contains:
         - conversion of the XFS core to pass negative error numbers
         - restructing of core XFS code that is shared with userspace to
           fs/xfs/libxfs
         - introduction of sysfs interface for XFS
         - bulkstat refactoring
         - demand driven speculative preallocation removal
         - XFS now always requires 64 bit sectors to be configured
         - metadata verifier changes to ensure CRCs are calculated during log
           recovery
         - various minor code cleanups
         - miscellaneous bug fixes
      
        The diffstat is kind of noisy because of the restructuring of the code
        to make kernel/userspace code sharing simpler, along with the XFS wide
        change to use the standard negative error return convention (at last!)"
      
      * tag 'xfs-for-linus-3.17-rc1' of git://oss.sgi.com/xfs/xfs: (45 commits)
        xfs: fix coccinelle warnings
        xfs: flush both inodes in xfs_swap_extents
        xfs: fix swapext ilock deadlock
        xfs: kill xfs_vnode.h
        xfs: kill VN_MAPPED
        xfs: kill VN_CACHED
        xfs: kill VN_DIRTY()
        xfs: dquot recovery needs verifiers
        xfs: quotacheck leaves dquot buffers without verifiers
        xfs: ensure verifiers are attached to recovered buffers
        xfs: catch buffers written without verifiers attached
        xfs: avoid false quotacheck after unclean shutdown
        xfs: fix rounding error of fiemap length parameter
        xfs: introduce xfs_bulkstat_ag_ichunk
        xfs: require 64-bit sector_t
        xfs: fix uflags detection at xfs_fs_rm_xquota
        xfs: remove XFS_IS_OQUOTA_ON macros
        xfs: tidy up xfs_set_inode32
        xfs: allow inode allocations in post-growfs disk space
        xfs: mark xfs_qm_quotacheck as static
        ...
      dc1cc851
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · cec99709
      Linus Torvalds authored
      Pull quota, reiserfs, UDF updates from Jan Kara:
       "Scalability improvements for quota, a few reiserfs fixes, and couple
        of misc cleanups (udf, ext2)"
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        reiserfs: Fix use after free in journal teardown
        reiserfs: fix corruption introduced by balance_leaf refactor
        udf: avoid redundant memcpy when writing data in ICB
        fs/udf: re-use hex_asc_upper_{hi,lo} macros
        fs/quota: kernel-doc warning fixes
        udf: use linux/uaccess.h
        fs/ext2/super.c: Drop memory allocation cast
        quota: remove dqptr_sem
        quota: simplify remove_inode_dquot_ref()
        quota: avoid unnecessary dqget()/dqput() calls
        quota: protect Q_GETFMT by dqonoff_mutex
      cec99709
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 8d2d441a
      Linus Torvalds authored
      Pull Ceph updates from Sage Weil:
       "There is a lot of refactoring and hardening of the libceph and rbd
        code here from Ilya that fix various smaller bugs, and a few more
        important fixes with clone overlap.  The main fix is a critical change
        to the request_fn handling to not sleep that was exposed by the recent
        mutex changes (which will also go to the 3.16 stable series).
      
        Yan Zheng has several fixes in here for CephFS fixing ACL handling,
        time stamps, and request resends when the MDS restarts.
      
        Finally, there are a few cleanups from Himangi Saraogi based on
        Coccinelle"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (39 commits)
        libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly
        rbd: remove extra newlines from rbd_warn() messages
        rbd: allocate img_request with GFP_NOIO instead GFP_ATOMIC
        rbd: rework rbd_request_fn()
        ceph: fix kick_requests()
        ceph: fix append mode write
        ceph: fix sizeof(struct tYpO *) typo
        ceph: remove redundant memset(0)
        rbd: take snap_id into account when reading in parent info
        rbd: do not read in parent info before snap context
        rbd: update mapping size only on refresh
        rbd: harden rbd_dev_refresh() and callers a bit
        rbd: split rbd_dev_spec_update() into two functions
        rbd: remove unnecessary asserts in rbd_dev_image_probe()
        rbd: introduce rbd_dev_header_info()
        rbd: show the entire chain of parent images
        ceph: replace comma with a semicolon
        rbd: use rbd_segment_name_free() instead of kfree()
        ceph: check zero length in ceph_sync_read()
        ceph: reset r_resend_mds after receiving -ESTALE
        ...
      8d2d441a
    • Linus Torvalds's avatar
      Merge tag 'upstream-3.17-rc1' of git://git.infradead.org/linux-ubifs · 89838b80
      Linus Torvalds authored
      Pull UBI/UBIFS changes from Artem Bityutskiy:
       "No significant changes, mostly small fixes here and there.  The more
        important fixes are:
      
         - UBI deleted list items while iterating the list with
           'list_for_each_entry'
         - The UBI block driver did not work properly with very large UBI
           volumes"
      
      * tag 'upstream-3.17-rc1' of git://git.infradead.org/linux-ubifs: (21 commits)
        UBIFS: Add log overlap assertions
        Revert "UBIFS: add a log overlap assertion"
        UBI: bugfix in ubi_wl_flush()
        UBI: block: Avoid disk size integer overflow
        UBI: block: Set disk_capacity out of the mutex
        UBI: block: Make ubiblock_resize return something
        UBIFS: add a log overlap assertion
        UBIFS: remove unnecessary check
        UBIFS: remove mst_mutex
        UBIFS: kernel-doc warning fix
        UBI: init_volumes: Ignore volumes with no LEBs
        UBIFS: replace seq_printf by seq_puts
        UBIFS: replace count*size kzalloc by kcalloc
        UBIFS: kernel-doc warning fix
        UBIFS: fix error path in create_default_filesystem()
        UBIFS: fix spelling of "scanned"
        UBIFS: fix some comments
        UBIFS: remove useless @ecc in struct ubifs_scan_leb
        UBIFS: remove useless statements
        UBIFS: Add missing break statements in dbg_chk_pnode()
        ...
      89838b80