From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v3 08/14] drm/i915: Track full cdclk state for the logical and actual cdclk frequencies Date: Fri, 20 Jan 2017 20:21:59 +0200 Message-ID: <20170120182205.8141-9-ville.syrjala@linux.intel.com> References: <20170120182205.8141-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 358D56EC5F for ; Fri, 20 Jan 2017 18:22:37 +0000 (UTC) In-Reply-To: <20170120182205.8141-1-ville.syrjala@linux.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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZSBjdXJyZW50IGRldl9jZGNsayB2cy4gY2RjbGsgdnMuIGF0b21pY19jZGNsa19mcmVxIGlzIHF1 aXRlIGEgbWVzcy4KU28gaGVyZSBJJ20gaW50cm9kdWNpbmcgdGhlICJhY3R1YWwiIGFuZCAibG9n aWNhbCIgbmFtaW5nIGZvciBvdXIKY2RjbGsgc3RhdGUuICJhY3R1YWwiIGlzIHdoYXQgd2UnbGwg YmFzaCBpbnRvIHRoZSBoYXJkd2FyZSBhbmQgImxvZ2ljYWwiCmlzIHdoYXQgZXZlcnlvbmUgc2hv dWxkIHVzZSBmb3Igc3RhdGUgY29tcHV0YWlvbi9jaGVja2luZyBhbmQgd2hhdG5vdC4KV2UnbGwg dHJhY2sgYm90aCB1c2luZyB0aGUgaW50ZWxfY2RjbGtfc3RhdGUgYXMgYm90aCB3aWxsIG5lZWQg b3RoZXIKZGlmZmVyaW5nIHBhcmFtZXRlcnMgdGhhbiBqdXN0IHRoZSBhY3R1YWwgY2RjbGsgZnJl cXVlbmN5LgoKV2hpbGUgZG9pbmcgdGhhdCB3ZSBjYW4gYXQgdGhlIHNhbWUgdGltZSB1bmlmeSB0 aGUgYXBwZWFyYW5jZSBvZiB0aGUKLm1vZGVzZXRfY2FsY19jZGNsaygpIGltcGxlbWVudGF0aW9u cyBhIGxpdHRsZSBiaXQuCgp2MjogQ29tbWl0IGRldl9wcml2LT5jZGNsay5hY3R1YWwgc2luY2Ug dGhhdCBhbHJlYWR5IGhhcyB0aGUKICAgIG5ldyBzdGF0ZSBieSB0aGUgdGltZSAubW9kZXNldF9j b21taXRfY2RjbGsoKSBpcyBjYWxsZWQuCnYzOiBzL2xvY2ljYWwvbG9naWNhbC8gYW5kIGltcHJv dmUgdGhlIGRvY3MgYSBiaXQKClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUg T2xpdmVpcmEgPGNvbnNlbHZhbjJAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICB8ICAyMCArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NkY2xrLmMgICB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDM5ICsrKysrKy0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyMiArKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jICAgICAgfCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlv bnMoKyksIDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGMxY2Nj OWM0OTAxOS4uNDFiZGU4MGQ1ODIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIxNjUs MTggKzIxNjUsMjYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXVuc2lnbmVkIGludCBz a2xfcHJlZmVycmVkX3Zjb19mcmVxOwogCXVuc2lnbmVkIGludCBtYXhfY2RjbGtfZnJlcTsKIAot CS8qCi0JICogRm9yIHJlYWRpbmcgaG9sZGluZyBhbnkgY3J0YyBsb2NrIGlzIHN1ZmZpY2llbnQs Ci0JICogZm9yIHdyaXRpbmcgbXVzdCBob2xkIGFsbCBvZiB0aGVtLgotCSAqLwotCXVuc2lnbmVk IGludCBhdG9taWNfY2RjbGtfZnJlcTsKLQogCXVuc2lnbmVkIGludCBtYXhfZG90Y2xrX2ZyZXE7 CiAJdW5zaWduZWQgaW50IHJhd2Nsa19mcmVxOwogCXVuc2lnbmVkIGludCBocGxsX2ZyZXE7CiAJ dW5zaWduZWQgaW50IGN6Y2xrX2ZyZXE7CiAKIAlzdHJ1Y3QgeworCQkvKgorCQkgKiBUaGUgY3Vy cmVudCBsb2dpY2FsIGNkY2xrIHN0YXRlLgorCQkgKiBTZWUgaW50ZWxfYXRvbWljX3N0YXRlLmNk Y2xrLmxvZ2ljYWwKKwkJICoKKwkJICogRm9yIHJlYWRpbmcgaG9sZGluZyBhbnkgY3J0YyBsb2Nr IGlzIHN1ZmZpY2llbnQsCisJCSAqIGZvciB3cml0aW5nIG11c3QgaG9sZCBhbGwgb2YgdGhlbS4K KwkJICovCisJCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBsb2dpY2FsOworCQkvKgorCQkgKiBU aGUgY3VycmVudCBhY3R1YWwgY2RjbGsgc3RhdGUuCisJCSAqIFNlZSBpbnRlbF9hdG9taWNfc3Rh dGUuY2RjbGsuYWN0dWFsCisJCSAqLworCQlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgYWN0dWFs OworCQkvKiBUaGUgY3VycmVudCBoYXJkd2FyZSBjZGNsayBzdGF0ZSAqLwogCQlzdHJ1Y3QgaW50 ZWxfY2RjbGtfc3RhdGUgaHc7CiAJfSBjZGNsazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xr LmMKaW5kZXggNGMxNDg5MWYwNzZmLi5hZDU1YzY0NmYzNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY2RjbGsuYwpAQCAtMTQzNiwxMiArMTQzNiwyNiBAQCBzdGF0aWMgaW50IHZsdl9tb2Rlc2V0 X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWludCBtYXhfcGl4 Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKmludGVsX3N0YXRlID0KIAkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKKwlp bnQgY2RjbGs7CiAKLQlpbnRlbF9zdGF0ZS0+Y2RjbGsgPSBpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xr ID0KLQkJdmx2X2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhjbGspOworCWNkY2xrID0gdmx2 X2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhjbGspOwogCi0JaWYgKCFpbnRlbF9zdGF0ZS0+ YWN0aXZlX2NydGNzKQotCQlpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrID0gdmx2X2NhbGNfY2RjbGso ZGV2X3ByaXYsIDApOworCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgewor CQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVk IGtIeilcbiIsCisJCQkgICAgICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2RjbGsg PSBjZGNsazsKKworCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgeworCQljZGNsayA9 IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2LCAwKTsKKworCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0 dWFsLmNkY2xrID0gY2RjbGs7CisJfSBlbHNlIHsKKwkJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVh bCA9CisJCQlpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbDsKKwl9CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTE0NTAsOSArMTQ2NCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9tb2Rlc2V0X2NvbW1pdF9jZGNs ayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvbGRfc3RhdGUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xkX2lu dGVsX3N0YXRlID0KLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSk7Ci0JdW5zaWdu ZWQgaW50IHJlcV9jZGNsayA9IG9sZF9pbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrOworCXVuc2lnbmVk IGludCByZXFfY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLmNkY2xrOwogCiAJLyoKIAkg KiBGSVhNRTogV2UgY2FuIGVuZCB1cCBoZXJlIHdpdGggYWxsIHBvd2VyIGRvbWFpbnMgb2ZmLCB5 ZXQKQEAgLTE0OTQsOSArMTUwNiwxNiBAQCBzdGF0aWMgaW50IGJkd19tb2Rlc2V0X2NhbGNfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CiAKLQlpbnRlbF9zdGF0ZS0+Y2RjbGsgPSBpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrID0gY2RjbGs7 Ci0JaWYgKCFpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKQotCQlpbnRlbF9zdGF0ZS0+ZGV2X2Nk Y2xrID0gYmR3X2NhbGNfY2RjbGsoMCk7CisJaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2Rj bGsgPSBjZGNsazsKKworCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgeworCQljZGNs ayA9IGJkd19jYWxjX2NkY2xrKDApOworCisJCWludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwuY2Rj bGsgPSBjZGNsazsKKwl9IGVsc2UgeworCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsID0KKwkJ CWludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsOworCX0KIAogCXJldHVybiAwOwogfQpAQCAtMTUw NCw5ICsxNTIzLDcgQEAgc3RhdGljIGludCBiZHdfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHN0YXRpYyB2b2lkIGJkd19tb2Rlc2V0X2NvbW1pdF9j ZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBvbGRfc3RhdGUtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpvbGRfaW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3N0YXRlKTsK LQl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gb2xkX2ludGVsX3N0YXRlLT5kZXZfY2RjbGs7CisJ dW5zaWduZWQgaW50IHJlcV9jZGNsayA9IHRvX2k5MTUoZGV2KS0+Y2RjbGsuYWN0dWFsLmNkY2xr OwogCiAJYmR3X3NldF9jZGNsayhkZXYsIHJlcV9jZGNsayk7CiB9CkBAIC0xNTE2LDggKzE1MzMs MTEgQEAgc3RhdGljIGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9 IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKIAljb25zdCBpbnQgbWF4X3BpeGNsayA9 IGludGVsX21heF9waXhlbF9yYXRlKHN0YXRlKTsKLQlpbnQgdmNvID0gaW50ZWxfc3RhdGUtPmNk Y2xrX3BsbF92Y287Ci0JaW50IGNkY2xrOworCWludCBjZGNsaywgdmNvOworCisJdmNvID0gaW50 ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwudmNvOworCWlmICghdmNvKQorCQl2Y28gPSBkZXZfcHJp di0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcTsKIAogCS8qCiAJICogRklYTUUgc2hvdWxkIGFsc28g YWNjb3VudCBmb3IgcGxhbmUgcmF0aW8KQEAgLTE1MjUsMTkgKzE1NDUsMjQgQEAgc3RhdGljIGlu dCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK IAkgKi8KIAljZGNsayA9IHNrbF9jYWxjX2NkY2xrKG1heF9waXhjbGssIHZjbyk7CiAKLQkvKgot CSAqIEZJWE1FIG1vdmUgdGhlIGNkY2xrIGNhY2x1bGF0aW9uIHRvCi0JICogY29tcHV0ZV9jb25m aWcoKSBzbyB3ZSBjYW4gZmFpbCBncmFjZWd1bGx5LgotCSAqLwogCWlmIChjZGNsayA+IGRldl9w cml2LT5tYXhfY2RjbGtfZnJlcSkgewotCQlEUk1fRVJST1IoInJlcXVlc3RlZCBjZGNsayAoJWQg a0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKLQkJCSAgY2RjbGssIGRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSk7Ci0JCWNkY2xrID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxOworCQlEUk1f REVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVkIGtIeilc biIsCisJCQkgICAgICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKKwkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JaW50ZWxfc3RhdGUtPmNkY2xrID0gaW50ZWxfc3RhdGUtPmRldl9j ZGNsayA9IGNkY2xrOwotCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykKLQkJaW50ZWxf c3RhdGUtPmRldl9jZGNsayA9IHNrbF9jYWxjX2NkY2xrKDAsIHZjbyk7CisJaW50ZWxfc3RhdGUt PmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOworCWludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLmNk Y2xrID0gY2RjbGs7CisKKwlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpIHsKKwkJY2Rj bGsgPSBza2xfY2FsY19jZGNsaygwLCB2Y28pOworCisJCWludGVsX3N0YXRlLT5jZGNsay5hY3R1 YWwudmNvID0gdmNvOworCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2RjbGs7 CisJfSBlbHNlIHsKKwkJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCA9CisJCQlpbnRlbF9zdGF0 ZS0+Y2RjbGsubG9naWNhbDsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1NDUsMTAgKzE1NzAs OCBAQCBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQogc3RhdGljIHZvaWQgc2tsX21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShvbGRfc3RhdGUtPmRldik7Ci0Jc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3N0 YXRlKTsKLQl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gaW50ZWxfc3RhdGUtPmRldl9jZGNsazsK LQl1bnNpZ25lZCBpbnQgcmVxX3ZjbyA9IGludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvOworCXVu c2lnbmVkIGludCByZXFfY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLmNkY2xrOworCXVu c2lnbmVkIGludCByZXFfdmNvID0gZGV2X3ByaXYtPmNkY2xrLmFjdHVhbC52Y287CiAKIAlza2xf c2V0X2NkY2xrKGRldl9wcml2LCByZXFfY2RjbGssIHJlcV92Y28pOwogfQpAQCAtMTU1OSwyMiAr MTU4MiwzOSBAQCBzdGF0aWMgaW50IGJ4dF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogCWludCBtYXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3Jh dGUoc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KIAkJ dG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKLQlpbnQgY2RjbGs7CisJaW50IGNkY2xrLCB2 Y287CiAKLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCisJaWYgKElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKSB7CiAJCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGsobWF4X3BpeGNsayk7Ci0JZWxz ZQorCQl2Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOworCX0gZWxzZSB7CiAJ CWNkY2xrID0gYnh0X2NhbGNfY2RjbGsobWF4X3BpeGNsayk7CisJCXZjbyA9IGJ4dF9kZV9wbGxf dmNvKGRldl9wcml2LCBjZGNsayk7CisJfQogCi0JaW50ZWxfc3RhdGUtPmNkY2xrID0gaW50ZWxf c3RhdGUtPmRldl9jZGNsayA9IGNkY2xrOworCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2Rj bGtfZnJlcSkgeworCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhj ZWVkcyBtYXggKCVkIGtIeilcbiIsCisJCQkgICAgICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNs a19mcmVxKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaW50ZWxfc3RhdGUtPmNkY2xrLmxv Z2ljYWwudmNvID0gdmNvOworCWludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrID0gY2Rj bGs7CiAKIAlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpIHsKLQkJaWYgKElTX0dFTUlO SUxBS0UoZGV2X3ByaXYpKQorCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKIAkJCWNk Y2xrID0gZ2xrX2NhbGNfY2RjbGsoMCk7Ci0JCWVsc2UKKwkJCXZjbyA9IGdsa19kZV9wbGxfdmNv KGRldl9wcml2LCBjZGNsayk7CisJCX0gZWxzZSB7CiAJCQljZGNsayA9IGJ4dF9jYWxjX2NkY2xr KDApOworCQkJdmNvID0gYnh0X2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKKwkJfQogCi0J CWludGVsX3N0YXRlLT5kZXZfY2RjbGsgPSBjZGNsazsKKwkJaW50ZWxfc3RhdGUtPmNkY2xrLmFj dHVhbC52Y28gPSB2Y287CisJCWludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwuY2RjbGsgPSBjZGNs azsKKwl9IGVsc2UgeworCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsID0KKwkJCWludGVsX3N0 YXRlLT5jZGNsay5sb2dpY2FsOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTU4MywxNSArMTYyMyw4 IEBAIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCiBzdGF0aWMgdm9pZCBieHRfbW9kZXNldF9jb21taXRfY2RjbGsoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9sZF9zdGF0ZS0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xk X3N0YXRlKTsKLQl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gb2xkX2ludGVsX3N0YXRlLT5kZXZf Y2RjbGs7Ci0JdW5zaWduZWQgaW50IHJlcV92Y287Ci0KLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZf cHJpdikpCi0JCXJlcV92Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgcmVxX2NkY2xrKTsK LQllbHNlCi0JCXJlcV92Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgcmVxX2NkY2xrKTsK Kwl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gZGV2X3ByaXYtPmNkY2xrLmFjdHVhbC5jZGNsazsK Kwl1bnNpZ25lZCBpbnQgcmVxX3ZjbyA9IGRldl9wcml2LT5jZGNsay5hY3R1YWwudmNvOwogCiAJ Ynh0X3NldF9jZGNsayhkZXZfcHJpdiwgcmVxX2NkY2xrLCByZXFfdmNvKTsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAyOWMwN2E3MmMxMGMuLjYzMzNmMWE3NDE2NiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTIzNzAsNiArMTIzNzAsOCBA QCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKIAogCWludGVsX3N0YXRlLT5tb2Rlc2V0ID0gdHJ1ZTsKIAlpbnRlbF9zdGF0ZS0+ YWN0aXZlX2NydGNzID0gZGV2X3ByaXYtPmFjdGl2ZV9jcnRjczsKKwlpbnRlbF9zdGF0ZS0+Y2Rj bGsubG9naWNhbCA9IGRldl9wcml2LT5jZGNsay5sb2dpY2FsOworCWludGVsX3N0YXRlLT5jZGNs ay5hY3R1YWwgPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsOwogCiAJZm9yX2VhY2hfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQlpZiAoY3J0Y19zdGF0ZS0+YWN0 aXZlKQpAQCAtMTIzODksMzggKzEyMzkxLDM1IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9j aGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCSAqIGFkanVzdGVkX21vZGUg Yml0cyBpbiB0aGUgY3J0YyBkaXJlY3RseS4KIAkgKi8KIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXku bW9kZXNldF9jYWxjX2NkY2xrKSB7Ci0JCWlmICghaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28p Ci0JCQlpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyA9IGRldl9wcml2LT5jZGNsay5ody52Y287 Ci0JCWlmICghaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28pCi0JCQlpbnRlbF9zdGF0ZS0+Y2Rj bGtfcGxsX3ZjbyA9IGRldl9wcml2LT5za2xfcHJlZmVycmVkX3Zjb19mcmVxOwotCiAJCXJldCA9 IGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayhzdGF0ZSk7CiAJCWlmIChyZXQg PCAwKQogCQkJcmV0dXJuIHJldDsKIAogCQkvKgotCQkgKiBXcml0ZXMgdG8gZGV2X3ByaXYtPmF0 b21pY19jZGNsa19mcmVxIG11c3QgcHJvdGVjdGVkIGJ5CisJCSAqIFdyaXRlcyB0byBkZXZfcHJp di0+Y2RjbGsubG9naWNhbCBtdXN0IHByb3RlY3RlZCBieQogCQkgKiBob2xkaW5nIGFsbCB0aGUg Y3J0YyBsb2NrcywgZXZlbiBpZiB3ZSBkb24ndCBlbmQgdXAKIAkJICogdG91Y2hpbmcgdGhlIGhh cmR3YXJlCiAJCSAqLwotCQlpZiAoaW50ZWxfc3RhdGUtPmNkY2xrICE9IGRldl9wcml2LT5hdG9t aWNfY2RjbGtfZnJlcSkgeworCQlpZiAoIWludGVsX2NkY2xrX3N0YXRlX2NvbXBhcmUoJmRldl9w cml2LT5jZGNsay5sb2dpY2FsLAorCQkJCQkgICAgICAgJmludGVsX3N0YXRlLT5jZGNsay5sb2dp Y2FsKSkgewogCQkJcmV0ID0gaW50ZWxfbG9ja19hbGxfcGlwZXMoc3RhdGUpOwogCQkJaWYgKHJl dCA8IDApCiAJCQkJcmV0dXJuIHJldDsKIAkJfQogCiAJCS8qIEFsbCBwaXBlcyBtdXN0IGJlIHN3 aXRjaGVkIG9mZiB3aGlsZSB3ZSBjaGFuZ2UgdGhlIGNkY2xrLiAqLwotCQlpZiAoaW50ZWxfc3Rh dGUtPmRldl9jZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgfHwKLQkJICAgIGludGVs X3N0YXRlLT5jZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5jZGNsay5ody52Y28pIHsKKwkJaWYg KCFpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKCZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLAorCQkJ CQkgICAgICAgJmludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwpKSB7CiAJCQlyZXQgPSBpbnRlbF9t b2Rlc2V0X2FsbF9waXBlcyhzdGF0ZSk7CiAJCQlpZiAocmV0IDwgMCkKIAkJCQlyZXR1cm4gcmV0 OwogCQl9CiAKLQkJRFJNX0RFQlVHX0tNUygiTmV3IGNkY2xrIGNhbGN1bGF0ZWQgdG8gYmUgYXRv bWljICV1LCBhY3R1YWwgJXVcbiIsCi0JCQkgICAgICBpbnRlbF9zdGF0ZS0+Y2RjbGssIGludGVs X3N0YXRlLT5kZXZfY2RjbGspOworCQlEUk1fREVCVUdfS01TKCJOZXcgY2RjbGsgY2FsY3VsYXRl ZCB0byBiZSBsb2dpY2FsICV1IGtIeiwgYWN0dWFsICV1IGtIelxuIiwKKwkJCSAgICAgIGludGVs X3N0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrLAorCQkJICAgICAgaW50ZWxfc3RhdGUtPmNkY2xr LmFjdHVhbC5jZGNsayk7CiAJfSBlbHNlIHsKLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRl KS0+Y2RjbGsgPSBkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXE7CisJCXRvX2ludGVsX2F0b21p Y19zdGF0ZShzdGF0ZSktPmNkY2xrLmxvZ2ljYWwgPSBkZXZfcHJpdi0+Y2RjbGsubG9naWNhbDsK IAl9CiAKIAlpbnRlbF9tb2Rlc2V0X2NsZWFyX3BsbHMoc3RhdGUpOwpAQCAtMTI1MjMsNyArMTI1 MjIsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9IGVsc2UgewotCQlpbnRlbF9zdGF0 ZS0+Y2RjbGsgPSBkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXE7CisJCWludGVsX3N0YXRlLT5j ZGNsay5sb2dpY2FsID0gZGV2X3ByaXYtPmNkY2xrLmxvZ2ljYWw7CiAJfQogCiAJcmV0ID0gZHJt X2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKGRldiwgc3RhdGUpOwpAQCAtMTI4MjgsOCArMTI4 MjcsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogCQlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21v ZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwogCiAJCWlmIChkZXZfcHJpdi0+ZGlzcGxh eS5tb2Rlc2V0X2NvbW1pdF9jZGNsayAmJgotCQkgICAgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsg IT0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrIHx8Ci0JCSAgICAgaW50ZWxfc3RhdGUtPmNkY2xr X3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrLmh3LnZjbykpCisJCSAgICAhaW50ZWxfY2RjbGtf c3RhdGVfY29tcGFyZSgmZGV2X3ByaXYtPmNkY2xrLmh3LAorCQkJCQkgICAgICAgJmRldl9wcml2 LT5jZGNsay5hY3R1YWwpKQogCQkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRfY2Rj bGsoc3RhdGUpOwogCiAJCS8qCkBAIC0xMzAxMCw3ICsxMzAwOSw4IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQltZW1jcHkoZGV2X3By aXYtPm1pbl9waXhjbGssIGludGVsX3N0YXRlLT5taW5fcGl4Y2xrLAogCQkgICAgICAgc2l6ZW9m KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrKSk7CiAJCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgPSBp bnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzOwotCQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEg PSBpbnRlbF9zdGF0ZS0+Y2RjbGs7CisJCWRldl9wcml2LT5jZGNsay5sb2dpY2FsID0gaW50ZWxf c3RhdGUtPmNkY2xrLmxvZ2ljYWw7CisJCWRldl9wcml2LT5jZGNsay5hY3R1YWwgPSBpbnRlbF9z dGF0ZS0+Y2RjbGsuYWN0dWFsOwogCX0KIAogCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsK QEAgLTEzMjQ4LDcgKzEzMjQ4LDcgQEAgc2tsX21heF9zY2FsZShzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUKIAkJcmV0dXJu IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAogCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRl LT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKLQljZGNsayA9IHRvX2ludGVsX2F0b21p Y19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKS0+Y2RjbGs7CisJY2RjbGsgPSB0b19pbnRl bF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2Rj bGs7CiAKIAlpZiAoV0FSTl9PTl9PTkNFKCFjcnRjX2Nsb2NrIHx8IGNkY2xrIDwgY3J0Y19jbG9j aykpCiAJCXJldHVybiBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CkBAIC0xNDgwNSw4ICsx NDgwNSw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwog CiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKLQotCWRldl9wcml2LT5hdG9taWNfY2Rj bGtfZnJlcSA9IGRldl9wcml2LT5jZGNsay5ody5jZGNsazsKKwlkZXZfcHJpdi0+Y2RjbGsubG9n aWNhbCA9IGRldl9wcml2LT5jZGNsay5hY3R1YWwgPSBkZXZfcHJpdi0+Y2RjbGsuaHc7CiAKIAlp bnRlbF9pbml0X2Nsb2NrX2dhdGluZyhkZXZfcHJpdik7CiB9CkBAIC0xNDk3OSw3ICsxNDk3OCw3 IEBAIGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWlu dGVsX3VwZGF0ZV9jemNsayhkZXZfcHJpdik7CiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2 KTsKLQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2Rj bGs7CisJZGV2X3ByaXYtPmNkY2xrLmxvZ2ljYWwgPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsID0g ZGV2X3ByaXYtPmNkY2xrLmh3OwogCiAJaW50ZWxfc2hhcmVkX2RwbGxfaW5pdChkZXYpOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBiNDliMzIyMWNlYWQuLmQzMGVmOTJiMjllYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCBpbnRlbF9kcF9jb21w dXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCWJyZWFrOwogCQl9 CiAKLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHBpcGVfY29uZmlnLT5iYXNlLnN0YXRlKS0+Y2Rj bGtfcGxsX3ZjbyA9IHZjbzsKKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHBpcGVfY29uZmlnLT5i YXNlLnN0YXRlKS0+Y2RjbGsubG9naWNhbC52Y28gPSB2Y287CiAJfQogCiAJaWYgKCFIQVNfRERJ KGRldl9wcml2KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzU3M2MyNGZhZWMzLi5h OGYwMWQ0NGJiZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0zMzMsMTMgKzMzMywy MCBAQCBzdHJ1Y3QgZHBsbCB7CiBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKIAlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSBiYXNlOwogCi0JdW5zaWduZWQgaW50IGNkY2xrOworCXN0cnVjdCB7 CisJCS8qCisJCSAqIExvZ2ljYWwgc3RhdGUgb2YgY2RjbGsgKHVzZWQgZm9yIGFsbCBzY2FsaW5n LCB3YXRlcm1hcmssCisJCSAqIGV0Yy4gY2FsY3VsYXRpb25zIGFuZCBjaGVja3MpLiBUaGlzIGlz IGNvbXB1dGVkIGFzIGlmIGFsbAorCQkgKiBlbmFibGVkIGNydGNzIHdlcmUgYWN0aXZlLgorCQkg Ki8KKwkJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGxvZ2ljYWw7CiAKLQkvKgotCSAqIENhbGN1 bGF0ZWQgZGV2aWNlIGNkY2xrLCBjYW4gYmUgZGlmZmVyZW50IGZyb20gY2RjbGsKLQkgKiBvbmx5 IHdoZW4gYWxsIGNydGMncyBhcmUgRFBNUyBvZmYuCi0JICovCi0JdW5zaWduZWQgaW50IGRldl9j ZGNsazsKKwkJLyoKKwkJICogQWN0dWFsIHN0YXRlIG9mIGNkY2xrLCBjYW4gYmUgZGlmZmVyZW50 IGZyb20gdGhlIGxvZ2ljYWwKKwkJICogc3RhdGUgb25seSB3aGVuIGFsbCBjcnRjJ3MgYXJlIERQ TVMgb2ZmLgorCQkgKi8KKwkJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGFjdHVhbDsKKwl9IGNk Y2xrOwogCiAJYm9vbCBkcGxsX3NldCwgbW9kZXNldDsKIApAQCAtMzU2LDkgKzM2Myw2IEBAIHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewogCXVuc2lnbmVkIGludCBhY3RpdmVfY3J0Y3M7CiAJ dW5zaWduZWQgaW50IG1pbl9waXhjbGtbSTkxNV9NQVhfUElQRVNdOwogCi0JLyogU0tML0tCTCBP bmx5ICovCi0JdW5zaWduZWQgaW50IGNkY2xrX3BsbF92Y287Ci0KIAlzdHJ1Y3QgaW50ZWxfc2hh cmVkX2RwbGxfc3RhdGUgc2hhcmVkX2RwbGxbSTkxNV9OVU1fUExMU107CiAKIAkvKgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKaW5kZXggOTQ4MTk0MzU2NDFjLi5mNTY4ZWIxNzFhZDQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwpAQCAtMjA5NSw3ICsyMDk1LDcgQEAgaHN3X2NvbXB1dGVfbGluZXRp bWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIAkJcmV0dXJuIDA7 CiAJaWYgKFdBUk5fT04oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9PSAwKSkKIAkJcmV0dXJu IDA7Ci0JaWYgKFdBUk5fT04oaW50ZWxfc3RhdGUtPmNkY2xrID09IDApKQorCWlmIChXQVJOX09O KGludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrID09IDApKQogCQlyZXR1cm4gMDsKIAog CS8qIFRoZSBXTSBhcmUgY29tcHV0ZWQgd2l0aCBiYXNlIG9uIGhvdyBsb25nIGl0IHRha2VzIHRv IGZpbGwgYSBzaW5nbGUKQEAgLTIxMDQsNyArMjEwNCw3IEBAIGhzd19jb21wdXRlX2xpbmV0aW1l X3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJbGluZXRpbWUgPSBE SVZfUk9VTkRfQ0xPU0VTVChhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbCAqIDEwMDAgKiA4LAog CQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayk7CiAJaXBzX2xpbmV0aW1lID0gRElW X1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWwgKiAxMDAwICogOCwKLQkJ CQkJIGludGVsX3N0YXRlLT5jZGNsayk7CisJCQkJCSBpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNh bC5jZGNsayk7CiAKIAlyZXR1cm4gUElQRV9XTV9MSU5FVElNRV9JUFNfTElORVRJTUUoaXBzX2xp bmV0aW1lKSB8CiAJICAgICAgIFBJUEVfV01fTElORVRJTUVfVElNRShsaW5ldGltZSk7Ci0tIAoy LjEwLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=