From win-pv-devel-bounces@lists.xenproject.org Tue Sep 02 09:40:14 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 02 Sep 2025 09:40:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1105963.1456768 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utNUq-0001kP-EA; Tue, 02 Sep 2025 09:40:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1105963.1456768; Tue, 02 Sep 2025 09:40:12 +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 1utNUq-0001kI-Bd; Tue, 02 Sep 2025 09:40:12 +0000
Received: by outflank-mailman (input) for mailman id 1105963;
 Tue, 02 Sep 2025 09:40:11 +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=K8Ij=3N=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utNUp-0001kC-6D
 for win-pv-devel@lists.xenproject.org; Tue, 02 Sep 2025 09:40:11 +0000
Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com
 [2607:f8b0:4864:20::1031])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d07bdbd3-87e0-11f0-8adc-4578a1afcccb;
 Tue, 02 Sep 2025 11:40:10 +0200 (CEST)
Received: by mail-pj1-x1031.google.com with SMTP id
 98e67ed59e1d1-3277c603b83so3167082a91.2
 for <win-pv-devel@lists.xenproject.org>; Tue, 02 Sep 2025 02:40:09 -0700 (PDT)
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: d07bdbd3-87e0-11f0-8adc-4578a1afcccb
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756806008; x=1757410808; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=MXZ53L7+8U5GFHtMCl8JlLt0wuCRrWEzX8mQP6h/UgU=;
        b=eAcROIyLZWOD8Ii7wrws40Yk6XOMoKjXk1zbQ4/uFcBy02YXeXXYBnv7ITc9LPU/F4
         gQMDGsyfAeEh0V0PGV6HP9/JOioCLHy165zGAcxIuSeu6ftUERx5NGjOJdV7LIsuFX+l
         XKQ7E6FGaYQ4CdRFrkIWe2tXoJSkjHarIxSgI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756806008; x=1757410808;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=MXZ53L7+8U5GFHtMCl8JlLt0wuCRrWEzX8mQP6h/UgU=;
        b=g405ulAKjp8WaW7UMTdfOiz3fOP102s3zllPCId4OOCOMqBl4Zd49WR4IFycDNAg2j
         5TvFcSUIoH7mGFwnR3PXZyNdLnwWOCwGPSsTf0lKZhcK4XxRKmwoU8ivqRdGNKvCaCPR
         7wUefqVrr752xbMEWaaf8JFQORdNy7HiD7PsBv01WPLv5+U04t1mpOCDcLzqcI+LJacO
         ZDG5B1EG8L7VLSQFYD5dt22SNMTn3rIIAj7JPIAD6BzB+Kmg0NPWn+P79wnXV2/aBc+6
         Hs264zf2kSI6phFe0kdnpzDTVHwlt5rZQYzXhE6JcZaDMe/OhMnzGlIRGbGQsLik2cbR
         V0Mg==
X-Gm-Message-State: AOJu0Yw4LqBxZuHaMSpw+gYFiBifjLBz7QW3CWE8AshqRz1zjBYGAeCL
	/PIdypp+kWPErlLs0An/PRzOLDuNN41w/YYDtLZEbHRosxSqPnuiwc7cOMW7sgg6YQBhnJnjaTS
	XkzC5svTz2TQ2pGPm+hEPQgX8AhrYDFL78rAkN2rtgMNoxauY58M=
X-Gm-Gg: ASbGnctXYdGKP2nMhlnrhgUrvCsrK5Wq+6Gp5DRB7hH33rl7QngKMtg5izTD9owmV4b
	qH4enGNhsLCKv1uUF2nAPXNjD/M27C6n0ZF44aHNUnQKAnd/USZgsNEj4wAhY0zepZpcDeas+dD
	lAEx5YAeo2qVVTP8vry9g0GDOKLp3x6B0V5D1TE777QjftzrM/imSasV8RdNb4jAHN+72iyGaow
	Cc3TQ==
X-Google-Smtp-Source: AGHT+IE2RFbK+hPbqS7ktcFjT2zYo/vDD2ugyWahDzGdSeYWj2HvXVuR8kAkg1fUkMdNrOKrJgMWDWw01NJrbFJoFz0=
X-Received: by 2002:a17:90b:4e8f:b0:31c:c661:e4e with SMTP id
 98e67ed59e1d1-328156f911amr13782752a91.33.1756806007830; Tue, 02 Sep 2025
 02:40:07 -0700 (PDT)
MIME-Version: 1.0
References: <20250829093408.425-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250829093408.425-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Tue, 2 Sep 2025 10:39:55 +0100
X-Gm-Features: Ac12FXxF4y2fd-CEgqOyGWh0w0SkWkrTYWUwxdeEQ0bfkgQH7TljXZqBw4lfdfw
Message-ID: <CAC_UY88LMLYkWj=yxUR8Xat+HDw7OtUxReGekHqdr2ZpL8KG+w@mail.gmail.com>
Subject: Re: [XENVIF PATCH] Early-stop state wait when backend disappears
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000096111063dce4645"

--000000000000096111063dce4645
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

This does look like a pretty tight race between the frontend trying to
gracefully close, and the backend deleting the xenstore entries. This
change also affects the wait for backend state that's used in
FrontendPrepare, but removing the backend here should result in the VIF
being removed from the VM.

On Fri, Aug 29, 2025 at 10:34=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> =
wrote:

> During VIF unplug, if the backend disappears before FrontendWaitFor-
> BackendXenbusStateChange is called, that function will block at
> XenbusStateUnknown and cause the system to hang until the timeout
> expires.
>
> Break out of the watch loop as soon as this condition is detected to
> avoid this hang.
>
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xenvif/frontend.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
> index c497f24..daeab9c 100644
> --- a/src/xenvif/frontend.c
> +++ b/src/xenvif/frontend.c
> @@ -1404,7 +1404,12 @@ FrontendWaitForBackendXenbusStateChange(
>                                __FrontendGetBackendPath(Frontend),
>                                "state",
>                                &Buffer);
> -        if (!NT_SUCCESS(status)) {
> +        if (status =3D=3D STATUS_OBJECT_NAME_NOT_FOUND) {
> +            *State =3D XenbusStateUnknown;
> +            Trace("%s disappeared\n",
> +                  __FrontendGetBackendPath(Frontend));
> +            break;
> +        } else if (!NT_SUCCESS(status)) {
>              *State =3D XenbusStateUnknown;
>          } else {
>              *State =3D (XenbusState)strtol(Buffer, NULL, 10);
> --
> 2.51.0.windows.1
>
>
>
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000096111063dce4645
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div><div class=3D"gmail_default" style=3D"font-fa=
mily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family=
:monospace">This does look like a pretty tight race between the frontend tr=
ying to gracefully close, and the backend deleting the xenstore entries. Th=
is change also affects the wait for backend state that&#39;s=C2=A0used in F=
rontendPrepare, but removing the backend here should result in the VIF bein=
g removed from the VM.</div></div><br><div class=3D"gmail_quote gmail_quote=
_container"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Aug 29, 2025 at 1=
0:34=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex">During VIF unplug, if the ba=
ckend disappears before FrontendWaitFor-<br>
BackendXenbusStateChange is called, that function will block at<br>
XenbusStateUnknown and cause the system to hang until the timeout<br>
expires.<br>
<br>
Break out of the watch loop as soon as this condition is detected to<br>
avoid this hang.<br>
<br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xenvif/frontend.c | 7 ++++++-<br>
=C2=A01 file changed, 6 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c<br>
index c497f24..daeab9c 100644<br>
--- a/src/xenvif/frontend.c<br>
+++ b/src/xenvif/frontend.c<br>
@@ -1404,7 +1404,12 @@ FrontendWaitForBackendXenbusStateChange(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__FrontendGetBackendPath(Frontend),<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;state&quot;,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;Buffer);<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!NT_SUCCESS(status)) {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (status =3D=3D STATUS_OBJECT_NAME_NOT_FOUND=
) {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *State =3D XenbusStateUnknown;<b=
r>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Trace(&quot;%s disappeared\n&quo=
t;,<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __FrontendG=
etBackendPath(Frontend));<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 } else if (!NT_SUCCESS(status)) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*State =3D XenbusStateUnkno=
wn;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*State =3D (XenbusState)str=
tol(Buffer, NULL, 10);<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000096111063dce4645--


From win-pv-devel-bounces@lists.xenproject.org Tue Sep 02 09:54:23 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 02 Sep 2025 09:54:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1106004.1456802 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utNiY-0004yn-5L; Tue, 02 Sep 2025 09:54:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1106004.1456802; Tue, 02 Sep 2025 09:54:22 +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 1utNiY-0004yg-2r; Tue, 02 Sep 2025 09:54:22 +0000
Received: by outflank-mailman (input) for mailman id 1106004;
 Tue, 02 Sep 2025 09:54:21 +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=K8Ij=3N=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utNiX-0004ya-1i
 for win-pv-devel@lists.xenproject.org; Tue, 02 Sep 2025 09:54:21 +0000
Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com
 [2607:f8b0:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ca0776a9-87e2-11f0-8dd7-1b34d833f44b;
 Tue, 02 Sep 2025 11:54:18 +0200 (CEST)
Received: by mail-pl1-x631.google.com with SMTP id
 d9443c01a7336-24456ce0b96so53419695ad.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 02 Sep 2025 02:54:17 -0700 (PDT)
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: ca0776a9-87e2-11f0-8dd7-1b34d833f44b
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756806856; x=1757411656; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=7CMvtDgS6WmG/15jgKrgw5kqgEwfnmZDYwRqbk+kWXI=;
        b=F3CbaY8kCO5jHs53Z7a0vaMCt7M3VAkYu0MLRdrcZou1sjpQVRUtf+ogk8U6MrXGKm
         PTsYf8t99ot+d0m/SxnFpwZ/GgU9S19BDZNUxlTgG3SG0F7Z3cHJf3BJ8Hdlece7/yvs
         01xm0h3TUg4mNhR1g1gROkcyOMqRcb0ibeTqI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756806856; x=1757411656;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=7CMvtDgS6WmG/15jgKrgw5kqgEwfnmZDYwRqbk+kWXI=;
        b=XC9uzzZoSQTDpDWo9XGgBh8QG0BG5YLLSWndx87NlDjoXgOkI7/4W/cHkYn68n9Bku
         LQVqVEdMbfU9uU+TLk9VC0aCsWfElyvkZ2r9tpQFPH1BGd7HWXuKp9N+LwNZ3kje39tt
         wb5lIbrpEwQC8iYZI7jS1JHskuvpg5bRyAfnDPgiI5qn93LDh717+4DC7xUt7MEHLZ0V
         tW4qoPjg/j4dJBOhj7ewuGE25Aeo1kzAbh6s2RpV08b7Oo9H1O6GGvPav8/CHlR7FJ4h
         7hh3sKRIB5nEh2N7f0rNPTnYZBXO1Am8H6WD4kR31F2Nt3Ks9cGR1QejwpRR4qReBgrT
         xIgg==
X-Gm-Message-State: AOJu0YzU57fkxiIMIbR6TQTsAhdBwqYOrcp2VW1/O0JF+0KRhXKDcV30
	Gf0Zo8CALB5pQ+ixZI4scDbM6TNKnB4zFAlN5fKwICOeScYiimkyd4QpEOVMaWoN9SNqAbZ4km3
	mhtvXlRHuLU4Ub409fXyxc3/VTSVIvJIkhRbVrXQhiO9lOpeNpVlTxw==
X-Gm-Gg: ASbGncusmggOL6hF7CTDF8K8w4IkM4IMMjsOM4ppTeVGyJlebVlb8rpW8e+0JlOkj5N
	sdgUVGWQm9/taiGFJ9LIvjZ+s8zGOoEHygxAgdABK2pEBJMTrB6RwKgbpoTe4gsFXgnSXsnLYCU
	2QdcQTSNW4doFkryrt/X4YULlUdKdQeIB+igjZJCgjNWDIjB7zDPfOphdvh97tNBlx0938yuI53
	cC2z38=
X-Google-Smtp-Source: AGHT+IFa1hKRBS5SibvWGjUHe7R8/w49d5HIwTn5DR4mWzmmLgfaWYYnH91W/7uDQoiIKefFYHZn7kmmtvMb/CJJUkE=
X-Received: by 2002:a17:902:c40c:b0:246:cf6a:f010 with SMTP id
 d9443c01a7336-2493ee621f9mr155768495ad.13.1756806856074; Tue, 02 Sep 2025
 02:54:16 -0700 (PDT)
MIME-Version: 1.0
References: <20250828220113.1268-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250828220113.1268-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Tue, 2 Sep 2025 10:54:04 +0100
X-Gm-Features: Ac12FXxqiE5R6QmweBSJB0Da8A4zUVhLQbT84XTcGa8XCPVwit_rIdgM-N1dEaM
Message-ID: <CAC_UY8_B9tH8kh+x8Xw0ZqjuFQUvB6EmVrop+GpzkccwCWwQkA@mail.gmail.com>
Subject: Re: [XENVIF PATCH] Skip hash update if frontend is not enabled
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000987f6b063dce7801"

--000000000000987f6b063dce7801
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I don't think that any updated hash details will be resent if they are
changed when Frontend->State !=3D FRONTEND_ENABLED. FrontendEnable will cal=
l
__FrontendUpdateHash before it sets Frontend->State to FRONTEND_ENABLED.

Controller->Connected is used to guard writing hash data to the backend,
but returns STATUS_NOT_SUPPORTED in this case, and this means
Frontend->Hash is not updated and the status is reported back to NDIS.

Owen

On Thu, Aug 28, 2025 at 11:01=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.tech> =
wrote:

> NDIS may set OID_GEN_RECEIVE_SCALE_PARAMETERS during an
> IRP_MN_REMOVE_DEVICE, after the frontend has been torn down. This will
> cause the ensuing control request to hang.
>
> Skip __FrontendUpdateHash if the frontend is not enabled. The skip is
> done here since we still need to update Frontend->Hash in case the
> frontend is enabled again later.
>
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xenvif/frontend.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
> index 90ec2b1..c497f24 100644
> --- a/src/xenvif/frontend.c
> +++ b/src/xenvif/frontend.c
> @@ -1889,6 +1889,9 @@ __FrontendUpdateHash(
>      ULONG                   Flags;
>      NTSTATUS                status;
>
> +    if (Frontend->State !=3D FRONTEND_ENABLED)
> +        goto done;
> +
>      Controller =3D __FrontendGetController(Frontend);
>
>      switch (Hash->Algorithm) {
> --
> 2.51.0.windows.1
>
>
>
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000987f6b063dce7801
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">I don&#39;t think that any updated hash details will be resent if they a=
re changed when Frontend-&gt;State !=3D=C2=A0FRONTEND_ENABLED. FrontendEnab=
le will call __FrontendUpdateHash before it sets Frontend-&gt;State to=C2=
=A0FRONTEND_ENABLED.<br><br>Controller-&gt;Connected is used to guard writi=
ng hash data to the backend, but returns STATUS_NOT_SUPPORTED in this case,=
 and this means Frontend-&gt;Hash is not updated and the status is reported=
 back to NDIS.</div><div class=3D"gmail_default" style=3D"font-family:monos=
pace"><br></div><div class=3D"gmail_default" style=3D"font-family:monospace=
">Owen</div></div><br><div class=3D"gmail_quote gmail_quote_container"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Thu, Aug 28, 2025 at 11:01=E2=80=AFPM =
Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">NDIS may set OID_GEN_RECEIVE_SCALE_PARAMET=
ERS during an<br>
IRP_MN_REMOVE_DEVICE, after the frontend has been torn down. This will<br>
cause the ensuing control request to hang.<br>
<br>
Skip __FrontendUpdateHash if the frontend is not enabled. The skip is<br>
done here since we still need to update Frontend-&gt;Hash in case the<br>
frontend is enabled again later.<br>
<br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xenvif/frontend.c | 3 +++<br>
=C2=A01 file changed, 3 insertions(+)<br>
<br>
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c<br>
index 90ec2b1..c497f24 100644<br>
--- a/src/xenvif/frontend.c<br>
+++ b/src/xenvif/frontend.c<br>
@@ -1889,6 +1889,9 @@ __FrontendUpdateHash(<br>
=C2=A0 =C2=A0 =C2=A0ULONG=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0Flags;<br>
=C2=A0 =C2=A0 =C2=A0NTSTATUS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 status;<br>
<br>
+=C2=A0 =C2=A0 if (Frontend-&gt;State !=3D FRONTEND_ENABLED)<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto done;<br>
+<br>
=C2=A0 =C2=A0 =C2=A0Controller =3D __FrontendGetController(Frontend);<br>
<br>
=C2=A0 =C2=A0 =C2=A0switch (Hash-&gt;Algorithm) {<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000987f6b063dce7801--


From win-pv-devel-bounces@lists.xenproject.org Tue Sep 02 10:49:09 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 02 Sep 2025 10:49:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1106061.1456847 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utOZX-00055h-Om; Tue, 02 Sep 2025 10:49:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1106061.1456847; Tue, 02 Sep 2025 10:49:07 +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 1utOZX-00055a-M3; Tue, 02 Sep 2025 10:49:07 +0000
Received: by outflank-mailman (input) for mailman id 1106061;
 Tue, 02 Sep 2025 10:49:06 +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=m7Xn=3N=bounce.vates.tech=bounce-md_30504962.68b6cb9e.v1-e47c7b59c2a34f14858f8b032a569f1a@srs-se1.protection.inumbo.net>)
 id 1utOZW-00055U-3W
 for win-pv-devel@lists.xenproject.org; Tue, 02 Sep 2025 10:49:06 +0000
Received: from mail180-6.suw31.mandrillapp.com
 (mail180-6.suw31.mandrillapp.com [198.2.180.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 707a3872-87ea-11f0-8dd7-1b34d833f44b;
 Tue, 02 Sep 2025 12:49:03 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-6.suw31.mandrillapp.com (Mailchimp) with ESMTP id 4cGMtQ1bC3z2K26tw
 for <win-pv-devel@lists.xenproject.org>; Tue,  2 Sep 2025 10:49:02 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e47c7b59c2a34f14858f8b032a569f1a; Tue, 02 Sep 2025 10:49:02 +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: 707a3872-87ea-11f0-8dd7-1b34d833f44b
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756810142; x=1757080142;
	bh=+zBsNoAQ00zLG0g+mSy1pW9ADUwWUQmSpCi4Wdl0a00=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:CC:Date:Subject:From;
	b=HWv6DBTog77hN1eMa1bdC6Om4CnXx29a76YbzV0bmwnJQ8/T581D4Jbu6VILzNoVS
	 0dYE9FW1vvqptOUQvSPbyf1dl0/RqZAb+L3LrN11VAmzJRmA5JtO66rqkdcQgKB+vx
	 VmxD0NFa7S48hS0OeY2X83FzRmlQwHIK4ehDldIBHWA+GohuXa1n/yhcZoIIGp6cCI
	 lhjfR3L4qh40YuxjIVR3R42kYKNKoDwhj5tHUZTXrU5ywuAXJKu5dham7r/2QeXXRi
	 lVYuwJxVuRWAsA4d/GVQ/XeKy4Xdr8JQFl/9mXBtkR1GUo5mQ8A7opjQa0Ixt6XVBn
	 /qSfn9wDLSZOA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756810142; x=1757070642; i=ngoc-tu.dinh@vates.tech;
	bh=+zBsNoAQ00zLG0g+mSy1pW9ADUwWUQmSpCi4Wdl0a00=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:CC:Date:Subject:From;
	b=TAdRDxP7nclgmp7EjCJKzEiy//ZWcPAGk5rSCyJlQJcT2MzNIp1PVHFh8gcphKhBa
	 53em+0MwQu26sjyMEPtxZ2b52zoa6G7ePAJaZt4fwq6LuRMmmOf8GTEyVUR1upl/Ed
	 vro8TGGtykEeM8wV0sypvkXJ39mxzdoAP3Pa4LV/s22vrBwOBmMYSvslU+/rVP1prp
	 qeQJVr8dXHPK2N23v4FxBRh7HiSo9GNcOcUlPss86oRjeQUVjgOjF5T+YVEeapull8
	 IkTR5SCZnPEWJ0tsHOA8KZOkMOlFs5EJlimw9TUWbnwfJlxoqofPWiD0gpQ//g0MU6
	 ywa1vbBy49/+Q==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[XENVIF=20PATCH]=20Skip=20hash=20update=20if=20frontend=20is=20not=20enabled?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756810137041
Message-Id: <063db011-b22d-4ee9-804b-74ca22bf946a@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>
Cc: win-pv-devel@lists.xenproject.org
References: <20250828220113.1268-1-ngoc-tu.dinh@vates.tech> <CAC_UY8_B9tH8kh+x8Xw0ZqjuFQUvB6EmVrop+GpzkccwCWwQkA@mail.gmail.com>
In-Reply-To: <CAC_UY8_B9tH8kh+x8Xw0ZqjuFQUvB6EmVrop+GpzkccwCWwQkA@mail.gmail.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.e47c7b59c2a34f14858f8b032a569f1a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250902:md
Date: Tue, 02 Sep 2025 10:49:02 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="_av-WqgwZnr15BYJ-1cvg7nl1A"

--_av-WqgwZnr15BYJ-1cvg7nl1A
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 02/09/2025 11:54, Owen Smith wrote:
> I don't think that any updated hash details will be resent if they are 
> changed when Frontend->State !=3D=C2=A0FRONTEND_ENABLED. FrontendEnable w=
ill 
> call __FrontendUpdateHash before it sets Frontend->State 
> to=C2=A0FRONTEND_ENABLED.
> 
> Controller->Connected is used to guard writing hash data to the backend, 
> but returns STATUS_NOT_SUPPORTED in this case, and this means Frontend- 
>  >Hash is not updated and the status is reported back to NDIS.
> 
> Owen
> 

It doesn't trigger 100% of the time, but I found it easier to repro 
under debugger.

At the moment of hang, Controller->Connected is still true but 
Frontend->State has entered FRONTEND_CONNECTED (see attached log)

> On Thu, Aug 28, 2025 at 11:01=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.tech=
> wrote:
> 
>     NDIS may set OID_GEN_RECEIVE_SCALE_PARAMETERS during an
>     IRP_MN_REMOVE_DEVICE, after the frontend has been torn down. This wil=
l
>     cause the ensuing control request to hang.
> 
>     Skip __FrontendUpdateHash if the frontend is not enabled. The skip is
>     done here since we still need to update Frontend->Hash in case the
>     frontend is enabled again later.
> 
>     Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
>     ---
>      =C2=A0src/xenvif/frontend.c | 3 +++
>      =C2=A01 file changed, 3 insertions(+)
> 
>     diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
>     index 90ec2b1..c497f24 100644
>     --- a/src/xenvif/frontend.c
>     +++ b/src/xenvif/frontend.c
>     @@ -1889,6 +1889,9 @@ __FrontendUpdateHash(
>      =C2=A0 =C2=A0 =C2=A0ULONG=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0Flags;
>      =C2=A0 =C2=A0 =C2=A0NTSTATUS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 status;
> 
>     +=C2=A0 =C2=A0 if (Frontend->State !=3D FRONTEND_ENABLED)
>     +=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto done;
>     +
>      =C2=A0 =C2=A0 =C2=A0Controller =3D __FrontendGetController(Frontend)=
;
> 
>      =C2=A0 =C2=A0 =C2=A0switch (Hash->Algorithm) {
>     -- 
>     2.51.0.windows.1
> 
> 
> 
>     Ngoc Tu Dinh | Vates XCP-ng Developer
> 
>     XCP-ng & Xen Orchestra - Vates solutions
> 
>     web: https://vates.tech <https://vates.tech>
> 


--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


--_av-WqgwZnr15BYJ-1cvg7nl1A
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="kd.log"

eGVudmlmfFZpZkVuYWJsZTogPD09PT0KeGVubmV0fFJlY2VpdmVyRW5hYmxl
OiAwOiA8PT09PT4KeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDM0
MjkgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85MS8wL29ubGluZSkK
eGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDM0MWQgKGRldmljZS92
aWYvMCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDM0MjAgKGRl
dmljZS92aWYvMCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IDM0
MmMgKGRldmljZS92aWYvMC9kaXNjb25uZWN0KQp4ZW5idXN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogMzQyZCAoZGV2aWNlL3ZpZi8wL3NwZWVkKQp4ZW5i
dXN8RmRvU2NhbjogYXdha2UKeGVudmlmfFBkb1JlcXVlc3RFamVjdDogRkZG
RjgwMEMyRThDNDhGMCAoMCkKeGVudmlmfEZkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykKeGVudmlmfEZkb1F1ZXJ5
RGV2aWNlUmVsYXRpb25zOiB3YWl0aW5nIGZvciBzY2FuIHRocmVhZAp4ZW52
aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+CnhlbmJ1c3xGZG9FbnVtZXJhdGU6
ID09PT0+CnhlbmJ1c3xGZG9FbnVtZXJhdGU6IDw9PT09CnhlbnZpZnxfX0Zk
b0VudW1lcmF0ZTogZXhhbWluaW5nIFBETyBGRkZGODAwQzJGQzJDREEwOiBQ
TlAgc3RhdGUgU3RhcnRlZAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IFBETyBG
RkZGODAwQzJGQzJDREEwICgwKSBpcyBub3QgcHJlc2VudCBpbiB4ZW5zdG9y
ZSBsaXN0CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkY4MDBDMkZD
MkNEQTAgUGRvSXNNaXNzaW5nPTAgUGRvSXNFamVjdFJlcXVlc3RlZD0xCnhl
bmJ1c3xGZG9TY2FuOiB3YWl0aW5nLi4uCnhlbnZpZnxfX0Zkb0VudW1lcmF0
ZTogPD09PT0KeGVudmlmfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiAxIFBE
TyhzKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9E
RVZJQ0VfUkVMQVRJT05TKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09
ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKSgwMDAwMDAwMCkKeGVudmlm
fEZkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5OiAwMDAwMDAwMAp4ZW52aWZ8
RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJ
T05TKSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MCkgKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpCnhlbnZpZnxQZG9EaXNw
YXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKGMw
MDAwMGJiKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDc6
UVVFUllfREVWSUNFX1JFTEFUSU9OUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoYzAwMDAwYmIp
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwNzpRVUVSWV9E
RVZJQ0VfUkVMQVRJT05TKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09
ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKShjMDAwMDBiYikKeGVudmlm
fEZkb1NjYW46IHdhaXRpbmcuLi4KeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMCkgKDAxOlFVRVJZX1JFTU9WRV9ERVZJQ0UpCnhlbnZpZnxfX1Bk
b1NldERldmljZVBucFN0YXRlOiBzZXR0aW5nIFBETyBGRkZGODAwQzJGQzJD
REEwOiBQTlAgc3RhdGUgU3RhcnRlZCAtPiBSZW1vdmVQZW5kaW5nCnhlbnZp
ZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDAxOlFVRVJZX1JFTU9WRV9ERVZJ
Q0UpKDAwMDAwMDAwKQp4ZW5uZXR8UmVjZWl2ZXJEaXNhYmxlOiAwOiA8PT09
PT4gKEluZGljYXRlZCA9IDU2IFJldHVybmVkID0gNTYpCnhlbnZpZnxWaWZE
aXNhYmxlOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNl
L3ZpZi8wOiA9PT09PiAnRU5BQkxFRCcgLT4gJ0NPTk5FQ1RFRCcKeGVudmlm
fEZyb250ZW5kRGlzYWJsZTogPT09PT4KeGVudmlmfFRyYW5zbWl0dGVyRGlz
YWJsZTogPT09PT4KeGVuYnVzfERlYnVnVHJpZ2dlcjogPT09PT4KeGVuYnVz
fERlYnVnVHJpZ2dlcjogPD09PT0KeGVudmlmfF9fVHJhbnNtaXR0ZXJSaW5n
RmFrZVJlc3BvbnNlczogZGV2aWNlL3ZpZi8wWzBdOiBmYWtlZCAxOCByZXNw
b25zZXMKeGVudmlmfFRyYW5zbWl0dGVyRGlzYWJsZTogPD09PT0KeGVudmlm
fFJlY2VpdmVyRGlzYWJsZTogPT09PT4KeGVudmlmfFJlY2VpdmVyRGlzYWJs
ZTogPD09PT0KeGVudmlmfE1hY0Rpc2FibGU6ID09PT0+CnhlbnZpZnxNYWNE
aXNhYmxlOiA8PT09PQp4ZW52aWZ8RnJvbnRlbmREaXNhYmxlOiA8PT09PQp4
ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNlL3ZpZi8wIGluIHN0YXRl
ICdDT05ORUNURUQnCnhlbnZpZnxGcm9udGVuZFNldFN0YXRlOiBkZXZpY2Uv
dmlmLzA6IDw9PT09PQp4ZW52aWZ8UmVjZWl2ZXJXYWl0Rm9yUGFja2V0czog
ZGV2aWNlL3ZpZi8wOiA9PT09Pgp4ZW52aWZ8UmVjZWl2ZXJXYWl0Rm9yUGFj
a2V0czogZGV2aWNlL3ZpZi8wOiAoTG9hbmVkID0gNTYgUmV0dXJuZWQgPSA1
NikKeGVudmlmfFJlY2VpdmVyV2FpdEZvclBhY2tldHM6IGRldmljZS92aWYv
MDogPD09PT0KeGVudmlmfF9fVHJhbnNtaXR0ZXJSaW5nQWJvcnRQYWNrZXRz
OiBkZXZpY2UvdmlmLzBbM106IGFib3J0ZWQgMCBwYWNrZXRzCnhlbnZpZnxf
X1RyYW5zbWl0dGVyUmluZ0Fib3J0UGFja2V0czogZGV2aWNlL3ZpZi8wWzJd
OiBhYm9ydGVkIDAgcGFja2V0cwp4ZW52aWZ8X19UcmFuc21pdHRlclJpbmdB
Ym9ydFBhY2tldHM6IGRldmljZS92aWYvMFsxXTogYWJvcnRlZCAwIHBhY2tl
dHMKeGVudmlmfF9fVHJhbnNtaXR0ZXJSaW5nQWJvcnRQYWNrZXRzOiBkZXZp
Y2UvdmlmLzBbMF06IGFib3J0ZWQgMCBwYWNrZXRzCnhlbnZpZnxWaWZEaXNh
YmxlOiB3YWl0aW5nIGZvciBtYWMgdGhyZWFkLi4KeGVudmlmfFZpZkRpc2Fi
bGU6IGRvbmUKeGVudmlmfFZpZkRpc2FibGU6IDw9PT09Cnhlbm5ldHxBZGFw
dGVyQ2xlYXJEaXN0cmlidXRpb246ID09PT0+Cnhlbm5ldHxfX0FkYXB0ZXJD
bGVhckRpc3RyaWJ1dGlvbjogPT09PT4KeGVubmV0fF9fQWRhcHRlckNsZWFy
RGlzdHJpYnV0aW9uOiA8PT09PQp4ZW5uZXR8QWRhcHRlckNsZWFyRGlzdHJp
YnV0aW9uOiA8PT09PQp4ZW52aWZ8TWFjUmVtb3ZlTXVsdGljYXN0QWRkcmVz
czogYXR0ci92aWYvMDogMzM6MzM6MDA6MDA6MDA6MDEKeGVudmlmfE1hY1Jl
bW92ZU11bHRpY2FzdEFkZHJlc3M6IGF0dHIvdmlmLzA6IDMzOjMzOkZGOjAz
OjdFOjJCCnhlbnZpZnxNYWNSZW1vdmVNdWx0aWNhc3RBZGRyZXNzOiBhdHRy
L3ZpZi8wOiAzMzozMzowMDowMTowMDowMwp4ZW52aWZ8TWFjUmVtb3ZlTXVs
dGljYXN0QWRkcmVzczogYXR0ci92aWYvMDogMzM6MzM6MDA6MDA6MDA6RkIK
eGVudmlmfE1hY1JlbW92ZU11bHRpY2FzdEFkZHJlc3M6IGF0dHIvdmlmLzA6
IDMzOjMzOjAwOjAwOjAwOjBDCnhlbm5ldHxEaXNwbGF5T2ZmbG9hZDogQ3Vy
cmVudDoKeGVubmV0fERpc3BsYXlPZmZsb2FkOiBDaGVja3N1bS5JUHY0UmVj
ZWl2ZS5JcENoZWNrc3VtIE9OCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiAzNDI5ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTEvMC9v
bmxpbmUpCnhlbm5ldHxEaXNwbGF5T2ZmbG9hZDogQ2hlY2tzdW0uSVB2NFJl
Y2VpdmUuVGNwQ2hlY2tzdW0gT04KeGVubmV0fERpc3BsYXlPZmZsb2FkOiBD
aGVja3N1bS5JUHY0UmVjZWl2ZS5VZHBDaGVja3N1bSBPTgp4ZW5uZXR8RGlz
cGxheU9mZmxvYWQ6IENoZWNrc3VtLklQdjZSZWNlaXZlLlRjcENoZWNrc3Vt
IE9OCnhlbm5ldHxEaXNwbGF5T2ZmbG9hZDogQ2hlY2tzdW0uSVB2NlJlY2Vp
dmUuVWRwQ2hlY2tzdW0gT04KeGVubmV0fERpc3BsYXlPZmZsb2FkOiBDaGVj
a3N1bS5JUHY0VHJhbnNtaXQuSXBDaGVja3N1bSBPTgp4ZW5uZXR8RGlzcGxh
eU9mZmxvYWQ6IENoZWNrc3VtLklQdjRUcmFuc21pdC5UY3BDaGVja3N1bSBP
Tgp4ZW5uZXR8RGlzcGxheU9mZmxvYWQ6IENoZWNrc3VtLklQdjRUcmFuc21p
dC5VZHBDaGVja3N1bSBPTgp4ZW5uZXR8RGlzcGxheU9mZmxvYWQ6IENoZWNr
c3VtLklQdjZUcmFuc21pdC5UY3BDaGVja3N1bSBPTgp4ZW5uZXR8RGlzcGxh
eU9mZmxvYWQ6IENoZWNrc3VtLklQdjZUcmFuc21pdC5VZHBDaGVja3N1bSBP
Tgp4ZW5uZXR8RGlzcGxheU9mZmxvYWQ6IExzb1YyLklQdjQuTWF4T2ZmTG9h
ZFNpemUgPSA2NTIwMQp4ZW5uZXR8RGlzcGxheU9mZmxvYWQ6IExzb1YyLklQ
djYuTWF4T2ZmTG9hZFNpemUgPSA2NTIwMQp4ZW52aWZ8RnJvbnRlbmRTZXRI
YXNoQWxnb3JpdGhtOiBkZXZpY2UvdmlmLzA6IE5PTkUKeGVuYnVzfEV2dGNo
bldhaXQ6IFRJTUVEIE9VVDogQ291bnQgPSAwMDAwMDAyYSBDaGFubmVsLT5D
b3VudCA9IDAwMDAwMDI5CkJyZWFrcG9pbnQgMCBoaXQKeGVudmlmIUNvbnRy
b2xsZXJHZXRSZXNwb25zZSsweGRlOgpmZmZmZjgwN2A4NjQxYzU0ZSA0ODhi
OGMyNDgwMDAwMDAwIG1vdiAgICAgcmN4LHF3b3JkIHB0ciBbcnNwKzgwaF0K
MDoga2Q+IGtQCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAg
ICAgICAgICBDYWxsIFNpdGUKMDAgZmZmZjkwODZgYjY4MzZlYzAgZmZmZmY4
MDdgODY0MWNiY2UgICAgIHhlbnZpZiFDb250cm9sbGVyR2V0UmVzcG9uc2Uo
CgkJCXN0cnVjdCBfWEVOVklGX0NPTlRST0xMRVIgKiBDb250cm9sbGVyID0g
MHhmZmZmODAwY2AzMTQ0ZWRjMCwgCgkJCXVuc2lnbmVkIGxvbmcgKiBEYXRh
ID0gMHgwMDAwMDAwMGAwMDAwMDAwMCkrMHhkZSBbRTpcY29kZVx3aW4tcHZk
cml2ZXJzXHhlbnZpZlxzcmNceGVudmlmXGNvbnRyb2xsZXIuYyBAIDI4MV0g
CjAxIGZmZmY5MDg2YGI2ODM2ZjQwIGZmZmZmODA3YDg2M2YxYTc2ICAgICB4
ZW52aWYhQ29udHJvbGxlclNldEhhc2hBbGdvcml0aG0oCgkJCXN0cnVjdCBf
WEVOVklGX0NPTlRST0xMRVIgKiBDb250cm9sbGVyID0gMHhmZmZmODAwY2Az
MTQ0ZWRjMCwgCgkJCXVuc2lnbmVkIGxvbmcgQWxnb3JpdGhtID0gMCkrMHg1
ZSBbRTpcY29kZVx3aW4tcHZkcml2ZXJzXHhlbnZpZlxzcmNceGVudmlmXGNv
bnRyb2xsZXIuYyBAIDc4Nl0gCjAyIGZmZmY5MDg2YGI2ODM2ZjkwIGZmZmZm
ODA3YDg2M2VmNGU0ICAgICB4ZW52aWYhX19Gcm9udGVuZFVwZGF0ZUhhc2go
CgkJCXN0cnVjdCBfWEVOVklGX0ZST05URU5EICogRnJvbnRlbmQgPSAweGZm
ZmY4MDBjYDJmY2JhYWQwLCAKCQkJc3RydWN0IF9YRU5WSUZfRlJPTlRFTkRf
SEFTSCAqIEhhc2ggPSAweGZmZmY5MDg2YGI2ODM3MDQwKSsweGI2IFtFOlxj
b2RlXHdpbi1wdmRyaXZlcnNceGVudmlmXHNyY1x4ZW52aWZcZnJvbnRlbmQu
YyBAIDE5MDddIAowMyBmZmZmOTA4NmBiNjgzNmZmMCBmZmZmZjgwN2A4NjQw
MGU0OCAgICAgeGVudmlmIUZyb250ZW5kU2V0SGFzaEFsZ29yaXRobSgKCQkJ
c3RydWN0IF9YRU5WSUZfRlJPTlRFTkQgKiBGcm9udGVuZCA9IDB4ZmZmZjgw
MGNgMmZjYmFhZDAsIAoJCQlfWEVOVklGX1BBQ0tFVF9IQVNIX0FMR09SSVRI
TSBBbGdvcml0aG0gPSBYRU5WSUZfUEFDS0VUX0hBU0hfQUxHT1JJVEhNX05P
TkUgKDBuMCkpKzB4MTg0IFtFOlxjb2RlXHdpbi1wdmRyaXZlcnNceGVudmlm
XHNyY1x4ZW52aWZcZnJvbnRlbmQuYyBAIDE5OTddIAowNCBmZmZmOTA4NmBi
NjgzNzJiMCBmZmZmZjgwN2A4NjQxZTUyOSAgICAgeGVudmlmIVJlY2VpdmVy
U2V0SGFzaEFsZ29yaXRobSgKCQkJc3RydWN0IF9YRU5WSUZfUkVDRUlWRVIg
KiBSZWNlaXZlciA9IDB4ZmZmZjgwMGNgMmZjYjhkYTAsIAoJCQlfWEVOVklG
X1BBQ0tFVF9IQVNIX0FMR09SSVRITSBBbGdvcml0aG0gPSBYRU5WSUZfUEFD
S0VUX0hBU0hfQUxHT1JJVEhNX05PTkUgKDBuMCkpKzB4MjggW0U6XGNvZGVc
d2luLXB2ZHJpdmVyc1x4ZW52aWZcc3JjXHhlbnZpZlxyZWNlaXZlci5jIEAg
Mzg1OV0gCjA1IGZmZmY5MDg2YGI2ODM3MzAwIGZmZmZmODA3YDlhNzYxMjBi
ICAgICB4ZW52aWYhVmlmUmVjZWl2ZXJTZXRIYXNoQWxnb3JpdGhtKAoJCQlz
dHJ1Y3QgX0lOVEVSRkFDRSAqIEludGVyZmFjZSA9IDB4ZmZmZjgwMGNgMzE0
ZmFhNTgsIAoJCQlfWEVOVklGX1BBQ0tFVF9IQVNIX0FMR09SSVRITSBBbGdv
cml0aG0gPSBYRU5WSUZfUEFDS0VUX0hBU0hfQUxHT1JJVEhNX05PTkUgKDBu
MCkpKzB4NDkgW0U6XGNvZGVcd2luLXB2ZHJpdmVyc1x4ZW52aWZcc3JjXHhl
bnZpZlx2aWYuYyBAIDY5MV0gCjA2IGZmZmY5MDg2YGI2ODM3MzQwIGZmZmZm
ODA3YDlhNzYyZGRjICAgICB4ZW5uZXQhQWRhcHRlckRpc2FibGVSU1NIYXNo
KAoJCQlzdHJ1Y3QgX1hFTk5FVF9BREFQVEVSICogQWRhcHRlciA9IDB4ZmZm
ZjgwMGNgMzE0ZmFhNTApKzB4NGIgW0U6XGNvZGVcd2luLXB2ZHJpdmVyc1x4
ZW5uZXRcc3JjXHhlbm5ldFxhZGFwdGVyLmMgQCA3MDhdIAowNyBmZmZmOTA4
NmBiNjgzNzM4MCBmZmZmZjgwN2A5YTc2NmViNyAgICAgeGVubmV0IUFkYXB0
ZXJHZXRSZWNlaXZlU2NhbGVQYXJhbWV0ZXJzKAoJCQlzdHJ1Y3QgX1hFTk5F
VF9BREFQVEVSICogQWRhcHRlciA9IDB4ZmZmZjgwMGNgMzE0ZmFhNTAsIAoJ
CQlzdHJ1Y3QgX05ESVNfUkVDRUlWRV9TQ0FMRV9QQVJBTUVURVJTICogUGFy
YW1ldGVycyA9IDB4ZmZmZjgwMGNgMzA2ZWQ3NTQsIAoJCQl1bnNpZ25lZCBs
b25nICogQnl0ZXNSZWFkID0gMHhmZmZmOTA4NmBiNjgzNzQ2NCkrMHg1MWMg
W0U6XGNvZGVcd2luLXB2ZHJpdmVyc1x4ZW5uZXRcc3JjXHhlbm5ldFxhZGFw
dGVyLmMgQCA5NjddIAowOCBmZmZmOTA4NmBiNjgzNzQzMCBmZmZmZjgwN2A5
YTc2YTRjYSAgICAgeGVubmV0IUFkYXB0ZXJTZXRJbmZvcm1hdGlvbigKCQkJ
c3RydWN0IF9YRU5ORVRfQURBUFRFUiAqIEFkYXB0ZXIgPSAweGZmZmY4MDBj
YDMxNGZhYTUwLCAKCQkJc3RydWN0IF9ORElTX09JRF9SRVFVRVNUICogUmVx
dWVzdCA9IDB4ZmZmZjgwMGNgMmUwZDgxOTApKzB4MzY3IFtFOlxjb2RlXHdp
bi1wdmRyaXZlcnNceGVubmV0XHNyY1x4ZW5uZXRcYWRhcHRlci5jIEAgMjE2
OV0gCjA5IGZmZmY5MDg2YGI2ODM3NDkwIGZmZmZmODA0YDA3ZGJkZjY0ICAg
ICB4ZW5uZXQhTWluaXBvcnRPaWRSZXF1ZXN0KAoJCQl2b2lkICogTWluaXBv
cnRBZGFwdGVyQ29udGV4dCA9IDB4ZmZmZjgwMGNgMzE0ZmFhNTAsIAoJCQlz
dHJ1Y3QgX05ESVNfT0lEX1JFUVVFU1QgKiBPaWRSZXF1ZXN0ID0gMHhmZmZm
ODAwY2AyZTBkODE5MCkrMHg0YSBbRTpcY29kZVx3aW4tcHZkcml2ZXJzXHhl
bm5ldFxzcmNceGVubmV0XG1pbmlwb3J0LmMgQCAxNjFdIAowYSBmZmZmOTA4
NmBiNjgzNzRkMCBmZmZmZjgwNGAwODU4N2NhNyAgICAgVmVyaWZpZXJFeHQh
WGR2TmRpc01pbmlwb3J0T2lkUmVxdWVzdEhhbmRsZXJfd3JhcHBlcisweDRj
NAowYiBmZmZmOTA4NmBiNjgzNzU0MCBmZmZmZjgwNGAwODQ4NDU2MyAgICAg
TkRJUyFuZGlzTUludm9rZU9pZFJlcXVlc3QrMHgxOTU5NwowYyBmZmZmOTA4
NmBiNjgzNzVlMCBmZmZmZjgwNGAwODQ4MWRkNyAgICAgTkRJUyFuZGlzTURv
T2lkUmVxdWVzdCsweDM0MwowZCBmZmZmOTA4NmBiNjgzNzZkMCBmZmZmZjgw
NGAwODQ3ZWY3YiAgICAgTkRJUyFuZGlzUXVldWVPaWRSZXF1ZXN0KzB4NGI3
CjBlIGZmZmY5MDg2YGI2ODM3ODgwIGZmZmZmODA0YDA5MmIyNWVlICAgICBO
RElTIU5kaXNGT2lkUmVxdWVzdCsweDEwYgowZiBmZmZmOTA4NmBiNjgzNzk4
MCBmZmZmZjgwNGAwODQ3ZGMxZiAgICAgd2ZwbHdmcyFMd2ZMb3dlck9pZFJl
cXVlc3QrMHg4ZQoxMCBmZmZmOTA4NmBiNjgzNzliMCBmZmZmZjgwNGAwNmIz
N2Y3OCAgICAgTkRJUyFuZGlzRkRvT2lkUmVxdWVzdEludGVybmFsKzB4M2Jm
CjExIGZmZmY5MDg2YGI2ODM3YWMwIGZmZmZmODA0YDA2YjM3ZWVkICAgICBu
dCFLZUV4cGFuZEtlcm5lbFN0YWNrQW5kQ2FsbG91dEludGVybmFsKzB4NzgK
MTIgZmZmZjkwODZgYjY4MzdiMzAgZmZmZmY4MDRgMDg0ODFiYTAgICAgIG50
IUtlRXhwYW5kS2VybmVsU3RhY2tBbmRDYWxsb3V0RXgrMHgxZAoxMyBmZmZm
OTA4NmBiNjgzN2I3MCBmZmZmZjgwNGAwODQ3ZWY3YiAgICAgTkRJUyFuZGlz
UXVldWVPaWRSZXF1ZXN0KzB4MjgwCjE0IGZmZmY5MDg2YGI2ODM3ZDIwIGZm
ZmZmODA3YDg1ZTEyOTQzICAgICBORElTIU5kaXNGT2lkUmVxdWVzdCsweDEw
YgoxNSBmZmZmOTA4NmBiNjgzN2UyMCBmZmZmZjgwNGAwODQ3ZGMxZiAgICAg
cGFjZXIhUGNGaWx0ZXJSZXF1ZXN0KzB4NjMKMTYgZmZmZjkwODZgYjY4Mzdl
NTAgZmZmZmY4MDRgMDZjNDgxN2UgICAgIE5ESVMhbmRpc0ZEb09pZFJlcXVl
c3RJbnRlcm5hbCsweDNiZgoxNyBmZmZmOTA4NmBiNjgzN2Y2MCBmZmZmZjgw
NGAwNmM0ODEzYyAgICAgbnQhS3hTd2l0Y2hLZXJuZWxTdGFja0NhbGxvdXQr
MHgyZQoxOCBmZmZmOTA4NmBiMzk3NjQ3MCBmZmZmZjgwNGAwNmIzODJlYiAg
ICAgbnQhS2lTd2l0Y2hLZXJuZWxTdGFja0NvbnRpbnVlCjE5IGZmZmY5MDg2
YGIzOTc2NDkwIGZmZmZmODA0YDA2YjM4MTFiICAgICBudCFLaUV4cGFuZEtl
cm5lbFN0YWNrQW5kQ2FsbG91dE9uU3RhY2tTZWdtZW50KzB4MTliCjFhIGZm
ZmY5MDg2YGIzOTc2NTIwIGZmZmZmODA0YDA2YjM3ZjMzICAgICBudCFLaUV4
cGFuZEtlcm5lbFN0YWNrQW5kQ2FsbG91dFN3aXRjaFN0YWNrKzB4MTNiCjFi
IGZmZmY5MDg2YGIzOTc2NTkwIGZmZmZmODA0YDA2YjM3ZWVkICAgICBudCFL
ZUV4cGFuZEtlcm5lbFN0YWNrQW5kQ2FsbG91dEludGVybmFsKzB4MzMKMWMg
ZmZmZjkwODZgYjM5NzY2MDAgZmZmZmY4MDRgMDg0ODFiYTAgICAgIG50IUtl
RXhwYW5kS2VybmVsU3RhY2tBbmRDYWxsb3V0RXgrMHgxZAoxZCBmZmZmOTA4
NmBiMzk3NjY0MCBmZmZmZjgwNGAwODQ3ZDc5NyAgICAgTkRJUyFuZGlzUXVl
dWVPaWRSZXF1ZXN0KzB4MjgwCjFlIGZmZmY5MDg2YGIzOTc2N2YwIGZmZmZm
ODA0YDA4NTA3MjIxICAgICBORElTIW5kaXNRdWVyeVNldE1pbmlwb3J0RXgr
MHgxYTcKMWYgZmZmZjkwODZgYjM5NzY4ODAgZmZmZmY4MDRgMDg0YmZmOTYg
ICAgIE5ESVMhbmRpc01Eb1Byb3RvY29sUmVxdWVzdCsweGU1CjIwIGZmZmY5
MDg2YGIzOTc2YTEwIGZmZmZmODA0YDA4NWE4MTE5ICAgICBORElTIW5kaXND
bGVhblVwRm9yUHJvdG9jb2wrMHgzNTUwNgoyMSBmZmZmOTA4NmBiMzk3NmFi
MCBmZmZmZjgwNGAwODQ4YTc1OCAgICAgTkRJUyFOZGlzQ2xvc2VBZGFwdGVy
KzB4MTU5CjIyIGZmZmY5MDg2YGIzOTc2YjIwIGZmZmZmODA0YDA4ZmE3Nzc4
ICAgICBORElTIU5kaXNDbG9zZUFkYXB0ZXJFeCsweDY4CjIzIGZmZmY5MDg2
YGIzOTc2YjcwIGZmZmZmODA0YDA4NTcxZGU2ICAgICB0Y3BpcCFGbFVuYmlu
ZEFkYXB0ZXIrMHgxNDgKMjQgZmZmZjkwODZgYjM5NzZjZjAgZmZmZmY4MDRg
MDg1YTdlZTAgICAgIE5ESVMhbmRpc0ludm9rZVVuYmluZEFkYXB0ZXIrMHg3
MgoyNSBmZmZmOTA4NmBiMzk3NmQ0MCBmZmZmZjgwNGAwODU3MWQwMyAgICAg
TkRJUyFuZGlzVW5iaW5kUHJvdG9jb2xPcGVuKzB4MWY4CjI2IGZmZmY5MDg2
YGIzOTc2ZWEwIGZmZmZmODA0YDA4NTc0ZTdlICAgICBORElTIW5kaXNVbmJp
bmRFYWNoUHJvdG9jb2xPcGVuT25NaW5pcG9ydCsweGNiCjI3IGZmZmY5MDg2
YGIzOTc2ZWYwIGZmZmZmODA0YDA4NTc0NTdjICAgICBORElTIU5kaXM6OkJp
bmRFbmdpbmU6Okl0ZXJhdGUrMHg2MzIKMjggZmZmZjkwODZgYjM5NzcwNzAg
ZmZmZmY4MDRgMDg1NzhlY2EgICAgIE5ESVMhTmRpczo6QmluZEVuZ2luZTo6
VXBkYXRlQmluZGluZ3MrMHg5OAoyOSBmZmZmOTA4NmBiMzk3NzBjMCBmZmZm
ZjgwNGAwODU3OGRjNCAgICAgTkRJUyFOZGlzOjpCaW5kRW5naW5lOjpEaXNw
YXRjaFBlbmRpbmdXb3JrKzB4NzYKMmEgZmZmZjkwODZgYjM5NzcwZjAgZmZm
ZmY4MDRgMDg1NzhkMWEgICAgIE5ESVMhTmRpczo6QmluZEVuZ2luZTo6QXBw
bHlCaW5kQ2hhbmdlcysweDU0CjJiIGZmZmY5MDg2YGIzOTc3MTQwIGZmZmZm
ODA0YDA4NWIzNTllICAgICBORElTIW5kaXNNU2V0TWluaXBvcnRSZWFkeUZv
ckJpbmRpbmcrMHg4YQoyYyBmZmZmOTA4NmBiMzk3NzE5MCBmZmZmZjgwNGAw
ODRlYzI0NyAgICAgTkRJUyFuZGlzUG5QUmVtb3ZlRGV2aWNlKzB4MzFlCjJk
IGZmZmY5MDg2YGIzOTc3M2QwIGZmZmZmODA0YDA4NTk2YWVlICAgICBORElT
IW5kaXNQblBSZW1vdmVEZXZpY2VFeCsweDEzZgoyZSBmZmZmOTA4NmBiMzk3
NzQyMCBmZmZmZjgwNGAwODRiNWI2YyAgICAgTkRJUyFuZGlzUG5QSXJwUmVt
b3ZlRGV2aWNlKzB4MTBhCjJmIGZmZmY5MDg2YGIzOTc3NDkwIGZmZmZmODA3
YDlhNzY5Yzc2ICAgICBORElTIW5kaXNQblBEaXNwYXRjaCsweDE2OWVjCjMw
IGZmZmY5MDg2YGIzOTc3NTAwIGZmZmZmODA0YDA2YmM1MTU3ICAgICB4ZW5u
ZXQhRGlzcGF0Y2hQbnAoCgkJCXN0cnVjdCBfREVWSUNFX09CSkVDVCAqIERl
dmljZU9iamVjdCA9IDB4ZmZmZjgwMGNgMzA4NWQwNTAgRGV2aWNlIGZvciAi
XERyaXZlclx4ZW5uZXQiLCAKCQkJc3RydWN0IF9JUlAgKiBJcnAgPSAweGZm
ZmY4MDBjYDMxODEyZTEwKSsweDc2IFtFOlxjb2RlXHdpbi1wdmRyaXZlcnNc
eGVubmV0XHNyY1x4ZW5uZXRcZHJpdmVyLmMgQCAxMzhdIAozMSBmZmZmOTA4
NmBiMzk3NzU1MCBmZmZmZjgwNGAwNzI2YjQ2OCAgICAgbnQhSW9wZkNhbGxE
cml2ZXIrMHg1MwozMiBmZmZmOTA4NmBiMzk3NzU5MCBmZmZmZjgwNGAwNmM2
NzdmOSAgICAgbnQhSW92Q2FsbERyaXZlcisweDI2NAozMyBmZmZmOTA4NmBi
Mzk3NzVkMCBmZmZmZjgwNGAwNmYwMTc1OCAgICAgbnQhSW9mQ2FsbERyaXZl
cisweDIxODJiOQozNCBmZmZmOTA4NmBiMzk3NzYxMCBmZmZmZjgwNGAwNmZl
YjQ4NSAgICAgbnQhSW9wU3luY2hyb25vdXNDYWxsKzB4ZjgKMzUgZmZmZjkw
ODZgYjM5Nzc2ODAgZmZmZmY4MDRgMDZiYTBiYjEgICAgIG50IUlvcFJlbW92
ZURldmljZSsweDEwNQozNiBmZmZmOTA4NmBiMzk3NzczMCBmZmZmZjgwNGAw
NmZlZDk1MiAgICAgbnQhUG5wUmVtb3ZlTG9ja2VkRGV2aWNlTm9kZSsweDFh
OQozNyBmZmZmOTA4NmBiMzk3Nzc5MCBmZmZmZjgwNGAwNmZlZDZiNCAgICAg
bnQhUG5wRGVsZXRlTG9ja2VkRGV2aWNlTm9kZSsweDUyCjM4IGZmZmY5MDg2
YGIzOTc3N2QwIGZmZmZmODA0YDA2ZmVjODA5ICAgICBudCFQbnBEZWxldGVM
b2NrZWREZXZpY2VOb2RlcysweGM4CjM5IGZmZmY5MDg2YGIzOTc3ODUwIGZm
ZmZmODA0YDA2ZmVlM2RkICAgICBudCFQbnBQcm9jZXNzUXVlcnlSZW1vdmVB
bmRFamVjdCsweDM4OQozYSBmZmZmOTA4NmBiMzk3NzkzMCBmZmZmZjgwNGAw
NmYwYjg2NiAgICAgbnQhUG5wUHJvY2Vzc1RhcmdldERldmljZUV2ZW50KzB4
MTA5CjNiIGZmZmY5MDg2YGIzOTc3OTYwIGZmZmZmODA0YDA2YWFjZGIxICAg
ICBudCFQbnBEZXZpY2VFdmVudFdvcmtlcisweDJkNgozYyBmZmZmOTA4NmBi
Mzk3NzllMCBmZmZmZjgwNGAwNmFjYTNhNSAgICAgbnQhRXhwV29ya2VyVGhy
ZWFkKzB4MTYxCjNkIGZmZmY5MDg2YGIzOTc3YmYwIGZmZmZmODA0YDA2YzQ4
NTg4ICAgICBudCFQc3BTeXN0ZW1UaHJlYWRTdGFydHVwKzB4NTUKM2UgZmZm
ZjkwODZgYjM5NzdjNDAgMDAwMDAwMDBgMDAwMDAwMDAgICAgIG50IUtpU3Rh
cnRTeXN0ZW1UaHJlYWQrMHgyOAowOiBrZD4gZHggLWlkIDAsMCxmZmZmODAw
YzJiZDMyMDgwIC1yMSAoKHhlbnZpZiFfWEVOVklGX0NPTlRST0xMRVIgKikw
eGZmZmY4MDBjMzE0NGVkYzApCigoeGVudmlmIV9YRU5WSUZfQ09OVFJPTExF
UiAqKTB4ZmZmZjgwMGMzMTQ0ZWRjMCkgICAgICAgICAgICAgICAgIDogMHhm
ZmZmODAwYzMxNDRlZGMwIFtUeXBlOiBfWEVOVklGX0NPTlRST0xMRVIgKl0K
ICAgIFsrMHgwMDBdIEZyb250ZW5kICAgICAgICAgOiAweGZmZmY4MDBjMmZj
YmFhZDAgW1R5cGU6IF9YRU5WSUZfRlJPTlRFTkQgKl0KICAgIFsrMHgwMDhd
IExvY2sgICAgICAgICAgICAgOiAweDEgW1R5cGU6IHVuc2lnbmVkIF9faW50
NjRdCiAgICBbKzB4MDEwXSBHbnR0YWJDYWNoZSAgICAgIDogMHhmZmZmODAw
YzMxNGU4ZjQwIFtUeXBlOiBfWEVOQlVTX0dOVFRBQl9DQUNIRSAqXQogICAg
WysweDAxOF0gTWRsICAgICAgICAgICAgICA6IDB4ZmZmZjgwMGMzMDhkYzRk
MCBbVHlwZTogX01ETCAqXQogICAgWysweDAyMF0gRnJvbnQgICAgICAgICAg
ICBbVHlwZTogeGVuX25ldGlmX2N0cmxfZnJvbnRfcmluZ10KICAgIFsrMHgw
MzhdIFNoYXJlZCAgICAgICAgICAgOiAweGZmZmY5ZjAxZjZlN2UwMDAgW1R5
cGU6IHhlbl9uZXRpZl9jdHJsX3NyaW5nICpdCiAgICBbKzB4MDQwXSBFbnRy
eSAgICAgICAgICAgIDogMHhmZmZmODAwYzMwZGU1MDMwIFtUeXBlOiBfWEVO
QlVTX0dOVFRBQl9FTlRSWSAqXQogICAgWysweDA0OF0gQ2hhbm5lbCAgICAg
ICAgICA6IDB4ZmZmZjgwMGMzMTRmMmY4MCBbVHlwZTogX1hFTkJVU19FVlRD
SE5fQ0hBTk5FTCAqXQogICAgWysweDA1MF0gRXZlbnRzICAgICAgICAgICA6
IDB4MjkgW1R5cGU6IHVuc2lnbmVkIGxvbmddCiAgICBbKzB4MDU0XSBDb25u
ZWN0ZWQgICAgICAgIDogMHgxIFtUeXBlOiB1bnNpZ25lZCBjaGFyXQogICAg
WysweDA1Nl0gUmVxdWVzdElkICAgICAgICA6IDB4YmQ0OCBbVHlwZTogdW5z
aWduZWQgc2hvcnRdCiAgICBbKzB4MDU4XSBSZXF1ZXN0ICAgICAgICAgIFtU
eXBlOiB4ZW5fbmV0aWZfY3RybF9yZXF1ZXN0XQogICAgWysweDA2OF0gUmVz
cG9uc2UgICAgICAgICBbVHlwZTogeGVuX25ldGlmX2N0cmxfcmVzcG9uc2Vd
CiAgICBbKzB4MDc4XSBHbnR0YWJJbnRlcmZhY2UgIFtUeXBlOiBfWEVOQlVT
X0dOVFRBQl9JTlRFUkZBQ0VfVjRdCiAgICBbKzB4MGU4XSBFdnRjaG5JbnRl
cmZhY2UgIFtUeXBlOiBfWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfVjldCiAg
ICBbKzB4MTYwXSBTdG9yZUludGVyZmFjZSAgIFtUeXBlOiBfWEVOQlVTX1NU
T1JFX0lOVEVSRkFDRV9WMl0KICAgIFsrMHgxZThdIERlYnVnSW50ZXJmYWNl
ICAgW1R5cGU6IF9YRU5CVVNfREVCVUdfSU5URVJGQUNFX1YxXQogICAgWysw
eDIzOF0gRGVidWdDYWxsYmFjayAgICA6IDB4ZmZmZjgwMGMzMTRmNmZiMCBb
VHlwZTogX1hFTkJVU19ERUJVR19DQUxMQkFDSyAqXQowOiBrZD4gZHggLWlk
IDAsMCxmZmZmODAwYzJiZDMyMDgwIC1yMSAoKHhlbnZpZiFfWEVOVklGX0ZS
T05URU5EICopMHhmZmZmODAwYzJmY2JhYWQwKQooKHhlbnZpZiFfWEVOVklG
X0ZST05URU5EICopMHhmZmZmODAwYzJmY2JhYWQwKSAgICAgICAgICAgICAg
ICAgOiAweGZmZmY4MDBjMmZjYmFhZDAgW1R5cGU6IF9YRU5WSUZfRlJPTlRF
TkQgKl0KICAgIFsrMHgwMDBdIFBkbyAgICAgICAgICAgICAgOiAweGZmZmY4
MDBjMmZjMmNkYTAgW1R5cGU6IF9YRU5WSUZfUERPICpdCiAgICBbKzB4MDA4
XSBQYXRoICAgICAgICAgICAgIDogMHhmZmZmODAwYzJmY2IyZmYwIDogImRl
dmljZS92aWYvMCIgW1R5cGU6IGNoYXIgKl0KICAgIFsrMHgwMTBdIFByZWZp
eCAgICAgICAgICAgOiAweGZmZmY4MDBjMmZkYTRmZjAgOiAiYXR0ci92aWYv
MCIgW1R5cGU6IGNoYXIgKl0KICAgIFsrMHgwMThdIFN0YXRlICAgICAgICAg
ICAgOiBGUk9OVEVORF9DT05ORUNURUQgKDMpIFtUeXBlOiBfWEVOVklGX0ZS
T05URU5EX1NUQVRFXQogICAgWysweDAxY10gT25saW5lICAgICAgICAgICA6
IDB4MSBbVHlwZTogdW5zaWduZWQgY2hhcl0KICAgIFsrMHgwMjBdIExvY2sg
ICAgICAgICAgICAgOiAweDEgW1R5cGU6IHVuc2lnbmVkIF9faW50NjRdCiAg
ICBbKzB4MDI4XSBFamVjdFRocmVhZCAgICAgIDogMHhmZmZmODAwYzMxNDUw
ZmMwIFtUeXBlOiBfWEVOVklGX1RIUkVBRCAqXQogICAgWysweDAzMF0gRWpl
Y3RFdmVudCAgICAgICBbVHlwZTogX0tFVkVOVF0KICAgIFsrMHgwNDhdIEJh
Y2tlbmRQYXRoICAgICAgOiAweGZmZmY4MDBjMmZjNmVmZDAgOiAiL2xvY2Fs
L2RvbWFpbi8wL2JhY2tlbmQvdmlmLzkxLzAiIFtUeXBlOiBjaGFyICpdCiAg
ICBbKzB4MDUwXSBCYWNrZW5kRG9tYWluICAgIDogMHgwIFtUeXBlOiB1bnNp
Z25lZCBzaG9ydF0KICAgIFsrMHgwNTRdIE1heFF1ZXVlcyAgICAgICAgOiAw
eDQgW1R5cGU6IHVuc2lnbmVkIGxvbmddCiAgICBbKzB4MDU4XSBOdW1RdWV1
ZXMgICAgICAgIDogMHg0IFtUeXBlOiB1bnNpZ25lZCBsb25nXQogICAgWysw
eDA1Y10gU3BsaXQgICAgICAgICAgICA6IDB4MSBbVHlwZTogdW5zaWduZWQg
Y2hhcl0KICAgIFsrMHgwNjBdIERpc2FibGVUb2VwbGl0eiAgOiAweDAgW1R5
cGU6IHVuc2lnbmVkIGxvbmddCiAgICBbKzB4MDY4XSBNYWMgICAgICAgICAg
ICAgIDogMHhmZmZmODAwYzJmZGEyZWIwIFtUeXBlOiBfWEVOVklGX01BQyAq
XQogICAgWysweDA3MF0gUmVjZWl2ZXIgICAgICAgICA6IDB4ZmZmZjgwMGMy
ZmNiOGRhMCBbVHlwZTogX1hFTlZJRl9SRUNFSVZFUiAqXQogICAgWysweDA3
OF0gVHJhbnNtaXR0ZXIgICAgICA6IDB4ZmZmZjgwMGMyZmRkY2Q1MCBbVHlw
ZTogX1hFTlZJRl9UUkFOU01JVFRFUiAqXQogICAgWysweDA4MF0gQ29udHJv
bGxlciAgICAgICA6IDB4ZmZmZjgwMGMzMTQ0ZWRjMCBbVHlwZTogX1hFTlZJ
Rl9DT05UUk9MTEVSICpdCiAgICBbKzB4MDg4XSBEZWJ1Z0ludGVyZmFjZSAg
IFtUeXBlOiBfWEVOQlVTX0RFQlVHX0lOVEVSRkFDRV9WMV0KICAgIFsrMHgw
ZDhdIFN1c3BlbmRJbnRlcmZhY2UgW1R5cGU6IF9YRU5CVVNfU1VTUEVORF9J
TlRFUkZBQ0VfVjFdCiAgICBbKzB4MTI4XSBTdG9yZUludGVyZmFjZSAgIFtU
eXBlOiBfWEVOQlVTX1NUT1JFX0lOVEVSRkFDRV9WMl0KICAgIFsrMHgxYjBd
IFN1c3BlbmRDYWxsYmFja0Vhcmx5IDogMHhmZmZmODAwYzMxNDU2ZmUwIFtU
eXBlOiBfWEVOQlVTX1NVU1BFTkRfQ0FMTEJBQ0sgKl0KICAgIFsrMHgxYjhd
IFN1c3BlbmRDYWxsYmFja0xhdGUgOiAweGZmZmY4MDBjMzE0NThmZTAgW1R5
cGU6IF9YRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAqXQogICAgWysweDFjMF0g
RGVidWdDYWxsYmFjayAgICA6IDB4ZmZmZjgwMGMzMTQ2MGZiMCBbVHlwZTog
X1hFTkJVU19ERUJVR19DQUxMQkFDSyAqXQogICAgWysweDFjOF0gV2F0Y2gg
ICAgICAgICAgICA6IDB4ZmZmZjgwMGMzMTQ1Y2ZjMCBbVHlwZTogX1hFTkJV
U19TVE9SRV9XQVRDSCAqXQogICAgWysweDFkMF0gU3RhdGlzdGljcyAgICAg
ICA6IDB4ZmZmZjgwMGMzMTQ1NDljMCBbVHlwZTogX1hFTlZJRl9GUk9OVEVO
RF9TVEFUSVNUSUNTICpdCiAgICBbKzB4MWQ4XSBTdGF0aXN0aWNzQ291bnQg
IDogMHg0IFtUeXBlOiB1bnNpZ25lZCBsb25nXQogICAgWysweDFlMF0gTWli
VGhyZWFkICAgICAgICA6IDB4ZmZmZjgwMGMzMTQ1MmZjMCBbVHlwZTogX1hF
TlZJRl9USFJFQUQgKl0KICAgIFsrMHgxZThdIEFsaWFzICAgICAgICAgICAg
OiAiRXRoZXJuZXQgMyIgW1R5cGU6IGNoYXIgWzI1N11dCiAgICBbKzB4MmVj
XSBJbnRlcmZhY2VJbmRleCAgIDogMHg3IFtUeXBlOiB1bnNpZ25lZCBsb25n
XQogICAgWysweDJmMF0gQWRkcmVzc1RhYmxlICAgICA6IDB4ZmZmZjgwMGMz
MTk5MmZjMCBbVHlwZTogX1NPQ0tBRERSX0lORVQgKl0KICAgIFsrMHgyZjhd
IEFkZHJlc3NDb3VudCAgICAgOiAweDIgW1R5cGU6IHVuc2lnbmVkIGxvbmdd
CiAgICBbKzB4MmZjXSBIYXNoICAgICAgICAgICAgIFtUeXBlOiBfWEVOVklG
X0ZST05URU5EX0hBU0hdCjA6IGtkPiBkeCAtcjEgKCh4ZW5uZXQhX0lSUCAq
KTB4ZmZmZjgwMGMzMTgxMmUxMCkKKCh4ZW5uZXQhX0lSUCAqKTB4ZmZmZjgw
MGMzMTgxMmUxMCkgICAgICAgICAgICAgICAgIDogMHhmZmZmODAwYzMxODEy
ZTEwIFtUeXBlOiBfSVJQICpdCiAgICBbPFJhdyBWaWV3Pl0gICAgIFtUeXBl
OiBfSVJQXQogICAgSW9TdGFjayAgICAgICAgICA6IFNpemUgPSAyLCBDdXJy
ZW50IElSUF9NSl9QTlAgLyBJUlBfTU5fUkVNT1ZFX0RFVklDRSBmb3IgRGV2
aWNlIGZvciAiXERyaXZlclx4ZW5uZXQiCiAgICBDdXJyZW50U3RhY2tMb2Nh
dGlvbiA6IDB4ZmZmZjgwMGMzMTgxMmYyOCA6IElSUF9NSl9QTlAgLyBJUlBf
TU5fUkVNT1ZFX0RFVklDRSBmb3IgRGV2aWNlIGZvciAiXERyaXZlclx4ZW5u
ZXQiIFtUeXBlOiBfSU9fU1RBQ0tfTE9DQVRJT04gKl0KICAgIEN1cnJlbnRU
aHJlYWQgICAgOiAweGZmZmY4MDBjMmJlNTAxNDAgW1R5cGU6IF9FVEhSRUFE
ICpd

--_av-WqgwZnr15BYJ-1cvg7nl1A--



From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 07:20:43 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 07:20:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107901.1458087 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uthnM-0001j6-Vn; Wed, 03 Sep 2025 07:20:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107901.1458087; Wed, 03 Sep 2025 07:20: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 1uthnM-0001iz-TD; Wed, 03 Sep 2025 07:20:40 +0000
Received: by outflank-mailman (input) for mailman id 1107901;
 Wed, 03 Sep 2025 07:20:40 +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=7LXC=3O=bounce.vates.tech=bounce-md_30504962.68b7ec43.v1-71fb06463a7d41a5bf9659a8267684dc@srs-se1.protection.inumbo.net>)
 id 1uthnM-0001it-2V
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 07:20:40 +0000
Received: from mail180-6.suw31.mandrillapp.com
 (mail180-6.suw31.mandrillapp.com [198.2.180.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7c19899f-8896-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 09:20:37 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-6.suw31.mandrillapp.com (Mailchimp) with ESMTP id 4cGvCR0wk5z2K2H9t
 for <win-pv-devel@lists.xenproject.org>; Wed,  3 Sep 2025 07:20:35 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 71fb06463a7d41a5bf9659a8267684dc; Wed, 03 Sep 2025 07:20:35 +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: 7c19899f-8896-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756884035; x=1757154035;
	bh=2gV2Iu6Bc/T0JEtmHZGNBk54hhssaCvMc8fGcvWq1MQ=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=jTUTZst4pT/Cz4BnwTxXsbVJG2YhPVrqCL7DKn1ynaBuuBSnBmDzoiYz//vXWY9YP
	 G7pqefeXlapyA6FDy2SxW1hpH1NVkz2TuhPxKkHMCZ+ymDCxUzouSXfaQf2IkJboI9
	 behhlxz6aiu79Mmlnq+rTW1wrd2YM5XY0VkCoBtpW/yG5X4B/asx4NuSbz8W33V2r0
	 g5GoSc03bAk4FUcewgfgckm0nw7sy3958NJeb5WHRi49Ebib1uiVFPoJWjgG7VRDbq
	 FJsb9ljERhCg+QLIlZICngZWrEGZnMfcMcE0ded5XlZ5Fj2HrFa54uhd08/TdB+8yA
	 Y0vSZpNxm2Wog==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756884035; x=1757144535; i=ngoc-tu.dinh@vates.tech;
	bh=2gV2Iu6Bc/T0JEtmHZGNBk54hhssaCvMc8fGcvWq1MQ=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=B7JWVIPwK3XEniCodiyH6RNm+h2f15rP5sqbnsblzbMytSWcedsQ23SwxMScVtXFo
	 y/H8z/HGLoCO77iXHUmR8q3wOZ2C2CEbRUNLiyrbE6Oz3eJyL4ANu+SNCK7cfrNM6o
	 DZdwW7XZgU+NW6mhW9KVrIPmRQDZXLTbzVnvLEiLVEx7pWTJVhcVuEpMNw5ii/WpER
	 j9rFEcQkUxidrArs+Hp/gzH+R5K4owrsecV9q6BVDVaIPb0W+NurewY/V/8vaILfsw
	 V1aMIN2g2StxQ1D73ngXyAyMfxpbNYqQPnGH2D/NS5LvD0rCmMCzV3wo/QVlYUrH0x
	 jmi223MCNRt4g==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENBUS=20PATCH]=20fdo:=20Remove=20check=20for=20Windows=207?=
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: 1756884034373
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250903072027.94-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.71fb06463a7d41a5bf9659a8267684dc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250903:md
Date: Wed, 03 Sep 2025 07:20:35 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

We target Windows 10 and later.

KeGetProcessorNumberFromIndex and PROCESSOR_NUMBER are also only
available in Windows 7 and later, so the check does not make sense here.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenbus/fdo.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
index 4e87727..29f228c 100644
--- a/src/xenbus/fdo.c
+++ b/src/xenbus/fdo.c
@@ -2002,9 +2002,7 @@ FdoFilterResourceRequirements(
         status = KeGetProcessorNumberFromIndex(Index, &ProcNumber);
         ASSERT(NT_SUCCESS(status));
 
-        if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7))
-            Interrupt.u.Interrupt.Group = ProcNumber.Group;
-
+        Interrupt.u.Interrupt.Group = ProcNumber.Group;
         Interrupt.u.Interrupt.TargetedProcessors = (KAFFINITY)1 << ProcNumber.Number;
         List->Descriptors[List->Count++] = Interrupt;
     }
-- 
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 Sep 03 07:20:44 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 07:20:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107902.1458090 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uthnQ-0001kk-0j; Wed, 03 Sep 2025 07:20:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107902.1458090; Wed, 03 Sep 2025 07:20: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 1uthnP-0001kd-UU; Wed, 03 Sep 2025 07:20:43 +0000
Received: by outflank-mailman (input) for mailman id 1107902;
 Wed, 03 Sep 2025 07:20:42 +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=1Jcs=3O=bounce.vates.tech=bounce-md_30504962.68b7ec47.v1-e25ca9d7a36440f69ec6b514d6c68c4c@srs-se1.protection.inumbo.net>)
 id 1uthnO-0001it-Mm
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 07:20:42 +0000
Received: from mail187-26.suw11.mandrillapp.com
 (mail187-26.suw11.mandrillapp.com [198.2.187.26])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7eb19ca7-8896-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 09:20:40 +0200 (CEST)
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-26.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4cGvCW60t5zKsbJD8
 for <win-pv-devel@lists.xenproject.org>; Wed,  3 Sep 2025 07:20:39 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e25ca9d7a36440f69ec6b514d6c68c4c; Wed, 03 Sep 2025 07:20:39 +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: 7eb19ca7-8896-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756884039; x=1757154039;
	bh=KDZ1aDWUZhxZe73CDCJRKRON9C0GQGYBbGoR37jX+f4=;
	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=ckUbnYv9IkKuF+0k23APz3Vs19DItQ0sr742xV553WFJSLTQKBXGx3IWoyg+vvJaF
	 mg8lFnLk5y+OtIWKjapm5MCWuPZ1HCo4nrpYQuoc1EHzyVEhbHdoGFap+NmYEfY5K/
	 obCddSdhoIVoylooxL/xmV15HM6VZlPeWptKd0nck0u8o9uuf0QrHGhKzIjR9L8hng
	 ilQzqgPoN+4UKuCcpv+z1HCrXNYlRKkmOeD4/xINc3ggRN0PIdgOz3i6lnsXiOwjcT
	 HppW8QVmZNjA36SZZ3wGwPWj63ZJj3CYlTh5r+FM2GbykxbRIt+jtDTf9R9YZ4amkz
	 //dftBjz1hPNQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756884039; x=1757144539; i=ngoc-tu.dinh@vates.tech;
	bh=KDZ1aDWUZhxZe73CDCJRKRON9C0GQGYBbGoR37jX+f4=;
	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=zZGBGtcFcf7mVHq1vOfQ293U1nM4T1f7kkTDKLN1WQhDA8mEFsod9mlqvLE6NHxQ0
	 BL341cLTZcBm5/fy02kUOtDMHvDj180D9T/xk+xJdgsUcClUpG+7fSlJw+IITbQq6M
	 kEYHSTwaeopMFbQQVpS/qbqQnuvL27n5eMCCb8RefTFRD4WMAzgJPsJl6oCixYVpXP
	 w59uz1pL5YOPwAp5nCh6aYVEs3ZGeMxRPS7fH1wRRGvu5Ce+6w6dS4GTXfCcp+3v+G
	 rOHIC5c1RQ/H5aEgVIoWOQ5mwlNwQvNyjUnjePAeAP4/IqCifQ5AaN3rYKEBeugtEp
	 dJXz0ldTltscg==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENVIF=20PATCH]=20Remove=20KeGetProcessorNumberFromIndex=20version=20check?=
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: 1756884039039
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250903072027.94-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250903072027.94-1-ngoc-tu.dinh@vates.tech>
References: <20250903072027.94-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.e25ca9d7a36440f69ec6b514d6c68c4c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250903:md
Date: Wed, 03 Sep 2025 07:20:39 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

We have targeted Windows 10 and up for quite some time, so these checks
are no longer necessary.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenvif/receiver.c    | 21 +++++++--------------
 src/xenvif/transmitter.c | 19 ++++++-------------
 2 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 56586f0..a194e5d 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2364,20 +2364,13 @@ ReceiverRingWatchdog(
 
     Trace("====>\n");
 
-    if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {
-        //
-        // Affinitize this thread to the same CPU as the event channel
-        // and DPC.
-        //
-        // The following functions don't work before Windows 7
-        //
-        status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
-        ASSERT(NT_SUCCESS(status));
-
-        Affinity.Group = ProcNumber.Group;
-        Affinity.Mask = (KAFFINITY)1 << ProcNumber.Number;
-        KeSetSystemGroupAffinityThread(&Affinity, NULL);
-    }
+    // Affinitize this thread to the same CPU as the event channel and DPC.
+    status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
+
+    Affinity.Group = ProcNumber.Group;
+    Affinity.Mask = (KAFFINITY)1 << ProcNumber.Number;
+    KeSetSystemGroupAffinityThread(&Affinity, NULL);
 
     Timeout.QuadPart = TIME_RELATIVE(TIME_S(XENVIF_RECEIVER_WATCHDOG_PERIOD));
 
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 773ebb6..0578f4d 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3333,20 +3333,13 @@ TransmitterRingWatchdog(
 
     Trace("====>\n");
 
-    if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {
-        //
-        // Affinitize this thread to the same CPU as the event channel
-        // and DPC.
-        //
-        // The following functions don't work before Windows 7
-        //
-        status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
-        ASSERT(NT_SUCCESS(status));
+    // Affinitize this thread to the same CPU as the event channel and DPC.
+    status = KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
+    ASSERT(NT_SUCCESS(status));
 
-        Affinity.Group = ProcNumber.Group;
-        Affinity.Mask = (KAFFINITY)1 << ProcNumber.Number;
-        KeSetSystemGroupAffinityThread(&Affinity, NULL);
-    }
+    Affinity.Group = ProcNumber.Group;
+    Affinity.Mask = (KAFFINITY)1 << ProcNumber.Number;
+    KeSetSystemGroupAffinityThread(&Affinity, NULL);
 
     Timeout.QuadPart = TIME_RELATIVE(TIME_S(XENVIF_TRANSMITTER_WATCHDOG_PERIOD));
     PacketsQueued = 0;
-- 
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 Sep 03 07:21:29 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 07:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107903.1458094 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utho9-0001rt-3V; Wed, 03 Sep 2025 07:21:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107903.1458094; Wed, 03 Sep 2025 07:21:29 +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 1utho9-0001rl-0r; Wed, 03 Sep 2025 07:21:29 +0000
Received: by outflank-mailman (input) for mailman id 1107903;
 Wed, 03 Sep 2025 07:21:27 +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=QFIB=3O=bounce.vates.tech=bounce-md_30504962.68b7ec73.v1-ccadd36d7de54052972fc8d096f4d96c@srs-se1.protection.inumbo.net>)
 id 1utho7-0001rf-Pt
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 07:21:27 +0000
Received: from mail187-26.suw11.mandrillapp.com
 (mail187-26.suw11.mandrillapp.com [198.2.187.26])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 98f5a41b-8896-11f0-9d12-b5c5bf9af7f9;
 Wed, 03 Sep 2025 09:21:26 +0200 (CEST)
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-26.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4cGvDM6QJWzKsbYxx
 for <win-pv-devel@lists.xenproject.org>; Wed,  3 Sep 2025 07:21:23 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ccadd36d7de54052972fc8d096f4d96c; Wed, 03 Sep 2025 07:21:23 +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: 98f5a41b-8896-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756884083; x=1757154083;
	bh=hyDZGdFKeyE+Lk/49H3O4Q4EhabKuDpT6kYLgR2Enmg=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=fIG4LuRiEkIrgcggBRM9z4y6/jqtP3gT0ag1U8tBYqvxFppVVsaFJem8mBkZz4l1x
	 GoAvSiObu/LqEq3HpuoVOIIrno0eVmplemYJFRt6ryzoj/V3b/MPAKihyHohfzt6R3
	 9393iX+Tv2ApYbPLZ67+m5YSt137uZSPy9ohvlDAvgCKEH1Zivf9+iJ2WXxUjcpyjm
	 Lxiv6S8Wr3w9Yl/vg9hWQjH0EqORQUEJMgQY7Zy2+5gK4Jdv/ngxc/IaOnpQpTQ5A9
	 AfhdKlDJxqA/W+MuQClJ9/OO8hT3ngghTRm9Z3BQY11rED2jJX8+P1JkiPqJL1sq8/
	 Kx9D3BuYN8xbw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756884083; x=1757144583; i=ngoc-tu.dinh@vates.tech;
	bh=hyDZGdFKeyE+Lk/49H3O4Q4EhabKuDpT6kYLgR2Enmg=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=NENSIDxWRW354M1nrOFoNDsQ1Bm07hSrLiOfU24uokvv6+zwwcyoERrtHsxYjPs6S
	 Hk7V22BarVz1/RSDhErZgzLSeYFBBEOSTYqRyws2bqC8mk4/kL9EraUIpe2tGd5RJd
	 xQPUpEqqESza9lcde40yhCtB2zyYvlPHoM2TZ4MOwLr6ifsdPjZxuNdeM4eavR8cT6
	 xsst9Ya+maj7UnvYYljyjpwtK1xcTQt6Ulv4ykXlu9UqbQkhv7wnujiinCw16Mcc1X
	 pqwGbQTJpFQClufbEqgbnt8Ed8TvzL51RH/vaCEK7eNSH8FCvrzfF8gYUnK+1GQHUc
	 9QmxKfQRj3qOw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Update=20.gitignore?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756884083274
Message-Id: <529e1247-95ff-4b3b-9bbc-e0fae0366761@vates.tech>
To: win-pv-devel@lists.xenproject.org
Cc: "Owen Smith" <owen.smith@cloud.com>
References: <20250531194549.2025-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250531194549.2025-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.ccadd36d7de54052972fc8d096f4d96c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250903:md
Date: Wed, 03 Sep 2025 07:21:23 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 31/05/2025 21:46, Tu Dinh wrote:
> Add build outputs, autogenerated files and CodeQL/SDV outputs.
> 
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
> To be applied to other repos as well.
> ---
Ping for this and the following:
- [PATCH] Set Inf2CatUseLocalTime
- [PATCH] Dynamically link UCRT into release binaries
- [PATCH] Remove the entire StartOverride key


--
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 Sep 03 08:01:00 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:01:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107981.1458148 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utiQN-0001Cw-4d; Wed, 03 Sep 2025 08:00:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107981.1458148; Wed, 03 Sep 2025 08:00:59 +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 1utiQN-0001Cp-21; Wed, 03 Sep 2025 08:00:59 +0000
Received: by outflank-mailman (input) for mailman id 1107981;
 Wed, 03 Sep 2025 08:00:57 +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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utiQL-0001Cd-LP
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:00:57 +0000
Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com
 [2607:f8b0:4864:20::62f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1db4a068-889c-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 10:00:55 +0200 (CEST)
Received: by mail-pl1-x62f.google.com with SMTP id
 d9443c01a7336-2445806e03cso74029235ad.1
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 01:00:55 -0700 (PDT)
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: 1db4a068-889c-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756886454; x=1757491254; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=mCDkRemwixQ+HZB4ElbJTwFUn6krlBENa1bSaSrz3k8=;
        b=bW+t23u421N9GsHFhbEoqLDL0zBxVDnZAZn3RhKkWpQiaWd8b0TPigKDxP8K6nyhXH
         +DHi8dqx8zC0Fa1tAdJmx00Hl7g6eebQ0Z6oGmLAvNC5KAcKeB0/32b5kUuuNiOTX7Nq
         M5KulLL8sOpSei60KbZz1XGXG8k//StfVf1Vc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756886454; x=1757491254;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=mCDkRemwixQ+HZB4ElbJTwFUn6krlBENa1bSaSrz3k8=;
        b=s08qY8Q5ZhwzYgvz9W/t3HfIEoyWkjVPVoj6mvjS7xy4gWlf+4lQX6ya3Iupx7N12+
         tSrxTHvRkkMFfSZ2o7EHU6YBnF+G1RMUyiyifrW6sdUOAq4WkskgJ7yloZczKbXPiCya
         HoPpv0zKX5uDQb66aBqatIiedEm5QXO4Pae4zA4EjKJOE/UiVSH82pDnW75MA6WNGdkl
         g4b2el8U7X/Lrrp9RZlsjcRlfHcWLv1d7lj/+FivQnrbkO1KVL7BMVXyClsu/57OKrF1
         Yg3DmHxXL+ZGu3KnIgC+AVL5MF2729xtgreRRU8+1LHlesWN30Zui10U7IKGGj5/9KAr
         h5Lw==
X-Gm-Message-State: AOJu0Yw+OVMT9HcUEt54de11J5jbNcR7egOLHH8nNPZrncrpQRc2blua
	UN+BXZpm35H5cZ3e4iECiMMCAm41Cb2RqiKaXC/I37vYF0nyDWJdXkHiKfkc05oKVy0ydYml61I
	sHmZTLO4K2RcYqwYA8jFifi9PeTvYXMIuvh8IkC+w
X-Gm-Gg: ASbGncswlvOU08MDGiBxySQf7goiS5Ty8KomcLruNiDCZgj0UHA/zgbZH5bW7Z5WEDL
	hXdExNGjz3j0LIeOsqc394f+2eZNI0EAKWfpu9jVumtN8G+GxaUjoq90iOrN4j4+4hPY+jhGt52
	efqla3PSXlkYoqGw6IHZAPi8ais9qaqObCVAh5gc3JEtan5xvTdsUHCJw33VvaK3JvBDsh+g2LS
	aIkyHzzsEUgYPtJBQ==
X-Google-Smtp-Source: AGHT+IGdbTOYVGU2CN2BfeF7DBqxtuHrM9bWKXaeIE4I+ovP6n82KXjybPH8fZ1aqjduh+IuRt6xxk052vwrSUH3pmU=
X-Received: by 2002:a17:902:ce09:b0:240:8ec:fe2 with SMTP id
 d9443c01a7336-2494487448fmr158071305ad.4.1756886453319; Wed, 03 Sep 2025
 01:00:53 -0700 (PDT)
MIME-Version: 1.0
References: <20250903072027.94-1-ngoc-tu.dinh@vates.tech> <20250903072027.94-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250903072027.94-2-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 3 Sep 2025 09:00:41 +0100
X-Gm-Features: Ac12FXyx3smoNr_4YnSOezSFl44-fl5H7ZVd31UgGgPg8cCmgQmjifiVaKrRvF8
Message-ID: <CAC_UY88ysoBmO9=hQLW0wjk8RxMhNs2qQRS_8uRsrnhuFEzUgw@mail.gmail.com>
Subject: Re: [XENVIF PATCH] Remove KeGetProcessorNumberFromIndex version check
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000f61e0b063de10070"

--000000000000f61e0b063de10070
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

On Wed, Sep 3, 2025 at 8:20=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> wr=
ote:

> We have targeted Windows 10 and up for quite some time, so these checks
> are no longer necessary.
>
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xenvif/receiver.c    | 21 +++++++--------------
>  src/xenvif/transmitter.c | 19 ++++++-------------
>  2 files changed, 13 insertions(+), 27 deletions(-)
>
> diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
> index 56586f0..a194e5d 100644
> --- a/src/xenvif/receiver.c
> +++ b/src/xenvif/receiver.c
> @@ -2364,20 +2364,13 @@ ReceiverRingWatchdog(
>
>      Trace("=3D=3D=3D=3D>\n");
>
> -    if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {
> -        //
> -        // Affinitize this thread to the same CPU as the event channel
> -        // and DPC.
> -        //
> -        // The following functions don't work before Windows 7
> -        //
> -        status =3D KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumbe=
r);
> -        ASSERT(NT_SUCCESS(status));
> -
> -        Affinity.Group =3D ProcNumber.Group;
> -        Affinity.Mask =3D (KAFFINITY)1 << ProcNumber.Number;
> -        KeSetSystemGroupAffinityThread(&Affinity, NULL);
> -    }
> +    // Affinitize this thread to the same CPU as the event channel and
> DPC.
> +    status =3D KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
> +    ASSERT(NT_SUCCESS(status));
> +
> +    Affinity.Group =3D ProcNumber.Group;
> +    Affinity.Mask =3D (KAFFINITY)1 << ProcNumber.Number;
> +    KeSetSystemGroupAffinityThread(&Affinity, NULL);
>
>      Timeout.QuadPart =3D
> TIME_RELATIVE(TIME_S(XENVIF_RECEIVER_WATCHDOG_PERIOD));
>
> diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
> index 773ebb6..0578f4d 100644
> --- a/src/xenvif/transmitter.c
> +++ b/src/xenvif/transmitter.c
> @@ -3333,20 +3333,13 @@ TransmitterRingWatchdog(
>
>      Trace("=3D=3D=3D=3D>\n");
>
> -    if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {
> -        //
> -        // Affinitize this thread to the same CPU as the event channel
> -        // and DPC.
> -        //
> -        // The following functions don't work before Windows 7
> -        //
> -        status =3D KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumbe=
r);
> -        ASSERT(NT_SUCCESS(status));
> +    // Affinitize this thread to the same CPU as the event channel and
> DPC.
> +    status =3D KeGetProcessorNumberFromIndex(Ring->Index, &ProcNumber);
> +    ASSERT(NT_SUCCESS(status));
>
> -        Affinity.Group =3D ProcNumber.Group;
> -        Affinity.Mask =3D (KAFFINITY)1 << ProcNumber.Number;
> -        KeSetSystemGroupAffinityThread(&Affinity, NULL);
> -    }
> +    Affinity.Group =3D ProcNumber.Group;
> +    Affinity.Mask =3D (KAFFINITY)1 << ProcNumber.Number;
> +    KeSetSystemGroupAffinityThread(&Affinity, NULL);
>
>      Timeout.QuadPart =3D
> TIME_RELATIVE(TIME_S(XENVIF_TRANSMITTER_WATCHDOG_PERIOD));
>      PacketsQueued =3D 0;
> --
> 2.51.0.windows.1
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000f61e0b063de10070
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div></div><br><div class=3D"gmail_quote gmail_quo=
te_container"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Sep 3, 2025 at =
8:20=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex">We have targeted Windows 10 =
and up for quite some time, so these checks<br>
are no longer necessary.<br>
<br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xenvif/receiver.c=C2=A0 =C2=A0 | 21 +++++++--------------<br>
=C2=A0src/xenvif/transmitter.c | 19 ++++++-------------<br>
=C2=A02 files changed, 13 insertions(+), 27 deletions(-)<br>
<br>
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c<br>
index 56586f0..a194e5d 100644<br>
--- a/src/xenvif/receiver.c<br>
+++ b/src/xenvif/receiver.c<br>
@@ -2364,20 +2364,13 @@ ReceiverRingWatchdog(<br>
<br>
=C2=A0 =C2=A0 =C2=A0Trace(&quot;=3D=3D=3D=3D&gt;\n&quot;);<br>
<br>
-=C2=A0 =C2=A0 if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // Affinitize this thread to the same CPU as t=
he event channel<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // and DPC.<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // The following functions don&#39;t work befo=
re Windows 7<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 status =3D KeGetProcessorNumberFromIndex(Ring-=
&gt;Index, &amp;ProcNumber);<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 ASSERT(NT_SUCCESS(status));<br>
-<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 Affinity.Group =3D ProcNumber.Group;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 Affinity.Mask =3D (KAFFINITY)1 &lt;&lt; ProcNu=
mber.Number;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 KeSetSystemGroupAffinityThread(&amp;Affinity, =
NULL);<br>
-=C2=A0 =C2=A0 }<br>
+=C2=A0 =C2=A0 // Affinitize this thread to the same CPU as the event chann=
el and DPC.<br>
+=C2=A0 =C2=A0 status =3D KeGetProcessorNumberFromIndex(Ring-&gt;Index, &am=
p;ProcNumber);<br>
+=C2=A0 =C2=A0 ASSERT(NT_SUCCESS(status));<br>
+<br>
+=C2=A0 =C2=A0 Affinity.Group =3D ProcNumber.Group;<br>
+=C2=A0 =C2=A0 Affinity.Mask =3D (KAFFINITY)1 &lt;&lt; ProcNumber.Number;<b=
r>
+=C2=A0 =C2=A0 KeSetSystemGroupAffinityThread(&amp;Affinity, NULL);<br>
<br>
=C2=A0 =C2=A0 =C2=A0Timeout.QuadPart =3D TIME_RELATIVE(TIME_S(XENVIF_RECEIV=
ER_WATCHDOG_PERIOD));<br>
<br>
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c<br>
index 773ebb6..0578f4d 100644<br>
--- a/src/xenvif/transmitter.c<br>
+++ b/src/xenvif/transmitter.c<br>
@@ -3333,20 +3333,13 @@ TransmitterRingWatchdog(<br>
<br>
=C2=A0 =C2=A0 =C2=A0Trace(&quot;=3D=3D=3D=3D&gt;\n&quot;);<br>
<br>
-=C2=A0 =C2=A0 if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7) ) {<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // Affinitize this thread to the same CPU as t=
he event channel<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // and DPC.<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 // The following functions don&#39;t work befo=
re Windows 7<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 //<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 status =3D KeGetProcessorNumberFromIndex(Ring-=
&gt;Index, &amp;ProcNumber);<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 ASSERT(NT_SUCCESS(status));<br>
+=C2=A0 =C2=A0 // Affinitize this thread to the same CPU as the event chann=
el and DPC.<br>
+=C2=A0 =C2=A0 status =3D KeGetProcessorNumberFromIndex(Ring-&gt;Index, &am=
p;ProcNumber);<br>
+=C2=A0 =C2=A0 ASSERT(NT_SUCCESS(status));<br>
<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 Affinity.Group =3D ProcNumber.Group;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 Affinity.Mask =3D (KAFFINITY)1 &lt;&lt; ProcNu=
mber.Number;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 KeSetSystemGroupAffinityThread(&amp;Affinity, =
NULL);<br>
-=C2=A0 =C2=A0 }<br>
+=C2=A0 =C2=A0 Affinity.Group =3D ProcNumber.Group;<br>
+=C2=A0 =C2=A0 Affinity.Mask =3D (KAFFINITY)1 &lt;&lt; ProcNumber.Number;<b=
r>
+=C2=A0 =C2=A0 KeSetSystemGroupAffinityThread(&amp;Affinity, NULL);<br>
<br>
=C2=A0 =C2=A0 =C2=A0Timeout.QuadPart =3D TIME_RELATIVE(TIME_S(XENVIF_TRANSM=
ITTER_WATCHDOG_PERIOD));<br>
=C2=A0 =C2=A0 =C2=A0PacketsQueued =3D 0;<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000f61e0b063de10070--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 08:14:43 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:14:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107994.1458153 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utide-0002Wn-4L; Wed, 03 Sep 2025 08:14:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107994.1458153; Wed, 03 Sep 2025 08:14:42 +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 1utide-0002Wf-1O; Wed, 03 Sep 2025 08:14:42 +0000
Received: by outflank-mailman (input) for mailman id 1107994;
 Wed, 03 Sep 2025 08:14:40 +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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utidc-0002VZ-RB
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:14:40 +0000
Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com
 [2607:f8b0:4864:20::102d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 08827983-889e-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 10:14:38 +0200 (CEST)
Received: by mail-pj1-x102d.google.com with SMTP id
 98e67ed59e1d1-32326e2f0b3so4847666a91.2
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 01:14:38 -0700 (PDT)
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: 08827983-889e-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756887277; x=1757492077; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=TjEaHQAAKJ+pmPp7QLas1sydaTyjY7xUA5BDESL8G7Y=;
        b=kIwVpqokHDsQFtIB5U5yUqniRgsN5NPDeLz1e76bi/ytzMfhjGBpI0vqRZ5fPI4YgD
         BUdZYHWogDAw3aKX4ESfUjJJNwpnWk/ro3HnkRrypQwePNmp7MC4yru2EX/C1WSPzYDC
         EAmdduarTR1eppiaMrDFIZ50RIm45ht8RXyy4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756887277; x=1757492077;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=TjEaHQAAKJ+pmPp7QLas1sydaTyjY7xUA5BDESL8G7Y=;
        b=YobmqAfGTc3AdRzS6ORXE3fO33PmqywOgjjqxMtnVpZ2hf2ru+pnPmvLNoQhb4W4WW
         dMUMQWDpMv3EUIgTzAzfNFf601c8VHcepqhE5chL5mdnWQ3JPZq/90THt9KWGwxy4vMX
         UMb1tIwuPN5fOpg0rICqOhStBpPBgrhdglRcesOEm04pqg+vsuxXQ6Xlkbco8kpL1isW
         gMGmcenQGppGv6BUFkqtk+TVPwW3d8UiNq4wqN4hR62kFW8HEy/tYuiLc3+30k12Ny+l
         8RQND4o9pDufGmB/Kd8963YNGJ97dUJfTa43uHagch5qNl7RQMplWUqGn1wzjrhAZ0a1
         O7Tg==
X-Gm-Message-State: AOJu0YzrE0nG/yip7eFL5c69KepOJXsA4gTgtxkJMhY3c7ws2IeYIBlG
	PPqPcSI4x3RC7k5N1YDN6lt20ueTKuMVa9vi+eCBfrRDbXcal3RD4Q/eQVEckcfFL9nfX8eb/Gl
	TMwuOJM+JbPKZ1CTU4VIxGfcye/B+2zX8edVX8kBG
X-Gm-Gg: ASbGncsYxCPRg1NeInt+yYszeK0qMfk4YdzOX9DraPu9+uin82k8OEvt308HgE2BSIz
	PcSVDy68EG0RYEKBDm4ZVN+tP5b2f2C0XY6sUfiK77rPIJj15YhylOTgGnHPvXlUt6B7v6cHkvg
	Gr9Oxykk+hQd+G4/KowuIqgzNPCAInysMGFzxTRPj6KR9ICaYHWYneS/Zwrvb06bNFQN/PGTeY8
	bDVGW4Vv9mVQLDAjw==
X-Google-Smtp-Source: AGHT+IEpWaSXLLpBtoMfC5itJFOwL3DHgsuLFJIdULhEolKj4hOdx9CaHY7l0W65UWxSTzuKvtJ0VHD9cer80PYM0js=
X-Received: by 2002:a17:90b:3c91:b0:32b:6223:259 with SMTP id
 98e67ed59e1d1-32b62230456mr1344532a91.13.1756887276737; Wed, 03 Sep 2025
 01:14:36 -0700 (PDT)
MIME-Version: 1.0
References: <20250828220113.1268-1-ngoc-tu.dinh@vates.tech>
 <CAC_UY8_B9tH8kh+x8Xw0ZqjuFQUvB6EmVrop+GpzkccwCWwQkA@mail.gmail.com> <063db011-b22d-4ee9-804b-74ca22bf946a@vates.tech>
In-Reply-To: <063db011-b22d-4ee9-804b-74ca22bf946a@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 3 Sep 2025 09:14:24 +0100
X-Gm-Features: Ac12FXzXMpnJhVeP_TOp4gbkuK3Vwl80Bv4yw3Idacn02m4fmjezbFDPs9fNJm8
Message-ID: <CAC_UY89=9ss-JW-Nscmqm=ZJq0q2FPyCkp9eXrDe-BVEHPKLnA@mail.gmail.com>
Subject: Re: [XENVIF PATCH] Skip hash update if frontend is not enabled
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000000a6c3a063de13204"

--0000000000000a6c3a063de13204
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

It is odd that the controller is blocking when it's connected, but it's
possible that it's acquired the lock, while processing but will be
immediately disconnected...
Approving this, as the logging would indicate that the patch would resolve
this issue, and report success back to NDIS rather than
STATUS_NOT_SUPPORTED.

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

On Tue, Sep 2, 2025 at 11:49=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> w=
rote:

> On 02/09/2025 11:54, Owen Smith wrote:
> > I don't think that any updated hash details will be resent if they are
> > changed when Frontend->State !=3D FRONTEND_ENABLED. FrontendEnable will
> > call __FrontendUpdateHash before it sets Frontend->State
> > to FRONTEND_ENABLED.
> >
> > Controller->Connected is used to guard writing hash data to the backend=
,
> > but returns STATUS_NOT_SUPPORTED in this case, and this means Frontend-
> >  >Hash is not updated and the status is reported back to NDIS.
> >
> > Owen
> >
>
> It doesn't trigger 100% of the time, but I found it easier to repro
> under debugger.
>
> At the moment of hang, Controller->Connected is still true but
> Frontend->State has entered FRONTEND_CONNECTED (see attached log)
>
> > On Thu, Aug 28, 2025 at 11:01=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.te=
ch>
> wrote:
> >
> >     NDIS may set OID_GEN_RECEIVE_SCALE_PARAMETERS during an
> >     IRP_MN_REMOVE_DEVICE, after the frontend has been torn down. This
> will
> >     cause the ensuing control request to hang.
> >
> >     Skip __FrontendUpdateHash if the frontend is not enabled. The skip =
is
> >     done here since we still need to update Frontend->Hash in case the
> >     frontend is enabled again later.
> >
> >     Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> >     ---
> >       src/xenvif/frontend.c | 3 +++
> >       1 file changed, 3 insertions(+)
> >
> >     diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
> >     index 90ec2b1..c497f24 100644
> >     --- a/src/xenvif/frontend.c
> >     +++ b/src/xenvif/frontend.c
> >     @@ -1889,6 +1889,9 @@ __FrontendUpdateHash(
> >           ULONG                   Flags;
> >           NTSTATUS                status;
> >
> >     +    if (Frontend->State !=3D FRONTEND_ENABLED)
> >     +        goto done;
> >     +
> >           Controller =3D __FrontendGetController(Frontend);
> >
> >           switch (Hash->Algorithm) {
> >     --
> >     2.51.0.windows.1
> >
> >
> >
> >     Ngoc Tu Dinh | Vates XCP-ng Developer
> >
> >     XCP-ng & Xen Orchestra - Vates solutions
> >
> >     web: https://vates.tech <https://vates.tech>
> >
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--0000000000000a6c3a063de13204
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">It is odd that the controller is blocking when it&#39;s connected, but i=
t&#39;s possible that it&#39;s acquired the lock, while processing but will=
 be immediately=C2=A0disconnected...</div><div class=3D"gmail_default" styl=
e=3D"font-family:monospace">Approving this, as the logging would indicate t=
hat the patch would resolve this issue, and report success back to NDIS rat=
her than STATUS_NOT_SUPPORTED.</div><div class=3D"gmail_default" style=3D"f=
ont-family:monospace">=C2=A0</div><div class=3D"gmail_default" style=3D"fon=
t-family:monospace">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smit=
h@cloud.com">owen.smith@cloud.com</a>&gt;</div></div><br><div class=3D"gmai=
l_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Tue=
, Sep 2, 2025 at 11:49=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 02/09/2=
025 11:54, Owen Smith wrote:<br>
&gt; I don&#39;t think that any updated hash details will be resent if they=
 are <br>
&gt; changed when Frontend-&gt;State !=3D=C2=A0FRONTEND_ENABLED. FrontendEn=
able will <br>
&gt; call __FrontendUpdateHash before it sets Frontend-&gt;State <br>
&gt; to=C2=A0FRONTEND_ENABLED.<br>
&gt; <br>
&gt; Controller-&gt;Connected is used to guard writing hash data to the bac=
kend, <br>
&gt; but returns STATUS_NOT_SUPPORTED in this case, and this means Frontend=
- <br>
&gt;=C2=A0 &gt;Hash is not updated and the status is reported back to NDIS.=
<br>
&gt; <br>
&gt; Owen<br>
&gt; <br>
<br>
It doesn&#39;t trigger 100% of the time, but I found it easier to repro <br=
>
under debugger.<br>
<br>
At the moment of hang, Controller-&gt;Connected is still true but <br>
Frontend-&gt;State has entered FRONTEND_CONNECTED (see attached log)<br>
<br>
&gt; On Thu, Aug 28, 2025 at 11:01=E2=80=AFPM Tu Dinh &lt;ngoc-tu.dinh@vate=
s.tech&gt; wrote:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0NDIS may set OID_GEN_RECEIVE_SCALE_PARAMETERS durin=
g an<br>
&gt;=C2=A0 =C2=A0 =C2=A0IRP_MN_REMOVE_DEVICE, after the frontend has been t=
orn down. This will<br>
&gt;=C2=A0 =C2=A0 =C2=A0cause the ensuing control request to hang.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0Skip __FrontendUpdateHash if the frontend is not en=
abled. The skip is<br>
&gt;=C2=A0 =C2=A0 =C2=A0done here since we still need to update Frontend-&g=
t;Hash in case the<br>
&gt;=C2=A0 =C2=A0 =C2=A0frontend is enabled again later.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&=
gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0---<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0src/xenvif/frontend.c | 3 +++<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A01 file changed, 3 insertions(+)<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0diff --git a/src/xenvif/frontend.c b/src/xenvif/fro=
ntend.c<br>
&gt;=C2=A0 =C2=A0 =C2=A0index 90ec2b1..c497f24 100644<br>
&gt;=C2=A0 =C2=A0 =C2=A0--- a/src/xenvif/frontend.c<br>
&gt;=C2=A0 =C2=A0 =C2=A0+++ b/src/xenvif/frontend.c<br>
&gt;=C2=A0 =C2=A0 =C2=A0@@ -1889,6 +1889,9 @@ __FrontendUpdateHash(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ULONG=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Flags;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NTSTATUS=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 status;<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0+=C2=A0 =C2=A0 if (Frontend-&gt;State !=3D FRONTEND=
_ENABLED)<br>
&gt;=C2=A0 =C2=A0 =C2=A0+=C2=A0 =C2=A0 =C2=A0 =C2=A0 goto done;<br>
&gt;=C2=A0 =C2=A0 =C2=A0+<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Controller =3D __FrontendGetCo=
ntroller(Frontend);<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0switch (Hash-&gt;Algorithm) {<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0-- <br>
&gt;=C2=A0 =C2=A0 =C2=A02.51.0.windows.1<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0Ngoc Tu Dinh | Vates XCP-ng Developer<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0XCP-ng &amp; Xen Orchestra - Vates solutions<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0web: <a href=3D"https://vates.tech" rel=3D"noreferr=
er" target=3D"_blank">https://vates.tech</a> &lt;<a href=3D"https://vates.t=
ech" rel=3D"noreferrer" target=3D"_blank">https://vates.tech</a>&gt;<br>
&gt; <br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--0000000000000a6c3a063de13204--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 08:18:29 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:18:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107995.1458157 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utihJ-0002dC-DI; Wed, 03 Sep 2025 08:18:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107995.1458157; Wed, 03 Sep 2025 08:18:29 +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 1utihJ-0002d4-AK; Wed, 03 Sep 2025 08:18:29 +0000
Received: by outflank-mailman (input) for mailman id 1107995;
 Wed, 03 Sep 2025 08:18:27 +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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utihH-0002cy-Ph
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:18:27 +0000
Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com
 [2607:f8b0:4864:20::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9066ba40-889e-11f0-9d12-b5c5bf9af7f9;
 Wed, 03 Sep 2025 10:18:26 +0200 (CEST)
Received: by mail-pl1-x630.google.com with SMTP id
 d9443c01a7336-24b21006804so13475655ad.3
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 01:18:26 -0700 (PDT)
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: 9066ba40-889e-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756887505; x=1757492305; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=EDZfJUdIt/RleOkDhnQ6ehN2NwBnWTsTmuCzFYf201A=;
        b=gPfi89rWw8tq3Sy93sdqhJI6m1LGqkqnhr4wtNh6aPIyORj+YWVClOvE0qxWK6aj9n
         NEblXqYgQ6Ma8kho1byQf2mmQlDoJ4GOZz+TtqHAn8iIEwRwyBSxwmH5VuSE5iwN6ayU
         MvYJ+JiWmV1xUTVT2TJ05Mn5V9srp1dBXesHs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756887505; x=1757492305;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=EDZfJUdIt/RleOkDhnQ6ehN2NwBnWTsTmuCzFYf201A=;
        b=e4ozpgihqchY9gZI/hEWrksKsehdXrUQoe2dPhjhWIUCx3t2URWJy+zSu49t0BEan7
         +bZ7EXvpBdgMWbkmz1nUWFmH4n+3S/oLjqIeFSpiwnrH43zLKvA9MK213qyf96f8BUcI
         Cso5W/DEqfTzUjKOk++jDpeqL7MaIY4fz1rJEvtFkUW7SKPMT1KFqFRGiVRgz3VDhOKm
         u4RxT/iczBG26AJo5IsA4Y7/eBIGRdJkmvWss9OplFmFmH99knuxpQU6QrQtbJvbrfOR
         P4pQNFMwFsTHQtS5JqmA+62+FFfvUi+qn8rN0oVJ4OMzcZ9xAZs/OunsZMTvz9kmcN+0
         eJmg==
X-Gm-Message-State: AOJu0YwE9K84D1X36fmxEZOG7ZOSD38cw0hxmWm4SOfdWXj/Lf3BxMWy
	U48nQj+Oi9PPO0IucELVh2skOYAQwF9hVl6nx7GAcJ3KIy631ZyhccFZFejFHIQOZCEH2TcIGjJ
	eWiyfW+TT1zfslrHpFJuzbHcn8GF7agNZDhfEvc2pivDmBheHwCQ=
X-Gm-Gg: ASbGncvP6dJ9FJtFzHBznP4pIAHJIEu3Vt/NXkX/0Idk8e5ruDulAXs/Bm8dqdtopCN
	ehMxkqgCdGppZkQN6eoIM0dWme9/cRxFdE8Pg+B6r2fg7bfBi4EAbBk8pZbNY42ldpcP0O5MH/z
	Ar8tGtFXBnQiqT8wdKw7NZVE3c2Szde9PTLfTze+HbmrEegB9NXsS/uCkVDJss1vzrq2U64ruNa
	PEF+MM=
X-Google-Smtp-Source: AGHT+IFPzX4cLBAGF9gU6ilaCVszTp7y/I8D1rwHtLHj5aaSK/fA7ay+HpD3LGHFfoHGtWaA3PfdJhpl6CjnU7RTJIo=
X-Received: by 2002:a17:902:ec88:b0:248:ff49:d758 with SMTP id
 d9443c01a7336-249448dee30mr225453135ad.1.1756887504903; Wed, 03 Sep 2025
 01:18:24 -0700 (PDT)
MIME-Version: 1.0
References: <20250903072027.94-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250903072027.94-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 3 Sep 2025 09:18:13 +0100
X-Gm-Features: Ac12FXzsOPU6Tgz2dS2Q7PaX8BudD7vBuKG4h6UdKIeglWwhMF4h8WywL_3K0c0
Message-ID: <CAC_UY8-UfNsTf1Z1-1BDNfJkKZ_FX9gRJXJRKnX2=5QNwf2Aqw@mail.gmail.com>
Subject: Re: [XENBUS PATCH] fdo: Remove check for Windows 7
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000a3fc84063de13f7b"

--000000000000a3fc84063de13f7b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

On Wed, Sep 3, 2025 at 8:20=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> wr=
ote:

> We target Windows 10 and later.
>
> KeGetProcessorNumberFromIndex and PROCESSOR_NUMBER are also only
> available in Windows 7 and later, so the check does not make sense here.
>
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xenbus/fdo.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c
> index 4e87727..29f228c 100644
> --- a/src/xenbus/fdo.c
> +++ b/src/xenbus/fdo.c
> @@ -2002,9 +2002,7 @@ FdoFilterResourceRequirements(
>          status =3D KeGetProcessorNumberFromIndex(Index, &ProcNumber);
>          ASSERT(NT_SUCCESS(status));
>
> -        if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7))
> -            Interrupt.u.Interrupt.Group =3D ProcNumber.Group;
> -
> +        Interrupt.u.Interrupt.Group =3D ProcNumber.Group;
>          Interrupt.u.Interrupt.TargetedProcessors =3D (KAFFINITY)1 <<
> ProcNumber.Number;
>          List->Descriptors[List->Count++] =3D Interrupt;
>      }
> --
> 2.51.0.windows.1
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>
>

--000000000000a3fc84063de13f7b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div></div><br><div class=3D"gmail_quote gmail_quo=
te_container"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Sep 3, 2025 at =
8:20=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex">We target Windows 10 and lat=
er.<br>
<br>
KeGetProcessorNumberFromIndex and PROCESSOR_NUMBER are also only<br>
available in Windows 7 and later, so the check does not make sense here.<br=
>
<br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xenbus/fdo.c | 4 +---<br>
=C2=A01 file changed, 1 insertion(+), 3 deletions(-)<br>
<br>
diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c<br>
index 4e87727..29f228c 100644<br>
--- a/src/xenbus/fdo.c<br>
+++ b/src/xenbus/fdo.c<br>
@@ -2002,9 +2002,7 @@ FdoFilterResourceRequirements(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0status =3D KeGetProcessorNumberFromIndex(=
Index, &amp;ProcNumber);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ASSERT(NT_SUCCESS(status));<br>
<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (RtlIsNtDdiVersionAvailable(NTDDI_WIN7))<br=
>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Interrupt.u.Interrupt.Group =3D =
ProcNumber.Group;<br>
-<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 Interrupt.u.Interrupt.Group =3D ProcNumber.Gro=
up;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Interrupt.u.Interrupt.TargetedProcessors =
=3D (KAFFINITY)1 &lt;&lt; ProcNumber.Number;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0List-&gt;Descriptors[List-&gt;Count++] =
=3D Interrupt;<br>
=C2=A0 =C2=A0 =C2=A0}<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
<br>
</blockquote></div>

--000000000000a3fc84063de13f7b--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 08:25:15 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:25:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1107996.1458161 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utinp-0003oI-TD; Wed, 03 Sep 2025 08:25:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1107996.1458161; Wed, 03 Sep 2025 08:25:13 +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 1utinp-0003oB-QI; Wed, 03 Sep 2025 08:25:13 +0000
Received: by outflank-mailman (input) for mailman id 1107996;
 Wed, 03 Sep 2025 08:25:12 +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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utino-0003o5-Fc
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:25:12 +0000
Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com
 [2607:f8b0:4864:20::1033])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 80fbc386-889f-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 10:25:10 +0200 (CEST)
Received: by mail-pj1-x1033.google.com with SMTP id
 98e67ed59e1d1-32b5d8bea85so522957a91.1
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 01:25:10 -0700 (PDT)
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: 80fbc386-889f-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756887909; x=1757492709; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=kGgicBmas6bSlBb4GSc+69e7I4hBBS2Dc/o/XVPIA5I=;
        b=hEAeibQG/cIm308xyki8AFTxWd8j3WBjAAVlbfwykSvy3TMvk6zfj+T6ALIm80kPMq
         cMUKbzJ4irAq9o5d+d5dzJa///JBQ7KWkqoOKMtYH6pX4OfwArCPElyrUH45FzhKACfp
         2QAma0nl8GnF638As5mvYcsQQFAxIjw67VHYw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756887909; x=1757492709;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=kGgicBmas6bSlBb4GSc+69e7I4hBBS2Dc/o/XVPIA5I=;
        b=PjR5CWUky7QSlLnEUUhBYsBxc3XRB8KEXO2x+H7AdkSkISHRLWi0/YSYMe83azC2Hb
         mWNf0pmx3lbLsXK0u90lerLGbb6MgqQd6qIUv+XktTKktK8xFu/YzjTFpuiZq4oENMEw
         40qIlNc7x2AgOGc0+ivlVyeaup/9RjYNzvpwRRZ5NvRiexv3qoI5Ve0XJbCa6HiNXNNU
         7P2TtuMBHtKRygYDuoC8FWk7f6Xdi85vh9l+M+cayR/3GiUEVJkx1m5HbVGVVezPczuw
         tHq5irmpFE8IZR6YvyrQ2KxeQJke8QY5I7RWtw00EajbFyP/UzC2Juy9Fj4gpKW+RuIP
         coEA==
X-Gm-Message-State: AOJu0YypogtUkMEd0uCU98/Dj+1S0tTNE0Arb6vgNpi4QpVXDYkrEqsw
	z/zROY7hZetLczSfMdMxKKybrfolP0SjQrMB71jGDCtB7+nkEur30kXINMG74+DGK7/f7uyOBmc
	WNCYQD5bZ/24GrWcKSrge5uqY+UKxADCCvNs4+uzX
X-Gm-Gg: ASbGnctiTVb/Y8WJadqgd79hAtY85T/ELuNK6lVpRiLfnhCge0WZ16RK4Z/rO5nxk+b
	Qj//eoSQ/cAlJFXmTFLaVeebf0l8lpoAhoI6lVTMvRvdcmq1RoRK0q7aOxH3ZsjJuIWd5m1cF+y
	OtwbORv0/vbLpQ23DF0CaBjl2F0v//ZcUunrvmm3FW8BKvybANbvNKxIDWQwXZuWPE2jNF5a2Ed
	PUGm24=
X-Google-Smtp-Source: AGHT+IFG8wZMTmr0IKEj3L7Zd428YKvZ4pgiVJlFQIgvPhCOvrY4wpsAVrGun9pybbrPG/g6fLY6+MnckahvZ3qQtsI=
X-Received: by 2002:a17:90a:d44c:b0:329:e9da:35e0 with SMTP id
 98e67ed59e1d1-329e9da389emr5165495a91.11.1756887908543; Wed, 03 Sep 2025
 01:25:08 -0700 (PDT)
MIME-Version: 1.0
References: <20250531194549.2025-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250531194549.2025-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 3 Sep 2025 09:24:55 +0100
X-Gm-Features: Ac12FXwEiwr0CzixwicJTmGkQrgaA-XYwqRMVTbCNL9I5uxGrtt0biwKCgWJqC0
Message-ID: <CAC_UY89WzBr7moeAvigeisRZu3jZoYDaM5=CSsxvHjZDGq4aXQ@mail.gmail.com>
Subject: Re: [PATCH] Update .gitignore
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org, Paul Durrant <paul@xen.org>
Content-Type: multipart/alternative; boundary="000000000000b30b3a063de157aa"

--000000000000b30b3a063de157aa
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

I will also apply to all other repos

On Sat, May 31, 2025 at 8:45=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.tech> w=
rote:

> Add build outputs, autogenerated files and CodeQL/SDV outputs.
>
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
> To be applied to other repos as well.
> ---
>  .gitignore | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/.gitignore b/.gitignore
> index aa9e3ea..868e064 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -5,3 +5,18 @@
>
>  # Output
>  /xenbus
> +/vs20??/**/Win32/
> +/vs20??/**/x64/
> +
> +# Autogenerated files
> +.vs
> +/.build_number
> +/vs20??/*.inf
> +/vs20??/version/.revision
> +/vs20??/version/version.log
> +/include/version.h
> +
> +# CodeQL/SDV
> +/database
> +*.dvl.xml
> +*.sarif
> --
> 2.49.0.windows.1
>
>
>
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000b30b3a063de157aa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div><div class=3D"gmail_default" style=3D"font-fa=
mily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family=
:monospace">I will also apply to all other repos</div></div><br><div class=
=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr=
">On Sat, May 31, 2025 at 8:45=E2=80=AFPM Tu Dinh &lt;ngoc-tu.dinh@vates.te=
ch&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ad=
d build outputs, autogenerated files and CodeQL/SDV outputs.<br>
<br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
To be applied to other repos as well.<br>
---<br>
=C2=A0.gitignore | 15 +++++++++++++++<br>
=C2=A01 file changed, 15 insertions(+)<br>
<br>
diff --git a/.gitignore b/.gitignore<br>
index aa9e3ea..868e064 100644<br>
--- a/.gitignore<br>
+++ b/.gitignore<br>
@@ -5,3 +5,18 @@<br>
<br>
=C2=A0# Output<br>
=C2=A0/xenbus<br>
+/vs20??/**/Win32/<br>
+/vs20??/**/x64/<br>
+<br>
+# Autogenerated files<br>
+.vs<br>
+/.build_number<br>
+/vs20??/*.inf<br>
+/vs20??/version/.revision<br>
+/vs20??/version/version.log<br>
+/include/version.h<br>
+<br>
+# CodeQL/SDV<br>
+/database<br>
+*.dvl.xml<br>
+*.sarif<br>
-- <br>
2.49.0.windows.1<br>
<br>
<br>
<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000b30b3a063de157aa--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 08:57:51 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:57:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1108004.1458165 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utjJO-0007Dl-2u; Wed, 03 Sep 2025 08:57:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1108004.1458165; Wed, 03 Sep 2025 08:57:50 +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 1utjJO-0007De-0M; Wed, 03 Sep 2025 08:57:50 +0000
Received: by outflank-mailman (input) for mailman id 1108004;
 Wed, 03 Sep 2025 08:57: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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utjJM-0007DY-HI
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:57:48 +0000
Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com
 [2607:f8b0:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0ee1d2c5-88a4-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 10:57:46 +0200 (CEST)
Received: by mail-pl1-x62a.google.com with SMTP id
 d9443c01a7336-24b21006804so13789115ad.3
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 01:57:46 -0700 (PDT)
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: 0ee1d2c5-88a4-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756889865; x=1757494665; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=tE/Zk9kXEqzPFun9TLmu8xglX2Be94oQQL/fxOCT6Us=;
        b=E5tHaB0IRpEdbePPTaDyXFuBB60ZUPLiXLhnOSq4hGI51XVqIbeP9GZEN8lH/MIuPW
         pFg/xkhniwlhCHKL4BC/swc5Wbqc4y053hxafaf8NmRfd2Pg9v4WseUSVRv9JGaukt1M
         SPn3DV+9XvByhXK48whrJl6Rf2KA09EcE7fn4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756889865; x=1757494665;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=tE/Zk9kXEqzPFun9TLmu8xglX2Be94oQQL/fxOCT6Us=;
        b=ZPYiTT6cWSFzWp1Wopke784jlJFQf1YW8xh7T2RCnlcHGZ0ZFeV9Lt5WmMT6JaA7ft
         AZFK7PkelGtsOQkGozWlge58jpqNO29psNlydz7v5k68wjetYMXoL0uM9FfzXwbJlPVp
         OsVIGQER4vUfZbRpkgUhwCa2ZHdSURN0KTBSi048L0mI6rN5zYxSFrcWMkdaPypdTETQ
         39pHgm4yUSmmYfnDToHB6npgWhio0AHow+/syHZ6PgtuHXAjZhCCahpw1mldqJ+FhrVL
         VEeLcDKYX2DRQjQs5/82R46c93sKLdkVCIYDUo3D/brJPa6iji8ugrvgyCFj86QfN06f
         mSVw==
X-Gm-Message-State: AOJu0YwFMkPEIeG7irhAckiLLIqSBUlks0iwYyOk9jpaARU+3WQ5Z/i0
	7JguTF1ITVjS0uScAIMfMeGWoLg04C+Kgonr2x6UDJviRbPo1d9JHEd7V4N7WTrmmsXqfOUwBbD
	yD9DBT5hsk44EunJz7W3kaBzPAo4uZE0+mdvxEaxf
X-Gm-Gg: ASbGncv1dKylHELswjBcy+Pkaq+noKGfkq+lkC3hEOJIgbjZS3Qv4uTYoJL/iDLqTcR
	HcXQxF9lHIRtJLnTQexaaHDdf16dnnmDGvwr2n9NQ83lpyUbvHO8fvODurAFN2w5NASn3XoQ3Uf
	3zOs/3OPLuCXf+7EmZCYk/mh469r0gpeo6lX5w4gjqwtstrhkMUfmcL0JzG1lpk2iynuSwEtm5r
	PDQZrkh33KcWJcQ7A==
X-Google-Smtp-Source: AGHT+IEf8FexmMTmx4Px7C5VjQYoPAlpbmTuyGYMkm72HkEgM1OVd0LiLsXTxazETfJgWQ3Ru147TBhsrOKXYr+Aw0w=
X-Received: by 2002:a17:902:e747:b0:24a:8ed6:fa0 with SMTP id
 d9443c01a7336-24a8ed61300mr170643605ad.54.1756889864485; Wed, 03 Sep 2025
 01:57:44 -0700 (PDT)
MIME-Version: 1.0
References: <20250531194549.2025-1-ngoc-tu.dinh@vates.tech> <529e1247-95ff-4b3b-9bbc-e0fae0366761@vates.tech>
In-Reply-To: <529e1247-95ff-4b3b-9bbc-e0fae0366761@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 3 Sep 2025 09:57:32 +0100
X-Gm-Features: Ac12FXyukAakaNZyT3NpfyIukr_0e0-qPCcXiLyt5-zQ0ag9feJlmZDB0SWrz7E
Message-ID: <CAC_UY89U3gQ8wPNJCauEGpxQbzd3w1CX1kGFwsc86_RmsBeYxQ@mail.gmail.com>
Subject: Re: [PATCH] Update .gitignore
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000485930063de1cc18"

--000000000000485930063de1cc18
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Set Inf2CatUseLocalTime will be applied to all repos - note, it didn't
apply directly to xenvkbd, as the package project files still refer to
8_x64, Server8_x64 and 8_x86, which I have removed.

Dynamically link UCRT will be applied to xenbus, xencons and xeniface

Remove the entire StartOverride key will be applied to xenbus

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


On Wed, Sep 3, 2025 at 8:21=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> wr=
ote:

> On 31/05/2025 21:46, Tu Dinh wrote:
> > Add build outputs, autogenerated files and CodeQL/SDV outputs.
> >
> > Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> > ---
> > To be applied to other repos as well.
> > ---
> Ping for this and the following:
> - [PATCH] Set Inf2CatUseLocalTime
> - [PATCH] Dynamically link UCRT into release binaries
> - [PATCH] Remove the entire StartOverride key
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000485930063de1cc18
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Set Inf2CatUseLocalTime will be applied to all repos - note, it didn&#39=
;t apply directly to xenvkbd, as the package project files still refer to 8=
_x64, Server8_x64 and 8_x86, which I have removed.</div><div class=3D"gmail=
_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail_def=
ault" style=3D"font-family:monospace">Dynamically link UCRT will be applied=
 to xenbus, xencons and xeniface<br><br></div><div class=3D"gmail_default" =
style=3D"font-family:monospace">Remove the entire StartOverride key will be=
 applied to xenbus</div><div class=3D"gmail_default" style=3D"font-family:m=
onospace"><br></div><div class=3D"gmail_default" style=3D"font-family:monos=
pace">All patches, Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith=
@cloud.com">owen.smith@cloud.com</a>&gt;</div><div class=3D"gmail_default" =
style=3D"font-family:monospace"><br></div></div><br><div class=3D"gmail_quo=
te gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Sep=
 3, 2025 at 8:21=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 31/05/2025 21=
:46, Tu Dinh wrote:<br>
&gt; Add build outputs, autogenerated files and CodeQL/SDV outputs.<br>
&gt; <br>
&gt; Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
&gt; ---<br>
&gt; To be applied to other repos as well.<br>
&gt; ---<br>
Ping for this and the following:<br>
- [PATCH] Set Inf2CatUseLocalTime<br>
- [PATCH] Dynamically link UCRT into release binaries<br>
- [PATCH] Remove the entire StartOverride key<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000485930063de1cc18--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 08:59:03 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 08:59:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1108009.1458169 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utjKZ-0007Hd-6r; Wed, 03 Sep 2025 08:59:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1108009.1458169; Wed, 03 Sep 2025 08:59: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 1utjKZ-0007HW-49; Wed, 03 Sep 2025 08:59:03 +0000
Received: by outflank-mailman (input) for mailman id 1108009;
 Wed, 03 Sep 2025 08:59:01 +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=7Vfg=3O=bounce.vates.tech=bounce-md_30504962.68b80351.v1-b41adeeee00944dbbdb31f00bb27fed4@srs-se1.protection.inumbo.net>)
 id 1utjKX-0007Gk-7R
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 08:59:01 +0000
Received: from mail180-6.suw31.mandrillapp.com
 (mail180-6.suw31.mandrillapp.com [198.2.180.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3a76b7af-88a4-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 10:58:59 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-6.suw31.mandrillapp.com (Mailchimp) with ESMTP id 4cGxNx5n89z2K2LjS
 for <win-pv-devel@lists.xenproject.org>; Wed,  3 Sep 2025 08:58:57 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 b41adeeee00944dbbdb31f00bb27fed4; Wed, 03 Sep 2025 08:58: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: 3a76b7af-88a4-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756889937; x=1757159937;
	bh=M2aH+P4hT1wGefBRsnzMF13bcaKRsquKoM/5pJRISyc=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RhDFqMvwapKB7CmDBuWT5fZ8ZFBiTUUxEjTS6t86IEK2+LUmvXwmH+Ild3YIqdtK8
	 IddsP+keOVihZBCv5R+7WCmGaDaV9xUG82zTFe9DnQPeUjmztqwaotrD1jGNtKq+mT
	 hIbV+ytPIXZuncmSrpjONgfD9a2vZ8z0/ekiz/c2ViXkmtUQQxrCJaJBwAXWOeT+QW
	 d66bLW3e68Mo4KveHuYKs2MpP85OqGCBXOONc1JAZImt/J+e/lHdNl7yGFMXGN8G0V
	 faoV0gJObshseHmUcL4r+pyAse5ax9QEusgSS61pSB/ug05Z7If1QKQVa8Lznj/Cw0
	 Rq8GFlWDc2Qyg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756889937; x=1757150437; i=ngoc-tu.dinh@vates.tech;
	bh=M2aH+P4hT1wGefBRsnzMF13bcaKRsquKoM/5pJRISyc=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ga13QbZRfGo/N3Hir2zv/Ne8ENAWdt/zFlRLFffOz7Br+Iv636wNOZo9jqLis+Dv+
	 UMVGwWLQ96FRHCwsgrD8fLIwFUuE2bcv2ekdCj4cMA/xQOWvSmT+Iish/ayP/wHbqe
	 lCCg+rMAc6XfK450MbeZNBXJC3663UNrr+Fim4PNQtCZhKFGwyC5Gl3wyXejgf2ZRZ
	 Z2NLst0GvqEWJsPTUfGDdTu7hxIVTUzCDgyETocJI7q8SJpLe595KssoblAMgoNoQO
	 ydTgmviIvHld9Zm2hG/mkJnRzMPYnjuvzuWMXnSYjPK1JBltZOMPCBXK7VW4Y1eiqr
	 s2f2nYMeJEyJw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Update=20.gitignore?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756889935990
Message-Id: <0aafd2dd-de70-4966-926d-39a799bb988d@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>
Cc: win-pv-devel@lists.xenproject.org
References: <20250531194549.2025-1-ngoc-tu.dinh@vates.tech> <529e1247-95ff-4b3b-9bbc-e0fae0366761@vates.tech> <CAC_UY89U3gQ8wPNJCauEGpxQbzd3w1CX1kGFwsc86_RmsBeYxQ@mail.gmail.com>
In-Reply-To: <CAC_UY89U3gQ8wPNJCauEGpxQbzd3w1CX1kGFwsc86_RmsBeYxQ@mail.gmail.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.b41adeeee00944dbbdb31f00bb27fed4?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250903:md
Date: Wed, 03 Sep 2025 08:58:57 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 03/09/2025 10:58, Owen Smith wrote:
> Set Inf2CatUseLocalTime will be applied to all repos - note, it didn't 
> apply directly to xenvkbd, as the package project files still refer to 
> 8_x64, Server8_x64 and 8_x86, which I have removed.
> 
> Dynamically link UCRT will be applied to xenbus, xencons and xeniface
> 
> Remove the entire StartOverride key will be applied to xenbus
> 
> All patches, Reviewed-by: Owen Smith <owen.smith@cloud.com 
> <mailto:owen.smith@cloud.com>>
> 

Thanks,

> 
> On Wed, Sep 3, 2025 at 8:21=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> =
wrote:
> 
>     On 31/05/2025 21:46, Tu Dinh wrote:
>      > Add build outputs, autogenerated files and CodeQL/SDV outputs.
>      >
>      > Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
>      > ---
>      > To be applied to other repos as well.
>      > ---
>     Ping for this and the following:
>     - [PATCH] Set Inf2CatUseLocalTime
>     - [PATCH] Dynamically link UCRT into release binaries
>     - [PATCH] Remove the entire StartOverride key
> 
> 
>     --
>     Ngoc Tu Dinh | Vates XCP-ng Developer
> 
>     XCP-ng & Xen Orchestra - Vates solutions
> 
>     web: https://vates.tech <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 Wed Sep 03 10:16:50 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 10:16:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1108051.1458183 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utkXn-0008U0-KD; Wed, 03 Sep 2025 10:16:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1108051.1458183; Wed, 03 Sep 2025 10:16:47 +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 1utkXn-0008Tt-Gv; Wed, 03 Sep 2025 10:16:47 +0000
Received: by outflank-mailman (input) for mailman id 1108051;
 Wed, 03 Sep 2025 10:16:46 +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=IrjR=3O=bounce.vates.tech=bounce-md_30504962.68b81586.v1-146651752b42462f868b625af7d81710@srs-se1.protection.inumbo.net>)
 id 1utkXm-0008R8-1d
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 10:16:46 +0000
Received: from mail180-6.suw31.mandrillapp.com
 (mail180-6.suw31.mandrillapp.com [198.2.180.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 14bf8dcb-88af-11f0-9809-7dc792cee155;
 Wed, 03 Sep 2025 12:16:40 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-6.suw31.mandrillapp.com (Mailchimp) with ESMTP id 4cGz6b0XHQz2K2GXH
 for <win-pv-devel@lists.xenproject.org>; Wed,  3 Sep 2025 10:16:39 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 146651752b42462f868b625af7d81710; Wed, 03 Sep 2025 10:16: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: 14bf8dcb-88af-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756894599; x=1757164599;
	bh=MdwcAn1IQ1eFwIpRS+ot1H6BdSqh11tDv48daQyoNHA=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:CC:Date:Subject:From;
	b=CXC5WWxMqMdZX909pgRzdOquRmb1hqTHvJjsJcKWozVZ/3wdlNXtYG/b+RdsRxBYC
	 c/oibrPm7MSctjKymPd94M6S7vPJCOtNe7t4ho/LZ0YtLC8wYdIzq/jD8a8y1I9c7o
	 57AGXHdCG4Ni8BrvYrzDujv0z3P6oq9ZDqnsDBIDbfTW1En5j+E0KR7TnTxXoa4A+K
	 HwtWGAY/7KCcckOtvqHi4foxfZA+a5WFZzICUpmAlCHvURm2I9/p9JoFBY7HZRs/D9
	 tA+KF7gVmoq2ZDJNPJSns/zaVvqOAN0QPVXTruXdf0SrlpAlUt8x5426YA1T7z4FFf
	 vog9Du3kPFhCw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756894599; x=1757155099; i=ngoc-tu.dinh@vates.tech;
	bh=MdwcAn1IQ1eFwIpRS+ot1H6BdSqh11tDv48daQyoNHA=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:CC:Date:Subject:From;
	b=UTqvYOTs5tlev0tolFFDo1Gh3nglChvfAQmJeW9z6BvTd2Ie96XIzPwnZN8iSnkRW
	 nitXY4vr8jA61O0wbod6IExNsblkhEEESBpKO6c/tjhpJdOt/swM9+wwTP98tDcCWQ
	 gUyJuxAZwL/g4AGN41bVhOK6QONIG9iZ3Qa5J+1lHB0UbZTX9kDd2JTpiJm3NKhdXa
	 PVKd/p4nlelsDg1wDNpzU4kh7YaRIeWUoLzNW3/XL+qgviKptRgkK5PChF8DgmDrMw
	 AxqcceR320S1C9NDIQnqaNX8zxpHs1WEM3wgm22W3pCwNlq8ZovCxYIJJqbX4N5rxe
	 +VGLriR73whag==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Failure=20to=20unplug=20VIF?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756894591910
Message-Id: <c51d7c85-df08-436e-ac68-fa9942d388f1@vates.tech>
To: win-pv-devel <win-pv-devel@lists.xenproject.org>
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.146651752b42462f868b625af7d81710?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250903:md
Date: Wed, 03 Sep 2025 10:16:38 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="_av-4FMvFWiGFJD6jmID3Uaigw"

--_av-4FMvFWiGFJD6jmID3Uaigw
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hello all,

I'm running into a difficult problem where unplugging a VIF causes it to 
get stuck inside the guest.

dead13.log happened when plugging a VIF immediately followed by 
unplugging it as quickly as possible. There's a specific timing needed 
to hit the bug. On my machine I managed to consistently reproduce the 
problem by mashing the VIF unplug button in Xen Orchestra.

After the unplug, both the backend xenstore path 
(/local/domain/0/backend/vif/domid) and frontend path 
(/local/domain/domid/device/vif) disappear successfully, but no further 
reconfiguration will succeed. The virtual NIC also still shows up inside 
the guest, but is stuck disabled and cannot be enabled. The transmitter 
watchdog is also still running and printing debug warnings every once in 
a while.

It looks like after IRP_MN_QUERY_REMOVE_DEVICE is issued, 
FrontendDisable never actually gets called and so the teardown gets stuck.

For reference, nodead13.log is when there's sufficient time to unplug, 
and there's no problems.

Looking for some opinion on this problem.

Thanks in advance,

--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech

--_av-4FMvFWiGFJD6jmID3Uaigw
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="dead13.log"

IyMjIGFibm9ybWFsIDEzCgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVu
dDogYzg3MCAoZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3Rv
cmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wKQp4ZW5i
dXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8w
L2JhY2tlbmQpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcz
IChkZXZpY2UvdmlmLzAvYmFja2VuZCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dh
dGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9iYWNrZW5kLWlkKQp4ZW5i
dXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8w
L2JhY2tlbmQtaWQpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvaGFu
ZGxlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2
aWNlL3ZpZi8wL2hhbmRsZSkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IGM4NzAgKGRldmljZS92aWYvMC9tYWMpCnhlbmJ1c3xTdG9yZVByb2Nl
c3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvbWFjKQp4ZW5idXN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL2Rp
c2Nvbm5lY3QpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcz
IChkZXZpY2UvdmlmLzAvZGlzY29ubmVjdCkKeGVuYnVzfFN0b3JlUHJvY2Vz
c1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9tdHUpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvbXR1
KQp4ZW5idXN8RmRvU2NhbjogYXdha2UKeGVuYnVzfEZkb0VudW1lcmF0ZTog
PT09PT4KeGVuYnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVuYnVzfEZkb1Nj
YW46IHdhaXRpbmcuLi4KeGVudmlmfF9fRmRvRW51bWVyYXRlOiA9PT09Pgp4
ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGdvdCBuZXcgZGV2aWNlIDAgZnJvbSB4
ZW5zdG9yZQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGNyZWF0aW5nIFBETyAw
OiBjMjo1YjozMzozMTo3NjplYgp4ZW52aWZ8X19QZG9TZXRQZXJtYW5lbnRB
ZGRyZXNzOiAwOiBjMjo1YjozMzozMTo3NjplYgp4ZW52aWZ8X19QZG9TZXRD
b250YWluZXJJRDogMCB7OWQ2ZTY5YjMtNDA2NS01ZWRiLWJhZWEtN2RjNTVm
M2Y4OTJlfQp4ZW52aWZ8QnVzSW5pdGlhbGl6ZTogPT09PT4KeGVudmlmfEJ1
c0luaXRpYWxpemU6IDw9PT09CnhlbnZpZnxWaWZJbml0aWFsaXplOiA9PT09
Pgp4ZW52aWZ8VmlmSW5pdGlhbGl6ZTogPD09PT0KeGVudmlmfEZyb250ZW5k
SW5pdGlhbGl6ZTogPT09PT4KeGVudmlmfEZyb250ZW5kU2V0TWF4UXVldWVz
OiBkZXZpY2UvdmlmLzA6IDQKeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAo
ZGV2aWNlX3ZpZl8wX3F1ZXVlLTBfcmVjZWl2ZXJfcGFja2V0KQp4ZW5idXN8
Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4g
KGRldmljZV92aWZfMF9xdWV1ZS0wX3JlY2VpdmVyX2ZyYWdtZW50KQp4ZW5i
dXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09
PT4gKGRldmljZV92aWZfMF9xdWV1ZS0xX3JlY2VpdmVyX3BhY2tldCkKeGVu
YnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09
PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMV9yZWNlaXZlcl9mcmFnbWVudCkK
eGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6
ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMl9yZWNlaXZlcl9wYWNrZXQp
CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRl
OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfcmVjZWl2ZXJfZnJhZ21l
bnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3Jl
YXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTNfcmVjZWl2ZXJfcGFj
a2V0KQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNy
ZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3JlY2VpdmVyX2Zy
YWdtZW50KQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF90cmFuc21pdHRlcl9wYWNr
ZXQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3Jl
YXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTBfdHJhbnNtaXR0ZXJf
YnVmZmVyKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0wX3RyYW5zbWl0
dGVyX211bHRpY2FzdF9jb250cm9sKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9
PT09CnhlbmJ1c3xSYW5nZVNldENyZWF0ZTogPT09PT4gKGRldmljZV92aWZf
MF9xdWV1ZS0wX3RyYW5zbWl0dGVyX3JlcV9pZCkKeGVuYnVzfFJhbmdlU2V0
Q3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZp
Y2VfdmlmXzBfcXVldWUtMF90cmFuc21pdHRlcl9mcmFnbWVudCkKeGVuYnVz
fENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+
IChkZXZpY2VfdmlmXzBfcXVldWUtMF90cmFuc21pdHRlcl9yZXF1ZXN0KQp4
ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTog
PT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0xX3RyYW5zbWl0dGVyX2J1ZmZl
cikKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVh
dGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMV90cmFuc21pdHRlcl9t
dWx0aWNhc3RfY29udHJvbCkKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4
ZW5idXN8UmFuZ2VTZXRDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVl
dWUtMV90cmFuc21pdHRlcl9yZXFfaWQpCnhlbmJ1c3xSYW5nZVNldENyZWF0
ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3Zp
Zl8wX3F1ZXVlLTFfdHJhbnNtaXR0ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2
aWNlX3ZpZl8wX3F1ZXVlLTFfdHJhbnNtaXR0ZXJfcmVxdWVzdCkKeGVuYnVz
fENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+
IChkZXZpY2VfdmlmXzBfcXVldWUtMl90cmFuc21pdHRlcl9idWZmZXIpCnhl
bmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRlOiA9
PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfdHJhbnNtaXR0ZXJfbXVsdGlj
YXN0X2NvbnRyb2wpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVz
fFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJf
dHJhbnNtaXR0ZXJfcmVxX2lkKQp4ZW5idXN8UmFuZ2VTZXRDcmVhdGU6IDw9
PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9x
dWV1ZS0yX3RyYW5zbWl0dGVyX2ZyYWdtZW50KQp4ZW5idXN8Q2FjaGVDcmVh
dGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92
aWZfMF9xdWV1ZS0yX3RyYW5zbWl0dGVyX3JlcXVlc3QpCnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2
aWNlX3ZpZl8wX3F1ZXVlLTNfdHJhbnNtaXR0ZXJfYnVmZmVyKQp4ZW5idXN8
Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4g
KGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0dGVyX211bHRpY2FzdF9j
b250cm9sKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xSYW5n
ZVNldENyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5z
bWl0dGVyX3JlcV9pZCkKeGVuYnVzfFJhbmdlU2V0Q3JlYXRlOiA8PT09PQp4
ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUt
M190cmFuc21pdHRlcl9mcmFnbWVudCkKeGVuYnVzfENhY2hlQ3JlYXRlOiA8
PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBf
cXVldWUtM190cmFuc21pdHRlcl9yZXF1ZXN0KQp4ZW5idXN8Q2FjaGVDcmVh
dGU6IDw9PT09CnhlbnZpZnxGcm9udGVuZEluaXRpYWxpemU6IDw9PT09Cnhl
bnZpZnxGcm9udGVuZFJlc3VtZTogPT09PT4KeGVudmlmfEZyb250ZW5kU2V0
U3RhdGU6IGRldmljZS92aWYvMDogPT09PT4gJ1VOS05PV04nIC0+ICdDTE9T
RUQnCnhlbnZpZnxGcm9udGVuZFByZXBhcmU6ID09PT0+CnhlbnZpZnxGcm9u
dGVuZFNldE9ubGluZTogPT09PT4KeGVudmlmfEZyb250ZW5kU2V0T25saW5l
OiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRBY3F1aXJlQmFja2VuZDogPT09PT0+
CnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFu
Z2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA9PT09PiBV
bmtub3duCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODkyICgv
bG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMC9zdGF0ZSkKeGVudmlm
fEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6IDw9PT09IChJbml0V2Fp
dCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OTMgKC9sb2Nh
bC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL29ubGluZSkKeGVudmlmfEZy
b250ZW5kUHJlcGFyZTogPD09PT0KeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6
IGRldmljZS92aWYvMCBpbiBzdGF0ZSAnUFJFUEFSRUQnCnhlbnZpZnxGcm9u
dGVuZENsb3NlOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2Vu
ZFhlbmJ1c1N0YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92
aWYvOTgvMDogPT09PT4gVW5rbm93bgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg5NCAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4
LzAvc3RhdGUpCnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVz
U3RhdGVDaGFuZ2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8w
OiA8PT09PSAoSW5pdFdhaXQpCnhlbnZpZnxGcm9udGVuZFNldFhlbmJ1c1N0
YXRlOiBkZXZpY2UvdmlmLzA6ID09PT0+IENsb3NpbmcKeGVudmlmfEZyb250
ZW5kU2V0WGVuYnVzU3RhdGU6IGRldmljZS92aWYvMDogPD09PT0gQ2xvc2lu
Zwp4ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hh
bmdlOiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDogPT09PT4g
SW5pdFdhaXQKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAg
KGRldmljZS92aWYvMC9zdGF0ZSkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNo
RXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9zdGF0ZSkKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OTUgKC9sb2NhbC9kb21haW4vMC9iYWNr
ZW5kL3ZpZi85OC8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogYzg5NSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAv
c3RhdGUpCnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3Rh
dGVDaGFuZ2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA8
PT09PSAoQ2xvc2luZykKeGVudmlmfEZyb250ZW5kU2V0WGVuYnVzU3RhdGU6
IGRldmljZS92aWYvMDogPT09PT4gQ2xvc2VkCnhlbnZpZnxGcm9udGVuZFNl
dFhlbmJ1c1N0YXRlOiBkZXZpY2UvdmlmLzA6IDw9PT09IENsb3NlZAp4ZW52
aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAv
bG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDogPT09PT4gQ2xvc2lu
Zwp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNl
L3ZpZi8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MyAoZGV2aWNlL3ZpZi8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNz
V2F0Y2hFdmVudDogYzg5NiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlm
Lzk4LzAvc3RhdGUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODk2ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMC9zdGF0ZSkK
eGVudmlmfEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5n
ZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6IDw9PT09IChD
bG9zZWQpCnhlbnZpZnxGcm9udGVuZFJlbGVhc2VCYWNrZW5kOiA9PT09PT4K
eGVudmlmfEZyb250ZW5kUmVsZWFzZUJhY2tlbmQ6IDw9PT09PQp4ZW52aWZ8
RnJvbnRlbmRDbG9zZTogPD09PT0KeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6
IGRldmljZS92aWYvMCBpbiBzdGF0ZSAnQ0xPU0VEJwp4ZW52aWZ8RnJvbnRl
bmRTZXRTdGF0ZTogZGV2aWNlL3ZpZi8wOiA8PT09PT0KeGVudmlmfEZyb250
ZW5kUmVzdW1lOiB3YWl0aW5nIGZvciBlamVjdCB0aHJlYWQKeGVudmlmfFZp
Zk1hYzogPT09PT4KeGVudmlmfFJlY2VpdmVyUmluZ1dhdGNoZG9nOiA9PT09
Pgp4ZW52aWZ8UmVjZWl2ZXJSaW5nV2F0Y2hkb2c6ID09PT0+CnhlbnZpZnxS
ZWNlaXZlclJpbmdXYXRjaGRvZzogPT09PT4KeGVudmlmfFRyYW5zbWl0dGVy
UmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW52aWZ8UmVjZWl2ZXJSaW5nV2F0Y2hk
b2c6ID09PT0+CnhlbnZpZnxUcmFuc21pdHRlclJpbmdXYXRjaGRvZzogPT09
PT4KeGVudmlmfFRyYW5zbWl0dGVyUmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW52
aWZ8RnJvbnRlbmRFamVjdDogZGV2aWNlL3ZpZi8wOiA9PT09Pgp4ZW52aWZ8
VHJhbnNtaXR0ZXJSaW5nV2F0Y2hkb2c6ID09PT0+CnhlbnZpZnxGcm9udGVu
ZE1pYjogPT09PT4KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPT09
PT4KeGVudmlmfF9fTGlua0dldEltYWdlQmFzZTogPT09PT4KeGVudmlmfF9f
TGlua0dldEltYWdlQmFzZTogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0aW5l
QWRkcmVzczogbmV0aW8uc3lzOkdldElmVGFibGUyICgwMDQ3KSBAIEZGRkZG
ODA2NkJDQkZCOTAKeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPD09
PT0KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPT09PT4KeGVudmlm
fF9fTGlua0dldEltYWdlQmFzZTogPT09PT4KeGVudmlmfF9fTGlua0dldElt
YWdlQmFzZTogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczog
bmV0aW8uc3lzOk5vdGlmeVVuaWNhc3RJcEFkZHJlc3NDaGFuZ2UgKDAxOEMp
IEAgRkZGRkY4MDY2QkNDODRCMAp4ZW52aWZ8TGlua0dldFJvdXRpbmVBZGRy
ZXNzOiA8PT09PQp4ZW52aWZ8TGlua0dldFJvdXRpbmVBZGRyZXNzOiA9PT09
Pgp4ZW52aWZ8X19MaW5rR2V0SW1hZ2VCYXNlOiA9PT09Pgp4ZW52aWZ8X19M
aW5rR2V0SW1hZ2VCYXNlOiA8PT09PQp4ZW52aWZ8TGlua0dldFJvdXRpbmVB
ZGRyZXNzOiBuZXRpby5zeXM6R2V0VW5pY2FzdElwQWRkcmVzc1RhYmxlICgw
MDVCKSBAIEZGRkZGODA2NkJDQkZCQjAKeGVudmlmfExpbmtHZXRSb3V0aW5l
QWRkcmVzczogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczog
PT09PT4KeGVudmlmfF9fTGlua0dldEltYWdlQmFzZTogPT09PT4KeGVudmlm
fF9fTGlua0dldEltYWdlQmFzZTogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0
aW5lQWRkcmVzczogbmV0aW8uc3lzOkZyZWVNaWJUYWJsZSAoMDAzMSkgQCBG
RkZGRjgwNjZCQ0JCRDYwCnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6
IDw9PT09CnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6ID09PT0+Cnhl
bnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6ID09PT0+CnhlbnZpZnxfX0xpbmtH
ZXRJbWFnZUJhc2U6IDw9PT09CnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJl
c3M6IG5ldGlvLnN5czpDYW5jZWxNaWJDaGFuZ2VOb3RpZnkyICgwMDAzKSBA
IEZGRkZGODA2NkJDRTFBODAKeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVz
czogPD09PT0KeGVuYnVzfEZkb1NjYW46IGF3YWtlCnhlbmJ1c3xGZG9FbnVt
ZXJhdGU6ID09PT0+CnhlbmJ1c3xGZG9FbnVtZXJhdGU6IDw9PT09CnhlbmJ1
c3xGZG9TY2FuOiB3YWl0aW5nLi4uCnhlbnZpZnxGcm9udGVuZFJlc3VtZTog
PD09PT0KeGVudmlmfFBkb0NyZWF0ZTogRkZGRkREOERENEFBMUE3MCAoMCkK
eGVudmlmfFBkb0R1bXBSZXZpc2lvbnM6IDA5MDAwMDAxIC0+IENBQ0hFIHYy
IFZJRiB2OCBTVE9SRSB2MiBTVVNQRU5EIHYxVU5QTFVHIHYxCnhlbnZpZnxQ
ZG9EdW1wUmV2aXNpb25zOiAwOTAwMDAwMiAtPiBDQUNIRSB2MiBWSUYgdjkg
U1RPUkUgdjIgU1VTUEVORCB2MVVOUExVRyB2MQp4ZW52aWZ8UGRvRHVtcFJl
dmlzaW9uczogMDkwMDAwMDMgLT4gQ0FDSEUgdjIgVklGIHYxMCBTVE9SRSB2
MiBTVVNQRU5EIHYxVU5QTFVHIHYxCnhlbnZpZnxQZG9EdW1wUmV2aXNpb25z
OiAwOTAwMDAwNCAtPiBDQUNIRSB2MiBWSUYgdjEwIFNUT1JFIHYyIFNVU1BF
TkQgdjFVTlBMVUcgdjIKeGVudmlmfFBkb0R1bXBSZXZpc2lvbnM6IDA5MDAw
MDA1IC0+IENBQ0hFIHYyIFZJRiB2MTAgU1RPUkUgdjIgU1VTUEVORCB2MVVO
UExVRyB2Mwp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IDw9PT09CnhlbnZpZnxG
ZG9TY2FuOiBpbnZhbGlkYXRpbmcgWE5DMDAwIFhFTlZJRgp4ZW52aWZ8RmRv
U2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4ZW52aWZ8RmRvUXVlcnlE
ZXZpY2VSZWxhdGlvbnM6IHdhaXRpbmcgZm9yIHNjYW4gdGhyZWFkCnhlbnZp
ZnxfX0Zkb0VudW1lcmF0ZTogPT09PT4KeGVudmlmfF9fRmRvRW51bWVyYXRl
OiBleGFtaW5pbmcgUERPIEZGRkZERDhERDM3ODREQTA6IFBOUCBzdGF0ZSBQ
cmVzZW50CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkZERDhERDM3
ODREQTAgKDApIGlzIHByZXNlbnQgaW4geGVuc3RvcmUgbGlzdAp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IFBETyBGRkZGREQ4REQzNzg0REEwIFBkb0lzTWlz
c2luZz0wIFBkb0lzRWplY3RSZXF1ZXN0ZWQ9MAp4ZW52aWZ8X19GZG9FbnVt
ZXJhdGU6IGdvdCBuZXcgZGV2aWNlIDAgZnJvbSB4ZW5zdG9yZQp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IDw9PT09CnhlbnZpZnxGZG9TY2FuOiB3YWl0aW5n
Li4uCnhlbnZpZnxfX1Bkb1NldERldmljZVBucFN0YXRlOiBzZXR0aW5nIFBE
TyBGRkZGREQ4REQzNzg0REEwOiBQTlAgc3RhdGUgUHJlc2VudCAtPiBFbnVt
ZXJhdGVkCnhlbnZpZnxGZG9RdWVyeURldmljZVJlbGF0aW9uczogMSBQRE8o
cykKeGVuYnVzfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVW
SUNFX1JFTEFUSU9OUykKeGVuYnVzfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAo
MDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAwMDApCnhlbnZpZnxG
ZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseTogMDAwMDAwMDAKeGVudmlmfEZk
b0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9O
UykoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDAp
ICgxMzpRVUVSWV9JRCkKeGVudmlmfFBkb1F1ZXJ5SWQ6IEJ1c1F1ZXJ5RGV2
aWNlSUQKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTiZERVZf
TkVUCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lE
KSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkg
KDA5OlFVRVJZX0NBUEFCSUxJVElFUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKSgwMDAwMDAwMCkKeGVu
dmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA4OlFVRVJZX0lOVEVS
RkFDRSkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllf
SU5URVJGQUNFKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMCkgKDBjOlFVRVJZX0RFVklDRV9URVhUKQp4ZW52aWZ8UGRvUXVl
cnlEZXZpY2VUZXh0OiBEZXZpY2VUZXh0RGVzY3JpcHRpb24KeGVudmlmfFBk
b1F1ZXJ5RGV2aWNlVGV4dDogMDogWE5DMDAwIFhFTlZJRiAwCnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDBjOlFVRVJZX0RFVklDRV9URVhUKSgw
MDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDBj
OlFVRVJZX0RFVklDRV9URVhUKQp4ZW52aWZ8UGRvUXVlcnlEZXZpY2VUZXh0
OiBEZXZpY2VUZXh0TG9jYXRpb25JbmZvcm1hdGlvbgp4ZW52aWZ8UGRvUXVl
cnlEZXZpY2VUZXh0OiAwOiAwCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09
PT0gKDBjOlFVRVJZX0RFVklDRV9URVhUKSgwMDAwMDAwMCkKeGVudmlmfFBk
b0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDEzOlFVRVJZX0lEKQp4ZW52aWZ8
UGRvUXVlcnlJZDogQnVzUXVlcnlJbnN0YW5jZUlECnhlbnZpZnxQZG9RdWVy
eUlkOiAtIDAKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVF
UllfSUQpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwKSAoMTM6UVVFUllfSUQpCnhlbnZpZnxQZG9RdWVyeUlkOiBCdXNRdWVy
eUhhcmR3YXJlSURzCnhlbnZpZnxQZG9RdWVyeUlkOiAtIFhFTlZJRlxWRU5f
WE5DMDAwJkRFVl9ORVQmUkVWXzA5MDAwMDA1CnhlbnZpZnxQZG9RdWVyeUlk
OiAtIFhFTlZJRlxWRU5fWE5DMDAwJkRFVl9ORVQmUkVWXzA5MDAwMDA0Cnhl
bnZpZnxQZG9RdWVyeUlkOiAtIFhFTlZJRlxWRU5fWE5DMDAwJkRFVl9ORVQm
UkVWXzA5MDAwMDAzCnhlbnZpZnxQZG9RdWVyeUlkOiAtIFhFTlZJRlxWRU5f
WE5DMDAwJkRFVl9ORVQmUkVWXzA5MDAwMDAyCnhlbnZpZnxQZG9RdWVyeUlk
OiAtIFhFTlZJRlxWRU5fWE5DMDAwJkRFVl9ORVQmUkVWXzA5MDAwMDAxCnhl
bnZpZnxQZG9RdWVyeUlkOiAtIFhFTkRFVklDRQp4ZW52aWZ8UGRvRGlzcGF0
Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDApCnhlbnZpZnxf
X0Zkb0VudW1lcmF0ZTogPT09PT4KeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMCkgKDEzOlFVRVJZX0lEKQp4ZW52aWZ8UGRvUXVlcnlJZDogQnVz
UXVlcnlDb21wYXRpYmxlSURzCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZXhh
bWluaW5nIFBETyBGRkZGREQ4REQzNzg0REEwOiBQTlAgc3RhdGUgRW51bWVy
YXRlZAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IFBETyBGRkZGREQ4REQzNzg0
REEwICgwKSBpcyBwcmVzZW50IGluIHhlbnN0b3JlIGxpc3QKeGVudmlmfFBk
b1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTkMwMDAmREVWX05FVCZSRVZfMDkw
MDAwMDUKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBQRE8gRkZGRkREOEREMzc4
NERBMCBQZG9Jc01pc3Npbmc9MCBQZG9Jc0VqZWN0UmVxdWVzdGVkPTAKeGVu
dmlmfF9fRmRvRW51bWVyYXRlOiBnb3QgbmV3IGRldmljZSAwIGZyb20geGVu
c3RvcmUKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTkMwMDAm
REVWX05FVCZSRVZfMDkwMDAwMDQKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA8
PT09PQp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5WSUZcVkVOX1hOQzAwMCZE
RVZfTkVUJlJFVl8wOTAwMDAwMwp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5W
SUZcVkVOX1hOQzAwMCZERVZfTkVUJlJFVl8wOTAwMDAwMgp4ZW52aWZ8UGRv
UXVlcnlJZDogLSBYRU5WSUZcVkVOX1hOQzAwMCZERVZfTkVUJlJFVl8wOTAw
MDAwMQp4ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8UGRvUXVl
cnlJZDogLSBYRU5ERVZJQ0UKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQ
bnA6ID09PT0+ICgwKSAoMTM6UVVFUllfSUQpCnhlbnZpZnxQZG9RdWVyeUlk
OiBCdXNRdWVyeUNvbnRhaW5lcklECnhlbnZpZnxQZG9RdWVyeUlkOiAtIHs5
ZDZlNjliMy00MDY1LTVlZGItYmFlYS03ZGM1NWYzZjg5MmV9CnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAwMCkK
eGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA4OlFVRVJZX0lO
VEVSRkFDRSkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVF
UllfSU5URVJGQUNFKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA9PT09PiAoMCkgKDE1OlFVRVJZX0JVU19JTkZPUk1BVElPTikKeGVudmlm
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTU6UVVFUllfQlVTX0lORk9STUFU
SU9OKSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MCkgKDA4OlFVRVJZX0lOVEVSRkFDRSkKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikKeGVudmlm
fFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDBiOlFVRVJZX1JFU09VUkNF
X1JFUVVJUkVNRU5UUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAo
MGI6UVVFUllfUkVTT1VSQ0VfUkVRVUlSRU1FTlRTKShjMDAwMDBiYikKeGVu
dmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDBhOlFVRVJZX1JFU09V
UkNFUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGE6UVVFUllf
UkVTT1VSQ0VTKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9
PT09PiAoMCkgKDE5OlVOS05PV04pCnhlbnZpZnxQZG9EaXNwYXRjaFBucDog
PD09PT0gKDE5OlVOS05PV04pKGMwMDAwMGJiKQpEcml2ZXIgVmVyaWZpZXI6
IEFwcGxpZWQgZm9yIHhlbm5ldC5zeXMsIDA6MHgxYTY5YmIsIDE6MHhhLCBi
dWlsZCAyMDM0OCwga2V5IERsaGpjdll6bG1mU3pyWDBwNWFBR0IKeGVufE1v
ZHVsZUFkZDogRkZGRkY4MDZCMDAzMDAwMCAtIEZGRkZGODA2QjAwNDhGRkYg
W3hlbm5ldC5zeXNdCnhlbm5ldHxEcml2ZXJFbnRyeTogWEVOTkVUIDkuMC45
MTI1ICgxMTcxMikgKDI3LjA4LjIwMjUpCnhlbnZpZnxQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDApICgxODpRVUVSWV9MRUdBQ1lfQlVTX0lORk9STUFUSU9O
KQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxODpRVUVSWV9MRUdB
Q1lfQlVTX0lORk9STUFUSU9OKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3Bh
dGNoUG5wOiA9PT09PiAoMCkgKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVN
RU5UUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMGI6UVVFUllf
UkVTT1VSQ0VfUkVRVUlSRU1FTlRTKShjMDAwMDBiYikKeGVudmlmfFBkb0Rp
c3BhdGNoUG5wOiA9PT09PiAoMCkgKDBkOkZJTFRFUl9SRVNPVVJDRV9SRVFV
SVJFTUVOVFMpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDBkOkZJ
TFRFUl9SRVNPVVJDRV9SRVFVSVJFTUVOVFMpKGMwMDAwMGJiKQp4ZW52aWZ8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDA6U1RBUlRfREVWSUNFKQp4
ZW52aWZ8UGRvU2V0RnJpZW5kbHlOYW1lOiAwOiBYQ1AtbmcgUFYgTmV0d29y
ayBEZXZpY2UgIzAKeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPT09
PT4KeGVudmlmfF9fTGlua0dldEltYWdlQmFzZTogPT09PT4KeGVudmlmfF9f
TGlua0dldEltYWdlQmFzZTogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0aW5l
QWRkcmVzczogbmV0aW8uc3lzOkdldElmVGFibGUyICgwMDQ3KSBAIEZGRkZG
ODA2NkJDQkZCOTAKeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPD09
PT0KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPT09PT4KeGVudmlm
fF9fTGlua0dldEltYWdlQmFzZTogPT09PT4KeGVudmlmfF9fTGlua0dldElt
YWdlQmFzZTogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczog
bmV0aW8uc3lzOkZyZWVNaWJUYWJsZSAoMDAzMSkgQCBGRkZGRjgwNjZCQ0JC
RDYwCnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6IDw9PT09CnhlbnZp
ZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENv
bm5lY3Rpb24qIDctV0ZQIE5hdGl2ZSBNQUMgTGF5ZXIgTGlnaHRXZWlnaHQg
RmlsdGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAoSVApLVdGUCBOYXRpdmUgTUFD
IExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwKQp4ZW52aWZ8UGRvUGFy
c2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9u
KiA3LVFvUyBQYWNrZXQgU2NoZWR1bGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAo
SVApLVFvUyBQYWNrZXQgU2NoZWR1bGVyLTAwMDApCnhlbnZpZnxQZG9QYXJz
ZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24q
IDgtV0ZQIE5hdGl2ZSBNQUMgTGF5ZXIgTGlnaHRXZWlnaHQgRmlsdGVyLTAw
MDAgKFdBTiBNaW5pcG9ydCAoSVB2NiktV0ZQIE5hdGl2ZSBNQUMgTGF5ZXIg
TGlnaHRXZWlnaHQgRmlsdGVyLTAwMDApCnhlbnZpZnxQZG9QYXJzZU1pYlRh
YmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDgtUW9T
IFBhY2tldCBTY2hlZHVsZXItMDAwMCAoV0FOIE1pbmlwb3J0IChJUHY2KS1R
b1MgUGFja2V0IFNjaGVkdWxlci0wMDAwKQp4ZW52aWZ8UGRvUGFyc2VNaWJU
YWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA5LVdG
UCBOYXRpdmUgTUFDIExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwIChX
QU4gTWluaXBvcnQgKE5ldHdvcmsgTW9uaXRvciktV0ZQIE5hdGl2ZSBNQUMg
TGF5ZXIgTGlnaHRXZWlnaHQgRmlsdGVyLTAKMDAwKQp4ZW52aWZ8UGRvUGFy
c2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9u
KiA5LVFvUyBQYWNrZXQgU2NoZWR1bGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAo
TmV0d29yayBNb25pdG9yKS1Rb1MgUGFja2V0IFNjaGVkdWxlci0wMDAwKQp4
ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgRXRoZXJuZXQg
KEtlcm5lbCBEZWJ1Z2dlcikgKE1pY3Jvc29mdCBLZXJuZWwgRGVidWcgTmV0
d29yayBBZGFwdGVyKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hF
Q0tJTkcgRXRoZXJuZXQgKEludGVsKFIpIFBSTy8xMDAwIE1UIE5ldHdvcmsg
Q29ubmVjdGlvbikKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNL
SU5HIExvY2FsIEFyZWEgQ29ubmVjdGlvbiogNyAoV0FOIE1pbmlwb3J0IChJ
UCkpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2Nh
bCBBcmVhIENvbm5lY3Rpb24qIDggKFdBTiBNaW5pcG9ydCAoSVB2NikpCnhl
bnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVh
IENvbm5lY3Rpb24qIDkgKFdBTiBNaW5pcG9ydCAoTmV0d29yayBNb25pdG9y
KSkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0aGVy
bmV0IDIgKEludGVsKFIpIFBSTy8xMDAwIE1UIE5ldHdvcmsgQ29ubmVjdGlv
biAjMikKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0
aGVybmV0IDMgKFhDUC1uZyBQViBOZXR3b3JrIERldmljZSAjMCkKeGVudmlm
fFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0aGVybmV0IDQgKFhD
UC1uZyBQViBOZXR3b3JrIERldmljZSAjMikKeGVudmlmfFBkb1BhcnNlTWli
VGFibGU6IDA6IENIRUNLSU5HIExvY2FsIEFyZWEgQ29ubmVjdGlvbiogNSAo
V0FOIE1pbmlwb3J0IChQUFBPRSkpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxl
OiAwOiBDSEVDS0lORyBMb29wYmFjayBQc2V1ZG8tSW50ZXJmYWNlIDEgKFNv
ZnR3YXJlIExvb3BiYWNrIEludGVyZmFjZSAxKQp4ZW52aWZ8UGRvUGFyc2VN
aWJUYWJsZTogMDogQ0hFQ0tJTkcgVGVyZWRvIFR1bm5lbGluZyBQc2V1ZG8t
SW50ZXJmYWNlIChNaWNyb3NvZnQgVGVyZWRvIFR1bm5lbGluZyBBZGFwdGVy
KQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTWljcm9z
b2Z0IElQLUhUVFBTIFBsYXRmb3JtIEludGVyZmFjZSAoTWljcm9zb2Z0IElQ
LUhUVFBTIFBsYXRmb3JtIEFkYXB0ZXIpCnhlbnZpZnxQZG9QYXJzZU1pYlRh
YmxlOiAwOiBDSEVDS0lORyA2dG80IEFkYXB0ZXIgKE1pY3Jvc29mdCA2dG80
IEFkYXB0ZXIpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lO
RyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDEgKFdBTiBNaW5pcG9ydCAoU1NU
UCkpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2Nh
bCBBcmVhIENvbm5lY3Rpb24qIDIgKFdBTiBNaW5pcG9ydCAoSUtFdjIpKQp4
ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJl
YSBDb25uZWN0aW9uKiAzIChXQU4gTWluaXBvcnQgKEwyVFApKQp4ZW52aWZ8
UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25u
ZWN0aW9uKiA0IChXQU4gTWluaXBvcnQgKFBQVFApKQp4ZW52aWZ8UGRvUGFy
c2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9u
KiA2IChXQU4gTWluaXBvcnQgKEdSRSkpCnhlbnZpZnxQZG9QYXJzZU1pYlRh
YmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDctV0ZQ
IE5hdGl2ZSBNQUMgTGF5ZXIgTGlnaHRXZWlnaHQgRmlsdGVyLTAwMDAgKFdB
TiBNaW5pcG9ydCAoSVApLVdGUCBOYXRpdmUgTUFDIExheWVyIExpZ2h0V2Vp
Z2h0IEZpbHRlci0wMDAwKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDog
Q0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA3LVFvUyBQYWNrZXQg
U2NoZWR1bGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAoSVApLVFvUyBQYWNrZXQg
U2NoZWR1bGVyLTAwMDApCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBD
SEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDgtV0ZQIE5hdGl2ZSBN
QUMgTGF5ZXIgTGlnaHRXZWlnaHQgRmlsdGVyLTAwMDAgKFdBTiBNaW5pcG9y
dCAoSVB2NiktV0ZQIE5hdGl2ZSBNQUMgTGF5ZXIgTGlnaHRXZWlnaHQgRmls
dGVyLTAwMDApCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lO
RyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDgtUW9TIFBhY2tldCBTY2hlZHVs
ZXItMDAwMCAoV0FOIE1pbmlwb3J0IChJUHY2KS1Rb1MgUGFja2V0IFNjaGVk
dWxlci0wMDAwKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJ
TkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA5LVdGUCBOYXRpdmUgTUFDIExh
eWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwIChXQU4gTWluaXBvcnQgKE5l
dHdvcmsgTW9uaXRvciktV0ZQIE5hdGl2ZSBNQUMgTGF5ZXIgTGlnaHRXZWln
aHQgRmlsdGVyLTAKMDAwKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDog
Q0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA5LVFvUyBQYWNrZXQg
U2NoZWR1bGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAoTmV0d29yayBNb25pdG9y
KS1Rb1MgUGFja2V0IFNjaGVkdWxlci0wMDAwKQp4ZW52aWZ8UGRvUGFyc2VN
aWJUYWJsZTogMDogQ0hFQ0tJTkcgRXRoZXJuZXQgKEtlcm5lbCBEZWJ1Z2dl
cikgKE1pY3Jvc29mdCBLZXJuZWwgRGVidWcgTmV0d29yayBBZGFwdGVyKQp4
ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgRXRoZXJuZXQg
KEludGVsKFIpIFBSTy8xMDAwIE1UIE5ldHdvcmsgQ29ubmVjdGlvbikKeGVu
dmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIExvY2FsIEFyZWEg
Q29ubmVjdGlvbiogNyAoV0FOIE1pbmlwb3J0IChJUCkpCnhlbnZpZnxQZG9Q
YXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rp
b24qIDggKFdBTiBNaW5pcG9ydCAoSVB2NikpCnhlbnZpZnxQZG9QYXJzZU1p
YlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDkg
KFdBTiBNaW5pcG9ydCAoTmV0d29yayBNb25pdG9yKSkKeGVudmlmfFBkb1Bh
cnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0aGVybmV0IDIgKEludGVsKFIp
IFBSTy8xMDAwIE1UIE5ldHdvcmsgQ29ubmVjdGlvbiAjMikKeGVudmlmfFBk
b1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0aGVybmV0IDMgKFhDUC1u
ZyBQViBOZXR3b3JrIERldmljZSAjMCkKeGVudmlmfFNldHRpbmdzUmVzdG9y
ZTogMDogU2V0dGluZ3NDb3B5IG5vdCByZXF1aXJlZCBmb3IgWENQLW5nIFBW
IE5ldHdvcmsgRGV2aWNlICMwCnhlbmJ1c3xVbnBsdWdBY3F1aXJlOiA8PT09
Pgp4ZW5idXN8VW5wbHVnUmVsZWFzZTogPD09PT4KeGVudmlmfF9fUGRvRDNU
b0QwOiAoMCkgPT09PT4KeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmlj
ZS92aWYvMDogPT09PT4gJ0NMT1NFRCcgLT4gJ0NPTk5FQ1RFRCcKeGVudmlm
fEZyb250ZW5kUHJlcGFyZTogPT09PT4KeGVudmlmfEZyb250ZW5kU2V0T25s
aW5lOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRTZXRPbmxpbmU6IDw9PT09Cnhl
bnZpZnxGcm9udGVuZEFjcXVpcmVCYWNrZW5kOiA9PT09PT4KeGVudmlmfEZy
b250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2Fs
L2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6ID09PT0+IFVua25vd24KeGVu
YnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OTcgKC9sb2NhbC9kb21h
aW4vMC9iYWNrZW5kL3ZpZi85OC8wL3N0YXRlKQp4ZW52aWZ8RnJvbnRlbmRX
YWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92aWYvOTgvMDogPD09PT0gKENsb3NlZCkKeGVudmlmfEZy
b250ZW5kU2V0WGVuYnVzU3RhdGU6IGRldmljZS92aWYvMDogPT09PT4gSW5p
dGlhbGlzaW5nCnhlbnZpZnxGcm9udGVuZFNldFhlbmJ1c1N0YXRlOiBkZXZp
Y2UvdmlmLzA6IDw9PT09IEluaXRpYWxpc2luZwp4ZW52aWZ8RnJvbnRlbmRX
YWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92aWYvOTgvMDogPT09PT4gQ2xvc2VkCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvc3RhdGUp
CnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2Uv
dmlmLzAvc3RhdGUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODk4ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMC9zdGF0ZSkK
eGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OTggKC9sb2NhbC9k
b21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL3N0YXRlKQp4ZW5idXN8RmRvU2Nh
bjogYXdha2UKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA9PT09Pgp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IGV4YW1pbmluZyBQRE8gRkZGRkREOEREMzc4NERB
MDogUE5QIHN0YXRlIEVudW1lcmF0ZWQKeGVudmlmfF9fRmRvRW51bWVyYXRl
OiBQRE8gRkZGRkREOEREMzc4NERBMCAoMCkgaXMgcHJlc2VudCBpbiB4ZW5z
dG9yZSBsaXN0CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkZERDhE
RDM3ODREQTAgUGRvSXNNaXNzaW5nPTAgUGRvSXNFamVjdFJlcXVlc3RlZD0w
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZpY2UgMCBmcm9t
IHhlbnN0b3JlCnhlbmJ1c3xGZG9FbnVtZXJhdGU6ID09PT0+CnhlbnZpZnxf
X0Zkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfEZyb250ZW5kV2FpdEZvckJh
Y2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tl
bmQvdmlmLzk4LzA6IDw9PT09IChJbml0V2FpdCkKeGVudmlmfEZkb1NjYW46
IHdhaXRpbmcuLi4KeGVuYnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVudmlm
fEZyb250ZW5kUHJlcGFyZTogPD09PT0KeGVudmlmfEZyb250ZW5kU2V0U3Rh
dGU6IGRldmljZS92aWYvMCBpbiBzdGF0ZSAnUFJFUEFSRUQnCnhlbnZpZnxG
cm9udGVuZENvbm5lY3Q6ID09PT0+CnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiBjODk5ICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgv
MC9vbmxpbmUpCnhlbnZpZnxfX01hY1NldFBlcm1hbmVudEFkZHJlc3M6IGF0
dHIvdmlmLzA6IEMyOjVCOjMzOjMxOjc2OkVCCnhlbnZpZnxfX01hY1NldEN1
cnJlbnRBZGRyZXNzOiBhdHRyL3ZpZi8wOiBDMjo1QjozMzozMTo3NjpFQgp4
ZW5idXN8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8RnJvbnRlbmRTZXRO
dW1RdWV1ZXM6IGRldmljZS92aWYvMDogNAp4ZW52aWZ8RnJvbnRlbmRTZXRT
cGxpdDogZGV2aWNlL3ZpZi8wOiBUUlVFCnhlbnZpZnxSZWNlaXZlckNvbm5l
Y3Q6ID09PT0+CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92
aWZfMF9xdWV1ZS0wX3JlY2VpdmVyX2dudHRhYikKeGVuYnVzfENhY2hlQ3Jl
YXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2huT3BlbjogMTcKeGVuYnVzfENhY2hl
Q3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfcmVjZWl2ZXJf
Z250dGFiKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xFdnRj
aG5PcGVuOiAxOAp4ZW5idXN8RXZ0Y2huQmluZDogWzE4XTogQ1BVIDA6MQp4
ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUt
Ml9yZWNlaXZlcl9nbnR0YWIpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0K
eGVuYnVzfEV2dGNobk9wZW46IDE5CnhlbmJ1c3xFdnRjaG5CaW5kOiBbMTld
OiBDUFUgMDoyCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92
aWZfMF9xdWV1ZS0zX3JlY2VpdmVyX2dudHRhYikKeGVuYnVzfENhY2hlQ3Jl
YXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2huT3BlbjogMjAKeGVuYnVzfEV2dGNo
bkJpbmQ6IFsyMF06IENQVSAwOjMKeGVudmlmfFJlY2VpdmVyQ29ubmVjdDog
PD09PT0KeGVudmlmfFRyYW5zbWl0dGVyQ29ubmVjdDogPT09PT4KeGVuYnVz
fENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTBfdHJh
bnNtaXR0ZXJfZ250dGFiKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09Cnhl
bmJ1c3xFdnRjaG5PcGVuOiAyMQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+
IChkZXZpY2VfdmlmXzBfcXVldWUtMV90cmFuc21pdHRlcl9nbnR0YWIpCnhl
bmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfEV2dGNobk9wZW46IDIy
CnhlbmJ1c3xFdnRjaG5CaW5kOiBbMjJdOiBDUFUgMDoxCnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0yX3RyYW5zbWl0
dGVyX2dudHRhYikKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8
RXZ0Y2huT3BlbjogMjMKeGVuYnVzfEV2dGNobkJpbmQ6IFsyM106IENQVSAw
OjIKeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1
ZXVlLTNfdHJhbnNtaXR0ZXJfZ250dGFiKQp4ZW5idXN8Q2FjaGVDcmVhdGU6
IDw9PT09CnhlbmJ1c3xFdnRjaG5PcGVuOiAyNAp4ZW5idXN8RXZ0Y2huQmlu
ZDogWzI0XTogQ1BVIDA6Mwp4ZW52aWZ8VHJhbnNtaXR0ZXJDb25uZWN0OiA8
PT09PQp4ZW52aWZ8Q29udHJvbGxlckNvbm5lY3Q6ID09PT0+CnhlbmJ1c3xD
YWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9jb250cm9sbGVyX2du
dHRhYikKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2hu
T3BlbjogMjUKeGVudmlmfENvbnRyb2xsZXJDb25uZWN0OiA8PT09PQp4ZW5i
dXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8w
L3JlcXVlc3QtcngtY29weSkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IGM4NzMgKGRldmljZS92aWYvMC9yZXF1ZXN0LXJ4LWNvcHkpCnhlbmJ1
c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAv
ZmVhdHVyZS1zZykKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
NzMgKGRldmljZS92aWYvMC9mZWF0dXJlLXNnKQp4ZW5idXN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtcngt
bm90aWZ5KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAo
ZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtcngtbm90aWZ5KQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUt
Z3NvLXRjcHY0KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MyAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtZ3NvLXRjcHY0KQp4ZW5idXN8U3Rv
cmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL2ZlYXR1
cmUtZ3NvLXRjcHY2KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MyAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtZ3NvLXRjcHY2KQp4ZW5idXN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL2Zl
YXR1cmUtbm8tY3N1bS1vZmZsb2FkKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtbm8tY3N1bS1v
ZmZsb2FkKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAo
ZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtaXB2Ni1jc3VtLW9mZmxvYWQpCnhlbmJ1
c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAv
ZmVhdHVyZS1pcHY2LWNzdW0tb2ZmbG9hZCkKeGVuYnVzfFN0b3JlUHJvY2Vz
c1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0wL3J4LXJp
bmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAo
ZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvcngtcmluZy1yZWYpCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcXVldWUt
MC9ldmVudC1jaGFubmVsLXJ4KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5l
bC1yeCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRl
dmljZS92aWYvMC9xdWV1ZS0xL3J4LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTEv
cngtcmluZy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvcXVldWUtMS9ldmVudC1jaGFubmVsLXJ4KQp4
ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3Zp
Zi8wL3F1ZXVlLTEvZXZlbnQtY2hhbm5lbC1yeCkKeGVuYnVzfFN0b3JlUHJv
Y2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0yL3J4
LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTIvcngtcmluZy1yZWYpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcXVl
dWUtMi9ldmVudC1jaGFubmVsLXJ4KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTIvZXZlbnQtY2hh
bm5lbC1yeCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAg
KGRldmljZS92aWYvMC9xdWV1ZS0zL3J4LXJpbmctcmVmKQp4ZW5idXN8U3Rv
cmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVl
LTMvcngtcmluZy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50
OiBjODcwIChkZXZpY2UvdmlmLzAvcXVldWUtMy9ldmVudC1jaGFubmVsLXJ4
KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNl
L3ZpZi8wL3F1ZXVlLTMvZXZlbnQtY2hhbm5lbC1yeCkKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9yZXF1ZXN0
LW11bHRpY2FzdC1jb250cm9sKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3JlcXVlc3QtbXVsdGljYXN0LWNv
bnRyb2wpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChk
ZXZpY2UvdmlmLzAvcXVldWUtMC90eC1yaW5nLXJlZikKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9xdWV1ZS0w
L3R4LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MCAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbC10eCkK
eGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92
aWYvMC9xdWV1ZS0wL2V2ZW50LWNoYW5uZWwtdHgpCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcXVldWUtMS90
eC1yaW5nLXJlZikKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
NzMgKGRldmljZS92aWYvMC9xdWV1ZS0xL3R4LXJpbmctcmVmKQp4ZW5idXN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL3F1
ZXVlLTEvZXZlbnQtY2hhbm5lbC10eCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dh
dGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9xdWV1ZS0xL2V2ZW50LWNo
YW5uZWwtdHgpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcw
IChkZXZpY2UvdmlmLzAvcXVldWUtMi90eC1yaW5nLXJlZikKeGVuYnVzfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9xdWV1
ZS0yL3R4LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVu
dDogYzg3MCAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTIvZXZlbnQtY2hhbm5lbC10
eCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmlj
ZS92aWYvMC9xdWV1ZS0yL2V2ZW50LWNoYW5uZWwtdHgpCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcXVldWUt
My90eC1yaW5nLXJlZikKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6
IGM4NzMgKGRldmljZS92aWYvMC9xdWV1ZS0zL3R4LXJpbmctcmVmKQp4ZW5i
dXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8w
L3F1ZXVlLTMvZXZlbnQtY2hhbm5lbC10eCkKeGVuYnVzfFN0b3JlUHJvY2Vz
c1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9xdWV1ZS0zL2V2ZW50
LWNoYW5uZWwtdHgpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvY3RybC1yaW5nLXJlZikKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9jdHJsLXJp
bmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAo
ZGV2aWNlL3ZpZi8wL2V2ZW50LWNoYW5uZWwtY3RybCkKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9ldmVudC1j
aGFubmVsLWN0cmwpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcykKeGVu
YnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYv
MC9tdWx0aS1xdWV1ZS1udW0tcXVldWVzKQp4ZW52aWZ8RnJvbnRlbmRXYWl0
Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92aWYvOTgvMDogPT09PT4gVW5rbm93bgp4ZW5idXN8RmRvU2Nh
bjogYXdha2UKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OWEg
KC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL3N0YXRlKQp4ZW52
aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAv
bG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDogPD09PT0gKEluaXRX
YWl0KQp4ZW52aWZ8RnJvbnRlbmRTZXRYZW5idXNTdGF0ZTogZGV2aWNlL3Zp
Zi8wOiA9PT09PiBDb25uZWN0ZWQKeGVudmlmfEZyb250ZW5kU2V0WGVuYnVz
U3RhdGU6IGRldmljZS92aWYvMDogPD09PT0gQ29ubmVjdGVkCnhlbnZpZnxG
cm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2U6IC9sb2Nh
bC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA9PT09PiBJbml0V2FpdAp4
ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3Zp
Zi8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MyAoZGV2aWNlL3ZpZi8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg5YiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4
LzAvc3RhdGUpCnhlbmJ1c3xGZG9FbnVtZXJhdGU6ID09PT0+CnhlbmJ1c3xG
ZG9FbnVtZXJhdGU6IDw9PT09CnhlbmJ1c3xGZG9TY2FuOiB3YWl0aW5nLi4u
CnhlbmJ1c3xGZG9TY2FuOiBhd2FrZQp4ZW5idXN8RmRvRW51bWVyYXRlOiA9
PT09Pgp4ZW5idXN8RmRvRW51bWVyYXRlOiA8PT09PQp4ZW5idXN8RmRvU2Nh
bjogd2FpdGluZy4uLgp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+Cnhl
bnZpZnxfX0Zkb0VudW1lcmF0ZTogZXhhbWluaW5nIFBETyBGRkZGREQ4REQz
Nzg0REEwOiBQTlAgc3RhdGUgRW51bWVyYXRlZAp4ZW52aWZ8X19GZG9FbnVt
ZXJhdGU6IFBETyBGRkZGREQ4REQzNzg0REEwICgwKSBpcyBwcmVzZW50IGlu
IHhlbnN0b3JlIGxpc3QKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBQRE8gRkZG
RkREOEREMzc4NERBMCBQZG9Jc01pc3Npbmc9MCBQZG9Jc0VqZWN0UmVxdWVz
dGVkPTAKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBnb3QgbmV3IGRldmljZSAw
IGZyb20geGVuc3RvcmUKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA8PT09PQp4
ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW5idXN8U3RvcmVQcm9jZXNz
V2F0Y2hFdmVudDogYzg5YiAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlm
Lzk4LzAvc3RhdGUpCnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVu
YnVzU3RhdGVDaGFuZ2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85
OC8wOiA8PT09PSAoQ29ubmVjdGVkKQp4ZW52aWZ8Q29udHJvbGxlckVuYWJs
ZTogPD09PT4KeGVudmlmfEZyb250ZW5kQ29ubmVjdDogPD09PT0KeGVudmlm
fEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92aWYvMCBpbiBzdGF0ZSAnQ09O
TkVDVEVEJwp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNlL3ZpZi8w
OiA8PT09PT0KeGVudmlmfF9fUGRvRDNUb0QwOiAoMCkgPD09PT0KeGVuYnVz
fFVucGx1Z0FjcXVpcmU6IDw9PT0+CnhlbmJ1c3xVbnBsdWdSZXF1ZXN0OiBO
SUNTIChNQUtFKQp4ZW58VW5wbHVnSW5jcmVtZW50VmFsdWU6IE5JQ1MgMQp4
ZW5idXN8VW5wbHVnUmVsZWFzZTogPD09PT4KeGVudmlmfF9fUGRvU2V0RGV2
aWNlUG5wU3RhdGU6IHNldHRpbmcgUERPIEZGRkZERDhERDM3ODREQTA6IFBO
UCBzdGF0ZSBFbnVtZXJhdGVkIC0+IFN0YXJ0ZWQKeGVudmlmfFBkb0Rpc3Bh
dGNoUG5wOiA8PT09PSAoMDA6U1RBUlRfREVWSUNFKSgwMDAwMDAwMCkKeGVu
dmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA5OlFVRVJZX0NBUEFC
SUxJVElFUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDk6UVVF
UllfQ0FQQUJJTElUSUVTKSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNo
UG5wOiA9PT09PiAoMCkgKDA4OlFVRVJZX0lOVEVSRkFDRSkKeGVudmlmfFBk
b0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAw
MDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA4OlFV
RVJZX0lOVEVSRkFDRSkKeGVudmlmfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MDg6UVVFUllfSU5URVJGQUNFKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6ID09
PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbmJ1c3xQZG9RdWVyeUludGVy
ZmFjZTogVklGOiBTVE9SRV9JTlRFUkZBQ0UgKFZFUlNJT04gMikKeGVuYnVz
fFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgw
MDAwMDAwMCkKeGVudmlmfEZkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVF
UllfSU5URVJGQUNFKSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKSgwMDAwMDAwMCkKeGVudmlm
fFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA4OlFVRVJZX0lOVEVSRkFD
RSkKeGVudmlmfEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5U
RVJGQUNFKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVS
WV9JTlRFUkZBQ0UpCnhlbmJ1c3xQZG9RdWVyeUludGVyZmFjZTogVklGOiBT
VVNQRU5EX0lOVEVSRkFDRSAoVkVSU0lPTiAxKQp4ZW5idXN8UGRvRGlzcGF0
Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4
ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZB
Q0UpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgw
ODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8VmlmQWNxdWly
ZTogPT09PT4KeGVudmlmfFZpZkFjcXVpcmU6IDw9PT09CnhlbnZpZnxGcm9u
dGVuZFNldEhhc2hBbGdvcml0aG06IGRldmljZS92aWYvMDogVE9FUExJVFoK
eGVudmlmfENvbnRyb2xsZXJHZXRIYXNoRmxhZ3M6IGZhaWwyCnhlbnZpZnxD
b250cm9sbGVyR2V0SGFzaEZsYWdzOiBmYWlsMSAoYzAwMDAwYmIpCnhlbnZp
ZnxGcm9udGVuZFF1ZXJ5SGFzaFR5cGVzOiBmYWlsMSAoYzAwMDAwYmIpCnhl
bnZpZnxSZWNlaXZlclF1ZXJ5SGFzaENhcGFiaWxpdGllczogZmFpbDEgKGMw
MDAwMGJiKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDg6
UVVFUllfSU5URVJGQUNFKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09
ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvR2V0
RG1hQWRhcHRlcjogPD09PT4KeGVuYnVzfERtYUR1bXBEZXZpY2VEZXNjcmlw
dGlvbjogVmVyc2lvbiA9IDIKeGVuYnVzfERtYUR1bXBEZXZpY2VEZXNjcmlw
dGlvbjogTWFzdGVyID0gVFJVRQp4ZW5idXN8RG1hRHVtcERldmljZURlc2Ny
aXB0aW9uOiBTY2F0dGVyR2F0aGVyID0gVFJVRQp4ZW5idXN8RG1hRHVtcERl
dmljZURlc2NyaXB0aW9uOiBEZW1hbmRNb2RlID0gRkFMU0UKeGVuYnVzfERt
YUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogQXV0b0luaXRpYWxpemUgPSBGQUxT
RQp4ZW5idXN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWEzMkJpdEFk
ZHJlc3NlcyA9IEZBTFNFCnhlbmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRp
b246IElnbm9yZUNvdW50ID0gRkFMU0UKeGVuYnVzfERtYUR1bXBEZXZpY2VE
ZXNjcmlwdGlvbjogRG1hNjRCaXRBZGRyZXNzZXMgPSBUUlVFCnhlbmJ1c3xE
bWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IEJ1c051bWJlciA9IDAwMDAwMDAw
CnhlbmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERtYUNoYW5uZWwg
PSAwMDAwMDAwMAp4ZW5idXN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBJ
bnRlcmZhY2VUeXBlID0gSW50ZXJuYWwKeGVuYnVzfERtYUR1bXBEZXZpY2VE
ZXNjcmlwdGlvbjogRG1hV2lkdGggPSA4Qml0cwp4ZW5idXN8RG1hRHVtcERl
dmljZURlc2NyaXB0aW9uOiBEbWFTcGVlZCA9IENvbXBhdGlibGUKeGVuYnVz
fERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogTWF4aW11bUxlbmd0aCA9IDAw
MDIwMDAwCnhlbmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERtYVBv
cnQgPSAwMDAwMDAwMAp4ZW5idXN8UGRvR2V0RG1hQWRhcHRlcjogPD09PT4K
eGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA4OlFVRVJZX0lO
VEVSRkFDRSkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVF
UllfSU5URVJGQUNFKShjMDAwMDBiYikKeGVudmlmfEZkb0Rpc3BhdGNoUG5w
OiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQp4ZW5idXN8UGRvRGlzcGF0
Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbmJ1c3xQZG9E
aXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoYzAwMDAw
YmIpCnhlbnZpZnxGZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lO
VEVSRkFDRSkoYzAwMDAwYmIpCnhlbmJ1c3xGZG9EaXNwYXRjaFBucDogPT09
PT4gKDA4OlFVRVJZX0lOVEVSRkFDRSkKeGVuYnVzfEZkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikKeGVuYnVz
fERtYUdldEFkYXB0ZXI6IG5vIGludGVyY2VwdGlvbgp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwKSAoMDk6UVVFUllfQ0FQQUJJTElUSUVTKQp4
ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwOTpRVUVSWV9DQVBBQklM
SVRJRVMpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwKSAoMTQ6UVVFUllfUE5QX0RFVklDRV9TVEFURSkKeGVudmlmfFBkb0Rp
c3BhdGNoUG5wOiA8PT09PSAoMTQ6UVVFUllfUE5QX0RFVklDRV9TVEFURSko
MDAwMDAwMDApCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApIChm
ZjpVTktOT1dOKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09IChmZjpV
TktOT1dOKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMCkgKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpCnhlbnZpZnxQZG9E
aXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMp
KGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAo
MDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykKeGVudmlmfFBkb0Rpc3BhdGNo
UG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoYzAwMDAw
YmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwYzpRVUVS
WV9ERVZJQ0VfVEVYVCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAo
MGM6UVVFUllfREVWSUNFX1RFWFQpKGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwKSAoMTM6UVVFUllfSUQpCnhlbnZpZnxQZG9E
aXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKShjMDAwMDBiYikKeGVu
dmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA3OlFVRVJZX0RFVklD
RV9SRUxBVElPTlMpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA3
OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKDAwMDAwMDAwKQp4ZW52aWZ8UGRv
RGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDg6UVVFUllfSU5URVJGQUNFKQp4
ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZB
Q0UpKGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgw
KSAoMDg6UVVFUllfSU5URVJGQUNFKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDc6UVVFUllfREVWSUNFX1JF
TEFUSU9OUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVF
UllfREVWSUNFX1JFTEFUSU9OUykoYzAwMDAwYmIpCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcmVxdWVzdC1t
dWx0aWNhc3QtY29udHJvbCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IGM4NzMgKGRldmljZS92aWYvMC9yZXF1ZXN0LW11bHRpY2FzdC1jb250
cm9sKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2
aWNlL3ZpZi8wL3JlcXVlc3QtbXVsdGljYXN0LWNvbnRyb2wpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcmVx
dWVzdC1tdWx0aWNhc3QtY29udHJvbCkKeGVuYnVzfEZkb1NjYW46IGF3YWtl
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPT09PT4KeGVudmlmfF9fRmRvRW51
bWVyYXRlOiBleGFtaW5pbmcgUERPIEZGRkZERDhERDM3ODREQTA6IFBOUCBz
dGF0ZSBTdGFydGVkCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkZE
RDhERDM3ODREQTAgKDApIGlzIHByZXNlbnQgaW4geGVuc3RvcmUgbGlzdAp4
ZW52aWZ8X19GZG9FbnVtZXJhdGU6IFBETyBGRkZGREQ4REQzNzg0REEwIFBk
b0lzTWlzc2luZz0wIFBkb0lzRWplY3RSZXF1ZXN0ZWQ9MAp4ZW52aWZ8X19G
ZG9FbnVtZXJhdGU6IGdvdCBuZXcgZGV2aWNlIDAgZnJvbSB4ZW5zdG9yZQp4
ZW52aWZ8X19GZG9FbnVtZXJhdGU6IDw9PT09CnhlbnZpZnxGZG9TY2FuOiB3
YWl0aW5nLi4uCnhlbmJ1c3xGZG9FbnVtZXJhdGU6ID09PT0+CnhlbmJ1c3xG
ZG9FbnVtZXJhdGU6IDw9PT09CnhlbmJ1c3xGZG9TY2FuOiB3YWl0aW5nLi4u
Cnhlbm5ldHxBZGFwdGVyUXVlcnlJbmZvcm1hdGlvbjogVU5TVVBQT1JURUQg
T0lEIDAwMDEwMzAwCnhlbm5ldHxBZGFwdGVyUXVlcnlJbmZvcm1hdGlvbjog
VU5TVVBQT1JURUQgT0lEIDAwMDEwMzAwCnhlbnZpZnxWaWZFbmFibGU6ID09
PT0+CnhlbnZpZnxGcm9udGVuZFNldFN0YXRlOiBkZXZpY2UvdmlmLzA6ID09
PT0+ICdDT05ORUNURUQnIC0+ICdFTkFCTEVEJwp4ZW52aWZ8RnJvbnRlbmRF
bmFibGU6ID09PT0+CnhlbnZpZnxNYWNFbmFibGU6ID09PT0+CnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODljIChkZXZpY2UvdmlmLzAvZGlz
Y29ubmVjdCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OWQg
KGRldmljZS92aWYvMC9zcGVlZCkKeGVudmlmfE1hY0VuYWJsZTogPD09PT0K
eGVudmlmfFJlY2VpdmVyRW5hYmxlOiA9PT09Pgp4ZW52aWZ8UmVjZWl2ZXJF
bmFibGU6IDw9PT09CnhlbnZpZnxUcmFuc21pdHRlckVuYWJsZTogPT09PT4K
eGVudmlmfFRyYW5zbWl0dGVyRW5hYmxlOiA8PT09PQp4ZW52aWZ8RnJvbnRl
bmRFbmFibGU6IDw9PT09CnhlbnZpZnxGcm9udGVuZFNldFN0YXRlOiBkZXZp
Y2UvdmlmLzAgaW4gc3RhdGUgJ0VOQUJMRUQnCnhlbnZpZnxGcm9udGVuZFNl
dFN0YXRlOiBkZXZpY2UvdmlmLzA6IDw9PT09PQp4ZW52aWZ8VmlmRW5hYmxl
OiA8PT09PQp4ZW5uZXR8UmVjZWl2ZXJFbmFibGU6IDA6IDw9PT09Pgp4ZW5u
ZXR8RGlzcGxheUxpbmtTdGF0ZTogMDogTElOSzogVVA6IFNQRUVEPTEwMDAw
MDAwMDAwMCBEVVBMRVg9RlVMTAp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogYzg5OSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAv
b25saW5lKQp4ZW52aWZ8UGRvUmVxdWVzdEVqZWN0OiBGRkZGREQ4REQ0QUEx
QTcwICgwKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAo
ZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MyAoZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hF
dmVudDogYzg5YyAoZGV2aWNlL3ZpZi8wL2Rpc2Nvbm5lY3QpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODlkIChkZXZpY2UvdmlmLzAvc3Bl
ZWQpCnhlbnZpZnxGZG9EaXNwYXRjaFBucDogPT09PT4gKDA3OlFVRVJZX0RF
VklDRV9SRUxBVElPTlMpCnhlbnZpZnxGZG9RdWVyeURldmljZVJlbGF0aW9u
czogd2FpdGluZyBmb3Igc2NhbiB0aHJlYWQKeGVuYnVzfEZkb1NjYW46IGF3
YWtlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPT09PT4KeGVudmlmfF9fRmRv
RW51bWVyYXRlOiBleGFtaW5pbmcgUERPIEZGRkZERDhERDM3ODREQTA6IFBO
UCBzdGF0ZSBTdGFydGVkCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZG
RkZERDhERDM3ODREQTAgKDApIGlzIG5vdCBwcmVzZW50IGluIHhlbnN0b3Jl
IGxpc3QKeGVuYnVzfEZkb0VudW1lcmF0ZTogPT09PT4KeGVudmlmfF9fRmRv
RW51bWVyYXRlOiBQRE8gRkZGRkREOEREMzc4NERBMCBQZG9Jc01pc3Npbmc9
MCBQZG9Jc0VqZWN0UmVxdWVzdGVkPTEKeGVudmlmfF9fRmRvRW51bWVyYXRl
OiA8PT09PQp4ZW5idXN8RmRvRW51bWVyYXRlOiA8PT09PQp4ZW52aWZ8RmRv
UXVlcnlEZXZpY2VSZWxhdGlvbnM6IDEgUERPKHMpCnhlbmJ1c3xQZG9EaXNw
YXRjaFBucDogPT09PT4gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpCnhl
bnZpZnxGZG9TY2FuOiB3YWl0aW5nLi4uCnhlbmJ1c3xQZG9EaXNwYXRjaFBu
cDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKDAwMDAwMDAw
KQp4ZW5idXN8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8RmRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHk6IDAwMDAwMDAwCnhlbnZpZnxGZG9EaXNwYXRj
aFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpKDAwMDAw
MDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDc6UVVF
UllfREVWSUNFX1JFTEFUSU9OUykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8
PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoYzAwMDAwYmIpCnhl
bnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwNzpRVUVSWV9ERVZJ
Q0VfUkVMQVRJT05TKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgw
NzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKShjMDAwMDBiYikKeGVudmlmfFBk
b0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDA3OlFVRVJZX0RFVklDRV9SRUxB
VElPTlMpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZ
X0RFVklDRV9SRUxBVElPTlMpKGMwMDAwMGJiKQp4ZW5idXN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogYzg5OSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQv
dmlmLzk4LzAvb25saW5lKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwKSAoMDE6UVVFUllfUkVNT1ZFX0RFVklDRSkKeGVudmlmfF9fUGRvU2V0
RGV2aWNlUG5wU3RhdGU6IHNldHRpbmcgUERPIEZGRkZERDhERDM3ODREQTA6
IFBOUCBzdGF0ZSBTdGFydGVkIC0+IFJlbW92ZVBlbmRpbmcKeGVudmlmfFBk
b0Rpc3BhdGNoUG5wOiA8PT09PSAoMDE6UVVFUllfUkVNT1ZFX0RFVklDRSko
MDAwMDAwMDApCnhlbmJ1c3xEZWJ1Z1RyaWdnZXI6ID09PT0+ClhFTnxERUJV
RzogPT09PT4gKHhlbnZpZi5zeXMgKyAwMDAwMDAwMDAwMDJDREMwKQp4ZW5i
dXN8RGVidWdUcmlnZ2VyOiA9PT09Pgp4ZW5idXN8RGVidWdUcmlnZ2VyOiA9
PT09Pgp4ZW52aWZ8VFJBTlNNSVRURVJbMV06IDB4RkZGRkREOEREMzQ4ODAw
MCBbRU5BQkxFRF0KeGVudmlmfFRSQU5TTUlUVEVSWzFdOiBGUk9OVDogcmVx
X3Byb2RfcHZ0ID0gMzggcnNwX2NvbnMgPSAxNiBucl9lbnRzID0gMjU2IHNy
aW5nID0gRkZGRkFCMDFCQzE4ODAwMAp4ZW52aWZ8VFJBTlNNSVRURVJbMV06
IFNIQVJFRDogcmVxX3Byb2QgPSAzOCByZXFfZXZlbnQgPSAxNyByc3BfcHJv
ZCA9IDE2IHJzcF9ldmVudCA9IDE3CnhlbnZpZnxUUkFOU01JVFRFUlsxXTog
UmVxdWVzdHNQb3N0ZWQgPSAzOCBSZXF1ZXN0c1B1c2hlZCA9IDM4IFJlc3Bv
bnNlc1Byb2Nlc3NlZCA9IDE2CnhlbnZpZnxUUkFOU01JVFRFUlsxXTogU3Rh
dGU6CnhlbnZpZnxUUkFOU01JVFRFUlsxXTogLSBQYWNrZXQgPSAwMDAwMDAw
MDAwMDAwMDAwCnhlbnZpZnxUUkFOU01JVFRFUlsxXTogLSBDb3VudCA9IDAK
eGVudmlmfFRSQU5TTUlUVEVSWzFdOiBQYWNrZXRzR3JhbnRlZCA9IDE4IFBh
Y2tldHNDb3BpZWQgPSAxIFBhY2tldHNGYWtlZCA9IDAKeGVudmlmfFRSQU5T
TUlUVEVSWzFdOiBQYWNrZXRzUXVldWVkID0gMTkgUGFja2V0c1ByZXBhcmVk
ID0gMTkgUGFja2V0c1VucHJlcGFyZWQgPSAwIFBhY2tldHNTZW50ID0gMTkg
UGFja2V0c0NvbXBsZXRlZCA9IDgKeGVudmlmfFRSQU5TTUlUVEVSWzFdOiBF
dmVudHMgPSAxMCBQb2xsRHBjcyA9IDEwClhFTnxERUJVRzogPD09PT0gKHhl
bnZpZi5zeXMgKyAwMDAwMDAwMDAwMDJDREMwKQpYRU58REVCVUc6ID09PT0+
ICh4ZW52aWYuc3lzICsgMDAwMDAwMDAwMDAyQ0RDMCkKeGVuYnVzfERlYnVn
VHJpZ2dlcjogPD09PT0KeGVudmlmfFRSQU5TTUlUVEVSWzJdOiAweEZGRkZE
RDhERDM0OEIwMDAgW0VOQUJMRURdCnhlbnZpZnxUUkFOU01JVFRFUlsyXTog
RlJPTlQ6IHJlcV9wcm9kX3B2dCA9IDM0IHJzcF9jb25zID0gNiBucl9lbnRz
ID0gMjU2IHNyaW5nID0gRkZGRkFCMDFCQzE4QTAwMAp4ZW52aWZ8VFJBTlNN
SVRURVJbMl06IFNIQVJFRDogcmVxX3Byb2QgPSAzNCByZXFfZXZlbnQgPSA3
IHJzcF9wcm9kID0gNiByc3BfZXZlbnQgPSA3CnhlbnZpZnxUUkFOU01JVFRF
UlsyXTogUmVxdWVzdHNQb3N0ZWQgPSAzNCBSZXF1ZXN0c1B1c2hlZCA9IDM0
IFJlc3BvbnNlc1Byb2Nlc3NlZCA9IDYKeGVudmlmfFRSQU5TTUlUVEVSWzJd
OiBTdGF0ZToKeGVudmlmfFRSQU5TTUlUVEVSWzJdOiAtIFBhY2tldCA9IDAw
MDAwMDAwMDAwMDAwMDAKeGVudmlmfFRSQU5TTUlUVEVSWzJdOiAtIENvdW50
ID0gMAp4ZW52aWZ8VFJBTlNNSVRURVJbMl06IFBhY2tldHNHcmFudGVkID0g
MTggUGFja2V0c0NvcGllZCA9IDEgUGFja2V0c0Zha2VkID0gMAp4ZW52aWZ8
VFJBTlNNSVRURVJbMl06IFBhY2tldHNRdWV1ZWQgPSAxOSBQYWNrZXRzUHJl
cGFyZWQgPSAxOSBQYWNrZXRzVW5wcmVwYXJlZCA9IDAgUGFja2V0c1NlbnQg
PSAxOSBQYWNrZXRzQ29tcGxldGVkID0gMwp4ZW52aWZ8VFJBTlNNSVRURVJb
Ml06IEV2ZW50cyA9IDMgUG9sbERwY3MgPSAzClhFTnxERUJVRzogPD09PT0g
KHhlbnZpZi5zeXMgKyAwMDAwMDAwMDAwMDJDREMwKQp4ZW5idXN8RGVidWdU
cmlnZ2VyOiA8PT09PQpYRU58REVCVUc6ID09PT0+ICh4ZW52aWYuc3lzICsg
MDAwMDAwMDAwMDAyQ0RDMCkKeGVudmlmfFRSQU5TTUlUVEVSWzNdOiAweEZG
RkZERDhERDM0ODUwMDAgW0VOQUJMRURdCnhlbnZpZnxUUkFOU01JVFRFUlsz
XTogRlJPTlQ6IHJlcV9wcm9kX3B2dCA9IDM4IHJzcF9jb25zID0gMTQgbnJf
ZW50cyA9IDI1NiBzcmluZyA9IEZGRkZBQjAxQkMxOEMwMDAKeGVudmlmfFRS
QU5TTUlUVEVSWzNdOiBTSEFSRUQ6IHJlcV9wcm9kID0gMzggcmVxX2V2ZW50
ID0gMTUgcnNwX3Byb2QgPSAxNCByc3BfZXZlbnQgPSAxNQp4ZW52aWZ8VFJB
TlNNSVRURVJbM106IFJlcXVlc3RzUG9zdGVkID0gMzggUmVxdWVzdHNQdXNo
ZWQgPSAzOCBSZXNwb25zZXNQcm9jZXNzZWQgPSAxNAp4ZW52aWZ8VFJBTlNN
SVRURVJbM106IFN0YXRlOgp4ZW52aWZ8VFJBTlNNSVRURVJbM106IC0gUGFj
a2V0ID0gMDAwMDAwMDAwMDAwMDAwMAp4ZW52aWZ8VFJBTlNNSVRURVJbM106
IC0gQ291bnQgPSAwCnhlbnZpZnxUUkFOU01JVFRFUlszXTogUGFja2V0c0dy
YW50ZWQgPSAxMCBQYWNrZXRzQ29waWVkID0gOSBQYWNrZXRzRmFrZWQgPSAw
CnhlbnZpZnxUUkFOU01JVFRFUlszXTogUGFja2V0c1F1ZXVlZCA9IDE5IFBh
Y2tldHNQcmVwYXJlZCA9IDE5IFBhY2tldHNVbnByZXBhcmVkID0gMCBQYWNr
ZXRzU2VudCA9IDE5IFBhY2tldHNDb21wbGV0ZWQgPSA3CnhlbnZpZnxUUkFO
U01JVFRFUlszXTogRXZlbnRzID0gNyBQb2xsRHBjcyA9IDcKWEVOfERFQlVH
OiA8PT09PSAoeGVudmlmLnN5cyArIDAwMDAwMDAwMDAwMkNEQzApCnhlbmJ1
c3xEZWJ1Z1RyaWdnZXI6IDw9PT09Cgo=

--_av-4FMvFWiGFJD6jmID3Uaigw
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="nodead13.log"

IyMjIHBsdWcgMTMKCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzApCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiBjODczIChkZXZpY2UvdmlmLzApCnhlbmJ1c3xGZG9TY2FuOiBhd2Fr
ZQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNl
L3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAo
ZGV2aWNlL3ZpZi8wKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MCAoZGV2aWNlL3ZpZi8wL2JhY2tlbmQpCnhlbmJ1c3xTdG9yZVByb2Nl
c3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvYmFja2VuZCkKeGVu
YnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYv
MC9iYWNrZW5kLWlkKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MyAoZGV2aWNlL3ZpZi8wL2JhY2tlbmQtaWQpCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhl
bmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2Uvdmlm
LzAvc3RhdGUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcw
IChkZXZpY2UvdmlmLzAvaGFuZGxlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL2hhbmRsZSkKeGVuYnVzfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9tYWMp
CnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2Uv
dmlmLzAvbWFjKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MCAoZGV2aWNlL3ZpZi8wL2Rpc2Nvbm5lY3QpCnhlbmJ1c3xTdG9yZVByb2Nl
c3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvZGlzY29ubmVjdCkK
eGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92
aWYvMC9tdHUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcz
IChkZXZpY2UvdmlmLzAvbXR1KQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09
PT0+CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZpY2UgMCBm
cm9tIHhlbnN0b3JlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogY3JlYXRpbmcg
UERPIDA6IGMyOjViOjMzOjMxOjc2OmViCnhlbnZpZnxfX1Bkb1NldFBlcm1h
bmVudEFkZHJlc3M6IDA6IGMyOjViOjMzOjMxOjc2OmViCnhlbnZpZnxfX1Bk
b1NldENvbnRhaW5lcklEOiAwIHs5ZDZlNjliMy00MDY1LTVlZGItYmFlYS03
ZGM1NWYzZjg5MmV9CnhlbnZpZnxCdXNJbml0aWFsaXplOiA9PT09Pgp4ZW52
aWZ8QnVzSW5pdGlhbGl6ZTogPD09PT0KeGVudmlmfFZpZkluaXRpYWxpemU6
ID09PT0+CnhlbnZpZnxWaWZNYWM6ID09PT0+CnhlbnZpZnxWaWZJbml0aWFs
aXplOiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRJbml0aWFsaXplOiA9PT09Pgp4
ZW52aWZ8RnJvbnRlbmRTZXRNYXhRdWV1ZXM6IGRldmljZS92aWYvMDogNAp4
ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUt
MF9yZWNlaXZlcl9wYWNrZXQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0K
eGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVl
LTBfcmVjZWl2ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09
PT0KeGVudmlmfFJlY2VpdmVyUmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW5idXN8
Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMV9yZWNl
aXZlcl9wYWNrZXQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVz
fENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfcmVj
ZWl2ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVu
dmlmfFJlY2VpdmVyUmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW5idXN8Q2FjaGVD
cmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMl9yZWNlaXZlcl9w
YWNrZXQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hl
Q3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfcmVjZWl2ZXJf
ZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVudmlmfFJl
Y2VpdmVyUmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW5idXN8Q2FjaGVDcmVhdGU6
ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtM19yZWNlaXZlcl9wYWNrZXQp
CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hlQ3JlYXRl
OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTNfcmVjZWl2ZXJfZnJhZ21l
bnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVudmlmfFJlY2VpdmVy
UmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+
IChkZXZpY2VfdmlmXzBfdHJhbnNtaXR0ZXJfcGFja2V0KQp4ZW5idXN8Q2Fj
aGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRl
dmljZV92aWZfMF9xdWV1ZS0wX3RyYW5zbWl0dGVyX2J1ZmZlcikKeGVuYnVz
fENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+
IChkZXZpY2VfdmlmXzBfcXVldWUtMF90cmFuc21pdHRlcl9tdWx0aWNhc3Rf
Y29udHJvbCkKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8UmFu
Z2VTZXRDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMF90cmFu
c21pdHRlcl9yZXFfaWQpCnhlbmJ1c3xSYW5nZVNldENyZWF0ZTogPD09PT0K
eGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVl
LTBfdHJhbnNtaXR0ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTog
PD09PT0KeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8w
X3F1ZXVlLTBfdHJhbnNtaXR0ZXJfcmVxdWVzdCkKeGVuYnVzfENhY2hlQ3Jl
YXRlOiA8PT09PQp4ZW52aWZ8VHJhbnNtaXR0ZXJSaW5nV2F0Y2hkb2c6ID09
PT0+CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9x
dWV1ZS0xX3RyYW5zbWl0dGVyX2J1ZmZlcikKeGVuYnVzfENhY2hlQ3JlYXRl
OiA8PT09PQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2Vfdmlm
XzBfcXVldWUtMV90cmFuc21pdHRlcl9tdWx0aWNhc3RfY29udHJvbCkKeGVu
YnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8UmFuZ2VTZXRDcmVhdGU6
ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMV90cmFuc21pdHRlcl9yZXFf
aWQpCnhlbmJ1c3xSYW5nZVNldENyZWF0ZTogPD09PT0KeGVuYnVzfENhY2hl
Q3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfdHJhbnNtaXR0
ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVz
fENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfdHJh
bnNtaXR0ZXJfcmVxdWVzdCkKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4
ZW52aWZ8VHJhbnNtaXR0ZXJSaW5nV2F0Y2hkb2c6ID09PT0+CnhlbmJ1c3xD
YWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0yX3RyYW5z
bWl0dGVyX2J1ZmZlcikKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5i
dXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMl90
cmFuc21pdHRlcl9tdWx0aWNhc3RfY29udHJvbCkKeGVuYnVzfENhY2hlQ3Jl
YXRlOiA8PT09PQp4ZW5idXN8UmFuZ2VTZXRDcmVhdGU6ID09PT0+IChkZXZp
Y2VfdmlmXzBfcXVldWUtMl90cmFuc21pdHRlcl9yZXFfaWQpCnhlbmJ1c3xS
YW5nZVNldENyZWF0ZTogPD09PT0KeGVuYnVzfEZkb0VudW1lcmF0ZTogPT09
PT4KeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1
ZXVlLTJfdHJhbnNtaXR0ZXJfZnJhZ21lbnQpCnhlbmJ1c3xGZG9FbnVtZXJh
dGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfENh
Y2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfdHJhbnNt
aXR0ZXJfcmVxdWVzdCkKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5i
dXN8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW5idXN8RmRvU2NhbjogYXdha2UK
eGVudmlmfFRyYW5zbWl0dGVyUmluZ1dhdGNoZG9nOiA9PT09Pgp4ZW5idXN8
Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtM190cmFu
c21pdHRlcl9idWZmZXIpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVu
YnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTNf
dHJhbnNtaXR0ZXJfbXVsdGljYXN0X2NvbnRyb2wpCnhlbmJ1c3xDYWNoZUNy
ZWF0ZTogPD09PT0KeGVuYnVzfFJhbmdlU2V0Q3JlYXRlOiA9PT09PiAoZGV2
aWNlX3ZpZl8wX3F1ZXVlLTNfdHJhbnNtaXR0ZXJfcmVxX2lkKQp4ZW5idXN8
UmFuZ2VTZXRDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09
PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0dGVyX2ZyYWdtZW50
KQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xDYWNoZUNyZWF0
ZTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0dGVyX3Jl
cXVlc3QpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfEZkb0Vu
dW1lcmF0ZTogPT09PT4KeGVudmlmfFRyYW5zbWl0dGVyUmluZ1dhdGNoZG9n
OiA9PT09Pgp4ZW5idXN8RmRvRW51bWVyYXRlOiA8PT09PQp4ZW52aWZ8RnJv
bnRlbmRFamVjdDogZGV2aWNlL3ZpZi8wOiA9PT09Pgp4ZW52aWZ8RnJvbnRl
bmRJbml0aWFsaXplOiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRNaWI6ID09PT0+
CnhlbnZpZnxGcm9udGVuZFJlc3VtZTogPT09PT4KeGVudmlmfEZyb250ZW5k
U2V0U3RhdGU6IGRldmljZS92aWYvMDogPT09PT4gJ1VOS05PV04nIC0+ICdD
TE9TRUQnCnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6ID09PT0+Cnhl
bnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6ID09PT0+CnhlbnZpZnxGcm9udGVu
ZFByZXBhcmU6ID09PT0+CnhlbnZpZnxGcm9udGVuZFNldE9ubGluZTogPT09
PT4KeGVudmlmfEZyb250ZW5kU2V0T25saW5lOiA8PT09PQp4ZW52aWZ8RnJv
bnRlbmRBY3F1aXJlQmFja2VuZDogPT09PT0+CnhlbmJ1c3xGZG9TY2FuOiB3
YWl0aW5nLi4uCnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6IDw9PT09Cnhl
bnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2U6
IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA9PT09PiBVbmtu
b3duCnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6IG5ldGlvLnN5czpH
ZXRJZlRhYmxlMiAoMDA0NykgQCBGRkZGRjgwNjZCQ0JGQjkwCnhlbnZpZnxM
aW5rR2V0Um91dGluZUFkZHJlc3M6IDw9PT09CnhlbnZpZnxMaW5rR2V0Um91
dGluZUFkZHJlc3M6ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6
ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6IDw9PT09CnhlbnZp
ZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6IG5ldGlvLnN5czpOb3RpZnlVbmlj
YXN0SXBBZGRyZXNzQ2hhbmdlICgwMThDKSBAIEZGRkZGODA2NkJDQzg0QjAK
eGVudmlmfExpbmtHZXRSb3V0aW5lQWRkcmVzczogPD09PT0KeGVuYnVzfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4ODUgKC9sb2NhbC9kb21haW4vMC9i
YWNrZW5kL3ZpZi85OC8wL3N0YXRlKQp4ZW52aWZ8TGlua0dldFJvdXRpbmVB
ZGRyZXNzOiA9PT09Pgp4ZW52aWZ8X19MaW5rR2V0SW1hZ2VCYXNlOiA9PT09
Pgp4ZW52aWZ8X19MaW5rR2V0SW1hZ2VCYXNlOiA8PT09PQp4ZW52aWZ8TGlu
a0dldFJvdXRpbmVBZGRyZXNzOiBuZXRpby5zeXM6R2V0VW5pY2FzdElwQWRk
cmVzc1RhYmxlICgwMDVCKSBAIEZGRkZGODA2NkJDQkZCQjAKeGVudmlmfExp
bmtHZXRSb3V0aW5lQWRkcmVzczogPD09PT0KeGVudmlmfExpbmtHZXRSb3V0
aW5lQWRkcmVzczogPT09PT4KeGVudmlmfF9fTGlua0dldEltYWdlQmFzZTog
PT09PT4KeGVudmlmfF9fTGlua0dldEltYWdlQmFzZTogPD09PT0KeGVudmlm
fExpbmtHZXRSb3V0aW5lQWRkcmVzczogbmV0aW8uc3lzOkZyZWVNaWJUYWJs
ZSAoMDAzMSkgQCBGRkZGRjgwNjZCQ0JCRDYwCnhlbnZpZnxMaW5rR2V0Um91
dGluZUFkZHJlc3M6IDw9PT09CnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJl
c3M6ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6ID09PT0+Cnhl
bnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6IDw9PT09CnhlbnZpZnxMaW5rR2V0
Um91dGluZUFkZHJlc3M6IG5ldGlvLnN5czpDYW5jZWxNaWJDaGFuZ2VOb3Rp
ZnkyICgwMDAzKSBAIEZGRkZGODA2NkJDRTFBODAKeGVudmlmfExpbmtHZXRS
b3V0aW5lQWRkcmVzczogPD09PT0KeGVudmlmfEZyb250ZW5kV2FpdEZvckJh
Y2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tl
bmQvdmlmLzk4LzA6IDw9PT09IChJbml0V2FpdCkKeGVudmlmfEZyb250ZW5k
UHJlcGFyZTogPD09PT0KeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6
IGM4ODYgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL29ubGlu
ZSkKeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92aWYvMCBpbiBz
dGF0ZSAnUFJFUEFSRUQnCnhlbnZpZnxGcm9udGVuZENsb3NlOiA9PT09Pgp4
ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdl
OiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDogPT09PT4gVW5r
bm93bgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg4NyAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAvc3RhdGUpCnhlbnZpZnxG
cm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2U6IC9sb2Nh
bC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA8PT09PSAoSW5pdFdhaXQp
CnhlbnZpZnxGcm9udGVuZFNldFhlbmJ1c1N0YXRlOiBkZXZpY2UvdmlmLzA6
ID09PT0+IENsb3NpbmcKeGVudmlmfEZyb250ZW5kU2V0WGVuYnVzU3RhdGU6
IGRldmljZS92aWYvMDogPD09PT0gQ2xvc2luZwp4ZW52aWZ8RnJvbnRlbmRX
YWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92aWYvOTgvMDogPT09PT4gSW5pdFdhaXQKeGVuYnVzfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9zdGF0
ZSkKeGVuYnVzfEZkb1NjYW46IGF3YWtlCnhlbmJ1c3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODg4ICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92aWYvOTgvMC9zdGF0ZSkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dh
dGNoRXZlbnQ6IGM4ODggKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85
OC8wL3N0YXRlKQp4ZW5idXN8RmRvRW51bWVyYXRlOiA9PT09Pgp4ZW5idXN8
RmRvRW51bWVyYXRlOiA8PT09PQp4ZW5idXN8RmRvU2Nhbjogd2FpdGluZy4u
Lgp4ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hh
bmdlOiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDogPD09PT0g
KENsb3NpbmcpCnhlbnZpZnxGcm9udGVuZFNldFhlbmJ1c1N0YXRlOiBkZXZp
Y2UvdmlmLzA6ID09PT0+IENsb3NlZAp4ZW52aWZ8RnJvbnRlbmRTZXRYZW5i
dXNTdGF0ZTogZGV2aWNlL3ZpZi8wOiA8PT09PSBDbG9zZWQKeGVudmlmfEZy
b250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2Fs
L2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6ID09PT0+IENsb3NpbmcKeGVu
YnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYv
MC9zdGF0ZSkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMg
KGRldmljZS92aWYvMC9zdGF0ZSkKeGVuYnVzfEZkb1NjYW46IGF3YWtlCnhl
bmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODg5ICgvbG9jYWwvZG9t
YWluLzAvYmFja2VuZC92aWYvOTgvMC9zdGF0ZSkKeGVuYnVzfFN0b3JlUHJv
Y2Vzc1dhdGNoRXZlbnQ6IGM4ODkgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5k
L3ZpZi85OC8wL3N0YXRlKQp4ZW5idXN8RmRvRW51bWVyYXRlOiA9PT09Pgp4
ZW5idXN8RmRvRW51bWVyYXRlOiA8PT09PQp4ZW5idXN8RmRvU2Nhbjogd2Fp
dGluZy4uLgp4ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0
YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDog
PD09PT0gKENsb3NlZCkKeGVudmlmfEZyb250ZW5kUmVsZWFzZUJhY2tlbmQ6
ID09PT09Pgp4ZW52aWZ8RnJvbnRlbmRSZWxlYXNlQmFja2VuZDogPD09PT09
CnhlbnZpZnxGcm9udGVuZENsb3NlOiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRT
ZXRTdGF0ZTogZGV2aWNlL3ZpZi8wIGluIHN0YXRlICdDTE9TRUQnCnhlbnZp
ZnxGcm9udGVuZFNldFN0YXRlOiBkZXZpY2UvdmlmLzA6IDw9PT09PQp4ZW52
aWZ8RnJvbnRlbmRSZXN1bWU6IHdhaXRpbmcgZm9yIGVqZWN0IHRocmVhZAp4
ZW52aWZ8RnJvbnRlbmRSZXN1bWU6IDw9PT09CnhlbnZpZnxQZG9DcmVhdGU6
IEZGRkZERDhERDZDQjlEMTAgKDApCnhlbnZpZnxQZG9EdW1wUmV2aXNpb25z
OiAwOTAwMDAwMSAtPiBDQUNIRSB2MiBWSUYgdjggU1RPUkUgdjIgU1VTUEVO
RCB2MVVOUExVRyB2MQp4ZW52aWZ8UGRvRHVtcFJldmlzaW9uczogMDkwMDAw
MDIgLT4gQ0FDSEUgdjIgVklGIHY5IFNUT1JFIHYyIFNVU1BFTkQgdjFVTlBM
VUcgdjEKeGVudmlmfFBkb0R1bXBSZXZpc2lvbnM6IDA5MDAwMDAzIC0+IENB
Q0hFIHYyIFZJRiB2MTAgU1RPUkUgdjIgU1VTUEVORCB2MVVOUExVRyB2MQp4
ZW52aWZ8UGRvRHVtcFJldmlzaW9uczogMDkwMDAwMDQgLT4gQ0FDSEUgdjIg
VklGIHYxMCBTVE9SRSB2MiBTVVNQRU5EIHYxVU5QTFVHIHYyCnhlbnZpZnxQ
ZG9EdW1wUmV2aXNpb25zOiAwOTAwMDAwNSAtPiBDQUNIRSB2MiBWSUYgdjEw
IFNUT1JFIHYyIFNVU1BFTkQgdjFVTlBMVUcgdjMKeGVudmlmfF9fRmRvRW51
bWVyYXRlOiA8PT09PQp4ZW52aWZ8RmRvU2NhbjogaW52YWxpZGF0aW5nIFhO
QzAwMCBYRU5WSUYKeGVudmlmfEZkb1NjYW46IHdhaXRpbmcuLi4KeGVudmlm
fEZkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMDc6UVVFUllfREVWSUNFX1JFTEFU
SU9OUykKeGVudmlmfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiB3YWl0aW5n
IGZvciBzY2FuIHRocmVhZAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZXhhbWluaW5nIFBETyBGRkZGREQ4
REQ1OTQ0REEwOiBQTlAgc3RhdGUgUHJlc2VudAp4ZW52aWZ8X19GZG9FbnVt
ZXJhdGU6IFBETyBGRkZGREQ4REQ1OTQ0REEwICgwKSBpcyBwcmVzZW50IGlu
IHhlbnN0b3JlIGxpc3QKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBQRE8gRkZG
RkREOERENTk0NERBMCBQZG9Jc01pc3Npbmc9MCBQZG9Jc0VqZWN0UmVxdWVz
dGVkPTAKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBnb3QgbmV3IGRldmljZSAw
IGZyb20geGVuc3RvcmUKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA8PT09PQp4
ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8X19QZG9TZXREZXZp
Y2VQbnBTdGF0ZTogc2V0dGluZyBQRE8gRkZGRkREOERENTk0NERBMDogUE5Q
IHN0YXRlIFByZXNlbnQgLT4gRW51bWVyYXRlZAp4ZW52aWZ8RmRvUXVlcnlE
ZXZpY2VSZWxhdGlvbnM6IDEgUERPKHMpCnhlbmJ1c3xQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpCnhlbnZpZnxf
X0Zkb0VudW1lcmF0ZTogPT09PT4KeGVuYnVzfFBkb0Rpc3BhdGNoUG5wOiA8
PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAwMDApCnhl
bnZpZnxGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseTogMDAwMDAwMDAKeGVu
dmlmfF9fRmRvRW51bWVyYXRlOiBleGFtaW5pbmcgUERPIEZGRkZERDhERDU5
NDREQTA6IFBOUCBzdGF0ZSBFbnVtZXJhdGVkCnhlbnZpZnxfX0Zkb0VudW1l
cmF0ZTogUERPIEZGRkZERDhERDU5NDREQTAgKDApIGlzIHByZXNlbnQgaW4g
eGVuc3RvcmUgbGlzdAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IFBETyBGRkZG
REQ4REQ1OTQ0REEwIFBkb0lzTWlzc2luZz0wIFBkb0lzRWplY3RSZXF1ZXN0
ZWQ9MAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGdvdCBuZXcgZGV2aWNlIDAg
ZnJvbSB4ZW5zdG9yZQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IDw9PT09Cnhl
bnZpZnxGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9S
RUxBVElPTlMpKDAwMDAwMDAwKQp4ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4u
Lgp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMTM6UVVFUllf
SUQpCnhlbnZpZnxQZG9RdWVyeUlkOiBCdXNRdWVyeURldmljZUlECnhlbnZp
ZnxQZG9RdWVyeUlkOiAtIFhFTlZJRlxWRU5fWE4mREVWX05FVAp4ZW52aWZ8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxMzpRVUVSWV9JRCkoMDAwMDAwMDAp
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwOTpRVUVSWV9D
QVBBQklMSVRJRVMpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA5
OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNw
YXRjaFBucDogPT09PT4gKDApICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbnZp
ZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSko
YzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgw
YzpRVUVSWV9ERVZJQ0VfVEVYVCkKeGVudmlmfFBkb1F1ZXJ5RGV2aWNlVGV4
dDogRGV2aWNlVGV4dERlc2NyaXB0aW9uCnhlbnZpZnxQZG9RdWVyeURldmlj
ZVRleHQ6IDA6IFhOQzAwMCBYRU5WSUYgMAp4ZW52aWZ8UGRvRGlzcGF0Y2hQ
bnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoMDAwMDAwMDApCnhl
bnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwYzpRVUVSWV9ERVZJ
Q0VfVEVYVCkKeGVudmlmfFBkb1F1ZXJ5RGV2aWNlVGV4dDogRGV2aWNlVGV4
dExvY2F0aW9uSW5mb3JtYXRpb24KeGVudmlmfFBkb1F1ZXJ5RGV2aWNlVGV4
dDogMDogMAp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwYzpRVUVS
WV9ERVZJQ0VfVEVYVCkoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDApICgxMzpRVUVSWV9JRCkKeGVudmlmfFBkb1F1ZXJ5SWQ6
IEJ1c1F1ZXJ5SW5zdGFuY2VJRAp4ZW52aWZ8UGRvUXVlcnlJZDogLSAwCnhl
bnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAw
MDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDEzOlFV
RVJZX0lEKQp4ZW52aWZ8UGRvUXVlcnlJZDogQnVzUXVlcnlIYXJkd2FyZUlE
cwp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5WSUZcVkVOX1hOQzAwMCZERVZf
TkVUJlJFVl8wOTAwMDAwNQp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5WSUZc
VkVOX1hOQzAwMCZERVZfTkVUJlJFVl8wOTAwMDAwNAp4ZW52aWZ8UGRvUXVl
cnlJZDogLSBYRU5WSUZcVkVOX1hOQzAwMCZERVZfTkVUJlJFVl8wOTAwMDAw
Mwp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5WSUZcVkVOX1hOQzAwMCZERVZf
TkVUJlJFVl8wOTAwMDAwMgp4ZW52aWZ8UGRvUXVlcnlJZDogLSBYRU5WSUZc
VkVOX1hOQzAwMCZERVZfTkVUJlJFVl8wOTAwMDAwMQp4ZW52aWZ8UGRvUXVl
cnlJZDogLSBYRU5ERVZJQ0UKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMTM6UVVFUllfSUQpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQ
bnA6ID09PT0+ICgwKSAoMTM6UVVFUllfSUQpCnhlbnZpZnxQZG9RdWVyeUlk
OiBCdXNRdWVyeUNvbXBhdGlibGVJRHMKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0g
WEVOVklGXFZFTl9YTkMwMDAmREVWX05FVCZSRVZfMDkwMDAwMDUKeGVudmlm
fFBkb1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTkMwMDAmREVWX05FVCZSRVZf
MDkwMDAwMDQKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTkMw
MDAmREVWX05FVCZSRVZfMDkwMDAwMDMKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0g
WEVOVklGXFZFTl9YTkMwMDAmREVWX05FVCZSRVZfMDkwMDAwMDIKeGVudmlm
fFBkb1F1ZXJ5SWQ6IC0gWEVOVklGXFZFTl9YTkMwMDAmREVWX05FVCZSRVZf
MDkwMDAwMDEKeGVudmlmfFBkb1F1ZXJ5SWQ6IC0gWEVOREVWSUNFCnhlbnZp
ZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDEzOlFVRVJZX0lEKSgwMDAwMDAw
MCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkgKDEzOlFVRVJZ
X0lEKQp4ZW52aWZ8UGRvUXVlcnlJZDogQnVzUXVlcnlDb250YWluZXJJRAp4
ZW52aWZ8UGRvUXVlcnlJZDogLSB7OWQ2ZTY5YjMtNDA2NS01ZWRiLWJhZWEt
N2RjNTVmM2Y4OTJlfQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgx
MzpRVUVSWV9JRCkoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNwYXRjaFBucDog
PT09PT4gKDApICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbnZpZnxQZG9EaXNw
YXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoYzAwMDAwYmIp
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgxNTpRVUVSWV9C
VVNfSU5GT1JNQVRJT04pCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0g
KDE1OlFVRVJZX0JVU19JTkZPUk1BVElPTikoMDAwMDAwMDApCnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwODpRVUVSWV9JTlRFUkZBQ0Up
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVS
RkFDRSkoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4g
KDApICgwYjpRVUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMpCnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJ
UkVNRU5UUykoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09
PT4gKDApICgwYTpRVUVSWV9SRVNPVVJDRVMpCnhlbnZpZnxQZG9EaXNwYXRj
aFBucDogPD09PT0gKDBhOlFVRVJZX1JFU09VUkNFUykoYzAwMDAwYmIpCnhl
bnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgxOTpVTktOT1dOKQp4
ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxOTpVTktOT1dOKShjMDAw
MDBiYikKRHJpdmVyIFZlcmlmaWVyOiBBcHBsaWVkIGZvciB4ZW5uZXQuc3lz
LCAwOjB4MWE2OWJiLCAxOjB4YSwgYnVpbGQgMjAzNDgsIGtleSBEbGhqY3ZZ
emxtZlN6clgwcDVhQUdCCnhlbnxNb2R1bGVBZGQ6IEZGRkZGODA2QjAwMTAw
MDAgLSBGRkZGRjgwNkIwMDI4RkZGIFt4ZW5uZXQuc3lzXQp4ZW5uZXR8RHJp
dmVyRW50cnk6IFhFTk5FVCA5LjAuOTEyNSAoMTE3MTIpICgyNy4wOC4yMDI1
KQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMTg6UVVFUllf
TEVHQUNZX0JVU19JTkZPUk1BVElPTikKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMTg6UVVFUllfTEVHQUNZX0JVU19JTkZPUk1BVElPTikoYzAw
MDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwYjpR
VUVSWV9SRVNPVVJDRV9SRVFVSVJFTUVOVFMpCnhlbnZpZnxQZG9EaXNwYXRj
aFBucDogPD09PT0gKDBiOlFVRVJZX1JFU09VUkNFX1JFUVVJUkVNRU5UUyko
YzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgw
ZDpGSUxURVJfUkVTT1VSQ0VfUkVRVUlSRU1FTlRTKQp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6IDw9PT09ICgwZDpGSUxURVJfUkVTT1VSQ0VfUkVRVUlSRU1F
TlRTKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAo
MCkgKDAwOlNUQVJUX0RFVklDRSkKeGVudmlmfFBkb1NldEZyaWVuZGx5TmFt
ZTogMDogWENQLW5nIFBWIE5ldHdvcmsgRGV2aWNlICMwCnhlbnZpZnxMaW5r
R2V0Um91dGluZUFkZHJlc3M6ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFn
ZUJhc2U6ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6IDw9PT09
CnhlbnZpZnxMaW5rR2V0Um91dGluZUFkZHJlc3M6IG5ldGlvLnN5czpHZXRJ
ZlRhYmxlMiAoMDA0NykgQCBGRkZGRjgwNjZCQ0JGQjkwCnhlbnZpZnxMaW5r
R2V0Um91dGluZUFkZHJlc3M6IDw9PT09CnhlbnZpZnxMaW5rR2V0Um91dGlu
ZUFkZHJlc3M6ID09PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6ID09
PT0+CnhlbnZpZnxfX0xpbmtHZXRJbWFnZUJhc2U6IDw9PT09CnhlbnZpZnxM
aW5rR2V0Um91dGluZUFkZHJlc3M6IG5ldGlvLnN5czpGcmVlTWliVGFibGUg
KDAwMzEpIEAgRkZGRkY4MDY2QkNCQkQ2MAp4ZW52aWZ8TGlua0dldFJvdXRp
bmVBZGRyZXNzOiA8PT09PQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDog
Q0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA3LVdGUCBOYXRpdmUg
TUFDIExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwIChXQU4gTWluaXBv
cnQgKElQKS1XRlAgTmF0aXZlIE1BQyBMYXllciBMaWdodFdlaWdodCBGaWx0
ZXItMDAwMCkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5H
IExvY2FsIEFyZWEgQ29ubmVjdGlvbiogNy1Rb1MgUGFja2V0IFNjaGVkdWxl
ci0wMDAwIChXQU4gTWluaXBvcnQgKElQKS1Rb1MgUGFja2V0IFNjaGVkdWxl
ci0wMDAwKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcg
TG9jYWwgQXJlYSBDb25uZWN0aW9uKiA4LVdGUCBOYXRpdmUgTUFDIExheWVy
IExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwIChXQU4gTWluaXBvcnQgKElQdjYp
LVdGUCBOYXRpdmUgTUFDIExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAw
KQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwg
QXJlYSBDb25uZWN0aW9uKiA4LVFvUyBQYWNrZXQgU2NoZWR1bGVyLTAwMDAg
KFdBTiBNaW5pcG9ydCAoSVB2NiktUW9TIFBhY2tldCBTY2hlZHVsZXItMDAw
MCkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIExvY2Fs
IEFyZWEgQ29ubmVjdGlvbiogOS1XRlAgTmF0aXZlIE1BQyBMYXllciBMaWdo
dFdlaWdodCBGaWx0ZXItMDAwMCAoV0FOIE1pbmlwb3J0IChOZXR3b3JrIE1v
bml0b3IpLVdGUCBOYXRpdmUgTUFDIExheWVyIExpZ2h0V2VpZ2h0IEZpbHRl
ci0wCjAwMCkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5H
IExvY2FsIEFyZWEgQ29ubmVjdGlvbiogOS1Rb1MgUGFja2V0IFNjaGVkdWxl
ci0wMDAwIChXQU4gTWluaXBvcnQgKE5ldHdvcmsgTW9uaXRvciktUW9TIFBh
Y2tldCBTY2hlZHVsZXItMDAwMCkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6
IDA6IENIRUNLSU5HIEV0aGVybmV0IChLZXJuZWwgRGVidWdnZXIpIChNaWNy
b3NvZnQgS2VybmVsIERlYnVnIE5ldHdvcmsgQWRhcHRlcikKeGVudmlmfFBk
b1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0aGVybmV0IChJbnRlbChS
KSBQUk8vMTAwMCBNVCBOZXR3b3JrIENvbm5lY3Rpb24pCnhlbnZpZnxQZG9Q
YXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rp
b24qIDcgKFdBTiBNaW5pcG9ydCAoSVApKQp4ZW52aWZ8UGRvUGFyc2VNaWJU
YWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA4IChX
QU4gTWluaXBvcnQgKElQdjYpKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTog
MDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA5IChXQU4gTWlu
aXBvcnQgKE5ldHdvcmsgTW9uaXRvcikpCnhlbnZpZnxQZG9QYXJzZU1pYlRh
YmxlOiAwOiBDSEVDS0lORyBFdGhlcm5ldCAyIChJbnRlbChSKSBQUk8vMTAw
MCBNVCBOZXR3b3JrIENvbm5lY3Rpb24gIzIpCnhlbnZpZnxQZG9QYXJzZU1p
YlRhYmxlOiAwOiBDSEVDS0lORyBFdGhlcm5ldCAzIChYQ1AtbmcgUFYgTmV0
d29yayBEZXZpY2UgIzApCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBD
SEVDS0lORyBFdGhlcm5ldCA0IChYQ1AtbmcgUFYgTmV0d29yayBEZXZpY2Ug
IzIpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lORyBMb2Nh
bCBBcmVhIENvbm5lY3Rpb24qIDUgKFdBTiBNaW5pcG9ydCAoUFBQT0UpKQp4
ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9vcGJhY2sg
UHNldWRvLUludGVyZmFjZSAxIChTb2Z0d2FyZSBMb29wYmFjayBJbnRlcmZh
Y2UgMSkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIFRl
cmVkbyBUdW5uZWxpbmcgUHNldWRvLUludGVyZmFjZSAoTWljcm9zb2Z0IFRl
cmVkbyBUdW5uZWxpbmcgQWRhcHRlcikKeGVudmlmfFBkb1BhcnNlTWliVGFi
bGU6IDA6IENIRUNLSU5HIE1pY3Jvc29mdCBJUC1IVFRQUyBQbGF0Zm9ybSBJ
bnRlcmZhY2UgKE1pY3Jvc29mdCBJUC1IVFRQUyBQbGF0Zm9ybSBBZGFwdGVy
KQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgNnRvNCBB
ZGFwdGVyIChNaWNyb3NvZnQgNnRvNCBBZGFwdGVyKQp4ZW52aWZ8UGRvUGFy
c2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9u
KiAxIChXQU4gTWluaXBvcnQgKFNTVFApKQp4ZW52aWZ8UGRvUGFyc2VNaWJU
YWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiAyIChX
QU4gTWluaXBvcnQgKElLRXYyKSkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6
IDA6IENIRUNLSU5HIExvY2FsIEFyZWEgQ29ubmVjdGlvbiogMyAoV0FOIE1p
bmlwb3J0IChMMlRQKSkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENI
RUNLSU5HIExvY2FsIEFyZWEgQ29ubmVjdGlvbiogNCAoV0FOIE1pbmlwb3J0
IChQUFRQKSkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5H
IExvY2FsIEFyZWEgQ29ubmVjdGlvbiogNiAoV0FOIE1pbmlwb3J0IChHUkUp
KQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwg
QXJlYSBDb25uZWN0aW9uKiA3LVdGUCBOYXRpdmUgTUFDIExheWVyIExpZ2h0
V2VpZ2h0IEZpbHRlci0wMDAwIChXQU4gTWluaXBvcnQgKElQKS1XRlAgTmF0
aXZlIE1BQyBMYXllciBMaWdodFdlaWdodCBGaWx0ZXItMDAwMCkKeGVudmlm
fFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIExvY2FsIEFyZWEgQ29u
bmVjdGlvbiogNy1Rb1MgUGFja2V0IFNjaGVkdWxlci0wMDAwIChXQU4gTWlu
aXBvcnQgKElQKS1Rb1MgUGFja2V0IFNjaGVkdWxlci0wMDAwKQp4ZW52aWZ8
UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25u
ZWN0aW9uKiA4LVdGUCBOYXRpdmUgTUFDIExheWVyIExpZ2h0V2VpZ2h0IEZp
bHRlci0wMDAwIChXQU4gTWluaXBvcnQgKElQdjYpLVdGUCBOYXRpdmUgTUFD
IExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wMDAwKQp4ZW52aWZ8UGRvUGFy
c2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9jYWwgQXJlYSBDb25uZWN0aW9u
KiA4LVFvUyBQYWNrZXQgU2NoZWR1bGVyLTAwMDAgKFdBTiBNaW5pcG9ydCAo
SVB2NiktUW9TIFBhY2tldCBTY2hlZHVsZXItMDAwMCkKeGVudmlmfFBkb1Bh
cnNlTWliVGFibGU6IDA6IENIRUNLSU5HIExvY2FsIEFyZWEgQ29ubmVjdGlv
biogOS1XRlAgTmF0aXZlIE1BQyBMYXllciBMaWdodFdlaWdodCBGaWx0ZXIt
MDAwMCAoV0FOIE1pbmlwb3J0IChOZXR3b3JrIE1vbml0b3IpLVdGUCBOYXRp
dmUgTUFDIExheWVyIExpZ2h0V2VpZ2h0IEZpbHRlci0wCjAwMCkKeGVudmlm
fFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIExvY2FsIEFyZWEgQ29u
bmVjdGlvbiogOS1Rb1MgUGFja2V0IFNjaGVkdWxlci0wMDAwIChXQU4gTWlu
aXBvcnQgKE5ldHdvcmsgTW9uaXRvciktUW9TIFBhY2tldCBTY2hlZHVsZXIt
MDAwMCkKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6IDA6IENIRUNLSU5HIEV0
aGVybmV0IChLZXJuZWwgRGVidWdnZXIpIChNaWNyb3NvZnQgS2VybmVsIERl
YnVnIE5ldHdvcmsgQWRhcHRlcikKeGVudmlmfFBkb1BhcnNlTWliVGFibGU6
IDA6IENIRUNLSU5HIEV0aGVybmV0IChJbnRlbChSKSBQUk8vMTAwMCBNVCBO
ZXR3b3JrIENvbm5lY3Rpb24pCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAw
OiBDSEVDS0lORyBMb2NhbCBBcmVhIENvbm5lY3Rpb24qIDcgKFdBTiBNaW5p
cG9ydCAoSVApKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJ
TkcgTG9jYWwgQXJlYSBDb25uZWN0aW9uKiA4IChXQU4gTWluaXBvcnQgKElQ
djYpKQp4ZW52aWZ8UGRvUGFyc2VNaWJUYWJsZTogMDogQ0hFQ0tJTkcgTG9j
YWwgQXJlYSBDb25uZWN0aW9uKiA5IChXQU4gTWluaXBvcnQgKE5ldHdvcmsg
TW9uaXRvcikpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVDS0lO
RyBFdGhlcm5ldCAyIChJbnRlbChSKSBQUk8vMTAwMCBNVCBOZXR3b3JrIENv
bm5lY3Rpb24gIzIpCnhlbnZpZnxQZG9QYXJzZU1pYlRhYmxlOiAwOiBDSEVD
S0lORyBFdGhlcm5ldCAzIChYQ1AtbmcgUFYgTmV0d29yayBEZXZpY2UgIzAp
CnhlbnZpZnxTZXR0aW5nc1Jlc3RvcmU6IDA6IFNldHRpbmdzQ29weSBub3Qg
cmVxdWlyZWQgZm9yIFhDUC1uZyBQViBOZXR3b3JrIERldmljZSAjMAp4ZW5i
dXN8VW5wbHVnQWNxdWlyZTogPD09PT4KeGVuYnVzfFVucGx1Z1JlbGVhc2U6
IDw9PT0+CnhlbnZpZnxfX1Bkb0QzVG9EMDogKDApID09PT0+CnhlbnZpZnxG
cm9udGVuZFNldFN0YXRlOiBkZXZpY2UvdmlmLzA6ID09PT0+ICdDTE9TRUQn
IC0+ICdDT05ORUNURUQnCnhlbnZpZnxGcm9udGVuZFByZXBhcmU6ID09PT0+
CnhlbnZpZnxGcm9udGVuZFNldE9ubGluZTogPT09PT4KeGVudmlmfEZyb250
ZW5kU2V0T25saW5lOiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRBY3F1aXJlQmFj
a2VuZDogPT09PT0+CnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVu
YnVzU3RhdGVDaGFuZ2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85
OC8wOiA9PT09PiBVbmtub3duCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiBjODhhICgvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMC9z
dGF0ZSkKeGVudmlmfEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0
ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6IDw9
PT09IChDbG9zZWQpCnhlbnZpZnxGcm9udGVuZFNldFhlbmJ1c1N0YXRlOiBk
ZXZpY2UvdmlmLzA6ID09PT0+IEluaXRpYWxpc2luZwp4ZW52aWZ8RnJvbnRl
bmRTZXRYZW5idXNTdGF0ZTogZGV2aWNlL3ZpZi8wOiA8PT09PSBJbml0aWFs
aXNpbmcKeGVudmlmfEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0
ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6ID09
PT0+IENsb3NlZAp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MCAoZGV2aWNlL3ZpZi8wL3N0YXRlKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3N0YXRlKQp4ZW5idXN8RmRv
U2NhbjogYXdha2UKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
OGIgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL3N0YXRlKQp4
ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+CnhlbnZpZnxfX0Zkb0VudW1l
cmF0ZTogZXhhbWluaW5nIFBETyBGRkZGREQ4REQ1OTQ0REEwOiBQTlAgc3Rh
dGUgRW51bWVyYXRlZAp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IFBETyBGRkZG
REQ4REQ1OTQ0REEwICgwKSBpcyBwcmVzZW50IGluIHhlbnN0b3JlIGxpc3QK
eGVudmlmfF9fRmRvRW51bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCBQ
ZG9Jc01pc3Npbmc9MCBQZG9Jc0VqZWN0UmVxdWVzdGVkPTAKeGVudmlmfF9f
RmRvRW51bWVyYXRlOiBnb3QgbmV3IGRldmljZSAwIGZyb20geGVuc3RvcmUK
eGVudmlmfF9fRmRvRW51bWVyYXRlOiA8PT09PQp4ZW52aWZ8RmRvU2Nhbjog
d2FpdGluZy4uLgp4ZW5idXN8RmRvRW51bWVyYXRlOiA9PT09Pgp4ZW5idXN8
RmRvRW51bWVyYXRlOiA8PT09PQp4ZW5idXN8RmRvU2Nhbjogd2FpdGluZy4u
Lgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg4YiAoL2xvY2Fs
L2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAvc3RhdGUpCnhlbnZpZnxGcm9u
dGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2U6IC9sb2NhbC9k
b21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA8PT09PSAoSW5pdFdhaXQpCnhl
bnZpZnxGcm9udGVuZFByZXBhcmU6IDw9PT09CnhlbnZpZnxGcm9udGVuZFNl
dFN0YXRlOiBkZXZpY2UvdmlmLzAgaW4gc3RhdGUgJ1BSRVBBUkVEJwp4ZW52
aWZ8RnJvbnRlbmRDb25uZWN0OiA9PT09Pgp4ZW52aWZ8X19NYWNTZXRQZXJt
YW5lbnRBZGRyZXNzOiBhdHRyL3ZpZi8wOiBDMjo1QjozMzozMTo3NjpFQgp4
ZW52aWZ8X19NYWNTZXRDdXJyZW50QWRkcmVzczogYXR0ci92aWYvMDogQzI6
NUI6MzM6MzE6NzY6RUIKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6
IGM4OGMgKC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wL29ubGlu
ZSkKeGVudmlmfEZyb250ZW5kU2V0TnVtUXVldWVzOiBkZXZpY2UvdmlmLzA6
IDQKeGVudmlmfEZyb250ZW5kU2V0U3BsaXQ6IGRldmljZS92aWYvMDogVFJV
RQp4ZW52aWZ8UmVjZWl2ZXJDb25uZWN0OiA9PT09Pgp4ZW5idXN8Q2FjaGVD
cmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMF9yZWNlaXZlcl9n
bnR0YWIpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfEV2dGNo
bk9wZW46IDE3CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRldmljZV92
aWZfMF9xdWV1ZS0xX3JlY2VpdmVyX2dudHRhYikKeGVuYnVzfENhY2hlQ3Jl
YXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2huT3BlbjogMTgKeGVuYnVzfEV2dGNo
bkJpbmQ6IFsxOF06IENQVSAwOjEKeGVuYnVzfENhY2hlQ3JlYXRlOiA9PT09
PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfcmVjZWl2ZXJfZ250dGFiKQp4ZW5i
dXN8Q2FjaGVDcmVhdGU6IDw9PT09CnhlbmJ1c3xFdnRjaG5PcGVuOiAxOQp4
ZW5idXN8RXZ0Y2huQmluZDogWzE5XTogQ1BVIDA6Mgp4ZW5idXN8Q2FjaGVD
cmVhdGU6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtM19yZWNlaXZlcl9n
bnR0YWIpCnhlbmJ1c3xDYWNoZUNyZWF0ZTogPD09PT0KeGVuYnVzfEV2dGNo
bk9wZW46IDIwCnhlbmJ1c3xFdnRjaG5CaW5kOiBbMjBdOiBDUFUgMDozCnhl
bnZpZnxSZWNlaXZlckNvbm5lY3Q6IDw9PT09CnhlbnZpZnxUcmFuc21pdHRl
ckNvbm5lY3Q6ID09PT0+CnhlbmJ1c3xDYWNoZUNyZWF0ZTogPT09PT4gKGRl
dmljZV92aWZfMF9xdWV1ZS0wX3RyYW5zbWl0dGVyX2dudHRhYikKeGVuYnVz
fENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2huT3BlbjogMjEKeGVu
YnVzfENhY2hlQ3JlYXRlOiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFf
dHJhbnNtaXR0ZXJfZ250dGFiKQp4ZW5idXN8Q2FjaGVDcmVhdGU6IDw9PT09
CnhlbmJ1c3xFdnRjaG5PcGVuOiAyMgp4ZW5idXN8RXZ0Y2huQmluZDogWzIy
XTogQ1BVIDA6MQp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZpY2Vf
dmlmXzBfcXVldWUtMl90cmFuc21pdHRlcl9nbnR0YWIpCnhlbmJ1c3xDYWNo
ZUNyZWF0ZTogPD09PT0KeGVuYnVzfEV2dGNobk9wZW46IDIzCnhlbmJ1c3xF
dnRjaG5CaW5kOiBbMjNdOiBDUFUgMDoyCnhlbmJ1c3xDYWNoZUNyZWF0ZTog
PT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0dGVyX2dudHRh
YikKeGVuYnVzfENhY2hlQ3JlYXRlOiA8PT09PQp4ZW5idXN8RXZ0Y2huT3Bl
bjogMjQKeGVuYnVzfEV2dGNobkJpbmQ6IFsyNF06IENQVSAwOjMKeGVudmlm
fFRyYW5zbWl0dGVyQ29ubmVjdDogPD09PT0KeGVudmlmfENvbnRyb2xsZXJD
b25uZWN0OiA9PT09Pgp4ZW5idXN8Q2FjaGVDcmVhdGU6ID09PT0+IChkZXZp
Y2VfdmlmXzBfY29udHJvbGxlcl9nbnR0YWIpCnhlbmJ1c3xDYWNoZUNyZWF0
ZTogPD09PT0KeGVuYnVzfEV2dGNobk9wZW46IDI1CnhlbnZpZnxDb250cm9s
bGVyQ29ubmVjdDogPD09PT0KeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZl
bnQ6IGM4NzAgKGRldmljZS92aWYvMC9yZXF1ZXN0LXJ4LWNvcHkpCnhlbmJ1
c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAv
cmVxdWVzdC1yeC1jb3B5KQp4ZW5idXN8RmRvU2NhbjogYXdha2UKeGVuYnVz
fFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9m
ZWF0dXJlLXNnKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MyAoZGV2aWNlL3ZpZi8wL2ZlYXR1cmUtc2cpCnhlbmJ1c3xTdG9yZVByb2Nl
c3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvZmVhdHVyZS1yeC1u
b3RpZnkpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChk
ZXZpY2UvdmlmLzAvZmVhdHVyZS1yeC1ub3RpZnkpCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvZmVhdHVyZS1n
c28tdGNwdjQpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcz
IChkZXZpY2UvdmlmLzAvZmVhdHVyZS1nc28tdGNwdjQpCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvZmVhdHVy
ZS1nc28tdGNwdjYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODczIChkZXZpY2UvdmlmLzAvZmVhdHVyZS1nc28tdGNwdjYpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvZmVh
dHVyZS1uby1jc3VtLW9mZmxvYWQpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvZmVhdHVyZS1uby1jc3VtLW9m
ZmxvYWQpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChk
ZXZpY2UvdmlmLzAvZmVhdHVyZS1pcHY2LWNzdW0tb2ZmbG9hZCkKeGVuYnVz
fFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmljZS92aWYvMC9m
ZWF0dXJlLWlwdjYtY3N1bS1vZmZsb2FkKQp4ZW5idXN8U3RvcmVQcm9jZXNz
V2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTAvcngtcmlu
Zy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChk
ZXZpY2UvdmlmLzAvcXVldWUtMC9yeC1yaW5nLXJlZikKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0w
L2V2ZW50LWNoYW5uZWwtcngpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVudC1jaGFubmVs
LXJ4KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2
aWNlL3ZpZi8wL3F1ZXVlLTEvcngtcmluZy1yZWYpCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcXVldWUtMS9y
eC1yaW5nLXJlZikKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
NzAgKGRldmljZS92aWYvMC9xdWV1ZS0xL2V2ZW50LWNoYW5uZWwtcngpCnhl
bmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2Uvdmlm
LzAvcXVldWUtMS9ldmVudC1jaGFubmVsLXJ4KQp4ZW5idXN8U3RvcmVQcm9j
ZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTIvcngt
cmluZy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcz
IChkZXZpY2UvdmlmLzAvcXVldWUtMi9yeC1yaW5nLXJlZikKeGVuYnVzfFN0
b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1
ZS0yL2V2ZW50LWNoYW5uZWwtcngpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRj
aEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcXVldWUtMi9ldmVudC1jaGFu
bmVsLXJ4KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAo
ZGV2aWNlL3ZpZi8wL3F1ZXVlLTMvcngtcmluZy1yZWYpCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcXVldWUt
My9yeC1yaW5nLXJlZikKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6
IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0zL2V2ZW50LWNoYW5uZWwtcngp
CnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2Uv
dmlmLzAvcXVldWUtMy9ldmVudC1jaGFubmVsLXJ4KQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wL3JlcXVlc3Qt
bXVsdGljYXN0LWNvbnRyb2wpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiBjODczIChkZXZpY2UvdmlmLzAvcmVxdWVzdC1tdWx0aWNhc3QtY29u
dHJvbCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRl
dmljZS92aWYvMC9xdWV1ZS0wL3R4LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTAv
dHgtcmluZy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvcXVldWUtMC9ldmVudC1jaGFubmVsLXR4KQp4
ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3Zp
Zi8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbC10eCkKeGVuYnVzfFN0b3JlUHJv
Y2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0xL3R4
LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3
MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvdHgtcmluZy1yZWYpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcXVl
dWUtMS9ldmVudC1jaGFubmVsLXR4KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0
Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTEvZXZlbnQtY2hh
bm5lbC10eCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAg
KGRldmljZS92aWYvMC9xdWV1ZS0yL3R4LXJpbmctcmVmKQp4ZW5idXN8U3Rv
cmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVl
LTIvdHgtcmluZy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50
OiBjODcwIChkZXZpY2UvdmlmLzAvcXVldWUtMi9ldmVudC1jaGFubmVsLXR4
KQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNl
L3ZpZi8wL3F1ZXVlLTIvZXZlbnQtY2hhbm5lbC10eCkKeGVuYnVzfFN0b3Jl
UHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92aWYvMC9xdWV1ZS0z
L3R4LXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTMvdHgtcmluZy1yZWYpCnhlbmJ1
c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzAv
cXVldWUtMy9ldmVudC1jaGFubmVsLXR4KQp4ZW5idXN8U3RvcmVQcm9jZXNz
V2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3F1ZXVlLTMvZXZlbnQt
Y2hhbm5lbC10eCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
NzAgKGRldmljZS92aWYvMC9jdHJsLXJpbmctcmVmKQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL2N0cmwtcmlu
Zy1yZWYpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODcwIChk
ZXZpY2UvdmlmLzAvZXZlbnQtY2hhbm5lbC1jdHJsKQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL2V2ZW50LWNo
YW5uZWwtY3RybCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4
NzAgKGRldmljZS92aWYvMC9tdWx0aS1xdWV1ZS1udW0tcXVldWVzKQp4ZW5i
dXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8w
L211bHRpLXF1ZXVlLW51bS1xdWV1ZXMpCnhlbnZpZnxGcm9udGVuZFdhaXRG
b3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2U6IC9sb2NhbC9kb21haW4vMC9i
YWNrZW5kL3ZpZi85OC8wOiA9PT09PiBVbmtub3duCnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODhkICgvbG9jYWwvZG9tYWluLzAvYmFja2Vu
ZC92aWYvOTgvMC9zdGF0ZSkKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA9PT09
Pgp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGV4YW1pbmluZyBQRE8gRkZGRkRE
OERENTk0NERBMDogUE5QIHN0YXRlIEVudW1lcmF0ZWQKeGVudmlmfF9fRmRv
RW51bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCAoMCkgaXMgcHJlc2Vu
dCBpbiB4ZW5zdG9yZSBsaXN0CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERP
IEZGRkZERDhERDU5NDREQTAgUGRvSXNNaXNzaW5nPTAgUGRvSXNFamVjdFJl
cXVlc3RlZD0wCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZp
Y2UgMCBmcm9tIHhlbnN0b3JlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09
PT0KeGVudmlmfEZkb1NjYW46IHdhaXRpbmcuLi4KeGVudmlmfEZyb250ZW5k
V2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2FsL2RvbWFp
bi8wL2JhY2tlbmQvdmlmLzk4LzA6IDw9PT09IChJbml0V2FpdCkKeGVudmlm
fEZyb250ZW5kU2V0WGVuYnVzU3RhdGU6IGRldmljZS92aWYvMDogPT09PT4g
Q29ubmVjdGVkCnhlbmJ1c3xGZG9FbnVtZXJhdGU6ID09PT0+CnhlbmJ1c3xG
ZG9FbnVtZXJhdGU6IDw9PT09CnhlbmJ1c3xGZG9TY2FuOiB3YWl0aW5nLi4u
CnhlbmJ1c3xGZG9TY2FuOiBhd2FrZQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6
ID09PT0+CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZXhhbWluaW5nIFBETyBG
RkZGREQ4REQ1OTQ0REEwOiBQTlAgc3RhdGUgRW51bWVyYXRlZAp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IFBETyBGRkZGREQ4REQ1OTQ0REEwICgwKSBpcyBw
cmVzZW50IGluIHhlbnN0b3JlIGxpc3QKeGVudmlmfF9fRmRvRW51bWVyYXRl
OiBQRE8gRkZGRkREOERENTk0NERBMCBQZG9Jc01pc3Npbmc9MCBQZG9Jc0Vq
ZWN0UmVxdWVzdGVkPTAKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBnb3QgbmV3
IGRldmljZSAwIGZyb20geGVuc3RvcmUKeGVudmlmfF9fRmRvRW51bWVyYXRl
OiA8PT09PQp4ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8RnJv
bnRlbmRTZXRYZW5idXNTdGF0ZTogZGV2aWNlL3ZpZi8wOiA8PT09PSBDb25u
ZWN0ZWQKeGVudmlmfEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0
ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzA6ID09
PT0+IEluaXRXYWl0CnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBj
ODcwIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhlbmJ1c3xTdG9yZVByb2Nlc3NX
YXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzAvc3RhdGUpCnhlbmJ1c3xT
dG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODhlICgvbG9jYWwvZG9tYWluLzAv
YmFja2VuZC92aWYvOTgvMC9zdGF0ZSkKeGVuYnVzfEZkb0VudW1lcmF0ZTog
PT09PT4KeGVuYnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfF9fRmRv
RW51bWVyYXRlOiA9PT09Pgp4ZW5idXN8RmRvU2Nhbjogd2FpdGluZy4uLgp4
ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGV4YW1pbmluZyBQRE8gRkZGRkREOERE
NTk0NERBMDogUE5QIHN0YXRlIEVudW1lcmF0ZWQKeGVudmlmfF9fRmRvRW51
bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCAoMCkgaXMgcHJlc2VudCBp
biB4ZW5zdG9yZSBsaXN0CnhlbmJ1c3xGZG9TY2FuOiBhd2FrZQp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IFBETyBGRkZGREQ4REQ1OTQ0REEwIFBkb0lzTWlz
c2luZz0wIFBkb0lzRWplY3RSZXF1ZXN0ZWQ9MAp4ZW52aWZ8X19GZG9FbnVt
ZXJhdGU6IGdvdCBuZXcgZGV2aWNlIDAgZnJvbSB4ZW5zdG9yZQp4ZW52aWZ8
X19GZG9FbnVtZXJhdGU6IDw9PT09CnhlbnZpZnxGZG9TY2FuOiB3YWl0aW5n
Li4uCnhlbmJ1c3xGZG9FbnVtZXJhdGU6ID09PT0+CnhlbmJ1c3xGZG9FbnVt
ZXJhdGU6IDw9PT09CnhlbmJ1c3xGZG9TY2FuOiB3YWl0aW5nLi4uCnhlbmJ1
c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50OiBjODhlICgvbG9jYWwvZG9tYWlu
LzAvYmFja2VuZC92aWYvOTgvMC9zdGF0ZSkKeGVudmlmfEZyb250ZW5kV2Fp
dEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZTogL2xvY2FsL2RvbWFpbi8w
L2JhY2tlbmQvdmlmLzk4LzA6IDw9PT09IChDb25uZWN0ZWQpCnhlbnZpZnxD
b250cm9sbGVyRW5hYmxlOiA8PT09Pgp4ZW52aWZ8RnJvbnRlbmRDb25uZWN0
OiA8PT09PQp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNlL3ZpZi8w
IGluIHN0YXRlICdDT05ORUNURUQnCnhlbnZpZnxGcm9udGVuZFNldFN0YXRl
OiBkZXZpY2UvdmlmLzA6IDw9PT09PQp4ZW52aWZ8X19QZG9EM1RvRDA6ICgw
KSA8PT09PQp4ZW5idXN8VW5wbHVnQWNxdWlyZTogPD09PT4KeGVuYnVzfFVu
cGx1Z1JlcXVlc3Q6IE5JQ1MgKE1BS0UpCnhlbnxVbnBsdWdJbmNyZW1lbnRW
YWx1ZTogTklDUyAxCnhlbmJ1c3xVbnBsdWdSZWxlYXNlOiA8PT09Pgp4ZW52
aWZ8X19QZG9TZXREZXZpY2VQbnBTdGF0ZTogc2V0dGluZyBQRE8gRkZGRkRE
OERENTk0NERBMDogUE5QIHN0YXRlIEVudW1lcmF0ZWQgLT4gU3RhcnRlZAp4
ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwMDpTVEFSVF9ERVZJQ0Up
KDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAo
MDk6UVVFUllfQ0FQQUJJTElUSUVTKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgwOTpRVUVSWV9DQVBBQklMSVRJRVMpKDAwMDAwMDAwKQp4ZW52
aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDg6UVVFUllfSU5URVJG
QUNFKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9J
TlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09
PT0+ICgwKSAoMDg6UVVFUllfSU5URVJGQUNFKQp4ZW52aWZ8RmRvRGlzcGF0
Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbmJ1c3xQZG9E
aXNwYXRjaFBucDogPT09PT4gKDA4OlFVRVJZX0lOVEVSRkFDRSkKeGVuYnVz
fFBkb1F1ZXJ5SW50ZXJmYWNlOiBWSUY6IFNUT1JFX0lOVEVSRkFDRSAoVkVS
U0lPTiAyKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVS
WV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAwMDAwMDAwKQp4ZW52aWZ8
UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKDAw
MDAwMDAwKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAoMDg6
UVVFUllfSU5URVJGQUNFKQp4ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6ID09PT0+
ICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbmJ1c3xQZG9EaXNwYXRjaFBucDog
PT09PT4gKDA4OlFVRVJZX0lOVEVSRkFDRSkKeGVuYnVzfFBkb1F1ZXJ5SW50
ZXJmYWNlOiBWSUY6IFNVU1BFTkRfSU5URVJGQUNFIChWRVJTSU9OIDEpCnhl
bmJ1c3xQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFD
RSkoMDAwMDAwMDApCnhlbnZpZnxGZG9EaXNwYXRjaFBucDogPD09PT0gKDA4
OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNwYXRj
aFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDApCnhl
bnZpZnxWaWZBY3F1aXJlOiA9PT09Pgp4ZW52aWZ8VmlmQWNxdWlyZTogPD09
PT0KeGVudmlmfEZyb250ZW5kU2V0SGFzaEFsZ29yaXRobTogZGV2aWNlL3Zp
Zi8wOiBUT0VQTElUWgp4ZW52aWZ8Q29udHJvbGxlckdldEhhc2hGbGFnczog
ZmFpbDIKeGVudmlmfENvbnRyb2xsZXJHZXRIYXNoRmxhZ3M6IGZhaWwxIChj
MDAwMDBiYikKeGVudmlmfEZyb250ZW5kUXVlcnlIYXNoVHlwZXM6IGZhaWwx
IChjMDAwMDBiYikKeGVudmlmfFJlY2VpdmVyUXVlcnlIYXNoQ2FwYWJpbGl0
aWVzOiBmYWlsMSAoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDog
PT09PT4gKDApICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbnZpZnxQZG9EaXNw
YXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAwMDAwMDAp
CnhlbnZpZnxQZG9HZXREbWFBZGFwdGVyOiA8PT09Pgp4ZW5idXN8RG1hRHVt
cERldmljZURlc2NyaXB0aW9uOiBWZXJzaW9uID0gMgp4ZW5idXN8RG1hRHVt
cERldmljZURlc2NyaXB0aW9uOiBNYXN0ZXIgPSBUUlVFCnhlbmJ1c3xEbWFE
dW1wRGV2aWNlRGVzY3JpcHRpb246IFNjYXR0ZXJHYXRoZXIgPSBUUlVFCnhl
bmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERlbWFuZE1vZGUgPSBG
QUxTRQp4ZW5idXN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBBdXRvSW5p
dGlhbGl6ZSA9IEZBTFNFCnhlbmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRp
b246IERtYTMyQml0QWRkcmVzc2VzID0gRkFMU0UKeGVuYnVzfERtYUR1bXBE
ZXZpY2VEZXNjcmlwdGlvbjogSWdub3JlQ291bnQgPSBGQUxTRQp4ZW5idXN8
RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWE2NEJpdEFkZHJlc3NlcyA9
IFRSVUUKeGVuYnVzfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlvbjogQnVzTnVt
YmVyID0gMDAwMDAwMDAKeGVuYnVzfERtYUR1bXBEZXZpY2VEZXNjcmlwdGlv
bjogRG1hQ2hhbm5lbCA9IDAwMDAwMDAwCnhlbmJ1c3xEbWFEdW1wRGV2aWNl
RGVzY3JpcHRpb246IEludGVyZmFjZVR5cGUgPSBJbnRlcm5hbAp4ZW5idXN8
RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBEbWFXaWR0aCA9IDhCaXRzCnhl
bmJ1c3xEbWFEdW1wRGV2aWNlRGVzY3JpcHRpb246IERtYVNwZWVkID0gQ29t
cGF0aWJsZQp4ZW5idXN8RG1hRHVtcERldmljZURlc2NyaXB0aW9uOiBNYXhp
bXVtTGVuZ3RoID0gMDAwMjAwMDAKeGVuYnVzfERtYUR1bXBEZXZpY2VEZXNj
cmlwdGlvbjogRG1hUG9ydCA9IDAwMDAwMDAwCnhlbmJ1c3xQZG9HZXREbWFB
ZGFwdGVyOiA8PT09Pgp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgw
KSAoMDg6UVVFUllfSU5URVJGQUNFKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKGMwMDAwMGJiKQp4ZW52aWZ8
RmRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhl
bmJ1c3xQZG9EaXNwYXRjaFBucDogPT09PT4gKDA4OlFVRVJZX0lOVEVSRkFD
RSkKeGVuYnVzfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDg6UVVFUllfSU5U
RVJGQUNFKShjMDAwMDBiYikKeGVudmlmfEZkb0Rpc3BhdGNoUG5wOiA8PT09
PSAoMDg6UVVFUllfSU5URVJGQUNFKShjMDAwMDBiYikKeGVuYnVzfEZkb0Rp
c3BhdGNoUG5wOiA9PT09PiAoMDg6UVVFUllfSU5URVJGQUNFKQp4ZW5idXN8
RmRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwODpRVUVSWV9JTlRFUkZBQ0UpKGMw
MDAwMGJiKQp4ZW5idXN8RG1hR2V0QWRhcHRlcjogbm8gaW50ZXJjZXB0aW9u
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwOTpRVUVSWV9D
QVBBQklMSVRJRVMpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA5
OlFVRVJZX0NBUEFCSUxJVElFUykoMDAwMDAwMDApCnhlbnZpZnxQZG9EaXNw
YXRjaFBucDogPT09PT4gKDApICgxNDpRVUVSWV9QTlBfREVWSUNFX1NUQVRF
KQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgxNDpRVUVSWV9QTlBf
REVWSUNFX1NUQVRFKSgwMDAwMDAwMCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5w
OiA9PT09PiAoMCkgKGZmOlVOS05PV04pCnhlbnZpZnxQZG9EaXNwYXRjaFBu
cDogPD09PT0gKGZmOlVOS05PV04pKGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwKSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9O
UykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVW
SUNFX1JFTEFUSU9OUykoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDApICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4ZW52
aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwNzpRVUVSWV9ERVZJQ0VfUkVM
QVRJT05TKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMCkgKDBjOlFVRVJZX0RFVklDRV9URVhUKQp4ZW52aWZ8UGRvRGlzcGF0
Y2hQbnA6IDw9PT09ICgwYzpRVUVSWV9ERVZJQ0VfVEVYVCkoYzAwMDAwYmIp
CnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgxMzpRVUVSWV9J
RCkKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMTM6UVVFUllfSUQp
KGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwKSAo
MDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykKeGVudmlmfFBkb0Rpc3BhdGNo
UG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAw
MDApCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwODpRVUVS
WV9JTlRFUkZBQ0UpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA4
OlFVRVJZX0lOVEVSRkFDRSkoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRj
aFBucDogPT09PT4gKDApICgwODpRVUVSWV9JTlRFUkZBQ0UpCnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDA4OlFVRVJZX0lOVEVSRkFDRSkoMDAw
MDAwMDApCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDApICgwNzpR
VUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6
IDw9PT09ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKShjMDAwMDBiYikK
eGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzAgKGRldmljZS92
aWYvMC9yZXF1ZXN0LW11bHRpY2FzdC1jb250cm9sKQp4ZW5idXN8U3RvcmVQ
cm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3ZpZi8wL3JlcXVlc3Qt
bXVsdGljYXN0LWNvbnRyb2wpCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2
ZW50OiBjODcwIChkZXZpY2UvdmlmLzAvcmVxdWVzdC1tdWx0aWNhc3QtY29u
dHJvbCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRl
dmljZS92aWYvMC9yZXF1ZXN0LW11bHRpY2FzdC1jb250cm9sKQp4ZW5idXN8
RmRvU2NhbjogYXdha2UKeGVuYnVzfEZkb0VudW1lcmF0ZTogPT09PT4KeGVu
YnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVuYnVzfEZkb1NjYW46IHdhaXRp
bmcuLi4KeGVudmlmfF9fRmRvRW51bWVyYXRlOiA9PT09Pgp4ZW52aWZ8X19G
ZG9FbnVtZXJhdGU6IGV4YW1pbmluZyBQRE8gRkZGRkREOERENTk0NERBMDog
UE5QIHN0YXRlIFN0YXJ0ZWQKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBQRE8g
RkZGRkREOERENTk0NERBMCAoMCkgaXMgcHJlc2VudCBpbiB4ZW5zdG9yZSBs
aXN0CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkZERDhERDU5NDRE
QTAgUGRvSXNNaXNzaW5nPTAgUGRvSXNFamVjdFJlcXVlc3RlZD0wCnhlbnZp
ZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZpY2UgMCBmcm9tIHhlbnN0
b3JlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfEZkb1Nj
YW46IHdhaXRpbmcuLi4KeGVubmV0fEFkYXB0ZXJRdWVyeUluZm9ybWF0aW9u
OiBVTlNVUFBPUlRFRCBPSUQgMDAwMTAzMDAKeGVubmV0fEFkYXB0ZXJRdWVy
eUluZm9ybWF0aW9uOiBVTlNVUFBPUlRFRCBPSUQgMDAwMTAzMDAKeGVudmlm
fFZpZkVuYWJsZTogPT09PT4KeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRl
dmljZS92aWYvMDogPT09PT4gJ0NPTk5FQ1RFRCcgLT4gJ0VOQUJMRUQnCnhl
bnZpZnxGcm9udGVuZEVuYWJsZTogPT09PT4KeGVudmlmfE1hY0VuYWJsZTog
PT09PT4KeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4OGYgKGRl
dmljZS92aWYvMC9kaXNjb25uZWN0KQp4ZW52aWZ8TWFjRW5hYmxlOiA8PT09
PQp4ZW52aWZ8UmVjZWl2ZXJFbmFibGU6ID09PT0+CnhlbmJ1c3xTdG9yZVBy
b2Nlc3NXYXRjaEV2ZW50OiBjODkwIChkZXZpY2UvdmlmLzAvc3BlZWQpCnhl
bnZpZnxSZWNlaXZlckVuYWJsZTogPD09PT0KeGVudmlmfFRyYW5zbWl0dGVy
RW5hYmxlOiA9PT09Pgp4ZW52aWZ8VHJhbnNtaXR0ZXJFbmFibGU6IDw9PT09
CnhlbnZpZnxGcm9udGVuZEVuYWJsZTogPD09PT0KeGVudmlmfEZyb250ZW5k
U2V0U3RhdGU6IGRldmljZS92aWYvMCBpbiBzdGF0ZSAnRU5BQkxFRCcKeGVu
dmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92aWYvMDogPD09PT09Cnhl
bm5ldHxEaXNwbGF5TGlua1N0YXRlOiAwOiBMSU5LOiBVUDogU1BFRUQ9MTAw
MDAwMDAwMDAwIERVUExFWD1GVUxMCnhlbnZpZnxWaWZFbmFibGU6IDw9PT09
Cnhlbm5ldHxSZWNlaXZlckVuYWJsZTogMDogPD09PT0+CgojIyMgdW5wbHVn
IDEzCgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg4YyAoL2xv
Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAvb25saW5lKQp4ZW5idXN8
U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MCAoZGV2aWNlL3ZpZi8wKQp4
ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg3MyAoZGV2aWNlL3Zp
Zi8wKQp4ZW5idXN8RmRvU2NhbjogYXdha2UKeGVuYnVzfFN0b3JlUHJvY2Vz
c1dhdGNoRXZlbnQ6IGM4OGYgKGRldmljZS92aWYvMC9kaXNjb25uZWN0KQp4
ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDogYzg5MCAoZGV2aWNlL3Zp
Zi8wL3NwZWVkKQp4ZW52aWZ8UGRvUmVxdWVzdEVqZWN0OiBGRkZGREQ4REQ2
Q0I5RDEwICgwKQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+CnhlbnZp
ZnxGZG9EaXNwYXRjaFBucDogPT09PT4gKDA3OlFVRVJZX0RFVklDRV9SRUxB
VElPTlMpCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZXhhbWluaW5nIFBETyBG
RkZGREQ4REQ1OTQ0REEwOiBQTlAgc3RhdGUgU3RhcnRlZAp4ZW52aWZ8RmRv
UXVlcnlEZXZpY2VSZWxhdGlvbnM6IHdhaXRpbmcgZm9yIHNjYW4gdGhyZWFk
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZGRkZERDhERDU5NDREQTAg
KDApIGlzIG5vdCBwcmVzZW50IGluIHhlbnN0b3JlIGxpc3QKeGVudmlmfF9f
RmRvRW51bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCBQZG9Jc01pc3Np
bmc9MCBQZG9Jc0VqZWN0UmVxdWVzdGVkPTEKeGVudmlmfF9fRmRvRW51bWVy
YXRlOiA8PT09PQp4ZW52aWZ8RmRvU2Nhbjogd2FpdGluZy4uLgp4ZW52aWZ8
RmRvUXVlcnlEZXZpY2VSZWxhdGlvbnM6IDEgUERPKHMpCnhlbmJ1c3xQZG9E
aXNwYXRjaFBucDogPT09PT4gKDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMp
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPT09PT4KeGVuYnVzfFBkb0Rpc3Bh
dGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAw
MDAwMDApCnhlbnZpZnxGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseTogMDAw
MDAwMDAKeGVudmlmfF9fRmRvRW51bWVyYXRlOiBleGFtaW5pbmcgUERPIEZG
RkZERDhERDU5NDREQTA6IFBOUCBzdGF0ZSBTdGFydGVkCnhlbmJ1c3xGZG9F
bnVtZXJhdGU6ID09PT0+CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZG
RkZERDhERDU5NDREQTAgKDApIGlzIG5vdCBwcmVzZW50IGluIHhlbnN0b3Jl
IGxpc3QKeGVuYnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfF9fRmRv
RW51bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCBQZG9Jc01pc3Npbmc9
MCBQZG9Jc0VqZWN0UmVxdWVzdGVkPTEKeGVudmlmfEZkb0Rpc3BhdGNoUG5w
OiA8PT09PSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9OUykoMDAwMDAwMDAp
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfEZkb1NjYW46
IHdhaXRpbmcuLi4KeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09PiAoMCkg
KDA3OlFVRVJZX0RFVklDRV9SRUxBVElPTlMpCnhlbmJ1c3xGZG9TY2FuOiB3
YWl0aW5nLi4uCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFV
RVJZX0RFVklDRV9SRUxBVElPTlMpKGMwMDAwMGJiKQp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwKSAoMDc6UVVFUllfREVWSUNFX1JFTEFUSU9O
UykKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA8PT09PSAoMDc6UVVFUllfREVW
SUNFX1JFTEFUSU9OUykoYzAwMDAwYmIpCnhlbnZpZnxQZG9EaXNwYXRjaFBu
cDogPT09PT4gKDApICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4ZW52
aWZ8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwNzpRVUVSWV9ERVZJQ0VfUkVM
QVRJT05TKShjMDAwMDBiYikKeGVudmlmfFBkb0Rpc3BhdGNoUG5wOiA9PT09
PiAoMCkgKDAxOlFVRVJZX1JFTU9WRV9ERVZJQ0UpCnhlbnZpZnxfX1Bkb1Nl
dERldmljZVBucFN0YXRlOiBzZXR0aW5nIFBETyBGRkZGREQ4REQ1OTQ0REEw
OiBQTlAgc3RhdGUgU3RhcnRlZCAtPiBSZW1vdmVQZW5kaW5nCnhlbnZpZnxQ
ZG9EaXNwYXRjaFBucDogPD09PT0gKDAxOlFVRVJZX1JFTU9WRV9ERVZJQ0Up
KDAwMDAwMDAwKQp4ZW5uZXR8UmVjZWl2ZXJEaXNhYmxlOiAwOiA8PT09PT4g
KEluZGljYXRlZCA9IDYxIFJldHVybmVkID0gNjEpCnhlbnZpZnxWaWZEaXNh
YmxlOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNlL3Zp
Zi8wOiA9PT09PiAnRU5BQkxFRCcgLT4gJ0NPTk5FQ1RFRCcKeGVudmlmfEZy
b250ZW5kRGlzYWJsZTogPT09PT4KeGVudmlmfFRyYW5zbWl0dGVyRGlzYWJs
ZTogPT09PT4KeGVuYnVzfERlYnVnVHJpZ2dlcjogPT09PT4KWEVOfERFQlVH
OiA9PT09PiAoeGVudmlmLnN5cyArIDAwMDAwMDAwMDAwMkNEQzApCnhlbnZp
ZnxUUkFOU01JVFRFUlswXTogMHhGRkZGREQ4REQzNDhCMDAwIFtFTkFCTEVE
XQp4ZW52aWZ8VFJBTlNNSVRURVJbMF06IEZST05UOiByZXFfcHJvZF9wdnQg
PSAxMzMgcnNwX2NvbnMgPSAxMTUgbnJfZW50cyA9IDI1NiBzcmluZyA9IEZG
RkZBQjAxQjkxQUYwMDAKeGVudmlmfFRSQU5TTUlUVEVSWzBdOiBTSEFSRUQ6
IHJlcV9wcm9kID0gMTMzIHJlcV9ldmVudCA9IDExNiByc3BfcHJvZCA9IDEx
NSByc3BfZXZlbnQgPSAxMTYKeGVudmlmfFRSQU5TTUlUVEVSWzBdOiBSZXF1
ZXN0c1Bvc3RlZCA9IDEzMyBSZXF1ZXN0c1B1c2hlZCA9IDEzMyBSZXNwb25z
ZXNQcm9jZXNzZWQgPSAxMTUKeGVudmlmfFRSQU5TTUlUVEVSWzBdOiBTdGF0
ZToKeGVudmlmfFRSQU5TTUlUVEVSWzBdOiAtIFBhY2tldCA9IDAwMDAwMDAw
MDAwMDAwMDAKeGVudmlmfFRSQU5TTUlUVEVSWzBdOiAtIENvdW50ID0gMAp4
ZW52aWZ8VFJBTlNNSVRURVJbMF06IFBhY2tldHNHcmFudGVkID0gMzggUGFj
a2V0c0NvcGllZCA9IDI0IFBhY2tldHNGYWtlZCA9IDAKeGVudmlmfFRSQU5T
TUlUVEVSWzBdOiBQYWNrZXRzUXVldWVkID0gNjIgUGFja2V0c1ByZXBhcmVk
ID0gNjIgUGFja2V0c1VucHJlcGFyZWQgPSAwIFBhY2tldHNTZW50ID0gNjIg
UGFja2V0c0NvbXBsZXRlZCA9IDYyCnhlbnZpZnxUUkFOU01JVFRFUlswXTog
RXZlbnRzID0gNzIgUG9sbERwY3MgPSA3MQpYRU58REVCVUc6IDw9PT09ICh4
ZW52aWYuc3lzICsgMDAwMDAwMDAwMDAyQ0RDMCkKeGVuYnVzfERlYnVnVHJp
Z2dlcjogPD09PT0KeGVudmlmfF9fVHJhbnNtaXR0ZXJSaW5nRmFrZVJlc3Bv
bnNlczogZGV2aWNlL3ZpZi8wWzBdOiBmYWtlZCAxOCByZXNwb25zZXMKeGVu
dmlmfFRyYW5zbWl0dGVyRGlzYWJsZTogPD09PT0KeGVudmlmfFJlY2VpdmVy
RGlzYWJsZTogPT09PT4KeGVudmlmfFJlY2VpdmVyRGlzYWJsZTogPD09PT0K
eGVudmlmfE1hY0Rpc2FibGU6ID09PT0+CnhlbnZpZnxNYWNEaXNhYmxlOiA8
PT09PQp4ZW52aWZ8RnJvbnRlbmREaXNhYmxlOiA8PT09PQp4ZW52aWZ8RnJv
bnRlbmRTZXRTdGF0ZTogZGV2aWNlL3ZpZi8wIGluIHN0YXRlICdDT05ORUNU
RUQnCnhlbnZpZnxGcm9udGVuZFNldFN0YXRlOiBkZXZpY2UvdmlmLzA6IDw9
PT09PQp4ZW52aWZ8UmVjZWl2ZXJXYWl0Rm9yUGFja2V0czogZGV2aWNlL3Zp
Zi8wOiA9PT09Pgp4ZW52aWZ8UmVjZWl2ZXJXYWl0Rm9yUGFja2V0czogZGV2
aWNlL3ZpZi8wOiAoTG9hbmVkID0gNjEgUmV0dXJuZWQgPSA2MSkKeGVudmlm
fFJlY2VpdmVyV2FpdEZvclBhY2tldHM6IGRldmljZS92aWYvMDogPD09PT0K
eGVudmlmfF9fVHJhbnNtaXR0ZXJSaW5nQWJvcnRQYWNrZXRzOiBkZXZpY2Uv
dmlmLzBbM106IGFib3J0ZWQgMCBwYWNrZXRzCnhlbnZpZnxfX1RyYW5zbWl0
dGVyUmluZ0Fib3J0UGFja2V0czogZGV2aWNlL3ZpZi8wWzJdOiBhYm9ydGVk
IDAgcGFja2V0cwp4ZW52aWZ8X19UcmFuc21pdHRlclJpbmdBYm9ydFBhY2tl
dHM6IGRldmljZS92aWYvMFsxXTogYWJvcnRlZCAwIHBhY2tldHMKeGVudmlm
fF9fVHJhbnNtaXR0ZXJSaW5nQWJvcnRQYWNrZXRzOiBkZXZpY2UvdmlmLzBb
MF06IGFib3J0ZWQgMCBwYWNrZXRzCnhlbnZpZnxWaWZEaXNhYmxlOiB3YWl0
aW5nIGZvciBtYWMgdGhyZWFkLi4KeGVudmlmfFZpZkRpc2FibGU6IGRvbmUK
eGVudmlmfFZpZkRpc2FibGU6IDw9PT09CnhlbnZpZnxNYWNSZW1vdmVNdWx0
aWNhc3RBZGRyZXNzOiBhdHRyL3ZpZi8wOiAzMzozMzowMDowMDowMDowMQp4
ZW52aWZ8TWFjUmVtb3ZlTXVsdGljYXN0QWRkcmVzczogYXR0ci92aWYvMDog
MzM6MzM6RkY6MDM6N0U6MkIKeGVudmlmfE1hY1JlbW92ZU11bHRpY2FzdEFk
ZHJlc3M6IGF0dHIvdmlmLzA6IDMzOjMzOjAwOjAxOjAwOjAzCnhlbnZpZnxN
YWNSZW1vdmVNdWx0aWNhc3RBZGRyZXNzOiBhdHRyL3ZpZi8wOiAzMzozMzow
MDowMDowMDpGQgp4ZW52aWZ8TWFjUmVtb3ZlTXVsdGljYXN0QWRkcmVzczog
YXR0ci92aWYvMDogMzM6MzM6MDA6MDA6MDA6MEMKeGVudmlmfE1hY1JlbW92
ZU11bHRpY2FzdEFkZHJlc3M6IGF0dHIvdmlmLzA6IDAxOjAwOjVFOjAwOjAw
OjAxCnhlbnZpZnxNYWNSZW1vdmVNdWx0aWNhc3RBZGRyZXNzOiBhdHRyL3Zp
Zi8wOiAwMTowMDo1RTowMDowMDpGQwp4ZW52aWZ8TWFjUmVtb3ZlTXVsdGlj
YXN0QWRkcmVzczogYXR0ci92aWYvMDogMDE6MDA6NUU6MDA6MDA6RkIKeGVu
dmlmfE1hY1JlbW92ZU11bHRpY2FzdEFkZHJlc3M6IGF0dHIvdmlmLzA6IDAx
OjAwOjVFOjdGOkZGOkZBCnhlbmJ1c3xTdG9yZVByb2Nlc3NXYXRjaEV2ZW50
OiBjODcwIChkZXZpY2UvdmlmLzAvcmVxdWVzdC1tdWx0aWNhc3QtY29udHJv
bCkKeGVuYnVzfFN0b3JlUHJvY2Vzc1dhdGNoRXZlbnQ6IGM4NzMgKGRldmlj
ZS92aWYvMC9yZXF1ZXN0LW11bHRpY2FzdC1jb250cm9sKQp4ZW5idXN8RmRv
U2NhbjogYXdha2UKeGVudmlmfF9fRmRvRW51bWVyYXRlOiA9PT09Pgp4ZW52
aWZ8X19GZG9FbnVtZXJhdGU6IGV4YW1pbmluZyBQRE8gRkZGRkREOERENTk0
NERBMDogUE5QIHN0YXRlIFJlbW92ZVBlbmRpbmcKeGVudmlmfF9fRmRvRW51
bWVyYXRlOiBQRE8gRkZGRkREOERENTk0NERBMCAoMCkgaXMgcHJlc2VudCBp
biB4ZW5zdG9yZSBsaXN0CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogUERPIEZG
RkZERDhERDU5NDREQTAgUGRvSXNNaXNzaW5nPTAgUGRvSXNFamVjdFJlcXVl
c3RlZD0xCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZpY2Ug
MCBmcm9tIHhlbnN0b3JlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09PT0K
eGVudmlmfEZkb1NjYW46IHdhaXRpbmcuLi4KeGVuYnVzfEZkb0VudW1lcmF0
ZTogPT09PT4KeGVuYnVzfEZkb0VudW1lcmF0ZTogPD09PT0KeGVuYnVzfEZk
b1NjYW46IHdhaXRpbmcuLi4KeGVudmlmfFZpZlJlbGVhc2U6ID09PT0+Cnhl
bnZpZnxWaWZSZWxlYXNlOiA8PT09PQp4ZW52aWZ8UGRvRGlzcGF0Y2hQbnA6
ID09PT0+ICgwKSAoMDI6UkVNT1ZFX0RFVklDRSkKeGVudmlmfFBkb1JlbW92
ZURldmljZTogUERPIEZGRkZERDhERDU5NDREQTAgaXMgcG93ZXIgc3RhdGUg
MQp4ZW5idXN8VW5wbHVnQWNxdWlyZTogPD09PT4KeGVuYnVzfFVucGx1Z1Jl
cXVlc3Q6IE5JQ1MgKFJFVk9LRSkKeGVufFVucGx1Z0RlY3JlbWVudFZhbHVl
OiBOSUNTIDAKeGVuYnVzfFVucGx1Z1JlbGVhc2U6IDw9PT0+CnhlbnZpZnxQ
ZG9EMFRvRDM6ID09PT0+CnhlbnZpZnxfX1Bkb0QwVG9EMzogKDApID09PT0+
CnhlbnZpZnxGcm9udGVuZFNldFN0YXRlOiBkZXZpY2UvdmlmLzA6ID09PT0+
ICdDT05ORUNURUQnIC0+ICdDTE9TRUQnCnhlbnZpZnxGcm9udGVuZENsb3Nl
OiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0
YXRlQ2hhbmdlOiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92aWYvOTgvMDog
PT09PT4gVW5rbm93bgp4ZW5idXN8U3RvcmVQcm9jZXNzV2F0Y2hFdmVudDog
Yzg5MSAoL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmlmLzk4LzAvc3RhdGUp
CnhlbnZpZnxGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFu
Z2U6IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZpZi85OC8wOiA8PT09PSAo
Q2xvc2VkKQp4ZW52aWZ8RnJvbnRlbmRSZWxlYXNlQmFja2VuZDogPT09PT0+
CnhlbnZpZnxGcm9udGVuZFJlbGVhc2VCYWNrZW5kOiA8PT09PT0KeGVudmlm
fEZyb250ZW5kQ2xvc2U6IDw9PT09CnhlbnZpZnxGcm9udGVuZERpc2Nvbm5l
Y3Q6ID09PT0+CnhlbnZpZnxDb250cm9sbGVyRGlzYWJsZTogPD09PT4KeGVu
dmlmfENvbnRyb2xsZXJEaXNjb25uZWN0OiA9PT09Pgp4ZW5idXN8RXZ0Y2hu
Q2xvc2U6IDI1CnhlbmJ1c3xDYWNoZURlc3Ryb3k6ID09PT0+IChkZXZpY2Vf
dmlmXzBfY29udHJvbGxlcl9nbnR0YWIpCnhlbmJ1c3xDYWNoZURlc3Ryb3k6
IDw9PT09CnhlbnZpZnxDb250cm9sbGVyRGlzY29ubmVjdDogPD09PT0KeGVu
dmlmfFRyYW5zbWl0dGVyRGlzY29ubmVjdDogPT09PT4KeGVuYnVzfEV2dGNo
bkNsb3NlOiAyNAp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9PT09PiAoZGV2aWNl
X3ZpZl8wX3F1ZXVlLTNfdHJhbnNtaXR0ZXJfZ250dGFiKQp4ZW5idXN8RXZ0
Y2huUmVhcDogMjUKeGVuYnVzfEV2dGNoblJlYXA6IDI0CnhlbmJ1c3xDYWNo
ZURlc3Ryb3k6IDw9PT09CnhlbmJ1c3xFdnRjaG5DbG9zZTogMjMKeGVuYnVz
fENhY2hlRGVzdHJveTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0yX3Ry
YW5zbWl0dGVyX2dudHRhYikKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0K
eGVuYnVzfEV2dGNobkNsb3NlOiAyMgp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9
PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfdHJhbnNtaXR0ZXJfZ250dGFi
KQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8RXZ0Y2huQ2xv
c2U6IDIxCnhlbmJ1c3xDYWNoZURlc3Ryb3k6ID09PT0+IChkZXZpY2Vfdmlm
XzBfcXVldWUtMF90cmFuc21pdHRlcl9nbnR0YWIpCnhlbmJ1c3xFdnRjaG5S
ZWFwOiAyMQp4ZW5idXN8RXZ0Y2huUmVhcDogMjMKeGVuYnVzfENhY2hlRGVz
dHJveTogPD09PT0KeGVudmlmfFRyYW5zbWl0dGVyRGlzY29ubmVjdDogPD09
PT0KeGVudmlmfFJlY2VpdmVyRGlzY29ubmVjdDogPT09PT0+CnhlbmJ1c3xF
dnRjaG5DbG9zZTogMjAKeGVuYnVzfENhY2hlRGVzdHJveTogPT09PT4gKGRl
dmljZV92aWZfMF9xdWV1ZS0zX3JlY2VpdmVyX2dudHRhYikKeGVuYnVzfEV2
dGNoblJlYXA6IDIwCnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1
c3xFdnRjaG5DbG9zZTogMTkKeGVuYnVzfENhY2hlRGVzdHJveTogPT09PT4g
KGRldmljZV92aWZfMF9xdWV1ZS0yX3JlY2VpdmVyX2dudHRhYikKeGVuYnVz
fEV2dGNoblJlYXA6IDE5CnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09Cnhl
bmJ1c3xFdnRjaG5DbG9zZTogMTgKeGVuYnVzfENhY2hlRGVzdHJveTogPT09
PT4gKGRldmljZV92aWZfMF9xdWV1ZS0xX3JlY2VpdmVyX2dudHRhYikKeGVu
YnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVuYnVzfEV2dGNobkNsb3NlOiAx
Nwp4ZW5idXN8RXZ0Y2huUmVhcDogMTcKeGVuYnVzfENhY2hlRGVzdHJveTog
PT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0wX3JlY2VpdmVyX2dudHRhYikK
eGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVudmlmfFJlY2VpdmVyRGlz
Y29ubmVjdDogPD09PT0KeGVudmlmfEZyb250ZW5kRGlzY29ubmVjdDogPD09
PT0KeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92aWYvMCBpbiBz
dGF0ZSAnQ0xPU0VEJwp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0ZTogZGV2aWNl
L3ZpZi8wOiA8PT09PT0KeGVudmlmfF9fUGRvRDBUb0QzOiAoMCkgPD09PT0K
eGVuYnVzfEV2dGNoblJlYXA6IDIyCnhlbmJ1c3xFdnRjaG5SZWFwOiAxOAp4
ZW52aWZ8UGRvRDBUb0QzOiA8PT09PQp4ZW52aWZ8X19QZG9TZXREZXZpY2VQ
bnBTdGF0ZTogc2V0dGluZyBQRE8gRkZGRkREOERENTk0NERBMDogUE5QIHN0
YXRlIFJlbW92ZVBlbmRpbmcgLT4gRW51bWVyYXRlZAp4ZW52aWZ8UGRvRGlz
cGF0Y2hQbnA6IDw9PT09ICgwMjpSRU1PVkVfREVWSUNFKSgwMDAwMDAwMCkK
eGVubmV0fERyaXZlclVubG9hZDogWEVOTkVUIDkuMC45MTI1ICgxMTcxMikg
KDI3LjA4LjIwMjUpCnhlbnZpZnxQZG9EaXNwYXRjaFBucDogPT09PT4gKDAp
ICgxMTpFSkVDVCkKeGVudmlmfFBkb0VqZWN0OiAwCnhlbnZpZnxfX1Bkb1Nl
dERldmljZVBucFN0YXRlOiBzZXR0aW5nIFBETyBGRkZGREQ4REQ1OTQ0REEw
OiBQTlAgc3RhdGUgRW51bWVyYXRlZCAtPiBEZWxldGVkCnhlbnZpZnxfX1Bk
b1NldE1pc3Npbmc6IFBETyBGRkZGREQ4REQ1OTQ0REEwIHNldHRpbmcgbWlz
c2luZyByZWFzb24gZGV2aWNlIGVqZWN0ZWQKeGVudmlmfFBkb0Rpc3BhdGNo
UG5wOiA8PT09PSAoMTE6RUpFQ1QpKDAwMDAwMDAwKQp4ZW52aWZ8RmRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4
ZW52aWZ8RmRvUXVlcnlEZXZpY2VSZWxhdGlvbnM6IHdhaXRpbmcgZm9yIHNj
YW4gdGhyZWFkCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPT09PT4KeGVudmlm
fF9fRmRvRW51bWVyYXRlOiBleGFtaW5pbmcgUERPIEZGRkZERDhERDU5NDRE
QTA6IFBOUCBzdGF0ZSBEZWxldGVkCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTog
Z290IG5ldyBkZXZpY2UgMCBmcm9tIHhlbnN0b3JlCnhlbnZpZnxfX0Zkb0Vu
dW1lcmF0ZTogPD09PT0KeGVudmlmfEZkb1NjYW46IHdhaXRpbmcuLi4KeGVu
dmlmfEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiAwIFBETyhzKQp4ZW5idXN8
UGRvRGlzcGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJ
T05TKQp4ZW5idXN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwNzpRVUVSWV9E
RVZJQ0VfUkVMQVRJT05TKSgwMDAwMDAwMCkKeGVudmlmfEZkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5OiAwMDAwMDAwMAp4ZW52aWZ8UGRvRGVzdHJveTog
RkZGRkREOERENkNCOUQxMCAoMCkgKGRldmljZSBlamVjdGVkKQp4ZW52aWZ8
RnJvbnRlbmRTdXNwZW5kOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRTZXRTdGF0
ZTogZGV2aWNlL3ZpZi8wOiA9PT09PiAnQ0xPU0VEJyAtPiAnVU5LTk9XTicK
eGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92aWYvMCBpbiBzdGF0
ZSAnVU5LTk9XTicKeGVudmlmfEZyb250ZW5kU2V0U3RhdGU6IGRldmljZS92
aWYvMDogPD09PT09CnhlbnZpZnxGcm9udGVuZFN1c3BlbmQ6IHdhaXRpbmcg
Zm9yIGVqZWN0IHRocmVhZAp4ZW52aWZ8RnJvbnRlbmRTdXNwZW5kOiA8PT09
PQp4ZW52aWZ8RnJvbnRlbmRUZWFyZG93bjogPT09PT4KeGVudmlmfF9fRmRv
RW51bWVyYXRlOiA9PT09Pgp4ZW52aWZ8RnJvbnRlbmRNaWI6IDw9PT09Cnhl
bnZpZnxGcm9udGVuZEVqZWN0OiBkZXZpY2UvdmlmLzA6IDw9PT09CnhlbnZp
ZnxUcmFuc21pdHRlclJpbmdXYXRjaGRvZzogPD09PT0KeGVuYnVzfENhY2hl
RGVzdHJveTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0
dGVyX3JlcXVlc3QpCnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1
c3xDYWNoZURlc3Ryb3k6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtM190
cmFuc21pdHRlcl9mcmFnbWVudCkKeGVuYnVzfENhY2hlRGVzdHJveTogPD09
PT0KeGVuYnVzfFJhbmdlU2V0RGVzdHJveTogPT09PT4gKGRldmljZV92aWZf
MF9xdWV1ZS0zX3RyYW5zbWl0dGVyX3JlcV9pZCkKeGVuYnVzfFJhbmdlU2V0
RGVzdHJveTogPD09PT0KeGVuYnVzfENhY2hlRGVzdHJveTogPT09PT4gKGRl
dmljZV92aWZfMF9xdWV1ZS0zX3RyYW5zbWl0dGVyX211bHRpY2FzdF9jb250
cm9sKQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8Q2FjaGVE
ZXN0cm95OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTNfdHJhbnNtaXR0
ZXJfYnVmZmVyKQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW52aWZ8
VHJhbnNtaXR0ZXJSaW5nV2F0Y2hkb2c6IDw9PT09CnhlbmJ1c3xDYWNoZURl
c3Ryb3k6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMl90cmFuc21pdHRl
cl9yZXF1ZXN0KQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8
Q2FjaGVEZXN0cm95OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfdHJh
bnNtaXR0ZXJfZnJhZ21lbnQpCnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09
CnhlbmJ1c3xSYW5nZVNldERlc3Ryb3k6ID09PT0+IChkZXZpY2VfdmlmXzBf
cXVldWUtMl90cmFuc21pdHRlcl9yZXFfaWQpCnhlbmJ1c3xSYW5nZVNldERl
c3Ryb3k6IDw9PT09CnhlbmJ1c3xDYWNoZURlc3Ryb3k6ID09PT0+IChkZXZp
Y2VfdmlmXzBfcXVldWUtMl90cmFuc21pdHRlcl9tdWx0aWNhc3RfY29udHJv
bCkKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVuYnVzfENhY2hlRGVz
dHJveTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0yX3RyYW5zbWl0dGVy
X2J1ZmZlcikKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVudmlmfFRy
YW5zbWl0dGVyUmluZ1dhdGNoZG9nOiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0
cm95OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTFfdHJhbnNtaXR0ZXJf
cmVxdWVzdCkKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVuYnVzfENh
Y2hlRGVzdHJveTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0xX3RyYW5z
bWl0dGVyX2ZyYWdtZW50KQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4
ZW5idXN8UmFuZ2VTZXREZXN0cm95OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1
ZXVlLTFfdHJhbnNtaXR0ZXJfcmVxX2lkKQp4ZW5idXN8UmFuZ2VTZXREZXN0
cm95OiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9PT09PiAoZGV2aWNl
X3ZpZl8wX3F1ZXVlLTFfdHJhbnNtaXR0ZXJfbXVsdGljYXN0X2NvbnRyb2wp
CnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1c3xDYWNoZURlc3Ry
b3k6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMV90cmFuc21pdHRlcl9i
dWZmZXIpCnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbnZpZnxUcmFu
c21pdHRlclJpbmdXYXRjaGRvZzogPD09PT0KeGVuYnVzfENhY2hlRGVzdHJv
eTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1ZS0wX3RyYW5zbWl0dGVyX3Jl
cXVlc3QpCnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1c3xDYWNo
ZURlc3Ryb3k6ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtMF90cmFuc21p
dHRlcl9mcmFnbWVudCkKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVu
YnVzfFJhbmdlU2V0RGVzdHJveTogPT09PT4gKGRldmljZV92aWZfMF9xdWV1
ZS0wX3RyYW5zbWl0dGVyX3JlcV9pZCkKeGVuYnVzfFJhbmdlU2V0RGVzdHJv
eTogPD09PT0KeGVuYnVzfENhY2hlRGVzdHJveTogPT09PT4gKGRldmljZV92
aWZfMF9xdWV1ZS0wX3RyYW5zbWl0dGVyX211bHRpY2FzdF9jb250cm9sKQp4
ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0cm95
OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTBfdHJhbnNtaXR0ZXJfYnVm
ZmVyKQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8Q2FjaGVE
ZXN0cm95OiA9PT09PiAoZGV2aWNlX3ZpZl8wX3RyYW5zbWl0dGVyX3BhY2tl
dCkKeGVuYnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVudmlmfFJlY2VpdmVy
UmluZ1dhdGNoZG9nOiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9PT09
PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTNfcmVjZWl2ZXJfZnJhZ21lbnQpCnhl
bmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1c3xDYWNoZURlc3Ryb3k6
ID09PT0+IChkZXZpY2VfdmlmXzBfcXVldWUtM19yZWNlaXZlcl9wYWNrZXQp
CnhlbmJ1c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbnZpZnxSZWNlaXZlclJp
bmdXYXRjaGRvZzogPD09PT0KeGVuYnVzfENhY2hlRGVzdHJveTogPT09PT4g
KGRldmljZV92aWZfMF9xdWV1ZS0yX3JlY2VpdmVyX2ZyYWdtZW50KQp4ZW5i
dXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9
PT09PiAoZGV2aWNlX3ZpZl8wX3F1ZXVlLTJfcmVjZWl2ZXJfcGFja2V0KQp4
ZW5idXN8Q2FjaGVEZXN0cm95OiA8PT09PQp4ZW52aWZ8UmVjZWl2ZXJSaW5n
V2F0Y2hkb2c6IDw9PT09CnhlbmJ1c3xDYWNoZURlc3Ryb3k6ID09PT0+IChk
ZXZpY2VfdmlmXzBfcXVldWUtMV9yZWNlaXZlcl9mcmFnbWVudCkKeGVuYnVz
fENhY2hlRGVzdHJveTogPD09PT0KeGVuYnVzfENhY2hlRGVzdHJveTogPT09
PT4gKGRldmljZV92aWZfMF9xdWV1ZS0xX3JlY2VpdmVyX3BhY2tldCkKeGVu
YnVzfENhY2hlRGVzdHJveTogPD09PT0KeGVudmlmfFJlY2VpdmVyUmluZ1dh
dGNoZG9nOiA8PT09PQp4ZW5idXN8Q2FjaGVEZXN0cm95OiA9PT09PiAoZGV2
aWNlX3ZpZl8wX3F1ZXVlLTBfcmVjZWl2ZXJfZnJhZ21lbnQpCnhlbmJ1c3xD
YWNoZURlc3Ryb3k6IDw9PT09CnhlbmJ1c3xDYWNoZURlc3Ryb3k6ID09PT0+
IChkZXZpY2VfdmlmXzBfcXVldWUtMF9yZWNlaXZlcl9wYWNrZXQpCnhlbmJ1
c3xDYWNoZURlc3Ryb3k6IDw9PT09CnhlbnZpZnxGcm9udGVuZFRlYXJkb3du
OiA8PT09PQp4ZW52aWZ8VmlmVGVhcmRvd246ID09PT0+CnhlbnZpZnxWaWZN
YWM6IDw9PT09CnhlbnZpZnxWaWZUZWFyZG93bjogPD09PT0KeGVudmlmfEJ1
c1RlYXJkb3duOiA9PT09Pgp4ZW52aWZ8QnVzVGVhcmRvd246IDw9PT09Cnhl
bnZpZnxGZG9EaXNwYXRjaFBucDogPD09PT0gKDA3OlFVRVJZX0RFVklDRV9S
RUxBVElPTlMpKDAwMDAwMDAwKQp4ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6ID09
PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4ZW52aWZ8RmRvUXVl
cnlEZXZpY2VSZWxhdGlvbnM6IHdhaXRpbmcgZm9yIHNjYW4gdGhyZWFkCnhl
bnZpZnxfX0Zkb0VudW1lcmF0ZTogZ290IG5ldyBkZXZpY2UgMCBmcm9tIHhl
bnN0b3JlCnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfEZk
b1F1ZXJ5RGV2aWNlUmVsYXRpb25zOiAwIFBETyhzKQp4ZW5idXN8UGRvRGlz
cGF0Y2hQbnA6ID09PT0+ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKQp4
ZW5idXN8UGRvRGlzcGF0Y2hQbnA6IDw9PT09ICgwNzpRVUVSWV9ERVZJQ0Vf
UkVMQVRJT05TKSgwMDAwMDAwMCkKeGVudmlmfEZkb0ZvcndhcmRJcnBTeW5j
aHJvbm91c2x5OiAwMDAwMDAwMAp4ZW52aWZ8RmRvRGlzcGF0Y2hQbnA6IDw9
PT09ICgwNzpRVUVSWV9ERVZJQ0VfUkVMQVRJT05TKSgwMDAwMDAwMCkKeGVu
dmlmfEZkb1NjYW46IHdhaXRpbmcuLi4KeGVudmlmfF9fRmRvRW51bWVyYXRl
OiA9PT09Pgp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IGdvdCBuZXcgZGV2aWNl
IDAgZnJvbSB4ZW5zdG9yZQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6IDw9PT09
CnhlbnZpZnxGZG9TY2FuOiB3YWl0aW5nLi4uCnhlbmJ1c3xTdG9yZVByb2Nl
c3NXYXRjaEV2ZW50OiBjODcwIChkZXZpY2UvdmlmLzApCnhlbmJ1c3xTdG9y
ZVByb2Nlc3NXYXRjaEV2ZW50OiBjODczIChkZXZpY2UvdmlmLzApCnhlbmJ1
c3xGZG9TY2FuOiBhd2FrZQp4ZW52aWZ8X19GZG9FbnVtZXJhdGU6ID09PT0+
CnhlbnZpZnxfX0Zkb0VudW1lcmF0ZTogPD09PT0KeGVudmlmfEZkb1NjYW46
IHdhaXRpbmcuLi4KeGVuYnVzfEZkb0VudW1lcmF0ZTogPT09PT4KeGVuYnVz
fEZkb0VudW1lcmF0ZTogPD09PT0KeGVuYnVzfEZkb1NjYW46IHdhaXRpbmcu
Li4KCg==

--_av-4FMvFWiGFJD6jmID3Uaigw--



From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 15:42:29 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2025 15:42:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1108668.1458723 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1utpcx-0001Wp-BX; Wed, 03 Sep 2025 15:42:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1108668.1458723; Wed, 03 Sep 2025 15:42:27 +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 1utpcx-0001Wi-8s; Wed, 03 Sep 2025 15:42:27 +0000
Received: by outflank-mailman (input) for mailman id 1108668;
 Wed, 03 Sep 2025 15:42: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=th4v=3O=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1utpcw-0001Wc-5D
 for win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2025 15:42:26 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 96ac3f1c-88dc-11f0-9d12-b5c5bf9af7f9;
 Wed, 03 Sep 2025 17:42:25 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-61e3b74672cso4169a12.0
 for <win-pv-devel@lists.xenproject.org>; Wed, 03 Sep 2025 08:42:25 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-61ded4749aesm7926657a12.32.2025.09.03.08.42.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 03 Sep 2025 08:42:23 -0700 (PDT)
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: 96ac3f1c-88dc-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756914144; x=1757518944; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=lNJlUWcP963W9cgzdP4AXTsoMltFnpqnhEO8cdSsUR0=;
        b=hk1nZGtzkiYVcQ4g7C5WtgSDd4ltioKQSSI+eCj7PPQvvUABRGS6yPtpWRLKyyZ/x1
         wx+hrBlHU1zCcoNFETG35Y7IaowssDwTIYooQrRpz0BhSAz0OqCVVBseKkpBlFdyqYCu
         0L/OULZ6ofc/OZ89zmVQu989pVOg3T0Ff0nJY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756914144; x=1757518944;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=lNJlUWcP963W9cgzdP4AXTsoMltFnpqnhEO8cdSsUR0=;
        b=Wknp17272nu81K7eTwQKV51LS/U1m4Yx6BdY5+gFM7v60+cgCg2WZ/eDQ+FE9pivxQ
         9vEWh2ugqpzu6iKJ/KwanQC7m4u+hZwpAWnbd6PTVOsxQcQYkLYrIQt8msMiKeF+q9It
         bpgnLoKWs48naCSBARtSIIKMdLSZl/MHQSALIvtedIAu/Q2WwkKaucFmDHPNHvMhXEEJ
         MjB2bGavCyIxhCvgioFtO6T59O0yB1L5qp8h3AIxfVy3FbA7bVP9D0Rx5mVZ60JbcErc
         NR4tiCxMQZUU71ZyVULbe5/GTh2oo5DOYydNzkpwdj4a4HMjVKfodWsQbOPPCY6ZPE0X
         LECw==
X-Gm-Message-State: AOJu0Yxxwa7CBE6d162uw1UO5oLHezOBjyUxSqcCt0Pg9/ySIKAFBbTz
	3clYrZisA+oFTsbJvt0vzYbPT97lmRA7p40eDlSi2PAB4lW8LRv2BUa9UGYG4/P2YNGNlRzmCEv
	LsLo=
X-Gm-Gg: ASbGncu1amxZe6nZFRlNM24J7H2I28gLCLWSpTd6X9KAaX5wutw1H4ULaSMaiEB8dxY
	xaigdrFvBEpA3iAtO97JFchlsAKXnrn5DM6i97hJpbi84FZvGRcNs84ZRDt8POY83EGziWKG1FF
	uR1Adaszrw4QjqwQtQKqczVUKG1NxDOZaMSZOA+IU6Cg0SohbZ/rCkzFQsdLEKFPNsF/sHqdhmH
	jCm/8Cfs9MDIP+AP4VA95O8OpC1cRZJ7icfBTp8fg5XqSQuOloLBMHO098lmdbqIqJ0JZS0ELVv
	tMHZNwdi3FIa4l4+Td7XUrUxBFADqKUURQzQ5VrFAfKvw/zRY2/L/XgU6EK7M++QEGQ9FFcctkQ
	g0x6s5H58/83v3PP+ulPMruytvwMW/gPV9vJzuTKIWEaKk9CAT4bJaapoW6qchZIm
X-Google-Smtp-Source: AGHT+IEEdDDIIcok55AiUmEorEWf7pc7fLxaR6Gs9+pggCP3yFjjo0fdVru40pVOFHdenv/SSWCDzQ==
X-Received: by 2002:a05:6402:d67:b0:61c:e930:1dd1 with SMTP id 4fb4d7f45d1cf-61d22f5226bmr10063766a12.15.1756914144049;
        Wed, 03 Sep 2025 08:42:24 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Clear operations exposed by backend on disconnect
Date: Wed,  3 Sep 2025 16:42:18 +0100
Message-ID: <20250903154218.1728-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

By clearing the backend operations, it will be possible to live migrate
to a backend that exposes different operations. This will allow live migration
to/from backends that expose different enablement for Barrier, Flush,
and Discard operations without relying on the backend to return
BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.

Also removes the check for change while reading disk features and always
log the values read, as this is only called once during connection.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenvbd/frontend.c | 54 +++++++++++++++++++++----------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
index ece7527..40611cd 100644
--- a/src/xenvbd/frontend.c
+++ b/src/xenvbd/frontend.c
@@ -912,17 +912,15 @@ FrontendReadDiskInfo(
     IN  PXENVBD_FRONTEND    Frontend
     )
 {
-    BOOLEAN                 Changed;
-    BOOLEAN                 Discard;
     BOOLEAN                 DiscardFeature = FALSE;
     BOOLEAN                 DiscardEnable = TRUE;
 
-    Changed = FrontendReadFeature(Frontend,
-                                  FeatureBarrier,
-                                  &Frontend->DiskInfo.Barrier);
-    Changed |= FrontendReadFeature(Frontend,
-                                   FeatureFlushCache,
-                                   &Frontend->DiskInfo.FlushCache);
+    FrontendReadFeature(Frontend,
+                        FeatureBarrier,
+                        &Frontend->DiskInfo.Barrier);
+    FrontendReadFeature(Frontend,
+                        FeatureFlushCache,
+                        &Frontend->DiskInfo.FlushCache);
 
     // discard related
     FrontendReadFeature(Frontend,
@@ -932,26 +930,19 @@ FrontendReadDiskInfo(
                         FeatureDiscardEnable,
                         &DiscardEnable);
 
-    Discard = DiscardFeature && DiscardEnable;
+    Frontend->DiskInfo.Discard = DiscardFeature && DiscardEnable;
 
-    Changed |= (Discard != Frontend->DiskInfo.Discard);
-
-    Frontend->DiskInfo.Discard = Discard;
-
-    Changed |= FrontendReadFeature(Frontend,
-                                   FeatureDiscardSecure,
-                                   &Frontend->DiskInfo.DiscardSecure);
-    Changed |= FrontendReadValue32(Frontend,
-                                   FeatureDiscardAlignment,
-                                   TRUE,
-                                   &Frontend->DiskInfo.DiscardAlignment);
-    Changed |= FrontendReadValue32(Frontend,
-                                   FeatureDiscardGranularity,
-                                   TRUE,
-                                   &Frontend->DiskInfo.DiscardGranularity);
-
-    if (!Changed)
-        return;
+    FrontendReadFeature(Frontend,
+                        FeatureDiscardSecure,
+                        &Frontend->DiskInfo.DiscardSecure);
+    FrontendReadValue32(Frontend,
+                        FeatureDiscardAlignment,
+                        TRUE,
+                        &Frontend->DiskInfo.DiscardAlignment);
+    FrontendReadValue32(Frontend,
+                        FeatureDiscardGranularity,
+                        TRUE,
+                        &Frontend->DiskInfo.DiscardGranularity);
 
     Verbose("Target[%d] : Features: %s%s%s\n",
                 Frontend->TargetId,
@@ -1378,6 +1369,15 @@ FrontendDisconnect(
         Base64Free(Frontend->Page83.Data);
     Frontend->Page83.Data = NULL;
     Frontend->Page83.Size = 0;
+
+    // Clear some DiskInfo values, so they can be re-read on connect.
+    // Allows migration to a backend with different supported operations.
+    Frontend->DiskInfo.Barrier = FALSE;
+    Frontend->DiskInfo.FlushCache = FALSE;
+    Frontend->DiskInfo.Discard = FALSE;
+    Frontend->DiskInfo.DiscardSecure = FALSE;
+    Frontend->DiskInfo.DiscardAlignment = 0;
+    Frontend->DiskInfo.DiscardGranularity = 0;
 }
 __drv_requiresIRQL(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Thu Sep 04 09:48:39 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 04 Sep 2025 09:48:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1109778.1459203 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uu6a5-0008OX-EP; Thu, 04 Sep 2025 09:48:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1109778.1459203; Thu, 04 Sep 2025 09:48:37 +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 1uu6a5-0008OP-Bi; Thu, 04 Sep 2025 09:48:37 +0000
Received: by outflank-mailman (input) for mailman id 1109778;
 Thu, 04 Sep 2025 09:48:35 +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=KWfd=3P=bounce.vates.tech=bounce-md_30504962.68b9606e.v1-842fd084ccfd41ac95a2cec35572169e@srs-se1.protection.inumbo.net>)
 id 1uu6a3-0008OJ-Hh
 for win-pv-devel@lists.xenproject.org; Thu, 04 Sep 2025 09:48:35 +0000
Received: from mail180-6.suw31.mandrillapp.com
 (mail180-6.suw31.mandrillapp.com [198.2.180.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 50df2cf3-8974-11f0-9d12-b5c5bf9af7f9;
 Thu, 04 Sep 2025 11:48:33 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-6.suw31.mandrillapp.com (Mailchimp) with ESMTP id 4cHZRf5xf5z2K23lp
 for <win-pv-devel@lists.xenproject.org>; Thu,  4 Sep 2025 09:48:30 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 842fd084ccfd41ac95a2cec35572169e; Thu, 04 Sep 2025 09:48:30 +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: 50df2cf3-8974-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756979310; x=1757249310;
	bh=p7QFfRaAgeeMeiWVc92zLDngXQK2818UVB7dLDy0HEk=;
	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=acSor4AA2VOSl/aXyGpyjKFAh4jCN9TLCKtxA4j6OUBWagB8uIi/+IpdN4HE5DrRk
	 +X88oQ4sou96wRxbaPKY9toUFxcoE5mpcVrGxI9hM7hyqCVZXOcB3THTVa/HGlCcqE
	 4lVCzy7jlZ3Qkb27RgB4D52I5QluJaUHkOVaKTzTLz4iP/FGB4aQ0JokiU/TUoMRts
	 0yRbiCkoF7Z34q+sDZ8Fhg6DW2fIdTDhVq81ih85rN827HhDDx3htU0fvzxiQFakVT
	 DrwYhIixwOLjm9MZovVORO/SJL5o4RR/5MCuRXv4ZY0aU9AjzW1zjMRza5EtDLw2qt
	 RoQ3FZ3Vx4haQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756979310; x=1757239810; i=ngoc-tu.dinh@vates.tech;
	bh=p7QFfRaAgeeMeiWVc92zLDngXQK2818UVB7dLDy0HEk=;
	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=LNzykEzlEhyoPXJPXwm0xqBDs/d8nB7Ms3WNg+9nBZCUbbNcdW3FopwS8inpkmSq0
	 3dDJdtBQTP40SKjhreOjrD8WDQVpFhEOoMsX7N3R+gFxj9uHPN0riaRFOr8kCl+mQW
	 SrPUN/tCMW/m2v7EjUoyb7jmt31s2OVzl8Gdex95iAaoQINg0lPZ5GxuXJc/5DGUAq
	 cIu5IsgP/hmFQj6qY2OQqHayzIYZMMGZIZM/RKClsoBat+BR3oCEriBSaocl6F26+d
	 6XRLn9NfCWCZzyZcm+7PeVdeMJrUiKJVZmz0CgCebwBEdGmoTjYZAP3o4IaKKQsYXw
	 bvxiMthPDR0LA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Clear=20operations=20exposed=20by=20backend=20on=20disconnect?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756979309612
Message-Id: <6a25e614-4089-4ba9-9a4c-c36923d48eb9@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250903154218.1728-1-owen.smith@cloud.com>
In-Reply-To: <20250903154218.1728-1-owen.smith@cloud.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.842fd084ccfd41ac95a2cec35572169e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250904:md
Date: Thu, 04 Sep 2025 09:48:30 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hello,

On 03/09/2025 17:42, Owen Smith wrote:
> By clearing the backend operations, it will be possible to live migrate
> to a backend that exposes different operations. This will allow live migration
> to/from backends that expose different enablement for Barrier, Flush,
> and Discard operations without relying on the backend to return
> BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.
> 
> Also removes the check for change while reading disk features and always
> log the values read, as this is only called once during connection.
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>

The changes look OK by themselves, but I have a question:

Does this mean the availability of discard ops may now change under the 
guest's feet? Looks like this has always been the case for barrier/flush 
but I'm not sure if storage drivers are supposed to change their 
behavior during a boot session, especially if other components may have 
depended on some operations being present (e.g. for data durability 
purposes).

> ---
>   src/xenvbd/frontend.c | 54 +++++++++++++++++++++----------------------
>   1 file changed, 27 insertions(+), 27 deletions(-)
> 
> diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
> index ece7527..40611cd 100644
> --- a/src/xenvbd/frontend.c
> +++ b/src/xenvbd/frontend.c
> @@ -912,17 +912,15 @@ FrontendReadDiskInfo(
>       IN  PXENVBD_FRONTEND    Frontend
>       )
>   {
> -    BOOLEAN                 Changed;
> -    BOOLEAN                 Discard;
>       BOOLEAN                 DiscardFeature = FALSE;
>       BOOLEAN                 DiscardEnable = TRUE;
>   
> -    Changed = FrontendReadFeature(Frontend,
> -                                  FeatureBarrier,
> -                                  &Frontend->DiskInfo.Barrier);
> -    Changed |= FrontendReadFeature(Frontend,
> -                                   FeatureFlushCache,
> -                                   &Frontend->DiskInfo.FlushCache);
> +    FrontendReadFeature(Frontend,
> +                        FeatureBarrier,
> +                        &Frontend->DiskInfo.Barrier);
> +    FrontendReadFeature(Frontend,
> +                        FeatureFlushCache,
> +                        &Frontend->DiskInfo.FlushCache);
>   
>       // discard related
>       FrontendReadFeature(Frontend,
> @@ -932,26 +930,19 @@ FrontendReadDiskInfo(
>                           FeatureDiscardEnable,
>                           &DiscardEnable);
>   
> -    Discard = DiscardFeature && DiscardEnable;
> +    Frontend->DiskInfo.Discard = DiscardFeature && DiscardEnable;
>   
> -    Changed |= (Discard != Frontend->DiskInfo.Discard);
> -
> -    Frontend->DiskInfo.Discard = Discard;
> -
> -    Changed |= FrontendReadFeature(Frontend,
> -                                   FeatureDiscardSecure,
> -                                   &Frontend->DiskInfo.DiscardSecure);
> -    Changed |= FrontendReadValue32(Frontend,
> -                                   FeatureDiscardAlignment,
> -                                   TRUE,
> -                                   &Frontend->DiskInfo.DiscardAlignment);
> -    Changed |= FrontendReadValue32(Frontend,
> -                                   FeatureDiscardGranularity,
> -                                   TRUE,
> -                                   &Frontend->DiskInfo.DiscardGranularity);
> -
> -    if (!Changed)
> -        return;
> +    FrontendReadFeature(Frontend,
> +                        FeatureDiscardSecure,
> +                        &Frontend->DiskInfo.DiscardSecure);
> +    FrontendReadValue32(Frontend,
> +                        FeatureDiscardAlignment,
> +                        TRUE,
> +                        &Frontend->DiskInfo.DiscardAlignment);
> +    FrontendReadValue32(Frontend,
> +                        FeatureDiscardGranularity,
> +                        TRUE,
> +                        &Frontend->DiskInfo.DiscardGranularity);
>   
>       Verbose("Target[%d] : Features: %s%s%s\n",
>                   Frontend->TargetId,
> @@ -1378,6 +1369,15 @@ FrontendDisconnect(
>           Base64Free(Frontend->Page83.Data);
>       Frontend->Page83.Data = NULL;
>       Frontend->Page83.Size = 0;
> +
> +    // Clear some DiskInfo values, so they can be re-read on connect.
> +    // Allows migration to a backend with different supported operations.
> +    Frontend->DiskInfo.Barrier = FALSE;
> +    Frontend->DiskInfo.FlushCache = FALSE;
> +    Frontend->DiskInfo.Discard = FALSE;
> +    Frontend->DiskInfo.DiscardSecure = FALSE;
> +    Frontend->DiskInfo.DiscardAlignment = 0;
> +    Frontend->DiskInfo.DiscardGranularity = 0;
>   }
>   __drv_requiresIRQL(DISPATCH_LEVEL)
>   static FORCEINLINE VOID



--
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 Sep 04 10:42:33 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 04 Sep 2025 10:42:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1109810.1459223 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uu7QG-0006iK-8E; Thu, 04 Sep 2025 10:42:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1109810.1459223; Thu, 04 Sep 2025 10:42:32 +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 1uu7QG-0006iD-5Y; Thu, 04 Sep 2025 10:42:32 +0000
Received: by outflank-mailman (input) for mailman id 1109810;
 Thu, 04 Sep 2025 10:42:31 +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=3Hx+=3P=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uu7QF-0006i7-BP
 for win-pv-devel@lists.xenproject.org; Thu, 04 Sep 2025 10:42:31 +0000
Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com
 [2607:f8b0:4864:20::533])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dac4aaca-897b-11f0-9d12-b5c5bf9af7f9;
 Thu, 04 Sep 2025 12:42:30 +0200 (CEST)
Received: by mail-pg1-x533.google.com with SMTP id
 41be03b00d2f7-b4d5886f825so686320a12.0
 for <win-pv-devel@lists.xenproject.org>; Thu, 04 Sep 2025 03:42:30 -0700 (PDT)
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: dac4aaca-897b-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1756982548; x=1757587348; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=RVfnlkK/rmKSUKjVPdKYb+2LQeJIxLJg1R7LlFDk/t0=;
        b=VcSFk8SLaj7Vrvyw+BUv475Ciwjr2dWbAfqL5/fM5dRBQsPJcfoomiq5HUhqfWg/DF
         jd0dTTuMmvD92G3LrLT3iEr28lKMsPoWZ0d5AJvPJdSA5hyAeClsD7wfcb83NA8A+KW8
         wuo4nQZIlbyBh+zQ5GGeOe6tXe+9wu/U5ywXA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1756982548; x=1757587348;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=RVfnlkK/rmKSUKjVPdKYb+2LQeJIxLJg1R7LlFDk/t0=;
        b=Jg6+SWWpouW0vTRYqkzmhYgs7WdCiwhaL8VXRl310/ztP2RXbnoBJ0g86vMy9KPtGC
         6gCYajOVqJVoJm/cv66XRikpu/ree9idPUT+4XSsCUFufKG7eJ2MNLzwr8JR3+JBiWsi
         7Dd705JyJnlwpoK2NUpUj5YZdfKQ9mb0MBoMtX4zZCQuTkn4JMBwn1UlX79EqbKHMf4M
         lYeWsTdquZbbxrCEK4LF+oGcOxcs64iuKDWZGqBo+yD3hqQZvoKhv4q4rgBc1eZ9GbUn
         Jzpamuu3WVlPzRxenHEzP7HUdmyRIfTh6NZDADbDzEq28t2DEKnQkOcTQ+fgnLm4TKZ6
         Vp4g==
X-Gm-Message-State: AOJu0YzKXI7OXAH1R8+2rvwLlzfU7VOB8lrK1OPa/k9mNbusIhRIYH5k
	sb9oBI7vVB/c24rUFvs0aTzRWAPMCDho8BSG3G+JJ85vFzyAheSVnxLuYjIEp7plACZCL3IlgsD
	cQQIAzh9PWpFplXKcTuPtcZiInlqAk8zENtEq/c6Z
X-Gm-Gg: ASbGncsvVGFr76bVuuuFprCO1SH09Qh6FoPzOy6OCS9jwCfg6Bqr5YgzuYWgTKywdVk
	PgHa2wa7iOpTQO9DgUQJZE/IphbMRTm6e6wJmFeWxnD+jEGS8VUmiAw+w7TzeXH/+beC6sQfxeu
	RpG4mwoSsCHSZzXoHpGbqLSFMQy97sq5R42SDjqfNjPBNEvVpf0pOrLqwo/yRzhVxpmRbQv70sm
	DvEf1w=
X-Google-Smtp-Source: AGHT+IGxcdJ32YAUZ9e9CbfCAX88OW0LnMeBtPbFqPD4VHIcTbZyLPupj20xwlQQ7DGCKryC/DIoxDYiE1m9rN09Z/8=
X-Received: by 2002:a17:902:e54d:b0:24a:fc8d:894c with SMTP id
 d9443c01a7336-24afc8d8b95mr163459205ad.1.1756982548300; Thu, 04 Sep 2025
 03:42:28 -0700 (PDT)
MIME-Version: 1.0
References: <20250903154218.1728-1-owen.smith@cloud.com> <6a25e614-4089-4ba9-9a4c-c36923d48eb9@vates.tech>
In-Reply-To: <6a25e614-4089-4ba9-9a4c-c36923d48eb9@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Thu, 4 Sep 2025 11:42:17 +0100
X-Gm-Features: Ac12FXz7pFZmCAaxparzUTgFCeJircQs27ocjqKCHdSBoGzBYf8UMmP8G_nN7HI
Message-ID: <CAC_UY88TK0RzJ26yOHZas1CrD5n=WK9OtSQMwq90jA9-8mM55Q@mail.gmail.com>
Subject: Re: [PATCH] Clear operations exposed by backend on disconnect
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000ab1e88063df76061"

--000000000000ab1e88063df76061
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

This would mean that Discard, Barrier and Flush may change during a boot
session, should the backend change.

It's currently possible to add features but not remove them, when migrating
the storage backend - this can lead to the frontend issuing unsupported
requests to the backend, which should be failed with BLKIF_RSP_EOPNOTSUPP,
allowing the frontend to handle the failure. This is a particular issue
with barrier/flush being issued from the same SCSIOP dependent on which
feature(s) are supported.

While it's not a good idea to change the storage behaviour during a boot
session, this is unavoidable if the backend changes its supported features.
As I understand it, discard is relatively unproblematic should it be
removed - discard requests are silently completed, though the backend
doesn't receive the requests to free discarded regions. Changing support
for barrier/flush requests may be more problematic, as these are used to
signal to the backend to ensure that all data is present on the media - but
migrating the storage should handle this before the features are changed.

Owen

On Thu, Sep 4, 2025 at 10:48=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> w=
rote:

> Hello,
>
> On 03/09/2025 17:42, Owen Smith wrote:
> > By clearing the backend operations, it will be possible to live migrate
> > to a backend that exposes different operations. This will allow live
> migration
> > to/from backends that expose different enablement for Barrier, Flush,
> > and Discard operations without relying on the backend to return
> > BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.
> >
> > Also removes the check for change while reading disk features and alway=
s
> > log the values read, as this is only called once during connection.
> >
> > Signed-off-by: Owen Smith <owen.smith@cloud.com>
>
> The changes look OK by themselves, but I have a question:
>
> Does this mean the availability of discard ops may now change under the
> guest's feet? Looks like this has always been the case for barrier/flush
> but I'm not sure if storage drivers are supposed to change their
> behavior during a boot session, especially if other components may have
> depended on some operations being present (e.g. for data durability
> purposes).
>
> > ---
> >   src/xenvbd/frontend.c | 54 +++++++++++++++++++++---------------------=
-
> >   1 file changed, 27 insertions(+), 27 deletions(-)
> >
> > diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
> > index ece7527..40611cd 100644
> > --- a/src/xenvbd/frontend.c
> > +++ b/src/xenvbd/frontend.c
> > @@ -912,17 +912,15 @@ FrontendReadDiskInfo(
> >       IN  PXENVBD_FRONTEND    Frontend
> >       )
> >   {
> > -    BOOLEAN                 Changed;
> > -    BOOLEAN                 Discard;
> >       BOOLEAN                 DiscardFeature =3D FALSE;
> >       BOOLEAN                 DiscardEnable =3D TRUE;
> >
> > -    Changed =3D FrontendReadFeature(Frontend,
> > -                                  FeatureBarrier,
> > -                                  &Frontend->DiskInfo.Barrier);
> > -    Changed |=3D FrontendReadFeature(Frontend,
> > -                                   FeatureFlushCache,
> > -                                   &Frontend->DiskInfo.FlushCache);
> > +    FrontendReadFeature(Frontend,
> > +                        FeatureBarrier,
> > +                        &Frontend->DiskInfo.Barrier);
> > +    FrontendReadFeature(Frontend,
> > +                        FeatureFlushCache,
> > +                        &Frontend->DiskInfo.FlushCache);
> >
> >       // discard related
> >       FrontendReadFeature(Frontend,
> > @@ -932,26 +930,19 @@ FrontendReadDiskInfo(
> >                           FeatureDiscardEnable,
> >                           &DiscardEnable);
> >
> > -    Discard =3D DiscardFeature && DiscardEnable;
> > +    Frontend->DiskInfo.Discard =3D DiscardFeature && DiscardEnable;
> >
> > -    Changed |=3D (Discard !=3D Frontend->DiskInfo.Discard);
> > -
> > -    Frontend->DiskInfo.Discard =3D Discard;
> > -
> > -    Changed |=3D FrontendReadFeature(Frontend,
> > -                                   FeatureDiscardSecure,
> > -                                   &Frontend->DiskInfo.DiscardSecure);
> > -    Changed |=3D FrontendReadValue32(Frontend,
> > -                                   FeatureDiscardAlignment,
> > -                                   TRUE,
> > -
>  &Frontend->DiskInfo.DiscardAlignment);
> > -    Changed |=3D FrontendReadValue32(Frontend,
> > -                                   FeatureDiscardGranularity,
> > -                                   TRUE,
> > -
>  &Frontend->DiskInfo.DiscardGranularity);
> > -
> > -    if (!Changed)
> > -        return;
> > +    FrontendReadFeature(Frontend,
> > +                        FeatureDiscardSecure,
> > +                        &Frontend->DiskInfo.DiscardSecure);
> > +    FrontendReadValue32(Frontend,
> > +                        FeatureDiscardAlignment,
> > +                        TRUE,
> > +                        &Frontend->DiskInfo.DiscardAlignment);
> > +    FrontendReadValue32(Frontend,
> > +                        FeatureDiscardGranularity,
> > +                        TRUE,
> > +                        &Frontend->DiskInfo.DiscardGranularity);
> >
> >       Verbose("Target[%d] : Features: %s%s%s\n",
> >                   Frontend->TargetId,
> > @@ -1378,6 +1369,15 @@ FrontendDisconnect(
> >           Base64Free(Frontend->Page83.Data);
> >       Frontend->Page83.Data =3D NULL;
> >       Frontend->Page83.Size =3D 0;
> > +
> > +    // Clear some DiskInfo values, so they can be re-read on connect.
> > +    // Allows migration to a backend with different supported
> operations.
> > +    Frontend->DiskInfo.Barrier =3D FALSE;
> > +    Frontend->DiskInfo.FlushCache =3D FALSE;
> > +    Frontend->DiskInfo.Discard =3D FALSE;
> > +    Frontend->DiskInfo.DiscardSecure =3D FALSE;
> > +    Frontend->DiskInfo.DiscardAlignment =3D 0;
> > +    Frontend->DiskInfo.DiscardGranularity =3D 0;
> >   }
> >   __drv_requiresIRQL(DISPATCH_LEVEL)
> >   static FORCEINLINE VOID
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000ab1e88063df76061
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">This would mean that Discard, Barrier and Flush may change during a boot=
 session, should the backend change.<br><br></div><div class=3D"gmail_defau=
lt" style=3D"font-family:monospace">It&#39;s currently possible to add feat=
ures but not remove them, when migrating the storage backend - this can lea=
d to the frontend issuing unsupported requests to the backend, which should=
 be failed with BLKIF_RSP_EOPNOTSUPP, allowing the frontend to handle the f=
ailure. This is a particular issue with barrier/flush being issued from the=
 same SCSIOP dependent on which feature(s) are supported.<br><br>While it&#=
39;s not a good idea to change the storage behaviour during a boot session,=
 this is unavoidable if the backend changes its supported features. As I un=
derstand it, discard is relatively unproblematic should it be removed - dis=
card requests are silently completed, though the backend doesn&#39;t receiv=
e the requests to free discarded regions. Changing support for barrier/flus=
h requests may be more problematic, as these are used to signal to the back=
end to ensure that all data is present on the media - but migrating the sto=
rage should handle this before the features are changed.</div><div class=3D=
"gmail_default" style=3D"font-family:monospace"><br></div><div class=3D"gma=
il_default" style=3D"font-family:monospace">Owen=C2=A0</div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Sep 4, =
2025 at 10:48=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
On 03/09/2025 17:42, Owen Smith wrote:<br>
&gt; By clearing the backend operations, it will be possible to live migrat=
e<br>
&gt; to a backend that exposes different operations. This will allow live m=
igration<br>
&gt; to/from backends that expose different enablement for Barrier, Flush,<=
br>
&gt; and Discard operations without relying on the backend to return<br>
&gt; BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.<br>
&gt; <br>
&gt; Also removes the check for change while reading disk features and alwa=
ys<br>
&gt; log the values read, as this is only called once during connection.<br=
>
&gt; <br>
&gt; Signed-off-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com" =
target=3D"_blank">owen.smith@cloud.com</a>&gt;<br>
<br>
The changes look OK by themselves, but I have a question:<br>
<br>
Does this mean the availability of discard ops may now change under the <br=
>
guest&#39;s feet? Looks like this has always been the case for barrier/flus=
h <br>
but I&#39;m not sure if storage drivers are supposed to change their <br>
behavior during a boot session, especially if other components may have <br=
>
depended on some operations being present (e.g. for data durability <br>
purposes).<br>
<br>
&gt; ---<br>
&gt;=C2=A0 =C2=A0src/xenvbd/frontend.c | 54 +++++++++++++++++++++----------=
------------<br>
&gt;=C2=A0 =C2=A01 file changed, 27 insertions(+), 27 deletions(-)<br>
&gt; <br>
&gt; diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c<br>
&gt; index ece7527..40611cd 100644<br>
&gt; --- a/src/xenvbd/frontend.c<br>
&gt; +++ b/src/xenvbd/frontend.c<br>
&gt; @@ -912,17 +912,15 @@ FrontendReadDiskInfo(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0IN=C2=A0 PXENVBD_FRONTEND=C2=A0 =C2=A0 Front=
end<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0)<br>
&gt;=C2=A0 =C2=A0{<br>
&gt; -=C2=A0 =C2=A0 BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0Changed;<br>
&gt; -=C2=A0 =C2=A0 BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0Discard;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0DiscardFeature =3D FALSE;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0DiscardEnable =3D TRUE;<br>
&gt;=C2=A0 =C2=A0<br>
&gt; -=C2=A0 =C2=A0 Changed =3D FrontendReadFeature(Frontend,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 FeatureBarrier,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInf=
o.Barrier);<br>
&gt; -=C2=A0 =C2=A0 Changed |=3D FrontendReadFeature(Frontend,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureFlushCache,<=
br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;Frontend-&gt;D=
iskInfo.FlushCache);<br>
&gt; +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 FeatureBarrier,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInfo.Barrier);<br>
&gt; +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 FeatureFlushCache,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInfo.FlushCache);<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0// discard related<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0FrontendReadFeature(Frontend,<br>
&gt; @@ -932,26 +930,19 @@ FrontendReadDiskInfo(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscardEnable,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;DiscardEnable);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; -=C2=A0 =C2=A0 Discard =3D DiscardFeature &amp;&amp; DiscardEnable;<br=
>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.Discard =3D DiscardFeature &amp;&=
amp; DiscardEnable;<br>
&gt;=C2=A0 =C2=A0<br>
&gt; -=C2=A0 =C2=A0 Changed |=3D (Discard !=3D Frontend-&gt;DiskInfo.Discar=
d);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.Discard =3D Discard;<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 Changed |=3D FrontendReadFeature(Frontend,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscardSecur=
e,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;Frontend-&gt;D=
iskInfo.DiscardSecure);<br>
&gt; -=C2=A0 =C2=A0 Changed |=3D FrontendReadValue32(Frontend,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscardAlign=
ment,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TRUE,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;Frontend-&gt;D=
iskInfo.DiscardAlignment);<br>
&gt; -=C2=A0 =C2=A0 Changed |=3D FrontendReadValue32(Frontend,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscardGranu=
larity,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TRUE,<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&amp;Frontend-&gt;D=
iskInfo.DiscardGranularity);<br>
&gt; -<br>
&gt; -=C2=A0 =C2=A0 if (!Changed)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br>
&gt; +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 FeatureDiscardSecure,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInfo.DiscardSecure);<br>
&gt; +=C2=A0 =C2=A0 FrontendReadValue32(Frontend,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 FeatureDiscardAlignment,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 TRUE,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInfo.DiscardAlignment);<br>
&gt; +=C2=A0 =C2=A0 FrontendReadValue32(Frontend,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 FeatureDiscardGranularity,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 TRUE,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 &amp;Frontend-&gt;DiskInfo.DiscardGranularity);<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Verbose(&quot;Target[%d] : Features: %s%s%s\=
n&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Fr=
ontend-&gt;TargetId,<br>
&gt; @@ -1378,6 +1369,15 @@ FrontendDisconnect(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Base64Free(Frontend-&gt;Page83=
.Data);<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Frontend-&gt;Page83.Data =3D NULL;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Frontend-&gt;Page83.Size =3D 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 // Clear some DiskInfo values, so they can be re-read o=
n connect.<br>
&gt; +=C2=A0 =C2=A0 // Allows migration to a backend with different support=
ed operations.<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.Barrier =3D FALSE;<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.FlushCache =3D FALSE;<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.Discard =3D FALSE;<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.DiscardSecure =3D FALSE;<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.DiscardAlignment =3D 0;<br>
&gt; +=C2=A0 =C2=A0 Frontend-&gt;DiskInfo.DiscardGranularity =3D 0;<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0__drv_requiresIRQL(DISPATCH_LEVEL)<br>
&gt;=C2=A0 =C2=A0static FORCEINLINE VOID<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000ab1e88063df76061--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 04 11:42:29 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 04 Sep 2025 11:42:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1109895.1459277 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uu8MF-0007hT-Eo; Thu, 04 Sep 2025 11:42:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1109895.1459277; Thu, 04 Sep 2025 11:42:27 +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 1uu8MF-0007hM-C6; Thu, 04 Sep 2025 11:42:27 +0000
Received: by outflank-mailman (input) for mailman id 1109895;
 Thu, 04 Sep 2025 11:42: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=296R=3P=bounce.vates.tech=bounce-md_30504962.68b97b1f.v1-76c82c38b20a4f969da7fb1acc7c740d@srs-se1.protection.inumbo.net>)
 id 1uu8ME-0007fu-8m
 for win-pv-devel@lists.xenproject.org; Thu, 04 Sep 2025 11:42:26 +0000
Received: from mail187-26.suw11.mandrillapp.com
 (mail187-26.suw11.mandrillapp.com [198.2.187.26])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 39a1b3ae-8984-11f0-9d12-b5c5bf9af7f9;
 Thu, 04 Sep 2025 13:42:25 +0200 (CEST)
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-26.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4cHcz35hcYzKsbg3P
 for <win-pv-devel@lists.xenproject.org>; Thu,  4 Sep 2025 11:42:23 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 76c82c38b20a4f969da7fb1acc7c740d; Thu, 04 Sep 2025 11:42:23 +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: 39a1b3ae-8984-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1756986143; x=1757256143;
	bh=qBj7lnI8p+/Lm86Qdrhifq5LUPUNfdRVW0nh5T8tyIM=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Sw0apjyqB5qMylJ38olcQDxDZW4Xm9qKcw94Pj59Z8pTkO2qWgGnQL2LiyosCZc3q
	 oXuBH/SMqSOpA/qny95bAt8iQ/qHvv71vUG/Co0Q67ofScxQzXjBpc0gzWkh+R5mDk
	 bKAl8XX4oQgyyllvLVP3c8YbY9q5cLfFq30O4rsLLRM6Lgfuu29LyjKPXHWuwus2HT
	 qKqCEerzxTtvwBtFJO4wovRqsoo5Uz+i7IgesIccr8BIfXwB5lIH4iFX6fCrS34/A9
	 Tg26XpQMLdEghLFn4jTyH1Q5bRJwUPHIN3BNWcMUahhIpduZRzj9SMIblSd7eWXU9D
	 zPNdZPHloVxdg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1756986143; x=1757246643; i=ngoc-tu.dinh@vates.tech;
	bh=qBj7lnI8p+/Lm86Qdrhifq5LUPUNfdRVW0nh5T8tyIM=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=xETvMmf7LBsGa9vKK4zPBl/wM9pMlIYS+MOxZKpf8jsSeL4LaU0+UxzYpnexlpY5j
	 eew5xghJddG+SoxdfJ07K3TluPzX8o7Ev612BdhOc7mBBcJkSrr7KGPzDoJJY/3RxY
	 OGpOcFfDZKxWkDvtJeePB/edqhJhmLxIJrHLvkwAFqDOuMkX7jNBslVOAxsLcbLTDM
	 EhvIsUYwpZkGDma+pXnQOgbGxlrgXINB9D2FTQ6y9FkVeqoI2ivkjxylx9x6NVk3Bb
	 yjZ27AOj/H5OuiZg/uLq183MgudwSJnOgIzF7z8+tXAZD8e2ROhuzn+HRqBlxy1DKe
	 KEo5PocmO4F6Q==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Clear=20operations=20exposed=20by=20backend=20on=20disconnect?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1756986143035
Message-Id: <01fc17c6-c97d-41aa-8d49-44d33be25aa2@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>
Cc: win-pv-devel@lists.xenproject.org
References: <20250903154218.1728-1-owen.smith@cloud.com> <6a25e614-4089-4ba9-9a4c-c36923d48eb9@vates.tech> <CAC_UY88TK0RzJ26yOHZas1CrD5n=WK9OtSQMwq90jA9-8mM55Q@mail.gmail.com>
In-Reply-To: <CAC_UY88TK0RzJ26yOHZas1CrD5n=WK9OtSQMwq90jA9-8mM55Q@mail.gmail.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.76c82c38b20a4f969da7fb1acc7c740d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250904:md
Date: Thu, 04 Sep 2025 11:42:23 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 04/09/2025 12:42, Owen Smith wrote:
> This would mean that Discard, Barrier and Flush may change during a boot 
> session, should the backend change.
> 
> It's currently possible to add features but not remove them, when 
> migrating the storage backend - this can lead to the frontend issuing 
> unsupported requests to the backend, which should be failed with 
> BLKIF_RSP_EOPNOTSUPP, allowing the frontend to handle the failure. This 
> is a particular issue with barrier/flush being issued from the same 
> SCSIOP dependent on which feature(s) are supported.
> 
> While it's not a good idea to change the storage behaviour during a boot 
> session, this is unavoidable if the backend changes its supported 
> features. As I understand it, discard is relatively unproblematic should 
> it be removed - discard requests are silently completed, though the 
> backend doesn't receive the requests to free discarded regions. Changing 
> support for barrier/flush requests may be more problematic, as these are 
> used to signal to the backend to ensure that all data is present on the 
> media - but migrating the storage should handle this before the features 
> are changed.
> 
> Owen
> 

Thanks,

After reading xenvbd ring/frontend code, I think I understand the logic:

* The feature flags populated here are provisional since 
BLKIF_RSP_EOPNOTSUPP would cause these features to be force-disabled by 
the frontend;
* Even if the feature flags are off or the backend requests failed, the 
errors will be silently swallowed by xenvbd;
* The feature reinitialization in FrontendConnect/FrontendReadDiskInfo 
serves to give the frontend another chance at trying these features.

I also noticed that MaximumUnmapLBACount and 
MaximumUnmapBlockDescriptorCount are not set in TargetInquiryB0, does 
this stop unmaps from working? It should probably be set in any case.

With that said:

Reviewed-by: Tu Dinh <ngoc-tu.dinh@vates.tech>

> On Thu, Sep 4, 2025 at 10:48=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech>=
 wrote:
> 
>     Hello,
> 
>     On 03/09/2025 17:42, Owen Smith wrote:
>      > By clearing the backend operations, it will be possible to live
>     migrate
>      > to a backend that exposes different operations. This will allow
>     live migration
>      > to/from backends that expose different enablement for Barrier, Flu=
sh,
>      > and Discard operations without relying on the backend to return
>      > BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.
>      >
>      > Also removes the check for change while reading disk features and
>     always
>      > log the values read, as this is only called once during connection=
.
>      >
>      > Signed-off-by: Owen Smith <owen.smith@cloud.com
>     <mailto:owen.smith@cloud.com>>
> 
>     The changes look OK by themselves, but I have a question:
> 
>     Does this mean the availability of discard ops may now change under t=
he
>     guest's feet? Looks like this has always been the case for barrier/
>     flush
>     but I'm not sure if storage drivers are supposed to change their
>     behavior during a boot session, especially if other components may ha=
ve
>     depended on some operations being present (e.g. for data durability
>     purposes).
> 
>      > ---
>      >=C2=A0 =C2=A0src/xenvbd/frontend.c | 54 ++++++++++++++++++++
>     +----------------------
>      >=C2=A0 =C2=A01 file changed, 27 insertions(+), 27 deletions(-)
>      >
>      > diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
>      > index ece7527..40611cd 100644
>      > --- a/src/xenvbd/frontend.c
>      > +++ b/src/xenvbd/frontend.c
>      > @@ -912,17 +912,15 @@ FrontendReadDiskInfo(
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0IN=C2=A0 PXENVBD_FRONTEND=C2=A0 =C2=A0 F=
rontend
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0)
>      >=C2=A0 =C2=A0{
>      > -=C2=A0 =C2=A0 BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0Changed;
>      > -=C2=A0 =C2=A0 BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0Discard;
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0DiscardFeature =3D FALSE;
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0DiscardEnable =3D TRUE;
>      >
>      > -=C2=A0 =C2=A0 Changed =3D FrontendReadFeature(Frontend,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 FeatureBarrier,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo=
.Barrier);
>      > -=C2=A0 =C2=A0 Changed |=3D FrontendReadFeature(Frontend,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureFlushC=
ache,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&Frontend->Di=
skInfo.FlushCache);
>      > +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 FeatureBarrier,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo.Barrier);
>      > +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 FeatureFlushCache,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo.FlushCache);
>      >
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0// discard related
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0FrontendReadFeature(Frontend,
>      > @@ -932,26 +930,19 @@ FrontendReadDiskInfo(
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscardEnable,
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&DiscardEnable);
>      >
>      > -=C2=A0 =C2=A0 Discard =3D DiscardFeature && DiscardEnable;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.Discard =3D DiscardFeature && Di=
scardEnable;
>      >
>      > -=C2=A0 =C2=A0 Changed |=3D (Discard !=3D Frontend->DiskInfo.Disca=
rd);
>      > -
>      > -=C2=A0 =C2=A0 Frontend->DiskInfo.Discard =3D Discard;
>      > -
>      > -=C2=A0 =C2=A0 Changed |=3D FrontendReadFeature(Frontend,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscar=
dSecure,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&Frontend-
>      >DiskInfo.DiscardSecure);
>      > -=C2=A0 =C2=A0 Changed |=3D FrontendReadValue32(Frontend,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscar=
dAlignment,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TRUE,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&Frontend-
>      >DiskInfo.DiscardAlignment);
>      > -=C2=A0 =C2=A0 Changed |=3D FrontendReadValue32(Frontend,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0FeatureDiscar=
dGranularity,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TRUE,
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&Frontend-
>      >DiskInfo.DiscardGranularity);
>      > -
>      > -=C2=A0 =C2=A0 if (!Changed)
>      > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
>      > +=C2=A0 =C2=A0 FrontendReadFeature(Frontend,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 FeatureDiscardSecure,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo.DiscardSecure);
>      > +=C2=A0 =C2=A0 FrontendReadValue32(Frontend,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 FeatureDiscardAlignment,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 TRUE,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo.DiscardAlignment);
>      > +=C2=A0 =C2=A0 FrontendReadValue32(Frontend,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 FeatureDiscardGranularity,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 TRUE,
>      > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 &Frontend->DiskInfo.DiscardGranularity);
>      >
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0Verbose("Target[%d] : Features: %s%s%s\n=
",
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0Frontend->TargetId,
>      > @@ -1378,6 +1369,15 @@ FrontendDisconnect(
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Base64Free(Frontend->Page8=
3.Data);
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0Frontend->Page83.Data =3D NULL;
>      >=C2=A0 =C2=A0 =C2=A0 =C2=A0Frontend->Page83.Size =3D 0;
>      > +
>      > +=C2=A0 =C2=A0 // Clear some DiskInfo values, so they can be re-re=
ad on
>     connect.
>      > +=C2=A0 =C2=A0 // Allows migration to a backend with different sup=
ported
>     operations.
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.Barrier =3D FALSE;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.FlushCache =3D FALSE;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.Discard =3D FALSE;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.DiscardSecure =3D FALSE;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.DiscardAlignment =3D 0;
>      > +=C2=A0 =C2=A0 Frontend->DiskInfo.DiscardGranularity =3D 0;
>      >=C2=A0 =C2=A0}
>      >=C2=A0 =C2=A0__drv_requiresIRQL(DISPATCH_LEVEL)
>      >=C2=A0 =C2=A0static FORCEINLINE VOID
> 
> 
> 
>     --
>     Ngoc Tu Dinh | Vates XCP-ng Developer
> 
>     XCP-ng & Xen Orchestra - Vates solutions
> 
>     web: https://vates.tech <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 Fri Sep 05 07:16:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 05 Sep 2025 07:16:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1111380.1460098 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uuQgB-0005mS-W8; Fri, 05 Sep 2025 07:16:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1111380.1460098; Fri, 05 Sep 2025 07:16:15 +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 1uuQgB-0005mL-Th; Fri, 05 Sep 2025 07:16:15 +0000
Received: by outflank-mailman (input) for mailman id 1111380;
 Fri, 05 Sep 2025 07:16:13 +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=ssEL=3Q=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uuQg9-0005m2-TJ
 for win-pv-devel@lists.xenproject.org; Fri, 05 Sep 2025 07:16:13 +0000
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [2a00:1450:4864:20::52e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 33dea4c2-8a28-11f0-9809-7dc792cee155;
 Fri, 05 Sep 2025 09:16:12 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-62105d21297so1287837a12.0
 for <win-pv-devel@lists.xenproject.org>; Fri, 05 Sep 2025 00:16:12 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b009ae4f2ddsm1566166866b.82.2025.09.05.00.16.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Sep 2025 00:16:10 -0700 (PDT)
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: 33dea4c2-8a28-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757056571; x=1757661371; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=jcHkF0tQV8WNPDttfKSGJ7oudQNLh1yW+ScIkNfZ3qY=;
        b=S/PGqZ7burjkHlfNcfd6/z3qIV4K4xYfSbrGdD+XfMl5K34C0upbDPjNmaiPvT7YaI
         zO4vxcyDMMcbQqupJ8iDbRkcFLDhkUUeSS+sFaK6N6d3BO5GqBTL4955wSJBiO3n8Lfw
         Cq9LTW5YlEJfaohIumDQ+tHa9AMF4zCcX0Mb0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757056571; x=1757661371;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=jcHkF0tQV8WNPDttfKSGJ7oudQNLh1yW+ScIkNfZ3qY=;
        b=ioShRRR1T63bkGbOP/SzpNDlsBx1iNwX7hk42bzSls8zDHWUmFK4davfc3WGWtizZ2
         hfzh1C3QRTCSX3bE3OMTcIweFTrBrFNnsbBBo2sW1/bZ5i0L85kX6KAivaSCyskFqe9P
         VQYtZ5cXdAPmtAMkmQUi/wvkC2IWjeG4k5uUl/SVhc8JFaA1Y2SldE19pqaBkQTnjf/a
         VLu6J3NJdVS+V8xTEn/exQd6IZULMfcNzoSTVYToRsr5SviJENNYbrFh59lsrqQJPXQN
         aww3ArjtpaxJHY0XBU80arYFxq2DTKL+XdewTD81NIunRfgnZl8F2DiKZWGs8C71ouY5
         fXsQ==
X-Gm-Message-State: AOJu0Yze0tqF61QSnSd6roCskMMUH9+M94emKtasxhbdVA39+LxNKkFG
	dbCM/BAa5HZow3a/lKpm6jNqfucVBr7FrMCYcCvcL8Kc1bg+gfqbD2D/2lHryRA1AtMne+KPoKH
	hC8Y=
X-Gm-Gg: ASbGnctfq8Bz0wATBR+Gl92iHSlbV+LsXX/Y5risYwcCyMHjyxx8iblkUexQZTpQOSo
	Mhef4aNPvn6EjkHdU4HmkRp3M2phYf6ZSP35z50sgoUGwR+4rL6FjMl/CkEJrbSkypa+Ra7/g6G
	guhvAlCNUvDnIYRfsh7PlUBqDgFBbXusBkgmFF0/L5K9l/gO6yX3WvrP9kfC5jLttvNT6/c0MqE
	wHWAucNWsN0AeI4Tekd75XLZrUh1NY0S1wh/SvHcBEsI3ZhbRJR3h6qO3iSLYfLTEO/pCqL3loD
	e8tofMosCfOg7B/47fNuTU3vqaoQexEk056L7voOt4jQdAEHWA1X05vD2J+n44mXyDbkrMvz421
	r2fo3TEcAMuG79TIgxwUVYNyNPodqFiW3uULt1SD+TL1r/DCv8S2MNgaSyKVqehGSMQ==
X-Google-Smtp-Source: AGHT+IEmZPhUCr6/KQ/jQuvDL8GuGuui3N+Oeb0DrucYcLndAZ5ejgRhPqccFaDUr9mtlqqFV8Tvrw==
X-Received: by 2002:a17:907:2d1f:b0:b04:3dc7:7d80 with SMTP id a640c23a62f3a-b043dc7c267mr1717235766b.18.1757056571260;
        Fri, 05 Sep 2025 00:16:11 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 2/2] Suppress prefast warning 6385
Date: Fri,  5 Sep 2025 08:16:01 +0100
Message-ID: <20250905071601.222-2-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250905071601.222-1-owen.smith@cloud.com>
References: <20250905071601.222-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Force Activate patches added another location where the PhysicalDeviceObject
array access generated a potential reading invalid data warning.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenfilt/fdo.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index ad57c95..04427bf 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -464,6 +464,7 @@ FdoEnumerate(
     for (Index = 0; Index < Count; Index++) {
         ULONG   ThisPrecedence;
 
+#pragma warning(suppress:6385)  // Reading invalid data from 'PhysicalDeviceObject'
         if (PhysicalDeviceObject[Index] != NULL) {
             status = DriverGetPrecedence(PhysicalDeviceObject[Index],
                                          &ThisPrecedence);
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Fri Sep 05 07:16:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 05 Sep 2025 07:16:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1111381.1460103 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uuQgD-0005nf-1L; Fri, 05 Sep 2025 07:16:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1111381.1460103; Fri, 05 Sep 2025 07: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 1uuQgC-0005nX-Uu; Fri, 05 Sep 2025 07:16:16 +0000
Received: by outflank-mailman (input) for mailman id 1111381;
 Fri, 05 Sep 2025 07:16:14 +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=ssEL=3Q=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uuQgA-0005m2-TS
 for win-pv-devel@lists.xenproject.org; Fri, 05 Sep 2025 07:16:14 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 322c2a06-8a28-11f0-9809-7dc792cee155;
 Fri, 05 Sep 2025 09:16:10 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-6188b5b113eso3064441a12.0
 for <win-pv-devel@lists.xenproject.org>; Fri, 05 Sep 2025 00:16:09 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b009ae4f2ddsm1566166866b.82.2025.09.05.00.16.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Sep 2025 00:16:07 -0700 (PDT)
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: 322c2a06-8a28-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757056568; x=1757661368; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=BtCHEz6z2CgK2R6PKMeRcakbeQ3ijp2bMXYOGwwKxGs=;
        b=HCvc13aGE3Dr4e3o9d/5/4kj1XbAA268ZGRGY9AVsm9d17KCbI6TnGakaKcVn+Pg7j
         fTUo3glipXUoQNlI89s3mg01W6o9WO6i4AotSfSQLph++Bk1DuUdAbxUIBnHso+9KIz3
         tsxmp0FlPdofSv1eX2I9midqiy9gPQ4+ZuBMg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757056568; x=1757661368;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=BtCHEz6z2CgK2R6PKMeRcakbeQ3ijp2bMXYOGwwKxGs=;
        b=CzxoVgfB2MmmLRokZF4Bx2ok9QVNK5/hNRtxSDVC7x7KMkOhFCgpA3P3akip1lzqzb
         oFH/Pwhy3tdmjekONa7HtYl3lWCi7mkjI+V+oA8ManvZmJDIhn4Ks977FW4YFAOfhmAR
         EEW1/EvcozBPI9KVS69ECV9lBKarilfwLVP6Td8vHMSxdjvkGwAwvx4lri2r9FCuPDjk
         jP6mgkwnYFCxkVWBTG4QxqgBujOcVp+p12G/RX7MxJvXr5MBJ5RC++Bi5hh6//XzbH98
         4sJTyVUmBrhLRsAJCMs9zt/X0eYjgcdLFaziY/46Q8ntFAGQZjarudBZUQeLzb+LkTvl
         E1+w==
X-Gm-Message-State: AOJu0YyrQxS59EE6hFgeI71hITbAI45m+Infx1EDUP1RS1LsmCgBUucj
	pjYaAUVihGlW2B3zKvabf/UNDyk9VZsDHO4yzQ5g0OX4Z1mXL61yvvkMwkir3ghEEjOe3AKFRXU
	KotQ=
X-Gm-Gg: ASbGncuooa0LNdOf9K6VGko+T9xYjRzriUrqK5d+f0tAWQtBzMxX+Tx9PtbojEYrCxc
	LXEDcd+z7lTZzuoIKzptk1iEakLueldjFq5pqbxSxgKJnHxazoW9rorQvYfo519U/bF5BEy8ltO
	gtMIa+xwXVAvz445NigAK3X8Y7g1iX2SVbaL2qWlfz7oW/vwCHWM7qa9yEriZz7sJZV+g9fFDqU
	LbSU8A5xT3eiAmlV3ZWRru3Bc8oOcZ97feHZVqkq0IsBimxKhTpdkmlv/1AV5C467aOTMYxDnIN
	UB5zZXhSNk8o4EvESidM6tB6ON0fb+WKXtD1uuVGvCcX8JUqa38yLUFbiICtTxqFgbgQS5B5l50
	yzkeAD9shpskG2Q+vGHTdNExO44P7DZ+W2dRW6YlWitvel7rCqoj1ye/YFdCpWvS/nw==
X-Google-Smtp-Source: AGHT+IGsQWxABZZRMsdrKdarW2xugdj6nR1V51VVQItZoQRs/9XCy4StnyUg6Q5HHn0OIsu8EBCFIg==
X-Received: by 2002:a17:907:9444:b0:b04:53cc:4400 with SMTP id a640c23a62f3a-b0453cc4661mr1446894066b.27.1757056568448;
        Fri, 05 Sep 2025 00:16:08 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 1/2] Add CodeAnalysis switch to build.ps1
Date: Fri,  5 Sep 2025 08:16:00 +0100
Message-ID: <20250905071601.222-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index d9785db..64455ea 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -151,10 +152,10 @@ $solutionpath = Resolve-Path $SolutionDir
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xenbus.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenbus.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xenbus.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenbus.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	$archivepath = "xenbus"
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Fri Sep 05 08:25:24 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 05 Sep 2025 08:25:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1111509.1460186 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uuRl3-0002a3-SV; Fri, 05 Sep 2025 08:25:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1111509.1460186; Fri, 05 Sep 2025 08:25:21 +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 1uuRl3-0002Zw-Pw; Fri, 05 Sep 2025 08:25:21 +0000
Received: by outflank-mailman (input) for mailman id 1111509;
 Fri, 05 Sep 2025 08:25:20 +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=8kEL=3Q=bounce.vates.tech=bounce-md_30504962.68ba9e6d.v1-bf6b173fc3b34405a83c04b946696a46@srs-se1.protection.inumbo.net>)
 id 1uuRl2-0002ZL-7I
 for win-pv-devel@lists.xenproject.org; Fri, 05 Sep 2025 08:25:20 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id db24dab0-8a31-11f0-9d12-b5c5bf9af7f9;
 Fri, 05 Sep 2025 10:25:19 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cJ8Y93N4gz2K1rfc
 for <win-pv-devel@lists.xenproject.org>; Fri,  5 Sep 2025 08:25:17 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 bf6b173fc3b34405a83c04b946696a46; Fri, 05 Sep 2025 08:25:17 +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: db24dab0-8a31-11f0-9d12-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757060717; x=1757330717;
	bh=IViQbD3G0cQSLbE77JqX8ad8Q87Aw5fzCN+aUGle0AU=;
	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=UsTR49crVP0YKjt4I7CtDjQapmMWlPMRWLWnUtpIcm8M3VDWUmZDIfXzTQnL4d8ly
	 vqPZ0B4xNl+ZEM5Jvkaftg55hfv6GmEtYuA5YredlUgZEP+rpwqZxNa98nWjNRKv1t
	 Qp6/thiYaZKFmle/jw8KTyPhnkclTEqtl1fDPDyJz6uk+g0j5hyMhHe0akqC391vyh
	 C19aKX/NNvkJt27OGC7/TjkYW8y89SlKoEW9ChNCLFR6izCKs+OS5Azbb8gPvdUVjM
	 bErNyYXz8N7mQoudKjV8N7UfuvImAAWc4dIPFB5fmKbGna/B9e+v5mrgKrlw1t3kb/
	 8mX59j3iAkD3A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757060717; x=1757321217; i=ngoc-tu.dinh@vates.tech;
	bh=IViQbD3G0cQSLbE77JqX8ad8Q87Aw5fzCN+aUGle0AU=;
	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=ONDTlcNj7Bq7SpJZVM6JOQUh7rwlXiTdRGD/fqF/rQebli2FFWWD67/3dmfINMlC3
	 rR4+IQZMl4k/O+PP1xCtHu1EAU6Scb71wb8KkSlBFtUX57M6VMKbOTSS13KXuJrDRD
	 xNZTyrZAfzC7F1EdHTQvBic+ognWrkngO+k7He5khWHkjOlW4JM1o0x6rPiz9FKlAU
	 PQC/po2yyTnr+Q+YiXqJpl1uCxuuGjhu1nr5fBj4G+OxjMEl6pdr7JSH1x+n3Rz3og
	 zSNDcP2ampRWNmxSE723czRhuPZjvGX83wnJLA+Pi/Nb14YFtIvxL/yfEyKQclHmkH
	 zSrMJmB0alesg==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=202/2]=20Suppress=20prefast=20warning=206385?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757060716742
Message-Id: <7e5d5df9-bf67-4368-b975-c6f7df6f3ff3@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250905071601.222-1-owen.smith@cloud.com> <20250905071601.222-2-owen.smith@cloud.com>
In-Reply-To: <20250905071601.222-2-owen.smith@cloud.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.bf6b173fc3b34405a83c04b946696a46?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250905:md
Date: Fri, 05 Sep 2025 08:25:17 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 05/09/2025 09:16, Owen Smith wrote:
> Force Activate patches added another location where the PhysicalDeviceObject
> array access generated a potential reading invalid data warning.
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>
> ---
>   src/xenfilt/fdo.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
> index ad57c95..04427bf 100644
> --- a/src/xenfilt/fdo.c
> +++ b/src/xenfilt/fdo.c
> @@ -464,6 +464,7 @@ FdoEnumerate(
>       for (Index = 0; Index < Count; Index++) {
>           ULONG   ThisPrecedence;
>   
> +#pragma warning(suppress:6385)  // Reading invalid data from 'PhysicalDeviceObject'
>           if (PhysicalDeviceObject[Index] != NULL) {
>               status = DriverGetPrecedence(PhysicalDeviceObject[Index],
>                                            &ThisPrecedence);

I saw this warning during my tests, but was very confused on why it 
issued a warning in this case.

([PATCH 2/2] Suppress prefast warning 6385)

Acked-by: Tu Dinh <ngoc-tu.dinh@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 Fri Sep 05 08:28:53 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 05 Sep 2025 08:28:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1111510.1460191 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uuRoT-0002fy-3t; Fri, 05 Sep 2025 08:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1111510.1460191; Fri, 05 Sep 2025 08:28: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 1uuRoT-0002fr-1A; Fri, 05 Sep 2025 08:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1111510;
 Fri, 05 Sep 2025 08:28: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=7dGi=3Q=bounce.vates.tech=bounce-md_30504962.68ba9f3a.v1-a355b17bf18144478c9ade21138b71d8@srs-se1.protection.inumbo.net>)
 id 1uuRoR-0002fi-7V
 for win-pv-devel@lists.xenproject.org; Fri, 05 Sep 2025 08:28:51 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 54f16855-8a32-11f0-9809-7dc792cee155;
 Fri, 05 Sep 2025 10:28:43 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cJ8d60RsdzB5p4qH
 for <win-pv-devel@lists.xenproject.org>; Fri,  5 Sep 2025 08:28:42 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a355b17bf18144478c9ade21138b71d8; Fri, 05 Sep 2025 08:28:42 +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: 54f16855-8a32-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757060922; x=1757330922;
	bh=wlIzoQBPrDyNb8qFDKztRILrtpQAhrfcpo8o/XaxCc0=;
	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=l/yXPA3gFTZTOc1gKEnTpl4+vaASiIbFH+qq675EE8vdLwovs3re5nGWMHkh710TS
	 1OiTpbgPq1xNeDEcnP22z3z/18MFkb3Po0VPK2P8eszDg3PRsIlUjedAlELLPB7NOJ
	 Fc64HVc84jFe7AVRep65BWm/NhPvpJKRKVYwYu1CG3MaPpMXIq3wPHSSPj1IYrPotL
	 HwSyA1ovh+Q6WJnOi5+9Kn3QUSL/pNXaC6/F+UGfrf60QjwjLIpDebjJ61oNKL5yxw
	 BETUMh8AdJn3q4FlqagHtBSw9tuhTS+wrXm/v9zUDJNS3i/RYGOc0szy6SMhmHyr/h
	 6F1K5BHUpdO/g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757060922; x=1757321422; i=ngoc-tu.dinh@vates.tech;
	bh=wlIzoQBPrDyNb8qFDKztRILrtpQAhrfcpo8o/XaxCc0=;
	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=E7zwNwkJKLgbrHrfrQFXS1e3G5imEiTJKctskZZ3bqUHRmMFZxs9pV/2gtbh8RiFP
	 48ZNHCdc5UnC6WyIFQ9AEJO0yE1/gisrakg26O8TgU0PI/PqcaK2pTUuaeubpJz2e8
	 CEqaKC6omGMWv+K+UukBxGQV5F8GJ0NbZmNsiXS6+7OD7G9DQt+wAkSQBYXGHWtsQy
	 siRGg+pvQcmCnQRzwPPP1VAmPiAoqL7bHOFXwNcG/vaG9JwayxjbN+eH4a+5ELb4fS
	 CIo9gn8rkGOz74erh0iCTTQpwGyr9OMU0+gttpAG2UlUbmBdKOUaPi7YTNYSMrrfHr
	 kgH+H7lZHxQGQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/2]=20Add=20CodeAnalysis=20switch=20to=20build.ps1?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757060921248
Message-Id: <15e87503-a18a-479a-8bb1-fc453a24d19e@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250905071601.222-1-owen.smith@cloud.com>
In-Reply-To: <20250905071601.222-1-owen.smith@cloud.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.a355b17bf18144478c9ade21138b71d8?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250905:md
Date: Fri, 05 Sep 2025 08:28:42 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 05/09/2025 09:16, Owen Smith wrote:
> Add option to enable code analysis on builds, so that developers can
> get code analysis feedback quicker than relying on SDV builds.
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>

Thanks,

Reviewed-by: Tu Dinh <ngoc-tu.dinh@vates.tech>

> ---
>   build.ps1   | 6 ++++--
>   msbuild.ps1 | 7 ++++---
>   2 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/build.ps1 b/build.ps1
> index 4ff02c1..42bbdde 100644
> --- a/build.ps1
> +++ b/build.ps1
> @@ -8,7 +8,8 @@ param(
>   	[string]$Arch,
>   	[string]$SignMode = "TestSign",
>   	[switch]$CodeQL,
> -	[switch]$Sdv
> +	[switch]$Sdv,
> +	[switch]$CodeAnalysis
>   )
>   
>   #
> @@ -30,7 +31,8 @@ Function Build {
>   		ConfigurationBase = $configurationbase[$visualstudioversion];
>   		Arch = $Arch;
>   		Type = $Type;
> -		SignMode = $SignMode
> +		SignMode = $SignMode;
> +		CodeAnalysis = $CodeAnalysis
>   		}
>   	& ".\msbuild.ps1" @params
>   	if ($LASTEXITCODE -ne 0) {
> diff --git a/msbuild.ps1 b/msbuild.ps1
> index d9785db..64455ea 100644
> --- a/msbuild.ps1
> +++ b/msbuild.ps1
> @@ -8,7 +8,8 @@ param(
>   	[string]$Arch,
>   	[Parameter(Mandatory = $true)]
>   	[string]$Type,
> -	[string]$SignMode = "TestSign"
> +	[string]$SignMode = "TestSign",
> +	[switch]$CodeAnalysis
>   )
>   
>   Function Run-MSBuild {
> @@ -151,10 +152,10 @@ $solutionpath = Resolve-Path $SolutionDir
>   Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
>   
>   if ($Type -eq "free") {
> -	Run-MSBuild $solutionpath "xenbus.sln" $configuration["free"] $platform[$Arch]
> +	Run-MSBuild $solutionpath "xenbus.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
>   }
>   elseif ($Type -eq "checked") {
> -	Run-MSBuild $solutionpath "xenbus.sln" $configuration["checked"] $platform[$Arch]
> +	Run-MSBuild $solutionpath "xenbus.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
>   }
>   elseif ($Type -eq "codeql") {
>   	$archivepath = "xenbus"



--
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 Sep 08 07:44:14 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:44:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114701.1461543 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWXs-0000Mg-Fr; Mon, 08 Sep 2025 07:44:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114701.1461543; Mon, 08 Sep 2025 07:44:12 +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 1uvWXs-0000MY-Cg; Mon, 08 Sep 2025 07:44:12 +0000
Received: by outflank-mailman (input) for mailman id 1114701;
 Mon, 08 Sep 2025 07:44:11 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWXr-0000ML-9L
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:44:11 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 988858c5-8c87-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:44:06 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-6228de281baso3460596a12.1
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:44:05 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aff0681aefdsm2443991966b.8.2025.09.08.00.44.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:44:03 -0700 (PDT)
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: 988858c5-8c87-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317445; x=1757922245; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=hYvpGHHPGb1gEWpeR5Y/JtUe8TTo9lfIWsmdBxMfomA=;
        b=YMMyxCcrv3XH8Vf4+Gv7Xj5wcp/0GughXtetLVm+UzDwbwthZNJvnYr51o6AEoZYFd
         g8uCUtmI2Sg+/d4JN9iA2nGE6niAGq7wWH4cjEqIkpMcnuKxekBHVyW326R9Q6seok+1
         lvkpJV3tsDS8KW8YpFztaDc3Eo0yMWX7SvdY8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317445; x=1757922245;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=hYvpGHHPGb1gEWpeR5Y/JtUe8TTo9lfIWsmdBxMfomA=;
        b=J+1jMT5Ua3bNMmob3tybAVGS6e9mQo3IwQfNVHRHGKP8MZVjL649f5LWZXFFcl/XNQ
         ovBz0HeFUT0OJ8gcsyhXc75VhPIf4zADi6+xxNWD9R3eEo87PyjYBubhBewQyWP0vghO
         /9PzYxGfiqiY32xrzYF4usoTlwfR5ZrkGuBErsdDTg5+RjEFcTtp2k1ufOI1jQLNSbit
         FPj95ygP1zB8NPrjVcDbHcAaba19+A3XyP3RtuFkB+xV1/9cmeD9N7FIhnIeyW/GkdPw
         8/amrWUluqwFutnzctZa24dv9Ss/5PTCX9SNYDpOyH4y5Qu17nAdYOCZ8ZgrRsjTjlm/
         NXPQ==
X-Gm-Message-State: AOJu0Yw01ddAPUehfCMJANR6QLL7A8wqELxd8IroihciH4XrHAeVVfqq
	iLSODPmY3PGvu2QOarhwrzTYvvBZx05ztMOBbvhTBChwGlIH6BeVP8+LYbYF+wjV3PQd6Oi4uAa
	8KRc=
X-Gm-Gg: ASbGncsaqTZ9MCXljiDtoO5bDlAfgc7sk51S73Hnfys6YkXx3be1Gk6blF8lWfC3/VB
	bVykIo0lZ23fNSG7MV1HiSZ6gsEtrXRpKeVgUMlOf+C3QBr0ZE3sW+Nd6qnCZhnlSIv8IxsH9KN
	tQo3cOGz4QhnjRDlo/yGs65Hj3CLuak2LWaYPbk3Xv2kkCD74n0SG7bZQetTeWhNk73n7EqZg6x
	5qH/nD9JzSwU+YAI9kFnZ1M39P0nKvC2smH7Pdctpt2xhc08zHVaazUbN0xrp0k4F9x7tjnReIm
	X6B6M5WVAWa9sa1gVywaYz7kY5qEZnyNkKpi6QFIuqf4e5spGXxV6i12foXHT3leDhWQiVs5k94
	dr52cu7E8GSWBbteo03DFWsXCCnBNAuCclQkwya1GHvWZ2VddcpCAZZnhaQwjFCHDvg==
X-Google-Smtp-Source: AGHT+IEY3XoJCck720LYgg14Y+XWaiAYMS8AFHyI0B5CnpbA1T2JFOMPM8xN+4V+sdfHZkM6ddCCAg==
X-Received: by 2002:a17:907:3e99:b0:b04:6045:f7ed with SMTP id a640c23a62f3a-b04b13d20eamr729415866b.10.1757317444641;
        Mon, 08 Sep 2025 00:44:04 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:43:59 +0100
Message-ID: <20250908074359.1546-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 51092ca..7228f42 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xenvkbd" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xenvkbd.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvkbd.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xenvkbd.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvkbd.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:44:42 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:44:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114702.1461546 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWYM-0000Pt-HZ; Mon, 08 Sep 2025 07:44:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114702.1461546; Mon, 08 Sep 2025 07:44:42 +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 1uvWYM-0000Pm-F3; Mon, 08 Sep 2025 07:44:42 +0000
Received: by outflank-mailman (input) for mailman id 1114702;
 Mon, 08 Sep 2025 07:44: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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWYK-0000Pc-S5
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:44:40 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id abba149c-8c87-11f0-9d13-b5c5bf9af7f9;
 Mon, 08 Sep 2025 09:44:39 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-aff0775410eso728426366b.0
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:44:38 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b04129eccbfsm2090352766b.7.2025.09.08.00.44.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:44:36 -0700 (PDT)
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: abba149c-8c87-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317477; x=1757922277; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=/uTJOkUWlF0RbHhN0xr8+hhwCbx+ZC9z1AngHZHAizo=;
        b=eivAvbLtob4+YUJ8rC/1INj7IKrKRq7Nl3yf/NjFu6Adgu+D0Izd/GGx0cHNsn+/34
         a7VecHwyz4sKY9VLg/FyFZLURE9aWPZnnsLxhWP4URzkvRJBSKLNVGt5Liaqf6/6kyQw
         KsTADpKmukTVv7SxySKFV10ecdDqYh/Ug5CDU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317477; x=1757922277;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=/uTJOkUWlF0RbHhN0xr8+hhwCbx+ZC9z1AngHZHAizo=;
        b=Peb9oSl5iH4SX1kuvrCutdJWopOcfgtjbmc8gD/ecJqORqZVRVfHCYoxZI7Ltuh8oc
         iqc6Ho3V7sBp6ndMf+JMvJtjzPl5nYmC7fVzYU5CmVkZj9YxFNhqc/TLO1kKQ1Wafoog
         AL3sl05a3KSEEiJhg/m8O9g/L3bRp7S342UVWwJmM1di2l2m2RHSukzdmplaIRbz/5nu
         sK9By1XvZCB5Io1pBBlH70YxU+Set19Hd4X6RtQLoeUr3pN9EcLhUII85sFvYrnPjjsW
         L4rixhOY8rjcOnBBhVDmFpEXZhJjczhaZFdFtOq6FDXdXVxW7uVJcx/CpmFha0iFV7Oi
         20rw==
X-Gm-Message-State: AOJu0YxYjifPGHuEiktd5cQNpAKFvnXHT4So7xnPaipBVFZesbl1PdXL
	AxDEjYlcYHdT272HFZ0dyt7CqjNsSGGGE5f4KFR70MBv0xgBoT99SUVRas6pCG77hQ0UBspwAcS
	2fg4=
X-Gm-Gg: ASbGncur0bwQit3PpCmZmfilKZbW5PzlTObWxKTBpIw0nZjkTllS+bCTh79aQ5ooNgO
	+zseXa0WEYdSaAK/llMjo742pxCzzXSmF3xS4noZB1B4eYPGtMsbQ71GMk/bh18zkR+hDOGHmVQ
	97txF2k/u4r29AaWQjjzCT3UgElUpe2V4kIICkkscXz6F5NRGnC/30IZK8aVmBNgOJyTUht73hB
	y98DpZFHMhJCCIrA0DoSS5kxo/VQW6Kvq/q5cNqgVpRbvkS6QbGuypdsdXleX/8yFqceB3Hfcvx
	tYUGlzcw7Csa/83Ay87SaV31ug7OQVywA8GZIf5L8oYHwTX6Qd52qdKQBsWKl3h21lRcizg9njq
	QyBzFslZASZ6oDcXMHa6CJzAynhRq0kkx+9Kpbe/tbrrTPCIBz0J6Xxs=
X-Google-Smtp-Source: AGHT+IEi+16n/Ms5iFvDiyapUYwHsySYX2bC/NzfeyUVKKETgw57nTYBHX+GbrtrWkQGDUirqxfQCA==
X-Received: by 2002:a17:907:7ea9:b0:b04:25e6:2dc2 with SMTP id a640c23a62f3a-b04b1f3e127mr643357566b.22.1757317477008;
        Mon, 08 Sep 2025 00:44:37 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:44:33 +0100
Message-ID: <20250908074433.1085-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 145d44e..46dc8cb 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xenvif" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xenvif.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvif.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xenvif.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvif.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:45:14 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:45:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114703.1461550 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWYs-0000T1-Jx; Mon, 08 Sep 2025 07:45:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114703.1461550; Mon, 08 Sep 2025 07:45:14 +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 1uvWYs-0000Su-HN; Mon, 08 Sep 2025 07:45:14 +0000
Received: by outflank-mailman (input) for mailman id 1114703;
 Mon, 08 Sep 2025 07:45:12 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWYq-0000SV-GK
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:45:12 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bfe7c9ed-8c87-11f0-9d13-b5c5bf9af7f9;
 Mon, 08 Sep 2025 09:45:11 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-b043a33b060so635107866b.1
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:45:11 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm1871694366b.2.2025.09.08.00.45.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:45:10 -0700 (PDT)
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: bfe7c9ed-8c87-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317511; x=1757922311; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=GRijo9uvHTqatC9aPRifp4JRVWibn8tPuARtNdjAe6o=;
        b=UOUVNAWDPa7rhwwuaAlq8wHJA0UEVigJ4RWzL/RYh7EMUdRQBvefGoj/rAozVvoMVk
         2dsZe6dL56nRvMLP/PRZFqaCeSIG6Lly8gNfBw0/6Sj9i4mGQYT9zWp4RTWCEV4VpZbV
         b6Xd6hRCvfji7AJSbzoujXl3W7RBK8dYgMl7M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317511; x=1757922311;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=GRijo9uvHTqatC9aPRifp4JRVWibn8tPuARtNdjAe6o=;
        b=hItSmhXbDq2o2LvOz4fNkYXAfx4cuqnKeXloPw4K14EjfcroHY5SPxzWPgRMY41vGM
         5CdQzXIwKDTdb6bWuS9LY1b+bsE2WL4wwi66AYNTtoek4KwjP/zPxq6crmTNBBsiVKfJ
         IpgKzZflTg4gSAfMJCspMy4ABtIitSXr+f3s6WMZHoDVKSVa5inp9wpDqdVI/O5275gR
         4YsR+LpEKaPjIdLf4tIAR+GrnxCgzKSPWzpeVpwS6c5aqI+QBubkNmqmq7UGr5UoXVGS
         87pfYx1SySWyuCblRwzof8+VAbAOv8xAnBTXB2AjFvYmm2yhS7494f6sj33uJDJegHVz
         YWhw==
X-Gm-Message-State: AOJu0Yx2E86ourMCVcY42MJusDB6RFEck8nQklMS4MqGrMyZKxl8OSTR
	zJNMqk87dCQNJ1XQo3P+qkK+Ev6p3JdRI/R/9djuBRPQ7jeUQ4987OY2MhDmkmMllUmkKgG7bW3
	wbmE=
X-Gm-Gg: ASbGnctaoFSzBiNror57ePGg2pOeHWCU4hVOM3hbdsGGt+RtJ8DgHOZHNa0HoeHnmG7
	3oJu9EgL7h6XGvtDODItT9ZLzA7v5uNsJjwNUOJTw83nfFQJme6I9mInXs6uMmcHfqUW6WZSuCw
	tO54i6pfkAQnKuVTrelxCnSfo2b5GYPR7t6E88BTj+3+Lw3oXkzxVLOIT+LbmdBVdosaDuZBHPn
	fB1AfTo/AcEmWu3yXxj/upoVaFz7OUSqGWIs6ePyGWa10E0s/pEDQQW9RL/tugqL5uJfGjp0IHO
	Qqyt3q3CtGxnpZ+UyrGe6FTnWNLVhTKIci5/9zS1A/L6IjrcMYFFriMl/FP5f8f9PbYaA+Tf96L
	4XwMe2rO82E5YHcGoeuKIj/mUy5aWedy8aouSZBDFJsObGbT1kSxidZNJMKOgopmrqQ==
X-Google-Smtp-Source: AGHT+IHbpcI15tJH2ep0liM/uoKEkTV+4YSF/7E0C6fkTbw7BIuKMwbf+H9h0nZ565r4dF58riYRjQ==
X-Received: by 2002:a17:907:9414:b0:b04:a852:4f41 with SMTP id a640c23a62f3a-b04b1687cd0mr708218866b.31.1757317510757;
        Mon, 08 Sep 2025 00:45:10 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 1/2] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:45:05 +0100
Message-ID: <20250908074507.1640-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 724c230..8028f25 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xencrsh", "xendisk", "xenvbd" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xenvbd.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvbd.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xenvbd.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenvbd.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:45:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:45:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114704.1461554 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWYv-0000Up-L9; Mon, 08 Sep 2025 07:45:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114704.1461554; Mon, 08 Sep 2025 07:45: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 1uvWYv-0000Ui-Ic; Mon, 08 Sep 2025 07:45:17 +0000
Received: by outflank-mailman (input) for mailman id 1114704;
 Mon, 08 Sep 2025 07:45: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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWYu-0000UN-9j
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:45:16 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c17262e6-8c87-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:45:14 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-afcb7ae6ed0so639320366b.3
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:45:14 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm1871694366b.2.2025.09.08.00.45.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:45:12 -0700 (PDT)
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: c17262e6-8c87-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317513; x=1757922313; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=lNJlUWcP963W9cgzdP4AXTsoMltFnpqnhEO8cdSsUR0=;
        b=GWynUwXCUoAfdCiWiMh+0xDr4el4WRs7zRBXfzvNr6/YNz8O9RIfbClsj4sTTCimQr
         NJFCrKiuv3bnnLw58IxBS9EO/75P1y5uS5h0MpnowveCawqMat1kkILrkTEjsyrXkAHG
         VYYcIxAjAs9ZAEzdvaoFwQysFSSdzTGqbK79w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317513; x=1757922313;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=lNJlUWcP963W9cgzdP4AXTsoMltFnpqnhEO8cdSsUR0=;
        b=VVfgWpSal1O75m07o/ln6pCbKBb25tZOxUcKiPwd+n/v2C+ZKgE3pv7HYifs4jVvUO
         /ML9BQ0UnxWpnn8US7qEDFIA2zso1U74V8AGBB1E0P/JzU2SJNt73c6qlxg6tRJhKJnF
         7uKuIkzNK1BE1B0QcVaeIJCKcFJ+qy4L/Py2zON14JQzpOw2TD546WJ+TiatYJNxeNxU
         KHKzOFPQpchUXwEMvOZ3TTG6uiB3NyYMINR/frIhy05WcOMTvCnydlazjZuV+X8Zxe/H
         g5/avP/z/V7kznAD4AqcLPXD9PWtfW2C872MpnkRZrwQJGKH525rFLXF8lmNOH7LoX+s
         tpBA==
X-Gm-Message-State: AOJu0YxncMTUCh/85rGtFNUtw3oWVSn0kQwcDZBCaNCwZKcHs1uir7Ks
	zFzaHx+qVUJfY6HuBeMmL7MeKZfl8DZiPshotcWaxi8D20VLZC3GOhdxPZ1PShyyY1Qg/7fviUp
	vTxQ=
X-Gm-Gg: ASbGnctVb3zMfZTIC1Hz6FWuOC/XhgyhdneSjVXxH/SaPGjGob7rgmQFJPvysWs3Rck
	aO3q59TvmFxYw5ttMfCsx+LLhwqlxgGc4M+SueIonbzEutr1LWdEJLpBPTzGs2fUC6SaFL7l9fX
	rjfaTVyBO8JEwGkwp6AkED4o+OIuqw8R9lBGLW92K//xDEgwpYWwHaSxX8pdqCyinFzc6D6nhl9
	RTEuuJzz6iJgbUT358NlMo7z4vPvuItgVXR9ArkPZZSmyP9ZKNZ1ami7a9QnMhxv3iyR/zoQJNy
	EFNtBCzczECRdinTKppXFZq5KfbHgFQiY0fLYquEjyf0R2xJC4sPgOPG0LxwuvUU+oWKApEcmgJ
	qoeiyKPAbOw4rpjS9Q7QdMNnkuWBEn5W+a0OIu9vn3zy7wifFL+09G9obyB3ZtvEW5g==
X-Google-Smtp-Source: AGHT+IF0Ht+Ie5y4XfWEmKJlPIT9J7UJaFiuq2HxUyfJkfzhdfJ9qTjbzgKd5podmgemZlpytOiNww==
X-Received: by 2002:a17:907:1c28:b0:afe:d055:7531 with SMTP id a640c23a62f3a-b04b16c3bd3mr743522666b.48.1757317513207;
        Mon, 08 Sep 2025 00:45:13 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Clear operations exposed by backend on disconnect
Date: Mon,  8 Sep 2025 08:45:06 +0100
Message-ID: <20250908074507.1640-2-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250908074507.1640-1-owen.smith@cloud.com>
References: <20250908074507.1640-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

By clearing the backend operations, it will be possible to live migrate
to a backend that exposes different operations. This will allow live migration
to/from backends that expose different enablement for Barrier, Flush,
and Discard operations without relying on the backend to return
BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.

Also removes the check for change while reading disk features and always
log the values read, as this is only called once during connection.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenvbd/frontend.c | 54 +++++++++++++++++++++----------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
index ece7527..40611cd 100644
--- a/src/xenvbd/frontend.c
+++ b/src/xenvbd/frontend.c
@@ -912,17 +912,15 @@ FrontendReadDiskInfo(
     IN  PXENVBD_FRONTEND    Frontend
     )
 {
-    BOOLEAN                 Changed;
-    BOOLEAN                 Discard;
     BOOLEAN                 DiscardFeature = FALSE;
     BOOLEAN                 DiscardEnable = TRUE;
 
-    Changed = FrontendReadFeature(Frontend,
-                                  FeatureBarrier,
-                                  &Frontend->DiskInfo.Barrier);
-    Changed |= FrontendReadFeature(Frontend,
-                                   FeatureFlushCache,
-                                   &Frontend->DiskInfo.FlushCache);
+    FrontendReadFeature(Frontend,
+                        FeatureBarrier,
+                        &Frontend->DiskInfo.Barrier);
+    FrontendReadFeature(Frontend,
+                        FeatureFlushCache,
+                        &Frontend->DiskInfo.FlushCache);
 
     // discard related
     FrontendReadFeature(Frontend,
@@ -932,26 +930,19 @@ FrontendReadDiskInfo(
                         FeatureDiscardEnable,
                         &DiscardEnable);
 
-    Discard = DiscardFeature && DiscardEnable;
+    Frontend->DiskInfo.Discard = DiscardFeature && DiscardEnable;
 
-    Changed |= (Discard != Frontend->DiskInfo.Discard);
-
-    Frontend->DiskInfo.Discard = Discard;
-
-    Changed |= FrontendReadFeature(Frontend,
-                                   FeatureDiscardSecure,
-                                   &Frontend->DiskInfo.DiscardSecure);
-    Changed |= FrontendReadValue32(Frontend,
-                                   FeatureDiscardAlignment,
-                                   TRUE,
-                                   &Frontend->DiskInfo.DiscardAlignment);
-    Changed |= FrontendReadValue32(Frontend,
-                                   FeatureDiscardGranularity,
-                                   TRUE,
-                                   &Frontend->DiskInfo.DiscardGranularity);
-
-    if (!Changed)
-        return;
+    FrontendReadFeature(Frontend,
+                        FeatureDiscardSecure,
+                        &Frontend->DiskInfo.DiscardSecure);
+    FrontendReadValue32(Frontend,
+                        FeatureDiscardAlignment,
+                        TRUE,
+                        &Frontend->DiskInfo.DiscardAlignment);
+    FrontendReadValue32(Frontend,
+                        FeatureDiscardGranularity,
+                        TRUE,
+                        &Frontend->DiskInfo.DiscardGranularity);
 
     Verbose("Target[%d] : Features: %s%s%s\n",
                 Frontend->TargetId,
@@ -1378,6 +1369,15 @@ FrontendDisconnect(
         Base64Free(Frontend->Page83.Data);
     Frontend->Page83.Data = NULL;
     Frontend->Page83.Size = 0;
+
+    // Clear some DiskInfo values, so they can be re-read on connect.
+    // Allows migration to a backend with different supported operations.
+    Frontend->DiskInfo.Barrier = FALSE;
+    Frontend->DiskInfo.FlushCache = FALSE;
+    Frontend->DiskInfo.Discard = FALSE;
+    Frontend->DiskInfo.DiscardSecure = FALSE;
+    Frontend->DiskInfo.DiscardAlignment = 0;
+    Frontend->DiskInfo.DiscardGranularity = 0;
 }
 __drv_requiresIRQL(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:45:56 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114705.1461559 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWZX-0000Yi-OE; Mon, 08 Sep 2025 07:45:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114705.1461559; Mon, 08 Sep 2025 07:45:55 +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 1uvWZX-0000Yb-L9; Mon, 08 Sep 2025 07:45:55 +0000
Received: by outflank-mailman (input) for mailman id 1114705;
 Mon, 08 Sep 2025 07:45:54 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWZW-0000YV-KT
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:45:54 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d852654f-8c87-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:45:52 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-620724883e6so6694364a12.2
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:45:52 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-61cfc1c7848sm22835808a12.2.2025.09.08.00.45.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:45:51 -0700 (PDT)
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: d852654f-8c87-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317552; x=1757922352; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=fBvam67P29zlliRoChpqjOBKASdwacVx22612OPk8s0=;
        b=gP89aQphH1+/QwLYvZPC3CN/WUq8Dkg3Y/svLB07cWtVaN6XZOSZp5ZUBKfkN5pVXU
         eLLzLqf2WaXzLpleWYJzDZFHTyrVm+ZE3I9GgS7fc3Oc6W1tKWZrKoyrvivsF9zBNGk5
         izEZYJAS14dAM+E8CuRUETH2tvvwq1etiwj28=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317552; x=1757922352;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=fBvam67P29zlliRoChpqjOBKASdwacVx22612OPk8s0=;
        b=FJkIP81c4wghRYqIgM3dF/WCewOa3LAcALU44Sl5R3RZLftaUZUos8xuse52QXW5Zc
         nJUr7sKCKx3VR0B3rLCTJkitL0SXtcE26RB50LYNSkWoumfvCGpabz6tTuNn++OmLBmw
         9W0Zh//YOVISmn3VsafyQhAoQjn7p7xZsCMxPryda8gPXPX4bgF0BhgQ6/3B45dwyvgP
         FTAMQAISmXv2WQ26hDdRYex62oszCuG0OZXojs2gvAY80qehLyE7gtOS5ohuIgig+Kg9
         JBqPNEWP2iOZmF+jfdQBFXFQ8rqdcUFju8Ch2ZRU+B07FpHoU0g9KFajlEEpfkTidBHr
         RaYQ==
X-Gm-Message-State: AOJu0YzFEsicFJE8+K0/3hR4KwKDaPR4j3QIg+LFIAgRZ5rytfBvJNEc
	oIwChPb66ei4F1e73T/7Jzx7vpn3ee1gXz2ibzrdkl2fUmZuVTWVKDaQR1zxozzAAhG1CcwbjYX
	UMwE=
X-Gm-Gg: ASbGncsxQ2NUs1lscZQm3SVwRFNbZC5yQ72EUGNTF94QnmkDJdir06kVYJjrFCuagYF
	OuHJMCWIs5+ZVy5gYdkXMEQTeGuQTtttcu4GoNDao8M1qgMfPGYmd3ZuryDDRimSLmIyCY2fb8x
	OY9i+OqQl9AYimPaW2Xy/ALfHrmFAs9LMTipQ32FkB9YO4feHLo1jtIBeS7Gy30BUhfbLdZ21eJ
	IlXTFLTe0dfAdSFrZ63v0KRlxRUfDsHSVdzJMSFbVi4RF6tqhKuGTe3LeOTeGaYGqccXCZgn4Mk
	YnstUWxP65x8KcEH7WhI8aSSc8E1U8iQXgcXfzBaoTbMTmPmBueLBerLI/9GsyCGXvuleJAm1Jh
	Lt/PUFCHJUVqYCo7t/apJiwf9xTyAwMzsrJrK0BGYymTxwQrajRvfAv0sRVCgqaSh2A==
X-Google-Smtp-Source: AGHT+IGrf7azjbvwle3lOCuH0cjN7Tdb1wrJJ1PyNDyc2nTYlwAk+xeTv4mFqiFSXevjDwziVwx4oA==
X-Received: by 2002:a05:6402:5212:b0:627:603b:612b with SMTP id 4fb4d7f45d1cf-627603b63camr3903180a12.6.1757317551787;
        Mon, 08 Sep 2025 00:45:51 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:45:47 +0100
Message-ID: <20250908074547.1014-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 7acd2c7..9df9495 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xennet" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xennet.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xennet.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xennet.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xennet.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:46:37 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:46:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114708.1461563 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWaD-0000dy-S4; Mon, 08 Sep 2025 07:46:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114708.1461563; Mon, 08 Sep 2025 07:46:37 +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 1uvWaD-0000dr-OX; Mon, 08 Sep 2025 07:46:37 +0000
Received: by outflank-mailman (input) for mailman id 1114708;
 Mon, 08 Sep 2025 07:46:36 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWaC-0000dc-MB
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:46:36 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f15ab8cf-8c87-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:46:34 +0200 (CEST)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-45dd505a1dfso21803235e9.2
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:46:34 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6222f293a31sm5797122a12.12.2025.09.08.00.46.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:46:32 -0700 (PDT)
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: f15ab8cf-8c87-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317594; x=1757922394; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=5WXzZUf4gzv2gqKH4uCR881PdppafZ5ohFq2kZcicc4=;
        b=ePCRbGYOxutk0lwe5UBmC9YYOU3YPx78ffExMMB6C7edpYhTv17HwXJ5ePsWX0mcUp
         T4r0opyPVccNwKf2ZDK+GTWHiu9ujEEeD3MBAugNEGh9zZy6vgO3bnjZqh2Tp0/kj1Fy
         RB/Hmn4BZkPQPjdZvQc73TRpRZM+l9xFYBjm4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317594; x=1757922394;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=5WXzZUf4gzv2gqKH4uCR881PdppafZ5ohFq2kZcicc4=;
        b=DyIHCNUh+7WS2MD9f27j12UfAIcWWZloupEgfJwpwsPhO8DU61TvGZ68YbCVDXj44u
         2sEHzMex2qJH57uK/iUhor3/g7sXHamZ2zltWofwDdl+xXv7ytnd2kIK96Bo30rSO3eN
         2AfOipr3rxTmSyuFVzKnX+OITslPvOZcXnN5FRO+CPeE8AQClazmMayMECaMGKLFyjtr
         AwQheAD19zaE3T37ZlXayIOdBQ2xCkSPVTmcObEMh0utNMthslbRgsCWjHs6nSzuz5Vm
         YgEXzSVaN6aIb++aIIsQEjH8NRkMe+FBcC4lsT79a6GMDWLPlSrDuGRuWkWHaf42JUVU
         /I4g==
X-Gm-Message-State: AOJu0YwLQ2cic9D9htmYmPMR0r9l7q8yCL0QGZl5rzTBonkV1hFbgprE
	81SNDrQQUQ3N1qoseQKkkFAdjgk+dF/CE4VljW8vykPBkPoJC35mGXPnuxsrj/JEGJl3HztDA5v
	BKB4=
X-Gm-Gg: ASbGncuWPyYleSqKiQ7ydczczHtDwCvcoWJIf//s6lBE563jFH0QxzuYgK9KnSlDnua
	SNhLpP59wmkJYg5qIMPmrPrGQntz50NAeXbzKdeJpSwqPNMxvgXJisNXxx7zLPH/7BWCcXn6FIr
	jY0VxST2uMgte3A3QGeyqOuKTKVTuWIYsCU2Zk3k0IdbgdFSaCfggqB/rWOuGulPsa7akpXbKqR
	UI4rsWPZ6ZUQxihqvHi7Le1L5UKTYtvgQFFJBfrWgFDB3WzA2aanUoKjNP8dunyhO9rfVpGYNPX
	E2CqWyOl0JPaOIZFdvqvIZOIeZOVaHktzA22wiPHifokGVfWFy3buJHBCAS/FrzssFFExC/Ubbq
	qPPuzoQn0qnszP+POHs7VJrnApHO/uWW7/FVGGjqLqYqTDNHs2BsqeqE=
X-Google-Smtp-Source: AGHT+IGw879WzMI70DCNp5Kxt424KojbaWxTPGLmffBlE+7E9PmfF1hen10pZ8Usg1XFtGV3/XG6hQ==
X-Received: by 2002:a05:6000:2912:b0:3e3:f332:7414 with SMTP id ffacd0b85a97d-3e6440f05b0mr4349392f8f.58.1757317593660;
        Mon, 08 Sep 2025 00:46:33 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 1/2] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:46:28 +0100
Message-ID: <20250908074630.166-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 206d795..bacda67 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 4658653..794cb6f 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xeniface" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xeniface.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xeniface.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xeniface.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xeniface.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:46:37 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:46:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114709.1461565 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWaD-0000eF-Tw; Mon, 08 Sep 2025 07:46:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114709.1461565; Mon, 08 Sep 2025 07:46:37 +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 1uvWaD-0000e2-Pm; Mon, 08 Sep 2025 07:46:37 +0000
Received: by outflank-mailman (input) for mailman id 1114709;
 Mon, 08 Sep 2025 07:46:36 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWaC-0000dd-Sz
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:46:36 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f20a9301-8c87-11f0-9d13-b5c5bf9af7f9;
 Mon, 08 Sep 2025 09:46:36 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-6188b793d21so6450427a12.3
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:46:35 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6222f293a31sm5797122a12.12.2025.09.08.00.46.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:46:34 -0700 (PDT)
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: f20a9301-8c87-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317595; x=1757922395; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uaSkbwBSwOnjzHtmwJrwfQdCjSRC1VOmc8cisQAvvO0=;
        b=Btm5e4+DCx75IaLQqm5/NHwoS+3SILefNsMI42OD7DNBPp5AeIq9gyxAeysF74IOHi
         eXOfLvIlsnqcEFjcekwbjRJ7pnVIWdVfGudxOKrjohebHib9R5sD9AxqpZ1OkGc67EB5
         cR8CmSYE2RcRSrIIN+8AEemT+lO+GIvxpG+cY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317595; x=1757922395;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=uaSkbwBSwOnjzHtmwJrwfQdCjSRC1VOmc8cisQAvvO0=;
        b=PtJxccdaEr6zHShrTk8JK27ohFs09+11oEB63RwUJibd0fqowr0Mr36l962lPBJRfg
         EW50Xq7xUkGqShWrKGlrCK2jirTtkhPQFFLNfz8FPB+vln9UTyLNvh3A82swYKKIIcTn
         nJyTPFQVOsYR6m/A5FnFpW24PwZkZWe3yL1rp4AjT3Tw24/Dqqd27lAl1c/DDBFIr/ok
         z9/UWOt15f7IxCUpLrTWjHB/rsrfZQbaY4Z5oZNb/kY7Gu7wtOcuB/FlmhPXjqM9ZXdk
         APqJK8cdzwcm1QOdKjrLCXzbpXMTOz604B0EWuqy3sLPc0adVvDRUlfSP30KB4SR2FiT
         74bQ==
X-Gm-Message-State: AOJu0YzzW1a9MYsy9F1VwyNcaA9cAvOLLjIi4cJ99OmfY/PkCiRKwqoT
	OJSnwoBNUcoT9wGlf/VMHsiQQVZDQUHBktA95ytHQMY9fAxd+fV82nhsDWawI5i85hzaKX5AgTT
	Bf14=
X-Gm-Gg: ASbGncshZJQW4nm3xHI86AqtctV1FbvIftTzqhDy0eXBlp20RbAi9SFb7yi6cBho1lK
	TU9Y/h6VZJyUyneJYYSJmuCgNNCreELUk2yGRkTfWsN/AizIqtT5a50h5ozVUa9V1HXF8wiFVbu
	bz+J+T+lHqbk/5MX0G3TYYR/Y7QLTQjcfV6T3MzQMmbQ2Vmx910mM1ImfRn64uHZHPnBiiFoxRB
	FDPss6T7pbtpUak85N6VW0V9sUsxt8kvFM3BM+N409mpr+5RbvthTUmunjGZ5EHt/zvhWcs6qIF
	Kai7cdMK0B2W3s8B0yV0MBKfyCSd+jQL2Kq8fXJp5IzQKkfYn5nnYLXU9a6D34ftcPl0i+XclK1
	GqD/XaXMJJM8BOo+bhryLsKE2Hwptyi1O9GnwYueng/Xg3sGAy4XXSXeDR0hUt4U/ww==
X-Google-Smtp-Source: AGHT+IH55I9Hdu8zckpZnydi4D7Hl1kVyHcy97ZxjxSYTvjBRug4wN71QGZdVfQMcf9bjsDBhleIWQ==
X-Received: by 2002:a05:6402:42c1:b0:61c:91c1:37e2 with SMTP id 4fb4d7f45d1cf-6237c32ea99mr7132805a12.16.1757317594971;
        Mon, 08 Sep 2025 00:46:34 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 2/2] Fix CodeAnalysis issues
Date: Mon,  8 Sep 2025 08:46:29 +0100
Message-ID: <20250908074630.166-2-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250908074630.166-1-owen.smith@cloud.com>
References: <20250908074630.166-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

* RegistryInitialize is incorrectly detected as DRIVER_INITIALIZE
* Add ASSERT to avoid detection of potential NULL pointer access

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xeniface/ioctl_gnttab.c | 1 +
 src/xeniface/registry.c     | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c
index 026f29b..ef77295 100644
--- a/src/xeniface/ioctl_gnttab.c
+++ b/src/xeniface/ioctl_gnttab.c
@@ -387,6 +387,7 @@ IoctlGnttabPermitForeignAccess(
     In = NULL;
 
     if (ControlCode == IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS) {
+        ASSERT3P(In1, !=, NULL);
         Context->UseRequestId = TRUE;
         Context->RequestId = In1->RequestId;
         __FreeCapturedBuffer(In1);
diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c
index 1ab85c9..423c4cc 100644
--- a/src/xeniface/registry.c
+++ b/src/xeniface/registry.c
@@ -62,6 +62,7 @@ __RegistryFree(
 }
 
 NTSTATUS
+#pragma prefast(suppress:28101) // unannotated DriverEntry function
 RegistryInitialize(
     IN  PDRIVER_OBJECT  DriverObject,
     IN  PUNICODE_STRING Path
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:47:14 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:47:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114710.1461571 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWan-0000kC-VF; Mon, 08 Sep 2025 07:47:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114710.1461571; Mon, 08 Sep 2025 07:47:13 +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 1uvWan-0000k4-SC; Mon, 08 Sep 2025 07:47:13 +0000
Received: by outflank-mailman (input) for mailman id 1114710;
 Mon, 08 Sep 2025 07:47:13 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWan-0000jf-7J
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:47:13 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0726e9af-8c88-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:47:11 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-61feb87fe26so4778126a12.1
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:47:11 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-62069b79e1asm8528925a12.26.2025.09.08.00.47.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:47:09 -0700 (PDT)
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: 0726e9af-8c88-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317630; x=1757922430; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=70RhH9ddCvoOnAK6AyEYKKIFzOac9azTEHgOOzP/oyQ=;
        b=YwWFxeD5DD3OnaAkrLDL5gPGcVEwhwdgtdgpttRnP9snUj79OYO60BawN8r3CMfg1j
         152yOXE4DuAMGWP4PkpYs12BjFGWZ8qWFuceB5GggCKmD7VUpgb7kiAlCdxVHyAcCClX
         cu0Ln2l1yWU84y53rmkinhBUKBURACe73Vhiw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317630; x=1757922430;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=70RhH9ddCvoOnAK6AyEYKKIFzOac9azTEHgOOzP/oyQ=;
        b=DmDnZT7uavfzAri3AWz0FSS7GH0E5PgPaqR7cipcd1d1gQzBDTn6CxtFz5QOLm8IFg
         9hFcf4+lDQ1qkvqN+P8DuX+4qmGL00NXldun1BssZGGrJWEvR+3+JChGGRiPKzycXcoy
         299rI0Y9bGk9bS4tmY9GLJd1oqhwj/TrOHtqbmIm1qYCmW+Gp1mdzl8QyAow32Uk8mjo
         1GX4UGihaHEMiyeiK18YRnjhvAftoXE/+qczwSXFxEF41Ucr0LN192UDcgU4KjQGyBr0
         pgAMnOLBZigjQAN7Pr+SCvUnf5HnoySI9bhmVnOS/LsKT8pdCM9RCaGjGH8T3LBxVk5o
         4Jmg==
X-Gm-Message-State: AOJu0YyBxWzhwai9ZzXmQQHt3hW+67JQ1XqLmqSxyHhYjfgohvyB1msb
	VNm1ZpKjN5lFmDUdeLU4JsHdJCipa0HDTKSMoyPj2vEhf7A9E/sU9wfK0eyOeBreVovQtcxid6G
	o600=
X-Gm-Gg: ASbGncsCOokDkwsQ+vGJuUh2+X7Ck9E2BKjdaP5oHyMCbxZIx9ZnKuOoNU4GSzSxtDT
	hWB06U/Qn0SUL29Lrrhjv9x/6f//K9fJKID17ZvQUd2QXVTQ46vxDgYSXdwK5wPdoLi1B7KNE5d
	IhRYxck8luvcyWqyhsywga369Te2Ak55N2X++KlT1f6p8TZySmgdpn/LZCcqswBHVoTonR4M1e9
	WnUniBtiNX7E2Yfrr/TYHVnvNnBt4U/odUm9tWCdA+dsb3y+Zj2EJPkUx5WI/9YY5E0PhtkP4Jf
	b+J3K4Ce32I3/OoZBNIvFm2cfxnTaCSzUSxNvHEaVceIYmOmn++vSkXSsMRu5WzDGKws1nVH9s+
	5dFw70TjB1r36+XesM+aMO0aXpvjQAPwR3foVk6qi7VJ/NFNrliBtUWE=
X-Google-Smtp-Source: AGHT+IE3Lv6Aq8awkriVICnJYy6yGD1LEtE5IL7oyyEs/HVIiKu7rzFiN0dUPqiIXPakXQoXgyqwPg==
X-Received: by 2002:a05:6402:3509:b0:61c:fc47:f346 with SMTP id 4fb4d7f45d1cf-62373eee492mr6596603a12.9.1757317630330;
        Mon, 08 Sep 2025 00:47:10 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:47:05 +0100
Message-ID: <20250908074705.853-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index ecc2107..15c5fc1 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xenhid" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xenhid.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenhid.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xenhid.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xenhid.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 07:47:51 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 07:47:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114711.1461575 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvWbP-0000n2-1D; Mon, 08 Sep 2025 07:47:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114711.1461575; Mon, 08 Sep 2025 07:47:51 +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 1uvWbO-0000mu-Ud; Mon, 08 Sep 2025 07:47:50 +0000
Received: by outflank-mailman (input) for mailman id 1114711;
 Mon, 08 Sep 2025 07:47:49 +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=AC+A=3T=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvWbN-0000mo-Ow
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 07:47:49 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1cf36313-8c88-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 09:47:47 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-61cd6089262so6493309a12.3
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 00:47:47 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6286246f887sm1860412a12.25.2025.09.08.00.47.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Sep 2025 00:47:45 -0700 (PDT)
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: 1cf36313-8c88-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757317667; x=1757922467; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=eLqZBGdo+5behXKoZqSC8vPnEgx4aSr3fD0VfXYmRS4=;
        b=Q12az8gONnLxIRYJYpucW/6HHbxtloiahKpHzCzPdIaiBXhhgihTmrGY1/kA8V1kF4
         IXJyufUe1f6OI4NWXm40ZS2xtj2XV/V2pbZItXvuUe3ziXZw7LTwsTYdBuB/sSRjWVtV
         y4bbloGVrqcRPyi5DNULj916R6l4YtnVR09WA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757317667; x=1757922467;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=eLqZBGdo+5behXKoZqSC8vPnEgx4aSr3fD0VfXYmRS4=;
        b=MoKU0D1/TYHzZT7D5+0q52z695T5ZnO7019GH2BUyFA1KphmIpSs5UdMtfzCG22/Ve
         yjDteolMYicDQDH+5DAEzFQE9gGzLsZMsGjeIImAG3cfczswUy231O3wuZtiik6DlLEZ
         fTBDB9qOZay5wHxsB09gWpvi9Bxz9Eo4pysToBZADdqpr5WbbCbladHgEayDhXTsUyI3
         0c1DY33Q+uMNYUncJL2ycSgaue4SxbxTNHygu46Q4bpZbMBkz1PUyRv1ut2Lx9YFTGz+
         E7hqAqqd/jrc3el5C2abNWWx3uIm7ZO+OMglBAsFoB+3EX61is1hYA2j0KGIdeWIuqbv
         AsPw==
X-Gm-Message-State: AOJu0YzC910W8EFL3b/p46nXqkZwvj3Bk9KbEgCtLp7a95xgeWVsDOtt
	sVpbl6Uh1yitSXBX1RxGJAGu+nLnEXMCfGPYNRpQqROK8RV/L9OGl1Aye8nVyzTp1N8KNpyXZuc
	rBtI=
X-Gm-Gg: ASbGncuUdpjZjY/wYxrUjnvzKsK+K04/gntdDohk843wVYfqg8Z+SF61vaS+nLZgW21
	U1e075T+K1roJz3WR7Yeb/pKml+8qnxEZeeE8cPItw/px+wNw6kgQKjwrUKmHMcLVjQl0KSsy/i
	lWvzS+4DtoIF+E36FBkw4TprRHPMYeAQyrltQa8HndfkIAJBw3zeOFyEHX339qCJveFWs+Bzdxs
	Z5iWqFj69ESWEi2DBBiigMjfOfZJTzoTtFWTeEBNaVboWzdj8mOJ86BjebhSdCRQ9CfkCTHKZFi
	NGvzPI/kKdmPOi4yPVKO/ABE0cAQu1ZlYDr5zgwCvW9FDd9wo0Y+MThjc/cJ8iBDHZb+DDeOhCa
	PJGd0Pj5jbk9vRB5H7aswBr9HYj/Fm8FLBJ/sFVaf8L6+OYca3vpMqKMi0Gf1gAEhKCUra8RT7M
	PM
X-Google-Smtp-Source: AGHT+IE7cgA0GgcDHwkNK479v948SMWREZPj4pZKQwH0QfEMtO4gJ7YOgYv+A3vLOO2TplDMtoMCNQ==
X-Received: by 2002:a05:6402:90c:b0:620:bf3a:f6e8 with SMTP id 4fb4d7f45d1cf-62376d2c98fmr5792060a12.4.1757317666068;
        Mon, 08 Sep 2025 00:47:46 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>
Subject: [PATCH] Add CodeAnalysis switch to build.ps1
Date: Mon,  8 Sep 2025 08:47:42 +0100
Message-ID: <20250908074742.714-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add option to enable code analysis on builds, so that developers can
get code analysis feedback quicker than relying on SDV builds.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 build.ps1   | 6 ++++--
 msbuild.ps1 | 7 ++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/build.ps1 b/build.ps1
index 4ff02c1..42bbdde 100644
--- a/build.ps1
+++ b/build.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[string]$SignMode = "TestSign",
 	[switch]$CodeQL,
-	[switch]$Sdv
+	[switch]$Sdv,
+	[switch]$CodeAnalysis
 )
 
 #
@@ -30,7 +31,8 @@ Function Build {
 		ConfigurationBase = $configurationbase[$visualstudioversion];
 		Arch = $Arch;
 		Type = $Type;
-		SignMode = $SignMode
+		SignMode = $SignMode;
+		CodeAnalysis = $CodeAnalysis
 		}
 	& ".\msbuild.ps1" @params
 	if ($LASTEXITCODE -ne 0) {
diff --git a/msbuild.ps1 b/msbuild.ps1
index 136cca8..6f55a5f 100644
--- a/msbuild.ps1
+++ b/msbuild.ps1
@@ -8,7 +8,8 @@ param(
 	[string]$Arch,
 	[Parameter(Mandatory = $true)]
 	[string]$Type,
-	[string]$SignMode = "TestSign"
+	[string]$SignMode = "TestSign",
+	[switch]$CodeAnalysis
 )
 
 Function Run-MSBuild {
@@ -154,10 +155,10 @@ $projectlist = @( "xencons" )
 Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
 
 if ($Type -eq "free") {
-	Run-MSBuild $solutionpath "xencons.sln" $configuration["free"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xencons.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "checked") {
-	Run-MSBuild $solutionpath "xencons.sln" $configuration["checked"] $platform[$Arch]
+	Run-MSBuild $solutionpath "xencons.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
 }
 elseif ($Type -eq "codeql") {
 	if (-Not (Test-Path -Path $archivepath)) {
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Mon Sep 08 08:15:55 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 08:15:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114755.1461579 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvX2Y-0005Gm-2e; Mon, 08 Sep 2025 08:15:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114755.1461579; Mon, 08 Sep 2025 08:15:54 +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 1uvX2Y-0005Gf-03; Mon, 08 Sep 2025 08:15:54 +0000
Received: by outflank-mailman (input) for mailman id 1114755;
 Mon, 08 Sep 2025 08:15:53 +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=i+mD=3T=bounce.vates.tech=bounce-md_30504962.68be90b0.v1-895d587eba0249819c7038aadbd883b8@srs-se1.protection.inumbo.net>)
 id 1uvX2W-0005GZ-UM
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 08:15:53 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 04de84da-8c8c-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 10:15:46 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cL0Bm5pFZzB5p51b
 for <win-pv-devel@lists.xenproject.org>; Mon,  8 Sep 2025 08:15:44 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 895d587eba0249819c7038aadbd883b8; Mon, 08 Sep 2025 08:15: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: 04de84da-8c8c-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757319344; x=1757589344;
	bh=NYZtNUhMUPHrCtGTTaeF8Wee1l3YppYOdtg0Cr/kq6Q=;
	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=MYA0CL47ZopM9aB7sX5EWUACK7+VXUZV1GDWPt0fLnTz7Qap8SkyLK+bqslzPZbDD
	 JkYTjm9wS3vt5KusFBoKe1rbvEIkIUL+rkQCOQUdBacXjm3Pj9GtBXvIZom54zndM/
	 NKX3Nu7ZqbaKvJxZltq325rCByBcw8jmK4gEhi7SglCyVJb2K/sLHNNxR58fUa4K1g
	 vLkB46Az9XMRP/c4nL3DgiNjAYgquQSezQ/LSGYMBvT0xbYGKbaxR05UcE2TLdE1VN
	 DaA2wchuVxGQ1S4sNRt0P2Jxdmd8m7Wq5TAn1CSjn9LGdWrSUsRpPmcz6TvOV2tkLK
	 cP8jw2HCCP/xg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757319344; x=1757579844; i=ngoc-tu.dinh@vates.tech;
	bh=NYZtNUhMUPHrCtGTTaeF8Wee1l3YppYOdtg0Cr/kq6Q=;
	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=wmnYAaLUlFTqAMqZhhuJqPPc00FhU8QDnAh8vMjfVcjWYZEVWuKV/w09Gb893G5k4
	 S/X1CuxlFXrp4LbFjU/zGVcj3kKe5SGr73Y6y7t1ofUUtTdJXvUit/bqwyq0MTmLCy
	 1/MdiJrnSN3Ro3xGCW7R/NK55138JwV1OlqMtG94oiFbZ5RquP2T4xPfHJprbZ5QBl
	 5iIl2VTQsrKHkIaIzCDykycOTUNbPoOUEAIGiFmeZoG6UCe3bpScPRn6ouMR921pq0
	 /VBlXSv/3P5T1oSD89EJtdeCHag8+uN4k5TuoiSVrKpZBDU25BDr18cU/EW23XPfC1
	 1+eASqA04fZtA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Add=20CodeAnalysis=20switch=20to=20build.ps1?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757319341787
Message-Id: <d59334cd-d394-467d-939f-93647d16800e@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250908074742.714-1-owen.smith@cloud.com>
In-Reply-To: <20250908074742.714-1-owen.smith@cloud.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.895d587eba0249819c7038aadbd883b8?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250908:md
Date: Mon, 08 Sep 2025 08:15:44 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hello,

On 08/09/2025 09:47, Owen Smith wrote:
> Add option to enable code analysis on builds, so that developers can
> get code analysis feedback quicker than relying on SDV builds.
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>

This and all similar patches:

Reviewed-by: Tu Dinh <ngoc-tu.dinh@vates.tech>

> ---
>   build.ps1   | 6 ++++--
>   msbuild.ps1 | 7 ++++---
>   2 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/build.ps1 b/build.ps1
> index 4ff02c1..42bbdde 100644
> --- a/build.ps1
> +++ b/build.ps1
> @@ -8,7 +8,8 @@ param(
>   	[string]$Arch,
>   	[string]$SignMode = "TestSign",
>   	[switch]$CodeQL,
> -	[switch]$Sdv
> +	[switch]$Sdv,
> +	[switch]$CodeAnalysis
>   )
>   
>   #
> @@ -30,7 +31,8 @@ Function Build {
>   		ConfigurationBase = $configurationbase[$visualstudioversion];
>   		Arch = $Arch;
>   		Type = $Type;
> -		SignMode = $SignMode
> +		SignMode = $SignMode;
> +		CodeAnalysis = $CodeAnalysis
>   		}
>   	& ".\msbuild.ps1" @params
>   	if ($LASTEXITCODE -ne 0) {
> diff --git a/msbuild.ps1 b/msbuild.ps1
> index 136cca8..6f55a5f 100644
> --- a/msbuild.ps1
> +++ b/msbuild.ps1
> @@ -8,7 +8,8 @@ param(
>   	[string]$Arch,
>   	[Parameter(Mandatory = $true)]
>   	[string]$Type,
> -	[string]$SignMode = "TestSign"
> +	[string]$SignMode = "TestSign",
> +	[switch]$CodeAnalysis
>   )
>   
>   Function Run-MSBuild {
> @@ -154,10 +155,10 @@ $projectlist = @( "xencons" )
>   Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
>   
>   if ($Type -eq "free") {
> -	Run-MSBuild $solutionpath "xencons.sln" $configuration["free"] $platform[$Arch]
> +	Run-MSBuild $solutionpath "xencons.sln" $configuration["free"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
>   }
>   elseif ($Type -eq "checked") {
> -	Run-MSBuild $solutionpath "xencons.sln" $configuration["checked"] $platform[$Arch]
> +	Run-MSBuild $solutionpath "xencons.sln" $configuration["checked"] $platform[$Arch] -CodeAnalysis:$CodeAnalysis
>   }
>   elseif ($Type -eq "codeql") {
>   	if (-Not (Test-Path -Path $archivepath)) {



--
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 Sep 08 08:54:02 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 08:54:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114842.1461642 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvXdR-00051G-8H; Mon, 08 Sep 2025 08:54:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114842.1461642; Mon, 08 Sep 2025 08:54:01 +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 1uvXdR-000518-5N; Mon, 08 Sep 2025 08:54:01 +0000
Received: by outflank-mailman (input) for mailman id 1114842;
 Mon, 08 Sep 2025 08:53:59 +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=+nEp=3T=bounce.vates.tech=bounce-md_30504962.68be99a3.v1-78a5067c73fe4a4681cf3679858319a0@srs-se1.protection.inumbo.net>)
 id 1uvXdP-00050z-FW
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 08:53:59 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5a9472b1-8c91-11f0-9d13-b5c5bf9af7f9;
 Mon, 08 Sep 2025 10:53:57 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cL12q6ng2z2K1rhp
 for <win-pv-devel@lists.xenproject.org>; Mon,  8 Sep 2025 08:53:55 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 78a5067c73fe4a4681cf3679858319a0; Mon, 08 Sep 2025 08:53:55 +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: 5a9472b1-8c91-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757321635; x=1757591635;
	bh=6HqulhtI/D7MTbhxq6rQaDVJ217bJU6vyBdrDIPN6tM=;
	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=ZNEKNzcE83Yxx8PhaHUQUAW0vik7HJFTXudr/LzDL0G86bAcIWNaouNq9GUuX0WOH
	 q7eGdYxq5Pqj1I/KgVRnGroNgKxKyBNBuGMKeL16EMHbWPrHXm/L6mQ2f5Baa95CNT
	 4alafUUssiryvnwNeaJF7wI3y5YWDmabUnH48kp4A7MuacGXPUa7Yq5UA9gIEC1qzl
	 AfPxUMtw/D8FC/XMGBtDWrcNXc7abOiBqcOfv4n54M+dFSbzj2CjUkcXhBTSoZxglX
	 xrwmi33GO6fWp8Ex5bsmUbYXPHJgJY6z15wYUs1wLpJdcF/lSsGdfYcLJG3cIopwAR
	 PUIgLYnaGQ0mw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757321635; x=1757582135; i=ngoc-tu.dinh@vates.tech;
	bh=6HqulhtI/D7MTbhxq6rQaDVJ217bJU6vyBdrDIPN6tM=;
	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=J0mXVvNHC3segH6YGIkSL9yu8IUtcN3rY4o4jesFIS37S+LPFTn1KqXqg7rqEWwIN
	 mYKedmPpj2PjyoOyfqMvZ+LCwM4++p4JC852fIpHYeHYgwkzjQba8+zNnaahe0vdVP
	 0cyGHYkCeBUViOkQmZ+8JC4DdXk33qGPfms8gJNcdFfCnYxHRCVzjLYW1n1XUavT5l
	 LZU0NRxrgjbGxatgj82pU1IS9/he99ZWB4z6+9HG9URDQou+lO8Ua6nDsNcjH9iVag
	 MPPVyMVheC3fT1lJR6GKnInfty099JOlV5M/B5o76cUbR1/x6iXtzVErCx3hHcZyOA
	 X3B1TSQhWQ5qw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20Clear=20operations=20exposed=20by=20backend=20on=20disconnect?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757321635038
Message-Id: <d6c6bf97-269e-4e2b-a50e-ac6591030891@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250908074507.1640-1-owen.smith@cloud.com> <20250908074507.1640-2-owen.smith@cloud.com>
In-Reply-To: <20250908074507.1640-2-owen.smith@cloud.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.78a5067c73fe4a4681cf3679858319a0?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250908:md
Date: Mon, 08 Sep 2025 08:53:55 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 08/09/2025 09:45, Owen Smith wrote:
> By clearing the backend operations, it will be possible to live migrate
> to a backend that exposes different operations. This will allow live migration
> to/from backends that expose different enablement for Barrier, Flush,
> and Discard operations without relying on the backend to return
> BLKIF_RSP_EOPNOTSUPP to disable an unsupported operation.
> 
> Also removes the check for change while reading disk features and always
> log the values read, as this is only called once during connection.
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>

Is this the same as the previously-reviewed version?

If so:

Reviewed-by: Tu Dinh <ngoc-tu.dinh@vates.tech>

> ---
>   src/xenvbd/frontend.c | 54 +++++++++++++++++++++----------------------
>   1 file changed, 27 insertions(+), 27 deletions(-)
> 
> diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
> index ece7527..40611cd 100644
> --- a/src/xenvbd/frontend.c
> +++ b/src/xenvbd/frontend.c
> @@ -912,17 +912,15 @@ FrontendReadDiskInfo(
>       IN  PXENVBD_FRONTEND    Frontend
>       )
>   {
> -    BOOLEAN                 Changed;
> -    BOOLEAN                 Discard;
>       BOOLEAN                 DiscardFeature = FALSE;
>       BOOLEAN                 DiscardEnable = TRUE;
>   
> -    Changed = FrontendReadFeature(Frontend,
> -                                  FeatureBarrier,
> -                                  &Frontend->DiskInfo.Barrier);
> -    Changed |= FrontendReadFeature(Frontend,
> -                                   FeatureFlushCache,
> -                                   &Frontend->DiskInfo.FlushCache);
> +    FrontendReadFeature(Frontend,
> +                        FeatureBarrier,
> +                        &Frontend->DiskInfo.Barrier);
> +    FrontendReadFeature(Frontend,
> +                        FeatureFlushCache,
> +                        &Frontend->DiskInfo.FlushCache);
>   
>       // discard related
>       FrontendReadFeature(Frontend,
> @@ -932,26 +930,19 @@ FrontendReadDiskInfo(
>                           FeatureDiscardEnable,
>                           &DiscardEnable);
>   
> -    Discard = DiscardFeature && DiscardEnable;
> +    Frontend->DiskInfo.Discard = DiscardFeature && DiscardEnable;
>   
> -    Changed |= (Discard != Frontend->DiskInfo.Discard);
> -
> -    Frontend->DiskInfo.Discard = Discard;
> -
> -    Changed |= FrontendReadFeature(Frontend,
> -                                   FeatureDiscardSecure,
> -                                   &Frontend->DiskInfo.DiscardSecure);
> -    Changed |= FrontendReadValue32(Frontend,
> -                                   FeatureDiscardAlignment,
> -                                   TRUE,
> -                                   &Frontend->DiskInfo.DiscardAlignment);
> -    Changed |= FrontendReadValue32(Frontend,
> -                                   FeatureDiscardGranularity,
> -                                   TRUE,
> -                                   &Frontend->DiskInfo.DiscardGranularity);
> -
> -    if (!Changed)
> -        return;
> +    FrontendReadFeature(Frontend,
> +                        FeatureDiscardSecure,
> +                        &Frontend->DiskInfo.DiscardSecure);
> +    FrontendReadValue32(Frontend,
> +                        FeatureDiscardAlignment,
> +                        TRUE,
> +                        &Frontend->DiskInfo.DiscardAlignment);
> +    FrontendReadValue32(Frontend,
> +                        FeatureDiscardGranularity,
> +                        TRUE,
> +                        &Frontend->DiskInfo.DiscardGranularity);
>   
>       Verbose("Target[%d] : Features: %s%s%s\n",
>                   Frontend->TargetId,
> @@ -1378,6 +1369,15 @@ FrontendDisconnect(
>           Base64Free(Frontend->Page83.Data);
>       Frontend->Page83.Data = NULL;
>       Frontend->Page83.Size = 0;
> +
> +    // Clear some DiskInfo values, so they can be re-read on connect.
> +    // Allows migration to a backend with different supported operations.
> +    Frontend->DiskInfo.Barrier = FALSE;
> +    Frontend->DiskInfo.FlushCache = FALSE;
> +    Frontend->DiskInfo.Discard = FALSE;
> +    Frontend->DiskInfo.DiscardSecure = FALSE;
> +    Frontend->DiskInfo.DiscardAlignment = 0;
> +    Frontend->DiskInfo.DiscardGranularity = 0;
>   }
>   __drv_requiresIRQL(DISPATCH_LEVEL)
>   static FORCEINLINE VOID



--
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 Sep 08 08:58:26 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 08 Sep 2025 08:58:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1114853.1461657 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvXhi-0005fS-PP; Mon, 08 Sep 2025 08:58:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1114853.1461657; Mon, 08 Sep 2025 08:58:26 +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 1uvXhi-0005fL-MX; Mon, 08 Sep 2025 08:58:26 +0000
Received: by outflank-mailman (input) for mailman id 1114853;
 Mon, 08 Sep 2025 08:58:24 +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=/hDK=3T=bounce.vates.tech=bounce-md_30504962.68be9aaa.v1-bd229f0f8502405c89df4ed7b16e4c58@srs-se1.protection.inumbo.net>)
 id 1uvXhg-0005fB-PR
 for win-pv-devel@lists.xenproject.org; Mon, 08 Sep 2025 08:58:24 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f6e50ecd-8c91-11f0-9809-7dc792cee155;
 Mon, 08 Sep 2025 10:58:19 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cL17t1tqfz2K1rht
 for <win-pv-devel@lists.xenproject.org>; Mon,  8 Sep 2025 08:58:18 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 bd229f0f8502405c89df4ed7b16e4c58; Mon, 08 Sep 2025 08:58:18 +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: f6e50ecd-8c91-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757321898; x=1757591898;
	bh=3U3J1ACjGhoKlwES2phcNgjltO53D6RS4aKnw2088HY=;
	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=CsiAUyZHATuMm5j8xlVpkiCxeXZXw2l4Y7Ghw06x+eBYLoTMaxvkt3aNP0W2fXr+7
	 92IK7fLkJ7I0PU197wZaLZ1iCpr0VAQcRJDdEwbFAYcLAJH3oE/YSSBBduYcsWPqUJ
	 PIuSRtvA8VX7KasRwjDV8wV2gK7pmHw7BE4EeiUBMwbzrFJNvwfghkyzEvVCFO5x3Q
	 SPyeWiTKpDgonBysOiBUVthlIa6FYwvgt95Pagfat8Msj45MIzD1PDGFeTdCkGF2w5
	 a9hkVBbEw+5SuobzncHgcq/GF6CmVPZoZXH1mqHRZRo/pQx+GGDrdxYPs7nS7gQ+hm
	 MEU7rTw0bSyfA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757321898; x=1757582398; i=ngoc-tu.dinh@vates.tech;
	bh=3U3J1ACjGhoKlwES2phcNgjltO53D6RS4aKnw2088HY=;
	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=SiTiiuSVFirYa+1P6pu83Mlcswv9/rsHpKuldqlfeTv22NFf92CFcoT3isKs3y96l
	 N9rxUXkIFlBuUfawFF2yTszFfposgatZZ2fDfqRta8+Hgfp1dyBW7qhwLGsBTMGgQO
	 XAYmiGqe822xpVCyPtQCCFrKMaxt1ym+H+2hz+tg4pDUMJ/t628g+dLFKq+3r86N6f
	 pIMaI9luEhINoQm5LgR25/IxMpOY4n/zpsYCTyreDMvVthHDZEUN/npCyQV8kiKpXu
	 DgxnVYZKGV8X1cU44f3mxvCnfmdRbE7HC5YVUC97RPDBClsT7oW5zu6hQNgCePb+d3
	 ooWlqGH//5PvQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=202/2]=20Fix=20CodeAnalysis=20issues?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757321897506
Message-Id: <07833815-f2e0-4b2f-8454-ceddb8dde39d@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
References: <20250908074630.166-1-owen.smith@cloud.com> <20250908074630.166-2-owen.smith@cloud.com>
In-Reply-To: <20250908074630.166-2-owen.smith@cloud.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.bd229f0f8502405c89df4ed7b16e4c58?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250908:md
Date: Mon, 08 Sep 2025 08:58:18 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 08/09/2025 09:46, Owen Smith wrote:
> * RegistryInitialize is incorrectly detected as DRIVER_INITIALIZE
> * Add ASSERT to avoid detection of potential NULL pointer access
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>
> ---
>   src/xeniface/ioctl_gnttab.c | 1 +
>   src/xeniface/registry.c     | 1 +
>   2 files changed, 2 insertions(+)
> 
> diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c
> index 026f29b..ef77295 100644
> --- a/src/xeniface/ioctl_gnttab.c
> +++ b/src/xeniface/ioctl_gnttab.c
> @@ -387,6 +387,7 @@ IoctlGnttabPermitForeignAccess(
>       In = NULL;
>   
>       if (ControlCode == IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS) {
> +        ASSERT3P(In1, !=, NULL);

I think the following would capture the intention better while also 
fixing the warning:

diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c
index 026f29b..a5a7d88 100644
--- a/src/xeniface/ioctl_gnttab.c
+++ b/src/xeniface/ioctl_gnttab.c
@@ -326,6 +326,9 @@ IoctlGnttabPermitForeignAccess(
      ULONG Page;
      ULONG ControlCode = 
IoGetCurrentIrpStackLocation(Irp)->Parameters.DeviceIoControl.IoControlCode;

+    ASSERT(ControlCode == IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS ||
+                      ControlCode == 
IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2);
+
      Status = STATUS_INVALID_BUFFER_SIZE;
      if ((InLen != sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_IN) && 
ControlCode == IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS)
          || (InLen != 
sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_IN_V2) && ControlCode == 
IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2))
diff --git a/src/xeniface/ioctls.c b/src/xeniface/ioctls.c
index 076750a..dadf0f9 100644
--- a/src/xeniface/ioctls.c
+++ b/src/xeniface/ioctls.c
@@ -42,9 +42,12 @@

  NTSTATUS
  __CaptureUserBuffer(
-    __in  PVOID Buffer,
-    __in  ULONG Length,
-    __out PVOID *CapturedBuffer
+    _In_reads_bytes_(Length) PVOID  Buffer,
+    _In_ ULONG                      Length,
+    _Outptr_result_buffer_maybenull_(Length)
+    _When_(Length == 0, _At_(*CapturedBuffer, _Post_null_))
+    _When_(Length != 0, _At_(*CapturedBuffer, _Post_notnull_))
+    PVOID                           *CapturedBuffer
      )
  {
      NTSTATUS Status;
diff --git a/src/xeniface/ioctls.h b/src/xeniface/ioctls.h
index b4c8de2..26ef02b 100644
--- a/src/xeniface/ioctls.h
+++ b/src/xeniface/ioctls.h
@@ -91,9 +91,12 @@ typedef struct _XENIFACE_GNTTAB_CONTEXT {

  NTSTATUS
  __CaptureUserBuffer(
-    __in  PVOID Buffer,
-    __in  ULONG Length,
-    __out PVOID *CapturedBuffer
+    _In_reads_bytes_(Length) PVOID  Buffer,
+    _In_ ULONG                      Length,
+    _Outptr_result_buffer_maybenull_(Length)
+    _When_(Length == 0, _At_(*CapturedBuffer, _Post_null_))
+    _When_(Length != 0, _At_(*CapturedBuffer, _Post_notnull_))
+    PVOID                           *CapturedBuffer
      );

  VOID


>           Context->UseRequestId = TRUE;
>           Context->RequestId = In1->RequestId;
>           __FreeCapturedBuffer(In1);
> diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c
> index 1ab85c9..423c4cc 100644
> --- a/src/xeniface/registry.c
> +++ b/src/xeniface/registry.c
> @@ -62,6 +62,7 @@ __RegistryFree(
>   }
>   
>   NTSTATUS
> +#pragma prefast(suppress:28101) // unannotated DriverEntry function
>   RegistryInitialize(
>       IN  PDRIVER_OBJECT  DriverObject,
>       IN  PUNICODE_STRING Path



--
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 Sep 09 06:37:46 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 06:37:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1115848.1462308 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvrz6-0005XY-Ji; Tue, 09 Sep 2025 06:37:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1115848.1462308; Tue, 09 Sep 2025 06:37: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 1uvrz6-0005XQ-Gk; Tue, 09 Sep 2025 06:37:44 +0000
Received: by outflank-mailman (input) for mailman id 1115848;
 Tue, 09 Sep 2025 06:37:42 +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=EhME=3U=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvrz4-0005XK-Bn
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 06:37:42 +0000
Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com
 [2607:f8b0:4864:20::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7aaa2acb-8d47-11f0-9809-7dc792cee155;
 Tue, 09 Sep 2025 08:37:39 +0200 (CEST)
Received: by mail-pl1-x62e.google.com with SMTP id
 d9443c01a7336-2445826fd9dso61994405ad.3
 for <win-pv-devel@lists.xenproject.org>; Mon, 08 Sep 2025 23:37:39 -0700 (PDT)
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: 7aaa2acb-8d47-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757399858; x=1758004658; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=nX5r8gx44h7jDRcqFFHi3FJPa6OITkOulHtHC45v84U=;
        b=eFycNwi5rP/pxRacW+gfPoLf9CH5MtNx7/EQusKN73y/YAM2Bw+OAhF5DbJwziaoJz
         Lo/0NoQdiVKAVyT3BG2xg6SvLlqn3+cc8mv2YQoYGBUOwCV5wzJbB+e/FThipStuvemO
         jiEd1vyZxXi4RMqqSxpNllxWM2eY8VtDaI6Cs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757399858; x=1758004658;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=nX5r8gx44h7jDRcqFFHi3FJPa6OITkOulHtHC45v84U=;
        b=KOyYEfS+kflj9X3yKq1J2kfEI+efbB307enNy9LZh2IC7iMYCPFO847Nyj+MYPx48j
         byLmFCHz0VIKl4oU8zl2H/+5+9h99w8dqfIa4Zo2b6PDj04dyl5IaIhuBMavbzXfRmrp
         h3KXMY4q2GUWeuSdDby92AP7Wdbj2M7jAZTY6WVf4gARLn5ei6MxJ/fBF9nwBX4ugZhT
         mZrd6yXhN5BmTBjRaACoQ5x2rfAaaqfwIj1gWTveyJgDNoHSIox3MY41BE3T//bhy1jK
         7RPAxlVcdsXrg0pxHOzW/FXpx0sXl3kJWVgL0DDB5gbFUDS4XY+/rE0UpwIUKAdpF+Xs
         OQLg==
X-Gm-Message-State: AOJu0YzmXDcSILgm3oys7cN1kZZdwTuIx7t8sJLgTFjW9auf+Jp2VvFZ
	2iLf4jpnKTpdDxnoy15iLXqiJXXEbT9uvbbS3No4FDV6v1lnRZQRRcjwpmHH7izK/aM2cpyx21H
	WAgTBGwG9iVX4/zFWWMzkfnD8zIZaK/tK7optCE6FnmNuZqBW2M0=
X-Gm-Gg: ASbGncvc+YBNOnTWe+xWnPo0jY6jK1gcj6H5wp+MPo/yFo8EkGw99KVmcyHIrD54GeE
	FHDpuGS9FZGHhFI/4edlgX6ITFRonmdRgreSvsohvuGrvTio8ixw6gupJLTR6MuOPtR7Y+os7a4
	J4Ip6h5Z7HzTHf+9zlGgqIXC5jy3Y27j+8HzgUxt5GxI50RnX1RbuSwhvGqGNR4yaGJVVTr1gFx
	ZNTN8f0F7Odeir3wg==
X-Google-Smtp-Source: AGHT+IEGiMiQTbt0jCoyDvmTH3EjeEVACuzX4LE5F/gM2L6nlk2uHNattvpMg2hgTWImmK5tIzMSF+j5yNrgBe5RiVA=
X-Received: by 2002:a17:902:d54e:b0:246:24d:2394 with SMTP id
 d9443c01a7336-2516ef54ef2mr120724715ad.8.1757399858010; Mon, 08 Sep 2025
 23:37:38 -0700 (PDT)
MIME-Version: 1.0
References: <20250908074630.166-1-owen.smith@cloud.com> <20250908074630.166-2-owen.smith@cloud.com>
 <07833815-f2e0-4b2f-8454-ceddb8dde39d@vates.tech>
In-Reply-To: <07833815-f2e0-4b2f-8454-ceddb8dde39d@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Tue, 9 Sep 2025 07:37:26 +0100
X-Gm-Features: AS18NWAFA46Ip84wMZ951TdgjKrTDibn13wPTHjZKVtWwyYxICIhzfZgVM2Ckso
Message-ID: <CAC_UY88oBnuVQCv5m6RKL2g+JchcKfurxgSFbUJhp=XpVMAWyw@mail.gmail.com>
Subject: Re: [PATCH 2/2] Fix CodeAnalysis issues
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000043f52d063e588a62"

--00000000000043f52d063e588a62
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I think there are bigger issues with the V1 -> V2 conversion code here... I
may look at refactoring this IOCTL handler to improve the buffer accesses

Owen

On Mon, Sep 8, 2025 at 9:58=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> wr=
ote:

> On 08/09/2025 09:46, Owen Smith wrote:
> > * RegistryInitialize is incorrectly detected as DRIVER_INITIALIZE
> > * Add ASSERT to avoid detection of potential NULL pointer access
> >
> > Signed-off-by: Owen Smith <owen.smith@cloud.com>
> > ---
> >   src/xeniface/ioctl_gnttab.c | 1 +
> >   src/xeniface/registry.c     | 1 +
> >   2 files changed, 2 insertions(+)
> >
> > diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c
> > index 026f29b..ef77295 100644
> > --- a/src/xeniface/ioctl_gnttab.c
> > +++ b/src/xeniface/ioctl_gnttab.c
> > @@ -387,6 +387,7 @@ IoctlGnttabPermitForeignAccess(
> >       In =3D NULL;
> >
> >       if (ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCES=
S) {
> > +        ASSERT3P(In1, !=3D, NULL);
>
> I think the following would capture the intention better while also
> fixing the warning:
>
> diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c
> index 026f29b..a5a7d88 100644
> --- a/src/xeniface/ioctl_gnttab.c
> +++ b/src/xeniface/ioctl_gnttab.c
> @@ -326,6 +326,9 @@ IoctlGnttabPermitForeignAccess(
>       ULONG Page;
>       ULONG ControlCode =3D
>
> IoGetCurrentIrpStackLocation(Irp)->Parameters.DeviceIoControl.IoControlCo=
de;
>
> +    ASSERT(ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCES=
S ||
> +                      ControlCode =3D=3D
> IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2);
> +
>       Status =3D STATUS_INVALID_BUFFER_SIZE;
>       if ((InLen !=3D sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_IN) &&
> ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS)
>           || (InLen !=3D
> sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_IN_V2) && ControlCode =3D=3D
> IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2))
> diff --git a/src/xeniface/ioctls.c b/src/xeniface/ioctls.c
> index 076750a..dadf0f9 100644
> --- a/src/xeniface/ioctls.c
> +++ b/src/xeniface/ioctls.c
> @@ -42,9 +42,12 @@
>
>   NTSTATUS
>   __CaptureUserBuffer(
> -    __in  PVOID Buffer,
> -    __in  ULONG Length,
> -    __out PVOID *CapturedBuffer
> +    _In_reads_bytes_(Length) PVOID  Buffer,
> +    _In_ ULONG                      Length,
> +    _Outptr_result_buffer_maybenull_(Length)
> +    _When_(Length =3D=3D 0, _At_(*CapturedBuffer, _Post_null_))
> +    _When_(Length !=3D 0, _At_(*CapturedBuffer, _Post_notnull_))
> +    PVOID                           *CapturedBuffer
>       )
>   {
>       NTSTATUS Status;
> diff --git a/src/xeniface/ioctls.h b/src/xeniface/ioctls.h
> index b4c8de2..26ef02b 100644
> --- a/src/xeniface/ioctls.h
> +++ b/src/xeniface/ioctls.h
> @@ -91,9 +91,12 @@ typedef struct _XENIFACE_GNTTAB_CONTEXT {
>
>   NTSTATUS
>   __CaptureUserBuffer(
> -    __in  PVOID Buffer,
> -    __in  ULONG Length,
> -    __out PVOID *CapturedBuffer
> +    _In_reads_bytes_(Length) PVOID  Buffer,
> +    _In_ ULONG                      Length,
> +    _Outptr_result_buffer_maybenull_(Length)
> +    _When_(Length =3D=3D 0, _At_(*CapturedBuffer, _Post_null_))
> +    _When_(Length !=3D 0, _At_(*CapturedBuffer, _Post_notnull_))
> +    PVOID                           *CapturedBuffer
>       );
>
>   VOID
>
>
> >           Context->UseRequestId =3D TRUE;
> >           Context->RequestId =3D In1->RequestId;
> >           __FreeCapturedBuffer(In1);
> > diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c
> > index 1ab85c9..423c4cc 100644
> > --- a/src/xeniface/registry.c
> > +++ b/src/xeniface/registry.c
> > @@ -62,6 +62,7 @@ __RegistryFree(
> >   }
> >
> >   NTSTATUS
> > +#pragma prefast(suppress:28101) // unannotated DriverEntry function
> >   RegistryInitialize(
> >       IN  PDRIVER_OBJECT  DriverObject,
> >       IN  PUNICODE_STRING Path
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>
>

--00000000000043f52d063e588a62
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">I think there are bigger issues with the V1 -&gt; V2 conversion code her=
e... I may look at refactoring this IOCTL handler to improve the buffer acc=
esses</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br=
></div><div class=3D"gmail_default" style=3D"font-family:monospace">Owen</d=
iv></div><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"l=
tr" class=3D"gmail_attr">On Mon, Sep 8, 2025 at 9:58=E2=80=AFAM Tu Dinh &lt=
;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">On 08/09/2025 09:46, Owen Smith wrote:<br>
&gt; * RegistryInitialize is incorrectly detected as DRIVER_INITIALIZE<br>
&gt; * Add ASSERT to avoid detection of potential NULL pointer access<br>
&gt; <br>
&gt; Signed-off-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com" =
target=3D"_blank">owen.smith@cloud.com</a>&gt;<br>
&gt; ---<br>
&gt;=C2=A0 =C2=A0src/xeniface/ioctl_gnttab.c | 1 +<br>
&gt;=C2=A0 =C2=A0src/xeniface/registry.c=C2=A0 =C2=A0 =C2=A0| 1 +<br>
&gt;=C2=A0 =C2=A02 files changed, 2 insertions(+)<br>
&gt; <br>
&gt; diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c=
<br>
&gt; index 026f29b..ef77295 100644<br>
&gt; --- a/src/xeniface/ioctl_gnttab.c<br>
&gt; +++ b/src/xeniface/ioctl_gnttab.c<br>
&gt; @@ -387,6 +387,7 @@ IoctlGnttabPermitForeignAccess(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0In =3D NULL;<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0if (ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB=
_PERMIT_FOREIGN_ACCESS) {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ASSERT3P(In1, !=3D, NULL);<br>
<br>
I think the following would capture the intention better while also <br>
fixing the warning:<br>
<br>
diff --git a/src/xeniface/ioctl_gnttab.c b/src/xeniface/ioctl_gnttab.c<br>
index 026f29b..a5a7d88 100644<br>
--- a/src/xeniface/ioctl_gnttab.c<br>
+++ b/src/xeniface/ioctl_gnttab.c<br>
@@ -326,6 +326,9 @@ IoctlGnttabPermitForeignAccess(<br>
=C2=A0 =C2=A0 =C2=A0 ULONG Page;<br>
=C2=A0 =C2=A0 =C2=A0 ULONG ControlCode =3D <br>
IoGetCurrentIrpStackLocation(Irp)-&gt;Parameters.DeviceIoControl.IoControlC=
ode;<br>
<br>
+=C2=A0 =C2=A0 ASSERT(ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB_PERMIT_FOREI=
GN_ACCESS ||<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 ControlCode =3D=3D <br>
IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2);<br>
+<br>
=C2=A0 =C2=A0 =C2=A0 Status =3D STATUS_INVALID_BUFFER_SIZE;<br>
=C2=A0 =C2=A0 =C2=A0 if ((InLen !=3D sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_=
ACCESS_IN) &amp;&amp; <br>
ControlCode =3D=3D IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 || (InLen !=3D <br>
sizeof(XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_IN_V2) &amp;&amp; ControlCode =
=3D=3D <br>
IOCTL_XENIFACE_GNTTAB_PERMIT_FOREIGN_ACCESS_V2))<br>
diff --git a/src/xeniface/ioctls.c b/src/xeniface/ioctls.c<br>
index 076750a..dadf0f9 100644<br>
--- a/src/xeniface/ioctls.c<br>
+++ b/src/xeniface/ioctls.c<br>
@@ -42,9 +42,12 @@<br>
<br>
=C2=A0 NTSTATUS<br>
=C2=A0 __CaptureUserBuffer(<br>
-=C2=A0 =C2=A0 __in=C2=A0 PVOID Buffer,<br>
-=C2=A0 =C2=A0 __in=C2=A0 ULONG Length,<br>
-=C2=A0 =C2=A0 __out PVOID *CapturedBuffer<br>
+=C2=A0 =C2=A0 _In_reads_bytes_(Length) PVOID=C2=A0 Buffer,<br>
+=C2=A0 =C2=A0 _In_ ULONG=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Length,<br>
+=C2=A0 =C2=A0 _Outptr_result_buffer_maybenull_(Length)<br>
+=C2=A0 =C2=A0 _When_(Length =3D=3D 0, _At_(*CapturedBuffer, _Post_null_))<=
br>
+=C2=A0 =C2=A0 _When_(Length !=3D 0, _At_(*CapturedBuffer, _Post_notnull_))=
<br>
+=C2=A0 =C2=A0 PVOID=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*CapturedBuffer<br>
=C2=A0 =C2=A0 =C2=A0 )<br>
=C2=A0 {<br>
=C2=A0 =C2=A0 =C2=A0 NTSTATUS Status;<br>
diff --git a/src/xeniface/ioctls.h b/src/xeniface/ioctls.h<br>
index b4c8de2..26ef02b 100644<br>
--- a/src/xeniface/ioctls.h<br>
+++ b/src/xeniface/ioctls.h<br>
@@ -91,9 +91,12 @@ typedef struct _XENIFACE_GNTTAB_CONTEXT {<br>
<br>
=C2=A0 NTSTATUS<br>
=C2=A0 __CaptureUserBuffer(<br>
-=C2=A0 =C2=A0 __in=C2=A0 PVOID Buffer,<br>
-=C2=A0 =C2=A0 __in=C2=A0 ULONG Length,<br>
-=C2=A0 =C2=A0 __out PVOID *CapturedBuffer<br>
+=C2=A0 =C2=A0 _In_reads_bytes_(Length) PVOID=C2=A0 Buffer,<br>
+=C2=A0 =C2=A0 _In_ ULONG=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Length,<br>
+=C2=A0 =C2=A0 _Outptr_result_buffer_maybenull_(Length)<br>
+=C2=A0 =C2=A0 _When_(Length =3D=3D 0, _At_(*CapturedBuffer, _Post_null_))<=
br>
+=C2=A0 =C2=A0 _When_(Length !=3D 0, _At_(*CapturedBuffer, _Post_notnull_))=
<br>
+=C2=A0 =C2=A0 PVOID=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*CapturedBuffer<br>
=C2=A0 =C2=A0 =C2=A0 );<br>
<br>
=C2=A0 VOID<br>
<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Context-&gt;UseRequestId =3D T=
RUE;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Context-&gt;RequestId =3D In1-=
&gt;RequestId;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__FreeCapturedBuffer(In1);<br>
&gt; diff --git a/src/xeniface/registry.c b/src/xeniface/registry.c<br>
&gt; index 1ab85c9..423c4cc 100644<br>
&gt; --- a/src/xeniface/registry.c<br>
&gt; +++ b/src/xeniface/registry.c<br>
&gt; @@ -62,6 +62,7 @@ __RegistryFree(<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0NTSTATUS<br>
&gt; +#pragma prefast(suppress:28101) // unannotated DriverEntry function<b=
r>
&gt;=C2=A0 =C2=A0RegistryInitialize(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0IN=C2=A0 PDRIVER_OBJECT=C2=A0 DriverObject,<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0IN=C2=A0 PUNICODE_STRING Path<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
<br>
</blockquote></div>

--00000000000043f52d063e588a62--


From win-pv-devel-bounces@lists.xenproject.org Tue Sep 09 08:38:04 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 08:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1115910.1462342 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvtrW-0004j7-Jr; Tue, 09 Sep 2025 08:38:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1115910.1462342; Tue, 09 Sep 2025 08:38:02 +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 1uvtrW-0004j0-HG; Tue, 09 Sep 2025 08:38:02 +0000
Received: by outflank-mailman (input) for mailman id 1115910;
 Tue, 09 Sep 2025 08:38:01 +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=JqsH=3U=bounce.vates.tech=bounce-md_30504962.68bfe764.v1-11c6c8bc60d14cae9b8974d8b4aef4d1@srs-se1.protection.inumbo.net>)
 id 1uvtrU-0004iu-W7
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 08:38:01 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 492127ad-8d58-11f0-9809-7dc792cee155;
 Tue, 09 Sep 2025 10:37:58 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cLcdw3Xlvz2K22y4
 for <win-pv-devel@lists.xenproject.org>; Tue,  9 Sep 2025 08:37:56 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 11c6c8bc60d14cae9b8974d8b4aef4d1; Tue, 09 Sep 2025 08:37:56 +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: 492127ad-8d58-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757407076; x=1757677076;
	bh=AepwBzQt8WKiuS/ImTw/LYrSs4WmI6F6NcNrAXqYONo=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=MLNW3DVK/hiaSTQow3ESntJzwgY7NAcFP2WNznMS9nhat2LLxC1JR22Gi5eIRKlYB
	 WiUtb7tYnrJ1D/WG+XdMLaXJr78p3SpkUbqv9sBGigcwAKLoPIzAb0jZ0DChy0FR2L
	 QihHBa3CgHaln+HxZWpZKMMGTYQrTQPw8XV1f6Vwar1hkj3jgwaZ+wD957U6kZKqn2
	 eFJu8V0lFrRMrIrc3qtxpuDsKpqipRCQUDS3rBJo9a+yQqm05PajQC6pMYcnturHCn
	 fxvy3Jwew2681FDEVZjgCAjGszt48xP6bbBmZwfCKzqJ7Jhn/L1R+3WGpU4tILVbMG
	 FRR0vq8vwUEsA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757407076; x=1757667576; i=ngoc-tu.dinh@vates.tech;
	bh=AepwBzQt8WKiuS/ImTw/LYrSs4WmI6F6NcNrAXqYONo=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=Aq3Y8dkXKf1Z8i1oorfPLMceAASeVN9CQqkgPa0EmsGLzOx85w/5zzeOcnf3pOpUZ
	 GO+v6qZ52MVvN3leNWylXB9t/vIXIfrS2scQ1Wztd1D1IV1kJ/yfnh5BvUeaeFPq4Q
	 ae8iIJsECdllX36gbehdSjbqBNBsKKsJarYhvH9I+cWMha9iHnxqJbaWeZS8XTvNZD
	 ilGY7Z4yI9+xShRYw1PuVxVR1zd7OnmapH1Eu97NVJc1VVzw1Ei2o/YcBGWQOZuRlV
	 LjPtB+vf3A0PUMqV4hJTvHilg7nZ2GScAGocE1Rnn3O4sc7WSg0t+ep8TWPDI6ARkO
	 4x6/K5nUgs7Ag==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENBUS=20PATCH]=20emulated:=20Detect=20emulated=20NVMe=20controllers?=
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: 1757407075527
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>, "Keshab Upadhya" <keshab@outlook.ph>
Message-Id: <20250909083751.1183-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.11c6c8bc60d14cae9b8974d8b4aef4d1?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250909:md
Date: Tue, 09 Sep 2025 08:37:56 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Xenfilt currently can't distinguish between a real NVMe controller and
one emulated by QEMU. This will cause EmulatedIsDiskPresent to always
report as true, causing Xenvbd to skip target creation if a real NVMe
controller is passed through to the guest.

Stop saving just a single CompatibleID in XENFILT_EMULATED_DEVICE_DATA.
Instead, add logic to EmulatedSetObjectDeviceData to explicitly detect
emulated NVMe controllers using their PCI vendor/device IDs.

Reported-by: Keshab Upadhya <keshab@outlook.ph>
Link: https://github.com/xcp-ng/win-pv-drivers/issues/21
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xenfilt/emulated.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/xenfilt/emulated.c b/src/xenfilt/emulated.c
index 4205cc5..cbe90b0 100644
--- a/src/xenfilt/emulated.c
+++ b/src/xenfilt/emulated.c
@@ -47,8 +47,8 @@
 typedef struct _XENFILT_EMULATED_DEVICE_DATA {
     CHAR                                DeviceID[MAXNAMELEN];
     CHAR                                InstanceID[MAXNAMELEN];
-    CHAR                                CompatibleID[MAXNAMELEN];
     XENBUS_EMULATED_ACTIVATION_STATUS   ForceActivate;
+    BOOLEAN                             IsEmulatedNvme;
 } XENFILT_EMULATED_DEVICE_DATA, *PXENFILT_EMULATED_DEVICE_DATA;
 
 typedef struct _XENFILT_EMULATED_DISK_DATA {
@@ -100,7 +100,6 @@ EmulatedSetObjectDeviceData(
     )
 {
     ULONG                               Index;
-    PSTR                                LastMatch;
     NTSTATUS                            status;
 
     status = STATUS_INVALID_PARAMETER;
@@ -123,7 +122,6 @@ EmulatedSetObjectDeviceData(
         goto done;
 
     Index = 0;
-    LastMatch = CompatibleIDs;
     for (;;) {
         ULONG   Length;
 
@@ -131,17 +129,17 @@ EmulatedSetObjectDeviceData(
         if (Length == 0)
             break;
 
-        LastMatch = &CompatibleIDs[Index];
+        // 8086:5845 and 1B36:0010 are the IDs of the QEMU NVMe controller when
+        // "use-intel-id" is on and off respectively.
+        if (_stricmp(&CompatibleIDs[Index], "PCI\\VEN_8086&DEV_5845") == 0 ||
+            _stricmp(&CompatibleIDs[Index], "PCI\\VEN_1B36&DEV_0010") == 0) {
+            EmulatedObject->Data.Device.IsEmulatedNvme = TRUE;
+            break;
+        }
 
         Index += Length + 1;
     }
 
-    status = RtlStringCbPrintfA(EmulatedObject->Data.Device.CompatibleID,
-                                MAXNAMELEN,
-                                "%s",
-                                LastMatch);
-    ASSERT(NT_SUCCESS(status));
-
 done:
     return STATUS_SUCCESS;
 
@@ -418,8 +416,7 @@ EmulatedIsDiskPresent(
         }
 
         if (EmulatedObject->Type == XENFILT_EMULATED_OBJECT_TYPE_PCI &&
-            _stricmp("PCI\\CC_0108", EmulatedObject->Data.Device.CompatibleID) == 0 &&
-            Index <= 3) {
+            EmulatedObject->Data.Device.IsEmulatedNvme) {
             Trace("FOUND\n");
             break;
         }
-- 
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 Sep 09 12:22:30 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 12:22:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1116725.1462890 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvxMj-0005v7-Ip; Tue, 09 Sep 2025 12:22:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1116725.1462890; Tue, 09 Sep 2025 12:22:29 +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 1uvxMj-0005v0-GO; Tue, 09 Sep 2025 12:22:29 +0000
Received: by outflank-mailman (input) for mailman id 1116725;
 Tue, 09 Sep 2025 12:22:28 +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=EhME=3U=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvxMi-0005tI-Om
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 12:22:28 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a3e60d84-8d77-11f0-9809-7dc792cee155;
 Tue, 09 Sep 2025 14:22:24 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-b042cc39551so996108466b.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 09 Sep 2025 05:22:24 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm2120004766b.2.2025.09.09.05.22.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Sep 2025 05:22:22 -0700 (PDT)
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: a3e60d84-8d77-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757420543; x=1758025343; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=V5+5gL1paP6grY8U0py1VEkvsAVn+fdbb5GrdlnMXHA=;
        b=MdOuFZ2y+d6ghbd8agdOJ2E0d2rR3BNH4x5cd9fMXSIj7b6LUlv614kDS+Izfmircp
         15hb58t6bEQfPhbeMkGGptlH+8fHgmTTphXES34M8NjIxoOY060ba/I4Grv1g1AdQ6qK
         N4MSbPojl58LFNAwdxOjcIMTEe6IPo9+tzAqA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757420543; x=1758025343;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=V5+5gL1paP6grY8U0py1VEkvsAVn+fdbb5GrdlnMXHA=;
        b=EuOkUaszLMVfN5wRo3ms3Zmh2jpxpWmtp9ABRWbOR+yrMxAzwXj7Xrsk0JxdNYsWpa
         FtrOvtIckdU2PZtHfjDZwdHlywB2NOstDF59s1UpBfiCVr0MAaoMy2+MnCF4XuCcM6u+
         AU2+3mThq25y60r5U7I02HjMlTTmRiLbo43HvrTP/bhlItEVo5FtGnUNi7/xsrnkksWH
         nyDbyurTKPAU25mLdeoFUXRatyqwegEHUApQYvIQ5hqHHOQZA8CdkkN7HHQ4DTBmyxAY
         9EarujLrJxEcLzkx/YHDHuaMLBO9ZdvrOetD8XohFVc+KfcAgMoFnhspdVt8HuUSfeSf
         +JPw==
X-Gm-Message-State: AOJu0Yw5+kRuXlLhcbu2kfW/u1rAb4p99szU4GltTVa/o5blKA75cK2a
	8BO+BFh/xCUzPxL/4gW0RmTwLF5pma+FShCFb3g2Gom3Y45W0w0q6zlArekS2ARGaHQr+mS6dKk
	G/D4=
X-Gm-Gg: ASbGncsdmgnWj8eDFS66j52tQEbUzOt3cOYMxaTx0isOJNRs0byUUsnQeod/MKiroJM
	aKhkBo+jz73gC2tjiMeZzJApSrggOlx7yJbCNJWE7mZSdYHc29rVNzyudUCK7Hs72wOTeMk9SwX
	UBN+08vwr2UGCSlRe2iqZdwkS592peQKSJaRg5yaPLEQfcDEKpJ+vlW50kkGHXMQ7Tt1vUqVLCx
	FnCMLe9usbzPT3tx9E6z+kWTSwXnw/2/GeMP4laUfwLkvcTY3DzW9KumoALAI9WLhdhSFNUtPOg
	7kOuRt8WvYsLnb9NIUM0ZMs+/6Yrwx7fNy5YzFMuyHbJGzPa+CiS6U0qaEhaVM1uIvGZGf9M5sy
	Tckn0UDVfaWojbcw76JhtnH9KPK+HditjEacSMoxAgWd5qLZiSQuq911h9OFwvlXotKCIhoeQK5
	w=
X-Google-Smtp-Source: AGHT+IHODlWLuNYLOCQSdw2YVP4C4QmFxOkvBKXxiWpyZhPM4+nt2QMN+UeyVIabZNgz1oBdocqf7Q==
X-Received: by 2002:a17:907:3d06:b0:b04:4786:5e02 with SMTP id a640c23a62f3a-b04b16dc6e4mr1095001166b.45.1757420542916;
        Tue, 09 Sep 2025 05:22:22 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: david ambu <david.preetham@cloud.com>,
	Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 1/4] cache: Fix memory leak in failure path
Date: Tue,  9 Sep 2025 13:22:13 +0100
Message-ID: <20250909122216.739-1-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: david ambu <david.preetham@cloud.com>

In certain error paths, the context memory was not being released,
causing a potential memory leak. Ensure that __CacheFree() is called
on failure to properly release resources and reset the context.
Free Context during failure paths.

Signed-off-by: david ambu <david.preetham@cloud.com>

Added blank line, split patch and modified commit message

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenbus/cache.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index d60ae29..e61033d 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -1275,6 +1275,9 @@ fail2:
     RtlZeroMemory(&(*Context)->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
+    __CacheFree(*Context);
+    *Context = NULL;
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Tue Sep 09 12:22:30 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 12:22:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1116724.1462886 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvxMi-0005te-Hh; Tue, 09 Sep 2025 12:22:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1116724.1462886; Tue, 09 Sep 2025 12:22: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 1uvxMi-0005tX-FC; Tue, 09 Sep 2025 12:22:28 +0000
Received: by outflank-mailman (input) for mailman id 1116724;
 Tue, 09 Sep 2025 12:22:27 +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=EhME=3U=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvxMh-0005tI-3P
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 12:22:27 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a49dc745-8d77-11f0-9809-7dc792cee155;
 Tue, 09 Sep 2025 14:22:25 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-b049bd81ce5so159541266b.1
 for <win-pv-devel@lists.xenproject.org>; Tue, 09 Sep 2025 05:22:25 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm2120004766b.2.2025.09.09.05.22.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Sep 2025 05:22:23 -0700 (PDT)
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: a49dc745-8d77-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757420544; x=1758025344; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=8PbXoT8TjrKJoq/wx3BcXNg/NKt+d5u/XG9gsuvZ/J8=;
        b=BbCW9bPHsjG2fG91WXB2JB32XzXrSXu+E7TDmRU3V6qMGd+/4iYOcGX0+6WxmdTb3J
         luts7GErgfG/IxVG9jfeZjxnFwMwyyUj9J+Z1JZlf9RqmgnGrFv3H7SnNZwf9vn/pOTF
         aUSFMMyDNbdPOa/lu3LY/oKnreaWOIW+1ir8g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757420544; x=1758025344;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=8PbXoT8TjrKJoq/wx3BcXNg/NKt+d5u/XG9gsuvZ/J8=;
        b=jrCExMAbZoO1y8a5Z9Fu+6P2wVmWnwmmRXxavOJcG/Rnue0Rh7BCfmE1vDCZemLTcR
         GK8FJt4B1X3nTBCr6PjlSDEfjrrvcaQEK5Es8acuEY9nd7itle5EDTuiz1uGhfGWau/L
         2CaJhtZS73mTQJ2gdQzIlqAU+2eYqC9X4YzVXvC3Cl+60WWPsTgAjIqhg9nTsKCLhHj5
         R1NQjN5IJlR+WI4D3AEPnKkhIJqYjf3NKf6/vF1LSxLsgI5DCxcQVwSyAeMVBEZCUypM
         WCPuEtQn+378YzC59oM472oWshHi/cisbTQnoie9s6BLhjbmBt0O8wc2cVOhS91EX0aa
         W3hg==
X-Gm-Message-State: AOJu0YwdvGZKfcCq3kOAYr2BRKyvhoykCMC1fN6wh+LoXwZTDtK8CkNg
	E9FbMAt0UAxscfFSr126HCsrgqFWDdC7mzjt33ZD/Ax081lAJWYXXfxGjhQo2GHaQIGhVjRJo40
	6ZMg=
X-Gm-Gg: ASbGncsIZmrkkGLHYJEFPySSvG1ZvTkdMHYaFn5dMeraYo3Iz2o21kM523muSRPlbKk
	FdB3a20cjSgaTcXOML0wWk3PJ6T3KbTxsXBPlDO5Pv6Tz+iAqFV+L3IhdTmGxc1g+u6/wB5U/2X
	w2loYxCVpqgMiOPzkUYRL1Tu+Uas0HH2P0cDdW9x/YPyRSXcANRL4gQ0Jx8giLkdX6tZ76twoBE
	ESKgLaB6gCyjce0x8x+DJAiIinr79Oc8DVK4zXbmM2Z5FS3Ujl6n0ZMVSVvhfJNlynPSzcvdMNp
	WBy0oFEMh5jrEM4ex06QwNM8DL6WiOpM7KlVZ00bxZ9Zsg7pDelznp+HZwK4/UxAKXUt3y6aRj8
	YRjUZ6sdVqvNWOo75xis4dH4UW43rzfdCiLAHrmcu97gHGnBNO0W+0g==
X-Google-Smtp-Source: AGHT+IHWI4flj49pfUWEiwaY0nD2DJ58B6suK6AdZV71i0EDM7uzl/beEeJecyBPpTehRx72r2GOSA==
X-Received: by 2002:a17:907:3f8c:b0:b04:7514:f9ce with SMTP id a640c23a62f3a-b049307f5edmr1530454066b.2.1757420544168;
        Tue, 09 Sep 2025 05:22:24 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: david ambu <david.preetham@cloud.com>,
	Owen Smith <owen.smith@cloud.com>
Subject: [PATCH 2/4] gnttab: Fix memory leak in failure path
Date: Tue,  9 Sep 2025 13:22:14 +0100
Message-ID: <20250909122216.739-2-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250909122216.739-1-owen.smith@cloud.com>
References: <20250909122216.739-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: david ambu <david.preetham@cloud.com>

In certain error paths, the context memory was not being released,
causing a potential memory leak. Ensure that __GnttabFree() is called
on failure to properly release resources and reset the context.
Free Context during failure paths
Allocated memory is freed during failure case.

Signed-off-by: david ambu <david.preetham@cloud.com>

Added blank line, split patch and improved commit message

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenbus/gnttab.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/xenbus/gnttab.c b/src/xenbus/gnttab.c
index 693e9b3..ea95edf 100644
--- a/src/xenbus/gnttab.c
+++ b/src/xenbus/gnttab.c
@@ -1139,6 +1139,9 @@ GnttabInitialize(
 fail2:
     Error("fail2\n");
 
+    __GnttabFree(*Context);
+    *Context = NULL;
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Tue Sep 09 12:22:30 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 12:22:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1116726.1462894 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvxMk-0005wo-K5; Tue, 09 Sep 2025 12:22:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1116726.1462894; Tue, 09 Sep 2025 12:22:30 +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 1uvxMk-0005wf-Ha; Tue, 09 Sep 2025 12:22:30 +0000
Received: by outflank-mailman (input) for mailman id 1116726;
 Tue, 09 Sep 2025 12:22:29 +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=EhME=3U=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvxMi-0005um-W1
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 12:22:28 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a5f79d4e-8d77-11f0-9d13-b5c5bf9af7f9;
 Tue, 09 Sep 2025 14:22:28 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-b00a9989633so167148566b.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 09 Sep 2025 05:22:27 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm2120004766b.2.2025.09.09.05.22.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Sep 2025 05:22:25 -0700 (PDT)
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: a5f79d4e-8d77-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757420546; x=1758025346; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=LF79M71To5or0ILl5tjrS+A76jODx7yYz7yl6oXyHs4=;
        b=IY0r2VG7wZOozNKk7vvRE2RICTbr3bAWvxWmhYRjOQPBl49NUGbwWcge6z5LBB7qey
         uyjjRabfzTwnAwBprgJmUUIDiYpTJ2DgBO0PX2AXmS8QAJYTPTpCv1C/WUiAoqwWfetu
         gKkp0TGDWcwUsn7o7qm8ooUkatix5MIUklP8g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757420546; x=1758025346;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LF79M71To5or0ILl5tjrS+A76jODx7yYz7yl6oXyHs4=;
        b=tGIyLEaRogw/uohn4CwTVwDC/3e4kRSKeNP++BCihyXVHH0CxjnYwkrF/arVV3+dlD
         6moOX/1KVCPkfN/u+dWpZJK2tYY53xMLAPOFuFvtkXaXUK3KhXpYHRABPnvyP0lLT+ro
         nHckKAo0C1V5UHBWSCl3rCB8Yoge0+fgD48H+1N+AgSGrQppB0FKzPEv7gFxEsj7q/jw
         WMAaMd5IbDCAEXCfgrWJkSMwnHpFU+t0E8hHdNeJx5w4wUKrA3YYDhs1rsn5iIZO+TL1
         blLEZhFjABjocHIoViiQ56sksKLba/i+bg3VAmfY2ZWBLAAMgGEuwU2Di606WSKJIdtN
         qOQA==
X-Gm-Message-State: AOJu0YzCqcX6hQn/0OTxACOXk97KiD33t84Ck51q5gffBZTo6NLQ8yjJ
	mR19aOtM6mA/PwSC1bbd/QHBo2AunKMKf4oMzOZNiqQ372eUqOln3TAXfEGIPBSmy6oaMVaL7R3
	T/yc=
X-Gm-Gg: ASbGncs+FJMcPDZvFwtmABNkn9tdySOj679kvRCzF6cK3bMdQSruCfBeGkih51qY4Mz
	Ya/NSO7eH36lU3RYfs6b0LbwCanqsDk4FuHIyjLq++rh//Y7wT1oBo3G56ednDeyezTwtm5h35r
	kvVYGHaG9sKQw2P4nWFhb60rcC2EuXeT8b3ETMFA+2FPcum0Xa+XVBPNJSJj0uTtwY+ipF2bns9
	WtCaUL+IRuMd/ukrsH7+j9gvaqsSMTMoeDjT8ngkbwGHg7Bs4B48NHKjvcPN+v63ZviGNQR8xzO
	5qFKTIMKPJaNVUW4RUdBP0vyLXRyPZR2uBiBu3rKJ7V8kr92nAqMX/PVvFXQl+0/UFvQ/SW12+2
	Bi6jWbaBYse4Q25d3wAaUSUrjtQlOSedslm2AtimE7Fm+IDih1DdtvmuDl80iwi2B
X-Google-Smtp-Source: AGHT+IF176OBpCRdcnB5dz/qJi/x1pK+QQbMqc5KsK+dfG0YB2mUZaTmO/7nQW1A1BtJ8BjLY6ZMaA==
X-Received: by 2002:a17:907:3e09:b0:afe:6648:a243 with SMTP id a640c23a62f3a-b049307ef09mr1797136466b.3.1757420546453;
        Tue, 09 Sep 2025 05:22:26 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>,
	david ambu <david.preetham@cloud.com>
Subject: [PATCH 4/4] Always check StorePrepareRequest's return value
Date: Tue,  9 Sep 2025 13:22:16 +0100
Message-ID: <20250909122216.739-4-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250909122216.739-1-owen.smith@cloud.com>
References: <20250909122216.739-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

StoreWatchAdd, StoreWatchRemove, StoreTransactionStart and StoreTransactionEnd
functions should check the return value from StorePrepareRequest and goto the
appropriate failure.

Signed-off-by: david ambu <david.preetham@cloud.com>
---
 src/xenbus/store.c | 63 ++++++++++++++++++++++++++++++----------------
 1 file changed, 41 insertions(+), 22 deletions(-)

diff --git a/src/xenbus/store.c b/src/xenbus/store.c
index 39fd106..503144a 100644
--- a/src/xenbus/store.c
+++ b/src/xenbus/store.c
@@ -1595,18 +1595,18 @@ StoreTransactionStart(
                                  NULL, 0);
 
     KeReleaseSpinLock(&Context->Lock, Irql);
-
-    ASSERT(NT_SUCCESS(status));
+    if (!NT_SUCCESS(status))
+        goto fail2;
 
     Response = StoreSubmitRequest(Context, &Request);
 
     status = STATUS_NO_MEMORY;
     if (Response == NULL)
-        goto fail2;
+        goto fail3;
 
     status = StoreCheckResponse(Response);
     if (!NT_SUCCESS(status))
-        goto fail3;
+        goto fail4;
 
     (*Transaction)->Id = (uint32_t)strtoul(Response->Segment[XENBUS_STORE_RESPONSE_PAYLOAD_SEGMENT].Data,
                                            NULL,
@@ -1623,12 +1623,15 @@ StoreTransactionStart(
 
     return STATUS_SUCCESS;
 
-fail3:
-    Error("fail3\n");
+fail4:
+    Error("fail4\n");
 
     StoreFreeResponse(Response);
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
 
+fail3:
+    Error("fail3\n");
+
 fail2:
     Error("fail2\n");
 
@@ -1677,17 +1680,18 @@ StoreTransactionEnd(
 
     KeReleaseSpinLock(&Context->Lock, Irql);
 
-    ASSERT(NT_SUCCESS(status));
+    if (!NT_SUCCESS(status))
+        goto fail1;
 
     Response = StoreSubmitRequest(Context, &Request);
 
     status = STATUS_NO_MEMORY;
     if (Response == NULL)
-        goto fail1;
+        goto fail2;
 
     status = StoreCheckResponse(Response);
     if (!NT_SUCCESS(status) && status != STATUS_RETRY)
-        goto fail2;
+        goto fail3;
 
     StoreFreeResponse(Response);
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
@@ -1711,12 +1715,19 @@ done:
 
     return status;
 
-fail2:
+fail3:
+    Error("fail3\n");
+
     ASSERT3U(status, !=, STATUS_RETRY);
 
     StoreFreeResponse(Response);
 
+fail2:
+    Error("fail2\n");
+
 fail1:
+    Error("fail1 (%08x)\n", status);
+
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
 
     return status;
@@ -1802,30 +1813,31 @@ StoreWatchAdd(
 
     KeReleaseSpinLock(&Context->Lock, Irql);
 
-    ASSERT(NT_SUCCESS(status));
+    if (!NT_SUCCESS(status))
+        goto fail4;
 
     Response = StoreSubmitRequest(Context, &Request);
 
     status = STATUS_NO_MEMORY;
     if (Response == NULL)
-        goto fail4;
+        goto fail5;
 
     status = StoreCheckResponse(Response);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     StoreFreeResponse(Response);
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
 
     return STATUS_SUCCESS;
 
-fail5:
-    Error("fail5\n");
+fail6:
+    Error("fail6\n");
 
     StoreFreeResponse(Response);
 
-fail4:
-    Error("fail4\n");
+fail5:
+    Error("fail5\n");
 
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
 
@@ -1842,6 +1854,9 @@ fail4:
 
     __StoreFree(Path);
 
+fail4:
+    Error("fail4\n");
+
 fail3:
     Error("fail3\n");
 
@@ -1906,17 +1921,18 @@ StoreWatchRemove(
 
     KeReleaseSpinLock(&Context->Lock, Irql);
 
-    ASSERT(NT_SUCCESS(status));
+    if (!NT_SUCCESS(status))
+        goto fail1;
 
     Response = StoreSubmitRequest(Context, &Request);
 
     status = STATUS_NO_MEMORY;
     if (Response == NULL)
-        goto fail1;
+        goto fail2;
 
     status = StoreCheckResponse(Response);
     if (!NT_SUCCESS(status))
-        goto fail2;
+        goto fail3;
 
     StoreFreeResponse(Response);
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
@@ -1944,11 +1960,14 @@ done:
 
     return STATUS_SUCCESS;
 
-fail2:
-    Error("fail2\n");
+fail3:
+    Error("fail3\n");
 
     StoreFreeResponse(Response);
 
+fail2:
+    Error("fail2\n");
+
 fail1:
     Error("fail1 (%08x)\n", status);
 
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Tue Sep 09 12:22:31 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 12:22:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1116727.1462898 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvxMl-0005yU-Ld; Tue, 09 Sep 2025 12:22:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1116727.1462898; Tue, 09 Sep 2025 12:22:31 +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 1uvxMl-0005yK-Iw; Tue, 09 Sep 2025 12:22:31 +0000
Received: by outflank-mailman (input) for mailman id 1116727;
 Tue, 09 Sep 2025 12:22:29 +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=EhME=3U=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uvxMj-0005um-Tf
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 12:22:29 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7127f4a-8d77-11f0-9d13-b5c5bf9af7f9;
 Tue, 09 Sep 2025 14:22:29 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-b04679375f6so981995166b.2
 for <win-pv-devel@lists.xenproject.org>; Tue, 09 Sep 2025 05:22:29 -0700 (PDT)
Received: from mewpvdipd1026.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-b042dcb9105sm2120004766b.2.2025.09.09.05.22.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Sep 2025 05:22:24 -0700 (PDT)
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: a7127f4a-8d77-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757420548; x=1758025348; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=+3H9SPjElJ+vpM7/jHycf5Mz4z8hXJ3y004HflufQrU=;
        b=KQ2aSVNm9+thdeMI+oMh/HB3GVx4HBS5WodAb861iGrkTQx/R7pPsJ0wxD866Vxu5i
         +Nj6isLqHswJ1DSTH8jv3E7M9r1tXClA4k673y6Uxlb4q3fCCkrbnoywTBfJ/KyI5SNU
         MSMQIONSvTzwJfg1iBDQzGD4zSrZx3cKa2G2E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757420548; x=1758025348;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+3H9SPjElJ+vpM7/jHycf5Mz4z8hXJ3y004HflufQrU=;
        b=o3r1ONq/cxlxRZhB7oOBFCAWELFogNGoUzVlgcOyiUQBzOk7GaZ/6eWTHu0tbUYhT6
         pwACwBUm/ONPWduuwLKjPMbg3tEuANcLVXZ8vbZSy9qAZjgvK/9QRn/vep+FIiFLIkxd
         A/klx/3jGuvHDUNOQ+VkG8s3LtqdeAR2dbf2peGNjx4cGyw0NtYF2CHeqahV890errrF
         ahmbfxQ3lwniaYxTqwxYEOYXl134qEH08D5G0ayKSlAnJnWATx5pPsJRAjoTJYnhw9Ka
         Fc8JYI5Lo9BSrnnKoAuJ0Yph8bhFi6mkgevpv6S2naX3+F61/BCedGmFnR2KLUAAjJHf
         3BEw==
X-Gm-Message-State: AOJu0YwwoTNDouXPrj1bKTXT7oFAleSnaL0wRTeptobyd4v/4/ViydlB
	Xd3yFJ0rRsXY/mRd9jWqj5803PFv5fPsgcbKe6ZCUjc7VcuIabCWNBUdigHVJ/35YISH74HZ9iR
	vWNE=
X-Gm-Gg: ASbGncuA7nX+5JW+OBhjg1LODa19evYZ9JTZTl+PplcFn3oc0a8BoTN9waBIRMJGACQ
	+d9OGHuUqX9GgFG/S4w2NcQOUUBsyS1BQPcTilnEfHgjdlFsRCe7jZ782hnqMw+dINr+kopV5Ho
	XmOzQd6Talz5T6NtxjxNvjy5ltSUlrmzIrFM5Afi+ETclsmLl5EJ2BCwIT/76FEQfspyLNNMH/F
	0L4cyxo4eP4KK9kAtbv86OrVbfIuNnZsGt8KrjT/h7BFwuk+aqyorxocW3/+/3Doj1w+Vhbek7m
	kJLR0rI12U8SPkiOmTOIvZJVMj36GS+TzdzJ4/D/wC+AdHDAXxoOqYaufMERHrrk0CmdSriYjNL
	K2LOipv5FLmWZzMGV8oOKAKa/+1uP0/EFBw/F52NcztS8sHcTEtz9LCEoZavnUjqp
X-Google-Smtp-Source: AGHT+IHFNFAHMblZJ3jCTYqOJfAGQAjUjEe7i6O4yF/H1q0VXQPNyIMTckD5GHEv0DZs1XDIDcbzkA==
X-Received: by 2002:a17:907:2d1f:b0:afe:cbfc:377a with SMTP id a640c23a62f3a-b04b14642efmr1318072866b.27.1757420545409;
        Tue, 09 Sep 2025 05:22:25 -0700 (PDT)
From: Owen Smith <owen.smith@cloud.com>
To: win-pv-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@cloud.com>,
	david ambu <david.preetham@cloud.com>
Subject: [PATCH 3/4] store: Fix memory leak in failure paths
Date: Tue,  9 Sep 2025 13:22:15 +0100
Message-ID: <20250909122216.739-3-owen.smith@cloud.com>
X-Mailer: git-send-email 2.50.1.windows.1
In-Reply-To: <20250909122216.739-1-owen.smith@cloud.com>
References: <20250909122216.739-1-owen.smith@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

In error paths in StoreTransactionStart and StoreWatchAdd, the
context structure was not being freed. Make sure all error paths
release resources by calling __StoreFree()

Signed-off-by: david ambu <david.preetham@cloud.com>

Improve commit message

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/xenbus/store.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/xenbus/store.c b/src/xenbus/store.c
index 27e0706..39fd106 100644
--- a/src/xenbus/store.c
+++ b/src/xenbus/store.c
@@ -1629,14 +1629,15 @@ fail3:
     StoreFreeResponse(Response);
     ASSERT(IsZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST)));
 
+fail2:
+    Error("fail2\n");
+
     (*Transaction)->Caller = NULL;
     (*Transaction)->Magic = 0;
 
     ASSERT(IsZeroMemory(*Transaction, sizeof (XENBUS_STORE_TRANSACTION)));
     __StoreFree(*Transaction);
-
-fail2:
-    Error("fail2\n");
+    *Transaction = NULL;
 
 fail1:
     Error("fail1 (%08x)\n", status);
@@ -1849,6 +1850,7 @@ fail3:
 
     ASSERT(IsZeroMemory(*Watch, sizeof (XENBUS_STORE_WATCH)));
     __StoreFree(*Watch);
+    *Watch = NULL;
 
 fail2:
     Error("fail2\n");
-- 
2.50.1.windows.1



From win-pv-devel-bounces@lists.xenproject.org Tue Sep 09 13:14:10 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 09 Sep 2025 13:14:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1116766.1463006 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uvyAj-0004bg-4s; Tue, 09 Sep 2025 13:14:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1116766.1463006; Tue, 09 Sep 2025 13:14:09 +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 1uvyAj-0004bZ-2J; Tue, 09 Sep 2025 13:14:09 +0000
Received: by outflank-mailman (input) for mailman id 1116766;
 Tue, 09 Sep 2025 13:14:08 +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=AQpL=3U=bounce.vates.tech=bounce-md_30504962.68c0281a.v1-57d17d99601d40989735eee8b107f7bd@srs-se1.protection.inumbo.net>)
 id 1uvyAi-0004bT-2d
 for win-pv-devel@lists.xenproject.org; Tue, 09 Sep 2025 13:14:08 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id db904f16-8d7e-11f0-9809-7dc792cee155;
 Tue, 09 Sep 2025 15:14:04 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cLkmW0ZfXz2K25jw
 for <win-pv-devel@lists.xenproject.org>; Tue,  9 Sep 2025 13:14:03 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 57d17d99601d40989735eee8b107f7bd; Tue, 09 Sep 2025 13:14:02 +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: db904f16-8d7e-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757423643; x=1757693643;
	bh=0umvpRosfcJD/G2BB1fXPLcRX1bhOLydV0bz0j4GrxE=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=it0OI5h9nA0xf2CzFCY0B8LRoyNUg9FXhU+7GYk5DM4esxSm/6gbru4FP+752PTKU
	 ovJgDdtVLn4fHH4A0oCz4/ifPcM/406Rntxm3teWH+wKB9Ev5XHH9r30ffMtFmdToO
	 5mrL0q4/3h+8pfcrqYSDdNdCxl65E6jeGvNLiqnwa+8hge4x0+HtUOCI3TI6zMzGuP
	 5xm0PtrIHQnXLtvupX36pWrOoe9iAyFo5rpe620/oTmPuTjN2S/oS0tGcXXn/va4wY
	 Ak7NmW5O5WMOl6ooaVhnxTKLfyYsxFy+qYCJc5c1O1QTym6jSuq1cwIMpZZTfoxThp
	 0INMSAX/8oBrA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757423643; x=1757684143; i=ngoc-tu.dinh@vates.tech;
	bh=0umvpRosfcJD/G2BB1fXPLcRX1bhOLydV0bz0j4GrxE=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=oWQPO9kqUbaBhhaO54ose0AW8xw6CFvIyG4D3TcxTUd/MmaZHXo5DnWCuzCe/SSHR
	 b/hjgfdVc5dycipugZ2nqf8cSGzaSmnM6Hxy8fGmv6Tov5eoCROXQa8dEcqipemrd9
	 xbJ5d48+4N7XQnSDTPXgF+pI6LBcXXGjNmoG5OHTArnJdzP1rBEmAxBWCTsc1IL9Br
	 FYxPel0dxPa86nGFyddixwmgexrOw4VqXAfUWeoJmnyrfOWrG8YfOjKlhV+96GTXXe
	 yTp1GO2BRj+n553T2ebGzX36dGzjrs8L3/Gd+fMNWb+oWM+Rk3gyJlIY6u5HzadKgS
	 MgSvKAGPLtOnA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/4]=20cache:=20Fix=20memory=20leak=20in=20failure=20path?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1757423642018
Message-Id: <37c365c0-dae6-475c-9c4b-27d7a9b1acbc@vates.tech>
To: "Owen Smith" <owen.smith@cloud.com>, win-pv-devel@lists.xenproject.org
Cc: "david ambu" <david.preetham@cloud.com>
References: <20250909122216.739-1-owen.smith@cloud.com>
In-Reply-To: <20250909122216.739-1-owen.smith@cloud.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.57d17d99601d40989735eee8b107f7bd?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250909:md
Date: Tue, 09 Sep 2025 13:14:02 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 09/09/2025 14:22, Owen Smith wrote:
> From: david ambu <david.preetham@cloud.com>
> 
> In certain error paths, the context memory was not being released,
> causing a potential memory leak. Ensure that __CacheFree() is called
> on failure to properly release resources and reset the context.
> Free Context during failure paths.
> 
> Signed-off-by: david ambu <david.preetham@cloud.com>
> 
> Added blank line, split patch and modified commit message
> 
> Signed-off-by: Owen Smith <owen.smith@cloud.com>

All four patches:

Reviewed-by: Tu Dinh <ngoc-tu.dinh@vates.tech>

> ---
>   src/xenbus/cache.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
> index d60ae29..e61033d 100644
> --- a/src/xenbus/cache.c
> +++ b/src/xenbus/cache.c
> @@ -1275,6 +1275,9 @@ fail2:
>       RtlZeroMemory(&(*Context)->DebugInterface,
>                     sizeof (XENBUS_DEBUG_INTERFACE));
>   
> +    __CacheFree(*Context);
> +    *Context = NULL;
> +
>   fail1:
>       Error("fail1 (%08x)\n", status);
>   



--
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 Sep 10 10:32:38 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 10:32:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118125.1464015 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwI7w-0007Dm-CQ; Wed, 10 Sep 2025 10:32:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118125.1464015; Wed, 10 Sep 2025 10:32: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 1uwI7w-0007Df-9o; Wed, 10 Sep 2025 10:32:36 +0000
Received: by outflank-mailman (input) for mailman id 1118125;
 Wed, 10 Sep 2025 10:32:36 +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=tCr3=3V=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uwI7v-0007DZ-Vm
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 10:32:36 +0000
Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com
 [2607:f8b0:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 732aa9fc-8e31-11f0-9809-7dc792cee155;
 Wed, 10 Sep 2025 12:32:30 +0200 (CEST)
Received: by mail-pl1-x62b.google.com with SMTP id
 d9443c01a7336-251fc032d1fso47032925ad.3
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 03:32:29 -0700 (PDT)
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: 732aa9fc-8e31-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757500348; x=1758105148; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=NNQKAm7B/OhE8tEEFheCi0iOCPe6qDXhWhAcczYlE3k=;
        b=Q1aj6NX71z3CPazElTRVokeC7WGrz4hwGSJjR+ZTBgkjZjhZU0/zHgfxRkXFXAp6i/
         3GAvPZxBBCx8viAA/P8nGx2db/1Li525+J35R1zz75wbvdiJMFcWprH83xBzdoKvLBlh
         VACHqI/jNYK6D0wBB4p6PZlNxYlmmwlddUhbg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757500348; x=1758105148;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=NNQKAm7B/OhE8tEEFheCi0iOCPe6qDXhWhAcczYlE3k=;
        b=dSXk3g319YldzEPrUyw4L9rgZy3TapZBOp1iRe0jP896/8CIW2W92zF5XoprhYIDUI
         NXN2ZYrYBfm28rexLOC9AGoWFEY9HPYG96GIO/M1e9lpS14ri+ebOahv7VHG36HJopLw
         prY7u0WSW7b1COSbuKJDPWteQCzwDnnlZsVgSkD5tEbOi/FBW6wZ8V1jz7/Fs3gDg8B5
         /vh3nR2be4Ako8vmSujCFOuSxmPhwoTQislKHg6feit99DuzuRbnXJDVkLV+CW2kdmC6
         ZB36CbMi9PPLM8bMhIJyEvY5FjSED2j4YMhExY/KNVhPvjSSOpSNjTS+CWVNfonMUwq9
         B4IA==
X-Gm-Message-State: AOJu0YxhhvIhvy9cTNrS3Bs+hbFPeFIelzNRqFv663fwfXs0weULWwG1
	nzxscSIBKJrQaN0wXBQTt6UorHDLgZIwyCv0oCoOOCwBpFqtWAAT+SRkusmUxqfb4wDUshqqD+C
	Z+jtypaX88wR35iAmWATm6n3rmQU85YhmZ0r1pKuo
X-Gm-Gg: ASbGnctTDSu/bhr29x13g/eDhM5U7dCkda3XCFviM3y5Pho8wCDES+uDJ06GvOJ6SWp
	6st21PV+fqDQDWqaKv8sgkFhBR6CB94DPbFLLcUzhzMkGilfJktE5z/BaSmIYVKSjRwDMQlTmI6
	IdDoe9m3oyDgwXnMPLCblzrekpaevwCZfYRAqSspoOnNTB5eWKdt8nJsCaBlma+WLSey/bXm1YF
	VGR7O/pPWG8h34sbQ==
X-Google-Smtp-Source: AGHT+IHPLX1O1z9hb5IbylFkOtObjl5ZM8aIRHUQnISDSYUxBZOlU1sUWV6ndyd5GjLny81eyoNL4iGHqR5truBFkh8=
X-Received: by 2002:a17:903:2c07:b0:257:3283:b856 with SMTP id
 d9443c01a7336-2573283bbaemr135344085ad.6.1757500347525; Wed, 10 Sep 2025
 03:32:27 -0700 (PDT)
MIME-Version: 1.0
References: <20250909083751.1183-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250909083751.1183-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Wed, 10 Sep 2025 11:32:16 +0100
X-Gm-Features: AS18NWDG8pqdLb8eB1n6Ojy3Xp7tUhuv8FKv1cCWOhRshklyezkmeYG_xB0q0UA
Message-ID: <CAC_UY88-DmNk7JN2dTaguT2iNkGOM6AtYLCAZa-VLnKdDSvQXg@mail.gmail.com>
Subject: Re: [XENBUS PATCH] emulated: Detect emulated NVMe controllers
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org, Keshab Upadhya <keshab@outlook.ph>
Content-Type: multipart/alternative; boundary="000000000000e84cd3063e6fefef"

--000000000000e84cd3063e6fefef
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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


On Tue, Sep 9, 2025 at 9:37=E2=80=AFAM Tu Dinh <ngoc-tu.dinh@vates.tech> wr=
ote:

> Xenfilt currently can't distinguish between a real NVMe controller and
> one emulated by QEMU. This will cause EmulatedIsDiskPresent to always
> report as true, causing Xenvbd to skip target creation if a real NVMe
> controller is passed through to the guest.
>
> Stop saving just a single CompatibleID in XENFILT_EMULATED_DEVICE_DATA.
> Instead, add logic to EmulatedSetObjectDeviceData to explicitly detect
> emulated NVMe controllers using their PCI vendor/device IDs.
>
> Reported-by: Keshab Upadhya <keshab@outlook.ph>
> Link: https://github.com/xcp-ng/win-pv-drivers/issues/21
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xenfilt/emulated.c | 21 +++++++++------------
>  1 file changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/src/xenfilt/emulated.c b/src/xenfilt/emulated.c
> index 4205cc5..cbe90b0 100644
> --- a/src/xenfilt/emulated.c
> +++ b/src/xenfilt/emulated.c
> @@ -47,8 +47,8 @@
>  typedef struct _XENFILT_EMULATED_DEVICE_DATA {
>      CHAR                                DeviceID[MAXNAMELEN];
>      CHAR                                InstanceID[MAXNAMELEN];
> -    CHAR                                CompatibleID[MAXNAMELEN];
>      XENBUS_EMULATED_ACTIVATION_STATUS   ForceActivate;
> +    BOOLEAN                             IsEmulatedNvme;
>  } XENFILT_EMULATED_DEVICE_DATA, *PXENFILT_EMULATED_DEVICE_DATA;
>
>  typedef struct _XENFILT_EMULATED_DISK_DATA {
> @@ -100,7 +100,6 @@ EmulatedSetObjectDeviceData(
>      )
>  {
>      ULONG                               Index;
> -    PSTR                                LastMatch;
>      NTSTATUS                            status;
>
>      status =3D STATUS_INVALID_PARAMETER;
> @@ -123,7 +122,6 @@ EmulatedSetObjectDeviceData(
>          goto done;
>
>      Index =3D 0;
> -    LastMatch =3D CompatibleIDs;
>      for (;;) {
>          ULONG   Length;
>
> @@ -131,17 +129,17 @@ EmulatedSetObjectDeviceData(
>          if (Length =3D=3D 0)
>              break;
>
> -        LastMatch =3D &CompatibleIDs[Index];
> +        // 8086:5845 and 1B36:0010 are the IDs of the QEMU NVMe
> controller when
> +        // "use-intel-id" is on and off respectively.
> +        if (_stricmp(&CompatibleIDs[Index], "PCI\\VEN_8086&DEV_5845") =
=3D=3D
> 0 ||
> +            _stricmp(&CompatibleIDs[Index], "PCI\\VEN_1B36&DEV_0010") =
=3D=3D
> 0) {
> +            EmulatedObject->Data.Device.IsEmulatedNvme =3D TRUE;
> +            break;
> +        }
>
>          Index +=3D Length + 1;
>      }
>
> -    status =3D RtlStringCbPrintfA(EmulatedObject->Data.Device.Compatible=
ID,
> -                                MAXNAMELEN,
> -                                "%s",
> -                                LastMatch);
> -    ASSERT(NT_SUCCESS(status));
> -
>  done:
>      return STATUS_SUCCESS;
>
> @@ -418,8 +416,7 @@ EmulatedIsDiskPresent(
>          }
>
>          if (EmulatedObject->Type =3D=3D XENFILT_EMULATED_OBJECT_TYPE_PCI=
 &&
> -            _stricmp("PCI\\CC_0108",
> EmulatedObject->Data.Device.CompatibleID) =3D=3D 0 &&
> -            Index <=3D 3) {
> +            EmulatedObject->Data.Device.IsEmulatedNvme) {
>              Trace("FOUND\n");
>              break;
>          }
> --
> 2.51.0.windows.1
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000e84cd3063e6fefef
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div><div class=3D"gmail_default" style=3D"font-fa=
mily:monospace"><br></div></div><br><div class=3D"gmail_quote gmail_quote_c=
ontainer"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Sep 9, 2025 at 9:37=
=E2=80=AFAM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex">Xenfilt currently can&#39;t dist=
inguish between a real NVMe controller and<br>
one emulated by QEMU. This will cause EmulatedIsDiskPresent to always<br>
report as true, causing Xenvbd to skip target creation if a real NVMe<br>
controller is passed through to the guest.<br>
<br>
Stop saving just a single CompatibleID in XENFILT_EMULATED_DEVICE_DATA.<br>
Instead, add logic to EmulatedSetObjectDeviceData to explicitly detect<br>
emulated NVMe controllers using their PCI vendor/device IDs.<br>
<br>
Reported-by: Keshab Upadhya &lt;<a href=3D"mailto:keshab@outlook.ph" target=
=3D"_blank">keshab@outlook.ph</a>&gt;<br>
Link: <a href=3D"https://github.com/xcp-ng/win-pv-drivers/issues/21" rel=3D=
"noreferrer" target=3D"_blank">https://github.com/xcp-ng/win-pv-drivers/iss=
ues/21</a><br>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xenfilt/emulated.c | 21 +++++++++------------<br>
=C2=A01 file changed, 9 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/src/xenfilt/emulated.c b/src/xenfilt/emulated.c<br>
index 4205cc5..cbe90b0 100644<br>
--- a/src/xenfilt/emulated.c<br>
+++ b/src/xenfilt/emulated.c<br>
@@ -47,8 +47,8 @@<br>
=C2=A0typedef struct _XENFILT_EMULATED_DEVICE_DATA {<br>
=C2=A0 =C2=A0 =C2=A0CHAR=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DeviceID[MAX=
NAMELEN];<br>
=C2=A0 =C2=A0 =C2=A0CHAR=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 InstanceID[M=
AXNAMELEN];<br>
-=C2=A0 =C2=A0 CHAR=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CompatibleID[MAXNAM=
ELEN];<br>
=C2=A0 =C2=A0 =C2=A0XENBUS_EMULATED_ACTIVATION_STATUS=C2=A0 =C2=A0ForceActi=
vate;<br>
+=C2=A0 =C2=A0 BOOLEAN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0IsEmulatedNvme;<br>
=C2=A0} XENFILT_EMULATED_DEVICE_DATA, *PXENFILT_EMULATED_DEVICE_DATA;<br>
<br>
=C2=A0typedef struct _XENFILT_EMULATED_DISK_DATA {<br>
@@ -100,7 +100,6 @@ EmulatedSetObjectDeviceData(<br>
=C2=A0 =C2=A0 =C2=A0)<br>
=C2=A0{<br>
=C2=A0 =C2=A0 =C2=A0ULONG=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Index;<br>
-=C2=A0 =C2=A0 PSTR=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LastMatch;<br>
=C2=A0 =C2=A0 =C2=A0NTSTATUS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 status;<br>
<br>
=C2=A0 =C2=A0 =C2=A0status =3D STATUS_INVALID_PARAMETER;<br>
@@ -123,7 +122,6 @@ EmulatedSetObjectDeviceData(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto done;<br>
<br>
=C2=A0 =C2=A0 =C2=A0Index =3D 0;<br>
-=C2=A0 =C2=A0 LastMatch =3D CompatibleIDs;<br>
=C2=A0 =C2=A0 =C2=A0for (;;) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ULONG=C2=A0 =C2=A0Length;<br>
<br>
@@ -131,17 +129,17 @@ EmulatedSetObjectDeviceData(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (Length =3D=3D 0)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 LastMatch =3D &amp;CompatibleIDs[Index];<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 // 8086:5845 and 1B36:0010 are the IDs of the =
QEMU NVMe controller when<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 // &quot;use-intel-id&quot; is on and off resp=
ectively.<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (_stricmp(&amp;CompatibleIDs[Index], &quot;=
PCI\\VEN_8086&amp;DEV_5845&quot;) =3D=3D 0 ||<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 _stricmp(&amp;CompatibleIDs[Inde=
x], &quot;PCI\\VEN_1B36&amp;DEV_0010&quot;) =3D=3D 0) {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 EmulatedObject-&gt;Data.Device.I=
sEmulatedNvme =3D TRUE;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Index +=3D Length + 1;<br>
=C2=A0 =C2=A0 =C2=A0}<br>
<br>
-=C2=A0 =C2=A0 status =3D RtlStringCbPrintfA(EmulatedObject-&gt;Data.Device=
.CompatibleID,<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 MAXNAMELEN,<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;%s&quot;,<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LastMatch);<br>
-=C2=A0 =C2=A0 ASSERT(NT_SUCCESS(status));<br>
-<br>
=C2=A0done:<br>
=C2=A0 =C2=A0 =C2=A0return STATUS_SUCCESS;<br>
<br>
@@ -418,8 +416,7 @@ EmulatedIsDiskPresent(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (EmulatedObject-&gt;Type =3D=3D XENFIL=
T_EMULATED_OBJECT_TYPE_PCI &amp;&amp;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 _stricmp(&quot;PCI\\CC_0108&quot=
;, EmulatedObject-&gt;Data.Device.CompatibleID) =3D=3D 0 &amp;&amp;<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Index &lt;=3D 3) {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 EmulatedObject-&gt;Data.Device.I=
sEmulatedNvme) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Trace(&quot;FOUND\n&quot;);=
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000e84cd3063e6fefef--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 10 11:23:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118142.1464024 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIux-0004mM-RO; Wed, 10 Sep 2025 11:23:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118142.1464024; Wed, 10 Sep 2025 11:23:15 +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 1uwIux-0004m3-Mf; Wed, 10 Sep 2025 11:23:15 +0000
Received: by outflank-mailman (input) for mailman id 1118142;
 Wed, 10 Sep 2025 11:23:15 +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=Hat/=3V=bounce.vates.tech=bounce-md_30504962.68c15f9e.v1-fcfd4bebacb54256b55f0722595b773b@srs-se1.protection.inumbo.net>)
 id 1uwIux-0004lb-7I
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:15 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 88c40ccc-8e38-11f0-9809-7dc792cee155;
 Wed, 10 Sep 2025 13:23:12 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG63DQfz2K1rps
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:10 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 fcfd4bebacb54256b55f0722595b773b; Wed, 10 Sep 2025 11:23: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: 88c40ccc-8e38-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503390; x=1757773390;
	bh=RjexRaMI1h6qkw9aZ+RL96iC/4/HwQuWnT4RmAHO4mI=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=mkHg5cbppuEzxFvQ3cUBZ17uDuoYSKJLQ7fRxBvyvTGFSo+iLXr+9t9Y/9IDcFmnB
	 6ng+OwdDZGeu1WWhBvPSDgCUP8YVRvV6p2wbnwNkUC/hcr1h6Rc8psIoz7f5Y2tT/5
	 oakzgLZP2QHZIReWEhPKj5ud3OQuOiXefVGVdoFu5uRAYlVpIJNQiyNVcZ6o0xLmVz
	 K7SmLNdhzggcejU2zynJCJPAP+SnUODqp8C3hJc8L+1T/o7RiDsgTF/5NcblwM5Qs5
	 9x5hTo4fSPjpAh5Zkvy7m9t1dlo+PL/e8P5ffRR+cjSb/rTTzqXDYBuz2qLxVxiPgg
	 uUIkGABowQBHw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503390; x=1757763890; i=ngoc-tu.dinh@vates.tech;
	bh=RjexRaMI1h6qkw9aZ+RL96iC/4/HwQuWnT4RmAHO4mI=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=xKta2SnoulfyN1ZRx9wzqW/5wRL5hOzyr5a5EomJ/dQsprlITw5B0BfTOFm1/ou8L
	 EYcVcALjeO1qkD8oszcjNIq3CKLa/FTNrCWDgeTU0qZc/NAdbGGMMrR6UD/2FaFrQS
	 iXWQx/4FiVKfBjCJNDu2Iaol6hAdlm1zcf5qJKYR28Oq7qZkU+J/h9C3e400cDHtzb
	 ioePUDDZM5RTRXXK4Ok5Yj28fCtUYpr596RQVsxg29qsUeCpBHQFo2nkRTbYrqqMMI
	 /6Jofvn1dWFbEHkZChFuyoPYdq8ioUQcCv9wQQ35l0bxSSiSQoGZ29ewefYucreZhI
	 gFEJ/Zi98SkUQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2000/11]=20Use=20SAL=202.0=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: 1757503389702
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-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.fcfd4bebacb54256b55f0722595b773b?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:10 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

WinPV drivers use old annotations (IN/OUT) that are not checked by the compiler.

Convert them to SAL2 for better checking with Code Analysis.

Same as the Xenbus series, this series is split into several parts:

Part 1: Sync converted headers from Xenbus
* Sync interface headers from Xenbus
* Sync Registry implementation with Xenbus
* Sync thread.[ch] from Xenbus
* Sync utility headers from Xenbus

Part 2: Convert existing annotations
* Replace old annotations with SAL2 equivalents
* Switch from CHAR*/WCHAR* to PSTR/PWSTR

Part 3: Suppress new warnings
* Suppress uninitialized *Interface warning in FdoQueryInterface
* Suppress warnings with SYSTEM_POWER_STATE asserts

Part 4: Various fixes discovered via SAL annotations
* Check for IoAttachDeviceToDeviceStack failure in FdoCreate
* monitor: Fix GetExecutable allocation check
* Fix CSQ lock annotations

Tu Dinh (11):
  Sync interface headers from Xenbus
  Sync Registry implementation with Xenbus
  Sync thread.[ch] from Xenbus
  Sync utility headers from Xenbus
  Replace old annotations with SAL2 equivalents
  Switch from CHAR*/WCHAR* to PSTR/PWSTR
  Suppress uninitialized *Interface warning in FdoQueryInterface
  Suppress warnings with SYSTEM_POWER_STATE asserts
  Check for IoAttachDeviceToDeviceStack failure in FdoCreate
  monitor: Fix GetExecutable allocation check
  Fix CSQ lock annotations

 include/cache_interface.h   |  76 +++----
 include/console_interface.h |  30 +--
 include/debug_interface.h   |  30 +--
 include/evtchn_interface.h  |  72 +++---
 include/gnttab_interface.h  |  88 ++++----
 include/store_interface.h   |  84 +++----
 include/suspend_interface.h |  24 +-
 src/monitor/monitor.c       | 138 ++++++------
 src/tty/tty.c               |  46 ++--
 src/xencons/assert.h        |  34 +--
 src/xencons/console.c       |  76 +++----
 src/xencons/console.h       |  10 +-
 src/xencons/console_abi.h   |  20 +-
 src/xencons/dbg_print.h     |  35 +--
 src/xencons/driver.c        |  35 +--
 src/xencons/fdo.c           | 435 ++++++++++++++++++------------------
 src/xencons/fdo.h           |  38 ++--
 src/xencons/frontend.c      | 154 ++++++-------
 src/xencons/frontend.h      |  22 +-
 src/xencons/mutex.h         |   4 +-
 src/xencons/names.h         |  36 +--
 src/xencons/pdo.c           | 280 +++++++++++------------
 src/xencons/pdo.h           |  40 ++--
 src/xencons/registry.c      | 348 ++++++++++++++++++++---------
 src/xencons/registry.h      | 144 ++++++------
 src/xencons/ring.c          | 147 ++++++------
 src/xencons/ring.h          |  30 +--
 src/xencons/stream.c        |  71 +++---
 src/xencons/stream.h        |  10 +-
 src/xencons/thread.c        |  40 ++--
 src/xencons/thread.h        |  18 +-
 src/xencons/util.h          |  90 ++++----
 32 files changed, 1444 insertions(+), 1261 deletions(-)

-- 
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 Sep 10 11:23:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118141.1464019 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIux-0004ly-PS; Wed, 10 Sep 2025 11:23:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118141.1464019; Wed, 10 Sep 2025 11:23:15 +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 1uwIux-0004lr-LE; Wed, 10 Sep 2025 11:23:15 +0000
Received: by outflank-mailman (input) for mailman id 1118141;
 Wed, 10 Sep 2025 11:23:15 +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=8yst=3V=bounce.vates.tech=bounce-md_30504962.68c15f9e.v1-145b34356a4f47c09e149dcc262c2c4e@srs-se1.protection.inumbo.net>)
 id 1uwIuw-0004lc-QA
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:15 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 891156e1-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:12 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG702J0z2K1vgK
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 145b34356a4f47c09e149dcc262c2c4e; Wed, 10 Sep 2025 11:23: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: 891156e1-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503391; x=1757773391;
	bh=x536fSKGqCSUsyhGi9DM0991Arl/uZfAjtaHk7AR//8=;
	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=ZeQSHLMUFS5OoE+lMp0qxWCdTXukd1GUJUBHe3rZufev57iHr+/SihxtjKoQyXl+x
	 hU2AfZ1McpfkYvVFDSnK10n4Qoay2JqJ09Wn2lScKu4VXCyXKc2gmx9rN6N2BJQBMM
	 uRvqA5VlwuF6pbwg15R+OSRW+J0H54O3ZnJ7ZEwNy96q5X2G7KclNCy9YFHOwZgSAX
	 TzRxeUj6xU638thkJWvqk5/w4YUbvlwRNInGKUY+WR4vEuo2UoC5BgeCWAEq5B8AGr
	 SYl5BHSYA5aPD29NJYVoWwh/Rt7/N1i8L74yoi9fQoqdNuqp7AIb26T9/zARzpE/2C
	 UnCeN6D1Kmddw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503391; x=1757763891; i=ngoc-tu.dinh@vates.tech;
	bh=x536fSKGqCSUsyhGi9DM0991Arl/uZfAjtaHk7AR//8=;
	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=FKld0hn1G0gnoDIq1rTf6rnVVp2beCYpbFfTfA9fUv/xTFZyr43rrxt/brAHPbFPf
	 9c4/41hxWSNyjffFHLPKTBIT792DaYEzYWC6+KibLfzkYG4MDpqyrsziP+zFd7/wTc
	 tuXnBBH5MnSdvcudcF92G9sunJ3Sd0YPEMF16bsOrniKEK51C7+Ql9Oh6Dr0I80XZh
	 PJuSnkOM7BTgrqbdFe9e7LTJjCJshpJC543Z+Chkzdo4H0hZv/v195dvjtKwgan52j
	 wyZVGZnYmD7TULYZJ8OGbNMH/zwbeQneEmx65MPYd+cTwjrkaOHseb7pC1EHjLMjQC
	 ZPJAcUCWWRJMA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2002/11]=20Sync=20Registry=20implementation=20with=20Xenbus?=
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: 1757503390344
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-3-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.145b34356a4f47c09e149dcc262c2c4e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:10 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Use IoOpenDriverRegistryKey to open registry keys.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/driver.c   |   2 +-
 src/xencons/registry.c | 348 +++++++++++++++++++++++++++++------------
 src/xencons/registry.h | 144 +++++++++--------
 3 files changed, 328 insertions(+), 166 deletions(-)

diff --git a/src/xencons/driver.c b/src/xencons/driver.c
index 76a04f9..01836ee 100644
--- a/src/xencons/driver.c
+++ b/src/xencons/driver.c
@@ -271,7 +271,7 @@ DriverEntry(
          MONTH,
          YEAR);
 
-    status = RegistryInitialize(RegistryPath);
+    status = RegistryInitialize(DriverObject, RegistryPath);
     if (!NT_SUCCESS(status))
         goto fail1;
 
diff --git a/src/xencons/registry.c b/src/xencons/registry.c
index 3e0f3b0..1f7a73c 100644
--- a/src/xencons/registry.c
+++ b/src/xencons/registry.c
@@ -38,11 +38,16 @@
 
 #define REGISTRY_TAG 'GERX'
 
+static PDRIVER_OBJECT   RegistryDriverObject;
 static UNICODE_STRING   RegistryPath;
 
+typedef NTSTATUS(*IOOPENDRIVERREGISTRYKEY)(PDRIVER_OBJECT, DRIVER_REGKEY_TYPE, ACCESS_MASK, ULONG, PHANDLE);
+
+static IOOPENDRIVERREGISTRYKEY __IoOpenDriverRegistryKey;
+
 static FORCEINLINE PVOID
 __RegistryAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, REGISTRY_TAG);
@@ -50,17 +55,21 @@ __RegistryAllocate(
 
 static FORCEINLINE VOID
 __RegistryFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, REGISTRY_TAG);
 }
 
 NTSTATUS
+#pragma prefast(suppress:28101) // unannotated DriverEntry function
 RegistryInitialize(
-    IN PUNICODE_STRING  Path
+    _In_opt_ PDRIVER_OBJECT DriverObject,
+    _In_ PUNICODE_STRING    Path
     )
 {
+    UNICODE_STRING      Unicode;
+    PVOID               Func;
     NTSTATUS            status;
 
     ASSERT3P(RegistryPath.Buffer, ==, NULL);
@@ -69,6 +78,16 @@ RegistryInitialize(
     if (!NT_SUCCESS(status))
         goto fail1;
 
+    ASSERT3P(RegistryDriverObject, ==, NULL);
+    RegistryDriverObject = DriverObject;
+
+    ASSERT3P(__IoOpenDriverRegistryKey, ==, NULL);
+    RtlInitUnicodeString(&Unicode, L"IoOpenDriverRegistryKey");
+
+    Func = MmGetSystemRoutineAddress(&Unicode);
+    if (Func != NULL)
+        __IoOpenDriverRegistryKey = (IOOPENDRIVERREGISTRYKEY)Func;
+
     return STATUS_SUCCESS;
 
 fail1:
@@ -82,17 +101,69 @@ RegistryTeardown(
     VOID
     )
 {
+    __IoOpenDriverRegistryKey = NULL;
+
+    RegistryDriverObject = NULL;
+
     RtlFreeUnicodeString(&RegistryPath);
     RegistryPath.Buffer = NULL;
     RegistryPath.MaximumLength = RegistryPath.Length = 0;
 }
 
+NTSTATUS
+RegistryOpenParametersKey(
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
+    )
+{
+    HANDLE              ServiceKey;
+    NTSTATUS            status;
+
+    if (__IoOpenDriverRegistryKey != NULL) {
+        status = __IoOpenDriverRegistryKey(RegistryDriverObject,
+                                           DriverRegKeyParameters,
+                                           DesiredAccess,
+                                           0,
+                                           Key);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        goto done;
+    }
+
+    status = RegistryOpenKey(NULL, &RegistryPath, DesiredAccess, &ServiceKey);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    status = RegistryOpenSubKey(ServiceKey, "Parameters", DesiredAccess, Key);
+    if (!NT_SUCCESS(status))
+        goto fail3;
+
+    RegistryCloseKey(ServiceKey);
+
+done:
+    return STATUS_SUCCESS;
+
+fail3:
+    Error("fail3\n");
+
+    RegistryCloseKey(ServiceKey);
+
+fail2:
+    Error("fail2\n");
+
+fail1:
+    Error("fail1 %08x\n", status);
+
+    return status;
+}
+
 NTSTATUS
 RegistryOpenKey(
-    IN  HANDLE          Parent,
-    IN  PUNICODE_STRING Path,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_opt_ HANDLE         Parent,
+    _In_ PUNICODE_STRING    Path,
+    _In_ ACCESS_MASK        DesiredAccess,
+    _Out_ PHANDLE           Key
     )
 {
     OBJECT_ATTRIBUTES   Attributes;
@@ -118,15 +189,15 @@ fail1:
 
 static NTSTATUS
 RegistryOpenRoot(
-    IN  PWCHAR          Path,
-    OUT PHANDLE         Parent,
-    OUT PWCHAR          *ChildPath
+    _In_ PWSTR              Path,
+    _Out_ PHANDLE           Parent,
+    _Outptr_result_z_ PWSTR *ChildPath
     )
 {
-    const WCHAR         Prefix[] = L"\\Registry\\Machine\\";
-    ULONG               Length;
-    UNICODE_STRING      Unicode;
-    NTSTATUS            status;
+    PCWSTR                  Prefix = L"\\Registry\\Machine\\";
+    ULONG                   Length;
+    UNICODE_STRING          Unicode;
+    NTSTATUS                status;
 
     Length = (ULONG)wcslen(Prefix);
 
@@ -151,17 +222,17 @@ fail1:
 
 NTSTATUS
 RegistryCreateKey(
-    IN  HANDLE          Parent,
-    IN  PUNICODE_STRING Path,
-    IN  ULONG           Options,
-    OUT PHANDLE         Key
+    _In_opt_ HANDLE         Parent,
+    _In_ PUNICODE_STRING    Path,
+    _In_ ULONG              Options,
+    _Out_ PHANDLE           Key
     )
 {
-    PWCHAR              Buffer;
+    PWSTR               Buffer;
     HANDLE              Root;
-    PWCHAR              ChildPath;
-    PWCHAR              ChildName;
-    PWCHAR              Context;
+    PWSTR               ChildPath;
+    PWSTR               ChildName;
+    PWSTR               Context;
     HANDLE              Child;
     NTSTATUS            status;
 
@@ -251,8 +322,8 @@ fail1:
 
 NTSTATUS
 RegistryOpenServiceKey(
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
     )
 {
     return RegistryOpenKey(NULL, &RegistryPath, DesiredAccess, Key);
@@ -260,7 +331,7 @@ RegistryOpenServiceKey(
 
 NTSTATUS
 RegistryCreateServiceKey(
-    OUT PHANDLE         Key
+    _Out_ PHANDLE       Key
     )
 {
     return RegistryCreateKey(NULL, &RegistryPath, REG_OPTION_NON_VOLATILE, Key);
@@ -268,9 +339,9 @@ RegistryCreateServiceKey(
 
 NTSTATUS
 RegistryOpenSoftwareKey(
-    IN  PDEVICE_OBJECT  DeviceObject,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
     )
 {
     NTSTATUS            status;
@@ -290,15 +361,15 @@ fail1:
 
 NTSTATUS
 RegistryOpenHardwareKey(
-    IN  PDEVICE_OBJECT      DeviceObject,
-    IN  ACCESS_MASK         DesiredAccess,
-    OUT PHANDLE             Key
+    _In_ PDEVICE_OBJECT     DeviceObject,
+    _In_ ACCESS_MASK        DesiredAccess,
+    _Out_ PHANDLE           Key
     )
 {
     HANDLE                  SubKey;
     ULONG                   Length;
     PKEY_NAME_INFORMATION   Info;
-    PWCHAR                  Cursor;
+    PWSTR                   Cursor;
     UNICODE_STRING          Unicode;
     NTSTATUS                status;
 
@@ -315,11 +386,11 @@ RegistryOpenHardwareKey(
                         NULL,
                         0,
                         &Length);
-    if (status != STATUS_BUFFER_OVERFLOW &&
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
-#pragma prefast(suppress:6102)
     Info = __RegistryAllocate(Length + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -367,10 +438,10 @@ fail1:
 
 NTSTATUS
 RegistryOpenSubKey(
-    IN  PHANDLE         Key,
-    IN  PCHAR           Name,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         SubKey
+    _In_opt_ PHANDLE    Key,
+    _In_ PSTR           Name,
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       SubKey
     )
 {
     ANSI_STRING         Ansi;
@@ -400,10 +471,10 @@ fail1:
 
 NTSTATUS
 RegistryCreateSubKey(
-    IN  PHANDLE         Key,
-    IN  PCHAR           Name,
-    IN  ULONG           Options,
-    OUT PHANDLE         SubKey
+    _In_opt_ HANDLE     Key,
+    _In_ PSTR           Name,
+    _In_ ULONG          Options,
+    _Out_ PHANDLE       SubKey
     )
 {
     ANSI_STRING         Ansi;
@@ -433,8 +504,8 @@ fail1:
 
 NTSTATUS
 RegistryDeleteSubKey(
-    IN  PHANDLE         Key,
-    IN  PCHAR           Name
+    _In_ PHANDLE        Key,
+    _In_ PSTR           Name
     )
 {
     ANSI_STRING         Ansi;
@@ -474,9 +545,9 @@ fail1:
 
 NTSTATUS
 RegistryEnumerateSubKeys(
-    IN  HANDLE              Key,
-    IN  NTSTATUS            (*Callback)(PVOID, HANDLE, PANSI_STRING),
-    IN  PVOID               Context
+    _In_ HANDLE             Key,
+    _In_ NTSTATUS           (*Callback)(PVOID, HANDLE, PANSI_STRING),
+    _In_ PVOID              Context
     )
 {
     ULONG                   Size;
@@ -494,7 +565,6 @@ RegistryEnumerateSubKeys(
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
-#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -578,9 +648,9 @@ fail1:
 
 NTSTATUS
 RegistryEnumerateValues(
-    IN  HANDLE                      Key,
-    IN  NTSTATUS                    (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG),
-    IN  PVOID                       Context
+    _In_ HANDLE                     Key,
+    _In_ NTSTATUS                   (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG),
+    _In_ PVOID                      Context
     )
 {
     ULONG                           Size;
@@ -598,7 +668,6 @@ RegistryEnumerateValues(
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
-#pragma prefast(suppress:6102)
     Full = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -642,8 +711,15 @@ RegistryEnumerateValues(
         Ansi.MaximumLength = (USHORT)((Basic->NameLength / sizeof (WCHAR)) + sizeof (CHAR));
         Ansi.Buffer = __RegistryAllocate(Ansi.MaximumLength);
 
+        status = STATUS_NO_MEMORY;
+        if (Ansi.Buffer == NULL)
+            goto fail6;
+
         status = RtlUnicodeStringToAnsiString(&Ansi, &Unicode, FALSE);
-        ASSERT(NT_SUCCESS(status));
+        if (!NT_SUCCESS(status)) {
+            __RegistryFree(Ansi.Buffer);
+            goto fail7;
+        }
 
         Ansi.Length = (USHORT)(strlen(Ansi.Buffer) * sizeof (CHAR));
 
@@ -652,7 +728,7 @@ RegistryEnumerateValues(
         __RegistryFree(Ansi.Buffer);
 
         if (!NT_SUCCESS(status))
-            goto fail6;
+            goto fail8;
     }
 
     __RegistryFree(Basic);
@@ -661,6 +737,8 @@ RegistryEnumerateValues(
 
     return STATUS_SUCCESS;
 
+fail8:
+fail7:
 fail6:
 fail5:
     __RegistryFree(Basic);
@@ -676,8 +754,8 @@ fail1:
 
 NTSTATUS
 RegistryDeleteValue(
-    IN  PHANDLE         Key,
-    IN  PCHAR           Name
+    _In_ PHANDLE        Key,
+    _In_ PSTR           Name
     )
 {
     ANSI_STRING         Ansi;
@@ -707,9 +785,9 @@ fail1:
 
 NTSTATUS
 RegistryQueryDwordValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    OUT PULONG                      Value
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _Out_ PULONG                    Value
     )
 {
     ANSI_STRING                     Ansi;
@@ -730,11 +808,11 @@ RegistryQueryDwordValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_OVERFLOW &&
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
-#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -775,11 +853,81 @@ fail1:
     return status;
 }
 
+NTSTATUS
+RegistryQueryQwordValue(
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _Out_ PULONGLONG                Value
+    )
+{
+    ANSI_STRING                     Ansi;
+    UNICODE_STRING                  Unicode;
+    PKEY_VALUE_PARTIAL_INFORMATION  Partial;
+    ULONG                           Size;
+    NTSTATUS                        status;
+
+    RtlInitAnsiString(&Ansi, Name);
+
+    status = RtlAnsiStringToUnicodeString(&Unicode, &Ansi, TRUE);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = ZwQueryValueKey(Key,
+                             &Unicode,
+                             KeyValuePartialInformation,
+                             NULL,
+                             0,
+                             &Size);
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
+        status != STATUS_BUFFER_TOO_SMALL)
+        goto fail2;
+
+    Partial = __RegistryAllocate(Size);
+
+    status = STATUS_NO_MEMORY;
+    if (Partial == NULL)
+        goto fail3;
+
+    status = ZwQueryValueKey(Key,
+                             &Unicode,
+                             KeyValuePartialInformation,
+                             Partial,
+                             Size,
+                             &Size);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = STATUS_INVALID_PARAMETER;
+    if (Partial->Type != REG_QWORD ||
+        Partial->DataLength != sizeof (ULONGLONG))
+        goto fail5;
+
+    *Value = *(PULONGLONG)Partial->Data;
+
+    __RegistryFree(Partial);
+
+    RtlFreeUnicodeString(&Unicode);
+
+    return STATUS_SUCCESS;
+
+fail5:
+fail4:
+    __RegistryFree(Partial);
+
+fail3:
+fail2:
+    RtlFreeUnicodeString(&Unicode);
+
+fail1:
+    return status;
+}
+
 NTSTATUS
 RegistryUpdateDwordValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    IN  ULONG                       Value
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _In_ ULONG                      Value
     )
 {
     ANSI_STRING                     Ansi;
@@ -833,7 +981,7 @@ fail1:
 
 static PANSI_STRING
 RegistrySzToAnsi(
-    IN  PWCHAR      Buffer
+    _In_ PWSTR      Buffer
     )
 {
     PANSI_STRING    Ansi;
@@ -872,7 +1020,7 @@ fail1:
 
 static PANSI_STRING
 RegistryMultiSzToAnsi(
-    IN  PWCHAR      Buffer
+    _In_ PWSTR      Buffer
     )
 {
     PANSI_STRING    Ansi;
@@ -934,10 +1082,10 @@ fail1:
 
 NTSTATUS
 RegistryQuerySzValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    OUT PULONG                      Type OPTIONAL,
-    OUT PANSI_STRING                *Array
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _Out_opt_ PULONG                Type,
+    _Outptr_ PANSI_STRING           *Array
     )
 {
     ANSI_STRING                     Ansi;
@@ -958,11 +1106,11 @@ RegistryQuerySzValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_OVERFLOW &&
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
-#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -981,12 +1129,12 @@ RegistryQuerySzValue(
     switch (Value->Type) {
     case REG_SZ:
         status = STATUS_NO_MEMORY;
-        *Array = RegistrySzToAnsi((PWCHAR)Value->Data);
+        *Array = RegistrySzToAnsi((PWSTR)Value->Data);
         break;
 
     case REG_MULTI_SZ:
         status = STATUS_NO_MEMORY;
-        *Array = RegistryMultiSzToAnsi((PWCHAR)Value->Data);
+        *Array = RegistryMultiSzToAnsi((PWSTR)Value->Data);
         break;
 
     default:
@@ -1021,10 +1169,10 @@ fail1:
 
 NTSTATUS
 RegistryQueryBinaryValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    OUT PVOID                       *Buffer,
-    OUT PULONG                      Length
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _Outptr_ PVOID                  *Buffer,
+    _Out_ PULONG                    Length
     )
 {
     ANSI_STRING                     Ansi;
@@ -1045,11 +1193,11 @@ RegistryQueryBinaryValue(
                              NULL,
                              0,
                              &Size);
-    if (status != STATUS_BUFFER_OVERFLOW &&
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail2;
 
-#pragma prefast(suppress:6102)
     Partial = __RegistryAllocate(Size);
 
     status = STATUS_NO_MEMORY;
@@ -1106,10 +1254,10 @@ fail1:
 
 NTSTATUS
 RegistryUpdateBinaryValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    IN  PVOID                       Buffer,
-    IN  ULONG                       Length
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _In_ PVOID                      Buffer,
+    _In_ ULONG                      Length
     )
 {
     ANSI_STRING                     Ansi;
@@ -1163,8 +1311,8 @@ fail1:
 
 NTSTATUS
 RegistryQueryKeyName(
-    IN  HANDLE              Key,
-    OUT PANSI_STRING        *Array
+    _In_ HANDLE             Key,
+    _Outptr_ PANSI_STRING   *Array
     )
 {
     PKEY_NAME_INFORMATION   Value;
@@ -1176,12 +1324,12 @@ RegistryQueryKeyName(
                         NULL,
                         0,
                         &Size);
-    if (status != STATUS_BUFFER_OVERFLOW &&
+    if (!NT_SUCCESS(status) &&
+        status != STATUS_BUFFER_OVERFLOW &&
         status != STATUS_BUFFER_TOO_SMALL)
         goto fail1;
 
     // Name information is not intrinsically NULL terminated
-#pragma prefast(suppress:6102)
     Value = __RegistryAllocate(Size + sizeof (WCHAR));
 
     status = STATUS_NO_MEMORY;
@@ -1197,7 +1345,7 @@ RegistryQueryKeyName(
         goto fail3;
 
     Value->Name[Value->NameLength / sizeof (WCHAR)] = L'\0';
-    *Array = RegistrySzToAnsi((PWCHAR)Value->Name);
+    *Array = RegistrySzToAnsi((PWSTR)Value->Name);
 
     status = STATUS_NO_MEMORY;
     if (*Array == NULL)
@@ -1218,16 +1366,16 @@ fail1:
 
 NTSTATUS
 RegistryQuerySystemStartOption(
-    IN  PCHAR                       Prefix,
-    OUT PANSI_STRING                *Value
+    _In_ PSTR                       Prefix,
+    _Outptr_ PANSI_STRING           *Value
     )
 {
     UNICODE_STRING                  Unicode;
     HANDLE                          Key;
     PANSI_STRING                    Ansi;
     ULONG                           Length;
-    PCHAR                           Option;
-    PCHAR                           Context;
+    PSTR                            Option;
+    PSTR                            Context;
     NTSTATUS                        status;
 
     RtlInitUnicodeString(&Unicode, L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control");
@@ -1388,10 +1536,10 @@ fail1:
 
 NTSTATUS
 RegistryUpdateSzValue(
-    IN  HANDLE                      Key,
-    IN  PCHAR                       Name,
-    IN  ULONG                       Type,
-    IN  PANSI_STRING                Array
+    _In_ HANDLE                     Key,
+    _In_ PSTR                       Name,
+    _In_ ULONG                      Type,
+    _In_ PANSI_STRING               Array
     )
 {
     ANSI_STRING                     Ansi;
@@ -1452,7 +1600,7 @@ fail1:
 
 VOID
 RegistryFreeSzValue(
-    IN  PANSI_STRING    Array
+    _In_ PANSI_STRING   Array
     )
 {
     ULONG               Index;
@@ -1468,7 +1616,7 @@ RegistryFreeSzValue(
 
 VOID
 RegistryFreeBinaryValue(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __RegistryFree(Buffer);
@@ -1476,7 +1624,7 @@ RegistryFreeBinaryValue(
 
 VOID
 RegistryCloseKey(
-    IN  HANDLE  Key
+    _In_ HANDLE Key
     )
 {
     ZwClose(Key);
diff --git a/src/xencons/registry.h b/src/xencons/registry.h
index 05bec85..170445b 100644
--- a/src/xencons/registry.h
+++ b/src/xencons/registry.h
@@ -37,7 +37,8 @@
 
 extern NTSTATUS
 RegistryInitialize(
-    IN PUNICODE_STRING  Path
+    _In_opt_ PDRIVER_OBJECT DrvObj,
+    _In_ PUNICODE_STRING    Path
     );
 
 extern VOID
@@ -45,160 +46,173 @@ RegistryTeardown(
     VOID
     );
 
+extern NTSTATUS
+RegistryOpenParametersKey(
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
+    );
+
 extern NTSTATUS
 RegistryOpenKey(
-    IN  HANDLE          Parent,
-    IN  PUNICODE_STRING Path,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_opt_ HANDLE         Parent,
+    _In_ PUNICODE_STRING    Path,
+    _In_ ACCESS_MASK        DesiredAccess,
+    _Out_ PHANDLE           Key
     );
 
 extern NTSTATUS
 RegistryCreateKey(
-    IN  HANDLE          Parent,
-    IN  PUNICODE_STRING Path,
-    IN  ULONG           Options,
-    OUT PHANDLE         Key
+    _In_opt_ HANDLE         Parent,
+    _In_ PUNICODE_STRING    Path,
+    _In_ ULONG              Options,
+    _Out_ PHANDLE           Key
     );
 
 extern NTSTATUS
 RegistryOpenServiceKey(
-    IN  ACCESS_MASK DesiredAccess,
-    OUT PHANDLE     Key
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
     );
 
 extern NTSTATUS
 RegistryCreateServiceKey(
-    OUT PHANDLE     Key
+    _Out_ PHANDLE   Key
     );
 
 extern NTSTATUS
 RegistryOpenSoftwareKey(
-    IN  PDEVICE_OBJECT  DeviceObject,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
     );
 
 extern NTSTATUS
 RegistryOpenHardwareKey(
-    IN  PDEVICE_OBJECT  DeviceObject,
-    IN  ACCESS_MASK     DesiredAccess,
-    OUT PHANDLE         Key
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       Key
     );
 
 extern NTSTATUS
 RegistryOpenSubKey(
-    IN  HANDLE      Key,
-    IN  PCHAR       Name,
-    IN  ACCESS_MASK DesiredAccess,
-    OUT PHANDLE     SubKey
+    _In_opt_ HANDLE     Key,
+    _In_ PSTR           Name,
+    _In_ ACCESS_MASK    DesiredAccess,
+    _Out_ PHANDLE       SubKey
     );
 
 extern NTSTATUS
 RegistryCreateSubKey(
-    IN  HANDLE      Key,
-    IN  PCHAR       Name,
-    IN  ULONG       Options,
-    OUT PHANDLE     SubKey
+    _In_opt_ HANDLE Key,
+    _In_ PSTR       Name,
+    _In_ ULONG      Options,
+    _Out_ PHANDLE   SubKey
     );
 
 extern NTSTATUS
 RegistryDeleteSubKey(
-    IN  HANDLE      Key,
-    IN  PCHAR       Name
+    _In_ HANDLE     Key,
+    _In_ PSTR       Name
     );
 
 extern NTSTATUS
 RegistryEnumerateSubKeys(
-    IN  HANDLE      Key,
-    IN  NTSTATUS    (*Callback)(PVOID, HANDLE, PANSI_STRING),
-    IN  PVOID       Context
+    _In_ HANDLE     Key,
+    _In_ NTSTATUS   (*Callback)(PVOID, HANDLE, PANSI_STRING),
+    _In_ PVOID      Context
     );
 
 extern NTSTATUS
 RegistryEnumerateValues(
-    IN  HANDLE      Key,
-    IN  NTSTATUS    (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG),
-    IN  PVOID       Context
+    _In_ HANDLE     Key,
+    _In_ NTSTATUS   (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG),
+    _In_ PVOID      Context
     );
 
 extern NTSTATUS
 RegistryDeleteValue(
-    IN  HANDLE      Key,
-    IN  PCHAR       Name
+    _In_ HANDLE     Key,
+    _In_ PSTR       Name
     );
 
 extern NTSTATUS
 RegistryQueryDwordValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    OUT PULONG          Value
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _Out_ PULONG        Value
+    );
+
+extern NTSTATUS
+RegistryQueryQwordValue(
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _Out_ PULONGLONG    Value
     );
 
 extern NTSTATUS
 RegistryUpdateDwordValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    IN  ULONG           Value
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _In_ ULONG          Value
     );
 
 extern NTSTATUS
 RegistryQuerySzValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    OUT PULONG          Type OPTIONAL,
-    OUT PANSI_STRING    *Array
+    _In_ HANDLE             Key,
+    _In_ PSTR               Name,
+    _Out_opt_ PULONG        Type,
+    _Outptr_ PANSI_STRING   *Array
     );
 
 extern NTSTATUS
 RegistryQueryBinaryValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    OUT PVOID           *Buffer,
-    OUT PULONG          Length
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _Outptr_ PVOID      *Buffer,
+    _Out_ PULONG        Length
     );
 
 extern NTSTATUS
 RegistryUpdateBinaryValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    IN  PVOID           Buffer,
-    IN  ULONG           Length
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _In_ PVOID          Buffer,
+    _In_ ULONG          Length
     );
 
 extern NTSTATUS
 RegistryQueryKeyName(
-    IN  HANDLE              Key,
-    OUT PANSI_STRING        *Array
+    _In_ HANDLE             Key,
+    _Outptr_ PANSI_STRING   *Array
     );
 
 extern NTSTATUS
 RegistryQuerySystemStartOption(
-    IN  PCHAR           Name,
-    OUT PANSI_STRING    *Option
+    _In_ PSTR               Name,
+    _Outptr_ PANSI_STRING   *Option
     );
 
 extern VOID
 RegistryFreeSzValue(
-    IN  PANSI_STRING    Array
+    _In_ PANSI_STRING   Array
     );
 
 extern VOID
 RegistryFreeBinaryValue(
-    IN  PVOID           Buffer
+    _In_ PVOID          Buffer
     );
 
 extern NTSTATUS
 RegistryUpdateSzValue(
-    IN  HANDLE          Key,
-    IN  PCHAR           Name,
-    IN  ULONG           Type,
-    IN  PANSI_STRING    Array
+    _In_ HANDLE         Key,
+    _In_ PSTR           Name,
+    _In_ ULONG          Type,
+    _In_ PANSI_STRING   Array
     );
 
 extern VOID
 RegistryCloseKey(
-    IN  HANDLE  Key
+    _In_ HANDLE Key
     );
 
 #endif  // _XENCONS_REGISTRY_H
-- 
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 Sep 10 11:23:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118144.1464030 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIuy-0004op-UZ; Wed, 10 Sep 2025 11:23:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118144.1464030; Wed, 10 Sep 2025 11:23:16 +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 1uwIuy-0004oZ-Q0; Wed, 10 Sep 2025 11:23:16 +0000
Received: by outflank-mailman (input) for mailman id 1118144;
 Wed, 10 Sep 2025 11:23:16 +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=FPYC=3V=bounce.vates.tech=bounce-md_30504962.68c15f9f.v1-803beb5c3e32446498d2906d9f8403cc@srs-se1.protection.inumbo.net>)
 id 1uwIuy-0004lc-0l
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:16 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8ab2361f-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:15 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG730zcz2K1rnW
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 803beb5c3e32446498d2906d9f8403cc; Wed, 10 Sep 2025 11:23: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: 8ab2361f-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503391; x=1757773391;
	bh=WbhP99Fx2bTlsX/sV1zLCCgE3skhfZzgxt0zSZbXBY4=;
	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=ZTA7hb+CWx5TjOxby1eaF4ptgkHS11ESYkS7a/BM/ETcUv6hwRc5pzSnjks7k7wbL
	 5jLTcqyiRMrfrpo6DvtC27Sy0BSzPMq9faxNJpnjwmqB4ciD5OZ1YSMmvdR7iif5Ie
	 yZ1H/cMQml//30Q925mmJawy4G2cVm6yiEtMM8AOJtgSecYJ414mvTRuQzL+9utxGF
	 xA57oX/WfceB5k8fMii2861XElNFzKNwK2TdE6RnSe7lGvZAodVl6ZiE5DhVW2TdxR
	 rSQGuSdVnW+aWrSLiQm5Ugtjezgs2UnSq/e6+xgTzyCJgH8oz3qLYfI2qu/MRzDTkF
	 3mox3gK1QK4fg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503391; x=1757763891; i=ngoc-tu.dinh@vates.tech;
	bh=WbhP99Fx2bTlsX/sV1zLCCgE3skhfZzgxt0zSZbXBY4=;
	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=xFuibbwqU8LgJOmoC1e/eba4AMK00Kgl4c+Ezc6ZqLlkgty5QOOTyYGa/nf06YLvE
	 iTGJR6/4dzp8/aH3mep4zU8EmOmCTAgARDXao4W7CY8kWl9yYRhFxSlXnzpz/6XVsV
	 N7jNxvZDLvNu90HwlHxY9g3Ymhl6tRGonFdimc/VanejaPrRpqHSZ8UHeRwh/ygmU3
	 WAJAE0rTiD3SRYYGtgmAas6AWbw+e0e3H+M/HeMJBkq3cxfgMTzKNLnM4FWU40wS40
	 LJINbPjvRQcxLRFXqb1HU+pGnhx5aId2MRdZhMD0hnkyTDQGEGomIJElTSLG7LFLrU
	 JDbp7rAsi0mgA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2004/11]=20Sync=20utility=20headers=20from=20Xenbus?=
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: 1757503390752
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-5-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.803beb5c3e32446498d2906d9f8403cc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:11 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/assert.h    | 34 ++++++++--------
 src/xencons/dbg_print.h | 35 +++++-----------
 src/xencons/util.h      | 90 ++++++++++++++++++++++++-----------------
 3 files changed, 80 insertions(+), 79 deletions(-)

diff --git a/src/xencons/assert.h b/src/xencons/assert.h
index e5345cf..9db2d0c 100644
--- a/src/xencons/assert.h
+++ b/src/xencons/assert.h
@@ -39,11 +39,11 @@
 
 static FORCEINLINE VOID
 __Bug(
-    IN  ULONG       Code,
-    IN  ULONG_PTR   Parameter1,
-    IN  ULONG_PTR   Parameter2,
-    IN  ULONG_PTR   Parameter3,
-    IN  ULONG_PTR   Parameter4
+    _In_ ULONG      Code,
+    _In_ ULONG_PTR  Parameter1,
+    _In_ ULONG_PTR  Parameter2,
+    _In_ ULONG_PTR  Parameter3,
+    _In_ ULONG_PTR  Parameter4
     )
 {
 #pragma prefast(suppress:28159)
@@ -58,8 +58,8 @@ __Bug(
 
 #define BUG(_TEXT)                                              \
         do {                                                    \
-            const CHAR  *_Text = (_TEXT);                       \
-            const CHAR  *_File = __FILE__;                      \
+            PCSTR       _Text = (_TEXT);                       \
+            PCSTR       _File = __FILE__;                      \
             ULONG       _Line = __LINE__;                       \
                                                                 \
             Error("BUG: " _TEXT "\n");                          \
@@ -89,7 +89,7 @@ __Bug(
 #define ASSERT(_EXP)                    \
         do {                            \
             __ASSERT(_EXP);             \
-            __analysis_assume(_EXP);    \
+            _Analysis_assume_(_EXP);    \
         } while (FALSE)
 
 #define ASSERT3U(_X, _OP, _Y)                       \
@@ -132,7 +132,7 @@ __Bug(
 
 #define ASSERT(_EXP)                    \
         do {                            \
-            __analysis_assume(_EXP);    \
+            _Analysis_assume_(_EXP);    \
         } while (FALSE)
 
 #define ASSERT3U(_X, _OP, _Y)           \
@@ -154,10 +154,10 @@ __Bug(
 
 static __inline BOOLEAN
 _IsZeroMemory(
-    IN  const PCHAR Caller,
-    IN  const PCHAR Name,
-    IN  PVOID       Buffer,
-    IN  ULONG       Length
+    _In_ PCSTR          Caller,
+    _In_ PCSTR          Name,
+    _In_ PVOID          Buffer,
+    _In_ ULONG          Length
     )
 {
     ULONG           Offset;
@@ -178,10 +178,10 @@ _IsZeroMemory(
 
 static __inline BOOLEAN
 _IsZeroMemory(
-    IN  const PCHAR Caller,
-    IN  const PCHAR Name,
-    IN  PVOID       Buffer,
-    IN  ULONG       Length
+    _In_ PCSTR          Caller,
+    _In_ PCSTR          Name,
+    _In_ PVOID          Buffer,
+    _In_ ULONG          Length
     )
 {
     UNREFERENCED_PARAMETER(Caller);
diff --git a/src/xencons/dbg_print.h b/src/xencons/dbg_print.h
index 11063fe..132c051 100644
--- a/src/xencons/dbg_print.h
+++ b/src/xencons/dbg_print.h
@@ -44,8 +44,8 @@
 
 static __inline VOID
 __Error(
-    IN  const CHAR  *Prefix,
-    IN  const CHAR  *Format,
+    _In_ PCSTR      Prefix,
+    _In_ PCSTR      Format,
     ...
     )
 {
@@ -67,8 +67,8 @@ __Error(
 
 static __inline VOID
 __Warning(
-    IN  const CHAR  *Prefix,
-    IN  const CHAR  *Format,
+    _In_ PCSTR      Prefix,
+    _In_ PCSTR      Format,
     ...
     )
 {
@@ -89,11 +89,10 @@ __Warning(
         __Warning(__MODULE__ "|" __FUNCTION__ ": ", __VA_ARGS__)
 
 #if DBG
-
 static __inline VOID
 __Trace(
-    IN  const CHAR  *Prefix,
-    IN  const CHAR  *Format,
+    _In_ PCSTR      Prefix,
+    _In_ PCSTR      Format,
     ...
     )
 {
@@ -110,28 +109,16 @@ __Trace(
     va_end(Arguments);
 }
 
-#else   // DBG
-
-static __inline VOID
-__Trace(
-    IN  const CHAR  *Prefix,
-    IN  const CHAR  *Format,
-    ...
-    )
-{
-    UNREFERENCED_PARAMETER(Prefix);
-    UNREFERENCED_PARAMETER(Format);
-}
-
-#endif  // DBG
-
 #define Trace(...)  \
         __Trace(__MODULE__ "|" __FUNCTION__ ": ", __VA_ARGS__)
+#else   // DBG
+#define Trace(...)  (VOID)(__VA_ARGS__)
+#endif  // DBG
 
 static __inline VOID
 __Info(
-    IN  const CHAR  *Prefix,
-    IN  const CHAR  *Format,
+    _In_ PCSTR      Prefix,
+    _In_ PCSTR      Format,
     ...
     )
 {
diff --git a/src/xencons/util.h b/src/xencons/util.h
index bea51aa..fb4134a 100644
--- a/src/xencons/util.h
+++ b/src/xencons/util.h
@@ -38,12 +38,12 @@
 
 #include "assert.h"
 
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
+#define	P2ROUNDUP(_t, _x, _a)   \
+        (-(-((_t)(_x)) & -(((_t)(_a)))))
 
 static FORCEINLINE LONG
 __ffs(
-    IN  unsigned long long  mask
+    _In_ unsigned long long mask
     )
 {
     unsigned char           *array = (unsigned char *)&mask;
@@ -82,11 +82,11 @@ __ffs(
 
 static FORCEINLINE VOID
 __CpuId(
-    IN  ULONG   Leaf,
-    OUT PULONG  EAX OPTIONAL,
-    OUT PULONG  EBX OPTIONAL,
-    OUT PULONG  ECX OPTIONAL,
-    OUT PULONG  EDX OPTIONAL
+    _In_ ULONG          Leaf,
+    _Out_opt_ PULONG    EAX,
+    _Out_opt_ PULONG    EBX,
+    _Out_opt_ PULONG    ECX,
+    _Out_opt_ PULONG    EDX
     )
 {
     int         Value[4] = {0};
@@ -108,8 +108,8 @@ __CpuId(
 
 static FORCEINLINE LONG
 __InterlockedAdd(
-    IN  LONG    *Value,
-    IN  LONG    Delta
+    _In_ LONG   *Value,
+    _In_ LONG   Delta
     )
 {
     LONG        New;
@@ -125,8 +125,8 @@ __InterlockedAdd(
 
 static FORCEINLINE LONG
 __InterlockedSubtract(
-    IN  LONG    *Value,
-    IN  LONG    Delta
+    _In_ LONG   *Value,
+    _In_ LONG   Delta
     )
 {
     LONG        New;
@@ -140,23 +140,24 @@ __InterlockedSubtract(
     return New;
 }
 
-__checkReturn
+_Check_return_
 static FORCEINLINE PVOID
 __AllocatePoolWithTag(
-    IN  POOL_TYPE   PoolType,
-    IN  SIZE_T      NumberOfBytes,
-    IN  ULONG       Tag
+    _In_ POOL_TYPE  PoolType,
+    _In_ SIZE_T     NumberOfBytes,
+    _In_ ULONG      Tag
     )
 {
     PUCHAR          Buffer;
 
-    __analysis_assume(PoolType == NonPagedPool ||
+    _Analysis_assume_(PoolType == NonPagedPool ||
                       PoolType == PagedPool);
 
     if (NumberOfBytes == 0)
         return NULL;
 
 #if (_MSC_VER >= 1928) // VS 16.9 (EWDK 20344 or later)
+#pragma warning(suppress:28160) // annotation error
     Buffer = ExAllocatePoolUninitialized(PoolType, NumberOfBytes, Tag);
 #else
 #pragma warning(suppress:28160) // annotation error
@@ -171,8 +172,8 @@ __AllocatePoolWithTag(
 
 static FORCEINLINE VOID
 __FreePoolWithTag(
-    IN  PVOID   Buffer,
-    IN  ULONG   Tag
+    _In_ PVOID  Buffer,
+    _In_ ULONG  Tag
     )
 {
     ExFreePoolWithTag(Buffer, Tag);
@@ -180,28 +181,37 @@ __FreePoolWithTag(
 
 static FORCEINLINE PMDL
 __AllocatePages(
-    IN  ULONG           Count
+    _In_ ULONG          Count,
+    _In_ BOOLEAN        Contiguous
     )
 {
     PHYSICAL_ADDRESS    LowAddress;
     PHYSICAL_ADDRESS    HighAddress;
     LARGE_INTEGER       SkipBytes;
     SIZE_T              TotalBytes;
+    ULONG               Flags;
     PMDL                Mdl;
     PUCHAR              MdlMappedSystemVa;
     NTSTATUS            status;
 
     LowAddress.QuadPart = 0ull;
     HighAddress.QuadPart = ~0ull;
-    SkipBytes.QuadPart = 0ull;
     TotalBytes = (SIZE_T)PAGE_SIZE * Count;
 
+    if (Contiguous) {
+        SkipBytes.QuadPart = TotalBytes;
+        Flags = MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS;
+    } else {
+        SkipBytes.QuadPart = 0ull;
+        Flags = MM_ALLOCATE_FULLY_REQUIRED;
+    }
+
     Mdl = MmAllocatePagesForMdlEx(LowAddress,
                                   HighAddress,
                                   SkipBytes,
                                   TotalBytes,
                                   MmCached,
-                                  MM_ALLOCATE_FULLY_REQUIRED);
+                                  Flags);
 
     status = STATUS_NO_MEMORY;
     if (Mdl == NULL)
@@ -245,11 +255,11 @@ fail1:
     return NULL;
 }
 
-#define __AllocatePage()    __AllocatePages(1)
+#define __AllocatePage()    __AllocatePages(1, FALSE)
 
 static FORCEINLINE VOID
 __FreePages(
-    IN	PMDL	Mdl
+    _In_ PMDL   Mdl
     )
 {
     PUCHAR	MdlMappedSystemVa;
@@ -265,15 +275,17 @@ __FreePages(
 
 #define __FreePage(_Mdl)    __FreePages(_Mdl)
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __strtok_r(
-    IN      PCHAR   Buffer,
-    IN      PCHAR   Delimiter,
-    IN OUT  PCHAR   *Context
+    _In_opt_ PSTR   Buffer,
+    _In_ PSTR       Delimiter,
+    _When_(Buffer != NULL, _Outptr_)
+    _When_(Buffer == NULL, _Inout_)
+    PSTR            *Context
     )
 {
-    PCHAR           Token;
-    PCHAR           End;
+    PSTR            Token;
+    PSTR            End;
 
     if (Buffer != NULL)
         *Context = Buffer;
@@ -303,15 +315,17 @@ __strtok_r(
     return Token;
 }
 
-static FORCEINLINE PWCHAR
+static FORCEINLINE PWSTR
 __wcstok_r(
-    IN      PWCHAR  Buffer,
-    IN      PWCHAR  Delimiter,
-    IN OUT  PWCHAR  *Context
+    _In_opt_ PWSTR  Buffer,
+    _In_ PWSTR      Delimiter,
+    _When_(Buffer != NULL, _Outptr_)
+    _When_(Buffer == NULL, _Inout_)
+    PWSTR           *Context
     )
 {
-    PWCHAR          Token;
-    PWCHAR          End;
+    PWSTR           Token;
+    PWSTR           End;
 
     if (Buffer != NULL)
         *Context = Buffer;
@@ -343,7 +357,7 @@ __wcstok_r(
 
 static FORCEINLINE CHAR
 __toupper(
-    IN  CHAR    Character
+    _In_ CHAR   Character
     )
 {
     if (Character < 'a' || Character > 'z')
@@ -354,7 +368,7 @@ __toupper(
 
 static FORCEINLINE CHAR
 __tolower(
-    IN  CHAR    Character
+    _In_ CHAR   Character
     )
 {
     if (Character < 'A' || Character > 'Z')
-- 
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 Sep 10 11:23:17 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118143.1464027 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIuy-0004oS-Rv; Wed, 10 Sep 2025 11:23:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118143.1464027; Wed, 10 Sep 2025 11:23:16 +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 1uwIuy-0004oM-OY; Wed, 10 Sep 2025 11:23:16 +0000
Received: by outflank-mailman (input) for mailman id 1118143;
 Wed, 10 Sep 2025 11:23:15 +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=VLLV=3V=bounce.vates.tech=bounce-md_30504962.68c15f9f.v1-a41efdc693094e9a9a470e6885d988d6@srs-se1.protection.inumbo.net>)
 id 1uwIux-0004lb-EC
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:15 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 897dd742-8e38-11f0-9809-7dc792cee155;
 Wed, 10 Sep 2025 13:23:13 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cMJG75m07zB5p52k
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a41efdc693094e9a9a470e6885d988d6; Wed, 10 Sep 2025 11:23: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: 897dd742-8e38-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503391; x=1757773391;
	bh=msnEG13GA+6KV0P9O8xBUl6ctZ4uMyXdGYWRqWf1O6M=;
	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=oOuNnzkTlyD4YlNhg9S8wXamyA0JpSIbeX3q6puRqawjprgFgihYyD/OdbEXLJCot
	 HDINgUA0n+aEO8sh1tArIf7KGwD1snaXX2KiSp/VxAJ1CMr6AsUmH0fTMYvbv7LfHO
	 zCXTQdDvJIE7u1DxtOT6D9OfQq3he4gpPwp2Tqcokk/0abAzDrSDHlIkA6FTuHkdjD
	 SOxlE6ior+eN9HcQD4dPvJKSxH8mvUcyflQE5jeyQ1TWcDcrZ5O8crzkg0AOaJn/4s
	 XZtR9Fy97nxCUeAfJw67cojeP+SPl3EFWZVCZmjlXTCBNoX9AYzYRapMvwLPh2wc2C
	 Vye13LUghyZ3g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503391; x=1757763891; i=ngoc-tu.dinh@vates.tech;
	bh=msnEG13GA+6KV0P9O8xBUl6ctZ4uMyXdGYWRqWf1O6M=;
	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=QcbU6kGDuPMqIAroZ8Quydj2/EUOLfdhptd7mEmzV81yb9sUKQvEigIGl60LiQ+ca
	 S+Mg+koRtKqWgWuFLjxJjEuGo/LjeOFujCOOuulem/X1KwZ0Z0UHrzrxvOB/t/Age2
	 HxzbRL0ZMBjiQgEI/1jYWGYWwDBqeUq0RHQOzPChpIrisA9KsYpfafI2dp7GTQi0hH
	 eMXxB/6gXq7E2kdzeerw1LI0dGUiWGLjb86MdGK5aIKuVYVj9f64CuUzjTjSf9sbLJ
	 lX0XhzhenxFQlDv3utGrU4+PT/eg/BOKsrlewkFypP+gRDVaLNEvWxhyjoR8e9GMzZ
	 79bic1WnWmcJw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2001/11]=20Sync=20interface=20headers=20from=20Xenbus?=
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: 1757503390032
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-2-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.a41efdc693094e9a9a470e6885d988d6?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:11 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 include/cache_interface.h   | 76 ++++++++++++++++----------------
 include/console_interface.h | 30 ++++++-------
 include/debug_interface.h   | 30 ++++++-------
 include/evtchn_interface.h  | 72 +++++++++++++++---------------
 include/gnttab_interface.h  | 88 ++++++++++++++++++-------------------
 include/store_interface.h   | 84 +++++++++++++++++------------------
 include/suspend_interface.h | 24 +++++-----
 7 files changed, 202 insertions(+), 202 deletions(-)

diff --git a/include/cache_interface.h b/include/cache_interface.h
index c45777c..e5f4ce9 100644
--- a/include/cache_interface.h
+++ b/include/cache_interface.h
@@ -54,7 +54,7 @@ typedef struct _XENBUS_CACHE    XENBUS_CACHE, *PXENBUS_CACHE;
 */
 typedef NTSTATUS
 (*XENBUS_CACHE_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CACHE_RELEASE
@@ -64,7 +64,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_CACHE_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CACHE_CTOR
@@ -79,8 +79,8 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_CACHE_CTOR)(
-    IN  PVOID   Argument,
-    IN  PVOID   Object
+    _In_ PVOID  Argument,
+    _In_ PVOID  Object
     );
 
 /*! \typedef XENBUS_CACHE_DTOR
@@ -94,8 +94,8 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_CACHE_DTOR)(
-    IN  PVOID   Argument,
-    IN  PVOID   Object
+    _In_ PVOID  Argument,
+    _In_ PVOID  Object
     );
 
 /*! \typedef XENBUS_CACHE_ACQUIRE_LOCK
@@ -108,7 +108,7 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_CACHE_ACQUIRE_LOCK)(
-    IN  PVOID   Argument
+    _In_ PVOID  Argument
     );
 
 /*! \typedef XENBUS_CACHE_RELEASE_LOCK
@@ -121,21 +121,21 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_CACHE_RELEASE_LOCK)(
-    IN  PVOID   Argument
+    _In_ PVOID  Argument
     );
 
 typedef NTSTATUS
 (*XENBUS_CACHE_CREATE_V1)(
-    IN  PINTERFACE                  Interface,
-    IN  const CHAR                  *Name,
-    IN  ULONG                       Size,
-    IN  ULONG                       Reservation,
-    IN  XENBUS_CACHE_CTOR           Ctor,
-    IN  XENBUS_CACHE_DTOR           Dtor,
-    IN  XENBUS_CACHE_ACQUIRE_LOCK   AcquireLock,
-    IN  XENBUS_CACHE_RELEASE_LOCK   ReleaseLock,
-    IN  PVOID                       Argument OPTIONAL,
-    OUT PXENBUS_CACHE               *Cache
+    _In_ PINTERFACE                 Interface,
+    _In_ PCSTR                      Name,
+    _In_ ULONG                      Size,
+    _In_ ULONG                      Reservation,
+    _In_ XENBUS_CACHE_CTOR          Ctor,
+    _In_ XENBUS_CACHE_DTOR          Dtor,
+    _In_ XENBUS_CACHE_ACQUIRE_LOCK  AcquireLock,
+    _In_ XENBUS_CACHE_RELEASE_LOCK  ReleaseLock,
+    _In_opt_ PVOID                  Argument,
+    _Outptr_ PXENBUS_CACHE          *Cache
     );
 
 /*! \typedef XENBUS_CACHE_CREATE
@@ -158,17 +158,17 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_CACHE_CREATE)(
-    IN  PINTERFACE                  Interface,
-    IN  const CHAR                  *Name,
-    IN  ULONG                       Size,
-    IN  ULONG                       Reservation,
-    IN  ULONG                       Cap,
-    IN  XENBUS_CACHE_CTOR           Ctor,
-    IN  XENBUS_CACHE_DTOR           Dtor,
-    IN  XENBUS_CACHE_ACQUIRE_LOCK   AcquireLock,
-    IN  XENBUS_CACHE_RELEASE_LOCK   ReleaseLock,
-    IN  PVOID                       Argument OPTIONAL,
-    OUT PXENBUS_CACHE               *Cache
+    _In_ PINTERFACE                 Interface,
+    _In_ PCSTR                      Name,
+    _In_ ULONG                      Size,
+    _In_ ULONG                      Reservation,
+    _In_ ULONG                      Cap,
+    _In_ XENBUS_CACHE_CTOR          Ctor,
+    _In_ XENBUS_CACHE_DTOR          Dtor,
+    _In_ XENBUS_CACHE_ACQUIRE_LOCK  AcquireLock,
+    _In_ XENBUS_CACHE_RELEASE_LOCK  ReleaseLock,
+    _In_opt_ PVOID                  Argument,
+    _Outptr_ PXENBUS_CACHE          *Cache
     );
 
 /*! \typedef XENBUS_CACHE_GET
@@ -181,9 +181,9 @@ typedef NTSTATUS
 */
 typedef PVOID
 (*XENBUS_CACHE_GET)(
-    IN  PINTERFACE      Interface,
-    IN  PXENBUS_CACHE   Cache,
-    IN  BOOLEAN         Locked
+    _In_ PINTERFACE     Interface,
+    _In_ PXENBUS_CACHE  Cache,
+    _In_ BOOLEAN        Locked
     );
 
 /*! \typedef XENBUS_CACHE_PUT
@@ -196,10 +196,10 @@ typedef PVOID
 */
 typedef VOID
 (*XENBUS_CACHE_PUT)(
-    IN  PINTERFACE      Interface,
-    IN  PXENBUS_CACHE   Cache,
-    IN  PVOID           Object,
-    IN  BOOLEAN         Locked
+    _In_ PINTERFACE     Interface,
+    _In_ PXENBUS_CACHE  Cache,
+    _In_ PVOID          Object,
+    _In_ BOOLEAN        Locked
     );
 
 /*! \typedef XENBUS_CACHE_DESTROY
@@ -212,8 +212,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_CACHE_DESTROY)(
-    IN  PINTERFACE      Interface,
-    IN  PXENBUS_CACHE   Cache
+    _In_ PINTERFACE     Interface,
+    _In_ PXENBUS_CACHE  Cache
     );
 
 // {A98DFD78-416A-4949-92A5-E084F2F4B44E}
diff --git a/include/console_interface.h b/include/console_interface.h
index 6b4ba7a..7ed7790 100644
--- a/include/console_interface.h
+++ b/include/console_interface.h
@@ -53,7 +53,7 @@ typedef struct _XENBUS_CONSOLE_WAKEUP   XENBUS_CONSOLE_WAKEUP, *PXENBUS_CONSOLE_
 */
 typedef NTSTATUS
 (*XENBUS_CONSOLE_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CONSOLE_RELEASE
@@ -63,7 +63,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_CONSOLE_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CONSOLE_CAN_READ
@@ -75,7 +75,7 @@ typedef VOID
 */
 typedef BOOLEAN
 (*XENBUS_CONSOLE_CAN_READ)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CONSOLE_READ
@@ -89,9 +89,9 @@ typedef BOOLEAN
 */
 typedef ULONG
 (*XENBUS_CONSOLE_READ)(
-    IN  PINTERFACE  Interface,
-    IN  PCHAR       Data,
-    IN  ULONG       Length
+    _In_ PINTERFACE Interface,
+    _In_ PSTR       Data,
+    _In_ ULONG      Length
     );
 
 /*! \typedef XENBUS_CONSOLE_CAN_WRITE
@@ -103,7 +103,7 @@ typedef ULONG
 */
 typedef BOOLEAN
 (*XENBUS_CONSOLE_CAN_WRITE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_CONSOLE_WRITE
@@ -117,9 +117,9 @@ typedef BOOLEAN
 */
 typedef ULONG
 (*XENBUS_CONSOLE_WRITE)(
-    IN  PINTERFACE  Interface,
-    IN  PCHAR       Data,
-    IN  ULONG       Length
+    _In_ PINTERFACE Interface,
+    _In_ PSTR       Data,
+    _In_ ULONG      Length
     );
 
 /*! \typedef XENBUS_CONSOLE_WAKEUP_ADD
@@ -132,9 +132,9 @@ typedef ULONG
 */
 typedef NTSTATUS
 (*XENBUS_CONSOLE_WAKEUP_ADD)(
-    IN  PINTERFACE          	Interface,
-    IN  PKEVENT             	Event,
-    OUT PXENBUS_CONSOLE_WAKEUP	*Wakeup
+    _In_ PINTERFACE                 Interface,
+    _In_ PKEVENT                    Event,
+    _Outptr_ PXENBUS_CONSOLE_WAKEUP *Wakeup
     );
 
 /*! \typedef XENBUS_CONSOLE_WAKEUP_REMOVE
@@ -145,8 +145,8 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_CONSOLE_WAKEUP_REMOVE)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_CONSOLE_WAKEUP  Wakeup
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_CONSOLE_WAKEUP Wakeup
     );
 
 // {04c4f738-034a-4268-bd20-a92ac90d4f82}
diff --git a/include/debug_interface.h b/include/debug_interface.h
index 2d82c80..251902c 100644
--- a/include/debug_interface.h
+++ b/include/debug_interface.h
@@ -53,7 +53,7 @@ typedef struct _XENBUS_DEBUG_CALLBACK   XENBUS_DEBUG_CALLBACK, *PXENBUS_DEBUG_CA
 */
 typedef NTSTATUS
 (*XENBUS_DEBUG_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_DEBUG_RELEASE
@@ -63,7 +63,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_DEBUG_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_DEBUG_FUNCTION
@@ -77,8 +77,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_DEBUG_FUNCTION)(
-    IN  PVOID   Argument,
-    IN  BOOLEAN Crashing
+    _In_ PVOID      Argument,
+    _In_ BOOLEAN    Crashing
     );
 
 /*! \typedef XENBUS_DEBUG_REGISTER
@@ -92,11 +92,11 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_DEBUG_REGISTER)(
-    IN  PINTERFACE              Interface,
-    IN  PCHAR                   Prefix,
-    IN  XENBUS_DEBUG_FUNCTION   Function,
-    IN  PVOID                   Argument OPTIONAL,
-    OUT PXENBUS_DEBUG_CALLBACK  *Callback
+    _In_ PINTERFACE                 Interface,
+    _In_ PSTR                       Prefix,
+    _In_ XENBUS_DEBUG_FUNCTION      Function,
+    _In_opt_ PVOID                  Argument,
+    _Outptr_ PXENBUS_DEBUG_CALLBACK *Callback
     );
 
 /*! \typedef XENBUS_DEBUG_PRINTF
@@ -111,8 +111,8 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_DEBUG_PRINTF)(
-    IN  PINTERFACE              Interface,
-    IN  const CHAR              *Format,
+    _In_ PINTERFACE             Interface,
+    _In_ PCSTR                  Format,
     ...
     );
 
@@ -124,8 +124,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_DEBUG_DEREGISTER)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_DEBUG_CALLBACK  Callback
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_DEBUG_CALLBACK Callback
     );
 
 /*! \typedef XENBUS_DEBUG_TRIGGER
@@ -137,8 +137,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_DEBUG_TRIGGER)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_DEBUG_CALLBACK  Callback OPTIONAL
+    _In_ PINTERFACE                 Interface,
+    _In_opt_ PXENBUS_DEBUG_CALLBACK Callback
     );
 
 // {0DF600AE-6B20-4227-BF94-03DA9A26A114}
diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h
index cfc8d2b..5c46f97 100644
--- a/include/evtchn_interface.h
+++ b/include/evtchn_interface.h
@@ -64,7 +64,7 @@ typedef struct _XENBUS_EVTCHN_CHANNEL XENBUS_EVTCHN_CHANNEL, *PXENBUS_EVTCHN_CHA
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_EVTCHN_RELEASE
@@ -74,7 +74,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_EVTCHN_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_EVTCHN_OPEN
@@ -108,10 +108,10 @@ typedef VOID
 */
 typedef PXENBUS_EVTCHN_CHANNEL
 (*XENBUS_EVTCHN_OPEN)(
-    IN  PINTERFACE          Interface,
-    IN  XENBUS_EVTCHN_TYPE  Type,
-    IN  PKSERVICE_ROUTINE   Function,
-    IN  PVOID               Argument OPTIONAL,
+    _In_ PINTERFACE         Interface,
+    _In_ XENBUS_EVTCHN_TYPE Type,
+    _In_ PKSERVICE_ROUTINE  Function,
+    _In_opt_ PVOID          Argument,
     ...
     );
 
@@ -125,17 +125,17 @@ typedef PXENBUS_EVTCHN_CHANNEL
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_BIND)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  USHORT                  Group,
-    IN  UCHAR                   Number
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel,
+    _In_ USHORT                 Group,
+    _In_ UCHAR                  Number
     );
 
 typedef VOID
 (*XENBUS_EVTCHN_UNMASK_V4)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  BOOLEAN                 InCallback
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel,
+    _In_ BOOLEAN                InCallback
     );
 
 /*! \typedef XENBUS_EVTCHN_UNMASK
@@ -148,16 +148,16 @@ typedef VOID
 */
 typedef BOOLEAN
 (*XENBUS_EVTCHN_UNMASK)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  BOOLEAN                 InCallback,
-    IN  BOOLEAN                 Force
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel,
+    _In_ BOOLEAN                InCallback,
+    _In_ BOOLEAN                Force
     );
 
 typedef VOID
 (*XENBUS_EVTCHN_SEND_V1)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 /*! \typedef XENBUS_EVTCHN_SEND
@@ -171,8 +171,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_EVTCHN_SEND)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 /*! \typedef XENBUS_EVTCHN_TRIGGER
@@ -183,8 +183,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_EVTCHN_TRIGGER)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 /*! \typedef XENBUS_EVTCHN_GET_COUNT
@@ -196,15 +196,15 @@ typedef VOID
 */
 typedef ULONG
 (*XENBUS_EVTCHN_GET_COUNT)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 typedef NTSTATUS
 (*XENBUS_EVTCHN_WAIT_V5)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  PLARGE_INTEGER          Timeout OPTIONAL
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel,
+    _In_opt_ PLARGE_INTEGER     Timeout
     );
 
 /*! \typedef XENBUS_EVTCHN_WAIT
@@ -217,10 +217,10 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_EVTCHN_WAIT)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel,
-    IN  ULONG                   Count,
-    IN  PLARGE_INTEGER          Timeout OPTIONAL
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel,
+    _In_ ULONG                  Count,
+    _In_opt_ PLARGE_INTEGER     Timeout
     );
 
 /*! \typedef XENBUS_EVTCHN_GET_PORT
@@ -232,8 +232,8 @@ typedef NTSTATUS
 */
 typedef ULONG
 (*XENBUS_EVTCHN_GET_PORT)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 /*! \typedef XENBUS_EVTCHN_CLOSE
@@ -244,8 +244,8 @@ typedef ULONG
 */
 typedef VOID
 (*XENBUS_EVTCHN_CLOSE)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_EVTCHN_CHANNEL  Channel
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_EVTCHN_CHANNEL Channel
     );
 
 // {BE2440AC-1098-4150-AF4D-452FADCEF923}
diff --git a/include/gnttab_interface.h b/include/gnttab_interface.h
index 87303e2..92a95a7 100644
--- a/include/gnttab_interface.h
+++ b/include/gnttab_interface.h
@@ -60,7 +60,7 @@ typedef struct _XENBUS_GNTTAB_CACHE XENBUS_GNTTAB_CACHE, *PXENBUS_GNTTAB_CACHE;
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_GNTTAB_RELEASE
@@ -70,18 +70,18 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_GNTTAB_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 typedef NTSTATUS
 (*XENBUS_GNTTAB_CREATE_CACHE_V1)(
-    IN  PINTERFACE                  Interface,
-    IN  const CHAR                  *Name,
-    IN  ULONG                       Reservation,
-    IN  XENBUS_CACHE_ACQUIRE_LOCK   AcquireLock,
-    IN  XENBUS_CACHE_RELEASE_LOCK   ReleaseLock,
-    IN  PVOID                       Argument OPTIONAL,
-    OUT PXENBUS_GNTTAB_CACHE        *Cache
+    _In_ PINTERFACE                 Interface,
+    _In_ PCSTR                      Name,
+    _In_ ULONG                      Reservation,
+    _In_ XENBUS_CACHE_ACQUIRE_LOCK  AcquireLock,
+    _In_ XENBUS_CACHE_RELEASE_LOCK  ReleaseLock,
+    _In_opt_ PVOID                  Argument,
+    _Outptr_ PXENBUS_GNTTAB_CACHE   *Cache
     );
 
 /*! \typedef XENBUS_GNTTAB_CREATE_CACHE
@@ -98,14 +98,14 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_CREATE_CACHE)(
-    IN  PINTERFACE                  Interface,
-    IN  const CHAR                  *Name,
-    IN  ULONG                       Reservation,
-    IN  ULONG                       Cap,
-    IN  XENBUS_CACHE_ACQUIRE_LOCK   AcquireLock,
-    IN  XENBUS_CACHE_RELEASE_LOCK   ReleaseLock,
-    IN  PVOID                       Argument OPTIONAL,
-    OUT PXENBUS_GNTTAB_CACHE        *Cache
+    _In_ PINTERFACE                 Interface,
+    _In_ PCSTR                      Name,
+    _In_ ULONG                      Reservation,
+    _In_ ULONG                      Cap,
+    _In_ XENBUS_CACHE_ACQUIRE_LOCK  AcquireLock,
+    _In_ XENBUS_CACHE_RELEASE_LOCK  ReleaseLock,
+    _In_opt_ PVOID                  Argument,
+    _Outptr_ PXENBUS_GNTTAB_CACHE   *Cache
     );
 
 /*! \typedef XENBUS_GNTTAB_PERMIT_FOREIGN_ACCESS
@@ -123,13 +123,13 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_PERMIT_FOREIGN_ACCESS)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_GNTTAB_CACHE        Cache,
-    IN  BOOLEAN                     Locked,
-    IN  USHORT                      Domain,
-    IN  PFN_NUMBER                  Pfn,
-    IN  BOOLEAN                     ReadOnly,
-    OUT PXENBUS_GNTTAB_ENTRY        *Entry
+    _In_ PINTERFACE                 Interface,
+    _In_ PXENBUS_GNTTAB_CACHE       Cache,
+    _In_ BOOLEAN                    Locked,
+    _In_ USHORT                     Domain,
+    _In_ PFN_NUMBER                 Pfn,
+    _In_ BOOLEAN                    ReadOnly,
+    _Outptr_ PXENBUS_GNTTAB_ENTRY   *Entry
     );
 
 /*! \typedef XENBUS_GNTTAB_REVOKE_FOREIGN_ACCESS
@@ -143,10 +143,10 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_REVOKE_FOREIGN_ACCESS)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_GNTTAB_CACHE        Cache,
-    IN  BOOLEAN                     Locked,
-    IN  PXENBUS_GNTTAB_ENTRY        Entry
+    _In_ PINTERFACE                 Interface,
+    _In_ PXENBUS_GNTTAB_CACHE       Cache,
+    _In_ BOOLEAN                    Locked,
+    _In_ PXENBUS_GNTTAB_ENTRY       Entry
     );
 
 /*! \typedef XENBUS_GNTTAB_GET_REFERENCE
@@ -158,8 +158,8 @@ typedef NTSTATUS
 */
 typedef ULONG
 (*XENBUS_GNTTAB_GET_REFERENCE)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_GNTTAB_ENTRY        Entry
+    _In_ PINTERFACE                 Interface,
+    _In_ PXENBUS_GNTTAB_ENTRY       Entry
     );
 
 /*! \typedef XENBUS_GNTTAB_QUERY_REFERENCE
@@ -172,10 +172,10 @@ typedef ULONG
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_QUERY_REFERENCE)(
-    IN  PINTERFACE  Interface,
-    IN  ULONG       Reference,
-    OUT PPFN_NUMBER Pfn OPTIONAL,
-    OUT PBOOLEAN    ReadOnly OPTIONAL
+    _In_ PINTERFACE         Interface,
+    _In_ ULONG              Reference,
+    _Out_opt_ PPFN_NUMBER   Pfn,
+    _Out_opt_ PBOOLEAN      ReadOnly
     );
 
 #define XENBUS_GNTTAB_CONSOLE_REFERENCE 0
@@ -193,8 +193,8 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_GNTTAB_DESTROY_CACHE)(
-    IN  PINTERFACE              Interface,
-    IN  PXENBUS_GNTTAB_CACHE    Cache
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_GNTTAB_CACHE   Cache
     );
 
 /*! \typedef XENBUS_GNTTAB_MAP_FOREIGN_PAGES
@@ -210,12 +210,12 @@ typedef VOID
 
 typedef NTSTATUS
 (*XENBUS_GNTTAB_MAP_FOREIGN_PAGES)(
-    IN  PINTERFACE              Interface,
-    IN  USHORT                  Domain,
-    IN  ULONG                   NumberPages,
-    IN  PULONG                  References,
-    IN  BOOLEAN                 ReadOnly,
-    OUT PHYSICAL_ADDRESS        *Address
+    _In_ PINTERFACE             Interface,
+    _In_ USHORT                 Domain,
+    _In_ ULONG                  NumberPages,
+    _In_ PULONG                 References,
+    _In_ BOOLEAN                ReadOnly,
+    _Out_ PHYSICAL_ADDRESS      *Address
     );
 
 /*! \typedef XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES
@@ -226,8 +226,8 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES)(
-    IN  PINTERFACE              Interface,
-    IN  PHYSICAL_ADDRESS        Address
+    _In_ PINTERFACE             Interface,
+    _In_ PHYSICAL_ADDRESS       Address
     );
 
 // {763679C5-E5C2-4A6D-8B88-6BB02EC42D8E}
diff --git a/include/store_interface.h b/include/store_interface.h
index 616bc36..208be0e 100644
--- a/include/store_interface.h
+++ b/include/store_interface.h
@@ -75,7 +75,7 @@ typedef struct _XENBUS_STORE_PERMISSION {
 */
 typedef NTSTATUS
 (*XENBUS_STORE_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_STORE_RELEASE
@@ -85,7 +85,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_STORE_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_STORE_FREE
@@ -96,8 +96,8 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_STORE_FREE)(
-    IN  PINTERFACE  Interface,
-    IN  PCHAR       Buffer
+    _In_ PINTERFACE Interface,
+    _In_ PSTR       Buffer
     );
 
 /*! \typedef XENBUS_STORE_READ
@@ -116,11 +116,11 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_STORE_READ)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction OPTIONAL,
-    IN  PCHAR                       Prefix OPTIONAL,
-    IN  PCHAR                       Node,
-    OUT PCHAR                       *Buffer
+    _In_ PINTERFACE                     Interface,
+    _In_opt_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_opt_ PSTR                       Prefix,
+    _In_ PSTR                           Node,
+    _Outptr_result_z_ PSTR              *Buffer
     );
 
 /*! \typedef XENBUS_STORE_PRINTF
@@ -139,11 +139,11 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_PRINTF)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction OPTIONAL,
-    IN  PCHAR                       Prefix OPTIONAL,
-    IN  PCHAR                       Node,
-    IN  const CHAR                  *Format,
+    _In_ PINTERFACE                     Interface,
+    _In_opt_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_opt_ PSTR                       Prefix,
+    _In_ PSTR                           Node,
+    _In_ PCSTR                          Format,
     ...
     );
 
@@ -159,10 +159,10 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_REMOVE)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction OPTIONAL,
-    IN  PCHAR                       Prefix OPTIONAL,
-    IN  PCHAR                       Node
+    _In_ PINTERFACE                     Interface,
+    _In_opt_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_opt_ PSTR                       Prefix,
+    _In_ PSTR                           Node
     );
 
 /*! \typedef XENBUS_STORE_DIRECTORY
@@ -181,11 +181,11 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_DIRECTORY)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction OPTIONAL,
-    IN  PCHAR                       Prefix OPTIONAL,
-    IN  PCHAR                       Node,
-    OUT PCHAR                       *Buffer
+    _In_ PINTERFACE                     Interface,
+    _In_opt_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_opt_ PSTR                       Prefix,
+    _In_ PSTR                           Node,
+    _Outptr_result_z_ PSTR              *Buffer
     );
 
 /*! \typedef XENBUS_STORE_TRANSACTION_START
@@ -196,8 +196,8 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_TRANSACTION_START)(
-    IN  PINTERFACE                  Interface,
-    OUT PXENBUS_STORE_TRANSACTION   *Transaction
+    _In_ PINTERFACE                     Interface,
+    _Outptr_ PXENBUS_STORE_TRANSACTION  *Transaction
     );
 
 /*! \typedef XENBUS_STORE_TRANSACTION_END
@@ -213,9 +213,9 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_TRANSACTION_END)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction,
-    IN  BOOLEAN                     Commit
+    _In_ PINTERFACE                 Interface,
+    _In_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_ BOOLEAN                    Commit
     );
 
 /*! \typedef XENBUS_STORE_WATCH_ADD
@@ -231,11 +231,11 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_WATCH_ADD)(
-    IN  PINTERFACE          Interface,
-    IN  PCHAR               Prefix OPTIONAL,
-    IN  PCHAR               Node,
-    IN  PKEVENT             Event,
-    OUT PXENBUS_STORE_WATCH *Watch
+    _In_ PINTERFACE                 Interface,
+    _In_opt_ PSTR                   Prefix,
+    _In_ PSTR                       Node,
+    _In_ PKEVENT                    Event,
+    _Outptr_ PXENBUS_STORE_WATCH    *Watch
     );
 
 /*! \typedef XENBUS_STORE_WATCH_REMOVE
@@ -246,8 +246,8 @@ typedef NTSTATUS
 */
 typedef NTSTATUS
 (*XENBUS_STORE_WATCH_REMOVE)(
-    IN  PINTERFACE          Interface,
-    IN  PXENBUS_STORE_WATCH Watch
+    _In_ PINTERFACE             Interface,
+    _In_ PXENBUS_STORE_WATCH    Watch
     );
 
 /*! \typedef XENBUS_STORE_POLL
@@ -262,7 +262,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_STORE_POLL)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_STORE_PERMISSIONS_SET
@@ -279,12 +279,12 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_STORE_PERMISSIONS_SET)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_STORE_TRANSACTION   Transaction OPTIONAL,
-    IN  PCHAR                       Prefix OPTIONAL,
-    IN  PCHAR                       Node,
-    IN  PXENBUS_STORE_PERMISSION    Permissions,
-    IN  ULONG                       NumberPermissions
+    _In_ PINTERFACE                     Interface,
+    _In_opt_ PXENBUS_STORE_TRANSACTION  Transaction,
+    _In_opt_ PSTR                       Prefix,
+    _In_ PSTR                           Node,
+    _In_ PXENBUS_STORE_PERMISSION       Permissions,
+    _In_ ULONG                          NumberPermissions
     );
 
 // {86824C3B-D34E-4753-B281-2F1E3AD214D7}
diff --git a/include/suspend_interface.h b/include/suspend_interface.h
index ee31d95..a20f616 100644
--- a/include/suspend_interface.h
+++ b/include/suspend_interface.h
@@ -62,7 +62,7 @@ typedef struct _XENBUS_SUSPEND_CALLBACK   XENBUS_SUSPEND_CALLBACK, *PXENBUS_SUSP
 */
 typedef NTSTATUS
 (*XENBUS_SUSPEND_ACQUIRE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_SUSPEND_RELEASE
@@ -72,7 +72,7 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_SUSPEND_RELEASE)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_SUSPEND_FUNCTION
@@ -87,7 +87,7 @@ typedef VOID
 */
 typedef VOID
 (*XENBUS_SUSPEND_FUNCTION)(
-    IN  PVOID   Argument
+    _In_ PVOID  Argument
     );
 
 /*! \typedef XENBUS_SUSPEND_REGISTER
@@ -101,11 +101,11 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_SUSPEND_REGISTER)(
-    IN  PINTERFACE                      Interface,
-    IN  XENBUS_SUSPEND_CALLBACK_TYPE    Type,
-    IN  XENBUS_SUSPEND_FUNCTION         Function,
-    IN  PVOID                           Argument OPTIONAL,
-    OUT PXENBUS_SUSPEND_CALLBACK        *Callback
+    _In_ PINTERFACE                     Interface,
+    _In_ XENBUS_SUSPEND_CALLBACK_TYPE   Type,
+    _In_ XENBUS_SUSPEND_FUNCTION        Function,
+    _In_opt_ PVOID                      Argument,
+    _Outptr_ PXENBUS_SUSPEND_CALLBACK   *Callback
     );
 
 /*! \typedef XENBUS_SUSPEND_DEREGISTER
@@ -116,8 +116,8 @@ typedef NTSTATUS
 */
 typedef VOID
 (*XENBUS_SUSPEND_DEREGISTER)(
-    IN  PINTERFACE                  Interface,
-    IN  PXENBUS_SUSPEND_CALLBACK    Callback
+    _In_ PINTERFACE                 Interface,
+    _In_ PXENBUS_SUSPEND_CALLBACK   Callback
     );
 
 /*! \typedef XENBUS_SUSPEND_TRIGGER
@@ -129,7 +129,7 @@ typedef VOID
 */
 typedef NTSTATUS
 (*XENBUS_SUSPEND_TRIGGER)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 /*! \typedef XENBUS_SUSPEND_GET_COUNT
@@ -140,7 +140,7 @@ typedef NTSTATUS
 */
 typedef ULONG
 (*XENBUS_SUSPEND_GET_COUNT)(
-    IN  PINTERFACE  Interface
+    _In_ PINTERFACE Interface
     );
 
 // {0554F2AF-B510-4C71-AC03-1C503E394238}
-- 
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 Sep 10 11:23:18 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118145.1464037 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv0-0004rq-02; Wed, 10 Sep 2025 11:23:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118145.1464037; Wed, 10 Sep 2025 11:23: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 1uwIuz-0004rf-Rt; Wed, 10 Sep 2025 11:23:17 +0000
Received: by outflank-mailman (input) for mailman id 1118145;
 Wed, 10 Sep 2025 11:23: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=xtUM=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-99f895cf3d814fb1aaadcf14d9bb5e90@srs-se1.protection.inumbo.net>)
 id 1uwIuy-0004lb-SO
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:16 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8a91da4b-8e38-11f0-9809-7dc792cee155;
 Wed, 10 Sep 2025 13:23:15 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG80zNrz2K1wSY
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 99f895cf3d814fb1aaadcf14d9bb5e90; Wed, 10 Sep 2025 11:23: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: 8a91da4b-8e38-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503392; x=1757773392;
	bh=qQjDggS4sd4WgmCukUdW5Vv6UTKfRRmH89jdp0oIT5U=;
	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=mrwjIrJfaFQhCFqJOUfeN8KImOEVTd2lRELJ8peObXS28aKx/pn2LPxis1nN134MZ
	 xB7gL4DIXR9q1HkJEvt630CZOWSjLtg30Yb97TDNG2M0+lP6/jVdBzijmSfBUWRXrH
	 db2w44AjSKI0WXotSt1VQeHvWowa2AmcTMlyh2sj9K3jNX1ARRsQbMicLJ1Q8sQpe2
	 UsLjdZcb88b+UwJhsu6Cr20TaRAQMnRlq8LMSJXKKS4NBypWKEaKl+Wu4wEThxxBTn
	 6Q602wQke79Ez5lZgRdpEo91imGfOgYrPccMdkcZ5dsPbsEk/l5xy41Qdl3WsutaBR
	 u/mYv783S529w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503392; x=1757763892; i=ngoc-tu.dinh@vates.tech;
	bh=qQjDggS4sd4WgmCukUdW5Vv6UTKfRRmH89jdp0oIT5U=;
	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=UAxArwNqyVbRvMArxivmtvFSwv5gqz+c74ERMdLdz3Oov9zwwSwhjxd0auDjqElc2
	 L5rNZJhgOMUEeUHjYtdhIkRI7or6cxjcdsc1vdvBfwEWcOhNZ/+KgI7Ms3lzRR4MyT
	 OaSo8Jez5OsK3d9o40zEcoPiwfEGxoVRaDskXD1NaHdq89cotkBnf3LrNJakikcaO6
	 tFwyOGHFFNN7686uAsUuThX+SajiiY3kkwM2UuHeNYAtPGB6Q/NYpwco+MCcrNSsX4
	 vhamPU+ZzyHyiRDlFgS8HqMdRBPldvQzHBfwwNB6ujFlqeZhc5tNdMyPZ4mieaxzce
	 kBW8uLYXvglsQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2006/11]=20Switch=20from=20CHAR*/WCHAR*=20to=20PSTR/PWSTR?=
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: 1757503391417
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-7-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.99f895cf3d814fb1aaadcf14d9bb5e90?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

CHAR*/WCHAR* are currently used as string pointers in many places. These
can be safely replaced with PSTR/PWSTR (and their const equivalents) as
they only differ by annotations.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/monitor/monitor.c  | 43 ++++++++++++++++++++----------------------
 src/tty/tty.c          |  2 +-
 src/xencons/console.c  |  2 +-
 src/xencons/fdo.c      | 32 +++++++++++++++----------------
 src/xencons/fdo.h      |  4 ++--
 src/xencons/frontend.c | 36 +++++++++++++++++------------------
 src/xencons/frontend.h |  4 ++--
 src/xencons/names.h    | 18 +++++++++---------
 src/xencons/pdo.c      | 12 ++++++------
 src/xencons/pdo.h      |  4 ++--
 10 files changed, 77 insertions(+), 80 deletions(-)

diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index 8f2a6a6..cefc3c2 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -73,7 +73,7 @@ typedef struct _MONITOR_CONSOLE {
     PWCHAR                  DevicePath;
     HANDLE                  DeviceHandle;
     HDEVNOTIFY              DeviceNotification;
-    PCHAR                   DeviceName; // protocol and instance?
+    PSTR                    DeviceName; // protocol and instance?
     HANDLE                  ExecutableThread;
     HANDLE                  ExecutableEvent;
     HANDLE                  DeviceThread;
@@ -111,8 +111,8 @@ static MONITOR_CONTEXT MonitorContext;
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
-    _In_ const CHAR     *Format,
-    _In_ ...
+    _In_ PCSTR          Format,
+    ...
     )
 {
 #if DBG
@@ -125,10 +125,7 @@ __Log(
     HRESULT             Result;
 
     va_start(Arguments, Format);
-    Result = StringCchVPrintfA(Buffer,
-                               MAXIMUM_BUFFER_SIZE,
-                               Format,
-                               Arguments);
+    Result = StringCchVPrintfA(Buffer, MAXIMUM_BUFFER_SIZE, Format, Arguments);
     va_end(Arguments);
 
     if (Result != S_OK && Result != STRSAFE_E_INSUFFICIENT_BUFFER)
@@ -167,12 +164,12 @@ __Log(
 #define Log(_Format, ...) \
     __Log(__MODULE__ "|" __FUNCTION__ ": " _Format, __VA_ARGS__)
 
-static PCHAR
+static PSTR
 GetErrorMessage(
     _In_ HRESULT    Error
     )
 {
-    PCHAR           Message;
+    PSTR            Message;
     ULONG           Index;
 
     if (!FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
@@ -196,7 +193,7 @@ GetErrorMessage(
     return Message;
 }
 
-static const CHAR *
+static PCSTR
 ServiceStateName(
     _In_ DWORD  State
     )
@@ -263,7 +260,7 @@ fail1:
     Error = GetLastError();
 
     {
-        PCHAR  Message;
+        PSTR    Message;
         Message = GetErrorMessage(Error);
         Log("fail1 (%s)", Message);
         LocalFree(Message);
@@ -668,16 +665,16 @@ fail1:
 
 static BOOL
 GetExecutable(
-    _In_ PCHAR          DeviceName,
-    _Out_ PCHAR         *Executable
+    _In_ PSTR               DeviceName,
+    _Outptr_result_z_ PSTR  *Executable
     )
 {
-    PMONITOR_CONTEXT    Context = &MonitorContext;
-    HKEY                Key;
-    DWORD               MaxValueLength;
-    DWORD               ExecutableLength;
-    DWORD               Type;
-    HRESULT             Error;
+    PMONITOR_CONTEXT        Context = &MonitorContext;
+    HKEY                    Key;
+    DWORD                   MaxValueLength;
+    DWORD                   ExecutableLength;
+    DWORD                   Type;
+    HRESULT                 Error;
 
     Error = RegOpenKeyExA(Context->ParametersKey,
                           DeviceName,
@@ -769,7 +766,7 @@ ExecutableThread(
     )
 {
     PMONITOR_CONSOLE    Console = (PMONITOR_CONSOLE)Argument;
-    PCHAR               Executable;
+    PSTR                Executable;
     PROCESS_INFORMATION ProcessInfo;
     STARTUPINFO         StartupInfo;
     BOOL                Success;
@@ -1053,7 +1050,7 @@ fail1:
     Error = GetLastError();
 
     {
-        PCHAR  Message;
+        PSTR    Message;
         Message = GetErrorMessage(Error);
         Log("fail1 (%s)", Message);
         LocalFree(Message);
@@ -1313,7 +1310,7 @@ MonitorEnumerate(
         Error = GetLastError();
 
         {
-            PCHAR  Message;
+            PSTR    Message;
             Message = GetErrorMessage(Error);
             Log("fail2 (%s)", Message);
             LocalFree(Message);
@@ -1330,7 +1327,7 @@ fail1:
     Error = GetLastError();
 
     {
-        PCHAR  Message;
+        PSTR    Message;
         Message = GetErrorMessage(Error);
         Log("fail1 (%s)", Message);
         LocalFree(Message);
diff --git a/src/tty/tty.c b/src/tty/tty.c
index 40d508a..4bfd74d 100644
--- a/src/tty/tty.c
+++ b/src/tty/tty.c
@@ -62,7 +62,7 @@ TTY_CONTEXT TtyContext;
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
-    _In_ const CHAR     *Format,
+    _In_ PCSTR          Format,
     _In_ ...
     )
 {
diff --git a/src/xencons/console.c b/src/xencons/console.c
index 0dd1825..c679bdb 100644
--- a/src/xencons/console.c
+++ b/src/xencons/console.c
@@ -276,7 +276,7 @@ __ConsoleDeviceControl(
     ULONG                   InputBufferLength;
     ULONG                   OutputBufferLength;
     PVOID                   Buffer;
-    PCHAR                   Value;
+    PSTR                    Value;
     ULONG                   Length;
     NTSTATUS                status;
 
diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index dabc830..102e159 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -367,7 +367,7 @@ __FdoSetVendorName(
     ASSERT(NT_SUCCESS(status));
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __FdoGetVendorName(
     _In_ PXENCONS_FDO   Fdo
     )
@@ -375,7 +375,7 @@ __FdoGetVendorName(
     return Fdo->VendorName;
 }
 
-PCHAR
+PSTR
 FdoGetVendorName(
     _In_ PXENCONS_FDO   Fdo
     )
@@ -398,7 +398,7 @@ __FdoSetName(
     ASSERT(NT_SUCCESS(status));
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __FdoGetName(
     _In_ PXENCONS_FDO   Fdo
     )
@@ -408,7 +408,7 @@ __FdoGetName(
     return Dx->Name;
 }
 
-PCHAR
+PSTR
 FdoGetName(
     _In_ PXENCONS_FDO   Fdo
     )
@@ -745,7 +745,7 @@ __FdoEnumerate(
         }
 
         if (PdoGetDevicePnpState(Pdo) != Deleted) {
-            PCHAR           Name;
+            PSTR            Name;
             BOOLEAN         Missing;
 
             Name = PdoGetName(Pdo);
@@ -811,7 +811,7 @@ done:
 
 static FORCEINLINE PANSI_STRING
 __FdoMultiSzToUpcaseAnsi(
-    _In_ PCHAR      Buffer
+    _In_ PSTR       Buffer
     )
 {
     PANSI_STRING    Ansi;
@@ -905,7 +905,7 @@ FdoScan(
     ParametersKey = DriverGetParametersKey();
 
     for (;;) {
-        PCHAR           Buffer;
+        PSTR            Buffer;
         PANSI_STRING    Devices;
         PANSI_STRING    UnsupportedDevices;
         ULONG           Index;
@@ -1009,13 +1009,13 @@ FdoScan(
 static FORCEINLINE BOOLEAN
 __FdoMatchDistribution(
     _In_ PXENCONS_FDO   Fdo,
-    _In_ PCHAR          Buffer
+    _In_ PSTR           Buffer
     )
 {
-    PCHAR               Vendor;
-    PCHAR               Product;
-    PCHAR               Context;
-    const CHAR          *Text;
+    PSTR                Vendor;
+    PSTR                Product;
+    PSTR                Context;
+    PCSTR               Text;
     BOOLEAN             Match;
     ULONG               Index;
     NTSTATUS            status;
@@ -1050,7 +1050,7 @@ __FdoMatchDistribution(
         }
     }
 
-    Text = "XENCONS";
+    Text = "XENBUS";
 
     if (_stricmp(Product, Text) != 0)
         Match = FALSE;
@@ -1071,7 +1071,7 @@ FdoClearDistribution(
     _In_ PXENCONS_FDO   Fdo
     )
 {
-    PCHAR               Buffer;
+    PSTR                Buffer;
     PANSI_STRING        Distributions;
     ULONG               Index;
     NTSTATUS            status;
@@ -1137,14 +1137,14 @@ FdoSetDistribution(
     ULONG               Index;
     CHAR                Distribution[MAXNAMELEN];
     CHAR                Vendor[MAXNAMELEN];
-    const CHAR          *Product;
+    PCSTR               Product;
     NTSTATUS            status;
 
     Trace("====>\n");
 
     Index = 0;
     while (Index <= MAXIMUM_INDEX) {
-        PCHAR   Buffer;
+        PSTR    Buffer;
 
         status = RtlStringCbPrintfA(Distribution,
                                     MAXNAMELEN,
diff --git a/src/xencons/fdo.h b/src/xencons/fdo.h
index 3681d5b..d616e40 100644
--- a/src/xencons/fdo.h
+++ b/src/xencons/fdo.h
@@ -43,12 +43,12 @@
 
 #include "driver.h"
 
-extern PCHAR
+extern PSTR
 FdoGetVendorName(
     _In_ PXENCONS_FDO   Fdo
     );
 
-extern PCHAR
+extern PSTR
 FdoGetName(
     _In_ PXENCONS_FDO   Fdo
     );
diff --git a/src/xencons/frontend.c b/src/xencons/frontend.c
index 384a042..24845c5 100644
--- a/src/xencons/frontend.c
+++ b/src/xencons/frontend.c
@@ -65,17 +65,17 @@ typedef enum _FRONTEND_STATE {
 struct _XENCONS_FRONTEND {
     LONG                        References;
     PXENCONS_PDO                Pdo;
-    PCHAR                       Path;
+    PSTR                        Path;
     FRONTEND_STATE              State;
     KSPIN_LOCK                  Lock;
     PXENCONS_THREAD             EjectThread;
     KEVENT                      EjectEvent;
     BOOLEAN                     Online;
 
-    PCHAR                       BackendPath;
+    PSTR                        BackendPath;
     USHORT                      BackendDomain;
-    PCHAR                       Name;
-    PCHAR                       Protocol;
+    PSTR                        Name;
+    PSTR                        Protocol;
 
     XENBUS_DEBUG_INTERFACE      DebugInterface;
     XENBUS_SUSPEND_INTERFACE    SuspendInterface;
@@ -88,7 +88,7 @@ struct _XENCONS_FRONTEND {
     PXENCONS_RING               Ring;
 };
 
-static const PCHAR
+static PCSTR
 FrontendStateName(
     _In_ FRONTEND_STATE State
     )
@@ -112,7 +112,7 @@ FrontendStateName(
 #undef  _STATE_NAME
 }
 
-static const PCHAR
+static PCSTR
 XenbusStateName(
     _In_ XenbusState    State
     )
@@ -172,7 +172,7 @@ FrontendGetPdo(
     return __FrontendGetPdo(Frontend);
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __FrontendGetPath(
     _In_ PXENCONS_FRONTEND  Frontend
     )
@@ -180,7 +180,7 @@ __FrontendGetPath(
     return Frontend->Path;
 }
 
-PCHAR
+PSTR
 FrontendGetPath(
     _In_ PXENCONS_FRONTEND  Frontend
     )
@@ -188,7 +188,7 @@ FrontendGetPath(
     return __FrontendGetPath(Frontend);
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __FrontendGetBackendPath(
     _In_ PXENCONS_FRONTEND  Frontend
     )
@@ -196,7 +196,7 @@ __FrontendGetBackendPath(
     return Frontend->BackendPath;
 }
 
-PCHAR
+PSTR
 FrontendGetBackendPath(
     _In_ PXENCONS_FRONTEND  Frontend
     )
@@ -233,7 +233,7 @@ FrontendIsBackendOnline(
     _In_ PXENCONS_FRONTEND  Frontend
     )
 {
-    PCHAR                   Buffer;
+    PSTR                    Buffer;
     BOOLEAN                 Online;
     NTSTATUS                status;
 
@@ -315,7 +315,7 @@ FrontendEjectFailed(
 {
     KIRQL                   Irql;
     ULONG                   Length;
-    PCHAR                   Path;
+    PSTR                    Path;
     NTSTATUS                status;
 
     KeAcquireSpinLock(&Frontend->Lock, &Irql);
@@ -453,7 +453,7 @@ FrontendWaitForBackendXenbusStateChange(
     Timeout.QuadPart = 0;
 
     while (*State == Old && TimeDelta < 120000) {
-        PCHAR           Buffer;
+        PSTR            Buffer;
         LARGE_INTEGER   Now;
 
         if (Watch != NULL) {
@@ -515,7 +515,7 @@ FrontendAcquireBackend(
     _In_ PXENCONS_FRONTEND  Frontend
     )
 {
-    PCHAR                   Buffer;
+    PSTR                    Buffer;
     NTSTATUS                status;
 
     Trace("=====>\n");
@@ -735,7 +735,7 @@ FrontendConnect(
 {
     XenbusState             State;
     ULONG                   Attempt;
-    PCHAR                   Buffer;
+    PSTR                    Buffer;
     ULONG                   Length;
     NTSTATUS                status;
 
@@ -1243,7 +1243,7 @@ FrontendGetProperty(
     ULONG                   InputBufferLength;
     ULONG                   OutputBufferLength;
     PVOID                   Buffer;
-    PCHAR                   Value;
+    PSTR                    Value;
     ULONG                   Length;
     NTSTATUS                status;
 
@@ -1493,9 +1493,9 @@ FrontendCreate(
     _Out_ PXENCONS_CONSOLE_ABI_CONTEXT  *Context
     )
 {
-    PCHAR                               Name;
+    PSTR                                Name;
     ULONG                               Length;
-    PCHAR                               Path;
+    PSTR                                Path;
     PXENCONS_FRONTEND                   Frontend;
     NTSTATUS                            status;
 
diff --git a/src/xencons/frontend.h b/src/xencons/frontend.h
index e57d083..416c389 100644
--- a/src/xencons/frontend.h
+++ b/src/xencons/frontend.h
@@ -62,12 +62,12 @@ FrontendGetPdo(
     _In_ PXENCONS_FRONTEND  Frontend
     );
 
-extern PCHAR
+extern PSTR
 FrontendGetPath(
     _In_ PXENCONS_FRONTEND  Frontend
     );
 
-extern PCHAR
+extern PSTR
 FrontendGetBackendPath(
     _In_ PXENCONS_FRONTEND  Frontend
     );
diff --git a/src/xencons/names.h b/src/xencons/names.h
index 84519f3..ef6130d 100644
--- a/src/xencons/names.h
+++ b/src/xencons/names.h
@@ -35,7 +35,7 @@
 
 #include <ntddk.h>
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PowerTypeName(
     _In_ POWER_STATE_TYPE   Type
     )
@@ -55,7 +55,7 @@ PowerTypeName(
 #undef  _POWER_ACTION_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PowerSystemStateName(
     _In_ SYSTEM_POWER_STATE State
     )
@@ -81,7 +81,7 @@ PowerSystemStateName(
 #undef  _POWER_SYSTEM_STATE_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PowerDeviceStateName(
     _In_ DEVICE_POWER_STATE State
     )
@@ -105,7 +105,7 @@ PowerDeviceStateName(
 #undef  _POWER_DEVICE_STATE_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PowerActionName(
     _In_ POWER_ACTION   Type
     )
@@ -131,7 +131,7 @@ PowerActionName(
 #undef  _POWER_ACTION_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PowerMinorFunctionName(
     _In_ ULONG  MinorFunction
     )
@@ -154,7 +154,7 @@ PowerMinorFunctionName(
 #undef  _POWER_MINOR_FUNCTION_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PnpMinorFunctionName(
     _In_ ULONG  Function
     )
@@ -197,7 +197,7 @@ PnpMinorFunctionName(
 #undef  _PNP_MINOR_FUNCTION_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 PartialResourceDescriptorTypeName(
     _In_ UCHAR  Type
     )
@@ -226,7 +226,7 @@ PartialResourceDescriptorTypeName(
 #undef  _PARTIAL_RESOURCE_DESCRIPTOR_TYPE_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 DeviceUsageTypeName(
     _In_ DEVICE_USAGE_NOTIFICATION_TYPE Type
     )
@@ -248,7 +248,7 @@ DeviceUsageTypeName(
 #undef  _DEVICE_USAGE_TYPE_NAME
 }
 
-static FORCEINLINE const CHAR *
+static FORCEINLINE PCSTR
 MajorFunctionName(
     _In_ ULONG  Function
     )
diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index b1d5507..3ddc553 100644
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -69,7 +69,7 @@ struct _XENCONS_PDO {
 
     PXENCONS_FDO                    Fdo;
     BOOLEAN                         Missing;
-    const CHAR                      *Reason;
+    PCSTR                           Reason;
     LONG                   		    Eject;
 
     XENBUS_SUSPEND_INTERFACE    	SuspendInterface;
@@ -195,7 +195,7 @@ __PdoGetDevicePowerState(
 static FORCEINLINE VOID
 __PdoSetMissing(
     _In_ PXENCONS_PDO   Pdo,
-    _In_ const CHAR     *Reason
+    _In_ PCSTR          Reason
     )
 {
     Pdo->Reason = Reason;
@@ -205,7 +205,7 @@ __PdoSetMissing(
 VOID
 PdoSetMissing(
     _In_ PXENCONS_PDO   Pdo,
-    _In_ const CHAR     *Reason
+    _In_ PCSTR          Reason
     )
 {
     __PdoSetMissing(Pdo, Reason);
@@ -282,7 +282,7 @@ __PdoSetName(
     ASSERT(NT_SUCCESS(status));
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __PdoGetName(
     _In_ PXENCONS_PDO   Pdo
     )
@@ -292,7 +292,7 @@ __PdoGetName(
     return Dx->Name;
 }
 
-PCHAR
+PSTR
 PdoGetName(
     _In_ PXENCONS_PDO   Pdo
     )
@@ -300,7 +300,7 @@ PdoGetName(
     return __PdoGetName(Pdo);
 }
 
-static FORCEINLINE PCHAR
+static FORCEINLINE PSTR
 __PdoGetVendorName(
     _In_ PXENCONS_PDO   Pdo
     )
diff --git a/src/xencons/pdo.h b/src/xencons/pdo.h
index 12b334e..db38da5 100644
--- a/src/xencons/pdo.h
+++ b/src/xencons/pdo.h
@@ -55,7 +55,7 @@ PdoGetDevicePnpState(
 extern VOID
 PdoSetMissing(
     _In_ PXENCONS_PDO   Pdo,
-    _In_ const CHAR     *Reason
+    _In_ PCSTR          Reason
     );
 
 extern BOOLEAN
@@ -73,7 +73,7 @@ PdoIsEjectRequested(
     _In_ PXENCONS_PDO   Pdo
     );
 
-extern PCHAR
+extern PSTR
 PdoGetName(
     _In_ PXENCONS_PDO   Pdo
     );
-- 
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 Sep 10 11:23:19 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118146.1464039 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv1-0004u7-1e; Wed, 10 Sep 2025 11:23:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118146.1464039; Wed, 10 Sep 2025 11:23: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 1uwIv0-0004u0-Uh; Wed, 10 Sep 2025 11:23:18 +0000
Received: by outflank-mailman (input) for mailman id 1118146;
 Wed, 10 Sep 2025 11:23:18 +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=NnQb=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-e57a2c87aa234e3382b538613556d3c8@srs-se1.protection.inumbo.net>)
 id 1uwIuz-0004lc-Ie
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:18 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8b96da3a-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:16 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG81z51z2K1vkF
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e57a2c87aa234e3382b538613556d3c8; Wed, 10 Sep 2025 11:23: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: 8b96da3a-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503392; x=1757773392;
	bh=0NE4efDIgdGUO/Jp+UWwaFL8N11Z6tGzQS4agmu/OF8=;
	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=Xk0AKEGTRiJUToYPiq3xTk80hIWHYEKt0WTCY4NtZZXtN9fDJ/ukEwUzLbnSMN87G
	 v+7CP9OS3KyqUDk0YPM9had/OICZ/4OwEDk9MOFUkPg/4Wux1VhN8m5taEYdi7cbjU
	 6Ux7DgPrVJdFqi0rtV42yJJkwto4ttiXujUGorQbcDPOQxfKlDOoJvYzQlCU3X/X/b
	 tZcj7+VL5enum4hD4rTcrSA43l4SgEqvG31iehcb16rgbkoKjj7xFaBNSDnCD0XKmz
	 b9tq3reLHJXYepLG57b+3kJ8bb4SxXp8On7YG3NxS7Xv35PbBsbW8dhudBd3Y/lAki
	 UnQc7pc/u7pOA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503392; x=1757763892; i=ngoc-tu.dinh@vates.tech;
	bh=0NE4efDIgdGUO/Jp+UWwaFL8N11Z6tGzQS4agmu/OF8=;
	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=AKr8/N7pylMTusnGON8Tx1gb187lJi18eiiUxkJb9InynhNaT80nae1uhOogm6x36
	 izB0aX6wjVrLSJgEs/G5hr5RfLryNwViFkuarzsNK2p+IzYz6uNxFMzhgUlI/dwV9A
	 5GL+6RD4+QMw2Lk5KaP70a23SpKTpwOGhS1ZsMsG0arggKqrQaxib1yBZlckTAEdd2
	 EIGzq91A7htI3vBcM2aemwpheGS/HBDYSnUWvh9ZrQbrHCWt1fCTdEiqDzX8b9XjFv
	 7GhQ3Nt5ZUipLTuDwJ3/oRYYMsgzobDZqXOxVFC4hsWVeWV3kw9ub7L/VCYM30G+tE
	 mim9EVDVM3YOA==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2005/11]=20Replace=20old=20annotations=20with=20SAL2=20equivalents?=
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: 1757503391144
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-6-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.e57a2c87aa234e3382b538613556d3c8?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

* Do a mechanical search-and-replace, where IN and OUT are replaced with
  _In_ and _Out_ respectively
* Parameters annotated with OPTIONAL use the _opt_ equivalents
* Replace __drv IRQL annotations with the _IRQL_ ones

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/monitor/monitor.c     | 108 ++++++-------
 src/tty/tty.c             |  46 +++---
 src/xencons/console.c     |  74 ++++-----
 src/xencons/console.h     |  10 +-
 src/xencons/console_abi.h |  20 +--
 src/xencons/driver.c      |  33 ++--
 src/xencons/fdo.c         | 330 +++++++++++++++++++-------------------
 src/xencons/fdo.h         |  34 ++--
 src/xencons/frontend.c    | 118 +++++++-------
 src/xencons/frontend.h    |  18 +--
 src/xencons/mutex.h       |   4 +-
 src/xencons/names.h       |  18 +--
 src/xencons/pdo.c         | 270 +++++++++++++++----------------
 src/xencons/pdo.h         |  38 ++---
 src/xencons/ring.c        | 131 ++++++++-------
 src/xencons/ring.h        |  30 ++--
 src/xencons/stream.c      |  58 ++++---
 src/xencons/stream.h      |  10 +-
 18 files changed, 672 insertions(+), 678 deletions(-)

diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index ec8a638..8f2a6a6 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -111,8 +111,8 @@ static MONITOR_CONTEXT MonitorContext;
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
-    IN  const CHAR      *Format,
-    IN  ...
+    _In_ const CHAR     *Format,
+    _In_ ...
     )
 {
 #if DBG
@@ -126,9 +126,9 @@ __Log(
 
     va_start(Arguments, Format);
     Result = StringCchVPrintfA(Buffer,
-                              MAXIMUM_BUFFER_SIZE,
-                              Format,
-                              Arguments);
+                               MAXIMUM_BUFFER_SIZE,
+                               Format,
+                               Arguments);
     va_end(Arguments);
 
     if (Result != S_OK && Result != STRSAFE_E_INSUFFICIENT_BUFFER)
@@ -140,8 +140,8 @@ __Log(
 
     Length = __min(MAXIMUM_BUFFER_SIZE - 1, Length + 2);
 
-    __analysis_assume(Length < MAXIMUM_BUFFER_SIZE);
-    __analysis_assume(Length >= 2);
+    _Analysis_assume_(Length < MAXIMUM_BUFFER_SIZE);
+    _Analysis_assume_(Length >= 2);
     Buffer[Length] = '\0';
     Buffer[Length - 1] = '\n';
     Buffer[Length - 2] = '\r';
@@ -153,14 +153,14 @@ __Log(
 
     if (Context->EventLog != NULL)
         ReportEventA(Context->EventLog,
-                    EVENTLOG_INFORMATION_TYPE,
-                    0,
-                    MONITOR_LOG,
-                    NULL,
-                    ARRAYSIZE(Strings),
-                    0,
-                    Strings,
-                    NULL);
+                     EVENTLOG_INFORMATION_TYPE,
+                     0,
+                     MONITOR_LOG,
+                     NULL,
+                     ARRAYSIZE(Strings),
+                     0,
+                     Strings,
+                     NULL);
 #endif
 }
 
@@ -169,21 +169,21 @@ __Log(
 
 static PCHAR
 GetErrorMessage(
-    IN  HRESULT Error
+    _In_ HRESULT    Error
     )
 {
-    PCHAR       Message;
-    ULONG       Index;
+    PCHAR           Message;
+    ULONG           Index;
 
     if (!FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
-                       FORMAT_MESSAGE_FROM_SYSTEM |
-                       FORMAT_MESSAGE_IGNORE_INSERTS,
-                       NULL,
-                       Error,
-                       MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-                       (LPSTR)&Message,
-                       0,
-                       NULL))
+                        FORMAT_MESSAGE_FROM_SYSTEM |
+                        FORMAT_MESSAGE_IGNORE_INSERTS,
+                        NULL,
+                        Error,
+                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                        (LPSTR)&Message,
+                        0,
+                        NULL))
         return NULL;
 
     for (Index = 0; Message[Index] != '\0'; Index++) {
@@ -198,7 +198,7 @@ GetErrorMessage(
 
 static const CHAR *
 ServiceStateName(
-    IN  DWORD   State
+    _In_ DWORD  State
     )
 {
 #define _STATE_NAME(_State) \
@@ -221,9 +221,9 @@ ServiceStateName(
 
 static VOID
 ReportStatus(
-    IN  DWORD           CurrentState,
-    IN  DWORD           Win32ExitCode,
-    IN  DWORD           WaitHint
+    _In_ DWORD          CurrentState,
+    _In_ DWORD          Win32ExitCode,
+    _In_ DWORD          WaitHint
     )
 {
     PMONITOR_CONTEXT    Context = &MonitorContext;
@@ -272,7 +272,7 @@ fail1:
 
 static FORCEINLINE VOID
 __InitializeListHead(
-    IN  PLIST_ENTRY ListEntry
+    _In_ PLIST_ENTRY    ListEntry
     )
 {
     ListEntry->Flink = ListEntry;
@@ -281,8 +281,8 @@ __InitializeListHead(
 
 static FORCEINLINE VOID
 __InsertTailList(
-    IN  PLIST_ENTRY ListHead,
-    IN  PLIST_ENTRY ListEntry
+    _In_ PLIST_ENTRY    ListHead,
+    _In_ PLIST_ENTRY    ListEntry
     )
 {
     ListEntry->Blink = ListHead->Blink;
@@ -293,11 +293,11 @@ __InsertTailList(
 
 static FORCEINLINE VOID
 __RemoveEntryList(
-    IN  PLIST_ENTRY ListEntry
+    _In_ PLIST_ENTRY    ListEntry
     )
 {
-    PLIST_ENTRY     Flink;
-    PLIST_ENTRY     Blink;
+    PLIST_ENTRY         Flink;
+    PLIST_ENTRY         Blink;
 
     Flink = ListEntry->Flink;
     Blink = ListEntry->Blink;
@@ -310,9 +310,9 @@ __RemoveEntryList(
 
 static VOID
 PutString(
-    IN  HANDLE      Handle,
-    IN  PUCHAR      Buffer,
-    IN  DWORD       Length
+    _In_ HANDLE     Handle,
+    _In_ PUCHAR     Buffer,
+    _In_ DWORD      Length
     )
 {
     DWORD           Offset;
@@ -339,7 +339,7 @@ PutString(
 
 DWORD WINAPI
 ConnectionThread(
-    IN  LPVOID          Argument
+    _In_ LPVOID         Argument
     )
 {
     PMONITOR_CONNECTION Connection = (PMONITOR_CONNECTION)Argument;
@@ -428,7 +428,7 @@ fail1:
 
 DWORD WINAPI
 ServerThread(
-    IN  LPVOID          Argument
+    _In_ LPVOID         Argument
     )
 {
     PMONITOR_CONSOLE    Console = (PMONITOR_CONSOLE)Argument;
@@ -562,7 +562,7 @@ fail1:
 
 DWORD WINAPI
 DeviceThread(
-    IN  LPVOID          Argument
+    _In_ LPVOID         Argument
     )
 {
     PMONITOR_CONSOLE    Console = (PMONITOR_CONSOLE)Argument;
@@ -668,8 +668,8 @@ fail1:
 
 static BOOL
 GetExecutable(
-    IN  PCHAR           DeviceName,
-    OUT PCHAR           *Executable
+    _In_ PCHAR          DeviceName,
+    _Out_ PCHAR         *Executable
     )
 {
     PMONITOR_CONTEXT    Context = &MonitorContext;
@@ -765,7 +765,7 @@ fail1:
 
 DWORD WINAPI
 ExecutableThread(
-    IN  LPVOID          Argument
+    _In_ LPVOID         Argument
     )
 {
     PMONITOR_CONSOLE    Console = (PMONITOR_CONSOLE)Argument;
@@ -862,7 +862,7 @@ fail1:
 
 static PMONITOR_CONSOLE
 ConsoleCreate(
-    IN  PWCHAR              DevicePath
+    _In_ PWCHAR             DevicePath
     )
 {
     PMONITOR_CONTEXT        Context = &MonitorContext;
@@ -1064,7 +1064,7 @@ fail1:
 
 static FORCEINLINE VOID
 ConsoleWaitForPipes(
-    IN  PMONITOR_CONSOLE    Console
+    _In_ PMONITOR_CONSOLE   Console
     )
 {
     PLIST_ENTRY             ListEntry;
@@ -1112,7 +1112,7 @@ fail1:
 
 static VOID
 ConsoleDestroy(
-    IN  PMONITOR_CONSOLE    Console
+    _In_ PMONITOR_CONSOLE   Console
     )
 {
     Log("====> %s", Console->DeviceName);
@@ -1159,7 +1159,7 @@ ConsoleDestroy(
 
 static BOOL
 MonitorAdd(
-    IN  PWCHAR          DevicePath
+    _In_ PWCHAR         DevicePath
     )
 {
     PMONITOR_CONTEXT    Context = &MonitorContext;
@@ -1188,7 +1188,7 @@ fail1:
 
 static BOOL
 MonitorRemove(
-    IN  HANDLE          DeviceHandle
+    _In_ HANDLE         DeviceHandle
     )
 {
     PMONITOR_CONTEXT    Context = &MonitorContext;
@@ -1372,10 +1372,10 @@ MonitorRemoveAll(
 
 DWORD WINAPI
 MonitorCtrlHandlerEx(
-    IN  DWORD           Ctrl,
-    IN  DWORD           EventType,
-    IN  LPVOID          EventData,
-    IN  LPVOID          Argument
+    _In_ DWORD          Ctrl,
+    _In_ DWORD          EventType,
+    _In_ LPVOID         EventData,
+    _In_ LPVOID         Argument
     )
 {
     PMONITOR_CONTEXT    Context = &MonitorContext;
diff --git a/src/tty/tty.c b/src/tty/tty.c
index 08d3724..40d508a 100644
--- a/src/tty/tty.c
+++ b/src/tty/tty.c
@@ -62,8 +62,8 @@ TTY_CONTEXT TtyContext;
 static VOID
 #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
 __Log(
-    IN  const CHAR      *Format,
-    IN  ...
+    _In_ const CHAR     *Format,
+    _In_ ...
     )
 {
     CHAR                Buffer[MAXIMUM_BUFFER_SIZE];
@@ -87,8 +87,8 @@ __Log(
 
     Length = __min(MAXIMUM_BUFFER_SIZE - 1, Length + 2);
 
-    __analysis_assume(Length < MAXIMUM_BUFFER_SIZE);
-    __analysis_assume(Length >= 2);
+    _Analysis_assume_(Length < MAXIMUM_BUFFER_SIZE);
+    _Analysis_assume_(Length >= 2);
     Buffer[Length] = '\0';
     Buffer[Length - 1] = '\n';
     Buffer[Length - 2] = '\r';
@@ -173,8 +173,8 @@ CreateChild(
 
 static VOID
 PutCharacter(
-    IN  PTTY_STREAM Stream,
-    IN  TCHAR       Character
+    _In_ PTTY_STREAM    Stream,
+    _In_ TCHAR          Character
     )
 {
     WriteFile(Stream->Write,
@@ -186,12 +186,12 @@ PutCharacter(
 
 static VOID
 PutString(
-    IN  PTTY_STREAM Stream,
-    IN  PTCHAR      Buffer,
-    IN  DWORD       Length
+    _In_ PTTY_STREAM    Stream,
+    _In_ PTCHAR         Buffer,
+    _In_ DWORD          Length
     )
 {
-    DWORD           Offset;
+    DWORD               Offset;
 
     Offset = 0;
     while (Offset < Length) {
@@ -215,15 +215,15 @@ PutString(
 
 static BOOL
 GetLine(
-    IN  PTTY_STREAM Stream,
-    IN  PTCHAR      Buffer,
-    IN  DWORD       NumberOfBytesToRead,
-    OUT LPDWORD     NumberOfBytesRead,
-    IN  BOOL        NoEcho
+    _In_ PTTY_STREAM    Stream,
+    _In_ PTCHAR         Buffer,
+    _In_ DWORD          NumberOfBytesToRead,
+    _Out_ LPDWORD       NumberOfBytesRead,
+    _In_ BOOL           NoEcho
     )
 {
-    DWORD           Offset;
-    BOOL            Success = TRUE;
+    DWORD               Offset;
+    BOOL                Success = TRUE;
 
     Offset = 0;
     while (Offset < NumberOfBytesToRead) {
@@ -290,8 +290,8 @@ GetLine(
 
 static BOOL
 GetCredentials(
-    IN  PTCHAR      Password,
-    IN  DWORD       PasswordSize
+    _In_ PTCHAR     Password,
+    _In_ DWORD      PasswordSize
     )
 {
     PTTY_CONTEXT    Context = &TtyContext;
@@ -420,7 +420,7 @@ RequestElevation(
 
 static DWORD WINAPI
 TtyIn(
-    IN  LPVOID      Argument
+    _In_ LPVOID     Argument
     )
 {
     PTTY_CONTEXT    Context = &TtyContext;
@@ -468,7 +468,7 @@ TtyIn(
 
 static DWORD WINAPI
 TtyOut(
-    IN  LPVOID      Argument
+    _In_ LPVOID     Argument
     )
 {
     PTTY_CONTEXT    Context = &TtyContext;
@@ -510,8 +510,8 @@ TtyOut(
 
 void __cdecl
 _tmain(
-    IN  int             argc,
-    IN  TCHAR           *argv[]
+    _In_ int            argc,
+    _In_ TCHAR          *argv[]
     )
 {
     PTTY_CONTEXT        Context = &TtyContext;
diff --git a/src/xencons/console.c b/src/xencons/console.c
index 72421ce..0dd1825 100644
--- a/src/xencons/console.c
+++ b/src/xencons/console.c
@@ -64,7 +64,7 @@ typedef struct _XENCONS_CONSOLE {
 
 static FORCEINLINE PVOID
 __ConsoleAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, CONSOLE_POOL);
@@ -72,7 +72,7 @@ __ConsoleAllocate(
 
 static FORCEINLINE VOID
 __ConsoleFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, CONSOLE_POOL);
@@ -80,8 +80,8 @@ __ConsoleFree(
 
 static FORCEINLINE NTSTATUS
 __ConsoleCreateHandle(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PFILE_OBJECT        FileObject,
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PFILE_OBJECT       FileObject,
     OUT PCONSOLE_HANDLE     *Handle
     )
 {
@@ -115,8 +115,8 @@ fail1:
 
 static FORCEINLINE VOID
 __ConsoleDestroyHandle(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PCONSOLE_HANDLE     Handle
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PCONSOLE_HANDLE    Handle
     )
 {
     UNREFERENCED_PARAMETER(Console);
@@ -134,8 +134,8 @@ __ConsoleDestroyHandle(
 
 static PCONSOLE_HANDLE
 __ConsoleFindHandle(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PFILE_OBJECT        FileObject
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PFILE_OBJECT       FileObject
     )
 {
     KIRQL                   Irql;
@@ -174,8 +174,8 @@ fail1:
 
 static NTSTATUS
 ConsoleOpen(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PFILE_OBJECT        FileObject
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PFILE_OBJECT       FileObject
     )
 {
     PCONSOLE_HANDLE         Handle;
@@ -202,8 +202,8 @@ fail1:
 
 static NTSTATUS
 ConsoleClose(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PFILE_OBJECT        FileObject
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PFILE_OBJECT       FileObject
     )
 {
     PCONSOLE_HANDLE         Handle;
@@ -234,8 +234,8 @@ fail1:
 
 static FORCEINLINE NTSTATUS
 __ConsoleReadWrite(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PIRP                Irp
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -267,8 +267,8 @@ fail1:
 
 static FORCEINLINE NTSTATUS
 __ConsoleDeviceControl(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PIRP                Irp
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -347,8 +347,8 @@ fail1:
 
 static NTSTATUS
 ConsolePutQueue(
-    IN  PXENCONS_CONSOLE    Console,
-    IN  PIRP                Irp
+    _In_ PXENCONS_CONSOLE   Console,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -377,9 +377,9 @@ ConsolePutQueue(
 
 static NTSTATUS
 ConsoleD3ToD0(
-    IN  PXENCONS_CONSOLE    Console
+    _In_ PXENCONS_CONSOLE   Console
     )
-{ 
+{
     Trace("====>\n");
 
     UNREFERENCED_PARAMETER(Console);
@@ -391,7 +391,7 @@ ConsoleD3ToD0(
 
 static VOID
 ConsoleD0ToD3(
-    IN  PXENCONS_CONSOLE    Console
+    _In_ PXENCONS_CONSOLE   Console
     )
 {
     KIRQL                   Irql;
@@ -430,7 +430,7 @@ ConsoleD0ToD3(
 
 static NTSTATUS
 ConsoleAbiAcquire(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -451,7 +451,7 @@ ConsoleAbiAcquire(
 
 static VOID
 ConsoleAbiRelease(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -471,7 +471,7 @@ ConsoleAbiRelease(
 
 static NTSTATUS
 ConsoleAbiD3ToD0(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -481,7 +481,7 @@ ConsoleAbiD3ToD0(
 
 static VOID
 ConsoleAbiD0ToD3(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -491,8 +491,8 @@ ConsoleAbiD0ToD3(
 
 static NTSTATUS
 ConsoleAbiOpen(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -502,8 +502,8 @@ ConsoleAbiOpen(
 
 static NTSTATUS
 ConsoleAbiClose(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -513,8 +513,8 @@ ConsoleAbiClose(
 
 static NTSTATUS
 ConsoleAbiPutQueue(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PIRP                            Irp
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PIRP                           Irp
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
@@ -535,8 +535,8 @@ static XENCONS_CONSOLE_ABI ConsoleAbi = {
 
 NTSTATUS
 ConsoleCreate(
-    IN  PXENCONS_FDO                    Fdo,
-    OUT PXENCONS_CONSOLE_ABI_CONTEXT    *Context
+    _In_ PXENCONS_FDO                   Fdo,
+    _Out_ PXENCONS_CONSOLE_ABI_CONTEXT  *Context
     )
 {
     PXENCONS_CONSOLE                    Console;
@@ -569,8 +569,8 @@ fail1:
 
 VOID
 ConsoleGetAbi(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    OUT PXENCONS_CONSOLE_ABI            Abi
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _Out_ PXENCONS_CONSOLE_ABI          Abi
     )
 {
     *Abi = ConsoleAbi;
@@ -580,11 +580,11 @@ ConsoleGetAbi(
 
 VOID
 ConsoleDestroy(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_CONSOLE                    Console = (PXENCONS_CONSOLE)Context;
-    
+
     Trace("====>\n");
 
     ASSERT(IsListEmpty(&Console->List));
diff --git a/src/xencons/console.h b/src/xencons/console.h
index 50c40d3..3fdede4 100644
--- a/src/xencons/console.h
+++ b/src/xencons/console.h
@@ -40,19 +40,19 @@
 
 extern NTSTATUS
 ConsoleCreate(
-    IN  PXENCONS_FDO                    Fdo,
-    OUT PXENCONS_CONSOLE_ABI_CONTEXT    *Context
+    _In_ PXENCONS_FDO                   Fdo,
+    _Out_ PXENCONS_CONSOLE_ABI_CONTEXT  *Context
     );
 
 VOID
 ConsoleGetAbi(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    OUT PXENCONS_CONSOLE_ABI            Abi
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _Out_ PXENCONS_CONSOLE_ABI          Abi
     );
 
 VOID
 ConsoleDestroy(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 #endif  // _XENCONS_CONSOLE_H
diff --git a/src/xencons/console_abi.h b/src/xencons/console_abi.h
index 68da268..1fd4f8f 100644
--- a/src/xencons/console_abi.h
+++ b/src/xencons/console_abi.h
@@ -41,40 +41,40 @@ typedef PVOID *PXENCONS_CONSOLE_ABI_CONTEXT;
 
 typedef NTSTATUS
 (*XENCONS_CONSOLE_ABI_ACQUIRE)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 typedef VOID
 (*XENCONS_CONSOLE_ABI_RELEASE)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 typedef NTSTATUS
 (*XENCONS_CONSOLE_ABI_D3TOD0)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 typedef VOID
 (*XENCONS_CONSOLE_ABI_D0TOD3)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 typedef NTSTATUS
 (*XENCONS_CONSOLE_ABI_OPEN)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     );
 
 typedef NTSTATUS
 (*XENCONS_CONSOLE_ABI_CLOSE)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     );
 
 typedef NTSTATUS
 (*XENCONS_CONSOLE_ABI_PUT_QUEUE)(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PIRP                            Irp
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PIRP                           Irp
     );
 
 typedef struct _XENCONS_CONSOLE_ABI {
diff --git a/src/xencons/driver.c b/src/xencons/driver.c
index 01836ee..ba6a575 100644
--- a/src/xencons/driver.c
+++ b/src/xencons/driver.c
@@ -70,7 +70,7 @@ DriverSafeMode(
 
 static FORCEINLINE VOID
 __DriverSetDriverObject(
-    IN  PDRIVER_OBJECT  DriverObject
+    _In_opt_ PDRIVER_OBJECT DriverObject
     )
 {
     Driver.DriverObject = DriverObject;
@@ -94,7 +94,7 @@ DriverGetDriverObject(
 
 static FORCEINLINE VOID
 __DriverSetParametersKey(
-    IN  HANDLE  Key
+    _In_opt_ HANDLE Key
     )
 {
     Driver.ParametersKey = Key;
@@ -120,7 +120,7 @@ DRIVER_UNLOAD       DriverUnload;
 
 VOID
 DriverUnload(
-    IN  PDRIVER_OBJECT  DriverObject
+    _In_ PDRIVER_OBJECT DriverObject
     )
 {
     HANDLE              ParametersKey;
@@ -156,8 +156,8 @@ DRIVER_ADD_DEVICE   AddDevice;
 
 NTSTATUS
 AddDevice(
-    IN  PDRIVER_OBJECT  DriverObject,
-    IN  PDEVICE_OBJECT  DeviceObject
+    _In_ PDRIVER_OBJECT DriverObject,
+    _In_ PDEVICE_OBJECT DeviceObject
     )
 {
     NTSTATUS            status;
@@ -180,15 +180,16 @@ fail1:
     return status;
 }
 
-DRIVER_DISPATCH Dispatch;
-
+_Function_class_(DRIVER_DISPATCH)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_same_
 NTSTATUS
 Dispatch(
-    IN PDEVICE_OBJECT   DeviceObject,
-    IN PIRP             Irp
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _Inout_ PIRP        Irp
     )
 {
-    PXENCONS_DX          Dx;
+    PXENCONS_DX         Dx;
     NTSTATUS            status;
 
     Dx = (PXENCONS_DX)DeviceObject->DeviceExtension;
@@ -242,14 +243,14 @@ DRIVER_INITIALIZE   DriverEntry;
 
 NTSTATUS
 DriverEntry(
-    IN  PDRIVER_OBJECT  DriverObject,
-    IN  PUNICODE_STRING RegistryPath
+    _In_ PDRIVER_OBJECT     DriverObject,
+    _In_ PUNICODE_STRING    RegistryPath
     )
 {
-    HANDLE              ServiceKey;
-    HANDLE              ParametersKey;
-    ULONG               Index;
-    NTSTATUS            status;
+    HANDLE                  ServiceKey;
+    HANDLE                  ParametersKey;
+    ULONG                   Index;
+    NTSTATUS                status;
 
     ASSERT3P(__DriverGetDriverObject(), ==, NULL);
 
diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index 4aa99e4..dabc830 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -108,7 +108,7 @@ struct _XENCONS_FDO {
 
 static FORCEINLINE PVOID
 __FdoAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, FDO_POOL);
@@ -116,7 +116,7 @@ __FdoAllocate(
 
 static FORCEINLINE VOID
 __FdoFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, FDO_POOL);
@@ -124,8 +124,8 @@ __FdoFree(
 
 static FORCEINLINE VOID
 __FdoSetDevicePnpState(
-    IN  PXENCONS_FDO        Fdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ DEVICE_PNP_STATE   State
     )
 {
     PXENCONS_DX             Dx = Fdo->Dx;
@@ -139,8 +139,8 @@ __FdoSetDevicePnpState(
 
 static FORCEINLINE VOID
 __FdoRestoreDevicePnpState(
-    IN  PXENCONS_FDO        Fdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ DEVICE_PNP_STATE   State
     )
 {
     PXENCONS_DX             Dx = Fdo->Dx;
@@ -151,7 +151,7 @@ __FdoRestoreDevicePnpState(
 
 static FORCEINLINE DEVICE_PNP_STATE
 __FdoGetDevicePnpState(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
@@ -161,7 +161,7 @@ __FdoGetDevicePnpState(
 
 static FORCEINLINE DEVICE_PNP_STATE
 __FdoGetPreviousDevicePnpState(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
@@ -171,8 +171,8 @@ __FdoGetPreviousDevicePnpState(
 
 static FORCEINLINE VOID
 __FdoSetDevicePowerState(
-    IN  PXENCONS_FDO        Fdo,
-    IN  DEVICE_POWER_STATE  State
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ DEVICE_POWER_STATE State
     )
 {
     PXENCONS_DX             Dx = Fdo->Dx;
@@ -182,7 +182,7 @@ __FdoSetDevicePowerState(
 
 static FORCEINLINE DEVICE_POWER_STATE
 __FdoGetDevicePowerState(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
@@ -192,8 +192,8 @@ __FdoGetDevicePowerState(
 
 static FORCEINLINE VOID
 __FdoSetSystemPowerState(
-    IN  PXENCONS_FDO        Fdo,
-    IN  SYSTEM_POWER_STATE  State
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ SYSTEM_POWER_STATE State
     )
 {
     PXENCONS_DX             Dx = Fdo->Dx;
@@ -203,7 +203,7 @@ __FdoSetSystemPowerState(
 
 static FORCEINLINE SYSTEM_POWER_STATE
 __FdoGetSystemPowerState(
-    IN  PXENCONS_FDO     Fdo
+    _In_ PXENCONS_FDO    Fdo
     )
 {
     PXENCONS_DX          Dx = Fdo->Dx;
@@ -213,7 +213,7 @@ __FdoGetSystemPowerState(
 
 static FORCEINLINE PDEVICE_OBJECT
 __FdoGetPhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     return Fdo->PhysicalDeviceObject;
@@ -221,16 +221,16 @@ __FdoGetPhysicalDeviceObject(
 
 PDEVICE_OBJECT
 FdoGetPhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     return __FdoGetPhysicalDeviceObject(Fdo);
 }
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 static FORCEINLINE NTSTATUS
 __FdoAcquireLowerBusInterface(
-    IN  PXENCONS_FDO        Fdo
+    _In_ PXENCONS_FDO       Fdo
     )
 {
     PBUS_INTERFACE_STANDARD BusInterface;
@@ -313,7 +313,7 @@ fail1:
 
 static FORCEINLINE VOID
 __FdoReleaseLowerBusInterface(
-    IN  PXENCONS_FDO         Fdo
+    _In_ PXENCONS_FDO        Fdo
     )
 {
     PBUS_INTERFACE_STANDARD BusInterface;
@@ -332,11 +332,11 @@ __FdoReleaseLowerBusInterface(
 
 ULONG
 FdoGetBusData(
-    IN  PXENCONS_FDO        Fdo,
-    IN  ULONG               DataType,
-    IN  PVOID               Buffer,
-    IN  ULONG               Offset,
-    IN  ULONG               Length
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ ULONG              DataType,
+    _In_ PVOID              Buffer,
+    _In_ ULONG              Offset,
+    _In_ ULONG              Length
     )
 {
     PBUS_INTERFACE_STANDARD BusInterface;
@@ -353,8 +353,8 @@ FdoGetBusData(
 
 static FORCEINLINE VOID
 __FdoSetVendorName(
-    IN  PXENCONS_FDO    Fdo,
-    IN  USHORT          DeviceID
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ USHORT         DeviceID
     )
 {
     NTSTATUS            status;
@@ -369,7 +369,7 @@ __FdoSetVendorName(
 
 static FORCEINLINE PCHAR
 __FdoGetVendorName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     return Fdo->VendorName;
@@ -377,7 +377,7 @@ __FdoGetVendorName(
 
 PCHAR
 FdoGetVendorName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     return __FdoGetVendorName(Fdo);
@@ -385,7 +385,7 @@ FdoGetVendorName(
 
 static FORCEINLINE VOID
 __FdoSetName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
@@ -400,7 +400,7 @@ __FdoSetName(
 
 static FORCEINLINE PCHAR
 __FdoGetName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
@@ -410,19 +410,19 @@ __FdoGetName(
 
 PCHAR
 FdoGetName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     return __FdoGetName(Fdo);
 }
 
-__drv_functionClass(IO_COMPLETION_ROUTINE)
-__drv_sameIRQL
+_Function_class_(IO_COMPLETION_ROUTINE)
+_IRQL_requires_same_
 static NTSTATUS
 __FdoDelegateIrp(
-    IN  PDEVICE_OBJECT  DeviceObject,
-    IN  PIRP            Irp,
-    IN  PVOID           Context
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _In_ PIRP           Irp,
+    _In_ PVOID          Context
     )
 {
     PKEVENT             Event = Context;
@@ -437,8 +437,8 @@ __FdoDelegateIrp(
 
 NTSTATUS
 FdoDelegateIrp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PDEVICE_OBJECT      DeviceObject;
@@ -501,13 +501,13 @@ done:
     return status;
 }
 
-__drv_functionClass(IO_COMPLETION_ROUTINE)
-__drv_sameIRQL
+_Function_class_(IO_COMPLETION_ROUTINE)
+_IRQL_requires_same_
 static NTSTATUS
 __FdoForwardIrpSynchronously(
-    IN  PDEVICE_OBJECT  DeviceObject,
-    IN  PIRP            Irp,
-    IN  PVOID           Context
+    _In_ PDEVICE_OBJECT DeviceObject,
+    _In_ PIRP           Irp,
+    _In_ PVOID          Context
     )
 {
     PKEVENT             Event = Context;
@@ -522,8 +522,8 @@ __FdoForwardIrpSynchronously(
 
 static NTSTATUS
 FdoForwardIrpSynchronously(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     KEVENT              Event;
@@ -560,9 +560,9 @@ FdoForwardIrpSynchronously(
 
 static DECLSPEC_NOINLINE VOID
 FdoParseResources(
-    IN  PXENCONS_FDO            Fdo,
-    IN  PCM_RESOURCE_LIST       RawResourceList,
-    IN  PCM_RESOURCE_LIST       TranslatedResourceList
+    _In_ PXENCONS_FDO           Fdo,
+    _In_ PCM_RESOURCE_LIST      RawResourceList,
+    _In_ PCM_RESOURCE_LIST      TranslatedResourceList
     )
 {
     PCM_PARTIAL_RESOURCE_LIST   RawPartialList;
@@ -607,8 +607,8 @@ FdoParseResources(
 
 NTSTATUS
 FdoAddPhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PDEVICE_OBJECT      DeviceObject;
@@ -641,8 +641,8 @@ fail1:
 
 VOID
 FdoRemovePhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PDEVICE_OBJECT      DeviceObject;
@@ -668,7 +668,7 @@ done:
 
 static FORCEINLINE VOID
 __FdoAcquireMutex(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     AcquireMutex(&Fdo->Mutex);
@@ -676,7 +676,7 @@ __FdoAcquireMutex(
 
 VOID
 FdoAcquireMutex(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     __FdoAcquireMutex(Fdo);
@@ -684,7 +684,7 @@ FdoAcquireMutex(
 
 static FORCEINLINE VOID
 __FdoReleaseMutex(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     ReleaseMutex(&Fdo->Mutex);
@@ -692,7 +692,7 @@ __FdoReleaseMutex(
 
 VOID
 FdoReleaseMutex(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     __FdoReleaseMutex(Fdo);
@@ -703,8 +703,8 @@ FdoReleaseMutex(
 
 static FORCEINLINE BOOLEAN
 __FdoEnumerate(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PANSI_STRING    Devices
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PANSI_STRING   Devices
     )
 {
     BOOLEAN             NeedInvalidate;
@@ -811,7 +811,7 @@ done:
 
 static FORCEINLINE PANSI_STRING
 __FdoMultiSzToUpcaseAnsi(
-    IN  PCHAR       Buffer
+    _In_ PCHAR      Buffer
     )
 {
     PANSI_STRING    Ansi;
@@ -876,7 +876,7 @@ fail1:
 
 static FORCEINLINE VOID
 __FdoFreeAnsi(
-    IN  PANSI_STRING    Ansi
+    _In_ PANSI_STRING   Ansi
     )
 {
     ULONG               Index;
@@ -1008,8 +1008,8 @@ FdoScan(
 
 static FORCEINLINE BOOLEAN
 __FdoMatchDistribution(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PCHAR           Buffer
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PCHAR          Buffer
     )
 {
     PCHAR               Vendor;
@@ -1068,7 +1068,7 @@ fail1:
 
 static VOID
 FdoClearDistribution(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PCHAR               Buffer;
@@ -1131,7 +1131,7 @@ done:
 
 static NTSTATUS
 FdoSetDistribution(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     ULONG               Index;
@@ -1225,7 +1225,7 @@ fail1:
 
 static FORCEINLINE NTSTATUS
 __FdoD3ToD0(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     NTSTATUS            status;
@@ -1265,7 +1265,7 @@ fail1:
 
 static FORCEINLINE VOID
 __FdoD0ToD3(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     Trace("====>\n");
@@ -1290,14 +1290,14 @@ __FdoD0ToD3(
 
 static DECLSPEC_NOINLINE VOID
 FdoSuspendCallbackLate(
-    IN  PVOID       Argument
+    _In_ PVOID      Argument
     )
 {
     PXENCONS_FDO    Fdo = Argument;
     NTSTATUS        status;
 
     __FdoD0ToD3(Fdo);
-    
+
     status = __FdoD3ToD0(Fdo);
     ASSERT(NT_SUCCESS(status));
 }
@@ -1305,7 +1305,7 @@ FdoSuspendCallbackLate(
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE NTSTATUS
 FdoD3ToD0(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     POWER_STATE         PowerState;
@@ -1396,7 +1396,7 @@ fail1:
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 FdoD0ToD3(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     POWER_STATE         PowerState;
@@ -1455,7 +1455,7 @@ FdoD0ToD3(
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 FdoS4ToS3(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
@@ -1467,7 +1467,7 @@ FdoS4ToS3(
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 FdoS3ToS4(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
@@ -1478,8 +1478,8 @@ FdoS3ToS4(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoStartDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1536,8 +1536,8 @@ fail1:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoQueryStopDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1553,8 +1553,8 @@ FdoQueryStopDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoCancelStopDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1571,8 +1571,8 @@ FdoCancelStopDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoStopDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1599,8 +1599,8 @@ FdoStopDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoQueryRemoveDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1616,8 +1616,8 @@ FdoQueryRemoveDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoCancelRemoveDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1634,8 +1634,8 @@ FdoCancelRemoveDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoSurpriseRemoval(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PLIST_ENTRY         ListEntry;
@@ -1669,8 +1669,8 @@ FdoSurpriseRemoval(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoRemoveDevice(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PLIST_ENTRY         ListEntry;
@@ -1750,8 +1750,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoQueryDeviceRelations(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1876,8 +1876,8 @@ fail1:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoQueryCapabilities(
-    IN  PXENCONS_FDO        Fdo,
-    IN  PIRP                Irp
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -1916,8 +1916,8 @@ fail1:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDeviceUsageNotification(
-    IN  PXENCONS_FDO                Fdo,
-    IN  PIRP                        Irp
+    _In_ PXENCONS_FDO               Fdo,
+    _In_ PIRP                       Irp
     )
 {
     PIO_STACK_LOCATION              StackLocation;
@@ -1976,8 +1976,8 @@ fail1:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoQueryPnpDeviceState(
-    IN  PXENCONS_FDO                Fdo,
-    IN  PIRP                        Irp
+    _In_ PXENCONS_FDO               Fdo,
+    _In_ PIRP                       Irp
     )
 {
     ULONG_PTR                       State;
@@ -2007,8 +2007,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchPnp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2087,8 +2087,8 @@ FdoDispatchPnp(
 
 static FORCEINLINE NTSTATUS
 __FdoSetDevicePowerUp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2125,8 +2125,8 @@ done:
 
 static FORCEINLINE NTSTATUS
 __FdoSetDevicePowerDown(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2156,8 +2156,8 @@ __FdoSetDevicePowerDown(
 
 static FORCEINLINE NTSTATUS
 __FdoSetDevicePower(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2194,15 +2194,15 @@ done:
     return status;
 }
 
-__drv_functionClass(REQUEST_POWER_COMPLETE)
-__drv_sameIRQL
+_Function_class_(REQUEST_POWER_COMPLETE)
+_IRQL_requires_same_
 VOID
 __FdoRequestSetDevicePower(
-    IN  PDEVICE_OBJECT      DeviceObject,
-    IN  UCHAR               MinorFunction,
-    IN  POWER_STATE         PowerState,
-    IN  PVOID               Context,
-    IN  PIO_STATUS_BLOCK    IoStatus
+    _In_ PDEVICE_OBJECT     DeviceObject,
+    _In_ UCHAR              MinorFunction,
+    _In_ POWER_STATE        PowerState,
+    _In_ PVOID              Context,
+    _In_ PIO_STATUS_BLOCK   IoStatus
     )
 {
     PKEVENT                 Event = Context;
@@ -2218,8 +2218,8 @@ __FdoRequestSetDevicePower(
 
 static VOID
 FdoRequestSetDevicePower(
-    IN  PXENCONS_FDO        Fdo,
-    IN  DEVICE_POWER_STATE  DeviceState
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ DEVICE_POWER_STATE DeviceState
     )
 {
     POWER_STATE             PowerState;
@@ -2250,8 +2250,8 @@ FdoRequestSetDevicePower(
 
 static FORCEINLINE NTSTATUS
 __FdoSetSystemPowerUp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
 
@@ -2294,8 +2294,8 @@ done:
 
 static FORCEINLINE NTSTATUS
 __FdoSetSystemPowerDown(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2333,8 +2333,8 @@ __FdoSetSystemPowerDown(
 
 static FORCEINLINE NTSTATUS
 __FdoSetSystemPower(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2373,8 +2373,8 @@ done:
 
 static FORCEINLINE NTSTATUS
 __FdoQueryDevicePowerUp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2396,8 +2396,8 @@ __FdoQueryDevicePowerUp(
 
 static FORCEINLINE NTSTATUS
 __FdoQueryDevicePowerDown(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2417,8 +2417,8 @@ __FdoQueryDevicePowerDown(
 
 static FORCEINLINE NTSTATUS
 __FdoQueryDevicePower(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2455,15 +2455,15 @@ done:
     return status;
 }
 
-__drv_functionClass(REQUEST_POWER_COMPLETE)
-__drv_sameIRQL
+_Function_class_(REQUEST_POWER_COMPLETE)
+_IRQL_requires_same_
 VOID
 __FdoRequestQueryDevicePower(
-    IN  PDEVICE_OBJECT      DeviceObject,
-    IN  UCHAR               MinorFunction,
-    IN  POWER_STATE         PowerState,
-    IN  PVOID               Context,
-    IN  PIO_STATUS_BLOCK    IoStatus
+    _In_ PDEVICE_OBJECT     DeviceObject,
+    _In_ UCHAR              MinorFunction,
+    _In_ POWER_STATE        PowerState,
+    _In_ PVOID              Context,
+    _In_ PIO_STATUS_BLOCK   IoStatus
     )
 {
     PKEVENT                 Event = Context;
@@ -2479,8 +2479,8 @@ __FdoRequestQueryDevicePower(
 
 static VOID
 FdoRequestQueryDevicePower(
-    IN  PXENCONS_FDO        Fdo,
-    IN  DEVICE_POWER_STATE  DeviceState
+    _In_ PXENCONS_FDO       Fdo,
+    _In_ DEVICE_POWER_STATE DeviceState
     )
 {
     POWER_STATE             PowerState;
@@ -2511,8 +2511,8 @@ FdoRequestQueryDevicePower(
 
 static FORCEINLINE NTSTATUS
 __FdoQuerySystemPowerUp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
 
@@ -2543,8 +2543,8 @@ done:
 
 static FORCEINLINE NTSTATUS
 __FdoQuerySystemPowerDown(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2569,8 +2569,8 @@ __FdoQuerySystemPowerDown(
 
 static FORCEINLINE NTSTATUS
 __FdoQuerySystemPower(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2610,12 +2610,12 @@ done:
 
 static NTSTATUS
 FdoDevicePower(
-    IN  PXENCONS_THREAD Self,
-    IN  PVOID           Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
-    PXENCONS_FDO        Fdo = Context;
-    PKEVENT             Event;
+    PXENCONS_FDO            Fdo = Context;
+    PKEVENT                 Event;
 
     Event = ThreadGetEvent(Self);
 
@@ -2667,12 +2667,12 @@ FdoDevicePower(
 
 static NTSTATUS
 FdoSystemPower(
-    IN  PXENCONS_THREAD Self,
-    IN  PVOID           Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
-    PXENCONS_FDO        Fdo = Context;
-    PKEVENT             Event;
+    PXENCONS_FDO            Fdo = Context;
+    PKEVENT                 Event;
 
     Event = ThreadGetEvent(Self);
 
@@ -2724,8 +2724,8 @@ FdoSystemPower(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchPower(
-    IN  PXENCONS_FDO     Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2792,8 +2792,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchDefault(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -2806,8 +2806,8 @@ FdoDispatchDefault(
 
 NTSTATUS
 FdoDispatch(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -2843,15 +2843,15 @@ FdoDispatch(
     return status;
 }
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 static NTSTATUS
 FdoQueryInterface(
-    IN  PXENCONS_FDO    Fdo,
-    IN  const GUID      *Guid,
-    IN  ULONG           Version,
-    OUT PINTERFACE      Interface,
-    IN  ULONG           Size,
-    IN  BOOLEAN         Optional
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ const GUID     *Guid,
+    _In_ ULONG          Version,
+    _Out_ PINTERFACE    Interface,
+    _In_ ULONG          Size,
+    _In_ BOOLEAN        Optional
     )
 {
     KEVENT              Event;
@@ -2933,8 +2933,8 @@ fail1:
 #define DEFINE_FDO_GET_INTERFACE(_Interface, _Type)                     \
 VOID                                                                    \
 FdoGet ## _Interface ## Interface(                                      \
-    IN  PXENCONS_FDO Fdo,                                                \
-    OUT _Type       _Interface ## Interface                             \
+    _In_ PXENCONS_FDO   Fdo,                                            \
+    _Out_ _Type         _Interface ## Interface                         \
     )                                                                   \
 {                                                                       \
     * ## _Interface ## Interface = Fdo-> ## _Interface ## Interface;    \
@@ -2949,7 +2949,7 @@ DEFINE_FDO_GET_INTERFACE(Gnttab, PXENBUS_GNTTAB_INTERFACE)
 
 NTSTATUS
 FdoCreate(
-    IN  PDEVICE_OBJECT      PhysicalDeviceObject
+    _In_ PDEVICE_OBJECT     PhysicalDeviceObject
     )
 {
     PDEVICE_OBJECT          FunctionDeviceObject;
@@ -3175,7 +3175,7 @@ fail1:
 
 VOID
 FdoDestroy(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     )
 {
     PXENCONS_DX         Dx = Fdo->Dx;
diff --git a/src/xencons/fdo.h b/src/xencons/fdo.h
index 916c168..3681d5b 100644
--- a/src/xencons/fdo.h
+++ b/src/xencons/fdo.h
@@ -45,58 +45,58 @@
 
 extern PCHAR
 FdoGetVendorName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 extern PCHAR
 FdoGetName(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 extern NTSTATUS
 FdoAddPhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 FdoRemovePhysicalDeviceObject(
-    IN  PXENCONS_FDO     Fdo,
-    IN  PXENCONS_PDO     Pdo
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 FdoAcquireMutex(
-    IN  PXENCONS_FDO     Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 extern VOID
 FdoReleaseMutex(
-    IN  PXENCONS_FDO     Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 extern PDEVICE_OBJECT
 FdoGetPhysicalDeviceObject(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 extern NTSTATUS
 FdoDelegateIrp(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     );
 
 extern NTSTATUS
 FdoDispatch(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_FDO   Fdo,
+    _In_ PIRP           Irp
     );
 
 #define DECLARE_FDO_GET_INTERFACE(_Interface, _Type)    \
 extern VOID                                             \
 FdoGet ## _Interface ## Interface(                      \
-    IN  PXENCONS_FDO Fdo,                               \
-    OUT _Type        _Interface ## Interface            \
+    _In_ PXENCONS_FDO   Fdo,                            \
+    _Out_ _Type         _Interface ## Interface         \
     );
 
 DECLARE_FDO_GET_INTERFACE(Debug, PXENBUS_DEBUG_INTERFACE)
@@ -108,12 +108,12 @@ DECLARE_FDO_GET_INTERFACE(Gnttab, PXENBUS_GNTTAB_INTERFACE)
 
 extern NTSTATUS
 FdoCreate(
-    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    _In_ PDEVICE_OBJECT PhysicalDeviceObject
     );
 
 extern VOID
 FdoDestroy(
-    IN  PXENCONS_FDO    Fdo
+    _In_ PXENCONS_FDO   Fdo
     );
 
 #endif  // _XENCONS_FDO_H
diff --git a/src/xencons/frontend.c b/src/xencons/frontend.c
index 8c57824..384a042 100644
--- a/src/xencons/frontend.c
+++ b/src/xencons/frontend.c
@@ -90,7 +90,7 @@ struct _XENCONS_FRONTEND {
 
 static const PCHAR
 FrontendStateName(
-    IN  FRONTEND_STATE  State
+    _In_ FRONTEND_STATE State
     )
 {
 #define _STATE_NAME(_State)     \
@@ -114,7 +114,7 @@ FrontendStateName(
 
 static const PCHAR
 XenbusStateName(
-    IN  XenbusState State
+    _In_ XenbusState    State
     )
 {
 #define _STATE_NAME(_State)         \
@@ -142,7 +142,7 @@ XenbusStateName(
 
 static FORCEINLINE PVOID
 __FrontendAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, FRONTEND_POOL);
@@ -150,7 +150,7 @@ __FrontendAllocate(
 
 static FORCEINLINE VOID
 __FrontendFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, FRONTEND_POOL);
@@ -158,7 +158,7 @@ __FrontendFree(
 
 static FORCEINLINE PXENCONS_PDO
 __FrontendGetPdo(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return Frontend->Pdo;
@@ -166,7 +166,7 @@ __FrontendGetPdo(
 
 PXENCONS_PDO
 FrontendGetPdo(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return __FrontendGetPdo(Frontend);
@@ -174,7 +174,7 @@ FrontendGetPdo(
 
 static FORCEINLINE PCHAR
 __FrontendGetPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return Frontend->Path;
@@ -182,7 +182,7 @@ __FrontendGetPath(
 
 PCHAR
 FrontendGetPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return __FrontendGetPath(Frontend);
@@ -190,7 +190,7 @@ FrontendGetPath(
 
 static FORCEINLINE PCHAR
 __FrontendGetBackendPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return Frontend->BackendPath;
@@ -198,7 +198,7 @@ __FrontendGetBackendPath(
 
 PCHAR
 FrontendGetBackendPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return __FrontendGetBackendPath(Frontend);
@@ -206,7 +206,7 @@ FrontendGetBackendPath(
 
 static FORCEINLINE USHORT
 __FrontendGetBackendDomain(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return Frontend->BackendDomain;
@@ -214,7 +214,7 @@ __FrontendGetBackendDomain(
 
 USHORT
 FrontendGetBackendDomain(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return __FrontendGetBackendDomain(Frontend);
@@ -222,7 +222,7 @@ FrontendGetBackendDomain(
 
 static BOOLEAN
 FrontendIsOnline(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     return Frontend->Online;
@@ -230,7 +230,7 @@ FrontendIsOnline(
 
 static BOOLEAN
 FrontendIsBackendOnline(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     PCHAR                   Buffer;
@@ -258,12 +258,12 @@ FrontendIsBackendOnline(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendEject(
-    IN  PXENCONS_THREAD Self,
-    IN  PVOID           Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
-    PXENCONS_FRONTEND   Frontend = Context;
-    PKEVENT             Event;
+    PXENCONS_FRONTEND       Frontend = Context;
+    PKEVENT                 Event;
 
     Trace("%s: ====>\n", __FrontendGetPath(Frontend));
 
@@ -310,7 +310,7 @@ FrontendEject(
 
 VOID
 FrontendEjectFailed(
-    IN PXENCONS_FRONTEND    Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     KIRQL                   Irql;
@@ -361,7 +361,7 @@ fail1:
 
 static VOID
 FrontendSetOnline(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     Trace("====>\n");
@@ -373,7 +373,7 @@ FrontendSetOnline(
 
 static VOID
 FrontendSetOffline(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     Trace("====>\n");
@@ -386,8 +386,8 @@ FrontendSetOffline(
 
 static VOID
 FrontendSetXenbusState(
-    IN  PXENCONS_FRONTEND   Frontend,
-    IN  XenbusState         State
+    _In_ PXENCONS_FRONTEND  Frontend,
+    _In_ XenbusState        State
     )
 {
     BOOLEAN                 Online;
@@ -418,8 +418,8 @@ FrontendSetXenbusState(
 
 static VOID
 FrontendWaitForBackendXenbusStateChange(
-    IN      PXENCONS_FRONTEND   Frontend,
-    IN OUT  XenbusState         *State
+    _In_     PXENCONS_FRONTEND  Frontend,
+    _Inout_  XenbusState        *State
     )
 {
     KEVENT                      Event;
@@ -512,7 +512,7 @@ FrontendWaitForBackendXenbusStateChange(
 
 static NTSTATUS
 FrontendAcquireBackend(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     PCHAR                   Buffer;
@@ -558,7 +558,7 @@ fail1:
 
 static VOID
 FrontendReleaseBackend(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     Trace("=====>\n");
@@ -578,7 +578,7 @@ FrontendReleaseBackend(
 
 static VOID
 FrontendClose(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     XenbusState             State;
@@ -622,7 +622,7 @@ FrontendClose(
 
 static NTSTATUS
 FrontendPrepare(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     XenbusState             State;
@@ -706,8 +706,8 @@ fail1:
 
 static VOID
 FrontendDebugCallback(
-    IN  PVOID               Argument,
-    IN  BOOLEAN             Crashing
+    _In_ PVOID              Argument,
+    _In_ BOOLEAN            Crashing
     )
 {
     PXENCONS_FRONTEND       Frontend = Argument;
@@ -730,7 +730,7 @@ FrontendDebugCallback(
 
 static NTSTATUS
 FrontendConnect(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     XenbusState             State;
@@ -890,7 +890,7 @@ fail1:
 
 static VOID
 FrontendDisconnect(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     Trace("====>\n");
@@ -915,7 +915,7 @@ FrontendDisconnect(
 
 static NTSTATUS
 FrontendEnable(
-    IN  PXENCONS_FRONTEND    Frontend
+    _In_ PXENCONS_FRONTEND   Frontend
     )
 {
     NTSTATUS                status;
@@ -938,7 +938,7 @@ fail1:
 
 static VOID
 FrontendDisable(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     Trace("====>\n");
@@ -950,8 +950,8 @@ FrontendDisable(
 
 static NTSTATUS
 FrontendSetState(
-    IN  PXENCONS_FRONTEND   Frontend,
-    IN  FRONTEND_STATE      State
+    _In_ PXENCONS_FRONTEND  Frontend,
+    _In_ FRONTEND_STATE     State
     )
 {
     BOOLEAN                 Failed;
@@ -1104,7 +1104,7 @@ FrontendSetState(
 
 static FORCEINLINE VOID
 __FrontendResume(
-    IN  PXENCONS_FRONTEND    Frontend
+    _In_ PXENCONS_FRONTEND   Frontend
     )
 {
     ASSERT3U(KeGetCurrentIrql(), == , DISPATCH_LEVEL);
@@ -1117,7 +1117,7 @@ __FrontendResume(
 
 static FORCEINLINE VOID
 __FrontendSuspend(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     ASSERT3U(KeGetCurrentIrql(), == , DISPATCH_LEVEL);
@@ -1128,7 +1128,7 @@ __FrontendSuspend(
 
 static DECLSPEC_NOINLINE VOID
 FrontendSuspendCallback(
-    IN  PVOID           Argument
+    _In_ PVOID          Argument
     )
 {
     PXENCONS_FRONTEND   Frontend = Argument;
@@ -1139,7 +1139,7 @@ FrontendSuspendCallback(
 
 static NTSTATUS
 FrontendResume(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     KIRQL                   Irql;
@@ -1198,7 +1198,7 @@ fail1:
 
 static VOID
 FrontendSuspend(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     )
 {
     KIRQL                   Irql;
@@ -1234,8 +1234,8 @@ FrontendSuspend(
 
 static NTSTATUS
 FrontendGetProperty(
-    IN  PXENCONS_FRONTEND   Frontend,
-    IN  PIRP                Irp
+    _In_ PXENCONS_FRONTEND  Frontend,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -1308,7 +1308,7 @@ fail1:
 
 static NTSTATUS
 FrontendAbiAcquire(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1370,7 +1370,7 @@ fail1:
 
 static VOID
 FrontendAbiRelease(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1407,7 +1407,7 @@ done:
 
 static NTSTATUS
 FrontendAbiD3ToD0(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1420,7 +1420,7 @@ FrontendAbiD3ToD0(
 
 static VOID
 FrontendAbiD0ToD3(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1431,8 +1431,8 @@ FrontendAbiD0ToD3(
 
 static NTSTATUS
 FrontendAbiOpen(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1442,8 +1442,8 @@ FrontendAbiOpen(
 
 static NTSTATUS
 FrontendAbiClose(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PFILE_OBJECT                    FileObject
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PFILE_OBJECT                   FileObject
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1453,8 +1453,8 @@ FrontendAbiClose(
 
 static NTSTATUS
 FrontendAbiPutQueue(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    IN  PIRP                            Irp
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _In_ PIRP                           Irp
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
@@ -1489,8 +1489,8 @@ static XENCONS_CONSOLE_ABI FrontendAbi = {
 
 NTSTATUS
 FrontendCreate(
-    IN  PXENCONS_PDO                    Pdo,
-    OUT PXENCONS_CONSOLE_ABI_CONTEXT    *Context
+    _In_ PXENCONS_PDO                   Pdo,
+    _Out_ PXENCONS_CONSOLE_ABI_CONTEXT  *Context
     )
 {
     PCHAR                               Name;
@@ -1597,8 +1597,8 @@ fail1:
 
 VOID
 FrontendGetAbi(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    OUT PXENCONS_CONSOLE_ABI            Abi
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _Out_ PXENCONS_CONSOLE_ABI          Abi
     )
 {
     *Abi = FrontendAbi;
@@ -1608,7 +1608,7 @@ FrontendGetAbi(
 
 VOID
 FrontendDestroy(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     )
 {
     PXENCONS_FRONTEND                   Frontend = (PXENCONS_FRONTEND)Context;
diff --git a/src/xencons/frontend.h b/src/xencons/frontend.h
index 88d89b7..e57d083 100644
--- a/src/xencons/frontend.h
+++ b/src/xencons/frontend.h
@@ -42,39 +42,39 @@ typedef struct _XENCONS_FRONTEND XENCONS_FRONTEND, *PXENCONS_FRONTEND;
 
 extern NTSTATUS
 FrontendCreate(
-    IN  PXENCONS_PDO                    Pdo,
-    OUT PXENCONS_CONSOLE_ABI_CONTEXT    *Context
+    _In_ PXENCONS_PDO                   Pdo,
+    _Out_ PXENCONS_CONSOLE_ABI_CONTEXT  *Context
     );
 
 VOID
 FrontendGetAbi(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context,
-    OUT PXENCONS_CONSOLE_ABI            Abi
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context,
+    _Out_ PXENCONS_CONSOLE_ABI          Abi
     );
 
 VOID
 FrontendDestroy(
-    IN  PXENCONS_CONSOLE_ABI_CONTEXT    Context
+    _In_ PXENCONS_CONSOLE_ABI_CONTEXT   Context
     );
 
 extern PXENCONS_PDO
 FrontendGetPdo(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     );
 
 extern PCHAR
 FrontendGetPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     );
 
 extern PCHAR
 FrontendGetBackendPath(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     );
 
 extern USHORT
 FrontendGetBackendDomain(
-    IN  PXENCONS_FRONTEND   Frontend
+    _In_ PXENCONS_FRONTEND  Frontend
     );
 
 #endif  // _XENCONS_FRONTEND_H
diff --git a/src/xencons/mutex.h b/src/xencons/mutex.h
index ee1915e..c6cd2f9 100644
--- a/src/xencons/mutex.h
+++ b/src/xencons/mutex.h
@@ -53,7 +53,7 @@ InitializeMutex(
 }
 
 static FORCEINLINE VOID
-__drv_maxIRQL(PASSIVE_LEVEL)
+_IRQL_requires_max_(PASSIVE_LEVEL)
 AcquireMutex(
     IN  PMUTEX  Mutex
 )
@@ -69,7 +69,7 @@ AcquireMutex(
 }
 
 static FORCEINLINE VOID
-__drv_maxIRQL(PASSIVE_LEVEL)
+_IRQL_requires_max_(PASSIVE_LEVEL)
 ReleaseMutex(
     IN  PMUTEX  Mutex
 )
diff --git a/src/xencons/names.h b/src/xencons/names.h
index 1100a7a..84519f3 100644
--- a/src/xencons/names.h
+++ b/src/xencons/names.h
@@ -37,7 +37,7 @@
 
 static FORCEINLINE const CHAR *
 PowerTypeName(
-    IN  POWER_STATE_TYPE    Type
+    _In_ POWER_STATE_TYPE   Type
     )
 {
 #define _POWER_TYPE_NAME(_Type) \
@@ -57,7 +57,7 @@ PowerTypeName(
 
 static FORCEINLINE const CHAR *
 PowerSystemStateName(
-    IN  SYSTEM_POWER_STATE State
+    _In_ SYSTEM_POWER_STATE State
     )
 {
 #define _POWER_SYSTEM_STATE_NAME(_State)    \
@@ -83,7 +83,7 @@ PowerSystemStateName(
 
 static FORCEINLINE const CHAR *
 PowerDeviceStateName(
-    IN  DEVICE_POWER_STATE State
+    _In_ DEVICE_POWER_STATE State
     )
 {
 #define _POWER_DEVICE_STATE_NAME(_State)    \
@@ -107,7 +107,7 @@ PowerDeviceStateName(
 
 static FORCEINLINE const CHAR *
 PowerActionName(
-    IN  POWER_ACTION    Type
+    _In_ POWER_ACTION   Type
     )
 {
 #define _POWER_ACTION_NAME(_Type)   \
@@ -133,7 +133,7 @@ PowerActionName(
 
 static FORCEINLINE const CHAR *
 PowerMinorFunctionName(
-    IN  ULONG   MinorFunction
+    _In_ ULONG  MinorFunction
     )
 {
 #define _POWER_MINOR_FUNCTION_NAME(_Function)   \
@@ -156,7 +156,7 @@ PowerMinorFunctionName(
 
 static FORCEINLINE const CHAR *
 PnpMinorFunctionName(
-    IN  ULONG   Function
+    _In_ ULONG  Function
     )
 {
 #define _PNP_MINOR_FUNCTION_NAME(_Function) \
@@ -199,7 +199,7 @@ PnpMinorFunctionName(
 
 static FORCEINLINE const CHAR *
 PartialResourceDescriptorTypeName(
-    IN  UCHAR   Type
+    _In_ UCHAR  Type
     )
 {
 #define _PARTIAL_RESOURCE_DESCRIPTOR_TYPE_NAME(_Type)   \
@@ -228,7 +228,7 @@ PartialResourceDescriptorTypeName(
 
 static FORCEINLINE const CHAR *
 DeviceUsageTypeName(
-    IN  DEVICE_USAGE_NOTIFICATION_TYPE  Type
+    _In_ DEVICE_USAGE_NOTIFICATION_TYPE Type
     )
 {
 #define _DEVICE_USAGE_TYPE_NAME(_Type)  \
@@ -250,7 +250,7 @@ DeviceUsageTypeName(
 
 static FORCEINLINE const CHAR *
 MajorFunctionName(
-    IN  ULONG   Function
+    _In_ ULONG  Function
     )
 {
 #define _MAJOR_FUNCTION_NAME(_Function) \
diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index 388eabb..b1d5507 100644
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -82,7 +82,7 @@ struct _XENCONS_PDO {
 
 static FORCEINLINE PVOID
 __PdoAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, PDO_POOL);
@@ -90,7 +90,7 @@ __PdoAllocate(
 
 static FORCEINLINE VOID
 __PdoFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, PDO_POOL);
@@ -98,8 +98,8 @@ __PdoFree(
 
 static FORCEINLINE VOID
 __PdoSetDevicePnpState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_PNP_STATE   State
     )
 {
     PXENCONS_DX             Dx = Pdo->Dx;
@@ -113,8 +113,8 @@ __PdoSetDevicePnpState(
 
 VOID
 PdoSetDevicePnpState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_PNP_STATE   State
     )
 {
     __PdoSetDevicePnpState(Pdo, State);
@@ -122,8 +122,8 @@ PdoSetDevicePnpState(
 
 static FORCEINLINE VOID
 __PdoRestoreDevicePnpState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_PNP_STATE   State
     )
 {
     PXENCONS_DX             Dx = Pdo->Dx;
@@ -134,7 +134,7 @@ __PdoRestoreDevicePnpState(
 
 static FORCEINLINE DEVICE_PNP_STATE
 __PdoGetDevicePnpState(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -144,7 +144,7 @@ __PdoGetDevicePnpState(
 
 DEVICE_PNP_STATE
 PdoGetDevicePnpState(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoGetDevicePnpState(Pdo);
@@ -152,8 +152,8 @@ PdoGetDevicePnpState(
 
 static FORCEINLINE VOID
 __PdoSetSystemPowerState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  SYSTEM_POWER_STATE  State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ SYSTEM_POWER_STATE State
     )
 {
     PXENCONS_DX             Dx = Pdo->Dx;
@@ -163,7 +163,7 @@ __PdoSetSystemPowerState(
 
 static FORCEINLINE SYSTEM_POWER_STATE
 __PdoGetSystemPowerState(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -173,8 +173,8 @@ __PdoGetSystemPowerState(
 
 static FORCEINLINE VOID
 __PdoSetDevicePowerState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_POWER_STATE  State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_POWER_STATE State
     )
 {
     PXENCONS_DX             Dx = Pdo->Dx;
@@ -184,7 +184,7 @@ __PdoSetDevicePowerState(
 
 static FORCEINLINE DEVICE_POWER_STATE
 __PdoGetDevicePowerState(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -194,8 +194,8 @@ __PdoGetDevicePowerState(
 
 static FORCEINLINE VOID
 __PdoSetMissing(
-    IN  PXENCONS_PDO    Pdo,
-    IN  const CHAR      *Reason
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ const CHAR     *Reason
     )
 {
     Pdo->Reason = Reason;
@@ -204,8 +204,8 @@ __PdoSetMissing(
 
 VOID
 PdoSetMissing(
-    IN  PXENCONS_PDO    Pdo,
-    IN  const CHAR      *Reason
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ const CHAR     *Reason
     )
 {
     __PdoSetMissing(Pdo, Reason);
@@ -213,7 +213,7 @@ PdoSetMissing(
 
 static FORCEINLINE BOOLEAN
 __PdoIsMissing(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return Pdo->Missing;
@@ -221,7 +221,7 @@ __PdoIsMissing(
 
 BOOLEAN
 PdoIsMissing(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoIsMissing(Pdo);
@@ -229,7 +229,7 @@ PdoIsMissing(
 
 static FORCEINLINE PDEVICE_OBJECT
 __PdoGetDeviceObject(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -239,7 +239,7 @@ __PdoGetDeviceObject(
 
 PDEVICE_OBJECT
 PdoGetDeviceObject(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoGetDeviceObject(Pdo);
@@ -247,7 +247,7 @@ PdoGetDeviceObject(
 
 static FORCEINLINE PXENCONS_FDO
 __PdoGetFdo(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return Pdo->Fdo;
@@ -255,7 +255,7 @@ __PdoGetFdo(
 
 PXENCONS_FDO
 PdoGetFdo(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoGetFdo(Pdo);
@@ -263,12 +263,12 @@ PdoGetFdo(
 
 static FORCEINLINE VOID
 __PdoSetName(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PANSI_STRING    Device
+    _In_ PXENCONS_PDO       Pdo,
+    _In_opt_ PANSI_STRING   Device
     )
 {
-    PXENCONS_DX         Dx = Pdo->Dx;
-    NTSTATUS            status;
+    PXENCONS_DX             Dx = Pdo->Dx;
+    NTSTATUS                status;
 
     if (Device == NULL)
         status = RtlStringCbPrintfA(Dx->Name,
@@ -284,7 +284,7 @@ __PdoSetName(
 
 static FORCEINLINE PCHAR
 __PdoGetName(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -294,7 +294,7 @@ __PdoGetName(
 
 PCHAR
 PdoGetName(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoGetName(Pdo);
@@ -302,7 +302,7 @@ PdoGetName(
 
 static FORCEINLINE PCHAR
 __PdoGetVendorName(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return FdoGetVendorName(__PdoGetFdo(Pdo));
@@ -310,7 +310,7 @@ __PdoGetVendorName(
 
 static FORCEINLINE BOOLEAN
 __PdoIsDefault(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return Pdo->IsDefault;
@@ -318,7 +318,7 @@ __PdoIsDefault(
 
 BOOLEAN
 PdoIsDefault(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoIsDefault(Pdo);
@@ -326,8 +326,8 @@ PdoIsDefault(
 
 static FORCEINLINE VOID
 __PdoSetDefault(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PANSI_STRING    Device
+    _In_ PXENCONS_PDO       Pdo,
+    _In_opt_ PANSI_STRING   Device
     )
 {
     Pdo->IsDefault = (Device == NULL) ? TRUE : FALSE;
@@ -335,7 +335,7 @@ __PdoSetDefault(
 
 static FORCEINLINE BOOLEAN
 __PdoSetEjectRequested(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return (InterlockedBitTestAndSet(&Pdo->Eject, 0) == 0) ? TRUE : FALSE;
@@ -343,7 +343,7 @@ __PdoSetEjectRequested(
 
 VOID
 PdoRequestEject(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
@@ -363,7 +363,7 @@ PdoRequestEject(
 
 static FORCEINLINE BOOLEAN
 __PdoClearEjectRequested(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return (InterlockedBitTestAndReset(&Pdo->Eject, 0) != 0) ? TRUE : FALSE;
@@ -371,7 +371,7 @@ __PdoClearEjectRequested(
 
 static FORCEINLINE BOOLEAN
 __PdoIsEjectRequested(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     KeMemoryBarrier();
@@ -380,7 +380,7 @@ __PdoIsEjectRequested(
 
 BOOLEAN
 PdoIsEjectRequested(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     return __PdoIsEjectRequested(Pdo);
@@ -388,7 +388,7 @@ PdoIsEjectRequested(
 
 static FORCEINLINE NTSTATUS
 __PdoD3ToD0(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     POWER_STATE         PowerState;
@@ -412,7 +412,7 @@ __PdoD3ToD0(
 
 static FORCEINLINE VOID
 __PdoD0ToD3(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     POWER_STATE         PowerState;
@@ -434,7 +434,7 @@ __PdoD0ToD3(
 
 static DECLSPEC_NOINLINE VOID
 PdoSuspendCallbackLate(
-    IN  PVOID               Argument
+    _In_ PVOID              Argument
     )
 {
     PXENCONS_PDO            Pdo = Argument;
@@ -449,7 +449,7 @@ PdoSuspendCallbackLate(
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE NTSTATUS
 PdoD3ToD0(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     KIRQL               Irql;
@@ -526,7 +526,7 @@ fail1:
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 PdoD0ToD3(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     KIRQL               Irql;
@@ -563,7 +563,7 @@ done:
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 PdoS4ToS3(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     Trace("(%s) ====>\n", __PdoGetName(Pdo));
@@ -579,7 +579,7 @@ PdoS4ToS3(
 // This function must not touch pageable code or data
 static DECLSPEC_NOINLINE VOID
 PdoS3ToS4(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     Trace("(%s) ====>\n", __PdoGetName(Pdo));
@@ -594,8 +594,8 @@ PdoS3ToS4(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoStartDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -636,8 +636,8 @@ fail1:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryStopDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -653,8 +653,8 @@ PdoQueryStopDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoCancelStopDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -670,8 +670,8 @@ PdoCancelStopDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoStopDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -693,8 +693,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryRemoveDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -710,8 +710,8 @@ PdoQueryRemoveDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoCancelRemoveDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -730,8 +730,8 @@ PdoCancelRemoveDevice(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoSurpriseRemoval(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -749,8 +749,8 @@ PdoSurpriseRemoval(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoRemoveDevice(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PXENCONS_FDO        Fdo = __PdoGetFdo(Pdo);
@@ -796,8 +796,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryDeviceRelations(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -835,8 +835,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryCapabilities(
-    IN  PXENCONS_PDO        Pdo,
-    IN  PIRP                Irp
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -903,8 +903,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryDeviceText(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -988,8 +988,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoReadConfig(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     UNREFERENCED_PARAMETER(Pdo);
@@ -1002,8 +1002,8 @@ PdoReadConfig(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoWriteConfig(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     UNREFERENCED_PARAMETER(Pdo);
@@ -1018,8 +1018,8 @@ PdoWriteConfig(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryId(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1169,8 +1169,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryBusInformation(
-    IN  PXENCONS_PDO        Pdo,
-    IN  PIRP                Irp
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ PIRP               Irp
     )
 {
     PPNP_BUS_INFORMATION    Info;
@@ -1202,8 +1202,8 @@ done:
 
 static NTSTATUS
 PdoDelegateIrp(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     return FdoDelegateIrp(__PdoGetFdo(Pdo), Irp);
@@ -1211,8 +1211,8 @@ PdoDelegateIrp(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDeviceUsageNotification(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1227,8 +1227,8 @@ PdoDeviceUsageNotification(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoEject(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PXENCONS_FDO        Fdo = __PdoGetFdo(Pdo);
@@ -1256,8 +1256,8 @@ PdoEject(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchPnp(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1357,8 +1357,8 @@ PdoDispatchPnp(
 
 static FORCEINLINE NTSTATUS
 __PdoSetDevicePower(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1408,12 +1408,12 @@ __PdoSetDevicePower(
 
 static NTSTATUS
 PdoDevicePower(
-    IN  PXENCONS_THREAD Self,
-    IN  PVOID           Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
-    PXENCONS_PDO        Pdo = Context;
-    PKEVENT             Event;
+    PXENCONS_PDO            Pdo = Context;
+    PKEVENT                 Event;
 
     Event = ThreadGetEvent(Self);
 
@@ -1446,15 +1446,15 @@ PdoDevicePower(
     return STATUS_SUCCESS;
 }
 
-__drv_functionClass(REQUEST_POWER_COMPLETE)
-__drv_sameIRQL
+_Function_class_(REQUEST_POWER_COMPLETE)
+_IRQL_requires_same_
 VOID
 __PdoRequestSetDevicePower(
-    IN  PDEVICE_OBJECT      DeviceObject,
-    IN  UCHAR               MinorFunction,
-    IN  POWER_STATE         PowerState,
-    IN  PVOID               Context,
-    IN  PIO_STATUS_BLOCK    IoStatus
+    _In_ PDEVICE_OBJECT     DeviceObject,
+    _In_ UCHAR              MinorFunction,
+    _In_ POWER_STATE        PowerState,
+    _In_ PVOID              Context,
+    _In_ PIO_STATUS_BLOCK   IoStatus
     )
 {
     PKEVENT                 Event = Context;
@@ -1470,8 +1470,8 @@ __PdoRequestSetDevicePower(
 
 static VOID
 PdoRequestSetDevicePower(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_POWER_STATE  DeviceState
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_POWER_STATE DeviceState
     )
 {
     POWER_STATE             PowerState;
@@ -1517,8 +1517,8 @@ DevicePowerStateMap[PowerSystemMaximum] =
 
 static FORCEINLINE NTSTATUS
 __PdoSetSystemPower(
-    IN  PXENCONS_PDO        Pdo,
-    IN  PIRP                Irp
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ PIRP               Irp
     )
 {
     PIO_STACK_LOCATION      StackLocation;
@@ -1578,12 +1578,12 @@ __PdoSetSystemPower(
 
 static NTSTATUS
 PdoSystemPower(
-    IN  PXENCONS_THREAD Self,
-    IN  PVOID           Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
-    PXENCONS_PDO        Pdo = Context;
-    PKEVENT             Event;
+    PXENCONS_PDO            Pdo = Context;
+    PKEVENT                 Event;
 
     Event = ThreadGetEvent(Self);
 
@@ -1618,8 +1618,8 @@ PdoSystemPower(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoSetPower(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1677,8 +1677,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoQueryPower(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1695,8 +1695,8 @@ PdoQueryPower(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchPower(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1726,8 +1726,8 @@ PdoDispatchPower(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchCreate(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1747,8 +1747,8 @@ PdoDispatchCreate(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchCleanup(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1768,8 +1768,8 @@ PdoDispatchCleanup(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchClose(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1786,8 +1786,8 @@ PdoDispatchClose(
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchReadWriteControl(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1809,8 +1809,8 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 PdoDispatchDefault(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     NTSTATUS            status;
@@ -1825,8 +1825,8 @@ PdoDispatchDefault(
 
 NTSTATUS
 PdoDispatch(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -1871,7 +1871,7 @@ PdoDispatch(
 
 NTSTATUS
 PdoResume(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     NTSTATUS            status;
@@ -1893,7 +1893,7 @@ fail1:
 
 VOID
 PdoSuspend(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     Trace("(%s) ====>\n", __PdoGetName(Pdo));
@@ -1905,14 +1905,14 @@ PdoSuspend(
 
 NTSTATUS
 PdoCreate(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PANSI_STRING    Device
+    _In_ PXENCONS_FDO       Fdo,
+    _In_opt_ PANSI_STRING   Device
     )
 {
-    PDEVICE_OBJECT      PhysicalDeviceObject;
-    PXENCONS_DX         Dx;
-    PXENCONS_PDO        Pdo;
-    NTSTATUS            status;
+    PDEVICE_OBJECT          PhysicalDeviceObject;
+    PXENCONS_DX             Dx;
+    PXENCONS_PDO            Pdo;
+    NTSTATUS                status;
 
 #pragma prefast(suppress:28197) // Possibly leaking memory 'PhysicalDeviceObject'
     status = IoCreateDeviceSecure(DriverGetDriverObject(),
@@ -2049,7 +2049,7 @@ fail1:
 
 VOID
 PdoDestroy(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     )
 {
     PXENCONS_DX         Dx = Pdo->Dx;
diff --git a/src/xencons/pdo.h b/src/xencons/pdo.h
index 52d78a5..12b334e 100644
--- a/src/xencons/pdo.h
+++ b/src/xencons/pdo.h
@@ -43,81 +43,81 @@ DEFINE_GUID(GUID_XENCONS_DEVICE_CLASS,
 
 extern VOID
 PdoSetDevicePnpState(
-    IN  PXENCONS_PDO        Pdo,
-    IN  DEVICE_PNP_STATE    State
+    _In_ PXENCONS_PDO       Pdo,
+    _In_ DEVICE_PNP_STATE   State
     );
 
 extern DEVICE_PNP_STATE
 PdoGetDevicePnpState(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 PdoSetMissing(
-    IN  PXENCONS_PDO    Pdo,
-    IN  const CHAR      *Reason
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ const CHAR     *Reason
     );
 
 extern BOOLEAN
 PdoIsMissing(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 PdoRequestEject(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern BOOLEAN
 PdoIsEjectRequested(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern PCHAR
 PdoGetName(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern PXENCONS_FDO
 PdoGetFdo(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern PDEVICE_OBJECT
 PdoGetDeviceObject(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern BOOLEAN
 PdoIsDefault(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern NTSTATUS
 PdoCreate(
-    IN  PXENCONS_FDO    Fdo,
-    IN  PANSI_STRING    Device
+    _In_ PXENCONS_FDO       Fdo,
+    _In_opt_ PANSI_STRING   Device
     );
 
 extern NTSTATUS
 PdoResume(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 PdoSuspend(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern VOID
 PdoDestroy(
-    IN  PXENCONS_PDO    Pdo
+    _In_ PXENCONS_PDO   Pdo
     );
 
 extern NTSTATUS
 PdoDispatch(
-    IN  PXENCONS_PDO    Pdo,
-    IN  PIRP            Irp
+    _In_ PXENCONS_PDO   Pdo,
+    _In_ PIRP           Irp
     );
 
 #endif  // _XENCONS_PDO_H
diff --git a/src/xencons/ring.c b/src/xencons/ring.c
index 29e172f..b7e033c 100644
--- a/src/xencons/ring.c
+++ b/src/xencons/ring.c
@@ -82,7 +82,7 @@ struct _XENCONS_RING {
 
 static FORCEINLINE PVOID
 __RingAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, XENCONS_RING_TAG);
@@ -90,7 +90,7 @@ __RingAllocate(
 
 static FORCEINLINE VOID
 __RingFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, XENCONS_RING_TAG);
@@ -100,9 +100,9 @@ IO_CSQ_INSERT_IRP_EX RingCsqInsertIrpEx;
 
 NTSTATUS
 RingCsqInsertIrpEx(
-    IN  PIO_CSQ         Csq,
-    IN  PIRP            Irp,
-    IN  PVOID           InsertContext OPTIONAL
+    _In_ PIO_CSQ        Csq,
+    _In_ PIRP           Irp,
+    _In_ PVOID          InsertContext OPTIONAL
     )
 {
     BOOLEAN             ReInsert = (BOOLEAN)(ULONG_PTR)InsertContext;
@@ -125,8 +125,8 @@ IO_CSQ_REMOVE_IRP RingCsqRemoveIrp;
 
 VOID
 RingCsqRemoveIrp(
-    IN  PIO_CSQ     Csq,
-    IN  PIRP        Irp
+    _In_ PIO_CSQ    Csq,
+    _In_ PIRP       Irp
     )
 {
     UNREFERENCED_PARAMETER(Csq);
@@ -134,13 +134,12 @@ RingCsqRemoveIrp(
     RemoveEntryList(&Irp->Tail.Overlay.ListEntry);
 }
 
-IO_CSQ_PEEK_NEXT_IRP RingCsqPeekNextIrp;
-
+_Function_class_(IO_CSQ_PEEK_NEXT_IRP)
 PIRP
 RingCsqPeekNextIrp(
-    IN  PIO_CSQ     Csq,
-    IN  PIRP        Irp,
-    IN  PVOID       PeekContext OPTIONAL
+    _In_ PIO_CSQ    Csq,
+    _In_ PIRP       Irp,
+    _In_opt_ PVOID  PeekContext
     )
 {
     PXENCONS_QUEUE  Queue;
@@ -173,30 +172,28 @@ RingCsqPeekNextIrp(
 #pragma warning(push)
 #pragma warning(disable:28167) // function changes IRQL
 
-IO_CSQ_ACQUIRE_LOCK RingCsqAcquireLock;
-
+_Function_class_(IO_CSQ_ACQUIRE_LOCK)
 VOID
 RingCsqAcquireLock(
-    IN  PIO_CSQ     Csq,
-    OUT PKIRQL      Irql
+    _In_ PIO_CSQ                            Csq,
+    _Out_ _At_(*Irql, _IRQL_saves_) PKIRQL  Irql
     )
 {
-    PXENCONS_QUEUE  Queue;
+    PXENCONS_QUEUE                          Queue;
 
     Queue = CONTAINING_RECORD(Csq, XENCONS_QUEUE, Csq);
 
     KeAcquireSpinLock(&Queue->Lock, Irql);
 }
 
-IO_CSQ_RELEASE_LOCK RingCsqReleaseLock;
-
+_Function_class_(IO_CSQ_RELEASE_LOCK)
 VOID
 RingCsqReleaseLock(
-    IN  PIO_CSQ     Csq,
-    IN  KIRQL       Irql
+    _In_ PIO_CSQ                Csq,
+    _In_ _IRQL_restores_ KIRQL  Irql
     )
 {
-    PXENCONS_QUEUE  Queue;
+    PXENCONS_QUEUE              Queue;
 
     Queue = CONTAINING_RECORD(Csq, XENCONS_QUEUE, Csq);
 
@@ -205,12 +202,11 @@ RingCsqReleaseLock(
 
 #pragma warning(pop)
 
-IO_CSQ_COMPLETE_CANCELED_IRP RingCsqCompleteCanceledIrp;
-
+_Function_class_(IO_CSQ_COMPLETE_CANCELED_IRP)
 VOID
 RingCsqCompleteCanceledIrp(
-    IN  PIO_CSQ         Csq,
-    IN  PIRP            Irp
+    _In_ PIO_CSQ        Csq,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -233,8 +229,8 @@ RingCsqCompleteCanceledIrp(
 
 static FORCEINLINE VOID
 __RingCancelRequests(
-    IN  PXENCONS_RING   Ring,
-    IN  PFILE_OBJECT    FileObject
+    _In_ PXENCONS_RING      Ring,
+    _In_opt_ PFILE_OBJECT   FileObject
     )
 {
     for (;;) {
@@ -259,7 +255,7 @@ __RingCancelRequests(
 
 static VOID
 RingAcquireLock(
-    IN  PVOID       Argument
+    _In_ PVOID      Argument
     )
 {
     PXENCONS_RING   Ring = Argument;
@@ -269,7 +265,7 @@ RingAcquireLock(
 
 static VOID
 RingReleaseLock(
-    IN  PVOID       Argument
+    _In_ PVOID      Argument
     )
 {
     PXENCONS_RING   Ring = Argument;
@@ -280,8 +276,8 @@ RingReleaseLock(
 
 NTSTATUS
 RingOpen(
-    IN  PXENCONS_RING   Ring,
-    IN  PFILE_OBJECT    FileObject
+    _In_ PXENCONS_RING  Ring,
+    _In_ PFILE_OBJECT   FileObject
     )
 {
     UNREFERENCED_PARAMETER(Ring);
@@ -291,8 +287,8 @@ RingOpen(
 
 NTSTATUS
 RingClose(
-    IN  PXENCONS_RING   Ring,
-    IN  PFILE_OBJECT    FileObject
+    _In_ PXENCONS_RING  Ring,
+    _In_ PFILE_OBJECT   FileObject
     )
 {
     __RingCancelRequests(Ring, FileObject);
@@ -301,8 +297,8 @@ RingClose(
 
 NTSTATUS
 RingPutQueue(
-    IN  PXENCONS_RING   Ring,
-    IN  PIRP            Irp
+    _In_ PXENCONS_RING  Ring,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -344,9 +340,9 @@ fail1:
 
 static ULONG
 RingCopyFromRead(
-    IN  PXENCONS_RING           Ring,
-    IN  PCHAR                   Data,
-    IN  ULONG                   Length
+    _In_ PXENCONS_RING          Ring,
+    _In_ PCHAR                  Data,
+    _In_ ULONG                  Length
     )
 {
     struct xencons_interface    *Shared;
@@ -398,9 +394,9 @@ RingCopyFromRead(
 
 static ULONG
 RingCopyToWrite(
-    IN  PXENCONS_RING           Ring,
-    IN  PCHAR                   Data,
-    IN  ULONG                   Length
+    _In_ PXENCONS_RING          Ring,
+    _In_ PCHAR                  Data,
+    _In_ ULONG                  Length
     )
 {
     struct xencons_interface    *Shared;
@@ -452,7 +448,7 @@ RingCopyToWrite(
 
 static BOOLEAN
 RingPoll(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     PIRP                Irp;
@@ -536,16 +532,16 @@ RingPoll(
     return FALSE;
 }
 
-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(PASSIVE_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_same_
 static VOID
 RingDpc(
-    IN  PKDPC               Dpc,
-    IN  PVOID               Context,
-    IN  PVOID               Argument1,
-    IN  PVOID               Argument2
+    _In_ PKDPC          Dpc,
+    _In_ PVOID          Context,
+    _In_ PVOID          Argument1,
+    _In_ PVOID          Argument2
     )
 {
     PXENCONS_RING       Ring = Context;
@@ -583,15 +579,14 @@ RingDpc(
                          FALSE);
 }
 
-KSERVICE_ROUTINE    RingEvtchnCallback;
-
+_Function_class_(KSERVICE_ROUTINE)
 BOOLEAN
 RingEvtchnCallback(
-    IN  PKINTERRUPT InterruptObject,
-    IN  PVOID       Argument
+    _In_ PKINTERRUPT    InterruptObject,
+    _In_ PVOID          Argument
     )
 {
-    PXENCONS_RING   Ring = Argument;
+    PXENCONS_RING       Ring = Argument;
 
     UNREFERENCED_PARAMETER(InterruptObject);
 
@@ -607,8 +602,8 @@ RingEvtchnCallback(
 
 static VOID
 RingDebugCallback(
-    IN  PVOID       Argument,
-    IN  BOOLEAN     Crashing
+    _In_ PVOID      Argument,
+    _In_ BOOLEAN    Crashing
     )
 {
     PXENCONS_RING   Ring = Argument;
@@ -639,7 +634,7 @@ RingDebugCallback(
 
 NTSTATUS
 RingEnable(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     Trace("====>\n");
@@ -657,7 +652,7 @@ RingEnable(
 
 VOID
 RingDisable(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     Trace("====>\n");
@@ -673,7 +668,7 @@ RingDisable(
 
 NTSTATUS
 RingConnect(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     CHAR                Name[MAXNAMELEN];
@@ -839,8 +834,8 @@ fail1:
 
 NTSTATUS
 RingStoreWrite(
-    IN  PXENCONS_RING   Ring,
-    IN  PVOID           Transaction
+    _In_ PXENCONS_RING  Ring,
+    _In_ PVOID          Transaction
     )
 {
     ULONG               Port;
@@ -888,7 +883,7 @@ fail1:
 
 VOID
 RingDisconnect(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     Trace("====>\n");
@@ -942,8 +937,8 @@ RingDisconnect(
 
 NTSTATUS
 RingCreate(
-    IN  PXENCONS_FRONTEND   Frontend,
-    OUT PXENCONS_RING       *Ring
+    _In_ PXENCONS_FRONTEND  Frontend,
+    _Out_ PXENCONS_RING     *Ring
     )
 {
     NTSTATUS                status;
@@ -1022,11 +1017,11 @@ fail1:
 
 VOID
 RingDestroy(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     )
 {
     ASSERT3U(KeGetCurrentIrql(), == , PASSIVE_LEVEL);
-    
+
     // Cancel all outstanding IRPs
     __RingCancelRequests(Ring, NULL);
 
diff --git a/src/xencons/ring.h b/src/xencons/ring.h
index ffd4f21..811cc9b 100644
--- a/src/xencons/ring.h
+++ b/src/xencons/ring.h
@@ -41,57 +41,57 @@ typedef struct _XENCONS_RING XENCONS_RING, *PXENCONS_RING;
 
 extern NTSTATUS
 RingCreate(
-    IN  PXENCONS_FRONTEND   Frontend,
-    OUT PXENCONS_RING       *Ring
+    _In_ PXENCONS_FRONTEND  Frontend,
+    _Out_ PXENCONS_RING     *Ring
     );
 
 extern VOID
 RingDestroy(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     );
 
 extern NTSTATUS
 RingConnect(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     );
 
 extern NTSTATUS
 RingStoreWrite(
-    IN  PXENCONS_RING   Ring,
-    IN  PVOID           Transaction
+    _In_ PXENCONS_RING  Ring,
+    _In_ PVOID          Transaction
     );
 
 extern VOID
 RingDisconnect(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     );
 
 extern NTSTATUS
 RingEnable(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     );
 
 extern VOID
 RingDisable(
-    IN  PXENCONS_RING   Ring
+    _In_ PXENCONS_RING  Ring
     );
 
 extern NTSTATUS
 RingOpen(
-    IN  PXENCONS_RING   Ring,
-    IN  PFILE_OBJECT    FileObject
+    _In_ PXENCONS_RING  Ring,
+    _In_ PFILE_OBJECT   FileObject
     );
 
 extern NTSTATUS
 RingClose(
-    IN  PXENCONS_RING   Ring,
-    IN  PFILE_OBJECT    FileObject
+    _In_ PXENCONS_RING  Ring,
+    _In_ PFILE_OBJECT   FileObject
     );
 
 extern NTSTATUS
 RingPutQueue(
-    IN  PXENCONS_RING   Ring,
-    IN  PIRP            Irp
+    _In_ PXENCONS_RING  Ring,
+    _In_ PIRP           Irp
     );
 
 #endif  // _XENCONS_RING_H
diff --git a/src/xencons/stream.c b/src/xencons/stream.c
index 6aa9226..37cd423 100644
--- a/src/xencons/stream.c
+++ b/src/xencons/stream.c
@@ -53,7 +53,7 @@ struct _XENCONS_STREAM {
 
 static FORCEINLINE PVOID
 __StreamAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
     return __AllocatePoolWithTag(NonPagedPool, Length, STREAM_POOL);
@@ -61,7 +61,7 @@ __StreamAllocate(
 
 static FORCEINLINE VOID
 __StreamFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
     __FreePoolWithTag(Buffer, STREAM_POOL);
@@ -71,9 +71,9 @@ IO_CSQ_INSERT_IRP_EX StreamCsqInsertIrpEx;
 
 NTSTATUS
 StreamCsqInsertIrpEx(
-    IN  PIO_CSQ         Csq,
-    IN  PIRP            Irp,
-    IN  PVOID           InsertContext OPTIONAL
+    _In_ PIO_CSQ        Csq,
+    _In_ PIRP           Irp,
+    _In_ PVOID          InsertContext OPTIONAL
     )
 {
     BOOLEAN             ReInsert = (BOOLEAN)(ULONG_PTR)InsertContext;
@@ -97,8 +97,8 @@ IO_CSQ_REMOVE_IRP StreamCsqRemoveIrp;
 
 VOID
 StreamCsqRemoveIrp(
-    IN  PIO_CSQ Csq,
-    IN  PIRP    Irp
+    _In_ PIO_CSQ    Csq,
+    _In_ PIRP       Irp
     )
 {
     UNREFERENCED_PARAMETER(Csq);
@@ -110,9 +110,9 @@ IO_CSQ_PEEK_NEXT_IRP StreamCsqPeekNextIrp;
 
 PIRP
 StreamCsqPeekNextIrp(
-    IN  PIO_CSQ     Csq,
-    IN  PIRP        Irp,
-    IN  PVOID       PeekContext OPTIONAL
+    _In_ PIO_CSQ    Csq,
+    _In_ PIRP       Irp,
+    _In_ PVOID      PeekContext OPTIONAL
     )
 {
     PXENCONS_STREAM Stream;
@@ -138,30 +138,28 @@ StreamCsqPeekNextIrp(
 #pragma warning(push)
 #pragma warning(disable:28167) // function changes IRQL
 
-IO_CSQ_ACQUIRE_LOCK StreamCsqAcquireLock;
-
+_Function_class_(IO_CSQ_ACQUIRE_LOCK)
 VOID
 StreamCsqAcquireLock(
-    IN  PIO_CSQ Csq,
-    OUT PKIRQL  Irql
+    _In_ PIO_CSQ                            Csq,
+    _Out_ _At_(*Irql, _IRQL_saves_) PKIRQL  Irql
     )
 {
-    PXENCONS_STREAM Stream;
+    PXENCONS_STREAM                         Stream;
 
     Stream = CONTAINING_RECORD(Csq, XENCONS_STREAM, Csq);
 
     KeAcquireSpinLock(&Stream->Lock, Irql);
 }
 
-IO_CSQ_RELEASE_LOCK StreamCsqReleaseLock;
-
+_Function_class_(IO_CSQ_RELEASE_LOCK)
 VOID
 StreamCsqReleaseLock(
-    IN  PIO_CSQ Csq,
-    IN  KIRQL   Irql
+    _In_ PIO_CSQ                Csq,
+    _In_ _IRQL_restores_ KIRQL  Irql
     )
 {
-    PXENCONS_STREAM Stream;
+    PXENCONS_STREAM             Stream;
 
     Stream = CONTAINING_RECORD(Csq, XENCONS_STREAM, Csq);
 
@@ -174,8 +172,8 @@ IO_CSQ_COMPLETE_CANCELED_IRP StreamCsqCompleteCanceledIrp;
 
 VOID
 StreamCsqCompleteCanceledIrp(
-    IN  PIO_CSQ Csq,
-    IN  PIRP    Irp
+    _In_ PIO_CSQ        Csq,
+    _In_ PIRP           Irp
     )
 {
     PIO_STACK_LOCATION  StackLocation;
@@ -198,8 +196,8 @@ StreamCsqCompleteCanceledIrp(
 
 static NTSTATUS
 StreamWorker(
-    IN  PXENCONS_THREAD     Self,
-    IN  PVOID               Context
+    _In_ PXENCONS_THREAD    Self,
+    _In_ PVOID              Context
     )
 {
     PXENCONS_STREAM         Stream = Context;
@@ -348,11 +346,11 @@ fail1:
 
 NTSTATUS
 StreamCreate(
-    IN  PXENCONS_FDO    Fdo,
-    OUT PXENCONS_STREAM *Stream
+    _In_ PXENCONS_FDO           Fdo,
+    _Outptr_ PXENCONS_STREAM    *Stream
     )
 {
-    NTSTATUS            status;
+    NTSTATUS                    status;
 
     *Stream = __StreamAllocate(sizeof (XENCONS_STREAM));
 
@@ -410,7 +408,7 @@ fail1:
 
 VOID
 StreamDestroy(
-    IN  PXENCONS_STREAM Stream
+    _In_ PXENCONS_STREAM    Stream
     )
 {
     Stream->Fdo = NULL;
@@ -445,8 +443,8 @@ StreamDestroy(
 
 NTSTATUS
 StreamPutQueue(
-    IN  PXENCONS_STREAM Stream,
-    IN  PIRP            Irp
+    _In_ PXENCONS_STREAM    Stream,
+    _In_ PIRP               Irp
     )
 {
     return IoCsqInsertIrpEx(&Stream->Csq, Irp, NULL, (PVOID)FALSE);
diff --git a/src/xencons/stream.h b/src/xencons/stream.h
index 7da9641..cbe26ec 100644
--- a/src/xencons/stream.h
+++ b/src/xencons/stream.h
@@ -41,19 +41,19 @@ typedef struct _XENCONS_STREAM XENCONS_STREAM, *PXENCONS_STREAM;
 
 extern NTSTATUS
 StreamCreate(
-    IN  PXENCONS_FDO    Fdo,
-    OUT PXENCONS_STREAM *Stream
+    _In_ PXENCONS_FDO           Fdo,
+    _Outptr_ PXENCONS_STREAM    *Stream
     );
 
 extern VOID
 StreamDestroy(
-    IN  PXENCONS_STREAM Stream
+    _In_ PXENCONS_STREAM    Stream
     );
 
 extern NTSTATUS
 StreamPutQueue(
-    IN  PXENCONS_STREAM Stream,
-    IN  PIRP            Irp
+    _In_ PXENCONS_STREAM    Stream,
+    _In_ PIRP               Irp
     );
 
 #endif  // _XENCONS_STREAM_H
-- 
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 Sep 10 11:23:19 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118147.1464043 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv1-0004uU-7H; Wed, 10 Sep 2025 11:23:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118147.1464043; Wed, 10 Sep 2025 11:23: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 1uwIv1-0004uB-0n; Wed, 10 Sep 2025 11:23:19 +0000
Received: by outflank-mailman (input) for mailman id 1118147;
 Wed, 10 Sep 2025 11:23:18 +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=oDuZ=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-f1749c708f3b49f384df88f560d05b05@srs-se1.protection.inumbo.net>)
 id 1uwIv0-0004lc-7h
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:18 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8b3989ae-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:16 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cMJG85QLKzB5p535
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 f1749c708f3b49f384df88f560d05b05; Wed, 10 Sep 2025 11:23: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: 8b3989ae-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503392; x=1757773392;
	bh=NHO656ZXnZVv2oX7vHf9epFnITf9xqSRIWuta95ijYM=;
	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=FW4mNl/zLqUSmxTKlIYGH/694BafWK7KXxSY3y6ycEL5TMKbTg1Mq1r0asnLUgPp/
	 ONE5m1vCR1lJNU/c5zb9cWfspC0meauUBarlTjdjUm1bkgnAWTknTQ4KFy0YbQEvXa
	 oXhMeUnuO1svqz1lf2l/08LpNr8BU/nc/EElO3wP7RoE0rcxPq1iWLu5Q386AkoX5y
	 3C8t/+hzFMKBMJHnNGsZC75TEKUqVD1aBdagAIzs/YzsBOetiAAduQTs1ClSj6Cu/z
	 vBdJ04ng/ekKesya+2FzkeMp1tWQJ52alKF7yX9ioBXZisjIu3tuSh70WqzKNhaAK4
	 bwVAuMDZld7JQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503392; x=1757763892; i=ngoc-tu.dinh@vates.tech;
	bh=NHO656ZXnZVv2oX7vHf9epFnITf9xqSRIWuta95ijYM=;
	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=atZ88PnYLO3sUww5LsgMw6We8pxltrF1ZLx41JXrqcI1Ou7C+H92OklokdJXypEMj
	 aq2xIxhxSYdwAyodQuZ2vJc8tJDkzdicz9XrvjtLEEwRZqsNGPG9qlTz+4R8evjcah
	 fs8GIJfR7cNfA82t6b7dwBQODBqgtTITClqhL0Zh/wmloI1r2zqT7g0qgabHwpyEsq
	 cXUK5jJ4tdXLvrl80KD+3KEnKBzYwIQaBIbI9fFcq/k8HYZPTcgBv7znXW3wlQ8ZkK
	 YquDIh1trVkVP1CBYGhbHQO4KAaQgZR0JLRKvcsiUPzB2ywXzjPStwQ+Rzlfj4jkAo
	 EEsk32IkO6TcQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2009/11]=20Check=20for=20IoAttachDeviceToDeviceStack=20failure=20in=20FdoCreate?=
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: 1757503392063
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-10-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.f1749c708f3b49f384df88f560d05b05?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/fdo.c | 72 +++++++++++++++++++++++++----------------------
 1 file changed, 38 insertions(+), 34 deletions(-)

diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index 02a9f3e..e2ebcac 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -2993,25 +2993,27 @@ FdoCreate(
     Fdo->PhysicalDeviceObject = PhysicalDeviceObject;
     Fdo->LowerDeviceObject = IoAttachDeviceToDeviceStack(FunctionDeviceObject,
                                                          PhysicalDeviceObject);
+    if (Fdo->LowerDeviceObject == NULL)
+        goto fail4;
 
     status = ThreadCreate(FdoSystemPower, Fdo, &Fdo->SystemPowerThread);
     if (!NT_SUCCESS(status))
-        goto fail4;
+        goto fail5;
 
     status = ThreadCreate(FdoDevicePower, Fdo, &Fdo->DevicePowerThread);
     if (!NT_SUCCESS(status))
-        goto fail5;
+        goto fail6;
 
     status = __FdoAcquireLowerBusInterface(Fdo);
     if (!NT_SUCCESS(status))
-        goto fail6;
+        goto fail7;
 
     if (FdoGetBusData(Fdo,
                       PCI_WHICHSPACE_CONFIG,
                       &DeviceID,
                       FIELD_OFFSET(PCI_COMMON_HEADER, DeviceID),
                       FIELD_SIZE(PCI_COMMON_HEADER, DeviceID)) == 0)
-        goto fail7;
+        goto fail8;
 
     __FdoSetVendorName(Fdo, DeviceID);
 
@@ -3024,7 +3026,7 @@ FdoCreate(
                                  sizeof (Fdo->DebugInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail8;
+        goto fail9;
 
     status = FDO_QUERY_INTERFACE(Fdo,
                                  XENBUS,
@@ -3033,7 +3035,7 @@ FdoCreate(
                                  sizeof (Fdo->SuspendInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail9;
+        goto fail10;
 
     status = FDO_QUERY_INTERFACE(Fdo,
                                  XENBUS,
@@ -3042,7 +3044,7 @@ FdoCreate(
                                  sizeof (Fdo->StoreInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail10;
+        goto fail11;
 
     status = FDO_QUERY_INTERFACE(Fdo,
                                  XENBUS,
@@ -3051,7 +3053,7 @@ FdoCreate(
                                  sizeof (Fdo->ConsoleInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail11;
+        goto fail12;
 
     status = FDO_QUERY_INTERFACE(Fdo,
                                  XENBUS,
@@ -3060,7 +3062,7 @@ FdoCreate(
                                  sizeof(Fdo->EvtchnInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail12;
+        goto fail13;
 
     status = FDO_QUERY_INTERFACE(Fdo,
                                  XENBUS,
@@ -3069,7 +3071,7 @@ FdoCreate(
                                  sizeof(Fdo->GnttabInterface),
                                  FALSE);
     if (!NT_SUCCESS(status))
-        goto fail13;
+        goto fail14;
 
     Dx->Fdo = Fdo;
 
@@ -3083,13 +3085,13 @@ FdoCreate(
 
     status = PdoCreate(Fdo, NULL);
     if (!NT_SUCCESS(status))
-        goto fail14;
+        goto fail15;
 
     FunctionDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
     return STATUS_SUCCESS;
 
-fail14:
-    Error("fail14\n");
+fail15:
+    Error("fail15\n");
 
     Dx->Fdo = Fdo;
 
@@ -3100,66 +3102,68 @@ fail14:
     RtlZeroMemory(&Fdo->GnttabInterface,
                   sizeof(XENBUS_GNTTAB_INTERFACE));
 
-fail13:
-    Error("fail13\n");
+fail14:
+    Error("fail14\n");
 
     RtlZeroMemory(&Fdo->EvtchnInterface,
                   sizeof(XENBUS_EVTCHN_INTERFACE));
 
-fail12:
-    Error("fail12\n");
+fail13:
+    Error("fail13\n");
 
     RtlZeroMemory(&Fdo->ConsoleInterface,
                   sizeof(XENBUS_CONSOLE_INTERFACE));
 
-fail11:
-    Error("fail11\n");
+fail12:
+    Error("fail12\n");
 
     RtlZeroMemory(&Fdo->StoreInterface,
                   sizeof (XENBUS_STORE_INTERFACE));
 
-fail10:
-    Error("fail10\n");
+fail11:
+    Error("fail11\n");
 
     RtlZeroMemory(&Fdo->SuspendInterface,
                   sizeof (XENBUS_SUSPEND_INTERFACE));
 
-fail9:
-    Error("fail9\n");
+fail10:
+    Error("fail10\n");
 
     RtlZeroMemory(&Fdo->DebugInterface,
                   sizeof (XENBUS_DEBUG_INTERFACE));
 
-fail8:
-    Error("fail8\n");
+fail9:
+    Error("fail9\n");
 
     RtlZeroMemory(Fdo->VendorName, MAXNAMELEN);
 
-fail7:
-    Error("fail7\n");
+fail8:
+    Error("fail8\n");
 
     __FdoReleaseLowerBusInterface(Fdo);
 
-fail6:
-    Error("fail6\n");
+fail7:
+    Error("fail7\n");
 
     ThreadAlert(Fdo->DevicePowerThread);
     ThreadJoin(Fdo->DevicePowerThread);
     Fdo->DevicePowerThread = NULL;
 
-fail5:
-    Error("fail5\n");
+fail6:
+    Error("fail6\n");
 
     ThreadAlert(Fdo->SystemPowerThread);
     ThreadJoin(Fdo->SystemPowerThread);
     Fdo->SystemPowerThread = NULL;
 
-fail4:
-    Error("fail4\n");
+fail5:
+    Error("fail5\n");
 
-#pragma prefast(suppress:28183) // Fdo->LowerDeviceObject could be NULL
+    if (Fdo->LowerDeviceObject)
     IoDetachDevice(Fdo->LowerDeviceObject);
 
+fail4:
+
     Fdo->PhysicalDeviceObject = NULL;
     Fdo->LowerDeviceObject = NULL;
     Fdo->Dx = NULL;
-- 
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 Sep 10 11:23:19 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118148.1464048 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv1-0004v1-AG; Wed, 10 Sep 2025 11:23:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118148.1464048; Wed, 10 Sep 2025 11:23: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 1uwIv1-0004uT-2M; Wed, 10 Sep 2025 11:23:19 +0000
Received: by outflank-mailman (input) for mailman id 1118148;
 Wed, 10 Sep 2025 11:23: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=vVjA=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-a0dec0aa87014f848784aa0e9b3d91ff@srs-se1.protection.inumbo.net>)
 id 1uwIv0-0004lb-EB
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:18 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8c1ecae1-8e38-11f0-9809-7dc792cee155;
 Wed, 10 Sep 2025 13:23:16 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG82Zvsz2K1wSg
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a0dec0aa87014f848784aa0e9b3d91ff; Wed, 10 Sep 2025 11:23: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: 8c1ecae1-8e38-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503392; x=1757773392;
	bh=CVGgCK9NP0xSuLcBleNC1e/MckX5lvQo/lVv578hS3g=;
	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=iBSjw0fbQoC7Y0Fgti5BV3GvXvB7pxsaD2/WOGNZhfnvcV/ACbZGfRUp6g/woCnW5
	 axzn7OV2jpKUo1e7b1ZRIkKlQPI8optOfSz0wfg/bu+a4WJbgtrwWlCteOxL4ds8zL
	 rtLVN8j5oiR186QIJXLR/z1LF/WcEhH2MygB25FUqVa/CmsnnkAnH9EBl8Mx4jmKIB
	 2eVawgIlZaygahYnsUoomEvTXKG2mbkRBJLVvJ9/qRsjWbl8m3KKk1BZTea6lglW/r
	 Su4qxQPzFrU8K8SHxexnW+SvGDhDXAI0CjLV58wrpzP1Q8rGf6Vf2Nrzrd6uMKA0Go
	 nAe3qfVPeqgzg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503392; x=1757763892; i=ngoc-tu.dinh@vates.tech;
	bh=CVGgCK9NP0xSuLcBleNC1e/MckX5lvQo/lVv578hS3g=;
	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=OZKVIHm5RmtNqTubb8TRyN82DhJkwlkRjlY+jpHb8bilXCffqXwQWJ1DlJ86nDl3r
	 4/RDT0CBNGgAqdwtdNiP83iQG4lyPcnulbySAZ1tEkJH2q1IFYo8xCddp9ga/mrLbH
	 MSy124Y52RyF8lF6mLl+9MtUYpNgN4iEcNLJZ91B6xl6dNaDq9EIqn31XwKpbql81p
	 SxvEfdMI3+MQJjT/VGbLu7kSl31GwsSXh2143nMir31UbvXkm4tOErn5ibqC7Qqspy
	 neYNUOQKxKDSVRLR0tx7kJ9lRwBEiZfnnYiHxgh1FKbo0PhyPOMTK9BkMAHPxUnDtq
	 p8JmC0Z2ItcfQ==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2007/11]=20Suppress=20uninitialized=20*Interface=20warning=20in=20FdoQueryInterface?=
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: 1757503391667
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-8-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.a0dec0aa87014f848784aa0e9b3d91ff?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

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

diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index 102e159..c2a0bcb 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -2877,6 +2877,9 @@ FdoQueryInterface(
     if (Irp == NULL)
         goto fail1;
 
+    // suppress "uninitialized *Interface" warning when IoCallDriver succeeds
+    RtlZeroMemory(Interface, sizeof (*Interface));
+
     StackLocation = IoGetNextIrpStackLocation(Irp);
     StackLocation->MinorFunction = IRP_MN_QUERY_INTERFACE;
 
-- 
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 Sep 10 11:23:20 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118149.1464051 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv2-0004zR-8N; Wed, 10 Sep 2025 11:23:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118149.1464051; Wed, 10 Sep 2025 11:23: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 1uwIv2-0004zJ-5H; Wed, 10 Sep 2025 11:23:20 +0000
Received: by outflank-mailman (input) for mailman id 1118149;
 Wed, 10 Sep 2025 11:23:18 +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=UD9R=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-9f0b58dcff7f41ecb70afa661ce6ccfb@srs-se1.protection.inumbo.net>)
 id 1uwIv0-0004lc-Iz
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:18 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8c83f715-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:17 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMJG83ySFz2K1wSy
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9f0b58dcff7f41ecb70afa661ce6ccfb; Wed, 10 Sep 2025 11:23: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: 8c83f715-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503392; x=1757773392;
	bh=240xjf+8aS8uhrT7PHjMjQorgrzuVjrQFw2xGnUpxRk=;
	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=PoRLx1HVJs328FQ6uiLGnCOJ/WgP97A55UTV+UazA96hPLGhYvjgMjtbLUENxDmY8
	 9L3w57HviMrIGA0jcp66DTDlzM0xdY48nxOjsLR3QyOzMQBv85NzIuyBZiNm/282Rk
	 SB0Tqk0JMiNLumcAV8uWUETjBOJby+TCANiMCAQyAUNcOGNQFQol0d9q7O0nfn+e7P
	 Og1TQNOGL4/T9laow+UpnvgHRoEe7VKdu6AjMoC2ZNmSh64ZsnYIBKPTdhAgDeENB/
	 v8r9rTgrqga2uAc/PCBcBb7Rzm+nBmxZdT2wCEFofqpUy8QJ0g4uGpx/DndpVexetB
	 W+QCk039hJnyQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503392; x=1757763892; i=ngoc-tu.dinh@vates.tech;
	bh=240xjf+8aS8uhrT7PHjMjQorgrzuVjrQFw2xGnUpxRk=;
	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=ByDIasrNLHqO0HnpxmYZ7ZT5eCfloS2COf5ljksFfqz/B/MTJXo3SdTrGfiY+hZf0
	 bA/5NZie3d3uTDYvkXxHRV62b9fevuESYsIe3qMpSHB0clwKqt2TgW7sj278Pnhyxn
	 OyxvxSNBEBm0XX4y/ZOJU+29hesQLI74JjawmdVpo77BkOA3AmF7k+XHZl9ImaoFis
	 /3UBpwYLWA+BVVH14ggJe77g9jrgMmVSy4oJ6JiCEim/vAq0mYUuEeTOczWyMhhY6H
	 /fMJRNUpU3MRs2k9gJwNZEtBj99YwNRxdewXRU4ORX1au/Lk5WLznCxb+p5tbYTI6N
	 UxORyIA7Vw2Yg==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2008/11]=20Suppress=20warnings=20with=20SYSTEM=5FPOWER=5FSTATE=20asserts?=
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: 1757503391861
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-9-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.9f0b58dcff7f41ecb70afa661ce6ccfb?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/fdo.c | 2 ++
 src/xencons/pdo.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index c2a0bcb..02a9f3e 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -2263,6 +2263,8 @@ __FdoSetSystemPowerUp(
     StackLocation = IoGetCurrentIrpStackLocation(Irp);
     SystemState = StackLocation->Parameters.Power.State.SystemState;
 
+    ASSERT(SystemState >= PowerSystemUnspecified &&
+           SystemState < PowerSystemMaximum);
     ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
 
     status = FdoForwardIrpSynchronously(Fdo, Irp);
diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index 3ddc553..7e42862 100644
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -1534,6 +1534,8 @@ __PdoSetSystemPower(
           PowerSystemStateName(SystemState),
           PowerActionName(PowerAction));
 
+    ASSERT(SystemState >= PowerSystemUnspecified &&
+           SystemState < PowerSystemMaximum);
     ASSERT3U(PowerAction, <, PowerActionShutdown);
 
     if (__PdoGetSystemPowerState(Pdo) > SystemState) {
-- 
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 Sep 10 11:23:21 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118150.1464054 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv3-00051n-9I; Wed, 10 Sep 2025 11:23:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118150.1464054; Wed, 10 Sep 2025 11:23:21 +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 1uwIv3-00051e-6b; Wed, 10 Sep 2025 11:23:21 +0000
Received: by outflank-mailman (input) for mailman id 1118150;
 Wed, 10 Sep 2025 11:23:19 +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=Or2k=3V=bounce.vates.tech=bounce-md_30504962.68c15fa0.v1-005ea0b2690d4612b2c74ab8d6c1f66d@srs-se1.protection.inumbo.net>)
 id 1uwIv1-0004lc-J8
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:19 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8c94f376-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:17 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cMJG86zW5zB5p53N
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:12 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 005ea0b2690d4612b2c74ab8d6c1f66d; Wed, 10 Sep 2025 11:23: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: 8c94f376-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503393; x=1757773393;
	bh=xAX9V443Fphy4CPWhezQNEIqEt468ulcMHhVvijsa0s=;
	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=KA4dH4MmYX/lzh01+DemD72+0werhbCfeG1D6rz/JyR0TZax9f2m33KNp+rgAdeL1
	 7YzzwMWh/zZlBy35zhqYm2K4XQn+I3g1DHo2pIbSEPSY1rsZ7vq29WF/Hvc/auOCbJ
	 dFQoyPWgIfzc1bv+FEy30N5suFZ5oCKkuoimRs6xYm8rg0Iks38eAEiVMiGwPOu+kX
	 aniyNrNMnQ0pkntEF4gQhDSmgTkaWYEaQParQC+ZKeTiUJuR7PIZAqQAHg9YMuD8M6
	 gyQ28RMeP1giQXtyQkgxTWPCD/d9d68qNc/XxQYtWgPxI51Mi7fqfKdJIj4+m+i+1l
	 yCJL+HhktRO0A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503393; x=1757763893; i=ngoc-tu.dinh@vates.tech;
	bh=xAX9V443Fphy4CPWhezQNEIqEt468ulcMHhVvijsa0s=;
	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=z3kJiJCJFKd3eh+iFUM7B4JNSamdYefg60tTMROxREvuZztIPYETTvOiI4A4suz9w
	 TuUOJJi8Txv1STQIasbcaEAhpGM5L/n8OEsJBCzVjG8c/dbqGB5UwLGP0m5rvXDeUr
	 yKUKKoPICabKARgD60Xw3LQwDKZLuXUwehh6njqQeMelmpJYJr+DldIdHQIV2jyQxP
	 zuuPNl/W2yo6/9GOEnmjEBhRtTpWx/cithX2y89yOU6wkhP78oS2IRloA/DIp2s1b/
	 sx1pJ29tuTuRvxTZ06RnqFjVrw4LpQQ83iNjcXTMpQd/Z6EMM1ZnMtAUHKHAjquMPf
	 O783hOl9+8/dw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2010/11]=20monitor:=20Fix=20GetExecutable=20allocation=20check?=
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: 1757503392299
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-11-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.005ea0b2690d4612b2c74ab8d6c1f66d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:12 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

The wrong pointer was tested.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/monitor/monitor.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index cefc3c2..772bbf4 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -663,6 +663,7 @@ fail1:
     return 1;
 }
 
+_Success_(return != FALSE)
 static BOOL
 GetExecutable(
     _In_ PSTR               DeviceName,
@@ -706,7 +707,7 @@ GetExecutable(
     ExecutableLength = MaxValueLength;
 
     *Executable = calloc(1, ExecutableLength);
-    if (Executable == NULL)
+    if (*Executable == NULL)
         goto fail3;
 
     Error = RegQueryValueExA(Key,
-- 
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 Sep 10 11:23:22 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118151.1464059 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv4-00054J-BV; Wed, 10 Sep 2025 11:23:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118151.1464059; Wed, 10 Sep 2025 11:23:22 +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 1uwIv4-000548-86; Wed, 10 Sep 2025 11:23:22 +0000
Received: by outflank-mailman (input) for mailman id 1118151;
 Wed, 10 Sep 2025 11:23:20 +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=Vvtk=3V=bounce.vates.tech=bounce-md_30504962.68c15f9f.v1-6e2da0da587349bcb2f898635468b91d@srs-se1.protection.inumbo.net>)
 id 1uwIv2-0004lc-JP
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:20 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 894c1d33-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:12 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cMJG72NmPzB5p52D
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:11 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 6e2da0da587349bcb2f898635468b91d; Wed, 10 Sep 2025 11:23: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: 894c1d33-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503391; x=1757773391;
	bh=YdYCKOc4b7sO6MrrPWM/+BGzAzYIN2VQ/HYevKufqeE=;
	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=jmj0sbZlsLoaQfvurj9QLFnPtrHH8a2Bzzs9pjyxry/PFlbqMZyyrJV75mohCT5MU
	 poRS4k0t+1BbOHVoSwIPMOeb2BFrSNnN9LuB21tWtPWOpOMOMvkq81nJ7kLVI8kqPs
	 Ds21xqnxxNx80jj9Oa+yWYTz3tz96x/LEHhjuP7k2Z2O+2CGgf1dXepsW6Vn+7kmYU
	 oa60Q8T2Itz8fP9+uTmab2U1N3Q/mr09aAgaCoDWv1JV24MFkk4g6WaEaXKKMCj+Wd
	 3PRAe3dLVV7QUpKnooDC9AmyEkPq2njbhB9AxirhHxEoJa40K08NQAuugtnN8e4IRE
	 WdQ1+SFdZ8pVw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503391; x=1757763891; i=ngoc-tu.dinh@vates.tech;
	bh=YdYCKOc4b7sO6MrrPWM/+BGzAzYIN2VQ/HYevKufqeE=;
	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=e7+jIINFMc96FF3mrcEsQmurl2DkoGYJl2W6Xk/oSUk+m7ssS/pExZ2jxWn9CRvX9
	 wv3MbMYQx2Oy0UzNX/3akkY0PdXEREBcRAZT7maO/lbihpPqUhHnGi+R86C/oq1CMF
	 Tw7zklS1+4+pFyyjlWkjqAs5PDZMN9FEqfEUPW3dZOMi9+wS7TXSlF6CBbSfL9Ruaw
	 yQ/37NhuqPYg0hFBwLQ51L/hX4nXkKY3+NiCDTV1gxlJLHrro3aKJD3l8JYn+bEcDU
	 Rwdq74usc5YSUjeXMl4Wq453SM2/i+j3urcVLGMNIhtvMPgCJ/o4/kZKumhkxkHd4Q
	 R/FlbrdrPjr6Q==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2003/11]=20Sync=20thread.[ch]=20from=20Xenbus?=
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: 1757503390549
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-4-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.6e2da0da587349bcb2f898635468b91d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:11 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/thread.c | 40 ++++++++++++++++++++--------------------
 src/xencons/thread.h | 18 +++++++++---------
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/xencons/thread.c b/src/xencons/thread.c
index 2d81009..e8e4a6c 100644
--- a/src/xencons/thread.c
+++ b/src/xencons/thread.c
@@ -37,7 +37,7 @@
 #include "assert.h"
 #include "util.h"
 
-#define THREAD_POOL 'ERHT'
+#define THREAD_TAG 'ERHT'
 
 struct _XENCONS_THREAD {
     XENCONS_THREAD_FUNCTION Function;
@@ -50,23 +50,23 @@ struct _XENCONS_THREAD {
 
 static FORCEINLINE PVOID
 __ThreadAllocate(
-    IN  ULONG   Length
+    _In_ ULONG  Length
     )
 {
-    return __AllocatePoolWithTag(NonPagedPool, Length, THREAD_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, THREAD_TAG);
 }
 
 static FORCEINLINE VOID
 __ThreadFree(
-    IN  PVOID   Buffer
+    _In_ PVOID  Buffer
     )
 {
-    __FreePoolWithTag(Buffer, THREAD_POOL);
+    __FreePoolWithTag(Buffer, THREAD_TAG);
 }
 
 static FORCEINLINE VOID
 __ThreadWake(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     KeSetEvent(&Thread->Event, IO_NO_INCREMENT, FALSE);
@@ -74,7 +74,7 @@ __ThreadWake(
 
 VOID
 ThreadWake(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     __ThreadWake(Thread);
@@ -82,7 +82,7 @@ ThreadWake(
 
 static FORCEINLINE VOID
 __ThreadAlert(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     Thread->Alerted = TRUE;
@@ -91,7 +91,7 @@ __ThreadAlert(
 
 VOID
 ThreadAlert(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     __ThreadAlert(Thread);
@@ -101,7 +101,7 @@ KSTART_ROUTINE  ThreadFunction;
 
 VOID
 ThreadFunction(
-    IN  PVOID       Argument
+    _In_ PVOID      Argument
     )
 {
     PXENCONS_THREAD Self = Argument;
@@ -116,16 +116,16 @@ ThreadFunction(
     // NOT REACHED
 }
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ThreadCreate(
-    IN  XENCONS_THREAD_FUNCTION Function,
-    IN  PVOID                   Context,
-    OUT PXENCONS_THREAD         *Thread
+    _In_ XENCONS_THREAD_FUNCTION    Function,
+    _In_ PVOID                      Context,
+    _Outptr_ PXENCONS_THREAD        *Thread
     )
 {
-    HANDLE                      Handle;
-    NTSTATUS                    status;
+    HANDLE                          Handle;
+    NTSTATUS                        status;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
 
@@ -189,7 +189,7 @@ fail1:
 
 PKEVENT
 ThreadGetEvent(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     return &Thread->Event;
@@ -197,7 +197,7 @@ ThreadGetEvent(
 
 BOOLEAN
 ThreadIsAlerted(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
     return Thread->Alerted;
@@ -205,10 +205,10 @@ ThreadIsAlerted(
 
 VOID
 ThreadJoin(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD    Thread
     )
 {
-    LONG                References;
+    LONG                    References;
 
     ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
     ASSERT3P(KeGetCurrentThread(), !=, Thread->Thread);
diff --git a/src/xencons/thread.h b/src/xencons/thread.h
index 9adca68..545e604 100644
--- a/src/xencons/thread.h
+++ b/src/xencons/thread.h
@@ -39,37 +39,37 @@ typedef struct _XENCONS_THREAD XENCONS_THREAD, *PXENCONS_THREAD;
 
 typedef NTSTATUS (*XENCONS_THREAD_FUNCTION)(PXENCONS_THREAD, PVOID);
 
-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ThreadCreate(
-    IN  XENCONS_THREAD_FUNCTION Function,
-    IN  PVOID                   Context,
-    OUT PXENCONS_THREAD         *Thread
+    _In_ XENCONS_THREAD_FUNCTION Function,
+    _In_ PVOID                  Context,
+    _Outptr_ PXENCONS_THREAD     *Thread
     );
 
 extern PKEVENT
 ThreadGetEvent(
-    IN  PXENCONS_THREAD Self
+    _In_ PXENCONS_THREAD Self
     );
 
 extern BOOLEAN
 ThreadIsAlerted(
-    IN  PXENCONS_THREAD Self
+    _In_ PXENCONS_THREAD Self
     );
 
 extern VOID
 ThreadWake(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD Thread
     );
 
 extern VOID
 ThreadAlert(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD Thread
     );
 
 extern VOID
 ThreadJoin(
-    IN  PXENCONS_THREAD Thread
+    _In_ PXENCONS_THREAD Thread
     );
 
 #endif  // _XENCONS_THREAD_H
-- 
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 Sep 10 11:23:23 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 10 Sep 2025 11:23:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1118152.1464063 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwIv5-00056h-Cz; Wed, 10 Sep 2025 11:23:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1118152.1464063; Wed, 10 Sep 2025 11:23:23 +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 1uwIv5-00056a-AK; Wed, 10 Sep 2025 11:23:23 +0000
Received: by outflank-mailman (input) for mailman id 1118152;
 Wed, 10 Sep 2025 11:23:21 +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=9r8N=3V=bounce.vates.tech=bounce-md_30504962.68c15fa1.v1-2120f8d12f6d436db6775135414fc7ad@srs-se1.protection.inumbo.net>)
 id 1uwIv3-0004lc-Ja
 for win-pv-devel@lists.xenproject.org; Wed, 10 Sep 2025 11:23:21 +0000
Received: from mail114.us4.mandrillapp.com (mail114.us4.mandrillapp.com
 [205.201.136.114]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8cf4726d-8e38-11f0-9d13-b5c5bf9af7f9;
 Wed, 10 Sep 2025 13:23:18 +0200 (CEST)
Received: from pmta15.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail114.us4.mandrillapp.com (Mailchimp) with ESMTP id 4cMJG91KsszB5p53R
 for <win-pv-devel@lists.xenproject.org>; Wed, 10 Sep 2025 11:23:13 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 2120f8d12f6d436db6775135414fc7ad; Wed, 10 Sep 2025 11:23:13 +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: 8cf4726d-8e38-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757503393; x=1757773393;
	bh=J7Bb/P0xs31GBe0VP7ekU93snuILWKRJ11KDfT7pb5c=;
	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=eclYPkh742pji4D+Wa6Ih10mGOTcQ0F22CVGrC8B6mP/0q4+aQoYhl9HMP8Fe7yRW
	 PLym6m4pyxBCms6wDVwNoV0Zl0/gNGuSv42kc7Ilt+i9yZVtJNH1dhLIrTCy6yuHmr
	 rtTjUHuXvINWr0CwrWdFJznvmwJRd+tGfjgSpcaDmTKud0hGsaIjKvtDYKi22z/k+C
	 gxWDA08/TdoEsVxd6/Uh0dqbyWGYdXXG0Zy9BRtK4Sx558I998pzKpicgWuLJbVeml
	 BnBTcx57RtUAwrrIt9Qo25En1eYvFZGMytyxenYJnWVGKzlkq913a0MQB3w2xIJsh3
	 rVOI6imbh7QLQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757503393; x=1757763893; i=ngoc-tu.dinh@vates.tech;
	bh=J7Bb/P0xs31GBe0VP7ekU93snuILWKRJ11KDfT7pb5c=;
	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=I7+w8hXEkMTxsDyF1bgpJ613G4zHxVJfnC2Hg+rS1xavTfliix++xDxnPbhyKamsb
	 LF/6QEwdVfQExIjXIuYgQLGp2Xii0TeUN/GCqrhfded0n32KUcG+E/9ERYlp1zpUOG
	 h4IVnNc5Vd1TWycSAJSgCemTu9+atC8T1NJQaP5Ds1y5hRf3JniqFmlDk9KUp/ZVF6
	 jMfw3eLjn3zuvJBbh4HO14uOTvO+pzntORT6DDkQHfUR8tgo9amdD1f0fZoi5rfmOr
	 wBof+Su5sbL7YRfavT4Ufu7Mbzx/dnCdRyY4qqtObdwa/DZ8ANiHQEDx4nAmSKxpQu
	 jcnT7q2PiHzAw==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH=2011/11]=20Fix=20CSQ=20lock=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: 1757503392504
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250910112259.106-12-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
References: <20250910112259.106-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.2120f8d12f6d436db6775135414fc7ad?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250910:md
Date: Wed, 10 Sep 2025 11:23:13 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/ring.c   | 16 +++++++++++++++-
 src/xencons/stream.c | 13 ++++++++-----
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/xencons/ring.c b/src/xencons/ring.c
index b7e033c..afa9311 100644
--- a/src/xencons/ring.c
+++ b/src/xencons/ring.c
@@ -173,6 +173,10 @@ RingCsqPeekNextIrp(
 #pragma warning(disable:28167) // function changes IRQL
 
 _Function_class_(IO_CSQ_ACQUIRE_LOCK)
+_Requires_lock_not_held_(Csq)
+_Acquires_lock_(Csq)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_raises_(DISPATCH_LEVEL)
 VOID
 RingCsqAcquireLock(
     _In_ PIO_CSQ                            Csq,
@@ -187,6 +191,9 @@ RingCsqAcquireLock(
 }
 
 _Function_class_(IO_CSQ_RELEASE_LOCK)
+_Requires_lock_held_(Csq)
+_Releases_lock_(Csq)
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 RingCsqReleaseLock(
     _In_ PIO_CSQ                Csq,
@@ -197,6 +204,7 @@ RingCsqReleaseLock(
 
     Queue = CONTAINING_RECORD(Csq, XENCONS_QUEUE, Csq);
 
+    _Analysis_assume_lock_held_(Queue->Lock);
     KeReleaseSpinLock(&Queue->Lock, Irql);
 }
 
@@ -253,6 +261,9 @@ __RingCancelRequests(
     }
 }
 
+_Requires_lock_not_held_(*Argument)
+_Acquires_lock_(*Argument)
+_IRQL_requires_min_(DISPATCH_LEVEL)
 static VOID
 RingAcquireLock(
     _In_ PVOID      Argument
@@ -263,6 +274,9 @@ RingAcquireLock(
     KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
 }
 
+_Requires_lock_held_(*Argument)
+_Releases_lock_(*Argument)
+_IRQL_requires_min_(DISPATCH_LEVEL)
 static VOID
 RingReleaseLock(
     _In_ PVOID      Argument
@@ -270,7 +284,7 @@ RingReleaseLock(
 {
     PXENCONS_RING   Ring = Argument;
 
-#pragma prefast(suppress:26110)
+    _Analysis_assume_lock_held_(Ring->Lock);
     KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
 }
 
diff --git a/src/xencons/stream.c b/src/xencons/stream.c
index 37cd423..8760e7e 100644
--- a/src/xencons/stream.c
+++ b/src/xencons/stream.c
@@ -135,10 +135,11 @@ StreamCsqPeekNextIrp(
     return NextIrp;
 }
 
-#pragma warning(push)
-#pragma warning(disable:28167) // function changes IRQL
-
 _Function_class_(IO_CSQ_ACQUIRE_LOCK)
+_Requires_lock_not_held_(Csq)
+_Acquires_lock_(Csq)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_raises_(DISPATCH_LEVEL)
 VOID
 StreamCsqAcquireLock(
     _In_ PIO_CSQ                            Csq,
@@ -153,6 +154,9 @@ StreamCsqAcquireLock(
 }
 
 _Function_class_(IO_CSQ_RELEASE_LOCK)
+_Requires_lock_held_(Csq)
+_Releases_lock_(Csq)
+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 StreamCsqReleaseLock(
     _In_ PIO_CSQ                Csq,
@@ -163,11 +167,10 @@ StreamCsqReleaseLock(
 
     Stream = CONTAINING_RECORD(Csq, XENCONS_STREAM, Csq);
 
+    _Analysis_assume_lock_held_(Stream->Lock);
     KeReleaseSpinLock(&Stream->Lock, Irql);
 }
 
-#pragma warning(pop)
-
 IO_CSQ_COMPLETE_CANCELED_IRP StreamCsqCompleteCanceledIrp;
 
 VOID
-- 
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 Sep 11 08:53:38 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 11 Sep 2025 08:53:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1119807.1465023 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwd3f-0006ja-OH; Thu, 11 Sep 2025 08:53:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1119807.1465023; Thu, 11 Sep 2025 08:53:35 +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 1uwd3f-0006jS-LV; Thu, 11 Sep 2025 08:53:35 +0000
Received: by outflank-mailman (input) for mailman id 1119807;
 Thu, 11 Sep 2025 08:53:34 +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=xVOE=3W=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uwd3e-0006jM-R0
 for win-pv-devel@lists.xenproject.org; Thu, 11 Sep 2025 08:53:34 +0000
Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com
 [2607:f8b0:4864:20::533])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id caff4393-8eec-11f0-9809-7dc792cee155;
 Thu, 11 Sep 2025 10:53:32 +0200 (CEST)
Received: by mail-pg1-x533.google.com with SMTP id
 41be03b00d2f7-b482fd89b0eso429623a12.2
 for <win-pv-devel@lists.xenproject.org>; Thu, 11 Sep 2025 01:53:32 -0700 (PDT)
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: caff4393-8eec-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757580811; x=1758185611; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=geDCIWGh4mYJMs8VRlOciYKUox6qkhnPKEq13vnIe4g=;
        b=Yfe9g4YsFN6r/VPlqW5eselrEqGK16gN5O1/5sRoNs8Gk3V/a0NOYvr2ma9DfcpojU
         d7j6My8kzmkpIzs/EP03tG3F2pcuzkWRpiWhvrn64yHTOOHzXD+pyCbfXqd07P0kPPj+
         KA9uBX2ABBk//F5vi8EiuQseySAQzjGyFFU3c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757580811; x=1758185611;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=geDCIWGh4mYJMs8VRlOciYKUox6qkhnPKEq13vnIe4g=;
        b=CbvdykLdQh5be7VqcVwjfdPMKoZDknWX74lxVzqddau8nEfIjXXfn9kNCsz2jn7L8i
         SD+m/nEOfo4MjN30tPEkZQeXP7b+4+ygMqlOcwOEgEodXszLGwi4MgjgXtnv/dKiL0jm
         ldSa/U8fkkOGT0AdyYtJ+cua5L2jJwXD049y13DpfsfYTdqmbO96FXuqlZAu99z6LxOk
         SmeNxfybbsVdlZNl5ESudaed7OrTD/kNZ9/1imYMMDWqEyoYlFutpyhP6Bt+IpttTte1
         ybJE1uhBqYk2hwsSHO12RC/ZKBMBFvLl5je605dgz5o1ZltKVlIX0QMHkzPdSTsizvzX
         xwtw==
X-Gm-Message-State: AOJu0Yw8N35rkspvgnopjS1pTE/cJznddrrRt1Z/aOrLs5yPa5gwIsGs
	Xq2zshi8nj6xIbRucNgFu2DcZnFowOaV30O+za+E4YZbQCnhPZuo2HvoQ/zOkG344ePgtMM46oo
	Q/diDyCJeJHow/SrkrhYv77wSSsf2yJaTnmwRS2zQnYqHUGqjYl8=
X-Gm-Gg: ASbGncvtlh+g0saDQTHWZ/+faOM0SiPjjf4T9Dgy/XY+Ray/N2gaaXhxI9SmQ1h9ZuT
	J5PB6xr/AHDgmZLXllZij80e4+88Mc4VSQL3OaejvDroA9of0FIsfs3gNI2fX46k28Z6CUUJrtz
	5V1cYXN0dYraJsp/u7bPDCMoIvxUE1wjuWFlJLoUxr/IDDtp4HgLiS8tYapcFBA5qEz/K+HpPwS
	23Bxi45nVwh8q7+
X-Google-Smtp-Source: AGHT+IElNRcn2B25IxJw9Zmjd9Wnp9ex5O4I1Gd7C2dAUyx2KdoyQNJvQuHsnQEmn/q4MG9QOd48UmofSTAk7B4XwlM=
X-Received: by 2002:a17:903:46c5:b0:24c:7861:2ee9 with SMTP id
 d9443c01a7336-2516d52d102mr251905955ad.2.1757580810827; Thu, 11 Sep 2025
 01:53:30 -0700 (PDT)
MIME-Version: 1.0
References: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250910112259.106-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Thu, 11 Sep 2025 09:53:18 +0100
X-Gm-Features: AS18NWCMG6DOzCTX1SxewdPB3NTiC5bASvau20rfKepcNtw83K4PnRE40XfEV_Y
Message-ID: <CAC_UY8_U1HckviZ3Anydr2i47DBfQwRr+a3ZVoGUqW66tfh4mg@mail.gmail.com>
Subject: Re: [XENCONS PATCH 00/11] Use SAL 2.0 annotations
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000e4d703063e82ab56"

--000000000000e4d703063e82ab56
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

All the patches in this series
Reviewed-by: Owen Smith <owen.smith@cloud.com>

On Wed, Sep 10, 2025 at 12:23=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.tech> =
wrote:

> WinPV drivers use old annotations (IN/OUT) that are not checked by the
> compiler.
>
> Convert them to SAL2 for better checking with Code Analysis.
>
> Same as the Xenbus series, this series is split into several parts:
>
> Part 1: Sync converted headers from Xenbus
> * Sync interface headers from Xenbus
> * Sync Registry implementation with Xenbus
> * Sync thread.[ch] from Xenbus
> * Sync utility headers from Xenbus
>
> Part 2: Convert existing annotations
> * Replace old annotations with SAL2 equivalents
> * Switch from CHAR*/WCHAR* to PSTR/PWSTR
>
> Part 3: Suppress new warnings
> * Suppress uninitialized *Interface warning in FdoQueryInterface
> * Suppress warnings with SYSTEM_POWER_STATE asserts
>
> Part 4: Various fixes discovered via SAL annotations
> * Check for IoAttachDeviceToDeviceStack failure in FdoCreate
> * monitor: Fix GetExecutable allocation check
> * Fix CSQ lock annotations
>
> Tu Dinh (11):
>   Sync interface headers from Xenbus
>   Sync Registry implementation with Xenbus
>   Sync thread.[ch] from Xenbus
>   Sync utility headers from Xenbus
>   Replace old annotations with SAL2 equivalents
>   Switch from CHAR*/WCHAR* to PSTR/PWSTR
>   Suppress uninitialized *Interface warning in FdoQueryInterface
>   Suppress warnings with SYSTEM_POWER_STATE asserts
>   Check for IoAttachDeviceToDeviceStack failure in FdoCreate
>   monitor: Fix GetExecutable allocation check
>   Fix CSQ lock annotations
>
>  include/cache_interface.h   |  76 +++----
>  include/console_interface.h |  30 +--
>  include/debug_interface.h   |  30 +--
>  include/evtchn_interface.h  |  72 +++---
>  include/gnttab_interface.h  |  88 ++++----
>  include/store_interface.h   |  84 +++----
>  include/suspend_interface.h |  24 +-
>  src/monitor/monitor.c       | 138 ++++++------
>  src/tty/tty.c               |  46 ++--
>  src/xencons/assert.h        |  34 +--
>  src/xencons/console.c       |  76 +++----
>  src/xencons/console.h       |  10 +-
>  src/xencons/console_abi.h   |  20 +-
>  src/xencons/dbg_print.h     |  35 +--
>  src/xencons/driver.c        |  35 +--
>  src/xencons/fdo.c           | 435 ++++++++++++++++++------------------
>  src/xencons/fdo.h           |  38 ++--
>  src/xencons/frontend.c      | 154 ++++++-------
>  src/xencons/frontend.h      |  22 +-
>  src/xencons/mutex.h         |   4 +-
>  src/xencons/names.h         |  36 +--
>  src/xencons/pdo.c           | 280 +++++++++++------------
>  src/xencons/pdo.h           |  40 ++--
>  src/xencons/registry.c      | 348 ++++++++++++++++++++---------
>  src/xencons/registry.h      | 144 ++++++------
>  src/xencons/ring.c          | 147 ++++++------
>  src/xencons/ring.h          |  30 +--
>  src/xencons/stream.c        |  71 +++---
>  src/xencons/stream.h        |  10 +-
>  src/xencons/thread.c        |  40 ++--
>  src/xencons/thread.h        |  18 +-
>  src/xencons/util.h          |  90 ++++----
>  32 files changed, 1444 insertions(+), 1261 deletions(-)
>
> --
> 2.51.0.windows.1
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000e4d703063e82ab56
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">All the patches in this series</div><div class=3D"gmail_default" style=
=3D"font-family:monospace">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:ow=
en.smith@cloud.com">owen.smith@cloud.com</a>&gt;</div></div><br><div class=
=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr=
">On Wed, Sep 10, 2025 at 12:23=E2=80=AFPM Tu Dinh &lt;ngoc-tu.dinh@vates.t=
ech&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">W=
inPV drivers use old annotations (IN/OUT) that are not checked by the compi=
ler.<br>
<br>
Convert them to SAL2 for better checking with Code Analysis.<br>
<br>
Same as the Xenbus series, this series is split into several parts:<br>
<br>
Part 1: Sync converted headers from Xenbus<br>
* Sync interface headers from Xenbus<br>
* Sync Registry implementation with Xenbus<br>
* Sync thread.[ch] from Xenbus<br>
* Sync utility headers from Xenbus<br>
<br>
Part 2: Convert existing annotations<br>
* Replace old annotations with SAL2 equivalents<br>
* Switch from CHAR*/WCHAR* to PSTR/PWSTR<br>
<br>
Part 3: Suppress new warnings<br>
* Suppress uninitialized *Interface warning in FdoQueryInterface<br>
* Suppress warnings with SYSTEM_POWER_STATE asserts<br>
<br>
Part 4: Various fixes discovered via SAL annotations<br>
* Check for IoAttachDeviceToDeviceStack failure in FdoCreate<br>
* monitor: Fix GetExecutable allocation check<br>
* Fix CSQ lock annotations<br>
<br>
Tu Dinh (11):<br>
=C2=A0 Sync interface headers from Xenbus<br>
=C2=A0 Sync Registry implementation with Xenbus<br>
=C2=A0 Sync thread.[ch] from Xenbus<br>
=C2=A0 Sync utility headers from Xenbus<br>
=C2=A0 Replace old annotations with SAL2 equivalents<br>
=C2=A0 Switch from CHAR*/WCHAR* to PSTR/PWSTR<br>
=C2=A0 Suppress uninitialized *Interface warning in FdoQueryInterface<br>
=C2=A0 Suppress warnings with SYSTEM_POWER_STATE asserts<br>
=C2=A0 Check for IoAttachDeviceToDeviceStack failure in FdoCreate<br>
=C2=A0 monitor: Fix GetExecutable allocation check<br>
=C2=A0 Fix CSQ lock annotations<br>
<br>
=C2=A0include/cache_interface.h=C2=A0 =C2=A0|=C2=A0 76 +++----<br>
=C2=A0include/console_interface.h |=C2=A0 30 +--<br>
=C2=A0include/debug_interface.h=C2=A0 =C2=A0|=C2=A0 30 +--<br>
=C2=A0include/evtchn_interface.h=C2=A0 |=C2=A0 72 +++---<br>
=C2=A0include/gnttab_interface.h=C2=A0 |=C2=A0 88 ++++----<br>
=C2=A0include/store_interface.h=C2=A0 =C2=A0|=C2=A0 84 +++----<br>
=C2=A0include/suspend_interface.h |=C2=A0 24 +-<br>
=C2=A0src/monitor/monitor.c=C2=A0 =C2=A0 =C2=A0 =C2=A0| 138 ++++++------<br=
>
=C2=A0src/tty/tty.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=
=C2=A0 46 ++--<br>
=C2=A0src/xencons/assert.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 34 +--<br>
=C2=A0src/xencons/console.c=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 76 +++----<br=
>
=C2=A0src/xencons/console.h=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 10 +-<br>
=C2=A0src/xencons/console_abi.h=C2=A0 =C2=A0|=C2=A0 20 +-<br>
=C2=A0src/xencons/dbg_print.h=C2=A0 =C2=A0 =C2=A0|=C2=A0 35 +--<br>
=C2=A0src/xencons/driver.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 35 +--<br>
=C2=A0src/xencons/fdo.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 435 +++++=
+++++++++++++------------------<br>
=C2=A0src/xencons/fdo.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 38 =
++--<br>
=C2=A0src/xencons/frontend.c=C2=A0 =C2=A0 =C2=A0 | 154 ++++++-------<br>
=C2=A0src/xencons/frontend.h=C2=A0 =C2=A0 =C2=A0 |=C2=A0 22 +-<br>
=C2=A0src/xencons/mutex.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A04 =
+-<br>
=C2=A0src/xencons/names.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 36 +--<b=
r>
=C2=A0src/xencons/pdo.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 280 +++++=
++++++------------<br>
=C2=A0src/xencons/pdo.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 40 =
++--<br>
=C2=A0src/xencons/registry.c=C2=A0 =C2=A0 =C2=A0 | 348 ++++++++++++++++++++=
---------<br>
=C2=A0src/xencons/registry.h=C2=A0 =C2=A0 =C2=A0 | 144 ++++++------<br>
=C2=A0src/xencons/ring.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 147 ++++++----=
--<br>
=C2=A0src/xencons/ring.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 30 +--<b=
r>
=C2=A0src/xencons/stream.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 71 +++---<br>
=C2=A0src/xencons/stream.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 10 +-<br>
=C2=A0src/xencons/thread.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 40 ++--<br>
=C2=A0src/xencons/thread.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 18 +-<br>
=C2=A0src/xencons/util.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 90 ++++-=
---<br>
=C2=A032 files changed, 1444 insertions(+), 1261 deletions(-)<br>
<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000e4d703063e82ab56--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 11 11:39:38 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 11 Sep 2025 11:39:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1120037.1465137 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwfeK-0007Pi-Jr; Thu, 11 Sep 2025 11:39:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1120037.1465137; Thu, 11 Sep 2025 11:39: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 1uwfeK-0007Pa-Gp; Thu, 11 Sep 2025 11:39:36 +0000
Received: by outflank-mailman (input) for mailman id 1120037;
 Thu, 11 Sep 2025 11:39:34 +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=GTkF=3W=bounce.vates.tech=bounce-md_30504962.68c2b4ee.v1-576f3f9eac394e8587dbc8eb4b0dfed1@srs-se1.protection.inumbo.net>)
 id 1uwfeI-0007PU-LZ
 for win-pv-devel@lists.xenproject.org; Thu, 11 Sep 2025 11:39:34 +0000
Received: from mail132-6.atl131.mandrillapp.com
 (mail132-6.atl131.mandrillapp.com [198.2.132.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f92d249f-8f03-11f0-9809-7dc792cee155;
 Thu, 11 Sep 2025 13:39:29 +0200 (CEST)
Received: from pmta09.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail132-6.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4cMwZQ5Gxhz2K1s31
 for <win-pv-devel@lists.xenproject.org>; Thu, 11 Sep 2025 11:39:26 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 576f3f9eac394e8587dbc8eb4b0dfed1; Thu, 11 Sep 2025 11:39:26 +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: f92d249f-8f03-11f0-9809-7dc792cee155
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1757590766; x=1757860766;
	bh=CVfcX/PFANTAMeAfHBE66Ylko2xq8+u2KSJnlXC5Beg=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=bNKe7u2MIP8NvuA+CgH85eu+lACs8yJOidl99mck8/PJi000SuKNAo5nqZBtvojDI
	 HQdNqOGtK/vc79EVmx1W6DHyhj7qzZW7x4QumQj18FEojF6hY3qtXX//BxCL45PQYQ
	 FoWDJ+fTmjeK8PNkzH/O8S/XSDlBDLnjXoP+M3u0ja4d0uVE3Imn8/SV4t/irHNGZi
	 59JeJ2jAF3W98o39dkJ8eOO3Vn514ienVU8+4DVrJ8yxg22ITOUVnBaT3/iCMzS+4q
	 y2ASCq4TDSFYvtxQqu7JtJI19BuhIGGelahMUPV/Fwz05e7t2oBeYFDvkVJFm4WHpk
	 1XhpZuU7ezX0A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1757590766; x=1757851266; i=ngoc-tu.dinh@vates.tech;
	bh=CVfcX/PFANTAMeAfHBE66Ylko2xq8+u2KSJnlXC5Beg=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=JUtUjVMt2w4Q/oUCaQXx7POzWtNmdToBdReY61edXLmqQlGk1t+ofFkTeNen9rLBv
	 WyfTqA2lGjsGgN4M7aoZO1oVgHVpbd8jJ0hzcSYk2HFLNDQYuegRLpTNjwZlDQ4qZw
	 1npIpxOpXO+8ZyVhuZfdSgChr9sh2bdqsooHOJnuOKuTaToknYHV6xp4mFAZPrstg4
	 fRD3Mg14I0PcP2J1EMB4NfljUGtPsUTYn58j0HKxaqLDzsEW0oMHQ+mU+Tw9kSitxj
	 XRQQnJyRABD93o8hbdZiDPXWkFtPKmCBjr95l5sCv0Sk5gQBAsWJbNgrtaspHjDjt4
	 LdD6DygAy0cww==
From: "Tu Dinh" <ngoc-tu.dinh@vates.tech>
Subject: =?utf-8?Q?[XENCONS=20PATCH]=20Fix=20wrong=20driver=20name=20in=20=5F=5FFdoMatchDistribution?=
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: 1757590766050
To: win-pv-devel@lists.xenproject.org
Cc: "Tu Dinh" <ngoc-tu.dinh@vates.tech>, "Owen Smith" <owen.smith@cloud.com>
Message-Id: <20250911113913.1364-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.576f3f9eac394e8587dbc8eb4b0dfed1?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20250911:md
Date: Thu, 11 Sep 2025 11:39:26 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

The PSTR conversion accidentally replaced the driver name from XENCONS
to XENBUS.

Fixes: b97b41d86c78 ("Switch from CHAR*/WCHAR* to PSTR/PWSTR")
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
---
 src/xencons/fdo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
index e2ebcac..0e55667 100644
--- a/src/xencons/fdo.c
+++ b/src/xencons/fdo.c
@@ -1050,7 +1050,7 @@ __FdoMatchDistribution(
         }
     }
 
-    Text = "XENBUS";
+    Text = "XENCONS";
 
     if (_stricmp(Product, Text) != 0)
         Match = FALSE;
-- 
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 Sep 11 11:45:14 2025
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 11 Sep 2025 11:45:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1120039.1465140 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1uwfjl-0008UL-0x; Thu, 11 Sep 2025 11:45:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1120039.1465140; Thu, 11 Sep 2025 11:45:13 +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 1uwfjk-0008UE-UG; Thu, 11 Sep 2025 11:45:12 +0000
Received: by outflank-mailman (input) for mailman id 1120039;
 Thu, 11 Sep 2025 11:45:11 +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=xVOE=3W=cloud.com=owen.smith@srs-se1.protection.inumbo.net>)
 id 1uwfjj-0008U2-Le
 for win-pv-devel@lists.xenproject.org; Thu, 11 Sep 2025 11:45:11 +0000
Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com
 [2607:f8b0:4864:20::52a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c4aee813-8f04-11f0-9d13-b5c5bf9af7f9;
 Thu, 11 Sep 2025 13:45:10 +0200 (CEST)
Received: by mail-pg1-x52a.google.com with SMTP id
 41be03b00d2f7-b47173749dbso433940a12.1
 for <win-pv-devel@lists.xenproject.org>; Thu, 11 Sep 2025 04:45:09 -0700 (PDT)
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: c4aee813-8f04-11f0-9d13-b5c5bf9af7f9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1757591108; x=1758195908; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=7X9xEMFIfqSXz8BQltWUbRstv4qt9cZotmBgbTaDiCo=;
        b=g8YERVClY6Z5bF2KeRnxm9Z/Me8mjnrrqRVEQJ8vSomokWYw66bCFSWfsGvx+V8r/8
         lcWt4YvfRp0Cr7llET+MqkdvZCdKVyNa1fK57kiL37522qwkFVoiwWMWHReK2f51yHWc
         /gRbHlNJPV54yYL5PLcxzW6O3sCH9TUItD7gI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1757591108; x=1758195908;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=7X9xEMFIfqSXz8BQltWUbRstv4qt9cZotmBgbTaDiCo=;
        b=DTY5FPgboQOB3K0yrWh/1YWb0WHRQgp3Aiz8UE9D8RkvEktAV3McEaFyW3vNYQeq4y
         s9Qizl6yQ/+qqhuV360RBZtTIV3qqSLuNqe20+gAOLth8TwtDaLTZm3HiY7z51O+Vzwp
         fkTA3kzhnH+bNxWmbzTDjxA0jUlpKMojKS7dcONDTw6QWT+BvE7YAJuLEwh0gWVYPa0O
         LrSWp7Re2flf8XrPV57D2MQHWT2DuLtxG3ovGEJHuLJlXxJI+yik+T0t5DCEzyvt8JwH
         s+p0fJEeUEKc7Wf7EhJTlLt2CmInmKDbugnAahly006nSMgUZfuLMPAeuGZ3NvskzaC9
         xDNg==
X-Gm-Message-State: AOJu0Yzpotc5/+W1k1OLNgNAgTsy3z1R/vy+T38IKjcsDnxt916agRd1
	9k2uHuyUAxx0DkPv6Je6WNkB2q4sNPNBLBJ2NhL/jD0mKH933bgqKfmIsxMFwTxfcqvY++BsfTy
	lZMYpBqyzwuBHWG8W6pzBqE60ammVLtlYV2Cml0bU
X-Gm-Gg: ASbGncsqxisLQOn8cUYUEDlcoXSngdlR/eXn7u7mAQYHC4SJIjNG0W0kL6hoLT3dg90
	IFKXKJW/BH7qyh1RGUwo9TsoabVAvqUTQepXFSeLO68VgQWsOW++6KMLWQOE25qjuIus3khIPKq
	PpJCclsbGMMv0EhBLgX7U17ZqSTaTCLQ5dbHbz7oLF8008Abk95rmxs/nr47xhwzTuDvDucs22t
	JE4qI4aIernM1BkhA==
X-Google-Smtp-Source: AGHT+IFW3I2bXlbvUMMeu8biUQUPJCZ6mjgPpXi8T0b7FfG6iKTtYbXEjl3Ty8MQCoc9yGrE5gC91lL35vJoQ5rmNcg=
X-Received: by 2002:a17:902:db01:b0:24d:e8f5:13b1 with SMTP id
 d9443c01a7336-25171bc0549mr239021945ad.40.1757591108252; Thu, 11 Sep 2025
 04:45:08 -0700 (PDT)
MIME-Version: 1.0
References: <20250911113913.1364-1-ngoc-tu.dinh@vates.tech>
In-Reply-To: <20250911113913.1364-1-ngoc-tu.dinh@vates.tech>
From: Owen Smith <owen.smith@cloud.com>
Date: Thu, 11 Sep 2025 12:44:56 +0100
X-Gm-Features: AS18NWCTVt_8AIhvpt-SMRycReKu9BrjUOi-SFW3sd_kwDV9gdD7_dLU5uGBi1Y
Message-ID: <CAC_UY89=iV3qj7Mykc3aNN35+39-_eNNtM5rRZt8A3RS_j73DA@mail.gmail.com>
Subject: Re: [XENCONS PATCH] Fix wrong driver name in __FdoMatchDistribution
To: Tu Dinh <ngoc-tu.dinh@vates.tech>
Cc: win-pv-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000ab1bf1063e851110"

--000000000000ab1bf1063e851110
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

On Thu, Sep 11, 2025 at 12:39=E2=80=AFPM Tu Dinh <ngoc-tu.dinh@vates.tech> =
wrote:

> The PSTR conversion accidentally replaced the driver name from XENCONS
> to XENBUS.
>
> Fixes: b97b41d86c78 ("Switch from CHAR*/WCHAR* to PSTR/PWSTR")
> Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
> ---
>  src/xencons/fdo.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c
> index e2ebcac..0e55667 100644
> --- a/src/xencons/fdo.c
> +++ b/src/xencons/fdo.c
> @@ -1050,7 +1050,7 @@ __FdoMatchDistribution(
>          }
>      }
>
> -    Text =3D "XENBUS";
> +    Text =3D "XENCONS";
>
>      if (_stricmp(Product, Text) !=3D 0)
>          Match =3D FALSE;
> --
> 2.51.0.windows.1
>
>
>
> --
> Ngoc Tu Dinh | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--000000000000ab1bf1063e851110
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Reviewed-by: Owen Smith &lt;<a href=3D"mailto:owen.smith@cloud.com">owen=
.smith@cloud.com</a>&gt;</div></div><br><div class=3D"gmail_quote gmail_quo=
te_container"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Sep 11, 2025 at=
 12:39=E2=80=AFPM Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt; wrote:<br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex">The PSTR conversion accide=
ntally replaced the driver name from XENCONS<br>
to XENBUS.<br>
<br>
Fixes: b97b41d86c78 (&quot;Switch from CHAR*/WCHAR* to PSTR/PWSTR&quot;)<br=
>
Signed-off-by: Tu Dinh &lt;ngoc-tu.dinh@vates.tech&gt;<br>
---<br>
=C2=A0src/xencons/fdo.c | 2 +-<br>
=C2=A01 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/src/xencons/fdo.c b/src/xencons/fdo.c<br>
index e2ebcac..0e55667 100644<br>
--- a/src/xencons/fdo.c<br>
+++ b/src/xencons/fdo.c<br>
@@ -1050,7 +1050,7 @@ __FdoMatchDistribution(<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0}<br>
<br>
-=C2=A0 =C2=A0 Text =3D &quot;XENBUS&quot;;<br>
+=C2=A0 =C2=A0 Text =3D &quot;XENCONS&quot;;<br>
<br>
=C2=A0 =C2=A0 =C2=A0if (_stricmp(Product, Text) !=3D 0)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Match =3D FALSE;<br>
-- <br>
2.51.0.windows.1<br>
<br>
<br>
<br>
--<br>
Ngoc Tu Dinh | Vates XCP-ng Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div>

--000000000000ab1bf1063e851110--


