From win-pv-devel-bounces@lists.xenproject.org Tue Sep 02 15:55:55 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 02 Sep 2014 15:55:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XOqR1-000344-CN; Tue, 02 Sep 2014 15:55:55 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>) id 1XOqR0-00033w-H0
	for Win-pv-devel@lists.xenproject.org; Tue, 02 Sep 2014 15:55:54 +0000
Received: from [193.109.254.147:50809] by server-7.bemta-14.messagelabs.com id
	83/8A-13362-988E5045; Tue, 02 Sep 2014 15:55:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1409673353!12923457!1
X-Originating-IP: [74.125.82.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21206 invoked from network); 2 Sep 2014 15:55:53 -0000
Received: from mail-we0-f172.google.com (HELO mail-we0-f172.google.com)
	(74.125.82.172)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Sep 2014 15:55:53 -0000
Received: by mail-we0-f172.google.com with SMTP id q59so7214486wes.31
	for <Win-pv-devel@lists.xenproject.org>;
	Tue, 02 Sep 2014 08:55:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:content-transfer-encoding:subject:message-id:date
	:to:mime-version;
	bh=ITOKNYvq/3GvUz/5GqKRFaFuhWV3C2DxyT5bcUYMNnQ=;
	b=w67yTE5bUyrQ56JGBnq0ATqxm/0ET1GZ62fYT3HDqDoVehJYcORcdTVfBjJZhi9o2o
	3CFA9zYbJBlyuksnlv7g6Ntlf0N2f3Iod76cVZa78j9jimREW9zV35hBShWfOnK5DqpH
	9K5nxyb82XuWPQ3rUOSc+DblDNmFlh48QC8OOG05GBYZjI7OD5zJ0tRRtDVAt72A+5rA
	9uRTzUORGS1IkUfNosbplFT2F2kV82Zl/c1rwQiDLJr6Xf9el7NoRcbRmD5ZuboH7NJA
	jFaBzpObTAKOIGZHLvNzfYyYg6J6VgiQHlYxnf/ze0cXuGJa1lKn7MuSZMSQOK8dWWxG
	qmNA==
X-Received: by 10.180.188.141 with SMTP id ga13mr28854951wic.18.1409673352835; 
	Tue, 02 Sep 2014 08:55:52 -0700 (PDT)
Received: from [192.168.0.25] (97e553ce.skybroadband.com. [151.229.83.206])
	by mx.google.com with ESMTPSA id
	ys5sm10328678wjc.25.2014.09.02.08.55.51
	for <Win-pv-devel@lists.xenproject.org>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 02 Sep 2014 08:55:52 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <2D92CE30-8EC2-48AE-95D9-5434723E9B93@gmail.com>
Date: Tue, 2 Sep 2014 16:55:50 +0100
To: Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Subject: [Win-pv-devel] Test Mail
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a test mail to verify that the list is up and running and archives are created
Please ignore
Lars
_______________________________________________
Win-pv-devel mailing list
Win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 02 15:55:55 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 02 Sep 2014 15:55:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XOqR1-000344-CN; Tue, 02 Sep 2014 15:55:55 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>) id 1XOqR0-00033w-H0
	for Win-pv-devel@lists.xenproject.org; Tue, 02 Sep 2014 15:55:54 +0000
Received: from [193.109.254.147:50809] by server-7.bemta-14.messagelabs.com id
	83/8A-13362-988E5045; Tue, 02 Sep 2014 15:55:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1409673353!12923457!1
X-Originating-IP: [74.125.82.172]
X-SpamReason: No, hits=0.0 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21206 invoked from network); 2 Sep 2014 15:55:53 -0000
Received: from mail-we0-f172.google.com (HELO mail-we0-f172.google.com)
	(74.125.82.172)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	2 Sep 2014 15:55:53 -0000
Received: by mail-we0-f172.google.com with SMTP id q59so7214486wes.31
	for <Win-pv-devel@lists.xenproject.org>;
	Tue, 02 Sep 2014 08:55:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:content-transfer-encoding:subject:message-id:date
	:to:mime-version;
	bh=ITOKNYvq/3GvUz/5GqKRFaFuhWV3C2DxyT5bcUYMNnQ=;
	b=w67yTE5bUyrQ56JGBnq0ATqxm/0ET1GZ62fYT3HDqDoVehJYcORcdTVfBjJZhi9o2o
	3CFA9zYbJBlyuksnlv7g6Ntlf0N2f3Iod76cVZa78j9jimREW9zV35hBShWfOnK5DqpH
	9K5nxyb82XuWPQ3rUOSc+DblDNmFlh48QC8OOG05GBYZjI7OD5zJ0tRRtDVAt72A+5rA
	9uRTzUORGS1IkUfNosbplFT2F2kV82Zl/c1rwQiDLJr6Xf9el7NoRcbRmD5ZuboH7NJA
	jFaBzpObTAKOIGZHLvNzfYyYg6J6VgiQHlYxnf/ze0cXuGJa1lKn7MuSZMSQOK8dWWxG
	qmNA==
X-Received: by 10.180.188.141 with SMTP id ga13mr28854951wic.18.1409673352835; 
	Tue, 02 Sep 2014 08:55:52 -0700 (PDT)
Received: from [192.168.0.25] (97e553ce.skybroadband.com. [151.229.83.206])
	by mx.google.com with ESMTPSA id
	ys5sm10328678wjc.25.2014.09.02.08.55.51
	for <Win-pv-devel@lists.xenproject.org>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 02 Sep 2014 08:55:52 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Message-Id: <2D92CE30-8EC2-48AE-95D9-5434723E9B93@gmail.com>
Date: Tue, 2 Sep 2014 16:55:50 +0100
To: Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Subject: [Win-pv-devel] Test Mail
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a test mail to verify that the list is up and running and archives are created
Please ignore
Lars
_______________________________________________
Win-pv-devel mailing list
Win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 16:56:13 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2014 16:56:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XPDqu-0001VB-Vo; Wed, 03 Sep 2014 16:56:12 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>) id 1XPDqs-0001V6-L6
	for Win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2014 16:56:10 +0000
Received: from [193.109.254.147:26613] by server-16.bemta-14.messagelabs.com
	id 39/78-16990-92847045; Wed, 03 Sep 2014 16:56:09 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1409763368!13232336!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.1 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30043 invoked from network); 3 Sep 2014 16:56:08 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Sep 2014 16:56:08 -0000
Received: by mail-wg0-f50.google.com with SMTP id x12so8778912wgg.33
	for <Win-pv-devel@lists.xenproject.org>;
	Wed, 03 Sep 2014 09:56:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:date:message-id:cc:to:mime-version;
	bh=DZNBT0AcfxKn1v5brWvRLvFBSkHoTNj28CixpELlGYo=;
	b=axmBi4W4lxI8VaMHrdepB3Ar0xEbA1pNeI1mp5OU9S50rsNxfHVq6WnnjVNl1anXOk
	/rkx4O/htUrPIhOdGxAaXkaNw+bVDjk9NLAEJCk5bZi6RW3DihCqaoQ9Lvwm7VypdCzl
	+EYXLbzDYV9OhY7ZPoj9rYZupx6VmqExYxMXh6xvulLSvteGlZiQ1MwpMzR0AQwy6qFv
	CKPEH+jQvSo9261kcou9RGhECzo8Jw7yRrkBqmCYt83nwOmBRrw7CL3HFnggT8moh56w
	CXSK9MqO4WLXbz3T57XA/GBYW3wlA4U1EV8WxBE3GzzTnoq3o1DyAizNw6sFWe1UTTP2
	4j1w==
X-Received: by 10.180.212.105 with SMTP id nj9mr31066717wic.51.1409763368236; 
	Wed, 03 Sep 2014 09:56:08 -0700 (PDT)
Received: from [192.168.0.25] (97e553ce.skybroadband.com. [151.229.83.206])
	by mx.google.com with ESMTPSA id js2sm16643429wjc.9.2014.09.03.09.56.06
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 03 Sep 2014 09:56:06 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 3 Sep 2014 17:56:04 +0100
Message-Id: <9DBB8A08-9901-42A7-B3BF-076716E63EB1@gmail.com>
To: Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Cc: paul.durrant@citrix.com
Subject: [Win-pv-devel] Created xenproject page and wiki categories
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4237210777328158183=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============4237210777328158183==
Content-Type: multipart/alternative; boundary="Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B"


--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

Hi all,
I created =
http://www.xenproject.org/developers/teams/windows-pv-drivers.html=20

You may want to start signing up people to the mailing list and start =
using it (as it is there and operational now). Instructions are at =
lists.xenproject.org

I also created a few wiki stubs and a wiki category for the project : =
see http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers - please =
get wiki write access if you don=92t have it (see =
http://wiki.xenproject.org/wiki/Main_Page on the top)

The convention I propose is to create pages of the form=20
Windows_PV_Drivers/<page name> to make navigation easier. At the bottom =
of each of these pages, add [[Category:Windows PV Drivers]]. I would be =
quite happy to make the front page look pretty, using templates (see =
http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotive_PV_Driver=
s as example). But we need some basic content first.

I also created the main page at =
http://xenproject.org/developers/teams/windows-pv-drivers.html
This should hardly ever change. Please review and let me know of any =
changes you want to propose.

At some point we do also need to create an area for downloads at =
http://xenproject.org/downloads.html and a release process. Note that =
what=92s on downloads is basically a few pages that to documents =
(downloads) which can either be hosted on the site or externally. The =
latter makes for a better workflow, which cuts me out of the loop. I can =
also give the project lead access to the site, if that=92s what is =
wanted

Regards
Lars=20=

--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi =
all,<div>I created&nbsp;<a =
href=3D"http://www.xenproject.org/developers/teams/windows-pv-drivers.html=
">http://www.xenproject.org/developers/teams/windows-pv-drivers.html</a>&n=
bsp;</div><div><br></div><div>You may want to start signing up people to =
the mailing list and start using it (as it is there and operational =
now). Instructions are at <a =
href=3D"http://lists.xenproject.org">lists.xenproject.org</a></div><div><b=
r></div><div>I also created a few wiki stubs and a wiki category for the =
project : see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers">http:=
//wiki.xenproject.org/wiki/Category:Windows_PV_Drivers</a>&nbsp;- please =
get wiki write access if you don=92t have it (see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Main_Page">http://wiki.xenproject.=
org/wiki/Main_Page</a>&nbsp;on the top)</div><div><br></div><div>The =
convention I propose is to create pages of the form&nbsp;</div><div><a =
href=3D"http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers">Windo=
ws_PV_Drivers</a>/&lt;page name&gt; to make navigation easier. At the =
bottom of each of these pages, add [[Category:Windows PV Drivers]]. I =
would be quite happy to make the front page look pretty, using templates =
(see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotive_P=
V_Drivers">http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotiv=
e_PV_Drivers</a>&nbsp;as example).&nbsp;But we need some basic content =
first.</div><div><br></div><div>I also created the main page at&nbsp;<a =
href=3D"http://xenproject.org/developers/teams/windows-pv-drivers.html">ht=
tp://xenproject.org/developers/teams/windows-pv-drivers.html</a></div><div=
>This should hardly ever change. Please review and let me know of any =
changes you want to propose.</div><div><br></div><div>At some point we =
do also need to create an area for downloads at&nbsp;<a =
href=3D"http://xenproject.org/downloads.html">http://xenproject.org/downlo=
ads.html</a>&nbsp;and a release process. Note that what=92s on downloads =
is basically a few pages that to documents (downloads) which can either =
be hosted on the site or externally. The latter makes for a better =
workflow, which cuts me out of the loop. I can also give the project =
lead access to the site, if that=92s what is =
wanted</div><div><br></div><div>Regards</div><div>Lars&nbsp;</div></body><=
/html>=

--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B--


--===============4237210777328158183==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Win-pv-devel mailing list
Win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============4237210777328158183==--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 03 16:56:13 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 03 Sep 2014 16:56:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XPDqu-0001VB-Vo; Wed, 03 Sep 2014 16:56:12 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>) id 1XPDqs-0001V6-L6
	for Win-pv-devel@lists.xenproject.org; Wed, 03 Sep 2014 16:56:10 +0000
Received: from [193.109.254.147:26613] by server-16.bemta-14.messagelabs.com
	id 39/78-16990-92847045; Wed, 03 Sep 2014 16:56:09 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1409763368!13232336!1
X-Originating-IP: [74.125.82.50]
X-SpamReason: No, hits=0.1 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30043 invoked from network); 3 Sep 2014 16:56:08 -0000
Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com)
	(74.125.82.50)
	by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Sep 2014 16:56:08 -0000
Received: by mail-wg0-f50.google.com with SMTP id x12so8778912wgg.33
	for <Win-pv-devel@lists.xenproject.org>;
	Wed, 03 Sep 2014 09:56:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:subject:date:message-id:cc:to:mime-version;
	bh=DZNBT0AcfxKn1v5brWvRLvFBSkHoTNj28CixpELlGYo=;
	b=axmBi4W4lxI8VaMHrdepB3Ar0xEbA1pNeI1mp5OU9S50rsNxfHVq6WnnjVNl1anXOk
	/rkx4O/htUrPIhOdGxAaXkaNw+bVDjk9NLAEJCk5bZi6RW3DihCqaoQ9Lvwm7VypdCzl
	+EYXLbzDYV9OhY7ZPoj9rYZupx6VmqExYxMXh6xvulLSvteGlZiQ1MwpMzR0AQwy6qFv
	CKPEH+jQvSo9261kcou9RGhECzo8Jw7yRrkBqmCYt83nwOmBRrw7CL3HFnggT8moh56w
	CXSK9MqO4WLXbz3T57XA/GBYW3wlA4U1EV8WxBE3GzzTnoq3o1DyAizNw6sFWe1UTTP2
	4j1w==
X-Received: by 10.180.212.105 with SMTP id nj9mr31066717wic.51.1409763368236; 
	Wed, 03 Sep 2014 09:56:08 -0700 (PDT)
Received: from [192.168.0.25] (97e553ce.skybroadband.com. [151.229.83.206])
	by mx.google.com with ESMTPSA id js2sm16643429wjc.9.2014.09.03.09.56.06
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 03 Sep 2014 09:56:06 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 3 Sep 2014 17:56:04 +0100
Message-Id: <9DBB8A08-9901-42A7-B3BF-076716E63EB1@gmail.com>
To: Win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Cc: paul.durrant@citrix.com
Subject: [Win-pv-devel] Created xenproject page and wiki categories
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============4237210777328158183=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============4237210777328158183==
Content-Type: multipart/alternative; boundary="Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B"


--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

Hi all,
I created =
http://www.xenproject.org/developers/teams/windows-pv-drivers.html=20

You may want to start signing up people to the mailing list and start =
using it (as it is there and operational now). Instructions are at =
lists.xenproject.org

I also created a few wiki stubs and a wiki category for the project : =
see http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers - please =
get wiki write access if you don=92t have it (see =
http://wiki.xenproject.org/wiki/Main_Page on the top)

The convention I propose is to create pages of the form=20
Windows_PV_Drivers/<page name> to make navigation easier. At the bottom =
of each of these pages, add [[Category:Windows PV Drivers]]. I would be =
quite happy to make the front page look pretty, using templates (see =
http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotive_PV_Driver=
s as example). But we need some basic content first.

I also created the main page at =
http://xenproject.org/developers/teams/windows-pv-drivers.html
This should hardly ever change. Please review and let me know of any =
changes you want to propose.

At some point we do also need to create an area for downloads at =
http://xenproject.org/downloads.html and a release process. Note that =
what=92s on downloads is basically a few pages that to documents =
(downloads) which can either be hosted on the site or externally. The =
latter makes for a better workflow, which cuts me out of the loop. I can =
also give the project lead access to the site, if that=92s what is =
wanted

Regards
Lars=20=

--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi =
all,<div>I created&nbsp;<a =
href=3D"http://www.xenproject.org/developers/teams/windows-pv-drivers.html=
">http://www.xenproject.org/developers/teams/windows-pv-drivers.html</a>&n=
bsp;</div><div><br></div><div>You may want to start signing up people to =
the mailing list and start using it (as it is there and operational =
now). Instructions are at <a =
href=3D"http://lists.xenproject.org">lists.xenproject.org</a></div><div><b=
r></div><div>I also created a few wiki stubs and a wiki category for the =
project : see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers">http:=
//wiki.xenproject.org/wiki/Category:Windows_PV_Drivers</a>&nbsp;- please =
get wiki write access if you don=92t have it (see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Main_Page">http://wiki.xenproject.=
org/wiki/Main_Page</a>&nbsp;on the top)</div><div><br></div><div>The =
convention I propose is to create pages of the form&nbsp;</div><div><a =
href=3D"http://wiki.xenproject.org/wiki/Category:Windows_PV_Drivers">Windo=
ws_PV_Drivers</a>/&lt;page name&gt; to make navigation easier. At the =
bottom of each of these pages, add [[Category:Windows PV Drivers]]. I =
would be quite happy to make the front page look pretty, using templates =
(see&nbsp;<a =
href=3D"http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotive_P=
V_Drivers">http://wiki.xenproject.org/wiki/Category:Embedded_and_Automotiv=
e_PV_Drivers</a>&nbsp;as example).&nbsp;But we need some basic content =
first.</div><div><br></div><div>I also created the main page at&nbsp;<a =
href=3D"http://xenproject.org/developers/teams/windows-pv-drivers.html">ht=
tp://xenproject.org/developers/teams/windows-pv-drivers.html</a></div><div=
>This should hardly ever change. Please review and let me know of any =
changes you want to propose.</div><div><br></div><div>At some point we =
do also need to create an area for downloads at&nbsp;<a =
href=3D"http://xenproject.org/downloads.html">http://xenproject.org/downlo=
ads.html</a>&nbsp;and a release process. Note that what=92s on downloads =
is basically a few pages that to documents (downloads) which can either =
be hosted on the site or externally. The latter makes for a better =
workflow, which cuts me out of the loop. I can also give the project =
lead access to the site, if that=92s what is =
wanted</div><div><br></div><div>Regards</div><div>Lars&nbsp;</div></body><=
/html>=

--Apple-Mail=_F0C75B1B-9FD6-4CF3-A674-E140E9774B6B--


--===============4237210777328158183==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Win-pv-devel mailing list
Win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============4237210777328158183==--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 18 00:30:46 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 18 Sep 2014 00:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUPcU-0008Aw-0e; Thu, 18 Sep 2014 00:30:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XUPcR-0008Ac-V7; Thu, 18 Sep 2014 00:30:44 +0000
Received: from [85.158.137.68:59848] by server-13.bemta-3.messagelabs.com id
	8A/AA-01569-2B72A145; Thu, 18 Sep 2014 00:30:42 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1411000240!15156899!1
X-Originating-IP: [209.85.220.46]
X-SpamReason: No, hits=0.0 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16211 invoked from network); 18 Sep 2014 00:30:42 -0000
Received: from mail-pa0-f46.google.com (HELO mail-pa0-f46.google.com)
	(209.85.220.46)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	18 Sep 2014 00:30:42 -0000
Received: by mail-pa0-f46.google.com with SMTP id kq14so207216pab.5
	for <multiple recipients>; Wed, 17 Sep 2014 17:30:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:content-transfer-encoding:subject:date:message-id
	:cc:to:mime-version;
	bh=E7Pt2dZ96g74aMz5kdyecWvBnR6oVI+xQzvPH2buNhM=;
	b=jw6E+gGEEgUN0aSvFYKFftAAA38Bk5CPWIFAi/TvNBTB715uduKMIvc3FOu3ZIV3QM
	N2NCVLHApizZgU0h/uCPBViDiD3dVvjY/pcJK0XEC2PjQj7cu2X4l9L45uBM468cXLx0
	0ZO6xrBkIv77FtZguhRpHAAsX248zgyd4qu53TSd5NyRnEiTOyz/gthPKxo5eDC/+xk0
	0Y8TtHD3xVD7T7cRyKpsnQxAMnZIcH2/1RVXrk7uHfk2b84Pcuu7i149ljWEa0b8expa
	L/ZjG5c10qSDN9gIV6nzNOsceXuhxT5giMmyq08g6WhHFnX70IIdJpvpw4qt2Fe7rJ0T
	ZqCQ==
X-Received: by 10.67.23.136 with SMTP id ia8mr724670pad.125.1411000240107;
	Wed, 17 Sep 2014 17:30:40 -0700 (PDT)
Received: from [10.253.1.89] (70-35-38-154.static.wiline.com. [70.35.38.154])
	by mx.google.com with ESMTPSA id
	y1sm17939397pbt.74.2014.09.17.17.30.38 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 17 Sep 2014 17:30:39 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 17 Sep 2014 17:30:29 -0700
Message-Id: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
To: xen-devel <xen-devel@lists.xenproject.org>, mirageos-devel@xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>,
	artem Mygaiev <artem.mygaiev@globallogic.com>,
	win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Cc: Russell Pavlicek <russell.pavlicek@citrix.com>
Subject: [win-pv-devel] Location of next Xen Project Developer Summit / User
	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Hi all,

I am CC=92ing all the subprojects (and project leads of sub projects who ar=
e not yet fully operational in terms of infrastructure) to get feedback on =
next years events. I know we all agreed that we would alternate between Eur=
ope and the US, but this may be challenging next year, because there may no=
t be enough space. So I wanted to get your feed and will need to make a dec=
ision before the next Advisory Board meeting in October. Ideally well befor=
e.

Let me lay out what I know.
* LinuxCon US will be in Seattle Aug 17-19
* Linux Plumbers will be in Seattle Aug 19, with mini summits Aug 20 & 21st
* There will also be a new Container Con Aug 20 & 21st
* KVM Forum is thinking but have not decided to be in Seattle also sometime=
s between Aug 19 - 21st
* There is just enough space for a Xen Project Summit from Aug 19 - 21st =

* LinuxCon EU is most likely in Brussels end of September, but it is likely=
 that there is not enough space

I also want to move back to a model where we don=92t have a separate user a=
nd developer summit. It is to expensive and too hard to organise. What we w=
ould do is have these semi-separate (e.g. User Summit before the Dev Summit=
) and we allow users to stay on and attend the Dev Summit using some discou=
nted tickets if they want. The main rationale is to save cost and get maxim=
um impact from sponsorships to subsidise the event(s).

But we need to make a decision pretty soon. My thinking was the following:
* Developer Summit on 20 & 21st
* Developer Meeting, Board Meetings, Hackspace and Working Group would be h=
eld on the 19th. =

* We could also have a User Focussed Day on the 19th - the limitation is th=
at on the 19th we cannot get rooms holding more than 60 people
* Try to do something together with KVM Forum (E.g. a joint social event or=
 something - assuming they buy into it and decide for Seattle, or a joint H=
ackathon)
* The problem is that this would be a very intensive week and that some peo=
ple may have to juggle schedules as they may have to attend several events.

On the other hand, there is likely not enough space to co-locate with Linux=
Con EU. And we always also have a very big presence at FOSDEM in Brussels. =
So co-locating seems not quite right, as we are almost competing with ourse=
lves in the same location that year.

Please let me know what your preferences are. I can then get back to the Ad=
visory Board and get this closed. And I need to know before the end of the =
month as otherwise we will run out of options.

Best Regards
Lars
_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 18 00:30:46 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 18 Sep 2014 00:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUPcU-0008Aw-0e; Thu, 18 Sep 2014 00:30:46 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XUPcR-0008Ac-V7; Thu, 18 Sep 2014 00:30:44 +0000
Received: from [85.158.137.68:59848] by server-13.bemta-3.messagelabs.com id
	8A/AA-01569-2B72A145; Thu, 18 Sep 2014 00:30:42 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1411000240!15156899!1
X-Originating-IP: [209.85.220.46]
X-SpamReason: No, hits=0.0 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16211 invoked from network); 18 Sep 2014 00:30:42 -0000
Received: from mail-pa0-f46.google.com (HELO mail-pa0-f46.google.com)
	(209.85.220.46)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	18 Sep 2014 00:30:42 -0000
Received: by mail-pa0-f46.google.com with SMTP id kq14so207216pab.5
	for <multiple recipients>; Wed, 17 Sep 2014 17:30:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=from:content-type:content-transfer-encoding:subject:date:message-id
	:cc:to:mime-version;
	bh=E7Pt2dZ96g74aMz5kdyecWvBnR6oVI+xQzvPH2buNhM=;
	b=jw6E+gGEEgUN0aSvFYKFftAAA38Bk5CPWIFAi/TvNBTB715uduKMIvc3FOu3ZIV3QM
	N2NCVLHApizZgU0h/uCPBViDiD3dVvjY/pcJK0XEC2PjQj7cu2X4l9L45uBM468cXLx0
	0ZO6xrBkIv77FtZguhRpHAAsX248zgyd4qu53TSd5NyRnEiTOyz/gthPKxo5eDC/+xk0
	0Y8TtHD3xVD7T7cRyKpsnQxAMnZIcH2/1RVXrk7uHfk2b84Pcuu7i149ljWEa0b8expa
	L/ZjG5c10qSDN9gIV6nzNOsceXuhxT5giMmyq08g6WhHFnX70IIdJpvpw4qt2Fe7rJ0T
	ZqCQ==
X-Received: by 10.67.23.136 with SMTP id ia8mr724670pad.125.1411000240107;
	Wed, 17 Sep 2014 17:30:40 -0700 (PDT)
Received: from [10.253.1.89] (70-35-38-154.static.wiline.com. [70.35.38.154])
	by mx.google.com with ESMTPSA id
	y1sm17939397pbt.74.2014.09.17.17.30.38 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 17 Sep 2014 17:30:39 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 17 Sep 2014 17:30:29 -0700
Message-Id: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
To: xen-devel <xen-devel@lists.xenproject.org>, mirageos-devel@xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>,
	artem Mygaiev <artem.mygaiev@globallogic.com>,
	win-pv-devel@lists.xenproject.org
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
Cc: Russell Pavlicek <russell.pavlicek@citrix.com>
Subject: [win-pv-devel] Location of next Xen Project Developer Summit / User
	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Hi all,

I am CC=92ing all the subprojects (and project leads of sub projects who ar=
e not yet fully operational in terms of infrastructure) to get feedback on =
next years events. I know we all agreed that we would alternate between Eur=
ope and the US, but this may be challenging next year, because there may no=
t be enough space. So I wanted to get your feed and will need to make a dec=
ision before the next Advisory Board meeting in October. Ideally well befor=
e.

Let me lay out what I know.
* LinuxCon US will be in Seattle Aug 17-19
* Linux Plumbers will be in Seattle Aug 19, with mini summits Aug 20 & 21st
* There will also be a new Container Con Aug 20 & 21st
* KVM Forum is thinking but have not decided to be in Seattle also sometime=
s between Aug 19 - 21st
* There is just enough space for a Xen Project Summit from Aug 19 - 21st =

* LinuxCon EU is most likely in Brussels end of September, but it is likely=
 that there is not enough space

I also want to move back to a model where we don=92t have a separate user a=
nd developer summit. It is to expensive and too hard to organise. What we w=
ould do is have these semi-separate (e.g. User Summit before the Dev Summit=
) and we allow users to stay on and attend the Dev Summit using some discou=
nted tickets if they want. The main rationale is to save cost and get maxim=
um impact from sponsorships to subsidise the event(s).

But we need to make a decision pretty soon. My thinking was the following:
* Developer Summit on 20 & 21st
* Developer Meeting, Board Meetings, Hackspace and Working Group would be h=
eld on the 19th. =

* We could also have a User Focussed Day on the 19th - the limitation is th=
at on the 19th we cannot get rooms holding more than 60 people
* Try to do something together with KVM Forum (E.g. a joint social event or=
 something - assuming they buy into it and decide for Seattle, or a joint H=
ackathon)
* The problem is that this would be a very intensive week and that some peo=
ple may have to juggle schedules as they may have to attend several events.

On the other hand, there is likely not enough space to co-locate with Linux=
Con EU. And we always also have a very big presence at FOSDEM in Brussels. =
So co-locating seems not quite right, as we are almost competing with ourse=
lves in the same location that year.

Please let me know what your preferences are. I can then get back to the Ad=
visory Board and get this closed. And I need to know before the end of the =
month as otherwise we will run out of options.

Best Regards
Lars
_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 18 08:58:52 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 18 Sep 2014 08:58:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUXYC-0005YH-Rx; Thu, 18 Sep 2014 08:58:52 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>)
	id 1XUXYB-0005Xw-BU; Thu, 18 Sep 2014 08:58:51 +0000
Received: from [85.158.139.211:53452] by server-15.bemta-5.messagelabs.com id
	7E/83-12002-ACE9A145; Thu, 18 Sep 2014 08:58:50 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-206.messagelabs.com!1411030729!11840021!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29581 invoked from network); 18 Sep 2014 08:58:49 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-15.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	18 Sep 2014 08:58:49 -0000
X-IronPort-AV: E=Sophos;i="5.04,546,1406592000"; d="scan'208";a="24967123"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>, xen-devel
	<xen-devel@lists.xenproject.org>, "mirageos-devel@xenproject.org"
	<mirageos-devel@xenproject.org>, Xen API mailing list
	<xen-api@lists.xen.org>, artem Mygaiev <artem.mygaiev@globallogic.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Location of next Xen Project Developer Summit /
	User	Summit (please respond by end of September)
Thread-Index: AQHP0tfWIw1ig625Wk2IkrfTaLeTnZwGlxwg
Date: Thu, 18 Sep 2014 08:58:48 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Russell Pavlicek <russell.pavlicek@citrix.com>
Subject: Re: [win-pv-devel] Location of next Xen Project Developer Summit /
 User	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Lars Kurth
> Sent: 18 September 2014 01:30
> To: xen-devel; mirageos-devel@xenproject.org; Xen API mailing list; artem
> Mygaiev; win-pv-devel@lists.xenproject.org
> Cc: Russell Pavlicek
> Subject: [win-pv-devel] Location of next Xen Project Developer Summit /
> User Summit (please respond by end of September)
> 
> Hi all,
> 
> I am CC'ing all the subprojects (and project leads of sub projects who are not
> yet fully operational in terms of infrastructure) to get feedback on next years
> events. I know we all agreed that we would alternate between Europe and
> the US, but this may be challenging next year, because there may not be
> enough space. So I wanted to get your feed and will need to make a decision
> before the next Advisory Board meeting in October. Ideally well before.
> 
> Let me lay out what I know.
> * LinuxCon US will be in Seattle Aug 17-19
> * Linux Plumbers will be in Seattle Aug 19, with mini summits Aug 20 & 21st
> * There will also be a new Container Con Aug 20 & 21st
> * KVM Forum is thinking but have not decided to be in Seattle also
> sometimes between Aug 19 - 21st
> * There is just enough space for a Xen Project Summit from Aug 19 - 21st
> * LinuxCon EU is most likely in Brussels end of September, but it is likely that
> there is not enough space
> 
> I also want to move back to a model where we don't have a separate user
> and developer summit. It is to expensive and too hard to organise. What we
> would do is have these semi-separate (e.g. User Summit before the Dev
> Summit) and we allow users to stay on and attend the Dev Summit using
> some discounted tickets if they want. The main rationale is to save cost and
> get maximum impact from sponsorships to subsidise the event(s).
> 
> But we need to make a decision pretty soon. My thinking was the following:
> * Developer Summit on 20 & 21st
> * Developer Meeting, Board Meetings, Hackspace and Working Group would
> be held on the 19th.
> * We could also have a User Focussed Day on the 19th - the limitation is that
> on the 19th we cannot get rooms holding more than 60 people
> * Try to do something together with KVM Forum (E.g. a joint social event or
> something - assuming they buy into it and decide for Seattle, or a joint
> Hackathon)
> * The problem is that this would be a very intensive week and that some
> people may have to juggle schedules as they may have to attend several
> events.
> 

Indeed. Do we really want to be at the same time as KVM forum? I can imagine several folks having clashes.

  Paul

> On the other hand, there is likely not enough space to co-locate with
> LinuxCon EU. And we always also have a very big presence at FOSDEM in
> Brussels. So co-locating seems not quite right, as we are almost competing
> with ourselves in the same location that year.
> 
> Please let me know what your preferences are. I can then get back to the
> Advisory Board and get this closed. And I need to know before the end of
> the month as otherwise we will run out of options.
> 
> Best Regards
> Lars
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 18 08:58:52 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 18 Sep 2014 08:58:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUXYC-0005YH-Rx; Thu, 18 Sep 2014 08:58:52 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>)
	id 1XUXYB-0005Xw-BU; Thu, 18 Sep 2014 08:58:51 +0000
Received: from [85.158.139.211:53452] by server-15.bemta-5.messagelabs.com id
	7E/83-12002-ACE9A145; Thu, 18 Sep 2014 08:58:50 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-206.messagelabs.com!1411030729!11840021!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.11.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29581 invoked from network); 18 Sep 2014 08:58:49 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-15.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	18 Sep 2014 08:58:49 -0000
X-IronPort-AV: E=Sophos;i="5.04,546,1406592000"; d="scan'208";a="24967123"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>, xen-devel
	<xen-devel@lists.xenproject.org>, "mirageos-devel@xenproject.org"
	<mirageos-devel@xenproject.org>, Xen API mailing list
	<xen-api@lists.xen.org>, artem Mygaiev <artem.mygaiev@globallogic.com>, 
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] Location of next Xen Project Developer Summit /
	User	Summit (please respond by end of September)
Thread-Index: AQHP0tfWIw1ig625Wk2IkrfTaLeTnZwGlxwg
Date: Thu, 18 Sep 2014 08:58:48 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Russell Pavlicek <russell.pavlicek@citrix.com>
Subject: Re: [win-pv-devel] Location of next Xen Project Developer Summit /
 User	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Lars Kurth
> Sent: 18 September 2014 01:30
> To: xen-devel; mirageos-devel@xenproject.org; Xen API mailing list; artem
> Mygaiev; win-pv-devel@lists.xenproject.org
> Cc: Russell Pavlicek
> Subject: [win-pv-devel] Location of next Xen Project Developer Summit /
> User Summit (please respond by end of September)
> 
> Hi all,
> 
> I am CC'ing all the subprojects (and project leads of sub projects who are not
> yet fully operational in terms of infrastructure) to get feedback on next years
> events. I know we all agreed that we would alternate between Europe and
> the US, but this may be challenging next year, because there may not be
> enough space. So I wanted to get your feed and will need to make a decision
> before the next Advisory Board meeting in October. Ideally well before.
> 
> Let me lay out what I know.
> * LinuxCon US will be in Seattle Aug 17-19
> * Linux Plumbers will be in Seattle Aug 19, with mini summits Aug 20 & 21st
> * There will also be a new Container Con Aug 20 & 21st
> * KVM Forum is thinking but have not decided to be in Seattle also
> sometimes between Aug 19 - 21st
> * There is just enough space for a Xen Project Summit from Aug 19 - 21st
> * LinuxCon EU is most likely in Brussels end of September, but it is likely that
> there is not enough space
> 
> I also want to move back to a model where we don't have a separate user
> and developer summit. It is to expensive and too hard to organise. What we
> would do is have these semi-separate (e.g. User Summit before the Dev
> Summit) and we allow users to stay on and attend the Dev Summit using
> some discounted tickets if they want. The main rationale is to save cost and
> get maximum impact from sponsorships to subsidise the event(s).
> 
> But we need to make a decision pretty soon. My thinking was the following:
> * Developer Summit on 20 & 21st
> * Developer Meeting, Board Meetings, Hackspace and Working Group would
> be held on the 19th.
> * We could also have a User Focussed Day on the 19th - the limitation is that
> on the 19th we cannot get rooms holding more than 60 people
> * Try to do something together with KVM Forum (E.g. a joint social event or
> something - assuming they buy into it and decide for Seattle, or a joint
> Hackathon)
> * The problem is that this would be a very intensive week and that some
> people may have to juggle schedules as they may have to attend several
> events.
> 

Indeed. Do we really want to be at the same time as KVM forum? I can imagine several folks having clashes.

  Paul

> On the other hand, there is likely not enough space to co-locate with
> LinuxCon EU. And we always also have a very big presence at FOSDEM in
> Brussels. So co-locating seems not quite right, as we are almost competing
> with ourselves in the same location that year.
> 
> Please let me know what your preferences are. I can then get back to the
> Advisory Board and get this closed. And I need to know before the end of
> the month as otherwise we will run out of options.
> 
> Best Regards
> Lars
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 19 09:22:50 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Sep 2014 09:22:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUuOw-0006vG-TB; Fri, 19 Sep 2014 09:22:50 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XUuOv-0006v3-QS
	for win-pv-devel@lists.xenproject.org; Fri, 19 Sep 2014 09:22:49 +0000
Received: from [85.158.139.211:4784] by server-16.bemta-5.messagelabs.com id
	EF/B6-01029-9E5FB145; Fri, 19 Sep 2014 09:22:49 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1411118568!10810531!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24345 invoked from network); 19 Sep 2014 09:22:48 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Sep 2014 09:22:48 -0000
X-IronPort-AV: E=Sophos;i="5.04,554,1406592000"; d="scan'208";a="25018970"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cA
Date: Fri, 19 Sep 2014 09:22:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
In-Reply-To: <541BEF61.8010609@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Moving xen-devel to bcc and adding win-pv-devel...

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 19 September 2014 09:55
> To: xen-devel; Paul Durrant
> Subject: New windows pv drivers question
> 
> Hi, I saw the "new" pvdriver drivers in xen's git repository and the new
> wiki pages about.
> I want start to try them if possible (for example to seems if occasion
> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
> is ejbpv driver or xen problem), I saw that there are 3 repository in
> xenserver's github still missed here but seems with a fast look that all
> essential drivers repositories are in xen's git now.

Fabio,

That's right. I have a blog to introduce the new Xen Project Windows PV Drivers sub-project ready to go but it's run into some technical difficulties; hopefully I'll get it out early next week.
Not all the code that is relevant to XenServer is necessarily relevant to the wider Xen community; e.g. the guest agent and installer are very much XenServer-specific and therefore they do not form part of the sub-project. All the driver code is available on xenbits (under the pvdrivers/win directory) though and it has been stripped of XenServer branding. (The branding is now parameterized and applied at build time, so anyone can build their own branded binaries should they wish to).
 
> Is possible start basic tests of them or there are still other important
> changes and/or fixes to do?
> If is possible start test them there is a testing build available or or
> should I do it?
> 

I am setting up some build infrastructure as part of the sub-project - in fact I just got it going for the first time yesterday - and I hope to have un-branded binary packages available for the community in the very near future.
In the meantime, there are build instructions available on the wiki at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which are fairly straightforward, so you should be able to build your own. Happily Microsoft made building drivers free again the with Windows 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) edition compiler. Note that you don't have to use the Visual Studio IDE; there are python scripts in the driver repositories which wrap the msbuild utility so you can drive it all from the command line :-)

AFAIK the drivers should work in pretty much any host environment: I have been testing them myself on a recent build of xen-unstable using my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you enable test-signing in your VMs.

> Thanks for any reply and sorry for my bad english.

No problem. Please get back to me (cc-ing win-pv-devel) if you do run into difficulties.

Cheers,

    Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 19 09:22:50 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Sep 2014 09:22:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XUuOw-0006vG-TB; Fri, 19 Sep 2014 09:22:50 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XUuOv-0006v3-QS
	for win-pv-devel@lists.xenproject.org; Fri, 19 Sep 2014 09:22:49 +0000
Received: from [85.158.139.211:4784] by server-16.bemta-5.messagelabs.com id
	EF/B6-01029-9E5FB145; Fri, 19 Sep 2014 09:22:49 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-206.messagelabs.com!1411118568!10810531!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24345 invoked from network); 19 Sep 2014 09:22:48 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-9.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Sep 2014 09:22:48 -0000
X-IronPort-AV: E=Sophos;i="5.04,554,1406592000"; d="scan'208";a="25018970"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cA
Date: Fri, 19 Sep 2014 09:22:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
In-Reply-To: <541BEF61.8010609@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Moving xen-devel to bcc and adding win-pv-devel...

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 19 September 2014 09:55
> To: xen-devel; Paul Durrant
> Subject: New windows pv drivers question
> 
> Hi, I saw the "new" pvdriver drivers in xen's git repository and the new
> wiki pages about.
> I want start to try them if possible (for example to seems if occasion
> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
> is ejbpv driver or xen problem), I saw that there are 3 repository in
> xenserver's github still missed here but seems with a fast look that all
> essential drivers repositories are in xen's git now.

Fabio,

That's right. I have a blog to introduce the new Xen Project Windows PV Drivers sub-project ready to go but it's run into some technical difficulties; hopefully I'll get it out early next week.
Not all the code that is relevant to XenServer is necessarily relevant to the wider Xen community; e.g. the guest agent and installer are very much XenServer-specific and therefore they do not form part of the sub-project. All the driver code is available on xenbits (under the pvdrivers/win directory) though and it has been stripped of XenServer branding. (The branding is now parameterized and applied at build time, so anyone can build their own branded binaries should they wish to).
 
> Is possible start basic tests of them or there are still other important
> changes and/or fixes to do?
> If is possible start test them there is a testing build available or or
> should I do it?
> 

I am setting up some build infrastructure as part of the sub-project - in fact I just got it going for the first time yesterday - and I hope to have un-branded binary packages available for the community in the very near future.
In the meantime, there are build instructions available on the wiki at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which are fairly straightforward, so you should be able to build your own. Happily Microsoft made building drivers free again the with Windows 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) edition compiler. Note that you don't have to use the Visual Studio IDE; there are python scripts in the driver repositories which wrap the msbuild utility so you can drive it all from the command line :-)

AFAIK the drivers should work in pretty much any host environment: I have been testing them myself on a recent build of xen-unstable using my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you enable test-signing in your VMs.

> Thanks for any reply and sorry for my bad english.

No problem. Please get back to me (cc-ing win-pv-devel) if you do run into difficulties.

Cheers,

    Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 19 17:51:02 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Sep 2014 17:51:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XV2Kk-0003YK-8o; Fri, 19 Sep 2014 17:51:02 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XV2Ki-0003Y0-T9; Fri, 19 Sep 2014 17:51:01 +0000
Received: from [85.158.137.68:42449] by server-4.bemta-3.messagelabs.com id
	68/78-18709-20D6C145; Fri, 19 Sep 2014 17:50:58 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1411149056!10823604!1
X-Originating-IP: [209.85.213.44]
X-SpamReason: No, hits=0.1 required=7.0 tests=HTML_50_60,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29006 invoked from network); 19 Sep 2014 17:50:57 -0000
Received: from mail-yh0-f44.google.com (HELO mail-yh0-f44.google.com)
	(209.85.213.44)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Sep 2014 17:50:57 -0000
Received: by mail-yh0-f44.google.com with SMTP id v1so764938yhn.3
	for <multiple recipients>; Fri, 19 Sep 2014 10:50:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=content-type:mime-version:subject:from:in-reply-to:date:cc
	:message-id:references:to;
	bh=IrkuB0tD9zY921TyaVkM29/No5sWp2pKagJ9ls617uw=;
	b=mYIQXlL5ERiUmrB5hglVC5F1YqQJBWwPIADgAJomm+dCBDl9I/ZdofQtNDOJhJejLb
	YM/jSA4lNdGD1NopaWzHFrYwBzMRbqQFdd3KT3umIexBsI8qaF5gnCb8ZIoQjL2BjFhn
	zC/CsSi5X0f5mMQdMN6uJpQtr/w8YgVkD5sx5GGIAjHMyp05qp+dV+sYEXYMs+1nDqTC
	n2+AI058RKMIJxxi2FDHymEkrRe87S9u2wwFJWiHX+BamEmCWf5dyWLB7uvWOhOUBd2u
	OH23EhDnfOYM7bTBJCcxPl/yjdrYEcX98495syEc5DjPw8AjXYQoVMcC3hFJaM6EPMrj
	PTOA==
X-Received: by 10.236.222.103 with SMTP id s97mr2402458yhp.106.1411149056189; 
	Fri, 19 Sep 2014 10:50:56 -0700 (PDT)
Received: from [10.252.89.194] ([63.110.51.11])
	by mx.google.com with ESMTPSA id h92sm1075159yhq.21.2014.09.19.10.50.55
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 19 Sep 2014 10:50:55 -0700 (PDT)
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Lars Kurth <lars.kurth.xen@gmail.com>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
Date: Fri, 19 Sep 2014 10:50:51 -0700
Message-Id: <645459A6-BA9D-46AB-B818-1A1B099669ED@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
To: Paul Durrant <Paul.Durrant@citrix.com>
X-Mailer: Apple Mail (2.1878.6)
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	"mirageos-devel@xenproject.org" <mirageos-devel@xenproject.org>,
	xen-devel <xen-devel@lists.xenproject.org>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] Location of next Xen Project Developer Summit /
	User	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2594695154980859783=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============2594695154980859783==
Content-Type: multipart/alternative; boundary="Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749"


--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252


On 18 Sep 2014, at 01:58, Paul Durrant <Paul.Durrant@citrix.com> wrote:
>>=20
>> * The problem is that this would be a very intensive week and that =
some
>> people may have to juggle schedules as they may have to attend =
several
>> events.
>>=20
>=20
> Indeed. Do we really want to be at the same time as KVM forum? I can =
imagine several folks having clashes.
>=20
I don=92t think collocating with KVM Forum is going to be a big issue. =
We had this in the past and at most 2-3 people are affected. Linux =
Plumbers is more challenging. However Stefano told me that the key issue =
would be if the main plumbers day (day 1) overlapped with our event. =
Having the mini summits is probably less of an issue
Lars


--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space;"><br><div><div>On 18 Sep 2014, at 01:58, Paul Durrant =
&lt;<a =
href=3D"mailto:Paul.Durrant@citrix.com">Paul.Durrant@citrix.com</a>&gt; =
wrote:</div><blockquote type=3D"cite"><div style=3D"font-size: 12px; =
font-style: normal; font-variant: normal; font-weight: normal; =
letter-spacing: normal; line-height: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: =
0px;"><blockquote type=3D"cite"><br>* The problem is that this would be =
a very intensive week and that some<br>people may have to juggle =
schedules as they may have to attend =
several<br>events.<br><br></blockquote><br>Indeed. Do we really want to =
be at the same time as KVM forum? I can imagine several folks having =
clashes.<br><br></div></blockquote>I don=92t think collocating with KVM =
Forum is going to be a big issue. We had this in the past and at most =
2-3 people are affected. Linux Plumbers is more challenging. However =
Stefano told me that the key issue would be if the main plumbers day =
(day 1) overlapped with our event. Having the mini summits is probably =
less of an issue</div><div>Lars</div><div><br></div></body></html>=

--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749--


--===============2594695154980859783==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2594695154980859783==--


From win-pv-devel-bounces@lists.xenproject.org Fri Sep 19 17:51:02 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Sep 2014 17:51:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XV2Kk-0003YK-8o; Fri, 19 Sep 2014 17:51:02 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XV2Ki-0003Y0-T9; Fri, 19 Sep 2014 17:51:01 +0000
Received: from [85.158.137.68:42449] by server-4.bemta-3.messagelabs.com id
	68/78-18709-20D6C145; Fri, 19 Sep 2014 17:50:58 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1411149056!10823604!1
X-Originating-IP: [209.85.213.44]
X-SpamReason: No, hits=0.1 required=7.0 tests=HTML_50_60,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29006 invoked from network); 19 Sep 2014 17:50:57 -0000
Received: from mail-yh0-f44.google.com (HELO mail-yh0-f44.google.com)
	(209.85.213.44)
	by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	19 Sep 2014 17:50:57 -0000
Received: by mail-yh0-f44.google.com with SMTP id v1so764938yhn.3
	for <multiple recipients>; Fri, 19 Sep 2014 10:50:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=content-type:mime-version:subject:from:in-reply-to:date:cc
	:message-id:references:to;
	bh=IrkuB0tD9zY921TyaVkM29/No5sWp2pKagJ9ls617uw=;
	b=mYIQXlL5ERiUmrB5hglVC5F1YqQJBWwPIADgAJomm+dCBDl9I/ZdofQtNDOJhJejLb
	YM/jSA4lNdGD1NopaWzHFrYwBzMRbqQFdd3KT3umIexBsI8qaF5gnCb8ZIoQjL2BjFhn
	zC/CsSi5X0f5mMQdMN6uJpQtr/w8YgVkD5sx5GGIAjHMyp05qp+dV+sYEXYMs+1nDqTC
	n2+AI058RKMIJxxi2FDHymEkrRe87S9u2wwFJWiHX+BamEmCWf5dyWLB7uvWOhOUBd2u
	OH23EhDnfOYM7bTBJCcxPl/yjdrYEcX98495syEc5DjPw8AjXYQoVMcC3hFJaM6EPMrj
	PTOA==
X-Received: by 10.236.222.103 with SMTP id s97mr2402458yhp.106.1411149056189; 
	Fri, 19 Sep 2014 10:50:56 -0700 (PDT)
Received: from [10.252.89.194] ([63.110.51.11])
	by mx.google.com with ESMTPSA id h92sm1075159yhq.21.2014.09.19.10.50.55
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 19 Sep 2014 10:50:55 -0700 (PDT)
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Lars Kurth <lars.kurth.xen@gmail.com>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
Date: Fri, 19 Sep 2014 10:50:51 -0700
Message-Id: <645459A6-BA9D-46AB-B818-1A1B099669ED@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047B9DC@AMSPEX01CL01.citrite.net>
To: Paul Durrant <Paul.Durrant@citrix.com>
X-Mailer: Apple Mail (2.1878.6)
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	"mirageos-devel@xenproject.org" <mirageos-devel@xenproject.org>,
	xen-devel <xen-devel@lists.xenproject.org>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] Location of next Xen Project Developer Summit /
	User	Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2594695154980859783=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============2594695154980859783==
Content-Type: multipart/alternative; boundary="Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749"


--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252


On 18 Sep 2014, at 01:58, Paul Durrant <Paul.Durrant@citrix.com> wrote:
>>=20
>> * The problem is that this would be a very intensive week and that =
some
>> people may have to juggle schedules as they may have to attend =
several
>> events.
>>=20
>=20
> Indeed. Do we really want to be at the same time as KVM forum? I can =
imagine several folks having clashes.
>=20
I don=92t think collocating with KVM Forum is going to be a big issue. =
We had this in the past and at most 2-3 people are affected. Linux =
Plumbers is more challenging. However Stefano told me that the key issue =
would be if the main plumbers day (day 1) overlapped with our event. =
Having the mini summits is probably less of an issue
Lars


--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space;"><br><div><div>On 18 Sep 2014, at 01:58, Paul Durrant =
&lt;<a =
href=3D"mailto:Paul.Durrant@citrix.com">Paul.Durrant@citrix.com</a>&gt; =
wrote:</div><blockquote type=3D"cite"><div style=3D"font-size: 12px; =
font-style: normal; font-variant: normal; font-weight: normal; =
letter-spacing: normal; line-height: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: =
0px;"><blockquote type=3D"cite"><br>* The problem is that this would be =
a very intensive week and that some<br>people may have to juggle =
schedules as they may have to attend =
several<br>events.<br><br></blockquote><br>Indeed. Do we really want to =
be at the same time as KVM forum? I can imagine several folks having =
clashes.<br><br></div></blockquote>I don=92t think collocating with KVM =
Forum is going to be a big issue. We had this in the past and at most =
2-3 people are affected. Linux Plumbers is more challenging. However =
Stefano told me that the key issue would be if the main plumbers day =
(day 1) overlapped with our event. Having the mini summits is probably =
less of an issue</div><div>Lars</div><div><br></div></body></html>=

--Apple-Mail=_E88068DA-2100-4CA2-AD7B-7D4864D0F749--


--===============2594695154980859783==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============2594695154980859783==--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 08:43:12 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 08:43:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XVzDE-0000Bh-7M; Mon, 22 Sep 2014 08:43:12 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <grantmasterflash@gmail.com>)
	id 1XVitP-0005KL-2f; Sun, 21 Sep 2014 15:17:39 +0000
Received: from [85.158.143.35:54691] by server-3.bemta-4.messagelabs.com id
	A2/71-06192-21CEE145; Sun, 21 Sep 2014 15:17:38 +0000
X-Env-Sender: grantmasterflash@gmail.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411312656!12120597!1
X-Originating-IP: [209.85.215.43]
X-SpamReason: No, hits=0.4 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17965 invoked from network); 21 Sep 2014 15:17:36 -0000
Received: from mail-la0-f43.google.com (HELO mail-la0-f43.google.com)
	(209.85.215.43)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Sep 2014 15:17:36 -0000
Received: by mail-la0-f43.google.com with SMTP id gi9so5455622lab.30
	for <multiple recipients>; Sun, 21 Sep 2014 08:17:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:from:date:message-id:subject:to
	:cc:content-type;
	bh=PXPm36Sk7nfgVr0QQbLakde+2Fh4+IFMKoPRHLqFMGk=;
	b=hDZAm2LgX9PtuHXFJ9CttMxMo/4uoJ38nOYB2/6esw3WdlN4xpAznlZAqyTnHoRK6d
	wKmBAtsBYytkMmhLHJ/WkqaOs72jNlLH8scQMifhpc5lkPMdcZMBL9BNKhO+YY6hb//o
	RqPmGqnEVVbh4VZ3fVu7tiY8UsIFDJgSxIlLop/TKcCzmADFjebV9dRcvWGKqX8AfOp4
	p+oHEO8rjng3jTSMqdN04rbt+bdKKcwfjjSEbPFpHodIvTVx4z5A5iIwNvqC+B/i0zOz
	P1NwrQ8OLiODtBNCsjxMnjmPYF45984e3NwhWufT7PwaKR00onSjt9SpaKo8rzkjUxwI
	g3lA==
X-Received: by 10.112.200.134 with SMTP id js6mr18784452lbc.0.1411312655620;
	Sun, 21 Sep 2014 08:17:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.114.66.104 with HTTP; Sun, 21 Sep 2014 08:16:55 -0700 (PDT)
In-Reply-To: <20140919191400.GC14124@laptop.dumpdata.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<20140919191400.GC14124@laptop.dumpdata.com>
From: Grant McWilliams <grantmasterflash@gmail.com>
Date: Sun, 21 Sep 2014 08:16:55 -0700
Message-ID: <CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 08:43:11 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	Lars Kurth <lars.kurth.xen@gmail.com>, mirageos-devel@xenproject.org,
	xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
 Project Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0071007577662356321=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============0071007577662356321==
Content-Type: multipart/alternative; boundary=001a11c3838a815f50050394d50a

--001a11c3838a815f50050394d50a
Content-Type: text/plain; charset=UTF-8

>
>
>
> > But we need to make a decision pretty soon. My thinking was the
> following:
> > * Developer Summit on 20 & 21st
> > * Developer Meeting, Board Meetings, Hackspace and Working Group would
> be held on the 19th.
> > * We could also have a User Focussed Day on the 19th - the limitation is
> that on the 19th we cannot get rooms holding more than 60 people
> > * Try to do something together with KVM Forum (E.g. a joint social event
> or something - assuming they buy into it and decide for Seattle, or a joint
> Hackathon)
>

I like. Perhaps the Xen User Summit doesn't need a room holding more than
60 people?

Where is the LinuxCon going to be held in Seattle? Perhaps there's
something close we could use that would have a room large enough?

Grant McWilliams

--001a11c3838a815f50050394d50a
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c=
cc solid;padding-left:1ex"><span class=3D""><br><br>
&gt; But we need to make a decision pretty soon. My thinking was the follow=
ing:<br>
&gt; * Developer Summit on 20 &amp; 21st<br>
&gt; * Developer Meeting, Board Meetings, Hackspace and Working Group would=
 be held on the 19th.<br>
&gt; * We could also have a User Focussed Day on the 19th - the limitation =
is that on the 19th we cannot get rooms holding more than 60 people<br>
&gt; * Try to do something together with KVM Forum (E.g. a joint social eve=
nt or something - assuming they buy into it and decide for Seattle, or a jo=
int Hackathon)<br></span></blockquote><div><br></div><div>I like. Perhaps t=
he Xen User Summit doesn&#39;t need a room holding more than 60 people?</di=
v><div><br></div><div>Where is the LinuxCon going to be held in Seattle? Pe=
rhaps there&#39;s something close we could use that would have a room large=
 enough?</div><div><br></div><div>Grant McWilliams=C2=A0</div></div></div><=
/div>

--001a11c3838a815f50050394d50a--


--===============0071007577662356321==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0071007577662356321==--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 08:43:12 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 08:43:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XVzDE-0000Bh-7M; Mon, 22 Sep 2014 08:43:12 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <grantmasterflash@gmail.com>)
	id 1XVitP-0005KL-2f; Sun, 21 Sep 2014 15:17:39 +0000
Received: from [85.158.143.35:54691] by server-3.bemta-4.messagelabs.com id
	A2/71-06192-21CEE145; Sun, 21 Sep 2014 15:17:38 +0000
X-Env-Sender: grantmasterflash@gmail.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411312656!12120597!1
X-Originating-IP: [209.85.215.43]
X-SpamReason: No, hits=0.4 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17965 invoked from network); 21 Sep 2014 15:17:36 -0000
Received: from mail-la0-f43.google.com (HELO mail-la0-f43.google.com)
	(209.85.215.43)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Sep 2014 15:17:36 -0000
Received: by mail-la0-f43.google.com with SMTP id gi9so5455622lab.30
	for <multiple recipients>; Sun, 21 Sep 2014 08:17:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:from:date:message-id:subject:to
	:cc:content-type;
	bh=PXPm36Sk7nfgVr0QQbLakde+2Fh4+IFMKoPRHLqFMGk=;
	b=hDZAm2LgX9PtuHXFJ9CttMxMo/4uoJ38nOYB2/6esw3WdlN4xpAznlZAqyTnHoRK6d
	wKmBAtsBYytkMmhLHJ/WkqaOs72jNlLH8scQMifhpc5lkPMdcZMBL9BNKhO+YY6hb//o
	RqPmGqnEVVbh4VZ3fVu7tiY8UsIFDJgSxIlLop/TKcCzmADFjebV9dRcvWGKqX8AfOp4
	p+oHEO8rjng3jTSMqdN04rbt+bdKKcwfjjSEbPFpHodIvTVx4z5A5iIwNvqC+B/i0zOz
	P1NwrQ8OLiODtBNCsjxMnjmPYF45984e3NwhWufT7PwaKR00onSjt9SpaKo8rzkjUxwI
	g3lA==
X-Received: by 10.112.200.134 with SMTP id js6mr18784452lbc.0.1411312655620;
	Sun, 21 Sep 2014 08:17:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.114.66.104 with HTTP; Sun, 21 Sep 2014 08:16:55 -0700 (PDT)
In-Reply-To: <20140919191400.GC14124@laptop.dumpdata.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<20140919191400.GC14124@laptop.dumpdata.com>
From: Grant McWilliams <grantmasterflash@gmail.com>
Date: Sun, 21 Sep 2014 08:16:55 -0700
Message-ID: <CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 08:43:11 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	Lars Kurth <lars.kurth.xen@gmail.com>, mirageos-devel@xenproject.org,
	xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
 Project Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0071007577662356321=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

--===============0071007577662356321==
Content-Type: multipart/alternative; boundary=001a11c3838a815f50050394d50a

--001a11c3838a815f50050394d50a
Content-Type: text/plain; charset=UTF-8

>
>
>
> > But we need to make a decision pretty soon. My thinking was the
> following:
> > * Developer Summit on 20 & 21st
> > * Developer Meeting, Board Meetings, Hackspace and Working Group would
> be held on the 19th.
> > * We could also have a User Focussed Day on the 19th - the limitation is
> that on the 19th we cannot get rooms holding more than 60 people
> > * Try to do something together with KVM Forum (E.g. a joint social event
> or something - assuming they buy into it and decide for Seattle, or a joint
> Hackathon)
>

I like. Perhaps the Xen User Summit doesn't need a room holding more than
60 people?

Where is the LinuxCon going to be held in Seattle? Perhaps there's
something close we could use that would have a room large enough?

Grant McWilliams

--001a11c3838a815f50050394d50a
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c=
cc solid;padding-left:1ex"><span class=3D""><br><br>
&gt; But we need to make a decision pretty soon. My thinking was the follow=
ing:<br>
&gt; * Developer Summit on 20 &amp; 21st<br>
&gt; * Developer Meeting, Board Meetings, Hackspace and Working Group would=
 be held on the 19th.<br>
&gt; * We could also have a User Focussed Day on the 19th - the limitation =
is that on the 19th we cannot get rooms holding more than 60 people<br>
&gt; * Try to do something together with KVM Forum (E.g. a joint social eve=
nt or something - assuming they buy into it and decide for Seattle, or a jo=
int Hackathon)<br></span></blockquote><div><br></div><div>I like. Perhaps t=
he Xen User Summit doesn&#39;t need a room holding more than 60 people?</di=
v><div><br></div><div>Where is the LinuxCon going to be held in Seattle? Pe=
rhaps there&#39;s something close we could use that would have a room large=
 enough?</div><div><br></div><div>Grant McWilliams=C2=A0</div></div></div><=
/div>

--001a11c3838a815f50050394d50a--


--===============0071007577662356321==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============0071007577662356321==--


From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 08:43:33 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 08:43:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XVzDZ-0000CV-92; Mon, 22 Sep 2014 08:43:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <konrad.wilk@oracle.com>)
	id 1XV3dG-0007WD-6D; Fri, 19 Sep 2014 19:14:14 +0000
Received: from [85.158.137.68:25014] by server-9.bemta-3.messagelabs.com id
	6E/8C-30790-5808C145; Fri, 19 Sep 2014 19:14:13 +0000
X-Env-Sender: konrad.wilk@oracle.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411154051!10857616!1
X-Originating-IP: [141.146.126.69]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTQxLjE0Ni4xMjYuNjkgPT4gMjc3MjE4\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24262 invoked from network); 19 Sep 2014 19:14:12 -0000
Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com)
	(141.146.126.69)
	by server-4.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 19 Sep 2014 19:14:12 -0000
Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94])
	by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with
	ESMTP id s8JJE4v5009836
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
	Fri, 19 Sep 2014 19:14:05 GMT
Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230])
	by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id
	s8JJE24a002829
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
	Fri, 19 Sep 2014 19:14:03 GMT
Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24])
	by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8JJE2sa015267; Fri, 19 Sep 2014 19:14:02 GMT
Received: from laptop.dumpdata.com (/50.195.21.189)
	by default (Oracle Beehive Gateway v4.0)
	with ESMTP ; Fri, 19 Sep 2014 12:14:01 -0700
Received: by laptop.dumpdata.com (Postfix, from userid 1000)
	id 91673E69D6; Fri, 19 Sep 2014 15:14:00 -0400 (EDT)
Date: Fri, 19 Sep 2014 15:14:00 -0400
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
Message-ID: <20140919191400.GC14124@laptop.dumpdata.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-Source-IP: ucsinet22.oracle.com [156.151.31.94]
X-Mailman-Approved-At: Mon, 22 Sep 2014 08:43:31 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org, xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-devel] Location of next Xen Project
 Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

T24gV2VkLCBTZXAgMTcsIDIwMTQgYXQgMDU6MzA6MjlQTSAtMDcwMCwgTGFycyBLdXJ0aCB3cm90
ZToKPiBIaSBhbGwsCj4gCj4gSSBhbSBDQ+KAmWluZyBhbGwgdGhlIHN1YnByb2plY3RzIChhbmQg
cHJvamVjdCBsZWFkcyBvZiBzdWIgcHJvamVjdHMgd2hvIGFyZSBub3QgeWV0IGZ1bGx5IG9wZXJh
dGlvbmFsIGluIHRlcm1zIG9mIGluZnJhc3RydWN0dXJlKSB0byBnZXQgZmVlZGJhY2sgb24gbmV4
dCB5ZWFycyBldmVudHMuIEkga25vdyB3ZSBhbGwgYWdyZWVkIHRoYXQgd2Ugd291bGQgYWx0ZXJu
YXRlIGJldHdlZW4gRXVyb3BlIGFuZCB0aGUgVVMsIGJ1dCB0aGlzIG1heSBiZSBjaGFsbGVuZ2lu
ZyBuZXh0IHllYXIsIGJlY2F1c2UgdGhlcmUgbWF5IG5vdCBiZSBlbm91Z2ggc3BhY2UuIFNvIEkg
d2FudGVkIHRvIGdldCB5b3VyIGZlZWQgYW5kIHdpbGwgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24g
YmVmb3JlIHRoZSBuZXh0IEFkdmlzb3J5IEJvYXJkIG1lZXRpbmcgaW4gT2N0b2Jlci4gSWRlYWxs
eSB3ZWxsIGJlZm9yZS4KPiAKPiBMZXQgbWUgbGF5IG91dCB3aGF0IEkga25vdy4KPiAqIExpbnV4
Q29uIFVTIHdpbGwgYmUgaW4gU2VhdHRsZSBBdWcgMTctMTkKPiAqIExpbnV4IFBsdW1iZXJzIHdp
bGwgYmUgaW4gU2VhdHRsZSBBdWcgMTksIHdpdGggbWluaSBzdW1taXRzIEF1ZyAyMCAmIDIxc3QK
PiAqIFRoZXJlIHdpbGwgYWxzbyBiZSBhIG5ldyBDb250YWluZXIgQ29uIEF1ZyAyMCAmIDIxc3QK
PiAqIEtWTSBGb3J1bSBpcyB0aGlua2luZyBidXQgaGF2ZSBub3QgZGVjaWRlZCB0byBiZSBpbiBT
ZWF0dGxlIGFsc28gc29tZXRpbWVzIGJldHdlZW4gQXVnIDE5IC0gMjFzdAo+ICogVGhlcmUgaXMg
anVzdCBlbm91Z2ggc3BhY2UgZm9yIGEgWGVuIFByb2plY3QgU3VtbWl0IGZyb20gQXVnIDE5IC0g
MjFzdCAKPiAqIExpbnV4Q29uIEVVIGlzIG1vc3QgbGlrZWx5IGluIEJydXNzZWxzIGVuZCBvZiBT
ZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNl
Cj4gCj4gSSBhbHNvIHdhbnQgdG8gbW92ZSBiYWNrIHRvIGEgbW9kZWwgd2hlcmUgd2UgZG9u4oCZ
dCBoYXZlIGEgc2VwYXJhdGUgdXNlciBhbmQgZGV2ZWxvcGVyIHN1bW1pdC4gSXQgaXMgdG8gZXhw
ZW5zaXZlIGFuZCB0b28gaGFyZCB0byBvcmdhbmlzZS4gV2hhdCB3ZSB3b3VsZCBkbyBpcyBoYXZl
IHRoZXNlIHNlbWktc2VwYXJhdGUgKGUuZy4gVXNlciBTdW1taXQgYmVmb3JlIHRoZSBEZXYgU3Vt
bWl0KSBhbmQgd2UgYWxsb3cgdXNlcnMgdG8gc3RheSBvbiBhbmQgYXR0ZW5kIHRoZSBEZXYgU3Vt
bWl0IHVzaW5nIHNvbWUgZGlzY291bnRlZCB0aWNrZXRzIGlmIHRoZXkgd2FudC4gVGhlIG1haW4g
cmF0aW9uYWxlIGlzIHRvIHNhdmUgY29zdCBhbmQgZ2V0IG1heGltdW0gaW1wYWN0IGZyb20gc3Bv
bnNvcnNoaXBzIHRvIHN1YnNpZGlzZSB0aGUgZXZlbnQocykuCj4gCj4gQnV0IHdlIG5lZWQgdG8g
bWFrZSBhIGRlY2lzaW9uIHByZXR0eSBzb29uLiBNeSB0aGlua2luZyB3YXMgdGhlIGZvbGxvd2lu
ZzoKPiAqIERldmVsb3BlciBTdW1taXQgb24gMjAgJiAyMXN0Cj4gKiBEZXZlbG9wZXIgTWVldGlu
ZywgQm9hcmQgTWVldGluZ3MsIEhhY2tzcGFjZSBhbmQgV29ya2luZyBHcm91cCB3b3VsZCBiZSBo
ZWxkIG9uIHRoZSAxOXRoLiAKPiAqIFdlIGNvdWxkIGFsc28gaGF2ZSBhIFVzZXIgRm9jdXNzZWQg
RGF5IG9uIHRoZSAxOXRoIC0gdGhlIGxpbWl0YXRpb24gaXMgdGhhdCBvbiB0aGUgMTl0aCB3ZSBj
YW5ub3QgZ2V0IHJvb21zIGhvbGRpbmcgbW9yZSB0aGFuIDYwIHBlb3BsZQo+ICogVHJ5IHRvIGRv
IHNvbWV0aGluZyB0b2dldGhlciB3aXRoIEtWTSBGb3J1bSAoRS5nLiBhIGpvaW50IHNvY2lhbCBl
dmVudCBvciBzb21ldGhpbmcgLSBhc3N1bWluZyB0aGV5IGJ1eSBpbnRvIGl0IGFuZCBkZWNpZGUg
Zm9yIFNlYXR0bGUsIG9yIGEgam9pbnQgSGFja2F0aG9uKQoKVGhhdCB3b3VsZCBiZSBnb29kIQoK
PiAqIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyB3b3VsZCBiZSBhIHZlcnkgaW50ZW5zaXZlIHdl
ZWsgYW5kIHRoYXQgc29tZSBwZW9wbGUgbWF5IGhhdmUgdG8ganVnZ2xlIHNjaGVkdWxlcyBhcyB0
aGV5IG1heSBoYXZlIHRvIGF0dGVuZCBzZXZlcmFsIGV2ZW50cy4KClRoYXQgaXMgT0sgYXMgbG9u
ZyBhcyB0aGUgc2Vzc2lvbnMgYXJlIHZpZGVvLXRhcGVkIGFuZCBvbmUgY2FuIHJldmlldyB0aGVt
IGF0IG9uZXMgbGVpc3VyZS4KCj4gCj4gT24gdGhlIG90aGVyIGhhbmQsIHRoZXJlIGlzIGxpa2Vs
eSBub3QgZW5vdWdoIHNwYWNlIHRvIGNvLWxvY2F0ZSB3aXRoIExpbnV4Q29uIEVVLiBBbmQgd2Ug
YWx3YXlzIGFsc28gaGF2ZSBhIHZlcnkgYmlnIHByZXNlbmNlIGF0IEZPU0RFTSBpbiBCcnVzc2Vs
cy4gU28gY28tbG9jYXRpbmcgc2VlbXMgbm90IHF1aXRlIHJpZ2h0LCBhcyB3ZSBhcmUgYWxtb3N0
IGNvbXBldGluZyB3aXRoIG91cnNlbHZlcyBpbiB0aGUgc2FtZSBsb2NhdGlvbiB0aGF0IHllYXIu
Cj4gCj4gUGxlYXNlIGxldCBtZSBrbm93IHdoYXQgeW91ciBwcmVmZXJlbmNlcyBhcmUuIEkgY2Fu
IHRoZW4gZ2V0IGJhY2sgdG8gdGhlIEFkdmlzb3J5IEJvYXJkIGFuZCBnZXQgdGhpcyBjbG9zZWQu
IEFuZCBJIG5lZWQgdG8ga25vdyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgbW9udGggYXMgb3RoZXJ3
aXNlIHdlIHdpbGwgcnVuIG91dCBvZiBvcHRpb25zLgo+IAoKPiBCZXN0IFJlZ2FyZHMKPiBMYXJz
Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4t
ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwOi8vbGlz
dHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 08:43:33 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 08:43:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XVzDZ-0000CV-92; Mon, 22 Sep 2014 08:43:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <konrad.wilk@oracle.com>)
	id 1XV3dG-0007WD-6D; Fri, 19 Sep 2014 19:14:14 +0000
Received: from [85.158.137.68:25014] by server-9.bemta-3.messagelabs.com id
	6E/8C-30790-5808C145; Fri, 19 Sep 2014 19:14:13 +0000
X-Env-Sender: konrad.wilk@oracle.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411154051!10857616!1
X-Originating-IP: [141.146.126.69]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMTQxLjE0Ni4xMjYuNjkgPT4gMjc3MjE4\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24262 invoked from network); 19 Sep 2014 19:14:12 -0000
Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com)
	(141.146.126.69)
	by server-4.tower-31.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 19 Sep 2014 19:14:12 -0000
Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94])
	by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with
	ESMTP id s8JJE4v5009836
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
	Fri, 19 Sep 2014 19:14:05 GMT
Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230])
	by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id
	s8JJE24a002829
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
	Fri, 19 Sep 2014 19:14:03 GMT
Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24])
	by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
	s8JJE2sa015267; Fri, 19 Sep 2014 19:14:02 GMT
Received: from laptop.dumpdata.com (/50.195.21.189)
	by default (Oracle Beehive Gateway v4.0)
	with ESMTP ; Fri, 19 Sep 2014 12:14:01 -0700
Received: by laptop.dumpdata.com (Postfix, from userid 1000)
	id 91673E69D6; Fri, 19 Sep 2014 15:14:00 -0400 (EDT)
Date: Fri, 19 Sep 2014 15:14:00 -0400
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
Message-ID: <20140919191400.GC14124@laptop.dumpdata.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-Source-IP: ucsinet22.oracle.com [156.151.31.94]
X-Mailman-Approved-At: Mon, 22 Sep 2014 08:43:31 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org, xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-devel] Location of next Xen Project
 Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

T24gV2VkLCBTZXAgMTcsIDIwMTQgYXQgMDU6MzA6MjlQTSAtMDcwMCwgTGFycyBLdXJ0aCB3cm90
ZToKPiBIaSBhbGwsCj4gCj4gSSBhbSBDQ+KAmWluZyBhbGwgdGhlIHN1YnByb2plY3RzIChhbmQg
cHJvamVjdCBsZWFkcyBvZiBzdWIgcHJvamVjdHMgd2hvIGFyZSBub3QgeWV0IGZ1bGx5IG9wZXJh
dGlvbmFsIGluIHRlcm1zIG9mIGluZnJhc3RydWN0dXJlKSB0byBnZXQgZmVlZGJhY2sgb24gbmV4
dCB5ZWFycyBldmVudHMuIEkga25vdyB3ZSBhbGwgYWdyZWVkIHRoYXQgd2Ugd291bGQgYWx0ZXJu
YXRlIGJldHdlZW4gRXVyb3BlIGFuZCB0aGUgVVMsIGJ1dCB0aGlzIG1heSBiZSBjaGFsbGVuZ2lu
ZyBuZXh0IHllYXIsIGJlY2F1c2UgdGhlcmUgbWF5IG5vdCBiZSBlbm91Z2ggc3BhY2UuIFNvIEkg
d2FudGVkIHRvIGdldCB5b3VyIGZlZWQgYW5kIHdpbGwgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24g
YmVmb3JlIHRoZSBuZXh0IEFkdmlzb3J5IEJvYXJkIG1lZXRpbmcgaW4gT2N0b2Jlci4gSWRlYWxs
eSB3ZWxsIGJlZm9yZS4KPiAKPiBMZXQgbWUgbGF5IG91dCB3aGF0IEkga25vdy4KPiAqIExpbnV4
Q29uIFVTIHdpbGwgYmUgaW4gU2VhdHRsZSBBdWcgMTctMTkKPiAqIExpbnV4IFBsdW1iZXJzIHdp
bGwgYmUgaW4gU2VhdHRsZSBBdWcgMTksIHdpdGggbWluaSBzdW1taXRzIEF1ZyAyMCAmIDIxc3QK
PiAqIFRoZXJlIHdpbGwgYWxzbyBiZSBhIG5ldyBDb250YWluZXIgQ29uIEF1ZyAyMCAmIDIxc3QK
PiAqIEtWTSBGb3J1bSBpcyB0aGlua2luZyBidXQgaGF2ZSBub3QgZGVjaWRlZCB0byBiZSBpbiBT
ZWF0dGxlIGFsc28gc29tZXRpbWVzIGJldHdlZW4gQXVnIDE5IC0gMjFzdAo+ICogVGhlcmUgaXMg
anVzdCBlbm91Z2ggc3BhY2UgZm9yIGEgWGVuIFByb2plY3QgU3VtbWl0IGZyb20gQXVnIDE5IC0g
MjFzdCAKPiAqIExpbnV4Q29uIEVVIGlzIG1vc3QgbGlrZWx5IGluIEJydXNzZWxzIGVuZCBvZiBT
ZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNl
Cj4gCj4gSSBhbHNvIHdhbnQgdG8gbW92ZSBiYWNrIHRvIGEgbW9kZWwgd2hlcmUgd2UgZG9u4oCZ
dCBoYXZlIGEgc2VwYXJhdGUgdXNlciBhbmQgZGV2ZWxvcGVyIHN1bW1pdC4gSXQgaXMgdG8gZXhw
ZW5zaXZlIGFuZCB0b28gaGFyZCB0byBvcmdhbmlzZS4gV2hhdCB3ZSB3b3VsZCBkbyBpcyBoYXZl
IHRoZXNlIHNlbWktc2VwYXJhdGUgKGUuZy4gVXNlciBTdW1taXQgYmVmb3JlIHRoZSBEZXYgU3Vt
bWl0KSBhbmQgd2UgYWxsb3cgdXNlcnMgdG8gc3RheSBvbiBhbmQgYXR0ZW5kIHRoZSBEZXYgU3Vt
bWl0IHVzaW5nIHNvbWUgZGlzY291bnRlZCB0aWNrZXRzIGlmIHRoZXkgd2FudC4gVGhlIG1haW4g
cmF0aW9uYWxlIGlzIHRvIHNhdmUgY29zdCBhbmQgZ2V0IG1heGltdW0gaW1wYWN0IGZyb20gc3Bv
bnNvcnNoaXBzIHRvIHN1YnNpZGlzZSB0aGUgZXZlbnQocykuCj4gCj4gQnV0IHdlIG5lZWQgdG8g
bWFrZSBhIGRlY2lzaW9uIHByZXR0eSBzb29uLiBNeSB0aGlua2luZyB3YXMgdGhlIGZvbGxvd2lu
ZzoKPiAqIERldmVsb3BlciBTdW1taXQgb24gMjAgJiAyMXN0Cj4gKiBEZXZlbG9wZXIgTWVldGlu
ZywgQm9hcmQgTWVldGluZ3MsIEhhY2tzcGFjZSBhbmQgV29ya2luZyBHcm91cCB3b3VsZCBiZSBo
ZWxkIG9uIHRoZSAxOXRoLiAKPiAqIFdlIGNvdWxkIGFsc28gaGF2ZSBhIFVzZXIgRm9jdXNzZWQg
RGF5IG9uIHRoZSAxOXRoIC0gdGhlIGxpbWl0YXRpb24gaXMgdGhhdCBvbiB0aGUgMTl0aCB3ZSBj
YW5ub3QgZ2V0IHJvb21zIGhvbGRpbmcgbW9yZSB0aGFuIDYwIHBlb3BsZQo+ICogVHJ5IHRvIGRv
IHNvbWV0aGluZyB0b2dldGhlciB3aXRoIEtWTSBGb3J1bSAoRS5nLiBhIGpvaW50IHNvY2lhbCBl
dmVudCBvciBzb21ldGhpbmcgLSBhc3N1bWluZyB0aGV5IGJ1eSBpbnRvIGl0IGFuZCBkZWNpZGUg
Zm9yIFNlYXR0bGUsIG9yIGEgam9pbnQgSGFja2F0aG9uKQoKVGhhdCB3b3VsZCBiZSBnb29kIQoK
PiAqIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyB3b3VsZCBiZSBhIHZlcnkgaW50ZW5zaXZlIHdl
ZWsgYW5kIHRoYXQgc29tZSBwZW9wbGUgbWF5IGhhdmUgdG8ganVnZ2xlIHNjaGVkdWxlcyBhcyB0
aGV5IG1heSBoYXZlIHRvIGF0dGVuZCBzZXZlcmFsIGV2ZW50cy4KClRoYXQgaXMgT0sgYXMgbG9u
ZyBhcyB0aGUgc2Vzc2lvbnMgYXJlIHZpZGVvLXRhcGVkIGFuZCBvbmUgY2FuIHJldmlldyB0aGVt
IGF0IG9uZXMgbGVpc3VyZS4KCj4gCj4gT24gdGhlIG90aGVyIGhhbmQsIHRoZXJlIGlzIGxpa2Vs
eSBub3QgZW5vdWdoIHNwYWNlIHRvIGNvLWxvY2F0ZSB3aXRoIExpbnV4Q29uIEVVLiBBbmQgd2Ug
YWx3YXlzIGFsc28gaGF2ZSBhIHZlcnkgYmlnIHByZXNlbmNlIGF0IEZPU0RFTSBpbiBCcnVzc2Vs
cy4gU28gY28tbG9jYXRpbmcgc2VlbXMgbm90IHF1aXRlIHJpZ2h0LCBhcyB3ZSBhcmUgYWxtb3N0
IGNvbXBldGluZyB3aXRoIG91cnNlbHZlcyBpbiB0aGUgc2FtZSBsb2NhdGlvbiB0aGF0IHllYXIu
Cj4gCj4gUGxlYXNlIGxldCBtZSBrbm93IHdoYXQgeW91ciBwcmVmZXJlbmNlcyBhcmUuIEkgY2Fu
IHRoZW4gZ2V0IGJhY2sgdG8gdGhlIEFkdmlzb3J5IEJvYXJkIGFuZCBnZXQgdGhpcyBjbG9zZWQu
IEFuZCBJIG5lZWQgdG8ga25vdyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgbW9udGggYXMgb3RoZXJ3
aXNlIHdlIHdpbGwgcnVuIG91dCBvZiBvcHRpb25zLgo+IAoKPiBCZXN0IFJlZ2FyZHMKPiBMYXJz
Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4t
ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwOi8vbGlz
dHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 09:47:59 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 09:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0Dv-00029Y-Ss; Mon, 22 Sep 2014 09:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW0Du-00029T-9s
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 09:47:58 +0000
Received: from [193.109.254.147:44832] by server-15.bemta-14.messagelabs.com
	id 75/79-30948-D40FF145; Mon, 22 Sep 2014 09:47:57 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411379276!7537093!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12128 invoked from network); 22 Sep 2014 09:47:57 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 09:47:57 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25118444"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAACRiQA==
Date: Mon, 22 Sep 2014 09:47:55 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048B7F2@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>
In-Reply-To: <541FEC41.6090002@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> 
> Thanks for your reply.
> Soon as I finish downloading everything needed I'll try to do a build.
> I have other 2 questions:
> 
> I saw that the xen's repositories are forked by xenserver's github ones
> but the changes after are merged in both, will remain different
> projects? One project compatible for all cases I think will be better
> quality and less waste of time.
> 

Hi Fabio,

  The Xen Project repositories are indeed forked from the XenServer github repositories. The plan is that XenServer will move over to using the new Xen Project codebase sometime in the next few months. There are some patches which will need to be forward ported first, and there are some toolstack compatibility corner-cases which need to be worked out.

> About repositories missed now in xen there is win-xenguestagent that
> contain some features very useful, in particolar shutdown (already
> present in gplpv I use in production now) and resetting system time
> following resume-from-suspend and migration (now missed in gplpv but
> will solves login problem after restore in domUs that are in windows
> domain). Will be adapted for xen also that?
> 

It's already done :-) That functionality was split out of the (.NET based) XenServer guest agent and put into a new 'Lite' agent which is part of the XenIface driver package. So, if you grab the xeniface.git repo, build and install it then you should have clean shutdown/reboot and time-sync functionality.

> Thanks for any reply.

No problem.

Cheers,

    Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 09:47:59 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 09:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0Dv-00029Y-Ss; Mon, 22 Sep 2014 09:47:59 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW0Du-00029T-9s
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 09:47:58 +0000
Received: from [193.109.254.147:44832] by server-15.bemta-14.messagelabs.com
	id 75/79-30948-D40FF145; Mon, 22 Sep 2014 09:47:57 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411379276!7537093!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12128 invoked from network); 22 Sep 2014 09:47:57 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 09:47:57 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25118444"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAACRiQA==
Date: Mon, 22 Sep 2014 09:47:55 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048B7F2@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>
In-Reply-To: <541FEC41.6090002@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> 
> Thanks for your reply.
> Soon as I finish downloading everything needed I'll try to do a build.
> I have other 2 questions:
> 
> I saw that the xen's repositories are forked by xenserver's github ones
> but the changes after are merged in both, will remain different
> projects? One project compatible for all cases I think will be better
> quality and less waste of time.
> 

Hi Fabio,

  The Xen Project repositories are indeed forked from the XenServer github repositories. The plan is that XenServer will move over to using the new Xen Project codebase sometime in the next few months. There are some patches which will need to be forward ported first, and there are some toolstack compatibility corner-cases which need to be worked out.

> About repositories missed now in xen there is win-xenguestagent that
> contain some features very useful, in particolar shutdown (already
> present in gplpv I use in production now) and resetting system time
> following resume-from-suspend and migration (now missed in gplpv but
> will solves login problem after restore in domUs that are in windows
> domain). Will be adapted for xen also that?
> 

It's already done :-) That functionality was split out of the (.NET based) XenServer guest agent and put into a new 'Lite' agent which is part of the XenIface driver package. So, if you grab the xeniface.git repo, build and install it then you should have clean shutdown/reboot and time-sync functionality.

> Thanks for any reply.

No problem.

Cheers,

    Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 09:48:35 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 09:48:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0EU-0002AV-Uw; Mon, 22 Sep 2014 09:48:34 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XVzxQ-0001U9-RT
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 09:30:57 +0000
Received: from [85.158.137.68:21260] by server-11.bemta-3.messagelabs.com id
	D5/C0-01568-05CEF145; Mon, 22 Sep 2014 09:30:56 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1411378254!11081690!1
X-Originating-IP: [74.125.82.181]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25092 invoked from network); 22 Sep 2014 09:30:54 -0000
Received: from mail-we0-f181.google.com (HELO mail-we0-f181.google.com)
	(74.125.82.181)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 09:30:54 -0000
Received: by mail-we0-f181.google.com with SMTP id w61so688573wes.26
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 22 Sep 2014 02:30:54 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=LKPd0+ytfGjD35DSAvYavKyxv08TEpydPqX+kNQzFLY=;
	b=HDemvYEhlMCI88rHIDc4OY4KZuc02QFCBSOys2Zv8nCPW/GWi3OTsgTqG/WERtjRtW
	l6gkhS71ATzOTENY898HC9Sb5eomafprxtIw9kEYJoIJYAxB1Ozn9e6BGmcWA0mmz2s9
	ZStXUVU2XD12gCqjkXN1LL1U9XmwjFPcE7UtaaCTqPEmRKDUXTtaVhRQA+pJrWZkYjhd
	Da1g30Z/NMKeuzm/Wzslysvuarpg0P21vtAIFxWuE0OETSo6M752edHYloE+NHzZVndq
	0C6xgiEUrtkMxYMv+BkvnXpsm5/i20o/vK8rH/MPDBcDjCEj2axaEjSMF9HTZeZFP9Xk
	gu4g==
X-Gm-Message-State: ALoCoQnJm+kU+BPLvIW2VBbpitkkVSarG+xBB3AxjIv2wTAb6tVCncAGcx5ZiLFXJW+yCQBOmMlb
X-Received: by 10.194.185.230 with SMTP id ff6mr1303626wjc.120.1411378254005; 
	Mon, 22 Sep 2014 02:30:54 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	eg8sm11412358wib.15.2014.09.22.02.30.48 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Mon, 22 Sep 2014 02:30:53 -0700 (PDT)
Message-ID: <541FEC41.6090002@m2r.biz>
Date: Mon, 22 Sep 2014 11:30:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
X-Mailman-Approved-At: Mon, 22 Sep 2014 09:48:33 +0000
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 19/09/2014 11:22, Paul Durrant ha scritto:
> Moving xen-devel to bcc and adding win-pv-devel...
>
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 19 September 2014 09:55
>> To: xen-devel; Paul Durrant
>> Subject: New windows pv drivers question
>>
>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the new
>> wiki pages about.
>> I want start to try them if possible (for example to seems if occasion
>> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>> xenserver's github still missed here but seems with a fast look that all
>> essential drivers repositories are in xen's git now.
> Fabio,
>
> That's right. I have a blog to introduce the new Xen Project Windows PV Drivers sub-project ready to go but it's run into some technical difficulties; hopefully I'll get it out early next week.
> Not all the code that is relevant to XenServer is necessarily relevant to the wider Xen community; e.g. the guest agent and installer are very much XenServer-specific and therefore they do not form part of the sub-project. All the driver code is available on xenbits (under the pvdrivers/win directory) though and it has been stripped of XenServer branding. (The branding is now parameterized and applied at build time, so anyone can build their own branded binaries should they wish to).
>   
>> Is possible start basic tests of them or there are still other important
>> changes and/or fixes to do?
>> If is possible start test them there is a testing build available or or
>> should I do it?
>>
> I am setting up some build infrastructure as part of the sub-project - in fact I just got it going for the first time yesterday - and I hope to have un-branded binary packages available for the community in the very near future.
> In the meantime, there are build instructions available on the wiki at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which are fairly straightforward, so you should be able to build your own. Happily Microsoft made building drivers free again the with Windows 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) edition compiler. Note that you don't have to use the Visual Studio IDE; there are python scripts in the driver repositories which wrap the msbuild utility so you can drive it all from the command line :-)
>
> AFAIK the drivers should work in pretty much any host environment: I have been testing them myself on a recent build of xen-unstable using my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you enable test-signing in your VMs.
>
>> Thanks for any reply and sorry for my bad english.
> No problem. Please get back to me (cc-ing win-pv-devel) if you do run into difficulties.
>
> Cheers,
>
>      Paul

Thanks for your reply.
Soon as I finish downloading everything needed I'll try to do a build.
I have other 2 questions:

I saw that the xen's repositories are forked by xenserver's github ones 
but the changes after are merged in both, will remain different 
projects? One project compatible for all cases I think will be better 
quality and less waste of time.

About repositories missed now in xen there is win-xenguestagent that 
contain some features very useful, in particolar shutdown (already 
present in gplpv I use in production now) and resetting system time 
following resume-from-suspend and migration (now missed in gplpv but 
will solves login problem after restore in domUs that are in windows 
domain). Will be adapted for xen also that?

Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 09:48:35 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 09:48:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0EU-0002AV-Uw; Mon, 22 Sep 2014 09:48:34 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XVzxQ-0001U9-RT
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 09:30:57 +0000
Received: from [85.158.137.68:21260] by server-11.bemta-3.messagelabs.com id
	D5/C0-01568-05CEF145; Mon, 22 Sep 2014 09:30:56 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-31.messagelabs.com!1411378254!11081690!1
X-Originating-IP: [74.125.82.181]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25092 invoked from network); 22 Sep 2014 09:30:54 -0000
Received: from mail-we0-f181.google.com (HELO mail-we0-f181.google.com)
	(74.125.82.181)
	by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 09:30:54 -0000
Received: by mail-we0-f181.google.com with SMTP id w61so688573wes.26
	for <win-pv-devel@lists.xenproject.org>;
	Mon, 22 Sep 2014 02:30:54 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=LKPd0+ytfGjD35DSAvYavKyxv08TEpydPqX+kNQzFLY=;
	b=HDemvYEhlMCI88rHIDc4OY4KZuc02QFCBSOys2Zv8nCPW/GWi3OTsgTqG/WERtjRtW
	l6gkhS71ATzOTENY898HC9Sb5eomafprxtIw9kEYJoIJYAxB1Ozn9e6BGmcWA0mmz2s9
	ZStXUVU2XD12gCqjkXN1LL1U9XmwjFPcE7UtaaCTqPEmRKDUXTtaVhRQA+pJrWZkYjhd
	Da1g30Z/NMKeuzm/Wzslysvuarpg0P21vtAIFxWuE0OETSo6M752edHYloE+NHzZVndq
	0C6xgiEUrtkMxYMv+BkvnXpsm5/i20o/vK8rH/MPDBcDjCEj2axaEjSMF9HTZeZFP9Xk
	gu4g==
X-Gm-Message-State: ALoCoQnJm+kU+BPLvIW2VBbpitkkVSarG+xBB3AxjIv2wTAb6tVCncAGcx5ZiLFXJW+yCQBOmMlb
X-Received: by 10.194.185.230 with SMTP id ff6mr1303626wjc.120.1411378254005; 
	Mon, 22 Sep 2014 02:30:54 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	eg8sm11412358wib.15.2014.09.22.02.30.48 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Mon, 22 Sep 2014 02:30:53 -0700 (PDT)
Message-ID: <541FEC41.6090002@m2r.biz>
Date: Mon, 22 Sep 2014 11:30:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
X-Mailman-Approved-At: Mon, 22 Sep 2014 09:48:33 +0000
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 19/09/2014 11:22, Paul Durrant ha scritto:
> Moving xen-devel to bcc and adding win-pv-devel...
>
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 19 September 2014 09:55
>> To: xen-devel; Paul Durrant
>> Subject: New windows pv drivers question
>>
>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the new
>> wiki pages about.
>> I want start to try them if possible (for example to seems if occasion
>> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>> xenserver's github still missed here but seems with a fast look that all
>> essential drivers repositories are in xen's git now.
> Fabio,
>
> That's right. I have a blog to introduce the new Xen Project Windows PV Drivers sub-project ready to go but it's run into some technical difficulties; hopefully I'll get it out early next week.
> Not all the code that is relevant to XenServer is necessarily relevant to the wider Xen community; e.g. the guest agent and installer are very much XenServer-specific and therefore they do not form part of the sub-project. All the driver code is available on xenbits (under the pvdrivers/win directory) though and it has been stripped of XenServer branding. (The branding is now parameterized and applied at build time, so anyone can build their own branded binaries should they wish to).
>   
>> Is possible start basic tests of them or there are still other important
>> changes and/or fixes to do?
>> If is possible start test them there is a testing build available or or
>> should I do it?
>>
> I am setting up some build infrastructure as part of the sub-project - in fact I just got it going for the first time yesterday - and I hope to have un-branded binary packages available for the community in the very near future.
> In the meantime, there are build instructions available on the wiki at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which are fairly straightforward, so you should be able to build your own. Happily Microsoft made building drivers free again the with Windows 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) edition compiler. Note that you don't have to use the Visual Studio IDE; there are python scripts in the driver repositories which wrap the msbuild utility so you can drive it all from the command line :-)
>
> AFAIK the drivers should work in pretty much any host environment: I have been testing them myself on a recent build of xen-unstable using my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you enable test-signing in your VMs.
>
>> Thanks for any reply and sorry for my bad english.
> No problem. Please get back to me (cc-ing win-pv-devel) if you do run into difficulties.
>
> Cheers,
>
>      Paul

Thanks for your reply.
Soon as I finish downloading everything needed I'll try to do a build.
I have other 2 questions:

I saw that the xen's repositories are forked by xenserver's github ones 
but the changes after are merged in both, will remain different 
projects? One project compatible for all cases I think will be better 
quality and less waste of time.

About repositories missed now in xen there is win-xenguestagent that 
contain some features very useful, in particolar shutdown (already 
present in gplpv I use in production now) and resetting system time 
following resume-from-suspend and migration (now missed in gplpv but 
will solves login problem after restore in domUs that are in windows 
domain). Will be adapted for xen also that?

Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 10:33:49 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 10:33:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0wH-0003VC-NF; Mon, 22 Sep 2014 10:33:49 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <dunlapg@gmail.com>)
	id 1XW0ew-0002wP-BX; Mon, 22 Sep 2014 10:15:54 +0000
Received: from [85.158.137.68:12415] by server-4.bemta-3.messagelabs.com id
	33/1D-18709-9D6FF145; Mon, 22 Sep 2014 10:15:53 +0000
X-Env-Sender: dunlapg@gmail.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411380951!11231163!1
X-Originating-IP: [209.85.216.175]
X-SpamReason: No, hits=0.3 required=7.0 tests=RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14405 invoked from network); 22 Sep 2014 10:15:52 -0000
Received: from mail-qc0-f175.google.com (HELO mail-qc0-f175.google.com)
	(209.85.216.175)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 10:15:52 -0000
Received: by mail-qc0-f175.google.com with SMTP id w7so5887031qcr.6
	for <multiple recipients>; Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:sender:in-reply-to:references:date:message-id:subject
	:from:to:cc:content-type:content-transfer-encoding;
	bh=ER5usct1qQ56cr2NPLN8l1Fg8JKj249L5NtIwl1oORU=;
	b=uQg2g5VO/HEiHYRx9SbEigCj2BXGBY1+Wz6cqEMEzDFZMqVQ9HcNdqgTnJN8hpeKok
	WNI6spduBGG/tey4oJg/f6rqyDtKy2XDkTgZC6ztiDmdCqEYv7P98m5vAaB2erZHUCNm
	LmEDRsS0PQkuZ6o+8HpHgAtZbaqlYTObYp6/qpnYvhS4Az8Y/G2/Jzi9IgU7EdhjvjQr
	uVdEyMeXzdYa96JEM/mA7vgawaUQTSBpStJsgXwlXJtg9vpCvHcMJCmY3yPnskUQfWJ7
	au8c3tC0swiCjm2jj5LBfYTRFhwAC7v+qcOw36IxvNrgTsMCkLVXKue99AuJYxGJbJAp
	Gc+A==
MIME-Version: 1.0
X-Received: by 10.229.177.6 with SMTP id bg6mr29037498qcb.2.1411380951223;
	Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
Received: by 10.96.51.168 with HTTP; Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
Date: Mon, 22 Sep 2014 11:15:51 +0100
X-Google-Sender-Auth: ID51G5vRlONGkOiGu9gWLjd2U6o
Message-ID: <CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
From: George Dunlap <George.Dunlap@eu.citrix.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 10:33:48 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org, xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-devel] Location of next Xen Project
 Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

T24gVGh1LCBTZXAgMTgsIDIwMTQgYXQgMTozMCBBTSwgTGFycyBLdXJ0aCA8bGFycy5rdXJ0aC54
ZW5AZ21haWwuY29tPiB3cm90ZToKPiBIaSBhbGwsCj4KPiBJIGFtIEND4oCZaW5nIGFsbCB0aGUg
c3VicHJvamVjdHMgKGFuZCBwcm9qZWN0IGxlYWRzIG9mIHN1YiBwcm9qZWN0cyB3aG8gYXJlIG5v
dCB5ZXQgZnVsbHkgb3BlcmF0aW9uYWwgaW4gdGVybXMgb2YgaW5mcmFzdHJ1Y3R1cmUpIHRvIGdl
dCBmZWVkYmFjayBvbiBuZXh0IHllYXJzIGV2ZW50cy4gSSBrbm93IHdlIGFsbCBhZ3JlZWQgdGhh
dCB3ZSB3b3VsZCBhbHRlcm5hdGUgYmV0d2VlbiBFdXJvcGUgYW5kIHRoZSBVUywgYnV0IHRoaXMg
bWF5IGJlIGNoYWxsZW5naW5nIG5leHQgeWVhciwgYmVjYXVzZSB0aGVyZSBtYXkgbm90IGJlIGVu
b3VnaCBzcGFjZS4gU28gSSB3YW50ZWQgdG8gZ2V0IHlvdXIgZmVlZCBhbmQgd2lsbCBuZWVkIHRv
IG1ha2UgYSBkZWNpc2lvbiBiZWZvcmUgdGhlIG5leHQgQWR2aXNvcnkgQm9hcmQgbWVldGluZyBp
biBPY3RvYmVyLiBJZGVhbGx5IHdlbGwgYmVmb3JlLgo+Cj4gTGV0IG1lIGxheSBvdXQgd2hhdCBJ
IGtub3cuCj4gKiBMaW51eENvbiBVUyB3aWxsIGJlIGluIFNlYXR0bGUgQXVnIDE3LTE5Cj4gKiBM
aW51eCBQbHVtYmVycyB3aWxsIGJlIGluIFNlYXR0bGUgQXVnIDE5LCB3aXRoIG1pbmkgc3VtbWl0
cyBBdWcgMjAgJiAyMXN0Cj4gKiBUaGVyZSB3aWxsIGFsc28gYmUgYSBuZXcgQ29udGFpbmVyIENv
biBBdWcgMjAgJiAyMXN0Cj4gKiBLVk0gRm9ydW0gaXMgdGhpbmtpbmcgYnV0IGhhdmUgbm90IGRl
Y2lkZWQgdG8gYmUgaW4gU2VhdHRsZSBhbHNvIHNvbWV0aW1lcyBiZXR3ZWVuIEF1ZyAxOSAtIDIx
c3QKPiAqIFRoZXJlIGlzIGp1c3QgZW5vdWdoIHNwYWNlIGZvciBhIFhlbiBQcm9qZWN0IFN1bW1p
dCBmcm9tIEF1ZyAxOSAtIDIxc3QKPiAqIExpbnV4Q29uIEVVIGlzIG1vc3QgbGlrZWx5IGluIEJy
dXNzZWxzIGVuZCBvZiBTZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCB0aGVyZSBpcyBu
b3QgZW5vdWdoIHNwYWNlCj4KPiBJIGFsc28gd2FudCB0byBtb3ZlIGJhY2sgdG8gYSBtb2RlbCB3
aGVyZSB3ZSBkb27igJl0IGhhdmUgYSBzZXBhcmF0ZSB1c2VyIGFuZCBkZXZlbG9wZXIgc3VtbWl0
LiBJdCBpcyB0byBleHBlbnNpdmUgYW5kIHRvbyBoYXJkIHRvIG9yZ2FuaXNlLiBXaGF0IHdlIHdv
dWxkIGRvIGlzIGhhdmUgdGhlc2Ugc2VtaS1zZXBhcmF0ZSAoZS5nLiBVc2VyIFN1bW1pdCBiZWZv
cmUgdGhlIERldiBTdW1taXQpIGFuZCB3ZSBhbGxvdyB1c2VycyB0byBzdGF5IG9uIGFuZCBhdHRl
bmQgdGhlIERldiBTdW1taXQgdXNpbmcgc29tZSBkaXNjb3VudGVkIHRpY2tldHMgaWYgdGhleSB3
YW50LiBUaGUgbWFpbiByYXRpb25hbGUgaXMgdG8gc2F2ZSBjb3N0IGFuZCBnZXQgbWF4aW11bSBp
bXBhY3QgZnJvbSBzcG9uc29yc2hpcHMgdG8gc3Vic2lkaXNlIHRoZSBldmVudChzKS4KPgo+IEJ1
dCB3ZSBuZWVkIHRvIG1ha2UgYSBkZWNpc2lvbiBwcmV0dHkgc29vbi4gTXkgdGhpbmtpbmcgd2Fz
IHRoZSBmb2xsb3dpbmc6Cj4gKiBEZXZlbG9wZXIgU3VtbWl0IG9uIDIwICYgMjFzdAo+ICogRGV2
ZWxvcGVyIE1lZXRpbmcsIEJvYXJkIE1lZXRpbmdzLCBIYWNrc3BhY2UgYW5kIFdvcmtpbmcgR3Jv
dXAgd291bGQgYmUgaGVsZCBvbiB0aGUgMTl0aC4KPiAqIFdlIGNvdWxkIGFsc28gaGF2ZSBhIFVz
ZXIgRm9jdXNzZWQgRGF5IG9uIHRoZSAxOXRoIC0gdGhlIGxpbWl0YXRpb24gaXMgdGhhdCBvbiB0
aGUgMTl0aCB3ZSBjYW5ub3QgZ2V0IHJvb21zIGhvbGRpbmcgbW9yZSB0aGFuIDYwIHBlb3BsZQo+
ICogVHJ5IHRvIGRvIHNvbWV0aGluZyB0b2dldGhlciB3aXRoIEtWTSBGb3J1bSAoRS5nLiBhIGpv
aW50IHNvY2lhbCBldmVudCBvciBzb21ldGhpbmcgLSBhc3N1bWluZyB0aGV5IGJ1eSBpbnRvIGl0
IGFuZCBkZWNpZGUgZm9yIFNlYXR0bGUsIG9yIGEgam9pbnQgSGFja2F0aG9uKQo+ICogVGhlIHBy
b2JsZW0gaXMgdGhhdCB0aGlzIHdvdWxkIGJlIGEgdmVyeSBpbnRlbnNpdmUgd2VlayBhbmQgdGhh
dCBzb21lIHBlb3BsZSBtYXkgaGF2ZSB0byBqdWdnbGUgc2NoZWR1bGVzIGFzIHRoZXkgbWF5IGhh
dmUgdG8gYXR0ZW5kIHNldmVyYWwgZXZlbnRzLgo+Cj4gT24gdGhlIG90aGVyIGhhbmQsIHRoZXJl
IGlzIGxpa2VseSBub3QgZW5vdWdoIHNwYWNlIHRvIGNvLWxvY2F0ZSB3aXRoIExpbnV4Q29uIEVV
LiBBbmQgd2UgYWx3YXlzIGFsc28gaGF2ZSBhIHZlcnkgYmlnIHByZXNlbmNlIGF0IEZPU0RFTSBp
biBCcnVzc2Vscy4gU28gY28tbG9jYXRpbmcgc2VlbXMgbm90IHF1aXRlIHJpZ2h0LCBhcyB3ZSBh
cmUgYWxtb3N0IGNvbXBldGluZyB3aXRoIG91cnNlbHZlcyBpbiB0aGUgc2FtZSBsb2NhdGlvbiB0
aGF0IHllYXIuCj4KPiBQbGVhc2UgbGV0IG1lIGtub3cgd2hhdCB5b3VyIHByZWZlcmVuY2VzIGFy
ZS4gSSBjYW4gdGhlbiBnZXQgYmFjayB0byB0aGUgQWR2aXNvcnkgQm9hcmQgYW5kIGdldCB0aGlz
IGNsb3NlZC4gQW5kIEkgbmVlZCB0byBrbm93IGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBtb250aCBh
cyBvdGhlcndpc2Ugd2Ugd2lsbCBydW4gb3V0IG9mIG9wdGlvbnMuCgpZb3VyIHJlYXNvbmluZyBo
ZXJlIHNvdW5kcyBzZW5zaWJsZSB0byBtZS4KCiAtR2VvcmdlCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndp
bi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 10:33:49 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 10:33:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW0wH-0003VC-NF; Mon, 22 Sep 2014 10:33:49 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <dunlapg@gmail.com>)
	id 1XW0ew-0002wP-BX; Mon, 22 Sep 2014 10:15:54 +0000
Received: from [85.158.137.68:12415] by server-4.bemta-3.messagelabs.com id
	33/1D-18709-9D6FF145; Mon, 22 Sep 2014 10:15:53 +0000
X-Env-Sender: dunlapg@gmail.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411380951!11231163!1
X-Originating-IP: [209.85.216.175]
X-SpamReason: No, hits=0.3 required=7.0 tests=RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14405 invoked from network); 22 Sep 2014 10:15:52 -0000
Received: from mail-qc0-f175.google.com (HELO mail-qc0-f175.google.com)
	(209.85.216.175)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 10:15:52 -0000
Received: by mail-qc0-f175.google.com with SMTP id w7so5887031qcr.6
	for <multiple recipients>; Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:sender:in-reply-to:references:date:message-id:subject
	:from:to:cc:content-type:content-transfer-encoding;
	bh=ER5usct1qQ56cr2NPLN8l1Fg8JKj249L5NtIwl1oORU=;
	b=uQg2g5VO/HEiHYRx9SbEigCj2BXGBY1+Wz6cqEMEzDFZMqVQ9HcNdqgTnJN8hpeKok
	WNI6spduBGG/tey4oJg/f6rqyDtKy2XDkTgZC6ztiDmdCqEYv7P98m5vAaB2erZHUCNm
	LmEDRsS0PQkuZ6o+8HpHgAtZbaqlYTObYp6/qpnYvhS4Az8Y/G2/Jzi9IgU7EdhjvjQr
	uVdEyMeXzdYa96JEM/mA7vgawaUQTSBpStJsgXwlXJtg9vpCvHcMJCmY3yPnskUQfWJ7
	au8c3tC0swiCjm2jj5LBfYTRFhwAC7v+qcOw36IxvNrgTsMCkLVXKue99AuJYxGJbJAp
	Gc+A==
MIME-Version: 1.0
X-Received: by 10.229.177.6 with SMTP id bg6mr29037498qcb.2.1411380951223;
	Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
Received: by 10.96.51.168 with HTTP; Mon, 22 Sep 2014 03:15:51 -0700 (PDT)
In-Reply-To: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
Date: Mon, 22 Sep 2014 11:15:51 +0100
X-Google-Sender-Auth: ID51G5vRlONGkOiGu9gWLjd2U6o
Message-ID: <CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
From: George Dunlap <George.Dunlap@eu.citrix.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 10:33:48 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org, xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Russell Pavlicek <russell.pavlicek@citrix.com>,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-devel] Location of next Xen Project
 Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

T24gVGh1LCBTZXAgMTgsIDIwMTQgYXQgMTozMCBBTSwgTGFycyBLdXJ0aCA8bGFycy5rdXJ0aC54
ZW5AZ21haWwuY29tPiB3cm90ZToKPiBIaSBhbGwsCj4KPiBJIGFtIEND4oCZaW5nIGFsbCB0aGUg
c3VicHJvamVjdHMgKGFuZCBwcm9qZWN0IGxlYWRzIG9mIHN1YiBwcm9qZWN0cyB3aG8gYXJlIG5v
dCB5ZXQgZnVsbHkgb3BlcmF0aW9uYWwgaW4gdGVybXMgb2YgaW5mcmFzdHJ1Y3R1cmUpIHRvIGdl
dCBmZWVkYmFjayBvbiBuZXh0IHllYXJzIGV2ZW50cy4gSSBrbm93IHdlIGFsbCBhZ3JlZWQgdGhh
dCB3ZSB3b3VsZCBhbHRlcm5hdGUgYmV0d2VlbiBFdXJvcGUgYW5kIHRoZSBVUywgYnV0IHRoaXMg
bWF5IGJlIGNoYWxsZW5naW5nIG5leHQgeWVhciwgYmVjYXVzZSB0aGVyZSBtYXkgbm90IGJlIGVu
b3VnaCBzcGFjZS4gU28gSSB3YW50ZWQgdG8gZ2V0IHlvdXIgZmVlZCBhbmQgd2lsbCBuZWVkIHRv
IG1ha2UgYSBkZWNpc2lvbiBiZWZvcmUgdGhlIG5leHQgQWR2aXNvcnkgQm9hcmQgbWVldGluZyBp
biBPY3RvYmVyLiBJZGVhbGx5IHdlbGwgYmVmb3JlLgo+Cj4gTGV0IG1lIGxheSBvdXQgd2hhdCBJ
IGtub3cuCj4gKiBMaW51eENvbiBVUyB3aWxsIGJlIGluIFNlYXR0bGUgQXVnIDE3LTE5Cj4gKiBM
aW51eCBQbHVtYmVycyB3aWxsIGJlIGluIFNlYXR0bGUgQXVnIDE5LCB3aXRoIG1pbmkgc3VtbWl0
cyBBdWcgMjAgJiAyMXN0Cj4gKiBUaGVyZSB3aWxsIGFsc28gYmUgYSBuZXcgQ29udGFpbmVyIENv
biBBdWcgMjAgJiAyMXN0Cj4gKiBLVk0gRm9ydW0gaXMgdGhpbmtpbmcgYnV0IGhhdmUgbm90IGRl
Y2lkZWQgdG8gYmUgaW4gU2VhdHRsZSBhbHNvIHNvbWV0aW1lcyBiZXR3ZWVuIEF1ZyAxOSAtIDIx
c3QKPiAqIFRoZXJlIGlzIGp1c3QgZW5vdWdoIHNwYWNlIGZvciBhIFhlbiBQcm9qZWN0IFN1bW1p
dCBmcm9tIEF1ZyAxOSAtIDIxc3QKPiAqIExpbnV4Q29uIEVVIGlzIG1vc3QgbGlrZWx5IGluIEJy
dXNzZWxzIGVuZCBvZiBTZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCB0aGVyZSBpcyBu
b3QgZW5vdWdoIHNwYWNlCj4KPiBJIGFsc28gd2FudCB0byBtb3ZlIGJhY2sgdG8gYSBtb2RlbCB3
aGVyZSB3ZSBkb27igJl0IGhhdmUgYSBzZXBhcmF0ZSB1c2VyIGFuZCBkZXZlbG9wZXIgc3VtbWl0
LiBJdCBpcyB0byBleHBlbnNpdmUgYW5kIHRvbyBoYXJkIHRvIG9yZ2FuaXNlLiBXaGF0IHdlIHdv
dWxkIGRvIGlzIGhhdmUgdGhlc2Ugc2VtaS1zZXBhcmF0ZSAoZS5nLiBVc2VyIFN1bW1pdCBiZWZv
cmUgdGhlIERldiBTdW1taXQpIGFuZCB3ZSBhbGxvdyB1c2VycyB0byBzdGF5IG9uIGFuZCBhdHRl
bmQgdGhlIERldiBTdW1taXQgdXNpbmcgc29tZSBkaXNjb3VudGVkIHRpY2tldHMgaWYgdGhleSB3
YW50LiBUaGUgbWFpbiByYXRpb25hbGUgaXMgdG8gc2F2ZSBjb3N0IGFuZCBnZXQgbWF4aW11bSBp
bXBhY3QgZnJvbSBzcG9uc29yc2hpcHMgdG8gc3Vic2lkaXNlIHRoZSBldmVudChzKS4KPgo+IEJ1
dCB3ZSBuZWVkIHRvIG1ha2UgYSBkZWNpc2lvbiBwcmV0dHkgc29vbi4gTXkgdGhpbmtpbmcgd2Fz
IHRoZSBmb2xsb3dpbmc6Cj4gKiBEZXZlbG9wZXIgU3VtbWl0IG9uIDIwICYgMjFzdAo+ICogRGV2
ZWxvcGVyIE1lZXRpbmcsIEJvYXJkIE1lZXRpbmdzLCBIYWNrc3BhY2UgYW5kIFdvcmtpbmcgR3Jv
dXAgd291bGQgYmUgaGVsZCBvbiB0aGUgMTl0aC4KPiAqIFdlIGNvdWxkIGFsc28gaGF2ZSBhIFVz
ZXIgRm9jdXNzZWQgRGF5IG9uIHRoZSAxOXRoIC0gdGhlIGxpbWl0YXRpb24gaXMgdGhhdCBvbiB0
aGUgMTl0aCB3ZSBjYW5ub3QgZ2V0IHJvb21zIGhvbGRpbmcgbW9yZSB0aGFuIDYwIHBlb3BsZQo+
ICogVHJ5IHRvIGRvIHNvbWV0aGluZyB0b2dldGhlciB3aXRoIEtWTSBGb3J1bSAoRS5nLiBhIGpv
aW50IHNvY2lhbCBldmVudCBvciBzb21ldGhpbmcgLSBhc3N1bWluZyB0aGV5IGJ1eSBpbnRvIGl0
IGFuZCBkZWNpZGUgZm9yIFNlYXR0bGUsIG9yIGEgam9pbnQgSGFja2F0aG9uKQo+ICogVGhlIHBy
b2JsZW0gaXMgdGhhdCB0aGlzIHdvdWxkIGJlIGEgdmVyeSBpbnRlbnNpdmUgd2VlayBhbmQgdGhh
dCBzb21lIHBlb3BsZSBtYXkgaGF2ZSB0byBqdWdnbGUgc2NoZWR1bGVzIGFzIHRoZXkgbWF5IGhh
dmUgdG8gYXR0ZW5kIHNldmVyYWwgZXZlbnRzLgo+Cj4gT24gdGhlIG90aGVyIGhhbmQsIHRoZXJl
IGlzIGxpa2VseSBub3QgZW5vdWdoIHNwYWNlIHRvIGNvLWxvY2F0ZSB3aXRoIExpbnV4Q29uIEVV
LiBBbmQgd2UgYWx3YXlzIGFsc28gaGF2ZSBhIHZlcnkgYmlnIHByZXNlbmNlIGF0IEZPU0RFTSBp
biBCcnVzc2Vscy4gU28gY28tbG9jYXRpbmcgc2VlbXMgbm90IHF1aXRlIHJpZ2h0LCBhcyB3ZSBh
cmUgYWxtb3N0IGNvbXBldGluZyB3aXRoIG91cnNlbHZlcyBpbiB0aGUgc2FtZSBsb2NhdGlvbiB0
aGF0IHllYXIuCj4KPiBQbGVhc2UgbGV0IG1lIGtub3cgd2hhdCB5b3VyIHByZWZlcmVuY2VzIGFy
ZS4gSSBjYW4gdGhlbiBnZXQgYmFjayB0byB0aGUgQWR2aXNvcnkgQm9hcmQgYW5kIGdldCB0aGlz
IGNsb3NlZC4gQW5kIEkgbmVlZCB0byBrbm93IGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBtb250aCBh
cyBvdGhlcndpc2Ugd2Ugd2lsbCBydW4gb3V0IG9mIG9wdGlvbnMuCgpZb3VyIHJlYXNvbmluZyBo
ZXJlIHNvdW5kcyBzZW5zaWJsZSB0byBtZS4KCiAtR2VvcmdlCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndp
bi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:17 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1Mr-0005EJ-5F; Mon, 22 Sep 2014 11:01:17 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1Mp-0005EE-OS
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:15 +0000
Received: from [85.158.139.211:50997] by server-17.bemta-5.messagelabs.com id
	68/23-08943-B7100245; Mon, 22 Sep 2014 11:01:15 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1411383673!11233170!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1973 invoked from network); 22 Sep 2014 11:01:14 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:14 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="174800893"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.79) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-FG;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:02 +0100
Message-ID: <1411383603-9316-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

XenVbd's sdv build requires output from XenCrsh's sdv build, reorder to
make sdv work

Signed-off-by: Owen smith <owen.smith@citrix.com>
---
 build.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.py b/build.py
index d681fb3..26261ad 100644
--- a/build.py
+++ b/build.py
@@ -367,8 +367,8 @@ if __name__ == '__main__':
     symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
-        run_sdv('xenvbd', driver, vs)
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
     archive(driver + '.tar', [driver,'revision'])
-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:17 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1Mr-0005EJ-5F; Mon, 22 Sep 2014 11:01:17 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1Mp-0005EE-OS
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:15 +0000
Received: from [85.158.139.211:50997] by server-17.bemta-5.messagelabs.com id
	68/23-08943-B7100245; Mon, 22 Sep 2014 11:01:15 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1411383673!11233170!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 1973 invoked from network); 22 Sep 2014 11:01:14 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:14 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="174800893"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.79) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-FG;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:02 +0100
Message-ID: <1411383603-9316-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

XenVbd's sdv build requires output from XenCrsh's sdv build, reorder to
make sdv work

Signed-off-by: Owen smith <owen.smith@citrix.com>
---
 build.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.py b/build.py
index d681fb3..26261ad 100644
--- a/build.py
+++ b/build.py
@@ -367,8 +367,8 @@ if __name__ == '__main__':
     symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
-        run_sdv('xenvbd', driver, vs)
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
     archive(driver + '.tar', [driver,'revision'])
-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N0-0005Ex-6P; Mon, 22 Sep 2014 11:01:26 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1My-0005En-IH
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:24 +0000
Received: from [85.158.137.68:11513] by server-16.bemta-3.messagelabs.com id
	A7/4F-01431-38100245; Mon, 22 Sep 2014 11:01:23 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5331 invoked from network); 22 Sep 2014 11:01:23 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799126"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-E8;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:00 +0100
Message-ID: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/3] Add trim/discard/unmap support
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

SCSIOP_UNMAP SRBs are not generated by Storport. Add a device upper
filter (xendisk) to create SCSIOP_UNMAP requests from the appropriate
IOCTL. Modify the SCSIOP_UNMAP handler in xenvbd to correctly translate
SCSIOP_UNMAP requests into one or more BLKIF_OP_DISCARD requests for the
ring.
Trim, Discard and Unmap are different names for the same basic operation,
which is flagging a number of sectors as unused, so that the disk hardware
can reclaim the sectors in the best way for the disk hardware.

Owen Smith (3):
  Decode SCSIOP_UNMAP correctly into BLKIF_OP_DISCARD requests
  Run XenCrsh sdv before XenVbd sdv
  Add XenDisk device upper filter

 build.py                            |    3 +-
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1863 ++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2126 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   74 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 src/xenvbd/pdo.c                    |  101 +-
 vs2012/package/package.vcxproj      |    5 +-
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   30 +-
 vs2013/package/package.vcxproj      |    5 +-
 vs2013/xendisk/xendisk.user         |    8 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xenvbd.sln                   |   27 +
 25 files changed, 5867 insertions(+), 19 deletions(-)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj

-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N0-0005Ex-6P; Mon, 22 Sep 2014 11:01:26 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1My-0005En-IH
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:24 +0000
Received: from [85.158.137.68:11513] by server-16.bemta-3.messagelabs.com id
	A7/4F-01431-38100245; Mon, 22 Sep 2014 11:01:23 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5331 invoked from network); 22 Sep 2014 11:01:23 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799126"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-E8;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:00 +0100
Message-ID: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/3] Add trim/discard/unmap support
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

SCSIOP_UNMAP SRBs are not generated by Storport. Add a device upper
filter (xendisk) to create SCSIOP_UNMAP requests from the appropriate
IOCTL. Modify the SCSIOP_UNMAP handler in xenvbd to correctly translate
SCSIOP_UNMAP requests into one or more BLKIF_OP_DISCARD requests for the
ring.
Trim, Discard and Unmap are different names for the same basic operation,
which is flagging a number of sectors as unused, so that the disk hardware
can reclaim the sectors in the best way for the disk hardware.

Owen Smith (3):
  Decode SCSIOP_UNMAP correctly into BLKIF_OP_DISCARD requests
  Run XenCrsh sdv before XenVbd sdv
  Add XenDisk device upper filter

 build.py                            |    3 +-
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1863 ++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2126 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   74 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 src/xenvbd/pdo.c                    |  101 +-
 vs2012/package/package.vcxproj      |    5 +-
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   30 +-
 vs2013/package/package.vcxproj      |    5 +-
 vs2013/xendisk/xendisk.user         |    8 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xenvbd.sln                   |   27 +
 25 files changed, 5867 insertions(+), 19 deletions(-)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj

-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:27 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N1-0005FE-7B; Mon, 22 Sep 2014 11:01:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1Mz-0005Es-8m
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:25 +0000
Received: from [85.158.137.68:5656] by server-15.bemta-3.messagelabs.com id
	08/EA-01573-48100245; Mon, 22 Sep 2014 11:01:24 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5363 invoked from network); 22 Sep 2014 11:01:23 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799130"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-Ei;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:01 +0100
Message-ID: <1411383603-9316-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
	BLKIF_OP_DISCARD requests
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP requests contain a list of extents to discard and each
BLKIF_OP_DISCARD only handles a single extent. Break a SRB doen into multiple
ring requests as neccessary.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xenvbd/pdo.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 86 insertions(+), 15 deletions(-)

diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 9762944..c5b0b3f 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -1445,6 +1445,41 @@ PrepareSyncCache(
     return STATUS_SUCCESS;
 }
 
+static FORCEINLINE ULONG64
+__Get8Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (ULONG64)Bytes[0] << 56 |
+           (ULONG64)Bytes[1] << 48 |
+           (ULONG64)Bytes[2] << 40 |
+           (ULONG64)Bytes[3] << 32 |
+           (ULONG64)Bytes[4] << 24 |
+           (ULONG64)Bytes[5] << 16 |
+           (ULONG64)Bytes[6] << 8  |
+           (ULONG64)Bytes[7];
+}
+
+static FORCEINLINE ULONG
+__Get4Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (ULONG)Bytes[0] << 24 |
+           (ULONG)Bytes[1] << 16 |
+           (ULONG)Bytes[2] << 8  |
+           (ULONG)Bytes[3];
+}
+
+static FORCEINLINE USHORT
+__Get2Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (USHORT)Bytes[0] << 8 |
+           (USHORT)Bytes[1];
+}
+
 __checkReturn
 static NTSTATUS
 PrepareUnmap(
@@ -1452,26 +1487,62 @@ PrepareUnmap(
     __in PSCSI_REQUEST_BLOCK     Srb
     )
 {
-    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
-    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
-    if (Request == NULL)
-        return STATUS_UNSUCCESSFUL;
+    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
+    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
+    ULONG               Count = __Get2Bytes(Unmap->DataLength) / __Get2Bytes(Unmap->BlockDescrDataLength);
+    ULONG               Index;
+    LIST_ENTRY          List;
 
-    SrbExt->Count = 1;
-    // mark the SRB as pending, completion will check for pending to detect failures
+    InitializeListHead(&List);
     Srb->SrbStatus = SRB_STATUS_PENDING;
+    SrbExt->Count = 0;
 
-    Request->Srb        = Srb;
-    Request->Id         = PdoGetTag(Pdo);
-    Request->Operation  = BLKIF_OP_DISCARD;
-    Request->FirstSector = Cdb_LogicalBlock(Srb);
-    Request->NrSectors   = Cdb_TransferBlock(Srb);
-    Request->Flags       = 0;
-    InitializeListHead(&Request->Segments);
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
+        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo->RequestList);
+        if (Request == NULL)
+            goto fail1;
 
-    __PdoIncBlkifOpCount(Pdo, Request);
-    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+        ++SrbExt->Count;
+        InsertTailList(&List, &Request->Entry);
+
+        Request->Srb            = Srb;
+        Request->Id             = PdoGetTag(Pdo);
+        Request->Operation      = BLKIF_OP_DISCARD;
+        Request->FirstSector    = __Get8Bytes(Descr->StartingLba);
+        Request->NrSectors      = __Get4Bytes(Descr->LbaCount);
+        Request->Flags          = 0;
+        InitializeListHead(&Request->Segments);
+    }
+
+    for (;;) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        if (Entry == &List)
+            break;
+
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __PdoIncBlkifOpCount(Pdo, Request);
+        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+    }
     return STATUS_SUCCESS;
+
+fail1:
+    for (;;) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        if (Entry == &List)
+            break;
+
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __LookasideFree(&Pdo->RequestList, Request);
+        --SrbExt->Count;
+    }
+    return STATUS_NO_MEMORY;
 }
 
 //=============================================================================
-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:27 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N1-0005FE-7B; Mon, 22 Sep 2014 11:01:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1Mz-0005Es-8m
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:25 +0000
Received: from [85.158.137.68:5656] by server-15.bemta-3.messagelabs.com id
	08/EA-01573-48100245; Mon, 22 Sep 2014 11:01:24 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5363 invoked from network); 22 Sep 2014 11:01:23 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:23 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799130"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-Ei;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:01 +0100
Message-ID: <1411383603-9316-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
	BLKIF_OP_DISCARD requests
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP requests contain a list of extents to discard and each
BLKIF_OP_DISCARD only handles a single extent. Break a SRB doen into multiple
ring requests as neccessary.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xenvbd/pdo.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 86 insertions(+), 15 deletions(-)

diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 9762944..c5b0b3f 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -1445,6 +1445,41 @@ PrepareSyncCache(
     return STATUS_SUCCESS;
 }
 
+static FORCEINLINE ULONG64
+__Get8Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (ULONG64)Bytes[0] << 56 |
+           (ULONG64)Bytes[1] << 48 |
+           (ULONG64)Bytes[2] << 40 |
+           (ULONG64)Bytes[3] << 32 |
+           (ULONG64)Bytes[4] << 24 |
+           (ULONG64)Bytes[5] << 16 |
+           (ULONG64)Bytes[6] << 8  |
+           (ULONG64)Bytes[7];
+}
+
+static FORCEINLINE ULONG
+__Get4Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (ULONG)Bytes[0] << 24 |
+           (ULONG)Bytes[1] << 16 |
+           (ULONG)Bytes[2] << 8  |
+           (ULONG)Bytes[3];
+}
+
+static FORCEINLINE USHORT
+__Get2Bytes(
+    IN PUCHAR                   Bytes
+    )
+{
+    return (USHORT)Bytes[0] << 8 |
+           (USHORT)Bytes[1];
+}
+
 __checkReturn
 static NTSTATUS
 PrepareUnmap(
@@ -1452,26 +1487,62 @@ PrepareUnmap(
     __in PSCSI_REQUEST_BLOCK     Srb
     )
 {
-    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
-    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
-    if (Request == NULL)
-        return STATUS_UNSUCCESSFUL;
+    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
+    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
+    ULONG               Count = __Get2Bytes(Unmap->DataLength) / __Get2Bytes(Unmap->BlockDescrDataLength);
+    ULONG               Index;
+    LIST_ENTRY          List;
 
-    SrbExt->Count = 1;
-    // mark the SRB as pending, completion will check for pending to detect failures
+    InitializeListHead(&List);
     Srb->SrbStatus = SRB_STATUS_PENDING;
+    SrbExt->Count = 0;
 
-    Request->Srb        = Srb;
-    Request->Id         = PdoGetTag(Pdo);
-    Request->Operation  = BLKIF_OP_DISCARD;
-    Request->FirstSector = Cdb_LogicalBlock(Srb);
-    Request->NrSectors   = Cdb_TransferBlock(Srb);
-    Request->Flags       = 0;
-    InitializeListHead(&Request->Segments);
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
+        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo->RequestList);
+        if (Request == NULL)
+            goto fail1;
 
-    __PdoIncBlkifOpCount(Pdo, Request);
-    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+        ++SrbExt->Count;
+        InsertTailList(&List, &Request->Entry);
+
+        Request->Srb            = Srb;
+        Request->Id             = PdoGetTag(Pdo);
+        Request->Operation      = BLKIF_OP_DISCARD;
+        Request->FirstSector    = __Get8Bytes(Descr->StartingLba);
+        Request->NrSectors      = __Get4Bytes(Descr->LbaCount);
+        Request->Flags          = 0;
+        InitializeListHead(&Request->Segments);
+    }
+
+    for (;;) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        if (Entry == &List)
+            break;
+
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __PdoIncBlkifOpCount(Pdo, Request);
+        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+    }
     return STATUS_SUCCESS;
+
+fail1:
+    for (;;) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        if (Entry == &List)
+            break;
+
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __LookasideFree(&Pdo->RequestList, Request);
+        --SrbExt->Count;
+    }
+    return STATUS_NO_MEMORY;
 }
 
 //=============================================================================
-- 
2.1.0


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:32 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N6-0005Fa-8R; Mon, 22 Sep 2014 11:01:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1N4-0005FV-GT
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:31 +0000
Received: from [85.158.137.68:6408] by server-8.bemta-3.messagelabs.com id
	3F/ED-31195-98100245; Mon, 22 Sep 2014 11:01:29 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!3
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5536 invoked from network); 22 Sep 2014 11:01:28 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:28 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799142"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-HJ;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:03 +0100
Message-ID: <1411383603-9316-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Length: 235949
X-DLP: MIA2
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

WGVuRGlzayBpbnRlcmNlcHRzIGFuZCB0cmFuc2xhdGVzIElPQ1RMX1NUT1JBR0VfTUFOQUdFX0RB
VEFfU0VUX0FUVFJJQlVURVMKaW50byBTQ1NJT1BfVU5NQVAgU1JCcy4gU3RvcnBvcnQgd2lsbCBw
YXNzIG9uIHRoZXNlIFNDU0lPUF9VTk1BUCByZXF1ZXN0cwp0byBYZW5WYmQsIHdoaWNoIHdpbGwg
Y3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBCTEtJRl9PUF9ESVNDQVJEIHJlcXVlc3RzLgpYZW5EaXNr
IGlzIG9ubHkgbmVjY2Vzc2FyeSBiZWNhdXNlIFN0b3Jwb3J0IGRvZXMgbm90IGRvIHRoZSB0cmFu
c2xhdGlvbgp0byBTQ1NJT1BfVU5NQVAgU1JCcy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gc21pdGgg
PG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBidWlsZC5weSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogc3JjL3hlbmRpc2svYXNzZXJ0LmggICAgICAgICAgICAgICAgfCAg
MjIwICsrKysKIHNyYy94ZW5kaXNrL2RlYnVnLmggICAgICAgICAgICAgICAgIHwgICA5NCArKwog
c3JjL3hlbmRpc2svZHJpdmVyLmMgICAgICAgICAgICAgICAgfCAgMjAzICsrKysKIHNyYy94ZW5k
aXNrL2RyaXZlci5oICAgICAgICAgICAgICAgIHwgICA2OCArKwogc3JjL3hlbmRpc2svZmRvLmMg
ICAgICAgICAgICAgICAgICAgfCAxODYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
c3JjL3hlbmRpc2svZmRvLmggICAgICAgICAgICAgICAgICAgfCAgIDc4ICsrCiBzcmMveGVuZGlz
ay9tdXRleC5oICAgICAgICAgICAgICAgICB8ICAxMTMgKysKIHNyYy94ZW5kaXNrL3Bkby5jICAg
ICAgICAgICAgICAgICAgIHwgMjEyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwogc3JjL3hlbmRpc2svcGRvLmggICAgICAgICAgICAgICAgICAgfCAgIDkwICsrCiBzcmMveGVu
ZGlzay90aHJlYWQuYyAgICAgICAgICAgICAgICB8ICAyMjUgKysrKwogc3JjL3hlbmRpc2svdGhy
ZWFkLmggICAgICAgICAgICAgICAgfCAgIDc0ICsrCiBzcmMveGVuZGlzay90eXBlcy5oICAgICAg
ICAgICAgICAgICB8ICAgNTMgKwogc3JjL3hlbmRpc2svdXRpbC5oICAgICAgICAgICAgICAgICAg
fCAgMjIyICsrKysKIHNyYy94ZW5kaXNrL3hlbmRpc2sucmMgICAgICAgICAgICAgIHwgICA1NiAr
CiBzcmMveGVudmJkLmluZiAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwogdnMyMDEyL3Bh
Y2thZ2UvcGFja2FnZS52Y3hwcm9qICAgICAgfCAgICA1ICstCiB2czIwMTIveGVuZGlzay94ZW5k
aXNrLnZjeHByb2ogICAgICB8ICAgODQgKysKIHZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJv
ai51c2VyIHwgICAgOCArCiB2czIwMTIveGVudmJkLnNsbiAgICAgICAgICAgICAgICAgICB8ICAg
MzAgKy0KIHZzMjAxMy9wYWNrYWdlL3BhY2thZ2UudmN4cHJvaiAgICAgIHwgICAgNSArLQogdnMy
MDEzL3hlbmRpc2sveGVuZGlzay51c2VyICAgICAgICAgfCAgICA4ICsKIHZzMjAxMy94ZW5kaXNr
L3hlbmRpc2sudmN4cHJvaiAgICAgIHwgIDExMiArKwogdnMyMDEzL3hlbnZiZC5zbG4gICAgICAg
ICAgICAgICAgICAgfCAgIDI3ICsKIDI0IGZpbGVzIGNoYW5nZWQsIDU3ODAgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9hc3NlcnQu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL2RlYnVnLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBzcmMveGVuZGlzay9kcml2ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNr
L2RyaXZlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmRpc2svZmRvLmMKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBzcmMveGVuZGlzay9mZG8uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5k
aXNrL211dGV4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9wZG8uYwogY3JlYXRl
IG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3Bkby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hl
bmRpc2svdGhyZWFkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay90aHJlYWQuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBzcmMveGVuZGlzay91dGlsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay94ZW5k
aXNrLnJjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9q
CiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qLnVzZXIK
IGNyZWF0ZSBtb2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnVzZXIKIGNyZWF0ZSBt
b2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKCmRpZmYgLS1naXQgYS9i
dWlsZC5weSBiL2J1aWxkLnB5CmluZGV4IDI2MjYxYWQuLjNhNzFkMGMgMTAwNjQ0Ci0tLSBhL2J1
aWxkLnB5CisrKyBiL2J1aWxkLnB5CkBAIC0zNjgsNiArMzY4LDcgQEAgaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKIAogICAgIGlmIGxlbihzeXMuYXJndikgPD0gMiBvciBzZHZbc3lzLmFyZ3Zb
Ml1dOgogICAgICAgICBydW5fc2R2KCd4ZW5jcnNoJywgZHJpdmVyLCB2cykKKyAgICAgICAgcnVu
X3NkdigneGVuZGlzaycsIGRyaXZlciwgdnMpCiAgICAgICAgIHJ1bl9zZHYoJ3hlbnZiZCcsIGRy
aXZlciwgdnMpCiAKICAgICBhcmNoaXZlKGRyaXZlciArICdcXHNvdXJjZS50Z3onLCBtYW5pZmVz
dCgpLnNwbGl0bGluZXMoKSwgdGd6PVRydWUpCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9hc3Nl
cnQuaCBiL3NyYy94ZW5kaXNrL2Fzc2VydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNkNTcxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay9hc3NlcnQuaApA
QCAtMCwwICsxLDIyMCBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVm
IF9YRU5ESVNLX0FTU0VSVF9ICisjZGVmaW5lIF9YRU5ESVNLX0FTU0VSVF9ICisKKyNpbmNsdWRl
IDxudGRkay5oPgorCisjaW5jbHVkZSAiZGVidWcuaCIKKworc3RhdGljIEZPUkNFSU5MSU5FIFZP
SUQKK19fQnVnQ2hlY2soCisgICAgX19pbiAgVUxPTkcgICAgICAgQ29kZSwKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXIxLAorICAgIF9faW5fb3B0IFVMT05HX1BUUiAgIFBhcmFt
ZXRlcjIsCisgICAgX19pbl9vcHQgVUxPTkdfUFRSICAgUGFyYW1ldGVyMywKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXI0CisgICAgKQoreworI3ByYWdtYSBwcmVmYXN0KHN1cHBy
ZXNzOjI4MTU5KQorICAgIEtlQnVnQ2hlY2tFeChDb2RlLAorICAgICAgICAgICAgICAgICBQYXJh
bWV0ZXIxLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXIyLAorICAgICAgICAgICAgICAgICBQ
YXJhbWV0ZXIzLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXI0KTsKK30KKworI2RlZmluZSBB
U1NFUlRJT05fRkFJTFVSRSAgIDB4MDAwMERFQUQKKworCisjZGVmaW5lIEJVRyhfVEVYVCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIGNvbnN0IENIQVIgICpfVGV4dCA9IChfVEVYVCk7ICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBjb25zdCBDSEFSICAqX0ZpbGUgPSBfX0ZJTEVfXzsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgVUxPTkcgICAgICAgX0xpbmUgPSBfX0xJTkVf
XzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFcnJvcigi
QlVHOiAiIF9URVhUICJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgX19CdWdDaGVjayhBU1NFUlRJT05fRkFJTFVSRSwgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfVGV4dCwgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX0ZpbGUsICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9M
aW5lLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgMCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUg
KEZBTFNFKQorCisjZGVmaW5lIEJVR19NU0coX1RFWFQxLCBfVEVYVDIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnN0IENIQVIgICpf
VGV4dDEgPSAoX1RFWFQxKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb25z
dCBDSEFSICAqX1RleHQyID0gKF9URVhUMik7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgY29uc3QgQ0hBUiAgKl9GaWxlID0gX19GSUxFX187ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIFVMT05HICAgICAgIF9MaW5lID0gX19MSU5FX187ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRXJyb3IoIkJVRzogIiBfVEVYVDEg
IiAlc1xuIiwgX1RleHQyKTsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fQnVnQ2hlY2so
QVNTRVJUSU9OX0ZBSUxVUkUsICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgIChVTE9OR19QVFIpX1RleHQxLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9GaWxlLCAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfTGluZSwgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX1RleHQy
KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2Rl
ZmluZSBCVUdfT04oX0VYUCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChfRVhQKSBCVUcoI19FWFApCisKKyNkZWZpbmUgQlVHX09OX01TRyhfRVhQLCBfVEVYVCkgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoX0VYUCkgQlVHX01TRygjX0VYUCwgX1RFWFQpCisK
KyNpZiBEQkcKKworI2RlZmluZSBfX05UX0FTU0VSVChfRVhQKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCghKF9FWFApKSA/ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChFcnJvcigiQVNTRVJUSU9O
IEZBSUxFRDogIiAjX0VYUCAiXG4iKSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgX19hbm5v
dGF0aW9uKEwiRGVidWciLCBMIkFzc2VydEZhaWwiLCBMI19FWFApLCAgICAgICAgIFwKKyAgICAg
ICAgIERiZ1JhaXNlQXNzZXJ0aW9uRmFpbHVyZSgpLCBGQUxTRSkgOiAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIFRSVUUpCisKKyNkZWZpbmUgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhU
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoIShfRVhQKSkgPyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoRXJyb3Io
IkFTU0VSVElPTiBGQUlMRUQ6ICIgI19FWFAgIiAiICNfVEVYVCAiXG4iKSwgICAgIFwKKyAgICAg
ICAgIF9fYW5ub3RhdGlvbihMIkRlYnVnIiwgTCJBc3NlcnRGYWlsIiwgTCNfRVhQKSwgICAgICAg
ICBcCisgICAgICAgICBEYmdSYWlzZUFzc2VydGlvbkZhaWx1cmUoKSwgRkFMU0UpIDogICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBUUlVFKQorCisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAg
ICAgICAgICAgICBfX05UX0FTU0VSVChfRVhQKQorI2RlZmluZSBfX0FTU0VSVF9NU0coX0VYUCwg
X1RFWFQpICAgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhUKQorCisjZWxzZSAgIC8vIERCRwor
CisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAgICAgICAgICAgICBCVUdfT04oIShfRVhQKSkKKyNk
ZWZpbmUgX19BU1NFUlRfTVNHKF9FWFAsIF9URVhUKSAgIEJVR19PTl9NU0coIShfRVhQKSwgX1RF
WFQpCisKKyNlbmRpZiAgLy8gREJHCisKKyN1bmRlZiAgQVNTRVJUCisKKyNkZWZpbmUgQVNTRVJU
KF9FWFApICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgX19BU1NFUlQoX0VYUCk7ICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIF9fYW5hbHlzaXNfYXNzdW1lKF9FWFApOyAgICBcCisgICAgICAgIH0gd2hp
bGUgKEZBTFNFKQorCisjZGVmaW5lIEFTU0VSVF9NU0coX0VYUCwgX1RFWFQpICAgICAgICAgXAor
ICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9f
QVNTRVJUX01TRyhfRVhQLCBfVEVYVCk7ICBcCisgICAgICAgICAgICBfX2FuYWx5c2lzX2Fzc3Vt
ZShfRVhQKTsgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmluZSBBU1NFUlQz
VShfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBVTE9OR0xP
TkcgICBfTHZhbCA9IChVTE9OR0xPTkcpKF9YKTsgICAgXAorICAgICAgICAgICAgVUxPTkdMT05H
ICAgX1J2YWwgPSAoVUxPTkdMT05HKShfWSk7ICAgIFwKKyAgICAgICAgICAgIGlmICghKF9MdmFs
IF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgRXJyb3IoIiVz
ID0gJWxsdVxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVycm9yKCIlcyA9
ICVsbHVcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NFUlQoX1ggX09Q
IF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmlu
ZSBBU1NFUlQzUyhfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBMT05HTE9ORyAgICBfTHZhbCA9IChMT05HTE9ORykoX1gpOyAgICAgXAorICAgICAgICAgICAg
TE9OR0xPTkcgICAgX1J2YWwgPSAoTE9OR0xPTkcpKF9ZKTsgICAgIFwKKyAgICAgICAgICAgIGlm
ICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
RXJyb3IoIiVzID0gJWxsZFxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVy
cm9yKCIlcyA9ICVsbGRcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NF
UlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkK
KworI2RlZmluZSBBU1NFUlQzUChfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBQVk9JRCAgIF9MdmFsID0gKFBWT0lEKShfWCk7ICAgICAgICAgICAgXAorICAg
ICAgICAgICAgUFZPSUQgICBfUnZhbCA9IChQVk9JRCkoX1kpOyAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGlmICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgRXJyb3IoIiVzID0gJXBcbiIsICNfWCwgX0x2YWwpOyAgICAgXAorICAgICAgICAg
ICAgICAgIEVycm9yKCIlcyA9ICVwXG4iLCAjX1ksIF9SdmFsKTsgICAgIFwKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxl
IChGQUxTRSkKKworI2RlZmluZSBBU1NFUlRSRUZDT1VOVChfWCwgX09QLCBfWSwgX1opICAgICAg
ICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMT05HICAgIF9MID0gKExPTkcpKF9YKTsgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTE9ORyAgICBfUiA9IChMT05HKShfWSk7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIGlmICghKF9MIF9PUCBfUikpIHsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWCwgX0wpOyBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWSwgX1IpOyBc
CisgICAgICAgICAgICAgICAgQVNTRVJUX01TRyhfWCBfT1AgX1ksIChfWikpOyAgICAgICAgXAor
ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSB3aGlsZSAoRkFMU0UpCisKKyNpZm5kZWYgVEVTVF9NRU1PUlkKKyNkZWZpbmUgVEVT
VF9NRU1PUlkgREJHCisjZW5kaWYKKworI2lmIFRFU1RfTUVNT1JZCisKK19fY2hlY2tSZXR1cm4K
K3N0YXRpYyBfX2lubGluZSBCT09MRUFOCitfSXNaZXJvTWVtb3J5KAorICAgIF9faW4gY29uc3Qg
UENIQVIgQ2FsbGVyLAorICAgIF9faW4gY29uc3QgUENIQVIgTmFtZSwKKyAgICBfX2luIFBWT0lE
ICAgICAgIEJ1ZmZlciwKKyAgICBfX2luIFVMT05HICAgICAgIExlbmd0aAorICAgICkKK3sKKyAg
ICBVTE9ORyAgICAgICAgICAgT2Zmc2V0OworCisgICAgT2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAo
T2Zmc2V0IDwgTGVuZ3RoKSB7CisgICAgICAgIGlmICgqKChQVUNIQVIpQnVmZmVyICsgT2Zmc2V0
KSAhPSAwKSB7CisgICAgICAgICAgICBFcnJvcigiJXM6IG5vbi16ZXJvIGJ5dGUgaW4gJXMgKDB4
JXArMHgleClcbiIsIENhbGxlciwgTmFtZSwgQnVmZmVyLCBPZmZzZXQpOworICAgICAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIE9mZnNldCsrOworICAgIH0KKworICAg
IHJldHVybiBUUlVFOworfQorCisjZGVmaW5lIElzWmVyb01lbW9yeShfQnVmZmVyLCBfTGVuZ3Ro
KSBcCisgICAgICAgIF9Jc1plcm9NZW1vcnkoX19GVU5DVElPTl9fLCAjX0J1ZmZlciwgKF9CdWZm
ZXIpLCAoX0xlbmd0aCkpCisKKyNlbHNlICAgLy8gVEVTVF9NRU1PUlkKKworI2RlZmluZSBJc1pl
cm9NZW1vcnkoX0J1ZmZlciwgX0xlbmd0aCkgIFRSVUUKKworI2VuZGlmICAvLyBURVNUX01FTU9S
WQorCisjZGVmaW5lIElNUExZKF9YLCBfWSkgICAoIShfWCkgfHwgKF9ZKSkKKyNkZWZpbmUgRVFV
SVYoX1gsIF9ZKSAgIChJTVBMWSgoX1gpLCAoX1kpKSAmJiBJTVBMWSgoX1kpLCAoX1gpKSkKKwor
I2VuZGlmICAvLyBfWEVORElTS19BU1NFUlRfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9k
ZWJ1Zy5oIGIvc3JjL3hlbmRpc2svZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mNTkyZjg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZGVidWcuaApA
QCAtMCwwICsxLDk0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpZm5kZWYg
X0RFQlVHX0gKKyNkZWZpbmUgX0RFQlVHX0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVk
ZSA8c3RkYXJnLmg+CisKKyNpZmRlZiAgX1NEVl8KKyNkZWZpbmUgX19NT0RVTEVfXyAiIgorI2Vu
ZGlmCisKKy8vIERFQlVHX0ZJTFRFUl9NQVNLcworLy8gU2V0IHRoZXNlIHRvIHNlZSByZWxldmFu
dCBvdXRwdXQKKy8vIEVSUk9SICAgICAgICAweDAwMDAwMDAxCisvLyBXQVJOSU5HICAgICAgMHgw
MDAwMDAwMgorLy8gVFJBQ0UgICAgICAgIDB4MDAwMDAwMDQKKy8vIElORk8gICAgICAgICAweDAw
MDAwMDA4CisKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgLy8gY29uZGl0aW9uYWwg
ZXhwcmVzc2lvbiBpcyBjb25zdGFudAorCisvLworLy8gRGVidWcgT3V0cHV0IGFuZCBMb2dnaW5n
CisvLworc3RhdGljIF9faW5saW5lIFZPSUQKK19fRGVidWdNZXNzYWdlKAorICAgIF9faW4gICAg
VUxPTkcgICAgICAgTGV2ZWwsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIg
ICpQcmVmaXgsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIgICpGb3JtYXQs
CisgICAgLi4uCisgICAgKQoreworICAgIHZhX2xpc3QgICAgICAgICBBcmd1bWVudHM7CisKKyAg
ICB2YV9zdGFydChBcmd1bWVudHMsIEZvcm1hdCk7CisKKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVz
czo2MDAxKSAvLyBVc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeQorICAgIHZEYmdQcmludEV4V2l0
aFByZWZpeChQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERQRkxUUl9JSFZEUklW
RVJfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cyk7
CisgICAgdmFfZW5kKEFyZ3VtZW50cyk7Cit9CisKKyNkZWZpbmUgRXJyb3IoLi4uKSAgXAorICAg
ICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfRVJST1JfTEVWRUwsIF9fTU9EVUxFX18gInwiIF9f
RlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIFdhcm5pbmcoLi4uKSAgXAor
ICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfV0FSTklOR19MRVZFTCwgX19NT0RVTEVfXyAi
fCIgX19GVU5DVElPTl9fICI6IiwgX19WQV9BUkdTX18pCisKKyNpZiBEQkcKKyNkZWZpbmUgVHJh
Y2UoLi4uKSAgXAorICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfVFJBQ0VfTEVWRUwsIF9f
TU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorI2Vsc2UgICAvLyBE
QkcKKyNkZWZpbmUgVHJhY2UoLi4uKSBcCisgICAgICAgIChWT0lEKShfX1ZBX0FSR1NfXykKKyNl
bmRpZiAgLy8gREJHCisKKyNkZWZpbmUgVmVyYm9zZSguLi4pIFwKKyAgICAgICAgX19EZWJ1Z01l
c3NhZ2UoRFBGTFRSX0lORk9fTEVWRUwsIF9fTU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIs
IF9fVkFfQVJHU19fKQorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKKyNlbmRpZiAgLy8gX0RFQlVH
X0gKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5jIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzZmM2MQotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5jCkBAIC0wLDAgKzEsMjAzIEBACisvKiBDb3B5
cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAor
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
CisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAK
KyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAor
ICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgImRy
aXZlci5oIgorI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUg
ImFzc2VydC5oIgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworZXh0ZXJuIFBVTE9ORyAgICAgICBJ
bml0U2FmZUJvb3RNb2RlOworCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19EUklWRVIgeworICAg
IFBEUklWRVJfT0JKRUNUICAgICAgICAgICAgICBEcml2ZXJPYmplY3Q7Cit9IFhFTkRJU0tfRFJJ
VkVSLCAqUFhFTkRJU0tfRFJJVkVSOworCitzdGF0aWMgWEVORElTS19EUklWRVIgICBEcml2ZXI7
CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0RyaXZlclNldERyaXZlck9iamVjdCgKKyAg
ICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVjdAorICAgICkKK3sKKyAgICBEcml2ZXIu
RHJpdmVyT2JqZWN0ID0gRHJpdmVyT2JqZWN0OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUERS
SVZFUl9PQkpFQ1QKK19fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZPSUQKKyAgICApCit7
CisgICAgcmV0dXJuIERyaXZlci5Ecml2ZXJPYmplY3Q7Cit9CisKK1BEUklWRVJfT0JKRUNUCitE
cml2ZXJHZXREcml2ZXJPYmplY3QoCisgICAgVk9JRAorICAgICkKK3sKKyAgICByZXR1cm4gX19E
cml2ZXJHZXREcml2ZXJPYmplY3QoKTsKK30KKworRFJJVkVSX1VOTE9BRCAgIERyaXZlclVubG9h
ZDsKKworVk9JRAorRHJpdmVyVW5sb2FkKAorICAgIElOICBQRFJJVkVSX09CSkVDVCAgRHJpdmVy
T2JqZWN0CisgICAgKQoreworICAgIEFTU0VSVDNQKERyaXZlck9iamVjdCwgPT0sIF9fRHJpdmVy
R2V0RHJpdmVyT2JqZWN0KCkpOworCisgICAgVHJhY2UoIj09PT0+XG4iKTsKKworICAgIF9fRHJp
dmVyU2V0RHJpdmVyT2JqZWN0KE5VTEwpOworCisgICAgQVNTRVJUKElzWmVyb01lbW9yeSgmRHJp
dmVyLCBzaXplb2YgKFhFTkRJU0tfRFJJVkVSKSkpOworCisgICAgVHJhY2UoIjw9PT09XG4iKTsK
K30KKworRFJJVkVSX0FERF9ERVZJQ0UgICBBZGREZXZpY2U7CisKK05UU1RBVFVTCisjcHJhZ21h
IHByZWZhc3Qoc3VwcHJlc3M6MjgxNTIpIC8vIERvZXMgbm90IGNsZWFyIERPX0RFVklDRV9JTklU
SUFMSVpJTkcKK0FkZERldmljZSgKKyAgICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVj
dCwKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAgKQor
eworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1AoRHJpdmVy
T2JqZWN0LCA9PSwgX19Ecml2ZXJHZXREcml2ZXJPYmplY3QoKSk7CisKKyAgICBzdGF0dXMgPSBG
ZG9DcmVhdGUoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwor
CitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworRFJJVkVSX0RJU1BBVENIIERpc3BhdGNoOworCitOVFNUQVRVUyAK
K0Rpc3BhdGNoKAorICAgIElOIFBERVZJQ0VfT0JKRUNUICAgRGV2aWNlT2JqZWN0LAorICAgIElO
IFBJUlAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAg
RHg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBEeCA9IChQWEVORElT
S19EWClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzUChEeC0+RGV2
aWNlT2JqZWN0LCA9PSwgRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3Rh
dGUgPT0gRGVsZXRlZCkgeworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfTk9fU1VDSF9ERVZJQ0U7
CisKKyAgICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKyAgICAgICAgZ290byBkb25lOwor
ICAgIH0KKworICAgIHN0YXR1cyA9IFNUQVRVU19OT1RfU1VQUE9SVEVEOworICAgIHN3aXRjaCAo
RHgtPlR5cGUpIHsKKyAgICBjYXNlIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1Q6IHsKKyAgICAgICAg
UFhFTkRJU0tfUERPICAgIFBkbyA9IER4LT5QZG87CisKKyAgICAgICAgc3RhdHVzID0gUGRvRGlz
cGF0Y2goUGRvLCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGVU5DVElP
Tl9ERVZJQ0VfT0JKRUNUOiB7CisgICAgICAgIFBYRU5ESVNLX0ZETyAgICBGZG8gPSBEeC0+RmRv
OworCisgICAgICAgIHN0YXR1cyA9IEZkb0Rpc3BhdGNoKEZkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitEUklWRVJf
SU5JVElBTElaRSAgIERyaXZlckVudHJ5OworCitOVFNUQVRVUworRHJpdmVyRW50cnkoCisgICAg
SU4gIFBEUklWRVJfT0JKRUNUICBEcml2ZXJPYmplY3QsCisgICAgSU4gIFBVTklDT0RFX1NUUklO
RyBSZWdpc3RyeVBhdGgKKyAgICApCit7CisgICAgVUxPTkcgICAgICAgICAgICAgICBJbmRleDsK
KworICAgIEFTU0VSVDNQKF9fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksID09LCBOVUxMKTsKKyAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFJlZ2lzdHJ5UGF0aCk7CisKKyAgICBFeEluaXRpYWxp
emVEcml2ZXJSdW50aW1lKERydlJ0UG9vbE54T3B0SW4pOworCisgICAgVHJhY2UoIj09PT0+XG4i
KTsKKworICAgIF9fRHJpdmVyU2V0RHJpdmVyT2JqZWN0KERyaXZlck9iamVjdCk7CisKKyAgICBE
cml2ZXJPYmplY3QtPkRyaXZlclVubG9hZCA9IERyaXZlclVubG9hZDsKKworICAgIGlmICgqSW5p
dFNhZmVCb290TW9kZSA+IDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIlhF
TkRJU0sgJWQuJWQuJWQgKCVkKSAoJTAyZC4lMDJkLiUwNGQpXG4iLAorICAgICAgICAgICAgTUFK
T1JfVkVSU0lPTiwKKyAgICAgICAgICAgIE1JTk9SX1ZFUlNJT04sCisgICAgICAgICAgICBNSUNS
T19WRVJTSU9OLAorICAgICAgICAgICAgQlVJTERfTlVNQkVSLAorICAgICAgICAgICAgREFZLAor
ICAgICAgICAgICAgTU9OVEgsCisgICAgICAgICAgICBZRUFSKTsKKworICAgIERyaXZlck9iamVj
dC0+RHJpdmVyRXh0ZW5zaW9uLT5BZGREZXZpY2UgPSBBZGREZXZpY2U7CisKKyAgICBmb3IgKElu
ZGV4ID0gMDsgSW5kZXggPD0gSVJQX01KX01BWElNVU1fRlVOQ1RJT047IEluZGV4KyspIHsKKyNw
cmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OSkgLy8gTm8gX19kcnZfZGlzcGF0Y2hUeXBlIGFu
bm90YXRpb24KKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OCkgLy8gTm8gbWF0Y2hpbmcg
X19kcnZfZGlzcGF0Y2hUeXBlIGFubm90YXRpb24gZm9yIElSUF9NSl9DUkVBVEUKKyAgICAgICAg
RHJpdmVyT2JqZWN0LT5NYWpvckZ1bmN0aW9uW0luZGV4XSA9IERpc3BhdGNoOworICAgIH0KKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5oIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3ZTIxYgotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHly
aWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
CisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAg
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAK
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAor
ICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisg
KiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19EUklWRVJfSAorI2RlZmlu
ZSBfWEVORElTS19EUklWRVJfSAorCisjaW5jbHVkZSAiZmRvLmgiCisjaW5jbHVkZSAicGRvLmgi
CisKK2V4dGVybiBQRFJJVkVSX09CSkVDVAorRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZP
SUQKKyAgICApOworCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOjQyMDEpIC8vIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogbmFtZWxlc3Mgc3RydWN0
L3VuaW9uCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX0RYIHsKKyAgICBQREVWSUNFX09CSkVD
VCAgICAgIERldmljZU9iamVjdDsKKyAgICBERVZJQ0VfT0JKRUNUX1RZUEUgIFR5cGU7CisKKyAg
ICBERVZJQ0VfUE5QX1NUQVRFICAgIERldmljZVBucFN0YXRlOworICAgIERFVklDRV9QTlBfU1RB
VEUgICAgUHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKKworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtUG93ZXJTdGF0ZTsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVBvd2VyU3Rh
dGU7CisKKyAgICBJT19SRU1PVkVfTE9DSyAgICAgIFJlbW92ZUxvY2s7CisKKyAgICBMSVNUX0VO
VFJZICAgICAgICAgIExpc3RFbnRyeTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgUFhFTkRJU0tf
RkRPICAgIEZkbzsKKyAgICAgICAgUFhFTkRJU0tfUERPICAgIFBkbzsKKyAgICB9OworfSBYRU5E
SVNLX0RYLCAqUFhFTkRJU0tfRFg7CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKyNlbmRpZiAv
LyBfWEVORElTS19EUklWRVJfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svZmRvLmMgYi9zcmMv
eGVuZGlzay9mZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA5Y2E2
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZmRvLmMKQEAgLTAsMCArMSwxODYzIEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bmFtZXMuaD4KKworI2luY2x1
ZGUgImRyaXZlci5oIgorI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1
ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgIm11dGV4LmgiCisjaW5jbHVkZSAiZGVidWcuaCIKKyNp
bmNsdWRlICJhc3NlcnQuaCIKKyNpbmNsdWRlICJ1dGlsLmgiCisKKyNkZWZpbmUgRkRPX1RBRyAn
T0RGJworCitzdHJ1Y3QgX1hFTkRJU0tfRkRPIHsKKyAgICBQWEVORElTS19EWCAgICAgICAgICAg
ICAgICAgICAgIER4OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJE
ZXZpY2VPYmplY3Q7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgICAgICAgICBQaHlzaWNh
bERldmljZU9iamVjdDsKKworICAgIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICAgICAgICAgU3lz
dGVtUG93ZXJUaHJlYWQ7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0
ZW1Qb3dlcklycDsKKyAgICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgICAgIERldmljZVBv
d2VyVGhyZWFkOworICAgIFBJUlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93
ZXJJcnA7CisKKyAgICBNVVRFWCAgICAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4OworICAg
IFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKK307CisKK3N0YXRp
YyBGT1JDRUlOTElORSBQVk9JRAorX19GZG9BbGxvY2F0ZSgKKyAgICBJTiAgVUxPTkcgICBMZW5n
dGgKKyAgICApCit7CisgICAgcmV0dXJuIF9fQWxsb2NhdGVOb25QYWdlZFBvb2xXaXRoVGFnKF9f
RlVOQ1RJT05fXywgX19MSU5FX18sIExlbmd0aCwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBWT0lECitfX0Zkb0ZyZWUoCisgICAgSU4gIFBWT0lEICAgQnVmZmVyCisgICAgKQor
eworICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1ZmZlciwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX0Zkb1NldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElT
S19GRE8gICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAg
ICkKK3sKKyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICAv
LyBXZSBjYW4gbmV2ZXIgdHJhbnNpdGlvbiBvdXQgb2YgdGhlIGRlbGV0ZWQgc3RhdGUKKyAgICBB
U1NFUlQoRHgtPkRldmljZVBucFN0YXRlICE9IERlbGV0ZWQgfHwgU3RhdGUgPT0gRGVsZXRlZCk7
CisKKyAgICBEeC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZSA9IER4LT5EZXZpY2VQbnBTdGF0ZTsK
KyAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5F
IFZPSUQKK19fRmRvUmVzdG9yZURldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBpZiAoRHgt
PkRldmljZVBucFN0YXRlID09IFN0YXRlKQorICAgICAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBE
eC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIERFVklD
RV9QTlBfU1RBVEUKK19fRmRvR2V0RGV2aWNlUG5wU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBucFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19GZG9TZXREZXZpY2VQb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BPV0VSX1NUQVRFICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+RGV2
aWNlUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BP
V0VSX1NUQVRFCitfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX0Zkb1NldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICAgICAgRmRvLAorICAgIElOICBTWVNURU1fUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQor
eworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+
U3lzdGVtUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgU1lTVEVN
X1BPV0VSX1NUQVRFCitfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+
RHg7CisKKyAgICByZXR1cm4gRHgtPlN5c3RlbVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBQREVWSUNFX09CSkVDVAorX19GZG9HZXRQaHlzaWNhbERldmljZU9iamVjdCgKKyAg
ICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbworICAgICkKK3sKKyAgICByZXR1cm4gRmRvLT5QaHlz
aWNhbERldmljZU9iamVjdDsKK30KKworVk9JRAorRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3Qo
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBE
ZXZpY2VPYmplY3QKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKworICAg
IER4ID0gKFBYRU5ESVNLX0RYKURldmljZU9iamVjdC0+RGV2aWNlRXh0ZW5zaW9uOworICAgIEFT
U0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7CisKKyAgICBJbnNl
cnRUYWlsTGlzdCgmRmRvLT5EeC0+TGlzdEVudHJ5LCAmRHgtPkxpc3RFbnRyeSk7CisgICAgQVNT
RVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwgMCk7CisgICAgRmRvLT5SZWZlcmVuY2VzKys7Cit9
CisKK1ZPSUQKK0Zkb1JlbW92ZVBoeXNpY2FsRGV2aWNlT2JqZWN0KAorICAgIElOICBQWEVORElT
S19GRE8gICAgRmRvLAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHg7CisKKyAgICBEeCA9IChQWEVORElTS19E
WClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzVShEeC0+VHlwZSwg
PT0sIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgUmVtb3ZlRW50cnlMaXN0KCZEeC0+
TGlzdEVudHJ5KTsKKyAgICBBU1NFUlQzVShGZG8tPlJlZmVyZW5jZXMsICE9LCAwKTsKKyAgICAt
LUZkby0+UmVmZXJlbmNlczsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRmRvQWNx
dWlyZU11dGV4KAorICAgIElOICBQWEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBB
Y3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworfQorCitWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisg
ICAgSU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKQoreworICAgIF9fRmRvQWNxdWlyZU11
dGV4KEZkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb1JlbGVhc2VNdXRl
eCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApCit7CisgICAgUmVsZWFzZU11
dGV4KCZGZG8tPk11dGV4KTsKK30KKworVk9JRAorRmRvUmVsZWFzZU11dGV4KAorICAgIElOICBQ
WEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBfX0Zkb1JlbGVhc2VNdXRleChGZG8p
OworCisgICAgaWYgKEZkby0+UmVmZXJlbmNlcyA9PSAwKQorICAgICAgICBGZG9EZXN0cm95KEZk
byk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb0VudW1lcmF0ZSgKKyAgICBJ
TiAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfUkVMQVRJT05TICAg
UmVsYXRpb25zCisgICAgKQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICpQaHlzaWNh
bERldmljZU9iamVjdDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudDsKKyAgICBQ
TElTVF9FTlRSWSAgICAgICAgICAgICBMaXN0RW50cnk7CisgICAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgSW5kZXg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAg
Q291bnQgPSBSZWxhdGlvbnMtPkNvdW50OworICAgIEFTU0VSVChDb3VudCAhPSAwKTsKKworICAg
IFBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gX19GZG9BbGxvY2F0ZShzaXplb2YgKFBERVZJQ0VfT0JK
RUNUKSAqIENvdW50KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYg
KFBoeXNpY2FsRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBSdGxDb3B5TWVtb3J5KFBoeXNpY2FsRGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAg
UmVsYXRpb25zLT5PYmplY3RzLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChQREVWSUNFX09C
SkVDVCkgKiBDb3VudCk7CisKKyAgICBBY3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAg
Ly8gUmVtb3ZlIGFueSBQRE9zIHRoYXQgZG8gbm90IGFwcGVhciBpbiB0aGUgZGV2aWNlIGxpc3QK
KyAgICBMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7CisgICAgd2hpbGUgKExp
c3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5KSB7CisgICAgICAgIFBMSVNUX0VOVFJZICAg
ICBOZXh0ID0gTGlzdEVudHJ5LT5GbGluazsKKyAgICAgICAgUFhFTkRJU0tfRFggICAgIER4ID0g
Q09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5ESVNLX0RYLCBMaXN0RW50cnkpOworICAg
ICAgICBQWEVORElTS19QRE8gICAgUGRvID0gRHgtPlBkbzsKKyAgICAgICAgQk9PTEVBTiAgICAg
ICAgIE1pc3Npbmc7CisKKyAgICAgICAgTWlzc2luZyA9IFRSVUU7CisgICAgICAgIGZvciAoSW5k
ZXggPSAwOyBJbmRleCA8IENvdW50OyBJbmRleCsrKSB7CisgICAgICAgICAgICBpZiAoUGRvR2V0
UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKSA9PSBQaHlzaWNhbERldmljZU9iamVjdFtJbmRleF0p
IHsKKyAgICAgICAgICAgICAgICBNaXNzaW5nID0gRkFMU0U7CisjcHJhZ21hIHByZWZhc3Qoc3Vw
cHJlc3M6NjM4NykgIC8vIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSBjb3VsZCBiZSBOVUxM
CisgICAgICAgICAgICAgICAgT2JEZXJlZmVyZW5jZU9iamVjdChQaHlzaWNhbERldmljZU9iamVj
dFtJbmRleF0pOworICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSA9
IE5VTEw7IC8vIGF2b2lkIGR1cGxpY2F0aW9uCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTWlzc2luZyAmJiAhUGRvSXNNaXNz
aW5nKFBkbykpIHsKKyAgICAgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09
IFByZXNlbnQpIHsKKyAgICAgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworICAgICAgICAgICAgICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgUGRvU2V0TWlzc2luZyhQZG8sICJkZXZpY2UgZGlzYXBw
ZWFyZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIExpc3RFbnRyeSA9
IE5leHQ7CisgICAgfQorCisgICAgLy8gV2FsayB0aGUgbGlzdCBhbmQgY3JlYXRlIFBETyBmaWx0
ZXJzIGZvciBhbnkgbmV3IGRldmljZXMKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBDb3Vu
dDsgSW5kZXgrKykgeworI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjYzODUpICAvLyBSZWFkaW5n
IGludmFsaWQgZGF0YSBmcm9tICdQaHlzaWNhbERldmljZU9iamVjdCcKKyAgICAgICAgaWYgKFBo
eXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSAhPSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkg
UGRvQ3JlYXRlKEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxEZXZp
Y2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoUGh5c2lj
YWxEZXZpY2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBSZWxl
YXNlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAgX19GZG9GcmVlKFBoeXNpY2FsRGV2aWNlT2Jq
ZWN0KTsKKyAgICByZXR1cm47CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5F
KQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9Gb3J3YXJkSXJwU3luY2hy
b25vdXNseSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAg
ICApCit7CisgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVudCA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihJcnApOworCisgICAgS2VTZXRFdmVudChFdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBG
QUxTRSk7CisKKyAgICByZXR1cm4gU1RBVFVTX01PUkVfUFJPQ0VTU0lOR19SRVFVSVJFRDsKK30K
Kworc3RhdGljIE5UU1RBVFVTCitGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBLRVZFTlQgICAgICAgICAgICAgIEV2ZW50OworICAgIE5UU1RBVFVTICAgICAgICAg
ICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lW
RV9MRVZFTCk7CisKKyAgICBLZUluaXRpYWxpemVFdmVudCgmRXZlbnQsIE5vdGlmaWNhdGlvbkV2
ZW50LCBGQUxTRSk7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJ
cnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19GZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVj
dCwgSXJwKTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKSB7CisgICAgICAgIChW
T0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
ICAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsKKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQzVShzdGF0dXMsID09LCBJcnAtPklvU3RhdHVzLlN0YXR1cyk7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVT
CitGZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAgICAgICAgIFBv
d2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMg
PSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgc3RhdHVz
ID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICghTlRfU1VD
Q0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19GZG9TZXRTeXN0ZW1Q
b3dlclN0YXRlKEZkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX0Zkb1NldERldmljZVBv
d2VyU3RhdGUoRmRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNlU3Rh
dGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZpY2VP
YmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8s
IFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsK
KworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitm
YWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3RvcFBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9RdWVyeVN0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsK
KyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElO
RSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvQ2FuY2VsU3RvcERldmlj
ZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAg
ICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7
CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVy
bmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb0NhbmNl
bFN0b3BEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7
CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2Nr
LCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIF9f
RmRvUmVzdG9yZURldmljZVBucFN0YXRlKEZkbywgU3RvcFBlbmRpbmcpOworCisgICAgSW9Db3B5
Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25S
b3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsU3RvcERl
dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIo
RmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2Zh
aWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlS
UUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9TdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09C
SkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElO
ICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAg
ICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9i
amVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBE
RUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvU3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJ
U0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQT1dFUl9TVEFURSAgICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5S
ZW1vdmVMb2NrLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgaWYgKF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pICE9IFBv
d2VyRGV2aWNlRDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNl
U3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZp
Y2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQb3dlclN0YXRl
KEZkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19GZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbywg
UG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKK2RvbmU6CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0
ZShGZG8sIFN0b3BwZWQpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9TdG9wRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0
YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAg
SW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitf
X2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5UmVtb3ZlRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvUXVlcnlSZW1v
dmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisK
KyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJ
cnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOwor
CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIEly
cC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50
SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUo
SXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9RdWVyeVJlbW92ZURldmljZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5M
b3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgor
ICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0
KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19GZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAgSU4gIFBERVZJQ0Vf
T0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNl
T2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJr
SXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGlj
IERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitGZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAg
ICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJ
b0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgX19GZG9SZXN0
b3JlRGV2aWNlUG5wU3RhdGUoRmRvLCBSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVz
LlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsUmVtb3ZlRGV2aWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNl
T2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3VycHJpc2VSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNU
QVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQo
SXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRmRvU3VycHJpc2VSZW1vdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKwor
ICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOwor
CisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMg
PSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwor
CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RB
VFVTCitGZG9SZW1vdmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUE9XRVJfU1RBVEUgICAgICAg
ICBQb3dlclN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlm
IChfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAg
ICBnb3RvIGRvbmU7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VE
MzsKKyAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAg
ICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAgICAgICBQb3dlclN0
YXRlKTsKKworICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8sIFBvd2VyRGV2aWNlRDMp
OworICAgIF9fRmRvU2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8sIFBvd2VyU3lzdGVtU2h1dGRvd24p
OworCitkb25lOgorICAgIF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBEZWxldGVkKTsKKwor
ICAgIElvUmVsZWFzZVJlbW92ZUxvY2tBbmRXYWl0KCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOwor
ICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIEFjcXVp
cmVNdXRleCgmRmRvLT5NdXRleCk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwg
MCk7CisgICAgLS1GZG8tPlJlZmVyZW5jZXM7CisgICAgUmVsZWFzZU11dGV4KCZGZG8tPk11dGV4
KTsKKworICAgIGlmIChGZG8tPlJlZmVyZW5jZXMgPT0gMCkKKyAgICAgICAgRmRvRGVzdHJveShG
ZG8pOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zk
b1F1ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29u
dGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19O
T19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5H
X1JFUVVJUkVEOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb1F1
ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAg
RXZlbnQ7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVMT05H
ICAgICAgICAgICAgICAgU2l6ZTsKKyAgICBQREVWSUNFX1JFTEFUSU9OUyAgIFJlbGF0aW9uczsK
KyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKyAgICBVTE9ORyAgICAgICAgICAg
ICAgIENvdW50OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVz
ID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIEtlSW5p
dGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZpY2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElv
Q29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0
aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zkb1F1ZXJ5RGV2
aWNlUmVsYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMg
PT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAgICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVj
dCgmRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0
dXMuU3RhdHVzOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIEly
cC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgaWYgKFN0YWNrTG9jYXRpb24tPlBhcmFtZXRl
cnMuUXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPSBCdXNSZWxhdGlvbnMpCisgICAgICAgIGdv
dG8gZG9uZTsKKworICAgIFJlbGF0aW9ucyA9IChQREVWSUNFX1JFTEFUSU9OUylJcnAtPklvU3Rh
dHVzLkluZm9ybWF0aW9uOworCisgICAgaWYgKFJlbGF0aW9ucy0+Q291bnQgIT0gMCkKKyAgICAg
ICAgX19GZG9FbnVtZXJhdGUoRmRvLCBSZWxhdGlvbnMpOworCisgICAgRXhGcmVlUG9vbChSZWxh
dGlvbnMpOworCisgICAgQWNxdWlyZU11dGV4KCZGZG8tPk11dGV4KTsKKworICAgIENvdW50ID0g
MDsKKyAgICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAg
ICAgIExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5
ID0gTGlzdEVudHJ5LT5GbGluaykKKyAgICAgICAgQ291bnQrKzsKKworICAgIFNpemUgPSBGSUVM
RF9PRkZTRVQoREVWSUNFX1JFTEFUSU9OUywgT2JqZWN0cykgKyAoc2l6ZW9mIChERVZJQ0VfT0JK
RUNUKSAqIF9fbWluKENvdW50LCAxKSk7CisKKyAgICBSZWxhdGlvbnMgPSBFeEFsbG9jYXRlUG9v
bFdpdGhUYWcoUGFnZWRQb29sLCBTaXplLCAnVExJRicpOworCisgICAgc3RhdHVzID0gU1RBVFVT
X05PX01FTU9SWTsKKyAgICBpZiAoUmVsYXRpb25zID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFp
bDM7CisKKyAgICBSdGxaZXJvTWVtb3J5KFJlbGF0aW9ucywgU2l6ZSk7CisKKyAgICBmb3IgKExp
c3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAh
PSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5G
bGluaykgeworICAgICAgICBQWEVORElTS19EWCAgICAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChM
aXN0RW50cnksIFhFTkRJU0tfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5ESVNLX1BETyAg
ICBQZG8gPSBEeC0+UGRvOworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lD
QUxfREVWSUNFX09CSkVDVCk7CisKKyAgICAgICAgaWYgKFBkb0dldERldmljZVBucFN0YXRlKFBk
bykgPT0gUHJlc2VudCkKKyAgICAgICAgICAgIFBkb1NldERldmljZVBucFN0YXRlKFBkbywgRW51
bWVyYXRlZCk7CisKKyAgICAgICAgT2JSZWZlcmVuY2VPYmplY3QoUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoUGRvKSk7CisgICAgICAgIFJlbGF0aW9ucy0+T2JqZWN0c1tSZWxhdGlvbnMtPkNv
dW50KytdID0gUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKTsKKyAgICB9CisKKyAgICBB
U1NFUlQzVShSZWxhdGlvbnMtPkNvdW50LCA9PSwgQ291bnQpOworCisgICAgVHJhY2UoIiVkIFBE
TyhzKVxuIiwgUmVsYXRpb25zLT5Db3VudCk7CisKKyAgICBSZWxlYXNlTXV0ZXgoJkZkby0+TXV0
ZXgpOworCisgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IChVTE9OR19QVFIpUmVsYXRp
b25zOworICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCitkb25lOgorICAgIElvUmVsZWFz
ZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBSZWxlYXNlTXV0
ZXgoJkZkby0+TXV0ZXgpOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8t
PkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBM
RVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlz
cGF0Y2hQbnAoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0Cisg
ICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRp
bmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxl
YXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRv
RGlzcGF0Y2hQbnAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xv
Y2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAgICAgTWlub3JGdW5jdGlvbjsKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRp
b24tPk1pbm9yRnVuY3Rpb247CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb24pIHsKKyAgICBjYXNlIElSUF9NTl9TVEFSVF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9
IEZkb1N0YXJ0RGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NTl9RVUVSWV9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gRmRvUXVlcnlTdG9wRGV2
aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9DQU5DRUxf
U1RPUF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IEZkb0NhbmNlbFN0b3BEZXZpY2UoRmRvLCBJ
cnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1NUT1BfREVWSUNFOgorICAg
ICAgICBzdGF0dXMgPSBGZG9TdG9wRGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIElSUF9NTl9RVUVSWV9SRU1PVkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBG
ZG9RdWVyeVJlbW92ZURldmljZShGZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBJUlBfTU5fU1VSUFJJU0VfUkVNT1ZBTDoKKyAgICAgICAgc3RhdHVzID0gRmRvU3VycHJpc2VS
ZW1vdmFsKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9SRU1P
VkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBGZG9SZW1vdmVEZXZpY2UoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX0NBTkNFTF9SRU1PVkVfREVWSUNFOgor
ICAgICAgICBzdGF0dXMgPSBGZG9DYW5jZWxSZW1vdmVEZXZpY2UoRmRvLCBJcnApOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX0RFVklDRV9SRUxBVElPTlM6CisgICAg
ICAgIHN0YXR1cyA9IEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zKEZkbywgSXJwKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVM
b2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Mo
c3RhdHVzKSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVu
dElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91
dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9EaXNwYXRjaFBu
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1
cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigi
ZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBz
dGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zk
b1NldERldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIl
cDogJXMgLT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAg
ICBQb3dlckRldmljZVN0YXRlTmFtZShfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSksCisg
ICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19GZG9T
ZXREZXZpY2VQb3dlclN0YXRlKEZkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9TZXREZXZpY2VQb3dlckRv
d24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOwor
ICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tM
b2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVy
cy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA+
LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVz
IC0+ICVzXG4iLAorICAgICAgICAgRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93
ZXJEZXZpY2VTdGF0ZU5hbWUoX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpLAorICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsKKworICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJTdGF0ZShGZG8sIERldmljZVN0YXRlKTsKKworICAgIHN0YXR1cyA9IEZkb0Zvcndh
cmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAs
IElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9S
Q0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvU2V0RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFU
RSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xv
Y2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0
aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAg
ICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFt
ZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikp
OworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8p
KSB7CisgICAgICAgIHN0YXR1cyA9IEZkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJw
KTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBf
X0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSkgPworICAgICAgICAgICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAgICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJE
b3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxu
IiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAg
ICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
U2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1Uo
U3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBz
dGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIiVw
OiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIEZkby0+RHgtPkRldmljZU9iamVjdCwKKyAgICAgICAg
IFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fRmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSwKKyAg
ICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSk7CisKKyAgICBfX0Zkb1Nl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvLCBTeXN0ZW1TdGF0ZSk7CisKK2RvbmU6CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1NldFN5c3RlbVBvd2VyRG93
bigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAg
IElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247Cisg
ICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJz
LlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsID4s
ICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBWZXJib3NlKCIlcDogJXMg
LT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSksCisgICAgICAg
ICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSkpOworCisgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclN0YXRlKEZkbywgU3lzdGVtU3RhdGUpOworCisgICAgc3RhdHVzID0gRmRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBOVFNUQVRVUworX19GZG9TZXRTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tf
RkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRF
ICBTeXN0ZW1TdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9j
YXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rp
b24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAg
IFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1l
KFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7
CisKKyAgICBpZiAoU3lzdGVtU3RhdGUgPT0gX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykp
IHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnAp
OworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9f
RmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclVwKEZkbywgSXJwKSA6CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0ZW1Qb3dlckRv
d24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRyYWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4i
LAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAg
ICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSwKKyAgICAgICAgICBzdGF0dXMpOworICAg
IHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9R
dWVyeURldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworCisgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1
czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5RGV2aWNlUG93
ZXJEb3duKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlv
bjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0
YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFt
ZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShEZXZpY2VTdGF0
ZSwgPiwgIF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKTsKKworICAgIHN0YXR1cyA9IEZk
b0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvUXVlcnlEZXZpY2VQb3dlcigKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BP
V0VSX1NUQVRFICBEZXZpY2VTdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9
IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisgICAg
UG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlw
ZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyRGV2aWNl
U3RhdGVOYW1lKERldmljZVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2Vy
QWN0aW9uKSk7CisKKyAgICBpZiAoRGV2aWNlU3RhdGUgPT0gX19GZG9HZXREZXZpY2VQb3dlclN0
YXRlKEZkbykpIHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHko
RmRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7CisKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChEZXZpY2VT
dGF0ZSA8IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19G
ZG9RdWVyeURldmljZVBvd2VyVXAoRmRvLCBJcnApIDoKKyAgICAgICAgICAgICBfX0Zkb1F1ZXJ5
RGV2aWNlUG93ZXJEb3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVz
OiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0
ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAg
c3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRT
VEFUVVMKK19fRmRvUXVlcnlTeXN0ZW1Qb3dlclVwKAorICAgIElOICBQWEVORElTS19GRE8gICAg
IEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0
ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9j
YXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3Rh
dGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOwor
CisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUo
RmRvKSk7CisKKyAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIEly
cCk7CisKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
UXVlcnlTeXN0ZW1Qb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VS
VDNVKFN5c3RlbVN0YXRlLCA+LCAgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpOworCisg
ICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElv
Q29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9RdWVyeVN5c3RlbVBv
d2VyKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsK
KyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5c3RlbVN0YXRlOworICAgIFBPV0VSX0FDVElPTiAg
ICAgICAgUG93ZXJBY3Rpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0
ZW1TdGF0ZTsKKyAgICBQb3dlckFjdGlvbiA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU2h1dGRvd25UeXBlOworCisgICAgVHJhY2UoIj09PT0+ICglczolcylcbiIsCisgICAgICAg
ICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pKTsKKworICAgIGlmIChTeXN0ZW1TdGF0ZSA9PSBfX0Zkb0dl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvKSkgeworICAgICAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJw
U3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgc3Rh
dHVzID0gKFN5c3RlbVN0YXRlIDwgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpID8KKyAg
ICAgICAgICAgICBfX0Zkb1F1ZXJ5U3lzdGVtUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAg
ICAgIF9fRmRvUXVlcnlTeXN0ZW1Qb3dlckRvd24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRy
YWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVO
YW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9u
KSwKKyAgICAgICAgICBzdGF0dXMpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGlj
IE5UU1RBVFVTCitGZG9EZXZpY2VQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYs
CisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNL
X0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50
OworCisgICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsK
KyAgICAgICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NB
VElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1
bmN0aW9uOworCisgICAgICAgIGlmIChGZG8tPkRldmljZVBvd2VySXJwID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPkRldmljZVBvd2VySXJwOworCisgICAg
ICAgIGlmIChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZk
by0+RGV2aWNlUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKwor
ICAgICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnAp
OworICAgICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsK
KworICAgICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAg
ICAgY2FzZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0RGV2
aWNlUG93ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJ
UlBfTU5fUVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeURldmljZVBv
d2VyKEZkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIE5UU1RB
VFVTCitGZG9TeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50OworCisg
ICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsKKyAgICAg
ICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NBVElPTiAg
U3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0aW9u
OworCisgICAgICAgIGlmIChGZG8tPlN5c3RlbVBvd2VySXJwID09IE5VTEwpIHsKKyAgICAgICAg
ICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPlN5c3RlbVBvd2VySXJwOworCisgICAgICAgIGlm
IChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZkby0+U3lz
dGVtUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgICAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
ICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAg
ICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAgICAgY2Fz
ZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0U3lzdGVtUG93
ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJUlBfTU5f
UVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeVN5c3RlbVBvd2VyKEZk
bywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAg
IH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX0Zkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmpl
Y3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4
dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlm
IChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOwor
CisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBO
VFNUQVRVUworRmRvRGlzcGF0Y2hQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIFBPV0VSX1NUQVRFX1RZUEUgICAgUG93ZXJUeXBlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRv
LT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgZ290byBmYWlsMTsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICBpZiAoTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fUVVFUllfUE9X
RVIgJiYKKyAgICAgICAgTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fU0VUX1BPV0VSKSB7CisgICAg
ICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElv
U2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fRmRvRGlzcGF0Y2hQb3dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUp
OworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0
LCBJcnApOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQb3dlclR5cGUgPSBT
dGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCUwMng6JXMpXG4iLAorICAgICAgICAgIE1pbm9yRnVuY3Rpb24sIAorICAgICAgICAgIFBvd2Vy
TWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbikpOyAKKworICAgIHN3aXRjaCAoUG93ZXJU
eXBlKSB7CisgICAgY2FzZSBEZXZpY2VQb3dlclN0YXRlOgorICAgICAgICBJb01hcmtJcnBQZW5k
aW5nKElycCk7CisKKyAgICAgICAgQVNTRVJUM1AoRmRvLT5EZXZpY2VQb3dlcklycCwgPT0sIE5V
TEwpOworICAgICAgICBGZG8tPkRldmljZVBvd2VySXJwID0gSXJwOworICAgICAgICBLZU1lbW9y
eUJhcnJpZXIoKTsKKworICAgICAgICBUaHJlYWRXYWtlKEZkby0+RGV2aWNlUG93ZXJUaHJlYWQp
OworCisgICAgICAgIHN0YXR1cyA9IFNUQVRVU19QRU5ESU5HOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgU3lzdGVtUG93ZXJTdGF0ZToKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnAp
OworCisgICAgICAgIEFTU0VSVDNQKEZkby0+U3lzdGVtUG93ZXJJcnAsID09LCBOVUxMKTsKKyAg
ICAgICAgRmRvLT5TeXN0ZW1Qb3dlcklycCA9IElycDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShGZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKworICAg
ICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOwor
ICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0Zkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVHJhY2UoIjw9
PT09ICglMDJ4OiVzKSAoJTA4eClcbiIsCisgICAgICAgICAgTWlub3JGdW5jdGlvbiwgCisgICAg
ICAgICAgUG93ZXJNaW5vckZ1bmN0aW9uTmFtZShNaW5vckZ1bmN0aW9uKSwKKyAgICAgICAgICBz
dGF0dXMpOworCitkb25lOgorICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9y
KCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisK
KyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJ
T05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlzcGF0
Y2hEZWZhdWx0KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAor
ICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5k
aW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVs
ZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUwor
RmRvRGlzcGF0Y2hEZWZhdWx0KAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7
CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0Zkb0Rpc3BhdGNoRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZk
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBz
dGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAg
IHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBs
ZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOwor
fQorCitOVFNUQVRVUworRmRvRGlzcGF0Y2goCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8s
CisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xP
Q0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwor
CisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
KworICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgeworICAgIGNhc2Ug
SVJQX01KX1BOUDoKKyAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hQbnAoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01KX1BPV0VSOgorICAgICAgICBzdGF0dXMg
PSBGZG9EaXNwYXRjaFBvd2VyKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaERlZmF1bHQoRmRvLCBJcnApOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRVUwor
RmRvQ3JlYXRlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgUGh5c2ljYWxEZXZpY2VPYmplY3QK
KyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBVTE9ORyAgICAgICAgICAgICAgIERldmljZVR5cGU7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKyAgICBQ
WEVORElTS19GRE8gICAgICAgIEZkbzsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsK
KworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9HZXRBdHRhY2hlZERldmljZVJlZmVyZW5jZShQ
aHlzaWNhbERldmljZU9iamVjdCk7CisgICAgRGV2aWNlVHlwZSA9IExvd2VyRGV2aWNlT2JqZWN0
LT5EZXZpY2VUeXBlOworICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoTG93ZXJEZXZpY2VPYmplY3Qp
OworCisjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxOTcpIC8vIFBvc3NpYmx5IGxlYWtpbmcg
bWVtb3J5ICdGaWx0ZXJEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9DcmVhdGVEZXZpY2Uo
RHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mIChYRU5ESVNLX0RYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRV9ERVZJQ0VfU0VDVVJFX09QRU4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZpbHRlckRldmljZU9i
amVjdCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBEeCA9IChQWEVORElTS19EWClGaWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZUV4dGVu
c2lvbjsKKyAgICBSdGxaZXJvTWVtb3J5KER4LCBzaXplb2YgKFhFTkRJU0tfRFgpKTsKKworICAg
IER4LT5UeXBlID0gRlVOQ1RJT05fREVWSUNFX09CSkVDVDsKKyAgICBEeC0+RGV2aWNlT2JqZWN0
ID0gRmlsdGVyRGV2aWNlT2JqZWN0OworICAgIER4LT5EZXZpY2VQbnBTdGF0ZSA9IEFkZGVkOwor
ICAgIER4LT5TeXN0ZW1Qb3dlclN0YXRlID0gUG93ZXJTeXN0ZW1TaHV0ZG93bjsKKyAgICBEeC0+
RGV2aWNlUG93ZXJTdGF0ZSA9IFBvd2VyRGV2aWNlRDM7CisKKyAgICBJb0luaXRpYWxpemVSZW1v
dmVMb2NrKCZEeC0+UmVtb3ZlTG9jaywgRkRPX1RBRywgMCwgMCk7CisKKyAgICBGZG8gPSBfX0Zk
b0FsbG9jYXRlKHNpemVvZiAoWEVORElTS19GRE8pKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19O
T19NRU1PUlk7CisgICAgaWYgKEZkbyA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWwyOworCisg
ICAgTG93ZXJEZXZpY2VPYmplY3QgPSBJb0F0dGFjaERldmljZVRvRGV2aWNlU3RhY2soRmlsdGVy
RGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19V
TlNVQ0NFU1NGVUw7CisgICAgaWYgKExvd2VyRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAg
IGdvdG8gZmFpbDM7CisKKyAgICBGZG8tPkR4ID0gRHg7CisgICAgRmRvLT5QaHlzaWNhbERldmlj
ZU9iamVjdCA9IFBoeXNpY2FsRGV2aWNlT2JqZWN0OworICAgIEZkby0+TG93ZXJEZXZpY2VPYmpl
Y3QgPSBMb3dlckRldmljZU9iamVjdDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShGZG9T
eXN0ZW1Qb3dlciwgRmRvLCAmRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICBzdGF0dXMgPSBUaHJl
YWRDcmVhdGUoRmRvRGV2aWNlUG93ZXIsIEZkbywgJkZkby0+RGV2aWNlUG93ZXJUaHJlYWQpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw1OworCisgICAg
SW5pdGlhbGl6ZU11dGV4KCZGZG8tPk11dGV4KTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkR4
LT5MaXN0RW50cnkpOworICAgIEZkby0+UmVmZXJlbmNlcyA9IDE7CisKKyAgICBWZXJib3NlKCIl
cFxuIiwgRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5GZG8gPSBGZG87CisKKyNwcmFn
bWEgcHJlZmFzdChzdXBwcmVzczoyODE4MikgIC8vIERlcmVmZXJlbmNpbmcgTlVMTCBwb2ludGVy
CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5EZXZpY2VUeXBlID0gTG93ZXJEZXZpY2VPYmplY3Qt
PkRldmljZVR5cGU7CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3MgPSBM
b3dlckRldmljZU9iamVjdC0+Q2hhcmFjdGVyaXN0aWNzOworCisgICAgRmlsdGVyRGV2aWNlT2Jq
ZWN0LT5GbGFncyB8PSBMb3dlckRldmljZU9iamVjdC0+RmxhZ3M7CisgICAgRmlsdGVyRGV2aWNl
T2JqZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJQUxJWklORzsKKworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKworICAgIFRo
cmVhZEFsZXJ0KEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5T
eXN0ZW1Qb3dlclRocmVhZCk7CisgICAgRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCA9IE5VTEw7CisK
K2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAgICBGZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBGZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBG
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKworICAgIEFTU0VSVChJc1plcm9NZW1v
cnkoRmRvLCBzaXplb2YgKFhFTkRJU0tfRkRPKSkpOworICAgIF9fRmRvRnJlZShGZG8pOworCitm
YWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVy
RGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZPSUQKK0Zkb0Rlc3Ryb3koCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBMb3dlckRldmljZU9iamVjdCA9IEZkby0+TG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBGaWx0
ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0OworCisgICAgQVNTRVJUKElzTGlzdEVt
cHR5KCZEeC0+TGlzdEVudHJ5KSk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCA9PSwg
MCk7CisgICAgQVNTRVJUM1UoX19GZG9HZXREZXZpY2VQbnBTdGF0ZShGZG8pLCA9PSwgRGVsZXRl
ZCk7CisKKyAgICBEeC0+RmRvID0gTlVMTDsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+TXV0
ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIFRocmVhZEFsZXJ0KEZkby0+RGV2aWNlUG93ZXJU
aHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgRmRv
LT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisKKyAgICBUaHJlYWRBbGVydChGZG8tPlN5c3Rl
bVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2luKEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIEZkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBOVUxMOworCisgICAgRmRvLT5Mb3dlckRldmlj
ZU9iamVjdCA9IE5VTEw7CisgICAgRmRvLT5QaHlzaWNhbERldmljZU9iamVjdCA9IE5VTEw7Cisg
ICAgRmRvLT5EeCA9IE5VTEw7CisKKyAgICBJb0RldGFjaERldmljZShMb3dlckRldmljZU9iamVj
dCk7CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEZkbywgc2l6ZW9mIChYRU5ESVNLX0ZETykp
KTsKKyAgICBfX0Zkb0ZyZWUoRmRvKTsKKworICAgIElvRGVsZXRlRGV2aWNlKEZpbHRlckRldmlj
ZU9iamVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2Zkby5oIGIvc3JjL3hlbmRp
c2svZmRvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMDUyOQotLS0g
L2Rldi9udWxsCisrKyBiL3NyYy94ZW5kaXNrL2Zkby5oCkBAIC0wLDAgKzEsNzggQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19GRE9fSAorI2RlZmlu
ZSBfWEVORElTS19GRE9fSAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlICJ0eXBlcy5o
IgorCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19GRE8gWEVORElTS19GRE8sICpQWEVORElTS19G
RE87CisKK2V4dGVybiBWT0lECitGZG9BZGRQaHlzaWNhbERldmljZU9iamVjdCgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9SZW1vdmVQaHlzaWNhbERldmljZU9iamVjdCgK
KyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERl
dmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK0Zkb1JlbGVh
c2VNdXRleCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApOworCitleHRlcm4g
TlRTVEFUVVMKK0Zkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAg
IElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVTCitGZG9D
cmVhdGUoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAg
ICk7CisKK2V4dGVybiBWT0lECitGZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19GRE8gICAg
RmRvCisgICAgKTsKKworI2VuZGlmIC8vIF9YRU5ESVNLX0ZET19ICmRpZmYgLS1naXQgYS9zcmMv
eGVuZGlzay9tdXRleC5oIGIvc3JjL3hlbmRpc2svbXV0ZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iY2MyNDE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2sv
bXV0ZXguaApAQCAtMCwwICsxLDExMyBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVt
cyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgX1hFTkRJU0tfTVVURVhfSAorI2RlZmluZSBfWEVORElTS19NVVRFWF9ICisKKyNp
bmNsdWRlIDxudGRkay5oPgorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKK3R5cGVkZWYgc3RydWN0
IF9NVVRFWCB7CisgICAgUEtUSFJFQUQgICAgT3duZXI7CisgICAgS0VWRU5UICAgICAgRXZlbnQ7
Cit9IE1VVEVYLCAqUE1VVEVYOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorSW5pdGlhbGl6
ZU11dGV4KAorICAgIElOICBQTVVURVggIE11dGV4CisgICAgKQoreworICAgIFJ0bFplcm9NZW1v
cnkoTXV0ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZNdXRl
eC0+RXZlbnQsIFN5bmNocm9uaXphdGlvbkV2ZW50LCBUUlVFKTsKK30KKworc3RhdGljIEZPUkNF
SU5MSU5FIEJPT0xFQU4KK19fZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1RyeUFjcXVpcmVN
dXRleCgKKyAgICBJTiAgUE1VVEVYICAgICAgTXV0ZXgKKyAgICApCit7CisgICAgTEFSR0VfSU5U
RUdFUiAgIFRpbWVvdXQ7CisgICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKKworICAgIFRpbWVv
dXQuUXVhZFBhcnQgPSAwOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZN
dXRleC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZUaW1lb3V0KTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19USU1F
T1VUKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0
dXMpKTsKKworICAgIEFTU0VSVDNQKE11dGV4LT5Pd25lciwgPT0sIE5VTEwpOworICAgIE11dGV4
LT5Pd25lciA9IEtlR2V0Q3VycmVudFRocmVhZCgpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisK
K3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX2Rydl9tYXhJUlFMKFBBU1NJVkVfTEVWRUwpCitB
Y3F1aXJlTXV0ZXgoCisgICAgSU4gIFBNVVRFWCAgTXV0ZXgKKyAgICApCit7CisgICAgTlRTVEFU
VVMgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZNdXRl
eC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworCisgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisK
KyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBOVUxMKTsKKyAgICBNdXRleC0+T3duZXIg
PSBLZUdldEN1cnJlbnRUaHJlYWQoKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19f
ZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1JlbGVhc2VNdXRleCgKKyAgICBJTiAgUE1VVEVY
ICBNdXRleAorICAgICkKK3sKKyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBLZUdldEN1
cnJlbnRUaHJlYWQoKSk7CisgICAgTXV0ZXgtPk93bmVyID0gTlVMTDsKKworICAgIEtlU2V0RXZl
bnQoJk11dGV4LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7Cit9CisKKyNlbmRpZiAg
Ly8gX1hFTkRJU0tfTVVURVhfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmMgYi9zcmMv
eGVuZGlzay9wZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE1YTFl
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmMKQEAgLTAsMCArMSwyMTI2IEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RvcnBvcnQuaD4KKyNpbmNs
dWRlIDxOdGRkc3Rvci5oPgorI2luY2x1ZGUgPE50ZGRzY3NpLmg+CisjaW5jbHVkZSA8bmFtZXMu
aD4KKworI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1ZGUgImRyaXZl
ci5oIgorI2luY2x1ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAi
YXNzZXJ0LmgiCisjaW5jbHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFBET19UQUcgJ09EUCcKKwor
c3RydWN0IF9YRU5ESVNLX1BETyB7CisgICAgUFhFTkRJU0tfRFggICAgICAgICAgICAgICAgIER4
OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBQREVWSUNFX09CSkVDVCAgICAgICAgICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3Q7CisKKyAg
ICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgU3lzdGVtUG93ZXJUaHJlYWQ7CisgICAgUElS
UCAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVBvd2VySXJwOworICAgIFBYRU5ESVNLX1RI
UkVBRCAgICAgICAgICAgICBEZXZpY2VQb3dlclRocmVhZDsKKyAgICBQSVJQICAgICAgICAgICAg
ICAgICAgICAgICAgRGV2aWNlUG93ZXJJcnA7CisKKyAgICBQWEVORElTS19GRE8gICAgICAgICAg
ICAgICAgRmRvOworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBNaXNzaW5nOworICAg
IGNvbnN0IENIQVIgICAgICAgICAgICAgICAgICAqUmVhc29uOworCisgICAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgICAgIFNlY3RvclNpemU7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZP
SUQKK19fUGRvQWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAg
IHJldHVybiBfX0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCBMZW5ndGgsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Q
ZG9GcmVlKAorICAgIElOICBQVk9JRCAgIEJ1ZmZlcgorICAgICkKK3sKKyAgICBfX0ZyZWVQb29s
V2l0aFRhZyhCdWZmZXIsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAor
X19QZG9TZXREZXZpY2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8s
CisgICAgSU4gIERFVklDRV9QTlBfU1RBVEUgICAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgLy8gV2UgY2FuIG5ldmVyIHRy
YW5zaXRpb24gb3V0IG9mIHRoZSBkZWxldGVkIHN0YXRlCisgICAgQVNTRVJUKER4LT5EZXZpY2VQ
bnBTdGF0ZSAhPSBEZWxldGVkIHx8IFN0YXRlID09IERlbGV0ZWQpOworCisgICAgRHgtPlByZXZp
b3VzRGV2aWNlUG5wU3RhdGUgPSBEeC0+RGV2aWNlUG5wU3RhdGU7CisgICAgRHgtPkRldmljZVBu
cFN0YXRlID0gU3RhdGU7Cit9CisKK1ZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAorICAgIElO
ICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBT
dGF0ZQorICAgICkKK3sKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgU3RhdGUpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9SZXN0b3JlRGV2aWNlUG5wU3RhdGUo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBERVZJQ0VfUE5QX1NU
QVRFICAgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgIER4ID0g
UGRvLT5EeDsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3RhdGUgPT0gU3RhdGUpCisgICAgICAg
IER4LT5EZXZpY2VQbnBTdGF0ZSA9IER4LT5QcmV2aW91c0RldmljZVBucFN0YXRlOworfQorCitz
dGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BOUF9TVEFURQorX19QZG9HZXREZXZpY2VQbnBTdGF0
ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICBQWEVORElTS19E
WCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2aWNlUG5wU3RhdGU7
Cit9CisKK0RFVklDRV9QTlBfU1RBVEUKK1Bkb0dldERldmljZVBucFN0YXRlKAorICAgIElOICBQ
WEVORElTS19QRE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBfX1Bkb0dldERldmljZVBu
cFN0YXRlKFBkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1Bkb1NldERldmlj
ZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBE
RVZJQ0VfUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAg
ICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIER4LT5EZXZpY2VQb3dlclN0YXRlID0gU3RhdGU7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBERVZJQ0VfUE9XRVJfU1RBVEUKK19fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAg
ICBQWEVORElTS19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2
aWNlUG93ZXJTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUGRvU2V0U3lz
dGVtUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8sCisgICAgSU4g
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAg
ICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgRHgtPlN5c3RlbVBvd2VyU3RhdGUgPSBTdGF0
ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFNZU1RFTV9QT1dFUl9TVEFURQorX19QZG9HZXRT
eXN0ZW1Qb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKQorewor
ICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgcmV0dXJuIER4LT5T
eXN0ZW1Qb3dlclN0YXRlOworfQorCitQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgcmV0
dXJuIFBkby0+UGh5c2ljYWxEZXZpY2VPYmplY3Q7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBW
T0lECitfX1Bkb1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIGNvbnN0IENIQVIgICAgICAqUmVhc29uCisgICAgKQoreworICAgIFBkby0+UmVhc29uID0g
UmVhc29uOworICAgIFBkby0+TWlzc2luZyA9IFRSVUU7Cit9CisKK1ZPSUQKK1Bkb1NldE1pc3Np
bmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0IENIQVIgICAg
ICAqUmVhc29uCisgICAgKQoreworICAgIF9fUGRvU2V0TWlzc2luZyhQZG8sIFJlYXNvbik7Cit9
CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitfX1Bkb0lzTWlzc2luZygKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gUGRvLT5NaXNzaW5nOwor
fQorCitCT09MRUFOCitQZG9Jc01pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8K
KyAgICApCit7CisgICAgcmV0dXJuIF9fUGRvSXNNaXNzaW5nKFBkbyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX1Bkb0xpbmsoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8s
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUGRvLT5GZG8gPSBG
ZG87CisgICAgRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvLCBQZG8tPkR4LT5EZXZpY2VP
YmplY3QpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9VbmxpbmsoCisgICAg
SU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAg
ICBGZG8gPSBQZG8tPkZkbzsKKworICAgIEFTU0VSVChGZG8gIT0gTlVMTCk7CisKKyAgICBGZG9S
ZW1vdmVQaHlzaWNhbERldmljZU9iamVjdChGZG8sIFBkby0+RHgtPkRldmljZU9iamVjdCk7CisK
KyAgICBQZG8tPkZkbyA9IE5VTEw7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQWEVORElTS19G
RE8KK19fUGRvR2V0RmRvKAorICAgIElOICBQWEVORElTS19QRE8gUGRvCisgICAgKQoreworICAg
IHJldHVybiBQZG8tPkZkbzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9O
X1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAor
ICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29u
dGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29udGV4dDsK
KworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19OT19JTkNS
RU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJ
UkVEOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KAor
ICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJw
CisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAgRXZlbnQ7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
LCBQQVNTSVZFX0xFVkVMKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZp
Y2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9u
VG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2VyRGV2
aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAg
ICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdCgmRXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOworICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIElycC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NP
TVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRv
Rm9yd2FyZElycEFuZEZvcmdldCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAg
IENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0
OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYg
KElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0Zvcndh
cmRJcnBBbmRGb3JnZXQoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBBbmRGb3JnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHJldHVybiBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9Db21wbGV0ZUlycCgK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIEly
cCwKKyAgICBJTiAgTlRTVEFUVVMgICAgICAgIFN0YXR1cworICAgICkKK3sKKyAgICBJcnAtPklv
U3RhdHVzLlN0YXR1cyA9IFN0YXR1czsKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4
LT5SZW1vdmVMb2NrLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5D
UkVNRU5UKTsKKyAgICByZXR1cm4gU3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElP
X0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19f
UGRvUXVlcnlQcm9wZXJ0eSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENv
bnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0Owor
ICAgIFBTVE9SQUdFX0FDQ0VTU19BTElHTk1FTlRfREVTQ1JJUFRPUiAgICBEZXNjcmlwdG9yID0g
SXJwLT5Vc2VyQnVmZmVyOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBpZiAoIU5UX1NVQ0NFU1MoSXJwLT5Jb1N0YXR1cy5TdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBEZXNjcmlwdG9yID0gSXJwLT5Vc2VyQnVmZmVy
OworICAgIFBkby0+U2VjdG9yU2l6ZSA9IERlc2NyaXB0b3ItPkJ5dGVzUGVyTG9naWNhbFNlY3Rv
cjsKKyAgICBWZXJib3NlKCIlcCA6ICV1IGJ5dGVzIHBlciBzZWN0b3JcbiIsIFBkby0+RHgtPkRl
dmljZU9iamVjdCwgUGRvLT5TZWN0b3JTaXplKTsKKworZG9uZToKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5
UHJvcGVydHkoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUFNUT1JBR0VfUFJPUEVSVFlfUVVFUlkgUXVlcnk7
CisgICAgUERFVklDRV9UUklNX0RFU0NSSVBUT1IgVHJpbTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBRdWVyeSA9IElycC0+QXNzb2NpYXRlZElycC5TeXN0ZW1C
dWZmZXI7CisKKyAgICBzd2l0Y2ggKFF1ZXJ5LT5Qcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBTdG9y
YWdlQWNjZXNzQWxpZ25tZW50UHJvcGVydHk6CisgICAgICAgIElvQ29weUN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UHJvcGVydHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBTdG9yYWdlRGV2aWNlVHJpbVByb3BlcnR5OgorICAgICAgICBUcmlt
ID0gSXJwLT5Bc3NvY2lhdGVkSXJwLlN5c3RlbUJ1ZmZlcjsKKworICAgICAgICBUcmltLT5WZXJz
aW9uID0gMDsKKyAgICAgICAgVHJpbS0+U2l6ZSA9IHNpemVvZihERVZJQ0VfVFJJTV9ERVNDUklQ
VE9SKTsKKyAgICAgICAgVHJpbS0+VHJpbUVuYWJsZWQgPSBUUlVFOworCisgICAgICAgIElycC0+
SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAoVUxPTkdfUFRSKXNpemVvZihERVZJQ0VfVFJJTV9ERVND
UklQVE9SKTsKKyAgICAgICAgc3RhdHVzID0gUGRvQ29tcGxldGVJcnAoUGRvLCBJcnAsIFNUQVRV
U19TVUNDRVNTKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0
dXMgPSBQZG9Gb3J3YXJkSXJwQW5kRm9yZ2V0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bk
b1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lE
ICAgICAgICAgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihEZXZpY2VPYmplY3QpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4
dCk7CisKKyAgICAqKElycC0+VXNlcklvc2IpID0gSXJwLT5Jb1N0YXR1czsKKworICAgIGlmIChJ
cnAtPk1kbEFkZHJlc3MpIHsKKyAgICAgICAgTW1VbmxvY2tQYWdlcyhJcnAtPk1kbEFkZHJlc3Mp
OworICAgICAgICBJb0ZyZWVNZGwoSXJwLT5NZGxBZGRyZXNzKTsKKyAgICB9CisKKyAgICBLZVNl
dEV2ZW50KElycC0+VXNlckV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIElv
RnJlZUlycChJcnApOworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVE
OworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgICAgICAgICAgUGRvLAorICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICBT
cmIKKyAgICApCit7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIElycDsKKyAgICBJ
T19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgSW9TdGF0dXM7CisgICAgS0VWRU5UICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50OworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgICAgICBTdGFj
azsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgS2VJbml0
aWFsaXplRXZlbnQoJkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOworCisgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBJcnAgPSBJb0FsbG9jYXRlSXJwKChDQ0hBUiko
UGRvLT5Mb3dlckRldmljZU9iamVjdC0+U3RhY2tTaXplICsgMSksIEZBTFNFKTsKKyAgICBpZiAo
SXJwID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFjayA9IElvR2V0TmV4
dElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTdGFjay0+TWFqb3JGdW5jdGlvbiA9IElSUF9N
Sl9TQ1NJOworICAgIFN0YWNrLT5QYXJhbWV0ZXJzLlNjc2kuU3JiID0gU3JiOworCisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19Q
ZG9TZW5kQXdhaXRTcmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICBJcnAtPlVzZXJJ
b3NiID0gJklvU3RhdHVzOworICAgIElycC0+VXNlckV2ZW50ID0gJkV2ZW50OworCisgICAgSXJw
LT5NZGxBZGRyZXNzID0gSW9BbGxvY2F0ZU1kbChTcmItPkRhdGFCdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJcnApOworICAgIGlmIChJcnAtPk1kbEFkZHJlc3MgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMyMCkKKyAgICB0cnkgeworICAg
ICAgICBNbVByb2JlQW5kTG9ja1BhZ2VzKElycC0+TWRsQWRkcmVzcywgS2VybmVsTW9kZSwgSW9S
ZWFkQWNjZXNzKTsKKyAgICB9IGV4Y2VwdCAoRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikgewor
ICAgICAgICBzdGF0dXMgPSBHZXRFeGNlcHRpb25Db2RlKCk7CisKKyAgICAgICAgZ290byBmYWls
MzsKKyAgICB9CisjcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDo2MzIwKQorICAgIAorICAgIFNyYi0+
T3JpZ2luYWxSZXF1ZXN0ID0gSXJwOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+
TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgaWYgKHN0YXR1cyA9PSBTVEFUVVNfUEVORElO
RykgeworICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZFdmVudCwgRXhlY3V0
aXZlLCBLZXJuZWxNb2RlLCBGQUxTRSwgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElvU3RhdHVz
LlN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBFcnJv
cigiZmFpbDNcbiIpOworCisgICAgSW9GcmVlTWRsKElycC0+TWRsQWRkcmVzcyk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBJb0ZyZWVJcnAoSXJwKTsKKworZmFpbDE6
CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1NldDhCeXRlcygKKyAgICBJTiAg
UFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisgICAgSU4gIFVMT05HTE9ORyAgICAgICAg
ICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVzWzBdID0gKFVDSEFSKShWYWx1ZSA+PiA1
Nik7CisgICAgQnl0ZXNbMV0gPSAoVUNIQVIpKFZhbHVlID4+IDQ4KTsKKyAgICBCeXRlc1syXSA9
IChVQ0hBUikoVmFsdWUgPj4gNDApOworICAgIEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSA+PiAz
Mik7CisgICAgQnl0ZXNbNF0gPSAoVUNIQVIpKFZhbHVlID4+IDI0KTsKKyAgICBCeXRlc1s1XSA9
IChVQ0hBUikoVmFsdWUgPj4gMTYpOworICAgIEJ5dGVzWzZdID0gKFVDSEFSKShWYWx1ZSA+PiA4
KTsKKyAgICBCeXRlc1s3XSA9IChVQ0hBUikoVmFsdWUpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19TZXQ0Qnl0ZXMoCisgICAgSU4gIFBVQ0hBUiAgICAgICAgICAgICAgICAgIEJ5
dGVzLAorICAgIElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBWYWx1ZQorICAgICkKK3sKKyAg
ICBCeXRlc1swXSA9IChVQ0hBUikoVmFsdWUgPj4gMjQpOworICAgIEJ5dGVzWzFdID0gKFVDSEFS
KShWYWx1ZSA+PiAxNik7CisgICAgQnl0ZXNbMl0gPSAoVUNIQVIpKFZhbHVlID4+IDgpOworICAg
IEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1NldDJCeXRlcygKKyAgICBJTiAgUFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisg
ICAgSU4gIFVTSE9SVCAgICAgICAgICAgICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVz
WzBdID0gKFVDSEFSKShWYWx1ZSA8PCA4KTsKKyAgICBCeXRlc1sxXSA9IChVQ0hBUikoVmFsdWUp
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19TZXRVbm1hcCgKKyAgICBJTiAgUFVO
TUFQX0xJU1RfSEVBREVSICAgICAgVW5tYXAsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAg
ICAgIExlbmd0aCwKKyAgICBJTiAgUERFVklDRV9EQVRBX1NFVF9SQU5HRSAgUmFuZ2VzLAorICAg
IElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudCwKKyAgICBJTiAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgU2VjdG9yU2l6ZQorICAgICkKK3sKKyAgICBVTE9ORyAgICAgICBJbmRleDsK
KworICAgIF9fU2V0MkJ5dGVzKFVubWFwLT5EYXRhTGVuZ3RoLCAoVVNIT1JUKUxlbmd0aCk7Cisg
ICAgX19TZXQyQnl0ZXMoVW5tYXAtPkJsb2NrRGVzY3JEYXRhTGVuZ3RoLCAoVVNIT1JUKXNpemVv
ZihVTk1BUF9CTE9DS19ERVNDUklQVE9SKSk7CisKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg
PCBDb3VudDsgKytJbmRleCkgeworICAgICAgICBUcmFjZSgiVFJJTVsleF0gJXggQCAlbGx4XG4i
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgKFVMT05HKShSYW5nZXNbSW5kZXhdLkxlbmd0aEluQnl0ZXMgLyBTZWN0b3JTaXplKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIChVTE9ORzY0KShSYW5nZXNbSW5kZXhdLlN0YXJ0aW5nT2Zm
c2V0IC8gU2VjdG9yU2l6ZSkpOworCisgICAgICAgIF9fU2V0OEJ5dGVzKFVubWFwLT5EZXNjcmlw
dG9yc1tJbmRleF0uU3RhcnRpbmdMYmEsCisgICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkc2
NCkoUmFuZ2VzW0luZGV4XS5TdGFydGluZ09mZnNldCAvIFNlY3RvclNpemUpKTsKKyAgICAgICAg
X19TZXQ0Qnl0ZXMoVW5tYXAtPkRlc2NyaXB0b3JzW0luZGV4XS5MYmFDb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChVTE9ORykoUmFuZ2VzW0luZGV4XS5MZW5ndGhJbkJ5dGVzIC8gU2Vj
dG9yU2l6ZSkpOworICAgIH0KK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9TZW5kVHJpbVN5bmNo
cm9ub3VzKAorICAgIElOICBQWEVORElTS19QRE8gICAgICAgICAgICBQZG8sCisgICAgSU4gIFBE
RVZJQ0VfREFUQV9TRVRfUkFOR0UgIFJhbmdlcywKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgQ291bnQKKyAgICApCit7CisgICAgU0NTSV9SRVFVRVNUX0JMT0NLICAgICAgICAgIFNy
YjsKKyAgICBQQ0RCICAgICAgICAgICAgICAgICAgICAgICAgQ2RiOworICAgIFBVTk1BUF9MSVNU
X0hFQURFUiAgICAgICAgICBVbm1hcDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoOworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBM
ZW5ndGggPSBzaXplb2YoVU5NQVBfTElTVF9IRUFERVIpICsgQ291bnQgKiBzaXplb2YoVU5NQVBf
QkxPQ0tfREVTQ1JJUFRPUik7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAg
IFVubWFwID0gX19QZG9BbGxvY2F0ZShMZW5ndGgpOworICAgIGlmIChVbm1hcCA9PSBOVUxMKQor
ICAgICAgICBnb3RvIGZhaWwxOworCisgICAgUnRsWmVyb01lbW9yeSgmU3JiLCBzaXplb2YoU0NT
SV9SRVFVRVNUX0JMT0NLKSk7CisgICAgU3JiLkxlbmd0aCA9IHNpemVvZihTQ1NJX1JFUVVFU1Rf
QkxPQ0spOworICAgIFNyYi5TcmJGbGFncyA9IFNSQl9GTEFHU19CWVBBU1NfRlJPWkVOX1FVRVVF
IHwgU1JCX0ZMQUdTX05PX1FVRVVFX0ZSRUVaRTsKKyAgICBTcmIuRnVuY3Rpb24gPSBTUkJfRlVO
Q1RJT05fRVhFQ1VURV9TQ1NJOworICAgIFNyYi5EYXRhQnVmZmVyID0gVW5tYXA7CisgICAgU3Ji
LkRhdGFUcmFuc2Zlckxlbmd0aCA9IExlbmd0aDsKKyAgICBTcmIuVGltZU91dFZhbHVlID0gKFVM
T05HKS0xOworICAgIFNyYi5DZGJMZW5ndGggPSAxMDsKKworICAgIENkYiA9IChQQ0RCKSZTcmIu
Q2RiWzBdOworICAgIENkYi0+VU5NQVAuT3BlcmF0aW9uQ29kZSA9IFNDU0lPUF9VTk1BUDsKKyAg
ICBfX1NldDJCeXRlcyhDZGItPlVOTUFQLkFsbG9jYXRpb25MZW5ndGgsIChVU0hPUlQpTGVuZ3Ro
KTsKKworICAgIF9fU2V0VW5tYXAoVW5tYXAsIExlbmd0aCwgUmFuZ2VzLCBDb3VudCwgUGRvLT5T
ZWN0b3JTaXplKTsKKworICAgIHN0YXR1cyA9IFBkb1NlbmRBd2FpdFNyYihQZG8sICZTcmIpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAg
X19QZG9GcmVlKFVubWFwKTsKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMjoKKyAgICBFcnJv
cigiZmFpbDJcbiIpOworCisgICAgX19QZG9GcmVlKFVubWFwKTsKKworZmFpbDE6CisgICAgRXJy
b3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvTWFuYWdlRGF0YVNldEF0dHJp
YnV0ZXMoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAg
ICAgICBJcnAKKyAgICApCit7CisgICAgUERFVklDRV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRF
UyAgQXR0cmlidXRlczsKKyAgICBQREVWSUNFX0RBVEFfU0VUX1JBTkdFICAgICAgICAgICAgICBS
YW5nZXM7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtUmFuZ2Vz
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKKworICAg
IEF0dHJpYnV0ZXMgPSBJcnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOworCisgICAgc3dp
dGNoIChBdHRyaWJ1dGVzLT5BY3Rpb24pIHsKKyAgICBjYXNlIERldmljZURzbUFjdGlvbl9Ucmlt
OgorICAgICAgICBSYW5nZXMgPSAoUERFVklDRV9EQVRBX1NFVF9SQU5HRSkoKFBVQ0hBUilBdHRy
aWJ1dGVzICsgQXR0cmlidXRlcy0+RGF0YVNldFJhbmdlc09mZnNldCk7CisgICAgICAgIE51bVJh
bmdlcyA9IEF0dHJpYnV0ZXMtPkRhdGFTZXRSYW5nZXNMZW5ndGggLyBzaXplb2YoREVWSUNFX0RB
VEFfU0VUX1JBTkdFKTsKKworICAgICAgICBzdGF0dXMgPSBQZG9TZW5kVHJpbVN5bmNocm9ub3Vz
KFBkbywgUmFuZ2VzLCBOdW1SYW5nZXMpOworCisgICAgICAgIHN0YXR1cyA9IFBkb0NvbXBsZXRl
SXJwKFBkbywgSXJwLCBzdGF0dXMpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoQ29udHJvbCgKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUxPTkcgICAgICAgICAg
ICAgICBDb250cm9sQ29kZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IENvbnRyb2xDb2RlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5EZXZpY2VJb0NvbnRyb2wu
SW9Db250cm9sQ29kZTsKKworICAgIHN3aXRjaCAoQ29udHJvbENvZGUpIHsKKyAgICBjYXNlIElP
Q1RMX1NUT1JBR0VfUVVFUllfUFJPUEVSVFk6CisgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UHJv
cGVydHkoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSU9DVExfU1RPUkFH
RV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRFUzoKKyAgICAgICAgc3RhdHVzID0gUGRvTWFuYWdl
RGF0YVNldEF0dHJpYnV0ZXMoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAg
ICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAg
ICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisg
ICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19QZG9T
ZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX1Bkb1Nl
dERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUu
RGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShQZG8tPkR4
LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19QZG9TZXREZXZpY2VQbnBT
dGF0ZShQZG8sIFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+
UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NV
Q0NFU1M7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVM
b2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dG9wUGVuZGluZyk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1F1ZXJ5U3RvcERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJ
b0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBz
dGF0dXM7CisKK2ZhaWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAg
IElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBz
dGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQor
X19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19QZG9DYW5jZWxTdG9wRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvQ2FuY2VsU3Rv
cERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAg
ICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKwor
ICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIEly
cCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgX19QZG9S
ZXN0b3JlRGV2aWNlUG5wU3RhdGUoUGRvLCBTdG9wUGVuZGluZyk7CisKKyAgICBJb0NvcHlDdXJy
ZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRp
bmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxTdG9wRGV2aWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8t
Pkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6
CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19k
cnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAor
c3RhdGljIE5UU1RBVFVTCitfX1Bkb1N0b3BEZXZpY2UoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNU
ICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBW
T0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX1BETyAgICAgICAg
UGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0
KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVu
ZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9TdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19Q
RE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBP
V0VSX1NUQVRFICAgICAgICAgUG93ZXJTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0
YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8g
ZmFpbDE7CisKKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgIT0gUG93ZXJE
ZXZpY2VEMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0
YXRlKFBkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19QZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKFBk
bywgUG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0g
UG93ZXJEZXZpY2VEMzsKKyAgICBQb1NldFBvd2VyU3RhdGUoUGRvLT5EeC0+RGV2aWNlT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICBQb3dlclN0YXRlKTsKKworZG9uZToKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBk
bywgU3RvcHBlZCk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1N0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxs
RHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2
X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRvUXVlcnlSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBY
RU5ESVNLX1BETyAgICAgICAgUGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAg
ICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9RdWVyeVJlbW92ZURl
dmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAg
ICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgUmVtb3ZlUGVuZGluZyk7CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIElvQ29weUN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UmVtb3ZlRGV2aWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2Vy
RGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAg
SXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVu
Y3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGlj
IE5UU1RBVFVTCitfX1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpF
Q1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAg
UFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAg
ICBQZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVM
b2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVD
TFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNx
dWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX1Bkb1Jlc3RvcmVE
ZXZpY2VQbnBTdGF0ZShQZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3Rh
dHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxSZW1vdmVEZXZpY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmpl
Y3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dXJwcmlzZVJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVT
X1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19QZG9TdXJwcmlzZVJlbW92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
ZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAg
c3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0
YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMK
K1Bkb1JlbW92ZURldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZk
byA9IF9fUGRvR2V0RmRvKFBkbyk7CisgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRl
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1
aXJlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NV
Q0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlmIChfX1Bkb0dldERl
dmljZVBvd2VyU3RhdGUoUGRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAgICBnb3RvIGRvbmU7
CisKKyAgICBfX1Bkb1NldERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQzKTsKKyAg
ICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBQb3dlclN5c3RlbVNodXRkb3duKTsKKwor
ICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93
ZXJTdGF0ZShQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmlj
ZVBvd2VyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCitkb25lOgor
ICAgIGlmIChfX1Bkb0lzTWlzc2luZyhQZG8pKSB7CisgICAgICAgIF9fUGRvU2V0RGV2aWNlUG5w
U3RhdGUoUGRvLCBEZWxldGVkKTsKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9ja0FuZFdhaXQo
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX19QZG9T
ZXREZXZpY2VQbnBTdGF0ZShQZG8sIEVudW1lcmF0ZWQpOworICAgICAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIH0KKworICAgIHN0YXR1cyA9
IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICBpZiAoX19QZG9Jc01pc3NpbmcoUGRv
KSkgeworICAgICAgICBGZG9BY3F1aXJlTXV0ZXgoRmRvKTsKKyAgICAgICAgUGRvRGVzdHJveShQ
ZG8pOworICAgICAgICBGZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAg
ICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4g
c3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0VqZWN0
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAg
SXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRGZG8o
UGRvKTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIF9fUGRvU2V0TWlz
c2luZyhQZG8sICJFamVjdGVkIik7CisgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJ
cnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAg
IEZkb0FjcXVpcmVNdXRleChGZG8pOworICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICBGZG9SZWxl
YXNlTXV0ZXgoRmRvKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9u
Q2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNU
QVRVUworX19QZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
ICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBNaW5vckZ1bmN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAgIHN3aXRjaCAoU3RhY2tMb2Nh
dGlvbi0+TWlub3JGdW5jdGlvbikgeworICAgIGNhc2UgSVJQX01OX1NUQVJUX0RFVklDRToKKyAg
ICAgICAgc3RhdHVzID0gUGRvU3RhcnREZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgSVJQX01OX1FVRVJZX1NUT1BfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBQ
ZG9RdWVyeVN0b3BEZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
SVJQX01OX0NBTkNFTF9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gUGRvQ2FuY2VsU3Rv
cERldmljZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fU1RP
UF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1N0b3BEZXZpY2UoUGRvLCBJcnApOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX1JFTU9WRV9ERVZJQ0U6CisgICAg
ICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UmVtb3ZlRGV2aWNlKFBkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIElSUF9NTl9TVVJQUklTRV9SRU1PVkFMOgorICAgICAgICBzdGF0dXMg
PSBQZG9TdXJwcmlzZVJlbW92YWwoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSVJQX01OX1JFTU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1JlbW92ZURldmlj
ZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fQ0FOQ0VMX1JF
TU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb0NhbmNlbFJlbW92ZURldmljZShQZG8s
IElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fRUpFQ1Q6CisgICAgICAg
IHN0YXR1cyA9IFBkb0VqZWN0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1v
dmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
ICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBucCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQ
ZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBz
dGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldERldmljZVBvd2VyVXAo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA8LCAg
X19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIlcDogJXMgLT4gJXNcbiIsCisg
ICAgICAgICBQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dlckRldmljZVN0YXRl
TmFtZShfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSksCisgICAgICAgICBQb3dlckRldmlj
ZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0YXRl
KFBkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
c3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKwor
ICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19Q
ZG9TZXREZXZpY2VQb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VS
VDNVKERldmljZVN0YXRlLCA+LCAgX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisg
ICAgVmVyYm9zZSgiJXA6ICVzIC0+ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2Jq
ZWN0LAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoX19QZG9HZXREZXZpY2VQb3dlclN0
YXRlKFBkbykpLAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsK
KworICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8sIERldmljZVN0YXRlKTsKKworICAg
IHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0RGV2aWNlUG93ZXIo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAg
ICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0
YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2
aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0
YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5T
aHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQ
b3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9u
TmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5j
aHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMg
PSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAg
ICAgICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9f
UGRvU2V0RGV2aWNlUG93ZXJEb3duKFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09
PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZp
Y2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAg
ICAgICAgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERP
ICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9f
U1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBT
eXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNr
TG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVt
U3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRl
OworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX1Bkb0dldFN5c3RlbVBvd2VyU3Rh
dGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShQZG8s
IElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsK
KworICAgIFZlcmJvc2UoIiVwOiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIFBkby0+RHgtPkRldmlj
ZU9iamVjdCwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fUGRvR2V0U3lzdGVtUG93
ZXJTdGF0ZShQZG8pKSwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRl
KSk7CisKKyAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBTeXN0ZW1TdGF0ZSk7CisK
K2RvbmU6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0
ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30K
Kworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldFN5c3RlbVBvd2VyRG93bigK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0YXRlLCA+LCAg
X19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVzIC0+
ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93ZXJT
eXN0ZW1TdGF0ZU5hbWUoX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpLAorICAgICAgICAg
UG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpKTsKKworICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJTdGF0ZShQZG8sIFN5c3RlbVN0YXRlKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJ
TkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BE
TyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElP
X1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworICAgIFBvd2VyQWN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBU
cmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShT
eXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOwor
CisgICAgaWYgKFN5c3RlbVN0YXRlID09IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pKSB7
CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsK
KyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAg
ICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoU3lzdGVtU3RhdGUgPCBfX1Bk
b0dldFN5c3RlbVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJEb3du
KFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwK
KyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAg
IFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAgICBy
ZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvUXVl
cnlEZXZpY2VQb3dlclVwKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3Rh
Y2tMb2NhdGlvbjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5U
U1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3Vy
cmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRp
b24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShE
ZXZpY2VTdGF0ZSwgPCwgIF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKTsKKworICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKworICAgIElycC0+
SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBOVFNUQVRVUworX19QZG9RdWVyeURldmljZVBvd2VyRG93bigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BPV0VSX1NU
QVRFICBEZXZpY2VTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAg
RGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmlj
ZVN0YXRlOworCisgICAgQVNTRVJUM1UoRGV2aWNlU3RhdGUsID4sICBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNs
eShQZG8sIElycCk7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQp
OworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVT
CitfX1Bkb1F1ZXJ5RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisg
ICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FU
SU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7
CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAg
ICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0
ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSks
IAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERl
dmljZVN0YXRlID09IF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9u
ZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvUXVlcnlEZXZpY2VQb3dlclVwKFBk
bywgSXJwKSA6CisgICAgICAgICAgICAgX19QZG9RdWVyeURldmljZVBvd2VyRG93bihQZG8sIEly
cCk7CisKK2RvbmU6CisgICAgVHJhY2UoIjw9PT09ICglczolcykoJTA4eClcbiIsCisgICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pLAorICAgICAgICAgIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVt
UG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0
aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJw
U3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFy
YW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0
YXRlLCA8LCAgX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworCisgICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNS
RU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5U
U1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKAorICAgIElOICBQWEVORElTS19QRE8g
ICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19T
VEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5
c3RlbVN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tM
b2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1T
dGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7
CisKKyAgICBBU1NFUlQzVShTeXN0ZW1TdGF0ZSwgPiwgIF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywg
SXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRv
UXVlcnlTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBQ
T1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5Q
YXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMp
XG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAg
ICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7CisKKyAgICBpZiAoU3lzdGVtU3Rh
dGUgPT0gX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpIHsKKyAgICAgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRl
UmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICAgICAgZ290byBkb25lOworICAg
IH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKSA/CisgICAgICAgICAgICAgX19QZG9RdWVyeVN5c3RlbVBvd2VyVXAoUGRvLCBJcnAp
IDoKKyAgICAgICAgICAgICBfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKFBkbywgSXJwKTsKKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFt
ZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBOVFNUQVRVUworUGRvRGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1RIUkVBRCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sK
KyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAg
ICAgICAgICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAg
ICBmb3IgKDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAg
ICAgICAgTWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5EZXZpY2VQb3dlcklycCA9
PSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJF
dmVudChFdmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNl
bGYpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5EZXZpY2VQb3dl
cklycDsKKworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBQZG8tPkRldmljZVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlC
YXJyaWVyKCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNr
TG9jYXRpb24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0
aW9uKSB7CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lE
KSBfX1Bkb1NldERldmljZVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRv
UXVlcnlEZXZpY2VQb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisK
K3N0YXRpYyBOVFNUQVRVUworUGRvU3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVB
RCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQ
WEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAgICAgICAg
ICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAgICAgICAg
TWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5TeXN0ZW1Qb3dlcklycCA9PSBOVUxM
KSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJFdmVudChF
dmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNlbGYpKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5TeXN0ZW1Qb3dlcklycDsK
KworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBQZG8tPlN5c3RlbVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uKSB7
CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lEKSBfX1Bk
b1NldFN5c3RlbVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRvUXVlcnlT
eXN0ZW1Qb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19QZG9EaXNwYXRjaFBvd2VyKAorICAgIElOICBQREVWSUNFX09CSkVD
VCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQ
Vk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAg
IFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVj
dCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBl
bmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxv
Y2ssIElycCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAg
ICAgTWlub3JGdW5jdGlvbjsKKyAgICBQT1dFUl9TVEFURV9UWVBFICAgIFBvd2VyVHlwZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJl
bW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIE1pbm9yRnVuY3Rpb24gPSBTdGFj
a0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uOworCisgICAgaWYgKE1pbm9yRnVuY3Rpb24gIT0gSVJQ
X01OX1FVRVJZX1BPV0VSICYmCisgICAgICAgIE1pbm9yRnVuY3Rpb24gIT0gSVJQX01OX1NFVF9Q
T1dFUikgeworICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX1Bkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dl
ckRldmljZU9iamVjdCwgSXJwKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAg
UG93ZXJUeXBlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5UeXBlOworCisgICAg
VHJhY2UoIj09PT0+ICglMDJ4OiVzKVxuIiwKKyAgICAgICAgICBNaW5vckZ1bmN0aW9uLCAKKyAg
ICAgICAgICBQb3dlck1pbm9yRnVuY3Rpb25OYW1lKE1pbm9yRnVuY3Rpb24pKTsgCisKKyAgICBz
d2l0Y2ggKFBvd2VyVHlwZSkgeworICAgIGNhc2UgRGV2aWNlUG93ZXJTdGF0ZToKKyAgICAgICAg
SW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgICAgIEFTU0VSVDNQKFBkby0+RGV2aWNlUG93
ZXJJcnAsID09LCBOVUxMKTsKKyAgICAgICAgUGRvLT5EZXZpY2VQb3dlcklycCA9IElycDsKKyAg
ICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShQZG8tPkRldmlj
ZVBvd2VyVGhyZWFkKTsKKworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFN5c3RlbVBvd2VyU3RhdGU6CisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgICAgICBBU1NFUlQzUChQZG8tPlN5c3RlbVBvd2VySXJwLCA9
PSwgTlVMTCk7CisgICAgICAgIFBkby0+U3lzdGVtUG93ZXJJcnAgPSBJcnA7CisgICAgICAgIEtl
TWVtb3J5QmFycmllcigpOworCisgICAgICAgIFRocmVhZFdha2UoUGRvLT5TeXN0ZW1Qb3dlclRo
cmVhZCk7CisKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX1BFTkRJTkc7CisgICAgICAgIGJyZWFr
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBvd2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVy
KFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIFRyYWNlKCI8PT09PSAoJTAyeDolcykgKCUwOHgpXG4iLAorICAgICAgICAgIE1pbm9yRnVu
Y3Rpb24sIAorICAgICAgICAgIFBvd2VyTWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbiks
CisgICAgICAgICAgc3RhdHVzKTsKKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWls
MToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0
YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19J
TkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJ
TkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAg
IFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2so
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
CisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaERlZmF1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3Qs
IElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7
CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElT
S19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAg
IFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1ham9yRnVuY3Rpb24p
IHsKKyAgICBjYXNlIElSUF9NSl9ERVZJQ0VfQ09OVFJPTDoKKyAgICAgICAgc3RhdHVzID0gUGRv
RGlzcGF0Y2hDb250cm9sKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NSl9QTlA6CisgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUG5wKFBkbywgSXJwKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NSl9QT1dFUjoKKyAgICAgICAgc3RhdHVzID0g
UGRvRGlzcGF0Y2hQb3dlcihQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0Y2hEZWZhdWx0KFBkbywgSXJwKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bk
b0NyZWF0ZSgKKyAgICBQWEVORElTS19GRE8gICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICBQ
REVWSUNFX09CSkVDVCAgICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJEZXZpY2VPYmpl
Y3Q7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VUeXBlOworICAg
IFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgRmlsdGVyRGV2aWNlT2JqZWN0OworICAg
IFBYRU5ESVNLX0RYICAgICAgICAgICAgICAgICAgICAgRHg7CisgICAgUFhFTkRJU0tfUERPICAg
ICAgICAgICAgICAgICAgICBQZG87CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBMb3dlckRldmljZU9iamVjdCA9IElvR2V0QXR0YWNoZWREZXZpY2VS
ZWZlcmVuY2UoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIERldmljZVR5cGUgPSBMb3dlckRl
dmljZU9iamVjdC0+RGV2aWNlVHlwZTsKKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0KExvd2VyRGV2
aWNlT2JqZWN0KTsKKworI3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTk3KSAvLyBQb3NzaWJs
eSBsZWFraW5nIG1lbW9yeSAnUGh5c2ljYWxEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9D
cmVhdGVEZXZpY2UoRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKFhFTkRJU0tfRFgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFX0RFVklDRV9TRUNVUkVfT1BFTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmls
dGVyRGV2aWNlT2JqZWN0KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
Z290byBmYWlsMTsKKworICAgIER4ID0gKFBYRU5ESVNLX0RYKUZpbHRlckRldmljZU9iamVjdC0+
RGV2aWNlRXh0ZW5zaW9uOworICAgIFJ0bFplcm9NZW1vcnkoRHgsIHNpemVvZiAoWEVORElTS19E
WCkpOworCisgICAgRHgtPlR5cGUgPSBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUOworICAgIER4LT5E
ZXZpY2VPYmplY3QgPSBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgRHgtPkRldmljZVBucFN0YXRl
ID0gUHJlc2VudDsKKyAgICBEeC0+U3lzdGVtUG93ZXJTdGF0ZSA9IFBvd2VyU3lzdGVtU2h1dGRv
d247CisgICAgRHgtPkRldmljZVBvd2VyU3RhdGUgPSBQb3dlckRldmljZUQzOworCisgICAgSW9J
bml0aWFsaXplUmVtb3ZlTG9jaygmRHgtPlJlbW92ZUxvY2ssIFBET19UQUcsIDAsIDApOworCisg
ICAgUGRvID0gX19QZG9BbGxvY2F0ZShzaXplb2YgKFhFTkRJU0tfUERPKSk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChQZG8gPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9BdHRhY2hEZXZpY2VUb0Rldmlj
ZVN0YWNrKEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbERldmljZU9iamVjdCk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlmIChMb3dlckRldmljZU9iamVjdCA9PSBO
VUxMKQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgUGRvLT5EeCA9IER4OworICAgIFBkby0+
UGh5c2ljYWxEZXZpY2VPYmplY3QgPSBQaHlzaWNhbERldmljZU9iamVjdDsKKyAgICBQZG8tPkxv
d2VyRGV2aWNlT2JqZWN0ID0gTG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUGRvLT5TZWN0b3JTaXpl
ID0gNTEyOworCisgICAgc3RhdHVzID0gVGhyZWFkQ3JlYXRlKFBkb1N5c3RlbVBvd2VyLCBQZG8s
ICZQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsNDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShQZG9EZXZp
Y2VQb3dlciwgUGRvLCAmUGRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDU7CisKKyAgICBWZXJib3NlKCIlcFxuIiwg
RmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5QZG8gPSBQZG87CisKKyNwcmFnbWEgcHJl
ZmFzdChzdXBwcmVzczoyODE4MikgLy8gRGVyZWZlcmVuY2luZyBOVUxMIHBvaW50ZXIKKyAgICBG
aWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZVR5cGUgPSBMb3dlckRldmljZU9iamVjdC0+RGV2aWNl
VHlwZTsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkNoYXJhY3RlcmlzdGljcyA9IExvd2VyRGV2
aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3M7CisKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkZs
YWdzIHw9IExvd2VyRGV2aWNlT2JqZWN0LT5GbGFnczsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3Qt
PkZsYWdzICY9IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOworCisgICAgX19QZG9MaW5rKFBkbywg
RmRvKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3Io
ImZhaWw1XG4iKTsKKworICAgIFRocmVhZEFsZXJ0KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIFRocmVhZEpvaW4oUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgUGRvLT5TeXN0ZW1Q
b3dlclRocmVhZCA9IE5VTEw7CisKK2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAg
ICBQZG8tPlBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNl
KExvd2VyRGV2aWNlT2JqZWN0KTsKKworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKwor
ICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOworICAg
IF9fUGRvRnJlZShQZG8pOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAg
SW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZP
SUQKK1Bkb0Rlc3Ryb3koCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7Cisg
ICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdCA9IFBkby0+TG93ZXJEZXZp
Y2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IFBkby0+RHg7CisgICAgUERF
VklDRV9PQkpFQ1QgICAgICBGaWx0ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0Owor
CisgICAgQVNTRVJUM1UoX19QZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pLCA9PSwgRGVsZXRlZCk7
CisKKyAgICBBU1NFUlQoX19QZG9Jc01pc3NpbmcoUGRvKSk7CisgICAgUGRvLT5NaXNzaW5nID0g
RkFMU0U7CisKKyAgICBfX1Bkb1VubGluayhQZG8pOworCisgICAgVmVyYm9zZSgiJXAgKCVzKVxu
IiwKKyAgICAgICAgIEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgIFBkby0+UmVhc29uKTsK
KyAgICBQZG8tPlJlYXNvbiA9IE5VTEw7CisKKyAgICBEeC0+UGRvID0gTlVMTDsKKworICAgIFRo
cmVhZEFsZXJ0KFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oUGRvLT5E
ZXZpY2VQb3dlclRocmVhZCk7CisgICAgUGRvLT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisK
KyAgICBUaHJlYWRBbGVydChQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2lu
KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFBkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBO
VUxMOworCisgICAgUGRvLT5TZWN0b3JTaXplID0gMDsKKyAgICBQZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQ
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOwor
ICAgIF9fUGRvRnJlZShQZG8pOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2Jq
ZWN0KTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmggYi9zcmMveGVuZGlzay9w
ZG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTJlNWQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmgKQEAgLTAsMCArMSw5MCBAQAorLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAK
KyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
CisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAq
IFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVmIF9YRU5ESVNLX1BET19ICisjZGVmaW5lIF9Y
RU5ESVNLX1BET19ICisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgInR5cGVzLmgiCisj
aW5jbHVkZSAiZmRvLmgiCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX1BETyBYRU5ESVNLX1BE
TywgKlBYRU5ESVNLX1BETzsKKworZXh0ZXJuIFZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAor
ICAgIElOICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFU
RSAgICBTdGF0ZQorICAgICk7CisKK2V4dGVybiBERVZJQ0VfUE5QX1NUQVRFCitQZG9HZXREZXZp
Y2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICk7CisKK2V4dGVy
biBQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoCisgICAgSU4gIFBY
RU5ESVNLX1BETyAgICBQZG8KKyAgICApOworCitleHRlcm4gQk9PTEVBTgorUGRvSXNNaXNzaW5n
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK1Bk
b1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0
IENIQVIgICAgICAqUmVhc29uCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4KK1Bkb0lzTWFza2Vk
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVT
CitQZG9DcmVhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJ
Q0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitQ
ZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJu
IE5UU1RBVFVTCitQZG9EaXNwYXRjaCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAg
ICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICk7CisKKyNlbmRpZiAvLyBfWEVORElTS19Q
RE9fSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svdGhyZWFkLmMgYi9zcmMveGVuZGlzay90aHJl
YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmUyYjk0Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svdGhyZWFkLmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8bnRkZGsuaD4KKworI2luY2x1ZGUg
InRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisjaW5j
bHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFRIUkVBRF9QT09MICdFUkhUJworCitzdHJ1Y3QgX1hF
TkRJU0tfVEhSRUFEIHsKKyAgICBYRU5ESVNLX1RIUkVBRF9GVU5DVElPTiBGdW5jdGlvbjsKKyAg
ICBQVk9JRCAgICAgICAgICAgICAgICAgICBDb250ZXh0OworICAgIEtFVkVOVCAgICAgICAgICAg
ICAgICAgIEV2ZW50OworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEFsZXJ0ZWQ7CisgICAg
TE9ORyAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKKyAgICBQS1RIUkVBRCAgICAgICAg
ICAgICAgICBUaHJlYWQ7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fVGhyZWFk
QWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAgIHJldHVybiBf
X0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBMZW5n
dGgsIFRIUkVBRF9QT09MKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fVGhyZWFk
RnJlZSgKKyAgICBJTiAgUFZPSUQgICBCdWZmZXIKKyAgICApCit7CisgICAgX19GcmVlUG9vbFdp
dGhUYWcoQnVmZmVyLCBUSFJFQURfUE9PTCk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQKKyAgICApCit7
CisgICAgS2VTZXRFdmVudCgmVGhyZWFkLT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7
Cit9CisKK1ZPSUQKK1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQK
KyAgICApCit7CisgICAgX19UaHJlYWRXYWtlKFRocmVhZCk7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJFQUQgVGhyZWFk
CisgICAgKQoreworICAgIFRocmVhZC0+QWxlcnRlZCA9IFRSVUU7CisgICAgX19UaHJlYWRXYWtl
KFRocmVhZCk7Cit9CisKK1ZPSUQKK1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJF
QUQgVGhyZWFkCisgICAgKQoreworICAgIF9fVGhyZWFkQWxlcnQoVGhyZWFkKTsKK30KKworS1NU
QVJUX1JPVVRJTkUgIFRocmVhZEZ1bmN0aW9uOworCitWT0lECitUaHJlYWRGdW5jdGlvbigKKyAg
ICBJTiAgUFZPSUQgICAgICAgQXJndW1lbnQKKyAgICApCit7CisgICAgUFhFTkRJU0tfVEhSRUFE
IFNlbGYgPSBBcmd1bWVudDsKKyAgICBOVFNUQVRVUyAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gU2VsZi0+RnVuY3Rpb24oU2VsZiwgU2VsZi0+Q29udGV4dCk7CisKKyAgICBpZiAoSW50
ZXJsb2NrZWREZWNyZW1lbnQoJlNlbGYtPlJlZmVyZW5jZXMpID09IDApCisgICAgICAgIF9fVGhy
ZWFkRnJlZShTZWxmKTsKKworICAgIFBzVGVybWluYXRlU3lzdGVtVGhyZWFkKHN0YXR1cyk7Cisg
ICAgLy8gTk9UIFJFQUNIRUQKK30KKworTlRTVEFUVVMKK1RocmVhZENyZWF0ZSgKKyAgICBJTiAg
WEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICpUaHJl
YWQKKyAgICApCit7CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VH
ZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9MRVZFTCk7CisKKyAgICAoKlRocmVhZCkgPSBf
X1RocmVhZEFsbG9jYXRlKHNpemVvZiAoWEVORElTS19USFJFQUQpKTsKKworICAgIHN0YXR1cyA9
IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYgKCpUaHJlYWQgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgICgqVGhyZWFkKS0+RnVuY3Rpb24gPSBGdW5jdGlvbjsKKyAgICAoKlRo
cmVhZCktPkNvbnRleHQgPSBDb250ZXh0OworICAgICgqVGhyZWFkKS0+QWxlcnRlZCA9IEZBTFNF
OworICAgICgqVGhyZWFkKS0+UmVmZXJlbmNlcyA9IDI7IC8vIE9uZSBmb3IgdXMsIG9uZSBmb3Ig
dGhlIHRocmVhZCBmdW5jdGlvbgorCisgICAgS2VJbml0aWFsaXplRXZlbnQoJigqVGhyZWFkKS0+
RXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7CisKKyAgICBzdGF0dXMgPSBQc0NyZWF0
ZVN5c3RlbVRocmVhZCgmSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNUQU5EQVJEX1JJR0hUU19BTEwgfCBTUEVDSUZJQ19SSUdIVFNfQUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZEZ1bmN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpUaHJlYWQpOworICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKSB7CisgICAgICAgIC0tKCpUaHJlYWQpLT5SZWZlcmVuY2VzOyAgICAvLyBGYWtlIHRo
cmVhZCBmdW5jdGlvbiB0ZXJtaW5hdGlvbgorICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKwor
ICAgIHN0YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUoSGFuZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lOQ0hST05JWkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqUHNUaHJlYWRUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYoKlRocmVhZCktPlRocmVhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgWndDbG9zZShIYW5kbGUpOworCisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMzoKKyAgICBFcnJvcigiZmFpbDNcbiIpOworCisg
ICAgX19UaHJlYWRBbGVydCgqVGhyZWFkKTsKKyAgICBad0Nsb3NlKEhhbmRsZSk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQo
JigqVGhyZWFkKS0+UmVmZXJlbmNlcykgPT0gMCkKKyAgICAgICAgX19UaHJlYWRGcmVlKCpUaHJl
YWQpOworCisgICAgKlRocmVhZCA9IE5VTEw7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAo
JTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQS0VWRU5UCitU
aHJlYWRHZXRFdmVudCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sK
KyAgICByZXR1cm4gJlRocmVhZC0+RXZlbnQ7Cit9CisKK0JPT0xFQU4KK1RocmVhZElzQWxlcnRl
ZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sKKyAgICByZXR1cm4g
VGhyZWFkLT5BbGVydGVkOworfQorCitWT0lECitUaHJlYWRKb2luKAorICAgIElOICBQWEVORElT
S19USFJFQUQgVGhyZWFkCisgICAgKQoreworICAgIExPTkcgICAgICAgICAgICAgICAgUmVmZXJl
bmNlczsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVW
RUwpOworICAgIEFTU0VSVDNQKEtlR2V0Q3VycmVudFRocmVhZCgpLCAhPSwgVGhyZWFkLT5UaHJl
YWQpOworCisgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdChUaHJlYWQtPlRocmVhZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OworCisgICAgUmVmZXJlbmNlcyA9IEludGVybG9ja2VkRGVjcmVtZW50KCZUaHJlYWQtPlJlZmVy
ZW5jZXMpOworICAgIEFTU0VSVDNVKFJlZmVyZW5jZXMsID09LCAwKTsKKworICAgIF9fVGhyZWFk
RnJlZShUaHJlYWQpOworfQorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90aHJlYWQuaCBiL3Ny
Yy94ZW5kaXNrL3RocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYz
YjQ5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay90aHJlYWQuaApAQCAtMCwwICsx
LDc0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAq
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19U
SFJFQURfSAorI2RlZmluZSBfWEVORElTS19USFJFQURfSAorCisjaW5jbHVkZSA8bnRkZGsuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX1hFTkRJU0tfVEhSRUFEIFhFTkRJU0tfVEhSRUFELCAqUFhFTkRJ
U0tfVEhSRUFEOworCit0eXBlZGVmIE5UU1RBVFVTICgqWEVORElTS19USFJFQURfRlVOQ1RJT04p
KFBYRU5ESVNLX1RIUkVBRCwgUFZPSUQpOworCitleHRlcm4gTlRTVEFUVVMKK1RocmVhZENyZWF0
ZSgKKyAgICBJTiAgWEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBW
T0lEICAgICAgICAgICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAg
ICAgICAgICpUaHJlYWQKKyAgICApOworCitleHRlcm4gUEtFVkVOVAorVGhyZWFkR2V0RXZlbnQo
CisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBTZWxmCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4K
K1RocmVhZElzQWxlcnRlZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYKKyAgICApOwor
CitleHRlcm4gVk9JRAorVGhyZWFkV2FrZSgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVh
ZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRBbGVydCgKKyAgICBJTiAgUFhFTkRJU0tf
VEhSRUFEIFRocmVhZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRKb2luKAorICAgIElO
ICBQWEVORElTS19USFJFQUQgVGhyZWFkCisgICAgKTsKKworI2VuZGlmICAvLyBfWEVORElTS19U
SFJFQURfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90eXBlcy5oIGIvc3JjL3hlbmRpc2sv
dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmI0MjE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svdHlwZXMuaApAQCAtMCwwICsxLDUzIEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19UWVBFU19ICisjZGVm
aW5lIF9YRU5ESVNLX1RZUEVTX0gKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfT0JKRUNUX1RZUEUg
eworICAgIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QgPSAnT0RQJywKKyAgICBGVU5DVElPTl9ERVZJ
Q0VfT0JKRUNUID0gJ09ERicKK30gREVWSUNFX09CSkVDVF9UWVBFLCAqUERFVklDRV9PQkpFQ1Rf
VFlQRTsKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfUE5QX1NUQVRFIHsKKyAgICBJbnZhbGlkID0g
MCwKKyAgICBQcmVzZW50LCAgICAgICAgLy8gUERPIG9ubHkKKyAgICBFbnVtZXJhdGVkLCAgICAg
Ly8gUERPIG9ubHkKKyAgICBBZGRlZCwgICAgICAgICAgLy8gRkRPIG9ubHkKKyAgICBTdGFydGVk
LAorICAgIFN0b3BQZW5kaW5nLAorICAgIFN0b3BwZWQsCisgICAgUmVtb3ZlUGVuZGluZywKKyAg
ICBTdXJwcmlzZVJlbW92ZVBlbmRpbmcsCisgICAgRGVsZXRlZAorfSBERVZJQ0VfUE5QX1NUQVRF
LCAqUERFVklDRV9QTlBfU1RBVEU7CisKKyNlbmRpZiAgLy8gX1hFTkRJU0tfVFlQRVNfSApkaWZm
IC0tZ2l0IGEvc3JjL3hlbmRpc2svdXRpbC5oIGIvc3JjL3hlbmRpc2svdXRpbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YWRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9z
cmMveGVuZGlzay91dGlsLmgKQEAgLTAsMCArMSwyMjIgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0
cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywgCisgKiB3aXRoIG9y
IHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIAorICogdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAgIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisgKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisgKiBTVUNIIERBTUFH
RS4KKyAqLyAKKworI2lmbmRlZiBfVVRJTF9ICisjZGVmaW5lIF9VVElMX0gKKworI2luY2x1ZGUg
PG50ZGRrLmg+CisKKyNpbmNsdWRlICJhc3NlcnQuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX05PTl9Q
QUdFRF9CVUZGRVJfSEVBREVSIHsKKyAgICBTSVpFX1QgIExlbmd0aDsKKyAgICBVTE9ORyAgIFRh
ZzsKK30gTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIsICpQTk9OX1BBR0VEX0JVRkZFUl9IRUFERVI7
CisKK3R5cGVkZWYgc3RydWN0IF9OT05fUEFHRURfQlVGRkVSX1RSQUlMRVIgeworICAgIFVMT05H
ICAgVGFnOworfSBOT05fUEFHRURfQlVGRkVSX1RSQUlMRVIsICpQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fQWxsb2NhdGVOb25QYWdlZFBv
b2xXaXRoVGFnKAorICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICBDYWxsZXIsCisgICAg
SU4gIFVMT05HICAgICAgICAgICAgICAgICAgIExpbmUsCisgICAgSU4gIFNJWkVfVCAgICAgICAg
ICAgICAgICAgIExlbmd0aCwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgVGFnCisg
ICAgKQoreworICAgIFBVQ0hBUiAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI7CisgICAgUE5P
Tl9QQUdFRF9CVUZGRVJfSEVBREVSICAgIEhlYWRlcjsKKyAgICBQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSICAgVHJhaWxlcjsKKworICAgIEFTU0VSVDNTKExlbmd0aCwgIT0sIDApOworCisgICAg
QnVmZmVyID0gKFBVQ0hBUilFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZF
Ul9UUkFJTEVSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFnKTsKKyAg
ICBpZiAoQnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBBbGxvY0Zh
aWxlZCAlZCBieXRlcywgJTA4eCB0YWdcbiIsIENhbGxlciwgTGluZSwgTGVuZ3RoLCBUYWcpOwor
ICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUnRsWmVyb01lbW9yeShCdWZmZXIsIAor
ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05fUEFHRURfQlVGRkVSX0hFQURFUikgKworICAg
ICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BB
R0VEX0JVRkZFUl9UUkFJTEVSKSk7CisKKyAgICBIZWFkZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKUJ1ZmZlcjsKKyAgICBIZWFkZXItPkxlbmd0aCA9IExlbmd0aDsKKyAgICBIZWFkZXIt
PlRhZyA9IFRhZzsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJfSEVB
REVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUikoQnVmZmVy
ICsgTGVuZ3RoKTsKKyAgICBUcmFpbGVyLT5UYWcgPSBUYWc7CisKK2RvbmU6CisgICAgcmV0dXJu
IEJ1ZmZlcjsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRnJlZVBvb2xXaXRoVGFn
KAorICAgIElOICBQVk9JRCAgICAgICAgICAgICAgICAgICBfQnVmZmVyLAorICAgIElOICBVTE9O
RyAgICAgICAgICAgICAgICAgICBUYWcKKyAgICApCit7CisgICAgUFVDSEFSICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlciA9IChQVUNIQVIpX0J1ZmZlcjsKKyAgICBTSVpFX1QgICAgICAgICAg
ICAgICAgICAgICAgTGVuZ3RoOworICAgIFBOT05fUEFHRURfQlVGRkVSX0hFQURFUiAgICBIZWFk
ZXI7CisgICAgUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUiAgIFRyYWlsZXI7CisKKyAgICBBU1NF
UlQzUChCdWZmZXIsICE9LCBOVUxMKTsKKworICAgIEJ1ZmZlciAtPSBzaXplb2YgKE5PTl9QQUdF
RF9CVUZGRVJfSEVBREVSKTsKKworICAgIEhlYWRlciA9IChQTk9OX1BBR0VEX0JVRkZFUl9IRUFE
RVIpQnVmZmVyOworICAgIEFTU0VSVDNVKFRhZywgPT0sIEhlYWRlci0+VGFnKTsKKyAgICBMZW5n
dGggPSBIZWFkZXItPkxlbmd0aDsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9C
VUZGRVJfSEVBREVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxF
UikoQnVmZmVyICsgTGVuZ3RoKTsKKyAgICBBU1NFUlQzVShUYWcsID09LCBUcmFpbGVyLT5UYWcp
OworCisgICAgQnVmZmVyIC09IHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIpOworCisg
ICAgUnRsRmlsbE1lbW9yeShCdWZmZXIsIAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05f
UEFHRURfQlVGRkVSX0hFQURFUikgKworICAgICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAg
ICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9UUkFJTEVSKSwKKyAgICAgICAg
ICAgICAgICAgIDB4QUEpOworCisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBUYWcpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUE1ETAorX19BbGxvY1BhZ2VzRm9yTWRsKAorICAgIElO
ICBTSVpFX1QgICAgICAgICAgU2l6ZQorICAgICkKK3sKKyAgICBQTURMICAgICAgICAgICAgICAg
IE1kbDsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIExvd0FkZHI7CisgICAgUEhZU0lDQUxfQURE
UkVTUyAgICBIaWdoQWRkcjsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIFNraXBCeXRlczsKKwor
ICAgIFNraXBCeXRlcy5RdWFkUGFydCA9IDB1bGw7CisgICAgSGlnaEFkZHIuUXVhZFBhcnQgPSB+
MHVsbDsKKworICAgIC8vIHRyeSA+IDRHQgorICAgIExvd0FkZHIuUXVhZFBhcnQgPSAweDEwMDAw
MDAwMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdo
QWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAg
ICAgICBpZiAoTW1HZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBn
b3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7Cisg
ICAgICAgIEV4RnJlZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAg
ICAvLyB0cnkgPiAyR0IKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHg4MDAwMDAwMHVsbDsKKyAg
ICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5
dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAgICAgICBpZiAoTW1H
ZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBnb3RvIGRvbmU7Cisg
ICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7CisgICAgICAgIEV4RnJl
ZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyB0cnkgYW55
d2hlcmUKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRl
UGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hl
ZCwgMCk7CisgICAgLy8gTWRsIGJ5dGUgY291bnQgZ2V0cyBjaGVja2VkIGFnYWluIGFmdGVyIHRo
aXMgcmV0dXJucworCitkb25lOgorICAgIHJldHVybiBNZGw7Cit9CitzdGF0aWMgRk9SQ0VJTkxJ
TkUgUFZPSUQKK19fX0FsbG9jUGFnZXMoCisgICAgSU4gIFBDSEFSICAgICAgICAgICBDYWxsZXIs
IAorICAgIElOICBVTE9ORyAgICAgICAgICAgTGluZSwKKyAgICBJTiAgU0laRV9UICAgICAgICAg
IFNpemUsCisgICAgT1VUIFBNREwqICAgICAgICAgICBNZGwKKyAgICApCit7CisgICAgUFZPSUQg
ICAgICAgICAgICAgICBCdWZmZXI7CisKKyAgICAqTWRsID0gX19BbGxvY1BhZ2VzRm9yTWRsKFNp
emUpOworICAgIGlmICgqTWRsID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBN
bUFsbG9jYXRlUGFnZXNGb3JNZGxFeCBGYWlsZWQgJWQgYnl0ZXNcbiIsIENhbGxlciwgTGluZSwg
U2l6ZSk7CisgICAgICAgIGdvdG8gZmFpbDE7CisgICAgfQorCisgICAgaWYgKE1tR2V0TWRsQnl0
ZUNvdW50KCpNZGwpICE9IFNpemUpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiAlZCBieXRl
cyAhPSAlZCBieXRlcyByZXF1ZXN0ZWRcbiIsIENhbGxlciwgTGluZSwgTW1HZXRNZGxCeXRlQ291
bnQoKk1kbCksIFNpemUpOworICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKworICAgIEJ1ZmZl
ciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5Q2FjaGUoKk1kbCwgS2VybmVsTW9kZSwgTW1DYWNo
ZWQsIE5VTEwsIEZBTFNFLCBOb3JtYWxQYWdlUHJpb3JpdHkpOworICAgIGlmIChCdWZmZXIgPT0g
TlVMTCkgeworICAgICAgICBXYXJuaW5nKCIlczoldSA6IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5
Q2FjaGUgRmFpbGVkICVkIGJ5dGVzXG4iLCBDYWxsZXIsIExpbmUsIFNpemUpOworICAgICAgICBn
b3RvIGZhaWwzOworICAgIH0KKworICAgIHJldHVybiBCdWZmZXI7CisKK2ZhaWwzOgorZmFpbDI6
CisgICAgTW1GcmVlUGFnZXNGcm9tTWRsKCpNZGwpOworICAgIEV4RnJlZVBvb2woKk1kbCk7Citm
YWlsMToKKyAgICAqTWRsID0gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNkZWZpbmUgX19B
bGxvY1BhZ2VzKFNpemUsIE1kbCkgX19fQWxsb2NQYWdlcyhfX0ZVTkNUSU9OX18sIF9fTElORV9f
LCBTaXplLCBNZGwpCisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0ZyZWVQYWdlcygKKyAg
ICBJTiAgUFZPSUQgICAgICAgICAgIEJ1ZmZlciwKKyAgICBJTiAgUE1ETCAgICAgICAgICAgIE1k
bAorICAgICkKK3sKKyAgICBpZiAoQnVmZmVyICYmIE1kbCkgeworICAgICAgICBNbVVubWFwTG9j
a2VkUGFnZXMoQnVmZmVyLCBNZGwpOworICAgICAgICBNbUZyZWVQYWdlc0Zyb21NZGwoTWRsKTsK
KyAgICAgICAgRXhGcmVlUG9vbChNZGwpOworICAgIH0KK30KKworI2VuZGlmICAvLyBfVVRJTF9I
CmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay94ZW5kaXNrLnJjIGIvc3JjL3hlbmRpc2sveGVuZGlz
ay5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2E4ZjYwCi0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2sveGVuZGlzay5yYwpAQCAtMCwwICsxLDU2IEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisgKiBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQorICogZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyCisgKiBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisg
KiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+
CisjaW5jbHVkZSA8bnR2ZXJwLmg+CisKKworI3VuZGVmIFZFUl9DT01QQU5ZTkFNRV9TVFIKKyN1
bmRlZiBWRVJfUFJPRFVDVE5BTUVfU1RSCisjdW5kZWYgVkVSX1BST0RVQ1RWRVJTSU9OCisjdW5k
ZWYgVkVSX1BST0RVQ1RWRVJTSU9OX1NUUgorCisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisjZGVm
aW5lIFZFUl9DT01QQU5ZTkFNRV9TVFIgCQlDT01QQU5ZX05BTUVfU1RSCisjZGVmaW5lIFZFUl9M
RUdBTENPUFlSSUdIVF9TVFIgCQkiQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuIgor
CisjZGVmaW5lIFZFUl9QUk9EVUNUTkFNRV9TVFIgCQkiWEVORElTSyIKKyNkZWZpbmUgVkVSX1BS
T0RVQ1RWRVJTSU9OIAkJCU1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixNSUNST19WRVJTSU9O
LEJVSUxEX05VTUJFUgorI2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT05fU1RSIAkJTUFKT1JfVkVS
U0lPTl9TVFIgIi4iIE1JTk9SX1ZFUlNJT05fU1RSICIuIiBNSUNST19WRVJTSU9OX1NUUiAiLiIg
QlVJTERfTlVNQkVSX1NUUgorCisjZGVmaW5lIFZFUl9JTlRFUk5BTE5BTUVfU1RSIAkJIlhFTkRJ
U0suU1lTIgorI2RlZmluZSBWRVJfRklMRURFU0NSSVBUSU9OX1NUUiAJIlhFTkRJU0siCisKKyNk
ZWZpbmUgVkVSX0ZJTEVUWVBFIAkJCQlWRlRfRFJWCisjZGVmaW5lIFZFUl9GSUxFU1VCVFlQRSAJ
CQlWRlQyX0RSVl9TWVNURU0KKworI2luY2x1ZGUgPGNvbW1vbi52ZXI+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC5pbmYgYi9zcmMveGVudmJkLmlu
ZgppbmRleCBiYzg2MjdiLi4yMGJkMzhhIDEwMDY0NAotLS0gYS9zcmMveGVudmJkLmluZgorKysg
Yi9zcmMveGVudmJkLmluZgpAQCAtNDUsNiArNDUsNyBAQCBDb0luc3RfQ29weUZpbGVzPTExCiAK
IFtTb3VyY2VEaXNrc0ZpbGVzXQogeGVudmJkLnN5cz0wLCwKK3hlbmRpc2suc3lzPTAsLAogeGVu
Y3JzaC5zeXM9MCwsCiB4ZW52YmRfY29pbnN0LmRsbD0wLCwKIApAQCAtNTksMTIgKzYwLDIwIEBA
IHhlbnZiZF9jb2luc3QuZGxsPTAsLAogW1hlblZiZF9JbnN0XSAKIENvcHlGaWxlcz1YZW5WYmRf
Q29weWZpbGVzCiAKK1tYZW5WYmRfSW5zdC5IV10KK0FkZFJlZz1YZW5WYmRfQWRkUmVnCisKK1tY
ZW5WYmRfQWRkUmVnXQorSEtSLCwiVXBwZXJGaWx0ZXJzIiwweDAwMDEwMDAwLCJ4ZW5kaXNrIgor
CiBbWGVuVmJkX0NvcHlmaWxlc10KIHhlbnZiZC5zeXMKK3hlbmRpc2suc3lzCiB4ZW5jcnNoLnN5
cwogCiBbWGVuVmJkX0luc3QuU2VydmljZXNdIAogQWRkU2VydmljZT14ZW52YmQsMixYZW5WYmRf
U2VydmljZSwKK0FkZFNlcnZpY2U9eGVuZGlzaywsWGVuRGlza19TZXJ2aWNlLAogCiBbWGVuVmJk
X1NlcnZpY2VdIAogRGlzcGxheU5hbWU9JVhlblZiZERlc2MlCkBAIC03NSw2ICs4NCwxNCBAQCBT
ZXJ2aWNlQmluYXJ5PSUxMiVceGVudmJkLnN5cwogTG9hZE9yZGVyR3JvdXA9IlNjc2kgTWluaXBv
cnQiCiBBZGRSZWc9WGVuVmJkX1BhcmFtZXRlcnMKIAorW1hlbkRpc2tfU2VydmljZV0KK0Rpc3Bs
YXlOYW1lPSVYZW5EaXNrRGVzYyUKK1NlcnZpY2VUeXBlPSVTRVJWSUNFX0tFUk5FTF9EUklWRVIl
CitTdGFydFR5cGU9JVNFUlZJQ0VfQk9PVF9TVEFSVCUKK0Vycm9yQ29udHJvbD0lU0VSVklDRV9F
UlJPUl9OT1JNQUwlCitTZXJ2aWNlQmluYXJ5PSUxMiVceGVuZGlzay5zeXMKK0xvYWRPcmRlckdy
b3VwPSJTY3NpIE1pbmlwb3J0IgorCiBbWGVuVmJkX1BhcmFtZXRlcnNdIAogSEtSLCJQYXJhbWV0
ZXJzIiwsMHgwMDAwMDAxMAogSEtSLCJQYXJhbWV0ZXJzIiwiQnVzVHlwZSIsMHgwMDAxMDAwMSww
eDAwMDAwMDAxIApAQCAtOTUsNiArMTEyLDcgQEAgSEtSLCxDb0luc3RhbGxlcnMzMiwweDAwMDEw
MDAwLCJ4ZW52YmRfY29pbnN0X0BNQUpPUl9WRVJTSU9OQF9ATUlOT1JfVkVSU0lPTkBfQE0KIENv
bXBhbnkgPSAiQENPTVBBTllfTkFNRUAiCiBEaXNrRGVzYyA9ICJAUFJPRFVDVF9OQU1FQCBQViBT
dG9yYWdlIEhvc3QgQWRhcHRlciBQYWNrYWdlIiAKIFhlblZiZERlc2M9ICJAUFJPRFVDVF9OQU1F
QCBQViBTdG9yYWdlIEhvc3QgQWRhcHRlciIKK1hlbkRpc2tEZXNjPSAiQFBST0RVQ1RfTkFNRUAg
UFYgU3RvcmFnZSBGaWx0ZXIiCiAKIFNFUlZJQ0VfQk9PVF9TVEFSVCA9IDB4MCAKIFNFUlZJQ0Vf
U1lTVEVNX1NUQVJUID0gMHgxIApkaWZmIC0tZ2l0IGEvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qIGIvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qCmluZGV4IDVlNWZjYmMuLmUw
MjlkMTMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi9wYWNrYWdlL3BhY2thZ2UudmN4cHJvagorKysgYi92
czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAgLTQ4LDYgKzQ4LDkgQEAKIAkJPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiPgogCQkJPFBy
b2plY3Q+ezU4ZjViYzQzLWI5MmUtNGEyYi05NzVkLTAwNjZlYWIyOTA5Mn08L1Byb2plY3Q+CiAJ
CTwvUHJvamVjdFJlZmVyZW5jZT4KKwkJPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVu
ZGlza1x4ZW5kaXNrLnZjeHByb2oiPgorCQkJPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05
ZjU2LWUxMGEzZDJmNWJhZH08L1Byb2plY3Q+CisJCTwvUHJvamVjdFJlZmVyZW5jZT4KIAkJPFBy
b2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVudmJkXHhlbnZiZC52Y3hwcm9qIj4KIAkJCTxQ
cm9qZWN0PntlZjIzNjM3MS0zMTQ1LTQxYjEtOTljOS04MmIzM2UzNTNmMTd9PC9Qcm9qZWN0Pgog
CQk8L1Byb2plY3RSZWZlcmVuY2U+CkBAIC01OSw0ICs2Miw0IEBACiAJPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KIAk8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogCTwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMy
MDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qIGIvdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTZhZDcKLS0tIC9kZXYv
bnVsbAorKysgYi92czIwMTIveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKQEAgLTAsMCArMSw4NCBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1
bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCTxJbXBvcnQgUHJvamVj
dD0iLi5cY29uZmlncy5wcm9wcyIgLz4KKworCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKwkJPENvbmZpZ3VyYXRpb24+V2luZG93cyBWaXN0YSBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KwkJPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRm
b3JtPiAKKwkJPERlYnVnZ2VyRmxhdm9yPkRiZ2VuZ0tlcm5lbERlYnVnZ2VyPC9EZWJ1Z2dlckZs
YXZvcj4gCisJPC9Qcm9wZXJ0eUdyb3VwPgorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJQcm9lcHJ0
eVNoZWV0cyI+CisJCTxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjA8
L1BsYXRmb3JtVG9vbHNldD4KKwkJPENvbmZpZ3VyYXRpb25UeXBlPkRyaXZlcjwvQ29uZmlndXJh
dGlvblR5cGU+CisJCTxEcml2ZXJUeXBlPldETTwvRHJpdmVyVHlwZT4KKwk8L1Byb3BlcnR5R3Jv
dXA+CisKKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPgorCQorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKwkJ
PFByb2plY3RHdWlkPntENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9PC9Qcm9q
ZWN0R3VpZD4KKwk8L1Byb3BlcnR5R3JvdXA+CisJCisJPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJn
ZXRzLnByb3BzIiAvPgorCTxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPiAKKwkKKwk8UHJvcGVydHlHcm91cD4KKwkJPEluY2x1ZGVQYXRoPiQo
UHJvamVjdERpcikuLlwuLlxpbmNsdWRlOyQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJ
PFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisJCTxFbmFibGVJbmYyY2F0
PmZhbHNlPC9FbmFibGVJbmYyY2F0PgorCQk8SW50RGlyPi4uXCQoUHJvamVjdE5hbWUpXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGlyPgorCQk8T3V0RGlyPi4uXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorCTwvUHJvcGVydHlHcm91cD4K
KworCTxJdGVtRGVmaW5pdGlvbkdyb3VwPgorCQk8Q2xDb21waWxlPgorCQkJPEJ1ZmZlclNlY3Vy
aXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisJCQk8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X19NT0RVTEVfXz0iWEVORElTSyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQkJPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJu
aW5nczwvV2FybmluZ0xldmVsPgorCQkJPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ1NDg7NDcx
MTs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgorCQkJPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRp
b24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj4KKwkJCTxFbmFibGVQUkVmYXN0PnRy
dWU8L0VuYWJsZVBSRWZhc3Q+CisJCTwvQ2xDb21waWxlPgorCQk8TGluaz4KKwkJCTxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKwkJPC9MaW5rPgorCQk8SW5m
PgorCQkJPFNwZWNpZnlBcmNoaXRlY3R1cmU+dHJ1ZTwvU3BlY2lmeUFyY2hpdGVjdHVyZT4KKwkJ
CTxTcGVjaWZ5RHJpdmVyVmVyRGlyZWN0aXZlVmVyc2lvbj50cnVlPC9TcGVjaWZ5RHJpdmVyVmVy
RGlyZWN0aXZlVmVyc2lvbj4KKwkJCTxUaW1lU3RhbXA+JChNQUpPUl9WRVJTSU9OKS4kKE1JTk9S
X1ZFUlNJT04pLiQoTUlDUk9fVkVSU0lPTikuJChCVUlMRF9OVU1CRVIpPC9UaW1lU3RhbXA+CisJ
CQk8RW5hYmxlVmVyYm9zZT50cnVlPC9FbmFibGVWZXJib3NlPgorCQk8L0luZj4KKwk8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisJPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0
Zm9ybSknPT0nV2luMzInIj4KKwkJPENsQ29tcGlsZT4KKwkJCTxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5fX2kzODZfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisJCTwvQ2xDb21waWxlPgorCQk8SW5mPgorCQkJPEFyY2hpdGVjdHVyZT54ODY8
L0FyY2hpdGVjdHVyZT4KKwkJPC9JbmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCTxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgorCQk8Q2xD
b21waWxlPgorCQkJPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9feDg2XzY0X187JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQk8L0NsQ29tcGls
ZT4KKwkJPEluZj4KKwkJCTxBcmNoaXRlY3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKwkJPC9J
bmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCisJPEl0ZW1Hcm91cD4KKwkJPEZpbGVzVG9Q
YWNrYWdlIEluY2x1ZGU9IiQoVGFyZ2V0UGF0aCkiIC8+CisJCTxGaWxlc1RvUGFja2FnZSBJbmNs
dWRlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiIgLz4KKwkJPEZpbGVzVG9QYWNrYWdlIElu
Y2x1ZGU9IkAoSW5mLT4nJShDb3B5T3V0cHV0KScpIiBDb25kaXRpb249IidAKEluZiknIT0nJyIg
Lz4KKwk8L0l0ZW1Hcm91cD4KKwk8SXRlbUdyb3VwPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
Ly4uL3NyYy94ZW5kaXNrL2RyaXZlci5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4u
L3NyYy94ZW5kaXNrL2Zkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94
ZW5kaXNrL3Bkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNr
L3RocmVhZC5jIiAvPgorCTwvSXRlbUdyb3VwPgorCTxJdGVtR3JvdXA+CisJCTxSZXNvdXJjZUNv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmRpc2tceGVuZGlzay5yYyIgLz4KKwk8L0l0ZW1H
cm91cD4KKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJvai51c2VyIGIvdnMyMDEyL3hlbmRp
c2sveGVuZGlzay52Y3hwcm9qLnVzZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGVjZGQ0NgotLS0gL2Rldi9udWxsCisrKyBiL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4
cHJvai51c2VyCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKwk8UHJvcGVydHlHcm91
cD4KKwkJPFNpZ25Nb2RlPlRlc3RTaWduPC9TaWduTW9kZT4KKwkJPFRlc3RDZXJ0aWZpY2F0ZT4u
LlwuLlxzcmNceGVudmJkLnBmeDwvVGVzdENlcnRpZmljYXRlPgorCQk8VGltZVN0YW1wU2VydmVy
Pmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltc3RhbXAuZGxsPC9UaW1l
U3RhbXBTZXJ2ZXI+CisJPC9Qcm9wZXJ0eUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEv
dnMyMDEyL3hlbnZiZC5zbG4gYi92czIwMTIveGVudmJkLnNsbgppbmRleCA4NmZiMWE1Li43MWMy
NzgwIDEwMDY0NAotLS0gYS92czIwMTIveGVudmJkLnNsbgorKysgYi92czIwMTIveGVudmJkLnNs
bgpAQCAtOCw3ICs4LDEwIEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9qZWN0CiBQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmNy
c2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEyQi05NzVE
LTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNrLnZjeHBy
b2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iIAorRW5kUHJvamVj
dAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4
ZW52YmRfY29pbnN0IiwgImNvaW5zdFx4ZW52YmRfY29pbnN0LnZjeHByb2oiLCAiezUwQzA4NDM3
LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0iCitFbmRQcm9qZWN0CiAJUHJvamVjdFNlY3Rp
b24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7NThGNUJDNDMtQjkyRS00
QTJCLTk3NUQtMDA2NkVBQjI5MDkyfSA9IHs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFC
MjkwOTJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE2LDYgKzE5LDcgQEAgRW5kUHJvamVjdAog
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNr
YWdlIiwgInBhY2thZ2VccGFja2FnZS52Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlB
My1DNjQzRjFGQzE5NzJ9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKIAkJezUwQzA4NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7
NTBDMDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9CiAJCXs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVC
QzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNF
MzUzRjE3fQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0zNiw4ICs0MCwzMiBAQCBHbG9iYWwKIAkJ
V2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlF
bmRHbG9iYWxTZWN0aW9uCiAJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRm
b3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcg
RGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNm
ZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDEx
QjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIu
QnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQt
OUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQg
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8V2luMzIgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVn
fHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4
IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQWN0aXZl
Q2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2
LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3Mg
OCBSZWxlYXNlfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVs
ZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5BY3Rp
dmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZp
c3RhIERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0u
V2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyIAor
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJl
bGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMiAKKwkJe0Q3
NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0IAorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CQorCQl7RUYyMzYzNzEtMzE0NS00MUIx
LTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMiAKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4z
MgotCQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVi
dWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgogCQl7RUYyMzYzNzEtMzE0
NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAog
CQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgpkaWZmIC0tZ2l0IGEv
dnMyMDEzL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIGIvdnMyMDEzL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qCmluZGV4IDVkMGRlNGQuLjUwMDFjNjEgMTAwNjQ0Ci0tLSBhL3ZzMjAxMy9wYWNrYWdl
L3BhY2thZ2UudmN4cHJvagorKysgYi92czIwMTMvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAg
LTc3LDYgKzc3LDkgQEAKICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5jcnNo
XHhlbmNyc2gudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57NThmNWJjNDMtYjkyZS00YTJiLTk3
NWQtMDA2NmVhYjI5MDkyfTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuZGlza1x4ZW5kaXNrLnZjeHByb2oiPgor
ICAgICAgPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05ZjU2LWUxMGEzZDJmNWJhZH08L1By
b2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Ii4uXHhlbnZiZFx4ZW52YmQudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ZWYyMzYz
NzEtMzE0NS00MWIxLTk5YzktODJiMzNlMzUzZjE3fTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RS
ZWZlcmVuY2U+CkBAIC04OCw0ICs5MSw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmRp
c2sveGVuZGlzay51c2VyIGIvdnMyMDEzL3hlbmRpc2sveGVuZGlzay51c2VyCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Yjg0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi92czIw
MTMveGVuZGlzay94ZW5kaXNrLnVzZXIKQEAgLTAsMCArMSw4IEBACivvu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
PgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8U2lnbk1vZGU+VGVzdFNpZ248L1NpZ25Nb2RlPgor
ICAgIDxUZXN0Q2VydGlmaWNhdGU+Li5cLi5cc3JjXHhlbnZiZC5wZng8L1Rlc3RDZXJ0aWZpY2F0
ZT4KKyAgICA8VGltZVN0YW1wU2VydmVyPmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3Nj
cmlwdHMvdGltc3RhbXAuZGxsPC9UaW1lU3RhbXBTZXJ2ZXI+CisgIDwvUHJvcGVydHlHcm91cD4K
KzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvaiBi
L3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jZGYzYWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdnMyMDEzL3hlbmRpc2sveGVu
ZGlzay52Y3hwcm9qCkBAIC0wLDAgKzEsMTEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cY29uZmlncy5wcm9wcyIgLz4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uPldp
bmRvd3MgVmlzdGEgRGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlv
bj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxEZWJ1Z2dlckZs
YXZvcj5EYmdlbmdLZXJuZWxEZWJ1Z2dlcjwvRGVidWdnZXJGbGF2b3I+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlByb2VwcnR5U2hlZXRzIj4KKyAgICA8Q29u
ZmlndXJhdGlvblR5cGU+RHJpdmVyPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8RHJpdmVyVHlw
ZT5XRE08L0RyaXZlclR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBW
aXN0YSBEZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1v
ZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzInIj4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyA3IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxN
b2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+CisgICAgPFBsYXRm
b3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9u
IiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBE
ZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2
ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXx4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBEZWJ1
Z3x4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4x
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXx4
NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA3IERlYnVnfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93
c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+CisgICAg
PFBsYXRmb3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKyAgICA8UHJvamVjdEd1aWQ+e0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH08L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0i
Li5cdGFyZ2V0cy5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxJbmNsdWRl
UGF0aD4kKFByb2plY3REaXIpLi5cLi5caW5jbHVkZTskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+CisgICAgPFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisgICAgPEVu
YWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+CisgICAgPEludERpcj4uLlwkKFByb2pl
Y3ROYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBsYXRmb3JtKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyPi4uXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+
CisgICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fX01PRFVMRV9fPSJYRU5ESVNLIjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
V2FybmluZ0xldmVsPkVuYWJsZUFsbFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+NDU0ODs0NzExOzQ4MjA7NDY2ODs0MjU1OzYwMDE7NjA1NDsy
ODE5NjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
CisgICAgICA8TXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj50cnVlPC9NdWx0aVByb2Nlc3NvckNv
bXBpbGF0aW9uPgorICAgICAgPEVuYWJsZVBSRWZhc3Q+dHJ1ZTwvRW5hYmxlUFJFZmFzdD4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
PiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwv
QWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPEluZj4KKyAgICAgIDxT
cGVjaWZ5QXJjaGl0ZWN0dXJlPnRydWU8L1NwZWNpZnlBcmNoaXRlY3R1cmU+CisgICAgICA8U3Bl
Y2lmeURyaXZlclZlckRpcmVjdGl2ZVZlcnNpb24+dHJ1ZTwvU3BlY2lmeURyaXZlclZlckRpcmVj
dGl2ZVZlcnNpb24+CisgICAgICA8VGltZVN0YW1wPiQoTUFKT1JfVkVSU0lPTikuJChNSU5PUl9W
RVJTSU9OKS4kKE1JQ1JPX1ZFUlNJT04pLiQoQlVJTERfTlVNQkVSKTwvVGltZVN0YW1wPgorICAg
ICAgPEVuYWJsZVZlcmJvc2U+dHJ1ZTwvRW5hYmxlVmVyYm9zZT4KKyAgICA8L0luZj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+X19pMzg2X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxJbmY+CisgICAgICA8
QXJjaGl0ZWN0dXJlPng4NjwvQXJjaGl0ZWN0dXJlPgorICAgIDwvSW5mPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZv
cm0pJz09J3g2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+X194ODZfNjRfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPEluZj4KKyAgICAgIDxBcmNoaXRl
Y3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKyAgICA8L0luZj4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKFRh
cmdldFBhdGgpIiAvPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKE91dERpcikkKFRh
cmdldE5hbWUpLnBkYiIgLz4KKyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iQChJbmYtPicl
KENvcHlPdXRwdXQpJykiIENvbmRpdGlvbj0iJ0AoSW5mKSchPScnIiAvPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5k
aXNrL2RyaXZlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmRp
c2svZmRvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuZGlzay9w
ZG8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNrL3RocmVh
ZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5kaXNrXHhlbmRpc2sucmMiIC8+CisgIDwvSXRlbUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMy94ZW52YmQuc2xuIGIvdnMyMDEzL3hlbnZiZC5zbG4KaW5kZXggMTMxMjhj
NS4uNjBkOTUxMyAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbnZiZC5zbG4KKysrIGIvdnMyMDEzL3hl
bnZiZC5zbG4KQEAgLTgsNiArOCw4IEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQx
MS0wMEEwQzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9q
ZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0g
InhlbmNyc2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEy
Qi05NzVELTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNr
LnZjeHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCitFbmRQ
cm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gInhlbnZiZF9jb2luc3QiLCAiY29pbnN0XHhlbnZiZF9jb2luc3QudmN4cHJvaiIsICJ7NTBD
MDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fSIKICAgICBQcm9qZWN0U2VjdGlvbihQ
cm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJCXs1OEY1QkM0My1COTJFLTRBMkIt
OTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5
Mn0KQEAgLTE2LDYgKzE4LDcgQEAgRW5kUHJvamVjdAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNrYWdlIiwgInBhY2thZ2VccGFja2FnZS52
Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlBMy1DNjQzRjFGQzE5NzJ9IgogICAgIFBy
b2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJezUwQzA4
NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7NTBDMDg0MzctQzFGMy00MzQ5LUJG
NkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9CiAJCXs1OEY1QkM0My1C
OTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAw
NjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fQogCUVuZFByb2plY3RT
ZWN0aW9uCkBAIC0zNiw2ICszOSwzMCBAQCBHbG9iYWwKIAkJV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCiAJR2xv
YmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24K
KwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERlYnVn
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9
IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNE
MkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERl
YnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcg
PSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJl
bGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2lu
ZG93cyA3IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXx4
NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA4IERlYnVnfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVC
QUR9LldpbmRvd3MgOCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMy
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDggRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdp
bjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFC
MkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1
Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4
IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9Lldp
bmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZp
c3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXtE
NzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxl
YXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dz
IFZpc3RhIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CiAJ
CXtFRjIzNjM3MS0zMTQ1LTQxQjEtOTlDOS04MkIzM0UzNTNGMTd9LldpbmRvd3MgNyBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0
Ci0tIAoyLjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:01:32 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:01:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1N6-0005Fa-8R; Mon, 22 Sep 2014 11:01:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XW1N4-0005FV-GT
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:01:31 +0000
Received: from [85.158.137.68:6408] by server-8.bemta-3.messagelabs.com id
	3F/ED-31195-98100245; Mon, 22 Sep 2014 11:01:29 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-6.tower-31.messagelabs.com!1411383682!6787695!3
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 5536 invoked from network); 22 Sep 2014 11:01:28 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-6.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:01:28 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="173799142"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.78) with Microsoft SMTP Server id 14.3.181.6;
	Mon, 22 Sep 2014 07:01:00 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XW1Ma-0007qR-HJ;
	Mon, 22 Sep 2014 12:01:00 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 22 Sep 2014 12:00:03 +0100
Message-ID: <1411383603-9316-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Length: 235949
X-DLP: MIA2
Cc: Owen smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

WGVuRGlzayBpbnRlcmNlcHRzIGFuZCB0cmFuc2xhdGVzIElPQ1RMX1NUT1JBR0VfTUFOQUdFX0RB
VEFfU0VUX0FUVFJJQlVURVMKaW50byBTQ1NJT1BfVU5NQVAgU1JCcy4gU3RvcnBvcnQgd2lsbCBw
YXNzIG9uIHRoZXNlIFNDU0lPUF9VTk1BUCByZXF1ZXN0cwp0byBYZW5WYmQsIHdoaWNoIHdpbGwg
Y3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBCTEtJRl9PUF9ESVNDQVJEIHJlcXVlc3RzLgpYZW5EaXNr
IGlzIG9ubHkgbmVjY2Vzc2FyeSBiZWNhdXNlIFN0b3Jwb3J0IGRvZXMgbm90IGRvIHRoZSB0cmFu
c2xhdGlvbgp0byBTQ1NJT1BfVU5NQVAgU1JCcy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gc21pdGgg
PG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBidWlsZC5weSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDEgKwogc3JjL3hlbmRpc2svYXNzZXJ0LmggICAgICAgICAgICAgICAgfCAg
MjIwICsrKysKIHNyYy94ZW5kaXNrL2RlYnVnLmggICAgICAgICAgICAgICAgIHwgICA5NCArKwog
c3JjL3hlbmRpc2svZHJpdmVyLmMgICAgICAgICAgICAgICAgfCAgMjAzICsrKysKIHNyYy94ZW5k
aXNrL2RyaXZlci5oICAgICAgICAgICAgICAgIHwgICA2OCArKwogc3JjL3hlbmRpc2svZmRvLmMg
ICAgICAgICAgICAgICAgICAgfCAxODYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
c3JjL3hlbmRpc2svZmRvLmggICAgICAgICAgICAgICAgICAgfCAgIDc4ICsrCiBzcmMveGVuZGlz
ay9tdXRleC5oICAgICAgICAgICAgICAgICB8ICAxMTMgKysKIHNyYy94ZW5kaXNrL3Bkby5jICAg
ICAgICAgICAgICAgICAgIHwgMjEyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwogc3JjL3hlbmRpc2svcGRvLmggICAgICAgICAgICAgICAgICAgfCAgIDkwICsrCiBzcmMveGVu
ZGlzay90aHJlYWQuYyAgICAgICAgICAgICAgICB8ICAyMjUgKysrKwogc3JjL3hlbmRpc2svdGhy
ZWFkLmggICAgICAgICAgICAgICAgfCAgIDc0ICsrCiBzcmMveGVuZGlzay90eXBlcy5oICAgICAg
ICAgICAgICAgICB8ICAgNTMgKwogc3JjL3hlbmRpc2svdXRpbC5oICAgICAgICAgICAgICAgICAg
fCAgMjIyICsrKysKIHNyYy94ZW5kaXNrL3hlbmRpc2sucmMgICAgICAgICAgICAgIHwgICA1NiAr
CiBzcmMveGVudmJkLmluZiAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwogdnMyMDEyL3Bh
Y2thZ2UvcGFja2FnZS52Y3hwcm9qICAgICAgfCAgICA1ICstCiB2czIwMTIveGVuZGlzay94ZW5k
aXNrLnZjeHByb2ogICAgICB8ICAgODQgKysKIHZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJv
ai51c2VyIHwgICAgOCArCiB2czIwMTIveGVudmJkLnNsbiAgICAgICAgICAgICAgICAgICB8ICAg
MzAgKy0KIHZzMjAxMy9wYWNrYWdlL3BhY2thZ2UudmN4cHJvaiAgICAgIHwgICAgNSArLQogdnMy
MDEzL3hlbmRpc2sveGVuZGlzay51c2VyICAgICAgICAgfCAgICA4ICsKIHZzMjAxMy94ZW5kaXNr
L3hlbmRpc2sudmN4cHJvaiAgICAgIHwgIDExMiArKwogdnMyMDEzL3hlbnZiZC5zbG4gICAgICAg
ICAgICAgICAgICAgfCAgIDI3ICsKIDI0IGZpbGVzIGNoYW5nZWQsIDU3ODAgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9hc3NlcnQu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL2RlYnVnLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBzcmMveGVuZGlzay9kcml2ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNr
L2RyaXZlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmRpc2svZmRvLmMKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBzcmMveGVuZGlzay9mZG8uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5k
aXNrL211dGV4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay9wZG8uYwogY3JlYXRl
IG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3Bkby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hl
bmRpc2svdGhyZWFkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay90aHJlYWQuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5kaXNrL3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBzcmMveGVuZGlzay91dGlsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMveGVuZGlzay94ZW5k
aXNrLnJjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9q
CiBjcmVhdGUgbW9kZSAxMDA2NDQgdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qLnVzZXIK
IGNyZWF0ZSBtb2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnVzZXIKIGNyZWF0ZSBt
b2RlIDEwMDY0NCB2czIwMTMveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKCmRpZmYgLS1naXQgYS9i
dWlsZC5weSBiL2J1aWxkLnB5CmluZGV4IDI2MjYxYWQuLjNhNzFkMGMgMTAwNjQ0Ci0tLSBhL2J1
aWxkLnB5CisrKyBiL2J1aWxkLnB5CkBAIC0zNjgsNiArMzY4LDcgQEAgaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKIAogICAgIGlmIGxlbihzeXMuYXJndikgPD0gMiBvciBzZHZbc3lzLmFyZ3Zb
Ml1dOgogICAgICAgICBydW5fc2R2KCd4ZW5jcnNoJywgZHJpdmVyLCB2cykKKyAgICAgICAgcnVu
X3NkdigneGVuZGlzaycsIGRyaXZlciwgdnMpCiAgICAgICAgIHJ1bl9zZHYoJ3hlbnZiZCcsIGRy
aXZlciwgdnMpCiAKICAgICBhcmNoaXZlKGRyaXZlciArICdcXHNvdXJjZS50Z3onLCBtYW5pZmVz
dCgpLnNwbGl0bGluZXMoKSwgdGd6PVRydWUpCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9hc3Nl
cnQuaCBiL3NyYy94ZW5kaXNrL2Fzc2VydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNkNTcxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay9hc3NlcnQuaApA
QCAtMCwwICsxLDIyMCBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVm
IF9YRU5ESVNLX0FTU0VSVF9ICisjZGVmaW5lIF9YRU5ESVNLX0FTU0VSVF9ICisKKyNpbmNsdWRl
IDxudGRkay5oPgorCisjaW5jbHVkZSAiZGVidWcuaCIKKworc3RhdGljIEZPUkNFSU5MSU5FIFZP
SUQKK19fQnVnQ2hlY2soCisgICAgX19pbiAgVUxPTkcgICAgICAgQ29kZSwKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXIxLAorICAgIF9faW5fb3B0IFVMT05HX1BUUiAgIFBhcmFt
ZXRlcjIsCisgICAgX19pbl9vcHQgVUxPTkdfUFRSICAgUGFyYW1ldGVyMywKKyAgICBfX2luX29w
dCBVTE9OR19QVFIgICBQYXJhbWV0ZXI0CisgICAgKQoreworI3ByYWdtYSBwcmVmYXN0KHN1cHBy
ZXNzOjI4MTU5KQorICAgIEtlQnVnQ2hlY2tFeChDb2RlLAorICAgICAgICAgICAgICAgICBQYXJh
bWV0ZXIxLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXIyLAorICAgICAgICAgICAgICAgICBQ
YXJhbWV0ZXIzLAorICAgICAgICAgICAgICAgICBQYXJhbWV0ZXI0KTsKK30KKworI2RlZmluZSBB
U1NFUlRJT05fRkFJTFVSRSAgIDB4MDAwMERFQUQKKworCisjZGVmaW5lIEJVRyhfVEVYVCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIGNvbnN0IENIQVIgICpfVGV4dCA9IChfVEVYVCk7ICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBjb25zdCBDSEFSICAqX0ZpbGUgPSBfX0ZJTEVfXzsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgVUxPTkcgICAgICAgX0xpbmUgPSBfX0xJTkVf
XzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFcnJvcigi
QlVHOiAiIF9URVhUICJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgX19CdWdDaGVjayhBU1NFUlRJT05fRkFJTFVSRSwgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfVGV4dCwgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX0ZpbGUsICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9M
aW5lLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgMCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUg
KEZBTFNFKQorCisjZGVmaW5lIEJVR19NU0coX1RFWFQxLCBfVEVYVDIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnN0IENIQVIgICpf
VGV4dDEgPSAoX1RFWFQxKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb25z
dCBDSEFSICAqX1RleHQyID0gKF9URVhUMik7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgY29uc3QgQ0hBUiAgKl9GaWxlID0gX19GSUxFX187ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIFVMT05HICAgICAgIF9MaW5lID0gX19MSU5FX187ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRXJyb3IoIkJVRzogIiBfVEVYVDEg
IiAlc1xuIiwgX1RleHQyKTsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fQnVnQ2hlY2so
QVNTRVJUSU9OX0ZBSUxVUkUsICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgIChVTE9OR19QVFIpX1RleHQxLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAoVUxPTkdfUFRSKV9GaWxlLCAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKFVMT05HX1BUUilfTGluZSwgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIChVTE9OR19QVFIpX1RleHQy
KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2Rl
ZmluZSBCVUdfT04oX0VYUCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChfRVhQKSBCVUcoI19FWFApCisKKyNkZWZpbmUgQlVHX09OX01TRyhfRVhQLCBfVEVYVCkgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoX0VYUCkgQlVHX01TRygjX0VYUCwgX1RFWFQpCisK
KyNpZiBEQkcKKworI2RlZmluZSBfX05UX0FTU0VSVChfRVhQKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCghKF9FWFApKSA/ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChFcnJvcigiQVNTRVJUSU9O
IEZBSUxFRDogIiAjX0VYUCAiXG4iKSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgX19hbm5v
dGF0aW9uKEwiRGVidWciLCBMIkFzc2VydEZhaWwiLCBMI19FWFApLCAgICAgICAgIFwKKyAgICAg
ICAgIERiZ1JhaXNlQXNzZXJ0aW9uRmFpbHVyZSgpLCBGQUxTRSkgOiAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIFRSVUUpCisKKyNkZWZpbmUgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhU
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoIShfRVhQKSkgPyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoRXJyb3Io
IkFTU0VSVElPTiBGQUlMRUQ6ICIgI19FWFAgIiAiICNfVEVYVCAiXG4iKSwgICAgIFwKKyAgICAg
ICAgIF9fYW5ub3RhdGlvbihMIkRlYnVnIiwgTCJBc3NlcnRGYWlsIiwgTCNfRVhQKSwgICAgICAg
ICBcCisgICAgICAgICBEYmdSYWlzZUFzc2VydGlvbkZhaWx1cmUoKSwgRkFMU0UpIDogICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBUUlVFKQorCisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAg
ICAgICAgICAgICBfX05UX0FTU0VSVChfRVhQKQorI2RlZmluZSBfX0FTU0VSVF9NU0coX0VYUCwg
X1RFWFQpICAgX19OVF9BU1NFUlRfTVNHKF9FWFAsIF9URVhUKQorCisjZWxzZSAgIC8vIERCRwor
CisjZGVmaW5lIF9fQVNTRVJUKF9FWFApICAgICAgICAgICAgICBCVUdfT04oIShfRVhQKSkKKyNk
ZWZpbmUgX19BU1NFUlRfTVNHKF9FWFAsIF9URVhUKSAgIEJVR19PTl9NU0coIShfRVhQKSwgX1RF
WFQpCisKKyNlbmRpZiAgLy8gREJHCisKKyN1bmRlZiAgQVNTRVJUCisKKyNkZWZpbmUgQVNTRVJU
KF9FWFApICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgX19BU1NFUlQoX0VYUCk7ICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIF9fYW5hbHlzaXNfYXNzdW1lKF9FWFApOyAgICBcCisgICAgICAgIH0gd2hp
bGUgKEZBTFNFKQorCisjZGVmaW5lIEFTU0VSVF9NU0coX0VYUCwgX1RFWFQpICAgICAgICAgXAor
ICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9f
QVNTRVJUX01TRyhfRVhQLCBfVEVYVCk7ICBcCisgICAgICAgICAgICBfX2FuYWx5c2lzX2Fzc3Vt
ZShfRVhQKTsgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmluZSBBU1NFUlQz
VShfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBVTE9OR0xP
TkcgICBfTHZhbCA9IChVTE9OR0xPTkcpKF9YKTsgICAgXAorICAgICAgICAgICAgVUxPTkdMT05H
ICAgX1J2YWwgPSAoVUxPTkdMT05HKShfWSk7ICAgIFwKKyAgICAgICAgICAgIGlmICghKF9MdmFs
IF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgRXJyb3IoIiVz
ID0gJWxsdVxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVycm9yKCIlcyA9
ICVsbHVcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NFUlQoX1ggX09Q
IF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkKKworI2RlZmlu
ZSBBU1NFUlQzUyhfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBMT05HTE9ORyAgICBfTHZhbCA9IChMT05HTE9ORykoX1gpOyAgICAgXAorICAgICAgICAgICAg
TE9OR0xPTkcgICAgX1J2YWwgPSAoTE9OR0xPTkcpKF9ZKTsgICAgIFwKKyAgICAgICAgICAgIGlm
ICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
RXJyb3IoIiVzID0gJWxsZFxuIiwgI19YLCBfTHZhbCk7ICAgXAorICAgICAgICAgICAgICAgIEVy
cm9yKCIlcyA9ICVsbGRcbiIsICNfWSwgX1J2YWwpOyAgIFwKKyAgICAgICAgICAgICAgICBBU1NF
UlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChGQUxTRSkK
KworI2RlZmluZSBBU1NFUlQzUChfWCwgX09QLCBfWSkgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBQVk9JRCAgIF9MdmFsID0gKFBWT0lEKShfWCk7ICAgICAgICAgICAgXAorICAg
ICAgICAgICAgUFZPSUQgICBfUnZhbCA9IChQVk9JRCkoX1kpOyAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGlmICghKF9MdmFsIF9PUCBfUnZhbCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgRXJyb3IoIiVzID0gJXBcbiIsICNfWCwgX0x2YWwpOyAgICAgXAorICAgICAgICAg
ICAgICAgIEVycm9yKCIlcyA9ICVwXG4iLCAjX1ksIF9SdmFsKTsgICAgIFwKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoX1ggX09QIF9ZKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxl
IChGQUxTRSkKKworI2RlZmluZSBBU1NFUlRSRUZDT1VOVChfWCwgX09QLCBfWSwgX1opICAgICAg
ICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMT05HICAgIF9MID0gKExPTkcpKF9YKTsgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTE9ORyAgICBfUiA9IChMT05HKShfWSk7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIGlmICghKF9MIF9PUCBfUikpIHsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWCwgX0wpOyBc
CisgICAgICAgICAgICAgICAgRXJyb3IoIiVzOiVzID0gJWRcbiIsIChfWiksICNfWSwgX1IpOyBc
CisgICAgICAgICAgICAgICAgQVNTRVJUX01TRyhfWCBfT1AgX1ksIChfWikpOyAgICAgICAgXAor
ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSB3aGlsZSAoRkFMU0UpCisKKyNpZm5kZWYgVEVTVF9NRU1PUlkKKyNkZWZpbmUgVEVT
VF9NRU1PUlkgREJHCisjZW5kaWYKKworI2lmIFRFU1RfTUVNT1JZCisKK19fY2hlY2tSZXR1cm4K
K3N0YXRpYyBfX2lubGluZSBCT09MRUFOCitfSXNaZXJvTWVtb3J5KAorICAgIF9faW4gY29uc3Qg
UENIQVIgQ2FsbGVyLAorICAgIF9faW4gY29uc3QgUENIQVIgTmFtZSwKKyAgICBfX2luIFBWT0lE
ICAgICAgIEJ1ZmZlciwKKyAgICBfX2luIFVMT05HICAgICAgIExlbmd0aAorICAgICkKK3sKKyAg
ICBVTE9ORyAgICAgICAgICAgT2Zmc2V0OworCisgICAgT2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAo
T2Zmc2V0IDwgTGVuZ3RoKSB7CisgICAgICAgIGlmICgqKChQVUNIQVIpQnVmZmVyICsgT2Zmc2V0
KSAhPSAwKSB7CisgICAgICAgICAgICBFcnJvcigiJXM6IG5vbi16ZXJvIGJ5dGUgaW4gJXMgKDB4
JXArMHgleClcbiIsIENhbGxlciwgTmFtZSwgQnVmZmVyLCBPZmZzZXQpOworICAgICAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIE9mZnNldCsrOworICAgIH0KKworICAg
IHJldHVybiBUUlVFOworfQorCisjZGVmaW5lIElzWmVyb01lbW9yeShfQnVmZmVyLCBfTGVuZ3Ro
KSBcCisgICAgICAgIF9Jc1plcm9NZW1vcnkoX19GVU5DVElPTl9fLCAjX0J1ZmZlciwgKF9CdWZm
ZXIpLCAoX0xlbmd0aCkpCisKKyNlbHNlICAgLy8gVEVTVF9NRU1PUlkKKworI2RlZmluZSBJc1pl
cm9NZW1vcnkoX0J1ZmZlciwgX0xlbmd0aCkgIFRSVUUKKworI2VuZGlmICAvLyBURVNUX01FTU9S
WQorCisjZGVmaW5lIElNUExZKF9YLCBfWSkgICAoIShfWCkgfHwgKF9ZKSkKKyNkZWZpbmUgRVFV
SVYoX1gsIF9ZKSAgIChJTVBMWSgoX1gpLCAoX1kpKSAmJiBJTVBMWSgoX1kpLCAoX1gpKSkKKwor
I2VuZGlmICAvLyBfWEVORElTS19BU1NFUlRfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay9k
ZWJ1Zy5oIGIvc3JjL3hlbmRpc2svZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mNTkyZjg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZGVidWcuaApA
QCAtMCwwICsxLDk0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpZm5kZWYg
X0RFQlVHX0gKKyNkZWZpbmUgX0RFQlVHX0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVk
ZSA8c3RkYXJnLmg+CisKKyNpZmRlZiAgX1NEVl8KKyNkZWZpbmUgX19NT0RVTEVfXyAiIgorI2Vu
ZGlmCisKKy8vIERFQlVHX0ZJTFRFUl9NQVNLcworLy8gU2V0IHRoZXNlIHRvIHNlZSByZWxldmFu
dCBvdXRwdXQKKy8vIEVSUk9SICAgICAgICAweDAwMDAwMDAxCisvLyBXQVJOSU5HICAgICAgMHgw
MDAwMDAwMgorLy8gVFJBQ0UgICAgICAgIDB4MDAwMDAwMDQKKy8vIElORk8gICAgICAgICAweDAw
MDAwMDA4CisKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgLy8gY29uZGl0aW9uYWwg
ZXhwcmVzc2lvbiBpcyBjb25zdGFudAorCisvLworLy8gRGVidWcgT3V0cHV0IGFuZCBMb2dnaW5n
CisvLworc3RhdGljIF9faW5saW5lIFZPSUQKK19fRGVidWdNZXNzYWdlKAorICAgIF9faW4gICAg
VUxPTkcgICAgICAgTGV2ZWwsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIg
ICpQcmVmaXgsCisgICAgX19pbiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IENIQVIgICpGb3JtYXQs
CisgICAgLi4uCisgICAgKQoreworICAgIHZhX2xpc3QgICAgICAgICBBcmd1bWVudHM7CisKKyAg
ICB2YV9zdGFydChBcmd1bWVudHMsIEZvcm1hdCk7CisKKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVz
czo2MDAxKSAvLyBVc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeQorICAgIHZEYmdQcmludEV4V2l0
aFByZWZpeChQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERQRkxUUl9JSFZEUklW
RVJfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cyk7
CisgICAgdmFfZW5kKEFyZ3VtZW50cyk7Cit9CisKKyNkZWZpbmUgRXJyb3IoLi4uKSAgXAorICAg
ICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfRVJST1JfTEVWRUwsIF9fTU9EVUxFX18gInwiIF9f
RlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIFdhcm5pbmcoLi4uKSAgXAor
ICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfV0FSTklOR19MRVZFTCwgX19NT0RVTEVfXyAi
fCIgX19GVU5DVElPTl9fICI6IiwgX19WQV9BUkdTX18pCisKKyNpZiBEQkcKKyNkZWZpbmUgVHJh
Y2UoLi4uKSAgXAorICAgICAgICBfX0RlYnVnTWVzc2FnZShEUEZMVFJfVFJBQ0VfTEVWRUwsIF9f
TU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIsIF9fVkFfQVJHU19fKQorI2Vsc2UgICAvLyBE
QkcKKyNkZWZpbmUgVHJhY2UoLi4uKSBcCisgICAgICAgIChWT0lEKShfX1ZBX0FSR1NfXykKKyNl
bmRpZiAgLy8gREJHCisKKyNkZWZpbmUgVmVyYm9zZSguLi4pIFwKKyAgICAgICAgX19EZWJ1Z01l
c3NhZ2UoRFBGTFRSX0lORk9fTEVWRUwsIF9fTU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAiOiIs
IF9fVkFfQVJHU19fKQorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKKyNlbmRpZiAgLy8gX0RFQlVH
X0gKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5jIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzZmM2MQotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5jCkBAIC0wLDAgKzEsMjAzIEBACisvKiBDb3B5
cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAor
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
CisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAK
KyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAor
ICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgImRy
aXZlci5oIgorI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUg
ImFzc2VydC5oIgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworZXh0ZXJuIFBVTE9ORyAgICAgICBJ
bml0U2FmZUJvb3RNb2RlOworCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19EUklWRVIgeworICAg
IFBEUklWRVJfT0JKRUNUICAgICAgICAgICAgICBEcml2ZXJPYmplY3Q7Cit9IFhFTkRJU0tfRFJJ
VkVSLCAqUFhFTkRJU0tfRFJJVkVSOworCitzdGF0aWMgWEVORElTS19EUklWRVIgICBEcml2ZXI7
CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0RyaXZlclNldERyaXZlck9iamVjdCgKKyAg
ICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVjdAorICAgICkKK3sKKyAgICBEcml2ZXIu
RHJpdmVyT2JqZWN0ID0gRHJpdmVyT2JqZWN0OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUERS
SVZFUl9PQkpFQ1QKK19fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZPSUQKKyAgICApCit7
CisgICAgcmV0dXJuIERyaXZlci5Ecml2ZXJPYmplY3Q7Cit9CisKK1BEUklWRVJfT0JKRUNUCitE
cml2ZXJHZXREcml2ZXJPYmplY3QoCisgICAgVk9JRAorICAgICkKK3sKKyAgICByZXR1cm4gX19E
cml2ZXJHZXREcml2ZXJPYmplY3QoKTsKK30KKworRFJJVkVSX1VOTE9BRCAgIERyaXZlclVubG9h
ZDsKKworVk9JRAorRHJpdmVyVW5sb2FkKAorICAgIElOICBQRFJJVkVSX09CSkVDVCAgRHJpdmVy
T2JqZWN0CisgICAgKQoreworICAgIEFTU0VSVDNQKERyaXZlck9iamVjdCwgPT0sIF9fRHJpdmVy
R2V0RHJpdmVyT2JqZWN0KCkpOworCisgICAgVHJhY2UoIj09PT0+XG4iKTsKKworICAgIF9fRHJp
dmVyU2V0RHJpdmVyT2JqZWN0KE5VTEwpOworCisgICAgQVNTRVJUKElzWmVyb01lbW9yeSgmRHJp
dmVyLCBzaXplb2YgKFhFTkRJU0tfRFJJVkVSKSkpOworCisgICAgVHJhY2UoIjw9PT09XG4iKTsK
K30KKworRFJJVkVSX0FERF9ERVZJQ0UgICBBZGREZXZpY2U7CisKK05UU1RBVFVTCisjcHJhZ21h
IHByZWZhc3Qoc3VwcHJlc3M6MjgxNTIpIC8vIERvZXMgbm90IGNsZWFyIERPX0RFVklDRV9JTklU
SUFMSVpJTkcKK0FkZERldmljZSgKKyAgICBJTiAgUERSSVZFUl9PQkpFQ1QgIERyaXZlck9iamVj
dCwKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAgKQor
eworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1AoRHJpdmVy
T2JqZWN0LCA9PSwgX19Ecml2ZXJHZXREcml2ZXJPYmplY3QoKSk7CisKKyAgICBzdGF0dXMgPSBG
ZG9DcmVhdGUoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwor
CitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworRFJJVkVSX0RJU1BBVENIIERpc3BhdGNoOworCitOVFNUQVRVUyAK
K0Rpc3BhdGNoKAorICAgIElOIFBERVZJQ0VfT0JKRUNUICAgRGV2aWNlT2JqZWN0LAorICAgIElO
IFBJUlAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAg
RHg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBEeCA9IChQWEVORElT
S19EWClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzUChEeC0+RGV2
aWNlT2JqZWN0LCA9PSwgRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3Rh
dGUgPT0gRGVsZXRlZCkgeworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfTk9fU1VDSF9ERVZJQ0U7
CisKKyAgICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKyAgICAgICAgZ290byBkb25lOwor
ICAgIH0KKworICAgIHN0YXR1cyA9IFNUQVRVU19OT1RfU1VQUE9SVEVEOworICAgIHN3aXRjaCAo
RHgtPlR5cGUpIHsKKyAgICBjYXNlIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1Q6IHsKKyAgICAgICAg
UFhFTkRJU0tfUERPICAgIFBkbyA9IER4LT5QZG87CisKKyAgICAgICAgc3RhdHVzID0gUGRvRGlz
cGF0Y2goUGRvLCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGVU5DVElP
Tl9ERVZJQ0VfT0JKRUNUOiB7CisgICAgICAgIFBYRU5ESVNLX0ZETyAgICBGZG8gPSBEeC0+RmRv
OworCisgICAgICAgIHN0YXR1cyA9IEZkb0Rpc3BhdGNoKEZkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitEUklWRVJf
SU5JVElBTElaRSAgIERyaXZlckVudHJ5OworCitOVFNUQVRVUworRHJpdmVyRW50cnkoCisgICAg
SU4gIFBEUklWRVJfT0JKRUNUICBEcml2ZXJPYmplY3QsCisgICAgSU4gIFBVTklDT0RFX1NUUklO
RyBSZWdpc3RyeVBhdGgKKyAgICApCit7CisgICAgVUxPTkcgICAgICAgICAgICAgICBJbmRleDsK
KworICAgIEFTU0VSVDNQKF9fRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksID09LCBOVUxMKTsKKyAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFJlZ2lzdHJ5UGF0aCk7CisKKyAgICBFeEluaXRpYWxp
emVEcml2ZXJSdW50aW1lKERydlJ0UG9vbE54T3B0SW4pOworCisgICAgVHJhY2UoIj09PT0+XG4i
KTsKKworICAgIF9fRHJpdmVyU2V0RHJpdmVyT2JqZWN0KERyaXZlck9iamVjdCk7CisKKyAgICBE
cml2ZXJPYmplY3QtPkRyaXZlclVubG9hZCA9IERyaXZlclVubG9hZDsKKworICAgIGlmICgqSW5p
dFNhZmVCb290TW9kZSA+IDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIlhF
TkRJU0sgJWQuJWQuJWQgKCVkKSAoJTAyZC4lMDJkLiUwNGQpXG4iLAorICAgICAgICAgICAgTUFK
T1JfVkVSU0lPTiwKKyAgICAgICAgICAgIE1JTk9SX1ZFUlNJT04sCisgICAgICAgICAgICBNSUNS
T19WRVJTSU9OLAorICAgICAgICAgICAgQlVJTERfTlVNQkVSLAorICAgICAgICAgICAgREFZLAor
ICAgICAgICAgICAgTU9OVEgsCisgICAgICAgICAgICBZRUFSKTsKKworICAgIERyaXZlck9iamVj
dC0+RHJpdmVyRXh0ZW5zaW9uLT5BZGREZXZpY2UgPSBBZGREZXZpY2U7CisKKyAgICBmb3IgKElu
ZGV4ID0gMDsgSW5kZXggPD0gSVJQX01KX01BWElNVU1fRlVOQ1RJT047IEluZGV4KyspIHsKKyNw
cmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OSkgLy8gTm8gX19kcnZfZGlzcGF0Y2hUeXBlIGFu
bm90YXRpb24KKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODE2OCkgLy8gTm8gbWF0Y2hpbmcg
X19kcnZfZGlzcGF0Y2hUeXBlIGFubm90YXRpb24gZm9yIElSUF9NSl9DUkVBVEUKKyAgICAgICAg
RHJpdmVyT2JqZWN0LT5NYWpvckZ1bmN0aW9uW0luZGV4XSA9IERpc3BhdGNoOworICAgIH0KKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2RyaXZlci5oIGIvc3JjL3hlbmRpc2svZHJpdmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3ZTIxYgotLS0gL2Rldi9u
dWxsCisrKyBiL3NyYy94ZW5kaXNrL2RyaXZlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHly
aWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
CisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAg
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAK
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAor
ICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisg
KiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19EUklWRVJfSAorI2RlZmlu
ZSBfWEVORElTS19EUklWRVJfSAorCisjaW5jbHVkZSAiZmRvLmgiCisjaW5jbHVkZSAicGRvLmgi
CisKK2V4dGVybiBQRFJJVkVSX09CSkVDVAorRHJpdmVyR2V0RHJpdmVyT2JqZWN0KAorICAgIFZP
SUQKKyAgICApOworCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOjQyMDEpIC8vIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogbmFtZWxlc3Mgc3RydWN0
L3VuaW9uCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX0RYIHsKKyAgICBQREVWSUNFX09CSkVD
VCAgICAgIERldmljZU9iamVjdDsKKyAgICBERVZJQ0VfT0JKRUNUX1RZUEUgIFR5cGU7CisKKyAg
ICBERVZJQ0VfUE5QX1NUQVRFICAgIERldmljZVBucFN0YXRlOworICAgIERFVklDRV9QTlBfU1RB
VEUgICAgUHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKKworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtUG93ZXJTdGF0ZTsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVBvd2VyU3Rh
dGU7CisKKyAgICBJT19SRU1PVkVfTE9DSyAgICAgIFJlbW92ZUxvY2s7CisKKyAgICBMSVNUX0VO
VFJZICAgICAgICAgIExpc3RFbnRyeTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgUFhFTkRJU0tf
RkRPICAgIEZkbzsKKyAgICAgICAgUFhFTkRJU0tfUERPICAgIFBkbzsKKyAgICB9OworfSBYRU5E
SVNLX0RYLCAqUFhFTkRJU0tfRFg7CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKyNlbmRpZiAv
LyBfWEVORElTS19EUklWRVJfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svZmRvLmMgYi9zcmMv
eGVuZGlzay9mZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA5Y2E2
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svZmRvLmMKQEAgLTAsMCArMSwxODYzIEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bmFtZXMuaD4KKworI2luY2x1
ZGUgImRyaXZlci5oIgorI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1
ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgIm11dGV4LmgiCisjaW5jbHVkZSAiZGVidWcuaCIKKyNp
bmNsdWRlICJhc3NlcnQuaCIKKyNpbmNsdWRlICJ1dGlsLmgiCisKKyNkZWZpbmUgRkRPX1RBRyAn
T0RGJworCitzdHJ1Y3QgX1hFTkRJU0tfRkRPIHsKKyAgICBQWEVORElTS19EWCAgICAgICAgICAg
ICAgICAgICAgIER4OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJE
ZXZpY2VPYmplY3Q7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgICAgICAgICBQaHlzaWNh
bERldmljZU9iamVjdDsKKworICAgIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICAgICAgICAgU3lz
dGVtUG93ZXJUaHJlYWQ7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0
ZW1Qb3dlcklycDsKKyAgICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgICAgIERldmljZVBv
d2VyVGhyZWFkOworICAgIFBJUlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93
ZXJJcnA7CisKKyAgICBNVVRFWCAgICAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4OworICAg
IFVMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKK307CisKK3N0YXRp
YyBGT1JDRUlOTElORSBQVk9JRAorX19GZG9BbGxvY2F0ZSgKKyAgICBJTiAgVUxPTkcgICBMZW5n
dGgKKyAgICApCit7CisgICAgcmV0dXJuIF9fQWxsb2NhdGVOb25QYWdlZFBvb2xXaXRoVGFnKF9f
RlVOQ1RJT05fXywgX19MSU5FX18sIExlbmd0aCwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBWT0lECitfX0Zkb0ZyZWUoCisgICAgSU4gIFBWT0lEICAgQnVmZmVyCisgICAgKQor
eworICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1ZmZlciwgRkRPX1RBRyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX0Zkb1NldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElT
S19GRE8gICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAg
ICkKK3sKKyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICAv
LyBXZSBjYW4gbmV2ZXIgdHJhbnNpdGlvbiBvdXQgb2YgdGhlIGRlbGV0ZWQgc3RhdGUKKyAgICBB
U1NFUlQoRHgtPkRldmljZVBucFN0YXRlICE9IERlbGV0ZWQgfHwgU3RhdGUgPT0gRGVsZXRlZCk7
CisKKyAgICBEeC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZSA9IER4LT5EZXZpY2VQbnBTdGF0ZTsK
KyAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5F
IFZPSUQKK19fRmRvUmVzdG9yZURldmljZVBucFN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBpZiAoRHgt
PkRldmljZVBucFN0YXRlID09IFN0YXRlKQorICAgICAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBE
eC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIERFVklD
RV9QTlBfU1RBVEUKK19fRmRvR2V0RGV2aWNlUG5wU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBucFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19GZG9TZXREZXZpY2VQb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19GRE8g
ICAgICAgIEZkbywKKyAgICBJTiAgREVWSUNFX1BPV0VSX1NUQVRFICBTdGF0ZQorICAgICkKK3sK
KyAgICBQWEVORElTS19EWCAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+RGV2
aWNlUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BP
V0VSX1NUQVRFCitfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7
CisKKyAgICByZXR1cm4gRHgtPkRldmljZVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX0Zkb1NldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZE
TyAgICAgICAgRmRvLAorICAgIElOICBTWVNURU1fUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQor
eworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgICBEeCA9IEZkby0+RHg7CisKKyAgICBEeC0+
U3lzdGVtUG93ZXJTdGF0ZSA9IFN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgU1lTVEVN
X1BPV0VSX1NUQVRFCitfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IEZkby0+
RHg7CisKKyAgICByZXR1cm4gRHgtPlN5c3RlbVBvd2VyU3RhdGU7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBQREVWSUNFX09CSkVDVAorX19GZG9HZXRQaHlzaWNhbERldmljZU9iamVjdCgKKyAg
ICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbworICAgICkKK3sKKyAgICByZXR1cm4gRmRvLT5QaHlz
aWNhbERldmljZU9iamVjdDsKK30KKworVk9JRAorRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3Qo
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBE
ZXZpY2VPYmplY3QKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKworICAg
IER4ID0gKFBYRU5ESVNLX0RYKURldmljZU9iamVjdC0+RGV2aWNlRXh0ZW5zaW9uOworICAgIEFT
U0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7CisKKyAgICBJbnNl
cnRUYWlsTGlzdCgmRmRvLT5EeC0+TGlzdEVudHJ5LCAmRHgtPkxpc3RFbnRyeSk7CisgICAgQVNT
RVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwgMCk7CisgICAgRmRvLT5SZWZlcmVuY2VzKys7Cit9
CisKK1ZPSUQKK0Zkb1JlbW92ZVBoeXNpY2FsRGV2aWNlT2JqZWN0KAorICAgIElOICBQWEVORElT
S19GRE8gICAgRmRvLAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHg7CisKKyAgICBEeCA9IChQWEVORElTS19E
WClEZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsKKyAgICBBU1NFUlQzVShEeC0+VHlwZSwg
PT0sIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgUmVtb3ZlRW50cnlMaXN0KCZEeC0+
TGlzdEVudHJ5KTsKKyAgICBBU1NFUlQzVShGZG8tPlJlZmVyZW5jZXMsICE9LCAwKTsKKyAgICAt
LUZkby0+UmVmZXJlbmNlczsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRmRvQWNx
dWlyZU11dGV4KAorICAgIElOICBQWEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBB
Y3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworfQorCitWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisg
ICAgSU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKQoreworICAgIF9fRmRvQWNxdWlyZU11
dGV4KEZkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb1JlbGVhc2VNdXRl
eCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApCit7CisgICAgUmVsZWFzZU11
dGV4KCZGZG8tPk11dGV4KTsKK30KKworVk9JRAorRmRvUmVsZWFzZU11dGV4KAorICAgIElOICBQ
WEVORElTS19GRE8gICAgIEZkbworICAgICkKK3sKKyAgICBfX0Zkb1JlbGVhc2VNdXRleChGZG8p
OworCisgICAgaWYgKEZkby0+UmVmZXJlbmNlcyA9PSAwKQorICAgICAgICBGZG9EZXN0cm95KEZk
byk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0Zkb0VudW1lcmF0ZSgKKyAgICBJ
TiAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8sCisgICAgSU4gIFBERVZJQ0VfUkVMQVRJT05TICAg
UmVsYXRpb25zCisgICAgKQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICpQaHlzaWNh
bERldmljZU9iamVjdDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudDsKKyAgICBQ
TElTVF9FTlRSWSAgICAgICAgICAgICBMaXN0RW50cnk7CisgICAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgSW5kZXg7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAg
Q291bnQgPSBSZWxhdGlvbnMtPkNvdW50OworICAgIEFTU0VSVChDb3VudCAhPSAwKTsKKworICAg
IFBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gX19GZG9BbGxvY2F0ZShzaXplb2YgKFBERVZJQ0VfT0JK
RUNUKSAqIENvdW50KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYg
KFBoeXNpY2FsRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBSdGxDb3B5TWVtb3J5KFBoeXNpY2FsRGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAg
UmVsYXRpb25zLT5PYmplY3RzLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChQREVWSUNFX09C
SkVDVCkgKiBDb3VudCk7CisKKyAgICBBY3F1aXJlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAg
Ly8gUmVtb3ZlIGFueSBQRE9zIHRoYXQgZG8gbm90IGFwcGVhciBpbiB0aGUgZGV2aWNlIGxpc3QK
KyAgICBMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7CisgICAgd2hpbGUgKExp
c3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5KSB7CisgICAgICAgIFBMSVNUX0VOVFJZICAg
ICBOZXh0ID0gTGlzdEVudHJ5LT5GbGluazsKKyAgICAgICAgUFhFTkRJU0tfRFggICAgIER4ID0g
Q09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5ESVNLX0RYLCBMaXN0RW50cnkpOworICAg
ICAgICBQWEVORElTS19QRE8gICAgUGRvID0gRHgtPlBkbzsKKyAgICAgICAgQk9PTEVBTiAgICAg
ICAgIE1pc3Npbmc7CisKKyAgICAgICAgTWlzc2luZyA9IFRSVUU7CisgICAgICAgIGZvciAoSW5k
ZXggPSAwOyBJbmRleCA8IENvdW50OyBJbmRleCsrKSB7CisgICAgICAgICAgICBpZiAoUGRvR2V0
UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKSA9PSBQaHlzaWNhbERldmljZU9iamVjdFtJbmRleF0p
IHsKKyAgICAgICAgICAgICAgICBNaXNzaW5nID0gRkFMU0U7CisjcHJhZ21hIHByZWZhc3Qoc3Vw
cHJlc3M6NjM4NykgIC8vIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSBjb3VsZCBiZSBOVUxM
CisgICAgICAgICAgICAgICAgT2JEZXJlZmVyZW5jZU9iamVjdChQaHlzaWNhbERldmljZU9iamVj
dFtJbmRleF0pOworICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSA9
IE5VTEw7IC8vIGF2b2lkIGR1cGxpY2F0aW9uCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTWlzc2luZyAmJiAhUGRvSXNNaXNz
aW5nKFBkbykpIHsKKyAgICAgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09
IFByZXNlbnQpIHsKKyAgICAgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworICAgICAgICAgICAgICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgUGRvU2V0TWlzc2luZyhQZG8sICJkZXZpY2UgZGlzYXBw
ZWFyZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIExpc3RFbnRyeSA9
IE5leHQ7CisgICAgfQorCisgICAgLy8gV2FsayB0aGUgbGlzdCBhbmQgY3JlYXRlIFBETyBmaWx0
ZXJzIGZvciBhbnkgbmV3IGRldmljZXMKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBDb3Vu
dDsgSW5kZXgrKykgeworI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjYzODUpICAvLyBSZWFkaW5n
IGludmFsaWQgZGF0YSBmcm9tICdQaHlzaWNhbERldmljZU9iamVjdCcKKyAgICAgICAgaWYgKFBo
eXNpY2FsRGV2aWNlT2JqZWN0W0luZGV4XSAhPSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkg
UGRvQ3JlYXRlKEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxEZXZp
Y2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoUGh5c2lj
YWxEZXZpY2VPYmplY3RbSW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBSZWxl
YXNlTXV0ZXgoJkZkby0+TXV0ZXgpOworCisgICAgX19GZG9GcmVlKFBoeXNpY2FsRGV2aWNlT2Jq
ZWN0KTsKKyAgICByZXR1cm47CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5F
KQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9Gb3J3YXJkSXJwU3luY2hy
b25vdXNseSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAg
ICApCit7CisgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVudCA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihJcnApOworCisgICAgS2VTZXRFdmVudChFdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBG
QUxTRSk7CisKKyAgICByZXR1cm4gU1RBVFVTX01PUkVfUFJPQ0VTU0lOR19SRVFVSVJFRDsKK30K
Kworc3RhdGljIE5UU1RBVFVTCitGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBLRVZFTlQgICAgICAgICAgICAgIEV2ZW50OworICAgIE5UU1RBVFVTICAgICAgICAg
ICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lW
RV9MRVZFTCk7CisKKyAgICBLZUluaXRpYWxpemVFdmVudCgmRXZlbnQsIE5vdGlmaWNhdGlvbkV2
ZW50LCBGQUxTRSk7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJ
cnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19GZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVj
dCwgSXJwKTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKSB7CisgICAgICAgIChW
T0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
ICAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsKKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQzVShzdGF0dXMsID09LCBJcnAtPklvU3RhdHVzLlN0YXR1cyk7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVT
CitGZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAgICAgICAgIFBv
d2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMg
PSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgc3RhdHVz
ID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICghTlRfU1VD
Q0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19GZG9TZXRTeXN0ZW1Q
b3dlclN0YXRlKEZkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX0Zkb1NldERldmljZVBv
d2VyU3RhdGUoRmRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNlU3Rh
dGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZpY2VP
YmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8s
IFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsK
KworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitm
YWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3RvcFBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9RdWVyeVN0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsK
KyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElO
RSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvQ2FuY2VsU3RvcERldmlj
ZSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAg
ICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7
CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVy
bmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb0NhbmNl
bFN0b3BEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7
CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2Nr
LCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIF9f
RmRvUmVzdG9yZURldmljZVBucFN0YXRlKEZkbywgU3RvcFBlbmRpbmcpOworCisgICAgSW9Db3B5
Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25S
b3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsU3RvcERl
dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIo
RmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2Zh
aWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlS
UUwKK3N0YXRpYyBOVFNUQVRVUworX19GZG9TdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09C
SkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElO
ICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAg
ICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9i
amVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBE
RUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvU3RvcERldmljZSgKKyAgICBJTiAgUFhFTkRJ
U0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQT1dFUl9TVEFURSAgICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5S
ZW1vdmVMb2NrLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgaWYgKF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pICE9IFBv
d2VyRGV2aWNlRDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFBvd2VyU3RhdGUuRGV2aWNl
U3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93ZXJTdGF0ZShGZG8tPkR4LT5EZXZp
Y2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19GZG9TZXREZXZpY2VQb3dlclN0YXRl
KEZkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19GZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbywg
UG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKK2RvbmU6CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0
ZShGZG8sIFN0b3BwZWQpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAg
IElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GZG9TdG9wRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0
YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAg
SW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitf
X2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5UmVtb3ZlRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRvUXVlcnlSZW1v
dmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisK
KyAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJ
cnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOwor
CisgICAgX19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIEly
cC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50
SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUo
SXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9RdWVyeVJlbW92ZURldmljZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5M
b3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgor
ICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0
KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19GZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAgSU4gIFBERVZJQ0Vf
T0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNl
T2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJr
SXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGlj
IERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitGZG9DYW5jZWxSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAg
ICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBJ
b0FjcXVpcmVSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgX19GZG9SZXN0
b3JlRGV2aWNlUG5wU3RhdGUoRmRvLCBSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVz
LlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fRmRvQ2FuY2VsUmVtb3ZlRGV2aWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNl
T2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25D
bGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RB
VFVTCitfX0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmlj
ZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAgICBGZG8gPSBD
b250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisg
ICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKEly
cCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMKK0Zkb1N1cnByaXNlUmVtb3ZhbCgKKyAgICBJTiAgUFhFTkRJU0tfRkRP
ICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxv
Y2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZk
bywgU3VycHJpc2VSZW1vdmVQZW5kaW5nKTsKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNU
QVRVU19TVUNDRVNTOworCisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25Ub05leHQo
SXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRmRvU3VycHJpc2VSZW1vdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKwor
ICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOwor
CisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMg
PSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwor
CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RB
VFVTCitGZG9SZW1vdmVEZXZpY2UoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUE9XRVJfU1RBVEUgICAgICAg
ICBQb3dlclN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlm
IChfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAg
ICBnb3RvIGRvbmU7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VE
MzsKKyAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAg
ICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAgICAgICBQb3dlclN0
YXRlKTsKKworICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8sIFBvd2VyRGV2aWNlRDMp
OworICAgIF9fRmRvU2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8sIFBvd2VyU3lzdGVtU2h1dGRvd24p
OworCitkb25lOgorICAgIF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBEZWxldGVkKTsKKwor
ICAgIElvUmVsZWFzZVJlbW92ZUxvY2tBbmRXYWl0KCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworCisgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOwor
ICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIEFjcXVp
cmVNdXRleCgmRmRvLT5NdXRleCk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSwg
MCk7CisgICAgLS1GZG8tPlJlZmVyZW5jZXM7CisgICAgUmVsZWFzZU11dGV4KCZGZG8tPk11dGV4
KTsKKworICAgIGlmIChGZG8tPlJlZmVyZW5jZXMgPT0gMCkKKyAgICAgICAgRmRvRGVzdHJveShG
ZG8pOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zk
b1F1ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29u
dGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19O
T19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5H
X1JFUVVJUkVEOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK0Zkb1F1
ZXJ5RGV2aWNlUmVsYXRpb25zKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAg
RXZlbnQ7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVMT05H
ICAgICAgICAgICAgICAgU2l6ZTsKKyAgICBQREVWSUNFX1JFTEFUSU9OUyAgIFJlbGF0aW9uczsK
KyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKyAgICBVTE9ORyAgICAgICAgICAg
ICAgIENvdW50OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVz
ID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIEtlSW5p
dGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZpY2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElv
Q29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0
aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zkb1F1ZXJ5RGV2
aWNlUmVsYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElv
Q2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMg
PT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAgICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVj
dCgmRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0
dXMuU3RhdHVzOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIEly
cC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgaWYgKFN0YWNrTG9jYXRpb24tPlBhcmFtZXRl
cnMuUXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPSBCdXNSZWxhdGlvbnMpCisgICAgICAgIGdv
dG8gZG9uZTsKKworICAgIFJlbGF0aW9ucyA9IChQREVWSUNFX1JFTEFUSU9OUylJcnAtPklvU3Rh
dHVzLkluZm9ybWF0aW9uOworCisgICAgaWYgKFJlbGF0aW9ucy0+Q291bnQgIT0gMCkKKyAgICAg
ICAgX19GZG9FbnVtZXJhdGUoRmRvLCBSZWxhdGlvbnMpOworCisgICAgRXhGcmVlUG9vbChSZWxh
dGlvbnMpOworCisgICAgQWNxdWlyZU11dGV4KCZGZG8tPk11dGV4KTsKKworICAgIENvdW50ID0g
MDsKKyAgICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAg
ICAgIExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5
ID0gTGlzdEVudHJ5LT5GbGluaykKKyAgICAgICAgQ291bnQrKzsKKworICAgIFNpemUgPSBGSUVM
RF9PRkZTRVQoREVWSUNFX1JFTEFUSU9OUywgT2JqZWN0cykgKyAoc2l6ZW9mIChERVZJQ0VfT0JK
RUNUKSAqIF9fbWluKENvdW50LCAxKSk7CisKKyAgICBSZWxhdGlvbnMgPSBFeEFsbG9jYXRlUG9v
bFdpdGhUYWcoUGFnZWRQb29sLCBTaXplLCAnVExJRicpOworCisgICAgc3RhdHVzID0gU1RBVFVT
X05PX01FTU9SWTsKKyAgICBpZiAoUmVsYXRpb25zID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFp
bDM7CisKKyAgICBSdGxaZXJvTWVtb3J5KFJlbGF0aW9ucywgU2l6ZSk7CisKKyAgICBmb3IgKExp
c3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAh
PSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5G
bGluaykgeworICAgICAgICBQWEVORElTS19EWCAgICAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChM
aXN0RW50cnksIFhFTkRJU0tfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5ESVNLX1BETyAg
ICBQZG8gPSBEeC0+UGRvOworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSwgUEhZU0lD
QUxfREVWSUNFX09CSkVDVCk7CisKKyAgICAgICAgaWYgKFBkb0dldERldmljZVBucFN0YXRlKFBk
bykgPT0gUHJlc2VudCkKKyAgICAgICAgICAgIFBkb1NldERldmljZVBucFN0YXRlKFBkbywgRW51
bWVyYXRlZCk7CisKKyAgICAgICAgT2JSZWZlcmVuY2VPYmplY3QoUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoUGRvKSk7CisgICAgICAgIFJlbGF0aW9ucy0+T2JqZWN0c1tSZWxhdGlvbnMtPkNv
dW50KytdID0gUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoUGRvKTsKKyAgICB9CisKKyAgICBB
U1NFUlQzVShSZWxhdGlvbnMtPkNvdW50LCA9PSwgQ291bnQpOworCisgICAgVHJhY2UoIiVkIFBE
TyhzKVxuIiwgUmVsYXRpb25zLT5Db3VudCk7CisKKyAgICBSZWxlYXNlTXV0ZXgoJkZkby0+TXV0
ZXgpOworCisgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IChVTE9OR19QVFIpUmVsYXRp
b25zOworICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCitkb25lOgorICAgIElvUmVsZWFz
ZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBSZWxlYXNlTXV0
ZXgoJkZkby0+TXV0ZXgpOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8t
PkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBM
RVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlz
cGF0Y2hQbnAoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0Cisg
ICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRp
bmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxl
YXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworRmRv
RGlzcGF0Y2hQbnAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xv
Y2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAgICAgTWlub3JGdW5jdGlvbjsKKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRp
b24tPk1pbm9yRnVuY3Rpb247CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb24pIHsKKyAgICBjYXNlIElSUF9NTl9TVEFSVF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9
IEZkb1N0YXJ0RGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NTl9RVUVSWV9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gRmRvUXVlcnlTdG9wRGV2
aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9DQU5DRUxf
U1RPUF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IEZkb0NhbmNlbFN0b3BEZXZpY2UoRmRvLCBJ
cnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1NUT1BfREVWSUNFOgorICAg
ICAgICBzdGF0dXMgPSBGZG9TdG9wRGV2aWNlKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIElSUF9NTl9RVUVSWV9SRU1PVkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBG
ZG9RdWVyeVJlbW92ZURldmljZShGZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBJUlBfTU5fU1VSUFJJU0VfUkVNT1ZBTDoKKyAgICAgICAgc3RhdHVzID0gRmRvU3VycHJpc2VS
ZW1vdmFsKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9SRU1P
VkVfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBGZG9SZW1vdmVEZXZpY2UoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX0NBTkNFTF9SRU1PVkVfREVWSUNFOgor
ICAgICAgICBzdGF0dXMgPSBGZG9DYW5jZWxSZW1vdmVEZXZpY2UoRmRvLCBJcnApOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX0RFVklDRV9SRUxBVElPTlM6CisgICAg
ICAgIHN0YXR1cyA9IEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zKEZkbywgSXJwKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVM
b2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Mo
c3RhdHVzKSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVu
dElycFN0YWNrTG9jYXRpb25Ub05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91
dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GZG9EaXNwYXRjaFBu
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1
cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigi
ZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBz
dGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zk
b1NldERldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIl
cDogJXMgLT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAg
ICBQb3dlckRldmljZVN0YXRlTmFtZShfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSksCisg
ICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19GZG9T
ZXREZXZpY2VQb3dlclN0YXRlKEZkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9TZXREZXZpY2VQb3dlckRv
d24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOwor
ICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tM
b2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVy
cy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA+
LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVz
IC0+ICVzXG4iLAorICAgICAgICAgRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93
ZXJEZXZpY2VTdGF0ZU5hbWUoX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpLAorICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsKKworICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJTdGF0ZShGZG8sIERldmljZVN0YXRlKTsKKworICAgIHN0YXR1cyA9IEZkb0Zvcndh
cmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAs
IElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9S
Q0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvU2V0RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X0ZETyAgICBGZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFU
RSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xv
Y2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0
aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAg
ICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFt
ZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikp
OworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8p
KSB7CisgICAgICAgIHN0YXR1cyA9IEZkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJw
KTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBf
X0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSkgPworICAgICAgICAgICAgIF9fRmRvU2V0RGV2
aWNlUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAgICAgIF9fRmRvU2V0RGV2aWNlUG93ZXJE
b3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxu
IiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAg
ICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
U2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1Uo
U3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBz
dGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIFZlcmJvc2UoIiVw
OiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIEZkby0+RHgtPkRldmljZU9iamVjdCwKKyAgICAgICAg
IFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fRmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSwKKyAg
ICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSk7CisKKyAgICBfX0Zkb1Nl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvLCBTeXN0ZW1TdGF0ZSk7CisKK2RvbmU6CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1NldFN5c3RlbVBvd2VyRG93
bigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAg
IElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247Cisg
ICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJz
LlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsID4s
ICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSk7CisKKyAgICBWZXJib3NlKCIlcDogJXMg
LT4gJXNcbiIsCisgICAgICAgICBGZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUoRmRvKSksCisgICAgICAg
ICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSkpOworCisgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclN0YXRlKEZkbywgU3lzdGVtU3RhdGUpOworCisgICAgc3RhdHVzID0gRmRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JD
RUlOTElORSBOVFNUQVRVUworX19GZG9TZXRTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tf
RkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRF
ICBTeXN0ZW1TdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9j
YXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rp
b24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAg
IFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1l
KFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7
CisKKyAgICBpZiAoU3lzdGVtU3RhdGUgPT0gX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykp
IHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnAp
OworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9f
RmRvR2V0U3lzdGVtUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0
ZW1Qb3dlclVwKEZkbywgSXJwKSA6CisgICAgICAgICAgICAgX19GZG9TZXRTeXN0ZW1Qb3dlckRv
d24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRyYWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4i
LAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAg
ICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSwKKyAgICAgICAgICBzdGF0dXMpOworICAg
IHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9R
dWVyeURldmljZVBvd2VyVXAoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBT
dGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNV
KERldmljZVN0YXRlLCA8LCAgX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykpOworCisgICAg
c3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworCisgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1
czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0Zkb1F1ZXJ5RGV2aWNlUG93
ZXJEb3duKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlv
bjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0
YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFt
ZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShEZXZpY2VTdGF0
ZSwgPiwgIF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKTsKKworICAgIHN0YXR1cyA9IEZk
b0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRvUXVlcnlEZXZpY2VQb3dlcigKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BP
V0VSX1NUQVRFICBEZXZpY2VTdGF0ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9
IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisgICAg
UG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlw
ZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMpXG4iLAorICAgICAgICAgIFBvd2VyRGV2aWNl
U3RhdGVOYW1lKERldmljZVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2Vy
QWN0aW9uKSk7CisKKyAgICBpZiAoRGV2aWNlU3RhdGUgPT0gX19GZG9HZXREZXZpY2VQb3dlclN0
YXRlKEZkbykpIHsKKyAgICAgICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHko
RmRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7CisKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN0YXR1cyA9IChEZXZpY2VT
dGF0ZSA8IF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShGZG8pKSA/CisgICAgICAgICAgICAgX19G
ZG9RdWVyeURldmljZVBvd2VyVXAoRmRvLCBJcnApIDoKKyAgICAgICAgICAgICBfX0Zkb1F1ZXJ5
RGV2aWNlUG93ZXJEb3duKEZkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVz
OiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0
ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAg
c3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRT
VEFUVVMKK19fRmRvUXVlcnlTeXN0ZW1Qb3dlclVwKAorICAgIElOICBQWEVORElTS19GRE8gICAg
IEZkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0
ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9j
YXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3Rh
dGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOwor
CisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX0Zkb0dldFN5c3RlbVBvd2VyU3RhdGUo
RmRvKSk7CisKKyAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShGZG8sIEly
cCk7CisKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fRmRv
UXVlcnlTeXN0ZW1Qb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VS
VDNVKFN5c3RlbVN0YXRlLCA+LCAgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpOworCisg
ICAgc3RhdHVzID0gRmRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoRmRvLCBJcnApOworICAgIElv
Q29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19GZG9RdWVyeVN5c3RlbVBv
d2VyKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsK
KyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5c3RlbVN0YXRlOworICAgIFBPV0VSX0FDVElPTiAg
ICAgICAgUG93ZXJBY3Rpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0
ZW1TdGF0ZTsKKyAgICBQb3dlckFjdGlvbiA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU2h1dGRvd25UeXBlOworCisgICAgVHJhY2UoIj09PT0+ICglczolcylcbiIsCisgICAgICAg
ICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pKTsKKworICAgIGlmIChTeXN0ZW1TdGF0ZSA9PSBfX0Zkb0dl
dFN5c3RlbVBvd2VyU3RhdGUoRmRvKSkgeworICAgICAgICBzdGF0dXMgPSBGZG9Gb3J3YXJkSXJw
U3luY2hyb25vdXNseShGZG8sIElycCk7CisgICAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgc3Rh
dHVzID0gKFN5c3RlbVN0YXRlIDwgX19GZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKEZkbykpID8KKyAg
ICAgICAgICAgICBfX0Zkb1F1ZXJ5U3lzdGVtUG93ZXJVcChGZG8sIElycCkgOgorICAgICAgICAg
ICAgIF9fRmRvUXVlcnlTeXN0ZW1Qb3dlckRvd24oRmRvLCBJcnApOworCitkb25lOgorICAgIFRy
YWNlKCI8PT09PSAoJXM6JXMpKCUwOHgpXG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVO
YW1lKFN5c3RlbVN0YXRlKSwgCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9u
KSwKKyAgICAgICAgICBzdGF0dXMpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGlj
IE5UU1RBVFVTCitGZG9EZXZpY2VQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYs
CisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNL
X0ZETyAgICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50
OworCisgICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsK
KyAgICAgICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NB
VElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1
bmN0aW9uOworCisgICAgICAgIGlmIChGZG8tPkRldmljZVBvd2VySXJwID09IE5VTEwpIHsKKyAg
ICAgICAgICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPkRldmljZVBvd2VySXJwOworCisgICAg
ICAgIGlmIChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZk
by0+RGV2aWNlUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKwor
ICAgICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnAp
OworICAgICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsK
KworICAgICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAg
ICAgY2FzZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0RGV2
aWNlUG93ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJ
UlBfTU5fUVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeURldmljZVBv
d2VyKEZkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIE5UU1RB
VFVTCitGZG9TeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYsCisgICAg
SU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAg
ICAgICAgRmRvID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50OworCisg
ICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKworICAgIGZvciAoOzspIHsKKyAgICAg
ICAgUElSUCAgICAgICAgICAgICAgICBJcnA7CisgICAgICAgIFBJT19TVEFDS19MT0NBVElPTiAg
U3RhY2tMb2NhdGlvbjsKKyAgICAgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0aW9u
OworCisgICAgICAgIGlmIChGZG8tPlN5c3RlbVBvd2VySXJwID09IE5VTEwpIHsKKyAgICAgICAg
ICAgIChWT0lEKSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoRXZlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgS2VDbGVhckV2ZW50KEV2ZW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBJcnAgPSBGZG8tPlN5c3RlbVBvd2VySXJwOworCisgICAgICAgIGlm
IChJcnAgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZkby0+U3lz
dGVtUG93ZXJJcnAgPSBOVUxMOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgICAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
ICAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAg
ICAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsKKyAgICAgICAgY2Fz
ZSBJUlBfTU5fU0VUX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fRmRvU2V0U3lzdGVtUG93
ZXIoRmRvLCBJcnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJUlBfTU5f
UVVFUllfUE9XRVI6CisgICAgICAgICAgICAoVk9JRCkgX19GZG9RdWVyeVN5c3RlbVBvd2VyKEZk
bywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZGZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAg
IH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX0Zkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmpl
Y3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gQ29udGV4
dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlm
IChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOwor
CisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBO
VFNUQVRVUworRmRvRGlzcGF0Y2hQb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIFBPV0VSX1NUQVRFX1RZUEUgICAgUG93ZXJUeXBlOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRv
LT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgZ290byBmYWlsMTsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uKElycCk7CisgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICBpZiAoTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fUVVFUllfUE9X
RVIgJiYKKyAgICAgICAgTWlub3JGdW5jdGlvbiAhPSBJUlBfTU5fU0VUX1BPV0VSKSB7CisgICAg
ICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElv
U2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fRmRvRGlzcGF0Y2hQb3dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZG8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUp
OworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihGZG8tPkxvd2VyRGV2aWNlT2JqZWN0
LCBJcnApOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQb3dlclR5cGUgPSBT
dGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCUwMng6JXMpXG4iLAorICAgICAgICAgIE1pbm9yRnVuY3Rpb24sIAorICAgICAgICAgIFBvd2Vy
TWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbikpOyAKKworICAgIHN3aXRjaCAoUG93ZXJU
eXBlKSB7CisgICAgY2FzZSBEZXZpY2VQb3dlclN0YXRlOgorICAgICAgICBJb01hcmtJcnBQZW5k
aW5nKElycCk7CisKKyAgICAgICAgQVNTRVJUM1AoRmRvLT5EZXZpY2VQb3dlcklycCwgPT0sIE5V
TEwpOworICAgICAgICBGZG8tPkRldmljZVBvd2VySXJwID0gSXJwOworICAgICAgICBLZU1lbW9y
eUJhcnJpZXIoKTsKKworICAgICAgICBUaHJlYWRXYWtlKEZkby0+RGV2aWNlUG93ZXJUaHJlYWQp
OworCisgICAgICAgIHN0YXR1cyA9IFNUQVRVU19QRU5ESU5HOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgU3lzdGVtUG93ZXJTdGF0ZToKKyAgICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnAp
OworCisgICAgICAgIEFTU0VSVDNQKEZkby0+U3lzdGVtUG93ZXJJcnAsID09LCBOVUxMKTsKKyAg
ICAgICAgRmRvLT5TeXN0ZW1Qb3dlcklycCA9IElycDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShGZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKworICAg
ICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOwor
ICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0Zkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVHJhY2UoIjw9
PT09ICglMDJ4OiVzKSAoJTA4eClcbiIsCisgICAgICAgICAgTWlub3JGdW5jdGlvbiwgCisgICAg
ICAgICAgUG93ZXJNaW5vckZ1bmN0aW9uTmFtZShNaW5vckZ1bmN0aW9uKSwKKyAgICAgICAgICBz
dGF0dXMpOworCitkb25lOgorICAgIHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9y
KCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisK
KyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJ
T05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fRmRvRGlzcGF0
Y2hEZWZhdWx0KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAor
ICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7CisKKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5k
aW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVs
ZWFzZVJlbW92ZUxvY2soJkZkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUwor
RmRvRGlzcGF0Y2hEZWZhdWx0KAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygmRmRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7
CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0Zkb0Rpc3BhdGNoRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZk
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBz
dGF0dXMgPSBJb0NhbGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAg
IHJldHVybiBzdGF0dXM7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBs
ZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOwor
fQorCitOVFNUQVRVUworRmRvRGlzcGF0Y2goCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8s
CisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xP
Q0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwor
CisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
KworICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgeworICAgIGNhc2Ug
SVJQX01KX1BOUDoKKyAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hQbnAoRmRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01KX1BPV0VSOgorICAgICAgICBzdGF0dXMg
PSBGZG9EaXNwYXRjaFBvd2VyKEZkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaERlZmF1bHQoRmRvLCBJcnApOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRVUwor
RmRvQ3JlYXRlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgUGh5c2ljYWxEZXZpY2VPYmplY3QK
KyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBVTE9ORyAgICAgICAgICAgICAgIERldmljZVR5cGU7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeDsKKyAgICBQ
WEVORElTS19GRE8gICAgICAgIEZkbzsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsK
KworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9HZXRBdHRhY2hlZERldmljZVJlZmVyZW5jZShQ
aHlzaWNhbERldmljZU9iamVjdCk7CisgICAgRGV2aWNlVHlwZSA9IExvd2VyRGV2aWNlT2JqZWN0
LT5EZXZpY2VUeXBlOworICAgIE9iRGVyZWZlcmVuY2VPYmplY3QoTG93ZXJEZXZpY2VPYmplY3Qp
OworCisjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxOTcpIC8vIFBvc3NpYmx5IGxlYWtpbmcg
bWVtb3J5ICdGaWx0ZXJEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9DcmVhdGVEZXZpY2Uo
RHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mIChYRU5ESVNLX0RYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRV9ERVZJQ0VfU0VDVVJFX09QRU4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZpbHRlckRldmljZU9i
amVjdCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBEeCA9IChQWEVORElTS19EWClGaWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZUV4dGVu
c2lvbjsKKyAgICBSdGxaZXJvTWVtb3J5KER4LCBzaXplb2YgKFhFTkRJU0tfRFgpKTsKKworICAg
IER4LT5UeXBlID0gRlVOQ1RJT05fREVWSUNFX09CSkVDVDsKKyAgICBEeC0+RGV2aWNlT2JqZWN0
ID0gRmlsdGVyRGV2aWNlT2JqZWN0OworICAgIER4LT5EZXZpY2VQbnBTdGF0ZSA9IEFkZGVkOwor
ICAgIER4LT5TeXN0ZW1Qb3dlclN0YXRlID0gUG93ZXJTeXN0ZW1TaHV0ZG93bjsKKyAgICBEeC0+
RGV2aWNlUG93ZXJTdGF0ZSA9IFBvd2VyRGV2aWNlRDM7CisKKyAgICBJb0luaXRpYWxpemVSZW1v
dmVMb2NrKCZEeC0+UmVtb3ZlTG9jaywgRkRPX1RBRywgMCwgMCk7CisKKyAgICBGZG8gPSBfX0Zk
b0FsbG9jYXRlKHNpemVvZiAoWEVORElTS19GRE8pKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19O
T19NRU1PUlk7CisgICAgaWYgKEZkbyA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWwyOworCisg
ICAgTG93ZXJEZXZpY2VPYmplY3QgPSBJb0F0dGFjaERldmljZVRvRGV2aWNlU3RhY2soRmlsdGVy
RGV2aWNlT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0KTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19V
TlNVQ0NFU1NGVUw7CisgICAgaWYgKExvd2VyRGV2aWNlT2JqZWN0ID09IE5VTEwpCisgICAgICAg
IGdvdG8gZmFpbDM7CisKKyAgICBGZG8tPkR4ID0gRHg7CisgICAgRmRvLT5QaHlzaWNhbERldmlj
ZU9iamVjdCA9IFBoeXNpY2FsRGV2aWNlT2JqZWN0OworICAgIEZkby0+TG93ZXJEZXZpY2VPYmpl
Y3QgPSBMb3dlckRldmljZU9iamVjdDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShGZG9T
eXN0ZW1Qb3dlciwgRmRvLCAmRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICBzdGF0dXMgPSBUaHJl
YWRDcmVhdGUoRmRvRGV2aWNlUG93ZXIsIEZkbywgJkZkby0+RGV2aWNlUG93ZXJUaHJlYWQpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw1OworCisgICAg
SW5pdGlhbGl6ZU11dGV4KCZGZG8tPk11dGV4KTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkR4
LT5MaXN0RW50cnkpOworICAgIEZkby0+UmVmZXJlbmNlcyA9IDE7CisKKyAgICBWZXJib3NlKCIl
cFxuIiwgRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5GZG8gPSBGZG87CisKKyNwcmFn
bWEgcHJlZmFzdChzdXBwcmVzczoyODE4MikgIC8vIERlcmVmZXJlbmNpbmcgTlVMTCBwb2ludGVy
CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5EZXZpY2VUeXBlID0gTG93ZXJEZXZpY2VPYmplY3Qt
PkRldmljZVR5cGU7CisgICAgRmlsdGVyRGV2aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3MgPSBM
b3dlckRldmljZU9iamVjdC0+Q2hhcmFjdGVyaXN0aWNzOworCisgICAgRmlsdGVyRGV2aWNlT2Jq
ZWN0LT5GbGFncyB8PSBMb3dlckRldmljZU9iamVjdC0+RmxhZ3M7CisgICAgRmlsdGVyRGV2aWNl
T2JqZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJQUxJWklORzsKKworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKworICAgIFRo
cmVhZEFsZXJ0KEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5T
eXN0ZW1Qb3dlclRocmVhZCk7CisgICAgRmRvLT5TeXN0ZW1Qb3dlclRocmVhZCA9IE5VTEw7CisK
K2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAgICBGZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBGZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBG
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKworICAgIEFTU0VSVChJc1plcm9NZW1v
cnkoRmRvLCBzaXplb2YgKFhFTkRJU0tfRkRPKSkpOworICAgIF9fRmRvRnJlZShGZG8pOworCitm
YWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVy
RGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZPSUQKK0Zkb0Rlc3Ryb3koCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBMb3dlckRldmljZU9iamVjdCA9IEZkby0+TG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICBEeCA9IEZkby0+RHg7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBGaWx0
ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0OworCisgICAgQVNTRVJUKElzTGlzdEVt
cHR5KCZEeC0+TGlzdEVudHJ5KSk7CisgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCA9PSwg
MCk7CisgICAgQVNTRVJUM1UoX19GZG9HZXREZXZpY2VQbnBTdGF0ZShGZG8pLCA9PSwgRGVsZXRl
ZCk7CisKKyAgICBEeC0+RmRvID0gTlVMTDsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+TXV0
ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIFRocmVhZEFsZXJ0KEZkby0+RGV2aWNlUG93ZXJU
aHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgRmRv
LT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisKKyAgICBUaHJlYWRBbGVydChGZG8tPlN5c3Rl
bVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2luKEZkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIEZkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBOVUxMOworCisgICAgRmRvLT5Mb3dlckRldmlj
ZU9iamVjdCA9IE5VTEw7CisgICAgRmRvLT5QaHlzaWNhbERldmljZU9iamVjdCA9IE5VTEw7Cisg
ICAgRmRvLT5EeCA9IE5VTEw7CisKKyAgICBJb0RldGFjaERldmljZShMb3dlckRldmljZU9iamVj
dCk7CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEZkbywgc2l6ZW9mIChYRU5ESVNLX0ZETykp
KTsKKyAgICBfX0Zkb0ZyZWUoRmRvKTsKKworICAgIElvRGVsZXRlRGV2aWNlKEZpbHRlckRldmlj
ZU9iamVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy94ZW5kaXNrL2Zkby5oIGIvc3JjL3hlbmRp
c2svZmRvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMDUyOQotLS0g
L2Rldi9udWxsCisrKyBiL3NyYy94ZW5kaXNrL2Zkby5oCkBAIC0wLDAgKzEsNzggQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLyAKKworI2lmbmRlZiBfWEVORElTS19GRE9fSAorI2RlZmlu
ZSBfWEVORElTS19GRE9fSAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlICJ0eXBlcy5o
IgorCit0eXBlZGVmIHN0cnVjdCBfWEVORElTS19GRE8gWEVORElTS19GRE8sICpQWEVORElTS19G
RE87CisKK2V4dGVybiBWT0lECitGZG9BZGRQaHlzaWNhbERldmljZU9iamVjdCgKKyAgICBJTiAg
UFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9SZW1vdmVQaHlzaWNhbERldmljZU9iamVjdCgK
KyAgICBJTiAgUFhFTkRJU0tfRkRPICAgIEZkbywKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERl
dmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitGZG9BY3F1aXJlTXV0ZXgoCisgICAg
SU4gIFBYRU5ESVNLX0ZETyAgICAgRmRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK0Zkb1JlbGVh
c2VNdXRleCgKKyAgICBJTiAgUFhFTkRJU0tfRkRPICAgICBGZG8KKyAgICApOworCitleHRlcm4g
TlRTVEFUVVMKK0Zkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElTS19GRE8gICAgRmRvLAorICAg
IElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVTCitGZG9D
cmVhdGUoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAg
ICk7CisKK2V4dGVybiBWT0lECitGZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19GRE8gICAg
RmRvCisgICAgKTsKKworI2VuZGlmIC8vIF9YRU5ESVNLX0ZET19ICmRpZmYgLS1naXQgYS9zcmMv
eGVuZGlzay9tdXRleC5oIGIvc3JjL3hlbmRpc2svbXV0ZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iY2MyNDE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2sv
bXV0ZXguaApAQCAtMCwwICsxLDExMyBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVt
cyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Igd2l0aG91dCBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgX1hFTkRJU0tfTVVURVhfSAorI2RlZmluZSBfWEVORElTS19NVVRFWF9ICisKKyNp
bmNsdWRlIDxudGRkay5oPgorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKK3R5cGVkZWYgc3RydWN0
IF9NVVRFWCB7CisgICAgUEtUSFJFQUQgICAgT3duZXI7CisgICAgS0VWRU5UICAgICAgRXZlbnQ7
Cit9IE1VVEVYLCAqUE1VVEVYOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorSW5pdGlhbGl6
ZU11dGV4KAorICAgIElOICBQTVVURVggIE11dGV4CisgICAgKQoreworICAgIFJ0bFplcm9NZW1v
cnkoTXV0ZXgsIHNpemVvZiAoTVVURVgpKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZNdXRl
eC0+RXZlbnQsIFN5bmNocm9uaXphdGlvbkV2ZW50LCBUUlVFKTsKK30KKworc3RhdGljIEZPUkNF
SU5MSU5FIEJPT0xFQU4KK19fZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1RyeUFjcXVpcmVN
dXRleCgKKyAgICBJTiAgUE1VVEVYICAgICAgTXV0ZXgKKyAgICApCit7CisgICAgTEFSR0VfSU5U
RUdFUiAgIFRpbWVvdXQ7CisgICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKKworICAgIFRpbWVv
dXQuUXVhZFBhcnQgPSAwOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZN
dXRleC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZUaW1lb3V0KTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19USU1F
T1VUKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0
dXMpKTsKKworICAgIEFTU0VSVDNQKE11dGV4LT5Pd25lciwgPT0sIE5VTEwpOworICAgIE11dGV4
LT5Pd25lciA9IEtlR2V0Q3VycmVudFRocmVhZCgpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisK
K3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX2Rydl9tYXhJUlFMKFBBU1NJVkVfTEVWRUwpCitB
Y3F1aXJlTXV0ZXgoCisgICAgSU4gIFBNVVRFWCAgTXV0ZXgKKyAgICApCit7CisgICAgTlRTVEFU
VVMgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZNdXRl
eC0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworCisgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisK
KyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBOVUxMKTsKKyAgICBNdXRleC0+T3duZXIg
PSBLZUdldEN1cnJlbnRUaHJlYWQoKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19f
ZHJ2X21heElSUUwoUEFTU0lWRV9MRVZFTCkKK1JlbGVhc2VNdXRleCgKKyAgICBJTiAgUE1VVEVY
ICBNdXRleAorICAgICkKK3sKKyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09LCBLZUdldEN1
cnJlbnRUaHJlYWQoKSk7CisgICAgTXV0ZXgtPk93bmVyID0gTlVMTDsKKworICAgIEtlU2V0RXZl
bnQoJk11dGV4LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7Cit9CisKKyNlbmRpZiAg
Ly8gX1hFTkRJU0tfTVVURVhfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmMgYi9zcmMv
eGVuZGlzay9wZG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE1YTFl
Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmMKQEAgLTAsMCArMSwyMTI2IEBA
CisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8gCisKKyNkZWZpbmUgSU5JVEdVSUQgMQorCisj
aW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDx3ZG1ndWlkLmg+CisjaW5jbHVkZSA8bnRzdHJz
YWZlLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RvcnBvcnQuaD4KKyNpbmNs
dWRlIDxOdGRkc3Rvci5oPgorI2luY2x1ZGUgPE50ZGRzY3NpLmg+CisjaW5jbHVkZSA8bmFtZXMu
aD4KKworI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgorI2luY2x1ZGUgImRyaXZl
ci5oIgorI2luY2x1ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAi
YXNzZXJ0LmgiCisjaW5jbHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFBET19UQUcgJ09EUCcKKwor
c3RydWN0IF9YRU5ESVNLX1BETyB7CisgICAgUFhFTkRJU0tfRFggICAgICAgICAgICAgICAgIER4
OworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICBMb3dlckRldmljZU9iamVjdDsKKyAg
ICBQREVWSUNFX09CSkVDVCAgICAgICAgICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3Q7CisKKyAg
ICBQWEVORElTS19USFJFQUQgICAgICAgICAgICAgU3lzdGVtUG93ZXJUaHJlYWQ7CisgICAgUElS
UCAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVBvd2VySXJwOworICAgIFBYRU5ESVNLX1RI
UkVBRCAgICAgICAgICAgICBEZXZpY2VQb3dlclRocmVhZDsKKyAgICBQSVJQICAgICAgICAgICAg
ICAgICAgICAgICAgRGV2aWNlUG93ZXJJcnA7CisKKyAgICBQWEVORElTS19GRE8gICAgICAgICAg
ICAgICAgRmRvOworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBNaXNzaW5nOworICAg
IGNvbnN0IENIQVIgICAgICAgICAgICAgICAgICAqUmVhc29uOworCisgICAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgICAgIFNlY3RvclNpemU7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZP
SUQKK19fUGRvQWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAg
IHJldHVybiBfX0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCBMZW5ndGgsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Q
ZG9GcmVlKAorICAgIElOICBQVk9JRCAgIEJ1ZmZlcgorICAgICkKK3sKKyAgICBfX0ZyZWVQb29s
V2l0aFRhZyhCdWZmZXIsIFBET19UQUcpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAor
X19QZG9TZXREZXZpY2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8s
CisgICAgSU4gIERFVklDRV9QTlBfU1RBVEUgICAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJ
U0tfRFggICAgICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgLy8gV2UgY2FuIG5ldmVyIHRy
YW5zaXRpb24gb3V0IG9mIHRoZSBkZWxldGVkIHN0YXRlCisgICAgQVNTRVJUKER4LT5EZXZpY2VQ
bnBTdGF0ZSAhPSBEZWxldGVkIHx8IFN0YXRlID09IERlbGV0ZWQpOworCisgICAgRHgtPlByZXZp
b3VzRGV2aWNlUG5wU3RhdGUgPSBEeC0+RGV2aWNlUG5wU3RhdGU7CisgICAgRHgtPkRldmljZVBu
cFN0YXRlID0gU3RhdGU7Cit9CisKK1ZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAorICAgIElO
ICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBT
dGF0ZQorICAgICkKK3sKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgU3RhdGUpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9SZXN0b3JlRGV2aWNlUG5wU3RhdGUo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBERVZJQ0VfUE5QX1NU
QVRFICAgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAgICAgICAgIER4ID0g
UGRvLT5EeDsKKworICAgIGlmIChEeC0+RGV2aWNlUG5wU3RhdGUgPT0gU3RhdGUpCisgICAgICAg
IER4LT5EZXZpY2VQbnBTdGF0ZSA9IER4LT5QcmV2aW91c0RldmljZVBucFN0YXRlOworfQorCitz
dGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BOUF9TVEFURQorX19QZG9HZXREZXZpY2VQbnBTdGF0
ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICBQWEVORElTS19E
WCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2aWNlUG5wU3RhdGU7
Cit9CisKK0RFVklDRV9QTlBfU1RBVEUKK1Bkb0dldERldmljZVBucFN0YXRlKAorICAgIElOICBQ
WEVORElTS19QRE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBfX1Bkb0dldERldmljZVBu
cFN0YXRlKFBkbyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1Bkb1NldERldmlj
ZVBvd2VyU3RhdGUoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICAgICAgUGRvLAorICAgIElOICBE
RVZJQ0VfUE9XRVJfU1RBVEUgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5ESVNLX0RYICAgICAg
ICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIER4LT5EZXZpY2VQb3dlclN0YXRlID0gU3RhdGU7
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBERVZJQ0VfUE9XRVJfU1RBVEUKK19fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAg
ICBQWEVORElTS19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2
aWNlUG93ZXJTdGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUGRvU2V0U3lz
dGVtUG93ZXJTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICAgICBQZG8sCisgICAgSU4g
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkRJU0tfRFggICAg
ICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgRHgtPlN5c3RlbVBvd2VyU3RhdGUgPSBTdGF0
ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFNZU1RFTV9QT1dFUl9TVEFURQorX19QZG9HZXRT
eXN0ZW1Qb3dlclN0YXRlKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKQorewor
ICAgIFBYRU5ESVNLX0RYICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgcmV0dXJuIER4LT5T
eXN0ZW1Qb3dlclN0YXRlOworfQorCitQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZp
Y2VPYmplY3QoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgcmV0
dXJuIFBkby0+UGh5c2ljYWxEZXZpY2VPYmplY3Q7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBW
T0lECitfX1Bkb1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIGNvbnN0IENIQVIgICAgICAqUmVhc29uCisgICAgKQoreworICAgIFBkby0+UmVhc29uID0g
UmVhc29uOworICAgIFBkby0+TWlzc2luZyA9IFRSVUU7Cit9CisKK1ZPSUQKK1Bkb1NldE1pc3Np
bmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0IENIQVIgICAg
ICAqUmVhc29uCisgICAgKQoreworICAgIF9fUGRvU2V0TWlzc2luZyhQZG8sIFJlYXNvbik7Cit9
CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitfX1Bkb0lzTWlzc2luZygKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gUGRvLT5NaXNzaW5nOwor
fQorCitCT09MRUFOCitQZG9Jc01pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8K
KyAgICApCit7CisgICAgcmV0dXJuIF9fUGRvSXNNaXNzaW5nKFBkbyk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX1Bkb0xpbmsoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8s
CisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgUGRvLT5GZG8gPSBG
ZG87CisgICAgRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvLCBQZG8tPkR4LT5EZXZpY2VP
YmplY3QpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9VbmxpbmsoCisgICAg
SU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7CisgICAgUFhFTkRJU0tfRkRPICAgICAg
ICBGZG8gPSBQZG8tPkZkbzsKKworICAgIEFTU0VSVChGZG8gIT0gTlVMTCk7CisKKyAgICBGZG9S
ZW1vdmVQaHlzaWNhbERldmljZU9iamVjdChGZG8sIFBkby0+RHgtPkRldmljZU9iamVjdCk7CisK
KyAgICBQZG8tPkZkbyA9IE5VTEw7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQWEVORElTS19G
RE8KK19fUGRvR2V0RmRvKAorICAgIElOICBQWEVORElTS19QRE8gUGRvCisgICAgKQoreworICAg
IHJldHVybiBQZG8tPkZkbzsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9O
X1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAor
ICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29u
dGV4dAorICAgICkKK3sKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29udGV4dDsK
KworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKElycCk7CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19OT19JTkNS
RU1FTlQsIEZBTFNFKTsKKworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJ
UkVEOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KAor
ICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJw
CisgICAgKQoreworICAgIEtFVkVOVCAgICAgICAgICAgICAgRXZlbnQ7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
LCBQQVNTSVZFX0xFVkVMKTsKKworICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZp
Y2F0aW9uRXZlbnQsIEZBTFNFKTsKKworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9u
VG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2VyRGV2
aWNlT2JqZWN0LCBJcnApOworICAgIGlmIChzdGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcpIHsKKyAg
ICAgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdCgmRXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOworICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0sIElycC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NP
TVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRv
Rm9yd2FyZElycEFuZEZvcmdldCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVj
dCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAg
IENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0
OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAgaWYg
KElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7CisK
KyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb0Zvcndh
cmRJcnBBbmRGb3JnZXQoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9j
YXRpb25Ub05leHQoSXJwKTsKKyAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb0ZvcndhcmRJcnBBbmRGb3JnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHJldHVybiBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRl
dmljZU9iamVjdCwgSXJwKTsKK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9Db21wbGV0ZUlycCgK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIEly
cCwKKyAgICBJTiAgTlRTVEFUVVMgICAgICAgIFN0YXR1cworICAgICkKK3sKKyAgICBJcnAtPklv
U3RhdHVzLlN0YXR1cyA9IFN0YXR1czsKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4
LT5SZW1vdmVMb2NrLCBJcnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5D
UkVNRU5UKTsKKyAgICByZXR1cm4gU3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElP
X0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19f
UGRvUXVlcnlQcm9wZXJ0eSgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9iamVjdCwK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENv
bnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250ZXh0Owor
ICAgIFBTVE9SQUdFX0FDQ0VTU19BTElHTk1FTlRfREVTQ1JJUFRPUiAgICBEZXNjcmlwdG9yID0g
SXJwLT5Vc2VyQnVmZmVyOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBpZiAoIU5UX1NVQ0NFU1MoSXJwLT5Jb1N0YXR1cy5TdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBEZXNjcmlwdG9yID0gSXJwLT5Vc2VyQnVmZmVy
OworICAgIFBkby0+U2VjdG9yU2l6ZSA9IERlc2NyaXB0b3ItPkJ5dGVzUGVyTG9naWNhbFNlY3Rv
cjsKKyAgICBWZXJib3NlKCIlcCA6ICV1IGJ5dGVzIHBlciBzZWN0b3JcbiIsIFBkby0+RHgtPkRl
dmljZU9iamVjdCwgUGRvLT5TZWN0b3JTaXplKTsKKworZG9uZToKKyAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19T
VUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5
UHJvcGVydHkoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUFNUT1JBR0VfUFJPUEVSVFlfUVVFUlkgUXVlcnk7
CisgICAgUERFVklDRV9UUklNX0RFU0NSSVBUT1IgVHJpbTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBRdWVyeSA9IElycC0+QXNzb2NpYXRlZElycC5TeXN0ZW1C
dWZmZXI7CisKKyAgICBzd2l0Y2ggKFF1ZXJ5LT5Qcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBTdG9y
YWdlQWNjZXNzQWxpZ25tZW50UHJvcGVydHk6CisgICAgICAgIElvQ29weUN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UHJvcGVydHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBTdG9yYWdlRGV2aWNlVHJpbVByb3BlcnR5OgorICAgICAgICBUcmlt
ID0gSXJwLT5Bc3NvY2lhdGVkSXJwLlN5c3RlbUJ1ZmZlcjsKKworICAgICAgICBUcmltLT5WZXJz
aW9uID0gMDsKKyAgICAgICAgVHJpbS0+U2l6ZSA9IHNpemVvZihERVZJQ0VfVFJJTV9ERVNDUklQ
VE9SKTsKKyAgICAgICAgVHJpbS0+VHJpbUVuYWJsZWQgPSBUUlVFOworCisgICAgICAgIElycC0+
SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAoVUxPTkdfUFRSKXNpemVvZihERVZJQ0VfVFJJTV9ERVND
UklQVE9SKTsKKyAgICAgICAgc3RhdHVzID0gUGRvQ29tcGxldGVJcnAoUGRvLCBJcnAsIFNUQVRV
U19TVUNDRVNTKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0
dXMgPSBQZG9Gb3J3YXJkSXJwQW5kRm9yZ2V0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19D
T01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX1Bk
b1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBWT0lE
ICAgICAgICAgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgVU5SRUZFUkVOQ0VEX1BB
UkFNRVRFUihEZXZpY2VPYmplY3QpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4
dCk7CisKKyAgICAqKElycC0+VXNlcklvc2IpID0gSXJwLT5Jb1N0YXR1czsKKworICAgIGlmIChJ
cnAtPk1kbEFkZHJlc3MpIHsKKyAgICAgICAgTW1VbmxvY2tQYWdlcyhJcnAtPk1kbEFkZHJlc3Mp
OworICAgICAgICBJb0ZyZWVNZGwoSXJwLT5NZGxBZGRyZXNzKTsKKyAgICB9CisKKyAgICBLZVNl
dEV2ZW50KElycC0+VXNlckV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIElv
RnJlZUlycChJcnApOworICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVE
OworfQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb1NlbmRBd2FpdFNyYigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgICAgICAgICAgUGRvLAorICAgIElOICBQU0NTSV9SRVFVRVNUX0JMT0NLICAgICBT
cmIKKyAgICApCit7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIElycDsKKyAgICBJ
T19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgSW9TdGF0dXM7CisgICAgS0VWRU5UICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50OworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgICAgICBTdGFj
azsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgS2VJbml0
aWFsaXplRXZlbnQoJkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOworCisgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBJcnAgPSBJb0FsbG9jYXRlSXJwKChDQ0hBUiko
UGRvLT5Mb3dlckRldmljZU9iamVjdC0+U3RhY2tTaXplICsgMSksIEZBTFNFKTsKKyAgICBpZiAo
SXJwID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFjayA9IElvR2V0TmV4
dElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTdGFjay0+TWFqb3JGdW5jdGlvbiA9IElSUF9N
Sl9TQ1NJOworICAgIFN0YWNrLT5QYXJhbWV0ZXJzLlNjc2kuU3JiID0gU3JiOworCisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19Q
ZG9TZW5kQXdhaXRTcmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICBJcnAtPlVzZXJJ
b3NiID0gJklvU3RhdHVzOworICAgIElycC0+VXNlckV2ZW50ID0gJkV2ZW50OworCisgICAgSXJw
LT5NZGxBZGRyZXNzID0gSW9BbGxvY2F0ZU1kbChTcmItPkRhdGFCdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTcmItPkRhdGFUcmFuc2Zlckxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJcnApOworICAgIGlmIChJcnAtPk1kbEFkZHJlc3MgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMyMCkKKyAgICB0cnkgeworICAg
ICAgICBNbVByb2JlQW5kTG9ja1BhZ2VzKElycC0+TWRsQWRkcmVzcywgS2VybmVsTW9kZSwgSW9S
ZWFkQWNjZXNzKTsKKyAgICB9IGV4Y2VwdCAoRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikgewor
ICAgICAgICBzdGF0dXMgPSBHZXRFeGNlcHRpb25Db2RlKCk7CisKKyAgICAgICAgZ290byBmYWls
MzsKKyAgICB9CisjcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDo2MzIwKQorICAgIAorICAgIFNyYi0+
T3JpZ2luYWxSZXF1ZXN0ID0gSXJwOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+
TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgaWYgKHN0YXR1cyA9PSBTVEFUVVNfUEVORElO
RykgeworICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZFdmVudCwgRXhlY3V0
aXZlLCBLZXJuZWxNb2RlLCBGQUxTRSwgTlVMTCk7CisgICAgICAgIHN0YXR1cyA9IElvU3RhdHVz
LlN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBFcnJv
cigiZmFpbDNcbiIpOworCisgICAgSW9GcmVlTWRsKElycC0+TWRsQWRkcmVzcyk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBJb0ZyZWVJcnAoSXJwKTsKKworZmFpbDE6
CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1NldDhCeXRlcygKKyAgICBJTiAg
UFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisgICAgSU4gIFVMT05HTE9ORyAgICAgICAg
ICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVzWzBdID0gKFVDSEFSKShWYWx1ZSA+PiA1
Nik7CisgICAgQnl0ZXNbMV0gPSAoVUNIQVIpKFZhbHVlID4+IDQ4KTsKKyAgICBCeXRlc1syXSA9
IChVQ0hBUikoVmFsdWUgPj4gNDApOworICAgIEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSA+PiAz
Mik7CisgICAgQnl0ZXNbNF0gPSAoVUNIQVIpKFZhbHVlID4+IDI0KTsKKyAgICBCeXRlc1s1XSA9
IChVQ0hBUikoVmFsdWUgPj4gMTYpOworICAgIEJ5dGVzWzZdID0gKFVDSEFSKShWYWx1ZSA+PiA4
KTsKKyAgICBCeXRlc1s3XSA9IChVQ0hBUikoVmFsdWUpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgVk9JRAorX19TZXQ0Qnl0ZXMoCisgICAgSU4gIFBVQ0hBUiAgICAgICAgICAgICAgICAgIEJ5
dGVzLAorICAgIElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBWYWx1ZQorICAgICkKK3sKKyAg
ICBCeXRlc1swXSA9IChVQ0hBUikoVmFsdWUgPj4gMjQpOworICAgIEJ5dGVzWzFdID0gKFVDSEFS
KShWYWx1ZSA+PiAxNik7CisgICAgQnl0ZXNbMl0gPSAoVUNIQVIpKFZhbHVlID4+IDgpOworICAg
IEJ5dGVzWzNdID0gKFVDSEFSKShWYWx1ZSk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1NldDJCeXRlcygKKyAgICBJTiAgUFVDSEFSICAgICAgICAgICAgICAgICAgQnl0ZXMsCisg
ICAgSU4gIFVTSE9SVCAgICAgICAgICAgICAgICAgIFZhbHVlCisgICAgKQoreworICAgIEJ5dGVz
WzBdID0gKFVDSEFSKShWYWx1ZSA8PCA4KTsKKyAgICBCeXRlc1sxXSA9IChVQ0hBUikoVmFsdWUp
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19TZXRVbm1hcCgKKyAgICBJTiAgUFVO
TUFQX0xJU1RfSEVBREVSICAgICAgVW5tYXAsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAg
ICAgIExlbmd0aCwKKyAgICBJTiAgUERFVklDRV9EQVRBX1NFVF9SQU5HRSAgUmFuZ2VzLAorICAg
IElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBDb3VudCwKKyAgICBJTiAgVUxPTkcgICAgICAg
ICAgICAgICAgICAgU2VjdG9yU2l6ZQorICAgICkKK3sKKyAgICBVTE9ORyAgICAgICBJbmRleDsK
KworICAgIF9fU2V0MkJ5dGVzKFVubWFwLT5EYXRhTGVuZ3RoLCAoVVNIT1JUKUxlbmd0aCk7Cisg
ICAgX19TZXQyQnl0ZXMoVW5tYXAtPkJsb2NrRGVzY3JEYXRhTGVuZ3RoLCAoVVNIT1JUKXNpemVv
ZihVTk1BUF9CTE9DS19ERVNDUklQVE9SKSk7CisKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg
PCBDb3VudDsgKytJbmRleCkgeworICAgICAgICBUcmFjZSgiVFJJTVsleF0gJXggQCAlbGx4XG4i
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgKFVMT05HKShSYW5nZXNbSW5kZXhdLkxlbmd0aEluQnl0ZXMgLyBTZWN0b3JTaXplKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIChVTE9ORzY0KShSYW5nZXNbSW5kZXhdLlN0YXJ0aW5nT2Zm
c2V0IC8gU2VjdG9yU2l6ZSkpOworCisgICAgICAgIF9fU2V0OEJ5dGVzKFVubWFwLT5EZXNjcmlw
dG9yc1tJbmRleF0uU3RhcnRpbmdMYmEsCisgICAgICAgICAgICAgICAgICAgICAgICAoVUxPTkc2
NCkoUmFuZ2VzW0luZGV4XS5TdGFydGluZ09mZnNldCAvIFNlY3RvclNpemUpKTsKKyAgICAgICAg
X19TZXQ0Qnl0ZXMoVW5tYXAtPkRlc2NyaXB0b3JzW0luZGV4XS5MYmFDb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChVTE9ORykoUmFuZ2VzW0luZGV4XS5MZW5ndGhJbkJ5dGVzIC8gU2Vj
dG9yU2l6ZSkpOworICAgIH0KK30KKworc3RhdGljIE5UU1RBVFVTCitQZG9TZW5kVHJpbVN5bmNo
cm9ub3VzKAorICAgIElOICBQWEVORElTS19QRE8gICAgICAgICAgICBQZG8sCisgICAgSU4gIFBE
RVZJQ0VfREFUQV9TRVRfUkFOR0UgIFJhbmdlcywKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAg
ICAgICAgQ291bnQKKyAgICApCit7CisgICAgU0NTSV9SRVFVRVNUX0JMT0NLICAgICAgICAgIFNy
YjsKKyAgICBQQ0RCICAgICAgICAgICAgICAgICAgICAgICAgQ2RiOworICAgIFBVTk1BUF9MSVNU
X0hFQURFUiAgICAgICAgICBVbm1hcDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoOworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBM
ZW5ndGggPSBzaXplb2YoVU5NQVBfTElTVF9IRUFERVIpICsgQ291bnQgKiBzaXplb2YoVU5NQVBf
QkxPQ0tfREVTQ1JJUFRPUik7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAg
IFVubWFwID0gX19QZG9BbGxvY2F0ZShMZW5ndGgpOworICAgIGlmIChVbm1hcCA9PSBOVUxMKQor
ICAgICAgICBnb3RvIGZhaWwxOworCisgICAgUnRsWmVyb01lbW9yeSgmU3JiLCBzaXplb2YoU0NT
SV9SRVFVRVNUX0JMT0NLKSk7CisgICAgU3JiLkxlbmd0aCA9IHNpemVvZihTQ1NJX1JFUVVFU1Rf
QkxPQ0spOworICAgIFNyYi5TcmJGbGFncyA9IFNSQl9GTEFHU19CWVBBU1NfRlJPWkVOX1FVRVVF
IHwgU1JCX0ZMQUdTX05PX1FVRVVFX0ZSRUVaRTsKKyAgICBTcmIuRnVuY3Rpb24gPSBTUkJfRlVO
Q1RJT05fRVhFQ1VURV9TQ1NJOworICAgIFNyYi5EYXRhQnVmZmVyID0gVW5tYXA7CisgICAgU3Ji
LkRhdGFUcmFuc2Zlckxlbmd0aCA9IExlbmd0aDsKKyAgICBTcmIuVGltZU91dFZhbHVlID0gKFVM
T05HKS0xOworICAgIFNyYi5DZGJMZW5ndGggPSAxMDsKKworICAgIENkYiA9IChQQ0RCKSZTcmIu
Q2RiWzBdOworICAgIENkYi0+VU5NQVAuT3BlcmF0aW9uQ29kZSA9IFNDU0lPUF9VTk1BUDsKKyAg
ICBfX1NldDJCeXRlcyhDZGItPlVOTUFQLkFsbG9jYXRpb25MZW5ndGgsIChVU0hPUlQpTGVuZ3Ro
KTsKKworICAgIF9fU2V0VW5tYXAoVW5tYXAsIExlbmd0aCwgUmFuZ2VzLCBDb3VudCwgUGRvLT5T
ZWN0b3JTaXplKTsKKworICAgIHN0YXR1cyA9IFBkb1NlbmRBd2FpdFNyYihQZG8sICZTcmIpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAg
X19QZG9GcmVlKFVubWFwKTsKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMjoKKyAgICBFcnJv
cigiZmFpbDJcbiIpOworCisgICAgX19QZG9GcmVlKFVubWFwKTsKKworZmFpbDE6CisgICAgRXJy
b3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvTWFuYWdlRGF0YVNldEF0dHJp
YnV0ZXMoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAg
ICAgICBJcnAKKyAgICApCit7CisgICAgUERFVklDRV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRF
UyAgQXR0cmlidXRlczsKKyAgICBQREVWSUNFX0RBVEFfU0VUX1JBTkdFICAgICAgICAgICAgICBS
YW5nZXM7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtUmFuZ2Vz
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKKworICAg
IEF0dHJpYnV0ZXMgPSBJcnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOworCisgICAgc3dp
dGNoIChBdHRyaWJ1dGVzLT5BY3Rpb24pIHsKKyAgICBjYXNlIERldmljZURzbUFjdGlvbl9Ucmlt
OgorICAgICAgICBSYW5nZXMgPSAoUERFVklDRV9EQVRBX1NFVF9SQU5HRSkoKFBVQ0hBUilBdHRy
aWJ1dGVzICsgQXR0cmlidXRlcy0+RGF0YVNldFJhbmdlc09mZnNldCk7CisgICAgICAgIE51bVJh
bmdlcyA9IEF0dHJpYnV0ZXMtPkRhdGFTZXRSYW5nZXNMZW5ndGggLyBzaXplb2YoREVWSUNFX0RB
VEFfU0VUX1JBTkdFKTsKKworICAgICAgICBzdGF0dXMgPSBQZG9TZW5kVHJpbVN5bmNocm9ub3Vz
KFBkbywgUmFuZ2VzLCBOdW1SYW5nZXMpOworCisgICAgICAgIHN0YXR1cyA9IFBkb0NvbXBsZXRl
SXJwKFBkbywgSXJwLCBzdGF0dXMpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoQ29udHJvbCgKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUxPTkcgICAgICAgICAg
ICAgICBDb250cm9sQ29kZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IENvbnRyb2xDb2RlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5EZXZpY2VJb0NvbnRyb2wu
SW9Db250cm9sQ29kZTsKKworICAgIHN3aXRjaCAoQ29udHJvbENvZGUpIHsKKyAgICBjYXNlIElP
Q1RMX1NUT1JBR0VfUVVFUllfUFJPUEVSVFk6CisgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UHJv
cGVydHkoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSU9DVExfU1RPUkFH
RV9NQU5BR0VfREFUQV9TRVRfQVRUUklCVVRFUzoKKyAgICAgICAgc3RhdHVzID0gUGRvTWFuYWdl
RGF0YVNldEF0dHJpYnV0ZXMoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBBbmRGb3JnZXQoUGRvLCBJcnApOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAg
ICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5T
dGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQT1dFUl9TVEFURSAg
ICAgICAgIFBvd2VyU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnAp
OworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisg
ICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlm
ICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgX19QZG9T
ZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbywgUG93ZXJTeXN0ZW1Xb3JraW5nKTsKKyAgICBfX1Bkb1Nl
dERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQwKTsKKworICAgIFBvd2VyU3RhdGUu
RGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQwOworICAgIFBvU2V0UG93ZXJTdGF0ZShQZG8tPkR4
LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCisgICAgX19QZG9TZXREZXZpY2VQbnBT
dGF0ZShQZG8sIFN0YXJ0ZWQpOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+
UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NV
Q0NFU1M7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBJb1JlbGVhc2VSZW1vdmVM
b2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvUXVlcnlTdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dG9wUGVuZGluZyk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1F1ZXJ5U3RvcERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBJ
b0NhbGxEcml2ZXIoUGRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKKworICAgIHJldHVybiBz
dGF0dXM7CisKK2ZhaWwxOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAg
IElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBz
dGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQor
X19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNUQVRVUworX19QZG9DYW5jZWxTdG9wRGV2aWNlKAor
ICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAg
ICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQp
CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxv
Y2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvQ2FuY2VsU3Rv
cERldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAg
ICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKwor
ICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIEly
cCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgX19QZG9S
ZXN0b3JlRGV2aWNlUG5wU3RhdGUoUGRvLCBTdG9wUGVuZGluZyk7CisKKyAgICBJb0NvcHlDdXJy
ZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRp
bmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxTdG9wRGV2aWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8t
Pkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6
CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19k
cnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAor
c3RhdGljIE5UU1RBVFVTCitfX1Bkb1N0b3BEZXZpY2UoCisgICAgSU4gIFBERVZJQ0VfT0JKRUNU
ICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAsCisgICAgSU4gIFBW
T0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5ESVNLX1BETyAgICAgICAg
UGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRGV2aWNlT2JqZWN0
KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAgICAgICAgSW9NYXJrSXJwUGVu
ZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9TdG9wRGV2aWNlKAorICAgIElOICBQWEVORElTS19Q
RE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBP
V0VSX1NUQVRFICAgICAgICAgUG93ZXJTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0
YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92
ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8g
ZmFpbDE7CisKKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgIT0gUG93ZXJE
ZXZpY2VEMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0
YXRlKFBkbywgUG93ZXJEZXZpY2VEMyk7CisgICAgX19QZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKFBk
bywgUG93ZXJTeXN0ZW1TaHV0ZG93bik7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0g
UG93ZXJEZXZpY2VEMzsKKyAgICBQb1NldFBvd2VyU3RhdGUoUGRvLT5EeC0+RGV2aWNlT2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICBQb3dlclN0YXRlKTsKKworZG9uZToKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBk
bywgU3RvcHBlZCk7CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KworICAgIElvQ29weUN1cnJlbnRJcnBTdGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bk
b1N0b3BEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxs
RHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2
X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMKK19fUGRvUXVlcnlSZW1vdmVEZXZpY2UoCisgICAg
SU4gIFBERVZJQ0VfT0JKRUNUICBEZXZpY2VPYmplY3QsCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0CisgICAgKQoreworICAgIFBY
RU5ESVNLX1BETyAgICAgICAgUGRvID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRGV2aWNlT2JqZWN0KTsKKworICAgIGlmIChJcnAtPlBlbmRpbmdSZXR1cm5lZCkKKyAg
ICAgICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
K30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9RdWVyeVJlbW92ZURl
dmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAg
ICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAg
ICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgUmVtb3ZlUGVuZGluZyk7CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIElvQ29weUN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uVG9OZXh0KElycCk7CisgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1F1ZXJ5UmVtb3ZlRGV2aWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsKKworICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQZG8tPkxvd2Vy
RGV2aWNlT2JqZWN0LCBJcnApOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFpbDE6CisgICAg
SXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVu
Y3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGlj
IE5UU1RBVFVTCitfX1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAgUERFVklDRV9PQkpF
Q1QgIERldmljZU9iamVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAg
UFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAg
ICBQZG8gPSBDb250ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmpl
Y3QpOworCisgICAgaWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQ
ZW5kaW5nKElycCk7CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVM
b2NrLCBJcnApOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVD
TFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0NhbmNlbFJlbW92ZURldmljZSgKKyAgICBJTiAg
UFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkK
K3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNx
dWlyZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX1Bkb1Jlc3RvcmVE
ZXZpY2VQbnBTdGF0ZShQZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3Rh
dHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9DYW5jZWxSZW1vdmVEZXZpY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmpl
Y3QsIElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lO
Q1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNz
KElPX0NPTVBMRVRJT05fUk9VVElORSkKK19fZHJ2X3NhbWVJUlFMCitzdGF0aWMgTlRTVEFUVVMK
K19fUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAg
ICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVjdCk7CisKKyAgICBp
ZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsK
KworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisK
KyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBOVFNUQVRVUworUGRvU3VycHJpc2VSZW1vdmFsKAorICAgIElOICBQWEVORElTS19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1aXJlUmVtb3ZlTG9jaygm
UGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBT
dXJwcmlzZVJlbW92ZVBlbmRpbmcpOworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVT
X1NVQ0NFU1M7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19QZG9TdXJwcmlzZVJlbW92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
ZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAg
c3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0
YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMK
K1Bkb1JlbW92ZURldmljZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQWEVORElTS19GRE8gICAgICAgIEZk
byA9IF9fUGRvR2V0RmRvKFBkbyk7CisgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRl
OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gSW9BY3F1
aXJlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9jaywgSXJwKTsKKyAgICBpZiAoIU5UX1NV
Q0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGlmIChfX1Bkb0dldERl
dmljZVBvd2VyU3RhdGUoUGRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAgICBnb3RvIGRvbmU7
CisKKyAgICBfX1Bkb1NldERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQzKTsKKyAg
ICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBQb3dlclN5c3RlbVNodXRkb3duKTsKKwor
ICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQzOworICAgIFBvU2V0UG93
ZXJTdGF0ZShQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIERldmlj
ZVBvd2VyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgIFBvd2VyU3RhdGUpOworCitkb25lOgor
ICAgIGlmIChfX1Bkb0lzTWlzc2luZyhQZG8pKSB7CisgICAgICAgIF9fUGRvU2V0RGV2aWNlUG5w
U3RhdGUoUGRvLCBEZWxldGVkKTsKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9ja0FuZFdhaXQo
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX19QZG9T
ZXREZXZpY2VQbnBTdGF0ZShQZG8sIEVudW1lcmF0ZWQpOworICAgICAgICBJb1JlbGVhc2VSZW1v
dmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOworICAgIH0KKworICAgIHN0YXR1cyA9
IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICBpZiAoX19QZG9Jc01pc3NpbmcoUGRv
KSkgeworICAgICAgICBGZG9BY3F1aXJlTXV0ZXgoRmRvKTsKKyAgICAgICAgUGRvRGVzdHJveShQ
ZG8pOworICAgICAgICBGZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c3RhdHVzOworCitmYWlsMToKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAg
ICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4g
c3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0VqZWN0
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAg
SXJwCisgICAgKQoreworICAgIFBYRU5ESVNLX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRGZG8o
UGRvKTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIF9fUGRvU2V0TWlz
c2luZyhQZG8sICJFamVjdGVkIik7CisgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERl
bGV0ZWQpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJ
cnApOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAg
IEZkb0FjcXVpcmVNdXRleChGZG8pOworICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICBGZG9SZWxl
YXNlTXV0ZXgoRmRvKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK19fZHJ2X2Z1bmN0aW9u
Q2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0YXRpYyBOVFNU
QVRVUworX19QZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
ICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTCitQZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0
aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBNaW5vckZ1bmN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAgIHN3aXRjaCAoU3RhY2tMb2Nh
dGlvbi0+TWlub3JGdW5jdGlvbikgeworICAgIGNhc2UgSVJQX01OX1NUQVJUX0RFVklDRToKKyAg
ICAgICAgc3RhdHVzID0gUGRvU3RhcnREZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgSVJQX01OX1FVRVJZX1NUT1BfREVWSUNFOgorICAgICAgICBzdGF0dXMgPSBQ
ZG9RdWVyeVN0b3BEZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
SVJQX01OX0NBTkNFTF9TVE9QX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gUGRvQ2FuY2VsU3Rv
cERldmljZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fU1RP
UF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1N0b3BEZXZpY2UoUGRvLCBJcnApOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX1JFTU9WRV9ERVZJQ0U6CisgICAg
ICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UmVtb3ZlRGV2aWNlKFBkbywgSXJwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIElSUF9NTl9TVVJQUklTRV9SRU1PVkFMOgorICAgICAgICBzdGF0dXMg
PSBQZG9TdXJwcmlzZVJlbW92YWwoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSVJQX01OX1JFTU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1JlbW92ZURldmlj
ZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fQ0FOQ0VMX1JF
TU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb0NhbmNlbFJlbW92ZURldmljZShQZG8s
IElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJUlBfTU5fRUpFQ1Q6CisgICAgICAg
IHN0YXR1cyA9IFBkb0VqZWN0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBzdGF0dXMgPSBJb0FjcXVpcmVSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1v
dmVMb2NrLCBJcnApOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
ICAgIGdvdG8gZmFpbDE7CisKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBucCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihQ
ZG8tPkxvd2VyRGV2aWNlT2JqZWN0LCBJcnApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBz
dGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldERldmljZVBvd2VyVXAo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA8LCAg
X19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0gUGRvRm9yd2Fy
ZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBWZXJib3NlKCIlcDogJXMgLT4gJXNcbiIsCisg
ICAgICAgICBQZG8tPkR4LT5EZXZpY2VPYmplY3QsCisgICAgICAgICBQb3dlckRldmljZVN0YXRl
TmFtZShfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSksCisgICAgICAgICBQb3dlckRldmlj
ZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSkpOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0YXRl
KFBkbywgRGV2aWNlU3RhdGUpOworCitkb25lOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
c3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKwor
ICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUworX19Q
ZG9TZXREZXZpY2VQb3dlckRvd24oCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIERldmljZVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsKKworICAgIEFTU0VS
VDNVKERldmljZVN0YXRlLCA+LCAgX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykpOworCisg
ICAgVmVyYm9zZSgiJXA6ICVzIC0+ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2Jq
ZWN0LAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoX19QZG9HZXREZXZpY2VQb3dlclN0
YXRlKFBkbykpLAorICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsK
KworICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8sIERldmljZVN0YXRlKTsKKworICAg
IHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0RGV2aWNlUG93ZXIo
CisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAg
ICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0
YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgRGV2
aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0
YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5T
aHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQ
b3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9u
TmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERldmljZVN0YXRlID09IF9fUGRvR2V0RGV2
aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5j
aHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMg
PSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAg
ICAgICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9f
UGRvU2V0RGV2aWNlUG93ZXJEb3duKFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09
PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZp
Y2VTdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAg
ICAgICAgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERP
ICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9f
U1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBT
eXN0ZW1TdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNr
TG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVt
U3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRl
OworCisgICAgQVNTRVJUM1UoU3lzdGVtU3RhdGUsIDwsICBfX1Bkb0dldFN5c3RlbVBvd2VyU3Rh
dGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNseShQZG8s
IElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZG9uZTsK
KworICAgIFZlcmJvc2UoIiVwOiAlcyAtPiAlc1xuIiwKKyAgICAgICAgIFBkby0+RHgtPkRldmlj
ZU9iamVjdCwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fUGRvR2V0U3lzdGVtUG93
ZXJTdGF0ZShQZG8pKSwKKyAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRl
KSk7CisKKyAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBTeXN0ZW1TdGF0ZSk7CisK
K2RvbmU6CisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0
ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30K
Kworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1NldFN5c3RlbVBvd2VyRG93bigK
KyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAg
IFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2Nh
dGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Q
b3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0YXRlLCA+LCAg
X19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgVmVyYm9zZSgiJXA6ICVzIC0+
ICVzXG4iLAorICAgICAgICAgUGRvLT5EeC0+RGV2aWNlT2JqZWN0LAorICAgICAgICAgUG93ZXJT
eXN0ZW1TdGF0ZU5hbWUoX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpLAorICAgICAgICAg
UG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpKTsKKworICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJTdGF0ZShQZG8sIFN5c3RlbVN0YXRlKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJ
cnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJ
TkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0U3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BE
TyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElP
X1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
U3lzdGVtU3RhdGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBO
VFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1
cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgU3lzdGVtU3RhdGUgPSBTdGFja0xvY2F0
aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLlN5c3RlbVN0YXRlOworICAgIFBvd2VyQWN0aW9u
ID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBU
cmFjZSgiPT09PT4gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShT
eXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOwor
CisgICAgaWYgKFN5c3RlbVN0YXRlID09IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pKSB7
CisgICAgICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsK
KyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAg
ICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoU3lzdGVtU3RhdGUgPCBfX1Bk
b0dldFN5c3RlbVBvd2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVt
UG93ZXJVcChQZG8sIElycCkgOgorICAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJEb3du
KFBkbywgSXJwKTsKKworZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwK
KyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAg
IFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKyAgICBy
ZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvUXVl
cnlEZXZpY2VQb3dlclVwKAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3Rh
Y2tMb2NhdGlvbjsKKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmljZVN0YXRlOworICAgIE5U
U1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3Vy
cmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRp
b24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisKKyAgICBBU1NFUlQzVShE
ZXZpY2VTdGF0ZSwgPCwgIF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKTsKKworICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKworICAgIElycC0+
SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBOVFNUQVRVUworX19QZG9RdWVyeURldmljZVBvd2VyRG93bigKKyAgICBJTiAgUFhFTkRJ
U0tfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BPV0VSX1NU
QVRFICBEZXZpY2VTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAg
IFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAg
RGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlN0YXRlLkRldmlj
ZVN0YXRlOworCisgICAgQVNTRVJUM1UoRGV2aWNlU3RhdGUsID4sICBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSk7CisKKyAgICBzdGF0dXMgPSBQZG9Gb3J3YXJkSXJwU3luY2hyb25vdXNs
eShQZG8sIElycCk7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQp
OworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVT
CitfX1Bkb1F1ZXJ5RGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisg
ICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FU
SU9OICBTdGFja0xvY2F0aW9uOworICAgIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGU7
CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAgICBOVFNUQVRVUyAgICAg
ICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uKElycCk7CisgICAgRGV2aWNlU3RhdGUgPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0
ZXJzLlBvd2VyLlN0YXRlLkRldmljZVN0YXRlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBUcmFjZSgiPT09PT4g
KCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZpY2VTdGF0ZSks
IAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOworCisgICAgaWYgKERl
dmljZVN0YXRlID09IF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKSB7CisgICAgICAgIHN0
YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywgSXJwKTsKKyAgICAgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgICAgIGdvdG8gZG9u
ZTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAoRGV2aWNlU3RhdGUgPCBfX1Bkb0dldERldmljZVBv
d2VyU3RhdGUoUGRvKSkgPworICAgICAgICAgICAgIF9fUGRvUXVlcnlEZXZpY2VQb3dlclVwKFBk
bywgSXJwKSA6CisgICAgICAgICAgICAgX19QZG9RdWVyeURldmljZVBvd2VyRG93bihQZG8sIEly
cCk7CisKK2RvbmU6CisgICAgVHJhY2UoIjw9PT09ICglczolcykoJTA4eClcbiIsCisgICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpLCAKKyAgICAgICAgICBQb3dlckFj
dGlvbk5hbWUoUG93ZXJBY3Rpb24pLAorICAgICAgICAgIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0
YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVt
UG93ZXJVcCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0
aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgU3lzdGVtU3RhdGU7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJw
U3RhY2tMb2NhdGlvbihJcnApOworICAgIFN5c3RlbVN0YXRlID0gU3RhY2tMb2NhdGlvbi0+UGFy
YW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsKKworICAgIEFTU0VSVDNVKFN5c3RlbVN0
YXRlLCA8LCAgX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpOworCisgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworCisgICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNS
RU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIE5U
U1RBVFVTCitfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKAorICAgIElOICBQWEVORElTS19QRE8g
ICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19T
VEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFN5
c3RlbVN0YXRlOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tM
b2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0ZW1T
dGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3RhdGU7
CisKKyAgICBBU1NFUlQzVShTeXN0ZW1TdGF0ZSwgPiwgIF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKTsKKworICAgIHN0YXR1cyA9IFBkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KFBkbywg
SXJwKTsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAg
ICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRv
UXVlcnlTeXN0ZW1Qb3dlcigKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTeXN0ZW1TdGF0ZTsKKyAgICBQ
T1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAg
c3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICBTeXN0ZW1TdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93
ZXIuU3RhdGUuU3lzdGVtU3RhdGU7CisgICAgUG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5Q
YXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXM6JXMp
XG4iLAorICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSwgCisgICAg
ICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7CisKKyAgICBpZiAoU3lzdGVtU3Rh
dGUgPT0gX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpIHsKKyAgICAgICAgc3RhdHVzID0g
UGRvRm9yd2FyZElycFN5bmNocm9ub3VzbHkoUGRvLCBJcnApOworICAgICAgICBJb0NvbXBsZXRl
UmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICAgICAgZ290byBkb25lOworICAg
IH0KKworICAgIHN0YXR1cyA9IChTeXN0ZW1TdGF0ZSA8IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0
ZShQZG8pKSA/CisgICAgICAgICAgICAgX19QZG9RdWVyeVN5c3RlbVBvd2VyVXAoUGRvLCBJcnAp
IDoKKyAgICAgICAgICAgICBfX1Bkb1F1ZXJ5U3lzdGVtUG93ZXJEb3duKFBkbywgSXJwKTsKKwor
ZG9uZToKKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKSglMDh4KVxuIiwKKyAgICAgICAgICBQb3dl
clN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksIAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFt
ZShQb3dlckFjdGlvbiksCisgICAgICAgICAgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBOVFNUQVRVUworUGRvRGV2aWNlUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1RIUkVBRCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sK
KyAgICBQWEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAg
ICAgICAgICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAg
ICBmb3IgKDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQ
SU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAg
ICAgICAgTWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5EZXZpY2VQb3dlcklycCA9
PSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJF
dmVudChFdmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNl
bGYpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5EZXZpY2VQb3dl
cklycDsKKworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBQZG8tPkRldmljZVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlC
YXJyaWVyKCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNr
TG9jYXRpb24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1p
bm9yRnVuY3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0
aW9uKSB7CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lE
KSBfX1Bkb1NldERldmljZVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRv
UXVlcnlEZXZpY2VQb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVt
b3ZlTG9jaywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisK
K3N0YXRpYyBOVFNUQVRVUworUGRvU3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVB
RCBTZWxmLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQ
WEVORElTS19QRE8gICAgICAgIFBkbyA9IENvbnRleHQ7CisgICAgUEtFVkVOVCAgICAgICAgICAg
ICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIFBJUlAgICAgICAgICAgICAgICAgSXJwOworICAgICAgICBQSU9fU1RB
Q0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgICAgIFVDSEFSICAgICAgICAgICAgICAg
TWlub3JGdW5jdGlvbjsKKworICAgICAgICBpZiAoUGRvLT5TeXN0ZW1Qb3dlcklycCA9PSBOVUxM
KSB7CisgICAgICAgICAgICAoVk9JRCkgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJFdmVudChF
dmVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNlbGYpKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgSXJwID0gUGRvLT5TeXN0ZW1Qb3dlcklycDsK
KworICAgICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBQZG8tPlN5c3RlbVBvd2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsKKyAgICAgICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1pbm9yRnVu
Y3Rpb247CisKKyAgICAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uKSB7
CisgICAgICAgIGNhc2UgSVJQX01OX1NFVF9QT1dFUjoKKyAgICAgICAgICAgIChWT0lEKSBfX1Bk
b1NldFN5c3RlbVBvd2VyKFBkbywgSXJwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgSVJQX01OX1FVRVJZX1BPV0VSOgorICAgICAgICAgICAgKFZPSUQpIF9fUGRvUXVlcnlT
eXN0ZW1Qb3dlcihQZG8sIElycCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgSW9SZWxlYXNlUmVtb3ZlTG9jaygmUGRvLT5EeC0+UmVtb3ZlTG9j
aywgSXJwKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK19fZHJ2
X2Z1bmN0aW9uQ2xhc3MoSU9fQ09NUExFVElPTl9ST1VUSU5FKQorX19kcnZfc2FtZUlSUUwKK3N0
YXRpYyBOVFNUQVRVUworX19QZG9EaXNwYXRjaFBvd2VyKAorICAgIElOICBQREVWSUNFX09CSkVD
VCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLAorICAgIElOICBQ
Vk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVORElTS19QRE8gICAgICAg
IFBkbyA9IENvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERldmljZU9iamVj
dCk7CisKKyAgICBpZiAoSXJwLT5QZW5kaW5nUmV0dXJuZWQpCisgICAgICAgIElvTWFya0lycFBl
bmRpbmcoSXJwKTsKKworICAgIElvUmVsZWFzZVJlbW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxv
Y2ssIElycCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoUG93ZXIoCisgICAgSU4gIFBYRU5ESVNL
X1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAg
ICAgTWlub3JGdW5jdGlvbjsKKyAgICBQT1dFUl9TVEFURV9UWVBFICAgIFBvd2VyVHlwZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJl
bW92ZUxvY2soJlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIE1pbm9yRnVuY3Rpb24gPSBTdGFj
a0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uOworCisgICAgaWYgKE1pbm9yRnVuY3Rpb24gIT0gSVJQ
X01OX1FVRVJZX1BPV0VSICYmCisgICAgICAgIE1pbm9yRnVuY3Rpb24gIT0gSVJQX01OX1NFVF9Q
T1dFUikgeworICAgICAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlvblRvTmV4dChJcnAp
OworICAgICAgICBJb1NldENvbXBsZXRpb25Sb3V0aW5lKElycCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX1Bkb0Rpc3BhdGNoUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFKTsKKworICAgICAgICBzdGF0dXMgPSBJb0NhbGxEcml2ZXIoUGRvLT5Mb3dl
ckRldmljZU9iamVjdCwgSXJwKTsKKworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAg
UG93ZXJUeXBlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5UeXBlOworCisgICAg
VHJhY2UoIj09PT0+ICglMDJ4OiVzKVxuIiwKKyAgICAgICAgICBNaW5vckZ1bmN0aW9uLCAKKyAg
ICAgICAgICBQb3dlck1pbm9yRnVuY3Rpb25OYW1lKE1pbm9yRnVuY3Rpb24pKTsgCisKKyAgICBz
d2l0Y2ggKFBvd2VyVHlwZSkgeworICAgIGNhc2UgRGV2aWNlUG93ZXJTdGF0ZToKKyAgICAgICAg
SW9NYXJrSXJwUGVuZGluZyhJcnApOworCisgICAgICAgIEFTU0VSVDNQKFBkby0+RGV2aWNlUG93
ZXJJcnAsID09LCBOVUxMKTsKKyAgICAgICAgUGRvLT5EZXZpY2VQb3dlcklycCA9IElycDsKKyAg
ICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShQZG8tPkRldmlj
ZVBvd2VyVGhyZWFkKTsKKworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFN5c3RlbVBvd2VyU3RhdGU6CisgICAgICAgIElvTWFya0ly
cFBlbmRpbmcoSXJwKTsKKworICAgICAgICBBU1NFUlQzUChQZG8tPlN5c3RlbVBvd2VySXJwLCA9
PSwgTlVMTCk7CisgICAgICAgIFBkby0+U3lzdGVtUG93ZXJJcnAgPSBJcnA7CisgICAgICAgIEtl
TWVtb3J5QmFycmllcigpOworCisgICAgICAgIFRocmVhZFdha2UoUGRvLT5TeXN0ZW1Qb3dlclRo
cmVhZCk7CisKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX1BFTkRJTkc7CisgICAgICAgIGJyZWFr
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgSW9Db3B5Q3VycmVudElycFN0YWNrTG9jYXRpb25U
b05leHQoSXJwKTsKKyAgICAgICAgSW9TZXRDb21wbGV0aW9uUm91dGluZShJcnAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaFBvd2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSk7CisKKyAgICAgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVy
KFBkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIFRyYWNlKCI8PT09PSAoJTAyeDolcykgKCUwOHgpXG4iLAorICAgICAgICAgIE1pbm9yRnVu
Y3Rpb24sIAorICAgICAgICAgIFBvd2VyTWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbiks
CisgICAgICAgICAgc3RhdHVzKTsKKworZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWls
MToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0
YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19J
TkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworX19kcnZfZnVuY3Rpb25DbGFz
cyhJT19DT01QTEVUSU9OX1JPVVRJTkUpCitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVT
CitfX1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUERFVklDRV9PQkpFQ1QgIERldmljZU9i
amVjdCwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycCwKKyAgICBJTiAgUFZPSUQgICAgICAg
ICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkRJU0tfUERPICAgICAgICBQZG8gPSBDb250
ZXh0OworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOworCisgICAg
aWYgKElycC0+UGVuZGluZ1JldHVybmVkKQorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICBJb1JlbGVhc2VSZW1vdmVMb2NrKCZQZG8tPkR4LT5SZW1vdmVMb2NrLCBJcnApOwor
CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJ
TkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoRGVmYXVsdCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAg
IFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IElvQWNxdWlyZVJlbW92ZUxvY2so
JlBkby0+RHgtPlJlbW92ZUxvY2ssIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
CisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBJb0NvcHlDdXJyZW50SXJwU3RhY2tMb2NhdGlv
blRvTmV4dChJcnApOworICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoSXJwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19QZG9EaXNwYXRjaERlZmF1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQZG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUpOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKFBkby0+TG93ZXJEZXZpY2VPYmplY3Qs
IElycCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7
CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0
dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoKAorICAgIElOICBQWEVORElT
S19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAg
IFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xv
Y2F0aW9uKElycCk7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1ham9yRnVuY3Rpb24p
IHsKKyAgICBjYXNlIElSUF9NSl9ERVZJQ0VfQ09OVFJPTDoKKyAgICAgICAgc3RhdHVzID0gUGRv
RGlzcGF0Y2hDb250cm9sKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElS
UF9NSl9QTlA6CisgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUG5wKFBkbywgSXJwKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NSl9QT1dFUjoKKyAgICAgICAgc3RhdHVzID0g
UGRvRGlzcGF0Y2hQb3dlcihQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0Y2hEZWZhdWx0KFBkbywgSXJwKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bk
b0NyZWF0ZSgKKyAgICBQWEVORElTS19GRE8gICAgICAgICAgICAgICAgICAgIEZkbywKKyAgICBQ
REVWSUNFX09CSkVDVCAgICAgICAgICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CisgICAg
KQoreworICAgIFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgTG93ZXJEZXZpY2VPYmpl
Y3Q7CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VUeXBlOworICAg
IFBERVZJQ0VfT0JKRUNUICAgICAgICAgICAgICAgICAgRmlsdGVyRGV2aWNlT2JqZWN0OworICAg
IFBYRU5ESVNLX0RYICAgICAgICAgICAgICAgICAgICAgRHg7CisgICAgUFhFTkRJU0tfUERPICAg
ICAgICAgICAgICAgICAgICBQZG87CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXM7CisKKyAgICBMb3dlckRldmljZU9iamVjdCA9IElvR2V0QXR0YWNoZWREZXZpY2VS
ZWZlcmVuY2UoUGh5c2ljYWxEZXZpY2VPYmplY3QpOworICAgIERldmljZVR5cGUgPSBMb3dlckRl
dmljZU9iamVjdC0+RGV2aWNlVHlwZTsKKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0KExvd2VyRGV2
aWNlT2JqZWN0KTsKKworI3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTk3KSAvLyBQb3NzaWJs
eSBsZWFraW5nIG1lbW9yeSAnUGh5c2ljYWxEZXZpY2VPYmplY3QnCisgICAgc3RhdHVzID0gSW9D
cmVhdGVEZXZpY2UoRHJpdmVyR2V0RHJpdmVyT2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKFhFTkRJU0tfRFgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFX0RFVklDRV9TRUNVUkVfT1BFTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmls
dGVyRGV2aWNlT2JqZWN0KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAg
Z290byBmYWlsMTsKKworICAgIER4ID0gKFBYRU5ESVNLX0RYKUZpbHRlckRldmljZU9iamVjdC0+
RGV2aWNlRXh0ZW5zaW9uOworICAgIFJ0bFplcm9NZW1vcnkoRHgsIHNpemVvZiAoWEVORElTS19E
WCkpOworCisgICAgRHgtPlR5cGUgPSBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUOworICAgIER4LT5E
ZXZpY2VPYmplY3QgPSBGaWx0ZXJEZXZpY2VPYmplY3Q7CisgICAgRHgtPkRldmljZVBucFN0YXRl
ID0gUHJlc2VudDsKKyAgICBEeC0+U3lzdGVtUG93ZXJTdGF0ZSA9IFBvd2VyU3lzdGVtU2h1dGRv
d247CisgICAgRHgtPkRldmljZVBvd2VyU3RhdGUgPSBQb3dlckRldmljZUQzOworCisgICAgSW9J
bml0aWFsaXplUmVtb3ZlTG9jaygmRHgtPlJlbW92ZUxvY2ssIFBET19UQUcsIDAsIDApOworCisg
ICAgUGRvID0gX19QZG9BbGxvY2F0ZShzaXplb2YgKFhFTkRJU0tfUERPKSk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChQZG8gPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMjsKKworICAgIExvd2VyRGV2aWNlT2JqZWN0ID0gSW9BdHRhY2hEZXZpY2VUb0Rldmlj
ZVN0YWNrKEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbERldmljZU9iamVjdCk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlmIChMb3dlckRldmljZU9iamVjdCA9PSBO
VUxMKQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgUGRvLT5EeCA9IER4OworICAgIFBkby0+
UGh5c2ljYWxEZXZpY2VPYmplY3QgPSBQaHlzaWNhbERldmljZU9iamVjdDsKKyAgICBQZG8tPkxv
d2VyRGV2aWNlT2JqZWN0ID0gTG93ZXJEZXZpY2VPYmplY3Q7CisgICAgUGRvLT5TZWN0b3JTaXpl
ID0gNTEyOworCisgICAgc3RhdHVzID0gVGhyZWFkQ3JlYXRlKFBkb1N5c3RlbVBvd2VyLCBQZG8s
ICZQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsNDsKKworICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShQZG9EZXZp
Y2VQb3dlciwgUGRvLCAmUGRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDU7CisKKyAgICBWZXJib3NlKCIlcFxuIiwg
RmlsdGVyRGV2aWNlT2JqZWN0KTsKKworICAgIER4LT5QZG8gPSBQZG87CisKKyNwcmFnbWEgcHJl
ZmFzdChzdXBwcmVzczoyODE4MikgLy8gRGVyZWZlcmVuY2luZyBOVUxMIHBvaW50ZXIKKyAgICBG
aWx0ZXJEZXZpY2VPYmplY3QtPkRldmljZVR5cGUgPSBMb3dlckRldmljZU9iamVjdC0+RGV2aWNl
VHlwZTsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkNoYXJhY3RlcmlzdGljcyA9IExvd2VyRGV2
aWNlT2JqZWN0LT5DaGFyYWN0ZXJpc3RpY3M7CisKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3QtPkZs
YWdzIHw9IExvd2VyRGV2aWNlT2JqZWN0LT5GbGFnczsKKyAgICBGaWx0ZXJEZXZpY2VPYmplY3Qt
PkZsYWdzICY9IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOworCisgICAgX19QZG9MaW5rKFBkbywg
RmRvKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAgRXJyb3Io
ImZhaWw1XG4iKTsKKworICAgIFRocmVhZEFsZXJ0KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOwor
ICAgIFRocmVhZEpvaW4oUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7CisgICAgUGRvLT5TeXN0ZW1Q
b3dlclRocmVhZCA9IE5VTEw7CisKK2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAg
ICBQZG8tPlBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNl
KExvd2VyRGV2aWNlT2JqZWN0KTsKKworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKwor
ICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOworICAg
IF9fUGRvRnJlZShQZG8pOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAg
SW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2JqZWN0KTsKKworZmFpbDE6CisgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZP
SUQKK1Bkb0Rlc3Ryb3koCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8KKyAgICApCit7Cisg
ICAgUERFVklDRV9PQkpFQ1QgICAgICBMb3dlckRldmljZU9iamVjdCA9IFBkby0+TG93ZXJEZXZp
Y2VPYmplY3Q7CisgICAgUFhFTkRJU0tfRFggICAgICAgICBEeCA9IFBkby0+RHg7CisgICAgUERF
VklDRV9PQkpFQ1QgICAgICBGaWx0ZXJEZXZpY2VPYmplY3QgPSBEeC0+RGV2aWNlT2JqZWN0Owor
CisgICAgQVNTRVJUM1UoX19QZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pLCA9PSwgRGVsZXRlZCk7
CisKKyAgICBBU1NFUlQoX19QZG9Jc01pc3NpbmcoUGRvKSk7CisgICAgUGRvLT5NaXNzaW5nID0g
RkFMU0U7CisKKyAgICBfX1Bkb1VubGluayhQZG8pOworCisgICAgVmVyYm9zZSgiJXAgKCVzKVxu
IiwKKyAgICAgICAgIEZpbHRlckRldmljZU9iamVjdCwKKyAgICAgICAgIFBkby0+UmVhc29uKTsK
KyAgICBQZG8tPlJlYXNvbiA9IE5VTEw7CisKKyAgICBEeC0+UGRvID0gTlVMTDsKKworICAgIFRo
cmVhZEFsZXJ0KFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4oUGRvLT5E
ZXZpY2VQb3dlclRocmVhZCk7CisgICAgUGRvLT5EZXZpY2VQb3dlclRocmVhZCA9IE5VTEw7CisK
KyAgICBUaHJlYWRBbGVydChQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2lu
KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworICAgIFBkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBO
VUxMOworCisgICAgUGRvLT5TZWN0b3JTaXplID0gMDsKKyAgICBQZG8tPlBoeXNpY2FsRGV2aWNl
T2JqZWN0ID0gTlVMTDsKKyAgICBQZG8tPkxvd2VyRGV2aWNlT2JqZWN0ID0gTlVMTDsKKyAgICBQ
ZG8tPkR4ID0gTlVMTDsKKworICAgIElvRGV0YWNoRGV2aWNlKExvd2VyRGV2aWNlT2JqZWN0KTsK
KworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YgKFhFTkRJU0tfUERPKSkpOwor
ICAgIF9fUGRvRnJlZShQZG8pOworCisgICAgSW9EZWxldGVEZXZpY2UoRmlsdGVyRGV2aWNlT2Jq
ZWN0KTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svcGRvLmggYi9zcmMveGVuZGlzay9w
ZG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTJlNWQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svcGRvLmgKQEAgLTAsMCArMSw5MCBAQAorLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAK
KyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
CisgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiAKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIAorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAq
IFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVmIF9YRU5ESVNLX1BET19ICisjZGVmaW5lIF9Y
RU5ESVNLX1BET19ICisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgInR5cGVzLmgiCisj
aW5jbHVkZSAiZmRvLmgiCisKK3R5cGVkZWYgc3RydWN0IF9YRU5ESVNLX1BETyBYRU5ESVNLX1BE
TywgKlBYRU5ESVNLX1BETzsKKworZXh0ZXJuIFZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAor
ICAgIElOICBQWEVORElTS19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFU
RSAgICBTdGF0ZQorICAgICk7CisKK2V4dGVybiBERVZJQ0VfUE5QX1NUQVRFCitQZG9HZXREZXZp
Y2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbworICAgICk7CisKK2V4dGVy
biBQREVWSUNFX09CSkVDVAorUGRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoCisgICAgSU4gIFBY
RU5ESVNLX1BETyAgICBQZG8KKyAgICApOworCitleHRlcm4gQk9PTEVBTgorUGRvSXNNaXNzaW5n
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIFZPSUQKK1Bk
b1NldE1pc3NpbmcoCisgICAgSU4gIFBYRU5ESVNLX1BETyAgICBQZG8sCisgICAgSU4gIGNvbnN0
IENIQVIgICAgICAqUmVhc29uCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4KK1Bkb0lzTWFza2Vk
KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVT
CitQZG9DcmVhdGUoCisgICAgSU4gIFBYRU5ESVNLX0ZETyAgICBGZG8sCisgICAgSU4gIFBERVZJ
Q0VfT0JKRUNUICBQaHlzaWNhbERldmljZU9iamVjdAorICAgICk7CisKK2V4dGVybiBWT0lECitQ
ZG9EZXN0cm95KAorICAgIElOICBQWEVORElTS19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJu
IE5UU1RBVFVTCitQZG9EaXNwYXRjaCgKKyAgICBJTiAgUFhFTkRJU0tfUERPICAgIFBkbywKKyAg
ICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICk7CisKKyNlbmRpZiAvLyBfWEVORElTS19Q
RE9fSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmRpc2svdGhyZWFkLmMgYi9zcmMveGVuZGlzay90aHJl
YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmUyYjk0Ci0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2svdGhyZWFkLmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
CisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8bnRkZGsuaD4KKworI2luY2x1ZGUg
InRocmVhZC5oIgorI2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisjaW5j
bHVkZSAidXRpbC5oIgorCisjZGVmaW5lIFRIUkVBRF9QT09MICdFUkhUJworCitzdHJ1Y3QgX1hF
TkRJU0tfVEhSRUFEIHsKKyAgICBYRU5ESVNLX1RIUkVBRF9GVU5DVElPTiBGdW5jdGlvbjsKKyAg
ICBQVk9JRCAgICAgICAgICAgICAgICAgICBDb250ZXh0OworICAgIEtFVkVOVCAgICAgICAgICAg
ICAgICAgIEV2ZW50OworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEFsZXJ0ZWQ7CisgICAg
TE9ORyAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKKyAgICBQS1RIUkVBRCAgICAgICAg
ICAgICAgICBUaHJlYWQ7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fVGhyZWFk
QWxsb2NhdGUoCisgICAgSU4gIFVMT05HICAgTGVuZ3RoCisgICAgKQoreworICAgIHJldHVybiBf
X0FsbG9jYXRlTm9uUGFnZWRQb29sV2l0aFRhZyhfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBMZW5n
dGgsIFRIUkVBRF9QT09MKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fVGhyZWFk
RnJlZSgKKyAgICBJTiAgUFZPSUQgICBCdWZmZXIKKyAgICApCit7CisgICAgX19GcmVlUG9vbFdp
dGhUYWcoQnVmZmVyLCBUSFJFQURfUE9PTCk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lE
CitfX1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQKKyAgICApCit7
CisgICAgS2VTZXRFdmVudCgmVGhyZWFkLT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7
Cit9CisKK1ZPSUQKK1RocmVhZFdha2UoCisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBUaHJlYWQK
KyAgICApCit7CisgICAgX19UaHJlYWRXYWtlKFRocmVhZCk7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBWT0lECitfX1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJFQUQgVGhyZWFk
CisgICAgKQoreworICAgIFRocmVhZC0+QWxlcnRlZCA9IFRSVUU7CisgICAgX19UaHJlYWRXYWtl
KFRocmVhZCk7Cit9CisKK1ZPSUQKK1RocmVhZEFsZXJ0KAorICAgIElOICBQWEVORElTS19USFJF
QUQgVGhyZWFkCisgICAgKQoreworICAgIF9fVGhyZWFkQWxlcnQoVGhyZWFkKTsKK30KKworS1NU
QVJUX1JPVVRJTkUgIFRocmVhZEZ1bmN0aW9uOworCitWT0lECitUaHJlYWRGdW5jdGlvbigKKyAg
ICBJTiAgUFZPSUQgICAgICAgQXJndW1lbnQKKyAgICApCit7CisgICAgUFhFTkRJU0tfVEhSRUFE
IFNlbGYgPSBBcmd1bWVudDsKKyAgICBOVFNUQVRVUyAgICAgICAgc3RhdHVzOworCisgICAgc3Rh
dHVzID0gU2VsZi0+RnVuY3Rpb24oU2VsZiwgU2VsZi0+Q29udGV4dCk7CisKKyAgICBpZiAoSW50
ZXJsb2NrZWREZWNyZW1lbnQoJlNlbGYtPlJlZmVyZW5jZXMpID09IDApCisgICAgICAgIF9fVGhy
ZWFkRnJlZShTZWxmKTsKKworICAgIFBzVGVybWluYXRlU3lzdGVtVGhyZWFkKHN0YXR1cyk7Cisg
ICAgLy8gTk9UIFJFQUNIRUQKK30KKworTlRTVEFUVVMKK1RocmVhZENyZWF0ZSgKKyAgICBJTiAg
WEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBWT0lEICAgICAgICAg
ICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAgICAgICAgICpUaHJl
YWQKKyAgICApCit7CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZTsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VH
ZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9MRVZFTCk7CisKKyAgICAoKlRocmVhZCkgPSBf
X1RocmVhZEFsbG9jYXRlKHNpemVvZiAoWEVORElTS19USFJFQUQpKTsKKworICAgIHN0YXR1cyA9
IFNUQVRVU19OT19NRU1PUlk7CisgICAgaWYgKCpUaHJlYWQgPT0gTlVMTCkKKyAgICAgICAgZ290
byBmYWlsMTsKKworICAgICgqVGhyZWFkKS0+RnVuY3Rpb24gPSBGdW5jdGlvbjsKKyAgICAoKlRo
cmVhZCktPkNvbnRleHQgPSBDb250ZXh0OworICAgICgqVGhyZWFkKS0+QWxlcnRlZCA9IEZBTFNF
OworICAgICgqVGhyZWFkKS0+UmVmZXJlbmNlcyA9IDI7IC8vIE9uZSBmb3IgdXMsIG9uZSBmb3Ig
dGhlIHRocmVhZCBmdW5jdGlvbgorCisgICAgS2VJbml0aWFsaXplRXZlbnQoJigqVGhyZWFkKS0+
RXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7CisKKyAgICBzdGF0dXMgPSBQc0NyZWF0
ZVN5c3RlbVRocmVhZCgmSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNUQU5EQVJEX1JJR0hUU19BTEwgfCBTUEVDSUZJQ19SSUdIVFNfQUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZEZ1bmN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpUaHJlYWQpOworICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKSB7CisgICAgICAgIC0tKCpUaHJlYWQpLT5SZWZlcmVuY2VzOyAgICAvLyBGYWtlIHRo
cmVhZCBmdW5jdGlvbiB0ZXJtaW5hdGlvbgorICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKwor
ICAgIHN0YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUoSGFuZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lOQ0hST05JWkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqUHNUaHJlYWRUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYoKlRocmVhZCktPlRocmVhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAgWndDbG9zZShIYW5kbGUpOworCisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMzoKKyAgICBFcnJvcigiZmFpbDNcbiIpOworCisg
ICAgX19UaHJlYWRBbGVydCgqVGhyZWFkKTsKKyAgICBad0Nsb3NlKEhhbmRsZSk7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBpZiAoSW50ZXJsb2NrZWREZWNyZW1lbnQo
JigqVGhyZWFkKS0+UmVmZXJlbmNlcykgPT0gMCkKKyAgICAgICAgX19UaHJlYWRGcmVlKCpUaHJl
YWQpOworCisgICAgKlRocmVhZCA9IE5VTEw7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAo
JTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitQS0VWRU5UCitU
aHJlYWRHZXRFdmVudCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sK
KyAgICByZXR1cm4gJlRocmVhZC0+RXZlbnQ7Cit9CisKK0JPT0xFQU4KK1RocmVhZElzQWxlcnRl
ZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVhZAorICAgICkKK3sKKyAgICByZXR1cm4g
VGhyZWFkLT5BbGVydGVkOworfQorCitWT0lECitUaHJlYWRKb2luKAorICAgIElOICBQWEVORElT
S19USFJFQUQgVGhyZWFkCisgICAgKQoreworICAgIExPTkcgICAgICAgICAgICAgICAgUmVmZXJl
bmNlczsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVW
RUwpOworICAgIEFTU0VSVDNQKEtlR2V0Q3VycmVudFRocmVhZCgpLCAhPSwgVGhyZWFkLT5UaHJl
YWQpOworCisgICAgKFZPSUQpIEtlV2FpdEZvclNpbmdsZU9iamVjdChUaHJlYWQtPlRocmVhZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OworCisgICAgUmVmZXJlbmNlcyA9IEludGVybG9ja2VkRGVjcmVtZW50KCZUaHJlYWQtPlJlZmVy
ZW5jZXMpOworICAgIEFTU0VSVDNVKFJlZmVyZW5jZXMsID09LCAwKTsKKworICAgIF9fVGhyZWFk
RnJlZShUaHJlYWQpOworfQorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90aHJlYWQuaCBiL3Ny
Yy94ZW5kaXNrL3RocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYz
YjQ5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuZGlzay90aHJlYWQuaApAQCAtMCwwICsx
LDc0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAor
ICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAq
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19U
SFJFQURfSAorI2RlZmluZSBfWEVORElTS19USFJFQURfSAorCisjaW5jbHVkZSA8bnRkZGsuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX1hFTkRJU0tfVEhSRUFEIFhFTkRJU0tfVEhSRUFELCAqUFhFTkRJ
U0tfVEhSRUFEOworCit0eXBlZGVmIE5UU1RBVFVTICgqWEVORElTS19USFJFQURfRlVOQ1RJT04p
KFBYRU5ESVNLX1RIUkVBRCwgUFZPSUQpOworCitleHRlcm4gTlRTVEFUVVMKK1RocmVhZENyZWF0
ZSgKKyAgICBJTiAgWEVORElTS19USFJFQURfRlVOQ1RJT04gRnVuY3Rpb24sCisgICAgSU4gIFBW
T0lEICAgICAgICAgICAgICAgICAgIENvbnRleHQsCisgICAgT1VUIFBYRU5ESVNLX1RIUkVBRCAg
ICAgICAgICpUaHJlYWQKKyAgICApOworCitleHRlcm4gUEtFVkVOVAorVGhyZWFkR2V0RXZlbnQo
CisgICAgSU4gIFBYRU5ESVNLX1RIUkVBRCBTZWxmCisgICAgKTsKKworZXh0ZXJuIEJPT0xFQU4K
K1RocmVhZElzQWxlcnRlZCgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFNlbGYKKyAgICApOwor
CitleHRlcm4gVk9JRAorVGhyZWFkV2FrZSgKKyAgICBJTiAgUFhFTkRJU0tfVEhSRUFEIFRocmVh
ZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRBbGVydCgKKyAgICBJTiAgUFhFTkRJU0tf
VEhSRUFEIFRocmVhZAorICAgICk7CisKK2V4dGVybiBWT0lECitUaHJlYWRKb2luKAorICAgIElO
ICBQWEVORElTS19USFJFQUQgVGhyZWFkCisgICAgKTsKKworI2VuZGlmICAvLyBfWEVORElTS19U
SFJFQURfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay90eXBlcy5oIGIvc3JjL3hlbmRpc2sv
dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmI0MjE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvc3JjL3hlbmRpc2svdHlwZXMuaApAQCAtMCwwICsxLDUzIEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IAorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVORElTS19UWVBFU19ICisjZGVm
aW5lIF9YRU5ESVNLX1RZUEVTX0gKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfT0JKRUNUX1RZUEUg
eworICAgIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QgPSAnT0RQJywKKyAgICBGVU5DVElPTl9ERVZJ
Q0VfT0JKRUNUID0gJ09ERicKK30gREVWSUNFX09CSkVDVF9UWVBFLCAqUERFVklDRV9PQkpFQ1Rf
VFlQRTsKKwordHlwZWRlZiBlbnVtIF9ERVZJQ0VfUE5QX1NUQVRFIHsKKyAgICBJbnZhbGlkID0g
MCwKKyAgICBQcmVzZW50LCAgICAgICAgLy8gUERPIG9ubHkKKyAgICBFbnVtZXJhdGVkLCAgICAg
Ly8gUERPIG9ubHkKKyAgICBBZGRlZCwgICAgICAgICAgLy8gRkRPIG9ubHkKKyAgICBTdGFydGVk
LAorICAgIFN0b3BQZW5kaW5nLAorICAgIFN0b3BwZWQsCisgICAgUmVtb3ZlUGVuZGluZywKKyAg
ICBTdXJwcmlzZVJlbW92ZVBlbmRpbmcsCisgICAgRGVsZXRlZAorfSBERVZJQ0VfUE5QX1NUQVRF
LCAqUERFVklDRV9QTlBfU1RBVEU7CisKKyNlbmRpZiAgLy8gX1hFTkRJU0tfVFlQRVNfSApkaWZm
IC0tZ2l0IGEvc3JjL3hlbmRpc2svdXRpbC5oIGIvc3JjL3hlbmRpc2svdXRpbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YWRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9z
cmMveGVuZGlzay91dGlsLmgKQEAgLTAsMCArMSwyMjIgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0
cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywgCisgKiB3aXRoIG9y
IHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIAorICogdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAgIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisgKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisgKiBTVUNIIERBTUFH
RS4KKyAqLyAKKworI2lmbmRlZiBfVVRJTF9ICisjZGVmaW5lIF9VVElMX0gKKworI2luY2x1ZGUg
PG50ZGRrLmg+CisKKyNpbmNsdWRlICJhc3NlcnQuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX05PTl9Q
QUdFRF9CVUZGRVJfSEVBREVSIHsKKyAgICBTSVpFX1QgIExlbmd0aDsKKyAgICBVTE9ORyAgIFRh
ZzsKK30gTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIsICpQTk9OX1BBR0VEX0JVRkZFUl9IRUFERVI7
CisKK3R5cGVkZWYgc3RydWN0IF9OT05fUEFHRURfQlVGRkVSX1RSQUlMRVIgeworICAgIFVMT05H
ICAgVGFnOworfSBOT05fUEFHRURfQlVGRkVSX1RSQUlMRVIsICpQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fQWxsb2NhdGVOb25QYWdlZFBv
b2xXaXRoVGFnKAorICAgIElOICBQQ0hBUiAgICAgICAgICAgICAgICAgICBDYWxsZXIsCisgICAg
SU4gIFVMT05HICAgICAgICAgICAgICAgICAgIExpbmUsCisgICAgSU4gIFNJWkVfVCAgICAgICAg
ICAgICAgICAgIExlbmd0aCwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgVGFnCisg
ICAgKQoreworICAgIFBVQ0hBUiAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI7CisgICAgUE5P
Tl9QQUdFRF9CVUZGRVJfSEVBREVSICAgIEhlYWRlcjsKKyAgICBQTk9OX1BBR0VEX0JVRkZFUl9U
UkFJTEVSICAgVHJhaWxlcjsKKworICAgIEFTU0VSVDNTKExlbmd0aCwgIT0sIDApOworCisgICAg
QnVmZmVyID0gKFBVQ0hBUilFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZF
Ul9UUkFJTEVSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFnKTsKKyAg
ICBpZiAoQnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBBbGxvY0Zh
aWxlZCAlZCBieXRlcywgJTA4eCB0YWdcbiIsIENhbGxlciwgTGluZSwgTGVuZ3RoLCBUYWcpOwor
ICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUnRsWmVyb01lbW9yeShCdWZmZXIsIAor
ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05fUEFHRURfQlVGRkVSX0hFQURFUikgKworICAg
ICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAgICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BB
R0VEX0JVRkZFUl9UUkFJTEVSKSk7CisKKyAgICBIZWFkZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJf
SEVBREVSKUJ1ZmZlcjsKKyAgICBIZWFkZXItPkxlbmd0aCA9IExlbmd0aDsKKyAgICBIZWFkZXIt
PlRhZyA9IFRhZzsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9CVUZGRVJfSEVB
REVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUikoQnVmZmVy
ICsgTGVuZ3RoKTsKKyAgICBUcmFpbGVyLT5UYWcgPSBUYWc7CisKK2RvbmU6CisgICAgcmV0dXJu
IEJ1ZmZlcjsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fRnJlZVBvb2xXaXRoVGFn
KAorICAgIElOICBQVk9JRCAgICAgICAgICAgICAgICAgICBfQnVmZmVyLAorICAgIElOICBVTE9O
RyAgICAgICAgICAgICAgICAgICBUYWcKKyAgICApCit7CisgICAgUFVDSEFSICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlciA9IChQVUNIQVIpX0J1ZmZlcjsKKyAgICBTSVpFX1QgICAgICAgICAg
ICAgICAgICAgICAgTGVuZ3RoOworICAgIFBOT05fUEFHRURfQlVGRkVSX0hFQURFUiAgICBIZWFk
ZXI7CisgICAgUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxFUiAgIFRyYWlsZXI7CisKKyAgICBBU1NF
UlQzUChCdWZmZXIsICE9LCBOVUxMKTsKKworICAgIEJ1ZmZlciAtPSBzaXplb2YgKE5PTl9QQUdF
RF9CVUZGRVJfSEVBREVSKTsKKworICAgIEhlYWRlciA9IChQTk9OX1BBR0VEX0JVRkZFUl9IRUFE
RVIpQnVmZmVyOworICAgIEFTU0VSVDNVKFRhZywgPT0sIEhlYWRlci0+VGFnKTsKKyAgICBMZW5n
dGggPSBIZWFkZXItPkxlbmd0aDsKKworICAgIEJ1ZmZlciArPSBzaXplb2YgKE5PTl9QQUdFRF9C
VUZGRVJfSEVBREVSKTsKKworICAgIFRyYWlsZXIgPSAoUE5PTl9QQUdFRF9CVUZGRVJfVFJBSUxF
UikoQnVmZmVyICsgTGVuZ3RoKTsKKyAgICBBU1NFUlQzVShUYWcsID09LCBUcmFpbGVyLT5UYWcp
OworCisgICAgQnVmZmVyIC09IHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9IRUFERVIpOworCisg
ICAgUnRsRmlsbE1lbW9yeShCdWZmZXIsIAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChOT05f
UEFHRURfQlVGRkVSX0hFQURFUikgKworICAgICAgICAgICAgICAgICAgTGVuZ3RoICsKKyAgICAg
ICAgICAgICAgICAgIHNpemVvZiAoTk9OX1BBR0VEX0JVRkZFUl9UUkFJTEVSKSwKKyAgICAgICAg
ICAgICAgICAgIDB4QUEpOworCisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBUYWcpOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUE1ETAorX19BbGxvY1BhZ2VzRm9yTWRsKAorICAgIElO
ICBTSVpFX1QgICAgICAgICAgU2l6ZQorICAgICkKK3sKKyAgICBQTURMICAgICAgICAgICAgICAg
IE1kbDsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIExvd0FkZHI7CisgICAgUEhZU0lDQUxfQURE
UkVTUyAgICBIaWdoQWRkcjsKKyAgICBQSFlTSUNBTF9BRERSRVNTICAgIFNraXBCeXRlczsKKwor
ICAgIFNraXBCeXRlcy5RdWFkUGFydCA9IDB1bGw7CisgICAgSGlnaEFkZHIuUXVhZFBhcnQgPSB+
MHVsbDsKKworICAgIC8vIHRyeSA+IDRHQgorICAgIExvd0FkZHIuUXVhZFBhcnQgPSAweDEwMDAw
MDAwMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdo
QWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAg
ICAgICBpZiAoTW1HZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBn
b3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7Cisg
ICAgICAgIEV4RnJlZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAg
ICAvLyB0cnkgPiAyR0IKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHg4MDAwMDAwMHVsbDsKKyAg
ICBNZGwgPSBNbUFsbG9jYXRlUGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5
dGVzLCBTaXplLCBNbUNhY2hlZCwgMCk7CisgICAgaWYgKE1kbCkgeworICAgICAgICBpZiAoTW1H
ZXRNZGxCeXRlQ291bnQoTWRsKSA9PSBTaXplKSB7CisgICAgICAgICAgICBnb3RvIGRvbmU7Cisg
ICAgICAgIH0KKyAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKE1kbCk7CisgICAgICAgIEV4RnJl
ZVBvb2woTWRsKTsKKyAgICAgICAgTWRsID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyB0cnkgYW55
d2hlcmUKKyAgICBMb3dBZGRyLlF1YWRQYXJ0ID0gMHVsbDsKKyAgICBNZGwgPSBNbUFsbG9jYXRl
UGFnZXNGb3JNZGxFeChMb3dBZGRyLCBIaWdoQWRkciwgU2tpcEJ5dGVzLCBTaXplLCBNbUNhY2hl
ZCwgMCk7CisgICAgLy8gTWRsIGJ5dGUgY291bnQgZ2V0cyBjaGVja2VkIGFnYWluIGFmdGVyIHRo
aXMgcmV0dXJucworCitkb25lOgorICAgIHJldHVybiBNZGw7Cit9CitzdGF0aWMgRk9SQ0VJTkxJ
TkUgUFZPSUQKK19fX0FsbG9jUGFnZXMoCisgICAgSU4gIFBDSEFSICAgICAgICAgICBDYWxsZXIs
IAorICAgIElOICBVTE9ORyAgICAgICAgICAgTGluZSwKKyAgICBJTiAgU0laRV9UICAgICAgICAg
IFNpemUsCisgICAgT1VUIFBNREwqICAgICAgICAgICBNZGwKKyAgICApCit7CisgICAgUFZPSUQg
ICAgICAgICAgICAgICBCdWZmZXI7CisKKyAgICAqTWRsID0gX19BbGxvY1BhZ2VzRm9yTWRsKFNp
emUpOworICAgIGlmICgqTWRsID09IE5VTEwpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiBN
bUFsbG9jYXRlUGFnZXNGb3JNZGxFeCBGYWlsZWQgJWQgYnl0ZXNcbiIsIENhbGxlciwgTGluZSwg
U2l6ZSk7CisgICAgICAgIGdvdG8gZmFpbDE7CisgICAgfQorCisgICAgaWYgKE1tR2V0TWRsQnl0
ZUNvdW50KCpNZGwpICE9IFNpemUpIHsKKyAgICAgICAgV2FybmluZygiJXM6JXUgOiAlZCBieXRl
cyAhPSAlZCBieXRlcyByZXF1ZXN0ZWRcbiIsIENhbGxlciwgTGluZSwgTW1HZXRNZGxCeXRlQ291
bnQoKk1kbCksIFNpemUpOworICAgICAgICBnb3RvIGZhaWwyOworICAgIH0KKworICAgIEJ1ZmZl
ciA9IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5Q2FjaGUoKk1kbCwgS2VybmVsTW9kZSwgTW1DYWNo
ZWQsIE5VTEwsIEZBTFNFLCBOb3JtYWxQYWdlUHJpb3JpdHkpOworICAgIGlmIChCdWZmZXIgPT0g
TlVMTCkgeworICAgICAgICBXYXJuaW5nKCIlczoldSA6IE1tTWFwTG9ja2VkUGFnZXNTcGVjaWZ5
Q2FjaGUgRmFpbGVkICVkIGJ5dGVzXG4iLCBDYWxsZXIsIExpbmUsIFNpemUpOworICAgICAgICBn
b3RvIGZhaWwzOworICAgIH0KKworICAgIHJldHVybiBCdWZmZXI7CisKK2ZhaWwzOgorZmFpbDI6
CisgICAgTW1GcmVlUGFnZXNGcm9tTWRsKCpNZGwpOworICAgIEV4RnJlZVBvb2woKk1kbCk7Citm
YWlsMToKKyAgICAqTWRsID0gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNkZWZpbmUgX19B
bGxvY1BhZ2VzKFNpemUsIE1kbCkgX19fQWxsb2NQYWdlcyhfX0ZVTkNUSU9OX18sIF9fTElORV9f
LCBTaXplLCBNZGwpCisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX0ZyZWVQYWdlcygKKyAg
ICBJTiAgUFZPSUQgICAgICAgICAgIEJ1ZmZlciwKKyAgICBJTiAgUE1ETCAgICAgICAgICAgIE1k
bAorICAgICkKK3sKKyAgICBpZiAoQnVmZmVyICYmIE1kbCkgeworICAgICAgICBNbVVubWFwTG9j
a2VkUGFnZXMoQnVmZmVyLCBNZGwpOworICAgICAgICBNbUZyZWVQYWdlc0Zyb21NZGwoTWRsKTsK
KyAgICAgICAgRXhGcmVlUG9vbChNZGwpOworICAgIH0KK30KKworI2VuZGlmICAvLyBfVVRJTF9I
CmRpZmYgLS1naXQgYS9zcmMveGVuZGlzay94ZW5kaXNrLnJjIGIvc3JjL3hlbmRpc2sveGVuZGlz
ay5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2E4ZjYwCi0tLSAvZGV2
L251bGwKKysrIGIvc3JjL3hlbmRpc2sveGVuZGlzay5yYwpAQCAtMCwwICsxLDU2IEBACisvKiBD
b3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisgKiBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQorICogZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyCisgKiBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisg
KiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+
CisjaW5jbHVkZSA8bnR2ZXJwLmg+CisKKworI3VuZGVmIFZFUl9DT01QQU5ZTkFNRV9TVFIKKyN1
bmRlZiBWRVJfUFJPRFVDVE5BTUVfU1RSCisjdW5kZWYgVkVSX1BST0RVQ1RWRVJTSU9OCisjdW5k
ZWYgVkVSX1BST0RVQ1RWRVJTSU9OX1NUUgorCisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisjZGVm
aW5lIFZFUl9DT01QQU5ZTkFNRV9TVFIgCQlDT01QQU5ZX05BTUVfU1RSCisjZGVmaW5lIFZFUl9M
RUdBTENPUFlSSUdIVF9TVFIgCQkiQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuIgor
CisjZGVmaW5lIFZFUl9QUk9EVUNUTkFNRV9TVFIgCQkiWEVORElTSyIKKyNkZWZpbmUgVkVSX1BS
T0RVQ1RWRVJTSU9OIAkJCU1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixNSUNST19WRVJTSU9O
LEJVSUxEX05VTUJFUgorI2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT05fU1RSIAkJTUFKT1JfVkVS
U0lPTl9TVFIgIi4iIE1JTk9SX1ZFUlNJT05fU1RSICIuIiBNSUNST19WRVJTSU9OX1NUUiAiLiIg
QlVJTERfTlVNQkVSX1NUUgorCisjZGVmaW5lIFZFUl9JTlRFUk5BTE5BTUVfU1RSIAkJIlhFTkRJ
U0suU1lTIgorI2RlZmluZSBWRVJfRklMRURFU0NSSVBUSU9OX1NUUiAJIlhFTkRJU0siCisKKyNk
ZWZpbmUgVkVSX0ZJTEVUWVBFIAkJCQlWRlRfRFJWCisjZGVmaW5lIFZFUl9GSUxFU1VCVFlQRSAJ
CQlWRlQyX0RSVl9TWVNURU0KKworI2luY2x1ZGUgPGNvbW1vbi52ZXI+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZiZC5pbmYgYi9zcmMveGVudmJkLmlu
ZgppbmRleCBiYzg2MjdiLi4yMGJkMzhhIDEwMDY0NAotLS0gYS9zcmMveGVudmJkLmluZgorKysg
Yi9zcmMveGVudmJkLmluZgpAQCAtNDUsNiArNDUsNyBAQCBDb0luc3RfQ29weUZpbGVzPTExCiAK
IFtTb3VyY2VEaXNrc0ZpbGVzXQogeGVudmJkLnN5cz0wLCwKK3hlbmRpc2suc3lzPTAsLAogeGVu
Y3JzaC5zeXM9MCwsCiB4ZW52YmRfY29pbnN0LmRsbD0wLCwKIApAQCAtNTksMTIgKzYwLDIwIEBA
IHhlbnZiZF9jb2luc3QuZGxsPTAsLAogW1hlblZiZF9JbnN0XSAKIENvcHlGaWxlcz1YZW5WYmRf
Q29weWZpbGVzCiAKK1tYZW5WYmRfSW5zdC5IV10KK0FkZFJlZz1YZW5WYmRfQWRkUmVnCisKK1tY
ZW5WYmRfQWRkUmVnXQorSEtSLCwiVXBwZXJGaWx0ZXJzIiwweDAwMDEwMDAwLCJ4ZW5kaXNrIgor
CiBbWGVuVmJkX0NvcHlmaWxlc10KIHhlbnZiZC5zeXMKK3hlbmRpc2suc3lzCiB4ZW5jcnNoLnN5
cwogCiBbWGVuVmJkX0luc3QuU2VydmljZXNdIAogQWRkU2VydmljZT14ZW52YmQsMixYZW5WYmRf
U2VydmljZSwKK0FkZFNlcnZpY2U9eGVuZGlzaywsWGVuRGlza19TZXJ2aWNlLAogCiBbWGVuVmJk
X1NlcnZpY2VdIAogRGlzcGxheU5hbWU9JVhlblZiZERlc2MlCkBAIC03NSw2ICs4NCwxNCBAQCBT
ZXJ2aWNlQmluYXJ5PSUxMiVceGVudmJkLnN5cwogTG9hZE9yZGVyR3JvdXA9IlNjc2kgTWluaXBv
cnQiCiBBZGRSZWc9WGVuVmJkX1BhcmFtZXRlcnMKIAorW1hlbkRpc2tfU2VydmljZV0KK0Rpc3Bs
YXlOYW1lPSVYZW5EaXNrRGVzYyUKK1NlcnZpY2VUeXBlPSVTRVJWSUNFX0tFUk5FTF9EUklWRVIl
CitTdGFydFR5cGU9JVNFUlZJQ0VfQk9PVF9TVEFSVCUKK0Vycm9yQ29udHJvbD0lU0VSVklDRV9F
UlJPUl9OT1JNQUwlCitTZXJ2aWNlQmluYXJ5PSUxMiVceGVuZGlzay5zeXMKK0xvYWRPcmRlckdy
b3VwPSJTY3NpIE1pbmlwb3J0IgorCiBbWGVuVmJkX1BhcmFtZXRlcnNdIAogSEtSLCJQYXJhbWV0
ZXJzIiwsMHgwMDAwMDAxMAogSEtSLCJQYXJhbWV0ZXJzIiwiQnVzVHlwZSIsMHgwMDAxMDAwMSww
eDAwMDAwMDAxIApAQCAtOTUsNiArMTEyLDcgQEAgSEtSLCxDb0luc3RhbGxlcnMzMiwweDAwMDEw
MDAwLCJ4ZW52YmRfY29pbnN0X0BNQUpPUl9WRVJTSU9OQF9ATUlOT1JfVkVSU0lPTkBfQE0KIENv
bXBhbnkgPSAiQENPTVBBTllfTkFNRUAiCiBEaXNrRGVzYyA9ICJAUFJPRFVDVF9OQU1FQCBQViBT
dG9yYWdlIEhvc3QgQWRhcHRlciBQYWNrYWdlIiAKIFhlblZiZERlc2M9ICJAUFJPRFVDVF9OQU1F
QCBQViBTdG9yYWdlIEhvc3QgQWRhcHRlciIKK1hlbkRpc2tEZXNjPSAiQFBST0RVQ1RfTkFNRUAg
UFYgU3RvcmFnZSBGaWx0ZXIiCiAKIFNFUlZJQ0VfQk9PVF9TVEFSVCA9IDB4MCAKIFNFUlZJQ0Vf
U1lTVEVNX1NUQVJUID0gMHgxIApkaWZmIC0tZ2l0IGEvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qIGIvdnMyMDEyL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qCmluZGV4IDVlNWZjYmMuLmUw
MjlkMTMgMTAwNjQ0Ci0tLSBhL3ZzMjAxMi9wYWNrYWdlL3BhY2thZ2UudmN4cHJvagorKysgYi92
czIwMTIvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAgLTQ4LDYgKzQ4LDkgQEAKIAkJPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiPgogCQkJPFBy
b2plY3Q+ezU4ZjViYzQzLWI5MmUtNGEyYi05NzVkLTAwNjZlYWIyOTA5Mn08L1Byb2plY3Q+CiAJ
CTwvUHJvamVjdFJlZmVyZW5jZT4KKwkJPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVu
ZGlza1x4ZW5kaXNrLnZjeHByb2oiPgorCQkJPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05
ZjU2LWUxMGEzZDJmNWJhZH08L1Byb2plY3Q+CisJCTwvUHJvamVjdFJlZmVyZW5jZT4KIAkJPFBy
b2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVudmJkXHhlbnZiZC52Y3hwcm9qIj4KIAkJCTxQ
cm9qZWN0PntlZjIzNjM3MS0zMTQ1LTQxYjEtOTljOS04MmIzM2UzNTNmMTd9PC9Qcm9qZWN0Pgog
CQk8L1Byb2plY3RSZWZlcmVuY2U+CkBAIC01OSw0ICs2Miw0IEBACiAJPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KIAk8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogCTwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMy
MDEyL3hlbmRpc2sveGVuZGlzay52Y3hwcm9qIGIvdnMyMDEyL3hlbmRpc2sveGVuZGlzay52Y3hw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTZhZDcKLS0tIC9kZXYv
bnVsbAorKysgYi92czIwMTIveGVuZGlzay94ZW5kaXNrLnZjeHByb2oKQEAgLTAsMCArMSw4NCBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1
bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCTxJbXBvcnQgUHJvamVj
dD0iLi5cY29uZmlncy5wcm9wcyIgLz4KKworCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKwkJPENvbmZpZ3VyYXRpb24+V2luZG93cyBWaXN0YSBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KwkJPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRm
b3JtPiAKKwkJPERlYnVnZ2VyRmxhdm9yPkRiZ2VuZ0tlcm5lbERlYnVnZ2VyPC9EZWJ1Z2dlckZs
YXZvcj4gCisJPC9Qcm9wZXJ0eUdyb3VwPgorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJQcm9lcHJ0
eVNoZWV0cyI+CisJCTxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjA8
L1BsYXRmb3JtVG9vbHNldD4KKwkJPENvbmZpZ3VyYXRpb25UeXBlPkRyaXZlcjwvQ29uZmlndXJh
dGlvblR5cGU+CisJCTxEcml2ZXJUeXBlPldETTwvRHJpdmVyVHlwZT4KKwk8L1Byb3BlcnR5R3Jv
dXA+CisKKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPgorCQorCTxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKwkJ
PFByb2plY3RHdWlkPntENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9PC9Qcm9q
ZWN0R3VpZD4KKwk8L1Byb3BlcnR5R3JvdXA+CisJCisJPEltcG9ydCBQcm9qZWN0PSIuLlx0YXJn
ZXRzLnByb3BzIiAvPgorCTxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPiAKKwkKKwk8UHJvcGVydHlHcm91cD4KKwkJPEluY2x1ZGVQYXRoPiQo
UHJvamVjdERpcikuLlwuLlxpbmNsdWRlOyQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4KKwkJ
PFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisJCTxFbmFibGVJbmYyY2F0
PmZhbHNlPC9FbmFibGVJbmYyY2F0PgorCQk8SW50RGlyPi4uXCQoUHJvamVjdE5hbWUpXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvSW50RGlyPgorCQk8T3V0RGlyPi4uXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorCTwvUHJvcGVydHlHcm91cD4K
KworCTxJdGVtRGVmaW5pdGlvbkdyb3VwPgorCQk8Q2xDb21waWxlPgorCQkJPEJ1ZmZlclNlY3Vy
aXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisJCQk8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X19NT0RVTEVfXz0iWEVORElTSyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQkJPFdhcm5pbmdMZXZlbD5FbmFibGVBbGxXYXJu
aW5nczwvV2FybmluZ0xldmVsPgorCQkJPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQ1NDg7NDcx
MTs0ODIwOzQ2Njg7NDI1NTs2MDAxOzYwNTQ7MjgxOTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgorCQkJPE11bHRpUHJvY2Vzc29yQ29tcGlsYXRp
b24+dHJ1ZTwvTXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj4KKwkJCTxFbmFibGVQUkVmYXN0PnRy
dWU8L0VuYWJsZVBSRWZhc3Q+CisJCTwvQ2xDb21waWxlPgorCQk8TGluaz4KKwkJCTxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKwkJPC9MaW5rPgorCQk8SW5m
PgorCQkJPFNwZWNpZnlBcmNoaXRlY3R1cmU+dHJ1ZTwvU3BlY2lmeUFyY2hpdGVjdHVyZT4KKwkJ
CTxTcGVjaWZ5RHJpdmVyVmVyRGlyZWN0aXZlVmVyc2lvbj50cnVlPC9TcGVjaWZ5RHJpdmVyVmVy
RGlyZWN0aXZlVmVyc2lvbj4KKwkJCTxUaW1lU3RhbXA+JChNQUpPUl9WRVJTSU9OKS4kKE1JTk9S
X1ZFUlNJT04pLiQoTUlDUk9fVkVSU0lPTikuJChCVUlMRF9OVU1CRVIpPC9UaW1lU3RhbXA+CisJ
CQk8RW5hYmxlVmVyYm9zZT50cnVlPC9FbmFibGVWZXJib3NlPgorCQk8L0luZj4KKwk8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisJPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0
Zm9ybSknPT0nV2luMzInIj4KKwkJPENsQ29tcGlsZT4KKwkJCTxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5fX2kzODZfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisJCTwvQ2xDb21waWxlPgorCQk8SW5mPgorCQkJPEFyY2hpdGVjdHVyZT54ODY8
L0FyY2hpdGVjdHVyZT4KKwkJPC9JbmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCTxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgorCQk8Q2xD
b21waWxlPgorCQkJPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9feDg2XzY0X187JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorCQk8L0NsQ29tcGls
ZT4KKwkJPEluZj4KKwkJCTxBcmNoaXRlY3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKwkJPC9J
bmY+CisJPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCisJPEl0ZW1Hcm91cD4KKwkJPEZpbGVzVG9Q
YWNrYWdlIEluY2x1ZGU9IiQoVGFyZ2V0UGF0aCkiIC8+CisJCTxGaWxlc1RvUGFja2FnZSBJbmNs
dWRlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiIgLz4KKwkJPEZpbGVzVG9QYWNrYWdlIElu
Y2x1ZGU9IkAoSW5mLT4nJShDb3B5T3V0cHV0KScpIiBDb25kaXRpb249IidAKEluZiknIT0nJyIg
Lz4KKwk8L0l0ZW1Hcm91cD4KKwk8SXRlbUdyb3VwPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
Ly4uL3NyYy94ZW5kaXNrL2RyaXZlci5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4u
L3NyYy94ZW5kaXNrL2Zkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94
ZW5kaXNrL3Bkby5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNr
L3RocmVhZC5jIiAvPgorCTwvSXRlbUdyb3VwPgorCTxJdGVtR3JvdXA+CisJCTxSZXNvdXJjZUNv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmRpc2tceGVuZGlzay5yYyIgLz4KKwk8L0l0ZW1H
cm91cD4KKwk8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4cHJvai51c2VyIGIvdnMyMDEyL3hlbmRp
c2sveGVuZGlzay52Y3hwcm9qLnVzZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGVjZGQ0NgotLS0gL2Rldi9udWxsCisrKyBiL3ZzMjAxMi94ZW5kaXNrL3hlbmRpc2sudmN4
cHJvai51c2VyCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKwk8UHJvcGVydHlHcm91
cD4KKwkJPFNpZ25Nb2RlPlRlc3RTaWduPC9TaWduTW9kZT4KKwkJPFRlc3RDZXJ0aWZpY2F0ZT4u
LlwuLlxzcmNceGVudmJkLnBmeDwvVGVzdENlcnRpZmljYXRlPgorCQk8VGltZVN0YW1wU2VydmVy
Pmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltc3RhbXAuZGxsPC9UaW1l
U3RhbXBTZXJ2ZXI+CisJPC9Qcm9wZXJ0eUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEv
dnMyMDEyL3hlbnZiZC5zbG4gYi92czIwMTIveGVudmJkLnNsbgppbmRleCA4NmZiMWE1Li43MWMy
NzgwIDEwMDY0NAotLS0gYS92czIwMTIveGVudmJkLnNsbgorKysgYi92czIwMTIveGVudmJkLnNs
bgpAQCAtOCw3ICs4LDEwIEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9qZWN0CiBQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmNy
c2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEyQi05NzVE
LTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNrLnZjeHBy
b2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iIAorRW5kUHJvamVj
dAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4
ZW52YmRfY29pbnN0IiwgImNvaW5zdFx4ZW52YmRfY29pbnN0LnZjeHByb2oiLCAiezUwQzA4NDM3
LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0iCitFbmRQcm9qZWN0CiAJUHJvamVjdFNlY3Rp
b24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7NThGNUJDNDMtQjkyRS00
QTJCLTk3NUQtMDA2NkVBQjI5MDkyfSA9IHs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFC
MjkwOTJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE2LDYgKzE5LDcgQEAgRW5kUHJvamVjdAog
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNr
YWdlIiwgInBhY2thZ2VccGFja2FnZS52Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlB
My1DNjQzRjFGQzE5NzJ9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKIAkJezUwQzA4NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7
NTBDMDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9CiAJCXs1OEY1QkM0My1COTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVC
QzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNF
MzUzRjE3fQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0zNiw4ICs0MCwzMiBAQCBHbG9iYWwKIAkJ
V2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlF
bmRHbG9iYWxTZWN0aW9uCiAJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRm
b3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJG
NUJBRH0uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcg
RGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNm
ZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4NjQgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgNyBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyA3IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDEx
QjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IFJlbGVhc2V8V2luMzIu
QnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQt
OUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgNyBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBXaW5k
b3dzIDcgUmVsZWFzZXx4NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH0uV2luZG93cyA3IFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIDcgUmVsZWFzZXx4NjQg
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDggRGVidWd8V2luMzIKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IERlYnVnfFdpbjMyLkJ1aWxkLjAg
PSBXaW5kb3dzIDggRGVidWd8V2luMzIgCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBB
M0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVn
fHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4
IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQWN0aXZl
Q2ZnID0gV2luZG93cyA4IFJlbGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2
LUUxMEEzRDJGNUJBRH0uV2luZG93cyA4IFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3Mg
OCBSZWxlYXNlfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVs
ZWFzZXx4NjQuQnVpbGQuMCA9IFdpbmRvd3MgOCBSZWxlYXNlfHg2NCAKKwkJe0Q3NDExQjJDLTJD
NDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBEZWJ1Z3xXaW4zMi5BY3Rp
dmVDZmcgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyIAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZp
c3RhIERlYnVnfHg2NCAKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0u
V2luZG93cyBWaXN0YSBEZWJ1Z3x4NjQuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0
IAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3Rh
IFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxlYXNlfFdpbjMyIAor
CQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJl
bGVhc2V8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMiAKKwkJe0Q3
NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0IAorCQl7RDc0MTFCMkMt
MkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0LkJ1
aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CQorCQl7RUYyMzYzNzEtMzE0NS00MUIx
LTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9IFdpbmRv
d3MgNyBEZWJ1Z3xXaW4zMiAKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30uV2luZG93cyA3IERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4z
MgotCQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVi
dWd8V2luMzIuQnVpbGQuMCA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgogCQl7RUYyMzYzNzEtMzE0
NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IFdpbmRvd3MgNyBEZWJ1Z3x4NjQKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAog
CQl7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fS5XaW5kb3dzIDcgUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgpkaWZmIC0tZ2l0IGEv
dnMyMDEzL3BhY2thZ2UvcGFja2FnZS52Y3hwcm9qIGIvdnMyMDEzL3BhY2thZ2UvcGFja2FnZS52
Y3hwcm9qCmluZGV4IDVkMGRlNGQuLjUwMDFjNjEgMTAwNjQ0Ci0tLSBhL3ZzMjAxMy9wYWNrYWdl
L3BhY2thZ2UudmN4cHJvagorKysgYi92czIwMTMvcGFja2FnZS9wYWNrYWdlLnZjeHByb2oKQEAg
LTc3LDYgKzc3LDkgQEAKICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4ZW5jcnNo
XHhlbmNyc2gudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57NThmNWJjNDMtYjkyZS00YTJiLTk3
NWQtMDA2NmVhYjI5MDkyfTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceGVuZGlza1x4ZW5kaXNrLnZjeHByb2oiPgor
ICAgICAgPFByb2plY3Q+e2Q3NDExYjJjLTJjNDMtNDM0ZC05ZjU2LWUxMGEzZDJmNWJhZH08L1By
b2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Ii4uXHhlbnZiZFx4ZW52YmQudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ZWYyMzYz
NzEtMzE0NS00MWIxLTk5YzktODJiMzNlMzUzZjE3fTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RS
ZWZlcmVuY2U+CkBAIC04OCw0ICs5MSw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmRp
c2sveGVuZGlzay51c2VyIGIvdnMyMDEzL3hlbmRpc2sveGVuZGlzay51c2VyCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Yjg0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi92czIw
MTMveGVuZGlzay94ZW5kaXNrLnVzZXIKQEAgLTAsMCArMSw4IEBACivvu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
PgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8U2lnbk1vZGU+VGVzdFNpZ248L1NpZ25Nb2RlPgor
ICAgIDxUZXN0Q2VydGlmaWNhdGU+Li5cLi5cc3JjXHhlbnZiZC5wZng8L1Rlc3RDZXJ0aWZpY2F0
ZT4KKyAgICA8VGltZVN0YW1wU2VydmVyPmh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3Nj
cmlwdHMvdGltc3RhbXAuZGxsPC9UaW1lU3RhbXBTZXJ2ZXI+CisgIDwvUHJvcGVydHlHcm91cD4K
KzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvaiBi
L3ZzMjAxMy94ZW5kaXNrL3hlbmRpc2sudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jZGYzYWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdnMyMDEzL3hlbmRpc2sveGVu
ZGlzay52Y3hwcm9qCkBAIC0wLDAgKzEsMTEyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cY29uZmlncy5wcm9wcyIgLz4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uPldp
bmRvd3MgVmlzdGEgRGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlv
bj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxEZWJ1Z2dlckZs
YXZvcj5EYmdlbmdLZXJuZWxEZWJ1Z2dlcjwvRGVidWdnZXJGbGF2b3I+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlByb2VwcnR5U2hlZXRzIj4KKyAgICA8Q29u
ZmlndXJhdGlvblR5cGU+RHJpdmVyPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8RHJpdmVyVHlw
ZT5XRE08L0RyaXZlclR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA4IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBW
aXN0YSBEZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1v
ZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzInIj4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93
cyA3IFJlbGVhc2V8V2luMzInIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxN
b2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyA3IERlYnVnfFdpbjMyJyI+CisgICAgPFBsYXRm
b3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9u
IiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1dpbmRvd3MgOCBE
ZWJ1Z3xXaW4zMiciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2
ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggUmVsZWFzZXx4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nV2luZG93cyBWaXN0YSBEZWJ1
Z3x4NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4x
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nV2luZG93cyBWaXN0YSBSZWxlYXNlfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+V2luZG93c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDcgUmVsZWFzZXx4
NjQnIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PldpbmRvd3NLZXJuZWxNb2RlRHJpdmVyOC4xPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nV2luZG93cyA3IERlYnVnfHg2NCciPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+V2luZG93
c0tlcm5lbE1vZGVEcml2ZXI4LjE8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdXaW5kb3dzIDggRGVidWd8eDY0JyI+CisgICAg
PFBsYXRmb3JtVG9vbHNldD5XaW5kb3dzS2VybmVsTW9kZURyaXZlcjguMTwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxz
Ij4KKyAgICA8UHJvamVjdEd1aWQ+e0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJB
RH08L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0i
Li5cdGFyZ2V0cy5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxJbmNsdWRl
UGF0aD4kKFByb2plY3REaXIpLi5cLi5caW5jbHVkZTskKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+CisgICAgPFJ1bkNvZGVBbmFseXNpcz50cnVlPC9SdW5Db2RlQW5hbHlzaXM+CisgICAgPEVu
YWJsZUluZjJjYXQ+ZmFsc2U8L0VuYWJsZUluZjJjYXQ+CisgICAgPEludERpcj4uLlwkKFByb2pl
Y3ROYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKVwkKFBsYXRmb3JtKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyPi4uXCQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUGxhdGZvcm0pXDwvT3V0RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+
CisgICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fX01PRFVMRV9fPSJYRU5ESVNLIjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
V2FybmluZ0xldmVsPkVuYWJsZUFsbFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+NDU0ODs0NzExOzQ4MjA7NDY2ODs0MjU1OzYwMDE7NjA1NDsy
ODE5NjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
CisgICAgICA8TXVsdGlQcm9jZXNzb3JDb21waWxhdGlvbj50cnVlPC9NdWx0aVByb2Nlc3NvckNv
bXBpbGF0aW9uPgorICAgICAgPEVuYWJsZVBSRWZhc3Q+dHJ1ZTwvRW5hYmxlUFJFZmFzdD4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
PiQoRERLX0xJQl9QQVRIKS9saWJjbnRwci5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwv
QWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPEluZj4KKyAgICAgIDxT
cGVjaWZ5QXJjaGl0ZWN0dXJlPnRydWU8L1NwZWNpZnlBcmNoaXRlY3R1cmU+CisgICAgICA8U3Bl
Y2lmeURyaXZlclZlckRpcmVjdGl2ZVZlcnNpb24+dHJ1ZTwvU3BlY2lmeURyaXZlclZlckRpcmVj
dGl2ZVZlcnNpb24+CisgICAgICA8VGltZVN0YW1wPiQoTUFKT1JfVkVSU0lPTikuJChNSU5PUl9W
RVJTSU9OKS4kKE1JQ1JPX1ZFUlNJT04pLiQoQlVJTERfTlVNQkVSKTwvVGltZVN0YW1wPgorICAg
ICAgPEVuYWJsZVZlcmJvc2U+dHJ1ZTwvRW5hYmxlVmVyYm9zZT4KKyAgICA8L0luZj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+X19pMzg2X187JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxJbmY+CisgICAgICA8
QXJjaGl0ZWN0dXJlPng4NjwvQXJjaGl0ZWN0dXJlPgorICAgIDwvSW5mPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZv
cm0pJz09J3g2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+X194ODZfNjRfXzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPEluZj4KKyAgICAgIDxBcmNoaXRl
Y3R1cmU+YW1kNjQ8L0FyY2hpdGVjdHVyZT4KKyAgICA8L0luZj4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKFRh
cmdldFBhdGgpIiAvPgorICAgIDxGaWxlc1RvUGFja2FnZSBJbmNsdWRlPSIkKE91dERpcikkKFRh
cmdldE5hbWUpLnBkYiIgLz4KKyAgICA8RmlsZXNUb1BhY2thZ2UgSW5jbHVkZT0iQChJbmYtPicl
KENvcHlPdXRwdXQpJykiIENvbmRpdGlvbj0iJ0AoSW5mKSchPScnIiAvPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5k
aXNrL2RyaXZlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmRp
c2svZmRvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuZGlzay9w
ZG8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5kaXNrL3RocmVh
ZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5kaXNrXHhlbmRpc2sucmMiIC8+CisgIDwvSXRlbUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50
YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL3ZzMjAxMy94ZW52YmQuc2xuIGIvdnMyMDEzL3hlbnZiZC5zbG4KaW5kZXggMTMxMjhj
NS4uNjBkOTUxMyAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbnZiZC5zbG4KKysrIGIvdnMyMDEzL3hl
bnZiZC5zbG4KQEAgLTgsNiArOCw4IEBAIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQx
MS0wMEEwQzkxQkM5NDJ9IikgPSAieGVudmJkIiwgInhlbnZiZFx4ZW52YmQudmN4CiBFbmRQcm9q
ZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0g
InhlbmNyc2giLCAieGVuY3JzaFx4ZW5jcnNoLnZjeHByb2oiLCAiezU4RjVCQzQzLUI5MkUtNEEy
Qi05NzVELTAwNjZFQUIyOTA5Mn0iCiBFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0
QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhlbmRpc2siLCAieGVuZGlza1x4ZW5kaXNr
LnZjeHByb2oiLCAie0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0iCitFbmRQ
cm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gInhlbnZiZF9jb2luc3QiLCAiY29pbnN0XHhlbnZiZF9jb2luc3QudmN4cHJvaiIsICJ7NTBD
MDg0MzctQzFGMy00MzQ5LUJGNkEtN0I1NUEwNkJGOTk5fSIKICAgICBQcm9qZWN0U2VjdGlvbihQ
cm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJCXs1OEY1QkM0My1COTJFLTRBMkIt
OTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAwNjZFQUIyOTA5
Mn0KQEAgLTE2LDYgKzE4LDcgQEAgRW5kUHJvamVjdAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwYWNrYWdlIiwgInBhY2thZ2VccGFja2FnZS52
Y3hwcm9qIiwgIntBQjhEQUVEMy05RDcwLTQ5MDctOTlBMy1DNjQzRjFGQzE5NzJ9IgogICAgIFBy
b2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJezUwQzA4
NDM3LUMxRjMtNDM0OS1CRjZBLTdCNTVBMDZCRjk5OX0gPSB7NTBDMDg0MzctQzFGMy00MzQ5LUJG
NkEtN0I1NUEwNkJGOTk5fQorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFE
fSA9IHtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9CiAJCXs1OEY1QkM0My1C
OTJFLTRBMkItOTc1RC0wMDY2RUFCMjkwOTJ9ID0gezU4RjVCQzQzLUI5MkUtNEEyQi05NzVELTAw
NjZFQUIyOTA5Mn0KICAgICAgICAge0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1M0Yx
N30gPSB7RUYyMzYzNzEtMzE0NS00MUIxLTk5QzktODJCMzNFMzUzRjE3fQogCUVuZFByb2plY3RT
ZWN0aW9uCkBAIC0zNiw2ICszOSwzMCBAQCBHbG9iYWwKIAkJV2luZG93cyBWaXN0YSBSZWxlYXNl
fHg2NCA9IFdpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCiAJR2xv
YmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24K
KwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERlYnVn
fFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0
My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8V2luMzIuQnVpbGQuMCA9
IFdpbmRvd3MgNyBEZWJ1Z3xXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNE
MkY1QkFEfS5XaW5kb3dzIDcgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBEZWJ1Z3x4
NjQKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2luZG93cyA3IERl
YnVnfHg2NC5CdWlsZC4wID0gV2luZG93cyA3IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcg
PSBXaW5kb3dzIDcgUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyA3IFJl
bGVhc2V8V2luMzIKKwkJe0Q3NDExQjJDLTJDNDMtNDM0RC05RjU2LUUxMEEzRDJGNUJBRH0uV2lu
ZG93cyA3IFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7
RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDcgUmVsZWFzZXx4
NjQuQnVpbGQuMCA9IFdpbmRvd3MgNyBSZWxlYXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRE
LTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2lu
ZG93cyA4IERlYnVnfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVC
QUR9LldpbmRvd3MgOCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gV2luZG93cyA4IERlYnVnfFdpbjMy
CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBEZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyA4IERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00
MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggRGVidWd8eDY0LkJ1aWxkLjAgPSBXaW5k
b3dzIDggRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgOCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFdpbmRvd3MgOCBSZWxlYXNlfFdp
bjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBS
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIDggUmVsZWFzZXxXaW4zMgorCQl7RDc0MTFC
MkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIDggUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gV2luZG93cyA4IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1
Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgOCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gV2luZG93cyA4
IFJlbGVhc2V8eDY0CisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9Lldp
bmRvd3MgVmlzdGEgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBEZWJ1Z3xX
aW4zMgorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dzIFZp
c3RhIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIERlYnVnfFdpbjMyCisJCXtE
NzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IFdpbmRvd3MgVmlzdGEgRGVidWd8eDY0CisJCXtENzQxMUIyQy0yQzQz
LTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9LldpbmRvd3MgVmlzdGEgRGVidWd8eDY0LkJ1aWxkLjAg
PSBXaW5kb3dzIFZpc3RhIERlYnVnfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEw
QTNEMkY1QkFEfS5XaW5kb3dzIFZpc3RhIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gV2luZG93
cyBWaXN0YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0Qy
RjVCQUR9LldpbmRvd3MgVmlzdGEgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gV2luZG93cyBWaXN0
YSBSZWxlYXNlfFdpbjMyCisJCXtENzQxMUIyQy0yQzQzLTQzNEQtOUY1Ni1FMTBBM0QyRjVCQUR9
LldpbmRvd3MgVmlzdGEgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gV2luZG93cyBWaXN0YSBSZWxl
YXNlfHg2NAorCQl7RDc0MTFCMkMtMkM0My00MzRELTlGNTYtRTEwQTNEMkY1QkFEfS5XaW5kb3dz
IFZpc3RhIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBXaW5kb3dzIFZpc3RhIFJlbGVhc2V8eDY0CiAJ
CXtFRjIzNjM3MS0zMTQ1LTQxQjEtOTlDOS04MkIzM0UzNTNGMTd9LldpbmRvd3MgNyBEZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUt
NDFCMS05OUM5LTgyQjMzRTM1M0YxN30uV2luZG93cyA3IERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBX
aW5kb3dzIDcgRGVidWd8V2luMzIKIAkJe0VGMjM2MzcxLTMxNDUtNDFCMS05OUM5LTgyQjMzRTM1
M0YxN30uV2luZG93cyA3IERlYnVnfHg2NC5BY3RpdmVDZmcgPSBXaW5kb3dzIDcgRGVidWd8eDY0
Ci0tIAoyLjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:25:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:25:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1jp-0006XN-Ug; Mon, 22 Sep 2014 11:25:01 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW1jo-0006X2-Cz
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:25:00 +0000
Received: from [193.109.254.147:30940] by server-4.bemta-14.messagelabs.com id
	23/4C-01677-B0700245; Mon, 22 Sep 2014 11:24:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411385098!7564835!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17844 invoked from network); 22 Sep 2014 11:24:58 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:24:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25126161"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
	BLKIF_OP_DISCARD requests
Thread-Index: AQHP1lSRXIC+BMRtzkG5xYjovz7KupwNAXrQ
Date: Mon, 22 Sep 2014 11:24:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BA35@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly
	into	BLKIF_OP_DISCARD requests
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
> BLKIF_OP_DISCARD requests
> 
> From: Owen Smith <owen.smith@citrix.com>
> 
> SCSIOP_UNMAP requests contain a list of extents to discard and each
> BLKIF_OP_DISCARD only handles a single extent. Break a SRB doen into

s/doen/down

> multiple
> ring requests as neccessary.
> 

s/necessary/necessary

> Signed-off-by: Owen Smith <owen.smith@citrix.com>
> ---
>  src/xenvbd/pdo.c | 101
> ++++++++++++++++++++++++++++++++++++++++++++++---------
>  1 file changed, 86 insertions(+), 15 deletions(-)
> 
> diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
> index 9762944..c5b0b3f 100644
> --- a/src/xenvbd/pdo.c
> +++ b/src/xenvbd/pdo.c
> @@ -1445,6 +1445,41 @@ PrepareSyncCache(
>      return STATUS_SUCCESS;
>  }
> 
> +static FORCEINLINE ULONG64
> +__Get8Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (ULONG64)Bytes[0] << 56 |
> +           (ULONG64)Bytes[1] << 48 |
> +           (ULONG64)Bytes[2] << 40 |
> +           (ULONG64)Bytes[3] << 32 |
> +           (ULONG64)Bytes[4] << 24 |
> +           (ULONG64)Bytes[5] << 16 |
> +           (ULONG64)Bytes[6] << 8  |
> +           (ULONG64)Bytes[7];
> +}
> +
> +static FORCEINLINE ULONG
> +__Get4Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (ULONG)Bytes[0] << 24 |
> +           (ULONG)Bytes[1] << 16 |
> +           (ULONG)Bytes[2] << 8  |
> +           (ULONG)Bytes[3];
> +}
> +
> +static FORCEINLINE USHORT
> +__Get2Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (USHORT)Bytes[0] << 8 |
> +           (USHORT)Bytes[1];
> +}
> +

Could we not use byteswap intrinsics here? See http://msdn.microsoft.com/en-us/library/a3140177.aspx

>  __checkReturn
>  static NTSTATUS
>  PrepareUnmap(
> @@ -1452,26 +1487,62 @@ PrepareUnmap(
>      __in PSCSI_REQUEST_BLOCK     Srb
>      )
>  {
> -    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
> -    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
> -    if (Request == NULL)
> -        return STATUS_UNSUCCESSFUL;
> +    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
> +    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
> +    ULONG               Count = __Get2Bytes(Unmap->DataLength) /
> __Get2Bytes(Unmap->BlockDescrDataLength);
> +    ULONG               Index;
> +    LIST_ENTRY          List;
> 
> -    SrbExt->Count = 1;
> -    // mark the SRB as pending, completion will check for pending to detect
> failures
> +    InitializeListHead(&List);
>      Srb->SrbStatus = SRB_STATUS_PENDING;
> +    SrbExt->Count = 0;
> 
> -    Request->Srb        = Srb;
> -    Request->Id         = PdoGetTag(Pdo);
> -    Request->Operation  = BLKIF_OP_DISCARD;
> -    Request->FirstSector = Cdb_LogicalBlock(Srb);
> -    Request->NrSectors   = Cdb_TransferBlock(Srb);
> -    Request->Flags       = 0;
> -    InitializeListHead(&Request->Segments);
> +    for (Index = 0; Index < Count; ++Index) {
> +        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
> +        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo-
> >RequestList);
> +        if (Request == NULL)
> +            goto fail1;
> 
> -    __PdoIncBlkifOpCount(Pdo, Request);
> -    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
> +        ++SrbExt->Count;
> +        InsertTailList(&List, &Request->Entry);
> +
> +        Request->Srb            = Srb;
> +        Request->Id             = PdoGetTag(Pdo);
> +        Request->Operation      = BLKIF_OP_DISCARD;
> +        Request->FirstSector    = __Get8Bytes(Descr->StartingLba);
> +        Request->NrSectors      = __Get4Bytes(Descr->LbaCount);
> +        Request->Flags          = 0;
> +        InitializeListHead(&Request->Segments);
> +    }
> +
> +    for (;;) {

Any particular reason why not to use:

while (!IsListEmpty(&List)) ?

> +        PXENVBD_REQUEST Request;
> +        PLIST_ENTRY     Entry;
> +
> +        Entry = RemoveHeadList(&List);
> +        if (Entry == &List)
> +            break;
> +
> +        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
> +        __PdoIncBlkifOpCount(Pdo, Request);
> +        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
> +    }
>      return STATUS_SUCCESS;
> +
> +fail1:
> +    for (;;) {

Same here.

  Paul

> +        PXENVBD_REQUEST Request;
> +        PLIST_ENTRY     Entry;
> +
> +        Entry = RemoveHeadList(&List);
> +        if (Entry == &List)
> +            break;
> +
> +        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
> +        __LookasideFree(&Pdo->RequestList, Request);
> +        --SrbExt->Count;
> +    }
> +    return STATUS_NO_MEMORY;
>  }
> 
> 
> //=========================================================
> ====================
> --
> 2.1.0
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:25:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:25:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1jp-0006XN-Ug; Mon, 22 Sep 2014 11:25:01 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW1jo-0006X2-Cz
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:25:00 +0000
Received: from [193.109.254.147:30940] by server-4.bemta-14.messagelabs.com id
	23/4C-01677-B0700245; Mon, 22 Sep 2014 11:24:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411385098!7564835!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17844 invoked from network); 22 Sep 2014 11:24:58 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:24:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25126161"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
	BLKIF_OP_DISCARD requests
Thread-Index: AQHP1lSRXIC+BMRtzkG5xYjovz7KupwNAXrQ
Date: Mon, 22 Sep 2014 11:24:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BA35@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly
	into	BLKIF_OP_DISCARD requests
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 1/3] Decode SCSIOP_UNMAP correctly into
> BLKIF_OP_DISCARD requests
> 
> From: Owen Smith <owen.smith@citrix.com>
> 
> SCSIOP_UNMAP requests contain a list of extents to discard and each
> BLKIF_OP_DISCARD only handles a single extent. Break a SRB doen into

s/doen/down

> multiple
> ring requests as neccessary.
> 

s/necessary/necessary

> Signed-off-by: Owen Smith <owen.smith@citrix.com>
> ---
>  src/xenvbd/pdo.c | 101
> ++++++++++++++++++++++++++++++++++++++++++++++---------
>  1 file changed, 86 insertions(+), 15 deletions(-)
> 
> diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
> index 9762944..c5b0b3f 100644
> --- a/src/xenvbd/pdo.c
> +++ b/src/xenvbd/pdo.c
> @@ -1445,6 +1445,41 @@ PrepareSyncCache(
>      return STATUS_SUCCESS;
>  }
> 
> +static FORCEINLINE ULONG64
> +__Get8Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (ULONG64)Bytes[0] << 56 |
> +           (ULONG64)Bytes[1] << 48 |
> +           (ULONG64)Bytes[2] << 40 |
> +           (ULONG64)Bytes[3] << 32 |
> +           (ULONG64)Bytes[4] << 24 |
> +           (ULONG64)Bytes[5] << 16 |
> +           (ULONG64)Bytes[6] << 8  |
> +           (ULONG64)Bytes[7];
> +}
> +
> +static FORCEINLINE ULONG
> +__Get4Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (ULONG)Bytes[0] << 24 |
> +           (ULONG)Bytes[1] << 16 |
> +           (ULONG)Bytes[2] << 8  |
> +           (ULONG)Bytes[3];
> +}
> +
> +static FORCEINLINE USHORT
> +__Get2Bytes(
> +    IN PUCHAR                   Bytes
> +    )
> +{
> +    return (USHORT)Bytes[0] << 8 |
> +           (USHORT)Bytes[1];
> +}
> +

Could we not use byteswap intrinsics here? See http://msdn.microsoft.com/en-us/library/a3140177.aspx

>  __checkReturn
>  static NTSTATUS
>  PrepareUnmap(
> @@ -1452,26 +1487,62 @@ PrepareUnmap(
>      __in PSCSI_REQUEST_BLOCK     Srb
>      )
>  {
> -    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
> -    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
> -    if (Request == NULL)
> -        return STATUS_UNSUCCESSFUL;
> +    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
> +    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
> +    ULONG               Count = __Get2Bytes(Unmap->DataLength) /
> __Get2Bytes(Unmap->BlockDescrDataLength);
> +    ULONG               Index;
> +    LIST_ENTRY          List;
> 
> -    SrbExt->Count = 1;
> -    // mark the SRB as pending, completion will check for pending to detect
> failures
> +    InitializeListHead(&List);
>      Srb->SrbStatus = SRB_STATUS_PENDING;
> +    SrbExt->Count = 0;
> 
> -    Request->Srb        = Srb;
> -    Request->Id         = PdoGetTag(Pdo);
> -    Request->Operation  = BLKIF_OP_DISCARD;
> -    Request->FirstSector = Cdb_LogicalBlock(Srb);
> -    Request->NrSectors   = Cdb_TransferBlock(Srb);
> -    Request->Flags       = 0;
> -    InitializeListHead(&Request->Segments);
> +    for (Index = 0; Index < Count; ++Index) {
> +        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
> +        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo-
> >RequestList);
> +        if (Request == NULL)
> +            goto fail1;
> 
> -    __PdoIncBlkifOpCount(Pdo, Request);
> -    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
> +        ++SrbExt->Count;
> +        InsertTailList(&List, &Request->Entry);
> +
> +        Request->Srb            = Srb;
> +        Request->Id             = PdoGetTag(Pdo);
> +        Request->Operation      = BLKIF_OP_DISCARD;
> +        Request->FirstSector    = __Get8Bytes(Descr->StartingLba);
> +        Request->NrSectors      = __Get4Bytes(Descr->LbaCount);
> +        Request->Flags          = 0;
> +        InitializeListHead(&Request->Segments);
> +    }
> +
> +    for (;;) {

Any particular reason why not to use:

while (!IsListEmpty(&List)) ?

> +        PXENVBD_REQUEST Request;
> +        PLIST_ENTRY     Entry;
> +
> +        Entry = RemoveHeadList(&List);
> +        if (Entry == &List)
> +            break;
> +
> +        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
> +        __PdoIncBlkifOpCount(Pdo, Request);
> +        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
> +    }
>      return STATUS_SUCCESS;
> +
> +fail1:
> +    for (;;) {

Same here.

  Paul

> +        PXENVBD_REQUEST Request;
> +        PLIST_ENTRY     Entry;
> +
> +        Entry = RemoveHeadList(&List);
> +        if (Entry == &List)
> +            break;
> +
> +        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
> +        __LookasideFree(&Pdo->RequestList, Request);
> +        --SrbExt->Count;
> +    }
> +    return STATUS_NO_MEMORY;
>  }
> 
> 
> //=========================================================
> ====================
> --
> 2.1.0
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:26:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1kn-0006eR-DK; Mon, 22 Sep 2014 11:26:01 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW1km-0006e1-8e
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:26:00 +0000
Received: from [85.158.137.68:52188] by server-10.bemta-3.messagelabs.com id
	CD/78-01456-74700245; Mon, 22 Sep 2014 11:25:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-31.messagelabs.com!1411385158!11283822!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30072 invoked from network); 22 Sep 2014 11:25:59 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:25:59 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25126264"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
Thread-Index: AQHP1lSWzv2BTMBrNUGw7ZWD6besmpwNAzYQ
Date: Mon, 22 Sep 2014 11:25:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BA47@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
> 
> XenVbd's sdv build requires output from XenCrsh's sdv build, reorder to
> make sdv work
> 
> Signed-off-by: Owen smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

> ---
>  build.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/build.py b/build.py
> index d681fb3..26261ad 100644
> --- a/build.py
> +++ b/build.py
> @@ -367,8 +367,8 @@ if __name__ == '__main__':
>      symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
> 
>      if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
> -        run_sdv('xenvbd', driver, vs)
>          run_sdv('xencrsh', driver, vs)
> +        run_sdv('xenvbd', driver, vs)
> 
>      archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
>      archive(driver + '.tar', [driver,'revision'])
> --
> 2.1.0
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:26:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW1kn-0006eR-DK; Mon, 22 Sep 2014 11:26:01 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW1km-0006e1-8e
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:26:00 +0000
Received: from [85.158.137.68:52188] by server-10.bemta-3.messagelabs.com id
	CD/78-01456-74700245; Mon, 22 Sep 2014 11:25:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-31.messagelabs.com!1411385158!11283822!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30072 invoked from network); 22 Sep 2014 11:25:59 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:25:59 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25126264"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
Thread-Index: AQHP1lSWzv2BTMBrNUGw7ZWD6besmpwNAzYQ
Date: Mon, 22 Sep 2014 11:25:43 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BA47@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 2/3] Run XenCrsh sdv before XenVbd sdv
> 
> XenVbd's sdv build requires output from XenCrsh's sdv build, reorder to
> make sdv work
> 
> Signed-off-by: Owen smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

> ---
>  build.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/build.py b/build.py
> index d681fb3..26261ad 100644
> --- a/build.py
> +++ b/build.py
> @@ -367,8 +367,8 @@ if __name__ == '__main__':
>      symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
> 
>      if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
> -        run_sdv('xenvbd', driver, vs)
>          run_sdv('xencrsh', driver, vs)
> +        run_sdv('xenvbd', driver, vs)
> 
>      archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
>      archive(driver + '.tar', [driver,'revision'])
> --
> 2.1.0
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:53:08 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:53:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW2B2-0007h4-MM; Mon, 22 Sep 2014 11:53:08 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW2Ay-0007gs-41
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:53:06 +0000
Received: from [85.158.143.35:31999] by server-2.bemta-4.messagelabs.com id
	54/DD-04525-F9D00245; Mon, 22 Sep 2014 11:53:03 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1411386782!12355847!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6459 invoked from network); 22 Sep 2014 11:53:02 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-8.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:53:02 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25128153"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
Thread-Index: AQHP1lSdtdzY1b6hCkSDjv52ERkS+JwNBzsQ
Date: Mon, 22 Sep 2014 11:53:01 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BAEE@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
> 
> XenDisk intercepts and translates
> IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
> into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP
> requests
> to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
> XenDisk is only neccessary because Storport does not do the translation
> to SCSIOP_UNMAP SRBs.
> 
> Signed-off-by: Owen smith <owen.smith@citrix.com>
> ---
[snip]
> diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
> new file mode 100644
> index 0000000..c815a1e
> --- /dev/null
> +++ b/src/xendisk/pdo.c
> @@ -0,0 +1,2126 @@
> +/* Copyright (c) Citrix Systems Inc.
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms,
> + * with or without modification, are permitted provided
> + * that the following conditions are met:
> + *
> + * *   Redistributions of source code must retain the above
> + *     copyright notice, this list of conditions and the
> + *     following disclaimer.
> + * *   Redistributions in binary form must reproduce the above
> + *     copyright notice, this list of conditions and the
> + *     following disclaimer in the documentation and/or other
> + *     materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
> + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
> + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
> + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + */
> +
> +#define INITGUID 1
> +
> +#include <ntddk.h>
> +#include <wdmguid.h>
> +#include <ntstrsafe.h>
> +#include <stdlib.h>
> +#include <storport.h>
> +#include <Ntddstor.h>
> +#include <Ntddscsi.h>
> +#include <names.h>
> +
> +#include "fdo.h"
> +#include "pdo.h"
> +#include "driver.h"
> +#include "thread.h"
> +#include "debug.h"
> +#include "assert.h"
> +#include "util.h"
> +
> +#define PDO_TAG 'ODP'
> +
> +struct _XENDISK_PDO {
> +    PXENDISK_DX                 Dx;
> +    PDEVICE_OBJECT              LowerDeviceObject;
> +    PDEVICE_OBJECT              PhysicalDeviceObject;
> +
> +    PXENDISK_THREAD             SystemPowerThread;
> +    PIRP                        SystemPowerIrp;
> +    PXENDISK_THREAD             DevicePowerThread;
> +    PIRP                        DevicePowerIrp;
> +
> +    PXENDISK_FDO                Fdo;
> +    BOOLEAN                     Missing;
> +    const CHAR                  *Reason;
> +
> +    ULONG                       SectorSize;
> +};
> +
> +static FORCEINLINE PVOID
> +__PdoAllocate(
> +    IN  ULONG   Length
> +    )
> +{
> +    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__,
> Length, PDO_TAG);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoFree(
> +    IN  PVOID   Buffer
> +    )
> +{
> +    __FreePoolWithTag(Buffer, PDO_TAG);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    // We can never transition out of the deleted state
> +    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
> +
> +    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
> +    Dx->DevicePnpState = State;
> +}
> +
> +VOID
> +PdoSetDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    __PdoSetDevicePnpState(Pdo, State);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoRestoreDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    if (Dx->DevicePnpState == State)
> +        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
> +}
> +
> +static FORCEINLINE DEVICE_PNP_STATE
> +__PdoGetDevicePnpState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->DevicePnpState;
> +}
> +
> +DEVICE_PNP_STATE
> +PdoGetDevicePnpState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return __PdoGetDevicePnpState(Pdo);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetDevicePowerState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_POWER_STATE  State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    Dx->DevicePowerState = State;
> +}
> +
> +static FORCEINLINE DEVICE_POWER_STATE
> +__PdoGetDevicePowerState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->DevicePowerState;
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetSystemPowerState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  SYSTEM_POWER_STATE  State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    Dx->SystemPowerState = State;
> +}
> +
> +static FORCEINLINE SYSTEM_POWER_STATE
> +__PdoGetSystemPowerState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->SystemPowerState;
> +}
> +
> +PDEVICE_OBJECT
> +PdoGetPhysicalDeviceObject(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return Pdo->PhysicalDeviceObject;
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetMissing(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  const CHAR      *Reason
> +    )
> +{
> +    Pdo->Reason = Reason;
> +    Pdo->Missing = TRUE;
> +}
> +
> +VOID
> +PdoSetMissing(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  const CHAR      *Reason
> +    )
> +{
> +    __PdoSetMissing(Pdo, Reason);
> +}
> +
> +static FORCEINLINE BOOLEAN
> +__PdoIsMissing(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return Pdo->Missing;
> +}
> +
> +BOOLEAN
> +PdoIsMissing(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return __PdoIsMissing(Pdo);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoLink(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PXENDISK_FDO    Fdo
> +    )
> +{
> +    Pdo->Fdo = Fdo;
> +    FdoAddPhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoUnlink(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_FDO        Fdo = Pdo->Fdo;
> +
> +    ASSERT(Fdo != NULL);
> +
> +    FdoRemovePhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
> +
> +    Pdo->Fdo = NULL;
> +}
> +
> +static FORCEINLINE PXENDISK_FDO
> +__PdoGetFdo(
> +    IN  PXENDISK_PDO Pdo
> +    )
> +{
> +    return Pdo->Fdo;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoForwardIrpSynchronously(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PKEVENT             Event = Context;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +    UNREFERENCED_PARAMETER(Irp);
> +
> +    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
> +
> +    return STATUS_MORE_PROCESSING_REQUIRED;
> +}
> +
> +static NTSTATUS
> +PdoForwardIrpSynchronously(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    KEVENT              Event;
> +    NTSTATUS            status;
> +
> +    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
> +
> +    KeInitializeEvent(&Event, NotificationEvent, FALSE);
> +
> +    IoCopyCurrentIrpStackLocationToNext(Irp);
> +    IoSetCompletionRoutine(Irp,
> +                           __PdoForwardIrpSynchronously,
> +                           &Event,
> +                           TRUE,
> +                           TRUE,
> +                           TRUE);
> +
> +    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +    if (status == STATUS_PENDING) {
> +        (VOID) KeWaitForSingleObject(&Event,
> +                                     Executive,
> +                                     KernelMode,
> +                                     FALSE,
> +                                     NULL);
> +        status = Irp->IoStatus.Status;
> +    } else {
> +        ASSERT3U(status, ==, Irp->IoStatus.Status);
> +    }
> +
> +    return status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoForwardIrpAndForget(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PXENDISK_PDO        Pdo = Context;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +
> +    if (Irp->PendingReturned)
> +        IoMarkIrpPending(Irp);
> +
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +
> +    return STATUS_SUCCESS;
> +}
> +
> +static NTSTATUS
> +PdoForwardIrpAndForget(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    IoCopyCurrentIrpStackLocationToNext(Irp);
> +    IoSetCompletionRoutine(Irp,
> +                            __PdoForwardIrpAndForget,
> +                            Pdo,
> +                            TRUE,
> +                            TRUE,
> +                            TRUE);
> +
> +    return IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +}
> +
> +static NTSTATUS
> +PdoCompleteIrp(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp,
> +    IN  NTSTATUS        Status
> +    )
> +{
> +    Irp->IoStatus.Status = Status;
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +    IoCompleteRequest(Irp, IO_NO_INCREMENT);
> +    return Status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoQueryProperty(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PXENDISK_PDO        Pdo = Context;
> +    PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR    Descriptor = Irp-
> >UserBuffer;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +
> +    if (Irp->PendingReturned)
> +        IoMarkIrpPending(Irp);
> +
> +    if (!NT_SUCCESS(Irp->IoStatus.Status))
> +        goto done;
> +
> +    Descriptor = Irp->UserBuffer;
> +    Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
> +    Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, Pdo-
> >SectorSize);
> +
> +done:
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +
> +    return STATUS_SUCCESS;
> +}
> +
> +static DECLSPEC_NOINLINE NTSTATUS
> +PdoQueryProperty(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    PSTORAGE_PROPERTY_QUERY Query;
> +    PDEVICE_TRIM_DESCRIPTOR Trim;
> +    NTSTATUS                status;
> +
> +    Query = Irp->AssociatedIrp.SystemBuffer;
> +
> +    switch (Query->PropertyId) {
> +    case StorageAccessAlignmentProperty:
> +        IoCopyCurrentIrpStackLocationToNext(Irp);
> +        IoSetCompletionRoutine(Irp,
> +                                __PdoQueryProperty,
> +                                Pdo,
> +                                TRUE,
> +                                TRUE,
> +                                TRUE);
> +
> +        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +        break;
> +
> +    case StorageDeviceTrimProperty:
> +        Trim = Irp->AssociatedIrp.SystemBuffer;
> +
> +        Trim->Version = 0;
> +        Trim->Size = sizeof(DEVICE_TRIM_DESCRIPTOR);
> +        Trim->TrimEnabled = TRUE;
> +
> +        Irp->IoStatus.Information =
> (ULONG_PTR)sizeof(DEVICE_TRIM_DESCRIPTOR);
> +        status = PdoCompleteIrp(Pdo, Irp, STATUS_SUCCESS);
> +        break;
> +
> +    default:
> +        status = PdoForwardIrpAndForget(Pdo, Irp);
> +        break;
> +    }
> +
> +    return status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoSendAwaitSrb(
> +    IN  PDEVICE_OBJECT          DeviceObject,
> +    IN  PIRP                    Irp,
> +    IN  PVOID                   Context
> +    )
> +{
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +    UNREFERENCED_PARAMETER(Context);
> +
> +    *(Irp->UserIosb) = Irp->IoStatus;
> +
> +    if (Irp->MdlAddress) {
> +        MmUnlockPages(Irp->MdlAddress);
> +        IoFreeMdl(Irp->MdlAddress);
> +    }
> +
> +    KeSetEvent(Irp->UserEvent, IO_NO_INCREMENT, FALSE);
> +
> +    IoFreeIrp(Irp);
> +    return STATUS_MORE_PROCESSING_REQUIRED;
> +}
> +
> +static NTSTATUS
> +PdoSendAwaitSrb(
> +    IN  PXENDISK_PDO            Pdo,
> +    IN  PSCSI_REQUEST_BLOCK     Srb
> +    )
> +{
> +    PIRP                        Irp;
> +    IO_STATUS_BLOCK             IoStatus;
> +    KEVENT                      Event;
> +    PIO_STACK_LOCATION          Stack;
> +    NTSTATUS                    status;
> +
> +    KeInitializeEvent(&Event, NotificationEvent, FALSE);
> +
> +    status = STATUS_NO_MEMORY;
> +    Irp = IoAllocateIrp((CCHAR)(Pdo->LowerDeviceObject->StackSize + 1),
> FALSE);
> +    if (Irp == NULL)
> +        goto fail1;
> +
> +    Stack = IoGetNextIrpStackLocation(Irp);
> +    Stack->MajorFunction = IRP_MJ_SCSI;
> +    Stack->Parameters.Scsi.Srb = Srb;
> +
> +    IoSetCompletionRoutine(Irp,
> +                            __PdoSendAwaitSrb,
> +                            Srb,
> +                            TRUE,
> +                            TRUE,
> +                            TRUE);
> +    Irp->UserIosb = &IoStatus;
> +    Irp->UserEvent = &Event;
> +
> +    Irp->MdlAddress = IoAllocateMdl(Srb->DataBuffer,
> +                                    Srb->DataTransferLength,
> +                                    FALSE,
> +                                    FALSE,
> +                                    Irp);
> +    if (Irp->MdlAddress == NULL)
> +        goto fail2;
> +
> +#pragma warning(disable:6320)
> +    try {
> +        MmProbeAndLockPages(Irp->MdlAddress, KernelMode,
> IoReadAccess);
> +    } except (EXCEPTION_EXECUTE_HANDLER) {
> +        status = GetExceptionCode();
> +
> +        goto fail3;
> +    }
> +#pragma warning(default:6320)
> +
> +    Srb->OriginalRequest = Irp;
> +
> +    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +    if (status == STATUS_PENDING) {
> +        (VOID) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE,
> NULL);
> +        status = IoStatus.Status;
> +    }
> +
> +    return status;
> +
> +fail3:
> +    Error("fail3\n");
> +
> +    IoFreeMdl(Irp->MdlAddress);
> +
> +fail2:
> +    Error("fail2\n");
> +
> +    IoFreeIrp(Irp);
> +
> +fail1:
> +    Error("fail1 (%08x)\n", status);
> +
> +    return status;
> +}
> +
> +static FORCEINLINE VOID
> +__Set8Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  ULONGLONG               Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value >> 56);
> +    Bytes[1] = (UCHAR)(Value >> 48);
> +    Bytes[2] = (UCHAR)(Value >> 40);
> +    Bytes[3] = (UCHAR)(Value >> 32);
> +    Bytes[4] = (UCHAR)(Value >> 24);
> +    Bytes[5] = (UCHAR)(Value >> 16);
> +    Bytes[6] = (UCHAR)(Value >> 8);
> +    Bytes[7] = (UCHAR)(Value);
> +}
> +
> +static FORCEINLINE VOID
> +__Set4Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  ULONG                   Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value >> 24);
> +    Bytes[1] = (UCHAR)(Value >> 16);
> +    Bytes[2] = (UCHAR)(Value >> 8);
> +    Bytes[3] = (UCHAR)(Value);
> +}
> +
> +static FORCEINLINE VOID
> +__Set2Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  USHORT                  Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value << 8);
> +    Bytes[1] = (UCHAR)(Value);
> +}
> +

I think you should use intrinsics for the above 3 functions.

> +static FORCEINLINE VOID
> +__SetUnmap(
> +    IN  PUNMAP_LIST_HEADER      Unmap,
> +    IN  ULONG                   Length,
> +    IN  PDEVICE_DATA_SET_RANGE  Ranges,
> +    IN  ULONG                   Count,
> +    IN  ULONG                   SectorSize
> +    )
> +{
> +    ULONG       Index;
> +
> +    __Set2Bytes(Unmap->DataLength, (USHORT)Length);
> +    __Set2Bytes(Unmap->BlockDescrDataLength,
> (USHORT)sizeof(UNMAP_BLOCK_DESCRIPTOR));
> +
> +    for (Index = 0; Index < Count; ++Index) {
> +        Trace("TRIM[%x] %x @ %llx\n",
> +                        Index,
> +                        (ULONG)(Ranges[Index].LengthInBytes / SectorSize),
> +                        (ULONG64)(Ranges[Index].StartingOffset / SectorSize));
> +
> +        __Set8Bytes(Unmap->Descriptors[Index].StartingLba,
> +                        (ULONG64)(Ranges[Index].StartingOffset / SectorSize));
> +        __Set4Bytes(Unmap->Descriptors[Index].LbaCount,
> +                        (ULONG)(Ranges[Index].LengthInBytes / SectorSize));
> +    }
> +}
> +
> +static NTSTATUS
> +PdoSendTrimSynchronous(
> +    IN  PXENDISK_PDO            Pdo,
> +    IN  PDEVICE_DATA_SET_RANGE  Ranges,
> +    IN  ULONG                   Count
> +    )
> +{
> +    SCSI_REQUEST_BLOCK          Srb;
> +    PCDB                        Cdb;
> +    PUNMAP_LIST_HEADER          Unmap;
> +    ULONG                       Length;
> +    NTSTATUS                    status;
> +
> +    Length = sizeof(UNMAP_LIST_HEADER) + Count *
> sizeof(UNMAP_BLOCK_DESCRIPTOR);

I know they are not necessary, but could we have brackets around the multiplication?

> +
> +    status = STATUS_NO_MEMORY;
> +    Unmap = __PdoAllocate(Length);
> +    if (Unmap == NULL)
> +        goto fail1;
> +
> +    RtlZeroMemory(&Srb, sizeof(SCSI_REQUEST_BLOCK));
> +    Srb.Length = sizeof(SCSI_REQUEST_BLOCK);
> +    Srb.SrbFlags = SRB_FLAGS_BYPASS_FROZEN_QUEUE |
> SRB_FLAGS_NO_QUEUE_FREEZE;

Do we want to bypass a frozen queue here?

  Paul

> +    Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
> +    Srb.DataBuffer = Unmap;
> +    Srb.DataTransferLength = Length;
> +    Srb.TimeOutValue = (ULONG)-1;
> +    Srb.CdbLength = 10;
> +
> +    Cdb = (PCDB)&Srb.Cdb[0];
> +    Cdb->UNMAP.OperationCode = SCSIOP_UNMAP;
> +    __Set2Bytes(Cdb->UNMAP.AllocationLength, (USHORT)Length);
> +
> +    __SetUnmap(Unmap, Length, Ranges, Count, Pdo->SectorSize);
> +
> +    status = PdoSendAwaitSrb(Pdo, &Srb);
> +    if (!NT_SUCCESS(status))
> +        goto fail2;
> +
> +    __PdoFree(Unmap);
> +    return status;
> +
> +fail2:
> +    Error("fail2\n");
> +
> +    __PdoFree(Unmap);
> +
> +fail1:
> +    Error("fail1 (%08x)\n", status);
> +
> +    return status;
> +}
> +
> +static DECLSPEC_NOINLINE NTSTATUS
> +PdoManageDataSetAttributes(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    PDEVICE_MANAGE_DATA_SET_ATTRIBUTES  Attributes;
> +    PDEVICE_DATA_SET_RANGE              Ranges;
> +    ULONG                               NumRanges;
> +    NTSTATUS                            status;
> +
> +    Attributes = Irp->AssociatedIrp.SystemBuffer;
> +
> +    switch (Attributes->Action) {
> +    case DeviceDsmAction_Trim:
> +        Ranges = (PDEVICE_DATA_SET_RANGE)((PUCHAR)Attributes +
> Attributes->DataSetRangesOffset);
> +        NumRanges = Attributes->DataSetRangesLength /
> sizeof(DEVICE_DATA_SET_RANGE);
> +
> +        status = PdoSendTrimSynchronous(Pdo, Ranges, NumRanges);
> +
> +        status = PdoCompleteIrp(Pdo, Irp, status);
> +        break;
> +
> +    default:
> +        status = PdoForwardIrpAndForget(Pdo, Irp);
> +        break;
> +    }
> +
> +    return status;
> +}
> +
[snip]
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 11:53:08 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 11:53:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW2B2-0007h4-MM; Mon, 22 Sep 2014 11:53:08 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XW2Ay-0007gs-41
	for win-pv-devel@lists.xenproject.org; Mon, 22 Sep 2014 11:53:06 +0000
Received: from [85.158.143.35:31999] by server-2.bemta-4.messagelabs.com id
	54/DD-04525-F9D00245; Mon, 22 Sep 2014 11:53:03 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1411386782!12355847!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6459 invoked from network); 22 Sep 2014 11:53:02 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-8.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 11:53:02 -0000
X-IronPort-AV: E=Sophos;i="5.04,571,1406592000"; d="scan'208";a="25128153"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
Thread-Index: AQHP1lSdtdzY1b6hCkSDjv52ERkS+JwNBzsQ
Date: Mon, 22 Sep 2014 11:53:01 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048BAEE@AMSPEX01CL01.citrite.net>
References: <1411383603-9316-1-git-send-email-owen.smith@citrix.com>
	<1411383603-9316-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1411383603-9316-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Owen smith
> Sent: 22 September 2014 12:00
> To: win-pv-devel@lists.xenproject.org
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 3/3] Add XenDisk device upper filter
> 
> XenDisk intercepts and translates
> IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
> into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP
> requests
> to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
> XenDisk is only neccessary because Storport does not do the translation
> to SCSIOP_UNMAP SRBs.
> 
> Signed-off-by: Owen smith <owen.smith@citrix.com>
> ---
[snip]
> diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
> new file mode 100644
> index 0000000..c815a1e
> --- /dev/null
> +++ b/src/xendisk/pdo.c
> @@ -0,0 +1,2126 @@
> +/* Copyright (c) Citrix Systems Inc.
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms,
> + * with or without modification, are permitted provided
> + * that the following conditions are met:
> + *
> + * *   Redistributions of source code must retain the above
> + *     copyright notice, this list of conditions and the
> + *     following disclaimer.
> + * *   Redistributions in binary form must reproduce the above
> + *     copyright notice, this list of conditions and the
> + *     following disclaimer in the documentation and/or other
> + *     materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
> + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
> + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
> + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + */
> +
> +#define INITGUID 1
> +
> +#include <ntddk.h>
> +#include <wdmguid.h>
> +#include <ntstrsafe.h>
> +#include <stdlib.h>
> +#include <storport.h>
> +#include <Ntddstor.h>
> +#include <Ntddscsi.h>
> +#include <names.h>
> +
> +#include "fdo.h"
> +#include "pdo.h"
> +#include "driver.h"
> +#include "thread.h"
> +#include "debug.h"
> +#include "assert.h"
> +#include "util.h"
> +
> +#define PDO_TAG 'ODP'
> +
> +struct _XENDISK_PDO {
> +    PXENDISK_DX                 Dx;
> +    PDEVICE_OBJECT              LowerDeviceObject;
> +    PDEVICE_OBJECT              PhysicalDeviceObject;
> +
> +    PXENDISK_THREAD             SystemPowerThread;
> +    PIRP                        SystemPowerIrp;
> +    PXENDISK_THREAD             DevicePowerThread;
> +    PIRP                        DevicePowerIrp;
> +
> +    PXENDISK_FDO                Fdo;
> +    BOOLEAN                     Missing;
> +    const CHAR                  *Reason;
> +
> +    ULONG                       SectorSize;
> +};
> +
> +static FORCEINLINE PVOID
> +__PdoAllocate(
> +    IN  ULONG   Length
> +    )
> +{
> +    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__,
> Length, PDO_TAG);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoFree(
> +    IN  PVOID   Buffer
> +    )
> +{
> +    __FreePoolWithTag(Buffer, PDO_TAG);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    // We can never transition out of the deleted state
> +    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
> +
> +    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
> +    Dx->DevicePnpState = State;
> +}
> +
> +VOID
> +PdoSetDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    __PdoSetDevicePnpState(Pdo, State);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoRestoreDevicePnpState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_PNP_STATE    State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    if (Dx->DevicePnpState == State)
> +        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
> +}
> +
> +static FORCEINLINE DEVICE_PNP_STATE
> +__PdoGetDevicePnpState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->DevicePnpState;
> +}
> +
> +DEVICE_PNP_STATE
> +PdoGetDevicePnpState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return __PdoGetDevicePnpState(Pdo);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetDevicePowerState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  DEVICE_POWER_STATE  State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    Dx->DevicePowerState = State;
> +}
> +
> +static FORCEINLINE DEVICE_POWER_STATE
> +__PdoGetDevicePowerState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->DevicePowerState;
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetSystemPowerState(
> +    IN  PXENDISK_PDO        Pdo,
> +    IN  SYSTEM_POWER_STATE  State
> +    )
> +{
> +    PXENDISK_DX             Dx = Pdo->Dx;
> +
> +    Dx->SystemPowerState = State;
> +}
> +
> +static FORCEINLINE SYSTEM_POWER_STATE
> +__PdoGetSystemPowerState(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_DX         Dx = Pdo->Dx;
> +
> +    return Dx->SystemPowerState;
> +}
> +
> +PDEVICE_OBJECT
> +PdoGetPhysicalDeviceObject(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return Pdo->PhysicalDeviceObject;
> +}
> +
> +static FORCEINLINE VOID
> +__PdoSetMissing(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  const CHAR      *Reason
> +    )
> +{
> +    Pdo->Reason = Reason;
> +    Pdo->Missing = TRUE;
> +}
> +
> +VOID
> +PdoSetMissing(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  const CHAR      *Reason
> +    )
> +{
> +    __PdoSetMissing(Pdo, Reason);
> +}
> +
> +static FORCEINLINE BOOLEAN
> +__PdoIsMissing(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return Pdo->Missing;
> +}
> +
> +BOOLEAN
> +PdoIsMissing(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    return __PdoIsMissing(Pdo);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoLink(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PXENDISK_FDO    Fdo
> +    )
> +{
> +    Pdo->Fdo = Fdo;
> +    FdoAddPhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
> +}
> +
> +static FORCEINLINE VOID
> +__PdoUnlink(
> +    IN  PXENDISK_PDO    Pdo
> +    )
> +{
> +    PXENDISK_FDO        Fdo = Pdo->Fdo;
> +
> +    ASSERT(Fdo != NULL);
> +
> +    FdoRemovePhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
> +
> +    Pdo->Fdo = NULL;
> +}
> +
> +static FORCEINLINE PXENDISK_FDO
> +__PdoGetFdo(
> +    IN  PXENDISK_PDO Pdo
> +    )
> +{
> +    return Pdo->Fdo;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoForwardIrpSynchronously(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PKEVENT             Event = Context;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +    UNREFERENCED_PARAMETER(Irp);
> +
> +    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
> +
> +    return STATUS_MORE_PROCESSING_REQUIRED;
> +}
> +
> +static NTSTATUS
> +PdoForwardIrpSynchronously(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    KEVENT              Event;
> +    NTSTATUS            status;
> +
> +    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
> +
> +    KeInitializeEvent(&Event, NotificationEvent, FALSE);
> +
> +    IoCopyCurrentIrpStackLocationToNext(Irp);
> +    IoSetCompletionRoutine(Irp,
> +                           __PdoForwardIrpSynchronously,
> +                           &Event,
> +                           TRUE,
> +                           TRUE,
> +                           TRUE);
> +
> +    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +    if (status == STATUS_PENDING) {
> +        (VOID) KeWaitForSingleObject(&Event,
> +                                     Executive,
> +                                     KernelMode,
> +                                     FALSE,
> +                                     NULL);
> +        status = Irp->IoStatus.Status;
> +    } else {
> +        ASSERT3U(status, ==, Irp->IoStatus.Status);
> +    }
> +
> +    return status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoForwardIrpAndForget(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PXENDISK_PDO        Pdo = Context;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +
> +    if (Irp->PendingReturned)
> +        IoMarkIrpPending(Irp);
> +
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +
> +    return STATUS_SUCCESS;
> +}
> +
> +static NTSTATUS
> +PdoForwardIrpAndForget(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    IoCopyCurrentIrpStackLocationToNext(Irp);
> +    IoSetCompletionRoutine(Irp,
> +                            __PdoForwardIrpAndForget,
> +                            Pdo,
> +                            TRUE,
> +                            TRUE,
> +                            TRUE);
> +
> +    return IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +}
> +
> +static NTSTATUS
> +PdoCompleteIrp(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp,
> +    IN  NTSTATUS        Status
> +    )
> +{
> +    Irp->IoStatus.Status = Status;
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +    IoCompleteRequest(Irp, IO_NO_INCREMENT);
> +    return Status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoQueryProperty(
> +    IN  PDEVICE_OBJECT  DeviceObject,
> +    IN  PIRP            Irp,
> +    IN  PVOID           Context
> +    )
> +{
> +    PXENDISK_PDO        Pdo = Context;
> +    PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR    Descriptor = Irp-
> >UserBuffer;
> +
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +
> +    if (Irp->PendingReturned)
> +        IoMarkIrpPending(Irp);
> +
> +    if (!NT_SUCCESS(Irp->IoStatus.Status))
> +        goto done;
> +
> +    Descriptor = Irp->UserBuffer;
> +    Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
> +    Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, Pdo-
> >SectorSize);
> +
> +done:
> +    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
> +
> +    return STATUS_SUCCESS;
> +}
> +
> +static DECLSPEC_NOINLINE NTSTATUS
> +PdoQueryProperty(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    PSTORAGE_PROPERTY_QUERY Query;
> +    PDEVICE_TRIM_DESCRIPTOR Trim;
> +    NTSTATUS                status;
> +
> +    Query = Irp->AssociatedIrp.SystemBuffer;
> +
> +    switch (Query->PropertyId) {
> +    case StorageAccessAlignmentProperty:
> +        IoCopyCurrentIrpStackLocationToNext(Irp);
> +        IoSetCompletionRoutine(Irp,
> +                                __PdoQueryProperty,
> +                                Pdo,
> +                                TRUE,
> +                                TRUE,
> +                                TRUE);
> +
> +        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +        break;
> +
> +    case StorageDeviceTrimProperty:
> +        Trim = Irp->AssociatedIrp.SystemBuffer;
> +
> +        Trim->Version = 0;
> +        Trim->Size = sizeof(DEVICE_TRIM_DESCRIPTOR);
> +        Trim->TrimEnabled = TRUE;
> +
> +        Irp->IoStatus.Information =
> (ULONG_PTR)sizeof(DEVICE_TRIM_DESCRIPTOR);
> +        status = PdoCompleteIrp(Pdo, Irp, STATUS_SUCCESS);
> +        break;
> +
> +    default:
> +        status = PdoForwardIrpAndForget(Pdo, Irp);
> +        break;
> +    }
> +
> +    return status;
> +}
> +
> +__drv_functionClass(IO_COMPLETION_ROUTINE)
> +__drv_sameIRQL
> +static NTSTATUS
> +__PdoSendAwaitSrb(
> +    IN  PDEVICE_OBJECT          DeviceObject,
> +    IN  PIRP                    Irp,
> +    IN  PVOID                   Context
> +    )
> +{
> +    UNREFERENCED_PARAMETER(DeviceObject);
> +    UNREFERENCED_PARAMETER(Context);
> +
> +    *(Irp->UserIosb) = Irp->IoStatus;
> +
> +    if (Irp->MdlAddress) {
> +        MmUnlockPages(Irp->MdlAddress);
> +        IoFreeMdl(Irp->MdlAddress);
> +    }
> +
> +    KeSetEvent(Irp->UserEvent, IO_NO_INCREMENT, FALSE);
> +
> +    IoFreeIrp(Irp);
> +    return STATUS_MORE_PROCESSING_REQUIRED;
> +}
> +
> +static NTSTATUS
> +PdoSendAwaitSrb(
> +    IN  PXENDISK_PDO            Pdo,
> +    IN  PSCSI_REQUEST_BLOCK     Srb
> +    )
> +{
> +    PIRP                        Irp;
> +    IO_STATUS_BLOCK             IoStatus;
> +    KEVENT                      Event;
> +    PIO_STACK_LOCATION          Stack;
> +    NTSTATUS                    status;
> +
> +    KeInitializeEvent(&Event, NotificationEvent, FALSE);
> +
> +    status = STATUS_NO_MEMORY;
> +    Irp = IoAllocateIrp((CCHAR)(Pdo->LowerDeviceObject->StackSize + 1),
> FALSE);
> +    if (Irp == NULL)
> +        goto fail1;
> +
> +    Stack = IoGetNextIrpStackLocation(Irp);
> +    Stack->MajorFunction = IRP_MJ_SCSI;
> +    Stack->Parameters.Scsi.Srb = Srb;
> +
> +    IoSetCompletionRoutine(Irp,
> +                            __PdoSendAwaitSrb,
> +                            Srb,
> +                            TRUE,
> +                            TRUE,
> +                            TRUE);
> +    Irp->UserIosb = &IoStatus;
> +    Irp->UserEvent = &Event;
> +
> +    Irp->MdlAddress = IoAllocateMdl(Srb->DataBuffer,
> +                                    Srb->DataTransferLength,
> +                                    FALSE,
> +                                    FALSE,
> +                                    Irp);
> +    if (Irp->MdlAddress == NULL)
> +        goto fail2;
> +
> +#pragma warning(disable:6320)
> +    try {
> +        MmProbeAndLockPages(Irp->MdlAddress, KernelMode,
> IoReadAccess);
> +    } except (EXCEPTION_EXECUTE_HANDLER) {
> +        status = GetExceptionCode();
> +
> +        goto fail3;
> +    }
> +#pragma warning(default:6320)
> +
> +    Srb->OriginalRequest = Irp;
> +
> +    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
> +    if (status == STATUS_PENDING) {
> +        (VOID) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE,
> NULL);
> +        status = IoStatus.Status;
> +    }
> +
> +    return status;
> +
> +fail3:
> +    Error("fail3\n");
> +
> +    IoFreeMdl(Irp->MdlAddress);
> +
> +fail2:
> +    Error("fail2\n");
> +
> +    IoFreeIrp(Irp);
> +
> +fail1:
> +    Error("fail1 (%08x)\n", status);
> +
> +    return status;
> +}
> +
> +static FORCEINLINE VOID
> +__Set8Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  ULONGLONG               Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value >> 56);
> +    Bytes[1] = (UCHAR)(Value >> 48);
> +    Bytes[2] = (UCHAR)(Value >> 40);
> +    Bytes[3] = (UCHAR)(Value >> 32);
> +    Bytes[4] = (UCHAR)(Value >> 24);
> +    Bytes[5] = (UCHAR)(Value >> 16);
> +    Bytes[6] = (UCHAR)(Value >> 8);
> +    Bytes[7] = (UCHAR)(Value);
> +}
> +
> +static FORCEINLINE VOID
> +__Set4Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  ULONG                   Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value >> 24);
> +    Bytes[1] = (UCHAR)(Value >> 16);
> +    Bytes[2] = (UCHAR)(Value >> 8);
> +    Bytes[3] = (UCHAR)(Value);
> +}
> +
> +static FORCEINLINE VOID
> +__Set2Bytes(
> +    IN  PUCHAR                  Bytes,
> +    IN  USHORT                  Value
> +    )
> +{
> +    Bytes[0] = (UCHAR)(Value << 8);
> +    Bytes[1] = (UCHAR)(Value);
> +}
> +

I think you should use intrinsics for the above 3 functions.

> +static FORCEINLINE VOID
> +__SetUnmap(
> +    IN  PUNMAP_LIST_HEADER      Unmap,
> +    IN  ULONG                   Length,
> +    IN  PDEVICE_DATA_SET_RANGE  Ranges,
> +    IN  ULONG                   Count,
> +    IN  ULONG                   SectorSize
> +    )
> +{
> +    ULONG       Index;
> +
> +    __Set2Bytes(Unmap->DataLength, (USHORT)Length);
> +    __Set2Bytes(Unmap->BlockDescrDataLength,
> (USHORT)sizeof(UNMAP_BLOCK_DESCRIPTOR));
> +
> +    for (Index = 0; Index < Count; ++Index) {
> +        Trace("TRIM[%x] %x @ %llx\n",
> +                        Index,
> +                        (ULONG)(Ranges[Index].LengthInBytes / SectorSize),
> +                        (ULONG64)(Ranges[Index].StartingOffset / SectorSize));
> +
> +        __Set8Bytes(Unmap->Descriptors[Index].StartingLba,
> +                        (ULONG64)(Ranges[Index].StartingOffset / SectorSize));
> +        __Set4Bytes(Unmap->Descriptors[Index].LbaCount,
> +                        (ULONG)(Ranges[Index].LengthInBytes / SectorSize));
> +    }
> +}
> +
> +static NTSTATUS
> +PdoSendTrimSynchronous(
> +    IN  PXENDISK_PDO            Pdo,
> +    IN  PDEVICE_DATA_SET_RANGE  Ranges,
> +    IN  ULONG                   Count
> +    )
> +{
> +    SCSI_REQUEST_BLOCK          Srb;
> +    PCDB                        Cdb;
> +    PUNMAP_LIST_HEADER          Unmap;
> +    ULONG                       Length;
> +    NTSTATUS                    status;
> +
> +    Length = sizeof(UNMAP_LIST_HEADER) + Count *
> sizeof(UNMAP_BLOCK_DESCRIPTOR);

I know they are not necessary, but could we have brackets around the multiplication?

> +
> +    status = STATUS_NO_MEMORY;
> +    Unmap = __PdoAllocate(Length);
> +    if (Unmap == NULL)
> +        goto fail1;
> +
> +    RtlZeroMemory(&Srb, sizeof(SCSI_REQUEST_BLOCK));
> +    Srb.Length = sizeof(SCSI_REQUEST_BLOCK);
> +    Srb.SrbFlags = SRB_FLAGS_BYPASS_FROZEN_QUEUE |
> SRB_FLAGS_NO_QUEUE_FREEZE;

Do we want to bypass a frozen queue here?

  Paul

> +    Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
> +    Srb.DataBuffer = Unmap;
> +    Srb.DataTransferLength = Length;
> +    Srb.TimeOutValue = (ULONG)-1;
> +    Srb.CdbLength = 10;
> +
> +    Cdb = (PCDB)&Srb.Cdb[0];
> +    Cdb->UNMAP.OperationCode = SCSIOP_UNMAP;
> +    __Set2Bytes(Cdb->UNMAP.AllocationLength, (USHORT)Length);
> +
> +    __SetUnmap(Unmap, Length, Ranges, Count, Pdo->SectorSize);
> +
> +    status = PdoSendAwaitSrb(Pdo, &Srb);
> +    if (!NT_SUCCESS(status))
> +        goto fail2;
> +
> +    __PdoFree(Unmap);
> +    return status;
> +
> +fail2:
> +    Error("fail2\n");
> +
> +    __PdoFree(Unmap);
> +
> +fail1:
> +    Error("fail1 (%08x)\n", status);
> +
> +    return status;
> +}
> +
> +static DECLSPEC_NOINLINE NTSTATUS
> +PdoManageDataSetAttributes(
> +    IN  PXENDISK_PDO    Pdo,
> +    IN  PIRP            Irp
> +    )
> +{
> +    PDEVICE_MANAGE_DATA_SET_ATTRIBUTES  Attributes;
> +    PDEVICE_DATA_SET_RANGE              Ranges;
> +    ULONG                               NumRanges;
> +    NTSTATUS                            status;
> +
> +    Attributes = Irp->AssociatedIrp.SystemBuffer;
> +
> +    switch (Attributes->Action) {
> +    case DeviceDsmAction_Trim:
> +        Ranges = (PDEVICE_DATA_SET_RANGE)((PUCHAR)Attributes +
> Attributes->DataSetRangesOffset);
> +        NumRanges = Attributes->DataSetRangesLength /
> sizeof(DEVICE_DATA_SET_RANGE);
> +
> +        status = PdoSendTrimSynchronous(Pdo, Ranges, NumRanges);
> +
> +        status = PdoCompleteIrp(Pdo, Irp, status);
> +        break;
> +
> +    default:
> +        status = PdoForwardIrpAndForget(Pdo, Irp);
> +        break;
> +    }
> +
> +    return status;
> +}
> +
[snip]
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 12:54:09 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 12:54:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW385-0002iY-4S; Mon, 22 Sep 2014 12:54:09 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lambert.olivier@gmail.com>)
	id 1XW345-0002Vq-JS; Mon, 22 Sep 2014 12:50:01 +0000
Received: from [193.109.254.147:24926] by server-5.bemta-14.messagelabs.com id
	BF/F3-28255-8FA10245; Mon, 22 Sep 2014 12:50:00 +0000
X-Env-Sender: lambert.olivier@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1411390198!12219475!1
X-Originating-IP: [209.85.192.182]
X-SpamReason: No, hits=0.3 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	RCVD_BY_IP,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3374 invoked from network); 22 Sep 2014 12:50:00 -0000
Received: from mail-pd0-f182.google.com (HELO mail-pd0-f182.google.com)
	(209.85.192.182)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 12:50:00 -0000
Received: by mail-pd0-f182.google.com with SMTP id p10so4181109pdj.13
	for <multiple recipients>; Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type:content-transfer-encoding;
	bh=tCMBkfBe5NPbIEqdaNNy7BXlrq5eInCsQqgutVNU/T0=;
	b=WwgVa9Kfx6ao/d6O8mnSgt8vOVDVqZx5lO1teVdz1KVb4vk9DXLcoWPIZ37KA1kdr+
	UbN7XNlgDzB6veU9UHoqvabptEPX1XPG3j7BWDtCm4kgbApJ8LnvgKiRza6F36/48RZf
	QZosx/p/P5GMKmYXBRV8rkTOu/S/Ek+6WUbAgK5TU0wt1pMNXAUyCce4Hpox2s4GxS8B
	wg3MrDj46yWK1/MSmmzNGgJipe0dQPxj3kkGunLrG+t0fTRx935NcZj5O90RZnpMGq6w
	dPd8NVlkVw9Un4k1Nttu9XGQR3BMB+QsIHABevmzYNd396ryVF12/XMoartqP7gvrgUO
	9QWQ==
MIME-Version: 1.0
X-Received: by 10.70.34.233 with SMTP id c9mr23874070pdj.57.1411390198147;
	Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
Received: by 10.70.38.33 with HTTP; Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
In-Reply-To: <CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
Date: Mon, 22 Sep 2014 14:49:58 +0200
Message-ID: <CACJ1ZNsiWy_xAR2JtA+xRtdMFFNJnytg6gYm1QBUDoX49Nf_xA@mail.gmail.com>
From: Olivier Lambert <lambert.olivier@gmail.com>
To: George Dunlap <George.Dunlap@eu.citrix.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 12:54:08 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	Lars Kurth <lars.kurth.xen@gmail.com>, mirageos-devel@xenproject.org,
	xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
 Project Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Rk9TREVNIGluIEV1cm9wZSArIExpbnV4Q29uIFVTIGlzIGEgZ29vZCBjb21ibyBmb3IgWGVuIDop
IChsaWtlIGl0IHdhcyBpbiAyMDEzKQoKU28gKzEKCk9uIE1vbiwgU2VwIDIyLCAyMDE0IGF0IDEy
OjE1IFBNLCBHZW9yZ2UgRHVubGFwCjxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+IHdyb3Rl
Ogo+IE9uIFRodSwgU2VwIDE4LCAyMDE0IGF0IDE6MzAgQU0sIExhcnMgS3VydGggPGxhcnMua3Vy
dGgueGVuQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IEhpIGFsbCwKPj4KPj4gSSBhbSBDQ+KAmWluZyBh
bGwgdGhlIHN1YnByb2plY3RzIChhbmQgcHJvamVjdCBsZWFkcyBvZiBzdWIgcHJvamVjdHMgd2hv
IGFyZSBub3QgeWV0IGZ1bGx5IG9wZXJhdGlvbmFsIGluIHRlcm1zIG9mIGluZnJhc3RydWN0dXJl
KSB0byBnZXQgZmVlZGJhY2sgb24gbmV4dCB5ZWFycyBldmVudHMuIEkga25vdyB3ZSBhbGwgYWdy
ZWVkIHRoYXQgd2Ugd291bGQgYWx0ZXJuYXRlIGJldHdlZW4gRXVyb3BlIGFuZCB0aGUgVVMsIGJ1
dCB0aGlzIG1heSBiZSBjaGFsbGVuZ2luZyBuZXh0IHllYXIsIGJlY2F1c2UgdGhlcmUgbWF5IG5v
dCBiZSBlbm91Z2ggc3BhY2UuIFNvIEkgd2FudGVkIHRvIGdldCB5b3VyIGZlZWQgYW5kIHdpbGwg
bmVlZCB0byBtYWtlIGEgZGVjaXNpb24gYmVmb3JlIHRoZSBuZXh0IEFkdmlzb3J5IEJvYXJkIG1l
ZXRpbmcgaW4gT2N0b2Jlci4gSWRlYWxseSB3ZWxsIGJlZm9yZS4KPj4KPj4gTGV0IG1lIGxheSBv
dXQgd2hhdCBJIGtub3cuCj4+ICogTGludXhDb24gVVMgd2lsbCBiZSBpbiBTZWF0dGxlIEF1ZyAx
Ny0xOQo+PiAqIExpbnV4IFBsdW1iZXJzIHdpbGwgYmUgaW4gU2VhdHRsZSBBdWcgMTksIHdpdGgg
bWluaSBzdW1taXRzIEF1ZyAyMCAmIDIxc3QKPj4gKiBUaGVyZSB3aWxsIGFsc28gYmUgYSBuZXcg
Q29udGFpbmVyIENvbiBBdWcgMjAgJiAyMXN0Cj4+ICogS1ZNIEZvcnVtIGlzIHRoaW5raW5nIGJ1
dCBoYXZlIG5vdCBkZWNpZGVkIHRvIGJlIGluIFNlYXR0bGUgYWxzbyBzb21ldGltZXMgYmV0d2Vl
biBBdWcgMTkgLSAyMXN0Cj4+ICogVGhlcmUgaXMganVzdCBlbm91Z2ggc3BhY2UgZm9yIGEgWGVu
IFByb2plY3QgU3VtbWl0IGZyb20gQXVnIDE5IC0gMjFzdAo+PiAqIExpbnV4Q29uIEVVIGlzIG1v
c3QgbGlrZWx5IGluIEJydXNzZWxzIGVuZCBvZiBTZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkg
dGhhdCB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlCj4+Cj4+IEkgYWxzbyB3YW50IHRvIG1vdmUg
YmFjayB0byBhIG1vZGVsIHdoZXJlIHdlIGRvbuKAmXQgaGF2ZSBhIHNlcGFyYXRlIHVzZXIgYW5k
IGRldmVsb3BlciBzdW1taXQuIEl0IGlzIHRvIGV4cGVuc2l2ZSBhbmQgdG9vIGhhcmQgdG8gb3Jn
YW5pc2UuIFdoYXQgd2Ugd291bGQgZG8gaXMgaGF2ZSB0aGVzZSBzZW1pLXNlcGFyYXRlIChlLmcu
IFVzZXIgU3VtbWl0IGJlZm9yZSB0aGUgRGV2IFN1bW1pdCkgYW5kIHdlIGFsbG93IHVzZXJzIHRv
IHN0YXkgb24gYW5kIGF0dGVuZCB0aGUgRGV2IFN1bW1pdCB1c2luZyBzb21lIGRpc2NvdW50ZWQg
dGlja2V0cyBpZiB0aGV5IHdhbnQuIFRoZSBtYWluIHJhdGlvbmFsZSBpcyB0byBzYXZlIGNvc3Qg
YW5kIGdldCBtYXhpbXVtIGltcGFjdCBmcm9tIHNwb25zb3JzaGlwcyB0byBzdWJzaWRpc2UgdGhl
IGV2ZW50KHMpLgo+Pgo+PiBCdXQgd2UgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24gcHJldHR5IHNv
b24uIE15IHRoaW5raW5nIHdhcyB0aGUgZm9sbG93aW5nOgo+PiAqIERldmVsb3BlciBTdW1taXQg
b24gMjAgJiAyMXN0Cj4+ICogRGV2ZWxvcGVyIE1lZXRpbmcsIEJvYXJkIE1lZXRpbmdzLCBIYWNr
c3BhY2UgYW5kIFdvcmtpbmcgR3JvdXAgd291bGQgYmUgaGVsZCBvbiB0aGUgMTl0aC4KPj4gKiBX
ZSBjb3VsZCBhbHNvIGhhdmUgYSBVc2VyIEZvY3Vzc2VkIERheSBvbiB0aGUgMTl0aCAtIHRoZSBs
aW1pdGF0aW9uIGlzIHRoYXQgb24gdGhlIDE5dGggd2UgY2Fubm90IGdldCByb29tcyBob2xkaW5n
IG1vcmUgdGhhbiA2MCBwZW9wbGUKPj4gKiBUcnkgdG8gZG8gc29tZXRoaW5nIHRvZ2V0aGVyIHdp
dGggS1ZNIEZvcnVtIChFLmcuIGEgam9pbnQgc29jaWFsIGV2ZW50IG9yIHNvbWV0aGluZyAtIGFz
c3VtaW5nIHRoZXkgYnV5IGludG8gaXQgYW5kIGRlY2lkZSBmb3IgU2VhdHRsZSwgb3IgYSBqb2lu
dCBIYWNrYXRob24pCj4+ICogVGhlIHByb2JsZW0gaXMgdGhhdCB0aGlzIHdvdWxkIGJlIGEgdmVy
eSBpbnRlbnNpdmUgd2VlayBhbmQgdGhhdCBzb21lIHBlb3BsZSBtYXkgaGF2ZSB0byBqdWdnbGUg
c2NoZWR1bGVzIGFzIHRoZXkgbWF5IGhhdmUgdG8gYXR0ZW5kIHNldmVyYWwgZXZlbnRzLgo+Pgo+
PiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlcmUgaXMgbGlrZWx5IG5vdCBlbm91Z2ggc3BhY2UgdG8g
Y28tbG9jYXRlIHdpdGggTGludXhDb24gRVUuIEFuZCB3ZSBhbHdheXMgYWxzbyBoYXZlIGEgdmVy
eSBiaWcgcHJlc2VuY2UgYXQgRk9TREVNIGluIEJydXNzZWxzLiBTbyBjby1sb2NhdGluZyBzZWVt
cyBub3QgcXVpdGUgcmlnaHQsIGFzIHdlIGFyZSBhbG1vc3QgY29tcGV0aW5nIHdpdGggb3Vyc2Vs
dmVzIGluIHRoZSBzYW1lIGxvY2F0aW9uIHRoYXQgeWVhci4KPj4KPj4gUGxlYXNlIGxldCBtZSBr
bm93IHdoYXQgeW91ciBwcmVmZXJlbmNlcyBhcmUuIEkgY2FuIHRoZW4gZ2V0IGJhY2sgdG8gdGhl
IEFkdmlzb3J5IEJvYXJkIGFuZCBnZXQgdGhpcyBjbG9zZWQuIEFuZCBJIG5lZWQgdG8ga25vdyBi
ZWZvcmUgdGhlIGVuZCBvZiB0aGUgbW9udGggYXMgb3RoZXJ3aXNlIHdlIHdpbGwgcnVuIG91dCBv
ZiBvcHRpb25zLgo+Cj4gWW91ciByZWFzb25pbmcgaGVyZSBzb3VuZHMgc2Vuc2libGUgdG8gbWUu
Cj4KPiAgLUdlb3JnZQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KPiBYZW4tYXBpIG1haWxpbmcgbGlzdAo+IFhlbi1hcGlAbGlzdHMueGVuLm9yZwo+
IGh0dHA6Ly9saXN0cy54ZW4ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby94ZW4tYXBpCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Mon Sep 22 12:54:09 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Sep 2014 12:54:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XW385-0002iY-4S; Mon, 22 Sep 2014 12:54:09 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lambert.olivier@gmail.com>)
	id 1XW345-0002Vq-JS; Mon, 22 Sep 2014 12:50:01 +0000
Received: from [193.109.254.147:24926] by server-5.bemta-14.messagelabs.com id
	BF/F3-28255-8FA10245; Mon, 22 Sep 2014 12:50:00 +0000
X-Env-Sender: lambert.olivier@gmail.com
X-Msg-Ref: server-2.tower-27.messagelabs.com!1411390198!12219475!1
X-Originating-IP: [209.85.192.182]
X-SpamReason: No, hits=0.3 required=7.0 tests=ML_RADAR_SPEW_LINKS_14,
	RCVD_BY_IP,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 3374 invoked from network); 22 Sep 2014 12:50:00 -0000
Received: from mail-pd0-f182.google.com (HELO mail-pd0-f182.google.com)
	(209.85.192.182)
	by server-2.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Sep 2014 12:50:00 -0000
Received: by mail-pd0-f182.google.com with SMTP id p10so4181109pdj.13
	for <multiple recipients>; Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type:content-transfer-encoding;
	bh=tCMBkfBe5NPbIEqdaNNy7BXlrq5eInCsQqgutVNU/T0=;
	b=WwgVa9Kfx6ao/d6O8mnSgt8vOVDVqZx5lO1teVdz1KVb4vk9DXLcoWPIZ37KA1kdr+
	UbN7XNlgDzB6veU9UHoqvabptEPX1XPG3j7BWDtCm4kgbApJ8LnvgKiRza6F36/48RZf
	QZosx/p/P5GMKmYXBRV8rkTOu/S/Ek+6WUbAgK5TU0wt1pMNXAUyCce4Hpox2s4GxS8B
	wg3MrDj46yWK1/MSmmzNGgJipe0dQPxj3kkGunLrG+t0fTRx935NcZj5O90RZnpMGq6w
	dPd8NVlkVw9Un4k1Nttu9XGQR3BMB+QsIHABevmzYNd396ryVF12/XMoartqP7gvrgUO
	9QWQ==
MIME-Version: 1.0
X-Received: by 10.70.34.233 with SMTP id c9mr23874070pdj.57.1411390198147;
	Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
Received: by 10.70.38.33 with HTTP; Mon, 22 Sep 2014 05:49:58 -0700 (PDT)
In-Reply-To: <CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<CAFLBxZZV9sB1df52-J-XkwF781cpaV96PHo-TFxqU2j7hF3s=g@mail.gmail.com>
Date: Mon, 22 Sep 2014 14:49:58 +0200
Message-ID: <CACJ1ZNsiWy_xAR2JtA+xRtdMFFNJnytg6gYm1QBUDoX49Nf_xA@mail.gmail.com>
From: Olivier Lambert <lambert.olivier@gmail.com>
To: George Dunlap <George.Dunlap@eu.citrix.com>
X-Mailman-Approved-At: Mon, 22 Sep 2014 12:54:08 +0000
Cc: artem Mygaiev <artem.mygaiev@globallogic.com>,
	Lars Kurth <lars.kurth.xen@gmail.com>, mirageos-devel@xenproject.org,
	xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
 Project Developer Summit / User Summit (please respond by end of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Rk9TREVNIGluIEV1cm9wZSArIExpbnV4Q29uIFVTIGlzIGEgZ29vZCBjb21ibyBmb3IgWGVuIDop
IChsaWtlIGl0IHdhcyBpbiAyMDEzKQoKU28gKzEKCk9uIE1vbiwgU2VwIDIyLCAyMDE0IGF0IDEy
OjE1IFBNLCBHZW9yZ2UgRHVubGFwCjxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+IHdyb3Rl
Ogo+IE9uIFRodSwgU2VwIDE4LCAyMDE0IGF0IDE6MzAgQU0sIExhcnMgS3VydGggPGxhcnMua3Vy
dGgueGVuQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IEhpIGFsbCwKPj4KPj4gSSBhbSBDQ+KAmWluZyBh
bGwgdGhlIHN1YnByb2plY3RzIChhbmQgcHJvamVjdCBsZWFkcyBvZiBzdWIgcHJvamVjdHMgd2hv
IGFyZSBub3QgeWV0IGZ1bGx5IG9wZXJhdGlvbmFsIGluIHRlcm1zIG9mIGluZnJhc3RydWN0dXJl
KSB0byBnZXQgZmVlZGJhY2sgb24gbmV4dCB5ZWFycyBldmVudHMuIEkga25vdyB3ZSBhbGwgYWdy
ZWVkIHRoYXQgd2Ugd291bGQgYWx0ZXJuYXRlIGJldHdlZW4gRXVyb3BlIGFuZCB0aGUgVVMsIGJ1
dCB0aGlzIG1heSBiZSBjaGFsbGVuZ2luZyBuZXh0IHllYXIsIGJlY2F1c2UgdGhlcmUgbWF5IG5v
dCBiZSBlbm91Z2ggc3BhY2UuIFNvIEkgd2FudGVkIHRvIGdldCB5b3VyIGZlZWQgYW5kIHdpbGwg
bmVlZCB0byBtYWtlIGEgZGVjaXNpb24gYmVmb3JlIHRoZSBuZXh0IEFkdmlzb3J5IEJvYXJkIG1l
ZXRpbmcgaW4gT2N0b2Jlci4gSWRlYWxseSB3ZWxsIGJlZm9yZS4KPj4KPj4gTGV0IG1lIGxheSBv
dXQgd2hhdCBJIGtub3cuCj4+ICogTGludXhDb24gVVMgd2lsbCBiZSBpbiBTZWF0dGxlIEF1ZyAx
Ny0xOQo+PiAqIExpbnV4IFBsdW1iZXJzIHdpbGwgYmUgaW4gU2VhdHRsZSBBdWcgMTksIHdpdGgg
bWluaSBzdW1taXRzIEF1ZyAyMCAmIDIxc3QKPj4gKiBUaGVyZSB3aWxsIGFsc28gYmUgYSBuZXcg
Q29udGFpbmVyIENvbiBBdWcgMjAgJiAyMXN0Cj4+ICogS1ZNIEZvcnVtIGlzIHRoaW5raW5nIGJ1
dCBoYXZlIG5vdCBkZWNpZGVkIHRvIGJlIGluIFNlYXR0bGUgYWxzbyBzb21ldGltZXMgYmV0d2Vl
biBBdWcgMTkgLSAyMXN0Cj4+ICogVGhlcmUgaXMganVzdCBlbm91Z2ggc3BhY2UgZm9yIGEgWGVu
IFByb2plY3QgU3VtbWl0IGZyb20gQXVnIDE5IC0gMjFzdAo+PiAqIExpbnV4Q29uIEVVIGlzIG1v
c3QgbGlrZWx5IGluIEJydXNzZWxzIGVuZCBvZiBTZXB0ZW1iZXIsIGJ1dCBpdCBpcyBsaWtlbHkg
dGhhdCB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlCj4+Cj4+IEkgYWxzbyB3YW50IHRvIG1vdmUg
YmFjayB0byBhIG1vZGVsIHdoZXJlIHdlIGRvbuKAmXQgaGF2ZSBhIHNlcGFyYXRlIHVzZXIgYW5k
IGRldmVsb3BlciBzdW1taXQuIEl0IGlzIHRvIGV4cGVuc2l2ZSBhbmQgdG9vIGhhcmQgdG8gb3Jn
YW5pc2UuIFdoYXQgd2Ugd291bGQgZG8gaXMgaGF2ZSB0aGVzZSBzZW1pLXNlcGFyYXRlIChlLmcu
IFVzZXIgU3VtbWl0IGJlZm9yZSB0aGUgRGV2IFN1bW1pdCkgYW5kIHdlIGFsbG93IHVzZXJzIHRv
IHN0YXkgb24gYW5kIGF0dGVuZCB0aGUgRGV2IFN1bW1pdCB1c2luZyBzb21lIGRpc2NvdW50ZWQg
dGlja2V0cyBpZiB0aGV5IHdhbnQuIFRoZSBtYWluIHJhdGlvbmFsZSBpcyB0byBzYXZlIGNvc3Qg
YW5kIGdldCBtYXhpbXVtIGltcGFjdCBmcm9tIHNwb25zb3JzaGlwcyB0byBzdWJzaWRpc2UgdGhl
IGV2ZW50KHMpLgo+Pgo+PiBCdXQgd2UgbmVlZCB0byBtYWtlIGEgZGVjaXNpb24gcHJldHR5IHNv
b24uIE15IHRoaW5raW5nIHdhcyB0aGUgZm9sbG93aW5nOgo+PiAqIERldmVsb3BlciBTdW1taXQg
b24gMjAgJiAyMXN0Cj4+ICogRGV2ZWxvcGVyIE1lZXRpbmcsIEJvYXJkIE1lZXRpbmdzLCBIYWNr
c3BhY2UgYW5kIFdvcmtpbmcgR3JvdXAgd291bGQgYmUgaGVsZCBvbiB0aGUgMTl0aC4KPj4gKiBX
ZSBjb3VsZCBhbHNvIGhhdmUgYSBVc2VyIEZvY3Vzc2VkIERheSBvbiB0aGUgMTl0aCAtIHRoZSBs
aW1pdGF0aW9uIGlzIHRoYXQgb24gdGhlIDE5dGggd2UgY2Fubm90IGdldCByb29tcyBob2xkaW5n
IG1vcmUgdGhhbiA2MCBwZW9wbGUKPj4gKiBUcnkgdG8gZG8gc29tZXRoaW5nIHRvZ2V0aGVyIHdp
dGggS1ZNIEZvcnVtIChFLmcuIGEgam9pbnQgc29jaWFsIGV2ZW50IG9yIHNvbWV0aGluZyAtIGFz
c3VtaW5nIHRoZXkgYnV5IGludG8gaXQgYW5kIGRlY2lkZSBmb3IgU2VhdHRsZSwgb3IgYSBqb2lu
dCBIYWNrYXRob24pCj4+ICogVGhlIHByb2JsZW0gaXMgdGhhdCB0aGlzIHdvdWxkIGJlIGEgdmVy
eSBpbnRlbnNpdmUgd2VlayBhbmQgdGhhdCBzb21lIHBlb3BsZSBtYXkgaGF2ZSB0byBqdWdnbGUg
c2NoZWR1bGVzIGFzIHRoZXkgbWF5IGhhdmUgdG8gYXR0ZW5kIHNldmVyYWwgZXZlbnRzLgo+Pgo+
PiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlcmUgaXMgbGlrZWx5IG5vdCBlbm91Z2ggc3BhY2UgdG8g
Y28tbG9jYXRlIHdpdGggTGludXhDb24gRVUuIEFuZCB3ZSBhbHdheXMgYWxzbyBoYXZlIGEgdmVy
eSBiaWcgcHJlc2VuY2UgYXQgRk9TREVNIGluIEJydXNzZWxzLiBTbyBjby1sb2NhdGluZyBzZWVt
cyBub3QgcXVpdGUgcmlnaHQsIGFzIHdlIGFyZSBhbG1vc3QgY29tcGV0aW5nIHdpdGggb3Vyc2Vs
dmVzIGluIHRoZSBzYW1lIGxvY2F0aW9uIHRoYXQgeWVhci4KPj4KPj4gUGxlYXNlIGxldCBtZSBr
bm93IHdoYXQgeW91ciBwcmVmZXJlbmNlcyBhcmUuIEkgY2FuIHRoZW4gZ2V0IGJhY2sgdG8gdGhl
IEFkdmlzb3J5IEJvYXJkIGFuZCBnZXQgdGhpcyBjbG9zZWQuIEFuZCBJIG5lZWQgdG8ga25vdyBi
ZWZvcmUgdGhlIGVuZCBvZiB0aGUgbW9udGggYXMgb3RoZXJ3aXNlIHdlIHdpbGwgcnVuIG91dCBv
ZiBvcHRpb25zLgo+Cj4gWW91ciByZWFzb25pbmcgaGVyZSBzb3VuZHMgc2Vuc2libGUgdG8gbWUu
Cj4KPiAgLUdlb3JnZQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KPiBYZW4tYXBpIG1haWxpbmcgbGlzdAo+IFhlbi1hcGlAbGlzdHMueGVuLm9yZwo+
IGh0dHA6Ly9saXN0cy54ZW4ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby94ZW4tYXBpCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 23 15:06:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Sep 2014 15:06:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWRfe-00040N-U2; Tue, 23 Sep 2014 15:06:26 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWRcY-00036D-Rj
	for win-pv-devel@lists.xenproject.org; Tue, 23 Sep 2014 15:03:15 +0000
Received: from [85.158.143.35:42922] by server-1.bemta-4.messagelabs.com id
	72/87-05872-2BB81245; Tue, 23 Sep 2014 15:03:14 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-21.messagelabs.com!1411484593!12665015!1
X-Originating-IP: [209.85.212.181]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9305 invoked from network); 23 Sep 2014 15:03:13 -0000
Received: from mail-wi0-f181.google.com (HELO mail-wi0-f181.google.com)
	(209.85.212.181)
	by server-11.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	23 Sep 2014 15:03:13 -0000
Received: by mail-wi0-f181.google.com with SMTP id z2so5282813wiv.8
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 23 Sep 2014 08:03:13 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=H2tFv3Z8yeATgKYp6sQ8bMXCk00sOzZOhjlpaVCvdOs=;
	b=kJ+1+/rA3nk5IULZ8St4p5ShptYmSGKH1ExB+dYiLcylnTJNZ1W9wZ6drcTmB524Cp
	OdmbE3qUw7CR6gqXOkv7YWUc9fCXxIdUbfo5PQ5+rSK4djtsynMVDORlMsTrhgXwLhl1
	ApZGyIcOompsVmtRggARyM1LbthOr+vUZseQK/ZJeV57Kqx8KpOgAp3Nw8V/o5jiFjts
	q3euZfZPxKXroJ3wZ4yYFwWm11vVvj2OzUsQeNg+VoIunOmOARmCbRHt1dXadUygSLAY
	7hNjoEKNLmZZ/Rm8uCcwd9cIW1gqkt4QoDDLQyLI0aXwdmdYL1DbEI9h0iHOKt8p2DXR
	STsg==
X-Gm-Message-State: ALoCoQlAODrTTAbpipAvS4Rjc+6FY7hHOPAsmgTGGN96cU25+5O1DypAXSTNL9/iv5Qmi2MPr7rb
X-Received: by 10.180.20.43 with SMTP id k11mr24155443wie.38.1411484592377;
	Tue, 23 Sep 2014 08:03:12 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id hf9sm2585721wib.11.2014.09.23.08.03.10
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 23 Sep 2014 08:03:11 -0700 (PDT)
Message-ID: <54218BB1.2070806@m2r.biz>
Date: Tue, 23 Sep 2014 17:03:13 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>
In-Reply-To: <541FEC41.6090002@m2r.biz>
Content-Length: 6172
X-Mailman-Approved-At: Tue, 23 Sep 2014 15:06:26 +0000
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-15"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
> Il 19/09/2014 11:22, Paul Durrant ha scritto:
>> Moving xen-devel to bcc and adding win-pv-devel...
>>
>>> -----Original Message-----
>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>> Sent: 19 September 2014 09:55
>>> To: xen-devel; Paul Durrant
>>> Subject: New windows pv drivers question
>>>
>>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the =

>>> new
>>> wiki pages about.
>>> I want start to try them if possible (for example to seems if occasion
>>> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
>>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>>> xenserver's github still missed here but seems with a fast look that =

>>> all
>>> essential drivers repositories are in xen's git now.
>> Fabio,
>>
>> That's right. I have a blog to introduce the new Xen Project Windows =

>> PV Drivers sub-project ready to go but it's run into some technical =

>> difficulties; hopefully I'll get it out early next week.
>> Not all the code that is relevant to XenServer is necessarily =

>> relevant to the wider Xen community; e.g. the guest agent and =

>> installer are very much XenServer-specific and therefore they do not =

>> form part of the sub-project. All the driver code is available on =

>> xenbits (under the pvdrivers/win directory) though and it has been =

>> stripped of XenServer branding. (The branding is now parameterized =

>> and applied at build time, so anyone can build their own branded =

>> binaries should they wish to).
>>> Is possible start basic tests of them or there are still other =

>>> important
>>> changes and/or fixes to do?
>>> If is possible start test them there is a testing build available or or
>>> should I do it?
>>>
>> I am setting up some build infrastructure as part of the sub-project =

>> - in fact I just got it going for the first time yesterday - and I =

>> hope to have un-branded binary packages available for the community =

>> in the very near future.
>> In the meantime, there are build instructions available on the wiki =

>> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which =

>> are fairly straightforward, so you should be able to build your own. =

>> Happily Microsoft made building drivers free again the with Windows =

>> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) =

>> edition compiler. Note that you don't have to use the Visual Studio =

>> IDE; there are python scripts in the driver repositories which wrap =

>> the msbuild utility so you can drive it all from the command line :-)
>>
>> AFAIK the drivers should work in pretty much any host environment: I =

>> have been testing them myself on a recent build of xen-unstable using =

>> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you =

>> enable test-signing in your VMs.
>>
>>> Thanks for any reply and sorry for my bad english.
>> No problem. Please get back to me (cc-ing win-pv-devel) if you do run =

>> into difficulties.
>>
>> Cheers,
>>
>>      Paul
>
> Thanks for your reply.
> Soon as I finish downloading everything needed I'll try to do a build.
> I have other 2 questions:
>
> I saw that the xen's repositories are forked by xenserver's github =

> ones but the changes after are merged in both, will remain different =

> projects? One project compatible for all cases I think will be better =

> quality and less waste of time.
>
> About repositories missed now in xen there is win-xenguestagent that =

> contain some features very useful, in particolar shutdown (already =

> present in gplpv I use in production now) and resetting system time =

> following resume-from-suspend and migration (now missed in gplpv but =

> will solves login problem after restore in domUs that are in windows =

> domain). Will be adapted for xen also that?
>
> Thanks for any reply.

I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK =

8.1, visual studio 2013.3 express, latest python 3.
I tried to build xenbus following the README and launching build.py free.
After some minutes of compile it fails with this error:
> Compilazione di =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> " (2) dal progetto =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> (1) sul nodo 1 (destinazioni predefinite).
> PrepareForBuild:
>   Creazione directory "..\xen\Windows7Release\x64\".
>   Creazione directory "..\Windows7Release\x64\".
>   Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
> InitializeBuildStatus:
>   Creazione di =

> "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
> specificato "AlwaysCreate".
> _MASM:
>   Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
>   cmd.exe /C =

> "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
> ad19.cmd"
>   ml64.exe /c /nologo /Zi =

> /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
> 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
> _MASM:
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365, =

> in <module
> >
>     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138, =

> in build_s
> ln
>     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122, =

> in msbuild
>
>     status =3D shell([bin], dir)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100, =

> in shell
>     print(line.rstrip())
>   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in =

> position
> 28: character maps to <undefined>

I did something wrong or there is a bug or unexpected case?
Thanks for any reply.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 23 15:06:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Sep 2014 15:06:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWRfe-00040N-U2; Tue, 23 Sep 2014 15:06:26 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWRcY-00036D-Rj
	for win-pv-devel@lists.xenproject.org; Tue, 23 Sep 2014 15:03:15 +0000
Received: from [85.158.143.35:42922] by server-1.bemta-4.messagelabs.com id
	72/87-05872-2BB81245; Tue, 23 Sep 2014 15:03:14 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-21.messagelabs.com!1411484593!12665015!1
X-Originating-IP: [209.85.212.181]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9305 invoked from network); 23 Sep 2014 15:03:13 -0000
Received: from mail-wi0-f181.google.com (HELO mail-wi0-f181.google.com)
	(209.85.212.181)
	by server-11.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	23 Sep 2014 15:03:13 -0000
Received: by mail-wi0-f181.google.com with SMTP id z2so5282813wiv.8
	for <win-pv-devel@lists.xenproject.org>;
	Tue, 23 Sep 2014 08:03:13 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=H2tFv3Z8yeATgKYp6sQ8bMXCk00sOzZOhjlpaVCvdOs=;
	b=kJ+1+/rA3nk5IULZ8St4p5ShptYmSGKH1ExB+dYiLcylnTJNZ1W9wZ6drcTmB524Cp
	OdmbE3qUw7CR6gqXOkv7YWUc9fCXxIdUbfo5PQ5+rSK4djtsynMVDORlMsTrhgXwLhl1
	ApZGyIcOompsVmtRggARyM1LbthOr+vUZseQK/ZJeV57Kqx8KpOgAp3Nw8V/o5jiFjts
	q3euZfZPxKXroJ3wZ4yYFwWm11vVvj2OzUsQeNg+VoIunOmOARmCbRHt1dXadUygSLAY
	7hNjoEKNLmZZ/Rm8uCcwd9cIW1gqkt4QoDDLQyLI0aXwdmdYL1DbEI9h0iHOKt8p2DXR
	STsg==
X-Gm-Message-State: ALoCoQlAODrTTAbpipAvS4Rjc+6FY7hHOPAsmgTGGN96cU25+5O1DypAXSTNL9/iv5Qmi2MPr7rb
X-Received: by 10.180.20.43 with SMTP id k11mr24155443wie.38.1411484592377;
	Tue, 23 Sep 2014 08:03:12 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id hf9sm2585721wib.11.2014.09.23.08.03.10
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Tue, 23 Sep 2014 08:03:11 -0700 (PDT)
Message-ID: <54218BB1.2070806@m2r.biz>
Date: Tue, 23 Sep 2014 17:03:13 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>
In-Reply-To: <541FEC41.6090002@m2r.biz>
Content-Length: 6172
X-Mailman-Approved-At: Tue, 23 Sep 2014 15:06:26 +0000
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-15"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
> Il 19/09/2014 11:22, Paul Durrant ha scritto:
>> Moving xen-devel to bcc and adding win-pv-devel...
>>
>>> -----Original Message-----
>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>> Sent: 19 September 2014 09:55
>>> To: xen-devel; Paul Durrant
>>> Subject: New windows pv drivers question
>>>
>>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the =

>>> new
>>> wiki pages about.
>>> I want start to try them if possible (for example to seems if occasion
>>> windows domUs network crash  I had with xen 4.4-stable and xen-unstable
>>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>>> xenserver's github still missed here but seems with a fast look that =

>>> all
>>> essential drivers repositories are in xen's git now.
>> Fabio,
>>
>> That's right. I have a blog to introduce the new Xen Project Windows =

>> PV Drivers sub-project ready to go but it's run into some technical =

>> difficulties; hopefully I'll get it out early next week.
>> Not all the code that is relevant to XenServer is necessarily =

>> relevant to the wider Xen community; e.g. the guest agent and =

>> installer are very much XenServer-specific and therefore they do not =

>> form part of the sub-project. All the driver code is available on =

>> xenbits (under the pvdrivers/win directory) though and it has been =

>> stripped of XenServer branding. (The branding is now parameterized =

>> and applied at build time, so anyone can build their own branded =

>> binaries should they wish to).
>>> Is possible start basic tests of them or there are still other =

>>> important
>>> changes and/or fixes to do?
>>> If is possible start test them there is a testing build available or or
>>> should I do it?
>>>
>> I am setting up some build infrastructure as part of the sub-project =

>> - in fact I just got it going for the first time yesterday - and I =

>> hope to have un-branded binary packages available for the community =

>> in the very near future.
>> In the meantime, there are build instructions available on the wiki =

>> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which =

>> are fairly straightforward, so you should be able to build your own. =

>> Happily Microsoft made building drivers free again the with Windows =

>> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free) =

>> edition compiler. Note that you don't have to use the Visual Studio =

>> IDE; there are python scripts in the driver repositories which wrap =

>> the msbuild utility so you can drive it all from the command line :-)
>>
>> AFAIK the drivers should work in pretty much any host environment: I =

>> have been testing them myself on a recent build of xen-unstable using =

>> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you =

>> enable test-signing in your VMs.
>>
>>> Thanks for any reply and sorry for my bad english.
>> No problem. Please get back to me (cc-ing win-pv-devel) if you do run =

>> into difficulties.
>>
>> Cheers,
>>
>>      Paul
>
> Thanks for your reply.
> Soon as I finish downloading everything needed I'll try to do a build.
> I have other 2 questions:
>
> I saw that the xen's repositories are forked by xenserver's github =

> ones but the changes after are merged in both, will remain different =

> projects? One project compatible for all cases I think will be better =

> quality and less waste of time.
>
> About repositories missed now in xen there is win-xenguestagent that =

> contain some features very useful, in particolar shutdown (already =

> present in gplpv I use in production now) and resetting system time =

> following resume-from-suspend and migration (now missed in gplpv but =

> will solves login problem after restore in domUs that are in windows =

> domain). Will be adapted for xen also that?
>
> Thanks for any reply.

I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK =

8.1, visual studio 2013.3 express, latest python 3.
I tried to build xenbus following the README and launching build.py free.
After some minutes of compile it fails with this error:
> Compilazione di =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> " (2) dal progetto =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> (1) sul nodo 1 (destinazioni predefinite).
> PrepareForBuild:
>   Creazione directory "..\xen\Windows7Release\x64\".
>   Creazione directory "..\Windows7Release\x64\".
>   Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
> InitializeBuildStatus:
>   Creazione di =

> "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
> specificato "AlwaysCreate".
> _MASM:
>   Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
>   cmd.exe /C =

> "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
> ad19.cmd"
>   ml64.exe /c /nologo /Zi =

> /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
> 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
> _MASM:
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365, =

> in <module
> >
>     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138, =

> in build_s
> ln
>     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122, =

> in msbuild
>
>     status =3D shell([bin], dir)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100, =

> in shell
>     print(line.rstrip())
>   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in =

> position
> 28: character maps to <undefined>

I did something wrong or there is a bug or unexpected case?
Thanks for any reply.


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 23 15:22:31 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Sep 2014 15:22:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWRvD-0005zw-IK; Tue, 23 Sep 2014 15:22:31 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWRvB-0005zS-TP
	for win-pv-devel@lists.xenproject.org; Tue, 23 Sep 2014 15:22:30 +0000
Received: from [193.109.254.147:13503] by server-1.bemta-14.messagelabs.com id
	FB/8D-24760-53091245; Tue, 23 Sep 2014 15:22:29 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1411485748!12544399!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8357 invoked from network); 23 Sep 2014 15:22:28 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	23 Sep 2014 15:22:28 -0000
X-IronPort-AV: E=Sophos;i="5.04,580,1406592000"; d="scan'208";a="25212671"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7Q
Date: Tue, 23 Sep 2014 15:22:27 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
In-Reply-To: <54218BB1.2070806@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 23 September 2014 16:03
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> =

> Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
> > Il 19/09/2014 11:22, Paul Durrant ha scritto:
> >> Moving xen-devel to bcc and adding win-pv-devel...
> >>
> >>> -----Original Message-----
> >>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>> Sent: 19 September 2014 09:55
> >>> To: xen-devel; Paul Durrant
> >>> Subject: New windows pv drivers question
> >>>
> >>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the
> >>> new
> >>> wiki pages about.
> >>> I want start to try them if possible (for example to seems if occasion
> >>> windows domUs network crash  I had with xen 4.4-stable and xen-
> unstable
> >>> is ejbpv driver or xen problem), I saw that there are 3 repository in
> >>> xenserver's github still missed here but seems with a fast look that
> >>> all
> >>> essential drivers repositories are in xen's git now.
> >> Fabio,
> >>
> >> That's right. I have a blog to introduce the new Xen Project Windows
> >> PV Drivers sub-project ready to go but it's run into some technical
> >> difficulties; hopefully I'll get it out early next week.
> >> Not all the code that is relevant to XenServer is necessarily
> >> relevant to the wider Xen community; e.g. the guest agent and
> >> installer are very much XenServer-specific and therefore they do not
> >> form part of the sub-project. All the driver code is available on
> >> xenbits (under the pvdrivers/win directory) though and it has been
> >> stripped of XenServer branding. (The branding is now parameterized
> >> and applied at build time, so anyone can build their own branded
> >> binaries should they wish to).
> >>> Is possible start basic tests of them or there are still other
> >>> important
> >>> changes and/or fixes to do?
> >>> If is possible start test them there is a testing build available or =
or
> >>> should I do it?
> >>>
> >> I am setting up some build infrastructure as part of the sub-project
> >> - in fact I just got it going for the first time yesterday - and I
> >> hope to have un-branded binary packages available for the community
> >> in the very near future.
> >> In the meantime, there are build instructions available on the wiki
> >> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which
> >> are fairly straightforward, so you should be able to build your own.
> >> Happily Microsoft made building drivers free again the with Windows
> >> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free)
> >> edition compiler. Note that you don't have to use the Visual Studio
> >> IDE; there are python scripts in the driver repositories which wrap
> >> the msbuild utility so you can drive it all from the command line :-)
> >>
> >> AFAIK the drivers should work in pretty much any host environment: I
> >> have been testing them myself on a recent build of xen-unstable using
> >> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you
> >> enable test-signing in your VMs.
> >>
> >>> Thanks for any reply and sorry for my bad english.
> >> No problem. Please get back to me (cc-ing win-pv-devel) if you do run
> >> into difficulties.
> >>
> >> Cheers,
> >>
> >>      Paul
> >
> > Thanks for your reply.
> > Soon as I finish downloading everything needed I'll try to do a build.
> > I have other 2 questions:
> >
> > I saw that the xen's repositories are forked by xenserver's github
> > ones but the changes after are merged in both, will remain different
> > projects? One project compatible for all cases I think will be better
> > quality and less waste of time.
> >
> > About repositories missed now in xen there is win-xenguestagent that
> > contain some features very useful, in particolar shutdown (already
> > present in gplpv I use in production now) and resetting system time
> > following resume-from-suspend and migration (now missed in gplpv but
> > will solves login problem after restore in domUs that are in windows
> > domain). Will be adapted for xen also that?
> >
> > Thanks for any reply.
> =

> I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK
> 8.1, visual studio 2013.3 express, latest python 3.
> I tried to build xenbus following the README and launching build.py free.
> After some minutes of compile it fails with this error:
> > Compilazione di
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> > " (2) dal progetto
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> > (1) sul nodo 1 (destinazioni predefinite).
> > PrepareForBuild:
> >   Creazione directory "..\xen\Windows7Release\x64\".
> >   Creazione directory "..\Windows7Release\x64\".
> >   Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
> > InitializeBuildStatus:
> >   Creazione di
> > "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
> > specificato "AlwaysCreate".
> > _MASM:
> >   Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
> >   cmd.exe /C
> > "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
> > ad19.cmd"
> >   ml64.exe /c /nologo /Zi
> > /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
> > 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
> > _MASM:
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> > in <module
> > >
> >     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> > in msbuild
> >
> >     status =3D shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> > in shell
> >     print(line.rstrip())
> >   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> > UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> > position
> > 28: character maps to <undefined>
> =

> I did something wrong or there is a bug or unexpected case?
> Thanks for any reply.

Not seen anything like that before. I can only assume it's to do with langu=
age support. It seems like msbuild is emitting characters that the shell is=
 not handling correctly. I suspect you'll be ok if you use an English chara=
cter set but I'll try to figure out what the script is/isn't doing.

  Paul


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Tue Sep 23 15:22:31 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Sep 2014 15:22:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWRvD-0005zw-IK; Tue, 23 Sep 2014 15:22:31 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWRvB-0005zS-TP
	for win-pv-devel@lists.xenproject.org; Tue, 23 Sep 2014 15:22:30 +0000
Received: from [193.109.254.147:13503] by server-1.bemta-14.messagelabs.com id
	FB/8D-24760-53091245; Tue, 23 Sep 2014 15:22:29 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1411485748!12544399!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8357 invoked from network); 23 Sep 2014 15:22:28 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	23 Sep 2014 15:22:28 -0000
X-IronPort-AV: E=Sophos;i="5.04,580,1406592000"; d="scan'208";a="25212671"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7Q
Date: Tue, 23 Sep 2014 15:22:27 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
In-Reply-To: <54218BB1.2070806@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 23 September 2014 16:03
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> =

> Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
> > Il 19/09/2014 11:22, Paul Durrant ha scritto:
> >> Moving xen-devel to bcc and adding win-pv-devel...
> >>
> >>> -----Original Message-----
> >>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>> Sent: 19 September 2014 09:55
> >>> To: xen-devel; Paul Durrant
> >>> Subject: New windows pv drivers question
> >>>
> >>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the
> >>> new
> >>> wiki pages about.
> >>> I want start to try them if possible (for example to seems if occasion
> >>> windows domUs network crash  I had with xen 4.4-stable and xen-
> unstable
> >>> is ejbpv driver or xen problem), I saw that there are 3 repository in
> >>> xenserver's github still missed here but seems with a fast look that
> >>> all
> >>> essential drivers repositories are in xen's git now.
> >> Fabio,
> >>
> >> That's right. I have a blog to introduce the new Xen Project Windows
> >> PV Drivers sub-project ready to go but it's run into some technical
> >> difficulties; hopefully I'll get it out early next week.
> >> Not all the code that is relevant to XenServer is necessarily
> >> relevant to the wider Xen community; e.g. the guest agent and
> >> installer are very much XenServer-specific and therefore they do not
> >> form part of the sub-project. All the driver code is available on
> >> xenbits (under the pvdrivers/win directory) though and it has been
> >> stripped of XenServer branding. (The branding is now parameterized
> >> and applied at build time, so anyone can build their own branded
> >> binaries should they wish to).
> >>> Is possible start basic tests of them or there are still other
> >>> important
> >>> changes and/or fixes to do?
> >>> If is possible start test them there is a testing build available or =
or
> >>> should I do it?
> >>>
> >> I am setting up some build infrastructure as part of the sub-project
> >> - in fact I just got it going for the first time yesterday - and I
> >> hope to have un-branded binary packages available for the community
> >> in the very near future.
> >> In the meantime, there are build instructions available on the wiki
> >> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which
> >> are fairly straightforward, so you should be able to build your own.
> >> Happily Microsoft made building drivers free again the with Windows
> >> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free)
> >> edition compiler. Note that you don't have to use the Visual Studio
> >> IDE; there are python scripts in the driver repositories which wrap
> >> the msbuild utility so you can drive it all from the command line :-)
> >>
> >> AFAIK the drivers should work in pretty much any host environment: I
> >> have been testing them myself on a recent build of xen-unstable using
> >> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you
> >> enable test-signing in your VMs.
> >>
> >>> Thanks for any reply and sorry for my bad english.
> >> No problem. Please get back to me (cc-ing win-pv-devel) if you do run
> >> into difficulties.
> >>
> >> Cheers,
> >>
> >>      Paul
> >
> > Thanks for your reply.
> > Soon as I finish downloading everything needed I'll try to do a build.
> > I have other 2 questions:
> >
> > I saw that the xen's repositories are forked by xenserver's github
> > ones but the changes after are merged in both, will remain different
> > projects? One project compatible for all cases I think will be better
> > quality and less waste of time.
> >
> > About repositories missed now in xen there is win-xenguestagent that
> > contain some features very useful, in particolar shutdown (already
> > present in gplpv I use in production now) and resetting system time
> > following resume-from-suspend and migration (now missed in gplpv but
> > will solves login problem after restore in domUs that are in windows
> > domain). Will be adapted for xen also that?
> >
> > Thanks for any reply.
> =

> I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK
> 8.1, visual studio 2013.3 express, latest python 3.
> I tried to build xenbus following the README and launching build.py free.
> After some minutes of compile it fails with this error:
> > Compilazione di
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> > " (2) dal progetto
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> > (1) sul nodo 1 (destinazioni predefinite).
> > PrepareForBuild:
> >   Creazione directory "..\xen\Windows7Release\x64\".
> >   Creazione directory "..\Windows7Release\x64\".
> >   Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
> > InitializeBuildStatus:
> >   Creazione di
> > "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
> > specificato "AlwaysCreate".
> > _MASM:
> >   Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
> >   cmd.exe /C
> > "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
> > ad19.cmd"
> >   ml64.exe /c /nologo /Zi
> > /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
> > 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
> > _MASM:
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> > in <module
> > >
> >     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> > in msbuild
> >
> >     status =3D shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> > in shell
> >     print(line.rstrip())
> >   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> > UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> > position
> > 28: character maps to <undefined>
> =

> I did something wrong or there is a bug or unexpected case?
> Thanks for any reply.

Not seen anything like that before. I can only assume it's to do with langu=
age support. It seems like msbuild is emitting characters that the shell is=
 not handling correctly. I suspect you'll be ok if you use an English chara=
cter set but I'll try to figure out what the script is/isn't doing.

  Paul


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 09:09:09 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 09:09:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWiZR-0006sY-Gn; Wed, 24 Sep 2014 09:09:09 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWiZO-0006sE-VB
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 09:09:07 +0000
Received: from [85.158.137.68:20695] by server-8.bemta-3.messagelabs.com id
	0C/F2-31195-13A82245; Wed, 24 Sep 2014 09:09:05 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-3.tower-31.messagelabs.com!1411549744!11748860!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8219 invoked from network); 24 Sep 2014 09:09:04 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 09:09:04 -0000
Received: by mail-wi0-f171.google.com with SMTP id ho1so6466775wib.4
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 02:09:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=HninI8HbhfAU5gDlAnC1CsUxHyFapFt/i428A34XpAc=;
	b=cBtPheBdBlpub9TfcfupY8xLEDOVFvXw2xIgi1p6a76tRrZ5zK1F4eYW4HRO2WN26y
	xH/v01LM0H9F8ZeYAode3/bgewwiPYK2zF0EvzL49O+BzPuocA9xSPsmQ44ekux7kAh+
	HHnvy/hYxGvRTtpNvKWjgzwKR0XzM/6oq3raWcaVz9mHrSs4OrJf0yod5p8K50QKpgbc
	eDbmEyfdSF+gb+axC8zurNew6A9XMu1APIwlSEOYvynLSzDEbynU02dGEDND1NdwhStM
	lWMvt1jCuJriqQUOb5/dUXcKA12YoL6CXbeOnYj0F8jz+5C5wYrrZluhSk9ttPP9x4wi
	V6IQ==
X-Gm-Message-State: ALoCoQkGvUfuI32HS1KyzkG+2HAIQVVyCHBxNWyaVmfyzoqlqsXVvxKJtGmenViIikkgkKHehVji
X-Received: by 10.194.78.4 with SMTP id x4mr6567400wjw.44.1411549744108;
	Wed, 24 Sep 2014 02:09:04 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id lk6sm5416438wjb.26.2014.09.24.02.09.02
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 02:09:03 -0700 (PDT)
Message-ID: <54228A34.1040205@m2r.biz>
Date: Wed, 24 Sep 2014 11:09:08 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
Content-Length: 9064
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 23/09/2014 17:22, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 23 September 2014 16:03
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
>>> Il 19/09/2014 11:22, Paul Durrant ha scritto:
>>>> Moving xen-devel to bcc and adding win-pv-devel...
>>>>
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 19 September 2014 09:55
>>>>> To: xen-devel; Paul Durrant
>>>>> Subject: New windows pv drivers question
>>>>>
>>>>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the
>>>>> new
>>>>> wiki pages about.
>>>>> I want start to try them if possible (for example to seems if occasion
>>>>> windows domUs network crash  I had with xen 4.4-stable and xen-
>> unstable
>>>>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>>>>> xenserver's github still missed here but seems with a fast look that
>>>>> all
>>>>> essential drivers repositories are in xen's git now.
>>>> Fabio,
>>>>
>>>> That's right. I have a blog to introduce the new Xen Project Windows
>>>> PV Drivers sub-project ready to go but it's run into some technical
>>>> difficulties; hopefully I'll get it out early next week.
>>>> Not all the code that is relevant to XenServer is necessarily
>>>> relevant to the wider Xen community; e.g. the guest agent and
>>>> installer are very much XenServer-specific and therefore they do not
>>>> form part of the sub-project. All the driver code is available on
>>>> xenbits (under the pvdrivers/win directory) though and it has been
>>>> stripped of XenServer branding. (The branding is now parameterized
>>>> and applied at build time, so anyone can build their own branded
>>>> binaries should they wish to).
>>>>> Is possible start basic tests of them or there are still other
>>>>> important
>>>>> changes and/or fixes to do?
>>>>> If is possible start test them there is a testing build available or =
or
>>>>> should I do it?
>>>>>
>>>> I am setting up some build infrastructure as part of the sub-project
>>>> - in fact I just got it going for the first time yesterday - and I
>>>> hope to have un-branded binary packages available for the community
>>>> in the very near future.
>>>> In the meantime, there are build instructions available on the wiki
>>>> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which
>>>> are fairly straightforward, so you should be able to build your own.
>>>> Happily Microsoft made building drivers free again the with Windows
>>>> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free)
>>>> edition compiler. Note that you don't have to use the Visual Studio
>>>> IDE; there are python scripts in the driver repositories which wrap
>>>> the msbuild utility so you can drive it all from the command line :-)
>>>>
>>>> AFAIK the drivers should work in pretty much any host environment: I
>>>> have been testing them myself on a recent build of xen-unstable using
>>>> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you
>>>> enable test-signing in your VMs.
>>>>
>>>>> Thanks for any reply and sorry for my bad english.
>>>> No problem. Please get back to me (cc-ing win-pv-devel) if you do run
>>>> into difficulties.
>>>>
>>>> Cheers,
>>>>
>>>>       Paul
>>> Thanks for your reply.
>>> Soon as I finish downloading everything needed I'll try to do a build.
>>> I have other 2 questions:
>>>
>>> I saw that the xen's repositories are forked by xenserver's github
>>> ones but the changes after are merged in both, will remain different
>>> projects? One project compatible for all cases I think will be better
>>> quality and less waste of time.
>>>
>>> About repositories missed now in xen there is win-xenguestagent that
>>> contain some features very useful, in particolar shutdown (already
>>> present in gplpv I use in production now) and resetting system time
>>> following resume-from-suspend and migration (now missed in gplpv but
>>> will solves login problem after restore in domUs that are in windows
>>> domain). Will be adapted for xen also that?
>>>
>>> Thanks for any reply.
>> I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK
>> 8.1, visual studio 2013.3 express, latest python 3.
>> I tried to build xenbus following the README and launching build.py free.
>> After some minutes of compile it fails with this error:
>>> Compilazione di
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
>>> " (2) dal progetto
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
>>> (1) sul nodo 1 (destinazioni predefinite).
>>> PrepareForBuild:
>>>    Creazione directory "..\xen\Windows7Release\x64\".
>>>    Creazione directory "..\Windows7Release\x64\".
>>>    Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
>>> InitializeBuildStatus:
>>>    Creazione di
>>> "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
>>> specificato "AlwaysCreate".
>>> _MASM:
>>>    Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
>>>    cmd.exe /C
>>> "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
>>> ad19.cmd"
>>>    ml64.exe /c /nologo /Zi
>>> /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
>>> 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
>>> _MASM:
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>> in <module
>>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>> in build_s
>>> ln
>>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>> in msbuild
>>>
>>>      status =3D shell([bin], dir)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>> in shell
>>>      print(line.rstrip())
>>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>> position
>>> 28: character maps to <undefined>
>> I did something wrong or there is a bug or unexpected case?
>> Thanks for any reply.
> Not seen anything like that before. I can only assume it's to do with lan=
guage support. It seems like msbuild is emitting characters that the shell =
is not handling correctly. I suspect you'll be ok if you use an English cha=
racter set but I'll try to figure out what the script is/isn't doing.
>
>    Paul
>

I installed english language pack and solves the problem.
After gave me other error about no sufficent permission on one exe of =

WDK, I tried to execute as administrator and did max permissions to =

everyone on the file but not, I solved also that adding nosdv.
After I had near the end another error where I not found a workaround:
> Done Building Project =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> n" (Build target(s)).
>
> Build succeeded.
>     0 Warning(s)
>     0 Error(s)
>
> Time Elapsed 00:00:02.37
>
> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto error
>
> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> vs2013\Windows7Release\Win32
> ['"C:\\Program Files (x86)\\Windows =

> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v', =

> '8.0.0.12'
> ]
> Finding ID...  0000000015
>
> SYMSTORE: Number of files stored =3D 3
> SYMSTORE: Number of errors =3D 0
> SYMSTORE: Number of files ignored =3D 0
> vs2013\Windows7Release\x64
> ['"C:\\Program Files (x86)\\Windows =

> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v', =

> '8.0.0.12'
> ]
> Finding ID...  0000000016
>
> SYMSTORE: Number of files stored =3D 3
> SYMSTORE: Number of errors =3D 0
> SYMSTORE: Number of files ignored =3D 0
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375, =

> in <module
> >
>     archive(driver + '\source.tgz', manifest().splitlines(), tgz=3DTrue)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289, =

> in manifes
> t
>     sub =3D subprocess.Popen(cmd, stdout=3Dsubprocess.PIPE)
>   File "C:\Python34\lib\subprocess.py", line 858, in __init__
>     restore_signals, start_new_session)
>   File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>     startupinfo)
> FileNotFoundError: [WinError 2] The system cannot find the file specified

I saw that in repository folder\xenbus\(x64|x86) seems there are the =

drivers ready, is correct and can be tried?

Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 09:09:09 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 09:09:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWiZR-0006sY-Gn; Wed, 24 Sep 2014 09:09:09 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWiZO-0006sE-VB
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 09:09:07 +0000
Received: from [85.158.137.68:20695] by server-8.bemta-3.messagelabs.com id
	0C/F2-31195-13A82245; Wed, 24 Sep 2014 09:09:05 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-3.tower-31.messagelabs.com!1411549744!11748860!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8219 invoked from network); 24 Sep 2014 09:09:04 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-3.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 09:09:04 -0000
Received: by mail-wi0-f171.google.com with SMTP id ho1so6466775wib.4
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 02:09:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=HninI8HbhfAU5gDlAnC1CsUxHyFapFt/i428A34XpAc=;
	b=cBtPheBdBlpub9TfcfupY8xLEDOVFvXw2xIgi1p6a76tRrZ5zK1F4eYW4HRO2WN26y
	xH/v01LM0H9F8ZeYAode3/bgewwiPYK2zF0EvzL49O+BzPuocA9xSPsmQ44ekux7kAh+
	HHnvy/hYxGvRTtpNvKWjgzwKR0XzM/6oq3raWcaVz9mHrSs4OrJf0yod5p8K50QKpgbc
	eDbmEyfdSF+gb+axC8zurNew6A9XMu1APIwlSEOYvynLSzDEbynU02dGEDND1NdwhStM
	lWMvt1jCuJriqQUOb5/dUXcKA12YoL6CXbeOnYj0F8jz+5C5wYrrZluhSk9ttPP9x4wi
	V6IQ==
X-Gm-Message-State: ALoCoQkGvUfuI32HS1KyzkG+2HAIQVVyCHBxNWyaVmfyzoqlqsXVvxKJtGmenViIikkgkKHehVji
X-Received: by 10.194.78.4 with SMTP id x4mr6567400wjw.44.1411549744108;
	Wed, 24 Sep 2014 02:09:04 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id lk6sm5416438wjb.26.2014.09.24.02.09.02
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 02:09:03 -0700 (PDT)
Message-ID: <54228A34.1040205@m2r.biz>
Date: Wed, 24 Sep 2014 11:09:08 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
Content-Length: 9064
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 23/09/2014 17:22, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 23 September 2014 16:03
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 22/09/2014 11:30, Fabio Fantoni ha scritto:
>>> Il 19/09/2014 11:22, Paul Durrant ha scritto:
>>>> Moving xen-devel to bcc and adding win-pv-devel...
>>>>
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 19 September 2014 09:55
>>>>> To: xen-devel; Paul Durrant
>>>>> Subject: New windows pv drivers question
>>>>>
>>>>> Hi, I saw the "new" pvdriver drivers in xen's git repository and the
>>>>> new
>>>>> wiki pages about.
>>>>> I want start to try them if possible (for example to seems if occasion
>>>>> windows domUs network crash  I had with xen 4.4-stable and xen-
>> unstable
>>>>> is ejbpv driver or xen problem), I saw that there are 3 repository in
>>>>> xenserver's github still missed here but seems with a fast look that
>>>>> all
>>>>> essential drivers repositories are in xen's git now.
>>>> Fabio,
>>>>
>>>> That's right. I have a blog to introduce the new Xen Project Windows
>>>> PV Drivers sub-project ready to go but it's run into some technical
>>>> difficulties; hopefully I'll get it out early next week.
>>>> Not all the code that is relevant to XenServer is necessarily
>>>> relevant to the wider Xen community; e.g. the guest agent and
>>>> installer are very much XenServer-specific and therefore they do not
>>>> form part of the sub-project. All the driver code is available on
>>>> xenbits (under the pvdrivers/win directory) though and it has been
>>>> stripped of XenServer branding. (The branding is now parameterized
>>>> and applied at build time, so anyone can build their own branded
>>>> binaries should they wish to).
>>>>> Is possible start basic tests of them or there are still other
>>>>> important
>>>>> changes and/or fixes to do?
>>>>> If is possible start test them there is a testing build available or =
or
>>>>> should I do it?
>>>>>
>>>> I am setting up some build infrastructure as part of the sub-project
>>>> - in fact I just got it going for the first time yesterday - and I
>>>> hope to have un-branded binary packages available for the community
>>>> in the very near future.
>>>> In the meantime, there are build instructions available on the wiki
>>>> at http://wiki.xenproject.org/wiki/Windows_PV_Drivers/Building which
>>>> are fairly straightforward, so you should be able to build your own.
>>>> Happily Microsoft made building drivers free again the with Windows
>>>> 8.1 WDK as you can now use the Visual Studio 2013 Express (i.e. free)
>>>> edition compiler. Note that you don't have to use the Visual Studio
>>>> IDE; there are python scripts in the driver repositories which wrap
>>>> the msbuild utility so you can drive it all from the command line :-)
>>>>
>>>> AFAIK the drivers should work in pretty much any host environment: I
>>>> have been testing them myself on a recent build of xen-unstable using
>>>> my own 3.14-ish dom0 kernel and upstream QEMU. Just make sure you
>>>> enable test-signing in your VMs.
>>>>
>>>>> Thanks for any reply and sorry for my bad english.
>>>> No problem. Please get back to me (cc-ing win-pv-devel) if you do run
>>>> into difficulties.
>>>>
>>>> Cheers,
>>>>
>>>>       Paul
>>> Thanks for your reply.
>>> Soon as I finish downloading everything needed I'll try to do a build.
>>> I have other 2 questions:
>>>
>>> I saw that the xen's repositories are forked by xenserver's github
>>> ones but the changes after are merged in both, will remain different
>>> projects? One project compatible for all cases I think will be better
>>> quality and less waste of time.
>>>
>>> About repositories missed now in xen there is win-xenguestagent that
>>> contain some features very useful, in particolar shutdown (already
>>> present in gplpv I use in production now) and resetting system time
>>> following resume-from-suspend and migration (now missed in gplpv but
>>> will solves login problem after restore in domUs that are in windows
>>> domain). Will be adapted for xen also that?
>>>
>>> Thanks for any reply.
>> I installed in one windows 8.1 enterprise 64 bit domU (all updated) WDK
>> 8.1, visual studio 2013.3 express, latest python 3.
>> I tried to build xenbus following the README and launching build.py free.
>> After some minutes of compile it fails with this error:
>>> Compilazione di
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
>>> " (2) dal progetto
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
>>> (1) sul nodo 1 (destinazioni predefinite).
>>> PrepareForBuild:
>>>    Creazione directory "..\xen\Windows7Release\x64\".
>>>    Creazione directory "..\Windows7Release\x64\".
>>>    Creazione directory "..\xen\Windows7Release\x64\xen.tlog\".
>>> InitializeBuildStatus:
>>>    Creazione di
>>> "..\xen\Windows7Release\x64\xen.tlog\unsuccessfulbuild". =D4 stato
>>> specificato "AlwaysCreate".
>>> _MASM:
>>>    Assembling ..\..\src\xen\amd64\hypercall_thunk.asm...
>>>    cmd.exe /C
>>> "C:\Users\Emilio\AppData\Local\Temp\tmp8eb6acdfb5f4436ea3385f199faf
>>> ad19.cmd"
>>>    ml64.exe /c /nologo /Zi
>>> /Fo"..\xen\Windows7Release\x64\hypercall_thunk.obj" /W
>>> 3 /errorReport:prompt  /Ta..\..\src\xen\amd64\hypercall_thunk.asm
>>> _MASM:
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>> in <module
>>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>> in build_s
>>> ln
>>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>> in msbuild
>>>
>>>      status =3D shell([bin], dir)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>> in shell
>>>      print(line.rstrip())
>>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>> position
>>> 28: character maps to <undefined>
>> I did something wrong or there is a bug or unexpected case?
>> Thanks for any reply.
> Not seen anything like that before. I can only assume it's to do with lan=
guage support. It seems like msbuild is emitting characters that the shell =
is not handling correctly. I suspect you'll be ok if you use an English cha=
racter set but I'll try to figure out what the script is/isn't doing.
>
>    Paul
>

I installed english language pack and solves the problem.
After gave me other error about no sufficent permission on one exe of =

WDK, I tried to execute as administrator and did max permissions to =

everyone on the file but not, I solved also that adding nosdv.
After I had near the end another error where I not found a workaround:
> Done Building Project =

> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> n" (Build target(s)).
>
> Build succeeded.
>     0 Warning(s)
>     0 Error(s)
>
> Time Elapsed 00:00:02.37
>
> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto error
>
> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> vs2013\Windows7Release\Win32
> ['"C:\\Program Files (x86)\\Windows =

> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v', =

> '8.0.0.12'
> ]
> Finding ID...  0000000015
>
> SYMSTORE: Number of files stored =3D 3
> SYMSTORE: Number of errors =3D 0
> SYMSTORE: Number of files ignored =3D 0
> vs2013\Windows7Release\x64
> ['"C:\\Program Files (x86)\\Windows =

> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v', =

> '8.0.0.12'
> ]
> Finding ID...  0000000016
>
> SYMSTORE: Number of files stored =3D 3
> SYMSTORE: Number of errors =3D 0
> SYMSTORE: Number of files ignored =3D 0
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375, =

> in <module
> >
>     archive(driver + '\source.tgz', manifest().splitlines(), tgz=3DTrue)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289, =

> in manifes
> t
>     sub =3D subprocess.Popen(cmd, stdout=3Dsubprocess.PIPE)
>   File "C:\Python34\lib\subprocess.py", line 858, in __init__
>     restore_signals, start_new_session)
>   File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>     startupinfo)
> FileNotFoundError: [WinError 2] The system cannot find the file specified

I saw that in repository folder\xenbus\(x64|x86) seems there are the =

drivers ready, is correct and can be tried?

Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 09:16:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 09:16:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWig5-0007UL-1W; Wed, 24 Sep 2014 09:16:01 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWig4-0007UB-58
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 09:16:00 +0000
Received: from [85.158.139.211:33643] by server-17.bemta-5.messagelabs.com id
	F0/9F-08943-FCB82245; Wed, 24 Sep 2014 09:15:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1411550158!11744005!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20798 invoked from network); 24 Sep 2014 09:15:58 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 09:15:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,587,1406592000"; d="scan'208";a="25239671"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYA==
Date: Wed, 24 Sep 2014 09:15:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
In-Reply-To: <54228A34.1040205@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>> in <module
> >>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>> in build_s
> >>> ln
> >>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>> in msbuild
> >>>
> >>>      status = shell([bin], dir)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>> in shell
> >>>      print(line.rstrip())
> >>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> >>> position
> >>> 28: character maps to <undefined>
> >> I did something wrong or there is a bug or unexpected case?
> >> Thanks for any reply.
> > Not seen anything like that before. I can only assume it's to do with
> language support. It seems like msbuild is emitting characters that the shell is
> not handling correctly. I suspect you'll be ok if you use an English character
> set but I'll try to figure out what the script is/isn't doing.
> >
> >    Paul
> >
> 
> I installed english language pack and solves the problem.

Ok. So we know what the problem was. We need to figure out a solution to that.

> After gave me other error about no sufficent permission on one exe of
> WDK, I tried to execute as administrator and did max permissions to
> everyone on the file but not, I solved also that adding nosdv.

I've seen problems running sdv where some of the processes it kicks off seem to conflict on one of the log files, so it bails with a lack of write permission. Is that the sort of thing you saw?

> After I had near the end another error where I not found a workaround:
> > Done Building Project
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> > n" (Build target(s)).
> >
> > Build succeeded.
> >     0 Warning(s)
> >     0 Error(s)
> >
> > Time Elapsed 00:00:02.37
> >
> > C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
> error
> >
> > C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> > vs2013\Windows7Release\Win32
> > ['"C:\\Program Files (x86)\\Windows
> > Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> > add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> > '8.0.0.12'
> > ]
> > Finding ID...  0000000015
> >
> > SYMSTORE: Number of files stored = 3
> > SYMSTORE: Number of errors = 0
> > SYMSTORE: Number of files ignored = 0
> > vs2013\Windows7Release\x64
> > ['"C:\\Program Files (x86)\\Windows
> > Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> > add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> > '8.0.0.12'
> > ]
> > Finding ID...  0000000016
> >
> > SYMSTORE: Number of files stored = 3
> > SYMSTORE: Number of errors = 0
> > SYMSTORE: Number of files ignored = 0
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> > in <module
> > >
> >     archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> > in manifes
> > t
> >     sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >   File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >     restore_signals, start_new_session)
> >   File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >     startupinfo)
> > FileNotFoundError: [WinError 2] The system cannot find the file specified
> 

That looks like git is not on your path. The build script adds an archive of the source to the output. I should probably just remove that from the script.

> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> drivers ready, is correct and can be tried?
> 

Yes. They should be good to go.

> Thanks for any reply.

No problem.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 09:16:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 09:16:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWig5-0007UL-1W; Wed, 24 Sep 2014 09:16:01 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWig4-0007UB-58
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 09:16:00 +0000
Received: from [85.158.139.211:33643] by server-17.bemta-5.messagelabs.com id
	F0/9F-08943-FCB82245; Wed, 24 Sep 2014 09:15:59 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-206.messagelabs.com!1411550158!11744005!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20798 invoked from network); 24 Sep 2014 09:15:58 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-4.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 09:15:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,587,1406592000"; d="scan'208";a="25239671"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYA==
Date: Wed, 24 Sep 2014 09:15:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
In-Reply-To: <54228A34.1040205@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>> in <module
> >>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>> in build_s
> >>> ln
> >>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>> in msbuild
> >>>
> >>>      status = shell([bin], dir)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>> in shell
> >>>      print(line.rstrip())
> >>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> >>> position
> >>> 28: character maps to <undefined>
> >> I did something wrong or there is a bug or unexpected case?
> >> Thanks for any reply.
> > Not seen anything like that before. I can only assume it's to do with
> language support. It seems like msbuild is emitting characters that the shell is
> not handling correctly. I suspect you'll be ok if you use an English character
> set but I'll try to figure out what the script is/isn't doing.
> >
> >    Paul
> >
> 
> I installed english language pack and solves the problem.

Ok. So we know what the problem was. We need to figure out a solution to that.

> After gave me other error about no sufficent permission on one exe of
> WDK, I tried to execute as administrator and did max permissions to
> everyone on the file but not, I solved also that adding nosdv.

I've seen problems running sdv where some of the processes it kicks off seem to conflict on one of the log files, so it bails with a lack of write permission. Is that the sort of thing you saw?

> After I had near the end another error where I not found a workaround:
> > Done Building Project
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> > n" (Build target(s)).
> >
> > Build succeeded.
> >     0 Warning(s)
> >     0 Error(s)
> >
> > Time Elapsed 00:00:02.37
> >
> > C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
> error
> >
> > C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> > vs2013\Windows7Release\Win32
> > ['"C:\\Program Files (x86)\\Windows
> > Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> > add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> > '8.0.0.12'
> > ]
> > Finding ID...  0000000015
> >
> > SYMSTORE: Number of files stored = 3
> > SYMSTORE: Number of errors = 0
> > SYMSTORE: Number of files ignored = 0
> > vs2013\Windows7Release\x64
> > ['"C:\\Program Files (x86)\\Windows
> > Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> > add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> > '8.0.0.12'
> > ]
> > Finding ID...  0000000016
> >
> > SYMSTORE: Number of files stored = 3
> > SYMSTORE: Number of errors = 0
> > SYMSTORE: Number of files ignored = 0
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> > in <module
> > >
> >     archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> > in manifes
> > t
> >     sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >   File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >     restore_signals, start_new_session)
> >   File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >     startupinfo)
> > FileNotFoundError: [WinError 2] The system cannot find the file specified
> 

That looks like git is not on your path. The build script adds an archive of the source to the output. I should probably just remove that from the script.

> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> drivers ready, is correct and can be tried?
> 

Yes. They should be good to go.

> Thanks for any reply.

No problem.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:07:18 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:07:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmHu-0002Gb-5k; Wed, 24 Sep 2014 13:07:18 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWmHs-0002GL-9k
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:07:16 +0000
Received: from [85.158.139.211:32262] by server-5.bemta-5.messagelabs.com id
	FC/44-11546-302C2245; Wed, 24 Sep 2014 13:07:15 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-12.tower-206.messagelabs.com!1411564034!11776164!1
X-Originating-IP: [74.125.82.170]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29404 invoked from network); 24 Sep 2014 13:07:14 -0000
Received: from mail-we0-f170.google.com (HELO mail-we0-f170.google.com)
	(74.125.82.170)
	by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:07:14 -0000
Received: by mail-we0-f170.google.com with SMTP id x48so4731752wes.15
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 06:07:14 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=VIs4jjuJNSm8v1DyolCfcd+aj2/7zvTHm49RsRqfGZ4=;
	b=H0nQPxOWpkFG0MV0mlgawYOXc6/ashFeBHd9Z4bhS3TR/OwIADap6Crx9u1Jv87DoX
	G3yrjWonn90+6DU+Ic0NoZRDtMsOpXwhHwiJoRZrPCdqyD4WAA9dGhG6+/99UrcdnxJ8
	VRAs8nbMJLQQR+ZqcFiq7B9W06Yyp/qORn83EKnb75kzGnIWdkU4GT06xF9iUF0euQJu
	B0IPDK3meq4CkRto+gCkXMXwJk3a7nvoaGIKtsg/NfhqcpZQN9YdUfM1Xd3cXSCOCBjg
	GdArofR8SlP1GM+bPp1r5k4h3ck9ae+yR7oHJWsZA26cE0i64dwj+f002MvKeKexTfWz
	2a5g==
X-Gm-Message-State: ALoCoQn/htNUCV6SFcH0Iwlj+cNyVPe3mLMpvtwa+cPDw0JYU+YvGl7SxDyeAF+OWzeK8JcwVMbP
X-Received: by 10.181.27.132 with SMTP id jg4mr31405439wid.82.1411564034283;
	Wed, 24 Sep 2014 06:07:14 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id s4sm16185539wjs.30.2014.09.24.06.07.10
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 06:07:13 -0700 (PDT)
Message-ID: <5422C200.50803@m2r.biz>
Date: Wed, 24 Sep 2014 15:07:12 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 11:15, Paul Durrant ha scritto:
>> -----Original Message-----
> [snip]
>>>>> Traceback (most recent call last):
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>>>> in <module
>>>>>       build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>>>> in build_s
>>>>> ln
>>>>>       msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>>>> in msbuild
>>>>>
>>>>>       status = shell([bin], dir)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>>>> in shell
>>>>>       print(line.rstrip())
>>>>>     File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>       return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>>>> position
>>>>> 28: character maps to <undefined>
>>>> I did something wrong or there is a bug or unexpected case?
>>>> Thanks for any reply.
>>> Not seen anything like that before. I can only assume it's to do with
>> language support. It seems like msbuild is emitting characters that the shell is
>> not handling correctly. I suspect you'll be ok if you use an English character
>> set but I'll try to figure out what the script is/isn't doing.
>>>     Paul
>>>
>> I installed english language pack and solves the problem.
> Ok. So we know what the problem was. We need to figure out a solution to that.

Thanks, for now I built with english windows.

>
>> After gave me other error about no sufficent permission on one exe of
>> WDK, I tried to execute as administrator and did max permissions to
>> everyone on the file but not, I solved also that adding nosdv.
> I've seen problems running sdv where some of the processes it kicks off seem to conflict on one of the log files, so it bails with a lack of write permission. Is that the sort of thing you saw?

Probably, you need that I retry and post the exactly output of error?

>
>> After I had near the end another error where I not found a workaround:
>>> Done Building Project
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>> n" (Build target(s)).
>>>
>>> Build succeeded.
>>>      0 Warning(s)
>>>      0 Error(s)
>>>
>>> Time Elapsed 00:00:02.37
>>>
>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
>> error
>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>> vs2013\Windows7Release\Win32
>>> ['"C:\\Program Files (x86)\\Windows
>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>> '8.0.0.12'
>>> ]
>>> Finding ID...  0000000015
>>>
>>> SYMSTORE: Number of files stored = 3
>>> SYMSTORE: Number of errors = 0
>>> SYMSTORE: Number of files ignored = 0
>>> vs2013\Windows7Release\x64
>>> ['"C:\\Program Files (x86)\\Windows
>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>> '8.0.0.12'
>>> ]
>>> Finding ID...  0000000016
>>>
>>> SYMSTORE: Number of files stored = 3
>>> SYMSTORE: Number of errors = 0
>>> SYMSTORE: Number of files ignored = 0
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>> in <module
>>>      archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>> in manifes
>>> t
>>>      sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>    File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>      restore_signals, start_new_session)
>>>    File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>      startupinfo)
>>> FileNotFoundError: [WinError 2] The system cannot find the file specified
> That looks like git is not on your path. The build script adds an archive of the source to the output. I should probably just remove that from the script.
>
>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>> drivers ready, is correct and can be tried?
>>
> Yes. They should be good to go.

Installed all 5 drivers in windows 7 pro 64 bit sp1.
On boot now take very long time (much more time that with other windows 
pv or without any) until arrive at login screen, network card is not 
visible (show unable to boot both emulated and pv network card).
Testsigning is enabled and the other pv drivers was removed and rebooted 
before install this new.
On same dom0 and domU with other pv drivers (of James Harper) I had only 
these 2 problems:
- occasional network disappaer after some hours or days (probable xennet 
crash)
- 2-3 time of "hang" after restore with qxl vga and vdagent enable

This is the domU's cfg:
> name='W7-02'
> builder="hvm"
> memory=2048
> vcpus=2
> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> boot='dc'
> device_model_version="qemu-xen"
> viridian=1
> vnc=0
> keymap="it"
> on_crash="destroy"
> vga="qxl"
> spice=1
> spicehost='0.0.0.0'
> spiceport=6003
> spicedisable_ticketing=1
> spicevdagent=1
> spice_clipboard_sharing=0
> spiceusbredirection=4
> soundhw="hda"
> localtime=1
> usbversion=2

I tried also disabling qxl, vdagent, audio and usb:
> name='W7-02'
> builder="hvm"
> memory=2048
> vcpus=2
> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> boot='dc'
> device_model_version="qemu-xen"
> viridian=1
> vnc=0
> keymap="it"
> on_crash="destroy"
> vga="stdvga"
> spice=1
> spicehost='0.0.0.0'
> spiceport=6003
> spicedisable_ticketing=1
> spicevdagent=0
> spice_clipboard_sharing=0
> #spiceusbredirection=4
> #soundhw="hda"
> localtime=1
> #usbversion=2

But I had same problems.
Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch 
(https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1

Now I'll try also with W8.

If you need more details and/or tests tell me and I'll post them.

Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:07:18 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:07:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmHu-0002Gb-5k; Wed, 24 Sep 2014 13:07:18 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWmHs-0002GL-9k
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:07:16 +0000
Received: from [85.158.139.211:32262] by server-5.bemta-5.messagelabs.com id
	FC/44-11546-302C2245; Wed, 24 Sep 2014 13:07:15 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-12.tower-206.messagelabs.com!1411564034!11776164!1
X-Originating-IP: [74.125.82.170]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 29404 invoked from network); 24 Sep 2014 13:07:14 -0000
Received: from mail-we0-f170.google.com (HELO mail-we0-f170.google.com)
	(74.125.82.170)
	by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:07:14 -0000
Received: by mail-we0-f170.google.com with SMTP id x48so4731752wes.15
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 06:07:14 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=VIs4jjuJNSm8v1DyolCfcd+aj2/7zvTHm49RsRqfGZ4=;
	b=H0nQPxOWpkFG0MV0mlgawYOXc6/ashFeBHd9Z4bhS3TR/OwIADap6Crx9u1Jv87DoX
	G3yrjWonn90+6DU+Ic0NoZRDtMsOpXwhHwiJoRZrPCdqyD4WAA9dGhG6+/99UrcdnxJ8
	VRAs8nbMJLQQR+ZqcFiq7B9W06Yyp/qORn83EKnb75kzGnIWdkU4GT06xF9iUF0euQJu
	B0IPDK3meq4CkRto+gCkXMXwJk3a7nvoaGIKtsg/NfhqcpZQN9YdUfM1Xd3cXSCOCBjg
	GdArofR8SlP1GM+bPp1r5k4h3ck9ae+yR7oHJWsZA26cE0i64dwj+f002MvKeKexTfWz
	2a5g==
X-Gm-Message-State: ALoCoQn/htNUCV6SFcH0Iwlj+cNyVPe3mLMpvtwa+cPDw0JYU+YvGl7SxDyeAF+OWzeK8JcwVMbP
X-Received: by 10.181.27.132 with SMTP id jg4mr31405439wid.82.1411564034283;
	Wed, 24 Sep 2014 06:07:14 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id s4sm16185539wjs.30.2014.09.24.06.07.10
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 06:07:13 -0700 (PDT)
Message-ID: <5422C200.50803@m2r.biz>
Date: Wed, 24 Sep 2014 15:07:12 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 11:15, Paul Durrant ha scritto:
>> -----Original Message-----
> [snip]
>>>>> Traceback (most recent call last):
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>>>> in <module
>>>>>       build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>>>> in build_s
>>>>> ln
>>>>>       msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>>>> in msbuild
>>>>>
>>>>>       status = shell([bin], dir)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>>>> in shell
>>>>>       print(line.rstrip())
>>>>>     File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>       return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>>>> position
>>>>> 28: character maps to <undefined>
>>>> I did something wrong or there is a bug or unexpected case?
>>>> Thanks for any reply.
>>> Not seen anything like that before. I can only assume it's to do with
>> language support. It seems like msbuild is emitting characters that the shell is
>> not handling correctly. I suspect you'll be ok if you use an English character
>> set but I'll try to figure out what the script is/isn't doing.
>>>     Paul
>>>
>> I installed english language pack and solves the problem.
> Ok. So we know what the problem was. We need to figure out a solution to that.

Thanks, for now I built with english windows.

>
>> After gave me other error about no sufficent permission on one exe of
>> WDK, I tried to execute as administrator and did max permissions to
>> everyone on the file but not, I solved also that adding nosdv.
> I've seen problems running sdv where some of the processes it kicks off seem to conflict on one of the log files, so it bails with a lack of write permission. Is that the sort of thing you saw?

Probably, you need that I retry and post the exactly output of error?

>
>> After I had near the end another error where I not found a workaround:
>>> Done Building Project
>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>> n" (Build target(s)).
>>>
>>> Build succeeded.
>>>      0 Warning(s)
>>>      0 Error(s)
>>>
>>> Time Elapsed 00:00:02.37
>>>
>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
>> error
>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>> vs2013\Windows7Release\Win32
>>> ['"C:\\Program Files (x86)\\Windows
>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>> '8.0.0.12'
>>> ]
>>> Finding ID...  0000000015
>>>
>>> SYMSTORE: Number of files stored = 3
>>> SYMSTORE: Number of errors = 0
>>> SYMSTORE: Number of files ignored = 0
>>> vs2013\Windows7Release\x64
>>> ['"C:\\Program Files (x86)\\Windows
>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>> '8.0.0.12'
>>> ]
>>> Finding ID...  0000000016
>>>
>>> SYMSTORE: Number of files stored = 3
>>> SYMSTORE: Number of errors = 0
>>> SYMSTORE: Number of files ignored = 0
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>> in <module
>>>      archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>> in manifes
>>> t
>>>      sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>    File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>      restore_signals, start_new_session)
>>>    File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>      startupinfo)
>>> FileNotFoundError: [WinError 2] The system cannot find the file specified
> That looks like git is not on your path. The build script adds an archive of the source to the output. I should probably just remove that from the script.
>
>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>> drivers ready, is correct and can be tried?
>>
> Yes. They should be good to go.

Installed all 5 drivers in windows 7 pro 64 bit sp1.
On boot now take very long time (much more time that with other windows 
pv or without any) until arrive at login screen, network card is not 
visible (show unable to boot both emulated and pv network card).
Testsigning is enabled and the other pv drivers was removed and rebooted 
before install this new.
On same dom0 and domU with other pv drivers (of James Harper) I had only 
these 2 problems:
- occasional network disappaer after some hours or days (probable xennet 
crash)
- 2-3 time of "hang" after restore with qxl vga and vdagent enable

This is the domU's cfg:
> name='W7-02'
> builder="hvm"
> memory=2048
> vcpus=2
> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> boot='dc'
> device_model_version="qemu-xen"
> viridian=1
> vnc=0
> keymap="it"
> on_crash="destroy"
> vga="qxl"
> spice=1
> spicehost='0.0.0.0'
> spiceport=6003
> spicedisable_ticketing=1
> spicevdagent=1
> spice_clipboard_sharing=0
> spiceusbredirection=4
> soundhw="hda"
> localtime=1
> usbversion=2

I tried also disabling qxl, vdagent, audio and usb:
> name='W7-02'
> builder="hvm"
> memory=2048
> vcpus=2
> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> boot='dc'
> device_model_version="qemu-xen"
> viridian=1
> vnc=0
> keymap="it"
> on_crash="destroy"
> vga="stdvga"
> spice=1
> spicehost='0.0.0.0'
> spiceport=6003
> spicedisable_ticketing=1
> spicevdagent=0
> spice_clipboard_sharing=0
> #spiceusbredirection=4
> #soundhw="hda"
> localtime=1
> #usbversion=2

But I had same problems.
Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch 
(https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1

Now I'll try also with W8.

If you need more details and/or tests tell me and I'll post them.

Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:19:15 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:19:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmTT-0003VJ-F2; Wed, 24 Sep 2014 13:19:15 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWmTS-0003VA-Le
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:19:14 +0000
Received: from [193.109.254.147:49050] by server-7.bemta-14.messagelabs.com id
	E4/13-13362-2D4C2245; Wed, 24 Sep 2014 13:19:14 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411564753!8112316!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 514 invoked from network); 24 Sep 2014 13:19:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:19:13 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25251513"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielA=
Date: Wed, 24 Sep 2014 13:19:11 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
In-Reply-To: <5422C200.50803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 14:07
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >> -----Original Message-----
> > [snip]
> >>>>> Traceback (most recent call last):
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>>>> in <module
> >>>>>       build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>>>> in build_s
> >>>>> ln
> >>>>>       msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>>>> in msbuild
> >>>>>
> >>>>>       status = shell([bin], dir)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>>>> in shell
> >>>>>       print(line.rstrip())
> >>>>>     File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>>>       return
> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026'
> in
> >>>>> position
> >>>>> 28: character maps to <undefined>
> >>>> I did something wrong or there is a bug or unexpected case?
> >>>> Thanks for any reply.
> >>> Not seen anything like that before. I can only assume it's to do with
> >> language support. It seems like msbuild is emitting characters that the
> shell is
> >> not handling correctly. I suspect you'll be ok if you use an English character
> >> set but I'll try to figure out what the script is/isn't doing.
> >>>     Paul
> >>>
> >> I installed english language pack and solves the problem.
> > Ok. So we know what the problem was. We need to figure out a solution to
> that.
> 
> Thanks, for now I built with english windows.
> 
> >
> >> After gave me other error about no sufficent permission on one exe of
> >> WDK, I tried to execute as administrator and did max permissions to
> >> everyone on the file but not, I solved also that adding nosdv.
> > I've seen problems running sdv where some of the processes it kicks off
> seem to conflict on one of the log files, so it bails with a lack of write
> permission. Is that the sort of thing you saw?
> 
> Probably, you need that I retry and post the exactly output of error?
> 
> >
> >> After I had near the end another error where I not found a workaround:
> >>> Done Building Project
> >>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>> n" (Build target(s)).
> >>>
> >>> Build succeeded.
> >>>      0 Warning(s)
> >>>      0 Error(s)
> >>>
> >>> Time Elapsed 00:00:02.37
> >>>
> >>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
> >> error
> >>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>> vs2013\Windows7Release\Win32
> >>> ['"C:\\Program Files (x86)\\Windows
> >>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>> '8.0.0.12'
> >>> ]
> >>> Finding ID...  0000000015
> >>>
> >>> SYMSTORE: Number of files stored = 3
> >>> SYMSTORE: Number of errors = 0
> >>> SYMSTORE: Number of files ignored = 0
> >>> vs2013\Windows7Release\x64
> >>> ['"C:\\Program Files (x86)\\Windows
> >>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>> '8.0.0.12'
> >>> ]
> >>> Finding ID...  0000000016
> >>>
> >>> SYMSTORE: Number of files stored = 3
> >>> SYMSTORE: Number of errors = 0
> >>> SYMSTORE: Number of files ignored = 0
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> >>> in <module
> >>>      archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> >>> in manifes
> >>> t
> >>>      sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>    File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>      restore_signals, start_new_session)
> >>>    File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >>>      startupinfo)
> >>> FileNotFoundError: [WinError 2] The system cannot find the file specified
> > That looks like git is not on your path. The build script adds an archive of the
> source to the output. I should probably just remove that from the script.
> >
> >> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> >> drivers ready, is correct and can be tried?
> >>
> > Yes. They should be good to go.
> 
> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> On boot now take very long time (much more time that with other windows
> pv or without any) until arrive at login screen, network card is not
> visible (show unable to boot both emulated and pv network card).
> Testsigning is enabled and the other pv drivers was removed and rebooted
> before install this new.
> On same dom0 and domU with other pv drivers (of James Harper) I had only
> these 2 problems:
> - occasional network disappaer after some hours or days (probable xennet
> crash)
> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> 
> This is the domU's cfg:
> > name='W7-02'
> > builder="hvm"
> > memory=2048
> > vcpus=2
> > vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> > disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> > boot='dc'
> > device_model_version="qemu-xen"
> > viridian=1
> > vnc=0
> > keymap="it"
> > on_crash="destroy"
> > vga="qxl"
> > spice=1
> > spicehost='0.0.0.0'
> > spiceport=6003
> > spicedisable_ticketing=1
> > spicevdagent=1
> > spice_clipboard_sharing=0
> > spiceusbredirection=4
> > soundhw="hda"
> > localtime=1
> > usbversion=2
> 
> I tried also disabling qxl, vdagent, audio and usb:
> > name='W7-02'
> > builder="hvm"
> > memory=2048
> > vcpus=2
> > vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> > disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> > boot='dc'
> > device_model_version="qemu-xen"
> > viridian=1
> > vnc=0
> > keymap="it"
> > on_crash="destroy"
> > vga="stdvga"
> > spice=1
> > spicehost='0.0.0.0'
> > spiceport=6003
> > spicedisable_ticketing=1
> > spicevdagent=0
> > spice_clipboard_sharing=0
> > #spiceusbredirection=4
> > #soundhw="hda"
> > localtime=1
> > #usbversion=2
> 
> But I had same problems.
> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1
> 
> Now I'll try also with W8.
> 
> If you need more details and/or tests tell me and I'll post them.
> 

If you could enable xen_platform_log in QEMU then the QEMU log should tell us what's going on. If you don't know how to do that then the way I do it is to create a file called 'events' under /tmp populated with the single line:

xen_platform_log

and then I add:

device_model_args=[ "-trace", "events=/tmp/events"]

to my config. QEMU by default is built to send traces to stderr, so you should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.

Did you try installing the drivers in a fresh VM? It's possible that there is still some remnant of the GPLPV drivers around - uninstalling drivers on Windows is tricky.

  Paul

> Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:19:15 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:19:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmTT-0003VJ-F2; Wed, 24 Sep 2014 13:19:15 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWmTS-0003VA-Le
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:19:14 +0000
Received: from [193.109.254.147:49050] by server-7.bemta-14.messagelabs.com id
	E4/13-13362-2D4C2245; Wed, 24 Sep 2014 13:19:14 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-27.messagelabs.com!1411564753!8112316!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 514 invoked from network); 24 Sep 2014 13:19:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-5.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:19:13 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25251513"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielA=
Date: Wed, 24 Sep 2014 13:19:11 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
In-Reply-To: <5422C200.50803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 14:07
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >> -----Original Message-----
> > [snip]
> >>>>> Traceback (most recent call last):
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>>>> in <module
> >>>>>       build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>>>> in build_s
> >>>>> ln
> >>>>>       msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>>>> in msbuild
> >>>>>
> >>>>>       status = shell([bin], dir)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>>>> in shell
> >>>>>       print(line.rstrip())
> >>>>>     File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>>>       return
> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026'
> in
> >>>>> position
> >>>>> 28: character maps to <undefined>
> >>>> I did something wrong or there is a bug or unexpected case?
> >>>> Thanks for any reply.
> >>> Not seen anything like that before. I can only assume it's to do with
> >> language support. It seems like msbuild is emitting characters that the
> shell is
> >> not handling correctly. I suspect you'll be ok if you use an English character
> >> set but I'll try to figure out what the script is/isn't doing.
> >>>     Paul
> >>>
> >> I installed english language pack and solves the problem.
> > Ok. So we know what the problem was. We need to figure out a solution to
> that.
> 
> Thanks, for now I built with english windows.
> 
> >
> >> After gave me other error about no sufficent permission on one exe of
> >> WDK, I tried to execute as administrator and did max permissions to
> >> everyone on the file but not, I solved also that adding nosdv.
> > I've seen problems running sdv where some of the processes it kicks off
> seem to conflict on one of the log files, so it bails with a lack of write
> permission. Is that the sort of thing you saw?
> 
> Probably, you need that I retry and post the exactly output of error?
> 
> >
> >> After I had near the end another error where I not found a workaround:
> >>> Done Building Project
> >>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>> n" (Build target(s)).
> >>>
> >>> Build succeeded.
> >>>      0 Warning(s)
> >>>      0 Error(s)
> >>>
> >>> Time Elapsed 00:00:02.37
> >>>
> >>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
> >> error
> >>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>> vs2013\Windows7Release\Win32
> >>> ['"C:\\Program Files (x86)\\Windows
> >>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>> '8.0.0.12'
> >>> ]
> >>> Finding ID...  0000000015
> >>>
> >>> SYMSTORE: Number of files stored = 3
> >>> SYMSTORE: Number of errors = 0
> >>> SYMSTORE: Number of files ignored = 0
> >>> vs2013\Windows7Release\x64
> >>> ['"C:\\Program Files (x86)\\Windows
> >>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>> '8.0.0.12'
> >>> ]
> >>> Finding ID...  0000000016
> >>>
> >>> SYMSTORE: Number of files stored = 3
> >>> SYMSTORE: Number of errors = 0
> >>> SYMSTORE: Number of files ignored = 0
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> >>> in <module
> >>>      archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> >>> in manifes
> >>> t
> >>>      sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>    File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>      restore_signals, start_new_session)
> >>>    File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >>>      startupinfo)
> >>> FileNotFoundError: [WinError 2] The system cannot find the file specified
> > That looks like git is not on your path. The build script adds an archive of the
> source to the output. I should probably just remove that from the script.
> >
> >> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> >> drivers ready, is correct and can be tried?
> >>
> > Yes. They should be good to go.
> 
> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> On boot now take very long time (much more time that with other windows
> pv or without any) until arrive at login screen, network card is not
> visible (show unable to boot both emulated and pv network card).
> Testsigning is enabled and the other pv drivers was removed and rebooted
> before install this new.
> On same dom0 and domU with other pv drivers (of James Harper) I had only
> these 2 problems:
> - occasional network disappaer after some hours or days (probable xennet
> crash)
> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> 
> This is the domU's cfg:
> > name='W7-02'
> > builder="hvm"
> > memory=2048
> > vcpus=2
> > vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> > disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> > boot='dc'
> > device_model_version="qemu-xen"
> > viridian=1
> > vnc=0
> > keymap="it"
> > on_crash="destroy"
> > vga="qxl"
> > spice=1
> > spicehost='0.0.0.0'
> > spiceport=6003
> > spicedisable_ticketing=1
> > spicevdagent=1
> > spice_clipboard_sharing=0
> > spiceusbredirection=4
> > soundhw="hda"
> > localtime=1
> > usbversion=2
> 
> I tried also disabling qxl, vdagent, audio and usb:
> > name='W7-02'
> > builder="hvm"
> > memory=2048
> > vcpus=2
> > vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> > disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> > boot='dc'
> > device_model_version="qemu-xen"
> > viridian=1
> > vnc=0
> > keymap="it"
> > on_crash="destroy"
> > vga="stdvga"
> > spice=1
> > spicehost='0.0.0.0'
> > spiceport=6003
> > spicedisable_ticketing=1
> > spicevdagent=0
> > spice_clipboard_sharing=0
> > #spiceusbredirection=4
> > #soundhw="hda"
> > localtime=1
> > #usbversion=2
> 
> But I had same problems.
> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1
> 
> Now I'll try also with W8.
> 
> If you need more details and/or tests tell me and I'll post them.
> 

If you could enable xen_platform_log in QEMU then the QEMU log should tell us what's going on. If you don't know how to do that then the way I do it is to create a file called 'events' under /tmp populated with the single line:

xen_platform_log

and then I add:

device_model_args=[ "-trace", "events=/tmp/events"]

to my config. QEMU by default is built to send traces to stderr, so you should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.

Did you try installing the drivers in a fresh VM? It's possible that there is still some remnant of the GPLPV drivers around - uninstalling drivers on Windows is tricky.

  Paul

> Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:51:41 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:51:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmyr-00079S-RH; Wed, 24 Sep 2014 13:51:41 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWmyq-00079H-0L
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:51:40 +0000
Received: from [85.158.143.35:5589] by server-1.bemta-4.messagelabs.com id
	7C/37-05872-B6CC2245; Wed, 24 Sep 2014 13:51:39 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-21.messagelabs.com!1411566697!12967129!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27761 invoked from network); 24 Sep 2014 13:51:37 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-14.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:51:37 -0000
Received: by mail-we0-f177.google.com with SMTP id t60so6146003wes.8
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 06:51:37 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type;
	bh=QZnmiMiQIFtTrv+Uyq8ZnNId8tzlvlj2fsu22VW0A8o=;
	b=gNLFBCGbRGNbhRODsegGS0vuLqT2IcGxiGVJb1aW9yf2fW4G95OcJ3SFIl3h6cDNk2
	rHZz7IOrKQxOOtj7ai1FP/Djx71D6ZeqV9FZEi66zrANFQTdxeqU7mq+/yKuORRKKc6g
	EcX/h1M7oRQWGrrxEn2DIcMI/egE+TxJ5RMdJsW6TZVdB8U6B+gixtvSu1fWf6ur9vrC
	9GSRx9XjNn9aDnN4mihZIkos79lp4oevIaYBGyyZbWRf2zh8yg0s0+TO23l+2v6lgTp+
	YaEDqt0V/KFreRolQ73CJS536Gs/Sl3la9aWepscmAatjlvQdA4gv7ad5pjHGnJFt9bf
	EqvQ==
X-Gm-Message-State: ALoCoQlH1JIqxwIdtHmq+AymujsqPzMDxa03x54srEl/HcuDQZc5ik9MxJOGDg8CuygNYbQG5YcN
X-Received: by 10.180.188.49 with SMTP id fx17mr31064837wic.17.1411566697209; 
	Wed, 24 Sep 2014 06:51:37 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id nf2sm5078213wic.4.2014.09.24.06.51.35
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 06:51:36 -0700 (PDT)
Message-ID: <5422CC6D.7030805@m2r.biz>
Date: Wed, 24 Sep 2014 15:51:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------060308040004020709030807"
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060308040004020709030807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Il 24/09/2014 15:19, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 24 September 2014 14:07
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>> -----Original Message-----
>>> [snip]
>>>>>>> Traceback (most recent call last):
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>>>>>> in <module
>>>>>>>        build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>>>>>> in build_s
>>>>>>> ln
>>>>>>>        msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>>>>>> in msbuild
>>>>>>>
>>>>>>>        status = shell([bin], dir)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>>>>>> in shell
>>>>>>>        print(line.rstrip())
>>>>>>>      File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>>>        return
>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026'
>> in
>>>>>>> position
>>>>>>> 28: character maps to <undefined>
>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>> Thanks for any reply.
>>>>> Not seen anything like that before. I can only assume it's to do with
>>>> language support. It seems like msbuild is emitting characters that the
>> shell is
>>>> not handling correctly. I suspect you'll be ok if you use an English character
>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>      Paul
>>>>>
>>>> I installed english language pack and solves the problem.
>>> Ok. So we know what the problem was. We need to figure out a solution to
>> that.
>>
>> Thanks, for now I built with english windows.
>>
>>>> After gave me other error about no sufficent permission on one exe of
>>>> WDK, I tried to execute as administrator and did max permissions to
>>>> everyone on the file but not, I solved also that adding nosdv.
>>> I've seen problems running sdv where some of the processes it kicks off
>> seem to conflict on one of the log files, so it bails with a lack of write
>> permission. Is that the sort of thing you saw?
>>
>> Probably, you need that I retry and post the exactly output of error?
>>
>>>> After I had near the end another error where I not found a workaround:
>>>>> Done Building Project
>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>> n" (Build target(s)).
>>>>>
>>>>> Build succeeded.
>>>>>       0 Warning(s)
>>>>>       0 Error(s)
>>>>>
>>>>> Time Elapsed 00:00:02.37
>>>>>
>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
>>>> error
>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>> vs2013\Windows7Release\Win32
>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>> '8.0.0.12'
>>>>> ]
>>>>> Finding ID...  0000000015
>>>>>
>>>>> SYMSTORE: Number of files stored = 3
>>>>> SYMSTORE: Number of errors = 0
>>>>> SYMSTORE: Number of files ignored = 0
>>>>> vs2013\Windows7Release\x64
>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>> '8.0.0.12'
>>>>> ]
>>>>> Finding ID...  0000000016
>>>>>
>>>>> SYMSTORE: Number of files stored = 3
>>>>> SYMSTORE: Number of errors = 0
>>>>> SYMSTORE: Number of files ignored = 0
>>>>> Traceback (most recent call last):
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>>>> in <module
>>>>>       archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>>>> in manifes
>>>>> t
>>>>>       sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>     File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>       restore_signals, start_new_session)
>>>>>     File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>>>       startupinfo)
>>>>> FileNotFoundError: [WinError 2] The system cannot find the file specified
>>> That looks like git is not on your path. The build script adds an archive of the
>> source to the output. I should probably just remove that from the script.
>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>>>> drivers ready, is correct and can be tried?
>>>>
>>> Yes. They should be good to go.
>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>> On boot now take very long time (much more time that with other windows
>> pv or without any) until arrive at login screen, network card is not
>> visible (show unable to boot both emulated and pv network card).
>> Testsigning is enabled and the other pv drivers was removed and rebooted
>> before install this new.
>> On same dom0 and domU with other pv drivers (of James Harper) I had only
>> these 2 problems:
>> - occasional network disappaer after some hours or days (probable xennet
>> crash)
>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>
>> This is the domU's cfg:
>>> name='W7-02'
>>> builder="hvm"
>>> memory=2048
>>> vcpus=2
>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>> boot='dc'
>>> device_model_version="qemu-xen"
>>> viridian=1
>>> vnc=0
>>> keymap="it"
>>> on_crash="destroy"
>>> vga="qxl"
>>> spice=1
>>> spicehost='0.0.0.0'
>>> spiceport=6003
>>> spicedisable_ticketing=1
>>> spicevdagent=1
>>> spice_clipboard_sharing=0
>>> spiceusbredirection=4
>>> soundhw="hda"
>>> localtime=1
>>> usbversion=2
>> I tried also disabling qxl, vdagent, audio and usb:
>>> name='W7-02'
>>> builder="hvm"
>>> memory=2048
>>> vcpus=2
>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>> boot='dc'
>>> device_model_version="qemu-xen"
>>> viridian=1
>>> vnc=0
>>> keymap="it"
>>> on_crash="destroy"
>>> vga="stdvga"
>>> spice=1
>>> spicehost='0.0.0.0'
>>> spiceport=6003
>>> spicedisable_ticketing=1
>>> spicevdagent=0
>>> spice_clipboard_sharing=0
>>> #spiceusbredirection=4
>>> #soundhw="hda"
>>> localtime=1
>>> #usbversion=2
>> But I had same problems.
>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1
>>
>> Now I'll try also with W8.
>>
>> If you need more details and/or tests tell me and I'll post them.
>>
> If you could enable xen_platform_log in QEMU then the QEMU log should tell us what's going on. If you don't know how to do that then the way I do it is to create a file called 'events' under /tmp populated with the single line:
>
> xen_platform_log
>
> and then I add:
>
> device_model_args=[ "-trace", "events=/tmp/events"]
>
> to my config. QEMU by default is built to send traces to stderr, so you should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
>
> Did you try installing the drivers in a fresh VM? It's possible that there is still some remnant of the GPLPV drivers around - uninstalling drivers on Windows is tricky.
>

Thanks for reply.
Tried with trace (log in attachment), with a fast look a saw a strange 
mac different from the one setted in cfg.
I tried removing fixed mac in xl cfg but the network card problem persist.
The old pv should be completly removed, I used also the bat for remove 
the registry keys and file, not only the unstall from control panel.
I'll try also a clean install ASAP.
Another thing: I tried also xl shutdown and not works, xeniface is 
installed (with dpinst) and liteagent is present windows folder after 
it, I must do other thing to have it working?

--------------060308040004020709030807
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7-02.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7-02.log"

xc: error: linux_gnttab_set_max_grants: ioctl SET_MAX_GRANTS failed (22 = Invalid argument): Internal error
xen be: qdisk-768: xc_gnttab_set_max_grants failed: Invalid argument
xc: error: linux_gnttab_set_max_grants: ioctl SET_MAX_GRANTS failed (22 = Invalid argument): Internal error
xen be: qdisk-832: xc_gnttab_set_max_grants failed: Invalid argument
main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 3.964000 ms, bitrate 109255801 bps (104.194451 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.7effefff
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN|HypercallInitialize: XEN 4.5
xen_platform_log xen platform: XEN|HypercallInitialize: INTERFACE 0x00040300
xen_platform_log xen platform: XEN|HypercallInitialize: HypercallPfn[0]: 00000000000032E9
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800224B040 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002249AC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A0AC0 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A1AC0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A2AC0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A3AC0 (PCI\VEN_1234&DEV_1111&SUBSYS_11001AF4&REV_00\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A4AC0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A5AC0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80018465F0 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f0000000
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8001853060 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8001854060 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002260060 (IFACE 00000001)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800226F040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002273040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002279040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.1.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/qdisk/27/768)
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT 
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f0001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000009 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/0
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA8002287C20 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA80023E4060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA80023E4060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002721B00 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880010665B0 FFFFFA800272ABC0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88001065630 FFFFFA800272ABD0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF8800106608C FFFFFA800272ADE0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA800272A040 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f0002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:A2:5F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {9f0e41ff-20f0-530d-9847-6eb5708b09bc}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002807250 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
xen_platform_log xen platform: XENNET|DriverUnload: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable

--------------060308040004020709030807
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060308040004020709030807--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 13:51:41 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 13:51:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWmyr-00079S-RH; Wed, 24 Sep 2014 13:51:41 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWmyq-00079H-0L
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 13:51:40 +0000
Received: from [85.158.143.35:5589] by server-1.bemta-4.messagelabs.com id
	7C/37-05872-B6CC2245; Wed, 24 Sep 2014 13:51:39 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-14.tower-21.messagelabs.com!1411566697!12967129!1
X-Originating-IP: [74.125.82.177]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27761 invoked from network); 24 Sep 2014 13:51:37 -0000
Received: from mail-we0-f177.google.com (HELO mail-we0-f177.google.com)
	(74.125.82.177)
	by server-14.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 13:51:37 -0000
Received: by mail-we0-f177.google.com with SMTP id t60so6146003wes.8
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 06:51:37 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type;
	bh=QZnmiMiQIFtTrv+Uyq8ZnNId8tzlvlj2fsu22VW0A8o=;
	b=gNLFBCGbRGNbhRODsegGS0vuLqT2IcGxiGVJb1aW9yf2fW4G95OcJ3SFIl3h6cDNk2
	rHZz7IOrKQxOOtj7ai1FP/Djx71D6ZeqV9FZEi66zrANFQTdxeqU7mq+/yKuORRKKc6g
	EcX/h1M7oRQWGrrxEn2DIcMI/egE+TxJ5RMdJsW6TZVdB8U6B+gixtvSu1fWf6ur9vrC
	9GSRx9XjNn9aDnN4mihZIkos79lp4oevIaYBGyyZbWRf2zh8yg0s0+TO23l+2v6lgTp+
	YaEDqt0V/KFreRolQ73CJS536Gs/Sl3la9aWepscmAatjlvQdA4gv7ad5pjHGnJFt9bf
	EqvQ==
X-Gm-Message-State: ALoCoQlH1JIqxwIdtHmq+AymujsqPzMDxa03x54srEl/HcuDQZc5ik9MxJOGDg8CuygNYbQG5YcN
X-Received: by 10.180.188.49 with SMTP id fx17mr31064837wic.17.1411566697209; 
	Wed, 24 Sep 2014 06:51:37 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id nf2sm5078213wic.4.2014.09.24.06.51.35
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 06:51:36 -0700 (PDT)
Message-ID: <5422CC6D.7030805@m2r.biz>
Date: Wed, 24 Sep 2014 15:51:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------060308040004020709030807"
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------060308040004020709030807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Il 24/09/2014 15:19, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 24 September 2014 14:07
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>> -----Original Message-----
>>> [snip]
>>>>>>> Traceback (most recent call last):
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>>>>>> in <module
>>>>>>>        build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>>>>>> in build_s
>>>>>>> ln
>>>>>>>        msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>>>>>> in msbuild
>>>>>>>
>>>>>>>        status = shell([bin], dir)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>>>>>> in shell
>>>>>>>        print(line.rstrip())
>>>>>>>      File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>>>        return
>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026'
>> in
>>>>>>> position
>>>>>>> 28: character maps to <undefined>
>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>> Thanks for any reply.
>>>>> Not seen anything like that before. I can only assume it's to do with
>>>> language support. It seems like msbuild is emitting characters that the
>> shell is
>>>> not handling correctly. I suspect you'll be ok if you use an English character
>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>      Paul
>>>>>
>>>> I installed english language pack and solves the problem.
>>> Ok. So we know what the problem was. We need to figure out a solution to
>> that.
>>
>> Thanks, for now I built with english windows.
>>
>>>> After gave me other error about no sufficent permission on one exe of
>>>> WDK, I tried to execute as administrator and did max permissions to
>>>> everyone on the file but not, I solved also that adding nosdv.
>>> I've seen problems running sdv where some of the processes it kicks off
>> seem to conflict on one of the log files, so it bails with a lack of write
>> permission. Is that the sort of thing you saw?
>>
>> Probably, you need that I retry and post the exactly output of error?
>>
>>>> After I had near the end another error where I not found a workaround:
>>>>> Done Building Project
>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>> n" (Build target(s)).
>>>>>
>>>>> Build succeeded.
>>>>>       0 Warning(s)
>>>>>       0 Error(s)
>>>>>
>>>>> Time Elapsed 00:00:02.37
>>>>>
>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1 goto
>>>> error
>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>> vs2013\Windows7Release\Win32
>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>> '8.0.0.12'
>>>>> ]
>>>>> Finding ID...  0000000015
>>>>>
>>>>> SYMSTORE: Number of files stored = 3
>>>>> SYMSTORE: Number of errors = 0
>>>>> SYMSTORE: Number of files ignored = 0
>>>>> vs2013\Windows7Release\x64
>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>> '8.0.0.12'
>>>>> ]
>>>>> Finding ID...  0000000016
>>>>>
>>>>> SYMSTORE: Number of files stored = 3
>>>>> SYMSTORE: Number of errors = 0
>>>>> SYMSTORE: Number of files ignored = 0
>>>>> Traceback (most recent call last):
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>>>> in <module
>>>>>       archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>>>> in manifes
>>>>> t
>>>>>       sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>     File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>       restore_signals, start_new_session)
>>>>>     File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>>>       startupinfo)
>>>>> FileNotFoundError: [WinError 2] The system cannot find the file specified
>>> That looks like git is not on your path. The build script adds an archive of the
>> source to the output. I should probably just remove that from the script.
>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>>>> drivers ready, is correct and can be tried?
>>>>
>>> Yes. They should be good to go.
>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>> On boot now take very long time (much more time that with other windows
>> pv or without any) until arrive at login screen, network card is not
>> visible (show unable to boot both emulated and pv network card).
>> Testsigning is enabled and the other pv drivers was removed and rebooted
>> before install this new.
>> On same dom0 and domU with other pv drivers (of James Harper) I had only
>> these 2 problems:
>> - occasional network disappaer after some hours or days (probable xennet
>> crash)
>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>
>> This is the domU's cfg:
>>> name='W7-02'
>>> builder="hvm"
>>> memory=2048
>>> vcpus=2
>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>> boot='dc'
>>> device_model_version="qemu-xen"
>>> viridian=1
>>> vnc=0
>>> keymap="it"
>>> on_crash="destroy"
>>> vga="qxl"
>>> spice=1
>>> spicehost='0.0.0.0'
>>> spiceport=6003
>>> spicedisable_ticketing=1
>>> spicevdagent=1
>>> spice_clipboard_sharing=0
>>> spiceusbredirection=4
>>> soundhw="hda"
>>> localtime=1
>>> usbversion=2
>> I tried also disabling qxl, vdagent, audio and usb:
>>> name='W7-02'
>>> builder="hvm"
>>> memory=2048
>>> vcpus=2
>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>> boot='dc'
>>> device_model_version="qemu-xen"
>>> viridian=1
>>> vnc=0
>>> keymap="it"
>>> on_crash="destroy"
>>> vga="stdvga"
>>> spice=1
>>> spicehost='0.0.0.0'
>>> spiceport=6003
>>> spicedisable_ticketing=1
>>> spicevdagent=0
>>> spice_clipboard_sharing=0
>>> #spiceusbredirection=4
>>> #soundhw="hda"
>>> localtime=1
>>> #usbversion=2
>> But I had same problems.
>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu 2.1.1
>>
>> Now I'll try also with W8.
>>
>> If you need more details and/or tests tell me and I'll post them.
>>
> If you could enable xen_platform_log in QEMU then the QEMU log should tell us what's going on. If you don't know how to do that then the way I do it is to create a file called 'events' under /tmp populated with the single line:
>
> xen_platform_log
>
> and then I add:
>
> device_model_args=[ "-trace", "events=/tmp/events"]
>
> to my config. QEMU by default is built to send traces to stderr, so you should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
>
> Did you try installing the drivers in a fresh VM? It's possible that there is still some remnant of the GPLPV drivers around - uninstalling drivers on Windows is tricky.
>

Thanks for reply.
Tried with trace (log in attachment), with a fast look a saw a strange 
mac different from the one setted in cfg.
I tried removing fixed mac in xl cfg but the network card problem persist.
The old pv should be completly removed, I used also the bat for remove 
the registry keys and file, not only the unstall from control panel.
I'll try also a clean install ASAP.
Another thing: I tried also xl shutdown and not works, xeniface is 
installed (with dpinst) and liteagent is present windows folder after 
it, I must do other thing to have it working?

--------------060308040004020709030807
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7-02.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7-02.log"

xc: error: linux_gnttab_set_max_grants: ioctl SET_MAX_GRANTS failed (22 = Invalid argument): Internal error
xen be: qdisk-768: xc_gnttab_set_max_grants failed: Invalid argument
xc: error: linux_gnttab_set_max_grants: ioctl SET_MAX_GRANTS failed (22 = Invalid argument): Internal error
xen be: qdisk-832: xc_gnttab_set_max_grants failed: Invalid argument
main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 3.964000 ms, bitrate 109255801 bps (104.194451 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.7effefff
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN|HypercallInitialize: XEN 4.5
xen_platform_log xen platform: XEN|HypercallInitialize: INTERFACE 0x00040300
xen_platform_log xen platform: XEN|HypercallInitialize: HypercallPfn[0]: 00000000000032E9
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800224B040 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002249AC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A0AC0 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A1AC0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A2AC0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A3AC0 (PCI\VEN_1234&DEV_1111&SUBSYS_11001AF4&REV_00\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A4AC0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80022A5AC0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA80018465F0 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f0000000
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8001853060 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8001854060 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002260060 (IFACE 00000001)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA800226F040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002273040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA8002279040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.1.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA800228C060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/qdisk/27/768)
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT 
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f0001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000009 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/0
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA8002287C20 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA80023E4060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA80023E4060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002721B00 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880010665B0 FFFFFA800272ABC0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF88001065630 FFFFFA800272ABD0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF8800106608C FFFFFA800272ADE0
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA800272A040 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f0002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:A2:5F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {9f0e41ff-20f0-530d-9847-6eb5708b09bc}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002807250 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
xen_platform_log xen platform: XENNET|DriverUnload: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable

--------------060308040004020709030807
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------060308040004020709030807--


From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:04:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:04:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnAn-0007pi-Fc; Wed, 24 Sep 2014 14:04:01 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWnAl-0007pI-Mq
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:03:59 +0000
Received: from [85.158.143.35:27308] by server-2.bemta-4.messagelabs.com id
	E0/02-04525-E4FC2245; Wed, 24 Sep 2014 14:03:58 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411567437!12873328!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4300 invoked from network); 24 Sep 2014 14:03:58 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:03:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25255048"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQ
Date: Wed, 24 Sep 2014 14:03:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
In-Reply-To: <5422CC6D.7030805@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 14:52
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >> -----Original Message-----
> >> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >> Sent: 24 September 2014 14:07
> >> To: Paul Durrant
> >> Cc: win-pv-devel@lists.xenproject.org
> >> Subject: Re: New windows pv drivers question
> >>
> >> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>> -----Original Message-----
> >>> [snip]
> >>>>>>> Traceback (most recent call last):
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 365,
> >>>>>>> in <module
> >>>>>>>        build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 138,
> >>>>>>> in build_s
> >>>>>>> ln
> >>>>>>>        msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 122,
> >>>>>>> in msbuild
> >>>>>>>
> >>>>>>>        status = shell([bin], dir)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 100,
> >>>>>>> in shell
> >>>>>>>        print(line.rstrip())
> >>>>>>>      File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>>>>>        return
> >> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
> '\u2026'
> >> in
> >>>>>>> position
> >>>>>>> 28: character maps to <undefined>
> >>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>> Thanks for any reply.
> >>>>> Not seen anything like that before. I can only assume it's to do with
> >>>> language support. It seems like msbuild is emitting characters that the
> >> shell is
> >>>> not handling correctly. I suspect you'll be ok if you use an English
> character
> >>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>      Paul
> >>>>>
> >>>> I installed english language pack and solves the problem.
> >>> Ok. So we know what the problem was. We need to figure out a solution
> to
> >> that.
> >>
> >> Thanks, for now I built with english windows.
> >>
> >>>> After gave me other error about no sufficent permission on one exe of
> >>>> WDK, I tried to execute as administrator and did max permissions to
> >>>> everyone on the file but not, I solved also that adding nosdv.
> >>> I've seen problems running sdv where some of the processes it kicks off
> >> seem to conflict on one of the log files, so it bails with a lack of write
> >> permission. Is that the sort of thing you saw?
> >>
> >> Probably, you need that I retry and post the exactly output of error?
> >>
> >>>> After I had near the end another error where I not found a
> workaround:
> >>>>> Done Building Project
> >>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>> n" (Build target(s)).
> >>>>>
> >>>>> Build succeeded.
> >>>>>       0 Warning(s)
> >>>>>       0 Error(s)
> >>>>>
> >>>>> Time Elapsed 00:00:02.37
> >>>>>
> >>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
> goto
> >>>> error
> >>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>> vs2013\Windows7Release\Win32
> >>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>>>> '8.0.0.12'
> >>>>> ]
> >>>>> Finding ID...  0000000015
> >>>>>
> >>>>> SYMSTORE: Number of files stored = 3
> >>>>> SYMSTORE: Number of errors = 0
> >>>>> SYMSTORE: Number of files ignored = 0
> >>>>> vs2013\Windows7Release\x64
> >>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>>>> '8.0.0.12'
> >>>>> ]
> >>>>> Finding ID...  0000000016
> >>>>>
> >>>>> SYMSTORE: Number of files stored = 3
> >>>>> SYMSTORE: Number of errors = 0
> >>>>> SYMSTORE: Number of files ignored = 0
> >>>>> Traceback (most recent call last):
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> >>>>> in <module
> >>>>>       archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> >>>>> in manifes
> >>>>> t
> >>>>>       sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>     File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>       restore_signals, start_new_session)
> >>>>>     File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >>>>>       startupinfo)
> >>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> specified
> >>> That looks like git is not on your path. The build script adds an archive of
> the
> >> source to the output. I should probably just remove that from the script.
> >>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> >>>> drivers ready, is correct and can be tried?
> >>>>
> >>> Yes. They should be good to go.
> >> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >> On boot now take very long time (much more time that with other
> windows
> >> pv or without any) until arrive at login screen, network card is not
> >> visible (show unable to boot both emulated and pv network card).
> >> Testsigning is enabled and the other pv drivers was removed and
> rebooted
> >> before install this new.
> >> On same dom0 and domU with other pv drivers (of James Harper) I had
> only
> >> these 2 problems:
> >> - occasional network disappaer after some hours or days (probable
> xennet
> >> crash)
> >> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>
> >> This is the domU's cfg:
> >>> name='W7-02'
> >>> builder="hvm"
> >>> memory=2048
> >>> vcpus=2
> >>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>> boot='dc'
> >>> device_model_version="qemu-xen"
> >>> viridian=1
> >>> vnc=0
> >>> keymap="it"
> >>> on_crash="destroy"
> >>> vga="qxl"
> >>> spice=1
> >>> spicehost='0.0.0.0'
> >>> spiceport=6003
> >>> spicedisable_ticketing=1
> >>> spicevdagent=1
> >>> spice_clipboard_sharing=0
> >>> spiceusbredirection=4
> >>> soundhw="hda"
> >>> localtime=1
> >>> usbversion=2
> >> I tried also disabling qxl, vdagent, audio and usb:
> >>> name='W7-02'
> >>> builder="hvm"
> >>> memory=2048
> >>> vcpus=2
> >>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>> boot='dc'
> >>> device_model_version="qemu-xen"
> >>> viridian=1
> >>> vnc=0
> >>> keymap="it"
> >>> on_crash="destroy"
> >>> vga="stdvga"
> >>> spice=1
> >>> spicehost='0.0.0.0'
> >>> spiceport=6003
> >>> spicedisable_ticketing=1
> >>> spicevdagent=0
> >>> spice_clipboard_sharing=0
> >>> #spiceusbredirection=4
> >>> #soundhw="hda"
> >>> localtime=1
> >>> #usbversion=2
> >> But I had same problems.
> >> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
> >> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
> 2.1.1
> >>
> >> Now I'll try also with W8.
> >>
> >> If you need more details and/or tests tell me and I'll post them.
> >>
> > If you could enable xen_platform_log in QEMU then the QEMU log should
> tell us what's going on. If you don't know how to do that then the way I do it
> is to create a file called 'events' under /tmp populated with the single line:
> >
> > xen_platform_log
> >
> > and then I add:
> >
> > device_model_args=[ "-trace", "events=/tmp/events"]
> >
> > to my config. QEMU by default is built to send traces to stderr, so you
> should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
> >
> > Did you try installing the drivers in a fresh VM? It's possible that there is still
> some remnant of the GPLPV drivers around - uninstalling drivers on Windows
> is tricky.
> >
> 
> Thanks for reply.
> Tried with trace (log in attachment), with a fast look a saw a strange
> mac different from the one setted in cfg.
> I tried removing fixed mac in xl cfg but the network card problem persist.
> The old pv should be completly removed, I used also the bat for remove
> the registry keys and file, not only the unstall from control panel.
> I'll try also a clean install ASAP.

Your PV storage looks fine, but the problem with your network is here:

xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)

What this means is that your frontend waited for a very very long time for your backend to go connected, and it failed to do so. It then  give up and you get the above cascade of error logging. I suspect the problem is a lack of the following netback fix:

commit 279f438e36c0a70b23b86d2090aeec50155034a9
Author: Paul Durrant <Paul.Durrant@citrix.com>
Date:   Tue Sep 17 17:46:08 2013 +0100

    xen-netback: Don't destroy the netdev until the vif is shut down

    Without this patch, if a frontend cycles through states Closing
    and Closed (which Windows frontends need to do) then the netdev
    will be destroyed and requires re-invocation of hotplug scripts
    to restore state before the frontend can move to Connected. Thus
    when udev is not in use the backend gets stuck in InitWait.

    With this patch, the netdev is left alone whilst the backend is
    still online and is only de-registered and freed just prior to
    destroying the vif (which is also nicely symmetrical with the
    netdev allocation and registration being done during probe) so
    no re-invocation of hotplug scripts is required.

    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Wei Liu <wei.liu2@citrix.com>
    Cc: Ian Campbell <ian.campbell@citrix.com>
    Acked-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

> Another thing: I tried also xl shutdown and not works, xeniface is
> installed (with dpinst) and liteagent is present windows folder after
> it, I must do other thing to have it working?

No, it should be working. Xeniface seems have started ok, so I don't know why that's not working.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:04:01 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:04:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnAn-0007pi-Fc; Wed, 24 Sep 2014 14:04:01 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWnAl-0007pI-Mq
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:03:59 +0000
Received: from [85.158.143.35:27308] by server-2.bemta-4.messagelabs.com id
	E0/02-04525-E4FC2245; Wed, 24 Sep 2014 14:03:58 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411567437!12873328!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4300 invoked from network); 24 Sep 2014 14:03:58 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:03:58 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25255048"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQ
Date: Wed, 24 Sep 2014 14:03:57 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
In-Reply-To: <5422CC6D.7030805@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 14:52
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >> -----Original Message-----
> >> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >> Sent: 24 September 2014 14:07
> >> To: Paul Durrant
> >> Cc: win-pv-devel@lists.xenproject.org
> >> Subject: Re: New windows pv drivers question
> >>
> >> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>> -----Original Message-----
> >>> [snip]
> >>>>>>> Traceback (most recent call last):
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 365,
> >>>>>>> in <module
> >>>>>>>        build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 138,
> >>>>>>> in build_s
> >>>>>>> ln
> >>>>>>>        msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 122,
> >>>>>>> in msbuild
> >>>>>>>
> >>>>>>>        status = shell([bin], dir)
> >>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> 100,
> >>>>>>> in shell
> >>>>>>>        print(line.rstrip())
> >>>>>>>      File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>>>>>        return
> >> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
> '\u2026'
> >> in
> >>>>>>> position
> >>>>>>> 28: character maps to <undefined>
> >>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>> Thanks for any reply.
> >>>>> Not seen anything like that before. I can only assume it's to do with
> >>>> language support. It seems like msbuild is emitting characters that the
> >> shell is
> >>>> not handling correctly. I suspect you'll be ok if you use an English
> character
> >>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>      Paul
> >>>>>
> >>>> I installed english language pack and solves the problem.
> >>> Ok. So we know what the problem was. We need to figure out a solution
> to
> >> that.
> >>
> >> Thanks, for now I built with english windows.
> >>
> >>>> After gave me other error about no sufficent permission on one exe of
> >>>> WDK, I tried to execute as administrator and did max permissions to
> >>>> everyone on the file but not, I solved also that adding nosdv.
> >>> I've seen problems running sdv where some of the processes it kicks off
> >> seem to conflict on one of the log files, so it bails with a lack of write
> >> permission. Is that the sort of thing you saw?
> >>
> >> Probably, you need that I retry and post the exactly output of error?
> >>
> >>>> After I had near the end another error where I not found a
> workaround:
> >>>>> Done Building Project
> >>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>> n" (Build target(s)).
> >>>>>
> >>>>> Build succeeded.
> >>>>>       0 Warning(s)
> >>>>>       0 Error(s)
> >>>>>
> >>>>> Time Elapsed 00:00:02.37
> >>>>>
> >>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
> goto
> >>>> error
> >>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>> vs2013\Windows7Release\Win32
> >>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>>>> '8.0.0.12'
> >>>>> ]
> >>>>> Finding ID...  0000000015
> >>>>>
> >>>>> SYMSTORE: Number of files stored = 3
> >>>>> SYMSTORE: Number of errors = 0
> >>>>> SYMSTORE: Number of files ignored = 0
> >>>>> vs2013\Windows7Release\x64
> >>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
> >>>>> '8.0.0.12'
> >>>>> ]
> >>>>> Finding ID...  0000000016
> >>>>>
> >>>>> SYMSTORE: Number of files stored = 3
> >>>>> SYMSTORE: Number of errors = 0
> >>>>> SYMSTORE: Number of files ignored = 0
> >>>>> Traceback (most recent call last):
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
> >>>>> in <module
> >>>>>       archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
> >>>>>     File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
> >>>>> in manifes
> >>>>> t
> >>>>>       sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>     File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>       restore_signals, start_new_session)
> >>>>>     File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
> >>>>>       startupinfo)
> >>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> specified
> >>> That looks like git is not on your path. The build script adds an archive of
> the
> >> source to the output. I should probably just remove that from the script.
> >>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
> >>>> drivers ready, is correct and can be tried?
> >>>>
> >>> Yes. They should be good to go.
> >> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >> On boot now take very long time (much more time that with other
> windows
> >> pv or without any) until arrive at login screen, network card is not
> >> visible (show unable to boot both emulated and pv network card).
> >> Testsigning is enabled and the other pv drivers was removed and
> rebooted
> >> before install this new.
> >> On same dom0 and domU with other pv drivers (of James Harper) I had
> only
> >> these 2 problems:
> >> - occasional network disappaer after some hours or days (probable
> xennet
> >> crash)
> >> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>
> >> This is the domU's cfg:
> >>> name='W7-02'
> >>> builder="hvm"
> >>> memory=2048
> >>> vcpus=2
> >>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>> boot='dc'
> >>> device_model_version="qemu-xen"
> >>> viridian=1
> >>> vnc=0
> >>> keymap="it"
> >>> on_crash="destroy"
> >>> vga="qxl"
> >>> spice=1
> >>> spicehost='0.0.0.0'
> >>> spiceport=6003
> >>> spicedisable_ticketing=1
> >>> spicevdagent=1
> >>> spice_clipboard_sharing=0
> >>> spiceusbredirection=4
> >>> soundhw="hda"
> >>> localtime=1
> >>> usbversion=2
> >> I tried also disabling qxl, vdagent, audio and usb:
> >>> name='W7-02'
> >>> builder="hvm"
> >>> memory=2048
> >>> vcpus=2
> >>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>> boot='dc'
> >>> device_model_version="qemu-xen"
> >>> viridian=1
> >>> vnc=0
> >>> keymap="it"
> >>> on_crash="destroy"
> >>> vga="stdvga"
> >>> spice=1
> >>> spicehost='0.0.0.0'
> >>> spiceport=6003
> >>> spicedisable_ticketing=1
> >>> spicevdagent=0
> >>> spice_clipboard_sharing=0
> >>> #spiceusbredirection=4
> >>> #soundhw="hda"
> >>> localtime=1
> >>> #usbversion=2
> >> But I had same problems.
> >> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
> >> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
> 2.1.1
> >>
> >> Now I'll try also with W8.
> >>
> >> If you need more details and/or tests tell me and I'll post them.
> >>
> > If you could enable xen_platform_log in QEMU then the QEMU log should
> tell us what's going on. If you don't know how to do that then the way I do it
> is to create a file called 'events' under /tmp populated with the single line:
> >
> > xen_platform_log
> >
> > and then I add:
> >
> > device_model_args=[ "-trace", "events=/tmp/events"]
> >
> > to my config. QEMU by default is built to send traces to stderr, so you
> should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
> >
> > Did you try installing the drivers in a fresh VM? It's possible that there is still
> some remnant of the GPLPV drivers around - uninstalling drivers on Windows
> is tricky.
> >
> 
> Thanks for reply.
> Tried with trace (log in attachment), with a fast look a saw a strange
> mac different from the one setted in cfg.
> I tried removing fixed mac in xl cfg but the network card problem persist.
> The old pv should be completly removed, I used also the bat for remove
> the registry keys and file, not only the unstall from control panel.
> I'll try also a clean install ASAP.

Your PV storage looks fine, but the problem with your network is here:

xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)

What this means is that your frontend waited for a very very long time for your backend to go connected, and it failed to do so. It then  give up and you get the above cascade of error logging. I suspect the problem is a lack of the following netback fix:

commit 279f438e36c0a70b23b86d2090aeec50155034a9
Author: Paul Durrant <Paul.Durrant@citrix.com>
Date:   Tue Sep 17 17:46:08 2013 +0100

    xen-netback: Don't destroy the netdev until the vif is shut down

    Without this patch, if a frontend cycles through states Closing
    and Closed (which Windows frontends need to do) then the netdev
    will be destroyed and requires re-invocation of hotplug scripts
    to restore state before the frontend can move to Connected. Thus
    when udev is not in use the backend gets stuck in InitWait.

    With this patch, the netdev is left alone whilst the backend is
    still online and is only de-registered and freed just prior to
    destroying the vif (which is also nicely symmetrical with the
    netdev allocation and registration being done during probe) so
    no re-invocation of hotplug scripts is required.

    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Wei Liu <wei.liu2@citrix.com>
    Cc: Ian Campbell <ian.campbell@citrix.com>
    Acked-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

> Another thing: I tried also xl shutdown and not works, xeniface is
> installed (with dpinst) and liteagent is present windows folder after
> it, I must do other thing to have it working?

No, it should be working. Xeniface seems have started ok, so I don't know why that's not working.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:27:10 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:27:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnXC-0002HX-BV; Wed, 24 Sep 2014 14:27:10 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <ben.chalmers@citrix.com>) id 1XWnXA-0002HL-NL
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:27:08 +0000
Received: from [85.158.139.211:29240] by server-5.bemta-5.messagelabs.com id
	67/D6-11546-CB4D2245; Wed, 24 Sep 2014 14:27:08 +0000
X-Env-Sender: ben.chalmers@citrix.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1411568827!6400827!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12700 invoked from network); 24 Sep 2014 14:27:07 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:27:07 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25256570"
From: Ben Chalmers <ben.chalmers@citrix.com>
To: Paul Durrant <Paul.Durrant@citrix.com>, Fabio Fantoni
	<fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP2ACGLQiFP/pkakWVaAAKHiFu7pwQVaJQ
Date: Wed, 24 Sep 2014 14:27:07 +0000
Message-ID: <1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> Sent: 24 September 2014 3:04 PM
> To: Fabio Fantoni
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: [win-pv-devel] New windows pv drivers question
> 
> > Another thing: I tried also xl shutdown and not works, xeniface is
> > installed (with dpinst) and liteagent is present windows folder after
> > it, I must do other thing to have it working?
> 
> No, it should be working. Xeniface seems have started ok, so I don't know
> why that's not working.

Looking at the logged output, I don't see any sign of the lite agent running - is the lite agent service process ('liteagent.exe') running on the guest VM as the SYSTEM user?

Are there any signs in the guest's system or application event log that the lite agent process is having problems?

Ben

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:27:10 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:27:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnXC-0002HX-BV; Wed, 24 Sep 2014 14:27:10 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <ben.chalmers@citrix.com>) id 1XWnXA-0002HL-NL
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:27:08 +0000
Received: from [85.158.139.211:29240] by server-5.bemta-5.messagelabs.com id
	67/D6-11546-CB4D2245; Wed, 24 Sep 2014 14:27:08 +0000
X-Env-Sender: ben.chalmers@citrix.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1411568827!6400827!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12700 invoked from network); 24 Sep 2014 14:27:07 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-14.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:27:07 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25256570"
From: Ben Chalmers <ben.chalmers@citrix.com>
To: Paul Durrant <Paul.Durrant@citrix.com>, Fabio Fantoni
	<fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP2ACGLQiFP/pkakWVaAAKHiFu7pwQVaJQ
Date: Wed, 24 Sep 2014 14:27:07 +0000
Message-ID: <1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> Sent: 24 September 2014 3:04 PM
> To: Fabio Fantoni
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: [win-pv-devel] New windows pv drivers question
> 
> > Another thing: I tried also xl shutdown and not works, xeniface is
> > installed (with dpinst) and liteagent is present windows folder after
> > it, I must do other thing to have it working?
> 
> No, it should be working. Xeniface seems have started ok, so I don't know
> why that's not working.

Looking at the logged output, I don't see any sign of the lite agent running - is the lite agent service process ('liteagent.exe') running on the guest VM as the SYSTEM user?

Are there any signs in the guest's system or application event log that the lite agent process is having problems?

Ben

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:47:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:47:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnr2-0004Nx-3O; Wed, 24 Sep 2014 14:47:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWnr0-0004NS-RY
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:47:38 +0000
Received: from [85.158.143.35:32876] by server-2.bemta-4.messagelabs.com id
	25/21-04525-A89D2245; Wed, 24 Sep 2014 14:47:38 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-21.messagelabs.com!1411570057!12904210!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30358 invoked from network); 24 Sep 2014 14:47:37 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:47:37 -0000
Received: by mail-wi0-f178.google.com with SMTP id z2so7446137wiv.5
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 07:47:37 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=3/7ScdsG0fvga7flj7b2mVaui889IWBvJv28Su2+Crc=;
	b=d1X7pfasVWrFLPW8bXJiuxM0LTWIEZYvUz81KAwQJVaDLkjhsu9e48AiBe0l6bZIB6
	Tnr95LPT2IBVJffVwMX2wBdAgYWYxM6KhN/ktdipC0YnXwalaWjHZYbesf/kBvw01Fz1
	sKVBDX+WEEkB6P+phpxJ7vGCAIJb27XNH49LdX59CAtSo+ApiGpqUax+65swPpZhiLSQ
	I5kJkdS87jYSHtXZZafjlVND6dadgDnCXIK/DtzwcLCTb9JwIUqBfQetdVEwEK0E2qcc
	ijW9BxVLk9PvaF1i4G+u/JXOfMb9tmVu+ObdoLY3TZdsrLNKKnjbN4vmPHPDzwWzhYGa
	Wt3w==
X-Gm-Message-State: ALoCoQnxuG//wQb+WTgDTBWTW0g3jC4OoBQOsd5eaZl0mzhgEX4W7MPslpUZ69WvCwdVWq0Xk1ex
X-Received: by 10.180.210.231 with SMTP id mx7mr12078018wic.42.1411570057261; 
	Wed, 24 Sep 2014 07:47:37 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id f3sm6011723wiz.18.2014.09.24.07.47.35
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 07:47:36 -0700 (PDT)
Message-ID: <5422D98D.2020803@m2r.biz>
Date: Wed, 24 Sep 2014 16:47:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Chalmers <ben.chalmers@citrix.com>, 
	Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>	<541FEC41.6090002@m2r.biz>
	<54218BB1.2070806@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>	<54228A34.1040205@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>	<5422C200.50803@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
In-Reply-To: <1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:27, Ben Chalmers ha scritto:
>> -----Original Message-----
>> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
>> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
>> Sent: 24 September 2014 3:04 PM
>> To: Fabio Fantoni
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: [win-pv-devel] New windows pv drivers question
>>
>>> Another thing: I tried also xl shutdown and not works, xeniface is
>>> installed (with dpinst) and liteagent is present windows folder after
>>> it, I must do other thing to have it working?
>> No, it should be working. Xeniface seems have started ok, so I don't know
>> why that's not working.
> Looking at the logged output, I don't see any sign of the lite agent running - is the lite agent service process ('liteagent.exe') running on the guest VM as the SYSTEM user?
>
> Are there any signs in the guest's system or application event log that the lite agent process is having problems?
>
> Ben

w32agent with x icon I see running in W8 now, show also "@PRODUCT_NAME 
Interface Service".
Install drivers on W8 clean without old pv before and have same issues 
as W7 described before.
In windows system event show an error probably related to it:
The @PRODUCT_NAME Interface Service service failed to start due to the 
following error:
The system cannot find the file specified.
Tomorrow I'll probably try also netback fix linked by Paul.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:47:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:47:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWnr2-0004Nx-3O; Wed, 24 Sep 2014 14:47:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWnr0-0004NS-RY
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:47:38 +0000
Received: from [85.158.143.35:32876] by server-2.bemta-4.messagelabs.com id
	25/21-04525-A89D2245; Wed, 24 Sep 2014 14:47:38 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-21.messagelabs.com!1411570057!12904210!1
X-Originating-IP: [209.85.212.178]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30358 invoked from network); 24 Sep 2014 14:47:37 -0000
Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com)
	(209.85.212.178)
	by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:47:37 -0000
Received: by mail-wi0-f178.google.com with SMTP id z2so7446137wiv.5
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 07:47:37 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=3/7ScdsG0fvga7flj7b2mVaui889IWBvJv28Su2+Crc=;
	b=d1X7pfasVWrFLPW8bXJiuxM0LTWIEZYvUz81KAwQJVaDLkjhsu9e48AiBe0l6bZIB6
	Tnr95LPT2IBVJffVwMX2wBdAgYWYxM6KhN/ktdipC0YnXwalaWjHZYbesf/kBvw01Fz1
	sKVBDX+WEEkB6P+phpxJ7vGCAIJb27XNH49LdX59CAtSo+ApiGpqUax+65swPpZhiLSQ
	I5kJkdS87jYSHtXZZafjlVND6dadgDnCXIK/DtzwcLCTb9JwIUqBfQetdVEwEK0E2qcc
	ijW9BxVLk9PvaF1i4G+u/JXOfMb9tmVu+ObdoLY3TZdsrLNKKnjbN4vmPHPDzwWzhYGa
	Wt3w==
X-Gm-Message-State: ALoCoQnxuG//wQb+WTgDTBWTW0g3jC4OoBQOsd5eaZl0mzhgEX4W7MPslpUZ69WvCwdVWq0Xk1ex
X-Received: by 10.180.210.231 with SMTP id mx7mr12078018wic.42.1411570057261; 
	Wed, 24 Sep 2014 07:47:37 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id f3sm6011723wiz.18.2014.09.24.07.47.35
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 07:47:36 -0700 (PDT)
Message-ID: <5422D98D.2020803@m2r.biz>
Date: Wed, 24 Sep 2014 16:47:41 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Chalmers <ben.chalmers@citrix.com>, 
	Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>	<541FEC41.6090002@m2r.biz>
	<54218BB1.2070806@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>	<54228A34.1040205@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>	<5422C200.50803@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
In-Reply-To: <1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:27, Ben Chalmers ha scritto:
>> -----Original Message-----
>> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
>> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
>> Sent: 24 September 2014 3:04 PM
>> To: Fabio Fantoni
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: [win-pv-devel] New windows pv drivers question
>>
>>> Another thing: I tried also xl shutdown and not works, xeniface is
>>> installed (with dpinst) and liteagent is present windows folder after
>>> it, I must do other thing to have it working?
>> No, it should be working. Xeniface seems have started ok, so I don't know
>> why that's not working.
> Looking at the logged output, I don't see any sign of the lite agent running - is the lite agent service process ('liteagent.exe') running on the guest VM as the SYSTEM user?
>
> Are there any signs in the guest's system or application event log that the lite agent process is having problems?
>
> Ben

w32agent with x icon I see running in W8 now, show also "@PRODUCT_NAME 
Interface Service".
Install drivers on W8 clean without old pv before and have same issues 
as W7 described before.
In windows system event show an error probably related to it:
The @PRODUCT_NAME Interface Service service failed to start due to the 
following error:
The system cannot find the file specified.
Tomorrow I'll probably try also netback fix linked by Paul.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:57:16 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:57:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo0K-0005W3-C8; Wed, 24 Sep 2014 14:57:16 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <ben.chalmers@citrix.com>) id 1XWo0J-0005Ve-F8
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:57:15 +0000
Received: from [85.158.137.68:20376] by server-17.bemta-3.messagelabs.com id
	34/61-01689-ACBD2245; Wed, 24 Sep 2014 14:57:14 +0000
X-Env-Sender: ben.chalmers@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1411570633!11792691!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30960 invoked from network); 24 Sep 2014 14:57:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:57:13 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25258391"
From: Ben Chalmers <ben.chalmers@citrix.com>
To: 'Fabio Fantoni' <fabio.fantoni@m2r.biz>, Paul Durrant
	<Paul.Durrant@citrix.com>
Thread-Topic: [win-pv-devel] New windows pv drivers question
Thread-Index: AQHP2ACGLQiFP/pkakWVaAAKHiFu7pwQVaJQ///l0YCAACJJ4A==
Date: Wed, 24 Sep 2014 14:57:02 +0000
Message-ID: <1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>	<54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
In-Reply-To: <5422D98D.2020803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org



> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
> Sent: 24 September 2014 3:48 PM
> To: Ben Chalmers; Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: [win-pv-devel] New windows pv drivers question


> > Looking at the logged output, I don't see any sign of the lite agent running -
> is the lite agent service process ('liteagent.exe') running on the guest VM as
> the SYSTEM user?
> >
> > Are there any signs in the guest's system or application event log that the
> lite agent process is having problems?
> >
> > Ben
> 
> w32agent with x icon I see running in W8 now, show also
> "@PRODUCT_NAME Interface Service".
> Install drivers on W8 clean without old pv before and have same issues as W7
> described before.
> In windows system event show an error probably related to it:
> The @PRODUCT_NAME Interface Service service failed to start due to the
> following error:
> The system cannot find the file specified.
> Tomorrow I'll probably try also netback fix linked by Paul.

That suggests to me that liteagent.exe isn't being found by windows
	
In  the registry, Is the value of  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xenlite ImagePath : %SystemRoot%\System32\liteagent.exe ?

And does the file  c:\windows\system32\liteagent.exe (or using the equivalent systemroot for your system) exist?

(and, if not, is liteagent.exe in the folder you installed xeniface from ?)


Ben

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 14:57:16 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 14:57:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo0K-0005W3-C8; Wed, 24 Sep 2014 14:57:16 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <ben.chalmers@citrix.com>) id 1XWo0J-0005Ve-F8
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 14:57:15 +0000
Received: from [85.158.137.68:20376] by server-17.bemta-3.messagelabs.com id
	34/61-01689-ACBD2245; Wed, 24 Sep 2014 14:57:14 +0000
X-Env-Sender: ben.chalmers@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1411570633!11792691!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30960 invoked from network); 24 Sep 2014 14:57:13 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 14:57:13 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25258391"
From: Ben Chalmers <ben.chalmers@citrix.com>
To: 'Fabio Fantoni' <fabio.fantoni@m2r.biz>, Paul Durrant
	<Paul.Durrant@citrix.com>
Thread-Topic: [win-pv-devel] New windows pv drivers question
Thread-Index: AQHP2ACGLQiFP/pkakWVaAAKHiFu7pwQVaJQ///l0YCAACJJ4A==
Date: Wed, 24 Sep 2014 14:57:02 +0000
Message-ID: <1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz>	<54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
In-Reply-To: <5422D98D.2020803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org



> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
> Sent: 24 September 2014 3:48 PM
> To: Ben Chalmers; Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: [win-pv-devel] New windows pv drivers question


> > Looking at the logged output, I don't see any sign of the lite agent running -
> is the lite agent service process ('liteagent.exe') running on the guest VM as
> the SYSTEM user?
> >
> > Are there any signs in the guest's system or application event log that the
> lite agent process is having problems?
> >
> > Ben
> 
> w32agent with x icon I see running in W8 now, show also
> "@PRODUCT_NAME Interface Service".
> Install drivers on W8 clean without old pv before and have same issues as W7
> described before.
> In windows system event show an error probably related to it:
> The @PRODUCT_NAME Interface Service service failed to start due to the
> following error:
> The system cannot find the file specified.
> Tomorrow I'll probably try also netback fix linked by Paul.

That suggests to me that liteagent.exe isn't being found by windows
	
In  the registry, Is the value of  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xenlite ImagePath : %SystemRoot%\System32\liteagent.exe ?

And does the file  c:\windows\system32\liteagent.exe (or using the equivalent systemroot for your system) exist?

(and, if not, is liteagent.exe in the folder you installed xeniface from ?)


Ben

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 15:05:14 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 15:05:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo82-0006CC-HS; Wed, 24 Sep 2014 15:05:14 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWo7r-0006Bd-DZ
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 15:05:09 +0000
Received: from [193.109.254.147:39754] by server-5.bemta-14.messagelabs.com id
	AC/32-28255-E9DD2245; Wed, 24 Sep 2014 15:05:02 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1411571101!7358546!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6598 invoked from network); 24 Sep 2014 15:05:02 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 15:05:01 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25258912"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, Ben Chalmers
	<ben.chalmers@citrix.com>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQ///nW4CAAAW/gIAAJj+A
Date: Wed, 24 Sep 2014 15:05:01 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048FF9E@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
In-Reply-To: <5422D98D.2020803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 15:48
> To: Ben Chalmers; Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 16:27, Ben Chalmers ha scritto:
> >> -----Original Message-----
> >> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> >> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> >> Sent: 24 September 2014 3:04 PM
> >> To: Fabio Fantoni
> >> Cc: win-pv-devel@lists.xenproject.org
> >> Subject: Re: [win-pv-devel] New windows pv drivers question
> >>
> >>> Another thing: I tried also xl shutdown and not works, xeniface is
> >>> installed (with dpinst) and liteagent is present windows folder after
> >>> it, I must do other thing to have it working?
> >> No, it should be working. Xeniface seems have started ok, so I don't know
> >> why that's not working.
> > Looking at the logged output, I don't see any sign of the lite agent running -
> is the lite agent service process ('liteagent.exe') running on the guest VM as
> the SYSTEM user?
> >
> > Are there any signs in the guest's system or application event log that the
> lite agent process is having problems?
> >
> > Ben
> 
> w32agent with x icon I see running in W8 now, show also
> "@PRODUCT_NAME
> Interface Service".

Looks like there's a typo somewhere; PRODUCT_NAME should have been substituted by 'Xen Project'.

  Paul

> Install drivers on W8 clean without old pv before and have same issues
> as W7 described before.
> In windows system event show an error probably related to it:
> The @PRODUCT_NAME Interface Service service failed to start due to the
> following error:
> The system cannot find the file specified.
> Tomorrow I'll probably try also netback fix linked by Paul.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 15:05:14 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 15:05:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo82-0006CC-HS; Wed, 24 Sep 2014 15:05:14 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XWo7r-0006Bd-DZ
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 15:05:09 +0000
Received: from [193.109.254.147:39754] by server-5.bemta-14.messagelabs.com id
	AC/32-28255-E9DD2245; Wed, 24 Sep 2014 15:05:02 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1411571101!7358546!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=BIZ_TLD,received_headers: 
	No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6598 invoked from network); 24 Sep 2014 15:05:02 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 15:05:01 -0000
X-IronPort-AV: E=Sophos;i="5.04,589,1406592000"; d="scan'208";a="25258912"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>, Ben Chalmers
	<ben.chalmers@citrix.com>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQ///nW4CAAAW/gIAAJj+A
Date: Wed, 24 Sep 2014 15:05:01 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD048FF9E@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
In-Reply-To: <5422D98D.2020803@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 24 September 2014 15:48
> To: Ben Chalmers; Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 24/09/2014 16:27, Ben Chalmers ha scritto:
> >> -----Original Message-----
> >> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> >> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> >> Sent: 24 September 2014 3:04 PM
> >> To: Fabio Fantoni
> >> Cc: win-pv-devel@lists.xenproject.org
> >> Subject: Re: [win-pv-devel] New windows pv drivers question
> >>
> >>> Another thing: I tried also xl shutdown and not works, xeniface is
> >>> installed (with dpinst) and liteagent is present windows folder after
> >>> it, I must do other thing to have it working?
> >> No, it should be working. Xeniface seems have started ok, so I don't know
> >> why that's not working.
> > Looking at the logged output, I don't see any sign of the lite agent running -
> is the lite agent service process ('liteagent.exe') running on the guest VM as
> the SYSTEM user?
> >
> > Are there any signs in the guest's system or application event log that the
> lite agent process is having problems?
> >
> > Ben
> 
> w32agent with x icon I see running in W8 now, show also
> "@PRODUCT_NAME
> Interface Service".

Looks like there's a typo somewhere; PRODUCT_NAME should have been substituted by 'Xen Project'.

  Paul

> Install drivers on W8 clean without old pv before and have same issues
> as W7 described before.
> In windows system event show an error probably related to it:
> The @PRODUCT_NAME Interface Service service failed to start due to the
> following error:
> The system cannot find the file specified.
> Tomorrow I'll probably try also netback fix linked by Paul.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 15:05:14 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 15:05:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo82-0006CF-ID; Wed, 24 Sep 2014 15:05:14 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWo81-0006Bm-6n
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 15:05:13 +0000
Received: from [193.109.254.147:27309] by server-4.bemta-14.messagelabs.com id
	B1/BF-01677-8ADD2245; Wed, 24 Sep 2014 15:05:12 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-27.messagelabs.com!1411571111!12775939!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21916 invoked from network); 24 Sep 2014 15:05:11 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 15:05:11 -0000
Received: by mail-wg0-f51.google.com with SMTP id z12so2526477wgg.10
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 08:05:11 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=ejmK2VnhTuJm6fsDA+O0w07HnZXyY3MUs4wggolXu4g=;
	b=lmvRAxW2XOdxbxsYBwfEis0JfaS0roD2GdILm8lwv3EfL4ygDNl0d8zm4Fy2/t3Zlf
	Zh0jhecaCLpY0DKaJIgoJzQNSopYw8G7/H4MIezAArYs1xT/g1NlaQJu1eY9ARr9nUSj
	BXXuq2ANbWR5rGwYe87ijyTl4frVHU4ecsJqcDodvfRU7AYss054z5PVokNvec0apKtL
	W21VRuvTs6W2TvuJCF2JCH0EVEGrTPZRyxyYFT1YmsuV/btDm+o/61Uz5xu6Ehaia8Vf
	W4wlfST05a64xAUHBadHBkVHCAwGW2iy2di7I6END5c9ukXlnDEBSS2PacJRx/9VWPFc
	xl3Q==
X-Gm-Message-State: ALoCoQlGT6rGKlb3Mv85jJddoKxQzOI4D6Lr9CsA+UItqVm8NvASUFJv79T9L2a3ZY5qZT0zvG8n
X-Received: by 10.194.134.100 with SMTP id pj4mr9015482wjb.72.1411571111225;
	Wed, 24 Sep 2014 08:05:11 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ey6sm2056955wib.16.2014.09.24.08.05.09
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 08:05:10 -0700 (PDT)
Message-ID: <5422DDAB.1030705@m2r.biz>
Date: Wed, 24 Sep 2014 17:05:15 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Chalmers <ben.chalmers@citrix.com>, 
	Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>	<541FEC41.6090002@m2r.biz>	<54218BB1.2070806@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>	<54228A34.1040205@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>	<5422C200.50803@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>	<5422CC6D.7030805@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
In-Reply-To: <1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:57, Ben Chalmers ha scritto:
>
>> -----Original Message-----
>> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
>> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
>> Sent: 24 September 2014 3:48 PM
>> To: Ben Chalmers; Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: [win-pv-devel] New windows pv drivers question
>
>>> Looking at the logged output, I don't see any sign of the lite agent running -
>> is the lite agent service process ('liteagent.exe') running on the guest VM as
>> the SYSTEM user?
>>> Are there any signs in the guest's system or application event log that the
>> lite agent process is having problems?
>>> Ben
>> w32agent with x icon I see running in W8 now, show also
>> "@PRODUCT_NAME Interface Service".
>> Install drivers on W8 clean without old pv before and have same issues as W7
>> described before.
>> In windows system event show an error probably related to it:
>> The @PRODUCT_NAME Interface Service service failed to start due to the
>> following error:
>> The system cannot find the file specified.
>> Tomorrow I'll probably try also netback fix linked by Paul.
> That suggests to me that liteagent.exe isn't being found by windows
> 	
> In  the registry, Is the value of  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xenlite ImagePath : %SystemRoot%\System32\liteagent.exe ?

Yes

>
> And does the file  c:\windows\system32\liteagent.exe (or using the equivalent systemroot for your system) exist?

Yes

>
> (and, if not, is liteagent.exe in the folder you installed xeniface from ?)
>
>
> Ben



_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Wed Sep 24 15:05:14 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Sep 2014 15:05:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XWo82-0006CF-ID; Wed, 24 Sep 2014 15:05:14 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XWo81-0006Bm-6n
	for win-pv-devel@lists.xenproject.org; Wed, 24 Sep 2014 15:05:13 +0000
Received: from [193.109.254.147:27309] by server-4.bemta-14.messagelabs.com id
	B1/BF-01677-8ADD2245; Wed, 24 Sep 2014 15:05:12 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-27.messagelabs.com!1411571111!12775939!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21916 invoked from network); 24 Sep 2014 15:05:11 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Sep 2014 15:05:11 -0000
Received: by mail-wg0-f51.google.com with SMTP id z12so2526477wgg.10
	for <win-pv-devel@lists.xenproject.org>;
	Wed, 24 Sep 2014 08:05:11 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=ejmK2VnhTuJm6fsDA+O0w07HnZXyY3MUs4wggolXu4g=;
	b=lmvRAxW2XOdxbxsYBwfEis0JfaS0roD2GdILm8lwv3EfL4ygDNl0d8zm4Fy2/t3Zlf
	Zh0jhecaCLpY0DKaJIgoJzQNSopYw8G7/H4MIezAArYs1xT/g1NlaQJu1eY9ARr9nUSj
	BXXuq2ANbWR5rGwYe87ijyTl4frVHU4ecsJqcDodvfRU7AYss054z5PVokNvec0apKtL
	W21VRuvTs6W2TvuJCF2JCH0EVEGrTPZRyxyYFT1YmsuV/btDm+o/61Uz5xu6Ehaia8Vf
	W4wlfST05a64xAUHBadHBkVHCAwGW2iy2di7I6END5c9ukXlnDEBSS2PacJRx/9VWPFc
	xl3Q==
X-Gm-Message-State: ALoCoQlGT6rGKlb3Mv85jJddoKxQzOI4D6Lr9CsA+UItqVm8NvASUFJv79T9L2a3ZY5qZT0zvG8n
X-Received: by 10.194.134.100 with SMTP id pj4mr9015482wjb.72.1411571111225;
	Wed, 24 Sep 2014 08:05:11 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ey6sm2056955wib.16.2014.09.24.08.05.09
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Wed, 24 Sep 2014 08:05:10 -0700 (PDT)
Message-ID: <5422DDAB.1030705@m2r.biz>
Date: Wed, 24 Sep 2014 17:05:15 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Chalmers <ben.chalmers@citrix.com>, 
	Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>	<541FEC41.6090002@m2r.biz>	<54218BB1.2070806@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>	<54228A34.1040205@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>	<5422C200.50803@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>	<5422CC6D.7030805@m2r.biz>	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>	<1AD33E34BA5E3649B4F6C7FE476686F4040E1489@AMSPEX01CL02.citrite.net>
	<5422D98D.2020803@m2r.biz>
	<1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
In-Reply-To: <1AD33E34BA5E3649B4F6C7FE476686F4040E155D@AMSPEX01CL02.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:57, Ben Chalmers ha scritto:
>
>> -----Original Message-----
>> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
>> bounces@lists.xenproject.org] On Behalf Of Fabio Fantoni
>> Sent: 24 September 2014 3:48 PM
>> To: Ben Chalmers; Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: [win-pv-devel] New windows pv drivers question
>
>>> Looking at the logged output, I don't see any sign of the lite agent running -
>> is the lite agent service process ('liteagent.exe') running on the guest VM as
>> the SYSTEM user?
>>> Are there any signs in the guest's system or application event log that the
>> lite agent process is having problems?
>>> Ben
>> w32agent with x icon I see running in W8 now, show also
>> "@PRODUCT_NAME Interface Service".
>> Install drivers on W8 clean without old pv before and have same issues as W7
>> described before.
>> In windows system event show an error probably related to it:
>> The @PRODUCT_NAME Interface Service service failed to start due to the
>> following error:
>> The system cannot find the file specified.
>> Tomorrow I'll probably try also netback fix linked by Paul.
> That suggests to me that liteagent.exe isn't being found by windows
> 	
> In  the registry, Is the value of  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xenlite ImagePath : %SystemRoot%\System32\liteagent.exe ?

Yes

>
> And does the file  c:\windows\system32\liteagent.exe (or using the equivalent systemroot for your system) exist?

Yes

>
> (and, if not, is liteagent.exe in the folder you installed xeniface from ?)
>
>
> Ben



_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 10:00:21 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 10:00:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX5qX-0004av-7n; Thu, 25 Sep 2014 10:00:21 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX5qV-0004aY-BQ
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 10:00:19 +0000
Received: from [85.158.137.68:65214] by server-1.bemta-3.messagelabs.com id
	D3/0C-30185-2B7E3245; Thu, 25 Sep 2014 10:00:18 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411639216!11910226!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32197 invoked from network); 25 Sep 2014 10:00:17 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 10:00:17 -0000
Received: by mail-we0-f173.google.com with SMTP id x48so6224051wes.18
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 03:00:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=dtn44Z61tjCeYbg+Ujc9FEZgMW8qUJOYwwai1ChI5C8=;
	b=BO8B0h50zclIBxFB2ltar96zBvSo/ZE9/H/NIGq0hxcbzSux2etdYsRjCMor2+lMZB
	vOWrOV7pv/T7ADtbCoL4MTD5xwPpEyXQbAofFrsaJBq7liFS/IljpkGvzgH8s+DNH0+U
	zpjNHFYBye+igw4GKuxtybVW3NikMyQfE9350eYwXJ5hVV1MxM5D3vL4ZlK5wmxE2VAq
	3hxMimV9gTlThBi1NbF7MUBWbBcWQQoDh6Byf+Ed+Omc5gCFnhbXcyUXZQ53jzONxXlp
	evu9buhEkFXvot2NtUZbntJEpsTNRP6MnyHjqqaS2Q+m2mKgqz9yz5ildNTUASyJTdCb
	pu+g==
X-Gm-Message-State: ALoCoQkNCKS4/q8INqI3MSlsvctuq2tZhg8nxwkUYJXVVF08coub/kkNiX3PHc05U4RzUfRTFMZT
X-Received: by 10.194.205.102 with SMTP id lf6mr1953053wjc.112.1411639216525; 
	Thu, 25 Sep 2014 03:00:16 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ic8sm2133745wjb.25.2014.09.25.03.00.14
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 03:00:15 -0700 (PDT)
Message-ID: <5423E7B7.2010702@m2r.biz>
Date: Thu, 25 Sep 2014 12:00:23 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:03, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 24 September 2014 14:52
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>> -----Original Message-----
>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>> Sent: 24 September 2014 14:07
>>>> To: Paul Durrant
>>>> Cc: win-pv-devel@lists.xenproject.org
>>>> Subject: Re: New windows pv drivers question
>>>>
>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>> -----Original Message-----
>>>>> [snip]
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 365,
>>>>>>>>> in <module
>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 138,
>>>>>>>>> in build_s
>>>>>>>>> ln
>>>>>>>>>         msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 122,
>>>>>>>>> in msbuild
>>>>>>>>>
>>>>>>>>>         status = shell([bin], dir)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 100,
>>>>>>>>> in shell
>>>>>>>>>         print(line.rstrip())
>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>>>>>         return
>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>> '\u2026'
>>>> in
>>>>>>>>> position
>>>>>>>>> 28: character maps to <undefined>
>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>> Thanks for any reply.
>>>>>>> Not seen anything like that before. I can only assume it's to do with
>>>>>> language support. It seems like msbuild is emitting characters that the
>>>> shell is
>>>>>> not handling correctly. I suspect you'll be ok if you use an English
>> character
>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>       Paul
>>>>>>>
>>>>>> I installed english language pack and solves the problem.
>>>>> Ok. So we know what the problem was. We need to figure out a solution
>> to
>>>> that.
>>>>
>>>> Thanks, for now I built with english windows.
>>>>
>>>>>> After gave me other error about no sufficent permission on one exe of
>>>>>> WDK, I tried to execute as administrator and did max permissions to
>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>> I've seen problems running sdv where some of the processes it kicks off
>>>> seem to conflict on one of the log files, so it bails with a lack of write
>>>> permission. Is that the sort of thing you saw?
>>>>
>>>> Probably, you need that I retry and post the exactly output of error?
>>>>
>>>>>> After I had near the end another error where I not found a
>> workaround:
>>>>>>> Done Building Project
>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>> n" (Build target(s)).
>>>>>>>
>>>>>>> Build succeeded.
>>>>>>>        0 Warning(s)
>>>>>>>        0 Error(s)
>>>>>>>
>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>
>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>> goto
>>>>>> error
>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>> vs2013\Windows7Release\Win32
>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>>>> '8.0.0.12'
>>>>>>> ]
>>>>>>> Finding ID...  0000000015
>>>>>>>
>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>> vs2013\Windows7Release\x64
>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>>>> '8.0.0.12'
>>>>>>> ]
>>>>>>> Finding ID...  0000000016
>>>>>>>
>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>> Traceback (most recent call last):
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>>>>>> in <module
>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>>>>>> in manifes
>>>>>>> t
>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>        restore_signals, start_new_session)
>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>>>>>        startupinfo)
>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>> specified
>>>>> That looks like git is not on your path. The build script adds an archive of
>> the
>>>> source to the output. I should probably just remove that from the script.
>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>>>>>> drivers ready, is correct and can be tried?
>>>>>>
>>>>> Yes. They should be good to go.
>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>> On boot now take very long time (much more time that with other
>> windows
>>>> pv or without any) until arrive at login screen, network card is not
>>>> visible (show unable to boot both emulated and pv network card).
>>>> Testsigning is enabled and the other pv drivers was removed and
>> rebooted
>>>> before install this new.
>>>> On same dom0 and domU with other pv drivers (of James Harper) I had
>> only
>>>> these 2 problems:
>>>> - occasional network disappaer after some hours or days (probable
>> xennet
>>>> crash)
>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>
>>>> This is the domU's cfg:
>>>>> name='W7-02'
>>>>> builder="hvm"
>>>>> memory=2048
>>>>> vcpus=2
>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>> boot='dc'
>>>>> device_model_version="qemu-xen"
>>>>> viridian=1
>>>>> vnc=0
>>>>> keymap="it"
>>>>> on_crash="destroy"
>>>>> vga="qxl"
>>>>> spice=1
>>>>> spicehost='0.0.0.0'
>>>>> spiceport=6003
>>>>> spicedisable_ticketing=1
>>>>> spicevdagent=1
>>>>> spice_clipboard_sharing=0
>>>>> spiceusbredirection=4
>>>>> soundhw="hda"
>>>>> localtime=1
>>>>> usbversion=2
>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>> name='W7-02'
>>>>> builder="hvm"
>>>>> memory=2048
>>>>> vcpus=2
>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>> boot='dc'
>>>>> device_model_version="qemu-xen"
>>>>> viridian=1
>>>>> vnc=0
>>>>> keymap="it"
>>>>> on_crash="destroy"
>>>>> vga="stdvga"
>>>>> spice=1
>>>>> spicehost='0.0.0.0'
>>>>> spiceport=6003
>>>>> spicedisable_ticketing=1
>>>>> spicevdagent=0
>>>>> spice_clipboard_sharing=0
>>>>> #spiceusbredirection=4
>>>>> #soundhw="hda"
>>>>> localtime=1
>>>>> #usbversion=2
>>>> But I had same problems.
>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>> 2.1.1
>>>> Now I'll try also with W8.
>>>>
>>>> If you need more details and/or tests tell me and I'll post them.
>>>>
>>> If you could enable xen_platform_log in QEMU then the QEMU log should
>> tell us what's going on. If you don't know how to do that then the way I do it
>> is to create a file called 'events' under /tmp populated with the single line:
>>> xen_platform_log
>>>
>>> and then I add:
>>>
>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>
>>> to my config. QEMU by default is built to send traces to stderr, so you
>> should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
>>> Did you try installing the drivers in a fresh VM? It's possible that there is still
>> some remnant of the GPLPV drivers around - uninstalling drivers on Windows
>> is tricky.
>> Thanks for reply.
>> Tried with trace (log in attachment), with a fast look a saw a strange
>> mac different from the one setted in cfg.
>> I tried removing fixed mac in xl cfg but the network card problem persist.
>> The old pv should be completly removed, I used also the bat for remove
>> the registry keys and file, not only the unstall from control panel.
>> I'll try also a clean install ASAP.
> Your PV storage looks fine, but the problem with your network is here:
>
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>
> What this means is that your frontend waited for a very very long time for your backend to go connected, and it failed to do so. It then  give up and you get the above cascade of error logging. I suspect the problem is a lack of the following netback fix:
>
> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> Author: Paul Durrant <Paul.Durrant@citrix.com>
> Date:   Tue Sep 17 17:46:08 2013 +0100
>
>      xen-netback: Don't destroy the netdev until the vif is shut down
>
>      Without this patch, if a frontend cycles through states Closing
>      and Closed (which Windows frontends need to do) then the netdev
>      will be destroyed and requires re-invocation of hotplug scripts
>      to restore state before the frontend can move to Connected. Thus
>      when udev is not in use the backend gets stuck in InitWait.
>
>      With this patch, the netdev is left alone whilst the backend is
>      still online and is only de-registered and freed just prior to
>      destroying the vif (which is also nicely symmetrical with the
>      netdev allocation and registration being done during probe) so
>      no re-invocation of hotplug scripts is required.
>
>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>      Cc: David Vrabel <david.vrabel@citrix.com>
>      Cc: Wei Liu <wei.liu2@citrix.com>
>      Cc: Ian Campbell <ian.campbell@citrix.com>
>      Acked-by: Wei Liu <wei.liu2@citrix.com>
>      Signed-off-by: David S. Miller <davem@davemloft.net>

I found it applied upstream:
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
But not in 3.2-stable branch, I tried to apply it on latest Wheezy 
(debian 7) kernel source but there are too many difference and I was 
unable to apply it manually.
Can someone give me advices please?

Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing 
and very reliable? I plain to use new versions also in production ASAP 
(if I can solve theoccasional network crash on windows I have with gplpv 
and hope to solve with these drivers), with the agent lite of these 
drivers should finally solves also the post-restore problem of time(and 
users unable to login) with the windows domUs in a domain.
Now I'll do a fast test with kernel for backports to solves if solves 
the problem.

Thanks for any reply and sorry for my bad english.

>
>> Another thing: I tried also xl shutdown and not works, xeniface is
>> installed (with dpinst) and liteagent is present windows folder after
>> it, I must do other thing to have it working?
> No, it should be working. Xeniface seems have started ok, so I don't know why that's not working.
>
>    Paul


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 10:00:21 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 10:00:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX5qX-0004av-7n; Thu, 25 Sep 2014 10:00:21 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX5qV-0004aY-BQ
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 10:00:19 +0000
Received: from [85.158.137.68:65214] by server-1.bemta-3.messagelabs.com id
	D3/0C-30185-2B7E3245; Thu, 25 Sep 2014 10:00:18 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411639216!11910226!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32197 invoked from network); 25 Sep 2014 10:00:17 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 10:00:17 -0000
Received: by mail-we0-f173.google.com with SMTP id x48so6224051wes.18
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 03:00:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=dtn44Z61tjCeYbg+Ujc9FEZgMW8qUJOYwwai1ChI5C8=;
	b=BO8B0h50zclIBxFB2ltar96zBvSo/ZE9/H/NIGq0hxcbzSux2etdYsRjCMor2+lMZB
	vOWrOV7pv/T7ADtbCoL4MTD5xwPpEyXQbAofFrsaJBq7liFS/IljpkGvzgH8s+DNH0+U
	zpjNHFYBye+igw4GKuxtybVW3NikMyQfE9350eYwXJ5hVV1MxM5D3vL4ZlK5wmxE2VAq
	3hxMimV9gTlThBi1NbF7MUBWbBcWQQoDh6Byf+Ed+Omc5gCFnhbXcyUXZQ53jzONxXlp
	evu9buhEkFXvot2NtUZbntJEpsTNRP6MnyHjqqaS2Q+m2mKgqz9yz5ildNTUASyJTdCb
	pu+g==
X-Gm-Message-State: ALoCoQkNCKS4/q8INqI3MSlsvctuq2tZhg8nxwkUYJXVVF08coub/kkNiX3PHc05U4RzUfRTFMZT
X-Received: by 10.194.205.102 with SMTP id lf6mr1953053wjc.112.1411639216525; 
	Thu, 25 Sep 2014 03:00:16 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ic8sm2133745wjb.25.2014.09.25.03.00.14
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 03:00:15 -0700 (PDT)
Message-ID: <5423E7B7.2010702@m2r.biz>
Date: Thu, 25 Sep 2014 12:00:23 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 24/09/2014 16:03, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 24 September 2014 14:52
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org
>> Subject: Re: New windows pv drivers question
>>
>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>> -----Original Message-----
>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>> Sent: 24 September 2014 14:07
>>>> To: Paul Durrant
>>>> Cc: win-pv-devel@lists.xenproject.org
>>>> Subject: Re: New windows pv drivers question
>>>>
>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>> -----Original Message-----
>>>>> [snip]
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 365,
>>>>>>>>> in <module
>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 138,
>>>>>>>>> in build_s
>>>>>>>>> ln
>>>>>>>>>         msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 122,
>>>>>>>>> in msbuild
>>>>>>>>>
>>>>>>>>>         status = shell([bin], dir)
>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>> 100,
>>>>>>>>> in shell
>>>>>>>>>         print(line.rstrip())
>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>>>>>>>         return
>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>> '\u2026'
>>>> in
>>>>>>>>> position
>>>>>>>>> 28: character maps to <undefined>
>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>> Thanks for any reply.
>>>>>>> Not seen anything like that before. I can only assume it's to do with
>>>>>> language support. It seems like msbuild is emitting characters that the
>>>> shell is
>>>>>> not handling correctly. I suspect you'll be ok if you use an English
>> character
>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>       Paul
>>>>>>>
>>>>>> I installed english language pack and solves the problem.
>>>>> Ok. So we know what the problem was. We need to figure out a solution
>> to
>>>> that.
>>>>
>>>> Thanks, for now I built with english windows.
>>>>
>>>>>> After gave me other error about no sufficent permission on one exe of
>>>>>> WDK, I tried to execute as administrator and did max permissions to
>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>> I've seen problems running sdv where some of the processes it kicks off
>>>> seem to conflict on one of the log files, so it bails with a lack of write
>>>> permission. Is that the sort of thing you saw?
>>>>
>>>> Probably, you need that I retry and post the exactly output of error?
>>>>
>>>>>> After I had near the end another error where I not found a
>> workaround:
>>>>>>> Done Building Project
>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>> n" (Build target(s)).
>>>>>>>
>>>>>>> Build succeeded.
>>>>>>>        0 Warning(s)
>>>>>>>        0 Error(s)
>>>>>>>
>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>
>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>> goto
>>>>>> error
>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>> vs2013\Windows7Release\Win32
>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>>>> '8.0.0.12'
>>>>>>> ]
>>>>>>> Finding ID...  0000000015
>>>>>>>
>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>> vs2013\Windows7Release\x64
>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', '/v',
>>>>>>> '8.0.0.12'
>>>>>>> ]
>>>>>>> Finding ID...  0000000016
>>>>>>>
>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>> Traceback (most recent call last):
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 375,
>>>>>>> in <module
>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(), tgz=True)
>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 289,
>>>>>>> in manifes
>>>>>>> t
>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>        restore_signals, start_new_session)
>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
>>>>>>>        startupinfo)
>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>> specified
>>>>> That looks like git is not on your path. The build script adds an archive of
>> the
>>>> source to the output. I should probably just remove that from the script.
>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are the
>>>>>> drivers ready, is correct and can be tried?
>>>>>>
>>>>> Yes. They should be good to go.
>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>> On boot now take very long time (much more time that with other
>> windows
>>>> pv or without any) until arrive at login screen, network card is not
>>>> visible (show unable to boot both emulated and pv network card).
>>>> Testsigning is enabled and the other pv drivers was removed and
>> rebooted
>>>> before install this new.
>>>> On same dom0 and domU with other pv drivers (of James Harper) I had
>> only
>>>> these 2 problems:
>>>> - occasional network disappaer after some hours or days (probable
>> xennet
>>>> crash)
>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>
>>>> This is the domU's cfg:
>>>>> name='W7-02'
>>>>> builder="hvm"
>>>>> memory=2048
>>>>> vcpus=2
>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>> boot='dc'
>>>>> device_model_version="qemu-xen"
>>>>> viridian=1
>>>>> vnc=0
>>>>> keymap="it"
>>>>> on_crash="destroy"
>>>>> vga="qxl"
>>>>> spice=1
>>>>> spicehost='0.0.0.0'
>>>>> spiceport=6003
>>>>> spicedisable_ticketing=1
>>>>> spicevdagent=1
>>>>> spice_clipboard_sharing=0
>>>>> spiceusbredirection=4
>>>>> soundhw="hda"
>>>>> localtime=1
>>>>> usbversion=2
>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>> name='W7-02'
>>>>> builder="hvm"
>>>>> memory=2048
>>>>> vcpus=2
>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>> boot='dc'
>>>>> device_model_version="qemu-xen"
>>>>> viridian=1
>>>>> vnc=0
>>>>> keymap="it"
>>>>> on_crash="destroy"
>>>>> vga="stdvga"
>>>>> spice=1
>>>>> spicehost='0.0.0.0'
>>>>> spiceport=6003
>>>>> spicedisable_ticketing=1
>>>>> spicevdagent=0
>>>>> spice_clipboard_sharing=0
>>>>> #spiceusbredirection=4
>>>>> #soundhw="hda"
>>>>> localtime=1
>>>>> #usbversion=2
>>>> But I had same problems.
>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl patch
>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>> 2.1.1
>>>> Now I'll try also with W8.
>>>>
>>>> If you need more details and/or tests tell me and I'll post them.
>>>>
>>> If you could enable xen_platform_log in QEMU then the QEMU log should
>> tell us what's going on. If you don't know how to do that then the way I do it
>> is to create a file called 'events' under /tmp populated with the single line:
>>> xen_platform_log
>>>
>>> and then I add:
>>>
>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>
>>> to my config. QEMU by default is built to send traces to stderr, so you
>> should see the log entries appear in /var/log/xen/qemu-dm-<vm name>.log.
>>> Did you try installing the drivers in a fresh VM? It's possible that there is still
>> some remnant of the GPLPV drivers around - uninstalling drivers on Windows
>> is tricky.
>> Thanks for reply.
>> Tried with trace (log in attachment), with a fast look a saw a strange
>> mac different from the one setted in cfg.
>> I tried removing fixed mac in xl cfg but the network card problem persist.
>> The old pv should be completly removed, I used also the bat for remove
>> the registry keys and file, not only the unstall from control panel.
>> I'll try also a clean install ASAP.
> Your PV storage looks fine, but the problem with your network is here:
>
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail3
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail2
> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>
> What this means is that your frontend waited for a very very long time for your backend to go connected, and it failed to do so. It then  give up and you get the above cascade of error logging. I suspect the problem is a lack of the following netback fix:
>
> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> Author: Paul Durrant <Paul.Durrant@citrix.com>
> Date:   Tue Sep 17 17:46:08 2013 +0100
>
>      xen-netback: Don't destroy the netdev until the vif is shut down
>
>      Without this patch, if a frontend cycles through states Closing
>      and Closed (which Windows frontends need to do) then the netdev
>      will be destroyed and requires re-invocation of hotplug scripts
>      to restore state before the frontend can move to Connected. Thus
>      when udev is not in use the backend gets stuck in InitWait.
>
>      With this patch, the netdev is left alone whilst the backend is
>      still online and is only de-registered and freed just prior to
>      destroying the vif (which is also nicely symmetrical with the
>      netdev allocation and registration being done during probe) so
>      no re-invocation of hotplug scripts is required.
>
>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>      Cc: David Vrabel <david.vrabel@citrix.com>
>      Cc: Wei Liu <wei.liu2@citrix.com>
>      Cc: Ian Campbell <ian.campbell@citrix.com>
>      Acked-by: Wei Liu <wei.liu2@citrix.com>
>      Signed-off-by: David S. Miller <davem@davemloft.net>

I found it applied upstream:
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
But not in 3.2-stable branch, I tried to apply it on latest Wheezy 
(debian 7) kernel source but there are too many difference and I was 
unable to apply it manually.
Can someone give me advices please?

Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing 
and very reliable? I plain to use new versions also in production ASAP 
(if I can solve theoccasional network crash on windows I have with gplpv 
and hope to solve with these drivers), with the agent lite of these 
drivers should finally solves also the post-restore problem of time(and 
users unable to login) with the windows domUs in a domain.
Now I'll do a fast test with kernel for backports to solves if solves 
the problem.

Thanks for any reply and sorry for my bad english.

>
>> Another thing: I tried also xl shutdown and not works, xeniface is
>> installed (with dpinst) and liteagent is present windows folder after
>> it, I must do other thing to have it working?
> No, it should be working. Xeniface seems have started ok, so I don't know why that's not working.
>
>    Paul


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 11:28:48 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 11:28:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX7E8-00053v-Cu; Thu, 25 Sep 2014 11:28:48 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX7E7-00053o-BC
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 11:28:47 +0000
Received: from [85.158.139.211:12863] by server-5.bemta-5.messagelabs.com id
	E0/B9-11546-E6CF3245; Thu, 25 Sep 2014 11:28:46 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-8.tower-206.messagelabs.com!1411644525!11955447!1
X-Originating-IP: [74.125.82.43]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9765 invoked from network); 25 Sep 2014 11:28:45 -0000
Received: from mail-wg0-f43.google.com (HELO mail-wg0-f43.google.com)
	(74.125.82.43)
	by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 11:28:45 -0000
Received: by mail-wg0-f43.google.com with SMTP id y10so8143796wgg.14
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 04:28:45 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=rywBHzX8lfMVlyFuC9/tVW382fEKqch2l4iFutpIrQ8=;
	b=Kr2IIxgwlWnvihxS2ftVXxkbpN8cLA2vwRJYA+0d2bKExrieKzvTkpTv2d9Dh41orl
	DETa7oe1Xk2h2MrupoZaFICGzr+M8P9hHmGSlTx5C1FWAc7A6Mvm8+Ky9YHnoJJdGVp5
	q+1JbXLkb4KVyHVaphQCzSqnMRQFXldv6ZmmxRyM47GcKYduiKnrGd1MVMpDa3uB8p0t
	dYj+cCxg74UtBTA1whJUoUqIfvIMr0ejp7lSokDhkZ3iYlnfVi0XcavArM/N3oOThrLd
	SYcZs8cjMg/C7H++sz02mGYpGacgGoYdFZXHzbTwkvJZM5OUQnsJZev/vys6cyVdBCMP
	h3Pw==
X-Gm-Message-State: ALoCoQkjVTI/xHrRqtrBzXSg7TJgloq/vQGgsCiD6q/LdUfNc5Ht37bH4GXGgOg3fF9CB8FB1NV2
X-Received: by 10.194.94.196 with SMTP id de4mr15769010wjb.86.1411644525215;
	Thu, 25 Sep 2014 04:28:45 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	li17sm1518839wic.13.2014.09.25.04.28.43 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 04:28:44 -0700 (PDT)
Message-ID: <5423FC73.8060704@m2r.biz>
Date: Thu, 25 Sep 2014 13:28:51 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz>
In-Reply-To: <5423E7B7.2010702@m2r.biz>
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> Il 24/09/2014 16:03, Paul Durrant ha scritto:
>>> -----Original Message-----
>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>> Sent: 24 September 2014 14:52
>>> To: Paul Durrant
>>> Cc: win-pv-devel@lists.xenproject.org
>>> Subject: Re: New windows pv drivers question
>>>
>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 24 September 2014 14:07
>>>>> To: Paul Durrant
>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: New windows pv drivers question
>>>>>
>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>>> -----Original Message-----
>>>>>> [snip]
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 365,
>>>>>>>>>> in <module
>>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]], 
>>>>>>>>>> vs)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 138,
>>>>>>>>>> in build_s
>>>>>>>>>> ln
>>>>>>>>>>         msbuild(platform, configuration, 'Build', name + 
>>>>>>>>>> '.sln', '', vs)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 122,
>>>>>>>>>> in msbuild
>>>>>>>>>>
>>>>>>>>>>         status = shell([bin], dir)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 100,
>>>>>>>>>> in shell
>>>>>>>>>>         print(line.rstrip())
>>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in 
>>>>>>>>>> encode
>>>>>>>>>>         return
>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>>> '\u2026'
>>>>> in
>>>>>>>>>> position
>>>>>>>>>> 28: character maps to <undefined>
>>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>>> Thanks for any reply.
>>>>>>>> Not seen anything like that before. I can only assume it's to 
>>>>>>>> do with
>>>>>>> language support. It seems like msbuild is emitting characters 
>>>>>>> that the
>>>>> shell is
>>>>>>> not handling correctly. I suspect you'll be ok if you use an 
>>>>>>> English
>>> character
>>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>>       Paul
>>>>>>>>
>>>>>>> I installed english language pack and solves the problem.
>>>>>> Ok. So we know what the problem was. We need to figure out a 
>>>>>> solution
>>> to
>>>>> that.
>>>>>
>>>>> Thanks, for now I built with english windows.
>>>>>
>>>>>>> After gave me other error about no sufficent permission on one 
>>>>>>> exe of
>>>>>>> WDK, I tried to execute as administrator and did max permissions to
>>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>>> I've seen problems running sdv where some of the processes it 
>>>>>> kicks off
>>>>> seem to conflict on one of the log files, so it bails with a lack 
>>>>> of write
>>>>> permission. Is that the sort of thing you saw?
>>>>>
>>>>> Probably, you need that I retry and post the exactly output of error?
>>>>>
>>>>>>> After I had near the end another error where I not found a
>>> workaround:
>>>>>>>> Done Building Project
>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>>> n" (Build target(s)).
>>>>>>>>
>>>>>>>> Build succeeded.
>>>>>>>>        0 Warning(s)
>>>>>>>>        0 Error(s)
>>>>>>>>
>>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>>
>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>>> goto
>>>>>>> error
>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>>> vs2013\Windows7Release\Win32
>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', 
>>>>>>>> '/v',
>>>>>>>> '8.0.0.12'
>>>>>>>> ]
>>>>>>>> Finding ID...  0000000015
>>>>>>>>
>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>> vs2013\Windows7Release\x64
>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', 
>>>>>>>> '/v',
>>>>>>>> '8.0.0.12'
>>>>>>>> ]
>>>>>>>> Finding ID...  0000000016
>>>>>>>>
>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>> Traceback (most recent call last):
>>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", 
>>>>>>>> line 375,
>>>>>>>> in <module
>>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(), 
>>>>>>>> tgz=True)
>>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", 
>>>>>>>> line 289,
>>>>>>>> in manifes
>>>>>>>> t
>>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>>        restore_signals, start_new_session)
>>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in 
>>>>>>>> _execute_child
>>>>>>>>        startupinfo)
>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>>> specified
>>>>>> That looks like git is not on your path. The build script adds an 
>>>>>> archive of
>>> the
>>>>> source to the output. I should probably just remove that from the 
>>>>> script.
>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are 
>>>>>>> the
>>>>>>> drivers ready, is correct and can be tried?
>>>>>>>
>>>>>> Yes. They should be good to go.
>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>>> On boot now take very long time (much more time that with other
>>> windows
>>>>> pv or without any) until arrive at login screen, network card is not
>>>>> visible (show unable to boot both emulated and pv network card).
>>>>> Testsigning is enabled and the other pv drivers was removed and
>>> rebooted
>>>>> before install this new.
>>>>> On same dom0 and domU with other pv drivers (of James Harper) I had
>>> only
>>>>> these 2 problems:
>>>>> - occasional network disappaer after some hours or days (probable
>>> xennet
>>>>> crash)
>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>>
>>>>> This is the domU's cfg:
>>>>>> name='W7-02'
>>>>>> builder="hvm"
>>>>>> memory=2048
>>>>>> vcpus=2
>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>> boot='dc'
>>>>>> device_model_version="qemu-xen"
>>>>>> viridian=1
>>>>>> vnc=0
>>>>>> keymap="it"
>>>>>> on_crash="destroy"
>>>>>> vga="qxl"
>>>>>> spice=1
>>>>>> spicehost='0.0.0.0'
>>>>>> spiceport=6003
>>>>>> spicedisable_ticketing=1
>>>>>> spicevdagent=1
>>>>>> spice_clipboard_sharing=0
>>>>>> spiceusbredirection=4
>>>>>> soundhw="hda"
>>>>>> localtime=1
>>>>>> usbversion=2
>>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>>> name='W7-02'
>>>>>> builder="hvm"
>>>>>> memory=2048
>>>>>> vcpus=2
>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>> boot='dc'
>>>>>> device_model_version="qemu-xen"
>>>>>> viridian=1
>>>>>> vnc=0
>>>>>> keymap="it"
>>>>>> on_crash="destroy"
>>>>>> vga="stdvga"
>>>>>> spice=1
>>>>>> spicehost='0.0.0.0'
>>>>>> spiceport=6003
>>>>>> spicedisable_ticketing=1
>>>>>> spicevdagent=0
>>>>>> spice_clipboard_sharing=0
>>>>>> #spiceusbredirection=4
>>>>>> #soundhw="hda"
>>>>>> localtime=1
>>>>>> #usbversion=2
>>>>> But I had same problems.
>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl 
>>>>> patch
>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>>> 2.1.1
>>>>> Now I'll try also with W8.
>>>>>
>>>>> If you need more details and/or tests tell me and I'll post them.
>>>>>
>>>> If you could enable xen_platform_log in QEMU then the QEMU log should
>>> tell us what's going on. If you don't know how to do that then the 
>>> way I do it
>>> is to create a file called 'events' under /tmp populated with the 
>>> single line:
>>>> xen_platform_log
>>>>
>>>> and then I add:
>>>>
>>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>>
>>>> to my config. QEMU by default is built to send traces to stderr, so 
>>>> you
>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm 
>>> name>.log.
>>>> Did you try installing the drivers in a fresh VM? It's possible 
>>>> that there is still
>>> some remnant of the GPLPV drivers around - uninstalling drivers on 
>>> Windows
>>> is tricky.
>>> Thanks for reply.
>>> Tried with trace (log in attachment), with a fast look a saw a strange
>>> mac different from the one setted in cfg.
>>> I tried removing fixed mac in xl cfg but the network card problem 
>>> persist.
>>> The old pv should be completly removed, I used also the bat for remove
>>> the registry keys and file, not only the unstall from control panel.
>>> I'll try also a clean install ASAP.
>> Your PV storage looks fine, but the problem with your network is here:
>>
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail3
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail2
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 
>> (c0000001)
>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>>
>> What this means is that your frontend waited for a very very long 
>> time for your backend to go connected, and it failed to do so. It 
>> then  give up and you get the above cascade of error logging. I 
>> suspect the problem is a lack of the following netback fix:
>>
>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
>> Author: Paul Durrant <Paul.Durrant@citrix.com>
>> Date:   Tue Sep 17 17:46:08 2013 +0100
>>
>>      xen-netback: Don't destroy the netdev until the vif is shut down
>>
>>      Without this patch, if a frontend cycles through states Closing
>>      and Closed (which Windows frontends need to do) then the netdev
>>      will be destroyed and requires re-invocation of hotplug scripts
>>      to restore state before the frontend can move to Connected. Thus
>>      when udev is not in use the backend gets stuck in InitWait.
>>
>>      With this patch, the netdev is left alone whilst the backend is
>>      still online and is only de-registered and freed just prior to
>>      destroying the vif (which is also nicely symmetrical with the
>>      netdev allocation and registration being done during probe) so
>>      no re-invocation of hotplug scripts is required.
>>
>>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>>      Cc: David Vrabel <david.vrabel@citrix.com>
>>      Cc: Wei Liu <wei.liu2@citrix.com>
>>      Cc: Ian Campbell <ian.campbell@citrix.com>
>>      Acked-by: Wei Liu <wei.liu2@citrix.com>
>>      Signed-off-by: David S. Miller <davem@davemloft.net>
>
> I found it applied upstream:
> https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9 
>
> But not in 3.2-stable branch, I tried to apply it on latest Wheezy 
> (debian 7) kernel source but there are too many difference and I was 
> unable to apply it manually.
> Can someone give me advices please?
>
> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing 
> and very reliable? I plain to use new versions also in production ASAP 
> (if I can solve theoccasional network crash on windows I have with 
> gplpv and hope to solve with these drivers), with the agent lite of 
> these drivers should finally solves also the post-restore problem of 
> time(and users unable to login) with the windows domUs in a domain.
> Now I'll do a fast test with kernel for backports to solves if solves 
> the problem.
>
> Thanks for any reply and sorry for my bad english.

I tried the kernel from backports and solves the network and very long 
boot time problem.
The xen agent lite problem still persist instead, on my latest test on 
windows 7 show xenlite service running but xl shutdown and update time 
on restore are still not working :(
I not saw an agent error in windows events log but I saw this error:
the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
With hwinfo I saw that is realtek emulated network card, is it correctly 
since pv driver is in use?

Thanks for any reply.

>
>>
>>> Another thing: I tried also xl shutdown and not works, xeniface is
>>> installed (with dpinst) and liteagent is present windows folder after
>>> it, I must do other thing to have it working?
>> No, it should be working. Xeniface seems have started ok, so I don't 
>> know why that's not working.
>>
>>    Paul
>


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 11:28:48 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 11:28:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX7E8-00053v-Cu; Thu, 25 Sep 2014 11:28:48 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX7E7-00053o-BC
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 11:28:47 +0000
Received: from [85.158.139.211:12863] by server-5.bemta-5.messagelabs.com id
	E0/B9-11546-E6CF3245; Thu, 25 Sep 2014 11:28:46 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-8.tower-206.messagelabs.com!1411644525!11955447!1
X-Originating-IP: [74.125.82.43]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9765 invoked from network); 25 Sep 2014 11:28:45 -0000
Received: from mail-wg0-f43.google.com (HELO mail-wg0-f43.google.com)
	(74.125.82.43)
	by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 11:28:45 -0000
Received: by mail-wg0-f43.google.com with SMTP id y10so8143796wgg.14
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 04:28:45 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=rywBHzX8lfMVlyFuC9/tVW382fEKqch2l4iFutpIrQ8=;
	b=Kr2IIxgwlWnvihxS2ftVXxkbpN8cLA2vwRJYA+0d2bKExrieKzvTkpTv2d9Dh41orl
	DETa7oe1Xk2h2MrupoZaFICGzr+M8P9hHmGSlTx5C1FWAc7A6Mvm8+Ky9YHnoJJdGVp5
	q+1JbXLkb4KVyHVaphQCzSqnMRQFXldv6ZmmxRyM47GcKYduiKnrGd1MVMpDa3uB8p0t
	dYj+cCxg74UtBTA1whJUoUqIfvIMr0ejp7lSokDhkZ3iYlnfVi0XcavArM/N3oOThrLd
	SYcZs8cjMg/C7H++sz02mGYpGacgGoYdFZXHzbTwkvJZM5OUQnsJZev/vys6cyVdBCMP
	h3Pw==
X-Gm-Message-State: ALoCoQkjVTI/xHrRqtrBzXSg7TJgloq/vQGgsCiD6q/LdUfNc5Ht37bH4GXGgOg3fF9CB8FB1NV2
X-Received: by 10.194.94.196 with SMTP id de4mr15769010wjb.86.1411644525215;
	Thu, 25 Sep 2014 04:28:45 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	li17sm1518839wic.13.2014.09.25.04.28.43 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 04:28:44 -0700 (PDT)
Message-ID: <5423FC73.8060704@m2r.biz>
Date: Thu, 25 Sep 2014 13:28:51 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz>
In-Reply-To: <5423E7B7.2010702@m2r.biz>
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> Il 24/09/2014 16:03, Paul Durrant ha scritto:
>>> -----Original Message-----
>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>> Sent: 24 September 2014 14:52
>>> To: Paul Durrant
>>> Cc: win-pv-devel@lists.xenproject.org
>>> Subject: Re: New windows pv drivers question
>>>
>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 24 September 2014 14:07
>>>>> To: Paul Durrant
>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: New windows pv drivers question
>>>>>
>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>>> -----Original Message-----
>>>>>> [snip]
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 365,
>>>>>>>>>> in <module
>>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]], 
>>>>>>>>>> vs)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 138,
>>>>>>>>>> in build_s
>>>>>>>>>> ln
>>>>>>>>>>         msbuild(platform, configuration, 'Build', name + 
>>>>>>>>>> '.sln', '', vs)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 122,
>>>>>>>>>> in msbuild
>>>>>>>>>>
>>>>>>>>>>         status = shell([bin], dir)
>>>>>>>>>>       File 
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>> 100,
>>>>>>>>>> in shell
>>>>>>>>>>         print(line.rstrip())
>>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in 
>>>>>>>>>> encode
>>>>>>>>>>         return
>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>>> '\u2026'
>>>>> in
>>>>>>>>>> position
>>>>>>>>>> 28: character maps to <undefined>
>>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>>> Thanks for any reply.
>>>>>>>> Not seen anything like that before. I can only assume it's to 
>>>>>>>> do with
>>>>>>> language support. It seems like msbuild is emitting characters 
>>>>>>> that the
>>>>> shell is
>>>>>>> not handling correctly. I suspect you'll be ok if you use an 
>>>>>>> English
>>> character
>>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>>       Paul
>>>>>>>>
>>>>>>> I installed english language pack and solves the problem.
>>>>>> Ok. So we know what the problem was. We need to figure out a 
>>>>>> solution
>>> to
>>>>> that.
>>>>>
>>>>> Thanks, for now I built with english windows.
>>>>>
>>>>>>> After gave me other error about no sufficent permission on one 
>>>>>>> exe of
>>>>>>> WDK, I tried to execute as administrator and did max permissions to
>>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>>> I've seen problems running sdv where some of the processes it 
>>>>>> kicks off
>>>>> seem to conflict on one of the log files, so it bails with a lack 
>>>>> of write
>>>>> permission. Is that the sort of thing you saw?
>>>>>
>>>>> Probably, you need that I retry and post the exactly output of error?
>>>>>
>>>>>>> After I had near the end another error where I not found a
>>> workaround:
>>>>>>>> Done Building Project
>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>>> n" (Build target(s)).
>>>>>>>>
>>>>>>>> Build succeeded.
>>>>>>>>        0 Warning(s)
>>>>>>>>        0 Error(s)
>>>>>>>>
>>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>>
>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>>> goto
>>>>>>> error
>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>>> vs2013\Windows7Release\Win32
>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', 
>>>>>>>> '/v',
>>>>>>>> '8.0.0.12'
>>>>>>>> ]
>>>>>>>> Finding ID...  0000000015
>>>>>>>>
>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>> vs2013\Windows7Release\x64
>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus', 
>>>>>>>> '/v',
>>>>>>>> '8.0.0.12'
>>>>>>>> ]
>>>>>>>> Finding ID...  0000000016
>>>>>>>>
>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>> Traceback (most recent call last):
>>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", 
>>>>>>>> line 375,
>>>>>>>> in <module
>>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(), 
>>>>>>>> tgz=True)
>>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", 
>>>>>>>> line 289,
>>>>>>>> in manifes
>>>>>>>> t
>>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>>        restore_signals, start_new_session)
>>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in 
>>>>>>>> _execute_child
>>>>>>>>        startupinfo)
>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>>> specified
>>>>>> That looks like git is not on your path. The build script adds an 
>>>>>> archive of
>>> the
>>>>> source to the output. I should probably just remove that from the 
>>>>> script.
>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are 
>>>>>>> the
>>>>>>> drivers ready, is correct and can be tried?
>>>>>>>
>>>>>> Yes. They should be good to go.
>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>>> On boot now take very long time (much more time that with other
>>> windows
>>>>> pv or without any) until arrive at login screen, network card is not
>>>>> visible (show unable to boot both emulated and pv network card).
>>>>> Testsigning is enabled and the other pv drivers was removed and
>>> rebooted
>>>>> before install this new.
>>>>> On same dom0 and domU with other pv drivers (of James Harper) I had
>>> only
>>>>> these 2 problems:
>>>>> - occasional network disappaer after some hours or days (probable
>>> xennet
>>>>> crash)
>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>>
>>>>> This is the domU's cfg:
>>>>>> name='W7-02'
>>>>>> builder="hvm"
>>>>>> memory=2048
>>>>>> vcpus=2
>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>> boot='dc'
>>>>>> device_model_version="qemu-xen"
>>>>>> viridian=1
>>>>>> vnc=0
>>>>>> keymap="it"
>>>>>> on_crash="destroy"
>>>>>> vga="qxl"
>>>>>> spice=1
>>>>>> spicehost='0.0.0.0'
>>>>>> spiceport=6003
>>>>>> spicedisable_ticketing=1
>>>>>> spicevdagent=1
>>>>>> spice_clipboard_sharing=0
>>>>>> spiceusbredirection=4
>>>>>> soundhw="hda"
>>>>>> localtime=1
>>>>>> usbversion=2
>>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>>> name='W7-02'
>>>>>> builder="hvm"
>>>>>> memory=2048
>>>>>> vcpus=2
>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>> disk=['/mnt/vm/disks/W7-02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>> boot='dc'
>>>>>> device_model_version="qemu-xen"
>>>>>> viridian=1
>>>>>> vnc=0
>>>>>> keymap="it"
>>>>>> on_crash="destroy"
>>>>>> vga="stdvga"
>>>>>> spice=1
>>>>>> spicehost='0.0.0.0'
>>>>>> spiceport=6003
>>>>>> spicedisable_ticketing=1
>>>>>> spicevdagent=0
>>>>>> spice_clipboard_sharing=0
>>>>>> #spiceusbredirection=4
>>>>>> #soundhw="hda"
>>>>>> localtime=1
>>>>>> #usbversion=2
>>>>> But I had same problems.
>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl 
>>>>> patch
>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>>> 2.1.1
>>>>> Now I'll try also with W8.
>>>>>
>>>>> If you need more details and/or tests tell me and I'll post them.
>>>>>
>>>> If you could enable xen_platform_log in QEMU then the QEMU log should
>>> tell us what's going on. If you don't know how to do that then the 
>>> way I do it
>>> is to create a file called 'events' under /tmp populated with the 
>>> single line:
>>>> xen_platform_log
>>>>
>>>> and then I add:
>>>>
>>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>>
>>>> to my config. QEMU by default is built to send traces to stderr, so 
>>>> you
>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm 
>>> name>.log.
>>>> Did you try installing the drivers in a fresh VM? It's possible 
>>>> that there is still
>>> some remnant of the GPLPV drivers around - uninstalling drivers on 
>>> Windows
>>> is tricky.
>>> Thanks for reply.
>>> Tried with trace (log in attachment), with a fast look a saw a strange
>>> mac different from the one setted in cfg.
>>> I tried removing fixed mac in xl cfg but the network card problem 
>>> persist.
>>> The old pv should be completly removed, I used also the bat for remove
>>> the registry keys and file, not only the unstall from control panel.
>>> I'll try also a clean install ASAP.
>> Your PV storage looks fine, but the problem with your network is here:
>>
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail3
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail2
>> xen_platform_log xen platform: XENVIF|__FrontendWaitForStateChange: 
>> fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1 
>> (c0000001)
>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>>
>> What this means is that your frontend waited for a very very long 
>> time for your backend to go connected, and it failed to do so. It 
>> then  give up and you get the above cascade of error logging. I 
>> suspect the problem is a lack of the following netback fix:
>>
>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
>> Author: Paul Durrant <Paul.Durrant@citrix.com>
>> Date:   Tue Sep 17 17:46:08 2013 +0100
>>
>>      xen-netback: Don't destroy the netdev until the vif is shut down
>>
>>      Without this patch, if a frontend cycles through states Closing
>>      and Closed (which Windows frontends need to do) then the netdev
>>      will be destroyed and requires re-invocation of hotplug scripts
>>      to restore state before the frontend can move to Connected. Thus
>>      when udev is not in use the backend gets stuck in InitWait.
>>
>>      With this patch, the netdev is left alone whilst the backend is
>>      still online and is only de-registered and freed just prior to
>>      destroying the vif (which is also nicely symmetrical with the
>>      netdev allocation and registration being done during probe) so
>>      no re-invocation of hotplug scripts is required.
>>
>>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>>      Cc: David Vrabel <david.vrabel@citrix.com>
>>      Cc: Wei Liu <wei.liu2@citrix.com>
>>      Cc: Ian Campbell <ian.campbell@citrix.com>
>>      Acked-by: Wei Liu <wei.liu2@citrix.com>
>>      Signed-off-by: David S. Miller <davem@davemloft.net>
>
> I found it applied upstream:
> https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9 
>
> But not in 3.2-stable branch, I tried to apply it on latest Wheezy 
> (debian 7) kernel source but there are too many difference and I was 
> unable to apply it manually.
> Can someone give me advices please?
>
> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing 
> and very reliable? I plain to use new versions also in production ASAP 
> (if I can solve theoccasional network crash on windows I have with 
> gplpv and hope to solve with these drivers), with the agent lite of 
> these drivers should finally solves also the post-restore problem of 
> time(and users unable to login) with the windows domUs in a domain.
> Now I'll do a fast test with kernel for backports to solves if solves 
> the problem.
>
> Thanks for any reply and sorry for my bad english.

I tried the kernel from backports and solves the network and very long 
boot time problem.
The xen agent lite problem still persist instead, on my latest test on 
windows 7 show xenlite service running but xl shutdown and update time 
on restore are still not working :(
I not saw an agent error in windows events log but I saw this error:
the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
With hwinfo I saw that is realtek emulated network card, is it correctly 
since pv driver is in use?

Thanks for any reply.

>
>>
>>> Another thing: I tried also xl shutdown and not works, xeniface is
>>> installed (with dpinst) and liteagent is present windows folder after
>>> it, I must do other thing to have it working?
>> No, it should be working. Xeniface seems have started ok, so I don't 
>> know why that's not working.
>>
>>    Paul
>


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 11:38:08 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 11:38:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX7NA-0005no-83; Thu, 25 Sep 2014 11:38:08 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX7N9-0005na-3M
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 11:38:07 +0000
Received: from [193.109.254.147:50693] by server-12.bemta-14.messagelabs.com
	id DD/C5-01461-E9EF3245; Thu, 25 Sep 2014 11:38:06 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1411645085!12890008!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14063 invoked from network); 25 Sep 2014 11:38:05 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 11:38:05 -0000
X-IronPort-AV: E=Sophos;i="5.04,596,1406592000"; d="scan'208";a="25286325"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQgAEvKYCAABi4gIAAIhhA
Date: Thu, 25 Sep 2014 11:38:03 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
In-Reply-To: <5423FC73.8060704@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 25 September 2014 12:29
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> > Il 24/09/2014 16:03, Paul Durrant ha scritto:
> >>> -----Original Message-----
> >>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>> Sent: 24 September 2014 14:52
> >>> To: Paul Durrant
> >>> Cc: win-pv-devel@lists.xenproject.org
> >>> Subject: Re: New windows pv drivers question
> >>>
> >>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >>>>> -----Original Message-----
> >>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>> Sent: 24 September 2014 14:07
> >>>>> To: Paul Durrant
> >>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>> Subject: Re: New windows pv drivers question
> >>>>>
> >>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>>>>> -----Original Message-----
> >>>>>> [snip]
> >>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 365,
> >>>>>>>>>> in <module
> >>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]],
> >>>>>>>>>> vs)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 138,
> >>>>>>>>>> in build_s
> >>>>>>>>>> ln
> >>>>>>>>>>         msbuild(platform, configuration, 'Build', name +
> >>>>>>>>>> '.sln', '', vs)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 122,
> >>>>>>>>>> in msbuild
> >>>>>>>>>>
> >>>>>>>>>>         status = shell([bin], dir)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 100,
> >>>>>>>>>> in shell
> >>>>>>>>>>         print(line.rstrip())
> >>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in
> >>>>>>>>>> encode
> >>>>>>>>>>         return
> >>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
> >>> '\u2026'
> >>>>> in
> >>>>>>>>>> position
> >>>>>>>>>> 28: character maps to <undefined>
> >>>>>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>>>>> Thanks for any reply.
> >>>>>>>> Not seen anything like that before. I can only assume it's to
> >>>>>>>> do with
> >>>>>>> language support. It seems like msbuild is emitting characters
> >>>>>>> that the
> >>>>> shell is
> >>>>>>> not handling correctly. I suspect you'll be ok if you use an
> >>>>>>> English
> >>> character
> >>>>>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>>>>       Paul
> >>>>>>>>
> >>>>>>> I installed english language pack and solves the problem.
> >>>>>> Ok. So we know what the problem was. We need to figure out a
> >>>>>> solution
> >>> to
> >>>>> that.
> >>>>>
> >>>>> Thanks, for now I built with english windows.
> >>>>>
> >>>>>>> After gave me other error about no sufficent permission on one
> >>>>>>> exe of
> >>>>>>> WDK, I tried to execute as administrator and did max permissions
> to
> >>>>>>> everyone on the file but not, I solved also that adding nosdv.
> >>>>>> I've seen problems running sdv where some of the processes it
> >>>>>> kicks off
> >>>>> seem to conflict on one of the log files, so it bails with a lack
> >>>>> of write
> >>>>> permission. Is that the sort of thing you saw?
> >>>>>
> >>>>> Probably, you need that I retry and post the exactly output of error?
> >>>>>
> >>>>>>> After I had near the end another error where I not found a
> >>> workaround:
> >>>>>>>> Done Building Project
> >>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>>>>> n" (Build target(s)).
> >>>>>>>>
> >>>>>>>> Build succeeded.
> >>>>>>>>        0 Warning(s)
> >>>>>>>>        0 Error(s)
> >>>>>>>>
> >>>>>>>> Time Elapsed 00:00:02.37
> >>>>>>>>
> >>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
> >>> goto
> >>>>>>> error
> >>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>>>>> vs2013\Windows7Release\Win32
> >>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>> '/v',
> >>>>>>>> '8.0.0.12'
> >>>>>>>> ]
> >>>>>>>> Finding ID...  0000000015
> >>>>>>>>
> >>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>> vs2013\Windows7Release\x64
> >>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>> '/v',
> >>>>>>>> '8.0.0.12'
> >>>>>>>> ]
> >>>>>>>> Finding ID...  0000000016
> >>>>>>>>
> >>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>> Traceback (most recent call last):
> >>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>> line 375,
> >>>>>>>> in <module
> >>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(),
> >>>>>>>> tgz=True)
> >>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>> line 289,
> >>>>>>>> in manifes
> >>>>>>>> t
> >>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>>>>        restore_signals, start_new_session)
> >>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in
> >>>>>>>> _execute_child
> >>>>>>>>        startupinfo)
> >>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> >>> specified
> >>>>>> That looks like git is not on your path. The build script adds an
> >>>>>> archive of
> >>> the
> >>>>> source to the output. I should probably just remove that from the
> >>>>> script.
> >>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are
> >>>>>>> the
> >>>>>>> drivers ready, is correct and can be tried?
> >>>>>>>
> >>>>>> Yes. They should be good to go.
> >>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >>>>> On boot now take very long time (much more time that with other
> >>> windows
> >>>>> pv or without any) until arrive at login screen, network card is not
> >>>>> visible (show unable to boot both emulated and pv network card).
> >>>>> Testsigning is enabled and the other pv drivers was removed and
> >>> rebooted
> >>>>> before install this new.
> >>>>> On same dom0 and domU with other pv drivers (of James Harper) I
> had
> >>> only
> >>>>> these 2 problems:
> >>>>> - occasional network disappaer after some hours or days (probable
> >>> xennet
> >>>>> crash)
> >>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>>>>
> >>>>> This is the domU's cfg:
> >>>>>> name='W7-02'
> >>>>>> builder="hvm"
> >>>>>> memory=2048
> >>>>>> vcpus=2
> >>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>> disk=['/mnt/vm/disks/W7-
> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>> boot='dc'
> >>>>>> device_model_version="qemu-xen"
> >>>>>> viridian=1
> >>>>>> vnc=0
> >>>>>> keymap="it"
> >>>>>> on_crash="destroy"
> >>>>>> vga="qxl"
> >>>>>> spice=1
> >>>>>> spicehost='0.0.0.0'
> >>>>>> spiceport=6003
> >>>>>> spicedisable_ticketing=1
> >>>>>> spicevdagent=1
> >>>>>> spice_clipboard_sharing=0
> >>>>>> spiceusbredirection=4
> >>>>>> soundhw="hda"
> >>>>>> localtime=1
> >>>>>> usbversion=2
> >>>>> I tried also disabling qxl, vdagent, audio and usb:
> >>>>>> name='W7-02'
> >>>>>> builder="hvm"
> >>>>>> memory=2048
> >>>>>> vcpus=2
> >>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>> disk=['/mnt/vm/disks/W7-
> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>> boot='dc'
> >>>>>> device_model_version="qemu-xen"
> >>>>>> viridian=1
> >>>>>> vnc=0
> >>>>>> keymap="it"
> >>>>>> on_crash="destroy"
> >>>>>> vga="stdvga"
> >>>>>> spice=1
> >>>>>> spicehost='0.0.0.0'
> >>>>>> spiceport=6003
> >>>>>> spicedisable_ticketing=1
> >>>>>> spicevdagent=0
> >>>>>> spice_clipboard_sharing=0
> >>>>>> #spiceusbredirection=4
> >>>>>> #soundhw="hda"
> >>>>>> localtime=1
> >>>>>> #usbversion=2
> >>>>> But I had same problems.
> >>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl
> >>>>> patch
> >>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
> >>> 2.1.1
> >>>>> Now I'll try also with W8.
> >>>>>
> >>>>> If you need more details and/or tests tell me and I'll post them.
> >>>>>
> >>>> If you could enable xen_platform_log in QEMU then the QEMU log
> should
> >>> tell us what's going on. If you don't know how to do that then the
> >>> way I do it
> >>> is to create a file called 'events' under /tmp populated with the
> >>> single line:
> >>>> xen_platform_log
> >>>>
> >>>> and then I add:
> >>>>
> >>>> device_model_args=[ "-trace", "events=/tmp/events"]
> >>>>
> >>>> to my config. QEMU by default is built to send traces to stderr, so
> >>>> you
> >>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
> >>> name>.log.
> >>>> Did you try installing the drivers in a fresh VM? It's possible
> >>>> that there is still
> >>> some remnant of the GPLPV drivers around - uninstalling drivers on
> >>> Windows
> >>> is tricky.
> >>> Thanks for reply.
> >>> Tried with trace (log in attachment), with a fast look a saw a strange
> >>> mac different from the one setted in cfg.
> >>> I tried removing fixed mac in xl cfg but the network card problem
> >>> persist.
> >>> The old pv should be completly removed, I used also the bat for remove
> >>> the registry keys and file, not only the unstall from control panel.
> >>> I'll try also a clean install ASAP.
> >> Your PV storage looks fine, but the problem with your network is here:
> >>
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail3
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail2
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
> >> (c0000001)
> >> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> >> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
> >>
> >> What this means is that your frontend waited for a very very long
> >> time for your backend to go connected, and it failed to do so. It
> >> then  give up and you get the above cascade of error logging. I
> >> suspect the problem is a lack of the following netback fix:
> >>
> >> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> >> Author: Paul Durrant <Paul.Durrant@citrix.com>
> >> Date:   Tue Sep 17 17:46:08 2013 +0100
> >>
> >>      xen-netback: Don't destroy the netdev until the vif is shut down
> >>
> >>      Without this patch, if a frontend cycles through states Closing
> >>      and Closed (which Windows frontends need to do) then the netdev
> >>      will be destroyed and requires re-invocation of hotplug scripts
> >>      to restore state before the frontend can move to Connected. Thus
> >>      when udev is not in use the backend gets stuck in InitWait.
> >>
> >>      With this patch, the netdev is left alone whilst the backend is
> >>      still online and is only de-registered and freed just prior to
> >>      destroying the vif (which is also nicely symmetrical with the
> >>      netdev allocation and registration being done during probe) so
> >>      no re-invocation of hotplug scripts is required.
> >>
> >>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> >>      Cc: David Vrabel <david.vrabel@citrix.com>
> >>      Cc: Wei Liu <wei.liu2@citrix.com>
> >>      Cc: Ian Campbell <ian.campbell@citrix.com>
> >>      Acked-by: Wei Liu <wei.liu2@citrix.com>
> >>      Signed-off-by: David S. Miller <davem@davemloft.net>
> >
> > I found it applied upstream:
> > https://git.kernel.org/cgit/linux/kernel/git/next/linux-
> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
> >
> > But not in 3.2-stable branch, I tried to apply it on latest Wheezy
> > (debian 7) kernel source but there are too many difference and I was
> > unable to apply it manually.
> > Can someone give me advices please?
> >
> > Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing
> > and very reliable? I plain to use new versions also in production ASAP
> > (if I can solve theoccasional network crash on windows I have with
> > gplpv and hope to solve with these drivers), with the agent lite of
> > these drivers should finally solves also the post-restore problem of
> > time(and users unable to login) with the windows domUs in a domain.
> > Now I'll do a fast test with kernel for backports to solves if solves
> > the problem.
> >
> > Thanks for any reply and sorry for my bad english.
> 
> I tried the kernel from backports and solves the network and very long
> boot time problem.
> The xen agent lite problem still persist instead, on my latest test on
> windows 7 show xenlite service running but xl shutdown and update time
> on restore are still not working :(
> I not saw an agent error in windows events log but I saw this error:
> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
> With hwinfo I saw that is realtek emulated network card, is it correctly
> since pv driver is in use?
> 

Can you send the qemu log again? If you are still seeing the realtek device in the guest it suggests your PV frontend is still not installed correctly.

I think there's a compatibility problem. What happens if you simply xenstore_write "halt" into control/shutdown. (xl appears to write "poweroff" instead).

  Paul

> Thanks for any reply.
> 
> >
> >>
> >>> Another thing: I tried also xl shutdown and not works, xeniface is
> >>> installed (with dpinst) and liteagent is present windows folder after
> >>> it, I must do other thing to have it working?
> >> No, it should be working. Xeniface seems have started ok, so I don't
> >> know why that's not working.
> >>
> >>    Paul
> >


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 11:38:08 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 11:38:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX7NA-0005no-83; Thu, 25 Sep 2014 11:38:08 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX7N9-0005na-3M
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 11:38:07 +0000
Received: from [193.109.254.147:50693] by server-12.bemta-14.messagelabs.com
	id DD/C5-01461-E9EF3245; Thu, 25 Sep 2014 11:38:06 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1411645085!12890008!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14063 invoked from network); 25 Sep 2014 11:38:05 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 11:38:05 -0000
X-IronPort-AV: E=Sophos;i="5.04,596,1406592000"; d="scan'208";a="25286325"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQgAEvKYCAABi4gIAAIhhA
Date: Thu, 25 Sep 2014 11:38:03 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
In-Reply-To: <5423FC73.8060704@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 25 September 2014 12:29
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> > Il 24/09/2014 16:03, Paul Durrant ha scritto:
> >>> -----Original Message-----
> >>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>> Sent: 24 September 2014 14:52
> >>> To: Paul Durrant
> >>> Cc: win-pv-devel@lists.xenproject.org
> >>> Subject: Re: New windows pv drivers question
> >>>
> >>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >>>>> -----Original Message-----
> >>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>> Sent: 24 September 2014 14:07
> >>>>> To: Paul Durrant
> >>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>> Subject: Re: New windows pv drivers question
> >>>>>
> >>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>>>>> -----Original Message-----
> >>>>>> [snip]
> >>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 365,
> >>>>>>>>>> in <module
> >>>>>>>>>>         build_sln(driver, release, 'x64', debug[sys.argv[1]],
> >>>>>>>>>> vs)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 138,
> >>>>>>>>>> in build_s
> >>>>>>>>>> ln
> >>>>>>>>>>         msbuild(platform, configuration, 'Build', name +
> >>>>>>>>>> '.sln', '', vs)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 122,
> >>>>>>>>>> in msbuild
> >>>>>>>>>>
> >>>>>>>>>>         status = shell([bin], dir)
> >>>>>>>>>>       File
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>> 100,
> >>>>>>>>>> in shell
> >>>>>>>>>>         print(line.rstrip())
> >>>>>>>>>>       File "C:\Python34\lib\encodings\cp850.py", line 19, in
> >>>>>>>>>> encode
> >>>>>>>>>>         return
> >>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
> >>> '\u2026'
> >>>>> in
> >>>>>>>>>> position
> >>>>>>>>>> 28: character maps to <undefined>
> >>>>>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>>>>> Thanks for any reply.
> >>>>>>>> Not seen anything like that before. I can only assume it's to
> >>>>>>>> do with
> >>>>>>> language support. It seems like msbuild is emitting characters
> >>>>>>> that the
> >>>>> shell is
> >>>>>>> not handling correctly. I suspect you'll be ok if you use an
> >>>>>>> English
> >>> character
> >>>>>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>>>>       Paul
> >>>>>>>>
> >>>>>>> I installed english language pack and solves the problem.
> >>>>>> Ok. So we know what the problem was. We need to figure out a
> >>>>>> solution
> >>> to
> >>>>> that.
> >>>>>
> >>>>> Thanks, for now I built with english windows.
> >>>>>
> >>>>>>> After gave me other error about no sufficent permission on one
> >>>>>>> exe of
> >>>>>>> WDK, I tried to execute as administrator and did max permissions
> to
> >>>>>>> everyone on the file but not, I solved also that adding nosdv.
> >>>>>> I've seen problems running sdv where some of the processes it
> >>>>>> kicks off
> >>>>> seem to conflict on one of the log files, so it bails with a lack
> >>>>> of write
> >>>>> permission. Is that the sort of thing you saw?
> >>>>>
> >>>>> Probably, you need that I retry and post the exactly output of error?
> >>>>>
> >>>>>>> After I had near the end another error where I not found a
> >>> workaround:
> >>>>>>>> Done Building Project
> >>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>>>>> n" (Build target(s)).
> >>>>>>>>
> >>>>>>>> Build succeeded.
> >>>>>>>>        0 Warning(s)
> >>>>>>>>        0 Error(s)
> >>>>>>>>
> >>>>>>>> Time Elapsed 00:00:02.37
> >>>>>>>>
> >>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
> >>> goto
> >>>>>>> error
> >>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>>>>> vs2013\Windows7Release\Win32
> >>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>> '/v',
> >>>>>>>> '8.0.0.12'
> >>>>>>>> ]
> >>>>>>>> Finding ID...  0000000015
> >>>>>>>>
> >>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>> vs2013\Windows7Release\x64
> >>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>> '/v',
> >>>>>>>> '8.0.0.12'
> >>>>>>>> ]
> >>>>>>>> Finding ID...  0000000016
> >>>>>>>>
> >>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>> Traceback (most recent call last):
> >>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>> line 375,
> >>>>>>>> in <module
> >>>>>>>>        archive(driver + '\source.tgz', manifest().splitlines(),
> >>>>>>>> tgz=True)
> >>>>>>>>      File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>> line 289,
> >>>>>>>> in manifes
> >>>>>>>> t
> >>>>>>>>        sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>>>>      File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>>>>        restore_signals, start_new_session)
> >>>>>>>>      File "C:\Python34\lib\subprocess.py", line 1111, in
> >>>>>>>> _execute_child
> >>>>>>>>        startupinfo)
> >>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> >>> specified
> >>>>>> That looks like git is not on your path. The build script adds an
> >>>>>> archive of
> >>> the
> >>>>> source to the output. I should probably just remove that from the
> >>>>> script.
> >>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are
> >>>>>>> the
> >>>>>>> drivers ready, is correct and can be tried?
> >>>>>>>
> >>>>>> Yes. They should be good to go.
> >>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >>>>> On boot now take very long time (much more time that with other
> >>> windows
> >>>>> pv or without any) until arrive at login screen, network card is not
> >>>>> visible (show unable to boot both emulated and pv network card).
> >>>>> Testsigning is enabled and the other pv drivers was removed and
> >>> rebooted
> >>>>> before install this new.
> >>>>> On same dom0 and domU with other pv drivers (of James Harper) I
> had
> >>> only
> >>>>> these 2 problems:
> >>>>> - occasional network disappaer after some hours or days (probable
> >>> xennet
> >>>>> crash)
> >>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>>>>
> >>>>> This is the domU's cfg:
> >>>>>> name='W7-02'
> >>>>>> builder="hvm"
> >>>>>> memory=2048
> >>>>>> vcpus=2
> >>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>> disk=['/mnt/vm/disks/W7-
> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>> boot='dc'
> >>>>>> device_model_version="qemu-xen"
> >>>>>> viridian=1
> >>>>>> vnc=0
> >>>>>> keymap="it"
> >>>>>> on_crash="destroy"
> >>>>>> vga="qxl"
> >>>>>> spice=1
> >>>>>> spicehost='0.0.0.0'
> >>>>>> spiceport=6003
> >>>>>> spicedisable_ticketing=1
> >>>>>> spicevdagent=1
> >>>>>> spice_clipboard_sharing=0
> >>>>>> spiceusbredirection=4
> >>>>>> soundhw="hda"
> >>>>>> localtime=1
> >>>>>> usbversion=2
> >>>>> I tried also disabling qxl, vdagent, audio and usb:
> >>>>>> name='W7-02'
> >>>>>> builder="hvm"
> >>>>>> memory=2048
> >>>>>> vcpus=2
> >>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>> disk=['/mnt/vm/disks/W7-
> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>> boot='dc'
> >>>>>> device_model_version="qemu-xen"
> >>>>>> viridian=1
> >>>>>> vnc=0
> >>>>>> keymap="it"
> >>>>>> on_crash="destroy"
> >>>>>> vga="stdvga"
> >>>>>> spice=1
> >>>>>> spicehost='0.0.0.0'
> >>>>>> spiceport=6003
> >>>>>> spicedisable_ticketing=1
> >>>>>> spicevdagent=0
> >>>>>> spice_clipboard_sharing=0
> >>>>>> #spiceusbredirection=4
> >>>>>> #soundhw="hda"
> >>>>>> localtime=1
> >>>>>> #usbversion=2
> >>>>> But I had same problems.
> >>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl
> >>>>> patch
> >>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
> >>> 2.1.1
> >>>>> Now I'll try also with W8.
> >>>>>
> >>>>> If you need more details and/or tests tell me and I'll post them.
> >>>>>
> >>>> If you could enable xen_platform_log in QEMU then the QEMU log
> should
> >>> tell us what's going on. If you don't know how to do that then the
> >>> way I do it
> >>> is to create a file called 'events' under /tmp populated with the
> >>> single line:
> >>>> xen_platform_log
> >>>>
> >>>> and then I add:
> >>>>
> >>>> device_model_args=[ "-trace", "events=/tmp/events"]
> >>>>
> >>>> to my config. QEMU by default is built to send traces to stderr, so
> >>>> you
> >>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
> >>> name>.log.
> >>>> Did you try installing the drivers in a fresh VM? It's possible
> >>>> that there is still
> >>> some remnant of the GPLPV drivers around - uninstalling drivers on
> >>> Windows
> >>> is tricky.
> >>> Thanks for reply.
> >>> Tried with trace (log in attachment), with a fast look a saw a strange
> >>> mac different from the one setted in cfg.
> >>> I tried removing fixed mac in xl cfg but the network card problem
> >>> persist.
> >>> The old pv should be completly removed, I used also the bat for remove
> >>> the registry keys and file, not only the unstall from control panel.
> >>> I'll try also a clean install ASAP.
> >> Your PV storage looks fine, but the problem with your network is here:
> >>
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail3
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail2
> >> xen_platform_log xen platform:
> XENVIF|__FrontendWaitForStateChange:
> >> fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> >> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
> >> (c0000001)
> >> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> >> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> >> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
> >>
> >> What this means is that your frontend waited for a very very long
> >> time for your backend to go connected, and it failed to do so. It
> >> then  give up and you get the above cascade of error logging. I
> >> suspect the problem is a lack of the following netback fix:
> >>
> >> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> >> Author: Paul Durrant <Paul.Durrant@citrix.com>
> >> Date:   Tue Sep 17 17:46:08 2013 +0100
> >>
> >>      xen-netback: Don't destroy the netdev until the vif is shut down
> >>
> >>      Without this patch, if a frontend cycles through states Closing
> >>      and Closed (which Windows frontends need to do) then the netdev
> >>      will be destroyed and requires re-invocation of hotplug scripts
> >>      to restore state before the frontend can move to Connected. Thus
> >>      when udev is not in use the backend gets stuck in InitWait.
> >>
> >>      With this patch, the netdev is left alone whilst the backend is
> >>      still online and is only de-registered and freed just prior to
> >>      destroying the vif (which is also nicely symmetrical with the
> >>      netdev allocation and registration being done during probe) so
> >>      no re-invocation of hotplug scripts is required.
> >>
> >>      Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> >>      Cc: David Vrabel <david.vrabel@citrix.com>
> >>      Cc: Wei Liu <wei.liu2@citrix.com>
> >>      Cc: Ian Campbell <ian.campbell@citrix.com>
> >>      Acked-by: Wei Liu <wei.liu2@citrix.com>
> >>      Signed-off-by: David S. Miller <davem@davemloft.net>
> >
> > I found it applied upstream:
> > https://git.kernel.org/cgit/linux/kernel/git/next/linux-
> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
> >
> > But not in 3.2-stable branch, I tried to apply it on latest Wheezy
> > (debian 7) kernel source but there are too many difference and I was
> > unable to apply it manually.
> > Can someone give me advices please?
> >
> > Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing
> > and very reliable? I plain to use new versions also in production ASAP
> > (if I can solve theoccasional network crash on windows I have with
> > gplpv and hope to solve with these drivers), with the agent lite of
> > these drivers should finally solves also the post-restore problem of
> > time(and users unable to login) with the windows domUs in a domain.
> > Now I'll do a fast test with kernel for backports to solves if solves
> > the problem.
> >
> > Thanks for any reply and sorry for my bad english.
> 
> I tried the kernel from backports and solves the network and very long
> boot time problem.
> The xen agent lite problem still persist instead, on my latest test on
> windows 7 show xenlite service running but xl shutdown and update time
> on restore are still not working :(
> I not saw an agent error in windows events log but I saw this error:
> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
> With hwinfo I saw that is realtek emulated network card, is it correctly
> since pv driver is in use?
> 

Can you send the qemu log again? If you are still seeing the realtek device in the guest it suggests your PV frontend is still not installed correctly.

I think there's a compatibility problem. What happens if you simply xenstore_write "halt" into control/shutdown. (xl appears to write "poweroff" instead).

  Paul

> Thanks for any reply.
> 
> >
> >>
> >>> Another thing: I tried also xl shutdown and not works, xeniface is
> >>> installed (with dpinst) and liteagent is present windows folder after
> >>> it, I must do other thing to have it working?
> >> No, it should be working. Xeniface seems have started ok, so I don't
> >> know why that's not working.
> >>
> >>    Paul
> >


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 12:49:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 12:49:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX8UA-0003G3-KT; Thu, 25 Sep 2014 12:49:26 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX8U7-0003Fi-Q9
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 12:49:24 +0000
Received: from [85.158.137.68:22144] by server-4.bemta-3.messagelabs.com id
	7F/06-18709-25F04245; Thu, 25 Sep 2014 12:49:22 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-9.tower-31.messagelabs.com!1411649360!8278758!1
X-Originating-IP: [74.125.82.42]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15885 invoked from network); 25 Sep 2014 12:49:20 -0000
Received: from mail-wg0-f42.google.com (HELO mail-wg0-f42.google.com)
	(74.125.82.42)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 12:49:20 -0000
Received: by mail-wg0-f42.google.com with SMTP id a1so7301314wgh.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 05:49:20 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type;
	bh=u+dCqT1tv6fNrj1VCa3JDVvgqCRiU2v4CgseCe3W3lw=;
	b=YQ8u/X7tWhw7Fa4qkDbttt8Leyj4cTSlqYurYM4OrpJskYyujkNPT80LNQCMikjjnx
	/0qDKMwyHGwOX+aEahyxO0l9Y1hnNCPjr5tdTTqi8dFKxTnCCGW8qB/+fXD8ovDk5m2h
	j7fz5UoHPDESdaqRnC15gDhJPMVPJ8YxbWTxNGfoxSj71iP7RRK27xZ94jObjP/u4ItS
	gFJl4s3JMLHJM8MT3e7ambOYMy06PYJSafprzY3qElW+ZX1tfImX2Cat8K6pgdiJ4o3h
	pnPAqPGF/i2ZZqVvny0d8N8HonKBtBbJ5BUUV0fwSxjFkVq/SdycXLrlY3IsQ96XfTjr
	UDmQ==
X-Gm-Message-State: ALoCoQkh2pYBpVE2nMOHEEq/LX/NXtZ98MvtagcOJfWkZ4CNx9SSO4kYzLH/+2SYVFWN89AWvdbn
X-Received: by 10.180.99.163 with SMTP id er3mr34827695wib.23.1411649359378;
	Thu, 25 Sep 2014 05:49:19 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ia3sm2640377wjb.12.2014.09.25.05.49.17
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 05:49:18 -0700 (PDT)
Message-ID: <54240F54.4050301@m2r.biz>
Date: Thu, 25 Sep 2014 14:49:24 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------050409010404020805000603"
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------050409010404020805000603
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Il 25/09/2014 13:38, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 25 September 2014 12:29
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
>> Subject: Re: New windows pv drivers question
>>
>> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
>>> Il 24/09/2014 16:03, Paul Durrant ha scritto:
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 24 September 2014 14:52
>>>>> To: Paul Durrant
>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: New windows pv drivers question
>>>>>
>>>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>>>>> -----Original Message-----
>>>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>>>> Sent: 24 September 2014 14:07
>>>>>>> To: Paul Durrant
>>>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>>>> Subject: Re: New windows pv drivers question
>>>>>>>
>>>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>>>>> -----Original Message-----
>>>>>>>> [snip]
>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 365,
>>>>>>>>>>>> in <module
>>>>>>>>>>>>          build_sln(driver, release, 'x64', debug[sys.argv[1]],
>>>>>>>>>>>> vs)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 138,
>>>>>>>>>>>> in build_s
>>>>>>>>>>>> ln
>>>>>>>>>>>>          msbuild(platform, configuration, 'Build', name +
>>>>>>>>>>>> '.sln', '', vs)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 122,
>>>>>>>>>>>> in msbuild
>>>>>>>>>>>>
>>>>>>>>>>>>          status = shell([bin], dir)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 100,
>>>>>>>>>>>> in shell
>>>>>>>>>>>>          print(line.rstrip())
>>>>>>>>>>>>        File "C:\Python34\lib\encodings\cp850.py", line 19, in
>>>>>>>>>>>> encode
>>>>>>>>>>>>          return
>>>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>>>>> '\u2026'
>>>>>>> in
>>>>>>>>>>>> position
>>>>>>>>>>>> 28: character maps to <undefined>
>>>>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>>>>> Thanks for any reply.
>>>>>>>>>> Not seen anything like that before. I can only assume it's to
>>>>>>>>>> do with
>>>>>>>>> language support. It seems like msbuild is emitting characters
>>>>>>>>> that the
>>>>>>> shell is
>>>>>>>>> not handling correctly. I suspect you'll be ok if you use an
>>>>>>>>> English
>>>>> character
>>>>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>>>>        Paul
>>>>>>>>>>
>>>>>>>>> I installed english language pack and solves the problem.
>>>>>>>> Ok. So we know what the problem was. We need to figure out a
>>>>>>>> solution
>>>>> to
>>>>>>> that.
>>>>>>>
>>>>>>> Thanks, for now I built with english windows.
>>>>>>>
>>>>>>>>> After gave me other error about no sufficent permission on one
>>>>>>>>> exe of
>>>>>>>>> WDK, I tried to execute as administrator and did max permissions
>> to
>>>>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>>>>> I've seen problems running sdv where some of the processes it
>>>>>>>> kicks off
>>>>>>> seem to conflict on one of the log files, so it bails with a lack
>>>>>>> of write
>>>>>>> permission. Is that the sort of thing you saw?
>>>>>>>
>>>>>>> Probably, you need that I retry and post the exactly output of error?
>>>>>>>
>>>>>>>>> After I had near the end another error where I not found a
>>>>> workaround:
>>>>>>>>>> Done Building Project
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>>>>> n" (Build target(s)).
>>>>>>>>>>
>>>>>>>>>> Build succeeded.
>>>>>>>>>>         0 Warning(s)
>>>>>>>>>>         0 Error(s)
>>>>>>>>>>
>>>>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>>>>
>>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>>>>> goto
>>>>>>>>> error
>>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>>>>> vs2013\Windows7Release\Win32
>>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
>>>>>>>>>> '/v',
>>>>>>>>>> '8.0.0.12'
>>>>>>>>>> ]
>>>>>>>>>> Finding ID...  0000000015
>>>>>>>>>>
>>>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>>>> vs2013\Windows7Release\x64
>>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
>>>>>>>>>> '/v',
>>>>>>>>>> '8.0.0.12'
>>>>>>>>>> ]
>>>>>>>>>> Finding ID...  0000000016
>>>>>>>>>>
>>>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
>>>>>>>>>> line 375,
>>>>>>>>>> in <module
>>>>>>>>>>         archive(driver + '\source.tgz', manifest().splitlines(),
>>>>>>>>>> tgz=True)
>>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
>>>>>>>>>> line 289,
>>>>>>>>>> in manifes
>>>>>>>>>> t
>>>>>>>>>>         sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>>>>         restore_signals, start_new_session)
>>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 1111, in
>>>>>>>>>> _execute_child
>>>>>>>>>>         startupinfo)
>>>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>>>>> specified
>>>>>>>> That looks like git is not on your path. The build script adds an
>>>>>>>> archive of
>>>>> the
>>>>>>> source to the output. I should probably just remove that from the
>>>>>>> script.
>>>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are
>>>>>>>>> the
>>>>>>>>> drivers ready, is correct and can be tried?
>>>>>>>>>
>>>>>>>> Yes. They should be good to go.
>>>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>>>>> On boot now take very long time (much more time that with other
>>>>> windows
>>>>>>> pv or without any) until arrive at login screen, network card is not
>>>>>>> visible (show unable to boot both emulated and pv network card).
>>>>>>> Testsigning is enabled and the other pv drivers was removed and
>>>>> rebooted
>>>>>>> before install this new.
>>>>>>> On same dom0 and domU with other pv drivers (of James Harper) I
>> had
>>>>> only
>>>>>>> these 2 problems:
>>>>>>> - occasional network disappaer after some hours or days (probable
>>>>> xennet
>>>>>>> crash)
>>>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>>>>
>>>>>>> This is the domU's cfg:
>>>>>>>> name='W7-02'
>>>>>>>> builder="hvm"
>>>>>>>> memory=2048
>>>>>>>> vcpus=2
>>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>>>> disk=['/mnt/vm/disks/W7-
>> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>>>> boot='dc'
>>>>>>>> device_model_version="qemu-xen"
>>>>>>>> viridian=1
>>>>>>>> vnc=0
>>>>>>>> keymap="it"
>>>>>>>> on_crash="destroy"
>>>>>>>> vga="qxl"
>>>>>>>> spice=1
>>>>>>>> spicehost='0.0.0.0'
>>>>>>>> spiceport=6003
>>>>>>>> spicedisable_ticketing=1
>>>>>>>> spicevdagent=1
>>>>>>>> spice_clipboard_sharing=0
>>>>>>>> spiceusbredirection=4
>>>>>>>> soundhw="hda"
>>>>>>>> localtime=1
>>>>>>>> usbversion=2
>>>>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>>>>> name='W7-02'
>>>>>>>> builder="hvm"
>>>>>>>> memory=2048
>>>>>>>> vcpus=2
>>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>>>> disk=['/mnt/vm/disks/W7-
>> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>>>> boot='dc'
>>>>>>>> device_model_version="qemu-xen"
>>>>>>>> viridian=1
>>>>>>>> vnc=0
>>>>>>>> keymap="it"
>>>>>>>> on_crash="destroy"
>>>>>>>> vga="stdvga"
>>>>>>>> spice=1
>>>>>>>> spicehost='0.0.0.0'
>>>>>>>> spiceport=6003
>>>>>>>> spicedisable_ticketing=1
>>>>>>>> spicevdagent=0
>>>>>>>> spice_clipboard_sharing=0
>>>>>>>> #spiceusbredirection=4
>>>>>>>> #soundhw="hda"
>>>>>>>> localtime=1
>>>>>>>> #usbversion=2
>>>>>>> But I had same problems.
>>>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl
>>>>>>> patch
>>>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>>>>> 2.1.1
>>>>>>> Now I'll try also with W8.
>>>>>>>
>>>>>>> If you need more details and/or tests tell me and I'll post them.
>>>>>>>
>>>>>> If you could enable xen_platform_log in QEMU then the QEMU log
>> should
>>>>> tell us what's going on. If you don't know how to do that then the
>>>>> way I do it
>>>>> is to create a file called 'events' under /tmp populated with the
>>>>> single line:
>>>>>> xen_platform_log
>>>>>>
>>>>>> and then I add:
>>>>>>
>>>>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>>>>
>>>>>> to my config. QEMU by default is built to send traces to stderr, so
>>>>>> you
>>>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
>>>>> name>.log.
>>>>>> Did you try installing the drivers in a fresh VM? It's possible
>>>>>> that there is still
>>>>> some remnant of the GPLPV drivers around - uninstalling drivers on
>>>>> Windows
>>>>> is tricky.
>>>>> Thanks for reply.
>>>>> Tried with trace (log in attachment), with a fast look a saw a strange
>>>>> mac different from the one setted in cfg.
>>>>> I tried removing fixed mac in xl cfg but the network card problem
>>>>> persist.
>>>>> The old pv should be completly removed, I used also the bat for remove
>>>>> the registry keys and file, not only the unstall from control panel.
>>>>> I'll try also a clean install ASAP.
>>>> Your PV storage looks fine, but the problem with your network is here:
>>>>
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail3
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail2
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
>>>> (c0000001)
>>>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
>>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>>>>
>>>> What this means is that your frontend waited for a very very long
>>>> time for your backend to go connected, and it failed to do so. It
>>>> then  give up and you get the above cascade of error logging. I
>>>> suspect the problem is a lack of the following netback fix:
>>>>
>>>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
>>>> Author: Paul Durrant <Paul.Durrant@citrix.com>
>>>> Date:   Tue Sep 17 17:46:08 2013 +0100
>>>>
>>>>       xen-netback: Don't destroy the netdev until the vif is shut down
>>>>
>>>>       Without this patch, if a frontend cycles through states Closing
>>>>       and Closed (which Windows frontends need to do) then the netdev
>>>>       will be destroyed and requires re-invocation of hotplug scripts
>>>>       to restore state before the frontend can move to Connected. Thus
>>>>       when udev is not in use the backend gets stuck in InitWait.
>>>>
>>>>       With this patch, the netdev is left alone whilst the backend is
>>>>       still online and is only de-registered and freed just prior to
>>>>       destroying the vif (which is also nicely symmetrical with the
>>>>       netdev allocation and registration being done during probe) so
>>>>       no re-invocation of hotplug scripts is required.
>>>>
>>>>       Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>>>>       Cc: David Vrabel <david.vrabel@citrix.com>
>>>>       Cc: Wei Liu <wei.liu2@citrix.com>
>>>>       Cc: Ian Campbell <ian.campbell@citrix.com>
>>>>       Acked-by: Wei Liu <wei.liu2@citrix.com>
>>>>       Signed-off-by: David S. Miller <davem@davemloft.net>
>>> I found it applied upstream:
>>> https://git.kernel.org/cgit/linux/kernel/git/next/linux-
>> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
>>> But not in 3.2-stable branch, I tried to apply it on latest Wheezy
>>> (debian 7) kernel source but there are too many difference and I was
>>> unable to apply it manually.
>>> Can someone give me advices please?
>>>
>>> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing
>>> and very reliable? I plain to use new versions also in production ASAP
>>> (if I can solve theoccasional network crash on windows I have with
>>> gplpv and hope to solve with these drivers), with the agent lite of
>>> these drivers should finally solves also the post-restore problem of
>>> time(and users unable to login) with the windows domUs in a domain.
>>> Now I'll do a fast test with kernel for backports to solves if solves
>>> the problem.
>>>
>>> Thanks for any reply and sorry for my bad english.
>> I tried the kernel from backports and solves the network and very long
>> boot time problem.
>> The xen agent lite problem still persist instead, on my latest test on
>> windows 7 show xenlite service running but xl shutdown and update time
>> on restore are still not working :(
>> I not saw an agent error in windows events log but I saw this error:
>> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
>> With hwinfo I saw that is realtek emulated network card, is it correctly
>> since pv driver is in use?
>>
> Can you send the qemu log again? If you are still seeing the realtek device in the guest it suggests your PV frontend is still not installed correctly.

Log in attachment.
The windows device management still show realtek even if is not used 
(show error 12 - resources conflict on it), xen pv network device 
instead now is showed ok and is working.

>
> I think there's a compatibility problem. What happens if you simply xenstore_write "halt" into control/shutdown. (xl appears to write "poweroff" instead).

Here I not understand if is something I must try and post the result or 
you already found the exacly problem.

Thanks for any reply.

--------------050409010404020805000603
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7-02.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7-02.log"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.482000 ms, bitrate 100043964 bps (95.409359 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN|HypercallInitialize: XEN 4.5
xen_platform_log xen platform: XEN|HypercallInitialize: INTERFACE 0x00040300
xen_platform_log xen platform: XEN|HypercallInitialize: HypercallPfn[0]: 00000000000032DF
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8001850390 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80017F7AC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800176EAC0 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F35D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F45D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F55D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F65D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F75D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F95D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FA5D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FB5D0 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FC5D0 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FD5D0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA8002131350 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80021335F0 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80021332D0 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002151D40 (IFACE 00000001)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002160040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002164040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800217E040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.1.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/qdisk/7/768)
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT 
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000009 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/0
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA80021AEC70 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA80022C3060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA80022C3060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002638930 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E75B0 FFFFFA800263A6E0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E6630 FFFFFA800263A6F0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E708C FFFFFA800263A900
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA800263A990 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:A2:5F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {9f0e41ff-20f0-530d-9847-6eb5708b09bc}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002F81060 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
main_channel_handle_parsed: agent start
main_channel_handle_parsed: agent start
red_client_destroy: destroy client 0x7f4325577020 with #channels=10
red_dispatcher_disconnect_cursor_peer: 
red_channel_client_disconnect: rcc=0x7f432581b450 (channel=0x7f43254ad0a0 type=4 id=0)
red_channel_client_disconnect: rcc=0x7f4325752b40 (channel=0x7f43253c34d0 type=3 id=0)
red_channel_client_disconnect_dummy: rcc=0x7f43255114a0 (channel=0x7f43254c8370 type=5 id=0)
snd_channel_put: SndChannel=0x7f4325811ae0 freed
red_channel_client_disconnect_dummy: rcc=0x7f43253fab20 (channel=0x7f4325495920 type=6 id=0)
snd_channel_put: SndChannel=0x7f43256b6f30 freed
red_dispatcher_disconnect_display_peer: 
red_channel_client_disconnect: rcc=0x7f43256eef50 (channel=0x7f4325404b80 type=2 id=0)
red_channel_client_disconnect: rcc=0x7f432550d260 (channel=0x7f432547bcb0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7f43253e48b0 (channel=0x7f4325503cc0 type=9 id=3)
red_channel_client_disconnect: rcc=0x7f43255e1fa0 (channel=0x7f4325400e70 type=9 id=2)
red_channel_client_disconnect: rcc=0x7f43256526b0 (channel=0x7f43253ffed0 type=9 id=1)
red_channel_client_disconnect: rcc=0x7f432557b1b0 (channel=0x7f43253b7a40 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7f432557b1b0
main_channel_link: add main channel client
main_channel_handle_parsed: agent start
main_channel_handle_parsed: net test: latency 5.748000 ms, bitrate 1950476190 bps (1860.119047 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
main_channel_handle_parsed: agent start
red_channel_client_disconnect: rcc=0x7f43256076a0 (channel=0x7f43253b7a40 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7f43256076a0
red_client_destroy: destroy client 0x7f432575ac90 with #channels=10
red_dispatcher_disconnect_cursor_peer: 
red_channel_client_disconnect: rcc=0x7f4308006610 (channel=0x7f43254ad0a0 type=4 id=0)
red_channel_client_disconnect: rcc=0x7f4325773050 (channel=0x7f43253c34d0 type=3 id=0)
red_dispatcher_disconnect_display_peer: 
red_channel_client_disconnect: rcc=0x7f43080443e0 (channel=0x7f4325404b80 type=2 id=0)
red_channel_client_disconnect_dummy: rcc=0x7f43253e4800 (channel=0x7f4325495920 type=6 id=0)
snd_channel_put: SndChannel=0x7f4325877460 freed
red_channel_client_disconnect: rcc=0x7f4325691250 (channel=0x7f432547bcb0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7f4325900de0 (channel=0x7f43253ffed0 type=9 id=1)
red_channel_client_disconnect_dummy: rcc=0x7f43257c0b20 (channel=0x7f43254c8370 type=5 id=0)
snd_channel_put: SndChannel=0x7f43253f2b10 freed
red_channel_client_disconnect: rcc=0x7f432557b1b0 (channel=0x7f4325400e70 type=9 id=2)
red_channel_client_disconnect: rcc=0x7f43255e1fa0 (channel=0x7f4325503cc0 type=9 id=3)
main_channel_link: add main channel client
main_channel_handle_parsed: agent start
main_channel_handle_parsed: net test: latency 2.113000 ms, bitrate 103018108 bps (98.245724 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 

--------------050409010404020805000603
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------050409010404020805000603--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 12:49:26 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 12:49:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX8UA-0003G3-KT; Thu, 25 Sep 2014 12:49:26 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XX8U7-0003Fi-Q9
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 12:49:24 +0000
Received: from [85.158.137.68:22144] by server-4.bemta-3.messagelabs.com id
	7F/06-18709-25F04245; Thu, 25 Sep 2014 12:49:22 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-9.tower-31.messagelabs.com!1411649360!8278758!1
X-Originating-IP: [74.125.82.42]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15885 invoked from network); 25 Sep 2014 12:49:20 -0000
Received: from mail-wg0-f42.google.com (HELO mail-wg0-f42.google.com)
	(74.125.82.42)
	by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 12:49:20 -0000
Received: by mail-wg0-f42.google.com with SMTP id a1so7301314wgh.1
	for <win-pv-devel@lists.xenproject.org>;
	Thu, 25 Sep 2014 05:49:20 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type;
	bh=u+dCqT1tv6fNrj1VCa3JDVvgqCRiU2v4CgseCe3W3lw=;
	b=YQ8u/X7tWhw7Fa4qkDbttt8Leyj4cTSlqYurYM4OrpJskYyujkNPT80LNQCMikjjnx
	/0qDKMwyHGwOX+aEahyxO0l9Y1hnNCPjr5tdTTqi8dFKxTnCCGW8qB/+fXD8ovDk5m2h
	j7fz5UoHPDESdaqRnC15gDhJPMVPJ8YxbWTxNGfoxSj71iP7RRK27xZ94jObjP/u4ItS
	gFJl4s3JMLHJM8MT3e7ambOYMy06PYJSafprzY3qElW+ZX1tfImX2Cat8K6pgdiJ4o3h
	pnPAqPGF/i2ZZqVvny0d8N8HonKBtBbJ5BUUV0fwSxjFkVq/SdycXLrlY3IsQ96XfTjr
	UDmQ==
X-Gm-Message-State: ALoCoQkh2pYBpVE2nMOHEEq/LX/NXtZ98MvtagcOJfWkZ4CNx9SSO4kYzLH/+2SYVFWN89AWvdbn
X-Received: by 10.180.99.163 with SMTP id er3mr34827695wib.23.1411649359378;
	Thu, 25 Sep 2014 05:49:19 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id ia3sm2640377wjb.12.2014.09.25.05.49.17
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 05:49:18 -0700 (PDT)
Message-ID: <54240F54.4050301@m2r.biz>
Date: Thu, 25 Sep 2014 14:49:24 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
Content-Type: multipart/mixed; boundary="------------050409010404020805000603"
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

This is a multi-part message in MIME format.
--------------050409010404020805000603
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Il 25/09/2014 13:38, Paul Durrant ha scritto:
>> -----Original Message-----
>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>> Sent: 25 September 2014 12:29
>> To: Paul Durrant
>> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
>> Subject: Re: New windows pv drivers question
>>
>> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
>>> Il 24/09/2014 16:03, Paul Durrant ha scritto:
>>>>> -----Original Message-----
>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>> Sent: 24 September 2014 14:52
>>>>> To: Paul Durrant
>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>> Subject: Re: New windows pv drivers question
>>>>>
>>>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
>>>>>>> -----Original Message-----
>>>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
>>>>>>> Sent: 24 September 2014 14:07
>>>>>>> To: Paul Durrant
>>>>>>> Cc: win-pv-devel@lists.xenproject.org
>>>>>>> Subject: Re: New windows pv drivers question
>>>>>>>
>>>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
>>>>>>>>> -----Original Message-----
>>>>>>>> [snip]
>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 365,
>>>>>>>>>>>> in <module
>>>>>>>>>>>>          build_sln(driver, release, 'x64', debug[sys.argv[1]],
>>>>>>>>>>>> vs)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 138,
>>>>>>>>>>>> in build_s
>>>>>>>>>>>> ln
>>>>>>>>>>>>          msbuild(platform, configuration, 'Build', name +
>>>>>>>>>>>> '.sln', '', vs)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 122,
>>>>>>>>>>>> in msbuild
>>>>>>>>>>>>
>>>>>>>>>>>>          status = shell([bin], dir)
>>>>>>>>>>>>        File
>>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
>>>>> 100,
>>>>>>>>>>>> in shell
>>>>>>>>>>>>          print(line.rstrip())
>>>>>>>>>>>>        File "C:\Python34\lib\encodings\cp850.py", line 19, in
>>>>>>>>>>>> encode
>>>>>>>>>>>>          return
>>>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode character
>>>>> '\u2026'
>>>>>>> in
>>>>>>>>>>>> position
>>>>>>>>>>>> 28: character maps to <undefined>
>>>>>>>>>>> I did something wrong or there is a bug or unexpected case?
>>>>>>>>>>> Thanks for any reply.
>>>>>>>>>> Not seen anything like that before. I can only assume it's to
>>>>>>>>>> do with
>>>>>>>>> language support. It seems like msbuild is emitting characters
>>>>>>>>> that the
>>>>>>> shell is
>>>>>>>>> not handling correctly. I suspect you'll be ok if you use an
>>>>>>>>> English
>>>>> character
>>>>>>>>> set but I'll try to figure out what the script is/isn't doing.
>>>>>>>>>>        Paul
>>>>>>>>>>
>>>>>>>>> I installed english language pack and solves the problem.
>>>>>>>> Ok. So we know what the problem was. We need to figure out a
>>>>>>>> solution
>>>>> to
>>>>>>> that.
>>>>>>>
>>>>>>> Thanks, for now I built with english windows.
>>>>>>>
>>>>>>>>> After gave me other error about no sufficent permission on one
>>>>>>>>> exe of
>>>>>>>>> WDK, I tried to execute as administrator and did max permissions
>> to
>>>>>>>>> everyone on the file but not, I solved also that adding nosdv.
>>>>>>>> I've seen problems running sdv where some of the processes it
>>>>>>>> kicks off
>>>>>>> seem to conflict on one of the log files, so it bails with a lack
>>>>>>> of write
>>>>>>> permission. Is that the sort of thing you saw?
>>>>>>>
>>>>>>> Probably, you need that I retry and post the exactly output of error?
>>>>>>>
>>>>>>>>> After I had near the end another error where I not found a
>>>>> workaround:
>>>>>>>>>> Done Building Project
>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
>>>>>>>>>> n" (Build target(s)).
>>>>>>>>>>
>>>>>>>>>> Build succeeded.
>>>>>>>>>>         0 Warning(s)
>>>>>>>>>>         0 Error(s)
>>>>>>>>>>
>>>>>>>>>> Time Elapsed 00:00:02.37
>>>>>>>>>>
>>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if errorlevel 1
>>>>> goto
>>>>>>>>> error
>>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
>>>>>>>>>> vs2013\Windows7Release\Win32
>>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
>>>>>>>>>> '/v',
>>>>>>>>>> '8.0.0.12'
>>>>>>>>>> ]
>>>>>>>>>> Finding ID...  0000000015
>>>>>>>>>>
>>>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>>>> vs2013\Windows7Release\x64
>>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
>>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
>>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
>>>>>>>>>> '/v',
>>>>>>>>>> '8.0.0.12'
>>>>>>>>>> ]
>>>>>>>>>> Finding ID...  0000000016
>>>>>>>>>>
>>>>>>>>>> SYMSTORE: Number of files stored = 3
>>>>>>>>>> SYMSTORE: Number of errors = 0
>>>>>>>>>> SYMSTORE: Number of files ignored = 0
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
>>>>>>>>>> line 375,
>>>>>>>>>> in <module
>>>>>>>>>>         archive(driver + '\source.tgz', manifest().splitlines(),
>>>>>>>>>> tgz=True)
>>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
>>>>>>>>>> line 289,
>>>>>>>>>> in manifes
>>>>>>>>>> t
>>>>>>>>>>         sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
>>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 858, in __init__
>>>>>>>>>>         restore_signals, start_new_session)
>>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 1111, in
>>>>>>>>>> _execute_child
>>>>>>>>>>         startupinfo)
>>>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
>>>>> specified
>>>>>>>> That looks like git is not on your path. The build script adds an
>>>>>>>> archive of
>>>>> the
>>>>>>> source to the output. I should probably just remove that from the
>>>>>>> script.
>>>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there are
>>>>>>>>> the
>>>>>>>>> drivers ready, is correct and can be tried?
>>>>>>>>>
>>>>>>>> Yes. They should be good to go.
>>>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
>>>>>>> On boot now take very long time (much more time that with other
>>>>> windows
>>>>>>> pv or without any) until arrive at login screen, network card is not
>>>>>>> visible (show unable to boot both emulated and pv network card).
>>>>>>> Testsigning is enabled and the other pv drivers was removed and
>>>>> rebooted
>>>>>>> before install this new.
>>>>>>> On same dom0 and domU with other pv drivers (of James Harper) I
>> had
>>>>> only
>>>>>>> these 2 problems:
>>>>>>> - occasional network disappaer after some hours or days (probable
>>>>> xennet
>>>>>>> crash)
>>>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
>>>>>>>
>>>>>>> This is the domU's cfg:
>>>>>>>> name='W7-02'
>>>>>>>> builder="hvm"
>>>>>>>> memory=2048
>>>>>>>> vcpus=2
>>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>>>> disk=['/mnt/vm/disks/W7-
>> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>>>> boot='dc'
>>>>>>>> device_model_version="qemu-xen"
>>>>>>>> viridian=1
>>>>>>>> vnc=0
>>>>>>>> keymap="it"
>>>>>>>> on_crash="destroy"
>>>>>>>> vga="qxl"
>>>>>>>> spice=1
>>>>>>>> spicehost='0.0.0.0'
>>>>>>>> spiceport=6003
>>>>>>>> spicedisable_ticketing=1
>>>>>>>> spicevdagent=1
>>>>>>>> spice_clipboard_sharing=0
>>>>>>>> spiceusbredirection=4
>>>>>>>> soundhw="hda"
>>>>>>>> localtime=1
>>>>>>>> usbversion=2
>>>>>>> I tried also disabling qxl, vdagent, audio and usb:
>>>>>>>> name='W7-02'
>>>>>>>> builder="hvm"
>>>>>>>> memory=2048
>>>>>>>> vcpus=2
>>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
>>>>>>>> disk=['/mnt/vm/disks/W7-
>> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
>>>>>>>> boot='dc'
>>>>>>>> device_model_version="qemu-xen"
>>>>>>>> viridian=1
>>>>>>>> vnc=0
>>>>>>>> keymap="it"
>>>>>>>> on_crash="destroy"
>>>>>>>> vga="stdvga"
>>>>>>>> spice=1
>>>>>>>> spicehost='0.0.0.0'
>>>>>>>> spiceport=6003
>>>>>>>> spicedisable_ticketing=1
>>>>>>>> spicevdagent=0
>>>>>>>> spice_clipboard_sharing=0
>>>>>>>> #spiceusbredirection=4
>>>>>>>> #soundhw="hda"
>>>>>>>> localtime=1
>>>>>>>> #usbversion=2
>>>>>>> But I had same problems.
>>>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some libxl
>>>>>>> patch
>>>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and qemu
>>>>> 2.1.1
>>>>>>> Now I'll try also with W8.
>>>>>>>
>>>>>>> If you need more details and/or tests tell me and I'll post them.
>>>>>>>
>>>>>> If you could enable xen_platform_log in QEMU then the QEMU log
>> should
>>>>> tell us what's going on. If you don't know how to do that then the
>>>>> way I do it
>>>>> is to create a file called 'events' under /tmp populated with the
>>>>> single line:
>>>>>> xen_platform_log
>>>>>>
>>>>>> and then I add:
>>>>>>
>>>>>> device_model_args=[ "-trace", "events=/tmp/events"]
>>>>>>
>>>>>> to my config. QEMU by default is built to send traces to stderr, so
>>>>>> you
>>>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
>>>>> name>.log.
>>>>>> Did you try installing the drivers in a fresh VM? It's possible
>>>>>> that there is still
>>>>> some remnant of the GPLPV drivers around - uninstalling drivers on
>>>>> Windows
>>>>> is tricky.
>>>>> Thanks for reply.
>>>>> Tried with trace (log in attachment), with a fast look a saw a strange
>>>>> mac different from the one setted in cfg.
>>>>> I tried removing fixed mac in xl cfg but the network card problem
>>>>> persist.
>>>>> The old pv should be completly removed, I used also the bat for remove
>>>>> the registry keys and file, not only the unstall from control panel.
>>>>> I'll try also a clean install ASAP.
>>>> Your PV storage looks fine, but the problem with your network is here:
>>>>
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail3
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail2
>>>> xen_platform_log xen platform:
>> XENVIF|__FrontendWaitForStateChange:
>>>> fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
>>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
>>>> (c0000001)
>>>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
>>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
>>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1 (c0000001)
>>>>
>>>> What this means is that your frontend waited for a very very long
>>>> time for your backend to go connected, and it failed to do so. It
>>>> then  give up and you get the above cascade of error logging. I
>>>> suspect the problem is a lack of the following netback fix:
>>>>
>>>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
>>>> Author: Paul Durrant <Paul.Durrant@citrix.com>
>>>> Date:   Tue Sep 17 17:46:08 2013 +0100
>>>>
>>>>       xen-netback: Don't destroy the netdev until the vif is shut down
>>>>
>>>>       Without this patch, if a frontend cycles through states Closing
>>>>       and Closed (which Windows frontends need to do) then the netdev
>>>>       will be destroyed and requires re-invocation of hotplug scripts
>>>>       to restore state before the frontend can move to Connected. Thus
>>>>       when udev is not in use the backend gets stuck in InitWait.
>>>>
>>>>       With this patch, the netdev is left alone whilst the backend is
>>>>       still online and is only de-registered and freed just prior to
>>>>       destroying the vif (which is also nicely symmetrical with the
>>>>       netdev allocation and registration being done during probe) so
>>>>       no re-invocation of hotplug scripts is required.
>>>>
>>>>       Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>>>>       Cc: David Vrabel <david.vrabel@citrix.com>
>>>>       Cc: Wei Liu <wei.liu2@citrix.com>
>>>>       Cc: Ian Campbell <ian.campbell@citrix.com>
>>>>       Acked-by: Wei Liu <wei.liu2@citrix.com>
>>>>       Signed-off-by: David S. Miller <davem@davemloft.net>
>>> I found it applied upstream:
>>> https://git.kernel.org/cgit/linux/kernel/git/next/linux-
>> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
>>> But not in 3.2-stable branch, I tried to apply it on latest Wheezy
>>> (debian 7) kernel source but there are too many difference and I was
>>> unable to apply it manually.
>>> Can someone give me advices please?
>>>
>>> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good thing
>>> and very reliable? I plain to use new versions also in production ASAP
>>> (if I can solve theoccasional network crash on windows I have with
>>> gplpv and hope to solve with these drivers), with the agent lite of
>>> these drivers should finally solves also the post-restore problem of
>>> time(and users unable to login) with the windows domUs in a domain.
>>> Now I'll do a fast test with kernel for backports to solves if solves
>>> the problem.
>>>
>>> Thanks for any reply and sorry for my bad english.
>> I tried the kernel from backports and solves the network and very long
>> boot time problem.
>> The xen agent lite problem still persist instead, on my latest test on
>> windows 7 show xenlite service running but xl shutdown and update time
>> on restore are still not working :(
>> I not saw an agent error in windows events log but I saw this error:
>> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
>> With hwinfo I saw that is realtek emulated network card, is it correctly
>> since pv driver is in use?
>>
> Can you send the qemu log again? If you are still seeing the realtek device in the guest it suggests your PV frontend is still not installed correctly.

Log in attachment.
The windows device management still show realtek even if is not used 
(show error 12 - resources conflict on it), xen pv network device 
instead now is showed ok and is working.

>
> I think there's a compatibility problem. What happens if you simply xenstore_write "halt" into control/shutdown. (xl appears to write "poweroff" instead).

Here I not understand if is something I must try and post the result or 
you already found the exacly problem.

Thanks for any reply.

--------------050409010404020805000603
Content-Type: text/plain; charset=windows-1252;
 name="qemu-dm-W7-02.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="qemu-dm-W7-02.log"

main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 1.482000 ms, bitrate 100043964 bps (95.409359 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
xen_platform_log xen platform: XEN|DllInitialize: XEN 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XEN|SystemGetStartOptions:  TESTSIGNING  NOEXECUTE=OPTIN
xen_platform_log xen platform: XEN|SystemGetVersionInformation: KERNEL: 6.1 (BUILD 7601) PLATFORM WIN32_NT (x64)
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SP: 1.0 ()
xen_platform_log xen platform: XEN|SystemGetVersionInformation: SUITES:
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - TERMINAL
xen_platform_log xen platform: XEN|SystemGetVersionInformation: - SINGLEUSERTS
xen_platform_log xen platform: XEN|SystemGetVersionInformation: TYPE: WORKSTATION
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[0] 00000000.00001000 - 00000000.0009efff
xen_platform_log xen platform: XEN|SystemGetMemoryInformation: RANGE[1] 00000000.00100000 - 00000000.77ffefff
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 00
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (0)
xen_platform_log xen platform: XEN|SystemCpuInformation: ====> (1)
xen_platform_log xen platform: XEN|SystemCpuInformation: Manufacturer: GenuineIntel
xen_platform_log xen platform: XEN|SystemCpuInformation: Local APIC ID: 02
xen_platform_log xen platform: XEN|SystemCpuInformation: <==== (1)
xen_platform_log xen platform: XEN|HypercallInitialize: XEN 4.5
xen_platform_log xen platform: XEN|HypercallInitialize: INTERFACE 0x00040300
xen_platform_log xen platform: XEN|HypercallInitialize: HypercallPfn[0]: 00000000000032DF
xen_platform_log xen platform: XENFILT|DriverEntry: XENFILT 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|DriverSetActiveDeviceInstance: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01/10
xen_platform_log xen platform: XENFILT|UnplugCheckForPVDisks: PRESENT
xen_platform_log xen platform: XENFILT|UnplugCheckForPVNics: PRESENT
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8001850390 (ACPI\PNP0A03\0)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80017F7AC0 (PCI\VEN_8086&DEV_1237&SUBSYS_11001AF4&REV_02\00)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800176EAC0 (PCI\VEN_8086&DEV_7000&SUBSYS_11001AF4&REV_00\08)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F35D0 (PCI\VEN_8086&DEV_7010&SUBSYS_11001AF4&REV_00\09)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F45D0 (PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F55D0 (PCI\VEN_8086&DEV_2668&SUBSYS_11001AF4&REV_01\18)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F65D0 (PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\20)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F75D0 (PCI\VEN_1B36&DEV_0100&SUBSYS_11001AF4&REV_04\28)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F95D0 (PCI\VEN_8086&DEV_2934&SUBSYS_11001AF4&REV_03\E8)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FA5D0 (PCI\VEN_8086&DEV_2935&SUBSYS_11001AF4&REV_03\E9)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FB5D0 (PCI\VEN_8086&DEV_2936&SUBSYS_11001AF4&REV_03\EA)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FC5D0 (PCI\VEN_8086&DEV_293A&SUBSYS_11001AF4&REV_03\EF)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016FD5D0 (ACPI\PNP0103\0)
xen_platform_log xen platform: XENBUS|DriverEntry: XENBUS 8.0.0 (2) (23.09.2014)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: UNPLUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|FdoCreate: FFFFFA8002131350 (XS0001 XENBUS) [ACTIVE]
xen_platform_log xen platform: XENBUS|FdoScan: ====>
xen_platform_log xen platform: SHARED_INFO: MAP XENMAPSPACE_shared_info @ 00000000.f8000000
xen_platform_log xen platform: XENBUS|FdoSuspend: ====>
xen_platform_log xen platform: STORE: PAGE @ 00000000.feffc000
xen_platform_log xen platform: XENBUS|FdoBalloon: ====>
xen_platform_log xen platform: UNPLUG: PRE-AMBLE (DRIVERS NOT BLACKLISTED)
xen_platform_log xen platform: UNPLUG: DISKS
xen_platform_log xen platform: UNPLUG: NICS
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80021335F0 (VBD 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA80021332D0 (VIF 00000001)
xen_platform_log xen platform: XENBUS|PdoCreate: FFFFFA8002151D40 (IFACE 00000001)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002160040 (PCIIDE\IDEChannel\0)
xen_platform_log xen platform: XENFILT|FdoCreate: FFFFFA8002164040 (PCIIDE\IDEChannel\1)
xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA800217E040 (IDE\CdRomQEMU_QEMU_DVD-ROM_______________________2.1.____\0.1.0)
xen_platform_log xen platform: XENVBD|DriverEntry:8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENVBD|__DriverParseParameterKey:DriverParameters: 
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|DispatchPnp:DeviceObject 0xFFFFFA80021AE060 is not FDO (0x0000000000000000) or a PDO
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 0
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = ffffffff
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 000b0000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = ffffffff
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VBD: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENFILT|PdoQueryInterface: PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\10: EMULATED_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVBD|__FdoSetDevicePowerState:POWER D3 to D0
xen_platform_log xen platform: XENVBD|__FdoD3ToD0:D3->D0
xen_platform_log xen platform: XENVBD|__FdoIsPdoUnplugged:Target[0] : (vbd/768) Emulated NOT_PRESENT
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Creating (PV)
xen_platform_log xen platform: XENVBD|PdoSetDevicePowerState:Target[0] : POWER D3 to D0
xen_platform_log xen platform: XENVBD|PdoD3ToD0:Target[0] : D3->D0 (PV)
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : INITIALIZED ----> ENABLED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CLOSED
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page80 data
xen_platform_log xen platform: XENVBD|PdoReadInquiryData:Target[0] : Failed to get Page83 data
xen_platform_log xen platform: XENVBD|PdoUpdateInquiryData:Target[0] : VDI-UUID = {00000000-0000-0000-0000-000000000000}
xen_platform_log xen platform: XENVBD|FrontendPrepare:Target[0] : BackendId 0 (/local/domain/0/backend/qdisk/7/768)
xen_platform_log xen platform: XENVBD|FrontendReadFeatures:Target[0] : Features: PERSISTENT 
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state PREPARED
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[0] @ 00000000.f8001000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000009 - 000001ff]
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 102400000 sectors of 512 bytes (512)
xen_platform_log xen platform: XENVBD|__ReadDiskInfo:Target[0] : 48 GB (00000000) 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : Features: FLUSH DISCARD 
xen_platform_log xen platform: XENVBD|FrontendReadDiskInfo:Target[0] : DISCARD 0/0
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state CONNECTED
xen_platform_log xen platform: XENVBD|__FrontendSetState:Target[0] : in state ENABLED
xen_platform_log xen platform: XENVBD|PdoCreate:Target[0] : Created (PV)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread ===>
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread : Target[0] = 0xFFFFFA80021AEC70 (present)
xen_platform_log xen platform: XENVBD|FdoLogTargets:ScanThread <===
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|__HandlePage83:Target[0] : INQUIRY Using Fake Page83 Data
xen_platform_log xen platform: XENVBD|__HandlePage80:Target[0] : INQUIRY Using Fake Page80 Data
xen_platform_log xen platform: XENVBD|PdoSetDeviceObject:Target[0] : Setting DeviceObject = 0xFFFFFA80022C3060
xen_platform_log xen platform: XENVBD|FdoMapDeviceObjectToPdo:0xFFFFFA80022C3060 --> Target 0 (000000)
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 13:QUERY_ID -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 15:QUERY_BUS_INFORMATION -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 19:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 18:UNKNOWN -> c00000bb
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Present to Started
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 07:QUERY_DEVICE_RELATIONS -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVIF|DriverEntry: XENVIF 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: DEBUG_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: EVTCHN_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: RANGE_SET_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: CACHE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: VIF: GNTTAB_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENVIF|FdoCreate: FFFFFA8002638930 (XS0001 XENVIF)
xen_platform_log xen platform: XENIFACE|DriverEntry: 8.0.0.0 (24/9/2014)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E75B0 FFFFFA800263A6E0
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E6630 FFFFFA800263A6F0
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SUSPEND_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: SHARED_INFO_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|PdoQueryInterface: IFACE: STORE_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: no such xenstore key
xen_platform_log xen platform: XENIFACE|FdoInitialiseXSRegistryEntries: Failed to initialise registry (c0000022)
xen_platform_log xen platform: XENIFACE|ThreadCreate: Create thread FFFFF880040E708C FFFFFA800263A900
xen_platform_log xen platform: XENIFACE|FdoCreate: FFFFFA800263A990 (IFACE)
xen_platform_log xen platform: XENBUS|RangeSetPop: fail1 (c000009a)
xen_platform_log xen platform: GNTTAB: MAP XENMAPSPACE_grant_table[1] @ 00000000.f8002000
xen_platform_log xen platform: XENBUS|GnttabExpand: added references [00000200 - 000003ff]
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:08:QUERY_INTERFACE -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVIF|__PdoSetPermanentAddress: 0 00:16:3E:42:A2:5F
xen_platform_log xen platform: XENVIF|__PdoSetContainerID: 0 {9f0e41ff-20f0-530d-9847-6eb5708b09bc}
xen_platform_log xen platform: XENVIF|PdoCreate: FFFFFA8002F81060 (0 00000001)
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:NotifyUnicastIpAddressChange (00F9) @ FFFFF8800163B850
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetUnicastIpAddressTable (0044) @ FFFFF8800163B900
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:CancelMibChangeNotify2 (0000) @ FFFFF88001630D30
xen_platform_log xen platform: XENNET|DriverEntry: XENNET 8.0.0 (0) (24.09.2014)
xen_platform_log xen platform: XENIFACE|WmiInit: DRV: XenIface WMI Initialisation
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:GetIfTable2 (0035) @ FFFFF88001637270
xen_platform_log xen platform: XENVIF|LinkGetRoutineAddress: netio.sys:FreeMibTable (0022) @ FFFFF88001623FD0
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: VIF_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Receive.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.IpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv4Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.TcpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: Checksum.IPv6Transmit.UdpChecksum ON
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv4.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENNET|AdapterSetOffloadAttributes: LsoV2.IPv6.MaxOffLoadSize = 65201
xen_platform_log xen platform: XENVIF|PdoQueryInterface: 0: BUS_INTERFACE (VERSION 1)
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Version = 2
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Master = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: ScatterGather = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DemandMode = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: AutoInitialize = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma32BitAddresses = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: IgnoreCount = FALSE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: Dma64BitAddresses = TRUE
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: BusNumber = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaChannel = 00000000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: InterfaceType = Internal
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaWidth = 8Bits
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaSpeed = Compatible
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: MaximumLength = 00020000
xen_platform_log xen platform: XENBUS|DmaDumpDeviceDescription: DmaPort = 00000000
xen_platform_log xen platform: XENBUS|DmaGetAdapter: no interception
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENNET|AdapterMediaStateChange: LINK: UP: SPEED=1000000000 DUPLEX=FULL
xen_platform_log xen platform: XENVBD|PdoSetDevicePnpState:Target[0] : PNP Started to StopPending
xen_platform_log xen platform: XENVBD|PdoDispatchPnp:Target[0] : 0d:FILTER_RESOURCE_REQUIREMENTS -> c00000bb
xen_platform_log xen platform: XENVBD|__PdoRestoreDevicePnpState:Target[0] : PNP StopPending to Started
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER NOT_PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : NOT_DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENVBD|FrontendWriteUsage:Target[0] : DUMP NOT_HIBER PAGE
xen_platform_log xen platform: XENVBD|FdoDispatchPnp:14:QUERY_PNP_DEVICE_STATE -> c00000bb
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
xen_platform_log xen platform: XENBUS|FdoQueryPnpDeviceState: XS0001 XENBUS: not disableable
main_channel_handle_parsed: agent start
main_channel_handle_parsed: agent start
red_client_destroy: destroy client 0x7f4325577020 with #channels=10
red_dispatcher_disconnect_cursor_peer: 
red_channel_client_disconnect: rcc=0x7f432581b450 (channel=0x7f43254ad0a0 type=4 id=0)
red_channel_client_disconnect: rcc=0x7f4325752b40 (channel=0x7f43253c34d0 type=3 id=0)
red_channel_client_disconnect_dummy: rcc=0x7f43255114a0 (channel=0x7f43254c8370 type=5 id=0)
snd_channel_put: SndChannel=0x7f4325811ae0 freed
red_channel_client_disconnect_dummy: rcc=0x7f43253fab20 (channel=0x7f4325495920 type=6 id=0)
snd_channel_put: SndChannel=0x7f43256b6f30 freed
red_dispatcher_disconnect_display_peer: 
red_channel_client_disconnect: rcc=0x7f43256eef50 (channel=0x7f4325404b80 type=2 id=0)
red_channel_client_disconnect: rcc=0x7f432550d260 (channel=0x7f432547bcb0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7f43253e48b0 (channel=0x7f4325503cc0 type=9 id=3)
red_channel_client_disconnect: rcc=0x7f43255e1fa0 (channel=0x7f4325400e70 type=9 id=2)
red_channel_client_disconnect: rcc=0x7f43256526b0 (channel=0x7f43253ffed0 type=9 id=1)
red_channel_client_disconnect: rcc=0x7f432557b1b0 (channel=0x7f43253b7a40 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7f432557b1b0
main_channel_link: add main channel client
main_channel_handle_parsed: agent start
main_channel_handle_parsed: net test: latency 5.748000 ms, bitrate 1950476190 bps (1860.119047 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 
main_channel_handle_parsed: agent start
red_channel_client_disconnect: rcc=0x7f43256076a0 (channel=0x7f43253b7a40 type=1 id=0)
main_channel_client_on_disconnect: rcc=0x7f43256076a0
red_client_destroy: destroy client 0x7f432575ac90 with #channels=10
red_dispatcher_disconnect_cursor_peer: 
red_channel_client_disconnect: rcc=0x7f4308006610 (channel=0x7f43254ad0a0 type=4 id=0)
red_channel_client_disconnect: rcc=0x7f4325773050 (channel=0x7f43253c34d0 type=3 id=0)
red_dispatcher_disconnect_display_peer: 
red_channel_client_disconnect: rcc=0x7f43080443e0 (channel=0x7f4325404b80 type=2 id=0)
red_channel_client_disconnect_dummy: rcc=0x7f43253e4800 (channel=0x7f4325495920 type=6 id=0)
snd_channel_put: SndChannel=0x7f4325877460 freed
red_channel_client_disconnect: rcc=0x7f4325691250 (channel=0x7f432547bcb0 type=9 id=0)
red_channel_client_disconnect: rcc=0x7f4325900de0 (channel=0x7f43253ffed0 type=9 id=1)
red_channel_client_disconnect_dummy: rcc=0x7f43257c0b20 (channel=0x7f43254c8370 type=5 id=0)
snd_channel_put: SndChannel=0x7f43253f2b10 freed
red_channel_client_disconnect: rcc=0x7f432557b1b0 (channel=0x7f4325400e70 type=9 id=2)
red_channel_client_disconnect: rcc=0x7f43255e1fa0 (channel=0x7f4325503cc0 type=9 id=3)
main_channel_link: add main channel client
main_channel_handle_parsed: agent start
main_channel_handle_parsed: net test: latency 2.113000 ms, bitrate 103018108 bps (98.245724 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 

--------------050409010404020805000603
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--------------050409010404020805000603--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 13:15:29 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 13:15:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX8tN-0004qt-Kn; Thu, 25 Sep 2014 13:15:29 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX8tM-0004ql-Dt
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 13:15:28 +0000
Received: from [85.158.139.211:5976] by server-12.bemta-5.messagelabs.com id
	19/33-22251-F6514245; Thu, 25 Sep 2014 13:15:27 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-206.messagelabs.com!1411650926!6709839!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20481 invoked from network); 25 Sep 2014 13:15:26 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-10.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 13:15:26 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25289593"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQgAEvKYCAABi4gIAAIhhA///0aQCAACfGEA==
Date: Thu, 25 Sep 2014 13:15:24 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD049186F@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
	<54240F54.4050301@m2r.biz>
In-Reply-To: <54240F54.4050301@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 25 September 2014 13:49
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 13:38, Paul Durrant ha scritto:
> >> -----Original Message-----
> >> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >> Sent: 25 September 2014 12:29
> >> To: Paul Durrant
> >> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> >> Subject: Re: New windows pv drivers question
> >>
> >> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> >>> Il 24/09/2014 16:03, Paul Durrant ha scritto:
> >>>>> -----Original Message-----
> >>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>> Sent: 24 September 2014 14:52
> >>>>> To: Paul Durrant
> >>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>> Subject: Re: New windows pv drivers question
> >>>>>
> >>>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >>>>>>> -----Original Message-----
> >>>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>>>> Sent: 24 September 2014 14:07
> >>>>>>> To: Paul Durrant
> >>>>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>>>> Subject: Re: New windows pv drivers question
> >>>>>>>
> >>>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>>>>>>> -----Original Message-----
> >>>>>>>> [snip]
> >>>>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 365,
> >>>>>>>>>>>> in <module
> >>>>>>>>>>>>          build_sln(driver, release, 'x64', debug[sys.argv[1]],
> >>>>>>>>>>>> vs)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 138,
> >>>>>>>>>>>> in build_s
> >>>>>>>>>>>> ln
> >>>>>>>>>>>>          msbuild(platform, configuration, 'Build', name +
> >>>>>>>>>>>> '.sln', '', vs)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 122,
> >>>>>>>>>>>> in msbuild
> >>>>>>>>>>>>
> >>>>>>>>>>>>          status = shell([bin], dir)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 100,
> >>>>>>>>>>>> in shell
> >>>>>>>>>>>>          print(line.rstrip())
> >>>>>>>>>>>>        File "C:\Python34\lib\encodings\cp850.py", line 19, in
> >>>>>>>>>>>> encode
> >>>>>>>>>>>>          return
> >>>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode
> character
> >>>>> '\u2026'
> >>>>>>> in
> >>>>>>>>>>>> position
> >>>>>>>>>>>> 28: character maps to <undefined>
> >>>>>>>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>>>>>>> Thanks for any reply.
> >>>>>>>>>> Not seen anything like that before. I can only assume it's to
> >>>>>>>>>> do with
> >>>>>>>>> language support. It seems like msbuild is emitting characters
> >>>>>>>>> that the
> >>>>>>> shell is
> >>>>>>>>> not handling correctly. I suspect you'll be ok if you use an
> >>>>>>>>> English
> >>>>> character
> >>>>>>>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>>>>>>        Paul
> >>>>>>>>>>
> >>>>>>>>> I installed english language pack and solves the problem.
> >>>>>>>> Ok. So we know what the problem was. We need to figure out a
> >>>>>>>> solution
> >>>>> to
> >>>>>>> that.
> >>>>>>>
> >>>>>>> Thanks, for now I built with english windows.
> >>>>>>>
> >>>>>>>>> After gave me other error about no sufficent permission on one
> >>>>>>>>> exe of
> >>>>>>>>> WDK, I tried to execute as administrator and did max
> permissions
> >> to
> >>>>>>>>> everyone on the file but not, I solved also that adding nosdv.
> >>>>>>>> I've seen problems running sdv where some of the processes it
> >>>>>>>> kicks off
> >>>>>>> seem to conflict on one of the log files, so it bails with a lack
> >>>>>>> of write
> >>>>>>> permission. Is that the sort of thing you saw?
> >>>>>>>
> >>>>>>> Probably, you need that I retry and post the exactly output of
> error?
> >>>>>>>
> >>>>>>>>> After I had near the end another error where I not found a
> >>>>> workaround:
> >>>>>>>>>> Done Building Project
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>>>>>>> n" (Build target(s)).
> >>>>>>>>>>
> >>>>>>>>>> Build succeeded.
> >>>>>>>>>>         0 Warning(s)
> >>>>>>>>>>         0 Error(s)
> >>>>>>>>>>
> >>>>>>>>>> Time Elapsed 00:00:02.37
> >>>>>>>>>>
> >>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if
> errorlevel 1
> >>>>> goto
> >>>>>>>>> error
> >>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>>>>>>> vs2013\Windows7Release\Win32
> >>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>>>> '/v',
> >>>>>>>>>> '8.0.0.12'
> >>>>>>>>>> ]
> >>>>>>>>>> Finding ID...  0000000015
> >>>>>>>>>>
> >>>>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>>>> vs2013\Windows7Release\x64
> >>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>>>> '/v',
> >>>>>>>>>> '8.0.0.12'
> >>>>>>>>>> ]
> >>>>>>>>>> Finding ID...  0000000016
> >>>>>>>>>>
> >>>>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>>>> line 375,
> >>>>>>>>>> in <module
> >>>>>>>>>>         archive(driver + '\source.tgz', manifest().splitlines(),
> >>>>>>>>>> tgz=True)
> >>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>>>> line 289,
> >>>>>>>>>> in manifes
> >>>>>>>>>> t
> >>>>>>>>>>         sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>>>>>>         restore_signals, start_new_session)
> >>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 1111, in
> >>>>>>>>>> _execute_child
> >>>>>>>>>>         startupinfo)
> >>>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> >>>>> specified
> >>>>>>>> That looks like git is not on your path. The build script adds an
> >>>>>>>> archive of
> >>>>> the
> >>>>>>> source to the output. I should probably just remove that from the
> >>>>>>> script.
> >>>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there
> are
> >>>>>>>>> the
> >>>>>>>>> drivers ready, is correct and can be tried?
> >>>>>>>>>
> >>>>>>>> Yes. They should be good to go.
> >>>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >>>>>>> On boot now take very long time (much more time that with other
> >>>>> windows
> >>>>>>> pv or without any) until arrive at login screen, network card is not
> >>>>>>> visible (show unable to boot both emulated and pv network card).
> >>>>>>> Testsigning is enabled and the other pv drivers was removed and
> >>>>> rebooted
> >>>>>>> before install this new.
> >>>>>>> On same dom0 and domU with other pv drivers (of James Harper) I
> >> had
> >>>>> only
> >>>>>>> these 2 problems:
> >>>>>>> - occasional network disappaer after some hours or days (probable
> >>>>> xennet
> >>>>>>> crash)
> >>>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>>>>>>
> >>>>>>> This is the domU's cfg:
> >>>>>>>> name='W7-02'
> >>>>>>>> builder="hvm"
> >>>>>>>> memory=2048
> >>>>>>>> vcpus=2
> >>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>>>> disk=['/mnt/vm/disks/W7-
> >> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>>>> boot='dc'
> >>>>>>>> device_model_version="qemu-xen"
> >>>>>>>> viridian=1
> >>>>>>>> vnc=0
> >>>>>>>> keymap="it"
> >>>>>>>> on_crash="destroy"
> >>>>>>>> vga="qxl"
> >>>>>>>> spice=1
> >>>>>>>> spicehost='0.0.0.0'
> >>>>>>>> spiceport=6003
> >>>>>>>> spicedisable_ticketing=1
> >>>>>>>> spicevdagent=1
> >>>>>>>> spice_clipboard_sharing=0
> >>>>>>>> spiceusbredirection=4
> >>>>>>>> soundhw="hda"
> >>>>>>>> localtime=1
> >>>>>>>> usbversion=2
> >>>>>>> I tried also disabling qxl, vdagent, audio and usb:
> >>>>>>>> name='W7-02'
> >>>>>>>> builder="hvm"
> >>>>>>>> memory=2048
> >>>>>>>> vcpus=2
> >>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>>>> disk=['/mnt/vm/disks/W7-
> >> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>>>> boot='dc'
> >>>>>>>> device_model_version="qemu-xen"
> >>>>>>>> viridian=1
> >>>>>>>> vnc=0
> >>>>>>>> keymap="it"
> >>>>>>>> on_crash="destroy"
> >>>>>>>> vga="stdvga"
> >>>>>>>> spice=1
> >>>>>>>> spicehost='0.0.0.0'
> >>>>>>>> spiceport=6003
> >>>>>>>> spicedisable_ticketing=1
> >>>>>>>> spicevdagent=0
> >>>>>>>> spice_clipboard_sharing=0
> >>>>>>>> #spiceusbredirection=4
> >>>>>>>> #soundhw="hda"
> >>>>>>>> localtime=1
> >>>>>>>> #usbversion=2
> >>>>>>> But I had same problems.
> >>>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some
> libxl
> >>>>>>> patch
> >>>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and
> qemu
> >>>>> 2.1.1
> >>>>>>> Now I'll try also with W8.
> >>>>>>>
> >>>>>>> If you need more details and/or tests tell me and I'll post them.
> >>>>>>>
> >>>>>> If you could enable xen_platform_log in QEMU then the QEMU log
> >> should
> >>>>> tell us what's going on. If you don't know how to do that then the
> >>>>> way I do it
> >>>>> is to create a file called 'events' under /tmp populated with the
> >>>>> single line:
> >>>>>> xen_platform_log
> >>>>>>
> >>>>>> and then I add:
> >>>>>>
> >>>>>> device_model_args=[ "-trace", "events=/tmp/events"]
> >>>>>>
> >>>>>> to my config. QEMU by default is built to send traces to stderr, so
> >>>>>> you
> >>>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
> >>>>> name>.log.
> >>>>>> Did you try installing the drivers in a fresh VM? It's possible
> >>>>>> that there is still
> >>>>> some remnant of the GPLPV drivers around - uninstalling drivers on
> >>>>> Windows
> >>>>> is tricky.
> >>>>> Thanks for reply.
> >>>>> Tried with trace (log in attachment), with a fast look a saw a strange
> >>>>> mac different from the one setted in cfg.
> >>>>> I tried removing fixed mac in xl cfg but the network card problem
> >>>>> persist.
> >>>>> The old pv should be completly removed, I used also the bat for
> remove
> >>>>> the registry keys and file, not only the unstall from control panel.
> >>>>> I'll try also a clean install ASAP.
> >>>> Your PV storage looks fine, but the problem with your network is here:
> >>>>
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail3
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail2
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail1 (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
> >>>> (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1
> (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> >>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1
> (c0000001)
> >>>>
> >>>> What this means is that your frontend waited for a very very long
> >>>> time for your backend to go connected, and it failed to do so. It
> >>>> then  give up and you get the above cascade of error logging. I
> >>>> suspect the problem is a lack of the following netback fix:
> >>>>
> >>>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> >>>> Author: Paul Durrant <Paul.Durrant@citrix.com>
> >>>> Date:   Tue Sep 17 17:46:08 2013 +0100
> >>>>
> >>>>       xen-netback: Don't destroy the netdev until the vif is shut down
> >>>>
> >>>>       Without this patch, if a frontend cycles through states Closing
> >>>>       and Closed (which Windows frontends need to do) then the netdev
> >>>>       will be destroyed and requires re-invocation of hotplug scripts
> >>>>       to restore state before the frontend can move to Connected. Thus
> >>>>       when udev is not in use the backend gets stuck in InitWait.
> >>>>
> >>>>       With this patch, the netdev is left alone whilst the backend is
> >>>>       still online and is only de-registered and freed just prior to
> >>>>       destroying the vif (which is also nicely symmetrical with the
> >>>>       netdev allocation and registration being done during probe) so
> >>>>       no re-invocation of hotplug scripts is required.
> >>>>
> >>>>       Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> >>>>       Cc: David Vrabel <david.vrabel@citrix.com>
> >>>>       Cc: Wei Liu <wei.liu2@citrix.com>
> >>>>       Cc: Ian Campbell <ian.campbell@citrix.com>
> >>>>       Acked-by: Wei Liu <wei.liu2@citrix.com>
> >>>>       Signed-off-by: David S. Miller <davem@davemloft.net>
> >>> I found it applied upstream:
> >>> https://git.kernel.org/cgit/linux/kernel/git/next/linux-
> >> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
> >>> But not in 3.2-stable branch, I tried to apply it on latest Wheezy
> >>> (debian 7) kernel source but there are too many difference and I was
> >>> unable to apply it manually.
> >>> Can someone give me advices please?
> >>>
> >>> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good
> thing
> >>> and very reliable? I plain to use new versions also in production ASAP
> >>> (if I can solve theoccasional network crash on windows I have with
> >>> gplpv and hope to solve with these drivers), with the agent lite of
> >>> these drivers should finally solves also the post-restore problem of
> >>> time(and users unable to login) with the windows domUs in a domain.
> >>> Now I'll do a fast test with kernel for backports to solves if solves
> >>> the problem.
> >>>
> >>> Thanks for any reply and sorry for my bad english.
> >> I tried the kernel from backports and solves the network and very long
> >> boot time problem.
> >> The xen agent lite problem still persist instead, on my latest test on
> >> windows 7 show xenlite service running but xl shutdown and update time
> >> on restore are still not working :(
> >> I not saw an agent error in windows events log but I saw this error:
> >> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
> >> With hwinfo I saw that is realtek emulated network card, is it correctly
> >> since pv driver is in use?
> >>
> > Can you send the qemu log again? If you are still seeing the realtek device
> in the guest it suggests your PV frontend is still not installed correctly.
> 
> Log in attachment.
> The windows device management still show realtek even if is not used
> (show error 12 - resources conflict on it), xen pv network device
> instead now is showed ok and is working.
> 

Hmm. That looks like a bug has crept in. In the log I can see:

xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)

(which is the realtek device). The unplug then happens later but the device has already been exposed to the Windows PnP subsystem - the unplug needs to come earlier. I suspect this may have broken things...

commit cba6dad2df306885dfc65908f14ce6e2d8a86211
Author: Paul Durrant <paul.durrant@citrix.com>
Date:   Fri Sep 5 17:58:51 2014 +0100

    Update active device's instance id at point of PDO filter creation

    It's tidier to have xenfilt simply return its own versions of device and
    instance id when it intercepts IRP_MN_QUERY_ID. The override of the instance
    id can be done and logged once when the PDO filter device object is created.
    This patch does that, and also replaces the rather vacuuous Name field in
    the filter device object extensions with DeviceID and InstanceID fields.

    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>

I'll have a look and see what needs fixing.

> >
> > I think there's a compatibility problem. What happens if you simply
> xenstore_write "halt" into control/shutdown. (xl appears to write
> "poweroff" instead).
> 
> Here I not understand if is something I must try and post the result or
> you already found the exacly problem.
> 

I was suggesting a workaround for you. I know what the problem is; I'll submit a patch shortly.

  Paul

> Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 13:15:29 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 13:15:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX8tN-0004qt-Kn; Thu, 25 Sep 2014 13:15:29 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX8tM-0004ql-Dt
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 13:15:28 +0000
Received: from [85.158.139.211:5976] by server-12.bemta-5.messagelabs.com id
	19/33-22251-F6514245; Thu, 25 Sep 2014 13:15:27 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-206.messagelabs.com!1411650926!6709839!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20481 invoked from network); 25 Sep 2014 13:15:26 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-10.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 13:15:26 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25289593"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIAAI/7QgAELaQCAACJxYIAAIBMAgAAielD//+nzgIAAIozQgAEvKYCAABi4gIAAIhhA///0aQCAACfGEA==
Date: Thu, 25 Sep 2014 13:15:24 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD049186F@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048E2DF@AMSPEX01CL01.citrite.net>
	<54228A34.1040205@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048EDFE@AMSPEX01CL01.citrite.net>
	<5422C200.50803@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048F9C5@AMSPEX01CL01.citrite.net>
	<5422CC6D.7030805@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD048FC65@AMSPEX01CL01.citrite.net>
	<5423E7B7.2010702@m2r.biz> <5423FC73.8060704@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD04915F0@AMSPEX01CL01.citrite.net>
	<54240F54.4050301@m2r.biz>
In-Reply-To: <54240F54.4050301@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: Ben Chalmers <ben.chalmers@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 25 September 2014 13:49
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 13:38, Paul Durrant ha scritto:
> >> -----Original Message-----
> >> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >> Sent: 25 September 2014 12:29
> >> To: Paul Durrant
> >> Cc: win-pv-devel@lists.xenproject.org; Ben Chalmers
> >> Subject: Re: New windows pv drivers question
> >>
> >> Il 25/09/2014 12:00, Fabio Fantoni ha scritto:
> >>> Il 24/09/2014 16:03, Paul Durrant ha scritto:
> >>>>> -----Original Message-----
> >>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>> Sent: 24 September 2014 14:52
> >>>>> To: Paul Durrant
> >>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>> Subject: Re: New windows pv drivers question
> >>>>>
> >>>>> Il 24/09/2014 15:19, Paul Durrant ha scritto:
> >>>>>>> -----Original Message-----
> >>>>>>> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> >>>>>>> Sent: 24 September 2014 14:07
> >>>>>>> To: Paul Durrant
> >>>>>>> Cc: win-pv-devel@lists.xenproject.org
> >>>>>>> Subject: Re: New windows pv drivers question
> >>>>>>>
> >>>>>>> Il 24/09/2014 11:15, Paul Durrant ha scritto:
> >>>>>>>>> -----Original Message-----
> >>>>>>>> [snip]
> >>>>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 365,
> >>>>>>>>>>>> in <module
> >>>>>>>>>>>>          build_sln(driver, release, 'x64', debug[sys.argv[1]],
> >>>>>>>>>>>> vs)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 138,
> >>>>>>>>>>>> in build_s
> >>>>>>>>>>>> ln
> >>>>>>>>>>>>          msbuild(platform, configuration, 'Build', name +
> >>>>>>>>>>>> '.sln', '', vs)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 122,
> >>>>>>>>>>>> in msbuild
> >>>>>>>>>>>>
> >>>>>>>>>>>>          status = shell([bin], dir)
> >>>>>>>>>>>>        File
> >>>>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line
> >>>>> 100,
> >>>>>>>>>>>> in shell
> >>>>>>>>>>>>          print(line.rstrip())
> >>>>>>>>>>>>        File "C:\Python34\lib\encodings\cp850.py", line 19, in
> >>>>>>>>>>>> encode
> >>>>>>>>>>>>          return
> >>>>>>> codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>>>>>>>>>>> UnicodeEncodeError: 'charmap' codec can't encode
> character
> >>>>> '\u2026'
> >>>>>>> in
> >>>>>>>>>>>> position
> >>>>>>>>>>>> 28: character maps to <undefined>
> >>>>>>>>>>> I did something wrong or there is a bug or unexpected case?
> >>>>>>>>>>> Thanks for any reply.
> >>>>>>>>>> Not seen anything like that before. I can only assume it's to
> >>>>>>>>>> do with
> >>>>>>>>> language support. It seems like msbuild is emitting characters
> >>>>>>>>> that the
> >>>>>>> shell is
> >>>>>>>>> not handling correctly. I suspect you'll be ok if you use an
> >>>>>>>>> English
> >>>>> character
> >>>>>>>>> set but I'll try to figure out what the script is/isn't doing.
> >>>>>>>>>>        Paul
> >>>>>>>>>>
> >>>>>>>>> I installed english language pack and solves the problem.
> >>>>>>>> Ok. So we know what the problem was. We need to figure out a
> >>>>>>>> solution
> >>>>> to
> >>>>>>> that.
> >>>>>>>
> >>>>>>> Thanks, for now I built with english windows.
> >>>>>>>
> >>>>>>>>> After gave me other error about no sufficent permission on one
> >>>>>>>>> exe of
> >>>>>>>>> WDK, I tried to execute as administrator and did max
> permissions
> >> to
> >>>>>>>>> everyone on the file but not, I solved also that adding nosdv.
> >>>>>>>> I've seen problems running sdv where some of the processes it
> >>>>>>>> kicks off
> >>>>>>> seem to conflict on one of the log files, so it bails with a lack
> >>>>>>> of write
> >>>>>>> permission. Is that the sort of thing you saw?
> >>>>>>>
> >>>>>>> Probably, you need that I retry and post the exactly output of
> error?
> >>>>>>>
> >>>>>>>>> After I had near the end another error where I not found a
> >>>>> workaround:
> >>>>>>>>>> Done Building Project
> >>>>>>>>>> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sl
> >>>>>>>>>> n" (Build target(s)).
> >>>>>>>>>>
> >>>>>>>>>> Build succeeded.
> >>>>>>>>>>         0 Warning(s)
> >>>>>>>>>>         0 Error(s)
> >>>>>>>>>>
> >>>>>>>>>> Time Elapsed 00:00:02.37
> >>>>>>>>>>
> >>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>if
> errorlevel 1
> >>>>> goto
> >>>>>>>>> error
> >>>>>>>>>> C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013>exit 0
> >>>>>>>>>> vs2013\Windows7Release\Win32
> >>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>>>> '/v',
> >>>>>>>>>> '8.0.0.12'
> >>>>>>>>>> ]
> >>>>>>>>>> Finding ID...  0000000015
> >>>>>>>>>>
> >>>>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>>>> vs2013\Windows7Release\x64
> >>>>>>>>>> ['"C:\\Program Files (x86)\\Windows
> >>>>>>>>>> Kits\\8.1\\Debuggers\\x86\\symstore.exe"', '
> >>>>>>>>>> add', '/s', 'C:\\Symbols', '/r', '/f', '*.pdb', '/t', 'xenbus',
> >>>>>>>>>> '/v',
> >>>>>>>>>> '8.0.0.12'
> >>>>>>>>>> ]
> >>>>>>>>>> Finding ID...  0000000016
> >>>>>>>>>>
> >>>>>>>>>> SYMSTORE: Number of files stored = 3
> >>>>>>>>>> SYMSTORE: Number of errors = 0
> >>>>>>>>>> SYMSTORE: Number of files ignored = 0
> >>>>>>>>>> Traceback (most recent call last):
> >>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>>>> line 375,
> >>>>>>>>>> in <module
> >>>>>>>>>>         archive(driver + '\source.tgz', manifest().splitlines(),
> >>>>>>>>>> tgz=True)
> >>>>>>>>>>       File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py",
> >>>>>>>>>> line 289,
> >>>>>>>>>> in manifes
> >>>>>>>>>> t
> >>>>>>>>>>         sub = subprocess.Popen(cmd, stdout=subprocess.PIPE)
> >>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 858, in __init__
> >>>>>>>>>>         restore_signals, start_new_session)
> >>>>>>>>>>       File "C:\Python34\lib\subprocess.py", line 1111, in
> >>>>>>>>>> _execute_child
> >>>>>>>>>>         startupinfo)
> >>>>>>>>>> FileNotFoundError: [WinError 2] The system cannot find the file
> >>>>> specified
> >>>>>>>> That looks like git is not on your path. The build script adds an
> >>>>>>>> archive of
> >>>>> the
> >>>>>>> source to the output. I should probably just remove that from the
> >>>>>>> script.
> >>>>>>>>> I saw that in repository folder\xenbus\(x64|x86) seems there
> are
> >>>>>>>>> the
> >>>>>>>>> drivers ready, is correct and can be tried?
> >>>>>>>>>
> >>>>>>>> Yes. They should be good to go.
> >>>>>>> Installed all 5 drivers in windows 7 pro 64 bit sp1.
> >>>>>>> On boot now take very long time (much more time that with other
> >>>>> windows
> >>>>>>> pv or without any) until arrive at login screen, network card is not
> >>>>>>> visible (show unable to boot both emulated and pv network card).
> >>>>>>> Testsigning is enabled and the other pv drivers was removed and
> >>>>> rebooted
> >>>>>>> before install this new.
> >>>>>>> On same dom0 and domU with other pv drivers (of James Harper) I
> >> had
> >>>>> only
> >>>>>>> these 2 problems:
> >>>>>>> - occasional network disappaer after some hours or days (probable
> >>>>> xennet
> >>>>>>> crash)
> >>>>>>> - 2-3 time of "hang" after restore with qxl vga and vdagent enable
> >>>>>>>
> >>>>>>> This is the domU's cfg:
> >>>>>>>> name='W7-02'
> >>>>>>>> builder="hvm"
> >>>>>>>> memory=2048
> >>>>>>>> vcpus=2
> >>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>>>> disk=['/mnt/vm/disks/W7-
> >> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>>>> boot='dc'
> >>>>>>>> device_model_version="qemu-xen"
> >>>>>>>> viridian=1
> >>>>>>>> vnc=0
> >>>>>>>> keymap="it"
> >>>>>>>> on_crash="destroy"
> >>>>>>>> vga="qxl"
> >>>>>>>> spice=1
> >>>>>>>> spicehost='0.0.0.0'
> >>>>>>>> spiceport=6003
> >>>>>>>> spicedisable_ticketing=1
> >>>>>>>> spicevdagent=1
> >>>>>>>> spice_clipboard_sharing=0
> >>>>>>>> spiceusbredirection=4
> >>>>>>>> soundhw="hda"
> >>>>>>>> localtime=1
> >>>>>>>> usbversion=2
> >>>>>>> I tried also disabling qxl, vdagent, audio and usb:
> >>>>>>>> name='W7-02'
> >>>>>>>> builder="hvm"
> >>>>>>>> memory=2048
> >>>>>>>> vcpus=2
> >>>>>>>> vif=['bridge=xenbr0,mac=00:16:3e:42:a2:5f']
> >>>>>>>> disk=['/mnt/vm/disks/W7-
> >> 02.disk1.xm,raw,hda,rw',',raw,hdb,ro,cdrom']
> >>>>>>>> boot='dc'
> >>>>>>>> device_model_version="qemu-xen"
> >>>>>>>> viridian=1
> >>>>>>>> vnc=0
> >>>>>>>> keymap="it"
> >>>>>>>> on_crash="destroy"
> >>>>>>>> vga="stdvga"
> >>>>>>>> spice=1
> >>>>>>>> spicehost='0.0.0.0'
> >>>>>>>> spiceport=6003
> >>>>>>>> spicedisable_ticketing=1
> >>>>>>>> spicevdagent=0
> >>>>>>>> spice_clipboard_sharing=0
> >>>>>>>> #spiceusbredirection=4
> >>>>>>>> #soundhw="hda"
> >>>>>>>> localtime=1
> >>>>>>>> #usbversion=2
> >>>>>>> But I had same problems.
> >>>>>>> Dom0 is wheezy with xen-unstable of some days ago plus some
> libxl
> >>>>>>> patch
> >>>>>>> (https://github.com/Fantu/Xen/tree/rebase/m2r-staging) and
> qemu
> >>>>> 2.1.1
> >>>>>>> Now I'll try also with W8.
> >>>>>>>
> >>>>>>> If you need more details and/or tests tell me and I'll post them.
> >>>>>>>
> >>>>>> If you could enable xen_platform_log in QEMU then the QEMU log
> >> should
> >>>>> tell us what's going on. If you don't know how to do that then the
> >>>>> way I do it
> >>>>> is to create a file called 'events' under /tmp populated with the
> >>>>> single line:
> >>>>>> xen_platform_log
> >>>>>>
> >>>>>> and then I add:
> >>>>>>
> >>>>>> device_model_args=[ "-trace", "events=/tmp/events"]
> >>>>>>
> >>>>>> to my config. QEMU by default is built to send traces to stderr, so
> >>>>>> you
> >>>>> should see the log entries appear in /var/log/xen/qemu-dm-<vm
> >>>>> name>.log.
> >>>>>> Did you try installing the drivers in a fresh VM? It's possible
> >>>>>> that there is still
> >>>>> some remnant of the GPLPV drivers around - uninstalling drivers on
> >>>>> Windows
> >>>>> is tricky.
> >>>>> Thanks for reply.
> >>>>> Tried with trace (log in attachment), with a fast look a saw a strange
> >>>>> mac different from the one setted in cfg.
> >>>>> I tried removing fixed mac in xl cfg but the network card problem
> >>>>> persist.
> >>>>> The old pv should be completly removed, I used also the bat for
> remove
> >>>>> the registry keys and file, not only the unstall from control panel.
> >>>>> I'll try also a clean install ASAP.
> >>>> Your PV storage looks fine, but the problem with your network is here:
> >>>>
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail3
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail2
> >>>> xen_platform_log xen platform:
> >> XENVIF|__FrontendWaitForStateChange:
> >>>> fail1 (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail10
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail9
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail8
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail7
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail6
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail5
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail4
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail3
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail2
> >>>> xen_platform_log xen platform: XENVIF|__FrontendConnect: fail1
> >>>> (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|__PdoD3ToD0: fail1
> (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail2
> >>>> xen_platform_log xen platform: XENVIF|PdoD3ToD0: fail1 (c0000001)
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail7
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail6
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail5
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail4
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail3
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail2
> >>>> xen_platform_log xen platform: XENVIF|PdoStartDevice: fail1
> (c0000001)
> >>>>
> >>>> What this means is that your frontend waited for a very very long
> >>>> time for your backend to go connected, and it failed to do so. It
> >>>> then  give up and you get the above cascade of error logging. I
> >>>> suspect the problem is a lack of the following netback fix:
> >>>>
> >>>> commit 279f438e36c0a70b23b86d2090aeec50155034a9
> >>>> Author: Paul Durrant <Paul.Durrant@citrix.com>
> >>>> Date:   Tue Sep 17 17:46:08 2013 +0100
> >>>>
> >>>>       xen-netback: Don't destroy the netdev until the vif is shut down
> >>>>
> >>>>       Without this patch, if a frontend cycles through states Closing
> >>>>       and Closed (which Windows frontends need to do) then the netdev
> >>>>       will be destroyed and requires re-invocation of hotplug scripts
> >>>>       to restore state before the frontend can move to Connected. Thus
> >>>>       when udev is not in use the backend gets stuck in InitWait.
> >>>>
> >>>>       With this patch, the netdev is left alone whilst the backend is
> >>>>       still online and is only de-registered and freed just prior to
> >>>>       destroying the vif (which is also nicely symmetrical with the
> >>>>       netdev allocation and registration being done during probe) so
> >>>>       no re-invocation of hotplug scripts is required.
> >>>>
> >>>>       Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> >>>>       Cc: David Vrabel <david.vrabel@citrix.com>
> >>>>       Cc: Wei Liu <wei.liu2@citrix.com>
> >>>>       Cc: Ian Campbell <ian.campbell@citrix.com>
> >>>>       Acked-by: Wei Liu <wei.liu2@citrix.com>
> >>>>       Signed-off-by: David S. Miller <davem@davemloft.net>
> >>> I found it applied upstream:
> >>> https://git.kernel.org/cgit/linux/kernel/git/next/linux-
> >> next.git/commit/?id=279f438e36c0a70b23b86d2090aeec50155034a9
> >>> But not in 3.2-stable branch, I tried to apply it on latest Wheezy
> >>> (debian 7) kernel source but there are too many difference and I was
> >>> unable to apply it manually.
> >>> Can someone give me advices please?
> >>>
> >>> Use kernel from wheezy-backports (3.14+59~bpo70+1) can be a good
> thing
> >>> and very reliable? I plain to use new versions also in production ASAP
> >>> (if I can solve theoccasional network crash on windows I have with
> >>> gplpv and hope to solve with these drivers), with the agent lite of
> >>> these drivers should finally solves also the post-restore problem of
> >>> time(and users unable to login) with the windows domUs in a domain.
> >>> Now I'll do a fast test with kernel for backports to solves if solves
> >>> the problem.
> >>>
> >>> Thanks for any reply and sorry for my bad english.
> >> I tried the kernel from backports and solves the network and very long
> >> boot time problem.
> >> The xen agent lite problem still persist instead, on my latest test on
> >> windows 7 show xenlite service running but xl shutdown and update time
> >> on restore are still not working :(
> >> I not saw an agent error in windows events log but I saw this error:
> >> the BIOS ACPI not contains a IRQ for the device in PCI slot 6 function 0
> >> With hwinfo I saw that is realtek emulated network card, is it correctly
> >> since pv driver is in use?
> >>
> > Can you send the qemu log again? If you are still seeing the realtek device
> in the guest it suggests your PV frontend is still not installed correctly.
> 
> Log in attachment.
> The windows device management still show realtek even if is not used
> (show error 12 - resources conflict on it), xen pv network device
> instead now is showed ok and is working.
> 

Hmm. That looks like a bug has crept in. In the log I can see:

xen_platform_log xen platform: XENFILT|PdoCreate: FFFFFA80016F85D0 (PCI\VEN_10EC&DEV_8139&SUBSYS_11001AF4&REV_20\30)

(which is the realtek device). The unplug then happens later but the device has already been exposed to the Windows PnP subsystem - the unplug needs to come earlier. I suspect this may have broken things...

commit cba6dad2df306885dfc65908f14ce6e2d8a86211
Author: Paul Durrant <paul.durrant@citrix.com>
Date:   Fri Sep 5 17:58:51 2014 +0100

    Update active device's instance id at point of PDO filter creation

    It's tidier to have xenfilt simply return its own versions of device and
    instance id when it intercepts IRP_MN_QUERY_ID. The override of the instance
    id can be done and logged once when the PDO filter device object is created.
    This patch does that, and also replaces the rather vacuuous Name field in
    the filter device object extensions with DeviceID and InstanceID fields.

    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>

I'll have a look and see what needs fixing.

> >
> > I think there's a compatibility problem. What happens if you simply
> xenstore_write "halt" into control/shutdown. (xl appears to write
> "poweroff" instead).
> 
> Here I not understand if is something I must try and post the result or
> you already found the exacly problem.
> 

I was suggesting a workaround for you. I know what the problem is; I'll submit a patch shortly.

  Paul

> Thanks for any reply.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 13:57:22 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 13:57:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX9Xt-00065U-AF; Thu, 25 Sep 2014 13:57:21 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX9Xr-00065P-TU
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 13:57:20 +0000
Received: from [85.158.137.68:61335] by server-5.bemta-3.messagelabs.com id
	D1/44-30889-C3F14245; Thu, 25 Sep 2014 13:57:16 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1411653436!12028219!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15544 invoked from network); 25 Sep 2014 13:57:16 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 13:57:16 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25291158"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIADMtHQ
Date: Thu, 25 Sep 2014 13:57:03 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
In-Reply-To: <54218BB1.2070806@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> > in <module
> > >
> >     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> > in msbuild
> >
> >     status = shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> > in shell
> >     print(line.rstrip())
> >   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> > UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> > position
> > 28: character maps to <undefined>
> 

I believe I have figured this one out. I think it is the use of universal_newlines=True in the subprocess.Popen() call. Googling around, it appears  this is unsafe (for at least some versions of python) if the system default encoding is unicode. I think the problem can just be avoided by not setting universal_newlines, but I think the byte string coming back from Popen should also be decoded with the system default encoding before being displayed. I'll send a patch shortly.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 13:57:22 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 13:57:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XX9Xt-00065U-AF; Thu, 25 Sep 2014 13:57:21 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XX9Xr-00065P-TU
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 13:57:20 +0000
Received: from [85.158.137.68:61335] by server-5.bemta-3.messagelabs.com id
	D1/44-30889-C3F14245; Thu, 25 Sep 2014 13:57:16 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-31.messagelabs.com!1411653436!12028219!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15544 invoked from network); 25 Sep 2014 13:57:16 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-7.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 13:57:16 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25291158"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIADMtHQ
Date: Thu, 25 Sep 2014 13:57:03 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
In-Reply-To: <54218BB1.2070806@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
[snip]
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> > in <module
> > >
> >     build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> > in msbuild
> >
> >     status = shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> > in shell
> >     print(line.rstrip())
> >   File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> > UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> > position
> > 28: character maps to <undefined>
> 

I believe I have figured this one out. I think it is the use of universal_newlines=True in the subprocess.Popen() call. Googling around, it appears  this is unsafe (for at least some versions of python) if the system default encoding is unicode. I think the problem can just be avoided by not setting universal_newlines, but I think the byte string coming back from Popen should also be decoded with the system default encoding before being displayed. I'll send a patch shortly.

  Paul

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 14:39:45 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 14:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXACv-0000cm-Jm; Thu, 25 Sep 2014 14:39:45 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXACu-0000cT-71
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 14:39:44 +0000
Received: from [85.158.137.68:33873] by server-5.bemta-3.messagelabs.com id
	6B/01-30889-E2924245; Thu, 25 Sep 2014 14:39:42 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411655980!11988413!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9398 invoked from network); 25 Sep 2014 14:39:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 14:39:41 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="176142582"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 10:39:39 -0400
Received: from fountains.uk.xensource.com ([10.80.2.29]
	helo=localhost.localdomain)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <paul.durrant@citrix.com>)	id 1XXACp-0002wd-CR;
	Thu, 25 Sep 2014 15:39:39 +0100
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 15:39:56 +0100
Message-ID: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
	subprocess.Popen()
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

For some versions of python this appears to cause corruption of the
output byte string by forcibly decoding with the wrong encoding.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 build.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/build.py b/build.py
index c1d01b1..c03803a 100644
--- a/build.py
+++ b/build.py
@@ -93,11 +93,10 @@ def shell(command, dir):
     
     sub = subprocess.Popen(' '.join(command), cwd=dir,
                            stdout=subprocess.PIPE,
-                           stderr=subprocess.STDOUT, 
-                           universal_newlines=True)
+                           stderr=subprocess.STDOUT)
 
     for line in sub.stdout:
-        print(line.rstrip())
+        print(line.decode(sys.getdefaultencoding()).rstrip())
 
     sub.wait()
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 14:39:45 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 14:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXACv-0000cm-Jm; Thu, 25 Sep 2014 14:39:45 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXACu-0000cT-71
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 14:39:44 +0000
Received: from [85.158.137.68:33873] by server-5.bemta-3.messagelabs.com id
	6B/01-30889-E2924245; Thu, 25 Sep 2014 14:39:42 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-31.messagelabs.com!1411655980!11988413!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 9398 invoked from network); 25 Sep 2014 14:39:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-4.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 14:39:41 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="176142582"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 10:39:39 -0400
Received: from fountains.uk.xensource.com ([10.80.2.29]
	helo=localhost.localdomain)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <paul.durrant@citrix.com>)	id 1XXACp-0002wd-CR;
	Thu, 25 Sep 2014 15:39:39 +0100
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 15:39:56 +0100
Message-ID: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
	subprocess.Popen()
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

For some versions of python this appears to cause corruption of the
output byte string by forcibly decoding with the wrong encoding.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 build.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/build.py b/build.py
index c1d01b1..c03803a 100644
--- a/build.py
+++ b/build.py
@@ -93,11 +93,10 @@ def shell(command, dir):
     
     sub = subprocess.Popen(' '.join(command), cwd=dir,
                            stdout=subprocess.PIPE,
-                           stderr=subprocess.STDOUT, 
-                           universal_newlines=True)
+                           stderr=subprocess.STDOUT)
 
     for line in sub.stdout:
-        print(line.rstrip())
+        print(line.decode(sys.getdefaultencoding()).rstrip())
 
     sub.wait()
 
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:12:32 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:12:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXAie-0002qo-0U; Thu, 25 Sep 2014 15:12:32 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXAid-0002qd-1d
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 15:12:31 +0000
Received: from [85.158.143.35:56152] by server-3.bemta-4.messagelabs.com id
	87/A0-06192-ED034245; Thu, 25 Sep 2014 15:12:30 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-21.messagelabs.com!1411657948!4659938!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15034 invoked from network); 25 Sep 2014 15:12:29 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-13.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:12:29 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="175133955"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 11:12:14 -0400
Received: from fountains.uk.xensource.com ([10.80.2.29]
	helo=localhost.localdomain)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <paul.durrant@citrix.com>)	id 1XXAiM-0003X6-MT;
	Thu, 25 Sep 2014 16:12:14 +0100
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:12:31 +0100
Message-ID: <1411657951-9444-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Reduce spam from build.py
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

We don't the verbose prints when deciding whether we're using vs2012 or 2013.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 build.py | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/build.py b/build.py
index c03803a..5368181 100644
--- a/build.py
+++ b/build.py
@@ -313,10 +313,7 @@ def archive(filename, files, tgz=False):
 def getVsVersion():
     vsenv ={} 
     vars = subprocess.check_output([os.environ['VS']+'\\VC\\vcvarsall.bat', '&&', 'set'], shell=True)
-    print( vars)
     for var in vars.splitlines():
-        print (var)
-        print (var.strip())
         k, _, v = map(str.strip, var.strip().decode('utf-8').partition('='))
         if k.startswith('?'):
             continue
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:12:32 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:12:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXAie-0002qo-0U; Thu, 25 Sep 2014 15:12:32 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXAid-0002qd-1d
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 15:12:31 +0000
Received: from [85.158.143.35:56152] by server-3.bemta-4.messagelabs.com id
	87/A0-06192-ED034245; Thu, 25 Sep 2014 15:12:30 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-21.messagelabs.com!1411657948!4659938!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15034 invoked from network); 25 Sep 2014 15:12:29 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-13.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:12:29 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="175133955"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 11:12:14 -0400
Received: from fountains.uk.xensource.com ([10.80.2.29]
	helo=localhost.localdomain)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <paul.durrant@citrix.com>)	id 1XXAiM-0003X6-MT;
	Thu, 25 Sep 2014 16:12:14 +0100
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:12:31 +0100
Message-ID: <1411657951-9444-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.1.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH] Reduce spam from build.py
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

We don't the verbose prints when deciding whether we're using vs2012 or 2013.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 build.py | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/build.py b/build.py
index c03803a..5368181 100644
--- a/build.py
+++ b/build.py
@@ -313,10 +313,7 @@ def archive(filename, files, tgz=False):
 def getVsVersion():
     vsenv ={} 
     vars = subprocess.check_output([os.environ['VS']+'\\VC\\vcvarsall.bat', '&&', 'set'], shell=True)
-    print( vars)
     for var in vars.splitlines():
-        print (var)
-        print (var.strip())
         k, _, v = map(str.strip, var.strip().decode('utf-8').partition('='))
         if k.startswith('?'):
             continue
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:18:50 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:18:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXAok-0003OL-Rs; Thu, 25 Sep 2014 15:18:50 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXAoj-0003Nx-NK
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 15:18:49 +0000
Received: from [193.109.254.147:51720] by server-3.bemta-14.messagelabs.com id
	EF/3A-23707-95234245; Thu, 25 Sep 2014 15:18:49 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1411658328!13056790!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7547 invoked from network); 25 Sep 2014 15:18:48 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:18:48 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25294468"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Paul Durrant <Paul.Durrant@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
	subprocess.Popen()
Thread-Index: AQHP2M6WmwhUci17v0uvLcWojZthSZwR9lwg
Date: Thu, 25 Sep 2014 15:18:46 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0491D07@AMSPEX01CL01.citrite.net>
References: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
In-Reply-To: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] [PATCH] Don't use universal_newlines=True
	in	subprocess.Popen()
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> Sent: 25 September 2014 15:40
> To: win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
> subprocess.Popen()
> 
> For some versions of python this appears to cause corruption of the
> output byte string by forcibly decoding with the wrong encoding.
> 
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>

I will apply this fix to all other repo build scripts too.

  Paul

> ---
>  build.py | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/build.py b/build.py
> index c1d01b1..c03803a 100644
> --- a/build.py
> +++ b/build.py
> @@ -93,11 +93,10 @@ def shell(command, dir):
> 
>      sub = subprocess.Popen(' '.join(command), cwd=dir,
>                             stdout=subprocess.PIPE,
> -                           stderr=subprocess.STDOUT,
> -                           universal_newlines=True)
> +                           stderr=subprocess.STDOUT)
> 
>      for line in sub.stdout:
> -        print(line.rstrip())
> +        print(line.decode(sys.getdefaultencoding()).rstrip())
> 
>      sub.wait()
> 
> --
> 2.1.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:18:50 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:18:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXAok-0003OL-Rs; Thu, 25 Sep 2014 15:18:50 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXAoj-0003Nx-NK
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 15:18:49 +0000
Received: from [193.109.254.147:51720] by server-3.bemta-14.messagelabs.com id
	EF/3A-23707-95234245; Thu, 25 Sep 2014 15:18:49 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1411658328!13056790!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
	Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7547 invoked from network); 25 Sep 2014 15:18:48 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:18:48 -0000
X-IronPort-AV: E=Sophos;i="5.04,597,1406592000"; d="scan'208";a="25294468"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Paul Durrant <Paul.Durrant@citrix.com>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
	subprocess.Popen()
Thread-Index: AQHP2M6WmwhUci17v0uvLcWojZthSZwR9lwg
Date: Thu, 25 Sep 2014 15:18:46 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0491D07@AMSPEX01CL01.citrite.net>
References: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
In-Reply-To: <1411655996-9904-1-git-send-email-paul.durrant@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Subject: Re: [win-pv-devel] [PATCH] Don't use universal_newlines=True
	in	subprocess.Popen()
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: win-pv-devel-bounces@lists.xenproject.org [mailto:win-pv-devel-
> bounces@lists.xenproject.org] On Behalf Of Paul Durrant
> Sent: 25 September 2014 15:40
> To: win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant
> Subject: [win-pv-devel] [PATCH] Don't use universal_newlines=True in
> subprocess.Popen()
> 
> For some versions of python this appears to cause corruption of the
> output byte string by forcibly decoding with the wrong encoding.
> 
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>

I will apply this fix to all other repo build scripts too.

  Paul

> ---
>  build.py | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/build.py b/build.py
> index c1d01b1..c03803a 100644
> --- a/build.py
> +++ b/build.py
> @@ -93,11 +93,10 @@ def shell(command, dir):
> 
>      sub = subprocess.Popen(' '.join(command), cwd=dir,
>                             stdout=subprocess.PIPE,
> -                           stderr=subprocess.STDOUT,
> -                           universal_newlines=True)
> +                           stderr=subprocess.STDOUT)
> 
>      for line in sub.stdout:
> -        print(line.rstrip())
> +        print(line.decode(sys.getdefaultencoding()).rstrip())
> 
>      sub.wait()
> 
> --
> 2.1.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@lists.xenproject.org
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:54:55 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:54:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBNf-0000z6-JY; Thu, 25 Sep 2014 15:54:55 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XXBNe-0000yq-F5; Thu, 25 Sep 2014 15:54:54 +0000
Received: from [85.158.143.35:41687] by server-2.bemta-4.messagelabs.com id
	27/E5-04525-DCA34245; Thu, 25 Sep 2014 15:54:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411660491!11908354!1
X-Originating-IP: [209.85.160.175]
X-SpamReason: No, hits=0.6 required=7.0 tests=HTML_40_50,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 696 invoked from network); 25 Sep 2014 15:54:52 -0000
Received: from mail-yk0-f175.google.com (HELO mail-yk0-f175.google.com)
	(209.85.160.175)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:54:52 -0000
Received: by mail-yk0-f175.google.com with SMTP id 20so3507458yks.20
	for <multiple recipients>; Thu, 25 Sep 2014 08:54:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=content-type:mime-version:subject:from:in-reply-to:date:cc
	:message-id:references:to;
	bh=uqghXD7Xm7+0i5nMnZShmcjD15HFiIrbh9Nfh0VrlOc=;
	b=KQyQmgjRSXPuulhbgFc7hq1Kef5qZqiAGRI1bfkbIW+rm6C87iTsskEA4iCJo884X5
	n+EnujUx+uUsZeRV59d4yTM82XixOPf6auFDUROZ2ZWqRaC2w4WaTyibZl4HjmLnn4NK
	0FCietouiCBTIHo/HNinIN1r+fvUy8ZoA2OHFpjbAnUxzCa4/fcpccLfM4uZWy9PT81E
	w1Kp4nuTxPb0ASv6quPTmtUnFipfeRTdKXSYLF4RfZ4ZT0lUsFJN+592HX92z6H8tGc4
	MJ1T8eQTFoEQnofBIJuKaWc/f5pj5FK7wHE6UKgM7oTU6Ebft7ZNvYz8b504NlOOdYkG
	Cecg==
X-Received: by 10.236.90.78 with SMTP id d54mr390374yhf.182.1411660491350;
	Thu, 25 Sep 2014 08:54:51 -0700 (PDT)
Received: from [10.80.114.159] ([185.25.64.249])
	by mx.google.com with ESMTPSA id d32sm1212356yhq.29.2014.09.25.08.54.49
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 08:54:50 -0700 (PDT)
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Lars Kurth <lars.kurth.xen@gmail.com>
In-Reply-To: <CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
Date: Thu, 25 Sep 2014 16:54:46 +0100
Message-Id: <543CFFED-8836-4D28-9314-CE9BDEF08538@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<20140919191400.GC14124@laptop.dumpdata.com>
	<CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
To: Grant McWilliams <grantmasterflash@gmail.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Olivier Lambert <lambert.olivier@gmail.com>
X-Mailer: Apple Mail (2.1878.6)
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>,
	artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
	Project Developer Summit / User Summit (please respond by end
	of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3830671617710132635=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============3830671617710132635==
Content-Type: multipart/alternative; boundary="Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51"


--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Seems that we all are generally in agreement. So I will get back to the =
Advisory board for funding.
Regards
Lars

On 21 Sep 2014, at 16:16, Grant McWilliams <grantmasterflash@gmail.com> =
wrote:

>=20
>=20
> > But we need to make a decision pretty soon. My thinking was the =
following:
> > * Developer Summit on 20 & 21st
> > * Developer Meeting, Board Meetings, Hackspace and Working Group =
would be held on the 19th.
> > * We could also have a User Focussed Day on the 19th - the =
limitation is that on the 19th we cannot get rooms holding more than 60 =
people
> > * Try to do something together with KVM Forum (E.g. a joint social =
event or something - assuming they buy into it and decide for Seattle, =
or a joint Hackathon)
>=20
> I like. Perhaps the Xen User Summit doesn't need a room holding more =
than 60 people?

Agreed.

>=20
> Where is the LinuxCon going to be held in Seattle? Perhaps there's =
something close we could use that would have a room large enough?

In one of the hotels or conference centres.  Of course we could also =
consider an off-site location, but that tends to be more expensive.


On 22 Sep 2014, at 13:49, Olivier Lambert <lambert.olivier@gmail.com> =
wrote:

> FOSDEM in Europe + LinuxCon US is a good combo for Xen :) (like it was =
in 2013)
>=20
> So +1

Actually in 2013, we had FOSDEM in the EU and LinuxCon in the EU

Regards
Lars=

--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Seems =
that we all are generally in agreement. So I will get back to the =
Advisory board for =
funding.<div>Regards</div><div>Lars</div><div><br><div><div>On 21 Sep =
2014, at 16:16, Grant McWilliams &lt;<a =
href=3D"mailto:grantmasterflash@gmail.com">grantmasterflash@gmail.com</a>&=
gt; wrote:</div><br class=3D"Apple-interchange-newline"><blockquote =
type=3D"cite"><div dir=3D"ltr"><div class=3D"gmail_extra"><div =
class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0 =
0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span =
class=3D""><br><br>
&gt; But we need to make a decision pretty soon. My thinking was the =
following:<br>
&gt; * Developer Summit on 20 &amp; 21st<br>
&gt; * Developer Meeting, Board Meetings, Hackspace and Working Group =
would be held on the 19th.<br>
&gt; * We could also have a User Focussed Day on the 19th - the =
limitation is that on the 19th we cannot get rooms holding more than 60 =
people<br>
&gt; * Try to do something together with KVM Forum (E.g. a joint social =
event or something - assuming they buy into it and decide for Seattle, =
or a joint Hackathon)<br></span></blockquote><div><br></div><div>I like. =
Perhaps the Xen User Summit doesn't need a room holding more than 60 =
people?</div></div></div></div></blockquote><div><br></div>Agreed.</div><d=
iv><br><blockquote type=3D"cite"><div dir=3D"ltr"><div =
class=3D"gmail_extra"><div class=3D"gmail_quote"><div><br></div><div>Where=
 is the LinuxCon going to be held in Seattle? Perhaps there's something =
close we could use that would have a room large =
enough?</div></div></div></div></blockquote><div><br></div>In one of the =
hotels or conference centres. &nbsp;Of course we could also consider an =
off-site location, but that tends to be more =
expensive.</div><div><br></div><div><br></div></div><div><div>On 22 Sep =
2014, at 13:49, Olivier Lambert &lt;<a =
href=3D"mailto:lambert.olivier@gmail.com">lambert.olivier@gmail.com</a>&gt=
; wrote:</div><br class=3D"Apple-interchange-newline"><blockquote =
type=3D"cite">FOSDEM in Europe + LinuxCon US is a good combo for Xen :) =
(like it was in 2013)<br><br>So =
+1<br></blockquote><br></div><div>Actually in 2013, we had FOSDEM in the =
EU and LinuxCon in the =
EU</div><div><br></div><div>Regards</div><div>Lars</div></body></html>=

--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51--


--===============3830671617710132635==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============3830671617710132635==--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 15:54:55 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 15:54:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBNf-0000z6-JY; Thu, 25 Sep 2014 15:54:55 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <lars.kurth.xen@gmail.com>)
	id 1XXBNe-0000yq-F5; Thu, 25 Sep 2014 15:54:54 +0000
Received: from [85.158.143.35:41687] by server-2.bemta-4.messagelabs.com id
	27/E5-04525-DCA34245; Thu, 25 Sep 2014 15:54:53 +0000
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1411660491!11908354!1
X-Originating-IP: [209.85.160.175]
X-SpamReason: No, hits=0.6 required=7.0 tests=HTML_40_50,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,spamassassin: 
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 696 invoked from network); 25 Sep 2014 15:54:52 -0000
Received: from mail-yk0-f175.google.com (HELO mail-yk0-f175.google.com)
	(209.85.160.175)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 15:54:52 -0000
Received: by mail-yk0-f175.google.com with SMTP id 20so3507458yks.20
	for <multiple recipients>; Thu, 25 Sep 2014 08:54:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=content-type:mime-version:subject:from:in-reply-to:date:cc
	:message-id:references:to;
	bh=uqghXD7Xm7+0i5nMnZShmcjD15HFiIrbh9Nfh0VrlOc=;
	b=KQyQmgjRSXPuulhbgFc7hq1Kef5qZqiAGRI1bfkbIW+rm6C87iTsskEA4iCJo884X5
	n+EnujUx+uUsZeRV59d4yTM82XixOPf6auFDUROZ2ZWqRaC2w4WaTyibZl4HjmLnn4NK
	0FCietouiCBTIHo/HNinIN1r+fvUy8ZoA2OHFpjbAnUxzCa4/fcpccLfM4uZWy9PT81E
	w1Kp4nuTxPb0ASv6quPTmtUnFipfeRTdKXSYLF4RfZ4ZT0lUsFJN+592HX92z6H8tGc4
	MJ1T8eQTFoEQnofBIJuKaWc/f5pj5FK7wHE6UKgM7oTU6Ebft7ZNvYz8b504NlOOdYkG
	Cecg==
X-Received: by 10.236.90.78 with SMTP id d54mr390374yhf.182.1411660491350;
	Thu, 25 Sep 2014 08:54:51 -0700 (PDT)
Received: from [10.80.114.159] ([185.25.64.249])
	by mx.google.com with ESMTPSA id d32sm1212356yhq.29.2014.09.25.08.54.49
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Thu, 25 Sep 2014 08:54:50 -0700 (PDT)
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Lars Kurth <lars.kurth.xen@gmail.com>
In-Reply-To: <CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
Date: Thu, 25 Sep 2014 16:54:46 +0100
Message-Id: <543CFFED-8836-4D28-9314-CE9BDEF08538@gmail.com>
References: <0A5E6666-E532-4C0B-A72E-ECD4AB1113EA@gmail.com>
	<20140919191400.GC14124@laptop.dumpdata.com>
	<CAGnmK4z61=_bTcKCZG9yk5hJSKCBwH+QVsOxcq+87jE7GddaNQ@mail.gmail.com>
To: Grant McWilliams <grantmasterflash@gmail.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Olivier Lambert <lambert.olivier@gmail.com>
X-Mailer: Apple Mail (2.1878.6)
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	win-pv-devel@lists.xenproject.org,
	Xen API mailing list <xen-api@lists.xen.org>,
	artem Mygaiev <artem.mygaiev@globallogic.com>,
	mirageos-devel@xenproject.org
Subject: Re: [win-pv-devel] [Xen-API] [Xen-devel] Location of next Xen
	Project Developer Summit / User Summit (please respond by end
	of September)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3830671617710132635=="
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org


--===============3830671617710132635==
Content-Type: multipart/alternative; boundary="Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51"


--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Seems that we all are generally in agreement. So I will get back to the =
Advisory board for funding.
Regards
Lars

On 21 Sep 2014, at 16:16, Grant McWilliams <grantmasterflash@gmail.com> =
wrote:

>=20
>=20
> > But we need to make a decision pretty soon. My thinking was the =
following:
> > * Developer Summit on 20 & 21st
> > * Developer Meeting, Board Meetings, Hackspace and Working Group =
would be held on the 19th.
> > * We could also have a User Focussed Day on the 19th - the =
limitation is that on the 19th we cannot get rooms holding more than 60 =
people
> > * Try to do something together with KVM Forum (E.g. a joint social =
event or something - assuming they buy into it and decide for Seattle, =
or a joint Hackathon)
>=20
> I like. Perhaps the Xen User Summit doesn't need a room holding more =
than 60 people?

Agreed.

>=20
> Where is the LinuxCon going to be held in Seattle? Perhaps there's =
something close we could use that would have a room large enough?

In one of the hotels or conference centres.  Of course we could also =
consider an off-site location, but that tends to be more expensive.


On 22 Sep 2014, at 13:49, Olivier Lambert <lambert.olivier@gmail.com> =
wrote:

> FOSDEM in Europe + LinuxCon US is a good combo for Xen :) (like it was =
in 2013)
>=20
> So +1

Actually in 2013, we had FOSDEM in the EU and LinuxCon in the EU

Regards
Lars=

--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Seems =
that we all are generally in agreement. So I will get back to the =
Advisory board for =
funding.<div>Regards</div><div>Lars</div><div><br><div><div>On 21 Sep =
2014, at 16:16, Grant McWilliams &lt;<a =
href=3D"mailto:grantmasterflash@gmail.com">grantmasterflash@gmail.com</a>&=
gt; wrote:</div><br class=3D"Apple-interchange-newline"><blockquote =
type=3D"cite"><div dir=3D"ltr"><div class=3D"gmail_extra"><div =
class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0 =
0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span =
class=3D""><br><br>
&gt; But we need to make a decision pretty soon. My thinking was the =
following:<br>
&gt; * Developer Summit on 20 &amp; 21st<br>
&gt; * Developer Meeting, Board Meetings, Hackspace and Working Group =
would be held on the 19th.<br>
&gt; * We could also have a User Focussed Day on the 19th - the =
limitation is that on the 19th we cannot get rooms holding more than 60 =
people<br>
&gt; * Try to do something together with KVM Forum (E.g. a joint social =
event or something - assuming they buy into it and decide for Seattle, =
or a joint Hackathon)<br></span></blockquote><div><br></div><div>I like. =
Perhaps the Xen User Summit doesn't need a room holding more than 60 =
people?</div></div></div></div></blockquote><div><br></div>Agreed.</div><d=
iv><br><blockquote type=3D"cite"><div dir=3D"ltr"><div =
class=3D"gmail_extra"><div class=3D"gmail_quote"><div><br></div><div>Where=
 is the LinuxCon going to be held in Seattle? Perhaps there's something =
close we could use that would have a room large =
enough?</div></div></div></div></blockquote><div><br></div>In one of the =
hotels or conference centres. &nbsp;Of course we could also consider an =
off-site location, but that tends to be more =
expensive.</div><div><br></div><div><br></div></div><div><div>On 22 Sep =
2014, at 13:49, Olivier Lambert &lt;<a =
href=3D"mailto:lambert.olivier@gmail.com">lambert.olivier@gmail.com</a>&gt=
; wrote:</div><br class=3D"Apple-interchange-newline"><blockquote =
type=3D"cite">FOSDEM in Europe + LinuxCon US is a good combo for Xen :) =
(like it was in 2013)<br><br>So =
+1<br></blockquote><br></div><div>Actually in 2013, we had FOSDEM in the =
EU and LinuxCon in the =
EU</div><div><br></div><div>Regards</div><div>Lars</div></body></html>=

--Apple-Mail=_8094C6E4-AE07-4CCE-80F0-FF05769FCC51--


--===============3830671617710132635==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
--===============3830671617710132635==--


From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:00:33 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:00:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBT6-0002An-Hk; Thu, 25 Sep 2014 16:00:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBT4-0002Ag-RK
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:00:30 +0000
Received: from [85.158.137.68:59061] by server-7.bemta-3.messagelabs.com id
	2C/96-01084-E1C34245; Thu, 25 Sep 2014 16:00:30 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411660827!12074889!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13882 invoked from network); 25 Sep 2014 16:00:29 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:00:29 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="175157903"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:22 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSw-0004M6-Ar;
	Thu, 25 Sep 2014 17:00:22 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:16 +0100
Message-ID: <1411660758-12578-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 1/3] Prepare SCSIOP_UNMAP correctly
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP requests contain a list of extents to discard
and each BLKIF_OP_DISCARD only handles a single extent.
Break a SRB down into multiple ring requests as necessary.

Changes for v2:
* use byteswap intrinsics

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

diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 9762944..3f18621 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -1452,26 +1452,60 @@ PrepareUnmap(
     __in PSCSI_REQUEST_BLOCK     Srb
     )
 {
-    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
-    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
-    if (Request == NULL)
-        return STATUS_UNSUCCESSFUL;
+    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
+    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
+    ULONG               Count = _byteswap_ushort((*(PUSHORT)Unmap->DataLength) /
+                                                 (*(PUSHORT)Unmap->BlockDescrDataLength));
+    ULONG               Index;
+    LIST_ENTRY          List;
 
-    SrbExt->Count = 1;
-    // mark the SRB as pending, completion will check for pending to detect failures
+    InitializeListHead(&List);
+    SrbExt->Count = 0;
     Srb->SrbStatus = SRB_STATUS_PENDING;
 
-    Request->Srb        = Srb;
-    Request->Id         = PdoGetTag(Pdo);
-    Request->Operation  = BLKIF_OP_DISCARD;
-    Request->FirstSector = Cdb_LogicalBlock(Srb);
-    Request->NrSectors   = Cdb_TransferBlock(Srb);
-    Request->Flags       = 0;
-    InitializeListHead(&Request->Segments);
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
+        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo->RequestList);
+        if (Request == NULL)
+            goto fail1;
+
+        ++SrbExt->Count;
+        InsertTailList(&List, &Request->Entry);
+
+        Request->Srb            = Srb;
+        Request->Id             = PdoGetTag(Pdo);
+        Request->Operation      = BLKIF_OP_DISCARD;
+        Request->FirstSector    = _byteswap_uint64(*(PULONG64)Descr->StartingLba);
+        Request->NrSectors      = _byteswap_ulong(*(PULONG)Descr->LbaCount);
+        Request->Flags          = 0;
+        InitializeListHead(&Request->Segments);
+    }
+
+    while (!IsListEmpty(&List)) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        ASSERT3P(Entry, !=, &List);
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __PdoIncBlkifOpCount(Pdo, Request);
+        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+    }
 
-    __PdoIncBlkifOpCount(Pdo, Request);
-    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
     return STATUS_SUCCESS;
+
+fail1:
+    while (!IsListEmpty(&List)) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        ASSERT3P(Entry, !=, &List);
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __LookasideFree(&Pdo->RequestList, Request);
+        --SrbExt->Count;
+    }
+    return STATUS_NO_MEMORY;
 }
 
 //=============================================================================
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:00:33 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:00:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBT6-0002An-Hk; Thu, 25 Sep 2014 16:00:32 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBT4-0002Ag-RK
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:00:30 +0000
Received: from [85.158.137.68:59061] by server-7.bemta-3.messagelabs.com id
	2C/96-01084-E1C34245; Thu, 25 Sep 2014 16:00:30 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411660827!12074889!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13882 invoked from network); 25 Sep 2014 16:00:29 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:00:29 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="175157903"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:22 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSw-0004M6-Ar;
	Thu, 25 Sep 2014 17:00:22 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:16 +0100
Message-ID: <1411660758-12578-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 1/3] Prepare SCSIOP_UNMAP correctly
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP requests contain a list of extents to discard
and each BLKIF_OP_DISCARD only handles a single extent.
Break a SRB down into multiple ring requests as necessary.

Changes for v2:
* use byteswap intrinsics

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

diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c
index 9762944..3f18621 100644
--- a/src/xenvbd/pdo.c
+++ b/src/xenvbd/pdo.c
@@ -1452,26 +1452,60 @@ PrepareUnmap(
     __in PSCSI_REQUEST_BLOCK     Srb
     )
 {
-    PXENVBD_SRBEXT  SrbExt = GetSrbExt(Srb);
-    PXENVBD_REQUEST Request = __LookasideAlloc(&Pdo->RequestList);
-    if (Request == NULL)
-        return STATUS_UNSUCCESSFUL;
+    PXENVBD_SRBEXT      SrbExt = GetSrbExt(Srb);
+    PUNMAP_LIST_HEADER  Unmap = Srb->DataBuffer;
+    ULONG               Count = _byteswap_ushort((*(PUSHORT)Unmap->DataLength) /
+                                                 (*(PUSHORT)Unmap->BlockDescrDataLength));
+    ULONG               Index;
+    LIST_ENTRY          List;
 
-    SrbExt->Count = 1;
-    // mark the SRB as pending, completion will check for pending to detect failures
+    InitializeListHead(&List);
+    SrbExt->Count = 0;
     Srb->SrbStatus = SRB_STATUS_PENDING;
 
-    Request->Srb        = Srb;
-    Request->Id         = PdoGetTag(Pdo);
-    Request->Operation  = BLKIF_OP_DISCARD;
-    Request->FirstSector = Cdb_LogicalBlock(Srb);
-    Request->NrSectors   = Cdb_TransferBlock(Srb);
-    Request->Flags       = 0;
-    InitializeListHead(&Request->Segments);
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index];
+        PXENVBD_REQUEST         Request = __LookasideAlloc(&Pdo->RequestList);
+        if (Request == NULL)
+            goto fail1;
+
+        ++SrbExt->Count;
+        InsertTailList(&List, &Request->Entry);
+
+        Request->Srb            = Srb;
+        Request->Id             = PdoGetTag(Pdo);
+        Request->Operation      = BLKIF_OP_DISCARD;
+        Request->FirstSector    = _byteswap_uint64(*(PULONG64)Descr->StartingLba);
+        Request->NrSectors      = _byteswap_ulong(*(PULONG)Descr->LbaCount);
+        Request->Flags          = 0;
+        InitializeListHead(&Request->Segments);
+    }
+
+    while (!IsListEmpty(&List)) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        ASSERT3P(Entry, !=, &List);
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __PdoIncBlkifOpCount(Pdo, Request);
+        QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
+    }
 
-    __PdoIncBlkifOpCount(Pdo, Request);
-    QueueAppend(&Pdo->PreparedReqs, &Request->Entry);
     return STATUS_SUCCESS;
+
+fail1:
+    while (!IsListEmpty(&List)) {
+        PXENVBD_REQUEST Request;
+        PLIST_ENTRY     Entry;
+
+        Entry = RemoveHeadList(&List);
+        ASSERT3P(Entry, !=, &List);
+        Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
+        __LookasideFree(&Pdo->RequestList, Request);
+        --SrbExt->Count;
+    }
+    return STATUS_NO_MEMORY;
 }
 
 //=============================================================================
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBX6-0002kq-Pb; Thu, 25 Sep 2014 16:04:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX6-0002kf-CR
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:40 +0000
Received: from [85.158.143.35:52298] by server-1.bemta-4.messagelabs.com id
	52/98-05872-71D34245; Thu, 25 Sep 2014 16:04:39 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1411661076!11984237!2
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20476 invoked from network); 25 Sep 2014 16:04:39 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-10.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:39 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185150"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:23 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSx-0004M6-6k;
	Thu, 25 Sep 2014 17:00:23 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:17 +0100
Message-ID: <1411660758-12578-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

XenVbd's sdv build requires output from XenCrsh's sdv build, reorder 
to make sdv work

Signed-off-by: Owen Smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

---
 build.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.py b/build.py
index d681fb3..26261ad 100644
--- a/build.py
+++ b/build.py
@@ -367,8 +367,8 @@ if __name__ == '__main__':
     symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
-        run_sdv('xenvbd', driver, vs)
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
     archive(driver + '.tar', [driver,'revision'])
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBX6-0002kn-Ot; Thu, 25 Sep 2014 16:04:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX5-0002kU-Is
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:39 +0000
Received: from [85.158.143.35:52220] by server-1.bemta-4.messagelabs.com id
	0D/88-05872-61D34245; Thu, 25 Sep 2014 16:04:38 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1411661076!11984237!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20417 invoked from network); 25 Sep 2014 16:04:38 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-10.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:38 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185136"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:21 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSv-0004M6-9o;
	Thu, 25 Sep 2014 17:00:21 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:15 +0100
Message-ID: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
MIME-Version: 1.0
X-DLP: MIA1
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 0/3] Add trim/discard/unmap support
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP SRBs are not generated by Storport. Add a device upper 
filter (xendisk) to create SCSIOP_UNMAP requests from the appropriate 
IOCTL. Modify the SCSIOP_UNMAP handler in xenvbd to correctly translate
SCSIOP_UNMAP requests into one or more BLKIF_OP_DISCARD requests for the 
ring.
Trim, Discard and Unmap are different names for the same basic operation, 
which is flagging a number of sectors as unused, so that the disk hardware 
can reclaim the sectors in the best way for the disk hardware.

Owen Smith (3):
  Prepare SCSIOP_UNMAP correctly
  Run XenCrsh sdv before XenVbd sdv
  Add XenDisk device upper filter.

 build.py                            |    3 +-
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1862 +++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2079 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   73 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 src/xenvbd/pdo.c                    |   69 +-
 vs2012/package/package.vcxproj      |    3 +
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   28 +
 vs2013/package/package.vcxproj      |    3 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xendisk/xendisk.vcxproj.user |    8 +
 vs2013/xenvbd.sln                   |   28 +
 25 files changed, 5784 insertions(+), 16 deletions(-)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj
 create mode 100644 vs2013/xendisk/xendisk.vcxproj.user

-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBX6-0002kq-Pb; Thu, 25 Sep 2014 16:04:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX6-0002kf-CR
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:40 +0000
Received: from [85.158.143.35:52298] by server-1.bemta-4.messagelabs.com id
	52/98-05872-71D34245; Thu, 25 Sep 2014 16:04:39 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1411661076!11984237!2
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20476 invoked from network); 25 Sep 2014 16:04:39 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-10.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:39 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185150"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:23 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSx-0004M6-6k;
	Thu, 25 Sep 2014 17:00:23 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:17 +0100
Message-ID: <1411660758-12578-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 2/3] Run XenCrsh sdv before XenVbd sdv
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

XenVbd's sdv build requires output from XenCrsh's sdv build, reorder 
to make sdv work

Signed-off-by: Owen Smith <owen.smith@citrix.com>

Acked-by: Paul Durrant <paul.durrant@citrix.com>

---
 build.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.py b/build.py
index d681fb3..26261ad 100644
--- a/build.py
+++ b/build.py
@@ -367,8 +367,8 @@ if __name__ == '__main__':
     symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
-        run_sdv('xenvbd', driver, vs)
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
     archive(driver + '.tar', [driver,'revision'])
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:40 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBX6-0002kn-Ot; Thu, 25 Sep 2014 16:04:40 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX5-0002kU-Is
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:39 +0000
Received: from [85.158.143.35:52220] by server-1.bemta-4.messagelabs.com id
	0D/88-05872-61D34245; Thu, 25 Sep 2014 16:04:38 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1411661076!11984237!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20417 invoked from network); 25 Sep 2014 16:04:38 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-10.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:38 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185136"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:21 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSv-0004M6-9o;
	Thu, 25 Sep 2014 17:00:21 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:15 +0100
Message-ID: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
MIME-Version: 1.0
X-DLP: MIA1
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 0/3] Add trim/discard/unmap support
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

SCSIOP_UNMAP SRBs are not generated by Storport. Add a device upper 
filter (xendisk) to create SCSIOP_UNMAP requests from the appropriate 
IOCTL. Modify the SCSIOP_UNMAP handler in xenvbd to correctly translate
SCSIOP_UNMAP requests into one or more BLKIF_OP_DISCARD requests for the 
ring.
Trim, Discard and Unmap are different names for the same basic operation, 
which is flagging a number of sectors as unused, so that the disk hardware 
can reclaim the sectors in the best way for the disk hardware.

Owen Smith (3):
  Prepare SCSIOP_UNMAP correctly
  Run XenCrsh sdv before XenVbd sdv
  Add XenDisk device upper filter.

 build.py                            |    3 +-
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1862 +++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2079 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   73 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 src/xenvbd/pdo.c                    |   69 +-
 vs2012/package/package.vcxproj      |    3 +
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   28 +
 vs2013/package/package.vcxproj      |    3 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xendisk/xendisk.vcxproj.user |    8 +
 vs2013/xenvbd.sln                   |   28 +
 25 files changed, 5784 insertions(+), 16 deletions(-)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj
 create mode 100644 vs2013/xendisk/xendisk.vcxproj.user

-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:44 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBXA-0002ll-RA; Thu, 25 Sep 2014 16:04:44 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX9-0002lY-HC
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:44 +0000
Received: from [85.158.143.35:44208] by server-3.bemta-4.messagelabs.com id
	A1/A3-06192-A1D34245; Thu, 25 Sep 2014 16:04:42 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-12.tower-21.messagelabs.com!1411661080!11972779!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31752 invoked from network); 25 Sep 2014 16:04:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-12.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:41 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185165"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:24 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSy-0004M6-4v;
	Thu, 25 Sep 2014 17:00:24 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:18 +0100
Message-ID: <1411660758-12578-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 3/3] Add XenDisk device upper filter.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

XenDisk intercepts and translates IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP requests
to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
XenDisk is only neccessary because Storport does not do the translation
to SCSIOP_UNMAPs.

Changes for v2:
* replace inline functions with intrinsics for byte array access/ordering
* add brackets for Length calculation
* remove SRB flags relating to queues (irrelevant for miniports)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 build.py                            |    1 +
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1862 +++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2079 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   73 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 vs2012/package/package.vcxproj      |    3 +
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   28 +
 vs2013/package/package.vcxproj      |    3 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xendisk/xendisk.vcxproj.user |    8 +
 vs2013/xenvbd.sln                   |   28 +
 24 files changed, 5729 insertions(+)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj
 create mode 100644 vs2013/xendisk/xendisk.vcxproj.user

diff --git a/build.py b/build.py
index 26261ad..3a71d0c 100644
--- a/build.py
+++ b/build.py
@@ -368,6 +368,7 @@ if __name__ == '__main__':
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xendisk', driver, vs)
         run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
diff --git a/src/xendisk/assert.h b/src/xendisk/assert.h
new file mode 100644
index 0000000..cd571bd
--- /dev/null
+++ b/src/xendisk/assert.h
@@ -0,0 +1,220 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_ASSERT_H
+#define _XENDISK_ASSERT_H
+
+#include <ntddk.h>
+
+#include "debug.h"
+
+static FORCEINLINE VOID
+__BugCheck(
+    __in  ULONG       Code,
+    __in_opt ULONG_PTR   Parameter1,
+    __in_opt ULONG_PTR   Parameter2,
+    __in_opt ULONG_PTR   Parameter3,
+    __in_opt ULONG_PTR   Parameter4
+    )
+{
+#pragma prefast(suppress:28159)
+    KeBugCheckEx(Code,
+                 Parameter1,
+                 Parameter2,
+                 Parameter3,
+                 Parameter4);
+}
+
+#define ASSERTION_FAILURE   0x0000DEAD
+
+
+#define BUG(_TEXT)                                              \
+        do {                                                    \
+            const CHAR  *_Text = (_TEXT);                       \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT "\n");                          \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text,                        \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       0);                                      \
+        } while (FALSE)
+
+#define BUG_MSG(_TEXT1, _TEXT2)                                 \
+        do {                                                    \
+            const CHAR  *_Text1 = (_TEXT1);                     \
+            const CHAR  *_Text2 = (_TEXT2);                     \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT1 " %s\n", _Text2);              \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text1,                       \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       (ULONG_PTR)_Text2);                      \
+        } while (FALSE)
+
+#define BUG_ON(_EXP)                           \
+        if (_EXP) BUG(#_EXP)
+
+#define BUG_ON_MSG(_EXP, _TEXT)                \
+        if (_EXP) BUG_MSG(#_EXP, _TEXT)
+
+#if DBG
+
+#define __NT_ASSERT(_EXP)                                       \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP "\n"),                \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __NT_ASSERT_MSG(_EXP, _TEXT)                            \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP " " #_TEXT "\n"),     \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __ASSERT(_EXP)              __NT_ASSERT(_EXP)
+#define __ASSERT_MSG(_EXP, _TEXT)   __NT_ASSERT_MSG(_EXP, _TEXT)
+
+#else   // DBG
+
+#define __ASSERT(_EXP)              BUG_ON(!(_EXP))
+#define __ASSERT_MSG(_EXP, _TEXT)   BUG_ON_MSG(!(_EXP), _TEXT)
+
+#endif  // DBG
+
+#undef  ASSERT
+
+#define ASSERT(_EXP)                    \
+        do {                            \
+            __ASSERT(_EXP);             \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT_MSG(_EXP, _TEXT)         \
+        do {                            \
+            __ASSERT_MSG(_EXP, _TEXT);  \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT3U(_X, _OP, _Y)                       \
+        do {                                        \
+            ULONGLONG   _Lval = (ULONGLONG)(_X);    \
+            ULONGLONG   _Rval = (ULONGLONG)(_Y);    \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %llu\n", #_X, _Lval);   \
+                Error("%s = %llu\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3S(_X, _OP, _Y)                       \
+        do {                                        \
+            LONGLONG    _Lval = (LONGLONG)(_X);     \
+            LONGLONG    _Rval = (LONGLONG)(_Y);     \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %lld\n", #_X, _Lval);   \
+                Error("%s = %lld\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3P(_X, _OP, _Y)                       \
+        do {                                        \
+            PVOID   _Lval = (PVOID)(_X);            \
+            PVOID   _Rval = (PVOID)(_Y);            \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %p\n", #_X, _Lval);     \
+                Error("%s = %p\n", #_Y, _Rval);     \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERTREFCOUNT(_X, _OP, _Y, _Z)             \
+        do {                                        \
+            LONG    _L = (LONG)(_X);                \
+            LONG    _R = (LONG)(_Y);                \
+            if (!(_L _OP _R)) {                     \
+                Error("%s:%s = %d\n", (_Z), #_X, _L); \
+                Error("%s:%s = %d\n", (_Z), #_Y, _R); \
+                ASSERT_MSG(_X _OP _Y, (_Z));        \
+            }                                       \
+        } while (FALSE)
+
+#ifndef TEST_MEMORY
+#define TEST_MEMORY DBG
+#endif
+
+#if TEST_MEMORY
+
+__checkReturn
+static __inline BOOLEAN
+_IsZeroMemory(
+    __in const PCHAR Caller,
+    __in const PCHAR Name,
+    __in PVOID       Buffer,
+    __in ULONG       Length
+    )
+{
+    ULONG           Offset;
+
+    Offset = 0;
+    while (Offset < Length) {
+        if (*((PUCHAR)Buffer + Offset) != 0) {
+            Error("%s: non-zero byte in %s (0x%p+0x%x)\n", Caller, Name, Buffer, Offset);
+            return FALSE;
+        }
+        Offset++;
+    }
+
+    return TRUE;
+}
+
+#define IsZeroMemory(_Buffer, _Length) \
+        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
+
+#else   // TEST_MEMORY
+
+#define IsZeroMemory(_Buffer, _Length)  TRUE
+
+#endif  // TEST_MEMORY
+
+#define IMPLY(_X, _Y)   (!(_X) || (_Y))
+#define EQUIV(_X, _Y)   (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X)))
+
+#endif  // _XENDISK_ASSERT_H
+
diff --git a/src/xendisk/debug.h b/src/xendisk/debug.h
new file mode 100644
index 0000000..f592f86
--- /dev/null
+++ b/src/xendisk/debug.h
@@ -0,0 +1,94 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _DEBUG_H
+#define _DEBUG_H
+
+#include <ntddk.h>
+#include <stdarg.h>
+
+#ifdef  _SDV_
+#define __MODULE__ ""
+#endif
+
+// DEBUG_FILTER_MASKs
+// Set these to see relevant output
+// ERROR        0x00000001
+// WARNING      0x00000002
+// TRACE        0x00000004
+// INFO         0x00000008
+
+#pragma warning(disable:4127)   // conditional expression is constant
+
+//
+// Debug Output and Logging
+//
+static __inline VOID
+__DebugMessage(
+    __in    ULONG       Level,
+    __in __nullterminated const CHAR  *Prefix,
+    __in __nullterminated const CHAR  *Format,
+    ...
+    )
+{
+    va_list         Arguments;
+
+    va_start(Arguments, Format);
+
+#pragma prefast(suppress:6001) // Using uninitialized memory
+    vDbgPrintExWithPrefix(Prefix,
+                          DPFLTR_IHVDRIVER_ID,
+                          Level,
+                          Format,
+                          Arguments);
+    va_end(Arguments);
+}
+
+#define Error(...)  \
+        __DebugMessage(DPFLTR_ERROR_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#define Warning(...)  \
+        __DebugMessage(DPFLTR_WARNING_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#if DBG
+#define Trace(...)  \
+        __DebugMessage(DPFLTR_TRACE_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+#else   // DBG
+#define Trace(...) \
+        (VOID)(__VA_ARGS__)
+#endif  // DBG
+
+#define Verbose(...) \
+        __DebugMessage(DPFLTR_INFO_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#include "assert.h"
+
+#endif  // _DEBUG_H
diff --git a/src/xendisk/driver.c b/src/xendisk/driver.c
new file mode 100644
index 0000000..743fc61
--- /dev/null
+++ b/src/xendisk/driver.c
@@ -0,0 +1,203 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#include <ntddk.h>
+#include "driver.h"
+#include "util.h"
+#include "debug.h"
+#include "assert.h"
+#include <version.h>
+
+extern PULONG       InitSafeBootMode;
+
+typedef struct _XENDISK_DRIVER {
+    PDRIVER_OBJECT              DriverObject;
+} XENDISK_DRIVER, *PXENDISK_DRIVER;
+
+static XENDISK_DRIVER   Driver;
+
+static FORCEINLINE VOID
+__DriverSetDriverObject(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    Driver.DriverObject = DriverObject;
+}
+
+static FORCEINLINE PDRIVER_OBJECT
+__DriverGetDriverObject(
+    VOID
+    )
+{
+    return Driver.DriverObject;
+}
+
+PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    )
+{
+    return __DriverGetDriverObject();
+}
+
+DRIVER_UNLOAD   DriverUnload;
+
+VOID
+DriverUnload(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(NULL);
+
+    ASSERT(IsZeroMemory(&Driver, sizeof (XENDISK_DRIVER)));
+
+    Trace("<====\n");
+}
+
+DRIVER_ADD_DEVICE   AddDevice;
+
+NTSTATUS
+#pragma prefast(suppress:28152) // Does not clear DO_DEVICE_INITIALIZING
+AddDevice(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    NTSTATUS            status;
+
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    status = FdoCreate(PhysicalDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    return STATUS_SUCCESS;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+DRIVER_DISPATCH Dispatch;
+
+NTSTATUS 
+Dispatch(
+    IN PDEVICE_OBJECT   DeviceObject,
+    IN PIRP             Irp
+    )
+{
+    PXENDISK_DX         Dx;
+    NTSTATUS            status;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3P(Dx->DeviceObject, ==, DeviceObject);
+
+    if (Dx->DevicePnpState == Deleted) {
+        status = STATUS_NO_SUCH_DEVICE;
+
+        Irp->IoStatus.Status = status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        goto done;
+    }
+
+    status = STATUS_NOT_SUPPORTED;
+    switch (Dx->Type) {
+    case PHYSICAL_DEVICE_OBJECT: {
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        status = PdoDispatch(Pdo, Irp);
+        break;
+    }
+    case FUNCTION_DEVICE_OBJECT: {
+        PXENDISK_FDO    Fdo = Dx->Fdo;
+
+        status = FdoDispatch(Fdo, Irp);
+        break;
+    }
+    default:
+        ASSERT(FALSE);
+        break;
+    }
+
+done:
+    return status;
+}
+
+DRIVER_INITIALIZE   DriverEntry;
+
+NTSTATUS
+DriverEntry(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PUNICODE_STRING RegistryPath
+    )
+{
+    ULONG               Index;
+
+    ASSERT3P(__DriverGetDriverObject(), ==, NULL);
+    UNREFERENCED_PARAMETER(RegistryPath);
+
+    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(DriverObject);
+
+    DriverObject->DriverUnload = DriverUnload;
+
+    if (*InitSafeBootMode > 0)
+        goto done;
+
+    Verbose("XENDISK %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+            MAJOR_VERSION,
+            MINOR_VERSION,
+            MICRO_VERSION,
+            BUILD_NUMBER,
+            DAY,
+            MONTH,
+            YEAR);
+
+    DriverObject->DriverExtension->AddDevice = AddDevice;
+
+    for (Index = 0; Index <= IRP_MJ_MAXIMUM_FUNCTION; Index++) {
+#pragma prefast(suppress:28169) // No __drv_dispatchType annotation
+#pragma prefast(suppress:28168) // No matching __drv_dispatchType annotation for IRP_MJ_CREATE
+        DriverObject->MajorFunction[Index] = Dispatch;
+    }
+
+done:
+    Trace("<====\n");
+    return STATUS_SUCCESS;
+}
diff --git a/src/xendisk/driver.h b/src/xendisk/driver.h
new file mode 100644
index 0000000..b47e21b
--- /dev/null
+++ b/src/xendisk/driver.h
@@ -0,0 +1,68 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_DRIVER_H
+#define _XENDISK_DRIVER_H
+
+#include "fdo.h"
+#include "pdo.h"
+
+extern PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    );
+
+#pragma warning(push)
+#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union
+
+typedef struct _XENDISK_DX {
+    PDEVICE_OBJECT      DeviceObject;
+    DEVICE_OBJECT_TYPE  Type;
+
+    DEVICE_PNP_STATE    DevicePnpState;
+    DEVICE_PNP_STATE    PreviousDevicePnpState;
+
+    SYSTEM_POWER_STATE  SystemPowerState;
+    DEVICE_POWER_STATE  DevicePowerState;
+
+    IO_REMOVE_LOCK      RemoveLock;
+
+    LIST_ENTRY          ListEntry;
+
+    union {
+        PXENDISK_FDO    Fdo;
+        PXENDISK_PDO    Pdo;
+    };
+} XENDISK_DX, *PXENDISK_DX;
+
+#pragma warning(pop)
+
+#endif // _XENDISK_DRIVER_H
diff --git a/src/xendisk/fdo.c b/src/xendisk/fdo.c
new file mode 100644
index 0000000..771c82e
--- /dev/null
+++ b/src/xendisk/fdo.c
@@ -0,0 +1,1862 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <names.h>
+
+#include "driver.h"
+#include "fdo.h"
+#include "pdo.h"
+#include "thread.h"
+#include "mutex.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define FDO_TAG 'ODF'
+
+struct _XENDISK_FDO {
+    PXENDISK_DX                     Dx;
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    PDEVICE_OBJECT                  PhysicalDeviceObject;
+
+    PXENDISK_THREAD                 SystemPowerThread;
+    PIRP                            SystemPowerIrp;
+    PXENDISK_THREAD                 DevicePowerThread;
+    PIRP                            DevicePowerIrp;
+
+    MUTEX                           Mutex;
+    ULONG                           References;
+};
+
+static FORCEINLINE PVOID
+__FdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+static FORCEINLINE VOID
+__FdoRestoreDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__FdoGetDevicePnpState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__FdoGetDevicePowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__FdoSetSystemPowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX              Dx = Fdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__FdoGetSystemPowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+static FORCEINLINE PDEVICE_OBJECT
+__FdoGetPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    return Fdo->PhysicalDeviceObject;
+}
+
+VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    InsertTailList(&Fdo->Dx->ListEntry, &Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    Fdo->References++;
+}
+
+VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    RemoveEntryList(&Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+}
+
+static FORCEINLINE VOID
+__FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    AcquireMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoAcquireMutex(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    ReleaseMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoReleaseMutex(Fdo);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoEnumerate(
+    IN  PXENDISK_FDO        Fdo,
+    IN  PDEVICE_RELATIONS   Relations
+    )
+{
+    PDEVICE_OBJECT          *PhysicalDeviceObject;
+    ULONG                   Count;
+    PLIST_ENTRY             ListEntry;
+    ULONG                   Index;
+    NTSTATUS                status;
+
+    Count = Relations->Count;
+    ASSERT(Count != 0);
+
+    PhysicalDeviceObject = __FdoAllocate(sizeof (PDEVICE_OBJECT) * Count);
+
+    status = STATUS_NO_MEMORY;
+    if (PhysicalDeviceObject == NULL)
+        goto fail1;
+
+    RtlCopyMemory(PhysicalDeviceObject,
+                  Relations->Objects,
+                  sizeof (PDEVICE_OBJECT) * Count);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    // Remove any PDOs that do not appear in the device list
+    ListEntry = Fdo->Dx->ListEntry.Flink;
+    while (ListEntry != &Fdo->Dx->ListEntry) {
+        PLIST_ENTRY     Next = ListEntry->Flink;
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+        BOOLEAN         Missing;
+
+        Missing = TRUE;
+        for (Index = 0; Index < Count; Index++) {
+            if (PdoGetPhysicalDeviceObject(Pdo) == PhysicalDeviceObject[Index]) {
+                Missing = FALSE;
+#pragma prefast(suppress:6387)  // PhysicalDeviceObject[Index] could be NULL
+                ObDereferenceObject(PhysicalDeviceObject[Index]);
+                PhysicalDeviceObject[Index] = NULL; // avoid duplication
+                break;
+            }
+        }
+
+        if (Missing && !PdoIsMissing(Pdo)) {
+            if (PdoGetDevicePnpState(Pdo) == Present) {
+                PdoSetDevicePnpState(Pdo, Deleted);
+                PdoDestroy(Pdo);
+            } else {
+                PdoSetMissing(Pdo, "device disappeared");
+            }
+        }
+
+        ListEntry = Next;
+    }
+
+    // Walk the list and create PDO filters for any new devices
+    for (Index = 0; Index < Count; Index++) {
+#pragma warning(suppress:6385)  // Reading invalid data from 'PhysicalDeviceObject'
+        if (PhysicalDeviceObject[Index] != NULL) {
+            (VOID) PdoCreate(Fdo,
+                             PhysicalDeviceObject[Index]);
+            ObDereferenceObject(PhysicalDeviceObject[Index]);
+        }
+    }
+    
+    ReleaseMutex(&Fdo->Mutex);
+
+    __FdoFree(PhysicalDeviceObject);
+    return;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+FdoForwardIrpSynchronously(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStartDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __FdoSetSystemPowerState(Fdo, PowerSystemWorking);
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePnpState(Fdo, Started);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __FdoRestoreDevicePnpState(Fdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoRestoreDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoSurpriseRemoval(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoSurpriseRemoval,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Deleted);
+
+    IoReleaseRemoveLockAndWait(&Fdo->Dx->RemoveLock, Irp);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    AcquireMutex(&Fdo->Mutex);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+    ReleaseMutex(&Fdo->Mutex);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryDeviceRelations(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryDeviceRelations(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               Size;
+    PDEVICE_RELATIONS   Relations;
+    PLIST_ENTRY         ListEntry;
+    ULONG               Count;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryDeviceRelations,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    if (StackLocation->Parameters.QueryDeviceRelations.Type != BusRelations)
+        goto done;
+
+    Relations = (PDEVICE_RELATIONS)Irp->IoStatus.Information;
+
+    if (Relations->Count != 0)
+        __FdoEnumerate(Fdo, Relations);
+
+    ExFreePool(Relations);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    Count = 0;
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink)
+        Count++;
+
+    Size = FIELD_OFFSET(DEVICE_RELATIONS, Objects) + (sizeof (DEVICE_OBJECT) * __min(Count, 1));
+
+    Relations = ExAllocatePoolWithTag(PagedPool, Size, 'TLIF');
+
+    status = STATUS_NO_MEMORY;
+    if (Relations == NULL)
+        goto fail3;
+
+    RtlZeroMemory(Relations, Size);
+
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink) {
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+        if (PdoGetDevicePnpState(Pdo) == Present)
+            PdoSetDevicePnpState(Pdo, Enumerated);
+
+        ObReferenceObject(PdoGetPhysicalDeviceObject(Pdo));
+        Relations->Objects[Relations->Count++] = PdoGetPhysicalDeviceObject(Pdo);
+    }
+
+    ASSERT3U(Relations->Count, ==, Count);
+
+    Trace("%d PDO(s)\n", Relations->Count);
+
+    ReleaseMutex(&Fdo->Mutex);
+
+    Irp->IoStatus.Information = (ULONG_PTR)Relations;
+    status = STATUS_SUCCESS;
+
+done:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail3:
+    ReleaseMutex(&Fdo->Mutex);
+
+fail2:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPnp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = FdoStartDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = FdoQueryStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = FdoCancelStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = FdoStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = FdoQueryRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = FdoSurpriseRemoval(Fdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = FdoRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = FdoCancelRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_DEVICE_RELATIONS:
+        status = FdoQueryDeviceRelations(Fdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPnp,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoSetDevicePowerUp(Fdo, Irp) :
+             __FdoSetDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoSetSystemPowerUp(Fdo, Irp) :
+             __FdoSetSystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoQueryDevicePowerUp(Fdo, Irp) :
+             __FdoQueryDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerUp(
+    IN  PXENDISK_FDO     Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoQuerySystemPowerUp(Fdo, Irp) :
+             __FdoQuerySystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+FdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetDevicePower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQueryDevicePower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+FdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetSystemPower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQuerySystemPower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->DevicePowerIrp, ==, NULL);
+        Fdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->SystemPowerIrp, ==, NULL);
+        Fdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchDefault(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoDispatchDefault,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_PNP:
+        status = FdoDispatchPnp(Fdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = FdoDispatchPower(Fdo, Irp);
+        break;
+
+    default:
+        status = FdoDispatchDefault(Fdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject;
+    ULONG               DeviceType;
+    PDEVICE_OBJECT      FilterDeviceObject;
+    PXENDISK_DX         Dx;
+    PXENDISK_FDO        Fdo;
+    NTSTATUS            status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'FilterDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof (XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = FUNCTION_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Added;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, FDO_TAG, 0, 0);
+
+    Fdo = __FdoAllocate(sizeof (XENDISK_FDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Fdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Fdo->Dx = Dx;
+    Fdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Fdo->LowerDeviceObject = LowerDeviceObject;
+
+    status = ThreadCreate(FdoSystemPower, Fdo, &Fdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(FdoDevicePower, Fdo, &Fdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    InitializeMutex(&Fdo->Mutex);
+    InitializeListHead(&Dx->ListEntry);
+    Fdo->References = 1;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Fdo = Fdo;
+
+#pragma prefast(suppress:28182)  // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Fdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Fdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT(IsListEmpty(&Dx->ListEntry));
+    ASSERT3U(Fdo->References, ==, 0);
+    ASSERT3U(__FdoGetDevicePnpState(Fdo), ==, Deleted);
+
+    Dx->Fdo = NULL;
+
+    RtlZeroMemory(&Fdo->Mutex, sizeof (MUTEX));
+
+    ThreadAlert(Fdo->DevicePowerThread);
+    ThreadJoin(Fdo->DevicePowerThread);
+    Fdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/fdo.h b/src/xendisk/fdo.h
new file mode 100644
index 0000000..8aa0529
--- /dev/null
+++ b/src/xendisk/fdo.h
@@ -0,0 +1,78 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_FDO_H
+#define _XENDISK_FDO_H
+
+#include <ntddk.h>
+#include "types.h"
+
+typedef struct _XENDISK_FDO XENDISK_FDO, *PXENDISK_FDO;
+
+extern VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    );
+
+extern NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    );
+
+#endif // _XENDISK_FDO_H
diff --git a/src/xendisk/mutex.h b/src/xendisk/mutex.h
new file mode 100644
index 0000000..bcc2414
--- /dev/null
+++ b/src/xendisk/mutex.h
@@ -0,0 +1,113 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_MUTEX_H
+#define _XENDISK_MUTEX_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _MUTEX {
+    PKTHREAD    Owner;
+    KEVENT      Event;
+} MUTEX, *PMUTEX;
+
+static FORCEINLINE VOID
+InitializeMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    RtlZeroMemory(Mutex, sizeof (MUTEX));
+
+    KeInitializeEvent(&Mutex->Event, SynchronizationEvent, TRUE);
+}
+
+static FORCEINLINE BOOLEAN
+__drv_maxIRQL(PASSIVE_LEVEL)
+TryAcquireMutex(
+    IN  PMUTEX      Mutex
+    )
+{
+    LARGE_INTEGER   Timeout;
+    NTSTATUS        status;
+
+    Timeout.QuadPart = 0;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   &Timeout);
+    if (status == STATUS_TIMEOUT)
+        return FALSE;
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+
+    return TRUE;
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+AcquireMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    NTSTATUS    status;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   NULL);
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+ReleaseMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    ASSERT3P(Mutex->Owner, ==, KeGetCurrentThread());
+    Mutex->Owner = NULL;
+
+    KeSetEvent(&Mutex->Event, IO_NO_INCREMENT, FALSE);
+}
+
+#endif  // _XENDISK_MUTEX_H
diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
new file mode 100644
index 0000000..3de958a
--- /dev/null
+++ b/src/xendisk/pdo.c
@@ -0,0 +1,2079 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <storport.h>
+#include <Ntddstor.h>
+#include <Ntddscsi.h>
+#include <names.h>
+
+#include "fdo.h"
+#include "pdo.h"
+#include "driver.h"
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define PDO_TAG 'ODP'
+
+struct _XENDISK_PDO {
+    PXENDISK_DX                 Dx;
+    PDEVICE_OBJECT              LowerDeviceObject;
+    PDEVICE_OBJECT              PhysicalDeviceObject;
+
+    PXENDISK_THREAD             SystemPowerThread;
+    PIRP                        SystemPowerIrp;
+    PXENDISK_THREAD             DevicePowerThread;
+    PIRP                        DevicePowerIrp;
+
+    PXENDISK_FDO                Fdo;
+    BOOLEAN                     Missing;
+    const CHAR                  *Reason;
+
+    ULONG                       SectorSize;
+};
+
+static FORCEINLINE PVOID
+__PdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    __PdoSetDevicePnpState(Pdo, State);
+}
+
+static FORCEINLINE VOID
+__PdoRestoreDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoGetDevicePnpState(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__PdoGetDevicePowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__PdoSetSystemPowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__PdoGetSystemPowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->PhysicalDeviceObject;
+}
+
+static FORCEINLINE VOID
+__PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    Pdo->Reason = Reason;
+    Pdo->Missing = TRUE;
+}
+
+VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    __PdoSetMissing(Pdo, Reason);
+}
+
+static FORCEINLINE BOOLEAN
+__PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->Missing;
+}
+
+BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoIsMissing(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoLink(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    Pdo->Fdo = Fdo;
+    FdoAddPhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+}
+
+static FORCEINLINE VOID
+__PdoUnlink(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_FDO        Fdo = Pdo->Fdo;
+
+    ASSERT(Fdo != NULL);
+
+    FdoRemovePhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+
+    Pdo->Fdo = NULL;
+}
+
+static FORCEINLINE PXENDISK_FDO
+__PdoGetFdo(
+    IN  PXENDISK_PDO Pdo
+    )
+{
+    return Pdo->Fdo;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoForwardIrpSynchronously(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpAndForget(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoForwardIrpAndForget(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                            __PdoForwardIrpAndForget,
+                            Pdo,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+
+    return IoCallDriver(Pdo->LowerDeviceObject, Irp);
+}
+
+static NTSTATUS
+PdoCompleteIrp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp,
+    IN  NTSTATUS        Status
+    )
+{
+    Irp->IoStatus.Status = Status;
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    return Status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryProperty(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR    Descriptor = Irp->UserBuffer;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    if (!NT_SUCCESS(Irp->IoStatus.Status))
+        goto done;
+
+    Descriptor = Irp->UserBuffer;
+    Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
+    Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, Pdo->SectorSize);
+
+done:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryProperty(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PSTORAGE_PROPERTY_QUERY Query;
+    PDEVICE_TRIM_DESCRIPTOR Trim;
+    NTSTATUS                status;
+
+    Query = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Query->PropertyId) {
+    case StorageAccessAlignmentProperty:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                                __PdoQueryProperty,
+                                Pdo,
+                                TRUE,
+                                TRUE,
+                                TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+
+    case StorageDeviceTrimProperty:
+        Trim = Irp->AssociatedIrp.SystemBuffer;
+
+        Trim->Version = 0;
+        Trim->Size = sizeof(DEVICE_TRIM_DESCRIPTOR);
+        Trim->TrimEnabled = TRUE;
+
+        Irp->IoStatus.Information = (ULONG_PTR)sizeof(DEVICE_TRIM_DESCRIPTOR);
+        status = PdoCompleteIrp(Pdo, Irp, STATUS_SUCCESS);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSendAwaitSrb(
+    IN  PDEVICE_OBJECT          DeviceObject,
+    IN  PIRP                    Irp,
+    IN  PVOID                   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Context);
+
+    *(Irp->UserIosb) = Irp->IoStatus;
+
+    if (Irp->MdlAddress) {
+        MmUnlockPages(Irp->MdlAddress);
+        IoFreeMdl(Irp->MdlAddress);
+    }
+
+    KeSetEvent(Irp->UserEvent, IO_NO_INCREMENT, FALSE);
+
+    IoFreeIrp(Irp);
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoSendAwaitSrb(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PSCSI_REQUEST_BLOCK     Srb
+    )
+{
+    PIRP                        Irp;
+    IO_STATUS_BLOCK             IoStatus;
+    KEVENT                      Event;
+    PIO_STACK_LOCATION          Stack;
+    NTSTATUS                    status;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    status = STATUS_NO_MEMORY;
+    Irp = IoAllocateIrp((CCHAR)(Pdo->LowerDeviceObject->StackSize + 1), FALSE);
+    if (Irp == NULL)
+        goto fail1;
+
+    Stack = IoGetNextIrpStackLocation(Irp);
+    Stack->MajorFunction = IRP_MJ_SCSI;
+    Stack->Parameters.Scsi.Srb = Srb;
+
+    IoSetCompletionRoutine(Irp,
+                            __PdoSendAwaitSrb,
+                            Srb,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+    Irp->UserIosb = &IoStatus;
+    Irp->UserEvent = &Event;
+
+    Irp->MdlAddress = IoAllocateMdl(Srb->DataBuffer,
+                                    Srb->DataTransferLength,
+                                    FALSE,
+                                    FALSE,
+                                    Irp);
+    if (Irp->MdlAddress == NULL)
+        goto fail2;
+
+#pragma warning(disable:6320)
+    try {
+        MmProbeAndLockPages(Irp->MdlAddress, KernelMode, IoReadAccess);
+    } except (EXCEPTION_EXECUTE_HANDLER) {
+        status = GetExceptionCode();
+
+        goto fail3;
+    }
+#pragma warning(default:6320)
+    
+    Srb->OriginalRequest = Irp;
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
+        status = IoStatus.Status;
+    }
+
+    return status;
+
+fail3:
+    Error("fail3\n");
+
+    IoFreeMdl(Irp->MdlAddress);
+
+fail2:
+    Error("fail2\n");
+
+    IoFreeIrp(Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoSendTrimSynchronous(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PDEVICE_DATA_SET_RANGE  Ranges,
+    IN  ULONG                   Count
+    )
+{
+    SCSI_REQUEST_BLOCK          Srb;
+    PCDB                        Cdb;
+    PUNMAP_LIST_HEADER          Unmap;
+    ULONG                       Length;
+    ULONG                       Index;
+    NTSTATUS                    status;
+
+    Length = sizeof(UNMAP_LIST_HEADER) + 
+             (Count * sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    status = STATUS_NO_MEMORY;
+    Unmap = __PdoAllocate(Length);
+    if (Unmap == NULL)
+        goto fail1;
+
+    RtlZeroMemory(&Srb, sizeof(SCSI_REQUEST_BLOCK));
+    Srb.Length = sizeof(SCSI_REQUEST_BLOCK);
+    Srb.SrbFlags = 0;
+    Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
+    Srb.DataBuffer = Unmap;
+    Srb.DataTransferLength = Length;
+    Srb.TimeOutValue = (ULONG)-1;
+    Srb.CdbLength = 10;
+
+    Cdb = (PCDB)&Srb.Cdb[0];
+    Cdb->UNMAP.OperationCode = SCSIOP_UNMAP;
+    *(PUSHORT)Cdb->UNMAP.AllocationLength = _byteswap_ushort((USHORT)Length);
+
+    *(PUSHORT)Unmap->DataLength = _byteswap_ushort((USHORT)Length);
+    *(PUSHORT)Unmap->BlockDescrDataLength = _byteswap_ushort((USHORT)sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Block = &Unmap->Descriptors[Index];
+        PDEVICE_DATA_SET_RANGE  Range = &Ranges[Index];
+        
+        ULONG   LengthInSectors = (ULONG)(Range->LengthInBytes / Pdo->SectorSize);
+        ULONG64 OffsetInSectors = (ULONG64)(Range->StartingOffset / Pdo->SectorSize);
+
+        Trace("TRIM[%x] %x @ %llx\n",
+                        Index,
+                        LengthInSectors,
+                        OffsetInSectors);
+
+        *(PULONG64)Block->StartingLba = _byteswap_uint64(OffsetInSectors);
+        *(PULONG)Block->LbaCount = _byteswap_ulong(LengthInSectors);
+    }
+
+    status = PdoSendAwaitSrb(Pdo, &Srb);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoFree(Unmap);
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    __PdoFree(Unmap);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoManageDataSetAttributes(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PDEVICE_MANAGE_DATA_SET_ATTRIBUTES  Attributes;
+    PDEVICE_DATA_SET_RANGE              Ranges;
+    ULONG                               NumRanges;
+    NTSTATUS                            status;
+
+    Attributes = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Attributes->Action) {
+    case DeviceDsmAction_Trim:
+        Ranges = (PDEVICE_DATA_SET_RANGE)((PUCHAR)Attributes + Attributes->DataSetRangesOffset);
+        NumRanges = Attributes->DataSetRangesLength / sizeof(DEVICE_DATA_SET_RANGE);
+
+        status = PdoSendTrimSynchronous(Pdo, Ranges, NumRanges);
+
+        status = PdoCompleteIrp(Pdo, Irp, status);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchControl(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               ControlCode;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    ControlCode = StackLocation->Parameters.DeviceIoControl.IoControlCode;
+
+    switch (ControlCode) {
+    case IOCTL_STORAGE_QUERY_PROPERTY:
+        status = PdoQueryProperty(Pdo, Irp);
+        break;
+
+    case IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES:
+        status = PdoManageDataSetAttributes(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStartDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoSetSystemPowerState(Pdo, PowerSystemWorking);
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __PdoSetDevicePnpState(Pdo, Started);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return STATUS_SUCCESS;
+
+fail2:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __PdoRestoreDevicePnpState(Pdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    __PdoSetDevicePnpState(Pdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoRestoreDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoSurpriseRemoval(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoSurpriseRemoval,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    if (__PdoIsMissing(Pdo)) {
+        __PdoSetDevicePnpState(Pdo, Deleted);
+        IoReleaseRemoveLockAndWait(&Pdo->Dx->RemoveLock, Irp);
+    } else {
+        __PdoSetDevicePnpState(Pdo, Enumerated);
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    if (__PdoIsMissing(Pdo)) {
+        FdoAcquireMutex(Fdo);
+        PdoDestroy(Pdo);
+        FdoReleaseMutex(Fdo);
+    }
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoEject(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    NTSTATUS            status;
+
+    __PdoSetMissing(Pdo, "Ejected");
+    __PdoSetDevicePnpState(Pdo, Deleted);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    FdoAcquireMutex(Fdo);
+    PdoDestroy(Pdo);
+    FdoReleaseMutex(Fdo);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPnp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = PdoStartDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = PdoQueryStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = PdoCancelStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = PdoStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = PdoQueryRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = PdoSurpriseRemoval(Pdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = PdoRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = PdoCancelRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_EJECT:
+        status = PdoEject(Pdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPnp,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoSetDevicePowerUp(Pdo, Irp) :
+             __PdoSetDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerDown(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoSetSystemPowerUp(Pdo, Irp) :
+             __PdoSetSystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoQueryDevicePowerUp(Pdo, Irp) :
+             __PdoQueryDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerUp(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoQuerySystemPowerUp(Pdo, Irp) :
+             __PdoQuerySystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetDevicePower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQueryDevicePower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetSystemPower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQuerySystemPower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->DevicePowerIrp, ==, NULL);
+        Pdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->SystemPowerIrp, ==, NULL);
+        Pdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchDefault(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoDispatchDefault,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_DEVICE_CONTROL:
+        status = PdoDispatchControl(Pdo, Irp);
+        break;
+
+    case IRP_MJ_PNP:
+        status = PdoDispatchPnp(Pdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = PdoDispatchPower(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoDispatchDefault(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+PdoCreate(
+    PXENDISK_FDO                    Fdo,
+    PDEVICE_OBJECT                  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    ULONG                           DeviceType;
+    PDEVICE_OBJECT                  FilterDeviceObject;
+    PXENDISK_DX                     Dx;
+    PXENDISK_PDO                    Pdo;
+    NTSTATUS                        status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'PhysicalDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof(XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = PHYSICAL_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Present;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, PDO_TAG, 0, 0);
+
+    Pdo = __PdoAllocate(sizeof (XENDISK_PDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Pdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Pdo->Dx = Dx;
+    Pdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Pdo->LowerDeviceObject = LowerDeviceObject;
+    Pdo->SectorSize = 512;
+
+    status = ThreadCreate(PdoSystemPower, Pdo, &Pdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(PdoDevicePower, Pdo, &Pdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Pdo = Pdo;
+
+#pragma prefast(suppress:28182) // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    __PdoLink(Pdo, Fdo);
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Pdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Pdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT3U(__PdoGetDevicePnpState(Pdo), ==, Deleted);
+
+    ASSERT(__PdoIsMissing(Pdo));
+    Pdo->Missing = FALSE;
+
+    __PdoUnlink(Pdo);
+
+    Verbose("%p (%s)\n",
+         FilterDeviceObject,
+         Pdo->Reason);
+    Pdo->Reason = NULL;
+
+    Dx->Pdo = NULL;
+
+    ThreadAlert(Pdo->DevicePowerThread);
+    ThreadJoin(Pdo->DevicePowerThread);
+    Pdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+    Pdo->SectorSize = 0;
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/pdo.h b/src/xendisk/pdo.h
new file mode 100644
index 0000000..5e2e5d6
--- /dev/null
+++ b/src/xendisk/pdo.h
@@ -0,0 +1,90 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_PDO_H
+#define _XENDISK_PDO_H
+
+#include <ntddk.h>
+#include "types.h"
+#include "fdo.h"
+
+typedef struct _XENDISK_PDO XENDISK_PDO, *PXENDISK_PDO;
+
+extern VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    );
+
+extern DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    );
+
+extern BOOLEAN
+PdoIsMasked(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoCreate(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    );
+
+#endif // _XENDISK_PDO_H
diff --git a/src/xendisk/thread.c b/src/xendisk/thread.c
new file mode 100644
index 0000000..92e2b94
--- /dev/null
+++ b/src/xendisk/thread.c
@@ -0,0 +1,225 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#include <ntddk.h>
+
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define THREAD_POOL 'ERHT'
+
+struct _XENDISK_THREAD {
+    XENDISK_THREAD_FUNCTION Function;
+    PVOID                   Context;
+    KEVENT                  Event;
+    BOOLEAN                 Alerted;
+    LONG                    References;
+    PKTHREAD                Thread;
+};
+
+static FORCEINLINE PVOID
+__ThreadAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    KeSetEvent(&Thread->Event, IO_NO_INCREMENT, FALSE);
+}
+
+VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadWake(Thread);
+}
+
+static FORCEINLINE VOID
+__ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    Thread->Alerted = TRUE;
+    __ThreadWake(Thread);
+}
+
+VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadAlert(Thread);
+}
+
+KSTART_ROUTINE  ThreadFunction;
+
+VOID
+ThreadFunction(
+    IN  PVOID       Argument
+    )
+{
+    PXENDISK_THREAD Self = Argument;
+    NTSTATUS        status;
+
+    status = Self->Function(Self, Self->Context);
+
+    if (InterlockedDecrement(&Self->References) == 0)
+        __ThreadFree(Self);
+
+    PsTerminateSystemThread(status);
+    // NOT REACHED
+}
+
+NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    )
+{
+    HANDLE                      Handle;
+    NTSTATUS                    status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    (*Thread) = __ThreadAllocate(sizeof (XENDISK_THREAD));
+
+    status = STATUS_NO_MEMORY;
+    if (*Thread == NULL)
+        goto fail1;
+
+    (*Thread)->Function = Function;
+    (*Thread)->Context = Context;
+    (*Thread)->Alerted = FALSE;
+    (*Thread)->References = 2; // One for us, one for the thread function
+
+    KeInitializeEvent(&(*Thread)->Event, NotificationEvent, FALSE);
+
+    status = PsCreateSystemThread(&Handle,
+                                  STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL,
+                                  NULL,
+                                  NULL,
+                                  NULL,
+                                  ThreadFunction,
+                                  *Thread);
+    if (!NT_SUCCESS(status)) {
+        --(*Thread)->References;    // Fake thread function termination
+        goto fail2;
+    }
+
+    status = ObReferenceObjectByHandle(Handle,
+                                       SYNCHRONIZE,
+                                       *PsThreadType,
+                                       KernelMode,
+                                       &(*Thread)->Thread,
+                                       NULL);
+    if (!NT_SUCCESS(status))
+        goto fail3;
+
+    ZwClose(Handle);
+
+    return STATUS_SUCCESS;
+
+fail3:
+    Error("fail3\n");
+
+    __ThreadAlert(*Thread);
+    ZwClose(Handle);
+
+fail2:
+    Error("fail2\n");
+
+    if (InterlockedDecrement(&(*Thread)->References) == 0)
+        __ThreadFree(*Thread);
+
+    *Thread = NULL;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return &Thread->Event;
+}
+
+BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return Thread->Alerted;
+}
+
+VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    LONG                References;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+    ASSERT3P(KeGetCurrentThread(), !=, Thread->Thread);
+
+    (VOID) KeWaitForSingleObject(Thread->Thread,
+                                 Executive,
+                                 KernelMode,
+                                 FALSE,
+                                 NULL);
+
+    References = InterlockedDecrement(&Thread->References);
+    ASSERT3U(References, ==, 0);
+
+    __ThreadFree(Thread);
+}
+
diff --git a/src/xendisk/thread.h b/src/xendisk/thread.h
new file mode 100644
index 0000000..c197337
--- /dev/null
+++ b/src/xendisk/thread.h
@@ -0,0 +1,73 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_THREAD_H
+#define _XENDISK_THREAD_H
+
+#include <ntddk.h>
+
+typedef struct _XENDISK_THREAD XENDISK_THREAD, *PXENDISK_THREAD;
+
+typedef NTSTATUS (*XENDISK_THREAD_FUNCTION)(PXENDISK_THREAD, PVOID);
+
+extern NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    );
+
+extern PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    );
+
+#endif  // _XENDISK_THREAD_H
diff --git a/src/xendisk/types.h b/src/xendisk/types.h
new file mode 100644
index 0000000..b2b4218
--- /dev/null
+++ b/src/xendisk/types.h
@@ -0,0 +1,53 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_TYPES_H
+#define _XENDISK_TYPES_H
+
+typedef enum _DEVICE_OBJECT_TYPE {
+    PHYSICAL_DEVICE_OBJECT = 'ODP',
+    FUNCTION_DEVICE_OBJECT = 'ODF'
+} DEVICE_OBJECT_TYPE, *PDEVICE_OBJECT_TYPE;
+
+typedef enum _DEVICE_PNP_STATE {
+    Invalid = 0,
+    Present,        // PDO only
+    Enumerated,     // PDO only
+    Added,          // FDO only
+    Started,
+    StopPending,
+    Stopped,
+    RemovePending,
+    SurpriseRemovePending,
+    Deleted
+} DEVICE_PNP_STATE, *PDEVICE_PNP_STATE;
+
+#endif  // _XENDISK_TYPES_H
diff --git a/src/xendisk/util.h b/src/xendisk/util.h
new file mode 100644
index 0000000..e7adc22
--- /dev/null
+++ b/src/xendisk/util.h
@@ -0,0 +1,222 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _NON_PAGED_BUFFER_HEADER {
+    SIZE_T  Length;
+    ULONG   Tag;
+} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
+
+typedef struct _NON_PAGED_BUFFER_TRAILER {
+    ULONG   Tag;
+} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
+
+static FORCEINLINE PVOID
+__AllocateNonPagedPoolWithTag(
+    IN  PCHAR                   Caller,
+    IN  ULONG                   Line,
+    IN  SIZE_T                  Length,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3S(Length, !=, 0);
+
+    Buffer = (PUCHAR)ExAllocatePoolWithTag(NonPagedPool,
+                                   sizeof (NON_PAGED_BUFFER_HEADER) +
+                                   Length +
+                                   sizeof (NON_PAGED_BUFFER_TRAILER),
+                                   Tag);
+    if (Buffer == NULL) {
+        Warning("%s:%u : AllocFailed %d bytes, %08x tag\n", Caller, Line, Length, Tag);
+        goto done;
+    }
+
+    RtlZeroMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER));
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    Header->Length = Length;
+    Header->Tag = Tag;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    Trailer->Tag = Tag;
+
+done:
+    return Buffer;
+}
+
+static FORCEINLINE VOID
+__FreePoolWithTag(
+    IN  PVOID                   _Buffer,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer = (PUCHAR)_Buffer;
+    SIZE_T                      Length;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3P(Buffer, !=, NULL);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    ASSERT3U(Tag, ==, Header->Tag);
+    Length = Header->Length;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    ASSERT3U(Tag, ==, Trailer->Tag);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    RtlFillMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER),
+                  0xAA);
+
+    ExFreePoolWithTag(Buffer, Tag);
+}
+
+static FORCEINLINE PMDL
+__AllocPagesForMdl(
+    IN  SIZE_T          Size
+    )
+{
+    PMDL                Mdl;
+    PHYSICAL_ADDRESS    LowAddr;
+    PHYSICAL_ADDRESS    HighAddr;
+    PHYSICAL_ADDRESS    SkipBytes;
+
+    SkipBytes.QuadPart = 0ull;
+    HighAddr.QuadPart = ~0ull;
+
+    // try > 4GB
+    LowAddr.QuadPart = 0x100000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try > 2GB
+    LowAddr.QuadPart = 0x80000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try anywhere
+    LowAddr.QuadPart = 0ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    // Mdl byte count gets checked again after this returns
+
+done:
+    return Mdl;
+}
+static FORCEINLINE PVOID
+___AllocPages(
+    IN  PCHAR           Caller, 
+    IN  ULONG           Line,
+    IN  SIZE_T          Size,
+    OUT PMDL*           Mdl
+    )
+{
+    PVOID               Buffer;
+
+    *Mdl = __AllocPagesForMdl(Size);
+    if (*Mdl == NULL) {
+        Warning("%s:%u : MmAllocatePagesForMdlEx Failed %d bytes\n", Caller, Line, Size);
+        goto fail1;
+    }
+
+    if (MmGetMdlByteCount(*Mdl) != Size) {
+        Warning("%s:%u : %d bytes != %d bytes requested\n", Caller, Line, MmGetMdlByteCount(*Mdl), Size);
+        goto fail2;
+    }
+
+    Buffer = MmMapLockedPagesSpecifyCache(*Mdl, KernelMode, MmCached, NULL, FALSE, NormalPagePriority);
+    if (Buffer == NULL) {
+        Warning("%s:%u : MmMapLockedPagesSpecifyCache Failed %d bytes\n", Caller, Line, Size);
+        goto fail3;
+    }
+
+    return Buffer;
+
+fail3:
+fail2:
+    MmFreePagesFromMdl(*Mdl);
+    ExFreePool(*Mdl);
+fail1:
+    *Mdl = NULL;
+    return NULL;
+}
+#define __AllocPages(Size, Mdl) ___AllocPages(__FUNCTION__, __LINE__, Size, Mdl)
+
+static FORCEINLINE VOID
+__FreePages(
+    IN  PVOID           Buffer,
+    IN  PMDL            Mdl
+    )
+{
+    if (Buffer && Mdl) {
+        MmUnmapLockedPages(Buffer, Mdl);
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+    }
+}
+
+#endif  // _UTIL_H
diff --git a/src/xendisk/xendisk.rc b/src/xendisk/xendisk.rc
new file mode 100644
index 0000000..df2e5b6
--- /dev/null
+++ b/src/xendisk/xendisk.rc
@@ -0,0 +1,56 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#include <windows.h>
+#include <ntverp.h>
+
+
+#undef VER_COMPANYNAME_STR
+#undef VER_PRODUCTNAME_STR
+#undef VER_PRODUCTVERSION
+#undef VER_PRODUCTVERSION_STR
+
+#include <version.h>
+
+#define	VER_COMPANYNAME_STR         COMPANY_NAME_STR
+#define VER_LEGALCOPYRIGHT_STR      "Copyright (c) Citrix Systems Inc."
+
+#define VER_PRODUCTNAME_STR         "XENDISK"
+#define VER_PRODUCTVERSION          MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION,BUILD_NUMBER
+#define VER_PRODUCTVERSION_STR      MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." BUILD_NUMBER_STR
+
+#define VER_INTERNALNAME_STR        "XENDISK.SYS"
+#define VER_FILEDESCRIPTION_STR     "XENDISK"
+
+#define VER_FILETYPE                VFT_DRV
+#define VER_FILESUBTYPE             VFT2_DRV_SYSTEM
+
+#include <common.ver>
diff --git a/src/xenvbd.inf b/src/xenvbd.inf
index bc8627b..0d58453 100644
--- a/src/xenvbd.inf
+++ b/src/xenvbd.inf
@@ -46,6 +46,7 @@ CoInst_CopyFiles=11
 [SourceDisksFiles]
 xenvbd.sys=0,,
 xencrsh.sys=0,,
+xendisk.sys=0,,
 xenvbd_coinst.dll=0,,
 
 [Manufacturer] 
@@ -62,9 +63,25 @@ CopyFiles=XenVbd_Copyfiles
 [XenVbd_Copyfiles]
 xenvbd.sys
 xencrsh.sys
+xendisk.sys
+
+[XenVbd_Inst.HW] 
+AddReg=XenVbd_AddReg
+
+[XenVbd_AddReg]
+HKR,,"UpperFilters",0x00010000,"xendisk"
 
 [XenVbd_Inst.Services] 
 AddService=xenvbd,2,XenVbd_Service,
+AddService=xendisk,,XenDisk_Service,
+
+[XenDisk_Service] 
+DisplayName=%XenDiskDesc%
+ServiceType=%SERVICE_KERNEL_DRIVER% 
+StartType=%SERVICE_BOOT_START% 
+ErrorControl=%SERVICE_ERROR_NORMAL% 
+ServiceBinary=%12%\xendisk.sys 
+LoadOrderGroup="Scsi Miniport"
 
 [XenVbd_Service] 
 DisplayName=%XenVbdDesc%
@@ -95,6 +112,7 @@ HKR,,CoInstallers32,0x00010000,"xenvbd_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@M
 Company = "@COMPANY_NAME@"
 DiskDesc = "@PRODUCT_NAME@ PV Storage Host Adapter Package" 
 XenVbdDesc= "@PRODUCT_NAME@ PV Storage Host Adapter"
+XenDiskDesc= "@PRODUCT_NAME@ PV Storage Filter"
 
 SERVICE_BOOT_START = 0x0 
 SERVICE_SYSTEM_START = 0x1 
diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index 5e5fcbc..9782f19 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -51,6 +51,9 @@
 		<ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
 			<Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
 		</ProjectReference>
+		<ProjectReference Include="..\xendisk\xendisk.vcxproj">
+			<Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+		</ProjectReference>
 	</ItemGroup>
 	<ItemGroup>
 		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2012/xendisk/xendisk.vcxproj b/vs2012/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..333bc40
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<Import Project="..\configs.props" />
+
+	<PropertyGroup Label="Globals">
+		<Configuration>Windows Vista Debug</Configuration>
+		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+	</PropertyGroup>
+	<PropertyGroup Label="ProeprtySheets">
+		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+		<ConfigurationType>Driver</ConfigurationType>
+		<DriverType>WDM</DriverType>
+	</PropertyGroup>
+
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+	
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+	</PropertyGroup>
+	
+	<Import Project="..\targets.props" />
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+	
+	<PropertyGroup>
+		<IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+		<RunCodeAnalysis>true</RunCodeAnalysis>
+		<EnableInf2cat>false</EnableInf2cat>
+		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+	</PropertyGroup>
+
+	<ItemDefinitionGroup>
+		<ClCompile>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<WarningLevel>EnableAllWarnings</WarningLevel>
+			<DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+			<MultiProcessorCompilation>true</MultiProcessorCompilation>
+			<EnablePREfast>true</EnablePREfast>
+		</ClCompile>
+		<Link>
+			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+		</Link>
+		<Inf>
+			<SpecifyArchitecture>true</SpecifyArchitecture>
+			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+			<EnableVerbose>true</EnableVerbose>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+		<ClCompile>
+			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>x86</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+		<ClCompile>
+			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>amd64</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+
+	<ItemGroup>
+		<FilesToPackage Include="$(TargetPath)" />
+		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+	</ItemGroup>
+	<ItemGroup>
+		<ClCompile Include="../../src/xendisk/driver.c" />
+		<ClCompile Include="../../src/xendisk/fdo.c" />
+		<ClCompile Include="../../src/xendisk/pdo.c" />
+		<ClCompile Include="../../src/xendisk/thread.c" />
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2012/xendisk/xendisk.vcxproj.user b/vs2012/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..0b2b210
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<PropertyGroup>
+		<SignMode>TestSign</SignMode>
+		<TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+		<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+	</PropertyGroup>
+</Project>
diff --git a/vs2012/xenvbd.sln b/vs2012/xenvbd.sln
index 86fb1a5..15113cf 100644
--- a/vs2012/xenvbd.sln
+++ b/vs2012/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
 	ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 5d0de4d..8b2fa4f 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -80,6 +80,9 @@
     <ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
       <Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\xendisk\xendisk.vcxproj">
+      <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2013/xendisk/xendisk.vcxproj b/vs2013/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..39b9163
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="ProeprtySheets">
+    <ConfigurationType>Driver</ConfigurationType>
+    <DriverType>WDM</DriverType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/xendisk/driver.c" />
+    <ClCompile Include="../../src/xendisk/fdo.c" />
+    <ClCompile Include="../../src/xendisk/pdo.c" />
+    <ClCompile Include="../../src/xendisk/thread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2013/xendisk/xendisk.vcxproj.user b/vs2013/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..1f1f3c0
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
diff --git a/vs2013/xenvbd.sln b/vs2013/xenvbd.sln
index 13128c5..da798d2 100644
--- a/vs2013/xenvbd.sln
+++ b/vs2013/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
     ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}		
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Thu Sep 25 16:04:44 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 25 Sep 2014 16:04:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXBXA-0002ll-RA; Thu, 25 Sep 2014 16:04:44 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <owen.smith@citrix.com>) id 1XXBX9-0002lY-HC
	for win-pv-devel@lists.xenproject.org; Thu, 25 Sep 2014 16:04:44 +0000
Received: from [85.158.143.35:44208] by server-3.bemta-4.messagelabs.com id
	A1/A3-06192-A1D34245; Thu, 25 Sep 2014 16:04:42 +0000
X-Env-Sender: owen.smith@citrix.com
X-Msg-Ref: server-12.tower-21.messagelabs.com!1411661080!11972779!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31752 invoked from network); 25 Sep 2014 16:04:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-12.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Sep 2014 16:04:41 -0000
X-IronPort-AV: E=Sophos;i="5.04,598,1406592000"; d="scan'208";a="176185165"
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.80) with Microsoft SMTP Server id 14.3.181.6;
	Thu, 25 Sep 2014 12:00:24 -0400
Received: from dt05.uk.xensource.com ([10.80.227.144]
	helo=dt05.uk.xensource.com.)	by ukmail1.uk.xensource.com with esmtp
	(Exim
	4.69)	(envelope-from <owen.smith@citrix.com>)	id 1XXBSy-0004M6-4v;
	Thu, 25 Sep 2014 17:00:24 +0100
From: Owen smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 25 Sep 2014 16:59:18 +0100
Message-ID: <1411660758-12578-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 2.1.0
In-Reply-To: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
References: <1411660758-12578-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: paul.durrant@citrix.com, Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH v2 3/3] Add XenDisk device upper filter.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

From: Owen Smith <owen.smith@citrix.com>

XenDisk intercepts and translates IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP requests
to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
XenDisk is only neccessary because Storport does not do the translation
to SCSIOP_UNMAPs.

Changes for v2:
* replace inline functions with intrinsics for byte array access/ordering
* add brackets for Length calculation
* remove SRB flags relating to queues (irrelevant for miniports)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 build.py                            |    1 +
 src/xendisk/assert.h                |  220 ++++
 src/xendisk/debug.h                 |   94 ++
 src/xendisk/driver.c                |  203 ++++
 src/xendisk/driver.h                |   68 ++
 src/xendisk/fdo.c                   | 1862 +++++++++++++++++++++++++++++++
 src/xendisk/fdo.h                   |   78 ++
 src/xendisk/mutex.h                 |  113 ++
 src/xendisk/pdo.c                   | 2079 +++++++++++++++++++++++++++++++++++
 src/xendisk/pdo.h                   |   90 ++
 src/xendisk/thread.c                |  225 ++++
 src/xendisk/thread.h                |   73 ++
 src/xendisk/types.h                 |   53 +
 src/xendisk/util.h                  |  222 ++++
 src/xendisk/xendisk.rc              |   56 +
 src/xenvbd.inf                      |   18 +
 vs2012/package/package.vcxproj      |    3 +
 vs2012/xendisk/xendisk.vcxproj      |   84 ++
 vs2012/xendisk/xendisk.vcxproj.user |    8 +
 vs2012/xenvbd.sln                   |   28 +
 vs2013/package/package.vcxproj      |    3 +
 vs2013/xendisk/xendisk.vcxproj      |  112 ++
 vs2013/xendisk/xendisk.vcxproj.user |    8 +
 vs2013/xenvbd.sln                   |   28 +
 24 files changed, 5729 insertions(+)
 create mode 100644 src/xendisk/assert.h
 create mode 100644 src/xendisk/debug.h
 create mode 100644 src/xendisk/driver.c
 create mode 100644 src/xendisk/driver.h
 create mode 100644 src/xendisk/fdo.c
 create mode 100644 src/xendisk/fdo.h
 create mode 100644 src/xendisk/mutex.h
 create mode 100644 src/xendisk/pdo.c
 create mode 100644 src/xendisk/pdo.h
 create mode 100644 src/xendisk/thread.c
 create mode 100644 src/xendisk/thread.h
 create mode 100644 src/xendisk/types.h
 create mode 100644 src/xendisk/util.h
 create mode 100644 src/xendisk/xendisk.rc
 create mode 100644 vs2012/xendisk/xendisk.vcxproj
 create mode 100644 vs2012/xendisk/xendisk.vcxproj.user
 create mode 100644 vs2013/xendisk/xendisk.vcxproj
 create mode 100644 vs2013/xendisk/xendisk.vcxproj.user

diff --git a/build.py b/build.py
index 26261ad..3a71d0c 100644
--- a/build.py
+++ b/build.py
@@ -368,6 +368,7 @@ if __name__ == '__main__':
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
         run_sdv('xencrsh', driver, vs)
+        run_sdv('xendisk', driver, vs)
         run_sdv('xenvbd', driver, vs)
 
     archive(driver + '\\source.tgz', manifest().splitlines(), tgz=True)
diff --git a/src/xendisk/assert.h b/src/xendisk/assert.h
new file mode 100644
index 0000000..cd571bd
--- /dev/null
+++ b/src/xendisk/assert.h
@@ -0,0 +1,220 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_ASSERT_H
+#define _XENDISK_ASSERT_H
+
+#include <ntddk.h>
+
+#include "debug.h"
+
+static FORCEINLINE VOID
+__BugCheck(
+    __in  ULONG       Code,
+    __in_opt ULONG_PTR   Parameter1,
+    __in_opt ULONG_PTR   Parameter2,
+    __in_opt ULONG_PTR   Parameter3,
+    __in_opt ULONG_PTR   Parameter4
+    )
+{
+#pragma prefast(suppress:28159)
+    KeBugCheckEx(Code,
+                 Parameter1,
+                 Parameter2,
+                 Parameter3,
+                 Parameter4);
+}
+
+#define ASSERTION_FAILURE   0x0000DEAD
+
+
+#define BUG(_TEXT)                                              \
+        do {                                                    \
+            const CHAR  *_Text = (_TEXT);                       \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT "\n");                          \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text,                        \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       0);                                      \
+        } while (FALSE)
+
+#define BUG_MSG(_TEXT1, _TEXT2)                                 \
+        do {                                                    \
+            const CHAR  *_Text1 = (_TEXT1);                     \
+            const CHAR  *_Text2 = (_TEXT2);                     \
+            const CHAR  *_File = __FILE__;                      \
+            ULONG       _Line = __LINE__;                       \
+                                                                \
+            Error("BUG: " _TEXT1 " %s\n", _Text2);              \
+            __BugCheck(ASSERTION_FAILURE,                       \
+                       (ULONG_PTR)_Text1,                       \
+                       (ULONG_PTR)_File,                        \
+                       (ULONG_PTR)_Line,                        \
+                       (ULONG_PTR)_Text2);                      \
+        } while (FALSE)
+
+#define BUG_ON(_EXP)                           \
+        if (_EXP) BUG(#_EXP)
+
+#define BUG_ON_MSG(_EXP, _TEXT)                \
+        if (_EXP) BUG_MSG(#_EXP, _TEXT)
+
+#if DBG
+
+#define __NT_ASSERT(_EXP)                                       \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP "\n"),                \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __NT_ASSERT_MSG(_EXP, _TEXT)                            \
+        ((!(_EXP)) ?                                            \
+        (Error("ASSERTION FAILED: " #_EXP " " #_TEXT "\n"),     \
+         __annotation(L"Debug", L"AssertFail", L#_EXP),         \
+         DbgRaiseAssertionFailure(), FALSE) :                   \
+        TRUE)
+
+#define __ASSERT(_EXP)              __NT_ASSERT(_EXP)
+#define __ASSERT_MSG(_EXP, _TEXT)   __NT_ASSERT_MSG(_EXP, _TEXT)
+
+#else   // DBG
+
+#define __ASSERT(_EXP)              BUG_ON(!(_EXP))
+#define __ASSERT_MSG(_EXP, _TEXT)   BUG_ON_MSG(!(_EXP), _TEXT)
+
+#endif  // DBG
+
+#undef  ASSERT
+
+#define ASSERT(_EXP)                    \
+        do {                            \
+            __ASSERT(_EXP);             \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT_MSG(_EXP, _TEXT)         \
+        do {                            \
+            __ASSERT_MSG(_EXP, _TEXT);  \
+            __analysis_assume(_EXP);    \
+        } while (FALSE)
+
+#define ASSERT3U(_X, _OP, _Y)                       \
+        do {                                        \
+            ULONGLONG   _Lval = (ULONGLONG)(_X);    \
+            ULONGLONG   _Rval = (ULONGLONG)(_Y);    \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %llu\n", #_X, _Lval);   \
+                Error("%s = %llu\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3S(_X, _OP, _Y)                       \
+        do {                                        \
+            LONGLONG    _Lval = (LONGLONG)(_X);     \
+            LONGLONG    _Rval = (LONGLONG)(_Y);     \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %lld\n", #_X, _Lval);   \
+                Error("%s = %lld\n", #_Y, _Rval);   \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERT3P(_X, _OP, _Y)                       \
+        do {                                        \
+            PVOID   _Lval = (PVOID)(_X);            \
+            PVOID   _Rval = (PVOID)(_Y);            \
+            if (!(_Lval _OP _Rval)) {               \
+                Error("%s = %p\n", #_X, _Lval);     \
+                Error("%s = %p\n", #_Y, _Rval);     \
+                ASSERT(_X _OP _Y);                  \
+            }                                       \
+        } while (FALSE)
+
+#define ASSERTREFCOUNT(_X, _OP, _Y, _Z)             \
+        do {                                        \
+            LONG    _L = (LONG)(_X);                \
+            LONG    _R = (LONG)(_Y);                \
+            if (!(_L _OP _R)) {                     \
+                Error("%s:%s = %d\n", (_Z), #_X, _L); \
+                Error("%s:%s = %d\n", (_Z), #_Y, _R); \
+                ASSERT_MSG(_X _OP _Y, (_Z));        \
+            }                                       \
+        } while (FALSE)
+
+#ifndef TEST_MEMORY
+#define TEST_MEMORY DBG
+#endif
+
+#if TEST_MEMORY
+
+__checkReturn
+static __inline BOOLEAN
+_IsZeroMemory(
+    __in const PCHAR Caller,
+    __in const PCHAR Name,
+    __in PVOID       Buffer,
+    __in ULONG       Length
+    )
+{
+    ULONG           Offset;
+
+    Offset = 0;
+    while (Offset < Length) {
+        if (*((PUCHAR)Buffer + Offset) != 0) {
+            Error("%s: non-zero byte in %s (0x%p+0x%x)\n", Caller, Name, Buffer, Offset);
+            return FALSE;
+        }
+        Offset++;
+    }
+
+    return TRUE;
+}
+
+#define IsZeroMemory(_Buffer, _Length) \
+        _IsZeroMemory(__FUNCTION__, #_Buffer, (_Buffer), (_Length))
+
+#else   // TEST_MEMORY
+
+#define IsZeroMemory(_Buffer, _Length)  TRUE
+
+#endif  // TEST_MEMORY
+
+#define IMPLY(_X, _Y)   (!(_X) || (_Y))
+#define EQUIV(_X, _Y)   (IMPLY((_X), (_Y)) && IMPLY((_Y), (_X)))
+
+#endif  // _XENDISK_ASSERT_H
+
diff --git a/src/xendisk/debug.h b/src/xendisk/debug.h
new file mode 100644
index 0000000..f592f86
--- /dev/null
+++ b/src/xendisk/debug.h
@@ -0,0 +1,94 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _DEBUG_H
+#define _DEBUG_H
+
+#include <ntddk.h>
+#include <stdarg.h>
+
+#ifdef  _SDV_
+#define __MODULE__ ""
+#endif
+
+// DEBUG_FILTER_MASKs
+// Set these to see relevant output
+// ERROR        0x00000001
+// WARNING      0x00000002
+// TRACE        0x00000004
+// INFO         0x00000008
+
+#pragma warning(disable:4127)   // conditional expression is constant
+
+//
+// Debug Output and Logging
+//
+static __inline VOID
+__DebugMessage(
+    __in    ULONG       Level,
+    __in __nullterminated const CHAR  *Prefix,
+    __in __nullterminated const CHAR  *Format,
+    ...
+    )
+{
+    va_list         Arguments;
+
+    va_start(Arguments, Format);
+
+#pragma prefast(suppress:6001) // Using uninitialized memory
+    vDbgPrintExWithPrefix(Prefix,
+                          DPFLTR_IHVDRIVER_ID,
+                          Level,
+                          Format,
+                          Arguments);
+    va_end(Arguments);
+}
+
+#define Error(...)  \
+        __DebugMessage(DPFLTR_ERROR_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#define Warning(...)  \
+        __DebugMessage(DPFLTR_WARNING_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#if DBG
+#define Trace(...)  \
+        __DebugMessage(DPFLTR_TRACE_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+#else   // DBG
+#define Trace(...) \
+        (VOID)(__VA_ARGS__)
+#endif  // DBG
+
+#define Verbose(...) \
+        __DebugMessage(DPFLTR_INFO_LEVEL, __MODULE__ "|" __FUNCTION__ ":", __VA_ARGS__)
+
+#include "assert.h"
+
+#endif  // _DEBUG_H
diff --git a/src/xendisk/driver.c b/src/xendisk/driver.c
new file mode 100644
index 0000000..743fc61
--- /dev/null
+++ b/src/xendisk/driver.c
@@ -0,0 +1,203 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#include <ntddk.h>
+#include "driver.h"
+#include "util.h"
+#include "debug.h"
+#include "assert.h"
+#include <version.h>
+
+extern PULONG       InitSafeBootMode;
+
+typedef struct _XENDISK_DRIVER {
+    PDRIVER_OBJECT              DriverObject;
+} XENDISK_DRIVER, *PXENDISK_DRIVER;
+
+static XENDISK_DRIVER   Driver;
+
+static FORCEINLINE VOID
+__DriverSetDriverObject(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    Driver.DriverObject = DriverObject;
+}
+
+static FORCEINLINE PDRIVER_OBJECT
+__DriverGetDriverObject(
+    VOID
+    )
+{
+    return Driver.DriverObject;
+}
+
+PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    )
+{
+    return __DriverGetDriverObject();
+}
+
+DRIVER_UNLOAD   DriverUnload;
+
+VOID
+DriverUnload(
+    IN  PDRIVER_OBJECT  DriverObject
+    )
+{
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(NULL);
+
+    ASSERT(IsZeroMemory(&Driver, sizeof (XENDISK_DRIVER)));
+
+    Trace("<====\n");
+}
+
+DRIVER_ADD_DEVICE   AddDevice;
+
+NTSTATUS
+#pragma prefast(suppress:28152) // Does not clear DO_DEVICE_INITIALIZING
+AddDevice(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    NTSTATUS            status;
+
+    ASSERT3P(DriverObject, ==, __DriverGetDriverObject());
+
+    status = FdoCreate(PhysicalDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    return STATUS_SUCCESS;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+DRIVER_DISPATCH Dispatch;
+
+NTSTATUS 
+Dispatch(
+    IN PDEVICE_OBJECT   DeviceObject,
+    IN PIRP             Irp
+    )
+{
+    PXENDISK_DX         Dx;
+    NTSTATUS            status;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3P(Dx->DeviceObject, ==, DeviceObject);
+
+    if (Dx->DevicePnpState == Deleted) {
+        status = STATUS_NO_SUCH_DEVICE;
+
+        Irp->IoStatus.Status = status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        goto done;
+    }
+
+    status = STATUS_NOT_SUPPORTED;
+    switch (Dx->Type) {
+    case PHYSICAL_DEVICE_OBJECT: {
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        status = PdoDispatch(Pdo, Irp);
+        break;
+    }
+    case FUNCTION_DEVICE_OBJECT: {
+        PXENDISK_FDO    Fdo = Dx->Fdo;
+
+        status = FdoDispatch(Fdo, Irp);
+        break;
+    }
+    default:
+        ASSERT(FALSE);
+        break;
+    }
+
+done:
+    return status;
+}
+
+DRIVER_INITIALIZE   DriverEntry;
+
+NTSTATUS
+DriverEntry(
+    IN  PDRIVER_OBJECT  DriverObject,
+    IN  PUNICODE_STRING RegistryPath
+    )
+{
+    ULONG               Index;
+
+    ASSERT3P(__DriverGetDriverObject(), ==, NULL);
+    UNREFERENCED_PARAMETER(RegistryPath);
+
+    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
+
+    Trace("====>\n");
+
+    __DriverSetDriverObject(DriverObject);
+
+    DriverObject->DriverUnload = DriverUnload;
+
+    if (*InitSafeBootMode > 0)
+        goto done;
+
+    Verbose("XENDISK %d.%d.%d (%d) (%02d.%02d.%04d)\n",
+            MAJOR_VERSION,
+            MINOR_VERSION,
+            MICRO_VERSION,
+            BUILD_NUMBER,
+            DAY,
+            MONTH,
+            YEAR);
+
+    DriverObject->DriverExtension->AddDevice = AddDevice;
+
+    for (Index = 0; Index <= IRP_MJ_MAXIMUM_FUNCTION; Index++) {
+#pragma prefast(suppress:28169) // No __drv_dispatchType annotation
+#pragma prefast(suppress:28168) // No matching __drv_dispatchType annotation for IRP_MJ_CREATE
+        DriverObject->MajorFunction[Index] = Dispatch;
+    }
+
+done:
+    Trace("<====\n");
+    return STATUS_SUCCESS;
+}
diff --git a/src/xendisk/driver.h b/src/xendisk/driver.h
new file mode 100644
index 0000000..b47e21b
--- /dev/null
+++ b/src/xendisk/driver.h
@@ -0,0 +1,68 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_DRIVER_H
+#define _XENDISK_DRIVER_H
+
+#include "fdo.h"
+#include "pdo.h"
+
+extern PDRIVER_OBJECT
+DriverGetDriverObject(
+    VOID
+    );
+
+#pragma warning(push)
+#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union
+
+typedef struct _XENDISK_DX {
+    PDEVICE_OBJECT      DeviceObject;
+    DEVICE_OBJECT_TYPE  Type;
+
+    DEVICE_PNP_STATE    DevicePnpState;
+    DEVICE_PNP_STATE    PreviousDevicePnpState;
+
+    SYSTEM_POWER_STATE  SystemPowerState;
+    DEVICE_POWER_STATE  DevicePowerState;
+
+    IO_REMOVE_LOCK      RemoveLock;
+
+    LIST_ENTRY          ListEntry;
+
+    union {
+        PXENDISK_FDO    Fdo;
+        PXENDISK_PDO    Pdo;
+    };
+} XENDISK_DX, *PXENDISK_DX;
+
+#pragma warning(pop)
+
+#endif // _XENDISK_DRIVER_H
diff --git a/src/xendisk/fdo.c b/src/xendisk/fdo.c
new file mode 100644
index 0000000..771c82e
--- /dev/null
+++ b/src/xendisk/fdo.c
@@ -0,0 +1,1862 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <names.h>
+
+#include "driver.h"
+#include "fdo.h"
+#include "pdo.h"
+#include "thread.h"
+#include "mutex.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define FDO_TAG 'ODF'
+
+struct _XENDISK_FDO {
+    PXENDISK_DX                     Dx;
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    PDEVICE_OBJECT                  PhysicalDeviceObject;
+
+    PXENDISK_THREAD                 SystemPowerThread;
+    PIRP                            SystemPowerIrp;
+    PXENDISK_THREAD                 DevicePowerThread;
+    PIRP                            DevicePowerIrp;
+
+    MUTEX                           Mutex;
+    ULONG                           References;
+};
+
+static FORCEINLINE PVOID
+__FdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, FDO_TAG);
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+static FORCEINLINE VOID
+__FdoRestoreDevicePnpState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__FdoGetDevicePnpState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+static FORCEINLINE VOID
+__FdoSetDevicePowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Fdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__FdoGetDevicePowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__FdoSetSystemPowerState(
+    IN  PXENDISK_FDO        Fdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX              Dx = Fdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__FdoGetSystemPowerState(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PXENDISK_DX         Dx = Fdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+static FORCEINLINE PDEVICE_OBJECT
+__FdoGetPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    return Fdo->PhysicalDeviceObject;
+}
+
+VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    InsertTailList(&Fdo->Dx->ListEntry, &Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    Fdo->References++;
+}
+
+VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    )
+{
+    PXENDISK_DX         Dx;
+
+    Dx = (PXENDISK_DX)DeviceObject->DeviceExtension;
+    ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+    RemoveEntryList(&Dx->ListEntry);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+}
+
+static FORCEINLINE VOID
+__FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    AcquireMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoAcquireMutex(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    ReleaseMutex(&Fdo->Mutex);
+}
+
+VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    )
+{
+    __FdoReleaseMutex(Fdo);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+}
+
+static FORCEINLINE VOID
+__FdoEnumerate(
+    IN  PXENDISK_FDO        Fdo,
+    IN  PDEVICE_RELATIONS   Relations
+    )
+{
+    PDEVICE_OBJECT          *PhysicalDeviceObject;
+    ULONG                   Count;
+    PLIST_ENTRY             ListEntry;
+    ULONG                   Index;
+    NTSTATUS                status;
+
+    Count = Relations->Count;
+    ASSERT(Count != 0);
+
+    PhysicalDeviceObject = __FdoAllocate(sizeof (PDEVICE_OBJECT) * Count);
+
+    status = STATUS_NO_MEMORY;
+    if (PhysicalDeviceObject == NULL)
+        goto fail1;
+
+    RtlCopyMemory(PhysicalDeviceObject,
+                  Relations->Objects,
+                  sizeof (PDEVICE_OBJECT) * Count);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    // Remove any PDOs that do not appear in the device list
+    ListEntry = Fdo->Dx->ListEntry.Flink;
+    while (ListEntry != &Fdo->Dx->ListEntry) {
+        PLIST_ENTRY     Next = ListEntry->Flink;
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+        BOOLEAN         Missing;
+
+        Missing = TRUE;
+        for (Index = 0; Index < Count; Index++) {
+            if (PdoGetPhysicalDeviceObject(Pdo) == PhysicalDeviceObject[Index]) {
+                Missing = FALSE;
+#pragma prefast(suppress:6387)  // PhysicalDeviceObject[Index] could be NULL
+                ObDereferenceObject(PhysicalDeviceObject[Index]);
+                PhysicalDeviceObject[Index] = NULL; // avoid duplication
+                break;
+            }
+        }
+
+        if (Missing && !PdoIsMissing(Pdo)) {
+            if (PdoGetDevicePnpState(Pdo) == Present) {
+                PdoSetDevicePnpState(Pdo, Deleted);
+                PdoDestroy(Pdo);
+            } else {
+                PdoSetMissing(Pdo, "device disappeared");
+            }
+        }
+
+        ListEntry = Next;
+    }
+
+    // Walk the list and create PDO filters for any new devices
+    for (Index = 0; Index < Count; Index++) {
+#pragma warning(suppress:6385)  // Reading invalid data from 'PhysicalDeviceObject'
+        if (PhysicalDeviceObject[Index] != NULL) {
+            (VOID) PdoCreate(Fdo,
+                             PhysicalDeviceObject[Index]);
+            ObDereferenceObject(PhysicalDeviceObject[Index]);
+        }
+    }
+    
+    ReleaseMutex(&Fdo->Mutex);
+
+    __FdoFree(PhysicalDeviceObject);
+    return;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+FdoForwardIrpSynchronously(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStartDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __FdoSetSystemPowerState(Fdo, PowerSystemWorking);
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePnpState(Fdo, Started);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __FdoRestoreDevicePnpState(Fdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoStopDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoStopDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoCancelRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoRestoreDevicePnpState(Fdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoCancelRemoveDevice,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoSurpriseRemoval(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __FdoSetDevicePnpState(Fdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoSurpriseRemoval,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoRemoveDevice(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__FdoGetDevicePowerState(Fdo) != PowerDeviceD0)
+        goto done;
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Fdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
+    __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
+
+done:
+    __FdoSetDevicePnpState(Fdo, Deleted);
+
+    IoReleaseRemoveLockAndWait(&Fdo->Dx->RemoveLock, Irp);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    AcquireMutex(&Fdo->Mutex);
+    ASSERT3U(Fdo->References, !=, 0);
+    --Fdo->References;
+    ReleaseMutex(&Fdo->Mutex);
+
+    if (Fdo->References == 0)
+        FdoDestroy(Fdo);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoQueryDeviceRelations(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoQueryDeviceRelations(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               Size;
+    PDEVICE_RELATIONS   Relations;
+    PLIST_ENTRY         ListEntry;
+    ULONG               Count;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoQueryDeviceRelations,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    if (StackLocation->Parameters.QueryDeviceRelations.Type != BusRelations)
+        goto done;
+
+    Relations = (PDEVICE_RELATIONS)Irp->IoStatus.Information;
+
+    if (Relations->Count != 0)
+        __FdoEnumerate(Fdo, Relations);
+
+    ExFreePool(Relations);
+
+    AcquireMutex(&Fdo->Mutex);
+
+    Count = 0;
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink)
+        Count++;
+
+    Size = FIELD_OFFSET(DEVICE_RELATIONS, Objects) + (sizeof (DEVICE_OBJECT) * __min(Count, 1));
+
+    Relations = ExAllocatePoolWithTag(PagedPool, Size, 'TLIF');
+
+    status = STATUS_NO_MEMORY;
+    if (Relations == NULL)
+        goto fail3;
+
+    RtlZeroMemory(Relations, Size);
+
+    for (ListEntry = Fdo->Dx->ListEntry.Flink;
+         ListEntry != &Fdo->Dx->ListEntry;
+         ListEntry = ListEntry->Flink) {
+        PXENDISK_DX     Dx = CONTAINING_RECORD(ListEntry, XENDISK_DX, ListEntry);
+        PXENDISK_PDO    Pdo = Dx->Pdo;
+
+        ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+        if (PdoGetDevicePnpState(Pdo) == Present)
+            PdoSetDevicePnpState(Pdo, Enumerated);
+
+        ObReferenceObject(PdoGetPhysicalDeviceObject(Pdo));
+        Relations->Objects[Relations->Count++] = PdoGetPhysicalDeviceObject(Pdo);
+    }
+
+    ASSERT3U(Relations->Count, ==, Count);
+
+    Trace("%d PDO(s)\n", Relations->Count);
+
+    ReleaseMutex(&Fdo->Mutex);
+
+    Irp->IoStatus.Information = (ULONG_PTR)Relations;
+    status = STATUS_SUCCESS;
+
+done:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+
+fail3:
+    ReleaseMutex(&Fdo->Mutex);
+
+fail2:
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPnp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = FdoStartDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = FdoQueryStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = FdoCancelStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = FdoStopDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = FdoQueryRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = FdoSurpriseRemoval(Fdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = FdoRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = FdoCancelRemoveDevice(Fdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_DEVICE_RELATIONS:
+        status = FdoQueryDeviceRelations(Fdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPnp,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerDeviceStateName(__FdoGetDevicePowerState(Fdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __FdoSetDevicePowerState(Fdo, DeviceState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoSetDevicePowerUp(Fdo, Irp) :
+             __FdoSetDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+done:
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    Verbose("%p: %s -> %s\n",
+         Fdo->Dx->DeviceObject,
+         PowerSystemStateName(__FdoGetSystemPowerState(Fdo)),
+         PowerSystemStateName(SystemState));
+
+    __FdoSetSystemPowerState(Fdo, SystemState);
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoSetSystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoSetSystemPowerUp(Fdo, Irp) :
+             __FdoSetSystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerUp(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __FdoGetDevicePowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQueryDevicePower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __FdoGetDevicePowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __FdoGetDevicePowerState(Fdo)) ?
+             __FdoQueryDevicePowerUp(Fdo, Irp) :
+             __FdoQueryDevicePowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerUp(
+    IN  PXENDISK_FDO     Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPowerDown(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __FdoGetSystemPowerState(Fdo));
+
+    status = FdoForwardIrpSynchronously(Fdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__FdoQuerySystemPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __FdoGetSystemPowerState(Fdo)) {
+        status = FdoForwardIrpSynchronously(Fdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __FdoGetSystemPowerState(Fdo)) ?
+             __FdoQuerySystemPowerUp(Fdo, Irp) :
+             __FdoQuerySystemPowerDown(Fdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+FdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetDevicePower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQueryDevicePower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+FdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Fdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Fdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Fdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __FdoSetSystemPower(Fdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __FdoQuerySystemPower(Fdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchPower(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->DevicePowerIrp, ==, NULL);
+        Fdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Fdo->SystemPowerIrp, ==, NULL);
+        Fdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Fdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __FdoDispatchPower,
+                               Fdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__FdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_FDO        Fdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchDefault(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Fdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __FdoDispatchDefault,
+                           Fdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_PNP:
+        status = FdoDispatchPnp(Fdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = FdoDispatchPower(Fdo, Irp);
+        break;
+
+    default:
+        status = FdoDispatchDefault(Fdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject;
+    ULONG               DeviceType;
+    PDEVICE_OBJECT      FilterDeviceObject;
+    PXENDISK_DX         Dx;
+    PXENDISK_FDO        Fdo;
+    NTSTATUS            status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'FilterDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof (XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = FUNCTION_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Added;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, FDO_TAG, 0, 0);
+
+    Fdo = __FdoAllocate(sizeof (XENDISK_FDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Fdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Fdo->Dx = Dx;
+    Fdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Fdo->LowerDeviceObject = LowerDeviceObject;
+
+    status = ThreadCreate(FdoSystemPower, Fdo, &Fdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(FdoDevicePower, Fdo, &Fdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    InitializeMutex(&Fdo->Mutex);
+    InitializeListHead(&Dx->ListEntry);
+    Fdo->References = 1;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Fdo = Fdo;
+
+#pragma prefast(suppress:28182)  // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Fdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Fdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT(IsListEmpty(&Dx->ListEntry));
+    ASSERT3U(Fdo->References, ==, 0);
+    ASSERT3U(__FdoGetDevicePnpState(Fdo), ==, Deleted);
+
+    Dx->Fdo = NULL;
+
+    RtlZeroMemory(&Fdo->Mutex, sizeof (MUTEX));
+
+    ThreadAlert(Fdo->DevicePowerThread);
+    ThreadJoin(Fdo->DevicePowerThread);
+    Fdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Fdo->SystemPowerThread);
+    ThreadJoin(Fdo->SystemPowerThread);
+    Fdo->SystemPowerThread = NULL;
+
+    Fdo->LowerDeviceObject = NULL;
+    Fdo->PhysicalDeviceObject = NULL;
+    Fdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Fdo, sizeof (XENDISK_FDO)));
+    __FdoFree(Fdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/fdo.h b/src/xendisk/fdo.h
new file mode 100644
index 0000000..8aa0529
--- /dev/null
+++ b/src/xendisk/fdo.h
@@ -0,0 +1,78 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_FDO_H
+#define _XENDISK_FDO_H
+
+#include <ntddk.h>
+#include "types.h"
+
+typedef struct _XENDISK_FDO XENDISK_FDO, *PXENDISK_FDO;
+
+extern VOID
+FdoAddPhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoRemovePhysicalDeviceObject(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  DeviceObject
+    );
+
+extern VOID
+FdoAcquireMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern VOID
+FdoReleaseMutex(
+    IN  PXENDISK_FDO     Fdo
+    );
+
+extern NTSTATUS
+FdoDispatch(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PIRP            Irp
+    );
+
+extern NTSTATUS
+FdoCreate(
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+FdoDestroy(
+    IN  PXENDISK_FDO    Fdo
+    );
+
+#endif // _XENDISK_FDO_H
diff --git a/src/xendisk/mutex.h b/src/xendisk/mutex.h
new file mode 100644
index 0000000..bcc2414
--- /dev/null
+++ b/src/xendisk/mutex.h
@@ -0,0 +1,113 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_MUTEX_H
+#define _XENDISK_MUTEX_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _MUTEX {
+    PKTHREAD    Owner;
+    KEVENT      Event;
+} MUTEX, *PMUTEX;
+
+static FORCEINLINE VOID
+InitializeMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    RtlZeroMemory(Mutex, sizeof (MUTEX));
+
+    KeInitializeEvent(&Mutex->Event, SynchronizationEvent, TRUE);
+}
+
+static FORCEINLINE BOOLEAN
+__drv_maxIRQL(PASSIVE_LEVEL)
+TryAcquireMutex(
+    IN  PMUTEX      Mutex
+    )
+{
+    LARGE_INTEGER   Timeout;
+    NTSTATUS        status;
+
+    Timeout.QuadPart = 0;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   &Timeout);
+    if (status == STATUS_TIMEOUT)
+        return FALSE;
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+
+    return TRUE;
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+AcquireMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    NTSTATUS    status;
+
+    status = KeWaitForSingleObject(&Mutex->Event,
+                                   Executive,
+                                   KernelMode,
+                                   FALSE,
+                                   NULL);
+
+    ASSERT(NT_SUCCESS(status));
+
+    ASSERT3P(Mutex->Owner, ==, NULL);
+    Mutex->Owner = KeGetCurrentThread();
+}
+
+static FORCEINLINE VOID
+__drv_maxIRQL(PASSIVE_LEVEL)
+ReleaseMutex(
+    IN  PMUTEX  Mutex
+    )
+{
+    ASSERT3P(Mutex->Owner, ==, KeGetCurrentThread());
+    Mutex->Owner = NULL;
+
+    KeSetEvent(&Mutex->Event, IO_NO_INCREMENT, FALSE);
+}
+
+#endif  // _XENDISK_MUTEX_H
diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
new file mode 100644
index 0000000..3de958a
--- /dev/null
+++ b/src/xendisk/pdo.c
@@ -0,0 +1,2079 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#define INITGUID 1
+
+#include <ntddk.h>
+#include <wdmguid.h>
+#include <ntstrsafe.h>
+#include <stdlib.h>
+#include <storport.h>
+#include <Ntddstor.h>
+#include <Ntddscsi.h>
+#include <names.h>
+
+#include "fdo.h"
+#include "pdo.h"
+#include "driver.h"
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define PDO_TAG 'ODP'
+
+struct _XENDISK_PDO {
+    PXENDISK_DX                 Dx;
+    PDEVICE_OBJECT              LowerDeviceObject;
+    PDEVICE_OBJECT              PhysicalDeviceObject;
+
+    PXENDISK_THREAD             SystemPowerThread;
+    PIRP                        SystemPowerIrp;
+    PXENDISK_THREAD             DevicePowerThread;
+    PIRP                        DevicePowerIrp;
+
+    PXENDISK_FDO                Fdo;
+    BOOLEAN                     Missing;
+    const CHAR                  *Reason;
+
+    ULONG                       SectorSize;
+};
+
+static FORCEINLINE PVOID
+__PdoAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, PDO_TAG);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    // We can never transition out of the deleted state
+    ASSERT(Dx->DevicePnpState != Deleted || State == Deleted);
+
+    Dx->PreviousDevicePnpState = Dx->DevicePnpState;
+    Dx->DevicePnpState = State;
+}
+
+VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    __PdoSetDevicePnpState(Pdo, State);
+}
+
+static FORCEINLINE VOID
+__PdoRestoreDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    if (Dx->DevicePnpState == State)
+        Dx->DevicePnpState = Dx->PreviousDevicePnpState;
+}
+
+static FORCEINLINE DEVICE_PNP_STATE
+__PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePnpState;
+}
+
+DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoGetDevicePnpState(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoSetDevicePowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->DevicePowerState = State;
+}
+
+static FORCEINLINE DEVICE_POWER_STATE
+__PdoGetDevicePowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->DevicePowerState;
+}
+
+static FORCEINLINE VOID
+__PdoSetSystemPowerState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  SYSTEM_POWER_STATE  State
+    )
+{
+    PXENDISK_DX             Dx = Pdo->Dx;
+
+    Dx->SystemPowerState = State;
+}
+
+static FORCEINLINE SYSTEM_POWER_STATE
+__PdoGetSystemPowerState(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_DX         Dx = Pdo->Dx;
+
+    return Dx->SystemPowerState;
+}
+
+PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->PhysicalDeviceObject;
+}
+
+static FORCEINLINE VOID
+__PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    Pdo->Reason = Reason;
+    Pdo->Missing = TRUE;
+}
+
+VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    )
+{
+    __PdoSetMissing(Pdo, Reason);
+}
+
+static FORCEINLINE BOOLEAN
+__PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return Pdo->Missing;
+}
+
+BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    return __PdoIsMissing(Pdo);
+}
+
+static FORCEINLINE VOID
+__PdoLink(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PXENDISK_FDO    Fdo
+    )
+{
+    Pdo->Fdo = Fdo;
+    FdoAddPhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+}
+
+static FORCEINLINE VOID
+__PdoUnlink(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PXENDISK_FDO        Fdo = Pdo->Fdo;
+
+    ASSERT(Fdo != NULL);
+
+    FdoRemovePhysicalDeviceObject(Fdo, Pdo->Dx->DeviceObject);
+
+    Pdo->Fdo = NULL;
+}
+
+static FORCEINLINE PXENDISK_FDO
+__PdoGetFdo(
+    IN  PXENDISK_PDO Pdo
+    )
+{
+    return Pdo->Fdo;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpSynchronously(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PKEVENT             Event = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Irp);
+
+    KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoForwardIrpSynchronously(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    KEVENT              Event;
+    NTSTATUS            status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoForwardIrpSynchronously,
+                           &Event,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event,
+                                     Executive,
+                                     KernelMode,
+                                     FALSE,
+                                     NULL);
+        status = Irp->IoStatus.Status;
+    } else {
+        ASSERT3U(status, ==, Irp->IoStatus.Status);
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoForwardIrpAndForget(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoForwardIrpAndForget(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                            __PdoForwardIrpAndForget,
+                            Pdo,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+
+    return IoCallDriver(Pdo->LowerDeviceObject, Irp);
+}
+
+static NTSTATUS
+PdoCompleteIrp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp,
+    IN  NTSTATUS        Status
+    )
+{
+    Irp->IoStatus.Status = Status;
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    return Status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryProperty(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR    Descriptor = Irp->UserBuffer;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    if (!NT_SUCCESS(Irp->IoStatus.Status))
+        goto done;
+
+    Descriptor = Irp->UserBuffer;
+    Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
+    Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, Pdo->SectorSize);
+
+done:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryProperty(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PSTORAGE_PROPERTY_QUERY Query;
+    PDEVICE_TRIM_DESCRIPTOR Trim;
+    NTSTATUS                status;
+
+    Query = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Query->PropertyId) {
+    case StorageAccessAlignmentProperty:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                                __PdoQueryProperty,
+                                Pdo,
+                                TRUE,
+                                TRUE,
+                                TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+
+    case StorageDeviceTrimProperty:
+        Trim = Irp->AssociatedIrp.SystemBuffer;
+
+        Trim->Version = 0;
+        Trim->Size = sizeof(DEVICE_TRIM_DESCRIPTOR);
+        Trim->TrimEnabled = TRUE;
+
+        Irp->IoStatus.Information = (ULONG_PTR)sizeof(DEVICE_TRIM_DESCRIPTOR);
+        status = PdoCompleteIrp(Pdo, Irp, STATUS_SUCCESS);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSendAwaitSrb(
+    IN  PDEVICE_OBJECT          DeviceObject,
+    IN  PIRP                    Irp,
+    IN  PVOID                   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceObject);
+    UNREFERENCED_PARAMETER(Context);
+
+    *(Irp->UserIosb) = Irp->IoStatus;
+
+    if (Irp->MdlAddress) {
+        MmUnlockPages(Irp->MdlAddress);
+        IoFreeMdl(Irp->MdlAddress);
+    }
+
+    KeSetEvent(Irp->UserEvent, IO_NO_INCREMENT, FALSE);
+
+    IoFreeIrp(Irp);
+    return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+static NTSTATUS
+PdoSendAwaitSrb(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PSCSI_REQUEST_BLOCK     Srb
+    )
+{
+    PIRP                        Irp;
+    IO_STATUS_BLOCK             IoStatus;
+    KEVENT                      Event;
+    PIO_STACK_LOCATION          Stack;
+    NTSTATUS                    status;
+
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    status = STATUS_NO_MEMORY;
+    Irp = IoAllocateIrp((CCHAR)(Pdo->LowerDeviceObject->StackSize + 1), FALSE);
+    if (Irp == NULL)
+        goto fail1;
+
+    Stack = IoGetNextIrpStackLocation(Irp);
+    Stack->MajorFunction = IRP_MJ_SCSI;
+    Stack->Parameters.Scsi.Srb = Srb;
+
+    IoSetCompletionRoutine(Irp,
+                            __PdoSendAwaitSrb,
+                            Srb,
+                            TRUE,
+                            TRUE,
+                            TRUE);
+    Irp->UserIosb = &IoStatus;
+    Irp->UserEvent = &Event;
+
+    Irp->MdlAddress = IoAllocateMdl(Srb->DataBuffer,
+                                    Srb->DataTransferLength,
+                                    FALSE,
+                                    FALSE,
+                                    Irp);
+    if (Irp->MdlAddress == NULL)
+        goto fail2;
+
+#pragma warning(disable:6320)
+    try {
+        MmProbeAndLockPages(Irp->MdlAddress, KernelMode, IoReadAccess);
+    } except (EXCEPTION_EXECUTE_HANDLER) {
+        status = GetExceptionCode();
+
+        goto fail3;
+    }
+#pragma warning(default:6320)
+    
+    Srb->OriginalRequest = Irp;
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+    if (status == STATUS_PENDING) {
+        (VOID) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
+        status = IoStatus.Status;
+    }
+
+    return status;
+
+fail3:
+    Error("fail3\n");
+
+    IoFreeMdl(Irp->MdlAddress);
+
+fail2:
+    Error("fail2\n");
+
+    IoFreeIrp(Irp);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoSendTrimSynchronous(
+    IN  PXENDISK_PDO            Pdo,
+    IN  PDEVICE_DATA_SET_RANGE  Ranges,
+    IN  ULONG                   Count
+    )
+{
+    SCSI_REQUEST_BLOCK          Srb;
+    PCDB                        Cdb;
+    PUNMAP_LIST_HEADER          Unmap;
+    ULONG                       Length;
+    ULONG                       Index;
+    NTSTATUS                    status;
+
+    Length = sizeof(UNMAP_LIST_HEADER) + 
+             (Count * sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    status = STATUS_NO_MEMORY;
+    Unmap = __PdoAllocate(Length);
+    if (Unmap == NULL)
+        goto fail1;
+
+    RtlZeroMemory(&Srb, sizeof(SCSI_REQUEST_BLOCK));
+    Srb.Length = sizeof(SCSI_REQUEST_BLOCK);
+    Srb.SrbFlags = 0;
+    Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
+    Srb.DataBuffer = Unmap;
+    Srb.DataTransferLength = Length;
+    Srb.TimeOutValue = (ULONG)-1;
+    Srb.CdbLength = 10;
+
+    Cdb = (PCDB)&Srb.Cdb[0];
+    Cdb->UNMAP.OperationCode = SCSIOP_UNMAP;
+    *(PUSHORT)Cdb->UNMAP.AllocationLength = _byteswap_ushort((USHORT)Length);
+
+    *(PUSHORT)Unmap->DataLength = _byteswap_ushort((USHORT)Length);
+    *(PUSHORT)Unmap->BlockDescrDataLength = _byteswap_ushort((USHORT)sizeof(UNMAP_BLOCK_DESCRIPTOR));
+
+    for (Index = 0; Index < Count; ++Index) {
+        PUNMAP_BLOCK_DESCRIPTOR Block = &Unmap->Descriptors[Index];
+        PDEVICE_DATA_SET_RANGE  Range = &Ranges[Index];
+        
+        ULONG   LengthInSectors = (ULONG)(Range->LengthInBytes / Pdo->SectorSize);
+        ULONG64 OffsetInSectors = (ULONG64)(Range->StartingOffset / Pdo->SectorSize);
+
+        Trace("TRIM[%x] %x @ %llx\n",
+                        Index,
+                        LengthInSectors,
+                        OffsetInSectors);
+
+        *(PULONG64)Block->StartingLba = _byteswap_uint64(OffsetInSectors);
+        *(PULONG)Block->LbaCount = _byteswap_ulong(LengthInSectors);
+    }
+
+    status = PdoSendAwaitSrb(Pdo, &Srb);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoFree(Unmap);
+    return status;
+
+fail2:
+    Error("fail2\n");
+
+    __PdoFree(Unmap);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoManageDataSetAttributes(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PDEVICE_MANAGE_DATA_SET_ATTRIBUTES  Attributes;
+    PDEVICE_DATA_SET_RANGE              Ranges;
+    ULONG                               NumRanges;
+    NTSTATUS                            status;
+
+    Attributes = Irp->AssociatedIrp.SystemBuffer;
+
+    switch (Attributes->Action) {
+    case DeviceDsmAction_Trim:
+        Ranges = (PDEVICE_DATA_SET_RANGE)((PUCHAR)Attributes + Attributes->DataSetRangesOffset);
+        NumRanges = Attributes->DataSetRangesLength / sizeof(DEVICE_DATA_SET_RANGE);
+
+        status = PdoSendTrimSynchronous(Pdo, Ranges, NumRanges);
+
+        status = PdoCompleteIrp(Pdo, Irp, status);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchControl(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    ULONG               ControlCode;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    ControlCode = StackLocation->Parameters.DeviceIoControl.IoControlCode;
+
+    switch (ControlCode) {
+    case IOCTL_STORAGE_QUERY_PROPERTY:
+        status = PdoQueryProperty(Pdo, Irp);
+        break;
+
+    case IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES:
+        status = PdoManageDataSetAttributes(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoForwardIrpAndForget(Pdo, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStartDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail2;
+
+    __PdoSetSystemPowerState(Pdo, PowerSystemWorking);
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD0);
+
+    PowerState.DeviceState = PowerDeviceD0;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+    __PdoSetDevicePnpState(Pdo, Started);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return STATUS_SUCCESS;
+
+fail2:
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, StopPending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    __PdoRestoreDevicePnpState(Pdo, StopPending);
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoStopDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoStopDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    __PdoSetDevicePnpState(Pdo, Stopped);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoStopDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoQueryRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoQueryRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoQueryRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoCancelRemoveDevice(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoCancelRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoRestoreDevicePnpState(Pdo, RemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoCancelRemoveDevice,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoSurpriseRemoval(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoSurpriseRemoval(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    __PdoSetDevicePnpState(Pdo, SurpriseRemovePending);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoSurpriseRemoval,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoRemoveDevice(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    POWER_STATE         PowerState;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    if (__PdoGetDevicePowerState(Pdo) != PowerDeviceD0)
+        goto done;
+
+    __PdoSetDevicePowerState(Pdo, PowerDeviceD3);
+    __PdoSetSystemPowerState(Pdo, PowerSystemShutdown);
+
+    PowerState.DeviceState = PowerDeviceD3;
+    PoSetPowerState(Pdo->Dx->DeviceObject,
+                    DevicePowerState,
+                    PowerState);
+
+done:
+    if (__PdoIsMissing(Pdo)) {
+        __PdoSetDevicePnpState(Pdo, Deleted);
+        IoReleaseRemoveLockAndWait(&Pdo->Dx->RemoveLock, Irp);
+    } else {
+        __PdoSetDevicePnpState(Pdo, Enumerated);
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    if (__PdoIsMissing(Pdo)) {
+        FdoAcquireMutex(Fdo);
+        PdoDestroy(Pdo);
+        FdoReleaseMutex(Fdo);
+    }
+
+    return status;
+
+fail1:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoEject(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PXENDISK_FDO        Fdo = __PdoGetFdo(Pdo);
+    NTSTATUS            status;
+
+    __PdoSetMissing(Pdo, "Ejected");
+    __PdoSetDevicePnpState(Pdo, Deleted);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    FdoAcquireMutex(Fdo);
+    PdoDestroy(Pdo);
+    FdoReleaseMutex(Fdo);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPnp(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPnp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    switch (StackLocation->MinorFunction) {
+    case IRP_MN_START_DEVICE:
+        status = PdoStartDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_STOP_DEVICE:
+        status = PdoQueryStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_STOP_DEVICE:
+        status = PdoCancelStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_STOP_DEVICE:
+        status = PdoStopDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_QUERY_REMOVE_DEVICE:
+        status = PdoQueryRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_SURPRISE_REMOVAL:
+        status = PdoSurpriseRemoval(Pdo, Irp);
+        break;
+
+    case IRP_MN_REMOVE_DEVICE:
+        status = PdoRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_CANCEL_REMOVE_DEVICE:
+        status = PdoCancelRemoveDevice(Pdo, Irp);
+        break;
+
+    case IRP_MN_EJECT:
+        status = PdoEject(Pdo, Irp);
+        break;
+
+    default:
+        status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+        if (!NT_SUCCESS(status))
+            goto fail1;
+
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPnp,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerDeviceStateName(__PdoGetDevicePowerState(Pdo)),
+         PowerDeviceStateName(DeviceState));
+
+    __PdoSetDevicePowerState(Pdo, DeviceState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoSetDevicePowerUp(Pdo, Irp) :
+             __PdoSetDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    if (!NT_SUCCESS(status))
+        goto done;
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+done:
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPowerDown(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    Verbose("%p: %s -> %s\n",
+         Pdo->Dx->DeviceObject,
+         PowerSystemStateName(__PdoGetSystemPowerState(Pdo)),
+         PowerSystemStateName(SystemState));
+
+    __PdoSetSystemPowerState(Pdo, SystemState);
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoSetSystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoSetSystemPowerUp(Pdo, Irp) :
+             __PdoSetSystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerUp(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, <,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+
+    ASSERT3U(DeviceState, >,  __PdoGetDevicePowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQueryDevicePower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    DEVICE_POWER_STATE  DeviceState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    DeviceState = StackLocation->Parameters.Power.State.DeviceState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction));
+
+    if (DeviceState == __PdoGetDevicePowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (DeviceState < __PdoGetDevicePowerState(Pdo)) ?
+             __PdoQueryDevicePowerUp(Pdo, Irp) :
+             __PdoQueryDevicePowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerDeviceStateName(DeviceState), 
+          PowerActionName(PowerAction),
+          status);
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerUp(
+    IN  PXENDISK_PDO     Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, <,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPowerDown(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+
+    ASSERT3U(SystemState, >,  __PdoGetSystemPowerState(Pdo));
+
+    status = PdoForwardIrpSynchronously(Pdo, Irp);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+static FORCEINLINE NTSTATUS
+__PdoQuerySystemPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    SYSTEM_POWER_STATE  SystemState;
+    POWER_ACTION        PowerAction;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    SystemState = StackLocation->Parameters.Power.State.SystemState;
+    PowerAction = StackLocation->Parameters.Power.ShutdownType;
+
+    Trace("====> (%s:%s)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction));
+
+    if (SystemState == __PdoGetSystemPowerState(Pdo)) {
+        status = PdoForwardIrpSynchronously(Pdo, Irp);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        goto done;
+    }
+
+    status = (SystemState < __PdoGetSystemPowerState(Pdo)) ?
+             __PdoQuerySystemPowerUp(Pdo, Irp) :
+             __PdoQuerySystemPowerDown(Pdo, Irp);
+
+done:
+    Trace("<==== (%s:%s)(%08x)\n",
+          PowerSystemStateName(SystemState), 
+          PowerActionName(PowerAction),
+          status);
+
+    return status;
+}
+
+static NTSTATUS
+PdoDevicePower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->DevicePowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->DevicePowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->DevicePowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetDevicePower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQueryDevicePower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+static NTSTATUS
+PdoSystemPower(
+    IN  PXENDISK_THREAD Self,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+    PKEVENT             Event;
+
+    Event = ThreadGetEvent(Self);
+
+    for (;;) {
+        PIRP                Irp;
+        PIO_STACK_LOCATION  StackLocation;
+        UCHAR               MinorFunction;
+
+        if (Pdo->SystemPowerIrp == NULL) {
+            (VOID) KeWaitForSingleObject(Event,
+                                         Executive,
+                                         KernelMode,
+                                         FALSE,
+                                         NULL);
+            KeClearEvent(Event);
+        }
+
+        if (ThreadIsAlerted(Self))
+            break;
+
+        Irp = Pdo->SystemPowerIrp;
+
+        if (Irp == NULL)
+            continue;
+
+        Pdo->SystemPowerIrp = NULL;
+        KeMemoryBarrier();
+
+        StackLocation = IoGetCurrentIrpStackLocation(Irp);
+        MinorFunction = StackLocation->MinorFunction;
+
+        switch (StackLocation->MinorFunction) {
+        case IRP_MN_SET_POWER:
+            (VOID) __PdoSetSystemPower(Pdo, Irp);
+            break;
+
+        case IRP_MN_QUERY_POWER:
+            (VOID) __PdoQuerySystemPower(Pdo, Irp);
+            break;
+
+        default:
+            ASSERT(FALSE);
+            break;
+        }
+
+        IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    }
+
+    return STATUS_SUCCESS;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchPower(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchPower(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    UCHAR               MinorFunction;
+    POWER_STATE_TYPE    PowerType;
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+    MinorFunction = StackLocation->MinorFunction;
+
+    if (MinorFunction != IRP_MN_QUERY_POWER &&
+        MinorFunction != IRP_MN_SET_POWER) {
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+        goto done;
+    }
+
+    PowerType = StackLocation->Parameters.Power.Type;
+
+    Trace("====> (%02x:%s)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction)); 
+
+    switch (PowerType) {
+    case DevicePowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->DevicePowerIrp, ==, NULL);
+        Pdo->DevicePowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->DevicePowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    case SystemPowerState:
+        IoMarkIrpPending(Irp);
+
+        ASSERT3P(Pdo->SystemPowerIrp, ==, NULL);
+        Pdo->SystemPowerIrp = Irp;
+        KeMemoryBarrier();
+
+        ThreadWake(Pdo->SystemPowerThread);
+
+        status = STATUS_PENDING;
+        break;
+
+    default:
+        IoCopyCurrentIrpStackLocationToNext(Irp);
+        IoSetCompletionRoutine(Irp,
+                               __PdoDispatchPower,
+                               Pdo,
+                               TRUE,
+                               TRUE,
+                               TRUE);
+
+        status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+        break;
+    }
+
+    Trace("<==== (%02x:%s) (%08x)\n",
+          MinorFunction, 
+          PowerMinorFunctionName(MinorFunction),
+          status);
+
+done:
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+__drv_functionClass(IO_COMPLETION_ROUTINE)
+__drv_sameIRQL
+static NTSTATUS
+__PdoDispatchDefault(
+    IN  PDEVICE_OBJECT  DeviceObject,
+    IN  PIRP            Irp,
+    IN  PVOID           Context
+    )
+{
+    PXENDISK_PDO        Pdo = Context;
+
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    if (Irp->PendingReturned)
+        IoMarkIrpPending(Irp);
+
+    IoReleaseRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+
+    return STATUS_SUCCESS;
+}
+
+static DECLSPEC_NOINLINE NTSTATUS
+PdoDispatchDefault(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    NTSTATUS            status;
+
+    status = IoAcquireRemoveLock(&Pdo->Dx->RemoveLock, Irp);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+    IoSetCompletionRoutine(Irp,
+                           __PdoDispatchDefault,
+                           Pdo,
+                           TRUE,
+                           TRUE,
+                           TRUE);
+
+    status = IoCallDriver(Pdo->LowerDeviceObject, Irp);
+
+    return status;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    Irp->IoStatus.Status = status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return status;
+}
+
+NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    )
+{
+    PIO_STACK_LOCATION  StackLocation;
+    NTSTATUS            status;
+
+    StackLocation = IoGetCurrentIrpStackLocation(Irp);
+
+    switch (StackLocation->MajorFunction) {
+    case IRP_MJ_DEVICE_CONTROL:
+        status = PdoDispatchControl(Pdo, Irp);
+        break;
+
+    case IRP_MJ_PNP:
+        status = PdoDispatchPnp(Pdo, Irp);
+        break;
+
+    case IRP_MJ_POWER:
+        status = PdoDispatchPower(Pdo, Irp);
+        break;
+
+    default:
+        status = PdoDispatchDefault(Pdo, Irp);
+        break;
+    }
+
+    return status;
+}
+
+NTSTATUS
+PdoCreate(
+    PXENDISK_FDO                    Fdo,
+    PDEVICE_OBJECT                  PhysicalDeviceObject
+    )
+{
+    PDEVICE_OBJECT                  LowerDeviceObject;
+    ULONG                           DeviceType;
+    PDEVICE_OBJECT                  FilterDeviceObject;
+    PXENDISK_DX                     Dx;
+    PXENDISK_PDO                    Pdo;
+    NTSTATUS                        status;
+
+    LowerDeviceObject = IoGetAttachedDeviceReference(PhysicalDeviceObject);
+    DeviceType = LowerDeviceObject->DeviceType;
+    ObDereferenceObject(LowerDeviceObject);
+
+#pragma prefast(suppress:28197) // Possibly leaking memory 'PhysicalDeviceObject'
+    status = IoCreateDevice(DriverGetDriverObject(),
+                            sizeof(XENDISK_DX),
+                            NULL,
+                            DeviceType,
+                            FILE_DEVICE_SECURE_OPEN,
+                            FALSE,
+                            &FilterDeviceObject);
+    if (!NT_SUCCESS(status))
+        goto fail1;
+
+    Dx = (PXENDISK_DX)FilterDeviceObject->DeviceExtension;
+    RtlZeroMemory(Dx, sizeof (XENDISK_DX));
+
+    Dx->Type = PHYSICAL_DEVICE_OBJECT;
+    Dx->DeviceObject = FilterDeviceObject;
+    Dx->DevicePnpState = Present;
+    Dx->SystemPowerState = PowerSystemShutdown;
+    Dx->DevicePowerState = PowerDeviceD3;
+
+    IoInitializeRemoveLock(&Dx->RemoveLock, PDO_TAG, 0, 0);
+
+    Pdo = __PdoAllocate(sizeof (XENDISK_PDO));
+
+    status = STATUS_NO_MEMORY;
+    if (Pdo == NULL)
+        goto fail2;
+
+    LowerDeviceObject = IoAttachDeviceToDeviceStack(FilterDeviceObject,
+                                                    PhysicalDeviceObject);
+
+    status = STATUS_UNSUCCESSFUL;
+    if (LowerDeviceObject == NULL)
+        goto fail3;
+
+    Pdo->Dx = Dx;
+    Pdo->PhysicalDeviceObject = PhysicalDeviceObject;
+    Pdo->LowerDeviceObject = LowerDeviceObject;
+    Pdo->SectorSize = 512;
+
+    status = ThreadCreate(PdoSystemPower, Pdo, &Pdo->SystemPowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail4;
+
+    status = ThreadCreate(PdoDevicePower, Pdo, &Pdo->DevicePowerThread);
+    if (!NT_SUCCESS(status))
+        goto fail5;
+
+    Verbose("%p\n", FilterDeviceObject);
+
+    Dx->Pdo = Pdo;
+
+#pragma prefast(suppress:28182) // Dereferencing NULL pointer
+    FilterDeviceObject->DeviceType = LowerDeviceObject->DeviceType;
+    FilterDeviceObject->Characteristics = LowerDeviceObject->Characteristics;
+
+    FilterDeviceObject->Flags |= LowerDeviceObject->Flags;
+    FilterDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+    __PdoLink(Pdo, Fdo);
+
+    return STATUS_SUCCESS;
+
+fail5:
+    Error("fail5\n");
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+fail4:
+    Error("fail4\n");
+
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+fail3:
+    Error("fail3\n");
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+fail2:
+    Error("fail2\n");
+
+    IoDeleteDevice(FilterDeviceObject);
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    )
+{
+    PDEVICE_OBJECT      LowerDeviceObject = Pdo->LowerDeviceObject;
+    PXENDISK_DX         Dx = Pdo->Dx;
+    PDEVICE_OBJECT      FilterDeviceObject = Dx->DeviceObject;
+
+    ASSERT3U(__PdoGetDevicePnpState(Pdo), ==, Deleted);
+
+    ASSERT(__PdoIsMissing(Pdo));
+    Pdo->Missing = FALSE;
+
+    __PdoUnlink(Pdo);
+
+    Verbose("%p (%s)\n",
+         FilterDeviceObject,
+         Pdo->Reason);
+    Pdo->Reason = NULL;
+
+    Dx->Pdo = NULL;
+
+    ThreadAlert(Pdo->DevicePowerThread);
+    ThreadJoin(Pdo->DevicePowerThread);
+    Pdo->DevicePowerThread = NULL;
+
+    ThreadAlert(Pdo->SystemPowerThread);
+    ThreadJoin(Pdo->SystemPowerThread);
+    Pdo->SystemPowerThread = NULL;
+
+    Pdo->SectorSize = 0;
+    Pdo->PhysicalDeviceObject = NULL;
+    Pdo->LowerDeviceObject = NULL;
+    Pdo->Dx = NULL;
+
+    IoDetachDevice(LowerDeviceObject);
+
+    ASSERT(IsZeroMemory(Pdo, sizeof (XENDISK_PDO)));
+    __PdoFree(Pdo);
+
+    IoDeleteDevice(FilterDeviceObject);
+}
diff --git a/src/xendisk/pdo.h b/src/xendisk/pdo.h
new file mode 100644
index 0000000..5e2e5d6
--- /dev/null
+++ b/src/xendisk/pdo.h
@@ -0,0 +1,90 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _XENDISK_PDO_H
+#define _XENDISK_PDO_H
+
+#include <ntddk.h>
+#include "types.h"
+#include "fdo.h"
+
+typedef struct _XENDISK_PDO XENDISK_PDO, *PXENDISK_PDO;
+
+extern VOID
+PdoSetDevicePnpState(
+    IN  PXENDISK_PDO        Pdo,
+    IN  DEVICE_PNP_STATE    State
+    );
+
+extern DEVICE_PNP_STATE
+PdoGetDevicePnpState(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern PDEVICE_OBJECT
+PdoGetPhysicalDeviceObject(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern BOOLEAN
+PdoIsMissing(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern VOID
+PdoSetMissing(
+    IN  PXENDISK_PDO    Pdo,
+    IN  const CHAR      *Reason
+    );
+
+extern BOOLEAN
+PdoIsMasked(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoCreate(
+    IN  PXENDISK_FDO    Fdo,
+    IN  PDEVICE_OBJECT  PhysicalDeviceObject
+    );
+
+extern VOID
+PdoDestroy(
+    IN  PXENDISK_PDO    Pdo
+    );
+
+extern NTSTATUS
+PdoDispatch(
+    IN  PXENDISK_PDO    Pdo,
+    IN  PIRP            Irp
+    );
+
+#endif // _XENDISK_PDO_H
diff --git a/src/xendisk/thread.c b/src/xendisk/thread.c
new file mode 100644
index 0000000..92e2b94
--- /dev/null
+++ b/src/xendisk/thread.c
@@ -0,0 +1,225 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#include <ntddk.h>
+
+#include "thread.h"
+#include "debug.h"
+#include "assert.h"
+#include "util.h"
+
+#define THREAD_POOL 'ERHT'
+
+struct _XENDISK_THREAD {
+    XENDISK_THREAD_FUNCTION Function;
+    PVOID                   Context;
+    KEVENT                  Event;
+    BOOLEAN                 Alerted;
+    LONG                    References;
+    PKTHREAD                Thread;
+};
+
+static FORCEINLINE PVOID
+__ThreadAllocate(
+    IN  ULONG   Length
+    )
+{
+    return __AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__, Length, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadFree(
+    IN  PVOID   Buffer
+    )
+{
+    __FreePoolWithTag(Buffer, THREAD_POOL);
+}
+
+static FORCEINLINE VOID
+__ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    KeSetEvent(&Thread->Event, IO_NO_INCREMENT, FALSE);
+}
+
+VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadWake(Thread);
+}
+
+static FORCEINLINE VOID
+__ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    Thread->Alerted = TRUE;
+    __ThreadWake(Thread);
+}
+
+VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    __ThreadAlert(Thread);
+}
+
+KSTART_ROUTINE  ThreadFunction;
+
+VOID
+ThreadFunction(
+    IN  PVOID       Argument
+    )
+{
+    PXENDISK_THREAD Self = Argument;
+    NTSTATUS        status;
+
+    status = Self->Function(Self, Self->Context);
+
+    if (InterlockedDecrement(&Self->References) == 0)
+        __ThreadFree(Self);
+
+    PsTerminateSystemThread(status);
+    // NOT REACHED
+}
+
+NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    )
+{
+    HANDLE                      Handle;
+    NTSTATUS                    status;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+    (*Thread) = __ThreadAllocate(sizeof (XENDISK_THREAD));
+
+    status = STATUS_NO_MEMORY;
+    if (*Thread == NULL)
+        goto fail1;
+
+    (*Thread)->Function = Function;
+    (*Thread)->Context = Context;
+    (*Thread)->Alerted = FALSE;
+    (*Thread)->References = 2; // One for us, one for the thread function
+
+    KeInitializeEvent(&(*Thread)->Event, NotificationEvent, FALSE);
+
+    status = PsCreateSystemThread(&Handle,
+                                  STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL,
+                                  NULL,
+                                  NULL,
+                                  NULL,
+                                  ThreadFunction,
+                                  *Thread);
+    if (!NT_SUCCESS(status)) {
+        --(*Thread)->References;    // Fake thread function termination
+        goto fail2;
+    }
+
+    status = ObReferenceObjectByHandle(Handle,
+                                       SYNCHRONIZE,
+                                       *PsThreadType,
+                                       KernelMode,
+                                       &(*Thread)->Thread,
+                                       NULL);
+    if (!NT_SUCCESS(status))
+        goto fail3;
+
+    ZwClose(Handle);
+
+    return STATUS_SUCCESS;
+
+fail3:
+    Error("fail3\n");
+
+    __ThreadAlert(*Thread);
+    ZwClose(Handle);
+
+fail2:
+    Error("fail2\n");
+
+    if (InterlockedDecrement(&(*Thread)->References) == 0)
+        __ThreadFree(*Thread);
+
+    *Thread = NULL;
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return status;
+}
+
+PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return &Thread->Event;
+}
+
+BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    return Thread->Alerted;
+}
+
+VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    )
+{
+    LONG                References;
+
+    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+    ASSERT3P(KeGetCurrentThread(), !=, Thread->Thread);
+
+    (VOID) KeWaitForSingleObject(Thread->Thread,
+                                 Executive,
+                                 KernelMode,
+                                 FALSE,
+                                 NULL);
+
+    References = InterlockedDecrement(&Thread->References);
+    ASSERT3U(References, ==, 0);
+
+    __ThreadFree(Thread);
+}
+
diff --git a/src/xendisk/thread.h b/src/xendisk/thread.h
new file mode 100644
index 0000000..c197337
--- /dev/null
+++ b/src/xendisk/thread.h
@@ -0,0 +1,73 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_THREAD_H
+#define _XENDISK_THREAD_H
+
+#include <ntddk.h>
+
+typedef struct _XENDISK_THREAD XENDISK_THREAD, *PXENDISK_THREAD;
+
+typedef NTSTATUS (*XENDISK_THREAD_FUNCTION)(PXENDISK_THREAD, PVOID);
+
+extern NTSTATUS
+ThreadCreate(
+    IN  XENDISK_THREAD_FUNCTION Function,
+    IN  PVOID                   Context,
+    OUT PXENDISK_THREAD         *Thread
+    );
+
+extern PKEVENT
+ThreadGetEvent(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern BOOLEAN
+ThreadIsAlerted(
+    IN  PXENDISK_THREAD Self
+    );
+
+extern VOID
+ThreadWake(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadAlert(
+    IN  PXENDISK_THREAD Thread
+    );
+
+extern VOID
+ThreadJoin(
+    IN  PXENDISK_THREAD Thread
+    );
+
+#endif  // _XENDISK_THREAD_H
diff --git a/src/xendisk/types.h b/src/xendisk/types.h
new file mode 100644
index 0000000..b2b4218
--- /dev/null
+++ b/src/xendisk/types.h
@@ -0,0 +1,53 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */
+
+#ifndef _XENDISK_TYPES_H
+#define _XENDISK_TYPES_H
+
+typedef enum _DEVICE_OBJECT_TYPE {
+    PHYSICAL_DEVICE_OBJECT = 'ODP',
+    FUNCTION_DEVICE_OBJECT = 'ODF'
+} DEVICE_OBJECT_TYPE, *PDEVICE_OBJECT_TYPE;
+
+typedef enum _DEVICE_PNP_STATE {
+    Invalid = 0,
+    Present,        // PDO only
+    Enumerated,     // PDO only
+    Added,          // FDO only
+    Started,
+    StopPending,
+    Stopped,
+    RemovePending,
+    SurpriseRemovePending,
+    Deleted
+} DEVICE_PNP_STATE, *PDEVICE_PNP_STATE;
+
+#endif  // _XENDISK_TYPES_H
diff --git a/src/xendisk/util.h b/src/xendisk/util.h
new file mode 100644
index 0000000..e7adc22
--- /dev/null
+++ b/src/xendisk/util.h
@@ -0,0 +1,222 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#ifndef _UTIL_H
+#define _UTIL_H
+
+#include <ntddk.h>
+
+#include "assert.h"
+
+typedef struct _NON_PAGED_BUFFER_HEADER {
+    SIZE_T  Length;
+    ULONG   Tag;
+} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
+
+typedef struct _NON_PAGED_BUFFER_TRAILER {
+    ULONG   Tag;
+} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
+
+static FORCEINLINE PVOID
+__AllocateNonPagedPoolWithTag(
+    IN  PCHAR                   Caller,
+    IN  ULONG                   Line,
+    IN  SIZE_T                  Length,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3S(Length, !=, 0);
+
+    Buffer = (PUCHAR)ExAllocatePoolWithTag(NonPagedPool,
+                                   sizeof (NON_PAGED_BUFFER_HEADER) +
+                                   Length +
+                                   sizeof (NON_PAGED_BUFFER_TRAILER),
+                                   Tag);
+    if (Buffer == NULL) {
+        Warning("%s:%u : AllocFailed %d bytes, %08x tag\n", Caller, Line, Length, Tag);
+        goto done;
+    }
+
+    RtlZeroMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER));
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    Header->Length = Length;
+    Header->Tag = Tag;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    Trailer->Tag = Tag;
+
+done:
+    return Buffer;
+}
+
+static FORCEINLINE VOID
+__FreePoolWithTag(
+    IN  PVOID                   _Buffer,
+    IN  ULONG                   Tag
+    )
+{
+    PUCHAR                      Buffer = (PUCHAR)_Buffer;
+    SIZE_T                      Length;
+    PNON_PAGED_BUFFER_HEADER    Header;
+    PNON_PAGED_BUFFER_TRAILER   Trailer;
+
+    ASSERT3P(Buffer, !=, NULL);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
+    ASSERT3U(Tag, ==, Header->Tag);
+    Length = Header->Length;
+
+    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
+
+    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
+    ASSERT3U(Tag, ==, Trailer->Tag);
+
+    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
+
+    RtlFillMemory(Buffer, 
+                  sizeof (NON_PAGED_BUFFER_HEADER) +
+                  Length +
+                  sizeof (NON_PAGED_BUFFER_TRAILER),
+                  0xAA);
+
+    ExFreePoolWithTag(Buffer, Tag);
+}
+
+static FORCEINLINE PMDL
+__AllocPagesForMdl(
+    IN  SIZE_T          Size
+    )
+{
+    PMDL                Mdl;
+    PHYSICAL_ADDRESS    LowAddr;
+    PHYSICAL_ADDRESS    HighAddr;
+    PHYSICAL_ADDRESS    SkipBytes;
+
+    SkipBytes.QuadPart = 0ull;
+    HighAddr.QuadPart = ~0ull;
+
+    // try > 4GB
+    LowAddr.QuadPart = 0x100000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try > 2GB
+    LowAddr.QuadPart = 0x80000000ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    if (Mdl) {
+        if (MmGetMdlByteCount(Mdl) == Size) {
+            goto done;
+        }
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+        Mdl = NULL;
+    }
+
+    // try anywhere
+    LowAddr.QuadPart = 0ull;
+    Mdl = MmAllocatePagesForMdlEx(LowAddr, HighAddr, SkipBytes, Size, MmCached, 0);
+    // Mdl byte count gets checked again after this returns
+
+done:
+    return Mdl;
+}
+static FORCEINLINE PVOID
+___AllocPages(
+    IN  PCHAR           Caller, 
+    IN  ULONG           Line,
+    IN  SIZE_T          Size,
+    OUT PMDL*           Mdl
+    )
+{
+    PVOID               Buffer;
+
+    *Mdl = __AllocPagesForMdl(Size);
+    if (*Mdl == NULL) {
+        Warning("%s:%u : MmAllocatePagesForMdlEx Failed %d bytes\n", Caller, Line, Size);
+        goto fail1;
+    }
+
+    if (MmGetMdlByteCount(*Mdl) != Size) {
+        Warning("%s:%u : %d bytes != %d bytes requested\n", Caller, Line, MmGetMdlByteCount(*Mdl), Size);
+        goto fail2;
+    }
+
+    Buffer = MmMapLockedPagesSpecifyCache(*Mdl, KernelMode, MmCached, NULL, FALSE, NormalPagePriority);
+    if (Buffer == NULL) {
+        Warning("%s:%u : MmMapLockedPagesSpecifyCache Failed %d bytes\n", Caller, Line, Size);
+        goto fail3;
+    }
+
+    return Buffer;
+
+fail3:
+fail2:
+    MmFreePagesFromMdl(*Mdl);
+    ExFreePool(*Mdl);
+fail1:
+    *Mdl = NULL;
+    return NULL;
+}
+#define __AllocPages(Size, Mdl) ___AllocPages(__FUNCTION__, __LINE__, Size, Mdl)
+
+static FORCEINLINE VOID
+__FreePages(
+    IN  PVOID           Buffer,
+    IN  PMDL            Mdl
+    )
+{
+    if (Buffer && Mdl) {
+        MmUnmapLockedPages(Buffer, Mdl);
+        MmFreePagesFromMdl(Mdl);
+        ExFreePool(Mdl);
+    }
+}
+
+#endif  // _UTIL_H
diff --git a/src/xendisk/xendisk.rc b/src/xendisk/xendisk.rc
new file mode 100644
index 0000000..df2e5b6
--- /dev/null
+++ b/src/xendisk/xendisk.rc
@@ -0,0 +1,56 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, 
+ * with or without modification, are permitted provided 
+ * that the following conditions are met:
+ * 
+ * *   Redistributions of source code must retain the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above 
+ *     copyright notice, this list of conditions and the 
+ *     following disclaimer in the documentation and/or other 
+ *     materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE.
+ */ 
+
+#include <windows.h>
+#include <ntverp.h>
+
+
+#undef VER_COMPANYNAME_STR
+#undef VER_PRODUCTNAME_STR
+#undef VER_PRODUCTVERSION
+#undef VER_PRODUCTVERSION_STR
+
+#include <version.h>
+
+#define	VER_COMPANYNAME_STR         COMPANY_NAME_STR
+#define VER_LEGALCOPYRIGHT_STR      "Copyright (c) Citrix Systems Inc."
+
+#define VER_PRODUCTNAME_STR         "XENDISK"
+#define VER_PRODUCTVERSION          MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION,BUILD_NUMBER
+#define VER_PRODUCTVERSION_STR      MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." BUILD_NUMBER_STR
+
+#define VER_INTERNALNAME_STR        "XENDISK.SYS"
+#define VER_FILEDESCRIPTION_STR     "XENDISK"
+
+#define VER_FILETYPE                VFT_DRV
+#define VER_FILESUBTYPE             VFT2_DRV_SYSTEM
+
+#include <common.ver>
diff --git a/src/xenvbd.inf b/src/xenvbd.inf
index bc8627b..0d58453 100644
--- a/src/xenvbd.inf
+++ b/src/xenvbd.inf
@@ -46,6 +46,7 @@ CoInst_CopyFiles=11
 [SourceDisksFiles]
 xenvbd.sys=0,,
 xencrsh.sys=0,,
+xendisk.sys=0,,
 xenvbd_coinst.dll=0,,
 
 [Manufacturer] 
@@ -62,9 +63,25 @@ CopyFiles=XenVbd_Copyfiles
 [XenVbd_Copyfiles]
 xenvbd.sys
 xencrsh.sys
+xendisk.sys
+
+[XenVbd_Inst.HW] 
+AddReg=XenVbd_AddReg
+
+[XenVbd_AddReg]
+HKR,,"UpperFilters",0x00010000,"xendisk"
 
 [XenVbd_Inst.Services] 
 AddService=xenvbd,2,XenVbd_Service,
+AddService=xendisk,,XenDisk_Service,
+
+[XenDisk_Service] 
+DisplayName=%XenDiskDesc%
+ServiceType=%SERVICE_KERNEL_DRIVER% 
+StartType=%SERVICE_BOOT_START% 
+ErrorControl=%SERVICE_ERROR_NORMAL% 
+ServiceBinary=%12%\xendisk.sys 
+LoadOrderGroup="Scsi Miniport"
 
 [XenVbd_Service] 
 DisplayName=%XenVbdDesc%
@@ -95,6 +112,7 @@ HKR,,CoInstallers32,0x00010000,"xenvbd_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@M
 Company = "@COMPANY_NAME@"
 DiskDesc = "@PRODUCT_NAME@ PV Storage Host Adapter Package" 
 XenVbdDesc= "@PRODUCT_NAME@ PV Storage Host Adapter"
+XenDiskDesc= "@PRODUCT_NAME@ PV Storage Filter"
 
 SERVICE_BOOT_START = 0x0 
 SERVICE_SYSTEM_START = 0x1 
diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index 5e5fcbc..9782f19 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -51,6 +51,9 @@
 		<ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
 			<Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
 		</ProjectReference>
+		<ProjectReference Include="..\xendisk\xendisk.vcxproj">
+			<Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+		</ProjectReference>
 	</ItemGroup>
 	<ItemGroup>
 		<FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2012/xendisk/xendisk.vcxproj b/vs2012/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..333bc40
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<Import Project="..\configs.props" />
+
+	<PropertyGroup Label="Globals">
+		<Configuration>Windows Vista Debug</Configuration>
+		<Platform Condition="'$(Platform)' == ''">Win32</Platform> 
+		<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> 
+	</PropertyGroup>
+	<PropertyGroup Label="ProeprtySheets">
+		<PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
+		<ConfigurationType>Driver</ConfigurationType>
+		<DriverType>WDM</DriverType>
+	</PropertyGroup>
+
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+	
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+	</PropertyGroup>
+	
+	<Import Project="..\targets.props" />
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
+	
+	<PropertyGroup>
+		<IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+		<RunCodeAnalysis>true</RunCodeAnalysis>
+		<EnableInf2cat>false</EnableInf2cat>
+		<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+		<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+	</PropertyGroup>
+
+	<ItemDefinitionGroup>
+		<ClCompile>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<WarningLevel>EnableAllWarnings</WarningLevel>
+			<DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+			<MultiProcessorCompilation>true</MultiProcessorCompilation>
+			<EnablePREfast>true</EnablePREfast>
+		</ClCompile>
+		<Link>
+			<AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+		</Link>
+		<Inf>
+			<SpecifyArchitecture>true</SpecifyArchitecture>
+			<SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+			<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+			<EnableVerbose>true</EnableVerbose>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+		<ClCompile>
+			<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>x86</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+		<ClCompile>
+			<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+		</ClCompile>
+		<Inf>
+			<Architecture>amd64</Architecture>
+		</Inf>
+	</ItemDefinitionGroup>
+
+	<ItemGroup>
+		<FilesToPackage Include="$(TargetPath)" />
+		<FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+		<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+	</ItemGroup>
+	<ItemGroup>
+		<ClCompile Include="../../src/xendisk/driver.c" />
+		<ClCompile Include="../../src/xendisk/fdo.c" />
+		<ClCompile Include="../../src/xendisk/pdo.c" />
+		<ClCompile Include="../../src/xendisk/thread.c" />
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2012/xendisk/xendisk.vcxproj.user b/vs2012/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..0b2b210
--- /dev/null
+++ b/vs2012/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<PropertyGroup>
+		<SignMode>TestSign</SignMode>
+		<TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+		<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+	</PropertyGroup>
+</Project>
diff --git a/vs2012/xenvbd.sln b/vs2012/xenvbd.sln
index 86fb1a5..15113cf 100644
--- a/vs2012/xenvbd.sln
+++ b/vs2012/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
 	ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
diff --git a/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 5d0de4d..8b2fa4f 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -80,6 +80,9 @@
     <ProjectReference Include="..\xenvbd\xenvbd.vcxproj">
       <Project>{ef236371-3145-41b1-99c9-82b33e353f17}</Project>
     </ProjectReference>
+    <ProjectReference Include="..\xendisk\xendisk.vcxproj">
+      <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2013/xendisk/xendisk.vcxproj b/vs2013/xendisk/xendisk.vcxproj
new file mode 100644
index 0000000..39b9163
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="ProeprtySheets">
+    <ConfigurationType>Driver</ConfigurationType>
+    <DriverType>WDM</DriverType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
+    <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(ProjectDir)..\..\include;$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PreprocessorDefinitions>__MODULE__="XENDISK";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      <DisableSpecificWarnings>4548;4711;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(DDK_LIB_PATH)/libcntpr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="../../src/xendisk/driver.c" />
+    <ClCompile Include="../../src/xendisk/fdo.c" />
+    <ClCompile Include="../../src/xendisk/pdo.c" />
+    <ClCompile Include="../../src/xendisk/thread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xendisk\xendisk.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2013/xendisk/xendisk.vcxproj.user b/vs2013/xendisk/xendisk.vcxproj.user
new file mode 100644
index 0000000..1f1f3c0
--- /dev/null
+++ b/vs2013/xendisk/xendisk.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xenvbd.pfx</TestCertificate>
+    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
diff --git a/vs2013/xenvbd.sln b/vs2013/xenvbd.sln
index 13128c5..da798d2 100644
--- a/vs2013/xenvbd.sln
+++ b/vs2013/xenvbd.sln
@@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd", "xenvbd\xenvbd.vcx
 	ProjectSection(ProjectDependencies) = postProject
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencrsh", "xencrsh\xencrsh.vcxproj", "{58F5BC43-B92E-4A2B-975D-0066EAB29092}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xendisk", "xendisk\xendisk.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenvbd_coinst", "coinst\xenvbd_coinst.vcxproj", "{50C08437-C1F3-4349-BF6A-7B55A06BF999}"
     ProjectSection(ProjectDependencies) = postProject
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
@@ -18,6 +21,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 		{50C08437-C1F3-4349-BF6A-7B55A06BF999} = {50C08437-C1F3-4349-BF6A-7B55A06BF999}
 		{58F5BC43-B92E-4A2B-975D-0066EAB29092} = {58F5BC43-B92E-4A2B-975D-0066EAB29092}
         {EF236371-3145-41B1-99C9-82B33E353F17} = {EF236371-3145-41B1-99C9-82B33E353F17}
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}		
 	EndProjectSection
 EndProject
 Global
@@ -36,6 +40,30 @@ Global
 		Windows Vista Release|x64 = Windows Vista Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Debug|x64.Build.0 = Windows 7 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.ActiveCfg = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|Win32.Build.0 = Windows 7 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.ActiveCfg = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 7 Release|x64.Build.0 = Windows 7 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|Win32.Build.0 = Windows Vista Debug|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.ActiveCfg = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Debug|x64.Build.0 = Windows Vista Debug|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.ActiveCfg = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|Win32.Build.0 = Windows Vista Release|Win32
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.ActiveCfg = Windows Vista Release|x64
+		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows Vista Release|x64.Build.0 = Windows Vista Release|x64
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|Win32.Build.0 = Windows 7 Debug|Win32
 		{EF236371-3145-41B1-99C9-82B33E353F17}.Windows 7 Debug|x64.ActiveCfg = Windows 7 Debug|x64
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 09:40:16 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 09:40:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXS0d-0003CP-B5; Fri, 26 Sep 2014 09:40:15 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XXS0c-0003BX-7A
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 09:40:14 +0000
Received: from [85.158.137.68:11529] by server-1.bemta-3.messagelabs.com id
	2F/F6-30185-D7435245; Fri, 26 Sep 2014 09:40:13 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411724412!12213194!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6501 invoked from network); 26 Sep 2014 09:40:12 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 09:40:12 -0000
Received: by mail-wi0-f172.google.com with SMTP id em10so10500058wid.17
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 26 Sep 2014 02:40:12 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=JCnnZRp7/UiWVyPai871sdtwS8SJQ0MK9CU+V2CMfX0=;
	b=aji9wqeNUmWoE0YHaUrqDSXJjimpWxFNx+0cHOiOKOyzj0g+BVIvc7Oa0sPuDJlXyR
	1iJNxcnpbqy1UjUC0KgZy6skQ+2BSwKqy5wJhfDDZPuvBlNAbcZuuFZWR2h3h6W1vhcJ
	0xhbMRRoAyNvADUTGzlkPIAEBJUXG7ZSrFa4YUuKld9fvolN9is7gsJtS95e29tpdF8X
	h25Eb9P1yom664cT7heppqPdK91/U002dInov7Qy9ysyPu7FjGn8HQ94B1lsUMtW/Jum
	MGOiK+v5YcDxyKvM00FBg6ZwsECTL3JksDJ2S/+lIP6pFdcB+9I3TS+BESsJNyEvS0h4
	KxhA==
X-Gm-Message-State: ALoCoQmvmQT2gIm4xDjiHa7pEsxhKRtGLPbC/J97cjXxL6JlPgwx+poc4d6iLib2ZaE3cy7eqe3S
X-Received: by 10.194.186.178 with SMTP id fl18mr22360839wjc.8.1411724412297; 
	Fri, 26 Sep 2014 02:40:12 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	ks10sm5477336wjb.38.2014.09.26.02.40.10 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 26 Sep 2014 02:40:11 -0700 (PDT)
Message-ID: <54253486.3050202@m2r.biz>
Date: Fri, 26 Sep 2014 11:40:22 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 25/09/2014 15:57, Paul Durrant ha scritto:
>> -----Original Message-----
> [snip]
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>> in <module
>>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>> in build_s
>>> ln
>>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>> in msbuild
>>>
>>>      status = shell([bin], dir)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>> in shell
>>>      print(line.rstrip())
>>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>> position
>>> 28: character maps to <undefined>
> I believe I have figured this one out. I think it is the use of universal_newlines=True in the subprocess.Popen() call. Googling around, it appears  this is unsafe (for at least some versions of python) if the system default encoding is unicode. I think the problem can just be avoided by not setting universal_newlines, but I think the byte string coming back from Popen should also be decoded with the system default encoding before being displayed. I'll send a patch shortly.
>
>    Paul

I saw your new patch (Don't use universal_newlines=True in 
subprocess.Popen()), I tried the build on italian W8.1 the updated 
xenbus repository and this is the new error but always about encoding:
> Compilazione di 
> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> " (2) dal progetto 
> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> (1) sul nodo 1 (destinazioni predefinite).
> InitializeBuildStatus:
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 360, 
> in <module
> >
>     build_sln(driver, release, 'x86', debug[sys.argv[1]], vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 137, 
> in build_s
> ln
>     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 121, 
> in msbuild
>
>     status = shell([bin], dir)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 99, 
> in shell
>     print(line.decode(sys.getdefaultencoding()).rstrip())
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position 
> 74: invalid
>  continuation byte

I have also another questions:
created debug build of drivers is very useful to take additional 
informations to solves the problem and I should always use it in testing 
environments?
debug build decrease performance?
the debug build informations will be showed in qemu logs, in other logs 
and/or with particular tools/methods?
I'll probably upload a pv driver build I did and I'll do for anyone want 
start to do fast tests with them before the official build will be 
ready, is ok?

Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 09:40:16 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 09:40:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXS0d-0003CP-B5; Fri, 26 Sep 2014 09:40:15 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XXS0c-0003BX-7A
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 09:40:14 +0000
Received: from [85.158.137.68:11529] by server-1.bemta-3.messagelabs.com id
	2F/F6-30185-D7435245; Fri, 26 Sep 2014 09:40:13 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-11.tower-31.messagelabs.com!1411724412!12213194!1
X-Originating-IP: [209.85.212.172]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6501 invoked from network); 26 Sep 2014 09:40:12 -0000
Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com)
	(209.85.212.172)
	by server-11.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 09:40:12 -0000
Received: by mail-wi0-f172.google.com with SMTP id em10so10500058wid.17
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 26 Sep 2014 02:40:12 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:cc:subject:references:in-reply-to:content-type
	:content-transfer-encoding;
	bh=JCnnZRp7/UiWVyPai871sdtwS8SJQ0MK9CU+V2CMfX0=;
	b=aji9wqeNUmWoE0YHaUrqDSXJjimpWxFNx+0cHOiOKOyzj0g+BVIvc7Oa0sPuDJlXyR
	1iJNxcnpbqy1UjUC0KgZy6skQ+2BSwKqy5wJhfDDZPuvBlNAbcZuuFZWR2h3h6W1vhcJ
	0xhbMRRoAyNvADUTGzlkPIAEBJUXG7ZSrFa4YUuKld9fvolN9is7gsJtS95e29tpdF8X
	h25Eb9P1yom664cT7heppqPdK91/U002dInov7Qy9ysyPu7FjGn8HQ94B1lsUMtW/Jum
	MGOiK+v5YcDxyKvM00FBg6ZwsECTL3JksDJ2S/+lIP6pFdcB+9I3TS+BESsJNyEvS0h4
	KxhA==
X-Gm-Message-State: ALoCoQmvmQT2gIm4xDjiHa7pEsxhKRtGLPbC/J97cjXxL6JlPgwx+poc4d6iLib2ZaE3cy7eqe3S
X-Received: by 10.194.186.178 with SMTP id fl18mr22360839wjc.8.1411724412297; 
	Fri, 26 Sep 2014 02:40:12 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id
	ks10sm5477336wjb.38.2014.09.26.02.40.10 for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 26 Sep 2014 02:40:11 -0700 (PDT)
Message-ID: <54253486.3050202@m2r.biz>
Date: Fri, 26 Sep 2014 11:40:22 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Paul Durrant <Paul.Durrant@citrix.com>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

Il 25/09/2014 15:57, Paul Durrant ha scritto:
>> -----Original Message-----
> [snip]
>>> Traceback (most recent call last):
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
>>> in <module
>>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
>>> in build_s
>>> ln
>>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
>>> in msbuild
>>>
>>>      status = shell([bin], dir)
>>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
>>> in shell
>>>      print(line.rstrip())
>>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
>>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
>>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
>>> position
>>> 28: character maps to <undefined>
> I believe I have figured this one out. I think it is the use of universal_newlines=True in the subprocess.Popen() call. Googling around, it appears  this is unsafe (for at least some versions of python) if the system default encoding is unicode. I think the problem can just be avoided by not setting universal_newlines, but I think the byte string coming back from Popen should also be decoded with the system default encoding before being displayed. I'll send a patch shortly.
>
>    Paul

I saw your new patch (Don't use universal_newlines=True in 
subprocess.Popen()), I tried the build on italian W8.1 the updated 
xenbus repository and this is the new error but always about encoding:
> Compilazione di 
> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> " (2) dal progetto 
> "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> (1) sul nodo 1 (destinazioni predefinite).
> InitializeBuildStatus:
> Traceback (most recent call last):
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 360, 
> in <module
> >
>     build_sln(driver, release, 'x86', debug[sys.argv[1]], vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 137, 
> in build_s
> ln
>     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 121, 
> in msbuild
>
>     status = shell([bin], dir)
>   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 99, 
> in shell
>     print(line.decode(sys.getdefaultencoding()).rstrip())
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position 
> 74: invalid
>  continuation byte

I have also another questions:
created debug build of drivers is very useful to take additional 
informations to solves the problem and I should always use it in testing 
environments?
debug build decrease performance?
the debug build informations will be showed in qemu logs, in other logs 
and/or with particular tools/methods?
I'll probably upload a pv driver build I did and I'll do for anyone want 
start to do fast tests with them before the official build will be 
ready, is ok?

Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 09:55:52 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 09:55:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXSFk-0003qI-Op; Fri, 26 Sep 2014 09:55:52 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXSFj-0003qD-Cm
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 09:55:51 +0000
Received: from [193.109.254.147:12272] by server-8.bemta-14.messagelabs.com id
	E4/4B-01875-62835245; Fri, 26 Sep 2014 09:55:50 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1411725349!6338278!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27822 invoked from network); 26 Sep 2014 09:55:49 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 09:55:49 -0000
X-IronPort-AV: E=Sophos;i="5.04,603,1406592000"; d="scan'208";a="25309463"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIADMtHQgAEp+gCAACPg8A==
Date: Fri, 26 Sep 2014 09:55:48 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0492FDC@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
	<54253486.3050202@m2r.biz>
In-Reply-To: <54253486.3050202@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 26 September 2014 10:40
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 15:57, Paul Durrant ha scritto:
> >> -----Original Message-----
> > [snip]
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>> in <module
> >>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>> in build_s
> >>> ln
> >>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>> in msbuild
> >>>
> >>>      status = shell([bin], dir)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>> in shell
> >>>      print(line.rstrip())
> >>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> >>> position
> >>> 28: character maps to <undefined>
> > I believe I have figured this one out. I think it is the use of
> universal_newlines=True in the subprocess.Popen() call. Googling around, it
> appears  this is unsafe (for at least some versions of python) if the system
> default encoding is unicode. I think the problem can just be avoided by not
> setting universal_newlines, but I think the byte string coming back from
> Popen should also be decoded with the system default encoding before
> being displayed. I'll send a patch shortly.
> >
> >    Paul
> 
> I saw your new patch (Don't use universal_newlines=True in
> subprocess.Popen()), I tried the build on italian W8.1 the updated
> xenbus repository and this is the new error but always about encoding:
> > Compilazione di
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> > " (2) dal progetto
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> > (1) sul nodo 1 (destinazioni predefinite).
> > InitializeBuildStatus:
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 360,
> > in <module
> > >
> >     build_sln(driver, release, 'x86', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 137,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 121,
> > in msbuild
> >
> >     status = shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 99,
> > in shell
> >     print(line.decode(sys.getdefaultencoding()).rstrip())
> > UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position
> > 74: invalid
> >  continuation byte
> 
> I have also another questions:
> created debug build of drivers is very useful to take additional
> informations to solves the problem and I should always use it in testing
> environments?

I think that's sensible. Debug builds include trace debug prints, ASSERTs and turn off most function inlining, so analysing a stack trace is much easier.

> debug build decrease performance?

Yes. The lower level of optimization and the inclusion of ASSERTs and tracing are detrimental to performance.

> the debug build informations will be showed in qemu logs, in other logs
> and/or with particular tools/methods?

Use windbg for debugging. It's not too hard to set up. If the xenproject blog system ever comes back, I'll write an article about setting it up. If you just want to look at trace statements though, a debug build sends them to io port 0xe9, which is echoed to Xen's console. So just set guest_loglvl to all and you should see them.

> I'll probably upload a pv driver build I did and I'll do for anyone want
> start to do fast tests with them before the official build will be
> ready, is ok?
> 

Yes. Feel free to do that if you wish. I do have infrastructure for doing public builds set up; I just have nowehere to host the build output as yet. I expect to have something soon.

  Paul

> Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 09:55:52 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 09:55:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXSFk-0003qI-Op; Fri, 26 Sep 2014 09:55:52 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Paul.Durrant@citrix.com>) id 1XXSFj-0003qD-Cm
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 09:55:51 +0000
Received: from [193.109.254.147:12272] by server-8.bemta-14.messagelabs.com id
	E4/4B-01875-62835245; Fri, 26 Sep 2014 09:55:50 +0000
X-Env-Sender: Paul.Durrant@citrix.com
X-Msg-Ref: server-16.tower-27.messagelabs.com!1411725349!6338278!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BIZ_TLD,BODY_RANDOM_LONG,
	received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27822 invoked from network); 26 Sep 2014 09:55:49 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
	by server-16.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 09:55:49 -0000
X-IronPort-AV: E=Sophos;i="5.04,603,1406592000"; d="scan'208";a="25309463"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Fabio Fantoni <fabio.fantoni@m2r.biz>
Thread-Topic: New windows pv drivers question
Thread-Index: AQHP0+cdK2i8yGmbLkqBqCvWEqMd9ZwIJ+cAgASehICAAe89gIADMtHQgAEp+gCAACPg8A==
Date: Fri, 26 Sep 2014 09:55:48 +0000
Message-ID: <9AAE0902D5BC7E449B7C8E4E778ABCD0492FDC@AMSPEX01CL01.citrite.net>
References: <541BEF61.8010609@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD047D5F7@AMSPEX01CL01.citrite.net>
	<541FEC41.6090002@m2r.biz> <54218BB1.2070806@m2r.biz>
	<9AAE0902D5BC7E449B7C8E4E778ABCD0491996@AMSPEX01CL01.citrite.net>
	<54253486.3050202@m2r.biz>
In-Reply-To: <54253486.3050202@m2r.biz>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
MIME-Version: 1.0
X-DLP: AMS1
Cc: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] New windows pv drivers question
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

> -----Original Message-----
> From: Fabio Fantoni [mailto:fabio.fantoni@m2r.biz]
> Sent: 26 September 2014 10:40
> To: Paul Durrant
> Cc: win-pv-devel@lists.xenproject.org
> Subject: Re: New windows pv drivers question
> 
> Il 25/09/2014 15:57, Paul Durrant ha scritto:
> >> -----Original Message-----
> > [snip]
> >>> Traceback (most recent call last):
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 365,
> >>> in <module
> >>>      build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 138,
> >>> in build_s
> >>> ln
> >>>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 122,
> >>> in msbuild
> >>>
> >>>      status = shell([bin], dir)
> >>>    File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 100,
> >>> in shell
> >>>      print(line.rstrip())
> >>>    File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
> >>>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> >>> UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in
> >>> position
> >>> 28: character maps to <undefined>
> > I believe I have figured this one out. I think it is the use of
> universal_newlines=True in the subprocess.Popen() call. Googling around, it
> appears  this is unsafe (for at least some versions of python) if the system
> default encoding is unicode. I think the problem can just be avoided by not
> setting universal_newlines, but I think the byte string coming back from
> Popen should also be decoded with the system default encoding before
> being displayed. I'll send a patch shortly.
> >
> >    Paul
> 
> I saw your new patch (Don't use universal_newlines=True in
> subprocess.Popen()), I tried the build on italian W8.1 the updated
> xenbus repository and this is the new error but always about encoding:
> > Compilazione di
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xen\xen.vcxproj
> > " (2) dal progetto
> > "C:\Users\Emilio\Desktop\pvdrivers\xenbus\vs2013\xenbus.sln"
> > (1) sul nodo 1 (destinazioni predefinite).
> > InitializeBuildStatus:
> > Traceback (most recent call last):
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 360,
> > in <module
> > >
> >     build_sln(driver, release, 'x86', debug[sys.argv[1]], vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 137,
> > in build_s
> > ln
> >     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 121,
> > in msbuild
> >
> >     status = shell([bin], dir)
> >   File "C:\Users\Emilio\Desktop\pvdrivers\xenbus\build.py", line 99,
> > in shell
> >     print(line.decode(sys.getdefaultencoding()).rstrip())
> > UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position
> > 74: invalid
> >  continuation byte
> 
> I have also another questions:
> created debug build of drivers is very useful to take additional
> informations to solves the problem and I should always use it in testing
> environments?

I think that's sensible. Debug builds include trace debug prints, ASSERTs and turn off most function inlining, so analysing a stack trace is much easier.

> debug build decrease performance?

Yes. The lower level of optimization and the inclusion of ASSERTs and tracing are detrimental to performance.

> the debug build informations will be showed in qemu logs, in other logs
> and/or with particular tools/methods?

Use windbg for debugging. It's not too hard to set up. If the xenproject blog system ever comes back, I'll write an article about setting it up. If you just want to look at trace statements though, a debug build sends them to io port 0xe9, which is echoed to Xen's console. So just set guest_loglvl to all and you should see them.

> I'll probably upload a pv driver build I did and I'll do for anyone want
> start to do fast tests with them before the official build will be
> ready, is ok?
> 

Yes. Feel free to do that if you wish. I do have infrastructure for doing public builds set up; I just have nowehere to host the build output as yet. I expect to have something soon.

  Paul

> Thanks for any reply and sorry for my bad english.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 12:45:45 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 12:45:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXUu9-0004Gh-5T; Fri, 26 Sep 2014 12:45:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XXUu7-0004GJ-LD
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 12:45:43 +0000
Received: from [193.109.254.147:4087] by server-1.bemta-14.messagelabs.com id
	07/07-24760-7FF55245; Fri, 26 Sep 2014 12:45:43 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-27.messagelabs.com!1411735542!11801106!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.9 required=7.0 tests=SUBJ_HAS_UNIQ_ID
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27526 invoked from network); 26 Sep 2014 12:45:42 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 12:45:42 -0000
Received: by mail-wg0-f51.google.com with SMTP id b13so1096079wgh.22
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 26 Sep 2014 05:45:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:content-type:content-transfer-encoding;
	bh=VcqBFF4Ly/M7HsblVSeGp6w8ywN23H//eNilVEHRs6E=;
	b=RNiB+xviWqOiXKcZq7W8zh5dhLwaFD788rNsLB1TKpseY8dxDZA5IrzYwT77/xdniC
	Ibj4pwbppVRmSUQ1D+3wPieH60tcwbKhFltIMbDEDZ6cGoxhXblcBSXfsXRL6jusDhPA
	Gt6myjr1r1Oc+6buq9Jd3HQ6B/wRQpqT9Xh84kygkxFRCtaZnRum0KiYHHstp7f9efsY
	HZC1SCXHkdp24yqWn40PsjynNaj40gBhpSE3ohY+5LsIRdg8gxFZiTExDEhteLdN6hts
	YEdW2hA798zNmgWHfXnqCU9qFFHAdT1Kvl5jTETTLlQiJnhh0vJ2rgB1vOhw3vVb1bmU
	9Aow==
X-Gm-Message-State: ALoCoQmNXe2v6IZ7JzEbzK5oxa9RZtRQX3EAZmPAH05aG1I5m6liflH1hs6A2+WBmvES9WKzHt+D
X-Received: by 10.181.27.197 with SMTP id ji5mr47071516wid.54.1411735541822;
	Fri, 26 Sep 2014 05:45:41 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id q2sm2072822wiy.23.2014.09.26.05.45.40
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 26 Sep 2014 05:45:41 -0700 (PDT)
Message-ID: <54255FFF.3050006@m2r.biz>
Date: Fri, 26 Sep 2014 14:45:51 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: xen-devel <xen-devel@lists.xensource.com>, 
	"xen-users@lists.xenproject.org" <xen-users@lists.xenproject.org>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: [win-pv-devel] New xen project's windows pv drivers unofficial test
	build 20140924
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

I did and uploaded a test build of new xen project's windows pv drivers 
I did 2 days ago.
For download it:
http://fantu.info/xen/winpv-20140924-free.7z
Contains 32 and 64 bit pv drivers that I build on windows 8.1 64 bit 
with WDK 8.1 and visual studio 2013.3 express with "build.py free nosdv" 
command, so is without debug, next build I'll do with debug.
I tested it on windows 7 and window 8.1 domUs 64 bit and reported to 
win-pv-devel@lists.xenproject.org the problems found for now.
I uploaded them to make possible everyone start to do fast and easy 
tests of them waiting official builds.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

From win-pv-devel-bounces@lists.xenproject.org Fri Sep 26 12:45:45 2014
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Sep 2014 12:45:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1XXUu9-0004Gh-5T; Fri, 26 Sep 2014 12:45:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <fabio.fantoni@m2r.biz>) id 1XXUu7-0004GJ-LD
	for win-pv-devel@lists.xenproject.org; Fri, 26 Sep 2014 12:45:43 +0000
Received: from [193.109.254.147:4087] by server-1.bemta-14.messagelabs.com id
	07/07-24760-7FF55245; Fri, 26 Sep 2014 12:45:43 +0000
X-Env-Sender: fabio.fantoni@m2r.biz
X-Msg-Ref: server-15.tower-27.messagelabs.com!1411735542!11801106!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=0.9 required=7.0 tests=SUBJ_HAS_UNIQ_ID
X-StarScan-Received: 
X-StarScan-Version: 6.12.2; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27526 invoked from network); 26 Sep 2014 12:45:42 -0000
Received: from mail-wg0-f51.google.com (HELO mail-wg0-f51.google.com)
	(74.125.82.51)
	by server-15.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	26 Sep 2014 12:45:42 -0000
Received: by mail-wg0-f51.google.com with SMTP id b13so1096079wgh.22
	for <win-pv-devel@lists.xenproject.org>;
	Fri, 26 Sep 2014 05:45:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to
	:subject:content-type:content-transfer-encoding;
	bh=VcqBFF4Ly/M7HsblVSeGp6w8ywN23H//eNilVEHRs6E=;
	b=RNiB+xviWqOiXKcZq7W8zh5dhLwaFD788rNsLB1TKpseY8dxDZA5IrzYwT77/xdniC
	Ibj4pwbppVRmSUQ1D+3wPieH60tcwbKhFltIMbDEDZ6cGoxhXblcBSXfsXRL6jusDhPA
	Gt6myjr1r1Oc+6buq9Jd3HQ6B/wRQpqT9Xh84kygkxFRCtaZnRum0KiYHHstp7f9efsY
	HZC1SCXHkdp24yqWn40PsjynNaj40gBhpSE3ohY+5LsIRdg8gxFZiTExDEhteLdN6hts
	YEdW2hA798zNmgWHfXnqCU9qFFHAdT1Kvl5jTETTLlQiJnhh0vJ2rgB1vOhw3vVb1bmU
	9Aow==
X-Gm-Message-State: ALoCoQmNXe2v6IZ7JzEbzK5oxa9RZtRQX3EAZmPAH05aG1I5m6liflH1hs6A2+WBmvES9WKzHt+D
X-Received: by 10.181.27.197 with SMTP id ji5mr47071516wid.54.1411735541822;
	Fri, 26 Sep 2014 05:45:41 -0700 (PDT)
Received: from [192.168.1.15] (ip-73-126.sn2.eutelia.it. [83.211.73.126])
	by mx.google.com with ESMTPSA id q2sm2072822wiy.23.2014.09.26.05.45.40
	for <multiple recipients>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 26 Sep 2014 05:45:41 -0700 (PDT)
Message-ID: <54255FFF.3050006@m2r.biz>
Date: Fri, 26 Sep 2014 14:45:51 +0200
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;
	rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: xen-devel <xen-devel@lists.xensource.com>, 
	"xen-users@lists.xenproject.org" <xen-users@lists.xenproject.org>,
	"win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: [win-pv-devel] New xen project's windows pv drivers unofficial test
	build 20140924
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
	<win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/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: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>,
	<mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: win-pv-devel-bounces@lists.xenproject.org
Errors-To: win-pv-devel-bounces@lists.xenproject.org

I did and uploaded a test build of new xen project's windows pv drivers 
I did 2 days ago.
For download it:
http://fantu.info/xen/winpv-20140924-free.7z
Contains 32 and 64 bit pv drivers that I build on windows 8.1 64 bit 
with WDK 8.1 and visual studio 2013.3 express with "build.py free nosdv" 
command, so is without debug, next build I'll do with debug.
I tested it on windows 7 and window 8.1 domUs 64 bit and reported to 
win-pv-devel@lists.xenproject.org the problems found for now.
I uploaded them to make possible everyone start to do fast and easy 
tests of them waiting official builds.

_______________________________________________
win-pv-devel mailing list
win-pv-devel@lists.xenproject.org
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

