From: shefty Date: Fri, 28 Aug 2009 19:19:42 +0000 (+0000) Subject: winverbs branch: sync with commits in trunk X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=340ba7c12204acd4f6089537d02115fef9cbc7a4;p=~shefty%2Frdma-win.git winverbs branch: sync with commits in trunk git-svn-id: svn://openib.tc.cornell.edu/gen1@2388 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/winverbs/core/winmad/kernel/wm_driver.c b/branches/winverbs/core/winmad/kernel/wm_driver.c index b5b79e58..6d3cbdff 100644 --- a/branches/winverbs/core/winmad/kernel/wm_driver.c +++ b/branches/winverbs/core/winmad/kernel/wm_driver.c @@ -247,7 +247,7 @@ static ib_ca_attr_t *WmQueryCaAttributes(WM_IB_DEVICE *pDevice) ib_status = pDevice->VerbsInterface.Verbs. query_ca(pDevice->VerbsInterface.Verbs.p_hca_obj, attr, &size, NULL); if (ib_status != IB_SUCCESS) { - ExFreePool(attr); + ExFreePoolWithTag(attr, 'acmw'); attr = NULL; } @@ -282,7 +282,7 @@ static NTSTATUS WmAddCa(WM_IB_DEVICE *pDevice) status = STATUS_SUCCESS; out: - ExFreePool(attr); + ExFreePoolWithTag(attr, 'acmw'); return status; } @@ -361,7 +361,7 @@ static NTSTATUS WmPowerD0Exit(WDFDEVICE Device, WDF_POWER_DEVICE_STATE TargetSta pdev->IbInterface.wdm.InterfaceDereference(pdev->IbInterface.wdm.Context); if (pdev->pPortArray != NULL) { - ExFreePool(pdev->pPortArray); + ExFreePoolWithTag(pdev->pPortArray, 'pimw'); } if (destroy) { diff --git a/branches/winverbs/core/winmad/kernel/wm_reg.c b/branches/winverbs/core/winmad/kernel/wm_reg.c index 59f50556..8ee32e31 100644 --- a/branches/winverbs/core/winmad/kernel/wm_reg.c +++ b/branches/winverbs/core/winmad/kernel/wm_reg.c @@ -265,7 +265,7 @@ void WmRegFree(WM_REGISTRATION *pRegistatration) { WmRegRemoveHandler(pRegistatration); WmProviderPut(pRegistatration->pProvider); - ExFreePool(pRegistatration); + ExFreePoolWithTag(pRegistatration, 'grmw'); } void WmRegRemoveHandler(WM_REGISTRATION *pRegistration) diff --git a/branches/winverbs/core/winverbs/kernel/wv_cq.c b/branches/winverbs/core/winverbs/kernel/wv_cq.c index 6adcd15a..76e79db5 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_cq.c +++ b/branches/winverbs/core/winverbs/kernel/wv_cq.c @@ -128,7 +128,7 @@ err3: err2: WdfObjectDelete(cq->Queue); err1: - ExFreePool(cq); + ExFreePoolWithTag(cq, 'qcvw'); return status; } @@ -235,7 +235,7 @@ void WvCqFree(WV_COMPLETION_QUEUE *pCq) WdfObjectDelete(pCq->Queue); WdfObjectDelete(pCq->ErrorQueue); WvDevicePut(pCq->pDevice); - ExFreePool(pCq); + ExFreePoolWithTag(pCq, 'qcvw'); } void WvCqResize(WV_PROVIDER *pProvider, WDFREQUEST Request) diff --git a/branches/winverbs/core/winverbs/kernel/wv_device.c b/branches/winverbs/core/winverbs/kernel/wv_device.c index 5cc20bd6..31750111 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_device.c +++ b/branches/winverbs/core/winverbs/kernel/wv_device.c @@ -187,7 +187,7 @@ static ib_ca_attr_t *WvQueryCaAttributes(WV_DEVICE *pDevice) ib_status = pDevice->pVerbs->query_ca(pDevice->pDevice->hDevice, attr, &size, NULL); if (ib_status != IB_SUCCESS) { - ExFreePool(attr); + ExFreePoolWithTag(attr, 'acvw'); attr = NULL; } @@ -208,7 +208,7 @@ static NTSTATUS WvDeviceCreatePorts(WV_DEVICE *pDevice) } pDevice->PortCount = attr->num_ports; - ExFreePool(attr); + ExFreePoolWithTag(attr, 'acvw'); pDevice->pPorts = ExAllocatePoolWithTag(NonPagedPool, sizeof(WV_PORT) * pDevice->PortCount, 'cpvw'); @@ -367,6 +367,9 @@ static void WvDeviceFreePorts(WV_DEVICE *pDevice) WdfIoQueuePurgeSynchronously(pDevice->pPorts[i].Queue); WdfObjectDelete(pDevice->pPorts[i].Queue); } + if (pDevice->pPorts != NULL) { + ExFreePoolWithTag(pDevice->pPorts, 'cpvw'); + } } void WvDeviceFree(WV_DEVICE *pDevice) @@ -385,7 +388,7 @@ void WvDeviceFree(WV_DEVICE *pDevice) WvDeviceFreePorts(pDevice); WvProviderPut(pDevice->pProvider); - ExFreePool(pDevice); + ExFreePoolWithTag(pDevice, 'cdvw'); } void WvDeviceRemoveHandler(WV_DEVICE *pDevice) @@ -573,7 +576,7 @@ void WvDeviceQuery(WV_PROVIDER *pProvider, WDFREQUEST Request) WvConvertDevAttr(attr, ca_attr); outlen = sizeof(WV_IO_DEVICE_ATTRIBUTES); - ExFreePool(ca_attr); + ExFreePoolWithTag(ca_attr, 'acvw'); complete: WdfRequestCompleteWithInformation(Request, status, outlen); @@ -622,7 +625,7 @@ void WvDevicePortQuery(WV_PROVIDER *pProvider, WDFREQUEST Request) outlen = sizeof(WV_IO_PORT_ATTRIBUTES); free: - ExFreePool(ca_attr); + ExFreePoolWithTag(ca_attr, 'acvw'); complete: WdfRequestCompleteWithInformation(Request, status, outlen); } @@ -678,7 +681,7 @@ void WvDeviceGidQuery(WV_PROVIDER *pProvider, WDFREQUEST Request) } free: - ExFreePool(ca_attr); + ExFreePoolWithTag(ca_attr, 'acvw'); complete: WdfRequestCompleteWithInformation(Request, status, outlen); } @@ -734,7 +737,7 @@ void WvDevicePkeyQuery(WV_PROVIDER *pProvider, WDFREQUEST Request) } free: - ExFreePool(ca_attr); + ExFreePoolWithTag(ca_attr, 'acvw'); complete: WdfRequestCompleteWithInformation(Request, status, outlen); } diff --git a/branches/winverbs/core/winverbs/kernel/wv_pd.c b/branches/winverbs/core/winverbs/kernel/wv_pd.c index 304588da..af9a5509 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_pd.c +++ b/branches/winverbs/core/winverbs/kernel/wv_pd.c @@ -74,7 +74,7 @@ static NTSTATUS WvPdAlloc(WV_DEVICE *pDevice, WV_PROTECTION_DOMAIN **ppPd, ib_api_status_t ib_status; WV_PROTECTION_DOMAIN *pd; - pd = ExAllocatePoolWithTag(PagedPool, sizeof(WV_PROTECTION_DOMAIN), 'dpvw'); + pd = ExAllocatePoolWithTag(NonPagedPool, sizeof(WV_PROTECTION_DOMAIN), 'dpvw'); if (pd == NULL) { return STATUS_NO_MEMORY; } @@ -101,7 +101,7 @@ static NTSTATUS WvPdAlloc(WV_DEVICE *pDevice, WV_PROTECTION_DOMAIN **ppPd, return STATUS_SUCCESS; err: - ExFreePool(pd); + ExFreePoolWithTag(pd, 'dpvw'); return STATUS_UNSUCCESSFUL; } @@ -233,7 +233,7 @@ void WvPdFree(WV_PROTECTION_DOMAIN *pPd) } cl_qmap_remove_item(&pPd->MrMap, &mr->Item); - ExFreePool(mr); + ExFreePoolWithTag(mr, 'rmvw'); } if (pPd->hVerbsPd != NULL) { @@ -241,7 +241,7 @@ void WvPdFree(WV_PROTECTION_DOMAIN *pPd) } WvDevicePut(pPd->pDevice); - ExFreePool(pPd); + ExFreePoolWithTag(pPd, 'dpvw'); } void WvPdRemoveHandler(WV_PROTECTION_DOMAIN *pPd) @@ -342,7 +342,7 @@ void WvMrRegister(WV_PROVIDER *pProvider, WDFREQUEST Request) return; err3: - ExFreePool(mr); + ExFreePoolWithTag(mr, 'rmvw'); err2: WvPdRelease(pd); err1: @@ -389,7 +389,7 @@ void WvMrDeregister(WV_PROVIDER *pProvider, WDFREQUEST Request) goto release; } - ExFreePool(mr); + ExFreePoolWithTag(mr, 'rmvw'); release: WvPdRelease(pd); complete: @@ -501,7 +501,7 @@ void WvMwFree(WV_MEMORY_WINDOW *pMw) } WvPdPut(pMw->pPd); - ExFreePool(pMw); + ExFreePoolWithTag(pMw, 'wmvw'); } static void WvVerbsConvertAv(ib_av_attr_t *pVerbsAv, WV_IO_AV *pAv) @@ -630,5 +630,5 @@ void WvAhFree(WV_ADDRESS_HANDLE *pAh) } WvPdPut(pAh->pPd); - ExFreePool(pAh); + ExFreePoolWithTag(pAh, 'havw'); } diff --git a/branches/winverbs/core/winverbs/kernel/wv_provider.c b/branches/winverbs/core/winverbs/kernel/wv_provider.c index 19053a8f..2998afe7 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_provider.c +++ b/branches/winverbs/core/winverbs/kernel/wv_provider.c @@ -102,7 +102,6 @@ void WvProviderCleanup(WV_PROVIDER *pProvider) } } while ((ep = IndexListRemoveHead(&pProvider->EpIndex)) != NULL) { - RemoveEntryList(&ep->Entry); WvEpFree(ep); } while ((ah = IndexListRemoveHead(&pProvider->AhIndex)) != NULL) { diff --git a/branches/winverbs/core/winverbs/kernel/wv_srq.c b/branches/winverbs/core/winverbs/kernel/wv_srq.c index b0877aba..99f2b492 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_srq.c +++ b/branches/winverbs/core/winverbs/kernel/wv_srq.c @@ -133,7 +133,7 @@ static NTSTATUS WvSrqAlloc(WV_PROTECTION_DOMAIN *pPd, WV_IO_SRQ_ATTRIBUTES *pAtt err2: WdfObjectDelete(srq->Queue); err1: - ExFreePool(srq); + ExFreePoolWithTag(srq, 'rsvw'); return STATUS_UNSUCCESSFUL; } @@ -239,7 +239,7 @@ void WvSrqFree(WV_SHARED_RECEIVE_QUEUE *pSrq) WdfIoQueuePurgeSynchronously(pSrq->Queue); WdfObjectDelete(pSrq->Queue); WvPdPut(pSrq->pPd); - ExFreePool(pSrq); + ExFreePoolWithTag(pSrq, 'rsvw'); } void WvSrqModify(WV_PROVIDER *pProvider, WDFREQUEST Request) diff --git a/branches/winverbs/etc/kernel/work_queue.c b/branches/winverbs/etc/kernel/work_queue.c index 24af0647..f83254a3 100644 --- a/branches/winverbs/etc/kernel/work_queue.c +++ b/branches/winverbs/etc/kernel/work_queue.c @@ -85,7 +85,7 @@ err: while (--i > 0) { IoFreeWorkItem(pWorkQueue->TaskArray[i].pWorkItem); } - ExFreePool(pWorkQueue->TaskArray); + ExFreePoolWithTag(pWorkQueue->TaskArray, 'ktqw'); return STATUS_INSUFFICIENT_RESOURCES; } diff --git a/branches/winverbs/ulp/dapl2/dapl/openib_cma/cm.c b/branches/winverbs/ulp/dapl2/dapl/openib_cma/cm.c index 5631fe78..5c1709ac 100644 --- a/branches/winverbs/ulp/dapl2/dapl/openib_cma/cm.c +++ b/branches/winverbs/ulp/dapl2/dapl/openib_cma/cm.c @@ -644,11 +644,7 @@ dapls_ib_disconnect(IN DAPL_EP * ep_ptr, IN DAT_CLOSE_FLAGS close_flags) return DAT_SUCCESS; /* no graceful half-pipe disconnect option */ - ret = rdma_disconnect(conn->cm_id); - if (ret) - dapl_dbg_log(DAPL_DBG_TYPE_ERR, - " disconnect: ID %p ret 0x%x\n", - ep_ptr->cm_handle, ret); + rdma_disconnect(conn->cm_id); /* * DAT event notification occurs from the callback diff --git a/branches/winverbs/ulp/libibverbs/src/ibv_main.cpp b/branches/winverbs/ulp/libibverbs/src/ibv_main.cpp index 04f4de58..4b011152 100644 --- a/branches/winverbs/ulp/libibverbs/src/ibv_main.cpp +++ b/branches/winverbs/ulp/libibverbs/src/ibv_main.cpp @@ -34,9 +34,18 @@ extern CRITICAL_SECTION lock; BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { UNREFERENCED_PARAMETER(hInstance); - UNREFERENCED_PARAMETER(dwReason); UNREFERENCED_PARAMETER(lpReserved); - InitializeCriticalSection(&lock); + switch (dwReason) { + case DLL_PROCESS_ATTACH: + InitializeCriticalSection(&lock); + break; + case DLL_PROCESS_DETACH: + DeleteCriticalSection(&lock); + break; + default: + break; + } + return TRUE; } diff --git a/branches/winverbs/ulp/librdmacm/src/cma_main.cpp b/branches/winverbs/ulp/librdmacm/src/cma_main.cpp index 44519eb4..3521018b 100644 --- a/branches/winverbs/ulp/librdmacm/src/cma_main.cpp +++ b/branches/winverbs/ulp/librdmacm/src/cma_main.cpp @@ -35,10 +35,18 @@ CRITICAL_SECTION lock; BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { UNREFERENCED_PARAMETER(hInstance); - UNREFERENCED_PARAMETER(dwReason); UNREFERENCED_PARAMETER(lpReserved); - InitializeCriticalSection(&lock); + switch (dwReason) { + case DLL_PROCESS_ATTACH: + InitializeCriticalSection(&lock); + break; + case DLL_PROCESS_DETACH: + DeleteCriticalSection(&lock); + break; + default: + break; + } return TRUE; }