linux/drivers/infiniband/hw/ehca
Shani Michaeli 7083e42ee2 IB/core: Add "type 2" memory windows support
This patch enhances the IB core support for Memory Windows (MWs).

MWs allow an application to have better/flexible control over remote
access to memory.

Two types of MWs are supported, with the second type having two flavors:

    Type 1  - associated with PD only
    Type 2A - associated with QPN only
    Type 2B - associated with PD and QPN

Applications can allocate a MW once, and then repeatedly bind the MW
to different ranges in MRs that are associated to the same PD. Type 1
windows are bound through a verb, while type 2 windows are bound by
posting a work request.

The 32-bit memory key is composed of a 24-bit index and an 8-bit
key. The key is changed with each bind, thus allowing more control
over the peer's use of the memory key.

The changes introduced are the following:

* add memory window type enum and a corresponding parameter to ib_alloc_mw.
* type 2 memory window bind work request support.
* create a struct that contains the common part of the bind verb struct
  ibv_mw_bind and the bind work request into a single struct.
* add the ib_inc_rkey helper function to advance the tag part of an rkey.

Consumer interface details:

* new device capability flags IB_DEVICE_MEM_WINDOW_TYPE_2A and
  IB_DEVICE_MEM_WINDOW_TYPE_2B are added to indicate device support
  for these features.

  Devices can set either IB_DEVICE_MEM_WINDOW_TYPE_2A or
  IB_DEVICE_MEM_WINDOW_TYPE_2B if it supports type 2A or type 2B
  memory windows. It can set neither to indicate it doesn't support
  type 2 windows at all.

* modify existing provides and consumers code to the new param of
  ib_alloc_mw and the ib_mw_bind_info structure

Signed-off-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Shani Michaeli <shanim@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2013-02-21 11:51:45 -08:00
..
ehca_av.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ehca_classes_pSeries.h IB/ehca: Remove superfluous bitmasks from QP control block 2009-06-03 13:25:42 -07:00
ehca_classes.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ehca_cq.c IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ehca_eq.c IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ehca_hca.c IB: Use central enum for speed instead of hard-coded values 2012-03-05 09:25:16 -08:00
ehca_irq.c infiniband: ehca: Fix compiler warnings 2012-08-20 08:11:04 -07:00
ehca_irq.h infiniband: Ehca: Use hotplug thread infrastructure 2012-08-13 17:01:08 +02:00
ehca_iverbs.h IB/core: Add "type 2" memory windows support 2013-02-21 11:51:45 -08:00
ehca_main.c Drivers: infinband: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
ehca_mcast.c IB/ehca: Fix printk format warnings from u64 type change 2009-01-16 14:55:28 -08:00
ehca_mrmw.c IB/core: Add "type 2" memory windows support 2013-02-21 11:51:45 -08:00
ehca_mrmw.h IB/ehca: Tolerate dynamic memory operations before driver load 2009-06-22 22:18:51 -07:00
ehca_pd.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ehca_qes.h tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00
ehca_qp.c IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ehca_reqs.c IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ehca_sqp.c IB/ehca: Require in_wc in process_mad() 2010-02-19 11:13:39 -08:00
ehca_tools.h IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ehca_uverbs.c mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
hcp_if.c powerpc: Move get_longbusy_msecs into hvcall.h and remove duplicate function 2012-11-15 15:08:07 +11:00
hcp_if.h fix typos concerning "initiali[zs]e" 2010-06-16 18:05:05 +02:00
hcp_phyp.c IB/ehca: Catch failing ioremap() 2010-07-21 12:46:29 -07:00
hcp_phyp.h IB/ehca: Catch failing ioremap() 2010-07-21 12:46:29 -07:00
hipz_fns_core.h IB/ehca: Fix warnings issued by checkpatch.pl 2007-07-17 18:37:40 -07:00
hipz_fns.h
hipz_hw.h IB/ehca: Serialize HCA-related hCalls if necessary 2007-12-12 14:09:43 -08:00
ipz_pt_fn.c IB/ehca: Remove uses of virt_to_abs() and abs_to_virt() 2012-09-05 15:18:45 +10:00
ipz_pt_fn.h IB/ehca: Move extern declarations from .c files to .h files 2007-07-28 21:47:53 -07:00
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile