From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 07/12] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 20 Apr 2016 16:47:34 +0530 Message-ID: <1461151059-16361-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1461151059-16361-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 603AE6E98F for ; Wed, 20 Apr 2016 11:42:50 +0000 (UTC) In-Reply-To: <1461151059-16361-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: Ankitprasad Sharma , akash.goel@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 aWN0aW9uIChDaHJpcykKCnYxMzogUmViYXNlZAoKVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4K U2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNSArKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAg IDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNDZjYzAzYi4uN2Y5NGM2YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNj cmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogCQlzZXFfcHV0cyhtLCAiKSIpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCi0JCXNlcV9w cmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKKwkJc2Vx X3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7 CiAJaWYgKG9iai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewogCQljaGFy IHNbM10sICp0ID0gczsKIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCkBAIC0yNTMsOSArMjUzLDkg QEAgc3RhdGljIGludCBvYmpfcmFua19ieV9zdG9sZW4odm9pZCAqcHJpdiwKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqYiA9CiAJCWNvbnRhaW5lcl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCwgb2JqX2V4ZWNfbGluayk7CiAKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA8IGIt PnN0b2xlbi0+c3RhcnQpCisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA8IGItPnN0b2xlbi0+ YmFzZS5zdGFydCkKIAkJcmV0dXJuIC0xOwotCWlmIChhLT5zdG9sZW4tPnN0YXJ0ID4gYi0+c3Rv bGVuLT5zdGFydCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0ID4gYi0+c3RvbGVuLT5iYXNl LnN0YXJ0KQogCQlyZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IGMwYjhkZDkuLmQ5OThmNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODE4 LDYgKzgxOCwxMiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7 CiB9OwogCitzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJh c2U7CisJc3RydWN0IGxpc3RfaGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cit9OworCiAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJl dmlvdXNseSB1c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05U RVhUX0hBTkRMRSAwCiAKQEAgLTEyNjcsNiArMTI3MywxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0g ewogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlz dCBvZiBzdG9sZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFu ZAorCSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBm b3IgYSBuZXcKKwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJn ZWFibGUuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2Fi bGUgcG9ydGlvbiBvZiB0aGUgR1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9i YXNlOyAvKiBsaW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjEwNCw3ICsy MTE3LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQg dm1hX2xpc3Q7CiAKIAkvKiogU3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQg b2YgYmVpbmcgYmFja2VkIGJ5IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBn bG9iYWxfbGlzdDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgZW5naW5lX2xpc3RbSTkxNV9OVU1fRU5H SU5FU107CkBAIC0yMTEyLDYgKzIxMjUsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 CiAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBi YXRjaF9wb29sX2xpbms7CisJLyoqIFVzZWQgdG8gbGluayBhbiBvYmplY3QgdG8gYSBsaXN0IHRl bXBvcmFyaWx5ICovCisJc3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRo aXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRp bmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGYyYWZmYzYuLmM1YmExYmIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwpAQCAtNDU1MCw2ICs0NTUwLDIwIEBAIGk5MTVfZ2VtX21hZHZpc2Vf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2Vt X29iamVjdF90cnVuY2F0ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAo b2JqLT5tYWR2KSB7CisJCWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5p dCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RP TlRORUVEOgorCQkJbGlzdF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZf cHJpdi0+bW0uc3RvbGVuX2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsK KwkJfQorCX0KKwogCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BV UkdFRDsKIAogb3V0OgpAQCAtNTIwMCw2ICs1MjE0LDcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0 X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFE KCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+ bW0uZmVuY2VfbGlzdCk7CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykK IAkJaW5pdF9lbmdpbmVfbGlzdHMoJmRldl9wcml2LT5lbmdpbmVbaV0pOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCA4OWNhMTUxLi5iODU3M2E2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNTUxLDcgKzU1MSw4IEBAIGk5MTVfZ2Vt X29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9w cml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1t X2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0 b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxM OwogCX0KQEAgLTU2NCw3ICs1NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpz dG9sZW4pCisJCQkgICAgICAgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7 CkBAIC01NzMsMTEgKzU3NCwxMiBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFz ZSwgc3RvbGVuLT5zaXplKTsKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2Jq LT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAm aTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwogCiAJcGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0 ZV9mb3Jfc3RvbGVuKGRldiwKLQkJCQkJICAgICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUp OworCQkJCQkgICAgIHN0b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJICAgICBzdG9sZW4tPmJhc2Uu c2l6ZSk7CiAJaWYgKElTX0VSUihwYWdlcykpIHsKIAkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2Jq KTsKIAkJcmV0dXJuIEVSUl9DQVNUKHBhZ2VzKTsKQEAgLTU5MSwyNCArNTkzLDExMiBAQCBfaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpOTE1 X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJb2JqLT5zdG9sZW4gPSBzdG9sZW47CiAKKwlz dG9sZW4tPm9iaiA9IG9iajsKKwlJTklUX0xJU1RfSEVBRCgmc3RvbGVuLT5tbV9saW5rKTsKKwog CW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9HRU1f RE9NQUlOX0dUVDsKIAlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNI RV9MTEMgOiBJOTE1X0NBQ0hFX05PTkU7CiAKIAlyZXR1cm4gb2JqOwogfQogCi1zdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCi1pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKK3N0YXRpYyBib29sCittYXJrX2ZyZWUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGxpc3RfaGVhZCAqdW53aW5kKQorewor CUJVR19PTihvYmotPnN0b2xlbiA9PSBOVUxMKTsKKworCWlmIChvYmotPm1hZHYgIT0gSTkxNV9N QURWX0RPTlRORUVEKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAob2JqLT5waW5fZGlzcGxheSkK KwkJcmV0dXJuIGZhbHNlOworCisJbGlzdF9hZGQoJm9iai0+dG1wX2xpbmssIHVud2luZCk7CisJ cmV0dXJuIGRybV9tbV9zY2FuX2FkZF9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpOworfQorCitz dGF0aWMgaW50CitzdG9sZW5fZXZpY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1NjQgc2l6ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0 IGRybV9tbV9ub2RlICpzdG9sZW47Ci0JaW50IHJldDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHVud2lu ZCwgZXZpY3Q7CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKml0ZXI7CisJaW50IHJldCwgYWN0 aXZlOwogCi0JaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQot CQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJp di0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWRybV9tbV9pbml0X3NjYW4oJmRldl9wcml2LT5tbS5z dG9sZW4sIHNpemUsIDAsIDApOworCUlOSVRfTElTVF9IRUFEKCZ1bndpbmQpOworCisJLyogUmV0 aXJlIGFsbCByZXF1ZXN0cyBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2aWN0IGxpc3QgKi8KKwlpOTE1 X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRldik7CisKKwlmb3IgKGFjdGl2ZSA9IDA7 IGFjdGl2ZSA8PSAxOyBhY3RpdmUrKykgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsICZk ZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QsIG1tX2xpbmspIHsKKwkJCWlmIChpdGVyLT5vYmotPmFj dGl2ZSAhPSBhY3RpdmUpCisJCQkJY29udGludWU7CisKKwkJCWlmIChtYXJrX2ZyZWUoaXRlci0+ b2JqLCAmdW53aW5kKSkKKwkJCQlnb3RvIGZvdW5kOworCQl9CisJfQorCitmb3VuZDoKKwlJTklU X0xJU1RfSEVBRCgmZXZpY3QpOworCXdoaWxlICghbGlzdF9lbXB0eSgmdW53aW5kKSkgeworCQlv YmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZ1bndpbmQsCisJCQkJICAgICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0LAorCQkJCSAgICAgICB0bXBfbGluayk7CisJCWxpc3RfZGVsKCZvYmotPnRt cF9saW5rKTsKKworCQlpZiAoZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZvYmotPnN0b2xlbi0+ YmFzZSkpIHsKKwkJCWxpc3RfYWRkKCZvYmotPnRtcF9saW5rLCAmZXZpY3QpOworCQkJZHJtX2dl bV9vYmplY3RfcmVmZXJlbmNlKCZvYmotPmJhc2UpOworCQl9CisJfQorCisJcmV0ID0gMDsKKwl3 aGlsZSAoIWxpc3RfZW1wdHkoJmV2aWN0KSkgeworCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZl dmljdCwKKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJICAgICAg IHRtcF9saW5rKTsKKwkJbGlzdF9kZWwoJm9iai0+dG1wX2xpbmspOworCisJCWlmIChyZXQgPT0g MCkgeworCQkJc3RydWN0IGk5MTVfdm1hICp2bWEsICp2bWFfbmV4dDsKKworCQkJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm1hX25leHQsCisJCQkJCQkgJm9iai0+dm1hX2xpc3QsCisJ CQkJCQkgb2JqX2xpbmspCisJCQkJaWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJCQlicmVh azsKKworCQkJLyogU3RvbGVuIHBpbnMgaXRzIHBhZ2VzIHRvIHByZXZlbnQgdGhlCisJCQkgKiBu b3JtYWwgc2hyaW5rZXIgZnJvbSBwcm9jZXNzaW5nIHN0b2xlbgorCQkJICogb2JqZWN0cy4KKwkJ CSAqLworCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisKKwkJCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKKwkJCWlmIChyZXQgPT0gMCkgeworCQkJCWk5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihvYmopOworCQkJCW9iai0+bWFkdiA9IF9fSTkx NV9NQURWX1BVUkdFRDsKKwkJCX0gZWxzZSB7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdl cyhvYmopOworCQkJfQorCQl9CisKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+ YmFzZSk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3N0b2xl bl9ub2RlICoKK3N0b2xlbl9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHU2NCBzaXplKQoreworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisJaW50IHJl dDsKIAotCURSTV9ERUJVR19LTVMoImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxu Iiwgc2l6ZSk7CiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAK QEAgLTYxNiwxNyArNzA2LDYwIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQogCWlmICghc3RvbGVuKQogCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKIAotCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZf cHJpdiwgc3RvbGVuLCBzaXplLCA0MDk2KTsKKwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0 X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UsIHNpemUsIDQwOTYpOworCWlmIChyZXQgPT0g MCkKKwkJZ290byBvdXQ7CisKKwkvKiBObyBtb3JlIHN0b2xlbiBtZW1vcnkgYXZhaWxhYmxlLCBv ciB0b28gZnJhZ21lbnRlZC4KKwkgKiBUcnkgZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5k IHNlYXJjaCBhZ2Fpbi4KKwkgKi8KKwlyZXQgPSBzdG9sZW5fZXZpY3QoZGV2X3ByaXYsIHNpemUp OworCWlmIChyZXQgPT0gMCkKKwkJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRl dl9wcml2LCAmc3RvbGVuLT5iYXNlLAorCQkJCQkJICBzaXplLCA0MDk2KTsKK291dDoKIAlpZiAo cmV0KSB7CiAJCWtmcmVlKHN0b2xlbik7CiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCisJ cmV0dXJuIHN0b2xlbjsKK30KKworLyoqCisgKiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bigpIC0gY3JlYXRlcyBvYmplY3QgdXNpbmcgdGhlIHN0b2xlbiBtZW1vcnkKKyAqIEBkZXY6CWRy bSBkZXZpY2UKKyAqIEBzaXplOglzaXplIG9mIHRoZSBvYmplY3QgcmVxdWVzdGVkCisgKgorICog aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oKSB0cmllcyB0byBhbGxvY2F0ZSBtZW1vcnkg Zm9yIHRoZSBvYmplY3QKKyAqIGZyb20gdGhlIHN0b2xlbiBtZW1vcnkgcmVnaW9uLiBJZiBub3Qg ZW5vdWdoIG1lbW9yeSBpcyBmb3VuZCwgaXQgdHJpZXMKKyAqIGV2aWN0aW5nIHB1cmdlYWJsZSBv YmplY3RzIGFuZCBzZWFyY2hpbmcgYWdhaW4uCisgKgorICogUmV0dXJuczogT2JqZWN0IHBvaW50 ZXIgLSBzdWNjZXNzIGFuZCBlcnJvciBwb2ludGVyIC0gZmFpbHVyZQorICovCitzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKKworCVdBUk5fT04oIW11 dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKworCWlmICghZHJtX21tX2luaXRp YWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7 CisKKwlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIs IHNpemUpOworCisJc3RvbGVuID0gc3RvbGVuX2FsbG9jKGRldl9wcml2LCBzaXplKTsKKwlpZiAo SVNfRVJSKHN0b2xlbikpCisJCXJldHVybiBFUlJfQ0FTVChzdG9sZW4pOworCiAJb2JqID0gX2k5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoIUlTX0VSUihv YmopKQogCQlyZXR1cm4gb2JqOwogCi0JaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9w cml2LCBzdG9sZW4pOworCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0 b2xlbi0+YmFzZSk7CiAJa2ZyZWUoc3RvbGVuKTsKIAlyZXR1cm4gb2JqOwogfQpAQCAtNjQwLDcg Kzc3Myw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+ Z2d0dDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1f bm9kZSAqc3RvbGVuOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0 IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIApAQCAtNjYxLDEwICs3OTQsMTAgQEAgaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCWlmICghc3RvbGVuKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXN0 b2xlbi0+c3RhcnQgPSBzdG9sZW5fb2Zmc2V0OwotCXN0b2xlbi0+c2l6ZSA9IHNpemU7CisJc3Rv bGVuLT5iYXNlLnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKKwlzdG9sZW4tPmJhc2Uuc2l6ZSA9IHNp emU7CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsKLQlyZXQgPSBkcm1f bW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBzdG9sZW4pOworCXJldCA9IGRy bV9tbV9yZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sICZzdG9sZW4tPmJhc2UpOwog CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsKIAlpZiAocmV0KSB7CiAJ CURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gc3BhY2VcbiIpOwpAQCAt Njc1LDcgKzgwOCw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxv Y2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlvYmogPSBfaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oZGV2LCBzdG9sZW4pOwogCWlmIChJU19FUlIob2JqKSkgewogCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxuIik7Ci0JCWk5MTVfZ2Vt X3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwkJaTkxNV9nZW1fc3RvbGVu X3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlKTsKIAkJa2ZyZWUoc3RvbGVuKTsK IAkJcmV0dXJuIG9iajsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCAyODYzZjAxLi4y MDczOWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTUyODksNyArNTI4OSw3IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfY2hlY2tfcGN0eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJdW5zaWduZWQgbG9uZyBwY3R4X2FkZHIgPSBJOTE1X1JFQUQoVkxWX1BDQlIp ICYgfjQwOTU7CiAKIAlXQVJOX09OKHBjdHhfYWRkciAhPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jh c2UgKwotCQkJICAgICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+c3RhcnQpOworCQkJICAg ICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+YmFzZS5zdGFydCk7CiB9CiAKIApAQCAtNTM2 NCw3ICs1MzY0LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCWdvdG8gb3V0OwogCX0KIAotCXBjdHhfcGFkZHIgPSBkZXZfcHJp di0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFkZHIgPSBk ZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7CiAJSTkx NV9XUklURShWTFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK