From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 20/25] drm/i915: Keep timeline HWSP allocated until idle across the system Date: Tue, 19 Feb 2019 12:22:10 +0000 Message-ID: <20190219122215.8941-20-chris@chris-wilson.co.uk> References: <20190219122215.8941-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 541BA8926A for ; Tue, 19 Feb 2019 12:22:45 +0000 (UTC) In-Reply-To: <20190219122215.8941-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 SW4gcHJlcGFyYXRpb24gZm9yIGVuYWJsaW5nIEhXIHNlbWFwaG9yZXMsIHdlIG5lZWQgdG8ga2Vl cCBpbiBmbGlnaHQKdGltZWxpbmUgSFdTUCBhbGl2ZSB1bnRpbCBpdHMgdXNlIGFjcm9zcyBlbnRp cmUgc3lzdGVtIGhhcyBjb21wbGV0ZWQsCmFzIGFueSBvdGhlciB0aW1lbGluZSBhY3RpdmUgb24g dGhlIEdQVSBtYXkgc3RpbGwgcmVmZXIgYmFjayB0byB0aGUKYWxyZWFkeSByZXRpcmVkIHRpbWVs aW5lLiBXZSBib3RoIGhhdmUgdG8gZGVsYXkgcmVjeWNsaW5nIGF2YWlsYWJsZQpjYWNoZWxpbmVz IGFuZCB1bnBpbm5pbmcgb2xkIEhXU1AgdW50aWwgdGhlIG5leHQgaWRsZSBwb2ludC4KCkFuIGVh c3kgb3B0aW9uIHdvdWxkIGJlIHRvIHNpbXBseSBrZWVwIGFsbCB1c2VkIEhXU1AgdW50aWwgdGhl IHN5c3RlbSBhcwphIHdob2xlIHdhcyBpZGxlLCBpLmUuIHdlIGNvdWxkIHJlbGVhc2UgdGhlbSBh bGwgYXQgb25jZSBvbiBwYXJraW5nLgpIb3dldmVyLCBvbiBhIGJ1c3kgc3lzdGVtLCB3ZSBtYXkg bmV2ZXIgc2VlIGEgZ2xvYmFsIGlkbGUgcG9pbnQsCmVzc2VudGlhbGx5IG1lYW5pbmcgdGhlIHJl c291cmNlIHdpbGwgYmUgbGVha2VkIHVudGlsIHdlIGFyZSBmb3JjZWQgdG8KZG8gYSBHQyBwYXNz LiBXZSBhbHJlYWR5IGVtcGxveSBhIGZpbmUtZ3JhaW5lZCBpZGxlIGRldGVjdGlvbiBtZWNoYW5p c20KZm9yIHZtYSwgd2hpY2ggd2UgY2FuIHJldXNlIGhlcmUgc28gdGhhdCBlYWNoIGNhY2hlbGlu ZSBjYW4gYmUgZnJlZWQKaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgcmVxdWVzdCB1c2luZyBp dCBpcyByZXRpcmVkLgoKdjM6IEtlZXAgdHJhY2sgb2YgdGhlIGFjdGl2aXR5IG9mIGVhY2ggY2Fj aGVsaW5lLgp2NDogY2FjaGVsaW5lX2ZyZWUoKSBvbiBjYW5jZWxpbmcgdGhlIHNlcW5vIHRyYWNr aW5nCnY1OiBGaW5hbGx5IHdpdGggYSB0ZXN0Y2FzZSB0byBleGVyY2lzZSB3cmFwYXJvdW5kCnY2 OiBQYWNrIGNhY2hlbGluZSBpbnRvIGVtcHR5IGJpdHMgb2YgcGFnZS1hbGlnbmVkIHZhZGRyCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ICN2NQot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICAzMSAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDExICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYyAgICAgICAgICB8IDI3OCArKysr KysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCAgICAg ICAgICB8ICAxMCArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5j ICAgIHwgMTEzICsrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDA0IGluc2VydGlvbnMoKyksIDM5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKaW5kZXggNDAwNTMy MzJiNzk0Li42MzY3YzFjYTZiNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCkBA IC0zMjUsMTEgKzMyNSw2IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQogCX0gd2hpbGUgKHRtcCAhPSBycSk7CiB9CiAKLXN0YXRpYyB1MzIg dGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKLXsKLQlyZXR1cm4g dGwtPnNlcW5vICs9IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKLX0KLQogc3RhdGlj IHZvaWQgbW92ZV90b190aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LAogCQkJ ICAgICBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCiB7CkBAIC01MzIsOCArNTI3LDEw IEBAIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgogaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKLQlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycTsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJc3RydWN0IGk5MTVf dGltZWxpbmUgKnRsOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCXUzMiBzZXFubzsKIAlp bnQgcmV0OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CkBAIC02MDksMjQgKzYwNiwyNyBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCQl9CiAJfQog Ci0JcnEtPnJjdXN0YXRlID0gZ2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSgpOwotCiAJSU5JVF9M SVNUX0hFQUQoJnJxLT5hY3RpdmVfbGlzdCk7CisKKwl0bCA9IGNlLT5yaW5nLT50aW1lbGluZTsK KwlyZXQgPSBpOTE1X3RpbWVsaW5lX2dldF9zZXFubyh0bCwgcnEsICZzZXFubyk7CisJaWYgKHJl dCkKKwkJZ290byBlcnJfZnJlZTsKKwogCXJxLT5pOTE1ID0gaTkxNTsKIAlycS0+ZW5naW5lID0g ZW5naW5lOwogCXJxLT5nZW1fY29udGV4dCA9IGN0eDsKIAlycS0+aHdfY29udGV4dCA9IGNlOwog CXJxLT5yaW5nID0gY2UtPnJpbmc7Ci0JcnEtPnRpbWVsaW5lID0gY2UtPnJpbmctPnRpbWVsaW5l OworCXJxLT50aW1lbGluZSA9IHRsOwogCUdFTV9CVUdfT04ocnEtPnRpbWVsaW5lID09ICZlbmdp bmUtPnRpbWVsaW5lKTsKLQlycS0+aHdzcF9zZXFubyA9IHJxLT50aW1lbGluZS0+aHdzcF9zZXFu bzsKKwlycS0+aHdzcF9zZXFubyA9IHRsLT5od3NwX3NlcW5vOworCXJxLT5od3NwX2NhY2hlbGlu ZSA9IHRsLT5od3NwX2NhY2hlbGluZTsKKwlycS0+cmN1c3RhdGUgPSBnZXRfc3RhdGVfc3luY2hy b25pemVfcmN1KCk7IC8qIGFjdHMgYXMgc21wX21iKCkgKi8KIAogCXNwaW5fbG9ja19pbml0KCZy cS0+bG9jayk7Ci0JZG1hX2ZlbmNlX2luaXQoJnJxLT5mZW5jZSwKLQkJICAgICAgICZpOTE1X2Zl bmNlX29wcywKLQkJICAgICAgICZycS0+bG9jaywKLQkJICAgICAgIHJxLT50aW1lbGluZS0+ZmVu Y2VfY29udGV4dCwKLQkJICAgICAgIHRpbWVsaW5lX2dldF9zZXFubyhycS0+dGltZWxpbmUpKTsK KwlkbWFfZmVuY2VfaW5pdCgmcnEtPmZlbmNlLCAmaTkxNV9mZW5jZV9vcHMsICZycS0+bG9jaywK KwkJICAgICAgIHRsLT5mZW5jZV9jb250ZXh0LCBzZXFubyk7CiAKIAkvKiBXZSBidW1wIHRoZSBy ZWYgZm9yIHRoZSBmZW5jZSBjaGFpbiAqLwogCWk5MTVfc3dfZmVuY2VfaW5pdCgmaTkxNV9yZXF1 ZXN0X2dldChycSktPnN1Ym1pdCwgc3VibWl0X25vdGlmeSk7CkBAIC02ODYsNiArNjg2LDcgQEAg aTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2No ZWQuc2lnbmFsZXJzX2xpc3QpKTsKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2NoZWQu d2FpdGVyc19saXN0KSk7CiAKK2Vycl9mcmVlOgogCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xh Yl9yZXF1ZXN0cywgcnEpOwogZXJyX3VucmVzZXJ2ZToKIAltdXRleF91bmxvY2soJmNlLT5yaW5n LT50aW1lbGluZS0+bXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCBi ZTNkZWQ2YmNmNTYuLmVhMWU2ZjBhZGU1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmgKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IGRybV9maWxlOwogc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Q7CiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0Owogc3RydWN0IGk5MTVfdGltZWxpbmU7Citz dHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmU7CiAKIHN0cnVjdCBpOTE1X2NhcHR1cmVfbGlz dCB7CiAJc3RydWN0IGk5MTVfY2FwdHVyZV9saXN0ICpuZXh0OwpAQCAtMTQ4LDYgKzE0OSwxNiBA QCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKIAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAK KwkvKgorCSAqIElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5vIGZvciB0 aGlzIHJlcXVlc3QgaW4KKwkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2VlcCBhIHJl YWQgcmVmZXJlbmNlIHRvIHRoaXMgYXNzb2NpYXRlZAorCSAqIGNhY2hlbGluZSwgc28gdGhhdCB3 ZSBkbyBub3QgZnJlZSBhbmQgcmVjeWNsZSBpdCBiZWZvcmUgdGhlIGZvcmllZ24KKwkgKiBvYnNl cnZlcnMgaGF2ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgY2Fj aGVsaW5lCisJICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQgaXMgb25s eSB2YWxpZCB3aGlsZSB0aGlzCisJICogcmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBhbmQgZ3Vh cmRlZCBieSB0aGUgdGltZWxpbmUgbXV0ZXguCisJICovCisJc3RydWN0IGk5MTVfdGltZWxpbmVf Y2FjaGVsaW5lICpod3NwX2NhY2hlbGluZTsKKwogCS8qKiBQb3NpdGlvbiBpbiB0aGUgcmluZyBv ZiB0aGUgc3RhcnQgb2YgdGhlIHJlcXVlc3QgKi8KIAl1MzIgaGVhZDsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90aW1lbGluZS5jCmluZGV4IDg3YTgwNTU4ZGEyOC4uZTNmMjYxN2NmMDJjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCkBAIC02LDE5ICs2LDI5IEBACiAKICNpbmNs dWRlICJpOTE1X2Rydi5oIgogCi0jaW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgorI2luY2x1ZGUg Imk5MTVfYWN0aXZlLmgiCiAjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCisjaW5jbHVkZSAiaTkx NV90aW1lbGluZS5oIgogCiBzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwIHsKLQlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKKwlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0OwogCXN0cnVjdCBsaXN0 X2hlYWQgZnJlZV9saW5rOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXU2NCBmcmVlX2JpdG1h cDsKIH07CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqCi1pOTE1 X3RpbWVsaW5lX2h3c3AoY29uc3Qgc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQorc3RydWN0IGk5 MTVfdGltZWxpbmVfY2FjaGVsaW5lIHsKKwlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOworCXN0 cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3A7CisJdW5zaWduZWQgbG9uZyB2YWRkcjsKKyNk ZWZpbmUgQ0FDSEVMSU5FX01BU0sgR0VOTUFTSyg1LCAwKQorI2RlZmluZSBDQUNIRUxJTkVfRlJF RSBCSVQoNikKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKgor aHdzcF90b19pOTE1KHN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3ApCiB7Ci0JcmV0dXJu IHRsLT5od3NwX2dndHQtPnByaXZhdGU7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihod3NwLT5ndCwg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIGd0LnRpbWVsaW5lcyk7CiB9CiAKIHN0YXRpYyBzdHJ1 Y3QgaTkxNV92bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK QEAgLTcxLDYgKzgxLDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxp bmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQogCQl2bWEtPnByaXZhdGUgPSBod3NwOwogCQlo d3NwLT52bWEgPSB2bWE7CiAJCWh3c3AtPmZyZWVfYml0bWFwID0gfjB1bGw7CisJCWh3c3AtPmd0 ID0gZ3Q7CiAKIAkJc3Bpbl9sb2NrKCZndC0+aHdzcF9sb2NrKTsKIAkJbGlzdF9hZGQoJmh3c3At PmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7CkBAIC04OCwxNCArOTksOSBAQCBod3Nw X2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwgdW5zaWduZWQgaW50ICpjYWNo ZWxpbmUpCiAJcmV0dXJuIGh3c3AtPnZtYTsKIH0KIAotc3RhdGljIHZvaWQgaHdzcF9mcmVlKHN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKK3N0YXRpYyB2b2lkIF9faWRsZV9od3NwX2Zy ZWUoc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcCwgaW50IGNhY2hlbGluZSkKIHsKLQlz dHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGlu ZXM7Ci0Jc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcDsKLQotCWh3c3AgPSBpOTE1X3Rp bWVsaW5lX2h3c3AodGltZWxpbmUpOwotCWlmICghaHdzcCkgLyogbGVhdmUgZ2xvYmFsIEhXU1Ag YWxvbmUhICovCi0JCXJldHVybjsKKwlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gaHdz cC0+Z3Q7CiAKIAlzcGluX2xvY2soJmd0LT5od3NwX2xvY2spOwogCkBAIC0xMDMsNyArMTA5LDgg QEAgc3RhdGljIHZvaWQgaHdzcF9mcmVlKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkK IAlpZiAoIWh3c3AtPmZyZWVfYml0bWFwKQogCQlsaXN0X2FkZF90YWlsKCZod3NwLT5mcmVlX2xp bmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwogCi0JaHdzcC0+ZnJlZV9iaXRtYXAgfD0gQklUX1VM TCh0aW1lbGluZS0+aHdzcF9vZmZzZXQgLyBDQUNIRUxJTkVfQllURVMpOworCUdFTV9CVUdfT04o Y2FjaGVsaW5lID49IEJJVFNfUEVSX1RZUEUoaHdzcC0+ZnJlZV9iaXRtYXApKTsKKwlod3NwLT5m cmVlX2JpdG1hcCB8PSBCSVRfVUxMKGNhY2hlbGluZSk7CiAKIAkvKiBBbmQgaWYgbm8gb25lIGlz IGxlZnQgdXNpbmcgaXQsIGdpdmUgdGhlIHBhZ2UgYmFjayB0byB0aGUgc3lzdGVtICovCiAJaWYg KGh3c3AtPmZyZWVfYml0bWFwID09IH4wdWxsKSB7CkBAIC0xMTUsNiArMTIyLDc3IEBAIHN0YXRp YyB2b2lkIGh3c3BfZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCiAJc3Bpbl91 bmxvY2soJmd0LT5od3NwX2xvY2spOwogfQogCitzdGF0aWMgdm9pZCBfX2lkbGVfY2FjaGVsaW5l X2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKK3sKKwlHRU1fQlVHX09O KCFpOTE1X2FjdGl2ZV9pc19pZGxlKCZjbC0+YWN0aXZlKSk7CisKKwlpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKGNsLT5od3NwLT52bWEtPm9iaik7CisJaTkxNV92bWFfcHV0KGNsLT5od3NwLT52 bWEpOworCV9faWRsZV9od3NwX2ZyZWUoY2wtPmh3c3AsIGNsLT52YWRkciAmIENBQ0hFTElORV9N QVNLKTsKKworCWk5MTVfYWN0aXZlX2ZpbmkoJmNsLT5hY3RpdmUpOworCWtmcmVlKGNsKTsKK30K Kworc3RhdGljIHZvaWQgX19jYWNoZWxpbmVfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0 aXZlKQoreworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQorCQljb250YWlu ZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsKKworCWk5MTVfdm1hX3VucGluKGNs LT5od3NwLT52bWEpOworCWlmIChjbC0+dmFkZHIgJiBDQUNIRUxJTkVfRlJFRSkKKwkJX19pZGxl X2NhY2hlbGluZV9mcmVlKGNsKTsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3RpbWVsaW5lX2Nh Y2hlbGluZSAqCitjYWNoZWxpbmVfYWxsb2Moc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdz cCwgdW5zaWduZWQgaW50IGNhY2hlbGluZSkKK3sKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNo ZWxpbmUgKmNsOworCXZvaWQgKnZhZGRyOworCisJR0VNX0JVR19PTihjYWNoZWxpbmUgPiBDQUNI RUxJTkVfTUFTSyk7CisKKwljbCA9IGttYWxsb2Moc2l6ZW9mKCpjbCksIEdGUF9LRVJORUwpOwor CWlmICghY2wpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJdmFkZHIgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChod3NwLT52bWEtPm9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19F UlIodmFkZHIpKSB7CisJCWtmcmVlKGNsKTsKKwkJcmV0dXJuIEVSUl9DQVNUKHZhZGRyKTsKKwl9 CisKKwlpOTE1X3ZtYV9nZXQoaHdzcC0+dm1hKTsKKwljbC0+aHdzcCA9IGh3c3A7CisJY2wtPnZh ZGRyID0gKHVuc2lnbmVkIGxvbmcpdmFkZHI7CisJY2wtPnZhZGRyIHw9IGNhY2hlbGluZTsKKwor CWk5MTVfYWN0aXZlX2luaXQoaHdzcF90b19pOTE1KGh3c3ApLCAmY2wtPmFjdGl2ZSwgX19jYWNo ZWxpbmVfcmV0aXJlKTsKKworCXJldHVybiBjbDsKK30KKworc3RhdGljIHZvaWQgY2FjaGVsaW5l X2FjcXVpcmUoc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKK3sKKwlpZiAoY2wg JiYgaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2wtPmFjdGl2ZSkpCisJCV9faTkxNV92bWFfcGluKGNs LT5od3NwLT52bWEpOworfQorCitzdGF0aWMgdm9pZCBjYWNoZWxpbmVfcmVsZWFzZShzdHJ1Y3Qg aTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQoreworCWlmIChjbCkKKwkJaTkxNV9hY3RpdmVf cmVsZWFzZSgmY2wtPmFjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0 cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2wpCit7CisJR0VNX0JVR19PTihjbC0+dmFk ZHIgJiBDQUNIRUxJTkVfRlJFRSk7CisJY2wtPnZhZGRyIHw9IENBQ0hFTElORV9GUkVFOworCisJ aWYgKGk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3RpdmUpKQorCQlfX2lkbGVfY2FjaGVsaW5l X2ZyZWUoY2wpOworfQorCiBpbnQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCQkgICAgICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLAog CQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTEzNiwyOSArMjE0LDQwIEBAIGludCBpOTE1 X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJdGltZWxpbmUt Pm5hbWUgPSBuYW1lOwogCXRpbWVsaW5lLT5waW5fY291bnQgPSAwOwogCXRpbWVsaW5lLT5oYXNf aW5pdGlhbF9icmVhZGNydW1iID0gIWh3c3A7CisJdGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0g TlVMTDsKIAotCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERS OwogCWlmICghaHdzcCkgeworCQlzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsOwog CQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwogCiAJCWh3c3AgPSBod3NwX2FsbG9jKHRpbWVsaW5l LCAmY2FjaGVsaW5lKTsKIAkJaWYgKElTX0VSUihod3NwKSkKIAkJCXJldHVybiBQVFJfRVJSKGh3 c3ApOwogCisJCWNsID0gY2FjaGVsaW5lX2FsbG9jKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7 CisJCWlmIChJU19FUlIoY2wpKSB7CisJCQlfX2lkbGVfaHdzcF9mcmVlKGh3c3AtPnByaXZhdGUs IGNhY2hlbGluZSk7CisJCQlyZXR1cm4gUFRSX0VSUihjbCk7CisJCX0KKworCQl0aW1lbGluZS0+ aHdzcF9jYWNoZWxpbmUgPSBjbDsKIAkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gY2FjaGVsaW5l ICogQ0FDSEVMSU5FX0JZVEVTOwotCX0KLQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFf Z2V0KGh3c3ApOwogCi0JdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChod3NwLT5vYmos IEk5MTVfTUFQX1dCKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkgewotCQlod3NwX2ZyZWUodGltZWxp bmUpOwotCQlpOTE1X3ZtYV9wdXQoaHdzcCk7Ci0JCXJldHVybiBQVFJfRVJSKHZhZGRyKTsKKwkJ dmFkZHIgPSAodm9pZCAqKShjbC0+dmFkZHIgJiBQQUdFX01BU0spOworCX0gZWxzZSB7CisJCXRp bWVsaW5lLT5od3NwX29mZnNldCA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOworCisJCXZhZGRy ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+b2JqLCBJOTE1X01BUF9XQik7CisJCWlm IChJU19FUlIodmFkZHIpKQorCQkJcmV0dXJuIFBUUl9FUlIodmFkZHIpOwogCX0KIAogCXRpbWVs aW5lLT5od3NwX3NlcW5vID0KIAkJbWVtc2V0KHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0 LCAwLCBDQUNIRUxJTkVfQllURVMpOwogCisJdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1h X2dldChod3NwKTsKKwlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3NwX29mZnNldCA+PSBod3NwLT5z aXplKTsKKwogCXRpbWVsaW5lLT5mZW5jZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxs b2MoMSk7CiAKIAlzcGluX2xvY2tfaW5pdCgmdGltZWxpbmUtPmxvY2spOwpAQCAtMjQwLDkgKzMy OSwxMiBAQCB2b2lkIGk5MTVfdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGlt ZWxpbmUpCiAJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCZ0aW1lbGluZS0+ YmFycmllcikpOwogCiAJaTkxNV9zeW5jbWFwX2ZyZWUoJnRpbWVsaW5lLT5zeW5jKTsKLQlod3Nw X2ZyZWUodGltZWxpbmUpOwogCi0JaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCh0aW1lbGluZS0+ aHdzcF9nZ3R0LT5vYmopOworCWlmICh0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUpCisJCWNhY2hl bGluZV9mcmVlKHRpbWVsaW5lLT5od3NwX2NhY2hlbGluZSk7CisJZWxzZQorCQlpOTE1X2dlbV9v YmplY3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7CisKIAlpOTE1X3ZtYV9w dXQodGltZWxpbmUtPmh3c3BfZ2d0dCk7CiB9CiAKQEAgLTI4NSw2ICszNzcsNyBAQCBpbnQgaTkx NV90aW1lbGluZV9waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQogCQlpOTE1X2dndHRfb2Zm c2V0KHRsLT5od3NwX2dndHQpICsKIAkJb2Zmc2V0X2luX3BhZ2UodGwtPmh3c3Bfb2Zmc2V0KTsK IAorCWNhY2hlbGluZV9hY3F1aXJlKHRsLT5od3NwX2NhY2hlbGluZSk7CiAJdGltZWxpbmVfYWRk X3RvX2FjdGl2ZSh0bCk7CiAKIAlyZXR1cm4gMDsKQEAgLTI5NCw2ICszODcsMTQ0IEBAIGludCBp OTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCiAJcmV0dXJuIGVycjsK IH0KIAorc3RhdGljIHUzMiB0aW1lbGluZV9hZHZhbmNlKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 bCkKK3sKKwlHRU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKKwlHRU1fQlVHX09OKHRsLT5zZXFu byAmIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKTsKKworCXJldHVybiB0bC0+c2Vxbm8gKz0g MSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOworfQorCitzdGF0aWMgdm9pZCB0aW1lbGlu ZV9yb2xsYmFjayhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCit7CisJdGwtPnNlcW5vIC09IDEg KyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKK30KKworc3RhdGljIG5vaW5saW5lIGludAor X19pOTE1X3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCisJCQkg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJICB1MzIgKnNlcW5vKQoreworCXN0cnVjdCBp OTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7CisJdW5zaWduZWQgaW50IGNhY2hlbGluZTsKKwlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl2b2lkICp2YWRkcjsKKwlpbnQgZXJyOworCisJLyoKKwkg KiBJZiB0aGVyZSBpcyBhbiBvdXRzdGFuZGluZyBHUFUgcmVmZXJlbmNlIHRvIHRoaXMgY2FjaGVs aW5lLAorCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2FtcGxlZCBieSBhIEhXIHNlbWFwaG9yZSBvbiBh bm90aGVyIHRpbWVsaW5lLAorCSAqIHdlIGNhbm5vdCB3cmFwYXJvdW5kIG91ciBzZXFubyB2YWx1 ZSAodGhlIEhXIHNlbWFwaG9yZSBkb2VzCisJICogYSBzdHJpY3QgZ3JlYXRlci10aGFuLW9yLWVx dWFscyBjb21wYXJlLCBub3QgaTkxNV9zZXFub19wYXNzZWQpLgorCSAqIFNvIGlmIHRoZSBjYWNo ZWxpbmUgaXMgc3RpbGwgYnVzeSwgd2UgbXVzdCBkZXRhY2ggb3Vyc2VsdmVzCisJICogZnJvbSBp dCBhbmQgbGVhdmUgaXQgaW5mbGlnaHQgYWxvbmdzaWRlIGl0cyB1c2Vycy4KKwkgKgorCSAqIEhv d2V2ZXIsIGlmIG5vYm9keSBpcyB3YXRjaGluZyBhbmQgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IG5v Ym9keQorCSAqIHdpbGwsIHdlIGNvdWxkIHNpbXBseSByZXVzZSB0aGUgc2FtZSBjYWNoZWxpbmUu CisJICoKKwkgKiBpZiAoaTkxNV9hY3RpdmVfcmVxdWVzdF9pc19zaWduYWxlZCgmdGwtPmxhc3Rf cmVxdWVzdCkgJiYKKwkgKiAgICAgaTkxNV9hY3RpdmVfaXNfc2lnbmFsZWQoJnRsLT5od3NwX2Nh Y2hlbGluZS0+YWN0aXZlKSkKKwkgKglyZXR1cm4gMDsKKwkgKgorCSAqIFRoYXQgc2VlbXMgdW5s aWtlbHkgZm9yIGEgYnVzeSB0aW1lbGluZSB0aGF0IG5lZWRlZCB0byB3cmFwIGluCisJICogdGhl IGZpcnN0IHBsYWNlLCBzbyBqdXN0IHJlcGxhY2UgdGhlIGNhY2hlbGluZS4KKwkgKi8KKworCXZt YSA9IGh3c3BfYWxsb2ModGwsICZjYWNoZWxpbmUpOworCWlmIChJU19FUlIodm1hKSkgeworCQll cnIgPSBQVFJfRVJSKHZtYSk7CisJCWdvdG8gZXJyX3JvbGxiYWNrOworCX0KKworCWVyciA9IGk5 MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5fSElHSCk7CisJaWYgKGVycikg eworCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKKwkJZ290byBl cnJfcm9sbGJhY2s7CisJfQorCisJY2wgPSBjYWNoZWxpbmVfYWxsb2Modm1hLT5wcml2YXRlLCBj YWNoZWxpbmUpOworCWlmIChJU19FUlIoY2wpKSB7CisJCWVyciA9IFBUUl9FUlIoY2wpOworCQlf X2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKKwkJZ290byBlcnJfdW5w aW47CisJfQorCUdFTV9CVUdfT04oY2wtPmh3c3AtPnZtYSAhPSB2bWEpOworCisJLyoKKwkgKiBB dHRhY2ggdGhlIG9sZCBjYWNoZWxpbmUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCwgc28gdGhhdCB3 ZSBvbmx5CisJICogZnJlZSBpdCBhZnRlciB0aGUgY3VycmVudCByZXF1ZXN0IGlzIHJldGlyZWQs IHdoaWNoIGVuc3VyZXMgdGhhdAorCSAqIGFsbCB3cml0ZXMgaW50byB0aGUgY2FjaGVsaW5lIGZy b20gcHJldmlvdXMgcmVxdWVzdHMgYXJlIGNvbXBsZXRlLgorCSAqLworCWVyciA9IGk5MTVfYWN0 aXZlX3JlZigmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUsCisJCQkgICAgICB0bC0+ZmVuY2Vf Y29udGV4dCwgcnEpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX2NhY2hlbGluZTsKKworCWNhY2hl bGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7IC8qIG93bmVyc2hpcCBub3cgeGZlcmVk IHRvIHJxICovCisJY2FjaGVsaW5lX2ZyZWUodGwtPmh3c3BfY2FjaGVsaW5lKTsKKworCWk5MTVf dm1hX3VucGluKHRsLT5od3NwX2dndHQpOyAvKiBiaW5kaW5nIGtlcHQgYWxpdmUgYnkgb2xkIGNh Y2hlbGluZSAqLworCWk5MTVfdm1hX3B1dCh0bC0+aHdzcF9nZ3R0KTsKKworCXRsLT5od3NwX2dn dHQgPSBpOTE1X3ZtYV9nZXQodm1hKTsKKworCXZhZGRyID0gKHZvaWQgKikoY2wtPnZhZGRyICYg UEFHRV9NQVNLKTsKKwl0bC0+aHdzcF9vZmZzZXQgPSBjYWNoZWxpbmUgKiBDQUNIRUxJTkVfQllU RVM7CisJdGwtPmh3c3Bfc2Vxbm8gPQorCQltZW1zZXQodmFkZHIgKyB0bC0+aHdzcF9vZmZzZXQs IDAsIENBQ0hFTElORV9CWVRFUyk7CisKKwl0bC0+aHdzcF9vZmZzZXQgKz0gaTkxNV9nZ3R0X29m ZnNldCh2bWEpOworCisJY2FjaGVsaW5lX2FjcXVpcmUoY2wpOworCXRsLT5od3NwX2NhY2hlbGlu ZSA9IGNsOworCisJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CisJR0VNX0JVR19PTihp OTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vxbm8sICpzZXFubykpOworCXJldHVybiAwOwor CitlcnJfY2FjaGVsaW5lOgorCWNhY2hlbGluZV9mcmVlKGNsKTsKK2Vycl91bnBpbjoKKwlpOTE1 X3ZtYV91bnBpbih2bWEpOworZXJyX3JvbGxiYWNrOgorCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsK KwlyZXR1cm4gZXJyOworfQorCitpbnQgaTkxNV90aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5 MTVfdGltZWxpbmUgKnRsLAorCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJICAg IHUzMiAqc2Vxbm8pCit7CisJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CisKKwkvKiBS ZXBsYWNlIHRoZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KKwlpZiAo dW5saWtlbHkoISpzZXFubyAmJiB0bC0+aHdzcF9jYWNoZWxpbmUpKQorCQlyZXR1cm4gX19pOTE1 X3RpbWVsaW5lX2dldF9zZXFubyh0bCwgcnEsIHNlcW5vKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGNhY2hlbGluZV9yZWYoc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpj bCwKKwkJCSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlyZXR1cm4gaTkxNV9hY3RpdmVf cmVmKCZjbC0+YWN0aXZlLCBycS0+ZmVuY2UuY29udGV4dCwgcnEpOworfQorCitpbnQgaTkxNV90 aW1lbGluZV9yZWFkX2xvY2soc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSwgc3RydWN0IGk5MTVf cmVxdWVzdCAqdG8pCit7CisJaW50IGVycjsKKworCUdFTV9CVUdfT04odG8tPnRpbWVsaW5lID09 IGZyb20tPnRpbWVsaW5lKTsKKworCW11dGV4X2xvY2tfbmVzdGVkKCZmcm9tLT50aW1lbGluZS0+ bXV0ZXgsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKKwllcnIgPSBpOTE1X3JlcXVlc3RfY29tcGxl dGVkKGZyb20pOworCWlmICghZXJyKQorCQllcnIgPSBjYWNoZWxpbmVfcmVmKGZyb20tPmh3c3Bf Y2FjaGVsaW5lLCB0byk7CisJbXV0ZXhfdW5sb2NrKCZmcm9tLT50aW1lbGluZS0+bXV0ZXgpOwor CisJcmV0dXJuIGVycjsKK30KKwogdm9pZCBpOTE1X3RpbWVsaW5lX3VucGluKHN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0bCkKIHsKIAlHRU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKQEAgLTMwMSw2 ICs1MzIsNyBAQCB2b2lkIGk5MTVfdGltZWxpbmVfdW5waW4oc3RydWN0IGk5MTVfdGltZWxpbmUg KnRsKQogCQlyZXR1cm47CiAKIAl0aW1lbGluZV9yZW1vdmVfZnJvbV9hY3RpdmUodGwpOworCWNh Y2hlbGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7CiAKIAkvKgogCSAqIFNpbmNlIHRo aXMgdGltZWxpbmUgaXMgaWRsZSwgYWxsIGJhcmllcnMgdXBvbiB3aGljaCB3ZSB3ZXJlIHdhaXRp bmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaAppbmRleCAzNmMzODQ5ZjcxMDguLjVh Njc0MjYwZjViOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGlu ZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaApAQCAtMzQsNyAr MzQsNyBAQAogI2luY2x1ZGUgImk5MTVfdXRpbHMuaCIKIAogc3RydWN0IGk5MTVfdm1hOwotc3Ry dWN0IGk5MTVfdGltZWxpbmVfaHdzcDsKK3N0cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZTsK IAogc3RydWN0IGk5MTVfdGltZWxpbmUgewogCXU2NCBmZW5jZV9jb250ZXh0OwpAQCAtNTEsNiAr NTEsOCBAQCBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7CiAJc3RydWN0IGk5MTVfdm1hICpod3NwX2dn dHQ7CiAJdTMyIGh3c3Bfb2Zmc2V0OwogCisJc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5l ICpod3NwX2NhY2hlbGluZTsKKwogCWJvb2wgaGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKIAogCS8q KgpAQCAtMTYyLDggKzE2NCwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90aW1lbGluZV9z eW5jX2lzX2xhdGVyKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKIH0KIAogaW50IGk5MTVfdGlt ZWxpbmVfcGluKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCk7CitpbnQgaTkxNV90aW1lbGluZV9n ZXRfc2Vxbm8oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAorCQkJICAgIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLAorCQkJICAgIHUzMiAqc2Vxbm8pOwogdm9pZCBpOTE1X3RpbWVsaW5lX3VucGlu KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCk7CiAKK2ludCBpOTE1X3RpbWVsaW5lX3JlYWRfbG9j ayhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLAorCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnVudGlsKTsKKwogdm9pZCBpOTE1X3RpbWVsaW5lc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKIHZvaWQgaTkxNV90aW1lbGluZXNfcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7CiB2b2lkIGk5MTVfdGltZWxpbmVzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Rp bWVsaW5lLmMKaW5kZXggMTJlYTY5YjFhMWU1Li44NDQ3MDE3NTlmZmMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYwpAQCAtNjQxLDYgKzY0MSwx MTggQEAgc3RhdGljIGludCBsaXZlX2h3c3BfYWx0ZXJuYXRlKHZvaWQgKmFyZykKICN1bmRlZiBO VU1fVElNRUxJTkVTCiB9CiAKK3N0YXRpYyBpbnQgbGl2ZV9od3NwX3dyYXAodm9pZCAqYXJnKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7CisJZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQ7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJaW50IGVyciA9IDA7 CisKKwkvKgorCSAqIEFjcm9zcyBhIHNlcW5vIHdyYXAsIHdlIG5lZWQgdG8ga2VlcCB0aGUgb2xk IGNhY2hlbGluZSBhbGl2ZSBmb3IKKwkgKiBmb3JlaWduIEdQVSByZWZlcmVuY2VzLgorCSAqLwor CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJdGwgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShpOTE1 LCBfX2Z1bmNfXywgTlVMTCk7CisJaWYgKElTX0VSUih0bCkpIHsKKwkJZXJyID0gUFRSX0VSUih0 bCk7CisJCWdvdG8gb3V0X3JwbTsKKwl9CisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVt YiB8fCAhdGwtPmh3c3BfY2FjaGVsaW5lKQorCQlnb3RvIG91dF9mcmVlOworCisJZXJyID0gaTkx NV90aW1lbGluZV9waW4odGwpOworCWlmIChlcnIpCisJCWdvdG8gb3V0X2ZyZWU7CisKKwlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQljb25zdCB1MzIgKmh3c3Bfc2Vxbm9b Ml07CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQl1MzIgc2Vxbm9bMl07CisKKwkJaWYg KCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpCisJCQljb250aW51ZTsKKwor CQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsK KwkJaWYgKElTX0VSUihycSkpIHsKKwkJCWVyciA9IFBUUl9FUlIocnEpOworCQkJZ290byBvdXQ7 CisJCX0KKworCQl0bC0+c2Vxbm8gPSAtNHU7CisKKwkJZXJyID0gaTkxNV90aW1lbGluZV9nZXRf c2Vxbm8odGwsIHJxLCAmc2Vxbm9bMF0pOworCQlpZiAoZXJyKSB7CisJCQlpOTE1X3JlcXVlc3Rf YWRkKHJxKTsKKwkJCWdvdG8gb3V0OworCQl9CisJCXByX2RlYnVnKCJzZXFub1swXTolMDh4LCBo d3NwX29mZnNldDolMDh4XG4iLAorCQkJIHNlcW5vWzBdLCB0bC0+aHdzcF9vZmZzZXQpOworCisJ CWVyciA9IGVtaXRfZ2d0dF9zdG9yZV9kdyhycSwgdGwtPmh3c3Bfb2Zmc2V0LCBzZXFub1swXSk7 CisJCWlmIChlcnIpIHsKKwkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQkJZ290byBvdXQ7CisJ CX0KKwkJaHdzcF9zZXFub1swXSA9IHRsLT5od3NwX3NlcW5vOworCisJCWVyciA9IGk5MTVfdGlt ZWxpbmVfZ2V0X3NlcW5vKHRsLCBycSwgJnNlcW5vWzFdKTsKKwkJaWYgKGVycikgeworCQkJaTkx NV9yZXF1ZXN0X2FkZChycSk7CisJCQlnb3RvIG91dDsKKwkJfQorCQlwcl9kZWJ1Zygic2Vxbm9b MV06JTA4eCwgaHdzcF9vZmZzZXQ6JTA4eFxuIiwKKwkJCSBzZXFub1sxXSwgdGwtPmh3c3Bfb2Zm c2V0KTsKKworCQllcnIgPSBlbWl0X2dndHRfc3RvcmVfZHcocnEsIHRsLT5od3NwX29mZnNldCwg c2Vxbm9bMV0pOworCQlpZiAoZXJyKSB7CisJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCWdv dG8gb3V0OworCQl9CisJCWh3c3Bfc2Vxbm9bMV0gPSB0bC0+aHdzcF9zZXFubzsKKworCQkvKiBX aXRoIHdyYXAgc2hvdWxkIGNvbWUgYSBuZXcgaHdzcCAqLworCQlHRU1fQlVHX09OKHNlcW5vWzFd ID49IHNlcW5vWzBdKTsKKwkJR0VNX0JVR19PTihod3NwX3NlcW5vWzBdID09IGh3c3Bfc2Vxbm9b MV0pOworCisJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCisJCWlmIChpOTE1X3JlcXVlc3Rfd2Fp dChycSwgSTkxNV9XQUlUX0xPQ0tFRCwgSFogLyA1KSA8IDApIHsKKwkJCXByX2VycigiV2FpdCBm b3IgdGltZWxpbmUgd3JpdGVzIHRpbWVkIG91dCFcbiIpOworCQkJZXJyID0gLUVJTzsKKwkJCWdv dG8gb3V0OworCQl9CisKKwkJaWYgKCpod3NwX3NlcW5vWzBdICE9IHNlcW5vWzBdIHx8ICpod3Nw X3NlcW5vWzFdICE9IHNlcW5vWzFdKSB7CisJCQlwcl9lcnIoIkJhZCB0aW1lbGluZSB2YWx1ZXM6 IGZvdW5kICgleCwgJXgpLCBleHBlY3RlZCAoJXgsICV4KVxuIiwKKwkJCSAgICAgICAqaHdzcF9z ZXFub1swXSwgKmh3c3Bfc2Vxbm9bMV0sCisJCQkgICAgICAgc2Vxbm9bMF0sIHNlcW5vWzFdKTsK KwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWk5MTVfcmV0aXJlX3Jl cXVlc3RzKGk5MTUpOyAvKiByZWN5Y2xlIEhXU1AgKi8KKwl9CisKK291dDoKKwlpZiAoaWd0X2Zs dXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJCWVyciA9IC1FSU87CisKKwlpOTE1 X3RpbWVsaW5lX3VucGluKHRsKTsKK291dF9mcmVlOgorCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsK K291dF9ycG06CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CisJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldHVybiBlcnI7Cit9CisKIHN0 YXRpYyBpbnQgbGl2ZV9od3NwX3JlY3ljbGUodm9pZCAqYXJnKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gYXJnOwpAQCAtNzIzLDYgKzgzNSw3IEBAIGludCBpOTE1X3RpbWVs aW5lX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlTVUJU RVNUKGxpdmVfaHdzcF9yZWN5Y2xlKSwKIAkJU1VCVEVTVChsaXZlX2h3c3BfZW5naW5lKSwKIAkJ U1VCVEVTVChsaXZlX2h3c3BfYWx0ZXJuYXRlKSwKKwkJU1VCVEVTVChsaXZlX2h3c3Bfd3JhcCks CiAJfTsKIAogCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBpOTE1KTsKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4