From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 07/11] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 8 Jun 2016 17:50:37 +0530 Message-ID: <1465388441-23085-8-git-send-email-ankitprasad.r.sharma@intel.com> References: <1465388441-23085-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id E3A816E9DD for ; Wed, 8 Jun 2016 12:47:05 +0000 (UTC) In-Reply-To: <1465388441-23085-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, 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 aWN0aW9uIChDaHJpcykKCnYxMzogUmViYXNlZAoKVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4K U2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNSArKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAg IDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggZTRmMmM1NS4uZTViNDI3NCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE4Miw3ICsxODIsNyBAQCBkZXNj cmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogCQlzZXFfcHV0cyhtLCAiKSIpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCi0JCXNlcV9w cmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKKwkJc2Vx X3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7 CiAJaWYgKG9iai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewogCQljaGFy IHNbM10sICp0ID0gczsKIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCkBAIC0yNTQsOSArMjU0LDkg QEAgc3RhdGljIGludCBvYmpfcmFua19ieV9zdG9sZW4odm9pZCAqcHJpdiwKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqYiA9CiAJCWNvbnRhaW5lcl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCwgb2JqX2V4ZWNfbGluayk7CiAKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA8IGIt PnN0b2xlbi0+c3RhcnQpCisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA8IGItPnN0b2xlbi0+ YmFzZS5zdGFydCkKIAkJcmV0dXJuIC0xOwotCWlmIChhLT5zdG9sZW4tPnN0YXJ0ID4gYi0+c3Rv bGVuLT5zdGFydCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0ID4gYi0+c3RvbGVuLT5iYXNl LnN0YXJ0KQogCQlyZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IGM5MmNiNjAuLmE0Y2FmZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODMx LDYgKzgzMSwxMiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7 CiB9OwogCitzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJh c2U7CisJc3RydWN0IGxpc3RfaGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cit9OworCiAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJl dmlvdXNseSB1c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05U RVhUX0hBTkRMRSAwCiAKQEAgLTEyODEsNiArMTI4NywxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0g ewogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlz dCBvZiBzdG9sZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFu ZAorCSAqIHRodXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBm b3IgYSBuZXcKKwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJn ZWFibGUuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2Fi bGUgcG9ydGlvbiBvZiB0aGUgR1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9i YXNlOyAvKiBsaW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjEzNCw3ICsy MTQ3LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQg dm1hX2xpc3Q7CiAKIAkvKiogU3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQg b2YgYmVpbmcgYmFja2VkIGJ5IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBn bG9iYWxfbGlzdDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgZW5naW5lX2xpc3RbSTkxNV9OVU1fRU5H SU5FU107CkBAIC0yMTQyLDYgKzIxNTUsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 CiAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBi YXRjaF9wb29sX2xpbms7CisJLyoqIFVzZWQgdG8gbGluayBhbiBvYmplY3QgdG8gYSBsaXN0IHRl bXBvcmFyaWx5ICovCisJc3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRo aXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRp bmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDIyZTM5YjEuLjU4YzgzZDggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwpAQCAtNDU5Myw2ICs0NTkzLDIwIEBAIGk5MTVfZ2VtX21hZHZpc2Vf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2Vt X29iamVjdF90cnVuY2F0ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAo b2JqLT5tYWR2KSB7CisJCWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5p dCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RP TlRORUVEOgorCQkJbGlzdF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZf cHJpdi0+bW0uc3RvbGVuX2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsK KwkJfQorCX0KKwogCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BV UkdFRDsKIAogb3V0OgpAQCAtNTE1Miw2ICs1MTY2LDcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0 X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFE KCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+ bW0uZmVuY2VfbGlzdCk7CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykK IAkJaW5pdF9lbmdpbmVfbGlzdHMoJmRldl9wcml2LT5lbmdpbmVbaV0pOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCBkY2I3MGMxLi4xYjFiOWMxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNTUzLDcgKzU1Myw4IEBAIGk5MTVfZ2Vt X29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9w cml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1t X2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0 b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxM OwogCX0KQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpz dG9sZW4pCisJCQkgICAgICAgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7 CkBAIC01NzUsMTEgKzU3NiwxMiBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFz ZSwgc3RvbGVuLT5zaXplKTsKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2Jq LT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAm aTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwogCiAJcGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0 ZV9mb3Jfc3RvbGVuKGRldiwKLQkJCQkJICAgICBzdG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUp OworCQkJCQkgICAgIHN0b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJICAgICBzdG9sZW4tPmJhc2Uu c2l6ZSk7CiAJaWYgKElTX0VSUihwYWdlcykpIHsKIAkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2Jq KTsKIAkJcmV0dXJuIEVSUl9DQVNUKHBhZ2VzKTsKQEAgLTU5MywyNCArNTk1LDExMiBAQCBfaTkx 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 X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOworCisJZm9yIChhY3RpdmUgPSAwOyBhY3Rp dmUgPD0gMTsgYWN0aXZlKyspIHsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCAmZGV2X3By aXYtPm1tLnN0b2xlbl9saXN0LCBtbV9saW5rKSB7CisJCQlpZiAoaXRlci0+b2JqLT5hY3RpdmUg IT0gYWN0aXZlKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwg JnVud2luZCkpCisJCQkJZ290byBmb3VuZDsKKwkJfQorCX0KKworZm91bmQ6CisJSU5JVF9MSVNU X0hFQUQoJmV2aWN0KTsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2luZCkpIHsKKwkJb2JqID0g bGlzdF9maXJzdF9lbnRyeSgmdW53aW5kLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCwKKwkJCQkgICAgICAgdG1wX2xpbmspOworCQlsaXN0X2RlbCgmb2JqLT50bXBfbGlu ayk7CisKKwkJaWYgKGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2Up KSB7CisJCQlsaXN0X2FkZCgmb2JqLT50bXBfbGluaywgJmV2aWN0KTsKKwkJCWRybV9nZW1fb2Jq ZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJfQorCX0KKworCXJldCA9IDA7CisJd2hpbGUg KCFsaXN0X2VtcHR5KCZldmljdCkpIHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgmZXZpY3Qs CisJCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAgICAgICB0bXBf bGluayk7CisJCWxpc3RfZGVsKCZvYmotPnRtcF9saW5rKTsKKworCQlpZiAocmV0ID09IDApIHsK KwkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdm1hX25leHQ7CisKKwkJCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZSh2bWEsIHZtYV9uZXh0LAorCQkJCQkJICZvYmotPnZtYV9saXN0LAorCQkJCQkJ IG9ial9saW5rKQorCQkJCWlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSkKKwkJCQkJYnJlYWs7CisK KwkJCS8qIFN0b2xlbiBwaW5zIGl0cyBwYWdlcyB0byBwcmV2ZW50IHRoZQorCQkJICogbm9ybWFs IHNocmlua2VyIGZyb20gcHJvY2Vzc2luZyBzdG9sZW4KKwkJCSAqIG9iamVjdHMuCisJCQkgKi8K KwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCisJCQlyZXQgPSBpOTE1X2dl bV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCQlpZiAocmV0ID09IDApIHsKKwkJCQlpOTE1X2dl bV9vYmplY3RfcmVsZWFzZV9zdG9sZW4ob2JqKTsKKwkJCQlvYmotPm1hZHYgPSBfX0k5MTVfTUFE Vl9QVVJHRUQ7CisJCQl9IGVsc2UgeworCQkJCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2Jq KTsKKwkJCX0KKwkJfQorCisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2Up OworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9k ZSAqCitzdG9sZW5fYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQg c2l6ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOworCWludCByZXQ7CiAK LQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNp emUpOwogCWlmIChzaXplID09IDApCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCkBAIC02 MTgsMTcgKzcwOCw2MCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYs IHN0b2xlbiwgc2l6ZSwgNDA5Nik7CisJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2Rl KGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLCBzaXplLCA0MDk2KTsKKwlpZiAocmV0ID09IDApCisJ CWdvdG8gb3V0OworCisJLyogTm8gbW9yZSBzdG9sZW4gbWVtb3J5IGF2YWlsYWJsZSwgb3IgdG9v IGZyYWdtZW50ZWQuCisJICogVHJ5IGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFy Y2ggYWdhaW4uCisJICovCisJcmV0ID0gc3RvbGVuX2V2aWN0KGRldl9wcml2LCBzaXplKTsKKwlp ZiAocmV0ID09IDApCisJCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJp diwgJnN0b2xlbi0+YmFzZSwKKwkJCQkJCSAgc2l6ZSwgNDA5Nik7CitvdXQ6CiAJaWYgKHJldCkg ewogCQlrZnJlZShzdG9sZW4pOwogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAorCXJldHVy biBzdG9sZW47Cit9CisKKy8qKgorICogaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oKSAt IGNyZWF0ZXMgb2JqZWN0IHVzaW5nIHRoZSBzdG9sZW4gbWVtb3J5CisgKiBAZGV2Oglkcm0gZGV2 aWNlCisgKiBAc2l6ZToJc2l6ZSBvZiB0aGUgb2JqZWN0IHJlcXVlc3RlZAorICoKKyAqIGk5MTVf Z2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgdHJpZXMgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0 aGUgb2JqZWN0CisgKiBmcm9tIHRoZSBzdG9sZW4gbWVtb3J5IHJlZ2lvbi4gSWYgbm90IGVub3Vn aCBtZW1vcnkgaXMgZm91bmQsIGl0IHRyaWVzCisgKiBldmljdGluZyBwdXJnZWFibGUgb2JqZWN0 cyBhbmQgc2VhcmNoaW5nIGFnYWluLgorICoKKyAqIFJldHVybnM6IE9iamVjdCBwb2ludGVyIC0g c3VjY2VzcyBhbmQgZXJyb3IgcG9pbnRlciAtIGZhaWx1cmUKKyAqLworc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdTY0IHNpemUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisKKwlXQVJOX09OKCFtdXRleF9p c19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisKKwlpZiAoIWRybV9tbV9pbml0aWFsaXpl ZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworCisJ RFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXpl KTsKKworCXN0b2xlbiA9IHN0b2xlbl9hbGxvYyhkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKElTX0VS UihzdG9sZW4pKQorCQlyZXR1cm4gRVJSX0NBU1Qoc3RvbGVuKTsKKwogCW9iaiA9IF9pOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKCFJU19FUlIob2JqKSkK IAkJcmV0dXJuIG9iajsKIAotCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwg c3RvbGVuKTsKKwlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4t PmJhc2UpOwogCWtmcmVlKHN0b2xlbik7CiAJcmV0dXJuIG9iajsKIH0KQEAgLTY0Miw3ICs3NzUs NyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21tX25vZGUg KnN0b2xlbjsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKQEAgLTY2MywxMCArNzk2LDEwIEBAIGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlzdG9sZW4t PnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKLQlzdG9sZW4tPnNpemUgPSBzaXplOworCXN0b2xlbi0+ YmFzZS5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7CisJc3RvbGVuLT5iYXNlLnNpemUgPSBzaXplOwog CW11dGV4X2xvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Ci0JcmV0ID0gZHJtX21tX3Jl c2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc3RvbGVuKTsKKwlyZXQgPSBkcm1fbW1f cmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCAmc3RvbGVuLT5iYXNlKTsKIAltdXRl eF91bmxvY2soJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7CiAJaWYgKHJldCkgewogCQlEUk1f REVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4iKTsKQEAgLTY3Nyw3 ICs4MTAsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJRFJNX0RFQlVHX0tN UygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBvYmplY3RcbiIpOwotCQlpOTE1X2dlbV9zdG9s ZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7CisJCWk5MTVfZ2VtX3N0b2xlbl9yZW1v dmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKHN0b2xlbik7CiAJCXJl dHVybiBvYmo7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMzIxYmZmZC4uZTFlZTcx YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC01NTgwLDcgKzU1ODAsNyBAQCBzdGF0aWMg dm9pZCB2YWxsZXl2aWV3X2NoZWNrX3BjdHgoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCXVuc2lnbmVkIGxvbmcgcGN0eF9hZGRyID0gSTkxNV9SRUFEKFZMVl9QQ0JSKSAmIH40 MDk1OwogCiAJV0FSTl9PTihwY3R4X2FkZHIgIT0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsK LQkJCSAgICAgZGV2X3ByaXYtPnZsdl9wY3R4LT5zdG9sZW4tPnN0YXJ0KTsKKwkJCSAgICAgZGV2 X3ByaXYtPnZsdl9wY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogfQogCiAKQEAgLTU2NTMsNyAr NTY1Myw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfc2V0dXBfcGN0eChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWdvdG8gb3V0OwogCX0KIAotCXBjdHhfcGFkZHIgPSBk ZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFk ZHIgPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7 CiAJSTkxNV9XUklURShWTFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK