From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 05/13] drm/i915: Cache LRCA in the context Date: Mon, 11 Jan 2016 19:41:19 +0000 Message-ID: <5694055F.9020508@intel.com> References: <1452252592-24803-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1452252592-24803-6-git-send-email-tvrtko.ursulin@linux.intel.com> <20160111083859.GO8076@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 9F42B6E3DF for ; Mon, 11 Jan 2016 11:41:21 -0800 (PST) In-Reply-To: <20160111083859.GO8076@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTEvMDEvMTYgMDg6MzgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gRnJpLCBKYW4gMDgs IDIwMTYgYXQgMTE6Mjk6NDRBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+IEZyb206 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+Cj4+IFdlIGFyZSBu b3QgYWxsb3dlZCB0byBjYWxsIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldCBmcm9tIGlycQo+PiBj b250ZXh0IHdpdGhvdXQgdGhlIGJpZyBrZXJuZWwgbG9jayBoZWxkLgo+Pgo+PiBMUkNBIGxpZmV0 aW1lIGlzIHdlbGwgZGVmaW5lZCBzbyBjYWNoZSBpdCBzbyBpdCBjYW4gYmUgbG9va2VkIHVwCj4+ IGNoZWFwbHkgZnJvbSB0aGUgaW50ZXJydXB0IGNvbnRleHQgYW5kIGF0IGNvbW1hbmQgc3VibWlz c2lvbgo+PiB0aW1lLgo+Pgo+PiB2MjogQWRkZWQgaXJxIGNvbnRleHQgcmVhc29uaW5nIHRvIHRo ZSBjb21taXQgbWVzc2FnZS4gKERhbmllbCBWZXR0ZXIpCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4KPiBBIGk5MTVfb2JqX2Zv cl9lYWNoX3ZtYSBtYWNybyB3aXRoIGEKPiBXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoZGV2LT5z dHJ1Y3RfbXV0ZXgpKSB3b3VsZCBiZSBhd2Vzb21lIHRvIHZhbGlkYXRlCj4gdGhpcy4gRXNwZWNp YWxseSBzaW5jZSB0aGlzIGlzIGJ5IGZhciBub3QgdGhlIG9ubHkgdGltZSBJJ3ZlIHNlZW4gdGhp cwo+IGJ1Zy4gTmVlZHMgdG8gYmUgYSBmb2xsb3ctdXAgdGhvdWdoIHRvIGF2b2lkIHN0YWxsaW5n IHRoaXMgZml4Lgo+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIHwgMTUgKysrKysrLS0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICB8ICAxICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICB8 IDQwICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICB8ICAzICsrLQo+PiAgIDQgZmlsZXMgY2hhbmdlZCwg MjYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4+IGluZGV4IDNiMDViZDE4OWVhYi4uNzE0YTQ1Y2Y4YTUxIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBAQCAtMTk3NiwxMiArMTk3NiwxMyBA QCBzdGF0aWMgaW50IGk5MTVfY29udGV4dF9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyB2b2lkIGk5MTVfZHVtcF9scmNfb2JqKHN0 cnVjdCBzZXFfZmlsZSAqbSwKPj4gLQkJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4+IC0JCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaikKPj4g KwkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4+ICsJCQkgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIHsKPj4gICAJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4+ ICAgCXVpbnQzMl90ICpyZWdfc3RhdGU7Cj4+ICAgCWludCBqOwo+PiArCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwo+PiAg IAl1bnNpZ25lZCBsb25nIGdndHRfb2Zmc2V0ID0gMDsKPj4KPj4gICAJaWYgKGN0eF9vYmogPT0g TlVMTCkgewo+PiBAQCAtMTk5MSw3ICsxOTkyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX2xy Y19vYmooc3RydWN0IHNlcV9maWxlICptLAo+PiAgIAl9Cj4+Cj4+ICAgCXNlcV9wcmludGYobSwg IkNPTlRFWFQ6ICVzICV1XG4iLCByaW5nLT5uYW1lLAo+PiAtCQkgICBpbnRlbF9leGVjbGlzdHNf Y3R4X2lkKGN0eF9vYmopKTsKPj4gKwkJICAgaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChjdHgsIHJp bmcpKTsKPj4KPj4gICAJaWYgKCFpOTE1X2dlbV9vYmpfZ2d0dF9ib3VuZChjdHhfb2JqKSkKPj4g ICAJCXNlcV9wdXRzKG0sICJcdE5vdCBib3VuZCBpbiBHR1RUXG4iKTsKPj4gQEAgLTIwNDAsOCAr MjA0MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kdW1wX2xyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKPj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29u dGV4dF9saXN0LCBsaW5rKSB7Cj4+ICAgCQlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBp KSB7Cj4+ICAgCQkJaWYgKHJpbmctPmRlZmF1bHRfY29udGV4dCAhPSBjdHgpCj4+IC0JCQkJaTkx NV9kdW1wX2xyY19vYmoobSwgcmluZywKPj4gLQkJCQkJCSAgY3R4LT5lbmdpbmVbaV0uc3RhdGUp Owo+PiArCQkJCWk5MTVfZHVtcF9scmNfb2JqKG0sIGN0eCwgcmluZyk7Cj4+ICAgCQl9Cj4+ICAg CX0KPj4KPj4gQEAgLTIxMTUsMTEgKzIxMTUsOCBAQCBzdGF0aWMgaW50IGk5MTVfZXhlY2xpc3Rz KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4KPj4gICAJCXNlcV9wcmludGYobSwg Ilx0JWQgcmVxdWVzdHMgaW4gcXVldWVcbiIsIGNvdW50KTsKPj4gICAJCWlmIChoZWFkX3JlcSkg ewo+PiAtCQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmo7Cj4+IC0KPj4gLQkJ CWN0eF9vYmogPSBoZWFkX3JlcS0+Y3R4LT5lbmdpbmVbcmluZ19pZF0uc3RhdGU7Cj4+ICAgCQkJ c2VxX3ByaW50ZihtLCAiXHRIZWFkIHJlcXVlc3QgaWQ6ICV1XG4iLAo+PiAtCQkJCSAgIGludGVs X2V4ZWNsaXN0c19jdHhfaWQoY3R4X29iaikpOwo+PiArCQkJCSAgIGludGVsX2V4ZWNsaXN0c19j dHhfaWQoaGVhZF9yZXEtPmN0eCwgcmluZykpOwo+PiAgIAkJCXNlcV9wcmludGYobSwgIlx0SGVh ZCByZXF1ZXN0IHRhaWw6ICV1XG4iLAo+PiAgIAkJCQkgICBoZWFkX3JlcS0+dGFpbCk7Cj4+ICAg CQl9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRleCA4Y2Y2NTVjNmZjMDMuLmI3N2E1 ZDg0ZWFjMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC04ODEsNiArODgx LDcgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewo+PiAgIAkJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKnN0YXRlOwo+PiAgIAkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7Cj4+ ICAgCQlpbnQgcGluX2NvdW50Owo+PiArCQl1MzIgbHJjYTsKPgo+IGxyY19vZmZzZXQgaW1vLiBD b25zaXN0ZW50IHdpdGggb3VyIG90aGVyIHVzYWdlIGluIHRoZSBkcml2ZXIsIGFuZAo+IGFjdHVh bGx5IHJlYWRhYmxlLiBQbGVhc2UgYXBwbHkgbGliZXJhbGx5IGV2ZXJ5d2hlcmUgZWxzZSAoSSBr bm93IHRoYXQKPiBic2VwYyBjYWxscyBpdCBscmNhLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBmb2xs b3cgYmFkIG5hbWluZyBzdHlsZXMKPiBibGluZGx5KS4KPgo+IFdpdGggdGhhdCBSZXZpZXdlZC1i eTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPgo+PiAgIAl9IGVuZ2lu ZVtJOTE1X05VTV9SSU5HU107Cj4+Cj4+ICAgCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggZmYxNDZhMTVkMzk1Li5mZmUwMDRkZTIyYjAg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC0yNjUsNyArMjY1LDggQEAg aW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGVuYWJsZV9leGVjbGlzdHMKPj4KPj4gICAvKioKPj4gICAgKiBpbnRlbF9leGVjbGlz dHNfY3R4X2lkKCkgLSBnZXQgdGhlIEV4ZWNsaXN0cyBDb250ZXh0IElECj4+IC0gKiBAY3R4X29i ajogTG9naWNhbCBSaW5nIENvbnRleHQgYmFja2luZyBvYmplY3QuCj4+ICsgKiBAY3R4OiBDb250 ZXh0IHRvIGdldCB0aGUgSUQgZm9yCj4+ICsgKiBAcmluZzogRW5naW5lIHRvIGdldCB0aGUgSUQg Zm9yCj4+ICAgICoKPj4gICAgKiBEbyBub3QgY29uZnVzZSB3aXRoIGN0eC0+aWQhIFVuZm9ydHVu YXRlbHkgd2UgaGF2ZSBhIG5hbWUgb3ZlcmxvYWQKPj4gICAgKiBoZXJlOiB0aGUgb2xkIGNvbnRl eHQgSUQgd2UgcGFzcyB0byB1c2Vyc3BhY2UgYXMgYSBoYW5kbGVyIHNvIHRoYXQKPj4gQEAgLTI3 NSwxNCArMjc2LDEyIEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfZXhlY2xpc3RzCj4+ICAgICoKPj4gICAgKiBS ZXR1cm46IDIwLWJpdHMgZ2xvYmFsbHkgdW5pcXVlIGNvbnRleHQgSUQuCj4+ICAgICovCj4+IC11 MzIgaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4 X29iaikKPj4gK3UzMiBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgsCj4+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIHsKPj4g LQl1MzIgbHJjYSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChjdHhfb2JqKSArCj4+IC0JCQlM UkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwo+PiAtCj4+ICAgCS8qIExSQ0EgaXMgcmVxdWlyZWQg dG8gYmUgNEsgYWxpZ25lZCBzbyB0aGUgbW9yZSBzaWduaWZpY2FudCAyMCBiaXRzCj4+ICAgCSAq IGFyZSBnbG9iYWxseSB1bmlxdWUgKi8KPj4gLQlyZXR1cm4gbHJjYSA+PiAxMjsKPj4gKwlyZXR1 cm4gY3R4LT5lbmdpbmVbcmluZy0+aWRdLmxyY2EgPj4gMTI7Cj4+ICAgfQo+Pgo+PiAgIHN0YXRp YyBib29sIGRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCj4+IEBAIC0yOTcsMTMgKzI5NiwxMSBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlX2xpdGVfcmVz dG9yZV93YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIHVpbnQ2NF90IGludGVs X2xyX2NvbnRleHRfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+PiAgIAkJ CQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+ICAgewo+PiAtCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRl Owo+PiArCXVpbnQ2NF90IGxyY2EgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ubHJjYTsKPj4gICAJ dWludDY0X3QgZGVzYyA9IHJpbmctPmN0eF9kZXNjX3RlbXBsYXRlOwo+PiAtCXVpbnQ2NF90IGxy Y2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaikgKwo+PiAtCQkJTFJDX1BQSFdT UF9QTiAqIFBBR0VfU0laRTsKPj4KPj4gICAJZGVzYyB8PSBscmNhOwo+PiAtCWRlc2MgfD0gKHU2 NClpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0eF9vYmopIDw8IEdFTjhfQ1RYX0lEX1NISUZUOwo+ PiArCWRlc2MgfD0gKHU2NClpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0eCwgcmluZykgPDwgR0VO OF9DVFhfSURfU0hJRlQ7Cj4+Cj4+ICAgCXJldHVybiBkZXNjOwo+PiAgIH0KPj4gQEAgLTQ2MSw5 ICs0NTgsNyBAQCBzdGF0aWMgYm9vbCBleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3Qoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAJCQkJCSAgICBleGVjbGlzdF9saW5rKTsK Pj4KPj4gICAJaWYgKGhlYWRfcmVxICE9IE5VTEwpIHsKPj4gLQkJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmN0eF9vYmogPQo+PiAtCQkJCWhlYWRfcmVxLT5jdHgtPmVuZ2luZVtyaW5nLT5p ZF0uc3RhdGU7Cj4+IC0JCWlmIChpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0eF9vYmopID09IHJl cXVlc3RfaWQpIHsKPj4gKwkJaWYgKGludGVsX2V4ZWNsaXN0c19jdHhfaWQoaGVhZF9yZXEtPmN0 eCwgcmluZykgPT0gcmVxdWVzdF9pZCkgewo+PiAgIAkJCVdBUk4oaGVhZF9yZXEtPmVsc3Bfc3Vi bWl0dGVkID09IDAsCj4+ICAgCQkJICAgICAiTmV2ZXIgc3VibWl0dGVkIGhlYWQgcmVxdWVzdFxu Iik7Cj4+Cj4+IEBAIC0xMDIzLDE1ICsxMDE4LDE3IEBAIGludCBsb2dpY2FsX3JpbmdfZmx1c2hf YWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gICB9Cj4+Cj4+ ICAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X2RvX3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAo+PiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiwKPj4g LQkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICsJCQkJICAgc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCkKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBy aW5nLT5kZXY7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBj dHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7Cj4+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPj4gICAJdTY0IGxyY2E7 Cj4+IC0JaW50IHJldCA9IDA7Cj4+ICsJaW50IHJldDsKPj4KPj4gICAJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+PiArCj4+ICAgCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3BpbihjdHhfb2JqLCBHRU44X0xSX0NPTlRFWFRfQUxJR04sCj4+ICAg CQkJUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7Cj4+ICAgCWlmIChyZXQpCj4+IEBA IC0xMDQ3LDYgKzEwNDQsNyBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfZG9fcGluKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgCWlmIChyZXQpCj4+ICAgCQlnb3RvIHVu cGluX2N0eF9vYmo7Cj4+Cj4+ICsJY3R4LT5lbmdpbmVbcmluZy0+aWRdLmxyY2EgPSBscmNhOwo+ PiAgIAljdHhfb2JqLT5kaXJ0eSA9IHRydWU7Cj4+Cj4+ICAgCS8qIEludmFsaWRhdGUgR3VDIFRM Qi4gKi8KPj4gQEAgLTEwNjUsMTEgKzEwNjMsOSBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRl eHRfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4+ICAgewo+PiAgIAlpbnQg cmV0ID0gMDsKPj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJxLT5yaW5nOwo+ PiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gcnEtPmN0eC0+ZW5naW5l W3JpbmctPmlkXS5zdGF0ZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9 IHJxLT5yaW5nYnVmOwo+Pgo+PiAgIAlpZiAocnEtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5waW5f Y291bnQrKyA9PSAwKSB7Cj4+IC0JCXJldCA9IGludGVsX2xyX2NvbnRleHRfZG9fcGluKHJpbmcs IGN0eF9vYmosIHJpbmdidWYpOwo+PiArCQlyZXQgPSBpbnRlbF9scl9jb250ZXh0X2RvX3Bpbihy aW5nLCBycS0+Y3R4KTsKPj4gICAJCWlmIChyZXQpCj4+ICAgCQkJZ290byByZXNldF9waW5fY291 bnQ7Cj4+ICAgCX0KPj4gQEAgLTEwOTEsNiArMTA4Nyw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4 dF91bnBpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+PiAgIAkJaWYgKC0tcnEt PmN0eC0+ZW5naW5lW3JpbmctPmlkXS5waW5fY291bnQgPT0gMCkgewo+PiAgIAkJCWludGVsX3Vu cGluX3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+PiAgIAkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0 X3VucGluKGN0eF9vYmopOwo+PiArCQkJcnEtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5scmNhID0g MDsKPj4gICAJCX0KPj4gICAJfQo+PiAgIH0KPj4gQEAgLTE5NjAsMTAgKzE5NTcsNyBAQCBzdGF0 aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbgo+PiAgIAkJZ290byBlcnJvcjsKPj4KPj4gICAJLyogQXMgdGhp cyBpcyB0aGUgZGVmYXVsdCBjb250ZXh0LCBhbHdheXMgcGluIGl0ICovCj4+IC0JcmV0ID0gaW50 ZWxfbHJfY29udGV4dF9kb19waW4oCj4+IC0JCQlyaW5nLAo+PiAtCQkJcmluZy0+ZGVmYXVsdF9j b250ZXh0LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlLAo+PiAtCQkJcmluZy0+ZGVmYXVsdF9jb250 ZXh0LT5lbmdpbmVbcmluZy0+aWRdLnJpbmdidWYpOwo+PiArCXJldCA9IGludGVsX2xyX2NvbnRl eHRfZG9fcGluKHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCk7Cj4+ICAgCWlmIChyZXQpIHsK Pj4gICAJCURSTV9FUlJPUigKPj4gICAJCQkiRmFpbGVkIHRvIHBpbiBhbmQgbWFwIHJpbmdidWZm ZXIgJXM6ICVkXG4iLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+PiBpbmRleCBkZTQxYWQ2 Y2Q2M2QuLmY5ZGI1ZjE4N2Q3NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4g QEAgLTEwNiw2ICsxMDYsOCBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPj4gICAJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPj4gICB1 aW50NjRfdCBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2NvbnRleHQg KmN0eCwKPj4gICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPj4gK3Uz MiBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4+ICsJ CQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPj4KPj4gICAvKiBFeGVjbGlzdHMg Ki8KPj4gICBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cyk7Cj4+IEBAIC0xMTMsNyArMTE1LDYgQEAg c3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXM7Cj4+ICAgaW50IGludGVsX2V4ZWNsaXN0c19z dWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4+ICAgCQkJ ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3MsCj4+ICAgCQkJICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpOwo+PiAtdTMyIGludGVsX2V4ZWNsaXN0c19jdHhf aWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmopOwo+Pgo+PiAgIHZvaWQgaW50 ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+PiAgIHZv aWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKTsKPj4gLS0KPj4gMS45LjEKPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCkhvdyBhYm91dCBjYWNoaW5nIHRoZSBXSE9MRSBk ZXNjcmlwdG9yIHNvIHRoYXQgcmV0cmlldmFsIGJlY29tZXMgCnRyaXZpYWwsIHJldHJpZXZpbmcg dGhlIGNvbnRleHQgSUQgYmVjb21lcyBhbG1vc3QgYXMgdHJpdmlhbCwgYXMKZG9lcyByZXRyaWV2 aW5nIHRoZSBMUkNBIChhbGwgdGhlc2UgY291bGQgYmUgaW5saW5lZCkgYW5kIHRoZSBzaW5nbGUg CmNhbGN1bGF0ZS1hbmQtY2FjaGUgZnVuY3Rpb24gY2FuIGJlIG5pY2VseSBkb2N1bWVudGVkIGFz IHRvIGhvdyBhIApkZXNjcmlwdG9yIGVuY29kZXMgTFJDQSBldGMuIFNvbWV0aGluZyBsaWtlIHRo aXMgLi4uCgovKioKICAqIGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoKSAtIGNh bGN1bGF0ZSAmIGNhY2hlIHRoZQogICoJCQkJCSAgZGVzY3JpcHRvciBmb3IgYSBwaW5uZWQKICAq IAkJCQkJICBjb250ZXh0CiAgKiBAY3R4OiBDb250ZXh0IHRvIHdvcmsgb24KICAqIEByaW5nOiBF bmdpbmUgdGhlIGRlc2NyaXB0b3Igd2lsbCBiZSB1c2VkIHdpdGgKICAqCiAgKiBUaGUgY29udGV4 dCBkZXNjcmlwdG9yIGVuY29kZXMgdmFyaW91cyBhdHRyaWJ1dGVzIG9mIGEgY29udGV4dCwKICAq IGluY2x1ZGluZyBpdHMgR1RUIGFkZHJlc3MgYW5kIHNvbWUgZmxhZ3MuIEJlY2F1c2UgaXQncyBm YWlybHkKICAqIGV4cGVuc2l2ZSB0byBjYWxjdWxhdGUsIHdlJ2xsIGp1c3QgZG8gaXQgb25jZSBh bmQgY2FjaGUgdGhlIHJlc3VsdCwKICAqIHdoaWNoIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGNv bnRleHQgaXMgdW5waW5uZWQuCiAgKgogICogVGhpcyBpcyB3aGF0IGEgZGVzY3JpcHRvciBsb29r cyBsaWtlLCBmcm9tIExTQiB0byBNU0I6CiAgKgliaXRzIDAtMTE6CWZsYWdzLCBHRU44X0NUWF8q IChjYWNoZWQgaW4gY3R4X2Rlc2NfdGVtcGxhdGUpCiAgKgliaXRzIDEyLTMxOglMUkNBLCBHVFQg YWRkcmVzcyBvZiAodGhlIEhXU1Agb2YpIHRoaXMgY29udGV4dAogICoJYml0cyAzMi01MToJY3R4 IElELCBhIGdsb2JhbGx5IHVuaXF1ZSB0YWcgKHRoZSBMUkNBIGFnYWluISkKICAqCWJpdHMgNTIt NjM6CXJlc2VydmVkLCBtYXkgZW5jb2RlIHRoZSBlbmdpbmUgSUQgKGZvciBHdUMpCiAgKi8Kc3Rh dGljIHZvaWQKaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4LAoJCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKewogICAg ICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajsKCXVpbnQ2NF90IGxyY2Es IGRlc2M7CgoJY3R4X29iaiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKCWxyY2EgPSBp OTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaikgKyBMUkNfUFBIV1NQX1BOICogUEFHRV9T SVpFOwoKCWRlc2MgPSByaW5nLT5jdHhfZGVzY190ZW1wbGF0ZTsJCQkvKiBiaXRzICAwLTExICov CglkZXNjIHw9IGxyY2E7CQkJCQkvKiBiaXRzIDEyLTMxICovCglkZXNjIHw9IChscmNhID4+IFBB R0VfU0hJRlQpIDw8IDMyOwkJLyogYml0cyAzMi01MSAqLwoKCWN0eC0+ZW5naW5lW3JpbmctPmlk XS5jdHhfZGVzYyA9IGRlc2M7Cn0KCi8qKgogICogaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9y KCkgLSBnZXQgdGhlIGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQKICAqIAkJCQkgICBjb250 ZXh0L2VuZ2luZSBjb21iaW5hdGlvbgogICogQGN0eDogQ29udGV4dCB0byBnZXQgdGhlIElEIGZv cgogICogQHJpbmc6IEVuZ2luZSB0byBnZXQgdGhlIElEIGZvcgogICoKICAqIE5vdyBqdXN0IGEg dHJpdmlhbCBhY2Nlc3Nvciwgc2luY2UgdGhlIHZhbHVlIHdhcyBjb21wdXRlZCBhbmQgY2FjaGVk CiAgKiBhYm92ZSBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgY29udGV4dCB3YXMgcGlubmVkLgogICoK ICAqIFJldHVybjogNjQtYml0IGNvbnRleHQgZGVzY3JpcHRvciAoZW5jb2RlcyBMUkNBIGFuZCB2 YXJpb3VzIGZsYWdzKQogICovCnVpbnQ2NF90IGlubGluZQppbnRlbF9scl9jb250ZXh0X2Rlc2Ny aXB0b3Ioc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcpCnsKCXJldHVybiBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uY3R4X2Rlc2M7Cn0K Ci8qKgoqIGludGVsX2xyX2NvbnRleHRfYWRkcmVzcygpIC0gZ2V0IHRoZSBHVFQgYWRkcmVzcyBv ZiAodGhlIEhXU1Agb2YpIHRoZQoqCQkJICAgICAgIHNwZWNpZmllZCBjb250ZXh0L2VuZ2luZSBj b21iaW5hdGlvbgoqIEBjdHg6IENvbnRleHQgdG8gZ2V0IHRoZSBJRCBmb3IKKiBAcmluZzogRW5n aW5lIHRvIGdldCB0aGUgSUQgZm9yCioKKiBUaGUgYWRkcmVzcyAoTFJDQSkgaXMgYSBwb3J0aW9u IG9mIHRoZSBjb250ZXh0IGRlc2NyaXB0b3IsIHNvIHdlIGNhbgoqIGp1c3QgZXh0cmFjdCB0aGUg cmVxdWlyZWQgcGFydCBmcm9tIHRoZSBjYWNoZWQgZGVzY3JpcHRvci4KKgoqIFJldHVybjogMzIt Yml0IEdUVCBhZGRyZXNzCiovCnVpbnQzMl90IGlubGluZQppbnRlbF9scl9jb250ZXh0X2FkZHJl c3Moc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCnsKCXJldHVybiAodTMyKWludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihjdHgsIHJp bmcpICYgUEFHRV9NQVNLOwp9CgovKioKICAqIGludGVsX2V4ZWNsaXN0c19jdHhfaWQoKSAtIGdl dCB0aGUgRXhlY2xpc3RzIENvbnRleHQgSUQKICAqIEBjdHg6IENvbnRleHQgdG8gZ2V0IHRoZSBJ RCBmb3IKICAqIEByaW5nOiBFbmdpbmUgdG8gZ2V0IHRoZSBJRCBmb3IKICAqCiAgKiBEbyBub3Qg Y29uZnVzZSB3aXRoIGN0eC0+aWQhIFVuZm9ydHVuYXRlbHkgd2UgaGF2ZSBhIG5hbWUgb3Zlcmxv YWQKICAqIGhlcmU6IHRoZSBvbGQgY29udGV4dCBJRCB3ZSBwYXNzIHRvIHVzZXJzcGFjZSBhcyBh IGhhbmRsZXIgc28gdGhhdAogICogdGhleSBjYW4gcmVmZXIgdG8gYSBjb250ZXh0LCBhbmQgdGhl IG5ldyBjb250ZXh0IElEIHdlIHBhc3MgdG8gdGhlCiAgKiBFTFNQIHNvIHRoYXQgdGhlIEdQVSBj YW4gaW5mb3JtIHVzIG9mIHRoZSBjb250ZXh0IHN0YXR1cyB2aWEKICAqIGludGVycnVwdHMuCiAg KgogICogVGhlIGNvbnRleHQgSUQgaXMgYSBwb3J0aW9uIG9mIHRoZSBjb250ZXh0IGRlc2NyaXB0 b3IsIHNvIHdlIGNhbgogICoganVzdCBleHRyYWN0IHRoZSByZXF1aXJlZCBwYXJ0IGZyb20gdGhl IGNhY2hlZCBkZXNjcmlwdG9yLgogICoKICAqIFJldHVybjogMjAtYml0IGdsb2JhbGx5IHVuaXF1 ZSBjdHggSUQgKGFjdHVhbGx5LCBhIEdUVCBwYWdlIG51bWJlcikKICAqLwp1aW50MzJfdCBpbmxp bmUKaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAoJCSAg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQp7CglyZXR1cm4gKHUzMikoaW50ZWxf bHJfY29udGV4dF9kZXNjcmlwdG9yKGN0eCwgcmluZykgPj4gMzIpOwp9CgouLi4gYW5kIGluc2Vy dCBhIGNhbGwgdG8gaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZSgpIGludG8gdGhl IAphcHByb3ByaWF0ZSBzcG90IGluIGludGVsX2xyX2NvbnRleHRfZG9fcGluKCkuCgouRGF2ZS4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK