From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 6/9] drm/i915: Add support for stealing purgable stolen pages Date: Mon, 14 Dec 2015 11:16:08 +0530 Message-ID: <1450071971-30321-7-git-send-email-ankitprasad.r.sharma@intel.com> References: <1450071971-30321-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 976716E5D6 for ; Sun, 13 Dec 2015 22:05:32 -0800 (PST) In-Reply-To: <1450071971-30321-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 YWxsb2MgZmFpbHMgKFR2cnRrbykKClRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgoKU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1v ZmYtYnk6IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNiArKysrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyB8IDE3MCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgIHwgICA0ICst CiA1IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGE4NzIxZmMuLmYwYWEzZDQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xNzQsNyArMTc0LDcgQEAgZGVzY3JpYmVf b2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IAkJCXNlcV9wdXRzKG0sICIpIik7CiAJfQogCWlmIChvYmotPnN0b2xlbikKLQkJc2VxX3ByaW50 ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOworCQlzZXFfcHJp bnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIAlp ZiAob2JqLT5waW5fZGlzcGxheSB8fCBvYmotPmZhdWx0X21hcHBhYmxlKSB7CiAJCWNoYXIgc1sz XSwgKnQgPSBzOwogCQlpZiAob2JqLT5waW5fZGlzcGxheSkKQEAgLTI1Myw5ICsyNTMsOSBAQCBz dGF0aWMgaW50IG9ial9yYW5rX2J5X3N0b2xlbih2b2lkICpwcml2LAogCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpiID0KIAkJY29udGFpbmVyX29mKEIsIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0LCBvYmpfZXhlY19saW5rKTsKIAotCWlmIChhLT5zdG9sZW4tPnN0YXJ0IDwgYi0+c3Rv bGVuLT5zdGFydCkKKwlpZiAoYS0+c3RvbGVuLT5iYXNlLnN0YXJ0IDwgYi0+c3RvbGVuLT5iYXNl LnN0YXJ0KQogCQlyZXR1cm4gLTE7Ci0JaWYgKGEtPnN0b2xlbi0+c3RhcnQgPiBiLT5zdG9sZW4t PnN0YXJ0KQorCWlmIChhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgPiBiLT5zdG9sZW4tPmJhc2Uuc3Rh cnQpCiAJCXJldHVybiAxOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5k ZXggZGNkZmI5Ny4uNDc5NzAzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04NDEsNiAr ODQxLDEyIEBAIHN0cnVjdCBpOTE1X2N0eF9oYW5nX3N0YXRzIHsKIAlib29sIGJhbm5lZDsKIH07 CiAKK3N0cnVjdCBpOTE1X3N0b2xlbl9ub2RlIHsKKwlzdHJ1Y3QgZHJtX21tX25vZGUgYmFzZTsK KwlzdHJ1Y3QgbGlzdF9oZWFkIG1tX2xpbms7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKK307CisKIC8qIFRoaXMgbXVzdCBtYXRjaCB1cCB3aXRoIHRoZSB2YWx1ZSBwcmV2aW91 c2x5IHVzZWQgZm9yIGV4ZWNidWYyLnJzdmQxLiAqLwogI2RlZmluZSBERUZBVUxUX0NPTlRFWFRf SEFORExFIDAKIApAQCAtMTI1MSw2ICsxMjU3LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7CiAJ ICovCiAJc3RydWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xpc3Q7CiAKKwkvKioKKwkgKiBMaXN0IG9m IHN0b2xlbiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwdXJnZWFibGUgYW5kCisJ ICogdGh1cyBhdmFpbGFibGUgZm9yIHJlYXBpbmcgaWYgd2UgbmVlZCBtb3JlIHNwYWNlIGZvciBh IG5ldworCSAqIGFsbG9jYXRpb24uIE9yZGVyZWQgYnkgdGltZSBvZiBtYXJraW5nIHB1cmdlYWJs ZS4KKwkgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHN0b2xlbl9saXN0OworCiAJLyoqIFVzYWJsZSBw b3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7 IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBAIC0yMDMxLDcgKzIwNDQs NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCB2bWFf bGlzdDsKIAogCS8qKiBTdG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBi ZWluZyBiYWNrZWQgYnkgc2htZW0uICovCi0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CisJ c3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2Jh bF9saXN0OwogCiAJc3RydWN0IGxpc3RfaGVhZCByaW5nX2xpc3RbSTkxNV9OVU1fUklOR1NdOwpA QCAtMjAzOSw2ICsyMDUyLDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVj dCBsaXN0X2hlYWQgb2JqX2V4ZWNfbGluazsKIAogCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9v bF9saW5rOworCS8qKiBVc2VkIGR1cmluZyBzdG9sZW4gbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRl bXBvcmFyaWx5IGhvbGQgYSByZWYgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHN0b2xlbl9saW5rOwog CiAJLyoqCiAJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBpcyBvbiB0aGUgYWN0aXZlIGxp c3RzIChoYXMgcGVuZGluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggMDU1MDVkZS4uOGE1 MDhjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00NDExLDYgKzQ0MTEsMjAgQEAgaTkx NV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEICYmIG9iai0+cGFnZXMgPT0gTlVM TCkKIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9iaik7CiAKKwlpZiAob2JqLT5zdG9sZW4p IHsKKwkJc3dpdGNoIChvYmotPm1hZHYpIHsKKwkJY2FzZSBJOTE1X01BRFZfV0lMTE5FRUQ6CisJ CQlsaXN0X2RlbF9pbml0KCZvYmotPnN0b2xlbi0+bW1fbGluayk7CisJCQlicmVhazsKKwkJY2Fz ZSBJOTE1X01BRFZfRE9OVE5FRUQ6CisJCQlsaXN0X21vdmUoJm9iai0+c3RvbGVuLT5tbV9saW5r LAorCQkJCSAgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCk7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWJyZWFrOworCQl9CisJfQorCiAJYXJncy0+cmV0YWluZWQgPSBvYmotPm1hZHYgIT0g X19JOTE1X01BRFZfUFVSR0VEOwogCiBvdXQ6CkBAIC00NDMxLDYgKzQ0NDUsNyBAQCB2b2lkIGk5 MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJSU5J VF9MSVNUX0hFQUQoJm9iai0+b2JqX2V4ZWNfbGluayk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+ dm1hX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bvb2xfbGluayk7CisJSU5J VF9MSVNUX0hFQUQoJm9iai0+c3RvbGVuX2xpbmspOwogCiAJb2JqLT5vcHMgPSBvcHM7CiAKQEAg LTUwNDYsNiArNTA2MSw3IEBAIGk5MTVfZ2VtX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCk7CiAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJp di0+bW0uYm91bmRfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5zdG9sZW5f bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKIAlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykKIAkJaW5pdF9yaW5nX2xpc3RzKCZkZXZf cHJpdi0+cmluZ1tpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCmluZGV4 IDM2NjA4MGI5Li4wMTRkNDc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u YwpAQCAtNTQyLDcgKzU0Miw4IEBAIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKG9iai0+c3RvbGVu KSB7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4p OworCQlsaXN0X2RlbCgmb2JqLT5zdG9sZW4tPm1tX2xpbmspOworCQlpOTE1X2dlbV9zdG9sZW5f cmVtb3ZlX25vZGUoZGV2X3ByaXYsICZvYmotPnN0b2xlbi0+YmFzZSk7CiAJCWtmcmVlKG9iai0+ c3RvbGVuKTsKIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwogCX0KQEAgLTU1NSw3ICs1NTYsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVj dF9zdG9sZW5fb3BzID0gewogCiBzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgog X2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0J CQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW4pCisJCQkgICAgICAgc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgKnN0b2xlbikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwogCkBAIC01NjMsMTEgKzU2NCwxMiBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9i ai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2 LCAmb2JqLT5iYXNlLCBzdG9sZW4tPmJhc2Uuc2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQo b2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwogCiAJb2JqLT5wYWdlcyA9IGk5MTVf cGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAotCQkJCQkJICBzdG9sZW4tPnN0YXJ0LCBzdG9s ZW4tPnNpemUpOworCQkJCQkJICBzdG9sZW4tPmJhc2Uuc3RhcnQsCisJCQkJCQkgIHN0b2xlbi0+ YmFzZS5zaXplKTsKIAlpZiAoSVNfRVJSKG9iai0+cGFnZXMpKSB7CiAJCWk5MTVfZ2VtX29iamVj dF9mcmVlKG9iaik7CiAJCXJldHVybiAodm9pZCopIG9iai0+cGFnZXM7CkBAIC01NzksMjQgKzU4 MSwxMTEgQEAgX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCW9iai0+c3RvbGVuID0g c3RvbGVuOwogCisJc3RvbGVuLT5vYmogPSBvYmo7CisJSU5JVF9MSVNUX0hFQUQoJnN0b2xlbi0+ bW1fbGluayk7CisKIAlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NQ VSB8IEk5MTVfR0VNX0RPTUFJTl9HVFQ7CiAJb2JqLT5jYWNoZV9sZXZlbCA9IEhBU19MTEMoZGV2 KSA/IEk5MTVfQ0FDSEVfTExDIDogSTkxNV9DQUNIRV9OT05FOwogCiAJcmV0dXJuIG9iajsKIH0K IAotc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCitzdGF0aWMgYm9vbAorbWFy a19mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBsaXN0X2hlYWQg KnVud2luZCkKK3sKKwlCVUdfT04ob2JqLT5zdG9sZW4gPT0gTlVMTCk7CisKKwlpZiAob2JqLT5t YWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKG9iai0+ cGluX2Rpc3BsYXkpCisJCXJldHVybiBmYWxzZTsKKworCWxpc3RfYWRkKCZvYmotPnN0b2xlbl9s aW5rLCB1bndpbmQpOworCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJm9iai0+c3RvbGVu LT5iYXNlKTsKK30KKworc3RhdGljIGludAorc3RvbGVuX2V2aWN0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOwotCWludCByZXQ7CisJc3RydWN0 IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICppdGVy OworCWludCByZXQsIGFjdGl2ZTsKIAotCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJp di0+bW0uc3RvbGVuKSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJZHJtX21tX2luaXRf c2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6ZSwgMCwgMCk7CisJSU5JVF9MSVNUX0hFQUQo JnVud2luZCk7CisKKwkvKiBSZXRpcmUgYWxsIHJlcXVlc3RzIGJlZm9yZSBjcmVhdGluZyB0aGUg ZXZpY3QgbGlzdCAqLworCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsK KworCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9IDE7IGFjdGl2ZSsrKSB7CisJCWxpc3RfZm9y X2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCwgbW1fbGluaykgewor CQkJaWYgKGl0ZXItPm9iai0+YWN0aXZlICE9IGFjdGl2ZSkKKwkJCQljb250aW51ZTsKKworCQkJ aWYgKG1hcmtfZnJlZShpdGVyLT5vYmosICZ1bndpbmQpKQorCQkJCWdvdG8gZm91bmQ7CisJCX0K Kwl9CisKK2ZvdW5kOgorCUlOSVRfTElTVF9IRUFEKCZldmljdCk7CisJd2hpbGUgKCFsaXN0X2Vt cHR5KCZ1bndpbmQpKSB7CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnVud2luZCwKKwkJCQkg ICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCisJCQkJICAgICAgIHN0b2xlbl9saW5r KTsKKwkJbGlzdF9kZWwoJm9iai0+c3RvbGVuX2xpbmspOworCisJCWlmIChkcm1fbW1fc2Nhbl9y ZW1vdmVfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKSkgeworCQkJbGlzdF9hZGQoJm9iai0+c3Rv bGVuX2xpbmssICZldmljdCk7CisJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFz ZSk7CisJCX0KKwl9CisKKwlyZXQgPSAwOworCXdoaWxlICghbGlzdF9lbXB0eSgmZXZpY3QpKSB7 CisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAgc3RvbGVuX2xpbmspOworCQlsaXN0X2RlbCgm b2JqLT5zdG9sZW5fbGluayk7CisKKwkJaWYgKHJldCA9PSAwKSB7CisJCQlzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwgKnZtYV9uZXh0OworCisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2 bWFfbmV4dCwKKwkJCQkJCSAmb2JqLT52bWFfbGlzdCwKKwkJCQkJCSB2bWFfbGluaykKKwkJCQlp ZiAoaTkxNV92bWFfdW5iaW5kKHZtYSkpCisJCQkJCWJyZWFrOworCisJCQkvKiBTdG9sZW4gcGlu cyBpdHMgcGFnZXMgdG8gcHJldmVudCB0aGUKKwkJCSAqIG5vcm1hbCBzaHJpbmtlciBmcm9tIHBy b2Nlc3Npbmcgc3RvbGVuCisJCQkgKiBvYmplY3RzLgorCQkJICovCisJCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fcGFnZXMob2JqKTsKKworCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl cyhvYmopOworCQkJaWYgKHJldCA9PSAwKSB7CisJCQkJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vf c3RvbGVuKG9iaik7CisJCQkJb2JqLT5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOworCQkJfSBl bHNlIHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJCQl9CisJCX0KKwor CQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwl9CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKgorc3RvbGVuX2FsbG9j KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCit7CisJc3RydWN0 IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKKwlpbnQgcmV0OwogCi0JRFJNX0RFQlVHX0tNUygi Y3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKIAlpZiAoc2l6ZSA9 PSAwKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIApAQCAtNjA0LDE3ICs2OTMsNjAgQEAg aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0 IHNpemUpCiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JcmV0 ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBzdG9sZW4sIHNpemUsIDQw OTYpOworCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgJnN0b2xl bi0+YmFzZSwgc2l6ZSwgNDA5Nik7CisJaWYgKHJldCA9PSAwKQorCQlnb3RvIG91dDsKKworCS8q IE5vIG1vcmUgc3RvbGVuIG1lbW9yeSBhdmFpbGFibGUsIG9yIHRvbyBmcmFnbWVudGVkLgorCSAq IFRyeSBldmljdGluZyBwdXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoIGFnYWluLgorCSAqLwor CXJldCA9IHN0b2xlbl9ldmljdChkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKHJldCA9PSAwKQorCQly ZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2Us CisJCQkJCQkgIHNpemUsIDQwOTYpOworb3V0OgogCWlmIChyZXQpIHsKIAkJa2ZyZWUoc3RvbGVu KTsKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKKwlyZXR1cm4gc3RvbGVuOworfQorCisv KioKKyAqIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgLSBjcmVhdGVzIG9iamVjdCB1 c2luZyB0aGUgc3RvbGVuIG1lbW9yeQorICogQGRldjoJZHJtIGRldmljZQorICogQHNpemU6CXNp emUgb2YgdGhlIG9iamVjdCByZXF1ZXN0ZWQKKyAqCisgKiBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbigpIHRyaWVzIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG9iamVjdAorICogZnJv bSB0aGUgc3RvbGVuIG1lbW9yeSByZWdpb24uIElmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGZvdW5k LCBpdCB0cmllcworICogZXZpY3RpbmcgcHVyZ2VhYmxlIG9iamVjdHMgYW5kIHNlYXJjaGluZyBh Z2Fpbi4KKyAqCisgKiBSZXR1cm5zOiBPYmplY3QgcG9pbnRlciAtIHN1Y2Nlc3MgYW5kIGVycm9y IHBvaW50ZXIgLSBmYWlsdXJlCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2k5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBz aXplKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9z dG9sZW5fbm9kZSAqc3RvbGVuOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0 cnVjdF9tdXRleCkpOworCisJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5z dG9sZW4pKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKworCURSTV9ERUJVR19LTVMoImNy ZWF0aW5nIHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CisKKwlzdG9sZW4gPSBz dG9sZW5fYWxsb2MoZGV2X3ByaXYsIHNpemUpOworCWlmIChJU19FUlIoc3RvbGVuKSkKKwkJcmV0 dXJuICh2b2lkKikgc3RvbGVuOworCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoIUlTX0VSUihvYmopKQogCQlyZXR1cm4gb2JqOwogCi0J aTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCWk5MTVfZ2Vt X3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJa2ZyZWUoc3Rv bGVuKTsKIAlyZXR1cm4gb2JqOwogfQpAQCAtNjI4LDcgKzc2MCw3IEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSAmZGV2X3ByaXYtPmd0dC5iYXNlOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpz dG9sZW47CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKIAlpbnQgcmV0OwogCkBAIC02NDcsMTAgKzc3OSwxMCBAQCBpOTE1X2dlbV9vYmpl Y3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0Jc3RvbGVuLT5z dGFydCA9IHN0b2xlbl9vZmZzZXQ7Ci0Jc3RvbGVuLT5zaXplID0gc2l6ZTsKKwlzdG9sZW4tPmJh c2Uuc3RhcnQgPSBzdG9sZW5fb2Zmc2V0OworCXN0b2xlbi0+YmFzZS5zaXplID0gc2l6ZTsKIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwotCXJldCA9IGRybV9tbV9yZXNl cnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sIHN0b2xlbik7CisJcmV0ID0gZHJtX21tX3Jl c2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgJnN0b2xlbi0+YmFzZSk7CiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwogCWlmIChyZXQpIHsKIAkJRFJNX0RF QlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBzcGFjZVxuIik7CkBAIC02NjEsNyAr NzkzLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKElTX0VSUihvYmopKSB7CiAJCURSTV9ERUJVR19LTVMo ImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gb2JqZWN0XG4iKTsKLQkJaTkxNV9nZW1fc3RvbGVu X3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3Zl X25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCQlrZnJlZShzdG9sZW4pOwogCQlyZXR1 cm4gb2JqOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDBhZmI4MTkuLmM5NGIzOWIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTExOSw3ICs1MTE5LDcgQEAgc3RhdGljIHZv aWQgdmFsbGV5dmlld19jaGVja19wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAl1bnNpZ25lZCBsb25nIHBjdHhfYWRkciA9IEk5MTVfUkVBRChWTFZfUENCUikgJiB+NDA5 NTsKIAogCVdBUk5fT04ocGN0eF9hZGRyICE9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArCi0J CQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5zdGFydCk7CisJCQkgICAgIGRldl9w cml2LT52bHZfcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIH0KIAogCkBAIC01MTk0LDcgKzUx OTQsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJcmV0dXJuOwogCX0KIAotCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+bW0uc3Rv bGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+ bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7CiAJSTkxNV9XUklURShW TFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=