From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2 5/6] drm/i915: Split i915_gem_timeline into individual timelines Date: Mon, 23 Apr 2018 19:08:53 +0100 Message-ID: <20180423180854.24219-5-chris@chris-wilson.co.uk> References: <20180423180854.24219-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id EEC446E2D9 for ; Mon, 23 Apr 2018 18:09:25 +0000 (UTC) In-Reply-To: <20180423180854.24219-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 V2UgbmVlZCB0byBtb3ZlIHRvIGEgbW9yZSBmbGV4aWJsZSB0aW1lbGluZSB0aGF0IGRvZXNuJ3Qg YXNzdW1lIG9uZQpmZW5jZSBjb250ZXh0IHBlciBlbmdpbmUsIGFuZCBzbyBhbGxvdyBmb3IgYSBz aW5nbGUgdGltZWxpbmUgdG8gYmUgdXNlZAphY3Jvc3MgYSBjb21iaW5hdGlvbiBvZiBlbmdpbmVz LiBUaGlzIG1lYW5zIHRoYXQgcHJlYWxsb2NhdGluZyBhIGZlbmNlCmNvbnRleHQgcGVyIGVuZ2lu ZSBpcyBub3cgYSBoaW5kcmFuY2UsIGFuZCBzbyB3ZSB3YW50IHRvIGludHJvZHVjZSB0aGUKc2lu Z3VsYXIgdGltZWxpbmUuIEZyb20gdGhlIGNvZGUgcGVyc3BlY3RpdmUsIHRoaXMgaGFzIHRoZSBu b3RhYmxlCmFkdmFudGFnZSBvZiBjbGVhcmluZyB1cCBhIGxvdCBvZiBtaXJreSBzZW1hbnRpY3Mg YW5kIHNvbWUgY2x1bXN5CnBvaW50ZXIgY2hhc2luZy4KCkJ5IHNwbGl0dGluZyB0aGUgdGltZWxp bmUgdXAgaW50byBhIHNpbmdsZSBlbnRpdHkgcmF0aGVyIHRoYW4gYW4gYXJyYXkKb2YgcGVyLWVu Z2luZSB0aW1lbGluZXMsIHdlIGNhbiByZWFsaXNlIHRoZSBnb2FsIG9mIHRoZSBwcmV2aW91cyBw YXRjaApvZiB0cmFja2luZyB0aGUgdGltZWxpbmUgYWxvbmdzaWRlIHRoZSByaW5nLgoKU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAxMTggKysrKystLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICA0OSArKy0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oICAgICAgIHwgICAyIC0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYyAgICAgIHwgMTk4IC0tLS0tLS0tLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgICA0 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgMTAg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICA2NiAr KystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAgICAgICB8ICAg MyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jICAgICAgICAgIHwgMTA1 ICsrKysrKysrKysKIC4uLi97aTkxNV9nZW1fdGltZWxpbmUuaCA9PiBpOTE1X3RpbWVsaW5lLmh9 ICB8ICA2NyArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAg ICAgICB8ICAyNyArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAg ICAgIHwgIDQ4ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg ICAgICAgfCAgMjMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAg ICAgICB8ICAxMSArLQogLi4uL3tpOTE1X2dlbV90aW1lbGluZS5jID0+IGk5MTVfdGltZWxpbmUu Y30gIHwgIDk0ICsrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf ZW5naW5lLmMgIHwgIDMyICsrLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1f ZGV2aWNlLmMgIHwgIDEwICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVs aW5lLmMgICAgfCAgNDUgKystLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja190aW1l bGluZS5oICAgIHwgIDI4ICstLQogMjMgZmlsZXMgY2hhbmdlZCwgMzg5IGluc2VydGlvbnMoKyks IDU2NCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aW1lbGluZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV90aW1lbGluZS5jCiByZW5hbWUgZHJpdmVycy9ncHUvZHJtL2k5MTUve2k5MTVf Z2VtX3RpbWVsaW5lLmggPT4gaTkxNV90aW1lbGluZS5ofSAoNjglKQogcmVuYW1lIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy97aTkxNV9nZW1fdGltZWxpbmUuYyA9PiBpOTE1X3RpbWVs aW5lLmN9ICg3MCUpCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA5YmVlNTJhOTQ5YTkuLjEyMGRi MjFmY2Q1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTY3LDExICs2NywxMSBAQCBpOTE1LXkg Kz0gaTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaTkxNV9nZW1fc2hyaW5rZXIubyBcCiAJICBpOTE1 X2dlbV9zdG9sZW4ubyBcCiAJICBpOTE1X2dlbV90aWxpbmcubyBcCi0JICBpOTE1X2dlbV90aW1l bGluZS5vIFwKIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCiAJICBpOTE1X2dlbWZzLm8gXAogCSAg aTkxNV9xdWVyeS5vIFwKIAkgIGk5MTVfcmVxdWVzdC5vIFwKKwkgIGk5MTVfdGltZWxpbmUubyBc CiAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwKIAkgIGk5MTVfdm1hLm8gXAogCSAgaW50ZWxfYnJl YWRjcnVtYnMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBiOWJkODMyOGY1MDEuLmRh YjE1YjZhYmMzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC03MiwxMCArNzIsMTAgQEAK ICNpbmNsdWRlICJpOTE1X2dlbV9mZW5jZV9yZWcuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9vYmpl Y3QuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9ndHQuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV90aW1l bGluZS5oIgogI2luY2x1ZGUgImk5MTVfZ3B1X2Vycm9yLmgiCiAjaW5jbHVkZSAiaTkxNV9yZXF1 ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9zY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJpOTE1X3RpbWVs aW5lLmgiCiAjaW5jbHVkZSAiaTkxNV92bWEuaCIKIAogI2luY2x1ZGUgImludGVsX2d2dC5oIgpA QCAtMjA1OCw4ICsyMDU4LDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQl2b2lkICgq cmVzdW1lKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKIAkJdm9pZCAoKmNsZWFudXBfZW5n aW5lKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCi0JCXN0cnVjdCBpOTE1X2dl bV90aW1lbGluZSBleGVjdXRpb25fdGltZWxpbmU7Ci0JCXN0cnVjdCBpOTE1X2dlbV90aW1lbGlu ZSBsZWdhY3lfdGltZWxpbmU7CiAJCXN0cnVjdCBsaXN0X2hlYWQgdGltZWxpbmVzOwogCiAJCXN0 cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3JpbmdzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXgg ZDYwZjNiZDRiYzY2Li5kMzY3Nzg1MThjZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAt MTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB1MzIgX19pOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCXN5bmNocm9uaXplX2lycShpOTE1LT5kcm0uaXJxKTsKIAogCWlu dGVsX2VuZ2luZXNfcGFyayhpOTE1KTsKLQlpOTE1X2dlbV90aW1lbGluZXNfcGFyayhpOTE1KTsK KwlpOTE1X3RpbWVsaW5lc19wYXJrKGk5MTUpOwogCiAJaTkxNV9wbXVfZ3RfcGFya2VkKGk5MTUp OwogCkBAIC0yOTc3LDggKzI5NzcsOCBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBleHRyYSBkZWxheSBmb3IgYSByZWNl bnQgaW50ZXJydXB0IGlzIHBvaW50bGVzcy4gSGVuY2UsIHdlIGRvCiAJICogbm90IG5lZWQgYW4g ZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUgc2Vxbm8gcmVhZHMuCiAJICov Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKLQls aXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywg bGluaykgeworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdz KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVl c3RzLCBsaW5rKSB7CiAJCWlmIChfX2k5MTVfcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCwgcmVx dWVzdC0+Z2xvYmFsX3NlcW5vKSkKIAkJCWNvbnRpbnVlOwogCkBAIC0yOTg5LDcgKzI5ODksNyBA QCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAkJYWN0aXZlID0gcmVxdWVzdDsKIAkJYnJlYWs7CiAJfQotCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiBhY3Rp dmU7CiB9CkBAIC0zMTEwLDE1ICszMTEwLDE1IEBAIHN0YXRpYyB2b2lkIGVuZ2luZV9za2lwX2Nv bnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmh1bmdfY3R4ID0gcmVxdWVzdC0+Y3R4OwotCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGlt ZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxp bmUgPSByZXF1ZXN0LT50aW1lbGluZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JR0VNX0JV R19PTih0aW1lbGluZSA9PSBlbmdpbmUtPnRpbWVsaW5lKTsKKwlHRU1fQlVHX09OKHRpbWVsaW5l ID09ICZlbmdpbmUtPnRpbWVsaW5lKTsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRp bWVsaW5lLT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxp bmUubG9jaywgZmxhZ3MpOwogCXNwaW5fbG9jaygmdGltZWxpbmUtPmxvY2spOwogCi0JbGlzdF9m b3JfZWFjaF9lbnRyeV9jb250aW51ZShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVz dHMsIGxpbmspCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShyZXF1ZXN0LCAmZW5naW5l LT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykKIAkJaWYgKHJlcXVlc3QtPmN0eCA9PSBodW5nX2N0 eCkKIAkJCXNraXBfcmVxdWVzdChyZXF1ZXN0KTsKIApAQCAtMzEyNiw3ICszMTI2LDcgQEAgc3Rh dGljIHZvaWQgZW5naW5lX3NraXBfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 KQogCQlza2lwX3JlcXVlc3QocmVxdWVzdCk7CiAKIAlzcGluX3VubG9jaygmdGltZWxpbmUtPmxv Y2spOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZs YWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZs YWdzKTsKIH0KIAogLyogUmV0dXJucyB0aGUgcmVxdWVzdCBpZiBpdCB3YXMgZ3VpbHR5IG9mIHRo ZSBoYW5nICovCkBAIC0zMTgzLDExICszMTgzLDExIEBAIGk5MTVfZ2VtX3Jlc2V0X3JlcXVlc3Qo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigm cmVxdWVzdC0+ZmVuY2UsIC1FQUdBSU4pOwogCiAJCQkvKiBSZXdpbmQgdGhlIGVuZ2luZSB0byBy ZXBsYXkgdGhlIGluY29tcGxldGUgcnEgKi8KLQkJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2spOworCQkJc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsK IAkJCXJlcXVlc3QgPSBsaXN0X3ByZXZfZW50cnkocmVxdWVzdCwgbGluayk7Ci0JCQlpZiAoJnJl cXVlc3QtPmxpbmsgPT0gJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzKQorCQkJaWYgKCZyZXF1 ZXN0LT5saW5rID09ICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzKQogCQkJCXJlcXVlc3QgPSBO VUxMOwotCQkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwkJCXNw aW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIAkJfQogCX0KIApAQCAtMzMw MCwxMCArMzMwMCwxMCBAQCBzdGF0aWMgdm9pZCBub3BfY29tcGxldGVfc3VibWl0X3JlcXVlc3Qo c3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAkJICByZXF1ZXN0LT5mZW5jZS5jb250ZXh0 LCByZXF1ZXN0LT5mZW5jZS5zZXFubyk7CiAJZG1hX2ZlbmNlX3NldF9lcnJvcigmcmVxdWVzdC0+ ZmVuY2UsIC1FSU8pOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnJlcXVlc3QtPmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcmVxdWVzdC0+ZW5naW5l LT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiAJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJlcXVlc3Qp OwogCWludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFubyhyZXF1ZXN0LT5lbmdpbmUsIHJlcXVl c3QtPmdsb2JhbF9zZXFubyk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmVxdWVzdC0+ZW5n aW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJl cXVlc3QtPmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwogfQogCiB2b2lkIGk5MTVfZ2Vt X3NldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC0zMzcyLDEwICsz MzcyLDEwIEBAIHZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAkJICogKGxvY2tsZXNzKSBsb29rdXAgZG9lc24ndCB0cnkgYW5kIHdhaXQgdXBv biB0aGUgcmVxdWVzdCBhcyB3ZQogCQkgKiByZXNldCBpdC4KIAkJICovCi0JCXNwaW5fbG9ja19p cnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIAkJaW50ZWxfZW5naW5lX2luaXRf Z2xvYmFsX3NlcW5vKGVuZ2luZSwKIAkJCQkJICAgICAgIGludGVsX2VuZ2luZV9sYXN0X3N1Ym1p dChlbmdpbmUpKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+ bG9jaywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5l LmxvY2ssIGZsYWdzKTsKIAogCQlpOTE1X2dlbV9yZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7 CiAJfQpAQCAtMzM4Nyw4ICszMzg3LDcgQEAgdm9pZCBpOTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxp bmUgKnRsOwotCWludCBpOworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKIAogCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWlmICghdGVzdF9iaXQoSTkx NV9XRURHRUQsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpKQpAQCAtMzQwNywyOSArMzQwNiwyNyBA QCBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAkgKiBObyBtb3JlIGNhbiBiZSBzdWJtaXR0ZWQgdW50aWwgd2UgcmVzZXQgdGhlIHdlZGdl ZCBiaXQuCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJmk5MTUtPmd0LnRpbWVsaW5l cywgbGluaykgewotCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0bC0+ZW5naW5lKTsgaSsr KSB7Ci0JCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7CiAKLQkJCXJxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5lbmdpbmVbaV0ubGFzdF9y ZXF1ZXN0LAotCQkJCQkJICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JCQlpZiAoIXJxKQot CQkJCWNvbnRpbnVlOworCQlycSA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZ0bC0+bGFzdF9yZXF1 ZXN0LAorCQkJCQkgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwkJaWYgKCFycSkKKwkJCWNv bnRpbnVlOwogCi0JCQkvKgotCQkJICogV2UgY2FuJ3QgdXNlIG91ciBub3JtYWwgd2FpdGVyIGFz IHdlIHdhbnQgdG8KLQkJCSAqIGF2b2lkIHJlY3Vyc2l2ZWx5IHRyeWluZyB0byBoYW5kbGUgdGhl IGN1cnJlbnQKLQkJCSAqIHJlc2V0LiBUaGUgYmFzaWMgZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCgp IGluc3RhbGxzCi0JCQkgKiBhIGNhbGxiYWNrIGZvciBkbWFfZmVuY2Vfc2lnbmFsKCksIHdoaWNo IGlzCi0JCQkgKiB0cmlnZ2VyZWQgYnkgb3VyIG5vcCBoYW5kbGVyIChpbmRpcmVjdGx5LCB0aGUK LQkJCSAqIGNhbGxiYWNrIGVuYWJsZXMgdGhlIHNpZ25hbGVyIHRocmVhZCB3aGljaCBpcwotCQkJ ICogd29rZW4gYnkgdGhlIG5vcF9zdWJtaXRfcmVxdWVzdCgpIGFkdmFuY2luZyB0aGUgc2Vxbm8K LQkJCSAqIGFuZCB3aGVuIHRoZSBzZXFubyBwYXNzZXMgdGhlIGZlbmNlLCB0aGUgc2lnbmFsZXIK LQkJCSAqIHRoZW4gc2lnbmFscyB0aGUgZmVuY2Ugd2FraW5nIHVzIHVwKS4KLQkJCSAqLwotCQkJ aWYgKGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQoJnJxLT5mZW5jZSwgdHJ1ZSwKLQkJCQkJCSAgIE1B WF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApCi0JCQkJcmV0dXJuIGZhbHNlOwotCQl9CisJCS8qCisJ CSAqIFdlIGNhbid0IHVzZSBvdXIgbm9ybWFsIHdhaXRlciBhcyB3ZSB3YW50IHRvCisJCSAqIGF2 b2lkIHJlY3Vyc2l2ZWx5IHRyeWluZyB0byBoYW5kbGUgdGhlIGN1cnJlbnQKKwkJICogcmVzZXQu IFRoZSBiYXNpYyBkbWFfZmVuY2VfZGVmYXVsdF93YWl0KCkgaW5zdGFsbHMKKwkJICogYSBjYWxs YmFjayBmb3IgZG1hX2ZlbmNlX3NpZ25hbCgpLCB3aGljaCBpcworCQkgKiB0cmlnZ2VyZWQgYnkg b3VyIG5vcCBoYW5kbGVyIChpbmRpcmVjdGx5LCB0aGUKKwkJICogY2FsbGJhY2sgZW5hYmxlcyB0 aGUgc2lnbmFsZXIgdGhyZWFkIHdoaWNoIGlzCisJCSAqIHdva2VuIGJ5IHRoZSBub3Bfc3VibWl0 X3JlcXVlc3QoKSBhZHZhbmNpbmcgdGhlIHNlcW5vCisJCSAqIGFuZCB3aGVuIHRoZSBzZXFubyBw YXNzZXMgdGhlIGZlbmNlLCB0aGUgc2lnbmFsZXIKKwkJICogdGhlbiBzaWduYWxzIHRoZSBmZW5j ZSB3YWtpbmcgdXMgdXApLgorCQkgKi8KKwkJaWYgKGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQoJnJx LT5mZW5jZSwgdHJ1ZSwKKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCkKKwkJCXJl dHVybiBmYWxzZTsKIAl9CiAJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7CiAJR0VNX0JVR19P TihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwpAQCAtMzczNCwxOSArMzczMSw2IEBAIGk5MTVf Z2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0 IGRybV9maWxlICpmaWxlKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgd2FpdF9mb3Jf dGltZWxpbmUoc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0bCwgdW5zaWduZWQgaW50IGZsYWdz KQotewotCWludCByZXQsIGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0bC0+ZW5n aW5lKTsgaSsrKSB7Ci0JCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV93YWl0KCZ0bC0+ZW5naW5lW2ld Lmxhc3RfcmVxdWVzdCwgZmxhZ3MpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0K LQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCB3YWl0X2Zvcl9lbmdpbmVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogewogCWlmICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVzX2FyZV9p ZGxlKGk5MTUpLCBJOTE1X0lETEVfRU5HSU5FU19USU1FT1VUKSkgewpAQCAtMzc2OSwxMiArMzc1 MywxMiBAQCBpbnQgaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwgdW5zaWduZWQgaW50IGZsYWdzKQogCQlyZXR1cm4gMDsKIAogCWlmIChmbGFncyAm IEk5MTVfV0FJVF9MT0NLRUQpIHsKLQkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0bDsKKwkJ c3RydWN0IGk5MTVfdGltZWxpbmUgKnRsOwogCiAJCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkodGwsICZpOTE1LT5n dC50aW1lbGluZXMsIGxpbmspIHsKLQkJCXJldCA9IHdhaXRfZm9yX3RpbWVsaW5lKHRsLCBmbGFn cyk7CisJCQlyZXQgPSBpOTE1X2dlbV9hY3RpdmVfd2FpdCgmdGwtPmxhc3RfcmVxdWVzdCwgZmxh Z3MpOwogCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4gcmV0OwogCQl9CkBAIC0zNzgyLDcgKzM3NjYs MTYgQEAgaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKIAogCQlyZXQgPSB3YWl0X2Zvcl9lbmdpbmVzKGk5 MTUpOwogCX0gZWxzZSB7Ci0JCXJldCA9IHdhaXRfZm9yX3RpbWVsaW5lKCZpOTE1LT5ndC5leGVj dXRpb25fdGltZWxpbmUsIGZsYWdzKTsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBpOTE1LCBpZCkgeworCQkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gJmVuZ2luZS0+dGlt ZWxpbmU7CisKKwkJCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV93YWl0KCZ0bC0+bGFzdF9yZXF1ZXN0 LCBmbGFncyk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0KIAl9CiAKIAlyZXR1 cm4gcmV0OwpAQCAtNDk1NCw3ICs0OTQ3LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2tlcm5lbF9j b250ZXh0X2lzX2N1cnJlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkg ewotCQlHRU1fQlVHX09OKF9faTkxNV9nZW1fYWN0aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUt Pmxhc3RfcmVxdWVzdCkpOworCQlHRU1fQlVHX09OKF9faTkxNV9nZW1fYWN0aXZlX3BlZWsoJmVu Z2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KSk7CiAJCUdFTV9CVUdfT04oZW5naW5lLT5sYXN0 X3JldGlyZWRfY29udGV4dCAhPSBrZXJuZWxfY29udGV4dCk7CiAJfQogfQpAQCAtNTYwMywxMiAr NTU5Niw2IEBAIGludCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcyk7CiAJ SU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5hY3RpdmVfcmluZ3MpOwogCi0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWVyciA9IGk5MTVfZ2VtX3RpbWVsaW5l X2luaXRfX2dsb2JhbChkZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfcHJpb3JpdGllczsKLQogCWk5MTVf Z2VtX2luaXRfX21tKGRldl9wcml2KTsKIAogCUlOSVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+ Z3QucmV0aXJlX3dvcmssCkBAIC01NjI4LDggKzU2MTUsNiBAQCBpbnQgaTkxNV9nZW1faW5pdF9l YXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlyZXR1cm4gMDsKIAot ZXJyX3ByaW9yaXRpZXM6Ci0Ja21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5wcmlvcml0aWVz KTsKIGVycl9kZXBlbmRlbmNpZXM6CiAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBl bmRlbmNpZXMpOwogZXJyX3JlcXVlc3RzOgpAQCAtNTY1MCwxMiArNTYzNSw3IEBAIHZvaWQgaTkx NV9nZW1fY2xlYW51cF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ R0VNX0JVR19PTighbGxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mcmVlX2xpc3QpKTsKIAlHRU1f QlVHX09OKGF0b21pY19yZWFkKCZkZXZfcHJpdi0+bW0uZnJlZV9jb3VudCkpOwogCVdBUk5fT04o ZGV2X3ByaXYtPm1tLm9iamVjdF9jb3VudCk7Ci0KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJt LnN0cnVjdF9tdXRleCk7Ci0JaTkxNV9nZW1fdGltZWxpbmVfZmluaSgmZGV2X3ByaXYtPmd0Lmxl Z2FjeV90aW1lbGluZSk7Ci0JaTkxNV9nZW1fdGltZWxpbmVfZmluaSgmZGV2X3ByaXYtPmd0LmV4 ZWN1dGlvbl90aW1lbGluZSk7CiAJV0FSTl9PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPmd0LnRp bWVsaW5lcykpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CiAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5wcmlvcml0aWVzKTsKIAlrbWVtX2NhY2hl X2Rlc3Ryb3koZGV2X3ByaXYtPmRlcGVuZGVuY2llcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKaW5kZXggNThiMTg1YWJlNjUyLi4wMjdiN2RkYWUxZDMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTEyMiw3ICsxMjIsNiBAQCBzdGF0 aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGN0eCkpOwogCi0JaTkxNV9n ZW1fdGltZWxpbmVfZnJlZShjdHgtPnRpbWVsaW5lKTsKIAlpOTE1X3BwZ3R0X3B1dChjdHgtPnBw Z3R0KTsKIAogCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKQEAgLTM3 NywxOCArMzc2LDYgQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZhdWx0X2Rlc2NfdGVt cGxhdGUoZGV2X3ByaXYsIHBwZ3R0KTsKIAl9CiAKLQlpZiAoSEFTX0VYRUNMSVNUUyhkZXZfcHJp dikpIHsKLQkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsKLQotCQl0aW1lbGlu ZSA9IGk5MTVfZ2VtX3RpbWVsaW5lX2NyZWF0ZShkZXZfcHJpdiwgY3R4LT5uYW1lKTsKLQkJaWYg KElTX0VSUih0aW1lbGluZSkpIHsKLQkJCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9w cml2KTsKLQkJCXJldHVybiBFUlJfQ0FTVCh0aW1lbGluZSk7Ci0JCX0KLQotCQljdHgtPnRpbWVs aW5lID0gdGltZWxpbmU7Ci0JfQotCiAJdHJhY2VfaTkxNV9jb250ZXh0X2NyZWF0ZShjdHgpOwog CiAJcmV0dXJuIGN0eDsKQEAgLTU5MCwyMSArNTc3LDMwIEBAIHZvaWQgaTkxNV9nZW1fY29udGV4 dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+ Y29udGV4dF9pZHIpOwogfQogCi1zdGF0aWMgYm9vbCBlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2Nv bnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKgorbGFzdF90aW1lbGluZV9yZXF1ZXN0KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZSwKKwkJICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0 cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmZW5naW5lLT5pOTE1LT5ndC50 aW1lbGluZXMsIGxpbmspIHsKLQkJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKKwlpZiAodGlt ZWxpbmUgPT0gJmVuZ2luZS0+dGltZWxpbmUpCisJCXJldHVybiBOVUxMOwogCi0JCWlmICh0aW1l bGluZSA9PSAmZW5naW5lLT5pOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUpCi0JCQljb250aW51 ZTsKKwlycSA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCisJ CQkJICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChycSAmJiBycS0+ZW5n aW5lID09IGVuZ2luZSkKKwkJcmV0dXJuIHJxOworCisJcmV0dXJuIE5VTEw7Cit9CiAKLQkJdGwg PSAmdGltZWxpbmUtPmVuZ2luZVtlbmdpbmUtPmlkXTsKLQkJaWYgKGk5MTVfZ2VtX2FjdGl2ZV9w ZWVrKCZ0bC0+bGFzdF9yZXF1ZXN0LAotCQkJCQkgJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCkpCitzdGF0aWMgYm9vbCBlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2NvbnRleHQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1l bGluZTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZlbmdpbmUtPmk5MTUtPmd0 LnRpbWVsaW5lcywgbGluaykKKwkJaWYgKGxhc3RfdGltZWxpbmVfcmVxdWVzdCh0aW1lbGluZSwg ZW5naW5lKSkKIAkJCXJldHVybiBmYWxzZTsKLQl9CiAKIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hh c19rZXJuZWxfY29udGV4dChlbmdpbmUpOwogfQpAQCAtNjEyLDcgKzYwOCw3IEBAIHN0YXRpYyBi b29sIGVuZ2luZV9oYXNfaWRsZV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiBpbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Ci0Jc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsKKwlzdHJ1Y3QgaTkx NV90aW1lbGluZSAqdGltZWxpbmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC02MzIsMTEg KzYyOCw4IEBAIGludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBh bGwgb3RoZXIgYWN0aXZpdHkgKi8KIAkJbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmRl dl9wcml2LT5ndC50aW1lbGluZXMsIGxpbmspIHsKIAkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnBy ZXY7Ci0JCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwogCi0JCQl0bCA9ICZ0aW1lbGluZS0+ ZW5naW5lW2VuZ2luZS0+aWRdOwotCQkJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJnRsLT5s YXN0X3JlcXVlc3QsCi0JCQkJCQkgICAmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCQkJ cHJldiA9IGxhc3RfdGltZWxpbmVfcmVxdWVzdCh0aW1lbGluZSwgZW5naW5lKTsKIAkJCWlmIChw cmV2KQogCQkJCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKCZycS0+c3VibWl0LAog CQkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaAppbmRleCAxNDBlZGNiNDI0ZGYuLmIxMmE4YThjNWFmOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtNTgsOCArNTgsNiBAQCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCB7CiAJLyoqIGZpbGVfcHJpdjogb3duaW5nIGZpbGUgZGVzY3JpcHRvciAqLwogCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKIAotCXN0cnVjdCBpOTE1X2dl bV90aW1lbGluZSAqdGltZWxpbmU7Ci0KIAkvKioKIAkgKiBAcHBndHQ6IHVuaXF1ZSBhZGRyZXNz IHNwYWNlIChHVFQpCiAJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggOTgx MDc5MjVkZTQ4Li4xZGIwZGVkYjQwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o CkBAIC0zOCwxMCArMzgsOSBAQAogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGlu dXgvcGFnZXZlYy5oPgogCi0jaW5jbHVkZSAiaTkxNV9nZW1fdGltZWxpbmUuaCIKLQogI2luY2x1 ZGUgImk5MTVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKKyNpbmNsdWRl ICJpOTE1X3RpbWVsaW5lLmgiCiAKICNkZWZpbmUgSTkxNV9HVFRfUEFHRV9TSVpFXzRLIEJJVCgx MikKICNkZWZpbmUgSTkxNV9HVFRfUEFHRV9TSVpFXzY0SyBCSVQoMTYpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MjRmNDA2OGNjMTM3Li4wMDAwMDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdGltZWxpbmUuYworKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi0vKgotICog Q29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoKLSAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCi0gKiBJTiBUSEUgU09GVFdBUkUuCi0gKgotICovCi0KLSNpbmNsdWRlICJpOTE1X2Rydi5o IgotI2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgotCi1zdGF0aWMgdm9pZCBfX2ludGVsX3RpbWVs aW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKLQkJCQkgIHN0cnVjdCBpOTE1X2dl bV90aW1lbGluZSAqcGFyZW50LAotCQkJCSAgdTY0IGNvbnRleHQsCi0JCQkJICBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgKmxvY2tjbGFzcywKLQkJCQkgIGNvbnN0IGNoYXIgKmxvY2tuYW1lKQotewot CXRsLT5mZW5jZV9jb250ZXh0ID0gY29udGV4dDsKLQl0bC0+Y29tbW9uID0gcGFyZW50OwotCXNw aW5fbG9ja19pbml0KCZ0bC0+bG9jayk7Ci0JbG9ja2RlcF9zZXRfY2xhc3NfYW5kX25hbWUoJnRs LT5sb2NrLCBsb2NrY2xhc3MsIGxvY2tuYW1lKTsKLQlpbml0X3JlcXVlc3RfYWN0aXZlKCZ0bC0+ bGFzdF9yZXF1ZXN0LCBOVUxMKTsKLQlJTklUX0xJU1RfSEVBRCgmdGwtPnJlcXVlc3RzKTsKLQlp OTE1X3N5bmNtYXBfaW5pdCgmdGwtPnN5bmMpOwotfQotCi1zdGF0aWMgdm9pZCBfX2ludGVsX3Rp bWVsaW5lX2Zpbmkoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKLXsKLQlHRU1fQlVHX09OKCFs aXN0X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKLQotCWk5MTVfc3luY21hcF9mcmVlKCZ0bC0+c3lu Yyk7Ci19Ci0KLXN0YXRpYyBpbnQgX19pOTE1X2dlbV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAotCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRp bWVsaW5lLAotCQkJCSAgICBjb25zdCBjaGFyICpuYW1lLAotCQkJCSAgICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgKmxvY2tjbGFzcywKLQkJCQkgICAgY29uc3QgY2hhciAqbG9ja25hbWUpCi17Ci0J dW5zaWduZWQgaW50IGk7Ci0JdTY0IGZlbmNlczsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0JLyoKLQkgKiBJZGVhbGx5IHdlIHdhbnQgYSBzZXQg b2YgZW5naW5lcyBvbiBhIHNpbmdsZSBsZWFmIGFzIHdlIGV4cGVjdAotCSAqIHRvIG1vc3RseSBi ZSB0cmFja2luZyBzeW5jaHJvbmlzYXRpb24gYmV0d2VlbiBlbmdpbmVzLiBJdCBpcyBub3QKLQkg KiBhIGh1Z2UgaXNzdWUgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGJ1dCB3ZSBtYXkgd2FudCB0 byBtaXRpZ2F0ZQotCSAqIGFueSBwYWdlIGNyb3NzaW5nIHBlbmFsdGllcyBpZiB0aGV5IGJlY29t ZSBhbiBpc3N1ZS4KLQkgKi8KLQlCVUlMRF9CVUdfT04oS1NZTkNNQVAgPCBJOTE1X05VTV9FTkdJ TkVTKTsKLQotCXRpbWVsaW5lLT5pOTE1ID0gaTkxNTsKLQl0aW1lbGluZS0+bmFtZSA9IGtzdHJk dXAobmFtZSA/OiAiW2tlcm5lbF0iLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXRpbWVsaW5lLT5uYW1l KQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWxpc3RfYWRkKCZ0aW1lbGluZS0+bGluaywgJmk5MTUt Pmd0LnRpbWVsaW5lcyk7Ci0KLQkvKiBDYWxsZWQgZHVyaW5nIGVhcmx5X2luaXQgYmVmb3JlIHdl IGtub3cgaG93IG1hbnkgZW5naW5lcyB0aGVyZSBhcmUgKi8KLQlmZW5jZXMgPSBkbWFfZmVuY2Vf Y29udGV4dF9hbGxvYyhBUlJBWV9TSVpFKHRpbWVsaW5lLT5lbmdpbmUpKTsKLQlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKTsgaSsrKQotCQlfX2ludGVsX3RpbWVs aW5lX2luaXQoJnRpbWVsaW5lLT5lbmdpbmVbaV0sCi0JCQkJICAgICAgdGltZWxpbmUsIGZlbmNl cysrLAotCQkJCSAgICAgIGxvY2tjbGFzcywgbG9ja25hbWUpOwotCi0JcmV0dXJuIDA7Ci19Ci0K LWludCBpOTE1X2dlbV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAotCQkJICAgc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZSwKLQkJCSAgIGNvbnN0 IGNoYXIgKm5hbWUpCi17Ci0Jc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBjbGFzczsKLQot CXJldHVybiBfX2k5MTVfZ2VtX3RpbWVsaW5lX2luaXQoaTkxNSwgdGltZWxpbmUsIG5hbWUsCi0J CQkJCSZjbGFzcywgIiZ0aW1lbGluZS0+bG9jayIpOwotfQotCi1pbnQgaTkxNV9nZW1fdGltZWxp bmVfaW5pdF9fZ2xvYmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQotewotCXN0YXRp YyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgY2xhc3MxLCBjbGFzczI7Ci0JaW50IGVycjsKLQotCWVy ciA9IF9faTkxNV9nZW1fdGltZWxpbmVfaW5pdChpOTE1LAotCQkJCSAgICAgICAmaTkxNS0+Z3Qu ZXhlY3V0aW9uX3RpbWVsaW5lLAotCQkJCSAgICAgICAiW2V4ZWN1dGlvbl0iLCAmY2xhc3MxLAot CQkJCSAgICAgICAiaTkxNV9leGVjdXRpb25fdGltZWxpbmUiKTsKLQlpZiAoZXJyKQotCQlyZXR1 cm4gZXJyOwotCi0JZXJyID0gX19pOTE1X2dlbV90aW1lbGluZV9pbml0KGk5MTUsCi0JCQkJICAg ICAgICZpOTE1LT5ndC5sZWdhY3lfdGltZWxpbmUsCi0JCQkJICAgICAgICJbZ2xvYmFsXSIsICZj bGFzczIsCi0JCQkJICAgICAgICJpOTE1X2dsb2JhbF90aW1lbGluZSIpOwotCWlmIChlcnIpCi0J CWdvdG8gZXJyX2V4ZWNfdGltZWxpbmU7Ci0KLQlyZXR1cm4gMDsKLQotZXJyX2V4ZWNfdGltZWxp bmU6Ci0JaTkxNV9nZW1fdGltZWxpbmVfZmluaSgmaTkxNS0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5l KTsKLQlyZXR1cm4gZXJyOwotfQotCi0vKioKLSAqIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJrIC0g Y2FsbGVkIHdoZW4gdGhlIGRyaXZlciBpZGxlcwotICogQGk5MTU6IHRoZSBkcm1faTkxNV9wcml2 YXRlIGRldmljZQotICoKLSAqIFdoZW4gdGhlIGRyaXZlciBpcyBjb21wbGV0ZWx5IGlkbGUsIHdl IGtub3cgdGhhdCBhbGwgb2Ygb3VyIHN5bmMgcG9pbnRzCi0gKiBoYXZlIGJlZW4gc2lnbmFsZWQg YW5kIG91ciB0cmFja2luZyBpcyB0aGVuIGVudGlyZWx5IHJlZHVuZGFudC4gQW55IHJlcXVlc3QK LSAqIHRvIHdhaXQgdXBvbiBhbiBvbGRlciBzeW5jIHBvaW50IHdpbGwgYmUgY29tcGxldGVkIGlu c3RhbnRseSBhcyB3ZSBrbm93Ci0gKiB0aGUgZmVuY2UgaXMgc2lnbmFsZWQgYW5kIHRoZXJlZm9y ZSB3ZSB3aWxsIG5vdCBldmVuIGxvb2sgdGhlbSB1cCBpbiB0aGUKLSAqIHN5bmMgcG9pbnQgbWFw LgotICovCi12b2lkIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQotewotCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Ci0JaW50 IGk7Ci0KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQot CWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmsp IHsKLQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGltZWxpbmUtPmVuZ2luZSk7IGkrKykg ewotCQkJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2ldOwot Ci0JCQkvKgotCQkJICogQWxsIGtub3duIGZlbmNlcyBhcmUgY29tcGxldGVkIHNvIHdlIGNhbiBz Y3JhcAotCQkJICogdGhlIGN1cnJlbnQgc3luYyBwb2ludCB0cmFja2luZyBhbmQgc3RhcnQgYWZy ZXNoLAotCQkJICogYW55IGF0dGVtcHQgdG8gd2FpdCB1cG9uIGEgcHJldmlvdXMgc3luYyBwb2lu dAotCQkJICogd2lsbCBiZSBza2lwcGVkIGFzIHRoZSBmZW5jZSB3YXMgc2lnbmFsZWQuCi0JCQkg Ki8KLQkJCWk5MTVfc3luY21hcF9mcmVlKCZ0bC0+c3luYyk7Ci0JCX0KLQl9Ci19Ci0KLXZvaWQg aTkxNV9nZW1fdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5l KQotewotCWludCBpOwotCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdGltZWxpbmUtPmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGltZWxpbmUt PmVuZ2luZSk7IGkrKykKLQkJX19pbnRlbF90aW1lbGluZV9maW5pKCZ0aW1lbGluZS0+ZW5naW5l W2ldKTsKLQotCWxpc3RfZGVsKCZ0aW1lbGluZS0+bGluayk7Ci0Ja2ZyZWUodGltZWxpbmUtPm5h bWUpOwotfQotCi1zdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKgotaTkxNV9nZW1fdGltZWxpbmVf Y3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpuYW1lKQot ewotCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Ci0JaW50IGVycjsKLQotCXRp bWVsaW5lID0ga3phbGxvYyhzaXplb2YoKnRpbWVsaW5lKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCF0 aW1lbGluZSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQllcnIgPSBpOTE1X2dlbV90 aW1lbGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBuYW1lKTsKLQlpZiAoZXJyKSB7Ci0JCWtmcmVl KHRpbWVsaW5lKTsKLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKLQl9Ci0KLQlyZXR1cm4gdGltZWxp bmU7Ci19Ci0KLXZvaWQgaTkxNV9nZW1fdGltZWxpbmVfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fdGlt ZWxpbmUgKnRpbWVsaW5lKQotewotCWlmICghdGltZWxpbmUpCi0JCXJldHVybjsKLQotCWk5MTVf Z2VtX3RpbWVsaW5lX2ZpbmkodGltZWxpbmUpOwotCWtmcmVlKHRpbWVsaW5lKTsKLX0KLQotI2lm IElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQotI2luY2x1ZGUgInNlbGZ0ZXN0 cy9tb2NrX3RpbWVsaW5lLmMiCi0jaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX3RpbWVsaW5l LmMiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDY3MWZm YTM3NjE0ZS4uNzFiYjgyMzBjYjk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKQEAgLTEyOTksNyArMTI5OSw3IEBAIHN0YXRpYyB2b2lkIGVuZ2luZV9yZWNvcmRfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJY291bnQgPSAwOwogCXJlcXVl c3QgPSBmaXJzdDsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVxdWVzdCwgJmVuZ2luZS0+ dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQorCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShyZXF1 ZXN0LCAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykKIAkJY291bnQrKzsKIAlpZiAo IWNvdW50KQogCQlyZXR1cm47CkBAIC0xMzEyLDcgKzEzMTIsNyBAQCBzdGF0aWMgdm9pZCBlbmdp bmVfcmVjb3JkX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCWNv dW50ID0gMDsKIAlyZXF1ZXN0ID0gZmlyc3Q7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJl cXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgeworCWxpc3RfZm9yX2Vh Y2hfZW50cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykg ewogCQlpZiAoY291bnQgPj0gZWUtPm51bV9yZXF1ZXN0cykgewogCQkJLyoKIAkJCSAqIElmIHRo ZSByaW5nIHJlcXVlc3QgbGlzdCB3YXMgY2hhbmdlZCBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YwppbmRleCBiZmM5MDZjZDRlNWUuLjVkY2Q3NmUyN2M2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKQEAgLTE2OTUsNyArMTY5NSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9zd2l0Y2hfdG9fdXBk YXRlZF9rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByCiAJCQkJ CQkgY29uc3Qgc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCiB7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwotCXN0cnVjdCBp OTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7CisJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVs aW5lOwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCWludCByZXQ7CiAKQEAgLTE3MTYsMTUg KzE3MTYsMTEgQEAgc3RhdGljIGludCBnZW44X3N3aXRjaF90b191cGRhdGVkX2tlcm5lbF9jb250 ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKIAkvKiBRdWV1ZSB0aGlzIHN3aXRj aCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVs aW5lLCAmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcywgbGluaykgewogCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpwcmV2OwotCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwogCi0JCXRsID0gJnRpbWVs aW5lLT5lbmdpbmVbZW5naW5lLT5pZF07Ci0JCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0 bC0+bGFzdF9yZXF1ZXN0LAorCQlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmdGltZWxpbmUt Pmxhc3RfcmVxdWVzdCwKIAkJCQkJICAgJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAkJ aWYgKHByZXYpCi0JCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1p dCwKLQkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKLQkJCQkJCQkgR0ZQX0tFUk5FTCk7CisJCQlpOTE1 X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxLCAmcHJldi0+ZmVuY2UpOwogCX0KIAogCWk5MTVf cmVxdWVzdF9hZGQocnEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCAxNjgy ZGFmNzcyZTYuLjc5YTM0YzA2OTIyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMK QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfZ2V0X3RpbWVs aW5lX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiAJaWYgKHRlc3RfYml0KERNQV9GRU5D RV9GTEFHX1NJR05BTEVEX0JJVCwgJmZlbmNlLT5mbGFncykpCiAJCXJldHVybiAic2lnbmFsZWQi OwogCi0JcmV0dXJuIHRvX3JlcXVlc3QoZmVuY2UpLT50aW1lbGluZS0+Y29tbW9uLT5uYW1lOwor CXJldHVybiB0b19yZXF1ZXN0KGZlbmNlKS0+dGltZWxpbmUtPm5hbWU7CiB9CiAKIHN0YXRpYyBi b29sIGk5MTVfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCkBAIC0xOTks NiArMTk5LDcgQEAgaTkxNV9zY2hlZF9ub2RlX2luaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAq bm9kZSkKIHN0YXRpYyBpbnQgcmVzZXRfYWxsX2dsb2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgdTMyIHNlcW5vKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7CiAJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7CiAJaW50IHJldDsKIApAQCAtMjEzLDE2ICsyMTQsMTMgQEAgc3RhdGljIGludCBy ZXNldF9hbGxfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIg c2Vxbm8pCiAKIAkvKiBJZiB0aGUgc2Vxbm8gd3JhcHMgYXJvdW5kLCB3ZSBuZWVkIHRvIGNsZWFy IHRoZSBicmVhZGNydW1iIHJidHJlZSAqLwogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKSB7Ci0JCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Ci0JCXN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGwgPSBlbmdpbmUtPnRpbWVsaW5lOwotCiAJCUdFTV9UUkFDRSgiJXMg c2Vxbm8gJWQgKGN1cnJlbnQgJWQpIC0+ICVkXG4iLAogCQkJICBlbmdpbmUtPm5hbWUsCi0JCQkg IHRsLT5zZXFubywKKwkJCSAgZW5naW5lLT50aW1lbGluZS5zZXFubywKIAkJCSAgaW50ZWxfZW5n aW5lX2dldF9zZXFubyhlbmdpbmUpLAogCQkJICBzZXFubyk7CiAKLQkJaWYgKCFpOTE1X3NlcW5v X3Bhc3NlZChzZXFubywgdGwtPnNlcW5vKSkgeworCQlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNl cW5vLCBlbmdpbmUtPnRpbWVsaW5lLnNlcW5vKSkgewogCQkJLyogRmx1c2ggYW55IHdhaXRlcnMg YmVmb3JlIHdlIHJldXNlIHRoZSBzZXFubyAqLwogCQkJaW50ZWxfZW5naW5lX2Rpc2FybV9icmVh ZGNydW1icyhlbmdpbmUpOwogCQkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmZW5naW5lLT5icmVh ZGNydW1icy5zaWduYWxzKSk7CkBAIC0yMzAsMTggKzIyOCwxOCBAQCBzdGF0aWMgaW50IHJlc2V0 X2FsbF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBzZXFu bykKIAogCQkvKiBDaGVjayB3ZSBhcmUgaWRsZSBiZWZvcmUgd2UgZmlkZGxlIHdpdGggaHcgc3Rh dGUhICovCiAJCUdFTV9CVUdfT04oIWludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSkpOwotCQlH RU1fQlVHX09OKGk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmZW5naW5lLT50aW1lbGluZS0+bGFzdF9y ZXF1ZXN0KSk7CisJCUdFTV9CVUdfT04oaTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZlbmdpbmUtPnRp bWVsaW5lLmxhc3RfcmVxdWVzdCkpOwogCiAJCS8qIEZpbmFsbHkgcmVzZXQgaHcgc3RhdGUgKi8K IAkJaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKGVuZ2luZSwgc2Vxbm8pOwotCQl0bC0+ c2Vxbm8gPSBzZXFubzsKLQotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmaTkxNS0+ Z3QudGltZWxpbmVzLCBsaW5rKQotCQkJbWVtc2V0KHRpbWVsaW5lLT5lbmdpbmVbaWRdLmdsb2Jh bF9zeW5jLCAwLAotCQkJICAgICAgIHNpemVvZih0aW1lbGluZS0+ZW5naW5lW2lkXS5nbG9iYWxf c3luYykpOworCQllbmdpbmUtPnRpbWVsaW5lLnNlcW5vID0gc2Vxbm87CiAJfQogCisJbGlzdF9m b3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmk5MTUtPmd0LnRpbWVsaW5lcywgbGluaykKKwkJbWVt c2V0KHRpbWVsaW5lLT5nbG9iYWxfc3luYywgMCwgc2l6ZW9mKHRpbWVsaW5lLT5nbG9iYWxfc3lu YykpOworCiAJaTkxNS0+Z3QucmVxdWVzdF9zZXJpYWwgPSBzZXFubzsKKwogCXJldHVybiAwOwog fQogCkBAIC0zNDksMTAgKzM0NywxMCBAQCBzdGF0aWMgdm9pZCBfX3JlcXVlc3RfcmV0aXJlX19l bmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAogCWxvY2FsX2lycV9kaXNhYmxl KCk7CiAKLQlzcGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwotCUdFTV9CVUdfT04o IWxpc3RfaXNfZmlyc3QoJnJlcXVlc3QtPmxpbmssICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0 cykpOworCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKKwlHRU1fQlVHX09OKCFs aXN0X2lzX2ZpcnN0KCZyZXF1ZXN0LT5saW5rLCAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cykp OwogCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpbmspOwotCXNwaW5fdW5sb2NrKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsK IAogCXNwaW5fbG9jaygmcmVxdWVzdC0+bG9jayk7CiAJaWYgKCF0ZXN0X2JpdChETUFfRkVOQ0Vf RkxBR19TSUdOQUxFRF9CSVQsICZyZXF1ZXN0LT5mZW5jZS5mbGFncykpCkBAIC0zODksNyArMzg3 LDcgQEAgc3RhdGljIHZvaWQgX19yZXRpcmVfZW5naW5lX3VwdG8oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCQlyZXR1cm47CiAKIAlkbyB7Ci0JCXRtcCA9IGxpc3RfZmlyc3RfZW50 cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAorCQl0bXAgPSBsaXN0X2ZpcnN0X2VudHJ5 KCZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLAogCQkJCSAgICAgICB0eXBlb2YoKnRtcCksIGxp bmspOwogCiAJCV9fcmVxdWVzdF9yZXRpcmVfX2VuZ2luZSh0bXApOwpAQCAtNDc5LDE2ICs0Nzcs MTYgQEAgdm9pZCBpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCiAJfSB3aGlsZSAodG1wICE9IHJxKTsKIH0KIAotc3RhdGljIHUzMiB0aW1lbGluZV9nZXRf c2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKK3N0YXRpYyB1MzIgdGltZWxpbmVfZ2V0 X3NlcW5vKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKIHsKIAlyZXR1cm4gKyt0bC0+c2Vxbm87 CiB9CiAKIHN0YXRpYyB2b2lkIG1vdmVfdG9fdGltZWxpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAq cmVxdWVzdCwKLQkJCSAgICAgc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSkKKwkJCSAg ICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQogewotCUdFTV9CVUdfT04ocmVxdWVz dC0+dGltZWxpbmUgPT0gcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZSk7Ci0JbG9ja2RlcF9hc3Nl cnRfaGVsZCgmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJR0VNX0JVR19PTihy ZXF1ZXN0LT50aW1lbGluZSA9PSAmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZSk7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIAogCXNwaW5f bG9jaygmcmVxdWVzdC0+dGltZWxpbmUtPmxvY2spOwogCWxpc3RfbW92ZV90YWlsKCZyZXF1ZXN0 LT5saW5rLCAmdGltZWxpbmUtPnJlcXVlc3RzKTsKQEAgLTUwMywxNSArNTAxLDE1IEBAIHZvaWQg X19pOTE1X3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCiAJR0VN X1RSQUNFKCIlcyBmZW5jZSAlbGx4OiVkIC0+IGdsb2JhbD0lZCwgY3VycmVudCAlZFxuIiwKIAkJ ICBlbmdpbmUtPm5hbWUsCiAJCSAgcmVxdWVzdC0+ZmVuY2UuY29udGV4dCwgcmVxdWVzdC0+ZmVu Y2Uuc2Vxbm8sCi0JCSAgZW5naW5lLT50aW1lbGluZS0+c2Vxbm8gKyAxLAorCQkgIGVuZ2luZS0+ dGltZWxpbmUuc2Vxbm8gKyAxLAogCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSk7 CiAKIAlHRU1fQlVHX09OKCFpcnFzX2Rpc2FibGVkKCkpOwotCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+ dGltZWxpbmUubG9jayk7CiAKIAlHRU1fQlVHX09OKHJlcXVlc3QtPmdsb2JhbF9zZXFubyk7CiAK LQlzZXFubyA9IHRpbWVsaW5lX2dldF9zZXFubyhlbmdpbmUtPnRpbWVsaW5lKTsKKwlzZXFubyA9 IHRpbWVsaW5lX2dldF9zZXFubygmZW5naW5lLT50aW1lbGluZSk7CiAJR0VNX0JVR19PTighc2Vx bm8pOwogCUdFTV9CVUdfT04oaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFu byhlbmdpbmUpLCBzZXFubykpOwogCkBAIC01MjYsNyArNTI0LDcgQEAgdm9pZCBfX2k5MTVfcmVx dWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAkJCQlyZXF1ZXN0LT5y aW5nLT52YWRkciArIHJlcXVlc3QtPnBvc3RmaXgpOwogCiAJLyogVHJhbnNmZXIgZnJvbSBwZXIt Y29udGV4dCBvbnRvIHRoZSBnbG9iYWwgcGVyLWVuZ2luZSB0aW1lbGluZSAqLwotCW1vdmVfdG9f dGltZWxpbmUocmVxdWVzdCwgZW5naW5lLT50aW1lbGluZSk7CisJbW92ZV90b190aW1lbGluZShy ZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZSk7CiAKIAl0cmFjZV9pOTE1X3JlcXVlc3RfZXhlY3V0 ZShyZXF1ZXN0KTsKIApAQCAtNTM5LDExICs1MzcsMTEgQEAgdm9pZCBpOTE1X3JlcXVlc3Rfc3Vi bWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAogCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWdu IGZlbmNlcy4gKi8KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywg ZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdz KTsKIAogCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsKIAotCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIH0KIAogdm9pZCBfX2k5 MTVfcmVxdWVzdF91bnN1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtNTU3 LDE3ICs1NTUsMTcgQEAgdm9pZCBfX2k5MTVfcmVxdWVzdF91bnN1Ym1pdChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpyZXF1ZXN0KQogCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSk7CiAK IAlHRU1fQlVHX09OKCFpcnFzX2Rpc2FibGVkKCkpOwotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVu Z2luZS0+dGltZWxpbmUtPmxvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+dGlt ZWxpbmUubG9jayk7CiAKIAkvKgogCSAqIE9ubHkgdW53aW5kIGluIHJldmVyc2Ugb3JkZXIsIHJl cXVpcmVkIHNvIHRoYXQgdGhlIHBlci1jb250ZXh0IGxpc3QKIAkgKiBpcyBrZXB0IGluIHNlcW5v L3Jpbmcgb3JkZXIuCiAJICovCiAJR0VNX0JVR19PTighcmVxdWVzdC0+Z2xvYmFsX3NlcW5vKTsK LQlHRU1fQlVHX09OKHJlcXVlc3QtPmdsb2JhbF9zZXFubyAhPSBlbmdpbmUtPnRpbWVsaW5lLT5z ZXFubyk7CisJR0VNX0JVR19PTihyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8gIT0gZW5naW5lLT50aW1l bGluZS5zZXFubyk7CiAJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9lbmdpbmVf Z2V0X3NlcW5vKGVuZ2luZSksCiAJCQkJICAgICByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pKTsKLQll bmdpbmUtPnRpbWVsaW5lLT5zZXFuby0tOworCWVuZ2luZS0+dGltZWxpbmUuc2Vxbm8tLTsKIAog CS8qIFdlIG1heSBiZSByZWN1cnNpbmcgZnJvbSB0aGUgc2lnbmFsIGNhbGxiYWNrIG9mIGFub3Ro ZXIgaTkxNSBmZW5jZSAqLwogCXNwaW5fbG9ja19uZXN0ZWQoJnJlcXVlc3QtPmxvY2ssIFNJTkdM RV9ERVBUSF9ORVNUSU5HKTsKQEAgLTU5NCwxMSArNTkyLDExIEBAIHZvaWQgaTkxNV9yZXF1ZXN0 X3Vuc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCiAJdW5zaWduZWQgbG9uZyBm bGFnczsKIAogCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBm b3JlaWduIGZlbmNlcy4gKi8KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS0+ bG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ss IGZsYWdzKTsKIAogCV9faTkxNV9yZXF1ZXN0X3Vuc3VibWl0KHJlcXVlc3QpOwogCi0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwogfQogCiBz dGF0aWMgaW50IF9faTkxNV9zd19mZW5jZV9jYWxsCkBAIC05MTQsNyArOTEyLDcgQEAgaTkxNV9y ZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpCiAKIAkJLyogU3F1YXNoIHJlcGVhdGVkIHdhaXRzIHRvIHRoZSBzYW1l IHRpbWVsaW5lcyAqLwogCQlpZiAoZmVuY2UtPmNvbnRleHQgIT0gcnEtPmk5MTUtPm1tLnVub3Jk ZXJlZF90aW1lbGluZSAmJgotCQkgICAgaW50ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcihycS0+ dGltZWxpbmUsIGZlbmNlKSkKKwkJICAgIGk5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcihycS0+ dGltZWxpbmUsIGZlbmNlKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChkbWFfZmVuY2VfaXNfaTkx NShmZW5jZSkpCkBAIC05MjgsNyArOTI2LDcgQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5j ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiAKIAkJ LyogUmVjb3JkIHRoZSBsYXRlc3QgZmVuY2UgdXNlZCBhZ2FpbnN0IGVhY2ggdGltZWxpbmUgKi8K IAkJaWYgKGZlbmNlLT5jb250ZXh0ICE9IHJxLT5pOTE1LT5tbS51bm9yZGVyZWRfdGltZWxpbmUp Ci0JCQlpbnRlbF90aW1lbGluZV9zeW5jX3NldChycS0+dGltZWxpbmUsIGZlbmNlKTsKKwkJCWk5 MTVfdGltZWxpbmVfc3luY19zZXQocnEtPnRpbWVsaW5lLCBmZW5jZSk7CiAJfSB3aGlsZSAoLS1u Y2hpbGQpOwogCiAJcmV0dXJuIDA7CkBAIC0xMDA1LDcgKzEwMDMsNyBAQCB2b2lkIF9faTkxNV9y ZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hl cykKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7 CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCXN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGltZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKKwlzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGltZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKIAlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpwcmV2OwogCXUzMiAqY3M7CiAJaW50IGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmgKaW5kZXggOGYzMWNhODI3MmY4Li5lZGRiZDQyNDVjYjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVxdWVzdC5oCkBAIC0zNyw2ICszNyw3IEBACiBzdHJ1Y3QgZHJtX2ZpbGU7CiBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdDsKIHN0cnVjdCBpOTE1X3JlcXVlc3Q7CitzdHJ1Y3QgaTkx NV90aW1lbGluZTsKIAogc3RydWN0IGludGVsX3dhaXQgewogCXN0cnVjdCByYl9ub2RlIG5vZGU7 CkBAIC05NSw3ICs5Niw3IEBAIHN0cnVjdCBpOTE1X3JlcXVlc3QgewogCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHg7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nOwotCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmU7CisJ c3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwogCXN0cnVjdCBpbnRlbF9zaWduYWxfbm9k ZSBzaWduYWxpbmc7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDY2N2NjMDhjNDE2Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCkBAIC0wLDAg KzEsMTA1IEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENv cHlyaWdodCDCqSAyMDE2LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAi aTkxNV9kcnYuaCIKKworI2luY2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKKyNpbmNsdWRlICJpOTE1 X3N5bmNtYXAuaCIKKwordm9pZCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJCQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsCisJCQljb25z dCBjaGFyICpuYW1lKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOworCisJLyoKKwkgKiBJZGVhbGx5IHdlIHdhbnQgYSBzZXQgb2YgZW5naW5lcyBvbiBh IHNpbmdsZSBsZWFmIGFzIHdlIGV4cGVjdAorCSAqIHRvIG1vc3RseSBiZSB0cmFja2luZyBzeW5j aHJvbmlzYXRpb24gYmV0d2VlbiBlbmdpbmVzLiBJdCBpcyBub3QKKwkgKiBhIGh1Z2UgaXNzdWUg aWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGJ1dCB3ZSBtYXkgd2FudCB0byBtaXRpZ2F0ZQorCSAq IGFueSBwYWdlIGNyb3NzaW5nIHBlbmFsdGllcyBpZiB0aGV5IGJlY29tZSBhbiBpc3N1ZS4KKwkg Ki8KKwlCVUlMRF9CVUdfT04oS1NZTkNNQVAgPCBJOTE1X05VTV9FTkdJTkVTKTsKKworCXRpbWVs aW5lLT5uYW1lID0gbmFtZTsKKworCWxpc3RfYWRkKCZ0aW1lbGluZS0+bGluaywgJmk5MTUtPmd0 LnRpbWVsaW5lcyk7CisKKwkvKiBDYWxsZWQgZHVyaW5nIGVhcmx5X2luaXQgYmVmb3JlIHdlIGtu b3cgaG93IG1hbnkgZW5naW5lcyB0aGVyZSBhcmUgKi8KKworCXRpbWVsaW5lLT5mZW5jZV9jb250 ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CisKKwlzcGluX2xvY2tfaW5pdCgmdGlt ZWxpbmUtPmxvY2spOworCisJaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdGltZWxpbmUtPmxhc3RfcmVx dWVzdCwgTlVMTCk7CisJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5yZXF1ZXN0cyk7CisKKwlp OTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUtPnN5bmMpOworfQorCisvKioKKyAqIGk5MTVfdGlt ZWxpbmVzX3BhcmsgLSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlkbGVzCisgKiBAaTkxNTogdGhl IGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCisgKgorICogV2hlbiB0aGUgZHJpdmVyIGlzIGNvbXBs ZXRlbHkgaWRsZSwgd2Uga25vdyB0aGF0IGFsbCBvZiBvdXIgc3luYyBwb2ludHMKKyAqIGhhdmUg YmVlbiBzaWduYWxlZCBhbmQgb3VyIHRyYWNraW5nIGlzIHRoZW4gZW50aXJlbHkgcmVkdW5kYW50 LiBBbnkgcmVxdWVzdAorICogdG8gd2FpdCB1cG9uIGFuIG9sZGVyIHN5bmMgcG9pbnQgd2lsbCBi ZSBjb21wbGV0ZWQgaW5zdGFudGx5IGFzIHdlIGtub3cKKyAqIHRoZSBmZW5jZSBpcyBzaWduYWxl ZCBhbmQgdGhlcmVmb3JlIHdlIHdpbGwgbm90IGV2ZW4gbG9vayB0aGVtIHVwIGluIHRoZQorICog c3luYyBwb2ludCBtYXAuCisgKi8KK3ZvaWQgaTkxNV90aW1lbGluZXNfcGFyayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7 CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWxp c3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsK KwkJLyoKKwkJICogQWxsIGtub3duIGZlbmNlcyBhcmUgY29tcGxldGVkIHNvIHdlIGNhbiBzY3Jh cAorCQkgKiB0aGUgY3VycmVudCBzeW5jIHBvaW50IHRyYWNraW5nIGFuZCBzdGFydCBhZnJlc2gs CisJCSAqIGFueSBhdHRlbXB0IHRvIHdhaXQgdXBvbiBhIHByZXZpb3VzIHN5bmMgcG9pbnQKKwkJ ICogd2lsbCBiZSBza2lwcGVkIGFzIHRoZSBmZW5jZSB3YXMgc2lnbmFsZWQuCisJCSAqLworCQlp OTE1X3N5bmNtYXBfZnJlZSgmdGltZWxpbmUtPnN5bmMpOworCX0KK30KKwordm9pZCBpOTE1X3Rp bWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQoreworCUdFTV9CVUdf T04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1ZXN0cykpOworCisJaTkxNV9zeW5jbWFwX2Zy ZWUoJnRpbWVsaW5lLT5zeW5jKTsKKworCWxpc3RfZGVsKCZ0aW1lbGluZS0+bGluayk7Cit9CisK K3N0cnVjdCBpOTE1X3RpbWVsaW5lICoKK2k5MTVfdGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0aW1lbGluZTsKKworCXRpbWVsaW5lID0ga3phbGxvYyhzaXplb2YoKnRpbWVsaW5l KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0aW1lbGluZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisKKwlpOTE1X3RpbWVsaW5lX2luaXQoaTkxNSwgdGltZWxpbmUsIG5hbWUpOworCWtyZWZf aW5pdCgmdGltZWxpbmUtPmtyZWYpOworCisJcmV0dXJuIHRpbWVsaW5lOworfQorCit2b2lkIF9f aTkxNV90aW1lbGluZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQoreworCXN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0aW1lbGluZSA9CisJCWNvbnRhaW5lcl9vZihrcmVmLCB0eXBlb2YoKnRpbWVsaW5l KSwga3JlZik7CisKKwlpOTE1X3RpbWVsaW5lX2ZpbmkodGltZWxpbmUpOworCWtmcmVlKHRpbWVs aW5lKTsKK30KKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQorI2lu Y2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMiCisjaW5jbHVkZSAic2VsZnRlc3RzL2k5 MTVfdGltZWxpbmUuYyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUu aApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV90aW1lbGluZS5oCnJlbmFtZSB0byBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Rp bWVsaW5lLmgKaW5kZXggNzgwZWQ0NjVjNGZjLi5kYzJhNDYzMmZhYTcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCkBAIC0yMiwxOCArMjIsMTcgQEAKICAqCiAgKi8KIAot I2lmbmRlZiBJOTE1X0dFTV9USU1FTElORV9ICi0jZGVmaW5lIEk5MTVfR0VNX1RJTUVMSU5FX0gK KyNpZm5kZWYgSTkxNV9USU1FTElORV9ICisjZGVmaW5lIEk5MTVfVElNRUxJTkVfSAogCiAjaW5j bHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KIAogI2luY2x1ZGUg Imk5MTVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgogI2luY2x1ZGUgImk5 MTVfdXRpbHMuaCIKIAotc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lOwotCi1zdHJ1Y3QgaW50ZWxf dGltZWxpbmUgeworc3RydWN0IGk5MTVfdGltZWxpbmUgewogCXU2NCBmZW5jZV9jb250ZXh0Owog CXUzMiBzZXFubzsKIApAQCAtNzEsNTEgKzcwLDU3IEBAIHN0cnVjdCBpbnRlbF90aW1lbGluZSB7 CiAJICovCiAJdTMyIGdsb2JhbF9zeW5jW0k5MTVfTlVNX0VOR0lORVNdOwogCi0Jc3RydWN0IGk5 MTVfZ2VtX3RpbWVsaW5lICpjb21tb247Ci19OwotCi1zdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUg ewogCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKLQotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCWNvbnN0IGNoYXIgKm5hbWU7CiAKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgZW5naW5l W0k5MTVfTlVNX0VOR0lORVNdOworCXN0cnVjdCBrcmVmIGtyZWY7CiB9OwogCi1pbnQgaTkxNV9n ZW1fdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKLQkJCSAgIHN0 cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwsCi0JCQkgICBjb25zdCBjaGFyICpuYW1lKTsKLWlu dCBpOTE1X2dlbV90aW1lbGluZV9pbml0X19nbG9iYWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpOwotdm9pZCBpOTE1X2dlbV90aW1lbGluZXNfcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7Ci12b2lkIGk5MTVfZ2VtX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfZ2Vt X3RpbWVsaW5lICp0bCk7Cit2b2lkIGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKKwkJCWNvbnN0IGNo YXIgKm5hbWUpOwordm9pZCBpOTE1X3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfdGltZWxpbmUg KnRsKTsKIAotc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICoKLWk5MTVfZ2VtX3RpbWVsaW5lX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAqbmFtZSk7Ci12 b2lkIGk5MTVfZ2VtX3RpbWVsaW5lX2ZyZWUoc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1l bGluZSk7CitzdHJ1Y3QgaTkxNV90aW1lbGluZSAqCitpOTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAqbmFtZSk7CiAKLXN0YXRpYyBp bmxpbmUgaW50IF9faW50ZWxfdGltZWxpbmVfc3luY19zZXQoc3RydWN0IGludGVsX3RpbWVsaW5l ICp0bCwKLQkJCQkJICAgIHU2NCBjb250ZXh0LCB1MzIgc2Vxbm8pCitzdGF0aWMgaW5saW5lIHN0 cnVjdCBpOTE1X3RpbWVsaW5lICoKK2k5MTVfdGltZWxpbmVfZ2V0KHN0cnVjdCBpOTE1X3RpbWVs aW5lICp0aW1lbGluZSkKK3sKKwlrcmVmX2dldCgmdGltZWxpbmUtPmtyZWYpOworCXJldHVybiB0 aW1lbGluZTsKK30KKwordm9pZCBfX2k5MTVfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3Jl Zik7CitzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90aW1lbGluZV9wdXQoc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRpbWVsaW5lKQoreworCWtyZWZfcHV0KCZ0aW1lbGluZS0+a3JlZiwgX19pOTE1X3Rp bWVsaW5lX2ZyZWUpOworfQorCitzdGF0aWMgaW5saW5lIGludCBfX2k5MTVfdGltZWxpbmVfc3lu Y19zZXQoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAorCQkJCQkgICB1NjQgY29udGV4dCwgdTMy IHNlcW5vKQogewogCXJldHVybiBpOTE1X3N5bmNtYXBfc2V0KCZ0bC0+c3luYywgY29udGV4dCwg c2Vxbm8pOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBpbnRlbF90aW1lbGluZV9zeW5jX3NldChz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAotCQkJCQkgIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQorc3RhdGljIGlubGluZSBpbnQgaTkxNV90aW1lbGluZV9zeW5jX3NldChzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGwsCisJCQkJCSBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkK IHsKLQlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgZmVuY2UtPmNvbnRleHQs IGZlbmNlLT5zZXFubyk7CisJcmV0dXJuIF9faTkxNV90aW1lbGluZV9zeW5jX3NldCh0bCwgZmVu Y2UtPmNvbnRleHQsIGZlbmNlLT5zZXFubyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBfX2lu dGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKLQkJ CQkJCSAgdTY0IGNvbnRleHQsIHUzMiBzZXFubykKK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2k5MTVf dGltZWxpbmVfc3luY19pc19sYXRlcihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCisJCQkJCQkg dTY0IGNvbnRleHQsIHUzMiBzZXFubykKIHsKIAlyZXR1cm4gaTkxNV9zeW5jbWFwX2lzX2xhdGVy KCZ0bC0+c3luYywgY29udGV4dCwgc2Vxbm8pOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaW50 ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAotCQkJ CQkJY29uc3Qgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCitzdGF0aWMgaW5saW5lIGJvb2wgaTkx NV90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKKwkJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogewotCXJldHVybiBfX2ludGVs X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIodGwsIGZlbmNlLT5jb250ZXh0LCBmZW5jZS0+c2Vxbm8p OworCXJldHVybiBfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcih0bCwgZmVuY2UtPmNvbnRl eHQsIGZlbmNlLT5zZXFubyk7CiB9CiAKK3ZvaWQgaTkxNV90aW1lbGluZXNfcGFyayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwppbmRleCBkNDRhOGViODMzNzkuLmRjZmRkNDQzOTkzNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTQ1MSwxMiArNDUxLDYgQEAgdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgc2Vxbm8pCiAJR0VNX0JVR19PTihpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2lu ZSkgIT0gc2Vxbm8pOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF90aW1lbGlu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JZW5naW5lLT50aW1lbGluZSA9 Ci0JCSZlbmdpbmUtPmk5MTUtPmd0LmV4ZWN1dGlvbl90aW1lbGluZS5lbmdpbmVbZW5naW5lLT5p ZF07Ci19Ci0KIHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9pbml0X2JhdGNoX3Bvb2woc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdCgm ZW5naW5lLT5iYXRjaF9wb29sLCBlbmdpbmUpOwpAQCAtNTA4LDggKzUwMiw5IEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKICAqLwogdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlpOTE1X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1LCAm ZW5naW5lLT50aW1lbGluZSwgZW5naW5lLT5uYW1lKTsKKwogCWludGVsX2VuZ2luZV9pbml0X2V4 ZWNsaXN0KGVuZ2luZSk7Ci0JaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoZW5naW5lKTsKIAlp bnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9i YXRjaF9wb29sKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihlbmdpbmUp OwpAQCAtNzU3LDYgKzc1Miw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0 X2NvbnRleHQpCiAJCWVuZ2luZS0+Y29udGV4dF91bnBpbihlbmdpbmUsIGVuZ2luZS0+aTkxNS0+ cHJlZW1wdF9jb250ZXh0KTsKIAllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUt Pmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKworCWk5MTVfdGltZWxpbmVfZmluaSgmZW5naW5lLT50 aW1lbGluZSk7CiB9CiAKIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKQEAgLTEwMDksNyArMTAwNiw3IEBAIGJvb2wg aW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJICogdGhlIGxhc3QgcmVxdWVzdCB0aGF0IHJlbWFpbnMgaW4gdGhlIHRp bWVsaW5lLiBXaGVuIGlkbGUsIGl0IGlzCiAJICogdGhlIGxhc3QgZXhlY3V0ZWQgY29udGV4dCBh cyB0cmFja2VkIGJ5IHJldGlyZW1lbnQuCiAJICovCi0JcnEgPSBfX2k5MTVfZ2VtX2FjdGl2ZV9w ZWVrKCZlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QpOworCXJxID0gX19pOTE1X2dlbV9h Y3RpdmVfcGVlaygmZW5naW5lLT50aW1lbGluZS5sYXN0X3JlcXVlc3QpOwogCWlmIChycSkKIAkJ cmV0dXJuIHJxLT5jdHggPT0ga2VybmVsX2NvbnRleHQ7CiAJZWxzZQpAQCAtMTMzMiwxNCArMTMy OSwxNCBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAogCWRybV9wcmludGYobSwgIlx0UmVxdWVzdHM6XG4iKTsKIAotCXJxID0gbGlzdF9m aXJzdF9lbnRyeSgmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCisJcnEgPSBsaXN0X2ZpcnN0 X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLAogCQkJICAgICAgc3RydWN0IGk5MTVf cmVxdWVzdCwgbGluayk7Ci0JaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS0+cmVx dWVzdHMpCisJaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cykKIAkJ cHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRmaXJzdCAgIik7CiAKLQlycSA9IGxpc3RfbGFzdF9l bnRyeSgmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCisJcnEgPSBsaXN0X2xhc3RfZW50cnko JmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsCiAJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qs IGxpbmspOwotCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzKQor CWlmICgmcnEtPmxpbmsgIT0gJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMpCiAJCXByaW50X3Jl cXVlc3QobSwgcnEsICJcdFx0bGFzdCAgICIpOwogCiAJcnEgPSBpOTE1X2dlbV9maW5kX2FjdGl2 ZV9yZXF1ZXN0KGVuZ2luZSk7CkBAIC0xMzcxLDggKzEzNjgsOCBAQCB2b2lkIGludGVsX2VuZ2lu ZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJZHJtX3ByaW50ZihtLCAi XHREZXZpY2UgaXMgYXNsZWVwOyBza2lwcGluZyByZWdpc3RlciBkdW1wXG4iKTsKIAl9CiAKLQlz cGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJxLCAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspCisJc3Bpbl9sb2NrX2ly cSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5n aW5lLT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykKIAkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0 XHRFICIpOwogCWRybV9wcmludGYobSwgIlx0XHRRdWV1ZSBwcmlvcml0eTogJWRcbiIsIGV4ZWNs aXN0cy0+cXVldWVfcHJpb3JpdHkpOwogCWZvciAocmIgPSBleGVjbGlzdHMtPmZpcnN0OyByYjsg cmIgPSByYl9uZXh0KHJiKSkgewpAQCAtMTM4Miw3ICsxMzc5LDcgQEAgdm9pZCBpbnRlbF9lbmdp bmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCWxpc3RfZm9yX2VhY2hf ZW50cnkocnEsICZwLT5yZXF1ZXN0cywgc2NoZWQubGluaykKIAkJCXByaW50X3JlcXVlc3QobSwg cnEsICJcdFx0USAiKTsKIAl9Ci0Jc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5s b2NrKTsKKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7CiAKIAlzcGlu X2xvY2tfaXJxKCZiLT5yYl9sb2NrKTsKIAlmb3IgKHJiID0gcmJfZmlyc3QoJmItPndhaXRlcnMp OyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMKaW5kZXggMDJkYTA1ODc1YWE3Li5jYjRmY2RlMWZmZGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNjc3LDcgKzY3Nyw3 IEBAIHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlib29sIHN1Ym1pdCA9IGZhbHNlOwogCXN0cnVjdCByYl9ub2RlICpyYjsKIAotCXNwaW5f bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOworCXNwaW5fbG9ja19pcnEoJmVuZ2lu ZS0+dGltZWxpbmUubG9jayk7CiAJcmIgPSBleGVjbGlzdHMtPmZpcnN0OwogCUdFTV9CVUdfT04o cmJfZmlyc3QoJmV4ZWNsaXN0cy0+cXVldWUpICE9IHJiKTsKIApAQCAtNzQ4LDcgKzc0OCw3IEBA IHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAlHRU1fQlVHX09OKGV4ZWNsaXN0cy0+Zmlyc3QgJiYgIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5w b3J0KSk7CiAKIHVubG9jazoKLQlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxv Y2spOworCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIH0KIAogc3Rh dGljIHZvaWQgZ3VjX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGZkMzUzOTAzNDY2NS4uZmE4MDJkNzkxODA0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMzMwLDEwICszMzAsMTAgQEAgc3RhdGljIHZvaWQg X191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnVuaW5pdGlhbGl6ZWRfdmFyKHApOwogCWludCBs YXN0X3ByaW8gPSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQ7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxk KCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUt PnRpbWVsaW5lLmxvY2spOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UocnEs IHJuLAotCQkJCQkgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAorCQkJCQkgJmVuZ2luZS0+ dGltZWxpbmUucmVxdWVzdHMsCiAJCQkJCSBsaW5rKSB7CiAJCWlmIChpOTE1X3JlcXVlc3RfY29t cGxldGVkKHJxKSkKIAkJCXJldHVybjsKQEAgLTM1Nyw5ICszNTcsOSBAQCBleGVjbGlzdHNfdW53 aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4 ZWNsaXN0cykKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQogCQljb250YWluZXJf b2YoZXhlY2xpc3RzLCB0eXBlb2YoKmVuZ2luZSksIGV4ZWNsaXN0cyk7CiAKLQlzcGluX2xvY2tf aXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRp bWVsaW5lLmxvY2spOwogCV9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKLQlz cGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOworCXNwaW5fdW5sb2NrX2ly cSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCkBAIC01 ODMsNyArNTgzLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIGFuZCBjb250ZXh0IHN3aXRjaGVzKSBzdWJtaXNzaW9u LgogCSAqLwogCi0Jc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJc3Bp bl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIAlyYiA9IGV4ZWNsaXN0cy0+Zmly c3Q7CiAJR0VNX0JVR19PTihyYl9maXJzdCgmZXhlY2xpc3RzLT5xdWV1ZSkgIT0gcmIpOwogCkBA IC03NDMsNyArNzQzLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCUdFTV9CVUdfT04oZXhlY2xpc3RzLT5maXJzdCAmJiAh cG9ydF9pc3NldChleGVjbGlzdHMtPnBvcnQpKTsKIAogdW5sb2NrOgotCXNwaW5fdW5sb2NrX2ly cSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRp bWVsaW5lLmxvY2spOwogCiAJaWYgKHN1Ym1pdCkgewogCQlleGVjbGlzdHNfdXNlcl9iZWdpbihl eGVjbGlzdHMsIGV4ZWNsaXN0cy0+cG9ydCk7CkBAIC04NjgsMTAgKzg2OCwxMCBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKIAlyZXNl dF9pcnEoZW5naW5lKTsKIAotCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJ c3Bpbl9sb2NrKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwogCiAJLyogTWFyayBhbGwgZXhlY3V0 aW5nIHJlcXVlc3RzIGFzIHNraXBwZWQuICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVu Z2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShy cSwgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsIGxpbmspIHsKIAkJR0VNX0JVR19PTighcnEt Pmdsb2JhbF9zZXFubyk7CiAJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCiAJCQlk bWFfZmVuY2Vfc2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FSU8pOwpAQCAtOTAzLDcgKzkwMyw3IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCWV4ZWNsaXN0cy0+Zmlyc3QgPSBOVUxMOwogCUdFTV9CVUdfT04ocG9y dF9pc3NldChleGVjbGlzdHMtPnBvcnQpKTsKIAotCXNwaW5fdW5sb2NrKCZlbmdpbmUtPnRpbWVs aW5lLT5sb2NrKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKIAogCWxv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KQEAgLTExNDEsNyArMTE0MSw3IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 KQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkvKiBXaWxsIGJlIGNhbGxlZCBmcm9tIGlycS1j b250ZXh0IHdoZW4gdXNpbmcgZm9yZWlnbiBmZW5jZXMuICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUo JmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5n aW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiAKIAlxdWV1ZV9yZXF1ZXN0KGVuZ2luZSwgJnJl cXVlc3QtPnNjaGVkLCBycV9wcmlvKHJlcXVlc3QpKTsKIAlzdWJtaXRfcXVldWUoZW5naW5lLCBy cV9wcmlvKHJlcXVlc3QpKTsKQEAgLTExNDksNyArMTE0OSw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogCUdFTV9C VUdfT04oIWVuZ2luZS0+ZXhlY2xpc3RzLmZpcnN0KTsKIAlHRU1fQlVHX09OKGxpc3RfZW1wdHko JnJlcXVlc3QtPnNjaGVkLmxpbmspKTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2lu ZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdp bmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnNjaGVkX3RvX3JlcXVlc3Qoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKQEAgLTEx NjUsOCArMTE2NSw4IEBAIHNjaGVkX2xvY2tfZW5naW5lKHN0cnVjdCBpOTE1X3NjaGVkX25vZGUg Km5vZGUsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmxvY2tlZCkKIAlHRU1fQlVHX09OKCFsb2Nr ZWQpOwogCiAJaWYgKGVuZ2luZSAhPSBsb2NrZWQpIHsKLQkJc3Bpbl91bmxvY2soJmxvY2tlZC0+ dGltZWxpbmUtPmxvY2spOwotCQlzcGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwor CQlzcGluX3VubG9jaygmbG9ja2VkLT50aW1lbGluZS5sb2NrKTsKKwkJc3Bpbl9sb2NrKCZlbmdp bmUtPnRpbWVsaW5lLmxvY2spOwogCX0KIAogCXJldHVybiBlbmdpbmU7CkBAIC0xMjQ5LDcgKzEy NDksNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVz dCAqcmVxdWVzdCwKIAl9CiAKIAllbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Ci0Jc3Bpbl9sb2Nr X2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50 aW1lbGluZS5sb2NrKTsKIAogCS8qIEZpZm8gYW5kIGRlcHRoLWZpcnN0IHJlcGxhY2VtZW50IGVu c3VyZSBvdXIgZGVwcyBleGVjdXRlIGJlZm9yZSB1cyAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZV9yZXZlcnNlKGRlcCwgcCwgJmRmcywgZGZzX2xpbmspIHsKQEAgLTEyNzMsNyArMTI3Myw3 IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zY2hlZHVsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy ZXF1ZXN0LAogCQkJX19zdWJtaXRfcXVldWUoZW5naW5lLCBwcmlvKTsKIAl9CiAKLQlzcGluX3Vu bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOworCXNwaW5fdW5sb2NrX2lycSgmZW5n aW5lLT50aW1lbGluZS5sb2NrKTsKIH0KIAogc3RhdGljIGludCBfX2NvbnRleHRfcGluKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQpAQCAtMTgwMiw5 ICsxODAyLDkgQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCXJlc2V0X2lycShlbmdpbmUpOwogCiAJLyogUHVzaCBiYWNrIGFu eSBpbmNvbXBsZXRlIHJlcXVlc3RzIGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwotCXNw aW5fbG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJc3Bpbl9sb2NrKCZlbmdpbmUtPnRp bWVsaW5lLmxvY2spOwogCV9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKLQlz cGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJc3Bpbl91bmxvY2soJmVuZ2lu ZS0+dGltZWxpbmUubG9jayk7CiAKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAKQEAgLTI1 NTksNiArMjU1OSw3IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxs b2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK IAl1aW50MzJfdCBjb250ZXh0X3NpemU7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CisJc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwogCWludCByZXQ7CiAKIAlpZiAoY2UtPnN0YXRl KQpAQCAtMjU3NCw4ICsyNTc1LDggQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZl cnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCiAJY3R4X29iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGUoY3R4LT5pOTE1LCBjb250ZXh0X3NpemUpOwogCWlmIChJU19F UlIoY3R4X29iaikpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigiQWxsb2MgTFJDIGJhY2tpbmcgb2Jq IGZhaWxlZC5cbiIpOwotCQlyZXR1cm4gUFRSX0VSUihjdHhfb2JqKTsKKwkJcmV0ID0gUFRSX0VS UihjdHhfb2JqKTsKKwkJZ290byBlcnJvcl9kZXJlZl9vYmo7CiAJfQogCiAJdm1hID0gaTkxNV92 bWFfaW5zdGFuY2UoY3R4X29iaiwgJmN0eC0+aTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKQEAgLTI1 ODQsNyArMjU4NSwxNCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2Fs bG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCWdvdG8gZXJyb3JfZGVyZWZfb2Jq OwogCX0KIAotCXJpbmcgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmcoZW5naW5lLCBjdHgtPnRp bWVsaW5lLCBjdHgtPnJpbmdfc2l6ZSk7CisJdGltZWxpbmUgPSBpOTE1X3RpbWVsaW5lX2NyZWF0 ZShjdHgtPmk5MTUsIGN0eC0+bmFtZSk7CisJaWYgKElTX0VSUih0aW1lbGluZSkpIHsKKwkJcmV0 ID0gUFRSX0VSUih0aW1lbGluZSk7CisJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOworCX0KKworCXJp bmcgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmcoZW5naW5lLCB0aW1lbGluZSwgY3R4LT5yaW5n X3NpemUpOworCWk5MTVfdGltZWxpbmVfcHV0KHRpbWVsaW5lKTsKIAlpZiAoSVNfRVJSKHJpbmcp KSB7CiAJCXJldCA9IFBUUl9FUlIocmluZyk7CiAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDQ3MDA5Njk1YjM3OC4uODIz Y2Y0OWYxODg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC02 OTYsMTcgKzY5NiwxNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7CiAJdW5z aWduZWQgbG9uZyBmbGFnczsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5l LT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9j aywgZmxhZ3MpOwogCiAJLyogTWFyayBhbGwgc3VibWl0dGVkIHJlcXVlc3RzIGFzIHNraXBwZWQu ICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+cmVx dWVzdHMsIGxpbmspIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnRp bWVsaW5lLnJlcXVlc3RzLCBsaW5rKSB7CiAJCUdFTV9CVUdfT04oIXJlcXVlc3QtPmdsb2JhbF9z ZXFubyk7CiAJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKIAkJCWRtYV9m ZW5jZV9zZXRfZXJyb3IoJnJlcXVlc3QtPmZlbmNlLCAtRUlPKTsKIAl9CiAJLyogUmVtYWluaW5n IF91bnJlYWR5XyByZXF1ZXN0cyB3aWxsIGJlIG5vcCdlZCB3aGVuIHN1Ym1pdHRlZCAqLwogCi0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwog fQogCiBzdGF0aWMgdm9pZCBpOXh4X3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJlcXVlc3QpCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBpbnRlbF9yaW5nX2NyZWF0ZV92bWEoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgc2l6ZSkKIAogc3RydWN0IGludGVs X3JpbmcgKgogaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKLQkJCSBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lLAorCQkJIHN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKIAkJCSBpbnQgc2l6ZSkKIHsKIAlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZzsKQEAgLTExMzMsNyArMTEzMyw3IEBAIGludGVsX2VuZ2luZV9jcmVh dGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCiAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7Ci0Jcmlu Zy0+dGltZWxpbmUgPSAmdGltZWxpbmUtPmVuZ2luZVtlbmdpbmUtPmlkXTsKKwlyaW5nLT50aW1l bGluZSA9IGk5MTVfdGltZWxpbmVfZ2V0KHRpbWVsaW5lKTsKIAogCXJpbmctPnNpemUgPSBzaXpl OwogCS8qIFdvcmthcm91bmQgYW4gZXJyYXR1bSBvbiB0aGUgaTgzMCB3aGljaCBjYXVzZXMgYSBo YW5nIGlmCkBAIC0xMTY0LDYgKzExNjQsNyBAQCBpbnRlbF9yaW5nX2ZyZWUoc3RydWN0IGludGVs X3JpbmcgKnJpbmcpCiAJaTkxNV92bWFfY2xvc2UocmluZy0+dm1hKTsKIAlfX2k5MTVfZ2VtX29i amVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUob2JqKTsKIAorCWk5MTVfdGltZWxpbmVfcHV0KHJp bmctPnRpbWVsaW5lKTsKIAlrZnJlZShyaW5nKTsKIH0KIApAQCAtMTMyMiw2ICsxMzIzLDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CisJc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwogCWludCBlcnI7CiAKIAlpbnRlbF9lbmdpbmVf c2V0dXBfY29tbW9uKGVuZ2luZSk7CkBAIC0xMzMwLDkgKzEzMzIsMTQgQEAgc3RhdGljIGludCBp bnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlp ZiAoZXJyKQogCQlnb3RvIGVycjsKIAotCXJpbmcgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmco ZW5naW5lLAotCQkJCQkmZW5naW5lLT5pOTE1LT5ndC5sZWdhY3lfdGltZWxpbmUsCi0JCQkJCTMy ICogUEFHRV9TSVpFKTsKKwl0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGVuZ2luZS0+ aTkxNSwgZW5naW5lLT5uYW1lKTsKKwlpZiAoSVNfRVJSKHRpbWVsaW5lKSkgeworCQllcnIgPSBQ VFJfRVJSKHRpbWVsaW5lKTsKKwkJZ290byBlcnI7CisJfQorCisJcmluZyA9IGludGVsX2VuZ2lu ZV9jcmVhdGVfcmluZyhlbmdpbmUsIHRpbWVsaW5lLCAzMiAqIFBBR0VfU0laRSk7CisJaTkxNV90 aW1lbGluZV9wdXQodGltZWxpbmUpOwogCWlmIChJU19FUlIocmluZykpIHsKIAkJZXJyID0gUFRS X0VSUihyaW5nKTsKIAkJZ290byBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKaW5kZXggYjNjM2Y4ZjQ3ZjM4Li41NjliMzIwM2UxMjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTUsMTIgKzUsMTIgQEAKICNpbmNsdWRlIDxsaW51 eC9oYXNodGFibGUuaD4KIAogI2luY2x1ZGUgImk5MTVfZ2VtX2JhdGNoX3Bvb2wuaCIKLSNpbmNs dWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgogCiAjaW5jbHVkZSAiaTkxNV9yZWcuaCIKICNpbmNs dWRlICJpOTE1X3BtdS5oIgogI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImk5 MTVfc2VsZnRlc3QuaCIKKyNpbmNsdWRlICJpOTE1X3RpbWVsaW5lLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZ3B1X2NvbW1hbmRzLmgiCiAKIHN0cnVjdCBkcm1fcHJpbnRlcjsKQEAgLTEyOCw3ICsxMjgs NyBAQCBzdHJ1Y3QgaW50ZWxfcmluZyB7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdm9pZCAq dmFkZHI7CiAKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOworCXN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0aW1lbGluZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVlc3RfbGlzdDsKIAlz dHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saW5rOwogCkBAIC0zMzcsNyArMzM3LDggQEAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyB7CiAJdTMyIG1taW9fYmFzZTsKIAogCXN0cnVjdCBpbnRlbF9yaW5n ICpidWZmZXI7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZTsKKworCXN0cnVjdCBp OTE1X3RpbWVsaW5lIHRpbWVsaW5lOwogCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRl ZmF1bHRfc3RhdGU7CiAKQEAgLTc2OSw3ICs3NzAsNyBAQCBpbnRlbF93cml0ZV9zdGF0dXNfcGFn ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCByZWcsIHUzMiB2YWx1ZSkKIAog c3RydWN0IGludGVsX3JpbmcgKgogaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCSBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVs aW5lLAorCQkJIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKIAkJCSBpbnQgc2l6ZSk7 CiBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcsCiAJCSAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LApAQCAtODg4LDcgKzg4OSw3IEBAIHN0YXRpYyBpbmxp bmUgdTMyIGludGVsX2VuZ2luZV9sYXN0X3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJICogd3RpaCBzZXJpYWxpc2luZyB0aGlzIGhpbnQgd2l0aCBhbnl0aGluZywgc28g ZG9jdW1lbnQgaXQgYXMKIAkgKiBhIGhpbnQgYW5kIG5vdGhpbmcgbW9yZS4KIAkgKi8KLQlyZXR1 cm4gUkVBRF9PTkNFKGVuZ2luZS0+dGltZWxpbmUtPnNlcW5vKTsKKwlyZXR1cm4gUkVBRF9PTkNF KGVuZ2luZS0+dGltZWxpbmUuc2Vxbm8pOwogfQogCiB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5z dGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jCnNpbWlsYXJpdHkgaW5kZXggNzAl CnJlbmFtZSBmcm9tIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV90aW1l bGluZS5jCnJlbmFtZSB0byBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1l bGluZS5jCmluZGV4IDMwMDBlNmE3ZDgyZC4uMTlmMWM2YTVjOGZiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jCkBAIC0xLDI1ICsxLDcg QEAKIC8qCi0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgot ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgot ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0g KgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCi0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MKLSAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQKICAqCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0 aW9uCiAgKi8KIAogI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKQEAgLTM1LDIxICsxNywy MSBAQCBzdHJ1Y3QgX19pZ3Rfc3luYyB7CiAJYm9vbCBzZXQ7CiB9OwogCi1zdGF0aWMgaW50IF9f aWd0X3N5bmMoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKK3N0YXRpYyBpbnQgX19pZ3Rfc3lu YyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCiAJCSAgICAgIHU2NCBjdHgsCiAJCSAgICAgIGNv bnN0IHN0cnVjdCBfX2lndF9zeW5jICpwLAogCQkgICAgICBjb25zdCBjaGFyICpuYW1lKQogewog CWludCByZXQ7CiAKLQlpZiAoX19pbnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHRsLCBjdHgs IHAtPnNlcW5vKSAhPSBwLT5leHBlY3RlZCkgeworCWlmIChfX2k5MTVfdGltZWxpbmVfc3luY19p c19sYXRlcih0bCwgY3R4LCBwLT5zZXFubykgIT0gcC0+ZXhwZWN0ZWQpIHsKIAkJcHJfZXJyKCIl czogJXMoY3R4PSVsbHUsIHNlcW5vPSV1KSBleHBlY3RlZCBwYXNzZWQgJXMgYnV0IGZhaWxlZFxu IiwKIAkJICAgICAgIG5hbWUsIHAtPm5hbWUsIGN0eCwgcC0+c2Vxbm8sIHllc25vKHAtPmV4cGVj dGVkKSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWlmIChwLT5zZXQpIHsKLQkJcmV0ID0g X19pbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgY3R4LCBwLT5zZXFubyk7CisJCXJldCA9IF9f aTkxNV90aW1lbGluZV9zeW5jX3NldCh0bCwgY3R4LCBwLT5zZXFubyk7CiAJCWlmIChyZXQpCiAJ CQlyZXR1cm4gcmV0OwogCX0KQEAgLTc3LDM3ICs1OSwzMSBAQCBzdGF0aWMgaW50IGlndF9zeW5j KHZvaWQgKmFyZykKIAkJeyAidW53cmFwIiwgVUlOVF9NQVgsIHRydWUsIGZhbHNlIH0sCiAJCXt9 LAogCX0sICpwOwotCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CisJc3RydWN0IGk5MTVfdGlt ZWxpbmUgdGw7CiAJaW50IG9yZGVyLCBvZmZzZXQ7CiAJaW50IHJldCA9IC1FTk9ERVY7CiAKLQl0 bCA9IG1vY2tfdGltZWxpbmUoMCk7Ci0JaWYgKCF0bCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KKwlt b2NrX3RpbWVsaW5lX2luaXQoJnRsLCAwKTsKIAlmb3IgKHAgPSBwYXNzOyBwLT5uYW1lOyBwKysp IHsKIAkJZm9yIChvcmRlciA9IDE7IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsKIAkJCWZvciAob2Zm c2V0ID0gLTE7IG9mZnNldCA8PSAob3JkZXIgPiAxKTsgb2Zmc2V0KyspIHsKIAkJCQl1NjQgY3R4 ID0gQklUX1VMTChvcmRlcikgKyBvZmZzZXQ7CiAKLQkJCQlyZXQgPSBfX2lndF9zeW5jKHRsLCBj dHgsIHAsICIxIik7CisJCQkJcmV0ID0gX19pZ3Rfc3luYygmdGwsIGN0eCwgcCwgIjEiKTsKIAkJ CQlpZiAocmV0KQogCQkJCQlnb3RvIG91dDsKIAkJCX0KIAkJfQogCX0KLQltb2NrX3RpbWVsaW5l X2Rlc3Ryb3kodGwpOwotCi0JdGwgPSBtb2NrX3RpbWVsaW5lKDApOwotCWlmICghdGwpCi0JCXJl dHVybiAtRU5PTUVNOworCW1vY2tfdGltZWxpbmVfZmluaSgmdGwpOwogCisJbW9ja190aW1lbGlu ZV9pbml0KCZ0bCwgMCk7CiAJZm9yIChvcmRlciA9IDE7IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsK IAkJZm9yIChvZmZzZXQgPSAtMTsgb2Zmc2V0IDw9IChvcmRlciA+IDEpOyBvZmZzZXQrKykgewog CQkJdTY0IGN0eCA9IEJJVF9VTEwob3JkZXIpICsgb2Zmc2V0OwogCiAJCQlmb3IgKHAgPSBwYXNz OyBwLT5uYW1lOyBwKyspIHsKLQkJCQlyZXQgPSBfX2lndF9zeW5jKHRsLCBjdHgsIHAsICIyIik7 CisJCQkJcmV0ID0gX19pZ3Rfc3luYygmdGwsIGN0eCwgcCwgIjIiKTsKIAkJCQlpZiAocmV0KQog CQkJCQlnb3RvIG91dDsKIAkJCX0KQEAgLTExNSw3ICs5MSw3IEBAIHN0YXRpYyBpbnQgaWd0X3N5 bmModm9pZCAqYXJnKQogCX0KIAogb3V0OgotCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7CisJ bW9ja190aW1lbGluZV9maW5pKCZ0bCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTI3LDE1ICsx MDMsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGludCByYW5kb21fZW5naW5lKHN0cnVjdCBybmRfc3Rh dGUgKnJuZCkKIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCiB7CiAJc3RydWN0IHJu ZF9zdGF0ZSBwcm5nOwotCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CisJc3RydWN0IGk5MTVf dGltZWxpbmUgdGw7CiAJdW5zaWduZWQgbG9uZyBlbmRfdGltZSwgY291bnQ7CiAJdTY0IHBybmcz Ml8xTTsKIAlrdGltZV90IGt0OwogCWludCBvcmRlciwgbGFzdF9vcmRlcjsKIAotCXRsID0gbW9j a190aW1lbGluZSgwKTsKLQlpZiAoIXRsKQotCQlyZXR1cm4gLUVOT01FTTsKKwltb2NrX3RpbWVs aW5lX2luaXQoJnRsLCAwKTsKIAogCS8qIExvb2t1cHMgZnJvbSBjYWNoZSBhcmUgdmVyeSBmYXN0 IGFuZCBzbyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uCiAJICogYW5kIHRoZSBsb29wIGl0 c2VsZiBiZWNvbWVzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGluIHRoZSBwZXItaXRlcmF0aW9uCkBA IC0xNjcsNyArMTQxLDcgQEAgc3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFyZykKIAlkbyB7 CiAJCXU2NCBpZCA9IGk5MTVfcHJhbmRvbV91NjRfc3RhdGUoJnBybmcpOwogCi0JCV9faW50ZWxf dGltZWxpbmVfc3luY19zZXQodGwsIGlkLCAwKTsKKwkJX19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0 KCZ0bCwgaWQsIDApOwogCQljb3VudCsrOwogCX0gd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMs IGVuZF90aW1lKSk7CiAJa3QgPSBrdGltZV9zdWIoa3RpbWVfZ2V0KCksIGt0KTsKQEAgLTE4Miw4 ICsxNTYsOCBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQogCXdoaWxlIChlbmRf dGltZS0tKSB7CiAJCXU2NCBpZCA9IGk5MTVfcHJhbmRvbV91NjRfc3RhdGUoJnBybmcpOwogCi0J CWlmICghX19pbnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHRsLCBpZCwgMCkpIHsKLQkJCW1v Y2tfdGltZWxpbmVfZGVzdHJveSh0bCk7CisJCWlmICghX19pOTE1X3RpbWVsaW5lX3N5bmNfaXNf bGF0ZXIoJnRsLCBpZCwgMCkpIHsKKwkJCW1vY2tfdGltZWxpbmVfZmluaSgmdGwpOwogCQkJcHJf ZXJyKCJMb29rdXAgb2YgJWxsdSBmYWlsZWRcbiIsIGlkKTsKIAkJCXJldHVybiAtRUlOVkFMOwog CQl9CkBAIC0xOTMsMTkgKzE2NywxNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJn KQogCXByX2luZm8oIiVzOiAlbHUgcmFuZG9tIGxvb2t1cHMsICVsbHVucy9sb29rdXBcbiIsCiAJ CV9fZnVuY19fLCBjb3VudCwgKGxvbmcgbG9uZylkaXY2NF91bChrdGltZV90b19ucyhrdCksIGNv dW50KSk7CiAKLQltb2NrX3RpbWVsaW5lX2Rlc3Ryb3kodGwpOworCW1vY2tfdGltZWxpbmVfZmlu aSgmdGwpOwogCWNvbmRfcmVzY2hlZCgpOwogCi0JdGwgPSBtb2NrX3RpbWVsaW5lKDApOwotCWlm ICghdGwpCi0JCXJldHVybiAtRU5PTUVNOworCW1vY2tfdGltZWxpbmVfaW5pdCgmdGwsIDApOwog CiAJLyogQmVuY2htYXJrIHNldHRpbmcgdGhlIGZpcnN0IE4gKGluIG9yZGVyKSBjb250ZXh0cyAq LwogCWNvdW50ID0gMDsKIAlrdCA9IGt0aW1lX2dldCgpOwogCWVuZF90aW1lID0gamlmZmllcyAr IEhaLzEwOwogCWRvIHsKLQkJX19pbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgY291bnQrKywg MCk7CisJCV9faTkxNV90aW1lbGluZV9zeW5jX3NldCgmdGwsIGNvdW50KyssIDApOwogCX0gd2hp bGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1lKSk7CiAJa3QgPSBrdGltZV9zdWIoa3Rp bWVfZ2V0KCksIGt0KTsKIAlwcl9pbmZvKCIlczogJWx1IGluLW9yZGVyIGluc2VydGlvbnMsICVs bHVucy9pbnNlcnRcbiIsCkBAIC0yMTUsOSArMTg3LDkgQEAgc3RhdGljIGludCBiZW5jaF9zeW5j KHZvaWQgKmFyZykKIAllbmRfdGltZSA9IGNvdW50OwogCWt0ID0ga3RpbWVfZ2V0KCk7CiAJd2hp bGUgKGVuZF90aW1lLS0pIHsKLQkJaWYgKCFfX2ludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIo dGwsIGVuZF90aW1lLCAwKSkgeworCQlpZiAoIV9faTkxNV90aW1lbGluZV9zeW5jX2lzX2xhdGVy KCZ0bCwgZW5kX3RpbWUsIDApKSB7CiAJCQlwcl9lcnIoIkxvb2t1cCBvZiAlbHUgZmFpbGVkXG4i LCBlbmRfdGltZSk7Ci0JCQltb2NrX3RpbWVsaW5lX2Rlc3Ryb3kodGwpOworCQkJbW9ja190aW1l bGluZV9maW5pKCZ0bCk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCX0KQEAgLTIyNSwxMiAr MTk3LDEwIEBAIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCiAJcHJfaW5mbygiJXM6 ICVsdSBpbi1vcmRlciBsb29rdXBzLCAlbGx1bnMvbG9va3VwXG4iLAogCQlfX2Z1bmNfXywgY291 bnQsIChsb25nIGxvbmcpZGl2NjRfdWwoa3RpbWVfdG9fbnMoa3QpLCBjb3VudCkpOwogCi0JbW9j a190aW1lbGluZV9kZXN0cm95KHRsKTsKKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKIAljb25k X3Jlc2NoZWQoKTsKIAotCXRsID0gbW9ja190aW1lbGluZSgwKTsKLQlpZiAoIXRsKQotCQlyZXR1 cm4gLUVOT01FTTsKKwltb2NrX3RpbWVsaW5lX2luaXQoJnRsLCAwKTsKIAogCS8qIEJlbmNobWFy ayBzZWFyY2hpbmcgZm9yIGEgcmFuZG9tIGNvbnRleHQgaWQgYW5kIG1heWJlIGNoYW5naW5nIGl0 ICovCiAJcHJhbmRvbV9zZWVkX3N0YXRlKCZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVk KTsKQEAgLTI0MSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQog CQl1MzIgaWQgPSByYW5kb21fZW5naW5lKCZwcm5nKTsKIAkJdTMyIHNlcW5vID0gcHJhbmRvbV91 MzJfc3RhdGUoJnBybmcpOwogCi0JCWlmICghX19pbnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVy KHRsLCBpZCwgc2Vxbm8pKQotCQkJX19pbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgaWQsIHNl cW5vKTsKKwkJaWYgKCFfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGlkLCBzZXFu bykpCisJCQlfX2k5MTVfdGltZWxpbmVfc3luY19zZXQoJnRsLCBpZCwgc2Vxbm8pOwogCiAJCWNv dW50Kys7CiAJfSB3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKTsKQEAgLTI1 MCw3ICsyMjAsNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQogCWt0ID0ga3Rp bWVfc3ViX25zKGt0LCAoY291bnQgKiBwcm5nMzJfMU0gKiAyKSA+PiAyMCk7CiAJcHJfaW5mbygi JXM6ICVsdSByZXBlYXRlZCBpbnNlcnQvbG9va3VwcywgJWxsdW5zL29wXG4iLAogCQlfX2Z1bmNf XywgY291bnQsIChsb25nIGxvbmcpZGl2NjRfdWwoa3RpbWVfdG9fbnMoa3QpLCBjb3VudCkpOwot CW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7CisJbW9ja190aW1lbGluZV9maW5pKCZ0bCk7CiAJ Y29uZF9yZXNjaGVkKCk7CiAKIAkvKiBCZW5jaG1hcmsgc2VhcmNoaW5nIGZvciBhIGtub3duIGNv bnRleHQgaWQgYW5kIGNoYW5naW5nIHRoZSBzZXFubyAqLwpAQCAtMjU4LDkgKzIyOCw3IEBAIHN0 YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCiAJICAgICAoeyBpbnQgdG1wID0gbGFzdF9v cmRlcjsgbGFzdF9vcmRlciA9IG9yZGVyOyBvcmRlciArPSB0bXA7IH0pKSB7CiAJCXVuc2lnbmVk IGludCBtYXNrID0gQklUKG9yZGVyKSAtIDE7CiAKLQkJdGwgPSBtb2NrX3RpbWVsaW5lKDApOwot CQlpZiAoIXRsKQotCQkJcmV0dXJuIC1FTk9NRU07CisJCW1vY2tfdGltZWxpbmVfaW5pdCgmdGws IDApOwogCiAJCWNvdW50ID0gMDsKIAkJa3QgPSBrdGltZV9nZXQoKTsKQEAgLTI3Miw4ICsyNDAs OCBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQogCQkJICovCiAJCQl1NjQgaWQg PSAodTY0KShjb3VudCAmIG1hc2spIDw8IG9yZGVyOwogCi0JCQlfX2ludGVsX3RpbWVsaW5lX3N5 bmNfaXNfbGF0ZXIodGwsIGlkLCAwKTsKLQkJCV9faW50ZWxfdGltZWxpbmVfc3luY19zZXQodGws IGlkLCAwKTsKKwkJCV9faTkxNV90aW1lbGluZV9zeW5jX2lzX2xhdGVyKCZ0bCwgaWQsIDApOwor CQkJX19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0KCZ0bCwgaWQsIDApOwogCiAJCQljb3VudCsrOwog CQl9IHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpOwpAQCAtMjgxLDcgKzI0 OSw3IEBAIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCiAJCXByX2luZm8oIiVzOiAl bHUgY3ljbGljLyVkIGluc2VydC9sb29rdXBzLCAlbGx1bnMvb3BcbiIsCiAJCQlfX2Z1bmNfXywg Y291bnQsIG9yZGVyLAogCQkJKGxvbmcgbG9uZylkaXY2NF91bChrdGltZV90b19ucyhrdCksIGNv dW50KSk7Ci0JCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7CisJCW1vY2tfdGltZWxpbmVfZmlu aSgmdGwpOwogCQljb25kX3Jlc2NoZWQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfZW5naW5lLmMKaW5kZXggNmExMGNiNzM0YzM1Li4zMWNjMjEwZDUxZTkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCkBAIC0y NSw2ICsyNSwxMSBAQAogI2luY2x1ZGUgIm1vY2tfZW5naW5lLmgiCiAjaW5jbHVkZSAibW9ja19y ZXF1ZXN0LmgiCiAKK3N0cnVjdCBtb2NrX3JpbmcgeworCXN0cnVjdCBpbnRlbF9yaW5nIGJhc2U7 CisJc3RydWN0IGk5MTVfdGltZWxpbmUgdGltZWxpbmU7Cit9OworCiBzdGF0aWMgc3RydWN0IG1v Y2tfcmVxdWVzdCAqZmlyc3RfcmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSkKIHsK IAlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZlbmdpbmUtPmh3X3F1ZXVlLApAQCAt MTI1LDcgKzEzMCw3IEBAIHN0YXRpYyB2b2lkIG1vY2tfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfcmluZyAqbW9ja19yaW5n KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAljb25zdCB1bnNpZ25lZCBsb25n IHN6ID0gUEFHRV9TSVpFIC8gMjsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKKwlzdHJ1Y3Qg bW9ja19yaW5nICpyaW5nOwogCiAJQlVJTERfQlVHX09OKE1JTl9TUEFDRV9GT1JfQUREX1JFUVVF U1QgPiBzeik7CiAKQEAgLTEzMywxOCArMTM4LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfcmlu ZyAqbW9ja19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoIXJpbmcp CiAJCXJldHVybiBOVUxMOwogCi0JcmluZy0+c2l6ZSA9IHN6OwotCXJpbmctPmVmZmVjdGl2ZV9z aXplID0gc3o7Ci0JcmluZy0+dmFkZHIgPSAodm9pZCAqKShyaW5nICsgMSk7CisJaTkxNV90aW1l bGluZV9pbml0KGVuZ2luZS0+aTkxNSwgJnJpbmctPnRpbWVsaW5lLCBlbmdpbmUtPm5hbWUpOwor CisJcmluZy0+YmFzZS5zaXplID0gc3o7CisJcmluZy0+YmFzZS5lZmZlY3RpdmVfc2l6ZSA9IHN6 OworCXJpbmctPmJhc2UudmFkZHIgPSAodm9pZCAqKShyaW5nICsgMSk7CisJcmluZy0+YmFzZS50 aW1lbGluZSA9ICZyaW5nLT50aW1lbGluZTsKIAotCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1 ZXN0X2xpc3QpOwotCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOworCUlOSVRfTElTVF9I RUFEKCZyaW5nLT5iYXNlLnJlcXVlc3RfbGlzdCk7CisJaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uo JnJpbmctPmJhc2UpOwogCi0JcmV0dXJuIHJpbmc7CisJcmV0dXJuICZyaW5nLT5iYXNlOwogfQog Ci1zdGF0aWMgdm9pZCBtb2NrX3JpbmdfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKK3N0 YXRpYyB2b2lkIG1vY2tfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpiYXNlKQogeworCXN0 cnVjdCBtb2NrX3JpbmcgKnJpbmcgPSBjb250YWluZXJfb2YoYmFzZSwgdHlwZW9mKCpyaW5nKSwg YmFzZSk7CisKKwlpOTE1X3RpbWVsaW5lX2ZpbmkoJnJpbmctPnRpbWVsaW5lKTsKIAlrZnJlZShy aW5nKTsKIH0KIApAQCAtMTczLDggKzE4NCw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1v Y2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWVuZ2luZS0+YmFzZS5l bWl0X2JyZWFkY3J1bWIgPSBtb2NrX2VtaXRfYnJlYWRjcnVtYjsKIAllbmdpbmUtPmJhc2Uuc3Vi bWl0X3JlcXVlc3QgPSBtb2NrX3N1Ym1pdF9yZXF1ZXN0OwogCi0JaW50ZWxfZW5naW5lX2luaXRf dGltZWxpbmUoJmVuZ2luZS0+YmFzZSk7Ci0KKwlpOTE1X3RpbWVsaW5lX2luaXQoaTkxNSwgJmVu Z2luZS0+YmFzZS50aW1lbGluZSwgZW5naW5lLT5iYXNlLm5hbWUpOwogCWludGVsX2VuZ2luZV9p bml0X2JyZWFkY3J1bWJzKCZlbmdpbmUtPmJhc2UpOwogCWVuZ2luZS0+YmFzZS5icmVhZGNydW1i cy5tb2NrID0gdHJ1ZTsgLyogcHJldmVudCB0b3VjaGluZyBIVyBmb3IgaXJxcyAqLwogCkBAIC0x OTEsNiArMjAxLDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIGVycl9icmVhZGNydW1iczoKIAlpbnRlbF9lbmdp bmVfZmluaV9icmVhZGNydW1icygmZW5naW5lLT5iYXNlKTsKKwlpOTE1X3RpbWVsaW5lX2Zpbmko JmVuZ2luZS0+YmFzZS50aW1lbGluZSk7CiAJa2ZyZWUoZW5naW5lKTsKIAlyZXR1cm4gTlVMTDsK IH0KQEAgLTIyOSw2ICsyNDAsNyBAQCB2b2lkIG1vY2tfZW5naW5lX2ZyZWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCW1vY2tfcmluZ19mcmVlKGVuZ2luZS0+YnVmZmVyKTsKIAog CWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVuZ2luZSk7CisJaTkxNV90aW1lbGluZV9m aW5pKCZlbmdpbmUtPnRpbWVsaW5lKTsKIAogCWtmcmVlKGVuZ2luZSk7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKaW5kZXggZjExYzgz ZThmZjMyLi5hNjYyYzA0NTBlNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKQEAgLTczLDEwICs3Myw4IEBAIHN0YXRpYyB2b2lkIG1v Y2tfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCW1vY2tfZmluaV9nZ3R0KGk5MTUpOwotCWk5MTVf Z2VtX3RpbWVsaW5lX2ZpbmkoJmk5MTUtPmd0LmxlZ2FjeV90aW1lbGluZSk7Ci0JaTkxNV9nZW1f dGltZWxpbmVfZmluaSgmaTkxNS0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5lKTsKLQlXQVJOX09OKCFs aXN0X2VtcHR5KCZpOTE1LT5ndC50aW1lbGluZXMpKTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOworCVdBUk5fT04oIWxpc3RfZW1wdHkoJmk5MTUtPmd0LnRpbWVsaW5l cykpOwogCiAJZGVzdHJveV93b3JrcXVldWUoaTkxNS0+d3EpOwogCkBAIC0yMzAsMTIgKzIyOCw2 IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKIAlJTklU X0xJU1RfSEVBRCgmaTkxNS0+Z3QuYWN0aXZlX3JpbmdzKTsKIAogCW11dGV4X2xvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWVyciA9IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXRfX2dsb2Jh bChpOTE1KTsKLQlpZiAoZXJyKSB7Ci0JCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Ci0JCWdvdG8gZXJyX3ByaW9yaXRpZXM7Ci0JfQotCiAJbW9ja19pbml0X2dndHQoaTkx NSk7CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMKaW5kZXggNDdiMWY0N2M1 ODEyLi5kY2YzYjE2ZjVhMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX3RpbWVsaW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfdGltZWxpbmUuYwpAQCAtMSw0NSArMSwyOCBAQAogLyoKLSAqIENvcHlyaWdodCDCqSAy MDE3IEludGVsIENvcnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwotICogSU4gVEhF IFNPRlRXQVJFLgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogICoKKyAqIENvcHly aWdodCDCqSAyMDE3LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KICAqLwogCisjaW5jbHVkZSAiLi4v aTkxNV90aW1lbGluZS5oIgorCiAjaW5jbHVkZSAibW9ja190aW1lbGluZS5oIgogCi1zdHJ1Y3Qg aW50ZWxfdGltZWxpbmUgKm1vY2tfdGltZWxpbmUodTY0IGNvbnRleHQpCit2b2lkIG1vY2tfdGlt ZWxpbmVfaW5pdChzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsIHU2NCBjb250ZXh0KQog ewotCXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgY2xhc3M7Ci0Jc3RydWN0IGludGVsX3Rp bWVsaW5lICp0bDsKKwl0aW1lbGluZS0+ZmVuY2VfY29udGV4dCA9IGNvbnRleHQ7CisKKwlzcGlu X2xvY2tfaW5pdCgmdGltZWxpbmUtPmxvY2spOwogCi0JdGwgPSBremFsbG9jKHNpemVvZigqdGwp LCBHRlBfS0VSTkVMKTsKLQlpZiAoIXRsKQotCQlyZXR1cm4gTlVMTDsKKwlpbml0X3JlcXVlc3Rf YWN0aXZlKCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LCBOVUxMKTsKKwlJTklUX0xJU1RfSEVBRCgm dGltZWxpbmUtPnJlcXVlc3RzKTsKIAotCV9faW50ZWxfdGltZWxpbmVfaW5pdCh0bCwgTlVMTCwg Y29udGV4dCwgJmNsYXNzLCAibW9jayIpOworCWk5MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+ c3luYyk7CiAKLQlyZXR1cm4gdGw7CisJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5saW5rKTsK IH0KIAotdm9pZCBtb2NrX3RpbWVsaW5lX2Rlc3Ryb3koc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bCkKK3ZvaWQgbW9ja190aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSkKIHsKLQlfX2ludGVsX3RpbWVsaW5lX2ZpbmkodGwpOwotCWtmcmVlKHRsKTsKKwlpOTE1X3Rp bWVsaW5lX2ZpbmkodGltZWxpbmUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX3RpbWVsaW5lLmgKaW5kZXggYzI3ZmY0NjM5YjhiLi5iNmRlYWE2MTExMGQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuaApAQCAt MSwzMyArMSwxNSBAQAogLyoKLSAqIENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9u Ci0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBT b2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0g KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwotICogSU4gVEhFIFNPRlRXQVJFLgorICogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IE1JVAogICoKKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggSW50 ZWwgQ29ycG9yYXRpb24KICAqLwogCiAjaWZuZGVmIF9fTU9DS19USU1FTElORV9fCiAjZGVmaW5l IF9fTU9DS19USU1FTElORV9fCiAKLSNpbmNsdWRlICIuLi9pOTE1X2dlbV90aW1lbGluZS5oIgor c3RydWN0IGk5MTVfdGltZWxpbmU7CiAKLXN0cnVjdCBpbnRlbF90aW1lbGluZSAqbW9ja190aW1l bGluZSh1NjQgY29udGV4dCk7Ci12b2lkIG1vY2tfdGltZWxpbmVfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsKTsKK3ZvaWQgbW9ja190aW1lbGluZV9pbml0KHN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0aW1lbGluZSwgdTY0IGNvbnRleHQpOwordm9pZCBtb2NrX3RpbWVsaW5lX2Zpbmko c3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKTsKIAogI2VuZGlmIC8qICFfX01PQ0tfVElN RUxJTkVfXyAqLwotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK