From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 02/31] drm/i915: Move IPS related stuff to intel_ips.c Date: Thu, 5 Nov 2015 10:49:54 -0800 Message-ID: <1446749423-4789-3-git-send-email-rodrigo.vivi@intel.com> References: <1446749423-4789-1-git-send-email-rodrigo.vivi@intel.com> 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 DA45A6E20E for ; Thu, 5 Nov 2015 10:49:46 -0800 (PST) In-Reply-To: <1446749423-4789-1-git-send-email-rodrigo.vivi@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: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org V2UgbmVlZCB0byBvcmdhbml6ZSBpcHMgYSBiaXQgaW4gb3JkZXIgdG8gZml4IGl0IGluaXRpYWxp emF0aW9uClNvIGxldCdzIHN0YXJ0IGJ5IGZvbGxvd2luZyBvdGhlciBmZWF0dXJlcyBieSBtb3Zp bmcgYWxsIHJlbHRlZApmdW5jdGlvbnMgdG8gaXRzIG93biBmaWxlLgoKU2lnbmVkLW9mZi1ieTog Um9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyB8IDEyNyArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2lwcy5jICAgICB8 IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2Vk LCAxNzAgaW5zZXJ0aW9ucygrKSwgMTI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2lwcy5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRl eCAwODUxZGUwNy4uN2MxYTg2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTYwLDYgKzYwLDcg QEAgaTkxNS15ICs9IGludGVsX2F1ZGlvLm8gXAogCSAgaW50ZWxfZmlmb191bmRlcnJ1bi5vIFwK IAkgIGludGVsX2Zyb250YnVmZmVyLm8gXAogCSAgaW50ZWxfaG90cGx1Zy5vIFwKKwkgIGludGVs X2lwcy5vIFwKIAkgIGludGVsX21vZGVzLm8gXAogCSAgaW50ZWxfb3ZlcmxheS5vIFwKIAkgIGlu dGVsX3Bzci5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNTY1OWQ0Yy4u MzkxODYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTQwMzQsNyArNDAz NCw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBlbnVtIHBpcGUgcGlwZSwKIAkJICogdXNlciBzcGFjZSBjYW4ndCBtYWtlIHJlbGlhYmxl IHVzZSBvZiB0aGUgQ1JDcywgc28gbGV0J3MganVzdAogCQkgKiBjb21wbGV0ZWx5IGRpc2FibGUg aXQuCiAJCSAqLwotCQloc3dfZGlzYWJsZV9pcHMoY3J0Yyk7CisJCWludGVsX2lwc19kaXNhYmxl KGNydGMpOwogCiAJCXNwaW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKIAkJa2ZyZWUocGlw ZV9jcmMtPmVudHJpZXMpOwpAQCAtNDA3OSw3ICs0MDc5LDcgQEAgc3RhdGljIGludCBwaXBlX2Ny Y19zZXRfc291cmNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAogCQll bHNlIGlmIChJU19IQVNXRUxMKGRldikgJiYgcGlwZSA9PSBQSVBFX0EpCiAJCQloc3dfdHJhbnNf ZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7CiAKLQkJaHN3X2VuYWJsZV9pcHMoY3J0Yyk7 CisJCWludGVsX2lwc19kaXNhYmxlKGNydGMpOwogCX0KIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDAxZGExYzkuLjE5N2M2MDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNjYsMjIgKzEzNjYsNiBAQCB2b2lkIGFzc2Vy dF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgICAgIHBpcGVfbmFt ZShwaXBlKSwgc3RhdGVfc3RyaW5nKHN0YXRlKSwgc3RhdGVfc3RyaW5nKGN1cl9zdGF0ZSkpOwog fQogCi1zdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkJIGVudW0gcGxhbmUgcGxhbmUsIGJvb2wgc3RhdGUpCi17Ci0JdTMyIHZhbDsK LQlib29sIGN1cl9zdGF0ZTsKLQotCXZhbCA9IEk5MTVfUkVBRChEU1BDTlRSKHBsYW5lKSk7Ci0J Y3VyX3N0YXRlID0gISEodmFsICYgRElTUExBWV9QTEFORV9FTkFCTEUpOwotCUk5MTVfU1RBVEVf V0FSTihjdXJfc3RhdGUgIT0gc3RhdGUsCi0JICAgICAicGxhbmUgJWMgYXNzZXJ0aW9uIGZhaWx1 cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKLQkgICAgIHBsYW5lX25hbWUocGxhbmUp LCBzdGF0ZV9zdHJpbmcoc3RhdGUpLCBzdGF0ZV9zdHJpbmcoY3VyX3N0YXRlKSk7Ci19Ci0KLSNk ZWZpbmUgYXNzZXJ0X3BsYW5lX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X3BsYW5lKGQsIHAsIHRydWUp Ci0jZGVmaW5lIGFzc2VydF9wbGFuZV9kaXNhYmxlZChkLCBwKSBhc3NlcnRfcGxhbmUoZCwgcCwg ZmFsc2UpCi0KIHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZXNfZGlzYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIGVudW0gcGlwZSBwaXBlKQogewpAQCAtNDUy OSw2NCArNDUxMyw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKQogCX0KIH0KIAotdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKLQotCWlmICghY3J0Yy0+Y29uZmlnLT5pcHNfcmVhZHkpCi0JCXJldHVybjsKLQotCS8qIFdl IGNhbiBvbmx5IGVuYWJsZSBJUFMgYWZ0ZXIgd2UgZW5hYmxlIGEgcGxhbmUgYW5kIHdhaXQgZm9y IGEgdmJsYW5rICovCi0JaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Ci0K LQlhc3NlcnRfcGxhbmVfZW5hYmxlZChkZXZfcHJpdiwgY3J0Yy0+cGxhbmUpOwotCWlmIChJU19C Uk9BRFdFTEwoZGV2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwot CQlXQVJOX09OKHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBESVNQTEFZX0lQU19D T05UUk9MLCAweGMwMDAwMDAwKSk7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKLQkJLyogUXVvdGluZyBBcnQgUnVueWFuOiAiaXRzIG5vdCBzYWZlIHRvIGV4cGVjdCBh bnkgcGFydGljdWxhcgotCQkgKiB2YWx1ZSBpbiBJUFNfQ1RMIGJpdCAzMSBhZnRlciBlbmFibGlu ZyBJUFMgdGhyb3VnaCB0aGUKLQkJICogbWFpbGJveC4iIE1vcmVvdmVyLCB0aGUgbWFpbGJveCBt YXkgcmV0dXJuIGEgYm9ndXMgc3RhdGUsCi0JCSAqIHNvIHdlIG5lZWQgdG8ganVzdCBlbmFibGUg aXQgYW5kIGNvbnRpbnVlIG9uLgotCQkgKi8KLQl9IGVsc2UgewotCQlJOTE1X1dSSVRFKElQU19D VEwsIElQU19FTkFCTEUpOwotCQkvKiBUaGUgYml0IG9ubHkgYmVjb21lcyAxIGluIHRoZSBuZXh0 IHZibGFuaywgc28gdGhpcyB3YWl0IGhlcmUKLQkJICogaXMgZXNzZW50aWFsbHkgaW50ZWxfd2Fp dF9mb3JfdmJsYW5rLiBJZiB3ZSBkb24ndCBoYXZlIHRoaXMKLQkJICogYW5kIGRvbid0IHdhaXQg Zm9yIHZibGFua3MgdW50aWwgdGhlIGVuZCBvZiBjcnRjX2VuYWJsZSwgdGhlbgotCQkgKiB0aGUg SFcgc3RhdGUgcmVhZG91dCBjb2RlIHdpbGwgY29tcGxhaW4gdGhhdCB0aGUgZXhwZWN0ZWQKLQkJ ICogSVBTX0NUTCB2YWx1ZSBpcyBub3QgdGhlIG9uZSB3ZSByZWFkLiAqLwotCQlpZiAod2FpdF9m b3IoSTkxNV9SRUFEX05PVFJBQ0UoSVBTX0NUTCkgJiBJUFNfRU5BQkxFLCA1MCkpCi0JCQlEUk1f RVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBJUFMgZW5hYmxlXG4iKTsKLQl9Ci19Ci0KLXZv aWQgaHN3X2Rpc2FibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQotewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKCFjcnRjLT5jb25maWctPmlw c19yZWFkeSkKLQkJcmV0dXJuOwotCi0JYXNzZXJ0X3BsYW5lX2VuYWJsZWQoZGV2X3ByaXYsIGNy dGMtPnBsYW5lKTsKLQlpZiAoSVNfQlJPQURXRUxMKGRldikpIHsKLQkJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKLQkJV0FSTl9PTihzYW5keWJyaWRnZV9wY29kZV93cml0ZShk ZXZfcHJpdiwgRElTUExBWV9JUFNfQ09OVFJPTCwgMCkpOwotCQltdXRleF91bmxvY2soJmRldl9w cml2LT5ycHMuaHdfbG9jayk7Ci0JCS8qIHdhaXQgZm9yIHBjb2RlIHRvIGZpbmlzaCBkaXNhYmxp bmcgSVBTLCB3aGljaCBtYXkgdGFrZSB1cCB0byA0Mm1zICovCi0JCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJMRSkgPT0gMCwgNDIpKQotCQkJRFJNX0VSUk9SKCJU aW1lZCBvdXQgd2FpdGluZyBmb3IgSVBTIGRpc2FibGVcbiIpOwotCX0gZWxzZSB7Ci0JCUk5MTVf V1JJVEUoSVBTX0NUTCwgMCk7Ci0JCVBPU1RJTkdfUkVBRChJUFNfQ1RMKTsKLQl9Ci0KLQkvKiBX ZSBuZWVkIHRvIHdhaXQgZm9yIGEgdmJsYW5rIGJlZm9yZSB3ZSBjYW4gZGlzYWJsZSB0aGUgcGxh bmUuICovCi0JaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Ci19Ci0KIC8q KiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRoZSBwcmVw YXJlZCB2YWx1ZXMgKi8KIHN0YXRpYyB2b2lkIGludGVsX2NydGNfbG9hZF9sdXQoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogewpAQCAtNDYxNSw3ICs0NTQxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf Y3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJaWYgKElTX0hBU1dFTEwoZGV2 KSAmJiBpbnRlbF9jcnRjLT5jb25maWctPmlwc19yZWFkeSAmJgogCSAgICAoKEk5MTVfUkVBRChH QU1NQV9NT0RFKHBpcGUpKSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQogCSAgICAgR0FNTUFf TU9ERV9NT0RFX1NQTElUKSkgewotCQloc3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Yyk7CisJCWlu dGVsX2lwc19kaXNhYmxlKGludGVsX2NydGMpOwogCQlyZWVuYWJsZV9pcHMgPSB0cnVlOwogCX0K IApAQCAtNDYzNCw3ICs0NTYwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19sb2FkX2x1dChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJfQogCiAJaWYgKHJlZW5hYmxlX2lwcykKLQkJaHN3X2Vu YWJsZV9pcHMoaW50ZWxfY3J0Yyk7CisJCWludGVsX2lwc19lbmFibGUoaW50ZWxfY3J0Yyk7CiB9 CiAKIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZHBtc19vdmVybGF5X2Rpc2FibGUoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMpCkBAIC00Njg3LDcgKzQ2MTMsNyBAQCBpbnRlbF9wb3N0X2Vu YWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkgKiB3aGVuIGdvaW5nIGZyb20g cHJpbWFyeSBvbmx5IHRvIHNwcml0ZSBvbmx5IGFuZCB2aWNlCiAJICogdmVyc2EuCiAJICovCi0J aHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0Yyk7CisJaW50ZWxfaXBzX2VuYWJsZShpbnRlbF9jcnRj KTsKIAogCS8qCiAJICogR2VuMiByZXBvcnRzIHBpcGUgdW5kZXJydW5zIHdoZW5ldmVyIGFsbCBw bGFuZXMgYXJlIGRpc2FibGVkLgpAQCAtNDc1Miw3ICs0Njc4LDcgQEAgaW50ZWxfcHJlX2Rpc2Fi bGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICogd2hlbiBnb2luZyBmcm9tIHBy aW1hcnkgb25seSB0byBzcHJpdGUgb25seSBhbmQgdmljZQogCSAqIHZlcnNhLgogCSAqLwotCWhz d19kaXNhYmxlX2lwcyhpbnRlbF9jcnRjKTsKKwlpbnRlbF9pcHNfZGlzYWJsZShpbnRlbF9jcnRj KTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCkBAIC00NzkxLDcgKzQ3MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVf cGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCQlpbnRlbF9mYmNfZGlzYWJs ZV9jcnRjKGNydGMpOwogCiAJaWYgKGNydGMtPmF0b21pYy5kaXNhYmxlX2lwcykKLQkJaHN3X2Rp c2FibGVfaXBzKGNydGMpOworCQlpbnRlbF9pcHNfZGlzYWJsZShjcnRjKTsKIAogCWlmIChhdG9t aWMtPnByZV9kaXNhYmxlX3ByaW1hcnkpCiAJCWludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoJmNy dGMtPmJhc2UpOwpAQCAtNDg5MSwxMiArNDgxNyw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2Ny dGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJY3B0X3ZlcmlmeV9tb2Rlc2V0KGRl diwgaW50ZWxfY3J0Yy0+cGlwZSk7CiB9CiAKLS8qIElQUyBvbmx5IGV4aXN0cyBvbiBVTFQgbWFj aGluZXMgYW5kIGlzIHRpZWQgdG8gcGlwZSBBLiAqLwotc3RhdGljIGJvb2wgaHN3X2NydGNfc3Vw cG9ydHNfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQotewotCXJldHVybiBIQVNfSVBTKGNy dGMtPmJhc2UuZGV2KSAmJiBjcnRjLT5waXBlID09IFBJUEVfQTsKLX0KLQogc3RhdGljIHZvaWQg aGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTY1MzIsMzggKzY0NTIsNiBAQCByZXRyeToK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgYm9vbCBwaXBlX2NvbmZpZ19zdXBwb3J0c19pcHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQotewotCWlmIChwaXBlX2NvbmZpZy0+cGlwZV9icHAg PiAyNCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyogSFNXIGNhbiBoYW5kbGUgcGl4ZWwgcmF0ZSB1 cCB0byBjZGNsaz8gKi8KLQlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdi0+ZGV2KSkKLQkJcmV0dXJu IHRydWU7Ci0KLQkvKgotCSAqIFdlIGNvbXBhcmUgYWdhaW5zdCBtYXggd2hpY2ggbWVhbnMgd2Ug bXVzdCB0YWtlCi0JICogdGhlIGluY3JlYXNlZCBjZGNsayByZXF1aXJlbWVudCBpbnRvIGFjY291 bnQgd2hlbgotCSAqIGNhbGN1bGF0aW5nIHRoZSBuZXcgY2RjbGsuCi0JICoKLQkgKiBTaG91bGQg bWVhc3VyZSB3aGV0aGVyIHVzaW5nIGEgbG93ZXIgY2RjbGsgdy9vIElQUwotCSAqLwotCXJldHVy biBpbGtfcGlwZV9waXhlbF9yYXRlKHBpcGVfY29uZmlnKSA8PQotCQlkZXZfcHJpdi0+bWF4X2Nk Y2xrX2ZyZXEgKiA5NSAvIDEwMDsKLX0KLQotc3RhdGljIHZvaWQgaHN3X2NvbXB1dGVfaXBzX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKLQkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0KLQlwaXBlX2NvbmZpZy0+aXBzX3JlYWR5ID0gaTkxNS5lbmFibGVfaXBzICYmCi0J CWhzd19jcnRjX3N1cHBvcnRzX2lwcyhjcnRjKSAmJgotCQlwaXBlX2NvbmZpZ19zdXBwb3J0c19p cHMoZGV2X3ByaXYsIHBpcGVfY29uZmlnKTsKLX0KLQogc3RhdGljIGludCBpbnRlbF9jcnRjX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCSAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewpAQCAtNjYwOSw4ICs2NDk3LDcgQEAgc3Rh dGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKEhBU19JUFMoZGV2KSkKLQkJ aHN3X2NvbXB1dGVfaXBzX2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CisJcGlwZV9jb25maWct Pmlwc19yZWFkeSA9IGludGVsX2lwc19yZWFkeShjcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlpZiAo cGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikKIAkJcmV0dXJuIGlyb25sYWtlX2ZkaV9jb21w dXRlX2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CkBAIC05ODMxLDcgKzk3MTgsNyBAQCBzdGF0 aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK IAkJCWlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CiAJfQogCi0J cGlwZV9jb25maWctPmlwc19yZWFkeSA9IGhzd19jcnRjX3N1cHBvcnRzX2lwcyhjcnRjKTsKKwlw aXBlX2NvbmZpZy0+aXBzX3JlYWR5ID0gaW50ZWxfaXBzX3JlYWR5KGNydGMsIHBpcGVfY29uZmln KTsKIAogCWlmIChwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFAp IHsKIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKaW5kZXggNTI2NDg4Ny4uMjczZTFhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0z ODIzLDcgKzM4MjMsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX3NpbmtfY3JjX3N0b3Aoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKIAogCWludGVsX2RwLT5zaW5rX2NyYy5zdGFydGVkID0gZmFs c2U7CiAgb3V0OgotCWhzd19lbmFibGVfaXBzKGludGVsX2NydGMpOworCWludGVsX2lwc19lbmFi bGUoaW50ZWxfY3J0Yyk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzg1MSwxMSArMzg1MSwxMSBA QCBzdGF0aWMgaW50IGludGVsX2RwX3NpbmtfY3JjX3N0YXJ0KHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiAJaWYgKGRybV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LCBEUF9URVNUX1NJ TkssICZidWYpIDwgMCkKIAkJcmV0dXJuIC1FSU87CiAKLQloc3dfZGlzYWJsZV9pcHMoaW50ZWxf Y3J0Yyk7CisJaW50ZWxfaXBzX2Rpc2FibGUoaW50ZWxfY3J0Yyk7CiAKIAlpZiAoZHJtX2RwX2Rw Y2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9URVNUX1NJTkssCiAJCQkgICAgICAgYnVmIHwg RFBfVEVTVF9TSU5LX1NUQVJUKSA8IDApIHsKLQkJaHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0Yyk7 CisJCWludGVsX2lwc19lbmFibGUoaW50ZWxfY3J0Yyk7CiAJCXJldHVybiAtRUlPOwogCX0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAyYWFlMjE5Li40MWE4OGY3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaApAQCAtMTE4OCw4ICsxMTg4LDYgQEAgYm9vbCBieHRfZmluZF9iZXN0 X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGludCB0YXJnZXRfY2xv Y2ssCiBpbnQgY2h2X2NhbGNfZHBsbF9wYXJhbXMoaW50IHJlZmNsaywgaW50ZWxfY2xvY2tfdCAq cGxsX2Nsb2NrKTsKIAogYm9vbCBpbnRlbF9jcnRjX2FjdGl2ZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwotdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Ci12b2lk IGhzd19kaXNhYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CiBlbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluCiBpbnRlbF9kaXNwbGF5X3BvcnRfcG93ZXJfZG9tYWluKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKIHZvaWQgaW50ZWxfbW9kZV9mcm9tX3Bp cGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLApAQCAtMTIwNyw2ICsxMjA1 LDEyIEBAIHUzMiBza2xfcGxhbmVfY3RsX2Zvcm1hdCh1aW50MzJfdCBwaXhlbF9mb3JtYXQpOwog dTMyIHNrbF9wbGFuZV9jdGxfdGlsaW5nKHVpbnQ2NF90IGZiX21vZGlmaWVyKTsKIHUzMiBza2xf cGxhbmVfY3RsX3JvdGF0aW9uKHVuc2lnbmVkIGludCByb3RhdGlvbik7CiAKKy8qIGludGVsX2lw cy5jICovCitib29sIGludGVsX2lwc19yZWFkeShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJ ICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cit2b2lkIGludGVsX2lw c19lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwordm9pZCBpbnRlbF9pcHNfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CisKIC8qIGludGVsX2Nzci5jICovCiB2b2lkIGlu dGVsX2Nzcl91Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZW51bSBjc3Jfc3Rh dGUgaW50ZWxfY3NyX2xvYWRfc3RhdHVzX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaXBzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41YzY1OWEzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaXBzLmMKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAx NSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisvKiBJUFMgb25seSBleGlzdHMgb24gVUxUIG1hY2hpbmVzIGFuZCBp cyB0aWVkIHRvIHBpcGUgQS4gKi8KKworI2luY2x1ZGUgImludGVsX2Rydi5oIgorI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCisKKworc3RhdGljIHZvaWQgYXNzZXJ0X3BsYW5lKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSBlbnVtIHBsYW5lIHBsYW5lLCBib29sIHN0YXRlKQor eworCXUzMiB2YWw7CisJYm9vbCBjdXJfc3RhdGU7CisKKwl2YWwgPSBJOTE1X1JFQUQoRFNQQ05U UihwbGFuZSkpOworCWN1cl9zdGF0ZSA9ICEhKHZhbCAmIERJU1BMQVlfUExBTkVfRU5BQkxFKTsK KwlJOTE1X1NUQVRFX1dBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAorCQkJInBsYW5lICVjIGFzc2Vy dGlvbiBmYWlsdXJlIChleHBlY3RlZCAlcywgY3VycmVudCAlcylcbiIsCisJCQlwbGFuZV9uYW1l KHBsYW5lKSwgc3RhdGUgPyAib24iIDogIm9mZiIsCisJCQljdXJfc3RhdGUgPyAib24iIDogIm9m ZiIpOworfQorCisjZGVmaW5lIGFzc2VydF9wbGFuZV9lbmFibGVkKGQsIHApIGFzc2VydF9wbGFu ZShkLCBwLCB0cnVlKQorI2RlZmluZSBhc3NlcnRfcGxhbmVfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0 X3BsYW5lKGQsIHAsIGZhbHNlKQorCitzdGF0aWMgYm9vbCBpbnRlbF9pcHNfc3VwcG9ydGVkKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQoreworCXJldHVybiBIQVNfSVBTKGNydGMtPmJhc2UuZGV2 KSAmJiBjcnRjLT5waXBlID09IFBJUEVfQTsKK30KKworc3RhdGljIGJvb2wgcGlwZV9jb25maWdf c3VwcG9ydHNfaXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAg IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKK3sKKwlpZiAocGlwZV9jb25m aWctPnBpcGVfYnBwID4gMjQpCisJCXJldHVybiBmYWxzZTsKKworCS8qIEhTVyBjYW4gaGFuZGxl IHBpeGVsIHJhdGUgdXAgdG8gY2RjbGs/ICovCisJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYtPmRl dikpCisJCXJldHVybiB0cnVlOworCisJLyoKKwkgKiBXZSBjb21wYXJlIGFnYWluc3QgbWF4IHdo aWNoIG1lYW5zIHdlIG11c3QgdGFrZQorCSAqIHRoZSBpbmNyZWFzZWQgY2RjbGsgcmVxdWlyZW1l bnQgaW50byBhY2NvdW50IHdoZW4KKwkgKiBjYWxjdWxhdGluZyB0aGUgbmV3IGNkY2xrLgorCSAq CisJICogU2hvdWxkIG1lYXN1cmUgd2hldGhlciB1c2luZyBhIGxvd2VyIGNkY2xrIHcvbyBJUFMK KwkgKi8KKwlyZXR1cm4gaWxrX3BpcGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZykgPD0KKwkgICAg ICAgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOTUgLyAxMDA7Cit9CisKK2Jvb2wgaW50ZWxf aXBzX3JlYWR5KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKworCXJldHVybiBIQVNfSVBTKGRldikgJiYgaTkxNS5lbmFibGVfaXBzICYm CisJICAgICAgIGludGVsX2lwc19zdXBwb3J0ZWQoY3J0YykgJiYKKwkgICAgICAgcGlwZV9jb25m aWdfc3VwcG9ydHNfaXBzKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cit9CisKK3ZvaWQgaW50ZWxf aXBzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmICghY3J0Yy0+Y29uZmlnLT5pcHNfcmVhZHkp CisJCXJldHVybjsKKworCS8qCisJICogV2UgY2FuIG9ubHkgZW5hYmxlIElQUyBhZnRlciB3ZSBl bmFibGUgYSBwbGFuZQorCSAqIGFuZCB3YWl0IGZvciBhIHZibGFuay4KKwkgKi8KKwlpbnRlbF93 YWl0X2Zvcl92YmxhbmsoZGV2LCBjcnRjLT5waXBlKTsKKworCWFzc2VydF9wbGFuZV9lbmFibGVk KGRldl9wcml2LCBjcnRjLT5wbGFuZSk7CisJaWYgKElTX0JST0FEV0VMTChkZXYpKSB7CisJCW11 dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJCVdBUk5fT04oc2FuZHlicmlkZ2Vf cGNvZGVfd3JpdGUoZGV2X3ByaXYsIERJU1BMQVlfSVBTX0NPTlRST0wsCisJCQkJCQkweGMwMDAw MDAwKSk7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJLyoKKwkJ ICogUXVvdGluZyBBcnQgUnVueWFuOiAiaXRzIG5vdCBzYWZlIHRvIGV4cGVjdCBhbnkgcGFydGlj dWxhcgorCQkgKiB2YWx1ZSBpbiBJUFNfQ1RMIGJpdCAzMSBhZnRlciBlbmFibGluZyBJUFMgdGhy b3VnaCB0aGUKKwkJICogbWFpbGJveC4iIE1vcmVvdmVyLCB0aGUgbWFpbGJveCBtYXkgcmV0dXJu IGEgYm9ndXMgc3RhdGUsCisJCSAqIHNvIHdlIG5lZWQgdG8ganVzdCBlbmFibGUgaXQgYW5kIGNv bnRpbnVlIG9uLgorCQkgKi8KKwl9IGVsc2UgeworCQlJOTE1X1dSSVRFKElQU19DVEwsIElQU19F TkFCTEUpOworCQkvKgorCQkgKiBUaGUgYml0IG9ubHkgYmVjb21lcyAxIGluIHRoZSBuZXh0IHZi bGFuaywgc28gdGhpcyB3YWl0IGhlcmUKKwkJICogaXMgZXNzZW50aWFsbHkgaW50ZWxfd2FpdF9m b3JfdmJsYW5rLiBJZiB3ZSBkb24ndCBoYXZlIHRoaXMKKwkJICogYW5kIGRvbid0IHdhaXQgZm9y IHZibGFua3MgdW50aWwgdGhlIGVuZCBvZiBjcnRjX2VuYWJsZSwgdGhlbgorCQkgKiB0aGUgSFcg c3RhdGUgcmVhZG91dCBjb2RlIHdpbGwgY29tcGxhaW4gdGhhdCB0aGUgZXhwZWN0ZWQKKwkJICog SVBTX0NUTCB2YWx1ZSBpcyBub3QgdGhlIG9uZSB3ZSByZWFkLgorCQkgKi8KKwkJaWYgKHdhaXRf Zm9yKEk5MTVfUkVBRF9OT1RSQUNFKElQU19DVEwpICYgSVBTX0VOQUJMRSwgNTApKQorCQkJRFJN X0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgSVBTIGVuYWJsZVxuIik7CisJfQorfQorCit2 b2lkIGludGVsX2lwc19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQoreworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKCFjcnRjLT5jb25maWct Pmlwc19yZWFkeSkKKwkJcmV0dXJuOworCisJYXNzZXJ0X3BsYW5lX2VuYWJsZWQoZGV2X3ByaXYs IGNydGMtPnBsYW5lKTsKKwlpZiAoSVNfQlJPQURXRUxMKGRldikpIHsKKwkJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJV0FSTl9PTihzYW5keWJyaWRnZV9wY29kZV93cml0 ZShkZXZfcHJpdiwKKwkJCQkJCURJU1BMQVlfSVBTX0NPTlRST0wsIDApKTsKKwkJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCQkvKgorCQkgKiBXYWl0IGZvciBwY29kZSB0 byBmaW5pc2ggZGlzYWJsaW5nIElQUywKKwkJICogd2hpY2ggbWF5IHRha2UgdXAgdG8gNDJtcy4K KwkJICovCisJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJMRSkg PT0gMCwgNDIpKQorCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgSVBTIGRpc2Fi bGVcbiIpOworCX0gZWxzZSB7CisJCUk5MTVfV1JJVEUoSVBTX0NUTCwgMCk7CisJCVBPU1RJTkdf UkVBRChJUFNfQ1RMKTsKKwl9CisKKwkvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIGEgdmJsYW5rIGJl Zm9yZSB3ZSBjYW4gZGlzYWJsZSB0aGUgcGxhbmUuICovCisJaW50ZWxfd2FpdF9mb3JfdmJsYW5r KGRldiwgY3J0Yy0+cGlwZSk7Cit9Ci0tIAoyLjQuMwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK