<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18812"></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial>Hello,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial> These patches have the feel of swinging a very larger
hammer at a small problem. It's really only the power path structs and pnp
structs which can not tolerate a page-fault.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial>Given that non-paged pool is a somewhat limited system
resource, we need to be careful about wholesale allocation from non-paged
pool.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial>Initially I would suggest changing only those cases where PNP
structs and power-down path structs are accessed.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial>stan.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=450072416-17092009><FONT color=#0000ff
size=2 face=Arial></FONT></SPAN> </DIV><BR>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> Leonid Keller
[mailto:leonid@mellanox.co.il] <BR><B>Sent:</B> Thursday, September 17, 2009
3:33 AM<BR><B>To:</B> Smith, Stan<BR><B>Cc:</B> ofw_list<BR><B>Subject:</B> RE:
[ofw][patch][ibal] use non-pageable memory to prevent possibleproblems on power
down<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial><SPAN class=356542910-17092009>To be
yet more safe, we can change other usings of PagedPool by
NonPagedPool.</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial><SPAN class=356542910-17092009>What
do you think ?</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial><SPAN class=356542910-17092009>(I
have not included winverbs and winmad drivers, leaving that to
Sean).</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial></FONT> </DIV>
<DIV><FONT color=#0000ff size=2 face=Arial>Index:
V:/svn/winib/trunk/core/complib/kernel/cl_pnp_po.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/core/complib/kernel/cl_pnp_po.c (revision 4835)<BR>+++
V:/svn/winib/trunk/core/complib/kernel/cl_pnp_po.c (revision 4836)<BR>@@
-1185,7 +1185,7 @@<BR> alloc_size += (sizeof(PDEVICE_OBJECT) *
p_old_rel->Count);<BR> <BR> /* Allocate the new relations
structure. */<BR>- p_rel = ExAllocatePoolWithTag( PagedPool, alloc_size,
'ralc' );<BR>+ p_rel = ExAllocatePoolWithTag( NonPagedPool, alloc_size,
'ralc' );<BR> p_irp->IoStatus.Information =
(ULONG_PTR)p_rel;<BR> if( !p_rel )<BR> {<BR>Index:
V:/svn/winib/trunk/core/complib/kernel/cl_memory_osd.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/core/complib/kernel/cl_memory_osd.c (revision
4835)<BR>+++
V:/svn/winib/trunk/core/complib/kernel/cl_memory_osd.c (revision
4836)<BR>@@ -41,7 +41,7 @@<BR> if( pageable
)<BR> {<BR> CL_ASSERT( KeGetCurrentIrql() <
DISPATCH_LEVEL );<BR>- return( ExAllocatePoolWithTag( PagedPool,
size, 'virp' ) );<BR>+ return( ExAllocatePoolWithTag( NonPagedPool,
size, 'virp' )
);<BR> }<BR> else<BR> {<BR>Index:
V:/svn/winib/trunk/core/bus/kernel/bus_port_mgr.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/core/bus/kernel/bus_port_mgr.c (revision 4835)<BR>+++
V:/svn/winib/trunk/core/bus/kernel/bus_port_mgr.c (revision 4836)<BR>@@
-1599,7 +1599,7 @@<BR> dev_id_size =
p_ext->pdo.p_pdo_device_info->device_id_size;<BR> <BR> /*
Device ID is "IBA\SID_<sid> where <sid> is the IO device Service ID.
*/<BR>- p_string = ExAllocatePoolWithTag( PagedPool, dev_id_size, 'vedq'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'vedq'
);<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR,<BR>@@
-1635,7 +1635,7 @@<BR> <BR> dev_id_size =
p_ext->pdo.p_pdo_device_info->hardware_id_size;<BR> <BR>- p_string
= ExAllocatePoolWithTag( PagedPool, dev_id_size, 'ihqp' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'ihqp' );<BR> if(
!p_string )<BR> {<BR> BUS_TRACE_EXIT(
BUS_DBG_ERROR,<BR>@@ -1670,7 +1670,7 @@<BR> <BR> dev_id_size =
p_ext->pdo.p_pdo_device_info->compatible_id_size;<BR> <BR>- p_string
= ExAllocatePoolWithTag( PagedPool, dev_id_size, 'ihqp' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'ihqp' );<BR> if(
!p_string )<BR> {<BR> BUS_TRACE_EXIT(
BUS_DBG_ERROR,<BR>@@ -1710,7 +1710,7
@@<BR> }<BR> <BR> /* The instance ID is the port
GUID. */<BR>- p_string = ExAllocatePoolWithTag( PagedPool, sizeof(WCHAR) *
21, 'iuqp' );<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool,
sizeof(WCHAR) * 21, 'iuqp' );<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR,<BR>@@
-1754,7 +1754,7 @@<BR> }<BR> <BR> <BR>- p_string =
ExAllocatePoolWithTag( PagedPool,
p_ext->pdo.p_pdo_device_info->description_size, 'edqp'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool,
p_ext->pdo.p_pdo_device_info->description_size, 'edqp'
);<BR> <BR> if( !p_string )<BR> {<BR>@@ -1822,7
+1822,7 @@<BR> return
STATUS_INSUFFICIENT_RESOURCES;<BR> }<BR> <BR>- p_string =
ExAllocatePoolWithTag( PagedPool, size, 'olqp' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, size, 'olqp' );<BR> if(
!p_string )<BR> {<BR> BUS_TRACE_EXIT(
BUS_DBG_ERROR,<BR>@@ -1875,7 +1875,7 @@<BR> <BR> *p_action =
IrpComplete;<BR> <BR>- p_bus_info = ExAllocatePoolWithTag( PagedPool,
sizeof(PNP_BUS_INFORMATION), 'ibqp' );<BR>+ p_bus_info =
ExAllocatePoolWithTag( NonPagedPool, sizeof(PNP_BUS_INFORMATION), 'ibqp'
);<BR> if( !p_bus_info
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR,<BR>Index:
V:/svn/winib/trunk/core/bus/kernel/bus_iou_mgr.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/core/bus/kernel/bus_iou_mgr.c (revision 4835)<BR>+++
V:/svn/winib/trunk/core/bus/kernel/bus_iou_mgr.c (revision 4836)<BR>@@
-1164,7 +1164,7 @@<BR> }<BR> <BR> /* Device ID is
"IBA\SID_<sid> where <sid> is the IPoIB Service ID.
*/<BR>- p_string = ExAllocatePoolWithTag( PagedPool, IOU_DEV_ID_SIZE,
'didq' );<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool,
IOU_DEV_ID_SIZE, 'didq' );<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR, <BR>@@
-1209,7 +1209,7 @@<BR> return
STATUS_NO_SUCH_DEVICE;<BR> }<BR> <BR>- p_string =
ExAllocatePoolWithTag( PagedPool, IOU_HW_ID_SIZE, 'dihq' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, IOU_HW_ID_SIZE, 'dihq'
);<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR, <BR>@@
-1263,7 +1263,7 @@<BR> <BR> UNUSED_PARAM( p_dev_obj
);<BR> <BR>- p_string = ExAllocatePoolWithTag( PagedPool,
sizeof(IOU_COMPAT_ID), 'dicq' );<BR>+ p_string = ExAllocatePoolWithTag(
NonPagedPool, sizeof(IOU_COMPAT_ID), 'dicq' );<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR, <BR>@@
-1299,7 +1299,7 @@<BR> }<BR> <BR> /* The instance ID
is the port GUID. */<BR>- p_string = ExAllocatePoolWithTag( PagedPool,
sizeof(WCHAR) * 33, 'diuq' );<BR>+ p_string = ExAllocatePoolWithTag(
NonPagedPool, sizeof(WCHAR) * 33, 'diuq' );<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR, <BR>@@
-1345,7 +1345,7 @@<BR> }<BR> <BR> /* The instance ID
is the port GUID. */<BR>- p_string = ExAllocatePoolWithTag(
PagedPool,<BR>+ p_string = ExAllocatePoolWithTag(
NonPagedPool,<BR>
sizeof(WCHAR) *
sizeof(p_ext->desc),<BR>
'sedq' );<BR> if( !p_string )<BR>@@ -1391,7 +1391,7
@@<BR> return
STATUS_NO_SUCH_DEVICE;<BR> }<BR> <BR>- p_string =
ExAllocatePoolWithTag( PagedPool, IOU_LOCATION_SIZE, 'colq'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, IOU_LOCATION_SIZE,
'colq' );<BR> if( !p_string
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR, <BR>@@
-1430,7 +1430,7 @@<BR> <BR> *p_action =
IrpComplete;<BR> <BR>- p_bus_info = ExAllocatePoolWithTag( PagedPool,
sizeof(PNP_BUS_INFORMATION), 'subq' );<BR>+ p_bus_info =
ExAllocatePoolWithTag( NonPagedPool, sizeof(PNP_BUS_INFORMATION), 'subq'
);<BR> if( !p_bus_info
)<BR> {<BR> BUS_TRACE_EXIT( BUS_DBG_ERROR,<BR>Index:
V:/svn/winib/trunk/core/iou/kernel/iou_ioc_mgr.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/core/iou/kernel/iou_ioc_mgr.c (revision 4835)<BR>+++
V:/svn/winib/trunk/core/iou/kernel/iou_ioc_mgr.c (revision 4836)<BR>@@
-952,7 +952,7 @@<BR> {<BR> <BR> dev_id_size =
(p_ext->pdo.p_pdo_device_info)->device_id_size;<BR>- p_string =
ExAllocatePoolWithTag( PagedPool, dev_id_size, 'didq'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size,
'didq' );<BR> <BR> if( !p_string
)<BR> {<BR>@@ -968,7 +968,7 @@<BR> }
<BR> else <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool, IOC_DEV_ID_SIZE, 'didq' );<BR>+ p_string
= ExAllocatePoolWithTag( NonPagedPool, IOC_DEV_ID_SIZE, 'didq'
);<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT( TRACE_LEVEL_ERROR,
IOU_DBG_ERROR,<BR>@@ -1027,7 +1027,7
@@<BR> {<BR> hw_id_size =
p_ext->pdo.p_pdo_device_info->hardware_id_size;<BR> <BR>- p_string
= ExAllocatePoolWithTag( PagedPool, hw_id_size, 'ihqi'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, hw_id_size,
'ihqi' );<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT(
TRACE_LEVEL_ERROR, IOU_DBG_ERROR,<BR>@@ -1042,7 +1042,7 @@<BR> }
<BR> else <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool, IOC_HW_ID_SIZE, 'ihqi' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, IOC_HW_ID_SIZE, 'ihqi'
);<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT( TRACE_LEVEL_ERROR,
IOU_DBG_ERROR,<BR>@@ -1143,7 +1143,7
@@<BR> <BR> compat_id_size =
p_ext->pdo.p_pdo_device_info->compatible_id_size;<BR> <BR>- p_string
= ExAllocatePoolWithTag( PagedPool, compat_id_size, 'icqi'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool,
compat_id_size, 'icqi' );<BR> <BR> if( !p_string
)<BR> {<BR>@@ -1159,7 +1159,7 @@<BR> }
<BR> else <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool, IOC_COMPAT_ID_SIZE, 'icqi'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, IOC_COMPAT_ID_SIZE,
'icqi' );<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT( TRACE_LEVEL_ERROR,
IOU_DBG_ERROR,<BR>@@ -1229,7 +1229,7 @@<BR> if (
p_ext->pdo.p_pdo_device_info )
<BR> {<BR> <BR>- p_string = ExAllocatePoolWithTag(
PagedPool, sizeof(WCHAR) * 41, 'iuqi' );<BR>+ p_string =
ExAllocatePoolWithTag( NonPagedPool, sizeof(WCHAR) * 41, 'iuqi'
);<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT(
TRACE_LEVEL_ERROR, IOU_DBG_ERROR,<BR>@@ -1252,7 +1252,7 @@<BR> }
<BR> else <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool, sizeof(WCHAR) * 33, 'iuqi'
);<BR>+ p_string = ExAllocatePoolWithTag( NonPagedPool, sizeof(WCHAR) * 33,
'iuqi' );<BR> if( !p_string
)<BR> {<BR> IOU_PRINT_EXIT( TRACE_LEVEL_ERROR,
IOU_DBG_ERROR,<BR>@@ -1302,7 +1302,7 @@<BR> <BR> if (
p_ext->pdo.p_pdo_device_info ) <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool,
p_ext->pdo.p_pdo_device_info->description_size, <BR>+ p_string
= ExAllocatePoolWithTag( NonPagedPool,
p_ext->pdo.p_pdo_device_info->description_size,
<BR> 'edqi' );<BR> if(
!p_string )<BR> {<BR>@@ -1320,7 +1320,7 @@<BR> }
<BR> else <BR> {<BR>- p_string =
ExAllocatePoolWithTag( PagedPool,<BR>+ p_string = ExAllocatePoolWithTag(
NonPagedPool,<BR>
sizeof(WCHAR) *
sizeof(p_ext->info.profile.id_string),<BR>
'edqi');<BR> if( !p_string )<BR>@@ -1387,7 +1387,7
@@<BR> return
STATUS_NO_SUCH_DEVICE;<BR> }<BR> <BR>- p_string =
ExAllocatePoolWithTag( PagedPool, <BR>+ p_string = ExAllocatePoolWithTag(
NonPagedPool,
<BR> max(
IOC_LOCATION_SIZE, sizeof( WCHAR )
*<BR>
( sizeof( p_ext->info.profile.id_string ) + 1
)),<BR>
'olqi');<BR>@@ -1447,7 +1447,7 @@<BR> <BR> *p_action =
IrpComplete;<BR> <BR>- p_iou_info = ExAllocatePoolWithTag( PagedPool,
sizeof(PNP_BUS_INFORMATION), 'ibqi' );<BR>+ p_iou_info =
ExAllocatePoolWithTag( NonPagedPool, sizeof(PNP_BUS_INFORMATION), 'ibqi'
);<BR> if( !p_iou_info
)<BR> {<BR> IOU_PRINT_EXIT( TRACE_LEVEL_ERROR,
IOU_DBG_ERROR,<BR>Index:
V:/svn/winib/trunk/etc/kernel/index_list.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/etc/kernel/index_list.c (revision 4835)<BR>+++
V:/svn/winib/trunk/etc/kernel/index_list.c (revision 4836)<BR>@@ -37,7
+37,7 @@<BR> SIZE_T size, i;<BR> <BR> size
= pIndexList->Size + (PAGE_SIZE / sizeof(INDEX_ENTRY));<BR>- array =
ExAllocatePoolWithTag(PagedPool, size * sizeof(INDEX_ENTRY),
'xdni');<BR>+ array = ExAllocatePoolWithTag(NonPagedPool, size *
sizeof(INDEX_ENTRY), 'xdni');<BR> if (array == NULL)
{<BR> return FALSE;<BR> }<BR>Index:
V:/svn/winib/trunk/hw/mlx4/kernel/hca/drv.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/hw/mlx4/kernel/hca/drv.c (revision 4835)<BR>+++
V:/svn/winib/trunk/hw/mlx4/kernel/hca/drv.c (revision 4836)<BR>@@ -85,7
+85,7 @@<BR> HCA_ENTER( HCA_DBG_PNP );<BR> <BR> pIfc
=<BR>- (ci_interface_t*)ExAllocatePoolWithTag( PagedPool,
sizeof(ci_interface_t), MT_TAG_KERNEL
);<BR>+ (ci_interface_t*)ExAllocatePoolWithTag( NonPagedPool,
sizeof(ci_interface_t), MT_TAG_KERNEL );<BR> if( !pIfc
)<BR> {<BR> HCA_PRINT(
TRACE_LEVEL_ERROR,HCA_DBG_PNP, <BR>@@ -877,7 +877,7
@@<BR> <BR> HCA_ENTER( HCA_DBG_PNP );<BR> <BR>- pIfc =
(ci_interface_t*)ExAllocatePoolWithTag( PagedPool,<BR>+ pIfc =
(ci_interface_t*)ExAllocatePoolWithTag(
NonPagedPool,<BR> sizeof(ci_interface_t), MT_TAG_KERNEL
);<BR> if( !pIfc )<BR> {<BR>Index:
V:/svn/winib/trunk/hw/mthca/kernel/hca_pnp.c<BR>===================================================================<BR>---
V:/svn/winib/trunk/hw/mthca/kernel/hca_pnp.c (revision 4835)<BR>+++
V:/svn/winib/trunk/hw/mthca/kernel/hca_pnp.c (revision 4836)<BR>@@ -227,7
+227,7 @@<BR> <BR> HCA_ENTER( HCA_DBG_PNP
);<BR> <BR>- pIfc = (ci_interface_t*)ExAllocatePoolWithTag(
PagedPool,<BR>+ pIfc = (ci_interface_t*)ExAllocatePoolWithTag(
NonPagedPool,<BR>
sizeof(ci_interface_t),<BR>
'pnpa' );<BR> if( !pIfc )<BR></DIV></FONT><BR>
<BLOCKQUOTE
style="BORDER-LEFT: #0000ff 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px"
dir=ltr>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> Smith, Stan
[mailto:stan.smith@intel.com] <BR><B>Sent:</B> Wednesday, September 16, 2009
7:01 PM<BR><B>To:</B> Leonid Keller<BR><B>Cc:</B> ofw_list<BR><B>Subject:</B>
RE: [ofw][patch][ibal] use non-pageable memory to prevent possibleproblems on
power down<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial>Hello,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial> This patch appears to have cured the sometimes BSOD
on power-down. After 53 uninstalls I have yet to witness a
BSOD!!</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial>There was a similar patch to winverbs (paged vs. non-paged
PNP struct allocation) which also cured a power-down BSOD, so it's not too
surprising this patch has the same effect.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial>I will be including it in the WinOF 2.1 release (upcoming
RC5).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=515565515-16092009><FONT color=#0000ff
size=2 face=Arial>stan.</FONT></SPAN></DIV><BR>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Leonid
Keller<BR><B>Sent:</B> Tuesday, September 15, 2009 1:15 AM<BR><B>To:</B>
ofw_list<BR><B>Subject:</B> [ofw][patch][ibal] use non-pageable memory to
prevent possible problems on power down<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT size=2 face=Arial><SPAN class=362050208-15092009>IBAL uses pageable
memory to create PnP context.</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial><SPAN class=362050208-15092009>It can create
possible problems in power down flows at the time of system
contention.</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial><SPAN
class=362050208-15092009></SPAN></FONT> </DIV>
<DIV><FONT size=2 face=Arial><SPAN class=362050208-15092009>We saw some
similar case at a customer.</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial><SPAN class=362050208-15092009>There is no strong
evidence that that is what influenced, but with this patch IBAL will be more
safe and at no cost.</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial><SPAN
class=362050208-15092009></SPAN></FONT> </DIV>
<DIV><FONT size=2 face=Arial><SPAN class=362050208-15092009>Found by Hobin Lee
(Xsigo).</SPAN></FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>Index:
kernel/al_pnp.c<BR>===================================================================<BR>---
kernel/al_pnp.c (revision 2421)<BR>+++ kernel/al_pnp.c (working
copy)<BR>@@ -587,7 +587,7 @@<BR> CL_ASSERT( p_reg
);<BR> <BR> /* No context exists for this port. Create
one. */<BR>- p_context = (al_pnp_context_t*)cl_pzalloc(
sizeof(al_pnp_context_t) );<BR>+ p_context =
(al_pnp_context_t*)cl_zalloc( sizeof(al_pnp_context_t) );<BR> if(
!p_context )<BR> {<BR> AL_PRINT(
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR></FONT></DIV></BLOCKQUOTE></BODY></HTML>