From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] drm/dp: move hw_mutex up the call stack Date: Wed, 9 Dec 2015 21:37:04 +0200 Message-ID: <20151209193704.GL4437@intel.com> References: <1445021668-27695-1-git-send-email-robdclark@gmail.com> <87vb87vcvk.fsf@intel.com> <20151209162555.GI4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 6ACAA6E337 for ; Wed, 9 Dec 2015 11:37:15 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Clark Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBEZWMgMDksIDIwMTUgYXQgMTI6MjY6MTFQTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE9uIFdlZCwgRGVjIDksIDIwMTUgYXQgMTE6MjUgQU0sIFZpbGxlIFN5cmrDpGzDpAo+IDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiBPbiBXZWQsIERlYyAwOSwg MjAxNSBhdCAwNTo1MTo0M1BNICswMjAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiA+PiBPbiBXZWQs IDA5IERlYyAyMDE1LCBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+IHdyb3RlOgo+ID4+ ID4gT24gRnJpLCBPY3QgMTYsIDIwMTUgYXQgMjo1NCBQTSwgUm9iIENsYXJrIDxyb2JkY2xhcmtA Z21haWwuY29tPiB3cm90ZToKPiA+PiA+PiAxKSBkb24ndCBsZXQgb3RoZXIgdGhyZWFkcyB0cnlp bmcgdG8gYmFuZyBvbiBhdXggY2hhbm5lbCBpbnRlcnJ1cHQgdGhlCj4gPj4gPj4gZGVmZXIgdGlt ZW91dC9sb2dpYwo+ID4+ID4+IDIpIGRvbid0IGxldCBvdGhlciB0aHJlYWRzIGludGVycnVwdCB0 aGUgaTJjIG92ZXIgYXV4IGxvZ2ljCj4gPj4gPj4KPiA+PiA+PiAtLS0KPiA+PiA+PiBUaGlzIHdh c24ndCBhY3R1YWxseSBmaXhpbmcgdGhpbmdzIHcvIHByb2JsZW1hdGljIG1vbml0b3IsIGJ1dCBz ZWVtcwo+ID4+ID4+IGxpa2UgZ2VuZXJhbGx5IGEgZ29vZCBpZGVhLiAgQXQgbGVhc3QgQUZBSVUg eW91IHNob3VsZG4ndCBhbGxvdyB0aGUKPiA+PiA+PiBzZXF1ZW5jZSBvZiB0cmFuc2ZlcnMgZm9y IGkyYyBvdmVyIGF1eCBiZSBpbnRlcnJ1cHRlZCBidXQgdW5yZWxhdGVkCj4gPj4gPj4gY2hhdHRl ci4KPiA+PiA+Cj4gPj4gPiBTbywgSSBnb3QgY29uZmlybWF0aW9uIHRvZGF5IHRoYXQgdGhpcyBw YXRjaCBhY3R1YWxseSBkb2VzIGZpeCB0aGluZ3MKPiA+PiA+IHcvIGEgZGlmZmVyZW50IHByb2Js ZW1hdGljIERlbGwgbW9uaXRvci4gIFNvIEkgdGhpbmsgaXQgYWN0dWFsbHkgaXMKPiA+PiA+IHRo ZSByaWdodCB0aGluZyB0byBkby4KPiA+Pgo+ID4+IExvb2tpbmcgYXQgZHJtX2RwX2RwY2RfYWNj ZXNzIGFuZCBkcm1fZHBfaTJjX2RvX21zZyBpdCBzZWVtcyBjbGVhciB0byBtZQo+ID4+IHRoYXQg bm90IGhvbGRpbmcgdGhlIG11dGV4IHdpbGwgc2NyZXcgdXAgdGhlIGRlbGF5cyBpbiBuYXRpdmUg YW5kCj4gPj4gaTJjLW92ZXItYXV4IGRlZmVyIGhhbmRsaW5nIGJ5IGxldHRpbmcgYW5vdGhlciBj YWxsZXIgb24gdGhlIGF1eC4KPiA+Cj4gPiBXaGF0IGRvIHlvdSBtZWFuPyBUaGUgcmV0cnkgY291 bnRzIGFyZSBvbiB0aGUgc3RhY2ssIHNvIGVhY2ggY2FsbGVyCj4gPiBoYXMgaXRzIG93bi4gVGhl cmUncyBubyBzcGVjaWZpZWQgZGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIHRoZSBzcGVjLgo+ID4K PiA+IEkgdGhpbmsgdGhlIERQIHNwZWMgaXMgcHJldHR5IGNsZWFyIHRoYXQgQVVYIG1lc3NhZ2Vz IGNhbiBiZSBpbnRlcmxlYXZlZAo+ID4gYW55IHdoaWNoIHdheSBieSB0aGUgcG9saWN5IG1ha2Vy LiBTbyBJIGRvbid0IHRoaW5rIHRoZSBwYXRjaCBpcyByZWFsbHkKPiA+IGNvcnJlY3QgYXMgZmFy IGFzIHRoZSBzcGVjIGdvZXMuIEJ1dCBJIHN1cHBvc2UgaW4gcHJhY3RpY2UgaXQncyBwb3NzaWJs ZQo+ID4gdGhlIHNpbmsgZ2V0cyBjb25mdXNlZCBieSB0aGUgY29uc3RhbnQgcGluZy1wb25nIGFu ZCBpbiB0aGUgZW5kIGNhbid0Cj4gPiByZXBseSBpbiB0aW1lLiBFZy4gbWF5YmUgaXQgbWlnaHQg cmVzZXQgc29tZSBpbnRlcm5hbCBjb3VudGVyIG9uIGV2ZXJ5Cj4gPiBBVVggcmVxdWVzdCBhbmQg ZG9lc24ndCByZXBseSB3aXRoIHN1Y2Nlc3MgdW50aWwgdGhlIGNvdW50ZXIgaGFzIGNsZWFyZWQs Cj4gPiB3aGljaCBpdCBuZXZlciBkb2VzIHNpbmNlIHRoZSBvdGhlciBndXkgY2F1c2VkIGl0IHRv IHJlc2V0IGFnYWluLiBPcgo+ID4gbWF5YmUgdGhlIHNpbmsganVzdCBrZWVwcyBvbmUgdHJhbnNm ZXIgb3BlbiBhdCBhIHRpbWUgYW5kIGtlZXBzIGRlZmVycmluZwo+ID4gdGhlIG90aGVyIG9uZShz KSB1bnRpbCB0aGUgZmlyc3Qgb25lIGhhcyBmaW5pc2hlZCwgbWVhbmluZyBvdXIgcmV0cnkKPiA+ IGNvdW50cyB3b3VsZCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBh bHJlYWR5IHNvbWUKPiA+IG90aGVyIG1lc3NhZ2Uocykgc3RpbGwgcGVuZGluZy4KPiAKPiBvaywg SSBkb24ndCBhY3R1YWxseSBoYXZlIGFjY2VzcyB0byB0aGUgRFAgc3BlYywgc28gd2FzIHVuc3Vy ZSBpZiB0aGlzCj4gd2FzIG91ciBidWcgb3IgYSBzaW5rIGJ1Zy4gSSB0aGluayBJIHNob3VsZCBk ZXNjcmliZSB0aGUgcGF0Y2ggYXMgYQo+IHdvcmthcm91bmQgZm9yIGJ1Z2d5IHNpbmtzLgo+IAo+ IEluIHRoZSBlbmQsIEkgdGhpbmsgaXQgaXMgc2FmZXIgdG8gYXNzdW1lIHRoZSBzaW5rJ3MgYXJl IHRoZSBwcm9kdWN0Cj4gb2YgaHcgZGVzaWduZXJzLCBhbmQgbm90IHRydXN0IHRoZW0gdG9vIG11 Y2guIDotUAoKWWVhaCwgaW4gcHJhY3RpY2UgdGhlIHNwZWMgaXMgbW9yZSB3aGF0IHlvdSBjYWxs IGd1aWRlbGluZXMgdGhhbiBhY3R1YWwKcnVsZXMgOlAKCj4gCj4gPiBBcyBmYXIgYXMgaTJjIGdv ZXMsIEkgdGhpbmsgdGhlcmUgd2UgY2FuJ3QgaW50ZXJtaW5nbGUgaTJjIHRyYW5zYWN0aW9ucwo+ ID4gZnJvbSBtdWx0aXBsZSBzb3VyY2VzIHNpbmNlIHRoYXQgbWlnaHQgZW5kIHVwIHNpZ25hbGxp bmcgU1RPUHMgb24gdGhlCj4gPiBpMmMgYnVzIHdoZW4gaXQgd2Fzbid0IGludGVuZGVkLCBvciBt YXliZSB0aGUgZGF0YSB3b3VsZCBnZXQgbWl4ZWQgdXAKPiA+IGJldHdlZW4gdGhlIHR3bywgZXRj LiBBcyBmYXIgYXMgdGhlIEFVWCB0cmFuc2ZlcnMgZ28sIEkgdGhpbmsgbWl4aW5nIGluCj4gPiBu YXRpdmUgdHJhbnNmZXJzIGJldHdlZW4gdGhlIGkyYy1vdmVyLWF1eCBvbmVzIHNob3VsZCBiZSBm aW5lLiBUaGV5J3JlCj4gPiBhbGwganVzdCBBVVggdHJhbnNmZXJzIHNvIHRoZSBzYW1lIHJ1bGVz IHNob3VsZCBhcHBseSBhcyBmb3IgbmF0aXZlIHZzLgo+ID4gbmF0aXZlLiBCdXQgYWdhaW4sIHRo ZSBzaW5rIG1pZ2h0IG5vdCBsaWtlIGl0IGFueXdheS4KPiAKPiBJIHRoaW5rIHdpdGhvdXQgbW92 aW5nIHRoZSBsb2NraW5nLCB0aGVyZSBpcyB0aGUgcG90ZW50aWFsIHRvCj4gaW50ZXJsZWF2ZSBp MmMgdHJhbnNhY3Rpb25zLgoKWWVwLiBXZSdkIG5lZWQgc29tZXRoaW5nIHRvIGxvY2sgb3V0IHRo ZSBpMmMgYXQgbGVhc3QuIEFuZCBpZiB3ZSBhbnl3YXkKbmVlZCB0aGlzIGZvciBuYXRpdmUgQVVY IGFzIHdlbGwsIHRoZXJlJ3MgbGl0dGxlIHBvaW50IGluIGFkZGluZyBhbnkgaTJjCnNwZWNpZmlj IGxvY2tzLgoKPiBBbHRob3VnaCBJIGRvbid0IHRoaW5rIHRoYXQgd2FzCj4gaGFwcGVuaW5nIGlu IHRoaXMgcGFydGljdWxhciBjYXNlLiAgSXQgd2FzIGxvb2tpbmcgbW9yZSBsaWtlIGF1eCtpMmMK PiBpbnRlcmxlYXZpbmcuCgpJJ20gY3VyaW91cyBpZiBidW1waW5nIHRoZSByZXRyeSBjb3VudHMg dG8gc29tZSByaWRpY3Vsb3VzbHkgaGlnaCBudW1iZXIKd291bGQgaGVscCB3aXRoIHlvdXIgcHJv YmxlbWF0aWMgc2V0dXAuIERpZCB5b3UgdHJ5IHRoYXQgYnkgYW55IGNoYW5jZT8KCkFsdGhvdWdo IEkgc3VwcG9zZSBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHNpbmsganVzdCBkcm9wcyBhbnkgb25n b2luZwppMmMgdHJhbnNmZXIgdG8gdGhlIGZsb29yIHdoZW4geW91IGJhbmcgb24gdGhlIGRvb3Iu Cgo+IAo+IEJSLAo+IC1SCj4gCj4gPiBJIGd1ZXNzIHJlYWwgd29ybGQgd2lucyBpbiB0aGUgZW5k LCBhbmQgaWYgdGhlIHBhdGNoIGhlbHBzIHdpdGggc3R1ZmYsCj4gPiB3ZSBzaG91bGQgZ28gd2l0 aCBpdC4KPiA+Cj4gPj4KPiA+PiBIb3dldmVyIHRoaXMgaXMgbWlzc2luZyBzb21lIGF1eC0+dHJh bnNmZXIgdG8gYXV4X3RyYW5zZmVyIGFic3RyYWN0aW9uCj4gPj4gcHJlcCBwYXRjaDsgaGFzIGl0 IGJlZW4gc2VudCB0byB0aGUgbGlzdD8gV2l0aCB0aGF0IGFkZHJlc3NlZCwgci1iCj4gPj4gZm9s bG93cy4KPiA+Pgo+ID4+Cj4gPj4gQlIsCj4gPj4gSmFuaS4KPiA+Pgo+ID4+Cj4gPj4KPiA+PiA+ Cj4gPj4gPiBCUiwKPiA+PiA+IC1SCj4gPj4gPgo+ID4+ID4+IFRoaXMgYXBwbGllcyBvbiB0b3Ag b2YgdGhlIERQQ0QgbG9nZ2luZyBwYXRjaC4KPiA+PiA+Pgo+ID4+ID4+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2RwX2hlbHBlci5jIHwgMjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gPj4g Pj4gIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPiA+ PiA+Pgo+ID4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+ID4+ID4+IGluZGV4IGNjYjFmOGEu LmU0MDliNWYgMTAwNjQ0Cj4gPj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxw ZXIuYwo+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKPiA+PiA+ PiBAQCAtMTYzLDggKzE2Myw2IEBAIHN0YXRpYyBzc2l6ZV90IGF1eF90cmFuc2ZlcihzdHJ1Y3Qg ZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cgKm1zZykKPiA+PiA+PiAgewo+ ID4+ID4+ICAgICAgICAgc3NpemVfdCByZXQ7Cj4gPj4gPj4KPiA+PiA+PiAtICAgICAgIG11dGV4 X2xvY2soJmF1eC0+aHdfbXV0ZXgpOwo+ID4+ID4+IC0KPiA+PiA+PiAgICAgICAgIERSTV9ERUJV R19EUENEKCIlczogcmVxPTB4JTAyeCwgYWRkcmVzcz0weCUwNXgsIHNpemU9JXp1XG4iLCBhdXgt Pm5hbWUsCj4gPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5yZXF1ZXN0LCBtc2ct PmFkZHJlc3MsIG1zZy0+c2l6ZSk7Cj4gPj4gPj4KPiA+PiA+PiBAQCAtMTk2LDggKzE5NCw2IEBA IHN0YXRpYyBzc2l6ZV90IGF1eF90cmFuc2ZlcihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1 Y3QgZHJtX2RwX2F1eF9tc2cgKm1zZykKPiA+PiA+PiAgICAgICAgICAgICAgICAgfQo+ID4+ID4+ ICAgICAgICAgfQo+ID4+ID4+Cj4gPj4gPj4gLSAgICAgICBtdXRleF91bmxvY2soJmF1eC0+aHdf bXV0ZXgpOwo+ID4+ID4+IC0KPiA+PiA+PiAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4gPj4gIH0K PiA+PiA+Pgo+ID4+ID4+IEBAIC0yMjAsNyArMjE2LDcgQEAgc3RhdGljIGludCBkcm1fZHBfZHBj ZF9hY2Nlc3Moc3RydWN0IGRybV9kcF9hdXggKmF1eCwgdTggcmVxdWVzdCwKPiA+PiA+PiAgewo+ ID4+ID4+ICAgICAgICAgc3RydWN0IGRybV9kcF9hdXhfbXNnIG1zZzsKPiA+PiA+PiAgICAgICAg IHVuc2lnbmVkIGludCByZXRyeTsKPiA+PiA+PiAtICAgICAgIGludCBlcnI7Cj4gPj4gPj4gKyAg ICAgICBpbnQgZXJyID0gMDsKPiA+PiA+Pgo+ID4+ID4+ICAgICAgICAgbWVtc2V0KCZtc2csIDAs IHNpemVvZihtc2cpKTsKPiA+PiA+PiAgICAgICAgIG1zZy5hZGRyZXNzID0gb2Zmc2V0Owo+ID4+ ID4+IEBAIC0yMjgsNiArMjI0LDggQEAgc3RhdGljIGludCBkcm1fZHBfZHBjZF9hY2Nlc3Moc3Ry dWN0IGRybV9kcF9hdXggKmF1eCwgdTggcmVxdWVzdCwKPiA+PiA+PiAgICAgICAgIG1zZy5idWZm ZXIgPSBidWZmZXI7Cj4gPj4gPj4gICAgICAgICBtc2cuc2l6ZSA9IHNpemU7Cj4gPj4gPj4KPiA+ PiA+PiArICAgICAgIG11dGV4X2xvY2soJmF1eC0+aHdfbXV0ZXgpOwo+ID4+ID4+ICsKPiA+PiA+ PiAgICAgICAgIC8qCj4gPj4gPj4gICAgICAgICAgKiBUaGUgc3BlY2lmaWNhdGlvbiBkb2Vzbid0 IGdpdmUgYW55IHJlY29tbWVuZGF0aW9uIG9uIGhvdyBvZnRlbiB0bwo+ID4+ID4+ICAgICAgICAg ICogcmV0cnkgbmF0aXZlIHRyYW5zYWN0aW9ucy4gV2UgdXNlZCB0byByZXRyeSA3IHRpbWVzIGxp a2UgZm9yCj4gPj4gPj4gQEAgLTI0MSwxOCArMjM5LDE5IEBAIHN0YXRpYyBpbnQgZHJtX2RwX2Rw Y2RfYWNjZXNzKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHU4IHJlcXVlc3QsCj4gPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRUJVU1kpCj4gPj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+PiA+Pgo+ID4+ID4+IC0gICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZ290byB1bmxvY2s7Cj4gPj4gPj4gICAgICAgICAgICAgICAgIH0KPiA+PiA+Pgo+ID4+ID4+ ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1zZy5yZXBseSAmIERQX0FVWF9OQVRJVkVfUkVQTFlf TUFTSykgewo+ID4+ID4+ICAgICAgICAgICAgICAgICBjYXNlIERQX0FVWF9OQVRJVkVfUkVQTFlf QUNLOgo+ID4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgPCBzaXplKQo+ID4+ ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUFJPVE87Cj4gPj4g Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+PiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVyciA9IC1FUFJPVE87Cj4gPj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZ290byB1bmxvY2s7Cj4gPj4gPj4KPiA+PiA+PiAgICAgICAgICAgICAgICAg Y2FzZSBEUF9BVVhfTkFUSVZFX1JFUExZX05BQ0s6Cj4gPj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICAgRFJNX0RFQlVHX0RQQ0QoIm5hdGl2ZSBuYWNrIChyZXN1bHQ9JWQsIHNpemU9JXp1KVxu IiwgZXJyLCBtc2cuc2l6ZSk7Cj4gPj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU87Cj4gPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVJTzsKPiA+PiA+ PiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVubG9jazsKPiA+PiA+Pgo+ID4+ID4+ICAg ICAgICAgICAgICAgICBjYXNlIERQX0FVWF9OQVRJVkVfUkVQTFlfREVGRVI6Cj4gPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RQQ0QoIm5hdGl2ZSBkZWZlclxuIik7Cj4g Pj4gPj4gQEAgLTI2Miw3ICsyNjEsMTEgQEAgc3RhdGljIGludCBkcm1fZHBfZHBjZF9hY2Nlc3Mo c3RydWN0IGRybV9kcF9hdXggKmF1eCwgdTggcmVxdWVzdCwKPiA+PiA+PiAgICAgICAgIH0KPiA+ PiA+Pgo+ID4+ID4+ICAgICAgICAgRFJNX0VSUk9SKCJEUENEOiB0b28gbWFueSByZXRyaWVzLCBn aXZpbmcgdXAhXG4iKTsKPiA+PiA+PiAtICAgICAgIHJldHVybiAtRUlPOwo+ID4+ID4+ICsgICAg ICAgZXJyID0gLUVJTzsKPiA+PiA+PiArCj4gPj4gPj4gK3VubG9jazoKPiA+PiA+PiArICAgICAg IG11dGV4X3VubG9jaygmYXV4LT5od19tdXRleCk7Cj4gPj4gPj4gKyAgICAgICByZXR1cm4gZXJy Owo+ID4+ID4+ICB9Cj4gPj4gPj4KPiA+PiA+PiAgLyoqCj4gPj4gPj4gQEAgLTY5OCw2ICs3MDEs OCBAQCBzdGF0aWMgaW50IGRybV9kcF9pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsIHN0cnVjdCBpMmNfbXNnICptc2dzLAo+ID4+ID4+Cj4gPj4gPj4gICAgICAgICBtZW1zZXQo Jm1zZywgMCwgc2l6ZW9mKG1zZykpOwo+ID4+ID4+Cj4gPj4gPj4gKyAgICAgICBtdXRleF9sb2Nr KCZhdXgtPmh3X211dGV4KTsKPiA+PiA+PiArCj4gPj4gPj4gICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbnVtOyBpKyspIHsKPiA+PiA+PiAgICAgICAgICAgICAgICAgbXNnLmFkZHJlc3MgPSBtc2dz W2ldLmFkZHI7Cj4gPj4gPj4gICAgICAgICAgICAgICAgIG1zZy5yZXF1ZXN0ID0gKG1zZ3NbaV0u ZmxhZ3MgJiBJMkNfTV9SRCkgPwo+ID4+ID4+IEBAIC03NDEsNiArNzQ2LDggQEAgc3RhdGljIGlu dCBkcm1fZHBfaTJjX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJj X21zZyAqbXNncywKPiA+PiA+PiAgICAgICAgIG1zZy5zaXplID0gMDsKPiA+PiA+PiAgICAgICAg ICh2b2lkKWRybV9kcF9pMmNfZG9fbXNnKGF1eCwgJm1zZyk7Cj4gPj4gPj4KPiA+PiA+PiArICAg ICAgIG11dGV4X3VubG9jaygmYXV4LT5od19tdXRleCk7Cj4gPj4gPj4gKwo+ID4+ID4+ICAgICAg ICAgcmV0dXJuIGVycjsKPiA+PiA+PiAgfQo+ID4+ID4+Cj4gPj4gPj4gLS0KPiA+PiA+PiAyLjUu MAo+ID4+ID4+Cj4gPj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+ID4+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4+ID4gZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ID4+Cj4gPj4gLS0KPiA+PiBKYW5pIE5pa3VsYSwg SW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPiA+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+IGRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKPiA+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4gaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ID4KPiA+IC0tCj4g PiBWaWxsZSBTeXJqw6Rsw6QKPiA+IEludGVsIE9UQwoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRl bCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK