Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Oct 2012 22:05:54 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Nikolay Denev <ndenev@gmail.com>
Cc:        FreeBSD Hackers <freebsd-hackers@freebsd.org>, Garrett Wollman <wollman@freebsd.org>
Subject:   Re: NFS server bottlenecks
Message-ID:  <937460294.2185822.1350093954059.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <608951636.2115684.1349992972756.JavaMail.root@erie.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_2185821_351431992.1350093954057
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

I wrote:
> Oops, I didn't get the "readahead" option description
> quite right in the last post. The default read ahead
> is 1, which does result in "rsize * 2", since there is
> the read + 1 readahead.
> 
> "rsize * 16" would actually be for the option "readahead=15"
> and for "readahead=16" the calculation would be "rsize * 17".
> 
> However, the example was otherwise ok, I think? rick

I've attached the patch drc3.patch (it assumes drc2.patch has already been
applied) that replaces the single mutex with one for each hash list
for tcp. It also increases the size of NFSRVCACHE_HASHSIZE to 200.

These patches are also at:
  http://people.freebsd.org/~rmacklem/drc2.patch
  http://people.freebsd.org/~rmacklem/drc3.patch
in case the attachments don't get through.

rick
ps: I haven't tested drc3.patch a lot, but I think it's ok?

> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe@freebsd.org"

------=_Part_2185821_351431992.1350093954057
Content-Type: text/x-patch; name=drc2.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=drc2.patch

LS0tIGZzL25mc3NlcnZlci9uZnNfbmZzZGNhY2hlLmMub3JpZwkyMDEyLTAyLTI5IDIxOjA3OjUz
LjAwMDAwMDAwMCAtMDUwMAorKysgZnMvbmZzc2VydmVyL25mc19uZnNkY2FjaGUuYwkyMDEyLTEw
LTAzIDA4OjIzOjI0LjAwMDAwMDAwMCAtMDQwMApAQCAtMTY0LDggKzE2NCwxOSBAQCBORlNDQUNI
RU1VVEVYOwogaW50IG5mc3JjX2Zsb29kbGV2ZWwgPSBORlNSVkNBQ0hFX0ZMT09ETEVWRUwsIG5m
c3JjX3RjcHNhdmVkcmVwbGllcyA9IDA7CiAjZW5kaWYJLyogIUFQUExFS0VYVCAqLwogCitTWVND
VExfREVDTChfdmZzX25mc2QpOworCitzdGF0aWMgaW50CW5mc3JjX3RjcGhpZ2h3YXRlciA9IDA7
CitTWVNDVExfSU5UKF92ZnNfbmZzZCwgT0lEX0FVVE8sIHRjcGhpZ2h3YXRlciwgQ1RMRkxBR19S
VywKKyAgICAmbmZzcmNfdGNwaGlnaHdhdGVyLCAwLAorICAgICJIaWdoIHdhdGVyIG1hcmsgZm9y
IFRDUCBjYWNoZSBlbnRyaWVzIik7CitzdGF0aWMgaW50CW5mc3JjX3VkcGhpZ2h3YXRlciA9IE5G
U1JWQ0FDSEVfVURQSElHSFdBVEVSOworU1lTQ1RMX0lOVChfdmZzX25mc2QsIE9JRF9BVVRPLCB1
ZHBoaWdod2F0ZXIsIENUTEZMQUdfUlcsCisgICAgJm5mc3JjX3VkcGhpZ2h3YXRlciwgMCwKKyAg
ICAiSGlnaCB3YXRlciBtYXJrIGZvciBVRFAgY2FjaGUgZW50cmllcyIpOworCiBzdGF0aWMgaW50
IG5mc3JjX3RjcG5vbmlkZW1wb3RlbnQgPSAxOwotc3RhdGljIGludCBuZnNyY191ZHBoaWdod2F0
ZXIgPSBORlNSVkNBQ0hFX1VEUEhJR0hXQVRFUiwgbmZzcmNfdWRwY2FjaGVzaXplID0gMDsKK3N0
YXRpYyBpbnQgbmZzcmNfdWRwY2FjaGVzaXplID0gMDsKIHN0YXRpYyBUQUlMUV9IRUFEKCwgbmZz
cnZjYWNoZSkgbmZzcnZ1ZHBscnU7CiBzdGF0aWMgc3RydWN0IG5mc3J2aGFzaGhlYWQgbmZzcnZo
YXNodGJsW05GU1JWQ0FDSEVfSEFTSFNJWkVdLAogICAgIG5mc3J2dWRwaGFzaHRibFtORlNSVkNB
Q0hFX0hBU0hTSVpFXTsKQEAgLTc4MSw4ICs3OTIsMTUgQEAgbmZzcmNfdHJpbWNhY2hlKHVfaW50
NjRfdCBzb2NrcmVmLCBzdHJ1YwogewogCXN0cnVjdCBuZnNydmNhY2hlICpycCwgKm5leHRycDsK
IAlpbnQgaTsKKwlzdGF0aWMgdGltZV90IGxhc3R0cmltID0gMDsKIAorCWlmIChORlNEX01PTk9T
RUMgPT0gbGFzdHRyaW0gJiYKKwkgICAgbmZzcmNfdGNwc2F2ZWRyZXBsaWVzIDwgbmZzcmNfdGNw
aGlnaHdhdGVyICYmCisJICAgIG5mc3JjX3VkcGNhY2hlc2l6ZSA8IChuZnNyY191ZHBoaWdod2F0
ZXIgKworCSAgICBuZnNyY191ZHBoaWdod2F0ZXIgLyAyKSkKKwkJcmV0dXJuOwogCU5GU0xPQ0tD
QUNIRSgpOworCWxhc3R0cmltID0gTkZTRF9NT05PU0VDOwogCVRBSUxRX0ZPUkVBQ0hfU0FGRShy
cCwgJm5mc3J2dWRwbHJ1LCByY19scnUsIG5leHRycCkgewogCQlpZiAoIShycC0+cmNfZmxhZyAm
IChSQ19JTlBST0d8UkNfTE9DS0VEfFJDX1dBTlRFRCkpCiAJCSAgICAgJiYgcnAtPnJjX3JlZmNu
dCA9PSAwCg==
------=_Part_2185821_351431992.1350093954057
Content-Type: text/x-patch; name=drc3.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=drc3.patch

