From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 07/10] drm/i915: Add support for stealing purgable stolen pages Date: Thu, 4 Feb 2016 15:00:08 +0530 Message-ID: <1454578211-24823-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1454578211-24823-1-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id A3DE76E845 for ; Thu, 4 Feb 2016 01:53:20 -0800 (PST) In-Reply-To: <1454578211-24823-1-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: intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, Ankitprasad Sharma , shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+CgpJZiB3ZSBy dW4gb3V0IG9mIHN0b2xlbiBtZW1vcnkgd2hlbiB0cnlpbmcgdG8gYWxsb2NhdGUgYW4gb2JqZWN0 LCBzZWUgaWYKd2UgY2FuIHJlYXAgZW5vdWdoIHB1cmdlYWJsZSBvYmplY3RzIHRvIGZyZWUgdXAg ZW5vdWdoIGNvbnRpZ3VvdXMgZnJlZQpzcGFjZSBmb3IgdGhlIGFsbG9jYXRpb24uIFRoaXMgaXMg aW4gcHJpbmNpcGxlIHZlcnkgbXVjaCBsaWtlIGV2aWN0aW5nCm9iamVjdHMgdG8gZnJlZSB1cCBl bm91Z2ggY29udGlndW91cyBzcGFjZSBpbiB0aGUgdm1hIHdoZW4gYmluZGluZwphIG5ldyBvYmpl Y3QgLSBhbmQgeW91IHdpbGwgYmUgZm9yZ2l2ZW4gZm9yIHRoaW5raW5nIHRoYXQgdGhlIGNvZGUg bG9va3MKdmVyeSBzaW1pbGFyLgoKQXQgdGhlIG1vbWVudCwgd2UgZG8gbm90IGFsbG93IHVzZXJz cGFjZSB0byBhbGxvY2F0ZSBvYmplY3RzIGluIHN0b2xlbiwKc28gdGhlcmUgaXMgbmVpdGhlciB0 aGUgbWVtb3J5IHByZXNzdXJlIHRvIHRyaWdnZXIgc3RvbGVuIGV2aWN0aW9uIG5vcgphbnkgcHVy Z2VhYmxlIG9iamVjdHMgaW5zaWRlIHRoZSBzdG9sZW4gYXJlbmEuIEhvd2V2ZXIsIHRoaXMgd2ls bCBjaGFuZ2UKaW4gdGhlIG5lYXIgZnV0dXJlLCBhbmQgc28gYmV0dGVyIG1hbmFnZW1lbnQgYW5k IGRlZnJhZ21lbnRhdGlvbiBvZgpzdG9sZW4gbWVtb3J5IHdpbGwgYmVjb21lIGEgcmVhbCBpc3N1 ZS4KCnYyOiBSZW1lbWJlciB0byByZW1vdmUgdGhlIGRybV9tbV9ub2RlLgoKdjM6IFJlYmFzZWQg dG8gdGhlIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQpCgp2NDogY29ycmVjdGVkIGlm LWVsc2UgYnJhY2VzIGZvcm1hdCAoVHZydGtvL2tlcm5lbGRvYykKCnY1OiBSZWJhc2VkIHRvIHRo ZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFua2l0KQpBZGRlZCBhIHNlcGVyYXRlIGxpc3Qg dG8gbWFpbnRhaW4gcHVyZ2FibGUgb2JqZWN0cyBmcm9tIHN0b2xlbiBtZW1vcnkKcmVnaW9uIChD aHJpcy9EYW5pZWwpCgp2NjogQ29tcGlsZXIgb3B0aW1pemF0aW9uIChtZXJnaW5nIDIgc2luZ2xl IGxvb3BzIGludG8gb25lIGZvcigpIGxvb3ApLApjb3JyZWN0ZWQgY29kZSBmb3Igb2JqZWN0IGV2 aWN0aW9uLCByZXRpcmVfcmVxdWVzdHMgYmVmb3JlIHN0YXJ0aW5nCm9iamVjdCBldmljdGlvbiAo Q2hyaXMpCgp2NzogQWRkZWQga2VybmVsIGRvYyBmb3IgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oKQoKdjg6IENoZWNrIGZvciBzdHJ1Y3RfbXV0ZXggbG9jayBiZWZvcmUgY3JlYXRpbmcg b2JqZWN0IGZyb20gc3RvbGVuCnJlZ2lvbiAoVHZydGtvKQoKdjk6IFJlbmFtZWQgdmFyaWFibGVz IHRvIG1ha2UgdXNhZ2UgY2xlYXIsIGFkZGVkIGNvbW1lbnQsIHJlbW92ZWQgb25ldGltZQp1c2Vk IG1hY3JvIChUdnJ0a28pCgp2MTA6IEF2b2lkIG1hc2tpbmcgb2YgZXJyb3Igd2hlbiBzdG9sZW5f YWxsb2MgZmFpbHMgKFR2cnRrbykKCnYxMTogUmVuYW1lZCBzdG9sZW5fbGluayB0byB0bXBfbGlu aywgYXMgaXQgbWF5IGJlIHVzZWQgZm9yIG90aGVyCnB1cnBvc2VzIHRvbyAoQ2hyaXMpClVzZWQg RVJSX0NBU1QgdG8gY2FzdCBlcnJvciBwb2ludGVycyB3aGlsZSByZXR1cm5pbmcKCnYxMjogQWRk ZWQgbG9ja2RlcF9hc3NlcnQgYmVmb3JlIHN0YXJ0aW5nIHN0b2xlbi1iYWNrZWQgb2JqZWN0CmV2 aWN0aW9uIChDaHJpcykKClRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6 IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgpSZXZp ZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICB8ICAgNiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgfCAgMTUgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYyB8IDE3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgIHwgICA0ICstCiA1IGZpbGVz IGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGVjMGMyYTA1ZS4uYWE3YzdhMyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNjcmliZV9vYmooc3Ry dWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJc2Vx X3B1dHMobSwgIikiKTsKIAl9CiAJaWYgKG9iai0+c3RvbGVuKQotCQlzZXFfcHJpbnRmKG0sICIg KHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7CisJCXNlcV9wcmludGYobSwg IiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogCWlmIChvYmot PnBpbl9kaXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFwcGFibGUpIHsKIAkJY2hhciBzWzNdLCAqdCA9 IHM7CiAJCWlmIChvYmotPnBpbl9kaXNwbGF5KQpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBp bnQgb2JqX3JhbmtfYnlfc3RvbGVuKHZvaWQgKnByaXYsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmIgPQogCQljb250YWluZXJfb2YoQiwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qs IG9ial9leGVjX2xpbmspOwogCi0JaWYgKGEtPnN0b2xlbi0+c3RhcnQgPCBiLT5zdG9sZW4tPnN0 YXJ0KQorCWlmIChhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgPCBiLT5zdG9sZW4tPmJhc2Uuc3RhcnQp CiAJCXJldHVybiAtMTsKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA+IGItPnN0b2xlbi0+c3RhcnQp CisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA+IGItPnN0b2xlbi0+YmFzZS5zdGFydCkKIAkJ cmV0dXJuIDE7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA1NWYy ZGU5Li45NDNiMzAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg0MCw2ICs4NDAsMTIg QEAgc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgewogCWJvb2wgYmFubmVkOwogfTsKIAorc3Ry dWN0IGk5MTVfc3RvbGVuX25vZGUgeworCXN0cnVjdCBkcm1fbW1fbm9kZSBiYXNlOworCXN0cnVj dCBsaXN0X2hlYWQgbW1fbGluazsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwor fTsKKwogLyogVGhpcyBtdXN0IG1hdGNoIHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNl ZCBmb3IgZXhlY2J1ZjIucnN2ZDEuICovCiAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUg MAogCkBAIC0xMjkxLDYgKzEyOTcsMTMgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKIAkgKi8KIAlz dHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKIAorCS8qKgorCSAqIExpc3Qgb2Ygc3RvbGVu IG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKKwkgKiB0aHVz IGF2YWlsYWJsZSBmb3IgcmVhcGluZyBpZiB3ZSBuZWVkIG1vcmUgc3BhY2UgZm9yIGEgbmV3CisJ ICogYWxsb2NhdGlvbi4gT3JkZXJlZCBieSB0aW1lIG9mIG1hcmtpbmcgcHVyZ2VhYmxlLgorCSAq LworCXN0cnVjdCBsaXN0X2hlYWQgc3RvbGVuX2xpc3Q7CisKIAkvKiogVXNhYmxlIHBvcnRpb24g b2YgdGhlIEdUVCBmb3IgR0VNICovCiAJdW5zaWduZWQgbG9uZyBzdG9sZW5fYmFzZTsgLyogbGlt aXRlZCB0byBsb3cgbWVtb3J5ICgzMi1iaXQpICovCiAKQEAgLTIwODksNyArMjEwMiw3IEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHZtYV9saXN0Owog CiAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJh Y2tlZCBieSBzaG1lbS4gKi8KLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKKwlzdHJ1Y3Qg aTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7 CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJpbmdfbGlzdFtJOTE1X05VTV9SSU5HU107CkBAIC0yMDk3 LDYgKzIxMTAsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3Rf aGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7 CisJLyoqIFVzZWQgdG8gbGluayBhbiBvYmplY3QgdG8gYSBsaXN0IHRlbXBvcmFyaWx5ICovCisJ c3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRoaXMgaXMgc2V0IGlmIHRo ZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRpbmcKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCmluZGV4IGQ2M2YxOGMuLmVkOGFlNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwpAQCAtNDUyMSw2ICs0NTIxLDIwIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2ID09IEk5MTVfTUFEVl9E T05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2VtX29iamVjdF90cnVuY2F0 ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAob2JqLT5tYWR2KSB7CisJ CWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5pdCgmb2JqLT5zdG9sZW4t Pm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RPTlRORUVEOgorCQkJbGlz dF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZfcHJpdi0+bW0uc3RvbGVu X2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKwogCWFy Z3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BVUkdFRDsKIAogb3V0OgpA QCAtNTE0Nyw2ICs1MTYxLDcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwogCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgm ZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0u c3RvbGVuX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uZmVuY2VfbGlzdCk7 CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspCiAJCWluaXRfcmluZ19saXN0 cygmZGV2X3ByaXYtPnJpbmdbaV0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u YwppbmRleCA0ZGFmMjhmLi42NTVlYjE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYwpAQCAtNTQyLDcgKzU0Miw4IEBAIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xl bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKG9iai0+ c3RvbGVuKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5z dG9sZW4pOworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQlpOTE1X2dlbV9z dG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVl KG9iai0+c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwogCX0KQEAgLTU1NSw3ICs1NTYs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2Vt X29iamVjdF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKgogX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCisJCQkgICAgICAgc3Ry dWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwogCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CkBAIC01NjQsMTEgKzU2NSwxMiBA QCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JZHJtX2dl bV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKKwlk cm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPmJhc2Uu c2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xl bl9vcHMpOwogCiAJcGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKGRldiwKLQkJ CQkJICAgICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUpOworCQkJCQkgICAgIHN0b2xlbi0+ YmFzZS5zdGFydCwKKwkJCQkJICAgICBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaWYgKElTX0VSUihw YWdlcykpIHsKIAkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKIAkJcmV0dXJuIEVSUl9DQVNU KHBhZ2VzKTsKQEAgLTU4MiwyNCArNTg0LDExMiBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2Vz KG9iaik7CiAJb2JqLT5zdG9sZW4gPSBzdG9sZW47CiAKKwlzdG9sZW4tPm9iaiA9IG9iajsKKwlJ TklUX0xJU1RfSEVBRCgmc3RvbGVuLT5tbV9saW5rKTsKKwogCW9iai0+YmFzZS5yZWFkX2RvbWFp bnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9HRU1fRE9NQUlOX0dUVDsKIAlvYmotPmNh Y2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1X0NBQ0hFX05P TkU7CiAKIAlyZXR1cm4gb2JqOwogfQogCi1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCi1p OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQg c2l6ZSkKK3N0YXRpYyBib29sCittYXJrX2ZyZWUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IGxpc3RfaGVhZCAqdW53aW5kKQoreworCUJVR19PTihvYmotPnN0b2xlbiA9 PSBOVUxMKTsKKworCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAob2JqLT5waW5fZGlzcGxheSkKKwkJcmV0dXJuIGZhbHNlOworCisJ bGlzdF9hZGQoJm9iai0+dG1wX2xpbmssIHVud2luZCk7CisJcmV0dXJuIGRybV9tbV9zY2FuX2Fk ZF9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpOworfQorCitzdGF0aWMgaW50CitzdG9sZW5fZXZp Y3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47 Ci0JaW50IHJldDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHVud2luZCwgZXZpY3Q7CisJc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgKml0ZXI7CisJaW50IHJldCwgYWN0aXZlOwogCi0JaWYgKCFkcm1fbW1f aW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQotCQlyZXR1cm4gRVJSX1BUUigtRU5P REVWKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCWRybV9tbV9pbml0X3NjYW4oJmRldl9wcml2LT5tbS5zdG9sZW4sIHNpemUsIDAsIDApOwor CUlOSVRfTElTVF9IRUFEKCZ1bndpbmQpOworCisJLyogUmV0aXJlIGFsbCByZXF1ZXN0cyBiZWZv cmUgY3JlYXRpbmcgdGhlIGV2aWN0IGxpc3QgKi8KKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMo ZGV2X3ByaXYtPmRldik7CisKKwlmb3IgKGFjdGl2ZSA9IDA7IGFjdGl2ZSA8PSAxOyBhY3RpdmUr KykgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xp c3QsIG1tX2xpbmspIHsKKwkJCWlmIChpdGVyLT5vYmotPmFjdGl2ZSAhPSBhY3RpdmUpCisJCQkJ Y29udGludWU7CisKKwkJCWlmIChtYXJrX2ZyZWUoaXRlci0+b2JqLCAmdW53aW5kKSkKKwkJCQln b3RvIGZvdW5kOworCQl9CisJfQorCitmb3VuZDoKKwlJTklUX0xJU1RfSEVBRCgmZXZpY3QpOwor CXdoaWxlICghbGlzdF9lbXB0eSgmdW53aW5kKSkgeworCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5 KCZ1bndpbmQsCisJCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAg ICAgICB0bXBfbGluayk7CisJCWxpc3RfZGVsKCZvYmotPnRtcF9saW5rKTsKKworCQlpZiAoZHJt X21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFzZSkpIHsKKwkJCWxpc3RfYWRk KCZvYmotPnRtcF9saW5rLCAmZXZpY3QpOworCQkJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKCZv YmotPmJhc2UpOworCQl9CisJfQorCisJcmV0ID0gMDsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmV2 aWN0KSkgeworCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZldmljdCwKKwkJCQkgICAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJICAgICAgIHRtcF9saW5rKTsKKwkJbGlzdF9k ZWwoJm9iai0+dG1wX2xpbmspOworCisJCWlmIChyZXQgPT0gMCkgeworCQkJc3RydWN0IGk5MTVf dm1hICp2bWEsICp2bWFfbmV4dDsKKworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwg dm1hX25leHQsCisJCQkJCQkgJm9iai0+dm1hX2xpc3QsCisJCQkJCQkgdm1hX2xpbmspCisJCQkJ aWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJCQlicmVhazsKKworCQkJLyogU3RvbGVuIHBp bnMgaXRzIHBhZ2VzIHRvIHByZXZlbnQgdGhlCisJCQkgKiBub3JtYWwgc2hyaW5rZXIgZnJvbSBw cm9jZXNzaW5nIHN0b2xlbgorCQkJICogb2JqZWN0cy4KKwkJCSAqLworCQkJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKG9iaik7CisKKwkJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXMob2JqKTsKKwkJCWlmIChyZXQgPT0gMCkgeworCQkJCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X3N0b2xlbihvYmopOworCQkJCW9iai0+bWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDsKKwkJCX0g ZWxzZSB7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCQkJfQorCQl9CisK KwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICoKK3N0b2xlbl9hbGxv YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQoreworCXN0cnVj dCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisJaW50IHJldDsKIAotCURSTV9ERUJVR19LTVMo ImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CiAJaWYgKHNpemUg PT0gMCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKQEAgLTYwNywxNyArNjk3LDYwIEBA IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2 NCBzaXplKQogCWlmICghc3RvbGVuKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXJl dCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgc3RvbGVuLCBzaXplLCA0 MDk2KTsKKwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsICZzdG9s ZW4tPmJhc2UsIHNpemUsIDQwOTYpOworCWlmIChyZXQgPT0gMCkKKwkJZ290byBvdXQ7CisKKwkv KiBObyBtb3JlIHN0b2xlbiBtZW1vcnkgYXZhaWxhYmxlLCBvciB0b28gZnJhZ21lbnRlZC4KKwkg KiBUcnkgZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5kIHNlYXJjaCBhZ2Fpbi4KKwkgKi8K KwlyZXQgPSBzdG9sZW5fZXZpY3QoZGV2X3ByaXYsIHNpemUpOworCWlmIChyZXQgPT0gMCkKKwkJ cmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNl LAorCQkJCQkJICBzaXplLCA0MDk2KTsKK291dDoKIAlpZiAocmV0KSB7CiAJCWtmcmVlKHN0b2xl bik7CiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCisJcmV0dXJuIHN0b2xlbjsKK30KKwor LyoqCisgKiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbigpIC0gY3JlYXRlcyBvYmplY3Qg dXNpbmcgdGhlIHN0b2xlbiBtZW1vcnkKKyAqIEBkZXY6CWRybSBkZXZpY2UKKyAqIEBzaXplOglz aXplIG9mIHRoZSBvYmplY3QgcmVxdWVzdGVkCisgKgorICogaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9zdG9sZW4oKSB0cmllcyB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBvYmplY3QKKyAqIGZy b20gdGhlIHN0b2xlbiBtZW1vcnkgcmVnaW9uLiBJZiBub3QgZW5vdWdoIG1lbW9yeSBpcyBmb3Vu ZCwgaXQgdHJpZXMKKyAqIGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFyY2hpbmcg YWdhaW4uCisgKgorICogUmV0dXJuczogT2JqZWN0IHBvaW50ZXIgLSBzdWNjZXNzIGFuZCBlcnJv ciBwb2ludGVyIC0gZmFpbHVyZQorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitp OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQg c2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVf c3RvbGVuX25vZGUgKnN0b2xlbjsKKworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5z dHJ1Y3RfbXV0ZXgpKTsKKworCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0u c3RvbGVuKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwlEUk1fREVCVUdfS01TKCJj cmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNpemUpOworCisJc3RvbGVuID0g c3RvbGVuX2FsbG9jKGRldl9wcml2LCBzaXplKTsKKwlpZiAoSVNfRVJSKHN0b2xlbikpCisJCXJl dHVybiBFUlJfQ0FTVChzdG9sZW4pOworCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoIUlTX0VSUihvYmopKQogCQlyZXR1cm4gb2JqOwog Ci0JaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCWk5MTVf Z2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJa2ZyZWUo c3RvbGVuKTsKIAlyZXR1cm4gb2JqOwogfQpAQCAtNjMxLDcgKzc2NCw3IEBAIGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSAmZGV2X3ByaXYtPmd0dC5iYXNl OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9ub2Rl ICpzdG9sZW47CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCkBAIC02NTAsMTAgKzc4MywxMCBAQCBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0Jc3RvbGVu LT5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7Ci0Jc3RvbGVuLT5zaXplID0gc2l6ZTsKKwlzdG9sZW4t PmJhc2Uuc3RhcnQgPSBzdG9sZW5fb2Zmc2V0OworCXN0b2xlbi0+YmFzZS5zaXplID0gc2l6ZTsK IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwotCXJldCA9IGRybV9tbV9y ZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sIHN0b2xlbik7CisJcmV0ID0gZHJtX21t X3Jlc2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgJnN0b2xlbi0+YmFzZSk7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwogCWlmIChyZXQpIHsKIAkJRFJN X0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBzcGFjZVxuIik7CkBAIC02NjQs NyArNzk3LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRl ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKElTX0VSUihvYmopKSB7CiAJCURSTV9ERUJVR19L TVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gb2JqZWN0XG4iKTsKLQkJaTkxNV9nZW1fc3Rv bGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCQlpOTE1X2dlbV9zdG9sZW5fcmVt b3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCQlrZnJlZShzdG9sZW4pOwogCQly ZXR1cm4gb2JqOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGViNzU3MTIuLjJjYWI0 YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTE1NSw3ICs1MTU1LDcgQEAgc3RhdGlj IHZvaWQgdmFsbGV5dmlld19jaGVja19wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAl1bnNpZ25lZCBsb25nIHBjdHhfYWRkciA9IEk5MTVfUkVBRChWTFZfUENCUikgJiB+ NDA5NTsKIAogCVdBUk5fT04ocGN0eF9hZGRyICE9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSAr Ci0JCQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5zdGFydCk7CisJCQkgICAgIGRl dl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIH0KIAogCkBAIC01MjMyLDcg KzUyMzIsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCX0KIAotCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+bW0u c3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFkZHIgPSBkZXZfcHJp di0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7CiAJSTkxNV9XUklU RShWTFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=