From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v2 16/27] drm/dp_mst: Refactor pdt setup/teardown, add more locking Date: Wed, 25 Sep 2019 17:00:00 -0400 Message-ID: <581dc77ab09314ac8d7c4cd7dc3efee5d4663a97.camel@redhat.com> References: <20190903204645.25487-1-lyude@redhat.com> <20190903204645.25487-17-lyude@redhat.com> <20190925192750.GH218215@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190925192750.GH218215@art_vandelay> 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: Sean Paul Cc: Maxime Ripard , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, David Airlie , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Imre Deak , Maarten Lankhorst , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Juston Li , Daniel Vetter , Daniel Vetter , Harry Wentland , Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= T24gV2VkLCAyMDE5LTA5LTI1IGF0IDE1OjI3IC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gT24g VHVlLCBTZXAgMDMsIDIwMTkgYXQgMDQ6NDU6NTRQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90ZToK PiA+IFNpbmNlIHdlJ3JlIGdvaW5nIHRvIGJlIGltcGxlbWVudGluZyBzdXNwZW5kL3Jlc3VtZSBy ZXByb2JpbmcgdmVyeSBzb29uLAo+ID4gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGV4dHJh IGNhcmVmdWwgdG8gZW5zdXJlIHRoYXQgb3VyIGxvY2tpbmcKPiA+IGFjdHVhbGx5IHByb3RlY3Rz IHRoZSB0b3BvbG9neSBzdGF0ZSB3aGVyZSB3ZSBleHBlY3QgaXQgdG8uIFR1cm5zIG91dAo+ID4g dGhpcyBpc24ndCB0aGUgY2FzZSB3aXRoIGRybV9kcF9wb3J0X3NldHVwX3BkdCgpIGFuZAo+ID4g ZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KCksIGJvdGggb2Ygd2hpY2ggY2hhbmdlIHBvcnQtPm1z dGIgd2l0aG91dAo+ID4gZ3JhYmJpbmcgJm1nci0+bG9jay4KPiA+IAo+ID4gQWRkaXRpb25hbGx5 LCBzaW5jZSBtb3N0IGNhbGxlcnMgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBqdXN0IHVzaW5nIGl0 IHRvCj4gPiB0ZWFyZG93biB0aGUgcG9ydCdzIHByZXZpb3VzIFBEVCBhbmQgc2V0dXAgYSBuZXcg b25lIHdlIGNhbiBzaW1wbGlmeQo+ID4gdGhpbmdzIGEgYml0IGFuZCBjb21iaW5lIGRybV9kcF9w b3J0X3NldHVwX3BkdCgpIGFuZAo+ID4gZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KCkgaW50byBh IHNpbmdsZSBmdW5jdGlvbjoKPiA+IGRybV9kcF9wb3J0X3NldF9wZHQoKS4gVGhpcyBmdW5jdGlv biBhbHNvIGhhbmRsZXMgYWN0dWFsbHkgZW5zdXJpbmcgdGhhdAo+ID4gd2UgZ3JhYiB0aGUgY29y cmVjdCBsb2NrcyB3aGVuIHdlIG5lZWQgdG8gbW9kaWZ5IHBvcnQtPm1zdGIuCj4gPiAKPiA+IENj OiBKdXN0b24gTGkgPGp1c3Rvbi5saUBpbnRlbC5jb20+Cj4gPiBDYzogSW1yZSBEZWFrIDxpbXJl LmRlYWtAaW50ZWwuY29tPgo+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gPiBDYzogSGFycnkgV2VudGxhbmQgPGh3ZW50bGFuQGFtZC5jb20+ Cj4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiA+IFNpZ25l ZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jIHwgMTgxICsrKysrKysrKysrKysrKy0t LS0tLS0tLS0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAgICB8ICAg NiArLQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9w b2xvZ3kuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiBp bmRleCBkMTYxMDQzNGEwY2IuLjk5NDRlZjJjZTg4NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZHBfbXN0X3RvcG9sb2d5LmMKPiA+IEBAIC0xNDg3LDI0ICsxNDg3LDYgQEAgZHJtX2RwX21z dF90b3BvbG9neV9wdXRfbXN0YihzdHJ1Y3QKPiA+IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQo+ ID4gIAlrcmVmX3B1dCgmbXN0Yi0+dG9wb2xvZ3lfa3JlZiwgZHJtX2RwX2Rlc3Ryb3lfbXN0X2Jy YW5jaF9kZXZpY2UpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBkcm1fZHBfcG9ydF90 ZWFyZG93bl9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50Cj4gPiBvbGRfcGR0 KQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiOwo+ID4gLQo+ID4g LQlzd2l0Y2ggKG9sZF9wZHQpIHsKPiA+IC0JY2FzZSBEUF9QRUVSX0RFVklDRV9EUF9MRUdBQ1lf Q09OVjoKPiA+IC0JY2FzZSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSzoKPiA+IC0JCS8qIHJlbW92 ZSBpMmMgb3ZlciBzaWRlYmFuZCAqLwo+ID4gLQkJZHJtX2RwX21zdF91bnJlZ2lzdGVyX2kyY19i dXMoJnBvcnQtPmF1eCk7Cj4gPiAtCQlicmVhazsKPiA+IC0JY2FzZSBEUF9QRUVSX0RFVklDRV9N U1RfQlJBTkNISU5HOgo+ID4gLQkJbXN0YiA9IHBvcnQtPm1zdGI7Cj4gPiAtCQlwb3J0LT5tc3Ri ID0gTlVMTDsKPiA+IC0JCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIobXN0Yik7Cj4gPiAt CQlicmVhazsKPiA+IC0JfQo+ID4gLX0KPiA+IC0KPiA+ICBzdGF0aWMgdm9pZCBkcm1fZHBfZGVz dHJveV9wb3J0KHN0cnVjdCBrcmVmICprcmVmKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCA9Cj4gPiBAQCAtMTcxNCwzOCArMTY5Niw3OSBAQCBzdGF0aWMgdTggZHJt X2RwX2NhbGN1bGF0ZV9yYWQoc3RydWN0Cj4gPiBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsCj4gPiAg CXJldHVybiBwYXJlbnRfbGN0ICsgMTsKPiA+ICB9Cj4gPiAgCj4gPiAtLyoKPiA+IC0gKiByZXR1 cm4gc2VuZHMgbGluayBhZGRyZXNzIGZvciBuZXcgbXN0Ygo+ID4gLSAqLwo+ID4gLXN0YXRpYyBi b29sIGRybV9kcF9wb3J0X3NldHVwX3BkdChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQo+ ID4gK3N0YXRpYyBpbnQgZHJtX2RwX3BvcnRfc2V0X3BkdChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 ICpwb3J0LCB1OCBuZXdfcGR0KQo+ID4gIHsKPiA+IC0JaW50IHJldDsKPiA+IC0JdTggcmFkWzZd LCBsY3Q7Cj4gPiAtCWJvb2wgc2VuZF9saW5rID0gZmFsc2U7Cj4gPiArCXN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyID0gcG9ydC0+bWdyOwo+ID4gKwlzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGI7Cj4gPiArCXU4IHJhZFs4XSwgbGN0Owo+ID4gKwlpbnQgcmV0ID0gMDsK PiA+ICsKPiA+ICsJaWYgKHBvcnQtPnBkdCA9PSBuZXdfcGR0KQo+IAo+IFNob3VsZG4ndCB3ZSBh bHNvIGVuc3VyZSB0aGF0IGFjY2VzcyB0byBwb3J0LT5wZHQgaXMgYWxzbyBsb2NrZWQ/Cj4gCgpJ dCdzIHNwZWNpZmljYWxseSBwb3J0LT5tc3RiIHRoYXQgbmVlZHMgdG8gYmUgcHJvdGVjdGVkIHVu ZGVyIGxvY2suIFdlIGRvbid0CnVzZSBwb3J0LT5wZHQgZm9yIHRyYXZlcnNpbmcgdGhlIHRvcG9s b2d5IGF0IGFsbCwgc28ga2VlcGluZyBpdCB1bmRlcgpjb25uZWN0aW9uX211dGV4IGlzIHN1ZmZp Y2llbnQuCgo+IFNlYW4KPiAKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwkvKiBUZWFyZG93 biB0aGUgb2xkIHBkdCwgaWYgdGhlcmUgaXMgb25lICovCj4gPiArCXN3aXRjaCAocG9ydC0+cGR0 KSB7Cj4gPiArCWNhc2UgRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlY6Cj4gPiArCWNhc2Ug RFBfUEVFUl9ERVZJQ0VfU1NUX1NJTks6Cj4gPiArCQkvKgo+ID4gKwkJICogSWYgdGhlIG5ldyBQ RFQgd291bGQgYWxzbyBoYXZlIGFuIGkyYyBidXMsIGRvbid0IGJvdGhlcgo+ID4gKwkJICogd2l0 aCByZXJlZ2lzdGVyaW5nIGl0Cj4gPiArCQkgKi8KPiA+ICsJCWlmIChuZXdfcGR0ID09IERQX1BF RVJfREVWSUNFX0RQX0xFR0FDWV9DT05WIHx8Cj4gPiArCQkgICAgbmV3X3BkdCA9PSBEUF9QRUVS X0RFVklDRV9TU1RfU0lOSykgewo+ID4gKwkJCXBvcnQtPnBkdCA9IG5ld19wZHQ7Cj4gPiArCQkJ cmV0dXJuIDA7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQkvKiByZW1vdmUgaTJjIG92ZXIgc2lkZWJh bmQgKi8KPiA+ICsJCWRybV9kcF9tc3RfdW5yZWdpc3Rlcl9pMmNfYnVzKCZwb3J0LT5hdXgpOwo+ ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgRFBfUEVFUl9ERVZJQ0VfTVNUX0JSQU5DSElORzoKPiA+ ICsJCW11dGV4X2xvY2soJm1nci0+bG9jayk7Cj4gPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1 dF9tc3RiKHBvcnQtPm1zdGIpOwo+ID4gKwkJcG9ydC0+bXN0YiA9IE5VTEw7Cj4gPiArCQltdXRl eF91bmxvY2soJm1nci0+bG9jayk7Cj4gPiArCQlicmVhazsKPiA+ICsJfQo+ID4gKwo+ID4gKwlw b3J0LT5wZHQgPSBuZXdfcGR0Owo+ID4gIAlzd2l0Y2ggKHBvcnQtPnBkdCkgewo+ID4gIAljYXNl IERQX1BFRVJfREVWSUNFX0RQX0xFR0FDWV9DT05WOgo+ID4gIAljYXNlIERQX1BFRVJfREVWSUNF X1NTVF9TSU5LOgo+ID4gIAkJLyogYWRkIGkyYyBvdmVyIHNpZGViYW5kICovCj4gPiAgCQlyZXQg PSBkcm1fZHBfbXN0X3JlZ2lzdGVyX2kyY19idXMoJnBvcnQtPmF1eCk7Cj4gPiAgCQlicmVhazsK PiA+ICsKPiA+ICAJY2FzZSBEUF9QRUVSX0RFVklDRV9NU1RfQlJBTkNISU5HOgo+ID4gIAkJbGN0 ID0gZHJtX2RwX2NhbGN1bGF0ZV9yYWQocG9ydCwgcmFkKTsKPiA+ICsJCW1zdGIgPSBkcm1fZHBf YWRkX21zdF9icmFuY2hfZGV2aWNlKGxjdCwgcmFkKTsKPiA+ICsJCWlmICghbXN0Yikgewo+ID4g KwkJCXJldCA9IC1FTk9NRU07Cj4gPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE1T VEIgZm9yIHBvcnQgJXAiLCBwb3J0KTsKPiA+ICsJCQlnb3RvIG91dDsKPiA+ICsJCX0KPiA+ICAK PiA+IC0JCXBvcnQtPm1zdGIgPSBkcm1fZHBfYWRkX21zdF9icmFuY2hfZGV2aWNlKGxjdCwgcmFk KTsKPiA+IC0JCWlmIChwb3J0LT5tc3RiKSB7Cj4gPiAtCQkJcG9ydC0+bXN0Yi0+bWdyID0gcG9y dC0+bWdyOwo+ID4gLQkJCXBvcnQtPm1zdGItPnBvcnRfcGFyZW50ID0gcG9ydDsKPiA+IC0JCQkv Kgo+ID4gLQkJCSAqIE1ha2Ugc3VyZSB0aGlzIHBvcnQncyBtZW1vcnkgYWxsb2NhdGlvbiBzdGF5 cwo+ID4gLQkJCSAqIGFyb3VuZCB1bnRpbCBpdHMgY2hpbGQgTVNUQiByZWxlYXNlcyBpdAo+ID4g LQkJCSAqLwo+ID4gLQkJCWRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHBvcnQpOwo+ID4gKwkJ bXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKPiA+ICsJCXBvcnQtPm1zdGIgPSBtc3RiOwo+ID4gKwkJ bXN0Yi0+bWdyID0gcG9ydC0+bWdyOwo+ID4gKwkJbXN0Yi0+cG9ydF9wYXJlbnQgPSBwb3J0Owo+ ID4gIAo+ID4gLQkJCXNlbmRfbGluayA9IHRydWU7Cj4gPiAtCQl9Cj4gPiArCQkvKgo+ID4gKwkJ ICogTWFrZSBzdXJlIHRoaXMgcG9ydCdzIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXlzCj4gPiArCQkg KiBhcm91bmQgdW50aWwgaXRzIGNoaWxkIE1TVEIgcmVsZWFzZXMgaXQKPiA+ICsJCSAqLwo+ID4g KwkJZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MocG9ydCk7Cj4gPiArCQltdXRleF91bmxvY2so Jm1nci0+bG9jayk7Cj4gPiArCj4gPiArCQkvKiBBbmQgbWFrZSBzdXJlIHdlIHNlbmQgYSBsaW5r IGFkZHJlc3MgZm9yIHRoaXMgKi8KPiA+ICsJCXJldCA9IDE7Cj4gPiAgCQlicmVhazsKPiA+ICAJ fQo+ID4gLQlyZXR1cm4gc2VuZF9saW5rOwo+ID4gKwo+ID4gK291dDoKPiA+ICsJaWYgKHJldCA8 IDApCj4gPiArCQlwb3J0LT5wZHQgPSBEUF9QRUVSX0RFVklDRV9OT05FOwo+ID4gKwlyZXR1cm4g cmV0Owo+ID4gIH0KPiA+ICAKPiA+ICAvKioKPiA+IEBAIC0xODgxLDEwICsxOTA0LDkgQEAgc3Rh dGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdAo+ID4gZHJtX2RwX21zdF9icmFuY2ggKm1z dGIsCj4gPiAgCQkJICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQkJICAgIHN0cnVj dCBkcm1fZHBfbGlua19hZGRyX3JlcGx5X3BvcnQgKnBvcnRfbXNnKQo+ID4gIHsKPiA+ICsJc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBtc3RiLT5tZ3I7Cj4gPiAgCXN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Cj4gPiAtCWJvb2wgcmV0Owo+ID4gIAlib29sIGNyZWF0 ZWQgPSBmYWxzZTsKPiA+IC0JaW50IG9sZF9wZHQgPSAwOwo+ID4gIAlpbnQgb2xkX2RkcHMgPSAw Owo+ID4gIAo+ID4gIAlwb3J0ID0gZHJtX2RwX2dldF9wb3J0KG1zdGIsIHBvcnRfbXNnLT5wb3J0 X251bWJlcik7Cj4gPiBAQCAtMTg5Niw3ICsxOTE4LDcgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2Fk ZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaAo+ID4gKm1zdGIsCj4gPiAgCQlrcmVmX2lu aXQoJnBvcnQtPm1hbGxvY19rcmVmKTsKPiA+ICAJCXBvcnQtPnBhcmVudCA9IG1zdGI7Cj4gPiAg CQlwb3J0LT5wb3J0X251bSA9IHBvcnRfbXNnLT5wb3J0X251bWJlcjsKPiA+IC0JCXBvcnQtPm1n ciA9IG1zdGItPm1ncjsKPiA+ICsJCXBvcnQtPm1nciA9IG1ncjsKPiA+ICAJCXBvcnQtPmF1eC5u YW1lID0gIkRQTVNUIjsKPiA+ICAJCXBvcnQtPmF1eC5kZXYgPSBkZXYtPmRldjsKPiA+ICAJCXBv cnQtPmF1eC5pc19yZW1vdGUgPSB0cnVlOwo+ID4gQEAgLTE5MDksMTEgKzE5MzEsOSBAQCBzdGF0 aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3RydWN0Cj4gPiBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YiwKPiA+ICAKPiA+ICAJCWNyZWF0ZWQgPSB0cnVlOwo+ID4gIAl9IGVsc2Ugewo+ID4gLQkJb2xk X3BkdCA9IHBvcnQtPnBkdDsKPiA+ICAJCW9sZF9kZHBzID0gcG9ydC0+ZGRwczsKPiA+ICAJfQo+ ID4gIAo+ID4gLQlwb3J0LT5wZHQgPSBwb3J0X21zZy0+cGVlcl9kZXZpY2VfdHlwZTsKPiA+ICAJ cG9ydC0+aW5wdXQgPSBwb3J0X21zZy0+aW5wdXRfcG9ydDsKPiA+ICAJcG9ydC0+bWNzID0gcG9y dF9tc2ctPm1jczsKPiA+ICAJcG9ydC0+ZGRwcyA9IHBvcnRfbXNnLT5kZHBzOwo+ID4gQEAgLTE5 MjUsMjkgKzE5NDUsMzMgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdAo+ID4g ZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCj4gPiAgCS8qIG1hbmFnZSBtc3RiIHBvcnQgbGlzdHMg d2l0aCBtZ3IgbG9jayAtIHRha2UgYSByZWZlcmVuY2UKPiA+ICAJICAgZm9yIHRoaXMgbGlzdCAq Lwo+ID4gIAlpZiAoY3JlYXRlZCkgewo+ID4gLQkJbXV0ZXhfbG9jaygmbXN0Yi0+bWdyLT5sb2Nr KTsKPiA+ICsJCW11dGV4X2xvY2soJm1nci0+bG9jayk7Cj4gPiAgCQlkcm1fZHBfbXN0X3RvcG9s b2d5X2dldF9wb3J0KHBvcnQpOwo+ID4gIAkJbGlzdF9hZGQoJnBvcnQtPm5leHQsICZtc3RiLT5w b3J0cyk7Cj4gPiAtCQltdXRleF91bmxvY2soJm1zdGItPm1nci0+bG9jayk7Cj4gPiArCQltdXRl eF91bmxvY2soJm1nci0+bG9jayk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKG9sZF9kZHBzICE9 IHBvcnQtPmRkcHMpIHsKPiA+ICAJCWlmIChwb3J0LT5kZHBzKSB7Cj4gPiAgCQkJaWYgKCFwb3J0 LT5pbnB1dCkgewo+ID4gLQkJCQlkcm1fZHBfc2VuZF9lbnVtX3BhdGhfcmVzb3VyY2VzKG1zdGIt Pm1nciwKPiA+IC0JCQkJCQkJCW1zdGIsIHBvcnQpOwo+ID4gKwkJCQlkcm1fZHBfc2VuZF9lbnVt X3BhdGhfcmVzb3VyY2VzKG1nciwgbXN0YiwKPiA+ICsJCQkJCQkJCXBvcnQpOwo+ID4gIAkJCX0K PiA+ICAJCX0gZWxzZSB7Cj4gPiAgCQkJcG9ydC0+YXZhaWxhYmxlX3BibiA9IDA7Cj4gPiAgCQl9 Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWYgKG9sZF9wZHQgIT0gcG9ydC0+cGR0ICYmICFwb3J0LT5p bnB1dCkgewo+ID4gLQkJZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIG9sZF9wZHQpOwo+ ID4gLQo+ID4gLQkJcmV0ID0gZHJtX2RwX3BvcnRfc2V0dXBfcGR0KHBvcnQpOwo+ID4gLQkJaWYg KHJldCA9PSB0cnVlKQo+ID4gLQkJCWRybV9kcF9zZW5kX2xpbmtfYWRkcmVzcyhtc3RiLT5tZ3Is IHBvcnQtPm1zdGIpOwo+ID4gKwlpZiAoIXBvcnQtPmlucHV0KSB7Cj4gPiArCQlpbnQgcmV0ID0g ZHJtX2RwX3BvcnRfc2V0X3BkdChwb3J0LAo+ID4gKwkJCQkJICAgICAgcG9ydF9tc2ctPnBlZXJf ZGV2aWNlX3R5cGUpOwo+ID4gKwkJaWYgKHJldCA9PSAxKSB7Cj4gPiArCQkJZHJtX2RwX3NlbmRf bGlua19hZGRyZXNzKG1nciwgcG9ydC0+bXN0Yik7Cj4gPiArCQl9IGVsc2UgaWYgKHJldCA8IDAp IHsKPiA+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjaGFuZ2UgUERUIG9uIHBvcnQgJXA6ICVk XG4iLAo+ID4gKwkJCQkgIHBvcnQsIHJldCk7Cj4gPiArCQkJZ290byBmYWlsOwo+ID4gKwkJfQo+ ID4gIAl9Cj4gPiAgCj4gPiAgCWlmIChjcmVhdGVkICYmICFwb3J0LT5pbnB1dCkgewo+ID4gQEAg LTE5NTUsMTggKzE5NzksMTEgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdAo+ ID4gZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCj4gPiAgCj4gPiAgCQlidWlsZF9tc3RfcHJvcF9w YXRoKG1zdGIsIHBvcnQtPnBvcnRfbnVtLCBwcm9wcGF0aCwKPiA+ICAJCQkJICAgIHNpemVvZihw cm9wcGF0aCkpOwo+ID4gLQkJcG9ydC0+Y29ubmVjdG9yID0gKCptc3RiLT5tZ3ItPmNicy0+YWRk X2Nvbm5lY3RvcikobXN0Yi0+bWdyLAo+ID4gLQkJCQkJCQkJICAgcG9ydCwKPiA+IC0JCQkJCQkJ CSAgIHByb3BwYXRoKTsKPiA+IC0JCWlmICghcG9ydC0+Y29ubmVjdG9yKSB7Cj4gPiAtCQkJLyog cmVtb3ZlIGl0IGZyb20gdGhlIHBvcnQgbGlzdCAqLwo+ID4gLQkJCW11dGV4X2xvY2soJm1zdGIt Pm1nci0+bG9jayk7Cj4gPiAtCQkJbGlzdF9kZWwoJnBvcnQtPm5leHQpOwo+ID4gLQkJCW11dGV4 X3VubG9jaygmbXN0Yi0+bWdyLT5sb2NrKTsKPiA+IC0JCQkvKiBkcm9wIHBvcnQgbGlzdCByZWZl cmVuY2UgKi8KPiA+IC0JCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ID4g LQkJCWdvdG8gb3V0Owo+ID4gLQkJfQo+ID4gKwkJcG9ydC0+Y29ubmVjdG9yID0gKCptZ3ItPmNi cy0+YWRkX2Nvbm5lY3RvcikobWdyLCBwb3J0LAo+ID4gKwkJCQkJCQkgICAgIHByb3BwYXRoKTsK PiA+ICsJCWlmICghcG9ydC0+Y29ubmVjdG9yKQo+ID4gKwkJCWdvdG8gZmFpbDsKPiA+ICsKPiA+ ICAJCWlmICgocG9ydC0+cGR0ID09IERQX1BFRVJfREVWSUNFX0RQX0xFR0FDWV9DT05WIHx8Cj4g PiAgCQkgICAgIHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSykgJiYKPiA+ICAJ CSAgICBwb3J0LT5wb3J0X251bSA+PSBEUF9NU1RfTE9HSUNBTF9QT1JUXzApIHsKPiA+IEBAIC0x OTc0LDI4ICsxOTkxLDM4IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QKPiA+ IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ID4gIAkJCQkJCQkgJnBvcnQtPmF1eC5kZGMpOwo+ ID4gIAkJCWRybV9jb25uZWN0b3Jfc2V0X3RpbGVfcHJvcGVydHkocG9ydC0+Y29ubmVjdG9yKTsK PiA+ICAJCX0KPiA+IC0JCSgqbXN0Yi0+bWdyLT5jYnMtPnJlZ2lzdGVyX2Nvbm5lY3RvcikocG9y dC0+Y29ubmVjdG9yKTsKPiA+ICsKPiA+ICsJCSgqbWdyLT5jYnMtPnJlZ2lzdGVyX2Nvbm5lY3Rv cikocG9ydC0+Y29ubmVjdG9yKTsKPiA+ICAJfQo+ID4gIAo+ID4gLW91dDoKPiA+ICAJLyogcHV0 IHJlZmVyZW5jZSB0byB0aGlzIHBvcnQgKi8KPiA+ICAJZHJtX2RwX21zdF90b3BvbG9neV9wdXRf cG9ydChwb3J0KTsKPiA+ICsJcmV0dXJuOwo+ID4gKwo+ID4gK2ZhaWw6Cj4gPiArCS8qIFJlbW92 ZSBpdCBmcm9tIHRoZSBwb3J0IGxpc3QgKi8KPiA+ICsJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsK PiA+ICsJbGlzdF9kZWwoJnBvcnQtPm5leHQpOwo+ID4gKwltdXRleF91bmxvY2soJm1nci0+bG9j ayk7Cj4gPiArCj4gPiArCS8qIERyb3AgdGhlIHBvcnQgbGlzdCByZWZlcmVuY2UgKi8KPiA+ICsJ ZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiA+ICsJLyogQW5kIG5vdyBkcm9w IG91ciByZWZlcmVuY2UgKi8KPiA+ICsJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0 KTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgZHJtX2RwX3VwZGF0ZV9wb3J0KHN0cnVj dCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKPiA+ICAJCQkgICAgICAgc3RydWN0IGRybV9kcF9j b25uZWN0aW9uX3N0YXR1c19ub3RpZnkKPiA+ICpjb25uX3N0YXQpCj4gPiAgewo+ID4gIAlzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0Owo+ID4gLQlpbnQgb2xkX3BkdDsKPiA+ICAJaW50IG9s ZF9kZHBzOwo+ID4gIAlib29sIGRvd29yayA9IGZhbHNlOwo+ID4gKwo+ID4gIAlwb3J0ID0gZHJt X2RwX2dldF9wb3J0KG1zdGIsIGNvbm5fc3RhdC0+cG9ydF9udW1iZXIpOwo+ID4gIAlpZiAoIXBv cnQpCj4gPiAgCQlyZXR1cm47Cj4gPiAgCj4gPiAgCW9sZF9kZHBzID0gcG9ydC0+ZGRwczsKPiA+ IC0Jb2xkX3BkdCA9IHBvcnQtPnBkdDsKPiA+IC0JcG9ydC0+cGR0ID0gY29ubl9zdGF0LT5wZWVy X2RldmljZV90eXBlOwo+ID4gIAlwb3J0LT5tY3MgPSBjb25uX3N0YXQtPm1lc3NhZ2VfY2FwYWJp bGl0eV9zdGF0dXM7Cj4gPiAgCXBvcnQtPmxkcHMgPSBjb25uX3N0YXQtPmxlZ2FjeV9kZXZpY2Vf cGx1Z19zdGF0dXM7Cj4gPiAgCXBvcnQtPmRkcHMgPSBjb25uX3N0YXQtPmRpc3BsYXlwb3J0X2Rl dmljZV9wbHVnX3N0YXR1czsKPiA+IEBAIC0yMDA3LDExICsyMDM0LDE3IEBAIHN0YXRpYyB2b2lk IGRybV9kcF91cGRhdGVfcG9ydChzdHJ1Y3QKPiA+IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ ID4gIAkJCXBvcnQtPmF2YWlsYWJsZV9wYm4gPSAwOwo+ID4gIAkJfQo+ID4gIAl9Cj4gPiAtCWlm IChvbGRfcGR0ICE9IHBvcnQtPnBkdCAmJiAhcG9ydC0+aW5wdXQpIHsKPiA+IC0JCWRybV9kcF9w b3J0X3RlYXJkb3duX3BkdChwb3J0LCBvbGRfcGR0KTsKPiA+ICAKPiA+IC0JCWlmIChkcm1fZHBf cG9ydF9zZXR1cF9wZHQocG9ydCkpCj4gPiArCWlmICghcG9ydC0+aW5wdXQpIHsKPiA+ICsJCWlu dCByZXQgPSBkcm1fZHBfcG9ydF9zZXRfcGR0KHBvcnQsCj4gPiArCQkJCQkgICAgICBjb25uX3N0 YXQtPnBlZXJfZGV2aWNlX3R5cGUpOwo+ID4gKwkJaWYgKHJldCA9PSAxKSB7Cj4gPiAgCQkJZG93 b3JrID0gdHJ1ZTsKPiA+ICsJCX0gZWxzZSBpZiAocmV0IDwgMCkgewo+ID4gKwkJCURSTV9FUlJP UigiRmFpbGVkIHRvIGNoYW5nZSBQRFQgZm9yIHBvcnQgJXA6ICVkXG4iLAo+ID4gKwkJCQkgIHBv cnQsIHJldCk7Cj4gPiArCQkJZG93b3JrID0gZmFsc2U7Cj4gPiArCQl9Cj4gPiAgCX0KPiA+ICAK PiA+ICAJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiA+IEBAIC00MDAzLDkg KzQwMzYsNyBAQCBkcm1fZHBfZGVsYXllZF9kZXN0cm95X3BvcnQoc3RydWN0IGRybV9kcF9tc3Rf cG9ydAo+ID4gKnBvcnQpCj4gPiAgCWlmIChwb3J0LT5jb25uZWN0b3IpCj4gPiAgCQlwb3J0LT5t Z3ItPmNicy0+ZGVzdHJveV9jb25uZWN0b3IocG9ydC0+bWdyLCBwb3J0LT5jb25uZWN0b3IpOwo+ ID4gIAo+ID4gLQlkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQocG9ydCwgcG9ydC0+cGR0KTsKPiA+ IC0JcG9ydC0+cGR0ID0gRFBfUEVFUl9ERVZJQ0VfTk9ORTsKPiA+IC0KPiA+ICsJZHJtX2RwX3Bv cnRfc2V0X3BkdChwb3J0LCBEUF9QRUVSX0RFVklDRV9OT05FKTsKPiA+ICAJZHJtX2RwX21zdF9w dXRfcG9ydF9tYWxsb2MocG9ydCk7Cj4gPiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKPiA+IGIvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9o ZWxwZXIuaAo+ID4gaW5kZXggNTQyM2E4YWRkYTc4Li5mMjUzZWU0M2U5ZDkgMTAwNjQ0Cj4gPiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiBAQCAtNTUsOCArNTUsMTAgQEAgc3RydWN0IGRybV9k cF92Y3BpIHsKPiA+ICAgKiBAbnVtX3NkcF9zdHJlYW1fc2lua3M6IE51bWJlciBvZiBzdHJlYW0g c2lua3MKPiA+ICAgKiBAYXZhaWxhYmxlX3BibjogQXZhaWxhYmxlIGJhbmR3aWR0aCBmb3IgdGhp cyBwb3J0Lgo+ID4gICAqIEBuZXh0OiBsaW5rIHRvIG5leHQgcG9ydCBvbiB0aGlzIGJyYW5jaCBk ZXZpY2UKPiA+IC0gKiBAbXN0YjogYnJhbmNoIGRldmljZSBhdHRhY2ggYmVsb3cgdGhpcyBwb3J0 Cj4gPiAtICogQGF1eDogaTJjIGF1eCB0cmFuc3BvcnQgdG8gdGFsayB0byBkZXZpY2UgY29ubmVj dGVkIHRvIHRoaXMgcG9ydC4KPiA+ICsgKiBAbXN0YjogYnJhbmNoIGRldmljZSBvbiB0aGlzIHBv cnQsIHByb3RlY3RlZCBieQo+ID4gKyAqICZkcm1fZHBfbXN0X3RvcG9sb2d5X21nci5sb2NrCj4g PiArICogQGF1eDogaTJjIGF1eCB0cmFuc3BvcnQgdG8gdGFsayB0byBkZXZpY2UgY29ubmVjdGVk IHRvIHRoaXMgcG9ydCwKPiA+IHByb3RlY3RlZAo+ID4gKyAqIGJ5ICZkcm1fZHBfbXN0X3RvcG9s b2d5X21nci5sb2NrCj4gPiAgICogQHBhcmVudDogYnJhbmNoIGRldmljZSBwYXJlbnQgb2YgdGhp cyBwb3J0Cj4gPiAgICogQHZjcGk6IFZpcnR1YWwgQ2hhbm5lbCBQYXlsb2FkIGluZm8gZm9yIHRo aXMgcG9ydC4KPiA+ICAgKiBAY29ubmVjdG9yOiBEUk0gY29ubmVjdG9yIHRoaXMgcG9ydCBpcyBj b25uZWN0ZWQgdG8uCj4gPiAtLSAKPiA+IDIuMjEuMAo+ID4gCi0tIApDaGVlcnMsCglMeXVkZSBQ YXVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQt Z2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=