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

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



No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
 src/xenvif/transmitter.c | 54 +++++++++++++++++++++++++++++++++-------
 src/xenvif/transmitter.h | 17 +++++++++++++
 2 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index b46ccc3..75b80f3 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -2633,6 +2633,7 @@ done:
     return Count;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingTrigger(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -2713,6 +2714,7 @@ __TransmitterRingPushRequests(
 
 #define XENVIF_TRANSMITTER_LOCK_BIT ((ULONG_PTR)1)
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingSwizzle(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -2762,6 +2764,7 @@ TransmitterRingSwizzle(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingSchedule(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3052,6 +3055,7 @@ __TransmitterSetCompletionInfo(
     Packet->Completion.PayloadLength = (USHORT)Payload->Length;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterReturnPackets(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -3087,8 +3091,8 @@ __TransmitterReturnPackets(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingTryAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3119,8 +3123,8 @@ __TransmitterRingTryAcquireLock(
     return Acquired;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3135,6 +3139,7 @@ __TransmitterRingAcquireLock(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 TransmitterRingAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3143,8 +3148,8 @@ TransmitterRingAcquireLock(
     __TransmitterRingAcquireLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingTryReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3178,8 +3183,8 @@ __TransmitterRingTryReleaseLock(
     return Released;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3217,6 +3222,7 @@ __TransmitterRingReleaseLock(
     }
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3225,6 +3231,7 @@ TransmitterRingReleaseLock(
     __TransmitterRingReleaseLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
 __TransmitterRingUnmask(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -3247,11 +3254,8 @@ __TransmitterRingUnmask(
                           Force);
 }
 
-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(DISPATCH_LEVEL)
-__drv_requiresIRQL(DISPATCH_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 TransmitterRingPollDpc(
     IN  PKDPC                   Dpc,
@@ -3284,6 +3288,7 @@ TransmitterRingPollDpc(
 
 KSERVICE_ROUTINE    TransmitterRingEvtchnCallback;
 
+_Use_decl_annotations_
 BOOLEAN
 TransmitterRingEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -3318,6 +3323,7 @@ TransmitterRingEvtchnCallback(
 
 #define XENVIF_TRANSMITTER_WATCHDOG_PERIOD  30
 
+_IRQL_requires_(PASSIVE_LEVEL)
 static NTSTATUS
 TransmitterRingWatchdog(
     IN  PXENVIF_THREAD          Self,
@@ -3391,6 +3397,7 @@ TransmitterRingWatchdog(
     return STATUS_SUCCESS;
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingInitialize(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -3653,6 +3660,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingConnect(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3824,6 +3832,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingStoreWrite(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -3884,6 +3893,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingEnable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3915,6 +3925,7 @@ __TransmitterRingEnable(
     return STATUS_SUCCESS;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4024,6 +4035,7 @@ __TransmitterRingDisable(
          Ring->Index);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisconnect(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4081,6 +4093,7 @@ __TransmitterRingDisconnect(
     Ring->GnttabCache = NULL;
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingTeardown(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4164,6 +4177,7 @@ __TransmitterRingTeardown(
     __TransmitterFree(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingQueuePacket(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4200,6 +4214,7 @@ __TransmitterRingQueuePacket(
         __TransmitterRingReleaseLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingAbortPackets(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4251,6 +4266,7 @@ __TransmitterRingAbortPackets(
     __TransmitterRingReleaseLock(Ring);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingQueueArp(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4301,6 +4317,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4355,6 +4372,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
 __TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4363,6 +4381,7 @@ __TransmitterHasMulticastControl(
     return Transmitter->MulticastControl;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 BOOLEAN
 TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4442,6 +4461,7 @@ TransmitterDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 TransmitterInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -4655,6 +4675,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER     Transmitter
@@ -4765,6 +4786,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -4795,6 +4817,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -4819,6 +4842,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterStoreWrite(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -4861,6 +4885,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4885,6 +4910,7 @@ TransmitterEnable(
     return STATUS_SUCCESS;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4907,6 +4933,7 @@ TransmitterDisable(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisconnect(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4944,6 +4971,7 @@ TransmitterDisconnect(
     Trace("<====\n");
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -5118,6 +5146,7 @@ done:
     return Value;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterQueuePacket(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -5209,6 +5238,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_max_(APC_LEVEL)
 VOID
 TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -5232,6 +5262,7 @@ TransmitterAbortPackets(
     KeLowerIrql(Irql);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueArp(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5243,6 +5274,7 @@ TransmitterQueueArp(
     (VOID) __TransmitterRingQueueArp(Ring, Address);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5254,6 +5286,7 @@ TransmitterQueueNeighbourAdvertisement(
     (VOID) __TransmitterRingQueueNeighbourAdvertisement(Ring, Address);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueMulticastControl(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5266,6 +5299,7 @@ TransmitterQueueMulticastControl(
     (VOID) __TransmitterRingQueueMulticastControl(Ring, Address, Add);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryRingSize(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -5296,6 +5330,7 @@ TransmitterNotify(
         Ring->PollDpcs++;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryOffloadOptions(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -5416,6 +5451,7 @@ TransmitterQueryOffloadOptions(
                                                          
MAXIMUM_IPV6_OPTIONS_LENGTH -          \
                                                          
MAXIMUM_TCP_HEADER_LENGTH)
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryLargePacketSize(
     IN  PXENVIF_TRANSMITTER     Transmitter,
diff --git a/src/xenvif/transmitter.h b/src/xenvif/transmitter.h
index f7f65dd..30ef371 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -43,38 +43,45 @@
 
 typedef struct _XENVIF_TRANSMITTER XENVIF_TRANSMITTER, *PXENVIF_TRANSMITTER;
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 TransmitterInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_TRANSMITTER *Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterStoreWrite(
     IN  PXENVIF_TRANSMITTER         Transmitter,
     IN  PXENBUS_STORE_TRANSACTION   Transaction
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterDisconnect(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -86,23 +93,27 @@ TransmitterNotify(
     IN  ULONG               Index
     );
 
+_IRQL_requires_max_(APC_LEVEL)
 extern VOID
 TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueArp(
     IN  PXENVIF_TRANSMITTER     Transmitter,
     IN  PIPV4_ADDRESS           Address
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER     Transmitter,
     IN  PIPV6_ADDRESS           Address
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueMulticastControl(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -110,12 +121,14 @@ TransmitterQueueMulticastControl(
     IN  BOOLEAN                 Add
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryRingSize(
     IN  PXENVIF_TRANSMITTER Transmitter,
     OUT PULONG              Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterQueuePacket(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -130,12 +143,14 @@ TransmitterQueuePacket(
     IN  PVOID                       Cookie
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryOffloadOptions(
     IN  PXENVIF_TRANSMITTER         Transmitter,
     OUT PXENVIF_VIF_OFFLOAD_OPTIONS Options
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryLargePacketSize(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -143,11 +158,13 @@ TransmitterQueryLargePacketSize(
     OUT PULONG                  Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 BOOLEAN
 TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter,
-- 
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®.