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: Fri, 14 Oct 2016 13:18:20 +0100 Message-ID: <20161014121833.439-29-chris@chris-wilson.co.uk> References: <20161014121833.439-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-qk0-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6000E6EC2E for ; Fri, 14 Oct 2016 12:19:10 +0000 (UTC) Received: by mail-qk0-x242.google.com with SMTP id z190so8423092qkc.3 for ; Fri, 14 Oct 2016 05:19:10 -0700 (PDT) In-Reply-To: <20161014121833.439-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 L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGVmYWYyNWI5ODRhZi4uYjc5ODdk NTg4ODFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDIsNiArNDIsNyBAQCBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaTkxNV9nZW1fc2hyaW5rZXIubyBcCiAJICBpOTE1X2dl bV9zdG9sZW4ubyBcCiAJICBpOTE1X2dlbV90aWxpbmcubyBcCisJICBpOTE1X2dlbV90aW1lbGlu ZS5vIFwKIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCiAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwK IAkgIGludGVsX2JyZWFkY3J1bWJzLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCAwOTI2ZWJiMjM0MTAuLjczMDJmNmY4MmIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3BhZ2VmbGlw X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCQkJCXNlcV9wcmludGYobSwg IkZsaXAgcXVldWVkIG9uICVzIGF0IHNlcW5vICV4LCBuZXh0IHNlcW5vICV4IFtjdXJyZW50IGJy ZWFkY3J1bWIgJXhdLCBjb21wbGV0ZWQ/ICVkXG4iLAogCQkJCQkgICBlbmdpbmUtPm5hbWUsCiAJ CQkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHdvcmstPmZsaXBfcXVldWVkX3JlcSks Ci0JCQkJCSAgIGRldl9wcml2LT5uZXh0X3NlcW5vLAorCQkJCQkgICBkZXZfcHJpdi0+Z3QuZ2xv YmFsX3RpbWVsaW5lLm5leHRfc2Vxbm8sCiAJCQkJCSAgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8o ZW5naW5lKSwKIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQod29yay0+ZmxpcF9x dWV1ZWRfcmVxKSk7CiAJCQl9IGVsc2UKQEAgLTY2MiwxMyArNjYyLDEzIEBAIHN0YXRpYyBpbnQg aTkxNV9nZW1fcmVxdWVzdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJ aW50IGNvdW50OwogCiAJCWNvdW50ID0gMDsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKIAkJCWNvdW50Kys7CiAJCWlmIChjb3Vu dCA9PSAwKQogCQkJY29udGludWU7CiAKIAkJc2VxX3ByaW50ZihtLCAiJXMgcmVxdWVzdHM6ICVk XG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZl bmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKIAkJCXByaW50X3JlcXVlc3QobSwgcmVx LCAiICAgICIpOwogCiAJCWFueSsrOwpAQCAtMTAzNywxNSArMTAzNyw4IEBAIHN0YXRpYyBpbnQK IGk5MTVfbmV4dF9zZXFub19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKLQotCSp2YWwgPSBkZXZfcHJpdi0+bmV4dF9zZXFubzsKLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAorCSp2YWwgPSBSRUFE X09OQ0UoZGV2X3ByaXYtPmd0Lmdsb2JhbF90aW1lbGluZS5uZXh0X3NlcW5vKTsKIAlyZXR1cm4g MDsKIH0KIApAQCAtMTA2MCw3ICsxMDUzLDcgQEAgaTkxNV9uZXh0X3NlcW5vX3NldCh2b2lkICpk YXRhLCB1NjQgdmFsKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBpOTE1X2dl bV9zZXRfc2Vxbm8oZGV2LCB2YWwpOworCXJldCA9IGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8o ZGV2LCB2YWwpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmV0dXJu IHJldDsKQEAgLTEzNDksNyArMTM0Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2VxX3ByaW50ZihtLCAiXHRz ZXFubyA9ICV4IFtjdXJyZW50ICV4LCBsYXN0ICV4XVxuIiwKIAkJCSAgIGVuZ2luZS0+aGFuZ2No ZWNrLnNlcW5vLAogCQkJICAgc2Vxbm9baWRdLAotCQkJICAgZW5naW5lLT5sYXN0X3N1Ym1pdHRl ZF9zZXFubyk7CisJCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7 CiAJCXNlcV9wcmludGYobSwgIlx0d2FpdGVycz8gJXMsIGZha2UgaXJxIGFjdGl2ZT8gJXNcbiIs CiAJCQkgICB5ZXNubyhpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKSwKIAkJCSAgIHll c25vKHRlc3RfYml0KGVuZ2luZS0+aWQsCkBAIC0zMDk2LDcgKzMwODksNyBAQCBzdGF0aWMgaW50 IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNl cV9wcmludGYobSwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwogCQlzZXFfcHJpbnRmKG0sICJcdGN1 cnJlbnQgc2Vxbm8gJXgsIGxhc3QgJXgsIGhhbmdjaGVjayAleCBbc2NvcmUgJWRdXG4iLAogCQkJ ICAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpLAotCQkJICAgZW5naW5lLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubywKKwkJCSAgIGVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3Nl cW5vLAogCQkJICAgZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8sCiAJCQkgICBlbmdpbmUtPmhhbmdj aGVjay5zY29yZSk7CiAKQEAgLTMxMDQsMTQgKzMwOTcsMTQgQEAgc3RhdGljIGludCBpOTE1X2Vu Z2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCXNlcV9wcmlu dGYobSwgIlx0UmVxdWVzdHM6XG4iKTsKIAotCQlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2lu ZS0+cmVxdWVzdF9saXN0LAotCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7 Ci0JCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2luZS0+cmVxdWVzdF9saXN0KQorCQlycSA9IGxpc3Rf Zmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAorCQkJCSAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7CisJCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2lu ZS0+dGltZWxpbmUtPnJlcXVlc3RzKQogCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRmaXJz dCAgIik7CiAKLQkJcnEgPSBsaXN0X2xhc3RfZW50cnkoJmVuZ2luZS0+cmVxdWVzdF9saXN0LAot CQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGluayk7Ci0JCWlmICgmcnEtPmxpbmsg IT0gJmVuZ2luZS0+cmVxdWVzdF9saXN0KQorCQlycSA9IGxpc3RfbGFzdF9lbnRyeSgmZW5naW5l LT50aW1lbGluZS0+cmVxdWVzdHMsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QsIGxpbmspOworCQlpZiAoJnJxLT5saW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0 cykKIAkJCXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0bGFzdCAgICIpOwogCiAJCXJxID0gaTkx NV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK aW5kZXggNTM0Njk4MTFmYjQ2Li5mODI5ZmRlYjg5N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwpAQCAtODMxLDcgKzgzMSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfaW5pdF9kaXNwbGF5X2hv b2tzKGRldl9wcml2KTsKIAlpbnRlbF9pbml0X2Nsb2NrX2dhdGluZ19ob29rcyhkZXZfcHJpdik7 CiAJaW50ZWxfaW5pdF9hdWRpb19ob29rcyhkZXZfcHJpdik7Ci0JaTkxNV9nZW1fbG9hZF9pbml0 KCZkZXZfcHJpdi0+ZHJtKTsKKwlyZXQgPSBpOTE1X2dlbV9sb2FkX2luaXQoJmRldl9wcml2LT5k cm0pOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9ndnQ7CiAKIAlpbnRlbF9kaXNwbGF5X2Ny Y19pbml0KGRldl9wcml2KTsKIApAQCAtODQxLDYgKzg0Myw4IEBAIHN0YXRpYyBpbnQgaTkxNV9k cml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAly ZXR1cm4gMDsKIAorZXJyX2d2dDoKKwlpbnRlbF9ndnRfY2xlYW51cChkZXZfcHJpdik7CiBlcnJf d29ya3F1ZXVlczoKIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7CiAJcmV0dXJu IHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDMyNDUyODBjOGI2Yy4uOWU5MWZjY2U2 N2QxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRl ICJpOTE1X2dlbV9ndHQuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKICNp bmNsdWRlICJpOTE1X2dlbV9yZXF1ZXN0LmgiCisjaW5jbHVkZSAiaTkxNV9nZW1fdGltZWxpbmUu aCIKIAogI2luY2x1ZGUgImludGVsX2d2dC5oIgogCkBAIC0xODIxLDcgKzE4MjIsNiBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtlcm5lbF9j b250ZXh0OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZVtJOTE1X05VTV9FTkdJTkVT XTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnNlbWFwaG9yZTsKLQl1MzIgbmV4dF9zZXFubzsKIAogCXN0 cnVjdCBkcm1fZG1hX2hhbmRsZSAqc3RhdHVzX3BhZ2VfZG1haDsKIAlzdHJ1Y3QgcmVzb3VyY2Ug bWNoX3JlczsKQEAgLTIwNzksNiArMjA3OSw5IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAkJdm9pZCAoKnJlc3VtZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7CiAJCXZvaWQgKCpj bGVhbnVwX2VuZ2luZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAorCQlzdHJ1 Y3QgbGlzdF9oZWFkIHRpbWVsaW5lczsKKwkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lIGdsb2Jh bF90aW1lbGluZTsKKwogCQkvKioKIAkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29uc2lkZXJl ZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwogCQkgKiB1c2Vyc3BhY2UgcmVxdWVzdHM/IFdoaWxz dCBpZGxlLCB3ZSBhbGxvdyBydW50aW1lIHBvd2VyCkBAIC0zMTYwLDcgKzMxNjMsNyBAQCBpbnQg aTkxNV9nZW1fZ2V0X2FwZXJ0dXJlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50IGk5MTVfZ2VtX3dh aXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2KTsKLXZvaWQgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOworaW50IGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHZvaWQgaTkxNV9nZW1fbG9hZF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owogdm9pZCBpOTE1X2dlbV9sb2FkX2luaXRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiBpbnQgaTkxNV9nZW1fZnJlZXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CkBAIC0zMzI5LDcgKzMzMzIsNyBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2Zi KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqbmV3LAogCQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7 CiAKLWludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHUzMiBzZXFubyk7CitpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxf c2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKIAogc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICoKIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDVmNmYz MmFjMmE2NC4uZTQ1YTE3M2U0NzBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTM3MSw3 ICszNzEsNyBAQCBvdXQ6CiAJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJiBpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCiAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8o cnEpOwogCi0JaWYgKHJwcyAmJiBycS0+ZmVuY2Uuc2Vxbm8gPT0gcnEtPmVuZ2luZS0+bGFzdF9z dWJtaXR0ZWRfc2Vxbm8pIHsKKwlpZiAocnBzICYmIHJxLT5mZW5jZS5zZXFubyA9PSBycS0+dGlt ZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vKSB7CiAJCS8qIFRoZSBHUFUgaXMgbm93IGlkbGUg YW5kIHRoaXMgY2xpZW50IGhhcyBzdGFsbGVkLgogCQkgKiBTaW5jZSBubyBvdGhlciBjbGllbnQg aGFzIHN1Ym1pdHRlZCBhIHJlcXVlc3QgaW4gdGhlCiAJCSAqIG1lYW50aW1lLCBhc3N1bWUgdGhh dCB0aGlzIGNsaWVudCBpcyB0aGUgb25seSBvbmUKQEAgLTI1NzUsNyArMjU3NSw3IEBAIGk5MTVf Z2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CSAqIGV4dHJhIGRlbGF5IGZvciBhIHJlY2VudCBpbnRlcnJ1cHQgaXMgcG9pbnRsZXNzLiBIZW5j ZSwgd2UgZG8KIAkgKiBub3QgbmVlZCBhbiBlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKCkgYmVm b3JlIHRoZSBzZXFubyByZWFkcy4KIAkgKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3Qs ICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkocmVx dWVzdCwgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7CiAJCWlmIChpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKIAkJCWNvbnRpbnVlOwogCkBAIC0yNjQ0LDcg KzI2NDQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1bHQoaW5j b21wbGV0ZV9jdHgpKQogCQlyZXR1cm47CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVl KHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X2NvbnRpbnVlKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykK IAkJaWYgKHJlcXVlc3QtPmN0eCA9PSBpbmNvbXBsZXRlX2N0eCkKIAkJCXJlc2V0X3JlcXVlc3Qo cmVxdWVzdCk7CiB9CkBAIC0yNjgzLDcgKzI2ODMsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9j bGVhbnVwX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogKGxvY2ts ZXNzKSBsb29rdXAgZG9lc24ndCB0cnkgYW5kIHdhaXQgdXBvbiB0aGUgcmVxdWVzdCBhcyB3ZQog CSAqIHJlc2V0IGl0LgogCSAqLwotCWludGVsX2VuZ2luZV9pbml0X3NlcW5vKGVuZ2luZSwgZW5n aW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7CisJaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3Nl cW5vKGVuZ2luZSwKKwkJCQkgICAgICAgZW5naW5lLT50aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRf c2Vxbm8pOwogCiAJLyoKIAkgKiBDbGVhciB0aGUgZXhlY2xpc3RzIHF1ZXVlIHVwIGJlZm9yZSBm cmVlaW5nIHRoZSByZXF1ZXN0cywgYXMgdGhvc2UKQEAgLTI5OTEsMTggKzI5OTIsMjYgQEAgZGVz dHJveToKIAlyZXR1cm4gMDsKIH0KIAotaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgdW5zaWduZWQgaW50IGZsYWdzKQor c3RhdGljIGludCB3YWl0X2Zvcl90aW1lbGluZShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRs LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwotCWludCByZXQ7CisJaW50IHJldCwgaTsKIAot CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewotCQlpZiAoZW5naW5lLT5s YXN0X2NvbnRleHQgPT0gTlVMTCkKLQkJCWNvbnRpbnVlOworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHRsLT5lbmdpbmUpOyBpKyspIHsKKwkJcmV0ID0gaTkxNV9nZW1fYWN0aXZlX3dhaXQo JnRsLT5lbmdpbmVbaV0ubGFzdF9yZXF1ZXN0LCBmbGFncyk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCX0KIAotCQlyZXQgPSBpbnRlbF9lbmdpbmVfaWRsZShlbmdpbmUsIGZsYWdzKTsK KwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgaTkxNV9n ZW1fdGltZWxpbmUgKnRsOworCWludCByZXQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRsLCAm aTkxNS0+Z3QudGltZWxpbmVzLCBsaW5rKSB7CisJCXJldCA9IHdhaXRfZm9yX3RpbWVsaW5lKHRs LCBmbGFncyk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTQ2NzAsMjEgKzQ2 NzksMzIgQEAgaTkxNV9nZW1fbG9hZF9pbml0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoZGV2KTsKIH0KIAot dm9pZAoraW50CiBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJaW50 IGVycjsKIAogCWRldl9wcml2LT5vYmplY3RzID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImk5MTVf Z2VtX29iamVjdCIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QpLCAw LAogCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLAogCQkJCSAgTlVMTCk7CisJaWYgKCFkZXZfcHJp di0+b2JqZWN0cykgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl9vdXQ7CisJfQorCiAJ ZGV2X3ByaXYtPnZtYXMgPQogCQlrbWVtX2NhY2hlX2NyZWF0ZSgiaTkxNV9nZW1fdm1hIiwKIAkJ CQkgIHNpemVvZihzdHJ1Y3QgaTkxNV92bWEpLCAwLAogCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdO LAogCQkJCSAgTlVMTCk7CisJaWYgKCFkZXZfcHJpdi0+dm1hcykgeworCQllcnIgPSAtRU5PTUVN OworCQlnb3RvIGVycl9vYmplY3RzOworCX0KKwogCWRldl9wcml2LT5yZXF1ZXN0cyA9CiAJCWtt ZW1fY2FjaGVfY3JlYXRlKCJpOTE1X2dlbV9yZXF1ZXN0IiwKIAkJCQkgIHNpemVvZihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QpLCAwLApAQCAtNDY5Miw2ICs0NzEyLDE5IEBAIGk5MTVfZ2Vt X2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJCSAgU0xBQl9SRUNMQUlNX0FD Q09VTlQgfAogCQkJCSAgU0xBQl9ERVNUUk9ZX0JZX1JDVSwKIAkJCQkgIE5VTEwpOworCWlmICgh ZGV2X3ByaXYtPnJlcXVlc3RzKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX3ZtYXM7 CisJfQorCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+Z3QudGltZWxpbmVzKTsKKwllcnIgPSBpOTE1X2dlbV90aW1l bGluZV9pbml0KGRldl9wcml2LAorCQkJCSAgICAgJmRldl9wcml2LT5ndC5nbG9iYWxfdGltZWxp bmUsCisJCQkJICAgICAiW2V4ZWN1dGlvbl0iKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9yZXF1ZXN0czsKIAogCUlO SVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4dF9saXN0KTsKIAlJTklUX1dPUksoJmRldl9w cml2LT5tbS5mcmVlX3dvcmssIF9faTkxNV9nZW1fZnJlZV93b3JrKTsKQEAgLTQ3MTYsNiArNDc0 OSwxNyBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlhdG9t aWNfc2V0KCZkZXZfcHJpdi0+bW0uYnNkX2VuZ2luZV9kaXNwYXRjaF9pbmRleCwgMCk7CiAKIAlz cGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPmZiX3RyYWNraW5nLmxvY2spOworCisJcmV0dXJuIDA7 CisKK2Vycl9yZXF1ZXN0czoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnJlcXVlc3Rz KTsKK2Vycl92bWFzOgorCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+dm1hcyk7CitlcnJf b2JqZWN0czoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPm9iamVjdHMpOworZXJyX291 dDoKKwlyZXR1cm4gZXJyOwogfQogCiB2b2lkIGk5MTVfZ2VtX2xvYWRfY2xlYW51cChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKaW5kZXggODI5MmU3OTdkOWI1 Li43MzU1ODBkNzJlYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaApAQCAtMzEsNCArMzEsNiBA QAogI2RlZmluZSBHRU1fQlVHX09OKGV4cHIpCiAjZW5kaWYKIAorI2RlZmluZSBJOTE1X05VTV9F TkdJTkVTIDUKKwogI2VuZGlmIC8qIF9fSTkxNV9HRU1fSF9fICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggMjI1YzRjNjg0YWM0Li5jMTc0MzBkZDM4NzIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTQwLDcgKzQwLDcgQEAg c3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGZl bmNlICpmZW5jZSkKIAkgKiBtdWx0aXBsZSBleGVjdXRpb24gY29udGV4dHMgKGZlbmNlIGNvbnRl eHRzKSBhcyB3ZSBhbGxvdwogCSAqIGVuZ2luZXMgd2l0aGluIGEgc2luZ2xlIHRpbWVsaW5lIHRv IGV4ZWN1dGUgaW4gcGFyYWxsZWwuCiAJICovCi0JcmV0dXJuICJnbG9iYWwiOworCXJldHVybiB0 b19yZXF1ZXN0KGZlbmNlKS0+dGltZWxpbmUtPmNvbW1vbi0+bmFtZTsKIH0KIAogc3RhdGljIGJv b2wgaTkxNV9mZW5jZV9zaWduYWxlZChzdHJ1Y3QgZmVuY2UgKmZlbmNlKQpAQCAtMjExLDcgKzIx MSw3IEBAIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfdXB0byhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIAkJcmV0dXJuOwogCiAJZG8gewotCQl0bXAgPSBsaXN0X2ZpcnN0 X2VudHJ5KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCwKKwkJdG1wID0gbGlzdF9maXJzdF9lbnRyeSgm ZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCiAJCQkJICAgICAgIHR5cGVvZigqdG1wKSwgbGlu ayk7CiAKIAkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUodG1wKTsKQEAgLTIzOCwzNyArMjM4LDM5 IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fY2hlY2tfd2VkZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGk5MTVfZ2VtX2luaXRf c2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgc2Vxbm8pCitzdGF0 aWMgaW50IGk5MTVfZ2VtX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJCQkgICAgICB1MzIgc2Vxbm8pCiB7CisJc3RydWN0IGk5MTVfZ2VtX3Rp bWVsaW5lICp0aW1lbGluZSA9ICZkZXZfcHJpdi0+Z3QuZ2xvYmFsX3RpbWVsaW5lOwogCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlp bnQgcmV0OwogCiAJLyogQ2FyZWZ1bGx5IHJldGlyZSBhbGwgcmVxdWVzdHMgd2l0aG91dCB3cml0 aW5nIHRvIHRoZSByaW5ncyAqLwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBp ZCkgewotCQlyZXQgPSBpbnRlbF9lbmdpbmVfaWRsZShlbmdpbmUsCi0JCQkJCUk5MTVfV0FJVF9J TlRFUlJVUFRJQkxFIHwKLQkJCQkJSTkxNV9XQUlUX0xPQ0tFRCk7Ci0JCWlmIChyZXQpCi0JCQly ZXR1cm4gcmV0OwotCX0KKwlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LAor CQkJCSAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAorCQkJCSAgICAgSTkxNV9XQUlUX0xP Q0tFRCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCWk5MTVfZ2VtX3JldGlyZV9yZXF1 ZXN0cyhkZXZfcHJpdik7CiAKIAkvKiBJZiB0aGUgc2Vxbm8gd3JhcHMgYXJvdW5kLCB3ZSBuZWVk IHRvIGNsZWFyIHRoZSBicmVhZGNydW1iIHJidHJlZSAqLwotCWlmICghaTkxNV9zZXFub19wYXNz ZWQoc2Vxbm8sIGRldl9wcml2LT5uZXh0X3NlcW5vKSkgeworCWlmICghaTkxNV9zZXFub19wYXNz ZWQoc2Vxbm8sIHRpbWVsaW5lLT5uZXh0X3NlcW5vKSkgewogCQl3aGlsZSAoaW50ZWxfa2lja193 YWl0ZXJzKGRldl9wcml2KSB8fAogCQkgICAgICAgaW50ZWxfa2lja19zaWduYWxlcnMoZGV2X3By aXYpKQogCQkJeWllbGQoKTsKKwkJeWllbGQoKTsKIAl9CiAKIAkvKiBGaW5hbGx5IHJlc2V0IGh3 IHN0YXRlICovCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQotCQlpbnRl bF9lbmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIHNlcW5vKTsKKwkJaW50ZWxfZW5naW5lX2luaXRf Z2xvYmFsX3NlcW5vKGVuZ2luZSwgc2Vxbm8pOwogCiAJcmV0dXJuIDA7CiB9CiAKLWludCBpOTE1 X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQoraW50IGk5 MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5v KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK IAlpbnQgcmV0OwpAQCAtMjgxLDI4ICsyODMsMzEgQEAgaW50IGk5MTVfZ2VtX3NldF9zZXFubyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCiAJLyogSFdTIHBhZ2UgbmVlZHMgdG8g YmUgc2V0IGxlc3MgdGhhbiB3aGF0IHdlCiAJICogd2lsbCBpbmplY3QgdG8gcmluZwogCSAqLwot CXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vxbm8oZGV2X3ByaXYsIHNlcW5vIC0gMSk7CisJcmV0ID0g aTkxNV9nZW1faW5pdF9nbG9iYWxfc2Vxbm8oZGV2X3ByaXYsIHNlcW5vIC0gMSk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAotCWRldl9wcml2LT5uZXh0X3NlcW5vID0gc2Vxbm87CisJZGV2 X3ByaXYtPmd0Lmdsb2JhbF90aW1lbGluZS5uZXh0X3NlcW5vID0gc2Vxbm87CiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgaTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubykKK3N0YXRpYyBpbnQgaTkxNV9nZW1fZ2V0X2dsb2Jh bF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICB1MzIg KnNlcW5vKQogeworCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwgPSAmZGV2X3ByaXYtPmd0 Lmdsb2JhbF90aW1lbGluZTsKKwogCS8qIHJlc2VydmUgMCBmb3Igbm9uLXNlcW5vICovCi0JaWYg KHVubGlrZWx5KGRldl9wcml2LT5uZXh0X3NlcW5vID09IDApKSB7CisJaWYgKHVubGlrZWx5KHRs LT5uZXh0X3NlcW5vID09IDApKSB7CiAJCWludCByZXQ7CiAKLQkJcmV0ID0gaTkxNV9nZW1faW5p dF9zZXFubyhkZXZfcHJpdiwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX2luaXRfZ2xvYmFsX3NlcW5v KGRldl9wcml2LCAwKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAKLQkJZGV2X3ByaXYt Pm5leHRfc2Vxbm8gPSAxOworCQl0bC0+bmV4dF9zZXFubyA9IDE7CiAJfQogCi0JKnNlcW5vID0g ZGV2X3ByaXYtPm5leHRfc2Vxbm8rKzsKKwkqc2Vxbm8gPSB0bC0+bmV4dF9zZXFubysrOwogCXJl dHVybiAwOwogfQogCkBAIC0zMTEsMTMgKzMxNiwxNCBAQCBzdWJtaXRfbm90aWZ5KHN0cnVjdCBp OTE1X3N3X2ZlbmNlICpmZW5jZSwgZW51bSBpOTE1X3N3X2ZlbmNlX25vdGlmeSBzdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QgPQogCQljb250YWluZXJfb2Yo ZmVuY2UsIHR5cGVvZigqcmVxdWVzdCksIHN1Ym1pdCk7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwogCiAJLyogV2lsbCBiZSBjYWxsZWQgZnJvbSBp cnEtY29udGV4dCB3aGVuIHVzaW5nIGZvcmVpZ24gRE1BIGZlbmNlcyAqLwogCiAJc3dpdGNoIChz dGF0ZSkgewogCWNhc2UgRkVOQ0VfQ09NUExFVEU6Ci0JCXJlcXVlc3QtPmVuZ2luZS0+bGFzdF9z dWJtaXR0ZWRfc2Vxbm8gPSByZXF1ZXN0LT5mZW5jZS5zZXFubzsKLQkJcmVxdWVzdC0+ZW5naW5l LT5zdWJtaXRfcmVxdWVzdChyZXF1ZXN0KTsKKwkJZW5naW5lLT50aW1lbGluZS0+bGFzdF9zdWJt aXR0ZWRfc2Vxbm8gPSByZXF1ZXN0LT5mZW5jZS5zZXFubzsKKwkJZW5naW5lLT5zdWJtaXRfcmVx dWVzdChyZXF1ZXN0KTsKIAkJYnJlYWs7CiAKIAljYXNlIEZFTkNFX0ZSRUU6CkBAIC0zNTcsNyAr MzYzLDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKIAkvKiBNb3ZlIHRoZSBvbGRlc3QgcmVx dWVzdCB0byB0aGUgc2xhYi1jYWNoZSAoaWYgbm90IGluIHVzZSEpICovCi0JcmVxID0gbGlzdF9m aXJzdF9lbnRyeV9vcl9udWxsKCZlbmdpbmUtPnJlcXVlc3RfbGlzdCwKKwlyZXEgPSBsaXN0X2Zp cnN0X2VudHJ5X29yX251bGwoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAogCQkJCSAgICAg ICB0eXBlb2YoKnJlcSksIGxpbmspOwogCWlmIChyZXEgJiYgaTkxNV9nZW1fcmVxdWVzdF9jb21w bGV0ZWQocmVxKSkKIAkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVxKTsKQEAgLTM5NCwxNSAr NDAwLDE3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCWlmICghcmVxKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXJldCA9 IGk5MTVfZ2VtX2dldF9zZXFubyhkZXZfcHJpdiwgJnNlcW5vKTsKKwlyZXQgPSBpOTE1X2dlbV9n ZXRfZ2xvYmFsX3NlcW5vKGRldl9wcml2LCAmc2Vxbm8pOwogCWlmIChyZXQpCiAJCWdvdG8gZXJy OwogCisJcmVxLT50aW1lbGluZSA9IGVuZ2luZS0+dGltZWxpbmU7CisKIAlzcGluX2xvY2tfaW5p dCgmcmVxLT5sb2NrKTsKIAlmZW5jZV9pbml0KCZyZXEtPmZlbmNlLAogCQkgICAmaTkxNV9mZW5j ZV9vcHMsCiAJCSAgICZyZXEtPmxvY2ssCi0JCSAgIGVuZ2luZS0+ZmVuY2VfY29udGV4dCwKKwkJ ICAgcmVxLT50aW1lbGluZS0+ZmVuY2VfY29udGV4dCwKIAkJICAgc2Vxbm8pOwogCiAJaTkxNV9z d19mZW5jZV9pbml0KCZyZXEtPnN1Ym1pdCwgc3VibWl0X25vdGlmeSk7CkBAIC00NTcsOSArNDY1 LDE2IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnRvLAogCiAJR0VNX0JVR19PTih0byA9PSBmcm9tKTsKIAotCWlmICh0by0+ZW5n aW5lID09IGZyb20tPmVuZ2luZSkKKwlpZiAodG8tPnRpbWVsaW5lID09IGZyb20tPnRpbWVsaW5l KQogCQlyZXR1cm4gMDsKIAorCWlmICh0by0+ZW5naW5lID09IGZyb20tPmVuZ2luZSkgeworCQly ZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmdG8tPnN1Ym1pdCwKKwkJCQkJ CSAgICAgICAmZnJvbS0+c3VibWl0LAorCQkJCQkJICAgICAgIEdGUF9LRVJORUwpOworCQlyZXR1 cm4gcmV0IDwgMCA/IHJldCA6IDA7CisJfQorCiAJaWR4ID0gaW50ZWxfZW5naW5lX3N5bmNfaW5k ZXgoZnJvbS0+ZW5naW5lLCB0by0+ZW5naW5lKTsKIAlpZiAoZnJvbS0+ZmVuY2Uuc2Vxbm8gPD0g ZnJvbS0+ZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdKQogCQlyZXR1cm4gMDsKQEAg LTYyMiw2ICs2MzcsNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogewogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGlu ZSA9IHJlcXVlc3QtPnRpbWVsaW5lOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcHJl djsKIAl1MzIgcmVxdWVzdF9zdGFydDsKIAl1MzIgcmVzZXJ2ZWRfdGFpbDsKQEAgLTY3OSwxNyAr Njk1LDE3IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiAJICogc2VlIGEgbW9yZSByZWNlbnQg dmFsdWUgaW4gdGhlIGh3cyB0aGFuIHdlIGFyZSB0cmFja2luZy4KIAkgKi8KIAotCXByZXYgPSBp OTE1X2dlbV9hY3RpdmVfcmF3KCZlbmdpbmUtPmxhc3RfcmVxdWVzdCwKKwlwcmV2ID0gaTkxNV9n ZW1fYWN0aXZlX3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKIAkJCQkgICAmcmVxdWVzdC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaWYgKHByZXYpCiAJCWk5MTVfc3dfZmVuY2VfYXdh aXRfc3dfZmVuY2UoJnJlcXVlc3QtPnN1Ym1pdCwgJnByZXYtPnN1Ym1pdCwKIAkJCQkJICAgICAm cmVxdWVzdC0+c3VibWl0cSk7CiAKIAlyZXF1ZXN0LT5lbWl0dGVkX2ppZmZpZXMgPSBqaWZmaWVz OwotCXJlcXVlc3QtPnByZXZpb3VzX3NlcW5vID0gZW5naW5lLT5sYXN0X3BlbmRpbmdfc2Vxbm87 Ci0JZW5naW5lLT5sYXN0X3BlbmRpbmdfc2Vxbm8gPSByZXF1ZXN0LT5mZW5jZS5zZXFubzsKLQlp OTE1X2dlbV9hY3RpdmVfc2V0KCZlbmdpbmUtPmxhc3RfcmVxdWVzdCwgcmVxdWVzdCk7Ci0JbGlz dF9hZGRfdGFpbCgmcmVxdWVzdC0+bGluaywgJmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKKwlyZXF1 ZXN0LT5wcmV2aW91c19zZXFubyA9IHRpbWVsaW5lLT5sYXN0X3BlbmRpbmdfc2Vxbm87CisJdGlt ZWxpbmUtPmxhc3RfcGVuZGluZ19zZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5vOworCWk5MTVf Z2VtX2FjdGl2ZV9zZXQoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsIHJlcXVlc3QpOworCWxpc3Rf YWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZ0aW1lbGluZS0+cmVxdWVzdHMpOwogCWxpc3RfYWRk X3RhaWwoJnJlcXVlc3QtPnJpbmdfbGluaywgJnJpbmctPnJlcXVlc3RfbGlzdCk7CiAKIAlpOTE1 X2dlbV9tYXJrX2J1c3koZW5naW5lKTsKQEAgLTg5Niw3ICs5MTIsOCBAQCBzdGF0aWMgYm9vbCBl bmdpbmVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsICpuZXh0OwogCi0JbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHJlcXVlc3QsIG5leHQsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwg bGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBuZXh0LAorCQkJCSAm ZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspIHsKIAkJaWYgKCFpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKIAkJCXJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCmluZGV4IGI4ZmVmZjU4NTdhMC4uMzc4ZjUyMzg0NGJi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCkBAIC04MSw2ICs4MSw3 IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3RydWN0IGludGVs X3JpbmcgKnJpbmc7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZTsKIAlzdHJ1Y3Qg aW50ZWxfc2lnbmFsX25vZGUgc2lnbmFsaW5nOwogCiAJc3RydWN0IGk5MTVfc3dfZmVuY2Ugc3Vi bWl0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNDU3OWMxMDkwNjYKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5jCkBAIC0wLDAgKzEs NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCisKK2ludCBpOTE1X2dlbV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAorCQkJICAgc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1l bGluZSwKKwkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJdW5zaWduZWQgaW50IGk7CisJdTY0 IGZlbmNlczsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCisJdGltZWxpbmUtPmk5MTUgPSBpOTE1OworCXRpbWVsaW5lLT5uYW1lID0ga3N0cmR1cChu YW1lID86ICJba2VybmVsXSIsIEdGUF9LRVJORUwpOworCWlmICghdGltZWxpbmUtPm5hbWUpCisJ CXJldHVybiAtRU5PTUVNOworCisJbGlzdF9hZGQoJnRpbWVsaW5lLT5saW5rLCAmaTkxNS0+Z3Qu dGltZWxpbmVzKTsKKworCS8qIENhbGxlZCBkdXJpbmcgZWFybHlfaW5pdCBiZWZvcmUgd2Uga25v dyBob3cgbWFueSBlbmdpbmVzIHRoZXJlIGFyZSAqLworCWZlbmNlcyA9IGZlbmNlX2NvbnRleHRf YWxsb2MoQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKSk7CisJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUodGltZWxpbmUtPmVuZ2luZSk7IGkrKykgeworCQlzdHJ1Y3QgaW50ZWxfdGltZWxp bmUgKnRsID0gJnRpbWVsaW5lLT5lbmdpbmVbaV07CisKKwkJdGwtPmZlbmNlX2NvbnRleHQgPSBm ZW5jZXMrKzsKKwkJdGwtPmNvbW1vbiA9IHRpbWVsaW5lOworCisJCWluaXRfcmVxdWVzdF9hY3Rp dmUoJnRsLT5sYXN0X3JlcXVlc3QsIE5VTEwpOworCQlJTklUX0xJU1RfSEVBRCgmdGwtPnJlcXVl c3RzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpOTE1X2dlbV90aW1lbGluZV9maW5p KHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm dGwtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJbGlzdF9kZWwoJnRsLT5saW5rKTsKKwlr ZnJlZSh0bC0+bmFtZSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV90aW1lbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJmZGYwMzMxY2M1MAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5l LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworCisjaWZuZGVmIEk5MTVfR0VNX1RJTUVMSU5FX0gKKyNkZWZpbmUgSTkxNV9HRU1fVElN RUxJTkVfSAorCisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorCisjaW5jbHVkZSAiaTkxNV9nZW1f cmVxdWVzdC5oIgorCitzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmU7CisKK3N0cnVjdCBpbnRlbF90 aW1lbGluZSB7CisJdTY0IGZlbmNlX2NvbnRleHQ7CisJdTMyIGxhc3Rfc3VibWl0dGVkX3NlcW5v OworCXUzMiBsYXN0X3BlbmRpbmdfc2Vxbm87CisKKwkvKioKKwkgKiBMaXN0IG9mIGJyZWFkY3J1 bWJzIGFzc29jaWF0ZWQgd2l0aCBHUFUgcmVxdWVzdHMgY3VycmVudGx5CisJICogb3V0c3RhbmRp bmcuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0czsKKworCS8qIENvbnRhaW5zIGFu IFJDVSBndWFyZGVkIHBvaW50ZXIgdG8gdGhlIGxhc3QgcmVxdWVzdC4gTm8gcmVmZXJlbmNlIGlz CisJICogaGVsZCB0byB0aGUgcmVxdWVzdCwgdXNlcnMgbXVzdCBjYXJlZnVsbHkgYWNxdWlyZSBh IHJlZmVyZW5jZSB0bworCSAqIHRoZSByZXF1ZXN0IHVzaW5nIGk5MTVfZ2VtX2FjdGl2ZV9nZXRf cmVxdWVzdF9yY3UoKSwgb3IgaG9sZCB0aGUKKwkgKiBzdHJ1Y3RfbXV0ZXguCisJICovCisJc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X3JlcXVlc3Q7CisKKwlzdHJ1Y3QgaTkxNV9nZW1fdGlt ZWxpbmUgKmNvbW1vbjsKK307CisKK3N0cnVjdCBpOTE1X2dlbV90aW1lbGluZSB7CisJc3RydWN0 IGxpc3RfaGVhZCBsaW5rOworCXUzMiBuZXh0X3NlcW5vOworCisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTU7CisJY29uc3QgY2hhciAqbmFtZTsKKworCXN0cnVjdCBpbnRlbF90aW1lbGlu ZSBlbmdpbmVbSTkxNV9OVU1fRU5HSU5FU107Cit9OworCitpbnQgaTkxNV9nZW1fdGltZWxpbmVf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSAgIHN0cnVjdCBpOTE1X2dl bV90aW1lbGluZSAqdGwsCisJCQkgICBjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQgaTkxNV9nZW1f dGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsKTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCA0ZjYyYjgyZmM0ZGYuLmY0YmUy ZGExNTBlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC0xMTAzLDcg KzExMDMsNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yLAogCWVlLT5pbnN0cG0gPSBJOTE1X1JFQUQo UklOR19JTlNUUE0oZW5naW5lLT5tbWlvX2Jhc2UpKTsKIAllZS0+YWN0aGQgPSBpbnRlbF9lbmdp bmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7CiAJZWUtPnNlcW5vID0gaW50ZWxfZW5naW5lX2dl dF9zZXFubyhlbmdpbmUpOwotCWVlLT5sYXN0X3NlcW5vID0gZW5naW5lLT5sYXN0X3N1Ym1pdHRl ZF9zZXFubzsKKwllZS0+bGFzdF9zZXFubyA9IGVuZ2luZS0+dGltZWxpbmUtPmxhc3Rfc3VibWl0 dGVkX3NlcW5vOwogCWVlLT5zdGFydCA9IEk5MTVfUkVBRF9TVEFSVChlbmdpbmUpOwogCWVlLT5o ZWFkID0gSTkxNV9SRUFEX0hFQUQoZW5naW5lKTsKIAllZS0+dGFpbCA9IEk5MTVfUkVBRF9UQUlM KGVuZ2luZSk7CkBAIC0xMTg4LDcgKzExODgsNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVjb3Jk X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCWNvdW50ID0gMDsK IAlyZXF1ZXN0ID0gZmlyc3Q7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVx dWVzdCwgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQogCQljb3VudCsrOwogCWlm ICghY291bnQpCiAJCXJldHVybjsKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyB2b2lkIGVu Z2luZV9yZWNvcmRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJ Y291bnQgPSAwOwogCXJlcXVlc3QgPSBmaXJzdDsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20o cmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0LCBsaW5rKSB7CisJbGlzdF9mb3JfZWFjaF9l bnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewog CQlpZiAoY291bnQgPj0gZWUtPm51bV9yZXF1ZXN0cykgewogCQkJLyoKIAkJCSAqIElmIHRoZSBy aW5nIHJlcXVlc3QgbGlzdCB3YXMgY2hhbmdlZCBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IGExZjc2YzhmOGNkZS4uNWFlYzBkYThiZjUzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xMDM5LDcgKzEw MzksOCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCQllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gaTkxNV9ndWNfc3Vi bWl0OwogCiAJCS8qIFJlcGxheSB0aGUgY3VycmVudCBzZXQgb2YgcHJldmlvdXNseSBzdWJtaXR0 ZWQgcmVxdWVzdHMgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT5y ZXF1ZXN0X2xpc3QsIGxpbmspIHsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LAorCQkJ CSAgICAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspIHsKIAkJCWNsaWVudC0+d3Ff cnN2ZCArPSBzaXplb2Yoc3RydWN0IGd1Y193cV9pdGVtKTsKIAkJCWlmIChpOTE1X3N3X2ZlbmNl X2RvbmUoJnJlcXVlc3QtPnN1Ym1pdCkpCiAJCQkJaTkxNV9ndWNfc3VibWl0KHJlcXVlc3QpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggYjRhOTlkZDU0ZTZiLi40YzQwYTEzZDI2ZTQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMzEzNyw3ICszMTM3LDcgQEAgc3RhdGljIHZvaWQg aTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAkJYWN0 aGQgPSBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7CiAJCXNlcW5vID0gaW50 ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwotCQlzdWJtaXQgPSBSRUFEX09OQ0UoZW5naW5l LT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7CisJCXN1Ym1pdCA9IFJFQURfT05DRShlbmdpbmUtPnRp bWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyk7CiAKIAkJaWYgKGVuZ2luZS0+aGFuZ2NoZWNr LnNlcW5vID09IHNlcW5vKSB7CiAJCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHN1Ym1p dCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggYTIxMDRmYTky MGM4Li42YTMxMDU1MTJkMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CkBAIC0xNzQsNyArMTc0LDcgQEAgY2xlYW51cDoKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkIGlu 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==