>Is this running over IBAL or over WinVerbs?

This is running over winverbs.

>Today, IBAL is responsible for tracking all memory registrations, and freeing
>them when the process exits.  I assume WinVerbs does the same, though maybe
>not?

WinVerbs does the same - in theory anyway.  MRs are tracked with the PD using a
cl_qmap and deregistered when the PD is freed.  This is the relevant code to see
if the qmap usage is correct:

        for (item = cl_qmap_head(&pPd->MrMap); item != cl_qmap_end(&pPd->MrMap);
                 item = cl_qmap_head(&pPd->MrMap)) {
                mr = CONTAINING_RECORD(item, WV_MEMORY_REGION, Item);
                if (mr->hVerbsMr != NULL) {
                        pPd->pVerbs->deregister_mr(mr->hVerbsMr);
                }

                cl_qmap_remove_item(&pPd->MrMap, &mr->Item);
                ExFreePool(mr);
        }

This code looks like it's called for memory registration, QPs, SRQs, and CQs.
Winverbs has calls to clean all of these, but something may off.

>The place to trap the process exiting is in IRP_MJ_CLEANUP, not IRP_MJ_CLOSE.

I didn't actually trap this, but I can give it a try.  I was seeing if I could
reproduce the problem using the DAPL socket CM provider.  I used the rdma_cm
provider previously.

- Sean

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to