From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 16/27] drm/dp_mst: Refactor pdt setup/teardown, add more locking Date: Wed, 25 Sep 2019 15:27:50 -0400 Message-ID: <20190925192750.GH218215@art_vandelay> References: <20190903204645.25487-1-lyude@redhat.com> <20190903204645.25487-17-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190903204645.25487-17-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Paul Cc: Maxime Ripard , dri-devel@lists.freedesktop.org, David Airlie , nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, Sean Paul , Juston Li , Daniel Vetter , Harry Wentland List-Id: amd-gfx.lists.freedesktop.org T24gVHVlLCBTZXAgMDMsIDIwMTkgYXQgMDQ6NDU6NTRQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBTaW5jZSB3ZSdyZSBnb2luZyB0byBiZSBpbXBsZW1lbnRpbmcgc3VzcGVuZC9yZXN1bWUg cmVwcm9iaW5nIHZlcnkgc29vbiwKPiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgZXh0cmEg Y2FyZWZ1bCB0byBlbnN1cmUgdGhhdCBvdXIgbG9ja2luZwo+IGFjdHVhbGx5IHByb3RlY3RzIHRo ZSB0b3BvbG9neSBzdGF0ZSB3aGVyZSB3ZSBleHBlY3QgaXQgdG8uIFR1cm5zIG91dAo+IHRoaXMg aXNuJ3QgdGhlIGNhc2Ugd2l0aCBkcm1fZHBfcG9ydF9zZXR1cF9wZHQoKSBhbmQKPiBkcm1fZHBf cG9ydF90ZWFyZG93bl9wZHQoKSwgYm90aCBvZiB3aGljaCBjaGFuZ2UgcG9ydC0+bXN0YiB3aXRo b3V0Cj4gZ3JhYmJpbmcgJm1nci0+bG9jay4KPiAKPiBBZGRpdGlvbmFsbHksIHNpbmNlIG1vc3Qg Y2FsbGVycyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGp1c3QgdXNpbmcgaXQgdG8KPiB0ZWFyZG93 biB0aGUgcG9ydCdzIHByZXZpb3VzIFBEVCBhbmQgc2V0dXAgYSBuZXcgb25lIHdlIGNhbiBzaW1w bGlmeQo+IHRoaW5ncyBhIGJpdCBhbmQgY29tYmluZSBkcm1fZHBfcG9ydF9zZXR1cF9wZHQoKSBh bmQKPiBkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQoKSBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uOgo+ IGRybV9kcF9wb3J0X3NldF9wZHQoKS4gVGhpcyBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgYWN0dWFs bHkgZW5zdXJpbmcgdGhhdAo+IHdlIGdyYWIgdGhlIGNvcnJlY3QgbG9ja3Mgd2hlbiB3ZSBuZWVk IHRvIG1vZGlmeSBwb3J0LT5tc3RiLgo+IAo+IENjOiBKdXN0b24gTGkgPGp1c3Rvbi5saUBpbnRl bC5jb20+Cj4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiBDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogSGFycnkgV2Vu dGxhbmQgPGh3ZW50bGFuQGFtZC5jb20+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+Cj4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyB8IDE4MSAr KysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBl ci5oICAgICAgIHwgICA2ICstCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyks IDc3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X21zdF90b3BvbG9neS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ IGluZGV4IGQxNjEwNDM0YTBjYi4uOTk0NGVmMmNlODg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2RwX21zdF90b3BvbG9neS5jCj4gQEAgLTE0ODcsMjQgKzE0ODcsNiBAQCBkcm1fZHBfbXN0X3Rv cG9sb2d5X3B1dF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKPiAgCWtyZWZf cHV0KCZtc3RiLT50b3BvbG9neV9rcmVmLCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNoX2Rldmlj ZSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGRybV9kcF9wb3J0X3RlYXJkb3duX3BkdChzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgb2xkX3BkdCkKPiAtewo+IC0Jc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiOwo+IC0KPiAtCXN3aXRjaCAob2xkX3BkdCkgewo+IC0JY2Fz ZSBEUF9QRUVSX0RFVklDRV9EUF9MRUdBQ1lfQ09OVjoKPiAtCWNhc2UgRFBfUEVFUl9ERVZJQ0Vf U1NUX1NJTks6Cj4gLQkJLyogcmVtb3ZlIGkyYyBvdmVyIHNpZGViYW5kICovCj4gLQkJZHJtX2Rw X21zdF91bnJlZ2lzdGVyX2kyY19idXMoJnBvcnQtPmF1eCk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNl IERQX1BFRVJfREVWSUNFX01TVF9CUkFOQ0hJTkc6Cj4gLQkJbXN0YiA9IHBvcnQtPm1zdGI7Cj4g LQkJcG9ydC0+bXN0YiA9IE5VTEw7Cj4gLQkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yiht c3RiKTsKPiAtCQlicmVhazsKPiAtCX0KPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgZHJtX2RwX2Rl c3Ryb3lfcG9ydChzdHJ1Y3Qga3JlZiAqa3JlZikKPiAgewo+ICAJc3RydWN0IGRybV9kcF9tc3Rf cG9ydCAqcG9ydCA9Cj4gQEAgLTE3MTQsMzggKzE2OTYsNzkgQEAgc3RhdGljIHU4IGRybV9kcF9j YWxjdWxhdGVfcmFkKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsCj4gIAlyZXR1cm4gcGFy ZW50X2xjdCArIDE7Cj4gIH0KPiAgCj4gLS8qCj4gLSAqIHJldHVybiBzZW5kcyBsaW5rIGFkZHJl c3MgZm9yIG5ldyBtc3RiCj4gLSAqLwo+IC1zdGF0aWMgYm9vbCBkcm1fZHBfcG9ydF9zZXR1cF9w ZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKPiArc3RhdGljIGludCBkcm1fZHBfcG9y dF9zZXRfcGR0KHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIHU4IG5ld19wZHQpCj4gIHsK PiAtCWludCByZXQ7Cj4gLQl1OCByYWRbNl0sIGxjdDsKPiAtCWJvb2wgc2VuZF9saW5rID0gZmFs c2U7Cj4gKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9IHBvcnQtPm1ncjsK PiArCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YjsKPiArCXU4IHJhZFs4XSwgbGN0Owo+ ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKHBvcnQtPnBkdCA9PSBuZXdfcGR0KQoKU2hvdWxk bid0IHdlIGFsc28gZW5zdXJlIHRoYXQgYWNjZXNzIHRvIHBvcnQtPnBkdCBpcyBhbHNvIGxvY2tl ZD8KClNlYW4KCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJLyogVGVhcmRvd24gdGhlIG9sZCBwZHQs IGlmIHRoZXJlIGlzIG9uZSAqLwo+ICsJc3dpdGNoIChwb3J0LT5wZHQpIHsKPiArCWNhc2UgRFBf UEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlY6Cj4gKwljYXNlIERQX1BFRVJfREVWSUNFX1NTVF9T SU5LOgo+ICsJCS8qCj4gKwkJICogSWYgdGhlIG5ldyBQRFQgd291bGQgYWxzbyBoYXZlIGFuIGky YyBidXMsIGRvbid0IGJvdGhlcgo+ICsJCSAqIHdpdGggcmVyZWdpc3RlcmluZyBpdAo+ICsJCSAq Lwo+ICsJCWlmIChuZXdfcGR0ID09IERQX1BFRVJfREVWSUNFX0RQX0xFR0FDWV9DT05WIHx8Cj4g KwkJICAgIG5ld19wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfU1NUX1NJTkspIHsKPiArCQkJcG9ydC0+ cGR0ID0gbmV3X3BkdDsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJfQo+ICsKPiArCQkvKiByZW1vdmUg aTJjIG92ZXIgc2lkZWJhbmQgKi8KPiArCQlkcm1fZHBfbXN0X3VucmVnaXN0ZXJfaTJjX2J1cygm cG9ydC0+YXV4KTsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfUEVFUl9ERVZJQ0VfTVNUX0JSQU5D SElORzoKPiArCQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwo+ICsJCWRybV9kcF9tc3RfdG9wb2xv Z3lfcHV0X21zdGIocG9ydC0+bXN0Yik7Cj4gKwkJcG9ydC0+bXN0YiA9IE5VTEw7Cj4gKwkJbXV0 ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXBvcnQtPnBk dCA9IG5ld19wZHQ7Cj4gIAlzd2l0Y2ggKHBvcnQtPnBkdCkgewo+ICAJY2FzZSBEUF9QRUVSX0RF VklDRV9EUF9MRUdBQ1lfQ09OVjoKPiAgCWNhc2UgRFBfUEVFUl9ERVZJQ0VfU1NUX1NJTks6Cj4g IAkJLyogYWRkIGkyYyBvdmVyIHNpZGViYW5kICovCj4gIAkJcmV0ID0gZHJtX2RwX21zdF9yZWdp c3Rlcl9pMmNfYnVzKCZwb3J0LT5hdXgpOwo+ICAJCWJyZWFrOwo+ICsKPiAgCWNhc2UgRFBfUEVF Ul9ERVZJQ0VfTVNUX0JSQU5DSElORzoKPiAgCQlsY3QgPSBkcm1fZHBfY2FsY3VsYXRlX3JhZChw b3J0LCByYWQpOwo+ICsJCW1zdGIgPSBkcm1fZHBfYWRkX21zdF9icmFuY2hfZGV2aWNlKGxjdCwg cmFkKTsKPiArCQlpZiAoIW1zdGIpIHsKPiArCQkJcmV0ID0gLUVOT01FTTsKPiArCQkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIE1TVEIgZm9yIHBvcnQgJXAiLCBwb3J0KTsKPiArCQkJZ290 byBvdXQ7Cj4gKwkJfQo+ICAKPiAtCQlwb3J0LT5tc3RiID0gZHJtX2RwX2FkZF9tc3RfYnJhbmNo X2RldmljZShsY3QsIHJhZCk7Cj4gLQkJaWYgKHBvcnQtPm1zdGIpIHsKPiAtCQkJcG9ydC0+bXN0 Yi0+bWdyID0gcG9ydC0+bWdyOwo+IC0JCQlwb3J0LT5tc3RiLT5wb3J0X3BhcmVudCA9IHBvcnQ7 Cj4gLQkJCS8qCj4gLQkJCSAqIE1ha2Ugc3VyZSB0aGlzIHBvcnQncyBtZW1vcnkgYWxsb2NhdGlv biBzdGF5cwo+IC0JCQkgKiBhcm91bmQgdW50aWwgaXRzIGNoaWxkIE1TVEIgcmVsZWFzZXMgaXQK PiAtCQkJICovCj4gLQkJCWRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHBvcnQpOwo+ICsJCW11 dGV4X2xvY2soJm1nci0+bG9jayk7Cj4gKwkJcG9ydC0+bXN0YiA9IG1zdGI7Cj4gKwkJbXN0Yi0+ bWdyID0gcG9ydC0+bWdyOwo+ICsJCW1zdGItPnBvcnRfcGFyZW50ID0gcG9ydDsKPiAgCj4gLQkJ CXNlbmRfbGluayA9IHRydWU7Cj4gLQkJfQo+ICsJCS8qCj4gKwkJICogTWFrZSBzdXJlIHRoaXMg cG9ydCdzIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXlzCj4gKwkJICogYXJvdW5kIHVudGlsIGl0cyBj aGlsZCBNU1RCIHJlbGVhc2VzIGl0Cj4gKwkJICovCj4gKwkJZHJtX2RwX21zdF9nZXRfcG9ydF9t YWxsb2MocG9ydCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwo+ICsKPiArCQkvKiBB bmQgbWFrZSBzdXJlIHdlIHNlbmQgYSBsaW5rIGFkZHJlc3MgZm9yIHRoaXMgKi8KPiArCQlyZXQg PSAxOwo+ICAJCWJyZWFrOwo+ICAJfQo+IC0JcmV0dXJuIHNlbmRfbGluazsKPiArCj4gK291dDoK PiArCWlmIChyZXQgPCAwKQo+ICsJCXBvcnQtPnBkdCA9IERQX1BFRVJfREVWSUNFX05PTkU7Cj4g KwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtMTg4MSwxMCArMTkwNCw5IEBAIHN0 YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIs Cj4gIAkJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgICAgc3RydWN0IGRybV9k cF9saW5rX2FkZHJfcmVwbHlfcG9ydCAqcG9ydF9tc2cpCj4gIHsKPiArCXN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyID0gbXN0Yi0+bWdyOwo+ICAJc3RydWN0IGRybV9kcF9tc3Rf cG9ydCAqcG9ydDsKPiAtCWJvb2wgcmV0Owo+ICAJYm9vbCBjcmVhdGVkID0gZmFsc2U7Cj4gLQlp bnQgb2xkX3BkdCA9IDA7Cj4gIAlpbnQgb2xkX2RkcHMgPSAwOwo+ICAKPiAgCXBvcnQgPSBkcm1f ZHBfZ2V0X3BvcnQobXN0YiwgcG9ydF9tc2ctPnBvcnRfbnVtYmVyKTsKPiBAQCAtMTg5Niw3ICsx OTE4LDcgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCAqbXN0YiwKPiAgCQlrcmVmX2luaXQoJnBvcnQtPm1hbGxvY19rcmVmKTsKPiAgCQlwb3J0 LT5wYXJlbnQgPSBtc3RiOwo+ICAJCXBvcnQtPnBvcnRfbnVtID0gcG9ydF9tc2ctPnBvcnRfbnVt YmVyOwo+IC0JCXBvcnQtPm1nciA9IG1zdGItPm1ncjsKPiArCQlwb3J0LT5tZ3IgPSBtZ3I7Cj4g IAkJcG9ydC0+YXV4Lm5hbWUgPSAiRFBNU1QiOwo+ICAJCXBvcnQtPmF1eC5kZXYgPSBkZXYtPmRl djsKPiAgCQlwb3J0LT5hdXguaXNfcmVtb3RlID0gdHJ1ZTsKPiBAQCAtMTkwOSwxMSArMTkzMSw5 IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg Km1zdGIsCj4gIAo+ICAJCWNyZWF0ZWQgPSB0cnVlOwo+ICAJfSBlbHNlIHsKPiAtCQlvbGRfcGR0 ID0gcG9ydC0+cGR0Owo+ICAJCW9sZF9kZHBzID0gcG9ydC0+ZGRwczsKPiAgCX0KPiAgCj4gLQlw b3J0LT5wZHQgPSBwb3J0X21zZy0+cGVlcl9kZXZpY2VfdHlwZTsKPiAgCXBvcnQtPmlucHV0ID0g cG9ydF9tc2ctPmlucHV0X3BvcnQ7Cj4gIAlwb3J0LT5tY3MgPSBwb3J0X21zZy0+bWNzOwo+ICAJ cG9ydC0+ZGRwcyA9IHBvcnRfbXNnLT5kZHBzOwo+IEBAIC0xOTI1LDI5ICsxOTQ1LDMzIEBAIHN0 YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIs Cj4gIAkvKiBtYW5hZ2UgbXN0YiBwb3J0IGxpc3RzIHdpdGggbWdyIGxvY2sgLSB0YWtlIGEgcmVm ZXJlbmNlCj4gIAkgICBmb3IgdGhpcyBsaXN0ICovCj4gIAlpZiAoY3JlYXRlZCkgewo+IC0JCW11 dGV4X2xvY2soJm1zdGItPm1nci0+bG9jayk7Cj4gKwkJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsK PiAgCQlkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KHBvcnQpOwo+ICAJCWxpc3RfYWRkKCZw b3J0LT5uZXh0LCAmbXN0Yi0+cG9ydHMpOwo+IC0JCW11dGV4X3VubG9jaygmbXN0Yi0+bWdyLT5s b2NrKTsKPiArCQltdXRleF91bmxvY2soJm1nci0+bG9jayk7Cj4gIAl9Cj4gIAo+ICAJaWYgKG9s ZF9kZHBzICE9IHBvcnQtPmRkcHMpIHsKPiAgCQlpZiAocG9ydC0+ZGRwcykgewo+ICAJCQlpZiAo IXBvcnQtPmlucHV0KSB7Cj4gLQkJCQlkcm1fZHBfc2VuZF9lbnVtX3BhdGhfcmVzb3VyY2VzKG1z dGItPm1nciwKPiAtCQkJCQkJCQltc3RiLCBwb3J0KTsKPiArCQkJCWRybV9kcF9zZW5kX2VudW1f cGF0aF9yZXNvdXJjZXMobWdyLCBtc3RiLAo+ICsJCQkJCQkJCXBvcnQpOwo+ICAJCQl9Cj4gIAkJ fSBlbHNlIHsKPiAgCQkJcG9ydC0+YXZhaWxhYmxlX3BibiA9IDA7Cj4gIAkJfQo+ICAJfQo+ICAK PiAtCWlmIChvbGRfcGR0ICE9IHBvcnQtPnBkdCAmJiAhcG9ydC0+aW5wdXQpIHsKPiAtCQlkcm1f ZHBfcG9ydF90ZWFyZG93bl9wZHQocG9ydCwgb2xkX3BkdCk7Cj4gLQo+IC0JCXJldCA9IGRybV9k cF9wb3J0X3NldHVwX3BkdChwb3J0KTsKPiAtCQlpZiAocmV0ID09IHRydWUpCj4gLQkJCWRybV9k cF9zZW5kX2xpbmtfYWRkcmVzcyhtc3RiLT5tZ3IsIHBvcnQtPm1zdGIpOwo+ICsJaWYgKCFwb3J0 LT5pbnB1dCkgewo+ICsJCWludCByZXQgPSBkcm1fZHBfcG9ydF9zZXRfcGR0KHBvcnQsCj4gKwkJ CQkJICAgICAgcG9ydF9tc2ctPnBlZXJfZGV2aWNlX3R5cGUpOwo+ICsJCWlmIChyZXQgPT0gMSkg ewo+ICsJCQlkcm1fZHBfc2VuZF9saW5rX2FkZHJlc3MobWdyLCBwb3J0LT5tc3RiKTsKPiArCQl9 IGVsc2UgaWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY2hhbmdlIFBE VCBvbiBwb3J0ICVwOiAlZFxuIiwKPiArCQkJCSAgcG9ydCwgcmV0KTsKPiArCQkJZ290byBmYWls Owo+ICsJCX0KPiAgCX0KPiAgCj4gIAlpZiAoY3JlYXRlZCAmJiAhcG9ydC0+aW5wdXQpIHsKPiBA QCAtMTk1NSwxOCArMTk3OSwxMSBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3RydWN0 IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ICAKPiAgCQlidWlsZF9tc3RfcHJvcF9wYXRoKG1z dGIsIHBvcnQtPnBvcnRfbnVtLCBwcm9wcGF0aCwKPiAgCQkJCSAgICBzaXplb2YocHJvcHBhdGgp KTsKPiAtCQlwb3J0LT5jb25uZWN0b3IgPSAoKm1zdGItPm1nci0+Y2JzLT5hZGRfY29ubmVjdG9y KShtc3RiLT5tZ3IsCj4gLQkJCQkJCQkJICAgcG9ydCwKPiAtCQkJCQkJCQkgICBwcm9wcGF0aCk7 Cj4gLQkJaWYgKCFwb3J0LT5jb25uZWN0b3IpIHsKPiAtCQkJLyogcmVtb3ZlIGl0IGZyb20gdGhl IHBvcnQgbGlzdCAqLwo+IC0JCQltdXRleF9sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOwo+IC0JCQls aXN0X2RlbCgmcG9ydC0+bmV4dCk7Cj4gLQkJCW11dGV4X3VubG9jaygmbXN0Yi0+bWdyLT5sb2Nr KTsKPiAtCQkJLyogZHJvcCBwb3J0IGxpc3QgcmVmZXJlbmNlICovCj4gLQkJCWRybV9kcF9tc3Rf dG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Cj4gLQkJCWdvdG8gb3V0Owo+IC0JCX0KPiArCQlwb3J0 LT5jb25uZWN0b3IgPSAoKm1nci0+Y2JzLT5hZGRfY29ubmVjdG9yKShtZ3IsIHBvcnQsCj4gKwkJ CQkJCQkgICAgIHByb3BwYXRoKTsKPiArCQlpZiAoIXBvcnQtPmNvbm5lY3RvcikKPiArCQkJZ290 byBmYWlsOwo+ICsKPiAgCQlpZiAoKHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9EUF9MRUdB Q1lfQ09OViB8fAo+ICAJCSAgICAgcG9ydC0+cGR0ID09IERQX1BFRVJfREVWSUNFX1NTVF9TSU5L KSAmJgo+ICAJCSAgICBwb3J0LT5wb3J0X251bSA+PSBEUF9NU1RfTE9HSUNBTF9QT1JUXzApIHsK PiBAQCAtMTk3NCwyOCArMTk5MSwzOCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3Ry dWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ICAJCQkJCQkJICZwb3J0LT5hdXguZGRjKTsK PiAgCQkJZHJtX2Nvbm5lY3Rvcl9zZXRfdGlsZV9wcm9wZXJ0eShwb3J0LT5jb25uZWN0b3IpOwo+ ICAJCX0KPiAtCQkoKm1zdGItPm1nci0+Y2JzLT5yZWdpc3Rlcl9jb25uZWN0b3IpKHBvcnQtPmNv bm5lY3Rvcik7Cj4gKwo+ICsJCSgqbWdyLT5jYnMtPnJlZ2lzdGVyX2Nvbm5lY3RvcikocG9ydC0+ Y29ubmVjdG9yKTsKPiAgCX0KPiAgCj4gLW91dDoKPiAgCS8qIHB1dCByZWZlcmVuY2UgdG8gdGhp cyBwb3J0ICovCj4gIAlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICsJcmV0 dXJuOwo+ICsKPiArZmFpbDoKPiArCS8qIFJlbW92ZSBpdCBmcm9tIHRoZSBwb3J0IGxpc3QgKi8K PiArCW11dGV4X2xvY2soJm1nci0+bG9jayk7Cj4gKwlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7Cj4g KwltdXRleF91bmxvY2soJm1nci0+bG9jayk7Cj4gKwo+ICsJLyogRHJvcCB0aGUgcG9ydCBsaXN0 IHJlZmVyZW5jZSAqLwo+ICsJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiAr CS8qIEFuZCBub3cgZHJvcCBvdXIgcmVmZXJlbmNlICovCj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5 X3B1dF9wb3J0KHBvcnQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBkcm1fZHBfdXBkYXRlX3Bv cnQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ICAJCQkgICAgICAgc3RydWN0IGRy bV9kcF9jb25uZWN0aW9uX3N0YXR1c19ub3RpZnkgKmNvbm5fc3RhdCkKPiAgewo+ICAJc3RydWN0 IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKPiAtCWludCBvbGRfcGR0Owo+ICAJaW50IG9sZF9kZHBz Owo+ICAJYm9vbCBkb3dvcmsgPSBmYWxzZTsKPiArCj4gIAlwb3J0ID0gZHJtX2RwX2dldF9wb3J0 KG1zdGIsIGNvbm5fc3RhdC0+cG9ydF9udW1iZXIpOwo+ICAJaWYgKCFwb3J0KQo+ICAJCXJldHVy bjsKPiAgCj4gIAlvbGRfZGRwcyA9IHBvcnQtPmRkcHM7Cj4gLQlvbGRfcGR0ID0gcG9ydC0+cGR0 Owo+IC0JcG9ydC0+cGR0ID0gY29ubl9zdGF0LT5wZWVyX2RldmljZV90eXBlOwo+ICAJcG9ydC0+ bWNzID0gY29ubl9zdGF0LT5tZXNzYWdlX2NhcGFiaWxpdHlfc3RhdHVzOwo+ICAJcG9ydC0+bGRw cyA9IGNvbm5fc3RhdC0+bGVnYWN5X2RldmljZV9wbHVnX3N0YXR1czsKPiAgCXBvcnQtPmRkcHMg PSBjb25uX3N0YXQtPmRpc3BsYXlwb3J0X2RldmljZV9wbHVnX3N0YXR1czsKPiBAQCAtMjAwNywx MSArMjAzNCwxNyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfdXBkYXRlX3BvcnQoc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoICptc3RiLAo+ICAJCQlwb3J0LT5hdmFpbGFibGVfcGJuID0gMDsKPiAgCQl9 Cj4gIAl9Cj4gLQlpZiAob2xkX3BkdCAhPSBwb3J0LT5wZHQgJiYgIXBvcnQtPmlucHV0KSB7Cj4g LQkJZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIG9sZF9wZHQpOwo+ICAKPiAtCQlpZiAo ZHJtX2RwX3BvcnRfc2V0dXBfcGR0KHBvcnQpKQo+ICsJaWYgKCFwb3J0LT5pbnB1dCkgewo+ICsJ CWludCByZXQgPSBkcm1fZHBfcG9ydF9zZXRfcGR0KHBvcnQsCj4gKwkJCQkJICAgICAgY29ubl9z dGF0LT5wZWVyX2RldmljZV90eXBlKTsKPiArCQlpZiAocmV0ID09IDEpIHsKPiAgCQkJZG93b3Jr ID0gdHJ1ZTsKPiArCQl9IGVsc2UgaWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gY2hhbmdlIFBEVCBmb3IgcG9ydCAlcDogJWRcbiIsCj4gKwkJCQkgIHBvcnQsIHJldCk7 Cj4gKwkJCWRvd29yayA9IGZhbHNlOwo+ICsJCX0KPiAgCX0KPiAgCj4gIAlkcm1fZHBfbXN0X3Rv cG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+IEBAIC00MDAzLDkgKzQwMzYsNyBAQCBkcm1fZHBfZGVs YXllZF9kZXN0cm95X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKPiAgCWlmIChw b3J0LT5jb25uZWN0b3IpCj4gIAkJcG9ydC0+bWdyLT5jYnMtPmRlc3Ryb3lfY29ubmVjdG9yKHBv cnQtPm1nciwgcG9ydC0+Y29ubmVjdG9yKTsKPiAgCj4gLQlkcm1fZHBfcG9ydF90ZWFyZG93bl9w ZHQocG9ydCwgcG9ydC0+cGR0KTsKPiAtCXBvcnQtPnBkdCA9IERQX1BFRVJfREVWSUNFX05PTkU7 Cj4gLQo+ICsJZHJtX2RwX3BvcnRfc2V0X3BkdChwb3J0LCBEUF9QRUVSX0RFVklDRV9OT05FKTsK PiAgCWRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHBvcnQpOwo+ICB9Cj4gIAo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rw X21zdF9oZWxwZXIuaAo+IGluZGV4IDU0MjNhOGFkZGE3OC4uZjI1M2VlNDNlOWQ5IDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gQEAgLTU1LDggKzU1LDEwIEBAIHN0cnVjdCBkcm1fZHBf dmNwaSB7Cj4gICAqIEBudW1fc2RwX3N0cmVhbV9zaW5rczogTnVtYmVyIG9mIHN0cmVhbSBzaW5r cwo+ICAgKiBAYXZhaWxhYmxlX3BibjogQXZhaWxhYmxlIGJhbmR3aWR0aCBmb3IgdGhpcyBwb3J0 Lgo+ICAgKiBAbmV4dDogbGluayB0byBuZXh0IHBvcnQgb24gdGhpcyBicmFuY2ggZGV2aWNlCj4g LSAqIEBtc3RiOiBicmFuY2ggZGV2aWNlIGF0dGFjaCBiZWxvdyB0aGlzIHBvcnQKPiAtICogQGF1 eDogaTJjIGF1eCB0cmFuc3BvcnQgdG8gdGFsayB0byBkZXZpY2UgY29ubmVjdGVkIHRvIHRoaXMg cG9ydC4KPiArICogQG1zdGI6IGJyYW5jaCBkZXZpY2Ugb24gdGhpcyBwb3J0LCBwcm90ZWN0ZWQg YnkKPiArICogJmRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyLmxvY2sKPiArICogQGF1eDogaTJjIGF1 eCB0cmFuc3BvcnQgdG8gdGFsayB0byBkZXZpY2UgY29ubmVjdGVkIHRvIHRoaXMgcG9ydCwgcHJv dGVjdGVkCj4gKyAqIGJ5ICZkcm1fZHBfbXN0X3RvcG9sb2d5X21nci5sb2NrCj4gICAqIEBwYXJl bnQ6IGJyYW5jaCBkZXZpY2UgcGFyZW50IG9mIHRoaXMgcG9ydAo+ICAgKiBAdmNwaTogVmlydHVh bCBDaGFubmVsIFBheWxvYWQgaW5mbyBmb3IgdGhpcyBwb3J0Lgo+ICAgKiBAY29ubmVjdG9yOiBE Uk0gY29ubmVjdG9yIHRoaXMgcG9ydCBpcyBjb25uZWN0ZWQgdG8uCj4gLS0gCj4gMi4yMS4wCj4g CgotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs