From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v7] drm/i915: Slaughter the thundering i915_wait_request herd Date: Tue, 8 Dec 2015 14:03:39 +0000 Message-ID: <5666E33B.1020206@linux.intel.com> References: <565DE84C.6040300@intel.com> <1449159727-27526-1-git-send-email-chris@chris-wilson.co.uk> <5665A0EC.7040909@linux.intel.com> <20151208104415.GC26418@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id C531C6E727 for ; Tue, 8 Dec 2015 06:04:26 -0800 (PST) In-Reply-To: <20151208104415.GC26418@nuc-i3427.alporthouse.com> 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, "Rogozhkin, Dmitry V" , "Gong, Zhipeng" , Dave Gordon List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA4LzEyLzE1IDEwOjQ0LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gT24gTW9uLCBEZWMgMDcs IDIwMTUgYXQgMDM6MDg6MjhQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Cj4+IEhp LAo+Pgo+PiBPbiAwMy8xMi8xNSAxNjoyMiwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+Pj4gT25lIHBh cnRpY3VsYXJseSBzdHJlc3NmdWwgc2NlbmFyaW8gY29uc2lzdHMgb2YgbWFueSBpbmRlcGVuZGVu dCB0YXNrcwo+Pj4gYWxsIGNvbXBldGluZyBmb3IgR1BVIHRpbWUgYW5kIHdhaXRpbmcgdXBvbiB0 aGUgcmVzdWx0cyAoZS5nLiByZWFsdGltZQo+Pj4gdHJhbnNjb2Rpbmcgb2YgbWFueSwgbWFueSBz dHJlYW1zKS4gT25lIGJvdHRsZW5lY2sgaW4gcGFydGljdWxhciBpcyB0aGF0Cj4+PiBlYWNoIGNs aWVudCB3YWl0cyBvbiBpdHMgb3duIHJlc3VsdHMsIGJ1dCBldmVyeSBjbGllbnQgaXMgd29rZW4g dXAgYWZ0ZXIKPj4+IGV2ZXJ5IGJhdGNoYnVmZmVyIC0gaGVuY2UgdGhlIHRodW5kZXIgb2YgaG9v dmVzIGFzIHRoZW4gZXZlcnkgY2xpZW50IG11c3QKPj4+IGRvIGl0cyBoZWF2eXdlaWdodCBkYW5j ZSB0byByZWFkIGEgY29oZXJlbnQgc2Vxbm8gdG8gc2VlIGlmIGl0IGlzIHRoZQo+Pj4gbHVja3kg b25lLgo+Pj4KPj4+IElkZWFsbHksIHdlIG9ubHkgd2FudCBvbmUgY2xpZW50IHRvIHdha2UgdXAg YWZ0ZXIgdGhlIGludGVycnVwdCBhbmQKPj4+IGNoZWNrIGl0cyByZXF1ZXN0IGZvciBjb21wbGV0 aW9uLiBTaW5jZSB0aGUgcmVxdWVzdHMgbXVzdCByZXRpcmUgaW4KPj4+IG9yZGVyLCB3ZSBjYW4g c2VsZWN0IHRoZSBmaXJzdCBjbGllbnQgb24gdGhlIG9sZGVzdCByZXF1ZXN0IHRvIGJlIHdva2Vu Lgo+Pj4gT25jZSB0aGF0IGNsaWVudCBoYXMgY29tcGxldGVkIGhpcyB3YWl0LCB3ZSBjYW4gdGhl biB3YWtlIHVwIHRoZQo+Pj4gbmV4dCBjbGllbnQgYW5kIHNvIG9uLgo+Pj4KPj4+IHYyOiBDb252 ZXJ0IGZyb20gYSBrd29ya2VyIHBlciBlbmdpbmUgaW50byBhIGRlZGljYXRlZCBrdGhyZWFkIGZv ciB0aGUKPj4+IGJvdHRvbS1oYWxmLgo+Pj4gdjM6IFJlbmFtZSByZXF1ZXN0IG1lbWJlcnMgYW5k IHR3ZWFrIGNvbW1lbnRzLgo+Pj4gdjQ6IFVzZSBhIHBlci1lbmdpbmUgc3BpbmxvY2sgaW4gdGhl IGJyZWFkY3J1bWJzIGJvdHRvbS1oYWxmLgo+Pj4gdjU6IEZpeCByYWNlIGluIGxvY2tsZXNzbHkg Y2hlY2tpbmcgd2FpdGVyIHN0YXR1cyBhbmQga2lja2luZyB0aGUgdGFzayBvbgo+Pj4gYWRkaW5n IGEgbmV3IHdhaXRlci4KPj4+IHY2OiBGaXggZGVjaWRpbmcgd2hlbiB0byBmb3JjZSB0aGUgdGlt ZXIgdG8gaGlkZSBtaXNzaW5nIGludGVycnVwdHMuCj4+PiB2NzogTW92ZSB0aGUgYm90dG9tLWhh bGYgZnJvbSB0aGUga3RocmVhZCB0byB0aGUgZmlyc3QgY2xpZW50IHByb2Nlc3MuCj4+Cj4+IEkg bGlrZSB0aGUgaWRlYSBhIGxvdCBzbyBJJ2xsIG1ha2Ugc29tZSBjb21tZW50cyBldmVuIGJlZm9y ZSB5b3UKPj4gcG9zdCB2OSBvciBsYXRlci4gOikKPj4KPj4+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pj4gQ2M6ICJSb2dvemhraW4sIERt aXRyeSBWIiA8ZG1pdHJ5LnYucm9nb3poa2luQGludGVsLmNvbT4KPj4+IENjOiAiR29uZywgWmhp cGVuZyIgPHpoaXBlbmcuZ29uZ0BpbnRlbC5jb20+Cj4+PiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPj4+IENjOiBEYXZlIEdvcmRvbiA8ZGF2aWQu cy5nb3Jkb25AaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgICAgICAgfCAgIDEgKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyAgICAgIHwgICAyICstCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICAgfCAgIDMgKy0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgICB8IDEwOCArKysrKystLS0tLS0tLS0tLQo+Pj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgIHwgICAyICstCj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgfCAgMTcgKy0tCj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgfCAxOTcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwg ICA1ICstCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCAg IDUgKy0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICB8ICA0 NyArKysrKysrLQo+Pj4gICAxMCBmaWxlcyBjaGFuZ2VkLCAyOTcgaW5zZXJ0aW9ucygrKSwgOTAg ZGVsZXRpb25zKC0pCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9icmVhZGNydW1icy5jCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+IGluZGV4 IDA4NTFkZTA3YmQxMy4uZDNiOWQzNjE4NzE5IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4+PiBAQCAtMzUsNiArMzUsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+Pj4g ICAJICBpOTE1X2dlbV91c2VycHRyLm8gXAo+Pj4gICAJICBpOTE1X2dwdV9lcnJvci5vIFwKPj4+ ICAgCSAgaTkxNV90cmFjZV9wb2ludHMubyBcCj4+PiArCSAgaW50ZWxfYnJlYWRjcnVtYnMubyBc Cj4+PiAgIAkgIGludGVsX2xyYy5vIFwKPj4+ICAgCSAgaW50ZWxfbW9jcy5vIFwKPj4+ICAgCSAg aW50ZWxfcmluZ2J1ZmZlci5vIFwKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ PiBpbmRleCAwNTgzZWRhNjQyZDcuLjY4ZmJlNGQxZjkxZCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+Pj4gQEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBpbnQg Y291bnRfaXJxX3dhaXRlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4+PiAgIAlp bnQgaTsKPj4+Cj4+PiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGk5MTUsIGkpCj4+PiAtCQljb3Vu dCArPSByaW5nLT5pcnFfcmVmY291bnQ7Cj4+PiArCQljb3VudCArPSBpbnRlbF9lbmdpbmVfaGFz X3dhaXRlcihyaW5nKTsKPj4KPj4gRG9uJ3QgY2FyZSBob3cgbWFueSBhbnkgbG9uZ2VyPyBPa2F5 IGluIGRlYnVnZnMsIGJ1dCBhbHNvIGluIGVycm9yIGNhcHR1cmU/Cj4KPiBJdCB3YXMgbmljZSB0 aGF0IHdlIHdlcmUgYWJsZSB0byBtYXJrIHRoZSByZXF1ZXN0cyB3aXRoIHdhaXRlcnMgZm9yCj4g ZnJlZS4gV2UgY291bGQgYWRkIHRoYXQsIGJ1dCBpdCBpcyBubyBsb25nZXIgYSBzaWRlLWVmZmVj dCBvZiB0aGlzCj4gcGF0Y2guIEhlcmUgSSB3YXMgdGVtcHRlZCB0byBkbyBhbiBpbnRlbF9lbmdp bmVfY291bnRfYnJlYWRjcnVtYnMoKSwgYnV0Cj4gdGhhdCBkb2Vzbid0IG1hdGNoIGhvdyB0aGUg aW5mb3JtYXRpb24gaXMgdXNlZCBieSBSUFMgc28gYWRkaW5nIGl0IHRvCj4gZGVidWdmcyBmb3Ig UlBTIGlzIG1pc2xlYWRpbmcuCj4KPj4+IC0JLyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4 dCBqaWZmaWUgYmVmb3JlIHRvdWNoaW5nIElSUXMgKi8KPj4+IC0JcmV0ID0gX19pOTE1X3NwaW5f cmVxdWVzdChyZXEsIHN0YXRlKTsKPj4+IC0JaWYgKHJldCA9PSAwKQo+Pj4gLQkJZ290byBvdXQ7 Cj4+PiArCWlmIChJTlRFTF9JTkZPKHJlcS0+aTkxNSktPmdlbiA+PSA2KQo+Pj4gKwkJZ2VuNl9y cHNfYm9vc3QocmVxLT5pOTE1LCBycHMsIHJlcS0+ZW1pdHRlZF9qaWZmaWVzKTsKPj4+Cj4+PiAt CWlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MgJiYgV0FSTl9PTighcmluZy0+aXJxX2dldChyaW5n KSkpIHsKPj4+IC0JCXJldCA9IC1FTk9ERVY7Cj4+PiAtCQlnb3RvIG91dDsKPj4+ICsJLyogT3B0 aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCBqaWZmaWUgYmVmb3JlIHRvdWNoaW5nIElSUXMgKi8K Pj4KPj4gRXhhY3RseSB0aGUgb3Bwb3NpdGUhIDopCj4KPiBCYWguIEl0J3MgY2xvc2UsIGl0IGNl cnRhaW5seSBzdWNjaW5jdGx5IGNhcHR1cmVzIHRoZSBpbnRlbnQgaWYgbm90IHRoZQo+IGltcGxl bWVudGF0aW9uISBzL2ppZmZpZS9+amlmZmllLyEKPgo+Pj4gQEAgLTk5NiwxMiArOTk2LDExIEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3Jwc19jaGFuZ2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPj4+Cj4+PiAgIHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCj4+PiAgIHsKPj4+IC0JaWYgKCFpbnRlbF9yaW5nX2luaXRpYWxp emVkKHJpbmcpKQo+Pj4gKwlpZiAocmluZy0+aTkxNSA9PSBOVUxMKQo+Pgo+PiBHbGFuY2VkIHNv bWV0aGluZyBhYm91dCB0aGlzIGluIHNvbWUgb3RoZXIgdGhyZWFkLCBtYXliZSBiZXN0IHRvCj4+ IGtlZXAgaXQgY29uc29saWRhdGVkIGluIG9uZSBwYXRjaD8KPgo+IFRoaXMgY2FuIGRpZSBub3cu IEl0IHdhcyBqdXN0aWZpYWJsZSB3aGVuIEkgd2FzIHVzaW5nIHJpbmctPmk5MTUKPiBkaXJlY3Rs eSBoZXJlLCBidXQgbm93IGl0IGlzIGp1c3QgKG1vc3RseSkgcG9pbnRsZXNzIGNodXJuLgo+Cj4+ PiArc3RhdGljIGJvb2wgaXJxX2dldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ PiArewo+Pj4gKwlpZiAodGVzdF9iaXQoZW5naW5lLT5pZCwgJmVuZ2luZS0+aTkxNS0+Z3B1X2Vy cm9yLnRlc3RfaXJxX3JpbmdzKSkKPj4+ICsJCXJldHVybiBmYWxzZTsKPj4KPj4gSSBkb24ndCB1 bmRlcnN0YW5kIHdoeSBrbm93bGVkZ2Ugb2YgdGhpcyBkZWJ1Z2ZzIGludGVyZmFjZSBuZWVkcyB0 bwo+PiBiZSBzcHJpbmtsZWQgYXJvdW5kPwo+Cj4gSXQncyBub3QgdGhvdWdoLiBUaGlzIGlzIHRo ZSBvbmx5IHVzZSAtIHRoZSBpbnRlcmZhY2UgaXMgdG8gaW5qZWN0Cj4gZmF1bHRzIGludG8gdGhl IHdhaXRlciB0aGF0IGVuc3VyZSB3ZSBjYW5ub3Qgd2FrZSB1cCBhZnRlciBhbgo+IGludGVycnVw dCwgYW5kIHNvIGZvcmNlIHRoZSBoYW5nY2hlY2sgdG8gaW50ZXJ2ZW5lLiBBcyB5b3UgdGhpbmtp bmcgb2YKPiBpdHMgY291bnRlcnBhcnQgbWlzc2VkX2lycSwgd2hpY2ggd2UgdXNlIHRvIHRyYWNr IHdoZW4gd2UgbmVlZCB0byBmb3JjZQo+IHRoZSBmYWtlIGludGVycnVwdD8KPgo+PiBJIG1lYW4s IEkgYW0gbm90IGV2ZW4gMTAwJSBzdXJlIHdoYXQgdGhlCj4+IGRlYnVnZnMgaW50ZXJmYWNlIGlz IGZvci4gQnV0IGl0IGxvb2tzIHRvIGJlIGFib3V0IHNvZnR3YXJlIG1hc2tpbmcKPj4gdXNlciBp bnRlcnJ1cHRzIG9uIGEgcmluZz8gV2h5IG5vdCBqdXN0IG1hc2sgdGhlIGludGVycnVwdCBkZWxp dmVyeQo+PiBiYXNlZCBvbiB0aGlzIG1hc2sgYXQgdGhlIHNvdXJjZT8KPgo+IEl0IGlzIHRvIHNp bXVsYXRlIGEgYnJva2VuIHdhaXQsIGFzIG9wcG9zZWQgdG8gbWFza2luZyBpbnRlcnJ1cHRzLgoK SSBkb24ndCBzZWUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGJyb2tlbiB3YWl0IGFuZCBtYXNr aW5nIGludGVycnVwdHM/CgpJdCBpcyBtYXNraW5nIGludGVycnVwdHMgYmVmb3JlIGFuZCBhZnRl ciB0aGlzIHBhdGNoLiBCcm9rZW4gd2FpdCBjb3VsZCAKaGF2ZSBiZWVuIGFjY29tcGxpc2hlZCBi eSBkb2luZyB0aGUgdGVzdCBmcm9tIHdhaXQgd2hlbiAKcmVxdWVzdF9jb21wbGV0ZWQgaXMgY2Fs bGVkLgoKQW55d2F5LCBJIGRvbid0IGdldCBpdC4KCj4+PiArYm9vbCBpbnRlbF9icmVhZGNydW1i c19hZGRfd2FpdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPj4+ICsJ CQkJICBzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYiAqd2FpdCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBp bnRlbF9icmVhZGNydW1icyAqYiA9ICZyZXF1ZXN0LT5yaW5nLT5icmVhZGNydW1iczsKPj4+ICsJ c3RydWN0IHJiX25vZGUgKipwLCAqcGFyZW50Owo+Pj4gKwlib29sIGZpcnN0ID0gZmFsc2U7Cj4+ PiArCj4+PiArCXdhaXQtPnRhc2sgPSBjdXJyZW50Owo+Pj4gKwl3YWl0LT5zZXFubyA9IHJlcXVl c3QtPnNlcW5vOwo+Pj4gKwo+Pj4gKwlzcGluX2xvY2soJmItPmxvY2spOwo+Pj4gKwo+Pj4gKwkv KiBGaXJzdD8gVW5tYXNrIHRoZSB1c2VyIGludGVycnVwdCAqLwo+Pj4gKwlpZiAoYi0+Zmlyc3Rf d2FpdGVyID09IE5VTEwpCj4+PiArCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2hpZ2hwcmlf d3EsICZiLT5pcnEsIDApOwo+Pgo+PiBXaG8gZW5hYmxlcyBpbnRlcnJ1cHRzIGlmIHRoZSB3b3Jr ZXIgZ2V0cyBzY2hlZHVsZWQgYW5kIGNvbXBsZXRlcwo+PiBiZWZvcmUgc2V0dGlnIGItPmZpcnN0 X3dhaXRlciBiZWxvdz8KPgo+IEluIHRoaXMgdmVyc2lvbiwgaXQgaXMgc2VyaWFsaXNlZCBieSB0 aGUgc3BpbmxvY2suIEluIHRoZSBuZXh0IHZlcnNpb24sCj4gdGhlIG9yZGVyaW5nIGlzIGV4cGxp Y2l0IChubyBtb3JlIGRlbGF5ZWQgd29ya2VyKS4KPgo+Pj4gKwkvKiBJbnNlcnQgdGhlIHJlcXVl c3QgaW50byB0aGUgcmV0aXJtZW50IG9yZGVyZWQgbGlzdAo+Pj4gKwkgKiBvZiB3YWl0ZXJzIGJ5 IHdhbGtpbmcgdGhlIHJidHJlZS4gSWYgd2UgYXJlIHRoZSBvbGRlc3QKPj4+ICsJICogc2Vxbm8g aW4gdGhlIHRyZWUgKHRoZSBmaXJzdCB0byBiZSByZXRpcmVkKSwgdGhlbgo+Pj4gKwkgKiBzZXQg b3Vyc2VsdmVzIGFzIHRoZSBib3R0b20taGFsZi4KPj4+ICsJICovCj4+PiArCWZpcnN0ID0gdHJ1 ZTsKPj4+ICsJcGFyZW50ID0gTlVMTDsKPj4+ICsJcCA9ICZiLT5yZXF1ZXN0cy5yYl9ub2RlOwo+ Pj4gKwl3aGlsZSAoKnApIHsKPj4+ICsJCXBhcmVudCA9ICpwOwo+Pj4gKwkJaWYgKGk5MTVfc2Vx bm9fcGFzc2VkKHdhaXQtPnNlcW5vLCB0b193YWl0KHBhcmVudCktPnNlcW5vKSkgewo+Pj4gKwkJ CXAgPSAmcGFyZW50LT5yYl9yaWdodDsKPj4+ICsJCQlmaXJzdCA9IGZhbHNlOwo+Pj4gKwkJfSBl bHNlCj4+PiArCQkJcCA9ICZwYXJlbnQtPnJiX2xlZnQ7Cj4+PiArCX0KPj4+ICsJcmJfbGlua19u b2RlKCZ3YWl0LT5ub2RlLCBwYXJlbnQsIHApOwo+Pj4gKwlyYl9pbnNlcnRfY29sb3IoJndhaXQt Pm5vZGUsICZiLT5yZXF1ZXN0cyk7Cj4+Cj4+IFdBUk5fT04oIWZpcnN0ICYmICFiLT5maXJzdF93 YWl0ZXIpIG1heWJlPwo+Cj4gV2Ugd2lsbCBnZXQgYSBHUEYgb24gYi0+Zmlyc3Rfd2FpdGVyIHNv b24gZW5vdWdoIDopCj4KPj4KPj4+ICsJaWYgKGZpcnN0KQo+Pj4gKwkJYi0+Zmlyc3Rfd2FpdGVy ID0gd2FpdC0+dGFzazsKPgo+IEJVR19PTihiLT5maXJzdF93YWl0ZXIgPT0gTlVMTCk7Cj4KPiB3 b3VsZCBiZSBjbGVhcmVyIEkgZ3Vlc3MuCj4KPj4+ICsKPj4+ICsJc3Bpbl91bmxvY2soJmItPmxv Y2spOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gZmlyc3Q7Cj4+PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgaW50 ZWxfYnJlYWRjcnVtYnNfcmVtb3ZlX3dhaXRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsCj4+PiArCQkJCSAgICAgc3RydWN0IGludGVsX2JyZWFkY3J1bWIgKndhaXQpCj4+ PiArewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmcmVxdWVzdC0+cmluZy0+ YnJlYWRjcnVtYnM7Cj4+PiArCj4+PiArCXNwaW5fbG9jaygmYi0+bG9jayk7Cj4+PiArCj4+PiAr CWlmIChiLT5maXJzdF93YWl0ZXIgPT0gd2FpdC0+dGFzaykgewo+Pj4gKwkJc3RydWN0IGludGVs X2JyZWFkY3J1bWIgKm5leHQ7Cj4+PiArCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4+PiAr Cj4+PiArCQkvKiBXZSBhcmUgdGhlIGN1cnJlbnQgYm90dG9tLWhhbGYuIEZpbmQgdGhlIG5leHQg Y2FuZGlkYXRlLAo+Pj4gKwkJICogdGhlIGZpcnN0IHdhaXRlciBpbiB0aGUgcXVldWUgb24gdGhl IHJlbWFpbmluZyBvbGRlc3QKPj4+ICsJCSAqIHJlcXVlc3QuIEFzIG11bHRpcGxlIHNlcW5vcyBt YXkgY29tcGxldGUgaW4gdGhlIHRpbWUgaXQKPj4+ICsJCSAqIHRha2VzIHVzIHRvIHdha2UgdXAg YW5kIGZpbmQgdGhlIG5leHQgd2FpdGVyLCB3ZSBoYXZlIHRvCj4+PiArCQkgKiB3YWtlIHVwIHRo YXQgd2FpdGVyIGZvciBpdCB0byBwZXJmb3JtIGl0cyBvd24gY29oZXJlbnQKPj4+ICsJCSAqIGNv bXBsZXRpb24gY2hlY2suCj4+PiArCQkgKi8KPj4KPj4gRXF1YWxseSwgd2h5IHdvdWxkbid0IHdl IHdha2UgdXAgYWxsIHdhaXRlcnMgZm9yIHdoaWNoIHRoZSByZXF1ZXN0cwo+PiBoYXZlIGJlZW4g Y29tcGxldGVkPwo+Cj4gQmVjYXVzZSB3ZSBubyBsb25nZXIgdHJhY2sgdGhlIHJlcXVlc3RzIHRv IGJlIGNvbXBsZXRlZCwgaGF2aW5nIG1vdmVkIHRvCj4gYSBjaGFpbiBvZiB3YWl0aW5nIHByb2Nl c3NlcyBpbnN0ZWFkIG9mIGEgY2hhaW4gb2YgcmVxdWVzdHMuIEkgY291bGQKPiBpbnNlcnQgYSB3 YWl0cXVldWUgaW50byB0aGUgaW50ZWxfYnJlYWRjcnVtYiBhbmQgdGhhdCB3b3VsZCBpbmRlZWQK PiBuZWNlc3NpdGF0ZSBsb2NraW5nIGluIHRoZSBpcnEgaGFuZGxlciAoYW5kIGlycSBsb2NrcyBl dmVyeXdoZXJlIDooLgoKWW91IGhhdmUgYSB0cmVlIG9mIHNlcW5vcyBlYWNoIHdpdGggYSB3YWl0 LT50YXNrIGFuZCBjdXJyZW50IHNlcW5vIG9uIAp0aGUgZW5naW5lIGNhbiBiZSBxdWVyaWVkLiBT byBJIGRvbid0IHNlZSB3aGVyZSBpcyB0aGUgcHJvYmxlbT8KCj4+IFdvdWxkIGJlIGEgY2hlYXAg Y2hlY2sgaGVyZSBhbmQgaXQgd291bGQgc2F2ZSBhIGNhc2NhZGluZyBncm93aW5nCj4+IGxhdGVu Y3kgYXMgb25lIHRhc2sgd2FrZXMgdXAgdGhlIG5leHQgb25lLgo+Cj4gV2VsbCwgaXQgY2FuJ3Qg YmUgaGVyZSBzaW5jZSB3ZSBtYXkgcmVtb3ZlX3dhaXRlciBhZnRlciBhIHNpZ25hbAo+IChpbmNv bXBsZXRlIHdhaXQpLiBTbyB0aGlzIHBhcnQgaGFzIHRvIHdhbGsgdGhlIGNoYWluIG9mIHByb2Nl c3Nlcy4gVWdoLAo+IGFuZCBoYXZlIHRvIG1vdmUgdGhlIHdhaXRxdWV1ZSBmcm9tIG9uZSB3YWl0 ZXIgdG8gdGhlIG5leHQuLi4KCk9rIG9uIGludGVycnVwdGVkIHdhaXRlcnMgaXQgbWFrZXMgbm8g c2Vuc2UsIGJ1dCBvbiBub3JtYWwgd2FpdGVyIApyZW1vdmFsIGl0IHdvdWxkIGp1c3QgbWVhbiBj b21wYXJpbmcgZW5naW5lLT5nZXRfc2Vxbm8oKSB2cyB0aGUgZmlyc3QgCndhaXRlciBzZXFubyBh bmQgd2FraW5nIHVwIGFsbCB1bnRpbCB0aGUgdW5jb21wbGV0ZWQgb25lIGlzIGZvdW5kPwoKPj4g RXZlbiBtb3JlIGJlbmVmaXQgZm9yIG11bHRpcGxlIHdhaXRlcnMgb24gdGhlIHNhbWUgcmVxdWVz dC4KPgo+IFllcy4gVGhhdCdzIHdoYXQgSSBsaWtlZCBhYm91dCB0aGUgcHJldmlvdXMgdmVyc2lv biB3aXRoIHRoZSBpbmRlcGVuZGVudAo+IHdhaXRxdWV1ZS4gSG93ZXZlciwgbGF0ZW5jeSBvZiBh IHNpbmdsZSB3YWl0ZXIgaXMgYSBjb21wZWxsaW5nIGFyZ3VtZW50Lgo+Cj4gTXkgaGVhZCBpcyBz dGlsbCBmdWxsIG9mIGNvbGQsIG1heWJlIGVtYmVkZGluZyBhIHdhaXRxdWV1ZSBpbnRvIHRoZQo+ IGJyZWFkY3J1bWIgaXMgYW4gaW1wcm92ZW1lbnQgLSBJIGFtIG5vdCBzdXJlIHlldC4KCkxlYXZl IGl0IGZvciBzb21lIG90aGVyIGRheSB0aGVuLgoKPj4+ICsJLyogUmF0aGVyIHRoYW4gaGF2ZSBl dmVyeSBjbGllbnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVwdHMsCj4+PiArCSAqIHdpdGgg dGhlIGhlcmQgd2FraW5nIGFmdGVyIGV2ZXJ5IGludGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUK Pj4+ICsJICogaGVhdnl3ZWlnaHQgc2Vxbm8gZGFuY2UsIHdlIGRlbGVnYXRlIHRoZSB0YXNrIHRv IHRoZSBmaXJzdCBjbGllbnQuCj4+PiArCSAqIEFmdGVyIHRoZSBpbnRlcnJ1cHQsIHdlIHdha2Ug dXAgb25lIGNsaWVudCwgd2hvIGRvZXMgdGhlIGhlYXZ5d2VpZ2h0Cj4+PiArCSAqIGNvaGVyZW50 IHNlcW5vIHJlYWQgYW5kIGVpdGhlciBnb2VzIGJhY2sgdG8gc2xlZXAgKGlmIGluY29tcGxldGUp LAo+Pj4gKwkgKiBvciB3YWtlcyB1cCB0aGUgbmV4dCBjbGllbnQgaW4gdGhlIHF1ZXVlIGFuZCBz byBmb3J0aC4KPj4+ICsJICoKPj4+ICsJICogV2l0aCByZXNwZWN0IHRvIHdhbGtpbmcgdGhlIGVu dGlyZSBsaXN0IG9mIHdhaXRlcnMgaW4gYSBzaW5nbGUKPj4KPj4gcy9XaXRoIHJlc3BlY3QgdG8v SW4gY29udHJhc3QgdG8vIG9yICJDb21wYXJlZCB0byI/Cj4KPiAiQ29tcGFyZWQgdG8iLCB0aGFu a3MuCj4KPj4+ICsJICogZGVkaWNhdGVkIGJvdHRvbS1oYWxmLCB3ZSByZWR1Y2UgdGhlIGxhdGVu Y3kgb2YgdGhlIGZpcnN0IHdhaXRlcgo+Pj4gKwkgKiBieSBhdm9pZGluZyBhIGNvbnRleHQgc3dp dGNoLCBidXQgaW5jdXIgYWRkaXRpb25hbCBjb2hlcmVudCBzZXFubwo+Pj4gKwkgKiByZWFkcyB3 aGVuIGZvbGxvd2luZyB0aGUgY2hhaW4gb2YgcmVxdWVzdCBicmVhZGNydW1icy4KPj4+ICsJICov Cj4+PiArCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyB7Cj4+PiArCQlzcGlubG9ja190IGxvY2s7 IC8qIHByb3RlY3RzIHRoZSBsaXN0cyBvZiByZXF1ZXN0cyAqLwo+Pj4gKwkJc3RydWN0IHJiX3Jv b3QgcmVxdWVzdHM7IC8qIHNvcnRlZCBieSByZXRpcmVtZW50ICovCj4+PiArCQlzdHJ1Y3QgdGFz a19zdHJ1Y3QgKmZpcnN0X3dhaXRlcjsgLyogYmggZm9yIHVzZXIgaW50ZXJydXB0cyAqLwo+Pj4g KwkJc3RydWN0IGRlbGF5ZWRfd29yayBpcnE7IC8qIHVzZWQgdG8gZW5hYmxlIG9yIGZha2UgaW5l cnJ1cHRzICovCj4+PiArCQlib29sIGlycV9lbmFibGVkIDogMTsKPj4+ICsJCWJvb2wgcnBtX3dh a2Vsb2NrIDogMTsKPj4KPj4gQXJlIGJpdGZpZWxkcyB3b3J0aCBpdD8gVGhlcmUgYXJlbid0IHRo YXQgbWFueSBlbmdpbmUgc28gbWF5YmUgaXQKPj4gbG9zZXMgbW9yZSBpbiB0ZXJtcyBvZiBpbnN0 cnVjdGlvbnMgZ2VuZXJhdGVkLgo+Cj4gSSdtIGFsd2F5cyBvcHRpbWlzdGljIHRoYXQgZ2NjIGdl dHMgaXQncyBhY3QgdG9nZXRoZXIuIE5vdCB0aGF0IEkgZG9uJ3QKPiBoYXZlIHBhdGNoZXMgY29u dmVydGluZyBmcm9tIGJpdGZpZWxkcyB0byBmbGFncyB3aGVuIGdjYyBodXJ0cy4gSGVyZSwKPiB0 aGUgcG90ZW50aWFsIGV4dHJhIGluc3RydWN0aW9uIGlzIGdvaW5nIHRvIGR3YXJmZWQgYnkgdGhl IGlycSBzcGlubG9ja3MKPiBhbmQgd29yc2UgYWxvbmcgdGhlc2UgcGF0aHMuCj4KPj4+ICtzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX3dha2V1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBSRUFEX09O Q0UoZW5naW5lLT5icmVhZGNydW1icy5maXJzdF93YWl0ZXIpOwo+Pj4gKwlpZiAodGFzaykKPj4+ ICsJCXdha2VfdXBfcHJvY2Vzcyh0YXNrKTsKPj4KPj4gV2hhdCBndWFyYW50ZWVzIHRhc2sgaXMg YSB2YWxpZCB0YXNrIGF0IHRoaXMgcG9pbnQ/Cj4KPiBOb3QgYW4gYXdmdWwgbG90ISBJbmRpcmVj dGx5LCBJIGNhbiBwb2ludCB0byB0aGUgdGhhdCB0aGUgdGFzayBzdHJ1Y3QKPiBjYW5ub3QgYmUg ZnJlZWQgd2hpbHN0IHdlIGFyZSBpbiBhbiBpcnEgKHRoYW5rcyB0byByY3UpLCBidXQgb3RoZXIg dGhhbgo+IHRoYXQgaXQgaXMgc2ltcGx5IHRoYXQgdGhlcmUgaXMgYSBtdWNoIGxvbmdlciBwYXRo IGJldHdlZW4gY2xlYXJpbmcgdGhlCj4gZmlyc3Rfd2FpdGVyIGFuZCBmcmVlaW5nIHRoZSB0YXNr X3N0cnVjdCB0aGFuIGRvaW5nIGEgd2FrZV91cF9wcm9jZXNzIG9uCj4gdGhlIHJ1bm5pbmcgdGFz ay4KPgo+PiBJIGtub3cgaXQgaXMgc28gZXh0cmVtZWx5IHVubGlrZWx5LCBidXQgaXQgY2FuIHRo ZW9yZXRpY2FsbHkgc2FtcGxlCj4+IHRoZSBmaXJzdF93YWl0ZXIgd2hpY2ggdGhlbiBleGlzdHMg YW5kIGRpc2FwcGVhcnMgYmFmb3JlIHRoZQo+PiB3YWtlX3VwX3Byb2Nlc3MgY2FsbC4KPgo+IEkg Y2FuIGxlYXZlIGEgY29tbWVudDogIkkgdG9sZCB5b3Ugc28gLS0gVHZydGtvIiA6KQoKSG0sIGl0 IHBvc3NpYmx5IG5lZWRzIGEgc3luY2hyb25pemVfaXJxIGJlZm9yZSByZW1vdmVfd2FpdGVyIGV4 aXRzIHRoZW4/CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==