From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v2 25/27] drm/dp_mst: Add basic topology reprobing when resuming Date: Tue, 3 Sep 2019 16:46:03 -0400 Message-ID: <20190903204645.25487-26-lyude@redhat.com> References: <20190903204645.25487-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190903204645.25487-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: David Airlie , Daniel Vetter , Bhawanpreet Lakha , Dhinakaran Pandiyan , "David (ChunMing) Zhou" , Harry Wentland , David Francis , Ben Skeggs , Harry Wentland , Leo Li , linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org, Maxime Ripard , Karol Herbst , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ilia Mirkin , Alex Deucher , Nicholas Kazlauskas , Laurent Pinchart List-Id: amd-gfx.lists.freedesktop.org RmluYWxseSEgRm9yIGEgdmVyeSBsb25nIHRpbWUsIG91ciBNU1QgaGVscGVycyBoYXZlIGhhZCBv bmUgdmVyeQphbm5veWluZyBpc3N1ZTogVGhleSBkb24ndCBrbm93IGhvdyB0byByZXByb2JlIHRo ZSB0b3BvbG9neSBzdGF0ZSB3aGVuCmNvbWluZyBvdXQgb2Ygc3VzcGVuZC4gVGhpcyBtZWFucyB0 aGF0IGlmIGEgdXNlciBoYXMgYSBtYWNoaW5lIGNvbm5lY3RlZAp0byBhbiBNU1QgdG9wb2xvZ3kg YW5kIGRlY2lkZXMgdG8gc3VzcGVuZCB0aGVpciBtYWNoaW5lLCB3ZSBsb3NlIGFsbAp0b3BvbG9n eSBjaGFuZ2VzIHRoYXQgaGFwcGVuZWQgZHVyaW5nIHRoYXQgcGVyaW9kLiBUaGF0IGNhbiBiZSBh IGJpZwpwcm9ibGVtIGlmIHRoZSBtYWNoaW5lIHdhcyBjb25uZWN0ZWQgdG8gYSBkaWZmZXJlbnQg dG9wb2xvZ3kgb24gdGhlIHNhbWUKcG9ydCBiZWZvcmUgcmVzdW1pbmcsIGFzIHdlIHdvbid0IGJv dGhlciByZXByb2JpbmcgYW55IG9mIHRoZSBwb3J0cyBhbmQKbGlrZWx5IGNhdXNlIHRoZSB1c2Vy J3MgbW9uaXRvcnMgbm90IHRvIGNvbWUgYmFjayB1cCBhcyBleHBlY3RlZC4KClNvLCB3ZSBzdGFy dCBmaXhpbmcgdGhpcyBieSB0ZWFjaGluZyBvdXIgTVNUIGhlbHBlcnMgaG93IHRvIHJlcHJvYmUg dGhlCmxpbmsgYWRkcmVzc2VzIG9mIGVhY2ggY29ubmVjdGVkIHRvcG9sb2d5IHdoZW4gcmVzdW1p bmcuIEFzIGl0IHR1cm5zCm91dCwgdGhlIGJlaGF2aW9yIHRoYXQgd2Ugd2FudCBoZXJlIGlzIGlk ZW50aWNhbCB0byB0aGUgYmVoYXZpb3Igd2Ugd2FudAp3aGVuIGluaXRpYWxseSBwcm9iaW5nIGEg bmV3bHkgY29ubmVjdGVkIE1TVCB0b3BvbG9neSwgd2l0aCBhIGNvdXBsZSBvZgppbXBvcnRhbnQg ZGlmZmVyZW5jZXM6CgotIFdlIG5lZWQgdG8gYmUgbW9yZSBjYXJlZnVsIGFib3V0IGhhbmRsaW5n IHRoZSBwb3RlbnRpYWwgcmFjZXMgYmV0d2VlbgogIGV2ZW50cyBmcm9tIHRoZSBNU1QgaHViIHRo YXQgY291bGQgY2hhbmdlIHRoZSB0b3BvbG9neSBzdGF0ZSBhcyB3ZSdyZQogIHBlcmZvcm1pbmcg dGhlIGxpbmsgYWRkcmVzcyByZXByb2JlCi0gV2UgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwgYWJv dXQgaGFuZGxpbmcgdW5saWtlbHkgc3RhdGUgY2hhbmdlcyBvbgogIHBvcnRzIC0gc3VjaCBhcyBh biBpbnB1dCBwb3J0IHR1cm5pbmcgaW50byBhbiBvdXRwdXQgcG9ydCwgc29tZXRoaW5nCiAgdGhh dCB3b3VsZCBiZSBmYXIgbW9yZSBsaWtlbHkgdG8gaGFwcGVuIGluIHNpdHVhdGlvbnMgbGlrZSB0 aGUgTVNUIGh1YgogIHdlJ3JlIGNvbm5lY3RlZCB0byBiZWluZyBjaGFuZ2VkIHdoaWxlIHdlJ3Jl IHN1c3BlbmQKCkJvdGggb2Ygd2hpY2ggaGF2ZSBiZWVuIHNvbHZlZCBieSBwcmV2aW91cyBjb21t aXRzLiBUaGF0IGxlYXZlcyBvbmUKcmVxdWlyZW1lbnQ6CgotIFdlIG5lZWQgdG8gcHJ1bmUgYW55 IE1TVCBwb3J0cyBpbiBvdXIgaW4tbWVtb3J5IHRvcG9sb2d5IHN0YXRlIHRoYXQKICB3ZXJlIHBy ZXNlbnQgd2hlbiBzdXNwZW5kaW5nLCBidXQgaGF2ZSBub3QgYXBwZWFyZWQgaW4gdGhlIHBvc3Qt cmVzdW1lCiAgbGluayBhZGRyZXNzIHJlc3BvbnNlIGZyb20gdGhlaXIgcGFyZW50IGJyYW5jaCBk ZXZpY2UKCldoaWNoIHdlIGNhbiBub3cgaGFuZGxlIGluIHRoaXMgY29tbWl0IGJ5IG1vZGlmeWlu Zwpkcm1fZHBfc2VuZF9saW5rX2FkZHJlc3MoKS4gV2UgdGhlbiBpbnRyb2R1Y2Ugc3VzcGVuZC9y ZXN1bWUgcmVwcm9iaW5nCmJ5IGludHJvZHVjaW5nIGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX2lu dmFsaWRhdGVfbXN0YigpLCB3aGljaCB3ZSBjYWxsCmluIGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy X3N1c3BlbmQoKSB0byB0cmF2ZXJzZSB0aGUgaW4tbWVtb3J5IHRvcG9sb2d5CnN0YXRlIHRvIGlu ZGljYXRlIHRoYXQgZWFjaCBtc3RiIG5lZWRzIGl0J3MgbGluayBhZGRyZXNzIHJlc2VudCBhbmQg UEJOCnJlc291cmNlcyByZXByb2JlZC4KCk9uIHJlc3VtZSwgd2Ugc3RhcnQgYmFjayB1cCAmbWdy LT53b3JrIGFuZCBoYXZlIGl0IHJlcHJvYmUgdGhlIHRvcG9sb2d5CmluIHRoZSBzYW1lIHdheSB3 ZSB3b3VsZCBvbiBhIGhvdHBsdWcsIHJlbW92aW5nIGFueSBsZWZ0b3ZlciBwb3J0cyB0aGF0Cm5v IGxvbmdlciBhcHBlYXIgaW4gdGhlIHRvcG9sb2d5IHN0YXRlLgoKQ2M6IEp1c3RvbiBMaSA8anVz dG9uLmxpQGludGVsLmNvbT4KQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KQ2M6 IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBIYXJy eSBXZW50bGFuZCA8aHdlbnRsYW5AYW1kLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52 ZXR0ZXJAZmZ3bGwuY2g+ClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5j b20+Ci0tLQogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jICAgICAgICAgfCAx MzggKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwLmMgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjUwL2Rp c3AuYyAgICAgICB8ICAgNiArLQogaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAg ICAgICAgICAgIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCA0 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdw dV9kbS9hbWRncHVfZG0uYwppbmRleCA0ZDNjOGJmZjc3ZGEuLjI3ZWUzZTA0NWI4NiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCkBA IC05NzMsNyArOTczLDcgQEAgc3RhdGljIHZvaWQgczNfaGFuZGxlX21zdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBib29sIHN1c3BlbmQpCiAJCWlmIChzdXNwZW5kKSB7CiAJCQlkcm1fZHBfbXN0 X3RvcG9sb2d5X21ncl9zdXNwZW5kKG1ncik7CiAJCX0gZWxzZSB7Ci0JCQlyZXQgPSBkcm1fZHBf bXN0X3RvcG9sb2d5X21ncl9yZXN1bWUobWdyKTsKKwkJCXJldCA9IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyX3Jlc3VtZShtZ3IsIHRydWUpOwogCQkJaWYgKHJldCA8IDApIHsKIAkJCQlkcm1fZHBf bXN0X3RvcG9sb2d5X21ncl9zZXRfbXN0KG1nciwgZmFsc2UpOwogCQkJCW5lZWRfaG90cGx1ZyA9 IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwppbmRleCBlNDA3YWJhMWZi ZDIuLjJmZTI0ZTM2NjkyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3Rf dG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCkBA IC0yMDIwLDYgKzIwMjAsMTQgQEAgZHJtX2RwX21zdF9oYW5kbGVfbGlua19hZGRyZXNzX3BvcnQo c3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAogCQlnb3RvIGZhaWxfdW5sb2NrOwogCX0K IAorCS8qCisJICogSWYgdGhpcyBwb3J0IHdhc24ndCBqdXN0IGNyZWF0ZWQsIHRoZW4gd2UncmUg cmVwcm9iaW5nIGJlY2F1c2UKKwkgKiB3ZSdyZSBjb21pbmcgb3V0IG9mIHN1c3BlbmQuIEluIHRo aXMgY2FzZSwgYWx3YXlzIHJlc2VuZCB0aGUgbGluaworCSAqIGFkZHJlc3MgaWYgdGhlcmUncyBh biBNU1RCIG9uIHRoaXMgcG9ydAorCSAqLworCWlmICghY3JlYXRlZCAmJiBwb3J0LT5wZHQgPT0g RFBfUEVFUl9ERVZJQ0VfTVNUX0JSQU5DSElORykKKwkJc2VuZF9saW5rX2FkZHIgPSB0cnVlOwor CiAJaWYgKHNlbmRfbGlua19hZGRyKSB7CiAJCW11dGV4X2xvY2soJm1nci0+bG9jayk7CiAJCWlm IChwb3J0LT5tc3RiKSB7CkBAIC0yNTMwLDcgKzI1MzgsOCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBf c2VuZF9saW5rX2FkZHJlc3Moc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiB7 CiAJc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfdHggKnR4bXNnOwogCXN0cnVjdCBkcm1fZHBf bGlua19hZGRyZXNzX2Fja19yZXBseSAqcmVwbHk7Ci0JaW50IGksIGxlbiwgcmV0OworCXN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsICp0bXA7CisJaW50IGksIGxlbiwgcmV0LCBwb3J0X21h c2sgPSAwOwogCiAJdHhtc2cgPSBremFsbG9jKHNpemVvZigqdHhtc2cpLCBHRlBfS0VSTkVMKTsK IAlpZiAoIXR4bXNnKQpAQCAtMjU2MCw5ICsyNTY5LDI4IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9z ZW5kX2xpbmtfYWRkcmVzcyhzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAog CWRybV9kcF9jaGVja19tc3RiX2d1aWQobXN0YiwgcmVwbHktPmd1aWQpOwogCi0JZm9yIChpID0g MDsgaSA8IHJlcGx5LT5ucG9ydHM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgcmVwbHktPm5wb3J0 czsgaSsrKSB7CisJCXBvcnRfbWFzayB8PSBCSVQocmVwbHktPnBvcnRzW2ldLnBvcnRfbnVtYmVy KTsKIAkJZHJtX2RwX21zdF9oYW5kbGVfbGlua19hZGRyZXNzX3BvcnQobXN0YiwgbWdyLT5kZXYs CiAJCQkJCQkgICAgJnJlcGx5LT5wb3J0c1tpXSk7CisJfQorCisJLyogUHJ1bmUgYW55IHBvcnRz IHRoYXQgYXJlIGN1cnJlbnRseSBhIHBhcnQgb2YgbXN0YiBpbiBvdXIgaW4tbWVtb3J5CisJICog dG9wb2xvZ3ksIGJ1dCB3ZXJlIG5vdCBzZWVuIGluIHRoaXMgbGluayBhZGRyZXNzLiBVc3VhbGx5 IHRoaXMKKwkgKiBtZWFucyB0aGF0IHRoZXkgd2VyZSByZW1vdmVkIHdoaWxlIHRoZSB0b3BvbG9n eSB3YXMgb3V0IG9mIHN5bmMsCisJICogZS5nLiBkdXJpbmcgc3VzcGVuZC9yZXN1bWUKKwkgKi8K KwltdXRleF9sb2NrKCZtZ3ItPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0 LCB0bXAsICZtc3RiLT5wb3J0cywgbmV4dCkgeworCQlpZiAocG9ydF9tYXNrICYgQklUKHBvcnQt PnBvcnRfbnVtKSkKKwkJCWNvbnRpbnVlOworCisJCURSTV9ERUJVR19LTVMoInBvcnQgJWQgd2Fz IG5vdCBpbiBsaW5rIGFkZHJlc3MsIHJlbW92aW5nXG4iLAorCQkJICAgICAgcG9ydC0+cG9ydF9u dW0pOworCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X3BvcnQocG9ydCk7CisJfQorCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAogCWRybV9rbXNf aGVscGVyX2hvdHBsdWdfZXZlbnQobWdyLT5kZXYpOwogCkBAIC0zMTkxLDYgKzMyMTksMjMgQEAg aW50IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3Qoc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyICptZ3IsIGJvb2wgbXMKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX21zdF90b3Bv bG9neV9tZ3Jfc2V0X21zdCk7CiAKK3N0YXRpYyB2b2lkCitkcm1fZHBfbXN0X3RvcG9sb2d5X21n cl9pbnZhbGlkYXRlX21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQoreworCXN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7CisKKwkvKiBUaGUgbGluayBhZGRyZXNzIHdpbGwg bmVlZCB0byBiZSByZS1zZW50IG9uIHJlc3VtZSAqLworCW1zdGItPmxpbmtfYWRkcmVzc19zZW50 ID0gZmFsc2U7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZtc3RiLT5wb3J0cywgbmV4 dCkgeworCQkvKiBUaGUgUEJOIGZvciBlYWNoIHBvcnQgd2lsbCBhbHNvIG5lZWQgdG8gYmUgcmUt cHJvYmVkICovCisJCXBvcnQtPmF2YWlsYWJsZV9wYm4gPSAwOworCisJCWlmIChwb3J0LT5tc3Ri KQorCQkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfaW52YWxpZGF0ZV9tc3RiKHBvcnQtPm1zdGIp OworCX0KK30KKwogLyoqCiAgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zdXNwZW5kKCkgLSBz dXNwZW5kIHRoZSBNU1QgbWFuYWdlcgogICogQG1ncjogbWFuYWdlciB0byBzdXNwZW5kCkBAIC0z MjA3LDYwICszMjUyLDg1IEBAIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3VzcGVuZChz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncikKIAlmbHVzaF93b3JrKCZtZ3ItPnVw X3JlcV93b3JrKTsKIAlmbHVzaF93b3JrKCZtZ3ItPndvcmspOwogCWZsdXNoX3dvcmsoJm1nci0+ ZGVsYXllZF9kZXN0cm95X3dvcmspOworCisJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKKwlpZiAo bWdyLT5tc3Rfc3RhdGUgJiYgbWdyLT5tc3RfcHJpbWFyeSkKKwkJZHJtX2RwX21zdF90b3BvbG9n eV9tZ3JfaW52YWxpZGF0ZV9tc3RiKG1nci0+bXN0X3ByaW1hcnkpOworCW11dGV4X3VubG9jaygm bWdyLT5sb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3Vz cGVuZCk7CiAKIC8qKgogICogZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfcmVzdW1lKCkgLSByZXN1 bWUgdGhlIE1TVCBtYW5hZ2VyCiAgKiBAbWdyOiBtYW5hZ2VyIHRvIHJlc3VtZQorICogQHN5bmM6 IHdoZXRoZXIgb3Igbm90IHRvIHBlcmZvcm0gdG9wb2xvZ3kgcmVwcm9iaW5nIHN5bmNocm9ub3Vz bHkKICAqCiAgKiBUaGlzIHdpbGwgZmV0Y2ggRFBDRCBhbmQgc2VlIGlmIHRoZSBkZXZpY2UgaXMg c3RpbGwgdGhlcmUsCiAgKiBpZiBpdCBpcywgaXQgd2lsbCByZXdyaXRlIHRoZSBNU1RNIGNvbnRy b2wgYml0cywgYW5kIHJldHVybi4KICAqCi0gKiBpZiB0aGUgZGV2aWNlIGZhaWxzIHRoaXMgcmV0 dXJucyAtMSwgYW5kIHRoZSBkcml2ZXIgc2hvdWxkIGRvCisgKiBJZiB0aGUgZGV2aWNlIGZhaWxz IHRoaXMgcmV0dXJucyAtMSwgYW5kIHRoZSBkcml2ZXIgc2hvdWxkIGRvCiAgKiBhIGZ1bGwgTVNU IHJlcHJvYmUsIGluIGNhc2Ugd2Ugd2VyZSB1bmRvY2tlZC4KKyAqCisgKiBEdXJpbmcgc3lzdGVt IHJlc3VtZSAod2hlcmUgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBkcml2ZXIgd2lsbCBiZSBjYWxs aW5nCisgKiBkcm1fYXRvbWljX2hlbHBlcl9yZXN1bWUoKSkgdGhpcyBmdW5jdGlvbiBzaG91bGQg YmUgY2FsbGVkIGJlZm9yZWhhbmQgd2l0aAorICogQHN5bmMgc2V0IHRvIHRydWUuIEluIGNvbnRl eHRzIGxpa2UgcnVudGltZSByZXN1bWUgd2hlcmUgdGhlIGRyaXZlciBpcyBub3QKKyAqIGV4cGVj dGVkIHRvIGJlIGNhbGxpbmcgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKCksIHRoaXMgZnVuY3Rp b24gc2hvdWxkIGJlCisgKiBjYWxsZWQgd2l0aCBAc3luYyBzZXQgdG8gZmFsc2UgaW4gb3JkZXIg dG8gYXZvaWQgZGVhZGxvY2tpbmcuCisgKgorICogUmV0dXJuczogLTEgaWYgdGhlIE1TVCB0b3Bv bG9neSB3YXMgcmVtb3ZlZCB3aGlsZSB3ZSB3ZXJlIHN1c3BlbmRlZCwgMAorICogb3RoZXJ3aXNl LgogICovCi1pbnQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfcmVzdW1lKHN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyKQoraW50IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3Jlc3Vt ZShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgICBib29sIHN5bmMp CiB7Ci0JaW50IHJldCA9IDA7CisJaW50IHJldDsKKwl1OCBndWlkWzE2XTsKIAogCW11dGV4X2xv Y2soJm1nci0+bG9jayk7CisJaWYgKCFtZ3ItPm1zdF9wcmltYXJ5KQorCQlnb3RvIG91dF9mYWls OwogCi0JaWYgKG1nci0+bXN0X3ByaW1hcnkpIHsKLQkJaW50IHNyZXQ7Ci0JCXU4IGd1aWRbMTZd OworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQobWdyLT5hdXgsIERQX0RQQ0RfUkVWLCBtZ3ItPmRw Y2QsCisJCQkgICAgICAgRFBfUkVDRUlWRVJfQ0FQX1NJWkUpOworCWlmIChyZXQgIT0gRFBfUkVD RUlWRVJfQ0FQX1NJWkUpIHsKKwkJRFJNX0RFQlVHX0tNUygiZHBjZCByZWFkIGZhaWxlZCAtIHVu ZG9ja2VkIGR1cmluZyBzdXNwZW5kP1xuIik7CisJCWdvdG8gb3V0X2ZhaWw7CisJfQogCi0JCXNy ZXQgPSBkcm1fZHBfZHBjZF9yZWFkKG1nci0+YXV4LCBEUF9EUENEX1JFViwgbWdyLT5kcGNkLCBE UF9SRUNFSVZFUl9DQVBfU0laRSk7Ci0JCWlmIChzcmV0ICE9IERQX1JFQ0VJVkVSX0NBUF9TSVpF KSB7Ci0JCQlEUk1fREVCVUdfS01TKCJkcGNkIHJlYWQgZmFpbGVkIC0gdW5kb2NrZWQgZHVyaW5n IHN1c3BlbmQ/XG4iKTsKLQkJCXJldCA9IC0xOwotCQkJZ290byBvdXRfdW5sb2NrOwotCQl9CisJ cmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKG1nci0+YXV4LCBEUF9NU1RNX0NUUkwsCisJCQkJIERQ X01TVF9FTiB8CisJCQkJIERQX1VQX1JFUV9FTiB8CisJCQkJIERQX1VQU1RSRUFNX0lTX1NSQyk7 CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygibXN0IHdyaXRlIGZhaWxlZCAtIHVu ZG9ja2VkIGR1cmluZyBzdXNwZW5kP1xuIik7CisJCWdvdG8gb3V0X2ZhaWw7CisJfQogCi0JCXJl dCA9IGRybV9kcF9kcGNkX3dyaXRlYihtZ3ItPmF1eCwgRFBfTVNUTV9DVFJMLAotCQkJCQkgRFBf TVNUX0VOIHwgRFBfVVBfUkVRX0VOIHwgRFBfVVBTVFJFQU1fSVNfU1JDKTsKLQkJaWYgKHJldCA8 IDApIHsKLQkJCURSTV9ERUJVR19LTVMoIm1zdCB3cml0ZSBmYWlsZWQgLSB1bmRvY2tlZCBkdXJp bmcgc3VzcGVuZD9cbiIpOwotCQkJcmV0ID0gLTE7Ci0JCQlnb3RvIG91dF91bmxvY2s7Ci0JCX0K KwkvKiBTb21lIGh1YnMgZm9yZ2V0IHRoZWlyIGd1aWRzIGFmdGVyIHRoZXkgcmVzdW1lICovCisJ cmV0ID0gZHJtX2RwX2RwY2RfcmVhZChtZ3ItPmF1eCwgRFBfR1VJRCwgZ3VpZCwgMTYpOworCWlm IChyZXQgIT0gMTYpIHsKKwkJRFJNX0RFQlVHX0tNUygiZHBjZCByZWFkIGZhaWxlZCAtIHVuZG9j a2VkIGR1cmluZyBzdXNwZW5kP1xuIik7CisJCWdvdG8gb3V0X2ZhaWw7CisJfQorCWRybV9kcF9j aGVja19tc3RiX2d1aWQobWdyLT5tc3RfcHJpbWFyeSwgZ3VpZCk7CiAKLQkJLyogU29tZSBodWJz IGZvcmdldCB0aGVpciBndWlkcyBhZnRlciB0aGV5IHJlc3VtZSAqLwotCQlzcmV0ID0gZHJtX2Rw X2RwY2RfcmVhZChtZ3ItPmF1eCwgRFBfR1VJRCwgZ3VpZCwgMTYpOwotCQlpZiAoc3JldCAhPSAx NikgewotCQkJRFJNX0RFQlVHX0tNUygiZHBjZCByZWFkIGZhaWxlZCAtIHVuZG9ja2VkIGR1cmlu ZyBzdXNwZW5kP1xuIik7Ci0JCQlyZXQgPSAtMTsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQot CQlkcm1fZHBfY2hlY2tfbXN0Yl9ndWlkKG1nci0+bXN0X3ByaW1hcnksIGd1aWQpOworCS8qIEZv ciB0aGUgZmluYWwgc3RlcCBvZiByZXN1bWluZyB0aGUgdG9wb2xvZ3ksIHdlIG5lZWQgdG8gYnJp bmcgdGhlCisJICogc3RhdGUgb2Ygb3VyIGluLW1lbW9yeSB0b3BvbG9neSBiYWNrIGludG8gc3lu YyB3aXRoIHJlYWxpdHkuIFNvLAorCSAqIHJlc3RhcnQgdGhlIHByb2JpbmcgcHJvY2VzcyBhcyBp ZiB3ZSdyZSBwcm9iaW5nIGEgbmV3IGh1YgorCSAqLworCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdf d3EsICZtZ3ItPndvcmspOworCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAotCQlyZXQgPSAw OwotCX0gZWxzZQotCQlyZXQgPSAtMTsKKwlpZiAoc3luYykgeworCQlEUk1fREVCVUdfS01TKCJX YWl0aW5nIGZvciBsaW5rIHByb2JlIHdvcmsgdG8gZmluaXNoIHJlLXN5bmNpbmcgdG9wb2xvZ3ku Li5cbiIpOworCQlmbHVzaF93b3JrKCZtZ3ItPndvcmspOworCX0KIAotb3V0X3VubG9jazoKKwly ZXR1cm4gMDsKKworb3V0X2ZhaWw6CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwotCXJldHVy biByZXQ7CisJcmV0dXJuIC0xOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X3RvcG9sb2d5 X21ncl9yZXN1bWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKaW5k ZXggNTY3M2VkNzVlNDI4Li5iNzgzNjRkY2RlZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMKQEAgLTc0MDAsNyArNzQwMCw4IEBAIHZvaWQgaW50ZWxfZHBfbXN0X3Jl c3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWlmICghaW50ZWxfZHAt PmNhbl9tc3QpCiAJCQljb250aW51ZTsKIAotCQlyZXQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X21n cl9yZXN1bWUoJmludGVsX2RwLT5tc3RfbWdyKTsKKwkJcmV0ID0gZHJtX2RwX21zdF90b3BvbG9n eV9tZ3JfcmVzdW1lKCZpbnRlbF9kcC0+bXN0X21nciwKKwkJCQkJCSAgICAgdHJ1ZSk7CiAJCWlm IChyZXQpIHsKIAkJCWludGVsX2RwLT5pc19tc3QgPSBmYWxzZTsKIAkJCWRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyX3NldF9tc3QoJmludGVsX2RwLT5tc3RfbWdyLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlzcC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvZGlzcG52NTAvZGlzcC5jCmluZGV4IDMwNzU4NDEwN2Q3Ny4uZTQ1OWUyYTc5ZDc4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC9kaXNwLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlzcC5jCkBAIC0xMzA5LDE0ICsxMzA5LDE0 IEBAIG52NTBfbXN0bV9maW5pKHN0cnVjdCBudjUwX21zdG0gKm1zdG0pCiB9CiAKIHN0YXRpYyB2 b2lkCi1udjUwX21zdG1faW5pdChzdHJ1Y3QgbnY1MF9tc3RtICptc3RtKQorbnY1MF9tc3RtX2lu aXQoc3RydWN0IG52NTBfbXN0bSAqbXN0bSwgYm9vbCBydW50aW1lKQogewogCWludCByZXQ7CiAK IAlpZiAoIW1zdG0gfHwgIW1zdG0tPm1nci5tc3Rfc3RhdGUpCiAJCXJldHVybjsKIAotCXJldCA9 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3Jlc3VtZSgmbXN0bS0+bWdyKTsKKwlyZXQgPSBkcm1f ZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoJm1zdG0tPm1nciwgIXJ1bnRpbWUpOwogCWlmIChy ZXQgPT0gLTEpIHsKIAkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdCgmbXN0bS0+bWdy LCBmYWxzZSk7CiAJCWRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQobXN0bS0+bWdyLmRldik7 CkBAIC0yMjYyLDcgKzIyNjIsNyBAQCBudjUwX2Rpc3BsYXlfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBib29sIHJlc3VtZSwgYm9vbCBydW50aW1lKQogCQlpZiAoZW5jb2Rlci0+ZW5jb2Rl cl90eXBlICE9IERSTV9NT0RFX0VOQ09ERVJfRFBNU1QpIHsKIAkJCXN0cnVjdCBub3V2ZWF1X2Vu Y29kZXIgKm52X2VuY29kZXIgPQogCQkJCW5vdXZlYXVfZW5jb2RlcihlbmNvZGVyKTsKLQkJCW52 NTBfbXN0bV9pbml0KG52X2VuY29kZXItPmRwLm1zdG0pOworCQkJbnY1MF9tc3RtX2luaXQobnZf ZW5jb2Rlci0+ZHAubXN0bSwgcnVudGltZSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBl ci5oCmluZGV4IDFlZmJiMDg2ZjdhYy4uMWJkZWU1ZWU2ZGNkIDEwMDY0NAotLS0gYS9pbmNsdWRl L2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVs cGVyLmgKQEAgLTY4NSw3ICs2ODUsOCBAQCB2b2lkIGRybV9kcF9tc3RfZHVtcF90b3BvbG9neShz dHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAKIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3VzcGVu ZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7CiBpbnQgX19tdXN0X2NoZWNr Ci1kcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IpOworZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfcmVzdW1lKHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAorCQkJICAgICAgIGJvb2wgc3luYyk7CiAKIHNzaXpl X3QgZHJtX2RwX21zdF9kcGNkX3JlYWQoc3RydWN0IGRybV9kcF9hdXggKmF1eCwKIAkJCSAgICAg dW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7Ci0tIAoyLjIx LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==