From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Dai Subject: Re: [PATCH] drm/i915/guc: Move wait for GuC out of spinlock/unlock Date: Tue, 24 Nov 2015 10:36:54 -0800 Message-ID: <5654AE46.1010903@intel.com> References: <20151120084542.GU17050@phenom.ffwll.local> <1448319778-29282-1-git-send-email-yu.dai@intel.com> <20151124130410.GW17050@phenom.ffwll.local> <1448371593.32235.17.camel@intel.com> <565497B5.8070103@intel.com> <1448384747.32235.27.camel@intel.com> <20151124180813.GC17050@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 330846E2EC for ; Tue, 24 Nov 2015 10:39:04 -0800 (PST) In-Reply-To: <20151124180813.GC17050@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Imre Deak Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMS8yNC8yMDE1IDEwOjA4IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIFR1ZSwg Tm92IDI0LCAyMDE1IGF0IDA3OjA1OjQ3UE0gKzAyMDAsIEltcmUgRGVhayB3cm90ZToKPiA+IE9u IHRpLCAyMDE1LTExLTI0IGF0IDA5OjAwIC0wODAwLCBZdSBEYWkgd3JvdGU6Cj4gPiA+Cj4gPiA+ IE9uIDExLzI0LzIwMTUgMDU6MjYgQU0sIEltcmUgRGVhayB3cm90ZToKPiA+ID4gPiBPbiB0aSwg MjAxNS0xMS0yNCBhdCAxNDowNCArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ IE9uIE1vbiwgTm92IDIzLCAyMDE1IGF0IDAzOjAyOjU4UE0gLTA4MDAsIHl1LmRhaUBpbnRlbC5j b20gd3JvdGU6Cj4gPiA+ID4gPiA+IEZyb206IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBXaGVuIEd1QyBXb3JrIFF1ZXVlIGlzIGZ1bGwsIGRyaXZl ciB3aWxsIHdhaXQgR3VDIGZvciBhdmFsaWFibGUKPiA+ID4gPiA+ID4gc3BhY2UgYnkgZGVsYXlp bmcgMW1zLiBUaGUgd2FpdCBuZWVkcyB0byBiZSBvdXQgb2Ygc3BpbmxvY2tpcnEKPiA+ID4gPiA+ ID4gLwo+ID4gPiA+ID4gPiB1bmxvY2suIE90aGVyd2lzZSwgbG9ja3VwIGhhcHBlbnMgYmVjYXVz ZSBqaWZmaWVzIHdvbid0IGJlCj4gPiA+ID4gPiA+IHVwZGF0ZWQKPiA+ID4gPiA+ID4gZHVyIHRv IGlycSBpcyBkaXNhYmxlZC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSXNzdWUgaXMgZm91bmQg aW4gaWd0L2dlbV9jbG9zZV9yYWNlLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBTaWduZWQtb2Zm LWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4g PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAyNwo+ID4g PiA+ID4gPiArKysrKysrKysrKysrKysrKy0KPiA+ID4gPiA+ID4gLS0tLS0tLS0tCj4gPiA+ID4g PiA+ICAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKPiA+ID4gPiA+ID4gaW5kZXggMGE2YjAwNy4uMTQxODM5NyAx MDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3N1Ym1pc3Npb24uYwo+ID4gPiA+ID4gPiBAQCAtMjAxLDEwICsyMDEsMTMgQEAgc3RhdGljIGlu dCBndWNfcmluZ19kb29yYmVsbChzdHJ1Y3QKPiA+ID4gPiA+ID4gaTkxNV9ndWNfY2xpZW50ICpn YykKPiA+ID4gPiA+ID4gIAl1bmlvbiBndWNfZG9vcmJlbGxfcXcgKmRiOwo+ID4gPiA+ID4gPiAg CXZvaWQgKmJhc2U7Cj4gPiA+ID4gPiA+ICAJaW50IGF0dGVtcHQgPSAyLCByZXQgPSAtRUFHQUlO Owo+ID4gPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ICAJYmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShnYy0KPiA+ ID4gPiA+ID4gPiBjbGllbnRfb2JqLCAwKSk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gV2UgZG9uJ3Qg bmVlZCBrbWFwX2F0b21pYyBhbnltb3JlIGhlcmUgbm93LCBzaW5jZSBpdCdzIG91dHNpZGUgb2YK PiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gc3BpbmxvY2suCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiAg CWRlc2MgPSBiYXNlICsgZ2MtPnByb2NfZGVzY19vZmZzZXQ7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmdjLT53cV9sb2NrLCBmbGFncyk7Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gUGxlYXNlIGRvbid0IHVzZSB0aGUgc3VwZXItZ2VuZXJpYyBfaXJxc2F2ZS4gSXQn cyBleHBlbnNpdmUgYW5kCj4gPiA+ID4gPiByZXN1bHRzIGluCj4gPiA+ID4gPiBmcmFnaWxlIGNv ZGUgd2hlbiBzb21lb25lIGFjY2lkZW50YWxseSByZXVzZXMgc29tZXRoaW5nIGluIGFuCj4gPiA+ ID4gPiBpbnRlcnJ1cHQKPiA+ID4gPiA+IGhhbmRsZXIgdGhhdCB3YXMgbmV2ZXIgbWVhbnQgdG8g cnVuIGluIHRoYXQgY29udGV4dC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJbnN0ZWFkIHBsZWFzZSB1 c2UgdGhlIG1vc3Qgc3BlY2lmaWMgZnVudGlvbjoKPiA+ID4gPiA+IC0gc3Bpbl9sb2NrIGlmIHlv dSBrbm93IHlvdSBhcmUgaW4gaXJxIGNvbnRleHQuCj4gPiA+ID4gPiAtIHNpcG5fbG9ja19pcnEg aWYgeW91IGtub3cgeW91IGFyZSBub3QuCj4gPiA+ID4KPiA+ID4gPiBSaWdodCwgYW5kIHNpbXBs eSBzcGluX2xvY2soKSBpZiB0aGUgbG9jayBpcyBub3QgdGFrZW4gaW4gSVJRCj4gPiA+ID4gY29u dGV4dAo+ID4gPiA+IGV2ZXIuCj4gPiA+Cj4gPiA+IFRoaXMgaXMgbm90IGluIElSUSBjb250ZXh0 LiBTbyBJIHdpbGwgdXNlIHNwaW5fbG9ja19pcnEgaW5zdGVhZC4KPiA+Cj4gPiBZb3UgY2FuIGp1 c3QgdXNlIHNwaW5fbG9jaygpLiBzcGluX2xvY2tfaXJxKCkgbWFrZXMgb25seSBzZW5zZSBpZiB5 b3UKPiA+IHRha2UgdGhlIGxvY2sgaW4gSVJRIGNvbnRleHQgdG9vLCB3aGljaCBpcyBub3QgdGhl IGNhc2UuCj4KPiBJbW8ganVzdCBkcm9wIGJvdGggc3BpbmxvY2tzLCBhZGRpbmcgbG9ja3MgZm9y IGRlYnVnZnMgaXMgb3ZlcmtpbGwgaW1vLgo+CkhvdyBhYm91dCB1c2luZyBtdXRleF9sb2NrX2lu dGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KSBpbnN0ZWFkIGluIApkZWJ1Z2ZzLCB3aGlj aCBpcyB0byByZXBsYWNlIGhvc3QyZ3VjIGxvY2suCgpzcGlubG9jayBkdXJpbmcgcmluZyB0aGUg ZG9vciBiZWxsIGlzIHN0aWxsIG5lZWRlZC4KCkFsZXgKPiA+Cj4gPiA+ID4gPiAtIHNwaW5fbG9j a19pcnFzYXZlIHNob3VsZCBiZSBhIGJpZyB3YXJuaW5nIHNpZ24gdGhhdCB5b3VyIGNvZGUKPiA+ ID4gPiA+IGhhcwo+ID4gPiA+ID4gICBsYXllcmluZyBpc3N1ZXMuCj4gPiA+ID4gPgo+ID4gPiA+ ID4gUGxlYXNlIGF1ZGl0IHRoZSBlbnRpcmUgZ3VjIGNvZGUgZm9yIHRoZSBhYm92ZSB0d28gaXNz dWVzLgo+ID4gPiA+Cj4gPiA+ID4gQWdyZWVkLCBpdCBsb29rcyBpbmNvbnNpc3RlbnQgYXRtOiB3 ZSBkbyBzcGluX2xvY2sod3FfbG9jaykgZnJvbQo+ID4gPiA+IGRlYnVnZnMgYW5kIHNwaW5fbG9j a19pcnEod3FfbG9jaykgZnJvbSBpOTE1X2d1Y19zdWJtaXQoKS4gTmVpdGhlcgo+ID4gPiA+IG9m Cj4gPiA+ID4gdGhlbSBhcmUgY2FsbGVkIGZyb20gSVJRIGNvbnRleHQgQUZBSUNTLCBpbiB3aGlj aCBjYXNlIGEgc2ltcGxlCj4gPiA+ID4gc3Bpbl9sb2NrKCkgd291bGQgZG8uCj4gPiA+ID4KPiA+ ID4gPiAtLUltcmUKPiA+ID4gPgo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAJLyogVXBkYXRl IHRoZSB0YWlsIHNvIGl0IGlzIHZpc2libGUgdG8gR3VDICovCj4gPiA+ID4gPiA+ICAJZGVzYy0+ dGFpbCA9IGdjLT53cV90YWlsOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBAQCAtMjQ4LDcgKzI1 MSwxMCBAQCBzdGF0aWMgaW50IGd1Y19yaW5nX2Rvb3JiZWxsKHN0cnVjdAo+ID4gPiA+ID4gPiBp OTE1X2d1Y19jbGllbnQgKmdjKQo+ID4gPiA+ID4gPiAgCQkJZGJfZXhjLmNvb2tpZSA9IDE7Cj4g PiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiArCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmdjLT53cV9sb2NrLCBmbGFncyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gIAlr dW5tYXBfYXRvbWljKGJhc2UpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAJcmV0dXJuIHJl dDsKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAgLTQ4NywxNiArNDkz LDE2IEBAIHN0YXRpYyBpbnQgZ3VjX2dldF93b3JrcXVldWVfc3BhY2Uoc3RydWN0Cj4gPiA+ID4g PiA+IGk5MTVfZ3VjX2NsaWVudCAqZ2MsIHUzMiAqb2Zmc2V0KQo+ID4gPiA+ID4gPiAgCXN0cnVj dCBndWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+ID4gPiA+ID4gPiAgCXZvaWQgKmJhc2U7Cj4gPiA+ ID4gPiA+ICAJdTMyIHNpemUgPSBzaXplb2Yoc3RydWN0IGd1Y193cV9pdGVtKTsKPiA+ID4gPiA+ ID4gLQlpbnQgcmV0ID0gMCwgdGltZW91dF9jb3VudGVyID0gMjAwOwo+ID4gPiA+ID4gPiArCWlu dCByZXQgPSAtRVRJTUVET1VULCB0aW1lb3V0X2NvdW50ZXIgPSAyMDA7Cj4gPiA+ID4gPiA+ICsJ dW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gIAliYXNlID0ga21h cF9hdG9taWMoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGdjLQo+ID4gPiA+ID4gPiA+IGNsaWVu dF9vYmosIDApKTsKPiA+ID4gPiA+ID4gIAlkZXNjID0gYmFzZSArIGdjLT5wcm9jX2Rlc2Nfb2Zm c2V0Owo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgCXdoaWxlICh0aW1lb3V0X2NvdW50ZXItLSA+ IDApIHsKPiA+ID4gPiA+ID4gLQkJcmV0ID0gd2FpdF9mb3JfYXRvbWljKENJUkNfU1BBQ0UoZ2Mt PndxX3RhaWwsCj4gPiA+ID4gPiA+IGRlc2MtPmhlYWQsCj4gPiA+ID4gPiA+IC0JCQkJZ2MtPndx X3NpemUpID49IHNpemUsIDEpOwo+ID4gPiA+ID4gPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmZ2Mt PndxX2xvY2ssIGZsYWdzKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLQkJaWYgKCFyZXQpIHsK PiA+ID4gPiA+ID4gKwkJaWYgKENJUkNfU1BBQ0UoZ2MtPndxX3RhaWwsIGRlc2MtPmhlYWQsIGdj LQo+ID4gPiA+ID4gPiA+IHdxX3NpemUpID49IHNpemUpIHsKPiA+ID4gPiA+ID4gIAkJCSpvZmZz ZXQgPSBnYy0+d3FfdGFpbDsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gIAkJCS8qIGFkdmFuY2Ug dGhlIHRhaWwgZm9yIG5leHQgd29ya3F1ZXVlCj4gPiA+ID4gPiA+IGl0ZW0gKi8KPiA+ID4gPiA+ ID4gQEAgLTUwNSw3ICs1MTEsMTMgQEAgc3RhdGljIGludCBndWNfZ2V0X3dvcmtxdWV1ZV9zcGFj ZShzdHJ1Y3QKPiA+ID4gPiA+ID4gaTkxNV9ndWNfY2xpZW50ICpnYywgdTMyICpvZmZzZXQpCj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAJCQkvKiB0aGlzIHdpbGwgYnJlYWsgdGhlIGxvb3AgKi8K PiA+ID4gPiA+ID4gIAkJCXRpbWVvdXRfY291bnRlciA9IDA7Cj4gPiA+ID4gPiA+ICsJCQlyZXQg PSAwOwo+ID4gPiA+ID4gPiAgCQl9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZ2MtPndxX2xvY2ssIGZsYWdzKTsKPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiArCQlpZiAodGltZW91dF9jb3VudGVyKQo+ID4gPiA+ID4gPiArCQkJdXNsZWVwX3Jh bmdlKDEwMDAsIDIwMDApOwo+ID4gPiA+ID4KPiA+ID4gPiA+IERvIHdlIHJlYWxseSBub3QgaGF2 ZSBhIGludGVycnVwdC9zaWduYWwgZnJvbSB0aGUgZ3VjIHdoZW4gaXQgaGFzCj4gPiA+ID4gPiBj bGVhcmVkCj4gPiA+ID4gPiB1cCBzb21lIHNwYWNlPwo+ID4gPiA+ID4KPiA+ID4KPiA+ID4gVGhp cyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gZncgYWx0aG91Z2ggSSB0aGluayBpdCBjb3VsZCBiZSBk b25lCj4gPiA+IHRocm91Z2gKPiA+ID4gdGhlIGd1YyB0byBob3N0IGludGVycnVwdC4gSSBhbSB3 b3JyeSBhYm91dCB0aGF0IGlmIHdlIGltcGxlbWVudAo+ID4gPiB0aGlzLAo+ID4gPiBpdCB3aWxs IGVuZCB1cCB3aXRoIGRyaXZlciBoYW5kbGVzIHRvbyBtYW55IGludGVycnVwdHMgKG1heWJlIHNh bWUKPiA+ID4gYW1vdW50IG9mIGNvbnRleHQgc3dpdGNoKS4gSG93ZXZlciwgaWRlYWxseSB3ZSBk b24ndCB3YW50IHRvIGhhbmRsZQo+ID4gPiBpbnRlcnJ1cHRzIGF0IGFsbC4KPiA+ID4gPiA+ID4g IAl9Owo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgCWt1bm1hcF9hdG9taWMoYmFzZSk7Cj4gPiA+ ID4gPiA+IEBAIC01OTcsMTkgKzYwOSwxNyBAQCBpbnQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdAo+ ID4gPiA+ID4gPiBpOTE1X2d1Y19jbGllbnQKPiA+ID4gPiA+ID4gKmNsaWVudCwKPiA+ID4gPiA+ ID4gIHsKPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjbGllbnQtPmd1YzsK PiA+ID4gPiA+ID4gIAllbnVtIGludGVsX3JpbmdfaWQgcmluZ19pZCA9IHJxLT5yaW5nLT5pZDsK PiA+ID4gPiA+ID4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gPiA+ID4gPiAgCWludCBxX3Jl dCwgYl9yZXQ7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAJLyogTmVlZCB0aGlzIGJlY2F1c2Ug b2YgdGhlIGRlZmVycmVkIHBpbiBjdHggYW5kIHJpbmcKPiA+ID4gPiA+ID4gKi8KPiA+ID4gPiA+ ID4gIAkvKiBTaGFsbCB3ZSBtb3ZlIHRoaXMgcmlnaHQgYWZ0ZXIgcmluZyBpcyBwaW5uZWQ/ICov Cj4gPiA+ID4gPiA+ICAJbHJfY29udGV4dF91cGRhdGUocnEpOwo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZjbGllbnQtPndxX2xvY2ssIGZsYWdzKTsKPiA+ID4g PiA+ID4gLQo+ID4gPiA+ID4gPiAgCXFfcmV0ID0gZ3VjX2FkZF93b3JrcXVldWVfaXRlbShjbGll bnQsIHJxKTsKPiA+ID4gPiA+ID4gIAlpZiAocV9yZXQgPT0gMCkKPiA+ID4gPiA+ID4gIAkJYl9y ZXQgPSBndWNfcmluZ19kb29yYmVsbChjbGllbnQpOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAr CXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBTbyBh dCBmaXJzdCBJIHRob3VnaHQgdGhlcmUncyBhIHJhY2Ugbm93LCBidXQgdGhlbiBJIGxvb2tlZCBh dAo+ID4gPiA+ID4gd2hhdAo+ID4gPiA+ID4gaG9zdDJndWMgYW5kIHdxX2xvY2sgcHJvdGVjdC4g SXQgc2VlbXMgbGlrZSB0aGUgb25seSB0aGluZyB0aGV5Cj4gPiA+ID4gPiBkbyBpcwo+ID4gPiA+ ID4gcHJvdGVjdCBhZ2FpbnN0IGRlYnVnZnMsIGFsbCB0aGUgcmVhbCBwcm90ZWN0aW9uIGFnYWlu c3QKPiA+ID4gPiA+IGluY29uc2lzdGVudAo+ID4gPiA+ID4gc3RhdGUgaXMgZG9uZSB0aHJvdWdo IGRldi0+c3RydWN0X211dGV4Lgo+ID4gPiA+ID4KPiA+ID4gPiA+IENhbid0IHdlIGp1c3Qgcmlw IG91dCBhbGwgdGhpcyBzcGlubG9jayBidXNpbmVzcyBmcm9tIHRoZSBndWMKPiA+ID4gPiA+IGNv ZGU/Cj4gPiA+ID4gPiBJdCB3b3VsZCBiZSBlYXNpZXIgdGhhbiBmaXhpbmcgdXAgdGhlIHJhY2Vz IGluIGhlcmUuCj4gPiA+ID4KPiA+ID4gPgo+ID4gPgo+ID4gPiBZZXMsIGhvc3QyZ3VjIGxvY2sg Y2FuIGJlIGRvbmUgdGhyb3VnaCBkZXYtPnN0cnVjdF9tdXRleC4gQnV0Cj4gPiA+IGRlZmluaXRl bHkKPiA+ID4gd2UgZG9uJ3Qgd2FudCB0byBpbnRlcnJ1cHQgdGhlIHByb2Nlc3Mgd2hlbiBkcml2 ZXIgcHJvZ3JhbSBndWMgd29yawo+ID4gPiBxdWV1ZSBhbmQgcmluZyB0aGUgZG9vciBiZWxsLgo+ ID4gPiA+ID4gLURhbmllbAo+ID4gPiA+ID4KPiA+ID4gPiA+ID4gIAljbGllbnQtPnN1Ym1pc3Np b25zW3JpbmdfaWRdICs9IDE7Cj4gPiA+ID4gPiA+ICAJaWYgKHFfcmV0KSB7Cj4gPiA+ID4gPiA+ ICAJCWNsaWVudC0+cV9mYWlsICs9IDE7Cj4gPiA+ID4gPiA+IEBAIC02MjAsOSArNjMwLDYgQEAg aW50IGk5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50Cj4gPiA+ID4gPiA+ICpj bGllbnQsCj4gPiA+ID4gPiA+ICAJfSBlbHNlIHsKPiA+ID4gPiA+ID4gIAkJY2xpZW50LT5yZXRj b2RlID0gMDsKPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+IC0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmY2xpZW50LT53cV9sb2NrLCBmbGFncyk7Cj4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4g LQlzcGluX2xvY2soJmd1Yy0+aG9zdDJndWNfbG9jayk7Cj4gPiA+ID4gPiA+ICAJZ3VjLT5zdWJt aXNzaW9uc1tyaW5nX2lkXSArPSAxOwo+ID4gPiA+ID4gPiAgCWd1Yy0+bGFzdF9zZXFub1tyaW5n X2lkXSA9IHJxLT5zZXFubzsKPiA+ID4gPiA+ID4gIAlzcGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1 Y19sb2NrKTsKPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gMi41LjAKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+Cj4gPiA+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==