From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankitprasad Sharma Subject: Re: [PATCH 3/4] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 16 Sep 2015 14:31:38 +0530 Message-ID: <1442394098.26385.48.camel@ankitprasad-desktop> References: <1442306007-10792-1-git-send-email-ankitprasad.r.sharma@intel.com> <1442306007-10792-4-git-send-email-ankitprasad.r.sharma@intel.com> <55F835E9.6080301@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 209CF6EAEB for ; Wed, 16 Sep 2015 02:19:30 -0700 (PDT) In-Reply-To: <55F835E9.6080301@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE1LTA5LTE1IGF0IDE2OjE0ICswMTAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToK PiBPbiAwOS8xNS8yMDE1IDA5OjMzIEFNLCBhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20g d3JvdGU6Cj4gPiBGcm9tOiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51 az4KPiA+Cj4gPiBJZiB3ZSBydW4gb3V0IG9mIHN0b2xlbiBtZW1vcnkgd2hlbiB0cnlpbmcgdG8g YWxsb2NhdGUgYW4gb2JqZWN0LCBzZWUgaWYKPiA+IHdlIGNhbiByZWFwIGVub3VnaCBwdXJnZWFi bGUgb2JqZWN0cyB0byBmcmVlIHVwIGVub3VnaCBjb250aWd1b3VzIGZyZWUKPiA+IHNwYWNlIGZv ciB0aGUgYWxsb2NhdGlvbi4gVGhpcyBpcyBpbiBwcmluY2lwbGUgdmVyeSBtdWNoIGxpa2UgZXZp Y3RpbmcKPiA+IG9iamVjdHMgdG8gZnJlZSB1cCBlbm91Z2ggY29udGlndW91cyBzcGFjZSBpbiB0 aGUgdm1hIHdoZW4gYmluZGluZwo+ID4gYSBuZXcgb2JqZWN0IC0gYW5kIHlvdSB3aWxsIGJlIGZv cmdpdmVuIGZvciB0aGlua2luZyB0aGF0IHRoZSBjb2RlIGxvb2tzCj4gPiB2ZXJ5IHNpbWlsYXIu Cj4gPgo+ID4gQXQgdGhlIG1vbWVudCwgd2UgZG8gbm90IGFsbG93IHVzZXJzcGFjZSB0byBhbGxv Y2F0ZSBvYmplY3RzIGluIHN0b2xlbiwKPiA+IHNvIHRoZXJlIGlzIG5laXRoZXIgdGhlIG1lbW9y eSBwcmVzc3VyZSB0byB0cmlnZ2VyIHN0b2xlbiBldmljdGlvbiBub3IKPiA+IGFueSBwdXJnZWFi bGUgb2JqZWN0cyBpbnNpZGUgdGhlIHN0b2xlbiBhcmVuYS4gSG93ZXZlciwgdGhpcyB3aWxsIGNo YW5nZQo+ID4gaW4gdGhlIG5lYXIgZnV0dXJlLCBhbmQgc28gYmV0dGVyIG1hbmFnZW1lbnQgYW5k IGRlZnJhZ21lbnRhdGlvbiBvZgo+ID4gc3RvbGVuIG1lbW9yeSB3aWxsIGJlY29tZSBhIHJlYWwg aXNzdWUuCj4gPgo+ID4gdjI6IFJlbWVtYmVyIHRvIHJlbW92ZSB0aGUgZHJtX21tX25vZGUuCj4g Pgo+ID4gdjM6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQp Cj4gPgo+ID4gdjQ6IGNvcnJlY3RlZCBpZi1lbHNlIGJyYWNlcyBmb3JtYXQgKFR2cnRrby9rZXJu ZWxkb2MpCj4gPgo+ID4gdjU6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRs eSAoQW5raXQpCj4gPiBBZGRlZCBhIHNlcGVyYXRlIGxpc3QgdG8gbWFpbnRhaW4gcHVyZ2FibGUg b2JqZWN0cyBmcm9tIHN0b2xlbiBtZW1vcnkKPiA+IHJlZ2lvbiAoQ2hyaXMvRGFuaWVsKQo+ID4K PiA+IFRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gU2lnbmVkLW9mZi1ieTog QW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Cj4gPiAt LS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgfCAgIDQgKy0K PiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQo+ ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNiArKysKPiA+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgfCAxNzYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgICAgICAgIHwgICA0ICstCj4gPiAgIDUgZmlsZXMgY2hhbmdlZCwgMTg3IGluc2VydGlv bnMoKyksIDMwIGRlbGV0aW9ucygtKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gPiBpbmRleCA3YTI4ZGU1Li4wZGI4YzQ3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gPiBAQCAtMTc5LDcgKzE3OSw3IEBAIGRlc2NyaWJlX29iaihzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPiAgIAkJ CXNlcV9wdXRzKG0sICIpIik7Cj4gPiAgIAl9Cj4gPiAgIAlpZiAob2JqLT5zdG9sZW4pCj4gPiAt CQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7 Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5i YXNlLnN0YXJ0KTsKPiA+ICAgCWlmIChvYmotPnBpbl9kaXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFw cGFibGUpIHsKPiA+ICAgCQljaGFyIHNbM10sICp0ID0gczsKPiA+ICAgCQlpZiAob2JqLT5waW5f ZGlzcGxheSkKPiA+IEBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIGludCBvYmpfcmFua19ieV9z dG9sZW4odm9pZCAqcHJpdiwKPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiID0K PiA+ICAgCQljb250YWluZXJfb2YoQiwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIG9ial9l eGVjX2xpbmspOwo+ID4KPiA+IC0JcmV0dXJuIGEtPnN0b2xlbi0+c3RhcnQgLSBiLT5zdG9sZW4t PnN0YXJ0Owo+ID4gKwlyZXR1cm4gYS0+c3RvbGVuLT5iYXNlLnN0YXJ0IC0gYi0+c3RvbGVuLT5i YXNlLnN0YXJ0Owo+ID4gICB9Cj4gPgo+ID4gICBzdGF0aWMgaW50IGk5MTVfZ2VtX3N0b2xlbl9s aXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gPiBpbmRleCBlNmVmMDgzLi4zN2VlMzJkIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTg0MSw2ICs4NDEsMTIgQEAgc3RydWN0IGk5MTVfY3R4X2hh bmdfc3RhdHMgewo+ID4gICAJYm9vbCBiYW5uZWQ7Cj4gPiAgIH07Cj4gPgo+ID4gK3N0cnVjdCBp OTE1X3N0b2xlbl9ub2RlIHsKPiA+ICsJc3RydWN0IGRybV9tbV9ub2RlIGJhc2U7Cj4gPiArCXN0 cnVjdCBsaXN0X2hlYWQgbW1fbGluazsKPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKPiA+ICt9Owo+ID4gKwo+ID4gICAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUg dmFsdWUgcHJldmlvdXNseSB1c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KPiA+ICAgI2RlZmlu ZSBERUZBVUxUX0NPTlRFWFRfSEFORExFIDAKPiA+Cj4gPiBAQCAtMTI2OCw2ICsxMjc0LDEzIEBA IHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gPiAgIAkgKi8KPiA+ICAgCXN0cnVjdCBsaXN0X2hlYWQg dW5ib3VuZF9saXN0Owo+ID4KPiA+ICsJLyoqCj4gPiArCSAqIExpc3Qgb2Ygc3RvbGVuIG9iamVj dHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKPiA+ICsJICogdGh1cyBh dmFpbGFibGUgZm9yIHJlYXBpbmcgaWYgd2UgbmVlZCBtb3JlIHNwYWNlIGZvciBhIG5ldwo+ID4g KwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJnZWFibGUuCj4g PiArCSAqLwo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHN0b2xlbl9saXN0Owo+ID4gKwo+ID4gICAJ LyoqIFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwo+ID4gICAJdW5zaWduZWQg bG9uZyBzdG9sZW5fYmFzZTsgLyogbGltaXRlZCB0byBsb3cgbWVtb3J5ICgzMi1iaXQpICovCj4g Pgo+ID4gQEAgLTIwMjYsNyArMjAzOSw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsK PiA+ICAgCXN0cnVjdCBsaXN0X2hlYWQgdm1hX2xpc3Q7Cj4gPgo+ID4gICAJLyoqIFN0b2xlbiBt ZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBieSBzaG1lbS4g Ki8KPiA+IC0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47Cj4gPiArCXN0cnVjdCBpOTE1X3N0 b2xlbl9ub2RlICpzdG9sZW47Cj4gPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owo+ ID4KPiA+ICAgCXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdTXTsKPiA+ IEBAIC0yMDM0LDYgKzIwNDcsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gPiAg IAlzdHJ1Y3QgbGlzdF9oZWFkIG9ial9leGVjX2xpbms7Cj4gPgo+ID4gICAJc3RydWN0IGxpc3Rf aGVhZCBiYXRjaF9wb29sX2xpbms7Cj4gPiArCXN0cnVjdCBsaXN0X2hlYWQgdG1wX2xpbms7Cj4g Pgo+ID4gICAJLyoqCj4gPiAgIAkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGlzIG9uIHRo ZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCj4gPiBAQCAtMjE1MCw2ICsyMTY0LDcgQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewo+ID4gICAJfTsKPiA+ICAgfTsKPiA+ICAgI2RlZmlu ZSB0b19pbnRlbF9ibyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QsIGJhc2UpCj4gPiArI2RlZmluZSBJOTE1X0JPX0lTX0FDVElWRShfX29iaikgKF9fb2JqLT5h Y3RpdmUpCj4gPgo+ID4gICB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvbGQsCj4gPiAgIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpuZXcsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IGluZGV4IDY1NjhhN2YuLjg1MDI1 YjEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiBAQCAtNDIyOCw2ICs0MjI4 LDIwIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiA+ICAgCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEICYmIG9i ai0+cGFnZXMgPT0gTlVMTCkKPiA+ICAgCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUob2JqKTsK PiA+Cj4gPiArCWlmIChvYmotPnN0b2xlbikgewo+ID4gKwkJc3dpdGNoIChvYmotPm1hZHYpIHsK PiA+ICsJCWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgo+ID4gKwkJCWxpc3RfZGVsX2luaXQoJm9i ai0+c3RvbGVuLT5tbV9saW5rKTsKPiA+ICsJCQlicmVhazsKPiA+ICsJCWNhc2UgSTkxNV9NQURW X0RPTlRORUVEOgo+ID4gKwkJCWxpc3RfbW92ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCj4gPiAr CQkJCSAgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7Cj4gPiArCQkJYnJlYWs7Cj4gPiArCQlk ZWZhdWx0Ogo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiAgIAlhcmdz LT5yZXRhaW5lZCA9IG9iai0+bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQ7Cj4gPgo+ID4gICBv dXQ6Cj4gPiBAQCAtNDI0OCw2ICs0MjYyLDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4gICAJSU5JVF9MSVNUX0hFQUQoJm9i ai0+b2JqX2V4ZWNfbGluayk7Cj4gPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFfbGlzdCk7 Cj4gPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5iYXRjaF9wb29sX2xpbmspOwo+ID4gKwlJTklU X0xJU1RfSEVBRCgmb2JqLT50bXBfbGluayk7Cj4gPgo+ID4gICAJb2JqLT5vcHMgPSBvcHM7Cj4g Pgo+ID4gQEAgLTQ4OTgsNiArNDkxMyw3IEBAIGk5MTVfZ2VtX2xvYWQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4dF9saXN0KTsK PiA+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKPiA+ICAg CUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4gPiArCUlOSVRfTElT VF9IRUFEKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOwo+ID4gICAJSU5JVF9MSVNUX0hFQUQo JmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKPiA+ICAgCWZvciAoaSA9IDA7IGkgPCBJOTE1X05V TV9SSU5HUzsgaSsrKQo+ID4gICAJCWluaXRfcmluZ19saXN0cygmZGV2X3ByaXYtPnJpbmdbaV0p Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiA+IGluZGV4IDk5ZjJi Y2UuLjQzMGUwYjAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMKPiA+IEBAIC01Miw4ICs1Miw4IEBAIGludCBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gICAJCXJldHVybiAtRU5PREVW Owo+ID4KPiA+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Cj4gPiAt CXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgbm9kZSwgc2l6 ZSwgYWxpZ25tZW50LAo+ID4gLQkJCQkgRFJNX01NX1NFQVJDSF9ERUZBVUxUKTsKPiA+ICsJcmV0 ID0gZHJtX21tX2luc2VydF9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBub2RlLAo+ID4gKwkJ CQkgc2l6ZSwgYWxpZ25tZW50LCBEUk1fTU1fU0VBUkNIX0RFRkFVTFQpOwo+IAo+IFRoZXJlIGlz IG5vIGNoYW5nZSBoZXJlLgo+IAo+ID4gICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+bW0uc3Rv bGVuX2xvY2spOwo+ID4KPiA+ICAgCXJldHVybiByZXQ7Cj4gPiBAQCAtNDA3LDE4ICs0MDcsMTkg QEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19zdG9sZW4oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+ICAgCWtmcmVlKG9iai0+cGFnZXMpOwo+ID4gICB9 Cj4gPgo+ID4gLQo+ICA+Cj4gPiAgIHN0YXRpYyB2b2lkCj4gPiAgIGk5MTVfZ2VtX29iamVjdF9y ZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4gICB7Cj4g PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5k ZXZfcHJpdmF0ZTsKPiA+Cj4gPiAgIAlpZiAob2JqLT5zdG9sZW4pIHsKPiA+IC0JCWk5MTVfZ2Vt X3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOwo+ID4gKwkJbGlzdF9k ZWwoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsKPiA+ICsJCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwgJm9iai0+c3RvbGVuLT5iYXNlKTsKPiA+ICAgCQlrZnJlZShvYmotPnN0 b2xlbik7Cj4gPiAgIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwo+ID4gICAJfQo+ID4gICB9Cj4gPiAr Cj4gPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9n ZW1fb2JqZWN0X3N0b2xlbl9vcHMgPSB7Cj4gPiAgIAkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlc19zdG9sZW4sCj4gPiAgIAkucHV0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0 X3B1dF9wYWdlc19zdG9sZW4sCj4gPiBAQCAtNDI3LDcgKzQyOCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMg PSB7Cj4gPgo+ID4gICBzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ID4gICBf aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ IC0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCj4gPiArCQkJICAgICAgIHN0 cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW4pCj4gPiAgIHsKPiA+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPgo+ID4gQEAgLTQzNSwxNyArNDM2LDIxIEBAIF9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gICAJ aWYgKG9iaiA9PSBOVUxMKQo+ID4gICAJCXJldHVybiBOVUxMOwo+ID4KPiA+IC0JZHJtX2dlbV9w cml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKPiA+ICsJ ZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5iYXNl LnNpemUpOwo+ID4gICAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0 X3N0b2xlbl9vcHMpOwo+ID4KPiA+ICAgCW9iai0+cGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0ZV9m b3Jfc3RvbGVuKGRldiwKPiA+IC0JCQkJCQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7 Cj4gPiArCQkJCQkJICBzdG9sZW4tPmJhc2Uuc3RhcnQsCj4gPiArCQkJCQkJICBzdG9sZW4tPmJh c2Uuc2l6ZSk7Cj4gPiAgIAlpZiAob2JqLT5wYWdlcyA9PSBOVUxMKQo+ID4gICAJCWdvdG8gY2xl YW51cDsKPiA+Cj4gPiAgIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gPiAgIAlv YmotPnN0b2xlbiA9IHN0b2xlbjsKPiA+Cj4gPiArCXN0b2xlbi0+b2JqID0gb2JqOwo+ID4gKwlJ TklUX0xJU1RfSEVBRCgmc3RvbGVuLT5tbV9saW5rKTsKPiA+ICsKPiA+ICAgCW9iai0+YmFzZS5y ZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9HRU1fRE9NQUlOX0dUVDsK PiA+ICAgCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6 IEk5MTVfQ0FDSEVfTk9ORTsKPiA+Cj4gPiBAQCAtNDU2LDM2ICs0NjEsMTU3IEBAIGNsZWFudXA6 Cj4gPiAgIAlyZXR1cm4gTlVMTDsKPiA+ICAgfQo+ID4KPiA+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCj4gPiAtaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdTY0IHNpemUpCj4gPiArc3RhdGljIGJvb2wgbWFya19mcmVlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKPiA+ICt7 Cj4gPiArCWlmIChvYmotPnN0b2xlbiA9PSBOVUxMKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+IAo+ IEFzIENocmlzIHNhaWQsIGp1c3QgV0FSTl9PTiBpbnN0ZWFkIG9mIEJVR19PTiBwbGVhc2UuCj4g Cj4gPiArCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQo+ID4gKwkJcmV0dXJu IGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAob2JqLT5waW5fZGlzcGxheSkKPiA+ICsJCXJldHVybiBm YWxzZTsKPiA+ICsKPiA+ICsJaWYgKEk5MTVfQk9fSVNfQUNUSVZFKG9iaikpCj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gCj4gQ2hyaXMgYWxyZWFkeSBzcG90dGVkIHRoaXMgd2lsbCBwcmV2ZW50IGNh bGxlcnMgZnJvbSB3b3JraW5nIGFzIHRoZXkgZXhwZWN0Lgo+IAo+ID4gKwlsaXN0X2FkZCgmb2Jq LT50bXBfbGluaywgdW53aW5kKTsKPiA+ICsJcmV0dXJuIGRybV9tbV9zY2FuX2FkZF9ibG9jaygm b2JqLT5zdG9sZW4tPmJhc2UpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50Cj4gPiArc3Rv bGVuX2V2aWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCj4g PiAgIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiAtCXN0 cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOwo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHVud2luZCwg ZXZpY3Q7Cj4gPiArCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICppdGVyOwo+ID4gICAJaW50IHJl dDsKPiA+Cj4gPiAtCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVu KSkKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4gKwlkcm1fbW1faW5pdF9zY2FuKCZkZXZfcHJpdi0+ bW0uc3RvbGVuLCBzaXplLCAwLCAwKTsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnVud2luZCk7Cj4g PiArCj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5tbS5zdG9sZW5f bGlzdCwgbW1fbGluaykgewo+ID4gKwkJaWYgKEk5MTVfQk9fSVNfQUNUSVZFKGl0ZXItPm9iaikp Cj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwg JnVud2luZCkpCj4gPiArCQkJZ290byBmb3VuZDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QsIG1tX2xpbmspIHsK PiA+ICsJCWlmICghSTkxNV9CT19JU19BQ1RJVkUoaXRlci0+b2JqKSkKPiA+ICsJCQljb250aW51 ZTsKPiA+ICsKPiA+ICsJCWlmIChtYXJrX2ZyZWUoaXRlci0+b2JqLCAmdW53aW5kKSkKPiA+ICsJ CQlnb3RvIGZvdW5kOwo+ID4gKwl9Cj4gID4gKwo+ID4gK2ZvdW5kOgo+ID4gKwlJTklUX0xJU1Rf SEVBRCgmZXZpY3QpOwo+ID4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2luZCkpIHsKPiA+ICsJ CW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnVud2luZCwKPiA+ICsJCQkJICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0LAo+ID4gKwkJCQkgICAgICAgdG1wX2xpbmspOwo+ID4gKwkJbGlz dF9kZWxfaW5pdCgmb2JqLT50bXBfbGluayk7Cj4gPiArCj4gPiArCQlpZiAoZHJtX21tX3NjYW5f cmVtb3ZlX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFzZSkpIHsKPiA+ICsJCQlsaXN0X2FkZCgmb2Jq LT50bXBfbGluaywgJmV2aWN0KTsKPiA+ICsJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9i ai0+YmFzZSk7Cj4gPiArCQl9Cj4gCj4gSW4gd2hhdCBjaXJjdW1zdGFuY2VzIGNhbiBkcm1fbW1f c2Nhbl9yZW1vdmVfYmxvY2sgZmFpbD8KSXQgd29ya3Mgc29tZSB0aGluZyBsaWtlIHRoaXM6Cklm IHRoZXJlIGFyZSAxMCBwdXJnYWJsZSBub2RlcyBpbiB0aGUgdW53aW5kIGxpc3QgYW5kIDQgb2Yg dGhlbSBhcmUKcG9zaXRpb25lZCBpbiBhIHdheSB0byByZWFwIGVub3VnaCBjb250aWd1b3VzIHNw YWNlIGZvciB0aGUgbmV3IG9iamVjdAoobm90IG5lY2Vzc2FyaWx5IHB1cmdpbmcgYWxsIG5vZGVz IHdpbGwgZ2l2ZSB1cyB0aGUgYW1vdW50IG9mIHNwYWNlIHdlCm5lZWQpLCB0aGVuIGZvciB0aGUg cmVtYWluaW5nIDYgbm9kZXMgZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrIHdpbGwKZmFpbCwgd2hp bGUgdGhlIHJlc3Qgd2lsbCBiZSByZW1vdmVkIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSBuZXcgb2Jq ZWN0LgoKVGhhbmtzLApBbmtpdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK