From win-pv-devel-bounces@lists.xenproject.org Wed Oct 08 12:55:38 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Oct 2025 12:55:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1139638.1474901 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6Thg-0002m1-HO; Wed, 08 Oct 2025 12:55:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1139638.1474901; Wed, 08 Oct 2025 12:55:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6Thg-0002lt-ES; Wed, 08 Oct 2025 12:55:36 +0000
Received: by outflank-mailman (input) for mailman id 1139638;
 Wed, 08 Oct 2025 12:55:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GJJz=4R=bounce.vates.tech=bounce-md_30504962.68e65f3f.v1-7fe3308e7428478da69e5b48fa12cf7c@srs-se1.protection.inumbo.net>)
 id 1v6The-0002ln-W7
 for win-pv-devel@lists.xenproject.org; Wed, 08 Oct 2025 12:55:35 +0000
Received: from mail145-28.atl61.mandrillapp.com
 (mail145-28.atl61.mandrillapp.com [198.2.145.28])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10742a11-a446-11f0-9809-7dc792cee155;
 Wed, 08 Oct 2025 14:55:29 +0200 (CEST)
Received: from pmta06.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail145-28.atl61.mandrillapp.com (Mailchimp) with ESMTP id
 4chXzg1FfyzKsbds8
 for <win-pv-devel@lists.xenproject.org>; Wed,  8 Oct 2025 12:55:27 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 7fe3308e7428478da69e5b48fa12cf7c; Wed, 08 Oct 2025 12:55:27 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10742a11-a446-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1759928127; x=1760198127;
	bh=Wyf9aQJoVR3p+VCPU+3SGB813LIWEt2dr3yQZgCdlEA=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=WfQWJwUlouvfi8SdeymMew9DaPy39oRhGVuVUZuOxg910Gu+1L2PRb6STJQJ2WRNI
	 0dZUMBr2FPVoIKvQ8n4HAxCCWnz17qb+HthaKE2zpdInVraojgzt+sLbpPq5L57eqJ
	 gIjwcg4Yk/A1WULHyyFAw5tbvVlVe6HEuhrGIdlcBq4xTafRvGCrWi95/x9z1QD66z
	 4RISXahtRXtgRJBwXMEfZ3d7um501w9q6b0JriXbK2mnRQbUYI7wVvQAMqq//0iZ5f
	 NR1ac44pYVlMMrWUVy3Yi6WONe5CsGPXwXzSiCMHr9lFN7GsPQ75F5Mi+JN7ibZeHk
	 b9JPFVYk9XMRA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1759928127; x=1760188627; i=ngoc-tu.dinh@vates.tech;
	bh=Wyf9aQJoVR3p+VCPU+3SGB813LIWEt2dr3yQZgCdlEA=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=NW2aIPX6bYaGzhNvdXKtJ6JfGJPGKA3nelsacZZSnnsVY0ANDf5apV81VTQhCBCbG
	 IHPjI8dHv3LCO+deaiAS745HMXEr6652eVlO9dglV2UFPqByXl9rM47vA7dgXamX57
	 9WdOJtdcGX188LM4X36e7sk4yFUEJ1V6ObN2pu+2BdOCGu3lr5nbrpHLju9ZBFeoT8
	 Lg04Iiwccj15O0rzb4lrRuo4D11+68lGUlWYssvIC8hrdhondeS+8iZat1qXd7wBmo
	 jUhswNark9awD5f7iOHKncxsXv4+AP//wYxVH94VUufTLdrX5hlig6YvLHrOgoqLHi
	 U7XGgeDcF+XSQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENNET=20PATCH]=20Remove=20stubs=20for=20optional=20miniport=20handlers?=
X-Mailer: git-send-email 2.51.0.windows.1
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1759928126419
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251008125524.1559-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.7fe3308e7428478da69e5b48fa12cf7c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251008:md
Date: Wed, 08 Oct 2025 12:55:27 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

MiniportCheckForHangEx, MiniportResetEx, MiniportDirectOidRequest and
MiniportCancelDirectOidRequest are not required by NDIS.

Just don't provide the handlers instead of providing stub do-nothing
handlers.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xennet/miniport.c | 59 -------------------------------------------
 1 file changed, 59 deletions(-)

diff --git a/src/xennet/miniport.c b/src/xennet/miniport.c
index 250b090..3ec76a9 100644
--- a/src/xennet/miniport.c
+++ b/src/xennet/miniport.c
@@ -222,35 +222,6 @@ MiniportCancelSend(
     UNREFERENCED_PARAMETER(CancelId);
 }
 
-static
-_Function_class_(MINIPORT_CHECK_FOR_HANG)
-BOOLEAN
-MiniportCheckForHangEx(
-    IN  NDIS_HANDLE MiniportAdapterContext
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-
-    return FALSE;
-}
-
-static
-_Function_class_(MINIPORT_RESET)
-NDIS_STATUS
-MiniportResetEx(
-    IN  NDIS_HANDLE MiniportAdapterContext,
-    OUT PBOOLEAN    AddressingReset
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-
-    Trace("<===>\n");
-
-    *AddressingReset = FALSE;
-
-    return NDIS_STATUS_SUCCESS;
-}
-
 static
 _Function_class_(MINIPORT_DEVICE_PNP_EVENT_NOTIFY)
 VOID
@@ -299,32 +270,6 @@ MiniportCancelOidRequest(
     Trace("<===>\n");
 }
 
