Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Sep 2016 13:48:15 +0000
From:      "jceel (Jakub Klama)" <phabric-noreply@FreeBSD.org>
To:        freebsd-virtualization@freebsd.org
Subject:   [Differential] D7185: Add virtio-console support to bhyve
Message-ID:  <cdb8b977c385734b9760c191c9ddc9cd@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-h346qsj6dfo524z3qnfy-req@FreeBSD.org>
References:  <differential-rev-PHID-DREV-h346qsj6dfo524z3qnfy-req@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--b1_cdb8b977c385734b9760c191c9ddc9cd
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: base64

VGhpcyByZXZpc2lvbiB3YXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGNv
bW1pdHRlZCBjaGFuZ2VzLgpDbG9zZWQgYnkgY29tbWl0IHJTMzA1ODk4OiBBZGQgdmlydGlvLWNv
bnNvbGUgc3VwcG9ydCB0byBiaHl2ZS4gKGF1dGhvcmVkIGJ5IGpjZWVsKS4KCkNIQU5HRUQgUFJJ
T1IgVE8gQ09NTUlUCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0Q3MTg1P3ZzPTIwNDAx
JmlkPTIwNDAyI3RvYwoKUkVQT1NJVE9SWQogIHJTIEZyZWVCU0Qgc3JjIHJlcG9zaXRvcnkKCkNI
QU5HRVMgU0lOQ0UgTEFTVCBVUERBVEUKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDcx
ODU/dnM9MjA0MDEmaWQ9MjA0MDIKClJFVklTSU9OIERFVEFJTAogIGh0dHBzOi8vcmV2aWV3cy5m
cmVlYnNkLm9yZy9ENzE4NQoKQUZGRUNURUQgRklMRVMKICBoZWFkL3Vzci5zYmluL2JoeXZlL01h
a2VmaWxlCiAgaGVhZC91c3Iuc2Jpbi9iaHl2ZS9wY2lfdmlydGlvX2NvbnNvbGUuYwogIGhlYWQv
dXNyLnNiaW4vYmh5dmUvdmlydGlvLmgKCkVNQUlMIFBSRUZFUkVOQ0VTCiAgaHR0cHM6Ly9yZXZp
ZXdzLmZyZWVic2Qub3JnL3NldHRpbmdzL3BhbmVsL2VtYWlscHJlZmVyZW5jZXMvCgpUbzogamNl
ZWwsIGdyZWhhbiwgdHJhc3oKQ2M6IGltcCwgZnJlZWJzZC12aXJ0dWFsaXphdGlvbi1saXN0Cg==

--b1_cdb8b977c385734b9760c191c9ddc9cd
Content-Type: text/x-patch; charset=utf-8; name="D7185.20402.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D7185.20402.patch"

