From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 4/4] drm/i915: Lift timeline into intel_context Date: Fri, 9 Aug 2019 16:41:46 +0100 Message-ID: <20190809154146.16397-4-chris@chris-wilson.co.uk> References: <20190809154146.16397-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 CA90E6EE33 for ; Fri, 9 Aug 2019 15:41:59 +0000 (UTC) In-Reply-To: <20190809154146.16397-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 Cc: Matthew Auld List-Id: intel-gfx@lists.freedesktop.org TW92ZSB0aGUgdGltZWxpbmUgZnJvbSBiZWluZyBpbnNpZGUgdGhlIGludGVsX3JpbmcgdG8gaW50 ZWxfY29udGV4dAppdHNlbGYuIFRoaXMgc2F2ZXMgbXVjaCBwb2ludGVyIGRhbmNpbmcgYW5kIG1h a2VzIHRoZSByZWxhdGlvbnMgb2YgdGhlCmNvbnRleHQgdG8gaXRzIHRpbWVsaW5lIG11Y2ggY2xl YXJlci4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpSZXZpZXdlZC1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMgICB8IDM1ICsr KysrKysrLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAg fCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwg MjEgKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oICAgICAg IHwgIDggKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgg fCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCAgICAgICAgfCAg NCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgIDEg LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggIHwgIDggKyst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCAzMyArKysr LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCA2 MyArKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2lu ZS5jICAgICAgICAgfCA2MiArKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYyAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2FjdGl2ZS5jICAgICAgICAgICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICAgICAgIHwgMTAgKy0tCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9ldmljdC5jICAgfCAxOSArKystLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDE0MCBp bnNlcnRpb25zKCspLCAxMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNjI4ZDY5YTRkMzY4Li41ZGJkODk4OWE0MjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNDg5LDYg KzQ4OSwyOSBAQCBzdGF0aWMgdm9pZCBfX2Fzc2lnbl9wcGd0dChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAogCQlpOTE1X3ZtX3B1dCh2bSk7CiB9CiAKK3N0YXRpYyB2b2lkIF9fc2V0X3Rp bWVsaW5lKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqKmRzdCwKKwkJCSAgIHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqc3JjKQoreworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqb2xkID0gKmRzdDsKKwor CSpkc3QgPSBzcmMgPyBpbnRlbF90aW1lbGluZV9nZXQoc3JjKSA6IE5VTEw7CisKKwlpZiAob2xk KQorCQlpbnRlbF90aW1lbGluZV9wdXQob2xkKTsKK30KKworc3RhdGljIHZvaWQgX19hcHBseV90 aW1lbGluZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHZvaWQgKnRpbWVsaW5lKQoreworCV9f c2V0X3RpbWVsaW5lKCZjZS0+dGltZWxpbmUsIHRpbWVsaW5lKTsKK30KKworc3RhdGljIHZvaWQg X19hc3NpZ25fdGltZWxpbmUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCSAgICAg IHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUpCit7CisJX19zZXRfdGltZWxpbmUoJmN0 eC0+dGltZWxpbmUsIHRpbWVsaW5lKTsKKwljb250ZXh0X2FwcGx5X2FsbChjdHgsIF9fYXBwbHlf dGltZWxpbmUsIHRpbWVsaW5lKTsKK30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICoKIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdW5zaWduZWQgaW50IGZsYWdzKQogewpAQCAtNTMxLDcgKzU1NCw4IEBAIGk5MTVfZ2Vt X2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWdu ZWQgaW50IGZsYWdzKQogCQkJcmV0dXJuIEVSUl9DQVNUKHRpbWVsaW5lKTsKIAkJfQogCi0JCWN0 eC0+dGltZWxpbmUgPSB0aW1lbGluZTsKKwkJX19hc3NpZ25fdGltZWxpbmUoY3R4LCB0aW1lbGlu ZSk7CisJCWludGVsX3RpbWVsaW5lX3B1dCh0aW1lbGluZSk7CiAJfQogCiAJdHJhY2VfaTkxNV9j b250ZXh0X2NyZWF0ZShjdHgpOwpAQCAtMTkzMSwxMyArMTk1NSw4IEBAIHN0YXRpYyBpbnQgY2xv bmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZHN0LAogc3RhdGljIGludCBjbG9uZV90 aW1lbGluZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZHN0LAogCQkJICBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqc3JjKQogewotCWlmIChzcmMtPnRpbWVsaW5lKSB7Ci0JCUdFTV9CVUdfT04o c3JjLT50aW1lbGluZSA9PSBkc3QtPnRpbWVsaW5lKTsKLQotCQlpZiAoZHN0LT50aW1lbGluZSkK LQkJCWludGVsX3RpbWVsaW5lX3B1dChkc3QtPnRpbWVsaW5lKTsKLQkJZHN0LT50aW1lbGluZSA9 IGludGVsX3RpbWVsaW5lX2dldChzcmMtPnRpbWVsaW5lKTsKLQl9CisJaWYgKHNyYy0+dGltZWxp bmUpCisJCV9fYXNzaWduX3RpbWVsaW5lKGRzdCwgc3JjLT50aW1lbGluZSk7CiAKIAlyZXR1cm4g MDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVj YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5j CmluZGV4IDJmYTA4MzU3OTQ0ZS4uMWJkMjE4N2FjOGQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTIxODIsNyArMjE4Miw3IEBAIHN0 YXRpYyBpbnQgZWJfcGluX2NvbnRleHQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKIHN0YXRpYyB2b2lkIGViX3VucGluX2NvbnRleHQoc3RydWN0 IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gZWIt PmNvbnRleHQ7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9IGNlLT5yaW5nLT50aW1lbGlu ZTsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gY2UtPnRpbWVsaW5lOwogCiAJbXV0ZXhf bG9jaygmdGwtPm11dGV4KTsKIAlpbnRlbF9jb250ZXh0X2V4aXQoY2UpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCmluZGV4IDZkMWQ0ZThkYmZjOS4uNzc4MzNmMTU1OGE5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCkBAIC02OCw3ICs2OCw3 IEBAIGludCBfX2ludGVsX2NvbnRleHRfZG9fcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK IAkJCWdvdG8gZXJyOwogCiAJCUdFTV9UUkFDRSgiJXMgY29udGV4dDolbGx4IHBpbiByaW5nOnto ZWFkOiUwNHgsIHRhaWw6JTA0eH1cbiIsCi0JCQkgIGNlLT5lbmdpbmUtPm5hbWUsIGNlLT5yaW5n LT50aW1lbGluZS0+ZmVuY2VfY29udGV4dCwKKwkJCSAgY2UtPmVuZ2luZS0+bmFtZSwgY2UtPnRp bWVsaW5lLT5mZW5jZV9jb250ZXh0LAogCQkJICBjZS0+cmluZy0+aGVhZCwgY2UtPnJpbmctPnRh aWwpOwogCiAJCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGNlLT5nZW1fY29udGV4dCk7IC8qIGZvciBj dHgtPnBwZ3R0ICovCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgaW50ZWxfY29udGV4dF91bnBpbihz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAKIAlpZiAobGlrZWx5KGF0b21pY19kZWNfYW5kX3Rl c3QoJmNlLT5waW5fY291bnQpKSkgewogCQlHRU1fVFJBQ0UoIiVzIGNvbnRleHQ6JWxseCByZXRp cmVcbiIsCi0JCQkgIGNlLT5lbmdpbmUtPm5hbWUsIGNlLT5yaW5nLT50aW1lbGluZS0+ZmVuY2Vf Y29udGV4dCk7CisJCQkgIGNlLT5lbmdpbmUtPm5hbWUsIGNlLT50aW1lbGluZS0+ZmVuY2VfY29u dGV4dCk7CiAKIAkJY2UtPm9wcy0+dW5waW4oY2UpOwogCkBAIC0xNDMsMTEgKzE0MywxMiBAQCBz dGF0aWMgdm9pZCBfX2ludGVsX2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0 aXZlKQogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGNvbnRhaW5lcl9vZihhY3RpdmUsIHR5 cGVvZigqY2UpLCBhY3RpdmUpOwogCiAJR0VNX1RSQUNFKCIlcyBjb250ZXh0OiVsbHggcmV0aXJl XG4iLAotCQkgIGNlLT5lbmdpbmUtPm5hbWUsIGNlLT5yaW5nLT50aW1lbGluZS0+ZmVuY2VfY29u dGV4dCk7CisJCSAgY2UtPmVuZ2luZS0+bmFtZSwgY2UtPnRpbWVsaW5lLT5mZW5jZV9jb250ZXh0 KTsKIAogCWlmIChjZS0+c3RhdGUpCiAJCV9fY29udGV4dF91bnBpbl9zdGF0ZShjZS0+c3RhdGUp OwogCisJaW50ZWxfdGltZWxpbmVfdW5waW4oY2UtPnRpbWVsaW5lKTsKIAlpbnRlbF9yaW5nX3Vu cGluKGNlLT5yaW5nKTsKIAlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiB9CkBAIC0xNjMsMTUgKzE2 NCwyMSBAQCBzdGF0aWMgaW50IF9faW50ZWxfY29udGV4dF9hY3RpdmUoc3RydWN0IGk5MTVfYWN0 aXZlICphY3RpdmUpCiAJaWYgKGVycikKIAkJZ290byBlcnJfcHV0OwogCisJZXJyID0gaW50ZWxf dGltZWxpbmVfcGluKGNlLT50aW1lbGluZSk7CisJaWYgKGVycikKKwkJZ290byBlcnJfcmluZzsK KwogCWlmICghY2UtPnN0YXRlKQogCQlyZXR1cm4gMDsKIAogCWVyciA9IF9fY29udGV4dF9waW5f c3RhdGUoY2UtPnN0YXRlKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycl9yaW5nOworCQlnb3RvIGVy cl90aW1lbGluZTsKIAogCXJldHVybiAwOwogCitlcnJfdGltZWxpbmU6CisJaW50ZWxfdGltZWxp bmVfdW5waW4oY2UtPnRpbWVsaW5lKTsKIGVycl9yaW5nOgogCWludGVsX3JpbmdfdW5waW4oY2Ut PnJpbmcpOwogZXJyX3B1dDoKQEAgLTIxOCw2ICsyMjUsOCBAQCBpbnRlbF9jb250ZXh0X2luaXQo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCiAJY2UtPmdlbV9jb250ZXh0ID0gY3R4OwogCWNl LT52bSA9IGk5MTVfdm1fZ2V0KGN0eC0+dm0gPzogJmVuZ2luZS0+Z3QtPmdndHQtPnZtKTsKKwlp ZiAoY3R4LT50aW1lbGluZSkKKwkJY2UtPnRpbWVsaW5lID0gaW50ZWxfdGltZWxpbmVfZ2V0KGN0 eC0+dGltZWxpbmUpOwogCiAJY2UtPmVuZ2luZSA9IGVuZ2luZTsKIAljZS0+b3BzID0gZW5naW5l LT5jb3BzOwpAQCAtMjM1LDYgKzI0NCw4IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCiAKIHZvaWQgaW50ZWxfY29udGV4dF9maW5pKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKIHsKKwlpZiAoY2UtPnRpbWVsaW5lKQorCQlpbnRlbF90aW1lbGluZV9wdXQo Y2UtPnRpbWVsaW5lKTsKIAlpOTE1X3ZtX3B1dChjZS0+dm0pOwogCiAJbXV0ZXhfZGVzdHJveSgm Y2UtPnBpbl9tdXRleCk7CkBAIC0yNzksNyArMjkwLDcgQEAgdm9pZCBpbnRlbF9jb250ZXh0X2V4 aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIGludCBpbnRlbF9jb250ZXh0X3By ZXBhcmVfcmVtb3RlX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJCQkgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9IGNl LT5yaW5nLT50aW1lbGluZTsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gY2UtPnRpbWVs aW5lOwogCWludCBlcnI7CiAKIAkvKiBPbmx5IHN1aXRhYmxlIGZvciB1c2UgaW4gcmVtb3RlbHkg bW9kaWZ5aW5nIHRoaXMgY29udGV4dCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29u dGV4dC5oCmluZGV4IDEzZjI4ZGQzMTZiYy4uOWZhOGI1ODhmMThlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaW50ZWxfY29udGV4dF9wdXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCiBz dGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKIGludGVsX2NvbnRleHRfdGltZWxpbmVfbG9j ayhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCi0JX19hY3F1aXJlcygmY2UtPnJpbmctPnRpbWVs aW5lLT5tdXRleCkKKwlfX2FjcXVpcmVzKCZjZS0+dGltZWxpbmUtPm11dGV4KQogewotCXJldHVy biBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmNlLT5yaW5nLT50aW1lbGluZS0+bXV0ZXgpOwor CXJldHVybiBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmNlLT50aW1lbGluZS0+bXV0ZXgpOwog fQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF90aW1lbGluZV91bmxvY2soc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQotCV9fcmVsZWFzZXMoJmNlLT5yaW5nLT50aW1lbGluZS0+ bXV0ZXgpCisJX19yZWxlYXNlcygmY2UtPnRpbWVsaW5lLT5tdXRleCkKIHsKLQltdXRleF91bmxv Y2soJmNlLT5yaW5nLT50aW1lbGluZS0+bXV0ZXgpOworCW11dGV4X3VubG9jaygmY2UtPnRpbWVs aW5lLT5tdXRleCk7CiB9CiAKIGludCBpbnRlbF9jb250ZXh0X3ByZXBhcmVfcmVtb3RlX3JlcXVl c3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfY29udGV4dF90eXBlcy5oCmluZGV4IGNmZjYyMzhjMjEzYS4uYTYzMmIyMGVjNGQ4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oCkBAIC01 Myw2ICs1Myw3IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0IHsKIAogCXN0cnVjdCBpOTE1X3ZtYSAq c3RhdGU7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CisJc3RydWN0IGludGVsX3RpbWVsaW5l ICp0aW1lbGluZTsKIAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAjZGVmaW5lIENPTlRFWFRfQUxM T0NfQklUIDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKaW5kZXggMzdjMzkx Y2VlNDQxLi5lMTIyOGIwZTU3N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZS5oCkBAIC0xOTYsOSArMTk2LDcgQEAgaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2Uoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgcmVnLCB1MzIgdmFsdWUpCiAjZGVmaW5lIENOTF9I V1NfQ1NCX1dSSVRFX0lOREVYCQkweDJmCiAKIHN0cnVjdCBpbnRlbF9yaW5nICoKLWludGVsX2Vu Z2luZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkgc3Ry dWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwKLQkJCSBpbnQgc2l6ZSk7CitpbnRlbF9lbmdp bmVfY3JlYXRlX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSk7 CiBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwogdm9pZCBpbnRl bF9yaW5nX3Jlc2V0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgdGFpbCk7CiB1bnNpZ25l ZCBpbnQgaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBlY2U3MzFhYjdi M2EuLjdkMTc0YWYzMGY4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X2NzLmMKQEAgLTY4MCw3ICs2ODAsNiBAQCBzdGF0aWMgaW50IG1lYXN1cmVfYnJlYWRjcnVtYl9k dyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWdvdG8gb3V0X2ZyYW1lOwogCiAJ SU5JVF9MSVNUX0hFQUQoJmZyYW1lLT5yaW5nLnJlcXVlc3RfbGlzdCk7Ci0JZnJhbWUtPnJpbmcu dGltZWxpbmUgPSAmZnJhbWUtPnRpbWVsaW5lOwogCWZyYW1lLT5yaW5nLnZhZGRyID0gZnJhbWUt PmNzOwogCWZyYW1lLT5yaW5nLnNpemUgPSBzaXplb2YoZnJhbWUtPmNzKTsKIAlmcmFtZS0+cmlu Zy5lZmZlY3RpdmVfc2l6ZSA9IGZyYW1lLT5yaW5nLnNpemU7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCmluZGV4IGM3OWZkMWRhZmE4OC4uYTBmMzcyODA3 ZGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlw ZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApA QCAtNjksNyArNjksNiBAQCBzdHJ1Y3QgaW50ZWxfcmluZyB7CiAJc3RydWN0IGk5MTVfdm1hICp2 bWE7CiAJdm9pZCAqdmFkZHI7CiAKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOwog CXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdF9saXN0OwogCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZl X2xpbms7CiAKQEAgLTI4Niw4ICsyODUsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAog CXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7CiAKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwot CiAJc3RydWN0IHsKIAkJc3BpbmxvY2tfdCBsb2NrOwogCQlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVl c3RzOwpAQCAtMzA2LDYgKzMwMywxMSBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9zdGF0ZTsKIAl2b2lkICpwaW5uZWRfZGVm YXVsdF9zdGF0ZTsKIAorCXN0cnVjdCB7CisJCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCQlz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOworCX0gbGVnYWN5OworCiAJLyogUmF0aGVy IHRoYW4gaGF2ZSBldmVyeSBjbGllbnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVwdHMsCiAJ ICogd2l0aCB0aGUgaGVyZCB3YWtpbmcgYWZ0ZXIgZXZlcnkgaW50ZXJydXB0IGFuZCBlYWNoIGRv aW5nIHRoZQogCSAqIGhlYXZ5d2VpZ2h0IHNlcW5vIGRhbmNlLCB3ZSBkZWxlZ2F0ZSB0aGUgdGFz ayAob2YgYmVpbmcgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IDlhOWE4 Zjg2YzA2Ny4uMmRkM2E4ZDY5ODIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpA QCAtMjgyMSw5ICsyODIxLDYgQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbl9z ZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JLyogSW50ZW50aW9uYWxs eSBsZWZ0IGJsYW5rLiAqLwotCWVuZ2luZS0+YnVmZmVyID0gTlVMTDsKLQogCXRhc2tsZXRfaW5p dCgmZW5naW5lLT5leGVjbGlzdHMudGFza2xldCwKIAkJICAgICBleGVjbGlzdHNfc3VibWlzc2lv bl90YXNrbGV0LCAodW5zaWduZWQgbG9uZyllbmdpbmUpOwogCXRpbWVyX3NldHVwKCZlbmdpbmUt PmV4ZWNsaXN0cy50aW1lciwgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGltZXIsIDApOwpAQCAtMzA3 MSwyMyArMzA2OCwxMyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgc3RydWN0IGludGVsX3RpbWVsaW5lICoK LWdldF90aW1lbGluZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQotewotCWlmIChjdHgtPnRpbWVsaW5lKQotCQlyZXR1cm4gaW50ZWxfdGltZWxpbmVf Z2V0KGN0eC0+dGltZWxpbmUpOwotCWVsc2UKLQkJcmV0dXJuIGludGVsX3RpbWVsaW5lX2NyZWF0 ZShndCwgTlVMTCk7Ci19Ci0KIHN0YXRpYyBpbnQgX19leGVjbGlzdHNfY29udGV4dF9hbGxvYyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmo7CisJc3Ry dWN0IGludGVsX3JpbmcgKnJpbmc7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdTMyIGNvbnRl eHRfc2l6ZTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxp bmUgKnRpbWVsaW5lOwogCWludCByZXQ7CiAKIAlHRU1fQlVHX09OKCFjZS0+c3RhdGUpOwpAQCAt MzEwOSwxNSArMzA5NiwxOSBAQCBzdGF0aWMgaW50IF9fZXhlY2xpc3RzX2NvbnRleHRfYWxsb2Mo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQlnb3RvIGVycm9yX2RlcmVmX29iajsKIAl9CiAK LQl0aW1lbGluZSA9IGdldF90aW1lbGluZShjZS0+Z2VtX2NvbnRleHQsIGVuZ2luZS0+Z3QpOwot CWlmIChJU19FUlIodGltZWxpbmUpKSB7Ci0JCXJldCA9IFBUUl9FUlIodGltZWxpbmUpOwotCQln b3RvIGVycm9yX2RlcmVmX29iajsKKwlpZiAoIWNlLT50aW1lbGluZSkgeworCQlzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsOworCisJCXRsID0gaW50ZWxfdGltZWxpbmVfY3JlYXRlKGVuZ2luZS0+ Z3QsIE5VTEwpOworCQlpZiAoSVNfRVJSKHRsKSkgeworCQkJcmV0ID0gUFRSX0VSUih0bCk7CisJ CQlnb3RvIGVycm9yX2RlcmVmX29iajsKKwkJfQorCisJCWNlLT50aW1lbGluZSA9IHRsOwogCX0K IAotCXJpbmcgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmcoZW5naW5lLCB0aW1lbGluZSwKLQkJ CQkJKHVuc2lnbmVkIGxvbmcpY2UtPnJpbmcpOwotCWludGVsX3RpbWVsaW5lX3B1dCh0aW1lbGlu ZSk7CisJcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhlbmdpbmUsICh1bnNpZ25lZCBs b25nKWNlLT5yaW5nKTsKIAlpZiAoSVNfRVJSKHJpbmcpKSB7CiAJCXJldCA9IFBUUl9FUlIocmlu Zyk7CiAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDU5Mjk5ZjI4NDliYi4uMDVhYjUxOGJhYjc4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC02MzYsNyArNjM2LDcg QEAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHN0YXRpYyBpbnQgeGNzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwotCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gZW5naW5lLT5idWZmZXI7CisJc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSBlbmdpbmUtPmxlZ2FjeS5yaW5nOwogCWludCByZXQgPSAwOwogCiAJR0VNX1RS QUNFKCIlczogcmluZzp7SEVBRDolMDR4LCBUQUlMOiUwNHh9XG4iLApAQCAtODMyLDEyICs4MzIs MTIgQEAgc3RhdGljIHZvaWQgcmVzZXRfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGJvb2wgc3RhbGxlZCkKIAkJICovCiAJCV9faTkxNV9yZXF1ZXN0X3Jlc2V0KHJxLCBzdGFs bGVkKTsKIAotCQlHRU1fQlVHX09OKHJxLT5yaW5nICE9IGVuZ2luZS0+YnVmZmVyKTsKKwkJR0VN X0JVR19PTihycS0+cmluZyAhPSBlbmdpbmUtPmxlZ2FjeS5yaW5nKTsKIAkJaGVhZCA9IHJxLT5o ZWFkOwogCX0gZWxzZSB7Ci0JCWhlYWQgPSBlbmdpbmUtPmJ1ZmZlci0+dGFpbDsKKwkJaGVhZCA9 IGVuZ2luZS0+bGVnYWN5LnJpbmctPnRhaWw7CiAJfQotCWVuZ2luZS0+YnVmZmVyLT5oZWFkID0g aW50ZWxfcmluZ193cmFwKGVuZ2luZS0+YnVmZmVyLCBoZWFkKTsKKwllbmdpbmUtPmxlZ2FjeS5y aW5nLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKGVuZ2luZS0+bGVnYWN5LnJpbmcsIGhlYWQpOwog CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwog fQpAQCAtMTE5MiwxMCArMTE5Miw2IEBAIGludCBpbnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZykKIAlpZiAoYXRvbWljX2ZldGNoX2luYygmcmluZy0+cGluX2NvdW50KSkKIAkJ cmV0dXJuIDA7CiAKLQlyZXQgPSBpbnRlbF90aW1lbGluZV9waW4ocmluZy0+dGltZWxpbmUpOwot CWlmIChyZXQpCi0JCWdvdG8gZXJyX3VucGluOwotCiAJZmxhZ3MgPSBQSU5fR0xPQkFMOwogCiAJ LyogUmluZyB3cmFwYXJvdW5kIGF0IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3 aHkuICovCkBAIC0xMjA4LDcgKzEyMDQsNyBAQCBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcpCiAKIAlyZXQgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBmbGFncyk7 CiAJaWYgKHVubGlrZWx5KHJldCkpCi0JCWdvdG8gZXJyX3RpbWVsaW5lOworCQlnb3RvIGVycl91 bnBpbjsKIAogCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpKQogCQlhZGRy ID0gKHZvaWQgX19mb3JjZSAqKWk5MTVfdm1hX3Bpbl9pb21hcCh2bWEpOwpAQCAtMTIyNSwxMyAr MTIyMSwxMCBAQCBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCiAJ R0VNX0JVR19PTihyaW5nLT52YWRkcik7CiAJcmluZy0+dmFkZHIgPSBhZGRyOwogCi0JR0VNX1RS QUNFKCJyaW5nOiVsbHggcGluXG4iLCByaW5nLT50aW1lbGluZS0+ZmVuY2VfY29udGV4dCk7CiAJ cmV0dXJuIDA7CiAKIGVycl9yaW5nOgogCWk5MTVfdm1hX3VucGluKHZtYSk7Ci1lcnJfdGltZWxp bmU6Ci0JaW50ZWxfdGltZWxpbmVfdW5waW4ocmluZy0+dGltZWxpbmUpOwogZXJyX3VucGluOgog CWF0b21pY19kZWMoJnJpbmctPnBpbl9jb3VudCk7CiAJcmV0dXJuIHJldDsKQEAgLTEyNTQsOCAr MTI0Nyw2IEBAIHZvaWQgaW50ZWxfcmluZ191bnBpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykK IAlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJnJpbmctPnBpbl9jb3VudCkpCiAJCXJldHVybjsK IAotCUdFTV9UUkFDRSgicmluZzolbGx4IHVucGluXG4iLCByaW5nLT50aW1lbGluZS0+ZmVuY2Vf Y29udGV4dCk7Ci0KIAkvKiBEaXNjYXJkIGFueSB1bnVzZWQgYnl0ZXMgYmV5b25kIHRoYXQgc3Vi bWl0dGVkIHRvIGh3LiAqLwogCWludGVsX3JpbmdfcmVzZXQocmluZywgcmluZy0+dGFpbCk7CiAK QEAgLTEyNzAsOCArMTI2MSw2IEBAIHZvaWQgaW50ZWxfcmluZ191bnBpbihzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZykKIAogCWk5MTVfdm1hX3VucGluKHZtYSk7CiAJaTkxNV92bWFfbWFrZV9wdXJn ZWFibGUodm1hKTsKLQotCWludGVsX3RpbWVsaW5lX3VucGluKHJpbmctPnRpbWVsaW5lKTsKIH0K IAogc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqY3JlYXRlX3Jpbmdfdm1hKHN0cnVjdCBpOTE1X2dn dHQgKmdndHQsIGludCBzaXplKQpAQCAtMTMwNiw5ICsxMjk1LDcgQEAgc3RhdGljIHN0cnVjdCBp OTE1X3ZtYSAqY3JlYXRlX3Jpbmdfdm1hKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIGludCBzaXpl KQogfQogCiBzdHJ1Y3QgaW50ZWxfcmluZyAqCi1pbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJIHN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGltZWxpbmUsCi0JCQkgaW50IHNpemUpCitpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsK QEAgLTEzMjMsNyArMTMxMCw2IEBAIGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAlrcmVmX2luaXQoJnJpbmctPnJlZik7CiAJSU5JVF9M SVNUX0hFQUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7Ci0JcmluZy0+dGltZWxpbmUgPSBpbnRlbF90 aW1lbGluZV9nZXQodGltZWxpbmUpOwogCiAJcmluZy0+c2l6ZSA9IHNpemU7CiAJLyogV29ya2Fy b3VuZCBhbiBlcnJhdHVtIG9uIHRoZSBpODMwIHdoaWNoIGNhdXNlcyBhIGhhbmcgaWYKQEAgLTEz NTMsNyArMTMzOSw2IEBAIHZvaWQgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBrcmVmICpyZWYpCiAJ aTkxNV92bWFfY2xvc2UocmluZy0+dm1hKTsKIAlpOTE1X3ZtYV9wdXQocmluZy0+dm1hKTsKIAot CWludGVsX3RpbWVsaW5lX3B1dChyaW5nLT50aW1lbGluZSk7CiAJa2ZyZWUocmluZyk7CiB9CiAK QEAgLTE0ODUsOCArMTQ3MCw5IEBAIHN0YXRpYyBpbnQgcmluZ19jb250ZXh0X2FsbG9jKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBj ZS0+ZW5naW5lOwogCiAJLyogT25lIHJpbmdidWZmZXIgdG8gcnVsZSB0aGVtIGFsbCAqLwotCUdF TV9CVUdfT04oIWVuZ2luZS0+YnVmZmVyKTsKLQljZS0+cmluZyA9IGVuZ2luZS0+YnVmZmVyOwor CUdFTV9CVUdfT04oIWVuZ2luZS0+bGVnYWN5LnJpbmcpOworCWNlLT5yaW5nID0gZW5naW5lLT5s ZWdhY3kucmluZzsKKwljZS0+dGltZWxpbmUgPSBpbnRlbF90aW1lbGluZV9nZXQoZW5naW5lLT5s ZWdhY3kudGltZWxpbmUpOwogCiAJR0VNX0JVR19PTighY2UtPnN0YXRlKTsKIAlpZiAoZW5naW5l LT5jb250ZXh0X3NpemUpIHsKQEAgLTIxNjUsOCArMjE1MSwxMSBAQCBzdGF0aWMgdm9pZCByaW5n X2Rlc3Ryb3koc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJaW50ZWxfZW5naW5l X2NsZWFudXBfY29tbW9uKGVuZ2luZSk7CiAKLQlpbnRlbF9yaW5nX3VucGluKGVuZ2luZS0+YnVm ZmVyKTsKLQlpbnRlbF9yaW5nX3B1dChlbmdpbmUtPmJ1ZmZlcik7CisJaW50ZWxfcmluZ191bnBp bihlbmdpbmUtPmxlZ2FjeS5yaW5nKTsKKwlpbnRlbF9yaW5nX3B1dChlbmdpbmUtPmxlZ2FjeS5y aW5nKTsKKworCWludGVsX3RpbWVsaW5lX3VucGluKGVuZ2luZS0+bGVnYWN5LnRpbWVsaW5lKTsK KwlpbnRlbF90aW1lbGluZV9wdXQoZW5naW5lLT5sZWdhY3kudGltZWxpbmUpOwogCiAJa2ZyZWUo ZW5naW5lKTsKIH0KQEAgLTIzNTAsMzIgKzIzMzksNDAgQEAgaW50IGludGVsX3Jpbmdfc3VibWlz c2lvbl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiAJR0VNX0JVR19P Tih0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYik7CiAKLQlyaW5nID0gaW50ZWxfZW5n aW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwgdGltZWxpbmUsIFNaXzE2Syk7Ci0JaW50ZWxfdGltZWxp bmVfcHV0KHRpbWVsaW5lKTsKKwllcnIgPSBpbnRlbF90aW1lbGluZV9waW4odGltZWxpbmUpOwor CWlmIChlcnIpCisJCWdvdG8gZXJyX3RpbWVsaW5lOworCisJcmluZyA9IGludGVsX2VuZ2luZV9j cmVhdGVfcmluZyhlbmdpbmUsIFNaXzE2Syk7CiAJaWYgKElTX0VSUihyaW5nKSkgewogCQllcnIg PSBQVFJfRVJSKHJpbmcpOwotCQlnb3RvIGVycjsKKwkJZ290byBlcnJfdGltZWxpbmVfdW5waW47 CiAJfQogCiAJZXJyID0gaW50ZWxfcmluZ19waW4ocmluZyk7CiAJaWYgKGVycikKIAkJZ290byBl cnJfcmluZzsKIAotCUdFTV9CVUdfT04oZW5naW5lLT5idWZmZXIpOwotCWVuZ2luZS0+YnVmZmVy ID0gcmluZzsKKwlHRU1fQlVHX09OKGVuZ2luZS0+bGVnYWN5LnJpbmcpOworCWVuZ2luZS0+bGVn YWN5LnJpbmcgPSByaW5nOworCWVuZ2luZS0+bGVnYWN5LnRpbWVsaW5lID0gdGltZWxpbmU7CiAK IAllcnIgPSBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oZW5naW5lKTsKIAlpZiAoZXJyKQotCQln b3RvIGVycl91bnBpbjsKKwkJZ290byBlcnJfcmluZ191bnBpbjsKIAotCUdFTV9CVUdfT04ocmlu Zy0+dGltZWxpbmUtPmh3c3BfZ2d0dCAhPSBlbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7CisJR0VN X0JVR19PTih0aW1lbGluZS0+aHdzcF9nZ3R0ICE9IGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsK IAogCXJldHVybiAwOwogCi1lcnJfdW5waW46CitlcnJfcmluZ191bnBpbjoKIAlpbnRlbF9yaW5n X3VucGluKHJpbmcpOwogZXJyX3Jpbmc6CiAJaW50ZWxfcmluZ19wdXQocmluZyk7CitlcnJfdGlt ZWxpbmVfdW5waW46CisJaW50ZWxfdGltZWxpbmVfdW5waW4odGltZWxpbmUpOworZXJyX3RpbWVs aW5lOgorCWludGVsX3RpbWVsaW5lX3B1dCh0aW1lbGluZSk7CiBlcnI6CiAJaW50ZWxfZW5naW5l X2NsZWFudXBfY29tbW9uKGVuZ2luZSk7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9tb2NrX2VuZ2luZS5jCmluZGV4IDc5YmFlZDFhYWYzOC4uYTYzZGQ4YTQyY2Q0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKQEAgLTMyLDExICszMiw2IEBACiAjaW5jbHVk ZSAibW9ja19lbmdpbmUuaCIKICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmgiCiAK LXN0cnVjdCBtb2NrX3JpbmcgewotCXN0cnVjdCBpbnRlbF9yaW5nIGJhc2U7Ci0Jc3RydWN0IGlu dGVsX3RpbWVsaW5lIHRpbWVsaW5lOwotfTsKLQogc3RhdGljIHZvaWQgbW9ja190aW1lbGluZV9w aW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIHsKIAl0bC0+cGluX2NvdW50Kys7CkBAIC01 MSwzNiArNDYsMjIgQEAgc3RhdGljIHZvaWQgbW9ja190aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsKQogc3RhdGljIHN0cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3og PSBQQUdFX1NJWkUgLyAyOwotCXN0cnVjdCBtb2NrX3JpbmcgKnJpbmc7CisJc3RydWN0IGludGVs X3JpbmcgKnJpbmc7CiAKIAlyaW5nID0ga3phbGxvYyhzaXplb2YoKnJpbmcpICsgc3osIEdGUF9L RVJORUwpOwogCWlmICghcmluZykKIAkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoaW50ZWxfdGltZWxp bmVfaW5pdCgmcmluZy0+dGltZWxpbmUsIGVuZ2luZS0+Z3QsIE5VTEwpKSB7Ci0JCWtmcmVlKHJp bmcpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0KLQlrcmVmX2luaXQoJnJpbmctPmJhc2UucmVmKTsK LQlyaW5nLT5iYXNlLnNpemUgPSBzejsKLQlyaW5nLT5iYXNlLmVmZmVjdGl2ZV9zaXplID0gc3o7 Ci0JcmluZy0+YmFzZS52YWRkciA9ICh2b2lkICopKHJpbmcgKyAxKTsKLQlyaW5nLT5iYXNlLnRp bWVsaW5lID0gJnJpbmctPnRpbWVsaW5lOwotCWF0b21pY19zZXQoJnJpbmctPmJhc2UucGluX2Nv dW50LCAxKTsKLQotCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5iYXNlLnJlcXVlc3RfbGlzdCk7Ci0J aW50ZWxfcmluZ191cGRhdGVfc3BhY2UoJnJpbmctPmJhc2UpOwotCi0JcmV0dXJuICZyaW5nLT5i YXNlOwotfQorCWtyZWZfaW5pdCgmcmluZy0+cmVmKTsKKwlyaW5nLT5zaXplID0gc3o7CisJcmlu Zy0+ZWZmZWN0aXZlX3NpemUgPSBzejsKKwlyaW5nLT52YWRkciA9ICh2b2lkICopKHJpbmcgKyAx KTsKKwlhdG9taWNfc2V0KCZyaW5nLT5waW5fY291bnQsIDEpOwogCi1zdGF0aWMgdm9pZCBtb2Nr X3JpbmdfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZyAqYmFzZSkKLXsKLQlzdHJ1Y3QgbW9ja19yaW5n ICpyaW5nID0gY29udGFpbmVyX29mKGJhc2UsIHR5cGVvZigqcmluZyksIGJhc2UpOworCUlOSVRf TElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOworCWludGVsX3JpbmdfdXBkYXRlX3NwYWNl KHJpbmcpOwogCi0JaW50ZWxfdGltZWxpbmVfZmluaSgmcmluZy0+dGltZWxpbmUpOwotCWtmcmVl KHJpbmcpOworCXJldHVybiByaW5nOwogfQogCiBzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAq Zmlyc3RfcmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSkKQEAgLTEzMSw3ICsxMTIs NiBAQCBzdGF0aWMgdm9pZCBod19kZWxheV9jb21wbGV0ZShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkK IAogc3RhdGljIHZvaWQgbW9ja19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKIHsKLQltb2NrX3RpbWVsaW5lX3VucGluKGNlLT5yaW5nLT50aW1lbGluZSk7CiB9CiAKIHN0 YXRpYyB2b2lkIG1vY2tfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVmICpyZWYpCkBAIC0xNDAs OCArMTIwLDEwIEBAIHN0YXRpYyB2b2lkIG1vY2tfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVm ICpyZWYpCiAKIAlHRU1fQlVHX09OKGludGVsX2NvbnRleHRfaXNfcGlubmVkKGNlKSk7CiAKLQlp ZiAodGVzdF9iaXQoQ09OVEVYVF9BTExPQ19CSVQsICZjZS0+ZmxhZ3MpKQotCQltb2NrX3Jpbmdf ZnJlZShjZS0+cmluZyk7CisJaWYgKHRlc3RfYml0KENPTlRFWFRfQUxMT0NfQklULCAmY2UtPmZs YWdzKSkgeworCQlrZnJlZShjZS0+cmluZyk7CisJCW1vY2tfdGltZWxpbmVfdW5waW4oY2UtPnRp bWVsaW5lKTsKKwl9CiAKIAlpbnRlbF9jb250ZXh0X2ZpbmkoY2UpOwogCWludGVsX2NvbnRleHRf ZnJlZShjZSk7CkBAIC0xNTMsMTkgKzEzNSwyMSBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9h bGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJaWYgKCFjZS0+cmluZykKIAkJcmV0dXJu IC1FTk9NRU07CiAKKwlHRU1fQlVHX09OKGNlLT50aW1lbGluZSk7CisJY2UtPnRpbWVsaW5lID0g aW50ZWxfdGltZWxpbmVfY3JlYXRlKGNlLT5lbmdpbmUtPmd0LCBOVUxMKTsKKwlpZiAoSVNfRVJS KGNlLT50aW1lbGluZSkpIHsKKwkJa2ZyZWUoY2UtPmVuZ2luZSk7CisJCXJldHVybiBQVFJfRVJS KGNlLT50aW1lbGluZSk7CisJfQorCisJbW9ja190aW1lbGluZV9waW4oY2UtPnRpbWVsaW5lKTsK KwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9waW4oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQogewotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9jb250ZXh0X2Fj dGl2ZV9hY3F1aXJlKGNlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbW9ja190aW1l bGluZV9waW4oY2UtPnJpbmctPnRpbWVsaW5lKTsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gaW50ZWxf Y29udGV4dF9hY3RpdmVfYWNxdWlyZShjZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfY29udGV4dF9vcHMgbW9ja19jb250ZXh0X29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwppbmRleCA2ZTdlOWE2ZmQyMzUuLmRhOWM0OWUyYWRhZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwpAQCAtMzIsNyAr MzIsNyBAQCBzdGF0aWMgaW50IHJlcXVlc3Rfc3luYyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK IAogc3RhdGljIGludCBjb250ZXh0X3N5bmMoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewot CXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSBjZS0+cmluZy0+dGltZWxpbmU7CisJc3RydWN0 IGludGVsX3RpbWVsaW5lICp0bCA9IGNlLT50aW1lbGluZTsKIAlpbnQgZXJyID0gMDsKIAogCWRv IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCmluZGV4IDFlMDk3MjJiNTMxNy4uNzY5OGZj YWE2NDhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKQEAgLTI0Niw3ICsyNDYsNyBA QCBzdGF0aWMgYm9vbCBfX2FjdGl2ZV9kZWxfYmFycmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZiwKIAlzdHJ1Y3QgbGxpc3Rfbm9kZSAqaGVhZCA9IE5VTEwsICp0YWlsID0gTlVMTDsKIAlzdHJ1 Y3QgbGxpc3Rfbm9kZSAqcG9zLCAqbmV4dDsKIAotCUdFTV9CVUdfT04obm9kZS0+dGltZWxpbmUg IT0gZW5naW5lLT5rZXJuZWxfY29udGV4dC0+cmluZy0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQp OworCUdFTV9CVUdfT04obm9kZS0+dGltZWxpbmUgIT0gZW5naW5lLT5rZXJuZWxfY29udGV4dC0+ dGltZWxpbmUtPmZlbmNlX2NvbnRleHQpOwogCiAJLyoKIAkgKiBSZWJ1aWxkIHRoZSBsbGlzdCBl eGNsdWRpbmcgb3VyIG5vZGUuIFdlIG1heSBwZXJmb3JtIHRoaXMKQEAgLTU2OCw3ICs1NjgsNyBA QCBpbnQgaTkxNV9hY3RpdmVfYWNxdWlyZV9wcmVhbGxvY2F0ZV9iYXJyaWVyKHN0cnVjdCBpOTE1 X2FjdGl2ZSAqcmVmLAogCSAqIGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmllcigpCiAJICovCiAJ Zm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIG1hc2ssIHRtcCkgewotCQl1NjQg aWR4ID0gZW5naW5lLT5rZXJuZWxfY29udGV4dC0+cmluZy0+dGltZWxpbmUtPmZlbmNlX2NvbnRl eHQ7CisJCXU2NCBpZHggPSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0LT50aW1lbGluZS0+ZmVuY2Vf Y29udGV4dDsKIAkJc3RydWN0IGFjdGl2ZV9ub2RlICpub2RlOwogCiAJCW5vZGUgPSByZXVzZV9p ZGxlX2JhcnJpZXIocmVmLCBpZHgpOwpAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQgaTkxNV9yZXF1 ZXN0X2FkZF9hY3RpdmVfYmFycmllcnMoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJc3RydWN0 IGxsaXN0X25vZGUgKm5vZGUsICpuZXh0OwogCiAJR0VNX0JVR19PTihpbnRlbF9lbmdpbmVfaXNf dmlydHVhbChlbmdpbmUpKTsKLQlHRU1fQlVHX09OKHJxLT50aW1lbGluZSAhPSBlbmdpbmUtPmtl cm5lbF9jb250ZXh0LT5yaW5nLT50aW1lbGluZSk7CisJR0VNX0JVR19PTihycS0+dGltZWxpbmUg IT0gZW5naW5lLT5rZXJuZWxfY29udGV4dC0+dGltZWxpbmUpOwogCiAJLyoKIAkgKiBBdHRhY2gg dGhlIGxpc3Qgb2YgcHJvdG8tZmVuY2VzIHRvIHRoZSBpbi1mbGlnaHQgcmVxdWVzdCBzdWNoCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IDliMmIxOGYwMTk2Yi4uNDMxNzViYWRh MDllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtMzA2LDEyICszMDYsMTIg QEAgc3RhdGljIGJvb2wgaTkxNV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKIAogCWxvY2FsX2lycV9lbmFibGUoKTsKIAotCWludGVsX2NvbnRleHRfZXhpdChycS0+aHdf Y29udGV4dCk7Ci0JaW50ZWxfY29udGV4dF91bnBpbihycS0+aHdfY29udGV4dCk7Ci0KIAlpOTE1 X3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHJxKTsKIAlsaXN0X2RlbCgmcnEtPmxpbmspOwog CisJaW50ZWxfY29udGV4dF9leGl0KHJxLT5od19jb250ZXh0KTsKKwlpbnRlbF9jb250ZXh0X3Vu cGluKHJxLT5od19jb250ZXh0KTsKKwogCWZyZWVfY2FwdHVyZV9saXN0KHJxKTsKIAlpOTE1X3Nj aGVkX25vZGVfZmluaSgmcnEtPnNjaGVkKTsKIAlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKQEAgLTYw OCw3ICs2MDgsNyBAQCByZXF1ZXN0X2FsbG9jX3Nsb3coc3RydWN0IGludGVsX2NvbnRleHQgKmNl LCBnZnBfdCBnZnApCiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKIF9faTkxNV9yZXF1ZXN0X2NyZWF0 ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGdmcF90IGdmcCkKIHsKLQlzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsID0gY2UtPnJpbmctPnRpbWVsaW5lOworCXN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGwgPSBjZS0+dGltZWxpbmU7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJdTMyIHNl cW5vOwogCWludCByZXQ7CkBAIC03NjAsNyArNzYwLDcgQEAgaTkxNV9yZXF1ZXN0X2NyZWF0ZShz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCWdvdG8gZXJyX3VubG9jazsKIAogCS8qIENoZWNr IHRoYXQgd2UgZG8gbm90IGludGVycnVwdCBvdXJzZWx2ZXMgd2l0aCBhIG5ldyByZXF1ZXN0ICov Ci0JcnEtPmNvb2tpZSA9IGxvY2tkZXBfcGluX2xvY2soJmNlLT5yaW5nLT50aW1lbGluZS0+bXV0 ZXgpOworCXJxLT5jb29raWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZjZS0+dGltZWxpbmUtPm11dGV4 KTsKIAogCXJldHVybiBycTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fZXZpY3QuYwppbmRleCBiNjQ0OWQwYThjMTcuLmNiMzBjNjY5YjFiNyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKQEAgLTQ4 LDI2ICs0OCwyOSBAQCBzdGF0aWMgaW50IHBvcHVsYXRlX2dndHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiB7CiAJdW5zaWduZWQgbG9uZyB1bmJvdW5kLCBib3VuZCwgY291bnQ7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQl1NjQgc2l6ZTsKIAogCWNvdW50ID0g MDsKLQlmb3IgKHNpemUgPSAwOwotCSAgICAgc2l6ZSArIEk5MTVfR1RUX1BBR0VfU0laRSA8PSBp OTE1LT5nZ3R0LnZtLnRvdGFsOwotCSAgICAgc2l6ZSArPSBJOTE1X0dUVF9QQUdFX1NJWkUpIHsK KwlkbyB7CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCiAJCW9iaiA9IGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgSTkxNV9HVFRfUEFHRV9TSVpFKTsKIAkJaWYgKElTX0VS UihvYmopKQogCQkJcmV0dXJuIFBUUl9FUlIob2JqKTsKIAotCQlxdWlya19hZGQob2JqLCBvYmpl Y3RzKTsKLQogCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAw LCAwKTsKLQkJaWYgKElTX0VSUih2bWEpKQorCQlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJCWk5MTVf Z2VtX29iamVjdF9wdXQob2JqKTsKKwkJCWlmICh2bWEgPT0gRVJSX1BUUigtRU5PU1BDKSkKKwkJ CQlicmVhazsKKwogCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwkJfQogCisJCXF1aXJrX2FkZChv YmosIG9iamVjdHMpOwogCQljb3VudCsrOwotCX0KKwl9IHdoaWxlICgxKTsKKwlwcl9kZWJ1Zygi RmlsbGVkIEdHVFQgd2l0aCAlbHUgcGFnZXMgWyVsbHUgdG90YWxdXG4iLAorCQkgY291bnQsIGk5 MTUtPmdndHQudm0udG90YWwgLyBQQUdFX1NJWkUpOwogCiAJYm91bmQgPSAwOwogCXVuYm91bmQg PSAwOwotLSAKMi4yMy4wLnJjMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4