Merge tag 'staging-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 May 2016 05:20:48 +0000 (22:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 May 2016 05:20:48 +0000 (22:20 -0700)
Pull staging and IIO driver updates from Greg KH:
 "Here's the big staging and iio driver update for 4.7-rc1.

  I think we almost broke even with this release, only adding a few more
  lines than we removed, which isn't bad overall given that there's a
  bunch of new iio drivers added.

  The Lustre developers seem to have woken up from their sleep and have
  been doing a great job in cleaning up the code and pruning unused or
  old cruft, the filesystem is almost readable :)

  Other than that, just a lot of basic coding style cleanups in the
  churn.  All have been in linux-next for a while with no reported
  issues"

* tag 'staging-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (938 commits)
  Staging: emxx_udc: emxx_udc: fixed coding style issue
  staging/gdm724x: fix "alignment should match open parenthesis" issues
  staging/gdm724x: Fix avoid CamelCase
  staging: unisys: rename misleading var ii with frag
  staging: unisys: visorhba: switch success handling to error handling
  staging: unisys: visorhba: main path needs to flow down the left margin
  staging: unisys: visorinput: handle_locking_key() simplifications
  staging: unisys: visorhba: fail gracefully for thread creation failures
  staging: unisys: visornic: comment restructuring and removing bad diction
  staging: unisys: fix format string %Lx to %llx for u64
  staging: unisys: remove unused struct members
  staging: unisys: visorchannel: correct variable misspelling
  staging: unisys: visorhba: replace functionlike macro with function
  staging: dgnc: Need to check for NULL of ch
  staging: dgnc: remove redundant condition check
  staging: dgnc: fix 'line over 80 characters'
  staging: dgnc: clean up the dgnc_get_modem_info()
  staging: lustre: lnet: enable configuration per NI interface
  staging: lustre: o2iblnd: properly set ibr_why
  staging: lustre: o2iblnd: remove last of kiblnd_tunables_fini
  ...

26 files changed:
1  2 
Documentation/DocBook/device-drivers.tmpl
Documentation/devicetree/bindings/vendor-prefixes.txt
Documentation/driver-model/devres.txt
MAINTAINERS
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/iio/dac/Kconfig
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
drivers/staging/dgnc/dgnc_tty.c
drivers/staging/fwserial/fwserial.c
drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c
drivers/staging/lustre/lustre/llite/dir.c
drivers/staging/lustre/lustre/llite/llite_internal.h
drivers/staging/lustre/lustre/llite/rw26.c
drivers/staging/lustre/lustre/llite/xattr.c
drivers/staging/rtl8192u/r8192U_core.c
drivers/staging/unisys/visorbus/visorchipset.c
drivers/staging/vme/devices/vme_pio2_gpio.c
drivers/staging/vt6656/main_usb.c
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
drivers/staging/wlan-ng/cfg80211.c
drivers/staging/wlan-ng/p80211netdev.c
include/linux/kernel.h
include/linux/sched.h

index 76a6c0a70dee2d248e4faa82899738f42576a7d0,bdc2dfbe6795f015c0a4f9dbb459078103126cd1..c63eea0c1c8c1b3ffe4c853ea8e834d9cd90205e
@@@ -268,10 -267,11 +268,14 @@@ II
    devm_iio_kfifo_free()
    devm_iio_trigger_alloc()
    devm_iio_trigger_free()
