[ofw] RE: bugcheck in mlx4_bus
Sean Hefty
sean.hefty at intel.com
Thu Aug 20 11:26:12 PDT 2009
>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
More information about the ofw
mailing list