From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v4] drm/i915: Slaughter the thundering i915_wait_request herd Date: Mon, 30 Nov 2015 14:34:40 +0000 Message-ID: <1448894080-22511-1-git-send-email-chris@chris-wilson.co.uk> References: <1448786893-2522-9-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [87.106.93.118]) by gabe.freedesktop.org (Postfix) with ESMTP id 0FFF86E5E2 for ; Mon, 30 Nov 2015 06:35:01 -0800 (PST) In-Reply-To: <1448786893-2522-9-git-send-email-chris@chris-wilson.co.uk> 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 T25lIHBhcnRpY3VsYXJseSBzdHJlc3NmdWwgc2NlbmFyaW8gY29uc2lzdHMgb2YgbWFueSBpbmRl cGVuZGVudCB0YXNrcwphbGwgY29tcGV0aW5nIGZvciBHUFUgdGltZSBhbmQgd2FpdGluZyB1cG9u IHRoZSByZXN1bHRzIChlLmcuIHJlYWx0aW1lCnRyYW5zY29kaW5nIG9mIG1hbnksIG1hbnkgc3Ry ZWFtcykuIE9uZSBib3R0bGVuZWNrIGluIHBhcnRpY3VsYXIgaXMgdGhhdAplYWNoIGNsaWVudCB3 YWl0cyBvbiBpdHMgb3duIHJlc3VsdHMsIGJ1dCBldmVyeSBjbGllbnQgaXMgd29rZW4gdXAgYWZ0 ZXIKZXZlcnkgYmF0Y2hidWZmZXIgLSBoZW5jZSB0aGUgdGh1bmRlciBvZiBob292ZXMgYXMgdGhl biBldmVyeSBjbGllbnQgbXVzdApkbyBpdHMgaGVhdnl3ZWlnaHQgZGFuY2UgdG8gcmVhZCBhIGNv aGVyZW50IHNlcW5vIHRvIHNlZSBpZiBpdCBpcyB0aGUKbHVja3kgb25lLiBBbHRlcm5hdGl2ZWx5 LCB3ZSBjYW4gaGF2ZSBvbmUga3RocmVhZCByZXNwb25zaWJsZSBmb3Igd2FraW5nCmFmdGVyIGFu IGludGVycnVwdCwgY2hlY2tpbmcgdGhlIHNlcW5vIGFuZCBvbmx5IHdha2luZyB1cCB0aGUgd2Fp dGluZwpjbGllbnRzIHdobyBhcmUgY29tcGxldGUuIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBp biB0aGUgdW5jb250ZW5kZWQKc2NlbmFyaW8gKGkuZS4gb25seSBvbmUgd2FpdGVyKSB3ZSBpbmN1 ciBhbiBleHRyYSBjb250ZXh0IHN3aXRjaCBpbiB0aGUKd2FrZXVwIHBhdGggLSB0aG91Z2ggdGhh dCBzaG91bGQgYmUgbWl0aWdhdGVkIHNvbWV3aGF0IGJ5IHRoZSBidXN5LXdhaXQKd2UgZG8gZmly c3QgYmVmb3JlIHNsZWVwaW5nLgoKdjI6IENvbnZlcnQgZnJvbSBhIGt3b3JrZXIgcGVyIGVuZ2lu ZSBpbnRvIGEgZGVkaWNhdGVkIGt0aHJlYWQgZm9yIHRoZQpib3R0b20taGFsZi4KdjM6IFJlbmFt ZSByZXF1ZXN0IG1lbWJlcnMgYW5kIHR3ZWFrIGNvbW1lbnRzLgp2NDogVXNlIGEgcGVyLWVuZ2lu ZSBzcGlubG9jayBpbiB0aGUgYnJlYWRjcnVtYnMgYm90dG9tLWhhbGYuCgpTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6ICJSb2dvemhraW4s IERtaXRyeSBWIiA8ZG1pdHJ5LnYucm9nb3poa2luQGludGVsLmNvbT4KQ2M6ICJHb25nLCBaaGlw ZW5nIiA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28u dXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAg ICAgICAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg IHwgIDM3ICsrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgIHwg IDkzICsrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAg IHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgIHwgIDI0 ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyB8IDI3MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg IHwgICAzICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAzNjEgaW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJl YWRjcnVtYnMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMDg1MWRlMDdiZDEzLi5kM2I5ZDM2 MTg3MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0zNSw2ICszNSw3IEBAIGk5MTUteSArPSBp OTE1X2NtZF9wYXJzZXIubyBcCiAJICBpOTE1X2dlbV91c2VycHRyLm8gXAogCSAgaTkxNV9ncHVf ZXJyb3IubyBcCiAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwKKwkgIGludGVsX2JyZWFkY3J1bWJz Lm8gXAogCSAgaW50ZWxfbHJjLm8gXAogCSAgaW50ZWxfbW9jcy5vIFwKIAkgIGludGVsX3Jpbmdi dWZmZXIubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCBhODFjNzY2MDM1NDQuLjkzYzY3 NjJkODdiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0zODgsMTIgKzM4OCwxNiBAQCBz dGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlpZiAocmV0KQogCQlnb3RvIGNsZWFudXBfdmdhX2NsaWVudDsKIAorCXJldCA9IGludGVsX2Jy ZWFkY3J1bWJzX2luaXQoZGV2X3ByaXYpOworCWlmIChyZXQpCisJCWdvdG8gY2xlYW51cF92Z2Ff c3dpdGNoZXJvbzsKKwogCS8qIEluaXRpYWxpc2Ugc3RvbGVuIGZpcnN0IHNvIHRoYXQgd2UgbWF5 IHJlc2VydmUgcHJlYWxsb2NhdGVkCiAJICogb2JqZWN0cyBmb3IgdGhlIEJJT1MgdG8gS01TIHRy YW5zaXRpb24uCiAJICovCiAJcmV0ID0gaTkxNV9nZW1faW5pdF9zdG9sZW4oZGV2KTsKIAlpZiAo cmV0KQotCQlnb3RvIGNsZWFudXBfdmdhX3N3aXRjaGVyb287CisJCWdvdG8gY2xlYW51cF9icmVh ZGNydW1iczsKIAogCWludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhkZXZfcHJpdiwgZmFsc2Up OwogCkBAIC00NTQsNiArNDU4LDggQEAgY2xlYW51cF9pcnE6CiAJZHJtX2lycV91bmluc3RhbGwo ZGV2KTsKIGNsZWFudXBfZ2VtX3N0b2xlbjoKIAlpOTE1X2dlbV9jbGVhbnVwX3N0b2xlbihkZXYp OworY2xlYW51cF9icmVhZGNydW1iczoKKwlpbnRlbF9icmVhZGNydW1ic19maW5pKGRldl9wcml2 KTsKIGNsZWFudXBfdmdhX3N3aXRjaGVyb286CiAJdmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9j bGllbnQoZGV2LT5wZGV2KTsKIGNsZWFudXBfdmdhX2NsaWVudDoKQEAgLTExOTMsNiArMTE5OSw3 IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2 X3ByaXYpOwogCWk5MTVfZ2VtX2NsZWFudXBfc3RvbGVuKGRldik7CisJaW50ZWxfYnJlYWRjcnVt YnNfZmluaShkZXZfcHJpdik7CiAKIAlpbnRlbF9jc3JfdWNvZGVfZmluaShkZXZfcHJpdik7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGUxOTgwMjEyYmEzNy4uYWI4YzY5NGE5YmE1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTU2NCw2ICs1NjQsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3Jfc3RhdGUgewogCQkJbG9uZyBqaWZmaWVzOwogCQkJdTMyIHNlcW5vOwogCQkJdTMy IHRhaWw7CisJCQl1MzIgd2FpdGVyczsKIAkJfSAqcmVxdWVzdHM7CiAKIAkJc3RydWN0IHsKQEAg LTEzODMsNyArMTM4NCw3IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAjZGVmaW5lIEk5MTVf U1RPUF9SSU5HX0FMTE9XX1dBUk4gICAgICAoMSA8PCAzMCkKIAogCS8qIEZvciBtaXNzZWQgaXJx L3NlcW5vIHNpbXVsYXRpb24uICovCi0JdW5zaWduZWQgaW50IHRlc3RfaXJxX3JpbmdzOworCXVu c2lnbmVkIGxvbmcgdGVzdF9pcnFfcmluZ3M7CiB9OwogCiBlbnVtIG1vZGVzZXRfcmVzdG9yZSB7 CkBAIC0xNjk1LDYgKzE2OTYsMjcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3Ry dWN0IGludGVsX3VuY29yZSB1bmNvcmU7CiAKKwkvKiBSYXRoZXIgdGhhbiBoYXZlIGV2ZXJ5IGNs aWVudCB3YWl0IHVwb24gYWxsIHVzZXIgaW50ZXJydXB0cywKKwkgKiB3aXRoIHRoZSBoZXJkIHdh a2luZyBhZnRlciBldmVyeSBpbnRlcnJ1cHQgYW5kIGVhY2ggZG9pbmcgdGhlCisJICogaGVhdnl3 ZWlnaHQgc2Vxbm8gZGFuY2UsIHdlIGRlbGVnYXRlIHRoZSB0YXNrIHRvIGEgYm90dG9tLWhhbGYK KwkgKiBmb3IgdGhlIHVzZXIgaW50ZXJydXB0IChvbmUgYmggaGFuZGxpbmcgYWxsIGVuZ2luZXMp LiBOb3csCisJICoganVzdCBvbmUgdGFzayBpcyB3b2tlbiB1cCBhbmQgZG9lcyB0aGUgY29oZXJl bnQgc2Vxbm8gcmVhZCBhbmQKKwkgKiB0aGVuIHdha2VzIHVwIGFsbCB0aGUgd2FpdGVycyByZWdp c3RlcmVkIHdpdGggdGhlIGJvdHRvbS1oYWxmCisJICogdGhhdCBhcmUgY29tcGxldGUuIFRoaXMg YXZvaWQgdGhlIHRodW5kZXJpbmcgaGVyZCBwcm9ibGVtCisJICogd2l0aCBsb3RzIG9mIGNvbmN1 cnJlbnQgd2FpdGVycywgYXQgdGhlIGV4cGVuc2Ugb2YgYW4gZXh0cmEKKwkgKiBjb250ZXh0IHN3 aXRjaCBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHQgYW5kIHRoZSBjbGllbnQuIFRoYXQgc2hvdWxkCisJ ICogYmUgbWl0aWdhdGVkIHNvbWV3aGF0IGJ5IHRoZSBidXN5c3BpbiBpbiB0aGUgY2xpZW50IGJl Zm9yZSB3ZSBnbyB0bworCSAqIHNsZWVwIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCBmcm9tIHRo ZSBib3R0b20taGFsZi4KKwkgKi8KKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgeworCQlzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2s7IC8qIGJoIGZvciBhbGwgdXNlciBpbnRlcnJ1cHRzICovCisJ CXN0cnVjdCBpbnRlbF9icmVhZGNydW1ic19lbmdpbmUgeworCQkJc3BpbmxvY2tfdCBsb2NrOyAv KiBwcm90ZWN0cyB0aGUgbGlzdHMgb2YgcmVxdWVzdHMgKi8KKwkJCXN0cnVjdCByYl9yb290IHJl cXVlc3RzOyAvKiBzb3J0ZWQgYnkgcmV0aXJlbWVudCAqLworCQkJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpmaXJzdF93YWl0ZXI7CisJCX0gZW5naW5lW0k5MTVfTlVNX1JJTkdTXTsKKwl9 IGJyZWFkY3J1bWJzOworCiAJc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgdmdwdTsKIAogCXN0cnVj dCBpbnRlbF9ndWMgZ3VjOwpAQCAtMjIyOCw2ICsyMjUwLDEzIEBAIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCB7CiAJLyoqIGdsb2JhbCBsaXN0IGVudHJ5IGZvciB0aGlzIHJlcXVlc3QgKi8K IAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAKKwkvKiogRW50cnkgaW50byB0aGUgYnJlYWRjcnVt YiBsaXN0IG9mIHdhaXRpbmcgcmVxdWVzdHMuICovCisJc3RydWN0IHJiX25vZGUgYnJlYWRjcnVt Yl9ub2RlOworCS8qKiBMaXN0IG9mIGNsaWVudHMgd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiB0 aGlzIHJlcXVlc3QuICovCisJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdGVyczsKKwkvKiogQ291bnQg b2YgY2xpZW50cyB3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIHRoaXMgcmVxdWVzdC4gKi8KKwl1 bnNpZ25lZCB3YWl0ZXJzX2NvdW50OworCiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAq ZmlsZV9wcml2OwogCS8qKiBmaWxlX3ByaXYgbGlzdCBlbnRyeSBmb3IgdGhpcyByZXF1ZXN0ICov CiAJc3RydWN0IGxpc3RfaGVhZCBjbGllbnRfbGlzdDsKQEAgLTI4MDAsNiArMjgyOSwxMiBAQCBp YnhfZGlzYWJsZV9kaXNwbGF5X2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHVpbnQzMl90IGJpdHMpCiB9CiAKIAorLyogaW50ZWxfYnJlYWRjcnVtYnMuYyAtLSB1 c2VyIGludGVycnVwdCBib3R0b20taGFsZiBmb3Igd2FpdGVycyAqLworaW50IGludGVsX2JyZWFk Y3J1bWJzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworYm9vbCBpbnRlbF9i cmVhZGNydW1ic19hZGRfd2FpdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCk7Cit2b2lkIGludGVsX2JyZWFkY3J1bWJzX3JlbW92ZV93YWl0ZXIoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKIC8qIGk5MTVfZ2VtLmMgKi8KIGludCBpOTE1 X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ CSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5k ZXggNjVkMTAxYjQ3ZDhlLi5jZWMxYmM0NjBmNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpA QCAtMTEyNiwxNyArMTEyNiw2IEBAIGk5MTVfZ2VtX2NoZWNrX3dlZGdlKHVuc2lnbmVkIHJlc2V0 X2NvdW50ZXIsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZha2VfaXJxKHVuc2lnbmVk IGxvbmcgZGF0YSkKLXsKLQl3YWtlX3VwX3Byb2Nlc3MoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKWRh dGEpOwotfQotCi1zdGF0aWMgYm9vbCBtaXNzZWRfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCi17Ci0J cmV0dXJuIHRlc3RfYml0KHJpbmctPmlkLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5taXNzZWRfaXJx X3JpbmdzKTsKLX0KLQogc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9jYWxfY2xvY2tfdXModW5zaWdu ZWQgKmNwdSkKIHsKIAl1bnNpZ25lZCBsb25nIHQ7CkBAIC0xMTg0LDkgKzExNzMsNiBAQCBzdGF0 aWMgaW50IF9faTkxNV9zcGluX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBzdGF0ZSkKIAkgKiB0YWtlcyB0byBzbGVlcCBvbiBhIHJlcXVlc3QsIG9uIHRoZSBv cmRlciBvZiBhIG1pY3Jvc2Vjb25kLgogCSAqLwogCi0JaWYgKHJlcS0+cmluZy0+aXJxX3JlZmNv dW50KQotCQlyZXR1cm4gLUVCVVNZOwotCiAJLyogT25seSBzcGluIGlmIHdlIGtub3cgdGhlIEdQ VSBpcyBwcm9jZXNzaW5nIHRoaXMgcmVxdWVzdCAqLwogCWlmICghaTkxNV9nZW1fcmVxdWVzdF9z dGFydGVkKHJlcSwgZmFsc2UpKQogCQlyZXR1cm4gLUVBR0FJTjsKQEAgLTEyMzIsMjYgKzEyMTgs MTkgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCiAJCQlzNjQgKnRpbWVvdXQsCiAJCQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBz KQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9yaW5nKHJlcSk7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWNvbnN0 IGJvb2wgaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MgPQotCQlBQ0NFU1NfT05DRShkZXZfcHJpdi0+Z3B1 X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSAmIGludGVsX3JpbmdfZmxhZyhyaW5nKTsKIAlpbnQgc3Rh dGUgPSBpbnRlcnJ1cHRpYmxlID8gVEFTS19JTlRFUlJVUFRJQkxFIDogVEFTS19VTklOVEVSUlVQ VElCTEU7CiAJREVGSU5FX1dBSVQod2FpdCk7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0X2V4cGly ZTsKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXRfcmVtYWluOwogCXM2NCBiZWZvcmUsIG5vdzsKIAlp bnQgcmV0OwogCi0JV0FSTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSwgIklSUXMgZGlz YWJsZWQiKTsKLQogCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3QpKQogCQlyZXR1cm4gMDsKIAog CWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpKQogCQlyZXR1cm4gMDsK IAotCXRpbWVvdXRfZXhwaXJlID0gMDsKKwl0aW1lb3V0X3JlbWFpbiA9IE1BWF9TQ0hFRFVMRV9U SU1FT1VUOwogCWlmICh0aW1lb3V0KSB7CiAJCWlmIChXQVJOX09OKCp0aW1lb3V0IDwgMCkpCiAJ CQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEyNTksMzQgKzEyMzgsMzcgQEAgaW50IF9faTkxNV93YWl0 X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCWlmICgqdGltZW91 dCA9PSAwKQogCQkJcmV0dXJuIC1FVElNRTsKIAotCQl0aW1lb3V0X2V4cGlyZSA9IGppZmZpZXMg KyBuc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoKnRpbWVvdXQpOworCQl0aW1lb3V0X3JlbWFpbiA9 IG5zZWNzX3RvX2ppZmZpZXNfdGltZW91dCgqdGltZW91dCk7CiAJfQogCi0JaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKLQkJZ2VuNl9ycHNfYm9vc3QoZGV2X3ByaXYsIHJwcywg cmVxLT5lbWl0dGVkX2ppZmZpZXMpOwotCiAJLyogUmVjb3JkIGN1cnJlbnQgdGltZSBpbiBjYXNl IGludGVycnVwdGVkIGJ5IHNpZ25hbCwgb3Igd2VkZ2VkICovCiAJdHJhY2VfaTkxNV9nZW1fcmVx dWVzdF93YWl0X2JlZ2luKHJlcSk7CiAJYmVmb3JlID0ga3RpbWVfZ2V0X3Jhd19ucygpOwogCi0J LyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCBqaWZmaWUgYmVmb3JlIHRvdWNoaW5nIElS UXMgKi8KLQlyZXQgPSBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUpOwotCWlmIChyZXQg PT0gMCkKLQkJZ290byBvdXQ7CisJaWYgKElOVEVMX0lORk8ocmVxLT5pOTE1KS0+Z2VuID49IDYp CisJCWdlbjZfcnBzX2Jvb3N0KHJlcS0+aTkxNSwgcnBzLCByZXEtPmVtaXR0ZWRfamlmZmllcyk7 CiAKLQlpZiAoIWlycV90ZXN0X2luX3Byb2dyZXNzICYmIFdBUk5fT04oIXJpbmctPmlycV9nZXQo cmluZykpKSB7Ci0JCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gb3V0OworCS8qIE9wdGltaXN0aWMg c3BpbiBmb3IgdGhlIG5leHQgamlmZmllIGJlZm9yZSB0b3VjaGluZyBJUlFzICovCisJaWYgKGlu dGVsX2JyZWFkY3J1bWJzX2FkZF93YWl0ZXIocmVxKSkgeworCQlyZXQgPSBfX2k5MTVfc3Bpbl9y ZXF1ZXN0KHJlcSwgc3RhdGUpOworCQlpZiAocmV0ID09IDApCisJCQlnb3RvIG91dDsKIAl9CiAK IAlmb3IgKDs7KSB7Ci0JCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOworCQlwcmVwYXJlX3RvX3dh aXQoJnJlcS0+d2FpdGVycywgJndhaXQsIHN0YXRlKTsKIAotCQlwcmVwYXJlX3RvX3dhaXQoJnJp bmctPmlycV9xdWV1ZSwgJndhaXQsIHN0YXRlKTsKKwkJLyogV2hlbiB0aGUgYm90dG9tLWhhbGYg aGFuZGxlciBmb3IgdGhlIHVzZXIgaW50ZXJydXB0cyBydW5zLAorCQkgKiBpdCB3aWxsIHBlcmZv cm0gYSBjb2hlcmVudCByZWFkIG9mIHNlcW5vIGJlZm9yZSB3YWtpbmcgdXMuCisJCSAqIFdoZW4g d2UgYXJlIHRoZW4gd29rZW4gYnkgdGhlIGJvdHRvbS1oYWxmLCB3ZSBjYW4ganVzdAorCQkgKiBp bnNwZWN0IHRoZSBDUFUgY2FjaGUgZm9yIHRoZSBzZXFuby4KKwkJICovCisJCWlmIChpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpKSB7CisJCQlyZXQgPSAwOworCQkJYnJlYWs7 CisJCX0KIAotCQkvKiBXZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYW55IGdwdSByZXNldCBoYXBw ZW5lZCBpbiBiZXR3ZWVuCi0JCSAqIHRoZSBjYWxsZXIgZ3JhYmJpbmcgdGhlIHNlcW5vIGFuZCBu b3cgLi4uICovCi0JCWlmIChyZXEtPnJlc2V0X2NvdW50ZXIgIT0gaTkxNV9yZXNldF9jb3VudGVy KCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkgeworCQlpZiAodW5saWtlbHkocmVxLT5yZXNldF9jb3Vu dGVyICE9IGk5MTVfcmVzZXRfY291bnRlcigmcmVxLT5pOTE1LT5ncHVfZXJyb3IpKSkgewogCQkJ LyogQXMgd2UgZG8gbm90IHJlcXVldWUgdGhlIHJlcXVlc3Qgb3ZlciBhIEdQVSByZXNldCwKIAkJ CSAqIGlmIG9uZSBkb2VzIG9jY3VyIHdlIGtub3cgdGhhdCB0aGUgcmVxdWVzdCBpcwogCQkJICog ZWZmZWN0aXZlbHkgY29tcGxldGUuCkBAIC0xMjk1LDQ2ICsxMjc3LDIxIEBAIGludCBfX2k5MTVf d2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJYnJlYWs7 CiAJCX0KIAotCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpIHsK LQkJCXJldCA9IDA7Ci0JCQlicmVhazsKLQkJfQotCiAJCWlmIChzaWduYWxfcGVuZGluZ19zdGF0 ZShzdGF0ZSwgY3VycmVudCkpIHsKIAkJCXJldCA9IC1FUkVTVEFSVFNZUzsKIAkJCWJyZWFrOwog CQl9CiAKLQkJaWYgKHRpbWVvdXQgJiYgdGltZV9hZnRlcl9lcShqaWZmaWVzLCB0aW1lb3V0X2V4 cGlyZSkpIHsKKwkJdGltZW91dF9yZW1haW4gPSBpb19zY2hlZHVsZV90aW1lb3V0KHRpbWVvdXRf cmVtYWluKTsKKwkJaWYgKHRpbWVvdXRfcmVtYWluID09IDApIHsKIAkJCXJldCA9IC1FVElNRTsK IAkJCWJyZWFrOwogCQl9Ci0KLQkJaTkxNV9xdWV1ZV9oYW5nY2hlY2soZGV2X3ByaXYpOwotCi0J CXRpbWVyLmZ1bmN0aW9uID0gTlVMTDsKLQkJaWYgKHRpbWVvdXQgfHwgbWlzc2VkX2lycShkZXZf cHJpdiwgcmluZykpIHsKLQkJCXVuc2lnbmVkIGxvbmcgZXhwaXJlOwotCi0JCQlzZXR1cF90aW1l cl9vbl9zdGFjaygmdGltZXIsIGZha2VfaXJxLCAodW5zaWduZWQgbG9uZyljdXJyZW50KTsKLQkJ CWV4cGlyZSA9IG1pc3NlZF9pcnEoZGV2X3ByaXYsIHJpbmcpID8gamlmZmllcyArIDEgOiB0aW1l b3V0X2V4cGlyZTsKLQkJCW1vZF90aW1lcigmdGltZXIsIGV4cGlyZSk7Ci0JCX0KLQotCQlpb19z Y2hlZHVsZSgpOwotCi0JCWlmICh0aW1lci5mdW5jdGlvbikgewotCQkJZGVsX3NpbmdsZXNob3Rf dGltZXJfc3luYygmdGltZXIpOwotCQkJZGVzdHJveV90aW1lcl9vbl9zdGFjaygmdGltZXIpOwot CQl9CiAJfQotCWlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MpCi0JCXJpbmctPmlycV9wdXQocmlu Zyk7Ci0KLQlmaW5pc2hfd2FpdCgmcmluZy0+aXJxX3F1ZXVlLCAmd2FpdCk7Ci0KKwlmaW5pc2hf d2FpdCgmcmVxLT53YWl0ZXJzLCAmd2FpdCk7CiBvdXQ6CiAJbm93ID0ga3RpbWVfZ2V0X3Jhd19u cygpOworCWludGVsX2JyZWFkY3J1bWJzX3JlbW92ZV93YWl0ZXIocmVxKTsKIAl0cmFjZV9pOTE1 X2dlbV9yZXF1ZXN0X3dhaXRfZW5kKHJlcSk7CiAKIAlpZiAodGltZW91dCkgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggMDZjYTQwODI3MzViLi4wZTYzYjZlYmRkZGEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtNDUzLDEwICs0NTMsMTEg QEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZV9idWYgKm0sCiAJCQkJICAgZGV2X3ByaXYtPnJpbmdbaV0ubmFtZSwKIAkJCQkgICBlcnJvci0+ cmluZ1tpXS5udW1fcmVxdWVzdHMpOwogCQkJZm9yIChqID0gMDsgaiA8IGVycm9yLT5yaW5nW2ld Lm51bV9yZXF1ZXN0czsgaisrKSB7Ci0JCQkJZXJyX3ByaW50ZihtLCAiICBzZXFubyAweCUwOHgs IGVtaXR0ZWQgJWxkLCB0YWlsIDB4JTA4eFxuIiwKKwkJCQllcnJfcHJpbnRmKG0sICIgIHNlcW5v IDB4JTA4eCwgZW1pdHRlZCAlbGQsIHRhaWwgMHglMDh4LCB3YWl0ZXJzPyAlZFxuIiwKIAkJCQkJ ICAgZXJyb3ItPnJpbmdbaV0ucmVxdWVzdHNbal0uc2Vxbm8sCiAJCQkJCSAgIGVycm9yLT5yaW5n W2ldLnJlcXVlc3RzW2pdLmppZmZpZXMsCi0JCQkJCSAgIGVycm9yLT5yaW5nW2ldLnJlcXVlc3Rz W2pdLnRhaWwpOworCQkJCQkgICBlcnJvci0+cmluZ1tpXS5yZXF1ZXN0c1tqXS50YWlsLAorCQkJ CQkgICBlcnJvci0+cmluZ1tpXS5yZXF1ZXN0c1tqXS53YWl0ZXJzKTsKIAkJCX0KIAkJfQogCkBA IC05MDAsNyArOTAxLDggQEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQllcmluZy0+aW5zdGRvbmUgPSBJOTE1X1JFQUQoR0VOMl9J TlNURE9ORSk7CiAJfQogCi0JZXJpbmctPndhaXRpbmcgPSB3YWl0cXVldWVfYWN0aXZlKCZyaW5n LT5pcnFfcXVldWUpOworCWVyaW5nLT53YWl0aW5nID0KKwkgICAgICAgCVJFQURfT05DRShkZXZf cHJpdi0+YnJlYWRjcnVtYnMuZW5naW5lW3JpbmctPmlkXS5maXJzdF93YWl0ZXIpOwogCWVyaW5n LT5pbnN0cG0gPSBJOTE1X1JFQUQoUklOR19JTlNUUE0ocmluZy0+bW1pb19iYXNlKSk7CiAJZXJp bmctPnNlcW5vID0gcmluZy0+Z2V0X3NlcW5vKHJpbmcsIGZhbHNlKTsKIAllcmluZy0+YWN0aGQg PSBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChyaW5nKTsKQEAgLTExMDUsNiArMTEwNyw3IEBA IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJZXJxLT5zZXFubyA9IHJlcXVlc3QtPnNlcW5vOwogCQkJZXJxLT5qaWZmaWVzID0gcmVx dWVzdC0+ZW1pdHRlZF9qaWZmaWVzOwogCQkJZXJxLT50YWlsID0gcmVxdWVzdC0+cG9zdGZpeDsK KwkJCWVycS0+d2FpdGVycyA9IHJlcXVlc3QtPndhaXRlcnNfY291bnQ7CiAJCX0KIAl9CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCAyOGMwMzI5ZjgyODEuLjE4MmNjOWVmZTliYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC05OTYsMTIgKzk5NiwxMSBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9ycHNfY2hhbmdlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAK IHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB7 Ci0JaWYgKCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcpKQorCWlmIChyaW5nLT5pOTE1ID09 IE5VTEwpCiAJCXJldHVybjsKIAogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJpbmcp OwotCi0Jd2FrZV91cF9hbGwoJnJpbmctPmlycV9xdWV1ZSk7CisJd2FrZV91cF9wcm9jZXNzKHJp bmctPmk5MTUtPmJyZWFkY3J1bWJzLnRhc2spOwogfQogCiBzdGF0aWMgdm9pZCB2bHZfYzBfcmVh ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xMDc3LDEzICsxMDc2LDE4 IEBAIHN0YXRpYyB1MzIgdmx2X3dhX2MwX2VpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIHBtX2lpcikKIAlyZXR1cm4gZXZlbnRzOwogfQogCitzdGF0aWMgYm9vbCBhbnlf d2FpdGVyc19vbl9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXJl dHVybiBSRUFEX09OQ0UoZW5naW5lLT5pOTE1LT5icmVhZGNydW1icy5lbmdpbmVbZW5naW5lLT5p ZF0uZmlyc3Rfd2FpdGVyKTsKK30KKwogc3RhdGljIGJvb2wgYW55X3dhaXRlcnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmc7CiAJaW50IGk7CiAKIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKQotCQlpZiAo cmluZy0+aXJxX3JlZmNvdW50KQorCQlpZiAoYW55X3dhaXRlcnNfb25fZW5naW5lKHJpbmcpKQog CQkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0yMzk5LDkgKzI0MDMsNiBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgZ2VuOF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiBz dGF0aWMgdm9pZCBpOTE1X2Vycm9yX3dha2VfdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJICAgICAgIGJvb2wgcmVzZXRfY29tcGxldGVkKQogewotCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmc7Ci0JaW50IGk7Ci0KIAkvKgogCSAqIE5vdGlmeSBhbGwgd2FpdGVy cyBmb3IgR1BVIGNvbXBsZXRpb24gZXZlbnRzIHRoYXQgcmVzZXQgc3RhdGUgaGFzCiAJICogYmVl biBjaGFuZ2VkLCBhbmQgdGhhdCB0aGV5IG5lZWQgdG8gcmVzdGFydCB0aGVpciB3YWl0IGFmdGVy CkBAIC0yNDEwLDggKzI0MTEsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2Vycm9yX3dha2VfdXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqLwogCiAJLyogV2FrZSB1cCBfX3dh aXRfc2Vxbm8sIHBvdGVudGlhbGx5IGhvbGRpbmcgZGV2LT5zdHJ1Y3RfbXV0ZXguICovCi0JZm9y X2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkKLQkJd2FrZV91cF9hbGwoJnJpbmctPmlycV9x dWV1ZSk7CisJd2FrZV91cF9wcm9jZXNzKGRldl9wcml2LT5icmVhZGNydW1icy50YXNrKTsKIAog CS8qIFdha2UgdXAgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzLCBob2xkaW5nIGNy dGMtPm11dGV4LiAqLwogCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVl KTsKQEAgLTI5ODYsMTYgKzI5ODYsMTYgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxh cHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAocmluZ19pZGxlKHJpbmcsIHNl cW5vKSkgewogCQkJCXJpbmctPmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfSURMRTsKIAot CQkJCWlmICh3YWl0cXVldWVfYWN0aXZlKCZyaW5nLT5pcnFfcXVldWUpKSB7CisJCQkJaWYgKGFu eV93YWl0ZXJzX29uX2VuZ2luZShyaW5nKSl7CiAJCQkJCS8qIElzc3VlIGEgd2FrZS11cCB0byBj YXRjaCBzdHVjayBoL3cuICovCiAJCQkJCWlmICghdGVzdF9hbmRfc2V0X2JpdChyaW5nLT5pZCwg JmRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncykpIHsKLQkJCQkJCWlmICghKGRl dl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MgJiBpbnRlbF9yaW5nX2ZsYWcocmluZykp KQorCQkJCQkJaWYgKCF0ZXN0X2JpdChyaW5nLT5pZCwgJmRldl9wcml2LT5ncHVfZXJyb3IudGVz dF9pcnFfcmluZ3MpKQogCQkJCQkJCURSTV9FUlJPUigiSGFuZ2NoZWNrIHRpbWVyIGVsYXBzZWQu Li4gJXMgaWRsZVxuIiwKIAkJCQkJCQkJICByaW5nLT5uYW1lKTsKIAkJCQkJCWVsc2UKIAkJCQkJ CQlEUk1fSU5GTygiRmFrZSBtaXNzZWQgaXJxIG9uICVzXG4iLAogCQkJCQkJCQkgcmluZy0+bmFt ZSk7Ci0JCQkJCQl3YWtlX3VwX2FsbCgmcmluZy0+aXJxX3F1ZXVlKTsKKwkJCQkJCXdha2VfdXBf cHJvY2VzcyhkZXZfcHJpdi0+YnJlYWRjcnVtYnMudGFzayk7CiAJCQkJCX0KIAkJCQkJLyogU2Fm ZWd1YXJkIGFnYWluc3QgZHJpdmVyIGZhaWx1cmUgKi8KIAkJCQkJcmluZy0+aGFuZ2NoZWNrLnNj b3JlICs9IEJVU1k7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVh ZGNydW1icy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3YWY2MjQwNTczZAotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKQEAg LTAsMCArMSwyNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisK K3N0YXRpYyBib29sIF9faXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cit7CisJaWYgKHRlc3RfYml0KGVuZ2luZS0+aWQsICZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvci50 ZXN0X2lycV9yaW5ncykpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghaW50ZWxfaXJxc19lbmFi bGVkKGVuZ2luZS0+aTkxNSkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBlbmdpbmUtPmly cV9nZXQoZW5naW5lKTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq dG9fcmVxdWVzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCit7CisJaWYgKHJiID09IE5VTEwpCisJCXJl dHVybiBOVUxMOworCisJcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QsIGJyZWFkY3J1bWJfbm9kZSk7Cit9CisKKy8qCisgKiBpbnRlbF9icmVhZGNydW1ic19p cnEoKSBhY3RzIGFzIHRoZSBib3R0b20taGFsZiBmb3IgdGhlIHVzZXIgaW50ZXJydXB0LAorICog d2hpY2ggd2UgdXNlIGFzIHRoZSBicmVhZGNydW1iIGFmdGVyIGV2ZXJ5IHJlcXVlc3QuIEluIG9y ZGVyIHRvIHNjYWxlCisgKiB0byBtYW55IGNvbmN1cnJlbnQgd2FpdGVycywgd2UgZGVsZWdhdGUg dGhlIHRhc2sgb2YgcmVhZGluZyB0aGUgY29oZXJlbnQKKyAqIHNlcW5vIHRvIHRoaXMgYm90dG9t LWhhbGYuIChPdGhlcndpc2UgZXZlcnkgd2FpdGVyIGlzIHdva2VuIGFmdGVyIGVhY2gKKyAqIGlu dGVycnVwdCBhbmQgdGhleSBhbGwgYXR0ZW1wdCB0byBwZXJmb3JtIHRoZSBoZWF2eXdlaWdodCBj b2hlcmVudAorICogc2Vxbm8gY2hlY2suKSBJbmRpdmlkdWFsIGNsaWVudHMgcmVnaXN0ZXIgd2l0 aCB0aGUgYm90dG9tLWhhbGYgd2hlbgorICogd2FpdGluZyBvbiBhIHJlcXVlc3QsIGFuZCBhcmUg dGhlbiB3b2tlbiB3aGVuIHRoZSBib3R0b20taGFsZiBub3RpY2VzCisgKiB0aGVpciBzZXFubyBp cyBjb21wbGV0ZS4gVGhpcyBpbmN1cnMgYW4gZXh0cmEgY29udGV4dCBzd2l0Y2ggZnJvbSB0aGUK KyAqIGludGVycnVwdCB0byB0aGUgY2xpZW50IGluIHRoZSB1bmNvbnRlbmRlZCBjYXNlLgorICov CitzdGF0aWMgaW50IGludGVsX2JyZWFkY3J1bWJzX2lycSh2b2lkICpkYXRhKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGF0YTsKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIgPSAmaTkxNS0+YnJlYWRjcnVtYnM7CisJdW5zaWduZWQgZW5naW5lc19hY3RpdmUgPSAw OworCXVuc2lnbmVkIGlycXNfZW5hYmxlZCA9IDA7CisJaW50IGk7CisKKwl3aGlsZSAoIWt0aHJl YWRfc2hvdWxkX3N0b3AoKSkgeworCQl1bnNpZ25lZCByZXNldF9jb3VudGVyID0gaTkxNV9yZXNl dF9jb3VudGVyKCZpOTE1LT5ncHVfZXJyb3IpOworCQl1bnNpZ25lZCBsb25nIHRpbWVvdXRfamlm ZmllczsKKwkJYm9vbCBpZGxpbmcgPSBmYWxzZTsKKworCQkvKiBPbiBldmVyeSB3YWtldXAsIHdh bGsgdGhlIHNlcW5vLW9yZGVyZWQgbGlzdCBvZiByZXF1ZXN0cworCQkgKiBhbmQgZm9yIGVhY2gg cmV0aXJlZCByZXF1ZXN0IHdha2V1cCBpdHMgY2xpZW50cy4gSWYgd2UKKwkJICogZmluZCBhbiB1 bmZpbmlzaGVkIHJlcXVlc3Qgb3Igbm9uZSwgZ28gYmFjayB0byBzbGVlcC4KKwkJICovCisJCXNl dF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CisKKwkJLyogTm90ZSBjYXJlZnVs bHkgdGhhdCB3ZSBkbyBub3QgaG9sZCBhIHJlZmVyZW5jZSBmb3IgdGhlCisJCSAqIHJlcXVlc3Rz IG9uIHRoaXMgbGlzdC4gVGhlcmVmb3JlIHdlIG9ubHkgaW5zcGVjdCB0aGVtCisJCSAqIHdoaWxz dCBob2xkaW5nIHRoZSBzcGlubG9jayB0byBlbnN1cmUgdGhhdCB0aGV5IGFyZSBub3QKKwkJICog ZnJlZWQgaW4gdGhlIG1lYW50aW1lLCBhbmQgdGhlIGNsaWVudCBtdXN0IHJlbW92ZSB0aGUKKwkJ ICogcmVxdWVzdCBmcm9tIHRoZSBsaXN0IGlmIGl0IGlzIGludGVycnVwdGVkIChiZWZvcmUgaXQK KwkJICogaXRzZWxmIHJlbGVhc2VzIGl0cyByZWZlcmVuY2UpLgorCQkgKi8KKwkJZm9yIChpID0g MDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9ICZpOTE1LT5yaW5nW2ldOworCQkJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzX2Vu Z2luZSAqYmUgPSAmYi0+ZW5naW5lW2ldOworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0OworCisJCQlpZiAoUkVBRF9PTkNFKGJlLT5maXJzdF93YWl0ZXIpID09IE5VTEwp IHsKKwkJCQkvKiBObyBtb3JlIHdhaXRlcnMsIG1hc2sgdGhlIHVzZXIgaW50ZXJydXB0CisJCQkJ ICogKGlmIHdlIHdlcmUgYWJsZSB0byBlbmFibGUgaXQhKSBhbmQKKwkJCQkgKiByZWxlYXNlIHRo ZSB3YWtlbG9jay4KKwkJCQkgKi8KKwkJCQlpZiAoZW5naW5lc19hY3RpdmUgJiAoMSA8PCBpKSkg eworCQkJCQlpZiAoaXJxc19lbmFibGVkICYgKDEgPDwgaSkpIHsKKwkJCQkJCWVuZ2luZS0+aXJx X3B1dChlbmdpbmUpOworCQkJCQkJaXJxc19lbmFibGVkICY9IH4gKDEgPDwgaSk7CisJCQkJCX0K KwkJCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJCQkJCWVuZ2luZXNfYWN0aXZlICY9 IH4oMSA8PCBpKTsKKwkJCQl9CisKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyogV2hlbiBl bmFibGluZyB3YWl0aW5nIHVwb24gYW4gZW5naW5lLCB3ZSBuZWVkCisJCQkgKiB0byB1bm1hc2sg dGhlIHVzZXIgaW50ZXJydXB0LCBhbmQgYmVmb3JlIHdlCisJCQkgKiBkbyBzbyB3ZSBuZWVkIHRv IGhvbGQgYSB3YWtlbG9jayBmb3Igb3VyCisJCQkgKiBoYXJkd2FyZSBhY2Nlc3MgKGFuZCB0aGUg aW50ZXJydXB0cyB0aGVyZWFmdGVyKS4KKwkJCSAqLworCQkJaWYgKChlbmdpbmVzX2FjdGl2ZSAm ICgxIDw8IGkpKSA9PSAwKSB7CisJCQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisJCQkJ aXJxc19lbmFibGVkIHw9IF9faXJxX2VuYWJsZShlbmdpbmUpIDw8IGk7CisJCQkJZW5naW5lc19h Y3RpdmUgfD0gMSA8PCBpOworCQkJfQorCisJCQlzcGluX2xvY2soJmJlLT5sb2NrKTsKKwkJCXJl cXVlc3QgPSBiZS0+Zmlyc3Rfd2FpdGVyOworCQkJd2hpbGUgKHJlcXVlc3QpIHsKKwkJCQlzdHJ1 Y3QgcmJfbm9kZSAqbmV4dDsKKworCQkJCWlmIChyZXF1ZXN0LT5yZXNldF9jb3VudGVyID09IHJl c2V0X2NvdW50ZXIgJiYKKwkJCQkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVl c3QsIGZhbHNlKSkKKwkJCQkJYnJlYWs7CisKKwkJCQluZXh0ID0gcmJfbmV4dCgmcmVxdWVzdC0+ YnJlYWRjcnVtYl9ub2RlKTsKKwkJCQlyYl9lcmFzZSgmcmVxdWVzdC0+YnJlYWRjcnVtYl9ub2Rl LAorCQkJCQkgJmJlLT5yZXF1ZXN0cyk7CisJCQkJUkJfQ0xFQVJfTk9ERSgmcmVxdWVzdC0+YnJl YWRjcnVtYl9ub2RlKTsKKworCQkJCXdha2VfdXBfYWxsKCZyZXF1ZXN0LT53YWl0ZXJzKTsKKwor CQkJCXJlcXVlc3QgPSB0b19yZXF1ZXN0KG5leHQpOworCQkJfQorCQkJYmUtPmZpcnN0X3dhaXRl ciA9IHJlcXVlc3Q7CisJCQlzcGluX3VubG9jaygmYmUtPmxvY2spOworCisJCQkvKiBNYWtlIHN1 cmUgdGhlIGhhbmdjaGVjayB0aW1lciBpcyBhcm1lZCBpbiBjYXNlCisJCQkgKiB0aGUgR1BVIGhh bmdzIGFuZCB3ZSBhcmUgbmV2ZXIgd29rZW4gdXAuCisJCQkgKi8KKwkJCWlmIChyZXF1ZXN0KQor CQkJCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGk5MTUpOworCQkJZWxzZQorCQkJCWlkbGluZyA9IHRy dWU7CisJCX0KKworCQkvKiBJZiB3ZSBkb24ndCBoYXZlIGludGVycnVwdHMgYXZhaWxhYmxlIChl aXRoZXIgd2UgaGF2ZQorCQkgKiBkZXRlY3RlZCB0aGUgaGFyZHdhcmUgaXMgbWlzc2luZyBpbnRl cnJ1cHRzIG9yIHRoZQorCQkgKiBpbnRlcnJ1cHQgZGVsaXZlcnkgd2FzIGRpc2FibGVkIGJ5IHRo ZSB1c2VyKSwgd2FrZSB1cAorCQkgKiBldmVyeSBqaWZmaWUgdG8gY2hlY2sgZm9yIHJlcXVlc3Qg Y29tcGxldGlvbi4KKwkJICoKKwkJICogSWYgd2UgaGF2ZSBwcm9jZXNzZWQgYWxsIHJlcXVlc3Rz IGZvciBvbmUgZW5naW5lLCB3ZQorCQkgKiBhbHNvIHdpc2ggdG8gd2FrZSB1cCBpbiBhIGppZmZp ZSB0byB0dXJuIG9mZiB0aGUKKwkJICogYnJlYWRjcnVtYiBpbnRlcnJ1cHQgZm9yIHRoYXQgZW5n aW5lLiBXZSBkZWxheQorCQkgKiBzd2l0Y2hpbmcgb2ZmIHRoZSBpbnRlcnJ1cHQgaW4gb3JkZXIg dG8gYWxsb3cgYW5vdGhlcgorCQkgKiB3YWl0ZXIgdG8gc3RhcnQgd2l0aG91dCBpbmN1cnJpbmcg YWRkaXRpb25hbCBsYXRlbmN5CisJCSAqIGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQuCisJCSAqLwor CQl0aW1lb3V0X2ppZmZpZXMgPSBNQVhfU0NIRURVTEVfVElNRU9VVDsKKwkJaWYgKGlkbGluZyB8 fCBpOTE1LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyAmIGlycXNfZW5hYmxlZCkKKwkJCXRp bWVvdXRfamlmZmllcyA9IDE7CisKKwkJLyogVW5saWtlIHRoZSBpbmRpdmlkdWFsIGNsaWVudHMs IHdlIGRvIG5vdCB3YW50IHRoaXMKKwkJICogYmFja2dyb3VuZCB0aHJlYWQgdG8gY29udHJpYnV0 ZSB0byB0aGUgc3lzdGVtIGxvYWQsCisJCSAqIGkuZS4gd2UgZG8gbm90IHdhbnQgdG8gdXNlIGlv X3NjaGVkdWxlKCkgaGVyZS4KKwkJICovCisJCXNjaGVkdWxlX3RpbWVvdXQodGltZW91dF9qaWZm aWVzKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgeworCQlp ZiAoZW5naW5lc19hY3RpdmUgJiAoMSA8PCBpKSkgeworCQkJaWYgKGlycXNfZW5hYmxlZCAmICgx IDw8IGkpKSB7CisJCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmk5MTUtPnJp bmdbaV07CisJCQkJZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7CisJCQl9CisJCQlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1KTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitib29sIGludGVs X2JyZWFkY3J1bWJzX2FkZF93YWl0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQoreworCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZyZXF1ZXN0LT5pOTE1LT5i cmVhZGNydW1iczsKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnNfZW5naW5lICpiZSA9ICZiLT5l bmdpbmVbcmVxdWVzdC0+cmluZy0+aWRdOworCWJvb2wgZmlyc3QgPSBmYWxzZTsKKworCXNwaW5f bG9jaygmYmUtPmxvY2spOworCWlmIChyZXF1ZXN0LT53YWl0ZXJzX2NvdW50KysgPT0gMCkgewor CQlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpwYXJlbnQ7CisKKwkJaWYgKGJlLT5maXJzdF93YWl0ZXIg PT0gTlVMTCkKKwkJCXdha2VfdXBfcHJvY2VzcyhiLT50YXNrKTsKKworCQlpbml0X3dhaXRxdWV1 ZV9oZWFkKCZyZXF1ZXN0LT53YWl0ZXJzKTsKKworCQlmaXJzdCA9IHRydWU7CisJCXBhcmVudCA9 IE5VTEw7CisJCXAgPSAmYmUtPnJlcXVlc3RzLnJiX25vZGU7CisJCXdoaWxlICgqcCkgeworCQkJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpfX3JlcTsKKworCQkJcGFyZW50ID0gKnA7CisJ CQlfX3JlcSA9IHJiX2VudHJ5KHBhcmVudCwKKwkJCQkJIHR5cGVvZigqX19yZXEpLAorCQkJCQkg YnJlYWRjcnVtYl9ub2RlKTsKKworCQkJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHJlcXVlc3QtPnNl cW5vLCBfX3JlcS0+c2Vxbm8pKSB7CisJCQkJcCA9ICZwYXJlbnQtPnJiX3JpZ2h0OworCQkJCWZp cnN0ID0gZmFsc2U7CisJCQl9IGVsc2UKKwkJCQlwID0gJnBhcmVudC0+cmJfbGVmdDsKKwkJfQor CQlpZiAoZmlyc3QpCisJCQliZS0+Zmlyc3Rfd2FpdGVyID0gcmVxdWVzdDsKKworCQlyYl9saW5r X25vZGUoJnJlcXVlc3QtPmJyZWFkY3J1bWJfbm9kZSwgcGFyZW50LCBwKTsKKwkJcmJfaW5zZXJ0 X2NvbG9yKCZyZXF1ZXN0LT5icmVhZGNydW1iX25vZGUsICZiZS0+cmVxdWVzdHMpOworCX0KKwlz cGluX3VubG9jaygmYmUtPmxvY2spOworCisJcmV0dXJuIGZpcnN0OworfQorCit2b2lkIGludGVs X2JyZWFkY3J1bWJzX3JlbW92ZV93YWl0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQoreworCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZyZXF1ZXN0LT5pOTE1 LT5icmVhZGNydW1iczsKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnNfZW5naW5lICpiZSA9ICZi LT5lbmdpbmVbcmVxdWVzdC0+cmluZy0+aWRdOworCisJc3Bpbl9sb2NrKCZiZS0+bG9jayk7CisJ aWYgKC0tcmVxdWVzdC0+d2FpdGVyc19jb3VudCA9PSAwICYmCisJICAgICFSQl9FTVBUWV9OT0RF KCZyZXF1ZXN0LT5icmVhZGNydW1iX25vZGUpKSB7CisJCWlmIChiZS0+Zmlyc3Rfd2FpdGVyID09 IHJlcXVlc3QpCisJCQliZS0+Zmlyc3Rfd2FpdGVyID0KKwkJCQl0b19yZXF1ZXN0KHJiX25leHQo JnJlcXVlc3QtPmJyZWFkY3J1bWJfbm9kZSkpOworCQlyYl9lcmFzZSgmcmVxdWVzdC0+YnJlYWRj cnVtYl9ub2RlLCAmYmUtPnJlcXVlc3RzKTsKKwl9CisJc3Bpbl91bmxvY2soJmJlLT5sb2NrKTsK K30KKworaW50IGludGVsX2JyZWFkY3J1bWJzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCit7CisJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmk5MTUtPmJyZWFkY3J1 bWJzOworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQorCQlzcGluX2xvY2tfaW5pdCgmYi0+ZW5naW5lW2ld LmxvY2spOworCisJdGFzayA9IGt0aHJlYWRfcnVuKGludGVsX2JyZWFkY3J1bWJzX2lycSwgaTkx NSwgImlycS9pOTE1Iik7CisJaWYgKElTX0VSUih0YXNrKSkKKwkJcmV0dXJuIFBUUl9FUlIodGFz ayk7CisKKwliLT50YXNrID0gdGFzazsKKworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2Jy ZWFkY3J1bWJzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0 IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmk5MTUtPmJyZWFkY3J1bWJzOworCisJaWYgKGItPnRh c2sgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJa3RocmVhZF9zdG9wKGItPnRhc2spOworCWItPnRh c2sgPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBiNDBmZmMzNjA3ZTcu LjYwNGMwODFiMGEwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTE5MjIsMTAgKzE5 MjIsMTAgQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW4KIAlyaW5nLT5idWZmZXIgPSBOVUxMOwog CiAJcmluZy0+ZGV2ID0gZGV2OworCXJpbmctPmk5MTUgPSB0b19pOTE1KGRldik7CiAJSU5JVF9M SVNUX0hFQUQoJnJpbmctPmFjdGl2ZV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVx dWVzdF9saXN0KTsKIAlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmcmluZy0+YmF0Y2hf cG9vbCk7Ci0JaW5pdF93YWl0cXVldWVfaGVhZCgmcmluZy0+aXJxX3F1ZXVlKTsKIAogCUlOSVRf TElTVF9IRUFEKCZyaW5nLT5idWZmZXJzKTsKIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xp c3RfcXVldWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDUx MWVmZTU1NmQ3My4uNWE1YTcxOTVkZDU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCkBAIC0yMTU3LDYgKzIxNTcsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmlu Z19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlXQVJOX09OKHJpbmctPmJ1ZmZlcik7 CiAKIAlyaW5nLT5kZXYgPSBkZXY7CisJcmluZy0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKIAlJTklU X0xJU1RfSEVBRCgmcmluZy0+YWN0aXZlX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5y ZXF1ZXN0X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7CkBA IC0yMTY0LDggKzIxNjUsNiBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmcmlu Zy0+YmF0Y2hfcG9vbCk7CiAJbWVtc2V0KHJpbmctPnNlbWFwaG9yZS5zeW5jX3NlcW5vLCAwLCBz aXplb2YocmluZy0+c2VtYXBob3JlLnN5bmNfc2Vxbm8pKTsKIAotCWluaXRfd2FpdHF1ZXVlX2hl YWQoJnJpbmctPmlycV9xdWV1ZSk7Ci0KIAlyaW5nYnVmID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9y aW5nYnVmZmVyKHJpbmcsIDMyICogUEFHRV9TSVpFKTsKIAlpZiAoSVNfRVJSKHJpbmdidWYpKQog CQlyZXR1cm4gUFRSX0VSUihyaW5nYnVmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAppbmRleCA1ZDFlYjIwNjE1MWQuLjQ5YjViZGVkMjc2NyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCAgaW50 ZWxfZW5naW5lX2NzIHsKICNkZWZpbmUgTEFTVF9VU0VSX1JJTkcgKFZFQ1MgKyAxKQogCXUzMgkJ bW1pb19iYXNlOwogCXN0cnVjdAkJZHJtX2RldmljZSAqZGV2OworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1OwogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpidWZmZXI7CiAJc3RydWN0 IGxpc3RfaGVhZCBidWZmZXJzOwogCkBAIC0zMDMsOCArMzA0LDYgQEAgc3RydWN0ICBpbnRlbF9l bmdpbmVfY3MgewogCiAJYm9vbCBncHVfY2FjaGVzX2RpcnR5OwogCi0Jd2FpdF9xdWV1ZV9oZWFk X3QgaXJxX3F1ZXVlOwotCiAJc3RydWN0IGludGVsX2NvbnRleHQgKmRlZmF1bHRfY29udGV4dDsK IAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbGFzdF9jb250ZXh0OwogCi0tIAoyLjYuMgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK