From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v6 08/19] drm/i915/gen8: Add 4 level switching infrastructure and lrc support Date: Thu, 30 Jul 2015 09:44:15 +0530 Message-ID: <55B9A497.3080409@intel.com> References: <1438187043-34267-1-git-send-email-michel.thierry@intel.com> <1438187043-34267-9-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 86AF36E267 for ; Wed, 29 Jul 2015 21:14:18 -0700 (PDT) In-Reply-To: <1438187043-34267-9-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA3LzI5LzIwMTUgOTo1MyBQTSwgTWljaGVsIFRoaWVycnkgd3JvdGU6Cj4gSW4gNjRiICg0 OGJpdCBjYW5vbmljYWwpIFBQR1RUIGFkZHJlc3NpbmcsIHRoZSBQRFAwIHJlZ2lzdGVyIGNvbnRh aW5zCj4gdGhlIGJhc2UgYWRkcmVzcyB0byBQTUw0LCB3aGlsZSB0aGUgb3RoZXIgUERQIHJlZ2lz dGVycyBhcmUgaWdub3JlZC4KPgo+IEluIExSQywgdGhlIGFkZHJlc3NpbmcgbW9kZSBtdXN0IGJl IHNwZWNpZmllZCBpbiBldmVyeSBjb250ZXh0Cj4gZGVzY3JpcHRvciwgYW5kIHRoZSBiYXNlIGFk ZHJlc3MgdG8gUE1MNCBpcyBzdG9yZWQgaW4gdGhlIHJlZyBzdGF0ZS4KPgo+IHYyOiBQTUw0IHVw ZGF0ZSBpbiBsZWdhY3kgY29udGV4dCBzd2l0Y2ggaXMgbGVmdCBmb3IgaGlzdG9yaWMgcmVhc29u cywKPiB0aGUgcHJlZmVycmVkIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIHdpdGggbHJjIGNvbnRleHQg YmFzZWQgc3VibWlzc2lvbi4KPiB2Mzogcy9nZW44X21hcF9wYWdlX2RpcmVjdG9yeS9nZW44X3Nl dHVwX3BhZ2VfZGlyZWN0b3J5IGFuZAo+IHMvZ2VuOF9tYXBfcGFnZV9kaXJlY3RvcnlfcG9pbnRl ci9nZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIuCj4gQWxzbywgY2xmbHVzaCB3aWxs IGJlIG5lZWRlZCBmb3IgYnh0LiAoQWthc2gpCj4gdjQ6IFNxdWFzaGVkIGxyYy1zcGVjaWZpYyBj b2RlIGFuZCB1c2UgYSBtYWNybyB0byBzZXQgUE1MNCByZWdpc3Rlci4KPiB2NTogUmViYXNlIGFm dGVyIE1pa2EncyBwcGd0dCBjbGVhbnVwIC8gc2NyYXRjaCBtZXJnZSBwYXRjaCBzZXJpZXMuCj4g UERQIHVwZGF0ZSBpbiBiYl9zdGFydCBpcyBvbmx5IGZvciBsZWdhY3kgMzJiIG1vZGUuCj4gdjY6 IFJlYmFzZSBhZnRlciBmaW5hbCBtZXJnZWQgdmVyc2lvbiBvZiBNaWthJ3MgcHBndHQvc2NyYXRj aAo+IHBhdGNoZXMuCj4gdjc6IFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBwbWw0IHJl Z2lzdGVyIHZhbHVlIGluCj4gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0LiAoQWthc2gpCj4gdjg6 IE1vdmUgcGQgYW5kIHBkcCBzZXR1cCBmdW5jdGlvbnMgdG8gYSBwcmV2aW91cyBwYXRjaCwgdGhl eSBkbyBub3QKPiBiZWxvbmcgaGVyZS4gKEFrYXNoKQo+Cj4gQ2M6IEFrYXNoIEdvZWwgPGFrYXNo LmdvZWxAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRh d3NrLm5ldD4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlA aW50ZWwuY29tPiAodjIrKQo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMgfCAxNyArKysrKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgfCAgMSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICB8IDYw ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdl ZCwgNTUgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IGluZGV4IDQxNzliODAuLmM2YzhhZjcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC02NTYsOCArNjU2LDggQEAgc3RhdGljIGludCBnZW44 X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAlyZXR1cm4g MDsKPiAgIH0KPgo+IC1zdGF0aWMgaW50IGdlbjhfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCwKPiAtCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAr c3RhdGljIGludCBnZW44X2xlZ2FjeV9tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LAo+ICsJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAg CWludCBpLCByZXQ7Cj4KPiBAQCAtNjcyLDYgKzY3MiwxMiBAQCBzdGF0aWMgaW50IGdlbjhfbW1f c3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgIAlyZXR1cm4gMDsKPiAgIH0K Pgo+ICtzdGF0aWMgaW50IGdlbjhfNDhiX21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICt7 Cj4gKwlyZXR1cm4gZ2VuOF93cml0ZV9wZHAocmVxLCAwLCBweF9kbWEoJnBwZ3R0LT5wbWw0KSk7 Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3B0ZV9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAkJCQkgICAgICAgc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAo+ICAgCQkJCSAgICAgICB1aW50NjRfdCBzdGFydCwK PiBAQCAtMTMxOCwxNCArMTMyNCwxMyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICAJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IHBw Z3R0X3VuYmluZF92bWE7Cj4gICAJcHBndHQtPmJhc2UuYmluZF92bWEgPSBwcGd0dF9iaW5kX3Zt YTsKPgo+IC0JcHBndHQtPnN3aXRjaF9tbSA9IGdlbjhfbW1fc3dpdGNoOwo+IC0KPiAgIAlpZiAo VVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiAgIAkJcmV0ID0gc2V0 dXBfcHgocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBtbDQpOwo+ICAgCQlpZiAocmV0KQo+ICAg CQkJZ290byBmcmVlX3NjcmF0Y2g7Cj4KPiAgIAkJcHBndHQtPmJhc2UudG90YWwgPSAxVUxMIDw8 IDQ4Owo+ICsJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44XzQ4Yl9tbV9zd2l0Y2g7Cj4gICAJfSBl bHNlIHsKPiAgIAkJcmV0ID0gX19wZHBfaW5pdChmYWxzZSwgJnBwZ3R0LT5wZHApOwo+ICAgCQlp ZiAocmV0KQo+IEBAIC0xMzQwLDYgKzEzNDUsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5p dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICAJCQkgKi8KPiAgIAkJCXBwZ3R0LT5i YXNlLnRvdGFsID0gdG9faTkxNShwcGd0dC0+YmFzZS5kZXYpLT5ndHQuYmFzZS50b3RhbDsKPgo+ ICsJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44X2xlZ2FjeV9tbV9zd2l0Y2g7Cj4gICAJCXRyYWNl X2k5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeV9hbGxvYygmcHBndHQtPmJhc2UsCj4g ICAJCQkJCQkJICAgICAgMCwgMCwKPiAgIAkJCQkJCQkgICAgICBHRU44X1BNTDRFX1NISUZUKTsK PiBAQCAtMTUzNyw4ICsxNTQzLDkgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9lbmFibGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpbnQgajsKPgo+ICAgCWZvcl9lYWNoX3Jpbmcocmlu ZywgZGV2X3ByaXYsIGopIHsKPiArCQl1MzIgZm91cl9sZXZlbCA9IFVTRVNfRlVMTF80OEJJVF9Q UEdUVChkZXYpID8gR0VOOF9HRlhfUFBHVFRfNDhCIDogMDsKPiAgIAkJSTkxNV9XUklURShSSU5H X01PREVfR0VONyhyaW5nKSwKPiAtCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9QUEdUVF9F TkFCTEUpKTsKPiArCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9QUEdUVF9FTkFCTEUgfCBm b3VyX2xldmVsKSk7Cj4gICAJfQo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5k ZXggM2E3NzY3OC4uNWJkMWI2YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC0x NjcwLDYgKzE2NzAsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgICNkZWZpbmUg ICBHRlhfUkVQTEFZX01PREUJCSgxPDwxMSkKPiAgICNkZWZpbmUgICBHRlhfUFNNSV9HUkFOVUxB UklUWQkJKDE8PDEwKQo+ICAgI2RlZmluZSAgIEdGWF9QUEdUVF9FTkFCTEUJCSgxPDw5KQo+ICsj ZGVmaW5lICAgR0VOOF9HRlhfUFBHVFRfNDhCCQkoMTw8NykKPgo+ICAgI2RlZmluZSBWTFZfRElT UExBWV9CQVNFIDB4MTgwMDAwCj4gICAjZGVmaW5lIFZMVl9NSVBJX0JBU0UgVkxWX0RJU1BMQVlf QkFTRQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggOTliYmE4ZS4uMGI2NTE4OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE5NiwxMyArMTk2LDIxIEBACj4g ICAJcmVnX3N0YXRlW0NUWF9QRFAgIyMgbiAjIyBfTERXKzFdID0gbG93ZXJfMzJfYml0cyhfYWRk cik7IFwKPiAgIH0KPgo+ICsjZGVmaW5lIEFTU0lHTl9DVFhfUE1MNChwcGd0dCwgcmVnX3N0YXRl KSB7IFwKPiArCXJlZ19zdGF0ZVtDVFhfUERQMF9VRFcgKyAxXSA9IHVwcGVyXzMyX2JpdHMocHhf ZG1hKCZwcGd0dC0+cG1sNCkpOyBcCj4gKwlyZWdfc3RhdGVbQ1RYX1BEUDBfTERXICsgMV0gPSBs b3dlcl8zMl9iaXRzKHB4X2RtYSgmcHBndHQtPnBtbDQpKTsgXAo+ICt9Cj4gKwo+ICAgZW51bSB7 Cj4gICAJQURWQU5DRURfQ09OVEVYVCA9IDAsCj4gLQlMRUdBQ1lfQ09OVEVYVCwKPiArCUxFR0FD WV8zMkJfQ09OVEVYVCwKPiAgIAlBRFZBTkNFRF9BRF9DT05URVhULAo+ICAgCUxFR0FDWV82NEJf Q09OVEVYVAo+ICAgfTsKPiAtI2RlZmluZSBHRU44X0NUWF9NT0RFX1NISUZUIDMKPiArI2RlZmlu ZSBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQgMwo+ICsjZGVmaW5lIEdFTjhfQ1RYX0FE RFJFU1NJTkdfTU9ERShkZXYpICAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikgP1wKPiArCQlM RUdBQ1lfNjRCX0NPTlRFWFQgOlwKPiArCQlMRUdBQ1lfMzJCX0NPTlRFWFQpCj4gICBlbnVtIHsK PiAgIAlGQVVMVF9BTkRfSEFORyA9IDAsCj4gICAJRkFVTFRfQU5EX0hBTFQsIC8qIERlYnVnIG9u bHkgKi8KPiBAQCAtMjczLDcgKzI4MSw3IEBAIHN0YXRpYyB1aW50NjRfdCBleGVjbGlzdHNfY3R4 X2Rlc2NyaXB0b3Ioc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgIAlXQVJOX09O KGxyY2EgJiAweEZGRkZGRkZGMDAwMDBGRkZVTEwpOwo+Cj4gICAJZGVzYyA9IEdFTjhfQ1RYX1ZB TElEOwo+IC0JZGVzYyB8PSBMRUdBQ1lfQ09OVEVYVCA8PCBHRU44X0NUWF9NT0RFX1NISUZUOwo+ ICsJZGVzYyB8PSBHRU44X0NUWF9BRERSRVNTSU5HX01PREUoZGV2KSA8PCBHRU44X0NUWF9BRERS RVNTSU5HX01PREVfU0hJRlQ7Cj4gICAJaWYgKElTX0dFTjgoY3R4X29iai0+YmFzZS5kZXYpKQo+ ICAgCQlkZXNjIHw9IEdFTjhfQ1RYX0wzTExDX0NPSEVSRU5UOwo+ICAgCWRlc2MgfD0gR0VOOF9D VFhfUFJJVklMRUdFOwo+IEBAIC0zNDgsMTAgKzM1NiwxMiBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0 c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICAgCXJl Z19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gcnEtPnRhaWw7Cj4gICAJcmVnX3N0YXRlW0NUWF9S SU5HX0JVRkZFUl9TVEFSVCsxXSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChyYl9vYmopOwo+ Cj4gLQkvKiBUcnVlIFBQR1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQ RFAgcmVnaXN0ZXJzIGFuZAo+IC0JICogcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhl IHNjcmF0Y2ggcGFnZQo+IC0JICovCj4gLQlpZiAocHBndHQpIHsKPiArCWlmIChwcGd0dCAmJiAh VVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiArCQkvKiBUcnVlIDMy YiBQUEdUVCB3aXRoIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQCj4gKwkJICog cmVnaXN0ZXJzIGFuZCBwb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byBzY3JhdGNoIHBhZ2Uu Cj4gKwkJICogUE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNvIHRoaXMgaXMg bm90IG5lZWRlZAo+ICsJCSAqIGluIDQ4LWJpdCBtb2RlLgo+ICsJCSAqLwo+ICAgCQlBU1NJR05f Q1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKPiAgIAkJQVNTSUdOX0NUWF9QRFAocHBndHQs IHJlZ19zdGF0ZSwgMik7Cj4gICAJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDEp Owo+IEBAIC0xNTEyLDEyICsxNTIyLDE1IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCSAqIElkZWFsbHksIHdlIHNo b3VsZCBzZXQgRm9yY2UgUEQgUmVzdG9yZSBpbiBjdHggZGVzY3JpcHRvciwKPiAgIAkgKiBidXQg d2UgY2FuJ3QuIEZvcmNlIFJlc3RvcmUgd291bGQgYmUgYSBzZWNvbmQgb3B0aW9uLCBidXQKPiAg IAkgKiBpdCBpcyB1bnNhZmUgaW4gY2FzZSBvZiBsaXRlLXJlc3RvcmUgKGJlY2F1c2UgdGhlIGN0 eCBpcwo+IC0JICogbm90IGlkbGUpLiAqLwo+ICsJICogbm90IGlkbGUpLiBQTUw0IGlzIGFsbG9j YXRlZCBkdXJpbmcgcHBndHQgaW5pdCBzbyB0aGlzIGlzCj4gKwkgKiBub3QgbmVlZGVkIGluIDQ4 LWJpdC4qLwo+ICAgCWlmIChyZXEtPmN0eC0+cHBndHQgJiYKPiAgIAkgICAgKGludGVsX3Jpbmdf ZmxhZyhyZXEtPnJpbmcpICYgcmVxLT5jdHgtPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpIHsKPiAt CQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHJlcSk7Cj4gLQkJaWYgKHJldCkK PiAtCQkJcmV0dXJuIHJldDsKPiArCQlpZiAoR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFKHJlcS0+ aTkxNSkgPT0gTEVHQUNZXzMyQl9DT05URVhUKSB7ClNvcnJ5IGZvciB0aGUgbGF0ZSBjb21tZW50 LgpGb3IgY29uc2lzdGVuY3ksIGJldHRlciB0byB1c2UgJ1VTRVNfRlVMTF80OEJJVF9QUEdUVCcg bWFjcm8gb25seSBoZXJlLCAKYXMgdGhhdCB3aWxsIGFsc28gaW1wbHkgdGhlIHNhbWUgdGhpbmcg aS5lLiB3aGljaCB0eXBlIG9mIENvbnRleHQgCmFkZHJlc3NpbmcgbW9kZSBpcyBiZWluZyB1c2Vk LgoKQmVzdCByZWdhcmRzCkFrYXNoCgo+ICsJCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dF9wZHBzKHJlcSk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPgo+ ICAgCQlyZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzICY9IH5pbnRlbF9yaW5nX2ZsYWco cmVxLT5yaW5nKTsKPiAgIAl9Cj4gQEAgLTIxOTgsMTMgKzIyMTEsMjQgQEAgcG9wdWxhdGVfbHJf Y29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqY3R4X28KPiAgIAlyZWdfc3RhdGVbQ1RYX1BEUDBfVURXXSA9IEdFTjhfUklOR19QRFBf VURXKHJpbmcsIDApOwo+ICAgCXJlZ19zdGF0ZVtDVFhfUERQMF9MRFddID0gR0VOOF9SSU5HX1BE UF9MRFcocmluZywgMCk7Cj4KPiAtCS8qIFdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb24sIFBE UHMgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgYXQgdGhpcyBwb2ludCwKPiAtCSAqIFBvaW50IHRoZSB1 bmFsbG9jYXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKPiAtCSAqLwo+IC0JQVNTSUdOX0NU WF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7Cj4gLQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVn X3N0YXRlLCAyKTsKPiAtCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDEpOwo+IC0J QVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7Cj4gKwlpZiAoVVNFU19GVUxMXzQ4 QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiArCQkvKiA2NGIgUFBHVFQgKDQ4Yml0IGNh bm9uaWNhbCkKPiArCQkgKiBQRFAwX0RFU0NSSVBUT1IgY29udGFpbnMgdGhlIGJhc2UgYWRkcmVz cyB0byBQTUw0IGFuZAo+ICsJCSAqIG90aGVyIFBEUCBEZXNjcmlwdG9ycyBhcmUgaWdub3JlZC4K PiArCQkgKi8KPiArCQlBU1NJR05fQ1RYX1BNTDQocHBndHQsIHJlZ19zdGF0ZSk7Cj4gKwl9IGVs c2Ugewo+ICsJCS8qIDMyYiBQUEdUVAo+ICsJCSAqIFBEUCpfREVTQ1JJUFRPUiBjb250YWlucyB0 aGUgYmFzZSBhZGRyZXNzIG9mIHNwYWNlIHN1cHBvcnRlZC4KPiArCQkgKiBXaXRoIGR5bmFtaWMg cGFnZSBhbGxvY2F0aW9uLCBQRFBzIG1heSBub3QgYmUgYWxsb2NhdGVkIGF0Cj4gKwkJICogdGhp cyBwb2ludC4gUG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2ggcGFnZQo+ ICsJCSAqLwo+ICsJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDMpOwo+ICsJCUFT U0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwo+ICsJCUFTU0lHTl9DVFhfUERQKHBw Z3R0LCByZWdfc3RhdGUsIDEpOwo+ICsJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUs IDApOwo+ICsJfQo+ICsKPiAgIAlpZiAocmluZy0+aWQgPT0gUkNTKSB7Cj4gICAJCXJlZ19zdGF0 ZVtDVFhfTFJJX0hFQURFUl8yXSA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwo+ICAgCQlyZWdf c3RhdGVbQ1RYX1JfUFdSX0NMS19TVEFURV0gPSBHRU44X1JfUFdSX0NMS19TVEFURTsKPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=