From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 03/27] drm/dp_mst: Destroy MSTBs asynchronously Date: Fri, 27 Sep 2019 09:31:07 -0400 Message-ID: <20190927133107.GQ218215@art_vandelay> References: <20190903204645.25487-1-lyude@redhat.com> <20190903204645.25487-4-lyude@redhat.com> <20190925181644.GD218215@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Lyude Paul Cc: Maxime Ripard , David Airlie , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Imre Deak , Maarten Lankhorst , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Harry Wentland , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , Sean Paul , Juston Li List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBTZXAgMjUsIDIwMTkgYXQgMDQ6MDg6MjJQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTktMDktMjUgYXQgMTQ6MTYgLTA0MDAsIFNlYW4gUGF1bCB3cm90ZToK PiA+IE9uIFR1ZSwgU2VwIDAzLCAyMDE5IGF0IDA0OjQ1OjQxUE0gLTA0MDAsIEx5dWRlIFBhdWwg d3JvdGU6Cj4gPiA+IFdoZW4gcmVwcm9iaW5nIGFuIE1TVCB0b3BvbG9neSBkdXJpbmcgcmVzdW1l LCB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHRoZQo+ID4gPiBmYWN0IHRoYXQgd2hpbGUgd2Ugd2Vy ZSBzdXNwZW5kZWQgaXQncyBwb3NzaWJsZSB0aGF0IG1zdGJzIG1heSBoYXZlIGJlZW4KPiA+ID4g cmVtb3ZlZCBmcm9tIGFueSBwb3J0cyBpbiB0aGUgdG9wb2xvZ3kuIFNpbmNlIGl0ZXJhdGluZyBk b3dud2FyZHMgaW4gdGhlCj4gPiA+IHRvcG9sb2d5IHJlcXVpcmVzIHRoYXQgd2UgaG9sZCAmbWdy LT5sb2NrLCBkZXN0cm95aW5nIE1TVEJzIGZyb20gdGhpcwo+ID4gPiBjb250ZXh0IHdvdWxkIHJl c3VsdCBpbiBhdHRlbXB0aW5nIHRvIGxvY2sgJm1nci0+bG9jayBhIHNlY29uZCB0aW1lIGFuZAo+ ID4gPiBkZWFkbG9ja2luZy4KPiA+ID4gCj4gPiA+IFNvLCBmaXggdGhpcyBieSBmaXJzdCBtb3Zp bmcgZGVzdHJ1Y3Rpb24gb2YgTVNUQnMgaW50bwo+ID4gPiBkZXN0cm95X2Nvbm5lY3Rvcl93b3Jr LCB0aGVuIHJlbmFtZSBkZXN0cm95X2Nvbm5lY3Rvcl93b3JrIGFuZCBmcmllbmRzCj4gPiA+IHRv IHJlZmxlY3QgdGhhdCB0aGV5IG5vdyBkZXN0cm95IGJvdGggcG9ydHMgYW5kIG1zdGJzLgo+ID4g PiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ID4gKiBzL2Rlc3Ryb3lfY29ubmVjdG9yX2xp c3QvZGVzdHJveV9wb3J0X2xpc3QvCj4gPiA+ICAgcy9jb25uZWN0b3JfZGVzdHJveV9sb2NrL2Rl bGF5ZWRfZGVzdHJveV9sb2NrLwo+ID4gPiAgIHMvY29ubmVjdG9yX2Rlc3Ryb3lfd29yay9kZWxh eWVkX2Rlc3Ryb3lfd29yay8KPiA+ID4gICBzL2RybV9kcF9maW5pc2hfZGVzdHJveV9icmFuY2hf ZGV2aWNlL2RybV9kcF9kZWxheWVkX2Rlc3Ryb3lfbXN0Yi8KPiA+ID4gICBzL2RybV9kcF9maW5p c2hfZGVzdHJveV9wb3J0L2RybV9kcF9kZWxheWVkX2Rlc3Ryb3lfcG9ydC8KPiA+ID4gICAtIGRh bnZldAo+ID4gPiAqIFVzZSB0d28gbG9vcHMgaW4gZHJtX2RwX2RlbGF5ZWRfZGVzdHJveV93b3Jr KCkgLSBkYW52ZXQKPiA+ID4gKiBCZXR0ZXIgZXhwbGFpbiB3aHkgd2UgbmVlZCB0byBkbyB0aGlz IC0gZGFudmV0Cj4gPiA+ICogVXNlIGNhbmNlbF93b3JrX3N5bmMoKSBpbnN0ZWFkIG9mIGZsdXNo X3dvcmsoKSAtIGZsdXNoX3dvcmsoKSBkb2Vzbid0Cj4gPiA+ICAgYWNjb3VudCBmb3Igd29yayBy ZXF1ZWluZwo+ID4gPiAKPiA+ID4gQ2M6IEp1c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNvbT4K PiA+ID4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ID4gQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBIYXJy eSBXZW50bGFuZCA8aHdlbnRsYW5AYW1kLmNvbT4KPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVk aGF0LmNvbT4KPiA+IAo+ID4gVG9vayBtZSBhIHdoaWxlIHRvIGdyb2sgdGhpcywgYW5kIEknbSBz dGlsbCBub3QgMTAwJSBjb25maWRlbnQgbXkgbWVudGFsCj4gPiBtb2RlbAo+ID4gaXMgY29ycmVj dCwgc28gcGxlYXNlIGJlYXIgd2l0aCBtZSB3aGlsZSBJIGFzayBzaWxseSBxdWVzdGlvbnMgOikK PiA+IAo+ID4gTm93IHRoYXQgdGhlIGRlc3Ryb3kgaXMgZGVsYXllZCwgYW5kIHRoZSBwb3J0IHJl bWFpbnMgaW4gdGhlIHRvcG9sb2d5LCBpcyBpdAo+ID4gcG9zc2libGUgd2Ugd2lsbCB1bmRlcmZs b3cgdGhlIHRvcG9sb2d5IGtyZWYgYnkgY2FsbGluZyBwdXRfbXN0YiBtdWx0aXBsZQo+ID4gdGlt ZXM/Cj4gPiBJdCBsb29rcyBsaWtlIHRoYXQgd291bGQgcmVzdWx0IGluIGEgV0FSTiBmcm9tIHJl ZmNvdW50LmMsIGFuZCB3b3VsZG4ndCBjYWxsCj4gPiB0aGUKPiA+IGRlc3Ryb3kgZnVuY3Rpb24g bXVsdGlwbGUgdGltZXMsIHNvIHRoYXQncyBuaWNlIDopCj4gPiAKPiA+IFNpbWlsYXJseSwgaXMg dGhlcmUgYW55IGRlZmVuc2UgYWdhaW5zdCBjYWxsaW5nIGdldF9tc3RiKCkgYmV0d2VlbiBkZXN0 cm95KCkKPiA+IGFuZAo+ID4gdGhlIGRlbGF5ZWQgZGVzdHJveSB3b3JrZXIgcnVubmluZz8KPiA+ IAo+IEdvb2QgcXVlc3Rpb24hIFRoZXJlJ3Mgb25seSBvbmUgaW5zdGFuY2Ugd2hlcmUgd2UgdW5j b25kaXRpb25hbGx5IGdyYWIgYW4gTVNUQgo+IHJlZiwgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jf c2V0X21zdCgpLCBhbmQgaW4gdGhhdCBsb2NhdGlvbiB3ZSdyZSBndWFyYW50ZWVkCj4gdG8gYmUg dGhlIG9ubHkgb25lIHdpdGggYWNjZXNzIHRvIHRoYXQgbXN0YiB1bnRpbCB3ZSBkcm9wICZtZ3It PmxvY2suCj4gRXZlcnl3aGVyZSBlbHNlIHdlIHVzZSBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9n ZXRfbXN0YigpLCB3aGljaCB1c2VzCj4ga3JlZl9nZXRfdW5sZXNzX3plcm8oKSB0byBwcm90ZWN0 IGFnYWluc3QgdGhhdCBraW5kIG9mIHNpdHVhdGlvbiAoYW5kIGZvcmNlcwo+IHRoZSBjYWxsZXIg dG8gY2hlY2sgd2l0aCBfX211c3RfY2hlY2spCgpBd2Vzb21lLCB0aGFua3MgZm9yIHRoZSBicmVh a2Rvd24hCgoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPgoKCj4gCj4g PiBTZWFuCj4gPiAKPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90 b3BvbG9neS5jIHwgMTYyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPiA+ICBpbmNsdWRl L2RybS9kcm1fZHBfbXN0X2hlbHBlci5oICAgICAgIHwgIDI2ICsrKy0tCj4gPiA+ICAyIGZpbGVz IGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ID4gPiBpbmRleCAzMDU0 ZWM2MjI1MDYuLjczOGYyNjBkNGIxNSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X21zdF90b3BvbG9neS5jCj4gPiA+IEBAIC0xMTEzLDM0ICsxMTEzLDE3IEBAIHN0YXRpYyB2b2lk Cj4gPiA+IGRybV9kcF9kZXN0cm95X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVm KQo+ID4gPiAgCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9Cj4gPiA+ICAJCWNvbnRh aW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIHRvcG9sb2d5X2tyZWYpOwo+ ID4gPiAgCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gbXN0Yi0+bWdyOwo+ ID4gPiAtCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsICp0bXA7Cj4gPiA+IC0JYm9vbCB3 YWtlX3R4ID0gZmFsc2U7Cj4gPiA+ICAKPiA+ID4gLQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwo+ ID4gPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZtc3RiLT5wb3J0cywg bmV4dCkgewo+ID4gPiAtCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7Cj4gPiA+IC0JCWRybV9kcF9t c3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Cj4gPiA+IC0JfQo+ID4gPiAtCW11dGV4X3VubG9j aygmbWdyLT5sb2NrKTsKPiA+ID4gLQo+ID4gPiAtCS8qIGRyb3AgYW55IHR4IHNsb3RzIG1zZyAq Lwo+ID4gPiAtCW11dGV4X2xvY2soJm1zdGItPm1nci0+cWxvY2spOwo+ID4gPiAtCWlmIChtc3Ri LT50eF9zbG90c1swXSkgewo+ID4gPiAtCQltc3RiLT50eF9zbG90c1swXS0+c3RhdGUgPSBEUk1f RFBfU0lERUJBTkRfVFhfVElNRU9VVDsKPiA+ID4gLQkJbXN0Yi0+dHhfc2xvdHNbMF0gPSBOVUxM Owo+ID4gPiAtCQl3YWtlX3R4ID0gdHJ1ZTsKPiA+ID4gLQl9Cj4gPiA+IC0JaWYgKG1zdGItPnR4 X3Nsb3RzWzFdKSB7Cj4gPiA+IC0JCW1zdGItPnR4X3Nsb3RzWzFdLT5zdGF0ZSA9IERSTV9EUF9T SURFQkFORF9UWF9USU1FT1VUOwo+ID4gPiAtCQltc3RiLT50eF9zbG90c1sxXSA9IE5VTEw7Cj4g PiA+IC0JCXdha2VfdHggPSB0cnVlOwo+ID4gPiAtCX0KPiA+ID4gLQltdXRleF91bmxvY2soJm1z dGItPm1nci0+cWxvY2spOwo+ID4gPiArCUlOSVRfTElTVF9IRUFEKCZtc3RiLT5kZXN0cm95X25l eHQpOwo+ID4gPiAgCj4gPiA+IC0JaWYgKHdha2VfdHgpCj4gPiA+IC0JCXdha2VfdXBfYWxsKCZt c3RiLT5tZ3ItPnR4X3dhaXRxKTsKPiA+ID4gLQo+ID4gPiAtCWRybV9kcF9tc3RfcHV0X21zdGJf bWFsbG9jKG1zdGIpOwo+ID4gPiArCS8qCj4gPiA+ICsJICogVGhpcyBjYW4gZ2V0IGNhbGxlZCB1 bmRlciBtZ3ItPm11dGV4LCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhlCj4gPiA+ICsJICogYWN0 dWFsIGRlc3RydWN0aW9uIG9mIHRoZSBtc3RiIGluIGFub3RoZXIgd29ya2VyCj4gPiA+ICsJICov Cj4gPiA+ICsJbXV0ZXhfbG9jaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfbG9jayk7Cj4gPiA+ICsJ bGlzdF9hZGQoJm1zdGItPmRlc3Ryb3lfbmV4dCwgJm1nci0+ZGVzdHJveV9icmFuY2hfZGV2aWNl X2xpc3QpOwo+ID4gPiArCW11dGV4X3VubG9jaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfbG9jayk7 Cj4gPiA+ICsJc2NoZWR1bGVfd29yaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfd29yayk7Cj4gPiA+ ICB9Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBAQCAtMTI1NSwxMCArMTIzOCwxMCBAQCBzdGF0 aWMgdm9pZCBkcm1fZHBfZGVzdHJveV9wb3J0KHN0cnVjdCBrcmVmICprcmVmKQo+ID4gPiAgCQkJ ICogd2UgbWlnaHQgYmUgaG9sZGluZyB0aGUgbW9kZV9jb25maWcubXV0ZXgKPiA+ID4gIAkJCSAq IGZyb20gYW4gRURJRCByZXRyaWV2YWwgKi8KPiA+ID4gIAo+ID4gPiAtCQkJbXV0ZXhfbG9jaygm bWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9sb2NrKTsKPiA+ID4gLQkJCWxpc3RfYWRkKCZwb3J0LT5u ZXh0LCAmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9saXN0KTsKPiA+ID4gLQkJCW11dGV4X3VubG9j aygmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9sb2NrKTsKPiA+ID4gLQkJCXNjaGVkdWxlX3dvcmso Jm1nci0+ZGVzdHJveV9jb25uZWN0b3Jfd29yayk7Cj4gPiA+ICsJCQltdXRleF9sb2NrKCZtZ3It PmRlbGF5ZWRfZGVzdHJveV9sb2NrKTsKPiA+ID4gKwkJCWxpc3RfYWRkKCZwb3J0LT5uZXh0LCAm bWdyLT5kZXN0cm95X3BvcnRfbGlzdCk7Cj4gPiA+ICsJCQltdXRleF91bmxvY2soJm1nci0+ZGVs YXllZF9kZXN0cm95X2xvY2spOwo+ID4gPiArCQkJc2NoZWR1bGVfd29yaygmbWdyLT5kZWxheWVk X2Rlc3Ryb3lfd29yayk7Cj4gPiA+ICAJCQlyZXR1cm47Cj4gPiA+ICAJCX0KPiA+ID4gIAkJLyog bm8gbmVlZCB0byBjbGVhbiB1cCB2Y3BpCj4gPiA+IEBAIC0yNzkyLDcgKzI3NzUsNyBAQCB2b2lk IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3N1c3BlbmQoc3RydWN0Cj4gPiA+IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IpCj4gPiA+ICAJCQkgICBEUF9NU1RfRU4gfCBEUF9VUFNUUkVBTV9J U19TUkMpOwo+ID4gPiAgCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKPiA+ID4gIAlmbHVzaF93 b3JrKCZtZ3ItPndvcmspOwo+ID4gPiAtCWZsdXNoX3dvcmsoJm1nci0+ZGVzdHJveV9jb25uZWN0 b3Jfd29yayk7Cj4gPiA+ICsJZmx1c2hfd29yaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfd29yayk7 Cj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3N1 c3BlbmQpOwo+ID4gPiAgCj4gPiA+IEBAIC0zNzQwLDM0ICszNzIzLDEwNCBAQCBzdGF0aWMgdm9p ZCBkcm1fZHBfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QKPiA+ID4gKndvcmspCj4gPiA+ICAJ bXV0ZXhfdW5sb2NrKCZtZ3ItPnFsb2NrKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3RhdGlj IHZvaWQgZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ID4gPiArc3RhdGljIGlubGluZSB2b2lkCj4gPiA+ICtkcm1fZHBfZGVsYXllZF9kZXN0 cm95X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKPiA+ID4gIHsKPiA+ID4gLQlz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9IGNvbnRhaW5lcl9vZih3b3JrLCBz dHJ1Y3QKPiA+ID4gZHJtX2RwX21zdF90b3BvbG9neV9tZ3IsIGRlc3Ryb3lfY29ubmVjdG9yX3dv cmspOwo+ID4gPiAtCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Cj4gPiA+IC0JYm9vbCBz ZW5kX2hvdHBsdWcgPSBmYWxzZTsKPiA+ID4gKwlwb3J0LT5tZ3ItPmNicy0+ZGVzdHJveV9jb25u ZWN0b3IocG9ydC0+bWdyLCBwb3J0LT5jb25uZWN0b3IpOwo+ID4gPiArCj4gPiA+ICsJZHJtX2Rw X3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIHBvcnQtPnBkdCk7Cj4gPiA+ICsJcG9ydC0+cGR0ID0g RFBfUEVFUl9ERVZJQ0VfTk9ORTsKPiA+ID4gKwo+ID4gPiArCWRybV9kcF9tc3RfcHV0X3BvcnRf bWFsbG9jKHBvcnQpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQK PiA+ID4gK2RybV9kcF9kZWxheWVkX2Rlc3Ryb3lfbXN0YihzdHJ1Y3QgZHJtX2RwX21zdF9icmFu Y2ggKm1zdGIpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IgPSBtc3RiLT5tZ3I7Cj4gPiA+ICsJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwg KnRtcDsKPiA+ID4gKwlib29sIHdha2VfdHggPSBmYWxzZTsKPiA+ID4gKwo+ID4gPiArCW11dGV4 X2xvY2soJm1nci0+bG9jayk7Cj4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcnQs IHRtcCwgJm1zdGItPnBvcnRzLCBuZXh0KSB7Cj4gPiA+ICsJCWxpc3RfZGVsKCZwb3J0LT5uZXh0 KTsKPiA+ID4gKwkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiA+ID4gKwl9 Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwo+ID4gPiArCj4gPiA+ICsJLyogZHJv cCBhbnkgdHggc2xvdHMgbXNnICovCj4gPiA+ICsJbXV0ZXhfbG9jaygmbXN0Yi0+bWdyLT5xbG9j ayk7Cj4gPiA+ICsJaWYgKG1zdGItPnR4X3Nsb3RzWzBdKSB7Cj4gPiA+ICsJCW1zdGItPnR4X3Ns b3RzWzBdLT5zdGF0ZSA9IERSTV9EUF9TSURFQkFORF9UWF9USU1FT1VUOwo+ID4gPiArCQltc3Ri LT50eF9zbG90c1swXSA9IE5VTEw7Cj4gPiA+ICsJCXdha2VfdHggPSB0cnVlOwo+ID4gPiArCX0K PiA+ID4gKwlpZiAobXN0Yi0+dHhfc2xvdHNbMV0pIHsKPiA+ID4gKwkJbXN0Yi0+dHhfc2xvdHNb MV0tPnN0YXRlID0gRFJNX0RQX1NJREVCQU5EX1RYX1RJTUVPVVQ7Cj4gPiA+ICsJCW1zdGItPnR4 X3Nsb3RzWzFdID0gTlVMTDsKPiA+ID4gKwkJd2FrZV90eCA9IHRydWU7Cj4gPiA+ICsJfQo+ID4g PiArCW11dGV4X3VubG9jaygmbXN0Yi0+bWdyLT5xbG9jayk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo d2FrZV90eCkKPiA+ID4gKwkJd2FrZV91cF9hbGwoJm1zdGItPm1nci0+dHhfd2FpdHEpOwo+ID4g PiArCj4gPiA+ICsJZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MobXN0Yik7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGRybV9kcF9kZWxheWVkX2Rlc3Ryb3lfd29yayhzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IgPQo+ID4gPiArCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyLAo+ID4gPiArCQkJICAgICBkZWxheWVkX2Rlc3Ryb3lfd29y ayk7Cj4gPiA+ICsJYm9vbCBzZW5kX2hvdHBsdWcgPSBmYWxzZSwgZ29fYWdhaW47Cj4gPiA+ICsK PiA+ID4gIAkvKgo+ID4gPiAgCSAqIE5vdCBhIHJlZ3VsYXIgbGlzdCB0cmF2ZXJzZSBhcyB3ZSBo YXZlIHRvIGRyb3AgdGhlIGRlc3Ryb3kKPiA+ID4gLQkgKiBjb25uZWN0b3IgbG9jayBiZWZvcmUg ZGVzdHJveWluZyB0aGUgY29ubmVjdG9yLCB0byBhdm9pZCBBQi0+QkEKPiA+ID4gKwkgKiBjb25u ZWN0b3IgbG9jayBiZWZvcmUgZGVzdHJveWluZyB0aGUgbXN0Yi9wb3J0LCB0byBhdm9pZCBBQi0+ QkEKPiA+ID4gIAkgKiBvcmRlcmluZyBiZXR3ZWVuIHRoaXMgbG9jayBhbmQgdGhlIGNvbmZpZyBt dXRleC4KPiA+ID4gIAkgKi8KPiA+ID4gLQlmb3IgKDs7KSB7Cj4gPiA+IC0JCW11dGV4X2xvY2so Jm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbG9jayk7Cj4gPiA+IC0JCXBvcnQgPSBsaXN0X2ZpcnN0 X2VudHJ5X29yX251bGwoJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbGlzdCwKPiA+ID4gc3RydWN0 IGRybV9kcF9tc3RfcG9ydCwgbmV4dCk7Cj4gPiA+IC0JCWlmICghcG9ydCkgewo+ID4gPiAtCQkJ bXV0ZXhfdW5sb2NrKCZtZ3ItPmRlc3Ryb3lfY29ubmVjdG9yX2xvY2spOwo+ID4gPiAtCQkJYnJl YWs7Cj4gPiA+ICsJZG8gewo+ID4gPiArCQlnb19hZ2FpbiA9IGZhbHNlOwo+ID4gPiArCj4gPiA+ ICsJCWZvciAoOzspIHsKPiA+ID4gKwkJCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YjsK PiA+ID4gKwo+ID4gPiArCQkJbXV0ZXhfbG9jaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfbG9jayk7 Cj4gPiA+ICsJCQltc3RiID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZtZ3ItCj4gPiA+ID5k ZXN0cm95X2JyYW5jaF9kZXZpY2VfbGlzdCwKPiA+ID4gKwkJCQkJCQlzdHJ1Y3QKPiA+ID4gZHJt X2RwX21zdF9icmFuY2gsCj4gPiA+ICsJCQkJCQkJZGVzdHJveV9uZXh0KTsKPiA+ID4gKwkJCWlm IChtc3RiKQo+ID4gPiArCQkJCWxpc3RfZGVsKCZtc3RiLT5kZXN0cm95X25leHQpOwo+ID4gPiAr CQkJbXV0ZXhfdW5sb2NrKCZtZ3ItPmRlbGF5ZWRfZGVzdHJveV9sb2NrKTsKPiA+ID4gKwo+ID4g PiArCQkJaWYgKCFtc3RiKQo+ID4gPiArCQkJCWJyZWFrOwo+ID4gPiArCj4gPiA+ICsJCQlkcm1f ZHBfZGVsYXllZF9kZXN0cm95X21zdGIobXN0Yik7Cj4gPiA+ICsJCQlnb19hZ2FpbiA9IHRydWU7 Cj4gPiA+ICAJCX0KPiA+ID4gLQkJbGlzdF9kZWwoJnBvcnQtPm5leHQpOwo+ID4gPiAtCQltdXRl eF91bmxvY2soJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbG9jayk7Cj4gPiA+ICAKPiA+ID4gLQkJ bWdyLT5jYnMtPmRlc3Ryb3lfY29ubmVjdG9yKG1nciwgcG9ydC0+Y29ubmVjdG9yKTsKPiA+ID4g KwkJZm9yICg7Oykgewo+ID4gPiArCQkJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKPiA+ ID4gIAo+ID4gPiAtCQlkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQocG9ydCwgcG9ydC0+cGR0KTsK PiA+ID4gLQkJcG9ydC0+cGR0ID0gRFBfUEVFUl9ERVZJQ0VfTk9ORTsKPiA+ID4gKwkJCW11dGV4 X2xvY2soJm1nci0+ZGVsYXllZF9kZXN0cm95X2xvY2spOwo+ID4gPiArCQkJcG9ydCA9IGxpc3Rf Zmlyc3RfZW50cnlfb3JfbnVsbCgmbWdyLQo+ID4gPiA+ZGVzdHJveV9wb3J0X2xpc3QsCj4gPiA+ ICsJCQkJCQkJc3RydWN0Cj4gPiA+IGRybV9kcF9tc3RfcG9ydCwKPiA+ID4gKwkJCQkJCQluZXh0 KTsKPiA+ID4gKwkJCWlmIChwb3J0KQo+ID4gPiArCQkJCWxpc3RfZGVsKCZwb3J0LT5uZXh0KTsK PiA+ID4gKwkJCW11dGV4X3VubG9jaygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfbG9jayk7Cj4gPiA+ ICsKPiA+ID4gKwkJCWlmICghcG9ydCkKPiA+ID4gKwkJCQlicmVhazsKPiA+ID4gKwo+ID4gPiAr CQkJZHJtX2RwX2RlbGF5ZWRfZGVzdHJveV9wb3J0KHBvcnQpOwo+ID4gPiArCQkJc2VuZF9ob3Rw bHVnID0gdHJ1ZTsKPiA+ID4gKwkJCWdvX2FnYWluID0gdHJ1ZTsKPiA+ID4gKwkJfQo+ID4gPiAr CX0gd2hpbGUgKGdvX2FnYWluKTsKPiA+ID4gIAo+ID4gPiAtCQlkcm1fZHBfbXN0X3B1dF9wb3J0 X21hbGxvYyhwb3J0KTsKPiA+ID4gLQkJc2VuZF9ob3RwbHVnID0gdHJ1ZTsKPiA+ID4gLQl9Cj4g PiA+ICAJaWYgKHNlbmRfaG90cGx1ZykKPiA+ID4gIAkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChtZ3ItPmRldik7Cj4gPiA+ICB9Cj4gPiA+IEBAIC0zOTU3LDEyICs0MDEwLDEzIEBAIGlu dCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9pbml0KHN0cnVjdAo+ID4gPiBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLAo+ID4gPiAgCW11dGV4X2luaXQoJm1nci0+bG9jayk7Cj4gPiA+ICAJ bXV0ZXhfaW5pdCgmbWdyLT5xbG9jayk7Cj4gPiA+ICAJbXV0ZXhfaW5pdCgmbWdyLT5wYXlsb2Fk X2xvY2spOwo+ID4gPiAtCW11dGV4X2luaXQoJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbG9jayk7 Cj4gPiA+ICsJbXV0ZXhfaW5pdCgmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfbG9jayk7Cj4gPiA+ICAJ SU5JVF9MSVNUX0hFQUQoJm1nci0+dHhfbXNnX2Rvd25xKTsKPiA+ID4gLQlJTklUX0xJU1RfSEVB RCgmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9saXN0KTsKPiA+ID4gKwlJTklUX0xJU1RfSEVBRCgm bWdyLT5kZXN0cm95X3BvcnRfbGlzdCk7Cj4gPiA+ICsJSU5JVF9MSVNUX0hFQUQoJm1nci0+ZGVz dHJveV9icmFuY2hfZGV2aWNlX2xpc3QpOwo+ID4gPiAgCUlOSVRfV09SSygmbWdyLT53b3JrLCBk cm1fZHBfbXN0X2xpbmtfcHJvYmVfd29yayk7Cj4gPiA+ICAJSU5JVF9XT1JLKCZtZ3ItPnR4X3dv cmssIGRybV9kcF90eF93b3JrKTsKPiA+ID4gLQlJTklUX1dPUksoJm1nci0+ZGVzdHJveV9jb25u ZWN0b3Jfd29yaywKPiA+ID4gZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmspOwo+ID4gPiAr CUlOSVRfV09SSygmbWdyLT5kZWxheWVkX2Rlc3Ryb3lfd29yaywgZHJtX2RwX2RlbGF5ZWRfZGVz dHJveV93b3JrKTsKPiA+ID4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZtZ3ItPnR4X3dhaXRxKTsK PiA+ID4gIAltZ3ItPmRldiA9IGRldjsKPiA+ID4gIAltZ3ItPmF1eCA9IGF1eDsKPiA+ID4gQEAg LTQwMDUsNyArNDA1OSw3IEBAIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfZGVzdHJveShz dHJ1Y3QKPiA+ID4gZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncikKPiA+ID4gIHsKPiA+ID4g IAlkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zZXRfbXN0KG1nciwgZmFsc2UpOwo+ID4gPiAgCWZs dXNoX3dvcmsoJm1nci0+d29yayk7Cj4gPiA+IC0JZmx1c2hfd29yaygmbWdyLT5kZXN0cm95X2Nv bm5lY3Rvcl93b3JrKTsKPiA+ID4gKwljYW5jZWxfd29ya19zeW5jKCZtZ3ItPmRlbGF5ZWRfZGVz dHJveV93b3JrKTsKPiA+ID4gIAltdXRleF9sb2NrKCZtZ3ItPnBheWxvYWRfbG9jayk7Cj4gPiA+ ICAJa2ZyZWUobWdyLT5wYXlsb2Fkcyk7Cj4gPiA+ICAJbWdyLT5wYXlsb2FkcyA9IE5VTEw7Cj4g PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiA+IGIv aW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAo+ID4gPiBpbmRleCBmYzM0OTIwNGE3MWIu LjRhNDUwN2ZlOTI4ZCAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9o ZWxwZXIuaAo+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiA+ IEBAIC0xNDMsNiArMTQzLDEyIEBAIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCB7Cj4gPiA+ICAJ ICovCj4gPiA+ICAJc3RydWN0IGtyZWYgbWFsbG9jX2tyZWY7Cj4gPiA+ICAKPiA+ID4gKwkvKioK PiA+ID4gKwkgKiBAZGVzdHJveV9uZXh0OiBsaW5rZWQtbGlzdCBlbnRyeSB1c2VkIGJ5Cj4gPiA+ ICsJICogZHJtX2RwX2RlbGF5ZWRfZGVzdHJveV93b3JrKCkKPiA+ID4gKwkgKi8KPiA+ID4gKwlz dHJ1Y3QgbGlzdF9oZWFkIGRlc3Ryb3lfbmV4dDsKPiA+ID4gKwo+ID4gPiAgCXU4IHJhZFs4XTsK PiA+ID4gIAl1OCBsY3Q7Cj4gPiA+ICAJaW50IG51bV9wb3J0czsKPiA+ID4gQEAgLTU3NSwxOCAr NTgxLDI0IEBAIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciB7Cj4gPiA+ICAJc3RydWN0 IHdvcmtfc3RydWN0IHR4X3dvcms7Cj4gPiA+ICAKPiA+ID4gIAkvKioKPiA+ID4gLQkgKiBAZGVz dHJveV9jb25uZWN0b3JfbGlzdDogTGlzdCBvZiB0byBiZSBkZXN0cm95ZWQgY29ubmVjdG9ycy4K PiA+ID4gKwkgKiBAZGVzdHJveV9wb3J0X2xpc3Q6IExpc3Qgb2YgdG8gYmUgZGVzdHJveWVkIGNv bm5lY3RvcnMuCj4gPiA+ICsJICovCj4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBkZXN0cm95X3Bv cnRfbGlzdDsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAZGVzdHJveV9icmFuY2hfZGV2aWNlX2xp c3Q6IExpc3Qgb2YgdG8gYmUgZGVzdHJveWVkIGJyYW5jaAo+ID4gPiArCSAqIGRldmljZXMuCj4g PiA+ICAJICovCj4gPiA+IC0Jc3RydWN0IGxpc3RfaGVhZCBkZXN0cm95X2Nvbm5lY3Rvcl9saXN0 Owo+ID4gPiArCXN0cnVjdCBsaXN0X2hlYWQgZGVzdHJveV9icmFuY2hfZGV2aWNlX2xpc3Q7Cj4g PiA+ICAJLyoqCj4gPiA+IC0JICogQGRlc3Ryb3lfY29ubmVjdG9yX2xvY2s6IFByb3RlY3RzIEBj b25uZWN0b3JfbGlzdC4KPiA+ID4gKwkgKiBAZGVsYXllZF9kZXN0cm95X2xvY2s6IFByb3RlY3Rz IEBkZXN0cm95X3BvcnRfbGlzdCBhbmQKPiA+ID4gKwkgKiBAZGVzdHJveV9icmFuY2hfZGV2aWNl X2xpc3QuCj4gPiA+ICAJICovCj4gPiA+IC0Jc3RydWN0IG11dGV4IGRlc3Ryb3lfY29ubmVjdG9y X2xvY2s7Cj4gPiA+ICsJc3RydWN0IG11dGV4IGRlbGF5ZWRfZGVzdHJveV9sb2NrOwo+ID4gPiAg CS8qKgo+ID4gPiAtCSAqIEBkZXN0cm95X2Nvbm5lY3Rvcl93b3JrOiBXb3JrIGl0ZW0gdG8gZGVz dHJveSBjb25uZWN0b3JzLiBOZWVkZWQgdG8KPiA+ID4gLQkgKiBhdm9pZCBsb2NraW5nIGludmVy c2lvbi4KPiA+ID4gKwkgKiBAZGVsYXllZF9kZXN0cm95X3dvcms6IFdvcmsgaXRlbSB0byBkZXN0 cm95IE1TVCBwb3J0IGFuZCBicmFuY2gKPiA+ID4gKwkgKiBkZXZpY2VzLCBuZWVkZWQgdG8gYXZv aWQgbG9ja2luZyBpbnZlcnNpb24uCj4gPiA+ICAJICovCj4gPiA+IC0Jc3RydWN0IHdvcmtfc3Ry dWN0IGRlc3Ryb3lfY29ubmVjdG9yX3dvcms7Cj4gPiA+ICsJc3RydWN0IHdvcmtfc3RydWN0IGRl bGF5ZWRfZGVzdHJveV93b3JrOwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAgaW50IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyX2luaXQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3Is Cj4gPiA+IC0tIAo+ID4gPiAyLjIxLjAKPiA+ID4gCj4gLS0gCj4gQ2hlZXJzLAo+IAlMeXVkZSBQ YXVsCj4gCgotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21p dW0gT1MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1k LWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4