linux/drivers/infiniband/hw/qib
Davidlohr Bueso 70f8a3ca68 mm: make mm->pinned_vm an atomic64 counter
Taking a sleeping lock to _only_ increment a variable is quite the
overkill, and pretty much all users do this. Furthermore, some drivers
(ie: infiniband and scif) that need pinned semantics can go to quite
some trouble to actually delay via workqueue (un)accounting for pinned
pages when not possible to acquire it.

By making the counter atomic we no longer need to hold the mmap_sem and
can simply some code around it for pinned_vm users. The counter is 64-bit
such that we need not worry about overflows such as rdma user input
controlled from userspace.

Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Christoph Lameter <cl@linux.com>
Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2019-02-07 12:54:02 -07:00
..
Kconfig IB: Move PCI dependency from root KConfig to HW's KConfigs 2017-09-27 08:54:19 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qib_6120_regs.h
qib_7220_regs.h
qib_7220.h Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_7322_regs.h
qib_common.h IB/hfi1, qib, rdmavt: Move AETH credit functions into rdmavt 2017-02-19 09:18:38 -05:00
qib_debugfs.c infiniband: qib: no need to check return value of debugfs_create functions 2019-01-24 09:22:29 -07:00
qib_debugfs.h
qib_diag.c RDMA: Use u64_to_user_ptr everywhere 2018-03-29 13:42:29 -06:00
qib_driver.c IB/{hfi1, qib}: Fix a concurrency issue with device name in logging 2018-01-05 13:34:55 -05:00
qib_eeprom.c IB/{hfi1, qib}: Fix a concurrency issue with device name in logging 2018-01-05 13:34:55 -05:00
qib_file_ops.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
qib_fs.c fs: constify tree_descr arrays passed to simple_fill_super() 2017-04-26 23:54:06 -04:00
qib_iba6120.c RDMA/qib: Remove all occurrences of BUG_ON() 2018-11-29 15:59:40 -07:00
qib_iba7220.c RDMA/qib: Remove all occurrences of BUG_ON() 2018-11-29 15:59:40 -07:00
qib_iba7322.c RDMA/qib: Remove all occurrences of BUG_ON() 2018-11-29 15:59:40 -07:00
qib_init.c RDMA/qib: Remove all occurrences of BUG_ON() 2018-11-29 15:59:40 -07:00
qib_intr.c IB/qib: Convert timers to use timer_setup() 2017-10-09 12:19:41 -04:00
qib_mad.c RDMA: Mark if destroy address handle is in a sleepable context 2018-12-19 16:28:03 -07:00
qib_mad.h
qib_pcie.c IB/qib: fix spelling mistake "colescing" -> "coalescing" 2018-11-26 16:45:06 -07:00
qib_pio_copy.c
qib_qp.c IB/{hfi1, qib, rdmavt}: Schedule multi RC/UC packets instead of posting 2018-09-11 09:55:02 -06:00
qib_qsfp.c IB/qib: Remove empty function 2017-01-24 16:20:37 -05:00
qib_qsfp.h IB/qib: Remove empty function 2017-01-24 16:20:37 -05:00
qib_rc.c IB/{hfi1, qib, rdmavt}: Move send completion logic to rdmavt 2018-10-03 16:38:28 -06:00
qib_ruc.c IB/{hfi1, qib, rdmavt}: Move ruc_loopback to rdmavt 2018-10-03 16:38:28 -06:00
qib_sd7220.c Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_sdma.c IB/{hfi1, qib, rvt} Cleanup open coded sge usage 2019-01-30 14:22:32 -05:00
qib_sysfs.c RDMA: Introduce and use rdma_device_to_ibdev() 2019-01-14 13:12:03 -07:00
qib_twsi.c
qib_tx.c Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_uc.c IB/{hfi1, qib, rdmavt}: Move send completion logic to rdmavt 2018-10-03 16:38:28 -06:00
qib_ud.c Linux 5.0-rc5 2019-02-04 14:53:42 -07:00
qib_user_pages.c mm: make mm->pinned_vm an atomic64 counter 2019-02-07 12:54:02 -07:00
qib_user_sdma.c RDMA/qib: Remove all occurrences of BUG_ON() 2018-11-29 15:59:40 -07:00
qib_user_sdma.h
qib_verbs.c IB/{hfi1,qib}: Cleanup open coded sge sizing 2019-01-30 14:22:32 -05:00
qib_verbs.h IB/{hfi1, qib, rdmavt}: Move send completion logic to rdmavt 2018-10-03 16:38:28 -06:00
qib_wc_ppc64.c
qib_wc_x86_64.c
qib.h RDMA/drivers: Use core provided API for registering device attributes 2018-10-17 03:45:01 -06:00