[ofw] [Patches 27/26][Core][bus] fix additional IRQL warnings with driver directive.

Smith, Stan stan.smith at intel.com
Thu Jun 23 09:16:43 PDT 2011


Hello,
  Modifications look OK.

Stan.

>-----Original Message-----
>From: Alex Naslednikov [mailto:xalex at mellanox.co.il]
>Sent: Thursday, June 23, 2011 7:44 AM
>To: Smith, Stan; ofw at lists.openfabrics.org
>Subject: [ofw] [Patches 27/26][Core][bus] fix dditional IRQL warnings with driver directive.
>
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_port_mgr.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_port_mgr.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_port_mgr.c	(revision 8370)
>@@ -525,8 +525,8 @@
> /*
>  * Called to get bus relations for an HCA.
>  */
>-NTSTATUS
>-port_mgr_get_bus_relations(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+NTSTATUS port_mgr_get_bus_relations(
> 	IN		const	net64_t						ca_guid,
> 	IN				IRP* const					p_irp )
> {
>@@ -583,8 +583,8 @@
> 	return STATUS_SUCCESS;
> }
>
>-static ib_api_status_t
>-__port_was_hibernated(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+static ib_api_status_t __port_was_hibernated(
> 	IN				ib_pnp_port_rec_t*			p_pnp_rec,
> 	IN				bus_filter_t*				p_bfi )
> {
>@@ -958,6 +958,7 @@
> * output:	none
> * return:	cl_status
> *************************************************************************************/
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> cl_status_t _port_mgr_pkey_rem(	IN	pkey_array_t	*pkeys,
> 								IN	port_mgr_t		*p_port_mgr )
> {
>@@ -1039,6 +1040,7 @@
> * output:	none
> * return:	cl_status
> *************************************************************************************/
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> cl_status_t _port_mgr_pkey_add( IN	pkey_array_t	*req_pkeys,
> 								IN	bus_filter_t	*p_bfi,
> 								IN	port_mgr_t		*p_port_mgr )
>@@ -1175,9 +1177,8 @@
> 	return ( success_cnt ? CL_SUCCESS : CL_ERROR );
> }
>
>-
>-void
>-port_mgr_port_remove(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+void port_mgr_port_remove(
> 	IN				ib_pnp_port_rec_t*		p_pnp_rec )
> {
> 	bus_pdo_ext_t	*p_ext;
>@@ -1380,9 +1381,8 @@
> 	return STATUS_SUCCESS;
> }
>
>-
>-static void
>-port_release_resources(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+static void port_release_resources(
> 	IN					DEVICE_OBJECT* const	p_dev_obj )
> {
> 	bus_port_ext_t	*p_ext;
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_iou_mgr.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_iou_mgr.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/bus/kernel/bus_iou_mgr.c	(revision 8370)
>@@ -525,8 +525,8 @@
> /*
>  * Called to get child relations for the bus root.
>  */
>-NTSTATUS
>-iou_mgr_get_bus_relations(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+NTSTATUS iou_mgr_get_bus_relations(
> 	IN		const	net64_t						ca_guid,
> 	IN				IRP* const					p_irp )
> {
>@@ -579,8 +579,8 @@
> }
>
>
>-static ib_api_status_t
>-__iou_was_hibernated(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+static ib_api_status_t __iou_was_hibernated(
> 	IN				ib_pnp_iou_rec_t*			p_pnp_rec,
> 	IN				bus_filter_t*				p_bfi )
> {
>@@ -800,9 +800,8 @@
> 	return IB_SUCCESS;
> }
>
>-
>-void
>-iou_mgr_iou_remove(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+void iou_mgr_iou_remove(
> 	IN				ib_pnp_iou_rec_t*			p_pnp_rec )
> {
> 	bus_pdo_ext_t	*p_ext;
>@@ -959,9 +958,8 @@
> 	return STATUS_SUCCESS;
> }
>
>-
>-static void
>-iou_release_resources(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+static void iou_release_resources(
> 	IN					DEVICE_OBJECT* const	p_dev_obj )
> {
> 	bus_iou_ext_t	*p_ext;
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.h
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.h	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.h	(revision 8370)
>@@ -213,6 +213,10 @@
> }
> #pragma warning(default:4706)
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_INSERT_IRP __insert_irp;
>+#endif
>+
> static VOID __insert_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>@@ -222,6 +226,10 @@
> 	InsertTailList( &p_al_csq->queue, &Irp->Tail.Overlay.ListEntry );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_REMOVE_IRP __insert_irp;
>+#endif
>+
> static VOID __remove_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>@@ -231,6 +239,10 @@
> 	RemoveEntryList( &Irp->Tail.Overlay.ListEntry );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_PEEK_NEXT_IRP __peek_next_irp;
>+#endif
>+
> static PIRP __peek_next_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp,
>@@ -281,6 +293,14 @@
> 	return nextIrp;
> }
>
>+#ifdef NTDDI_WIN8
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_raises_(DISPATCH_LEVEL)
>+//TOD __drv_at(p_ndi_csq->lock, __drv_acquiresExclusiveResource(KSPIN_LOCK))
>+__drv_at(pIrql, __drv_savesIRQL)
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is saved by cl_spinlock_acquire, impossible to annotate by driver directives")
>+#pragma prefast(suppress: 28158, "The irql level is stored by cl_spinlock_acquire, impossible to annotate by driver directives")
> static VOID __acquire_lock(
> 	IN	PIO_CSQ									Csq,
> 	OUT	PKIRQL									Irql
>@@ -290,6 +310,15 @@
> 	KeAcquireSpinLock( &p_al_csq->lock, Irql );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_ACQUIRE_LOCK __acquire_lock;
>+
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_requires_min_(DISPATCH_LEVEL)
>+//TODO __drv_at(p_ndi_csq->lock, __drv_restoresExclusiveResource(KSPIN_LOCK))
>+__drv_at(Irql, __drv_restoresIRQL)
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is restored by KeReleaseSpinLock, impossible to annotate by driver directives")
> static VOID __release_lock(
> 	IN	PIO_CSQ									Csq,
> 	IN	KIRQL									Irql
>@@ -299,6 +328,10 @@
> 	KeReleaseSpinLock( &p_al_csq->lock, Irql );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_COMPLETE_CANCELED_IRP __complete_cancelled_irp;
>+#endif
>+
> static VOID __complete_cancelled_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_cm_cep.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_cm_cep.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_cm_cep.c	(revision 8370)
>@@ -6557,6 +6557,11 @@
> 	AL_EXIT( AL_DBG_CM );
> }
>
>+#ifdef NTDDI_WIN8
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_requires_min_(DISPATCH_LEVEL)
>+__drv_at(p_irp->CancelIrql, __drv_restoresIRQL)
>+#endif
> static void
> __cep_cancel_ndi_irp(
> 	IN				DEVICE_OBJECT*				p_dev_obj,
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cm.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cm.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cm.c	(revision 8370)
>@@ -301,8 +301,10 @@
>  * CSQ
>  *
>  ******************************************************************/
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_INSERT_IRP_EX __ndi_insert_irp_ex;
>+#endif
>
>-
> static NTSTATUS __ndi_insert_irp_ex(
> 	IN	PIO_CSQ									pCsq,
> 	IN	PIRP									pIrp,
>@@ -364,6 +366,11 @@
> 	return status;
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_REMOVE_IRP __ndi_remove_irp;
>+#endif
>+
>+
> static VOID __ndi_remove_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>@@ -376,6 +383,11 @@
> 	AL_EXIT( AL_DBG_NDI );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_PEEK_NEXT_IRP __peek_next_irp;
>+#endif
>+
>+
> static PIRP __ndi_peek_next_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp,
>@@ -429,6 +441,18 @@
> 	return nextIrp;
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_ACQUIRE_LOCK __ndi_acquire_lock;
>+#endif
>+
>+
>+#ifdef NTDDI_WIN8
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_raises_(DISPATCH_LEVEL)
>+//TOD __drv_at(p_ndi_csq->lock, __drv_acquiresExclusiveResource(KSPIN_LOCK))
>+__drv_at(pIrql, __drv_savesIRQL)
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is saved by cl_spinlock_acquire, impossible to annotate by driver directives")
> static VOID __ndi_acquire_lock(
> 	IN	PIO_CSQ									Csq,
> 	OUT	PKIRQL									pIrql
>@@ -437,8 +461,20 @@
> 	nd_csq_t *p_ndi_csq = (nd_csq_t*)Csq;
>
> 	KeAcquireSpinLock( &p_ndi_csq->lock, pIrql );
>-}
>+}
>
>+
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_RELEASE_LOCK __ndi_release_lock;
>+#endif
>+
>+#ifdef NTDDI_WIN8
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_requires_min_(DISPATCH_LEVEL)
>+//TODO __drv_at(p_ndi_csq->lock, __drv_restoresExclusiveResource(KSPIN_LOCK))
>+__drv_at(Irql, __drv_restoresIRQL)
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is restored by KeReleaseSpinLock, impossible to annotate by driver directives")
> static VOID __ndi_release_lock(
> 	IN	PIO_CSQ									Csq,
> 	IN	KIRQL									Irql
>@@ -449,6 +485,10 @@
> 	KeReleaseSpinLock( &p_ndi_csq->lock, Irql );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_COMPLETE_CANCELED_IRP __ndi_complete_cancelled_irp;
>+#endif
>+
> static VOID __ndi_complete_cancelled_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									p_irp
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cq.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cq.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_ndi_cq.c	(revision 8370)
>@@ -138,6 +138,9 @@
>  * CSQ
>  *
>  ******************************************************************/
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_INSERT_IRP __ndi_insert_irp;
>+#endif
>
> static VOID __ndi_insert_irp(
> 	IN	PIO_CSQ									Csq,
>@@ -151,6 +154,10 @@
> 	AL_EXIT( AL_DBG_NDI );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_REMOVE_IRP __ndi_remove_irp;
>+#endif
>+
> static VOID __ndi_remove_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>@@ -163,6 +170,10 @@
> 	AL_EXIT( AL_DBG_NDI );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_PEEK_NEXT_IRP __peek_next_irp;
>+#endif
>+
> static PIRP __ndi_peek_next_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp,
>@@ -214,6 +225,15 @@
> 	return nextIrp;
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_ACQUIRE_LOCK __ndi_acquire_lock;
>+
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+__drv_raisesIRQL(DISPATCH_LEVEL)
>+//TODO __drv_at((ndi_cq_csq_t*)Csq->h_cq->obj.lock, __drv_acquiresExclusiveResource(KSPIN_LOCK))
>+_IRQL_saves_global_(SpinLock, pIrql)
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is restored by cl_spinlock_release, impossible to annotate by driver directives")
> static VOID __ndi_acquire_lock(
> 	IN	PIO_CSQ									Csq,
> 	OUT	PKIRQL									Irql
>@@ -228,6 +248,16 @@
> 	AL_EXIT( AL_DBG_NDI );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_RELEASE_LOCK __ndi_release_lock;
>+
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_requires_min_(DISPATCH_LEVEL)
>+// TODO __drv_at(((ndi_cq_csq_t*)Csq)->h_cq->obj.lock, __drv_releasesExclusiveResource(KSPIN_LOCK))
>+_IRQL_restores_global_(SpinLock, pIrql)
>+
>+#endif
>+#pragma prefast(suppress: 28167, "The irql level is restored by cl_spinlock_release, impossible to annotate by driver directives")
> static VOID __ndi_release_lock(
> 	IN	PIO_CSQ									Csq,
> 	IN	KIRQL									Irql
>@@ -242,6 +272,10 @@
> 	AL_EXIT( AL_DBG_NDI );
> }
>
>+#ifdef NTDDI_WIN8
>+static IO_CSQ_COMPLETE_CANCELED_IRP __ndi_complete_cancelled_irp;
>+#endif
>+
> static VOID __ndi_complete_cancelled_irp(
> 	IN	PIO_CSQ									Csq,
> 	IN	PIRP									Irp
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/kernel/al_proxy.c	(revision 8370)
>@@ -865,8 +865,8 @@
> /*
>  * Process the ioctl UAL_REG_PNP:
>  */
>-static cl_status_t
>-proxy_reg_pnp(
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
>+static cl_status_t proxy_reg_pnp(
> 	IN				void						*p_open_context,
> 	IN				cl_ioctl_handle_t			h_ioctl )
> {
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca_shared.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca_shared.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca_shared.c	(revision 8370)
>@@ -587,33 +587,3 @@
> 	return IB_SUCCESS;
> }
>
>-
>-
>-void
>-ci_ca_lock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca )
>-{
>-	CL_ASSERT( p_ci_ca );
>-
>-	cl_spinlock_acquire( &p_ci_ca->attr_lock );
>-}
>-
>-
>-void
>-ci_ca_excl_lock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca )
>-{
>-	CL_ASSERT( p_ci_ca );
>-
>-	cl_spinlock_acquire( &p_ci_ca->attr_lock );
>-}
>-
>-
>-void
>-ci_ca_unlock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca )
>-{
>-	CL_ASSERT( p_ci_ca );
>-
>-	cl_spinlock_release( &p_ci_ca->attr_lock );
>-}
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_dm.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_dm.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_dm.c	(revision 8370)
>@@ -38,7 +38,7 @@
> #include "al_mgr.h"
> #include "ib_common.h"
>
>-#ifdef DRIVER
>+#ifdef CL_KERNEL
> #include <ntstrsafe.h>
> #endif
>
>@@ -764,7 +764,7 @@
> 		cl_memclr( &reg_svc_req, sizeof( ib_reg_svc_req_t ) );
>
> 		reg_svc_req.svc_rec.service_lease = 0xffffffff;
>-#ifdef DRIVER
>+#ifdef CL_KERNEL
> 	RtlStringCchCopyA(
> 		(char*)reg_svc_req.svc_rec.service_name,
> 		sizeof(reg_svc_req.svc_rec.service_name),
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_common.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_common.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_common.c	(revision 8370)
>@@ -48,7 +48,8 @@
> #include "al_mgr.h"
> #include <complib/cl_math.h>
> #include "ib_common.h"
>-#ifdef DRIVER
>+
>+#if defined(CL_KERNEL) && defined (NTDDI_WIN8)
> #include <ntstrsafe.h>
> #else
> #include <strsafe.h>
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca.h
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca.h	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/core/al/al_ci_ca.h	(revision 8370)
>@@ -204,18 +204,22 @@
> 	IN				al_ci_ca_t*					p_ci_ca,
> 		OUT			ib_ca_attr_t**				pp_old_pnp_attr );
>
>-void
>-ci_ca_lock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca );
>
>-void
>-ci_ca_excl_lock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca );
>
>-void
>-ci_ca_unlock_attr(
>-	IN				al_ci_ca_t* const			p_ci_ca );
>+#define ci_ca_lock_attr(p_ci_ca) \
>+	CL_ASSERT( p_ci_ca ); \
>+	cl_spinlock_acquire( &p_ci_ca->attr_lock );
>
>+
>+#define ci_ca_excl_lock_attr(p_ci_ca ) \
>+	CL_ASSERT( p_ci_ca ); \
>+	cl_spinlock_acquire( &p_ci_ca->attr_lock );
>+
>+#define ci_ca_unlock_attr(p_ci_ca) \
>+	CL_ASSERT( p_ci_ca ); \
>+	cl_spinlock_release( &p_ci_ca->attr_lock );
>+
>+
> ib_api_status_t
> ci_call(
> 	IN				ib_ca_handle_t				h_ca,
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_spinlock_osd.h
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_spinlock_osd.h	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_spinlock_osd.h	(revision 8370)
>@@ -106,6 +106,8 @@
> }
>
> #ifdef NTDDI_WIN8
>+_IRQL_requires_max_(DISPATCH_LEVEL)
>+_IRQL_requires_min_(DISPATCH_LEVEL)
> __drv_at(p_spinlock->lock, __drv_releasesExclusiveResource(KSPIN_LOCK))
> __drv_at(p_spinlock->irql, __drv_restoresIRQL)
> #endif
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_mutex_osd.h
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_mutex_osd.h	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/inc/kernel/complib/cl_mutex_osd.h	(revision 8370)
>@@ -80,6 +80,39 @@
> 	UNUSED_PARAM( p_mutex );
> }
>
>+/*
>+//TODO : according to MSDN(http://msdn.microsoft.com/en-us/library/ff547911(v=VS.85).aspx),
>+the definition of these fast mutex wrappers should be:
>+But it DOES NOT work and still generates warnings 28157, 28158 !
>+_IRQL_requires_max_(APC_LEVEL)
>+_IRQL_raises_(APC_LEVEL)
>+CL_INLINE VOID
>+  cl_mutex_acquire(
>+    _Inout_
>+        __drv_out(_IRQL_saves_
>+            __drv_acquiresResource(FastMutex))
>+    PFAST_MUTEX  FastMutex
>+    )
>+{
>+	CL_ASSERT( KeGetCurrentIrql() < DISPATCH_LEVEL );
>+	ExAcquireFastMutex( FastMutex );
>+}
>+
>+_IRQL_requires_(APC_LEVEL)
>+CL_INLINE VOID
>+  cl_mutex_release(
>+    _Inout_
>+        __drv_in(_IRQL_restores_
>+            __drv_releasesResource(FastMutex))
>+    PFAST_MUTEX  FastMutex
>+    )
>+
>+{
>+	CL_ASSERT( KeGetCurrentIrql() == APC_LEVEL );
>+	ExReleaseFastMutex( FastMutex );
>+}
>+*/
>+
> #ifdef NTDDI_WIN8
> _IRQL_requires_max_(APC_LEVEL)
> _IRQL_raises_(APC_LEVEL)
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/mad.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/mad.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/mad.c	(revision 8370)
>@@ -868,6 +868,7 @@
> 	}
> }
>
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> static void node_desc_override(struct ib_device *dev,
> 			       struct ib_mad *mad)
> {
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/qp.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/qp.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/qp.c	(revision 8370)
>@@ -730,6 +730,7 @@
> 	}
> }
>
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> static void mlx4_ib_lock_cqs(struct mlx4_ib_cq *send_cq, struct mlx4_ib_cq *recv_cq)
> {
> 	if (send_cq == recv_cq)
>@@ -743,6 +744,7 @@
> 	}
> }
>
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> static void mlx4_ib_unlock_cqs(struct mlx4_ib_cq *send_cq, struct mlx4_ib_cq *recv_cq)
> {
> 	if (send_cq == recv_cq)
>Index: B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/main.c
>===================================================================
>--- B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/main.c	(revision 8369)
>+++ B:/users/xalex/PREFAST_TRUNK_3_0_0/hw/mlx4/kernel/bus/ib/main.c	(revision 8370)
>@@ -473,6 +473,7 @@
> 	return err;
> }
>
>+#pragma prefast(suppress: 28167, "The irql level is restored here")
> static int mlx4_ib_modify_device(struct ib_device *ibdev, int mask,
> 				 struct ib_device_modify *props)
> {



More information about the ofw mailing list