From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v3.5 06/19] drm/i915: Split skl_update_scaler, v4. Date: Mon, 22 Jun 2015 09:50:32 +0200 Message-ID: <5587BE48.7060200@linux.intel.com> References: <1434364436-6366-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434364436-6366-7-git-send-email-maarten.lankhorst@linux.intel.com> <20150618014821.GD3607@intel.com> <55825A32.7050903@linux.intel.com> <20150618065110.GI23637@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D6EE6E5B2 for ; Mon, 22 Jun 2015 00:50:35 -0700 (PDT) In-Reply-To: <20150618065110.GI23637@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Y29tbWl0IDJjMzEwYjlkMjg1OTg2MzgyNmMzNjg4Yzg4MjE4ZDYwN2Q1ZGQxOWEKQXV0aG9yOiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpEYXRl OiAgIE1vbiBNYXkgMTggMTI6Mjg6NTIgMjAxNSArMDIwMAoKZHJtL2k5MTU6IFNwbGl0IHNrbF91 cGRhdGVfc2NhbGVyLCB2NC4KCkl0J3MgZWFzaWVyIHRvIHJlYWQgc2VwYXJhdGUgZnVuY3Rpb25z IGZvciBjcnRjIGFuZCBwbGFuZSBzY2FsZXIgc3RhdGUuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSBV cGRhdGUgZG9jdW1lbnRhdGlvbi4KQ2hhbmdlcyBzaW5jZSB2MjoKIC0gR2V0IHJpZCBvZiBwYXJh bWV0ZXJzIHRvIHNrbF91cGRhdGVfc2NhbGVyIG9ubHkgdXNlZCBmb3IgdHJhY2VzLgogICBUaGlz IGF2b2lkcyBuZWVkaW5nIHRvIGRvY3VtZW50IHRoZSBvdGhlciBwYXJhbWV0ZXJzLgpDaGFuZ2Vz IHNpbmNlIHYzOgogLSBSZW5hbWUgc2NhbGVyX2lkeCB0byBzY2FsZXJfdXNlci4KClNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+ClJldmlld2VkLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgpU ZXN0ZWQtYnkoSVZCKTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMzZmMjkyNGI5YTY4Li43ZTAwOGEx YjEwNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTQzMTMsNjIgKzQz MTMsMTYgQEAgc3RhdGljIHZvaWQgY3B0X3ZlcmlmeV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBwaXBlKQogCX0KIH0KIAotLyoqCi0gKiBza2xfdXBkYXRlX3NjYWxlcl91c2Vy cyAtIFN0YWdlcyB1cGRhdGUgdG8gY3J0YydzIHNjYWxlciBzdGF0ZQotICogQGludGVsX2NydGM6 IGNydGMKLSAqIEBjcnRjX3N0YXRlOiBjcnRjX3N0YXRlCi0gKiBAcGxhbmU6IHBsYW5lIChOVUxM IGluZGljYXRlcyBjcnRjIGlzIHJlcXVlc3RpbmcgdXBkYXRlKQotICogQHBsYW5lX3N0YXRlOiBw bGFuZSdzIHN0YXRlCi0gKiBAZm9yY2VfZGV0YWNoOiByZXF1ZXN0IHVuY29uZGl0aW9uYWwgZGV0 YWNobWVudCBvZiBzY2FsZXIKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgc2NhbGVyIHN0 YXRlIGZvciByZXF1ZXN0ZWQgcGxhbmUgb3IgY3J0Yy4KLSAqIFRvIHJlcXVlc3Qgc2NhbGVyIHVz YWdlIHVwZGF0ZSBmb3IgYSBwbGFuZSwgY2FsbGVyIHNoYWxsIHBhc3MgcGxhbmUgcG9pbnRlci4K LSAqIFRvIHJlcXVlc3Qgc2NhbGVyIHVzYWdlIHVwZGF0ZSBmb3IgY3J0YywgY2FsbGVyIHNoYWxs IHBhc3MgcGxhbmUgcG9pbnRlcgotICogYXMgTlVMTC4KLSAqCi0gKiBSZXR1cm4KLSAqICAgICAw IC0gc2NhbGVyX3VzYWdlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Ci0gKiAgICBlcnJvciAtIHJlcXVl c3RlZCBzY2FsaW5nIGNhbm5vdCBiZSBzdXBwb3J0ZWQgb3Igb3RoZXIgZXJyb3IgY29uZGl0aW9u Ci0gKi8KLWludAotc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoCi0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCXN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCi0JaW50IGZvcmNlX2RldGFjaCkKK3N0YXRpYyBpbnQKK3NrbF91cGRhdGVfc2Nh bGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFj aCwKKwkJICB1bnNpZ25lZCBzY2FsZXJfdXNlciwgaW50ICpzY2FsZXJfaWQsIHVuc2lnbmVkIGlu dCByb3RhdGlvbiwKKwkJICBpbnQgc3JjX3csIGludCBzcmNfaCwgaW50IGRzdF93LCBpbnQgZHN0 X2gpCiB7CisJc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3RhdGUgPQor CQkmY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0KKwkJdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCWludCBuZWVk X3NjYWxpbmc7Ci0JaW50IGlkeDsKLQlpbnQgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2g7Ci0J aW50ICpzY2FsZXJfaWQ7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Ci0Jc3RydWN0IGlu dGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3RhdGU7Ci0JdW5zaWduZWQgaW50IHJvdGF0 aW9uOwotCi0JaWYgKCFpbnRlbF9jcnRjIHx8ICFjcnRjX3N0YXRlKQotCQlyZXR1cm4gMDsKLQot CXNjYWxlcl9zdGF0ZSA9ICZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Ci0KLQlpZHggPSBpbnRl bF9wbGFuZSA/IGRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUtPmJhc2UpIDogU0tMX0NSVENf SU5ERVg7Ci0JZmIgPSBpbnRlbF9wbGFuZSA/IHBsYW5lX3N0YXRlLT5iYXNlLmZiIDogTlVMTDsK LQotCWlmIChpbnRlbF9wbGFuZSkgewotCQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+c3JjKSA+PiAxNjsKLQkJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT5zcmMpID4+IDE2OwotCQlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ZHN0 KTsKLQkJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5kc3QpOwotCQlzY2Fs ZXJfaWQgPSAmcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKLQkJcm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+YmFzZS5yb3RhdGlvbjsKLQl9IGVsc2UgewotCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwotCQlz cmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Ci0JCXNyY19oID0gY3J0Y19zdGF0ZS0+cGlw ZV9zcmNfaDsKLQkJZHN0X3cgPSBhZGp1c3RlZF9tb2RlLT5oZGlzcGxheTsKLQkJZHN0X2ggPSBh ZGp1c3RlZF9tb2RlLT52ZGlzcGxheTsKLQkJc2NhbGVyX2lkID0gJnNjYWxlcl9zdGF0ZS0+c2Nh bGVyX2lkOwotCQlyb3RhdGlvbiA9IERSTV9ST1RBVEVfMDsKLQl9CiAKIAluZWVkX3NjYWxpbmcg PSBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pID8KIAkJKHNyY19oICE9IGRzdF93 IHx8IHNyY193ICE9IGRzdF9oKToKQEAgLTQzODQsMTcgKzQzMzgsMTQgQEAgc2tsX3VwZGF0ZV9z Y2FsZXJfdXNlcnMoCiAJICogdXBkYXRlIHRvIGZyZWUgdGhlIHNjYWxlciBpcyBkb25lIGluIHBs YW5lL3BhbmVsLWZpdCBwcm9ncmFtbWluZy4KIAkgKiBGb3IgdGhpcyBwdXJwb3NlIGNydGMvcGxh bmVfc3RhdGUtPnNjYWxlcl9pZCBpc24ndCByZXNldCBoZXJlLgogCSAqLwotCWlmIChmb3JjZV9k ZXRhY2ggfHwgIW5lZWRfc2NhbGluZyB8fCAoaW50ZWxfcGxhbmUgJiYKLQkJKCFmYiB8fCAhcGxh bmVfc3RhdGUtPnZpc2libGUpKSkgeworCWlmIChmb3JjZV9kZXRhY2ggfHwgIW5lZWRfc2NhbGlu ZykgewogCQlpZiAoKnNjYWxlcl9pZCA+PSAwKSB7Ci0JCQlzY2FsZXJfc3RhdGUtPnNjYWxlcl91 c2VycyAmPSB+KDEgPDwgaWR4KTsKKwkJCXNjYWxlcl9zdGF0ZS0+c2NhbGVyX3VzZXJzICY9IH4o MSA8PCBzY2FsZXJfdXNlcik7CiAJCQlzY2FsZXJfc3RhdGUtPnNjYWxlcnNbKnNjYWxlcl9pZF0u aW5fdXNlID0gMDsKIAotCQkJRFJNX0RFQlVHX0tNUygiU3RhZ2VkIGZyZWVpbmcgc2NhbGVyIGlk ICVkLiVkIGZyb20gJXM6JWQgIgotCQkJCSJjcnRjX3N0YXRlID0gJXAgc2NhbGVyX3VzZXJzID0g MHgleFxuIiwKLQkJCQlpbnRlbF9jcnRjLT5waXBlLCAqc2NhbGVyX2lkLCBpbnRlbF9wbGFuZSA/ ICJQTEFORSIgOiAiQ1JUQyIsCi0JCQkJaW50ZWxfcGxhbmUgPyBpbnRlbF9wbGFuZS0+YmFzZS5i YXNlLmlkIDoKLQkJCQlpbnRlbF9jcnRjLT5iYXNlLmJhc2UuaWQsIGNydGNfc3RhdGUsCisJCQlE Uk1fREVCVUdfS01TKCJzY2FsZXJfdXNlciBpbmRleCAldS4ldTogIgorCQkJCSJTdGFnZWQgZnJl ZWluZyBzY2FsZXIgaWQgJWQgc2NhbGVyX3VzZXJzID0gMHgleFxuIiwKKwkJCQlpbnRlbF9jcnRj LT5waXBlLCBzY2FsZXJfdXNlciwgKnNjYWxlcl9pZCwKIAkJCQlzY2FsZXJfc3RhdGUtPnNjYWxl cl91c2Vycyk7CiAJCQkqc2NhbGVyX2lkID0gLTE7CiAJCX0KQEAgLTQ0MDcsNTEgKzQzNTgsMTEy IEBAIHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKAogCiAJCXNyY193ID4gU0tMX01BWF9TUkNfVyB8 fCBzcmNfaCA+IFNLTF9NQVhfU1JDX0ggfHwKIAkJZHN0X3cgPiBTS0xfTUFYX0RTVF9XIHx8IGRz dF9oID4gU0tMX01BWF9EU1RfSCkgewotCQlEUk1fREVCVUdfS01TKCIlczolZCBzY2FsZXJfdXNl ciBpbmRleCAldS4ldTogc3JjICV1eCV1IGRzdCAldXgldSAiCisJCURSTV9ERUJVR19LTVMoInNj YWxlcl91c2VyIGluZGV4ICV1LiV1OiBzcmMgJXV4JXUgZHN0ICV1eCV1ICIKIAkJCSJzaXplIGlz IG91dCBvZiBzY2FsZXIgcmFuZ2VcbiIsCi0JCQlpbnRlbF9wbGFuZSA/ICJQTEFORSIgOiAiQ1JU QyIsCi0JCQlpbnRlbF9wbGFuZSA/IGludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQgOiBpbnRlbF9j cnRjLT5iYXNlLmJhc2UuaWQsCi0JCQlpbnRlbF9jcnRjLT5waXBlLCBpZHgsIHNyY193LCBzcmNf aCwgZHN0X3csIGRzdF9oKTsKKwkJCWludGVsX2NydGMtPnBpcGUsIHNjYWxlcl91c2VyLCBzcmNf dywgc3JjX2gsIGRzdF93LCBkc3RfaCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAorCS8qIG1h cmsgdGhpcyBwbGFuZSBhcyBhIHNjYWxlciB1c2VyIGluIGNydGNfc3RhdGUgKi8KKwlzY2FsZXJf c3RhdGUtPnNjYWxlcl91c2VycyB8PSAoMSA8PCBzY2FsZXJfdXNlcik7CisJRFJNX0RFQlVHX0tN Uygic2NhbGVyX3VzZXIgaW5kZXggJXUuJXU6ICIKKwkJInN0YWdlZCBzY2FsaW5nIHJlcXVlc3Qg Zm9yICV1eCV1LT4ldXgldSBzY2FsZXJfdXNlcnMgPSAweCV4XG4iLAorCQlpbnRlbF9jcnRjLT5w aXBlLCBzY2FsZXJfdXNlciwgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2gsCisJCXNjYWxlcl9z dGF0ZS0+c2NhbGVyX3VzZXJzKTsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIHNrbF91cGRh dGVfc2NhbGVyX2NydGMgLSBTdGFnZXMgdXBkYXRlIHRvIHNjYWxlciBzdGF0ZSBmb3IgYSBnaXZl biBjcnRjLgorICoKKyAqIEBzdGF0ZTogY3J0YydzIHNjYWxlciBzdGF0ZQorICogQGZvcmNlX2Rl dGFjaDogd2hldGhlciB0byBmb3JjaWJseSBkaXNhYmxlIHNjYWxlcgorICoKKyAqIFJldHVybgor ICogICAgIDAgLSBzY2FsZXJfdXNhZ2UgdXBkYXRlZCBzdWNjZXNzZnVsbHkKKyAqICAgIGVycm9y IC0gcmVxdWVzdGVkIHNjYWxpbmcgY2Fubm90IGJlIHN1cHBvcnRlZCBvciBvdGhlciBlcnJvciBj b25kaXRpb24KKyAqLworaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnN0YXRlLCBpbnQgZm9yY2VfZGV0YWNoKQoreworCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CisJCSZzdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCisJRFJNX0RFQlVHX0tNUygiVXBkYXRpbmcgc2NhbGVyIGZvciBbQ1JUQzolaV0g c2NhbGVyX3VzZXIgaW5kZXggJXUuJXVcbiIsCisJCSAgICAgIGludGVsX2NydGMtPmJhc2UuYmFz ZS5pZCwgaW50ZWxfY3J0Yy0+cGlwZSwgU0tMX0NSVENfSU5ERVgpOworCisJcmV0dXJuIHNrbF91 cGRhdGVfc2NhbGVyKHN0YXRlLCBmb3JjZV9kZXRhY2gsIFNLTF9DUlRDX0lOREVYLAorCQkmc3Rh dGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQsIERSTV9ST1RBVEVfMCwKKwkJc3RhdGUtPnBpcGVf c3JjX3csIHN0YXRlLT5waXBlX3NyY19oLAorCQlhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSwgYWRq dXN0ZWRfbW9kZS0+aGRpc3BsYXkpOworfQorCisvKioKKyAqIHNrbF91cGRhdGVfc2NhbGVyX3Bs YW5lIC0gU3RhZ2VzIHVwZGF0ZSB0byBzY2FsZXIgc3RhdGUgZm9yIGEgZ2l2ZW4gcGxhbmUuCisg KgorICogQHN0YXRlOiBjcnRjJ3Mgc2NhbGVyIHN0YXRlCisgKiBAaW50ZWxfcGxhbmU6IGFmZmVj dGVkIHBsYW5lCisgKiBAcGxhbmVfc3RhdGU6IGF0b21pYyBwbGFuZSBzdGF0ZSB0byB1cGRhdGUK KyAqCisgKiBSZXR1cm4KKyAqICAgICAwIC0gc2NhbGVyX3VzYWdlIHVwZGF0ZWQgc3VjY2Vzc2Z1 bGx5CisgKiAgICBlcnJvciAtIHJlcXVlc3RlZCBzY2FsaW5nIGNhbm5vdCBiZSBzdXBwb3J0ZWQg b3Igb3RoZXIgZXJyb3IgY29uZGl0aW9uCisgKi8KK2ludCBza2xfdXBkYXRlX3NjYWxlcl9wbGFu ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lLAorCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCit7CisKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCWludCByZXQ7CisKKwlib29sIGZvcmNlX2Rl dGFjaCA9ICFmYiB8fCAhcGxhbmVfc3RhdGUtPnZpc2libGU7CisKKwlEUk1fREVCVUdfS01TKCJV cGRhdGluZyBzY2FsZXIgZm9yIFtQTEFORTolZF0gc2NhbGVyX3VzZXIgaW5kZXggJXUuJXVcbiIs CisJCSAgICAgIGludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQsIGludGVsX2NydGMtPnBpcGUsCisJ CSAgICAgIGRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUtPmJhc2UpKTsKKworCXJldCA9IHNr bF91cGRhdGVfc2NhbGVyKGNydGNfc3RhdGUsIGZvcmNlX2RldGFjaCwKKwkJCQlkcm1fcGxhbmVf aW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKKwkJCQkmcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCwK KwkJCQlwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwKKwkJCQlkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnNyYykgPj4gMTYsCisJCQkJZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ c3JjKSA+PiAxNiwKKwkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCksCisJCQkJ ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ZHN0KSk7CisKKwlpZiAocmV0IHx8IHBsYW5l X3N0YXRlLT5zY2FsZXJfaWQgPCAwKQorCQlyZXR1cm4gcmV0OworCiAJLyogY2hlY2sgY29sb3Jr ZXkgKi8KLQlpZiAoV0FSTl9PTihpbnRlbF9wbGFuZSAmJgotCQlpbnRlbF9wbGFuZS0+Y2tleS5m bGFncyAhPSBJOTE1X1NFVF9DT0xPUktFWV9OT05FKSkgewotCQlEUk1fREVCVUdfS01TKCJQTEFO RTolZCBzY2FsaW5nICV1eCV1LT4ldXgldSBub3QgYWxsb3dlZCB3aXRoIGNvbG9ya2V5IiwKLQkJ CWludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQsIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oKTsK KwlpZiAoV0FSTl9PTihpbnRlbF9wbGFuZS0+Y2tleS5mbGFncyAhPSBJOTE1X1NFVF9DT0xPUktF WV9OT05FKSkgeworCQlEUk1fREVCVUdfS01TKCJbUExBTkU6JWRdIHNjYWxpbmcgd2l0aCBjb2xv ciBrZXkgbm90IGFsbG93ZWQiLAorCQkJaW50ZWxfcGxhbmUtPmJhc2UuYmFzZS5pZCk7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIAogCS8qIENoZWNrIHNyYyBmb3JtYXQgKi8KLQlpZiAoaW50ZWxf cGxhbmUpIHsKLQkJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7Ci0JCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6Ci0JCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKLQkJY2FzZSBEUk1fRk9STUFU X1hSR0I4ODg4OgotCQljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Ci0JCWNhc2UgRFJNX0ZPUk1B VF9BUkdCODg4ODoKLQkJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgotCQljYXNlIERSTV9G T1JNQVRfWEJHUjIxMDEwMTA6Ci0JCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgotCQljYXNlIERSTV9G T1JNQVRfWVZZVToKLQkJY2FzZSBEUk1fRk9STUFUX1VZVlk6Ci0JCWNhc2UgRFJNX0ZPUk1BVF9W WVVZOgotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlEUk1fREVCVUdfS01TKCJQTEFORTolZCBG QjolZCB1bnN1cHBvcnRlZCBzY2FsaW5nIGZvcm1hdCAweCV4XG4iLAotCQkJCWludGVsX3BsYW5l LT5iYXNlLmJhc2UuaWQsIGZiLT5iYXNlLmlkLCBmYi0+cGl4ZWxfZm9ybWF0KTsKLQkJCXJldHVy biAtRUlOVkFMOwotCQl9CisJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1f Rk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CisJY2FzZSBEUk1fRk9S TUFUX1hSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKKwljYXNlIERSTV9GT1JN QVRfQVJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgorCWNhc2UgRFJNX0ZP Uk1BVF9YQkdSMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfWVVZVjoKKwljYXNlIERSTV9GT1JN QVRfWVZZVToKKwljYXNlIERSTV9GT1JNQVRfVVlWWToKKwljYXNlIERSTV9GT1JNQVRfVllVWToK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVkXSBGQjolZCB1 bnN1cHBvcnRlZCBzY2FsaW5nIGZvcm1hdCAweCV4XG4iLAorCQkJaW50ZWxfcGxhbmUtPmJhc2Uu YmFzZS5pZCwgZmItPmJhc2UuaWQsIGZiLT5waXhlbF9mb3JtYXQpOworCQlyZXR1cm4gLUVJTlZB TDsKIAl9CiAKLQkvKiBtYXJrIHRoaXMgcGxhbmUgYXMgYSBzY2FsZXIgdXNlciBpbiBjcnRjX3N0 YXRlICovCi0Jc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMgfD0gKDEgPDwgaWR4KTsKLQlEUk1f REVCVUdfS01TKCIlczolZCBzdGFnZWQgc2NhbGluZyByZXF1ZXN0IGZvciAldXgldS0+JXV4JXUg IgotCQkiY3J0Y19zdGF0ZSA9ICVwIHNjYWxlcl91c2VycyA9IDB4JXhcbiIsCi0JCWludGVsX3Bs YW5lID8gIlBMQU5FIiA6ICJDUlRDIiwKLQkJaW50ZWxfcGxhbmUgPyBpbnRlbF9wbGFuZS0+YmFz ZS5iYXNlLmlkIDogaW50ZWxfY3J0Yy0+YmFzZS5iYXNlLmlkLAotCQlzcmNfdywgc3JjX2gsIGRz dF93LCBkc3RfaCwgY3J0Y19zdGF0ZSwgc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMpOwogCXJl dHVybiAwOwogfQogCkBAIC00NDY2LDcgKzQ0NzgsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3Bm aXRfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBpbnQgZW5hYmxlKQogCURSTV9ERUJV R19LTVMoImZvciBjcnRjX3N0YXRlID0gJXBcbiIsIGNydGMtPmNvbmZpZyk7CiAKIAkvKiBUbyB1 cGRhdGUgcGZpdCwgZmlyc3QgdXBkYXRlIHNjYWxlciBzdGF0ZSAqLwotCXNrbF91cGRhdGVfc2Nh bGVyX3VzZXJzKGNydGMsIGNydGMtPmNvbmZpZywgTlVMTCwgTlVMTCwgIWVuYWJsZSk7CisJc2ts X3VwZGF0ZV9zY2FsZXJfY3J0YyhjcnRjLT5jb25maWcsICFlbmFibGUpOwogCWludGVsX2F0b21p Y19zZXR1cF9zY2FsZXJzKGNydGMtPmJhc2UuZGV2LCBjcnRjLCBjcnRjLT5jb25maWcpOwogCXNr bF9kZXRhY2hfc2NhbGVycyhjcnRjKTsKIAlpZiAoIWVuYWJsZSkKQEAgLTEzNjU5LDggKzEzNjcx LDkgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAl9CiAKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewotCQlyZXQgPSBza2xfdXBk YXRlX3NjYWxlcl91c2VycyhpbnRlbF9jcnRjLCBjcnRjX3N0YXRlLAotCQkJdG9faW50ZWxfcGxh bmUocGxhbmUpLCBzdGF0ZSwgMCk7CisJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKGNy dGNfc3RhdGUsCisJCQkJCSAgICAgIHRvX2ludGVsX3BsYW5lKHBsYW5lKSwKKwkJCQkJICAgICAg c3RhdGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwppbmRleCBmNTJlZWYxMzgyNDcuLjYxNDFhNzAyYmEzNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCkBAIC0xMzc3LDcgKzEzNzcsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkgewogCQkJaW50IHJldDsKLQkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKGlu dGVsX2NydGMsIHBpcGVfY29uZmlnLCBOVUxMLCBOVUxMLCAwKTsKKwkJCXJldCA9IHNrbF91cGRh dGVfc2NhbGVyX2NydGMocGlwZV9jb25maWcsIDApOwogCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4g cmV0OwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDAyYjE4YTE3MzQ3Mi4uMjQz NmFmOWQyNjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMjYzLDcgKzI2Myw3IEBA IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7CiAJICogcGxhbmUgcmVxdWlyaW5nIGEgc2NhbGVy OgogCSAqICAgLSBEdXJpbmcgY2hlY2tfcGxhbmUsIGl0cyBiaXQgaXMgc2V0IGluCiAJICogICAg IGNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJfdXNlcnMgYnkgY2FsbGluZyBoZWxwZXIg ZnVuY3Rpb24KLQkgKiAgICAgdXBkYXRlX3NjYWxlcl91c2Vycy4KKwkgKiAgICAgdXBkYXRlX3Nj YWxlcl9wbGFuZS4KIAkgKiAgIC0gc2NhbGVyX2lkIGluZGljYXRlcyB0aGUgc2NhbGVyIGl0IGdv dCBhc3NpZ25lZC4KIAkgKgogCSAqIHBsYW5lIGRvZXNuJ3QgcmVxdWlyZSBhIHNjYWxlcjoKQEAg LTI3MSw3ICsyNzEsNyBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewogCSAqICAgICBnb3Qg ZGlzYWJsZWQuCiAJICogICAtIER1cmluZyBjaGVja19wbGFuZSwgY29ycmVzcG9uZGluZyBiaXQg aXMgcmVzZXQgaW4KIAkgKiAgICAgY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl91c2Vy cyBieSBjYWxsaW5nIGhlbHBlciBmdW5jdGlvbgotCSAqICAgICB1cGRhdGVfc2NhbGVyX3VzZXJz LgorCSAqICAgICB1cGRhdGVfc2NhbGVyX3BsYW5lLgogCSAqLwogCWludCBzY2FsZXJfaWQ7CiB9 OwpAQCAtMTE0OCw5ICsxMTQ4LDExIEBAIHZvaWQgaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmln KHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogdm9pZCBpbnRlbF9jcnRjX3dhaXRfZm9y X3BlbmRpbmdfZmxpcHMoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHZvaWQgaW50ZWxfbW9kZXNl dF9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp Owogdm9pZCBza2xfZGV0YWNoX3NjYWxlcnMoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMp OwotaW50IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lLAotCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUsIGludCBmb3JjZV9kZXRhY2gpOworaW50IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFu ZSAqaW50ZWxfcGxhbmUsCisJCQkgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSk7CisKK2ludCBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLCBpbnQgZm9yY2VfZGV0YWNoKTsKIGludCBza2xfbWF4X3NjYWxlKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSk7CiAKIHVuc2lnbmVkIGxvbmcgaW50ZWxfcGxhbmVfb2JqX29mZnNldChzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCAw NDM0Y2JlMTYzNGIuLmY1NzI2OGJkZTlhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRl LmMKQEAgLTk0NCw4ICs5NDQsNyBAQCBmaW5pc2g6CiAJfQogCiAJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkpIHsKLQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoaW50ZWxfY3J0 YywgY3J0Y19zdGF0ZSwgaW50ZWxfcGxhbmUsCi0JCQlzdGF0ZSwgMCk7CisJCXJldCA9IHNrbF91 cGRhdGVfc2NhbGVyX3BsYW5lKGNydGNfc3RhdGUsIGludGVsX3BsYW5lLCBzdGF0ZSk7CiAJCWlm IChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==