[ofw] RE: patches for depreciated ExAllocatePool() calls

Tzachi Dar tzachid at mellanox.co.il
Mon Dec 17 11:00:35 PST 2007


Hi,

There is already a windows 2008 RC1, so maybe there is a new compiler...

But most changes is that this problem is in the compiler, but we will
have to fix the IBAL code.
This was the situation with build 6000 of the compiler.

So, if the problem is related to calling using a pointer that was
defined as a __ptr64 than we will have to do the workaround for it
ourselves.

Thanks
Tzachi 

> -----Original Message-----
> From: ofw-bounces at lists.openfabrics.org 
> [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Smith, Stan
> Sent: Monday, December 17, 2007 7:03 PM
> To: Tzachi Dar
> Cc: ofw at lists.openfabrics.org
> Subject: [ofw] RE: patches for depreciated ExAllocatePool() calls
> 
> Tzachi Dar wrote:
> > Seems fine by me.
> > By the way which compiler are you using?
> 
> Thanks for the review.
> 
> WSDK for Windows Server 2008 RC0 - WinDDK 6001.17051 Not 
> ready for prime-time yet....cl encounters internal compiler error on
> x86 build of ibal   :-(
> Otherwise OK compile for x64 & ia64 sans squawking about using
> USE_CRTDLL=1 in SOURCES instead of USE_MSVCRT=1.
> 
> Stan.
> 
> > 
> > Thanks
> > Tzachi
> > 
> >> -----Original Message-----
> >> From: Smith, Stan [mailto:stan.smith at intel.com]
> >> Sent: Friday, December 14, 2007 6:55 PM
> >> To: Tzachi Dar
> >> Cc: ofw at lists.openfabrics.org
> >> Subject: patches for depreciated ExAllocatePool() calls
> >> 
> >> Hello,
> >>   Would you kindly take a look at the proposed patches 
> which replace
> >> ExAllocatePool() calls with ExAllocatePoolWithTag() calls.
> >> The Windows Server 2008 compiler complains loudly about the 
> >> depreciated call ExAllocatePool(). Tags are loosely based on the 
> >> function name.
> >> Attempting to reduce compilation noise in order to clearly see the 
> >> 'real' issues.
> >> 
> >> Formatting in the patch file is not expanding tabs correctly, 
> >> although when the file is patched and viewed from Vstudio the 
> >> formatting is correct.
> >> 
> >> Patched files have been tested on Win2k3 x86, x64 & ia64.
> >> IPoIB & DAPL tests have run successfully.
> >> 
> >> If you agree these patches are correct, I will push the modified 
> >> files to svn.
> >> 
> >> Thanks,
> >> 
> >> Stan.
> >> 
> >> Signed off by Stan.Smith at intel.com
> >> 
> >> diff U3 core/bus/kernel/bus_iou_mgr.c core/bus/kernel/bus_iou_mgr.c
> >> --- core/bus/kernel/bus_iou_mgr.c	Fri Oct 12 13:10:15 2007
> >> +++ core/bus/kernel/bus_iou_mgr.c	Thu Dec 13 11:49:57 2007 @@
> -971,7
> >>  	+971,7 @@ }
> >> 
> >>  	/* Device ID is "IBA\SID_<sid> where <sid> is the IPoIB 
> Service ID. 
> >> */
> >> -	p_string = ExAllocatePool( PagedPool, IOU_DEV_ID_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOU_DEV_ID_SIZE,
> >>  	'didq' ); if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1016,7 +1016,7 @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, IOU_HW_ID_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOU_HW_ID_SIZE,
> >>  	'dihq' ); if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1070,7 +1070,7 @@
> >> 
> >>  	UNUSED_PARAM( p_dev_obj );
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(IOU_COMPAT_ID) );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(IOU_COMPAT_ID), 'dicq' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1106,7 +1106,7 @@
> >>  	}
> >> 
> >>  	/* The instance ID is the port GUID. */
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(WCHAR) * 33 );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, sizeof(WCHAR) * 33,
> >>  	'diuq' ); if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1152,8 +1152,9 @@
> >>  	}
> >> 
> >>  	/* The instance ID is the port GUID. */
> >> -	p_string =
> >> -		ExAllocatePool( PagedPool, sizeof(WCHAR) *
> >> sizeof(p_ext->desc) );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> +
> >> sizeof(WCHAR) * sizeof(p_ext->desc),
> >> +
> >> 'sedq' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1197,7 +1198,7 @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, IOU_LOCATION_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOU_LOCATION_SIZE,
> >>  	'colq' ); if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1236,7 +1237,7 @@
> >> 
> >>  	*p_action = IrpComplete;
> >> 
> >> -	p_bus_info = ExAllocatePool( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION) );
> >> +	p_bus_info = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION), 'subq' );
> >>  	if( !p_bus_info )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> diff U3 core/bus/kernel/bus_port_mgr.c 
> core/bus/kernel/bus_port_mgr.c
> >> --- core/bus/kernel/bus_port_mgr.c	Fri Oct 12 13:10:15 2007
> >> +++ core/bus/kernel/bus_port_mgr.c	Thu Dec 13 11:27:15 2007 @@
> >>  	-966,7 +966,7 @@ }
> >> 
> >>  	/* Device ID is "IBA\SID_<sid> where <sid> is the IPoIB 
> Service ID. 
> >> */
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(IPOIB_DEVICE_ID) );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(IPOIB_DEVICE_ID), 'vedq' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1000,7 +1000,7 @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(IPOIB_HARDWARE_ID)
> );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(IPOIB_HARDWARE_ID), 'ihqp' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1027,7 +1027,7 @@
> >> 
> >>  	UNUSED_PARAM( p_dev_obj );
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(IPOIB_COMPAT_ID) );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(IPOIB_COMPAT_ID), 'icqp' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1063,7 +1063,7 @@
> >>  	}
> >> 
> >>  	/* The instance ID is the port GUID. */
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(WCHAR) * 17 );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, sizeof(WCHAR) * 17,
> >>  	'iuqp' ); if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1108,7 +1108,7 @@
> >> 
> >> 
> >>  	/* The instance ID is the port GUID. */
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(IPOIB_DESCRIPTION)
> );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(IPOIB_DESCRIPTION), 'edqp' );
> >>  	if( !p_string )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1171,7 +1171,7 @@
> >>  		return STATUS_INSUFFICIENT_RESOURCES;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, size );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, size, 'olqp' );
> if(
> >>  	!p_string ) {
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> @@ -1224,7 +1224,7 @@
> >> 
> >>  	*p_action = IrpComplete;
> >> 
> >> -	p_bus_info = ExAllocatePool( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION) );
> >> +	p_bus_info = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION), 'ibqp' );
> >>  	if( !p_bus_info )
> >>  	{
> >>  		BUS_TRACE_EXIT( BUS_DBG_ERROR,
> >> diff U3 core/complib/kernel/cl_memory_osd.c
> >> core/complib/kernel/cl_memory_osd.c
> >> --- core/complib/kernel/cl_memory_osd.c	Fri Oct 12 13:10:13 2007
> >> +++ core/complib/kernel/cl_memory_osd.c	Thu Dec 13 11:29:35 2007
> @@
> >>  	-41,12 +41,12 @@ if( pageable )
> >>  	{
> >>  		CL_ASSERT( KeGetCurrentIrql() < DISPATCH_LEVEL );
> >> -		return( ExAllocatePool( PagedPool, size ) );
> >> +		return( ExAllocatePoolWithTag( PagedPool, size, 'virp' )
> );
> >>  	}
> >>  	else
> >>  	{
> >>  		CL_ASSERT( KeGetCurrentIrql() <= DISPATCH_LEVEL );
> >> -		return( ExAllocatePool( NonPagedPool, size ) );
> >> +		return( ExAllocatePoolWithTag( NonPagedPool, size,
> 'virp' ) );
> >>  	}
> >>  }
> >> 
> >> @@ -56,5 +56,5 @@
> >>  	IN	void* const	p_memory )
> >>  {
> >>  	CL_ASSERT( KeGetCurrentIrql() <= DISPATCH_LEVEL ); -
> ExFreePool(
> >> p_memory ); +	ExFreePoolWithTag( p_memory, 'virp' );
> >>  }
> >> diff U3 core/complib/kernel/cl_pnp_po.c 
> >> core/complib/kernel/cl_pnp_po.c
> >> --- core/complib/kernel/cl_pnp_po.c	Fri Oct 12 13:10:13 2007
> >> +++ core/complib/kernel/cl_pnp_po.c	Thu Dec 13 
> 11:30:32 2007 @@
> >>  		-1207,7 +1207,7 @@ alloc_size += (sizeof(PDEVICE_OBJECT)
> *
> >> p_old_rel->Count);
> >> 
> >>  	/* Allocate the new relations structure. */
> >> -	p_rel = ExAllocatePool( PagedPool, alloc_size );
> >> +	p_rel = ExAllocatePoolWithTag( PagedPool, alloc_size, 'ralc' );
> >>  	p_irp->IoStatus.Information = (ULONG_PTR)p_rel;
> >>  	if( !p_rel )
> >>  	{
> >> diff U3 core/iou/kernel/iou_ioc_mgr.c core/iou/kernel/iou_ioc_mgr.c
> >> --- core/iou/kernel/iou_ioc_mgr.c	Fri Oct 12 13:10:29 2007
> >> +++ core/iou/kernel/iou_ioc_mgr.c	Thu Dec 13 11:36:46 2007 @@
> -823,7
> >>  		+823,7 @@ return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, IOC_DEV_ID_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOC_DEV_ID_SIZE,
> >>  	'didq' ); if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -875,7 +875,7 
> >> @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, IOC_HW_ID_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOC_HW_ID_SIZE,
> >>  	'ihqi' ); if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -967,7 +967,7 
> >> @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool, IOC_COMPAT_ID_SIZE );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, IOC_COMPAT_ID_SIZE,
> >>  	'icqi' ); if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -1032,7 
> >> +1032,7 @@
> >>  	}
> >> 
> >>  	/* The instance ID is the port GUID. */
> >> -	p_string = ExAllocatePool( PagedPool, sizeof(WCHAR) * 33 );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool, sizeof(WCHAR) * 33,
> >>  	'iuqi' ); if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -1078,8 
> >> +1078,9 @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool(
> >> -		PagedPool, sizeof(WCHAR) *
> >> sizeof(p_ext->info.profile.id_string) );
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> +
> >> sizeof(WCHAR) * sizeof(p_ext->info.profile.id_string), + 'edqi');
> >>  	if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -1142,9 
> >> +1143,9 @@
> >>  		return STATUS_NO_SUCH_DEVICE;
> >>  	}
> >> 
> >> -	p_string = ExAllocatePool( PagedPool,
> >> -		max( IOC_LOCATION_SIZE,
> >> -		sizeof( WCHAR ) * ( sizeof(
> >> p_ext->info.profile.id_string ) + 1 )));
> >> +	p_string = ExAllocatePoolWithTag( PagedPool,
> >> +		max( IOC_LOCATION_SIZE, sizeof( WCHAR ) * ( sizeof(
> >> p_ext->info.profile.id_string ) + 1 )),
> >> +		'olqi');
> >>  	if( !p_string )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, @@ -1201,7 
> >> +1202,7 @@
> >> 
> >>  	*p_action = IrpComplete;
> >> 
> >> -	p_iou_info = ExAllocatePool( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION) );
> >> +	p_iou_info = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(PNP_BUS_INFORMATION), 'ibqi' );
> >>  	if( !p_iou_info )
> >>  	{
> >>  		IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, 
> IOU_DBG_ERROR, diff U3 
> >> hw/mt23108/kernel/hca_driver.c hw/mt23108/kernel/hca_driver.c
> >> --- hw/mt23108/kernel/hca_driver.c	Fri Oct 12 13:11:31 2007
> >> +++ hw/mt23108/kernel/hca_driver.c	Thu Dec 13 11:38:44 2007 @@
> >> -664,7 +664,7 @@
> >> 
> >>  	HCA_ENTER( HCA_DBG_PNP );
> >> 
> >> -	p_ifc = ExAllocatePool( PagedPool, sizeof(ci_interface_t) );
> >> +	p_ifc = ExAllocatePoolWithTag( PagedPool,
> >> sizeof(ci_interface_t), 'fiha' );
> >>  	if( !p_ifc )
> >>  	{
> >>  		HCA_TRACE_EXIT( HCA_DBG_ERROR,
> >> diff U3 hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_mem.c
> >> hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_mem.c
> >> --- hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_mem.c
> >> Fri Oct 12
> >> 13:11:10 2007
> >> +++ hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_mem.c
> >> Thu Dec 13
> >> 11:44:59 2007
> >> @@ -912,7 +912,7 @@
> >>  	if (flags)
> >>  		return
> >> (MT_virt_addr_t)ExAllocatePoolWithTag(NonPagedPool,size,flags); 
> >> else -		return
> >> (MT_virt_addr_t)ExAllocatePool(NonPagedPool,size);
> >> +		return
> >> (MT_virt_addr_t)ExAllocatePoolWithTag(NonPagedPool,size,'amOM');  }
> >> 
> >> 
> >> /*************************************************************
> >> **********
> >> *******
> >> diff U3 hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.c
> >> hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.c
> >> --- hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.c	Fri Oct
> 12
> >> 13:11:07 2007 +++
> >> hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.c	Thu Dec 13
> >>  10:36:21 2007 @@ -49,7 +49,7 @@ {
> >>  	g_pDbgData->m_nExAllocCount++;
> >>      MdKdPrint( DBGLVL_HIGH,("MdExAllocatePool() nExAllocCount = 
> >> %d\n", g_pDbgData->m_nExAllocCount ));
> >> -	return ExAllocatePool(  PoolType, NumberOfBytes );
> >> +	return ExAllocatePoolWithTag(  PoolType, NumberOfBytes, 'xEdM'
> );
> >> 
> >>  }
> >> 
> >> @@ -63,7 +63,7 @@
> >>  {
> >>  	g_pDbgData->m_nExAllocCount--;
> >>      MdKdPrint( DBGLVL_HIGH,("MdExFreePool() nExAllocCount 
> = %d\n", 
> >> g_pDbgData->m_nExAllocCount ));
> >> -	ExFreePool(  p );
> >> +	ExFreePoolWithTag(  p, 'xEdM' );
> >>  }
> >> 
> >> 
> >> diff U3 hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.h
> >> hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.h
> >> --- hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.h	Fri Oct
> 12
> >> 13:11:07 2007 +++
> >> hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/MdDbg.h	Thu Dec 13
> >>  11:47:33 2007 @@ -225,8 +225,8 @@ #define MdStringForPnpMnFunc(  
> >> mnfunc ) #define MdStringForIrpMjFunc(  mjfunc )
> >> 
> >> -#define MdExAllocatePool( typ, siz )  ExAllocatePool( typ, siz )
> >> -#define MdExFreePool( p )   ExFreePool( p )
> >> +#define MdExAllocatePool( typ, siz )  ExAllocatePoolWithTag(
> >> typ, siz,
> >> 'xEdM' )
> >> +#define MdExFreePool( p )   ExFreePoolWithTag( p, 'xEdM' )
> >> 
> >> 
> >>  #endif /* DBG */
> >> diff U3 hw/mthca/kernel/hca_pnp.c hw/mthca/kernel/hca_pnp.c
> >> --- hw/mthca/kernel/hca_pnp.c	Fri Oct 12 13:10:55 2007
> >> +++ hw/mthca/kernel/hca_pnp.c	Thu Dec 13 11:40:53 2007 @@
> -431,7
> >>  	+431,7 @@ HCA_ENTER( HCA_DBG_PNP );
> >> 
> >>  	pIfc =
> >> -		(ci_interface_t*)ExAllocatePool( PagedPool,
> >> sizeof(ci_interface_t) );
> >> +		(ci_interface_t*)ExAllocatePoolWithTag( PagedPool,
> >> sizeof(ci_interface_t), 'pnpa' );
> >>  	if( !pIfc )
> >>  	{
> >>  		HCA_PRINT( TRACE_LEVEL_ERROR,HCA_DBG_PNP, @@
> >> -564,8 +564,8 @@
> >>  	if (!p_ext->al_sym_name.Buffer) {
> >>  		p_ext->al_sym_name.Length =
> >> pNotify->SymbolicLinkName->Length;
> >>  		p_ext->al_sym_name.MaximumLength =
> >> pNotify->SymbolicLinkName->MaximumLength;
> >> -		p_ext->al_sym_name.Buffer = ExAllocatePool(
> >> NonPagedPool,
> >> -			p_ext->al_sym_name.MaximumLength *
> >> sizeof(wchar_t) );
> >> +		p_ext->al_sym_name.Buffer = ExAllocatePoolWithTag(
> >> NonPagedPool,
> >> +			p_ext->al_sym_name.MaximumLength *
> >> sizeof(wchar_t), 'cfin' );
> >>  		if (!p_ext->al_sym_name.Buffer)
> >>  		{
> >>  			HCA_PRINT( TRACE_LEVEL_ERROR
> >> ,HCA_DBG_PNP ,("allocation of sym IBAL name failed.\n"));
> 
> _______________________________________________
> ofw mailing list
> ofw at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
> 



More information about the ofw mailing list