From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 08/18] drm/i915: Combine seqno + tracking into a global timeline struct Date: Wed, 14 Sep 2016 07:52:40 +0100 Message-ID: <20160914065250.15482-9-chris@chris-wilson.co.uk> References: <20160914065250.15482-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C2A66E65E for ; Wed, 14 Sep 2016 06:53:09 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id b187so1019907wme.0 for ; Tue, 13 Sep 2016 23:53:09 -0700 (PDT) In-Reply-To: <20160914065250.15482-1-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 T3VyIHRpbWVsaW5lcyBhcmUgbW9yZSB0aGFuIGp1c3QgYSBzZXFuby4gVGhleSBhbHNvIHByb3Zp ZGUgYW4gb3JkZXJlZApsaXN0IG9mIHJlcXVlc3RzIHRvIGJlIGV4ZWN1dGVkLiBEdWUgdG8gdGhl IHJlc3RyaWN0aW9uIG9mIGhhbmRsaW5nCmluZGl2aWR1YWwgYWRkcmVzcyBzcGFjZXMsIHdlIGFy ZSBsaW1pdGVkIHRvIGEgdGltZWxpbmUgcGVyIGFkZHJlc3MKc3BhY2UgYnV0IHdlIHVzZSBhIGZl bmNlIGNvbnRleHQgcGVyIGVuZ2luZSB3aXRoaW4uCgpPdXIgZmlyc3Qgc3RlcCB0byBpbnRyb2R1 Y2luZyBpbmRlcGVuZGVudCB0aW1lbGluZXMgcGVyIGNvbnRleHQgKGkuZS4gdG8KYWxsb3cgZWFj aCBjb250ZXh0IHRvIGhhdmUgYSBxdWV1ZSBvZiByZXF1ZXN0cyB0byBleGVjdXRlIHRoYXQgaGF2 ZSBhCmRlZmluZWQgc2V0IG9mIGRlcGVuZGVuY2llcyBvbiBvdGhlciByZXF1ZXN0cykgaXMgdG8g cHJvdmlkZSBhIHRpbWVsaW5lCmFic3RyYWN0aW9uIGZvciB0aGUgZ2xvYmFsIGV4ZWN1dGlvbiBx dWV1ZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAx ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8IDE5ICsrKy0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICB8ICA2ICsrLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDkgKystLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgODAgKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oICAgICAg ICAgICAgfCAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgICAg fCA3NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuaCAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3RpbWVsaW5lLmMgICB8IDYzICsrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oICAgfCA2OSArKysrKysrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgIHwgIDYgKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgMyArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8IDM1ICsrLS0tLS0tLS0tLS0KIDE1IGZp bGVzIGNoYW5nZWQsIDI2OCBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmgK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGE5OThjMmJjZTcwYS4uMWQyZjNjZTJlY2ZkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtNDEsNiArNDEsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFy c2VyLm8gXAogCSAgaTkxNV9nZW1fc2hyaW5rZXIubyBcCiAJICBpOTE1X2dlbV9zdG9sZW4ubyBc CiAJICBpOTE1X2dlbV90aWxpbmcubyBcCisJICBpOTE1X2dlbV90aW1lbGluZS5vIFwKIAkgIGk5 MTVfZ2VtX3VzZXJwdHIubyBcCiAJICBpOTE1X2dwdV9lcnJvci5vIFwKIAkgIGk5MTVfdHJhY2Vf cG9pbnRzLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAyZTAyMzA0Yzc0 NDcuLmQxNzUyYjBmZWUzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTU1 Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3BhZ2VmbGlwX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCQkJCXNlcV9wcmludGYobSwgIkZsaXAgcXVldWVkIG9u ICVzIGF0IHNlcW5vICV4LCBuZXh0IHNlcW5vICV4IFtjdXJyZW50IGJyZWFkY3J1bWIgJXhdLCBj b21wbGV0ZWQ/ICVkXG4iLAogCQkJCQkgICBlbmdpbmUtPm5hbWUsCiAJCQkJCSAgIGk5MTVfZ2Vt X3JlcXVlc3RfZ2V0X3NlcW5vKHdvcmstPmZsaXBfcXVldWVkX3JlcSksCi0JCQkJCSAgIGRldl9w cml2LT5uZXh0X3NlcW5vLAorCQkJCQkgICBkZXZfcHJpdi0+Z3QuZ2xvYmFsX3RpbWVsaW5lLm5l eHRfc2Vxbm8sCiAJCQkJCSAgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKIAkJCQkJ ICAgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQod29yay0+ZmxpcF9xdWV1ZWRfcmVxKSk7CiAJ CQl9IGVsc2UKQEAgLTY0OCwxMyArNjQ4LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fcmVxdWVz dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJaW50IGNvdW50OwogCiAJ CWNvdW50ID0gMDsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZlbmdpbmUtPnJlcXVlc3Rf bGlzdCwgbGluaykKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZlbmdpbmUtPnRpbWVsaW5l LT5yZXF1ZXN0cywgbGluaykKIAkJCWNvdW50Kys7CiAJCWlmIChjb3VudCA9PSAwKQogCQkJY29u dGludWU7CiAKIAkJc2VxX3ByaW50ZihtLCAiJXMgcmVxdWVzdHM6ICVkXG4iLCBlbmdpbmUtPm5h bWUsIGNvdW50KTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZlbmdpbmUtPnJlcXVlc3Rf bGlzdCwgbGluaykgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJmVuZ2luZS0+dGltZWxp bmUtPnJlcXVlc3RzLCBsaW5rKSB7CiAJCQlzdHJ1Y3QgcGlkICpwaWQgPSByZXEtPmN0eC0+cGlk OwogCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwogCkBAIC0xMDI4LDE1ICsxMDI4LDggQEAg c3RhdGljIGludAogaTkxNV9uZXh0X3NlcW5vX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwotCWludCByZXQ7Ci0K LQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0uc3RydWN0X211 dGV4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JKnZhbCA9IGRldl9wcml2LT5uZXh0 X3NlcW5vOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCisJ KnZhbCA9IGRldl9wcml2LT5ndC5nbG9iYWxfdGltZWxpbmUubmV4dF9zZXFubzsKIAlyZXR1cm4g MDsKIH0KIApAQCAtMTA1MSw3ICsxMDQ0LDcgQEAgaTkxNV9uZXh0X3NlcW5vX3NldCh2b2lkICpk YXRhLCB1NjQgdmFsKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpOTE1X2dl bV9zZXRfc2Vxbm8oZGV2LCB2YWwpOworCXJldCA9IGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8o ZGV2LCB2YWwpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmV0dXJu IHJldDsKQEAgLTEzMTAsNyArMTMwMyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2VxX3ByaW50ZihtLCAiXHRz ZXFubyA9ICV4IFtjdXJyZW50ICV4LCBsYXN0ICV4XVxuIiwKIAkJCSAgIGVuZ2luZS0+aGFuZ2No ZWNrLnNlcW5vLAogCQkJICAgc2Vxbm9baWRdLAotCQkJICAgZW5naW5lLT5sYXN0X3N1Ym1pdHRl ZF9zZXFubyk7CisJCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7 CiAJCXNlcV9wcmludGYobSwgIlx0d2FpdGVycz8gJXMsIGZha2UgaXJxIGFjdGl2ZT8gJXNcbiIs CiAJCQkgICB5ZXNubyhpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKSwKIAkJCSAgIHll c25vKHRlc3RfYml0KGVuZ2luZS0+aWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA3ZjRl OGFkZWM4YTguLjU3MTlkZWVmZDQ4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC04MzIs NyArODMyLDkgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3MoZGV2X3By aXYpOwogCWludGVsX2luaXRfY2xvY2tfZ2F0aW5nX2hvb2tzKGRldl9wcml2KTsKIAlpbnRlbF9p bml0X2F1ZGlvX2hvb2tzKGRldl9wcml2KTsKLQlpOTE1X2dlbV9sb2FkX2luaXQoJmRldl9wcml2 LT5kcm0pOworCXJldCA9IGk5MTVfZ2VtX2xvYWRfaW5pdCgmZGV2X3ByaXYtPmRybSk7CisJaWYg KHJldCA8IDApCisJCWdvdG8gZXJyX2d2dDsKIAogCWludGVsX2Rpc3BsYXlfY3JjX2luaXQoZGV2 X3ByaXYpOwogCkBAIC04NDgsNiArODUwLDggQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0 X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXJldHVybiAwOwog CitlcnJfZ3Z0OgorCWludGVsX2d2dF9jbGVhbnVwKGRldl9wcml2KTsKIGVycl93b3JrcXVldWVz OgogCWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKIAlyZXR1cm4gcmV0OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMmJjYWIzMDg3ZThjLi4wZWU5Zjg1MzQ4MjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgImk5MTVfZ2Vt X2d0dC5oIgogI2luY2x1ZGUgImk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5oIgogI2luY2x1ZGUgImk5 MTVfZ2VtX3JlcXVlc3QuaCIKKyNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgogCiAjaW5j bHVkZSAiaW50ZWxfZ3Z0LmgiCiAKQEAgLTE3ODgsNyArMTc4OSw2IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2VybmVsX2NvbnRleHQ7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyBlbmdpbmVbSTkxNV9OVU1fRU5HSU5FU107CiAJc3RydWN0 IGk5MTVfdm1hICpzZW1hcGhvcmU7Ci0JdTMyIG5leHRfc2Vxbm87CiAKIAlzdHJ1Y3QgZHJtX2Rt YV9oYW5kbGUgKnN0YXR1c19wYWdlX2RtYWg7CiAJc3RydWN0IHJlc291cmNlIG1jaF9yZXM7CkBA IC0yMDQ2LDYgKzIwNDYsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCXZvaWQgKCpy ZXN1bWUpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICopOwogCQl2b2lkICgqY2xlYW51cF9lbmdp bmUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKKwkJc3RydWN0IGxpc3RfaGVh ZCB0aW1lbGluZXM7CisJCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSBnbG9iYWxfdGltZWxpbmU7 CisKIAkJLyoqCiAJCSAqIElzIHRoZSBHUFUgY3VycmVudGx5IGNvbnNpZGVyZWQgaWRsZSwgb3Ig YnVzeSBleGVjdXRpbmcKIAkJICogdXNlcnNwYWNlIHJlcXVlc3RzPyBXaGlsc3QgaWRsZSwgd2Ug YWxsb3cgcnVudGltZSBwb3dlcgpAQCAtMzA0MCw3ICszMDQzLDcgQEAgaW50IGk5MTVfZ2VtX2dl dF9hcGVydHVyZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJ CXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdik7Ci12b2lkIGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKK2ludCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lk IGk5MTVfZ2VtX2xvYWRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkx NV9nZW1fbG9hZF9pbml0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OwogaW50IGk5MTVfZ2VtX2ZyZWV6ZV9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CkBAIC0zMjA0LDcgKzMyMDcsNyBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqbmV3LAogCQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7CiAKLWlu dCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHUzMiBzZXFubyk7CitpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8o c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKIAogc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICoKIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGFiOGQxMDM4ODU4 MS4uZGNmNDk0NzAyNmZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTM2NSw3ICszNjUs NyBAQCBvdXQ6CiAJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJiBpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChycSkpCiAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8ocnEpOwog Ci0JaWYgKHJwcyAmJiBycS0+ZmVuY2Uuc2Vxbm8gPT0gcnEtPmVuZ2luZS0+bGFzdF9zdWJtaXR0 ZWRfc2Vxbm8pIHsKKwlpZiAocnBzICYmIHJxLT5mZW5jZS5zZXFubyA9PSBycS0+dGltZWxpbmUt Pmxhc3Rfc3VibWl0dGVkX3NlcW5vKSB7CiAJCS8qIFRoZSBHUFUgaXMgbm93IGlkbGUgYW5kIHRo aXMgY2xpZW50IGhhcyBzdGFsbGVkLgogCQkgKiBTaW5jZSBubyBvdGhlciBjbGllbnQgaGFzIHN1 Ym1pdHRlZCBhIHJlcXVlc3QgaW4gdGhlCiAJCSAqIG1lYW50aW1lLCBhc3N1bWUgdGhhdCB0aGlz IGNsaWVudCBpcyB0aGUgb25seSBvbmUKQEAgLTI2MDAsNyArMjYwMCw3IEBAIGk5MTVfZ2VtX2Zp bmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIGV4 dHJhIGRlbGF5IGZvciBhIHJlY2VudCBpbnRlcnJ1cHQgaXMgcG9pbnRsZXNzLiBIZW5jZSwgd2Ug ZG8KIAkgKiBub3QgbmVlZCBhbiBlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKCkgYmVmb3JlIHRo ZSBzZXFubyByZWFkcy4KIAkgKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdp bmUtPnJlcXVlc3RfbGlzdCwgbGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwg JmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7CiAJCWlmIChpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKIAkJCWNvbnRpbnVlOwogCkBAIC0yNjY4LDcgKzI2Njgs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCWlmIChpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1bHQoaW5jb21wbGV0 ZV9jdHgpKQogCQlyZXR1cm47CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJlcXVl c3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Nv bnRpbnVlKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKIAkJaWYg KHJlcXVlc3QtPmN0eCA9PSBpbmNvbXBsZXRlX2N0eCkKIAkJCXJlc2V0X3JlcXVlc3QocmVxdWVz dCk7CiB9CkBAIC0yNjk3LDcgKzI2OTcsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jbGVhbnVw X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogKGxvY2tsZXNzKSBs b29rdXAgZG9lc24ndCB0cnkgYW5kIHdhaXQgdXBvbiB0aGUgcmVxdWVzdCBhcyB3ZQogCSAqIHJl c2V0IGl0LgogCSAqLwotCWludGVsX2VuZ2luZV9pbml0X3NlcW5vKGVuZ2luZSwgZW5naW5lLT5s YXN0X3N1Ym1pdHRlZF9zZXFubyk7CisJaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKGVu Z2luZSwKKwkJCQkgICAgICAgZW5naW5lLT50aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8p OwogCiAJLyoKIAkgKiBDbGVhciB0aGUgZXhlY2xpc3RzIHF1ZXVlIHVwIGJlZm9yZSBmcmVlaW5n IHRoZSByZXF1ZXN0cywgYXMgdGhvc2UKQEAgLTI5ODgsMTcgKzI5ODksMjYgQEAgZGVzdHJveToK IAlyZXR1cm4gMDsKIH0KIAotaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgdW5zaWduZWQgaW50IGZsYWdzKQorc3RhdGlj IGludCB3YWl0X2Zvcl90aW1lbGluZShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsLCB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCWlu dCByZXQ7CisJaW50IHJldCwgaTsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2 KSB7Ci0JCWlmIChlbmdpbmUtPmxhc3RfY29udGV4dCA9PSBOVUxMKQotCQkJY29udGludWU7CisJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGwtPmVuZ2luZSk7IGkrKykgeworCQlyZXQgPSBp OTE1X2dlbV9hY3RpdmVfd2FpdCgmdGwtPmVuZ2luZVtpXS5sYXN0X3JlcXVlc3QsIGZsYWdzKTsK KwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CiAKLQkJcmV0 ID0gaW50ZWxfZW5naW5lX2lkbGUoZW5naW5lLCBmbGFncyk7CitpbnQgaTkxNV9nZW1fd2FpdF9m b3JfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IGZsYWdz KQoreworCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGw7CisJaW50IHJldDsKKworCWxpc3Rf Zm9yX2VhY2hfZW50cnkodGwsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKKwkJcmV0ID0g d2FpdF9mb3JfdGltZWxpbmUodGwsIGZsYWdzKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7 CiAJfQpAQCAtNDQxNCwxMiArNDQyNCw2IEBAIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5lcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQlkZXZfcHJpdi0+Z3QuY2xlYW51cF9lbmdpbmUoZW5naW5l KTsKIH0KIAotc3RhdGljIHZvaWQKLWluaXRfZW5naW5lX2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKLXsKLQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3Qp OwotfQotCiB2b2lkCiBpOTE1X2dlbV9sb2FkX2luaXRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKQEAgLTQ0NTIsMjIgKzQ0NTYsMzIgQEAgaTkxNV9nZW1fbG9h ZF9pbml0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaTkxNV9n ZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoZGV2KTsKIH0KIAotdm9pZAoraW50CiBpOTE1X2dlbV9s b2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0JaW50IGk7CisJaW50IGVycjsKIAogCWRl dl9wcml2LT5vYmplY3RzID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImk5MTVfZ2VtX29iamVjdCIs CiAJCQkJICBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QpLCAwLAogCQkJCSAgU0xB Ql9IV0NBQ0hFX0FMSUdOLAogCQkJCSAgTlVMTCk7CisJaWYgKCFkZXZfcHJpdi0+b2JqZWN0cykg eworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl9vdXQ7CisJfQorCiAJZGV2X3ByaXYtPnZt YXMgPQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgiaTkxNV9nZW1fdm1hIiwKIAkJCQkgIHNpemVvZihz dHJ1Y3QgaTkxNV92bWEpLCAwLAogCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLAogCQkJCSAgTlVM TCk7CisJaWYgKCFkZXZfcHJpdi0+dm1hcykgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGVy cl9vYmplY3RzOworCX0KKwogCWRldl9wcml2LT5yZXF1ZXN0cyA9CiAJCWttZW1fY2FjaGVfY3Jl YXRlKCJpOTE1X2dlbV9yZXF1ZXN0IiwKIAkJCQkgIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QpLCAwLApAQCAtNDQ3NSwxMyArNDQ4OSwyNCBAQCBpOTE1X2dlbV9sb2FkX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCQkgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKIAkJ CQkgIFNMQUJfREVTVFJPWV9CWV9SQ1UsCiAJCQkJICBOVUxMKTsKKwlpZiAoIWRldl9wcml2LT5y ZXF1ZXN0cykgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl92bWFzOworCX0KKworCW11 dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwlJTklUX0xJU1RfSEVBRCgm ZGV2X3ByaXYtPmd0LnRpbWVsaW5lcyk7CisJZXJyID0gaTkxNV9nZW1fdGltZWxpbmVfaW5pdChk ZXZfcHJpdiwKKwkJCQkgICAgICZkZXZfcHJpdi0+Z3QuZ2xvYmFsX3RpbWVsaW5lLAorCQkJCSAg ICAgIltleGVjdXRpb25dIik7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CisJaWYgKGVycikKKwkJZ290byBlcnJfcmVxdWVzdHM7CiAKIAlJTklUX0xJU1RfSEVB RCgmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5t bS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlz dCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKLQlmb3IgKGkg PSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKQotCQlpbml0X2VuZ2luZV9saXN0cygmZGV2 X3ByaXYtPmVuZ2luZVtpXSk7CiAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5ndC5yZXRp cmVfd29yaywKIAkJCSAgaTkxNV9nZW1fcmV0aXJlX3dvcmtfaGFuZGxlcik7CiAJSU5JVF9ERUxB WUVEX1dPUksoJmRldl9wcml2LT5ndC5pZGxlX3dvcmssCkBAIC00NDk4LDYgKzQ1MjMsMTcgQEAg aTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJYXRvbWljX3NldCgm ZGV2X3ByaXYtPm1tLmJzZF9lbmdpbmVfZGlzcGF0Y2hfaW5kZXgsIDApOwogCiAJc3Bpbl9sb2Nr X2luaXQoJmRldl9wcml2LT5mYl90cmFja2luZy5sb2NrKTsKKworCXJldHVybiAwOworCitlcnJf cmVxdWVzdHM6CisJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5yZXF1ZXN0cyk7CitlcnJf dm1hczoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnZtYXMpOworZXJyX29iamVjdHM6 CisJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5vYmplY3RzKTsKK2Vycl9vdXQ6CisJcmV0 dXJuIGVycjsKIH0KIAogdm9pZCBpOTE1X2dlbV9sb2FkX2NsZWFudXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCmluZGV4IDgyOTJlNzk3ZDliNS4uNzM1NTgw ZDcyZWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKQEAgLTMxLDQgKzMxLDYgQEAKICNkZWZp bmUgR0VNX0JVR19PTihleHByKQogI2VuZGlmCiAKKyNkZWZpbmUgSTkxNV9OVU1fRU5HSU5FUyA1 CisKICNlbmRpZiAvKiBfX0k5MTVfR0VNX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5jCmluZGV4IGJjMjdjODBiZTFlNC4uNTgxN2VjNTU4NDlmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBj b25zdCBjaGFyICppOTE1X2ZlbmNlX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBmZW5jZSAqZmVu Y2UpCiAJICogbXVsdGlwbGUgZXhlY3V0aW9uIGNvbnRleHRzIChmZW5jZSBjb250ZXh0cykgYXMg d2UgYWxsb3cKIAkgKiBlbmdpbmVzIHdpdGhpbiBhIHNpbmdsZSB0aW1lbGluZSB0byBleGVjdXRl IGluIHBhcmFsbGVsLgogCSAqLwotCXJldHVybiAiZ2xvYmFsIjsKKwlyZXR1cm4gdG9fcmVxdWVz dChmZW5jZSktPnRpbWVsaW5lLT5jb21tb24tPm5hbWU7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVf ZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpmZW5jZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEpCiAJCXJldHVybjsKIAogCWRvIHsKLQkJdG1wID0gbGlzdF9maXJzdF9lbnRyeSgm ZW5naW5lLT5yZXF1ZXN0X2xpc3QsCisJCXRtcCA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+ dGltZWxpbmUtPnJlcXVlc3RzLAogCQkJCSAgICAgICB0eXBlb2YoKnRtcCksIGxpbmspOwogCiAJ CWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHRtcCk7CkBAIC0yMzUsMjMgKzIzNSwyNCBAQCBzdGF0 aWMgaW50IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpOTE1X2dlbV9pbml0X3NlcW5vKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHNlcW5vKQorc3RhdGljIGludCBp OTE1X2dlbV9pbml0X2dsb2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCQkJICAgICAgdTMyIHNlcW5vKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKIAlpbnQgcmV0OwogCiAJLyogQ2FyZWZ1bGx5IHJldGlyZSBhbGwgcmVxdWVzdHMgd2l0 aG91dCB3cml0aW5nIHRvIHRoZSByaW5ncyAqLwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRl dl9wcml2KSB7Ci0JCXJldCA9IGludGVsX2VuZ2luZV9pZGxlKGVuZ2luZSwKLQkJCQkJSTkxNV9X QUlUX0lOVEVSUlVQVElCTEUgfAotCQkJCQlJOTE1X1dBSVRfTE9DS0VEKTsKLQkJaWYgKHJldCkK LQkJCXJldHVybiByZXQ7Ci0JfQorCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3By aXYsCisJCQkJICAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8CisJCQkJICAgICBJOTE1X1dB SVRfTE9DS0VEKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJaTkxNV9nZW1fcmV0aXJl X3JlcXVlc3RzKGRldl9wcml2KTsKIAogCS8qIElmIHRoZSBzZXFubyB3cmFwcyBhcm91bmQsIHdl IG5lZWQgdG8gY2xlYXIgdGhlIGJyZWFkY3J1bWIgcmJ0cmVlICovCi0JaWYgKCFpOTE1X3NlcW5v X3Bhc3NlZChzZXFubywgZGV2X3ByaXYtPm5leHRfc2Vxbm8pKSB7CisJaWYgKCFpOTE1X3NlcW5v X3Bhc3NlZChzZXFubywKKwkJCSAgICAgICBkZXZfcHJpdi0+Z3QuZ2xvYmFsX3RpbWVsaW5lLm5l eHRfc2Vxbm8pKSB7CiAJCXdoaWxlIChpbnRlbF9raWNrX3dhaXRlcnMoZGV2X3ByaXYpIHx8CiAJ CSAgICAgICBpbnRlbF9raWNrX3NpZ25hbGVycyhkZXZfcHJpdikpCiAJCQl5aWVsZCgpOwpAQCAt MjU5LDEyICsyNjAsMTIgQEAgc3RhdGljIGludCBpOTE1X2dlbV9pbml0X3NlcW5vKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHNlcW5vKQogCiAJLyogRmluYWxseSByZXNl dCBodyBzdGF0ZSAqLwogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQlpbnRl bF9lbmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIHNlcW5vKTsKKwkJaW50ZWxfZW5naW5lX2luaXRf Z2xvYmFsX3NlcW5vKGVuZ2luZSwgc2Vxbm8pOwogCiAJcmV0dXJuIDA7CiB9CiAKLWludCBpOTE1 X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQoraW50IGk5 MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5v KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK IAlpbnQgcmV0OwpAQCAtMjc1LDI4ICsyNzYsMzEgQEAgaW50IGk5MTVfZ2VtX3NldF9zZXFubyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCiAJLyogSFdTIHBhZ2UgbmVlZHMgdG8g YmUgc2V0IGxlc3MgdGhhbiB3aGF0IHdlCiAJICogd2lsbCBpbmplY3QgdG8gcmluZwogCSAqLwot CXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vxbm8oZGV2X3ByaXYsIHNlcW5vIC0gMSk7CisJcmV0ID0g aTkxNV9nZW1faW5pdF9nbG9iYWxfc2Vxbm8oZGV2X3ByaXYsIHNlcW5vIC0gMSk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAotCWRldl9wcml2LT5uZXh0X3NlcW5vID0gc2Vxbm87CisJZGV2 X3ByaXYtPmd0Lmdsb2JhbF90aW1lbGluZS5uZXh0X3NlcW5vID0gc2Vxbm87CiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgaTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubykKK3N0YXRpYyBpbnQgaTkxNV9nZW1fZ2V0X2dsb2Jh bF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICB1MzIg KnNlcW5vKQogeworCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwgPSAmZGV2X3ByaXYtPmd0 Lmdsb2JhbF90aW1lbGluZTsKKwogCS8qIHJlc2VydmUgMCBmb3Igbm9uLXNlcW5vICovCi0JaWYg KHVubGlrZWx5KGRldl9wcml2LT5uZXh0X3NlcW5vID09IDApKSB7CisJaWYgKHVubGlrZWx5KHRs LT5uZXh0X3NlcW5vID09IDApKSB7CiAJCWludCByZXQ7CiAKLQkJcmV0ID0gaTkxNV9nZW1faW5p dF9zZXFubyhkZXZfcHJpdiwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX2luaXRfZ2xvYmFsX3NlcW5v KGRldl9wcml2LCAwKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAKLQkJZGV2X3ByaXYt Pm5leHRfc2Vxbm8gPSAxOworCQl0bC0+bmV4dF9zZXFubyA9IDE7CiAJfQogCi0JKnNlcW5vID0g ZGV2X3ByaXYtPm5leHRfc2Vxbm8rKzsKKwkqc2Vxbm8gPSB0bC0+bmV4dF9zZXFubysrOwogCXJl dHVybiAwOwogfQogCkBAIC0zNTAsNyArMzU0LDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAK IAkvKiBNb3ZlIHRoZSBvbGRlc3QgcmVxdWVzdCB0byB0aGUgc2xhYi1jYWNoZSAoaWYgbm90IGlu IHVzZSEpICovCi0JcmVxID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZlbmdpbmUtPnJlcXVl c3RfbGlzdCwKKwlyZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmVuZ2luZS0+dGltZWxp bmUtPnJlcXVlc3RzLAogCQkJCSAgICAgICB0eXBlb2YoKnJlcSksIGxpbmspOwogCWlmIChyZXEg JiYgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKIAkJaTkxNV9nZW1fcmVxdWVzdF9y ZXRpcmUocmVxKTsKQEAgLTM4NywxNSArMzkxLDE3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWlmICghcmVxKQogCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKIAotCXJldCA9IGk5MTVfZ2VtX2dldF9zZXFubyhkZXZfcHJpdiwgJnNl cW5vKTsKKwlyZXQgPSBpOTE1X2dlbV9nZXRfZ2xvYmFsX3NlcW5vKGRldl9wcml2LCAmc2Vxbm8p OwogCWlmIChyZXQpCiAJCWdvdG8gZXJyOwogCisJcmVxLT50aW1lbGluZSA9IGVuZ2luZS0+dGlt ZWxpbmU7CisKIAlzcGluX2xvY2tfaW5pdCgmcmVxLT5sb2NrKTsKIAlmZW5jZV9pbml0KCZyZXEt PmZlbmNlLAogCQkgICAmaTkxNV9mZW5jZV9vcHMsCiAJCSAgICZyZXEtPmxvY2ssCi0JCSAgIGVu Z2luZS0+ZmVuY2VfY29udGV4dCwKKwkJICAgcmVxLT50aW1lbGluZS0+ZmVuY2VfY29udGV4dCwK IAkJICAgc2Vxbm8pOwogCiAJaTkxNV9zd19mZW5jZV9pbml0KCZyZXEtPnN1Ym1pdCwgc3VibWl0 X25vdGlmeSk7CkBAIC00NTAsOSArNDU2LDE1IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvLAogCiAJR0VNX0JVR19PTih0byA9 PSBmcm9tKTsKIAotCWlmICh0by0+ZW5naW5lID09IGZyb20tPmVuZ2luZSkKKwlpZiAodG8tPnRp bWVsaW5lID09IGZyb20tPnRpbWVsaW5lKQogCQlyZXR1cm4gMDsKIAorCWlmICh0by0+ZW5naW5l ID09IGZyb20tPmVuZ2luZSkgeworCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNl KCZ0by0+c3VibWl0LCAmZnJvbS0+c3VibWl0LAorCQkJCQkJICAgTlVMTCwgR0ZQX0tFUk5FTCk7 CisJCXJldHVybiByZXQgPCAwID8gcmV0IDogMDsKKwl9CisKIAlpZHggPSBpbnRlbF9lbmdpbmVf c3luY19pbmRleChmcm9tLT5lbmdpbmUsIHRvLT5lbmdpbmUpOwogCWlmIChmcm9tLT5mZW5jZS5z ZXFubyA8PSBmcm9tLT5lbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lkeF0pCiAJCXJldHVy biAwOwpAQCAtNjA3LDYgKzYxOSw3IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiB7CiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwogCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRpbWVsaW5lID0gcmVxdWVzdC0+dGltZWxpbmU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpwcmV2OwogCXUzMiByZXF1ZXN0X3N0YXJ0OwogCXUzMiByZXNlcnZlZF90YWlsOwpAQCAt NjYzLDE3ICs2NzYsMTcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAkgKiBzZWUgYSBtb3Jl IHJlY2VudCB2YWx1ZSBpbiB0aGUgaHdzIHRoYW4gd2UgYXJlIHRyYWNraW5nLgogCSAqLwogCi0J cHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0LAorCXByZXYg PSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAogCQkJCSAgICZy ZXF1ZXN0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAlpZiAocHJldikKIAkJaTkxNV9zd19m ZW5jZV9hd2FpdF9zd19mZW5jZSgmcmVxdWVzdC0+c3VibWl0LCAmcHJldi0+c3VibWl0LAogCQkJ CQkgICAgICZyZXF1ZXN0LT5zdWJtaXRxLCBHRlBfTk9XQUlUKTsKIAogCXJlcXVlc3QtPmVtaXR0 ZWRfamlmZmllcyA9IGppZmZpZXM7Ci0JcmVxdWVzdC0+cHJldmlvdXNfc2Vxbm8gPSBlbmdpbmUt Pmxhc3Rfc3VibWl0dGVkX3NlcW5vOwotCWVuZ2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8gPSBy ZXF1ZXN0LT5mZW5jZS5zZXFubzsKLQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZlbmdpbmUtPmxhc3Rf cmVxdWVzdCwgcmVxdWVzdCk7Ci0JbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+bGluaywgJmVuZ2lu ZS0+cmVxdWVzdF9saXN0KTsKKwlyZXF1ZXN0LT5wcmV2aW91c19zZXFubyA9IHRpbWVsaW5lLT5s YXN0X3N1Ym1pdHRlZF9zZXFubzsKKwl0aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8gPSBy ZXF1ZXN0LT5mZW5jZS5zZXFubzsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ0aW1lbGluZS0+bGFz dF9yZXF1ZXN0LCByZXF1ZXN0KTsKKwlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmdGlt ZWxpbmUtPnJlcXVlc3RzKTsKIAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5yaW5nX2xpbmssICZy aW5nLT5yZXF1ZXN0X2xpc3QpOwogCiAJaTkxNV9nZW1fbWFya19idXN5KGVuZ2luZSk7CkBAIC04 NzQsNyArODg3LDggQEAgc3RhdGljIGJvb2wgZW5naW5lX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LCAqbmV4dDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBu ZXh0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUocmVxdWVzdCwgbmV4dCwKKwkJCQkgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBs aW5rKSB7CiAJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCiAJCQly ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAppbmRl eCBmZTc1MDI2YzYwZTAuLjZjNzhjYTBkODVhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuaApAQCAtODEsNiArODEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgewogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGltZWxpbmU7CiAJc3RydWN0IGludGVsX3NpZ25hbF9ub2RlIHNpZ25hbGluZzsK IAogCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIHN1Ym1pdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV90aW1lbGluZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZGEyZTBkMGMyMzJlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdGltZWxpbmUuYwpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUg U09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitpbnQgaTkxNV9n ZW1fdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSAgIHN0 cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUsCisJCQkgICBjb25zdCBjaGFyICpuYW1l KQoreworCXU2NCBmZW5jZXM7CisJaW50IGk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKworCXRpbWVsaW5lLT5pOTE1ID0gaTkxNTsKKwl0aW1lbGlu ZS0+bmFtZSA9IGtzdHJkdXAobmFtZSA/OiAiW2tlcm5lbF0iLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXRpbWVsaW5lLT5uYW1lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWxpc3RfYWRkKCZ0aW1lbGlu ZS0+bGluaywgJmk5MTUtPmd0LnRpbWVsaW5lcyk7CisKKwlmZW5jZXMgPSBmZW5jZV9jb250ZXh0 X2FsbG9jKEFSUkFZX1NJWkUodGltZWxpbmUtPmVuZ2luZSkpOworCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHRpbWVsaW5lLT5lbmdpbmUpOyBpKyspIHsKKwkJc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2ldOworCisJCXRsLT5mZW5jZV9jb250ZXh0ID0g ZmVuY2VzICsgaTsKKwkJdGwtPmNvbW1vbiA9IHRpbWVsaW5lOworCisJCWluaXRfcmVxdWVzdF9h Y3RpdmUoJnRsLT5sYXN0X3JlcXVlc3QsIE5VTEwpOworCQlJTklUX0xJU1RfSEVBRCgmdGwtPnJl cXVlc3RzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpOTE1X2dlbV90aW1lbGluZV9m aW5pKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmdGwtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJbGlzdF9kZWwoJnRsLT5saW5rKTsK KwlrZnJlZSh0bC0+bmFtZSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV90aW1lbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxp bmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMzY2JhZjI4ZTk1 OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVs aW5lLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaWZuZGVmIEk5MTVfR0VNX1RJTUVMSU5FX0gKKyNkZWZpbmUgSTkxNV9HRU1f VElNRUxJTkVfSAorCisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorCisjaW5jbHVkZSAiaTkxNV9n ZW1fcmVxdWVzdC5oIgorCitzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmU7CisKK3N0cnVjdCBpbnRl bF90aW1lbGluZSB7CisJdTY0IGZlbmNlX2NvbnRleHQ7CisJdTMyIGxhc3Rfc3VibWl0dGVkX3Nl cW5vOworCisJLyoqCisJICogTGlzdCBvZiBicmVhZGNydW1icyBhc3NvY2lhdGVkIHdpdGggR1BV IHJlcXVlc3RzIGN1cnJlbnRseQorCSAqIG91dHN0YW5kaW5nLgorCSAqLworCXN0cnVjdCBsaXN0 X2hlYWQgcmVxdWVzdHM7CisKKwkvKiBBbiBSQ1UgZ3VhcmRlZCBwb2ludGVyIHRvIHRoZSBsYXN0 IHJlcXVlc3QuIE5vIHJlZmVyZW5jZSBpcworCSAqIGhlbGQgdG8gdGhlIHJlcXVlc3QsIHVzZXJz IG11c3QgY2FyZWZ1bGx5IGFjcXVpcmUgYSByZWZlcmVuY2UgdG8KKwkgKiB0aGUgcmVxdWVzdCB1 c2luZyBpOTE1X2dlbV9hY3RpdmVfZ2V0X3JlcXVlc3RfcmN1KCksIG9yIGhvbGQgdGhlCisJICog c3RydWN0X211dGV4LgorCSAqLworCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZXF1ZXN0 OworCisJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICpjb21tb247Cit9OworCitzdHJ1Y3QgaTkx NV9nZW1fdGltZWxpbmUgeworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKKwl1MzIgbmV4dF9zZXFu bzsKKworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCWNvbnN0IGNoYXIgKm5hbWU7 CisKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOworfTsK KworaW50IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCisJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsLAorCQkJICAgY29uc3QgY2hh ciAqbmFtZSk7Cit2b2lkIGk5MTVfZ2VtX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfZ2VtX3Rp bWVsaW5lICp0bCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK aW5kZXggM2QzZjQxMGQ5YWE5Li4xZTI3MTAwOGYxZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVj b3JkX2VuZ2luZV9yZWdpc3RlcnMoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwK IAllZS0+aW5zdHBtID0gSTkxNV9SRUFEKFJJTkdfSU5TVFBNKGVuZ2luZS0+bW1pb19iYXNlKSk7 CiAJZWUtPmFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOwogCWVl LT5zZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKLQllZS0+bGFzdF9zZXFu byA9IGVuZ2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm87CisJZWUtPmxhc3Rfc2Vxbm8gPSBlbmdp bmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubzsKIAllZS0+c3RhcnQgPSBJOTE1X1JF QURfU1RBUlQoZW5naW5lKTsKIAllZS0+aGVhZCA9IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7CiAJ ZWUtPnRhaWwgPSBJOTE1X1JFQURfVEFJTChlbmdpbmUpOwpAQCAtMTA4OCw3ICsxMDg4LDcgQEAg c3RhdGljIHZvaWQgZW5naW5lX3JlY29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAKIAljb3VudCA9IDA7CiAJcmVxdWVzdCA9IGZpcnN0OwotCWxpc3RfZm9yX2Vh Y2hfZW50cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0 cywgbGluaykKIAkJY291bnQrKzsKIAlpZiAoIWNvdW50KQogCQlyZXR1cm47CkBAIC0xMTAxLDcg KzExMDEsNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVjb3JkX3JlcXVlc3RzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCWNvdW50ID0gMDsKIAlyZXF1ZXN0ID0gZmlyc3Q7Ci0J bGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwg bGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5lLT50aW1l bGluZS0+cmVxdWVzdHMsIGxpbmspIHsKIAkJc3RydWN0IGRybV9pOTE1X2Vycm9yX3JlcXVlc3Qg KmVycTsKIAogCQlpZiAoY291bnQgPj0gZWUtPm51bV9yZXF1ZXN0cykgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDI3OWE0ZDA2MDI4OC4uYjczZTkw MjBjYmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBA IC0xMDI0LDcgKzEwMjQsOCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0g aTkxNV9ndWNfc3VibWl0OwogCiAJCS8qIFJlcGxheSB0aGUgY3VycmVudCBzZXQgb2YgcHJldmlv dXNseSBzdWJtaXR0ZWQgcmVxdWVzdHMgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0 LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspIHsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShy ZXF1ZXN0LAorCQkJCSAgICAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspIHsKIAkJ CWNsaWVudC0+d3FfcnN2ZCArPSBzaXplb2Yoc3RydWN0IGd1Y193cV9pdGVtKTsKIAkJCWlmIChp OTE1X3N3X2ZlbmNlX2RvbmUoJnJlcXVlc3QtPnN1Ym1pdCkpCiAJCQkJaTkxNV9ndWNfc3VibWl0 KHJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggODQ2MjgxN2E3ZGFlLi5hZDZi MTQ1OWExYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMzA5NCw3ICszMDk0LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAKIAkJYWN0aGQgPSBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7CiAJ CXNlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwotCQlzdWJtaXQgPSBSRUFE X09OQ0UoZW5naW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7CisJCXN1Ym1pdCA9IFJFQURfT05D RShlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7CiAKIAkJaWYgKGVuZ2lu ZS0+aGFuZ2NoZWNrLnNlcW5vID09IHNlcW5vKSB7CiAJCQlpZiAoaTkxNV9zZXFub19wYXNzZWQo c2Vxbm8sIHN1Ym1pdCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5k ZXggZTQwNWYxMDgwMjk2Li44N2ZlYWVmZjQzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xlYW51cDoKIAlyZXR1cm4gcmV0Owog fQogCi12b2lkIGludGVsX2VuZ2luZV9pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgdTMyIHNlcW5vKQordm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCkBAIC0xOTcsNyArMTk3 LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHUzMiBzZXFubykKIAlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsIEk5 MTVfR0VNX0hXU19JTkRFWCwgc2Vxbm8pOwogCWlmIChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVy KQogCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7Ci0JZW5naW5lLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubyA9IHNlcW5vOworCWVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0dGVk X3NlcW5vID0gc2Vxbm87CiAKIAllbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9IHNlcW5vOwogCkBA IC0yMTcsOCArMjE3LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5p dF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW5pdF9yZXF1 ZXN0X2FjdGl2ZSgmZW5naW5lLT5sYXN0X3JlcXVlc3QsIE5VTEwpOwotCUlOSVRfTElTVF9IRUFE KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCk7CisJZW5naW5lLT50aW1lbGluZSA9ICZlbmdpbmUtPmk5 MTUtPmd0Lmdsb2JhbF90aW1lbGluZS5lbmdpbmVbZW5naW5lLT5pZF07CiB9CiAKIC8qKgpAQCAt MjM1LDggKzIzNCw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3Rf cXVldWUpOwogCXNwaW5fbG9ja19pbml0KCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwogCi0JZW5n aW5lLT5mZW5jZV9jb250ZXh0ID0gZmVuY2VfY29udGV4dF9hbGxvYygxKTsKLQogCWludGVsX2Vu Z2luZV9pbml0X3JlcXVlc3RzKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNr KGVuZ2luZSk7CiAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZSwgJmVuZ2luZS0+YmF0 Y2hfcG9vbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggODBm MmRiM2Q2M2Q5Li5kNmY4MGIzZDY2YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKQEAgLTQsNiArNCw3IEBACiAjaW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+CiAj aW5jbHVkZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5oIgogI2luY2x1ZGUgImk5MTVfZ2VtX3JlcXVl c3QuaCIKKyNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgogCiAjZGVmaW5lIEk5MTVfQ01E X0hBU0hfT1JERVIgOQogCkBAIC0xNDEsNyArMTQyLDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7CiAJCVZDUzIsCS8qIEtlZXAgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIHR5cGUgZW5naW5lIHRv Z2V0aGVyLiAqLwogCQlWRUNTCiAJfSBpZDsKLSNkZWZpbmUgSTkxNV9OVU1fRU5HSU5FUyA1CiAj ZGVmaW5lIF9WQ1MobikgKFZDUyArIChuKSkKIAl1bnNpZ25lZCBpbnQgZXhlY19pZDsKIAllbnVt IGludGVsX2VuZ2luZV9od19pZCB7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzIHsKIAkJVkNTMl9IVwogCX0gaHdfaWQ7CiAJZW51bSBpbnRlbF9lbmdpbmVfaHdf aWQgZ3VjX2lkOyAvKiBYWFggc2FtZSBhcyBod19pZD8gKi8KLQl1NjQgZmVuY2VfY29udGV4dDsK IAl1MzIJCW1taW9fYmFzZTsKIAl1bnNpZ25lZCBpbnQgaXJxX3NoaWZ0OwogCXN0cnVjdCBpbnRl bF9yaW5nICpidWZmZXI7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZTsKIAogCS8q IFJhdGhlciB0aGFuIGhhdmUgZXZlcnkgY2xpZW50IHdhaXQgdXBvbiBhbGwgdXNlciBpbnRlcnJ1 cHRzLAogCSAqIHdpdGggdGhlIGhlcmQgd2FraW5nIGFmdGVyIGV2ZXJ5IGludGVycnVwdCBhbmQg ZWFjaCBkb2luZyB0aGUKQEAgLTMxNiwyNiArMzE2LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7CiAJYm9vbCBwcmVlbXB0X3dhOwogCXUzMiBjdHhfZGVzY190ZW1wbGF0ZTsKIAotCS8qKgot CSAqIExpc3Qgb2YgYnJlYWRjcnVtYnMgYXNzb2NpYXRlZCB3aXRoIEdQVSByZXF1ZXN0cyBjdXJy ZW50bHkKLQkgKiBvdXRzdGFuZGluZy4KLQkgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVlc3Rf bGlzdDsKLQotCS8qKgotCSAqIFNlcW5vIG9mIHJlcXVlc3QgbW9zdCByZWNlbnRseSBzdWJtaXR0 ZWQgdG8gcmVxdWVzdF9saXN0LgotCSAqIFVzZWQgZXhjbHVzaXZlbHkgYnkgaGFuZyBjaGVja2Vy IHRvIGF2b2lkIGdyYWJiaW5nIGxvY2sgd2hpbGUKLQkgKiBpbnNwZWN0aW5nIHJlcXVlc3QgbGlz dC4KLQkgKi8KLQl1MzIgbGFzdF9zdWJtaXR0ZWRfc2Vxbm87Ci0KLQkvKiBBbiBSQ1UgZ3VhcmRl ZCBwb2ludGVyIHRvIHRoZSBsYXN0IHJlcXVlc3QuIE5vIHJlZmVyZW5jZSBpcwotCSAqIGhlbGQg dG8gdGhlIHJlcXVlc3QsIHVzZXJzIG11c3QgY2FyZWZ1bGx5IGFjcXVpcmUgYSByZWZlcmVuY2Ug dG8KLQkgKiB0aGUgcmVxdWVzdCB1c2luZyBpOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdSgpLCBvciBo b2xkIHRoZQotCSAqIHN0cnVjdF9tdXRleC4KLQkgKi8KLQlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl IGxhc3RfcmVxdWVzdDsKLQogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpsYXN0X2NvbnRleHQ7 CiAKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7CkBAIC00OTEsNyAr NDcxLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ19vZmZzZXQoc3RydWN0IGludGVs X3JpbmcgKnJpbmcsIHUzMiB2YWx1ZSkKIGludCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhlYWQs IGludCB0YWlsLCBpbnQgc2l6ZSk7CiB2b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVj dCBpbnRlbF9yaW5nICpyaW5nKTsKIAotdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9zZXFubyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubyk7Cit2b2lkIGludGVsX2VuZ2lu ZV9pbml0X2dsb2JhbF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBz ZXFubyk7CiB2b2lkIGludGVsX2VuZ2luZV9yZXNldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIAogdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CkBAIC00OTksMTMgKzQ3OSw2IEBAIGludCBpbnRlbF9lbmdp bmVfaW5pdF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGludCBpbnRl bF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBp bnQgc2l6ZSk7CiB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwogCi1zdGF0aWMgaW5saW5lIGludCBpbnRlbF9lbmdpbmVfaWRs ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkJICAgIHVuc2lnbmVkIGludCBm bGFncykKLXsKLQkvKiBXYWl0IHVwb24gdGhlIGxhc3QgcmVxdWVzdCB0byBiZSBjb21wbGV0ZWQg Ki8KLQlyZXR1cm4gaTkxNV9nZW1fYWN0aXZlX3dhaXQoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0LCBm bGFncyk7Ci19Ci0KIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwogaW50IGludGVsX2luaXRfYnNkX3JpbmdfYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBpbnQgaW50ZWxfaW5pdF9ic2QyX3Jpbmdf YnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CkBAIC01ODksNyArNTYyLDcg QEAgdW5zaWduZWQgaW50IGludGVsX2tpY2tfc2lnbmFsZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKIAogc3RhdGljIGlubGluZSBib29sIGludGVsX2VuZ2luZV9pc19hY3RpdmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXJldHVybiBpOTE1X2dlbV9hY3Rp dmVfaXNzZXQoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0KTsKKwlyZXR1cm4gaTkxNV9nZW1fYWN0aXZl X2lzc2V0KCZlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QpOwogfQogCiAjZW5kaWYgLyog X0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK