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: Fri, 13 Nov 2015 16:35:54 +0000 Message-ID: <5646116A.1030803@linux.intel.com> References: <1447238173-31347-1-git-send-email-ankitprasad.r.sharma@intel.com> <1447238173-31347-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 D4FD06F0E6 for ; Fri, 13 Nov 2015 08:35:56 -0800 (PST) In-Reply-To: <1447238173-31347-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 CkhpLAoKT24gMTEvMTEvMTUgMTA6MzYsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3 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+Cj4gVGVzdGNhc2U6IGln dC9nZW1fc3RvbGVuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNo cmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5OiBBbmtpdHByYXNhZCBTaGFybWEgPGFu a2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jICAgICAgICB8ICAxNiArKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYyB8IDE3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgIHwgICA0ICstCj4gICA1IGZpbGVz IGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggNTY1OWQ0Yy4uODliMGZlYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNjcmli ZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICAgCQkJc2VxX3B1dHMobSwgIikiKTsKPiAgIAl9Cj4gICAJaWYgKG9iai0+c3RvbGVuKQo+ IC0JCXNlcV9wcmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0 KTsKPiArCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5i YXNlLnN0YXJ0KTsKPiAgIAlpZiAob2JqLT5waW5fZGlzcGxheSB8fCBvYmotPmZhdWx0X21hcHBh YmxlKSB7Cj4gICAJCWNoYXIgc1szXSwgKnQgPSBzOwo+ICAgCQlpZiAob2JqLT5waW5fZGlzcGxh eSkKPiBAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBpbnQgb2JqX3JhbmtfYnlfc3RvbGVuKHZv aWQgKnByaXYsCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmIgPQo+ICAgCQljb250 YWluZXJfb2YoQiwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIG9ial9leGVjX2xpbmspOwo+ Cj4gLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA8IGItPnN0b2xlbi0+c3RhcnQpCj4gKwlpZiAoYS0+ c3RvbGVuLT5iYXNlLnN0YXJ0IDwgYi0+c3RvbGVuLT5iYXNlLnN0YXJ0KQo+ICAgCQlyZXR1cm4g LTE7Cj4gLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA+IGItPnN0b2xlbi0+c3RhcnQpCj4gKwlpZiAo YS0+c3RvbGVuLT5iYXNlLnN0YXJ0ID4gYi0+c3RvbGVuLT5iYXNlLnN0YXJ0KQo+ICAgCQlyZXR1 cm4gMTsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRl eCA5YzczMWY2Li4yYzc1YzMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTg0 MSw2ICs4NDEsMTIgQEAgc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgewo+ICAgCWJvb2wgYmFu bmVkOwo+ICAgfTsKPgo+ICtzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7Cj4gKwlzdHJ1Y3QgZHJt X21tX25vZGUgYmFzZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgbW1fbGluazsKPiArCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gK307Cj4gKwo+ICAgLyogVGhpcyBtdXN0IG1hdGNo IHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNlZCBmb3IgZXhlY2J1ZjIucnN2ZDEuICov Cj4gICAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAo+Cj4gQEAgLTEyNTIsNiArMTI1 OCwxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewo+ICAgCSAqLwo+ICAgCXN0cnVjdCBsaXN0X2hl YWQgdW5ib3VuZF9saXN0Owo+Cj4gKwkvKioKPiArCSAqIExpc3Qgb2Ygc3RvbGVuIG9iamVjdHMg dGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKPiArCSAqIHRodXMgYXZhaWxh YmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBmb3IgYSBuZXcKPiArCSAqIGFs bG9jYXRpb24uIE9yZGVyZWQgYnkgdGltZSBvZiBtYXJraW5nIHB1cmdlYWJsZS4KPiArCSAqLwo+ ICsJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKPiArCj4gICAJLyoqIFVzYWJsZSBwb3J0 aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwo+ICAgCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7 IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwo+Cj4gQEAgLTIwMzIsNyArMjA0 NSw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFk IHZtYV9saXN0Owo+Cj4gICAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0 ZWFkIG9mIGJlaW5nIGJhY2tlZCBieSBzaG1lbS4gKi8KPiAtCXN0cnVjdCBkcm1fbW1fbm9kZSAq c3RvbGVuOwo+ICsJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKPiAgIAlzdHJ1Y3Qg bGlzdF9oZWFkIGdsb2JhbF9saXN0Owo+Cj4gICAJc3RydWN0IGxpc3RfaGVhZCByaW5nX2xpc3Rb STkxNV9OVU1fUklOR1NdOwo+IEBAIC0yMDQwLDYgKzIwNTMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCB7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwo+Cj4gICAJ c3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHRt cF9saW5rOwoKQ291bGQgeW91IHB1dCBhIGNvbW1lbnQgZGVzY3JpYmluZyBpZiBpdCBpcyBzYWZl IG9yIG5vdCBmb3IgcG90ZW50aWFsIApvdGhlciB1c2VycyB0byB1c2UgdG1wX2xpbmssIG9yIHdp dGggd2hhdCBjb25zaWRlcmF0aW9ucz8KCk9yIGFsdGVybmF0aXZlbHkgdXNlIGEgZGVkaWNhdGVk IG5hbWUgc28gaXQgd2lsbCBiZSBvYnZpb3VzIGl0IGlzIGZvciAKc3RvbGVuIGxpc3Qgb25seT8K Cj4gICAJLyoqCj4gICAJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBpcyBvbiB0aGUgYWN0 aXZlIGxpc3RzIChoYXMgcGVuZGluZwo+IEBAIC0yMTU2LDYgKzIxNzAsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJfTsKPiAgIH07Cj4gICAjZGVmaW5lIHRvX2ludGVsX2Jv KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgYmFzZSkKPiAr I2RlZmluZSBJOTE1X0JPX0lTX0FDVElWRShfX29iaikgKF9fb2JqLT5hY3RpdmUpCgpEbyB5b3Ug bmVlZCB0aGlzIG1hY3JvLCBpdCBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXQgaXMgbWF5YmUgdG9v IHRyaXZpYWw/Cgo+ICAgdm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2xkLAo+ICAgCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm5l dywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA1N2YwMmFhLi4yZDhjOWUwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQzNTksNiArNDM1OSwyMCBAQCBpOTE1X2dl bV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJ aWYgKG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxM KQo+ICAgCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUob2JqKTsKPgo+ICsJaWYgKG9iai0+c3Rv bGVuKSB7Cj4gKwkJc3dpdGNoIChvYmotPm1hZHYpIHsKPiArCQljYXNlIEk5MTVfTUFEVl9XSUxM TkVFRDoKPiArCQkJbGlzdF9kZWxfaW5pdCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOwo+ICsJCQli cmVhazsKPiArCQljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKPiArCQkJbGlzdF9tb3ZlKCZvYmot PnN0b2xlbi0+bW1fbGluaywKPiArCQkJCSAgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7Cj4g KwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4g ICAJYXJncy0+cmV0YWluZWQgPSBvYmotPm1hZHYgIT0gX19JOTE1X01BRFZfUFVSR0VEOwo+Cj4g ICBvdXQ6Cj4gQEAgLTQzNzksNiArNDM5Myw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlJTklUX0xJU1RfSEVBRCgmb2Jq LT5vYmpfZXhlY19saW5rKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFfbGlzdCk7Cj4g ICAJSU5JVF9MSVNUX0hFQUQoJm9iai0+YmF0Y2hfcG9vbF9saW5rKTsKPiArCUlOSVRfTElTVF9I RUFEKCZvYmotPnRtcF9saW5rKTsKPgo+ICAgCW9iai0+b3BzID0gb3BzOwo+Cj4gQEAgLTQ5OTYs NiArNTAxMSw3IEBAIGk5MTVfZ2VtX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZf cHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnN0 b2xlbl9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmZlbmNlX2xpc3Qp Owo+ICAgCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQo+ICAgCQlpbml0X3Jp bmdfbGlzdHMoJmRldl9wcml2LT5yaW5nW2ldKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYwo+IGluZGV4IDBiMGNlMTEuLmI5NDEwYTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IEBAIC01NDIsNyArNTQyLDggQEAgaTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2Vfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3By aXZhdGU7Cj4KPiAgIAlpZiAob2JqLT5zdG9sZW4pIHsKPiAtCQlpOTE1X2dlbV9zdG9sZW5fcmVt b3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3RvbGVuKTsKPiArCQlsaXN0X2RlbCgmb2JqLT5zdG9s ZW4tPm1tX2xpbmspOwo+ICsJCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwg Jm9iai0+c3RvbGVuLT5iYXNlKTsKPiAgIAkJa2ZyZWUob2JqLT5zdG9sZW4pOwo+ICAgCQlvYmot PnN0b2xlbiA9IE5VTEw7Cj4gICAJfQo+IEBAIC01NTUsNyArNTU2LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29w cyA9IHsKPgo+ICAgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPiAgIF9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkg ICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCj4gKwkJCSAgICAgICBzdHJ1Y3QgaTkx NV9zdG9sZW5fbm9kZSAqc3RvbGVuKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cj4gICAJaW50IHJldCA9IDA7Cj4gQEAgLTU2NCwxMSArNTY1LDEyIEBAIF9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWlm IChvYmogPT0gTlVMTCkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAtCWRybV9n ZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7Cj4g Kwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPmJh c2Uuc2l6ZSk7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0 X3N0b2xlbl9vcHMpOwo+Cj4gICAJb2JqLT5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9z dG9sZW4oZGV2LAo+IC0JCQkJCQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7Cj4gKwkJ CQkJCSAgc3RvbGVuLT5iYXNlLnN0YXJ0LAo+ICsJCQkJCQkgIHN0b2xlbi0+YmFzZS5zaXplKTsK PiAgIAlpZiAoSVNfRVJSKG9iai0+cGFnZXMpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIob2JqLT5w YWdlcyk7Cj4gICAJCWdvdG8gY2xlYW51cDsKPiBAQCAtNTc3LDYgKzU3OSw5IEBAIF9pOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWk5MTVf Z2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiAgIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKPgo+ ICsJc3RvbGVuLT5vYmogPSBvYmo7Cj4gKwlJTklUX0xJU1RfSEVBRCgmc3RvbGVuLT5tbV9saW5r KTsKPiArCj4gICAJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUg fCBJOTE1X0dFTV9ET01BSU5fR1RUOwo+ICAgCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRl dikgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKPgo+IEBAIC01ODcsMTggKzU5 MiwxMDIgQEAgY2xlYW51cDoKPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgfQo+Cj4gLXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPiAtaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCj4gK3N0YXRpYyBib29sCj4gK21h cmtfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFk ICp1bndpbmQpCj4gK3sKPiArCUJVR19PTihvYmotPnN0b2xlbiA9PSBOVUxMKTsKCjooCgo+ICsK PiArCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQo+ICsJCXJldHVybiBmYWxz ZTsKPiArCj4gKwlpZiAob2JqLT5waW5fZGlzcGxheSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICsJbGlzdF9hZGQoJm9iai0+dG1wX2xpbmssIHVud2luZCk7Cj4gKwlyZXR1cm4gZHJtX21tX3Nj YW5fYWRkX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQK PiArc3RvbGVuX2V2aWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNp emUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlzdHJ1 Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKPiAtCWludCByZXQ7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFk IHVud2luZCwgZXZpY3Q7Cj4gKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqaXRlcjsKPiArCWlu dCByZXQsIGFjdGl2ZTsKPgo+IC0JaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5t bS5zdG9sZW4pKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ICsJZHJtX21tX2luaXRf c2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6ZSwgMCwgMCk7Cj4gKwlJTklUX0xJU1RfSEVB RCgmdW53aW5kKTsKPiArCj4gKwkvKiBSZXRpcmUgYWxsIHJlcXVlc3RzIGJlZm9yZSBjcmVhdGlu ZyB0aGUgZXZpY3QgbGlzdCAqLwo+ICsJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2 LT5kZXYpOwo+ICsKPiArCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9IDE7IGFjdGl2ZSsrKSB7 Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCAmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0 LCBtbV9saW5rKSB7Cj4gKwkJCWlmIChJOTE1X0JPX0lTX0FDVElWRShpdGVyLT5vYmopICE9IGFj dGl2ZSkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmos ICZ1bndpbmQpKQo+ICsJCQkJZ290byBmb3VuZDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICtmb3VuZDoK PiArCUlOSVRfTElTVF9IRUFEKCZldmljdCk7Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2lu ZCkpIHsKPiArCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZ1bndpbmQsCj4gKwkJCQkgICAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCj4gKwkJCQkgICAgICAgdG1wX2xpbmspOwo+ICsJ CWxpc3RfZGVsKCZvYmotPnRtcF9saW5rKTsKPiArCj4gKwkJaWYgKGRybV9tbV9zY2FuX3JlbW92 ZV9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpKSB7Cj4gKwkJCWxpc3RfYWRkKCZvYmotPnRtcF9s aW5rLCAmZXZpY3QpOwo+ICsJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFzZSk7 Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldCA9IDA7Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmV2 aWN0KSkgewo+ICsJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0LAo+ICsJCQkJICAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAo+ICsJCQkJICAgICAgIHRtcF9saW5rKTsKPiAr CQlsaXN0X2RlbCgmb2JqLT50bXBfbGluayk7Cj4gKwo+ICsJCWlmIChyZXQgPT0gMCkgewo+ICsJ CQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZtYV9uZXh0Owo+ICsKPiArCQkJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKHZtYSwgdm1hX25leHQsCj4gKwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKPiAr CQkJCQkJIHZtYV9saW5rKQo+ICsJCQkJaWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQo+ICsJCQkJ CWJyZWFrOwo+ICsKPiArCQkJLyogU3RvbGVuIHBpbnMgaXRzIHBhZ2VzIHRvIHByZXZlbnQgdGhl Cj4gKwkJCSAqIG5vcm1hbCBzaHJpbmtlciBmcm9tIHByb2Nlc3Npbmcgc3RvbGVuCj4gKwkJCSAq IG9iamVjdHMuCj4gKwkJCSAqLwo+ICsJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2Jq KTsKPiArCj4gKwkJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKPiArCQkJ aWYgKHJldCA9PSAwKSB7Cj4gKwkJCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4ob2Jq KTsKPiArCQkJCW9iai0+bWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDsKPiArCQkJfSBlbHNlIHsK PiArCQkJCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiArCQkJfQo+ICsJCX0KPiAr Cj4gKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpOTE1X3N0b2xlbl9ub2Rl ICoKPiArc3RvbGVuX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0 IHNpemUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47Cj4gKwlpbnQg cmV0Owo+Cj4gLQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVs bHhcbiIsIHNpemUpOwo+ICAgCWlmIChzaXplID09IDApCj4gICAJCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOwo+Cj4gQEAgLTYwNiwxNyArNjk1LDYwIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQo+ICAgCWlmICghc3RvbGVu KQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPgo+IC0JcmV0ID0gaTkxNV9nZW1fc3Rv bGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBzdG9sZW4sIHNpemUsIDQwOTYpOwo+ICsJcmV0ID0g aTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLCBzaXpl LCA0MDk2KTsKPiArCWlmIChyZXQgPT0gMCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwkvKiBObyBt b3JlIHN0b2xlbiBtZW1vcnkgYXZhaWxhYmxlLCBvciB0b28gZnJhZ21lbnRlZC4KPiArCSAqIFRy eSBldmljdGluZyBwdXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoIGFnYWluLgo+ICsJICovCj4g KwlyZXQgPSBzdG9sZW5fZXZpY3QoZGV2X3ByaXYsIHNpemUpOwo+ICsJaWYgKHJldCA9PSAwKQo+ ICsJCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+ YmFzZSwKPiArCQkJCQkJICBzaXplLCAwKTsKCkkgYW0gY3VyaW91cyBhYm91dCB0aGUgc2Vjb25k IGF0dGVtcHQgYXNraW5nIGZvciBubyBhbGlnbm1lbnQuCgpFdmVyeXRoaW5nIGlzIGFsd2F5cyBh dCBsZWFzdCA0ayBhbGlnbmVkIHJpZ2h0PyBTbyBpZiB5b3UgcGFzc2VkIGluIDRrIAppbiB0aGUg Mm5kIGF0dGVtcHQgaXQgd291bGQgZWl0aGVyIHdvcmssIG9yIGl0IHdvdWxkbid0IHdvcmsgd2l0 aCB6ZXJvIAphbGlnbm1lbnQgZWl0aGVyLCBubz8KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK