1. 26 Sep, 2014 16 commits
    • Alexei Starovoitov's avatar
      bpf: handle pseudo BPF_LD_IMM64 insn · 0246e64d
      Alexei Starovoitov authored
      eBPF programs passed from userspace are using pseudo BPF_LD_IMM64 instructions
      to refer to process-local map_fd. Scan the program for such instructions and
      if FDs are valid, convert them to 'struct bpf_map' pointers which will be used
      by verifier to check access to maps in bpf_map_lookup/update() calls.
      If program passes verifier, convert pseudo BPF_LD_IMM64 into generic by dropping
      BPF_PSEUDO_MAP_FD flag.
      
      Note that eBPF interpreter is generic and knows nothing about pseudo insns.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0246e64d
    • Alexei Starovoitov's avatar
      bpf: verifier (add ability to receive verification log) · cbd35700
      Alexei Starovoitov authored
      add optional attributes for BPF_PROG_LOAD syscall:
      union bpf_attr {
          struct {
      	...
      	__u32         log_level; /* verbosity level of eBPF verifier */
      	__u32         log_size;  /* size of user buffer */
      	__aligned_u64 log_buf;   /* user supplied 'char *buffer' */
          };
      };
      
      when log_level > 0 the verifier will return its verification log in the user
      supplied buffer 'log_buf' which can be used by program author to analyze why
      verifier rejected given program.
      
      'Understanding eBPF verifier messages' section of Documentation/networking/filter.txt
      provides several examples of these messages, like the program:
      
        BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
        BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
        BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
        BPF_LD_MAP_FD(BPF_REG_1, 0),
        BPF_CALL_FUNC(BPF_FUNC_map_lookup_elem),
        BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
        BPF_ST_MEM(BPF_DW, BPF_REG_0, 4, 0),
        BPF_EXIT_INSN(),
      
      will be rejected with the following multi-line message in log_buf:
      
        0: (7a) *(u64 *)(r10 -8) = 0
        1: (bf) r2 = r10
        2: (07) r2 += -8
        3: (b7) r1 = 0
        4: (85) call 1
        5: (15) if r0 == 0x0 goto pc+1
         R0=map_ptr R10=fp
        6: (7a) *(u64 *)(r0 +4) = 0
        misaligned access off 4 size 8
      
      The format of the output can change at any time as verifier evolves.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cbd35700
    • Alexei Starovoitov's avatar
      bpf: verifier (add docs) · 51580e79
      Alexei Starovoitov authored
      this patch adds all of eBPF verfier documentation and empty bpf_check()
      
      The end goal for the verifier is to statically check safety of the program.
      
      Verifier will catch:
      - loops
      - out of range jumps
      - unreachable instructions
      - invalid instructions
      - uninitialized register access
      - uninitialized stack access
      - misaligned stack access
      - out of range stack access
      - invalid calling convention
      
      More details in Documentation/networking/filter.txt
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      51580e79
    • Alexei Starovoitov's avatar
      bpf: handle pseudo BPF_CALL insn · 0a542a86
      Alexei Starovoitov authored
      in native eBPF programs userspace is using pseudo BPF_CALL instructions
      which encode one of 'enum bpf_func_id' inside insn->imm field.
      Verifier checks that program using correct function arguments to given func_id.
      If all checks passed, kernel needs to fixup BPF_CALL->imm fields by
      replacing func_id with in-kernel function pointer.
      eBPF interpreter just calls the function.
      
      In-kernel eBPF users continue to use generic BPF_CALL.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0a542a86
    • Alexei Starovoitov's avatar
      bpf: expand BPF syscall with program load/unload · 09756af4
      Alexei Starovoitov authored
      eBPF programs are similar to kernel modules. They are loaded by the user
      process and automatically unloaded when process exits. Each eBPF program is
      a safe run-to-completion set of instructions. eBPF verifier statically
      determines that the program terminates and is safe to execute.
      
      The following syscall wrapper can be used to load the program:
      int bpf_prog_load(enum bpf_prog_type prog_type,
                        const struct bpf_insn *insns, int insn_cnt,
                        const char *license)
      {
          union bpf_attr attr = {
              .prog_type = prog_type,
              .insns = ptr_to_u64(insns),
              .insn_cnt = insn_cnt,
              .license = ptr_to_u64(license),
          };
      
          return bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
      }
      where 'insns' is an array of eBPF instructions and 'license' is a string
      that must be GPL compatible to call helper functions marked gpl_only
      
      Upon succesful load the syscall returns prog_fd.
      Use close(prog_fd) to unload the program.
      
      User space tests and examples follow in the later patches
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      09756af4
    • Alexei Starovoitov's avatar
      bpf: add lookup/update/delete/iterate methods to BPF maps · db20fd2b
      Alexei Starovoitov authored
      'maps' is a generic storage of different types for sharing data between kernel
      and userspace.
      
      The maps are accessed from user space via BPF syscall, which has commands:
      
      - create a map with given type and attributes
        fd = bpf(BPF_MAP_CREATE, union bpf_attr *attr, u32 size)
        returns fd or negative error
      
      - lookup key in a given map referenced by fd
        err = bpf(BPF_MAP_LOOKUP_ELEM, union bpf_attr *attr, u32 size)
        using attr->map_fd, attr->key, attr->value
        returns zero and stores found elem into value or negative error
      
      - create or update key/value pair in a given map
        err = bpf(BPF_MAP_UPDATE_ELEM, union bpf_attr *attr, u32 size)
        using attr->map_fd, attr->key, attr->value
        returns zero or negative error
      
      - find and delete element by key in a given map
        err = bpf(BPF_MAP_DELETE_ELEM, union bpf_attr *attr, u32 size)
        using attr->map_fd, attr->key
      
      - iterate map elements (based on input key return next_key)
        err = bpf(BPF_MAP_GET_NEXT_KEY, union bpf_attr *attr, u32 size)
        using attr->map_fd, attr->key, attr->next_key
      
      - close(fd) deletes the map
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      db20fd2b
    • Alexei Starovoitov's avatar
      bpf: enable bpf syscall on x64 and i386 · 749730ce
      Alexei Starovoitov authored
      done as separate commit to ease conflict resolution
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      749730ce
    • Alexei Starovoitov's avatar
      bpf: introduce BPF syscall and maps · 99c55f7d
      Alexei Starovoitov authored
      BPF syscall is a multiplexor for a range of different operations on eBPF.
      This patch introduces syscall with single command to create a map.
      Next patch adds commands to access maps.
      
      'maps' is a generic storage of different types for sharing data between kernel
      and userspace.
      
      Userspace example:
      /* this syscall wrapper creates a map with given type and attributes
       * and returns map_fd on success.
       * use close(map_fd) to delete the map
       */
      int bpf_create_map(enum bpf_map_type map_type, int key_size,
                         int value_size, int max_entries)
      {
          union bpf_attr attr = {
              .map_type = map_type,
              .key_size = key_size,
              .value_size = value_size,
              .max_entries = max_entries
          };
      
          return bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
      }
      
      'union bpf_attr' is backwards compatible with future extensions.
      
      More details in Documentation/networking/filter.txt and in manpage
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99c55f7d
    • Eric Dumazet's avatar
      net: sched: use pinned timers · 4a8e320c
      Eric Dumazet authored
      While using a MQ + NETEM setup, I had confirmation that the default
      timer migration ( /proc/sys/kernel/timer_migration ) is killing us.
      
      Installing this on a receiver side of a TCP_STREAM test, (NIC has 8 TX
      queues) :
      
      EST="est 1sec 4sec"
      for ETH in eth1
      do
       tc qd del dev $ETH root 2>/dev/null
       tc qd add dev $ETH root handle 1: mq
       tc qd add dev $ETH parent 1:1 $EST netem limit 70000 delay 6ms
       tc qd add dev $ETH parent 1:2 $EST netem limit 70000 delay 8ms
       tc qd add dev $ETH parent 1:3 $EST netem limit 70000 delay 10ms
       tc qd add dev $ETH parent 1:4 $EST netem limit 70000 delay 12ms
       tc qd add dev $ETH parent 1:5 $EST netem limit 70000 delay 14ms
       tc qd add dev $ETH parent 1:6 $EST netem limit 70000 delay 16ms
       tc qd add dev $ETH parent 1:7 $EST netem limit 80000 delay 18ms
       tc qd add dev $ETH parent 1:8 $EST netem limit 90000 delay 20ms
      done
      
      We can see that timers get migrated into a single cpu, presumably idle
      at the time timers are set up.
      Then all qdisc dequeues run from this cpu and huge lock contention
      happens. This single cpu is stuck in softirq mode and cannot dequeue
      fast enough.
      
          39.24%  [kernel]          [k] _raw_spin_lock
           2.65%  [kernel]          [k] netem_enqueue
           1.80%  [kernel]          [k] netem_dequeue
           1.63%  [kernel]          [k] copy_user_enhanced_fast_string
           1.45%  [kernel]          [k] _raw_spin_lock_bh
      
      By pinning qdisc timers on the cpu running the qdisc, we respect proper
      XPS setting and remove this lock contention.
      
           5.84%  [kernel]          [k] netem_enqueue
           4.83%  [kernel]          [k] _raw_spin_lock
           2.92%  [kernel]          [k] copy_user_enhanced_fast_string
      
      Current Qdiscs that benefit from this change are :
      
      	netem, cbq, fq, hfsc, tbf, htb.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4a8e320c
    • David S. Miller's avatar
      Merge branch 'gso_send_check' · 9fb426a6
      David S. Miller authored
      Tom Herbert says:
      
      ====================
      net: Eliminate gso_send_check
      
      gso_send_check presents a lot of complexity for what it is being used
      for. It seems that there are only two cases where it might be effective:
      TCP and UFO paths. In these cases, the gso_send_check function
      initializes the TCP or UDP checksum respectively to the pseudo header
      checksum so that the checksum computation is appropriately offloaded or
      computed in the gso_segment functions. The gso_send_check functions
      are only called from dev.c in skb_mac_gso_segment when ip_summed !=
      CHECKSUM_PARTIAL (which seems very unlikely in TCP case). We can move
      the logic of this into the respective gso_segment functions where the
      checksum is initialized if ip_summed != CHECKSUM_PARTIAL.
      
      With the above cases handled, gso_send_check is no longer needed, so
      we can remove all uses of it and the fields in the offload callbacks.
      With this change, ip_summed in the skb should be preserved though all
      the layers of gso_segment calls.
      
      In follow-on patches, we may be able to remove the check setup code in
      tcp_gso_segment if we can guarantee that ip_summed will always be
      CHECKSUM_PARTIAL (verify all paths and probably add an assert in
      tcp_gro_segment).
      
      Tested these patches by:
        - netperf TCP_STREAM test with GSO enabled
        - Forced ip_summed != CHECKSUM_PARTIAL with above
        - Ran UDP_RR with 10000 request size over GRE tunnel. This exercised
          UFO path.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fb426a6
    • Tom Herbert's avatar
      net: Remove gso_send_check as an offload callback · 53e50398
      Tom Herbert authored
      The send_check logic was only interesting in cases of TCP offload and
      UDP UFO where the checksum needed to be initialized to the pseudo
      header checksum. Now we've moved that logic into the related
      gso_segment functions so gso_send_check is no longer needed.
      Signed-off-by: default avatarTom Herbert <therbert@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53e50398
    • Tom Herbert's avatar
      udp: move logic out of udp[46]_ufo_send_check · f71470b3
      Tom Herbert authored
      In udp[46]_ufo_send_check the UDP checksum initialized to the pseudo
      header checksum. We can move this logic into udp[46]_ufo_fragment.
      After this change udp[64]_ufo_send_check is a no-op.
      Signed-off-by: default avatarTom Herbert <therbert@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f71470b3
    • Tom Herbert's avatar
      tcp: move logic out of tcp_v[64]_gso_send_check · d020f8f7
      Tom Herbert authored
      In tcp_v[46]_gso_send_check the TCP checksum is initialized to the
      pseudo header checksum using __tcp_v[46]_send_check. We can move this
      logic into new tcp[46]_gso_segment functions to be done when
      ip_summed != CHECKSUM_PARTIAL (ip_summed == CHECKSUM_PARTIAL should be
      the common case, possibly always true when taking GSO path). After this
      change tcp_v[46]_gso_send_check is no-op.
      Signed-off-by: default avatarTom Herbert <therbert@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d020f8f7
    • David S. Miller's avatar
      Merge branch 'stmmac' · 2fdbfea5
      David S. Miller authored
      Beniamino Galvani says:
      
      ====================
      net: stmmac glue layer for Amlogic Meson SoCs
      
      the Ethernet controller available in Amlogic Meson6 and Meson8 SoCs is
      a Synopsys DesignWare MAC IP core, already supported by the stmmac
      driver.
      
      These patches add a glue layer to the driver for the platform-specific
      settings required by the Amlogic variant.
      
      This has been tested on a Amlogic S802 device with the initial Meson
      support submitted by Carlo Caione [1].
      
      [1] http://lwn.net/Articles/612000/
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2fdbfea5
    • Beniamino Galvani's avatar
      net: stmmac: meson: document device tree bindings · 318fd490
      Beniamino Galvani authored
      Add the device tree bindings documentation for the Amlogic Meson
      variant of the Synopsys DesignWare MAC.
      Signed-off-by: default avatarBeniamino Galvani <b.galvani@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      318fd490
    • Beniamino Galvani's avatar
      net: stmmac: add Amlogic Meson glue layer · 0ad5adcd
      Beniamino Galvani authored
      The Ethernet controller available in Meson6 and Meson8 SoCs is a
      Synopsys DesignWare MAC IP core, already supported by the stmmac
      driver.
      
      This glue layer implements some platform-specific settings needed by
      the Amlogic variant.
      Signed-off-by: default avatarBeniamino Galvani <b.galvani@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0ad5adcd
  2. 24 Sep, 2014 21 commits
    • David S. Miller's avatar
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · b94d525e
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Here is a quick pull request primarily meant to address the deconfig
        fallout from changing SCSI_NETLINK from being used via 'select' to
        being used via 'depends'.
      
        I applied a set of 5 patches written by Michal Marek, and then I
        carefully audited all of the remaining config files, basically:
      
         1) I scanned every arch config file, and if it mentioned CONFIG_INET
            or CONFIG_UNIX, I made sure it had CONFIG_NET=y
      
         2) After that, I scanned every arch config file, and if it did not
            have CONFIG_NET=y I made sure it did not reference any networking
            config options.
      
        Finally, we have some late breaking wireless fixes in here from John
        Linville and co"
      
      [ And there's a sparc bpf fix snuck in too ]
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        sparc: bpf_jit: fix loads from negative offsets
        parisc: Update defconfigs which were missing CONFIG_NET.
        powerpc: Update defconfigs which were missing CONFIG_NET.
        s390: Update defconfigs which were missing CONFIG_NET.
        mips: Update some more defconfigs which were missing CONFIG_NET.
        sparc: Set CONFIG_NET=y in defconfigs
        sh: Set CONFIG_NET=y in defconfigs
        powerpc: Set CONFIG_NET=y in defconfigs
        parisc: Set CONFIG_NET=y in defconfigs
        mips: Set CONFIG_NET=y in defconfigs
        brcmfmac: Fix off by one bug in brcmf_count_20mhz_channels()
        ath9k: Fix NULL pointer dereference on early irq
        net: rfkill: gpio: Fix clock status
        NFC: st21nfca: Fix potential depmod dependency cycle
        NFC: st21nfcb: Fix depmod dependency cycle
        NFC: microread: Potential overflows in microread_target_discovered()
      b94d525e
    • Alexei Starovoitov's avatar
      sparc: bpf_jit: fix loads from negative offsets · 35607b02
      Alexei Starovoitov authored
      - fix BPF_LD|ABS|IND from negative offsets:
        make sure to sign extend lower 32 bits in 64-bit register
        before calling C helpers from JITed code, otherwise 'int k'
        argument of bpf_internal_load_pointer_neg_helper() function
        will be added as large unsigned integer, causing packet size
        check to trigger and abort the program.
      
        It's worth noting that JITed code for 'A = A op K' will affect
        upper 32 bits differently depending whether K is simm13 or not.
        Since small constants are sign extended, whereas large constants
        are stored in temp register and zero extended.
        That is ok and we don't have to pay a penalty of sign extension
        for every sethi, since all classic BPF instructions have 32-bit
        semantics and we only need to set correct upper bits when
        transitioning from JITed code into C.
      
      - though instructions 'A &= 0' and 'A *= 0' are odd, JIT compiler
        should not optimize them out
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      35607b02
    • David S. Miller's avatar
      Merge tag 'master-2014-09-23' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless · 543a2dff
      David S. Miller authored
      John W. Linville says:
      
      ====================
      pull request: wireless 2014-09-23
      
      Please consider pulling this one last batch of fixes intended for the 3.17 stream!
      
      For the NFC bits, Samuel says:
      
      "Hopefully not too late for a handful of NFC fixes:
      
      - 2 potential build failures for ST21NFCA and ST21NFCB, triggered by a
        depmod dependenyc cycle.
      - One potential buffer overflow in the microread driver."
      
      On top of that...
      
      Emil Goode provides a fix for a brcmfmac off-by-one regression which
      was introduced in the 3.17 cycle.
      
      Loic Poulain fixes a polarity mismatch for a variable assignment
      inside of rfkill-gpio.
      
      Wojciech Dubowik prevents a NULL pointer dereference in ath9k.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      543a2dff
    • David S. Miller's avatar
      parisc: Update defconfigs which were missing CONFIG_NET. · c899c3f3
      David S. Miller authored
      Commit df568d8e ("scsi: Use 'depends' with LIBFC instead of
      'select'.")  removed what happened to be the only instance of 'select
      NET'. Defconfigs that were relying on the select now lack networking
      support.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c899c3f3
    • David S. Miller's avatar
      powerpc: Update defconfigs which were missing CONFIG_NET. · 95d77997
      David S. Miller authored
      Commit df568d8e ("scsi: Use 'depends' with LIBFC instead of
      'select'.")  removed what happened to be the only instance of 'select
      NET'. Defconfigs that were relying on the select now lack networking
      support.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95d77997
    • David S. Miller's avatar
      s390: Update defconfigs which were missing CONFIG_NET. · ff408ba1
      David S. Miller authored
      Commit df568d8e ("scsi: Use 'depends' with LIBFC instead of
      'select'.")  removed what happened to be the only instance of 'select
      NET'. Defconfigs that were relying on the select now lack networking
      support.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ff408ba1
    • David S. Miller's avatar
      mips: Update some more defconfigs which were missing CONFIG_NET. · af4de1b5
      David S. Miller authored
      Commit df568d8e ("scsi: Use 'depends' with LIBFC instead of
      'select'.")  removed what happened to be the only instance of 'select
      NET'. Defconfigs that were relying on the select now lack networking
      support.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af4de1b5
    • Michal Marek's avatar
      sparc: Set CONFIG_NET=y in defconfigs · 1ab0b8b2
      Michal Marek authored
      Commit 5d6be6a5 ("scsi_netlink : Make SCSI_NETLINK dependent on NET
      instead of selecting NET") removed what happened to be the only instance
      of 'select NET'. Defconfigs that were relying on the select now lack
      networking support.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: sparclinux@vger.kernel.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1ab0b8b2
    • Michal Marek's avatar
      sh: Set CONFIG_NET=y in defconfigs · 925f7fad
      Michal Marek authored
      Commit 5d6be6a5 ("scsi_netlink : Make SCSI_NETLINK dependent on NET
      instead of selecting NET") removed what happened to be the only instance
      of 'select NET'. Defconfigs that were relying on the select now lack
      networking support.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: linux-sh@vger.kernel.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      925f7fad
    • Michal Marek's avatar
      powerpc: Set CONFIG_NET=y in defconfigs · 853e3e1d
      Michal Marek authored
      Commit 5d6be6a5 ("scsi_netlink : Make SCSI_NETLINK dependent on NET
      instead of selecting NET") removed what happened to be the only instance
      of 'select NET'. Defconfigs that were relying on the select now lack
      networking support.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: linuxppc-dev@lists.ozlabs.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      853e3e1d
    • Michal Marek's avatar
      parisc: Set CONFIG_NET=y in defconfigs · 25fee47f
      Michal Marek authored
      Commit 5d6be6a5 ("scsi_netlink : Make SCSI_NETLINK dependent on NET
      instead of selecting NET") removed what happened to be the only instance
      of 'select NET'. Defconfigs that were relying on the select now lack
      networking support.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: linux-parisc@vger.kernel.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25fee47f
    • Michal Marek's avatar
      mips: Set CONFIG_NET=y in defconfigs · d1630f9e
      Michal Marek authored
      Commit 5d6be6a5 ("scsi_netlink : Make SCSI_NETLINK dependent on NET
      instead of selecting NET") removed what happened to be the only instance
      of 'select NET'. Defconfigs that were relying on the select now lack
      networking support.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: linux-mips@linux-mips.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d1630f9e
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 02f130a7
      Linus Torvalds authored
      Pull one last block fix from Jens Axboe:
       "We've had an issue with scsi-mq where probing takes forever.  This was
        bisected down to the percpu changes for blk_mq_queue_enter(), and the
        fact we now suffer an RCU grace period when killing a queue.  SCSI
        creates and destroys tons of queues, so this let to 10s of seconds of
        stalls at boot for some.
      
        Tejun has a real fix for this, but it's too involved for 3.17.  So
        this is a temporary workaround to expedite the queue killing until we
        can fold in the real fix for 3.18 when that merge window opens"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe
      02f130a7
    • Linus Torvalds's avatar
      Merge tag 'pci-v3.17-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 2d7ed01e
      Linus Torvalds authored
      Pull PCI fixes from Bjorn Helgaas:
       "Here are a few fixes that should be in v3.17.
      
         - Reverting "Don't scan random busses" covers up a CardBus regression
           having to do with allocating CardBus bus numbers.
      
         - Reverting "Make sure bus numbers stay within parents bounds" covers
           up an ACPI _CRS bug that makes us reconfigure a bridge, causing a
           broken device behind it to stop responding.
      
         - The pciehp timeout change fixes some code we added in v3.17.
           Without the fix, we can send a new hotplug command too early,
           before the timeout has expired.
      
        I hope for better fixes for the reverts, but those will have to come
        after v3.17"
      
      * tag 'pci-v3.17-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: pciehp: Fix pcie_wait_cmd() timeout
        Revert "PCI: Make sure bus number resources stay within their parents bounds"
        Revert "PCI: Don't scan random busses in pci_scan_bridge()"
      2d7ed01e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 2368a942
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes three issues:
      
         - if ccp is loaded on a machine without ccp, it will incorrectly
           activate causing all requests to fail.  Fixed by preventing ccp
           from loading if hardware isn't available.
      
         - not all IRQs were enabled for the qat driver, leading to potential
           stalls when it is used
      
         - disabled buggy AVX CTR implementation in aesni"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: aesni - disable "by8" AVX CTR optimization
        crypto: ccp - Check for CCP before registering crypto algs
        crypto: qat - Enable all 32 IRQs
      2368a942
    • Linus Torvalds's avatar
      Merge tag 'media/v3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · eb55a2a9
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "For some last time fixes:
         - a regression detected on Kernel 3.16 related to VBI Teletext
           application breakage on drivers using videobuf2 (see
           https://bugzilla.kernel.org/show_bug.cgi?id=84401).  The bug was
           noticed on saa7134 (migrated to VB2 on 3.16), but also affects
           em28xx (migrated on 3.9 to VB2);
         - two additional sanity checks at videobuf2;
         - two fixups to restore proper VBI support at the em28xx driver;
         - two Kernel oops fixups (at cx24123 and cx2341x drivers);
         - a bug at adv7604 where an if was doing just the opposite as it
           would be expected;
         - some documentation fixups to match the behavior defined at the
           Kernel"
      
      * tag 'media/v3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] em28xx-v4l: get rid of field "users" in struct em28xx_v4l2"
        [media] em28xx: fix VBI handling logic
        [media] DocBook media: improve the poll() documentation
        [media] DocBook media: fix the poll() 'no QBUF' documentation
        [media] vb2: fix VBI/poll regression
        [media] cx2341x: fix kernel oops
        [media] cx24123: fix kernel oops due to missing parent pointer
        [media] adv7604: fix inverted condition
        [media] media/radio: fix radio-miropcm20.c build with io.h header file
        [media] vb2: fix plane index sanity check in vb2_plane_cookie()
        [media] DocBook media: update version number and V4L2 changes
        [media] DocBook media: fix fieldname in struct v4l2_subdev_selection
        [media] vb2: fix vb2 state check when start_streaming fails
        [media] videobuf2-core.h: fix comment
        [media] videobuf2-core: add comments before the WARN_ON
        [media] videobuf2-dma-sg: fix for wrong GFP mask to sg_alloc_table_from_pages
      eb55a2a9
    • Linus Torvalds's avatar
      Merge tag 'md/3.17-more-fixes' of git://git.neil.brown.name/md · a90e41e2
      Linus Torvalds authored
      Pull bugfixes for md/raid1 from Neil Brown:
       "It is amazing how much easier it is to find bugs when you know one is
        there.  Two bug reports resulted in finding 7 bugs!
      
        All are tagged for -stable.  Those that can't cause (rare) data
        corruption, cause lockups.
      
        Particularly, but not only, fixing new "resync" code"
      
      * tag 'md/3.17-more-fixes' of git://git.neil.brown.name/md:
        md/raid1: fix_read_error should act on all non-faulty devices.
        md/raid1: count resync requests in nr_pending.
        md/raid1: update next_resync under resync_lock.
        md/raid1: Don't use next_resync to determine how far resync has progressed
        md/raid1: make sure resync waits for conflicting writes to complete.
        md/raid1: clean up request counts properly in close_sync()
        md/raid1:  be more cautious where we read-balance during resync.
        md/raid1: intialise start_next_window for READ case to avoid hang
      a90e41e2
    • Tejun Heo's avatar
      blk-mq, percpu_ref: implement a kludge for SCSI blk-mq stall during probe · 0a30288d
      Tejun Heo authored
      blk-mq uses percpu_ref for its usage counter which tracks the number
      of in-flight commands and used to synchronously drain the queue on
      freeze.  percpu_ref shutdown takes measureable wallclock time as it
      involves a sched RCU grace period.  This means that draining a blk-mq
      takes measureable wallclock time.  One would think that this shouldn't
      matter as queue shutdown should be a rare event which takes place
      asynchronously w.r.t. userland.
      
      Unfortunately, SCSI probing involves synchronously setting up and then
      tearing down a lot of request_queues back-to-back for non-existent
      LUNs.  This means that SCSI probing may take more than ten seconds
      when scsi-mq is used.
      
      This will be properly fixed by implementing a mechanism to keep
      q->mq_usage_counter in atomic mode till genhd registration; however,
      that involves rather big updates to percpu_ref which is difficult to
      apply late in the devel cycle (v3.17-rc6 at the moment).  As a
      stop-gap measure till the proper fix can be implemented in the next
      cycle, this patch introduces __percpu_ref_kill_expedited() and makes
      blk_mq_freeze_queue() use it.  This is heavy-handed but should work
      for testing the experimental SCSI blk-mq implementation.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarChristoph Hellwig <hch@infradead.org>
      Link: http://lkml.kernel.org/g/20140919113815.GA10791@lst.de
      Fixes: add703fd ("blk-mq: use percpu_ref for mq usage count")
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Tested-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      0a30288d
    • Mathias Krause's avatar
      crypto: aesni - disable "by8" AVX CTR optimization · 7da4b29d
      Mathias Krause authored
      The "by8" implementation introduced in commit 22cddcc7 ("crypto: aes
      - AES CTR x86_64 "by8" AVX optimization") is failing crypto tests as it
      handles counter block overflows differently. It only accounts the right
      most 32 bit as a counter -- not the whole block as all other
      implementations do. This makes it fail the cryptomgr test #4 that
      specifically tests this corner case.
      
      As we're quite late in the release cycle, just disable the "by8" variant
      for now.
      Reported-by: default avatarRomain Francoise <romain@orebokech.com>
      Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
      Cc: Chandramouli Narayanan <mouli@linux.intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      7da4b29d
    • Tom Lendacky's avatar
      crypto: ccp - Check for CCP before registering crypto algs · c9f21cb6
      Tom Lendacky authored
      If the ccp is built as a built-in module, then ccp-crypto (whether
      built as a module or a built-in module) will be able to load and
      it will register its crypto algorithms.  If the system does not have
      a CCP this will result in -ENODEV being returned whenever a command
      is attempted to be queued by the registered crypto algorithms.
      
      Add an API, ccp_present(), that checks for the presence of a CCP
      on the system.  The ccp-crypto module can use this to determine if it
      should register it's crypto alogorithms.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarScot Doyle <lkml14@scotdoyle.com>
      Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
      Tested-by: default avatarScot Doyle <lkml14@scotdoyle.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      c9f21cb6
  3. 23 Sep, 2014 3 commits
    • Linus Torvalds's avatar
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 452b6361
      Linus Torvalds authored
      Pull infiniband/rdma fixes from Roland Dreier:
       "Last late set of InfiniBand/RDMA fixes for 3.17:
      
         - fixes for the new memory region re-registration support
         - iSER initiator error path fixes
         - grab bag of small fixes for the qib and ocrdma hardware drivers
         - larger set of fixes for mlx4, especially in RoCE mode"
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (26 commits)
        IB/mlx4: Fix VF mac handling in RoCE
        IB/mlx4: Do not allow APM under RoCE
        IB/mlx4: Don't update QP1 in native mode
        IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header
        mlx4: Fix mlx4 reg/unreg mac to work properly with 0-mac addresses
        IB/core: When marshaling uverbs path, clear unused fields
        IB/mlx4: Avoid executing gid task when device is being removed
        IB/mlx4: Fix lockdep splat for the iboe lock
        IB/mlx4: Get upper dev addresses as RoCE GIDs when port comes up
        IB/mlx4: Reorder steps in RoCE GID table initialization
        IB/mlx4: Don't duplicate the default RoCE GID
        IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs()
        IB/iser: Bump version to 1.4.1
        IB/iser: Allow bind only when connection state is UP
        IB/iser: Fix RX/TX CQ resource leak on error flow
        RDMA/ocrdma: Use right macro in query AH
        RDMA/ocrdma: Resolve L2 address when creating user AH
        mlx4: Correct error flows in rereg_mr
        IB/qib: Correct reference counting in debugfs qp_stats
        IPoIB: Remove unnecessary port query
        ...
      452b6361
    • Linus Torvalds's avatar
      Merge tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · ffd4341d
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "One fix is about a buggy computation in PCM API function Clemens
        spotted out, but the impact must be really small as no one really uses
        it in user-space side.
      
        The rest are a trivial fix for a HD-audio model and a USB-audio
        device-specific regression fix, so all look fairly safe to apply"
      
      * tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: snd-usb-caiaq: Fix LED commands for Kore controller
        ALSA: pcm: fix fifo_size frame calculation
        ALSA: hda - Add fixup model name lookup for Lemote A1205
      ffd4341d
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 31f9bf46
      Linus Torvalds authored
      Pull final block fixes from Jens Axboe:
       "This week and last we've been fixing some corner cases related to
        blk-mq, mostly.  I ended up pulling most of that out of for-linus
        yesterday, which is why the branch looks fresh.  The rest were
        postponed for 3.18.
      
        This pull request contains:
      
         - Fix from Christoph, avoiding a stack overflow when FUA insertion
           would recursive infinitely.
      
         - Fix from David Hildenbrand on races between the timeout handler and
           uninitialized requests.  Fixes a real issue that virtio_blk has run
           into.
      
         - A few fixes from me:
      
              - Ensure that request deadline/timeout is ordered before the
                request is marked as started.
      
              - A potential oops on out-of-memory, when we scale the queue
                depth of the device and retry.
      
              - A hang fix on requeue from SCSI, where the hardware queue
                would be stopped when we attempt to re-run it (and hence
                nothing would happen, stalling progress).
      
              - A fix for commit 2da78092, where the cleanup path was moved
                to RCU, but a debug might_sleep() was inadvertently left in
                the code.  This causes warnings for people"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        genhd: fix leftover might_sleep() in blk_free_devt()
        blk-mq: use blk_mq_start_hw_queues() when running requeue work
        blk-mq: fix potential oops on out-of-memory in __blk_mq_alloc_rq_maps()
        blk-mq: avoid infinite recursion with the FUA flag
        blk-mq: Avoid race condition with uninitialized requests
        blk-mq: request deadline must be visible before marking rq as started
      31f9bf46