From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 28/41] drm/i915: Combine seqno + tracking into a global timeline struct Date: Thu, 20 Oct 2016 16:04:10 +0100 Message-ID: <20161020150423.4560-29-chris@chris-wilson.co.uk> References: <20161020150423.4560-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-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7D8796EBAE for ; Thu, 20 Oct 2016 15:05:01 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id x79so462901lff.2 for ; Thu, 20 Oct 2016 08:05:01 -0700 (PDT) In-Reply-To: <20161020150423.4560-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 LnVrPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAg ICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8IDMz ICsrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAg IHwgIDYgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAg OSArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCA3MiAr KysrKysrKysrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u aCAgICAgICAgICAgIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5jICAgIHwgODEgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aW1lbGluZS5jICAgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaCAgIHwgNzAgKysrKysrKysrKysr KysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAg ICB8ICA2ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICB8ICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAxNSArKystLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8IDM2ICsrLS0tLS0t LS0tLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDI4NiBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlt ZWxpbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3RpbWVsaW5lLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDdmYWEwNGM5MWUxYS4uMjQwY2U5 YThkNjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDIsNiArNDIsNyBAQCBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaTkxNV9nZW1fc2hyaW5rZXIubyBcCiAJICBpOTE1X2dl bV9zdG9sZW4ubyBcCiAJICBpOTE1X2dlbV90aWxpbmcubyBcCisJICBpOTE1X2dlbV90aW1lbGlu ZS5vIFwKIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCiAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwK IAkgIGludGVsX2JyZWFkY3J1bWJzLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCBiNjdkYjU3YmMxMzUuLjZkNzRhMDJhMDY3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3BhZ2VmbGlw X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCQkJCXNlcV9wcmludGYobSwg IkZsaXAgcXVldWVkIG9uICVzIGF0IHNlcW5vICV4LCBuZXh0IHNlcW5vICV4IFtjdXJyZW50IGJy ZWFkY3J1bWIgJXhdLCBjb21wbGV0ZWQ/ICVkXG4iLAogCQkJCQkgICBlbmdpbmUtPm5hbWUsCiAJ CQkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHdvcmstPmZsaXBfcXVldWVkX3JlcSks Ci0JCQkJCSAgIGRldl9wcml2LT5uZXh0X3NlcW5vLAorCQkJCQkgICBkZXZfcHJpdi0+Z3QuZ2xv YmFsX3RpbWVsaW5lLm5leHRfc2Vxbm8sCiAJCQkJCSAgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8o ZW5naW5lKSwKIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQod29yay0+ZmxpcF9x dWV1ZWRfcmVxKSk7CiAJCQl9IGVsc2UKQEAgLTY2MiwxMyArNjYyLDEzIEBAIHN0YXRpYyBpbnQg aTkxNV9nZW1fcmVxdWVzdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJ aW50IGNvdW50OwogCiAJCWNvdW50ID0gMDsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKIAkJCWNvdW50Kys7CiAJCWlmIChjb3Vu dCA9PSAwKQogCQkJY29udGludWU7CiAKIAkJc2VxX3ByaW50ZihtLCAiJXMgcmVxdWVzdHM6ICVk XG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKIAkJCXByaW50X3JlcXVlc3QobSwgcmVx LCAiICAgICIpOwogCiAJCWFueSsrOwpAQCAtMTA1MiwxNSArMTA1Miw4IEBAIHN0YXRpYyBpbnQK IGk5MTVfbmV4dF9zZXFub19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKLQotCSp2YWwgPSBkZXZfcHJpdi0+bmV4dF9zZXFubzsKLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAorCSp2YWwgPSBSRUFE X09OQ0UoZGV2X3ByaXYtPmd0Lmdsb2JhbF90aW1lbGluZS5uZXh0X3NlcW5vKTsKIAlyZXR1cm4g MDsKIH0KIApAQCAtMTA3NSw3ICsxMDY4LDcgQEAgaTkxNV9uZXh0X3NlcW5vX3NldCh2b2lkICpk YXRhLCB1NjQgdmFsKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpOTE1X2dl bV9zZXRfc2Vxbm8oZGV2LCB2YWwpOworCXJldCA9IGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8o ZGV2LCB2YWwpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmV0dXJu IHJldDsKQEAgLTEzNjQsNyArMTM1Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2VxX3ByaW50ZihtLCAiXHRz ZXFubyA9ICV4IFtjdXJyZW50ICV4LCBsYXN0ICV4XVxuIiwKIAkJCSAgIGVuZ2luZS0+aGFuZ2No ZWNrLnNlcW5vLAogCQkJICAgc2Vxbm9baWRdLAotCQkJICAgZW5naW5lLT5sYXN0X3N1Ym1pdHRl ZF9zZXFubyk7CisJCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7 CiAJCXNlcV9wcmludGYobSwgIlx0d2FpdGVycz8gJXMsIGZha2UgaXJxIGFjdGl2ZT8gJXNcbiIs CiAJCQkgICB5ZXNubyhpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKSwKIAkJCSAgIHll c25vKHRlc3RfYml0KGVuZ2luZS0+aWQsCkBAIC0zMTEzLDcgKzMxMDYsNyBAQCBzdGF0aWMgaW50 IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNl cV9wcmludGYobSwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwogCQlzZXFfcHJpbnRmKG0sICJcdGN1 cnJlbnQgc2Vxbm8gJXgsIGxhc3QgJXgsIGhhbmdjaGVjayAleCBbc2NvcmUgJWRdXG4iLAogCQkJ ICAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpLAotCQkJICAgZW5naW5lLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubywKKwkJCSAgIGVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3Nl cW5vLAogCQkJICAgZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8sCiAJCQkgICBlbmdpbmUtPmhhbmdj aGVjay5zY29yZSk7CiAKQEAgLTMxMjEsMTQgKzMxMTQsMTQgQEAgc3RhdGljIGludCBpOTE1X2Vu Z2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCXNlcV9wcmlu dGYobSwgIlx0UmVxdWVzdHM6XG4iKTsKIAotCQlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2lu ZS0+cmVxdWVzdF9saXN0LAotCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7 Ci0JCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2luZS0+cmVxdWVzdF9saXN0KQorCQlycSA9IGxpc3Rf Zmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAorCQkJCSAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7CisJCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2lu ZS0+dGltZWxpbmUtPnJlcXVlc3RzKQogCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRmaXJz dCAgIik7CiAKLQkJcnEgPSBsaXN0X2xhc3RfZW50cnkoJmVuZ2luZS0+cmVxdWVzdF9saXN0LAot CQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7Ci0JCWlmICgmcnEtPmxpbmsg IT0gJmVuZ2luZS0+cmVxdWVzdF9saXN0KQorCQlycSA9IGxpc3RfbGFzdF9lbnRyeSgmZW5naW5l LT50aW1lbGluZS0+cmVxdWVzdHMsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QsIGxpbmspOworCQlpZiAoJnJxLT5saW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0 cykKIAkJCXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0bGFzdCAgICIpOwogCiAJCXJxID0gaTkx NV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK aW5kZXggYzNkZjIyOTM0NmJkLi5hMzJlMTI4YWY0NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwpAQCAtODMxLDcgKzgzMSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfaW5pdF9kaXNwbGF5X2hv b2tzKGRldl9wcml2KTsKIAlpbnRlbF9pbml0X2Nsb2NrX2dhdGluZ19ob29rcyhkZXZfcHJpdik7 CiAJaW50ZWxfaW5pdF9hdWRpb19ob29rcyhkZXZfcHJpdik7Ci0JaTkxNV9nZW1fbG9hZF9pbml0 KCZkZXZfcHJpdi0+ZHJtKTsKKwlyZXQgPSBpOTE1X2dlbV9sb2FkX2luaXQoJmRldl9wcml2LT5k cm0pOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9ndnQ7CiAKIAlpbnRlbF9kaXNwbGF5X2Ny Y19pbml0KGRldl9wcml2KTsKIApAQCAtODQxLDYgKzg0Myw4IEBAIHN0YXRpYyBpbnQgaTkxNV9k cml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAly ZXR1cm4gMDsKIAorZXJyX2d2dDoKKwlpbnRlbF9ndnRfY2xlYW51cChkZXZfcHJpdik7CiBlcnJf d29ya3F1ZXVlczoKIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7CiAJcmV0dXJu IHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGY0OGI0ZmUxNDM3MC4uMTZlMWY2YzM1 ZWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRl ICJpOTE1X2dlbV9ndHQuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKICNp bmNsdWRlICJpOTE1X2dlbV9yZXF1ZXN0LmgiCisjaW5jbHVkZSAiaTkxNV9nZW1fdGltZWxpbmUu aCIKIAogI2luY2x1ZGUgImludGVsX2d2dC5oIgogCkBAIC0xODIxLDcgKzE4MjIsNiBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtlcm5lbF9j b250ZXh0OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZVtJOTE1X05VTV9FTkdJTkVT XTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnNlbWFwaG9yZTsKLQl1MzIgbmV4dF9zZXFubzsKIAogCXN0 cnVjdCBkcm1fZG1hX2hhbmRsZSAqc3RhdHVzX3BhZ2VfZG1haDsKIAlzdHJ1Y3QgcmVzb3VyY2Ug bWNoX3JlczsKQEAgLTIwNzksNiArMjA3OSw5IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAkJdm9pZCAoKnJlc3VtZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7CiAJCXZvaWQgKCpj bGVhbnVwX2VuZ2luZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAorCQlzdHJ1 Y3QgbGlzdF9oZWFkIHRpbWVsaW5lczsKKwkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lIGdsb2Jh bF90aW1lbGluZTsKKwogCQkvKioKIAkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29uc2lkZXJl ZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwogCQkgKiB1c2Vyc3BhY2UgcmVxdWVzdHM/IFdoaWxz dCBpZGxlLCB3ZSBhbGxvdyBydW50aW1lIHBvd2VyCkBAIC0zMTYyLDcgKzMxNjUsNyBAQCBpbnQg aTkxNV9nZW1fZ2V0X2FwZXJ0dXJlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50IGk5MTVfZ2VtX3dh aXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2KTsKLXZvaWQgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOworaW50IGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHZvaWQgaTkxNV9nZW1fbG9hZF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owogdm9pZCBpOTE1X2dlbV9sb2FkX2luaXRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiBpbnQgaTkxNV9nZW1fZnJlZXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CkBAIC0zMzM0LDcgKzMzMzcsNyBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2Zi KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqbmV3LAogCQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7 CiAKLWludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHUzMiBzZXFubyk7CitpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxf c2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKIAogc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICoKIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGJlNGZl ZTJjYjIwOC4uNDIzNDRiMWU0ZTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTM3MSw3 ICszNzEsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShzdHJ1Y3QgZmVuY2UgKmZlbmNl LAogCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgJiYgaTkxNV9nZW1fcmVxdWVzdF9jb21w bGV0ZWQocnEpKQogCQlpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHJxKTsKIAotCWlmIChy cHMgJiYgcnEtPmZlbmNlLnNlcW5vID09IHJxLT5lbmdpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5v KSB7CisJaWYgKHJwcyAmJiBycS0+ZmVuY2Uuc2Vxbm8gPT0gcnEtPnRpbWVsaW5lLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubykgewogCQkvKiBUaGUgR1BVIGlzIG5vdyBpZGxlIGFuZCB0aGlzIGNsaWVu dCBoYXMgc3RhbGxlZC4KIAkJICogU2luY2Ugbm8gb3RoZXIgY2xpZW50IGhhcyBzdWJtaXR0ZWQg YSByZXF1ZXN0IGluIHRoZQogCQkgKiBtZWFudGltZSwgYXNzdW1lIHRoYXQgdGhpcyBjbGllbnQg aXMgdGhlIG9ubHkgb25lCkBAIC0yNTY2LDcgKzI1NjYsNyBAQCBpOTE1X2dlbV9maW5kX2FjdGl2 ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBleHRyYSBkZWxh eSBmb3IgYSByZWNlbnQgaW50ZXJydXB0IGlzIHBvaW50bGVzcy4gSGVuY2UsIHdlIGRvCiAJICog bm90IG5lZWQgYW4gZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUgc2Vxbm8g cmVhZHMuCiAJICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1 ZXN0X2xpc3QsIGxpbmspIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUt PnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewogCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21w bGV0ZWQocmVxdWVzdCkpCiAJCQljb250aW51ZTsKIApAQCAtMjYzNSw3ICsyNjM1LDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KGluY29tcGxldGVfY3R4KSkK IAkJcmV0dXJuOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShyZXF1ZXN0LCAmZW5n aW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShy ZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspCiAJCWlmIChyZXF1ZXN0 LT5jdHggPT0gaW5jb21wbGV0ZV9jdHgpCiAJCQlyZXNldF9yZXF1ZXN0KHJlcXVlc3QpOwogfQpA QCAtMjY3NCw3ICsyNjc0LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2xlYW51cF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIChsb2NrbGVzcykgbG9va3VwIGRv ZXNuJ3QgdHJ5IGFuZCB3YWl0IHVwb24gdGhlIHJlcXVlc3QgYXMgd2UKIAkgKiByZXNldCBpdC4K IAkgKi8KLQlpbnRlbF9lbmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIGVuZ2luZS0+bGFzdF9zdWJt aXR0ZWRfc2Vxbm8pOworCWludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFubyhlbmdpbmUsCisJ CQkJICAgICAgIGVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vKTsKIAogCS8q CiAJICogQ2xlYXIgdGhlIGV4ZWNsaXN0cyBxdWV1ZSB1cCBiZWZvcmUgZnJlZWluZyB0aGUgcmVx dWVzdHMsIGFzIHRob3NlCkBAIC0yOTgyLDE4ICsyOTgzLDI2IEBAIGludCBpOTE1X3ZtYV91bmJp bmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIDA7CiB9CiAKLWludCBpOTE1X2dlbV93 YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgIHVu c2lnbmVkIGludCBmbGFncykKK3N0YXRpYyBpbnQgd2FpdF9mb3JfdGltZWxpbmUoc3RydWN0IGk5 MTVfZ2VtX3RpbWVsaW5lICp0bCwgdW5zaWduZWQgaW50IGZsYWdzKQogewotCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKLQlpbnQgcmV0 OworCWludCByZXQsIGk7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQp IHsKLQkJaWYgKGVuZ2luZS0+bGFzdF9jb250ZXh0ID09IE5VTEwpCi0JCQljb250aW51ZTsKKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0bC0+ZW5naW5lKTsgaSsrKSB7CisJCXJldCA9IGk5 MTVfZ2VtX2FjdGl2ZV93YWl0KCZ0bC0+ZW5naW5lW2ldLmxhc3RfcmVxdWVzdCwgZmxhZ3MpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CiAKLQkJcmV0ID0gaW50ZWxfZW5naW5lX2lk bGUoZW5naW5lLCBmbGFncyk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBpOTE1X2dlbV93YWl0X2Zv cl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cit7CisJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0bDsKKwlpbnQgcmV0OworCisJbGlzdF9m b3JfZWFjaF9lbnRyeSh0bCwgJmk5MTUtPmd0LnRpbWVsaW5lcywgbGluaykgeworCQlyZXQgPSB3 YWl0X2Zvcl90aW1lbGluZSh0bCwgZmxhZ3MpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsK IAl9CkBAIC00Njc2LDIxICs0Njg1LDMyIEBAIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWk5MTVfZ2VtX2RldGVjdF9iaXRfNl9z d2l6emxlKGRldik7CiB9CiAKLXZvaWQKK2ludAogaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOworCWludCBlcnI7CiAKIAlkZXZfcHJpdi0+b2JqZWN0cyA9CiAJCWttZW1f Y2FjaGVfY3JlYXRlKCJpOTE1X2dlbV9vYmplY3QiLAogCQkJCSAgc2l6ZW9mKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0KSwgMCwKIAkJCQkgIFNMQUJfSFdDQUNIRV9BTElHTiwKIAkJCQkgIE5V TEwpOworCWlmICghZGV2X3ByaXYtPm9iamVjdHMpIHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290 byBlcnJfb3V0OworCX0KKwogCWRldl9wcml2LT52bWFzID0KIAkJa21lbV9jYWNoZV9jcmVhdGUo Imk5MTVfZ2VtX3ZtYSIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGk5MTVfdm1hKSwgMCwKIAkJCQkg IFNMQUJfSFdDQUNIRV9BTElHTiwKIAkJCQkgIE5VTEwpOworCWlmICghZGV2X3ByaXYtPnZtYXMp IHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBlcnJfb2JqZWN0czsKKwl9CisKIAlkZXZfcHJp di0+cmVxdWVzdHMgPQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgiaTkxNV9nZW1fcmVxdWVzdCIsCiAJ CQkJICBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0KSwgMCwKQEAgLTQ2OTgsNiAr NDcxOCwxOSBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJ CQkgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKIAkJCQkgIFNMQUJfREVTVFJPWV9CWV9SQ1UsCiAJ CQkJICBOVUxMKTsKKwlpZiAoIWRldl9wcml2LT5yZXF1ZXN0cykgeworCQllcnIgPSAtRU5PTUVN OworCQlnb3RvIGVycl92bWFzOworCX0KKworCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3Ry dWN0X211dGV4KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcyk7CisJ ZXJyID0gaTkxNV9nZW1fdGltZWxpbmVfaW5pdChkZXZfcHJpdiwKKwkJCQkgICAgICZkZXZfcHJp di0+Z3QuZ2xvYmFsX3RpbWVsaW5lLAorCQkJCSAgICAgIltleGVjdXRpb25dIik7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKGVycikKKwkJZ290byBl cnJfcmVxdWVzdHM7CiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCk7 CiAJSU5JVF9XT1JLKCZkZXZfcHJpdi0+bW0uZnJlZV93b3JrLCBfX2k5MTVfZ2VtX2ZyZWVfd29y ayk7CkBAIC00NzIyLDYgKzQ3NTUsMTcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJYXRvbWljX3NldCgmZGV2X3ByaXYtPm1tLmJzZF9lbmdpbmVfZGlzcGF0 Y2hfaW5kZXgsIDApOwogCiAJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5mYl90cmFja2luZy5s b2NrKTsKKworCXJldHVybiAwOworCitlcnJfcmVxdWVzdHM6CisJa21lbV9jYWNoZV9kZXN0cm95 KGRldl9wcml2LT5yZXF1ZXN0cyk7CitlcnJfdm1hczoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2 X3ByaXYtPnZtYXMpOworZXJyX29iamVjdHM6CisJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2 LT5vYmplY3RzKTsKK2Vycl9vdXQ6CisJcmV0dXJuIGVycjsKIH0KIAogdm9pZCBpOTE1X2dlbV9s b2FkX2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5o CmluZGV4IDgyOTJlNzk3ZDliNS4uNzM1NTgwZDcyZWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmgKQEAgLTMxLDQgKzMxLDYgQEAKICNkZWZpbmUgR0VNX0JVR19PTihleHByKQogI2VuZGlmCiAK KyNkZWZpbmUgSTkxNV9OVU1fRU5HSU5FUyA1CisKICNlbmRpZiAvKiBfX0k5MTVfR0VNX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmluZGV4IGE3OTA1NDViZGU3 My4uNDQ1ZWZhNWE3YjZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5j CkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICppOTE1X2ZlbmNlX2dldF90aW1l bGluZV9uYW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCiAJICogbXVsdGlwbGUgZXhlY3V0aW9uIGNv bnRleHRzIChmZW5jZSBjb250ZXh0cykgYXMgd2UgYWxsb3cKIAkgKiBlbmdpbmVzIHdpdGhpbiBh IHNpbmdsZSB0aW1lbGluZSB0byBleGVjdXRlIGluIHBhcmFsbGVsLgogCSAqLwotCXJldHVybiAi Z2xvYmFsIjsKKwlyZXR1cm4gdG9fcmVxdWVzdChmZW5jZSktPnRpbWVsaW5lLT5jb21tb24tPm5h bWU7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpm ZW5jZSkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3Vw dG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJCXJldHVybjsKIAogCWRvIHsK LQkJdG1wID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT5yZXF1ZXN0X2xpc3QsCisJCXRtcCA9 IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAogCQkJCSAgICAg ICB0eXBlb2YoKnRtcCksIGxpbmspOwogCiAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHRtcCk7 CkBAIC0yMzgsMzcgKzIzOCwzOSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj IGludCBpOTE1X2dlbV9pbml0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIHNlcW5vKQorc3RhdGljIGludCBpOTE1X2dlbV9pbml0X2dsb2JhbF9zZXFubyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAgdTMyIHNlcW5vKQogewor CXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUgPSAmZGV2X3ByaXYtPmd0Lmdsb2Jh bF90aW1lbGluZTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQ7CiAJaW50IHJldDsKIAogCS8qIENhcmVmdWxseSByZXRpcmUgYWxsIHJl cXVlc3RzIHdpdGhvdXQgd3JpdGluZyB0byB0aGUgcmluZ3MgKi8KLQlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKLQkJcmV0ID0gaW50ZWxfZW5naW5lX2lkbGUoZW5naW5l LAotCQkJCQlJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJCUk5MTVfV0FJVF9MT0NLRUQp OwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9CisJcmV0ID0gaTkxNV9nZW1fd2FpdF9m b3JfaWRsZShkZXZfcHJpdiwKKwkJCQkgICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKKwkJ CQkgICAgIEk5MTVfV0FJVF9MT0NLRUQpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlp OTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwogCiAJLyogSWYgdGhlIHNlcW5vIHdy YXBzIGFyb3VuZCwgd2UgbmVlZCB0byBjbGVhciB0aGUgYnJlYWRjcnVtYiByYnRyZWUgKi8KLQlp ZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCBkZXZfcHJpdi0+bmV4dF9zZXFubykpIHsKKwlp ZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCB0aW1lbGluZS0+bmV4dF9zZXFubykpIHsKIAkJ d2hpbGUgKGludGVsX2tpY2tfd2FpdGVycyhkZXZfcHJpdikgfHwKIAkJICAgICAgIGludGVsX2tp Y2tfc2lnbmFsZXJzKGRldl9wcml2KSkKIAkJCXlpZWxkKCk7CisJCXlpZWxkKCk7CiAJfQogCiAJ LyogRmluYWxseSByZXNldCBodyBzdGF0ZSAqLwogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRl dl9wcml2LCBpZCkKLQkJaW50ZWxfZW5naW5lX2luaXRfc2Vxbm8oZW5naW5lLCBzZXFubyk7CisJ CWludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFubyhlbmdpbmUsIHNlcW5vKTsKIAogCXJldHVy biAwOwogfQogCi1pbnQgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHUzMiBzZXFubykKK2ludCBpOTE1X2dlbV9zZXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHUzMiBzZXFubykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CiAJaW50IHJldDsKQEAgLTI4MSwyOCArMjgzLDMxIEBAIGludCBp OTE1X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQogCS8q IEhXUyBwYWdlIG5lZWRzIHRvIGJlIHNldCBsZXNzIHRoYW4gd2hhdCB3ZQogCSAqIHdpbGwgaW5q ZWN0IHRvIHJpbmcKIAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9pbml0X3NlcW5vKGRldl9wcml2LCBz ZXFubyAtIDEpOworCXJldCA9IGk5MTVfZ2VtX2luaXRfZ2xvYmFsX3NlcW5vKGRldl9wcml2LCBz ZXFubyAtIDEpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlkZXZfcHJpdi0+bmV4dF9z ZXFubyA9IHNlcW5vOworCWRldl9wcml2LT5ndC5nbG9iYWxfdGltZWxpbmUubmV4dF9zZXFubyA9 IHNlcW5vOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGk5MTVfZ2VtX2dldF9zZXFubyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiAqc2Vxbm8pCitzdGF0aWMgaW50 IGk5MTVfZ2VtX2dldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkJCSAgICAgdTMyICpzZXFubykKIHsKKwlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUg KnRsID0gJmRldl9wcml2LT5ndC5nbG9iYWxfdGltZWxpbmU7CisKIAkvKiByZXNlcnZlIDAgZm9y IG5vbi1zZXFubyAqLwotCWlmICh1bmxpa2VseShkZXZfcHJpdi0+bmV4dF9zZXFubyA9PSAwKSkg eworCWlmICh1bmxpa2VseSh0bC0+bmV4dF9zZXFubyA9PSAwKSkgewogCQlpbnQgcmV0OwogCi0J CXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vxbm8oZGV2X3ByaXYsIDApOworCQlyZXQgPSBpOTE1X2dl bV9pbml0X2dsb2JhbF9zZXFubyhkZXZfcHJpdiwgMCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4g cmV0OwogCi0JCWRldl9wcml2LT5uZXh0X3NlcW5vID0gMTsKKwkJdGwtPm5leHRfc2Vxbm8gPSAx OwogCX0KIAotCSpzZXFubyA9IGRldl9wcml2LT5uZXh0X3NlcW5vKys7CisJKnNlcW5vID0gdGwt Pm5leHRfc2Vxbm8rKzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzExLDEzICszMTYsMTQgQEAgc3Vi bWl0X25vdGlmeShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsIGVudW0gaTkxNV9zd19mZW5j ZV9ub3RpZnkgc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 ID0KIAkJY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnJlcXVlc3QpLCBzdWJtaXQpOworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAogCS8qIFdp bGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIERNQSBmZW5j ZXMgKi8KIAogCXN3aXRjaCAoc3RhdGUpIHsKIAljYXNlIEZFTkNFX0NPTVBMRVRFOgotCQlyZXF1 ZXN0LT5lbmdpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vID0gcmVxdWVzdC0+ZmVuY2Uuc2Vxbm87 Ci0JCXJlcXVlc3QtPmVuZ2luZS0+c3VibWl0X3JlcXVlc3QocmVxdWVzdCk7CisJCWVuZ2luZS0+ dGltZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vID0gcmVxdWVzdC0+ZmVuY2Uuc2Vxbm87CisJ CWVuZ2luZS0+c3VibWl0X3JlcXVlc3QocmVxdWVzdCk7CiAJCWJyZWFrOwogCiAJY2FzZSBGRU5D RV9GUkVFOgpAQCAtMzU3LDcgKzM2Myw3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCiAJLyog TW92ZSB0aGUgb2xkZXN0IHJlcXVlc3QgdG8gdGhlIHNsYWItY2FjaGUgKGlmIG5vdCBpbiB1c2Uh KSAqLwotCXJlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5naW5lLT5yZXF1ZXN0X2xp c3QsCisJcmVxID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cywKIAkJCQkgICAgICAgdHlwZW9mKCpyZXEpLCBsaW5rKTsKIAlpZiAocmVxICYmIGk5 MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCiAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJl KHJlcSk7CkBAIC0zOTQsMTUgKzQwMCwxNyBAQCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlpZiAoIXJlcSkKIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZGV2X3ByaXYsICZzZXFubyk7 CisJcmV0ID0gaTkxNV9nZW1fZ2V0X2dsb2JhbF9zZXFubyhkZXZfcHJpdiwgJnNlcW5vKTsKIAlp ZiAocmV0KQogCQlnb3RvIGVycjsKIAorCXJlcS0+dGltZWxpbmUgPSBlbmdpbmUtPnRpbWVsaW5l OworCiAJc3Bpbl9sb2NrX2luaXQoJnJlcS0+bG9jayk7CiAJZmVuY2VfaW5pdCgmcmVxLT5mZW5j ZSwKIAkJICAgJmk5MTVfZmVuY2Vfb3BzLAogCQkgICAmcmVxLT5sb2NrLAotCQkgICBlbmdpbmUt PmZlbmNlX2NvbnRleHQsCisJCSAgIHJlcS0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQsCiAJCSAg IHNlcW5vKTsKIAogCWk5MTVfc3dfZmVuY2VfaW5pdCgmcmVxLT5zdWJtaXQsIHN1Ym1pdF9ub3Rp ZnkpOwpAQCAtNDU3LDkgKzQ2NSwxNiBAQCBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKIAogCUdFTV9CVUdfT04odG8gPT0gZnJv bSk7CiAKLQlpZiAodG8tPmVuZ2luZSA9PSBmcm9tLT5lbmdpbmUpCisJaWYgKHRvLT50aW1lbGlu ZSA9PSBmcm9tLT50aW1lbGluZSkKIAkJcmV0dXJuIDA7CiAKKwlpZiAodG8tPmVuZ2luZSA9PSBm cm9tLT5lbmdpbmUpIHsKKwkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAo JnRvLT5zdWJtaXQsCisJCQkJCQkgICAgICAgJmZyb20tPnN1Ym1pdCwKKwkJCQkJCSAgICAgICBH RlBfS0VSTkVMKTsKKwkJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOworCX0KKwogCWlkeCA9IGlu dGVsX2VuZ2luZV9zeW5jX2luZGV4KGZyb20tPmVuZ2luZSwgdG8tPmVuZ2luZSk7CiAJaWYgKGZy b20tPmZlbmNlLnNlcW5vIDw9IGZyb20tPmVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4 XSkKIAkJcmV0dXJuIDA7CkBAIC02MjIsNiArNjM3LDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hl cykKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7 CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOworCXN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGltZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnByZXY7CiAJdTMyIHJlcXVlc3Rfc3RhcnQ7CiAJdTMyIHJlc2VydmVk X3RhaWw7CkBAIC02NzksMTcgKzY5NSwxNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAq IHNlZSBhIG1vcmUgcmVjZW50IHZhbHVlIGluIHRoZSBod3MgdGhhbiB3ZSBhcmUgdHJhY2tpbmcu CiAJICovCiAKLQlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmZW5naW5lLT5sYXN0X3JlcXVl c3QsCisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3Qs CiAJCQkJICAgJnJlcXVlc3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChwcmV2KQog CQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKCZyZXF1ZXN0LT5zdWJtaXQsICZwcmV2LT5z dWJtaXQsCiAJCQkJCSAgICAgJnJlcXVlc3QtPnN1Ym1pdHEpOwogCiAJcmVxdWVzdC0+ZW1pdHRl ZF9qaWZmaWVzID0gamlmZmllczsKLQlyZXF1ZXN0LT5wcmV2aW91c19zZXFubyA9IGVuZ2luZS0+ bGFzdF9wZW5kaW5nX3NlcW5vOwotCWVuZ2luZS0+bGFzdF9wZW5kaW5nX3NlcW5vID0gcmVxdWVz dC0+ZmVuY2Uuc2Vxbm87Ci0JaTkxNV9nZW1fYWN0aXZlX3NldCgmZW5naW5lLT5sYXN0X3JlcXVl c3QsIHJlcXVlc3QpOwotCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZlbmdpbmUtPnJl cXVlc3RfbGlzdCk7CisJcmVxdWVzdC0+cHJldmlvdXNfc2Vxbm8gPSB0aW1lbGluZS0+bGFzdF9w ZW5kaW5nX3NlcW5vOworCXRpbWVsaW5lLT5sYXN0X3BlbmRpbmdfc2Vxbm8gPSByZXF1ZXN0LT5m ZW5jZS5zZXFubzsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0 LCByZXF1ZXN0KTsKKwlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmdGltZWxpbmUtPnJl cXVlc3RzKTsKIAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5yaW5nX2xpbmssICZyaW5nLT5yZXF1 ZXN0X2xpc3QpOwogCiAJaTkxNV9nZW1fbWFya19idXN5KGVuZ2luZSk7CkBAIC04OTgsNyArOTE0 LDggQEAgc3RhdGljIGJvb2wgZW5naW5lX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 LCAqbmV4dDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBuZXh0LCAmZW5n aW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVx dWVzdCwgbmV4dCwKKwkJCQkgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7CiAJ CWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCiAJCQlyZXR1cm4gZmFs c2U7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAppbmRleCBiOGZlZmY1 ODU3YTAuLjM3OGY1MjM4NDRiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuaApAQCAtODEsNiArODEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgewogCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGltZWxpbmU7CiAJc3RydWN0IGludGVsX3NpZ25hbF9ub2RlIHNpZ25hbGluZzsKIAogCXN0cnVj dCBpOTE1X3N3X2ZlbmNlIHN1Ym1pdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1l bGluZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTQ1NzljMTA5 MDY2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlt ZWxpbmUuYwpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwg Q29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUu CisgKgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitpbnQgaTkxNV9nZW1fdGltZWxp bmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSAgIHN0cnVjdCBpOTE1 X2dlbV90aW1lbGluZSAqdGltZWxpbmUsCisJCQkgICBjb25zdCBjaGFyICpuYW1lKQoreworCXVu c2lnbmVkIGludCBpOworCXU2NCBmZW5jZXM7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKworCXRpbWVsaW5lLT5pOTE1ID0gaTkxNTsKKwl0aW1lbGlu ZS0+bmFtZSA9IGtzdHJkdXAobmFtZSA/OiAiW2tlcm5lbF0iLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXRpbWVsaW5lLT5uYW1lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWxpc3RfYWRkKCZ0aW1lbGlu ZS0+bGluaywgJmk5MTUtPmd0LnRpbWVsaW5lcyk7CisKKwkvKiBDYWxsZWQgZHVyaW5nIGVhcmx5 X2luaXQgYmVmb3JlIHdlIGtub3cgaG93IG1hbnkgZW5naW5lcyB0aGVyZSBhcmUgKi8KKwlmZW5j ZXMgPSBmZW5jZV9jb250ZXh0X2FsbG9jKEFSUkFZX1NJWkUodGltZWxpbmUtPmVuZ2luZSkpOwor CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRpbWVsaW5lLT5lbmdpbmUpOyBpKyspIHsKKwkJ c3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2ldOworCisJCXRs LT5mZW5jZV9jb250ZXh0ID0gZmVuY2VzKys7CisJCXRsLT5jb21tb24gPSB0aW1lbGluZTsKKwor CQlpbml0X3JlcXVlc3RfYWN0aXZlKCZ0bC0+bGFzdF9yZXF1ZXN0LCBOVUxMKTsKKwkJSU5JVF9M SVNUX0hFQUQoJnRsLT5yZXF1ZXN0cyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgaTkx NV9nZW1fdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsKQoreworCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJnRsLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWxpc3Rf ZGVsKCZ0bC0+bGluayk7CisJa2ZyZWUodGwtPm5hbWUpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbWVsaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5iZmRmMDMzMWNjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aW1lbGluZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBJOTE1X0dFTV9USU1FTElORV9ICisj ZGVmaW5lIEk5MTVfR0VNX1RJTUVMSU5FX0gKKworI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKwor I2luY2x1ZGUgImk5MTVfZ2VtX3JlcXVlc3QuaCIKKworc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5l OworCitzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgeworCXU2NCBmZW5jZV9jb250ZXh0OworCXUzMiBs YXN0X3N1Ym1pdHRlZF9zZXFubzsKKwl1MzIgbGFzdF9wZW5kaW5nX3NlcW5vOworCisJLyoqCisJ ICogTGlzdCBvZiBicmVhZGNydW1icyBhc3NvY2lhdGVkIHdpdGggR1BVIHJlcXVlc3RzIGN1cnJl bnRseQorCSAqIG91dHN0YW5kaW5nLgorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7 CisKKwkvKiBDb250YWlucyBhbiBSQ1UgZ3VhcmRlZCBwb2ludGVyIHRvIHRoZSBsYXN0IHJlcXVl c3QuIE5vIHJlZmVyZW5jZSBpcworCSAqIGhlbGQgdG8gdGhlIHJlcXVlc3QsIHVzZXJzIG11c3Qg Y2FyZWZ1bGx5IGFjcXVpcmUgYSByZWZlcmVuY2UgdG8KKwkgKiB0aGUgcmVxdWVzdCB1c2luZyBp OTE1X2dlbV9hY3RpdmVfZ2V0X3JlcXVlc3RfcmN1KCksIG9yIGhvbGQgdGhlCisJICogc3RydWN0 X211dGV4LgorCSAqLworCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZXF1ZXN0OworCisJ c3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICpjb21tb247Cit9OworCitzdHJ1Y3QgaTkxNV9nZW1f dGltZWxpbmUgeworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKKwl1MzIgbmV4dF9zZXFubzsKKwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCWNvbnN0IGNoYXIgKm5hbWU7CisKKwlz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOworfTsKKworaW50 IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJ CQkgICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsLAorCQkJICAgY29uc3QgY2hhciAqbmFt ZSk7Cit2b2lkIGk5MTVfZ2VtX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5l ICp0bCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXgg OTZlZjZjMTNkN2RkLi44ZDE1NDk4NGRmZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2Vu Z2luZV9yZWdpc3RlcnMoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKIAllZS0+ aW5zdHBtID0gSTkxNV9SRUFEKFJJTkdfSU5TVFBNKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJZWUt PmFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOwogCWVlLT5zZXFu byA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKLQllZS0+bGFzdF9zZXFubyA9IGVu Z2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm87CisJZWUtPmxhc3Rfc2Vxbm8gPSBlbmdpbmUtPnRp bWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubzsKIAllZS0+c3RhcnQgPSBJOTE1X1JFQURfU1RB UlQoZW5naW5lKTsKIAllZS0+aGVhZCA9IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7CiAJZWUtPnRh aWwgPSBJOTE1X1JFQURfVEFJTChlbmdpbmUpOwpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgc3RhdGlj IHZvaWQgZW5naW5lX3JlY29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiAKIAljb3VudCA9IDA7CiAJcmVxdWVzdCA9IGZpcnN0OwotCWxpc3RfZm9yX2VhY2hfZW50 cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGlu aykKIAkJY291bnQrKzsKIAlpZiAoIWNvdW50KQogCQlyZXR1cm47CkBAIC0xMjAxLDcgKzEyMDEs NyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVjb3JkX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKIAogCWNvdW50ID0gMDsKIAlyZXF1ZXN0ID0gZmlyc3Q7Ci0JbGlzdF9m b3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykg eworCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+ cmVxdWVzdHMsIGxpbmspIHsKIAkJaWYgKGNvdW50ID49IGVlLT5udW1fcmVxdWVzdHMpIHsKIAkJ CS8qCiAJCQkgKiBJZiB0aGUgcmluZyByZXF1ZXN0IGxpc3Qgd2FzIGNoYW5nZWQgaW4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCBhMWY3NmM4ZjhjZGUu LjVhZWMwZGE4YmY1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYwpAQCAtMTAzOSw3ICsxMDM5LDggQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW5naW5lLT5zdWJtaXRfcmVx dWVzdCA9IGk5MTVfZ3VjX3N1Ym1pdDsKIAogCQkvKiBSZXBsYXkgdGhlIGN1cnJlbnQgc2V0IG9m IHByZXZpb3VzbHkgc3VibWl0dGVkIHJlcXVlc3RzICovCi0JCWxpc3RfZm9yX2VhY2hfZW50cnko cmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0LCBsaW5rKSB7CisJCWxpc3RfZm9yX2VhY2hf ZW50cnkocmVxdWVzdCwKKwkJCQkgICAgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5r KSB7CiAJCQljbGllbnQtPndxX3JzdmQgKz0gc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7CiAJ CQlpZiAoaTkxNV9zd19mZW5jZV9kb25lKCZyZXF1ZXN0LT5zdWJtaXQpKQogCQkJCWk5MTVfZ3Vj X3N1Ym1pdChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDIzMzE1ZTU0NjFi Zi4uMWQ0YmM2N2QyN2Q0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTMwNzMsNyArMzA3 Myw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQogCiAJCWFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdp bmUpOwogCQlzZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKLQkJc3VibWl0 ID0gUkVBRF9PTkNFKGVuZ2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8pOworCQlzdWJtaXQgPSBS RUFEX09OQ0UoZW5naW5lLT50aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8pOwogCiAJCWlm IChlbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9PSBzZXFubykgewogCQkJaWYgKGk5MTVfc2Vxbm9f cGFzc2VkKHNlcW5vLCBzdWJtaXQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCmluZGV4IGEyMTA0ZmE5MjBjOC4uNmEzMTA1NTEyZDE4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpbnRlbF9lbmdpbmVz X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkIGlu dGVsX2VuZ2luZV9pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMy IHNlcW5vKQordm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCkBAIC0yMTAsNyArMjEwLDkgQEAgdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUz MiBzZXFubykKIAlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19J TkRFWCwgc2Vxbm8pOwogCWlmIChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQogCQllbmdpbmUt PmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7Ci0JZW5naW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFu byA9IHNlcW5vOworCisJR0VNX0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmVuZ2luZS0+ dGltZWxpbmUtPmxhc3RfcmVxdWVzdCkpOworCWVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0 dGVkX3NlcW5vID0gc2Vxbm87CiAKIAllbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9IHNlcW5vOwog CkBAIC0yMjUsMTAgKzIyNyw5IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAltZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNr LCAwLCBzaXplb2YoZW5naW5lLT5oYW5nY2hlY2spKTsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxf ZW5naW5lX2luaXRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3Rh dGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewotCWluaXRfcmVxdWVzdF9hY3RpdmUoJmVuZ2luZS0+bGFzdF9yZXF1ZXN0 LCBOVUxMKTsKLQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QpOworCWVuZ2lu ZS0+dGltZWxpbmUgPSAmZW5naW5lLT5pOTE1LT5ndC5nbG9iYWxfdGltZWxpbmUuZW5naW5lW2Vu Z2luZS0+aWRdOwogfQogCiAvKioKQEAgLTI0NSw5ICsyNDYsNyBAQCB2b2lkIGludGVsX2VuZ2lu ZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCUlOSVRfTElT VF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKIAlzcGluX2xvY2tfaW5pdCgmZW5naW5l LT5leGVjbGlzdF9sb2NrKTsKIAotCWVuZ2luZS0+ZmVuY2VfY29udGV4dCA9IGZlbmNlX2NvbnRl eHRfYWxsb2MoMSk7Ci0KLQlpbnRlbF9lbmdpbmVfaW5pdF9yZXF1ZXN0cyhlbmdpbmUpOworCWlu dGVsX2VuZ2luZV9pbml0X3RpbWVsaW5lKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfaGFu Z2NoZWNrKGVuZ2luZSk7CiAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZSwgJmVuZ2lu ZS0+YmF0Y2hfcG9vbCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApp bmRleCBjYjZlOTZjNmNkNDcuLmE2MmUzOTZjODg2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaApAQCAtNCw2ICs0LDcgQEAKICNpbmNsdWRlIDxsaW51eC9oYXNodGFi bGUuaD4KICNpbmNsdWRlICJpOTE1X2dlbV9iYXRjaF9wb29sLmgiCiAjaW5jbHVkZSAiaTkxNV9n ZW1fcmVxdWVzdC5oIgorI2luY2x1ZGUgImk5MTVfZ2VtX3RpbWVsaW5lLmgiCiAKICNkZWZpbmUg STkxNV9DTURfSEFTSF9PUkRFUiA5CiAKQEAgLTE2OSw3ICsxNzAsNiBAQCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzIHsKIAkJVkNTMiwJLyogS2VlcCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBl bmdpbmUgdG9nZXRoZXIuICovCiAJCVZFQ1MKIAl9IGlkOwotI2RlZmluZSBJOTE1X05VTV9FTkdJ TkVTIDUKICNkZWZpbmUgX1ZDUyhuKSAoVkNTICsgKG4pKQogCXVuc2lnbmVkIGludCBleGVjX2lk OwogCWVudW0gaW50ZWxfZW5naW5lX2h3X2lkIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgewogCQlWQ1MyX0hXCiAJfSBod19pZDsKIAllbnVtIGludGVsX2Vu Z2luZV9od19pZCBndWNfaWQ7IC8qIFhYWCBzYW1lIGFzIGh3X2lkPyAqLwotCXU2NCBmZW5jZV9j b250ZXh0OwogCXUzMgkJbW1pb19iYXNlOwogCXVuc2lnbmVkIGludCBpcnFfc2hpZnQ7CiAJc3Ry dWN0IGludGVsX3JpbmcgKmJ1ZmZlcjsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5l OwogCiAJc3RydWN0IGludGVsX3JlbmRlcl9zdGF0ZSAqcmVuZGVyX3N0YXRlOwogCkBAIC0zNDYs MjcgKzM0Niw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCWJvb2wgcHJlZW1wdF93YTsK IAl1MzIgY3R4X2Rlc2NfdGVtcGxhdGU7CiAKLQkvKioKLQkgKiBMaXN0IG9mIGJyZWFkY3J1bWJz IGFzc29jaWF0ZWQgd2l0aCBHUFUgcmVxdWVzdHMgY3VycmVudGx5Ci0JICogb3V0c3RhbmRpbmcu Ci0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2xpc3Q7Ci0KLQkvKioKLQkgKiBTZXFu byBvZiByZXF1ZXN0IG1vc3QgcmVjZW50bHkgc3VibWl0dGVkIHRvIHJlcXVlc3RfbGlzdC4KLQkg KiBVc2VkIGV4Y2x1c2l2ZWx5IGJ5IGhhbmcgY2hlY2tlciB0byBhdm9pZCBncmFiYmluZyBsb2Nr IHdoaWxlCi0JICogaW5zcGVjdGluZyByZXF1ZXN0IGxpc3QuCi0JICovCi0JdTMyIGxhc3Rfc3Vi bWl0dGVkX3NlcW5vOwotCXUzMiBsYXN0X3BlbmRpbmdfc2Vxbm87Ci0KLQkvKiBBbiBSQ1UgZ3Vh cmRlZCBwb2ludGVyIHRvIHRoZSBsYXN0IHJlcXVlc3QuIE5vIHJlZmVyZW5jZSBpcwotCSAqIGhl bGQgdG8gdGhlIHJlcXVlc3QsIHVzZXJzIG11c3QgY2FyZWZ1bGx5IGFjcXVpcmUgYSByZWZlcmVu Y2UgdG8KLQkgKiB0aGUgcmVxdWVzdCB1c2luZyBpOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdSgpLCBv ciBob2xkIHRoZQotCSAqIHN0cnVjdF9tdXRleC4KLQkgKi8KLQlzdHJ1Y3QgaTkxNV9nZW1fYWN0 aXZlIGxhc3RfcmVxdWVzdDsKLQogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpsYXN0X2NvbnRl eHQ7CiAKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7CkBAIC01MTYs MjAgKzQ5NSwxMyBAQCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9yaW5nX29mZnNldChzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZywgdTMyIHZhbHVlKQogaW50IF9faW50ZWxfcmluZ19zcGFjZShpbnQg aGVhZCwgaW50IHRhaWwsIGludCBzaXplKTsKIHZvaWQgaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uo c3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwogCi12b2lkIGludGVsX2VuZ2luZV9pbml0X3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKTsKK3ZvaWQgaW50ZWxf ZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwg dTMyIHNlcW5vKTsKIAogdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBpbnQgaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3Jh dGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpOwogdm9pZCBpbnRl bF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK IAotc3RhdGljIGlubGluZSBpbnQgaW50ZWxfZW5naW5lX2lkbGUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAotCQkJCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCi17Ci0JLyogV2FpdCB1 cG9uIHRoZSBsYXN0IHJlcXVlc3QgdG8gYmUgY29tcGxldGVkICovCi0JcmV0dXJuIGk5MTVfZ2Vt X2FjdGl2ZV93YWl0KCZlbmdpbmUtPmxhc3RfcmVxdWVzdCwgZmxhZ3MpOwotfQotCiBpbnQgaW50 ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKIGludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwogaW50IGludGVsX2luaXRfYnNkMl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwpAQCAtNjE5LDcgKzU5MSw3IEBAIHVuc2lnbmVkIGludCBpbnRl bF9raWNrX3NpZ25hbGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKIHN0YXRp YyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdpbmVfaXNfYWN0aXZlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKLQlyZXR1cm4gaTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZlbmdpbmUtPmxh c3RfcmVxdWVzdCk7CisJcmV0dXJuIGk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmZW5naW5lLT50aW1l bGluZS0+bGFzdF9yZXF1ZXN0KTsKIH0KIAogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hf ICovCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==