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: Wed, 9 Dec 2015 15:40:04 +0000 Message-ID: <56684B54.3060308@linux.intel.com> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 4C0956E182 for ; Wed, 9 Dec 2015 07:40:07 -0800 (PST) In-Reply-To: <1449665182-10054-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 CkhpLAoKT24gMDkvMTIvMTUgMTI6NDYsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3 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+IHY4OiBDaGVjayBmb3Igc3RydWN0X211dGV4IGxvY2sgYmVmb3JlIGNyZWF0 aW5nIG9iamVjdCBmcm9tIHN0b2xlbgo+IHJlZ2lvbiAoVHZydGtvKQo+Cj4gdjk6IFJlbmFtZWQg dmFyaWFibGVzIHRvIG1ha2UgdXNhZ2UgY2xlYXIsIGFkZGVkIGNvbW1lbnQsIHJlbW92ZWQgb25l dGltZQo+IHVzZWQgbWFjcm8gKFR2cnRrbykKPgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgo+ Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28u dWs+Cj4gU2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNo YXJtYUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgfCAgMTcgKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAg fCAgMTYgKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgfCAx NzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jICAgICAgICB8ICAgNCArLQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxODgg aW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+IGluZGV4IDU2NTlkNGMuLjg5YjBmZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+IEBAIC0xNzQsNyArMTc0LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBz ZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJCXNlcV9w dXRzKG0sICIpIik7Cj4gICAJfQo+ICAgCWlmIChvYmotPnN0b2xlbikKPiAtCQlzZXFfcHJpbnRm KG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7Cj4gKwkJc2VxX3By aW50ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7Cj4g ICAJaWYgKG9iai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewo+ICAgCQlj aGFyIHNbM10sICp0ID0gczsKPiAgIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCj4gQEAgLTI1Myw5 ICsyNTMsOSBAQCBzdGF0aWMgaW50IG9ial9yYW5rX2J5X3N0b2xlbih2b2lkICpwcml2LAo+ICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiID0KPiAgIAkJY29udGFpbmVyX29mKEIsIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBvYmpfZXhlY19saW5rKTsKPgo+IC0JaWYgKGEtPnN0 b2xlbi0+c3RhcnQgPCBiLT5zdG9sZW4tPnN0YXJ0KQo+ICsJaWYgKGEtPnN0b2xlbi0+YmFzZS5z dGFydCA8IGItPnN0b2xlbi0+YmFzZS5zdGFydCkKPiAgIAkJcmV0dXJuIC0xOwo+IC0JaWYgKGEt PnN0b2xlbi0+c3RhcnQgPiBiLT5zdG9sZW4tPnN0YXJ0KQo+ICsJaWYgKGEtPnN0b2xlbi0+YmFz ZS5zdGFydCA+IGItPnN0b2xlbi0+YmFzZS5zdGFydCkKPiAgIAkJcmV0dXJuIDE7Cj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDQ1Mjc0ZS4uZTBi MDliMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC04NDEsNiArODQxLDEyIEBA IHN0cnVjdCBpOTE1X2N0eF9oYW5nX3N0YXRzIHsKPiAgIAlib29sIGJhbm5lZDsKPiAgIH07Cj4K PiArc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgewo+ICsJc3RydWN0IGRybV9tbV9ub2RlIGJhc2U7 Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIG1tX2xpbms7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwo+ICt9Owo+ICsKPiAgIC8qIFRoaXMgbXVzdCBtYXRjaCB1cCB3aXRoIHRoZSB2 YWx1ZSBwcmV2aW91c2x5IHVzZWQgZm9yIGV4ZWNidWYyLnJzdmQxLiAqLwo+ICAgI2RlZmluZSBE RUZBVUxUX0NPTlRFWFRfSEFORExFIDAKPgo+IEBAIC0xMjUyLDYgKzEyNTgsMTMgQEAgc3RydWN0 IGk5MTVfZ2VtX21tIHsKPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlz dDsKPgo+ICsJLyoqCj4gKwkgKiBMaXN0IG9mIHN0b2xlbiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVu IG1hcmtlZCBhcyBwdXJnZWFibGUgYW5kCj4gKwkgKiB0aHVzIGF2YWlsYWJsZSBmb3IgcmVhcGlu ZyBpZiB3ZSBuZWVkIG1vcmUgc3BhY2UgZm9yIGEgbmV3Cj4gKwkgKiBhbGxvY2F0aW9uLiBPcmRl cmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJnZWFibGUuCj4gKwkgKi8KPiArCXN0cnVjdCBsaXN0 X2hlYWQgc3RvbGVuX2xpc3Q7Cj4gKwo+ICAgCS8qKiBVc2FibGUgcG9ydGlvbiBvZiB0aGUgR1RU IGZvciBHRU0gKi8KPiAgIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9iYXNlOyAvKiBsaW1pdGVkIHRv IGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KPgo+IEBAIC0yMDMyLDcgKzIwNDUsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCB2bWFfbGlzdDsKPgo+ ICAgCS8qKiBTdG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBi YWNrZWQgYnkgc2htZW0uICovCj4gLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKPiArCXN0 cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBnbG9i YWxfbGlzdDsKPgo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdT XTsKPiBAQCAtMjA0MCw2ICsyMDUzLDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewo+ ICAgCXN0cnVjdCBsaXN0X2hlYWQgb2JqX2V4ZWNfbGluazsKPgo+ICAgCXN0cnVjdCBsaXN0X2hl YWQgYmF0Y2hfcG9vbF9saW5rOwo+ICsJLyoqIFVzZWQgZHVyaW5nIHN0b2xlbiBtZW1vcnkgYWxs b2NhdGlvbnMgdG8gdGVtcG9yYXJpbHkgaG9sZCBhIHJlZiAqLwo+ICsJc3RydWN0IGxpc3RfaGVh ZCBzdG9sZW5fbGluazsKPgo+ICAgCS8qKgo+ICAgCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBvYmpl Y3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRpbmcKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCA1ODEyNzQ4Li5lZDk3ZGU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gQEAgLTQzNTksNiArNDM1OSwyMCBAQCBpOTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKG9iai0+bWFkdiA9PSBJOTE1 X01BRFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQo+ICAgCQlpOTE1X2dlbV9vYmpl Y3RfdHJ1bmNhdGUob2JqKTsKPgo+ICsJaWYgKG9iai0+c3RvbGVuKSB7Cj4gKwkJc3dpdGNoIChv YmotPm1hZHYpIHsKPiArCQljYXNlIEk5MTVfTUFEVl9XSUxMTkVFRDoKPiArCQkJbGlzdF9kZWxf aW5pdCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOwo+ICsJCQlicmVhazsKPiArCQljYXNlIEk5MTVf TUFEVl9ET05UTkVFRDoKPiArCQkJbGlzdF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKPiAr CQkJCSAgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1 bHQ6Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gICAJYXJncy0+cmV0YWluZWQgPSBv YmotPm1hZHYgIT0gX19JOTE1X01BRFZfUFVSR0VEOwo+Cj4gICBvdXQ6Cj4gQEAgLTQzNzksNiAr NDM5Myw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5rKTsKPiAg IAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJm9i ai0+YmF0Y2hfcG9vbF9saW5rKTsKPiArCUlOSVRfTElTVF9IRUFEKCZvYmotPnN0b2xlbl9saW5r KTsKPgo+ICAgCW9iai0+b3BzID0gb3BzOwo+Cj4gQEAgLTQ5OTcsNiArNTAxMiw3IEBAIGk5MTVf Z2VtX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPmNvbnRleHRfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS51 bmJvdW5kX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlz dCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0KTsKPiAgIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmZlbmNlX2xpc3QpOwo+ICAgCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQo+ICAgCQlpbml0X3JpbmdfbGlzdHMoJmRldl9wcml2 LT5yaW5nW2ldKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IGluZGV4 IDBiMGNlMTEuLjlkNmFjNjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9s ZW4uYwo+IEBAIC01NDIsNyArNTQyLDggQEAgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vfc3RvbGVu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAgIAlpZiAo b2JqLT5zdG9sZW4pIHsKPiAtCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYs IG9iai0+c3RvbGVuKTsKPiArCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOwo+ICsJ CWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJm9iai0+c3RvbGVuLT5iYXNl KTsKPiAgIAkJa2ZyZWUob2JqLT5zdG9sZW4pOwo+ICAgCQlvYmotPnN0b2xlbiA9IE5VTEw7Cj4g ICAJfQo+IEBAIC01NTUsNyArNTU2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyA9IHsKPgo+ICAgc3RhdGlj IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPiAgIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkgICAgICAgc3RydWN0IGRybV9t bV9ub2RlICpzdG9sZW4pCj4gKwkJCSAgICAgICBzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3Rv bGVuKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAJaW50 IHJldCA9IDA7Cj4gQEAgLTU2NCwxMSArNTY1LDEyIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWlmIChvYmogPT0gTlVMTCkKPiAg IAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAtCWRybV9nZW1fcHJpdmF0ZV9vYmplY3Rf aW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7Cj4gKwlkcm1fZ2VtX3ByaXZhdGVf b2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7Cj4gICAJaTkx NV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwo+Cj4g ICAJb2JqLT5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAo+IC0JCQkJ CQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7Cj4gKwkJCQkJCSAgc3RvbGVuLT5iYXNl LnN0YXJ0LAo+ICsJCQkJCQkgIHN0b2xlbi0+YmFzZS5zaXplKTsKPiAgIAlpZiAoSVNfRVJSKG9i ai0+cGFnZXMpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIob2JqLT5wYWdlcyk7Cj4gICAJCWdvdG8g Y2xlYW51cDsKPiBAQCAtNTc3LDYgKzU3OSw5IEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWk5MTVfZ2VtX29iamVjdF9waW5fcGFn ZXMob2JqKTsKPiAgIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKPgo+ICsJc3RvbGVuLT5vYmogPSBv Ymo7Cj4gKwlJTklUX0xJU1RfSEVBRCgmc3RvbGVuLT5tbV9saW5rKTsKPiArCj4gICAJb2JqLT5i YXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5f R1RUOwo+ICAgCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xM QyA6IEk5MTVfQ0FDSEVfTk9ORTsKPgo+IEBAIC01ODcsMTggKzU5MiwxMDIgQEAgY2xlYW51cDoK PiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgfQo+Cj4gLXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKPiAtaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTY0IHNpemUpCj4gK3N0YXRpYyBib29sCj4gK21hcmtfZnJlZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCj4gK3sKPiAr CUJVR19PTihvYmotPnN0b2xlbiA9PSBOVUxMKTsKPiArCj4gKwlpZiAob2JqLT5tYWR2ICE9IEk5 MTVfTUFEVl9ET05UTkVFRCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKG9iai0+cGlu X2Rpc3BsYXkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWxpc3RfYWRkKCZvYmotPnN0b2xl bl9saW5rLCB1bndpbmQpOwo+ICsJcmV0dXJuIGRybV9tbV9zY2FuX2FkZF9ibG9jaygmb2JqLT5z dG9sZW4tPmJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3N0b2xlbl9ldmljdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQo+ICAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+IC0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9s ZW47Cj4gLQlpbnQgcmV0Owo+ICsJc3RydWN0IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0Owo+ICsJ c3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKml0ZXI7Cj4gKwlpbnQgcmV0LCBhY3RpdmU7Cj4KPiAt CWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKPiAtCQlyZXR1 cm4gRVJSX1BUUigtRU5PREVWKTsKPiArCWRybV9tbV9pbml0X3NjYW4oJmRldl9wcml2LT5tbS5z dG9sZW4sIHNpemUsIDAsIDApOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnVud2luZCk7Cj4gKwo+ICsJ LyogUmV0aXJlIGFsbCByZXF1ZXN0cyBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2aWN0IGxpc3QgKi8K PiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsKPiArCj4gKwlmb3Ig KGFjdGl2ZSA9IDA7IGFjdGl2ZSA8PSAxOyBhY3RpdmUrKykgewo+ICsJCWxpc3RfZm9yX2VhY2hf ZW50cnkoaXRlciwgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCwgbW1fbGluaykgewo+ICsJCQlp ZiAoaXRlci0+b2JqLT5hY3RpdmUgIT0gYWN0aXZlKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJ CQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwgJnVud2luZCkpCj4gKwkJCQlnb3RvIGZvdW5kOwo+ ICsJCX0KPiArCX0KPiArCj4gK2ZvdW5kOgo+ICsJSU5JVF9MSVNUX0hFQUQoJmV2aWN0KTsKPiAr CXdoaWxlICghbGlzdF9lbXB0eSgmdW53aW5kKSkgewo+ICsJCW9iaiA9IGxpc3RfZmlyc3RfZW50 cnkoJnVud2luZCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKPiAr CQkJCSAgICAgICBzdG9sZW5fbGluayk7Cj4gKwkJbGlzdF9kZWwoJm9iai0+c3RvbGVuX2xpbmsp Owo+ICsKPiArCQlpZiAoZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFz ZSkpIHsKPiArCQkJbGlzdF9hZGQoJm9iai0+c3RvbGVuX2xpbmssICZldmljdCk7Cj4gKwkJCWRy bV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ cmV0ID0gMDsKPiArCXdoaWxlICghbGlzdF9lbXB0eSgmZXZpY3QpKSB7Cj4gKwkJb2JqID0gbGlz dF9maXJzdF9lbnRyeSgmZXZpY3QsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QsCj4gKwkJCQkgICAgICAgc3RvbGVuX2xpbmspOwo+ICsJCWxpc3RfZGVsKCZvYmotPnN0 b2xlbl9saW5rKTsKPiArCj4gKwkJaWYgKHJldCA9PSAwKSB7Cj4gKwkJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hLCAqdm1hX25leHQ7Cj4gKwo+ICsJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1h LCB2bWFfbmV4dCwKPiArCQkJCQkJICZvYmotPnZtYV9saXN0LAo+ICsJCQkJCQkgdm1hX2xpbmsp Cj4gKwkJCQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCj4gKwkJCQkJYnJlYWs7Cj4gKwo+ICsJ CQkvKiBTdG9sZW4gcGlucyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKPiArCQkJICogbm9ybWFs IHNocmlua2VyIGZyb20gcHJvY2Vzc2luZyBzdG9sZW4KPiArCQkJICogb2JqZWN0cy4KPiArCQkJ ICovCj4gKwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICsKPiArCQkJcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwo+ICsJCQlpZiAocmV0ID09IDApIHsK PiArCQkJCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihvYmopOwo+ICsJCQkJb2JqLT5t YWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOwo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJaTkxNV9nZW1f b2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlkcm1fZ2VtX29i amVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKgo+ICtzdG9sZW5fYWxs b2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKPiArewo+ICsJ c3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKPiArCWludCByZXQ7Cj4KPiAtCURSTV9E RUJVR19LTVMoImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7Cj4g ICAJaWYgKHNpemUgPT0gMCkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4KPiBAQCAt NjA2LDE3ICs2OTUsNjAgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCj4gICAJaWYgKCFzdG9sZW4pCj4gICAJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUo ZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7Cj4gKwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5f aW5zZXJ0X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UsIHNpemUsIDQwOTYpOwo+ICsJaWYg KHJldCA9PSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8qIE5vIG1vcmUgc3RvbGVuIG1lbW9y eSBhdmFpbGFibGUsIG9yIHRvbyBmcmFnbWVudGVkLgo+ICsJICogVHJ5IGV2aWN0aW5nIHB1cmdl YWJsZSBvYmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCj4gKwkgKi8KPiArCXJldCA9IHN0b2xlbl9l dmljdChkZXZfcHJpdiwgc2l6ZSk7Cj4gKwlpZiAocmV0ID09IDApCj4gKwkJcmV0ID0gaTkxNV9n ZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLAo+ICsJCQkJCQkg IHNpemUsIDQwOTYpOwo+ICtvdXQ6Cj4gICAJaWYgKHJldCkgewo+ICAgCQlrZnJlZShzdG9sZW4p Owo+ICAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCX0KPgo+ICsJcmV0dXJuIHN0b2xlbjsK PiArfQo+ICsKPiArLyoqCj4gKyAqIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgLSBj cmVhdGVzIG9iamVjdCB1c2luZyB0aGUgc3RvbGVuIG1lbW9yeQo+ICsgKiBAZGV2Oglkcm0gZGV2 aWNlCj4gKyAqIEBzaXplOglzaXplIG9mIHRoZSBvYmplY3QgcmVxdWVzdGVkCj4gKyAqCj4gKyAq IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgdHJpZXMgdG8gYWxsb2NhdGUgbWVtb3J5 IGZvciB0aGUgb2JqZWN0Cj4gKyAqIGZyb20gdGhlIHN0b2xlbiBtZW1vcnkgcmVnaW9uLiBJZiBu b3QgZW5vdWdoIG1lbW9yeSBpcyBmb3VuZCwgaXQgdHJpZXMKPiArICogZXZpY3RpbmcgcHVyZ2Vh YmxlIG9iamVjdHMgYW5kIHNlYXJjaGluZyBhZ2Fpbi4KPiArICoKPiArICogUmV0dXJuczogT2Jq ZWN0IHBvaW50ZXIgLSBzdWNjZXNzIGFuZCBlcnJvciBwb2ludGVyIC0gZmFpbHVyZQo+ICsgKi8K PiArc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtpOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKPiArewo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAq c3RvbGVuOwo+ICsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0 ZXgpKTsKPiArCj4gKwlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xl bikpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi Y3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKPiArCj4gKwlzdG9s ZW4gPSBzdG9sZW5fYWxsb2MoZGV2X3ByaXYsIHNpemUpOwo+ICsJaWYgKElTX0VSUihzdG9sZW4p KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwoKV2h5IG5vdCAicmV0dXJuIHN0b2xlbiIg dG8gYXZvaWQgbWFza2luZyBkaWZmZXJlbnQgZXJyb3JzIGZyb20gc3RvbGVuX2FsbG9jPwoKPiAr Cj4gICAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc3RvbGVuKTsK PiAgIAlpZiAoIUlTX0VSUihvYmopKQo+ICAgCQlyZXR1cm4gb2JqOwo+Cj4gLQlpOTE1X2dlbV9z dG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7Cj4gKwlpOTE1X2dlbV9zdG9sZW5f cmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwo+ICAgCWtmcmVlKHN0b2xlbik7 Cj4gICAJcmV0dXJuIG9iajsKPiAgIH0KPiBAQCAtNjMwLDcgKzc2Miw3IEBAIGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSAmZGV2X3ByaXYtPmd0 dC5iYXNlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlzdHJ1Y3Qg ZHJtX21tX25vZGUgKnN0b2xlbjsKPiArCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47 Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJaW50IHJldDsKPgo+IEBAIC02NDksMTAg Kzc4MSwxMCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJaWYgKCFzdG9sZW4pCj4gICAJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+Cj4gLQlzdG9sZW4tPnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKPiAt CXN0b2xlbi0+c2l6ZSA9IHNpemU7Cj4gKwlzdG9sZW4tPmJhc2Uuc3RhcnQgPSBzdG9sZW5fb2Zm c2V0Owo+ICsJc3RvbGVuLT5iYXNlLnNpemUgPSBzaXplOwo+ICAgCW11dGV4X2xvY2soJmRldl9w cml2LT5tbS5zdG9sZW5fbG9jayk7Cj4gLQlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZf cHJpdi0+bW0uc3RvbGVuLCBzdG9sZW4pOwo+ICsJcmV0ID0gZHJtX21tX3Jlc2VydmVfbm9kZSgm ZGV2X3ByaXYtPm1tLnN0b2xlbiwgJnN0b2xlbi0+YmFzZSk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwo+ICAgCWlmIChyZXQpIHsKPiAgIAkJRFJNX0RFQlVH X0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBzcGFjZVxuIik7Cj4gQEAgLTY2Myw3ICs3 OTUsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKGRldiwgc3RvbGVuKTsKPiAgIAlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJRFJNX0RF QlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBvYmplY3RcbiIpOwo+IC0JCWk5MTVf Z2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKPiArCQlpOTE1X2dlbV9z dG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwo+ICAgCQlrZnJlZShz dG9sZW4pOwo+ICAgCQlyZXR1cm4gb2JqOwo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiBpbmRleCA2ZGVlOTA4Li4wM2FkMjc2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g QEAgLTUxMDMsNyArNTEwMyw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY2hlY2tfcGN0eChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJdW5zaWduZWQgbG9uZyBwY3R4 X2FkZHIgPSBJOTE1X1JFQUQoVkxWX1BDQlIpICYgfjQwOTU7Cj4KPiAgIAlXQVJOX09OKHBjdHhf YWRkciAhPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKwo+IC0JCQkgICAgIGRldl9wcml2LT52 bHZfcGN0eC0+c3RvbGVuLT5zdGFydCk7Cj4gKwkJCSAgICAgZGV2X3ByaXYtPnZsdl9wY3R4LT5z dG9sZW4tPmJhc2Uuc3RhcnQpOwo+ICAgfQo+Cj4KPiBAQCAtNTE3Nyw3ICs1MTc3LDcgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g ICAJCXJldHVybjsKPiAgIAl9Cj4KPiAtCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+bW0uc3RvbGVu X2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0Owo+ICsJcGN0eF9wYWRkciA9IGRldl9wcml2LT5t bS5zdG9sZW5fYmFzZSArIHBjdHgtPnN0b2xlbi0+YmFzZS5zdGFydDsKPiAgIAlJOTE1X1dSSVRF KFZMVl9QQ0JSLCBwY3R4X3BhZGRyKTsKPgo+ICAgb3V0Ogo+CgpSZWdhcmRzLAoKVHZydGtvCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=