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: Mon, 29 Feb 2016 13:09:36 +0530 Message-ID: <1456731579-25584-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1456731579-25584-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 39D478903B for ; Mon, 29 Feb 2016 08:03:34 +0000 (UTC) In-Reply-To: <1456731579-25584-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 aHJpcy9EYW5pZWwpCgp2NjogQ29tcGlsZXIgb3B0aW1pemF0aW9uIChtZXJnaW5nIDIgc2luZ2xl IGxvb3BzIGludG8gb25lIGZvcigpIGxvb3ApLApjb3JyZWN0ZWQgY29kZSBmb3Igb2JqZWN0IGV2 aWN0aW9uLCByZXRpcmVfcmVxdWVzdHMgYmVmb3JlIHN0YXJ0aW5nCm9iamVjdCBldmljdGlvbiAo Q2hyaXMpCgp2NzogQWRkZWQga2VybmVsIGRvYyBmb3IgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oKQoKdjg6IENoZWNrIGZvciBzdHJ1Y3RfbXV0ZXggbG9jayBiZWZvcmUgY3JlYXRpbmcg b2JqZWN0IGZyb20gc3RvbGVuCnJlZ2lvbiAoVHZydGtvKQoKdjk6IFJlbmFtZWQgdmFyaWFibGVz IHRvIG1ha2UgdXNhZ2UgY2xlYXIsIGFkZGVkIGNvbW1lbnQsIHJlbW92ZWQgb25ldGltZQp1c2Vk IG1hY3JvIChUdnJ0a28pCgp2MTA6IEF2b2lkIG1hc2tpbmcgb2YgZXJyb3Igd2hlbiBzdG9sZW5f YWxsb2MgZmFpbHMgKFR2cnRrbykKCnYxMTogUmVuYW1lZCBzdG9sZW5fbGluayB0byB0bXBfbGlu aywgYXMgaXQgbWF5IGJlIHVzZWQgZm9yIG90aGVyCnB1cnBvc2VzIHRvbyAoQ2hyaXMpClVzZWQg RVJSX0NBU1QgdG8gY2FzdCBlcnJvciBwb2ludGVycyB3aGlsZSByZXR1cm5pbmcKCnYxMjogQWRk ZWQgbG9ja2RlcF9hc3NlcnQgYmVmb3JlIHN0YXJ0aW5nIHN0b2xlbi1iYWNrZWQgb2JqZWN0CmV2 aWN0aW9uIChDaHJpcykKCnYxMzogUmViYXNlZAoKVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4K U2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNSArKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAg IDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYTBmMWJkNy4uZWIwNzg3NSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBkZXNj cmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogCQlzZXFfcHV0cyhtLCAiKSIpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCi0JCXNlcV9w cmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKKwkJc2Vx X3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7 CiAJaWYgKG9iai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewogCQljaGFy IHNbM10sICp0ID0gczsKIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCkBAIC0yNTEsOSArMjUxLDkg QEAgc3RhdGljIGludCBvYmpfcmFua19ieV9zdG9sZW4odm9pZCAqcHJpdiwKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqYiA9CiAJCWNvbnRhaW5lcl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCwgb2JqX2V4ZWNfbGluayk7CiAKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA8IGIt PnN0b2xlbi0+c3RhcnQpCisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA8IGItPnN0b2xlbi0+ YmFzZS5zdGFydCkKIAkJcmV0dXJuIC0xOwotCWlmIChhLT5zdG9sZW4tPnN0YXJ0ID4gYi0+c3Rv bGVuLT5zdGFydCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0ID4gYi0+c3RvbGVuLT5iYXNl LnN0YXJ0KQogCQlyZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDUzNmQ0OGEuLmMwMWU4ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODQ0 LDYgKzg0NCwxMiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7 CiB9OwogCitzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJh c2U7CisJc3RydWN0IGxpc3RfaGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cit9OworCiAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJl dmlvdXNseSB1c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05U RVhUX0hBTkRMRSAwCiAKQEAgLTEyOTEsNiArMTI5NywxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0g ewogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlz dCBvZiBzdG9sZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFu ZAorCSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBm b3IgYSBuZXcKKwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJn ZWFibGUuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2Fi bGUgcG9ydGlvbiBvZiB0aGUgR1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9i YXNlOyAvKiBsaW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjA5NCw3ICsy MTA3LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQg dm1hX2xpc3Q7CiAKIAkvKiogU3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQg b2YgYmVpbmcgYmFja2VkIGJ5IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBn bG9iYWxfbGlzdDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdT XTsKQEAgLTIxMDIsNiArMjExNSw4IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlz dHJ1Y3QgbGlzdF9oZWFkIG9ial9leGVjX2xpbms7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNo X3Bvb2xfbGluazsKKwkvKiogVXNlZCB0byBsaW5rIGFuIG9iamVjdCB0byBhIGxpc3QgdGVtcG9y YXJpbHkgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHRtcF9saW5rOwogCiAJLyoqCiAJICogVGhpcyBp cyBzZXQgaWYgdGhlIG9iamVjdCBpcyBvbiB0aGUgYWN0aXZlIGxpc3RzIChoYXMgcGVuZGluZwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNmI5MWU4ZS4uZGYwYTE5ZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCkBAIC00NTE4LDYgKzQ1MTgsMjAgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChvYmotPm1hZHYgPT0g STkxNV9NQURWX0RPTlRORUVEICYmIG9iai0+cGFnZXMgPT0gTlVMTCkKIAkJaTkxNV9nZW1fb2Jq ZWN0X3RydW5jYXRlKG9iaik7CiAKKwlpZiAob2JqLT5zdG9sZW4pIHsKKwkJc3dpdGNoIChvYmot Pm1hZHYpIHsKKwkJY2FzZSBJOTE1X01BRFZfV0lMTE5FRUQ6CisJCQlsaXN0X2RlbF9pbml0KCZv YmotPnN0b2xlbi0+bW1fbGluayk7CisJCQlicmVhazsKKwkJY2FzZSBJOTE1X01BRFZfRE9OVE5F RUQ6CisJCQlsaXN0X21vdmUoJm9iai0+c3RvbGVuLT5tbV9saW5rLAorCQkJCSAgJmRldl9wcml2 LT5tbS5zdG9sZW5fbGlzdCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9 CisJfQorCiAJYXJncy0+cmV0YWluZWQgPSBvYmotPm1hZHYgIT0gX19JOTE1X01BRFZfUFVSR0VE OwogCiBvdXQ6CkBAIC01MTQyLDYgKzUxNTYsNyBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRfbGlz dCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmRl dl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5m ZW5jZV9saXN0KTsKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykKIAkJaW5p dF9yaW5nX2xpc3RzKCZkZXZfcHJpdi0+cmluZ1tpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jCmluZGV4IGY0ZGU1YmIuLmU0MmI4ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3N0b2xlbi5jCkBAIC01NDUsNyArNTQ1LDggQEAgaTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2Vfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CiAK IAlpZiAob2JqLT5zdG9sZW4pIHsKLQkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9w cml2LCBvYmotPnN0b2xlbik7CisJCWxpc3RfZGVsKCZvYmotPnN0b2xlbi0+bW1fbGluayk7CisJ CWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJm9iai0+c3RvbGVuLT5iYXNl KTsKIAkJa2ZyZWUob2JqLT5zdG9sZW4pOwogCQlvYmotPnN0b2xlbiA9IE5VTEw7CiAJfQpAQCAt NTU4LDcgKzU1OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9v cHMgaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMgPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqCiBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKLQkJCSAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbikKKwkJ CSAgICAgICBzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuKQogewogCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKQEAgLTU2Nywx MSArNTY4LDEyIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKLQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4t PnNpemUpOworCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0 b2xlbi0+YmFzZS5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9v YmplY3Rfc3RvbGVuX29wcyk7CiAKIAlwYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9s ZW4oZGV2LAotCQkJCQkgICAgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7CisJCQkJCSAg ICAgc3RvbGVuLT5iYXNlLnN0YXJ0LAorCQkJCQkgICAgIHN0b2xlbi0+YmFzZS5zaXplKTsKIAlp ZiAoSVNfRVJSKHBhZ2VzKSkgewogCQlpOTE1X2dlbV9vYmplY3RfZnJlZShvYmopOwogCQlyZXR1 cm4gRVJSX0NBU1QocGFnZXMpOwpAQCAtNTg1LDI0ICs1ODcsMTEyIEBAIF9pOTE1X2dlbV9vYmpl Y3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWk5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAorCXN0b2xlbi0+b2Jq ID0gb2JqOworCUlOSVRfTElTVF9IRUFEKCZzdG9sZW4tPm1tX2xpbmspOworCiAJb2JqLT5iYXNl LnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5fR1RU OwogCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5 MTVfQ0FDSEVfTk9ORTsKIAogCXJldHVybiBvYmo7CiB9CiAKLXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKLWk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHU2NCBzaXplKQorc3RhdGljIGJvb2wKK21hcmtfZnJlZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCit7CisJQlVHX09OKG9i ai0+c3RvbGVuID09IE5VTEwpOworCisJaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfRE9OVE5F RUQpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChvYmotPnBpbl9kaXNwbGF5KQorCQlyZXR1cm4g ZmFsc2U7CisKKwlsaXN0X2FkZCgmb2JqLT50bXBfbGluaywgdW53aW5kKTsKKwlyZXR1cm4gZHJt X21tX3NjYW5fYWRkX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbnQK K3N0b2xlbl9ldmljdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXpl KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21tX25v ZGUgKnN0b2xlbjsKLQlpbnQgcmV0OworCXN0cnVjdCBsaXN0X2hlYWQgdW53aW5kLCBldmljdDsK KwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqaXRlcjsKKwlpbnQgcmV0LCBhY3RpdmU7CiAKLQlp ZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCi0JCXJldHVybiBF UlJfUFRSKC1FTk9ERVYpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kZXYtPnN0 cnVjdF9tdXRleCk7CisJZHJtX21tX2luaXRfc2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6 ZSwgMCwgMCk7CisJSU5JVF9MSVNUX0hFQUQoJnVud2luZCk7CisKKwkvKiBSZXRpcmUgYWxsIHJl cXVlc3RzIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZpY3QgbGlzdCAqLworCWk5MTVfZ2VtX3JldGly ZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsKKworCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9 IDE7IGFjdGl2ZSsrKSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5t bS5zdG9sZW5fbGlzdCwgbW1fbGluaykgeworCQkJaWYgKGl0ZXItPm9iai0+YWN0aXZlICE9IGFj dGl2ZSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1bndp bmQpKQorCQkJCWdvdG8gZm91bmQ7CisJCX0KKwl9CisKK2ZvdW5kOgorCUlOSVRfTElTVF9IRUFE KCZldmljdCk7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZ1bndpbmQpKSB7CisJCW9iaiA9IGxpc3Rf Zmlyc3RfZW50cnkoJnVud2luZCwKKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QsCisJCQkJICAgICAgIHRtcF9saW5rKTsKKwkJbGlzdF9kZWwoJm9iai0+dG1wX2xpbmspOwor CisJCWlmIChkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKSkgewor CQkJbGlzdF9hZGQoJm9iai0+dG1wX2xpbmssICZldmljdCk7CisJCQlkcm1fZ2VtX29iamVjdF9y ZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJCX0KKwl9CisKKwlyZXQgPSAwOworCXdoaWxlICghbGlz dF9lbXB0eSgmZXZpY3QpKSB7CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0LAorCQkJ CSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAgdG1wX2xpbmsp OworCQlsaXN0X2RlbCgmb2JqLT50bXBfbGluayk7CisKKwkJaWYgKHJldCA9PSAwKSB7CisJCQlz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZtYV9uZXh0OworCisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUodm1hLCB2bWFfbmV4dCwKKwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKKwkJCQkJCSBvYmpf bGluaykKKwkJCQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCisJCQkJCWJyZWFrOworCisJCQkv KiBTdG9sZW4gcGlucyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKKwkJCSAqIG5vcm1hbCBzaHJp bmtlciBmcm9tIHByb2Nlc3Npbmcgc3RvbGVuCisJCQkgKiBvYmplY3RzLgorCQkJICovCisJCQlp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKworCQkJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3B1dF9wYWdlcyhvYmopOworCQkJaWYgKHJldCA9PSAwKSB7CisJCQkJaTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2Vfc3RvbGVuKG9iaik7CisJCQkJb2JqLT5tYWR2ID0gX19JOTE1X01BRFZfUFVS R0VEOworCQkJfSBlbHNlIHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJ CQl9CisJCX0KKworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwl9 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKgor c3RvbGVuX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUp Cit7CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKKwlpbnQgcmV0OwogCi0JRFJN X0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsK IAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIApAQCAtNjEwLDE3 ICs3MDAsNjAgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTY0IHNpemUpCiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwogCi0JcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBzdG9s ZW4sIHNpemUsIDQwOTYpOworCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZf cHJpdiwgJnN0b2xlbi0+YmFzZSwgc2l6ZSwgNDA5Nik7CisJaWYgKHJldCA9PSAwKQorCQlnb3Rv IG91dDsKKworCS8qIE5vIG1vcmUgc3RvbGVuIG1lbW9yeSBhdmFpbGFibGUsIG9yIHRvbyBmcmFn bWVudGVkLgorCSAqIFRyeSBldmljdGluZyBwdXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoIGFn YWluLgorCSAqLworCXJldCA9IHN0b2xlbl9ldmljdChkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKHJl dCA9PSAwKQorCQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsICZz dG9sZW4tPmJhc2UsCisJCQkJCQkgIHNpemUsIDQwOTYpOworb3V0OgogCWlmIChyZXQpIHsKIAkJ a2ZyZWUoc3RvbGVuKTsKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKKwlyZXR1cm4gc3Rv bGVuOworfQorCisvKioKKyAqIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgLSBjcmVh dGVzIG9iamVjdCB1c2luZyB0aGUgc3RvbGVuIG1lbW9yeQorICogQGRldjoJZHJtIGRldmljZQor ICogQHNpemU6CXNpemUgb2YgdGhlIG9iamVjdCByZXF1ZXN0ZWQKKyAqCisgKiBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbigpIHRyaWVzIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG9i amVjdAorICogZnJvbSB0aGUgc3RvbGVuIG1lbW9yeSByZWdpb24uIElmIG5vdCBlbm91Z2ggbWVt b3J5IGlzIGZvdW5kLCBpdCB0cmllcworICogZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5k IHNlYXJjaGluZyBhZ2Fpbi4KKyAqCisgKiBSZXR1cm5zOiBPYmplY3QgcG9pbnRlciAtIHN1Y2Nl c3MgYW5kIGVycm9yIHBvaW50ZXIgLSBmYWlsdXJlCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKK2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHU2NCBzaXplKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlz dHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9j a2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOworCisJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRl dl9wcml2LT5tbS5zdG9sZW4pKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKworCURSTV9E RUJVR19LTVMoImNyZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CisK KwlzdG9sZW4gPSBzdG9sZW5fYWxsb2MoZGV2X3ByaXYsIHNpemUpOworCWlmIChJU19FUlIoc3Rv bGVuKSkKKwkJcmV0dXJuIEVSUl9DQVNUKHN0b2xlbik7CisKIAlvYmogPSBfaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBzdG9sZW4pOwogCWlmICghSVNfRVJSKG9iaikpCiAJCXJl dHVybiBvYmo7CiAKLQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xl bik7CisJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNl KTsKIAlrZnJlZShzdG9sZW4pOwogCXJldHVybiBvYmo7CiB9CkBAIC02MzQsNyArNzY3LDcgQEAg aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9ICZkZXZfcHJp di0+Z3R0LmJhc2U7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3Qg ZHJtX21tX25vZGUgKnN0b2xlbjsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwog CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKQEAgLTY1NSwxMCArNzg4LDEwIEBA IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKLQlzdG9sZW4tPnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKLQlzdG9sZW4tPnNpemUgPSBzaXpl OworCXN0b2xlbi0+YmFzZS5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7CisJc3RvbGVuLT5iYXNlLnNp emUgPSBzaXplOwogCW11dGV4X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Ci0JcmV0 ID0gZHJtX21tX3Jlc2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc3RvbGVuKTsKKwly ZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCAmc3RvbGVuLT5i YXNlKTsKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7CiAJaWYgKHJl dCkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4i KTsKQEAgLTY2OSw3ICs4MDIsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3Jf cHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJb2JqID0gX2k5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJ RFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBvYmplY3RcbiIpOwotCQlp OTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7CisJCWk5MTVfZ2Vt X3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKHN0 b2xlbik7CiAJCXJldHVybiBvYmo7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggOTBi OGNhMy4uZWZlZTUzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC01MjE2LDcgKzUyMTYs NyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NoZWNrX3BjdHgoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCXVuc2lnbmVkIGxvbmcgcGN0eF9hZGRyID0gSTkxNV9SRUFEKFZM Vl9QQ0JSKSAmIH40MDk1OwogCiAJV0FSTl9PTihwY3R4X2FkZHIgIT0gZGV2X3ByaXYtPm1tLnN0 b2xlbl9iYXNlICsKLQkJCSAgICAgZGV2X3ByaXYtPnZsdl9wY3R4LT5zdG9sZW4tPnN0YXJ0KTsK KwkJCSAgICAgZGV2X3ByaXYtPnZsdl9wY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogfQogCiAK QEAgLTUyOTEsNyArNTI5MSw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfc2V0dXBfcGN0eChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlnb3RvIG91dDsKIAl9CiAKLQlwY3R4X3BhZGRyID0g ZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVuLT5zdGFydDsKKwlwY3R4X3Bh ZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0 OwogCUk5MTVfV1JJVEUoVkxWX1BDQlIsIHBjdHhfcGFkZHIpOwogCiBvdXQ6Ci0tIAoxLjkuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==