RDMA: Mark if create address handle is in a sleepable context
Introduce a 'flags' field to create address handle callback and add a flag that marks whether the callback is executed in an atomic context or not. This will allow drivers to wait for completion instead of polling for it when it is allowed. Signed-off-by: Gal Pressman <galpress@amazon.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
此提交包含在:
@@ -533,11 +533,12 @@ int pvrdma_dealloc_pd(struct ib_pd *pd)
|
||||
* @pd: the protection domain
|
||||
* @ah_attr: the attributes of the AH
|
||||
* @udata: user data blob
|
||||
* @flags: create address handle flags (see enum rdma_create_ah_flags)
|
||||
*
|
||||
* @return: the ib_ah pointer on success, otherwise errno.
|
||||
*/
|
||||
struct ib_ah *pvrdma_create_ah(struct ib_pd *pd, struct rdma_ah_attr *ah_attr,
|
||||
struct ib_udata *udata)
|
||||
u32 flags, struct ib_udata *udata)
|
||||
{
|
||||
struct pvrdma_dev *dev = to_vdev(pd->device);
|
||||
struct pvrdma_ah *ah;
|
||||
|
@@ -420,7 +420,7 @@ int pvrdma_destroy_cq(struct ib_cq *cq);
|
||||
int pvrdma_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc);
|
||||
int pvrdma_req_notify_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags);
|
||||
struct ib_ah *pvrdma_create_ah(struct ib_pd *pd, struct rdma_ah_attr *ah_attr,
|
||||
struct ib_udata *udata);
|
||||
u32 flags, struct ib_udata *udata);
|
||||
int pvrdma_destroy_ah(struct ib_ah *ah);
|
||||
|
||||
struct ib_srq *pvrdma_create_srq(struct ib_pd *pd,
|
||||
|
新增問題並參考
封鎖使用者