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: Fri, 18 Mar 2016 11:52:07 +0530 Message-ID: <1458282130-31660-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1458282130-31660-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 C829B6E02C for ; Fri, 18 Mar 2016 06:46:29 +0000 (UTC) In-Reply-To: <1458282130-31660-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 dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggY2NkY2EyYy4uMzAwY2U5YyAx 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 CmluZGV4IGVhODdhODkuLjRjODE4MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNzk2 LDYgKzc5NiwxMiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7 CiB9OwogCitzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJh c2U7CisJc3RydWN0IGxpc3RfaGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cit9OworCiAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJl dmlvdXNseSB1c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05U RVhUX0hBTkRMRSAwCiAKQEAgLTEyNDMsNiArMTI0OSwxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0g ewogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlz dCBvZiBzdG9sZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFu ZAorCSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBm b3IgYSBuZXcKKwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJn ZWFibGUuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2Fi bGUgcG9ydGlvbiBvZiB0aGUgR1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9i YXNlOyAvKiBsaW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjA1Myw3ICsy MDY2LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQg dm1hX2xpc3Q7CiAKIAkvKiogU3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQg b2YgYmVpbmcgYmFja2VkIGJ5IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBn bG9iYWxfbGlzdDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgZW5naW5lX2xpc3RbSTkxNV9OVU1fRU5H SU5FU107CkBAIC0yMDYxLDYgKzIwNzQsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 CiAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBi YXRjaF9wb29sX2xpbms7CisJLyoqIFVzZWQgdG8gbGluayBhbiBvYmplY3QgdG8gYSBsaXN0IHRl bXBvcmFyaWx5ICovCisJc3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRo aXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRp bmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDdkZmEwMjYuLjlkNDdkMGUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwpAQCAtNDUxOCw2ICs0NTE4LDIwIEBAIGk5MTVfZ2VtX21hZHZpc2Vf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2Vt X29iamVjdF90cnVuY2F0ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAo b2JqLT5tYWR2KSB7CisJCWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5p dCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RP TlRORUVEOgorCQkJbGlzdF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZf cHJpdi0+bW0uc3RvbGVuX2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsK KwkJfQorCX0KKwogCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BV UkdFRDsKIAogb3V0OgpAQCAtNTE0Miw2ICs1MTU2LDcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0 X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFE KCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+ bW0uZmVuY2VfbGlzdCk7CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykK IAkJaW5pdF9lbmdpbmVfbGlzdHMoJmRldl9wcml2LT5lbmdpbmVbaV0pOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCBmNGRlNWJiLi5lNDJiOGYxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNTQ1LDcgKzU0NSw4IEBAIGk5MTVfZ2Vt X29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9w cml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1t X2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0 b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxM OwogCX0KQEAgLTU1OCw3ICs1NTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpz dG9sZW4pCisJCQkgICAgICAgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7 CkBAIC01NjcsMTEgKzU2OCwxMiBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFz ZSwgc3RvbGVuLT5zaXplKTsKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2Jq LT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAm aTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwogCiAJcGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0 ZV9mb3Jfc3RvbGVuKGRldiwKLQkJCQkJICAgICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUp OworCQkJCQkgICAgIHN0b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJICAgICBzdG9sZW4tPmJhc2Uu c2l6ZSk7CiAJaWYgKElTX0VSUihwYWdlcykpIHsKIAkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2Jq KTsKIAkJcmV0dXJuIEVSUl9DQVNUKHBhZ2VzKTsKQEAgLTU4NSwyNCArNTg3LDExMiBAQCBfaTkx 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 QEAgLTYxMCwxNyArNzAwLDYwIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVj 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+YmFzZSk7CiAJa2ZyZWUoc3RvbGVuKTsKIAlyZXR1cm4gb2JqOwogfQpAQCAtNjM0LDcg Kzc2Nyw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQg PSAmZGV2X3ByaXYtPmd0dC5iYXNlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUg KnN0b2xlbjsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCkBAIC02NTUsMTAg Kzc4OCwxMCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCi0Jc3RvbGVuLT5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7Ci0Jc3RvbGVuLT5z aXplID0gc2l6ZTsKKwlzdG9sZW4tPmJhc2Uuc3RhcnQgPSBzdG9sZW5fb2Zmc2V0OworCXN0b2xl bi0+YmFzZS5zaXplID0gc2l6ZTsKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xv Y2spOwotCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sIHN0 b2xlbik7CisJcmV0ID0gZHJtX21tX3Jlc2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwg JnN0b2xlbi0+YmFzZSk7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2sp OwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xl biBzcGFjZVxuIik7CkBAIC02NjksNyArODAyLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCW9iaiA9IF9p OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKElTX0VSUihv YmopKSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gb2JqZWN0 XG4iKTsKLQkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOwor CQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwog CQlrZnJlZShzdG9sZW4pOwogCQlyZXR1cm4gb2JqOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j CmluZGV4IDAxMDc4ZDcuLjRmNDMwYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTI3 NSw3ICs1Mjc1LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19jaGVja19wY3R4KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl1bnNpZ25lZCBsb25nIHBjdHhfYWRkciA9IEk5 MTVfUkVBRChWTFZfUENCUikgJiB+NDA5NTsKIAogCVdBUk5fT04ocGN0eF9hZGRyICE9IGRldl9w cml2LT5tbS5zdG9sZW5fYmFzZSArCi0JCQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVu LT5zdGFydCk7CisJCQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0 KTsKIH0KIAogCkBAIC01MzUwLDcgKzUzNTAsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3Nl dHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZ290byBvdXQ7CiAJfQogCi0JcGN0 eF9wYWRkciA9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIHBjdHgtPnN0b2xlbi0+c3RhcnQ7 CisJcGN0eF9wYWRkciA9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIHBjdHgtPnN0b2xlbi0+ YmFzZS5zdGFydDsKIAlJOTE1X1dSSVRFKFZMVl9QQ0JSLCBwY3R4X3BhZGRyKTsKIAogb3V0Ogot LSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=