[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