[ofw] BSOD at winmad

Hefty, Sean sean.hefty at intel.com
Mon Nov 29 07:53:06 PST 2010


> 1. WmRegRemoveHandler sets pRegistration->pDevice = NULL;

This is not done until all HCA resources have been destroyed:

	pRegistration->pDevice->IbInterface.destroy_qp(pRegistration->hQp, NULL);
	pRegistration->pDevice->IbInterface.dealloc_pd(pRegistration->hPd, NULL);
	pRegistration->pDevice->IbInterface.close_ca(pRegistration->hCa, NULL);
	pRegistration->pDevice->IbInterface.close_al(pRegistration->hIbal);

	WmIbDevicePut(pRegistration->pDevice);
	pRegistration->pDevice = NULL;

> 2. WmReceiveHandler() uses pReg->pDevice

> 4. How can we ensure that this callback was removed before we cleared the pDevice pointer?
> I.e., I am looking for something like call to dereg_mad_svc

The purpose behind using ib_sync_destroy is to ensure that WmReceiveHandler cannot be called after we've destroyed the QP, closed the CA, and closed AL.

I believe that destroy_qp acts as 'dereg_mad_svc'.

- Sean



More information about the ofw mailing list