From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915: cleanup lrc engine state when lrc is freed Date: Tue, 20 Jan 2015 18:04:58 +0200 Message-ID: <87d269a15h.fsf@gaia.fi.intel.com> References: <1420724407-11767-1-git-send-email-mika.kuoppala@intel.com> <54B0224D.2050407@intel.com> <20150112162437.GH10649@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 861266E07C for ; Tue, 20 Jan 2015 08:06:13 -0800 (PST) In-Reply-To: <20150112162437.GH10649@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?utf-8?B?U3lyasOkbMOk?= , Dave Gordon Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4gd3JpdGVzOgoK PiBPbiBGcmksIEphbiAwOSwgMjAxNSBhdCAwNjo0Nzo0MVBNICswMDAwLCBEYXZlIEdvcmRvbiB3 cm90ZToKPj4gT24gMDgvMDEvMTUgMTM6NDAsIE1pa2EgS3VvcHBhbGEgd3JvdGU6Cj4+ID4gaTkx NV9nZW1fdmFsaWRhdGVfY29udGV4dCgpIHdpbGwgY2hlY2sgdGhlIGVuZ2luZS0+c3RhdGUgdG8g c2VlIGlmIGl0IGNhbgo+PiA+IHN1Ym1pdCBpbnRvIGEgcmluZ2J1ZmZlci4gQnV0IHdoZW4gd2Ug YXJlIHJlbGVhc2luZyB0aGUgY29udGV4dCB3ZSBsZWF2ZSB0aGUKPj4gPiBlbmdpbmUgc3RhdGUg dG8gYSBub24gbnVsbCB2YWx1ZS4gVGh1cyBhZnRlciBhIHN1Y2Nlc3NmdWwgaGFuZyByZWNvdmVy eQo+PiA+IHdlIG1pZ2h0IG1pc3Rha2VubHkgc3VibWl0IHRvIGEgbm9uIGluaXRpYWxpemVkIHJp bmdidWZmZXIgcmVzdWx0aW5nIGluOgo+PiA+IAo+PiA+IFsgMTk5MS4zNTY0MThdIC0tLS0tLS0t LS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+PiA+IFsgMTk5MS4zNTkxOTJdIFdBUk5JTkc6 IENQVTogMSBQSUQ6IDIzMzUgYXQgbGliL2lvbWFwLmM6NDMgYmFkX2lvX2FjY2VzcysweDNkLzB4 NDAoKQo+PiA+IFsgMTk5MS4zNjE5NjZdIEJhZCBJTyBhY2Nlc3MgYXQgcG9ydCAweDI0IChvdXRs KHZhbCxwb3J0KSkKPj4gPiBbIDE5OTEuMzY0NzUwXSBNb2R1bGVzIGxpbmtlZCBpbjogc25kX2hk YV9jb2RlY19oZG1pIGk5MTUgeDg2X3BrZ190ZW1wX3RoZXJtYWwgY29yZXRlbXAga3ZtX2ludGVs IGt2bSBzbmRfaGRhX2ludGVsIHNuZF9oZGFfY29udHJvbGxlciBzbmRfaGRhX2NvZGVjIGNyY3Qx MGRpZl9wY2xtdWwgY3JjMzJfcGNsbXVsIGdoYXNoX2NsbXVsbmlfaW50ZWwgc25kX2h3ZGVwIHNu ZF9wY20gYWVzbmlfaW50ZWwgYWVzX3g4Nl82NCBnbHVlX2hlbHBlciBscncgaTJjX2FsZ29fYml0 IGdmMTI4bXVsIGFibGtfaGVscGVyIGRybV9rbXNfaGVscGVyIGNyeXB0ZCBzbmRfc2VxX21pZGkg c25kX3NlcV9taWRpX2V2ZW50IHNlcmlvX3JhdyBkcm0gc25kX3Jhd21pZGkgc25kX3NlcSBzbmRf c2VxX2RldmljZSBzbmRfdGltZXIgdmlkZW8gc25kIHNvdW5kY29yZSBtZWlfbWUgbHBjX2ljaCBi bmVwIG1hY19oaWQgYWNwaV9wYWQgbWVpIHJmY29tbSBibHVldG9vdGggcGFycG9ydF9wYyBwcGRl diBscCBwYXJwb3J0IG5sc19pc284ODU5XzEgZTEwMDBlIHB0cCBhaGNpIGxpYmFoY2kgcHBzX2Nv cmUgc2RoY2lfYWNwaSBzZGhjaQo+PiA+IFsgMTk5MS4zNzA4MjddIENQVTogMSBQSUQ6IDIzMzUg Q29tbTogZ2VtX3JpbmdmaWxsIFRhaW50ZWQ6IEcgICAgICAgIFcgICAgICAzLjE5LjAtcmMzKyAj NTAKPj4gPiBbIDE5OTEuMzczODM4XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBC cm9hZHdlbGwgQ2xpZW50IHBsYXRmb3JtL1Nhd1Rvb3RoIFBlYWssIEJJT1MgQkRXLUUxUjEuODZD LjAwOTIuUjAwLjE0MDgzMTE5NDIgMDgvMzEvMjAxNAo+PiA+IFsgMTk5MS4zNzY5MDJdICBmZmZm ZmZmZjgxYWExYTQ2IGZmZmY4ODAxNDkxMGZhYzggZmZmZmZmZmY4MTczZGJjZiAwMDAwMDAwMDAw MDAwMDAxCj4+ID4gWyAxOTkxLjM3OTk3OF0gIGZmZmY4ODAxNDkxMGZiMTggZmZmZjg4MDE0OTEw ZmIwOCBmZmZmZmZmZjgxMDcwMDdhIGZmZmY4ODAxNDkxMGZiMjgKPj4gPiBbIDE5OTEuMzgzMDM3 XSAgZmZmZjg4MDE0NzIwOTk0MCBmZmZmODgwMGFhZmE4NzE4IGZmZmY4ODAwYWFmYTAwMDAgZmZm Zjg4MDBhYWZhMTkxOAo+PiA+IFsgMTk5MS4zODYwOTRdIENhbGwgVHJhY2U6Cj4+ID4gWyAxOTkx LjM4OTE0MF0gIFs8ZmZmZmZmZmY4MTczZGJjZj5dIGR1bXBfc3RhY2srMHg0NS8weDU3Cj4+ID4g WyAxOTkxLjM5MjIwN10gIFs8ZmZmZmZmZmY4MTA3MDA3YT5dIHdhcm5fc2xvd3BhdGhfY29tbW9u KzB4OGEvMHhjMAo+PiA+IFsgMTk5MS4zOTUyNjhdICBbPGZmZmZmZmZmODEwNzAwZjY+XSB3YXJu X3Nsb3dwYXRoX2ZtdCsweDQ2LzB4NTAKPj4gPiBbIDE5OTEuMzk4MzMwXSAgWzxmZmZmZmZmZmEw NTMyOTBjPl0gPyBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4rMHgzYy8weDI0MCBbaTkxNV0KPj4g PiBbIDE5OTEuNDAxMzk1XSAgWzxmZmZmZmZmZjgxMzk4NWJkPl0gYmFkX2lvX2FjY2VzcysweDNk LzB4NDAKPj4gPiBbIDE5OTEuNDA0NDYyXSAgWzxmZmZmZmZmZjgxMzk4NzYzPl0gaW93cml0ZTMy KzB4MzMvMHg0MAo+PiA+IFsgMTk5MS40MDc1MjldICBbPGZmZmZmZmZmYTA1MzM1ODU+XSBnZW44 X2luaXRfcmNzX2NvbnRleHQrMHhkNS8weDE3MCBbaTkxNV0KPj4gPiBbIDE5OTEuNDEwNjA1XSAg WzxmZmZmZmZmZmEwNTMzZDE3Pl0gaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUrMHg2 NTcvMHg4ZTAgW2k5MTVdCj4+ID4gWyAxOTkxLjQxMzY2OF0gIFs8ZmZmZmZmZmZhMDUwZWZmMT5d IGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIuaXNyYS4yMisweGVkMS8weGY2MCBbaTkxNV0KPj4gPiBb IDE5OTEuNDE2NzM2XSAgWzxmZmZmZmZmZjgxMWMwMTI1Pl0gPyBfX2ttYWxsb2MrMHg1NS8weDFi MAo+PiA+IFsgMTk5MS40MTk4MDFdICBbPGZmZmZmZmZmYTA1MTAyOWM+XSA/IGk5MTVfZ2VtX2V4 ZWNidWZmZXIyKzB4NmMvMHgyYzAgW2k5MTVdCj4+ID4gWyAxOTkxLjQyMjc3Ml0gIFs8ZmZmZmZm ZmZhMDUxMDJlMT5dIGk5MTVfZ2VtX2V4ZWNidWZmZXIyKzB4YjEvMHgyYzAgW2k5MTVdCj4+ID4g WyAxOTkxLjQyNTYzMl0gIFs8ZmZmZmZmZmZhMDFiOGFiND5dIGRybV9pb2N0bCsweDFhNC8weDYz MCBbZHJtXQo+PiA+IFsgMTk5MS40Mjg0NTRdICBbPGZmZmZmZmZmODExMjU4YmM+XSA/IGFjY3Rf YWNjb3VudF9jcHV0aW1lKzB4MWMvMHgyMAo+PiA+IFsgMTk5MS40MzEyNTVdICBbPGZmZmZmZmZm ODExZWUzNzg+XSBkb192ZnNfaW9jdGwrMHgyZjgvMHg1MTAKPj4gPiBbIDE5OTEuNDM0MDA5XSAg WzxmZmZmZmZmZjgxMDlmODM0Pl0gPyB2dGltZV9hY2NvdW50X3VzZXIrMHg1NC8weDYwCj4+ID4g WyAxOTkxLjQzNjc3OF0gIFs8ZmZmZmZmZmY4MTFlZTYxMT5dIFN5U19pb2N0bCsweDgxLzB4YTAK Pj4gPiBbIDE5OTEuNDM5NTUzXSAgWzxmZmZmZmZmZjgxNzQ1Y2I0Pl0gPyBpbnRfY2hlY2tfc3lz Y2FsbF9leGl0X3dvcmsrMHgzNC8weDNkCj4+ID4gWyAxOTkxLjQ0MjMwNl0gIFs8ZmZmZmZmZmY4 MTc0NWEyZD5dIHN5c3RlbV9jYWxsX2Zhc3RwYXRoKzB4MTYvMHgxYgo+PiA+IAo+PiA+IEZpeCB0 aGlzIGJ5IHNldHRpbmcgYWxsIHRoZSBlbmdpbmUgZmllbGRzIHByb3Blcmx5IHdoZW4gbHJjIGlz IGZyZWVkLgo+PiA+IAo+PiA+IENjOiBUaG9tYXMgRGFuaWVsIDx0aG9tYXMuZGFuaWVsQGludGVs LmNvbT4KPj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGlu dGVsLmNvbT4KPj4gPiAtLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg fCA0ICsrKysKPj4gPiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQo+PiA+IAo+PiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+ID4gaW5kZXggNzY3MGEwZi4uMzI2ODRkOSAxMDA2 NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+ID4gQEAgLTE3NzcsNiArMTc3Nywx MCBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 KQo+PiA+ICAJCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+PiA+ICAJ CQlrZnJlZShyaW5nYnVmKTsKPj4gPiAgCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0 eF9vYmotPmJhc2UpOwo+PiA+ICsJCQlXQVJOX09OKGN0eC0+ZW5naW5lW2ldLnVucGluX2NvdW50 ICE9IDApOwo+PiA+ICsJCQljdHgtPmVuZ2luZVtpXS51bnBpbl9jb3VudCA9IDA7Cj4+ID4gKwkJ CWN0eC0+ZW5naW5lW2ldLnJpbmdidWYgPSBOVUxMOwo+PiA+ICsJCQljdHgtPmVuZ2luZVtpXS5z dGF0ZSA9IE5VTEw7Cj4+ID4gIAkJfQo+PiA+ICAJfQo+PiA+ICB9Cj4+IAo+PiBIaSwKPj4gCj4+ IEkgZG9uJ3QgcXVpdGUgc2VlIGhvdyB0aGlzIGNhbiBmaXggdGhlIHByb2JsZW0gaWxsdXN0cmF0 ZWQgYnkgdGhlIHN0YWNrCj4+IHRyYWNlIGFib3ZlLiAgQUZBSUNTIGludGVsX2xyX2NvbnRleHRf ZnJlZSgpIGlzIGNhbGxlZCAvb25seS8gZnJvbQo+PiBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoKSwg d2hpY2ggc2hvdWxkIG1lYW4gdGhhdCB0aGUgcmVmY291bnQgb24gdGhlCj4+IGludGVsX2NvbnRl eHQgb2JqZWN0IGlzIGFscmVhZHkgemVybywgYW5kIHRoYXQgaXQgd2lsbCBiZSBmcmVlZCBvbgo+ PiByZXR1cm4uIFNvIHRoZSBjb250ZW50cyBvZiBjdHgtPmVuZ2luZVtdIHNob3VsZCBiZSBpcnJl bGV2YW50IC4uLgoKQWdyZWVkIHRoYXQgbXkgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyB0aGUgcHJv YmxlbSwgaXQgaXMgZm9vYmFyLgoKQnV0IEkgdHJpZWQgdG8gZm9sbG93IHRoZSB0cmFja3MgVmls bGUgdW5jb3ZlcmVkIGFuZCBhcHBhcmVudGx5CnRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgZ2V0IHRo ZSByZXF1ZXN0IGFsbG9jYXRpb24gYW5kIHRoZQphY3R1YWwgYWRkX3JlcXVlc3QgYm91bmRhcmll cyB3cm9uZyBpbiBpbml0LgoKVGhlIHJlc3VsdCBpcyB0aGF0IHdlIGVuZCB1cCBoYXZpbmcgcmlu Zy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0CndpdGggd3JvbmcgY3R4IHBvaW50ZXIgKGZyb20g cHJldmlvdXMgZW1pdHMpCgpBbmQgdGh1cywgdGhlIGNvZGUgdGhpbmtzIHRoYXQgdGhlIGNvbnRl eHQgaXMgaW5pdGlhbGl6ZWQsIHdoZW4gaW4gZmFjdAppdCBpcyB0aGUgb2xkIGNvbnRleHQgaW4g b2xyIHRoYXQgaXMgZm9vbGluZyB1cy4KCi1NaWthCgoKPiBJJ3ZlIG5vdyBtYW5hZ2VkIHRvIGhp dCB0aGlzIGZhaXJseSByZWxpYWJseSB3aXRoCj4gJ2dlbV9yaW5nZmlsbCAtLXIgcmVuZGVyJyAr IGN0cmwtYyBzdHJhaWdodCBhZnRlciBib290Lgo+Cj4gVG8gbWUgaXQgbG9va3MgbGlrZSBzb21l IGtpbmQgb2YgYmlnZ2VyIG1lc3Mgd2l0aCBvbHIuIElmIG9sciB3YXMgYWxyZWFkeSB0aGVyZSwK PiBsb2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdCgpIHdpbGwgZG8gYWJzb2x1dGVseSBub3RoaW5n LCB3aGljaCBtZWFucyB0aGUgcmluZ2J1Zgo+IHdvbid0IGV2ZW4gYmUgcGlubmVkL21hcHBlZCBh bmQgcmluZ2J1Zy0+dmlydHVhbF9zdGFydCB3aWxsIHJlbWFpbiBOVUxMLiBBbmQgdGhhdAo+IGxl YWRzIHRvIHRoZSB3L2EgaW5pdCB0byBjYWxsIGlvd3JpdGUoKSB3aXRoIHNvbWUgY2xvc2UgdG8g MCBpb21lbSBhZGRyZXNzc2VzLgo+Cj4gSSdtIG5vdCBzdXJlIGhvdyB0aGlzIGlzIHN1cHBvc2Vk IHRvIGFjdHVhbGx5IHdvcmsuIFRvIG1lIGl0IGxvb2tzIG9sciBzaG91bGQgbmV2ZXIKPiBiZSBh bGxvd2VkIHRvIGJlICE9IE5VTEwgd2hlbiBjcmVhdGluZyB0aGUgY29udGV4dC9yaW5nYnVmIHRv IGF2b2lkIHRoaXMgcHJvYmxlbS4gQW5kCj4geWV0IHNvbWVob3cgdGhlIHByZXNlbmNlIG9mIG9s ciBkb2Vzbid0IGFsd2F5cyB0cmlnZ2VyIHRoZSAnYmFkIElPIGFjY2Vzcycgd2FybnMuIEluCj4g ZmFjdCBJIGNhbid0IHNlZW0gdG8gdHJpZ2dlciBpdCBtb3JlIHRoYW4gb25jZSB1bnRpbCBJIHJl Ym9vdCB0aGUgbWFjaGluZS4gSSB0cmllZCB0bwo+IGFkZCBhIHdhcm5pbmcgWzFdIHRvIGNhdGNo IGFsbCBjYXNlcyB3aGVuIG9sciBpcyBhbHJlYWR5IHRoZXJlLCBhbmQgaXQgd2lsbCB0cmlnZ2Vy IGluCj4gbW9zdCBjYXNlcyB3aGVuIEkgaGl0IGN0cmwtYyB3aGlsZSBydW5uaW5nIGdlbV9yaW5n ZmlsbC4gQW5kIHlldCB0aGUgJ0JhZCBJTyBhY2Nlc3MnCj4gZG9lc24ndCBmb2xsb3cgaXQgZXhj ZXB0IG9uY2UgYWZ0ZXIgYm9vdC4KPgo+IFsxXQo+IEBAIC0xOTA2LDYgKzE5MjYsOCBAQCBpbnQg aW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCwKPiAgCj4gICAgICAgICB9Cj4gIAo+ICsgICAgICAgV0FSTl9PTihyaW5nLT5vdXRzdGFuZGlu Z19sYXp5X3JlcXVlc3QpOwo+ICsKPiAgICAgICAgIHJldCA9IHBvcHVsYXRlX2xyX2NvbnRleHQo Y3R4LCBjdHhfb2JqLCByaW5nLCByaW5nYnVmKTsKPiAgICAgICAgIGlmIChyZXQpIHsKPiAgICAg ICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHBvcHVsYXRlIExSQzogJWRc biIsIHJldCk7Cj4KPgo+Cj4+IAo+PiB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3Qg a3JlZiAqY3R4X3JlZikKPj4gewo+PiAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IGNv bnRhaW5lcl9vZihjdHhfcmVmLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0eXBlb2YoKmN0eCksIHJlZik7Cj4+IAo+PiAgICAgdHJhY2VfaTkxNV9jb250 ZXh0X2ZyZWUoY3R4KTsKPj4gCj4+ICAgICBpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+PiAg ICAgICAgIGludGVsX2xyX2NvbnRleHRfZnJlZShjdHgpOwo+PiAKPj4gICAgIGk5MTVfcHBndHRf cHV0KGN0eC0+cHBndHQpOwo+PiAKPj4gICAgIGlmIChjdHgtPmxlZ2FjeV9od19jdHgucmNzX3N0 YXRlKQo+PiAgICAgICAgIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZjdHgtPmxlZ2FjeV9o d19jdHgucmNzX3N0YXRlLT5iYXNlKTsKPj4gCj4+ICAgICBsaXN0X2RlbCgmY3R4LT5saW5rKTsK Pj4gICAgIGtmcmVlKGN0eCk7Cj4+IH0KPj4gCj4+IC4uLiB1bmxlc3Mgc29tZXRoaW5nIGlzIHRy eWluZyB0byByZXVzZSB0aGUgY29udGV4dCB3aGlsZSBpdCBpcyBzdGlsbCBpbgo+PiB0aGUgcHJv Y2VzcyBvZiBiZWluZyBkZWxldGVkIDooCj4+IAo+PiBJbiBhZGRpdGlvbiwgdGhlIHN0YWNrIHRy YWNlIGFib3ZlIGltcGxpZXMgdGhhdCBjdHgtPmVuZ2luZVtdLnN0YXRlIFdBUwo+PiBOVUxMIHdo ZW4gaTkxNV9nZW1fdmFsaWRhdGVfY29udGV4dCgpIHdhcyBjYWxsZWQsIG90aGVyd2lzZSBpdCB3 b3VsZCBub3QKPj4gaGF2ZSBjYWxsZWQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUo KQo+PiAKPj4gICAgIGlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMgJiYgIWN0eC0+ZW5naW5lW3Jp bmctPmlkXS5zdGF0ZSkgewo+PiAgICAgICAgIGludCByZXQgPSBpbnRlbF9scl9jb250ZXh0X2Rl ZmVycmVkX2NyZWF0ZShjdHgsIHJpbmcpOwo+PiAgICAgICAgIGlmIChyZXQpIHsKPj4gICAgICAg ICAgICAgIERSTV9ERUJVRygiQ291bGQgbm90IGNyZWF0ZSBMUkMgJXU6ICVkXG4iLCBjdHhfaWQs IHJldCk7Cj4+ICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUihyZXQpOwo+PiAgICAgICAgIH0K Pj4gICAgIH0KPj4gCj4+IGFuZCBsaWtld2lzZSB0aGF0IGZ1bmN0aW9uIHdvdWxkIG5vdCBoYXZl IGNhbGxlZCBnZW44X2luaXRfcmNzX2NvbnRleHQoKQo+PiB1bmxlc3MgdGhpcyB3YXMgYSBuZXcg Y29udGV4dDoKPj4gCj4+ICAgICBpZiAoY3R4ID09IHJpbmctPmRlZmF1bHRfY29udGV4dCkKPj4g ICAgICAgICBscmNfc2V0dXBfaGFyZHdhcmVfc3RhdHVzX3BhZ2UocmluZywgY3R4X29iaik7Cj4+ ICAgICBlbHNlIGlmIChyaW5nLT5pZCA9PSBSQ1MgJiYgIWN0eC0+cmNzX2luaXRpYWxpemVkKSB7 Cj4+ICAgICAgICAgaWYgKHJpbmctPmluaXRfY29udGV4dCkgewo+PiAgICAgICAgICAgICByZXQg PSByaW5nLT5pbml0X2NvbnRleHQocmluZywgY3R4KTsKPj4gICAgICAgICAgICAgaWYgKHJldCkg ewo+PiAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigicmluZyBpbml0IGNvbnRleHQ6ICVkXG4i LCByZXQpOwo+PiAgICAgICAgICAgICAgICAgIGN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVm ID0gTlVMTDsKPj4gICAgICAgICAgICAgICAgICBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGUg PSBOVUxMOwo+PiAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+ICAgICAgICAgICAgIH0K Pj4gICAgICAgICB9Cj4+IAo+PiAgICAgICAgIGN0eC0+cmNzX2luaXRpYWxpemVkID0gdHJ1ZTsK Pj4gICAgIH0KPj4gCj4+IE5vdGUgdGhhdCByY3NfaW5pdGlhbGl6ZWQgaXMgbmV2ZXIgY2xlYXJl ZCwgZXZlbiB3aXRoIHlvdXIgY2hhbmdlLCBzbwo+PiB0aGF0IGluIGEgdXNlLWFmdGVyLWZyZWUg c2l0dWF0aW9uIHdlIHdvdWxkbid0IGVuZCB1cCBpbiB0aGlzIHBhdGguIFNvIEkKPj4gdGhpbmsg dGhlIG15c3RlcnkgaXMgaG93IHRoaXMgY29udGV4dCBlbmRlZCB1cCBpbiBhbiBpbmNvbnNpc3Rl bnQgc3RhdGU6Cj4+IGhhcyBpdCBiZWVuIHBhcnRpYWxseSBmcmVlZCBhbmQgdGhlbiByZXVzZWQs IG9yIGhhcyBzb21lIHBhcnQgb2YgdGhlIG5ldwo+PiBjb250ZXh0IGFsbG9jYXRpb24gcGF0aCBm YWlsZWQgYnV0IG5vdCBiZWVuIHVud291bmQgY29ycmVjdGx5Pwo+PiAKPj4gQW5kIGlmIHNldHRp bmcgdG8gTlVMTCBhIHBvaW50ZXIgdGhhdCdzIGluc2lkZSBhIHN0cnVjdHVyZSB0aGF0J3MgaW4g dGhlCj4+IHByb2Nlc3Mgb2YgYmVpbmcgZnJlZWQgYWN0dWFsbHkgbWFrZXMgYSBkaWZmZXJlbmNl LCBkb2Vzbid0IHRoYXQgbWVhbgo+PiB0aGVyZSdzIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUgc29t ZXdoZXJlPwo+PiAKPj4gLkRhdmUuCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4KPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbCBP VEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK