linux/drivers/infiniband/hw/qib
Christoph Lameter bc3e53f682 mm: distinguish between mlocked and pinned pages
Some kernel components pin user space memory (infiniband and perf) (by
increasing the page count) and account that memory as "mlocked".

The difference between mlocking and pinning is:

A. mlocked pages are marked with PG_mlocked and are exempt from
   swapping. Page migration may move them around though.
   They are kept on a special LRU list.

B. Pinned pages cannot be moved because something needs to
   directly access physical memory. They may not be on any
   LRU list.

I recently saw an mlockalled process where mm->locked_vm became
bigger than the virtual size of the process (!) because some
memory was accounted for twice:

Once when the page was mlocked and once when the Infiniband
layer increased the refcount because it needt to pin the RDMA
memory.

This patch introduces a separate counter for pinned pages and
accounts them seperately.

Signed-off-by: Christoph Lameter <cl@linux.com>
Cc: Mike Marciniszyn <infinipath@qlogic.com>
Cc: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-10-31 17:30:46 -07:00
..
Kconfig RDMA: Add netlink infrastructure 2011-05-20 11:46:11 -07:00
Makefile IB/qib: Use request_firmware() to load SD7220 firmware 2010-07-08 13:27:05 -07:00
qib_6120_regs.h
qib_7220_regs.h
qib_7220.h IB/qib: Use request_firmware() to load SD7220 firmware 2010-07-08 13:27:05 -07:00
qib_7322_regs.h IB/qib: Mask hardware error during link reset 2010-07-06 14:13:20 -07:00
qib_common.h IB/qib: Allow PSM to select from multiple port assignment algorithms 2010-07-21 11:39:36 -07:00
qib_cq.c IB/qib: Generate completion callback on errors 2011-01-10 17:42:19 -08:00
qib_diag.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
qib_dma.c
qib_driver.c IB/qib: Issue pre-emptive NAKs on eager buffer overflow 2011-01-10 17:42:22 -08:00
qib_eeprom.c
qib_file_ops.c IB/qib: Fix potential deadlock with link down interrupt 2011-07-18 12:09:23 -07:00
qib_fs.c fs: dcache rationalise dget variants 2011-01-07 17:50:24 +11:00
qib_iba6120.c Revert wrong fixes for common misspellings 2011-04-26 23:31:11 -07:00
qib_iba7220.c IB/qib: Update active link width 2011-07-18 12:09:26 -07:00
qib_iba7322.c IB/qib: Defer HCA error events to tasklet 2011-07-22 11:56:05 -07:00
qib_init.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_intr.c IB/qib: Ensure that LOS and DFE are being turned off 2011-06-17 11:56:59 -07:00
qib_keys.c IB/qib: Fix refcount leak in lkey/rkey validation 2011-01-10 17:42:23 -08:00
qib_mad.c IB/pma: Add include file for IBA performance counters definitions 2011-07-18 21:04:35 -07:00
qib_mad.h IB/pma: Add include file for IBA performance counters definitions 2011-07-18 21:04:35 -07:00
qib_mmap.c
qib_mr.c IB/qib: RDMA lkey/rkey validation is inefficient for large MRs 2011-01-10 17:42:22 -08:00
qib_pcie.c IB/qib: Remove unnecessary read of PCI_CAP_ID_EXP 2011-07-18 11:57:52 -07:00
qib_pio_copy.c
qib_qp.c IB/qib: Change QPN increment 2011-01-10 17:42:22 -08:00
qib_qsfp.c RDMA: Update workqueue usage 2011-01-16 21:16:31 -08:00
qib_qsfp.h IB/qib: Set default LE2 value for active cables to 0 2011-03-14 12:10:34 -07:00
qib_rc.c IB/qib: Prevent double completions after a timeout or RNR error 2011-02-17 14:04:50 -08:00
qib_ruc.c
qib_sd7220.c IB/qib: Use request_firmware() to load SD7220 firmware 2010-07-08 13:27:05 -07:00
qib_sdma.c IB/qib: Fix race between qib_error_qp() and receive packet processing 2010-08-03 13:59:47 -07:00
qib_srq.c
qib_sysfs.c IB/qib: Add sysfs interface to read free contexts 2011-07-18 12:09:19 -07:00
qib_twsi.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_tx.c IB/qib: Avoid variable-length array 2010-07-19 13:21:24 -07:00
qib_uc.c IB/qib: Process RDMA WRITE ONLY with IMMEDIATE properly 2010-10-22 22:12:15 -07:00
qib_ud.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_user_pages.c mm: distinguish between mlocked and pinned pages 2011-10-31 17:30:46 -07:00
qib_user_sdma.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_user_sdma.h
qib_verbs_mcast.c
qib_verbs.c IB/qib: Fix race between qib_error_qp() and receive packet processing 2010-08-03 13:59:47 -07:00
qib_verbs.h RDMA: Update workqueue usage 2011-01-16 21:16:31 -08:00
qib_wc_ppc64.c
qib_wc_x86_64.c
qib.h IB/qib: Defer HCA error events to tasklet 2011-07-22 11:56:05 -07:00