-static
-_Function_class_(MINIPORT_DIRECT_OID_REQUEST)
-NDIS_STATUS
-MiniportDirectOidRequest(
-    IN  NDIS_HANDLE         MiniportAdapterContext,
-    IN  PNDIS_OID_REQUEST   OidRequest
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-    UNREFERENCED_PARAMETER(OidRequest);
-
-    return NDIS_STATUS_INVALID_OID;
-}
-
-static
-_Function_class_(MINIPORT_CANCEL_DIRECT_OID_REQUEST)
-VOID
-MiniportCancelDirectOidRequest(
-    IN  NDIS_HANDLE MiniportAdapterContext,
-    IN  PVOID       RequestId
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-    UNREFERENCED_PARAMETER(RequestId);
-}
-
 NDIS_STATUS
 MiniportRegister(
     IN  PDRIVER_OBJECT                      DriverObject,
@@ -366,20 +311,16 @@ MiniportRegister(
 
     MiniportDriverCharacteristics.CancelOidRequestHandler = MiniportCancelOidRequest;
     MiniportDriverCharacteristics.CancelSendHandler = MiniportCancelSend;
-    MiniportDriverCharacteristics.CheckForHangHandlerEx = MiniportCheckForHangEx;
     MiniportDriverCharacteristics.InitializeHandlerEx = MiniportInitializeEx;
     MiniportDriverCharacteristics.HaltHandlerEx = MiniportHaltEx;
     MiniportDriverCharacteristics.OidRequestHandler = MiniportOidRequest;
     MiniportDriverCharacteristics.PauseHandler = MiniportPause;
     MiniportDriverCharacteristics.DevicePnPEventNotifyHandler  = MiniportDevicePnPEventNotify;
-    MiniportDriverCharacteristics.ResetHandlerEx = MiniportResetEx;
     MiniportDriverCharacteristics.RestartHandler = MiniportRestart;
     MiniportDriverCharacteristics.ReturnNetBufferListsHandler = MiniportReturnNetBufferLists;
     MiniportDriverCharacteristics.SendNetBufferListsHandler = MiniportSendNetBufferLists;
     MiniportDriverCharacteristics.ShutdownHandlerEx = MiniportShutdownEx;
     MiniportDriverCharacteristics.UnloadHandler = MiniportDriverUnload;
-    MiniportDriverCharacteristics.DirectOidRequestHandler = MiniportDirectOidRequest;
-    MiniportDriverCharacteristics.CancelDirectOidRequestHandler = MiniportCancelDirectOidRequest;
 
     NdisStatus = NdisMRegisterMiniportDriver(DriverObject,
                                              RegistryPath,
-- 
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Wed Oct 08 12:58:44 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Oct 2025 12:58:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1139639.1474905 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6Tki-00034X-Pu; Wed, 08 Oct 2025 12:58:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1139639.1474905; Wed, 08 Oct 2025 12:58:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6Tki-00034Q-Mp; Wed, 08 Oct 2025 12:58:44 +0000
Received: by outflank-mailman (input) for mailman id 1139639;
 Wed, 08 Oct 2025 12:58:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3Uh/=4R=bounce.vates.tech=bounce-md_30504962.68e65ffe.v1-2bf9a0b5fc0b4883a36d64440d87981c@srs-se1.protection.inumbo.net>)
 id 1v6Tkh-00034K-3p
 for win-pv-devel@lists.xenproject.org; Wed, 08 Oct 2025 12:58:43 +0000
Received: from mail132-2.atl131.mandrillapp.com
 (mail132-2.atl131.mandrillapp.com [198.2.132.2])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 82256057-a446-11f0-9809-7dc792cee155;
 Wed, 08 Oct 2025 14:58:39 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-2.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4chY3L1X72zS62PYC
 for <win-pv-devel@lists.xenproject.org>; Wed,  8 Oct 2025 12:58:38 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2bf9a0b5fc0b4883a36d64440d87981c; Wed, 08 Oct 2025 12:58:38 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82256057-a446-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1759928318; x=1760198318;
	bh=fBIRziIvOEPjdC9tZYg17tBsDntACBwGAw9Lg2XoY7Q=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=kPyu+WcTOfTOSYzfYDVXYYat0T2AdJZOU9H+0X1KqAOV1YAcuPGQRguwaHODQmU9Z
	 miHvKj55s2UMt7Mc42RvY9B7uBbb+NE0dDg322QVAy9TCRf/XuZWHUzaymsD/Ae6tL
	 AgXyPIYyrH9Pap+4AhvwAl0LFWbbxEw36x8OgiP85+0yAOLxXlMW1iTXY95Xx54tC3
	 9DcgBliP1uhVBaszI7b4/io7q1VBbxukmHFZFtqa++hN4Nmkn7m18NqAKEDN97KycQ
	 pbUFCjGiXjZhiCD7WoQTl9J04fb7n77a6wEBGynYirt+rtzImMDJtmMrxVTpnKP2Bx
	 4UBoeBpY76fww==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1759928318; x=1760188818; i=ngoc-tu.dinh@vates.tech;
	bh=fBIRziIvOEPjdC9tZYg17tBsDntACBwGAw9Lg2XoY7Q=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=V7zCNrDb0W/ootkTazJKfmQhAHVquY4nuf8DO8WgCI6d6bi0xYDwHM6nwX8r+TNm2
	 fa1s/iFC5KAAZtGE4dgyMEIgX1HxObnKUridmpycl/9dm71WMbZnjjh7LZE3AWjZKB
	 oHwZ8NQisDIlno6myU5jVjEI1CU0sIBN30gdRRyLPo+7LYTV/Y6yZFPSGT+0YwoJPp
	 LSkr097CO+roR2bNbRUdoZtGQ0DYOH39fyMZZGduPjHuu5bciK0H6r1zwBEU7oQu5H
	 RIiv58YD15qKgGPDoK6Yl22S8Biv+NLyGxbB4IG2NU+51kmtNGAKVIzSCUesV0jKz8
	 Djd/mWiiYKDhw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH]=20Map=20out=20IRQL=20annotations?=
X-Mailer: git-send-email 2.51.0.windows.1
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1759928316073
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251008125833.1101-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2bf9a0b5fc0b4883a36d64440d87981c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251008:md
Date: Wed, 08 Oct 2025 12:58:38 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

This is an initial, exploratory work to help inform the rework of
the controller interface.

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/controller.c  |  16 +++++
 src/xenvif/controller.h  |  12 ++++
 src/xenvif/frontend.c    |  97 ++++++++++++++++++---------
 src/xenvif/frontend.h    |  62 ++++++++++-------
 src/xenvif/receiver.c    | 132 +++++++++++++++++++++---------------
 src/xenvif/receiver.h    |  64 +++++++++++-------
 src/xenvif/transmitter.c | 140 ++++++++++++++++++++++++---------------
 src/xenvif/transmitter.h |  63 +++++++++++-------
 src/xenvif/vif.c         |  61 ++++++++++-------
 src/xenvif/vif.h         |  48 +++++++-------
 10 files changed, 441 insertions(+), 254 deletions(-)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ae86837..e032972 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -137,6 +137,7 @@ ControllerReleaseLock(
     __ControllerReleaseLock(Controller);
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ControllerSend(
     IN  PXENVIF_CONTROLLER  Controller
@@ -177,6 +178,7 @@ ControllerPoll(
     Controller->Shared->rsp_event = rsp_cons + 1;
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerPutRequest(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -248,6 +250,7 @@ fail1:

 #define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerGetResponse(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -318,6 +321,7 @@ ControllerGetResponse(

 KSERVICE_ROUTINE    ControllerEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 ControllerEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -345,6 +349,7 @@ ControllerDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -390,6 +395,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER      Controller
@@ -597,6 +603,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -670,6 +677,7 @@ ControllerDisable(
     Trace("<===>\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
@@ -732,6 +740,7 @@ done:
     Trace("<====\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
@@ -762,6 +771,7 @@ ControllerTeardown(
     __ControllerFree(Controller);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -802,6 +812,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -842,6 +853,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -882,6 +894,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -976,6 +989,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1016,6 +1030,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1056,6 +1071,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/controller.h b/src/xenvif/controller.h
index b14e066..18e09b7 100644
--- a/src/xenvif/controller.h
+++ b/src/xenvif/controller.h
@@ -41,17 +41,20 @@

 typedef struct _XENVIF_CONTROLLER XENVIF_CONTROLLER, *PXENVIF_CONTROLLER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_CONTROLLER  *Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -68,34 +71,40 @@ ControllerDisable(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -103,18 +112,21 @@ ControllerSetHashKey(
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index bcea522..14fb87e 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -378,6 +378,7 @@ FrontendIsBackendOnline(
     return Online;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendEject(
     IN  PXENVIF_THREAD  Self,
@@ -451,9 +452,9 @@ FrontendEjectFailed(
     if (Path == NULL)
         goto fail1;

-    status = RtlStringCbPrintfA(Path,
+    status = RtlStringCbPrintfA(Path,
                                 Length,
-                                "error/%s",
+                                "error/%s",
                                 __FrontendGetPath(Frontend));
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -823,6 +824,7 @@ FrontendIpAddressChange(
     ThreadWake(Frontend->MibThread);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendMib(
     IN  PXENVIF_THREAD  Self,
@@ -834,7 +836,7 @@ FrontendMib(
     NTSTATUS            (*__GetIfTable2)(PMIB_IF_TABLE2 *);
     NTSTATUS            (*__NotifyUnicastIpAddressChange)(ADDRESS_FAMILY,
                                                           PUNICAST_IPADDRESS_CHANGE_CALLBACK,
-                                                          PVOID,
+                                                          PVOID,
                                                           BOOLEAN,
                                                           HANDLE *);
     NTSTATUS            (*__GetUnicastIpAddressTable)(ADDRESS_FAMILY,
@@ -887,7 +889,7 @@ FrontendMib(

     Event = ThreadGetEvent(Self);

-    for (;;) {
+    for (;;) {
         PMIB_IF_TABLE2              IfTable;
         PMIB_UNICASTIPADDRESS_TABLE UnicastIpAddressTable;
         KIRQL                       Irql;
@@ -981,6 +983,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1093,6 +1096,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendNotifyMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1147,6 +1151,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -1188,6 +1193,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1231,6 +1237,7 @@ FrontendAdvertiseIpAddresses(
     KeReleaseSpinLock(&Frontend->Lock, Irql);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOnline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1243,6 +1250,7 @@ FrontendSetOnline(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOffline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1256,6 +1264,7 @@ FrontendSetOffline(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetXenbusState(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1288,6 +1297,7 @@ FrontendSetXenbusState(
           XenbusStateName(State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendAcquireBackend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1334,6 +1344,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendWaitForBackendXenbusStateChange(
     IN      PXENVIF_FRONTEND    Frontend,
@@ -1379,6 +1390,7 @@ FrontendWaitForBackendXenbusStateChange(
             ULONG   Attempt = 0;

             while (++Attempt < 1000) {
+#pragma prefast(suppress:28121) // Timeout=0
                 status = KeWaitForSingleObject(&Event,
                                                Executive,
                                                KernelMode,
@@ -1437,6 +1449,7 @@ FrontendWaitForBackendXenbusStateChange(
           XenbusStateName(*State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendReleaseBackend(
     IN      PXENVIF_FRONTEND    Frontend
@@ -1457,6 +1470,7 @@ FrontendReleaseBackend(
     Trace("<=====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendClose(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1518,6 +1532,7 @@ FrontendClose(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendPrepare(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1880,6 +1895,7 @@ FrontendIsSplit(
     return __FrontendIsSplit(Frontend);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __FrontendUpdateHash(
     PXENVIF_FRONTEND        Frontend,
@@ -1961,6 +1977,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
@@ -2027,6 +2044,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2066,6 +2084,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2109,6 +2128,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2143,6 +2163,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2218,6 +2239,7 @@ FrontendGetQueue(
     return Queue;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendConnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2414,6 +2436,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisconnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2441,6 +2464,7 @@ FrontendDisconnect(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendEnable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2492,6 +2516,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2508,6 +2533,7 @@ FrontendDisable(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -2662,6 +2688,7 @@ FrontendSetState(
     return (!Failed) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2673,6 +2700,7 @@ __FrontendResume(
     (VOID) FrontendSetState(Frontend, FRONTEND_CLOSED);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2704,6 +2732,8 @@ FrontendSuspendCallbackLate(
     __FrontendResume(Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2756,7 +2786,7 @@ FrontendResume(
     Trace("<====\n");

     return STATUS_SUCCESS;
-
+
 fail3:
     Error("fail3\n");

@@ -2780,6 +2810,8 @@ fail1:
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2821,7 +2853,7 @@ FrontendSuspend(
     Trace("<====\n");
 }

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
@@ -2849,9 +2881,9 @@ FrontendInitialize(
     if (Path == NULL)
         goto fail1;

-    status = RtlStringCbPrintfA(Path,
+    status = RtlStringCbPrintfA(Path,
                                 Length,
-                                "device/vif/%s",
+                                "device/vif/%s",
                                 Name);
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -2863,7 +2895,7 @@ FrontendInitialize(
     if (Prefix == NULL)
         goto fail3;

-    status = RtlStringCbPrintfA(Prefix,
+    status = RtlStringCbPrintfA(Prefix,
                                 Length,
                                 "attr/vif/%s",
                                 Name);
@@ -3031,6 +3063,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 59d9718..e0b9069 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -56,13 +56,14 @@ typedef enum _XENVIF_FRONTEND_STATE {
     FRONTEND_ENABLED
 } XENVIF_FRONTEND_STATE, *PXENVIF_FRONTEND_STATE;

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
     OUT PXENVIF_FRONTEND    *Frontend
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
@@ -73,17 +74,22 @@ FrontendEjectFailed(
     IN PXENVIF_FRONTEND Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
     IN  XENVIF_FRONTEND_STATE   State
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -188,6 +194,7 @@ FrontendIncrementStatistic(
     IN  ULONGLONG               Delta
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -195,6 +202,7 @@ FrontendSetMulticastAddresses(
     IN  ULONG               Count
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -202,23 +210,27 @@ FrontendSetFilterLevel(
     IN  XENVIF_MAC_FILTER_LEVEL Level
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PULONG              Types
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -226,12 +238,14 @@ FrontendSetHashMapping(
     IN  ULONG               Order
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
     IN  PUCHAR              Key
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 783f49c..cfb6a64 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -220,7 +220,7 @@ ReceiverPacketCtor(

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     ASSERT(IsZeroMemory(Packet, sizeof (XENVIF_RECEIVER_PACKET)));

     return status;
@@ -578,7 +578,7 @@ ReceiverRingProcessChecksum(
         } else {
             Packet->Flags.TcpChecksumNotValidated = 1;
         }
-
+
         if ((Ring->OffloadOptions.NeedChecksumValue ||
              Receiver->CalculateChecksums != 0) &&
             (flags & NETRXF_data_validated)) {
@@ -824,9 +824,9 @@ __ReceiverRingBuildSegment(
         ULONG   PacketLength;

         PacketLength = Info->IpHeader.Length +
-                       Info->IpOptions.Length +
-                       Info->TcpHeader.Length +
-                       Info->TcpOptions.Length +
+                       Info->IpOptions.Length +
+                       Info->TcpHeader.Length +
+                       Info->TcpOptions.Length +
                        SegmentSize;

         IpHeader->Version4.PacketLength = HTONS((USHORT)PacketLength);
@@ -836,9 +836,9 @@ __ReceiverRingBuildSegment(

         ASSERT3U(IpHeader->Version, ==, 6);

-        PayloadLength = Info->IpOptions.Length +
-                        Info->TcpHeader.Length +
-                        Info->TcpOptions.Length +
+        PayloadLength = Info->IpOptions.Length +
+                        Info->TcpHeader.Length +
+                        Info->TcpOptions.Length +
                         SegmentSize;

         IpHeader->Version6.PayloadLength = HTONS((USHORT)PayloadLength);
@@ -854,7 +854,7 @@ __ReceiverRingBuildSegment(
         ULONG   Length;

         Mdl->Next = __ReceiverRingGetMdl(Ring, FALSE);
-
+
         status = STATUS_NO_MEMORY;
         if (Mdl->Next == NULL)
             goto fail2;
@@ -912,7 +912,7 @@ fail2:

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     return NULL;
 }

@@ -952,7 +952,7 @@ ReceiverRingProcessLargePacket(
     Info = &Packet->Info;
     ASSERT(Info->IpHeader.Offset != 0);
     ASSERT(Info->TcpHeader.Offset != 0);
-
+
     flags = (uint16_t)Packet->Flags.Value;
     ASSERT(flags & NETRXF_csum_blank);
     ASSERT(flags & NETRXF_data_validated);
@@ -982,11 +982,11 @@ ReceiverRingProcessLargePacket(
         USHORT  PacketLength;

         PacketLength = NTOHS(IpHeader->Version4.PacketLength);
-
+
         Length = (ULONG)PacketLength -
                  Info->TcpOptions.Length -
                  Info->TcpHeader.Length -
-                 Info->IpOptions.Length -
+                 Info->IpOptions.Length -
                  Info->IpHeader.Length;
     } else {
         USHORT  PayloadLength;
@@ -1035,13 +1035,13 @@ ReceiverRingProcessLargePacket(
             USHORT  PacketLength;

             PacketLength = NTOHS(IpHeader->Version4.PacketLength);
-
+
             ASSERT3U(Length,
                      ==,
                      (ULONG)PacketLength -
                      Info->TcpOptions.Length -
                      Info->TcpHeader.Length -
-                     Info->IpOptions.Length -
+                     Info->IpOptions.Length -
                      Info->IpHeader.Length);

             IpHeader->Version4.Checksum = ChecksumIpVersion4Header(InfoVa, Info);
@@ -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,
@@ -1853,7 +1859,7 @@ ReceiverRingFill(
         }

         Fragment = __ReceiverRingPreparePacket(Ring, Packet);
-
+
         if (Fragment == NULL) {
             __ReceiverRingPutPacket(Ring, Packet, TRUE);
             break;
@@ -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,
@@ -2377,7 +2385,7 @@ ReceiverRingWatchdog(
     rsp_prod = 0;
     rsp_cons = 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -2652,7 +2660,7 @@ __ReceiverRingConnect(
     ASSERT3P(Ring->Front.sring, ==, Ring->Shared);

     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
-
+
     status = XENBUS_GNTTAB(PermitForeignAccess,
                            &Receiver->GnttabInterface,
                            Ring->GnttabCache,
@@ -2870,11 +2878,12 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingDisable(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
-{
+{
     PXENVIF_RECEIVER            Receiver;
     PXENVIF_FRONTEND            Frontend;

@@ -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
@@ -3287,7 +3298,7 @@ ReceiverConnect(
             goto fail5;

         Index++;
-    }
+    }

     status = XENBUS_DEBUG(Register,
                           &Receiver->DebugInterface,
@@ -3434,6 +3445,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3493,7 +3505,7 @@ ReceiverStoreWrite(
             goto fail6;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -3518,6 +3530,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3540,7 +3553,7 @@ ReceiverEnable(
             goto fail1;

         Index++;
-    }
+    }

     Trace("<====\n");
     return STATUS_SUCCESS;
@@ -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,
@@ -3705,9 +3722,10 @@ ReceiverSetOffloadOptions(
             break;

         __ReceiverRingSetOffloadOptions(Ring, Options);
-    }
+    }
 }

+_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..5c03b94 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -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,
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index b46ccc3..bac3286 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer in the documetation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -943,7 +943,7 @@ fail2:
     Error("fail2\n");

     ASSERT3P(Buffer->Context, ==, Packet);
-    Buffer->Context = NULL;
+    Buffer->Context = NULL;

     --Packet->Reference;

@@ -986,7 +986,7 @@ fail1:
         __TransmitterPutFragment(Ring, Fragment);

         ASSERT3P(Buffer->Context, ==, Packet);
-        Buffer->Context = NULL;
+        Buffer->Context = NULL;

         --Packet->Reference;

@@ -1218,7 +1218,7 @@ __TransmitterRingPrepareHeader(

     Fragment->Type = XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER;
     Fragment->Context = Buffer;
-
+
     Buffer->Reference++;

     Pfn = MmGetMdlPfnArray(Mdl)[0];
@@ -1297,9 +1297,9 @@ __TransmitterRingPrepareHeader(

         // Fix up the IP packet length
         Length = Info->IpHeader.Length +
-                 Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+                 Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, ==, Length);
@@ -1320,7 +1320,7 @@ __TransmitterRingPrepareHeader(
         if (Packet->MaximumSegmentSize == Payload->Length)
             Packet->OffloadOptions.OffloadIpVersion4LargePacket = 0;
     }
-
+
     if (Packet->OffloadOptions.OffloadIpVersion6LargePacket) {
         PIP_HEADER  IpHeader;
         PTCP_HEADER TcpHeader;
@@ -1335,9 +1335,9 @@ __TransmitterRingPrepareHeader(
         TcpHeader = (PTCP_HEADER)(BaseVa + Info->TcpHeader.Offset);

         // Fix up the IP payload length
-        Length = Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+        Length = Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, ==, Length);
@@ -1362,7 +1362,7 @@ __TransmitterRingPrepareHeader(
         ULONG   MaximumFrameSize;

         MacQueryMaximumFrameSize(Mac, &MaximumFrameSize);
-
+
         if (Fragment->Length > MaximumFrameSize) {
             status = STATUS_INVALID_PARAMETER;
             SquashError = TRUE;
@@ -1958,7 +1958,7 @@ __TransmitterRingPrepareNeighbourAdvertisement(
     IpHeader->NextHeader = IPPROTO_ICMPV6;
     IpHeader->HopLimit = 255;

-    RtlCopyMemory(IpHeader->SourceAddress.Byte,
+    RtlCopyMemory(IpHeader->SourceAddress.Byte,
                   Address,
                   IPV6_ADDRESS_LENGTH);

@@ -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
@@ -2728,7 +2730,7 @@ TransmitterRingSwizzle(

     InitializeListHead(&List);

-    New = XENVIF_TRANSMITTER_LOCK_BIT;
+    New = XENVIF_TRANSMITTER_LOCK_BIT;
     Old = (ULONG_PTR)InterlockedExchangePointer(&Ring->Lock, (PVOID)New);

     ASSERT(Old & XENVIF_TRANSMITTER_LOCK_BIT);
@@ -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,
@@ -3344,7 +3350,7 @@ TransmitterRingWatchdog(
     Timeout.QuadPart = TIME_RELATIVE(TIME_S(XENVIF_TRANSMITTER_WATCHDOG_PERIOD));
     PacketsQueued = 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -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,11 +3925,12 @@ __TransmitterRingEnable(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
-{
+{
     PXENVIF_TRANSMITTER             Transmitter;
     PXENVIF_FRONTEND                Frontend;
     PXENVIF_TRANSMITTER_PACKET      Packet;
@@ -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
@@ -4220,7 +4235,7 @@ __TransmitterRingAbortPackets(
     while (!IsListEmpty(&Ring->PacketQueue)) {
         PLIST_ENTRY                 ListEntry;
         PXENVIF_TRANSMITTER_PACKET  Packet;
-
+
         ListEntry = RemoveHeadList(&Ring->PacketQueue);
         ASSERT3P(ListEntry, !=, &Ring->PacketQueue);

@@ -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,
@@ -4645,7 +4665,7 @@ fail2:
     (*Transmitter)->AlwaysCopy = 0;
     (*Transmitter)->ValidateChecksums = 0;
     (*Transmitter)->DisableMulticastControl = 0;
-
+
     ASSERT(IsZeroMemory(*Transmitter, sizeof (XENVIF_TRANSMITTER)));
     __TransmitterFree(*Transmitter);

@@ -4655,6 +4675,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER     Transmitter
@@ -4710,7 +4731,7 @@ TransmitterConnect(
             goto fail5;

         Index++;
-    }
+    }

     status = XENBUS_DEBUG(Register,
                           &Transmitter->DebugInterface,
@@ -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,
@@ -4848,7 +4872,7 @@ TransmitterStoreWrite(
             goto fail2;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -4861,6 +4885,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4879,12 +4904,13 @@ TransmitterEnable(

         __TransmitterRingEnable(Ring);
         Index++;
-    }
+    }

     Trace("<====\n");
     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
@@ -5227,11 +5257,12 @@ TransmitterAbortPackets(
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];

         __TransmitterRingAbortPackets(Ring);
-    }
+    }

     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..a5d9e4c 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -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,
diff --git a/src/xenvif/vif.c b/src/xenvif/vif.c
index 6f468ee..2cfd2f9 100644
--- a/src/xenvif/vif.c
+++ b/src/xenvif/vif.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -122,6 +122,7 @@ VifMac(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 VifSuspendCallbackLate(
     IN  PVOID           Argument
@@ -142,6 +143,8 @@ VifSuspendCallbackLate(
     FrontendAdvertiseIpAddresses(Context->Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnable(
     IN  PINTERFACE          Interface,
@@ -381,6 +384,8 @@ VifCallbackVersion9(
 #undef XENVIF_RECEIVER_QUEUE_MAX
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion9(
     IN  PINTERFACE                  Interface,
@@ -408,6 +413,8 @@ VifEnableVersion9(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion8(
     IN  PINTERFACE                  Interface,
@@ -435,6 +442,8 @@ VifEnableVersion8(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static VOID
 VifDisable(
     IN  PINTERFACE      Interface
@@ -511,7 +520,7 @@ VifQueryStatistic(
     status = STATUS_INVALID_PARAMETER;
     if (Index >= XENVIF_VIF_STATISTIC_COUNT)
         goto done;
-
+
     AcquireMrswLockShared(&Context->Lock);

     FrontendQueryStatistic(Context->Frontend, Index, Value);
@@ -1205,7 +1214,7 @@ VifGetInterface(
     }

     return status;
-}
+}

 VOID
 VifTeardown(
@@ -1236,6 +1245,8 @@ VifTeardown(
     Trace("<====\n");
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
diff --git a/src/xenvif/vif.h b/src/xenvif/vif.h
index e9d38a5..379ccc3 100644
--- a/src/xenvif/vif.h
+++ b/src/xenvif/vif.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -63,6 +63,8 @@ VifTeardown(

 // CALLBACKS

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
--
2.51.0.windows.1


--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Thu Oct 09 09:33:20 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Oct 2025 09:33:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1140436.1475325 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6n1R-00011B-Na; Thu, 09 Oct 2025 09:33:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1140436.1475325; Thu, 09 Oct 2025 09:33:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6n1R-000114-L3; Thu, 09 Oct 2025 09:33:17 +0000
Received: by outflank-mailman (input) for mailman id 1140436;
 Thu, 09 Oct 2025 09:33:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PeM1=4S=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1v6n1Q-00010y-Ua
 for win-pv-devel@lists.xenproject.org; Thu, 09 Oct 2025 09:33:17 +0000
Received: from SN4PR2101CU001.outbound.protection.outlook.com
 (mail-southcentralusazlp170120001.outbound.protection.outlook.com
 [2a01:111:f403:c10d::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id faae6760-a4f2-11f0-9d15-b5c5bf9af7f9;
 Thu, 09 Oct 2025 11:33:15 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by SJ0PR03MB6488.namprd03.prod.outlook.com (2603:10b6:a03:397::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Thu, 9 Oct
 2025 09:33:10 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025
 09:33:10 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: faae6760-a4f2-11f0-9d15-b5c5bf9af7f9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EEz4Zq3a5CgEpzZIEIHPTM6V2V+98S1sNuy/NMguUrr4B+uYZOOOWQzRnr+ayMJqW5SM8D20BXMwDHhEn9o9goJcEqbkIwkHq99w7V/3DxKyIQAceRlmyyH5+uuu42tDjKlLaPFr6So8BN9Haz4tKVHEWIwcWMtEQ7t0re04wxZ1xoOMTHP9nbUPczk7J6m6/J2MwGWJBewwbAmcnytoUVIXDmbs/gMQGVKqeC+SKEFd3LAvLuEvkHVryxFoe9pjOVFktkcUu7QTbu6IUTw/If8kg7bfCte4Y1a5NsZkCwtftftXoQdNTXwQcbZ1vIBNqRWqoGWfkzzN+VzEQTxgcA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=PdQehMqiKwX3bcW/3CIMI8Hq/prfLC26QWi5oyYEghI=;
 b=GoS4R0MCSKX41GGYr0QQmr175mYOEvloxZSMrBmECaV7m0gD8FwXfV2Ng1s9IWjn8t0zj58/vJAs3Mu4FhHpz4LldVVj7LEwwU6v5CreFfLGEKS0X1VgVgKFjRdtbdmQBMi5bM8LZH+C+Na+uCI9RIiI/OcqEsDCpT2roaEmFWO18hdLrm2l6mG19JqxmyO9O22mGw5hVbkZJPynI0HJWixF6uwDu6lEJ8iJto94rRgYtFdnbpwhd0usygY7So1DTyHew1BSUwUbxGkhWmCsCimg29xe62+FrlUUycbAex/e574oNbC8gaYc2dXpXMs5SsxYZO4vGr+yKMw3ylZKQQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PdQehMqiKwX3bcW/3CIMI8Hq/prfLC26QWi5oyYEghI=;
 b=cf+Irv/BPio2bbE0Vlj+d7VUmCX8SS5IGgydv/eZDNlBdvrGvavfqYaPaUo2a4c/0PU5nthG2BHyNRk04x+7Tyme9Kc65berJ8cDNpiTKNKBJshWjOVKBTL59APNROGCFrwEzTjQD8D9d9LSPzclFP+Uy1/Igs0DvSRG5LfY+Cg=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@cloud.com>
Subject: Re: [XENNET PATCH] Remove stubs for optional miniport handlers
Thread-Topic: [XENNET PATCH] Remove stubs for optional miniport handlers
Thread-Index: AQHcOFLY+pbLp5xqeEOzLhDripaWsLS5n3Q7
Date: Thu, 9 Oct 2025 09:33:10 +0000
Message-ID:
 <PH0PR03MB711659BC3126DF1F2ED48734FEEEA@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251008125524.1559-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251008125524.1559-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|SJ0PR03MB6488:EE_
x-ms-office365-filtering-correlation-id: 955349c2-3df9-4d95-d715-08de0716dcce
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?7fc8s/LDDH4HhaIa4NQI7Ct/+VL2QMb5dvFJ6u3zKGhe314FWzARFV88NGWa?=
 =?us-ascii?Q?8+zVafgW1MwGFiK480gBZTFUCCTmFln+hj/kMmyseg1eo0HalILQ0O1swr2x?=
 =?us-ascii?Q?ulDUfqa3PPFTXalI5YdVI6CQA2rX7KXaMqEu0UG8flPhdJGNwEyHQXqpGlUW?=
 =?us-ascii?Q?lFSXoHc5Rofr5iDI1WkUVW+7RQMgvXWtIGEqSGvMms74Tl1My6oKatqGXpGi?=
 =?us-ascii?Q?P54JpkFpwcTCMLSQ7DEPhkXqyvS4Kj7aGP4MVqX9lJKOs4wiHJAZEP5zWC0F?=
 =?us-ascii?Q?bEXmnqDKI89sb5Ji6nf3zPmiIvWvP6QZOdGlcGZlXcIZGPNzYgVMgG/ih44e?=
 =?us-ascii?Q?aNtckLhP1xlX+Ybm+IhkWRPueyEy2pnJZbqo1Wl46UeFn9sHC9+dFfvpzik4?=
 =?us-ascii?Q?MCyDcc82ACskkITgJ785/nC+b82piJHM468qtEvdTEB+cFRGQ1nlKR9tnFsv?=
 =?us-ascii?Q?ThaPclLVuF4HleIswyqafPfNpnbIO/wI2+gnlByXx1R6aaNvRht2DqwN8/b4?=
 =?us-ascii?Q?tNLfqaqBz7WLbMcnrjjOoOXia8Kr4TO6hVTcU3KZ3scbTbPu9Bmvg6CSQiMW?=
 =?us-ascii?Q?vP96YNdsg2XR3rclpIZbNla92edgWnxZ7YqxB/iuwKUdx7l/ydAIif8dLWdo?=
 =?us-ascii?Q?aSleTHZeHMzJ8CnFQWREiPBOMkPzKElw9B4gMXzYtvJgo40WqpuSMtQN5nTM?=
 =?us-ascii?Q?kuccHvAIPRIS6kCVEkgmGHeonE9CU7QVIVVCrwG1Jmce/4+iKzr10OUBOP2U?=
 =?us-ascii?Q?+vk6rKW4mzQpBT/QjRrmDT74VETb0TWj0sTsduRxGk0X1e4uWfALdhJMS8l1?=
 =?us-ascii?Q?Vir6SQFamoxrIYvHC1HV8fw52SBq7L2DEix5YF25zDTKKBgIBNuCVMv05m61?=
 =?us-ascii?Q?bQMEq1FEuKa83FEAhxstDSBcOPvyy65+pOt8hJJylsscFGB7BIJqhgJvAzQJ?=
 =?us-ascii?Q?gPTRxOXEXfLhCqEb6Aycri4RczuQw1UfWZiH6i3HrLF44rOlkSWwUzAjRsE+?=
 =?us-ascii?Q?IcuP+kdA8I5hhY0bhCzpVSkyDUbpxh2zE/DQZdhHGrJNcZg/8/EUoXNKJfrF?=
 =?us-ascii?Q?7iIQjT/+/hULMGoW0DOl+gfz2d9WF8X6iAcAxHoK4hY0ZkyvyiQNWbtL0ti8?=
 =?us-ascii?Q?gHDsESRoqpfuuDIv+yAYqX3hkwtr807dfZimkvMsTvCAV6+xVasP3iLXu0j0?=
 =?us-ascii?Q?XZNRTRvdj0aic/h2OfNr7bjV8xpYX2U08lnmV49O2uVa47q0CFR6pf5G3ouL?=
 =?us-ascii?Q?vi4BDJqf5sfclPlkMT4J0bZnnwLlXRNtdRe/5OQO+cLBdmmsjlCgdm1iBbZ2?=
 =?us-ascii?Q?uA8KmCBpk7u7XiV59aHEExBoOg8R4/8GJTyxvSnnn7kWNeIg5VdKuLY93MfT?=
 =?us-ascii?Q?LVh0G1FQE7CiaEjNvTodB9CHubaujYs5JKB7mLGi6kSSmNglK90acC+3eaqB?=
 =?us-ascii?Q?7mqTiJVIQASen0wh9FxGZU4CSSnkhFeR?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?R+gPDuWrAAdvfTE8nJeW1ulITIZYxYm8dLtfQ8V4NnQNeH0KpwAFdaGSAIsR?=
 =?us-ascii?Q?vCbpsF4rpdsuRYUk4XiMVJ2Tc133ilRpIaiYMauVoeGLjPK4kIbk1DAe4SHG?=
 =?us-ascii?Q?c6C1Hpi7GkfM+6l2eOUmMsFe9JvHViKP9OOerSpuGUou+eK8DI/SrkLNVot4?=
 =?us-ascii?Q?0Ik5y1wBJenK7ZK5cvTyRXKFiIUtFiMuc44yF7Ej5L53hno3+AQAoSfqvwI6?=
 =?us-ascii?Q?RmvNn9CeStrxfc012xTQ/m57Jw1/jVHEs0wdOahvg/JFwFVs8hBbPdVpJB/X?=
 =?us-ascii?Q?dGismgZoTl9E1fbDyDgQPAglW08Ixf5zXlxHDoh9zfP8GOsTzrPmms9tzz5o?=
 =?us-ascii?Q?zx0DMWedHXqJXY+WiI5jcW6GL3md4QXCFtwsBb4wh+KV51TYQr8NHxbMie8P?=
 =?us-ascii?Q?Oq19yaA1aafGbEGBpwaR44pobBl8IkyWXepbThBRDu6yEhoc/KbILhRXF8He?=
 =?us-ascii?Q?n8opvM0ZOF14oYIIWIl4CU6d+IIY9Umr0tRG/3I2lGGrNG+HCza6CeH9PQju?=
 =?us-ascii?Q?wZD7aWscTmKMmp8RVHGdEBvA4J+eh6TA7GSiiMTGDidYaWAycUeoH1bzQj9Q?=
 =?us-ascii?Q?ZL6t/mE9nx6zIrT5KoJ0U5Rv7pxZPywAdf0DrEsLIo3RWTImxTAi11Ndqzdp?=
 =?us-ascii?Q?pQ4o8NXjTsotI0FR46GRmfjToNbGhAObf1t8Swfaa/0KQ/U1sX+0qJIt/J+h?=
 =?us-ascii?Q?6+bxD74G3RbX16/7F35eO3e1dpbTFWl+cLDk4xageOGU5fpWb3GDizPDBMxH?=
 =?us-ascii?Q?f/HOf7ykquYByVqsrMMZavSA4/9tVwIkCFrHDjj7FFkiNIbkr1JqLuEueHZx?=
 =?us-ascii?Q?3/ifTltZcGmNeBOEFRQ6N4K4aDBSY1BTAq57MAPQgN+gXKpq1teQD7el13v/?=
 =?us-ascii?Q?iYdF5wKsz2B5BD6Q6kBfnqGZ2W1eP9sjFwFAIrBf7/uuEaZa9WN88tVnWuT/?=
 =?us-ascii?Q?JBKvoRA2Yo/jdfhIac+uu+7hV9fBqEFmAyGLgFEONd8Tsf+g4YJoVu6PR9ed?=
 =?us-ascii?Q?gDMyB7ouS77rmt8ftgtnB8sY9c0hfYTRu9iZHfJMsbKmZunP6bvqAZstM0sg?=
 =?us-ascii?Q?Q/6TuNxMz0AHV6ttDOP9Rdey/nmvA5PWQQwX6+lTUVGWUC+pFRNf5/qoBnBu?=
 =?us-ascii?Q?OrD4SN5lHwaXXiBaz4CSPIDP4cthRM8q/7y+HACzP65UUTgCdvwEBU8C1njP?=
 =?us-ascii?Q?wqA/hXqApepEQByov4kH08J7MTSXCps5H89opxSbiueeGBrlOkz7weRLSWq+?=
 =?us-ascii?Q?3GprpFkzZ5O41H3oly+aPW2XuFvCUPNmNKhMC9oOo2xBDxTXrw1T/TruQS2t?=
 =?us-ascii?Q?HElQIfwkauNVB7cIiepUwlc+S1jzNGw7igsp28B0Jf9ANA9UcSo7QGC9mQMh?=
 =?us-ascii?Q?faaJvV60yVRgoIBFhUi44uzkWb4m0ZBMr9m//EMVCYb3NjPRDV+BTmCDD05g?=
 =?us-ascii?Q?gNiKLBo0+VJOvMXU42gnZnYrWgxmxE+FFsv4iSDWsmuJC5VkeOX5PCPsdUc5?=
 =?us-ascii?Q?TmcCoYViv+BQpDdY5/nsp+zC48Qs1SjlbNLs6bzC+RBUSLre8Bp4uVozMC2T?=
 =?us-ascii?Q?MxJYQOzktNOGX2f6bvBKlaKezJac0nAnG9TUqJyK?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 955349c2-3df9-4d95-d715-08de0716dcce
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2025 09:33:10.8255
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 0Az0lKQxuzGs5R7T5F6TOZOTGzmqRBH+WSU8QES1UHhi8zNrHPUJJexo2BV0YdGpxFjcPchQug0xf4fIJjGewg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6488

Reviewed-by: Owen Smith <owen.smith@cloud.com>

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 08 October 2025 1:55 PM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh; Owen Smith
Subject: [XENNET PATCH] Remove stubs for optional miniport handlers

MiniportCheckForHangEx, MiniportResetEx, MiniportDirectOidRequest and
MiniportCancelDirectOidRequest are not required by NDIS.

Just don't provide the handlers instead of providing stub do-nothing
handlers.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xennet/miniport.c | 59 -------------------------------------------
 1 file changed, 59 deletions(-)

diff --git a/src/xennet/miniport.c b/src/xennet/miniport.c
index 250b090..3ec76a9 100644
--- a/src/xennet/miniport.c
+++ b/src/xennet/miniport.c
@@ -222,35 +222,6 @@ MiniportCancelSend(
     UNREFERENCED_PARAMETER(CancelId);
 }

-static
-_Function_class_(MINIPORT_CHECK_FOR_HANG)
-BOOLEAN
-MiniportCheckForHangEx(
-    IN  NDIS_HANDLE MiniportAdapterContext
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-
-    return FALSE;
-}
-
-static
-_Function_class_(MINIPORT_RESET)
-NDIS_STATUS
-MiniportResetEx(
-    IN  NDIS_HANDLE MiniportAdapterContext,
-    OUT PBOOLEAN    AddressingReset
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-
-    Trace("<=3D=3D=3D>\n");
-
-    *AddressingReset =3D FALSE;
-
-    return NDIS_STATUS_SUCCESS;
-}
-
 static
 _Function_class_(MINIPORT_DEVICE_PNP_EVENT_NOTIFY)
 VOID
@@ -299,32 +270,6 @@ MiniportCancelOidRequest(
     Trace("<=3D=3D=3D>\n");
 }

-static
-_Function_class_(MINIPORT_DIRECT_OID_REQUEST)
-NDIS_STATUS
-MiniportDirectOidRequest(
-    IN  NDIS_HANDLE         MiniportAdapterContext,
-    IN  PNDIS_OID_REQUEST   OidRequest
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-    UNREFERENCED_PARAMETER(OidRequest);
-
-    return NDIS_STATUS_INVALID_OID;
-}
-
-static
-_Function_class_(MINIPORT_CANCEL_DIRECT_OID_REQUEST)
-VOID
-MiniportCancelDirectOidRequest(
-    IN  NDIS_HANDLE MiniportAdapterContext,
-    IN  PVOID       RequestId
-    )
-{
-    UNREFERENCED_PARAMETER(MiniportAdapterContext);
-    UNREFERENCED_PARAMETER(RequestId);
-}
-
 NDIS_STATUS
 MiniportRegister(
     IN  PDRIVER_OBJECT                      DriverObject,
@@ -366,20 +311,16 @@ MiniportRegister(

     MiniportDriverCharacteristics.CancelOidRequestHandler =3D MiniportCanc=
elOidRequest;
     MiniportDriverCharacteristics.CancelSendHandler =3D MiniportCancelSend=
;
-    MiniportDriverCharacteristics.CheckForHangHandlerEx =3D MiniportCheckF=
orHangEx;
     MiniportDriverCharacteristics.InitializeHandlerEx =3D MiniportInitiali=
zeEx;
     MiniportDriverCharacteristics.HaltHandlerEx =3D MiniportHaltEx;
     MiniportDriverCharacteristics.OidRequestHandler =3D MiniportOidRequest=
;
     MiniportDriverCharacteristics.PauseHandler =3D MiniportPause;
     MiniportDriverCharacteristics.DevicePnPEventNotifyHandler  =3D Minipor=
tDevicePnPEventNotify;
-    MiniportDriverCharacteristics.ResetHandlerEx =3D MiniportResetEx;
     MiniportDriverCharacteristics.RestartHandler =3D MiniportRestart;
     MiniportDriverCharacteristics.ReturnNetBufferListsHandler =3D Miniport=
ReturnNetBufferLists;
     MiniportDriverCharacteristics.SendNetBufferListsHandler =3D MiniportSe=
ndNetBufferLists;
     MiniportDriverCharacteristics.ShutdownHandlerEx =3D MiniportShutdownEx=
;
     MiniportDriverCharacteristics.UnloadHandler =3D MiniportDriverUnload;
-    MiniportDriverCharacteristics.DirectOidRequestHandler =3D MiniportDire=
ctOidRequest;
-    MiniportDriverCharacteristics.CancelDirectOidRequestHandler =3D Minipo=
rtCancelDirectOidRequest;

     NdisStatus =3D NdisMRegisterMiniportDriver(DriverObject,
                                              RegistryPath,
--
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From win-pv-devel-bounces@lists.xenproject.org Thu Oct 09 09:59:50 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Oct 2025 09:59:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1140450.1475329 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6nR6-0003Uh-Hw; Thu, 09 Oct 2025 09:59:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1140450.1475329; Thu, 09 Oct 2025 09:59:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v6nR6-0003Ua-Es; Thu, 09 Oct 2025 09:59:48 +0000
Received: by outflank-mailman (input) for mailman id 1140450;
 Thu, 09 Oct 2025 09:59:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PeM1=4S=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1v6nR5-0003UU-Dw
 for win-pv-devel@lists.xenproject.org; Thu, 09 Oct 2025 09:59:47 +0000
Received: from PH0PR06CU001.outbound.protection.outlook.com
 (mail-westus3azlp170110003.outbound.protection.outlook.com
 [2a01:111:f403:c107::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id acfb6ecb-a4f6-11f0-9809-7dc792cee155;
 Thu, 09 Oct 2025 11:59:43 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by BY5PR03MB5187.namprd03.prod.outlook.com (2603:10b6:a03:226::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Thu, 9 Oct
 2025 09:59:33 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9203.007; Thu, 9 Oct 2025
 09:59:33 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acfb6ecb-a4f6-11f0-9809-7dc792cee155
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yzyXClPdyQWgXKSdhD5CoAgzYyqmrVHlUawfqWSa8nAHHi0kxp2YdwR/j/zIaScijFZ35XV0tpOrFpXHIc8BSznUfMe8wiCk5q+mTYx8o9GkLnZcLbVC/QcMkzV9Gs5H71vEq/plBpVjHt08AJhZeIMHdzo7IbkD4uxinhdyKMpzWWPxduP7oLKsKEyGmvsY2ho7haYA0pTnw9/dZXgXckKC6BMryyAJBZfDkcAi9amtjtU7SVgagD3KyUXgSvyFiiH813wpDG+UBCkhvto5Wqxzpk2zv4hUzC1n+7kFikTbRZxKUnyuS9Oe/qoaRqwotL3py1oJSrVJM571HA+r7g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=BoThqXe4kPdP8dAuHSrJaS1XJN3WdvuGr+0OPe1EjiI=;
 b=OWGJfXSV/gTLSynOJenn5USrzu5bqVJrfzcwidjVn7FU78xBYNICLCfXmEXQIQ6lmF71dauLcJLUxR8yLGmwNKbA6sItUFH3wi7zXs7l8fgh5LTUIv5XXGm6DPLsNR9nvvJ9+MM8vFaZajk4Ce05jVRMaobZj4RMFiz4FaRXKPCtl1QM4jipOyNT9CjreAlQx8AmiG6/r8V1z1PPF2rU05qeCRBPMrTYCfd0W1RMCEa1JusP5aVIc4nkAy8pBr47URrjbk0bO6xd6UIudp/0B33yCO6YtOi+HoBoVtxTHjcdgeyR2UOBKq1qpVqdAJM1g60VpkSPYw9EFHJztmaTlQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=BoThqXe4kPdP8dAuHSrJaS1XJN3WdvuGr+0OPe1EjiI=;
 b=HIHUXW7lzwRyowtZJjRt4ggU/1XVxubnY6Tryt/wix6jsLVYYzuzyBZkjEL6U9/YJB2GHQ02XJ5w1iuaMZEpka8tkI2k6hMOq769zdJRccPGiBA+ulBjYfR1fvZZfJn+2RPONEyh0Kh3XwoG9LHVBkdoR7+RguL+/KvVJaetbZo=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@cloud.com>
Subject: Re: [XENVIF PATCH] Map out IRQL annotations
Thread-Topic: [XENVIF PATCH] Map out IRQL annotations
Thread-Index: AQHcOFNIFtAX6agVnUSzv7+AymA/lrS5pC6K
Date: Thu, 9 Oct 2025 09:59:32 +0000
Message-ID:
 <PH0PR03MB711693882C59D778BA315D0DFEEEA@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251008125833.1101-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251008125833.1101-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|BY5PR03MB5187:EE_
x-ms-office365-filtering-correlation-id: c7282565-2786-4886-6144-08de071a8bd6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?e+Qn1K1kjLPFtzeGE/bo559EXhki+fXil3xOR92frCDJB0dxaQS3YJo6KV/g?=
 =?us-ascii?Q?oqOfUQHO07k3QvLgJlzPpsHA+QpMHyF4NhzeqcO1UYIbabwvuXkPsMTfuQ/a?=
 =?us-ascii?Q?8tEfC7vduNwWpJ0HZZerxASFxh9xnFozdNL2CQJKHkFaUJJBGm67wL3scrGT?=
 =?us-ascii?Q?BZUE8gXgkDifs8j/jNgmWx1CeRtRrq5YJE2wHwwcYEdl/VCdb8ByBkOJEeP3?=
 =?us-ascii?Q?HnM79ezLVtrVuXnVAEn6RM00iFpOHWS6OfOueTonvsxlvBWyKqd1kZVWdHrc?=
 =?us-ascii?Q?8szaR1aDa+p0Ji191DlD6Tc6Ya+/FeMXbm3SkfiSaAwn9EyUy1XLZWyw3Pi5?=
 =?us-ascii?Q?PVAAMpOEHyJrrls867IcZ4UG3vStWl1z86FULCNHP/p12Ludl/zGzMjXIdrh?=
 =?us-ascii?Q?z1EWM3KcAncAi+6z1T1Sp9SE2FN9UFFzet3NgE2FuEzoWUuA7v+x8cXIrzcF?=
 =?us-ascii?Q?j42ECOvG9Hcijj9xAwJOaR/ouVnZFeuoZIMY6/AU9ZhFtpayQ/X5RUajQ0W4?=
 =?us-ascii?Q?c0vkCbRe9Tri9fAqwT57nA2hMP1CUyjHWVMxBVdOCYBG3EEyPb/1606EqyFa?=
 =?us-ascii?Q?QnvbgxrK1mOm0L1qk5OU4j8OgftSYU8JnVBwDi07qdoDWlrugbLcI+PDczXP?=
 =?us-ascii?Q?PGgkSZN9BtYyTGsSWHVqQStDqgAO0lrSLrQk3nMLZNTWu+pCPolGPvNvRaP8?=
 =?us-ascii?Q?pv/yQAXSDb6+72rrRnVsUkRQPJjSTn3XDPHFhct/t/l+JheLzJ37O2LWeMGG?=
 =?us-ascii?Q?yk1Ff0CwmLjPLhzh85E7lkI7mU8awwSSqQ6bNJ+16IlrAyIXOI3e3lEsvwuO?=
 =?us-ascii?Q?DLAmSCsChrAM8xGQ74rvrxZWFr8xC2fjEmmDznwtEDDdhGrzftxHjpCGHbJz?=
 =?us-ascii?Q?XpX7YxX4Gtyiog6N+pbqw2jKTVxkgS5DdUFlv23LX2/0JgBKiEbrBfI0OjES?=
 =?us-ascii?Q?CRA6QijWOGIV0l4rO94yrTcONhRv4XehfTJXVcpdU1aEjZLRN3vuU2ds7m7m?=
 =?us-ascii?Q?FQL8xJR0Rzy2WFiBQ0ma7Et2S26p2lkamp5h1VsfpG98YpMYZ4bGXi6RmMsl?=
 =?us-ascii?Q?uF9pCdFgNLi9PP2S28aO2sTPJcaQTvBiZTPPCul5IhykdQ96neEuu34oLXE1?=
 =?us-ascii?Q?TUott+ZwTHuQm/GpvprbgASqiY8nKlp00retDbt00DsuBLgeKxEqUmlO1JsV?=
 =?us-ascii?Q?gWnYEp94C/FKDVoHfdGbSAI3Yn6UoD6Sk+EKvxiR5TXdlqhymutBJMY91iDJ?=
 =?us-ascii?Q?djyBOVQ+jfW/3cuYOCvnKT9xfTR28MZf2sTH0n9QUb31gCzEr1Zi7m0hHqbx?=
 =?us-ascii?Q?I+duJ7YRkKw9aeY8bzeFNR93wfT8/bqxIhJWUbb/t8eMbI+4IiEL2BuO/vdJ?=
 =?us-ascii?Q?NPQaJEbjoRJD65rZL7zVXmAwdgsVretLRe9fVRRvPXcleGPK+U6b9qm8S9ed?=
 =?us-ascii?Q?Ykx87EwCqiV7IqbDMjnlZygvs78uLvXq?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?4dHf6yeaHJSghbiXi9AxcP5lnD02DBcYlwMCotk1ZodG1q8EJByeNxvoDxM7?=
 =?us-ascii?Q?hrdF28U53/wn+XldKWQWga9BVy7kDbJi7JlxMglTYFd7QsRdY0imaUKCEQwW?=
 =?us-ascii?Q?t2YZAiTCdkJOItKDxZKfKt/L7xslxqaaF4h7CR3wHkZAQxbma9mdi8VmaZzI?=
 =?us-ascii?Q?9SK5tRDbNCHgqaku5FQPCNrq4jM9isiJJmFnkFUDHDR6oS3HtWXnIix/OJb3?=
 =?us-ascii?Q?IxC1EWPsm+GjmUwbPg/BWZblx+bd5ZxSUqt6L2O6kWCNtrH5JWi/ATGEwZQr?=
 =?us-ascii?Q?Yc1teKcFsujkE+TbmJaVaI77boHHHwh9j09YkSzwz8ELYBd1ege5W/Bs4WwV?=
 =?us-ascii?Q?wRtYWEIcxBnhiwZqxkuNAOmdcFuTDM2LEbBBh5SwOK/eJaMu2sRYkCZ+hVf4?=
 =?us-ascii?Q?ntT1vH9e4iskWmtLfrQLjBISqaQeN40T4X39WAv695kDVvWeop+7OVzp/8ox?=
 =?us-ascii?Q?DBXenzT/bM4VrvTt4aVO0LrC6HMTxNkJL76RdIocpVqd9O50U60LisVr1/ZO?=
 =?us-ascii?Q?kkTNQP59smyiD85ZERatuYZ6gHKolvEZa9GP4/cO/B2vbJcNuP9rxdkve7Op?=
 =?us-ascii?Q?DtzygjQScViDZ5BhVmNfEhyp6BUyBUqpo4ADufjPzHXhhJIlirC2kmx4GUgD?=
 =?us-ascii?Q?/D8LlD3eilZCuwyJb/LyrjrT1pxMYwlN2DDOjAlLGC/1w3BpS2E3QCjGo4qd?=
 =?us-ascii?Q?3bMRlqqy8WuNux/G5hnYGw2ee4QkMI7bh3g/Km8RTUFIvn3ZPyVKUYjXGSAe?=
 =?us-ascii?Q?zzEg9fA5v70yjWRfqTmCD/mwd8Tg9pVj8x6VZ0iHBAZak9t6mThnsdx3ktpt?=
 =?us-ascii?Q?tudpbtcQmGn25PLwnbpOI1bsQtlxicP3TYF5lN17Oa/CsoGgULosLXJvW1+m?=
 =?us-ascii?Q?WL1ceZ48qSZ+9OA5Ff8WQGDUTzqtakxia9Iy+RFM14qgFrDYoYUPkbw7cqQN?=
 =?us-ascii?Q?qhcudcFUN6oBo87eVlHHOW4lFZbcLrQLpdAilfqxrpF/0/mgFhZuJh7/eKGF?=
 =?us-ascii?Q?tkD5MI2shDj43xZekgFTTktmjR2VeYk0rb0HjF4EfgrmTsWP5ADTkcd/Gcm+?=
 =?us-ascii?Q?tG/jxwpTFyEV/TP2ojFjrTCWpibYyTmCogEEgIX7J2UMMfkwdCu9bpI1shzR?=
 =?us-ascii?Q?WAMjDsjQScuSVKZcV/t3ZWFrnvXo3uQEAPy1YJDnKzKBbS+g6J95zNskILjb?=
 =?us-ascii?Q?EJY1+bbb1cIrLI3vnP+OA9nO1b1dMqlLdUNM8C78+dp7sYihMBe8I8hwFwmq?=
 =?us-ascii?Q?kEj4uTOCGKkTopwHdN/Xsgam5fkoNP0b1WWmE9A5e92Z5jFdcw5g104f0BiV?=
 =?us-ascii?Q?YDUc6/PbdHyKpMZktCplZQ4lFvMcNwrORBhXFGmYnoYwCMX5pq7mWwiJnds+?=
 =?us-ascii?Q?fjlzScyKjDdTaN5ZYpQPzSChYSV+h49w7JQIxxxRV/F0AElk+uh16h1a2VCc?=
 =?us-ascii?Q?kXPwXsQR+R7O6/vy0iQXWY4WUvw+1CG/+2RcSxVR+wigeIyq5fxNSN+6ERKP?=
 =?us-ascii?Q?DGS+dQolJhkmnxH9bzmvdGiGaKU5zqpSqga16oUIPdZvbbk36uG5jK648zgK?=
 =?us-ascii?Q?2aNciKsqo/OOkQ4kTO16Eul6xfniHwgs5skJ6DWh?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c7282565-2786-4886-6144-08de071a8bd6
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2025 09:59:32.9320
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: dSw2wbBhl7Ahubei6vUzjZoCVQQOTBYolvKNBCvuTaOsX0DLfsVqqRlM/WG0j9GbwUC5q6kaU42/weZKWTkPCg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5187

This patch doesnt apply directly to the head, and there also appears to be =
several chunks that make no actual change - notably in the license comment,=
 and several code chunks that appear to remove and insert identical code

Could you break up the patch into a series with a patch per file pair (.h a=
nd .c)

Owen

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 08 October 2025 1:58 PM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh; Owen Smith
Subject: [XENVIF PATCH] Map out IRQL annotations

This is an initial, exploratory work to help inform the rework of
the controller interface.

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/controller.c  |  16 +++++
 src/xenvif/controller.h  |  12 ++++
 src/xenvif/frontend.c    |  97 ++++++++++++++++++---------
 src/xenvif/frontend.h    |  62 ++++++++++-------
 src/xenvif/receiver.c    | 132 +++++++++++++++++++++---------------
 src/xenvif/receiver.h    |  64 +++++++++++-------
 src/xenvif/transmitter.c | 140 ++++++++++++++++++++++++---------------
 src/xenvif/transmitter.h |  63 +++++++++++-------
 src/xenvif/vif.c         |  61 ++++++++++-------
 src/xenvif/vif.h         |  48 +++++++-------
 10 files changed, 441 insertions(+), 254 deletions(-)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ae86837..e032972 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -137,6 +137,7 @@ ControllerReleaseLock(
     __ControllerReleaseLock(Controller);
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ControllerSend(
     IN  PXENVIF_CONTROLLER  Controller
@@ -177,6 +178,7 @@ ControllerPoll(
     Controller->Shared->rsp_event =3D rsp_cons + 1;
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerPutRequest(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -248,6 +250,7 @@ fail1:

 #define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerGetResponse(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -318,6 +321,7 @@ ControllerGetResponse(

 KSERVICE_ROUTINE    ControllerEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 ControllerEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -345,6 +349,7 @@ ControllerDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -390,6 +395,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER      Controller
@@ -597,6 +603,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -670,6 +677,7 @@ ControllerDisable(
     Trace("<=3D=3D=3D>\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
@@ -732,6 +740,7 @@ done:
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
@@ -762,6 +771,7 @@ ControllerTeardown(
     __ControllerFree(Controller);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -802,6 +812,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -842,6 +853,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -882,6 +894,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -976,6 +989,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1016,6 +1030,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1056,6 +1071,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/controller.h b/src/xenvif/controller.h
index b14e066..18e09b7 100644
--- a/src/xenvif/controller.h
+++ b/src/xenvif/controller.h
@@ -41,17 +41,20 @@

 typedef struct _XENVIF_CONTROLLER XENVIF_CONTROLLER, *PXENVIF_CONTROLLER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_CONTROLLER  *Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -68,34 +71,40 @@ ControllerDisable(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -103,18 +112,21 @@ ControllerSetHashKey(
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index bcea522..14fb87e 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -378,6 +378,7 @@ FrontendIsBackendOnline(
     return Online;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendEject(
     IN  PXENVIF_THREAD  Self,
@@ -451,9 +452,9 @@ FrontendEjectFailed(
     if (Path =3D=3D NULL)
         goto fail1;

-    status =3D RtlStringCbPrintfA(Path,
+    status =3D RtlStringCbPrintfA(Path,
                                 Length,
-                                "error/%s",
+                                "error/%s",
                                 __FrontendGetPath(Frontend));
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -823,6 +824,7 @@ FrontendIpAddressChange(
     ThreadWake(Frontend->MibThread);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendMib(
     IN  PXENVIF_THREAD  Self,
@@ -834,7 +836,7 @@ FrontendMib(
     NTSTATUS            (*__GetIfTable2)(PMIB_IF_TABLE2 *);
     NTSTATUS            (*__NotifyUnicastIpAddressChange)(ADDRESS_FAMILY,
                                                           PUNICAST_IPADDRE=
SS_CHANGE_CALLBACK,
-                                                          PVOID,
+                                                          PVOID,
                                                           BOOLEAN,
                                                           HANDLE *);
     NTSTATUS            (*__GetUnicastIpAddressTable)(ADDRESS_FAMILY,
@@ -887,7 +889,7 @@ FrontendMib(

     Event =3D ThreadGetEvent(Self);

-    for (;;) {
+    for (;;) {
         PMIB_IF_TABLE2              IfTable;
         PMIB_UNICASTIPADDRESS_TABLE UnicastIpAddressTable;
         KIRQL                       Irql;
@@ -981,6 +983,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1093,6 +1096,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendNotifyMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1147,6 +1151,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -1188,6 +1193,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1231,6 +1237,7 @@ FrontendAdvertiseIpAddresses(
     KeReleaseSpinLock(&Frontend->Lock, Irql);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOnline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1243,6 +1250,7 @@ FrontendSetOnline(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOffline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1256,6 +1264,7 @@ FrontendSetOffline(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetXenbusState(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1288,6 +1297,7 @@ FrontendSetXenbusState(
           XenbusStateName(State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendAcquireBackend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1334,6 +1344,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendWaitForBackendXenbusStateChange(
     IN      PXENVIF_FRONTEND    Frontend,
@@ -1379,6 +1390,7 @@ FrontendWaitForBackendXenbusStateChange(
             ULONG   Attempt =3D 0;

             while (++Attempt < 1000) {
+#pragma prefast(suppress:28121) // Timeout=3D0
                 status =3D KeWaitForSingleObject(&Event,
                                                Executive,
                                                KernelMode,
@@ -1437,6 +1449,7 @@ FrontendWaitForBackendXenbusStateChange(
           XenbusStateName(*State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendReleaseBackend(
     IN      PXENVIF_FRONTEND    Frontend
@@ -1457,6 +1470,7 @@ FrontendReleaseBackend(
     Trace("<=3D=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendClose(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1518,6 +1532,7 @@ FrontendClose(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendPrepare(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1880,6 +1895,7 @@ FrontendIsSplit(
     return __FrontendIsSplit(Frontend);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __FrontendUpdateHash(
     PXENVIF_FRONTEND        Frontend,
@@ -1961,6 +1977,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
@@ -2027,6 +2044,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2066,6 +2084,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2109,6 +2128,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2143,6 +2163,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2218,6 +2239,7 @@ FrontendGetQueue(
     return Queue;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendConnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2414,6 +2436,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisconnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2441,6 +2464,7 @@ FrontendDisconnect(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendEnable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2492,6 +2516,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2508,6 +2533,7 @@ FrontendDisable(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -2662,6 +2688,7 @@ FrontendSetState(
     return (!Failed) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2673,6 +2700,7 @@ __FrontendResume(
     (VOID) FrontendSetState(Frontend, FRONTEND_CLOSED);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2704,6 +2732,8 @@ FrontendSuspendCallbackLate(
     __FrontendResume(Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2756,7 +2786,7 @@ FrontendResume(
     Trace("<=3D=3D=3D=3D\n");

     return STATUS_SUCCESS;
-
+
 fail3:
     Error("fail3\n");

@@ -2780,6 +2810,8 @@ fail1:
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2821,7 +2853,7 @@ FrontendSuspend(
     Trace("<=3D=3D=3D=3D\n");
 }

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
@@ -2849,9 +2881,9 @@ FrontendInitialize(
     if (Path =3D=3D NULL)
         goto fail1;

-    status =3D RtlStringCbPrintfA(Path,
+    status =3D RtlStringCbPrintfA(Path,
                                 Length,
-                                "device/vif/%s",
+                                "device/vif/%s",
                                 Name);
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -2863,7 +2895,7 @@ FrontendInitialize(
     if (Prefix =3D=3D NULL)
         goto fail3;

-    status =3D RtlStringCbPrintfA(Prefix,
+    status =3D RtlStringCbPrintfA(Prefix,
                                 Length,
                                 "attr/vif/%s",
                                 Name);
@@ -3031,6 +3063,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 59d9718..e0b9069 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -56,13 +56,14 @@ typedef enum _XENVIF_FRONTEND_STATE {
     FRONTEND_ENABLED
 } XENVIF_FRONTEND_STATE, *PXENVIF_FRONTEND_STATE;

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
     OUT PXENVIF_FRONTEND    *Frontend
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
@@ -73,17 +74,22 @@ FrontendEjectFailed(
     IN PXENVIF_FRONTEND Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
     IN  XENVIF_FRONTEND_STATE   State
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -188,6 +194,7 @@ FrontendIncrementStatistic(
     IN  ULONGLONG               Delta
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -195,6 +202,7 @@ FrontendSetMulticastAddresses(
     IN  ULONG               Count
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -202,23 +210,27 @@ FrontendSetFilterLevel(
     IN  XENVIF_MAC_FILTER_LEVEL Level
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PULONG              Types
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -226,12 +238,14 @@ FrontendSetHashMapping(
     IN  ULONG               Order
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
     IN  PUCHAR              Key
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 783f49c..cfb6a64 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -220,7 +220,7 @@ ReceiverPacketCtor(

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     ASSERT(IsZeroMemory(Packet, sizeof (XENVIF_RECEIVER_PACKET)));

     return status;
@@ -578,7 +578,7 @@ ReceiverRingProcessChecksum(
         } else {
             Packet->Flags.TcpChecksumNotValidated =3D 1;
         }
-
+
         if ((Ring->OffloadOptions.NeedChecksumValue ||
              Receiver->CalculateChecksums !=3D 0) &&
             (flags & NETRXF_data_validated)) {
@@ -824,9 +824,9 @@ __ReceiverRingBuildSegment(
         ULONG   PacketLength;

         PacketLength =3D Info->IpHeader.Length +
-                       Info->IpOptions.Length +
-                       Info->TcpHeader.Length +
-                       Info->TcpOptions.Length +
+                       Info->IpOptions.Length +
+                       Info->TcpHeader.Length +
+                       Info->TcpOptions.Length +
                        SegmentSize;

         IpHeader->Version4.PacketLength =3D HTONS((USHORT)PacketLength);
@@ -836,9 +836,9 @@ __ReceiverRingBuildSegment(

         ASSERT3U(IpHeader->Version, =3D=3D, 6);

-        PayloadLength =3D Info->IpOptions.Length +
-                        Info->TcpHeader.Length +
-                        Info->TcpOptions.Length +
+        PayloadLength =3D Info->IpOptions.Length +
+                        Info->TcpHeader.Length +
+                        Info->TcpOptions.Length +
                         SegmentSize;

         IpHeader->Version6.PayloadLength =3D HTONS((USHORT)PayloadLength);
@@ -854,7 +854,7 @@ __ReceiverRingBuildSegment(
         ULONG   Length;

         Mdl->Next =3D __ReceiverRingGetMdl(Ring, FALSE);
-
+
         status =3D STATUS_NO_MEMORY;
         if (Mdl->Next =3D=3D NULL)
             goto fail2;
@@ -912,7 +912,7 @@ fail2:

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     return NULL;
 }

@@ -952,7 +952,7 @@ ReceiverRingProcessLargePacket(
     Info =3D &Packet->Info;
     ASSERT(Info->IpHeader.Offset !=3D 0);
     ASSERT(Info->TcpHeader.Offset !=3D 0);
-
+
     flags =3D (uint16_t)Packet->Flags.Value;
     ASSERT(flags & NETRXF_csum_blank);
     ASSERT(flags & NETRXF_data_validated);
@@ -982,11 +982,11 @@ ReceiverRingProcessLargePacket(
         USHORT  PacketLength;

         PacketLength =3D NTOHS(IpHeader->Version4.PacketLength);
-
+
         Length =3D (ULONG)PacketLength -
                  Info->TcpOptions.Length -
                  Info->TcpHeader.Length -
-                 Info->IpOptions.Length -
+                 Info->IpOptions.Length -
                  Info->IpHeader.Length;
     } else {
         USHORT  PayloadLength;
@@ -1035,13 +1035,13 @@ ReceiverRingProcessLargePacket(
             USHORT  PacketLength;

             PacketLength =3D NTOHS(IpHeader->Version4.PacketLength);
-
+
             ASSERT3U(Length,
                      =3D=3D,
                      (ULONG)PacketLength -
                      Info->TcpOptions.Length -
                      Info->TcpHeader.Length -
-                     Info->IpOptions.Length -
+                     Info->IpOptions.Length -
                      Info->IpHeader.Length);

             IpHeader->Version4.Checksum =3D ChecksumIpVersion4Header(InfoV=
a, Info);
@@ -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,
@@ -1853,7 +1859,7 @@ ReceiverRingFill(
         }

         Fragment =3D __ReceiverRingPreparePacket(Ring, Packet);
-
+
         if (Fragment =3D=3D NULL) {
             __ReceiverRingPutPacket(Ring, Packet, TRUE);
             break;
@@ -2005,6 +2011,7 @@ __ReceiverRingQueuePacket(
     } while (InterlockedCompareExchangePointer(&Ring->PacketQueue, (PVOID)=
New, (PVOID)Old) !=3D 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,
@@ -2377,7 +2385,7 @@ ReceiverRingWatchdog(
     rsp_prod =3D 0;
     rsp_cons =3D 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -2652,7 +2660,7 @@ __ReceiverRingConnect(
     ASSERT3P(Ring->Front.sring, =3D=3D, Ring->Shared);

     Pfn =3D MmGetMdlPfnArray(Ring->Mdl)[0];
-
+
     status =3D XENBUS_GNTTAB(PermitForeignAccess,
                            &Receiver->GnttabInterface,
                            Ring->GnttabCache,
@@ -2870,11 +2878,12 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingDisable(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
-{
+{
     PXENVIF_RECEIVER            Receiver;
     PXENVIF_FRONTEND            Frontend;

@@ -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
@@ -3287,7 +3298,7 @@ ReceiverConnect(
             goto fail5;

         Index++;
-    }
+    }

     status =3D XENBUS_DEBUG(Register,
                           &Receiver->DebugInterface,
@@ -3434,6 +3445,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3493,7 +3505,7 @@ ReceiverStoreWrite(
             goto fail6;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -3518,6 +3530,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3540,7 +3553,7 @@ ReceiverEnable(
             goto fail1;

         Index++;
-    }
+    }

     Trace("<=3D=3D=3D=3D\n");
     return STATUS_SUCCESS;
@@ -3561,6 +3574,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3583,6 +3597,7 @@ ReceiverDisable(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisconnect(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3618,6 +3633,7 @@ ReceiverDisconnect(
     Trace("<=3D=3D=3D=3D\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,
@@ -3705,9 +3722,10 @@ ReceiverSetOffloadOptions(
             break;

         __ReceiverRingSetOffloadOptions(Ring, Options);
-    }
+    }
 }

+_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 =3D 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: <=3D=3D=3D=3D\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..5c03b94 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -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,
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index b46ccc3..bac3286 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer in the documetation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -943,7 +943,7 @@ fail2:
     Error("fail2\n");

     ASSERT3P(Buffer->Context, =3D=3D, Packet);
-    Buffer->Context =3D NULL;
+    Buffer->Context =3D NULL;

     --Packet->Reference;

@@ -986,7 +986,7 @@ fail1:
         __TransmitterPutFragment(Ring, Fragment);

         ASSERT3P(Buffer->Context, =3D=3D, Packet);
-        Buffer->Context =3D NULL;
+        Buffer->Context =3D NULL;

         --Packet->Reference;

@@ -1218,7 +1218,7 @@ __TransmitterRingPrepareHeader(

     Fragment->Type =3D XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER;
     Fragment->Context =3D Buffer;
-
+
     Buffer->Reference++;

     Pfn =3D MmGetMdlPfnArray(Mdl)[0];
@@ -1297,9 +1297,9 @@ __TransmitterRingPrepareHeader(

         // Fix up the IP packet length
         Length =3D Info->IpHeader.Length +
-                 Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+                 Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, =3D=3D, Length);
@@ -1320,7 +1320,7 @@ __TransmitterRingPrepareHeader(
         if (Packet->MaximumSegmentSize =3D=3D Payload->Length)
             Packet->OffloadOptions.OffloadIpVersion4LargePacket =3D 0;
     }
-
+
     if (Packet->OffloadOptions.OffloadIpVersion6LargePacket) {
         PIP_HEADER  IpHeader;
         PTCP_HEADER TcpHeader;
@@ -1335,9 +1335,9 @@ __TransmitterRingPrepareHeader(
         TcpHeader =3D (PTCP_HEADER)(BaseVa + Info->TcpHeader.Offset);

         // Fix up the IP payload length
-        Length =3D Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+        Length =3D Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, =3D=3D, Length);
@@ -1362,7 +1362,7 @@ __TransmitterRingPrepareHeader(
         ULONG   MaximumFrameSize;

         MacQueryMaximumFrameSize(Mac, &MaximumFrameSize);
-
+
         if (Fragment->Length > MaximumFrameSize) {
             status =3D STATUS_INVALID_PARAMETER;
             SquashError =3D TRUE;
@@ -1958,7 +1958,7 @@ __TransmitterRingPrepareNeighbourAdvertisement(
     IpHeader->NextHeader =3D IPPROTO_ICMPV6;
     IpHeader->HopLimit =3D 255;

-    RtlCopyMemory(IpHeader->SourceAddress.Byte,
+    RtlCopyMemory(IpHeader->SourceAddress.Byte,
                   Address,
                   IPV6_ADDRESS_LENGTH);

@@ -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
@@ -2728,7 +2730,7 @@ TransmitterRingSwizzle(

     InitializeListHead(&List);

-    New =3D XENVIF_TRANSMITTER_LOCK_BIT;
+    New =3D XENVIF_TRANSMITTER_LOCK_BIT;
     Old =3D (ULONG_PTR)InterlockedExchangePointer(&Ring->Lock, (PVOID)New)=
;

     ASSERT(Old & XENVIF_TRANSMITTER_LOCK_BIT);
@@ -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 =3D (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,
@@ -3344,7 +3350,7 @@ TransmitterRingWatchdog(
     Timeout.QuadPart =3D TIME_RELATIVE(TIME_S(XENVIF_TRANSMITTER_WATCHDOG_=
PERIOD));
     PacketsQueued =3D 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -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,11 +3925,12 @@ __TransmitterRingEnable(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
-{
+{
     PXENVIF_TRANSMITTER             Transmitter;
     PXENVIF_FRONTEND                Frontend;
     PXENVIF_TRANSMITTER_PACKET      Packet;
@@ -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 =3D 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
@@ -4220,7 +4235,7 @@ __TransmitterRingAbortPackets(
     while (!IsListEmpty(&Ring->PacketQueue)) {
         PLIST_ENTRY                 ListEntry;
         PXENVIF_TRANSMITTER_PACKET  Packet;
-
+
         ListEntry =3D RemoveHeadList(&Ring->PacketQueue);
         ASSERT3P(ListEntry, !=3D, &Ring->PacketQueue);

@@ -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,
@@ -4645,7 +4665,7 @@ fail2:
     (*Transmitter)->AlwaysCopy =3D 0;
     (*Transmitter)->ValidateChecksums =3D 0;
     (*Transmitter)->DisableMulticastControl =3D 0;
-
+
     ASSERT(IsZeroMemory(*Transmitter, sizeof (XENVIF_TRANSMITTER)));
     __TransmitterFree(*Transmitter);

@@ -4655,6 +4675,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER     Transmitter
@@ -4710,7 +4731,7 @@ TransmitterConnect(
             goto fail5;

         Index++;
-    }
+    }

     status =3D XENBUS_DEBUG(Register,
                           &Transmitter->DebugInterface,
@@ -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,
@@ -4848,7 +4872,7 @@ TransmitterStoreWrite(
             goto fail2;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -4861,6 +4885,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4879,12 +4904,13 @@ TransmitterEnable(

         __TransmitterRingEnable(Ring);
         Index++;
-    }
+    }

     Trace("<=3D=3D=3D=3D\n");
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4907,6 +4933,7 @@ TransmitterDisable(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisconnect(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4944,6 +4971,7 @@ TransmitterDisconnect(
     Trace("<=3D=3D=3D=3D\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
@@ -5227,11 +5257,12 @@ TransmitterAbortPackets(
         PXENVIF_TRANSMITTER_RING    Ring =3D Transmitter->Ring[Index];

         __TransmitterRingAbortPackets(Ring);
-    }
+    }

     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_OPTI=
ONS_LENGTH -          \
                                                          MAXIMUM_TCP_HEADE=
R_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..a5d9e4c 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -43,38 +43,45 @@

 typedef struct _XENVIF_TRANSMITTER XENVIF_TRANSMITTER, *PXENVIF_TRANSMITTE=
R;

+_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,
diff --git a/src/xenvif/vif.c b/src/xenvif/vif.c
index 6f468ee..2cfd2f9 100644
--- a/src/xenvif/vif.c
+++ b/src/xenvif/vif.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -122,6 +122,7 @@ VifMac(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 VifSuspendCallbackLate(
     IN  PVOID           Argument
@@ -142,6 +143,8 @@ VifSuspendCallbackLate(
     FrontendAdvertiseIpAddresses(Context->Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnable(
     IN  PINTERFACE          Interface,
@@ -381,6 +384,8 @@ VifCallbackVersion9(
 #undef XENVIF_RECEIVER_QUEUE_MAX
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion9(
     IN  PINTERFACE                  Interface,
@@ -408,6 +413,8 @@ VifEnableVersion9(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion8(
     IN  PINTERFACE                  Interface,
@@ -435,6 +442,8 @@ VifEnableVersion8(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static VOID
 VifDisable(
     IN  PINTERFACE      Interface
@@ -511,7 +520,7 @@ VifQueryStatistic(
     status =3D STATUS_INVALID_PARAMETER;
     if (Index >=3D XENVIF_VIF_STATISTIC_COUNT)
         goto done;
-
+
     AcquireMrswLockShared(&Context->Lock);

     FrontendQueryStatistic(Context->Frontend, Index, Value);
@@ -1205,7 +1214,7 @@ VifGetInterface(
     }

     return status;
-}
+}

 VOID
 VifTeardown(
@@ -1236,6 +1245,8 @@ VifTeardown(
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
diff --git a/src/xenvif/vif.h b/src/xenvif/vif.h
index e9d38a5..379ccc3 100644
--- a/src/xenvif/vif.h
+++ b/src/xenvif/vif.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -63,6 +63,8 @@ VifTeardown(

 // CALLBACKS

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
--
2.51.0.windows.1


--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From win-pv-devel-bounces@lists.xenproject.org Fri Oct 10 09:08:40 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Oct 2025 09:08:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1141078.1475671 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7979-0003mX-Ui; Fri, 10 Oct 2025 09:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1141078.1475671; Fri, 10 Oct 2025 09:08:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7979-0003mQ-S2; Fri, 10 Oct 2025 09:08:39 +0000
Received: by outflank-mailman (input) for mailman id 1141078;
 Fri, 10 Oct 2025 09:08:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Pnpb=4T=bounce.vates.tech=bounce-md_30504962.68e8cd11.v1-1fa19c2cf50e45779eff3710d372b86e@srs-se1.protection.inumbo.net>)
 id 1v7978-0003l4-TH
 for win-pv-devel@lists.xenproject.org; Fri, 10 Oct 2025 09:08:38 +0000
Received: from mail178-21.suw51.mandrillapp.com
 (mail178-21.suw51.mandrillapp.com [198.2.178.21])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b2fd23ac-a5b8-11f0-9809-7dc792cee155;
 Fri, 10 Oct 2025 11:08:36 +0200 (CEST)
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-21.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4cjgrx6DKyz1XLFN7
 for <win-pv-devel@lists.xenproject.org>; Fri, 10 Oct 2025 09:08:33 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 1fa19c2cf50e45779eff3710d372b86e; Fri, 10 Oct 2025 09:08:33 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2fd23ac-a5b8-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760087313; x=1760357313;
	bh=IYnSZlw+LbdYB42ZO+ucJlZUS2fa53Iuon5s4hj26HE=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=EN+mBQVMhNuYmXuAMg0Uk+fKjqCo14TwcJtYIZEE1339/zvCnTQ1vycfE5RVfFHe6
	 2BqFcouj/YI0JRnhobCFLG4L8pKES3wPz6+lKOtaBedQVQqOFdPSCEXzryureaDnFJ
	 d4EqgQ0DM+X1YE7NgAN+Y9N2lAAXKd4Y4Aa0AvQ2R9aSDrKgPkk4ddFRkb7wUAcmtY
	 nLAFZW2T9YpU92In/hMmWqtG9X/NfT4VUXHQkvKSy1VDnm3EG+GX1mHjHubSRq+Vbd
	 yahnFr7yU01QwN5M5CnnDCIokunIIaC5FP9J3nt07ATHIgDYwKnP+8SLQqNS43IKKW
	 +T2E1GWubMuRw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760087313; x=1760347813; i=ngoc-tu.dinh@vates.tech;
	bh=IYnSZlw+LbdYB42ZO+ucJlZUS2fa53Iuon5s4hj26HE=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=DyOpbnOlwmqMsqYLEM6XCGQwqtHIke8YFRR+1KQmZc6FTzXIBgRr3wAM0bNrl8tL6
	 HcL8+0ZD7uvgMX//4h5Ogef+kH6cLLLdMbKz0nEzZHVRP6XQALjCmeIHIJqbeOHHww
	 /0lqWsRHqWqS78vyPAWfsC7uo4ktlXefxEcBb0+ZcNtHZlCB8wUKpJX+OXArXul2c2
	 hFWbdkb4FJ5TXQ83VTs46BUnCxsekUIrvOMtb9MOxkvna/w35v4Ionb1mE2jhoQMwU
	 yVbVlZeNmzv9nlCRlh5w0SxRBvj1I7s2iml+TbE8TG0hWXXAFLoWUYCkfcD62GBjgB
	 0YRy87As5OOUA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH=20v2=202/4]=20frontend:=20Map=20out=20IRQL=20annotations?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760087313128
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251010090826.543-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
References: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.1fa19c2cf50e45779eff3710d372b86e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251010:md
Date: Fri, 10 Oct 2025 09:08:33 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/frontend.c | 35 ++++++++++++++++++++++++++++++++++-
 src/xenvif/frontend.h | 16 +++++++++++++++-
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index daeab9c..f844a42 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -378,6 +378,7 @@ FrontendIsBackendOnline(
     return Online;
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendEject(
     IN  PXENVIF_THREAD  Self,
@@ -823,6 +824,7 @@ FrontendIpAddressChange(
     ThreadWake(Frontend->MibThread);
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendMib(
     IN  PXENVIF_THREAD  Self,
@@ -981,6 +983,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1093,6 +1096,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendNotifyMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1147,6 +1151,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -1188,6 +1193,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1231,6 +1237,7 @@ FrontendAdvertiseIpAddresses(
     KeReleaseSpinLock(&Frontend->Lock, Irql);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOnline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1243,6 +1250,7 @@ FrontendSetOnline(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOffline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1256,6 +1264,7 @@ FrontendSetOffline(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetXenbusState(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1288,6 +1297,7 @@ FrontendSetXenbusState(
           XenbusStateName(State));
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendAcquireBackend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1334,6 +1344,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendWaitForBackendXenbusStateChange(
     IN      PXENVIF_FRONTEND    Frontend,
@@ -1379,6 +1390,7 @@ FrontendWaitForBackendXenbusStateChange(
             ULONG   Attempt = 0;
 
             while (++Attempt < 1000) {
+#pragma prefast(suppress:28121) // Timeout=0
                 status = KeWaitForSingleObject(&Event,
                                                Executive,
                                                KernelMode,
@@ -1437,6 +1449,7 @@ FrontendWaitForBackendXenbusStateChange(
           XenbusStateName(*State));
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendReleaseBackend(
     IN      PXENVIF_FRONTEND    Frontend
@@ -1457,6 +1470,7 @@ FrontendReleaseBackend(
     Trace("<=====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendClose(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1518,6 +1532,7 @@ FrontendClose(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendPrepare(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1880,6 +1895,7 @@ FrontendIsSplit(
     return __FrontendIsSplit(Frontend);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __FrontendUpdateHash(
     PXENVIF_FRONTEND        Frontend,
@@ -1964,6 +1980,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
@@ -2030,6 +2047,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2069,6 +2087,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2112,6 +2131,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2146,6 +2166,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2221,6 +2242,7 @@ FrontendGetQueue(
     return Queue;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendConnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2417,6 +2439,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisconnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2444,6 +2467,7 @@ FrontendDisconnect(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendEnable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2495,6 +2519,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2511,6 +2536,7 @@ FrontendDisable(
     Trace("<====\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -2665,6 +2691,7 @@ FrontendSetState(
     return (!Failed) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2676,6 +2703,7 @@ __FrontendResume(
     (VOID) FrontendSetState(Frontend, FRONTEND_CLOSED);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2707,6 +2735,8 @@ FrontendSuspendCallbackLate(
     __FrontendResume(Frontend);
 }
 
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2783,6 +2813,8 @@ fail1:
     return status;
 }
 
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2824,7 +2856,7 @@ FrontendSuspend(
     Trace("<====\n");
 }
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
@@ -3034,6 +3066,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 59d9718..5b84806 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -56,13 +56,14 @@ typedef enum _XENVIF_FRONTEND_STATE {
     FRONTEND_ENABLED
 } XENVIF_FRONTEND_STATE, *PXENVIF_FRONTEND_STATE;
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
     OUT PXENVIF_FRONTEND    *Frontend
     );
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
@@ -73,17 +74,22 @@ FrontendEjectFailed(
     IN PXENVIF_FRONTEND Frontend
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
     IN  XENVIF_FRONTEND_STATE   State
     );
 
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
     );
 
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -188,6 +194,7 @@ FrontendIncrementStatistic(
     IN  ULONGLONG               Delta
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -195,6 +202,7 @@ FrontendSetMulticastAddresses(
     IN  ULONG               Count
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -202,23 +210,27 @@ FrontendSetFilterLevel(
     IN  XENVIF_MAC_FILTER_LEVEL Level
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PULONG              Types
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -226,12 +238,14 @@ FrontendSetHashMapping(
     IN  ULONG               Order
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
     IN  PUCHAR              Key
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
-- 
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Fri Oct 10 09:08:40 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Oct 2025 09:08:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1141077.1475668 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7978-0003lC-UI; Fri, 10 Oct 2025 09:08:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1141077.1475668; Fri, 10 Oct 2025 09:08:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7978-0003l5-Qe; Fri, 10 Oct 2025 09:08:38 +0000
Received: by outflank-mailman (input) for mailman id 1141077;
 Fri, 10 Oct 2025 09:08:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=U+Hs=4T=bounce.vates.tech=bounce-md_30504962.68e8cd11.v1-75d58ae5593547179ee0e87214785e34@srs-se1.protection.inumbo.net>)
 id 1v7977-0003ky-3S
 for win-pv-devel@lists.xenproject.org; Fri, 10 Oct 2025 09:08:37 +0000
Received: from mail178-21.suw51.mandrillapp.com
 (mail178-21.suw51.mandrillapp.com [198.2.178.21])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b2f05cd0-a5b8-11f0-9d15-b5c5bf9af7f9;
 Fri, 10 Oct 2025 11:08:35 +0200 (CEST)
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-21.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4cjgrx5G2yz1XLFN6
 for <win-pv-devel@lists.xenproject.org>; Fri, 10 Oct 2025 09:08:33 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 75d58ae5593547179ee0e87214785e34; Fri, 10 Oct 2025 09:08:33 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2f05cd0-a5b8-11f0-9d15-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760087313; x=1760357313;
	bh=rTZ2y6mwk/JOvi35LV8m693SjQTJTcA1yp2ID8z4T4w=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=RVKy/w4rGL6iwU8EPc+z5ySFz4T3LSPfqC0zVDVtJ23vM/Ls5FKgofbAM6mVqEf0R
	 7ljiyegvMF1Inb4v90+SUsimORXQXzDVBn+rE3EsbfqmlcfTFarEKZqVjHxHRE0GX0
	 2uMPM1JOqsF6/8XkOc7j3Rg8AfxzrLX9cSTFJy4S7MX2BHvzn0Nx1dTNrD2LenwzQy
	 RCHcv84U3BIGfTEpIAhKKLgYbmEayYjIaSX+eF628L3pyiN3R2Fz60loZE0ZMSkc1A
	 xwrWgMoO1j8IrZY6zbsmlxUlUc1yCTzzxvT5gYEQE5qdZmQDy00G10pvEH75FWx9Kh
	 bP/flYHyQa+0w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760087313; x=1760347813; i=ngoc-tu.dinh@vates.tech;
	bh=rTZ2y6mwk/JOvi35LV8m693SjQTJTcA1yp2ID8z4T4w=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=YZcs/5hQOCtTtK2YACRL9XZyN/LmpdYgBfVQ3q3fxs0na3goreuZzi7ykQjJoef82
	 0Du7hFGALYfyDD7SHox5+ZLL5GIXYEnG0Ckk1ZcXAiZymkZcEgb/iEnaACn32fUWmy
	 th79fQ5A6WjS8RvfFxTQEZ+WFfId8it3+RSqVjagZc6euJp4n8x2XhmUNLzH8/t9Cb
	 sth2PX2TR/+ccl2jCn6/XwzgHTQuM7zT655uRqoKwbNET8Sv+m1Dj51JOGi4exbMFz
	 DC4FPnp+Q0d79NJfmyqD3Pja9q4/2ivfNe9scKhP//ZDOoTbU6WZkWbIYCagmHQcI9
	 4keiRUObTIs/Q==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH=20v2=201/4]=20controller:=20Map=20out=20IRQL=20annotations?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760087312811
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.75d58ae5593547179ee0e87214785e34?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251010:md
Date: Fri, 10 Oct 2025 09:08:33 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

This is an initial, exploratory work to help inform the rework of
the controller interface.

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
v2: I've removed the annotations on the VIF interface since I haven't finished
my analysis of that.
The previous version contained lots of trailing space deletions, which also have
been deleted in v2.

Resending yet again because the patch set was blocked by the mailing list.
---
 src/xenvif/controller.c | 16 ++++++++++++++++
 src/xenvif/controller.h | 12 ++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ae86837..e032972 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -137,6 +137,7 @@ ControllerReleaseLock(
     __ControllerReleaseLock(Controller);
 }
 
+_IRQL_requires_min_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ControllerSend(
     IN  PXENVIF_CONTROLLER  Controller
@@ -177,6 +178,7 @@ ControllerPoll(
     Controller->Shared->rsp_event = rsp_cons + 1;
 }
 
+_IRQL_requires_min_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerPutRequest(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -248,6 +250,7 @@ fail1:
 
 #define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms
 
+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerGetResponse(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -318,6 +321,7 @@ ControllerGetResponse(
 
 KSERVICE_ROUTINE    ControllerEvtchnCallback;
 
+_Use_decl_annotations_
 BOOLEAN
 ControllerEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -345,6 +349,7 @@ ControllerDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -390,6 +395,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER      Controller
@@ -597,6 +603,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -670,6 +677,7 @@ ControllerDisable(
     Trace("<===>\n");
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
@@ -732,6 +740,7 @@ done:
     Trace("<====\n");
 }
 
+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
@@ -762,6 +771,7 @@ ControllerTeardown(
     __ControllerFree(Controller);
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -802,6 +812,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -842,6 +853,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -882,6 +894,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -976,6 +989,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1016,6 +1030,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1056,6 +1071,7 @@ fail1:
     return status;
 }
 
+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/controller.h b/src/xenvif/controller.h
index b14e066..18e09b7 100644
--- a/src/xenvif/controller.h
+++ b/src/xenvif/controller.h
@@ -41,17 +41,20 @@
 
 typedef struct _XENVIF_CONTROLLER XENVIF_CONTROLLER, *PXENVIF_CONTROLLER;
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_CONTROLLER  *Controller
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER  Controller
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -68,34 +71,40 @@ ControllerDisable(
     IN  PXENVIF_CONTROLLER  Controller
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
     );
 
+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Algorithm
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Flags
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Flags
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -103,18 +112,21 @@ ControllerSetHashKey(
     IN  ULONG               Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Size
     );
 
+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
-- 
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Fri Oct 10 09:08:41 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Oct 2025 09:08:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1141079.1475675 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v797B-0003o5-09; Fri, 10 Oct 2025 09:08:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1141079.1475675; Fri, 10 Oct 2025 09:08:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v797A-0003nw-TP; Fri, 10 Oct 2025 09:08:40 +0000
Received: by outflank-mailman (input) for mailman id 1141079;
 Fri, 10 Oct 2025 09:08:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Llyt=4T=bounce.vates.tech=bounce-md_30504962.68e8cd12.v1-2acb99d2d7f847709840f98a1e77726d@srs-se1.protection.inumbo.net>)
 id 1v7979-0003l4-Hy
 for win-pv-devel@lists.xenproject.org; Fri, 10 Oct 2025 09:08:39 +0000
Received: from mail178-21.suw51.mandrillapp.com
 (mail178-21.suw51.mandrillapp.com [198.2.178.21])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b44c3f1f-a5b8-11f0-9809-7dc792cee155;
 Fri, 10 Oct 2025 11:08:37 +0200 (CEST)
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-21.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4cjgry1Dddz1XLFQQ
 for <win-pv-devel@lists.xenproject.org>; Fri, 10 Oct 2025 09:08:34 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2acb99d2d7f847709840f98a1e77726d; Fri, 10 Oct 2025 09:08:34 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b44c3f1f-a5b8-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760087314; x=1760357314;
	bh=BxoP9xQYh743IXKQRA7og3bTz9OzGJcK2ZPOFvdQzs0=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=sZTFtB+NMzf3CUewc+V/QpbO6YiTx+73qAcmGJ+izMdP6mWu/ra/Sd4Mwdbayaiwm
	 TTF4nQe6m+YK6ob0KZrzikAylGbABk0eqNpzXl7LrN8aKZgUj2px/t1nslzixtEPVm
	 2RQfrTnYnQ6csLZdFH47eDGM1niJsF+FzeA3xrGIz43s2pp3NOEH2yZWfcgx2JKZ0V
	 25ctioYBoZpyeF7YIU8DQm9Z8zLnj4ignKCMsCXvmjxsNpAxHPQ61BLew0AGJaE4tt
	 asB1dXraUSTRyGPhIFHCspFgO2e6ip9tIFU1sBb428of+BToIWovFWFDWv7cp3Jxis
	 5kldmhDXXtPyw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760087314; x=1760347814; i=ngoc-tu.dinh@vates.tech;
	bh=BxoP9xQYh743IXKQRA7og3bTz9OzGJcK2ZPOFvdQzs0=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=e/oWTB2U9S9K7BJpvoXqEfofjPnLyaGuFXbgZ87o+zIvauFj/uLNUytt0YoFAc+m2
	 9ZvGLaNVyIc/YzndXO9yGE3SRV7TJo4Qjap2lFenyMFqyhg4p24ItK3ab3VkM4VgQg
	 i9JubA7RFRmy0R4N8S35uPhIEOrnehpImOFP5Z4w57d2Y/sndy/52zZynshb3AjCbF
	 g+8xDP22JAxevT6UZ/9hPO9z02cJcbuP7zLxIWkWLIAFKyOFlDIxtjiK6r42qnUw6m
	 Vpy7YIp+rs3RlWaM7KbGlqMQAb1VuXF+SgT7ZP0H/V7OtE0JKDIwISQ1Ut3o7kv1vR
	 m5wfJ1UGUZ1GQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH=20v2=203/4]=20receiver:=20Map=20out=20IRQL=20annotations?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760087313368
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251010090826.543-3-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
References: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2acb99d2d7f847709840f98a1e77726d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251010:md
Date: Fri, 10 Oct 2025 09:08:34 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 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



From win-pv-devel-bounces@lists.xenproject.org Fri Oct 10 09:08:43 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Oct 2025 09:08:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1141080.1475679 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v797D-0003q5-2O; Fri, 10 Oct 2025 09:08:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1141080.1475679; Fri, 10 Oct 2025 09:08:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v797C-0003py-VS; Fri, 10 Oct 2025 09:08:42 +0000
Received: by outflank-mailman (input) for mailman id 1141080;
 Fri, 10 Oct 2025 09:08:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rh8S=4T=bounce.vates.tech=bounce-md_30504962.68e8cd12.v1-f31fc73b5dd14435be49c075c7aadf18@srs-se1.protection.inumbo.net>)
 id 1v797B-0003ky-Bv
 for win-pv-devel@lists.xenproject.org; Fri, 10 Oct 2025 09:08:41 +0000
Received: from mail186-27.suw21.mandrillapp.com
 (mail186-27.suw21.mandrillapp.com [198.2.186.27])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b30cd706-a5b8-11f0-9d15-b5c5bf9af7f9;
 Fri, 10 Oct 2025 11:08:35 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-27.suw21.mandrillapp.com (Mailchimp) with ESMTP id
 4cjgry23tBz6CQ7kq
 for <win-pv-devel@lists.xenproject.org>; Fri, 10 Oct 2025 09:08:34 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 f31fc73b5dd14435be49c075c7aadf18; Fri, 10 Oct 2025 09:08:34 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b30cd706-a5b8-11f0-9d15-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760087314; x=1760357314;
	bh=g1O/BZxDPzQgEfMqChQcpobVqEZfyQ8g5BUmPXDPvGc=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RLpNJBtiUHu0ExBMaPSGUod7W+zCNrbm/fSjHI3TX7KXhrJahrC5TwH47IvQYX0bX
	 eeJJ1Pa1+/GSphJ7AV2xDWLafSGS344E+Q4aGklzsN5S0y+TOAsivxBMtwopFAQXDS
	 OR3Kp4HoCaiGw+MIpdSsHagw6mBCT8RoRwpd5EDozl5+jmHwjch3IVZYXZThf6qHNu
	 5Ew5LszqVWv+7OL6dtIdjZUkTPTdPzK20ejIsPXgYmYq1g0UQmhMP/+YeFlvRkfZJl
	 pTgs5JRB1pM1+GBpcSDhIpTVl2GxqhUrMinZ0uBxaM6N4/Z80pr8O7edb0f/ctnbRU
	 a1PY0sMwnrx8Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760087314; x=1760347814; i=ngoc-tu.dinh@vates.tech;
	bh=g1O/BZxDPzQgEfMqChQcpobVqEZfyQ8g5BUmPXDPvGc=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=BkpBRub5OydY5+gZzniegeXjg/QdKnqdEPCjHYCuZkUcFqlm1tQbGNOHTSV+MI4js
	 wS3twyAWhM0pE05yETJk1oEQZU+pAuNnQwGHJ3Usl4nJayY7TzzY7BTpB7lRKvWxwV
	 26RkCdLM3U1vXeaIVoMnmXOXCrmX9hj9arHqe9IrZluMMnKvJD95jVkVxpFIo4lF2N
	 43QuKPjj8M6GkNGtT2sieRslpshfkhuyJzo8hyo3OkSCYI7wRDIOc1HV7UUsMrjZMo
	 7I+xjgMDOnt4fn6tmSZRa/1IJ8qiiyi6155EzJnoYR7JmV5YGEW9lUF9PUVLJMoj51
	 omOwLJ8axLwrQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH=20v2=204/4]=20transmitter:=20Map=20out=20IRQL=20annotations?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760087313618
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20251010090826.543-4-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
References: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.f31fc73b5dd14435be49c075c7aadf18?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251010:md
Date: Fri, 10 Oct 2025 09:08:34 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 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



From win-pv-devel-bounces@lists.xenproject.org Fri Oct 10 13:23:01 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Oct 2025 13:23:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1141213.1475770 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7D5G-0004hy-8w; Fri, 10 Oct 2025 13:22:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1141213.1475770; Fri, 10 Oct 2025 13:22:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v7D5G-0004hr-6D; Fri, 10 Oct 2025 13:22:58 +0000
Received: by outflank-mailman (input) for mailman id 1141213;
 Fri, 10 Oct 2025 13:22:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/xOf=4T=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1v7D5E-0004hl-RW
 for win-pv-devel@lists.xenproject.org; Fri, 10 Oct 2025 13:22:57 +0000
Received: from PH7PR06CU001.outbound.protection.outlook.com
 (mail-westus3azlp170100009.outbound.protection.outlook.com
 [2a01:111:f403:c107::9])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3a4a5896-a5dc-11f0-9d15-b5c5bf9af7f9;
 Fri, 10 Oct 2025 15:22:55 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by PH7PR03MB7136.namprd03.prod.outlook.com (2603:10b6:510:2b8::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9; Fri, 10 Oct
 2025 13:22:49 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9203.009; Fri, 10 Oct 2025
 13:22:49 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a4a5896-a5dc-11f0-9d15-b5c5bf9af7f9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bJcDasubYxIWErfmwqQepkBge8zv0sz1Cb7cELAiYSmFb3vHHSEwbBPxuXISeWwUtVKBVHIDeRmb/5MRre98s5OgQRvfnVOMWRQkXZ2qDEPapDUiMejGc0PpRddUMSlZU4Q++6eWCThCuKE5hBSvSNMqVifhGWhoTg3coaDLhwc1nFb21xC34WNRJmTX166LZLYNoZlnhzMh4bpTbcGEK79K01NA11rtoYqeibPpDnWABNGZxQOTldJgfLYT+spioYtxmpOWJzWmQAec7WzI/niTr8qGkH4Lb4luf0WYobaw/cvBi7N08Sl/y9e9SY5GblEj1Kmn8KuAuA2VOvAD+w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=1TpgCOJST88AWb0/lkHmd/HzJkrEOgO6vfpPbL01f6w=;
 b=ZG+9RighNdmdOd3PuPGqdehlR4BJarNNr2THyiYGlhOxdrUu7IERerA2B82F/a50a3jyTITYVv0N1/Ohi9k4SLNneWPunbVgRTzCfslbBsvTQFxgxix+Rwb+EbqneN/0WNOteUvcOV2U0jeWdRFc2qrGlATHhKoQU0jtCmxxbUhm5HtAJWsB5LJg5Zg7P/IQqPaqAspCNlHhkyfC+6YwD6q1ogpwdzSvKK2TSm4DfVGA1NjUuc0ID6kryhV5Hc54yFGDsNQgtu7kRQpC+HkCD/ShrQcKgq7t27pecUYTKQf7mT3g9kkCh4xaqIfrg+ubPDQVC1VMHrOHpmL83xsgZA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1TpgCOJST88AWb0/lkHmd/HzJkrEOgO6vfpPbL01f6w=;
 b=aWcRmFFP8mx/cm64JBi+bf2roxa5ZD0WS7wG7H6TCXWxaVNw4e+GZNoyJGAiO4f5KiTYL8tPU40ElQfty4OhylAdiQJgz3vpJZ89XAS4dPjguk0roo00ZWg8Kk/Ov/XRiB42DD4xt/Bi0Q9iZazropaAOwaJHpuf+s2RvQYxMo8=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@cloud.com>
Subject: Re: [XENVIF PATCH v2 1/4] controller: Map out IRQL annotations
Thread-Topic: [XENVIF PATCH v2 1/4] controller: Map out IRQL annotations
Thread-Index: AQHcOcV3q63HE8BpakSOTUtvqYPHZbS7XiMR
Date: Fri, 10 Oct 2025 13:22:49 +0000
Message-ID:
 <PH0PR03MB71167657915B71CE3BEDC1AAFEEFA@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251010090826.543-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|PH7PR03MB7136:EE_
x-ms-office365-filtering-correlation-id: fa2271f7-93fd-40ca-c54d-08de08001c16
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?TXKKEeAQhSuv9pGdBqSEWH+aGpYSpXziFvKWJr6ltRK7CxITt1b14Egfbteq?=
 =?us-ascii?Q?CF5X+z79yrL9S451wWIpfR5FzhnY/Si+Kn2k0AeHG5Ey0Hc0SnscLUZPtE8F?=
 =?us-ascii?Q?Z+ie6jBrIAe3feAK4+MzLFkWU9WcRdvGu72jCHTMGuHPjRxZmTZU/uRrMwrW?=
 =?us-ascii?Q?D93/ZRSYz5ySDwCMiwN7Y6uxKKaAi868Ge9vYiCxvsD53aTaSpN9R+HXDbMB?=
 =?us-ascii?Q?KMnjCzvQG6lIkTsJOodhceAS4MExzZUTtpneDM9YfUZ/fYTW3DYwFM0SArok?=
 =?us-ascii?Q?y3EHf7MTDqttcbM1oXEzI0gJCPTzt/Gy3WJ19n4fYA8Z4N7b4MJq2OfFJIwS?=
 =?us-ascii?Q?CWvIxlYWHvZWZc71a281yb+Vi11IEzKMiZ6cY0uO0eKoAFGOihr9ly5xI8Ja?=
 =?us-ascii?Q?JhKmEl+yTwcb5h5lyjI34F34iwRFhVusSAlrHjavwkTEO/plYX8aNoX0sKlD?=
 =?us-ascii?Q?+DlB/Ar5k2pQ6QR+YZRVb6O/pJl3B83r9PkBq2dbZIZL7SNitgSHpq/X0sgW?=
 =?us-ascii?Q?6jcClOaKs/A1740PL+LXXQ8bCqRkXgeC4DqrmjZgnWsWqYjA4YKY2xIyy/0d?=
 =?us-ascii?Q?zThYTFZ/Cr+/Zu0zI5Irjms8BnlBt57FYEPesmzi03N6f6urksPSN6uWW4r+?=
 =?us-ascii?Q?C4NeASpBB/X9lVf4UoTky9ZOXoaeysHp0RxIMvkSMPSBXrw6ISIh04yViygR?=
 =?us-ascii?Q?sXD18dB6+i/EsFzRLRwFuCkriCiZb9NrDR4Sj0D2M6V0GQixzKBqGbxl40Ja?=
 =?us-ascii?Q?mSdl1djgcm8K5qdcj7Hv2FUymzokw8L2tbTIPXwpDZmFP8lI9zp/BGCaEyGg?=
 =?us-ascii?Q?PAtTnSOM2gV5E+ra2FJ16Rruf5rDnzLvsmKP2WbYV6y/q1ivdG59BEvV/xAA?=
 =?us-ascii?Q?/PH12OvbGfAGw5KP1Ng1LoLvCzMHNGaBycpuBR9rM70C7sUNVZWrO4RPWJmR?=
 =?us-ascii?Q?NI0zLCMb3xNitwPUUhvkH3NpZR05vvQXZrVJHtFE1vQC0Sa9K6PA0qTcjGwl?=
 =?us-ascii?Q?b4USxyjtk+22Cpe02+ZhelQOL4WFuOOImle6etXIK7oY+MWABbDdDxc445l7?=
 =?us-ascii?Q?gVI9dbSCMB3nC/foYgwNcn6uJ+vdpfEKPHULKC3zx3inSYKLq1VAke129JuH?=
 =?us-ascii?Q?rm9umFuASJr4KVOaZh06Zi55htOGJj8iDaoCb0wuTSQ6HhV94RfczEyC3Vk9?=
 =?us-ascii?Q?CKQOL6ZS9lBVfOryvOvSQGzkv69afuGKuE81oBW9kAlTCpOFxfKCPdvKszq/?=
 =?us-ascii?Q?d7SrkBhnYmpg4/u77ktcD4ApbUh8+48qm2IdHbufMCWrKlr0QzS/SBAHqtCA?=
 =?us-ascii?Q?fbi1ltw3be4ffh4127Ea2RiTOtKKicxv6n5zCbj6VLP0bi/hSh2//Ry6/Mtr?=
 =?us-ascii?Q?Bp9e/gOMk9Q0vQS7l1oyRPHto79xU29fSLP5e/4hXOUnvOM8jJF2KZBcyaYN?=
 =?us-ascii?Q?ghty2J1jE1GrW896IGzUOmE1v2L8Ebbr?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?GjRaVHXlk6hPABnWyYgMeUdUK2USxLooERGSxU/Fah++WX6taVRcpAWd2a54?=
 =?us-ascii?Q?TR+yxFRtpZAeGFx7lapiFpvs0/IhtZTHIVjyTy7Yt90SwDl4Anlg2a9zSzPV?=
 =?us-ascii?Q?L4NTYSiKhR7jLoO4Mnm8z1ieJToJZw1qIMwjHzUOflMAT/XXS+f8GY3u1DSu?=
 =?us-ascii?Q?kIdzsTwAJdrKMjE9SNkCodCsh/nApyqvHeTHNhg7cix/aYzDIFv2bkjF1wDW?=
 =?us-ascii?Q?uDBl++sM4JoSUY+l1JlOBe0Q4nhSGx1YpxPeouY42zb8uYIPGgoB75LqkdOs?=
 =?us-ascii?Q?iCVFcWBRZgFu2KO2zl7n1ZaMMCA0L4KpBJNvp32Kh+n9SwBCO8DH8khA+FpI?=
 =?us-ascii?Q?jfW/k+k92PB0JO2Q0nBubj7PUy4j/+Rndy/rCI+fiJJHX4Za10qnRsn5J7CM?=
 =?us-ascii?Q?OEpYieAYiw+WkA7BcqaT9w9sNPyDbfNqGHGz4lbJg9v7d9PIOr5RFLO3OpPt?=
 =?us-ascii?Q?/DYHZAgUSYJybAPH/8aaEb99NYIk0CKhKCW8eHkb+MQ9+wmsIEIMtFISyUx5?=
 =?us-ascii?Q?HmHFsekci581Z+wjsyM5E5HJ71zh985mOwNctRjXd3e1BCwh8aTVD72pXf0f?=
 =?us-ascii?Q?+nek21/sHmTlRPXM+i/5zetGQ2EqbXAWMrVh2yfgUHj/Cf1ZvOD3UWRxuzR6?=
 =?us-ascii?Q?tF4MPIjUykIMFwclxWbmnLsInJqWvbWv9FozaxYdM8BsnkRgoW4ercdNAZUB?=
 =?us-ascii?Q?hhmWooLQdVvLu7KjjEkrV/Jx8eE6CcobfRKRxmg3mLpHd9tMr0rVerlcSR1/?=
 =?us-ascii?Q?jZRlTTN6gz8dGgdxMwXMdtTRecYhDEHAgLeNQ26SsC2a4BzDhJbrAgc26eF9?=
 =?us-ascii?Q?FY0aCsofa3H2MaDy0Psw9QVTFxHFug4lotQPaFTvjdvnI1gAS6Xr5DPamRlN?=
 =?us-ascii?Q?fPGMK7WWwstBNa9H+5zQs8tqvh3wD/MPh/OoIfo8aTuz8+K6RAa02/GvgWtq?=
 =?us-ascii?Q?p+i7aWVHMPjsDTzjWlX5dvHfKXDYhXSO0MdiNvGm00/rfI1B77N9Gcze2HkL?=
 =?us-ascii?Q?iDgUCgyl+k5Ka3dXHgRVLRosRKzzmgeg9e8y5Y6732bpQ0VgGY3J9rIxQ7hX?=
 =?us-ascii?Q?TugUivgz9OUxg0xyHkqcI6aMNB19HMu6Afm1y/o83hNERUjqPIUmy36P9QN2?=
 =?us-ascii?Q?Z/26to+vdULPnMhyL8CaXt8OwHJnrI1oM240hu7251lAHvSJJUglII2+V5jd?=
 =?us-ascii?Q?KUrBxeGyiIo+oSOmx6lwJ7/tj6ud6YOl5fko3zLLAtiVC0kHFmA9WE13Gr5U?=
 =?us-ascii?Q?gJqTybT2eIFPvunGCz+H07A2zdFfP/9hqN6uRVwtFtMTvyn8Bk1IkL+2Pnmk?=
 =?us-ascii?Q?F3fImNe/kWsnbVJJUP7E6Eodo4At5kFBbPXOqP90Q1NGVDT3XYRennkeDJq8?=
 =?us-ascii?Q?qZJdKyH+tvNBE5UEGFzFY1kMHaOgBGYKUA5Z/fW4ckBAg+C2QZbnm+k9a57U?=
 =?us-ascii?Q?CZwo8bfGoDD9UZhoIhIh3L2eCsZ/zn2/5u4bXWIJ8yIib98PSKW9KR/QsOiE?=
 =?us-ascii?Q?ky4JujhNe3YCIo5hHQhUWeQU3gBLPWCgtdDkR0vJpWAlAmTmYXT1FB5KBFFR?=
 =?us-ascii?Q?+zkhOgH7r+mFRsAKahbWlAuKKXAcuYri+OKRSShN?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fa2271f7-93fd-40ca-c54d-08de08001c16
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2025 13:22:49.7054
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: x83P3AmmgvzsJYu7bTvsTkErButfvrBUtZuOBPbb7Tg+wjMQ8U7Lb1W8p2hMH5Ye1X3hnpdZc60OnPpeA2a0GA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR03MB7136

The 4 patches updating SAL annotations all
Reviewed-by: Owen Smith <owen.smith@cloud.com>

________________________________________
From: Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 10 October 2025 10:08 AM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh; Owen Smith
Subject: [XENVIF PATCH v2 1/4] controller: Map out IRQL annotations

This is an initial, exploratory work to help inform the rework of
the controller interface.

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
v2: I've removed the annotations on the VIF interface since I haven't finis=
hed
my analysis of that.
The previous version contained lots of trailing space deletions, which also=
 have
been deleted in v2.

Resending yet again because the patch set was blocked by the mailing list.
---
 src/xenvif/controller.c | 16 ++++++++++++++++
 src/xenvif/controller.h | 12 ++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ae86837..e032972 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -137,6 +137,7 @@ ControllerReleaseLock(
     __ControllerReleaseLock(Controller);
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ControllerSend(
     IN  PXENVIF_CONTROLLER  Controller
@@ -177,6 +178,7 @@ ControllerPoll(
     Controller->Shared->rsp_event =3D rsp_cons + 1;
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerPutRequest(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -248,6 +250,7 @@ fail1:

 #define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerGetResponse(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -318,6 +321,7 @@ ControllerGetResponse(

 KSERVICE_ROUTINE    ControllerEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 ControllerEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -345,6 +349,7 @@ ControllerDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -390,6 +395,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER      Controller
@@ -597,6 +603,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -670,6 +677,7 @@ ControllerDisable(
     Trace("<=3D=3D=3D>\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
@@ -732,6 +740,7 @@ done:
     Trace("<=3D=3D=3D=3D\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
@@ -762,6 +771,7 @@ ControllerTeardown(
     __ControllerFree(Controller);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -802,6 +812,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -842,6 +853,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -882,6 +894,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -976,6 +989,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1016,6 +1030,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1056,6 +1071,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/controller.h b/src/xenvif/controller.h
index b14e066..18e09b7 100644
--- a/src/xenvif/controller.h
+++ b/src/xenvif/controller.h
@@ -41,17 +41,20 @@

 typedef struct _XENVIF_CONTROLLER XENVIF_CONTROLLER, *PXENVIF_CONTROLLER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_CONTROLLER  *Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -68,34 +71,40 @@ ControllerDisable(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -103,18 +112,21 @@ ControllerSetHashKey(
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
--
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 14 11:03:21 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Oct 2025 11:03:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1142614.1476688 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v8coJ-0008JA-4k; Tue, 14 Oct 2025 11:03:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1142614.1476688; Tue, 14 Oct 2025 11:03:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v8coJ-0008J2-1s; Tue, 14 Oct 2025 11:03:19 +0000
Received: by outflank-mailman (input) for mailman id 1142614;
 Tue, 14 Oct 2025 11:03:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bzgW=4X=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1v8coH-0008Ik-5G
 for win-pv-devel@lists.xenproject.org; Tue, 14 Oct 2025 11:03:17 +0000
Received: from CH5PR02CU005.outbound.protection.outlook.com
 (mail-northcentralusazlp170120005.outbound.protection.outlook.com
 [2a01:111:f403:c105::5])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5f3e7d6a-a8ed-11f0-980a-7dc792cee155;
 Tue, 14 Oct 2025 13:03:11 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by MW4PR03MB6474.namprd03.prod.outlook.com (2603:10b6:303:121::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct
 2025 11:03:06 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9203.009; Tue, 14 Oct 2025
 11:03:06 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f3e7d6a-a8ed-11f0-980a-7dc792cee155
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sWftIYcH9mAiAjFXIod3qSw+bS5Nld1zEhVYectr5d/RpqQ7TVP3QeqrDAkqxVXZAi1R2PnddJi2ALyAOYLks8X9vp4b4zWvc+vSQ2XbLZLpVE1DbinBJmNg5PyTEwPeOgCzkqQy/57ckKzM2ANuKOBFatIINJyhRMT25hmvyfbpKd6G1ETsAgqXctZV5V+KQTmFVRFHRqFbEZMFmkTuXdoeP9SLlz04b4MxqSfF3So4XTGGkTAbByVdv1UEWwxuOswMVFgpUw0jF2j6qSDv1GsvlL0dM8TJprnnnC2jEKVAsZ6mWgYjZpaV6kkn7HjXOUTMrybwQrArXGrcgVdsCA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7AnvW6qL7K8xjzx7AJY9yKWG4CW62jgomQCSP6TPOPA=;
 b=PJ5LluZav4QsC7El46IfK4mcYMLTo8gPrqzgCVqxHpcN5WZ1wmP7QlpC2Vx4as5Q8U8Rp/xwYUwkvDiVClVffIJnxF2Yct8qNJvuJli5SMAAC/hpkToDgi87qFWolh26KYkAkW1p1E0rBxT1tl1vjCjaS2W2Uc6deKaut4x/xe0SlOPDXWSiJ/4tfpH9m4Bj5YJA4qyCalQyxjpH8fsbK6VltQ2qepcNEGtTWUbdnP4kg8HhIPu7pmHmN859sfatb1BMCcKgbZ8qVx6tUhF0J1AmrCjVW+W/luoAgjJm0Ip4JGMKlymjq5Gt66Vt7sno7DSVOYUnYfCiqQFb0UIRnA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7AnvW6qL7K8xjzx7AJY9yKWG4CW62jgomQCSP6TPOPA=;
 b=lpaLu1spIlOo7AeTXRu/AOmPH9VxZUdZufU+OBRi7ClfXI9DPIVUatXpmyTnQSew88pu3a68I+OL0sNwDFQ8jROiqHJe5dYO/vFSyQMmBvki7s9mXA0Jz49h0tw974cjSph5x3Z3jR7ifW8IDvwVTYNoUQ2Ln8nX1BoAKmXsRg0=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@cloud.com>
Subject: Re: [XENVIF PATCH RESEND] Implement faster checksum for x64
Thread-Topic: [XENVIF PATCH RESEND] Implement faster checksum for x64
Thread-Index: AQHcOcWgrxgEvuusrkOggt0FireYCbTBf94A
Date: Tue, 14 Oct 2025 11:03:05 +0000
Message-ID:
 <PH0PR03MB7116EB39E855980F308C3988FEEBA@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251010090940.359-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251010090940.359-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|MW4PR03MB6474:EE_
x-ms-office365-filtering-correlation-id: c7dea3ba-5b1d-42dd-a6e9-08de0b114097
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?m5DLGmWjdT4TgA1bWHy9HvIdBPlCbvyOaiCiCunwP18jrQTqK6vlGzuqZxQ9?=
 =?us-ascii?Q?BLWOs3RneNHMZ2IcNZR6HGYpMYUO10QxmYW7LQnZl6IId/AL2R/CbYJMSXRh?=
 =?us-ascii?Q?C+Idw/tQ4FFSU/BWPi7FU6FFQS9AXgHCB4h1ZMYI/JM5qdG5AMsP69NRbsWq?=
 =?us-ascii?Q?2lwrZw5dbV2d2aHKcss78/9dVUMNum/FrkVl3v61yxCp5XNuRKK+gy5t86qa?=
 =?us-ascii?Q?Wh62Z0v7LRQV15esGLdgR35aFCWfjV3D/X9r54k5r88mDP7OKsk+8KkX1OKl?=
 =?us-ascii?Q?2wZiyK+Nrk4L58FktdqlZre4uHFeNGqs3aEpzbQfZ6zX40a7doAu9LgUH3K/?=
 =?us-ascii?Q?KjljppbU0WO8kQHSF745PdyTWcE45rO3x4QHyMXKebQflVTga8JH/5WW2R7C?=
 =?us-ascii?Q?nZkjwu+wWzywH2vAcMq3/wGcIikNZ2hlt0rIpEwaZUXvGcUFoew2nx6EC6Ww?=
 =?us-ascii?Q?iU2y1UfmyCvjXgoDhaL+fQiSVREQuKEfvDW+bxbDqNXNqCsUiG7rbW836ifX?=
 =?us-ascii?Q?JdvGiLwh/9+kQEa6gXVd5mP65LnW2U+B2F6Ytw8GBvxfa25KGTv7JrI5WH3c?=
 =?us-ascii?Q?+4OleiP3dCWCT8GbMDgtwfiv+TQ8aE3WgTVwQK46BXJTojONAOwdzhqVM+U1?=
 =?us-ascii?Q?R0eOZeo8b5QEeXX2pa3JFyEh8sBTUW4qJ+I3n8UT5IyofkKB9RFkkK/adnY0?=
 =?us-ascii?Q?yAA7y05tjoJi1qpZtCzyDY/ggNkr3cFtSyWkYsigqI94tiG728k+mjSvkYLz?=
 =?us-ascii?Q?2BgoIQILLRETD6uWFc9wa8IxgGkoXiCkNSdRh4ie7onsY+zHwNXSiAvkPxJS?=
 =?us-ascii?Q?wRvTMs6J+VRaFV8zZZ6pUWidyJCE0JJRxfMZbo63+OOB3xTur1oLjGxMfZNh?=
 =?us-ascii?Q?IhK1ObOJC4/BaZDWrldzKqw/8Nh8G3SBDf0cbkib5oDeB7bQpEqcAmOJfnHA?=
 =?us-ascii?Q?dvLvFRn2Pmy7VDtKeB7Ni6LNXJDH1PmFqohgNrbI4Faeeihs7zBbogZPLmI5?=
 =?us-ascii?Q?ImgApxd+osJsduPsUN4SYe2U2iMs4up0Kcx/BU9GNsOvON9tDkiSCt2yloFn?=
 =?us-ascii?Q?VN9st6ubSmZWpu4NVb99GvTZgQ2JIFJeXmu+roTyvZ6LREpj2RkJmNp3gIJq?=
 =?us-ascii?Q?FPDLWOCy3faUBxQsH2fp/5KOljxXT5QsM2z15Wkr18F+rrvnaxDy4M//uSkH?=
 =?us-ascii?Q?/i4D3xsgUGyZhVD6tDE3f/Al6qpRBc8PqdOQ2B78rkqDxRtKrlceJTJyfmnI?=
 =?us-ascii?Q?mwGjBq3LvcW47vh1egZH2SZVvqkWh/tjOqlipfSEIAgLHNjyXl826xi6wxPo?=
 =?us-ascii?Q?iiCb9nN5TJ0ctm0fgqPzs8PCQ9BcENwDPVDFYTRWrZZogm74w3Use/ENfPsA?=
 =?us-ascii?Q?QeahRP899JlJRNTJ8ETuEkGrS1yWwAn+jcctr6FWAYcqM1g0fs+rcH0Jv0It?=
 =?us-ascii?Q?4UOST/WcfaW//1KrD0yMgb/WH3Lo7R/q?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?xnWEE21Crt3o7rtKSUhGYy5sdGryjpOm088h8dbrZLpLh7AgK5f6RxBisdIE?=
 =?us-ascii?Q?9/xrbuh3VXj48QvjXFbbtOnoEvOVzJP9pnRn+rH1cIwKi3FqVSsYCL5rug7b?=
 =?us-ascii?Q?AWTY44RTmBar9c+G++h/2ZvaTckytnFLLpwDiRBewC5ezwtyVeJYtzNHQ7in?=
 =?us-ascii?Q?o6FOujS3S7G3vmE/fxJF5Ep+Gu1mLkOz8KbIubmlwUBjJ6/D4zmTmb8cbvY5?=
 =?us-ascii?Q?0k172PoUDlwhNohTBuvYY3RPUETyUcLOsaY/mIhRfXb9HTX2M+Fosem6xfmn?=
 =?us-ascii?Q?s+Prck4ks2ruF0L5N7L3X0igNd7yinN02V9JTBuPGnxID731v85wNZo84rrn?=
 =?us-ascii?Q?4QLq6CZROuXAEyhzEOIaXDTmQ/mPSrqt2oQTAPWfRCmzz3jnhKNDLCJj9sE4?=
 =?us-ascii?Q?iUCFW8IJ5Al7zJcJI5EZ/HSAS3RSF+p4tv2IhAPbvgGP40tl3jNAc5eLpp/N?=
 =?us-ascii?Q?ZfwWE8TklkFNNlfxmA94c/H98oFsyQG3i82Vrppyb4rrwFWoR5DxNR2V1RJz?=
 =?us-ascii?Q?qUF5w0wFGyEm/+A+Cwl8q3HBkzmh86sn/sNWNA/Tt07l4cjfHN5wmNGdAYBl?=
 =?us-ascii?Q?RMaQIdjFn3cfdHuqx5586HlrzcVfdBtkKCEuCWvwYg+MC0x0lRedrJRVadHn?=
 =?us-ascii?Q?7ph6quC/LP0hflVv2+Dicxm/I/8Tp3Hi6CpA12NnEA1HVo+gwKRUyM7Wv7FU?=
 =?us-ascii?Q?PtF8VvHm9ew469wTRRh9gbBFJg9sE6MfdyIty7c1XjecMrG89x+OhZpftTkh?=
 =?us-ascii?Q?y+Dok0/g5tzI9GDaeaLHckX3FncUhpWkVM8e7i9VS7TgikbFjEWaYyBiWo04?=
 =?us-ascii?Q?RYDwGbH+ri+I/hBMvwv0O4wQCAaUQxvL1nCdYXgJDFmVoMmJ+U/dUNuoAv6g?=
 =?us-ascii?Q?9ncB79RV/U6DIVU8Mcvl+FpzpJVFVI09uUTLcKWIgOZM2cxwPNPy6Mr5O+kN?=
 =?us-ascii?Q?YaFI1Ec2oNP5j0BmToeIZhkh8z8QZzdPHelhHy5qoo/2A1MrJE8Wjj/K+wI5?=
 =?us-ascii?Q?HQirdwrqAsYdp0sYbalc9O2tNM9Dp0MX59kLbmUV3f/xQ/RBS9D8YBgb4fs4?=
 =?us-ascii?Q?yGTiZKi4Bcn00I6HfSljiJoUy3oTfXOjVlBLE3Ob8YLJxynHUyqrh2lssoQl?=
 =?us-ascii?Q?7DrlkQPnFixejh/nM6/qgIdwfpNONBhEXOXwms9aHTrllz6hUQGgqzvSfhkT?=
 =?us-ascii?Q?49VRUv0GA+s+v4jI02HLwzl3QjlB+XHt0coZMOb7Alq8OEVqqrJHVqke1cdO?=
 =?us-ascii?Q?wfYr5ILfBH7SrmBHv8sneU6YA9vccfxuhPtEFr5xhwnwZTBrOAUsYNSrWxbp?=
 =?us-ascii?Q?F8Q0NBYU2ZvG2Yv5fedKLrRTyJUmT3hfrAThJqJ40ydQbf7HWtUIQw8RdkzG?=
 =?us-ascii?Q?V1Xnz+ZZNniNnWhA4pYYdw1MpMfuG+TSLhlaCIQqgzM93m9BjZsqelJNxWPt?=
 =?us-ascii?Q?Kyzz7LW+U3hw8L0JcgOgfIGYUL5GFF34NTyHGw5CFA7vb6XJzXTCNK/vWw08?=
 =?us-ascii?Q?zbPXD9XFOTPLE4IlUdyzUtGN0qZZ2TXeGfCeNK+h33Whf1T8XOnPM56/MQSa?=
 =?us-ascii?Q?mgnQGJHtdEjbcQSsacAT+hhl93SjEJycuDywiZXj?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c7dea3ba-5b1d-42dd-a6e9-08de0b114097
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2025 11:03:05.9035
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 6gDy4n95I9HFBP8xjgeeFSGVweIixyFpXQsSzmxsiyuUnMXtEBNtR+TedwR8CZ1Xs38vBLcom3BwfIN517XYFw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR03MB6474


Reviewed-by: Owen Smith <owen.smith@cloud.com>

________________________________________
From: Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 10 October 2025 10:09 AM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh; Owen Smith
Subject: [XENVIF PATCH RESEND] Implement faster checksum for x64

Implement the Internet checksum using parallel summation based on
add-with-carry per RFC 1071, following the algorithm described here:

https://blogs.igalia.com/dpino/2018/06/14/fast-checksum-computation/

This implementation provides >8x speed improvement over the previous C
implementation:

                C               assembly
    40          9.53867 ns      2.77659 ns
    128         31.0441 ns      4.43259 ns
    576         125.706 ns      14.332 ns
    1500        320.611 ns      38.434 ns
    2048        436.591 ns      53.45 ns
    4096        869.137 ns      114.892 ns
    8192        1.73352 us      239.596 ns
    16384       3.46273 us      482.943 ns
    32768       6.92263 us      974.495 ns
    65535       13.8462 us      1.9464 us

At the same time, move the entire checksum code into a single function
instead of having a static inline implementation and a wrapper.

Signed-off-by: Tu Dinh Ngoc <dinhngoc.tu@irit.fr>
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
Resending a 4th time (!) due to previous email being lost.
---
 src/xenvif/amd64/checksum_amd64.asm | 120 ++++++++++++++++++++++++++++
 src/xenvif/checksum.c               |  37 ++++-----
 vs2019/xenvif/xenvif.vcxproj        |   5 ++
 vs2022/xenvif/xenvif.vcxproj        |   5 ++
 4 files changed, 145 insertions(+), 22 deletions(-)
 create mode 100644 src/xenvif/amd64/checksum_amd64.asm

diff --git a/src/xenvif/amd64/checksum_amd64.asm b/src/xenvif/amd64/checksu=
m_amd64.asm
new file mode 100644
index 0000000..8fbc241
--- /dev/null
+++ b/src/xenvif/amd64/checksum_amd64.asm
@@ -0,0 +1,120 @@
+; SPDX-License-Identifier: MIT
+
+.code
+
+;   VOID
+;   AccumulateChecksum(
+;       IN OUT  PULONG  Accumulator,
+;       IN      PUCHAR  BaseVa,
+;       IN      ULONG   ByteCount
+;       )
+public AccumulateChecksum
+AccumulateChecksum  proc
+    ; rcx:  Accumulator
+    ; rdx:  BaseVa
+    ; r8:   ByteCount
+    ; rax:  temporary accumulator
+    ; r9:   scratch
+
+    mov eax, [rcx]
+
+l64:
+    cmp r8, 64                      ; eight qwords
+    jb l32
+
+    add rax, [rdx]
+    adc rax, [rdx + 8]
+    adc rax, [rdx + 16]
+    adc rax, [rdx + 24]
+    adc rax, [rdx + 32]
+    adc rax, [rdx + 40]
+    adc rax, [rdx + 48]
+    adc rax, [rdx + 56]
+    adc rax, 0
+
+    sub r8, 64
+    add rdx, 64
+    jmp l64
+
+l32:
+    cmp r8, 32                      ; four qwords
+    jb l16
+
+    add rax, [rdx]
+    adc rax, [rdx + 8]
+    adc rax, [rdx + 16]
+    adc rax, [rdx + 24]
+    adc rax, 0
+
+    sub r8, 32
+    add rdx, 32
+
+l16:
+    cmp r8, 16                      ; two qwords
+    jb l8
+
+    add rax, [rdx]
+    adc rax, [rdx + 8]
+    adc rax, 0
+
+    sub r8, 16
+    add rdx, 16
+
+l8:
+    cmp r8, 8                       ; one qword
+    jb l4
+
+    add rax, [rdx]
+    adc rax, 0
+
+    sub r8, 8
+    add rdx, 8
+
+l4:
+    cmp r8, 4                       ; one dword
+    jb l2
+
+    mov r9d, dword ptr [rdx]
+    add rax, r9
+    adc rax, 0
+
+    sub r8, 4
+    add rdx, 4
+
+l2:
+    cmp r8, 2                       ; one word
+    jb l1
+
+    movzx r9d, word ptr [rdx]
+    add rax, r9
+    adc rax, 0
+
+    sub r8, 2
+    add rdx, 2
+
+l1:
+    cmp r8, 1                       ; last byte
+    jb l0
+
+    movzx r9d, byte ptr [rdx]
+    add rax, r9
+    adc rax, 0
+
+l0:
+    mov r9, rax
+    shr r9, 32
+    add eax, r9d
+    adc eax, 0
+
+    mov r9d, eax
+    shr r9d, 16
+    add ax, r9w
+    adc ax, 0
+
+    movzx eax, ax
+
+    mov [rcx], eax
+    ret
+AccumulateChecksum  endp
+
+end
diff --git a/src/xenvif/checksum.c b/src/xenvif/checksum.c
index 4e8f2fc..a7181c6 100644
--- a/src/xenvif/checksum.c
+++ b/src/xenvif/checksum.c
@@ -35,6 +35,7 @@
 #include <stdlib.h>
 #include <ethernet.h>
 #include <tcpip.h>
+#include <intrin.h>

 #include <vif_interface.h>

@@ -43,8 +44,9 @@
 #include "assert.h"
 #include "util.h"

-static FORCEINLINE VOID
-__AccumulateChecksum(
+#if !defined(_M_X64)
+VOID
+AccumulateChecksum(
     IN OUT  PULONG  Accumulator,
     IN      PUCHAR  BaseVa,
     IN      ULONG   ByteCount
@@ -70,16 +72,7 @@ __AccumulateChecksum(

     *Accumulator =3D Current;
 }
-
-VOID
-AccumulateChecksum(
-    IN OUT  PULONG  Accumulator,
-    IN      PVOID   BaseVa,
-    IN      ULONG   ByteCount
-    )
-{
-    __AccumulateChecksum(Accumulator, BaseVa, ByteCount);
-}
+#endif

 BOOLEAN
 ChecksumVerify(
@@ -96,7 +89,7 @@ ChecksumVerify(
     Accumulator &=3D 0xFFFF;

     // See RFC 1624, section 5
-    __AccumulateChecksum(&Accumulator, (PUCHAR)&Embedded, sizeof (USHORT))=
;
+    AccumulateChecksum(&Accumulator, (PUCHAR)&Embedded, sizeof (USHORT));

     return (Accumulator =3D=3D 0xFFFF) ? TRUE : FALSE;
 }
@@ -120,7 +113,7 @@ __ChecksumIpVersion4PseudoHeader(
     Header.Protocol =3D Protocol;

     Accumulator =3D 0;
-    __AccumulateChecksum(&Accumulator, (PUCHAR)&Header, sizeof (IPV4_PSEUD=
O_HEADER));
+    AccumulateChecksum(&Accumulator, (PUCHAR)&Header, sizeof (IPV4_PSEUDO_=
HEADER));

     // As-per RFC1624, Accumulator should never be 0.
     ASSERT(Accumulator !=3D 0);
@@ -161,7 +154,7 @@ __ChecksumIpVersion6PseudoHeader(
     Header.NextHeader =3D Protocol;

     Accumulator =3D 0;
-    __AccumulateChecksum(&Accumulator, (PUCHAR)&Header, sizeof (IPV6_PSEUD=
O_HEADER));
+    AccumulateChecksum(&Accumulator, (PUCHAR)&Header, sizeof (IPV6_PSEUDO_=
HEADER));

     // As-per RFC1624, Accumulator should never be 0.
     ASSERT(Accumulator !=3D 0);
@@ -250,14 +243,14 @@ ChecksumIpVersion4Header(
     Header->Checksum =3D 0;

     Accumulator =3D 0;
-    __AccumulateChecksum(&Accumulator,
+    AccumulateChecksum(&Accumulator,
                          StartVa + Info->IpHeader.Offset,
                          Info->IpHeader.Length);

     Header->Checksum =3D Saved;

     if (Info->IpOptions.Length !=3D 0)
-        __AccumulateChecksum(&Accumulator,
+        AccumulateChecksum(&Accumulator,
                              StartVa + Info->IpOptions.Offset,
                              Info->IpOptions.Length);

@@ -293,14 +286,14 @@ ChecksumTcpPacket(
     TcpHeader->Checksum =3D 0;

     Accumulator =3D PseudoHeaderChecksum;
-    __AccumulateChecksum(&Accumulator,
+    AccumulateChecksum(&Accumulator,
                          StartVa + Info->TcpHeader.Offset,
                          Info->TcpHeader.Length);

     TcpHeader->Checksum =3D Saved;

     if (Info->TcpOptions.Length !=3D 0)
-        __AccumulateChecksum(&Accumulator,
+        AccumulateChecksum(&Accumulator,
                              StartVa + Info->TcpOptions.Offset,
                              Info->TcpOptions.Length);

@@ -338,7 +331,7 @@ ChecksumTcpPacket(
         ByteCount -=3D Offset;
         ByteCount =3D __min(ByteCount, Length);

-        __AccumulateChecksum(&Accumulator, BaseVa, ByteCount);
+        AccumulateChecksum(&Accumulator, BaseVa, ByteCount);

         Length -=3D ByteCount;

@@ -378,7 +371,7 @@ ChecksumUdpPacket(
     UdpHeader->Checksum =3D 0;

     Accumulator =3D PseudoHeaderChecksum;
-    __AccumulateChecksum(&Accumulator,
+    AccumulateChecksum(&Accumulator,
                          StartVa + Info->UdpHeader.Offset,
                          Info->UdpHeader.Length);

@@ -417,7 +410,7 @@ ChecksumUdpPacket(
         ByteCount -=3D Offset;
         ByteCount =3D __min(ByteCount, Length);

-        __AccumulateChecksum(&Accumulator, BaseVa, ByteCount);
+        AccumulateChecksum(&Accumulator, BaseVa, ByteCount);

         Length -=3D ByteCount;

diff --git a/vs2019/xenvif/xenvif.vcxproj b/vs2019/xenvif/xenvif.vcxproj
index 0412426..80f37b6 100644
--- a/vs2019/xenvif/xenvif.vcxproj
+++ b/vs2019/xenvif/xenvif.vcxproj
@@ -88,6 +88,11 @@
     <ClCompile Include=3D"../../src/xenvif/controller.c" />
     <ClCompile Include=3D"../../src/xenvif/vif.c" />
   </ItemGroup>
+  <ItemGroup>
+    <MASM Include=3D"../../src/xenvif/amd64/checksum_amd64.asm">
+      <ExcludedFromBuild Condition=3D"'$(Platform)'!=3D'x64'">true</Exclud=
edFromBuild>
+    </MASM>
+  </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include=3D"..\..\src\xenvif\xenvif.rc" />
   </ItemGroup>
diff --git a/vs2022/xenvif/xenvif.vcxproj b/vs2022/xenvif/xenvif.vcxproj
index be84232..8b7d910 100644
--- a/vs2022/xenvif/xenvif.vcxproj
+++ b/vs2022/xenvif/xenvif.vcxproj
@@ -80,6 +80,11 @@
     <ClCompile Include=3D"../../src/xenvif/controller.c" />
     <ClCompile Include=3D"../../src/xenvif/vif.c" />
   </ItemGroup>
+  <ItemGroup>
+    <MASM Include=3D"../../src/xenvif/amd64/checksum_amd64.asm">
+      <ExcludedFromBuild Condition=3D"'$(Platform)'!=3D'x64'">true</Exclud=
edFromBuild>
+    </MASM>
+  </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include=3D"..\..\src\xenvif\xenvif.rc" />
   </ItemGroup>
--
2.51.0.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Thu Oct 16 10:16:19 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Oct 2025 10:16:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1144401.1477793 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v9L1t-0002D7-7J; Thu, 16 Oct 2025 10:16:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1144401.1477793; Thu, 16 Oct 2025 10:16:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v9L1t-0002D0-4m; Thu, 16 Oct 2025 10:16:17 +0000
Received: by outflank-mailman (input) for mailman id 1144401;
 Thu, 16 Oct 2025 10:16:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cni1=4Z=bounce.vates.tech=bounce-md_30504962.68f0c5eb.v1-836cc6283bab46b2a7c542bea9729027@srs-se1.protection.inumbo.net>)
 id 1v9L1r-0002BZ-Vg
 for win-pv-devel@lists.xenproject.org; Thu, 16 Oct 2025 10:16:16 +0000
Received: from mail186-27.suw21.mandrillapp.com
 (mail186-27.suw21.mandrillapp.com [198.2.186.27])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 244b86fd-aa79-11f0-980a-7dc792cee155;
 Thu, 16 Oct 2025 12:16:13 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-27.suw21.mandrillapp.com (Mailchimp) with ESMTP id
 4cnP4C5c5Cz6CPyMj
 for <win-pv-devel@lists.xenproject.org>; Thu, 16 Oct 2025 10:16:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 836cc6283bab46b2a7c542bea9729027; Thu, 16 Oct 2025 10:16:11 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 244b86fd-aa79-11f0-980a-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760609771; x=1760879771;
	bh=pGehs57BX7QtE9B0pal9Q5Cq48056OMYcNzrHDjbcJI=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=kRSx1MOWiKgzLMJJGkVMY5JnC98dU2QqSvUPWmJBX2H/xHInEakixizLz/uzMOfps
	 4ejx5fxCkyjoawaUpTw6vU7fhBQTb7mzo6urbOwET8OtCSx5r6/wjVbGyngtgEnVkt
	 Zyhbd3eczzE+zXgtGtxUMm9fVdSkG9HJBHk7AMUjlIfoOX39XsVk0+cNs8ChpNLSZt
	 TIgXQPttxNaKa1+2R/Jh3BH0OIWIY0VlVYW3I+/2qOIVz45I5AHmQ7ZzZXu+bs+by1
	 J5ryutcAooGTP4A+LfvuAZTXUCv7kTNcaipMb4pSXHrp/NN8GYwIIyC9vYpsYkMQbt
	 1nJA21OmwprKw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760609771; x=1760870271; i=ngoc-tu.dinh@vates.tech;
	bh=pGehs57BX7QtE9B0pal9Q5Cq48056OMYcNzrHDjbcJI=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=TKgQsjA+PazSuxvXPkGhHaDSvRTW8nVDdLihPv+81QqAubQdZIcPYrRP8c+gjWYzj
	 Wlf7n4Rk2xzaJ4gHcfD1jXynuvV3EzzzDCaEu1nJlmvs3QrCEo1m0MWLXVVSFerXnt
	 74wU7fKCNvHcXM/+glvSyg85KokgcGPISYgSHMbMc709btNgaeFfxnHRogCyrFpYNr
	 nL/0xKQWsLi67Ro+O6o9ynz4et4+USb9P39RjLIHRLCRXFCSrVg6P1MXOKyYSsv28H
	 k4cBXidBQus+d8c65cPdeUmQMHJw8drzBaWMr5Mu4MZ7w7Rd2RRDmDWzDEJUUpllPV
	 GbjoIh9n/feuQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[PATCH=201/2]=20Revert=204e080f819b55=20"Skip=20hash=20update=20if=20front...?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760609771158
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Message-Id: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.836cc6283bab46b2a7c542bea9729027?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251016:md
Date: Thu, 16 Oct 2025 10:16:11 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

...end is not enabled"

NDIS queries the supported hash types before the frontend is enabled.
Controller requests are not dependent on the frontend being enabled to
begin with.

Allow such requests to go through.
---
 src/xenvif/frontend.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index f844a42..5311dea 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1910,9 +1910,6 @@ __FrontendUpdateHash(
     ULONG                   Flags;
     NTSTATUS                status;
 
-    if (Frontend->State != FRONTEND_ENABLED)
-        goto done;
-
     Controller = __FrontendGetController(Frontend);
 
     switch (Hash->Algorithm) {
-- 
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Thu Oct 16 10:16:28 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Oct 2025 10:16:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1144402.1477797 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v9L24-0002FK-8t; Thu, 16 Oct 2025 10:16:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1144402.1477797; Thu, 16 Oct 2025 10:16:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1v9L24-0002FD-6L; Thu, 16 Oct 2025 10:16:28 +0000
Received: by outflank-mailman (input) for mailman id 1144402;
 Thu, 16 Oct 2025 10:16:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=IzOr=4Z=bounce.vates.tech=bounce-md_30504962.68f0c5ec.v1-e7e0f071ab91491d9908c23942d2adaf@srs-se1.protection.inumbo.net>)
 id 1v9L22-0002Es-J7
 for win-pv-devel@lists.xenproject.org; Thu, 16 Oct 2025 10:16:26 +0000
Received: from mail178-21.suw51.mandrillapp.com
 (mail178-21.suw51.mandrillapp.com [198.2.178.21])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2487b24b-aa79-11f0-9d15-b5c5bf9af7f9;
 Thu, 16 Oct 2025 12:16:14 +0200 (CEST)
Received: from pmta13.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail178-21.suw51.mandrillapp.com (Mailchimp) with ESMTP id
 4cnP4D12Vrz1XLFN4
 for <win-pv-devel@lists.xenproject.org>; Thu, 16 Oct 2025 10:16:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e7e0f071ab91491d9908c23942d2adaf; Thu, 16 Oct 2025 10:16:12 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2487b24b-aa79-11f0-9d15-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1760609772; x=1760879772;
	bh=rr8y7B/1C4orfHnYQX46lD7Iu77yLrVn5FYZxzrMaXg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Gm0kCjrFQihbyYNw61UAuDgq8XmnWB/nc7QADlSUnvNSVLQ8wsaUhnULBj9QulEJY
	 CqDcWIC2LTGrEavHdDsHz9nELgtBHC8WLsQUaurMqGIzHZD69gIs0eyn22t7Ez2G3F
	 TWUIzgt2E/6ftemzZXRBLvf7UYryWnXrNY/95eYL6KZZj4RUjXFlfgjQOYx5S6jGN2
	 ok9zd9kMJ6wOvYh6pNdTP9Nmrdk4bHbFDc3lFdHJvlYldE5apBVP/jRcpGrNf3CmrF
	 iMeg0nxeF+/R+yb+24d+iEbFenqXVb5mI5Nlt+EvdfPwZdwRTN64SPRu/9HmyHHkDB
	 YCQVj3VHYWKpw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1760609772; x=1760870272; i=ngoc-tu.dinh@vates.tech;
	bh=rr8y7B/1C4orfHnYQX46lD7Iu77yLrVn5FYZxzrMaXg=;
	h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=y98+3JTaxsVSXjcpDnwW4wD2b0D+YocIAEhN8wMm7r72KpPdUgNOxnatJ99kROw3o
	 YDeelHW5jvJwdO7ZiKJdLCdegbklnVB+9OUpMZQBy2x4TCgJLqlJ53K5qPvnGGrSMf
	 058b0N0k1vsUnc0zPUZa5eYctcZzBS8VQm1vtPMk2dlehKWTDa9upSD67nEiGVZw+P
	 MWQ0JwKXRW6nGX19LR9ZN7ctjeQlXAnXdE9SyVwhBbjlZpXKwjsG1veGzCF6EsAEQ2
	 WI6Wph96aBAcFDxA9UsPddD9zEUjr0wZqi4TBQpy3/9cGL5M590V3R1jLsZwLmHwEd
	 AnhCNrS+JrB0Q==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[PATCH=202/2]=20Limit=20retry=20in=20ControllerGetResponse?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1760609771496
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Message-Id: <20251016101602.533-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
References: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.e7e0f071ab91491d9908c23942d2adaf?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251016:md
Date: Thu, 16 Oct 2025 10:16:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

During unplug, NDIS may issue a hash reconfiguration. However, the
backend may disappear before the request has had a chance to complete.
This is observable by e.g. adding a delay at the beginning of
VifReceiverSetHashAlgorithm and unplugging. If this happens, Xenvif will
get stuck waiting forever in ControllerGetResponse, at DISPATCH_LEVEL to
boot.

Limit the EvtchnWait retry to 10 attempts (10ms each to keep the
previous 100ms limit) and return an error code to the caller if the wait
has failed.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/controller.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index e032972..109c030 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -248,7 +248,7 @@ fail1:
 #define TIME_MS(_ms)        (TIME_US((_ms) * 1000))
 #define TIME_RELATIVE(_t)   (-(_t))
 
-#define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms
+#define XENVIF_CONTROLLER_POLL_PERIOD 10 // ms
 
 _IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
@@ -258,11 +258,12 @@ ControllerGetResponse(
     )
 {
     LARGE_INTEGER                   Timeout;
+    ULONG                           Attempt;
     NTSTATUS                        status;
 
     Timeout.QuadPart = TIME_RELATIVE(TIME_MS(XENVIF_CONTROLLER_POLL_PERIOD));
 
-    for (;;) {
+    for (Attempt = 0; Attempt < 10; Attempt++) {
         ULONG   Count;
 
         Count = XENBUS_EVTCHN(GetCount,
@@ -284,6 +285,13 @@ ControllerGetResponse(
             __ControllerSend(Controller);
     }
 
+    // Use STATUS_TRANSACTION_TIMED_OUT as an error code since STATUS_TIMEOUT is
+    // a success code.
+    if (Controller->Response.id != Controller->Request.id) {
+        status = STATUS_TRANSACTION_TIMED_OUT;
+        goto done;
+    }
+
     ASSERT3U(Controller->Response.type, ==, Controller->Request.type);
 
     switch (Controller->Response.status) {
@@ -311,6 +319,7 @@ ControllerGetResponse(
     if (NT_SUCCESS(status) && Data != NULL)
         *Data = Controller->Response.data;
 
+done:
     RtlZeroMemory(&Controller->Request,
                   sizeof (struct xen_netif_ctrl_request));
     RtlZeroMemory(&Controller->Response,
-- 
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 21 12:52:43 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Oct 2025 12:52:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1147139.1479397 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBBqz-00066Q-Po; Tue, 21 Oct 2025 12:52:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1147139.1479397; Tue, 21 Oct 2025 12:52:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBBqz-00066J-N8; Tue, 21 Oct 2025 12:52:41 +0000
Received: by outflank-mailman (input) for mailman id 1147139;
 Tue, 21 Oct 2025 12:52:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8RPv=46=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1vBBqy-00066D-J1
 for win-pv-devel@lists.xenproject.org; Tue, 21 Oct 2025 12:52:40 +0000
Received: from DM1PR04CU001.outbound.protection.outlook.com
 (mail-centralusazlp170100005.outbound.protection.outlook.com
 [2a01:111:f403:c111::5])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d271d244-ae7c-11f0-9d15-b5c5bf9af7f9;
 Tue, 21 Oct 2025 14:52:39 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by SJ0PR03MB5648.namprd03.prod.outlook.com (2603:10b6:a03:288::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.12; Tue, 21 Oct
 2025 12:52:34 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9228.016; Tue, 21 Oct 2025
 12:52:34 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d271d244-ae7c-11f0-9d15-b5c5bf9af7f9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=s1MSs9WSjLP00HrfhtSbATd+aSzD5nrJvPcahsmjmhJxuGf4aSdTl1TjXVnt2MwfiAnKTQEFPlvQPVkG9aXUegow6d9bu0LrQonMew8sdo9Shrj1d33Hb1Xd3wbiIK/lRaeyk/nmMdjWkH8bBDuUUFJYUkKGzi81TFjmCJI/nglFpMu4/y4wBwhj6Wgkt3HtwGoHD38b88gDJAcXydJ3Id4LEDkYBs4sVOlU5CDYPdzxnMVtmTX4tnNzwiKZJJKZmV+OeXk4o6zXxrrjH2G/J8Ld9aEqWAejmuCwpQ/FKk256vpTd5Dz0Ex5vLcH8EYPwA7NSQFndhyLCT54qmFd1w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=JKrRtJl6UY2i4QRyGN4ogPYVLx7UNuzslqOY5W/rG+c=;
 b=t/pE4D+dXzRFFot+2SGT/NhWBhO/T/r069KXfe8m9IOTn4H/s8Yb1lvRq0rfbFl5YAqVB32T0Anld3rp+8pQcVX3/tgnAggJsSFOleZEMrhv/+kj+k3ZbknQCb66tWS3s64I/psSn5x2/B1bgM6pS23K9eb8v0UhspO2EmTFIoxRhCA3Ym0zoun7BdzeDP0C868tXkp7nroJMuTkswhXRyUJ6pvp+deTJj4XdhAuo+zOKQQPrSXqkLOdYORAV10jKMsythsuKjoGa9L/cDj6/yo6rn1MY54e5ghFDAEQeL3o67k6C1gI3RDM/yH1M3YMtLFCuvnZzslYIfdWUGwVYw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JKrRtJl6UY2i4QRyGN4ogPYVLx7UNuzslqOY5W/rG+c=;
 b=tTRqRC/CvAf5wfDlmfWNbhhktXJ/h+J93QaFl+Yk3w6SNAN9L7t032tBLykQUt+5uSHJG8BYW1/1Z7SP0CJKd4vcUxCXFwOKpaR0NLPTjMc5dSRTQeVsSpoZGCyIFjTBbAtPWbIY607KXwCjk/56MKVrSHbHC/ewW381NUpxXx8=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: Re: [PATCH 1/2] Revert 4e080f819b55 "Skip hash update if front...
Thread-Topic: [PATCH 1/2] Revert 4e080f819b55 "Skip hash update if front...
Thread-Index: AQHcPoXvUz2bITOtfkq6myQT0F7c+bTMkrnK
Date: Tue, 21 Oct 2025 12:52:34 +0000
Message-ID:
 <PH0PR03MB7116581417C3F2A28A1EA34EFEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|SJ0PR03MB5648:EE_
x-ms-office365-filtering-correlation-id: 1fd8365e-e251-48f5-2034-08de10a0b488
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?lj3k6HwmvZKiKGjZy+/3OfmSoOCjL/vy9rkVwBHhSlrpxLsaE7qhISkULHBL?=
 =?us-ascii?Q?KfOq6K6wiX4Jxf1mbEmTNRsE3a6b2YVQarfJHty6WYg2U3L5RdbZsDM7rCAx?=
 =?us-ascii?Q?v9eB+si6zFYBOnfvNZW8WExHaRPLjANlOsS7saX9dicSHzW4XpxzA9wOm/Hg?=
 =?us-ascii?Q?aFvjPAWlRsxfgAVPwgy61d2dJ+gTcarAn99wONA4w02zZiYYwuzaGUO3JWWR?=
 =?us-ascii?Q?anLTyZZDG3oSW38DOeQQD/952s9F19eb/1K00ZH4CRFQCFRkotHMUrTSLO+Z?=
 =?us-ascii?Q?upUwrqzmOgsuqwG1fhITkmc43xZB3wBXsXjwIkDy5KL2q/CX41l4ap2rrQEG?=
 =?us-ascii?Q?eBr8FFqGEdfmerpFPdrsQAu1lchY+n1FqLF2XB92+9JyEwktPUOobG4D7HRn?=
 =?us-ascii?Q?oPZ67/HVB/XwLvuo6aRwSFKBGTjOu7mUlE65+Qtn4IOaVYpho5ssBvrff8RJ?=
 =?us-ascii?Q?MiepxulKB6P46h/XHcDn4QX52YoExD/nshZqucHBrdeH9VVFiSO6g/8cfbdS?=
 =?us-ascii?Q?ZolF+y2zhzsjQ4QWGASIbIXjvACKv50LCHnPx8AMfWMYa6103bqSX89rT03W?=
 =?us-ascii?Q?+l3eJg5NjMlfiEZ7z9F0anYkRVdg8IuKSuVgiLPYX7PaCvAKW/CWYHYGsGUT?=
 =?us-ascii?Q?acreMP0pmyXAN1LDdDm0XpeT1t22Lq1Y+/3U0/WAzAUq5xLJOXph39q6seX0?=
 =?us-ascii?Q?3qMbd90CsEraZ/DVGHXVqCRhU4YervhjMvuAz1T2qSYUIm30Ac5Mikh5jo+0?=
 =?us-ascii?Q?tQ7KBo9jbtcwBf9p/7Pqd6WHWayNsTOlb/xAS8rjBPu8PaWQwSkt1Trq9lp1?=
 =?us-ascii?Q?DsbjFCpDmP+yUz5okekRq9WtubZ8MyqvPgZsV197ZD6+a6tut7JZW7DHiimc?=
 =?us-ascii?Q?ImK+/gDMDdGQVSuQu4MZX5ijUYRIupvKb9lOe6lpVF7eoWockFtee7pOM9ib?=
 =?us-ascii?Q?kKL7EsnZyklmLtogDwihtu2G8l4FBoUFUwGeqPV3/g/vVuJKw+7EYgocD2su?=
 =?us-ascii?Q?607OHdW7/aRMX23eA5f8k3570dIU61J2M5/RrLti9nnjTlyTh7fXktjHjiXY?=
 =?us-ascii?Q?If1Z3wiR3hyZrZ5SOGbJzL1QtxhdicR7lzcImSCacv0/8E6wf5zcVRdP1Dd2?=
 =?us-ascii?Q?fPKxVDDGpJ/+jrW3zew85esBoPq/Ln3kmFLDFn5IOA3c/uxUbBpxEttDAmgO?=
 =?us-ascii?Q?kiiGsUKp0z6sUOewz0sbdCsHB9nU5peeCU0ymHtgKAAIeysylScq8blaKtXj?=
 =?us-ascii?Q?QDIYIirfDU1L66hess8yH5T1Ed/SWKbuenC7GKrKtmxtalw9/wnHRwfCIC8V?=
 =?us-ascii?Q?SBQPozZSFHnJng4k15BVVGiFYUMd/CbcE95FN4dLYjMxNCNLMIJIQwXhoH21?=
 =?us-ascii?Q?FDKNaYEiYClfSPXgZhJnMMF23PeShJFOOtNtGJORUYilveY5Pt8SFaEfQwsH?=
 =?us-ascii?Q?+SlmIosmDXnsXf+PxVI454+7r2QDtujr?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?/7+3LiWLpC80ldbrsDDTUZl0ogpu6ZXrLpRnTIWThKhCpKx6bRr44F6jOVx0?=
 =?us-ascii?Q?s4xPdhJcN138KZbCT7INQHqBEog43Jiukb7LM6YkDJG73VFWK7VzAv4bKCDW?=
 =?us-ascii?Q?B2fnY9DmKW7RlD4OS+uSNdf8P+1bBDZPWgUbuCuOnptnxoaqt1DEoVcQsTV+?=
 =?us-ascii?Q?yQw2lBUFoDoxkHk+y8RivCSRa0FDb8+YXXSCY1cIJiT/a1eHJqWDnBiyGLHa?=
 =?us-ascii?Q?++WT2jkmDOH0RYC5Ud43HXRyq8QPAzA/itQ1q+ZCoUxG+pxutUbaCWRl9S+Q?=
 =?us-ascii?Q?m6GO6nRWWL7ksgqwwAfOAKrCFBFHdSnt5UvzYoLZ2RvBzlxEIUeppeSj+CM/?=
 =?us-ascii?Q?OEBrYaArJvuSg3qlE7qCJuwnWYbiC+mLh9q51ad60HV1ZsYzKamqTcUWJqy4?=
 =?us-ascii?Q?1ZGcU2WKpqQqkwb3cyr+SHnyTyZQ51IELmjslQ9UurMitlThV6OKNXp9wG6A?=
 =?us-ascii?Q?7ADjs8nk3cp/yLUI/11WWI8GZxXJys+6uTt/z0V0lq3Id/sRKBhMj0WAjUro?=
 =?us-ascii?Q?t/n/HBLLZBuzssbywuL5Q5NgW2aEGvCZjJ3VAlljSXEdfujiqJnO+oYmDgM3?=
 =?us-ascii?Q?U7UaR3dvi/R0hEZJxoGJ7dsWR5o2dkyLYHGhcDb3tz38+r8S8wBbwc9htaaG?=
 =?us-ascii?Q?Ig5kAWASuwD204M0n3Z3Gl/id92nuBbgEWNOfTGZPY9nVGZHbnw6dCgwNuF5?=
 =?us-ascii?Q?261EZCrbqbIlqCvPk4U5OWoQ1BThsU6PFK3ZohRyzoCH63yfqdPp3M5oGpO0?=
 =?us-ascii?Q?ZmrszPD4yosDoUFrTIg79y/7n4081CC5AA1PETxAPDayXWHHcABR6LExY2RN?=
 =?us-ascii?Q?yUWjbB0SErweR0RkXKMxIoxnpxArJ8NKze+8e/9eFvmnHrmIFFKy1CplCMdj?=
 =?us-ascii?Q?dPhgsQSNT3VicFr4uvNamSvaMyRpz4I9Wp2fyHPcnkVGLgyHWyv2d14LKtFb?=
 =?us-ascii?Q?3qH6ht4KT5GZ2/ciDonVTDckY0d350OXMNKtUQKC2esClaCHqUsHOQjaavFV?=
 =?us-ascii?Q?yYUzSO2HPKg/5NzYVUKy6P4zUeqYxsGo6YJ9sLCeIuM3FXmUIdEgK5h+BZ9a?=
 =?us-ascii?Q?zlqxEnyBmXr/Mb3wXuh7UeaDI9/EsqLfxpDPwE9iqDWejaRLPmToZTEGIgj7?=
 =?us-ascii?Q?serF0tdqWEQEzumkUSE6dVGg3H9aCim5D7kee3BodCWgZhkKRHoM6uMCysE0?=
 =?us-ascii?Q?0jvzxXkfePqAtpC0VhNg98y0HTirTuSYN74aiKp/O8QT/hnytgVN0QCTLfYg?=
 =?us-ascii?Q?T5FeOJhRjjoQCo3pqwHrc2dIVnQyJP4u2eOAqBO8jf3/L77zVY/7aXnZfKz6?=
 =?us-ascii?Q?xko7fdr/buk5iyUQjflxYgVW4I5bAYRhqV9EpDtt6gKQGvY8IamZglJd19VA?=
 =?us-ascii?Q?XsaZy/pn6NbaAFdMfE6f22108bxyTsix+YjlTh/QoCuiJ5pf7d04wxe9YIwK?=
 =?us-ascii?Q?A+RBk/CMopPS6AHBt7Hkd/iPbCgHABcwp2wv4Bb2wB+Wj687zYw8oTu4WRm0?=
 =?us-ascii?Q?LyjScts/sHoB3a4LYdujaRLzHYagPIhM5O87hELQXZP/3SOrJ560CNjMMI/J?=
 =?us-ascii?Q?xFS/xACH8iHgC/UJJK0NVzeTdvNvSorHB/dqebz/?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1fd8365e-e251-48f5-2034-08de10a0b488
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2025 12:52:34.2678
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: T3Nn19Zl2zrU2g+a62ULjcuTJhqfEZFIdw6d/CSW9ypKKbKs+CqixIvPVY3iRmWwp9KhlFlpTUCJkq9y/blDaw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5648

There probably needs to be a check that the controller ring is connected pr=
operly, which is when ControllerEnable is called after ControllerStoreWrite=
.
Currently, ControllerPutRequest checks for Controller->Connected - but this=
 is set before ControllerStoreWrite, so its not guaranteed that the ring is=
 connected (its a pretty tight race though)

As a revert patch - this is good, there probably should be another patch to=
 add this check

Owen

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 16 October 2025 11:16 AM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh
Subject: [PATCH 1/2] Revert 4e080f819b55 "Skip hash update if front...

...end is not enabled"

NDIS queries the supported hash types before the frontend is enabled.
Controller requests are not dependent on the frontend being enabled to
begin with.

Allow such requests to go through.
---
 src/xenvif/frontend.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index f844a42..5311dea 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1910,9 +1910,6 @@ __FrontendUpdateHash(
     ULONG                   Flags;
     NTSTATUS                status;

-    if (Frontend->State !=3D FRONTEND_ENABLED)
-        goto done;
-
     Controller =3D __FrontendGetController(Frontend);

     switch (Hash->Algorithm) {
--
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From win-pv-devel-bounces@lists.xenproject.org Tue Oct 21 12:59:53 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Oct 2025 12:59:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1147151.1479410 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBBxw-0006tM-GN; Tue, 21 Oct 2025 12:59:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1147151.1479410; Tue, 21 Oct 2025 12:59:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBBxw-0006tF-Dr; Tue, 21 Oct 2025 12:59:52 +0000
Received: by outflank-mailman (input) for mailman id 1147151;
 Tue, 21 Oct 2025 12:59:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YEXT=46=bounce.vates.tech=bounce-md_30504962.68f783bf.v1-12fb3e1fed9e4ad28ccb9377f3583f22@srs-se1.protection.inumbo.net>)
 id 1vBBxv-0006t9-Jc
 for win-pv-devel@lists.xenproject.org; Tue, 21 Oct 2025 12:59:51 +0000
Received: from mail180-10.suw31.mandrillapp.com
 (mail180-10.suw31.mandrillapp.com [198.2.180.10])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d0e554a8-ae7d-11f0-980a-7dc792cee155;
 Tue, 21 Oct 2025 14:59:46 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-10.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4crXSb73rTz5Qpx23
 for <win-pv-devel@lists.xenproject.org>; Tue, 21 Oct 2025 12:59:43 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 12fb3e1fed9e4ad28ccb9377f3583f22; Tue, 21 Oct 2025 12:59:43 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d0e554a8-ae7d-11f0-980a-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1761051584; x=1761321584;
	bh=BcWcrNTcADcHOAdY8ECUriCy2BsoOwoxjTKB1JPHXUY=;
	h=From:Subject:Message-Id:To:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RqTt20HzEa4U2ykI8dP5yyPkBESLpfI3TETQCJEQ5nOw6FjMUGJPstI+oXX4us/ca
	 UZ2Gt4tBNW0yjukVuSwyltAwxG3NxISDYjXQqlOxiq2CmoOplnrfMq9NY6YnrZPqzC
	 L/Wu/0eTSLIBe/i1mP4WAe/TzXnvaQ9ZX5EqH3KKzUum17CJP2j+I8SLeqW5CMwUfN
	 Ef1XTWmYeb5rgTxw0p1+JNFkQqa9EDLyBQMcHrjaMVW3psVR0aeKXt9/+J++63BeND
	 v8Ex7I15ToO6Rs0oR5bnaDFlCAfhiwmOFYkvIBZTkMLypJLXH5zrM34C4mIEn9YKya
	 jKZpOvb+wnBFQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1761051584; x=1761312084; i=ngoc-tu.dinh@vates.tech;
	bh=BcWcrNTcADcHOAdY8ECUriCy2BsoOwoxjTKB1JPHXUY=;
	h=From:Subject:Message-Id:To:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=JjbfzmFEEpUCouR2lGOLwX4xJbRBjj0fWbUG7pmhSPuOEPg0AokuYMXJpI3p8etLs
	 CJ0/Y/kGQP3YjfY/M343WcTffAl+TSj+pSm/nnX6rwIrvFVbjPS+3YifzpHmUCVeus
	 VqL+NpE5g1lqjnh31umwUT/13fEzxcNlIXbGzRXbImdFi3NijKeOwwgGT53Z2R2qwA
	 +ipxlZcCOLBJm+FGc+97QSLEfIZFsdARjs2+BJXCEWZew8bBH/CtnJrhPwvl2PJ+si
	 Gf1qpchIZx3VPdGDAj8S+vyCkaC0H5xMkyc8grOB0Z+sHY0MnMGzy5LQx9Qxu1uru/
	 JbjPEHIxMp6Jw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/2]=20Revert=204e080f819b55=20"Skip=20hash=20update=20if=20front...?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1761051583126
Message-Id: <a24a13fc-a536-4a08-92ed-fb9afe0cc53b@vates.tech>
To: "Owen Smith" <owen.smith@citrix.com>, win-pv-devel@lists.xenproject.org
References: <20251016101602.533-1-ngoc-tu.dinh@vates.tech> <PH0PR03MB7116581417C3F2A28A1EA34EFEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
In-Reply-To: <PH0PR03MB7116581417C3F2A28A1EA34EFEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.12fb3e1fed9e4ad28ccb9377f3583f22?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251021:md
Date: Tue, 21 Oct 2025 12:59:43 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 21/10/2025 14:52, Owen Smith wrote:
> There probably needs to be a check that the controller ring is connected properly, which is when ControllerEnable is called after ControllerStoreWrite.
> Currently, ControllerPutRequest checks for Controller->Connected - but this is set before ControllerStoreWrite, so its not guaranteed that the ring is connected (its a pretty tight race though)
> 
> As a revert patch - this is good, there probably should be another patch to add this check
> 
> Owen

I can add a check for a new flag Controller->Enabled in 
ControllerPutRequest. But any consumer of the controller must be 
prepared for controller requests to fail, since during unplugs, there's 
no guarantee that the backend would still be present to respond to 
requests. I tried to work around this with the ControllerGetResponse 
retry limit, but maybe there's a better way to fix the issue.

> 
> ________________________________________
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of Tu Dinh <ngoc-tu.dinh@vates.tech>
> Sent: 16 October 2025 11:16 AM
> To: win-pv-devel@lists.xenproject.org
> Cc: Tu Dinh
> Subject: [PATCH 1/2] Revert 4e080f819b55 "Skip hash update if front...
> 
> ...end is not enabled"
> 
> NDIS queries the supported hash types before the frontend is enabled.
> Controller requests are not dependent on the frontend being enabled to
> begin with.
> 
> Allow such requests to go through.
> ---
>   src/xenvif/frontend.c | 3 ---
>   1 file changed, 3 deletions(-)
> 
> diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
> index f844a42..5311dea 100644
> --- a/src/xenvif/frontend.c
> +++ b/src/xenvif/frontend.c
> @@ -1910,9 +1910,6 @@ __FrontendUpdateHash(
>       ULONG                   Flags;
>       NTSTATUS                status;
> 
> -    if (Frontend->State != FRONTEND_ENABLED)
> -        goto done;
> -
>       Controller = __FrontendGetController(Frontend);
> 
>       switch (Hash->Algorithm) {
> --
> 2.51.0.windows.2
> 
> 
> 
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
> 
> XCP-ng & Xen Orchestra - Vates solutions
> 
> web: https://vates.tech
> 
> 
> 



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 21 13:07:06 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Oct 2025 13:07:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1147154.1479415 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBC4u-00081q-0x; Tue, 21 Oct 2025 13:07:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1147154.1479415; Tue, 21 Oct 2025 13:07:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBC4t-00081j-Ue; Tue, 21 Oct 2025 13:07:03 +0000
Received: by outflank-mailman (input) for mailman id 1147154;
 Tue, 21 Oct 2025 13:07:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8RPv=46=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1vBC4t-00081d-JZ
 for win-pv-devel@lists.xenproject.org; Tue, 21 Oct 2025 13:07:03 +0000
Received: from BL2PR02CU003.outbound.protection.outlook.com
 (mail-eastusazlp17011000f.outbound.protection.outlook.com
 [2a01:111:f403:c100::f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d4b881f9-ae7e-11f0-9d15-b5c5bf9af7f9;
 Tue, 21 Oct 2025 15:07:01 +0200 (CEST)
Received: from PH0PR03MB7116.namprd03.prod.outlook.com (2603:10b6:510:297::6)
 by SA0PR03MB5660.namprd03.prod.outlook.com (2603:10b6:806:b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.12; Tue, 21 Oct
 2025 13:06:57 +0000
Received: from PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4]) by PH0PR03MB7116.namprd03.prod.outlook.com
 ([fe80::2d0:c245:8cdc:69f4%5]) with mapi id 15.20.9228.016; Tue, 21 Oct 2025
 13:06:57 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4b881f9-ae7e-11f0-9d15-b5c5bf9af7f9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=suTWnHDeksOlrXz6lOG4Ul3BgGs45fO06AGcCvi3MIzaTv60vMDYm5nuwx3r4wFcowTR07GW0ZyhO48pQtveAR/fqP6zyYh8Lush8OdBZD7YQS7eSKIveSuGzT1OlWeeRBtkTEhkritJv838oF8CVM4SLXB+oA1DlxFJzzyhlbgrqP9sjaI9p5vi9S4V2J5p9fo9mugEPZFFVI5XcWqqN7knveXpTIIsjAS7TvyCJr5yMlxzfjmPI3UrgfSqSTy+WwOpZYLXyoeVkg8rHFmE+P1KMZie9hH7Ov/YadqbWuORsAaemdireJywqakQ4mcYlInduiIpK/cdY5zUDfJdwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tcdv9+RXLx5Yh0WpNXzklhjc2HErDUHbYpPEkyk/hFc=;
 b=e/ix0ad07YNP6vCaLNl7Iclo9++/NN1vrw7PMefbaT7g4zUWMWQ6zh4eMl3mOGL8LWAldVVNb272qLBCD0dNQBRtwwxmxxdjqB9Gq3H5rfRJSOaEGbxryJhyyNsj5KkGK+W7bOGpcJMtvCs+LNqFJfbObAL3EnODhDgxGFs+J7a+7lEJ6FzXszxu0stAE8BuNrqyAVqFNEZxWi26UM0NGJMoA7aNxIzWFSEkFMunK+cQ31cSvDTa4oTKRQM3QLnPwygpCmgIxjjLbslko7yNHAyg/5HqBfXEkgvnz7hFi+LUK9Y+AchBixB+fiMHVAgTWJSxxCtyxGY/HkWTTlweBw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tcdv9+RXLx5Yh0WpNXzklhjc2HErDUHbYpPEkyk/hFc=;
 b=tmoAhpvZx6mw9IWFXQTQw1T1aEmCSPd+CsaiB3tfY3Oed42h8zq7o7xaacONHAuv9ZjJr3hvMgm2gCls7EFlG7WX6K06FjkAPrH+XkHYsp1MJKA95QL2NwQCML9NvqNKMjq9OQMgDl77SpqIU0LO8v+4nHjc4PrNnrjLA0fQSCE=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: Re: [PATCH 2/2] Limit retry in ControllerGetResponse
Thread-Topic: [PATCH 2/2] Limit retry in ControllerGetResponse
Thread-Index: AQHcPoX0lX7XuHgnf0m66vrzmzNQE7TMmU2F
Date: Tue, 21 Oct 2025 13:06:57 +0000
Message-ID:
 <PH0PR03MB7116F413F9BAE51284309250FEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
References: <20251016101602.533-1-ngoc-tu.dinh@vates.tech>
 <20251016101602.533-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251016101602.533-2-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR03MB7116:EE_|SA0PR03MB5660:EE_
x-ms-office365-filtering-correlation-id: 3d7a849a-06ee-48e2-f0a8-08de10a2b6e6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?xzXQncTyDGAxWz01CSzz3Q2ZZs3KTgVim09YftScC1FL1+kgWuGdbF1sLHkH?=
 =?us-ascii?Q?PrWfKV8UDV+/sBfuNVvn5IQrABzJZNeuAVyHvaYwKPCvU7/Ua8rytHl5dIWo?=
 =?us-ascii?Q?bwWYO5Xs3FaYjxJVCJHLL6SgIHTrrngtqn98cd00hucb8IGYj9qY0UTamyMn?=
 =?us-ascii?Q?21CeWfViRGqk1M9AhGUsy6lmFBkwjkgJ3ArSWR76a8060rZoBk608TVgirUu?=
 =?us-ascii?Q?f7pSVGR4z16cIOlfffBebEgrX0y0Wa7C2W0EzQj97vk1HOLq5n3IsAK/rko4?=
 =?us-ascii?Q?/tGYwPztT4YrBxjqap5hbbZNgBevL44VNg7EkzsF9dkcfYmClNMkd/ab6rdk?=
 =?us-ascii?Q?bAxvbzlPVadxd5eDaAGpwRklaO69JlzDO0szIR3cWRq3RvFbh75LTKfdVcK7?=
 =?us-ascii?Q?xBM1F4al0z/UjjJiMp73n7LUTzsFfBrZ7i28IME/N1Z1AiMGdxVf19Dkk+2c?=
 =?us-ascii?Q?SwCJV32yw0d+OWcHse+xPWlHbkyweGOaWL/WAtOntrTq/ZLuZ41QrhuOxT4L?=
 =?us-ascii?Q?Cj4qMB1cy2qM6/vOBODFIeQvVNcl4jhJDx5I+NwthCH94yHnAqyMz0aOENm5?=
 =?us-ascii?Q?Y8JhApiJ9xMA0HLV0QChTz+Qk+OQmYkiiGsVDXVKzDBW9iDZRVz8KCe3qW8y?=
 =?us-ascii?Q?6cGAUImO2A/yOAIAYeiYqzCYWYXVxpbJWC2d0TGG+63ApOwndZvWBO8hrjXI?=
 =?us-ascii?Q?RsOrAn0nMQdOmG2DsQiCAfSgSOE9tpw2GXMZjFr62pIZbqPZSc+n5ZP+xH8Q?=
 =?us-ascii?Q?wEBwBnP/wobkNrrrwv39jjlnoIb5uHS4NjB8TvlN/xx+Bxe2SVZN4CUH+/6R?=
 =?us-ascii?Q?nmz6cAE9I2ngJmTuXMfDhv9Sut263mzegl100jtTtC8yOI3Y6949ykEO5tzw?=
 =?us-ascii?Q?H6YIRCZicGd5jvdOo25x9vxMlfDwpxgYCPLf7F5DsFYQXd7TYap/WI+5zVRA?=
 =?us-ascii?Q?t7FeoNfydonxlx34/klHxOyXSRq+F/we0bn74kXMK4Gjp0p4d0XqRWOC4PH1?=
 =?us-ascii?Q?fNZtJUYeHmAmYWsXaGflF/KtGB2ep9w3jwNejdhbLpeLa3Wny+a+lhReBiPs?=
 =?us-ascii?Q?ON1kxpn0fxgihlgZ9YkgdNv1xlVxv8OX6cWS4WDty4UbwL4nRb0zbKWauPaJ?=
 =?us-ascii?Q?bO1rMG7rbXV7Px47LdMbLzyPOcDXfE8z1pSHTqbT+ICjsak7jf25q/OWf5Lz?=
 =?us-ascii?Q?JGEsOUuJVQi5J+thVyRJxowJ1RdjbseT+YdFZVKEajhOIVP2+URwg1W2PuqL?=
 =?us-ascii?Q?bGPmDfCK/Tk/OxFVV7cGtaGIKd3TsyyJZhyPLciBNnWaOXoqYEW8k6DHXn/X?=
 =?us-ascii?Q?/DZnTYLjzh+xGIwcOZ/oYOnT/5l78EanbcNLPiXYYUFLfblM8fA7G7pTYPcm?=
 =?us-ascii?Q?jYYIflCcU9+bzsZCe8kTG3wIrK4pqynt4nd+bTrDO4wZr1MnuZTxYwk1BbDW?=
 =?us-ascii?Q?EVi9zZKmElQksWoBzwRfhJ53uJiHOPb8?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB7116.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?2rkkti8S3vMYaakOncu4i6s9OOLM+HrZe3c1K4zzhddakj9eYzyk0o4hE2Ra?=
 =?us-ascii?Q?KmIFnI+VnAi3mcOQ5tdSx5A4dYRHkm+1/Qhffh6hjVDTz9wFvX99OIEynEKw?=
 =?us-ascii?Q?FvhsV8MOOqwIaXDUrKAqV7OfMn9ql9aa0P1CwDzOZHg6wuiqI/k1XW6PtoPg?=
 =?us-ascii?Q?Gax9G0R9RsROaxaDK+uLEiE5IcMm+AurlGnsVBV+y8s1PHOP87H+2AWyU1t8?=
 =?us-ascii?Q?IXjgBbWc4pkXxsvknowHkXGyGT+pW/X1TGNueR6xXljjcy9U2cwLuFX9uNoP?=
 =?us-ascii?Q?MPLlaYNlw2eIvPvPnQ4ukleoesKgCpCvA9Mp62S0uIdbCh106EThR+E3u4z0?=
 =?us-ascii?Q?7ngke7dVtSoDPkMxHPvWzkt9K5EP2ooLkOaL3Ie3egQpUst/T1KQqFDBgma9?=
 =?us-ascii?Q?nnLSPi2+qxAvqHLA3BlCbYBF6+A8T6tEVsEFUE5lTmvGaRPenJoFlVNguXTr?=
 =?us-ascii?Q?fX0fVPDaKCJ1+6/JfPsVb/tZC1xQn9CKzpUlc84Ajrp2IEoJy2DrbJCAHr26?=
 =?us-ascii?Q?Y/n+NsJTmIJCGCSGcEyjbJThrcsqMuEUAyu+6b42yKOZx+7DDXMh10RycNV6?=
 =?us-ascii?Q?0CKSoRV2lLZaZenAU1aJsKQbiUBO8SHRZTL/f7fUm5VYtCtkDyssQ6qwj/9o?=
 =?us-ascii?Q?sIqOgmQn3eqSAJG+e5j8HYiJV8HDCzt5HJIhGxGrVEV3Koq77MbAX1Ga8FJQ?=
 =?us-ascii?Q?D0p8+bLs164NBRRy28Sgv++Cimav+wGam5sJmv76V+G6CCFNNSnwg76L68pd?=
 =?us-ascii?Q?/EwUbi4RuQL8fASnOD/rfv09HhuVlaiqVskg193YncCSMa6jZ2epUFOvhFvL?=
 =?us-ascii?Q?aksb3aCCkdj1cAErLiXd6Pao815RTWbRp2EwuLRSf4dj3x8CJgWfBuq9m5UI?=
 =?us-ascii?Q?hbZFUiyvbrj4Xc5rkEYzp+OCRhfHoDDsCe/wH4IJ2riiN69Pqga5j3vSWsc3?=
 =?us-ascii?Q?FT7vCJybFsyXuFfd34XAEEHJliW1o+v2D/HwchwakMlIunlzNReHrVBzW16x?=
 =?us-ascii?Q?c8HZiT/moxJYqv1TMymFzFu1YDjXG7h7DhKDPC4JEA5h28Si8ylfShQFxF++?=
 =?us-ascii?Q?tnVYKwaSQw8/Gz+A7/Z9RS9O18WFLRyXQxXjAmuwIafZ+TLh+L/4MKfH4ax9?=
 =?us-ascii?Q?RC+rXZZszsOl6M0XIw/bEplQDKwHsMlLCqA8wgmMNFear4JCFBmcoYcGfdG0?=
 =?us-ascii?Q?AoAhDCnX12EYtEOEcD2sftVhJRMnyxIanCwX9YFesz8sLFRNR9C2igwVMrKV?=
 =?us-ascii?Q?U68GtWCZxG38isPuECa1748ZIJO81kgPDfIlyls+XLL5X35O2ADHtVCO+sB5?=
 =?us-ascii?Q?xHseBVtOiXM2R7AdjUD9h0FmUKwsfBkJ9LUEDI3mNiHGohy87eMMTkn2Vf0s?=
 =?us-ascii?Q?u6kNgYyy5smZForkdCPHwCsOg4tFbnQP6/obj7HfD5oHIZBsyN2tdkPVZPHO?=
 =?us-ascii?Q?ARsGGb6tY3fNGakvrS0jSrHnUMUROVBNFYJSiPJw2bBjptonVboy61TLjY+M?=
 =?us-ascii?Q?bw9eBDBrtAx45jEiPfQEVlONQdO93XoHTQ5naxNAiNYxiDF6ZpbaNXwEXFaU?=
 =?us-ascii?Q?/AN4nvBqWpNZKNJ1sTPJfa9pq2kk4PBcbe8uUTnR?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB7116.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d7a849a-06ee-48e2-f0a8-08de10a2b6e6
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2025 13:06:57.1908
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: L49w1jNxYOnKo8w9PswjVOVrWxaErJQ+LA3gNSa/OGQ0/3QM//QcYYRz+PtN0Qs6clwJZFlPWo6LfafBfMM+wA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR03MB5660

Is there a way of detecting the backend has disappeared during ControllerGe=
tResponse?
As currently, there is a 100ms delay between attempts to trigger the backen=
d - its possible the backend could take longer to respond in normal operati=
on

Owen

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 16 October 2025 11:16 AM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh
Subject: [PATCH 2/2] Limit retry in ControllerGetResponse

During unplug, NDIS may issue a hash reconfiguration. However, the
backend may disappear before the request has had a chance to complete.
This is observable by e.g. adding a delay at the beginning of
VifReceiverSetHashAlgorithm and unplugging. If this happens, Xenvif will
get stuck waiting forever in ControllerGetResponse, at DISPATCH_LEVEL to
boot.

Limit the EvtchnWait retry to 10 attempts (10ms each to keep the
previous 100ms limit) and return an error code to the caller if the wait
has failed.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/controller.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index e032972..109c030 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -248,7 +248,7 @@ fail1:
 #define TIME_MS(_ms)        (TIME_US((_ms) * 1000))
 #define TIME_RELATIVE(_t)   (-(_t))

-#define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms
+#define XENVIF_CONTROLLER_POLL_PERIOD 10 // ms

 _IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
@@ -258,11 +258,12 @@ ControllerGetResponse(
     )
 {
     LARGE_INTEGER                   Timeout;
+    ULONG                           Attempt;
     NTSTATUS                        status;

     Timeout.QuadPart =3D TIME_RELATIVE(TIME_MS(XENVIF_CONTROLLER_POLL_PERI=
OD));

-    for (;;) {
+    for (Attempt =3D 0; Attempt < 10; Attempt++) {
         ULONG   Count;

         Count =3D XENBUS_EVTCHN(GetCount,
@@ -284,6 +285,13 @@ ControllerGetResponse(
             __ControllerSend(Controller);
     }

+    // Use STATUS_TRANSACTION_TIMED_OUT as an error code since STATUS_TIME=
OUT is
+    // a success code.
+    if (Controller->Response.id !=3D Controller->Request.id) {
+        status =3D STATUS_TRANSACTION_TIMED_OUT;
+        goto done;
+    }
+
     ASSERT3U(Controller->Response.type, =3D=3D, Controller->Request.type);

     switch (Controller->Response.status) {
@@ -311,6 +319,7 @@ ControllerGetResponse(
     if (NT_SUCCESS(status) && Data !=3D NULL)
         *Data =3D Controller->Response.data;

+done:
     RtlZeroMemory(&Controller->Request,
                   sizeof (struct xen_netif_ctrl_request));
     RtlZeroMemory(&Controller->Response,
--
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From win-pv-devel-bounces@lists.xenproject.org Tue Oct 21 14:44:55 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Oct 2025 14:44:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1147376.1479688 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBDbZ-0003xC-Gf; Tue, 21 Oct 2025 14:44:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1147376.1479688; Tue, 21 Oct 2025 14:44:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBDbZ-0003x5-Dw; Tue, 21 Oct 2025 14:44:53 +0000
Received: by outflank-mailman (input) for mailman id 1147376;
 Tue, 21 Oct 2025 14:44:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Svlh=46=bounce.vates.tech=bounce-md_30504962.68f79c60.v1-ecc1d1c49c4546d7a55df80ef6faad1c@srs-se1.protection.inumbo.net>)
 id 1vBDbY-0003wv-6b
 for win-pv-devel@lists.xenproject.org; Tue, 21 Oct 2025 14:44:52 +0000
Received: from mail180-10.suw31.mandrillapp.com
 (mail180-10.suw31.mandrillapp.com [198.2.180.10])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7ec84042-ae8c-11f0-9d15-b5c5bf9af7f9;
 Tue, 21 Oct 2025 16:44:50 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-10.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4crZnr6gBdz5Qkjg1
 for <win-pv-devel@lists.xenproject.org>; Tue, 21 Oct 2025 14:44:48 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ecc1d1c49c4546d7a55df80ef6faad1c; Tue, 21 Oct 2025 14:44:48 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ec84042-ae8c-11f0-9d15-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1761057888; x=1761327888;
	bh=upV0RdMB+KXcaedctCLWabqzQeFu+6pZAPpxanZIx38=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=te6ucdHZl8Vf1G9DrCt6ZP5N9+zCD9lDyIo0k4snUfEygmwgLoj9e9mOExkr6tKN1
	 mFvGBbnjrB+29xHaE14CxvUtziLX/ytl8RWmfyHwHxwqqf6RN030naaIJIeRqcuoqw
	 OEyjz1P8CRrOa15YqgKcsG66F6/5oLeZQorAmKParR4BEhR9I9Ge+f0prR+q1PGly7
	 q++n9Ua98cj4h7FmqooAzbyR2lcESD9nxOaKoU169Hkzni/nubKiQH+Mdtgl6NOKjT
	 jnPw9QqwniJ3EsNReKOps/wPCd5qPHCWyzihYrMK+R+kXNoZTEDRQn2uJv5mn+Ez/h
	 0jd8PVFyBhXOQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1761057888; x=1761318388; i=ngoc-tu.dinh@vates.tech;
	bh=upV0RdMB+KXcaedctCLWabqzQeFu+6pZAPpxanZIx38=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=KRFntjsX43t1km8H8lRFMPXvmVknW0FjDYSnOjEdw89mGj8zk3x5bBejsP4aTBSob
	 MnJwNumozPSgdU1Cj4KFQxcMoAj8ucoTw+1OR97Z4N4LL/6CTtnog8s1pFFlvONdQH
	 lwYXuLq/WmyeAozlZdzjzAAATqcsVyNnwl/LNrXOF5Pjd5S8WXzH2wEjEJbM2QWcOc
	 O/7vCqwduCAe1SwmI4QbNIIaHgg/kLo+iML9Gr89O3vGH+PvA8ePBqDY7Mxpr4GEc3
	 dVZGTa/w04oxvsCLv1jtSj9C4atNXznueZLQrBbwZcRnkkL6J5gOlPlao4atcQae5g
	 sgwa344ZqMOUw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH]=20Do=20not=20call=20IoMarkIrpPending=20on=20queued=20R/W=20IRPs?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1761057888340
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Message-Id: <20251021144441.1911-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.ecc1d1c49c4546d7a55df80ef6faad1c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251021:md
Date: Tue, 21 Oct 2025 14:44:48 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

ConsoleAbiPutQueue eventually calls IoCsqInsertIrpEx, which may complete
the IRP if it's already being canceled.

Calling IoMarkIrpPending on such IRPs will cause a crash:

     # Child-SP          RetAddr               Call Site
    00 ffffd100`df0ad498 fffff803`36573569     nt!KeBugCheckEx
    01 ffffd100`df0ad4a0 fffff803`365727fc     nt!KiBugCheckDispatch+0x69
    02 ffffd100`df0ad5e0 fffff803`3656b00d     nt!KiSystemServiceHandler+0x7c
    03 ffffd100`df0ad620 fffff803`36448ba1     nt!RtlpExecuteHandlerForException+0xd
    04 ffffd100`df0ad650 fffff803`364479c4     nt!RtlDispatchException+0x421
    05 ffffd100`df0add50 fffff803`36573642     nt!KiDispatchException+0x1e4
    06 ffffd100`df0ae400 fffff803`36571edc     nt!KiExceptionDispatch+0xc2
    07 ffffd100`df0ae5e0 fffff80c`f0691a47     nt!KiRaiseAssertion+0x2dc
    08 ffffd100`df0ae770 fffff80c`f0697b63     xencons!IoGetCurrentIrpStackLocation(
    			struct _IRP * Irp = 0xffffc082`64dc5170)+0x37 [10.0.26100.0\km\wdm.h @ 34677]
    09 ffffd100`df0ae790 fffff80c`f069ca13     xencons!IoMarkIrpPending(
    			struct _IRP * Irp = 0xffffc082`64dc5170)+0x13 [10.0.26100.0\km\wdm.h @ 35091]
    0a ffffd100`df0ae7d0 fffff80c`f069c45c     xencons!PdoDispatchReadWriteControl(
    			struct _XENCONS_PDO * Pdo = 0xffffc082`645bc690,
    			struct _IRP * Irp = 0xffffc082`64dc5170)+0x53 [src\xencons\pdo.c @ 1801]
    0b ffffd100`df0ae810 fffff80c`f06913c9     xencons!PdoDispatch(
    			struct _XENCONS_PDO * Pdo = 0xffffc082`645bc690,
    			struct _IRP * Irp = 0xffffc082`64dc5170)+0xcc [src\xencons\pdo.c @ 1863]
    0c ffffd100`df0ae850 fffff803`36919aa0     xencons!Dispatch(
    			struct _DEVICE_OBJECT * DeviceObject = 0xffffc082`6468fd30 Device for "\Driver\xencons",
    			struct _IRP * Irp = 0xffffc082`64dc5170)+0x249 [src\xencons\driver.c @ 230]
    0d ffffd100`df0ae8d0 fffff803`3691adbd     nt!IopSynchronousServiceTail+0x1a0
    0e ffffd100`df0ae990 fffff803`36572d93     nt!NtWriteFile+0x66d
    0f ffffd100`df0aea90 00007ffb`e6756194     nt!KiSystemServiceCopyEnd+0x13
    10 000000a5`140ff318 00000000`00000000     0x00007ffb`e6756194

IRP object:

    (*((xencons!_IRP *)0xffffc08264dc5170))                 [Type: _IRP]
    [+0x000] Type             : 2288 [Type: short]
    [+0x002] Size             : 0x64c2 [Type: unsigned short]
    [+0x008] MdlAddress       : 0x0 [Type: _MDL *]
    [+0x010] Flags            : 0x60a00 [Type: unsigned long]
    [+0x018] AssociatedIrp    [Type: <unnamed-tag>]
    [+0x020] ThreadListEntry  [Type: _LIST_ENTRY]
    [+0x030] IoStatus         [Type: _IO_STATUS_BLOCK]
    [+0x040] RequestorMode    : 1 [Type: char]
    [+0x041] PendingReturned  : 0x1 [Type: unsigned char]
    [+0x042] StackCount       : 1 [Type: char]
    [+0x043] CurrentLocation  : 3 [Type: char]
    [+0x044] Cancel           : 0x0 [Type: unsigned char]
    [+0x045] CancelIrql       : 0x0 [Type: unsigned char]
    [+0x046] ApcEnvironment   : 0 [Type: char]
    [+0x047] AllocationFlags  : 0x6 [Type: unsigned char]
    [+0x048] UserIosb         : 0xa5140ff370 [Type: _IO_STATUS_BLOCK *]
    [+0x048] IoRingContext    : 0xa5140ff370 [Type: void *]
    [+0x050] UserEvent        : 0x0 [Type: _KEVENT *]
    [+0x058] Overlay          [Type: <unnamed-tag>]
    [+0x068] CancelRoutine    : 0x0 : 0x0 [Type: void (__cdecl*)(_DEVICE_OBJECT *,_IRP *)]
    [+0x070] UserBuffer       : 0x0 [Type: void *]
    [+0x078] Tail             [Type: <unnamed-tag>]

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/pdo.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index 7e42862..87b3230 100644
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -1797,15 +1797,11 @@ PdoDispatchReadWriteControl(
     status = XENCONS_CONSOLE_ABI(PutQueue,
                                  &Pdo->Abi,
                                  Irp);
-    if (status == STATUS_PENDING) {
-        IoMarkIrpPending(Irp);
-        goto done;
+    if (status != STATUS_PENDING) {
+        Irp->IoStatus.Status = status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
     }
 
-    Irp->IoStatus.Status = status;
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-done:
     return status;
 }
 
-- 
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Wed Oct 22 10:05:06 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Oct 2025 10:05:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1147836.1479977 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBViK-0003eb-ML; Wed, 22 Oct 2025 10:05:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1147836.1479977; Wed, 22 Oct 2025 10:05:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vBViK-0003eU-Je; Wed, 22 Oct 2025 10:05:04 +0000
Received: by outflank-mailman (input) for mailman id 1147836;
 Wed, 22 Oct 2025 10:05:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dqLK=47=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1vBViI-0003e8-R5
 for win-pv-devel@lists.xenproject.org; Wed, 22 Oct 2025 10:05:02 +0000
Received: from DM5PR21CU001.outbound.protection.outlook.com
 (mail-centralusazlp170110009.outbound.protection.outlook.com
 [2a01:111:f403:c111::9])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 925e6793-af2e-11f0-980a-7dc792cee155;
 Wed, 22 Oct 2025 12:05:01 +0200 (CEST)
Received: from SA1PR03MB7098.namprd03.prod.outlook.com (2603:10b6:806:338::6)
 by BY5PR03MB5363.namprd03.prod.outlook.com (2603:10b6:a03:225::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Wed, 22 Oct
 2025 10:04:57 +0000
Received: from SA1PR03MB7098.namprd03.prod.outlook.com
 ([fe80::578c:fcff:d164:cb15]) by SA1PR03MB7098.namprd03.prod.outlook.com
 ([fe80::578c:fcff:d164:cb15%6]) with mapi id 15.20.9253.011; Wed, 22 Oct 2025
 10:04:57 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 925e6793-af2e-11f0-980a-7dc792cee155
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EFvdVP952IvOMoKcpKowEjsJzvOuTiQg1xlfocNXYTwXapdZlAOCNuUFSpsG54eOfOnvj7wvkYdxeNnROLpurzjUMm0bvR8xIo4zEWKYodHFGnDEmj2a7YFG3RHAN1R/xZr9GnUj5ewFWtdhZtEA9An2+z0TwunilM1asKjnvV6h28VzQN0y2rNZrgGpD1g/iDEUAp64O9d4t38xBXsm1jK51wzehBw7qbZlETh3Ab8UlUvauWzGTAGpn/ux3ru+6D3a+aD2cjNr0wfdGFgfFKa5l1HmyzPPcS9WbDZ1mZ+94Tzc7g+MSVuTMF9Avb3V5bC+IZCeIEcT+ORcKCLD2Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=IgvlCAgP0mSMyxD0gTGYVmoBR/Ho6cXGnc5zu2WEeMM=;
 b=CIln7ayCPGoLGMk0BYJyIHIOm9xZ+jWDsZIjaWmuEuvtANXWRf98pyN0SMRApbuoPvb6jJDFWHDp24ByDfTZhHpFjXDpIyS54hGySNzFwhmB6Vfjkk7Pyt+o4yzregIs1ryC3EXxisyRSG32u+qnRC6bWBjlvOwPjuLPrezwHYHbKQRfU+Wp1b7Vhn01bwf+Ux2Y5gTr2m/AUcXJQuHVa5b1qVTXQLrTGetJ4A6O+E5/FO/nEM9y/E/uDqLYB8ypcKWewClkHdT6daowzAVaqkZdX49PGbWUVtKzISLrwm8Emhha2G3SolfgWaJVJLHxM5Ura0ZzBgdL/mCZ1naeMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IgvlCAgP0mSMyxD0gTGYVmoBR/Ho6cXGnc5zu2WEeMM=;
 b=BK9U2gowAjfPPbOg/JrxgYKv9RbbkzAKS95ARk4ip+Pwr3tWEFG0XcE0tCoxmzKJgLF0dwHIEel7/jgP2GHLWUu5HZKVItqswLAl8THyiKl2JQlDPVMoUMuAUD6A0Ne7Hx4Y4ZRLwI2GZhKqAaCliz4yZ3/mdOkWb+0e6D3qOXU=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: Re: [XENCONS PATCH] Do not call IoMarkIrpPending on queued R/W IRPs
Thread-Topic: [XENCONS PATCH] Do not call IoMarkIrpPending on queued R/W IRPs
Thread-Index: AQHcQplL7d/BprTMKUGpXPZKPVdPArTN8CAd
Date: Wed, 22 Oct 2025 10:04:57 +0000
Message-ID:
 <SA1PR03MB7098172837D87E81DD0B42F7FEF3A@SA1PR03MB7098.namprd03.prod.outlook.com>
References: <20251021144441.1911-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251021144441.1911-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1PR03MB7098:EE_|BY5PR03MB5363:EE_
x-ms-office365-filtering-correlation-id: a12b7fa8-3c37-4b5f-13fb-08de11527483
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?sIVGwvymjDVU7f+Enfvj9Sf3ykZwBXp12OvfQ3rrPW8SZ2rbDJerMGVMW49n?=
 =?us-ascii?Q?nhUf0iTX8xDqfUOFrS9dHcd5TzoqvYI1CJ6wH9kffZz/KD/a+UIyMoDtZiVW?=
 =?us-ascii?Q?ymTVm+ZHaGlBUybr582gEAkoAFXcgaFkEKhfyuF1TKKezs0DuDc011RS2TvO?=
 =?us-ascii?Q?uRydh16vEuJbqZrhMptfFc9D8W3tCP82n/rrcBCEs0css7Ik0SFrPqIzibAu?=
 =?us-ascii?Q?YRqinbczM+zOif7Wx4GHKLjxoRkTT//mfxBqKDyleuBOvvqdgYXGND1EHjW1?=
 =?us-ascii?Q?4Dc5EOHd0OnAyIj5IXoTU7h+UHpF8u3LvGiX06nUUk9B2FG172DaAo07GLOY?=
 =?us-ascii?Q?fn5WmyHnOa0U/7nIlYlz725MYyWOYO/ql0HPyXjJU2ulX55io0VsOtThJfhJ?=
 =?us-ascii?Q?Fhi0ank6xVtecU4ahA5CfSalVcaFo+w94B7yJYWfwXNGgAisdJr6DeGRSMHV?=
 =?us-ascii?Q?ce0wFF/CQJKzKgGP6scW2r3llxE1oRHP8ZtTIbUnMNuCYaL7U2TkOQbJbrUN?=
 =?us-ascii?Q?fY4bm7xqmk2YRwehN8r3agDwRrjM0zC5ceEZFpKs6RdTLaLIxJg2/xH5TUX9?=
 =?us-ascii?Q?EX3dhD6AMhyD3YV4HnzdvgL3vcrszKr5xn1lqlzQ8mbag9mOat8gGpI/fJJN?=
 =?us-ascii?Q?cog7jJL6gDKomDy9JwitzxW1iTV8jc004LDN4dVJJMZCYo7k/ubmpFK8ObXJ?=
 =?us-ascii?Q?wL4S9DDvwuhzD3QtDbVpOqD51HUZL0y/fCV4Al/D1ilmxK27SfDPDqXVBP25?=
 =?us-ascii?Q?8nKRg9+8apusD/A4wP3m+ZVHogScJEHPxjmo6PCfu1bM+rknH8gZ3TD7Ibzi?=
 =?us-ascii?Q?YjXM9lPtz5x1gXqVAm1/BQfbvlfomyXQC8Kuc65gfIUGhZlqriqW6feQqOs0?=
 =?us-ascii?Q?bh3l+OCCSsTlYw6dEGf+eTCtmRvjoHDdmZC1PryW8VVDVg/DnYAEh2Z2fxcL?=
 =?us-ascii?Q?gULDk+zsIyq+gH49OnEgjYLtSREiZSK88dVav/xrAxx/lUwS/SUGpc24+sU2?=
 =?us-ascii?Q?AEz/wwyriojra801rs6pA6piPINNBarHqcBwp3818/E37pXmvo3K8hTf9yaD?=
 =?us-ascii?Q?N/R4p3S7rKr1y5JG6WxIZGJ0PFlmyZM3TRsMh6scoq0p7/X+LYF6Znfca6fR?=
 =?us-ascii?Q?qIkcfnAfHHpL3gS+Gd1GnbNbvSNYZvUzL4gaZm0RciWXCCXUYWSwAMeFUqQR?=
 =?us-ascii?Q?HF5/MW2U2SMRNtAT+mmc0ZkVlwLf5RDym6mijK1yjkD6AkETUy+QSOppRbKq?=
 =?us-ascii?Q?NAQzDX2GLe2A1wJap0uDh/gfHO+sPmGnRCphud/CihWU8o9J0wGVkZbsQLbe?=
 =?us-ascii?Q?hbjktMD0fO7Vbe/XVyZCGnLq/v33tCADGx7omqm9kZZBzOVFxQmi5A4GReZb?=
 =?us-ascii?Q?vPRD0FQp18oWLc8NEhhOFptQELCGfdmy0aEwfStr4PSzWX27u1obqShrCROf?=
 =?us-ascii?Q?XEp2YmEW6bQcuGMrswnYpvIaeZdOTYDB?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR03MB7098.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?B4IIBTuyXmEUo4O/WpluvY8DzLBs9ZIuluBUemHDa9WQSI77wPaWWATUvCMX?=
 =?us-ascii?Q?MSP14AYrjBMcCf4m2Oy0/G/WbsQIWmWdA74b3fvpCkvIJ4hA6JTAWsR5AFph?=
 =?us-ascii?Q?IABVSHwyg9QAExDE1ASjQ+VIF9Jsu7GaEmrEP6BO/NG+wGtNBt70ejtzssN/?=
 =?us-ascii?Q?zBtIwDglvX/bLf4WQfzrlV+XiVQ7X9/rY1rDxWuRoct9F+7mYywqhte5nARn?=
 =?us-ascii?Q?9OVnngo07lwf+Iqxg0RrHFjz5vrRLXPwn8QgstPrcq3sbCmWl++VparH4lk7?=
 =?us-ascii?Q?BmtCFNdvOkvnIHhN0Ad7U2CN2u1IzZqdHHl3YfnKka3uAvWXWtCjQ0jzeMTU?=
 =?us-ascii?Q?tUN/brBylOOgWIidJXJ1kA6ZfRjIhSYoi+6NlNsKkkDnV3vYa927nQbNNjXZ?=
 =?us-ascii?Q?tUx0RBrSPtclYERiXVz0YmHNvgZdK6Ms3N4ZsgQh13MYGsg5MJq/aMP92VY3?=
 =?us-ascii?Q?w8bqXbucWOD6FZf5v7L9WTdFzdQp//kJzGe18O0HvO6ykH/BIjSWkKl251+7?=
 =?us-ascii?Q?QMEGe5Ow64MteUwZm2AFXBN0TAxxXLtNUIKliN7sCkCJ7SiKFaSH4eK/87Xc?=
 =?us-ascii?Q?ecFqNNnXGxkuqva3p3tYdThcZi9OHGwAPD72yqPy2gAoVkDcdGvbg6PYElzC?=
 =?us-ascii?Q?MwTzu39nXho7/cZYQq4dEuYpO1Aj2s4nKmcNqEOtEaFjXOR3+4T+S6wSbPX7?=
 =?us-ascii?Q?Odu1W7xyE14z5OuMJn/2XFo4XvTXNWQmprfH/uDmlGjgu66WRdEEhtT0jd3h?=
 =?us-ascii?Q?9YAD0ssJNV/q+q008frBU0LN7tpM0WFiHmRrBASZTh7ImbtLNYbFUg7Dpof2?=
 =?us-ascii?Q?BOzoLgWbG4O500qfXT2ewawDumJ3me/TIXgUFiO5n5dbwhelYdndd3rLiVzo?=
 =?us-ascii?Q?pl8rgB13l8aDbBeOMPnVpQAquKtQ3iQKLo9cFBN0UAIy6FiRQpsa3ctRorOe?=
 =?us-ascii?Q?MGs/+D/Bo2DcbN0FFODrJL0+UOF2V2PaS9eyfqo/FJqx2xSPp3ku8ISh3Dhk?=
 =?us-ascii?Q?oSe5Qc0VR1dlAvZRdfAN7G59VYjnpvyf5AvLL2B6jNKB2KahRO724a/GAUmP?=
 =?us-ascii?Q?IVG8q5OS4boy9oWfe9YdE1tqNIxBiJfYWC9FkdHA7QQhtDXw+jE1ik8+76xA?=
 =?us-ascii?Q?Npo80a3W/Aiv8GP+5WB/dcXOtEpa01/HcfvXqvPgkA4OoLwrs++pFA0ECIRk?=
 =?us-ascii?Q?Tv8Vyo9wN/A9SbW70mQkGlKnWP7FvaxauO4eWNrxOPtg/k5/QwIRNXMQXC/8?=
 =?us-ascii?Q?hpuaLNK6t6z8J9MM8xXFy1sYvFMIBQtZOyShqWwg01YhKqaIfttolyEjts8L?=
 =?us-ascii?Q?i9xSpP6HszTq7e5Al+key21FPEfukUaNzwDBoi0cRLovA/Ak1lGstOx9MynM?=
 =?us-ascii?Q?77kd+EPSEbBLS3sSpztc2aZkjY8C3McP+d/2YwxiewcjkCCpRXq0YwDw3mr6?=
 =?us-ascii?Q?096e3HlaSn0DfnZLRmEf0tzZFEWptSStrOsuT73WD1a2zrWezthXPrYnbyqk?=
 =?us-ascii?Q?xR+dVXKJc0x51oclKcZaZo34L5JnxHNC+0c72t4v+TvddDlkR4Mxd9RBOsfv?=
 =?us-ascii?Q?AnycRpbL5c4OWBKwSBljXmMKZo13N25Luwc5iR4E?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1PR03MB7098.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a12b7fa8-3c37-4b5f-13fb-08de11527483
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2025 10:04:57.2886
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 1HYm8SCP/ywrYBSzur4q1uel57sIrmh1KlMuUrUAAAV1vn9zYbsrMDlwoeRZHqpP3Tq7FS+Y5z+Toi8+U/E45g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5363


Ah! IoCsqInsertIrpEx will handle marking the IRP as pending.

Reviewed-by: Owen Smith <owen.smith@cloud.com>

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 21 October 2025 3:44 PM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh
Subject: [XENCONS PATCH] Do not call IoMarkIrpPending on queued R/W IRPs

ConsoleAbiPutQueue eventually calls IoCsqInsertIrpEx, which may complete
the IRP if it's already being canceled.

Calling IoMarkIrpPending on such IRPs will cause a crash:

     # Child-SP          RetAddr               Call Site
    00 ffffd100`df0ad498 fffff803`36573569     nt!KeBugCheckEx
    01 ffffd100`df0ad4a0 fffff803`365727fc     nt!KiBugCheckDispatch+0x69
    02 ffffd100`df0ad5e0 fffff803`3656b00d     nt!KiSystemServiceHandler+0x=
7c
    03 ffffd100`df0ad620 fffff803`36448ba1     nt!RtlpExecuteHandlerForExce=
ption+0xd
    04 ffffd100`df0ad650 fffff803`364479c4     nt!RtlDispatchException+0x42=
1
    05 ffffd100`df0add50 fffff803`36573642     nt!KiDispatchException+0x1e4
    06 ffffd100`df0ae400 fffff803`36571edc     nt!KiExceptionDispatch+0xc2
    07 ffffd100`df0ae5e0 fffff80c`f0691a47     nt!KiRaiseAssertion+0x2dc
    08 ffffd100`df0ae770 fffff80c`f0697b63     xencons!IoGetCurrentIrpStack=
Location(
                        struct _IRP * Irp =3D 0xffffc082`64dc5170)+0x37 [10=
.0.26100.0\km\wdm.h @ 34677]
    09 ffffd100`df0ae790 fffff80c`f069ca13     xencons!IoMarkIrpPending(
                        struct _IRP * Irp =3D 0xffffc082`64dc5170)+0x13 [10=
.0.26100.0\km\wdm.h @ 35091]
    0a ffffd100`df0ae7d0 fffff80c`f069c45c     xencons!PdoDispatchReadWrite=
Control(
                        struct _XENCONS_PDO * Pdo =3D 0xffffc082`645bc690,
                        struct _IRP * Irp =3D 0xffffc082`64dc5170)+0x53 [sr=
c\xencons\pdo.c @ 1801]
    0b ffffd100`df0ae810 fffff80c`f06913c9     xencons!PdoDispatch(
                        struct _XENCONS_PDO * Pdo =3D 0xffffc082`645bc690,
                        struct _IRP * Irp =3D 0xffffc082`64dc5170)+0xcc [sr=
c\xencons\pdo.c @ 1863]
    0c ffffd100`df0ae850 fffff803`36919aa0     xencons!Dispatch(
                        struct _DEVICE_OBJECT * DeviceObject =3D 0xffffc082=
`6468fd30 Device for "\Driver\xencons",
                        struct _IRP * Irp =3D 0xffffc082`64dc5170)+0x249 [s=
rc\xencons\driver.c @ 230]
    0d ffffd100`df0ae8d0 fffff803`3691adbd     nt!IopSynchronousServiceTail=
+0x1a0
    0e ffffd100`df0ae990 fffff803`36572d93     nt!NtWriteFile+0x66d
    0f ffffd100`df0aea90 00007ffb`e6756194     nt!KiSystemServiceCopyEnd+0x=
13
    10 000000a5`140ff318 00000000`00000000     0x00007ffb`e6756194

IRP object:

    (*((xencons!_IRP *)0xffffc08264dc5170))                 [Type: _IRP]
    [+0x000] Type             : 2288 [Type: short]
    [+0x002] Size             : 0x64c2 [Type: unsigned short]
    [+0x008] MdlAddress       : 0x0 [Type: _MDL *]
    [+0x010] Flags            : 0x60a00 [Type: unsigned long]
    [+0x018] AssociatedIrp    [Type: <unnamed-tag>]
    [+0x020] ThreadListEntry  [Type: _LIST_ENTRY]
    [+0x030] IoStatus         [Type: _IO_STATUS_BLOCK]
    [+0x040] RequestorMode    : 1 [Type: char]
    [+0x041] PendingReturned  : 0x1 [Type: unsigned char]
    [+0x042] StackCount       : 1 [Type: char]
    [+0x043] CurrentLocation  : 3 [Type: char]
    [+0x044] Cancel           : 0x0 [Type: unsigned char]
    [+0x045] CancelIrql       : 0x0 [Type: unsigned char]
    [+0x046] ApcEnvironment   : 0 [Type: char]
    [+0x047] AllocationFlags  : 0x6 [Type: unsigned char]
    [+0x048] UserIosb         : 0xa5140ff370 [Type: _IO_STATUS_BLOCK *]
    [+0x048] IoRingContext    : 0xa5140ff370 [Type: void *]
    [+0x050] UserEvent        : 0x0 [Type: _KEVENT *]
    [+0x058] Overlay          [Type: <unnamed-tag>]
    [+0x068] CancelRoutine    : 0x0 : 0x0 [Type: void (__cdecl*)(_DEVICE_OB=
JECT *,_IRP *)]
    [+0x070] UserBuffer       : 0x0 [Type: void *]
    [+0x078] Tail             [Type: <unnamed-tag>]

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/pdo.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index 7e42862..87b3230 100644
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -1797,15 +1797,11 @@ PdoDispatchReadWriteControl(
     status =3D XENCONS_CONSOLE_ABI(PutQueue,
                                  &Pdo->Abi,
                                  Irp);
-    if (status =3D=3D STATUS_PENDING) {
-        IoMarkIrpPending(Irp);
-        goto done;
+    if (status !=3D STATUS_PENDING) {
+        Irp->IoStatus.Status =3D status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
     }

-    Irp->IoStatus.Status =3D status;
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-done:
     return status;
 }

--
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




From win-pv-devel-bounces@lists.xenproject.org Mon Oct 27 13:41:54 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Oct 2025 13:41:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1151625.1482141 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vDNTs-0007Io-Rp; Mon, 27 Oct 2025 13:41:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1151625.1482141; Mon, 27 Oct 2025 13:41:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vDNTs-0007If-Od; Mon, 27 Oct 2025 13:41:52 +0000
Received: by outflank-mailman (input) for mailman id 1151625;
 Mon, 27 Oct 2025 13:41:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=IPi6=5E=bounce.vates.tech=bounce-md_30504962.68ff7695.v1-63937b5bee974883abf1f324e081df86@srs-se1.protection.inumbo.net>)
 id 1vDNTr-0007IZ-Pi
 for win-pv-devel@lists.xenproject.org; Mon, 27 Oct 2025 13:41:51 +0000
Received: from mail132-22.atl131.mandrillapp.com
 (mail132-22.atl131.mandrillapp.com [198.2.132.22])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ac21db26-b33a-11f0-980a-7dc792cee155;
 Mon, 27 Oct 2025 14:41:44 +0100 (CET)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-22.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cwF6F5N2jzGlsxnJ
 for <win-pv-devel@lists.xenproject.org>; Mon, 27 Oct 2025 13:41:41 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 63937b5bee974883abf1f324e081df86; Mon, 27 Oct 2025 13:41:41 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac21db26-b33a-11f0-980a-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1761572501; x=1761842501;
	bh=VxE8fqYqEPjLow+oy1+iDWORMyJkk4+Iw+5zZUAmMNA=;
	h=From:Subject:Message-Id:To:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=yt8d0WzcOudf2wUEPX5eS1GgcT8hquG6uhfWDtuwyhaE2i+FcUA5HS9PBramYr4mM
	 x65gJt47YnC/MvjWxPwxeKFxcnaZQbFNBgYdUNggPvSKJn9tsIoBymQ+YcfQ4hK3Dq
	 MjpPjeuzOmKElPgLBA166rKyo6rYGUg0mRI7y8OpfbISiVcv5a/4XZXeuu1Zhm5tsG
	 bFIjTyg4EijP7TKTSyZgHUNzEZiCzH0mMvaAbk3sw+xPJpYROaLPTONL5sTCWFQlXE
	 bwP7mm5IhkTIw0Jn9f18YuRpj07qRlHYriIq4GnoAkvhzZzTPlSXjvo76lkJcCjZLD
	 glsyzfcg8pOYw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1761572501; x=1761833001; i=ngoc-tu.dinh@vates.tech;
	bh=VxE8fqYqEPjLow+oy1+iDWORMyJkk4+Iw+5zZUAmMNA=;
	h=From:Subject:Message-Id:To:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=uIypKmu9LHcuV72Rx3RMfqpWOEbrvH0kUJwWx4vEZTZjh0mBEj+z7avlAV5n2zAJ1
	 K/hvYdj0fxuj73woY9XOAB7NNNI2LydOTOCZWxAxIp3kCcfcBnU0SSpbDaOOQLAyEc
	 oSd+LhOD5BntVrV8iCFZXikrdjbMZbbgv1EENwmlDH/f02J/rS0HTiz4Rj0pp8y7+7
	 zoXWKiqXwarGYKMDFGk6FIKnE3VEMFFDji0aNBH4xriEW2iEPiAVpplyIL5N0xWU1X
	 VOU8HoArcPc0vbMX0v3xVX82nKXA/9cHLFATCbN3N0hTw01aV3G76xd8Ophumdr6MA
	 hwfGXLAg8RTPw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=202/2]=20Limit=20retry=20in=20ControllerGetResponse?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1761572499672
Message-Id: <9e970c06-7392-483b-8cdc-79842be489d8@vates.tech>
To: "Owen Smith" <owen.smith@citrix.com>, win-pv-devel@lists.xenproject.org
References: <20251016101602.533-1-ngoc-tu.dinh@vates.tech> <20251016101602.533-2-ngoc-tu.dinh@vates.tech> <PH0PR03MB7116F413F9BAE51284309250FEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
In-Reply-To: <PH0PR03MB7116F413F9BAE51284309250FEF2A@PH0PR03MB7116.namprd03.prod.outlook.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.63937b5bee974883abf1f324e081df86?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251027:md
Date: Mon, 27 Oct 2025 13:41:41 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 21/10/2025 15:07, Owen Smith wrote:
> Is there a way of detecting the backend has disappeared during ControllerGetResponse?
> As currently, there is a 100ms delay between attempts to trigger the backend - its possible the backend could take longer to respond in normal operation
> 
> Owen

I couldn't think of a clean way to do that. One way is to try and probe 
FrontendIsBackendOnline every timeout expiration to see if it's still 
working. It wouldn't work if the backend became unresponsive, but I can 
add that as an additional check for v2.

Another problem is with XENVIF_CONTROLLER_POLL_PERIOD as passed to 
EvtchnWait. This is similar to other places where we call 
KeStallExecutionProcessor in a loop at DISPATCH_LEVEL. This really 
limits how long we can wait in ControllerGetResponse, and I feel like 
10x10ms is already way too long.

IMO a better way would be to rework the controller (and eventually other 
components) to not run requests full-time at DISPATCH_LEVEL, so that 
we're free to wait for as long as we need. This is what I've been trying 
to do here: 
https://github.com/xcp-ng/win-xenvif/tree/dnt/controller-rework, but I 
need to find time to continue it...

> 
> ________________________________________
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of Tu Dinh <ngoc-tu.dinh@vates.tech>
> Sent: 16 October 2025 11:16 AM
> To: win-pv-devel@lists.xenproject.org
> Cc: Tu Dinh
> Subject: [PATCH 2/2] Limit retry in ControllerGetResponse
> 
> During unplug, NDIS may issue a hash reconfiguration. However, the
> backend may disappear before the request has had a chance to complete.
> This is observable by e.g. adding a delay at the beginning of
> VifReceiverSetHashAlgorithm and unplugging. If this happens, Xenvif will
> get stuck waiting forever in ControllerGetResponse, at DISPATCH_LEVEL to
> boot.
> 
> Limit the EvtchnWait retry to 10 attempts (10ms each to keep the
> previous 100ms limit) and return an error code to the caller if the wait
> has failed.
> 
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>   src/xenvif/controller.c | 13 +++++++++++--
>   1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
> index e032972..109c030 100644
> --- a/src/xenvif/controller.c
> +++ b/src/xenvif/controller.c
> @@ -248,7 +248,7 @@ fail1:
>   #define TIME_MS(_ms)        (TIME_US((_ms) * 1000))
>   #define TIME_RELATIVE(_t)   (-(_t))
> 
> -#define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms
> +#define XENVIF_CONTROLLER_POLL_PERIOD 10 // ms
> 
>   _IRQL_requires_(DISPATCH_LEVEL)
>   static NTSTATUS
> @@ -258,11 +258,12 @@ ControllerGetResponse(
>       )
>   {
>       LARGE_INTEGER                   Timeout;
> +    ULONG                           Attempt;
>       NTSTATUS                        status;
> 
>       Timeout.QuadPart = TIME_RELATIVE(TIME_MS(XENVIF_CONTROLLER_POLL_PERIOD));
> 
> -    for (;;) {
> +    for (Attempt = 0; Attempt < 10; Attempt++) {
>           ULONG   Count;
> 
>           Count = XENBUS_EVTCHN(GetCount,
> @@ -284,6 +285,13 @@ ControllerGetResponse(
>               __ControllerSend(Controller);
>       }
> 
> +    // Use STATUS_TRANSACTION_TIMED_OUT as an error code since STATUS_TIMEOUT is
> +    // a success code.
> +    if (Controller->Response.id != Controller->Request.id) {
> +        status = STATUS_TRANSACTION_TIMED_OUT;
> +        goto done;
> +    }
> +
>       ASSERT3U(Controller->Response.type, ==, Controller->Request.type);
> 
>       switch (Controller->Response.status) {
> @@ -311,6 +319,7 @@ ControllerGetResponse(
>       if (NT_SUCCESS(status) && Data != NULL)
>           *Data = Controller->Response.data;
> 
> +done:
>       RtlZeroMemory(&Controller->Request,
>                     sizeof (struct xen_netif_ctrl_request));
>       RtlZeroMemory(&Controller->Response,
> --
> 2.51.0.windows.2
> 
> 
> 
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
> 
> XCP-ng & Xen Orchestra - Vates solutions
> 
> web: https://vates.tech
> 
> 
> 



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Mon Oct 27 14:36:51 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Oct 2025 14:36:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1151652.1482170 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vDOL4-000606-10; Mon, 27 Oct 2025 14:36:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1151652.1482170; Mon, 27 Oct 2025 14:36:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vDOL3-0005zz-U3; Mon, 27 Oct 2025 14:36:49 +0000
Received: by outflank-mailman (input) for mailman id 1151652;
 Mon, 27 Oct 2025 14:36:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=moSt=5E=bounce.vates.tech=bounce-md_30504962.68ff837c.v1-279bfcd8fb224cc1b902361032bb45d3@srs-se1.protection.inumbo.net>)
 id 1vDOL2-0005za-8r
 for win-pv-devel@lists.xenproject.org; Mon, 27 Oct 2025 14:36:48 +0000
Received: from mail132-22.atl131.mandrillapp.com
 (mail132-22.atl131.mandrillapp.com [198.2.132.22])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5cb21ad1-b342-11f0-980a-7dc792cee155;
 Mon, 27 Oct 2025 15:36:46 +0100 (CET)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-22.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cwGKm1YV0zGlt9rp
 for <win-pv-devel@lists.xenproject.org>; Mon, 27 Oct 2025 14:36:44 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 279bfcd8fb224cc1b902361032bb45d3; Mon, 27 Oct 2025 14:36:44 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5cb21ad1-b342-11f0-980a-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1761575804; x=1761845804;
	bh=Gw80sVa4ptIJWb7obFJoHH2QpK9lFKZtQGj00p7eWnM=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=tbLsbrBKXOfwVxBXU3VdHfmB5xFSMkgZKFgtEfh+Z9xQNpztw49KNQtEx+nCn1xEF
	 bwrVQit+LPV7xZGiukrXYJ7XQ5+88IealuW0ZKVUYu4i3N2cSPzBgP8qq6CrCI731e
	 Uj/jPYad/iLNIUbAshGnCge/Qr0HPCtta+NJlqY0hyQbrEVwOPk2iICXyrtTYrpC0b
	 B6s7oDVwbKbgvKKcOjqI4c/TTqVgfGqfUfhVu2CGc8EhtIWLxLc/Thcpgu2WdjWnez
	 EI8HISyc5BO3jlGI2QcGJAm/9hnql2XnNYwpIxxMbhvV8e63NHFefXhXcAEinZnZ3P
	 QgyjGE8RcvTWQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1761575804; x=1761836304; i=ngoc-tu.dinh@vates.tech;
	bh=Gw80sVa4ptIJWb7obFJoHH2QpK9lFKZtQGj00p7eWnM=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=JjOuJ2pmK7ltVmsSVzo/+lGJVX3GgiSkkPWFqp/1CZTkxOGrMhAz2Fm/JmTD11gsu
	 OX6HltjCpAxpeYrniPCkfJ6cl5mn88+umlDsVocD/A8khodXjYFaXkSiK9dM7lb6LS
	 BL/AMOn+xDwFGxC2KJ+cpkJZYmbEpXcKQkTBg5Zp41Oa3iKiKmsVELjIQBDbOEi2tN
	 U10mFaKTQT6aINwiU7ggeAIZ2tZYQPcjTxxE7HsD6e22bXyhqNTgUOVvBRv2RncxhL
	 IEVSl0a625uFsoBQ0HtmopkVvrMvWMbznVbEsHicEX6whQTr/rrRp1YRVih3Gm60l/
	 vOYoUr+49N7AA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH=20RESEND]=20Faster=20checksum=20for=20x64=20with=20carry=20flag=20renaming?=
X-Mailer: git-send-email 2.51.0.windows.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1761575803298
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Frediano Ziglio" <frediano.ziglio@citrix.com>
Message-Id: <20251027143613.738-1-ngoc-tu.dinh@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.279bfcd8fb224cc1b902361032bb45d3?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20251027:md
Date: Mon, 27 Oct 2025 14:36:44 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Modern CPUs are capable of renaming CF independently of other arithmetic
flags. We can better exploit ILP by maintaining two carry chains in the
hot checksum loop. This gives a ~20% speed boost for packets larger than
64 bytes (as tested on Zen 3).

Suggested-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/amd64/checksum_amd64.asm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/xenvif/amd64/checksum_amd64.asm b/src/xenvif/amd64/checksum_amd64.asm
index 8fbc241..37bbb7e 100644
--- a/src/xenvif/amd64/checksum_amd64.asm
+++ b/src/xenvif/amd64/checksum_amd64.asm
@@ -26,10 +26,12 @@ l64:
     adc rax, [rdx + 8]
     adc rax, [rdx + 16]
     adc rax, [rdx + 24]
-    adc rax, [rdx + 32]
-    adc rax, [rdx + 40]
-    adc rax, [rdx + 48]
-    adc rax, [rdx + 56]
+    adc rax, 0
+    mov r9, [rdx + 32]
+    add r9, [rdx + 40]
+    adc r9, [rdx + 48]
+    adc r9, [rdx + 56]
+    adc rax, r9
     adc rax, 0
 
     sub r8, 64
-- 
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From win-pv-devel-bounces@lists.xenproject.org Fri Oct 31 10:22:22 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 31 Oct 2025 10:22:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1154143.1484251 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vEmGy-0003Kk-BD; Fri, 31 Oct 2025 10:22:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1154143.1484251; Fri, 31 Oct 2025 10:22:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1vEmGy-0003Kd-8J; Fri, 31 Oct 2025 10:22:20 +0000
Received: by outflank-mailman (input) for mailman id 1154143;
 Fri, 31 Oct 2025 10:22:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=b/EU=5I=citrix.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1vEmGw-0003KX-F9
 for win-pv-devel@lists.xenproject.org; Fri, 31 Oct 2025 10:22:18 +0000
Received: from BL0PR03CU003.outbound.protection.outlook.com
 (mail-eastusazlp170120007.outbound.protection.outlook.com
 [2a01:111:f403:c101::7])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 78a133f6-b643-11f0-980a-7dc792cee155;
 Fri, 31 Oct 2025 11:22:16 +0100 (CET)
Received: from SA1PR03MB7098.namprd03.prod.outlook.com (2603:10b6:806:338::6)
 by SJ0PR03MB5792.namprd03.prod.outlook.com (2603:10b6:a03:2d5::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct
 2025 10:22:12 +0000
Received: from SA1PR03MB7098.namprd03.prod.outlook.com
 ([fe80::578c:fcff:d164:cb15]) by SA1PR03MB7098.namprd03.prod.outlook.com
 ([fe80::578c:fcff:d164:cb15%6]) with mapi id 15.20.9275.013; Fri, 31 Oct 2025
 10:22:12 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 78a133f6-b643-11f0-980a-7dc792cee155
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xAJBlBgohQ9vO34OzuozyIszwUTCEis+dXwNVvdSvVoX+CpmRQGjkUQfzHkMgM5bZUor3MEiIs+SQ6Lgr4lsEPQay4GRPrLR88Lrccp+PTcznyxIosmsI6vlJd868XFKwQHSjR4kCPnd+iWmWJ+XGFm6tYtS3VKnnXvSPBcwOGv/YkWlCfCXLq1x3nKAZsAQMPSnM2IaQ/hnxhvfWFG640AbfzZrKT7PBuNwXMDaLQoyVMbO3xczeJ9kFGMeBuzQwnBQkD7707KQLmXohfVIbHKTRIkEHIc0xM96CGe2IJek46L/z4UxuTmabd8Sm6q1W46BCuhgF1FExgDaKCCSAA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=bYA99CUm7mIL2e3eEGhrgBENU84fmVPIDASf2OHCekE=;
 b=H2xutKX0MGHGg5DkyiUChn1V9NyxO5b9SUeaENBsmoQ9QupLP9Bwk/TLihYyA2ny2kbqwFpG6fOG8CO5P+b+Y/4lJeds9gKyFXjC6whraemAxrG7D76GOFi7buIDb4wnT2V5i1SajvgKd1iKdj9rzxpptzYl+ZIhTwv1RSSQmcf/3SLSIXpVuldGcDvjxmJrtKS4+3n3eDVRH86vG/unpf16wTznTqE9sBVmNTqwIkzIVbkOMRNdL0z+5at1liXil/dP1gYIjcNB1YaeXfQW7JMCvqIrFj5TrdPmQiu6GFF1lcnRfiK2IpjfIPJTXWqZO/vVS2JZEz9vACVrkYbtGQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bYA99CUm7mIL2e3eEGhrgBENU84fmVPIDASf2OHCekE=;
 b=pA0DVSCYPJA1xuxuI8+/0TMYEcKuusoy+WMF/HYbBhrwYZyV0kuE70anaYSVOKe604WzgwhS5sm/ZvBAJr7Jv4zcHRDWFPkLXv1TkdZiiJmKXQ3TbvoFbMAlMzImMflwWApNsH0vwpO0CTt24oALKY2NmVrcBcSLqdwZPiH/gXM=
From: Owen Smith <owen.smith@citrix.com>
To: Tu Dinh <ngoc-tu.dinh@vates.tech>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
CC: Frediano Ziglio <frediano.ziglio@citrix.com>
Subject: Re: [XENVIF PATCH RESEND] Faster checksum for x64 with carry flag
 renaming
Thread-Topic: [XENVIF PATCH RESEND] Faster checksum for x64 with carry flag
 renaming
Thread-Index: AQHcR08qSJqdEEYwWUSQFuJkXOHg/bTcEbuD
Date: Fri, 31 Oct 2025 10:22:12 +0000
Message-ID:
 <SA1PR03MB709801D4628F457579F95DECFEF8A@SA1PR03MB7098.namprd03.prod.outlook.com>
References: <20251027143613.738-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20251027143613.738-1-ngoc-tu.dinh@vates.tech>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1PR03MB7098:EE_|SJ0PR03MB5792:EE_
x-ms-office365-filtering-correlation-id: 7245a762-b69e-44ea-da8e-08de18675b3c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021;
x-microsoft-antispam-message-info:
 =?us-ascii?Q?Z1eIB/Ne3K4EnFDSnIXe3LPng+Sb89AGPcR5654Nlu7BCE9h2iP7gHl82lir?=
 =?us-ascii?Q?RHia0Us+1sl111FKesNmFyXuQ1alevHheout8TL2Y/hAivfdF8dIu3RT4Mom?=
 =?us-ascii?Q?RRYsbKa+5kfxJ560f7lCHzBJC+wckzel+ZogKW57oM6n7ROdoawOvOQdCeqe?=
 =?us-ascii?Q?N5O4ENc8lV9/+2yWpqN6g5VAnvzH7qBEWCh5hCd6gkL+/LTCmfuvJGhTe/GA?=
 =?us-ascii?Q?PSyBqQs28uS7vaQZyoXYCS/W7gmhyBvNIg+7D6PBiPb072SZBOH65TmybhVU?=
 =?us-ascii?Q?Iwxz1Z6SNu+cHeZK44q1Ybh3Kx288i77L8VE0xe6W9yH6L+5WKBFFJHZbbhP?=
 =?us-ascii?Q?H4n/JniDEk7VFwut00/sMXLSloku1GTH70S+kBrT85cpchxuYurCFyVL0pfr?=
 =?us-ascii?Q?CIU3j1htROr5PEfQ9RZL6v28Cd6yRUsFrEvnSjjkhS/M+SzXja2HEn9JFK9e?=
 =?us-ascii?Q?pTVUORmEEjZ0eGZ3gShBpG4I1IZ8n1xAZvQJ0kAYcoQzFdREth691Rfbw17+?=
 =?us-ascii?Q?j/w+UP9qgFRoi0S/HQ6EIr60xIG31QQ1DxuJY/yPf1UxRg/1ItXjdY4xaANz?=
 =?us-ascii?Q?xa4D8oz2V61eyT/1y0T6o/X4xqAacz1EtCj2w7c/Fj9Rzwhr4pmFqGiBEyYL?=
 =?us-ascii?Q?3AB5YWJSY4ACc/qwawkZJB5/BfXwm4X7QpIvHARpzcZh3BjBzVXc0G6CbV4j?=
 =?us-ascii?Q?VsgTlZiggO1V+2yxCgF2CydTXacKOAoisfNbsuC/hj+4LPMIrgNwjIrLUo4I?=
 =?us-ascii?Q?D//nxkrIw2c/nWwPTO/gLEIa6RcVBJTBsLx81bFHLToi2C7Cm+6ksSR+bXm4?=
 =?us-ascii?Q?Jag3cdlloi8tIGs/wm5rqYEyt7NwG5O75qzMU/MZ/AggBbW9guLxTddDv2jQ?=
 =?us-ascii?Q?wpaSy5b+VIx5RyR6msKp/j5QT2ZJJCsZiDu7P0BM0oIaeWeDImqCZeL3qZnp?=
 =?us-ascii?Q?Ru+klFv9PrwgVfNaqDPrmy7n5A25QkqzXi57aL+Ga5mw8DM04u0mBJhOgYR6?=
 =?us-ascii?Q?qIIA/YrZF2HvDOBb4l71t5UYHv4isp+C2wrZ2L/3f0+R3p3NfGk5aDVgWk+g?=
 =?us-ascii?Q?PPZaevX4NR0Lzh5T9h1K6AMousfbByKZaztCOXWvx5bP2xpotMLmqBkV75rQ?=
 =?us-ascii?Q?7awb3PTIK9jfnYsMzk4zuqsPh8wm4BHzJnmRFTnq+fFxTO26Nkvxq11h4sUe?=
 =?us-ascii?Q?jI872kjT1vZ4A251KSkTAJ8VZTfRjzumybJStj23R+QtwRWXUPzTCPnmOuAt?=
 =?us-ascii?Q?PqIvY7O+6S9Q5DIhQHlI7DcJzHqgqLgG+4tpMXuQ6PW5V4flnTMN+Ho1TRRT?=
 =?us-ascii?Q?calEd7nH0w7/bJolXmbDfFh8Sgn2A85vSM2te4HT+pyhe+UaTX47hv3bQ8to?=
 =?us-ascii?Q?OtcirV2Eer/36G+FQaoBLNHBfcTjjEr0mTxaCb3xKpbCyrMNlDFwZuzkrhYG?=
 =?us-ascii?Q?wjdVPzZk0aGvwRhkGppRFR80oi2t9qOajysK2E3e0dkJLMAbA6ECUA=3D=3D?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR03MB7098.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?QsUBUwu0Bvo1KAy5I12RvzwSfO9/hY/yH7LzVvl+5AMwmArZLGgzp4m4dMFH?=
 =?us-ascii?Q?8Yt+EH/yY/YIu8jjjNpRhV/IPlJ0TGy15yvqiq6orclE55LcwRdexn27/cnp?=
 =?us-ascii?Q?zId/1W4c1/Krk4BCTUykUXQ3qZMwF7e5IWsGAVp6R4o/1C1Coqc+2vQfFtNI?=
 =?us-ascii?Q?vDOrIy8lFhSCnbhT+tMPtvkCBGbqbs+PkoaOjJd+rhNnVG4PkjyNDl69pu+E?=
 =?us-ascii?Q?89mLl/c6lunBdgcyKmc9Q78UnjSazMV/Iu/2JImYMCiDD9XqbKLQgD+dI9m6?=
 =?us-ascii?Q?msLwgLZnTgikCphvLzjGcEj7sPrvuwzk1F7JelsAz1IApydl96/7rXlpEhEL?=
 =?us-ascii?Q?dWr2UgJYolDB3VvqgTmnsNaOwSyUTXZkOpWJ7Cp0++X0lltNP/vCCqMakpWg?=
 =?us-ascii?Q?io6dpKMkAGWrlWwj0pRJ3hfwDO6cuOuS583P7mhqR7UMj2QOoHTKa4wJFSYv?=
 =?us-ascii?Q?3j9serD7WwhmW05zsT/rkoWqj1iQVvHjWFr0GMcFd1JP5frnP5/SvIZFLQzS?=
 =?us-ascii?Q?FXO3FF8cB6FO4b35Ne5UcqewocJKU/CrcapHuintBUcOU3Jdc2zYpgHaZMYy?=
 =?us-ascii?Q?8zM415oN5wiw6fUtgQzzXchU3ZcPSw+E85xGNOqFtBXxVcneFNuV500Ldw86?=
 =?us-ascii?Q?Uyl8dhp4o/pm2AojtQsK+fQJKIw0pbVH/pcCEqJR3HbqbFFTS6rjq93AWUbl?=
 =?us-ascii?Q?9odq2c1oL1Gva0i8vWg+OMcdMYXewrEju496mxGuiL0LEKInMhaH1vuQ6nHu?=
 =?us-ascii?Q?E/4eC8VaoxqR87M0pGLldXNnXyNKwCd83ITy8KB+ZLMoeWjuRFUDPInYtWzj?=
 =?us-ascii?Q?DJn8vtN3mWb1/U5EXvyxRSFZxj2x9ucH5qt2KBBuHEBbHb2f/u4aDAiDLHHm?=
 =?us-ascii?Q?xbCALT1+TrGq81QWFDyj56NHvHNmqesoxI9EOiQVv3X1YJfdgpQXpWmCxVCz?=
 =?us-ascii?Q?VMZJSv8LhxIlwqpDHwgJTUzVyGdK2PCzWxpzVAKo2QfzE6BqFeGyDeGFtwcI?=
 =?us-ascii?Q?cZNDvc2MM7plwR0f//dt/PLSRcGxtbyeEqspAiVKZdFuKbwsHnvT2vdwuVlB?=
 =?us-ascii?Q?KA/zGTP79GRcMF38xuDWgeDa7InfHuw73aLl1mmcceWao1etVFTQCmZZJBlC?=
 =?us-ascii?Q?wXKStWxhlk8rX1FfARB8WcSxO33j8Cc0S9UHHjgqkB6YqdbupBva4HUF8UVy?=
 =?us-ascii?Q?l/FVtT/GmRuVmeOR4znLGyqhQySs+Sjp8Jyl0njLOtBEiaH41kjyFhDFBnwE?=
 =?us-ascii?Q?nH5NqEA/rdSUtav8M0bVWCGFoCqOf0xQ5Xivdm7N5KH8Uj4wdQ1DIhvfDp/q?=
 =?us-ascii?Q?wqOP9bFoKFrQupddLqjpQ3ZzFzeueq9sJME4ksxlZgSLj4glVFYDe2e+IObn?=
 =?us-ascii?Q?ysf/FbjuLuat4WgK83E56CyCA0i3fr/dEbzq8treCefD5tqBrbJB64JIMxbq?=
 =?us-ascii?Q?TqZkcU4gue/OPczFMLFtgLExBLbfxzeaDhazjsQZ+gqUd+tUUIeISH9gUM5Y?=
 =?us-ascii?Q?XHzvjtm0Xu4khqSTkkmaCYaxErlDU/PpMgG6N3Knacg9JiOQLjhUa5N3gRHv?=
 =?us-ascii?Q?0ko+5j4Y5AOLicoBWKCPf2Dvh3F990F4nj8zgvRV?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1PR03MB7098.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7245a762-b69e-44ea-da8e-08de18675b3c
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2025 10:22:12.4326
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: n68tUSHe/C1i8E79981g9FkcbGvM6hJT+a73kZ/+jkN0ZeHl6JS7jaqO9X8u43ggR1lDojh5ZBWy3uaIBNEqlg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5792

Reviewed-by: Owen Smith <owen.smith@cloud.com>

________________________________________
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> on behalf of=
 Tu Dinh <ngoc-tu.dinh@vates.tech>
Sent: 27 October 2025 2:36 PM
To: win-pv-devel@lists.xenproject.org
Cc: Tu Dinh; Frediano Ziglio
Subject: [XENVIF PATCH RESEND] Faster checksum for x64 with carry flag rena=
ming

Modern CPUs are capable of renaming CF independently of other arithmetic
flags. We can better exploit ILP by maintaining two carry chains in the
hot checksum loop. This gives a ~20% speed boost for packets larger than
64 bytes (as tested on Zen 3).

Suggested-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/amd64/checksum_amd64.asm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/xenvif/amd64/checksum_amd64.asm b/src/xenvif/amd64/checksu=
m_amd64.asm
index 8fbc241..37bbb7e 100644
--- a/src/xenvif/amd64/checksum_amd64.asm
+++ b/src/xenvif/amd64/checksum_amd64.asm
@@ -26,10 +26,12 @@ l64:
     adc rax, [rdx + 8]
     adc rax, [rdx + 16]
     adc rax, [rdx + 24]
-    adc rax, [rdx + 32]
-    adc rax, [rdx + 40]
-    adc rax, [rdx + 48]
-    adc rax, [rdx + 56]
+    adc rax, 0
+    mov r9, [rdx + 32]
+    add r9, [rdx + 40]
+    adc r9, [rdx + 48]
+    adc r9, [rdx + 56]
+    adc rax, r9
     adc rax, 0

     sub r8, 64
--
2.51.0.windows.2



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