LS0tIGZzL25mc3NlcnZlci9uZnNfbmZzZGNhY2hlLmMuc2F2CTIwMTItMTAtMTAgMTg6NTY6MDEu
MDAwMDAwMDAwIC0wNDAwCisrKyBmcy9uZnNzZXJ2ZXIvbmZzX25mc2RjYWNoZS5jCTIwMTItMTAt
MTIgMjE6MDQ6MjEuMDAwMDAwMDAwIC0wNDAwCkBAIC0xNjAsNyArMTYwLDggQEAgX19GQlNESUQo
IiRGcmVlQlNEOiBoZWFkL3N5cy9mcy9uZnNzZXJ2ZQogI2luY2x1ZGUgPGZzL25mcy9uZnNwb3J0
Lmg+CiAKIGV4dGVybiBzdHJ1Y3QgbmZzc3RhdHMgbmV3bmZzc3RhdHM7Ci1ORlNDQUNIRU1VVEVY
OworZXh0ZXJuIHN0cnVjdCBtdHggbmZzcmNfdGNwbXR4W05GU1JWQ0FDSEVfSEFTSFNJWkVdOwor
ZXh0ZXJuIHN0cnVjdCBtdHggbmZzcmNfdWRwbXR4OwogaW50IG5mc3JjX2Zsb29kbGV2ZWwgPSBO
RlNSVkNBQ0hFX0ZMT09ETEVWRUwsIG5mc3JjX3RjcHNhdmVkcmVwbGllcyA9IDA7CiAjZW5kaWYJ
LyogIUFQUExFS0VYVCAqLwogCkBAIC0yMDgsMTAgKzIwOSwxMSBAQCBzdGF0aWMgaW50IG5ld25m
c3YyX3Byb2NpZFtORlNfVjNOUFJPQ1NdCiAJTkZTVjJQUk9DX05PT1AsCiB9OwogCisjZGVmaW5l
CW5mc3JjX2hhc2goeGlkKQkoKCh4aWQpICsgKCh4aWQpID4+IDI0KSkgJSBORlNSVkNBQ0hFX0hB
U0hTSVpFKQogI2RlZmluZQlORlNSQ1VEUEhBU0goeGlkKSBcCi0JKCZuZnNydnVkcGhhc2h0Ymxb
KCh4aWQpICsgKCh4aWQpID4+IDI0KSkgJSBORlNSVkNBQ0hFX0hBU0hTSVpFXSkKKwkoJm5mc3J2
dWRwaGFzaHRibFtuZnNyY19oYXNoKHhpZCldKQogI2RlZmluZQlORlNSQ0hBU0goeGlkKSBcCi0J
KCZuZnNydmhhc2h0YmxbKCh4aWQpICsgKCh4aWQpID4+IDI0KSkgJSBORlNSVkNBQ0hFX0hBU0hT
SVpFXSkKKwkoJm5mc3J2aGFzaHRibFtuZnNyY19oYXNoKHhpZCldKQogI2RlZmluZQlUUlVFCTEK
ICNkZWZpbmUJRkFMU0UJMAogI2RlZmluZQlORlNSVkNBQ0hFX0NIRUNLTEVOCTEwMApAQCAtMjYy
LDYgKzI2NCwxOCBAQCBzdGF0aWMgaW50IG5mc3JjX2dldGxlbmFuZGNrc3VtKG1idWZfdCBtCiBz
dGF0aWMgdm9pZCBuZnNyY19tYXJrc2FtZXRjcGNvbm4odV9pbnQ2NF90KTsKIAogLyoKKyAqIFJl
dHVybiB0aGUgY29ycmVjdCBtdXRleCBmb3IgdGhpcyBjYWNoZSBlbnRyeS4KKyAqLworc3RhdGlj
IF9faW5saW5lIHN0cnVjdCBtdHggKgorbmZzcmNfY2FjaGVtdXRleChzdHJ1Y3QgbmZzcnZjYWNo
ZSAqcnApCit7CisKKwlpZiAoKHJwLT5yY19mbGFnICYgUkNfVURQKSAhPSAwKQorCQlyZXR1cm4g
KCZuZnNyY191ZHBtdHgpOworCXJldHVybiAoJm5mc3JjX3RjcG10eFtuZnNyY19oYXNoKHJwLT5y
Y194aWQpXSk7Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIHRoZSBzZXJ2ZXIgcmVxdWVzdCBjYWNo
ZSBsaXN0CiAgKi8KIEFQUExFU1RBVElDIHZvaWQKQEAgLTMzNiwxMCArMzUwLDEyIEBAIG5mc3Jj
X2dldHVkcChzdHJ1Y3QgbmZzcnZfZGVzY3JpcHQgKm5kLCAKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42
ICpzYWRkcjY7CiAJc3RydWN0IG5mc3J2aGFzaGhlYWQgKmhwOwogCWludCByZXQgPSAwOworCXN0
cnVjdCBtdHggKm11dGV4OwogCisJbXV0ZXggPSBuZnNyY19jYWNoZW11dGV4KG5ld3JwKTsKIAlo
cCA9IE5GU1JDVURQSEFTSChuZXdycC0+cmNfeGlkKTsKIGxvb3A6Ci0JTkZTTE9DS0NBQ0hFKCk7
CisJbXR4X2xvY2sobXV0ZXgpOwogCUxJU1RfRk9SRUFDSChycCwgaHAsIHJjX2hhc2gpIHsKIAkg
ICAgaWYgKG5ld3JwLT5yY194aWQgPT0gcnAtPnJjX3hpZCAmJgogCQluZXdycC0+cmNfcHJvYyA9
PSBycC0+cmNfcHJvYyAmJgpAQCAtMzQ3LDggKzM2Myw4IEBAIGxvb3A6CiAJCW5mc2FkZHJfbWF0
Y2goTkVURkFNSUxZKHJwKSwgJnJwLT5yY19oYWRkciwgbmQtPm5kX25hbSkpIHsKIAkJCWlmICgo
cnAtPnJjX2ZsYWcgJiBSQ19MT0NLRUQpICE9IDApIHsKIAkJCQlycC0+cmNfZmxhZyB8PSBSQ19X
QU5URUQ7Ci0JCQkJKHZvaWQpbXR4X3NsZWVwKHJwLCBORlNDQUNIRU1VVEVYUFRSLAotCQkJCSAg
ICAoUFpFUk8gLSAxKSB8IFBEUk9QLCAibmZzcmMiLCAxMCAqIGh6KTsKKwkJCQkodm9pZCltdHhf
c2xlZXAocnAsIG11dGV4LCAoUFpFUk8gLSAxKSB8IFBEUk9QLAorCQkJCSAgICAibmZzcmMiLCAx
MCAqIGh6KTsKIAkJCQlnb3RvIGxvb3A7CiAJCQl9CiAJCQlpZiAocnAtPnJjX2ZsYWcgPT0gMCkK
QEAgLTM1OCwxNCArMzc0LDE0IEBAIGxvb3A6CiAJCQlUQUlMUV9JTlNFUlRfVEFJTCgmbmZzcnZ1
ZHBscnUsIHJwLCByY19scnUpOwogCQkJaWYgKHJwLT5yY19mbGFnICYgUkNfSU5QUk9HKSB7CiAJ
CQkJbmV3bmZzc3RhdHMuc3J2Y2FjaGVfaW5wcm9naGl0cysrOwotCQkJCU5GU1VOTE9DS0NBQ0hF
KCk7CisJCQkJbXR4X3VubG9jayhtdXRleCk7CiAJCQkJcmV0ID0gUkNfRFJPUElUOwogCQkJfSBl
bHNlIGlmIChycC0+cmNfZmxhZyAmIFJDX1JFUFNUQVRVUykgewogCQkJCS8qCiAJCQkJICogVjIg
b25seS4KIAkJCQkgKi8KIAkJCQluZXduZnNzdGF0cy5zcnZjYWNoZV9ub25pZGVtZG9uZWhpdHMr
KzsKLQkJCQlORlNVTkxPQ0tDQUNIRSgpOworCQkJCW10eF91bmxvY2sobXV0ZXgpOwogCQkJCW5m
c3J2ZF9yZXBoZWFkKG5kKTsKIAkJCQkqKG5kLT5uZF9lcnJwKSA9IHJwLT5yY19zdGF0dXM7CiAJ
CQkJcmV0ID0gUkNfUkVQTFk7CkBAIC0zNzMsNyArMzg5LDcgQEAgbG9vcDoKIAkJCQkJTkZTUlZD
QUNIRV9VRFBUSU1FT1VUOwogCQkJfSBlbHNlIGlmIChycC0+cmNfZmxhZyAmIFJDX1JFUE1CVUYp
IHsKIAkJCQluZXduZnNzdGF0cy5zcnZjYWNoZV9ub25pZGVtZG9uZWhpdHMrKzsKLQkJCQlORlNV
TkxPQ0tDQUNIRSgpOworCQkJCW10eF91bmxvY2sobXV0ZXgpOwogCQkJCW5kLT5uZF9tcmVxID0g
bV9jb3B5bShycC0+cmNfcmVwbHksIDAsCiAJCQkJCU1fQ09QWUFMTCwgTV9XQUlUKTsKIAkJCQly
ZXQgPSBSQ19SRVBMWTsKQEAgLTQwMyw3ICs0MTksNyBAQCBsb29wOgogCX0KIAlMSVNUX0lOU0VS
VF9IRUFEKGhwLCBuZXdycCwgcmNfaGFzaCk7CiAJVEFJTFFfSU5TRVJUX1RBSUwoJm5mc3J2dWRw
bHJ1LCBuZXdycCwgcmNfbHJ1KTsKLQlORlNVTkxPQ0tDQUNIRSgpOworCW10eF91bmxvY2sobXV0
ZXgpOwogCW5kLT5uZF9ycCA9IG5ld3JwOwogCXJldCA9IFJDX0RPSVQ7CiAKQEAgLTQyMSwxMiAr
NDM3LDE0IEBAIG5mc3J2ZF91cGRhdGVjYWNoZShzdHJ1Y3QgbmZzcnZfZGVzY3JpcHQKIAlzdHJ1
Y3QgbmZzcnZjYWNoZSAqcnA7CiAJc3RydWN0IG5mc3J2Y2FjaGUgKnJldHJwID0gTlVMTDsKIAlt
YnVmX3QgbTsKKwlzdHJ1Y3QgbXR4ICptdXRleDsKIAogCXJwID0gbmQtPm5kX3JwOwogCWlmICgh
cnApCiAJCXBhbmljKCJuZnNydmRfdXBkYXRlY2FjaGUgbnVsbCBycCIpOwogCW5kLT5uZF9ycCA9
IE5VTEw7Ci0JTkZTTE9DS0NBQ0hFKCk7CisJbXV0ZXggPSBuZnNyY19jYWNoZW11dGV4KHJwKTsK
KwltdHhfbG9jayhtdXRleCk7CiAJbmZzcmNfbG9jayhycCk7CiAJaWYgKCEocnAtPnJjX2ZsYWcg
JiBSQ19JTlBST0cpKQogCQlwYW5pYygibmZzcnZkX3VwZGF0ZWNhY2hlIG5vdCBpbnByb2ciKTsK
QEAgLTQ0MSw3ICs0NTksNyBAQCBuZnNydmRfdXBkYXRlY2FjaGUoc3RydWN0IG5mc3J2X2Rlc2Ny
aXB0CiAJICovCiAJaWYgKG5kLT5uZF9yZXBzdGF0ID09IE5GU0VSUl9SRVBMWUZST01DQUNIRSkg
ewogCQluZXduZnNzdGF0cy5zcnZjYWNoZV9ub25pZGVtZG9uZWhpdHMrKzsKLQkJTkZTVU5MT0NL
Q0FDSEUoKTsKKwkJbXR4X3VubG9jayhtdXRleCk7CiAJCW5kLT5uZF9yZXBzdGF0ID0gMDsKIAkJ
aWYgKG5kLT5uZF9tcmVxKQogCQkJbWJ1Zl9mcmVlbShuZC0+bmRfbXJlcSk7CkBAIC00NzQsMjEg
KzQ5MiwyMSBAQCBuZnNydmRfdXBkYXRlY2FjaGUoc3RydWN0IG5mc3J2X2Rlc2NyaXB0CiAJCSAg
ICBuZnN2Ml9yZXBzdGF0W25ld25mc3YyX3Byb2NpZFtuZC0+bmRfcHJvY251bV1dKSB7CiAJCQly
cC0+cmNfc3RhdHVzID0gbmQtPm5kX3JlcHN0YXQ7CiAJCQlycC0+cmNfZmxhZyB8PSBSQ19SRVBT
VEFUVVM7Ci0JCQlORlNVTkxPQ0tDQUNIRSgpOworCQkJbXR4X3VubG9jayhtdXRleCk7CiAJCX0g
ZWxzZSB7CiAJCQlpZiAoIShycC0+cmNfZmxhZyAmIFJDX1VEUCkpIHsKLQkJCSAgICBuZnNyY190
Y3BzYXZlZHJlcGxpZXMrKzsKKwkJCSAgICBhdG9taWNfYWRkX2ludCgmbmZzcmNfdGNwc2F2ZWRy
ZXBsaWVzLCAxKTsKIAkJCSAgICBpZiAobmZzcmNfdGNwc2F2ZWRyZXBsaWVzID4KIAkJCQluZXdu
ZnNzdGF0cy5zcnZjYWNoZV90Y3BwZWFrKQogCQkJCW5ld25mc3N0YXRzLnNydmNhY2hlX3RjcHBl
YWsgPQogCQkJCSAgICBuZnNyY190Y3BzYXZlZHJlcGxpZXM7CiAJCQl9Ci0JCQlORlNVTkxPQ0tD
QUNIRSgpOworCQkJbXR4X3VubG9jayhtdXRleCk7CiAJCQltID0gbV9jb3B5bShuZC0+bmRfbXJl
cSwgMCwgTV9DT1BZQUxMLCBNX1dBSVQpOwotCQkJTkZTTE9DS0NBQ0hFKCk7CisJCQltdHhfbG9j
ayhtdXRleCk7CiAJCQlycC0+cmNfcmVwbHkgPSBtOwogCQkJcnAtPnJjX2ZsYWcgfD0gUkNfUkVQ
TUJVRjsKLQkJCU5GU1VOTE9DS0NBQ0hFKCk7CisJCQltdHhfdW5sb2NrKG11dGV4KTsKIAkJfQog
CQlpZiAocnAtPnJjX2ZsYWcgJiBSQ19VRFApIHsKIAkJCXJwLT5yY190aW1lc3RhbXAgPSBORlNE
X01PTk9TRUMgKwpAQCAtNTA0LDcgKzUyMiw3IEBAIG5mc3J2ZF91cGRhdGVjYWNoZShzdHJ1Y3Qg
bmZzcnZfZGVzY3JpcHQKIAkJfQogCX0gZWxzZSB7CiAJCW5mc3JjX2ZyZWVjYWNoZShycCk7Ci0J
CU5GU1VOTE9DS0NBQ0hFKCk7CisJCW10eF91bmxvY2sobXV0ZXgpOwogCX0KIAogb3V0OgpAQCAt
NTIwLDE0ICs1MzgsMTYgQEAgb3V0OgogQVBQTEVTVEFUSUMgdm9pZAogbmZzcnZkX2RlbGNhY2hl
KHN0cnVjdCBuZnNydmNhY2hlICpycCkKIHsKKwlzdHJ1Y3QgbXR4ICptdXRleDsKIAorCW11dGV4
ID0gbmZzcmNfY2FjaGVtdXRleChycCk7CiAJaWYgKCEocnAtPnJjX2ZsYWcgJiBSQ19JTlBST0cp
KQogCQlwYW5pYygibmZzcnZkX2RlbGNhY2hlIG5vdCBpbiBwcm9nIik7Ci0JTkZTTE9DS0NBQ0hF
KCk7CisJbXR4X2xvY2sobXV0ZXgpOwogCXJwLT5yY19mbGFnICY9IH5SQ19JTlBST0c7CiAJaWYg
KHJwLT5yY19yZWZjbnQgPT0gMCAmJiAhKHJwLT5yY19mbGFnICYgUkNfTE9DS0VEKSkKIAkJbmZz
cmNfZnJlZWNhY2hlKHJwKTsKLQlORlNVTkxPQ0tDQUNIRSgpOworCW10eF91bmxvY2sobXV0ZXgp
OwogfQogCiAvKgpAQCAtNTM5LDcgKzU1OSw5IEBAIEFQUExFU1RBVElDIHZvaWQKIG5mc3J2ZF9z
ZW50Y2FjaGUoc3RydWN0IG5mc3J2Y2FjaGUgKnJwLCBzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGVy
cikKIHsKIAl0Y3Bfc2VxIHRtcF9zZXE7CisJc3RydWN0IG10eCAqbXV0ZXg7CiAKKwltdXRleCA9
IG5mc3JjX2NhY2hlbXV0ZXgocnApOwogCWlmICghKHJwLT5yY19mbGFnICYgUkNfTE9DS0VEKSkK
IAkJcGFuaWMoIm5mc3J2ZF9zZW50Y2FjaGUgbm90IGxvY2tlZCIpOwogCWlmICghZXJyKSB7CkBA
IC01NDgsMTAgKzU3MCwxMCBAQCBuZnNydmRfc2VudGNhY2hlKHN0cnVjdCBuZnNydmNhY2hlICpy
cCwgCiAJCSAgICAgc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCAhPSBJUFBST1RPX1RDUCkKIAkJ
CXBhbmljKCJuZnMgc2VudCBjYWNoZSIpOwogCQlpZiAobmZzcnZfZ2V0c29ja3NlcW51bShzbywg
JnRtcF9zZXEpKSB7Ci0JCQlORlNMT0NLQ0FDSEUoKTsKKwkJCW10eF9sb2NrKG11dGV4KTsKIAkJ
CXJwLT5yY190Y3BzZXEgPSB0bXBfc2VxOwogCQkJcnAtPnJjX2ZsYWcgfD0gUkNfVENQU0VROwot
CQkJTkZTVU5MT0NLQ0FDSEUoKTsKKwkJCW10eF91bmxvY2sobXV0ZXgpOwogCQl9CiAJfQogCW5m
c3JjX3VubG9jayhycCk7CkBAIC01NzAsMTEgKzU5MiwxMyBAQCBuZnNyY19nZXR0Y3Aoc3RydWN0
IG5mc3J2X2Rlc2NyaXB0ICpuZCwgCiAJc3RydWN0IG5mc3J2Y2FjaGUgKmhpdHJwOwogCXN0cnVj
dCBuZnNydmhhc2hoZWFkICpocCwgbmZzcmNfdGVtcGxpc3Q7CiAJaW50IGhpdCwgcmV0ID0gMDsK
KwlzdHJ1Y3QgbXR4ICptdXRleDsKIAorCW11dGV4ID0gbmZzcmNfY2FjaGVtdXRleChuZXdycCk7
CiAJaHAgPSBORlNSQ0hBU0gobmV3cnAtPnJjX3hpZCk7CiAJbmV3cnAtPnJjX3JlcWxlbiA9IG5m
c3JjX2dldGxlbmFuZGNrc3VtKG5kLT5uZF9tcmVwLCAmbmV3cnAtPnJjX2Nrc3VtKTsKIHRyeWFn
YWluOgotCU5GU0xPQ0tDQUNIRSgpOworCW10eF9sb2NrKG11dGV4KTsKIAloaXQgPSAxOwogCUxJ
U1RfSU5JVCgmbmZzcmNfdGVtcGxpc3QpOwogCS8qCkBAIC02MzIsOCArNjU2LDggQEAgdHJ5YWdh
aW46CiAJCXJwID0gaGl0cnA7CiAJCWlmICgocnAtPnJjX2ZsYWcgJiBSQ19MT0NLRUQpICE9IDAp
IHsKIAkJCXJwLT5yY19mbGFnIHw9IFJDX1dBTlRFRDsKLQkJCSh2b2lkKW10eF9zbGVlcChycCwg
TkZTQ0FDSEVNVVRFWFBUUiwKLQkJCSAgICAoUFpFUk8gLSAxKSB8IFBEUk9QLCAibmZzcmMiLCAx
MCAqIGh6KTsKKwkJCSh2b2lkKW10eF9zbGVlcChycCwgbXV0ZXgsIChQWkVSTyAtIDEpIHwgUERS
T1AsCisJCQkgICAgIm5mc3JjIiwgMTAgKiBoeik7CiAJCQlnb3RvIHRyeWFnYWluOwogCQl9CiAJ
CWlmIChycC0+cmNfZmxhZyA9PSAwKQpAQCAtNjQxLDcgKzY2NSw3IEBAIHRyeWFnYWluOgogCQly
cC0+cmNfZmxhZyB8PSBSQ19MT0NLRUQ7CiAJCWlmIChycC0+cmNfZmxhZyAmIFJDX0lOUFJPRykg
ewogCQkJbmV3bmZzc3RhdHMuc3J2Y2FjaGVfaW5wcm9naGl0cysrOwotCQkJTkZTVU5MT0NLQ0FD
SEUoKTsKKwkJCW10eF91bmxvY2sobXV0ZXgpOwogCQkJaWYgKG5ld3JwLT5yY19zb2NrcmVmID09
IHJwLT5yY19zb2NrcmVmKQogCQkJCW5mc3JjX21hcmtzYW1ldGNwY29ubihycC0+cmNfc29ja3Jl
Zik7CiAJCQlyZXQgPSBSQ19EUk9QSVQ7CkBAIC02NTAsNyArNjc0LDcgQEAgdHJ5YWdhaW46CiAJ
CQkgKiBWMiBvbmx5LgogCQkJICovCiAJCQluZXduZnNzdGF0cy5zcnZjYWNoZV9ub25pZGVtZG9u
ZWhpdHMrKzsKLQkJCU5GU1VOTE9DS0NBQ0hFKCk7CisJCQltdHhfdW5sb2NrKG11dGV4KTsKIAkJ
CWlmIChuZXdycC0+cmNfc29ja3JlZiA9PSBycC0+cmNfc29ja3JlZikKIAkJCQluZnNyY19tYXJr
c2FtZXRjcGNvbm4ocnAtPnJjX3NvY2tyZWYpOwogCQkJcmV0ID0gUkNfUkVQTFk7CkBAIC02NjAs
NyArNjg0LDcgQEAgdHJ5YWdhaW46CiAJCQkJTkZTUlZDQUNIRV9UQ1BUSU1FT1VUOwogCQl9IGVs
c2UgaWYgKHJwLT5yY19mbGFnICYgUkNfUkVQTUJVRikgewogCQkJbmV3bmZzc3RhdHMuc3J2Y2Fj
aGVfbm9uaWRlbWRvbmVoaXRzKys7Ci0JCQlORlNVTkxPQ0tDQUNIRSgpOworCQkJbXR4X3VubG9j
ayhtdXRleCk7CiAJCQlpZiAobmV3cnAtPnJjX3NvY2tyZWYgPT0gcnAtPnJjX3NvY2tyZWYpCiAJ
CQkJbmZzcmNfbWFya3NhbWV0Y3Bjb25uKHJwLT5yY19zb2NrcmVmKTsKIAkJCXJldCA9IFJDX1JF
UExZOwpAQCAtNjg1LDcgKzcwOSw3IEBAIHRyeWFnYWluOgogCW5ld3JwLT5yY19jYWNoZXRpbWUg
PSBORlNEX01PTk9TRUM7CiAJbmV3cnAtPnJjX2ZsYWcgfD0gUkNfSU5QUk9HOwogCUxJU1RfSU5T
RVJUX0hFQUQoaHAsIG5ld3JwLCByY19oYXNoKTsKLQlORlNVTkxPQ0tDQUNIRSgpOworCW10eF91
bmxvY2sobXV0ZXgpOwogCW5kLT5uZF9ycCA9IG5ld3JwOwogCXJldCA9IFJDX0RPSVQ7CiAKQEAg
LTY5NiwxNiArNzIwLDE3IEBAIG91dDoKIAogLyoKICAqIExvY2sgYSBjYWNoZSBlbnRyeS4KLSAq
IEFsc28gcHV0cyBhIG11dGV4IGxvY2sgb24gdGhlIGNhY2hlIGxpc3QuCiAgKi8KIHN0YXRpYyB2
b2lkCiBuZnNyY19sb2NrKHN0cnVjdCBuZnNydmNhY2hlICpycCkKIHsKLQlORlNDQUNIRUxPQ0tS
RVFVSVJFRCgpOworCXN0cnVjdCBtdHggKm11dGV4OworCisJbXV0ZXggPSBuZnNyY19jYWNoZW11
dGV4KHJwKTsKKwltdHhfYXNzZXJ0KG11dGV4LCBNQV9PV05FRCk7CiAJd2hpbGUgKChycC0+cmNf
ZmxhZyAmIFJDX0xPQ0tFRCkgIT0gMCkgewogCQlycC0+cmNfZmxhZyB8PSBSQ19XQU5URUQ7Ci0J
CSh2b2lkKW10eF9zbGVlcChycCwgTkZTQ0FDSEVNVVRFWFBUUiwgUFpFUk8gLSAxLAotCQkgICAg
Im5mc3JjIiwgMCk7CisJCSh2b2lkKW10eF9zbGVlcChycCwgbXV0ZXgsIFBaRVJPIC0gMSwgIm5m
c3JjIiwgMCk7CiAJfQogCXJwLT5yY19mbGFnIHw9IFJDX0xPQ0tFRDsKIH0KQEAgLTcxNiwxMSAr
NzQxLDEzIEBAIG5mc3JjX2xvY2soc3RydWN0IG5mc3J2Y2FjaGUgKnJwKQogc3RhdGljIHZvaWQK
IG5mc3JjX3VubG9jayhzdHJ1Y3QgbmZzcnZjYWNoZSAqcnApCiB7CisJc3RydWN0IG10eCAqbXV0
ZXg7CiAKLQlORlNMT0NLQ0FDSEUoKTsKKwltdXRleCA9IG5mc3JjX2NhY2hlbXV0ZXgocnApOwor
CW10eF9sb2NrKG11dGV4KTsKIAlycC0+cmNfZmxhZyAmPSB+UkNfTE9DS0VEOwogCW5mc3JjX3dh
bnRlZChycCk7Ci0JTkZTVU5MT0NLQ0FDSEUoKTsKKwltdHhfdW5sb2NrKG11dGV4KTsKIH0KIAog
LyoKQEAgLTc0Myw3ICs3NzAsNiBAQCBzdGF0aWMgdm9pZAogbmZzcmNfZnJlZWNhY2hlKHN0cnVj
dCBuZnNydmNhY2hlICpycCkKIHsKIAotCU5GU0NBQ0hFTE9DS1JFUVVJUkVEKCk7CiAJTElTVF9S
RU1PVkUocnAsIHJjX2hhc2gpOwogCWlmIChycC0+cmNfZmxhZyAmIFJDX1VEUCkgewogCQlUQUlM
UV9SRU1PVkUoJm5mc3J2dWRwbHJ1LCBycCwgcmNfbHJ1KTsKQEAgLTc1Myw3ICs3NzksNyBAQCBu
ZnNyY19mcmVlY2FjaGUoc3RydWN0IG5mc3J2Y2FjaGUgKnJwKQogCWlmIChycC0+cmNfZmxhZyAm
IFJDX1JFUE1CVUYpIHsKIAkJbWJ1Zl9mcmVlbShycC0+cmNfcmVwbHkpOwogCQlpZiAoIShycC0+
cmNfZmxhZyAmIFJDX1VEUCkpCi0JCQluZnNyY190Y3BzYXZlZHJlcGxpZXMtLTsKKwkJCWF0b21p
Y19hZGRfaW50KCZuZnNyY190Y3BzYXZlZHJlcGxpZXMsIC0xKTsKIAl9CiAJRlJFRSgoY2FkZHJf
dClycCwgTV9ORlNSVkNBQ0hFKTsKIAluZXduZnNzdGF0cy5zcnZjYWNoZV9zaXplLS07CkBAIC03
NjgsMjAgKzc5NCwyMiBAQCBuZnNydmRfY2xlYW5jYWNoZSh2b2lkKQogCXN0cnVjdCBuZnNydmNh
Y2hlICpycCwgKm5leHRycDsKIAlpbnQgaTsKIAotCU5GU0xPQ0tDQUNIRSgpOwogCWZvciAoaSA9
IDA7IGkgPCBORlNSVkNBQ0hFX0hBU0hTSVpFOyBpKyspIHsKKwkJbXR4X2xvY2soJm5mc3JjX3Rj
cG10eFtpXSk7CiAJCUxJU1RfRk9SRUFDSF9TQUZFKHJwLCAmbmZzcnZoYXNodGJsW2ldLCByY19o
YXNoLCBuZXh0cnApIHsKIAkJCW5mc3JjX2ZyZWVjYWNoZShycCk7CiAJCX0KKwkJbXR4X3VubG9j
aygmbmZzcmNfdGNwbXR4W2ldKTsKIAl9CisJbXR4X2xvY2soJm5mc3JjX3VkcG10eCk7CiAJZm9y
IChpID0gMDsgaSA8IE5GU1JWQ0FDSEVfSEFTSFNJWkU7IGkrKykgewogCQlMSVNUX0ZPUkVBQ0hf
U0FGRShycCwgJm5mc3J2dWRwaGFzaHRibFtpXSwgcmNfaGFzaCwgbmV4dHJwKSB7CiAJCQluZnNy
Y19mcmVlY2FjaGUocnApOwogCQl9CiAJfQogCW5ld25mc3N0YXRzLnNydmNhY2hlX3NpemUgPSAw
OworCW10eF91bmxvY2soJm5mc3JjX3VkcG10eCk7CiAJbmZzcmNfdGNwc2F2ZWRyZXBsaWVzID0g
MDsKLQlORlNVTkxPQ0tDQUNIRSgpOwogfQogCiAvKgpAQCAtNzkyLDM0ICs4MjAsNDIgQEAgbmZz
cmNfdHJpbWNhY2hlKHVfaW50NjRfdCBzb2NrcmVmLCBzdHJ1YwogewogCXN0cnVjdCBuZnNydmNh
Y2hlICpycCwgKm5leHRycDsKIAlpbnQgaTsKLQlzdGF0aWMgdGltZV90IGxhc3R0cmltID0gMDsK
KwlzdGF0aWMgdGltZV90IHVkcF9sYXN0dHJpbSA9IDAsIHRjcF9sYXN0dHJpbSA9IDA7CiAKLQlp
ZiAoTkZTRF9NT05PU0VDID09IGxhc3R0cmltICYmCi0JICAgIG5mc3JjX3RjcHNhdmVkcmVwbGll
cyA8IG5mc3JjX3RjcGhpZ2h3YXRlciAmJgotCSAgICBuZnNyY191ZHBjYWNoZXNpemUgPCAobmZz
cmNfdWRwaGlnaHdhdGVyICsKLQkgICAgbmZzcmNfdWRwaGlnaHdhdGVyIC8gMikpCi0JCXJldHVy
bjsKLQlORlNMT0NLQ0FDSEUoKTsKLQlsYXN0dHJpbSA9IE5GU0RfTU9OT1NFQzsKLQlUQUlMUV9G
T1JFQUNIX1NBRkUocnAsICZuZnNydnVkcGxydSwgcmNfbHJ1LCBuZXh0cnApIHsKLQkJaWYgKCEo
cnAtPnJjX2ZsYWcgJiAoUkNfSU5QUk9HfFJDX0xPQ0tFRHxSQ19XQU5URUQpKQotCQkgICAgICYm
IHJwLT5yY19yZWZjbnQgPT0gMAotCQkgICAgICYmICgocnAtPnJjX2ZsYWcgJiBSQ19SRUZDTlQp
IHx8Ci0JCQkgTkZTRF9NT05PU0VDID4gcnAtPnJjX3RpbWVzdGFtcCB8fAotCQkJIG5mc3JjX3Vk
cGNhY2hlc2l6ZSA+IG5mc3JjX3VkcGhpZ2h3YXRlcikpCi0JCQluZnNyY19mcmVlY2FjaGUocnAp
OwotCX0KLQlmb3IgKGkgPSAwOyBpIDwgTkZTUlZDQUNIRV9IQVNIU0laRTsgaSsrKSB7Ci0JCUxJ
U1RfRk9SRUFDSF9TQUZFKHJwLCAmbmZzcnZoYXNodGJsW2ldLCByY19oYXNoLCBuZXh0cnApIHsK
KwlpZiAoTkZTRF9NT05PU0VDICE9IHVkcF9sYXN0dHJpbSB8fAorCSAgICBuZnNyY191ZHBjYWNo
ZXNpemUgPj0gKG5mc3JjX3VkcGhpZ2h3YXRlciArCisJICAgIG5mc3JjX3VkcGhpZ2h3YXRlciAv
IDIpKSB7CisJCW10eF9sb2NrKCZuZnNyY191ZHBtdHgpOworCQl1ZHBfbGFzdHRyaW0gPSBORlNE
X01PTk9TRUM7CisJCVRBSUxRX0ZPUkVBQ0hfU0FGRShycCwgJm5mc3J2dWRwbHJ1LCByY19scnUs
IG5leHRycCkgewogCQkJaWYgKCEocnAtPnJjX2ZsYWcgJiAoUkNfSU5QUk9HfFJDX0xPQ0tFRHxS
Q19XQU5URUQpKQogCQkJICAgICAmJiBycC0+cmNfcmVmY250ID09IDAKIAkJCSAgICAgJiYgKChy
cC0+cmNfZmxhZyAmIFJDX1JFRkNOVCkgfHwKIAkJCQkgTkZTRF9NT05PU0VDID4gcnAtPnJjX3Rp
bWVzdGFtcCB8fAotCQkJCSBuZnNyY19hY3RpdmVzb2NrZXQocnAsIHNvY2tyZWYsIHNvKSkpCisJ
CQkJIG5mc3JjX3VkcGNhY2hlc2l6ZSA+IG5mc3JjX3VkcGhpZ2h3YXRlcikpCiAJCQkJbmZzcmNf
ZnJlZWNhY2hlKHJwKTsKIAkJfQorCQltdHhfdW5sb2NrKCZuZnNyY191ZHBtdHgpOworCX0KKwlp
ZiAoTkZTRF9NT05PU0VDICE9IHRjcF9sYXN0dHJpbSB8fAorCSAgICBuZnNyY190Y3BzYXZlZHJl
cGxpZXMgPj0gbmZzcmNfdGNwaGlnaHdhdGVyKSB7CisJCWZvciAoaSA9IDA7IGkgPCBORlNSVkNB
Q0hFX0hBU0hTSVpFOyBpKyspIHsKKwkJCW10eF9sb2NrKCZuZnNyY190Y3BtdHhbaV0pOworCQkJ
aWYgKGkgPT0gMCkKKwkJCQl0Y3BfbGFzdHRyaW0gPSBORlNEX01PTk9TRUM7CisJCQlMSVNUX0ZP
UkVBQ0hfU0FGRShycCwgJm5mc3J2aGFzaHRibFtpXSwgcmNfaGFzaCwKKwkJCSAgICBuZXh0cnAp
IHsKKwkJCQlpZiAoIShycC0+cmNfZmxhZyAmCisJCQkJICAgICAoUkNfSU5QUk9HfFJDX0xPQ0tF
RHxSQ19XQU5URUQpKQorCQkJCSAgICAgJiYgcnAtPnJjX3JlZmNudCA9PSAwCisJCQkJICAgICAm
JiAoKHJwLT5yY19mbGFnICYgUkNfUkVGQ05UKSB8fAorCQkJCQkgTkZTRF9NT05PU0VDID4gcnAt
PnJjX3RpbWVzdGFtcCB8fAorCQkJCQkgbmZzcmNfYWN0aXZlc29ja2V0KHJwLCBzb2NrcmVmLCBz
bykpKQorCQkJCQluZnNyY19mcmVlY2FjaGUocnApOworCQkJfQorCQkJbXR4X3VubG9jaygmbmZz
cmNfdGNwbXR4W2ldKTsKKwkJfQogCX0KLQlORlNVTkxPQ0tDQUNIRSgpOwogfQogCiAvKgpAQCAt
ODI4LDEyICs4NjQsMTQgQEAgbmZzcmNfdHJpbWNhY2hlKHVfaW50NjRfdCBzb2NrcmVmLCBzdHJ1
YwogQVBQTEVTVEFUSUMgdm9pZAogbmZzcnZkX3JlZmNhY2hlKHN0cnVjdCBuZnNydmNhY2hlICpy
cCkKIHsKKwlzdHJ1Y3QgbXR4ICptdXRleDsKIAotCU5GU0xPQ0tDQUNIRSgpOworCW11dGV4ID0g
bmZzcmNfY2FjaGVtdXRleChycCk7CisJbXR4X2xvY2sobXV0ZXgpOwogCWlmIChycC0+cmNfcmVm
Y250IDwgMCkKIAkJcGFuaWMoIm5mcyBjYWNoZSByZWZjbnQiKTsKIAlycC0+cmNfcmVmY250Kys7
Ci0JTkZTVU5MT0NLQ0FDSEUoKTsKKwltdHhfdW5sb2NrKG11dGV4KTsKIH0KIAogLyoKQEAgLTg0
MiwxNCArODgwLDE2IEBAIG5mc3J2ZF9yZWZjYWNoZShzdHJ1Y3QgbmZzcnZjYWNoZSAqcnApCiBB
UFBMRVNUQVRJQyB2b2lkCiBuZnNydmRfZGVyZWZjYWNoZShzdHJ1Y3QgbmZzcnZjYWNoZSAqcnAp
CiB7CisJc3RydWN0IG10eCAqbXV0ZXg7CiAKLQlORlNMT0NLQ0FDSEUoKTsKKwltdXRleCA9IG5m
c3JjX2NhY2hlbXV0ZXgocnApOworCW10eF9sb2NrKG11dGV4KTsKIAlpZiAocnAtPnJjX3JlZmNu
dCA8PSAwKQogCQlwYW5pYygibmZzIGNhY2hlIGRlcmVmY250Iik7CiAJcnAtPnJjX3JlZmNudC0t
OwogCWlmIChycC0+cmNfcmVmY250ID09IDAgJiYgIShycC0+cmNfZmxhZyAmIChSQ19MT0NLRUQg
fCBSQ19JTlBST0cpKSkKIAkJbmZzcmNfZnJlZWNhY2hlKHJwKTsKLQlORlNVTkxPQ0tDQUNIRSgp
OworCW10eF91bmxvY2sobXV0ZXgpOwogfQogCiAvKgotLS0gZnMvbmZzc2VydmVyL25mc19uZnNk
cG9ydC5jLnNhdgkyMDEyLTEwLTExIDE3OjM4OjI2LjAwMDAwMDAwMCAtMDQwMAorKysgZnMvbmZz
c2VydmVyL25mc19uZnNkcG9ydC5jCTIwMTItMTAtMTEgMTc6NDM6MTYuMDAwMDAwMDAwIC0wNDAw
CkBAIC02MCw3ICs2MCw4IEBAIGV4dGVybiBTVkNQT09MCSpuZnNydmRfcG9vbDsKIGV4dGVybiBz
dHJ1Y3QgbmZzdjRsb2NrIG5mc2Rfc3VzcGVuZF9sb2NrOwogc3RydWN0IHZmc29wdGxpc3QgbmZz
djRyb290X29wdCwgbmZzdjRyb290X25ld29wdDsKIE5GU0RMT0NLTVVURVg7Ci1zdHJ1Y3QgbXR4
IG5mc19jYWNoZV9tdXRleDsKK3N0cnVjdCBtdHggbmZzcmNfdGNwbXR4W05GU1JWQ0FDSEVfSEFT
SFNJWkVdOworc3RydWN0IG10eCBuZnNyY191ZHBtdHg7CiBzdHJ1Y3QgbXR4IG5mc192NHJvb3Rf
bXV0ZXg7CiBzdHJ1Y3QgbmZzcnZmaCBuZnNfcm9vdGZoLCBuZnNfcHViZmg7CiBpbnQgbmZzX3B1
YmZoc2V0ID0gMCwgbmZzX3Jvb3RmaHNldCA9IDA7CkBAIC0zMjg4LDcgKzMyODksNyBAQCBleHRl
cm4gaW50ICgqbmZzZF9jYWxsX25mc2QpKHN0cnVjdCB0aHJlCiBzdGF0aWMgaW50CiBuZnNkX21v
ZGV2ZW50KG1vZHVsZV90IG1vZCwgaW50IHR5cGUsIHZvaWQgKmRhdGEpCiB7Ci0JaW50IGVycm9y
ID0gMDsKKwlpbnQgZXJyb3IgPSAwLCBpOwogCXN0YXRpYyBpbnQgbG9hZGVkID0gMDsKIAogCXN3
aXRjaCAodHlwZSkgewpAQCAtMzI5Niw3ICszMjk3LDEwIEBAIG5mc2RfbW9kZXZlbnQobW9kdWxl
X3QgbW9kLCBpbnQgdHlwZSwgdm8KIAkJaWYgKGxvYWRlZCkKIAkJCWdvdG8gb3V0OwogCQluZXdu
ZnNfcG9ydGluaXQoKTsKLQkJbXR4X2luaXQoJm5mc19jYWNoZV9tdXRleCwgIm5mc19jYWNoZV9t
dXRleCIsIE5VTEwsIE1UWF9ERUYpOworCQlmb3IgKGkgPSAwOyBpIDwgTkZTUlZDQUNIRV9IQVNI
U0laRTsgaSsrKQorCQkJbXR4X2luaXQoJm5mc3JjX3RjcG10eFtpXSwgIm5mc190Y3BjYWNoZV9t
dXRleCIsIE5VTEwsCisJCQkgICAgTVRYX0RFRik7CisJCW10eF9pbml0KCZuZnNyY191ZHBtdHgs
ICJuZnNfdWRwY2FjaGVfbXV0ZXgiLCBOVUxMLCBNVFhfREVGKTsKIAkJbXR4X2luaXQoJm5mc192
NHJvb3RfbXV0ZXgsICJuZnNfdjRyb290X211dGV4IiwgTlVMTCwgTVRYX0RFRik7CiAJCW10eF9p
bml0KCZuZnN2NHJvb3RfbW50Lm1udF9tdHgsICJzdHJ1Y3QgbW91bnQgbXR4IiwgTlVMTCwKIAkJ
ICAgIE1UWF9ERUYpOwpAQCAtMzM0MCw3ICszMzQ0LDkgQEAgbmZzZF9tb2RldmVudChtb2R1bGVf
dCBtb2QsIGludCB0eXBlLCB2bwogCQkJc3ZjcG9vbF9kZXN0cm95KG5mc3J2ZF9wb29sKTsKIAog
CQkvKiBhbmQgZ2V0IHJpZCBvZiB0aGUgbG9ja3MgKi8KLQkJbXR4X2Rlc3Ryb3koJm5mc19jYWNo
ZV9tdXRleCk7CisJCWZvciAoaSA9IDA7IGkgPCBORlNSVkNBQ0hFX0hBU0hTSVpFOyBpKyspCisJ
CQltdHhfZGVzdHJveSgmbmZzcmNfdGNwbXR4W2ldKTsKKwkJbXR4X2Rlc3Ryb3koJm5mc3JjX3Vk
cG10eCk7CiAJCW10eF9kZXN0cm95KCZuZnNfdjRyb290X211dGV4KTsKIAkJbXR4X2Rlc3Ryb3ko
Jm5mc3Y0cm9vdF9tbnQubW50X210eCk7CiAJCWxvY2tkZXN0cm95KCZuZnN2NHJvb3RfbW50Lm1u
dF9leHBsb2NrKTsKLS0tIGZzL25mcy9uZnNwb3J0Lmguc2F2CTIwMTItMTAtMTAgMjA6NTY6MjYu
MDAwMDAwMDAwIC0wNDAwCisrKyBmcy9uZnMvbmZzcG9ydC5oCTIwMTItMTAtMTAgMjA6NTY6NDIu
MDAwMDAwMDAwIC0wNDAwCkBAIC01NDYsMTEgKzU0Niw2IEBAIHZvaWQgbmZzcnZkX3JjdihzdHJ1
Y3Qgc29ja2V0ICosIHZvaWQgKiwKICNkZWZpbmUJTkZTUkVRU1BJTkxPQ0sJCWV4dGVybiBzdHJ1
Y3QgbXR4IG5mc19yZXFfbXV0ZXgKICNkZWZpbmUJTkZTTE9DS1JFUSgpCQltdHhfbG9jaygmbmZz
X3JlcV9tdXRleCkKICNkZWZpbmUJTkZTVU5MT0NLUkVRKCkJCW10eF91bmxvY2soJm5mc19yZXFf
bXV0ZXgpCi0jZGVmaW5lCU5GU0NBQ0hFTVVURVgJCWV4dGVybiBzdHJ1Y3QgbXR4IG5mc19jYWNo
ZV9tdXRleAotI2RlZmluZQlORlNDQUNIRU1VVEVYUFRSCSgmbmZzX2NhY2hlX211dGV4KQotI2Rl
ZmluZQlORlNMT0NLQ0FDSEUoKQkJbXR4X2xvY2soJm5mc19jYWNoZV9tdXRleCkKLSNkZWZpbmUJ
TkZTVU5MT0NLQ0FDSEUoKQltdHhfdW5sb2NrKCZuZnNfY2FjaGVfbXV0ZXgpCi0jZGVmaW5lCU5G
U0NBQ0hFTE9DS1JFUVVJUkVEKCkJbXR4X2Fzc2VydCgmbmZzX2NhY2hlX211dGV4LCBNQV9PV05F
RCkKICNkZWZpbmUJTkZTU09DS01VVEVYCQlleHRlcm4gc3RydWN0IG10eCBuZnNfc2xvY2tfbXV0
ZXgKICNkZWZpbmUJTkZTU09DS01VVEVYUFRSCQkoJm5mc19zbG9ja19tdXRleCkKICNkZWZpbmUJ
TkZTTE9DS1NPQ0soKQkJbXR4X2xvY2soJm5mc19zbG9ja19tdXRleCkKLS0tIGZzL25mcy9uZnNy
dmNhY2hlLmguc2F2CTIwMTItMTAtMTIgMjA6MDM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBmcy9u
ZnMvbmZzcnZjYWNoZS5oCTIwMTItMTAtMTIgMjA6MDM6NTUuMDAwMDAwMDAwIC0wNDAwCkBAIC00
MSw3ICs0MSw3IEBACiAjZGVmaW5lCU5GU1JWQ0FDSEVfTUFYX1NJWkUJMjA0OAogI2RlZmluZQlO
RlNSVkNBQ0hFX01JTl9TSVpFCSAgNjQKIAotI2RlZmluZQlORlNSVkNBQ0hFX0hBU0hTSVpFCTIw
CisjZGVmaW5lCU5GU1JWQ0FDSEVfSEFTSFNJWkUJMjAwCiAKIHN0cnVjdCBuZnNydmNhY2hlIHsK
IAlMSVNUX0VOVFJZKG5mc3J2Y2FjaGUpIHJjX2hhc2g7CQkvKiBIYXNoIGNoYWluICovCg==
------=_Part_2185821_351431992.1350093954057--



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