From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 11/46] drm/i915: Keep timeline HWSP allocated until idle across the system Date: Wed, 6 Feb 2019 13:03:21 +0000 Message-ID: <20190206130356.18771-12-chris@chris-wilson.co.uk> References: <20190206130356.18771-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 949EC6E93A for ; Wed, 6 Feb 2019 13:04:23 +0000 (UTC) In-Reply-To: <20190206130356.18771-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 aW5nCnY1OiBGaW5hbGx5IHdpdGggYSB0ZXN0Y2FzZSB0byBleGVyY2lzZSB3cmFwYXJvdW5kCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDMwICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMgICAgICAgICAgfCAyNjQgKysrKysr KysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmggICAgICAg ICAgfCAgIDkgKy0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYyAg ICB8IDExMyArKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygrKSwgMzkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCAxNzRkMTVj OWRkMDAuLjEzZTAzODg3OTFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKQEAg LTMzMSwxMSArMzMxLDYgQEAgdm9pZCBpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCiAJfSB3aGlsZSAodG1wICE9IHJxKTsKIH0KIAotc3RhdGljIHUzMiB0 aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQotewotCXJldHVybiB0 bC0+c2Vxbm8gKz0gMSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOwotfQotCiBzdGF0aWMg dm9pZCBtb3ZlX3RvX3RpbWVsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCiAJCQkg ICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKIHsKQEAgLTU1Niw4ICs1NTEsMTAg QEAgc3RydWN0IGk5MTVfcmVxdWVzdCAqCiBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OwotCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGw7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJdTMyIHNlcW5vOwogCWlu dCByZXQ7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK QEAgLTYzMiwyNCArNjI5LDI2IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJCX0KIAl9CiAK LQlycS0+cmN1c3RhdGUgPSBnZXRfc3RhdGVfc3luY2hyb25pemVfcmN1KCk7Ci0KIAlJTklUX0xJ U1RfSEVBRCgmcnEtPmFjdGl2ZV9saXN0KTsKKworCXRsID0gY2UtPnJpbmctPnRpbWVsaW5lOwor CXJldCA9IGk5MTVfdGltZWxpbmVfZ2V0X3NlcW5vKHRsLCBycSwgJnNlcW5vKTsKKwlpZiAocmV0 KQorCQlnb3RvIGVycl9mcmVlOworCiAJcnEtPmk5MTUgPSBpOTE1OwogCXJxLT5lbmdpbmUgPSBl bmdpbmU7CiAJcnEtPmdlbV9jb250ZXh0ID0gY3R4OwogCXJxLT5od19jb250ZXh0ID0gY2U7CiAJ cnEtPnJpbmcgPSBjZS0+cmluZzsKLQlycS0+dGltZWxpbmUgPSBjZS0+cmluZy0+dGltZWxpbmU7 CisJcnEtPnRpbWVsaW5lID0gdGw7CiAJR0VNX0JVR19PTihycS0+dGltZWxpbmUgPT0gJmVuZ2lu ZS0+dGltZWxpbmUpOwotCXJxLT5od3NwX3NlcW5vID0gcnEtPnRpbWVsaW5lLT5od3NwX3NlcW5v OworCXJxLT5od3NwX3NlcW5vID0gdGwtPmh3c3Bfc2Vxbm87CisJcnEtPnJjdXN0YXRlID0gZ2V0 X3N0YXRlX3N5bmNocm9uaXplX3JjdSgpOyAvKiBhY3RzIGFzIHNtcF9tYigpICovCiAKIAlzcGlu X2xvY2tfaW5pdCgmcnEtPmxvY2spOwotCWRtYV9mZW5jZV9pbml0KCZycS0+ZmVuY2UsCi0JCSAg ICAgICAmaTkxNV9mZW5jZV9vcHMsCi0JCSAgICAgICAmcnEtPmxvY2ssCi0JCSAgICAgICBycS0+ dGltZWxpbmUtPmZlbmNlX2NvbnRleHQsCi0JCSAgICAgICB0aW1lbGluZV9nZXRfc2Vxbm8ocnEt PnRpbWVsaW5lKSk7CisJZG1hX2ZlbmNlX2luaXQoJnJxLT5mZW5jZSwgJmk5MTVfZmVuY2Vfb3Bz LCAmcnEtPmxvY2ssCisJCSAgICAgICB0bC0+ZmVuY2VfY29udGV4dCwgc2Vxbm8pOwogCiAJLyog V2UgYnVtcCB0aGUgcmVmIGZvciB0aGUgZmVuY2UgY2hhaW4gKi8KIAlpOTE1X3N3X2ZlbmNlX2lu aXQoJmk5MTVfcmVxdWVzdF9nZXQocnEpLT5zdWJtaXQsIHN1Ym1pdF9ub3RpZnkpOwpAQCAtNzEw LDYgKzcwOSw3IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJR0VNX0JVR19PTighbGlzdF9l bXB0eSgmcnEtPnNjaGVkLnNpZ25hbGVyc19saXN0KSk7CiAJR0VNX0JVR19PTighbGlzdF9lbXB0 eSgmcnEtPnNjaGVkLndhaXRlcnNfbGlzdCkpOwogCitlcnJfZnJlZToKIAlrbWVtX2NhY2hlX2Zy ZWUoZ2xvYmFsLnNsYWJfcmVxdWVzdHMsIHJxKTsKIGVycl91bnJlc2VydmU6CiAJdW5yZXNlcnZl X2d0KGk5MTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGlu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCmluZGV4IGIyMjAyZDJl NThhMi4uMzYwOGU1NDQwMTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RpbWVsaW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCkBA IC02LDE5ICs2LDI5IEBACiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogCi0jaW5jbHVkZSAiaTkx NV90aW1lbGluZS5oIgorI2luY2x1ZGUgImk5MTVfYWN0aXZlLmgiCiAjaW5jbHVkZSAiaTkxNV9z eW5jbWFwLmgiCisjaW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgogCiBzdHJ1Y3QgaTkxNV90aW1l bGluZV9od3NwIHsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlzdHJ1Y3QgaTkxNV9ndF90aW1l bGluZXMgKmd0OwogCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOworCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwogCXU2NCBmcmVlX2JpdG1hcDsKIH07CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5 MTVfdGltZWxpbmVfaHdzcCAqCi1pOTE1X3RpbWVsaW5lX2h3c3AoY29uc3Qgc3RydWN0IGk5MTVf dGltZWxpbmUgKnRsKQorc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lIHsKKwlzdHJ1Y3Qg aTkxNV9hY3RpdmUgYWN0aXZlOworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3A7CisJ dm9pZCAqdmFkZHI7CisJdW5zaWduZWQgaW50IGNhY2hlbGluZSA6IDY7CisJdW5zaWduZWQgaW50 IGZyZWUgOiAxOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq Citod3NwX3RvX2k5MTUoc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcCkKIHsKLQlyZXR1 cm4gdGwtPmh3c3BfZ2d0dC0+cHJpdmF0ZTsKKwlyZXR1cm4gY29udGFpbmVyX29mKGh3c3AtPmd0 LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgZ3QudGltZWxpbmVzKTsKIH0KIAogc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqX19od3NwX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQpAQCAtNzEsNiArODEsNyBAQCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1l bGluZSwgdW5zaWduZWQgaW50ICpjYWNoZWxpbmUpCiAJCXZtYS0+cHJpdmF0ZSA9IGh3c3A7CiAJ CWh3c3AtPnZtYSA9IHZtYTsKIAkJaHdzcC0+ZnJlZV9iaXRtYXAgPSB+MHVsbDsKKwkJaHdzcC0+ Z3QgPSBndDsKIAogCQlzcGluX2xvY2soJmd0LT5od3NwX2xvY2spOwogCQlsaXN0X2FkZCgmaHdz cC0+ZnJlZV9saW5rLCAmZ3QtPmh3c3BfZnJlZV9saXN0KTsKQEAgLTg4LDE0ICs5OSw5IEBAIGh3 c3BfYWxsb2Moc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLCB1bnNpZ25lZCBpbnQgKmNh Y2hlbGluZSkKIAlyZXR1cm4gaHdzcC0+dm1hOwogfQogCi1zdGF0aWMgdm9pZCBod3NwX2ZyZWUo c3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQorc3RhdGljIHZvaWQgX19pZGxlX2h3c3Bf ZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwICpod3NwLCBpbnQgY2FjaGVsaW5lKQogewot CXN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSAmdGltZWxpbmUtPmk5MTUtPmd0LnRpbWVs aW5lczsKLQlzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwICpod3NwOwotCi0JaHdzcCA9IGk5MTVf dGltZWxpbmVfaHdzcCh0aW1lbGluZSk7Ci0JaWYgKCFod3NwKSAvKiBsZWF2ZSBnbG9iYWwgSFdT UCBhbG9uZSEgKi8KLQkJcmV0dXJuOworCXN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSBo d3NwLT5ndDsKIAogCXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7CiAKQEAgLTEwMyw3ICsxMDks OCBAQCBzdGF0aWMgdm9pZCBod3NwX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5l KQogCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCiAJCWxpc3RfYWRkX3RhaWwoJmh3c3AtPmZyZWVf bGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7CiAKLQlod3NwLT5mcmVlX2JpdG1hcCB8PSBCSVRf VUxMKHRpbWVsaW5lLT5od3NwX29mZnNldCAvIENBQ0hFTElORV9CWVRFUyk7CisJR0VNX0JVR19P TihjYWNoZWxpbmUgPj0gQklUU19QRVJfVFlQRShod3NwLT5mcmVlX2JpdG1hcCkpOworCWh3c3At PmZyZWVfYml0bWFwIHw9IEJJVF9VTEwoY2FjaGVsaW5lKTsKIAogCS8qIEFuZCBpZiBubyBvbmUg aXMgbGVmdCB1c2luZyBpdCwgZ2l2ZSB0aGUgcGFnZSBiYWNrIHRvIHRoZSBzeXN0ZW0gKi8KIAlp ZiAoaHdzcC0+ZnJlZV9iaXRtYXAgPT0gfjB1bGwpIHsKQEAgLTExNSw2ICsxMjIsNzggQEAgc3Rh dGljIHZvaWQgaHdzcF9mcmVlKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKIAlzcGlu X3VubG9jaygmZ3QtPmh3c3BfbG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkIF9faWRsZV9jYWNoZWxp bmVfZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQoreworCUdFTV9CVUdf T04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3RpdmUpKTsKKworCWk5MTVfZ2VtX29iamVj dF91bnBpbl9tYXAoY2wtPmh3c3AtPnZtYS0+b2JqKTsKKwlpOTE1X3ZtYV9wdXQoY2wtPmh3c3At PnZtYSk7CisJX19pZGxlX2h3c3BfZnJlZShjbC0+aHdzcCwgY2wtPmNhY2hlbGluZSk7CisKKwlp OTE1X2FjdGl2ZV9maW5pKCZjbC0+YWN0aXZlKTsKKwlrZnJlZShjbCk7Cit9CisKK3N0YXRpYyB2 b2lkIF9fY2FjaGVsaW5lX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKK3sKKwlz dHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KKwkJY29udGFpbmVyX29mKGFjdGl2 ZSwgdHlwZW9mKCpjbCksIGFjdGl2ZSk7CisKKwlpOTE1X3ZtYV91bnBpbihjbC0+aHdzcC0+dm1h KTsKKwlpZiAoY2wtPmZyZWUpCisJCV9faWRsZV9jYWNoZWxpbmVfZnJlZShjbCk7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKgorY2FjaGVsaW5lX2FsbG9jKHN0 cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3AsIHVuc2lnbmVkIGludCBjYWNoZWxpbmUpCit7 CisJc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKKwl2b2lkICp2YWRkcjsKKwor CUdFTV9CVUdfT04oY2FjaGVsaW5lID49IDY0KTsKKworCWNsID0ga21hbGxvYyhzaXplb2YoKmNs KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisK Kwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3AtPnZtYS0+b2JqLCBJOTE1X01B UF9XQik7CisJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJa2ZyZWUoY2wpOworCQlyZXR1cm4gRVJS X0NBU1QodmFkZHIpOworCX0KKworCWk5MTVfdm1hX2dldChod3NwLT52bWEpOworCWNsLT5od3Nw ID0gaHdzcDsKKwljbC0+dmFkZHIgPSB2YWRkcjsKKwljbC0+Y2FjaGVsaW5lID0gY2FjaGVsaW5l OworCWNsLT5mcmVlID0gZmFsc2U7CisKKwlpOTE1X2FjdGl2ZV9pbml0KGh3c3BfdG9faTkxNSho d3NwKSwgJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5lX3JldGlyZSk7CisKKwlyZXR1cm4gY2w7Cit9 CisKK3N0YXRpYyB2b2lkIGNhY2hlbGluZV9hY3F1aXJlKHN0cnVjdCBpOTE1X3RpbWVsaW5lX2Nh Y2hlbGluZSAqY2wpCit7CisJaWYgKGNsICYmIGk5MTVfYWN0aXZlX2FjcXVpcmUoJmNsLT5hY3Rp dmUpKQorCQlfX2k5MTVfdm1hX3BpbihjbC0+aHdzcC0+dm1hKTsKK30KKworc3RhdGljIHZvaWQg Y2FjaGVsaW5lX3JlbGVhc2Uoc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKK3sK KwlpZiAoY2wpCisJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5hY3RpdmUpOworfQorCitzdGF0 aWMgdm9pZCBjYWNoZWxpbmVfZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNs KQoreworCUdFTV9CVUdfT04oY2wtPmZyZWUpOworCWNsLT5mcmVlID0gdHJ1ZTsKKworCWlmIChp OTE1X2FjdGl2ZV9pc19pZGxlKCZjbC0+YWN0aXZlKSkKKwkJX19pZGxlX2NhY2hlbGluZV9mcmVl KGNsKTsKK30KKwogaW50IGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIAkJICAgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKIAkJICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xMzYsMjkgKzIxNSw0MCBAQCBpbnQgaTkxNV90aW1l bGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXRpbWVsaW5lLT5uYW1l ID0gbmFtZTsKIAl0aW1lbGluZS0+cGluX2NvdW50ID0gMDsKIAl0aW1lbGluZS0+aGFzX2luaXRp YWxfYnJlYWRjcnVtYiA9ICFod3NwOworCXRpbWVsaW5lLT5od3NwX2NhY2hlbGluZSA9IE5VTEw7 CiAKLQl0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUjsKIAlp ZiAoIWh3c3ApIHsKKwkJc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKIAkJdW5z aWduZWQgaW50IGNhY2hlbGluZTsKIAogCQlod3NwID0gaHdzcF9hbGxvYyh0aW1lbGluZSwgJmNh Y2hlbGluZSk7CiAJCWlmIChJU19FUlIoaHdzcCkpCiAJCQlyZXR1cm4gUFRSX0VSUihod3NwKTsK IAorCQljbCA9IGNhY2hlbGluZV9hbGxvYyhod3NwLT5wcml2YXRlLCBjYWNoZWxpbmUpOworCQlp ZiAoSVNfRVJSKGNsKSkgeworCQkJX19pZGxlX2h3c3BfZnJlZShod3NwLT5wcml2YXRlLCBjYWNo ZWxpbmUpOworCQkJcmV0dXJuIFBUUl9FUlIoY2wpOworCQl9CisKKwkJdGltZWxpbmUtPmh3c3Bf Y2FjaGVsaW5lID0gY2w7CiAJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IGNhY2hlbGluZSAqIENB Q0hFTElORV9CWVRFUzsKLQl9Ci0JdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldCho d3NwKTsKIAotCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+b2JqLCBJOTE1 X01BUF9XQik7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJaHdzcF9mcmVlKHRpbWVsaW5lKTsK LQkJaTkxNV92bWFfcHV0KGh3c3ApOwotCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisJCXZhZGRy ID0gY2wtPnZhZGRyOworCX0gZWxzZSB7CisJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IEk5MTVf R0VNX0hXU19TRVFOT19BRERSOworCisJCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAo aHdzcC0+b2JqLCBJOTE1X01BUF9XQik7CisJCWlmIChJU19FUlIodmFkZHIpKQorCQkJcmV0dXJu IFBUUl9FUlIodmFkZHIpOwogCX0KIAogCXRpbWVsaW5lLT5od3NwX3NlcW5vID0KIAkJbWVtc2V0 KHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0LCAwLCBDQUNIRUxJTkVfQllURVMpOwogCisJ dGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKKwlHRU1fQlVHX09OKHRp bWVsaW5lLT5od3NwX29mZnNldCA+PSBod3NwLT5zaXplKTsKKwogCXRpbWVsaW5lLT5mZW5jZV9j b250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CiAKIAlzcGluX2xvY2tfaW5pdCgm dGltZWxpbmUtPmxvY2spOwpAQCAtMjM5LDkgKzMyOSwxMiBAQCB2b2lkIGk5MTVfdGltZWxpbmVf ZmluaShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCiAJR0VNX0JVR19PTihpOTE1X2Fj dGl2ZV9yZXF1ZXN0X2lzc2V0KCZ0aW1lbGluZS0+YmFycmllcikpOwogCiAJaTkxNV9zeW5jbWFw X2ZyZWUoJnRpbWVsaW5lLT5zeW5jKTsKLQlod3NwX2ZyZWUodGltZWxpbmUpOwogCi0JaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOworCWlmICh0aW1l bGluZS0+aHdzcF9jYWNoZWxpbmUpCisJCWNhY2hlbGluZV9mcmVlKHRpbWVsaW5lLT5od3NwX2Nh Y2hlbGluZSk7CisJZWxzZQorCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHRpbWVsaW5lLT5o d3NwX2dndHQtPm9iaik7CisKIAlpOTE1X3ZtYV9wdXQodGltZWxpbmUtPmh3c3BfZ2d0dCk7CiB9 CiAKQEAgLTI4NCw2ICszNzcsNyBAQCBpbnQgaTkxNV90aW1lbGluZV9waW4oc3RydWN0IGk5MTVf dGltZWxpbmUgKnRsKQogCQlpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dndHQpICsKIAkJb2Zm c2V0X2luX3BhZ2UodGwtPmh3c3Bfb2Zmc2V0KTsKIAorCWNhY2hlbGluZV9hY3F1aXJlKHRsLT5o d3NwX2NhY2hlbGluZSk7CiAJdGltZWxpbmVfYWRkX3RvX2FjdGl2ZSh0bCk7CiAKIAlyZXR1cm4g MDsKQEAgLTI5Myw2ICszODcsMTI5IEBAIGludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkx NV90aW1lbGluZSAqdGwpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIHUzMiB0aW1lbGluZV9h ZHZhbmNlKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwlHRU1fQlVHX09OKCF0bC0+cGlu X2NvdW50KTsKKwlHRU1fQlVHX09OKHRsLT5zZXFubyAmIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNy dW1iKTsKKworCXJldHVybiB0bC0+c2Vxbm8gKz0gMSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNy dW1iOworfQorCitzdGF0aWMgdm9pZCB0aW1lbGluZV9yb2xsYmFjayhzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGwpCit7CisJdGwtPnNlcW5vIC09IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVt YjsKK30KKworc3RhdGljIG5vaW5saW5lIGludAorX19pOTE1X3RpbWVsaW5lX2dldF9zZXFubyhz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCisJCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAor CQkJICB1MzIgKnNlcW5vKQoreworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7 CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdW5zaWduZWQgaW50IGNhY2hlbGluZTsKKwlpbnQg ZXJyOworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhbiBvdXRzdGFuZGluZyBHUFUgcmVmZXJlbmNl IHRvIHRoaXMgY2FjaGVsaW5lLAorCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2FtcGxlZCBieSBhIEhX IHNlbWFwaG9yZSBvbiBhbm90aGVyIHRpbWVsaW5lLAorCSAqIHdlIGNhbm5vdCB3cmFwYXJvdW5k IG91ciBzZXFubyB2YWx1ZSAodGhlIEhXIHNlbWFwaG9yZSBkb2VzCisJICogYSBzdHJpY3QgZ3Jl YXRlci10aGFuLW9yLWVxdWFscyBjb21wYXJlLCBub3QgaTkxNV9zZXFub19wYXNzZWQpLgorCSAq IFNvIGlmIHRoZSBjYWNoZWxpbmUgaXMgc3RpbGwgYnVzeSwgd2UgbXVzdCBkZXRhY2ggb3Vyc2Vs dmVzCisJICogZnJvbSBpdCBhbmQgbGVhdmUgaXQgaW5mbGlnaHQgYWxvbmdzaWRlIGl0cyB1c2Vy cy4KKwkgKgorCSAqIEhvd2V2ZXIsIGlmIG5vYm9keSBpcyB3YXRjaGluZyBhbmQgd2UgY2FuIGd1 YXJhbnRlZSB0aGF0IG5vYm9keQorCSAqIHdpbGwsIHdlIGNvdWxkIHNpbXBseSByZXVzZSB0aGUg c2FtZSBjYWNoZWxpbmUuCisJICoKKwkgKiBpZiAoaTkxNV9hY3RpdmVfcmVxdWVzdF9pc19zaWdu YWxlZCgmdGwtPmxhc3RfcmVxdWVzdCkgJiYKKwkgKiAgICAgaTkxNV9hY3RpdmVfaXNfc2lnbmFs ZWQoJnRsLT5od3NwX2NhY2hlbGluZS0+YWN0aXZlKSkKKwkgKglyZXR1cm4gMDsKKwkgKgorCSAq IFRoYXQgc2VlbXMgdW5saWtlbHkgZm9yIGEgYnVzeSB0aW1lbGluZSB0aGF0IG5lZWRlZCB0byB3 cmFwIGluCisJICogdGhlIGZpcnN0IHBsYWNlLCBzbyBqdXN0IHJlcGxhY2UgdGhlIGNhY2hlbGlu ZS4KKwkgKi8KKworCXZtYSA9IGh3c3BfYWxsb2ModGwsICZjYWNoZWxpbmUpOworCWlmIChJU19F UlIodm1hKSkgeworCQllcnIgPSBQVFJfRVJSKHZtYSk7CisJCWdvdG8gZXJyX3JvbGxiYWNrOwor CX0KKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5fSElH SCk7CisJaWYgKGVycikgeworCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVs aW5lKTsKKwkJZ290byBlcnJfcm9sbGJhY2s7CisJfQorCisJY2wgPSBjYWNoZWxpbmVfYWxsb2Mo dm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOworCWlmIChJU19FUlIoY2wpKSB7CisJCWVyciA9IFBU Ul9FUlIoY2wpOworCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsK KwkJZ290byBlcnJfdW5waW47CisJfQorCUdFTV9CVUdfT04oY2wtPmh3c3AtPnZtYSAhPSB2bWEp OworCisJLyoKKwkgKiBBdHRhY2ggdGhlIG9sZCBjYWNoZWxpbmUgdG8gdGhlIGN1cnJlbnQgcmVx dWVzdCwgc28gdGhhdCB3ZSBvbmx5CisJICogZnJlZSBpdCBhZnRlciB0aGUgY3VycmVudCByZXF1 ZXN0IGlzIHJldGlyZWQsIHdoaWNoIGVuc3VyZXMgdGhhdAorCSAqIGFsbCB3cml0ZXMgaW50byB0 aGUgY2FjaGVsaW5lIGZyb20gcHJldmlvdXMgcmVxdWVzdHMgYXJlIGNvbXBsZXRlLgorCSAqLwor CWVyciA9IGk5MTVfYWN0aXZlX3JlZigmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUsCisJCQkg ICAgICB0bC0+ZmVuY2VfY29udGV4dCwgcnEpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX2NhY2hl bGluZTsKKworCWNhY2hlbGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7IC8qIG93bmVy c2hpcCBub3cgeGZlcmVkIHRvIHJxICovCisJY2FjaGVsaW5lX2ZyZWUodGwtPmh3c3BfY2FjaGVs aW5lKTsKKworCWk5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOyAvKiBiaW5kaW5nIGtlcHQg YWxpdmUgYnkgb2xkIGNhY2hlbGluZSAqLworCWk5MTVfdm1hX3B1dCh0bC0+aHdzcF9nZ3R0KTsK KworCXRsLT5od3NwX2dndHQgPSBpOTE1X3ZtYV9nZXQodm1hKTsKKworCXRsLT5od3NwX29mZnNl dCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKKwl0bC0+aHdzcF9zZXFubyA9CisJCW1l bXNldChjbC0+dmFkZHIgKyB0bC0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9CWVRFUyk7CisK Kwl0bC0+aHdzcF9vZmZzZXQgKz0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOworCisJY2FjaGVsaW5l X2FjcXVpcmUoY2wpOworCXRsLT5od3NwX2NhY2hlbGluZSA9IGNsOworCisJKnNlcW5vID0gdGlt ZWxpbmVfYWR2YW5jZSh0bCk7CisJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3 c3Bfc2Vxbm8sICpzZXFubykpOworCXJldHVybiAwOworCitlcnJfY2FjaGVsaW5lOgorCWNhY2hl bGluZV9mcmVlKGNsKTsKK2Vycl91bnBpbjoKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworZXJyX3Jv bGxiYWNrOgorCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQg aTkxNV90aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAorCQkJICAg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJICAgIHUzMiAqc2Vxbm8pCit7CisJKnNlcW5v ID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CisKKwkvKiBSZXBsYWNlIHRoZSBIV1NQIG9uIHdyYXBh cm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KKwlpZiAodW5saWtlbHkoISpzZXFubyAmJiB0bC0+ aHdzcF9jYWNoZWxpbmUpKQorCQlyZXR1cm4gX19pOTE1X3RpbWVsaW5lX2dldF9zZXFubyh0bCwg cnEsIHNlcW5vKTsKKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV90aW1lbGluZV9yZWFkX2xv Y2soc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sK KwlHRU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKKwlHRU1fQlVHX09OKCF0bC0+aHdzcF9jYWNo ZWxpbmUpOworCXJldHVybiBpOTE1X2FjdGl2ZV9yZWYoJnRsLT5od3NwX2NhY2hlbGluZS0+YWN0 aXZlLAorCQkJICAgICAgIHJxLT5mZW5jZS5jb250ZXh0LCBycSk7Cit9CisKIHZvaWQgaTkxNV90 aW1lbGluZV91bnBpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCiB7CiAJR0VNX0JVR19PTigh dGwtPnBpbl9jb3VudCk7CkBAIC0zMDAsNiArNTE3LDcgQEAgdm9pZCBpOTE1X3RpbWVsaW5lX3Vu cGluKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKIAkJcmV0dXJuOwogCiAJdGltZWxpbmVfcmVt b3ZlX2Zyb21fYWN0aXZlKHRsKTsKKwljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdzcF9jYWNoZWxp bmUpOwogCiAJLyoKIAkgKiBTaW5jZSB0aGlzIHRpbWVsaW5lIGlzIGlkbGUsIGFsbCBiYXJpZXJz IHVwb24gd2hpY2ggd2Ugd2VyZSB3YWl0aW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RpbWVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5l LmgKaW5kZXggN2JlYzdkMmU0NWJmLi5kNzhlYzZmYmMwMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3RpbWVsaW5lLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJpOTE1X3V0aWxzLmgi CiAKIHN0cnVjdCBpOTE1X3ZtYTsKLXN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3A7CitzdHJ1Y3Qg aTkxNV90aW1lbGluZV9jYWNoZWxpbmU7CiAKIHN0cnVjdCBpOTE1X3RpbWVsaW5lIHsKIAl1NjQg ZmVuY2VfY29udGV4dDsKQEAgLTQ5LDYgKzQ5LDggQEAgc3RydWN0IGk5MTVfdGltZWxpbmUgewog CXN0cnVjdCBpOTE1X3ZtYSAqaHdzcF9nZ3R0OwogCXUzMiBod3NwX29mZnNldDsKIAorCXN0cnVj dCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqaHdzcF9jYWNoZWxpbmU7CisKIAlib29sIGhhc19p bml0aWFsX2JyZWFkY3J1bWI7CiAKIAkvKioKQEAgLTE2MCw2ICsxNjIsMTEgQEAgc3RhdGljIGlu bGluZSBib29sIGk5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcihzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGwsCiB9CiAKIGludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAq dGwpOworaW50IGk5MTVfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 bCwKKwkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCSAgICB1MzIgKnNlcW5vKTsK K2ludCBpOTE1X3RpbWVsaW5lX3JlYWRfbG9jayhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCisJ CQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogdm9pZCBpOTE1X3RpbWVsaW5lX3VucGlu KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCk7CiAKIHZvaWQgaTkxNV90aW1lbGluZXNfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYwppbmRleCAxMmVhNjliMWExZTUuLjg0NDcwMTc1OWZm YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxp bmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5j CkBAIC02NDEsNiArNjQxLDExOCBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9hbHRlcm5hdGUodm9p ZCAqYXJnKQogI3VuZGVmIE5VTV9USU1FTElORVMKIH0KIAorc3RhdGljIGludCBsaXZlX2h3c3Bf d3JhcCh2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bDsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKKwlpbnQgZXJyID0gMDsKKworCS8qCisJICogQWNyb3NzIGEgc2Vxbm8gd3JhcCwgd2UgbmVl ZCB0byBrZWVwIHRoZSBvbGQgY2FjaGVsaW5lIGFsaXZlIGZvcgorCSAqIGZvcmVpZ24gR1BVIHJl ZmVyZW5jZXMuCisJICovCisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK Kwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwl0bCA9IGk5MTVfdGlt ZWxpbmVfY3JlYXRlKGk5MTUsIF9fZnVuY19fLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHRsKSkgewor CQllcnIgPSBQVFJfRVJSKHRsKTsKKwkJZ290byBvdXRfcnBtOworCX0KKwlpZiAoIXRsLT5oYXNf aW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNoZWxpbmUpCisJCWdvdG8gb3V0X2Zy ZWU7CisKKwllcnIgPSBpOTE1X3RpbWVsaW5lX3Bpbih0bCk7CisJaWYgKGVycikKKwkJZ290byBv dXRfZnJlZTsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCWNvbnN0 IHUzMiAqaHdzcF9zZXFub1syXTsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJCXUzMiBz ZXFub1syXTsKKworCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkK KwkJCWNvbnRpbnVlOworCisJCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+ a2VybmVsX2NvbnRleHQpOworCQlpZiAoSVNfRVJSKHJxKSkgeworCQkJZXJyID0gUFRSX0VSUihy cSk7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXRsLT5zZXFubyA9IC00dTsKKworCQllcnIgPSBp OTE1X3RpbWVsaW5lX2dldF9zZXFubyh0bCwgcnEsICZzZXFub1swXSk7CisJCWlmIChlcnIpIHsK KwkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQkJZ290byBvdXQ7CisJCX0KKwkJcHJfZGVidWco InNlcW5vWzBdOiUwOHgsIGh3c3Bfb2Zmc2V0OiUwOHhcbiIsCisJCQkgc2Vxbm9bMF0sIHRsLT5o d3NwX29mZnNldCk7CisKKwkJZXJyID0gZW1pdF9nZ3R0X3N0b3JlX2R3KHJxLCB0bC0+aHdzcF9v ZmZzZXQsIHNlcW5vWzBdKTsKKwkJaWYgKGVycikgeworCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7 CisJCQlnb3RvIG91dDsKKwkJfQorCQlod3NwX3NlcW5vWzBdID0gdGwtPmh3c3Bfc2Vxbm87CisK KwkJZXJyID0gaTkxNV90aW1lbGluZV9nZXRfc2Vxbm8odGwsIHJxLCAmc2Vxbm9bMV0pOworCQlp ZiAoZXJyKSB7CisJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCWdvdG8gb3V0OworCQl9CisJ CXByX2RlYnVnKCJzZXFub1sxXTolMDh4LCBod3NwX29mZnNldDolMDh4XG4iLAorCQkJIHNlcW5v WzFdLCB0bC0+aHdzcF9vZmZzZXQpOworCisJCWVyciA9IGVtaXRfZ2d0dF9zdG9yZV9kdyhycSwg dGwtPmh3c3Bfb2Zmc2V0LCBzZXFub1sxXSk7CisJCWlmIChlcnIpIHsKKwkJCWk5MTVfcmVxdWVz dF9hZGQocnEpOworCQkJZ290byBvdXQ7CisJCX0KKwkJaHdzcF9zZXFub1sxXSA9IHRsLT5od3Nw X3NlcW5vOworCisJCS8qIFdpdGggd3JhcCBzaG91bGQgY29tZSBhIG5ldyBod3NwICovCisJCUdF TV9CVUdfT04oc2Vxbm9bMV0gPj0gc2Vxbm9bMF0pOworCQlHRU1fQlVHX09OKGh3c3Bfc2Vxbm9b MF0gPT0gaHdzcF9zZXFub1sxXSk7CisKKwkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwkJaWYg KGk5MTVfcmVxdWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCBIWiAvIDUpIDwgMCkgewor CQkJcHJfZXJyKCJXYWl0IGZvciB0aW1lbGluZSB3cml0ZXMgdGltZWQgb3V0IVxuIik7CisJCQll cnIgPSAtRUlPOworCQkJZ290byBvdXQ7CisJCX0KKworCQlpZiAoKmh3c3Bfc2Vxbm9bMF0gIT0g c2Vxbm9bMF0gfHwgKmh3c3Bfc2Vxbm9bMV0gIT0gc2Vxbm9bMV0pIHsKKwkJCXByX2VycigiQmFk IHRpbWVsaW5lIHZhbHVlczogZm91bmQgKCV4LCAleCksIGV4cGVjdGVkICgleCwgJXgpXG4iLAor CQkJICAgICAgICpod3NwX3NlcW5vWzBdLCAqaHdzcF9zZXFub1sxXSwKKwkJCSAgICAgICBzZXFu b1swXSwgc2Vxbm9bMV0pOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0OworCQl9CisK KwkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7IC8qIHJlY3ljbGUgSFdTUCAqLworCX0KKwor b3V0OgorCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKKwkJZXJy ID0gLUVJTzsKKworCWk5MTVfdGltZWxpbmVfdW5waW4odGwpOworb3V0X2ZyZWU6CisJaTkxNV90 aW1lbGluZV9wdXQodGwpOworb3V0X3JwbToKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3 YWtlcmVmKTsKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0 dXJuIGVycjsKK30KKwogc3RhdGljIGludCBsaXZlX2h3c3BfcmVjeWNsZSh2b2lkICphcmcpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CkBAIC03MjMsNiArODM1LDcg QEAgaW50IGk5MTVfdGltZWxpbmVfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiAJCVNVQlRFU1QobGl2ZV9od3NwX3JlY3ljbGUpLAogCQlTVUJURVNUKGxpdmVf aHdzcF9lbmdpbmUpLAogCQlTVUJURVNUKGxpdmVfaHdzcF9hbHRlcm5hdGUpLAorCQlTVUJURVNU KGxpdmVfaHdzcF93cmFwKSwKIAl9OwogCiAJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIGk5 MTUpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK