From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Coffin Subject: [PATCH 0/3] navi10: Implement overdrive pp_od_clk_voltage Date: Thu, 7 Nov 2019 11:32:51 -0700 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Matt Coffin W1doeV0KQmVmb3JlIHRoaXMgcGF0Y2hzZXQsIG5hdmkxMCB1c2VycyBjb3VsZCBub3QgdXRpbGl6 ZSB0aGUgb3ZlcmRyaXZlCmZ1bmN0aW9uYWxpdHkuIFRoaXMgcHJldmVudGVkIHRoZW0gZnJvbSBv dmVyY2xvY2tpbmcsIG92ZXJ2b2x0aW5nLCBvcgp1bmRlcnZvbHRpbmcgdGhlaXIgY2FyZHMuCgpb SG93XQpTaW1pbGFyIHRvIHRoZSB2ZWdhMjAgaW1wbGVtZW50YXRpb24sIGFkZCB0aGUgcHBfb2Rf Y2xrX3ZvbHRhZ2UKaW50ZXJmYWNlIHRvIHRoZSBuYXZpMTAgcG93ZXJwbGF5IHRhYmxlLgoKW1Bv c3NpYmxlIEFsdGVybmF0aXZlc10KVGhpcyBjb3VsZCBhbHNvIGJlIGRvbmUgbW9yZSBnZW5lcmlj YWxseSBpbiBzbXVfdjExXzAgY29kZSwgYnV0IHdvdWxkCnJlcXVpcmUgbW9yZSBzaWduaWZpY2Fu dCBjaGFuZ2VzIHRvIHRoZSB2ZWdhMjAgY29kZSwgYW5kIGZlYXR1cmUtZ2F0aW5nCmJhc2VkIG9u IGNoaXAgY2FwYWJpbGl0aWVzIGluIHRoZSBzbXUgdG8gZGlzYWJsZSBvdmVyZHJpdmUgZm9yIGFy Y3RlcnVzLgpJIGNob3NlIHRoaXMgcGF0aCBzbyBhcyBub3QgdG8gY29tcGxldGVseSByZWZhY3Rv ciB0aGUgdmVnYTIwIHNpZGUgb2YKdGhpbmdzLCBhbmQgaW50cm9kdWNlIFNNVSBjb2RlIHdoaWNo IHdvdWxkIG5vdCBwbGF5IG5pY2VseSB3aXRoIG5ldwpBU0lDcy4KCk1hdHQgQ29mZmluICgzKToK ICBkcm0vYW1kZ3B1L25hdmkxMDogaW1wbGVtZW50IHNjbGsvbWNsayBPRCB2aWEgcHBfb2RfY2xr X3ZvbHRhZ2UKICBkcm0vYW1kZ3B1L25hdmkxMDogaW1wbGVtZW50IEdGWENMS19DVVJWRSBvdmVy ZHJpdmUKICBkcm0vYW1kZ3B1L25hdmkxMDogSW1wbGVtZW50IG9kIGNsayBwcmludGluZwoKIGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVfdjExXzAuaCB8ICAgMSArCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMgICAgfCAyODIgKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmggICAg fCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMgICAgIHwg IDI3ICsrCiA0IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNlcnRpb25zKCspCgotLSAKMi4yMy4wCgpG cm9tIDg1NzNlOTE5OWRhZjU5MmY2ZTZlNWE4MDdiNjliMzdiYjgwZjE1NmEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCk1lc3NhZ2UtSWQ6IDw4NTczZTkxOTlkYWY1OTJmNmU2ZTVhODA3YjY5YjM3 YmI4MGYxNTZhLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFpbC5jb20+CkluLVJlcGx5LVRv OiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4KUmVmZXJlbmNlczog PGNvdmVyLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFpbC5jb20+CkZyb206IE1hdHQgQ29m ZmluIDxtY29mZmluMTNAZ21haWwuY29tPgpEYXRlOiBTYXQsIDIgTm92IDIwMTkgMDI6MjQ6MDkg LTA2MDAKU3ViamVjdDogW1BBVENIIDEvM10gZHJtL2FtZGdwdS9uYXZpMTA6IGltcGxlbWVudCBz Y2xrL21jbGsgT0QgdmlhCiBwcF9vZF9jbGtfdm9sdGFnZQpUbzogYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKCltXaHldCkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgbm8gd2F5IHRv IHVzZSBwcF9vZF9jbGtfdm9sdGFnZSBvbiBuYXZpCgpbSG93XQpTaW1pbGFyIHRvIHRoZSB2ZWdh MjAgaW1wbGVtZW50YXRpb24sIGJ1dCB1c2luZyB0aGUgY29tbW9uIHNtY192MTFfMApoZWFkZXJz LCBpbXBsZW1lbnRlZCB0aGUgcHBfb2RfY2xrX3ZvbHRhZ2UgQVBJIGZvciBuYXZpMTAncyBwcHRh YmxlCmltcGxlbWVudGF0aW9uCi0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L3NtdV92MTFfMC5oIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkx MF9wcHQuYyAgICB8IDE4NSArKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L3NtdV92MTFfMC5jICAgICB8ICAyNyArKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEz IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9pbmMvc211X3YxMV8wLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvc211 X3YxMV8wLmgKaW5kZXggNWJkYTg1Mzk0NDdhLi4xMzNhNTNkYTY3ODUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVfdjExXzAuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvc211X3YxMV8wLmgKQEAgLTEzMCw2ICsxMzAsNyBA QCBlbnVtIHNtdV92MTFfMF9iYWNvX3NlcSB7CiAJQkFDT19TRVFfQ09VTlQsCiB9OwogCitpbnQg c211X3YxMV8wX3NldF9kZWZhdWx0X29kX3NldHRpbmdzKHN0cnVjdCBzbXVfY29udGV4dCAqc211 LCBib29sIGluaXRpYWxpemUsIHNpemVfdCBvdmVyZHJpdmVfdGFibGVfc2l6ZSk7CiB2b2lkIHNt dV92MTFfMF9zZXRfc211X2Z1bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMKaW5kZXggMGI0NjE0 MDRhZjZiLi42ZDBlNTExYWQwOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L25hdmkxMF9wcHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9u YXZpMTBfcHB0LmMKQEAgLTE1OTEsNiArMTU5MSwxODkgQEAgc3RhdGljIGludCBuYXZpMTBfZ2V0 X3Bvd2VyX2xpbWl0KHN0cnVjdCBzbXVfY29udGV4dCAqc211LAogCXJldHVybiAwOwogfQogCitz dGF0aWMgaW5saW5lIHZvaWQgbmF2aTEwX2R1bXBfb2RfdGFibGUoT3ZlckRyaXZlVGFibGVfdCAq b2RfdGFibGUpIHsKKwlwcl9kZWJ1ZygiT0Q6IEdmeGNsazogKCVkLCAlZClcbiIsIG9kX3RhYmxl LT5HZnhjbGtGbWluLCBvZF90YWJsZS0+R2Z4Y2xrRm1heCk7CisJcHJfZGVidWcoIk9EOiBHZngx OiAoJWQsICVkKVxuIiwgb2RfdGFibGUtPkdmeGNsa0ZyZXExLCBvZF90YWJsZS0+R2Z4Y2xrVm9s dDEpOworCXByX2RlYnVnKCJPRDogR2Z4MjogKCVkLCAlZClcbiIsIG9kX3RhYmxlLT5HZnhjbGtG cmVxMiwgb2RfdGFibGUtPkdmeGNsa1ZvbHQyKTsKKwlwcl9kZWJ1ZygiT0Q6IEdmeDM6ICglZCwg JWQpXG4iLCBvZF90YWJsZS0+R2Z4Y2xrRnJlcTMsIG9kX3RhYmxlLT5HZnhjbGtWb2x0Myk7CisJ cHJfZGVidWcoIk9EOiBVY2xrRm1heDogJWRcbiIsIG9kX3RhYmxlLT5VY2xrRm1heCk7CisJcHJf ZGVidWcoIk9EOiBPdmVyRHJpdmVQY3Q6ICVkXG4iLCBvZF90YWJsZS0+T3ZlckRyaXZlUGN0KTsK K30KKworc3RhdGljIGlubGluZSBib29sIG5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9P REZFQVRVUkVfSUQgZmVhdHVyZSkKK3sKKwlyZXR1cm4gb2RfdGFibGUtPmNhcFtmZWF0dXJlXTsK K30KKworc3RhdGljIGludCBuYXZpMTBfb2Rfc2V0dGluZ19jaGVja19yYW5nZShzdHJ1Y3Qgc211 XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9PRFNFVFRJTkdf SUQgc2V0dGluZywgdWludDMyX3QgdmFsdWUpCit7CisJaWYgKHZhbHVlIDwgb2RfdGFibGUtPm1p bltzZXR0aW5nXSkgeworCQlwcl93YXJuKCJPRCBzZXR0aW5nICglZCwgJWQpIGlzIGxlc3MgdGhh biB0aGUgbWluaW11bSBhbGxvd2VkICglZClcbiIsIHNldHRpbmcsIHZhbHVlLCBvZF90YWJsZS0+ bWluW3NldHRpbmddKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICh2YWx1ZSA+IG9kX3Rh YmxlLT5tYXhbc2V0dGluZ10pIHsKKwkJcHJfd2FybigiT0Qgc2V0dGluZyAoJWQsICVkKSBpcyBn cmVhdGVyIHRoYW4gdGhlIG1heGltdW0gYWxsb3dlZCAoJWQpXG4iLCBzZXR0aW5nLCB2YWx1ZSwg b2RfdGFibGUtPm1heFtzZXR0aW5nXSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBuYXZpMTBfc2V0dXBfb2RfbGltaXRzKHN0cnVjdCBzbXVfY29u dGV4dCAqc211KSB7CisJc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSAqb3ZlcmRyaXZl X3RhYmxlID0gTlVMTDsKKwlzdHJ1Y3Qgc211XzExXzBfcG93ZXJwbGF5X3RhYmxlICpwb3dlcnBs YXlfdGFibGUgPSBOVUxMOworCisJaWYgKCFzbXUtPnNtdV90YWJsZS5wb3dlcl9wbGF5X3RhYmxl KSB7CisJCXByX2VycigicG93ZXJwbGF5IHRhYmxlIHVuaW5pdGlhbGl6ZWQhXG4iKTsKKwkJcmV0 dXJuIC1FTk9FTlQ7CisJfQorCXBvd2VycGxheV90YWJsZSA9IChzdHJ1Y3Qgc211XzExXzBfcG93 ZXJwbGF5X3RhYmxlICopc211LT5zbXVfdGFibGUucG93ZXJfcGxheV90YWJsZTsKKwlvdmVyZHJp dmVfdGFibGUgPSAmcG93ZXJwbGF5X3RhYmxlLT5vdmVyZHJpdmVfdGFibGU7CisJaWYgKCFzbXUt Pm9kX3NldHRpbmdzKSB7CisJCXNtdS0+b2Rfc2V0dGluZ3MgPSBrbWVtZHVwKG92ZXJkcml2ZV90 YWJsZSwgc2l6ZW9mKHN0cnVjdCBzbXVfMTFfMF9vdmVyZHJpdmVfdGFibGUpLCBHRlBfS0VSTkVM KTsKKwl9IGVsc2UgeworCQltZW1jcHkoc211LT5vZF9zZXR0aW5ncywgb3ZlcmRyaXZlX3RhYmxl LCBzaXplb2Yoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSkpOworCX0KKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBuYXZpMTBfc2V0X2RlZmF1bHRfb2Rfc2V0dGluZ3Moc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUsIGJvb2wgaW5pdGlhbGl6ZSkgeworCU92ZXJEcml2ZVRhYmxlX3Qg Km9kX3RhYmxlOworCWludCByZXQgPSAwOworCisJcmV0ID0gc211X3YxMV8wX3NldF9kZWZhdWx0 X29kX3NldHRpbmdzKHNtdSwgaW5pdGlhbGl6ZSwgc2l6ZW9mKE92ZXJEcml2ZVRhYmxlX3QpKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKGluaXRpYWxpemUpIHsKKwkJcmV0ID0g bmF2aTEwX3NldHVwX29kX2xpbWl0cyhzbXUpOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIkZh aWxlZCB0byByZXRyaWV2ZSBib2FyZCBPRCBsaW1pdHNcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCisJfQorCisJb2RfdGFibGUgPSAoT3ZlckRyaXZlVGFibGVfdCAqKXNtdS0+c211X3RhYmxl Lm92ZXJkcml2ZV90YWJsZTsKKwlpZiAob2RfdGFibGUpIHsKKwkJbmF2aTEwX2R1bXBfb2RfdGFi bGUob2RfdGFibGUpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgbmF2aTEw X29kX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIFBQX09EX0RQ TV9UQUJMRV9DT01NQU5EIHR5cGUsIGxvbmcgaW5wdXRbXSwgdWludDMyX3Qgc2l6ZSkgeworCWlu dCBpOworCWludCByZXQgPSAwOworCXN0cnVjdCBzbXVfdGFibGVfY29udGV4dCAqdGFibGVfY29u dGV4dCA9ICZzbXUtPnNtdV90YWJsZTsKKwlPdmVyRHJpdmVUYWJsZV90ICpvZF90YWJsZTsKKwlz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF9zZXR0aW5nczsKKwlvZF90YWJsZSA9 IChPdmVyRHJpdmVUYWJsZV90ICopdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlOworCisJ aWYgKCFzbXUtPm9kX2VuYWJsZWQpIHsKKwkJcHJfd2FybigiT3ZlckRyaXZlIGlzIG5vdCBlbmFi bGVkIVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICghc211LT5vZF9zZXR0aW5n cykgeworCQlwcl9lcnIoIk9EIGJvYXJkIGxpbWl0cyBhcmUgbm90IHNldCFcbiIpOworCQlyZXR1 cm4gLUVOT0VOVDsKKwl9CisKKwlvZF9zZXR0aW5ncyA9IHNtdS0+b2Rfc2V0dGluZ3M7CisKKwlz d2l0Y2ggKHR5cGUpIHsKKwljYXNlIFBQX09EX0VESVRfU0NMS19WRERDX1RBQkxFOgorCQlpZiAo IW5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChvZF9zZXR0aW5ncywgU01VXzExXzBfT0RG RUFUVVJFX0dGWENMS19MSU1JVFMpKSB7CisJCQlwcl93YXJuKCJHRlhDTEtfTElNSVRTIG5vdCBz dXBwb3J0ZWQhXG4iKTsKKwkJCXJldHVybiAtRU5PVFNVUFA7CisJCX0KKwkJaWYgKCF0YWJsZV9j b250ZXh0LT5vdmVyZHJpdmVfdGFibGUpIHsKKwkJCXByX2VycigiT3ZlcmRyaXZlIGlzIG5vdCBp bml0aWFsaXplZFxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoaW5wdXRbMF0g PiBpbnB1dFsxXSkgeworCQkJcHJfaW5mbygiR2Z4Y2xrRm1pbiBtdXN0IGJlIGxlc3MgdGhhbiBH ZnhjbGtGbWF4XG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWZvciAoaSA9IDA7IGkg PCBzaXplOyBpICs9IDIpIHsKKwkJCWlmIChpICsgMiA+IHNpemUpIHsKKwkJCQlwcl9pbmZvKCJp bnZhbGlkIG51bWJlciBvZiBpbnB1dCBwYXJhbWV0ZXJzICVkXG4iLCBzaXplKTsKKwkJCQlyZXR1 cm4gLUVJTlZBTDsKKwkJCX0KKwkJCXN3aXRjaCAoaW5wdXRbaV0pIHsKKwkJCWNhc2UgMDoKKwkJ CQlmcmVxX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdfR0ZYQ0xLRk1JTjsKKwkJCQlmcmVx X3B0ciA9ICZvZF90YWJsZS0+R2Z4Y2xrRm1pbjsKKwkJCQlpZiAoaW5wdXRbaSArIDFdID4gb2Rf dGFibGUtPkdmeGNsa0ZtYXgpIHsKKwkJCQkJcHJfaW5mbygiR2Z4Y2xrRm1pbiAoJWxkKSBtdXN0 IGJlIDw9IEdmeGNsa0ZtYXggKCV1KSFcbiIsCisJCQkJCQlpbnB1dFtpICsgMV0sCisJCQkJCQlv ZF90YWJsZS0+R2Z4Y2xrRm1pbik7CisJCQkJCXJldHVybiAtRUlOVkFMOworCQkJCX0KKwkJCQli cmVhazsKKwkJCWNhc2UgMToKKwkJCQlmcmVxX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdf R0ZYQ0xLRk1BWDsKKwkJCQlmcmVxX3B0ciA9ICZvZF90YWJsZS0+R2Z4Y2xrRm1heDsKKwkJCQlp ZiAoaW5wdXRbaSArIDFdIDwgb2RfdGFibGUtPkdmeGNsa0ZtaW4pIHsKKwkJCQkJcHJfaW5mbygi R2Z4Y2xrRm1heCAoJWxkKSBtdXN0IGJlID49IEdmeGNsa0ZtaW4gKCV1KSFcbiIsCisJCQkJCQlp bnB1dFtpICsgMV0sCisJCQkJCQlvZF90YWJsZS0+R2Z4Y2xrRm1heCk7CisJCQkJCXJldHVybiAt RUlOVkFMOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcHJfaW5mbygiSW52 YWxpZCBTQ0xLX1ZERENfVEFCTEUgaW5kZXg6ICVsZFxuIiwgaW5wdXRbaV0pOworCQkJCXByX2lu Zm8oIlN1cHBvcnRlZCBpbmRpY2VzOiBbMDptaW4sMTptYXhdXG4iKTsKKwkJCQlyZXR1cm4gLUVJ TlZBTDsKKwkJCX0KKwkJCXJldCA9IG5hdmkxMF9vZF9zZXR0aW5nX2NoZWNrX3JhbmdlKG9kX3Nl dHRpbmdzLCBmcmVxX3NldHRpbmcsIGlucHV0W2kgKyAxXSk7CisJCQlpZiAocmV0KQorCQkJCXJl dHVybiByZXQ7CisJCQkqZnJlcV9wdHIgPSBpbnB1dFtpICsgMV07CisJCX0KKwkJYnJlYWs7CisJ Y2FzZSBQUF9PRF9FRElUX01DTEtfVkREQ19UQUJMRToKKwkJaWYgKCFuYXZpMTBfb2RfZmVhdHVy ZV9pc19zdXBwb3J0ZWQob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09ERkVBVFVSRV9VQ0xLX01BWCkp IHsKKwkJCXByX3dhcm4oIlVDTEtfTUFYIG5vdCBzdXBwb3J0ZWQhXG4iKTsKKwkJCXJldHVybiAt RU5PVFNVUFA7CisJCX0KKwkJaWYgKHNpemUgPCAyKSB7CisJCQlwcl9pbmZvKCJpbnZhbGlkIG51 bWJlciBvZiBwYXJhbWV0ZXJzOiAlZFxuIiwgc2l6ZSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJ fQorCQlpZiAoaW5wdXRbMF0gIT0gMSkgeworCQkJcHJfaW5mbygiSW52YWxpZCBNQ0xLX1ZERENf VEFCTEUgaW5kZXg6ICVsZFxuIiwgaW5wdXRbMF0pOworCQkJcHJfaW5mbygiU3VwcG9ydGVkIGlu ZGljZXM6IFsxOm1heF1cbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJcmV0ID0gbmF2 aTEwX29kX3NldHRpbmdfY2hlY2tfcmFuZ2Uob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09EU0VUVElO R19VQ0xLRk1BWCwgaW5wdXRbMV0pOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJb2Rf dGFibGUtPlVjbGtGbWF4ID0gaW5wdXRbMV07CisJCWJyZWFrOworCWNhc2UgUFBfT0RfQ09NTUlU X0RQTV9UQUJMRToKKwkJbmF2aTEwX2R1bXBfb2RfdGFibGUob2RfdGFibGUpOworCQlyZXQgPSBz bXVfdXBkYXRlX3RhYmxlKHNtdSwgU01VX1RBQkxFX09WRVJEUklWRSwgMCwgKHZvaWQgKilvZF90 YWJsZSwgdHJ1ZSk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIGltcG9ydCBv dmVyZHJpdmUgdGFibGUhXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJbXV0ZXhfbG9jaygm KHNtdS0+bXV0ZXgpKTsKKwkJcmV0ID0gc211X2hhbmRsZV90YXNrKHNtdSwgc211LT5zbXVfZHBt LmRwbV9sZXZlbCwgQU1EX1BQX1RBU0tfUkVBREpVU1RfUE9XRVJfU1RBVEUpOworCQltdXRleF91 bmxvY2soJihzbXUtPm11dGV4KSk7CisJCWlmIChyZXQpIHsKKwkJCXJldHVybiByZXQ7CisJCX0K KwkJYnJlYWs7CisJY2FzZSBQUF9PRF9FRElUX1ZERENfQ1VSVkU6CisJCS8vIFRPRE86IGltcGxl bWVudAorCQlyZXR1cm4gLUVOT1NZUzsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT1NZUzsKKwl9 CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBwcHRhYmxlX2Z1bmNzIG5h dmkxMF9wcHRfZnVuY3MgPSB7CiAJLnRhYmxlc19pbml0ID0gbmF2aTEwX3RhYmxlc19pbml0LAog CS5hbGxvY19kcG1fY29udGV4dCA9IG5hdmkxMF9hbGxvY2F0ZV9kcG1fY29udGV4dCwKQEAgLTE2 MjksNiArMTgxMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHB0YWJsZV9mdW5jcyBuYXZpMTBf cHB0X2Z1bmNzID0gewogCS5nZXRfdGhlcm1hbF90ZW1wZXJhdHVyZV9yYW5nZSA9IG5hdmkxMF9n ZXRfdGhlcm1hbF90ZW1wZXJhdHVyZV9yYW5nZSwKIAkuZGlzcGxheV9kaXNhYmxlX21lbW9yeV9j bG9ja19zd2l0Y2ggPSBuYXZpMTBfZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gs CiAJLmdldF9wb3dlcl9saW1pdCA9IG5hdmkxMF9nZXRfcG93ZXJfbGltaXQsCisJLnNldF9kZWZh dWx0X29kX3NldHRpbmdzID0gbmF2aTEwX3NldF9kZWZhdWx0X29kX3NldHRpbmdzLAorCS5vZF9l ZGl0X2RwbV90YWJsZSA9IG5hdmkxMF9vZF9lZGl0X2RwbV90YWJsZSwKIH07CiAKIHZvaWQgbmF2 aTEwX3NldF9wcHRfZnVuY3Moc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCmluZGV4IGM1MjU3YWUzMTg4YS4uMDI5ZjA4OTYx NDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYwpAQCAtMTgy OCwzICsxODI4LDMwIEBAIHZvaWQgc211X3YxMV8wX3NldF9zbXVfZnVuY3Moc3RydWN0IHNtdV9j b250ZXh0ICpzbXUpCiAJCXByX3dhcm4oIlVua25vd24gYXNpYyBmb3Igc211MTFcbiIpOwogCX0K IH0KKworaW50IHNtdV92MTFfMF9zZXRfZGVmYXVsdF9vZF9zZXR0aW5ncyhzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSwgYm9vbCBpbml0aWFsaXplLCBzaXplX3Qgb3ZlcmRyaXZlX3RhYmxlX3NpemUp Cit7CisJc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJsZV9jb250ZXh0ID0gJnNtdS0+c211 X3RhYmxlOworCWludCByZXQgPSAwOworCisJaWYgKGluaXRpYWxpemUpIHsKKwkJaWYgKHRhYmxl X2NvbnRleHQtPm92ZXJkcml2ZV90YWJsZSkgeworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJ dGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlID0ga3phbGxvYyhvdmVyZHJpdmVfdGFibGVf c2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxl KSB7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQlyZXQgPSBzbXVfdXBkYXRlX3RhYmxlKHNt dSwgU01VX1RBQkxFX09WRVJEUklWRSwgMCwgdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxl LCBmYWxzZSk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIGV4cG9ydCBvdmVy ZHJpdmUgdGFibGUhXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJcmV0ID0gc211X3Vw ZGF0ZV90YWJsZShzbXUsIFNNVV9UQUJMRV9PVkVSRFJJVkUsIDAsIHRhYmxlX2NvbnRleHQtPm92 ZXJkcml2ZV90YWJsZSwgdHJ1ZSk7CisJaWYgKHJldCkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBp bXBvcnQgb3ZlcmRyaXZlIHRhYmxlIVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiBy ZXQ7Cit9Ci0tIAoyLjIzLjAKCgpGcm9tIDdiYzA3ZTBiMDUzMzgxY2U3NDA5ZDgyNTFiZTE4Mzgw ZmI2YjNjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCk1lc3NhZ2UtSWQ6IDw3YmMwN2UwYjA1 MzM4MWNlNzQwOWQ4MjUxYmUxODM4MGZiNmIzYzQzLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0Bn bWFpbC5jb20+CkluLVJlcGx5LVRvOiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdt YWlsLmNvbT4KUmVmZXJlbmNlczogPGNvdmVyLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFp bC5jb20+CkZyb206IE1hdHQgQ29mZmluIDxtY29mZmluMTNAZ21haWwuY29tPgpEYXRlOiBUdWUs IDUgTm92IDIwMTkgMTI6Mzk6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIIDIvM10gZHJtL2FtZGdw dS9uYXZpMTA6IGltcGxlbWVudCBHRlhDTEtfQ1VSVkUgb3ZlcmRyaXZlClRvOiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwoKW1doeV0KQmVmb3JlIHRoaXMgcGF0Y2gsIHRoZXJlIHdhcyBu byB3YXkgdG8gc2V0IHRoZSBnZnhjbGsgdm9sdGFnZSBjdXJ2ZSBpbgp0aGUgb3ZlcmRyaXZlIHNl dHRpbmdzIGZvciBuYXZpMTAgdGhyb3VnaCBwcF9vZF9jbGtfdm9sdGFnZQoKW0hvd10KQWRkIHRo ZSByZXF1aXJlZCBpbXBsZW1lbnRhdGlvbiB0byBuYXZpMTAncyBwcHQgZHBtIHRhYmxlIGVkaXRp bmcKaW1wbGVtZW50YXRpb24sIHNpbWlsYXIgdG8gdGhlIHZlZ2EyMCBpbXBsZW1lbnRhdGlvbiBh bmQgaW50ZXJmYWNlLgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkxMF9w cHQuYyB8IDU1ICsrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L25hdmkxMF9wcHQuaCB8ICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZp MTBfcHB0LmMKaW5kZXggNmQwZTUxMWFkMDkzLi5lNzE3MzI4ZjkzY2UgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkxMF9wcHQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMKQEAgLTE2NjcsNiArMTY2Nyw4IEBAIHN0 YXRpYyBpbnQgbmF2aTEwX29kX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211 LCBlbnVtIFBQX09EX0RQTV9UQUJMCiAJc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJsZV9j b250ZXh0ID0gJnNtdS0+c211X3RhYmxlOwogCU92ZXJEcml2ZVRhYmxlX3QgKm9kX3RhYmxlOwog CXN0cnVjdCBzbXVfMTFfMF9vdmVyZHJpdmVfdGFibGUgKm9kX3NldHRpbmdzOworCWVudW0gU01V XzExXzBfT0RTRVRUSU5HX0lEIGZyZXFfc2V0dGluZywgdm9sdGFnZV9zZXR0aW5nOworCXVpbnQx Nl90ICpmcmVxX3B0ciwgKnZvbHRhZ2VfcHRyOwogCW9kX3RhYmxlID0gKE92ZXJEcml2ZVRhYmxl X3QgKil0YWJsZV9jb250ZXh0LT5vdmVyZHJpdmVfdGFibGU7CiAKIAlpZiAoIXNtdS0+b2RfZW5h YmxlZCkgewpAQCAtMTc2Niw4ICsxNzY4LDU3IEBAIHN0YXRpYyBpbnQgbmF2aTEwX29kX2VkaXRf ZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIFBQX09EX0RQTV9UQUJMCiAJ CX0KIAkJYnJlYWs7CiAJY2FzZSBQUF9PRF9FRElUX1ZERENfQ1VSVkU6Ci0JCS8vIFRPRE86IGlt cGxlbWVudAotCQlyZXR1cm4gLUVOT1NZUzsKKwkJaWYgKCFuYXZpMTBfb2RfZmVhdHVyZV9pc19z dXBwb3J0ZWQob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09ERkVBVFVSRV9HRlhDTEtfQ1VSVkUpKSB7 CisJCQlwcl93YXJuKCJHRlhDTEtfQ1VSVkUgbm90IHN1cHBvcnRlZCFcbiIpOworCQkJcmV0dXJu IC1FTk9UU1VQUDsKKwkJfQorCQlpZiAoc2l6ZSA8IDMpIHsKKwkJCXByX2luZm8oImludmFsaWQg bnVtYmVyIG9mIHBhcmFtZXRlcnM6ICVkXG4iLCBzaXplKTsKKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisJCWlmICghb2RfdGFibGUpIHsKKwkJCXByX2luZm8oIk92ZXJkcml2ZSBpcyBub3QgaW5p dGlhbGl6ZWRcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlzd2l0Y2ggKGlucHV0 WzBdKSB7CisJCWNhc2UgMDoKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19W RERHRlhDVVJWRUZSRVFfUDE7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJ TkdfVkRER0ZYQ1VSVkVWT0xUQUdFX1AxOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNs a0ZyZXExOworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQxOworCQkJYnJl YWs7CisJCWNhc2UgMToKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19WRERH RlhDVVJWRUZSRVFfUDI7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdf VkRER0ZYQ1VSVkVWT0xUQUdFX1AyOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa0Zy ZXEyOworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQyOworCQkJYnJlYWs7 CisJCWNhc2UgMjoKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19WRERHRlhD VVJWRUZSRVFfUDM7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdfVkRE R0ZYQ1VSVkVWT0xUQUdFX1AzOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa0ZyZXEz OworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQzOworCQkJYnJlYWs7CisJ CWRlZmF1bHQ6CisJCQlwcl9pbmZvKCJJbnZhbGlkIFZERENfQ1VSVkUgaW5kZXg6ICVsZFxuIiwg aW5wdXRbMF0pOworCQkJcHJfaW5mbygiU3VwcG9ydGVkIGluZGljZXM6IFswLCAxLCAyXVxuIik7 CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlyZXQgPSBuYXZpMTBfb2Rfc2V0dGluZ19jaGVj a19yYW5nZShvZF9zZXR0aW5ncywgZnJlcV9zZXR0aW5nLCBpbnB1dFsxXSk7CisJCWlmIChyZXQp CisJCQlyZXR1cm4gcmV0OworCQkvLyBBbGxvdyBzZXR0aW5nIHplcm8gdG8gZGlzYWJsZSB0aGUg T3ZlckRyaXZlIFZEREMgY3VydmUKKwkJaWYgKGlucHV0WzJdICE9IDApIHsKKwkJCXJldCA9IG5h dmkxMF9vZF9zZXR0aW5nX2NoZWNrX3JhbmdlKG9kX3NldHRpbmdzLCB2b2x0YWdlX3NldHRpbmcs IGlucHV0WzJdKTsKKwkJCWlmIChyZXQpCisJCQkJcmV0dXJuIHJldDsKKwkJfQorCQkqZnJlcV9w dHIgPSBpbnB1dFsxXTsKKwkJKnZvbHRhZ2VfcHRyID0gKCh1aW50MTZfdClpbnB1dFsyXSkgKiBO QVZJMTBfVk9MVEFHRV9TQ0FMRTsKKwkJcHJfZGVidWcoIk9EOiBzZXQgY3VydmUgJWxkOiAoJWQs ICVkKVxuIiwgaW5wdXRbMF0sICpmcmVxX3B0ciwgKnZvbHRhZ2VfcHRyKTsKKwkJbmF2aTEwX2R1 bXBfb2RfdGFibGUob2RfdGFibGUpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVO T1NZUzsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZp MTBfcHB0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmgKaW5k ZXggNjIwZmYxN2MyZmVmLi40ODRkMmM1OGZjMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L25hdmkxMF9wcHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmgKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgTkFWSTEwX1BF QUtfU0NMS19YVCAgCQkoMTc1NSkKICNkZWZpbmUgTkFWSTEwX1BFQUtfU0NMS19YTCAgCQkoMTYy NSkKIAorI2RlZmluZSBOQVZJMTBfVk9MVEFHRV9TQ0FMRSAoNCkKKwogZXh0ZXJuIHZvaWQgbmF2 aTEwX3NldF9wcHRfZnVuY3Moc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpOwogCiAjZW5kaWYKLS0g CjIuMjMuMAoKCkZyb20gZTA5MWM0MDg1ZWNjNjY5ZWE5MDdmZTVkODUxNWYxNDU4Njg2M2Y5YiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKTWVzc2FnZS1JZDogPGUwOTFjNDA4NWVjYzY2OWVhOTA3 ZmU1ZDg1MTVmMTQ1ODY4NjNmOWIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4K SW4tUmVwbHktVG86IDxjb3Zlci4xNTczMTUxNDM0LmdpdC5tY29mZmluMTNAZ21haWwuY29tPgpS ZWZlcmVuY2VzOiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4KRnJv bTogTWF0dCBDb2ZmaW4gPG1jb2ZmaW4xM0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNiBOb3YgMjAx OSAxMjowNToyOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMy8zXSBkcm0vYW1kZ3B1L25hdmkxMDog SW1wbGVtZW50IG9kIGNsayBwcmludGluZwpUbzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKCltXaHldCkJlZm9yZSB0aGlzIHBhdGNoLCBuYXZpMTAgb3ZlcmRyaXZlIHNldHRpbmdzIGNv dWxkIG5vdCBiZSBwcmludGVkIHZpYQpwcF9vZF9jbGtfdm9sdGFnZQoKW0hvd10KSW1wbGVtZW50 IHByaW50aW5nIGZvciB0aGUgb3ZlcmRyaXZlIHNldHRpbmdzIGZvciB0aGUgZm9sbG93aW5nIGNs b2NrcwppbiBuYXZpMTAncyBwcHQgcHJpbnRfY2xrX2xldmVscyBpbXBsZW1lbnRhdGlvbjoKCiog U01VX09EX1NDTEsKKiBTTVVfT0RfTUNMSwoqIFNNVV9PRF9WRERDX0NVUlZFCi0tLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5jIHwgNTYgKysrKysrKysrKysrKysr KysrKystLQogMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5jCmluZGV4IGU3MTcz MjhmOTNjZS4uNTA2YWY1OWZmNDVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv bmF2aTEwX3BwdC5jCkBAIC02NzcsMTMgKzY3NywyNSBAQCBzdGF0aWMgYm9vbCBuYXZpMTBfaXNf c3VwcG9ydF9maW5lX2dyYWluZWRfZHBtKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIHNt dQogCXJldHVybiBkcG1fZGVzYy0+U25hcFRvRGlzY3JldGUgPT0gMCA/IHRydWUgOiBmYWxzZTsK IH0KIAorc3RhdGljIGlubGluZSBib29sIG5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9P REZFQVRVUkVfSUQgZmVhdHVyZSkKK3sKKwlyZXR1cm4gb2RfdGFibGUtPmNhcFtmZWF0dXJlXTsK K30KKworCiBzdGF0aWMgaW50IG5hdmkxMF9wcmludF9jbGtfbGV2ZWxzKHN0cnVjdCBzbXVfY29u dGV4dCAqc211LAogCQkJZW51bSBzbXVfY2xrX3R5cGUgY2xrX3R5cGUsIGNoYXIgKmJ1ZikKIHsK KwlPdmVyRHJpdmVUYWJsZV90ICpvZF90YWJsZTsKKwlzdHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZl X3RhYmxlICpvZF9zZXR0aW5nczsKKwl1aW50MTZfdCAqY3VydmVfc2V0dGluZ3M7CiAJaW50IGks IHNpemUgPSAwLCByZXQgPSAwOwogCXVpbnQzMl90IGN1cl92YWx1ZSA9IDAsIHZhbHVlID0gMCwg Y291bnQgPSAwOwogCXVpbnQzMl90IGZyZXFfdmFsdWVzWzNdID0gezB9OwogCXVpbnQzMl90IG1h cmtfaW5kZXggPSAwOworCXN0cnVjdCBzbXVfdGFibGVfY29udGV4dCAqdGFibGVfY29udGV4dCA9 ICZzbXUtPnNtdV90YWJsZTsKKwlvZF90YWJsZSA9IChPdmVyRHJpdmVUYWJsZV90ICopdGFibGVf Y29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlOworCW9kX3NldHRpbmdzID0gc211LT5vZF9zZXR0aW5n czsKIAogCXN3aXRjaCAoY2xrX3R5cGUpIHsKIAljYXNlIFNNVV9HRlhDTEs6CkBAIC03MzQsNiAr NzQ2LDQ1IEBAIHN0YXRpYyBpbnQgbmF2aTEwX3ByaW50X2Nsa19sZXZlbHMoc3RydWN0IHNtdV9j b250ZXh0ICpzbXUsCiAKIAkJfQogCQlicmVhazsKKwljYXNlIFNNVV9PRF9TQ0xLOgorCQlpZiAo IXNtdS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3NldHRpbmdzKQorCQkJYnJlYWs7 CisJCWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVkKG9kX3NldHRpbmdzLCBTTVVf MTFfMF9PREZFQVRVUkVfR0ZYQ0xLX0xJTUlUUykpCisJCQlicmVhazsKKwkJc2l6ZSArPSBzcHJp bnRmKGJ1ZiArIHNpemUsICJPRF9TQ0xLOlxuIik7CisJCXNpemUgKz0gc3ByaW50ZihidWYgKyBz aXplLCAiMDogJXVNaHpcbjE6ICV1TWh6XG4iLCBvZF90YWJsZS0+R2Z4Y2xrRm1pbiwgb2RfdGFi bGUtPkdmeGNsa0ZtYXgpOworCQlicmVhazsKKwljYXNlIFNNVV9PRF9NQ0xLOgorCQlpZiAoIXNt dS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3NldHRpbmdzKQorCQkJYnJlYWs7CisJ CWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVkKG9kX3NldHRpbmdzLCBTTVVfMTFf MF9PREZFQVRVUkVfVUNMS19NQVgpKQorCQkJYnJlYWs7CisJCXNpemUgKz0gc3ByaW50ZihidWYg KyBzaXplLCAiT0RfTUNMSzpcbiIpOworCQlzaXplICs9IHNwcmludGYoYnVmICsgc2l6ZSwgIjA6 ICV1TUh6XG4iLCBvZF90YWJsZS0+VWNsa0ZtYXgpOworCQlicmVhazsKKwljYXNlIFNNVV9PRF9W RERDX0NVUlZFOgorCQlpZiAoIXNtdS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3Nl dHRpbmdzKQorCQkJYnJlYWs7CisJCWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVk KG9kX3NldHRpbmdzLCBTTVVfMTFfMF9PREZFQVRVUkVfR0ZYQ0xLX0NVUlZFKSkKKwkJCWJyZWFr OworCQlzaXplICs9IHNwcmludGYoYnVmICsgc2l6ZSwgIk9EX1ZERENfQ1VSVkU6XG4iKTsKKwkJ Zm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJc3dpdGNoIChpKSB7CisJCQljYXNlIDA6CisJ CQkJY3VydmVfc2V0dGluZ3MgPSAmb2RfdGFibGUtPkdmeGNsa0ZyZXExOworCQkJCWJyZWFrOwor CQkJY2FzZSAxOgorCQkJCWN1cnZlX3NldHRpbmdzID0gJm9kX3RhYmxlLT5HZnhjbGtGcmVxMjsK KwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQljdXJ2ZV9zZXR0aW5ncyA9ICZvZF90YWJsZS0+ R2Z4Y2xrRnJlcTM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQor CQkJc2l6ZSArPSBzcHJpbnRmKGJ1ZiArIHNpemUsICIlZDogJXVNSHogQCAldW1WXG4iLCBpLCBj dXJ2ZV9zZXR0aW5nc1swXSwgY3VydmVfc2V0dGluZ3NbMV0gLyBOQVZJMTBfVk9MVEFHRV9TQ0FM RSk7CisJCX0KKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQpAQCAtMTYwMCwxMSAr MTY1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuYXZpMTBfZHVtcF9vZF90YWJsZShPdmVyRHJp dmVUYWJsZV90ICpvZF90YWJsZSkgewogCXByX2RlYnVnKCJPRDogT3ZlckRyaXZlUGN0OiAlZFxu Iiwgb2RfdGFibGUtPk92ZXJEcml2ZVBjdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBuYXZp MTBfb2RfZmVhdHVyZV9pc19zdXBwb3J0ZWQoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJs ZSAqb2RfdGFibGUsIGVudW0gU01VXzExXzBfT0RGRUFUVVJFX0lEIGZlYXR1cmUpCi17Ci0JcmV0 dXJuIG9kX3RhYmxlLT5jYXBbZmVhdHVyZV07Ci19Ci0KIHN0YXRpYyBpbnQgbmF2aTEwX29kX3Nl dHRpbmdfY2hlY2tfcmFuZ2Uoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSAqb2RfdGFi bGUsIGVudW0gU01VXzExXzBfT0RTRVRUSU5HX0lEIHNldHRpbmcsIHVpbnQzMl90IHZhbHVlKQog ewogCWlmICh2YWx1ZSA8IG9kX3RhYmxlLT5taW5bc2V0dGluZ10pIHsKLS0gCjIuMjMuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DEC38C43331 for ; Thu, 7 Nov 2019 18:33:24 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B9425214D8 for ; Thu, 7 Nov 2019 18:33:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B9425214D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 88C0E6F786; Thu, 7 Nov 2019 18:33:24 +0000 (UTC) Received: from mail-il1-x12f.google.com (mail-il1-x12f.google.com [IPv6:2607:f8b0:4864:20::12f]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3CE56F786 for ; Thu, 7 Nov 2019 18:33:22 +0000 (UTC) Received: by mail-il1-x12f.google.com with SMTP id a7so2313845ild.6 for ; Thu, 07 Nov 2019 10:33:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=eRaFKzWEnRJkGk4e3y3MGodhLKdrGyT4oYoTSNJbKt4=; b=X6qncydPN+sZOXbHp7F0bdvEaCwkhOhoX5pyy33XYCXWJ36HSNRiMeDIzX7cNAWYIE 2fHKzePc6+29zdZXP3jp3S4/yB34FbPuYMhs7Gf2tWfITLzQ5CEyXKgBh7olkRMMOJVh cF8+BiJUVV1zknPaT8sWZYWDD8ULPeinjjNzRcfFXxELlIWcGvamkXtlPNPvPBeVKPt2 U2j3+55lNphtqawcquB0SUcUOeNmdWUROOJkNSLAcMhCZII87eerUNt0OZes7VymvC8h Q5GfEwXzKbmcHYPepZ6DVPBdieiGS37bkJs2GeDpm45eLIyqAiDKI93xcsWeBfEw5WCu agbA== X-Gm-Message-State: APjAAAUOa+b7yOgLUMMnQ1FitFnub3vP+ooxqW/nsvBby6zqhb/EuaA9 6vUzdgMjb6fPdcrC4kVlYAQb0FtEqdY= X-Google-Smtp-Source: APXvYqyjuhhFXSX1/CDU7sL5yrV2WXulfT1fiLPsaKQJ79AX6r0W+pDYpUwIs1dm0yq2I+f14y4lQA== X-Received: by 2002:a92:9f5d:: with SMTP id u90mr6645787ili.13.1573151597077; Thu, 07 Nov 2019 10:33:17 -0800 (PST) Received: from localhost.localdomain ([2602:47:da84:5600:6d4:c4ff:fe4a:ea6b]) by smtp.gmail.com with ESMTPSA id t68sm412427ilb.66.2019.11.07.10.33.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Nov 2019 10:33:16 -0800 (PST) From: Matt Coffin To: amd-gfx@lists.freedesktop.org Subject: [PATCH 0/3] navi10: Implement overdrive pp_od_clk_voltage Date: Thu, 7 Nov 2019 11:32:51 -0700 Message-Id: X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=eRaFKzWEnRJkGk4e3y3MGodhLKdrGyT4oYoTSNJbKt4=; b=tK1DDANrUz/gxyjKQLHlgt7SWds3RxJguxw10Pmg/WDNcm8snoHjqhMrQiTOUpTNbO J8IHz84UaGIiJfWpN1dM3LvaJv9X/NAMMyhVz9Rv1/ZM+HAljDPw9iY0hlGW1CnGV+Zh epS4mJG3B6ptYsAVWd3SwWi+C7gVjZ18ZQ5VeCIuf6tu91UZTqk9C7MewwMlMN/s48pS W+fS5s4w7fGpUFCIUVOo68hGxTyehjO8J7ptZZhLoOwpwz72EUjoSZBntW250kBYmESk 8+s9v4s0mERHiOFmr8c1rPfRXoLjNEJ/kDhhZmkOTKEhpjmy6d0rYKHCHCLoNRqQea2j XeJQ== X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Matt Coffin Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Message-ID: <20191107183251.QgAeyUt9hMElyNTB4JpAxDUspT_fKilvCpSPxSGocfI@z> W1doeV0KQmVmb3JlIHRoaXMgcGF0Y2hzZXQsIG5hdmkxMCB1c2VycyBjb3VsZCBub3QgdXRpbGl6 ZSB0aGUgb3ZlcmRyaXZlCmZ1bmN0aW9uYWxpdHkuIFRoaXMgcHJldmVudGVkIHRoZW0gZnJvbSBv dmVyY2xvY2tpbmcsIG92ZXJ2b2x0aW5nLCBvcgp1bmRlcnZvbHRpbmcgdGhlaXIgY2FyZHMuCgpb SG93XQpTaW1pbGFyIHRvIHRoZSB2ZWdhMjAgaW1wbGVtZW50YXRpb24sIGFkZCB0aGUgcHBfb2Rf Y2xrX3ZvbHRhZ2UKaW50ZXJmYWNlIHRvIHRoZSBuYXZpMTAgcG93ZXJwbGF5IHRhYmxlLgoKW1Bv c3NpYmxlIEFsdGVybmF0aXZlc10KVGhpcyBjb3VsZCBhbHNvIGJlIGRvbmUgbW9yZSBnZW5lcmlj YWxseSBpbiBzbXVfdjExXzAgY29kZSwgYnV0IHdvdWxkCnJlcXVpcmUgbW9yZSBzaWduaWZpY2Fu dCBjaGFuZ2VzIHRvIHRoZSB2ZWdhMjAgY29kZSwgYW5kIGZlYXR1cmUtZ2F0aW5nCmJhc2VkIG9u IGNoaXAgY2FwYWJpbGl0aWVzIGluIHRoZSBzbXUgdG8gZGlzYWJsZSBvdmVyZHJpdmUgZm9yIGFy Y3RlcnVzLgpJIGNob3NlIHRoaXMgcGF0aCBzbyBhcyBub3QgdG8gY29tcGxldGVseSByZWZhY3Rv ciB0aGUgdmVnYTIwIHNpZGUgb2YKdGhpbmdzLCBhbmQgaW50cm9kdWNlIFNNVSBjb2RlIHdoaWNo IHdvdWxkIG5vdCBwbGF5IG5pY2VseSB3aXRoIG5ldwpBU0lDcy4KCk1hdHQgQ29mZmluICgzKToK ICBkcm0vYW1kZ3B1L25hdmkxMDogaW1wbGVtZW50IHNjbGsvbWNsayBPRCB2aWEgcHBfb2RfY2xr X3ZvbHRhZ2UKICBkcm0vYW1kZ3B1L25hdmkxMDogaW1wbGVtZW50IEdGWENMS19DVVJWRSBvdmVy ZHJpdmUKICBkcm0vYW1kZ3B1L25hdmkxMDogSW1wbGVtZW50IG9kIGNsayBwcmludGluZwoKIGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVfdjExXzAuaCB8ICAgMSArCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMgICAgfCAyODIgKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmggICAg fCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMgICAgIHwg IDI3ICsrCiA0IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNlcnRpb25zKCspCgotLSAKMi4yMy4wCgpG cm9tIDg1NzNlOTE5OWRhZjU5MmY2ZTZlNWE4MDdiNjliMzdiYjgwZjE1NmEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCk1lc3NhZ2UtSWQ6IDw4NTczZTkxOTlkYWY1OTJmNmU2ZTVhODA3YjY5YjM3 YmI4MGYxNTZhLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFpbC5jb20+CkluLVJlcGx5LVRv OiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4KUmVmZXJlbmNlczog PGNvdmVyLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFpbC5jb20+CkZyb206IE1hdHQgQ29m ZmluIDxtY29mZmluMTNAZ21haWwuY29tPgpEYXRlOiBTYXQsIDIgTm92IDIwMTkgMDI6MjQ6MDkg LTA2MDAKU3ViamVjdDogW1BBVENIIDEvM10gZHJtL2FtZGdwdS9uYXZpMTA6IGltcGxlbWVudCBz Y2xrL21jbGsgT0QgdmlhCiBwcF9vZF9jbGtfdm9sdGFnZQpUbzogYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKCltXaHldCkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgbm8gd2F5IHRv IHVzZSBwcF9vZF9jbGtfdm9sdGFnZSBvbiBuYXZpCgpbSG93XQpTaW1pbGFyIHRvIHRoZSB2ZWdh MjAgaW1wbGVtZW50YXRpb24sIGJ1dCB1c2luZyB0aGUgY29tbW9uIHNtY192MTFfMApoZWFkZXJz LCBpbXBsZW1lbnRlZCB0aGUgcHBfb2RfY2xrX3ZvbHRhZ2UgQVBJIGZvciBuYXZpMTAncyBwcHRh YmxlCmltcGxlbWVudGF0aW9uCi0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L3NtdV92MTFfMC5oIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkx MF9wcHQuYyAgICB8IDE4NSArKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L3NtdV92MTFfMC5jICAgICB8ICAyNyArKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEz IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9pbmMvc211X3YxMV8wLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvc211 X3YxMV8wLmgKaW5kZXggNWJkYTg1Mzk0NDdhLi4xMzNhNTNkYTY3ODUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVfdjExXzAuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvc211X3YxMV8wLmgKQEAgLTEzMCw2ICsxMzAsNyBA QCBlbnVtIHNtdV92MTFfMF9iYWNvX3NlcSB7CiAJQkFDT19TRVFfQ09VTlQsCiB9OwogCitpbnQg c211X3YxMV8wX3NldF9kZWZhdWx0X29kX3NldHRpbmdzKHN0cnVjdCBzbXVfY29udGV4dCAqc211 LCBib29sIGluaXRpYWxpemUsIHNpemVfdCBvdmVyZHJpdmVfdGFibGVfc2l6ZSk7CiB2b2lkIHNt dV92MTFfMF9zZXRfc211X2Z1bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMKaW5kZXggMGI0NjE0 MDRhZjZiLi42ZDBlNTExYWQwOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L25hdmkxMF9wcHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9u YXZpMTBfcHB0LmMKQEAgLTE1OTEsNiArMTU5MSwxODkgQEAgc3RhdGljIGludCBuYXZpMTBfZ2V0 X3Bvd2VyX2xpbWl0KHN0cnVjdCBzbXVfY29udGV4dCAqc211LAogCXJldHVybiAwOwogfQogCitz dGF0aWMgaW5saW5lIHZvaWQgbmF2aTEwX2R1bXBfb2RfdGFibGUoT3ZlckRyaXZlVGFibGVfdCAq b2RfdGFibGUpIHsKKwlwcl9kZWJ1ZygiT0Q6IEdmeGNsazogKCVkLCAlZClcbiIsIG9kX3RhYmxl LT5HZnhjbGtGbWluLCBvZF90YWJsZS0+R2Z4Y2xrRm1heCk7CisJcHJfZGVidWcoIk9EOiBHZngx OiAoJWQsICVkKVxuIiwgb2RfdGFibGUtPkdmeGNsa0ZyZXExLCBvZF90YWJsZS0+R2Z4Y2xrVm9s dDEpOworCXByX2RlYnVnKCJPRDogR2Z4MjogKCVkLCAlZClcbiIsIG9kX3RhYmxlLT5HZnhjbGtG cmVxMiwgb2RfdGFibGUtPkdmeGNsa1ZvbHQyKTsKKwlwcl9kZWJ1ZygiT0Q6IEdmeDM6ICglZCwg JWQpXG4iLCBvZF90YWJsZS0+R2Z4Y2xrRnJlcTMsIG9kX3RhYmxlLT5HZnhjbGtWb2x0Myk7CisJ cHJfZGVidWcoIk9EOiBVY2xrRm1heDogJWRcbiIsIG9kX3RhYmxlLT5VY2xrRm1heCk7CisJcHJf ZGVidWcoIk9EOiBPdmVyRHJpdmVQY3Q6ICVkXG4iLCBvZF90YWJsZS0+T3ZlckRyaXZlUGN0KTsK K30KKworc3RhdGljIGlubGluZSBib29sIG5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9P REZFQVRVUkVfSUQgZmVhdHVyZSkKK3sKKwlyZXR1cm4gb2RfdGFibGUtPmNhcFtmZWF0dXJlXTsK K30KKworc3RhdGljIGludCBuYXZpMTBfb2Rfc2V0dGluZ19jaGVja19yYW5nZShzdHJ1Y3Qgc211 XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9PRFNFVFRJTkdf SUQgc2V0dGluZywgdWludDMyX3QgdmFsdWUpCit7CisJaWYgKHZhbHVlIDwgb2RfdGFibGUtPm1p bltzZXR0aW5nXSkgeworCQlwcl93YXJuKCJPRCBzZXR0aW5nICglZCwgJWQpIGlzIGxlc3MgdGhh biB0aGUgbWluaW11bSBhbGxvd2VkICglZClcbiIsIHNldHRpbmcsIHZhbHVlLCBvZF90YWJsZS0+ bWluW3NldHRpbmddKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICh2YWx1ZSA+IG9kX3Rh YmxlLT5tYXhbc2V0dGluZ10pIHsKKwkJcHJfd2FybigiT0Qgc2V0dGluZyAoJWQsICVkKSBpcyBn cmVhdGVyIHRoYW4gdGhlIG1heGltdW0gYWxsb3dlZCAoJWQpXG4iLCBzZXR0aW5nLCB2YWx1ZSwg b2RfdGFibGUtPm1heFtzZXR0aW5nXSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBuYXZpMTBfc2V0dXBfb2RfbGltaXRzKHN0cnVjdCBzbXVfY29u dGV4dCAqc211KSB7CisJc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSAqb3ZlcmRyaXZl X3RhYmxlID0gTlVMTDsKKwlzdHJ1Y3Qgc211XzExXzBfcG93ZXJwbGF5X3RhYmxlICpwb3dlcnBs YXlfdGFibGUgPSBOVUxMOworCisJaWYgKCFzbXUtPnNtdV90YWJsZS5wb3dlcl9wbGF5X3RhYmxl KSB7CisJCXByX2VycigicG93ZXJwbGF5IHRhYmxlIHVuaW5pdGlhbGl6ZWQhXG4iKTsKKwkJcmV0 dXJuIC1FTk9FTlQ7CisJfQorCXBvd2VycGxheV90YWJsZSA9IChzdHJ1Y3Qgc211XzExXzBfcG93 ZXJwbGF5X3RhYmxlICopc211LT5zbXVfdGFibGUucG93ZXJfcGxheV90YWJsZTsKKwlvdmVyZHJp dmVfdGFibGUgPSAmcG93ZXJwbGF5X3RhYmxlLT5vdmVyZHJpdmVfdGFibGU7CisJaWYgKCFzbXUt Pm9kX3NldHRpbmdzKSB7CisJCXNtdS0+b2Rfc2V0dGluZ3MgPSBrbWVtZHVwKG92ZXJkcml2ZV90 YWJsZSwgc2l6ZW9mKHN0cnVjdCBzbXVfMTFfMF9vdmVyZHJpdmVfdGFibGUpLCBHRlBfS0VSTkVM KTsKKwl9IGVsc2UgeworCQltZW1jcHkoc211LT5vZF9zZXR0aW5ncywgb3ZlcmRyaXZlX3RhYmxl LCBzaXplb2Yoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSkpOworCX0KKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBuYXZpMTBfc2V0X2RlZmF1bHRfb2Rfc2V0dGluZ3Moc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUsIGJvb2wgaW5pdGlhbGl6ZSkgeworCU92ZXJEcml2ZVRhYmxlX3Qg Km9kX3RhYmxlOworCWludCByZXQgPSAwOworCisJcmV0ID0gc211X3YxMV8wX3NldF9kZWZhdWx0 X29kX3NldHRpbmdzKHNtdSwgaW5pdGlhbGl6ZSwgc2l6ZW9mKE92ZXJEcml2ZVRhYmxlX3QpKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKGluaXRpYWxpemUpIHsKKwkJcmV0ID0g bmF2aTEwX3NldHVwX29kX2xpbWl0cyhzbXUpOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIkZh aWxlZCB0byByZXRyaWV2ZSBib2FyZCBPRCBsaW1pdHNcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCisJfQorCisJb2RfdGFibGUgPSAoT3ZlckRyaXZlVGFibGVfdCAqKXNtdS0+c211X3RhYmxl Lm92ZXJkcml2ZV90YWJsZTsKKwlpZiAob2RfdGFibGUpIHsKKwkJbmF2aTEwX2R1bXBfb2RfdGFi bGUob2RfdGFibGUpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgbmF2aTEw X29kX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIFBQX09EX0RQ TV9UQUJMRV9DT01NQU5EIHR5cGUsIGxvbmcgaW5wdXRbXSwgdWludDMyX3Qgc2l6ZSkgeworCWlu dCBpOworCWludCByZXQgPSAwOworCXN0cnVjdCBzbXVfdGFibGVfY29udGV4dCAqdGFibGVfY29u dGV4dCA9ICZzbXUtPnNtdV90YWJsZTsKKwlPdmVyRHJpdmVUYWJsZV90ICpvZF90YWJsZTsKKwlz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF9zZXR0aW5nczsKKwlvZF90YWJsZSA9 IChPdmVyRHJpdmVUYWJsZV90ICopdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlOworCisJ aWYgKCFzbXUtPm9kX2VuYWJsZWQpIHsKKwkJcHJfd2FybigiT3ZlckRyaXZlIGlzIG5vdCBlbmFi bGVkIVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICghc211LT5vZF9zZXR0aW5n cykgeworCQlwcl9lcnIoIk9EIGJvYXJkIGxpbWl0cyBhcmUgbm90IHNldCFcbiIpOworCQlyZXR1 cm4gLUVOT0VOVDsKKwl9CisKKwlvZF9zZXR0aW5ncyA9IHNtdS0+b2Rfc2V0dGluZ3M7CisKKwlz d2l0Y2ggKHR5cGUpIHsKKwljYXNlIFBQX09EX0VESVRfU0NMS19WRERDX1RBQkxFOgorCQlpZiAo IW5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChvZF9zZXR0aW5ncywgU01VXzExXzBfT0RG RUFUVVJFX0dGWENMS19MSU1JVFMpKSB7CisJCQlwcl93YXJuKCJHRlhDTEtfTElNSVRTIG5vdCBz dXBwb3J0ZWQhXG4iKTsKKwkJCXJldHVybiAtRU5PVFNVUFA7CisJCX0KKwkJaWYgKCF0YWJsZV9j b250ZXh0LT5vdmVyZHJpdmVfdGFibGUpIHsKKwkJCXByX2VycigiT3ZlcmRyaXZlIGlzIG5vdCBp bml0aWFsaXplZFxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoaW5wdXRbMF0g PiBpbnB1dFsxXSkgeworCQkJcHJfaW5mbygiR2Z4Y2xrRm1pbiBtdXN0IGJlIGxlc3MgdGhhbiBH ZnhjbGtGbWF4XG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWZvciAoaSA9IDA7IGkg PCBzaXplOyBpICs9IDIpIHsKKwkJCWlmIChpICsgMiA+IHNpemUpIHsKKwkJCQlwcl9pbmZvKCJp bnZhbGlkIG51bWJlciBvZiBpbnB1dCBwYXJhbWV0ZXJzICVkXG4iLCBzaXplKTsKKwkJCQlyZXR1 cm4gLUVJTlZBTDsKKwkJCX0KKwkJCXN3aXRjaCAoaW5wdXRbaV0pIHsKKwkJCWNhc2UgMDoKKwkJ CQlmcmVxX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdfR0ZYQ0xLRk1JTjsKKwkJCQlmcmVx X3B0ciA9ICZvZF90YWJsZS0+R2Z4Y2xrRm1pbjsKKwkJCQlpZiAoaW5wdXRbaSArIDFdID4gb2Rf dGFibGUtPkdmeGNsa0ZtYXgpIHsKKwkJCQkJcHJfaW5mbygiR2Z4Y2xrRm1pbiAoJWxkKSBtdXN0 IGJlIDw9IEdmeGNsa0ZtYXggKCV1KSFcbiIsCisJCQkJCQlpbnB1dFtpICsgMV0sCisJCQkJCQlv ZF90YWJsZS0+R2Z4Y2xrRm1pbik7CisJCQkJCXJldHVybiAtRUlOVkFMOworCQkJCX0KKwkJCQli cmVhazsKKwkJCWNhc2UgMToKKwkJCQlmcmVxX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdf R0ZYQ0xLRk1BWDsKKwkJCQlmcmVxX3B0ciA9ICZvZF90YWJsZS0+R2Z4Y2xrRm1heDsKKwkJCQlp ZiAoaW5wdXRbaSArIDFdIDwgb2RfdGFibGUtPkdmeGNsa0ZtaW4pIHsKKwkJCQkJcHJfaW5mbygi R2Z4Y2xrRm1heCAoJWxkKSBtdXN0IGJlID49IEdmeGNsa0ZtaW4gKCV1KSFcbiIsCisJCQkJCQlp bnB1dFtpICsgMV0sCisJCQkJCQlvZF90YWJsZS0+R2Z4Y2xrRm1heCk7CisJCQkJCXJldHVybiAt RUlOVkFMOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcHJfaW5mbygiSW52 YWxpZCBTQ0xLX1ZERENfVEFCTEUgaW5kZXg6ICVsZFxuIiwgaW5wdXRbaV0pOworCQkJCXByX2lu Zm8oIlN1cHBvcnRlZCBpbmRpY2VzOiBbMDptaW4sMTptYXhdXG4iKTsKKwkJCQlyZXR1cm4gLUVJ TlZBTDsKKwkJCX0KKwkJCXJldCA9IG5hdmkxMF9vZF9zZXR0aW5nX2NoZWNrX3JhbmdlKG9kX3Nl dHRpbmdzLCBmcmVxX3NldHRpbmcsIGlucHV0W2kgKyAxXSk7CisJCQlpZiAocmV0KQorCQkJCXJl dHVybiByZXQ7CisJCQkqZnJlcV9wdHIgPSBpbnB1dFtpICsgMV07CisJCX0KKwkJYnJlYWs7CisJ Y2FzZSBQUF9PRF9FRElUX01DTEtfVkREQ19UQUJMRToKKwkJaWYgKCFuYXZpMTBfb2RfZmVhdHVy ZV9pc19zdXBwb3J0ZWQob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09ERkVBVFVSRV9VQ0xLX01BWCkp IHsKKwkJCXByX3dhcm4oIlVDTEtfTUFYIG5vdCBzdXBwb3J0ZWQhXG4iKTsKKwkJCXJldHVybiAt RU5PVFNVUFA7CisJCX0KKwkJaWYgKHNpemUgPCAyKSB7CisJCQlwcl9pbmZvKCJpbnZhbGlkIG51 bWJlciBvZiBwYXJhbWV0ZXJzOiAlZFxuIiwgc2l6ZSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJ fQorCQlpZiAoaW5wdXRbMF0gIT0gMSkgeworCQkJcHJfaW5mbygiSW52YWxpZCBNQ0xLX1ZERENf VEFCTEUgaW5kZXg6ICVsZFxuIiwgaW5wdXRbMF0pOworCQkJcHJfaW5mbygiU3VwcG9ydGVkIGlu ZGljZXM6IFsxOm1heF1cbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJcmV0ID0gbmF2 aTEwX29kX3NldHRpbmdfY2hlY2tfcmFuZ2Uob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09EU0VUVElO R19VQ0xLRk1BWCwgaW5wdXRbMV0pOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJb2Rf dGFibGUtPlVjbGtGbWF4ID0gaW5wdXRbMV07CisJCWJyZWFrOworCWNhc2UgUFBfT0RfQ09NTUlU X0RQTV9UQUJMRToKKwkJbmF2aTEwX2R1bXBfb2RfdGFibGUob2RfdGFibGUpOworCQlyZXQgPSBz bXVfdXBkYXRlX3RhYmxlKHNtdSwgU01VX1RBQkxFX09WRVJEUklWRSwgMCwgKHZvaWQgKilvZF90 YWJsZSwgdHJ1ZSk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIGltcG9ydCBv dmVyZHJpdmUgdGFibGUhXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJbXV0ZXhfbG9jaygm KHNtdS0+bXV0ZXgpKTsKKwkJcmV0ID0gc211X2hhbmRsZV90YXNrKHNtdSwgc211LT5zbXVfZHBt LmRwbV9sZXZlbCwgQU1EX1BQX1RBU0tfUkVBREpVU1RfUE9XRVJfU1RBVEUpOworCQltdXRleF91 bmxvY2soJihzbXUtPm11dGV4KSk7CisJCWlmIChyZXQpIHsKKwkJCXJldHVybiByZXQ7CisJCX0K KwkJYnJlYWs7CisJY2FzZSBQUF9PRF9FRElUX1ZERENfQ1VSVkU6CisJCS8vIFRPRE86IGltcGxl bWVudAorCQlyZXR1cm4gLUVOT1NZUzsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT1NZUzsKKwl9 CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBwcHRhYmxlX2Z1bmNzIG5h dmkxMF9wcHRfZnVuY3MgPSB7CiAJLnRhYmxlc19pbml0ID0gbmF2aTEwX3RhYmxlc19pbml0LAog CS5hbGxvY19kcG1fY29udGV4dCA9IG5hdmkxMF9hbGxvY2F0ZV9kcG1fY29udGV4dCwKQEAgLTE2 MjksNiArMTgxMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHB0YWJsZV9mdW5jcyBuYXZpMTBf cHB0X2Z1bmNzID0gewogCS5nZXRfdGhlcm1hbF90ZW1wZXJhdHVyZV9yYW5nZSA9IG5hdmkxMF9n ZXRfdGhlcm1hbF90ZW1wZXJhdHVyZV9yYW5nZSwKIAkuZGlzcGxheV9kaXNhYmxlX21lbW9yeV9j bG9ja19zd2l0Y2ggPSBuYXZpMTBfZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gs CiAJLmdldF9wb3dlcl9saW1pdCA9IG5hdmkxMF9nZXRfcG93ZXJfbGltaXQsCisJLnNldF9kZWZh dWx0X29kX3NldHRpbmdzID0gbmF2aTEwX3NldF9kZWZhdWx0X29kX3NldHRpbmdzLAorCS5vZF9l ZGl0X2RwbV90YWJsZSA9IG5hdmkxMF9vZF9lZGl0X2RwbV90YWJsZSwKIH07CiAKIHZvaWQgbmF2 aTEwX3NldF9wcHRfZnVuY3Moc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCmluZGV4IGM1MjU3YWUzMTg4YS4uMDI5ZjA4OTYx NDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYwpAQCAtMTgy OCwzICsxODI4LDMwIEBAIHZvaWQgc211X3YxMV8wX3NldF9zbXVfZnVuY3Moc3RydWN0IHNtdV9j b250ZXh0ICpzbXUpCiAJCXByX3dhcm4oIlVua25vd24gYXNpYyBmb3Igc211MTFcbiIpOwogCX0K IH0KKworaW50IHNtdV92MTFfMF9zZXRfZGVmYXVsdF9vZF9zZXR0aW5ncyhzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSwgYm9vbCBpbml0aWFsaXplLCBzaXplX3Qgb3ZlcmRyaXZlX3RhYmxlX3NpemUp Cit7CisJc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJsZV9jb250ZXh0ID0gJnNtdS0+c211 X3RhYmxlOworCWludCByZXQgPSAwOworCisJaWYgKGluaXRpYWxpemUpIHsKKwkJaWYgKHRhYmxl X2NvbnRleHQtPm92ZXJkcml2ZV90YWJsZSkgeworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJ dGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlID0ga3phbGxvYyhvdmVyZHJpdmVfdGFibGVf c2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxl KSB7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQlyZXQgPSBzbXVfdXBkYXRlX3RhYmxlKHNt dSwgU01VX1RBQkxFX09WRVJEUklWRSwgMCwgdGFibGVfY29udGV4dC0+b3ZlcmRyaXZlX3RhYmxl LCBmYWxzZSk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIGV4cG9ydCBvdmVy ZHJpdmUgdGFibGUhXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJcmV0ID0gc211X3Vw ZGF0ZV90YWJsZShzbXUsIFNNVV9UQUJMRV9PVkVSRFJJVkUsIDAsIHRhYmxlX2NvbnRleHQtPm92 ZXJkcml2ZV90YWJsZSwgdHJ1ZSk7CisJaWYgKHJldCkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBp bXBvcnQgb3ZlcmRyaXZlIHRhYmxlIVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiBy ZXQ7Cit9Ci0tIAoyLjIzLjAKCgpGcm9tIDdiYzA3ZTBiMDUzMzgxY2U3NDA5ZDgyNTFiZTE4Mzgw ZmI2YjNjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCk1lc3NhZ2UtSWQ6IDw3YmMwN2UwYjA1 MzM4MWNlNzQwOWQ4MjUxYmUxODM4MGZiNmIzYzQzLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0Bn bWFpbC5jb20+CkluLVJlcGx5LVRvOiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdt YWlsLmNvbT4KUmVmZXJlbmNlczogPGNvdmVyLjE1NzMxNTE0MzQuZ2l0Lm1jb2ZmaW4xM0BnbWFp bC5jb20+CkZyb206IE1hdHQgQ29mZmluIDxtY29mZmluMTNAZ21haWwuY29tPgpEYXRlOiBUdWUs IDUgTm92IDIwMTkgMTI6Mzk6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIIDIvM10gZHJtL2FtZGdw dS9uYXZpMTA6IGltcGxlbWVudCBHRlhDTEtfQ1VSVkUgb3ZlcmRyaXZlClRvOiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwoKW1doeV0KQmVmb3JlIHRoaXMgcGF0Y2gsIHRoZXJlIHdhcyBu byB3YXkgdG8gc2V0IHRoZSBnZnhjbGsgdm9sdGFnZSBjdXJ2ZSBpbgp0aGUgb3ZlcmRyaXZlIHNl dHRpbmdzIGZvciBuYXZpMTAgdGhyb3VnaCBwcF9vZF9jbGtfdm9sdGFnZQoKW0hvd10KQWRkIHRo ZSByZXF1aXJlZCBpbXBsZW1lbnRhdGlvbiB0byBuYXZpMTAncyBwcHQgZHBtIHRhYmxlIGVkaXRp bmcKaW1wbGVtZW50YXRpb24sIHNpbWlsYXIgdG8gdGhlIHZlZ2EyMCBpbXBsZW1lbnRhdGlvbiBh bmQgaW50ZXJmYWNlLgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkxMF9w cHQuYyB8IDU1ICsrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L25hdmkxMF9wcHQuaCB8ICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZp MTBfcHB0LmMKaW5kZXggNmQwZTUxMWFkMDkzLi5lNzE3MzI4ZjkzY2UgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L25hdmkxMF9wcHQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmMKQEAgLTE2NjcsNiArMTY2Nyw4IEBAIHN0 YXRpYyBpbnQgbmF2aTEwX29kX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211 LCBlbnVtIFBQX09EX0RQTV9UQUJMCiAJc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJsZV9j b250ZXh0ID0gJnNtdS0+c211X3RhYmxlOwogCU92ZXJEcml2ZVRhYmxlX3QgKm9kX3RhYmxlOwog CXN0cnVjdCBzbXVfMTFfMF9vdmVyZHJpdmVfdGFibGUgKm9kX3NldHRpbmdzOworCWVudW0gU01V XzExXzBfT0RTRVRUSU5HX0lEIGZyZXFfc2V0dGluZywgdm9sdGFnZV9zZXR0aW5nOworCXVpbnQx Nl90ICpmcmVxX3B0ciwgKnZvbHRhZ2VfcHRyOwogCW9kX3RhYmxlID0gKE92ZXJEcml2ZVRhYmxl X3QgKil0YWJsZV9jb250ZXh0LT5vdmVyZHJpdmVfdGFibGU7CiAKIAlpZiAoIXNtdS0+b2RfZW5h YmxlZCkgewpAQCAtMTc2Niw4ICsxNzY4LDU3IEBAIHN0YXRpYyBpbnQgbmF2aTEwX29kX2VkaXRf ZHBtX3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIFBQX09EX0RQTV9UQUJMCiAJ CX0KIAkJYnJlYWs7CiAJY2FzZSBQUF9PRF9FRElUX1ZERENfQ1VSVkU6Ci0JCS8vIFRPRE86IGlt cGxlbWVudAotCQlyZXR1cm4gLUVOT1NZUzsKKwkJaWYgKCFuYXZpMTBfb2RfZmVhdHVyZV9pc19z dXBwb3J0ZWQob2Rfc2V0dGluZ3MsIFNNVV8xMV8wX09ERkVBVFVSRV9HRlhDTEtfQ1VSVkUpKSB7 CisJCQlwcl93YXJuKCJHRlhDTEtfQ1VSVkUgbm90IHN1cHBvcnRlZCFcbiIpOworCQkJcmV0dXJu IC1FTk9UU1VQUDsKKwkJfQorCQlpZiAoc2l6ZSA8IDMpIHsKKwkJCXByX2luZm8oImludmFsaWQg bnVtYmVyIG9mIHBhcmFtZXRlcnM6ICVkXG4iLCBzaXplKTsKKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisJCWlmICghb2RfdGFibGUpIHsKKwkJCXByX2luZm8oIk92ZXJkcml2ZSBpcyBub3QgaW5p dGlhbGl6ZWRcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlzd2l0Y2ggKGlucHV0 WzBdKSB7CisJCWNhc2UgMDoKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19W RERHRlhDVVJWRUZSRVFfUDE7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJ TkdfVkRER0ZYQ1VSVkVWT0xUQUdFX1AxOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNs a0ZyZXExOworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQxOworCQkJYnJl YWs7CisJCWNhc2UgMToKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19WRERH RlhDVVJWRUZSRVFfUDI7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdf VkRER0ZYQ1VSVkVWT0xUQUdFX1AyOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa0Zy ZXEyOworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQyOworCQkJYnJlYWs7 CisJCWNhc2UgMjoKKwkJCWZyZXFfc2V0dGluZyA9IFNNVV8xMV8wX09EU0VUVElOR19WRERHRlhD VVJWRUZSRVFfUDM7CisJCQl2b2x0YWdlX3NldHRpbmcgPSBTTVVfMTFfMF9PRFNFVFRJTkdfVkRE R0ZYQ1VSVkVWT0xUQUdFX1AzOworCQkJZnJlcV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa0ZyZXEz OworCQkJdm9sdGFnZV9wdHIgPSAmb2RfdGFibGUtPkdmeGNsa1ZvbHQzOworCQkJYnJlYWs7CisJ CWRlZmF1bHQ6CisJCQlwcl9pbmZvKCJJbnZhbGlkIFZERENfQ1VSVkUgaW5kZXg6ICVsZFxuIiwg aW5wdXRbMF0pOworCQkJcHJfaW5mbygiU3VwcG9ydGVkIGluZGljZXM6IFswLCAxLCAyXVxuIik7 CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlyZXQgPSBuYXZpMTBfb2Rfc2V0dGluZ19jaGVj a19yYW5nZShvZF9zZXR0aW5ncywgZnJlcV9zZXR0aW5nLCBpbnB1dFsxXSk7CisJCWlmIChyZXQp CisJCQlyZXR1cm4gcmV0OworCQkvLyBBbGxvdyBzZXR0aW5nIHplcm8gdG8gZGlzYWJsZSB0aGUg T3ZlckRyaXZlIFZEREMgY3VydmUKKwkJaWYgKGlucHV0WzJdICE9IDApIHsKKwkJCXJldCA9IG5h dmkxMF9vZF9zZXR0aW5nX2NoZWNrX3JhbmdlKG9kX3NldHRpbmdzLCB2b2x0YWdlX3NldHRpbmcs IGlucHV0WzJdKTsKKwkJCWlmIChyZXQpCisJCQkJcmV0dXJuIHJldDsKKwkJfQorCQkqZnJlcV9w dHIgPSBpbnB1dFsxXTsKKwkJKnZvbHRhZ2VfcHRyID0gKCh1aW50MTZfdClpbnB1dFsyXSkgKiBO QVZJMTBfVk9MVEFHRV9TQ0FMRTsKKwkJcHJfZGVidWcoIk9EOiBzZXQgY3VydmUgJWxkOiAoJWQs ICVkKVxuIiwgaW5wdXRbMF0sICpmcmVxX3B0ciwgKnZvbHRhZ2VfcHRyKTsKKwkJbmF2aTEwX2R1 bXBfb2RfdGFibGUob2RfdGFibGUpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVO T1NZUzsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZp MTBfcHB0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9uYXZpMTBfcHB0LmgKaW5k ZXggNjIwZmYxN2MyZmVmLi40ODRkMmM1OGZjMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L25hdmkxMF9wcHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmgKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgTkFWSTEwX1BF QUtfU0NMS19YVCAgCQkoMTc1NSkKICNkZWZpbmUgTkFWSTEwX1BFQUtfU0NMS19YTCAgCQkoMTYy NSkKIAorI2RlZmluZSBOQVZJMTBfVk9MVEFHRV9TQ0FMRSAoNCkKKwogZXh0ZXJuIHZvaWQgbmF2 aTEwX3NldF9wcHRfZnVuY3Moc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpOwogCiAjZW5kaWYKLS0g CjIuMjMuMAoKCkZyb20gZTA5MWM0MDg1ZWNjNjY5ZWE5MDdmZTVkODUxNWYxNDU4Njg2M2Y5YiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKTWVzc2FnZS1JZDogPGUwOTFjNDA4NWVjYzY2OWVhOTA3 ZmU1ZDg1MTVmMTQ1ODY4NjNmOWIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4K SW4tUmVwbHktVG86IDxjb3Zlci4xNTczMTUxNDM0LmdpdC5tY29mZmluMTNAZ21haWwuY29tPgpS ZWZlcmVuY2VzOiA8Y292ZXIuMTU3MzE1MTQzNC5naXQubWNvZmZpbjEzQGdtYWlsLmNvbT4KRnJv bTogTWF0dCBDb2ZmaW4gPG1jb2ZmaW4xM0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNiBOb3YgMjAx OSAxMjowNToyOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMy8zXSBkcm0vYW1kZ3B1L25hdmkxMDog SW1wbGVtZW50IG9kIGNsayBwcmludGluZwpUbzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKCltXaHldCkJlZm9yZSB0aGlzIHBhdGNoLCBuYXZpMTAgb3ZlcmRyaXZlIHNldHRpbmdzIGNv dWxkIG5vdCBiZSBwcmludGVkIHZpYQpwcF9vZF9jbGtfdm9sdGFnZQoKW0hvd10KSW1wbGVtZW50 IHByaW50aW5nIGZvciB0aGUgb3ZlcmRyaXZlIHNldHRpbmdzIGZvciB0aGUgZm9sbG93aW5nIGNs b2NrcwppbiBuYXZpMTAncyBwcHQgcHJpbnRfY2xrX2xldmVscyBpbXBsZW1lbnRhdGlvbjoKCiog U01VX09EX1NDTEsKKiBTTVVfT0RfTUNMSwoqIFNNVV9PRF9WRERDX0NVUlZFCi0tLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5jIHwgNTYgKysrKysrKysrKysrKysr KysrKystLQogMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvbmF2aTEwX3BwdC5jCmluZGV4IGU3MTcz MjhmOTNjZS4uNTA2YWY1OWZmNDVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9uYXZpMTBfcHB0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv bmF2aTEwX3BwdC5jCkBAIC02NzcsMTMgKzY3NywyNSBAQCBzdGF0aWMgYm9vbCBuYXZpMTBfaXNf c3VwcG9ydF9maW5lX2dyYWluZWRfZHBtKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBlbnVtIHNt dQogCXJldHVybiBkcG1fZGVzYy0+U25hcFRvRGlzY3JldGUgPT0gMCA/IHRydWUgOiBmYWxzZTsK IH0KIAorc3RhdGljIGlubGluZSBib29sIG5hdmkxMF9vZF9mZWF0dXJlX2lzX3N1cHBvcnRlZChz dHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZlX3RhYmxlICpvZF90YWJsZSwgZW51bSBTTVVfMTFfMF9P REZFQVRVUkVfSUQgZmVhdHVyZSkKK3sKKwlyZXR1cm4gb2RfdGFibGUtPmNhcFtmZWF0dXJlXTsK K30KKworCiBzdGF0aWMgaW50IG5hdmkxMF9wcmludF9jbGtfbGV2ZWxzKHN0cnVjdCBzbXVfY29u dGV4dCAqc211LAogCQkJZW51bSBzbXVfY2xrX3R5cGUgY2xrX3R5cGUsIGNoYXIgKmJ1ZikKIHsK KwlPdmVyRHJpdmVUYWJsZV90ICpvZF90YWJsZTsKKwlzdHJ1Y3Qgc211XzExXzBfb3ZlcmRyaXZl X3RhYmxlICpvZF9zZXR0aW5nczsKKwl1aW50MTZfdCAqY3VydmVfc2V0dGluZ3M7CiAJaW50IGks IHNpemUgPSAwLCByZXQgPSAwOwogCXVpbnQzMl90IGN1cl92YWx1ZSA9IDAsIHZhbHVlID0gMCwg Y291bnQgPSAwOwogCXVpbnQzMl90IGZyZXFfdmFsdWVzWzNdID0gezB9OwogCXVpbnQzMl90IG1h cmtfaW5kZXggPSAwOworCXN0cnVjdCBzbXVfdGFibGVfY29udGV4dCAqdGFibGVfY29udGV4dCA9 ICZzbXUtPnNtdV90YWJsZTsKKwlvZF90YWJsZSA9IChPdmVyRHJpdmVUYWJsZV90ICopdGFibGVf Y29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlOworCW9kX3NldHRpbmdzID0gc211LT5vZF9zZXR0aW5n czsKIAogCXN3aXRjaCAoY2xrX3R5cGUpIHsKIAljYXNlIFNNVV9HRlhDTEs6CkBAIC03MzQsNiAr NzQ2LDQ1IEBAIHN0YXRpYyBpbnQgbmF2aTEwX3ByaW50X2Nsa19sZXZlbHMoc3RydWN0IHNtdV9j b250ZXh0ICpzbXUsCiAKIAkJfQogCQlicmVhazsKKwljYXNlIFNNVV9PRF9TQ0xLOgorCQlpZiAo IXNtdS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3NldHRpbmdzKQorCQkJYnJlYWs7 CisJCWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVkKG9kX3NldHRpbmdzLCBTTVVf MTFfMF9PREZFQVRVUkVfR0ZYQ0xLX0xJTUlUUykpCisJCQlicmVhazsKKwkJc2l6ZSArPSBzcHJp bnRmKGJ1ZiArIHNpemUsICJPRF9TQ0xLOlxuIik7CisJCXNpemUgKz0gc3ByaW50ZihidWYgKyBz aXplLCAiMDogJXVNaHpcbjE6ICV1TWh6XG4iLCBvZF90YWJsZS0+R2Z4Y2xrRm1pbiwgb2RfdGFi bGUtPkdmeGNsa0ZtYXgpOworCQlicmVhazsKKwljYXNlIFNNVV9PRF9NQ0xLOgorCQlpZiAoIXNt dS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3NldHRpbmdzKQorCQkJYnJlYWs7CisJ CWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVkKG9kX3NldHRpbmdzLCBTTVVfMTFf MF9PREZFQVRVUkVfVUNMS19NQVgpKQorCQkJYnJlYWs7CisJCXNpemUgKz0gc3ByaW50ZihidWYg KyBzaXplLCAiT0RfTUNMSzpcbiIpOworCQlzaXplICs9IHNwcmludGYoYnVmICsgc2l6ZSwgIjA6 ICV1TUh6XG4iLCBvZF90YWJsZS0+VWNsa0ZtYXgpOworCQlicmVhazsKKwljYXNlIFNNVV9PRF9W RERDX0NVUlZFOgorCQlpZiAoIXNtdS0+b2RfZW5hYmxlZCB8fCAhb2RfdGFibGUgfHwgIW9kX3Nl dHRpbmdzKQorCQkJYnJlYWs7CisJCWlmICghbmF2aTEwX29kX2ZlYXR1cmVfaXNfc3VwcG9ydGVk KG9kX3NldHRpbmdzLCBTTVVfMTFfMF9PREZFQVRVUkVfR0ZYQ0xLX0NVUlZFKSkKKwkJCWJyZWFr OworCQlzaXplICs9IHNwcmludGYoYnVmICsgc2l6ZSwgIk9EX1ZERENfQ1VSVkU6XG4iKTsKKwkJ Zm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJc3dpdGNoIChpKSB7CisJCQljYXNlIDA6CisJ CQkJY3VydmVfc2V0dGluZ3MgPSAmb2RfdGFibGUtPkdmeGNsa0ZyZXExOworCQkJCWJyZWFrOwor CQkJY2FzZSAxOgorCQkJCWN1cnZlX3NldHRpbmdzID0gJm9kX3RhYmxlLT5HZnhjbGtGcmVxMjsK KwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQljdXJ2ZV9zZXR0aW5ncyA9ICZvZF90YWJsZS0+ R2Z4Y2xrRnJlcTM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQor CQkJc2l6ZSArPSBzcHJpbnRmKGJ1ZiArIHNpemUsICIlZDogJXVNSHogQCAldW1WXG4iLCBpLCBj dXJ2ZV9zZXR0aW5nc1swXSwgY3VydmVfc2V0dGluZ3NbMV0gLyBOQVZJMTBfVk9MVEFHRV9TQ0FM RSk7CisJCX0KKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQpAQCAtMTYwMCwxMSAr MTY1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuYXZpMTBfZHVtcF9vZF90YWJsZShPdmVyRHJp dmVUYWJsZV90ICpvZF90YWJsZSkgewogCXByX2RlYnVnKCJPRDogT3ZlckRyaXZlUGN0OiAlZFxu Iiwgb2RfdGFibGUtPk92ZXJEcml2ZVBjdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBuYXZp MTBfb2RfZmVhdHVyZV9pc19zdXBwb3J0ZWQoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJs ZSAqb2RfdGFibGUsIGVudW0gU01VXzExXzBfT0RGRUFUVVJFX0lEIGZlYXR1cmUpCi17Ci0JcmV0 dXJuIG9kX3RhYmxlLT5jYXBbZmVhdHVyZV07Ci19Ci0KIHN0YXRpYyBpbnQgbmF2aTEwX29kX3Nl dHRpbmdfY2hlY2tfcmFuZ2Uoc3RydWN0IHNtdV8xMV8wX292ZXJkcml2ZV90YWJsZSAqb2RfdGFi bGUsIGVudW0gU01VXzExXzBfT0RTRVRUSU5HX0lEIHNldHRpbmcsIHVpbnQzMl90IHZhbHVlKQog ewogCWlmICh2YWx1ZSA8IG9kX3RhYmxlLT5taW5bc2V0dGluZ10pIHsKLS0gCjIuMjMuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4