From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 3/4] drm/i915: Add support for stealing purgable stolen pages Date: Tue, 15 Sep 2015 14:03:26 +0530 Message-ID: <1442306007-10792-4-git-send-email-ankitprasad.r.sharma@intel.com> References: <1442306007-10792-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 1661B6E471 for ; Tue, 15 Sep 2015 01:51:30 -0700 (PDT) In-Reply-To: <1442306007-10792-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, 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 aHJpcy9EYW5pZWwpCgpUZXN0Y2FzZTogaWd0L2dlbV9zdG9sZW4KClNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBB bmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICB8ICAgNCArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgfCAgMTYgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYyB8IDE3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgIHwgICA0ICstCiA1IGZpbGVz IGNoYW5nZWQsIDE4NyBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDdhMjhkZTUuLjBkYjhjNDcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xNzksNyArMTc5LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJCXNlcV9w dXRzKG0sICIpIik7CiAJfQogCWlmIChvYmotPnN0b2xlbikKLQkJc2VxX3ByaW50ZihtLCAiIChz dG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOworCQlzZXFfcHJpbnRmKG0sICIg KHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIAlpZiAob2JqLT5w aW5fZGlzcGxheSB8fCBvYmotPmZhdWx0X21hcHBhYmxlKSB7CiAJCWNoYXIgc1szXSwgKnQgPSBz OwogCQlpZiAob2JqLT5waW5fZGlzcGxheSkKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgaW50 IG9ial9yYW5rX2J5X3N0b2xlbih2b2lkICpwcml2LAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpiID0KIAkJY29udGFpbmVyX29mKEIsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBv YmpfZXhlY19saW5rKTsKIAotCXJldHVybiBhLT5zdG9sZW4tPnN0YXJ0IC0gYi0+c3RvbGVuLT5z dGFydDsKKwlyZXR1cm4gYS0+c3RvbGVuLT5iYXNlLnN0YXJ0IC0gYi0+c3RvbGVuLT5iYXNlLnN0 YXJ0OwogfQogCiBzdGF0aWMgaW50IGk5MTVfZ2VtX3N0b2xlbl9saXN0X2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZTZlZjA4 My4uMzdlZTMyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04NDEsNiArODQxLDEyIEBA IHN0cnVjdCBpOTE1X2N0eF9oYW5nX3N0YXRzIHsKIAlib29sIGJhbm5lZDsKIH07CiAKK3N0cnVj dCBpOTE1X3N0b2xlbl9ub2RlIHsKKwlzdHJ1Y3QgZHJtX21tX25vZGUgYmFzZTsKKwlzdHJ1Y3Qg bGlzdF9oZWFkIG1tX2xpbms7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKK307 CisKIC8qIFRoaXMgbXVzdCBtYXRjaCB1cCB3aXRoIHRoZSB2YWx1ZSBwcmV2aW91c2x5IHVzZWQg Zm9yIGV4ZWNidWYyLnJzdmQxLiAqLwogI2RlZmluZSBERUZBVUxUX0NPTlRFWFRfSEFORExFIDAK IApAQCAtMTI2OCw2ICsxMjc0LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7CiAJICovCiAJc3Ry dWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xpc3Q7CiAKKwkvKioKKwkgKiBMaXN0IG9mIHN0b2xlbiBv YmplY3RzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwdXJnZWFibGUgYW5kCisJICogdGh1cyBh dmFpbGFibGUgZm9yIHJlYXBpbmcgaWYgd2UgbmVlZCBtb3JlIHNwYWNlIGZvciBhIG5ldworCSAq IGFsbG9jYXRpb24uIE9yZGVyZWQgYnkgdGltZSBvZiBtYXJraW5nIHB1cmdlYWJsZS4KKwkgKi8K KwlzdHJ1Y3QgbGlzdF9oZWFkIHN0b2xlbl9saXN0OworCiAJLyoqIFVzYWJsZSBwb3J0aW9uIG9m IHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0 ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBAIC0yMDI2LDcgKzIwMzksNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCB2bWFfbGlzdDsKIAog CS8qKiBTdG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNr ZWQgYnkgc2htZW0uICovCi0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CisJc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owog CiAJc3RydWN0IGxpc3RfaGVhZCByaW5nX2xpc3RbSTkxNV9OVU1fUklOR1NdOwpAQCAtMjAzNCw2 ICsyMDQ3LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hl YWQgb2JqX2V4ZWNfbGluazsKIAogCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9vbF9saW5rOwor CXN0cnVjdCBsaXN0X2hlYWQgdG1wX2xpbms7CiAKIAkvKioKIAkgKiBUaGlzIGlzIHNldCBpZiB0 aGUgb2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCkBAIC0yMTUwLDYg KzIxNjQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJfTsKIH07CiAjZGVmaW5l IHRvX2ludGVsX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCwgYmFzZSkKKyNkZWZpbmUgSTkxNV9CT19JU19BQ1RJVkUoX19vYmopIChfX29iai0+YWN0aXZl KQogCiB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv bGQsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbmV3LApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKaW5kZXggNjU2OGE3Zi4uODUwMjViMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCkBAIC00MjI4LDYgKzQyMjgsMjAgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURW X0RPTlRORUVEICYmIG9iai0+cGFnZXMgPT0gTlVMTCkKIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5j YXRlKG9iaik7CiAKKwlpZiAob2JqLT5zdG9sZW4pIHsKKwkJc3dpdGNoIChvYmotPm1hZHYpIHsK KwkJY2FzZSBJOTE1X01BRFZfV0lMTE5FRUQ6CisJCQlsaXN0X2RlbF9pbml0KCZvYmotPnN0b2xl bi0+bW1fbGluayk7CisJCQlicmVhazsKKwkJY2FzZSBJOTE1X01BRFZfRE9OVE5FRUQ6CisJCQls aXN0X21vdmUoJm9iai0+c3RvbGVuLT5tbV9saW5rLAorCQkJCSAgJmRldl9wcml2LT5tbS5zdG9s ZW5fbGlzdCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9CisJfQorCiAJ YXJncy0+cmV0YWluZWQgPSBvYmotPm1hZHYgIT0gX19JOTE1X01BRFZfUFVSR0VEOwogCiBvdXQ6 CkBAIC00MjQ4LDYgKzQyNjIsNyBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+b2JqX2V4ZWNf bGluayk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+dm1hX2xpc3QpOwogCUlOSVRfTElTVF9IRUFE KCZvYmotPmJhdGNoX3Bvb2xfbGluayk7CisJSU5JVF9MSVNUX0hFQUQoJm9iai0+dG1wX2xpbmsp OwogCiAJb2JqLT5vcHMgPSBvcHM7CiAKQEAgLTQ4OTgsNiArNDkxMyw3IEBAIGk5MTVfZ2VtX2xv YWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNv bnRleHRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3Qp OwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7CisJSU5JVF9MSVNU X0hFQUQoJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9w cml2LT5tbS5mZW5jZV9saXN0KTsKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkr KykKIAkJaW5pdF9yaW5nX2xpc3RzKCZkZXZfcHJpdi0+cmluZ1tpXSk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3N0b2xlbi5jCmluZGV4IDk5ZjJiY2UuLjQzMGUwYjAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCkBAIC01Miw4ICs1Miw4IEBAIGludCBpOTE1X2dl bV9zdG9sZW5faW5zZXJ0X25vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQlyZXR1cm4gLUVOT0RFVjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9j ayk7Ci0JcmV0ID0gZHJtX21tX2luc2VydF9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBub2Rl LCBzaXplLCBhbGlnbm1lbnQsCi0JCQkJIERSTV9NTV9TRUFSQ0hfREVGQVVMVCk7CisJcmV0ID0g ZHJtX21tX2luc2VydF9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBub2RlLAorCQkJCSBzaXpl LCBhbGlnbm1lbnQsIERSTV9NTV9TRUFSQ0hfREVGQVVMVCk7CiAJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+bW0uc3RvbGVuX2xvY2spOwogCiAJcmV0dXJuIHJldDsKQEAgLTQwNywxOCArNDA3LDE5 IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfc3RvbGVuKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJa2ZyZWUob2JqLT5wYWdlcyk7CiB9CiAKLQogc3Rh dGljIHZvaWQKIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0JCWk5 MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQlsaXN0 X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25v ZGUoZGV2X3ByaXYsICZvYmotPnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsK IAkJb2JqLT5zdG9sZW4gPSBOVUxMOwogCX0KIH0KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyA9IHsKIAkuZ2V0 X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19zdG9sZW4sCiAJLnB1dF9wYWdlcyA9 IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfc3RvbGVuLApAQCAtNDI3LDcgKzQyOCw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0 X3N0b2xlbl9vcHMgPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCiBf aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CSAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbikKKwkJCSAgICAgICBzdHJ1Y3QgaTkx NV9zdG9sZW5fbm9kZSAqc3RvbGVuKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7CiAKQEAgLTQzNSwxNyArNDM2LDIxIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuIE5V TEw7CiAKLQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9s ZW4tPnNpemUpOworCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2Us IHN0b2xlbi0+YmFzZS5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dl bV9vYmplY3Rfc3RvbGVuX29wcyk7CiAKIAlvYmotPnBhZ2VzID0gaTkxNV9wYWdlc19jcmVhdGVf Zm9yX3N0b2xlbihkZXYsCi0JCQkJCQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7CisJ CQkJCQkgIHN0b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJCSAgc3RvbGVuLT5iYXNlLnNpemUpOwog CWlmIChvYmotPnBhZ2VzID09IE5VTEwpCiAJCWdvdG8gY2xlYW51cDsKIAogCWk5MTVfZ2VtX29i amVjdF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAorCXN0b2xlbi0+ b2JqID0gb2JqOworCUlOSVRfTElTVF9IRUFEKCZzdG9sZW4tPm1tX2xpbmspOworCiAJb2JqLT5i YXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5f R1RUOwogCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6 IEk5MTVfQ0FDSEVfTk9ORTsKIApAQCAtNDU2LDM2ICs0NjEsMTU3IEBAIGNsZWFudXA6CiAJcmV0 dXJuIE5VTEw7CiB9CiAKLXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKLWk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQorc3Rh dGljIGJvb2wgbWFya19mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVj dCBsaXN0X2hlYWQgKnVud2luZCkKK3sKKwlpZiAob2JqLT5zdG9sZW4gPT0gTlVMTCkKKwkJcmV0 dXJuIGZhbHNlOworCisJaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfRE9OVE5FRUQpCisJCXJl dHVybiBmYWxzZTsKKworCWlmIChvYmotPnBpbl9kaXNwbGF5KQorCQlyZXR1cm4gZmFsc2U7CisK KwlpZiAoSTkxNV9CT19JU19BQ1RJVkUob2JqKSkKKwkJcmV0dXJuIGZhbHNlOworCisJbGlzdF9h ZGQoJm9iai0+dG1wX2xpbmssIHVud2luZCk7CisJcmV0dXJuIGRybV9tbV9zY2FuX2FkZF9ibG9j aygmb2JqLT5zdG9sZW4tPmJhc2UpOworfQorCitzdGF0aWMgaW50CitzdG9sZW5fZXZpY3Qoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CisJc3Ry dWN0IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpp dGVyOwogCWludCByZXQ7CiAKLQlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1t LnN0b2xlbikpCi0JCXJldHVybiBOVUxMOworCWRybV9tbV9pbml0X3NjYW4oJmRldl9wcml2LT5t bS5zdG9sZW4sIHNpemUsIDAsIDApOworCUlOSVRfTElTVF9IRUFEKCZ1bndpbmQpOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeShpdGVyLCAmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0LCBtbV9saW5r KSB7CisJCWlmIChJOTE1X0JPX0lTX0FDVElWRShpdGVyLT5vYmopKQorCQkJY29udGludWU7CisK KwkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1bndpbmQpKQorCQkJZ290byBmb3VuZDsKKwl9 CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3Qs IG1tX2xpbmspIHsKKwkJaWYgKCFJOTE1X0JPX0lTX0FDVElWRShpdGVyLT5vYmopKQorCQkJY29u dGludWU7CisKKwkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1bndpbmQpKQorCQkJZ290byBm b3VuZDsKKwl9CisKK2ZvdW5kOgorCUlOSVRfTElTVF9IRUFEKCZldmljdCk7CisJd2hpbGUgKCFs aXN0X2VtcHR5KCZ1bndpbmQpKSB7CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnVud2luZCwK KwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJICAgICAgIHRtcF9s aW5rKTsKKwkJbGlzdF9kZWxfaW5pdCgmb2JqLT50bXBfbGluayk7CisKKwkJaWYgKGRybV9tbV9z Y2FuX3JlbW92ZV9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpKSB7CisJCQlsaXN0X2FkZCgmb2Jq LT50bXBfbGluaywgJmV2aWN0KTsKKwkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5i YXNlKTsKKwkJfQorCX0KKworCXJldCA9IDA7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZldmljdCkp IHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgmZXZpY3QsCisJCQkJICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAgICAgICB0bXBfbGluayk7CisJCWxpc3RfZGVsX2lu aXQoJm9iai0+dG1wX2xpbmspOworCisJCWlmIChyZXQgPT0gMCkgeworCQkJc3RydWN0IGk5MTVf dm1hICp2bWEsICp2bWFfbmV4dDsKKworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwg dm1hX25leHQsCisJCQkJCQkgJm9iai0+dm1hX2xpc3QsCisJCQkJCQkgdm1hX2xpbmspCisJCQkJ aWYgKGk5MTVfdm1hX3VuYmluZCh2bWEpKQorCQkJCQlicmVhazsKKworCQkJLyogU3RvbGVuIHBp bnMgaXRzIHBhZ2VzIHRvIHByZXZlbnQgdGhlCisJCQkgKiBub3JtYWwgc2hyaW5rZXIgZnJvbSBw cm9jZXNzaW5nIHN0b2xlbgorCQkJICogb2JqZWN0cy4KKwkJCSAqLworCQkJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKG9iaik7CisKKwkJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXMob2JqKTsKKwkJCWlmIChyZXQgPT0gMCkgeworCQkJCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X3N0b2xlbihvYmopOworCQkJCW9iai0+bWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDsKKwkJCX0g ZWxzZSB7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCQkJfQorCQl9CisK KwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICoKK3N0b2xlbl9hbGxv YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQoreworCXN0cnVj dCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisJaW50IHJldDsKIAotCURSTV9ERUJVR19LTVMo ImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CiAJaWYgKHNpemUg PT0gMCkKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCiAJc3Rv bGVuID0ga3phbGxvYyhzaXplb2YoKnN0b2xlbiksIEdGUF9LRVJORUwpOwogCWlmICghc3RvbGVu KQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBp OTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7 CisJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5i YXNlLCBzaXplLCA0MDk2KTsKKwlpZiAocmV0ID09IDApCisJCWdvdG8gb3V0OworCisJLyogTm8g bW9yZSBzdG9sZW4gbWVtb3J5IGF2YWlsYWJsZSwgb3IgdG9vIGZyYWdtZW50ZWQuCisJICogVHJ5 IGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCisJICovCisJcmV0 ID0gc3RvbGVuX2V2aWN0KGRldl9wcml2LCBzaXplKTsKKworCWlmIChyZXQgPT0gMCkKKwkJcmV0 ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLAor CQkJCQkJICBzaXplLCAwKTsKK291dDoKIAlpZiAocmV0KSB7CiAJCWtmcmVlKHN0b2xlbik7Ci0J CXJldHVybiBOVUxMOworCQlzdG9sZW4gPSBFUlJfUFRSKHJldCk7CiAJfQogCisJcmV0dXJuIHN0 b2xlbjsKK30KKworc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpz dG9sZW47CisKKwlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikp CisJCXJldHVybiBOVUxMOworCisJRFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVj dDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKKworCXN0b2xlbiA9IHN0b2xlbl9hbGxvYyhkZXZfcHJp diwgc2l6ZSk7CisJaWYgKElTX0VSUihzdG9sZW4pKQorCQlyZXR1cm4gTlVMTDsKKwogCW9iaiA9 IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKG9iaikK IAkJcmV0dXJuIG9iajsKIAotCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwg c3RvbGVuKTsKKwlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4t PmJhc2UpOwogCWtmcmVlKHN0b2xlbik7CiAJcmV0dXJuIE5VTEw7CiB9CkBAIC00OTksNyArNjI1 LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9ICZk ZXZfcHJpdi0+Z3R0LmJhc2U7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlz dHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3Rv bGVuOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKQEAgLTUxOCwxMCArNjQ0 LDEwIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIE5VTEw7CiAKLQlz dG9sZW4tPnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKLQlzdG9sZW4tPnNpemUgPSBzaXplOworCXN0 b2xlbi0+YmFzZS5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7CisJc3RvbGVuLT5iYXNlLnNpemUgPSBz aXplOwogCW11dGV4X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Ci0JcmV0ID0gZHJt X21tX3Jlc2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc3RvbGVuKTsKKwlyZXQgPSBk cm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCAmc3RvbGVuLT5iYXNlKTsK IAltdXRleF91bmxvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7CiAJaWYgKHJldCkgewog CQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4iKTsKQEAg LTUzMiw3ICs2NTgsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxs b2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAob2JqID09IE5VTEwpIHsKIAkJRFJNX0RF QlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBvYmplY3RcbiIpOwotCQlpOTE1X2dl bV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7CisJCWk5MTVfZ2VtX3N0b2xl bl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKHN0b2xlbik7 CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTU3Myw3ICs2OTksNyBAQCBpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiBl cnJfdm1hOgogCWk5MTVfZ2VtX3ZtYV9kZXN0cm95KHZtYSk7CiBlcnJfb3V0OgotCWk5MTVfZ2Vt X3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwlpOTE1X2dlbV9zdG9sZW5f cmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCWtmcmVlKHN0b2xlbik7CiAJ ZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CiAJcmV0dXJuIE5VTEw7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCBmZmYwYzIyLi41MWYyZjkxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKQEAgLTUyMzUsNyArNTIzNSw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdf Y2hlY2tfcGN0eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJdW5zaWduZWQg bG9uZyBwY3R4X2FkZHIgPSBJOTE1X1JFQUQoVkxWX1BDQlIpICYgfjQwOTU7CiAKIAlXQVJOX09O KHBjdHhfYWRkciAhPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKwotCQkJICAgICBkZXZfcHJp di0+dmx2X3BjdHgtPnN0b2xlbi0+c3RhcnQpOworCQkJICAgICBkZXZfcHJpdi0+dmx2X3BjdHgt PnN0b2xlbi0+YmFzZS5zdGFydCk7CiB9CiAKIApAQCAtNTMwOSw3ICs1MzA5LDcgQEAgc3RhdGlj IHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJl dHVybjsKIAl9CiAKLQlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0 eC0+c3RvbGVuLT5zdGFydDsKKwlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNl ICsgcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0OwogCUk5MTVfV1JJVEUoVkxWX1BDQlIsIHBjdHhf cGFkZHIpOwogCiBvdXQ6Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK