From owner-freebsd-hackers@FreeBSD.ORG Sat Oct 13 02:06:01 2012 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D942BA8; Sat, 13 Oct 2012 02:06:01 +0000 (UTC) (envelope-from rmacklem@uoguelph.ca) Received: from esa-jnhn.mail.uoguelph.ca (esa-jnhn.mail.uoguelph.ca [131.104.91.44]) by mx1.freebsd.org (Postfix) with ESMTP id 3059A8FC17; Sat, 13 Oct 2012 02:06:00 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqAEAN6MclCDaFvO/2dsb2JhbAA9CBaFe7oZgiABAQEEAQEBIAQnIAsFFg4KERkCBCUBCSYGCAcEARwEh2QLpkyRd4tlBIRkgRIDjm6EUIItgRWPGYMJgUc0 X-IronPort-AV: E=Sophos;i="4.80,580,1344225600"; d="scan'208";a="183450178" Received: from erie.cs.uoguelph.ca (HELO zcs3.mail.uoguelph.ca) ([131.104.91.206]) by esa-jnhn-pri.mail.uoguelph.ca with ESMTP; 12 Oct 2012 22:05:54 -0400 Received: from zcs3.mail.uoguelph.ca (localhost.localdomain [127.0.0.1]) by zcs3.mail.uoguelph.ca (Postfix) with ESMTP id 168AEB4034; Fri, 12 Oct 2012 22:05:54 -0400 (EDT) Date: Fri, 12 Oct 2012 22:05:54 -0400 (EDT) From: Rick Macklem To: Nikolay Denev Message-ID: <937460294.2185822.1350093954059.JavaMail.root@erie.cs.uoguelph.ca> In-Reply-To: <608951636.2115684.1349992972756.JavaMail.root@erie.cs.uoguelph.ca> Subject: Re: NFS server bottlenecks MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2185821_351431992.1350093954057" X-Originating-IP: [172.17.91.201] X-Mailer: Zimbra 6.0.10_GA_2692 (ZimbraWebClient - IE7 (Win)/6.0.10_GA_2692) Cc: FreeBSD Hackers , Garrett Wollman X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Oct 2012 02:06:01 -0000 ------=_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--