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: [v2,02/49] usb: dwc2: Force mode optimizations From: Grigor Tovmasyan Message-Id: Date: Mon, 25 Dec 2017 15:18:03 +0400 To: John Youn , Felipe Balbi , Greg Kroah-Hartman , linux-usb@vger.kernel.org Cc: Vardan Mikayelyan , Grigor Tovmasyan , Stefan Wahren List-ID: RnJvbTogVmFyZGFuIE1pa2F5ZWx5YW4gPG12YXJkYW5Ac3lub3BzeXMuY29tPgoKSWYgdGhlIGRy X21vZGUgaXMgVVNCX0RSX01PREVfT1RHLCBmb3JjaW5nIHRoZSBtb2RlIGlzIG5lZWRlZCBkdXJp bmcKZHJpdmVyIHByb2JlIHRvIGdldCB0aGUgaG9zdCBhbmQgZGV2aWNlIHNwZWNpZmljIEhXIHBh cmFtZXRlcnMuIFRoZW4gd2UKY2xlYXIgdGhlIGZvcmNlIG1vZGUgYml0cyBzbyB0aGF0IHRoZSBj b3JlIG9wZXJhdGVzIGluIE9URyBtb2RlLgoKVGhlIGZvcmNlIG1vZGUgYml0cyBzaG91bGQgbm90 IGJlIHRvdWNoZWQgYXQgYW55IG90aGVyIHRpbWUgZHVyaW5nIHRoZQpkcml2ZXIgbGlmZXRpbWUg YW5kIHRoZXkgc2hvdWxkIGJlIHByZXNlcnZlZCB3aGVuZXZlciB0aGUgR1VTQkNGRwpyZWdpc3Rl ciBpcyB3cml0dGVuIHRvLiBUaGUgZm9yY2UgbW9kZSBiaXQgdmFsdWVzIHdpbGwgcGVyc2lzdCBh Y3Jvc3MKc29mdCByZXNldHMgb2YgdGhlIGNvcmUuCgpJZiB0aGUgZHJfbW9kZSBpcyBlaXRoZXIg VVNCX0RSX01PREVfSE9TVCBvciBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMLCB0aGUKZm9yY2UgbW9k ZSBpcyBzZXQganVzdCBvbmNlIGF0IHByb2JlIHRvIGNvbmZpZ3VyZSB0aGUgY29yZSBhcyBlaXRo ZXIgYQpob3N0IG9yIHBlcmlwaGVyYWwuCgpHaXZlbiB0aGUgYWJvdmUsIHdlIG5vIGxvbmdlciBu ZWVkIGFueSBvdGhlciByZXNldCBkZWxheXMsIGZvcmNlIGRlbGF5cywKb3IgYW55IGZvcmNlZCBt b2RlcyBhbnl3aGVyZSBlbHNlIGluIHRoZSBkcml2ZXIuIFNvIHJlcGxhY2UgYWxsIGNhbGxzIHRv CmR3YzJfY29yZV9yZXNldF9hbmRfZm9yY2VfZHJfbW9kZSgpIHdpdGggZHdjMl9jb3JlX3Jlc2V0 KCkgYW5kIHJlbW92ZQphbGwgb3RoZXIgdW5uZWNlc3NhcnkgZGVsYXlzLgoKQWxzbyByZW1vdmUg dGhlIGR3YzJfZm9yY2VfbW9kZV9pZl9uZWVkZWQoKSBmdW5jdGlvbiBzaW5jZSB0aGUgImlmCm5l ZWRlZCIgcGFydCBpcyBhbHJlYWR5IHRha2VuIGNhcmUgb2YgYnkgdGhlIHBvbGxpbmcgaW4KZHdj Ml9mb3JjZV9tb2RlKCkuCgpGaW5hbGx5LCByZW1vdmUgYWxsIG90aGVyIGNhbGxzIHRvIGR3YzJf Y2xlYXJfZm9yY2VfbW9kZSgpLgoKVGVzdGVkLWJ5OiBTdGVmYW4gV2FocmVuIDxzdGVmYW4ud2Fo cmVuQGkyc2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb2huIFlvdW4gPGpvaG55b3VuQHN5bm9wc3lz LmNvbT4KU2lnbmVkLW9mZi1ieTogVmFyZGFuIE1pa2F5ZWx5YW4gPG12YXJkYW5Ac3lub3BzeXMu Y29tPgpTaWduZWQtb2ZmLWJ5OiBHcmlnb3IgVG92bWFzeWFuIDx0b3ZtYXN5YUBzeW5vcHN5cy5j b20+Ci0tLQogZHJpdmVycy91c2IvZHdjMi9jb3JlLmMgICAgIHwgNjEgKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3VzYi9kd2MyL2NvcmUuaCAg ICAgfCAgNCArLS0KIGRyaXZlcnMvdXNiL2R3YzIvaGNkLmMgICAgICB8ICA2ICsrLS0tCiBkcml2 ZXJzL3VzYi9kd2MyL3BhcmFtcy5jICAgfCAxMiArKy0tLS0tLS0KIGRyaXZlcnMvdXNiL2R3YzIv cGxhdGZvcm0uYyB8ICA5ICsrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygr KSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMi9jb3JlLmMg Yi9kcml2ZXJzL3VzYi9kd2MyL2NvcmUuYwppbmRleCA4MmE3ZDk4YzM0MzYuLmRiY2EzYjg4OTBk YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9jb3JlLmMKKysrIGIvZHJpdmVycy91c2Iv ZHdjMi9jb3JlLmMKQEAgLTM3NiwxNCArMzc2LDE0IEBAIGludCBkd2MyX2NvcmVfcmVzZXQoc3Ry dWN0IGR3YzJfaHNvdGcgKmhzb3RnLCBib29sIHNraXBfd2FpdCkKIAlyZXR1cm4gMDsKIH0KIAot LyoKLSAqIEZvcmNlIHRoZSBtb2RlIG9mIHRoZSBjb250cm9sbGVyLgorLyoqCisgKiBkd2MyX2Zv cmNlX21vZGUoKSAtIEZvcmNlIHRoZSBtb2RlIG9mIHRoZSBjb250cm9sbGVyLgogICoKICAqIEZv cmNpbmcgdGhlIG1vZGUgaXMgbmVlZGVkIGZvciB0d28gY2FzZXM6CiAgKgogICogMSkgSWYgdGhl IGRyX21vZGUgaXMgc2V0IHRvIGVpdGhlciBIT1NUIG9yIFBFUklQSEVSQUwgd2UgZm9yY2UgdGhl CiAgKiBjb250cm9sbGVyIHRvIHN0YXkgaW4gYSBwYXJ0aWN1bGFyIG1vZGUgcmVnYXJkbGVzcyBv ZiBJRCBwaW4KLSAqIGNoYW5nZXMuIFdlIGRvIHRoaXMgdXN1YWxseSBhZnRlciBhIGNvcmUgcmVz ZXQuCisgKiBjaGFuZ2VzLiBXZSBkbyB0aGlzIG9uY2UgZHVyaW5nIHByb2JlLgogICoKICAqIDIp IER1cmluZyBwcm9iZSB3ZSB3YW50IHRvIHJlYWQgcmVzZXQgdmFsdWVzIG9mIHRoZSBodwogICog Y29uZmlndXJhdGlvbiByZWdpc3RlcnMgdGhhdCBhcmUgb25seSBhdmFpbGFibGUgaW4gZWl0aGVy IGhvc3Qgb3IKQEAgLTQwMCw3ICs0MDAsNyBAQCBpbnQgZHdjMl9jb3JlX3Jlc2V0KHN0cnVjdCBk d2MyX2hzb3RnICpoc290ZywgYm9vbCBza2lwX3dhaXQpCiAgKiB0aGUgZmlsdGVyIGlzIGNvbmZp Z3VyZWQgYW5kIGVuYWJsZWQuIFdlIHBvbGwgdGhlIGN1cnJlbnQgbW9kZSBvZgogICogdGhlIGNv bnRyb2xsZXIgdG8gYWNjb3VudCBmb3IgdGhpcyBkZWxheS4KICAqLwotc3RhdGljIGJvb2wgZHdj Ml9mb3JjZV9tb2RlKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywgYm9vbCBob3N0KQordm9pZCBk d2MyX2ZvcmNlX21vZGUoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnLCBib29sIGhvc3QpCiB7CiAJ dTMyIGd1c2JjZmc7CiAJdTMyIHNldDsKQEAgLTQxMiwxNyArNDEyLDE3IEBAIHN0YXRpYyBib29s IGR3YzJfZm9yY2VfbW9kZShzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcsIGJvb2wgaG9zdCkKIAkg KiBGb3JjZSBtb2RlIGhhcyBubyBlZmZlY3QgaWYgdGhlIGhhcmR3YXJlIGlzIG5vdCBPVEcuCiAJ ICovCiAJaWYgKCFkd2MyX2h3X2lzX290Zyhoc290ZykpCi0JCXJldHVybiBmYWxzZTsKKwkJcmV0 dXJuOwogCiAJLyoKIAkgKiBJZiBkcl9tb2RlIGlzIGVpdGhlciBwZXJpcGhlcmFsIG9yIGhvc3Qg b25seSwgdGhlcmUgaXMgbm8KIAkgKiBuZWVkIHRvIGV2ZXIgZm9yY2UgdGhlIG1vZGUgdG8gdGhl IG9wcG9zaXRlIG1vZGUuCiAJICovCiAJaWYgKFdBUk5fT04oaG9zdCAmJiBoc290Zy0+ZHJfbW9k ZSA9PSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMKSkKLQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm47 CiAKIAlpZiAoV0FSTl9PTighaG9zdCAmJiBoc290Zy0+ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9I T1NUKSkKLQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm47CiAKIAlndXNiY2ZnID0gZHdjMl9yZWFk bChoc290Zy0+cmVncyArIEdVU0JDRkcpOwogCkBAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIGJv b2wgZHdjMl9mb3JjZV9tb2RlKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywgYm9vbCBob3N0KQog CWR3YzJfd3JpdGVsKGd1c2JjZmcsIGhzb3RnLT5yZWdzICsgR1VTQkNGRyk7CiAKIAlkd2MyX3dh aXRfZm9yX21vZGUoaHNvdGcsIGhvc3QpOwotCXJldHVybiB0cnVlOworCXJldHVybjsKIH0KIAog LyoqCkBAIC00NTAsNiArNDUwLDExIEBAIHZvaWQgZHdjMl9jbGVhcl9mb3JjZV9tb2RlKHN0cnVj dCBkd2MyX2hzb3RnICpoc290ZykKIHsKIAl1MzIgZ3VzYmNmZzsKIAorCWlmICghZHdjMl9od19p c19vdGcoaHNvdGcpKQorCQlyZXR1cm47CisKKwlkZXZfZGJnKGhzb3RnLT5kZXYsICJDbGVhcmlu ZyBmb3JjZSBtb2RlIGJpdHNcbiIpOworCiAJZ3VzYmNmZyA9IGR3YzJfcmVhZGwoaHNvdGctPnJl Z3MgKyBHVVNCQ0ZHKTsKIAlndXNiY2ZnICY9IH5HVVNCQ0ZHX0ZPUkNFSE9TVE1PREU7CiAJZ3Vz YmNmZyAmPSB+R1VTQkNGR19GT1JDRURFVk1PREU7CkBAIC00NjQsMTYgKzQ2OSwxMyBAQCB2b2lk IGR3YzJfY2xlYXJfZm9yY2VfbW9kZShzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpCiAgKi8KIHZv aWQgZHdjMl9mb3JjZV9kcl9tb2RlKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZykKIHsKLQlib29s IHJldDsKLQogCXN3aXRjaCAoaHNvdGctPmRyX21vZGUpIHsKIAljYXNlIFVTQl9EUl9NT0RFX0hP U1Q6Ci0JCXJldCA9IGR3YzJfZm9yY2VfbW9kZShoc290ZywgdHJ1ZSk7CiAJCS8qCiAJCSAqIE5P VEU6IFRoaXMgaXMgcmVxdWlyZWQgZm9yIHNvbWUgcm9ja2NoaXAgc29jIGJhc2VkCiAJCSAqIHBs YXRmb3JtcyBvbiB0aGVpciBob3N0LW9ubHkgZHdjMi4KIAkJICovCi0JCWlmICghcmV0KQorCQlp ZiAoIWR3YzJfaHdfaXNfb3RnKGhzb3RnKSkKIAkJCW1zbGVlcCg1MCk7CiAKIAkJYnJlYWs7CkBA IC00OTAsMjUgKzQ5Miw2IEBAIHZvaWQgZHdjMl9mb3JjZV9kcl9tb2RlKHN0cnVjdCBkd2MyX2hz b3RnICpoc290ZykKIAl9CiB9CiAKLS8qCi0gKiBEbyBjb3JlIGEgc29mdCByZXNldCBvZiB0aGUg Y29yZS4gIEJlIGNhcmVmdWwgd2l0aCB0aGlzIGJlY2F1c2UgaXQKLSAqIHJlc2V0cyBhbGwgdGhl IGludGVybmFsIHN0YXRlIG1hY2hpbmVzIG9mIHRoZSBjb3JlLgotICoKLSAqIEFkZGl0aW9uYWxs eSB0aGlzIHdpbGwgYXBwbHkgZm9yY2UgbW9kZSBhcyBwZXIgdGhlIGhzb3RnLT5kcl9tb2RlCi0g KiBwYXJhbWV0ZXIuCi0gKi8KLWludCBkd2MyX2NvcmVfcmVzZXRfYW5kX2ZvcmNlX2RyX21vZGUo c3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnKQotewotCWludCByZXR2YWw7Ci0KLQlyZXR2YWwgPSBk d2MyX2NvcmVfcmVzZXQoaHNvdGcsIGZhbHNlKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0 dmFsOwotCi0JZHdjMl9mb3JjZV9kcl9tb2RlKGhzb3RnKTsKLQlyZXR1cm4gMDsKLX0KLQogLyoq CiAgKiBkd2MyX2R1bXBfaG9zdF9yZWdpc3RlcnMoKSAtIFByaW50cyB0aGUgaG9zdCByZWdpc3Rl cnMKICAqCkBAIC03MzYsMjIgKzcxOSw2IEBAIHZvaWQgZHdjMl9mbHVzaF9yeF9maWZvKHN0cnVj dCBkd2MyX2hzb3RnICpoc290ZykKIAl1ZGVsYXkoMSk7CiB9CiAKLS8qCi0gKiBGb3JjZXMgZWl0 aGVyIGhvc3Qgb3IgZGV2aWNlIG1vZGUgaWYgdGhlIGNvbnRyb2xsZXIgaXMgbm90Ci0gKiBjdXJy ZW50bHkgaW4gdGhhdCBtb2RlLgotICoKLSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbW9kZSB3YXMg Zm9yY2VkLgotICovCi1ib29sIGR3YzJfZm9yY2VfbW9kZV9pZl9uZWVkZWQoc3RydWN0IGR3YzJf aHNvdGcgKmhzb3RnLCBib29sIGhvc3QpCi17Ci0JaWYgKGhvc3QgJiYgZHdjMl9pc19ob3N0X21v ZGUoaHNvdGcpKQotCQlyZXR1cm4gZmFsc2U7Ci0JZWxzZSBpZiAoIWhvc3QgJiYgZHdjMl9pc19k ZXZpY2VfbW9kZShoc290ZykpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiBkd2MyX2ZvcmNl X21vZGUoaHNvdGcsIGhvc3QpOwotfQotCiBib29sIGR3YzJfaXNfY29udHJvbGxlcl9hbGl2ZShz dHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpCiB7CiAJaWYgKGR3YzJfcmVhZGwoaHNvdGctPnJlZ3Mg KyBHU05QU0lEKSA9PSAweGZmZmZmZmZmKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMi9j b3JlLmggYi9kcml2ZXJzL3VzYi9kd2MyL2NvcmUuaAppbmRleCA5MGQ1Yjg5Nzg0ZTAuLjBmMGMy MWNmMDE5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9jb3JlLmgKKysrIGIvZHJpdmVy cy91c2IvZHdjMi9jb3JlLmgKQEAgLTExMDAsMTIgKzExMDAsMTAgQEAgc3RhdGljIGlubGluZSBi b29sIGR3YzJfaXNfaHNfaW90KHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZykKICAqIGFuZCB0aGUg RFdDX290ZyBjb250cm9sbGVyCiAgKi8KIGludCBkd2MyX2NvcmVfcmVzZXQoc3RydWN0IGR3YzJf aHNvdGcgKmhzb3RnLCBib29sIHNraXBfd2FpdCk7Ci1pbnQgZHdjMl9jb3JlX3Jlc2V0X2FuZF9m b3JjZV9kcl9tb2RlKHN0cnVjdCBkd2MyX2hzb3RnICpoc290Zyk7CiBpbnQgZHdjMl9lbnRlcl9o aWJlcm5hdGlvbihzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpOwogaW50IGR3YzJfZXhpdF9oaWJl cm5hdGlvbihzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcsIGJvb2wgcmVzdG9yZSk7CiAKLWJvb2wg ZHdjMl9mb3JjZV9tb2RlX2lmX25lZWRlZChzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcsIGJvb2wg aG9zdCk7Ci12b2lkIGR3YzJfY2xlYXJfZm9yY2VfbW9kZShzdHJ1Y3QgZHdjMl9oc290ZyAqaHNv dGcpOwordm9pZCBkd2MyX2ZvcmNlX21vZGUoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnLCBib29s IGhvc3QpOwogdm9pZCBkd2MyX2ZvcmNlX2RyX21vZGUoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3Rn KTsKIAogYm9vbCBkd2MyX2lzX2NvbnRyb2xsZXJfYWxpdmUoc3RydWN0IGR3YzJfaHNvdGcgKmhz b3RnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvaGNkLmMgYi9kcml2ZXJzL3VzYi9k d2MyL2hjZC5jCmluZGV4IDdiNmViMGFkNTEzYi4uNjE0YmI5NjAzZGVmIDEwMDY0NAotLS0gYS9k cml2ZXJzL3VzYi9kd2MyL2hjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2R3YzIvaGNkLmMKQEAgLTEz OCw3ICsxMzgsNyBAQCBzdGF0aWMgaW50IGR3YzJfZnNfcGh5X2luaXQoc3RydWN0IGR3YzJfaHNv dGcgKmhzb3RnLCBib29sIHNlbGVjdF9waHkpCiAJCQlkd2MyX3dyaXRlbCh1c2JjZmcsIGhzb3Rn LT5yZWdzICsgR1VTQkNGRyk7CiAKIAkJCS8qIFJlc2V0IGFmdGVyIGEgUEhZIHNlbGVjdCAqLwot CQkJcmV0dmFsID0gZHdjMl9jb3JlX3Jlc2V0X2FuZF9mb3JjZV9kcl9tb2RlKGhzb3RnKTsKKwkJ CXJldHZhbCA9IGR3YzJfY29yZV9yZXNldChoc290ZywgZmFsc2UpOwogCiAJCQlpZiAocmV0dmFs KSB7CiAJCQkJZGV2X2Vycihoc290Zy0+ZGV2LApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBp bnQgZHdjMl9oc19waHlfaW5pdChzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcsIGJvb2wgc2VsZWN0 X3BoeSkKIAkJZHdjMl93cml0ZWwodXNiY2ZnLCBoc290Zy0+cmVncyArIEdVU0JDRkcpOwogCiAJ CS8qIFJlc2V0IGFmdGVyIHNldHRpbmcgdGhlIFBIWSBwYXJhbWV0ZXJzICovCi0JCXJldHZhbCA9 IGR3YzJfY29yZV9yZXNldF9hbmRfZm9yY2VfZHJfbW9kZShoc290Zyk7CisJCXJldHZhbCA9IGR3 YzJfY29yZV9yZXNldChoc290ZywgZmFsc2UpOwogCQlpZiAocmV0dmFsKSB7CiAJCQlkZXZfZXJy KGhzb3RnLT5kZXYsCiAJCQkJIiVzOiBSZXNldCBmYWlsZWQsIGFib3J0aW5nIiwgX19mdW5jX18p OwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgc3RhdGljIGludCBkd2MyX2NvcmVfaW5pdChzdHJ1Y3Qg ZHdjMl9oc290ZyAqaHNvdGcsIGJvb2wgaW5pdGlhbF9zZXR1cCkKIAkgKiBuZWVkZWQgdG8gaW4g b3JkZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHZhcmlvdXMgcGFyYW1ldGVycykuCiAJICovCiAJaWYg KCFpbml0aWFsX3NldHVwKSB7Ci0JCXJldHZhbCA9IGR3YzJfY29yZV9yZXNldF9hbmRfZm9yY2Vf ZHJfbW9kZShoc290Zyk7CisJCXJldHZhbCA9IGR3YzJfY29yZV9yZXNldChoc290ZywgZmFsc2Up OwogCQlpZiAocmV0dmFsKSB7CiAJCQlkZXZfZXJyKGhzb3RnLT5kZXYsICIlcygpOiBSZXNldCBm YWlsZWQsIGFib3J0aW5nXG4iLAogCQkJCV9fZnVuY19fKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2R3YzIvcGFyYW1zLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BhcmFtcy5jCmluZGV4IGVmNzNh ZjZlMDNhOS4uOWMzZmY2NmEyZWI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BhcmFt cy5jCisrKyBiL2RyaXZlcnMvdXNiL2R3YzIvcGFyYW1zLmMKQEAgLTU4MCwxOSArNTgwLDE1IEBA IHN0YXRpYyB2b2lkIGR3YzJfZ2V0X2hvc3RfaHdwYXJhbXMoc3RydWN0IGR3YzJfaHNvdGcgKmhz b3RnKQogCXN0cnVjdCBkd2MyX2h3X3BhcmFtcyAqaHcgPSAmaHNvdGctPmh3X3BhcmFtczsKIAl1 MzIgZ25wdHhmc2l6OwogCXUzMiBocHR4ZnNpejsKLQlib29sIGZvcmNlZDsKIAogCWlmIChoc290 Zy0+ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMKQogCQlyZXR1cm47CiAKLQlmb3Jj ZWQgPSBkd2MyX2ZvcmNlX21vZGVfaWZfbmVlZGVkKGhzb3RnLCB0cnVlKTsKKwlkd2MyX2ZvcmNl X21vZGUoaHNvdGcsIHRydWUpOwogCiAJZ25wdHhmc2l6ID0gZHdjMl9yZWFkbChoc290Zy0+cmVn cyArIEdOUFRYRlNJWik7CiAJaHB0eGZzaXogPSBkd2MyX3JlYWRsKGhzb3RnLT5yZWdzICsgSFBU WEZTSVopOwogCi0JaWYgKGZvcmNlZCkKLQkJZHdjMl9jbGVhcl9mb3JjZV9tb2RlKGhzb3RnKTsK LQogCWh3LT5ob3N0X25wZXJpb190eF9maWZvX3NpemUgPSAoZ25wdHhmc2l6ICYgRklGT1NJWkVf REVQVEhfTUFTSykgPj4KIAkJCQkgICAgICAgRklGT1NJWkVfREVQVEhfU0hJRlQ7CiAJaHctPmhv c3RfcGVyaW9fdHhfZmlmb19zaXplID0gKGhwdHhmc2l6ICYgRklGT1NJWkVfREVQVEhfTUFTSykg Pj4KQEAgLTYwNywxOSArNjAzLDE1IEBAIHN0YXRpYyB2b2lkIGR3YzJfZ2V0X2hvc3RfaHdwYXJh bXMoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnKQogc3RhdGljIHZvaWQgZHdjMl9nZXRfZGV2X2h3 cGFyYW1zKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZykKIHsKIAlzdHJ1Y3QgZHdjMl9od19wYXJh bXMgKmh3ID0gJmhzb3RnLT5od19wYXJhbXM7Ci0JYm9vbCBmb3JjZWQ7CiAJdTMyIGducHR4ZnNp ejsKIAogCWlmIChoc290Zy0+ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9IT1NUKQogCQlyZXR1cm47 CiAKLQlmb3JjZWQgPSBkd2MyX2ZvcmNlX21vZGVfaWZfbmVlZGVkKGhzb3RnLCBmYWxzZSk7CisJ ZHdjMl9mb3JjZV9tb2RlKGhzb3RnLCBmYWxzZSk7CiAKIAlnbnB0eGZzaXogPSBkd2MyX3JlYWRs KGhzb3RnLT5yZWdzICsgR05QVFhGU0laKTsKIAotCWlmIChmb3JjZWQpCi0JCWR3YzJfY2xlYXJf Zm9yY2VfbW9kZShoc290Zyk7Ci0KIAlody0+ZGV2X25wZXJpb190eF9maWZvX3NpemUgPSAoZ25w dHhmc2l6ICYgRklGT1NJWkVfREVQVEhfTUFTSykgPj4KIAkJCQkgICAgICAgRklGT1NJWkVfREVQ VEhfU0hJRlQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BsYXRmb3JtLmMgYi9k cml2ZXJzL3VzYi9kd2MyL3BsYXRmb3JtLmMKaW5kZXggNzRiZTkxYzU1OWM4Li4xYTczM2I5ZGRh YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvcGxhdGZvcm0uYworKysgYi9kcml2ZXJz L3VzYi9kd2MyL3BsYXRmb3JtLmMKQEAgLTQxNSwxMyArNDE1LDIwIEBAIHN0YXRpYyBpbnQgZHdj Ml9kcml2ZXJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogCSAqIFJlc2V0IGJl Zm9yZSBkd2MyX2dldF9od3BhcmFtcygpIHRoZW4gaXQgY291bGQgZ2V0IHBvd2VyLW9uIHJlYWwK IAkgKiByZXNldCB2YWx1ZSBmb3JtIHJlZ2lzdGVycy4KIAkgKi8KLQlkd2MyX2NvcmVfcmVzZXRf YW5kX2ZvcmNlX2RyX21vZGUoaHNvdGcpOworCXJldHZhbCA9IGR3YzJfY29yZV9yZXNldChoc290 ZywgZmFsc2UpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3I7CiAKIAkvKiBEZXRlY3QgY29u ZmlnIHZhbHVlcyBmcm9tIGhhcmR3YXJlICovCiAJcmV0dmFsID0gZHdjMl9nZXRfaHdwYXJhbXMo aHNvdGcpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gZXJyb3I7CiAKKwkvKgorCSAqIEZvciBPVEcg Y29yZXMsIHNldCB0aGUgZm9yY2UgbW9kZSBiaXRzIHRvIHJlZmxlY3QgdGhlIHZhbHVlCisJICog b2YgZHJfbW9kZS4gRm9yY2UgbW9kZSBiaXRzIHNob3VsZCBub3QgYmUgdG91Y2hlZCBhdCBhbnkK KwkgKiBvdGhlciB0aW1lIGFmdGVyIHRoaXMuCisJICovCiAJZHdjMl9mb3JjZV9kcl9tb2RlKGhz b3RnKTsKIAogCXJldHZhbCA9IGR3YzJfaW5pdF9wYXJhbXMoaHNvdGcpOwo=