From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 4/6] drm/i915: Add support for stealing purgable stolen pages Date: Thu, 8 Oct 2015 11:43:29 +0100 Message-ID: <561648D1.3030706@linux.intel.com> References: <1444285469-8187-1-git-send-email-ankitprasad.r.sharma@intel.com> <1444285469-8187-5-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 47B256E203 for ; Thu, 8 Oct 2015 03:43:32 -0700 (PDT) In-Reply-To: <1444285469-8187-5-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDgvMTAvMTUgMDc6MjQsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4K Pgo+IElmIHdlIHJ1biBvdXQgb2Ygc3RvbGVuIG1lbW9yeSB3aGVuIHRyeWluZyB0byBhbGxvY2F0 ZSBhbiBvYmplY3QsIHNlZSBpZgo+IHdlIGNhbiByZWFwIGVub3VnaCBwdXJnZWFibGUgb2JqZWN0 cyB0byBmcmVlIHVwIGVub3VnaCBjb250aWd1b3VzIGZyZWUKPiBzcGFjZSBmb3IgdGhlIGFsbG9j YXRpb24uIFRoaXMgaXMgaW4gcHJpbmNpcGxlIHZlcnkgbXVjaCBsaWtlIGV2aWN0aW5nCj4gb2Jq ZWN0cyB0byBmcmVlIHVwIGVub3VnaCBjb250aWd1b3VzIHNwYWNlIGluIHRoZSB2bWEgd2hlbiBi aW5kaW5nCj4gYSBuZXcgb2JqZWN0IC0gYW5kIHlvdSB3aWxsIGJlIGZvcmdpdmVuIGZvciB0aGlu a2luZyB0aGF0IHRoZSBjb2RlIGxvb2tzCj4gdmVyeSBzaW1pbGFyLgo+Cj4gQXQgdGhlIG1vbWVu dCwgd2UgZG8gbm90IGFsbG93IHVzZXJzcGFjZSB0byBhbGxvY2F0ZSBvYmplY3RzIGluIHN0b2xl biwKPiBzbyB0aGVyZSBpcyBuZWl0aGVyIHRoZSBtZW1vcnkgcHJlc3N1cmUgdG8gdHJpZ2dlciBz dG9sZW4gZXZpY3Rpb24gbm9yCj4gYW55IHB1cmdlYWJsZSBvYmplY3RzIGluc2lkZSB0aGUgc3Rv bGVuIGFyZW5hLiBIb3dldmVyLCB0aGlzIHdpbGwgY2hhbmdlCj4gaW4gdGhlIG5lYXIgZnV0dXJl LCBhbmQgc28gYmV0dGVyIG1hbmFnZW1lbnQgYW5kIGRlZnJhZ21lbnRhdGlvbiBvZgo+IHN0b2xl biBtZW1vcnkgd2lsbCBiZWNvbWUgYSByZWFsIGlzc3VlLgo+Cj4gdjI6IFJlbWVtYmVyIHRvIHJl bW92ZSB0aGUgZHJtX21tX25vZGUuCj4KPiB2MzogUmViYXNlZCB0byB0aGUgbGF0ZXN0IGRybS1p bnRlbC1uaWdodGx5IChBbmtpdCkKPgo+IHY0OiBjb3JyZWN0ZWQgaWYtZWxzZSBicmFjZXMgZm9y bWF0IChUdnJ0a28va2VybmVsZG9jKQo+Cj4gdjU6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdCBkcm0t aW50ZWwtbmlnaHRseSAoQW5raXQpCj4gQWRkZWQgYSBzZXBlcmF0ZSBsaXN0IHRvIG1haW50YWlu IHB1cmdhYmxlIG9iamVjdHMgZnJvbSBzdG9sZW4gbWVtb3J5Cj4gcmVnaW9uIChDaHJpcy9EYW5p ZWwpCj4KPiB2NjogQ29tcGlsZXIgb3B0aW1pemF0aW9uIChtZXJnaW5nIDIgc2luZ2xlIGxvb3Bz IGludG8gb25lIGZvcigpIGxvb3ApLAo+IGNvcnJlY3RlZCBjb2RlIGZvciBvYmplY3QgZXZpY3Rp b24sIHJldGlyZV9yZXF1ZXN0cyBiZWZvcmUgc3RhcnRpbmcKPiBvYmplY3QgZXZpY3Rpb24gKENo cmlzKQo+Cj4gdjc6IEFkZGVkIGtlcm5lbCBkb2MgZm9yIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKCkKPgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgo+Cj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+Cj4gU2lnbmVkLW9mZi1i eTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Cj4g LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICB8ICAgNCArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgfCAgMTYgKysrKwo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgfCAxNjkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAg ICAgICB8ICAgNCArLQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMjQg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDg3 OTc3MTcuLjEzNzYyYzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBA IC0xNzQsNyArMTc0LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJCXNlcV9wdXRzKG0sICIpIik7Cj4gICAJ fQo+ICAgCWlmIChvYmotPnN0b2xlbikKPiAtCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4 bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7Cj4gKwkJc2VxX3ByaW50ZihtLCAiIChzdG9sZW46 ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7Cj4gICAJaWYgKG9iai0+cGluX2Rp c3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewo+ICAgCQljaGFyIHNbM10sICp0ID0gczsK PiAgIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCj4gQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMg aW50IG9ial9yYW5rX2J5X3N0b2xlbih2b2lkICpwcml2LAo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpiID0KPiAgIAkJY29udGFpbmVyX29mKEIsIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0LCBvYmpfZXhlY19saW5rKTsKPgo+IC0JcmV0dXJuIGEtPnN0b2xlbi0+c3RhcnQgLSBi LT5zdG9sZW4tPnN0YXJ0Owo+ICsJcmV0dXJuIGEtPnN0b2xlbi0+YmFzZS5zdGFydCAtIGItPnN0 b2xlbi0+YmFzZS5zdGFydDsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBpOTE1X2dlbV9zdG9sZW5f bGlzdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBpbmRleCBiY2ExNTcyLi41NjEyZGYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gQEAgLTg1MCw2ICs4NTAsMTIgQEAgc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMg ewo+ICAgCWJvb2wgYmFubmVkOwo+ICAgfTsKPgo+ICtzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7 Cj4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgYmFzZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgbW1fbGlu azsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gK307Cj4gKwo+ICAgLyog VGhpcyBtdXN0IG1hdGNoIHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNlZCBmb3IgZXhl Y2J1ZjIucnN2ZDEuICovCj4gICAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAo+Cj4g QEAgLTEyNzksNiArMTI4NSwxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewo+ICAgCSAqLwo+ICAg CXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0Owo+Cj4gKwkvKioKPiArCSAqIExpc3Qgb2Yg c3RvbGVuIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKPiAr CSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBmb3Ig YSBuZXcKPiArCSAqIGFsbG9jYXRpb24uIE9yZGVyZWQgYnkgdGltZSBvZiBtYXJraW5nIHB1cmdl YWJsZS4KPiArCSAqLwo+ICsJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKPiArCj4gICAJ LyoqIFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwo+ICAgCXVuc2lnbmVkIGxv bmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwo+Cj4g QEAgLTIwNDcsNyArMjA2MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiAgIAlz dHJ1Y3QgbGlzdF9oZWFkIHZtYV9saXN0Owo+Cj4gICAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRo aXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBieSBzaG1lbS4gKi8KPiAtCXN0cnVj dCBkcm1fbW1fbm9kZSAqc3RvbGVuOwo+ICsJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xl bjsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owo+Cj4gICAJc3RydWN0IGxpc3Rf aGVhZCByaW5nX2xpc3RbSTkxNV9OVU1fUklOR1NdOwo+IEBAIC0yMDU1LDYgKzIwNjgsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhl Y19saW5rOwo+Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIHRtcF9saW5rOwo+Cj4gICAJLyoqCj4gICAJICogVGhpcyBpcyBzZXQgaWYg dGhlIG9iamVjdCBpcyBvbiB0aGUgYWN0aXZlIGxpc3RzIChoYXMgcGVuZGluZwo+IEBAIC0yMTcx LDYgKzIxODUsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJfTsKPiAgIH07 Cj4gICAjZGVmaW5lIHRvX2ludGVsX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCwgYmFzZSkKPiArI2RlZmluZSBJOTE1X0JPX0lTX0FDVElWRShfX29iaikg KF9fb2JqLT5hY3RpdmUpCj4KPiAgIHZvaWQgaTkxNV9nZW1fdHJhY2tfZmIoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9sZCwKPiAgIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpuZXcsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNTRmN2RmMS4uOTFhMmU5 NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00MjMzLDYgKzQyMzMsMjAgQEAg aTkxNV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ICAgCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEICYmIG9iai0+cGFnZXMg PT0gTlVMTCkKPiAgIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9iaik7Cj4KPiArCWlmIChv YmotPnN0b2xlbikgewo+ICsJCXN3aXRjaCAob2JqLT5tYWR2KSB7Cj4gKwkJY2FzZSBJOTE1X01B RFZfV0lMTE5FRUQ6Cj4gKwkJCWxpc3RfZGVsX2luaXQoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsK PiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBJOTE1X01BRFZfRE9OVE5FRUQ6Cj4gKwkJCWxpc3RfbW92 ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCj4gKwkJCQkgICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xp c3QpOwo+ICsJCQlicmVhazsKPiArCQlkZWZhdWx0Ogo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9 Cj4gKwo+ICAgCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BVUkdF RDsKPgo+ICAgb3V0Ogo+IEBAIC00MjUzLDYgKzQyNjcsNyBAQCB2b2lkIGk5MTVfZ2VtX29iamVj dF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJSU5JVF9MSVNUX0hF QUQoJm9iai0+b2JqX2V4ZWNfbGluayk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJm9iai0+dm1hX2xp c3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bvb2xfbGluayk7Cj4gKwlJTklU X0xJU1RfSEVBRCgmb2JqLT50bXBfbGluayk7Cj4KPiAgIAlvYmotPm9wcyA9IG9wczsKPgo+IEBA IC00ODk1LDYgKzQ5MTAsNyBAQCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwo+ICAgCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVB RCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2 LT5tbS5zdG9sZW5fbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5j ZV9saXN0KTsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykKPiAgIAkJ aW5pdF9yaW5nX2xpc3RzKCZkZXZfcHJpdi0+cmluZ1tpXSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCBkM2U2ODEzLi5iZDViMmVhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBAQCAtNDU2LDcgKzQ1Niw4IEBAIGk5MTVf Z2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYt PmRldl9wcml2YXRlOwo+Cj4gICAJaWYgKG9iai0+c3RvbGVuKSB7Cj4gLQkJaTkxNV9nZW1fc3Rv bGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBvYmotPnN0b2xlbik7Cj4gKwkJbGlzdF9kZWwoJm9i ai0+c3RvbGVuLT5tbV9saW5rKTsKPiArCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2 X3ByaXYsICZvYmotPnN0b2xlbi0+YmFzZSk7Cj4gICAJCWtmcmVlKG9iai0+c3RvbGVuKTsKPiAg IAkJb2JqLT5zdG9sZW4gPSBOVUxMOwo+ICAgCX0KPiBAQCAtNDY5LDcgKzQ3MCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X3N0 b2xlbl9vcHMgPSB7Cj4KPiAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4g ICBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAtCQkJICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuKQo+ICsJCQkgICAgICAgc3Ry dWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICAgCWludCByZXQgPSAwOwo+IEBAIC00NzgsMTEgKzQ3OSwxMiBA QCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIAlpZiAob2JqID09IE5VTEwpCj4gICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Cj4g LQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNp emUpOwo+ICsJZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3Rv bGVuLT5iYXNlLnNpemUpOwo+ICAgCWk5MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2Vt X29iamVjdF9zdG9sZW5fb3BzKTsKPgo+ICAgCW9iai0+cGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0 ZV9mb3Jfc3RvbGVuKGRldiwKPiAtCQkJCQkJICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUp Owo+ICsJCQkJCQkgIHN0b2xlbi0+YmFzZS5zdGFydCwKPiArCQkJCQkJICBzdG9sZW4tPmJhc2Uu c2l6ZSk7Cj4gICAJaWYgKElTX0VSUihvYmotPnBhZ2VzKSkgewo+ICAgCQlyZXQgPSBQVFJfRVJS KG9iai0+cGFnZXMpOwo+ICAgCQlnb3RvIGNsZWFudXA7Cj4gQEAgLTQ5MSw2ICs0OTMsOSBAQCBf aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg IAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gICAJb2JqLT5zdG9sZW4gPSBzdG9s ZW47Cj4KPiArCXN0b2xlbi0+b2JqID0gb2JqOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnN0b2xlbi0+ bW1fbGluayk7Cj4gKwo+ICAgCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01B SU5fQ1BVIHwgSTkxNV9HRU1fRE9NQUlOX0dUVDsKPiAgIAlvYmotPmNhY2hlX2xldmVsID0gSEFT X0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1X0NBQ0hFX05PTkU7Cj4KPiBAQCAtNTAx LDE4ICs1MDYsMTAyIEBAIGNsZWFudXA6Cj4gICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgIH0K Pgo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gLWk5MTVfZ2VtX29iamVjdF9jcmVh dGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQo+ICtzdGF0aWMgYm9v bAo+ICttYXJrX2ZyZWUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGxp c3RfaGVhZCAqdW53aW5kKQo+ICt7Cj4gKwlCVUdfT04ob2JqLT5zdG9sZW4gPT0gTlVMTCk7CgpJ IGFtIGZ1bmRhbWVudGFsbHkgb3Bwb3NlZCB0byBCVUdfT05zIHdoaWNoIGNhbiBiZSBhdm9pZGVk LiBJbiB0aGlzIEkgCnNlZSBubyB2YWx1ZSBpbiBoYW5naW5nIHRoZSBtYWNoaW5lIHdoaWxlIHdl IGNvdWxkIFdBUk5fT04gYW5kIHJldHVybiAKZmFsc2UuCgo+ICsJaWYgKG9iai0+bWFkdiAhPSBJ OTE1X01BRFZfRE9OVE5FRUQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChvYmotPnBp bl9kaXNwbGF5KQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlsaXN0X2FkZCgmb2JqLT50bXBf bGluaywgdW53aW5kKTsKPiArCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJm9iai0+c3Rv bGVuLT5iYXNlKTsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtzdG9sZW5fZXZpY3Qoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKPiAgIHsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu Owo+IC0JaW50IHJldDsKPiArCXN0cnVjdCBsaXN0X2hlYWQgdW53aW5kLCBldmljdDsKPiArCXN0 cnVjdCBpOTE1X3N0b2xlbl9ub2RlICppdGVyOwo+ICsJaW50IHJldCwgYWN0aXZlOwo+Cj4gLQlp ZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCj4gLQkJcmV0dXJu IEVSUl9QVFIoLUVOT0RFVik7Cj4gKwlkcm1fbW1faW5pdF9zY2FuKCZkZXZfcHJpdi0+bW0uc3Rv bGVuLCBzaXplLCAwLCAwKTsKPiArCUlOSVRfTElTVF9IRUFEKCZ1bndpbmQpOwo+ICsKPiArCS8q IFJldGlyZSBhbGwgcmVxdWVzdHMgYmVmb3JlIGNyZWF0aW5nIHRoZSBldmljdCBsaXN0ICovCj4g KwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRldik7Cj4gKwo+ICsJZm9yIChh Y3RpdmUgPSAwOyBhY3RpdmUgPD0gMTsgYWN0aXZlKyspIHsKPiArCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QsIG1tX2xpbmspIHsKPiArCQkJaWYg KEk5MTVfQk9fSVNfQUNUSVZFKGl0ZXItPm9iaikgIT0gYWN0aXZlKQo+ICsJCQkJY29udGludWU7 Cj4gKwo+ICsJCQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwgJnVud2luZCkpCj4gKwkJCQlnb3Rv IGZvdW5kOwo+ICsJCX0KPiArCX0KPiArCj4gK2ZvdW5kOgo+ICsJSU5JVF9MSVNUX0hFQUQoJmV2 aWN0KTsKPiArCXdoaWxlICghbGlzdF9lbXB0eSgmdW53aW5kKSkgewo+ICsJCW9iaiA9IGxpc3Rf Zmlyc3RfZW50cnkoJnVud2luZCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCwKPiArCQkJCSAgICAgICB0bXBfbGluayk7Cj4gKwkJbGlzdF9kZWwoJm9iai0+dG1wX2xp bmspOwo+ICsKPiArCQlpZiAoZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZvYmotPnN0b2xlbi0+ YmFzZSkpIHsKPiArCQkJbGlzdF9hZGQoJm9iai0+dG1wX2xpbmssICZldmljdCk7Cj4gKwkJCWRy bV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ cmV0ID0gMDsKPiArCXdoaWxlICghbGlzdF9lbXB0eSgmZXZpY3QpKSB7Cj4gKwkJb2JqID0gbGlz dF9maXJzdF9lbnRyeSgmZXZpY3QsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QsCj4gKwkJCQkgICAgICAgdG1wX2xpbmspOwo+ICsJCWxpc3RfZGVsKCZvYmotPnRtcF9s aW5rKTsKPiArCj4gKwkJaWYgKHJldCA9PSAwKSB7Cj4gKwkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1h LCAqdm1hX25leHQ7Cj4gKwo+ICsJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2bWFf bmV4dCwKPiArCQkJCQkJICZvYmotPnZtYV9saXN0LAo+ICsJCQkJCQkgdm1hX2xpbmspCj4gKwkJ CQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCj4gKwkJCQkJYnJlYWs7Cj4gKwo+ICsJCQkvKiBT dG9sZW4gcGlucyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKPiArCQkJICogbm9ybWFsIHNocmlu a2VyIGZyb20gcHJvY2Vzc2luZyBzdG9sZW4KPiArCQkJICogb2JqZWN0cy4KPiArCQkJICovCj4g KwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICsKPiArCQkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwo+ICsJCQlpZiAocmV0ID09IDApIHsKPiArCQkJ CWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihvYmopOwo+ICsJCQkJb2JqLT5tYWR2ID0g X19JOTE1X01BRFZfUFVSR0VEOwo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJaTkxNV9nZW1fb2JqZWN0 X3Bpbl9wYWdlcyhvYmopOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlkcm1fZ2VtX29iamVjdF91 bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKgo+ICtzdG9sZW5fYWxsb2Moc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKPiArewo+ICsJc3RydWN0 IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKPiArCWludCByZXQ7Cj4KPiAtCURSTV9ERUJVR19L TVMoImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7Cj4gICAJaWYg KHNpemUgPT0gMCkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4KPiBAQCAtNTIwLDE3 ICs2MDksNTkgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTY0IHNpemUpCj4gICAJaWYgKCFzdG9sZW4pCj4gICAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3By aXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7Cj4gKwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0 X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UsIHNpemUsIDQwOTYpOwo+ICsJaWYgKHJldCA9 PSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8qIE5vIG1vcmUgc3RvbGVuIG1lbW9yeSBhdmFp bGFibGUsIG9yIHRvbyBmcmFnbWVudGVkLgo+ICsJICogVHJ5IGV2aWN0aW5nIHB1cmdlYWJsZSBv YmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCj4gKwkgKi8KPiArCXJldCA9IHN0b2xlbl9ldmljdChk ZXZfcHJpdiwgc2l6ZSk7CgpJIGhhdmUgcmFpc2VkIHRoaXMgcXVlc3Rpb24gb2Ygc3RydWN0X211 dGV4IGluIHRoZSBwcmV2aW91cyByb3VuZC4KCkNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywgYnV0 IEkgdGhvdWdodCB0aGVyZSB3YXMgc29tZSBlZmZvcnQgbWFkZSB0byAKbWFrZSBzdG9sZW4gb2Jq ZWN0IGFsbG9jYXRpb24gcnVuIHdpdGhvdXQgc3RydWN0IG11dGV4PwoKV2l0aCB0aGlzIGNoYW5n ZSBpdCByZXF1aXJlcyBpdCBhZ2Fpbi4gQXQgdGhlIG1vbWVudCBjYWxsZXJzIHNlZW0gdG8gCmhv bGQgaXQgYW55d2F5LiBCdXQgSSB0aGluayBsb2NrZGVwX2Fzc2VydF9oZWxkIGlzIG5lZWRlZCBu b3cgYXQgbGVhc3QgCnRvIGRvY3VtZW50IHRoZSByZXF1aXJlbWVudCwgcHJvYmFibHkgaW4gdG9w IGxldmVsIAppOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbi4KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK