From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/6] drm/i915: Add support for stealing purgable stolen pages Date: Fri, 9 Oct 2015 10:11:21 +0200 Message-ID: <20151009081121.GC26718@phenom.ffwll.local> References: <1444285469-8187-1-git-send-email-ankitprasad.r.sharma@intel.com> <1444285469-8187-5-git-send-email-ankitprasad.r.sharma@intel.com> <561648D1.3030706@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 641A46EDE3 for ; Fri, 9 Oct 2015 01:08:28 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so59460528wic.0 for ; Fri, 09 Oct 2015 01:08:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <561648D1.3030706@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: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMDgsIDIwMTUgYXQgMTE6NDM6MjlBTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gSGksCj4gCj4gT24gMDgvMTAvMTUgMDc6MjQsIGFua2l0cHJhc2FkLnIuc2hh cm1hQGludGVsLmNvbSB3cm90ZToKPiA+RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJp cy13aWxzb24uY28udWs+Cj4gPgo+ID5JZiB3ZSBydW4gb3V0IG9mIHN0b2xlbiBtZW1vcnkgd2hl biB0cnlpbmcgdG8gYWxsb2NhdGUgYW4gb2JqZWN0LCBzZWUgaWYKPiA+d2UgY2FuIHJlYXAgZW5v dWdoIHB1cmdlYWJsZSBvYmplY3RzIHRvIGZyZWUgdXAgZW5vdWdoIGNvbnRpZ3VvdXMgZnJlZQo+ ID5zcGFjZSBmb3IgdGhlIGFsbG9jYXRpb24uIFRoaXMgaXMgaW4gcHJpbmNpcGxlIHZlcnkgbXVj aCBsaWtlIGV2aWN0aW5nCj4gPm9iamVjdHMgdG8gZnJlZSB1cCBlbm91Z2ggY29udGlndW91cyBz cGFjZSBpbiB0aGUgdm1hIHdoZW4gYmluZGluZwo+ID5hIG5ldyBvYmplY3QgLSBhbmQgeW91IHdp bGwgYmUgZm9yZ2l2ZW4gZm9yIHRoaW5raW5nIHRoYXQgdGhlIGNvZGUgbG9va3MKPiA+dmVyeSBz aW1pbGFyLgo+ID4KPiA+QXQgdGhlIG1vbWVudCwgd2UgZG8gbm90IGFsbG93IHVzZXJzcGFjZSB0 byBhbGxvY2F0ZSBvYmplY3RzIGluIHN0b2xlbiwKPiA+c28gdGhlcmUgaXMgbmVpdGhlciB0aGUg bWVtb3J5IHByZXNzdXJlIHRvIHRyaWdnZXIgc3RvbGVuIGV2aWN0aW9uIG5vcgo+ID5hbnkgcHVy Z2VhYmxlIG9iamVjdHMgaW5zaWRlIHRoZSBzdG9sZW4gYXJlbmEuIEhvd2V2ZXIsIHRoaXMgd2ls bCBjaGFuZ2UKPiA+aW4gdGhlIG5lYXIgZnV0dXJlLCBhbmQgc28gYmV0dGVyIG1hbmFnZW1lbnQg YW5kIGRlZnJhZ21lbnRhdGlvbiBvZgo+ID5zdG9sZW4gbWVtb3J5IHdpbGwgYmVjb21lIGEgcmVh bCBpc3N1ZS4KPiA+Cj4gPnYyOiBSZW1lbWJlciB0byByZW1vdmUgdGhlIGRybV9tbV9ub2RlLgo+ ID4KPiA+djM6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQp Cj4gPgo+ID52NDogY29ycmVjdGVkIGlmLWVsc2UgYnJhY2VzIGZvcm1hdCAoVHZydGtvL2tlcm5l bGRvYykKPiA+Cj4gPnY1OiBSZWJhc2VkIHRvIHRoZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkg KEFua2l0KQo+ID5BZGRlZCBhIHNlcGVyYXRlIGxpc3QgdG8gbWFpbnRhaW4gcHVyZ2FibGUgb2Jq ZWN0cyBmcm9tIHN0b2xlbiBtZW1vcnkKPiA+cmVnaW9uIChDaHJpcy9EYW5pZWwpCj4gPgo+ID52 NjogQ29tcGlsZXIgb3B0aW1pemF0aW9uIChtZXJnaW5nIDIgc2luZ2xlIGxvb3BzIGludG8gb25l IGZvcigpIGxvb3ApLAo+ID5jb3JyZWN0ZWQgY29kZSBmb3Igb2JqZWN0IGV2aWN0aW9uLCByZXRp cmVfcmVxdWVzdHMgYmVmb3JlIHN0YXJ0aW5nCj4gPm9iamVjdCBldmljdGlvbiAoQ2hyaXMpCj4g Pgo+ID52NzogQWRkZWQga2VybmVsIGRvYyBmb3IgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oKQo+ID4KPiA+VGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCj4gPgo+ID5TaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4KPiA+U2lnbmVkLW9m Zi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ Cj4gPi0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA0 ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysr LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgIHwgIDE2ICsrKysK PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyB8IDE2OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jICAgICAgICB8ICAgNCArLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTg2IGluc2VydGlv bnMoKyksIDI0IGRlbGV0aW9ucygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiA+aW5kZXggODc5NzcxNy4uMTM3NjJjMSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiA+QEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNl cV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4gIAkJCXNlcV9w dXRzKG0sICIpIik7Cj4gPiAgCX0KPiA+ICAJaWYgKG9iai0+c3RvbGVuKQo+ID4tCQlzZXFfcHJp bnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7Cj4gPisJCXNl cV9wcmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPmJhc2Uuc3RhcnQp Owo+ID4gIAlpZiAob2JqLT5waW5fZGlzcGxheSB8fCBvYmotPmZhdWx0X21hcHBhYmxlKSB7Cj4g PiAgCQljaGFyIHNbM10sICp0ID0gczsKPiA+ICAJCWlmIChvYmotPnBpbl9kaXNwbGF5KQo+ID5A QCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBpbnQgb2JqX3JhbmtfYnlfc3RvbGVuKHZvaWQgKnBy aXYsCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiID0KPiA+ICAJCWNvbnRhaW5l cl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgb2JqX2V4ZWNfbGluayk7Cj4gPgo+ ID4tCXJldHVybiBhLT5zdG9sZW4tPnN0YXJ0IC0gYi0+c3RvbGVuLT5zdGFydDsKPiA+KwlyZXR1 cm4gYS0+c3RvbGVuLT5iYXNlLnN0YXJ0IC0gYi0+c3RvbGVuLT5iYXNlLnN0YXJ0Owo+ID4gIH0K PiA+Cj4gPiAgc3RhdGljIGludCBpOTE1X2dlbV9zdG9sZW5fbGlzdF9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPmluZGV4IGJj YTE1NzIuLjU2MTJkZjMgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID5AQCAtODUw LDYgKzg1MCwxMiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7Cj4gPiAgCWJvb2wgYmFu bmVkOwo+ID4gIH07Cj4gPgo+ID4rc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgewo+ID4rCXN0cnVj dCBkcm1fbW1fbm9kZSBiYXNlOwo+ID4rCXN0cnVjdCBsaXN0X2hlYWQgbW1fbGluazsKPiA+Kwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4rfTsKPiA+Kwo+ID4gIC8qIFRoaXMg bXVzdCBtYXRjaCB1cCB3aXRoIHRoZSB2YWx1ZSBwcmV2aW91c2x5IHVzZWQgZm9yIGV4ZWNidWYy LnJzdmQxLiAqLwo+ID4gICNkZWZpbmUgREVGQVVMVF9DT05URVhUX0hBTkRMRSAwCj4gPgo+ID5A QCAtMTI3OSw2ICsxMjg1LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gPiAgCSAqLwo+ID4g IAlzdHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKPiA+Cj4gPisJLyoqCj4gPisJICogTGlz dCBvZiBzdG9sZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFu ZAo+ID4rCSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFj ZSBmb3IgYSBuZXcKPiA+KwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2lu ZyBwdXJnZWFibGUuCj4gPisJICovCj4gPisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsK PiA+Kwo+ID4gIAkvKiogVXNhYmxlIHBvcnRpb24gb2YgdGhlIEdUVCBmb3IgR0VNICovCj4gPiAg CXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzIt Yml0KSAqLwo+ID4KPiA+QEAgLTIwNDcsNyArMjA2MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0IHsKPiA+ICAJc3RydWN0IGxpc3RfaGVhZCB2bWFfbGlzdDsKPiA+Cj4gPiAgCS8qKiBT dG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNrZWQgYnkg c2htZW0uICovCj4gPi0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47Cj4gPisJc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKPiA+ICAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlz dDsKPiA+Cj4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdTXTsK PiA+QEAgLTIwNTUsNiArMjA2OCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiA+ ICAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwo+ID4KPiA+ICAJc3RydWN0IGxpc3Rf aGVhZCBiYXRjaF9wb29sX2xpbms7Cj4gPisJc3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKPiA+ Cj4gPiAgCS8qKgo+ID4gIAkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGlzIG9uIHRoZSBh Y3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCj4gPkBAIC0yMTcxLDYgKzIxODUsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gPiAgCX07Cj4gPiAgfTsKPiA+ICAjZGVmaW5lIHRvX2lu dGVsX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgYmFz ZSkKPiA+KyNkZWZpbmUgSTkxNV9CT19JU19BQ1RJVkUoX19vYmopIChfX29iai0+YWN0aXZlKQo+ ID4KPiA+ICB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvbGQsCj4gPiAgCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm5ldywKPiA+ ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPmluZGV4IDU0ZjdkZjEuLjkxYTJlOTcgMTAwNjQ0Cj4g Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+KysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID5AQCAtNDIzMyw2ICs0MjMzLDIwIEBAIGk5MTVfZ2Vt X21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICAJ aWYgKG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxM KQo+ID4gIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9iaik7Cj4gPgo+ID4rCWlmIChvYmot PnN0b2xlbikgewo+ID4rCQlzd2l0Y2ggKG9iai0+bWFkdikgewo+ID4rCQljYXNlIEk5MTVfTUFE Vl9XSUxMTkVFRDoKPiA+KwkJCWxpc3RfZGVsX2luaXQoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsK PiA+KwkJCWJyZWFrOwo+ID4rCQljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKPiA+KwkJCWxpc3Rf bW92ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCj4gPisJCQkJICAmZGV2X3ByaXYtPm1tLnN0b2xl bl9saXN0KTsKPiA+KwkJCWJyZWFrOwo+ID4rCQlkZWZhdWx0Ogo+ID4rCQkJYnJlYWs7Cj4gPisJ CX0KPiA+Kwl9Cj4gPisKPiA+ICAJYXJncy0+cmV0YWluZWQgPSBvYmotPm1hZHYgIT0gX19JOTE1 X01BRFZfUFVSR0VEOwo+ID4KPiA+ICBvdXQ6Cj4gPkBAIC00MjUzLDYgKzQyNjcsNyBAQCB2b2lk IGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g PiAgCUlOSVRfTElTVF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmspOwo+ID4gIAlJTklUX0xJU1Rf SEVBRCgmb2JqLT52bWFfbGlzdCk7Cj4gPiAgCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bv b2xfbGluayk7Cj4gPisJSU5JVF9MSVNUX0hFQUQoJm9iai0+dG1wX2xpbmspOwo+ID4KPiA+ICAJ b2JqLT5vcHMgPSBvcHM7Cj4gPgo+ID5AQCAtNDg5NSw2ICs0OTEwLDcgQEAgaTkxNV9nZW1fbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYt PmNvbnRleHRfbGlzdCk7Cj4gPiAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3Vu ZF9saXN0KTsKPiA+ICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5ib3VuZF9saXN0KTsK PiA+KwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0KTsKPiA+ICAJSU5J VF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKPiA+ICAJZm9yIChpID0gMDsg aSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspCj4gPiAgCQlpbml0X3JpbmdfbGlzdHMoJmRldl9wcml2 LT5yaW5nW2ldKTsKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiA+aW5k ZXggZDNlNjgxMy4uYmQ1YjJlYSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c3RvbGVuLmMKPiA+QEAgLTQ1Niw3ICs0NTYsOCBAQCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9z dG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPgo+ ID4gIAlpZiAob2JqLT5zdG9sZW4pIHsKPiA+LQkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2Rl KGRldl9wcml2LCBvYmotPnN0b2xlbik7Cj4gPisJCWxpc3RfZGVsKCZvYmotPnN0b2xlbi0+bW1f bGluayk7Cj4gPisJCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJm9iai0+ c3RvbGVuLT5iYXNlKTsKPiA+ICAJCWtmcmVlKG9iai0+c3RvbGVuKTsKPiA+ICAJCW9iai0+c3Rv bGVuID0gTlVMTDsKPiA+ICAJfQo+ID5AQCAtNDY5LDcgKzQ3MCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMg PSB7Cj4gPgo+ID4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gPiAgX2k5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPi0J CQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCj4gPisJCQkgICAgICAgc3RydWN0 IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Cj4gPiAgCWludCByZXQgPSAwOwo+ID5AQCAtNDc4LDExICs0NzksMTIg QEAgX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPiAgCWlmIChvYmogPT0gTlVMTCkKPiA+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ ID4KPiA+LQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9s ZW4tPnNpemUpOwo+ID4rCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJh c2UsIHN0b2xlbi0+YmFzZS5zaXplKTsKPiA+ICAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAm aTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwo+ID4KPiA+ICAJb2JqLT5wYWdlcyA9IGk5MTVf cGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAo+ID4tCQkJCQkJICBzdG9sZW4tPnN0YXJ0LCBz dG9sZW4tPnNpemUpOwo+ID4rCQkJCQkJICBzdG9sZW4tPmJhc2Uuc3RhcnQsCj4gPisJCQkJCQkg IHN0b2xlbi0+YmFzZS5zaXplKTsKPiA+ICAJaWYgKElTX0VSUihvYmotPnBhZ2VzKSkgewo+ID4g IAkJcmV0ID0gUFRSX0VSUihvYmotPnBhZ2VzKTsKPiA+ICAJCWdvdG8gY2xlYW51cDsKPiA+QEAg LTQ5MSw2ICs0OTMsOSBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+ICAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ID4g IAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKPiA+Cj4gPisJc3RvbGVuLT5vYmogPSBvYmo7Cj4gPisJ SU5JVF9MSVNUX0hFQUQoJnN0b2xlbi0+bW1fbGluayk7Cj4gPisKPiA+ICAJb2JqLT5iYXNlLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5fR1RUOwo+ ID4gIAlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJ OTE1X0NBQ0hFX05PTkU7Cj4gPgo+ID5AQCAtNTAxLDE4ICs1MDYsMTAyIEBAIGNsZWFudXA6Cj4g PiAgCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiAgfQo+ID4KPiA+LXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoKPiA+LWk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHU2NCBzaXplKQo+ID4rc3RhdGljIGJvb2wKPiA+K21hcmtfZnJlZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCj4g Pit7Cj4gPisJQlVHX09OKG9iai0+c3RvbGVuID09IE5VTEwpOwo+IAo+IEkgYW0gZnVuZGFtZW50 YWxseSBvcHBvc2VkIHRvIEJVR19PTnMgd2hpY2ggY2FuIGJlIGF2b2lkZWQuIEluIHRoaXMgSSBz ZWUgbm8KPiB2YWx1ZSBpbiBoYW5naW5nIHRoZSBtYWNoaW5lIHdoaWxlIHdlIGNvdWxkIFdBUk5f T04gYW5kIHJldHVybiBmYWxzZS4KPiAKPiA+KwlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9E T05UTkVFRCkKPiA+KwkJcmV0dXJuIGZhbHNlOwo+ID4rCj4gPisJaWYgKG9iai0+cGluX2Rpc3Bs YXkpCj4gPisJCXJldHVybiBmYWxzZTsKPiA+Kwo+ID4rCWxpc3RfYWRkKCZvYmotPnRtcF9saW5r LCB1bndpbmQpOwo+ID4rCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJm9iai0+c3RvbGVu LT5iYXNlKTsKPiA+K30KPiA+Kwo+ID4rc3RhdGljIGludAo+ID4rc3RvbGVuX2V2aWN0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCj4gPiAgewo+ID4tCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPi0Jc3RydWN0IGRybV9tbV9ub2RlICpz dG9sZW47Cj4gPi0JaW50IHJldDsKPiA+KwlzdHJ1Y3QgbGlzdF9oZWFkIHVud2luZCwgZXZpY3Q7 Cj4gPisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKml0ZXI7Cj4gPisJaW50IHJldCwgYWN0aXZl Owo+ID4KPiA+LQlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikp Cj4gPi0JCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ID4rCWRybV9tbV9pbml0X3NjYW4oJmRl dl9wcml2LT5tbS5zdG9sZW4sIHNpemUsIDAsIDApOwo+ID4rCUlOSVRfTElTVF9IRUFEKCZ1bndp bmQpOwo+ID4rCj4gPisJLyogUmV0aXJlIGFsbCByZXF1ZXN0cyBiZWZvcmUgY3JlYXRpbmcgdGhl IGV2aWN0IGxpc3QgKi8KPiA+KwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRl dik7Cj4gPisKPiA+Kwlmb3IgKGFjdGl2ZSA9IDA7IGFjdGl2ZSA8PSAxOyBhY3RpdmUrKykgewo+ ID4rCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3Qs IG1tX2xpbmspIHsKPiA+KwkJCWlmIChJOTE1X0JPX0lTX0FDVElWRShpdGVyLT5vYmopICE9IGFj dGl2ZSkKPiA+KwkJCQljb250aW51ZTsKPiA+Kwo+ID4rCQkJaWYgKG1hcmtfZnJlZShpdGVyLT5v YmosICZ1bndpbmQpKQo+ID4rCQkJCWdvdG8gZm91bmQ7Cj4gPisJCX0KPiA+Kwl9Cj4gPisKPiA+ K2ZvdW5kOgo+ID4rCUlOSVRfTElTVF9IRUFEKCZldmljdCk7Cj4gPisJd2hpbGUgKCFsaXN0X2Vt cHR5KCZ1bndpbmQpKSB7Cj4gPisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnVud2luZCwKPiA+ KwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCj4gPisJCQkJICAgICAgIHRt cF9saW5rKTsKPiA+KwkJbGlzdF9kZWwoJm9iai0+dG1wX2xpbmspOwo+ID4rCj4gPisJCWlmIChk cm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKSkgewo+ID4rCQkJbGlz dF9hZGQoJm9iai0+dG1wX2xpbmssICZldmljdCk7Cj4gPisJCQlkcm1fZ2VtX29iamVjdF9yZWZl cmVuY2UoJm9iai0+YmFzZSk7Cj4gPisJCX0KPiA+Kwl9Cj4gPisKPiA+KwlyZXQgPSAwOwo+ID4r CXdoaWxlICghbGlzdF9lbXB0eSgmZXZpY3QpKSB7Cj4gPisJCW9iaiA9IGxpc3RfZmlyc3RfZW50 cnkoJmV2aWN0LAo+ID4rCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKPiA+ KwkJCQkgICAgICAgdG1wX2xpbmspOwo+ID4rCQlsaXN0X2RlbCgmb2JqLT50bXBfbGluayk7Cj4g PisKPiA+KwkJaWYgKHJldCA9PSAwKSB7Cj4gPisJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZt YV9uZXh0Owo+ID4rCj4gPisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2bWFfbmV4 dCwKPiA+KwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKPiA+KwkJCQkJCSB2bWFfbGluaykKPiA+KwkJ CQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCj4gPisJCQkJCWJyZWFrOwo+ID4rCj4gPisJCQkv KiBTdG9sZW4gcGlucyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKPiA+KwkJCSAqIG5vcm1hbCBz aHJpbmtlciBmcm9tIHByb2Nlc3Npbmcgc3RvbGVuCj4gPisJCQkgKiBvYmplY3RzLgo+ID4rCQkJ ICovCj4gPisJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiA+Kwo+ID4rCQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwo+ID4rCQkJaWYgKHJldCA9PSAw KSB7Cj4gPisJCQkJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vfc3RvbGVuKG9iaik7Cj4gPisJCQkJ b2JqLT5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOwo+ID4rCQkJfSBlbHNlIHsKPiA+KwkJCQlp OTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gPisJCQl9Cj4gPisJCX0KPiA+Kwo+ID4r CQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiA+Kwl9Cj4gPisKPiA+ KwlyZXR1cm4gcmV0Owo+ID4rfQo+ID4rCj4gPitzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25v ZGUgKgo+ID4rc3RvbGVuX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTY0IHNpemUpCj4gPit7Cj4gPisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKPiA+ KwlpbnQgcmV0Owo+ID4KPiA+LQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0 OiBzaXplPSVsbHhcbiIsIHNpemUpOwo+ID4gIAlpZiAoc2l6ZSA9PSAwKQo+ID4gIAkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7Cj4gPgo+ID5AQCAtNTIwLDE3ICs2MDksNTkgQEAgaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCj4g PiAgCWlmICghc3RvbGVuKQo+ID4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPgo+ID4t CXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgc3RvbGVuLCBzaXpl LCA0MDk2KTsKPiA+KwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYs ICZzdG9sZW4tPmJhc2UsIHNpemUsIDQwOTYpOwo+ID4rCWlmIChyZXQgPT0gMCkKPiA+KwkJZ290 byBvdXQ7Cj4gPisKPiA+KwkvKiBObyBtb3JlIHN0b2xlbiBtZW1vcnkgYXZhaWxhYmxlLCBvciB0 b28gZnJhZ21lbnRlZC4KPiA+KwkgKiBUcnkgZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5k IHNlYXJjaCBhZ2Fpbi4KPiA+KwkgKi8KPiA+KwlyZXQgPSBzdG9sZW5fZXZpY3QoZGV2X3ByaXYs IHNpemUpOwo+IAo+IEkgaGF2ZSByYWlzZWQgdGhpcyBxdWVzdGlvbiBvZiBzdHJ1Y3RfbXV0ZXgg aW4gdGhlIHByZXZpb3VzIHJvdW5kLgo+IAo+IENvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywgYnV0 IEkgdGhvdWdodCB0aGVyZSB3YXMgc29tZSBlZmZvcnQgbWFkZSB0byBtYWtlCj4gc3RvbGVuIG9i amVjdCBhbGxvY2F0aW9uIHJ1biB3aXRob3V0IHN0cnVjdCBtdXRleD8KPiAKPiBXaXRoIHRoaXMg Y2hhbmdlIGl0IHJlcXVpcmVzIGl0IGFnYWluLiBBdCB0aGUgbW9tZW50IGNhbGxlcnMgc2VlbSB0 byBob2xkIGl0Cj4gYW55d2F5LiBCdXQgSSB0aGluayBsb2NrZGVwX2Fzc2VydF9oZWxkIGlzIG5l ZWRlZCBub3cgYXQgbGVhc3QgdG8gZG9jdW1lbnQKPiB0aGUgcmVxdWlyZW1lbnQsIHByb2JhYmx5 IGluIHRvcCBsZXZlbCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbi4KClBsZWFzZSB1c2Ug V0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCkpIGJlY2F1c2UgbG9ja2RlcF9hc3NlcnRfaGVsZCBp cwpjb21waWxlZCBvdXQgd2hlbiBsb2NrZGVwIGlzIGRpc2FibGVkLiBBbmQgdGhhdCdzIGZvciBh bG1vc3QgZXZlcnlvbmUuIFRoZQpyZWFzb24gZm9yIHRoYXQgaXMgdGhhdCB0aGUgc2VtYW50aWNz IGFyZW4ndCBhIHBlcmZlY3QgbWF0Y2ggLQpsb2NrZGVwX2Fzc2VydF9oZWxkIGFsc28gbWFrZXMg c3VyZSB0aGF0IGl0J3MgdGhlIGNhbGxpbmcgcHJvY2VzcyBob2xkaW5nCnRoZSBsb2NrLCBub3Qg anVzdCB0aGF0IGl0J3MgbG9ja2VkLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=