From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 31/49] drm/i915: Reduce locking in execlist command submission Date: Fri, 27 Mar 2015 11:40:12 +0000 Message-ID: <5515419C.2090006@linux.intel.com> References: <1427454141-4000-1-git-send-email-chris@chris-wilson.co.uk> <1427454141-4000-32-git-send-email-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id D567C6EB5E for ; Fri, 27 Mar 2015 04:40:13 -0700 (PDT) In-Reply-To: <1427454141-4000-32-git-send-email-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 CkhpLAoKT24gMDMvMjcvMjAxNSAxMTowMiBBTSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IFRoaXMg ZWxpbWluYXRlcyBzaXggbmVlZGxlc3Mgc3BpbiBsb2NrL3VubG9jayBwYWlycyB3aGVuIHdyaXRp bmcgb3V0Cj4gRUxTUC4KPgo+IHYyOiBSZXNwaW4gd2l0aCBteSBwcmVmZXJyZWQgY29sb3VyLgo+ Cj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4gW3YyXQo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAx OCArKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgfCAxNCAr KystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIHwgODYgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA4NiBp bnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IDBjNmU0MzU2ZmEwNi4uNGI1MTE2OWMzN2VhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gQEAgLTI1NDAsNiArMjU0MCwxMyBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdh a2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQllbnVtIGZv cmNld2FrZV9kb21haW5zIGRvbWFpbnMpOwo+ICAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtl X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJZW51bSBmb3Jj ZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiArLyogTGlrZSBhYm92ZSBidXQgdGFrZSBhbmQgaG9s ZCB0aGUgdW5jb3JlIGxvY2sgZm9yIHRoZSBkdXJhdGlvbi4KPiArICogTXVzdCBiZSB1c2VkIHdp dGggSTkxNV9SRUFEX0ZXIGFuZCBmcmllbmRzLgo+ICsgKi8KPiArdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2lycWxvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJ CQkJZW51bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiArdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2lycXVubG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g KwkJCQkgICBlbnVtIGZvcmNld2FrZV9kb21haW5zIGRvbWFpbnMpOwoKT2ggd2VsbCBJIGRvbid0 IGxpa2UgeW91ciBjb2xvdXIuIDopCgpJIHdvdWxkIG1ha2UgdGhlIGNvbW1lbnQgY2xlYXJlciBp biBzYXlpbmcgdGhlIGZ1bmN0aW9uIGl0c2VsZiB3aWxsIHRha2UgCnRoZSBsb2NrIGFuZCBub3Qg cmVsZWFzZSBpdCBzaW5jZSAidGFrZSBhbmQgaG9sZCB0aGUgdW5jb3JlIGxvY2sgZm9yIHRoZSAK ZHVyYXRpb24iIHRvIG1lIHJlYWRzIGFtYmlndW91cy4KCkFsc28sIG5vdCBzdXJlIGFib3V0IHRo ZSBfaXJxbG9jayBzdWZmaXguIEl0IGlzIHdlbGwgZXN0YWJsaXNoZWQgaW4gCnNwaW5sb2NrcyBh bmQgdGhlIGZ1bmN0aW9ucyBldmVuIGRvZXMgdGhlIG9wcG9zaXRlIGZyb20gdGhhdCEKCk1heWJl IF9nZXRfYW5kX2xvY2sgLyBfcHV0X2FuZF91bmxvY2ssIG9yIG90aGVyIHdheSByb3VuZD8KCj4g ICB2b2lkIGFzc2VydF9mb3JjZXdha2VzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gICBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdmdwdV9hY3RpdmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgIHsKPiBAQCAtMzIzMiw2ICszMjM5LDE3IEBAIGludCBp bnRlbF9mcmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2 YWwpOwo+ICAgI2RlZmluZSBQT1NUSU5HX1JFQUQocmVnKQkodm9pZClJOTE1X1JFQURfTk9UUkFD RShyZWcpCj4gICAjZGVmaW5lIFBPU1RJTkdfUkVBRDE2KHJlZykJKHZvaWQpSTkxNV9SRUFEMTZf Tk9UUkFDRShyZWcpCj4KPiArLyogVGhlc2UgYXJlIHVudHJhY2VkIG1taW8tYWNjZXNzb3JzIHRo YXQgYXJlIG9ubHkgdmFsaWQgdG8gYmUgdXNlZCBpbnNpZGUKPiArICogY3JpdGljaWFsIHNlY3Rp b25zIGluc2lkZSBJUlEgaGFuZGxlcnMgd2hlcmUgZm9yY2V3YWtlIGlzIGV4cGxpY2l0bHkKPiAr ICogY29udHJvbGxlZC4KPiArICogVGhpbmsgdHdpY2UsIGFuZCB0aGluayBhZ2FpbiwgYmVmb3Jl IHVzaW5nIHRoZXNlLgo+ICsgKiBOb3RlOiBTaG91bGQgb25seSBiZSB1c2VkIGJldHdlZW4gaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9pcnFsb2NrKCkgYW5kCj4gKyAqIGludGVsX3VuY29yZV9mb3Jj ZXdha2VfaXJxdW5sb2NrKCkuCj4gKyAqLwo+ICsjZGVmaW5lIEk5MTVfUkVBRF9GVyhyZWdfXykg cmVhZGwoZGV2X3ByaXYtPnJlZ3MgKyAocmVnX18pKQo+ICsjZGVmaW5lIEk5MTVfV1JJVEVfRlco cmVnX18sIHZhbF9fKSB3cml0ZWwodmFsX18sIGRldl9wcml2LT5yZWdzICsgKHJlZ19fKSkKPiAr I2RlZmluZSBQT1NUSU5HX1JFQURfRlcocmVnX18pICh2b2lkKUk5MTVfUkVBRF9GVyhyZWdfXykK PiArCj4gICAvKiAiQnJvYWRjYXN0IFJHQiIgcHJvcGVydHkgKi8KPiAgICNkZWZpbmUgSU5URUxf QlJPQURDQVNUX1JHQl9BVVRPIDAKPiAgICNkZWZpbmUgSU5URUxfQlJPQURDQVNUX1JHQl9GVUxM IDEKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDVlNTFlZDUyMzJlOC4uNDU0YmI3 ZGYyN2ZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMjc4LDE3ICsyNzgs MTcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9wYWlyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcpCj4gICAJZGVzY1szXSA9IHJpbmctPmV4ZWNsaXN0X3BvcnRbMF0tPnNlcW5v Owo+Cj4gICAJLyogTm90ZTogWW91IG11c3QgYWx3YXlzIHdyaXRlIGJvdGggZGVzY3JpcHRvcnMg aW4gdGhlIG9yZGVyIGJlbG93LiAqLwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2 X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+IC0JSTkxNV9XUklURShSSU5HX0VMU1AocmluZyksIGRl c2NbMV0pOwo+IC0JSTkxNV9XUklURShSSU5HX0VMU1AocmluZyksIGRlc2NbMF0pOwo+IC0JSTkx NV9XUklURShSSU5HX0VMU1AocmluZyksIGRlc2NbM10pOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9pcnFsb2NrKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCUk5MTVfV1JJVEVfRlco UklOR19FTFNQKHJpbmcpLCBkZXNjWzFdKTsKPiArCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKHJp bmcpLCBkZXNjWzBdKTsKPiArCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKHJpbmcpLCBkZXNjWzNd KTsKPgo+ICAgCS8qIFRoZSBjb250ZXh0IGlzIGF1dG9tYXRpY2FsbHkgbG9hZGVkIGFmdGVyIHRo ZSBmb2xsb3dpbmcgKi8KPiAtCUk5MTVfV1JJVEUoUklOR19FTFNQKHJpbmcpLCBkZXNjWzJdKTsK PiArCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKHJpbmcpLCBkZXNjWzJdKTsKPgo+ICAgCS8qIEVM U1AgaXMgYSB3byByZWdpc3RlciwgdXNlIGFub3RoZXIgbmVhcmJ5IHJlZyBmb3IgcG9zdGluZyBp bnN0ZWFkICovCj4gLQlQT1NUSU5HX1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVMocmluZykpOwo+ IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ ICsJUE9TVElOR19SRUFEX0ZXKFJJTkdfRVhFQ0xJU1RfU1RBVFVTKHJpbmcpKTsKPiArCWludGVs X3VuY29yZV9mb3JjZXdha2VfaXJxdW5sb2NrKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAg IH0KPgo+ICAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5k ZXggMGUzMmJiYmNhZGE4Li5hMDYzZjdkOWYzMWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+IEBAIC0zOTksNiArMzk5LDI2IEBAIHZvaWQgaW50ZWxfdW5jb3JlX3Nhbml0 aXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJaW50ZWxfZGlzYWJsZV9ndF9wb3dlcnNh dmUoZGV2KTsKPiAgIH0KPgo+ICtzdGF0aWMgdm9pZCBfX2ludGVsX3VuY29yZV9mb3JjZXdha2Vf Z2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQkgZW51bSBmb3Jj ZXdha2VfZG9tYWlucyBmd19kb21haW5zKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9kb21haW4gKmRvbWFpbjsKPiArCWVudW0gZm9yY2V3YWtlX2RvbWFpbl9pZCBpZDsK PiArCj4gKwlpZiAoIWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQpCj4gKwkJ cmV0dXJuOwo+ICsKPiArCWZ3X2RvbWFpbnMgJj0gZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5z Owo+ICsKPiArCWZvcl9lYWNoX2Z3X2RvbWFpbl9tYXNrKGRvbWFpbiwgZndfZG9tYWlucywgZGV2 X3ByaXYsIGlkKSB7Cj4gKwkJaWYgKGRvbWFpbi0+d2FrZV9jb3VudCsrKQo+ICsJCQlmd19kb21h aW5zICY9IH4oMSA8PCBpZCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGZ3X2RvbWFpbnMpCj4gKwkJZGV2 X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgZndfZG9tYWlucyk7 Cj4gK30KPiArCj4gICAvKioKPiAgICAqIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0IC0gZ3Jh YiBmb3JjZXdha2UgZG9tYWluIHJlZmVyZW5jZXMKPiAgICAqIEBkZXZfcHJpdjogaTkxNSBkZXZp Y2UgaW5zdGFuY2UKPiBAQCAtNDE2LDQxICs0MzYsMzAgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJZW51 bSBmb3JjZXdha2VfZG9tYWlucyBmd19kb21haW5zKQo+ICAgewo+ICAgCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFp bjsKPiAtCWVudW0gZm9yY2V3YWtlX2RvbWFpbl9pZCBpZDsKPgo+ICAgCWlmICghZGV2X3ByaXYt PnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCkKPiAgIAkJcmV0dXJuOwo+Cj4gICAJV0FSTl9P TihkZXZfcHJpdi0+cG0uc3VzcGVuZGVkKTsKPgo+IC0JZndfZG9tYWlucyAmPSBkZXZfcHJpdi0+ dW5jb3JlLmZ3X2RvbWFpbnM7Cj4gLQo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiArCV9faW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQo ZGV2X3ByaXYsIGZ3X2RvbWFpbnMpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gK30KPgo+IC0JZm9yX2VhY2hfZndfZG9tYWlu X21hc2soZG9tYWluLCBmd19kb21haW5zLCBkZXZfcHJpdiwgaWQpIHsKPiAtCQlpZiAoZG9tYWlu LT53YWtlX2NvdW50KyspCj4gLQkJCWZ3X2RvbWFpbnMgJj0gfigxIDw8IGlkKTsKPiAtCX0KPiAt Cj4gLQlpZiAoZndfZG9tYWlucykKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dh a2VfZ2V0KGRldl9wcml2LCBmd19kb21haW5zKTsKPiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2lycWxvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAg IGVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKPiArewoKQW5kIGtlcm5lbGRvYyBw cm9iYWJseSBpZiB3ZSBhcmUgZmluYWxpc2luZyB0aGlzLgoKPiArCWlmICghZGV2X3ByaXYtPnVu Y29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCkKPiArCQlyZXR1cm47Cj4KPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICsJc3Bpbl9s b2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwo+ICsJX19pbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldChkZXZfcHJpdiwgZndfZG9tYWlucyk7Cj4gICB9CgpTbyB0aGlzLCB3aHkgcGxhaW4gc3Bp bl9sb2NrPyBJdCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBpcnEgY29udGV4dCBub3cgCmJ1dCB0 aGUgY29tbWVudCBkb2VzIG5vdCBzYXkgdGhhdCBhbmQgdGhlcmUgYXJlbid0IGFueSBhc3NlcnQg KGlmIHRoZXkgCmFyZSBldmVuIHBvc3NpYmxlIG5vd2FkYXlzKS4KCj4KPiAtLyoqCj4gLSAqIGlu dGVsX3VuY29yZV9mb3JjZXdha2VfcHV0IC0gcmVsZWFzZSBhIGZvcmNld2FrZSBkb21haW4gcmVm ZXJlbmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiAtICogQGZ3X2Rv bWFpbnM6IGZvcmNld2FrZSBkb21haW5zIHRvIHB1dCByZWZlcmVuY2VzCj4gLSAqCj4gLSAqIFRo aXMgZnVuY3Rpb24gZHJvcHMgdGhlIGRldmljZS1sZXZlbCBmb3JjZXdha2VzIGZvciBzcGVjaWZp ZWQKPiAtICogZG9tYWlucyBvYnRhaW5lZCBieSBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgp Lgo+IC0gKi8KPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2Rv bWFpbnMpCj4gK3N0YXRpYyB2b2lkIF9faW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJCSBlbnVtIGZvcmNld2FrZV9kb21h aW5zIGZ3X2RvbWFpbnMpCj4gICB7Cj4gLQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAgCXN0 cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZG9tYWluOwo+ICAgCWVudW0gZm9y Y2V3YWtlX2RvbWFpbl9pZCBpZDsKPgo+IEBAIC00NTksOCArNDY4LDYgQEAgdm9pZCBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4K PiAgIAlmd19kb21haW5zICY9IGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluczsKPgo+IC0Jc3Bp bl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+IC0KPiAg IAlmb3JfZWFjaF9md19kb21haW5fbWFzayhkb21haW4sIGZ3X2RvbWFpbnMsIGRldl9wcml2LCBp ZCkgewo+ICAgCQlpZiAoV0FSTl9PTihkb21haW4tPndha2VfY291bnQgPT0gMCkpCj4gICAJCQlj b250aW51ZTsKPiBAQCAtNDcxLDEwICs0NzgsMzkgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCWRvbWFpbi0+ d2FrZV9jb3VudCsrOwo+ICAgCQlmd19kb21haW5fYXJtX3RpbWVyKGRvbWFpbik7Cj4gICAJfQo+ ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQgLSByZWxlYXNl IGEgZm9yY2V3YWtlIGRvbWFpbiByZWZlcmVuY2UKPiArICogQGRldl9wcml2OiBpOTE1IGRldmlj ZSBpbnN0YW5jZQo+ICsgKiBAZndfZG9tYWluczogZm9yY2V3YWtlIGRvbWFpbnMgdG8gcHV0IHJl ZmVyZW5jZXMKPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBkcm9wcyB0aGUgZGV2aWNlLWxldmVs IGZvcmNld2FrZXMgZm9yIHNwZWNpZmllZAo+ICsgKiBkb21haW5zIG9idGFpbmVkIGJ5IGludGVs X3VuY29yZV9mb3JjZXdha2VfZ2V0KCkuCj4gKyAqLwo+ICt2b2lkIGludGVsX3VuY29yZV9mb3Jj ZXdha2VfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCWVudW0g Zm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKPiArewo+ICsJdW5zaWduZWQgbG9uZyBpcnFm bGFnczsKPiArCj4gKwlpZiAoIWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQp Cj4gKwkJcmV0dXJuOwo+Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5s b2NrLCBpcnFmbGFncyk7Cj4gKwlfX2ludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2 LCBmd19kb21haW5zKTsKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5j b3JlLmxvY2ssIGlycWZsYWdzKTsKPiAgIH0KPgo+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdh a2VfaXJxdW5sb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAg ICAgIGVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKPiArewo+ICsJaWYgKCFkZXZf cHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0KQo+ICsJCXJldHVybjsKPiArCj4gKwlf X2ludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBmd19kb21haW5zKTsKPiArCXNw aW5fdW5sb2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwo+ICt9Cj4gKwo+ICAgdm9pZCBhc3Nl cnRfZm9yY2V3YWtlc19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gICB7Cj4gICAJc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpkb21haW47 Cj4KClJlZ2FyZHMsCgpUdnJ0a28KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==