ZGlmZiAtLWdpdCBhL2hlYWQvdXNyLnNiaW4vYmh5dmUvdmlydGlvLmggYi9oZWFkL3Vzci5zYmlu
L2JoeXZlL3ZpcnRpby5oCi0tLSBhL2hlYWQvdXNyLnNiaW4vYmh5dmUvdmlydGlvLmgKKysrIGIv
aGVhZC91c3Iuc2Jpbi9iaHl2ZS92aXJ0aW8uaApAQCAtMjEwLDYgKzIxMCw3IEBACiAjZGVmaW5l
CVZJUlRJT19ERVZfTkVUCQkweDEwMDAKICNkZWZpbmUJVklSVElPX0RFVl9CTE9DSwkweDEwMDEK
ICNkZWZpbmUJVklSVElPX0RFVl9SQU5ET00JMHgxMDAyCisjZGVmaW5lCVZJUlRJT19ERVZfQ09O
U09MRQkweDEwMDMKIAogLyoKICAqIFBDSSBjb25maWcgc3BhY2UgY29uc3RhbnRzLgpkaWZmIC0t
Z2l0IGEvaGVhZC91c3Iuc2Jpbi9iaHl2ZS9wY2lfdmlydGlvX2NvbnNvbGUuYyBiL2hlYWQvdXNy
LnNiaW4vYmh5dmUvcGNpX3ZpcnRpb19jb25zb2xlLmMKLS0tIGEvaGVhZC91c3Iuc2Jpbi9iaHl2
ZS9wY2lfdmlydGlvX2NvbnNvbGUuYworKysgYi9oZWFkL3Vzci5zYmluL2JoeXZlL3BjaV92aXJ0
aW9fY29uc29sZS5jCkBAIC0wLDAgKzEsNjMxIEBACisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAx
NiBpWHN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNv
ZnR3YXJlIHdhcyBkZXZlbG9wZWQgYnkgSmFrdWIgS2xhbWEgPGpjZWVsQEZyZWVCU0Qub3JnPgor
ICogdW5kZXIgc3BvbnNvcnNoaXAgZnJvbSBpWHN5c3RlbXMgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
ICAgaW4gdGhpcyBwb3NpdGlvbiBhbmQgdW5jaGFuZ2VkLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorX19GQlNE
SUQoIiRGcmVlQlNEJCIpOworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lz
L2xpbmtlcl9zZXQuaD4KKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy91bi5oPgorCisjaW5j
bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUg
PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4KKworI2luY2x1ZGUgImJoeXZlcnVuLmgi
CisjaW5jbHVkZSAicGNpX2VtdWwuaCIKKyNpbmNsdWRlICJ2aXJ0aW8uaCIKKyNpbmNsdWRlICJt
ZXZlbnQuaCIKKworI2RlZmluZQlWVENPTl9SSU5HU1oJNjQKKyNkZWZpbmUJVlRDT05fTUFYUE9S
VFMJMTYKKyNkZWZpbmUJVlRDT05fTUFYUQkoVlRDT05fTUFYUE9SVFMgKiAyICsgMikKKworI2Rl
ZmluZQlWVENPTl9ERVZJQ0VfUkVBRFkJMAorI2RlZmluZQlWVENPTl9ERVZJQ0VfQURECTEKKyNk
ZWZpbmUJVlRDT05fREVWSUNFX1JFTU9WRQkyCisjZGVmaW5lCVZUQ09OX1BPUlRfUkVBRFkJMwor
I2RlZmluZQlWVENPTl9DT05TT0xFX1BPUlQJNAorI2RlZmluZQlWVENPTl9DT05TT0xFX1JFU0la
RQk1CisjZGVmaW5lCVZUQ09OX1BPUlRfT1BFTgkJNgorI2RlZmluZQlWVENPTl9QT1JUX05BTUUJ
CTcKKworI2RlZmluZQlWVENPTl9GX1NJWkUJCTAKKyNkZWZpbmUJVlRDT05fRl9NVUxUSVBPUlQJ
MQorI2RlZmluZQlWVENPTl9GX0VNRVJHX1dSSVRFCTIKKyNkZWZpbmUJVlRDT05fU19IT1NUQ0FQ
UwlcCisgICAgKFZUQ09OX0ZfU0laRSB8IFZUQ09OX0ZfTVVMVElQT1JUIHwgVlRDT05fRl9FTUVS
R19XUklURSkKKworc3RhdGljIGludCBwY2lfdnRjb25fZGVidWc7CisjZGVmaW5lIERQUklOVEYo
cGFyYW1zKSBpZiAocGNpX3Z0Y29uX2RlYnVnKSBwcmludGYgcGFyYW1zCisjZGVmaW5lIFdQUklO
VEYocGFyYW1zKSBwcmludGYgcGFyYW1zCisKK3N0cnVjdCBwY2lfdnRjb25fc29mdGM7CitzdHJ1
Y3QgcGNpX3Z0Y29uX3BvcnQ7CitzdHJ1Y3QgcGNpX3Z0Y29uX2NvbmZpZzsKK3R5cGVkZWYgdm9p
ZCAocGNpX3Z0Y29uX2NiX3QpKHN0cnVjdCBwY2lfdnRjb25fcG9ydCAqLCB2b2lkICosIHN0cnVj
dCBpb3ZlYyAqLAorICAgIGludCk7CisKK3N0cnVjdCBwY2lfdnRjb25fcG9ydCB7CisJc3RydWN0
IHBjaV92dGNvbl9zb2Z0YyAqIHZzcF9zYzsKKwlpbnQgICAgICAgICAgICAgICAgICAgICAgdnNw
X2lkOworCWNvbnN0IGNoYXIgKiAgICAgICAgICAgICB2c3BfbmFtZTsKKwlib29sICAgICAgICAg
ICAgICAgICAgICAgdnNwX2VuYWJsZWQ7CisJYm9vbCAgICAgICAgICAgICAgICAgICAgIHZzcF9j
b25zb2xlOworCWJvb2wgICAgICAgICAgICAgICAgICAgICB2c3BfcnhfcmVhZHk7CisJaW50ICAg
ICAgICAgICAgICAgICAgICAgIHZzcF9yeHE7CisJaW50ICAgICAgICAgICAgICAgICAgICAgIHZz
cF90eHE7CisJdm9pZCAqICAgICAgICAgICAgICAgICAgIHZzcF9hcmc7CisJcGNpX3Z0Y29uX2Ni
X3QgKiAgICAgICAgIHZzcF9jYjsKK307CisKK3N0cnVjdCBwY2lfdnRjb25fc29jaworeworCXN0
cnVjdCBwY2lfdnRjb25fcG9ydCAqICB2c3NfcG9ydDsKKwljb25zdCBjaGFyICogICAgICAgICAg
ICAgdnNzX3BhdGg7CisJc3RydWN0IG1ldmVudCAqICAgICAgICAgIHZzc19zZXJ2ZXJfZXZwOwor
CXN0cnVjdCBtZXZlbnQgKiAgICAgICAgICB2c3NfY29ubl9ldnA7CisJaW50ICAgICAgICAgICAg
ICAgICAgICAgIHZzc19zZXJ2ZXJfZmQ7CisJaW50ICAgICAgICAgICAgICAgICAgICAgIHZzc19j
b25uX2ZkOworCWJvb2wgICAgICAgICAgICAgICAgICAgICB2c3Nfb3BlbjsKK307CisKK3N0cnVj
dCBwY2lfdnRjb25fc29mdGMgeworCXN0cnVjdCB2aXJ0aW9fc29mdGMgICAgICB2c2NfdnM7CisJ
c3RydWN0IHZxdWV1ZV9pbmZvICAgICAgIHZzY19xdWV1ZXNbVlRDT05fTUFYUV07CisJcHRocmVh
ZF9tdXRleF90ICAgICAgICAgIHZzY19tdHg7CisJdWludDY0X3QgICAgICAgICAgICAgICAgIHZz
Y19jZmc7CisJdWludDY0X3QgICAgICAgICAgICAgICAgIHZzY19mZWF0dXJlczsKKwljaGFyICog
ICAgICAgICAgICAgICAgICAgdnNjX3Jvb3RkaXI7CisJaW50ICAgICAgICAgICAgICAgICAgICAg
IHZzY19rcTsKKwlpbnQgICAgICAgICAgICAgICAgICAgICAgdnNjX25wb3J0czsKKwlzdHJ1Y3Qg
cGNpX3Z0Y29uX3BvcnQgICAgdnNjX2NvbnRyb2xfcG9ydDsKKyAJc3RydWN0IHBjaV92dGNvbl9w
b3J0ICAgIHZzY19wb3J0c1tWVENPTl9NQVhQT1JUU107CisJc3RydWN0IHBjaV92dGNvbl9jb25m
aWcgKnZzY19jb25maWc7Cit9OworCitzdHJ1Y3QgcGNpX3Z0Y29uX2NvbmZpZyB7CisJdWludDE2
X3QgY29sczsKKwl1aW50MTZfdCByb3dzOworCXVpbnQzMl90IG1heF9ucl9wb3J0czsKKwl1aW50
MzJfdCBlbWVyZ193cjsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBwY2lf
dnRjb25fY29udHJvbCB7CisJdWludDMyX3QgaWQ7CisJdWludDE2X3QgZXZlbnQ7CisJdWludDE2
X3QgdmFsdWU7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgcGNpX3Z0Y29u
X2NvbnNvbGVfcmVzaXplIHsKKwl1aW50MTZfdCBjb2xzOworCXVpbnQxNl90IHJvd3M7Cit9IF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdGF0aWMgdm9pZCBwY2lfdnRjb25fcmVzZXQodm9p
ZCAqKTsKK3N0YXRpYyB2b2lkIHBjaV92dGNvbl9ub3RpZnlfcngodm9pZCAqLCBzdHJ1Y3QgdnF1
ZXVlX2luZm8gKik7CitzdGF0aWMgdm9pZCBwY2lfdnRjb25fbm90aWZ5X3R4KHZvaWQgKiwgc3Ry
dWN0IHZxdWV1ZV9pbmZvICopOworc3RhdGljIGludCBwY2lfdnRjb25fY2ZncmVhZCh2b2lkICos
IGludCwgaW50LCB1aW50MzJfdCAqKTsKK3N0YXRpYyBpbnQgcGNpX3Z0Y29uX2NmZ3dyaXRlKHZv
aWQgKiwgaW50LCBpbnQsIHVpbnQzMl90KTsKK3N0YXRpYyB2b2lkIHBjaV92dGNvbl9uZWdfZmVh
dHVyZXModm9pZCAqLCB1aW50NjRfdCk7CitzdGF0aWMgdm9pZCBwY2lfdnRjb25fc29ja19hY2Nl
cHQoaW50LCBlbnVtIGV2X3R5cGUsICB2b2lkICopOworc3RhdGljIHZvaWQgcGNpX3Z0Y29uX3Nv
Y2tfcngoaW50LCBlbnVtIGV2X3R5cGUsIHZvaWQgKik7CitzdGF0aWMgdm9pZCBwY2lfdnRjb25f
c29ja190eChzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKiwgdm9pZCAqLCBzdHJ1Y3QgaW92ZWMgKiwK
KyAgICBpbnQpOworc3RhdGljIHZvaWQgcGNpX3Z0Y29uX2NvbnRyb2xfc2VuZChzdHJ1Y3QgcGNp
X3Z0Y29uX3NvZnRjICosCisgICAgc3RydWN0IHBjaV92dGNvbl9jb250cm9sICosIGNvbnN0IHZv
aWQgKiwgc2l6ZV90KTsKK3N0YXRpYyB2b2lkIHBjaV92dGNvbl9hbm5vdW5jZV9wb3J0KHN0cnVj
dCBwY2lfdnRjb25fcG9ydCAqKTsKK3N0YXRpYyB2b2lkIHBjaV92dGNvbl9vcGVuX3BvcnQoc3Ry
dWN0IHBjaV92dGNvbl9wb3J0ICosIGJvb2wpOworCitzdGF0aWMgc3RydWN0IHZpcnRpb19jb25z
dHMgdnRjb25fdmlfY29uc3RzID0geworCSJ2dGNvbiIsCQkvKiBvdXIgbmFtZSAqLworCVZUQ09O
X01BWFEsCQkvKiB3ZSBzdXBwb3J0IFZUQ09OX01BWFEgdmlydHF1ZXVlcyAqLworCXNpemVvZihz
dHJ1Y3QgcGNpX3Z0Y29uX2NvbmZpZyksIC8qIGNvbmZpZyByZWcgc2l6ZSAqLworCXBjaV92dGNv
bl9yZXNldCwJLyogcmVzZXQgKi8KKwlOVUxMLAkJCS8qIGRldmljZS13aWRlIHFub3RpZnkgKi8K
KwlwY2lfdnRjb25fY2ZncmVhZCwJLyogcmVhZCB2aXJ0aW8gY29uZmlnICovCisJcGNpX3Z0Y29u
X2NmZ3dyaXRlLAkvKiB3cml0ZSB2aXJ0aW8gY29uZmlnICovCisJcGNpX3Z0Y29uX25lZ19mZWF0
dXJlcywJLyogYXBwbHkgbmVnb3RpYXRlZCBmZWF0dXJlcyAqLworCVZUQ09OX1NfSE9TVENBUFMs
CS8qIG91ciBjYXBhYmlsaXRpZXMgKi8KK307CisKKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9y
ZXNldCh2b2lkICp2c2MpCit7CisJc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2M7CisKKwlzYyA9
IHZzYzsKKworCURQUklOVEYoKCJ2dGNvbjogZGV2aWNlIHJlc2V0IHJlcXVlc3RlZCFcbiIpKTsK
Kwl2aV9yZXNldF9kZXYoJnNjLT52c2NfdnMpOworfQorCitzdGF0aWMgdm9pZAorcGNpX3Z0Y29u
X25lZ19mZWF0dXJlcyh2b2lkICp2c2MsIHVpbnQ2NF90IG5lZ290aWF0ZWRfZmVhdHVyZXMpCit7
CisJc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2MgPSB2c2M7CisKKwlzYy0+dnNjX2ZlYXR1cmVz
ID0gbmVnb3RpYXRlZF9mZWF0dXJlczsKK30KKworc3RhdGljIGludAorcGNpX3Z0Y29uX2NmZ3Jl
YWQodm9pZCAqdnNjLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSwgdWludDMyX3QgKnJldHZhbCkKK3sK
KwlzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYyA9IHZzYzsKKwl2b2lkICpwdHI7CisKKwlwdHIg
PSAodWludDhfdCAqKXNjLT52c2NfY29uZmlnICsgb2Zmc2V0OworCW1lbWNweShyZXR2YWwsIHB0
ciwgc2l6ZSk7CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorcGNpX3Z0Y29uX2NmZ3dy
aXRlKHZvaWQgKnZzYywgaW50IG9mZnNldCwgaW50IHNpemUsIHVpbnQzMl90IHZhbCkKK3sKKwor
CXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBjaV92dGNvbl9wb3J0ICoK
K3BjaV92dGNvbl92cV90b19wb3J0KHN0cnVjdCBwY2lfdnRjb25fc29mdGMgKnNjLCBzdHJ1Y3Qg
dnF1ZXVlX2luZm8gKnZxKQoreworCXVpbnQxNl90IG51bSA9IHZxLT52cV9udW07CisKKwlpZiAo
bnVtID09IDAgfHwgbnVtID09IDEpCisJCXJldHVybiAoJnNjLT52c2NfcG9ydHNbMF0pOworCisJ
aWYgKG51bSA9PSAyIHx8IG51bSA9PSAzKQorCQlyZXR1cm4gKCZzYy0+dnNjX2NvbnRyb2xfcG9y
dCk7CisKKwlyZXR1cm4gKCZzYy0+dnNjX3BvcnRzWyhudW0gLyAyKSAtIDFdKTsKK30KKworc3Rh
dGljIGlubGluZSBzdHJ1Y3QgdnF1ZXVlX2luZm8gKgorcGNpX3Z0Y29uX3BvcnRfdG9fdnEoc3Ry
dWN0IHBjaV92dGNvbl9wb3J0ICpwb3J0LCBib29sIHR4X3F1ZXVlKQoreworCWludCBxbnVtOwor
CisJcW51bSA9IHR4X3F1ZXVlID8gcG9ydC0+dnNwX3R4cSA6IHBvcnQtPnZzcF9yeHE7CisJcmV0
dXJuICgmcG9ydC0+dnNwX3NjLT52c2NfcXVldWVzW3FudW1dKTsKK30KKworc3RhdGljIHN0cnVj
dCBwY2lfdnRjb25fcG9ydCAqCitwY2lfdnRjb25fcG9ydF9hZGQoc3RydWN0IHBjaV92dGNvbl9z
b2Z0YyAqc2MsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgcGNpX3Z0Y29uX2NiX3QgKmNiLCB2b2lk
ICphcmcpCit7CisJc3RydWN0IHBjaV92dGNvbl9wb3J0ICpwb3J0OworCisJaWYgKHNjLT52c2Nf
bnBvcnRzID09IFZUQ09OX01BWFBPUlRTKSB7CisJCWVycm5vID0gRUJVU1k7CisJCXJldHVybiAo
TlVMTCk7CisJfQorCisJcG9ydCA9ICZzYy0+dnNjX3BvcnRzW3NjLT52c2NfbnBvcnRzKytdOwor
CXBvcnQtPnZzcF9pZCA9IHNjLT52c2NfbnBvcnRzIC0gMTsKKwlwb3J0LT52c3Bfc2MgPSBzYzsK
Kwlwb3J0LT52c3BfbmFtZSA9IG5hbWU7CisJcG9ydC0+dnNwX2NiID0gY2I7CisJcG9ydC0+dnNw
X2FyZyA9IGFyZzsKKworCWlmIChwb3J0LT52c3BfaWQgPT0gMCkgeworCQkvKiBwb3J0MCAqLwor
CQlwb3J0LT52c3BfdHhxID0gMDsKKwkJcG9ydC0+dnNwX3J4cSA9IDE7CisJfSBlbHNlIHsKKwkJ
cG9ydC0+dnNwX3R4cSA9IHNjLT52c2NfbnBvcnRzICogMjsKKwkJcG9ydC0+dnNwX3J4cSA9IHBv
cnQtPnZzcF90eHEgKyAxOworCX0KKworCXBvcnQtPnZzcF9lbmFibGVkID0gdHJ1ZTsKKwlyZXR1
cm4gKHBvcnQpOworfQorCitzdGF0aWMgaW50CitwY2lfdnRjb25fc29ja19hZGQoc3RydWN0IHBj
aV92dGNvbl9zb2Z0YyAqc2MsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgY29uc3QgY2hhciAqcGF0
aCkKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3NvY2sgKnNvY2s7CisJc3RydWN0IHNvY2thZGRyX3Vu
IHN1bjsKKwlpbnQgcyA9IC0xLCBmZCA9IC0xLCBlcnJvciA9IDA7CisKKwlzb2NrID0gY2FsbG9j
KDEsIHNpemVvZihzdHJ1Y3QgcGNpX3Z0Y29uX3NvY2spKTsKKwlpZiAoc29jayA9PSBOVUxMKSB7
CisJCWVycm9yID0gLTE7CisJCWdvdG8gb3V0OworCX0KKworCXMgPSBzb2NrZXQoQUZfVU5JWCwg
U09DS19TVFJFQU0sIDApOworCWlmIChzIDwgMCkgeworCQllcnJvciA9IC0xOworCQlnb3RvIG91
dDsKKwl9CisKKwlmZCA9IG9wZW4oZGlybmFtZShwYXRoKSwgT19SRE9OTFkgfCBPX0RJUkVDVE9S
WSk7CisJaWYgKGZkIDwgMCkgeworCQllcnJvciA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKwlz
dW4uc3VuX2ZhbWlseSA9IEFGX1VOSVg7CisJc3VuLnN1bl9sZW4gPSBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX3VuKTsKKwlzdHJuY3B5KHN1bi5zdW5fcGF0aCwgYmFzZW5hbWUoKGNoYXIgKilwYXRo
KSwgc2l6ZW9mKHN1bi5zdW5fcGF0aCkpOworCisJaWYgKGJpbmRhdChmZCwgcywgKHN0cnVjdCBz
b2NrYWRkciAqKSZzdW4sIHN1bi5zdW5fbGVuKSA8IDApIHsKKwkJZXJyb3IgPSAtMTsKKwkJZ290
byBvdXQ7CisJfQorCisJaWYgKGZjbnRsKHMsIEZfU0VURkwsIE9fTk9OQkxPQ0spIDwgMCkgewor
CQllcnJvciA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAobGlzdGVuKHMsIDEpIDwgMCkg
eworCQllcnJvciA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKworCXNvY2stPnZzc19wb3J0ID0g
cGNpX3Z0Y29uX3BvcnRfYWRkKHNjLCBuYW1lLCBwY2lfdnRjb25fc29ja190eCwgc29jayk7CisJ
aWYgKHNvY2stPnZzc19wb3J0ID09IE5VTEwpIHsKKwkJZXJyb3IgPSAtMTsKKwkJZ290byBvdXQ7
CisJfQorCisJc29jay0+dnNzX29wZW4gPSBmYWxzZTsKKwlzb2NrLT52c3NfY29ubl9mZCA9IC0x
OworCXNvY2stPnZzc19zZXJ2ZXJfZmQgPSBzOworCXNvY2stPnZzc19zZXJ2ZXJfZXZwID0gbWV2
ZW50X2FkZChzLCBFVkZfUkVBRCwgcGNpX3Z0Y29uX3NvY2tfYWNjZXB0LAorCSAgICBzb2NrKTsK
KworCWlmIChzb2NrLT52c3Nfc2VydmVyX2V2cCA9PSBOVUxMKSB7CisJCWVycm9yID0gLTE7CisJ
CWdvdG8gb3V0OworCX0KKworb3V0OgorCWlmIChmZCAhPSAtMSkKKwkJY2xvc2UoZmQpOworCisJ
aWYgKGVycm9yICE9IDAgJiYgcyAhPSAtMSkKKwkJY2xvc2Uocyk7CisKKwlyZXR1cm4gKGVycm9y
KTsKK30KKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9zb2NrX2FjY2VwdChpbnQgZmQgX191bnVz
ZWQsIGVudW0gZXZfdHlwZSB0IF9fdW51c2VkLCB2b2lkICphcmcpCit7CisJc3RydWN0IHBjaV92
dGNvbl9zb2NrICpzb2NrID0gKHN0cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsKKwlpbnQgczsK
KworCXMgPSBhY2NlcHQoc29jay0+dnNzX3NlcnZlcl9mZCwgTlVMTCwgTlVMTCk7CisJaWYgKHMg
PCAwKQorCQlyZXR1cm47CisKKwlpZiAoc29jay0+dnNzX29wZW4pIHsKKwkJY2xvc2Uocyk7CisJ
CXJldHVybjsKKwl9CisKKwlzb2NrLT52c3Nfb3BlbiA9IHRydWU7CisJc29jay0+dnNzX2Nvbm5f
ZmQgPSBzOworCXNvY2stPnZzc19jb25uX2V2cCA9IG1ldmVudF9hZGQocywgRVZGX1JFQUQsIHBj
aV92dGNvbl9zb2NrX3J4LCBzb2NrKTsKKwlwY2lfdnRjb25fb3Blbl9wb3J0KHNvY2stPnZzc19w
b3J0LCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9zb2NrX3J4KGludCBmZCBf
X3VudXNlZCwgZW51bSBldl90eXBlIHQgX191bnVzZWQsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qg
cGNpX3Z0Y29uX3BvcnQgKnBvcnQ7CisJc3RydWN0IHBjaV92dGNvbl9zb2NrICpzb2NrID0gKHN0
cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsKKwlzdHJ1Y3QgdnF1ZXVlX2luZm8gKnZxOworCXN0
cnVjdCBpb3ZlYyBpb3Y7CisJc3RhdGljIGNoYXIgZHVtbXlidWZbMjA0OF07CisJaW50IGxlbiwg
bjsKKwl1aW50MTZfdCBpZHg7CisKKwlwb3J0ID0gc29jay0+dnNzX3BvcnQ7CisJdnEgPSBwY2lf
dnRjb25fcG9ydF90b192cShwb3J0LCB0cnVlKTsKKworCWlmICghc29jay0+dnNzX29wZW4gfHwg
IXBvcnQtPnZzcF9yeF9yZWFkeSkgeworCQlsZW4gPSByZWFkKHNvY2stPnZzc19jb25uX2ZkLCBk
dW1teWJ1Ziwgc2l6ZW9mKGR1bW15YnVmKSk7CisJCWlmIChsZW4gPT0gMCkKKwkJCWdvdG8gY2xv
c2U7CisKKwkJcmV0dXJuOworCX0KKworCWlmICghdnFfaGFzX2Rlc2NzKHZxKSkgeworCQlsZW4g
PSByZWFkKHNvY2stPnZzc19jb25uX2ZkLCBkdW1teWJ1Ziwgc2l6ZW9mKGR1bW15YnVmKSk7CisJ
CXZxX2VuZGNoYWlucyh2cSwgMSk7CisJCWlmIChsZW4gPT0gMCkKKwkJCWdvdG8gY2xvc2U7CisK
KwkJcmV0dXJuOworCX0KKworCWRvIHsKKwkJbiA9IHZxX2dldGNoYWluKHZxLCAmaWR4LCAmaW92
LCAxLCBOVUxMKTsKKwkJbGVuID0gcmVhZHYoc29jay0+dnNzX2Nvbm5fZmQsICZpb3YsIG4pOwor
CisJCWlmIChsZW4gPT0gMCB8fCAobGVuIDwgMCAmJiBlcnJubyA9PSBFV09VTERCTE9DSykpIHsK
KwkJCXZxX3JldGNoYWluKHZxKTsKKwkJCXZxX2VuZGNoYWlucyh2cSwgMCk7CisJCQlpZiAobGVu
ID09IDApCisJCQkJZ290byBjbG9zZTsKKworCQkJcmV0dXJuOworCQl9CisKKwkJdnFfcmVsY2hh
aW4odnEsIGlkeCwgbGVuKTsKKwl9IHdoaWxlICh2cV9oYXNfZGVzY3ModnEpKTsKKworCXZxX2Vu
ZGNoYWlucyh2cSwgMSk7CisKK2Nsb3NlOgorCW1ldmVudF9kZWxldGVfY2xvc2Uoc29jay0+dnNz
X2Nvbm5fZXZwKTsKKwlzb2NrLT52c3NfY29ubl9mZCA9IC0xOworCXNvY2stPnZzc19vcGVuID0g
ZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkCitwY2lfdnRjb25fc29ja190eChzdHJ1Y3QgcGNpX3Z0
Y29uX3BvcnQgKnBvcnQsIHZvaWQgKmFyZywgc3RydWN0IGlvdmVjICppb3YsCisgICAgaW50IG5p
b3YpCit7CisJc3RydWN0IHBjaV92dGNvbl9zb2NrICpzb2NrOworCWludCByZXQ7CisKKwlzb2Nr
ID0gKHN0cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsKKworCWlmIChzb2NrLT52c3NfY29ubl9m
ZCA9PSAtMSkKKwkJcmV0dXJuOworCisJcmV0ID0gd3JpdGV2KHNvY2stPnZzc19jb25uX2ZkLCBp
b3YsIG5pb3YpOworCisJaWYgKHJldCA8IDAgJiYgZXJybm8gIT0gRVdPVUxEQkxPQ0spIHsKKwkJ
bWV2ZW50X2RlbGV0ZV9jbG9zZShzb2NrLT52c3NfY29ubl9ldnApOworCQlzb2NrLT52c3NfY29u
bl9mZCA9IC0xOworCQlzb2NrLT52c3Nfb3BlbiA9IGZhbHNlOworCX0KK30KKworc3RhdGljIHZv
aWQKK3BjaV92dGNvbl9jb250cm9sX3R4KHN0cnVjdCBwY2lfdnRjb25fcG9ydCAqcG9ydCwgdm9p
ZCAqYXJnLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKKyAgICBpbnQgbmlvdikKK3sKKwlzdHJ1Y3QgcGNp
X3Z0Y29uX3NvZnRjICpzYzsKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnRtcDsKKwlzdHJ1Y3Qg
cGNpX3Z0Y29uX2NvbnRyb2wgcmVzcCwgKmN0cmw7CisJaW50IGk7CisKKwlhc3NlcnQobmlvdiA9
PSAxKTsKKworCXNjID0gcG9ydC0+dnNwX3NjOworCWN0cmwgPSAoc3RydWN0IHBjaV92dGNvbl9j
b250cm9sICopaW92LT5pb3ZfYmFzZTsKKworCXN3aXRjaCAoY3RybC0+ZXZlbnQpIHsKKwljYXNl
IFZUQ09OX0RFVklDRV9SRUFEWToKKwkJLyogc2V0IHBvcnQgcmVhZHkgZXZlbnRzIGZvciByZWdp
c3RlcmVkIHBvcnRzICovCisJCWZvciAoaSA9IDA7IGkgPCBWVENPTl9NQVhQT1JUUzsgaSsrKSB7
CisJCQl0bXAgPSAmc2MtPnZzY19wb3J0c1tpXTsKKwkJCWlmICh0bXAtPnZzcF9lbmFibGVkKQor
CQkJCXBjaV92dGNvbl9hbm5vdW5jZV9wb3J0KHRtcCk7CisJCX0KKwkJYnJlYWs7CisKKwljYXNl
IFZUQ09OX1BPUlRfUkVBRFk6CisJCWlmIChjdHJsLT5pZCA+PSBzYy0+dnNjX25wb3J0cykgewor
CQkJV1BSSU5URigoIlZUQ09OX1BPUlRfUkVBRFkgZXZlbnQgZm9yIHVua25vd24gcG9ydCAlZFxu
IiwKKwkJCSAgICBjdHJsLT5pZCkpOworCQkJcmV0dXJuOworCQl9CisKKwkJdG1wID0gJnNjLT52
c2NfcG9ydHNbY3RybC0+aWRdOworCQlpZiAodG1wLT52c3BfY29uc29sZSkgeworCQkJcmVzcC5l
dmVudCA9IFZUQ09OX0NPTlNPTEVfUE9SVDsKKwkJCXJlc3AuaWQgPSBjdHJsLT5pZDsKKwkJCXJl
c3AudmFsdWUgPSAxOworCQkJcGNpX3Z0Y29uX2NvbnRyb2xfc2VuZChzYywgJnJlc3AsIE5VTEws
IDApOworCQl9CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9hbm5v
dW5jZV9wb3J0KHN0cnVjdCBwY2lfdnRjb25fcG9ydCAqcG9ydCkKK3sKKwlzdHJ1Y3QgcGNpX3Z0
Y29uX2NvbnRyb2wgZXZlbnQ7CisKKwlldmVudC5pZCA9IHBvcnQtPnZzcF9pZDsKKwlldmVudC5l
dmVudCA9IFZUQ09OX0RFVklDRV9BREQ7CisJZXZlbnQudmFsdWUgPSAxOworCXBjaV92dGNvbl9j
b250cm9sX3NlbmQocG9ydC0+dnNwX3NjLCAmZXZlbnQsIE5VTEwsIDApOworCisJZXZlbnQuZXZl
bnQgPSBWVENPTl9QT1JUX05BTUU7CisJcGNpX3Z0Y29uX2NvbnRyb2xfc2VuZChwb3J0LT52c3Bf
c2MsICZldmVudCwgcG9ydC0+dnNwX25hbWUsCisJICAgIHN0cmxlbihwb3J0LT52c3BfbmFtZSkp
OworfQorCitzdGF0aWMgdm9pZAorcGNpX3Z0Y29uX29wZW5fcG9ydChzdHJ1Y3QgcGNpX3Z0Y29u
X3BvcnQgKnBvcnQsIGJvb2wgb3BlbikKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX2NvbnRyb2wgZXZl
bnQ7CisKKwlldmVudC5pZCA9IHBvcnQtPnZzcF9pZDsKKwlldmVudC5ldmVudCA9IFZUQ09OX1BP
UlRfT1BFTjsKKwlldmVudC52YWx1ZSA9IChpbnQpb3BlbjsKKwlwY2lfdnRjb25fY29udHJvbF9z
ZW5kKHBvcnQtPnZzcF9zYywgJmV2ZW50LCBOVUxMLCAwKTsKK30KKworc3RhdGljIHZvaWQKK3Bj
aV92dGNvbl9jb250cm9sX3NlbmQoc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2MsCisgICAgc3Ry
dWN0IHBjaV92dGNvbl9jb250cm9sICpjdHJsLCBjb25zdCB2b2lkICpwYXlsb2FkLCBzaXplX3Qg
bGVuKQoreworCXN0cnVjdCB2cXVldWVfaW5mbyAqdnE7CisJc3RydWN0IGlvdmVjIGlvdjsKKwl1
aW50MTZfdCBpZHg7CisJaW50IG47CisKKwl2cSA9IHBjaV92dGNvbl9wb3J0X3RvX3ZxKCZzYy0+
dnNjX2NvbnRyb2xfcG9ydCwgdHJ1ZSk7CisKKwlpZiAoIXZxX2hhc19kZXNjcyh2cSkpCisJCXJl
dHVybjsKKworCW4gPSB2cV9nZXRjaGFpbih2cSwgJmlkeCwgJmlvdiwgMSwgTlVMTCk7CisKKwlh
c3NlcnQobiA9PSAxKTsKKworCW1lbWNweShpb3YuaW92X2Jhc2UsIGN0cmwsIHNpemVvZihzdHJ1
Y3QgcGNpX3Z0Y29uX2NvbnRyb2wpKTsKKwlpZiAocGF5bG9hZCAhPSBOVUxMICYmIGxlbiA+IDAp
CisJCW1lbWNweShpb3YuaW92X2Jhc2UgKyBzaXplb2Yoc3RydWN0IHBjaV92dGNvbl9jb250cm9s
KSwKKwkJICAgICBwYXlsb2FkLCBsZW4pOworCisJdnFfcmVsY2hhaW4odnEsIGlkeCwgc2l6ZW9m
KHN0cnVjdCBwY2lfdnRjb25fY29udHJvbCkgKyBsZW4pOworCXZxX2VuZGNoYWlucyh2cSwgMSk7
Cit9CisgICAgCisKK3N0YXRpYyB2b2lkCitwY2lfdnRjb25fbm90aWZ5X3R4KHZvaWQgKnZzYywg
c3RydWN0IHZxdWV1ZV9pbmZvICp2cSkKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYzsK
KwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQ7CisJc3RydWN0IGlvdmVjIGlvdlsxXTsKKwl1
aW50MTZfdCBpZHgsIG47CisJdWludDE2X3QgZmxhZ3NbOF07CisKKwlzYyA9IHZzYzsKKwlwb3J0
ID0gcGNpX3Z0Y29uX3ZxX3RvX3BvcnQoc2MsIHZxKTsKKworCXdoaWxlICh2cV9oYXNfZGVzY3Mo
dnEpKSB7CisJCW4gPSB2cV9nZXRjaGFpbih2cSwgJmlkeCwgaW92LCAxLCBmbGFncyk7CisJCWlm
IChwb3J0ICE9IE5VTEwpCisJCQlwb3J0LT52c3BfY2IocG9ydCwgcG9ydC0+dnNwX2FyZywgaW92
LCAxKTsKKworCQkvKgorCQkgKiBSZWxlYXNlIHRoaXMgY2hhaW4gYW5kIGhhbmRsZSBtb3JlCisJ
CSAqLworCQl2cV9yZWxjaGFpbih2cSwgaWR4LCAwKTsKKwl9CisJdnFfZW5kY2hhaW5zKHZxLCAx
KTsJLyogR2VuZXJhdGUgaW50ZXJydXB0IGlmIGFwcHJvcHJpYXRlLiAqLworfQorCitzdGF0aWMg
dm9pZAorcGNpX3Z0Y29uX25vdGlmeV9yeCh2b2lkICp2c2MsIHN0cnVjdCB2cXVldWVfaW5mbyAq
dnEpCit7CisJc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2M7CisJc3RydWN0IHBjaV92dGNvbl9w
b3J0ICpwb3J0OworCisJc2MgPSB2c2M7CisJcG9ydCA9IHBjaV92dGNvbl92cV90b19wb3J0KHNj
LCB2cSk7CisKKwlpZiAoIXBvcnQtPnZzcF9yeF9yZWFkeSkgeworCQlwb3J0LT52c3BfcnhfcmVh
ZHkgPSAxOworCQl2cS0+dnFfdXNlZC0+dnVfZmxhZ3MgfD0gVlJJTkdfVVNFRF9GX05PX05PVElG
WTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK3BjaV92dGNvbl9pbml0KHN0cnVjdCB2bWN0eCAqY3R4
LCBzdHJ1Y3QgcGNpX2Rldmluc3QgKnBpLCBjaGFyICpvcHRzKQoreworCXN0cnVjdCBwY2lfdnRj
b25fc29mdGMgKnNjOworCWNoYXIgKnBvcnRuYW1lID0gTlVMTDsKKwljaGFyICpwb3J0cGF0aCA9
IE5VTEw7CisJY2hhciAqb3B0OworCWludCBpOwkKKworCXNjID0gY2FsbG9jKDEsIHNpemVvZihz
dHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjKSk7CisJc2MtPnZzY19jb25maWcgPSBjYWxsb2MoMSwgc2l6
ZW9mKHN0cnVjdCBwY2lfdnRjb25fY29uZmlnKSk7CisJc2MtPnZzY19jb25maWctPm1heF9ucl9w
b3J0cyA9IFZUQ09OX01BWFBPUlRTOworCXNjLT52c2NfY29uZmlnLT5jb2xzID0gODA7CisJc2Mt
PnZzY19jb25maWctPnJvd3MgPSAyNTsgCisKKwl2aV9zb2Z0Y19saW5rdXAoJnNjLT52c2NfdnMs
ICZ2dGNvbl92aV9jb25zdHMsIHNjLCBwaSwgc2MtPnZzY19xdWV1ZXMpOworCXNjLT52c2NfdnMu
dnNfbXR4ID0gJnNjLT52c2NfbXR4OworCisJZm9yIChpID0gMDsgaSA8IFZUQ09OX01BWFE7IGkr
KykgeworCQlzYy0+dnNjX3F1ZXVlc1tpXS52cV9xc2l6ZSA9IFZUQ09OX1JJTkdTWjsKKwkJc2Mt
PnZzY19xdWV1ZXNbaV0udnFfbm90aWZ5ID0gaSAlIDIgPT0gMAorCQkgICAgPyBwY2lfdnRjb25f
bm90aWZ5X3J4CisJCSAgICA6IHBjaV92dGNvbl9ub3RpZnlfdHg7CisJfQorCisJLyogaW5pdGlh
bGl6ZSBjb25maWcgc3BhY2UgKi8KKwlwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9ERVZJQ0Us
IFZJUlRJT19ERVZfQ09OU09MRSk7CisJcGNpX3NldF9jZmdkYXRhMTYocGksIFBDSVJfVkVORE9S
LCBWSVJUSU9fVkVORE9SKTsKKwlwY2lfc2V0X2NmZ2RhdGE4KHBpLCBQQ0lSX0NMQVNTLCBQQ0lD
X1NJTVBMRUNPTU0pOworCXBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lSX1NVQkRFVl8wLCBWSVJU
SU9fVFlQRV9DT05TT0xFKTsKKwlwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9TVUJWRU5EXzAs
IFZJUlRJT19WRU5ET1IpOworCisJaWYgKHZpX2ludHJfaW5pdCgmc2MtPnZzY192cywgMSwgZmJz
ZHJ1bl92aXJ0aW9fbXNpeCgpKSkKKwkJcmV0dXJuICgxKTsKKwl2aV9zZXRfaW9fYmFyKCZzYy0+
dnNjX3ZzLCAwKTsKKworCS8qIGNyZWF0ZSBjb250cm9sIHBvcnQgKi8KKwlzYy0+dnNjX2NvbnRy
b2xfcG9ydC52c3Bfc2MgPSBzYzsKKwlzYy0+dnNjX2NvbnRyb2xfcG9ydC52c3BfdHhxID0gMjsK
KwlzYy0+dnNjX2NvbnRyb2xfcG9ydC52c3BfcnhxID0gMzsKKwlzYy0+dnNjX2NvbnRyb2xfcG9y
dC52c3BfY2IgPSBwY2lfdnRjb25fY29udHJvbF90eDsKKwlzYy0+dnNjX2NvbnRyb2xfcG9ydC52
c3BfZW5hYmxlZCA9IHRydWU7CisKKwl3aGlsZSAoKG9wdCA9IHN0cnNlcCgmb3B0cywgIiwiKSkg
IT0gTlVMTCkgeworCQlwb3J0bmFtZSA9IHN0cnNlcCgmb3B0LCAiPSIpOworCQlwb3J0cGF0aCA9
IHN0cmR1cChvcHQpOworCisJCS8qIGNyZWF0ZSBwb3J0ICovCisJCWlmIChwY2lfdnRjb25fc29j
a19hZGQoc2MsIHBvcnRuYW1lLCBwb3J0cGF0aCkgPCAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwg
ImNhbm5vdCBjcmVhdGUgcG9ydCAlczogJXNcbiIsCisJCQkgICAgcG9ydG5hbWUsIHN0cmVycm9y
KGVycm5vKSk7CisJCQlyZXR1cm4gKDEpOworCQl9CisJfQorCisJcmV0dXJuICgwKTsKK30KKwor
c3RydWN0IHBjaV9kZXZlbXUgcGNpX2RlX3Zjb24gPSB7CisJLnBlX2VtdSA9CSJ2aXJ0aW8tY29u
c29sZSIsCisJLnBlX2luaXQgPQlwY2lfdnRjb25faW5pdCwKKwkucGVfYmFyd3JpdGUgPQl2aV9w
Y2lfd3JpdGUsCisJLnBlX2JhcnJlYWQgPQl2aV9wY2lfcmVhZAorfTsKK1BDSV9FTVVMX1NFVChw
Y2lfZGVfdmNvbik7CmRpZmYgLS1naXQgYS9oZWFkL3Vzci5zYmluL2JoeXZlL01ha2VmaWxlIGIv
aGVhZC91c3Iuc2Jpbi9iaHl2ZS9NYWtlZmlsZQotLS0gYS9oZWFkL3Vzci5zYmluL2JoeXZlL01h
a2VmaWxlCisrKyBiL2hlYWQvdXNyLnNiaW4vYmh5dmUvTWFrZWZpbGUKQEAgLTM2LDYgKzM2LDcg
QEAKIAlwY2lfbHBjLmMJCVwKIAlwY2lfcGFzc3RocnUuYwkJXAogCXBjaV92aXJ0aW9fYmxvY2su
YwlcCisJcGNpX3ZpcnRpb19jb25zb2xlLmMJXAogCXBjaV92aXJ0aW9fbmV0LmMJXAogCXBjaV92
aXJ0aW9fcm5kLmMJXAogCXBjaV91YXJ0LmMJCVwKCg==


--b1_cdb8b977c385734b9760c191c9ddc9cd--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cdb8b977c385734b9760c191c9ddc9cd>