From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lis, Tomasz" Subject: Re: [PATCH v3] drm/i915/gen11: Preempt-to-idle support in execlists. Date: Mon, 21 May 2018 12:16:04 +0200 Message-ID: References: <1522163879-10837-1-git-send-email-tomasz.lis@intel.com> <1526053522-3745-1-git-send-email-tomasz.lis@intel.com> <1526053522-3745-2-git-send-email-tomasz.lis@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id B6E7A6E386 for ; Mon, 21 May 2018 10:16:07 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMDE4LTA1LTE4IDIzOjA4LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+Cj4K PiBPbiAxMS8wNS8xOCAwODo0NSwgVG9tYXN6IExpcyB3cm90ZToKPj4gVGhlIHBhdGNoIGFkZHMg c3VwcG9ydCBvZiBwcmVlbXB0LXRvLWlkbGUgcmVxdWVzdGluZyBieSBzZXR0aW5nIGEgcHJvcGVy Cj4+IGJpdCB3aXRoaW4gRXhlY2xpc3QgQ29udHJvbCBSZWdpc3RlciwgYW5kIHJlY2VpdmluZyBw cmVlbXB0aW9uIHJlc3VsdCAKPj4gZnJvbQo+PiBDb250ZXh0IFN0YXR1cyBCdWZmZXIuCj4+Cj4+ IFByZWVtcHRpb24gaW4gcHJldmlvdXMgZ2VucyByZXF1aXJlZCBhIHNwZWNpYWwgYmF0Y2ggYnVm ZmVyIHRvIGJlIAo+PiBleGVjdXRlZCwKPj4gc28gdGhlIENvbW1hbmQgU3RyZWFtZXIgbmV2ZXIg cHJlZW1wdGVkIHRvIGlkbGUgZGlyZWN0bHkuIEluIEljZWxha2UgCj4+IGl0IGlzCj4+IHBvc3Np YmxlLCBhcyB0aGVyZSBpcyBhIGhhcmR3YXJlIG1lY2hhbmlzbSB0byBpbmZvcm0gdGhlIGtlcm5l bCBhYm91dAo+PiBzdGF0dXMgb2YgdGhlIHByZWVtcHRpb24gcmVxdWVzdC4KPj4KPj4gVGhpcyBw YXRjaCBkb2VzIG5vdCBjb3ZlciB1c2luZyB0aGUgbmV3IHByZWVtcHRpb24gbWVjaGFuaXNtIHdo ZW4gR3VDIGlzCj4+IGFjdGl2ZS4KPj4KPj4gdjI6IEFkZGVkIG5lZWRzX3ByZWVtcHRfY29udGV4 dCgpIGNoYW5nZSBzbyB0aGF0IGl0IGlzIG5vdCBjcmVhdGVkIHdoZW4KPj4gwqDCoMKgwqAgcHJl ZW1wdC10by1pZGxlIGlzIHN1cHBvcnRlZC4gKENocmlzKQo+PiDCoMKgwqDCoCBVcGRhdGVkIHNl dHRpbmcgSFdBQ0sgZmxhZyBzbyB0aGF0IGl0IGlzIGNsZWFyZWQgYWZ0ZXIKPj4gwqDCoMKgwqAg cHJlZW1wdC10by1kbGUuIChDaHJpcywgRGFuaWVsZSkKPj4gwqDCoMKgwqAgVXBkYXRlZCB0byB1 c2UgSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT04gZmxhZy4gKENocmlzKQo+Pgo+PiB2MzogRml4 ZWQgbmVlZHNfcHJlZW1wdF9jb250ZXh0KCkgY2hhbmdlLiAoQ2hyaXMpCj4+IMKgwqDCoMKgIE1l cmdlZCBwcmVlbXB0aW9uIHRyaWdnZXIgZnVuY3Rpb25zIHRvIG9uZS4gKENocmlzKQo+PiDCoMKg wqDCoCBGaXhlZCBjb250ZXh0IHN0YXRlIHRvIG5vdCBhc3N1bWUgQ09NUExFVEVEX01BU0sgYWZ0 ZXIgcHJlZW1wdGlvbiwKPj4gwqDCoMKgwqAgc2luY2UgaWRsZS10by1pZGxlIGNhc2Ugd2lsbCBu b3QgaGF2ZSBpdCBzZXQuCj4+Cj4+IEJzcGVjOiAxODkyMgo+PiBTaWduZWQtb2ZmLWJ5OiBUb21h c3ogTGlzIDx0b21hc3oubGlzQGludGVsLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuY8KgIHzCoMKgIDUgKy0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICst Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmggfMKgwqAgMSAr Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jwqDCoMKgwqDCoMKgwqDCoCB8 IDExNSAKPj4gKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+PiDCoCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIDYg ZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4+Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIAo+PiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggNTdmYjNhYS4uNmU5NjQ3YiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0yNTM1LDYgKzI1MzUsOCBAQCBpbnRlbF9p bmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIAo+PiAqZGV2X3ByaXYpCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCAoKGRldl9wcml2KS0+aW5mby5oYXNfbG9naWNhbF9yaW5nX2Vsc3EpCj4+ IMKgICNkZWZpbmUgSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGRldl9wcml2KSBcCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCAoKGRldl9wcml2KS0+aW5mby5oYXNfbG9naWNhbF9yaW5nX3ByZWVt cHRpb24pCj4+ICsjZGVmaW5lIEhBU19IV19QUkVFTVBUX1RPX0lETEUoZGV2X3ByaXYpIFwKPj4g K8KgwqDCoMKgwqDCoMKgICgoZGV2X3ByaXYpLT5pbmZvLmhhc19od19wcmVlbXB0X3RvX2lkbGUp Cj4+IMKgIMKgICNkZWZpbmUgSEFTX0VYRUNMSVNUUyhkZXZfcHJpdikgSEFTX0xPR0lDQUxfUklO R19DT05URVhUUyhkZXZfcHJpdikKPj4gwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKPj4gaW5kZXggMzNmOGE0Yi4uYmRhYzEyOSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBAQCAtNDU0LDcgKzQ1NCwxMCBAQCBkZXN0 cm95X2tlcm5lbF9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IAo+PiAqKmN0eHApCj4+ IMKgIMKgIHN0YXRpYyBib29sIG5lZWRzX3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBIQVNfTE9HSUNBTF9SSU5H X1BSRUVNUFRJT04oaTkxNSk7Cj4+ICvCoMKgwqAgcmV0dXJuIEhBU19MT0dJQ0FMX1JJTkdfUFJF RU1QVElPTihpOTE1KSAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCFIQVNfSFdfUFJFRU1Q VF9UT19JRExFKGk5MTUpIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCAoSEFTX0hXX1BSRUVNUFRfVE9f SURMRShpOTE1KSAmJgo+PiArwqDCoMKgwqDCoMKgwqAgIVVTRVNfR1VDX1NVQk1JU1NJT04oaTkx NSkpKTsKPgo+IFdoeSBkbyB3ZSBrZWVwIHRoZSBwcmVlbXB0IGNvbnRleHQgZm9yICFVU0VTX0dV Q19TVUJNSVNTSU9OKGk5MTUpIGV2ZW4gCj4gaWYgSEFTX0hXX1BSRUVNUFRfVE9fSURMRShpOTE1 KT8gQWZ0ZXIgdGhpcyBwYXRjaCB3ZSBzaG91bGRuJ3QgbmVlZCBpdCAKPiBhbnltb3JlLCByaWdo dD8KVGhlIHBhdGNoIG9ubHkgcHJvdmlkZXMgZ2VuMTEgd2F5IGZvciB0aGUgbm9uLUd1QyBzdWJt aXNzaW9uLiBUaGlzIGlzIAp3aHkgdGhlIGNvbmRpdGlvbiBpcyBzbyBjb252b2x1dGVkIC0gcHJl ZW1wdF9jb250ZXh0IGlzIHN0aWxsIG5lZWRlZCBpZiAKd2UgdXNlIEd1Qy4KVGhpcyB3aWxsIGJl IHNpbXBsaWZpZWQgYWZ0ZXIgR3VDIHBhY2hlcyBhcmUgYWRkZWQuCj4KPj4gwqAgfQo+PiDCoCDC oCBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPj4gaW5kZXggNDM2NDkyMi4uNjZi NjcwMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4+IEBAIC01OTUsNyArNTk1LDgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAKPj4gaW50ZWxfY2Fubm9u bGFrZV9pbmZvID0gewo+PiDCoMKgwqDCoMKgIEdFTigxMSksIFwKPj4gwqDCoMKgwqDCoCAuZGRi X3NpemUgPSAyMDQ4LCBcCj4+IMKgwqDCoMKgwqAgLmhhc19jc3IgPSAwLCBcCj4+IC3CoMKgwqAg Lmhhc19sb2dpY2FsX3JpbmdfZWxzcSA9IDEKPj4gK8KgwqDCoCAuaGFzX2xvZ2ljYWxfcmluZ19l bHNxID0gMSwgXAo+PiArwqDCoMKgIC5oYXNfaHdfcHJlZW1wdF90b19pZGxlID0gMQo+PiDCoCDC oCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2ljZWxha2VfMTFf aW5mbyA9IHsKPj4gwqDCoMKgwqDCoCBHRU4xMV9GRUFUVVJFUywKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmggCj4+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+PiBpbmRleCA5MzNlMzE2Li40ZWI5N2I1IDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmgKPj4gQEAgLTk4 LDYgKzk4LDcgQEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7Cj4+IMKgwqDCoMKgwqAgZnVuYyhoYXNf bG9naWNhbF9yaW5nX2NvbnRleHRzKTsgXAo+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX2xvZ2ljYWxf cmluZ19lbHNxKTsgXAo+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0 aW9uKTsgXAo+PiArwqDCoMKgIGZ1bmMoaGFzX2h3X3ByZWVtcHRfdG9faWRsZSk7IFwKPj4gwqDC oMKgwqDCoCBmdW5jKGhhc19vdmVybGF5KTsgXAo+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX3Bvb2xl ZF9ldSk7IFwKPj4gwqDCoMKgwqDCoCBmdW5jKGhhc19wc3IpOyBcCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+PiBpbmRleCAyOWRjZjM0Li44ZmU2Nzk1IDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+PiBAQCAtMTU0LDYgKzE1NCw3IEBACj4+IMKgICNkZWZpbmUgR0VO OF9DVFhfU1RBVFVTX0FDVElWRV9JRExFwqDCoMKgICgxIDw8IDMpCj4+IMKgICNkZWZpbmUgR0VO OF9DVFhfU1RBVFVTX0NPTVBMRVRFwqDCoMKgICgxIDw8IDQpCj4+IMKgICNkZWZpbmUgR0VOOF9D VFhfU1RBVFVTX0xJVEVfUkVTVE9SRcKgwqDCoCAoMSA8PCAxNSkKPj4gKyNkZWZpbmUgR0VOMTFf Q1RYX1NUQVRVU19QUkVFTVBUX0lETEXCoMKgwqAgKDEgPDwgMjkpCj4+IMKgIMKgICNkZWZpbmUg R0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLIFwKPj4gwqDCoMKgwqDCoMKgIChHRU44X0NU WF9TVEFUVVNfQ09NUExFVEUgfCBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKQo+PiBAQCAtNTI2 LDMxICs1MjcsNDkgQEAgc3RhdGljIHZvaWQgcG9ydF9hc3NpZ24oc3RydWN0IGV4ZWNsaXN0X3Bv cnQgCj4+ICpwb3J0LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPj4gwqAgc3RhdGljIHZvaWQg aW5qZWN0X3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4K PiBGb3IgZ2VuMTErIHdlIGRvbid0IGluamVjdCBhIHByZWVtcHQgY29udGV4dCBhbnltb3JlLCBt YXliZSB3ZSBjYW4gCj4gcmVuYW1lIHRoaXMgZnVuY3Rpb24gdG8gc29tZXRoaW5nIGxpa2UgImlu amVjdF9wcmVlbXB0KCkiLgpNeSBpbml0aWFsIGFwcHJvYWNoIHdhcyB0byBqdXN0IGFkZCBhIHNl Y29uZCBmdW5jdGlvbi4gTWVyZ2luZyB0aGUgCmNoYW5nZXMgdG8gaW5qZWN0X3ByZWVtcHRfY29u dGV4dCgpIHdhcyByZXF1ZXN0ZWQgYnkgQ2hyaXM7IGFzIEkgCnVuZGVyc3RhbmQgaXQgaXMgdG8g bWluaW1pemUgcmVmYWN0b3JpbmcgaW4gb3RoZXIgd29yayBpbiBwcm9ncmVzcy4KPgo+PiDCoCB7 Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyA9 ICZlbmdpbmUtPmV4ZWNsaXN0czsKPj4gLcKgwqDCoCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Ug PQo+PiAtwqDCoMKgwqDCoMKgwqAgdG9faW50ZWxfY29udGV4dChlbmdpbmUtPmk5MTUtPnByZWVt cHRfY29udGV4dCwgZW5naW5lKTsKPj4gLcKgwqDCoCB1bnNpZ25lZCBpbnQgbjsKPj4gwqAgLcKg wqDCoCBHRU1fQlVHX09OKGV4ZWNsaXN0cy0+cHJlZW1wdF9jb21wbGV0ZV9zdGF0dXMgIT0KPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgIHVwcGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKSk7Cj4+IC3C oMKgwqAgR0VNX0JVR19PTigoY2UtPmxyY19yZWdfc3RhdGVbQ1RYX0NPTlRFWFRfQ09OVFJPTCAr IDFdICYKPj4gLSBfTUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JF X0lOSElCSVQgfAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9TQVZFX0lOSElCSVQpKSAhPQo+PiAtIF9NQVNLRURfQklU X0VOQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8Cj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9T QVZFX0lOSElCSVQpKTsKPj4gK8KgwqDCoCBpZiAoSEFTX0hXX1BSRUVNUFRfVE9fSURMRShlbmdp bmUtPmk5MTUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAq IElmIHdlIGhhdmUgaGFyZHdhcmUgcHJlZW1wdC10by1pZGxlLCB3ZSBkbyBub3QgbmVlZCB0bwo+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIGluamVjdCBhbnkgam9iIHRvIHRoZSBoYXJkd2FyZS4gV2Ug b25seSBzZXQgYSBmbGFnLgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKg wqAgR0VNX1RSQUNFKCIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPgo+IFRoaXMgdHJhY2UgaXMgaW4g Ym90aCBjb25kaXRpb25hbCBicmFuY2hlcywgbWlnaHQgYmUgY2xlYW5lciB0byBqdXN0IAo+IHB1 dCBpdCBiZWZvcmUgdGhlIGlmIHN0YXRlbWVudC4KVHJ1ZSwgSSBkaWQgbm90IGRpZmZlcmVudGlh dGVkIHRoZSBtZXNzYWdlcy4gV2lsbCBwdXQgYmVmb3JlLgo+Cj4+IMKgIC3CoMKgwqAgLyoKPj4g LcKgwqDCoMKgICogU3dpdGNoIHRvIG91ciBlbXB0eSBwcmVlbXB0IGNvbnRleHQgc28KPj4gLcKg wqDCoMKgICogdGhlIHN0YXRlIG9mIHRoZSBHUFUgaXMga25vd24gKGlkbGUpLgo+PiAtwqDCoMKg wqAgKi8KPj4gLcKgwqDCoCBHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+PiAtwqDC oMKgIGZvciAobiA9IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgLS1uOyApCj4+IC3C oMKgwqDCoMKgwqDCoCB3cml0ZV9kZXNjKGV4ZWNsaXN0cywgMCwgbik7Cj4+ICvCoMKgwqDCoMKg wqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGhhcmR3YXJlIHdoaWNoIEhBU19IV19QUkVF TVBUX1RPX0lETEUoKSwgYWx3YXlzIGFsc28KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBIQVNfTE9H SUNBTF9SSU5HX0VMU1EoKSwgc28gd2UgY2FuIGFzc3VtZSBjdHJsX3JlZyBpcyBzZXQKPj4gK8Kg wqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04oZXhlY2xpc3Rz LT5jdHJsX3JlZyA9PSBOVUxMKTsKPj4gwqAgLcKgwqDCoCB3cml0ZV9kZXNjKGV4ZWNsaXN0cywg Y2UtPmxyY19kZXNjLCBuKTsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIHRyaWdnZXIgcHJlZW1wdGlv biB0byBpZGxlICovCj4+ICvCoMKgwqDCoMKgwqDCoCB3cml0ZWwoRUxfQ1RSTF9QUkVFTVBUX1RP X0lETEUsIGV4ZWNsaXN0cy0+Y3RybF9yZWcpOwo+PiArwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPQo+PiArIHRvX2ludGVsX2NvbnRl eHQoZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQsIGVuZ2luZSk7Cj4+ICvCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgbjsKPj4gwqAgLcKgwqDCoCAvKiB3ZSBuZWVkIHRvIG1hbnVhbGx5 IGxvYWQgdGhlIHN1Ym1pdCBxdWV1ZSAqLwo+PiAtwqDCoMKgIGlmIChleGVjbGlzdHMtPmN0cmxf cmVnKQo+PiAtwqDCoMKgwqDCoMKgwqAgd3JpdGVsKEVMX0NUUkxfTE9BRCwgZXhlY2xpc3RzLT5j dHJsX3JlZyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKGV4ZWNsaXN0cy0+cHJlZW1w dF9jb21wbGV0ZV9zdGF0dXMgIT0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXBw ZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2MpKTsKPj4gK8KgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04o KGNlLT5scmNfcmVnX3N0YXRlW0NUWF9DT05URVhUX0NPTlRST0wgKyAxXSAmCj4+ICsgX01BU0tF RF9CSVRfRU5BQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUIHwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDVFhfQ1RSTF9FTkdJTkVf Q1RYX1NBVkVfSU5ISUJJVCkpICE9Cj4+ICsgX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJMX0VO R0lORV9DVFhfUkVTVE9SRV9JTkhJQklUIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1NBVkVfSU5ISUJJVCkpOwo+PiAr Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIFN3aXRjaCB0byBv dXIgZW1wdHkgcHJlZW1wdCBjb250ZXh0IHNvCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogdGhlIHN0 YXRlIG9mIHRoZSBHUFUgaXMga25vd24gKGlkbGUpLgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+ PiArwqDCoMKgwqDCoMKgwqAgR0VNX1RSQUNFKCIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPj4gK8Kg wqDCoMKgwqDCoMKgIGZvciAobiA9IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgLS1u OyApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlX2Rlc2MoZXhlY2xpc3RzLCAwLCBu KTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGVfZGVzYyhleGVjbGlzdHMsIGNlLT5scmNf ZGVzYywgbik7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIHdlIG5lZWQgdG8gbWFudWFsbHkg bG9hZCB0aGUgc3VibWl0IHF1ZXVlICovCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZXhlY2xpc3Rz LT5jdHJsX3JlZykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsKEVMX0NUUkxfTE9B RCwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Cj4+ICvCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIGV4 ZWNsaXN0c19jbGVhcl9hY3RpdmUoJmVuZ2luZS0+ZXhlY2xpc3RzLCAKPj4gRVhFQ0xJU1RTX0FD VElWRV9IV0FDSyk7Cj4+IMKgwqDCoMKgwqAgZXhlY2xpc3RzX3NldF9hY3RpdmUoJmVuZ2luZS0+ ZXhlY2xpc3RzLCAKPj4gRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKTsKPj4gQEAgLTEwNDUsMjIg KzEwNjQsNTEgQEAgc3RhdGljIHZvaWQgCj4+IGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyBkYXRhKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdGF0dXMsIGJ1ZlsyKmhlYWQgKyAxXSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZXhlY2xpc3RzLT5hY3RpdmUpOwo+PiDCoCAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoc3RhdHVzICYgKEdFTjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSB8Cj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOOF9DVFhfU1RBVFVT X1BSRUVNUFRFRCkpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhlY2xpc3Rz X3NldF9hY3RpdmUoZXhlY2xpc3RzLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZF X0lETEUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBDaGVjayBpZiBwcmVlbXB0ZWQgZnJvbSBpZGxlIHRvIGlkbGUgZGlyZWN0bHku Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUaGUgU1RBVFVTX0lETEVfQUNUSVZFIGZs YWcgaXMgdXNlZCB0byBtYXJrCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzdWNoIHRy YW5zaXRpb24uCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWYgKChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpICYm Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3RhdHVzICYgR0VOMTFfQ1RY X1NUQVRVU19QUkVFTVBUX0lETEUpKSB7Cj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBF WEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKPgo+IEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0sgc2hvdWxk IGJlIGFscmVhZHkgY2xlYXIgaGVyZSAod2UgY2xlYXIgaXQgYm90aCAKPiB3aGVuIHdlIGluamVj dCB0aGUgcHJlLWVtcHRpb24gYW5kIG9uIHRoZSBwcmV2aW91cyBBLT5JIENTQiBldmVudCksIHNv IAo+IHRoZXJlIHNob3VsZCBiZSBubyBuZWVkIHRvIGNsZWFyIGl0LgpUaGlzIGlzIGEgY29tcGxl eCBjYXNlOyBvcHRpbWl6YXRpb25zIGhlcmUgbWF5IGxlYWQgdG8gZXJyb3JzIGxhdGVyLgpCdXQg SSBhZ3JlZSAtIHNpbmNlIHRoaXMgYmxvY2sgaXMgb25seSBlbnRlcmVkIG9uIGlkbGUtdG8taWRs ZSAKcHJlZW1wdGlvbiwgYW5kIHNldHRpbmcgdGhlIGZsYWcgY2FuIG9ubHkgaGFwcGVuIHdoZW4g aGFyZHdhcmUgaXMgbm90IAppZGxlLCB3ZSBzaG91bGQgbmV2ZXIgc2VlIHRoZSBBQ1RJVkVfSFdB Q0sgZmxhZyBzZXQgaGVyZS4KSSB3aWxsIGNoYW5nZSBpdCB0byBHRU1fQlVHX09OKCksIHVubGVz cyBJIHdpbGwgZ2V0IGFueSBlcnJvcnMgaW4gCnRlc3RpbmcgdGhhdC4KCj4KPj4gwqAgLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRF RF9NQVNLKSkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBXZSBjb3VsZCBub3QgaGF2ZSBDT01QTEVURUQgYW55dGhpbmcKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaWYgd2Ugd2VyZSBpZGxlIGJlZm9y ZSBwcmVlbXB0aW9uLgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKHN0YXR1cyAmIEdFTjhf Q1RYX1NUQVRVU19DT01QTEVURURfTUFTSyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlIHsKPgo+IG5pdHBpY2s6IGZvcm1h dHRpbmcgaXMgd3JvbmcgaGVyZS4KYWNrLgo+Cj4gRGFuaWVsZQo+Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXR1cyAmIChHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJ VkUgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBleGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhlY2xpc3RzX2NsZWFyX2FjdGl2 ZShleGVjbGlzdHMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4+IMKgIC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdlIHNob3VsZCBuZXZlciBnZXQgYSBDT01QTEVURUQgfCBJ RExFX0FDVElWRSEgKi8KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VNX0JVR19PTihzdGF0 dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmICghKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19DT01QTEVURURfTUFT SykpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsK Pj4gwqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRV U19DT01QTEVURSAmJgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1ZlsyKmhl YWQgKyAxXSA9PSAKPj4gZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cykgewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIFdlIHNob3VsZCBuZXZlciBnZXQgYQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBDT01QTEVURUQgfCBJRExFX0FDVElWRSEKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgR0VNX0JVR19PTihzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIENoZWNrIGlmIHByZWVtcHRlZCB0 byByZWFsIGlkbGUsIGVpdGhlciBkaXJlY3RseSBvcgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogdGhlIHByZWVtcHRpdmUgY29udGV4dCBhbHJlYWR5IGZpbmlzaGVkIGV4ZWN1dGluZwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmICgoc3RhdHVzICYgR0VOMTFfQ1RYX1NUQVRVU19QUkVFTVBUX0lETEUpIHx8Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19DT01Q TEVURSAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1ZlsyKmhlYWQgKyAx XSA9PSAKPj4gZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cykpIHsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU1fVFJBQ0UoIiVzIHByZWVtcHQtaWRsZVxu IiwgZW5naW5lLT5uYW1lKTsKPj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKPj4gQEAgLTIyMTcs NyArMjI2NSw4IEBAIHN0YXRpYyB2b2lkIAo+PiBleGVjbGlzdHNfc2V0X2RlZmF1bHRfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+IMKgwqDCoMKgwqAgZW5naW5l LT51bnBhcmsgPSBOVUxMOwo+PiDCoCDCoMKgwqDCoMKgIGVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9F TkdJTkVfU1VQUE9SVFNfU1RBVFM7Cj4+IC3CoMKgwqAgaWYgKGVuZ2luZS0+aTkxNS0+cHJlZW1w dF9jb250ZXh0KQo+PiArwqDCoMKgIGlmIChlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCB8 fAo+PiArwqDCoMKgwqDCoMKgwqAgSEFTX0hXX1BSRUVNUFRfVE9fSURMRShlbmdpbmUtPmk5MTUp KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNf UFJFRU1QVElPTjsKPj4gwqAgwqDCoMKgwqDCoCBlbmdpbmUtPmk5MTUtPmNhcHMuc2NoZWR1bGVy ID0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+IGluZGV4IDRlYzdkOGQuLmIxMDgz YWMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+IEBAIC00NSw2ICs0NSw3IEBA Cj4+IMKgICNkZWZpbmUgUklOR19FWEVDTElTVF9TUV9DT05URU5UUyhlbmdpbmUpIF9NTUlPKChl bmdpbmUpLT5tbWlvX2Jhc2UgCj4+ICsgMHg1MTApCj4+IMKgICNkZWZpbmUgUklOR19FWEVDTElT VF9DT05UUk9MKGVuZ2luZSkgX01NSU8oKGVuZ2luZSktPm1taW9fYmFzZSArIAo+PiAweDU1MCkK Pj4gwqAgI2RlZmluZcKgwqDCoMKgwqAgRUxfQ1RSTF9MT0FEwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgxIDw8IDApCj4+ICsjZGVmaW5lwqDCoMKgwqDCoCBFTF9DVFJMX1BSRUVNUFRf VE9fSURMRcKgwqDCoMKgwqDCoMKgICgxIDw8IDEpCj4+IMKgIMKgIC8qIFRoZSBkb2NzIHNwZWNp ZnkgdGhhdCB0aGUgd3JpdGUgcG9pbnRlciB3cmFwcyBhcm91bmQgYWZ0ZXIgNWgsIAo+PiAiQWZ0 ZXIgc3RhdHVzCj4+IMKgwqAgKiBpcyB3cml0dGVuIG91dCB0byB0aGUgbGFzdCBhdmFpbGFibGUg c3RhdHVzIFFXIGF0IG9mZnNldCA1aCwgCj4+IHRoaXMgcG9pbnRlcgo+PgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==