Skip to content
  • Mitko Haralanov's avatar
    staging/rdma/hfi1: Add page lock limit check for SDMA requests · a0d40693
    Mitko Haralanov authored
    
    
    The driver pins pages on behalf of user processes in two
    separate instances - when the process has submitted a
    SDMA transfer and when the process programs an expected
    receive buffer.
    
    When pinning pages, the driver is required to observe the
    locked page limit set by the system administrator and refuse
    to lock more pages than allowed. Such a check was done for
    expected receives but was missing from the SDMA transfer
    code path.
    
    This commit adds the missing check for SDMA transfers. As of
    this commit, user SDMA or expected receive requests will be
    rejected if the number of pages required to be pinned will
    exceed the set limit.
    
    Due to the fact that the driver needs to take the MM semaphore
    in order to update the locked page count (which can sleep), this
    cannot be done by the callback function as it [the callback] is
    executed in interrupt context. Therefore, it is necessary to put
    all the completed SDMA tx requests onto a separate list (txcmp) and
    offload the actual clean-up and unpinning work to a workqueue.
    
    Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
    Signed-off-by: default avatarMitko Haralanov <mitko.haralanov@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    a0d40693