15 Oct, 2016

1 commit

  • Adds a skeletal implementation of the qed* RoCE driver -
    basically the ability to communicate with the qede driver and
    receive notifications from it regarding various init/exit events.

    Signed-off-by: Rajesh Borundia
    Signed-off-by: Ram Amrani
    Signed-off-by: Doug Ledford

    Ram Amrani
     

23 Aug, 2016

1 commit


04 Aug, 2016

1 commit

  • Soft RoCE (RXE) - The software RoCE driver

    ib_rxe implements the RDMA transport and registers to the RDMA core
    device as a kernel verbs provider. It also implements the packet IO
    layer. On the other hand ib_rxe registers to the Linux netdev stack
    as a udp encapsulating protocol, in that case RDMA, for sending and
    receiving packets over any Ethernet device. This yields a RDMA
    transport over the UDP/Ethernet network layer forming a RoCEv2
    compatible device.

    The configuration procedure of the Soft RoCE drivers requires
    binding to any existing Ethernet network device. This is done with
    /sys interface.

    A userspace Soft RoCE library (librxe) provides user applications
    the ability to run with Soft RoCE devices. The use of rxe verbs ins
    user space requires the inclusion of librxe as a device specifics
    plug-in to libibverbs. librxe is packaged separately.

    Architecture:

    +-----------------------------------------------------------+
    | Application |
    +-----------------------------------------------------------+
    +-----------------------------------+
    | libibverbs |
    User +-----------------------------------+
    +----------------+ +----------------+
    | librxe | | HW RoCE lib |
    +----------------+ +----------------+
    +---------------------------------------------------------------+
    +--------------+ +------------+
    | Sockets | | RDMA ULP |
    +--------------+ +------------+
    +--------------+ +---------------------+
    | TCP/IP | | ib_core |
    +--------------+ +---------------------+
    +------------+ +----------------+
    Kernel | ib_rxe | | HW RoCE driver |
    +------------+ +----------------+
    +------------------------------------+
    | NIC driver |
    +------------------------------------+

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    +-----------------------------------------------------------+
    | Application |
    +-----------------------------------------------------------+
    +-----------------------------------+
    | libibverbs |
    User +-----------------------------------+
    +----------------+ +----------------+
    | librxe | | HW RoCE lib |
    +----------------+ +----------------+
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    +--------------+ +------------+
    | Sockets | | RDMA ULP |
    +--------------+ +------------+
    +--------------+ +---------------------+
    | TCP/IP | | ib_core |
    +--------------+ +---------------------+
    +------------+ +----------------+
    Kernel | ib_rxe | | HW RoCE driver |
    +------------+ +----------------+
    +------------------------------------+
    | NIC driver |
    +------------------------------------+
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Soft RoCE resources:

    [1[ https://github.com/SoftRoCE/librxe-dev librxe - source code in
    Github
    [2] https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home - Soft RoCE
    Wiki page
    [3] https://github.com/SoftRoCE/librxe-dev - Soft RoCE userspace library

    Signed-off-by: Kamal Heib
    Signed-off-by: Amir Vadai
    Signed-off-by: Moni Shoua
    Reviewed-by: Haggai Eran
    Signed-off-by: Doug Ledford

    Moni Shoua
     

26 May, 2016

1 commit

  • The TODO list for the hfi1 driver was completed during 4.6. In addition
    other objections raised (which are far beyond what was in the TODO list)
    have been addressed as well. It is now time to remove the driver from
    staging and into the drivers/infiniband sub-tree.

    Reviewed-by: Jubin John
    Signed-off-by: Dennis Dalessandro
    Signed-off-by: Doug Ledford

    Dennis Dalessandro
     

22 Mar, 2016

1 commit


17 Mar, 2016

1 commit


11 Mar, 2016

1 commit

  • This patch introduces the basics for a new module called rdma_vt. This new
    driver is a software implementation of the InfiniBand verbs and aims to
    replace the multiple implementations that exist and duplicate each others'
    code.

    While the call to actually register the device with the IB core happens in
    rdma_vt, most of the work is still done in the drivers themselves. This
    will be changing in a follow on patch this is just laying the groundwork
    for this infrastructure.

    Reviewed-by: Ira Weiny
    Reviewed-by: Mike Marciniszyn
    Signed-off-by: Dennis Dalessandro
    Signed-off-by: Doug Ledford

    Dennis Dalessandro
     

23 Dec, 2015

1 commit

  • Users would like to control the behaviour of rdma_cm.
    For example, old applications which don't set the
    required RoCE gid type could be executed on RoCE V2
    network types. In order to support this configuration,
    we implement a configfs for rdma_cm.

    In order to use the configfs, one needs to mount it and
    mkdir inside rdma_cm directory.

    The patch adds support for a single configuration file,
    default_roce_mode. The mode can either be "IB/RoCE v1" or
    "RoCE v2".

    Signed-off-by: Matan Barak
    Signed-off-by: Doug Ledford

    Matan Barak
     

12 Dec, 2015

1 commit

  • This adds an abstraction that allows ULPs to simply pass a completion
    object and completion callback with each submitted WR and let the RDMA
    core handle the nitty gritty details of how to handle completion
    interrupts and poll the CQ.

    In detail there is a new ib_cqe structure which just contains the
    completion callback, and which can be used to get at the containing
    object using container_of. It is pointed to by the WR and WC as an
    alternative to the wr_id field, similar to how many ULPs already use
    the field to store a pointer using casts.

    A driver using the new completion callbacks allocates it's CQs using
    the new ib_create_cq API, which in addition to the number of CQEs and
    the completion vectors also takes a mode on how we poll for CQEs.
    Three modes are available: direct for drivers that never take CQ
    interrupts and just poll for them, softirq to poll from softirq context
    using the to be renamed blk-iopoll infrastructure which takes care of
    rearming and budgeting, or a workqueue for consumer who want to be
    called from user context.

    Thanks a lot to Sagi Grimberg who helped reviewing the API, wrote
    the current version of the workqueue code because my two previous
    attempts sucked too much and converted the iSER initiator to the new
    API.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     

12 Sep, 2015

1 commit

  • The ehca driver is only supported on IBM machines with a custom EBus.
    As they have opted to build their newer machines using more industry
    standard technology and haven't really been pushing EBus capable
    machines for a while, this driver can now safely be moved to the
    staging area and scheduled for eventual removal. This plan was brought
    to IBM's attention and received their sign-off.

    Cc: alexs@linux.vnet.ibm.com
    Cc: hnguyen@de.ibm.com
    Cc: raisch@de.ibm.com
    Cc: stefan.roscher@de.ibm.com
    Signed-off-by: Doug Ledford

    Doug Ledford
     

29 Aug, 2015

2 commits


16 Dec, 2014

2 commits

  • * Add an interval tree implementation for ODP umems. Create an
    interval tree for each ucontext (including a count of the number of
    ODP MRs in this context, semaphore, etc.), and register ODP umems in
    the interval tree.
    * Add MMU notifiers handling functions, using the interval tree to
    notify only the relevant umems and underlying MRs.
    * Register to receive MMU notifier events from the MM subsystem upon
    ODP MR registration (and unregister accordingly).
    * Add a completion object to synchronize the destruction of ODP umems.
    * Add mechanism to abort page faults when there's a concurrent invalidation.

    The way we synchronize between concurrent invalidations and page
    faults is by keeping a counter of currently running invalidations, and
    a sequence number that is incremented whenever an invalidation is
    caught. The page fault code checks the counter and also verifies that
    the sequence number hasn't progressed before it updates the umem's
    page tables. This is similar to what the kvm module does.

    In order to prevent the case where we register a umem in the middle of
    an ongoing notifier, we also keep a per ucontext counter of the total
    number of active mmu notifiers. We only enable new umems when all the
    running notifiers complete.

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Shachar Raindel
    Signed-off-by: Haggai Eran
    Signed-off-by: Yuval Dagan
    Signed-off-by: Roland Dreier

    Haggai Eran
     
  • * Add a configuration option for enable on-demand paging support in
    the infiniband subsystem (CONFIG_INFINIBAND_ON_DEMAND_PAGING). In a
    later patch, this configuration option will select the MMU_NOTIFIER
    configuration option to enable mmu notifiers.
    * Add a flag for on demand paging (ODP) support in the IB device capabilities.
    * Add a flag to request ODP MR in the access flags to reg_mr.
    * Fail registrations done with the ODP flag when the low-level driver
    doesn't support this.
    * Change the conditions in which an MR will be writable to explicitly
    specify the access flags. This is to avoid making an MR writable just
    because it is an ODP MR.
    * Add a ODP capabilities to the extended query device verb.

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Shachar Raindel
    Signed-off-by: Haggai Eran
    Signed-off-by: Roland Dreier

    Sagi Grimberg
     

23 Jan, 2014

1 commit


20 Jan, 2014

1 commit

  • IP based addressing introduces the usage of rdma_addr_find_dmac_by_grh()
    within ib_core. Since this function is declared in ib_addr, ib_addr
    should be a part of the core INFINIBAND modules, rather than
    INFINIBAND_ADDR_TRANS.

    Signed-off-by: Matan Barak
    Signed-off-by: Roland Dreier

    Matan Barak
     

14 Jan, 2014

1 commit


18 Nov, 2013

1 commit

  • This commit reverts commit 7afbddfae993 ("IB/core: Temporarily disable
    create_flow/destroy_flow uverbs"). Since the uverbs extensions
    functionality was experimental for v3.12, this patch re-enables the
    support for them and flow-steering for v3.13.

    Signed-off-by: Matan Barak
    Signed-off-by: Roland Dreier

    Matan Barak
     

22 Oct, 2013

1 commit

  • The create_flow/destroy_flow uverbs and the associated extensions to
    the user-kernel verbs ABI are under review and are too experimental to
    freeze at this point.

    So userspace is not exposed to experimental features and an uinstable
    ABI, temporarily disable this for v3.12 (with a Kconfig option behind
    staging to reenable it if desired).

    The feature will be enabled after proper cleanup for v3.13.

    Signed-off-by: Yann Droneaud
    Link: http://marc.info/?i=cover.1381351016.git.ydroneaud@opteya.com
    Link: http://marc.info/?i=cover.1381177342.git.ydroneaud@opteya.com

    [ Add a Kconfig option to reenable these verbs. - Roland ]

    Signed-off-by: Roland Dreier

    Yann Droneaud
     

09 Jul, 2013

1 commit

  • The driver is comprised of two kernel modules: mlx5_ib and mlx5_core.
    This partitioning resembles what we have for mlx4, except that mlx5_ib
    is the pci device driver and not mlx5_core.

    mlx5_core is essentially a library that provides general functionality
    that is intended to be used by other Mellanox devices that will be
    introduced in the future. mlx5_ib has a similar role as any hardware
    device under drivers/infiniband/hw.

    Signed-off-by: Eli Cohen
    Signed-off-by: Jack Morgenstein
    Signed-off-by: Or Gerlitz

    [ Merge in coccinelle fixes from Fengguang Wu .
    - Roland ]

    Signed-off-by: Roland Dreier

    Eli Cohen
     

25 Apr, 2013

1 commit

  • This patch adds support for iSCSI Extensions for RDMA target mode,
    and includes CQ pooling per isert_device context distributed across
    multiple active iser target sessions.

    It also uses cmwq process context for RX / TX ib_post_cq() polling
    via isert_cq_desc->cq_[rx,tx]_work invoked by isert_cq_[rx,tx]_callback()
    hardIRQ context callbacks.

    v5 changes:

    - Use ISER_RECV_DATA_SEG_LEN instead of hardcoded value in ISER_RX_PAD_SIZE (Or)
    - Fix make W=1 warnings (Or)
    - Add missing depends on NET && INFINIBAND_ADDR_TRANS in Kconfig (Randy + Or)
    - Make isert_device_find_by_ib_dev() return proper ERR_PTR (Wei Yongjun)
    - Properly setup iscsi_np->np_sockaddr in isert_setup_np() (Shlomi + nab)
    - Add special case for early ISCSI_OP_SCSI_CMD exception handling (nab)

    v4 changes:
    - Mark isert_cq_rx_work as static (Or)
    - Drop unnecessary ib_dma_sync_single_for_cpu + ib_dma_sync_single_for_device
    calls for isert_cmd->sense_buf_dma from isert_put_response (Or)
    - Use 12288 for ISER_RX_PAD_SIZE base to save extra page per
    struct iser_rx_desc (Or + nab)
    - Drop now unnecessary isert_rx_desc usage, and convert RX users to
    iser_rx_desc (Or + nab)
    - Move isert_[alloc,free]_rx_descriptors() ahead of
    isert_create_device_ib_res() usage (nab)
    - Mark isert_cq_[rx,tx]_callback() + prototypes as static
    - Fix 'warning: 'ret' may be used uninitialized' warning for
    isert_create_device_ib_res on powerpc allmodconfig (fengguang + nab)
    - Fix 'warning: 'ret' may be used uninitialized' warning for
    isert_connect_request on i386 allyesconfig (fengguang + nab)
    - Fix pr_debug conversion specification in isert_rx_completion()
    (fengguang + nab)
    - Drop unnecessary isert_conn->conn_cm_id != NULL check in
    isert_connect_release causing the build warning:
    "variable dereferenced before check 'isert_conn->conn_cm_id'"
    - Fix isert_lid + isert_np leak in isert_setup_np failure path
    - Add isert_conn->conn_wait_comp_err usage in isert_free_conn()
    for isert_cq_comp_err completion path
    - Add isert_conn->logout_posted bit to determine decrement of
    isert_conn->post_send_buf_count from logout response completion
    - Always set ISER_CONN_DOWN from isert_disconnect_work() callback

    v3 changes:

    - Convert to use per isert_cq_desc->cq_[rx,tx]_work + drop tasklets (Or + nab)
    - Move IB_EVENT_QP_LAST_WQE_REACHED warn into correct
    isert_qp_event_callback (Or)
    - Drop unnecessary IB_ACCESS_REMOTE_* access flag usage in
    isert_create_device_ib_res (Or)
    - Add common isert_init_send_wr(), and convert isert_put_* calls (Or)
    - Move to verbs+core logic to single ib_isert.[c,h] (Or + nab)
    - Add kmem_cache isert_cmd_cache usage for descriptor allocation (nab)
    - Move common ib_post_send() logic used by isert_put_*() to
    isert_post_response() (nab)
    - Add isert_put_reject call in isert_response_queue() for posting
    ISCSI_REJECT response. (nab)
    - Add ISTATE_SEND_REJECT checking in isert_do_control_comp. (nab)

    v2 changes:

    - Drop unused ISERT_ADDR_ROUTE_TIMEOUT define
    - Add rdma_notify() call for IB_EVENT_COMM_EST in isert_qp_event_callback()
    - Make isert_query_device() less verbose
    - Drop unused RDMA_CM_EVENT_ADDR_ERROR and RDMA_CM_EVENT_ROUTE_ERROR
    cases from isert_cma_handler()
    - Drop unused rdma/ib_fmr_pool.h include
    - Update isert_conn_setup_qp() to assign cq based upon least used
    - Add isert_create_device_ib_res() to setup PD, CQs and MRs for each
    underlying struct ib_device, instead of using per isert_conn resources.
    - Add isert_free_device_ib_res() to release PD, CQs and MRs for each
    underlying struct ib_device.
    - Add isert_device_find_by_ib_dev()
    - Change isert_connect_request() to drop PD, CQs and MRs allocation,
    and use isert_device_find_by_ib_dev() instead.
    - Add isert_device_try_release()
    - Change isert_connect_release() to decrement cq_active_qps, and drop
    PD, CQs and MRs resource release.
    - Update isert_connect_release() to call isert_device_try_release()
    - Make isert_create_device_ib_res() determine device->cqs_used based
    upon num_online_cpus()
    - Drop misleading isert_dump_ib_wc() usage
    - Drop unused rdma/ib_fmr_pool.h include
    - Use proper xfer_len for login PDUs in isert_rx_completion()
    - Add isert_release_cmd() usage
    - Change isert_alloc_cmd() to setup iscsi_cmd.release_cmd() pointer
    - Change isert_put_cmd() to perform per iscsi_opcode specific release
    logic
    - Add isert_unmap_cmd() call for ISCSI_OP_SCSI_CMD from isert_put_cmd()
    - Change isert_send_completion() to call
    atomic_dec(&isert_conn->post_send_buf_count)
    based upon per iscsi_opcode logic
    - Drop ISTATE_REMOVE processing from isert_immediate_queue()
    - Drop ISTATE_SEND_DATAIN processing from isert_response_queue()
    - Drop ISTATE_SEND_STATUS processing from isert_response_queue()
    - Drop iscsit_transport->iscsit_unmap_cmd() and ->iscsit_free_cmd()
    - Convert iser_cq_tx_tasklet() to use struct isert_cq_desc pooling logic
    - Convert isert_cq_tx_callback() to use struct isert_cq_desc pooling
    logic
    - Convert iser_cq_rx_tasklet() to use struct isert_cq_desc pooling logic
    - Convert isert_cq_rx_callback() to use struct isert_cq_desc pooling
    logic
    - Add explict iscsit_stop_dataout_timer() call to
    isert_do_rdma_read_comp()
    - Use isert_get_dataout() for iscsit_transport->iscsit_get_dataout()
    caller
    - Drop ISTATE_SEND_R2T processing from isert_immediate_queue()
    - Drop unused rdma/ib_fmr_pool.h include
    - Drop isert_cmd->cmd_kref in favor of se_cmd->cmd_kref usage
    - Add struct isert_device in order to support multiple EQs + CQ pooling
    - Add struct isert_cq_desc
    - Drop tasklets and cqs from isert_conn
    - Bump ISERT_MAX_CQ to 64
    - Various minor checkpatch fixes

    Signed-off-by: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

09 May, 2012

1 commit


16 Dec, 2011

1 commit

  • This patch adds the kernel module ib_srpt SCSI RDMA Protocol (SRP) target
    implementation conforming to the SRP r16a specification for the mainline
    drivers/target infrastructure.

    This driver was originally developed by Vu Pham and has been optimized by
    Bart Van Assche and merged into upstream LIO based on his srpt-lio-4.1
    branch here:

    https://github.com/bvanassche/srpt-lio/commits/srpt-lio-4.1/

    This updated patch also contains the following two changes from
    lio-core-2.6.git/master. One is to fix a bug with 1 >= task->task_sg[]
    chained mappings in ib_srpt, and the other to convert the configfs control
    plane to reference IB Port GUID and struct srpt_port directly following
    mainline v4.x target_core_fabric_configfs.c convertion for ib_srpt
    to work with rtslib/rtsadmin v2 code.

    These seperate patches can be found here:

    ib_srpt: Fix bug with chainged SGLs in srpt_map_sg_to_ib_sge
    http://www.risingtidesystems.com/git/?p=lio-core-2.6.git;a=commitdiff;h=ea485147563b6555a97dbf811825fbb586519252

    ib_srpt: Convert se_wwn endpoint reference to struct srpt_port->port_wwn
    http://www.risingtidesystems.com/git/?p=lio-core-2.6.git;a=commitdiff;h=4e544a210acb227df1bb4ca5086e65bdf4e648ea

    This also includes the following recent v1 -> v2 review changes:

    ib_srpt: Fix potential out-of-bounds array access
    ib_srpt: Avoid failed multipart RDMA transfers
    ib_srpt: Fix srpt_alloc_fabric_acl failure case return value
    ib_srpt: Update comments to reference $driver/$port layout
    ib_srpt: Fix sport->port_guid formatting code
    ib_srpt: Remove legacy use_port_guid_in_session_name module parameter
    ib_srpt: Convert srp_max_rdma_size into per port configfs attribute
    ib_srpt: Convert srp_max_rsp_size into per port configfs attribute
    ib_srpt: Convert srpt_sq_size into per port configfs attribute

    and v2 -> v3 review changes:

    ib_srpt: Fix possible race with srp_sq_size in srpt_create_ch_ib
    ib_srpt: Fix possible race with srp_max_rsp_size in srpt_release_channel_work
    ib_srpt: Fix up MAX_SRPT_RDMA_SIZE define
    ib_srpt: Make srpt_map_sg_to_ib_sge() failure case return -EAGAIN
    ib_srpt: Convert port_guid to use subnet_prefix + interface_id formatting
    ib_srpt: Make srpt_check_stop_free return kref_put status
    ib_srpt: Make compilation with BUG=n proceed`
    ib_srpt: Use new target_core_fabric.h include
    ib_srpt: Check hex2bin() return code to silence build warning

    Cc: Bart Van Assche
    Cc: Roland Dreier
    Cc: Christoph Hellwig
    Cc: Vu Pham
    Cc: David Dillow
    Signed-off-by: Nicholas A. Bellinger

    Bart Van Assche
     

21 May, 2011

1 commit

  • Add basic RDMA netlink infrastructure that allows for registration of
    RDMA clients for which data is to be exported and supplies message
    construction callbacks.

    Signed-off-by: Nir Muchtar

    [ Reorganize a few things, add CONFIG_NET dependency. - Roland ]

    Signed-off-by: Roland Dreier

    Roland Dreier
     

18 Oct, 2010

1 commit

  • The patch below updates broken web addresses in the kernel

    Signed-off-by: Justin P. Mattock
    Cc: Maciej W. Rozycki
    Cc: Geert Uytterhoeven
    Cc: Finn Thain
    Cc: Randy Dunlap
    Cc: Matt Turner
    Cc: Dimitry Torokhov
    Cc: Mike Frysinger
    Acked-by: Ben Pfaff
    Acked-by: Hans J. Koch
    Reviewed-by: Finn Thain
    Signed-off-by: Jiri Kosina

    Justin P. Mattock
     

24 May, 2010

1 commit


22 Apr, 2010

1 commit


25 Feb, 2010

1 commit

  • The anon_inodes interface has been split to allow creating a bare
    (non-installed) file pointer and also extended to allow specifying
    O_RDONLY in the flags. This makes it a suitable replacement for the
    private "infinibandeventfs" pseudo-filesystem used by uverbs, and this
    replacement saves a small chunk of boilerplate code.

    Signed-off-by: Roland Dreier

    Roland Dreier
     

30 Dec, 2008

1 commit

  • Commit 38617c64 ("RDMA/addr: Add support for translating IPv6
    addresses") broke the build when CONFIG_IPV6=n, because the ib_addr
    module unconditionally attempted to call ipv6_chk_addr() and other
    IPv6 functions that are not defined when IPv6 is disabled. Fix this
    by only building IPv6 support if CONFIG_IPV6 is turned on, and
    add a Kconfig dependency to prevent the ib_addr code from being built
    in when IPv6 is built modular.

    Signed-off-by: Roland Dreier

    Roland Dreier
     

05 Feb, 2008

1 commit


10 Jul, 2007

1 commit


10 May, 2007

1 commit


09 May, 2007

2 commits

  • Add an InfiniBand driver for Mellanox ConnectX adapters. Because
    these adapters can also be used as ethernet NICs and Fibre Channel
    HBAs, the driver is split into two modules:

    mlx4_core: Handles low-level things like device initialization and
    processing firmware commands. Also controls resource allocation
    so that the InfiniBand, ethernet and FC functions can share a
    device without stepping on each other.

    mlx4_ib: Handles InfiniBand-specific things; plugs into the
    InfiniBand midlayer.

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Export ib_umem_get()/ib_umem_release() and put low-level drivers in
    control of when to call ib_umem_get() to pin and DMA map userspace,
    rather than always calling it in ib_uverbs_reg_mr() before calling the
    low-level driver's reg_user_mr method.

    Also move these functions to be in the ib_core module instead of
    ib_uverbs, so that driver modules using them do not depend on
    ib_uverbs.

    This has a number of advantages:
    - It is better design from the standpoint of making generic code a
    library that can be used or overridden by device-specific code as
    the details of specific devices dictate.
    - Drivers that do not need to pin userspace memory regions do not
    need to take the performance hit of calling ib_mem_get(). For
    example, although I have not tried to implement it in this patch,
    the ipath driver should be able to avoid pinning memory and just
    use copy_{to,from}_user() to access userspace memory regions.
    - Buffers that need special mapping treatment can be identified by
    the low-level driver. For example, it may be possible to solve
    some Altix-specific memory ordering issues with mthca CQs in
    userspace by mapping CQ buffers with extra flags.
    - Drivers that need to pin and DMA map userspace memory for things
    other than memory regions can use ib_umem_get() directly, instead
    of hacks using extra parameters to their reg_phys_mr method. For
    example, the mlx4 driver that is pending being merged needs to pin
    and DMA map QP and CQ buffers, but it does not need to create a
    memory key for these buffers. So the cleanest solution is for mlx4
    to call ib_umem_get() in the create_qp and create_cq methods.

    Signed-off-by: Roland Dreier

    Roland Dreier
     

13 Feb, 2007

1 commit


23 Sep, 2006

3 commits


22 Jun, 2006

1 commit


18 Jun, 2006

1 commit