From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/8] phy: tegra: xusb: t210: add XUSB device mode support From: Nagarjuna Kristam Message-Id: <1546509899-5071-2-git-send-email-nkristam@nvidia.com> Date: Thu, 3 Jan 2019 15:34:52 +0530 To: balbi@kernel.org, gregkh@linuxfoundation.org, thierry.reding@gmail.com, jonathanh@nvidia.com Cc: linux-tegra@vger.kernel.org, linux-usb@vger.kernel.org, Nagarjuna Kristam List-ID: QWRkIHN1cHBvcnQgZm9yIFhVU0IgZGV2aWNlIG1vZGUgY29udHJvbGxlciBvbiBUZWdyYTIxMC4K VXBkYXRlIFBBRENUTCBkcml2ZXIgdG8gc2V0IHBvcnQgY2FwIGJhc2VkIG9uIERUIGNvbmZpZy4K QWRkIGNvZGUgdG8gaGFuZGxlIHByb3BlcnR5ICJudmlkaWEsdXNiMy1wb3J0LWZha2UiClByb3Zp ZGUgQVBJJ3MgdG8gY29udHJvbCB2YnVzIG92ZXJyaWRlIGFuZCB1dG1pIHBhZCBwb3dlciBjb250 cm9sCgpTaWduZWQtb2ZmLWJ5OiBOYWdhcmp1bmEgS3Jpc3RhbSA8bmtyaXN0YW1AbnZpZGlhLmNv bT4KLS0tCiBkcml2ZXJzL3BoeS90ZWdyYS94dXNiLXRlZ3JhMjEwLmMgfCAyOTcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvcGh5L3RlZ3JhL3h1c2IuYyAg ICAgICAgICB8ICA3NSArKysrKysrKystCiBkcml2ZXJzL3BoeS90ZWdyYS94dXNiLmggICAgICAg ICAgfCAgMTYgKy0KIGluY2x1ZGUvbGludXgvcGh5L3RlZ3JhL3h1c2IuaCAgICB8ICAgNyArLQog NCBmaWxlcyBjaGFuZ2VkLCAzODYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3BoeS90ZWdyYS94dXNiLXRlZ3JhMjEwLmMgYi9kcml2ZXJzL3BoeS90 ZWdyYS94dXNiLXRlZ3JhMjEwLmMKaW5kZXggMDViZWUzMi4uMDI4OWUxMCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9waHkvdGVncmEveHVzYi10ZWdyYTIxMC5jCisrKyBiL2RyaXZlcnMvcGh5L3RlZ3Jh L3h1c2ItdGVncmEyMTAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIw MTQsIE5WSURJQSBDT1JQT1JBVElPTi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln aHQgKGMpIDIwMTQtMjAxOCwgTlZJRElBIENPUlBPUkFUSU9OLiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBHb29nbGUsIEluYy4KICAqCiAgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdApAQCAtNDcsNyArNDcsMTAgQEAKICNkZWZpbmUgWFVTQl9QQURDVExfVVNCMl9QQURfTVVY X1VTQjJfQklBU19QQURfWFVTQiAweDEKIAogI2RlZmluZSBYVVNCX1BBRENUTF9VU0IyX1BPUlRf Q0FQIDB4MDA4CisjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfUE9SVF9DQVBfUE9SVFhfQ0FQX0RJ U0FCTEVEKHgpICgweDAgPDwgKCh4KSAqIDQpKQogI2RlZmluZSBYVVNCX1BBRENUTF9VU0IyX1BP UlRfQ0FQX1BPUlRYX0NBUF9IT1NUKHgpICgweDEgPDwgKCh4KSAqIDQpKQorI2RlZmluZSBYVVNC X1BBRENUTF9VU0IyX1BPUlRfQ0FQX1BPUlRYX0NBUF9ERVZJQ0UoeCkgKDB4MiA8PCAoKHgpICog NCkpCisjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfUE9SVF9DQVBfUE9SVFhfQ0FQX09URyh4KSAo MHgzIDw8ICgoeCkgKiA0KSkKICNkZWZpbmUgWFVTQl9QQURDVExfVVNCMl9QT1JUX0NBUF9QT1JU WF9DQVBfTUFTSyh4KSAoMHgzIDw8ICgoeCkgKiA0KSkKIAogI2RlZmluZSBYVVNCX1BBRENUTF9T U19QT1JUX01BUCAweDAxNApAQCAtNTUsNiArNTgsNyBAQAogI2RlZmluZSBYVVNCX1BBRENUTF9T U19QT1JUX01BUF9QT1JUWF9NQVBfU0hJRlQoeCkgKCh4KSAqIDUpCiAjZGVmaW5lIFhVU0JfUEFE Q1RMX1NTX1BPUlRfTUFQX1BPUlRYX01BUF9NQVNLKHgpICgweDcgPDwgKCh4KSAqIDUpKQogI2Rl ZmluZSBYVVNCX1BBRENUTF9TU19QT1JUX01BUF9QT1JUWF9NQVAoeCwgdikgKCgodikgJiAweDcp IDw8ICgoeCkgKiA1KSkKKyNkZWZpbmUgWFVTQl9QQURDVExfU1NfUE9SVF9NQVBfUE9SVF9ESVNB QkxFRCAweDcKIAogI2RlZmluZSBYVVNCX1BBRENUTF9FTFBHX1BST0dSQU0xIDB4MDI0CiAjZGVm aW5lIFhVU0JfUEFEQ1RMX0VMUEdfUFJPR1JBTTFfQVVYX01VWF9MUDBfVkNPUkVfRE9XTiAoMSA8 PCAzMSkKQEAgLTY5LDkgKzczLDE0IEBACiAjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjNfUEFEX01V WF9QQ0lFX0lERFFfRElTQUJMRSh4KSAoMSA8PCAoMSArICh4KSkpCiAjZGVmaW5lIFhVU0JfUEFE Q1RMX1VTQjNfUEFEX01VWF9TQVRBX0lERFFfRElTQUJMRSh4KSAoMSA8PCAoOCArICh4KSkpCiAK KyNkZWZpbmUgWFVTQl9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEWF9DVEwwKHgpICgw eDA4MCArICh4KSAqIDB4NDApCisjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfQkFUVEVSWV9DSFJH X09UR1BBRF9DVEwwX1pJUCAoMSA8PCAxOCkKKyNkZWZpbmUgWFVTQl9QQURDVExfVVNCMl9CQVRU RVJZX0NIUkdfT1RHUEFEX0NUTDBfWklOICgxIDw8IDIyKQorCiAjZGVmaW5lIFhVU0JfUEFEQ1RM X1VTQjJfQkFUVEVSWV9DSFJHX09UR1BBRFhfQ1RMMSh4KSAoMHgwODQgKyAoeCkgKiAweDQwKQog I2RlZmluZSBYVVNCX1BBRENUTF9VU0IyX0JBVFRFUllfQ0hSR19PVEdQQURfQ1RMMV9WUkVHX0xF Vl9TSElGVCA3CiAjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfQkFUVEVSWV9DSFJHX09UR1BBRF9D VEwxX1ZSRUdfTEVWX01BU0sgMHgzCisjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfQkFUVEVSWV9D SFJHX09UR1BBRF9DVEwxX1ZSRUdfTEVWX1ZBTCAweDEKICNkZWZpbmUgWFVTQl9QQURDVExfVVNC Ml9CQVRURVJZX0NIUkdfT1RHUEFEX0NUTDFfVlJFR19GSVgxOCAoMSA8PCA2KQogCiAjZGVmaW5l IFhVU0JfUEFEQ1RMX1VTQjJfT1RHX1BBRFhfQ1RMMCh4KSAoMHgwODggKyAoeCkgKiAweDQwKQpA QCAtMjMwLDYgKzIzOSwxMiBAQAogI2RlZmluZSBYVVNCX1BBRENUTF9VUEhZX1VTQjNfUEFEWF9F Q1RMNih4KSAoMHhhNzQgKyAoeCkgKiAweDQwKQogI2RlZmluZSBYVVNCX1BBRENUTF9VUEhZX1VT QjNfUEFEX0VDVEw2X1JYX0VRX0NUUkxfSF9WQUwgMHhmY2YwMTM2OAogCisjZGVmaW5lIFhVU0Jf UEFEQ1RMX1VTQjJfVkJVU19JRCAweGM2MAorI2RlZmluZSBYVVNCX1BBRENUTF9VU0IyX1ZCVVNf SURfT1ZFUlJJREVfVkJVU19PTiAoMSA8PCAxNCkKKyNkZWZpbmUgWFVTQl9QQURDVExfVVNCMl9W QlVTX0lEX09WRVJSSURFX1NISUZUIDE4CisjZGVmaW5lIFhVU0JfUEFEQ1RMX1VTQjJfVkJVU19J RF9PVkVSUklERV9NQVNLIDB4ZgorI2RlZmluZSBYVVNCX1BBRENUTF9VU0IyX1ZCVVNfSURfT1ZF UlJJREVfVkFMIDgKKwogc3RydWN0IHRlZ3JhMjEwX3h1c2JfZnVzZV9jYWxpYnJhdGlvbiB7CiAJ dTMyIGhzX2N1cnJfbGV2ZWxbNF07CiAJdTMyIGhzX3Rlcm1fcmFuZ2VfYWRqOwpAQCAtOTA1LDYg KzkyMCwxNjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWdyYV94dXNiX2xhbmVfb3BzIHRlZ3Jh MjEwX3VzYjJfbGFuZV9vcHMgPSB7CiAJLnJlbW92ZSA9IHRlZ3JhMjEwX3VzYjJfbGFuZV9yZW1v dmUsCiB9OwogCisvKiBtdXN0IGJlIGNhbGxlZCB1bmRlciBwYWRjdGwtPmxvY2sgKi8KK3N0YXRp YyB2b2lkIHRlZ3JhMjEwX3V0bWlfYmlhc19wYWRfcG93ZXJfb24oc3RydWN0IHRlZ3JhX3h1c2Jf cGFkY3RsICpwYWRjdGwsCisJCQkJc3RydWN0IHRlZ3JhX3h1c2JfdXNiMl9wYWQgKnBhZCkKK3sK Kwl1MzIgcmVnOworCisJaWYgKHBhZC0+ZW5hYmxlKysgPiAwKQorCQlyZXR1cm47CisKKwlkZXZf ZGJnKHBhZGN0bC0+ZGV2LCAicG93ZXIgb24gQklBUyBQQUQgJiBVU0IyIHRyYWNraW5nXG4iKTsK KworCWlmIChjbGtfcHJlcGFyZV9lbmFibGUocGFkLT5jbGspKQorCQlkZXZfd2FybihwYWRjdGwt PmRldiwgImZhaWxlZCB0byBlbmFibGUgQklBUyBQQUQgJiBVU0IyIHRyYWNraW5nXG4iKTsKKwor CXJlZyA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX1VTQjJfQklBU19QQURfQ1RM MSk7CisKKwlyZWcgJj0gfigoWFVTQl9QQURDVExfVVNCMl9CSUFTX1BBRF9DVEwxX1RSS19TVEFS VF9USU1FUl9NQVNLIDw8CisJCSAgICBYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDFfVFJL X1NUQVJUX1RJTUVSX1NISUZUKSB8CisJCSAgIChYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NU TDFfVFJLX0RPTkVfUkVTRVRfVElNRVJfTUFTSyA8PAorCQkgICAgWFVTQl9QQURDVExfVVNCMl9C SUFTX1BBRF9DVEwxX1RSS19ET05FX1JFU0VUX1RJTUVSX1NISUZUKSk7CisJcmVnIHw9IChYVVNC X1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDFfVFJLX1NUQVJUX1RJTUVSX1ZBTCA8PAorCQkgIFhV U0JfUEFEQ1RMX1VTQjJfQklBU19QQURfQ1RMMV9UUktfU1RBUlRfVElNRVJfU0hJRlQpIHwKKwkJ IChYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDFfVFJLX0RPTkVfUkVTRVRfVElNRVJfVkFM IDw8CisJCSAgWFVTQl9QQURDVExfVVNCMl9CSUFTX1BBRF9DVEwxX1RSS19ET05FX1JFU0VUX1RJ TUVSX1NISUZUKTsKKwlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgcmVnLCBYVVNCX1BBRENUTF9VU0Iy X0JJQVNfUEFEX0NUTDEpOworCisJcmVnID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURD VExfVVNCMl9CSUFTX1BBRF9DVEwwKTsKKwlyZWcgJj0gflhVU0JfUEFEQ1RMX1VTQjJfQklBU19Q QURfQ1RMMF9QRDsKKworCXJlZyAmPSB+KChYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDBf SFNfU1FVRUxDSF9MRVZFTF9NQVNLIDw8CisJCSAgICBYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFE X0NUTDBfSFNfU1FVRUxDSF9MRVZFTF9TSElGVCkgfAorCQkgICAoWFVTQl9QQURDVExfVVNCMl9C SUFTX1BBRF9DVEwwX0hTX0RJU0NPTl9MRVZFTF9NQVNLIDw8CisJCSAgICBYVVNCX1BBRENUTF9V U0IyX0JJQVNfUEFEX0NUTDBfSFNfRElTQ09OX0xFVkVMX1NISUZUKSk7CisJcmVnIHw9IChYVVNC X1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDBfSFNfRElTQ09OX0xFVkVMX1ZBTCA8PAorCQkgIFhV U0JfUEFEQ1RMX1VTQjJfQklBU19QQURfQ1RMMF9IU19ESVNDT05fTEVWRUxfU0hJRlQpOworCisJ aWYgKHRlZ3JhX3NrdV9pbmZvLnJldmlzaW9uIDwgVEVHUkFfUkVWSVNJT05fQTAyKQorCQlyZWcg fD0gKFhVU0JfUEFEQ1RMX1VTQjJfQklBU19QQURfQ1RMMF9IU19TUVVFTENIX0xFVkVMX1ZBTCA8 PAorCQkJWFVTQl9QQURDVExfVVNCMl9CSUFTX1BBRF9DVEwwX0hTX1NRVUVMQ0hfTEVWRUxfU0hJ RlQpOworCXBhZGN0bF93cml0ZWwocGFkY3RsLCByZWcsIFhVU0JfUEFEQ1RMX1VTQjJfQklBU19Q QURfQ1RMMCk7CisKKwl1ZGVsYXkoMSk7CisKKwlyZWcgPSBwYWRjdGxfcmVhZGwocGFkY3RsLCBY VVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDEpOworCXJlZyAmPSB+WFVTQl9QQURDVExfVVNC Ml9CSUFTX1BBRF9DVEwxX1BEX1RSSzsKKwlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgcmVnLCBYVVNC X1BBRENUTF9VU0IyX0JJQVNfUEFEX0NUTDEpOworfQorCisvKiBtdXN0IGJlIGNhbGxlZCB1bmRl ciBwYWRjdGwtPmxvY2sgKi8KK3N0YXRpYyB2b2lkIHRlZ3JhMjEwX3V0bWlfYmlhc19wYWRfcG93 ZXJfb2ZmKHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bCAqcGFkY3RsLAorCQkJCXN0cnVjdCB0ZWdy YV94dXNiX3VzYjJfcGFkICpwYWQpCit7CisJdTMyIHJlZzsKKworCWlmIChXQVJOX09OKHBhZC0+ ZW5hYmxlID09IDApKQorCQlyZXR1cm47CisKKwlpZiAoLS1wYWQtPmVuYWJsZSA+IDApCisJCXJl dHVybjsKKworCWRldl9kYmcocGFkY3RsLT5kZXYsICJwb3dlciBvZmYgVVNCMiB0cmFja2luZ1xu Iik7CisJcmVnID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURDVExfVVNCMl9CSUFTX1BB RF9DVEwxKTsKKwlyZWcgfD0gWFVTQl9QQURDVExfVVNCMl9CSUFTX1BBRF9DVEwxX1BEX1RSSzsK KwlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgcmVnLCBYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFEX0NU TDEpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHBhZC0+Y2xrKTsKK30KKwordm9pZCB0ZWdy YTIxMF91dG1pX3BhZF9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IHRlZ3Jh X3h1c2JfbGFuZSAqbGFuZTsKKwlzdHJ1Y3QgdGVncmFfeHVzYl91c2IyX2xhbmUgKnVzYjI7CisJ c3RydWN0IHRlZ3JhX3h1c2JfdXNiMl9wYWQgKnBhZDsKKwlzdHJ1Y3QgdGVncmFfeHVzYl9wYWRj dGwgKnBhZGN0bDsKKwl1bnNpZ25lZCBpbnQgaW5kZXg7CisJc3RydWN0IGRldmljZSAqZGV2Owor CXUzMiByZWc7CisKKwlpZiAoIXBoeSkKKwkJcmV0dXJuOworCisJbGFuZSA9IHBoeV9nZXRfZHJ2 ZGF0YShwaHkpOworCXVzYjIgPSB0b191c2IyX2xhbmUobGFuZSk7CisJcGFkID0gdG9fdXNiMl9w YWQobGFuZS0+cGFkKTsKKwlwYWRjdGwgPSBsYW5lLT5wYWQtPnBhZGN0bDsKKwlpbmRleCA9IGxh bmUtPmluZGV4OworCWRldiA9IHBhZGN0bC0+ZGV2OworCisJaWYgKHVzYjItPnBvd2VyZWRfb24p CisJCXJldHVybjsKKworCW11dGV4X2xvY2soJnBhZGN0bC0+bG9jayk7CisKKwlkZXZfaW5mbyhk ZXYsICJwb3dlciBvbiBVVE1JIHBhZHMgJWRcbiIsIGluZGV4KTsKKworCXRlZ3JhMjEwX3V0bWlf Ymlhc19wYWRfcG93ZXJfb24ocGFkY3RsLCBwYWQpOworCisJdWRlbGF5KDIpOworCisJcmVnID0g cGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURDVExfVVNCMl9PVEdfUEFEWF9DVEwwKGluZGV4 KSk7CisJcmVnICY9IH5YVVNCX1BBRENUTF9VU0IyX09UR19QQURfQ1RMMF9QRDsKKwlwYWRjdGxf d3JpdGVsKHBhZGN0bCwgcmVnLCBYVVNCX1BBRENUTF9VU0IyX09UR19QQURYX0NUTDAoaW5kZXgp KTsKKworCXJlZyA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX1VTQjJfT1RHX1BB RFhfQ1RMMShpbmRleCkpOworCXJlZyAmPSB+WFVTQl9QQURDVExfVVNCMl9PVEdfUEFEX0NUTDFf UERfRFI7CisJcGFkY3RsX3dyaXRlbChwYWRjdGwsIHJlZywgWFVTQl9QQURDVExfVVNCMl9PVEdf UEFEWF9DVEwxKGluZGV4KSk7CisKKwl1c2IyLT5wb3dlcmVkX29uID0gdHJ1ZTsKKworCW11dGV4 X3VubG9jaygmcGFkY3RsLT5sb2NrKTsKK30KKwordm9pZCB0ZWdyYTIxMF91dG1pX3BhZF9wb3dl cl9kb3duKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgdGVncmFfeHVzYl9sYW5lICpsYW5l OworCXN0cnVjdCB0ZWdyYV94dXNiX3VzYjJfbGFuZSAqdXNiMjsKKwlzdHJ1Y3QgdGVncmFfeHVz Yl91c2IyX3BhZCAqcGFkOworCXN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bCAqcGFkY3RsOworCXVu c2lnbmVkIGludCBpbmRleDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJdTMyIHJlZzsKKworCWlm ICghcGh5KQorCQlyZXR1cm47CisKKwlsYW5lID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJdXNi MiA9IHRvX3VzYjJfbGFuZShsYW5lKTsKKwlwYWQgPSB0b191c2IyX3BhZChsYW5lLT5wYWQpOwor CXBhZGN0bCA9IGxhbmUtPnBhZC0+cGFkY3RsOworCWluZGV4ID0gbGFuZS0+aW5kZXg7CisJZGV2 ID0gcGFkY3RsLT5kZXY7CisKKwlpZiAoIXVzYjItPnBvd2VyZWRfb24pCisJCXJldHVybjsKKwor CW11dGV4X2xvY2soJnBhZGN0bC0+bG9jayk7CisKKwlkZXZfaW5mbyhkZXYsICJwb3dlciBkb3du IFVUTUkgcGFkICVkXG4iLCBpbmRleCk7CisKKwlyZWcgPSBwYWRjdGxfcmVhZGwocGFkY3RsLCBY VVNCX1BBRENUTF9VU0IyX09UR19QQURYX0NUTDAoaW5kZXgpKTsKKwlyZWcgfD0gWFVTQl9QQURD VExfVVNCMl9PVEdfUEFEX0NUTDBfUEQ7CisJcGFkY3RsX3dyaXRlbChwYWRjdGwsIHJlZywgWFVT Ql9QQURDVExfVVNCMl9PVEdfUEFEWF9DVEwwKGluZGV4KSk7CisKKwlyZWcgPSBwYWRjdGxfcmVh ZGwocGFkY3RsLCBYVVNCX1BBRENUTF9VU0IyX09UR19QQURYX0NUTDEoaW5kZXgpKTsKKwlyZWcg fD0gWFVTQl9QQURDVExfVVNCMl9PVEdfUEFEX0NUTDFfUERfRFI7CisJcGFkY3RsX3dyaXRlbChw YWRjdGwsIHJlZywgWFVTQl9QQURDVExfVVNCMl9PVEdfUEFEWF9DVEwxKGluZGV4KSk7CisKKwl1 ZGVsYXkoMik7CisKKwl0ZWdyYTIxMF91dG1pX2JpYXNfcGFkX3Bvd2VyX29mZihwYWRjdGwsIHBh ZCk7CisJdXNiMi0+cG93ZXJlZF9vbiA9IGZhbHNlOworCisJbXV0ZXhfdW5sb2NrKCZwYWRjdGwt PmxvY2spOworfQorCiBzdGF0aWMgaW50IHRlZ3JhMjEwX3VzYjJfcGh5X2luaXQoc3RydWN0IHBo eSAqcGh5KQogewogCXN0cnVjdCB0ZWdyYV94dXNiX2xhbmUgKmxhbmUgPSBwaHlfZ2V0X2RydmRh dGEocGh5KTsKQEAgLTk0OCw2ICsxMTE4LDM0IEBAIHN0YXRpYyBpbnQgdGVncmEyMTBfdXNiMl9w aHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQogCiAJcHJpdiA9IHRvX3RlZ3JhMjEwX3h1c2Jf cGFkY3RsKHBhZGN0bCk7CiAKKwlpZiAocG9ydC0+dXNiM19wb3J0X2Zha2UgIT0gLTEpIHsKKwkJ dmFsdWUgPSBwYWRjdGxfcmVhZGwocGFkY3RsLCBYVVNCX1BBRENUTF9TU19QT1JUX01BUCk7CisJ CXZhbHVlICY9IH5YVVNCX1BBRENUTF9TU19QT1JUX01BUF9QT1JUWF9NQVBfTUFTSygKKwkJCQkJ cG9ydC0+dXNiM19wb3J0X2Zha2UpOworCQl2YWx1ZSB8PSBYVVNCX1BBRENUTF9TU19QT1JUX01B UF9QT1JUWF9NQVAoCisJCQkJCXBvcnQtPnVzYjNfcG9ydF9mYWtlLCBpbmRleCk7CisJCXBhZGN0 bF93cml0ZWwocGFkY3RsLCB2YWx1ZSwgWFVTQl9QQURDVExfU1NfUE9SVF9NQVApOworCisJCXZh bHVlID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURDVExfRUxQR19QUk9HUkFNMSk7CisJ CXZhbHVlICY9IH5YVVNCX1BBRENUTF9FTFBHX1BST0dSQU0xX1NTUFhfRUxQR19WQ09SRV9ET1dO KAorCQkJCQlwb3J0LT51c2IzX3BvcnRfZmFrZSk7CisJCXBhZGN0bF93cml0ZWwocGFkY3RsLCB2 YWx1ZSwgWFVTQl9QQURDVExfRUxQR19QUk9HUkFNMSk7CisKKwkJdXNsZWVwX3JhbmdlKDEwMCwg MjAwKTsKKworCQl2YWx1ZSA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX0VMUEdf UFJPR1JBTTEpOworCQl2YWx1ZSAmPSB+WFVTQl9QQURDVExfRUxQR19QUk9HUkFNMV9TU1BYX0VM UEdfQ0xBTVBfRU5fRUFSTFkoCisJCQkJCXBvcnQtPnVzYjNfcG9ydF9mYWtlKTsKKwkJcGFkY3Rs X3dyaXRlbChwYWRjdGwsIHZhbHVlLCBYVVNCX1BBRENUTF9FTFBHX1BST0dSQU0xKTsKKworCQl1 c2xlZXBfcmFuZ2UoMTAwLCAyMDApOworCisJCXZhbHVlID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwg WFVTQl9QQURDVExfRUxQR19QUk9HUkFNMSk7CisJCXZhbHVlICY9IH5YVVNCX1BBRENUTF9FTFBH X1BST0dSQU0xX1NTUFhfRUxQR19DTEFNUF9FTigKKwkJCQkJcG9ydC0+dXNiM19wb3J0X2Zha2Up OworCQlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgdmFsdWUsIFhVU0JfUEFEQ1RMX0VMUEdfUFJPR1JB TTEpOworCX0KKwogCXZhbHVlID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURDVExfVVNC Ml9CSUFTX1BBRF9DVEwwKTsKIAl2YWx1ZSAmPSB+KChYVVNCX1BBRENUTF9VU0IyX0JJQVNfUEFE X0NUTDBfSFNfU1FVRUxDSF9MRVZFTF9NQVNLIDw8CiAJCSAgICBYVVNCX1BBRENUTF9VU0IyX0JJ QVNfUEFEX0NUTDBfSFNfU1FVRUxDSF9MRVZFTF9TSElGVCkgfApAQCAtOTY1LDcgKzExNjMsMTQg QEAgc3RhdGljIGludCB0ZWdyYTIxMF91c2IyX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkp CiAKIAl2YWx1ZSA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX1VTQjJfUE9SVF9D QVApOwogCXZhbHVlICY9IH5YVVNCX1BBRENUTF9VU0IyX1BPUlRfQ0FQX1BPUlRYX0NBUF9NQVNL KGluZGV4KTsKLQl2YWx1ZSB8PSBYVVNCX1BBRENUTF9VU0IyX1BPUlRfQ0FQX1BPUlRYX0NBUF9I T1NUKGluZGV4KTsKKwlpZiAocG9ydC0+cG9ydF9jYXAgPT0gVVNCX1BPUlRfRElTQUJMRUQpCisJ CXZhbHVlIHw9IFhVU0JfUEFEQ1RMX1VTQjJfUE9SVF9DQVBfUE9SVFhfQ0FQX0RJU0FCTEVEKGlu ZGV4KTsKKwllbHNlIGlmIChwb3J0LT5wb3J0X2NhcCA9PSBVU0JfREVWSUNFX0NBUCkKKwkJdmFs dWUgfD0gWFVTQl9QQURDVExfVVNCMl9QT1JUX0NBUF9QT1JUWF9DQVBfREVWSUNFKGluZGV4KTsK KwllbHNlIGlmIChwb3J0LT5wb3J0X2NhcCA9PSBVU0JfSE9TVF9DQVApCisJCXZhbHVlIHw9IFhV U0JfUEFEQ1RMX1VTQjJfUE9SVF9DQVBfUE9SVFhfQ0FQX0hPU1QoaW5kZXgpOworCWVsc2UgaWYg KHBvcnQtPnBvcnRfY2FwID09IFVTQl9PVEdfQ0FQKQorCQl2YWx1ZSB8PSBYVVNCX1BBRENUTF9V U0IyX1BPUlRfQ0FQX1BPUlRYX0NBUF9PVEcoaW5kZXgpOwogCXBhZGN0bF93cml0ZWwocGFkY3Rs LCB2YWx1ZSwgWFVTQl9QQURDVExfVVNCMl9QT1JUX0NBUCk7CiAKIAl2YWx1ZSA9IHBhZGN0bF9y ZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX1VTQjJfT1RHX1BBRFhfQ1RMMChpbmRleCkpOwpAQCAt OTk3LDcgKzEyMDIsMTIgQEAgc3RhdGljIGludCB0ZWdyYTIxMF91c2IyX3BoeV9wb3dlcl9vbihz dHJ1Y3QgcGh5ICpwaHkpCiAJCQkgICAgIFhVU0JfUEFEQ1RMX1VTQjJfQkFUVEVSWV9DSFJHX09U R1BBRFhfQ1RMMShpbmRleCkpOwogCXZhbHVlICY9IH4oWFVTQl9QQURDVExfVVNCMl9CQVRURVJZ X0NIUkdfT1RHUEFEX0NUTDFfVlJFR19MRVZfTUFTSyA8PAogCQkgICBYVVNCX1BBRENUTF9VU0Iy X0JBVFRFUllfQ0hSR19PVEdQQURfQ1RMMV9WUkVHX0xFVl9TSElGVCk7Ci0JdmFsdWUgfD0gWFVT Ql9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEX0NUTDFfVlJFR19GSVgxODsKKwlpZiAo cG9ydC0+cG9ydF9jYXAgPT0gVVNCX0hPU1RfQ0FQKQorCQl2YWx1ZSB8PSBYVVNCX1BBRENUTF9V U0IyX0JBVFRFUllfQ0hSR19PVEdQQURfQ1RMMV9WUkVHX0ZJWDE4OworCWVsc2UKKwkJdmFsdWUg fD0KKwkJICAgICAgWFVTQl9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEX0NUTDFfVlJF R19MRVZfVkFMIDw8CisJCSAgICAgIFhVU0JfUEFEQ1RMX1VTQjJfQkFUVEVSWV9DSFJHX09UR1BB RF9DVEwxX1ZSRUdfTEVWX1NISUZUOwogCXBhZGN0bF93cml0ZWwocGFkY3RsLCB2YWx1ZSwKIAkJ ICAgICAgWFVTQl9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEWF9DVEwxKGluZGV4KSk7 CiAKQEAgLTEwNzAsNiArMTI4MCwzNCBAQCBzdGF0aWMgaW50IHRlZ3JhMjEwX3VzYjJfcGh5X3Bv d2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpCiAKIAltdXRleF9sb2NrKCZwYWRjdGwtPmxvY2spOwog CisJaWYgKHBvcnQtPnVzYjNfcG9ydF9mYWtlICE9IC0xKSB7CisJCXZhbHVlID0gcGFkY3RsX3Jl YWRsKHBhZGN0bCwgWFVTQl9QQURDVExfRUxQR19QUk9HUkFNMSk7CisJCXZhbHVlIHw9IFhVU0Jf UEFEQ1RMX0VMUEdfUFJPR1JBTTFfU1NQWF9FTFBHX0NMQU1QX0VOX0VBUkxZKAorCQkJCQlwb3J0 LT51c2IzX3BvcnRfZmFrZSk7CisJCXBhZGN0bF93cml0ZWwocGFkY3RsLCB2YWx1ZSwgWFVTQl9Q QURDVExfRUxQR19QUk9HUkFNMSk7CisKKwkJdXNsZWVwX3JhbmdlKDEwMCwgMjAwKTsKKworCQl2 YWx1ZSA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX0VMUEdfUFJPR1JBTTEpOwor CQl2YWx1ZSB8PSBYVVNCX1BBRENUTF9FTFBHX1BST0dSQU0xX1NTUFhfRUxQR19DTEFNUF9FTigK KwkJCQkJcG9ydC0+dXNiM19wb3J0X2Zha2UpOworCQlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgdmFs dWUsIFhVU0JfUEFEQ1RMX0VMUEdfUFJPR1JBTTEpOworCisJCXVzbGVlcF9yYW5nZSgyNTAsIDM1 MCk7CisKKwkJdmFsdWUgPSBwYWRjdGxfcmVhZGwocGFkY3RsLCBYVVNCX1BBRENUTF9FTFBHX1BS T0dSQU0xKTsKKwkJdmFsdWUgfD0gWFVTQl9QQURDVExfRUxQR19QUk9HUkFNMV9TU1BYX0VMUEdf VkNPUkVfRE9XTigKKwkJCQkJcG9ydC0+dXNiM19wb3J0X2Zha2UpOworCQlwYWRjdGxfd3JpdGVs KHBhZGN0bCwgdmFsdWUsIFhVU0JfUEFEQ1RMX0VMUEdfUFJPR1JBTTEpOworCisJCXZhbHVlID0g cGFkY3RsX3JlYWRsKHBhZGN0bCwgWFVTQl9QQURDVExfU1NfUE9SVF9NQVApOworCQl2YWx1ZSAm PSB+WFVTQl9QQURDVExfU1NfUE9SVF9NQVBfUE9SVFhfTUFQX01BU0soCisJCQkJCXBvcnQtPnVz YjNfcG9ydF9mYWtlKTsKKwkJdmFsdWUgfD0gWFVTQl9QQURDVExfU1NfUE9SVF9NQVBfUE9SVFhf TUFQX01BU0soCisJCQkJCXBvcnQtPnVzYjNfcG9ydF9mYWtlKTsKKwkJcGFkY3RsX3dyaXRlbChw YWRjdGwsIHZhbHVlLCBYVVNCX1BBRENUTF9TU19QT1JUX01BUCk7CisJfQorCiAJaWYgKFdBUk5f T04ocGFkLT5lbmFibGUgPT0gMCkpCiAJCWdvdG8gb3V0OwogCkBAIC0xOTUzLDYgKzIxOTEsNTUg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWdyYV94dXNiX3BvcnRfb3BzIHRlZ3JhMjEwX3VzYjNf cG9ydF9vcHMgPSB7CiAJLm1hcCA9IHRlZ3JhMjEwX3VzYjNfcG9ydF9tYXAsCiB9OwogCitzdGF0 aWMgaW50IHRlZ3JhMjEwX3h1c2JfcGFkY3RsX3ZidXNfb3ZlcnJpZGUoc3RydWN0IHRlZ3JhX3h1 c2JfcGFkY3RsICpwYWRjdGwsCisJCQkJCSAgICAgIGJvb2wgc2V0KQoreworCXUzMiByZWc7CisK KwlkZXZfZGJnKHBhZGN0bC0+ZGV2LCAiJXMgdmJ1cyBvdmVycmlkZVxuIiwgc2V0ID8gInNldCIg OiAiY2xlYXIiKTsKKworCXJlZyA9IHBhZGN0bF9yZWFkbChwYWRjdGwsIFhVU0JfUEFEQ1RMX1VT QjJfVkJVU19JRCk7CisJaWYgKHNldCkgeworCQlyZWcgfD0gWFVTQl9QQURDVExfVVNCMl9WQlVT X0lEX09WRVJSSURFX1ZCVVNfT047CisJCXJlZyAmPSB+KFhVU0JfUEFEQ1RMX1VTQjJfVkJVU19J RF9PVkVSUklERV9NQVNLIDw8CisJCQkgICBYVVNCX1BBRENUTF9VU0IyX1ZCVVNfSURfT1ZFUlJJ REVfU0hJRlQpOworCQlyZWcgfD0gWFVTQl9QQURDVExfVVNCMl9WQlVTX0lEX09WRVJSSURFX1ZB TCA8PAorCQkJIFhVU0JfUEFEQ1RMX1VTQjJfVkJVU19JRF9PVkVSUklERV9TSElGVDsKKwl9IGVs c2UKKwkJcmVnICY9IH5YVVNCX1BBRENUTF9VU0IyX1ZCVVNfSURfT1ZFUlJJREVfVkJVU19PTjsK KwlwYWRjdGxfd3JpdGVsKHBhZGN0bCwgcmVnLCBYVVNCX1BBRENUTF9VU0IyX1ZCVVNfSUQpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGVncmEyMTBfdXRtaV9wb3J0X3Jlc2V0X3F1 aXJrKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBhZGN0 bDsKKwlzdHJ1Y3QgdGVncmFfeHVzYl9sYW5lICpsYW5lOworCXN0cnVjdCBkZXZpY2UgKmRldjsK Kwl1MzIgcmVnOworCisJaWYgKCFwaHkpCisJCXJldHVybiAtRU5PREVWOworCisJbGFuZSA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOworCXBhZGN0bCA9IGxhbmUtPnBhZC0+cGFkY3RsOworCWRldiA9 IHBhZGN0bC0+ZGV2OworCisJcmVnID0gcGFkY3RsX3JlYWRsKHBhZGN0bCwKKwkJCQlYVVNCX1BB RENUTF9VU0IyX0JBVFRFUllfQ0hSR19PVEdQQURYX0NUTDAoMCkpOworCWRldl9kYmcoZGV2LCAi QkFUVEVSWV9DSFJHX09UR1BBRFhfQ1RMMCgwKTogMHgleFxuIiwgcmVnKTsKKworCWlmICgocmVn ICYgWFVTQl9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEX0NUTDBfWklQKSB8fAorCSAg ICAocmVnICYgWFVTQl9QQURDVExfVVNCMl9CQVRURVJZX0NIUkdfT1RHUEFEX0NUTDBfWklOKSkg eworCQlkZXZfZGJnKGRldiwgIlRvZ2dsZSB2YnVzXG4iKTsKKwkJdGVncmEyMTBfeHVzYl9wYWRj dGxfdmJ1c19vdmVycmlkZShwYWRjdGwsIGZhbHNlKTsKKwkJdGVncmEyMTBfeHVzYl9wYWRjdGxf dmJ1c19vdmVycmlkZShwYWRjdGwsIHRydWUpOworCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBpbnQKIHRlZ3JhMjEwX3h1c2JfcmVhZF9mdXNlX2NhbGlicmF0aW9uKHN0 cnVjdCB0ZWdyYTIxMF94dXNiX2Z1c2VfY2FsaWJyYXRpb24gKmZ1c2UpCiB7CkBAIC0yMDE1LDYg KzIzMDIsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bF9vcHMgdGVn cmEyMTBfeHVzYl9wYWRjdGxfb3BzID0gewogCS5yZW1vdmUgPSB0ZWdyYTIxMF94dXNiX3BhZGN0 bF9yZW1vdmUsCiAJLnVzYjNfc2V0X2xmcHNfZGV0ZWN0ID0gdGVncmEyMTBfdXNiM19zZXRfbGZw c19kZXRlY3QsCiAJLmhzaWNfc2V0X2lkbGUgPSB0ZWdyYTIxMF9oc2ljX3NldF9pZGxlLAorCS52 YnVzX292ZXJyaWRlID0gdGVncmEyMTBfeHVzYl9wYWRjdGxfdmJ1c19vdmVycmlkZSwKKwkudXRt aV9wYWRfcG93ZXJfb24gPSB0ZWdyYTIxMF91dG1pX3BhZF9wb3dlcl9vbiwKKwkudXRtaV9wYWRf cG93ZXJfZG93biA9IHRlZ3JhMjEwX3V0bWlfcGFkX3Bvd2VyX2Rvd24sCisJLnV0bWlfcG9ydF9y ZXNldF9xdWlyayA9IHRlZ3JhMjEwX3V0bWlfcG9ydF9yZXNldF9xdWlyaywKIH07CiAKIGNvbnN0 IHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bF9zb2MgdGVncmEyMTBfeHVzYl9wYWRjdGxfc29jID0g ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvdGVncmEveHVzYi5jIGIvZHJpdmVycy9waHkvdGVn cmEveHVzYi5jCmluZGV4IDViM2I4ODYuLjlhMjViNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5 L3RlZ3JhL3h1c2IuYworKysgYi9kcml2ZXJzL3BoeS90ZWdyYS94dXNiLmMKQEAgLTEsNSArMSw1 IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUsIE5WSURJQSBDT1JQT1JBVElPTi4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgTlZJRElB IENPUlBPUkFUSU9OLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAogICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSwKQEAgLTU0Niw5ICs1NDYsMjYgQEAgc3RhdGljIGludCB0ZWdyYV94dXNi X3VzYjJfcG9ydF9wYXJzZV9kdChzdHJ1Y3QgdGVncmFfeHVzYl91c2IyX3BvcnQgKnVzYjIpCiB7 CiAJc3RydWN0IHRlZ3JhX3h1c2JfcG9ydCAqcG9ydCA9ICZ1c2IyLT5iYXNlOwogCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBwb3J0LT5kZXYub2Zfbm9kZTsKKwljb25zdCBjaGFyICpwcm9wX3N0 cmluZzsKKwl1MzIgdmFsdWU7CiAKIAl1c2IyLT5pbnRlcm5hbCA9IG9mX3Byb3BlcnR5X3JlYWRf Ym9vbChucCwgIm52aWRpYSxpbnRlcm5hbCIpOwogCisJdXNiMi0+cG9ydF9jYXAgPSBVU0JfUE9S VF9ESVNBQkxFRDsgLyogZGVmYXVsdCAqLworCWlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmco bnAsICJtb2RlIiwgJnByb3Bfc3RyaW5nKSkgeworCQlpZiAoIXN0cmNtcCgiaG9zdCIsIHByb3Bf c3RyaW5nKSkKKwkJCXVzYjItPnBvcnRfY2FwID0gVVNCX0hPU1RfQ0FQOworCQllbHNlIGlmICgh c3RyY21wKCJkZXZpY2UiLCBwcm9wX3N0cmluZykpCisJCQl1c2IyLT5wb3J0X2NhcCA9IFVTQl9E RVZJQ0VfQ0FQOworCQllbHNlIGlmICghc3RyY21wKCJvdGciLCBwcm9wX3N0cmluZykpCisJCQl1 c2IyLT5wb3J0X2NhcCA9IFVTQl9PVEdfQ0FQOworCX0KKworCWlmICghb2ZfcHJvcGVydHlfcmVh ZF91MzIobnAsICJudmlkaWEsdXNiMy1wb3J0LWZha2UiLCAmdmFsdWUpKQorCQl1c2IyLT51c2Iz X3BvcnRfZmFrZSA9IHZhbHVlOworCWVsc2UKKwkJdXNiMi0+dXNiM19wb3J0X2Zha2UgPSAtMTsg LyogZGVmYXVsdCAqLworCiAJdXNiMi0+c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZwb3J0 LT5kZXYsICJ2YnVzIik7CiAJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyh1c2IyLT5zdXBwbHkpOwog fQpAQCAtOTc2LDcgKzk5Myw3IEBAIGludCB0ZWdyYV94dXNiX3BhZGN0bF91c2IzX3NhdmVfY29u dGV4dChzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBhZGN0bCwKIAlpZiAocGFkY3RsLT5zb2Mt Pm9wcy0+dXNiM19zYXZlX2NvbnRleHQpCiAJCXJldHVybiBwYWRjdGwtPnNvYy0+b3BzLT51c2Iz X3NhdmVfY29udGV4dChwYWRjdGwsIHBvcnQpOwogCi0JcmV0dXJuIC1FTk9TWVM7CisJcmV0dXJu IC1FSU5WQUw7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh0ZWdyYV94dXNiX3BhZGN0bF91c2IzX3Nh dmVfY29udGV4dCk7CiAKQEAgLTk4Niw3ICsxMDAzLDcgQEAgaW50IHRlZ3JhX3h1c2JfcGFkY3Rs X2hzaWNfc2V0X2lkbGUoc3RydWN0IHRlZ3JhX3h1c2JfcGFkY3RsICpwYWRjdGwsCiAJaWYgKHBh ZGN0bC0+c29jLT5vcHMtPmhzaWNfc2V0X2lkbGUpCiAJCXJldHVybiBwYWRjdGwtPnNvYy0+b3Bz LT5oc2ljX3NldF9pZGxlKHBhZGN0bCwgcG9ydCwgaWRsZSk7CiAKLQlyZXR1cm4gLUVOT1NZUzsK KwlyZXR1cm4gLUVJTlZBTDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHRlZ3JhX3h1c2JfcGFkY3Rs X2hzaWNfc2V0X2lkbGUpOwogCkBAIC05OTcsMTAgKzEwMTQsNjAgQEAgaW50IHRlZ3JhX3h1c2Jf cGFkY3RsX3VzYjNfc2V0X2xmcHNfZGV0ZWN0KHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bCAqcGFk Y3RsLAogCQlyZXR1cm4gcGFkY3RsLT5zb2MtPm9wcy0+dXNiM19zZXRfbGZwc19kZXRlY3QocGFk Y3RsLCBwb3J0LAogCQkJCQkJCSAgICAgIGVuYWJsZSk7CiAKLQlyZXR1cm4gLUVOT1NZUzsKKwly ZXR1cm4gLUVJTlZBTDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHRlZ3JhX3h1c2JfcGFkY3RsX3Vz YjNfc2V0X2xmcHNfZGV0ZWN0KTsKIAoraW50IHRlZ3JhX3h1c2JfcGFkY3RsX3NldF92YnVzX292 ZXJyaWRlKHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bCAqcGFkY3RsKQoreworCWlmIChwYWRjdGwt PnNvYy0+b3BzLT52YnVzX292ZXJyaWRlKQorCQlyZXR1cm4gcGFkY3RsLT5zb2MtPm9wcy0+dmJ1 c19vdmVycmlkZShwYWRjdGwsIHRydWUpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CitFWFBPUlRf U1lNQk9MX0dQTCh0ZWdyYV94dXNiX3BhZGN0bF9zZXRfdmJ1c19vdmVycmlkZSk7CisKK2ludCB0 ZWdyYV94dXNiX3BhZGN0bF9jbGVhcl92YnVzX292ZXJyaWRlKHN0cnVjdCB0ZWdyYV94dXNiX3Bh ZGN0bCAqcGFkY3RsKQoreworCWlmIChwYWRjdGwtPnNvYy0+b3BzLT52YnVzX292ZXJyaWRlKQor CQlyZXR1cm4gcGFkY3RsLT5zb2MtPm9wcy0+dmJ1c19vdmVycmlkZShwYWRjdGwsIGZhbHNlKTsK KworCXJldHVybiAtRUlOVkFMOworfQorRVhQT1JUX1NZTUJPTF9HUEwodGVncmFfeHVzYl9wYWRj dGxfY2xlYXJfdmJ1c19vdmVycmlkZSk7CisKK3ZvaWQgdGVncmFfcGh5X3h1c2JfdXRtaV9wYWRf cG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCB0ZWdyYV94dXNiX2xhbmUgKmxh bmUgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBh ZGN0bCA9IGxhbmUtPnBhZC0+cGFkY3RsOworCisJaWYgKHBhZGN0bC0+c29jLT5vcHMtPnV0bWlf cGFkX3Bvd2VyX29uKQorCQlwYWRjdGwtPnNvYy0+b3BzLT51dG1pX3BhZF9wb3dlcl9vbihwaHkp OworfQorRVhQT1JUX1NZTUJPTF9HUEwodGVncmFfcGh5X3h1c2JfdXRtaV9wYWRfcG93ZXJfb24p OworCit2b2lkIHRlZ3JhX3BoeV94dXNiX3V0bWlfcGFkX3Bvd2VyX2Rvd24oc3RydWN0IHBoeSAq cGh5KQoreworCXN0cnVjdCB0ZWdyYV94dXNiX2xhbmUgKmxhbmUgPSBwaHlfZ2V0X2RydmRhdGEo cGh5KTsKKwlzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBhZGN0bCA9IGxhbmUtPnBhZC0+cGFk Y3RsOworCisJaWYgKHBhZGN0bC0+c29jLT5vcHMtPnV0bWlfcGFkX3Bvd2VyX2Rvd24pCisJCXBh ZGN0bC0+c29jLT5vcHMtPnV0bWlfcGFkX3Bvd2VyX2Rvd24ocGh5KTsKK30KK0VYUE9SVF9TWU1C T0xfR1BMKHRlZ3JhX3BoeV94dXNiX3V0bWlfcGFkX3Bvd2VyX2Rvd24pOworCitpbnQgdGVncmFf cGh5X3h1c2JfdXRtaV9wb3J0X3Jlc2V0X3F1aXJrKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1 Y3QgdGVncmFfeHVzYl9sYW5lICpsYW5lID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0 IHRlZ3JhX3h1c2JfcGFkY3RsICpwYWRjdGwgPSBsYW5lLT5wYWQtPnBhZGN0bDsKKworCWlmIChw YWRjdGwtPnNvYy0+b3BzLT51dG1pX3BvcnRfcmVzZXRfcXVpcmspCisJCXJldHVybiBwYWRjdGwt PnNvYy0+b3BzLT51dG1pX3BvcnRfcmVzZXRfcXVpcmsocGh5KTsKKworCXJldHVybiAtRUlOVkFM OworfQorRVhQT1JUX1NZTUJPTF9HUEwodGVncmFfcGh5X3h1c2JfdXRtaV9wb3J0X3Jlc2V0X3F1 aXJrKTsKKwogTU9EVUxFX0FVVEhPUigiVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNv bT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGVncmEgWFVTQiBQYWQgQ29udHJvbGxlciBkcml2 ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5 L3RlZ3JhL3h1c2IuaCBiL2RyaXZlcnMvcGh5L3RlZ3JhL3h1c2IuaAppbmRleCBiNDlkYmMzLi43 NGFjYzA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS90ZWdyYS94dXNiLmgKKysrIGIvZHJpdmVy cy9waHkvdGVncmEveHVzYi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykg MjAxNC0yMDE1LCBOVklESUEgQ09SUE9SQVRJT04uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog Q29weXJpZ2h0IChjKSAyMDE0LTIwMTgsIE5WSURJQSBDT1JQT1JBVElPTi4gIEFsbCByaWdodHMg cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIEdvb2dsZSBJbmMuCiAgKgogICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKQEAgLTU4LDYgKzU4LDcgQEAgc3RydWN0IHRlZ3JhX3h1c2JfdXNiMl9sYW5l IHsKIAlzdHJ1Y3QgdGVncmFfeHVzYl9sYW5lIGJhc2U7CiAKIAl1MzIgaHNfY3Vycl9sZXZlbF9v ZmZzZXQ7CisJYm9vbCBwb3dlcmVkX29uOwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdGVn cmFfeHVzYl91c2IyX2xhbmUgKgpAQCAtMjY3LDExICsyNjgsMjAgQEAgc3RydWN0IHRlZ3JhX3h1 c2JfcG9ydCAqCiB0ZWdyYV94dXNiX2ZpbmRfcG9ydChzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwg KnBhZGN0bCwgY29uc3QgY2hhciAqdHlwZSwKIAkJICAgICB1bnNpZ25lZCBpbnQgaW5kZXgpOwog CitlbnVtIHRlZ3JhX3h1c2JfdXNiX3BvcnRfY2FwIHsKKwlVU0JfUE9SVF9ESVNBQkxFRCA9IDAs CisJVVNCX0hPU1RfQ0FQLAorCVVTQl9ERVZJQ0VfQ0FQLAorCVVTQl9PVEdfQ0FQLAorfTsKKwog c3RydWN0IHRlZ3JhX3h1c2JfdXNiMl9wb3J0IHsKIAlzdHJ1Y3QgdGVncmFfeHVzYl9wb3J0IGJh c2U7CiAKIAlzdHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7CiAJYm9vbCBpbnRlcm5hbDsKKwllbnVt IHRlZ3JhX3h1c2JfdXNiX3BvcnRfY2FwIHBvcnRfY2FwOworCWludCB1c2IzX3BvcnRfZmFrZTsK IH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRlZ3JhX3h1c2JfdXNiMl9wb3J0ICoKQEAgLTM1 Myw2ICszNjMsMTAgQEAgc3RydWN0IHRlZ3JhX3h1c2JfcGFkY3RsX29wcyB7CiAJCQkgICAgIHVu c2lnbmVkIGludCBpbmRleCwgYm9vbCBpZGxlKTsKIAlpbnQgKCp1c2IzX3NldF9sZnBzX2RldGVj dCkoc3RydWN0IHRlZ3JhX3h1c2JfcGFkY3RsICpwYWRjdGwsCiAJCQkJICAgIHVuc2lnbmVkIGlu dCBpbmRleCwgYm9vbCBlbmFibGUpOworCWludCAoKnZidXNfb3ZlcnJpZGUpKHN0cnVjdCB0ZWdy YV94dXNiX3BhZGN0bCAqcGFkY3RsLCBib29sIHNldCk7CisJdm9pZCAoKnV0bWlfcGFkX3Bvd2Vy X29uKShzdHJ1Y3QgcGh5ICpwaHkpOworCXZvaWQgKCp1dG1pX3BhZF9wb3dlcl9kb3duKShzdHJ1 Y3QgcGh5ICpwaHkpOworCWludCAoKnV0bWlfcG9ydF9yZXNldF9xdWlyaykoc3RydWN0IHBoeSAq cGh5KTsKIH07CiAKIHN0cnVjdCB0ZWdyYV94dXNiX3BhZGN0bF9zb2MgewpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9waHkvdGVncmEveHVzYi5oIGIvaW5jbHVkZS9saW51eC9waHkvdGVncmEv eHVzYi5oCmluZGV4IDhlMWE1N2EuLjE0M2FmNDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv cGh5L3RlZ3JhL3h1c2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BoeS90ZWdyYS94dXNiLmgKQEAg LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE2LCBOVklESUEgQ09SUE9SQVRJ T04uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMTgsIE5W SURJQSBDT1JQT1JBVElPTi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKICAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UsCkBAIC0yNiw1ICsyNiwxMCBAQCBpbnQgdGVncmFfeHVzYl9wYWRj dGxfaHNpY19zZXRfaWRsZShzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBhZGN0bCwKIAkJCQkg ICAgdW5zaWduZWQgaW50IHBvcnQsIGJvb2wgaWRsZSk7CiBpbnQgdGVncmFfeHVzYl9wYWRjdGxf dXNiM19zZXRfbGZwc19kZXRlY3Qoc3RydWN0IHRlZ3JhX3h1c2JfcGFkY3RsICpwYWRjdGwsCiAJ CQkJCSAgIHVuc2lnbmVkIGludCBwb3J0LCBib29sIGVuYWJsZSk7CitpbnQgdGVncmFfeHVzYl9w YWRjdGxfc2V0X3ZidXNfb3ZlcnJpZGUoc3RydWN0IHRlZ3JhX3h1c2JfcGFkY3RsICpwYWRjdGwp OworaW50IHRlZ3JhX3h1c2JfcGFkY3RsX2NsZWFyX3ZidXNfb3ZlcnJpZGUoc3RydWN0IHRlZ3Jh X3h1c2JfcGFkY3RsICpwYWRjdGwpOwogCit2b2lkIHRlZ3JhX3BoeV94dXNiX3V0bWlfcGFkX3Bv d2VyX29uKHN0cnVjdCBwaHkgKnBoeSk7Cit2b2lkIHRlZ3JhX3BoeV94dXNiX3V0bWlfcGFkX3Bv d2VyX2Rvd24oc3RydWN0IHBoeSAqcGh5KTsKK2ludCB0ZWdyYV9waHlfeHVzYl91dG1pX3BvcnRf cmVzZXRfcXVpcmsoc3RydWN0IHBoeSAqcGh5KTsKICNlbmRpZiAvKiBQSFlfVEVHUkFfWFVTQl9I ICovCg==