[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XENVIF PATCH v2 3/4] receiver: Map out IRQL annotations



No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
 src/xenvif/receiver.c | 40 ++++++++++++++++++++++++++++++++++------
 src/xenvif/receiver.h | 18 ++++++++++++++++++
 2 files changed, 52 insertions(+), 6 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 783f49c..8e6ec7f 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -1330,6 +1330,8 @@ fail1:
                                1);
 }
 
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingSwizzle(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1571,8 +1573,8 @@ __ReceiverRingSwizzle(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __ReceiverRingAcquireLock(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
@@ -1582,6 +1584,7 @@ __ReceiverRingAcquireLock(
     KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 ReceiverRingAcquireLock(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1590,8 +1593,8 @@ ReceiverRingAcquireLock(
     __ReceiverRingAcquireLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __ReceiverRingReleaseLock(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
@@ -1602,6 +1605,7 @@ __ReceiverRingReleaseLock(
     KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 ReceiverRingReleaseLock(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1610,10 +1614,10 @@ ReceiverRingReleaseLock(
     __ReceiverRingReleaseLock(Ring);
 }
 
-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(PASSIVE_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_same_
 static VOID
 ReceiverRingQueueDpc(
     IN  PKDPC               Dpc,
@@ -1657,6 +1661,7 @@ __ReceiverRingIsStopped(
     return Ring->Stopped;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingTrigger(
     IN  PXENVIF_RECEIVER_RING   Ring,
@@ -1701,6 +1706,7 @@ __ReceiverRingSend(
         __ReceiverRingReleaseLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingReturnPacket(
     IN  PXENVIF_RECEIVER_RING   Ring,
@@ -2005,6 +2011,7 @@ __ReceiverRingQueuePacket(
     } while (InterlockedCompareExchangePointer(&Ring->PacketQueue, (PVOID)New, 
(PVOID)Old) != Old);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE ULONG
 ReceiverRingPoll(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -2312,6 +2319,7 @@ ReceiverRingPollDpc(
 
 KSERVICE_ROUTINE    ReceiverRingEvtchnCallback;
 
+_Use_decl_annotations_
 BOOLEAN
 ReceiverRingEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -2870,6 +2878,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingDisable(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -3076,6 +3085,7 @@ ReceiverDebugCallback(
                  Receiver->Returned);
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ReceiverInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -3249,6 +3259,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverConnect(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3434,6 +3445,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3518,6 +3530,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3561,6 +3574,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3583,6 +3597,7 @@ ReceiverDisable(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisconnect(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3618,6 +3633,7 @@ ReceiverDisconnect(
     Trace("<====\n");
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3678,6 +3694,7 @@ ReceiverTeardown(
     __ReceiverFree(Receiver);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSetOffloadOptions(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3708,6 +3725,7 @@ ReceiverSetOffloadOptions(
     }    
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSetBackfillSize(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3734,6 +3752,7 @@ ReceiverSetBackfillSize(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverQueryRingSize(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3745,6 +3764,7 @@ ReceiverQueryRingSize(
     *Size = XENVIF_RECEIVER_RING_SIZE;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverReturnPacket(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3776,6 +3796,7 @@ ReceiverReturnPacket(
 
 #define XENVIF_RECEIVER_PACKET_WAIT_PERIOD 10
 
+_IRQL_requires_max_(APC_LEVEL)
 VOID
 ReceiverWaitForPackets(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3826,6 +3847,7 @@ ReceiverWaitForPackets(
     Trace("%s: <====\n", FrontendGetPath(Frontend));
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverTrigger(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3839,6 +3861,7 @@ ReceiverTrigger(
     __ReceiverRingTrigger(Ring, FALSE);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSend(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3852,6 +3875,7 @@ ReceiverSend(
     __ReceiverRingSend(Ring, FALSE);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverSetHashAlgorithm(
     IN  PXENVIF_RECEIVER                Receiver,
@@ -3895,6 +3919,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverQueryHashCapabilities(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3918,6 +3943,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashParameters(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3969,6 +3995,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __ReceiverSetQueueAffinities(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -4012,6 +4039,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashMapping(
     IN  PXENVIF_RECEIVER    Receiver,
diff --git a/src/xenvif/receiver.h b/src/xenvif/receiver.h
index 0238bb2..d093dd0 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -41,96 +41,113 @@
 
 typedef struct _XENVIF_RECEIVER XENVIF_RECEIVER, *PXENVIF_RECEIVER;
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ReceiverInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_RECEIVER    *Receiver
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverConnect(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
     IN  PXENBUS_STORE_TRANSACTION   Transaction
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverDisconnect(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_max_(APC_LEVEL)
 extern VOID
 ReceiverWaitForPackets(
     IN  PXENVIF_RECEIVER    Receiver
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverQueryRingSize(
     IN  PXENVIF_RECEIVER    Receiver,
     OUT PULONG              Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSetOffloadOptions(
     IN  PXENVIF_RECEIVER            Receiver,
     IN  XENVIF_VIF_OFFLOAD_OPTIONS  Options
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSetBackfillSize(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverReturnPacket(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  PVOID               Cookie
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverTrigger(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Index
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSend(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Index
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverSetHashAlgorithm(
     IN  PXENVIF_RECEIVER                Receiver,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverQueryHashCapabilities(
     IN  PXENVIF_RECEIVER    Receiver,
     OUT PULONG              Types
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashParameters(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -138,6 +155,7 @@ ReceiverUpdateHashParameters(
     IN  PUCHAR              Key
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashMapping(
     IN  PXENVIF_RECEIVER    Receiver,
-- 
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.