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: Tue, 26 Jan 2016 01:13:33 +0530 Message-ID: <1453751016-8713-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1453751016-8713-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B5EF72045 for ; Mon, 25 Jan 2016 12:05:40 -0800 (PST) In-Reply-To: <1453751016-8713-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, shashidhar.hiremath@intel.com, Ankitprasad Sharma 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 OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGM1ZGIyMzUuLjZkNTIwNmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xNzQsNyArMTc0LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJCXNlcV9w dXRzKG0sICIpIik7CiAJfQogCWlmIChvYmotPnN0b2xlbikKLQkJc2VxX3ByaW50ZihtLCAiIChz dG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOworCQlzZXFfcHJpbnRmKG0sICIg KHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIAlpZiAob2JqLT5w aW5fZGlzcGxheSB8fCBvYmotPmZhdWx0X21hcHBhYmxlKSB7CiAJCWNoYXIgc1szXSwgKnQgPSBz OwogCQlpZiAob2JqLT5waW5fZGlzcGxheSkKQEAgLTI1Myw5ICsyNTMsOSBAQCBzdGF0aWMgaW50 IG9ial9yYW5rX2J5X3N0b2xlbih2b2lkICpwcml2LAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpiID0KIAkJY29udGFpbmVyX29mKEIsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBv YmpfZXhlY19saW5rKTsKIAotCWlmIChhLT5zdG9sZW4tPnN0YXJ0IDwgYi0+c3RvbGVuLT5zdGFy dCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0IDwgYi0+c3RvbGVuLT5iYXNlLnN0YXJ0KQog CQlyZXR1cm4gLTE7Ci0JaWYgKGEtPnN0b2xlbi0+c3RhcnQgPiBiLT5zdG9sZW4tPnN0YXJ0KQor CWlmIChhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgPiBiLT5zdG9sZW4tPmJhc2Uuc3RhcnQpCiAJCXJl dHVybiAxOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMDA4MTI0 OC4uYmI5Y2Q5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04NDAsNiArODQwLDEyIEBA IHN0cnVjdCBpOTE1X2N0eF9oYW5nX3N0YXRzIHsKIAlib29sIGJhbm5lZDsKIH07CiAKK3N0cnVj dCBpOTE1X3N0b2xlbl9ub2RlIHsKKwlzdHJ1Y3QgZHJtX21tX25vZGUgYmFzZTsKKwlzdHJ1Y3Qg bGlzdF9oZWFkIG1tX2xpbms7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKK307 CisKIC8qIFRoaXMgbXVzdCBtYXRjaCB1cCB3aXRoIHRoZSB2YWx1ZSBwcmV2aW91c2x5IHVzZWQg Zm9yIGV4ZWNidWYyLnJzdmQxLiAqLwogI2RlZmluZSBERUZBVUxUX0NPTlRFWFRfSEFORExFIDAK IApAQCAtMTI1Myw2ICsxMjU5LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7CiAJICovCiAJc3Ry dWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xpc3Q7CiAKKwkvKioKKwkgKiBMaXN0IG9mIHN0b2xlbiBv YmplY3RzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwdXJnZWFibGUgYW5kCisJICogdGh1cyBh dmFpbGFibGUgZm9yIHJlYXBpbmcgaWYgd2UgbmVlZCBtb3JlIHNwYWNlIGZvciBhIG5ldworCSAq IGFsbG9jYXRpb24uIE9yZGVyZWQgYnkgdGltZSBvZiBtYXJraW5nIHB1cmdlYWJsZS4KKwkgKi8K KwlzdHJ1Y3QgbGlzdF9oZWFkIHN0b2xlbl9saXN0OworCiAJLyoqIFVzYWJsZSBwb3J0aW9uIG9m IHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0 ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBAIC0yMDQ0LDcgKzIwNTcsNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCB2bWFfbGlzdDsKIAog CS8qKiBTdG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNr ZWQgYnkgc2htZW0uICovCi0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CisJc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owog CiAJc3RydWN0IGxpc3RfaGVhZCByaW5nX2xpc3RbSTkxNV9OVU1fUklOR1NdOwpAQCAtMjA1Miw2 ICsyMDY1LDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hl YWQgb2JqX2V4ZWNfbGluazsKIAogCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9vbF9saW5rOwor CS8qKiBVc2VkIHRvIGxpbmsgYW4gb2JqZWN0IHRvIGEgbGlzdCB0ZW1wb3JhcmlseSAqLworCXN0 cnVjdCBsaXN0X2hlYWQgdG1wX2xpbms7CiAKIAkvKioKIAkgKiBUaGlzIGlzIHNldCBpZiB0aGUg b2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwppbmRleCBiM2U2MmI0Li4wYmM1OWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK QEAgLTQ1MjIsNiArNDUyMiwyMCBAQCBpOTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9O VE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQogCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUo b2JqKTsKIAorCWlmIChvYmotPnN0b2xlbikgeworCQlzd2l0Y2ggKG9iai0+bWFkdikgeworCQlj YXNlIEk5MTVfTUFEVl9XSUxMTkVFRDoKKwkJCWxpc3RfZGVsX2luaXQoJm9iai0+c3RvbGVuLT5t bV9saW5rKTsKKwkJCWJyZWFrOworCQljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKKwkJCWxpc3Rf bW92ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCisJCQkJICAmZGV2X3ByaXYtPm1tLnN0b2xlbl9s aXN0KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwl9CisKIAlhcmdz LT5yZXRhaW5lZCA9IG9iai0+bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CiAKIG91dDoKQEAg LTUxNDgsNiArNTE2Miw3IEBAIGk5MTVfZ2VtX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCk7CiAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJp di0+bW0uYm91bmRfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5zdG9sZW5f bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKIAlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykKIAkJaW5pdF9yaW5nX2xpc3RzKCZkZXZf cHJpdi0+cmluZ1tpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCmluZGV4 IDRkYWYyOGYuLjY1NWViMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5j CkBAIC01NDIsNyArNTQyLDggQEAgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vfc3RvbGVuKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CiAKIAlpZiAob2JqLT5zdG9sZW4p IHsKLQkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBvYmotPnN0b2xlbik7 CisJCWxpc3RfZGVsKCZvYmotPnN0b2xlbi0+bW1fbGluayk7CisJCWk5MTVfZ2VtX3N0b2xlbl9y ZW1vdmVfbm9kZShkZXZfcHJpdiwgJm9iai0+c3RvbGVuLT5iYXNlKTsKIAkJa2ZyZWUob2JqLT5z dG9sZW4pOwogCQlvYmotPnN0b2xlbiA9IE5VTEw7CiAJfQpAQCAtNTU1LDcgKzU1Niw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0 X3N0b2xlbl9vcHMgPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCiBf aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CSAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbikKKwkJCSAgICAgICBzdHJ1Y3QgaTkx NV9zdG9sZW5fbm9kZSAqc3RvbGVuKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7CiAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKQEAgLTU2NCwxMSArNTY1LDEyIEBAIF9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChv YmogPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlkcm1fZ2VtX3ByaXZh dGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNpemUpOworCWRybV9nZW1f cHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+YmFzZS5zaXplKTsK IAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7 CiAKIAlwYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAotCQkJCQkgICAg IHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7CisJCQkJCSAgICAgc3RvbGVuLT5iYXNlLnN0 YXJ0LAorCQkJCQkgICAgIHN0b2xlbi0+YmFzZS5zaXplKTsKIAlpZiAoSVNfRVJSKHBhZ2VzKSkg ewogCQlpOTE1X2dlbV9vYmplY3RfZnJlZShvYmopOwogCQlyZXR1cm4gRVJSX0NBU1QocGFnZXMp OwpAQCAtNTgyLDI0ICs1ODQsMTEyIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsK IAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAorCXN0b2xlbi0+b2JqID0gb2JqOworCUlOSVRfTElT VF9IRUFEKCZzdG9sZW4tPm1tX2xpbmspOworCiAJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5 MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5fR1RUOwogCW9iai0+Y2FjaGVfbGV2 ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKIAog CXJldHVybiBvYmo7CiB9CiAKLXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKLWk5MTVfZ2Vt X29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQor c3RhdGljIGJvb2wKK21hcmtfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCit7CisJQlVHX09OKG9iai0+c3RvbGVuID09IE5VTEwp OworCisJaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfRE9OVE5FRUQpCisJCXJldHVybiBmYWxz ZTsKKworCWlmIChvYmotPnBpbl9kaXNwbGF5KQorCQlyZXR1cm4gZmFsc2U7CisKKwlsaXN0X2Fk ZCgmb2JqLT50bXBfbGluaywgdW53aW5kKTsKKwlyZXR1cm4gZHJtX21tX3NjYW5fYWRkX2Jsb2Nr KCZvYmotPnN0b2xlbi0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbnQKK3N0b2xlbl9ldmljdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQogewotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKLQlpbnQg cmV0OworCXN0cnVjdCBsaXN0X2hlYWQgdW53aW5kLCBldmljdDsKKwlzdHJ1Y3QgaTkxNV9zdG9s ZW5fbm9kZSAqaXRlcjsKKwlpbnQgcmV0LCBhY3RpdmU7CiAKLQlpZiAoIWRybV9tbV9pbml0aWFs aXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCk7CisJZHJt X21tX2luaXRfc2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6ZSwgMCwgMCk7CisJSU5JVF9M SVNUX0hFQUQoJnVud2luZCk7CisKKwkvKiBSZXRpcmUgYWxsIHJlcXVlc3RzIGJlZm9yZSBjcmVh dGluZyB0aGUgZXZpY3QgbGlzdCAqLworCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJp di0+ZGV2KTsKKworCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9IDE7IGFjdGl2ZSsrKSB7CisJ CWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCwgbW1f bGluaykgeworCQkJaWYgKGl0ZXItPm9iai0+YWN0aXZlICE9IGFjdGl2ZSkKKwkJCQljb250aW51 ZTsKKworCQkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1bndpbmQpKQorCQkJCWdvdG8gZm91 bmQ7CisJCX0KKwl9CisKK2ZvdW5kOgorCUlOSVRfTElTVF9IRUFEKCZldmljdCk7CisJd2hpbGUg KCFsaXN0X2VtcHR5KCZ1bndpbmQpKSB7CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnVud2lu ZCwKKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJICAgICAgIHRt cF9saW5rKTsKKwkJbGlzdF9kZWwoJm9iai0+dG1wX2xpbmspOworCisJCWlmIChkcm1fbW1fc2Nh bl9yZW1vdmVfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKSkgeworCQkJbGlzdF9hZGQoJm9iai0+ dG1wX2xpbmssICZldmljdCk7CisJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFz ZSk7CisJCX0KKwl9CisKKwlyZXQgPSAwOworCXdoaWxlICghbGlzdF9lbXB0eSgmZXZpY3QpKSB7 CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAgdG1wX2xpbmspOworCQlsaXN0X2RlbCgmb2Jq LT50bXBfbGluayk7CisKKwkJaWYgKHJldCA9PSAwKSB7CisJCQlzdHJ1Y3QgaTkxNV92bWEgKnZt YSwgKnZtYV9uZXh0OworCisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2bWFfbmV4 dCwKKwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKKwkJCQkJCSB2bWFfbGluaykKKwkJCQlpZiAoaTkx NV92bWFfdW5iaW5kKHZtYSkpCisJCQkJCWJyZWFrOworCisJCQkvKiBTdG9sZW4gcGlucyBpdHMg cGFnZXMgdG8gcHJldmVudCB0aGUKKwkJCSAqIG5vcm1hbCBzaHJpbmtlciBmcm9tIHByb2Nlc3Np bmcgc3RvbGVuCisJCQkgKiBvYmplY3RzLgorCQkJICovCisJCQlpOTE1X2dlbV9vYmplY3RfdW5w aW5fcGFnZXMob2JqKTsKKworCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmop OworCQkJaWYgKHJldCA9PSAwKSB7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vfc3RvbGVu KG9iaik7CisJCQkJb2JqLT5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOworCQkJfSBlbHNlIHsK KwkJCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJCQl9CisJCX0KKworCQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwl9CisKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKgorc3RvbGVuX2FsbG9jKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCit7CisJc3RydWN0IGk5MTVf c3RvbGVuX25vZGUgKnN0b2xlbjsKKwlpbnQgcmV0OwogCi0JRFJNX0RFQlVHX0tNUygiY3JlYXRp bmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKIAlpZiAoc2l6ZSA9PSAwKQog CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIApAQCAtNjA3LDE3ICs2OTcsNjAgQEAgaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUp CiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JcmV0ID0gaTkx NV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBzdG9sZW4sIHNpemUsIDQwOTYpOwor CXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFz ZSwgc2l6ZSwgNDA5Nik7CisJaWYgKHJldCA9PSAwKQorCQlnb3RvIG91dDsKKworCS8qIE5vIG1v cmUgc3RvbGVuIG1lbW9yeSBhdmFpbGFibGUsIG9yIHRvbyBmcmFnbWVudGVkLgorCSAqIFRyeSBl dmljdGluZyBwdXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoIGFnYWluLgorCSAqLworCXJldCA9 IHN0b2xlbl9ldmljdChkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKHJldCA9PSAwKQorCQlyZXQgPSBp OTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UsCisJCQkJ CQkgIHNpemUsIDQwOTYpOworb3V0OgogCWlmIChyZXQpIHsKIAkJa2ZyZWUoc3RvbGVuKTsKIAkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKKwlyZXR1cm4gc3RvbGVuOworfQorCisvKioKKyAq IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgLSBjcmVhdGVzIG9iamVjdCB1c2luZyB0 aGUgc3RvbGVuIG1lbW9yeQorICogQGRldjoJZHJtIGRldmljZQorICogQHNpemU6CXNpemUgb2Yg dGhlIG9iamVjdCByZXF1ZXN0ZWQKKyAqCisgKiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bigpIHRyaWVzIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG9iamVjdAorICogZnJvbSB0aGUg c3RvbGVuIG1lbW9yeSByZWdpb24uIElmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGZvdW5kLCBpdCB0 cmllcworICogZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5kIHNlYXJjaGluZyBhZ2Fpbi4K KyAqCisgKiBSZXR1cm5zOiBPYmplY3QgcG9pbnRlciAtIHN1Y2Nlc3MgYW5kIGVycm9yIHBvaW50 ZXIgLSBmYWlsdXJlCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2k5MTVfZ2Vt X29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5f bm9kZSAqc3RvbGVuOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9t dXRleCkpOworCisJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4p KQorCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKworCURSTV9ERUJVR19LTVMoImNyZWF0aW5n IHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CisKKwlzdG9sZW4gPSBzdG9sZW5f YWxsb2MoZGV2X3ByaXYsIHNpemUpOworCWlmIChJU19FUlIoc3RvbGVuKSkKKwkJcmV0dXJuIEVS Ul9DQVNUKHN0b2xlbik7CisKIAlvYmogPSBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4o ZGV2LCBzdG9sZW4pOwogCWlmICghSVNfRVJSKG9iaikpCiAJCXJldHVybiBvYmo7CiAKLQlpOTE1 X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7CisJaTkxNV9nZW1fc3Rv bGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlKTsKIAlrZnJlZShzdG9sZW4p OwogCXJldHVybiBvYmo7CiB9CkBAIC02MzEsNyArNzY0LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9ICZkZXZfcHJpdi0+Z3R0LmJhc2U7CiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xl bjsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwogCWludCByZXQ7CiAKQEAgLTY1MCwxMCArNzgzLDEwIEBAIGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlp ZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlzdG9sZW4tPnN0YXJ0 ID0gc3RvbGVuX29mZnNldDsKLQlzdG9sZW4tPnNpemUgPSBzaXplOworCXN0b2xlbi0+YmFzZS5z dGFydCA9IHN0b2xlbl9vZmZzZXQ7CisJc3RvbGVuLT5iYXNlLnNpemUgPSBzaXplOwogCW11dGV4 X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Ci0JcmV0ID0gZHJtX21tX3Jlc2VydmVf bm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc3RvbGVuKTsKKwlyZXQgPSBkcm1fbW1fcmVzZXJ2 ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCAmc3RvbGVuLT5iYXNlKTsKIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7CiAJaWYgKHJldCkgewogCQlEUk1fREVCVUdf S01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4iKTsKQEAgLTY2NCw3ICs3OTcs NyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVu KGRldiwgc3RvbGVuKTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJRFJNX0RFQlVHX0tNUygiZmFp bGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBvYmplY3RcbiIpOwotCQlpOTE1X2dlbV9zdG9sZW5fcmVt b3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7CisJCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9k ZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKHN0b2xlbik7CiAJCXJldHVybiBv Ymo7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggZjhjMTg0ZS4uMDUwYTY3MSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC01MTU5LDcgKzUxNTksNyBAQCBzdGF0aWMgdm9pZCB2 YWxsZXl2aWV3X2NoZWNrX3BjdHgoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CXVuc2lnbmVkIGxvbmcgcGN0eF9hZGRyID0gSTkxNV9SRUFEKFZMVl9QQ0JSKSAmIH40MDk1Owog CiAJV0FSTl9PTihwY3R4X2FkZHIgIT0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsKLQkJCSAg ICAgZGV2X3ByaXYtPnZsdl9wY3R4LT5zdG9sZW4tPnN0YXJ0KTsKKwkJCSAgICAgZGV2X3ByaXYt PnZsdl9wY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogfQogCiAKQEAgLTUyMzYsNyArNTIzNiw3 IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfc2V0dXBfcGN0eChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQlyZXR1cm47CiAJfQogCi0JcGN0eF9wYWRkciA9IGRldl9wcml2LT5tbS5zdG9sZW5f YmFzZSArIHBjdHgtPnN0b2xlbi0+c3RhcnQ7CisJcGN0eF9wYWRkciA9IGRldl9wcml2LT5tbS5z dG9sZW5fYmFzZSArIHBjdHgtPnN0b2xlbi0+YmFzZS5zdGFydDsKIAlJOTE1X1dSSVRFKFZMVl9Q Q0JSLCBwY3R4X3BhZGRyKTsKIAogb3V0OgotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==