From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/8] drm/i915/execlists: Suppress preempting self Date: Tue, 29 Jan 2019 10:13:47 +0000 Message-ID: <82eaa68d-3055-979d-010c-5570b1e2b0d0@linux.intel.com> References: <20190129085824.12620-1-chris@chris-wilson.co.uk> <20190129085824.12620-2-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 58F686E7CC for ; Tue, 29 Jan 2019 10:13:50 +0000 (UTC) In-Reply-To: <20190129085824.12620-2-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 Ck9uIDI5LzAxLzIwMTkgMDg6NTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiBvcmRlciB0byBh dm9pZCBwcmVlbXB0aW5nIG91cnNlbHZlcywgd2UgY3VycmVudGx5IHJlZnVzZSB0byBzY2hlZHVs ZQo+IHRoZSB0YXNrbGV0IGlmIHdlIHJlc2NoZWR1bGUgYW4gaW5mbGlnaHQgY29udGV4dC4gSG93 ZXZlciwgdGhpcyBnbG9zc2VzCj4gb3ZlciBhIGZldyBpc3N1ZXMgc3VjaCBhcyB3aGF0IGhhcHBl bnMgYWZ0ZXIgYSBDUyBjb21wbGV0aW9uIGV2ZW50IGFuZAo+IHdlIHRoZW4gcHJlZW1wdCB0aGUg bmV3bHkgZXhlY3V0aW5nIGNvbnRleHQgd2l0aCBpdHNlbGYsIG9yIGlmIHNvbWV0aGluZwo+IGVs c2UgY2F1c2VzIGEgdGFza2xldF9zY2hlZHVsZSB0cmlnZ2VyaW5nIHRoZSBzYW1lIGV2YWx1YXRp b24gdG8KPiBwcmVlbXB0IHRoZSBhY3RpdmUgY29udGV4dCB3aXRoIGl0c2VsZi4KPiAKPiBIb3dl dmVyLCB3aGVuIHdlIGF2b2lkIHByZWVtcHRpbmcgRUxTUFswXSwgd2Ugc3RpbGwgcmV0YWluIHRo ZSBwcmVlbXB0aW9uCj4gdmFsdWUgYXMgaXQgbWF5IG1hdGNoIGEgc2Vjb25kIHByZWVtcHRpb24g cmVxdWVzdCB3aXRoaW4gdGhlIHNhbWUgdGltZSBwZXJpb2QKPiB0aGF0IHdlIG5lZWQgdG8gcmVz b2x2ZSBhZnRlciB0aGUgbmV4dCBDUyBldmVudC4gSG93ZXZlciwgc2luY2Ugd2Ugb25seQo+IHN0 b3JlIHRoZSBtYXhpbXVtIHByZWVtcHRpb24gcHJpb3JpdHkgc2VlbiwgaXQgbWF5IG5vdCBtYXRj aCB0aGUKPiBzdWJzZXF1ZW50IGV2ZW50IGFuZCBzbyB3ZSBzaG91bGQgZG91YmxlIGNoZWNrIHdo ZXRoZXIgb3Igbm90IHdlCj4gYWN0dWFsbHkgZG8gbmVlZCB0byB0cmlnZ2VyIGEgcHJlZW1wdC10 by1pZGxlIGJ5IGNvbXBhcmluZyB0aGUgdG9wCj4gcHJpb3JpdGllcyBmcm9tIGVhY2ggcXVldWUu IExhdGVyLCB0aGlzIGdpdmVzIHVzIGEgaG9vayBmb3IgZmluZXIKPiBjb250cm9sIG92ZXIgZGVj aWRpbmcgd2hldGhlciB0aGUgcHJlZW1wdC10by1pZGxlIGlzIGp1c3RpZmllZC4KPiAKPiBUaGUg c2VxdWVuY2Ugb2YgZXZlbnRzIHdoZXJlIHdlIGVuZCB1cCBwcmVlbXB0aW5nIGZvciBubyBhdmFp bCBpczoKPiAKPiAxLiBRdWV1ZSByZXF1ZXN0cy9jb250ZXh0cyBBLCBCCj4gMi4gUHJpb3JpdHkg Ym9vc3QgQTsgbm8gcHJlZW1wdGlvbiBhcyBpdCBpcyBleGVjdXRpbmcsIGJ1dCBrZWVwIGhpbnQK PiAzLiBBZnRlciBDUyBzd2l0Y2gsIEIgaXMgbGVzcyB0aGFuIGhpbnQsIGZvcmNlIHByZWVtcHQt dG8taWRsZQo+IDQuIFJlc3VibWl0IEIgYWZ0ZXIgaWRsaW5nCj4gCj4gdjI6IFdlIGNhbiBzaW1w bGlmeSBhIGJ1bmNoIG9mIHRlc3RzIGJhc2VkIG9uIHRoZSBrbm93bGVkZ2UgdGhhdCBQSSB3aWxs Cj4gZW5zdXJlIHRoYXQgZWFybGllciByZXF1ZXN0cyBhbG9uZyB0aGUgc2FtZSBjb250ZXh0IHdp bGwgaGF2ZSB0aGUgaGlnaGVzdAo+IHByaW9yaXR5Lgo+IHYzOiBEZW1vbnN0cmF0ZSB0aGUgc3Rh bGUgcHJlZW1wdGlvbiBoaW50IHdpdGggYSBzZWxmdGVzdAo+IAo+IFJlZmVyZW5jZXM6IGEyYmY5 MmU4Y2MxNiAoImRybS9pOTE1L2V4ZWNsaXN0czogQXZvaWQga2lja2luZyBwcmlvcml0eSBvbiB0 aGUgY3VycmVudCBjb250ZXh0IikKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVy LmMgICAgICAgfCAgMjAgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3Vi bWlzc2lvbi5jIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAg ICAgICAgICAgfCAgOTYgKysrKysrKysrKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX2xyYy5jICB8IDEzOCArKysrKysrKysrKysrKysrKysrKwo+ICAgNSBmaWxl cyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gaW5kZXggMGRhNzE4Y2VhYjQzLi43ZGIxMjU1 NjY1YTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiBAQCAtMjM4 LDYgKzIzOCwxOCBAQCBzY2hlZF9sb2NrX2VuZ2luZShzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpu b2RlLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpsb2NrZWQpCj4gICAJcmV0dXJuIGVuZ2luZTsK PiAgIH0KPiAgIAo+ICtzdGF0aWMgYm9vbCBpbmZsaWdodChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiArewo+ICsJY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqYWN0aXZlOwo+ICsKPiArCWlmICgh cnEtPmdsb2JhbF9zZXFubykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJYWN0aXZlID0gcG9y dF9yZXF1ZXN0KGVuZ2luZS0+ZXhlY2xpc3RzLnBvcnQpOwo+ICsJcmV0dXJuIGFjdGl2ZS0+aHdf Y29udGV4dCA9PSBycS0+aHdfY29udGV4dDsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIF9faTkx NV9zY2hlZHVsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgIAkJCSAgICBjb25zdCBzdHJ1 Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKQo+ICAgewo+IEBAIC0zMjcsNiArMzM5LDcgQEAgc3Rh dGljIHZvaWQgX19pOTE1X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAgCQlJ TklUX0xJU1RfSEVBRCgmZGVwLT5kZnNfbGluayk7Cj4gICAKPiAgIAkJZW5naW5lID0gc2NoZWRf bG9ja19lbmdpbmUobm9kZSwgZW5naW5lKTsKPiArCQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdp bmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCj4gICAJCS8qIFJlY2hlY2sgYWZ0ZXIgYWNxdWlyaW5n IHRoZSBlbmdpbmUtPnRpbWVsaW5lLmxvY2sgKi8KPiAgIAkJaWYgKHByaW8gPD0gbm9kZS0+YXR0 ci5wcmlvcml0eSB8fCBub2RlX3NpZ25hbGVkKG5vZGUpKQo+IEBAIC0zNTUsMTcgKzM2OCwxNiBA QCBzdGF0aWMgdm9pZCBfX2k5MTVfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4g ICAJCWlmIChwcmlvIDw9IGVuZ2luZS0+ZXhlY2xpc3RzLnByZWVtcHRfcHJpb3JpdHlfaGludCkK PiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJZW5naW5lLT5leGVjbGlzdHMucHJlZW1wdF9wcmlv cml0eV9oaW50ID0gcHJpbzsKPiArCj4gICAJCS8qCj4gICAJCSAqIElmIHdlIGFyZSBhbHJlYWR5 IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvbnRleHQsIGRvbid0Cj4gICAJCSAqIGJvdGhlciBl dmFsdWF0aW5nIGlmIHdlIHNob3VsZCBwcmVlbXB0IG91cnNlbHZlcy4KPiAgIAkJICovCj4gLQkJ aWYgKG5vZGVfdG9fcmVxdWVzdChub2RlKS0+Z2xvYmFsX3NlcW5vICYmCj4gLQkJICAgIGk5MTVf c2Vxbm9fcGFzc2VkKHBvcnRfcmVxdWVzdChlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KS0+Z2xvYmFs X3NlcW5vLAo+IC0JCQkJICAgICAgbm9kZV90b19yZXF1ZXN0KG5vZGUpLT5nbG9iYWxfc2Vxbm8p KQo+ICsJCWlmIChpbmZsaWdodChub2RlX3RvX3JlcXVlc3Qobm9kZSksIGVuZ2luZSkpCj4gICAJ CQljb250aW51ZTsKPiAgIAo+ICAgCQkvKiBEZWZlciAodGFza2xldCkgc3VibWlzc2lvbiB1bnRp bCBhZnRlciBhbGwgb2Ygb3VyIHVwZGF0ZXMuICovCj4gLQkJZW5naW5lLT5leGVjbGlzdHMucHJl ZW1wdF9wcmlvcml0eV9oaW50ID0gcHJpbzsKPiAgIAkJdGFza2xldF9oaV9zY2hlZHVsZSgmZW5n aW5lLT5leGVjbGlzdHMudGFza2xldCk7Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggNmNkZDNmMDk3MjA5Li41NWVjMTIy ZWU5ZTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1p c3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKPiBAQCAtNjI5LDYgKzYyOSw4IEBAIHN0YXRpYyB2b2lkIGluamVjdF9wcmVlbXB0X2NvbnRl eHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCQkJCSAgICAgICBFWEVDTElTVFNfQUNU SVZFX1BSRUVNUFQpOwo+ICAgCQl0YXNrbGV0X3NjaGVkdWxlKCZlbmdpbmUtPmV4ZWNsaXN0cy50 YXNrbGV0KTsKPiAgIAl9Cj4gKwo+ICsJKHZvaWQpSTkxNV9TRUxGVEVTVF9PTkxZKGVuZ2luZS0+ ZXhlY2xpc3RzLnByZWVtcHRfaGFuZy5jb3VudCsrKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDkyMTllZmE0ZWU3OS4uYjhjZGRlZjVhZWQ4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTg4LDEzICsxODgsOTAgQEAgc3Rh dGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAg IAlyZXR1cm4gcnEtPnNjaGVkLmF0dHIucHJpb3JpdHk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlu dCBxdWV1ZV9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlz dHMpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+ICsJc3RydWN0IHJiX25vZGUg KnJiOwo+ICsKPiArCXJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVlKTsKPiAr CWlmICghcmIpCj4gKwkJcmV0dXJuIElOVF9NSU47Cj4gKwo+ICsJLyoKPiArCSAqIEFzIHRoZSBw cmlvbGlzdFtdIGFyZSBpbnZlcnRlZCwgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSBpbiBbMF0s Cj4gKwkgKiB3ZSBoYXZlIHRvIGZsaXAgdGhlIGluZGV4IHZhbHVlIHRvIGJlY29tZSBwcmlvcml0 eS4KPiArCSAqLwo+ICsJcCA9IHRvX3ByaW9saXN0KHJiKTsKPiArCXJldHVybiAoKHAtPnByaW9y aXR5ICsgMSkgPDwgSTkxNV9VU0VSX1BSSU9SSVRZX1NISUZUKSAtIGZmcyhwLT51c2VkKTsKCldo ZXJlIGRvZXMgdGhlICsxIGNvbWUgZnJvbT8KCnAtPnByaW9yaXR5IHN0b3JlcyBpbiB0aGUgdXNl ciByYW5nZS4gU28gSSBleHBlY3RlZCBzb21ldGhpbmcgbGlrZToKCgkocC0+cHJpb3JpdHkgPDwg U0hJRlQpICsgKENPVU5UIC0gZmZzKQoKT2sgaXQncyB0aGUgc2FtZSB0aGluZy4uIG15IGFsZ2Vi cmEgaXMgYmV5b25kIHJ1c3R5LiA6KQoKPiArfQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBu ZWVkX3ByZWVtcHQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCQkJ Y29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCwKPiAtCQkJCWludCBwcmlvKQo+ICsJCQkJ Y29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCWNvbnN0IGludCBsYXN0X3By aW8gPSBycV9wcmlvKHJxKTsKPiArCj4gKwlpZiAoIWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlv bihlbmdpbmUpKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoaTkxNV9yZXF1ZXN0X2Nv bXBsZXRlZChycSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBDaGVjayBp ZiB0aGUgY3VycmVudCBwcmlvcml0eSBoaW50IG1lcml0cyBhIHByZWVtcHRpb24gYXR0ZW1wdC4K PiArCSAqCj4gKwkgKiBXZSByZWNvcmQgdGhlIGhpZ2hlc3QgdmFsdWUgcHJpb3JpdHkgd2Ugc2F3 IGR1cmluZyByZXNjaGVkdWxpbmcKPiArCSAqIHByaW9yIHRvIHRoaXMgZGVxdWV1ZSwgdGhlcmVm b3JlIHdlIGtub3cgdGhhdCBpZiBpdCBpcyBzdHJpY3RseQo+ICsJICogbGVzcyB0aGFuIHRoZSBj dXJyZW50IHRhaWwgb2YgRVNMUFswXSwgd2UgZG8gbm90IG5lZWQgdG8gZm9yY2UKPiArCSAqIGEg cHJlZW1wdC10by1pZGxlIGN5Y2xlLgo+ICsJICoKPiArCSAqIEhvd2V2ZXIsIHRoZSBwcmlvcml0 eSBoaW50IGlzIGEgbWVyZSBoaW50IHRoYXQgd2UgbWF5IG5lZWQgdG8KPiArCSAqIHByZWVtcHQu IElmIHRoYXQgaGludCBpcyBzdGFsZSBvciB3ZSBtYXkgYmUgdHJ5aW5nIHRvIHByZWVtcHQKPiAr CSAqIG91cnNlbHZlcywgaWdub3JlIHRoZSByZXF1ZXN0Lgo+ICsJICovCj4gKwlpZiAoIV9fZXhl Y2xpc3RzX25lZWRfcHJlZW1wdChlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X3ByaW9yaXR5X2hp bnQsCj4gKwkJCQkgICAgICBsYXN0X3ByaW8pKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwkv Kgo+ICsJICogQ2hlY2sgYWdhaW5zdCB0aGUgZmlyc3QgcmVxdWVzdCBpbiBFTFNQWzFdLCBpdCB3 aWxsLCB0aGFua3MgdG8gdGhlCj4gKwkgKiBwb3dlciBvZiBQSSwgYmUgdGhlIGhpZ2hlc3QgcHJp b3JpdHkgb2YgdGhhdCBjb250ZXh0Lgo+ICsJICovCj4gKwlpZiAoIWxpc3RfaXNfbGFzdCgmcnEt PmxpbmssICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzKSAmJgo+ICsJICAgIHJxX3ByaW8obGlz dF9uZXh0X2VudHJ5KHJxLCBsaW5rKSkgPiBsYXN0X3ByaW8pCj4gKwkJcmV0dXJuIHRydWU7Cj4g Kwo+ICsJLyoKPiArCSAqIElmIHRoZSBpbmZsaWdodCBjb250ZXh0IGRpZCBub3QgdHJpZ2dlciB0 aGUgcHJlZW1wdGlvbiwgdGhlbiBtYXliZQo+ICsJICogaXQgd2FzIHRoZSBzZXQgb2YgcXVldWVk IHJlcXVlc3RzPyBQaWNrIHRoZSBoaWdoZXN0IHByaW9yaXR5IGluCj4gKwkgKiB0aGUgcXVldWUg KHRoZSBmaXJzdCBhY3RpdmUgcHJpb2xpc3QpIGFuZCBzZWUgaWYgaXQgZGVzZXJ2ZXMgdG8gYmUK PiArCSAqIHJ1bm5pbmcgaW5zdGVhZCBvZiBFTFNQWzBdLgo+ICsJICoKPiArCSAqIFRoZSBoaWdo ZXN0IHByaW9yaXR5IHJlcXVlc3QgaW4gdGhlIHF1ZXVlIGNhbiBub3QgYmUgZWl0aGVyCj4gKwkg KiBFTFNQWzBdIG9yIEVMU1BbMV0gYXMsIHRoYW5rcyBhZ2FpbiB0byBQSSwgaWYgaXQgd2FzIHRo ZSBzYW1lCj4gKwkgKiBjb250ZXh0LCBpdCdzIHByaW9yaXR5IHdvdWxkIG5vdCBleGNlZWQgRUxT UFswXSBha2EgbGFzdF9wcmlvLgo+ICsJICovCj4gKwlyZXR1cm4gcXVldWVfcHJpbygmZW5naW5l LT5leGVjbGlzdHMpID4gbGFzdF9wcmlvOwo+ICt9Cj4gKwo+ICtfX21heWJlX3VudXNlZCBzdGF0 aWMgaW5saW5lIGJvb2wKPiArYXNzZXJ0X3ByaW9yaXR5X3F1ZXVlKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMsCj4gKwkJICAgICAgY29uc3Qgc3RydWN0IGk5 MTVfcmVxdWVzdCAqcHJldiwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpu ZXh0KQo+ICAgewo+IC0JcmV0dXJuIChpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZW5naW5l KSAmJgo+IC0JCV9fZXhlY2xpc3RzX25lZWRfcHJlZW1wdChwcmlvLCBycV9wcmlvKGxhc3QpKSAm Jgo+IC0JCSFpOTE1X3JlcXVlc3RfY29tcGxldGVkKGxhc3QpKTsKPiArCWlmICghcHJldikKPiAr CQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwkvKgo+ICsJICogV2l0aG91dCBwcmVlbXB0aW9uLCB0aGUg cHJldiBtYXkgcmVmZXIgdG8gdGhlIHN0aWxsIGFjdGl2ZSBlbGVtZW50Cj4gKwkgKiB3aGljaCB3 ZSByZWZ1c2UgdG8gbGV0IGdvLgo+ICsJICoKPiArCSAqIEV2ZW4gd2l0aCBwcmVlbXB0aW9uLCB0 aGVyZSBhcmUgdGltZXMgd2hlbiB3ZSB0aGluayBpdCBpcyBiZXR0ZXIgbm90Cj4gKwkgKiB0byBw cmVlbXB0IGFuZCBsZWF2ZSBhbiBvc3RlbnNpYmx5IGxvd2VyIHByaW9yaXR5IHJlcXVlc3QgaW4g ZmxpZ2h0Lgo+ICsJICovCj4gKwlpZiAocG9ydF9yZXF1ZXN0KGV4ZWNsaXN0cy0+cG9ydCkgPT0g cHJldikKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gcnFfcHJpbyhwcmV2KSA+PSBy cV9wcmlvKG5leHQpOwo+ICAgfQo+ICAgCj4gICAvKgo+IEBAIC01MjMsNiArNjAwLDggQEAgc3Rh dGljIHZvaWQgaW5qZWN0X3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAKPiAgIAlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJ U1RTX0FDVElWRV9IV0FDSyk7Cj4gICAJZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLCBF WEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpOwo+ICsKPiArCSh2b2lkKUk5MTVfU0VMRlRFU1RfT05M WShleGVjbGlzdHMtPnByZWVtcHRfaGFuZy5jb3VudCsrKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IHZvaWQgY29tcGxldGVfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xp c3RzICpleGVjbGlzdHMpCj4gQEAgLTU5MSw3ICs2NzAsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlz dHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCWlmICghZXhl Y2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spKQo+ICAg CQkJcmV0dXJuOwo+ICAgCj4gLQkJaWYgKG5lZWRfcHJlZW1wdChlbmdpbmUsIGxhc3QsIGV4ZWNs aXN0cy0+cHJlZW1wdF9wcmlvcml0eV9oaW50KSkgewo+ICsJCWlmIChuZWVkX3ByZWVtcHQoZW5n aW5lLCBsYXN0KSkgewo+ICAgCQkJaW5qZWN0X3ByZWVtcHRfY29udGV4dChlbmdpbmUpOwo+ICAg CQkJcmV0dXJuOwo+ICAgCQl9Cj4gQEAgLTYzNyw4ICs3MTYsNyBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCWludCBp Owo+ICAgCj4gICAJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHAs IGkpIHsKPiAtCQkJR0VNX0JVR19PTihsYXN0ICYmCj4gLQkJCQkgICBuZWVkX3ByZWVtcHQoZW5n aW5lLCBsYXN0LCBycV9wcmlvKHJxKSkpOwo+ICsJCQlHRU1fQlVHX09OKCFhc3NlcnRfcHJpb3Jp dHlfcXVldWUoZXhlY2xpc3RzLCBsYXN0LCBycSkpOwo+ICAgCj4gICAJCQkvKgo+ICAgCQkJICog Q2FuIHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGN1cnJlbnQgcG9ydD8KPiBAQCAt ODg0LDYgKzk2Miw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3NiKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAljb25zdCB1MzIgKiBjb25zdCBidWYgPSBleGVjbGlzdHMtPmNz Yl9zdGF0dXM7Cj4gICAJdTggaGVhZCwgdGFpbDsKPiAgIAo+ICsJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiArCj4gICAJLyoKPiAgIAkgKiBOb3RlIHRoYXQg Y3NiX3dyaXRlLCBjc2Jfc3RhdHVzIG1heSBiZSBlaXRoZXIgaW4gSFdTUCBvciBtbWlvLgo+ICAg CSAqIFdoZW4gcmVhZGluZyBmcm9tIHRoZSBjc2Jfd3JpdGUgbW1pbyByZWdpc3Rlciwgd2UgaGF2 ZSB0byBiZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA1 ZTIyMzFkMGMyZmEuLjVjZTU0ZjIzYTk0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKPiBAQCAtMjAzLDYgKzIwMyw3IEBAIHN0cnVjdCBpOTE1X3ByaW9saXN0 IHsKPiAgIAo+ICAgc3RydWN0IHN0X3ByZWVtcHRfaGFuZyB7Cj4gICAJc3RydWN0IGNvbXBsZXRp b24gY29tcGxldGlvbjsKPiArCXVuc2lnbmVkIGludCBjb3VudDsKPiAgIAlib29sIGluamVjdF9o YW5nOwo+ICAgfTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bHJjLmMKPiBpbmRleCAyYjJlY2Q3NmMyYWMuLjU4ZjUzNGEzOTExOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiBAQCAtMjY4LDYgKzI2OCwxNDMg QEAgc3RhdGljIGludCBsaXZlX2xhdGVfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJZ290byBlcnJf Y3R4X2xvOwo+ICAgfQo+ICAgCj4gK3N0cnVjdCBwcmVlbXB0X2NsaWVudCB7Cj4gKwlzdHJ1Y3Qg aWd0X3NwaW5uZXIgc3BpbjsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gK307 Cj4gKwo+ICtzdGF0aWMgaW50IHByZWVtcHRfY2xpZW50X2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gKwkJCSAgICAgICBzdHJ1Y3QgcHJlZW1wdF9jbGllbnQgKmMpCj4gK3sK PiArCWMtPmN0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOwo+ICsJaWYgKCFjLT5jdHgpCj4gKwkJ cmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJaWYgKGlndF9zcGlubmVyX2luaXQoJmMtPnNwaW4sIGk5 MTUpKQo+ICsJCWdvdG8gZXJyX2N0eDsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9jdHg6 Cj4gKwlrZXJuZWxfY29udGV4dF9jbG9zZShjLT5jdHgpOwo+ICsJcmV0dXJuIC1FTk9NRU07Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHByZWVtcHRfY2xpZW50X2Zpbmkoc3RydWN0IHByZWVtcHRf Y2xpZW50ICpjKQo+ICt7Cj4gKwlpZ3Rfc3Bpbm5lcl9maW5pKCZjLT5zcGluKTsKPiArCWtlcm5l bF9jb250ZXh0X2Nsb3NlKGMtPmN0eCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGl2ZV9zdXBw cmVzc19wcmVlbXB0KHZvaWQgKmFyZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBhcmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlzdHJ1 Y3QgaTkxNV9zY2hlZF9hdHRyIGF0dHIgPSB7Cj4gKwkJLnByaW9yaXR5ID0gSTkxNV9VU0VSX1BS SU9SSVRZKEk5MTVfUFJJT1JJVFlfTUFYKQo+ICsJfTsKPiArCXN0cnVjdCBwcmVlbXB0X2NsaWVu dCBhLCBiOwo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiArCWludCBlcnIgPSAtRU5PTUVNOwo+ICsKPiArCS8qCj4gKwkgKiBWZXJpZnkg dGhhdCBpZiBhIHByZWVtcHRpb24gcmVxdWVzdCBkb2VzIG5vdCBjYXVzZSBhIGNoYW5nZSBpbgo+ ICsJICogdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG9yZGVyLCB0aGUgcHJlZW1wdC10by1pZGxlIGlu amVjdGlvbiBpcwo+ICsJICogc2tpcHBlZCBhbmQgdGhhdCB3ZSBkbyBub3QgYWNjaWRlbnRhbGx5 IGFwcGx5IGl0IGFmdGVyIHRoZSBDUwo+ICsJICogY29tcGxldGlvbiBldmVudC4KPiArCSAqLwo+ ICsKPiArCWlmICghSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGk5MTUpKQo+ICsJCXJldHVy biAwOwo+ICsKPiArCWlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQo+ICsJCXJldHVybiAw OyAvKiBwcmVzdW1lIGJsYWNrIGJsb3ggKi8KUGl0eSBidXQgZnV0dXJlIHByb29mIEkgc3VwcG9z ZS4gOi8KCkV2ZW4gdGhvdWdoIHlvdSBib3RoZXJlZCB0byBhZGQgdGhlIGNvdW50ZXIgaW50byB0 aGUgZ3VjIHBhdGguCgpHb29kIGl0J3MgYmxveCBhbmQgbm90IHNvbWV0aGluZyB3b3JzZS4gOikK Cj4gKwo+ICsJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwo+ICsJaWYgKHByZWVtcHRfY2xpZW50 X2luaXQoaTkxNSwgJmEpKQo+ICsJCWdvdG8gZXJyX3VubG9jazsKPiArCWlmIChwcmVlbXB0X2Ns aWVudF9pbml0KGk5MTUsICZiKSkKPiArCQlnb3RvIGVycl9jbGllbnRfYTsKPiArCj4gKwlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxX2EsICpycV9iOwo+ICsJCWludCBkZXB0aDsKPiArCj4gKwkJZW5naW5lLT5leGVjbGlzdHMu cHJlZW1wdF9oYW5nLmNvdW50ID0gMDsKPiArCj4gKwkJcnFfYSA9IGlndF9zcGlubmVyX2NyZWF0 ZV9yZXF1ZXN0KCZhLnNwaW4sCj4gKwkJCQkJCSAgYS5jdHgsIGVuZ2luZSwKPiArCQkJCQkJICBN SV9OT09QKTsKPiArCQlpZiAoSVNfRVJSKHJxX2EpKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIocnFf YSk7Cj4gKwkJCWdvdG8gZXJyX2NsaWVudF9iOwo+ICsJCX0KPiArCj4gKwkJaTkxNV9yZXF1ZXN0 X2FkZChycV9hKTsKPiArCQlpZiAoIWlndF93YWl0X2Zvcl9zcGlubmVyKCZhLnNwaW4sIHJxX2Ep KSB7Cj4gKwkJCXByX2VycigiRmlyc3QgY2xpZW50IGZhaWxlZCB0byBzdGFydFxuIik7Cj4gKwkJ CWdvdG8gZXJyX3dlZGdlZDsKPiArCQl9Cj4gKwo+ICsJCWZvciAoZGVwdGggPSAwOyBkZXB0aCA8 IDg7IGRlcHRoKyspIHsKPiArCQkJcnFfYiA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZi LnNwaW4sCj4gKwkJCQkJCQkgIGIuY3R4LCBlbmdpbmUsCj4gKwkJCQkJCQkgIE1JX05PT1ApOwo+ ICsJCQlpZiAoSVNfRVJSKHJxX2IpKSB7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKHJxX2IpOwo+ICsJ CQkJZ290byBlcnJfY2xpZW50X2I7Cj4gKwkJCX0KPiArCQkJaTkxNV9yZXF1ZXN0X2FkZChycV9i KTsKPiArCj4gKwkJCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycV9hKSk7Cj4g KwkJCWVuZ2luZS0+c2NoZWR1bGUocnFfYSwgJmF0dHIpOwo+ICsJCQlpZ3Rfc3Bpbm5lcl9lbmQo JmEuc3Bpbik7Cj4gKwo+ICsJCQlpZiAoIWlndF93YWl0X2Zvcl9zcGlubmVyKCZiLnNwaW4sIHJx X2IpKSB7Cj4gKwkJCQlwcl9lcnIoIlNlY29uZCBjbGllbnQgZmFpbGVkIHRvIHN0YXJ0XG4iKTsK PiArCQkJCWdvdG8gZXJyX3dlZGdlZDsKPiArCQkJfQo+ICsKPiArCQkJc3dhcChhLCBiKTsKPiAr CQkJcnFfYSA9IHJxX2I7CgpDb3VsZCBzdG9yZSBycSBpbiB0aGUgY2xpZW50cyBhcyB3ZWxsIEkg dGhpbmsuCgo+ICsJCX0KPiArCQlpZ3Rfc3Bpbm5lcl9lbmQoJmEuc3Bpbik7Cj4gKwo+ICsJCWlm IChlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X2hhbmcuY291bnQpIHsKPiArCQkJcHJfZXJyKCJQ cmVlbXB0aW9uIHJlY29yZGVkIHglZCwgZGVwdGggJWQ7IHNob3VsZCBoYXZlIGJlZW4gc3VwcHJl c3NlZCFcbiIsCj4gKwkJCSAgICAgICBlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X2hhbmcuY291 bnQsCj4gKwkJCSAgICAgICBkZXB0aCk7Cj4gKwkJCWVyciA9IC1FSU5WQUw7Cj4gKwkJCWdvdG8g ZXJyX2NsaWVudF9iOwo+ICsJCX0KPiArCj4gKwkJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5 MTVfV0FJVF9MT0NLRUQpKQo+ICsJCQlnb3RvIGVycl93ZWRnZWQ7Cj4gKwl9Cj4gKwo+ICsJZXJy ID0gMDsKPiArZXJyX2NsaWVudF9iOgo+ICsJcHJlZW1wdF9jbGllbnRfZmluaSgmYik7Cj4gK2Vy cl9jbGllbnRfYToKPiArCXByZWVtcHRfY2xpZW50X2ZpbmkoJmEpOwo+ICtlcnJfdW5sb2NrOgo+ ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCWVyciA9 IC1FSU87Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCW11dGV4 X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICsKPiAr ZXJyX3dlZGdlZDoKPiArCWlndF9zcGlubmVyX2VuZCgmYi5zcGluKTsKPiArCWlndF9zcGlubmVy X2VuZCgmYS5zcGluKTsKPiArCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Cj4gKwllcnIgPSAt RUlPOwo+ICsJZ290byBlcnJfY2xpZW50X2I7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50IGxpdmVf cHJlZW1wdF9oYW5nKHZvaWQgKmFyZykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGFyZzsKPiBAQCAtNjQ3LDYgKzc4NCw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNf bGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCVNVQlRF U1QobGl2ZV9zYW5pdHljaGVjayksCj4gICAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0KSwKPiAgIAkJ U1VCVEVTVChsaXZlX2xhdGVfcHJlZW1wdCksCj4gKwkJU1VCVEVTVChsaXZlX3N1cHByZXNzX3By ZWVtcHQpLAo+ICAgCQlTVUJURVNUKGxpdmVfcHJlZW1wdF9oYW5nKSwKPiAgIAkJU1VCVEVTVChs aXZlX3ByZWVtcHRfc21va2UpLAo+ICAgCX07Cj4gCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==