From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915/execlists: Enable coarse preemption boundaries for gen8 Date: Fri, 5 Apr 2019 10:46:19 +0100 Message-ID: References: <20190329134024.5254-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id F34506E02B for ; Fri, 5 Apr 2019 09:46:21 +0000 (UTC) In-Reply-To: <20190329134024.5254-1-chris@chris-wilson.co.uk> 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: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI5LzAzLzIwMTkgMTM6NDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXaGVuIHdlIGludHJv ZHVjZWQgcHJlZW1wdGlvbiwgd2UgY2hvc2UgdG8ga2VlcCBpdCBkaXNhYmxlZCBmb3IgZ2VuOCBh cwo+IHN1cHBvcnRpbmcgcHJlZW1wdGlvbiBpbnNpZGUgR1BHUFUgdXNlciBiYXRjaGVzIHJlcXVp cmVkIHZhcmlvdXMgdy9hIGluCj4gdXNlcnNwYWNlLiBTaW5jZSB0aGVuLCB0aGUgZGVzaXJlIHRv IHByZWVtcHQgbG9uZyBxdWV1ZXMgb2YgcmVxdWVzdHMKPiBiZXR3ZWVuIGJhdGNoZXMgKGUuZy4g d2l0aGluIGJ1c3l3YWl0aW5nIHNlbWFwaG9yZXMpIGhhcyBncm93bi4gU28gYWxsb3cKPiBhcmJp dHJhdGlvbiB3aXRoaW4gdGhlIGJ1c3l3YWl0cyBhbmQgYmV0d2VlbiByZXF1ZXN0cywgYnV0IGRp c2FibGUKPiBhcmJpdHJhdGlvbiB3aXRoaW4gdXNlciBiYXRjaGVzIHNvIHRoYXQgd2UgY2FuIHBy ZWVtcHQgYmV0d2VlbiByZXF1ZXN0cwo+IGFuZCBub3QgcmlzayBicmVha2luZyBHUEdQVS4KPiAK PiBIb3dldmVyLCBzaW5jZSB0aGlzIHByZWVtcHRpb24gaXMgbXVjaCBjb2Fyc2VyIGFuZCBkb2Vz bid0IGludGVyZmVyZQo+IHdpdGggdXNlcnNwYWNlLCB3ZSBkZWNsaW5lIHRvIGluY2x1ZGUgaXQg YW1vbmdzdCB0aGUgc2NoZWR1bGVyCj4gY2FwYWJpbGl0aWVzLiAoVGhpcyBpcyBhbHNvIHJlcXVp cmVkIGZvciB1cyB0byBza2lwIG92ZXIgdGhlIHByZWVtcHRpb24KPiBzZWxmdGVzdHMgdGhhdCBl eHBlY3QgdG8gYmUgYWJsZSB0byBwcmVlbXB0IHVzZXIgYmF0Y2hlcy4pCj4gCj4gVGVzdGNhc2U6 IGlndC9nZW1fZXhlY19zY2hlZHVsZXIvc2VtYXBob3JlLXVzZXIKPiBSZWZlcmVuY2VzOiBiZWVj ZWM5MDE3OTAgKCJkcm0vaTkxNS9leGVjbGlzdHM6IFByZWVtcHRpb24hIikKPiBGaXhlczogZTg4 NjE5NjQ2OTcxICgiZHJtL2k5MTU6IFVzZSBIVyBzZW1hcGhvcmVzIGZvciBpbnRlci1lbmdpbmUg c3luY2hyb25pc2F0aW9uIG9uIGdlbjgrIikKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogTWljaGFsIFdpbmlhcnNraSA8bWljaGFs LndpbmlhcnNraUBpbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAg ICAgICAgICB8ICA0OSArKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF9scmMuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrKysKPiAgIDMgZmlsZXMgY2hhbmdl ZCwgMjE3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA2NjJkYTQ4NWUxNWYuLjkyOTkzZGIzOGFh ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNTYy LDcgKzU2Miw3IEBAIHN0YXRpYyB2b2lkIGluaXRfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICAKPiAgIHN0YXRpYyBib29sIG5lZWRzX3ByZWVtcHRfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCXJldHVybiBIQVNfTE9HSUNB TF9SSU5HX1BSRUVNUFRJT04oaTkxNSk7Cj4gKwlyZXR1cm4gSEFTX0VYRUNMSVNUUyhpOTE1KTsK PiAgIH0KPiAgIAo+ICAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYmVj MjMyYWNjOGQ3Li5iMzgwNjg4YTBjMWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IEBAIC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICB7Cj4gICAJaW50IGxhc3RfcHJp bzsKPiAgIAo+IC0JaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZW5naW5lKSkKPiAr CWlmICghZW5naW5lLT5wcmVlbXB0X2NvbnRleHQpCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+ ICAgCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKPiBAQCAtMjAzNSw3ICsyMDM1LDcg QEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4gICB7Cj4gICAJdTMyICpjczsKPiAgIAo+IC0JY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA2 KTsKPiArCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7Cj4gICAJaWYgKElTX0VSUihjcykp Cj4gICAJCXJldHVybiBQVFJfRVJSKGNzKTsKPiAgIAo+IEBAIC0yMDQ2LDE2ICsyMDQ2LDM1IEBA IHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ ICAgCSAqIHBhcnRpY3VsYXIgYWxsIHRoZSBnZW4gdGhhdCBkbyBub3QgbmVlZCB0aGUgdy9hIGF0 IGFsbCEpLCBpZiB3ZQo+ICAgCSAqIHRvb2sgY2FyZSB0byBtYWtlIHN1cmUgdGhhdCBvbiBldmVy eSBzd2l0Y2ggaW50byB0aGlzIGNvbnRleHQKPiAgIAkgKiAoYm90aCBvcmRpbmFyeSBhbmQgZm9y IHByZWVtcHRpb24pIHRoYXQgYXJiaXRyYXJ0aW9uIHdhcyBlbmFibGVkCj4gLQkgKiB3ZSB3b3Vs ZCBiZSBmaW5lLiBIb3dldmVyLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBkb3duc2lkZSB0 bwo+IC0JICogYmVpbmcgcGFyYW5vaWQgYW5kIG1ha2luZyBzdXJlIGl0IGlzIHNldCBiZWZvcmUg ZWFjaCBiYXRjaCBhbmQKPiAtCSAqIGV2ZXJ5IGNvbnRleHQtc3dpdGNoLgo+IC0JICoKPiAtCSAq IE5vdGUgdGhhdCBpZiB3ZSBmYWlsIHRvIGVuYWJsZSBhcmJpdHJhdGlvbiBiZWZvcmUgdGhlIHJl cXVlc3QKPiAtCSAqIGlzIGNvbXBsZXRlLCB0aGVuIHdlIGRvIG5vdCBzZWUgdGhlIGNvbnRleHQt c3dpdGNoIGludGVycnVwdCBhbmQKPiAtCSAqIHRoZSBlbmdpbmUgaGFuZ3MgKHdpdGggUklOR19I RUFEID09IFJJTkdfVEFJTCkuCj4gLQkgKgo+IC0JICogVGhhdCBzYXRpc2ZpZXMgYm90aCB0aGUg R1BHUFUgdy9hIGFuZCBvdXIgaGVhdnktaGFuZGVkIHBhcmFub2lhLgo+ICsJICogd2Ugd291bGQg YmUgZmluZS4gIEhvd2V2ZXIsIGZvciBnZW44IHRoZXJlIGlzIGFub3RoZXIgdy9hIHRoYXQKPiAr CSAqIHJlcXVpcmVzIHVzIHRvIG5vdCBwcmVlbXB0IGluc2lkZSBHUEdQVSBleGVjdXRpb24sIHNv IHdlIGtlZXAKPiArCSAqIGFyYml0cmF0aW9uIGRpc2FibGVkIGZvciBnZW44IGJhdGNoZXMuIEFy Yml0cmF0aW9uIHdpbGwgYmUKPiArCSAqIHJlLWVuYWJsZWQgYmVmb3JlIHdlIGNsb3NlIHRoZSBy ZXF1ZXN0Cj4gKwkgKiAoZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYikuCj4gICAJICovCj4g KwkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKPiArCj4gKwkvKiBGSVhN RShCRFcpOiBBZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCj4gKwkqY3Mr KyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKPiArCQkoZmxhZ3MgJiBJOTE1X0RJU1BB VENIX1NFQ1VSRSA/IDAgOiBCSVQoOCkpOwo+ICsJKmNzKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNl dCk7Cj4gKwkqY3MrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKPiArCj4gKwlpbnRlbF9yaW5n X2FkdmFuY2UocnEsIGNzKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBnZW45X2VtaXRfYmJfc3RhcnQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gKwkJCSAgICAg IHU2NCBvZmZzZXQsIHUzMiBsZW4sCj4gKwkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBmbGFn cykKPiArewo+ICsJdTMyICpjczsKPiArCj4gKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDYp Owo+ICsJaWYgKElTX0VSUihjcykpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+ICsKPiAgIAkq Y3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwo+ICAgCj4gICAJLyogRklYTUUo QkRXKTogQWRkcmVzcyBzcGFjZSBhbmQgc2VjdXJpdHkgc2VsZWN0b3JzLiAqLwoKVGhpcyBjb21t ZW50IGNhbiBub3cgYmUgcmVtb3ZlZC4KCj4gQEAgLTIzMTYsNyArMjMzNSw4IEBAIHZvaWQgaW50 ZWxfZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfU1VQUE9SVFNfU1RB VFM7Cj4gICAJaWYgKCFpbnRlbF92Z3B1X2FjdGl2ZShlbmdpbmUtPmk5MTUpKQo+ICAgCQllbmdp bmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19TRU1BUEhPUkVTOwo+IC0JaWYgKGVuZ2luZS0+ cHJlZW1wdF9jb250ZXh0KQo+ICsJaWYgKGVuZ2luZS0+cHJlZW1wdF9jb250ZXh0ICYmCj4gKwkg ICAgSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGVuZ2luZS0+aTkxNSkpCj4gICAJCWVuZ2lu ZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT047Cj4gICB9Cj4gICAKPiBAQCAt MjM1MCw3ICsyMzcwLDEwIEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCSAqIHVudGlsIGEgbW9yZSByZWZpbmVkIHNvbHV0 aW9uIGV4aXN0cy4KPiAgIAkJICovCj4gICAJfQo+IC0JZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0g Z2VuOF9lbWl0X2JiX3N0YXJ0Owo+ICsJaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDgpKQo+ICsJ CWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1pdF9iYl9zdGFydDsKPiArCWVsc2UKPiAr CQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBnZW45X2VtaXRfYmJfc3RhcnQ7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyBpbmxpbmUgdm9pZAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfbHJjLmMKPiBpbmRleCAwZDNjYWU1NjRkYjguLjhiY2Q0ZTFkNThlZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiBAQCAtNzYsNiArNzYs MTg1IEBAIHN0YXRpYyBpbnQgbGl2ZV9zYW5pdHljaGVjayh2b2lkICphcmcpCj4gICAJcmV0dXJu IGVycjsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IGxpdmVfYnVzeXdhaXRfcHJlZW1wdCh2b2lk ICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICsJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eF9oaSwgKmN0eF9sbzsKPiArCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlpbnQgZXJyID0gLUVOT01FTTsKPiArCXUz MiAqbWFwOwo+ICsKPiArCS8qCj4gKwkgKiBWZXJpZnkgdGhhdCBldmVuIHdpdGhvdXQgSEFTX0xP R0lDQUxfUklOR19QUkVFTVBUSU9OLCB3ZSBjYW4KPiArCSAqIHByZWVtcHQgdGhlIGJ1c3l3YWl0 cyB1c2VkIHRvIHN5bmNocm9uaXNlIGJldHdlZW4gcmluZ3MuCj4gKwkgKi8KPiArCj4gKwltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKPiArCj4gKwljdHhfaGkgPSBrZXJuZWxfY29udGV4dChpOTE1KTsK PiArCWlmICghY3R4X2hpKQo+ICsJCWdvdG8gZXJyX3VubG9jazsKPiArCWN0eF9oaS0+c2NoZWQu cHJpb3JpdHkgPSBJTlRfTUFYOwo+ICsKPiArCWN0eF9sbyA9IGtlcm5lbF9jb250ZXh0KGk5MTUp Owo+ICsJaWYgKCFjdHhfbG8pCj4gKwkJZ290byBlcnJfY3R4X2hpOwo+ICsJY3R4X2xvLT5zY2hl ZC5wcmlvcml0eSA9IElOVF9NSU47Cj4gKwo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOwo+ICsJaWYgKElTX0VSUihvYmopKSB7Cj4gKwkJ ZXJyID0gUFRSX0VSUihvYmopOwo+ICsJCWdvdG8gZXJyX2N0eF9sbzsKPiArCX0KPiArCj4gKwlt YXAgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dDKTsKPiArCWlmIChJ U19FUlIobWFwKSkgewo+ICsJCWVyciA9IFBUUl9FUlIobWFwKTsKPiArCQlnb3RvIGVycl9vYmo7 Cj4gKwl9Cj4gKwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC52 bSwgMCk7Cj4gKwlpZiAoSVNfRVJSKHZtYSkpIHsKPiArCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4g KwkJZ290byBlcnJfbWFwOwo+ICsJfQo+ICsKPiArCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAs IDAsIFBJTl9HTE9CQUwpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl9tYXA7Cj4gKwo+ICsJ Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpsbywgKmhpOwo+ICsJCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gKwkJdTMyICpjczsK PiArCj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlpZiAoaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19m dW5jX18sIGVuZ2luZS0+bmFtZSkpIHsKPiArCQkJZXJyID0gLUVJTzsKPiArCQkJZ290byBlcnJf dm1hOwo+ICsJCX0KPiArCj4gKwkJLyoKPiArCQkgKiBXZSBjcmVhdGUgdHdvIHJlcXVlc3RzLiBU aGUgbG93IHByaW9yaXR5IHJlcXVlc3QKPiArCQkgKiBidXN5d2FpdHMgb24gYSBzZW1hcGhvcmUg KGluc2lkZSB0aGUgcmluZ2J1ZmZlciB3aGVyZQo+ICsJCSAqIGlzIHNob3VsZCBiZSBwcmVlbXB0 aWJsZSkgYW5kIHRoZSBoaWdoIHByaW9yaXR5IHJlcXVlc3RzCj4gKwkJICogdXNlcyBhIE1JX1NU T1JFX0RXT1JEX0lNTSB0byB1cGRhdGUgdGhlIHNlbWFwaG9yZSB2YWx1ZQo+ICsJCSAqIGFsbG93 aW5nIHRoZSBmaXJzdCByZXF1ZXN0IHRvIGNvbXBsZXRlLiBJZiBwcmVlbXB0aW9uCj4gKwkJICog ZmFpbHMsIHdlIGhhbmcgaW5zdGVhZC4KPiArCQkgKi8KPiArCj4gKwkJbG8gPSBpOTE1X3JlcXVl c3RfYWxsb2MoZW5naW5lLCBjdHhfbG8pOwo+ICsJCWlmIChJU19FUlIobG8pKSB7Cj4gKwkJCWVy ciA9IFBUUl9FUlIobG8pOwo+ICsJCQlnb3RvIGVycl92bWE7Cj4gKwkJfQo+ICsKPiArCQljcyA9 IGludGVsX3JpbmdfYmVnaW4obG8sIDgpOwo+ICsJCWlmIChJU19FUlIoY3MpKSB7Cj4gKwkJCWVy ciA9IFBUUl9FUlIoY3MpOwo+ICsJCQlpOTE1X3JlcXVlc3RfYWRkKGxvKTsKPiArCQkJZ290byBl cnJfdm1hOwo+ICsJCX0KPiArCj4gKwkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8 IE1JX1VTRV9HR1RUOwo+ICsJCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwo+ICsJCSpj cysrID0gMDsKPiArCQkqY3MrKyA9IDE7Cj4gKwo+ICsJCS8qIFhYWCBEbyB3ZSBuZWVkIGEgZmx1 c2ggKyBpbnZhbGlkYXRlIGhlcmU/ICovCj4gKwo+ICsJCSpjcysrID0gTUlfU0VNQVBIT1JFX1dB SVQgfAo+ICsJCQlNSV9TRU1BUEhPUkVfR0xPQkFMX0dUVCB8Cj4gKwkJCU1JX1NFTUFQSE9SRV9Q T0xMIHwKPiArCQkJTUlfU0VNQVBIT1JFX1NBRF9FUV9TREQ7Cj4gKwkJKmNzKysgPSAwOwo+ICsJ CSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwo+ICsJCSpjcysrID0gMDsKPiArCj4gKwkJ aW50ZWxfcmluZ19hZHZhbmNlKGxvLCBjcyk7Cj4gKwkJaTkxNV9yZXF1ZXN0X2FkZChsbyk7Cj4g Kwo+ICsJCWlmICh3YWl0X2ZvcihSRUFEX09OQ0UoKm1hcCksIDEwKSkgewo+ICsJCQllcnIgPSAt RVRJTUVET1VUOwo+ICsJCQlnb3RvIGVycl92bWE7Cj4gKwkJfQo+ICsKPiArCQkvKiBMb3cgcHJp b3JpdHkgcmVxdWVzdCBzaG91bGQgYmUgYnVzeXdhaXRpbmcgbm93ICovCj4gKwkJaWYgKGk5MTVf cmVxdWVzdF93YWl0KGxvLCBJOTE1X1dBSVRfTE9DS0VELCAxKSAhPSAtRVRJTUUpIHsKPiArCQkJ cHJfZXJyKCIlczogQnVzeXdhaXRpbmcgcmVxdWVzdCBkaWQgbm90IVxuIiwKPiArCQkJICAgICAg IGVuZ2luZS0+bmFtZSk7Cj4gKwkJCWVyciA9IC1FSU87Cj4gKwkJCWdvdG8gZXJyX3ZtYTsKPiAr CQl9Cj4gKwo+ICsJCWhpID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4X2hpKTsKPiAr CQlpZiAoSVNfRVJSKGhpKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKGhpKTsKPiArCQkJZ290byBl cnJfdm1hOwoKQ291bGQgcmVsZWFzZSB0aGUgc3Bpbm5lciB3aXRoIGEgQ1BVIHdyaXRlIGZyb20g aGVyZSBvbndhcmRzIGJ1dCBJIGd1ZXNzIAppdCBkb2Vzbid0IG1hdHRlci4KCj4gKwkJfQo+ICsK PiArCQljcyA9IGludGVsX3JpbmdfYmVnaW4oaGksIDQpOwo+ICsJCWlmIChJU19FUlIoY3MpKSB7 Cj4gKwkJCWVyciA9IFBUUl9FUlIoY3MpOwo+ICsJCQlpOTE1X3JlcXVlc3RfYWRkKGhpKTsKPiAr CQkJZ290byBlcnJfdm1hOwo+ICsJCX0KPiArCj4gKwkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9J TU1fR0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEp Owo+ICsJCSpjcysrID0gMDsKPiArCQkqY3MrKyA9IDA7Cj4gKwo+ICsJCWludGVsX3JpbmdfYWR2 YW5jZShoaSwgY3MpOwo+ICsJCWk5MTVfcmVxdWVzdF9hZGQoaGkpOwo+ICsKPiArCQlpZiAoaTkx NV9yZXF1ZXN0X3dhaXQobG8sIEk5MTVfV0FJVF9MT0NLRUQsIEhaIC8gNSkgPCAwKSB7Cj4gKwkJ CXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2luZm9fcHJpbnRlcihpOTE1LT5kcm0uZGV2KTsK PiArCj4gKwkJCXByX2VycigiJXM6IEZhaWxlZCB0byBwcmVlbXB0IHNlbWFwaG9yZSBidXN5d2Fp dCFcbiIsCj4gKwkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+ICsKPiArCQkJaW50ZWxfZW5naW5l X2R1bXAoZW5naW5lLCAmcCwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICsJCQlHRU1fVFJBQ0Vf RFVNUCgpOwo+ICsKPiArCQkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKPiArCQkJZXJyID0g LUVJTzsKPiArCQkJZ290byBlcnJfdm1hOwo+ICsJCX0KPiArCQlHRU1fQlVHX09OKFJFQURfT05D RSgqbWFwKSk7Cj4gKwo+ICsJCWlmIChpZ3RfbGl2ZV90ZXN0X2VuZCgmdCkpIHsKPiArCQkJZXJy ID0gLUVJTzsKPiArCQkJZ290byBlcnJfdm1hOwo+ICsJCX0KPiArCX0KPiArCj4gKwllcnIgPSAw Owo+ICtlcnJfdm1hOgo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiArZXJyX21hcDoKPiArCWk5 MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKPiArZXJyX29iajoKPiArCWk5MTVfZ2VtX29i amVjdF9wdXQob2JqKTsKPiArZXJyX2N0eF9sbzoKPiArCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0 eF9sbyk7Cj4gK2Vycl9jdHhfaGk6Cj4gKwlrZXJuZWxfY29udGV4dF9jbG9zZShjdHhfaGkpOwo+ ICtlcnJfdW5sb2NrOgo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NL RUQpKQo+ICsJCWVyciA9IC1FSU87Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlyZXR1 cm4gZXJyOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBsaXZlX3ByZWVtcHQodm9pZCAqYXJnKQo+ ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+IEBAIC0xMTI3 LDYgKzEzMDYsNyBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9zdWJ0ZXN0IHRlc3RzW10gPSB7Cj4gICAJCVNVQlRFU1QobGl2ZV9zYW5pdHljaGVjayksCj4g KwkJU1VCVEVTVChsaXZlX2J1c3l3YWl0X3ByZWVtcHQpLAo+ICAgCQlTVUJURVNUKGxpdmVfcHJl ZW1wdCksCj4gICAJCVNVQlRFU1QobGl2ZV9sYXRlX3ByZWVtcHQpLAo+ICAgCQlTVUJURVNUKGxp dmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KSwKPiAKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=