From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 4/6] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 9 Dec 2015 18:16:20 +0530 Message-ID: <1449665182-10054-5-git-send-email-ankitprasad.r.sharma@intel.com> References: <1449665182-10054-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 09BCF72110 for ; Wed, 9 Dec 2015 05:06:04 -0800 (PST) In-Reply-To: <1449665182-10054-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 IG1hY3JvIChUdnJ0a28pCgpUZXN0Y2FzZTogaWd0L2dlbV9zdG9sZW4KClNpZ25lZC1vZmYtYnk6 IENocmlzIFdpbHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5 OiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICB8ICAgNiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTcgKysrLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgfCAgMTYgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc3RvbGVuLmMgfCAxNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICB8ICAgNCArLQogNSBm aWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA1NjU5ZDRjLi44OWIwZmVjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIGRlc2NyaWJlX29iaihz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCQlz ZXFfcHV0cyhtLCAiKSIpOwogCX0KIAlpZiAob2JqLT5zdG9sZW4pCi0JCXNlcV9wcmludGYobSwg IiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPnN0YXJ0KTsKKwkJc2VxX3ByaW50Ziht LCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+YmFzZS5zdGFydCk7CiAJaWYgKG9i ai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mYXVsdF9tYXBwYWJsZSkgewogCQljaGFyIHNbM10sICp0 ID0gczsKIAkJaWYgKG9iai0+cGluX2Rpc3BsYXkpCkBAIC0yNTMsOSArMjUzLDkgQEAgc3RhdGlj IGludCBvYmpfcmFua19ieV9zdG9sZW4odm9pZCAqcHJpdiwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqYiA9CiAJCWNvbnRhaW5lcl9vZihCLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCwgb2JqX2V4ZWNfbGluayk7CiAKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA8IGItPnN0b2xlbi0+ c3RhcnQpCisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA8IGItPnN0b2xlbi0+YmFzZS5zdGFy dCkKIAkJcmV0dXJuIC0xOwotCWlmIChhLT5zdG9sZW4tPnN0YXJ0ID4gYi0+c3RvbGVuLT5zdGFy dCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0ID4gYi0+c3RvbGVuLT5iYXNlLnN0YXJ0KQog CQlyZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGQ0 NTI3NGUuLmUwYjA5YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODQxLDYgKzg0MSwx MiBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7CiB9OwogCitz dHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSB7CisJc3RydWN0IGRybV9tbV9ub2RlIGJhc2U7CisJc3Ry dWN0IGxpc3RfaGVhZCBtbV9saW5rOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cit9OworCiAvKiBUaGlzIG11c3QgbWF0Y2ggdXAgd2l0aCB0aGUgdmFsdWUgcHJldmlvdXNseSB1 c2VkIGZvciBleGVjYnVmMi5yc3ZkMS4gKi8KICNkZWZpbmUgREVGQVVMVF9DT05URVhUX0hBTkRM RSAwCiAKQEAgLTEyNTIsNiArMTI1OCwxMyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewogCSAqLwog CXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlzdCBvZiBzdG9s ZW4gb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFuZAorCSAqIHRo dXMgYXZhaWxhYmxlIGZvciByZWFwaW5nIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSBmb3IgYSBuZXcK KwkgKiBhbGxvY2F0aW9uLiBPcmRlcmVkIGJ5IHRpbWUgb2YgbWFya2luZyBwdXJnZWFibGUuCisJ ICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGlzdDsKKwogCS8qKiBVc2FibGUgcG9ydGlv biBvZiB0aGUgR1RUIGZvciBHRU0gKi8KIAl1bnNpZ25lZCBsb25nIHN0b2xlbl9iYXNlOyAvKiBs aW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkgKi8KIApAQCAtMjAzMiw3ICsyMDQ1LDcgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQgdm1hX2xpc3Q7 CiAKIAkvKiogU3RvbGVuIG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQgb2YgYmVpbmcg YmFja2VkIGJ5IHNobWVtLiAqLwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOworCXN0cnVj dCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlz dDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdTXTsKQEAgLTIw NDAsNiArMjA1Myw4IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgbGlz dF9oZWFkIG9ial9leGVjX2xpbms7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNoX3Bvb2xfbGlu azsKKwkvKiogVXNlZCBkdXJpbmcgc3RvbGVuIG1lbW9yeSBhbGxvY2F0aW9ucyB0byB0ZW1wb3Jh cmlseSBob2xkIGEgcmVmICovCisJc3RydWN0IGxpc3RfaGVhZCBzdG9sZW5fbGluazsKIAogCS8q KgogCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAo aGFzIHBlbmRpbmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDU4MTI3NDguLmVkOTdkZTYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtNDM1OSw2ICs0MzU5LDIwIEBAIGk5MTVfZ2Vt X21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAo b2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJ CWk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJ CXN3aXRjaCAob2JqLT5tYWR2KSB7CisJCWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlz dF9kZWxfaW5pdCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkx NV9NQURWX0RPTlRORUVEOgorCQkJbGlzdF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJ CQkgICZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJ CQlicmVhazsKKwkJfQorCX0KKwogCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkx NV9NQURWX1BVUkdFRDsKIAogb3V0OgpAQCAtNDM3OSw2ICs0MzkzLDcgQEAgdm9pZCBpOTE1X2dl bV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCUlOSVRfTElT VF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmspOwogCUlOSVRfTElTVF9IRUFEKCZvYmotPnZtYV9s aXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5iYXRjaF9wb29sX2xpbmspOworCUlOSVRfTElT VF9IRUFEKCZvYmotPnN0b2xlbl9saW5rKTsKIAogCW9iai0+b3BzID0gb3BzOwogCkBAIC00OTk3 LDYgKzUwMTIsNyBAQCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJSU5J VF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZk ZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1t LmJvdW5kX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xpc3Qp OwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uZmVuY2VfbGlzdCk7CiAJZm9yIChpID0g MDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspCiAJCWluaXRfcmluZ19saXN0cygmZGV2X3ByaXYt PnJpbmdbaV0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3Rv bGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCAwYjBj ZTExLi45ZDZhYzY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAt NTQyLDcgKzU0Miw4IEBAIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVuKSB7Ci0J CWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOworCQls aXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3Zl X25vZGUoZGV2X3ByaXYsICZvYmotPnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+c3RvbGVu KTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwogCX0KQEAgLTU1NSw3ICs1NTYsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9zdG9s ZW5fb3BzID0gewogCiBzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogX2k5MTVf Z2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAg ICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCisJCQkgICAgICAgc3RydWN0IGk5MTVfc3Rv bGVuX25vZGUgKnN0b2xlbikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwog CWludCByZXQgPSAwOwpAQCAtNTY0LDExICs1NjUsMTIgQEAgX2k5MTVfZ2VtX29iamVjdF9jcmVh dGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKG9iaiA9PSBOVUxMKQogCQly ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChk ZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7CisJZHJtX2dlbV9wcml2YXRlX29iamVjdF9p bml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5iYXNlLnNpemUpOwogCWk5MTVfZ2VtX29iamVj dF9pbml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzKTsKIAogCW9iai0+cGFnZXMg PSBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKGRldiwKLQkJCQkJCSAgc3RvbGVuLT5zdGFy dCwgc3RvbGVuLT5zaXplKTsKKwkJCQkJCSAgc3RvbGVuLT5iYXNlLnN0YXJ0LAorCQkJCQkJICBz dG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaWYgKElTX0VSUihvYmotPnBhZ2VzKSkgewogCQlyZXQgPSBQ VFJfRVJSKG9iai0+cGFnZXMpOwogCQlnb3RvIGNsZWFudXA7CkBAIC01NzcsNiArNTc5LDkgQEAg X2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ aTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCW9iai0+c3RvbGVuID0gc3RvbGVuOwog CisJc3RvbGVuLT5vYmogPSBvYmo7CisJSU5JVF9MSVNUX0hFQUQoJnN0b2xlbi0+bW1fbGluayk7 CisKIAlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NQVSB8IEk5MTVf R0VNX0RPTUFJTl9HVFQ7CiAJb2JqLT5jYWNoZV9sZXZlbCA9IEhBU19MTEMoZGV2KSA/IEk5MTVf Q0FDSEVfTExDIDogSTkxNV9DQUNIRV9OT05FOwogCkBAIC01ODcsMTggKzU5MiwxMDIgQEAgY2xl YW51cDoKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCi1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqCi1pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1NjQgc2l6ZSkKK3N0YXRpYyBib29sCittYXJrX2ZyZWUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwgc3RydWN0IGxpc3RfaGVhZCAqdW53aW5kKQoreworCUJVR19PTihvYmot PnN0b2xlbiA9PSBOVUxMKTsKKworCWlmIChvYmotPm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVE KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAob2JqLT5waW5fZGlzcGxheSkKKwkJcmV0dXJuIGZh bHNlOworCisJbGlzdF9hZGQoJm9iai0+c3RvbGVuX2xpbmssIHVud2luZCk7CisJcmV0dXJuIGRy bV9tbV9zY2FuX2FkZF9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpOworfQorCitzdGF0aWMgaW50 CitzdG9sZW5fZXZpY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6 ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9u b2RlICpzdG9sZW47Ci0JaW50IHJldDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHVud2luZCwgZXZpY3Q7 CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKml0ZXI7CisJaW50IHJldCwgYWN0aXZlOwogCi0J aWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQotCQlyZXR1cm4g RVJSX1BUUigtRU5PREVWKTsKKwlkcm1fbW1faW5pdF9zY2FuKCZkZXZfcHJpdi0+bW0uc3RvbGVu LCBzaXplLCAwLCAwKTsKKwlJTklUX0xJU1RfSEVBRCgmdW53aW5kKTsKKworCS8qIFJldGlyZSBh bGwgcmVxdWVzdHMgYmVmb3JlIGNyZWF0aW5nIHRoZSBldmljdCBsaXN0ICovCisJaTkxNV9nZW1f cmV0aXJlX3JlcXVlc3RzKGRldl9wcml2LT5kZXYpOworCisJZm9yIChhY3RpdmUgPSAwOyBhY3Rp dmUgPD0gMTsgYWN0aXZlKyspIHsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCAmZGV2X3By aXYtPm1tLnN0b2xlbl9saXN0LCBtbV9saW5rKSB7CisJCQlpZiAoaXRlci0+b2JqLT5hY3RpdmUg IT0gYWN0aXZlKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwg JnVud2luZCkpCisJCQkJZ290byBmb3VuZDsKKwkJfQorCX0KKworZm91bmQ6CisJSU5JVF9MSVNU X0hFQUQoJmV2aWN0KTsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2luZCkpIHsKKwkJb2JqID0g bGlzdF9maXJzdF9lbnRyeSgmdW53aW5kLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCwKKwkJCQkgICAgICAgc3RvbGVuX2xpbmspOworCQlsaXN0X2RlbCgmb2JqLT5zdG9s ZW5fbGluayk7CisKKwkJaWYgKGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jaygmb2JqLT5zdG9sZW4t PmJhc2UpKSB7CisJCQlsaXN0X2FkZCgmb2JqLT5zdG9sZW5fbGluaywgJmV2aWN0KTsKKwkJCWRy bV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJfQorCX0KKworCXJldCA9IDA7 CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZldmljdCkpIHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRy eSgmZXZpY3QsCisJCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAg ICAgICBzdG9sZW5fbGluayk7CisJCWxpc3RfZGVsKCZvYmotPnN0b2xlbl9saW5rKTsKKworCQlp ZiAocmV0ID09IDApIHsKKwkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdm1hX25leHQ7CisKKwkJ CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHZtYV9uZXh0LAorCQkJCQkJICZvYmotPnZt YV9saXN0LAorCQkJCQkJIHZtYV9saW5rKQorCQkJCWlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSkK KwkJCQkJYnJlYWs7CisKKwkJCS8qIFN0b2xlbiBwaW5zIGl0cyBwYWdlcyB0byBwcmV2ZW50IHRo ZQorCQkJICogbm9ybWFsIHNocmlua2VyIGZyb20gcHJvY2Vzc2luZyBzdG9sZW4KKwkJCSAqIG9i amVjdHMuCisJCQkgKi8KKwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCisJ CQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCQlpZiAocmV0ID09IDAp IHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4ob2JqKTsKKwkJCQlvYmotPm1h ZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJCQl9IGVsc2UgeworCQkJCWk5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsKKwkJCX0KKwkJfQorCisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlKCZvYmotPmJhc2UpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg aTkxNV9zdG9sZW5fbm9kZSAqCitzdG9sZW5fYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1NjQgc2l6ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVu OworCWludCByZXQ7CiAKLQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBz aXplPSVsbHhcbiIsIHNpemUpOwogCWlmIChzaXplID09IDApCiAJCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOwogCkBAIC02MDYsMTcgKzY5NSw2MCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKIAlpZiAoIXN0b2xlbikKIAkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0 X25vZGUoZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7CisJcmV0ID0gaTkxNV9nZW1fc3Rv bGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLCBzaXplLCA0MDk2KTsKKwlp ZiAocmV0ID09IDApCisJCWdvdG8gb3V0OworCisJLyogTm8gbW9yZSBzdG9sZW4gbWVtb3J5IGF2 YWlsYWJsZSwgb3IgdG9vIGZyYWdtZW50ZWQuCisJICogVHJ5IGV2aWN0aW5nIHB1cmdlYWJsZSBv YmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCisJICovCisJcmV0ID0gc3RvbGVuX2V2aWN0KGRldl9w cml2LCBzaXplKTsKKwlpZiAocmV0ID09IDApCisJCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNl cnRfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSwKKwkJCQkJCSAgc2l6ZSwgNDA5Nik7Citv dXQ6CiAJaWYgKHJldCkgewogCQlrZnJlZShzdG9sZW4pOwogCQlyZXR1cm4gRVJSX1BUUihyZXQp OwogCX0KIAorCXJldHVybiBzdG9sZW47Cit9CisKKy8qKgorICogaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oKSAtIGNyZWF0ZXMgb2JqZWN0IHVzaW5nIHRoZSBzdG9sZW4gbWVtb3J5Cisg KiBAZGV2Oglkcm0gZGV2aWNlCisgKiBAc2l6ZToJc2l6ZSBvZiB0aGUgb2JqZWN0IHJlcXVlc3Rl ZAorICoKKyAqIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgdHJpZXMgdG8gYWxsb2Nh dGUgbWVtb3J5IGZvciB0aGUgb2JqZWN0CisgKiBmcm9tIHRoZSBzdG9sZW4gbWVtb3J5IHJlZ2lv bi4gSWYgbm90IGVub3VnaCBtZW1vcnkgaXMgZm91bmQsIGl0IHRyaWVzCisgKiBldmljdGluZyBw dXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoaW5nIGFnYWluLgorICoKKyAqIFJldHVybnM6IE9i amVjdCBwb2ludGVyIC0gc3VjY2VzcyBhbmQgZXJyb3IgcG9pbnRlciAtIGZhaWx1cmUKKyAqLwor c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisKKwlX QVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisKKwlpZiAoIWRy bV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCisJCXJldHVybiBFUlJfUFRS KC1FTk9ERVYpOworCisJRFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6 ZT0lbGx4XG4iLCBzaXplKTsKKworCXN0b2xlbiA9IHN0b2xlbl9hbGxvYyhkZXZfcHJpdiwgc2l6 ZSk7CisJaWYgKElTX0VSUihzdG9sZW4pKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwog CW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYg KCFJU19FUlIob2JqKSkKIAkJcmV0dXJuIG9iajsKIAotCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVf bm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2 X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCWtmcmVlKHN0b2xlbik7CiAJcmV0dXJuIG9iajsKIH0K QEAgLTYzMCw3ICs3NjIsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJl YWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICpnZ3R0ID0gJmRldl9wcml2LT5ndHQuYmFzZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOworCXN0cnVjdCBpOTE1X3N0 b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIApA QCAtNjQ5LDEwICs3ODEsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmICghc3RvbGVuKQogCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXN0b2xlbi0+c3RhcnQgPSBzdG9sZW5fb2Zmc2V0Owot CXN0b2xlbi0+c2l6ZSA9IHNpemU7CisJc3RvbGVuLT5iYXNlLnN0YXJ0ID0gc3RvbGVuX29mZnNl dDsKKwlzdG9sZW4tPmJhc2Uuc2l6ZSA9IHNpemU7CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPm1t LnN0b2xlbl9sb2NrKTsKLQlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0u c3RvbGVuLCBzdG9sZW4pOworCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJmRldl9wcml2LT5t bS5zdG9sZW4sICZzdG9sZW4tPmJhc2UpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPm1tLnN0 b2xlbl9sb2NrKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxv Y2F0ZSBzdG9sZW4gc3BhY2VcbiIpOwpAQCAtNjYzLDcgKzc5NSw3IEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlvYmogPSBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBzdG9sZW4pOwogCWlm IChJU19FUlIob2JqKSkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3Rv bGVuIG9iamVjdFxuIik7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwg c3RvbGVuKTsKKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVu LT5iYXNlKTsKIAkJa2ZyZWUoc3RvbGVuKTsKIAkJcmV0dXJuIG9iajsKIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwppbmRleCA2ZGVlOTA4Li4wM2FkMjc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKQEAgLTUxMDMsNyArNTEwMyw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY2hlY2tfcGN0 eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJdW5zaWduZWQgbG9uZyBwY3R4 X2FkZHIgPSBJOTE1X1JFQUQoVkxWX1BDQlIpICYgfjQwOTU7CiAKIAlXQVJOX09OKHBjdHhfYWRk ciAhPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKwotCQkJICAgICBkZXZfcHJpdi0+dmx2X3Bj dHgtPnN0b2xlbi0+c3RhcnQpOworCQkJICAgICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+ YmFzZS5zdGFydCk7CiB9CiAKIApAQCAtNTE3Nyw3ICs1MTc3LDcgQEAgc3RhdGljIHZvaWQgdmFs bGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybjsKIAl9 CiAKLQlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVu LT5zdGFydDsKKwlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+ c3RvbGVuLT5iYXNlLnN0YXJ0OwogCUk5MTVfV1JJVEUoVkxWX1BDQlIsIHBjdHhfcGFkZHIpOwog CiBvdXQ6Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK