From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harry Wentland Subject: [PATCH v2 11/16] drm/amd/display: Refactor edid read. Date: Mon, 3 Apr 2017 19:43:13 -0400 Message-ID: <20170403234318.26100-12-harry.wentland@amd.com> References: <20170403234318.26100-1-harry.wentland@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170403234318.26100-1-harry.wentland-5C7GfCeVMHo@public.gmane.org> 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: Andrey Grodzovsky RnJvbTogQW5kcmV5IEdyb2R6b3Zza3kgPEFuZHJleS5Hcm9kem92c2t5QGFtZC5jb20+CgpBbGxv dyBMaW51eCB0byB1c2UgRFJNIHByb3ZpZGVkIEVESUQgcmVhZCBmdW5jdGlvYWxpdHkKYnkgbW92 aW5nICBEQUwgZWRpZCBpbXBsZW1lbnRhdGlvbiB0byBtb2R1bGUgaGVuY2UKcmVtb3ZpbmcgdGhp cyBjb2RlIGZyb20gREMgYnkgdGhpcyBjbGVhbmluZyB1cCBEQwpjb2RlIGZvciB1cHN0cmVhbS4K CnYyOiBSZW1vdmluZyBkZGNfc2VydmljZS4gTm8gbW9yZSBuZWVkIGZvciBpdC4KCkNoYW5nZS1J ZDogSTdjNzNhZTYzMTAyZmEwNmY4NmIzNDdmMjFlZTI4OTAyY2E0ZjdjNTgKU2lnbmVkLW9mZi1i eTogQW5kcmV5IEdyb2R6b3Zza3kgPEFuZHJleS5Hcm9kem92c2t5QGFtZC5jb20+CkFja2VkLWJ5 OiBIYXJyeSBXZW50bGFuZCA8SGFycnkuV2VudGxhbmRAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IFRv bnkgQ2hlbmcgPFRvbnkuQ2hlbmdAYW1kLmNvbT4KLS0tCiAuLi4vZHJtL2FtZC9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG1faGVscGVycy5jICB8ICA0NyArKysKIC4uLi9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jICAgIHwgIDQ3ICsrLQogLi4uL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmggICAgfCAgIDIgKy0KIC4uLi9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90eXBlcy5jICAgIHwgIDEwICstCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kYy5jICAgICAgICAgICB8ICA3OCArKyst LQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGluay5jICAgICAgfCAg NTMgKy0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kZGMu YyAgfCAzMzcgKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvY29yZS9kY19saW5rX2RwLmMgICB8ICAzMCArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RjLmggICAgICAgICAgICAgICAgfCAgMjEgKy0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY190eXBlcy5oICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kbV9oZWxwZXJzLmggICAgICAgIHwgIDEwICsKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pMmNhdXgvaTJjYXV4LmMgICAgIHwgICA5ICstCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2RjX2xpbmtfZGRjLmggICB8ICAzOCArKy0KIC4u Li9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oICAgIHwgIDI4IC0t CiAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9pbmNsdWRlL2kyY2F1eF9pbnRlcmZhY2UuaCB8ICAg MyArCiAxNSBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9ucygrKSwgNDY1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtX2hlbHBlcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0v YW1kZ3B1X2RtX2hlbHBlcnMuYwppbmRleCBjYTRmYTVjOGQ4YmYuLjM0MDE3ODBhZjJkMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1f aGVscGVycy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtX2hlbHBlcnMuYwpAQCAtNDM0LDMgKzQzNCw1MCBAQCBib29sIGRtX2hlbHBlcnNfc3Vi bWl0X2kyYygKIAogCXJldHVybiByZXN1bHQ7CiB9CisKK2VudW0gZGNfZWRpZF9zdGF0dXMgZG1f aGVscGVyc19yZWFkX2xvY2FsX2VkaWQoCisJCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCisJCXN0 cnVjdCBkY19saW5rICpsaW5rLAorCQlzdHJ1Y3QgZGNfc2luayAqc2luaykKK3sKKwlzdHJ1Y3Qg YW1kZ3B1X2Nvbm5lY3RvciAqYWNvbm5lY3RvciA9IGxpbmstPnByaXY7CisJc3RydWN0IGkyY19h ZGFwdGVyICpkZGM7CisJaW50IHJldHJ5ID0gMzsKKwllbnVtIGRjX2VkaWRfc3RhdHVzIGVkaWRf c3RhdHVzOworCXN0cnVjdCBlZGlkICplZGlkOworCisJaWYgKGxpbmstPmF1eF9tb2RlKQorCQlk ZGMgPSAmYWNvbm5lY3Rvci0+ZG1fZHBfYXV4LmF1eC5kZGM7CisJZWxzZQorCQlkZGMgPSAmYWNv bm5lY3Rvci0+aTJjLT5iYXNlOworCisJLyogc29tZSBkb25nbGVzIHJlYWQgZWRpZCBpbmNvcnJl Y3RseSB0aGUgZmlyc3QgdGltZSwKKwkgKiBkbyBjaGVjayBzdW0gYW5kIHJldHJ5IHRvIG1ha2Ug c3VyZSByZWFkIGNvcnJlY3QgZWRpZC4KKwkgKi8KKwlkbyB7CisKKwkJZWRpZCA9IGRybV9nZXRf ZWRpZCgmYWNvbm5lY3Rvci0+YmFzZSwgZGRjKTsKKworCQlpZiAoIWVkaWQpCisJCQlyZXR1cm4g RURJRF9OT19SRVNQT05TRTsKKworCQlzaW5rLT5kY19lZGlkLmxlbmd0aCA9IEVESURfTEVOR1RI ICogKGVkaWQtPmV4dGVuc2lvbnMgKyAxKTsKKwkJbWVtbW92ZShzaW5rLT5kY19lZGlkLnJhd19l ZGlkLCAodWludDhfdCAqKWVkaWQsIHNpbmstPmRjX2VkaWQubGVuZ3RoKTsKKworCQkvKiBXZSBk b24ndCBuZWVkIHRoZSBvcmlnaW5hbCBlZGlkIGFueW1vcmUgKi8KKwkJa2ZyZWUoZWRpZCk7CisK KwkJZWRpZF9zdGF0dXMgPSBkbV9oZWxwZXJzX3BhcnNlX2VkaWRfY2FwcygKKwkJCQkJCWN0eCwK KwkJCQkJCSZzaW5rLT5kY19lZGlkLAorCQkJCQkJJnNpbmstPmVkaWRfY2Fwcyk7CisKKwl9IHdo aWxlIChlZGlkX3N0YXR1cyA9PSBFRElEX0JBRF9DSEVDS1NVTSAmJiAtLXJldHJ5ID4gMCk7CisK KwlpZiAoZWRpZF9zdGF0dXMgIT0gRURJRF9PSykKKwkJRFJNX0VSUk9SKCJFRElEIGVycjogJWQs IG9uIGNvbm5lY3RvcjogJXMiLAorCQkJCWVkaWRfc3RhdHVzLAorCQkJCWFjb25uZWN0b3ItPmJh c2UubmFtZSk7CisKKwlyZXR1cm4gZWRpZF9zdGF0dXM7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5j CmluZGV4IDkxYjM2MTBhMzY1NC4uMGU3OWJhOTIwYjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMu YwpAQCAtODEsMjQgKzgxLDQzIEBAIHN0YXRpYyBzc2l6ZV90IGRtX2RwX2F1eF90cmFuc2Zlcihz dHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtX2RldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IGRybV9kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkYyAqZGMgPSBh ZGV2LT5kbS5kYzsKKwllbnVtIGkyY19tb3RfbW9kZSBtb3QgPSAobXNnLT5yZXF1ZXN0ICYgRFBf QVVYX0kyQ19NT1QpID8gSTJDX01PVF9UUlVFIDogSTJDX01PVF9GQUxTRTsKIAlib29sIHJlczsK IAotCXN3aXRjaCAobXNnLT5yZXF1ZXN0KSB7CisJc3dpdGNoIChtc2ctPnJlcXVlc3QgJiB+RFBf QVVYX0kyQ19NT1QpIHsKIAljYXNlIERQX0FVWF9OQVRJVkVfUkVBRDoKLQkJcmVzID0gZGNfcmVh ZF9kcGNkKAotCQkJZGMsCi0JCQlUT19ETV9BVVgoYXV4KS0+bGlua19pbmRleCwKLQkJCW1zZy0+ YWRkcmVzcywKLQkJCW1zZy0+YnVmZmVyLAotCQkJbXNnLT5zaXplKTsKKwkJcmVzID0gZGNfcmVh ZF9hdXhfZHBjZCgKKwkJCQlkYywKKwkJCQlUT19ETV9BVVgoYXV4KS0+bGlua19pbmRleCwKKwkJ CQltc2ctPmFkZHJlc3MsCisJCQkJbXNnLT5idWZmZXIsCisJCQkJbXNnLT5zaXplKTsKIAkJYnJl YWs7CiAJY2FzZSBEUF9BVVhfTkFUSVZFX1dSSVRFOgotCQlyZXMgPSBkY193cml0ZV9kcGNkKAot CQkJZGMsCi0JCQlUT19ETV9BVVgoYXV4KS0+bGlua19pbmRleCwKLQkJCW1zZy0+YWRkcmVzcywK LQkJCW1zZy0+YnVmZmVyLAotCQkJbXNnLT5zaXplKTsKKwkJcmVzID0gZGNfd3JpdGVfYXV4X2Rw Y2QoCisJCQkJZGMsCisJCQkJVE9fRE1fQVVYKGF1eCktPmxpbmtfaW5kZXgsCisJCQkJbXNnLT5h ZGRyZXNzLAorCQkJCW1zZy0+YnVmZmVyLAorCQkJCW1zZy0+c2l6ZSk7CisJCWJyZWFrOworCWNh c2UgRFBfQVVYX0kyQ19SRUFEOgorCQlyZXMgPSBkY19yZWFkX2F1eF9pMmMoCisJCQkJZGMsCisJ CQkJVE9fRE1fQVVYKGF1eCktPmxpbmtfaW5kZXgsCisJCQkJbW90LAorCQkJCW1zZy0+YWRkcmVz cywKKwkJCQltc2ctPmJ1ZmZlciwKKwkJCQltc2ctPnNpemUpOworCQlicmVhazsKKwljYXNlIERQ X0FVWF9JMkNfV1JJVEU6CisJCXJlcyA9IGRjX3dyaXRlX2F1eF9pMmMoCisJCQkJZGMsCisJCQkJ VE9fRE1fQVVYKGF1eCktPmxpbmtfaW5kZXgsCisJCQkJbW90LAorCQkJCW1zZy0+YWRkcmVzcywK KwkJCQltc2ctPmJ1ZmZlciwKKwkJCQltc2ctPnNpemUpOwogCQlicmVhazsKIAlkZWZhdWx0Ogog CQlyZXR1cm4gMDsKQEAgLTQyMCw3ICs0MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfY2JzIGRtX21zdF9jYnMgPSB7CiAJLnJlZ2lzdGVyX2Nvbm5lY3RvciA9 IGRtX2RwX21zdF9yZWdpc3Rlcl9jb25uZWN0b3IKIH07CiAKLXZvaWQgYW1kZ3B1X2RtX2luaXRp YWxpemVfbXN0X2Nvbm5lY3RvcigKK3ZvaWQgYW1kZ3B1X2RtX2luaXRpYWxpemVfZHBfY29ubmVj dG9yKAogCXN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKIAlzdHJ1Y3QgYW1kZ3B1 X2Nvbm5lY3RvciAqYWNvbm5lY3RvcikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmgKaW5kZXggNjEz MGQ2MmFjNjVjLi40MTgwNjFmM2I0NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5oCkBAIC0yOSw3 ICsyOSw3IEBACiBzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlcjsKIHN0cnVjdCBhbWRncHVf Y29ubmVjdG9yOwogCi12b2lkIGFtZGdwdV9kbV9pbml0aWFsaXplX21zdF9jb25uZWN0b3IoCit2 b2lkIGFtZGdwdV9kbV9pbml0aWFsaXplX2RwX2Nvbm5lY3RvcigKIAlzdHJ1Y3QgYW1kZ3B1X2Rp c3BsYXlfbWFuYWdlciAqZG0sCiAJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFjb25uZWN0b3Ip OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbV90eXBlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG1fdHlwZXMuYwppbmRleCBhMjYwYmI1ZmFkM2IuLjQ5MDRkMTE1NzYyMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHlw ZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9k bV90eXBlcy5jCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBpbnQgYW1kZ3B1X2RtX2Nvbm5lY3Rvcl9p bml0KAogCiAJaWYgKGNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5 UG9ydAogCQl8fCBjb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQotCQlh bWRncHVfZG1faW5pdGlhbGl6ZV9tc3RfY29ubmVjdG9yKGRtLCBhY29ubmVjdG9yKTsKKwkJYW1k Z3B1X2RtX2luaXRpYWxpemVfZHBfY29ubmVjdG9yKGRtLCBhY29ubmVjdG9yKTsKIAogI2lmIGRl ZmluZWQoQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UpIHx8XAogCWRlZmluZWQoQ09ORklH X0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0VfTU9EVUxFKQpAQCAtMzIxMSw5ICszMjExLDExIEBAIHN0 YXRpYyBib29sIGlzX2RwX2NhcGFibGVfd2l0aG91dF90aW1pbmdfbXNhKAogCXVpbnQ4X3QgZHBj ZF9kYXRhOwogCWJvb2wgY2FwYWJsZSA9IGZhbHNlOwogCWlmIChhbWRncHVfY29ubmVjdG9yLT5k Y19saW5rICYmCi0JICAgIGRjX3JlYWRfZHBjZChkYywgYW1kZ3B1X2Nvbm5lY3Rvci0+ZGNfbGlu ay0+bGlua19pbmRleCwKLQkJCSBEUF9ET1dOX1NUUkVBTV9QT1JUX0NPVU5ULAotCQkJICZkcGNk X2RhdGEsIHNpemVvZihkcGNkX2RhdGEpKSApCisJCWRjX3JlYWRfYXV4X2RwY2QoCisJCQlkYywK KwkJCWFtZGdwdV9jb25uZWN0b3ItPmRjX2xpbmstPmxpbmtfaW5kZXgsCisJCQlEUF9ET1dOX1NU UkVBTV9QT1JUX0NPVU5ULAorCQkJJmRwY2RfZGF0YSwgc2l6ZW9mKGRwY2RfZGF0YSkpKQogCQlj YXBhYmxlID0gKGRwY2RfZGF0YSAmIERQX01TQV9USU1JTkdfUEFSX0lHTk9SRUQpID8gdHJ1ZTpm YWxzZTsKIAogCXJldHVybiBjYXBhYmxlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2NvcmUvZGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9j b3JlL2RjLmMKaW5kZXggYjM4OTEyMjhiNDk5Li40MGE4MDAxNTVmZTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgdm9pZCBk Y19yZXN1bWUoY29uc3Qgc3RydWN0IGRjICpkYykKIAkJY29yZV9saW5rX3Jlc3VtZShjb3JlX2Rj LT5saW5rc1tpXSk7CiB9CiAKLWJvb2wgZGNfcmVhZF9kcGNkKAorYm9vbCBkY19yZWFkX2F1eF9k cGNkKAogCQlzdHJ1Y3QgZGMgKmRjLAogCQl1aW50MzJfdCBsaW5rX2luZGV4LAogCQl1aW50MzJf dCBhZGRyZXNzLApAQCAtMTU2NSw1NiArMTU2NSwxMDAgQEAgYm9vbCBkY19yZWFkX2RwY2QoCiAJ c3RydWN0IGNvcmVfbGluayAqbGluayA9IGNvcmVfZGMtPmxpbmtzW2xpbmtfaW5kZXhdOwogCWVu dW0gZGRjX3Jlc3VsdCByID0gZGFsX2RkY19zZXJ2aWNlX3JlYWRfZHBjZF9kYXRhKAogCQkJbGlu ay0+ZGRjLAorCQkJZmFsc2UsCisJCQlJMkNfTU9UX1VOREVGLAogCQkJYWRkcmVzcywKIAkJCWRh dGEsCiAJCQlzaXplKTsKIAlyZXR1cm4gciA9PSBERENfUkVTVUxUX1NVQ0VTU0ZVTEw7CiB9CiAK LWJvb2wgZGNfcXVlcnlfZGRjX2RhdGEoCitib29sIGRjX3dyaXRlX2F1eF9kcGNkKAogCQlzdHJ1 Y3QgZGMgKmRjLAogCQl1aW50MzJfdCBsaW5rX2luZGV4LAogCQl1aW50MzJfdCBhZGRyZXNzLAot CQl1aW50OF90ICp3cml0ZV9idWYsCi0JCXVpbnQzMl90IHdyaXRlX3NpemUsCi0JCXVpbnQ4X3Qg KnJlYWRfYnVmLAotCQl1aW50MzJfdCByZWFkX3NpemUpIHsKLQorCQljb25zdCB1aW50OF90ICpk YXRhLAorCQl1aW50MzJfdCBzaXplKQorewogCXN0cnVjdCBjb3JlX2RjICpjb3JlX2RjID0gRENf VE9fQ09SRShkYyk7Ci0KIAlzdHJ1Y3QgY29yZV9saW5rICpsaW5rID0gY29yZV9kYy0+bGlua3Nb bGlua19pbmRleF07CiAKLQlib29sIHJlc3VsdCA9IGRhbF9kZGNfc2VydmljZV9xdWVyeV9kZGNf ZGF0YSgKKwllbnVtIGRkY19yZXN1bHQgciA9IGRhbF9kZGNfc2VydmljZV93cml0ZV9kcGNkX2Rh dGEoCiAJCQlsaW5rLT5kZGMsCisJCQlmYWxzZSwKKwkJCUkyQ19NT1RfVU5ERUYsCiAJCQlhZGRy ZXNzLAotCQkJd3JpdGVfYnVmLAotCQkJd3JpdGVfc2l6ZSwKLQkJCXJlYWRfYnVmLAotCQkJcmVh ZF9zaXplKTsKLQotCXJldHVybiByZXN1bHQ7CisJCQlkYXRhLAorCQkJc2l6ZSk7CisJcmV0dXJu IHIgPT0gRERDX1JFU1VMVF9TVUNFU1NGVUxMOwogfQogCitib29sIGRjX3JlYWRfYXV4X2kyYygK KwkJc3RydWN0IGRjICpkYywKKwkJdWludDMyX3QgbGlua19pbmRleCwKKwkJZW51bSBpMmNfbW90 X21vZGUgbW90LAorCQl1aW50MzJfdCBhZGRyZXNzLAorCQl1aW50OF90ICpkYXRhLAorCQl1aW50 MzJfdCBzaXplKQoreworCXN0cnVjdCBjb3JlX2RjICpjb3JlX2RjID0gRENfVE9fQ09SRShkYyk7 CiAKLWJvb2wgZGNfd3JpdGVfZHBjZCgKKwkJc3RydWN0IGNvcmVfbGluayAqbGluayA9IGNvcmVf ZGMtPmxpbmtzW2xpbmtfaW5kZXhdOworCQllbnVtIGRkY19yZXN1bHQgciA9IGRhbF9kZGNfc2Vy dmljZV9yZWFkX2RwY2RfZGF0YSgKKwkJCWxpbmstPmRkYywKKwkJCXRydWUsCisJCQltb3QsCisJ CQlhZGRyZXNzLAorCQkJZGF0YSwKKwkJCXNpemUpOworCQlyZXR1cm4gciA9PSBERENfUkVTVUxU X1NVQ0VTU0ZVTEw7Cit9CisKK2Jvb2wgZGNfd3JpdGVfYXV4X2kyYygKIAkJc3RydWN0IGRjICpk YywKIAkJdWludDMyX3QgbGlua19pbmRleCwKKwkJZW51bSBpMmNfbW90X21vZGUgbW90LAogCQl1 aW50MzJfdCBhZGRyZXNzLAogCQljb25zdCB1aW50OF90ICpkYXRhLAogCQl1aW50MzJfdCBzaXpl KQogewogCXN0cnVjdCBjb3JlX2RjICpjb3JlX2RjID0gRENfVE9fQ09SRShkYyk7Ci0KIAlzdHJ1 Y3QgY29yZV9saW5rICpsaW5rID0gY29yZV9kYy0+bGlua3NbbGlua19pbmRleF07CiAKIAllbnVt IGRkY19yZXN1bHQgciA9IGRhbF9kZGNfc2VydmljZV93cml0ZV9kcGNkX2RhdGEoCiAJCQlsaW5r LT5kZGMsCisJCQl0cnVlLAorCQkJbW90LAogCQkJYWRkcmVzcywKIAkJCWRhdGEsCiAJCQlzaXpl KTsKIAlyZXR1cm4gciA9PSBERENfUkVTVUxUX1NVQ0VTU0ZVTEw7CiB9CiAKK2Jvb2wgZGNfcXVl cnlfZGRjX2RhdGEoCisJCXN0cnVjdCBkYyAqZGMsCisJCXVpbnQzMl90IGxpbmtfaW5kZXgsCisJ CXVpbnQzMl90IGFkZHJlc3MsCisJCXVpbnQ4X3QgKndyaXRlX2J1ZiwKKwkJdWludDMyX3Qgd3Jp dGVfc2l6ZSwKKwkJdWludDhfdCAqcmVhZF9idWYsCisJCXVpbnQzMl90IHJlYWRfc2l6ZSkgewor CisJc3RydWN0IGNvcmVfZGMgKmNvcmVfZGMgPSBEQ19UT19DT1JFKGRjKTsKKworCXN0cnVjdCBj b3JlX2xpbmsgKmxpbmsgPSBjb3JlX2RjLT5saW5rc1tsaW5rX2luZGV4XTsKKworCWJvb2wgcmVz dWx0ID0gZGFsX2RkY19zZXJ2aWNlX3F1ZXJ5X2RkY19kYXRhKAorCQkJbGluay0+ZGRjLAorCQkJ YWRkcmVzcywKKwkJCXdyaXRlX2J1ZiwKKwkJCXdyaXRlX3NpemUsCisJCQlyZWFkX2J1ZiwKKwkJ CXJlYWRfc2l6ZSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBib29sIGRjX3N1Ym1pdF9pMmMo CiAJCXN0cnVjdCBkYyAqZGMsCiAJCXVpbnQzMl90IGxpbmtfaW5kZXgsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rLmMKaW5kZXggNzRkZDI3MmQ3NDUyLi4w ZjgyNWY2MzI2YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9j b3JlL2RjX2xpbmsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9k Y19saW5rLmMKQEAgLTQ2NCwzOSArNDY0LDYgQEAgc3RhdGljIHZvaWQgbGlua19kaXNjb25uZWN0 X3Npbmsoc3RydWN0IGNvcmVfbGluayAqbGluaykKIAlsaW5rLT5kcGNkX3NpbmtfY291bnQgPSAw OwogfQogCi1zdGF0aWMgZW51bSBkY19lZGlkX3N0YXR1cyByZWFkX2VkaWQoCi0Jc3RydWN0IGNv cmVfbGluayAqbGluaywKLQlzdHJ1Y3QgY29yZV9zaW5rICpzaW5rKQotewotCXVpbnQzMl90IGVk aWRfcmV0cnkgPSAzOwotCWVudW0gZGNfZWRpZF9zdGF0dXMgZWRpZF9zdGF0dXM7Ci0KLQkvKiBz b21lIGRvbmdsZXMgcmVhZCBlZGlkIGluY29ycmVjdGx5IHRoZSBmaXJzdCB0aW1lLAotCSAqIGRv IGNoZWNrIHN1bSBhbmQgcmV0cnkgdG8gbWFrZSBzdXJlIHJlYWQgY29ycmVjdCBlZGlkLgotCSAq LwotCWRvIHsKLQkJc2luay0+cHVibGljLmRjX2VkaWQubGVuZ3RoID0KLQkJCQlkYWxfZGRjX3Nl cnZpY2VfZWRpZF9xdWVyeShsaW5rLT5kZGMpOwotCi0JCWlmICgwID09IHNpbmstPnB1YmxpYy5k Y19lZGlkLmxlbmd0aCkKLQkJCXJldHVybiBFRElEX05PX1JFU1BPTlNFOwotCi0JCWRhbF9kZGNf c2VydmljZV9nZXRfZWRpZF9idWYobGluay0+ZGRjLAotCQkJCXNpbmstPnB1YmxpYy5kY19lZGlk LnJhd19lZGlkKTsKLQkJZWRpZF9zdGF0dXMgPSBkbV9oZWxwZXJzX3BhcnNlX2VkaWRfY2FwcygK LQkJCQlzaW5rLT5jdHgsCi0JCQkJJnNpbmstPnB1YmxpYy5kY19lZGlkLAotCQkJCSZzaW5rLT5w dWJsaWMuZWRpZF9jYXBzKTsKLQkJLS1lZGlkX3JldHJ5OwotCQlpZiAoZWRpZF9zdGF0dXMgPT0g RURJRF9CQURfQ0hFQ0tTVU0pCi0JCQlkbV9sb2dnZXJfd3JpdGUobGluay0+Y3R4LT5sb2dnZXIs IExPR19XQVJOSU5HLAotCQkJCQkiQmFkIEVESUQgY2hlY2tzdW0sIHJldHJ5IHJlbWFpbjogJWRc biIsCi0JCQkJCWVkaWRfcmV0cnkpOwotCX0gd2hpbGUgKGVkaWRfc3RhdHVzID09IEVESURfQkFE X0NIRUNLU1VNICYmIGVkaWRfcmV0cnkgPiAwKTsKLQotCXJldHVybiBlZGlkX3N0YXR1czsKLX0K LQogc3RhdGljIHZvaWQgZGV0ZWN0X2RwKAogCXN0cnVjdCBjb3JlX2xpbmsgKmxpbmssCiAJc3Ry dWN0IGRpc3BsYXlfc2lua19jYXBhYmlsaXR5ICpzaW5rX2NhcHMsCkBAIC02NzMsNiArNjQwLDkg QEAgYm9vbCBkY19saW5rX2RldGVjdChjb25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgYm9v bCBib290KQogCQkJCQkJbGluay0+ZGRjLAogCQkJCQkJc2lua19jYXBzLnRyYW5zYWN0aW9uX3R5 cGUpOwogCisJCWxpbmstPnB1YmxpYy5hdXhfbW9kZSA9IGRhbF9kZGNfc2VydmljZV9pc19pbl9h dXhfdHJhbnNhY3Rpb25fbW9kZSgKKwkJCQlsaW5rLT5kZGMpOworCiAJCXNpbmtfaW5pdF9kYXRh LmxpbmsgPSAmbGluay0+cHVibGljOwogCQlzaW5rX2luaXRfZGF0YS5zaW5rX3NpZ25hbCA9IHNp bmtfY2Fwcy5zaWduYWw7CiAKQEAgLTY4OCw3ICs2NTgsMTAgQEAgYm9vbCBkY19saW5rX2RldGVj dChjb25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgYm9vbCBib290KQogCQlzaW5rID0gRENf U0lOS19UT19DT1JFKGRjX3NpbmspOwogCQlsaW5rLT5wdWJsaWMubG9jYWxfc2luayA9ICZzaW5r LT5wdWJsaWM7CiAKLQkJZWRpZF9zdGF0dXMgPSByZWFkX2VkaWQobGluaywgc2luayk7CisJCWVk aWRfc3RhdHVzID0gZG1faGVscGVyc19yZWFkX2xvY2FsX2VkaWQoCisJCQkJbGluay0+Y3R4LAor CQkJCSZsaW5rLT5wdWJsaWMsCisJCQkJJnNpbmstPnB1YmxpYyk7CiAKIAkJc3dpdGNoIChlZGlk X3N0YXR1cykgewogCQljYXNlIEVESURfQkFEX0NIRUNLU1VNOgpAQCAtMTUwMCwxMSArMTQ3Mywx MyBAQCBib29sIGRjX2xpbmtfc2V0dXBfcHNyKGNvbnN0IHN0cnVjdCBkY19saW5rICpkY19saW5r LAogCQkJICovCiAJCQlwc3JfY29uZmlndXJhdGlvbi5iaXRzLklSUV9IUERfV0lUSF9DUkNfRVJS T1IgICAgPSAxOwogCQl9Ci0JCWRhbF9kZGNfc2VydmljZV93cml0ZV9kcGNkX2RhdGEoCi0JCQkJ CWxpbmstPmRkYywKLQkJCQkJMzY4LAotCQkJCQkmcHNyX2NvbmZpZ3VyYXRpb24ucmF3LAotCQkJ CQlzaXplb2YocHNyX2NvbmZpZ3VyYXRpb24ucmF3KSk7CisKKwkJZG1faGVscGVyc19kcF93cml0 ZV9kcGNkKAorCQkJbGluay0+Y3R4LAorCQkJZGNfbGluaywKKwkJCTM2OCwKKwkJCSZwc3JfY29u ZmlndXJhdGlvbi5yYXcsCisJCQlzaXplb2YocHNyX2NvbmZpZ3VyYXRpb24ucmF3KSk7CiAKIAkJ cHNyX2NvbnRleHQuY2hhbm5lbCA9IGxpbmstPmRkYy0+ZGRjX3Bpbi0+aHdfaW5mby5kZGNfY2hh bm5lbDsKIAkJaWYgKHBzcl9jb250ZXh0LmNoYW5uZWwgPT0gMCkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmtfZGRjLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2RkYy5jCmluZGV4IDRlOTQ2NWI2MzBk MS4uMmY1YTg5YzViMDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvY29yZS9kY19saW5rX2RkYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9jb3JlL2RjX2xpbmtfZGRjLmMKQEAgLTU4LDMwICs1OCw2IEBAIHN0cnVjdCBkcF9oZG1pX2Rv bmdsZV9zaWduYXR1cmVfZGF0YSB7CiAJdWludDhfdCBlb3Q7LyogZW5kIG9mIHRyYW5zbWl0aW9u ICdceDQnICovCiB9OwogCi0vKiBBZGRyZXNzIHJhbmdlIGZyb20gMHgwMCB0byAweDFGLiovCi0j ZGVmaW5lIERQX0FEQVBUT1JfVFlQRTJfU0laRSAweDIwCi0jZGVmaW5lIERQX0FEQVBUT1JfVFlQ RTJfUkVHX0lEIDB4MTAKLSNkZWZpbmUgRFBfQURBUFRPUl9UWVBFMl9SRUdfTUFYX1RNRFNfQ0xL IDB4MUQKLS8qIElkZW50aWZpZXMgYWRhcHRvciBhcyBEdWFsLW1vZGUgYWRhcHRvciAqLwotI2Rl ZmluZSBEUF9BREFQVE9SX1RZUEUyX0lEIDB4QTAKLS8qIE1IeiovCi0jZGVmaW5lIERQX0FEQVBU T1JfVFlQRTJfTUFYX1RNRFNfQ0xLIDYwMAotLyogTUh6Ki8KLSNkZWZpbmUgRFBfQURBUFRPUl9U WVBFMl9NSU5fVE1EU19DTEsgMjUKLS8qIGtIWiovCi0jZGVmaW5lIERQX0FEQVBUT1JfRFZJX01B WF9UTURTX0NMSyAxNjUwMDAKLS8qIGtIWiovCi0jZGVmaW5lIERQX0FEQVBUT1JfSERNSV9TQUZF X01BWF9UTURTX0NMSyAxNjUwMDAKLQotI2RlZmluZSBERENfSTJDX0NPTU1BTkRfRU5HSU5FIEky Q19DT01NQU5EX0VOR0lORV9TVwotCi1lbnVtIGVkaWRfcmVhZF9yZXN1bHQgewotCUVESURfUkVB RF9SRVNVTFRfRURJRF9NQVRDSCA9IDAsCi0JRURJRF9SRUFEX1JFU1VMVF9FRElEX01JU01BVENI LAotCUVESURfUkVBRF9SRVNVTFRfQ0hFQ0tTVU1fUkVBRF9FUlIsCi0JRURJRF9SRUFEX1JFU1VM VF9WRU5ET1JfUkVBRF9FUlIKLX07Ci0KIC8qIFNDREMgQWRkcmVzcyBkZWZpbmVzIChIRE1JIDIu MCkqLwogI2RlZmluZSBIRE1JX1NDRENfV1JJVEVfVVBEQVRFXzBfQVJSQVkgMwogI2RlZmluZSBI RE1JX1NDRENfQUREUkVTUyAgMHg1NApAQCAtMzkyLDcgKzM2OCw3IEBAIHN0YXRpYyB1aW50MzJf dCBkZWZlcl9kZWxheV9jb252ZXJ0ZXJfd2EoCiAKICNkZWZpbmUgRFBfVFJBTlNMQVRPUl9ERUxB WSA1CiAKLXN0YXRpYyB1aW50MzJfdCBnZXRfZGVmZXJfZGVsYXkoc3RydWN0IGRkY19zZXJ2aWNl ICpkZGMpCit1aW50MzJfdCBnZXRfZGVmZXJfZGVsYXkoc3RydWN0IGRkY19zZXJ2aWNlICpkZGMp CiB7CiAJdWludDMyX3QgZGVmZXJfZGVsYXkgPSAwOwogCkBAIC00NTEsMzA3ICs0MjcsNiBAQCBz dGF0aWMgYm9vbCBpMmNfcmVhZCgKIAkJCSZjb21tYW5kKTsKIH0KIAotc3RhdGljIHVpbnQ4X3Qg YXV4X3JlYWRfZWRpZF9ibG9jaygKLQlzdHJ1Y3QgZGRjX3NlcnZpY2UgKmRkYywKLQl1aW50OF90 IGFkZHJlc3MsCi0JdWludDhfdCBpbmRleCwKLQl1aW50OF90ICpidWYpCi17Ci0Jc3RydWN0IGF1 eF9jb21tYW5kIGNtZCA9IHsKLQkJLnBheWxvYWRzID0gTlVMTCwKLQkJLm51bWJlcl9vZl9wYXls b2FkcyA9IDAsCi0JCS5kZWZlcl9kZWxheSA9IGdldF9kZWZlcl9kZWxheShkZGMpLAotCQkubWF4 X2RlZmVyX3dyaXRlX3JldHJ5ID0gMCB9OwotCi0JdWludDhfdCByZXRyaWV2ZWQgPSAwOwotCXVp bnQ4X3QgYmFzZV9vZmZzZXQgPQotCQkoaW5kZXggJSBERENfRURJRF9CTE9DS1NfUEVSX1NFR01F TlQpICogRERDX0VESURfQkxPQ0tfU0laRTsKLQl1aW50OF90IHNlZ21lbnQgPSBpbmRleCAvIERE Q19FRElEX0JMT0NLU19QRVJfU0VHTUVOVDsKLQotCWZvciAocmV0cmlldmVkID0gMDsgcmV0cmll dmVkIDwgRERDX0VESURfQkxPQ0tfU0laRTsKLQkJcmV0cmlldmVkICs9IERFRkFVTFRfQVVYX01B WF9EQVRBX1NJWkUpIHsKLQotCQl1aW50OF90IG9mZnNldCA9IGJhc2Vfb2Zmc2V0ICsgcmV0cmll dmVkOwotCi0JCXN0cnVjdCBhdXhfcGF5bG9hZCBwYXlsb2Fkc1szXSA9IHsKLQkJCXsKLQkJCS5p MmNfb3Zlcl9hdXggPSB0cnVlLAotCQkJLndyaXRlID0gdHJ1ZSwKLQkJCS5hZGRyZXNzID0gRERD X0VESURfU0VHTUVOVF9BRERSRVNTLAotCQkJLmxlbmd0aCA9IDEsCi0JCQkuZGF0YSA9ICZzZWdt ZW50IH0sCi0JCQl7Ci0JCQkuaTJjX292ZXJfYXV4ID0gdHJ1ZSwKLQkJCS53cml0ZSA9IHRydWUs Ci0JCQkuYWRkcmVzcyA9IGFkZHJlc3MsCi0JCQkubGVuZ3RoID0gMSwKLQkJCS5kYXRhID0gJm9m ZnNldCB9LAotCQkJewotCQkJLmkyY19vdmVyX2F1eCA9IHRydWUsCi0JCQkud3JpdGUgPSBmYWxz ZSwKLQkJCS5hZGRyZXNzID0gYWRkcmVzcywKLQkJCS5sZW5ndGggPSBERUZBVUxUX0FVWF9NQVhf REFUQV9TSVpFLAotCQkJLmRhdGEgPSAmYnVmW3JldHJpZXZlZF0gfSB9OwotCi0JCWlmIChzZWdt ZW50ID09IDApIHsKLQkJCWNtZC5wYXlsb2FkcyA9ICZwYXlsb2Fkc1sxXTsKLQkJCWNtZC5udW1i ZXJfb2ZfcGF5bG9hZHMgPSAyOwotCQl9IGVsc2UgewotCQkJY21kLnBheWxvYWRzID0gcGF5bG9h ZHM7Ci0JCQljbWQubnVtYmVyX29mX3BheWxvYWRzID0gMzsKLQkJfQotCi0JCWlmICghZGFsX2ky Y2F1eF9zdWJtaXRfYXV4X2NvbW1hbmQoCi0JCQlkZGMtPmN0eC0+aTJjYXV4LAotCQkJZGRjLT5k ZGNfcGluLAotCQkJJmNtZCkpCi0JCQkvKiBjYW5ub3QgcmVhZCwgYnJlYWsqLwotCQkJYnJlYWs7 Ci0JfQotCi0JLyogUmVzZXQgc2VnbWVudCB0byAwLiBOZWVkZWQgYnkgc29tZSBwYW5lbHMgKi8K LQlpZiAoMCAhPSBzZWdtZW50KSB7Ci0JCXN0cnVjdCBhdXhfcGF5bG9hZCBwYXlsb2Fkc1sxXSA9 IHsgewotCQkJLmkyY19vdmVyX2F1eCA9IHRydWUsCi0JCQkud3JpdGUgPSB0cnVlLAotCQkJLmFk ZHJlc3MgPSBERENfRURJRF9TRUdNRU5UX0FERFJFU1MsCi0JCQkubGVuZ3RoID0gMSwKLQkJCS5k YXRhID0gJnNlZ21lbnQgfSB9OwotCQlib29sIHJlc3VsdCA9IGZhbHNlOwotCi0JCXNlZ21lbnQg PSAwOwotCi0JCWNtZC5udW1iZXJfb2ZfcGF5bG9hZHMgPSBBUlJBWV9TSVpFKHBheWxvYWRzKTsK LQkJY21kLnBheWxvYWRzID0gcGF5bG9hZHM7Ci0KLQkJcmVzdWx0ID0gZGFsX2kyY2F1eF9zdWJt aXRfYXV4X2NvbW1hbmQoCi0JCQlkZGMtPmN0eC0+aTJjYXV4LAotCQkJZGRjLT5kZGNfcGluLAot CQkJJmNtZCk7Ci0KLQkJaWYgKGZhbHNlID09IHJlc3VsdCkKLQkJCWRtX2xvZ2dlcl93cml0ZSgK LQkJCQlkZGMtPmN0eC0+bG9nZ2VyLCBMT0dfRVJST1IsCi0JCQkJIiVzOiBXcml0aW5nIG9mIEVE SUQgU2VnbWVudCAoMHgzMCkgZmFpbGVkIVxuIiwKLQkJCQlfX2Z1bmNfXyk7Ci0JfQotCi0JcmV0 dXJuIHJldHJpZXZlZDsKLX0KLQotc3RhdGljIHVpbnQ4X3QgaTJjX3JlYWRfZWRpZF9ibG9jaygK LQlzdHJ1Y3QgZGRjX3NlcnZpY2UgKmRkYywKLQl1aW50OF90IGFkZHJlc3MsCi0JdWludDhfdCBp bmRleCwKLQl1aW50OF90ICpidWYpCi17Ci0JYm9vbCByZXQgPSBmYWxzZTsKLQl1aW50OF90IG9m ZnNldCA9IChpbmRleCAlIEREQ19FRElEX0JMT0NLU19QRVJfU0VHTUVOVCkgKgotCQlERENfRURJ RF9CTE9DS19TSVpFOwotCXVpbnQ4X3Qgc2VnbWVudCA9IGluZGV4IC8gRERDX0VESURfQkxPQ0tT X1BFUl9TRUdNRU5UOwotCi0Jc3RydWN0IGkyY19jb21tYW5kIGNtZCA9IHsKLQkJLnBheWxvYWRz ID0gTlVMTCwKLQkJLm51bWJlcl9vZl9wYXlsb2FkcyA9IDAsCi0JCS5lbmdpbmUgPSBERENfSTJD X0NPTU1BTkRfRU5HSU5FLAotCQkuc3BlZWQgPSBkZGMtPmN0eC0+ZGMtPmNhcHMuaTJjX3NwZWVk X2luX2toeiB9OwotCi0Jc3RydWN0IGkyY19wYXlsb2FkIHBheWxvYWRzWzNdID0gewotCQl7Ci0J CS53cml0ZSA9IHRydWUsCi0JCS5hZGRyZXNzID0gRERDX0VESURfU0VHTUVOVF9BRERSRVNTLAot CQkubGVuZ3RoID0gMSwKLQkJLmRhdGEgPSAmc2VnbWVudCB9LAotCQl7Ci0JCS53cml0ZSA9IHRy dWUsCi0JCS5hZGRyZXNzID0gYWRkcmVzcywKLQkJLmxlbmd0aCA9IDEsCi0JCS5kYXRhID0gJm9m ZnNldCB9LAotCQl7Ci0JCS53cml0ZSA9IGZhbHNlLAotCQkuYWRkcmVzcyA9IGFkZHJlc3MsCi0J CS5sZW5ndGggPSBERENfRURJRF9CTE9DS19TSVpFLAotCQkuZGF0YSA9IGJ1ZiB9IH07Ci0vKgot ICogU29tZSBJMkMgZW5naW5lcyBkb24ndCBoYW5kbGUgc3RvcC9zdGFydCBiZXR3ZWVuIHdyaXRl LW9mZnNldCBhbmQgcmVhZC1kYXRhCi0gKiBjb21tYW5kcyBwcm9wZXJseS4gRm9yIHRob3NlIGRp c3BsYXlzLCB3ZSBoYXZlIHRvIGZvcmNlIHRoZSBuZXdlciBFLUREQwotICogYmVoYXZpb3Igb2Yg cmVwZWF0ZWQtc3RhcnQgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgcnVudGltZSBwYXJhbWV0ZXIu ICovCi0vKiBPcmlnaW5hbGx5IGltcGxlbWVudGVkIGZvciBPbkxpdmUgdXNpbmcgTlhQIHJlY2Vp dmVyIGNoaXAgKi8KLQotCWlmIChpbmRleCA9PSAwICYmICFkZGMtPmZsYWdzLkZPUkNFX1JFQURf UkVQRUFURURfU1RBUlQpIHsKLQkJLyogYmFzZSBibG9jaywgdXNlIHVzZSBEREMyQiwgc3VibWl0 IGFzIDIgY29tbWFuZHMgKi8KLQkJY21kLnBheWxvYWRzID0gJnBheWxvYWRzWzFdOwotCQljbWQu bnVtYmVyX29mX3BheWxvYWRzID0gMTsKLQotCQlpZiAoZG1faGVscGVyc19zdWJtaXRfaTJjKAot CQkJZGRjLT5jdHgsCi0JCQkmZGRjLT5saW5rLT5wdWJsaWMsCi0JCQkmY21kKSkgewotCi0JCQlj bWQucGF5bG9hZHMgPSAmcGF5bG9hZHNbMl07Ci0JCQljbWQubnVtYmVyX29mX3BheWxvYWRzID0g MTsKLQotCQkJcmV0ID0gZG1faGVscGVyc19zdWJtaXRfaTJjKAotCQkJCQlkZGMtPmN0eCwKLQkJ CQkJJmRkYy0+bGluay0+cHVibGljLAotCQkJCQkmY21kKTsKLQkJfQotCi0JfSBlbHNlIHsKLQkJ LyoKLQkJICogZXh0ZW5zaW9uIGJsb2NrIHVzZSBFLUREQywgc3VibWl0IGFzIDEgY29tbWFuZAot CQkgKiBvciBpZiByZXBlYXRlZC1zdGFydCBpcyBmb3JjZWQgYnkgcnVudGltZSBwYXJhbWV0ZXIK LQkJICovCi0JCWlmIChzZWdtZW50ICE9IDApIHsKLQkJCS8qIGluY2x1ZGUgc2VnbWVudCBvZmZz ZXQgaW4gY29tbWFuZCovCi0JCQljbWQucGF5bG9hZHMgPSBwYXlsb2FkczsKLQkJCWNtZC5udW1i ZXJfb2ZfcGF5bG9hZHMgPSAzOwotCQl9IGVsc2UgewotCQkJLyogd2UgYXJlIHJlYWRpbmcgZmly c3Qgc2VnbWVudCwKLQkJCSAqIHNlZ21lbnQgb2Zmc2V0IGlzIG5vdCByZXF1aXJlZCAqLwotCQkJ Y21kLnBheWxvYWRzID0gJnBheWxvYWRzWzFdOwotCQkJY21kLm51bWJlcl9vZl9wYXlsb2FkcyA9 IDI7Ci0JCX0KLQotCQlyZXQgPSBkbV9oZWxwZXJzX3N1Ym1pdF9pMmMoCi0JCQkJZGRjLT5jdHgs Ci0JCQkJJmRkYy0+bGluay0+cHVibGljLAotCQkJCSZjbWQpOwotCX0KLQotCXJldHVybiByZXQg PyBERENfRURJRF9CTE9DS19TSVpFIDogMDsKLX0KLQotc3RhdGljIHVpbnQzMl90IHF1ZXJ5X2Vk aWRfYmxvY2soCi0Jc3RydWN0IGRkY19zZXJ2aWNlICpkZGMsCi0JdWludDhfdCBhZGRyZXNzLAot CXVpbnQ4X3QgaW5kZXgsCi0JdWludDhfdCAqYnVmLAotCXVpbnQzMl90IHNpemUpCi17Ci0JdWlu dDMyX3Qgc2l6ZV9yZXRyaWV2ZWQgPSAwOwotCi0JaWYgKHNpemUgPCBERENfRURJRF9CTE9DS19T SVpFKQotCQlyZXR1cm4gMDsKLQotCWlmIChkYWxfZGRjX3NlcnZpY2VfaXNfaW5fYXV4X3RyYW5z YWN0aW9uX21vZGUoZGRjKSkgewotCQlzaXplX3JldHJpZXZlZCA9Ci0JCQlhdXhfcmVhZF9lZGlk X2Jsb2NrKGRkYywgYWRkcmVzcywgaW5kZXgsIGJ1Zik7Ci0JfSBlbHNlIHsKLQkJc2l6ZV9yZXRy aWV2ZWQgPQotCQkJaTJjX3JlYWRfZWRpZF9ibG9jayhkZGMsIGFkZHJlc3MsIGluZGV4LCBidWYp OwotCX0KLQotCXJldHVybiBzaXplX3JldHJpZXZlZDsKLX0KLQotI2RlZmluZSBERENfRFBDRF9F RElEX0NIRUNLU1VNX1dSSVRFX0FERFJFU1MgMHgyNjEKLSNkZWZpbmUgRERDX1RFU1RfQUNLX0FE RFJFU1MgMHgyNjAKLSNkZWZpbmUgRERDX0RQQ0RfRURJRF9URVNUX0FDSyAweDA0Ci0jZGVmaW5l IEREQ19EUENEX0VESURfVEVTVF9NQVNLIDB4MDQKLSNkZWZpbmUgRERDX0RQQ0RfVEVTVF9SRVFV RVNUX0FERFJFU1MgMHgyMTgKLQotLyogQUcgVE9ETyBHTyB0aHJvdWcgRE0gY2FsbGJhY2sgaGVy ZSBsaWtlIGZvciBEUENEICovCi0KLXN0YXRpYyB2b2lkIHdyaXRlX2RwX2VkaWRfY2hlY2tzdW0o Ci0Jc3RydWN0IGRkY19zZXJ2aWNlICpkZGMsCi0JdWludDhfdCBjaGVja3N1bSkKLXsKLQl1aW50 OF90IGRwY2RfZGF0YTsKLQotCWRhbF9kZGNfc2VydmljZV9yZWFkX2RwY2RfZGF0YSgKLQkJZGRj LAotCQlERENfRFBDRF9URVNUX1JFUVVFU1RfQUREUkVTUywKLQkJJmRwY2RfZGF0YSwKLQkJMSk7 Ci0KLQlpZiAoZHBjZF9kYXRhICYgRERDX0RQQ0RfRURJRF9URVNUX01BU0spIHsKLQotCQlkYWxf ZGRjX3NlcnZpY2Vfd3JpdGVfZHBjZF9kYXRhKAotCQkJZGRjLAotCQkJRERDX0RQQ0RfRURJRF9D SEVDS1NVTV9XUklURV9BRERSRVNTLAotCQkJJmNoZWNrc3VtLAotCQkJMSk7Ci0KLQkJZHBjZF9k YXRhID0gRERDX0RQQ0RfRURJRF9URVNUX0FDSzsKLQotCQlkYWxfZGRjX3NlcnZpY2Vfd3JpdGVf ZHBjZF9kYXRhKAotCQkJZGRjLAotCQkJRERDX1RFU1RfQUNLX0FERFJFU1MsCi0JCQkmZHBjZF9k YXRhLAotCQkJMSk7Ci0JfQotfQotCi11aW50MzJfdCBkYWxfZGRjX3NlcnZpY2VfZWRpZF9xdWVy eShzdHJ1Y3QgZGRjX3NlcnZpY2UgKmRkYykKLXsKLQl1aW50MzJfdCBieXRlc19yZWFkID0gMDsK LQl1aW50MzJfdCBleHRfY250ID0gMDsKLQotCXVpbnQ4X3QgYWRkcmVzczsKLQl1aW50MzJfdCBp OwotCi0JZm9yIChhZGRyZXNzID0gRERDX0VESURfQUREUkVTU19TVEFSVDsKLQkJYWRkcmVzcyA8 PSBERENfRURJRF9BRERSRVNTX0VORDsgKythZGRyZXNzKSB7Ci0KLQkJYnl0ZXNfcmVhZCA9IHF1 ZXJ5X2VkaWRfYmxvY2soCi0JCQlkZGMsCi0JCQlhZGRyZXNzLAotCQkJMCwKLQkJCWRkYy0+ZWRp ZF9idWYsCi0JCQlzaXplb2YoZGRjLT5lZGlkX2J1ZikgLSBieXRlc19yZWFkKTsKLQotCQlpZiAo Ynl0ZXNfcmVhZCAhPSBERENfRURJRF9CTE9DS19TSVpFKQotCQkJY29udGludWU7Ci0KLQkJLyog Z2V0IHRoZSBudW1iZXIgb2YgZXh0IGJsb2NrcyovCi0JCWV4dF9jbnQgPSBkZGMtPmVkaWRfYnVm W0REQ19FRElEX0VYVF9DT1VOVF9PRkZTRVRdOwotCi0JCS8qIEVESUQgMi4wLCBuZWVkIHRvIHJl YWQgMSBtb3JlIGJsb2NrIGJlY2F1c2UgRURJRDIuMCBpcwotCQkgKiAyNTYgYnl0ZSBpbiBzaXpl Ki8KLQkJaWYgKGRkYy0+ZWRpZF9idWZbRERDX0VESURfMjBfU0lHTkFUVVJFX09GRlNFVF0gPT0K LQkJCUREQ19FRElEXzIwX1NJR05BVFVSRSkKLQkJCQlleHRfY250ID0gMTsKLQotCQlmb3IgKGkg PSAwOyBpIDwgZXh0X2NudDsgaSsrKSB7Ci0JCQkvKiByZWFkIGFkZGl0aW9uYWwgZXh0IGJsb2Nr cyBhY2NvcmRpbmdseSAqLwotCQkJYnl0ZXNfcmVhZCArPSBxdWVyeV9lZGlkX2Jsb2NrKAotCQkJ CQlkZGMsCi0JCQkJCWFkZHJlc3MsCi0JCQkJCWkrMSwKLQkJCQkJJmRkYy0+ZWRpZF9idWZbYnl0 ZXNfcmVhZF0sCi0JCQkJCXNpemVvZihkZGMtPmVkaWRfYnVmKSAtIGJ5dGVzX3JlYWQpOwotCQl9 Ci0KLQkJLyp0aGlzIGlzIHNwZWNpYWwgY29kZSBwYXRoIGZvciBEUCBjb21wbGlhbmNlKi8KLQkJ aWYgKEREQ19UUkFOU0FDVElPTl9UWVBFX0kyQ19PVkVSX0FVWCA9PSBkZGMtPnRyYW5zYWN0aW9u X3R5cGUpCi0JCQl3cml0ZV9kcF9lZGlkX2NoZWNrc3VtKAotCQkJCWRkYywKLQkJCQlkZGMtPmVk aWRfYnVmWyhleHRfY250ICogRERDX0VESURfQkxPQ0tfU0laRSkgKwotCQkJCUREQ19FRElEMVhf Q0hFQ0tTVU1fT0ZGU0VUXSk7Ci0KLQkJLypyZW1lbWJlcnMgdGhlIGFkZHJlc3Mgd2hlcmUgd2Ug ZmV0Y2ggdGhlIEVESUQgZnJvbQotCQkgKiBmb3IgbGF0ZXIgc2lnbmF0dXJlIGNoZWNrIHVzZSAq LwotCQlkZGMtPmFkZHJlc3MgPSBhZGRyZXNzOwotCi0JCWJyZWFrOy8qIGFscmVhZHkgcmVhZCBl ZGlkLCBkb25lKi8KLQl9Ci0KLQlkZGMtPmVkaWRfYnVmX2xlbiA9IGJ5dGVzX3JlYWQ7Ci0JcmV0 dXJuIGJ5dGVzX3JlYWQ7Ci19Ci0KLXVpbnQzMl90IGRhbF9kZGNfc2VydmljZV9nZXRfZWRpZF9i dWZfbGVuKHN0cnVjdCBkZGNfc2VydmljZSAqZGRjKQotewotCXJldHVybiBkZGMtPmVkaWRfYnVm X2xlbjsKLX0KLQotdm9pZCBkYWxfZGRjX3NlcnZpY2VfZ2V0X2VkaWRfYnVmKHN0cnVjdCBkZGNf c2VydmljZSAqZGRjLCB1aW50OF90ICplZGlkX2J1ZikKLXsKLQltZW1tb3ZlKGVkaWRfYnVmLAot CQkJZGRjLT5lZGlkX2J1ZiwgZGRjLT5lZGlkX2J1Zl9sZW4pOwotfQotCiB2b2lkIGRhbF9kZGNf c2VydmljZV9pMmNfcXVlcnlfZHBfZHVhbF9tb2RlX2FkYXB0b3IoCiAJc3RydWN0IGRkY19zZXJ2 aWNlICpkZGMsCiAJc3RydWN0IGRpc3BsYXlfc2lua19jYXBhYmlsaXR5ICpzaW5rX2NhcCkKQEAg LTk2MCwxMiArNjM1LDE0IEBAIGJvb2wgZGFsX2RkY19zZXJ2aWNlX3F1ZXJ5X2RkY19kYXRhKAog CiBlbnVtIGRkY19yZXN1bHQgZGFsX2RkY19zZXJ2aWNlX3JlYWRfZHBjZF9kYXRhKAogCXN0cnVj dCBkZGNfc2VydmljZSAqZGRjLAorCWJvb2wgaTJjLAorCWVudW0gaTJjX21vdF9tb2RlIG1vdCwK IAl1aW50MzJfdCBhZGRyZXNzLAogCXVpbnQ4X3QgKmRhdGEsCiAJdWludDMyX3QgbGVuKQogewog CXN0cnVjdCBhdXhfcGF5bG9hZCByZWFkX3BheWxvYWQgPSB7Ci0JCS5pMmNfb3Zlcl9hdXggPSBm YWxzZSwKKwkJLmkyY19vdmVyX2F1eCA9IGkyYywKIAkJLndyaXRlID0gZmFsc2UsCiAJCS5hZGRy ZXNzID0gYWRkcmVzcywKIAkJLmxlbmd0aCA9IGxlbiwKQEAgLTk3Niw2ICs2NTMsNyBAQCBlbnVt IGRkY19yZXN1bHQgZGFsX2RkY19zZXJ2aWNlX3JlYWRfZHBjZF9kYXRhKAogCQkubnVtYmVyX29m X3BheWxvYWRzID0gMSwKIAkJLmRlZmVyX2RlbGF5ID0gMCwKIAkJLm1heF9kZWZlcl93cml0ZV9y ZXRyeSA9IDAsCisJCS5tb3QgPSBtb3QKIAl9OwogCiAJaWYgKGxlbiA+IERFRkFVTFRfQVVYX01B WF9EQVRBX1NJWkUpIHsKQEAgLTk5NCwxMiArNjcyLDE0IEBAIGVudW0gZGRjX3Jlc3VsdCBkYWxf ZGRjX3NlcnZpY2VfcmVhZF9kcGNkX2RhdGEoCiAKIGVudW0gZGRjX3Jlc3VsdCBkYWxfZGRjX3Nl cnZpY2Vfd3JpdGVfZHBjZF9kYXRhKAogCXN0cnVjdCBkZGNfc2VydmljZSAqZGRjLAorCWJvb2wg aTJjLAorCWVudW0gaTJjX21vdF9tb2RlIG1vdCwKIAl1aW50MzJfdCBhZGRyZXNzLAogCWNvbnN0 IHVpbnQ4X3QgKmRhdGEsCiAJdWludDMyX3QgbGVuKQogewogCXN0cnVjdCBhdXhfcGF5bG9hZCB3 cml0ZV9wYXlsb2FkID0gewotCQkuaTJjX292ZXJfYXV4ID0gZmFsc2UsCisJCS5pMmNfb3Zlcl9h dXggPSBpMmMsCiAJCS53cml0ZSA9IHRydWUsCiAJCS5hZGRyZXNzID0gYWRkcmVzcywKIAkJLmxl bmd0aCA9IGxlbiwKQEAgLTEwMTAsNiArNjkwLDcgQEAgZW51bSBkZGNfcmVzdWx0IGRhbF9kZGNf c2VydmljZV93cml0ZV9kcGNkX2RhdGEoCiAJCS5udW1iZXJfb2ZfcGF5bG9hZHMgPSAxLAogCQku ZGVmZXJfZGVsYXkgPSAwLAogCQkubWF4X2RlZmVyX3dyaXRlX3JldHJ5ID0gMCwKKwkJLm1vdCA9 IG1vdAogCX07CiAKIAlpZiAobGVuID4gREVGQVVMVF9BVVhfTUFYX0RBVEFfU0laRSkgewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kcC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kcC5jCmluZGV4 IDZjZmQ4ODA4NjA0NC4uODAyZDhjYzk5ZWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19kcC5jCkBAIC0xNDgxLDIyICsxNDgxLDI1IEBAIHN0 YXRpYyBib29sIGhhbmRsZV9ocGRfaXJxX3Bzcl9zaW5rKGNvbnN0IHN0cnVjdCBjb3JlX2xpbmsg KmxpbmspCiAJaWYgKGxpbmstPnB1YmxpYy5wc3JfY2Fwcy5wc3JfdmVyc2lvbiA9PSAwKQogCQly ZXR1cm4gZmFsc2U7CiAKLQlkYWxfZGRjX3NlcnZpY2VfcmVhZF9kcGNkX2RhdGEoCi0JCQkJCWxp bmstPmRkYywKLQkJCQkJMzY4IC8qRHBjZEFkZHJlc3NfUFNSX0VuYWJsZV9DZmcqLywKLQkJCQkJ JnBzcl9jb25maWd1cmF0aW9uLnJhdywKLQkJCQkJc2l6ZW9mKHBzcl9jb25maWd1cmF0aW9uLnJh dykpOworCWRtX2hlbHBlcnNfZHBfcmVhZF9kcGNkKAorCQlsaW5rLT5jdHgsCisJCSZsaW5rLT5w dWJsaWMsCisJCTM2OCwvKkRwY2RBZGRyZXNzX1BTUl9FbmFibGVfQ2ZnKi8KKwkJJnBzcl9jb25m aWd1cmF0aW9uLnJhdywKKwkJc2l6ZW9mKHBzcl9jb25maWd1cmF0aW9uLnJhdykpOworCiAKIAlp ZiAocHNyX2NvbmZpZ3VyYXRpb24uYml0cy5FTkFCTEUpIHsKIAkJdW5zaWduZWQgY2hhciBkcGNk YnVmWzNdID0gezB9OwogCQl1bmlvbiBwc3JfZXJyb3Jfc3RhdHVzIHBzcl9lcnJvcl9zdGF0dXM7 CiAJCXVuaW9uIHBzcl9zaW5rX3Bzcl9zdGF0dXMgcHNyX3NpbmtfcHNyX3N0YXR1czsKIAotCQlk YWxfZGRjX3NlcnZpY2VfcmVhZF9kcGNkX2RhdGEoCi0JCQkJCWxpbmstPmRkYywKLQkJCQkJMHgy MDA2IC8qRHBjZEFkZHJlc3NfUFNSX0Vycm9yX1N0YXR1cyovLAotCQkJCQkodW5zaWduZWQgY2hh ciAqKSBkcGNkYnVmLAotCQkJCQlzaXplb2YoZHBjZGJ1ZikpOworCQlkbV9oZWxwZXJzX2RwX3Jl YWRfZHBjZCgKKwkJCWxpbmstPmN0eCwKKwkJCSZsaW5rLT5wdWJsaWMsCisJCQkweDIwMDYsIC8q RHBjZEFkZHJlc3NfUFNSX0Vycm9yX1N0YXR1cyovCisJCQkodW5zaWduZWQgY2hhciAqKSBkcGNk YnVmLAorCQkJc2l6ZW9mKGRwY2RidWYpKTsKIAogCQkvKkRQQ0QgMjAwNmggICBFUlJPUiBTVEFU VVMqLwogCQlwc3JfZXJyb3Jfc3RhdHVzLnJhdyA9IGRwY2RidWZbMF07CkBAIC0xNTA2LDkgKzE1 MDksMTAgQEAgc3RhdGljIGJvb2wgaGFuZGxlX2hwZF9pcnFfcHNyX3NpbmsoY29uc3Qgc3RydWN0 IGNvcmVfbGluayAqbGluaykKIAkJaWYgKHBzcl9lcnJvcl9zdGF0dXMuYml0cy5MSU5LX0NSQ19F UlJPUiB8fAogCQkJCXBzcl9lcnJvcl9zdGF0dXMuYml0cy5SRkJfU1RPUkFHRV9FUlJPUikgewog CQkJLyogQWNrbm93bGVkZ2UgYW5kIGNsZWFyIGVycm9yIGJpdHMgKi8KLQkJCWRhbF9kZGNfc2Vy dmljZV93cml0ZV9kcGNkX2RhdGEoCi0JCQkJbGluay0+ZGRjLAotCQkJCTgxOTggLypEcGNkQWRk cmVzc19QU1JfRXJyb3JfU3RhdHVzKi8sCisJCQlkbV9oZWxwZXJzX2RwX3dyaXRlX2RwY2QoCisJ CQkJbGluay0+Y3R4LAorCQkJCSZsaW5rLT5wdWJsaWMsCisJCQkJODE5OCwvKkRwY2RBZGRyZXNz X1BTUl9FcnJvcl9TdGF0dXMqLwogCQkJCSZwc3JfZXJyb3Jfc3RhdHVzLnJhdywKIAkJCQlzaXpl b2YocHNyX2Vycm9yX3N0YXR1cy5yYXcpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RjLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMu aAppbmRleCBkMjk2MDU1MmM3OGUuLmEyN2E2YWJhMGRmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RjLmgKQEAgLTU5NCw2ICs1OTQsNyBAQCBzdHJ1Y3QgZGNfbGluayB7CiAJdW5pb24g Y29tcGxpYW5jZV90ZXN0X3N0YXRlIGNvbXBsaWFuY2VfdGVzdF9zdGF0ZTsKIAogCXZvaWQgKnBy aXY7CisJYm9vbCBhdXhfbW9kZTsKIH07CiAKIHN0cnVjdCBkcGNkX2NhcHMgewpAQCAtNzg4LDIw ICs3ODksMzYgQEAgY29uc3Qgc3RydWN0IGRkY19zZXJ2aWNlICpkY19nZXRfZGRjX2F0X2luZGV4 KAogICogRFBDRCBhY2Nlc3MgaW50ZXJmYWNlcwogICovCiAKLWJvb2wgZGNfcmVhZF9kcGNkKAor Ym9vbCBkY19yZWFkX2F1eF9kcGNkKAogCQlzdHJ1Y3QgZGMgKmRjLAogCQl1aW50MzJfdCBsaW5r X2luZGV4LAogCQl1aW50MzJfdCBhZGRyZXNzLAogCQl1aW50OF90ICpkYXRhLAogCQl1aW50MzJf dCBzaXplKTsKIAotYm9vbCBkY193cml0ZV9kcGNkKAorYm9vbCBkY193cml0ZV9hdXhfZHBjZCgK IAkJc3RydWN0IGRjICpkYywKIAkJdWludDMyX3QgbGlua19pbmRleCwKIAkJdWludDMyX3QgYWRk cmVzcywKIAkJY29uc3QgdWludDhfdCAqZGF0YSwKIAkJdWludDMyX3Qgc2l6ZSk7CiAKK2Jvb2wg ZGNfcmVhZF9hdXhfaTJjKAorCQlzdHJ1Y3QgZGMgKmRjLAorCQl1aW50MzJfdCBsaW5rX2luZGV4 LAorCQllbnVtIGkyY19tb3RfbW9kZSBtb3QsCisJCXVpbnQzMl90IGFkZHJlc3MsCisJCXVpbnQ4 X3QgKmRhdGEsCisJCXVpbnQzMl90IHNpemUpOworCitib29sIGRjX3dyaXRlX2F1eF9pMmMoCisJ CXN0cnVjdCBkYyAqZGMsCisJCXVpbnQzMl90IGxpbmtfaW5kZXgsCisJCWVudW0gaTJjX21vdF9t b2RlIG1vdCwKKwkJdWludDMyX3QgYWRkcmVzcywKKwkJY29uc3QgdWludDhfdCAqZGF0YSwKKwkJ dWludDMyX3Qgc2l6ZSk7CisKIGJvb2wgZGNfcXVlcnlfZGRjX2RhdGEoCiAJCXN0cnVjdCBkYyAq ZGMsCiAJCXVpbnQzMl90IGxpbmtfaW5kZXgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9kY190eXBlcy5oCmluZGV4IDI0MmRkN2IzYjZiMS4uZTA0MzZlMzE3MzQxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaApAQCAtNDg5LDQgKzQ4OSwxMCBAQCBz dHJ1Y3QgcHNyX2NhcHMgewogCXVuc2lnbmVkIGludCBwc3Jfc2RwX3RyYW5zbWl0X2xpbmVfbnVt X2RlYWRsaW5lOwogfTsKIAorZW51bSBpMmNfbW90X21vZGUgeworCUkyQ19NT1RfVU5ERUYsCisJ STJDX01PVF9UUlVFLAorCUkyQ19NT1RfRkFMU0UKK307CisKICNlbmRpZiAvKiBEQ19UWVBFU19I XyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RtX2hlbHBl cnMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kbV9oZWxwZXJzLmgKaW5kZXgg ZDZjNTJkMzFmMGYwLi5jMTVhMjVjZTgwNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kbV9oZWxwZXJzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RtX2hlbHBlcnMuaApAQCAtOTgsNCArOTgsMTQgQEAgYm9vbCBkbV9oZWxwZXJzX3N1 Ym1pdF9pMmMoCiAJCXN0cnVjdCBpMmNfY29tbWFuZCAqY21kKTsKIAogCisKKworCisKK2VudW0g ZGNfZWRpZF9zdGF0dXMgZG1faGVscGVyc19yZWFkX2xvY2FsX2VkaWQoCisJCXN0cnVjdCBkY19j b250ZXh0ICpjdHgsCisJCXN0cnVjdCBkY19saW5rICpsaW5rLAorCQlzdHJ1Y3QgZGNfc2luayAq c2luayk7CisKKwogI2VuZGlmIC8qIF9fRE1fSEVMUEVSU19fICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaTJjYXV4L2kyY2F1eC5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2kyY2F1eC9pMmNhdXguYwppbmRleCBiZDg0YjkzMmFhYWUuLjA3 NDMyNjVlOTMzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2ky Y2F1eC9pMmNhdXguYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaTJjYXV4 L2kyY2F1eC5jCkBAIC0xODUsNiArMTg1LDcgQEAgYm9vbCBkYWxfaTJjYXV4X3N1Ym1pdF9hdXhf Y29tbWFuZCgKIAlzdHJ1Y3QgYXV4X2VuZ2luZSAqZW5naW5lOwogCXVpbnQ4X3QgaW5kZXhfb2Zf cGF5bG9hZCA9IDA7CiAJYm9vbCByZXN1bHQ7CisJYm9vbCBtb3Q7CiAKIAlpZiAoIWRkYykgewog CQlCUkVBS19UT19ERUJVR0dFUigpOwpAQCAtMjA3LDEyICsyMDgsMTQgQEAgYm9vbCBkYWxfaTJj YXV4X3N1Ym1pdF9hdXhfY29tbWFuZCgKIAlyZXN1bHQgPSB0cnVlOwogCiAJd2hpbGUgKGluZGV4 X29mX3BheWxvYWQgPCBjbWQtPm51bWJlcl9vZl9wYXlsb2FkcykgewotCQlib29sIG1vdCA9IChp bmRleF9vZl9wYXlsb2FkICE9IGNtZC0+bnVtYmVyX29mX3BheWxvYWRzIC0gMSk7Ci0KIAkJc3Ry dWN0IGF1eF9wYXlsb2FkICpwYXlsb2FkID0gY21kLT5wYXlsb2FkcyArIGluZGV4X29mX3BheWxv YWQ7Ci0KIAkJc3RydWN0IGkyY2F1eF90cmFuc2FjdGlvbl9yZXF1ZXN0IHJlcXVlc3QgPSB7IDAg fTsKIAorCQlpZiAoY21kLT5tb3QgPT0gSTJDX01PVF9VTkRFRikKKwkJCW1vdCA9IChpbmRleF9v Zl9wYXlsb2FkICE9IGNtZC0+bnVtYmVyX29mX3BheWxvYWRzIC0gMSk7CisJCWVsc2UKKwkJCW1v dCA9IChjbWQtPm1vdCA9PSBJMkNfTU9UX1RSVUUpOworCiAJCXJlcXVlc3Qub3BlcmF0aW9uID0g cGF5bG9hZC0+d3JpdGUgPwogCQkJSTJDQVVYX1RSQU5TQUNUSU9OX1dSSVRFIDoKIAkJCUkyQ0FV WF9UUkFOU0FDVElPTl9SRUFEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2luYy9kY19saW5rX2RkYy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2luYy9kY19saW5rX2RkYy5oCmluZGV4IDgzMGZjM2QwMzljOS4uOWMyZjY3MGMzZGMzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2RjX2xpbmtfZGRjLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9kY19saW5rX2RkYy5oCkBA IC0zMSw2ICszMSwyMyBAQAogCiAjZGVmaW5lIEVESURfU0VHTUVOVF9TSVpFIDI1NgogCisvKiBB ZGRyZXNzIHJhbmdlIGZyb20gMHgwMCB0byAweDFGLiovCisjZGVmaW5lIERQX0FEQVBUT1JfVFlQ RTJfU0laRSAweDIwCisjZGVmaW5lIERQX0FEQVBUT1JfVFlQRTJfUkVHX0lEIDB4MTAKKyNkZWZp bmUgRFBfQURBUFRPUl9UWVBFMl9SRUdfTUFYX1RNRFNfQ0xLIDB4MUQKKy8qIElkZW50aWZpZXMg YWRhcHRvciBhcyBEdWFsLW1vZGUgYWRhcHRvciAqLworI2RlZmluZSBEUF9BREFQVE9SX1RZUEUy X0lEIDB4QTAKKy8qIE1IeiovCisjZGVmaW5lIERQX0FEQVBUT1JfVFlQRTJfTUFYX1RNRFNfQ0xL IDYwMAorLyogTUh6Ki8KKyNkZWZpbmUgRFBfQURBUFRPUl9UWVBFMl9NSU5fVE1EU19DTEsgMjUK Ky8qIGtIWiovCisjZGVmaW5lIERQX0FEQVBUT1JfRFZJX01BWF9UTURTX0NMSyAxNjUwMDAKKy8q IGtIWiovCisjZGVmaW5lIERQX0FEQVBUT1JfSERNSV9TQUZFX01BWF9UTURTX0NMSyAxNjUwMDAK KworI2RlZmluZSBERENfSTJDX0NPTU1BTkRfRU5HSU5FIEkyQ19DT01NQU5EX0VOR0lORV9TVwor CiBzdHJ1Y3QgZGRjX3NlcnZpY2U7CiBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkOwogZW51bSBk ZGNfcmVzdWx0OwpAQCAtODMsMTIgKzEwMCw2IEBAIHZvaWQgZGFsX2RkY19zZXJ2aWNlX3NldF90 cmFuc2FjdGlvbl90eXBlKAogCiBib29sIGRhbF9kZGNfc2VydmljZV9pc19pbl9hdXhfdHJhbnNh Y3Rpb25fbW9kZShzdHJ1Y3QgZGRjX3NlcnZpY2UgKmRkYyk7CiAKLXVpbnQzMl90IGRhbF9kZGNf c2VydmljZV9lZGlkX3F1ZXJ5KHN0cnVjdCBkZGNfc2VydmljZSAqZGRjKTsKLQotdWludDMyX3Qg ZGFsX2RkY19zZXJ2aWNlX2dldF9lZGlkX2J1Zl9sZW4oc3RydWN0IGRkY19zZXJ2aWNlICpkZGMp OwotCi12b2lkIGRhbF9kZGNfc2VydmljZV9nZXRfZWRpZF9idWYoc3RydWN0IGRkY19zZXJ2aWNl ICpkZGMsIHVpbnQ4X3QgKmVkaWRfYnVmKTsKLQogdm9pZCBkYWxfZGRjX3NlcnZpY2VfaTJjX3F1 ZXJ5X2RwX2R1YWxfbW9kZV9hZGFwdG9yKAogCQlzdHJ1Y3QgZGRjX3NlcnZpY2UgKmRkYywKIAkJ c3RydWN0IGRpc3BsYXlfc2lua19jYXBhYmlsaXR5ICpzaW5rX2NhcCk7CkBAIC0xMDMsMTIgKzEx NCwxNiBAQCBib29sIGRhbF9kZGNfc2VydmljZV9xdWVyeV9kZGNfZGF0YSgKIAogZW51bSBkZGNf cmVzdWx0IGRhbF9kZGNfc2VydmljZV9yZWFkX2RwY2RfZGF0YSgKIAkJc3RydWN0IGRkY19zZXJ2 aWNlICpkZGMsCisJCWJvb2wgaTJjLAorCQllbnVtIGkyY19tb3RfbW9kZSBtb3QsCiAJCXVpbnQz Ml90IGFkZHJlc3MsCiAJCXVpbnQ4X3QgKmRhdGEsCiAJCXVpbnQzMl90IGxlbik7CiAKIGVudW0g ZGRjX3Jlc3VsdCBkYWxfZGRjX3NlcnZpY2Vfd3JpdGVfZHBjZF9kYXRhKAogCQlzdHJ1Y3QgZGRj X3NlcnZpY2UgKmRkYywKKwkJYm9vbCBpMmMsCisJCWVudW0gaTJjX21vdF9tb2RlIG1vdCwKIAkJ dWludDMyX3QgYWRkcmVzcywKIAkJY29uc3QgdWludDhfdCAqZGF0YSwKIAkJdWludDMyX3QgbGVu KTsKQEAgLTEzMCwxNiArMTQ1LDcgQEAgdm9pZCBkYWxfZGRjX3NlcnZpY2Vfc2V0X2RkY19waW4o CiAKIHN0cnVjdCBkZGMgKmRhbF9kZGNfc2VydmljZV9nZXRfZGRjX3BpbihzdHJ1Y3QgZGRjX3Nl cnZpY2UgKmRkY19zZXJ2aWNlKTsKIAotZW51bSBkZGNfcmVzdWx0IGRhbF9kZGNfc2VydmljZV9y ZWFkX2RwY2RfZGF0YSgKLQkJc3RydWN0IGRkY19zZXJ2aWNlICpkZGMsCi0JCXVpbnQzMl90IGFk ZHJlc3MsCi0JCXVpbnQ4X3QgKmRhdGEsCi0JCXVpbnQzMl90IGxlbik7Ci1lbnVtIGRkY19yZXN1 bHQgZGFsX2RkY19zZXJ2aWNlX3dyaXRlX2RwY2RfZGF0YSgKLQkJc3RydWN0IGRkY19zZXJ2aWNl ICpkZGMsCi0JCXVpbnQzMl90IGFkZHJlc3MsCi0JCWNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0JCXVp bnQzMl90IGxlbik7Cit1aW50MzJfdCBnZXRfZGVmZXJfZGVsYXkoc3RydWN0IGRkY19zZXJ2aWNl ICpkZGMpOwogCiAjZW5kaWYgLyogX19EQUxfRERDX1NFUlZJQ0VfSF9fICovCiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9pbmNsdWRlL2RkY19zZXJ2aWNlX3R5cGVz LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBl cy5oCmluZGV4IGVmZmUwM2I4ZjQxOC4uMGZmMmE4OTliOGY3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9pbmNsdWRlL2RkY19zZXJ2aWNlX3R5cGVzLmgKQEAg LTExNSwzNCArMTE1LDYgQEAgc3RydWN0IGF2X3N5bmNfZGF0YSB7CiAJdWludDhfdCBhdWRfZGVs X2luczM7LyogRFBDRCAwMDAyRGggKi8KIH07CiAKLS8qKiBFRElEIHJldHJpZXZhbCByZWxhdGVk IGNvbnN0YW50cywgYWxzbyB1c2VkIGJ5IE1zdE1nciAqKi8KLQotI2RlZmluZSBERENfRURJRF9T RUdNRU5UX1NJWkUgMjU2Ci0jZGVmaW5lIEREQ19FRElEX0JMT0NLX1NJWkUgMTI4Ci0jZGVmaW5l IEREQ19FRElEX0JMT0NLU19QRVJfU0VHTUVOVCBcCi0JKEREQ19FRElEX1NFR01FTlRfU0laRSAv IEREQ19FRElEX0JMT0NLX1NJWkUpCi0KLSNkZWZpbmUgRERDX0VESURfRVhUX0NPVU5UX09GRlNF VCAweDdFCi0KLSNkZWZpbmUgRERDX0VESURfQUREUkVTU19TVEFSVCAweDUwCi0jZGVmaW5lIERE Q19FRElEX0FERFJFU1NfRU5EIDB4NTIKLSNkZWZpbmUgRERDX0VESURfU0VHTUVOVF9BRERSRVNT IDB4MzAKLQotLyogc2lnbmF0dXJlcyBmb3IgRWRpZCAxeCAqLwotI2RlZmluZSBERENfRURJRDFY X1ZFTkRPUklEX1NJR05BVFVSRV9PRkZTRVQgOAotI2RlZmluZSBERENfRURJRDFYX1ZFTkRPUklE X1NJR05BVFVSRV9MRU4gNAotI2RlZmluZSBERENfRURJRDFYX0VYVF9DTlRfQU5EX0NIRUNLU1VN X09GRlNFVCAxMjYKLSNkZWZpbmUgRERDX0VESUQxWF9FWFRfQ05UX0FORF9DSEVDS1NVTV9MRU4g MgotI2RlZmluZSBERENfRURJRDFYX0NIRUNLU1VNX09GRlNFVCAxMjcKLS8qIHNpZ25hdHVyZXMg Zm9yIEVkaWQgMjAqLwotI2RlZmluZSBERENfRURJRF8yMF9TSUdOQVRVUkVfT0ZGU0VUIDAKLSNk ZWZpbmUgRERDX0VESURfMjBfU0lHTkFUVVJFIDB4MjAKLQotI2RlZmluZSBERENfRURJRDIwX1ZF TkRPUklEX1NJR05BVFVSRV9PRkZTRVQgMQotI2RlZmluZSBERENfRURJRDIwX1ZFTkRPUklEX1NJ R05BVFVSRV9MRU4gNAotI2RlZmluZSBERENfRURJRDIwX0NIRUNLU1VNX09GRlNFVCAyNTUKLSNk ZWZpbmUgRERDX0VESUQyMF9DSEVDS1NVTV9MRU4gMQotCiAvKkRQIHRvIFZHQSBjb252ZXJ0ZXIq Lwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgRFBfVkdBX0NPTlZFUlRFUl9JRF8xW10gPSAibVZHQWEi OwogLypEUCB0byBEdWFsIGxpbmsgRFZJIGNvbnZlcnRlciovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9pMmNhdXhfaW50ZXJmYWNlLmggYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9pMmNhdXhfaW50ZXJmYWNlLmgKaW5kZXggZDJl YzA0ZDFjNTkyLi4xM2EzYzgyZDExOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9pbmNsdWRlL2kyY2F1eF9pbnRlcmZhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvaW5jbHVkZS9pMmNhdXhfaW50ZXJmYWNlLmgKQEAgLTI2LDYgKzI2LDcgQEAK ICNpZm5kZWYgX19EQUxfSTJDQVVYX0lOVEVSRkFDRV9IX18KICNkZWZpbmUgX19EQUxfSTJDQVVY X0lOVEVSRkFDRV9IX18KIAorI2luY2x1ZGUgImRjX3R5cGVzLmgiCiAjaW5jbHVkZSAiZ3Bpb19z ZXJ2aWNlX2ludGVyZmFjZS5oIgogCiAKQEAgLTU0LDYgKzU1LDggQEAgc3RydWN0IGF1eF9jb21t YW5kIHsKIAogCS8qIHplcm8gbWVhbnMgInVzZSBkZWZhdWx0IHZhbHVlIiAqLwogCXVpbnQzMl90 IG1heF9kZWZlcl93cml0ZV9yZXRyeTsKKworCWVudW0gaTJjX21vdF9tb2RlIG1vdDsKIH07CiAK IHVuaW9uIGF1eF9jb25maWcgewotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngK