From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 15/38] drm/i915: Allocate a status page for each timeline Date: Fri, 18 Jan 2019 14:00:46 +0000 Message-ID: <20190118140109.25261-16-chris@chris-wilson.co.uk> References: <20190118140109.25261-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 F17D96F7AD for ; Fri, 18 Jan 2019 14:01:58 +0000 (UTC) In-Reply-To: <20190118140109.25261-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 QWxsb2NhdGUgYSBwYWdlIGZvciB1c2UgYXMgYSBzdGF0dXMgcGFnZSBieSBhIGdyb3VwIG9mIHRp bWVsaW5lcywgYXMgd2UKb25seSBuZWVkIGEgZHdvcmQgb2Ygc3RvcmFnZSBmb3IgZWFjaCAocm91 bmRlZCB1cCB0byB0aGUgY2FjaGVsaW5lIGZvcgpzYWZldHkpIHdlIGNhbiBwYWNrIG11bHRpcGxl IHRpbWVsaW5lcyBpbnRvIHRoZSBzYW1lIHBhZ2UuIEVhY2ggdGltZWxpbmUKd2lsbCB0aGVuIGJl IGFibGUgdG8gdHJhY2sgaXRzIG93biBIVyBzZXFuby4KCnYyOiBSZXVzZSB0aGUgY29tbW9uIHBl ci1lbmdpbmUgSFdTUCBmb3IgdGhlIHNvbGl0YXJ5IHJpbmdidWZmZXIKdGltZWxpbmUsIHNvIHRo YXQgd2UgZG8gbm90IGhhdmUgdG8gZW1pdCAodXNpbmcgcGVyLWdlbiBzcGVjaWFsaXNlZAp2ZnVu Y3MpIHRoZSBicmVhZGNydW1iIGludG8gdGhlIGRpc3RpbmN0IHRpbWVsaW5lIEhXU1AgYW5kIGlu c3RlYWQgY2FuCmtlZXAgb24gdXNpbmcgdGhlIGNvbW1vbiBNSV9TVE9SRV9EV09SRF9JTkRFWC4g SG93ZXZlciwgdG8gbWFpbnRhaW4gdGhlCnNsZWlnaHQtb2YtaGFuZCBmb3IgdGhlIGdsb2JhbC9w ZXItY29udGV4dCBzZXFubyBzd2l0Y2hvdmVyLCB3ZSB3aWxsCnN0b3JlIGJvdGggdGVtcG9yYXJp bHkgKGFuZCBzbyB1c2UgYSBjdXN0b20gb2Zmc2V0IGZvciB0aGUgc2hhcmVkIHRpbWVsaW5lCkhX U1AgdW50aWwgdGhlIHN3aXRjaCBvdmVyKS4KCnYzOiBLZWVwIHRoaW5ncyBzaW1wbGUgYW5kIGFs bG9jYXRlIGEgcGFnZSBmb3IgZWFjaCB0aW1lbGluZSwgcGFnZQpzaGFyaW5nIGNvbWVzIG5leHQu Cgp2NDogSSB3YXMgY2F1Z2h0IHJlcGVhdGluZyB0aGUgc2FtZSBNSV9TVE9SRV9EV09SRF9JTU0g b3ZlciBhbmQgb3ZlcgphZ2FpbiBpbiBzZWxmdGVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RpbWVsaW5lLmMgICAgICAgICAgfCAxMDYgKysrKystCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RpbWVsaW5lLmggICAgICAgICAgfCAgMjEgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICAgICB8ICA2NCArKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAgMjIgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgICAgIHwgICA2ICstCiAuLi4vZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCAgfCAgIDEgKwogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X21vY2tfc2VsZnRlc3RzLmggIHwgICAyICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3RpbWVsaW5lLmMgICAgfCAzMTQgKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYyAgfCAgMTcgKy0KIDEwIGZpbGVz IGNoYW5nZWQsIDUxMiBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RpbWVsaW5lLmMKaW5kZXggODQ1NTBmMTdkM2RmLi5hN2Q5MDJlOWVhZjEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKQEAgLTksMTEgKzksMzggQEAKICNpbmNs dWRlICJpOTE1X3RpbWVsaW5lLmgiCiAjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCiAKLXZvaWQg aTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAotCQkJc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLAotCQkJY29uc3QgY2hhciAqbmFtZSkKK3N0YXRp YyBpbnQgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0aW1lbGluZS0+aTkxNTsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCisJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOworCWlmIChJ U19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKKworCWk5MTVfZ2VtX29iamVjdF9z ZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0xMQyk7CisKKwl2bWEgPSBpOTE1X3ZtYV9p bnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LnZtLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsK KwkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCX0K KworCXRpbWVsaW5lLT5od3NwX2dndHQgPSB2bWE7CisJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0g MDsKKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAorCQkgICAgICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVs aW5lLAorCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJICAgICAgIHN0cnVjdCBpOTE1X3Zt YSAqZ2xvYmFsX2h3c3ApCiB7CiAJc3RydWN0IGk5MTVfZ3RfdGltZWxpbmVzICpndCA9ICZpOTE1 LT5ndC50aW1lbGluZXM7CisJdm9pZCAqdmFkZHI7CisJaW50IGVycjsKIAogCS8qCiAJICogSWRl YWxseSB3ZSB3YW50IGEgc2V0IG9mIGVuZ2luZXMgb24gYSBzaW5nbGUgbGVhZiBhcyB3ZSBleHBl Y3QKQEAgLTI1LDEwICs1MiwyNyBAQCB2b2lkIGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogCXRpbWVsaW5lLT5pOTE1ID0gaTkxNTsKIAl0aW1lbGlu ZS0+bmFtZSA9IG5hbWU7CisJdGltZWxpbmUtPnBpbl9jb3VudCA9IDA7CisKKwlpZiAoZ2xvYmFs X2h3c3ApIHsKKwkJdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChnbG9iYWxfaHdz cCk7CisJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOwor CX0gZWxzZSB7CisJCWVyciA9IGh3c3BfYWxsb2ModGltZWxpbmUpOworCQlpZiAoZXJyKQorCQkJ cmV0dXJuIGVycjsKKwl9CiAKLQltdXRleF9sb2NrKCZndC0+bXV0ZXgpOwotCWxpc3RfYWRkKCZ0 aW1lbGluZS0+bGluaywgJmd0LT5saXN0KTsKLQltdXRleF91bmxvY2soJmd0LT5tdXRleCk7CisJ dmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmos IEk5MTVfTUFQX1dCKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlpOTE1X3ZtYV9wdXQodGlt ZWxpbmUtPmh3c3BfZ2d0dCk7CisJCXJldHVybiBQVFJfRVJSKHZhZGRyKTsKKwl9CisKKwl0aW1l bGluZS0+aHdzcF9zZXFubyA9CisJCW1lbXNldCh2YWRkciArIHRpbWVsaW5lLT5od3NwX29mZnNl dCwKKwkJICAgICAgIDAsCisJCSAgICAgICBzaXplb2YoKnRpbWVsaW5lLT5od3NwX3NlcW5vKSk7 CiAKIAkvKiBDYWxsZWQgZHVyaW5nIGVhcmx5X2luaXQgYmVmb3JlIHdlIGtub3cgaG93IG1hbnkg ZW5naW5lcyB0aGVyZSBhcmUgKi8KIApAQCAtNDAsNiArODQsMTIgQEAgdm9pZCBpOTE1X3RpbWVs aW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJSU5JVF9MSVNUX0hFQUQo JnRpbWVsaW5lLT5yZXF1ZXN0cyk7CiAKIAlpOTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUtPnN5 bmMpOworCisJbXV0ZXhfbG9jaygmZ3QtPm11dGV4KTsKKwlsaXN0X2FkZCgmdGltZWxpbmUtPmxp bmssICZndC0+bGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZndC0+bXV0ZXgpOworCisJcmV0dXJuIDA7 CiB9CiAKIHZvaWQgaTkxNV90aW1lbGluZXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKQEAgLTg1LDYgKzEzNSw3IEBAIHZvaWQgaTkxNV90aW1lbGluZV9maW5pKHN0cnVjdCBp OTE1X3RpbWVsaW5lICp0aW1lbGluZSkKIHsKIAlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0 ID0gJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGluZXM7CiAKKwlHRU1fQlVHX09OKHRpbWVsaW5l LT5waW5fY291bnQpOwogCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1ZXN0 cykpOwogCiAJaTkxNV9zeW5jbWFwX2ZyZWUoJnRpbWVsaW5lLT5zeW5jKTsKQEAgLTkyLDIzICsx NDMsNjIgQEAgdm9pZCBpOTE1X3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRp bWVsaW5lKQogCW11dGV4X2xvY2soJmd0LT5tdXRleCk7CiAJbGlzdF9kZWwoJnRpbWVsaW5lLT5s aW5rKTsKIAltdXRleF91bmxvY2soJmd0LT5tdXRleCk7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7CisJaTkxNV92bWFfcHV0KHRpbWVsaW5l LT5od3NwX2dndHQpOwogfQogCiBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqCi1pOTE1X3RpbWVsaW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAqbmFtZSkK K2k5MTVfdGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCSAgICAgc3RydWN0IGk5MTVfdm1hICpnbG9iYWxfaHdz cCkKIHsKIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7CisJaW50IGVycjsKIAogCXRp bWVsaW5lID0ga3phbGxvYyhzaXplb2YoKnRpbWVsaW5lKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF0 aW1lbGluZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlpOTE1X3RpbWVsaW5lX2lu aXQoaTkxNSwgdGltZWxpbmUsIG5hbWUpOworCWVyciA9IGk5MTVfdGltZWxpbmVfaW5pdChpOTE1 LCB0aW1lbGluZSwgbmFtZSwgZ2xvYmFsX2h3c3ApOworCWlmIChlcnIpIHsKKwkJa2ZyZWUodGlt ZWxpbmUpOworCQlyZXR1cm4gRVJSX1BUUihlcnIpOworCX0KKwogCWtyZWZfaW5pdCgmdGltZWxp bmUtPmtyZWYpOwogCiAJcmV0dXJuIHRpbWVsaW5lOwogfQogCitpbnQgaTkxNV90aW1lbGluZV9w aW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQoreworCWludCBlcnI7CisKKwlpZiAodGwtPnBp bl9jb3VudCsrKQorCQlyZXR1cm4gMDsKKwlHRU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKKwor CWVyciA9IGk5MTVfdm1hX3Bpbih0bC0+aHdzcF9nZ3R0LCAwLCAwLCBQSU5fR0xPQkFMIHwgUElO X0hJR0gpOworCWlmIChlcnIpCisJCWdvdG8gdW5waW47CisKKwlyZXR1cm4gMDsKKwordW5waW46 CisJdGwtPnBpbl9jb3VudCA9IDA7CisJcmV0dXJuIGVycjsKK30KKwordm9pZCBpOTE1X3RpbWVs aW5lX3VucGluKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwlHRU1fQlVHX09OKCF0bC0+ cGluX2NvdW50KTsKKwlpZiAoLS10bC0+cGluX2NvdW50KQorCQlyZXR1cm47CisKKwlfX2k5MTVf dm1hX3VucGluKHRsLT5od3NwX2dndHQpOworfQorCiB2b2lkIF9faTkxNV90aW1lbGluZV9mcmVl KHN0cnVjdCBrcmVmICprcmVmKQogewogCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKaW5kZXggODdhZDJkZDMxYzIwLi4wYzM3 MzlkNTNkNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKQEAgLTMyLDYgKzMy LDggQEAKICNpbmNsdWRlICJpOTE1X3N5bmNtYXAuaCIKICNpbmNsdWRlICJpOTE1X3V0aWxzLmgi CiAKK3N0cnVjdCBpOTE1X3ZtYTsKKwogc3RydWN0IGk5MTVfdGltZWxpbmUgewogCXU2NCBmZW5j ZV9jb250ZXh0OwogCXUzMiBzZXFubzsKQEAgLTQwLDYgKzQyLDExIEBAIHN0cnVjdCBpOTE1X3Rp bWVsaW5lIHsKICNkZWZpbmUgVElNRUxJTkVfQ0xJRU5UIDAgLyogZGVmYXVsdCBzdWJjbGFzcyAq LwogI2RlZmluZSBUSU1FTElORV9FTkdJTkUgMQogCisJdW5zaWduZWQgaW50IHBpbl9jb3VudDsK Kwljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CisJc3RydWN0IGk5MTVfdm1hICpod3NwX2dndHQ7CisJ dTMyIGh3c3Bfb2Zmc2V0OworCiAJLyoqCiAJICogTGlzdCBvZiBicmVhZGNydW1icyBhc3NvY2lh dGVkIHdpdGggR1BVIHJlcXVlc3RzIGN1cnJlbnRseQogCSAqIG91dHN0YW5kaW5nLgpAQCAtNzEs OSArNzgsMTAgQEAgc3RydWN0IGk5MTVfdGltZWxpbmUgewogCXN0cnVjdCBrcmVmIGtyZWY7CiB9 OwogCi12b2lkIGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKLQkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKLQkJCWNvbnN0IGNoYXIgKm5hbWUpOwor aW50IGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJ ICAgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKKwkJICAgICAgIGNvbnN0IGNoYXIgKm5h bWUsCisJCSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKmh3c3ApOwogdm9pZCBpOTE1X3RpbWVsaW5l X2Zpbmkoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKTsKIAogc3RhdGljIGlubGluZSB2b2lkCkBA IC05Niw3ICsxMDQsOSBAQCBpOTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcyhzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGltZWxpbmUsCiB9CiAKIHN0cnVjdCBpOTE1X3RpbWVsaW5lICoKLWk5MTVfdGlt ZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpu YW1lKTsKK2k5MTVfdGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAorCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCSAgICAgc3RydWN0IGk5MTVfdm1hICpnbG9i YWxfaHdzcCk7CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfdGltZWxpbmUgKgogaTkxNV90 aW1lbGluZV9nZXQoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQpAQCAtMTM1LDYgKzE0 NSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIoc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRsLAogCXJldHVybiBfX2k5MTVfdGltZWxpbmVfc3luY19pc19s YXRlcih0bCwgZmVuY2UtPmNvbnRleHQsIGZlbmNlLT5zZXFubyk7CiB9CiAKK2ludCBpOTE1X3Rp bWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpOwordm9pZCBpOTE1X3RpbWVsaW5l X3VucGluKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCk7CisKIHZvaWQgaTkxNV90aW1lbGluZXNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGk5MTVfdGltZWxpbmVz X3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpOTE1X3RpbWVsaW5l c19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMKaW5kZXggNGI0YjczNThjNDgyLi5jODUwZDEzMWQ4YzMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC00ODQsMjYgKzQ4NCw2IEBAIHN0 YXRpYyB2b2lkIGludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlleGVjbGlzdHMtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiB9CiAKLS8q KgotICogaW50ZWxfZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90 IHJlcXVpcmluZyBodyBhY2Nlc3MKLSAqIEBlbmdpbmU6IEVuZ2luZSB0byBzZXR1cC4KLSAqCi0g KiBJbml0aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0d2VlbiBs ZWdhY3kgYW5kIGV4ZWNsaXN0cwotICogc3VibWlzc2lvbiBtb2RlcyB3aGljaCBkbyBub3QgcmVx dWlyZSBoYXJkd2FyZSBhY2Nlc3MuCi0gKgotICogVHlwaWNhbGx5IGRvbmUgZWFybHkgaW4gdGhl IHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2UuCi0gKi8KLXZvaWQg aW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Ci17Ci0JaTkxNV90aW1lbGluZV9pbml0KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+dGltZWxpbmUs IGVuZ2luZS0+bmFtZSk7Ci0JaTkxNV90aW1lbGluZV9zZXRfc3ViY2xhc3MoJmVuZ2luZS0+dGlt ZWxpbmUsIFRJTUVMSU5FX0VOR0lORSk7Ci0KLQlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdChl bmdpbmUpOwotCWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdpbmUpOwotCWludGVsX2Vu Z2luZV9pbml0X2JhdGNoX3Bvb2woZW5naW5lKTsKLQlpbnRlbF9lbmdpbmVfaW5pdF9jbWRfcGFy c2VyKGVuZ2luZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNsZWFudXBfc3RhdHVzX3BhZ2Uoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAt NjAxLDYgKzU4MSw0NCBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiByZXQ7CiB9CiAKKy8qKgorICogaW50ZWxfZW5n aW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90IHJlcXVpcmluZyBodyBh Y2Nlc3MKKyAqIEBlbmdpbmU6IEVuZ2luZSB0byBzZXR1cC4KKyAqCisgKiBJbml0aWFsaXplcyBA ZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0d2VlbiBsZWdhY3kgYW5kIGV4ZWNs aXN0cworICogc3VibWlzc2lvbiBtb2RlcyB3aGljaCBkbyBub3QgcmVxdWlyZSBoYXJkd2FyZSBh Y2Nlc3MuCisgKgorICogVHlwaWNhbGx5IGRvbmUgZWFybHkgaW4gdGhlIHN1Ym1pc3Npb24gbW9k ZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2UuCisgKi8KK2ludCBpbnRlbF9lbmdpbmVfc2V0 dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnQgZXJyOwor CisJZXJyID0gaW5pdF9zdGF0dXNfcGFnZShlbmdpbmUpOworCWlmIChlcnIpCisJCXJldHVybiBl cnI7CisKKwllcnIgPSBpOTE1X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1LAorCQkJCSAmZW5n aW5lLT50aW1lbGluZSwKKwkJCQkgZW5naW5lLT5uYW1lLAorCQkJCSBlbmdpbmUtPnN0YXR1c19w YWdlLnZtYSk7CisJaWYgKGVycikKKwkJZ290byBlcnJfaHdzcDsKKworCWk5MTVfdGltZWxpbmVf c2V0X3N1YmNsYXNzKCZlbmdpbmUtPnRpbWVsaW5lLCBUSU1FTElORV9FTkdJTkUpOworCisJaW50 ZWxfZW5naW5lX2luaXRfZXhlY2xpc3QoZW5naW5lKTsKKwlpbnRlbF9lbmdpbmVfaW5pdF9oYW5n Y2hlY2soZW5naW5lKTsKKwlpbnRlbF9lbmdpbmVfaW5pdF9iYXRjaF9wb29sKGVuZ2luZSk7CisJ aW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihlbmdpbmUpOworCisJcmV0dXJuIDA7CisKK2Vy cl9od3NwOgorCWNsZWFudXBfc3RhdHVzX3BhZ2UoZW5naW5lKTsKKwlyZXR1cm4gZXJyOworfQor CiBzdGF0aWMgdm9pZCBfX2ludGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKIAkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKQEAgLTY1 MywxNCArNjcxLDggQEAgaW50IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfdW5waW5fcHJlZW1wdDsK IAotCXJldCA9IGluaXRfc3RhdHVzX3BhZ2UoZW5naW5lKTsKLQlpZiAocmV0KQotCQlnb3RvIGVy cl9icmVhZGNydW1iczsKLQogCXJldHVybiAwOwogCi1lcnJfYnJlYWRjcnVtYnM6Ci0JaW50ZWxf ZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoZW5naW5lKTsKIGVycl91bnBpbl9wcmVlbXB0OgogCWlm IChpOTE1LT5wcmVlbXB0X2NvbnRleHQpCiAJCV9faW50ZWxfY29udGV4dF91bnBpbihpOTE1LT5w cmVlbXB0X2NvbnRleHQsIGVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGRh YmViYjY4NzU5Zi4uYmE1OTI0MWFkZDQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MjE5OSwxMCArMjE5OSwxNCBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmlycV9rZWVwX21hc2sgPSBHVF9DT05URVhU X1NXSVRDSF9JTlRFUlJVUFQgPDwgc2hpZnQ7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50 CiBsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewot CWludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKKwlpbnQgZXJyOworCisJZXJyID0g aW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUpOworCWlmIChlcnIpCisJCXJldHVybiBl cnI7CiAKIAkvKiBJbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuICovCiAJZW5naW5lLT5idWZmZXIg PSBOVUxMOwpAQCAtMjIxMiw2ICsyMjE2LDggQEAgbG9naWNhbF9yaW5nX3NldHVwKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhl bmdpbmUpOwogCWxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoZW5naW5lKTsKKworCXJldHVybiAw OwogfQogCiBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKQEAgLTIyNjAsNyArMjI2Niw5IEBAIGludCBsb2dpY2FsX3JlbmRlcl9yaW5n X2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWludCByZXQ7CiAKLQls b2dpY2FsX3Jpbmdfc2V0dXAoZW5naW5lKTsKKwlyZXQgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZW5n aW5lKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJLyogT3ZlcnJpZGUgc29tZSBmb3Ig cmVuZGVyIHJpbmcuICovCiAJZW5naW5lLT5pbml0X2NvbnRleHQgPSBnZW44X2luaXRfcmNzX2Nv bnRleHQ7CkBAIC0yMjkwLDcgKzIyOTgsMTEgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5p dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIGludCBsb2dpY2FsX3hjc19yaW5n X2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWxvZ2ljYWxfcmluZ19z ZXR1cChlbmdpbmUpOworCWludCBlcnI7CisKKwllcnIgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZW5n aW5lKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOwogCiAJcmV0dXJuIGxvZ2ljYWxfcmluZ19p bml0KGVuZ2luZSk7CiB9CkBAIC0yNjI0LDcgKzI2MzYsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0 c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJ CWdvdG8gZXJyb3JfZGVyZWZfb2JqOwogCX0KIAotCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9j cmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5hbWUpOworCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9j cmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5hbWUsIE5VTEwpOwogCWlmIChJU19FUlIodGltZWxpbmUp KSB7CiAJCXJldCA9IFBUUl9FUlIodGltZWxpbmUpOwogCQlnb3RvIGVycm9yX2RlcmVmX29iajsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCBkNzIwMTJiNDJmMjAu LjU4ODczMDRiYzNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpA QCAtMTUzOSw5ICsxNTM5LDEzIEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7 CiAJaW50IGVycjsKIAotCWludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKKwllcnIg PSBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKGVuZ2luZSk7CisJaWYgKGVycikKKwkJcmV0dXJu IGVycjsKIAotCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoZW5naW5lLT5pOTE1LCBl bmdpbmUtPm5hbWUpOworCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoZW5naW5lLT5p OTE1LAorCQkJCQllbmdpbmUtPm5hbWUsCisJCQkJCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsK IAlpZiAoSVNfRVJSKHRpbWVsaW5lKSkgewogCQllcnIgPSBQVFJfRVJSKHRpbWVsaW5lKTsKIAkJ Z290byBlcnI7CkBAIC0xNTY1LDYgKzE1NjksOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmlu Z19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChlcnIpCiAJCWdv dG8gZXJyX3VucGluOwogCisJR0VNX0JVR19PTihyaW5nLT50aW1lbGluZS0+aHdzcF9nZ3R0ICE9 IGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKKwogCXJldHVybiAwOwogCiBlcnJfdW5waW46CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggZDFhODI2MTBlMGMxLi5k ZTAwOTllYTkyNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAg LTcyMCw3ICs3MjAsOSBAQCBpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIGludCByZWcsIHUzMiB2YWx1ZSkKICNkZWZpbmUgSTkxNV9HRU1fSFdT X0lOREVYX0FERFIgKEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9T SElGVCkKICNkZWZpbmUgSTkxNV9HRU1fSFdTX1BSRUVNUFRfSU5ERVgJMHgzMgogI2RlZmluZSBJ OTE1X0dFTV9IV1NfUFJFRU1QVF9BRERSIChJOTE1X0dFTV9IV1NfUFJFRU1QVF9JTkRFWCA8PCBN SV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCkKLSNkZWZpbmUgSTkxNV9HRU1fSFdTX1NDUkFUQ0hf SU5ERVgJMHg0MAorI2RlZmluZSBJOTE1X0dFTV9IV1NfU0VRTk8JCTB4NDAKKyNkZWZpbmUgSTkx NV9HRU1fSFdTX1NFUU5PX0FERFIgKEk5MTVfR0VNX0hXU19TRVFOTyA8PCBNSV9TVE9SRV9EV09S RF9JTkRFWF9TSElGVCkKKyNkZWZpbmUgSTkxNV9HRU1fSFdTX1NDUkFUQ0hfSU5ERVgJMHg4MAog I2RlZmluZSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIChJOTE1X0dFTV9IV1NfU0NSQVRDSF9J TkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCkKIAogI2RlZmluZSBJOTE1X0hXU19D U0JfQlVGMF9JTkRFWAkJMHgxMApAQCAtODI2LDcgKzgyOCw3IEBAIGludGVsX3Jpbmdfc2V0X3Rh aWwoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHVuc2lnbmVkIGludCB0YWlsKQogCiB2b2lkIGlu dGVsX2VuZ2luZV93cml0ZV9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgc2Vxbm8pOwogCi12b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2ludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBpbnQgaW50ZWxfZW5naW5lX2luaXRf Y29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB2b2lkIGludGVsX2VuZ2lu ZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0 cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMu aAppbmRleCBhMTU3MTNjYWUzYjMuLjc2YjRmODdmYzg1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCkBAIC0xMyw2ICsx Myw3IEBAIHNlbGZ0ZXN0KHNhbml0eWNoZWNrLCBpOTE1X2xpdmVfc2FuaXR5Y2hlY2spIC8qIGtl ZXAgZmlyc3QgKGlndCBzZWxmY2hlY2spICovCiBzZWxmdGVzdCh1bmNvcmUsIGludGVsX3VuY29y ZV9saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHdvcmthcm91bmRzLCBpbnRlbF93b3JrYXJvdW5k c19saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3RfbGl2ZV9z ZWxmdGVzdHMpCitzZWxmdGVzdCh0aW1lbGluZXMsIGk5MTVfdGltZWxpbmVfbGl2ZV9zZWxmdGVz dHMpCiBzZWxmdGVzdChvYmplY3RzLCBpOTE1X2dlbV9vYmplY3RfbGl2ZV9zZWxmdGVzdHMpCiBz ZWxmdGVzdChkbWFidWYsIGk5MTVfZ2VtX2RtYWJ1Zl9saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0 KGNvaGVyZW5jeSwgaTkxNV9nZW1fY29oZXJlbmN5X2xpdmVfc2VsZnRlc3RzKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKaW5k ZXggMWI3MDIwOGVlZWE3Li40YTgzYTFjNmM0MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaApAQCAtMTYsNyArMTYsNyBA QCBzZWxmdGVzdChzeW5jbWFwLCBpOTE1X3N5bmNtYXBfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVz dCh1bmNvcmUsIGludGVsX3VuY29yZV9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGVuZ2luZSwg aW50ZWxfZW5naW5lX2NzX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QoYnJlYWRjcnVtYnMsIGlu dGVsX2JyZWFkY3J1bWJzX21vY2tfc2VsZnRlc3RzKQotc2VsZnRlc3QodGltZWxpbmVzLCBpOTE1 X2dlbV90aW1lbGluZV9tb2NrX3NlbGZ0ZXN0cykKK3NlbGZ0ZXN0KHRpbWVsaW5lcywgaTkxNV90 aW1lbGluZV9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3Rf bW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChvYmplY3RzLCBpOTE1X2dlbV9vYmplY3RfbW9ja19z ZWxmdGVzdHMpCiBzZWxmdGVzdChkbWFidWYsIGk5MTVfZ2VtX2RtYWJ1Zl9tb2NrX3NlbGZ0ZXN0 cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVs aW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jCmlu ZGV4IDE5ZjFjNmE1YzhmYi4uMTVhMzNlYzcyMTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMg aW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQogCXJldHVybiAwOwogfQogCi1pbnQgaTkxNV9nZW1f dGltZWxpbmVfbW9ja19zZWxmdGVzdHModm9pZCkKK2ludCBpOTE1X3RpbWVsaW5lX21vY2tfc2Vs ZnRlc3RzKHZvaWQpCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNb XSA9IHsKIAkJU1VCVEVTVChpZ3Rfc3luYyksCkBAIC0yNjUsMyArMjY1LDMxNSBAQCBpbnQgaTkx NV9nZW1fdGltZWxpbmVfbW9ja19zZWxmdGVzdHModm9pZCkKIAogCXJldHVybiBpOTE1X3N1YnRl c3RzKHRlc3RzLCBOVUxMKTsKIH0KKworc3RhdGljIGludCBlbWl0X2dndHRfc3RvcmVfZHcoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBhZGRyLCB1MzIgdmFsdWUpCit7CisJdTMyICpjczsK KworCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7CisJaWYgKElTX0VSUihjcykpCisJCXJl dHVybiBQVFJfRVJSKGNzKTsKKworCWlmIChJTlRFTF9HRU4ocnEtPmk5MTUpID49IDgpIHsKKwkJ KmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOworCQkqY3MrKyA9 IGFkZHI7CisJCSpjcysrID0gMDsKKwkJKmNzKysgPSB2YWx1ZTsKKwl9IGVsc2UgaWYgKElOVEVM X0dFTihycS0+aTkxNSkgPj0gNCkgeworCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40 IHwgTUlfVVNFX0dHVFQ7CisJCSpjcysrID0gMDsKKwkJKmNzKysgPSBhZGRyOworCQkqY3MrKyA9 IHZhbHVlOworCX0gZWxzZSB7CisJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgTUlfTUVN X1ZJUlRVQUw7CisJCSpjcysrID0gYWRkcjsKKwkJKmNzKysgPSB2YWx1ZTsKKwkJKmNzKysgPSBN SV9OT09QOworCX0KKworCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB1MzIgaHdzcF9hZGRyZXNzKGNvbnN0IHN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bCkKK3sKKwlyZXR1cm4gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArIHRsLT5o d3NwX29mZnNldDsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgordGxfd3JpdGUo c3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHUzMiB2YWx1ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlpbnQgZXJyOworCisJ bG9ja2RlcF9hc3NlcnRfaGVsZCh0bC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7IC8qIGxhenkg d2l0aCBycSByZWZzICovCisKKwllcnIgPSBpOTE1X3RpbWVsaW5lX3Bpbih0bCk7CisJaWYgKGVy cikKKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVu Z2luZSwgZW5naW5lLT5pOTE1LT5rZXJuZWxfY29udGV4dCk7CisJaWYgKElTX0VSUihycSkpCisJ CWdvdG8gb3V0X3VucGluOworCisJZXJyID0gZW1pdF9nZ3R0X3N0b3JlX2R3KHJxLCBod3NwX2Fk ZHJlc3ModGwpLCB2YWx1ZSk7CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJaWYgKGVycikKKwkJ cnEgPSBFUlJfUFRSKGVycik7CisKK291dF91bnBpbjoKKwlpOTE1X3RpbWVsaW5lX3VucGluKHRs KTsKKwlyZXR1cm4gcnE7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9od3NwX2VuZ2luZSh2b2lkICph cmcpCit7CisjZGVmaW5lIE5VTV9USU1FTElORVMgNDA5NgorCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICoqdGltZWxpbmVzOworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1bnNpZ25lZCBsb25nIGNvdW50LCBuOworCWlu dCBlcnIgPSAwOworCisJLyoKKwkgKiBDcmVhdGUgYSBidW5jaCBvZiB0aW1lbGluZXMgYW5kIGNo ZWNrIHdlIGNhbiB3cml0ZQorCSAqIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvZiB0aGVpciBicmVh ZGNydW1iIHNsb3RzLgorCSAqLworCisJdGltZWxpbmVzID0ga3ZtYWxsb2NfYXJyYXkoTlVNX1RJ TUVMSU5FUyAqIEk5MTVfTlVNX0VOR0lORVMsCisJCQkJICAgc2l6ZW9mKCp0aW1lbGluZXMpLAor CQkJCSAgIEdGUF9LRVJORUwpOworCWlmICghdGltZWxpbmVzKQorCQlyZXR1cm4gLUVOT01FTTsK KworCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKKworCWNvdW50ID0gMDsKKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgeworCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo ZW5naW5lKSkKKwkJCWNvbnRpbnVlOworCisJCWZvciAobiA9IDA7IG4gPCBOVU1fVElNRUxJTkVT OyBuKyspIHsKKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKKwkJCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOworCisJCQl0bCA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGk5MTUsICJsaXZlIiwg TlVMTCk7CisJCQlpZiAoSVNfRVJSKHRsKSkgeworCQkJCWVyciA9IFBUUl9FUlIodGwpOworCQkJ CWdvdG8gb3V0OworCQkJfQorCisJCQlpZiAoKnRsLT5od3NwX3NlcW5vICE9IHRsLT5zZXFubykg eworCQkJCXByX2VycigiVGltZWxpbmUgJWx1IGNyZWF0ZWQgd2l0aCBpbmNvcnJlY3QgYnJlYWRj cnVtYiwgZm91bmQgJXgsIGV4cGVjdGVkICV4XG4iLAorCQkJCSAgICAgICBjb3VudCwgKnRsLT5o d3NwX3NlcW5vLCB0bC0+c2Vxbm8pOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJaTkxNV90aW1l bGluZV9wdXQodGwpOworCQkJCWdvdG8gb3V0OworCQkJfQorCisJCQlycSA9IHRsX3dyaXRlKHRs LCBlbmdpbmUsIGNvdW50KTsKKwkJCWlmIChJU19FUlIocnEpKSB7CisJCQkJcHJfZXJyKCJGYWls ZWQgdG8gd3JpdGUgdG8gdGltZWxpbmUhXG4iKTsKKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7 CisJCQkJZXJyID0gUFRSX0VSUihycSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCXRpbWVs aW5lc1tjb3VudCsrXSA9IHRsOworCQl9CisJfQorCisJZXJyID0gaTkxNV9nZW1fd2FpdF9mb3Jf aWRsZShpOTE1LCBJOTE1X1dBSVRfTE9DS0VELCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisKK291 dDoKKwlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgeworCQlzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGwgPSB0aW1lbGluZXNbbl07CisKKwkJaWYgKCFlcnIgJiYgKnRsLT5od3NwX3NlcW5vICE9 IG4pIHsKKwkJCXByX2VycigiSW52YWxpZCBzZXFubyBzdG9yZWQgaW4gdGltZWxpbmUgJWx1LCBm b3VuZCAweCV4XG4iLAorCQkJICAgICAgIG4sICp0bC0+aHdzcF9zZXFubyk7CisJCQllcnIgPSAt RUlOVkFMOworCQl9CisJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKKwl9CisKKwlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCisJa3ZmcmVlKHRpbWVsaW5lcyk7CisKKwlyZXR1cm4gZXJyOworI3VuZGVm IE5VTV9USU1FTElORVMKK30KKworc3RhdGljIGludCBsaXZlX2h3c3BfYWx0ZXJuYXRlKHZvaWQg KmFyZykKK3sKKyNkZWZpbmUgTlVNX1RJTUVMSU5FUyA0MDk2CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGk5MTVfdGltZWxpbmUgKip0aW1lbGluZXM7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXVuc2lnbmVkIGxvbmcgY291bnQsIG47CisJ aW50IGVyciA9IDA7CisKKwkvKgorCSAqIENyZWF0ZSBhIGJ1bmNoIG9mIHRpbWVsaW5lcyBhbmQg Y2hlY2sgd2UgY2FuIHdyaXRlCisJICogaW5kZXBlbmRlbnRseSB0byBlYWNoIG9mIHRoZWlyIGJy ZWFkY3J1bWIgc2xvdHMgd2l0aCBhZGphY2VudAorCSAqIGVuZ2luZXMuCisJICovCisKKwl0aW1l bGluZXMgPSBrdm1hbGxvY19hcnJheShOVU1fVElNRUxJTkVTICogSTkxNV9OVU1fRU5HSU5FUywK KwkJCQkgICBzaXplb2YoKnRpbWVsaW5lcyksCisJCQkJICAgR0ZQX0tFUk5FTCk7CisJaWYgKCF0 aW1lbGluZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJ Y291bnQgPSAwOworCWZvciAobiA9IDA7IG4gPCBOVU1fVElNRUxJTkVTOyBuKyspIHsKKwkJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bDsKKwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJCQlpZiAoIWludGVsX2VuZ2lu ZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKKwkJCQljb250aW51ZTsKKworCQkJdGwgPSBpOTE1 X3RpbWVsaW5lX2NyZWF0ZShpOTE1LCAibGl2ZSIsIE5VTEwpOworCQkJaWYgKElTX0VSUih0bCkp IHsKKwkJCQllcnIgPSBQVFJfRVJSKHRsKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJaWYg KCp0bC0+aHdzcF9zZXFubyAhPSB0bC0+c2Vxbm8pIHsKKwkJCQlwcl9lcnIoIlRpbWVsaW5lICVs dSBjcmVhdGVkIHdpdGggaW5jb3JyZWN0IGJyZWFkY3J1bWIsIGZvdW5kICV4LCBleHBlY3RlZCAl eFxuIiwKKwkJCQkgICAgICAgY291bnQsICp0bC0+aHdzcF9zZXFubywgdGwtPnNlcW5vKTsKKwkJ CQllcnIgPSAtRUlOVkFMOworCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKKwkJCQlnb3RvIG91 dDsKKwkJCX0KKworCQkJcnEgPSB0bF93cml0ZSh0bCwgZW5naW5lLCBjb3VudCk7CisJCQlpZiAo SVNfRVJSKHJxKSkgeworCQkJCXByX2VycigiRmFpbGVkIHRvIHdyaXRlIHRvIHRpbWVsaW5lIVxu Iik7CisJCQkJaTkxNV90aW1lbGluZV9wdXQodGwpOworCQkJCWVyciA9IFBUUl9FUlIocnEpOwor CQkJCWdvdG8gb3V0OworCQkJfQorCisJCQl0aW1lbGluZXNbY291bnQrK10gPSB0bDsKKwkJfQor CX0KKworCWVyciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwgSTkxNV9XQUlUX0xPQ0tF RCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCitvdXQ6CisJZm9yIChuID0gMDsgbiA8IGNvdW50 OyBuKyspIHsKKwkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gdGltZWxpbmVzW25dOworCisJ CWlmICghZXJyICYmICp0bC0+aHdzcF9zZXFubyAhPSBuKSB7CisJCQlwcl9lcnIoIkludmFsaWQg c2Vxbm8gc3RvcmVkIGluIHRpbWVsaW5lICVsdSwgZm91bmQgMHgleFxuIiwKKwkJCSAgICAgICBu LCAqdGwtPmh3c3Bfc2Vxbm8pOworCQkJZXJyID0gLUVJTlZBTDsKKwkJfQorCQlpOTE1X3RpbWVs aW5lX3B1dCh0bCk7CisJfQorCisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7 CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWt2ZnJlZSh0aW1l bGluZXMpOworCisJcmV0dXJuIGVycjsKKyN1bmRlZiBOVU1fVElNRUxJTkVTCit9CisKK3N0YXRp YyBpbnQgbGl2ZV9od3NwX3JlY3ljbGUodm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwll bnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1bnNp Z25lZCBsb25nIGNvdW50OworCWludCBlcnIgPSAwOworCisJLyoKKwkgKiBDaGVjayBzZXFubyB3 cml0ZXMgaW50byBvbmUgdGltZWxpbmUgYXQgYSB0aW1lLiBXZSBleHBlY3QgdG8KKwkgKiByZWN5 Y2xlIHRoZSBicmVhZGNydW1iIHNsb3QgYmV0d2VlbiBpdGVyYXRpb25zIGFuZCBuZWl0aGVyCisJ ICogd2FudCB0byBjb25mdXNlIG91cnNlbHZlcyBvciB0aGUgR1BVLgorCSAqLworCisJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOworCisJY291bnQgPSAwOworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5 MTUsIGlkKSB7CisJCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKworCQlpZiAoIWludGVsX2VuZ2lu ZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKKwkJCWNvbnRpbnVlOworCisJCWRvIHsKKwkJCXN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKKwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJ CQl0bCA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGk5MTUsICJsaXZlIiwgTlVMTCk7CisJCQlpZiAo SVNfRVJSKHRsKSkgeworCQkJCWVyciA9IFBUUl9FUlIodGwpOworCQkJCWdvdG8gb3V0OworCQkJ fQorCisJCQlpZiAoKnRsLT5od3NwX3NlcW5vICE9IHRsLT5zZXFubykgeworCQkJCXByX2Vycigi VGltZWxpbmUgJWx1IGNyZWF0ZWQgd2l0aCBpbmNvcnJlY3QgYnJlYWRjcnVtYiwgZm91bmQgJXgs IGV4cGVjdGVkICV4XG4iLAorCQkJCSAgICAgICBjb3VudCwgKnRsLT5od3NwX3NlcW5vLCB0bC0+ c2Vxbm8pOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJaTkxNV90aW1lbGluZV9wdXQodGwpOwor CQkJCWdvdG8gb3V0OworCQkJfQorCisJCQlycSA9IHRsX3dyaXRlKHRsLCBlbmdpbmUsIGNvdW50 KTsKKwkJCWlmIChJU19FUlIocnEpKSB7CisJCQkJcHJfZXJyKCJGYWlsZWQgdG8gd3JpdGUgdG8g dGltZWxpbmUhXG4iKTsKKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7CisJCQkJZXJyID0gUFRS X0VSUihycSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCWk5MTVfcmVxdWVzdF93YWl0KHJx LCBJOTE1X1dBSVRfTE9DS0VELCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJCQlpZiAoKnRsLT5o d3NwX3NlcW5vICE9IGNvdW50KSB7CisJCQkJcHJfZXJyKCJJbnZhbGlkIHNlcW5vIHN0b3JlZCBp biB0aW1lbGluZSAlbHUsIGZvdW5kIDB4JXhcbiIsCisJCQkJICAgICAgIGNvdW50LCAqdGwtPmh3 c3Bfc2Vxbm8pOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQl9CisKKwkJCWk5MTVfdGltZWxpbmVf cHV0KHRsKTsKKwkJCWNvdW50Kys7CisKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXQ7CisJCX0g d2hpbGUgKCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7CisJfQorCitvdXQ6CisJaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKKworCXJldHVybiBlcnI7Cit9CisKK2ludCBpOTE1X3RpbWVsaW5l X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CisJCVNVQlRFU1QobGl2ZV9o d3NwX3JlY3ljbGUpLAorCQlTVUJURVNUKGxpdmVfaHdzcF9lbmdpbmUpLAorCQlTVUJURVNUKGxp dmVfaHdzcF9hbHRlcm5hdGUpLAorCX07CisKKwlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywg aTkxNSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j CmluZGV4IDk2OGE3ZTEzOWE2Ny4uYWNkMjdjN2U4MDdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwpAQCAtMzQsMTIgKzM0LDIwIEBAIHN0YXRpYyBz dHJ1Y3QgaW50ZWxfcmluZyAqbW9ja19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKIAljb25zdCB1bnNpZ25lZCBsb25nIHN6ID0gUEFHRV9TSVpFIC8gMjsKIAlzdHJ1Y3Qg bW9ja19yaW5nICpyaW5nOworCWludCBlcnI7CiAKIAlyaW5nID0ga3phbGxvYyhzaXplb2YoKnJp bmcpICsgc3osIEdGUF9LRVJORUwpOwogCWlmICghcmluZykKIAkJcmV0dXJuIE5VTEw7CiAKLQlp OTE1X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1LCAmcmluZy0+dGltZWxpbmUsIGVuZ2luZS0+ bmFtZSk7CisJZXJyID0gaTkxNV90aW1lbGluZV9pbml0KGVuZ2luZS0+aTkxNSwKKwkJCQkgJnJp bmctPnRpbWVsaW5lLAorCQkJCSBlbmdpbmUtPm5hbWUsCisJCQkJIE5VTEwpOworCWlmIChlcnIp IHsKKwkJa2ZyZWUocmluZyk7CisJCXJldHVybiBOVUxMOworCX0KIAogCXJpbmctPmJhc2Uuc2l6 ZSA9IHN6OwogCXJpbmctPmJhc2UuZWZmZWN0aXZlX3NpemUgPSBzejsKQEAgLTIwOSw3ICsyMTcs MTEgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiAJZW5naW5lLT5iYXNlLmVtaXRfYnJlYWRjcnVtYiA9IG1vY2tfZW1p dF9icmVhZGNydW1iOwogCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1vY2tfc3VibWl0 X3JlcXVlc3Q7CiAKLQlpOTE1X3RpbWVsaW5lX2luaXQoaTkxNSwgJmVuZ2luZS0+YmFzZS50aW1l bGluZSwgZW5naW5lLT5iYXNlLm5hbWUpOworCWlmIChpOTE1X3RpbWVsaW5lX2luaXQoaTkxNSwK KwkJCSAgICAgICAmZW5naW5lLT5iYXNlLnRpbWVsaW5lLAorCQkJICAgICAgIGVuZ2luZS0+YmFz ZS5uYW1lLAorCQkJICAgICAgIE5VTEwpKQorCQlnb3RvIGVycl9mcmVlOwogCWk5MTVfdGltZWxp bmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPmJhc2UudGltZWxpbmUsIFRJTUVMSU5FX0VOR0lORSk7 CiAKIAlpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icygmZW5naW5lLT5iYXNlKTsKQEAgLTIy Nyw2ICsyMzksNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptb2NrX2VuZ2luZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIGVycl9icmVhZGNydW1iczoKIAlpbnRlbF9lbmdpbmVf ZmluaV9icmVhZGNydW1icygmZW5naW5lLT5iYXNlKTsKIAlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVu Z2luZS0+YmFzZS50aW1lbGluZSk7CitlcnJfZnJlZToKIAlrZnJlZShlbmdpbmUpOwogCXJldHVy biBOVUxMOwogfQotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK