[ofw] patch: fix the assumption that __cep_mad_send_cb is always being called at dispatch level
Tzachi Dar
tzachid at mellanox.co.il
Mon Mar 8 05:03:31 PST 2010
OK, than the new patch now looks like:
Index: al_smi.c
===================================================================
--- al_smi.c (revision 5646)
+++ al_smi.c (working copy)
@@ -925,6 +925,7 @@
al_mad_wr_t* p_mad_wr;
ib_api_status_t status;
+ KIRQL irql;
AL_ENTER( AL_DBG_SMI );
@@ -970,8 +971,10 @@
{
cl_spinlock_release( &p_spl_qp_svc->obj.lock );
p_mad_wr = PARENT_STRUCT( p_list_item, al_mad_wr_t, list_item );
+ irql = KeRaiseIrqlToDpcLevel();
__complete_send_mad( p_spl_qp_svc->h_mad_disp, p_mad_wr,
IB_WCS_WR_FLUSHED_ERR );
+ KeLowerIrql(irql);
cl_spinlock_acquire( &p_spl_qp_svc->obj.lock );
}
> -----Original Message-----
> From: Fab Tillier [mailto:ftillier at microsoft.com]
> Sent: Friday, March 05, 2010 6:26 AM
> To: Tzachi Dar; ofw at lists.openfabrics.org
> Subject: RE: [ofw] patch: fix the assumption that
> __cep_mad_send_cb is always being called at dispatch level
>
> Tzachi Dar wrote on Thu, 4 Mar 2010 at 11:06:15
>
> > From: ofw-bounces at lists.openfabrics.org
> > [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
> > Sent: Thursday, March 04, 2010 11:06 AM
> > To: ofw at lists.openfabrics.org
> > Subject: [ofw] patch: fix the assumption that __cep_mad_send_cb is
> > always being called at dispatch level
> >
> > While running some nd tests I have received the assert
> >
> > CL_ASSERT( KeGetCurrentIrql() == DISPATCH_LEVEL ); al_cm_cep.c line
> > 2218
> >
> > code stack is bellow.
> > Since the assumption is not true, but is also assumed in
> the functions
> > that are called from it I raise the dispatch level to
> DISPATCH_LEVEL
> > in this function.
>
> Note that this may not be a problem in just the CEP manager.
> MAD completion callbacks are expected to be at
> DISPATCH_LEVEL, so raising IRQL should happen earlier than here.
>
> > 0: kd> k Child-SP RetAddr Call Site
> fffff880`03af71d0
> > fffff880`04102e20 nt!RtlAssert+0xe8 fffff880`03af76f0
> > fffff880`040bf834 ibbus!__cep_mad_send_cb+0x120
> > [q:\projinf3\trunk\core\al\kernel\al_cm_cep.c @ 2216]
> > fffff880`03af7780 fffff880`040bf0cf ibbus!__notify_send_comp+0x2c4
> > [q:\projinf3\trunk\core\al\al_mad.c @ 2009] fffff880`03af77c0
> > fffff880`040b8ec0 ibbus!__mad_svc_send_done+0x5bf
> > [q:\projinf3\trunk\core\al\al_mad.c @ 1942] fffff880`03af7810
> > fffff880`040631a1 ibbus!mad_disp_send_done+0x500
> > [q:\projinf3\trunk\core\al\al_mad.c @ 867] fffff880`03af7860
> > fffff880`04063464 ibbus!__complete_send_mad+0x71
> > [q:\projinf3\trunk\core\al\kernel\al_smi.c @ 912] fffff880`03af78d0
> > fffff880`040d0eb6 ibbus!destroying_spl_qp_svc+0x2b4
>
> ^--- Probably raise IRQL here, just before calling
> __complete_send_mad.
>
> > [q:\projinf3\trunk\core\al\kernel\al_smi.c @ 975] fffff880`03af7930
> > fffff880`040d02f9 ibbus!destroy_obj+0x436
> > [q:\projinf3\trunk\core\al\al_common.c @ 606] fffff880`03af7990
> > fffff880`040604d7 ibbus!async_destroy_obj+0xd9
> > [q:\projinf3\trunk\core\al\al_common.c @ 477] fffff880`03af79c0
> > fffff880`040600d5 ibbus!spl_qp_agent_pnp+0x367
> > [q:\projinf3\trunk\core\al\kernel\al_smi.c @ 508] fffff880`03af7a20
> > fffff880`040b11c5 ibbus!spl_qp1_agent_pnp_cb+0xb5
> > [q:\projinf3\trunk\core\al\kernel\al_smi.c @ 469] fffff880`03af7a60
> > fffff880`040b3a3f ibbus!__pnp_notify_user+0x865
> > [q:\projinf3\trunk\core\al\kernel\al_pnp.c @ 555] fffff880`03af7b00
> > fffff880`040b3be3 ibbus!__pnp_process_remove_port+0x35f
> > [q:\projinf3\trunk\core\al\kernel\al_pnp.c @ 1062]
> fffff880`03af7c20
> > fffff880`0404852f ibbus!__pnp_process_remove_ca+0xc3
> > [q:\projinf3\trunk\core\al\kernel\al_pnp.c @ 1101] fffff880`03af7c80
> > fffff880`0404e505 ibbus!__cl_async_proc_worker+0xbf
> > [q:\projinf3\trunk\core\complib\cl_async_proc.c @ 153]
> > fffff880`03af7cd0 fffff880`0404f7fc
> > ibbus!__cl_thread_pool_routine+0x75
> > [q:\projinf3\trunk\core\complib\cl_threadpool.c @ 67]
> > fffff880`03af7d10
> > fffff800`01922166 ibbus!__thread_callback+0x3c
> > [q:\projinf3\trunk\core\complib\kernel\cl_thread.c @ 48]
> > fffff880`03af7d40 fffff800`0165d486 nt!PspSystemThreadStartup+0x5a
> > fffff880`03af7d80 00000000`00000000 nt!KxStartSystemThread+0x16
> >
>
More information about the ofw
mailing list