+   devm_iio_channel_get()
+   devm_iio_channel_release()
+   devm_iio_channel_get_all()
+   devm_iio_channel_release_all()
  
 +INPUT
 +  devm_input_allocate_device()
 +
  IO region
    devm_release_mem_region()
    devm_release_region()
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0d32e6541a3f7207fdea3bd9b023619247f87caa,d99b4fac0c39e312989d471812e3f56a468fd756..6c59f2ff222040df485ce7c33de5fd5c97d451c3
@@@ -1493,14 -1651,88 +1651,88 @@@ int kiblnd_fmr_pool_map(kib_fmr_poolset
        list_for_each_entry(fpo, &fps->fps_pool_list, fpo_list) {
                fpo->fpo_deadline = cfs_time_shift(IBLND_POOL_DEADLINE);
                fpo->fpo_map_count++;
-               spin_unlock(&fps->fps_lock);
  
-               pfmr = ib_fmr_pool_map_phys(fpo->fpo_fmr_pool,
-                                           pages, npages, iov);
-               if (likely(!IS_ERR(pfmr))) {
-                       fmr->fmr_pool = fpo;
-                       fmr->fmr_pfmr = pfmr;
-                       return 0;
+               if (fpo->fpo_is_fmr) {
+                       struct ib_pool_fmr *pfmr;
+                       spin_unlock(&fps->fps_lock);
+                       if (!tx_pages_mapped) {
+                               npages = kiblnd_map_tx_pages(tx, rd);
+                               tx_pages_mapped = 1;
+                       }
+                       pfmr = ib_fmr_pool_map_phys(fpo->fmr.fpo_fmr_pool,
+                                                   pages, npages, iov);
+                       if (likely(!IS_ERR(pfmr))) {
+                               fmr->fmr_key = is_rx ? pfmr->fmr->rkey :
+                                                      pfmr->fmr->lkey;
+                               fmr->fmr_frd = NULL;
+                               fmr->fmr_pfmr = pfmr;
+                               fmr->fmr_pool = fpo;
+                               return 0;
+                       }
+                       rc = PTR_ERR(pfmr);
+               } else {
+                       if (!list_empty(&fpo->fast_reg.fpo_pool_list)) {
+                               struct kib_fast_reg_descriptor *frd;
+                               struct ib_reg_wr *wr;
+                               struct ib_mr *mr;
+                               int n;
+                               frd = list_first_entry(&fpo->fast_reg.fpo_pool_list,
+                                                      struct kib_fast_reg_descriptor,
+                                                      frd_list);
+                               list_del(&frd->frd_list);
+                               spin_unlock(&fps->fps_lock);
+                               mr = frd->frd_mr;
+                               if (!frd->frd_valid) {
+                                       __u32 key = is_rx ? mr->rkey : mr->lkey;
+                                       struct ib_send_wr *inv_wr;
+                                       inv_wr = &frd->frd_inv_wr;
+                                       memset(inv_wr, 0, sizeof(*inv_wr));
+                                       inv_wr->opcode = IB_WR_LOCAL_INV;
+                                       inv_wr->wr_id = IBLND_WID_MR;
+                                       inv_wr->ex.invalidate_rkey = key;
+                                       /* Bump the key */
+                                       key = ib_inc_rkey(key);
+                                       ib_update_fast_reg_key(mr, key);
+                               }
+                               n = ib_map_mr_sg(mr, tx->tx_frags,
 -                                               tx->tx_nfrags, PAGE_SIZE);
++                                               tx->tx_nfrags, NULL, PAGE_SIZE);
+                               if (unlikely(n != tx->tx_nfrags)) {
+                                       CERROR("Failed to map mr %d/%d elements\n",
+                                              n, tx->tx_nfrags);
+                                       return n < 0 ? n : -EINVAL;
+                               }
+                               mr->iova = iov;
+                               /* Prepare FastReg WR */
+                               wr = &frd->frd_fastreg_wr;
+                               memset(wr, 0, sizeof(*wr));
+                               wr->wr.opcode = IB_WR_REG_MR;
+                               wr->wr.wr_id = IBLND_WID_MR;
+                               wr->wr.num_sge = 0;
+                               wr->wr.send_flags = 0;
+                               wr->mr = mr;
+                               wr->key = is_rx ? mr->rkey : mr->lkey;
+                               wr->access = (IB_ACCESS_LOCAL_WRITE |
+                                             IB_ACCESS_REMOTE_WRITE);
+                               fmr->fmr_key = is_rx ? mr->rkey : mr->lkey;
+                               fmr->fmr_frd = frd;
+                               fmr->fmr_pfmr = NULL;
+                               fmr->fmr_pool = fpo;
+                               return 0;
+                       }
+                       spin_unlock(&fps->fps_lock);
+                       rc = -EBUSY;
                }
  
                spin_lock(&fps->fps_lock);
index 0c3459c1a518439a407fc6117facdfe694058466,93411896aef0d8adff251a236599cb7539b03e7e..c12a048fce59c69430448f368b726a8b3bf5718d
@@@ -364,8 -351,7 +350,8 @@@ static ssize_t ll_direct_IO_26(struct k
        struct cl_io *io;
        struct file *file = iocb->ki_filp;
        struct inode *inode = file->f_mapping->host;
-       struct ccc_object *obj = cl_inode2ccc(inode);
+       struct vvp_object *obj = cl_inode2vvp(inode);
 +      loff_t file_offset = iocb->ki_pos;
        ssize_t count = iov_iter_count(iter);
        ssize_t tot_bytes = 0, result = 0;
        struct ll_inode_info *lli = ll_i2info(inode);
index 6d361201d98cf59a293ab3c335bbc38b7ab4497e,f52a9ed75871d2a799e05d244e066ad3536758d9..ba9fe3bc264227e0734a4cf16fc3fd2db1cb2cda
@@@ -92,10 -97,10 +92,10 @@@ static void pio2_gpio_set(struct gpio_c
  }
  
  /* Directionality configured at board build - send appropriate response */
- static int pio2_gpio_dir_in(struct gpio_chip *chip, unsigned offset)
+ static int pio2_gpio_dir_in(struct gpio_chip *chip, unsigned int offset)
  {
        int data;
 -      struct pio2_card *card = gpio_to_pio2_card(chip);
 +      struct pio2_card *card = gpiochip_get_data(chip);
  
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == OUTPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
  }
  
  /* Directionality configured at board build - send appropriate response */
- static int pio2_gpio_dir_out(struct gpio_chip *chip, unsigned offset, int value)
+ static int pio2_gpio_dir_out(struct gpio_chip *chip,
+                            unsigned int offset, int value)
  {
        int data;
 -      struct pio2_card *card = gpio_to_pio2_card(chip);
 +      struct pio2_card *card = gpiochip_get_data(chip);
  
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == INPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
Simple merge
Simple merge
Simple merge
Simple merge