From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915/tgl: Extend MI_SEMAPHORE_WAIT Date: Tue, 17 Sep 2019 16:17:58 +0300 Message-ID: <87pnjzqcxl.fsf@gaia.fi.intel.com> References: <20190913174824.15906-1-chris@chris-wilson.co.uk> <20190917123055.28965-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 504926EC66 for ; Tue, 17 Sep 2019 13:18:19 +0000 (UTC) In-Reply-To: <20190917123055.28965-1-chris@chris-wilson.co.uk> 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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gT24gVGln ZXJsYWtlLCBNSV9TRU1BUEhPUkVfV0FJVCBncmV3IGFuIGV4dHJhIGR3b3JkLCBzbyBiZSBzdXJl IHRvCj4gdXBkYXRlIHRoZSBsZW5ndGggZmllbGQgYW5kIGVtaXQgdGhhdCBleHRyYSBwYXJhbWV0 ZXIgYW5kIGFueSBwYWRkaW5nCj4gbm9vcCBhcyByZXF1aXJlZC4KPgo+IHYyOiBEZWZpbmUgdGhl IHRva2VuIHNoaWZ0IHdoaWxlIHdlIGFyZSBhZGRpbmcgdGhlIHVwZGF0ZWQgTUlfU0VNQVBIT1JF X1dBSVQKPiB2MzogVXNlIGludCBpbnN0ZWFkIG9mIGJvb2wgaW4gdGhlIGFkZGl0aW9uIHNvIHRo YXQgcmVhZGVycyBhcmUgbm90IGxlZnQKPiB3b25kZXJpbmcgYWJvdXQgdGhlIGludHJpY2FjaWVz IG9mIHRoZSBDIHNwZWMuIE5vdyB0aGV5IGp1c3QgaGF2ZSB0bwo+IHdvcnJ5IHdoYXQgdGhlIGlu dGVnZXIgdmFsdWUgb2YgYSBib29sZWFuIG9wZXJhdGlvbiBpcy4uLgo+Cj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBEYW5pZWxlIENlcmFv bG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IENjOiBNaWNoYWwg V2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBNaWth IEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oIHwgIDMgKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICB8IDcxICsrKysrKysrKysrKysr KysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAgICAgIHwg IDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICB8IDIx ICsrKystLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9j b21tYW5kcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgK PiBpbmRleCBmYmFkNDAzYWI3YWMuLmY3OGIxM2Q3NGUxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oCj4gQEAgLTExMiw2ICsxMTIsNyBAQAo+ ICAjZGVmaW5lIE1JX1NFTUFQSE9SRV9TSUdOQUwJTUlfSU5TVFIoMHgxYiwgMCkgLyogR0VOOCsg Ki8KPiAgI2RlZmluZSAgIE1JX1NFTUFQSE9SRV9UQVJHRVQoZW5naW5lKQkoKGVuZ2luZSk8PDE1 KQo+ICAjZGVmaW5lIE1JX1NFTUFQSE9SRV9XQUlUCU1JX0lOU1RSKDB4MWMsIDIpIC8qIEdFTjgr ICovCj4gKyNkZWZpbmUgTUlfU0VNQVBIT1JFX1dBSVRfVE9LRU4JTUlfSU5TVFIoMHgxYywgMykg LyogR0VOMTIrICovCj4gICNkZWZpbmUgICBNSV9TRU1BUEhPUkVfUE9MTAkJKDEgPDwgMTUpCj4g ICNkZWZpbmUgICBNSV9TRU1BUEhPUkVfU0FEX0dUX1NERAkoMCA8PCAxMikKPiAgI2RlZmluZSAg IE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERAkoMSA8PCAxMikKPiBAQCAtMTE5LDYgKzEyMCw4IEBA Cj4gICNkZWZpbmUgICBNSV9TRU1BUEhPUkVfU0FEX0xURV9TREQJKDMgPDwgMTIpCj4gICNkZWZp bmUgICBNSV9TRU1BUEhPUkVfU0FEX0VRX1NERAkoNCA8PCAxMikKPiAgI2RlZmluZSAgIE1JX1NF TUFQSE9SRV9TQURfTkVRX1NERAkoNSA8PCAxMikKPiArI2RlZmluZSAgIE1JX1NFTUFQSE9SRV9U T0tFTl9NQVNLCVJFR19HRU5NQVNLKDksIDUpCj4gKyNkZWZpbmUgICBNSV9TRU1BUEhPUkVfVE9L RU5fU0hJRlQJNQo+ICAjZGVmaW5lIE1JX1NUT1JFX0RXT1JEX0lNTQlNSV9JTlNUUigweDIwLCAx KQo+ICAjZGVmaW5lIE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40CU1JX0lOU1RSKDB4MjAsIDIpCj4g ICNkZWZpbmUgICBNSV9NRU1fVklSVFVBTAkoMSA8PCAyMikgLyogOTQ1LGczMyw5NjUgKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IGEzZjBlNDk5OTc0NC4uYTk5MTY2 YTJkMmViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMjg3OSw2 ICsyODc5LDIyIEBAIHN0YXRpYyB1MzIgKmdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJfcmNzKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCj4gIAlyZXR1cm4gZ2VuOF9lbWl0 X2ZpbmlfYnJlYWRjcnVtYl9mb290ZXIocmVxdWVzdCwgY3MpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg dTMyICoKPiArZ2VuMTFfZW1pdF9maW5pX2JyZWFkY3J1bWJfcmNzKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJlcXVlc3QsIHUzMiAqY3MpCj4gK3sKPiArCWNzID0gZ2VuOF9lbWl0X2dndHRfd3JpdGVf cmNzKGNzLAo+ICsJCQkJICAgICAgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8sCj4gKwkJCQkgICAgICBy ZXF1ZXN0LT50aW1lbGluZS0+aHdzcF9vZmZzZXQsCj4gKwkJCQkgICAgICBQSVBFX0NPTlRST0xf Q1NfU1RBTEwgfAo+ICsJCQkJICAgICAgUElQRV9DT05UUk9MX1RJTEVfQ0FDSEVfRkxVU0ggfAo+ ICsJCQkJICAgICAgUElQRV9DT05UUk9MX1JFTkRFUl9UQVJHRVRfQ0FDSEVfRkxVU0ggfAo+ICsJ CQkJICAgICAgUElQRV9DT05UUk9MX0RFUFRIX0NBQ0hFX0ZMVVNIIHwKPiArCQkJCSAgICAgIFBJ UEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEUgfAo+ICsJCQkJICAgICAgUElQRV9DT05UUk9MX0ZM VVNIX0VOQUJMRSk7Cj4gKwo+ICsJcmV0dXJuIGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJfZm9v dGVyKHJlcXVlc3QsIGNzKTsKPiArfQo+ICsKPiAgLyoKPiAgICogTm90ZSB0aGF0IHRoZSBDUyBp bnN0cnVjdGlvbiBwcmUtcGFyc2VyIHdpbGwgbm90IHN0YWxsIG9uIHRoZSBicmVhZGNydW1iCj4g ICAqIGZsdXNoIGFuZCB3aWxsIGNvbnRpbnVlIHByZS1mZXRjaGluZyB0aGUgaW5zdHJ1Y3Rpb25z IGFmdGVyIGl0IGJlZm9yZSB0aGUKPiBAQCAtMjg5Nyw4ICsyOTEzLDQ5IEBAIHN0YXRpYyB1MzIg KmdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJfcmNzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVl c3QsIHUzMiAqY3MpCj4gICAqIEFsbCB0aGUgYWJvdmUgYXBwbGllcyBvbmx5IHRvIHRoZSBpbnN0 cnVjdGlvbnMgdGhlbXNlbHZlcy4gTm9uLWlubGluZSBkYXRhCj4gICAqIHVzZWQgYnkgdGhlIGlu c3RydWN0aW9ucyBpcyBub3QgcHJlLWZldGNoZWQuCj4gICAqLwo+IC1zdGF0aWMgdTMyICpnZW4x MV9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwK PiAtCQkJCQkgICB1MzIgKmNzKQo+ICsKPiArc3RhdGljIHUzMiAqZ2VuMTJfZW1pdF9wcmVlbXB0 X2J1c3l3YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCj4gK3sKPiAr CSpjcysrID0gTUlfU0VNQVBIT1JFX1dBSVRfVE9LRU4gfAo+ICsJCU1JX1NFTUFQSE9SRV9HTE9C QUxfR1RUIHwKPiArCQlNSV9TRU1BUEhPUkVfUE9MTCB8Cj4gKwkJTUlfU0VNQVBIT1JFX1NBRF9F UV9TREQ7Cj4gKwkqY3MrKyA9IDA7Cj4gKwkqY3MrKyA9IGludGVsX2h3c19wcmVlbXB0X2FkZHJl c3MocmVxdWVzdC0+ZW5naW5lKTsKPiArCSpjcysrID0gMDsKPiArCSpjcysrID0gMDsKPiArCSpj cysrID0gTUlfTk9PUDsKPiArCj4gKwlyZXR1cm4gY3M7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2Fs d2F5c19pbmxpbmUgdTMyKgo+ICtnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9mb290ZXIoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKPiArewo+ICsJKmNzKysgPSBNSV9V U0VSX0lOVEVSUlVQVDsKPiArCj4gKwkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5B QkxFOwo+ICsJaWYgKGludGVsX2VuZ2luZV9oYXNfc2VtYXBob3JlcyhyZXF1ZXN0LT5lbmdpbmUp KQo+ICsJCWNzID0gZ2VuMTJfZW1pdF9wcmVlbXB0X2J1c3l3YWl0KHJlcXVlc3QsIGNzKTsKPiAr Cj4gKwlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdCwgY3MpOwo+ICsJ YXNzZXJ0X3JpbmdfdGFpbF92YWxpZChyZXF1ZXN0LT5yaW5nLCByZXF1ZXN0LT50YWlsKTsKPiAr Cj4gKwlyZXR1cm4gZ2VuOF9lbWl0X3dhX3RhaWwocmVxdWVzdCwgY3MpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdTMyICpnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICt7Cj4gKwljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRlKGNz LAo+ICsJCQkJICByZXF1ZXN0LT5mZW5jZS5zZXFubywKPiArCQkJCSAgcmVxdWVzdC0+dGltZWxp bmUtPmh3c3Bfb2Zmc2V0LAo+ICsJCQkJICAwKTsKPiArCj4gKwlyZXR1cm4gZ2VuMTJfZW1pdF9m aW5pX2JyZWFkY3J1bWJfZm9vdGVyKHJlcXVlc3QsIGNzKTsKPiArfQo+ICsKPiArc3RhdGljIHUz MiAqCj4gK2dlbjEyX2VtaXRfZmluaV9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICB7Cj4gIAljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRlX3Jj cyhjcywKPiAgCQkJCSAgICAgIHJlcXVlc3QtPmZlbmNlLnNlcW5vLAo+IEBAIC0yOTEwLDcgKzI5 NjcsNyBAQCBzdGF0aWMgdTMyICpnZW4xMV9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3Moc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiAgCQkJCSAgICAgIFBJUEVfQ09OVFJPTF9EQ19GTFVT SF9FTkFCTEUgfAo+ICAJCQkJICAgICAgUElQRV9DT05UUk9MX0ZMVVNIX0VOQUJMRSk7Cj4gIAo+ IC0JcmV0dXJuIGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJfZm9vdGVyKHJlcXVlc3QsIGNzKTsK PiArCXJldHVybiBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9mb290ZXIocmVxdWVzdCwgY3Mp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcGFyayhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gQEAgLTI5MzksOSArMjk5Niw2IEBAIHZvaWQgaW50ZWxfZXhlY2xp c3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAJCQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOwo+ICAJ fQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikgLyogWFhYIGRpc2Fi bGVkIGZvciBkZWJ1Z2dpbmcgKi8KPiAtCQllbmdpbmUtPmZsYWdzICY9IH5JOTE1X0VOR0lORV9I QVNfU0VNQVBIT1JFUzsKPiAtCj4gIAlpZiAoZW5naW5lLT5jbGFzcyAhPSBDT1BZX0VOR0lORV9D TEFTUyAmJiBJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKPiAgCQllbmdpbmUtPmZsYWdz IHw9IEk5MTVfRU5HSU5FX0hBU19SRUxBVElWRV9NTUlPOwo+ICB9Cj4gQEAgLTI5NzEsNiArMzAy NSw4IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7Cj4gIAll bmdpbmUtPmVtaXRfaW5pdF9icmVhZGNydW1iID0gZ2VuOF9lbWl0X2luaXRfYnJlYWRjcnVtYjsK PiAgCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW44X2VtaXRfZmluaV9icmVhZGNy dW1iOwo+ICsJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQo+ICsJCWVuZ2luZS0+ ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYjsKPiAgCj4g IAllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBpbnRlbF9leGVjbGlzdHNfc2V0X2Rl ZmF1bHRfc3VibWlzc2lvbjsKPiAgCj4gQEAgLTMwMTYsNiArMzA3Miw5IEBAIHN0YXRpYyB2b2lk IHJjc19zdWJtaXNzaW9uX292ZXJyaWRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgewo+ICAJc3dpdGNoIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewo+ICAJY2FzZSAxMjoK PiArCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW4xMV9lbWl0X2ZsdXNoX3JlbmRlcjsKPiArCQll bmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2JyZWFkY3J1bWJf cmNzOwo+ICsJCWJyZWFrOwo+ICAJY2FzZSAxMToKPiAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBn ZW4xMV9lbWl0X2ZsdXNoX3JlbmRlcjsKPiAgCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1i ID0gZ2VuMTFfZW1pdF9maW5pX2JyZWFkY3J1bWJfcmNzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku Ywo+IGluZGV4IGU0YTI2YmJkODc4OC4uZmU2OTQxYzhmYzk5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BjaS5jCj4gQEAgLTc5Nyw3ICs3OTcsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2RldmljZV9pbmZvIGludGVsX3RpZ2VybGFrZV8xMl9pbmZvID0gewo+ICAJLmRpc3BsYXkuaGFz X21vZHVsYXJfZmlhID0gMSwKPiAgCS5lbmdpbmVfbWFzayA9Cj4gIAkJQklUKFJDUzApIHwgQklU KEJDUzApIHwgQklUKFZFQ1MwKSB8IEJJVChWQ1MwKSB8IEJJVChWQ1MyKSwKPiAtCS5oYXNfbG9n aWNhbF9yaW5nX3ByZWVtcHRpb24gPSBmYWxzZSwgLyogWFhYIGRpc2FibGVkIGZvciBkZWJ1Z2dp bmcgKi8KPiAgCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSwgLyogWFhYIHJlZHVjZWQgZm9yIGRl YnVnZ2luZyAqLwo+ICB9Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGlu ZGV4IDc1NGE3ODM2NGE2My4uM2VjZjkyYWE1ZmMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMKPiBAQCAtNzgzLDcgKzc4Myw5IEBAIGVtaXRfc2VtYXBob3JlX3dhaXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqdG8sCj4gIAkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20s Cj4gIAkJICAgIGdmcF90IGdmcCkKPiAgewo+ICsJY29uc3QgaW50IGhhc190b2tlbiA9IElOVEVM X0dFTih0by0+aTkxNSkgPj0gMTI7Cj4gIAl1MzIgaHdzcF9vZmZzZXQ7Cj4gKwlpbnQgbGVuOwo+ ICAJdTMyICpjczsKPiAgCWludCBlcnI7Cj4gIAo+IEBAIC04MTAsNyArODEyLDExIEBAIGVtaXRf c2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCj4gIAlpZiAoZXJyKQo+ICAJ CXJldHVybiBlcnI7Cj4gIAo+IC0JY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHRvLCA0KTsKPiArCWxl biA9IDQ7Cj4gKwlpZiAoaGFzX3Rva2VuKQo+ICsJCWxlbiArPSAyOwo+ICsKPiArCWNzID0gaW50 ZWxfcmluZ19iZWdpbih0bywgbGVuKTsKPiAgCWlmIChJU19FUlIoY3MpKQo+ICAJCXJldHVybiBQ VFJfRVJSKGNzKTsKPiAgCj4gQEAgLTgyMiwxMyArODI4LDE4IEBAIGVtaXRfc2VtYXBob3JlX3dh aXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCj4gIAkgKiAocG9zdC13cmFwKSB2YWx1ZXMgdGhh biB0aGV5IHdlcmUgZXhwZWN0aW5nIChhbmQgc28gd2FpdAo+ICAJICogZm9yZXZlcikuCj4gIAkg Ki8KPiAtCSpjcysrID0gTUlfU0VNQVBIT1JFX1dBSVQgfAo+IC0JCU1JX1NFTUFQSE9SRV9HTE9C QUxfR1RUIHwKPiAtCQlNSV9TRU1BUEhPUkVfUE9MTCB8Cj4gLQkJTUlfU0VNQVBIT1JFX1NBRF9H VEVfU0REOwo+ICsJKmNzKysgPSAoTUlfU0VNQVBIT1JFX1dBSVQgfAo+ICsJCSBNSV9TRU1BUEhP UkVfR0xPQkFMX0dUVCB8Cj4gKwkJIE1JX1NFTUFQSE9SRV9QT0xMIHwKPiArCQkgTUlfU0VNQVBI T1JFX1NBRF9HVEVfU0REKSArCj4gKwkJaGFzX3Rva2VuOwo+ICAJKmNzKysgPSBmcm9tLT5mZW5j ZS5zZXFubzsKPiAgCSpjcysrID0gaHdzcF9vZmZzZXQ7Cj4gIAkqY3MrKyA9IDA7Cj4gKwlpZiAo aGFzX3Rva2VuKSB7Cj4gKwkJKmNzKysgPSAwOwo+ICsJCSpjcysrID0gTUlfTk9PUDsKPiArCX0K PiAgCj4gIAlpbnRlbF9yaW5nX2FkdmFuY2UodG8sIGNzKTsKPiAgCXRvLT5zY2hlZC5zZW1hcGhv cmVzIHw9IGZyb20tPmVuZ2luZS0+bWFzazsKPiAtLSAKPiAyLjIzLjAKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4