From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 3/5] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 23 Sep 2015 16:21:21 +0530 Message-ID: <1443005483-4481-4-git-send-email-ankitprasad.r.sharma@intel.com> References: <1443005483-4481-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id BA9396ED28 for ; Wed, 23 Sep 2015 04:09:15 -0700 (PDT) In-Reply-To: <1443005483-4481-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 Q2hyaXMpCgpUZXN0Y2FzZTogaWd0L2dlbV9zdG9sZW4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBBbmtpdHBy YXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgICAgfCAgMTYgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc3RvbGVuLmMgfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICB8ICAgNCArLQogNSBmaWxlcyBjaGFu Z2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwppbmRleCA3YTI4ZGU1Li4wZGI4YzQ3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwpAQCAtMTc5LDcgKzE3OSw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCQlzZXFfcHV0cyht LCAiKSIpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCi0JCXNlcV9wcmludGYobSwgIiAoc3RvbGVu OiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKKwkJc2VxX3ByaW50ZihtLCAiIChzdG9s ZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7CiAJaWYgKG9iai0+cGluX2Rp c3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewogCQljaGFyIHNbM10sICp0ID0gczsKIAkJ aWYgKG9iai0+cGluX2Rpc3BsYXkpCkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIGludCBvYmpf cmFua19ieV9zdG9sZW4odm9pZCAqcHJpdiwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq YiA9CiAJCWNvbnRhaW5lcl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgb2JqX2V4 ZWNfbGluayk7CiAKLQlyZXR1cm4gYS0+c3RvbGVuLT5zdGFydCAtIGItPnN0b2xlbi0+c3RhcnQ7 CisJcmV0dXJuIGEtPnN0b2xlbi0+YmFzZS5zdGFydCAtIGItPnN0b2xlbi0+YmFzZS5zdGFydDsK IH0KIAogc3RhdGljIGludCBpOTE1X2dlbV9zdG9sZW5fbGlzdF9pbmZvKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGU2ZWYwODMuLjM3 ZWUzMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODQxLDYgKzg0MSwxMiBAQCBzdHJ1 Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7CiB9OwogCitzdHJ1Y3QgaTkx NV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJhc2U7CisJc3RydWN0IGxpc3Rf aGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cit9OworCiAv KiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJldmlvdXNseSB1c2VkIGZvciBl eGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05URVhUX0hBTkRMRSAwCiAKQEAg LTEyNjgsNiArMTI3NCwxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewogCSAqLwogCXN0cnVjdCBs aXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlzdCBvZiBzdG9sZW4gb2JqZWN0 cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFuZAorCSAqIHRodXMgYXZhaWxh YmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBmb3IgYSBuZXcKKwkgKiBhbGxv Y2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJnZWFibGUuCisJICovCisJc3Ry dWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2FibGUgcG9ydGlvbiBvZiB0aGUg R1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9iYXNlOyAvKiBsaW1pdGVkIHRv IGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjAyNiw3ICsyMDM5LDcgQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQgdm1hX2xpc3Q7CiAKIAkvKiog U3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQgb2YgYmVpbmcgYmFja2VkIGJ5 IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOworCXN0cnVjdCBpOTE1X3N0 b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsKIAogCXN0 cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdTXTsKQEAgLTIwMzQsNiArMjA0 Nyw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG9i al9leGVjX2xpbms7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNoX3Bvb2xfbGluazsKKwlzdHJ1 Y3QgbGlzdF9oZWFkIHRtcF9saW5rOwogCiAJLyoqCiAJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9i amVjdCBpcyBvbiB0aGUgYWN0aXZlIGxpc3RzIChoYXMgcGVuZGluZwpAQCAtMjE1MCw2ICsyMTY0 LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCX07CiB9OwogI2RlZmluZSB0b19p bnRlbF9ibyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIGJh c2UpCisjZGVmaW5lIEk5MTVfQk9fSVNfQUNUSVZFKF9fb2JqKSAoX19vYmotPmFjdGl2ZSkKIAog dm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkLAog CQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm5ldywKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCmluZGV4IDY1NjhhN2YuLjg1MDI1YjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpA QCAtNDIyOCw2ICs0MjI4LDIwIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05U TkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShv YmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAob2JqLT5tYWR2KSB7CisJCWNh c2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5pdCgmb2JqLT5zdG9sZW4tPm1t X2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RPTlRORUVEOgorCQkJbGlzdF9t b3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xp c3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKwogCWFyZ3Mt PnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BVUkdFRDsKIAogb3V0OgpAQCAt NDI0OCw2ICs0MjYyLDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCUlOSVRfTElTVF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmsp OwogCUlOSVRfTElTVF9IRUFEKCZvYmotPnZtYV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2Jq LT5iYXRjaF9wb29sX2xpbmspOworCUlOSVRfTElTVF9IRUFEKCZvYmotPnRtcF9saW5rKTsKIAog CW9iai0+b3BzID0gb3BzOwogCkBAIC00ODk4LDYgKzQ5MTMsNyBAQCBpOTE1X2dlbV9sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0 X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFE KCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+ bW0uZmVuY2VfbGlzdCk7CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspCiAJ CWluaXRfcmluZ19saXN0cygmZGV2X3ByaXYtPnJpbmdbaV0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYwppbmRleCA5OWYyYmNlLi5kM2M0NGNiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNDE0LDcgKzQxNCw4IEBAIGk5MTVfZ2VtX29iamVj dF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRl OwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShk ZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmsp OworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0b2xlbi0+ YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwogCX0K QEAgLTQyNyw3ICs0MjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgogX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4p CisJCQkgICAgICAgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCkBAIC00MzUsMTcgKzQzNiwyMSBAQCBfaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2Jq ID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0 KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0 X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaTkxNV9nZW1fb2Jq ZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwogCiAJb2JqLT5wYWdl cyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAotCQkJCQkJICBzdG9sZW4tPnN0 YXJ0LCBzdG9sZW4tPnNpemUpOworCQkJCQkJICBzdG9sZW4tPmJhc2Uuc3RhcnQsCisJCQkJCQkg IHN0b2xlbi0+YmFzZS5zaXplKTsKIAlpZiAob2JqLT5wYWdlcyA9PSBOVUxMKQogCQlnb3RvIGNs ZWFudXA7CiAKIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJb2JqLT5zdG9sZW4g PSBzdG9sZW47CiAKKwlzdG9sZW4tPm9iaiA9IG9iajsKKwlJTklUX0xJU1RfSEVBRCgmc3RvbGVu LT5tbV9saW5rKTsKKwogCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5f Q1BVIHwgSTkxNV9HRU1fRE9NQUlOX0dUVDsKIAlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhk ZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1X0NBQ0hFX05PTkU7CiAKQEAgLTQ1NiwzNiArNDYx LDE1MCBAQCBjbGVhbnVwOgogCXJldHVybiBOVUxMOwogfQogCi1zdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCi1pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1NjQgc2l6ZSkKK3N0YXRpYyBib29sIG1hcmtfZnJlZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCit7CisJQlVHX09OKG9i ai0+c3RvbGVuID09IE5VTEwpOworCisJaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfRE9OVE5F RUQpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChvYmotPnBpbl9kaXNwbGF5KQorCQlyZXR1cm4g ZmFsc2U7CisKKwlsaXN0X2FkZCgmb2JqLT50bXBfbGluaywgdW53aW5kKTsKKwlyZXR1cm4gZHJt X21tX3NjYW5fYWRkX2Jsb2NrKCZvYmotPnN0b2xlbi0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbnQK K3N0b2xlbl9ldmljdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXpl KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21tX25v ZGUgKnN0b2xlbjsKLQlpbnQgcmV0OworCXN0cnVjdCBsaXN0X2hlYWQgdW53aW5kLCBldmljdDsK KwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqaXRlcjsKKwlpbnQgcmV0LCBhY3RpdmU7CiAKLQlp ZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCi0JCXJldHVybiBO VUxMOworCWRybV9tbV9pbml0X3NjYW4oJmRldl9wcml2LT5tbS5zdG9sZW4sIHNpemUsIDAsIDAp OworCUlOSVRfTElTVF9IRUFEKCZ1bndpbmQpOworCisJLyogUmV0aXJlIGFsbCByZXF1ZXN0cyBi ZWZvcmUgY3JlYXRpbmcgdGhlIGV2aWN0IGxpc3QgKi8KKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVz dHMoZGV2X3ByaXYtPmRldik7CisKKwlmb3IgKGFjdGl2ZSA9IDA7IGFjdGl2ZSA8PSAxOyBhY3Rp dmUrKykgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsICZkZXZfcHJpdi0+bW0uc3RvbGVu X2xpc3QsIG1tX2xpbmspIHsKKwkJCWlmIChJOTE1X0JPX0lTX0FDVElWRShpdGVyLT5vYmopICE9 IGFjdGl2ZSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1 bndpbmQpKQorCQkJCWdvdG8gZm91bmQ7CisJCX0KKwl9CisKK2ZvdW5kOgorCUlOSVRfTElTVF9I RUFEKCZldmljdCk7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZ1bndpbmQpKSB7CisJCW9iaiA9IGxp c3RfZmlyc3RfZW50cnkoJnVud2luZCwKKwkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QsCisJCQkJICAgICAgIHRtcF9saW5rKTsKKwkJbGlzdF9kZWwoJm9iai0+dG1wX2xpbmsp OworCisJCWlmIChkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKSkg eworCQkJbGlzdF9hZGQoJm9iai0+dG1wX2xpbmssICZldmljdCk7CisJCQlkcm1fZ2VtX29iamVj dF9yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJCX0KKwl9CisKKwlyZXQgPSAwOworCXdoaWxlICgh bGlzdF9lbXB0eSgmZXZpY3QpKSB7CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0LAor CQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAgdG1wX2xp bmspOworCQlsaXN0X2RlbCgmb2JqLT50bXBfbGluayk7CisKKwkJaWYgKHJldCA9PSAwKSB7CisJ CQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZtYV9uZXh0OworCisJCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUodm1hLCB2bWFfbmV4dCwKKwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKKwkJCQkJCSB2 bWFfbGluaykKKwkJCQlpZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCisJCQkJCWJyZWFrOworCisJ CQkvKiBTdG9sZW4gcGlucyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKKwkJCSAqIG5vcm1hbCBz aHJpbmtlciBmcm9tIHByb2Nlc3Npbmcgc3RvbGVuCisJCQkgKiBvYmplY3RzLgorCQkJICovCisJ CQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKworCQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhvYmopOworCQkJaWYgKHJldCA9PSAwKSB7CisJCQkJaTkxNV9nZW1f b2JqZWN0X3JlbGVhc2Vfc3RvbGVuKG9iaik7CisJCQkJb2JqLT5tYWR2ID0gX19JOTE1X01BRFZf UFVSR0VEOworCQkJfSBlbHNlIHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7 CisJCQl9CisJCX0KKworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsK Kwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUg Kgorc3RvbGVuX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNp emUpCit7CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKKwlpbnQgcmV0OwogCi0J RFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXpl KTsKIAlpZiAoc2l6ZSA9PSAwKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7CiAKIAlzdG9sZW4gPSBremFsbG9jKHNpemVvZigqc3RvbGVuKSwgR0ZQX0tFUk5FTCk7 CiAJaWYgKCFzdG9sZW4pCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKIAotCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgc3RvbGVu LCBzaXplLCA0MDk2KTsKKwlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3By aXYsICZzdG9sZW4tPmJhc2UsIHNpemUsIDQwOTYpOworCWlmIChyZXQgPT0gMCkKKwkJZ290byBv dXQ7CisKKwkvKiBObyBtb3JlIHN0b2xlbiBtZW1vcnkgYXZhaWxhYmxlLCBvciB0b28gZnJhZ21l bnRlZC4KKwkgKiBUcnkgZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5kIHNlYXJjaCBhZ2Fp bi4KKwkgKi8KKwlyZXQgPSBzdG9sZW5fZXZpY3QoZGV2X3ByaXYsIHNpemUpOworCisJaWYgKHJl dCA9PSAwKQorCQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsICZz dG9sZW4tPmJhc2UsCisJCQkJCQkgIHNpemUsIDApOworb3V0OgogCWlmIChyZXQpIHsKIAkJa2Zy ZWUoc3RvbGVuKTsKLQkJcmV0dXJuIE5VTEw7CisJCXN0b2xlbiA9IEVSUl9QVFIocmV0KTsKIAl9 CiAKKwlyZXR1cm4gc3RvbGVuOworfQorCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitp OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQg c2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVf c3RvbGVuX25vZGUgKnN0b2xlbjsKKworCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJp di0+bW0uc3RvbGVuKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlEUk1fREVCVUdfS01TKCJjcmVhdGlu ZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNpemUpOworCisJc3RvbGVuID0gc3RvbGVu X2FsbG9jKGRldl9wcml2LCBzaXplKTsKKwlpZiAoSVNfRVJSKHN0b2xlbikpCisJCXJldHVybiBO VUxMOworCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc3RvbGVu KTsKIAlpZiAob2JqKQogCQlyZXR1cm4gb2JqOwogCi0JaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9u b2RlKGRldl9wcml2LCBzdG9sZW4pOworCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZf cHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJa2ZyZWUoc3RvbGVuKTsKIAlyZXR1cm4gTlVMTDsKIH0K QEAgLTQ5OSw3ICs2MTgsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJl YWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICpnZ3R0ID0gJmRldl9wcml2LT5ndHQuYmFzZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOworCXN0cnVjdCBpOTE1X3N0 b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIApA QCAtNTE4LDEwICs2MzcsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmICghc3RvbGVuKQogCQlyZXR1 cm4gTlVMTDsKIAotCXN0b2xlbi0+c3RhcnQgPSBzdG9sZW5fb2Zmc2V0OwotCXN0b2xlbi0+c2l6 ZSA9IHNpemU7CisJc3RvbGVuLT5iYXNlLnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKKwlzdG9sZW4t PmJhc2Uuc2l6ZSA9IHNpemU7CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2Nr KTsKLQlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBzdG9s ZW4pOworCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sICZz dG9sZW4tPmJhc2UpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsK IAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4g c3BhY2VcbiIpOwpAQCAtNTMyLDcgKzY1MSw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlvYmogPSBfaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBzdG9sZW4pOwogCWlmIChvYmogPT0gTlVM TCkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxu Iik7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwkJ aTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlKTsKIAkJ a2ZyZWUoc3RvbGVuKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNTczLDcgKzY5Miw3IEBAIGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIGVycl92bWE6CiAJaTkxNV9nZW1fdm1hX2Rlc3Ryb3kodm1hKTsKIGVycl9v dXQ6Ci0JaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCWk5 MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJa2Zy ZWUoc3RvbGVuKTsKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKIAly ZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGZmZjBjMjIuLjUxZjJmOTEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTIzNSw3ICs1MjM1LDcgQEAgc3RhdGljIHZv aWQgdmFsbGV5dmlld19jaGVja19wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAl1bnNpZ25lZCBsb25nIHBjdHhfYWRkciA9IEk5MTVfUkVBRChWTFZfUENCUikgJiB+NDA5 NTsKIAogCVdBUk5fT04ocGN0eF9hZGRyICE9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArCi0J CQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5zdGFydCk7CisJCQkgICAgIGRldl9w cml2LT52bHZfcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIH0KIAogCkBAIC01MzA5LDcgKzUz MDksNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJcmV0dXJuOwogCX0KIAotCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+bW0uc3Rv bGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+ bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7CiAJSTkxNV9XUklURShW TFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=