From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 39/41] drm/i915: Enable multiple timelines Date: Fri, 14 Oct 2016 13:18:31 +0100 Message-ID: <20161014121833.439-40-chris@chris-wilson.co.uk> References: <20161014121833.439-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 mail-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC4376EC32 for ; Fri, 14 Oct 2016 12:19:22 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id x23so12176204lfi.1 for ; Fri, 14 Oct 2016 05:19:22 -0700 (PDT) In-Reply-To: <20161014121833.439-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 V2l0aCB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29udmVydGVkIG92ZXIgdG8gdHJhY2tpbmcgbXVsdGlw bGUgdGltZWxpbmVzIGluCnRoZSBHRU0gQVBJIHdoaWxzdCBwcmVzZXJ2aW5nIHRoZSBlZmZpY2ll bmN5IG9mIHVzaW5nIGEgc2luZ2xlIGV4ZWN1dGlvbgp0aW1lbGluZSBpbnRlcm5hbGx5LCB3ZSBj YW4gbm93IGFzc2lnbiBhIHNlcGFyYXRlIHRpbWVsaW5lIHRvIGV2ZXJ5CmNvbnRleHQgd2l0aCBm dWxsLXBwZ3R0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8 IDEwICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDEw ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICB8ICA0ICst LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYyAgICB8IDExICsrKy0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICB8IDE5ICsrKysrKy0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgfCAgNCArKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgfCA1OSArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUu YyB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmggfCAgMyAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICB8ICA1IC0tLQogMTAg ZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggNGRlNDZhNjljY2E4Li5iZmI2Nzg0MmFmMjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaApAQCAtMzUyOSw2ICszNTI5LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X2dlbV9jb250ZXh0X3B1dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCWty ZWZfcHV0KCZjdHgtPnJlZiwgaTkxNV9nZW1fY29udGV4dF9mcmVlKTsKIH0KIAorc3RhdGljIGlu bGluZSBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKgoraTkxNV9nZW1fY29udGV4dF9sb29rdXBfdGlt ZWxpbmUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOworCisJ dm0gPSBjdHgtPnBwZ3R0ID8gJmN0eC0+cHBndHQtPmJhc2UgOiAmY3R4LT5pOTE1LT5nZ3R0LmJh c2U7CisJcmV0dXJuICZ2bS0+dGltZWxpbmUuZW5naW5lW2VuZ2luZS0+aWRdOworfQorCiBzdGF0 aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KGNvbnN0IHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjKQogewogCXJldHVybiBjLT51c2VyX2hhbmRsZSA9PSBERUZBVUxU X0NPTlRFWFRfSEFORExFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNzA2NGQwOTI1MjNl Li40Zjg4NThkOGFiZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjU3NiwxMiArMjU3 Niw5IEBAIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCSAqIG5vdCBuZWVkIGFuIGVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIoKSBi ZWZvcmUgdGhlIHNlcW5vIHJlYWRzLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVz dCwgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7Ci0JCWlmIChpOTE1X2dlbV9y ZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKKwkJaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21w bGV0ZWQocmVxdWVzdCkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoIWk5MTVfc3dfZmVuY2VfZG9u ZSgmcmVxdWVzdC0+c3VibWl0KSkKLQkJCWJyZWFrOwotCiAJCXJldHVybiByZXF1ZXN0OwogCX0K IApAQCAtMjYwOSw2ICsyNjA2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5l KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3Q7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmluY29tcGxldGVf Y3R4OworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmU7CiAJYm9vbCByaW5nX2h1bmc7 CiAKIAlpZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKQEAgLTI2NDcsNiArMjY0NSwxMCBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocmVxdWVzdCwgJmVuZ2lu ZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQogCQlpZiAocmVxdWVzdC0+Y3R4ID09IGluY29t cGxldGVfY3R4KQogCQkJcmVzZXRfcmVxdWVzdChyZXF1ZXN0KTsKKworCXRpbWVsaW5lID0gaTkx NV9nZW1fY29udGV4dF9sb29rdXBfdGltZWxpbmUoaW5jb21wbGV0ZV9jdHgsIGVuZ2luZSk7CisJ bGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmdGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQor CQlyZXNldF9yZXF1ZXN0KHJlcXVlc3QpOwogfQogCiB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwppbmRleCBkMzExOGRiMjQ0YzQuLjQ2MWFlY2U2YzViZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMzY1LDkgKzM2NSw5IEBAIGk5MTVfZ2Vt X2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiBjdHg7CiAK IAlpZiAoVVNFU19GVUxMX1BQR1RUKGRldikpIHsKLQkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0ID0KLQkJCWk5MTVfcHBndHRfY3JlYXRlKHRvX2k5MTUoZGV2KSwgZmlsZV9wcml2KTsKKwkJ c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OwogCisJCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVh dGUodG9faTkxNShkZXYpLCBmaWxlX3ByaXYsIGN0eC0+bmFtZSk7CiAJCWlmIChJU19FUlIocHBn dHQpKSB7CiAJCQlEUk1fREVCVUdfRFJJVkVSKCJQUEdUVCBzZXR1cCBmYWlsZWQgKCVsZClcbiIs CiAJCQkJCSBQVFJfRVJSKHBwZ3R0KSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3Qu YwppbmRleCA3OWI5NjQxNTJjZDkuLmJkMDg4MTRiMDE1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ldmljdC5jCkBAIC0zMywxNCArMzMsMTcgQEAKICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAKLXN0YXRpYyBib29sCi1ncHVfaXNfaWRsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgYm9vbCBnZ3R0X2lzX2lk bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogeworCXN0cnVjdCBpOTE1X2dn dHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgZGV2X3ByaXYsIGlkKSB7Ci0JCWlmIChpbnRlbF9lbmdpbmVfaXNfYWN0aXZlKGVuZ2luZSkp CisJCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CisKKwkJdGwgPSAmZ2d0dC0+YmFzZS50aW1l bGluZS5lbmdpbmVbZW5naW5lLT5pZF07CisJCWlmIChpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJnRs LT5sYXN0X3JlcXVlc3QpKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTU0LDcgKzE1Nyw3 IEBAIHNlYXJjaF9hZ2FpbjoKIAlpZiAoIWk5MTVfaXNfZ2d0dCh2bSkgfHwgZmxhZ3MgJiBQSU5f Tk9OQkxPQ0spCiAJCXJldHVybiAtRU5PU1BDOwogCi0JaWYgKGdwdV9pc19pZGxlKGRldl9wcml2 KSkgeworCWlmIChnZ3R0X2lzX2lkbGUoZGV2X3ByaXYpKSB7CiAJCS8qIElmIHdlIHN0aWxsIGhh dmUgcGVuZGluZyBwYWdlZmxpcCBjb21wbGV0aW9ucywgZHJvcAogCQkgKiBiYWNrIHRvIHVzZXJz cGFjZSB0byBnaXZlIG91ciB3b3JrcXVldWVzIHRpbWUgdG8KIAkJICogYWNxdWlyZSBvdXIgbG9j a3MgYW5kIHVucGluIHRoZSBvbGQgc2Nhbm91dHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCmluZGV4IDFiMWE0NTllMmI2OC4uZTdhZmFkNTg1OTI5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwpAQCAtMjE4NSw4ICsyMTg1LDEwIEBAIHN0YXRpYyBpbnQgX19od19wcGd0 dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIH0KIAogc3RhdGljIHZvaWQgaTkx NV9hZGRyZXNzX3NwYWNlX2luaXQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCi0JCQkJ ICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKKwkJCQkgICAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICBjb25zdCBjaGFyICpuYW1lKQogewor CWk5MTVfZ2VtX3RpbWVsaW5lX2luaXQoZGV2X3ByaXYsICZ2bS0+dGltZWxpbmUsIG5hbWUpOwog CWRybV9tbV9pbml0KCZ2bS0+bW0sIHZtLT5zdGFydCwgdm0tPnRvdGFsKTsKIAlJTklUX0xJU1Rf SEVBRCgmdm0tPmFjdGl2ZV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmdm0tPmluYWN0aXZlX2xp c3QpOwpAQCAtMjIxNSwxNCArMjIxNywxNSBAQCBzdGF0aWMgdm9pZCBndHRfd3JpdGVfd29ya2Fy b3VuZHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogc3RhdGljIGludCBpOTE1X3BwZ3R0X2lu aXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJICAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAotCQkJICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2KQorCQkJICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAor CQkJICAgY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpbnQgcmV0OwogCiAJcmV0ID0gX19od19wcGd0 dF9pbml0KHBwZ3R0LCBkZXZfcHJpdik7CiAJaWYgKHJldCA9PSAwKSB7CiAJCWtyZWZfaW5pdCgm cHBndHQtPnJlZik7Ci0JCWk5MTVfYWRkcmVzc19zcGFjZV9pbml0KCZwcGd0dC0+YmFzZSwgZGV2 X3ByaXYpOworCQlpOTE1X2FkZHJlc3Nfc3BhY2VfaW5pdCgmcHBndHQtPmJhc2UsIGRldl9wcml2 LCBuYW1lKTsKIAkJcHBndHQtPmJhc2UuZmlsZSA9IGZpbGVfcHJpdjsKIAl9CiAKQEAgLTIyNTgs NyArMjI2MSw4IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAogc3RydWN0IGk5MTVfaHdfcHBndHQgKgogaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZwcml2KQorCQkgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2LAorCQkg IGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OwogCWlu dCByZXQ7CkBAIC0yMjY3LDcgKzIyNzEsNyBAQCBpOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKCFwcGd0dCkKIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CiAKLQlyZXQgPSBpOTE1X3BwZ3R0X2luaXQocHBndHQsIGRldl9wcml2LCBmcHJp dik7CisJcmV0ID0gaTkxNV9wcGd0dF9pbml0KHBwZ3R0LCBkZXZfcHJpdiwgZnByaXYsIG5hbWUp OwogCWlmIChyZXQpIHsKIAkJa2ZyZWUocHBndHQpOwogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwpA QCAtMjI5MCw2ICsyMjk0LDcgQEAgdm9pZCAgaTkxNV9wcGd0dF9yZWxlYXNlKHN0cnVjdCBrcmVm ICprcmVmKQogCVdBUk5fT04oIWxpc3RfZW1wdHkoJnBwZ3R0LT5iYXNlLmluYWN0aXZlX2xpc3Qp KTsKIAlXQVJOX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+YmFzZS51bmJvdW5kX2xpc3QpKTsKIAor CWk5MTVfZ2VtX3RpbWVsaW5lX2ZpbmkoJnBwZ3R0LT5iYXNlLnRpbWVsaW5lKTsKIAlsaXN0X2Rl bCgmcHBndHQtPmJhc2UuZ2xvYmFsX2xpbmspOwogCWRybV9tbV90YWtlZG93bigmcHBndHQtPmJh c2UubW0pOwogCkBAIC0zMjMyLDExICszMjM3LDEzIEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogU3VidHJhY3QgdGhlIGd1YXJk IHBhZ2UgYmVmb3JlIGFkZHJlc3Mgc3BhY2UgaW5pdGlhbGl6YXRpb24gdG8KIAkgKiBzaHJpbmsg dGhlIHJhbmdlIHVzZWQgYnkgZHJtX21tLgogCSAqLworCW11dGV4X2xvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKIAlnZ3R0LT5iYXNlLnRvdGFsIC09IFBBR0VfU0laRTsKLQlpOTE1 X2FkZHJlc3Nfc3BhY2VfaW5pdCgmZ2d0dC0+YmFzZSwgZGV2X3ByaXYpOworCWk5MTVfYWRkcmVz c19zcGFjZV9pbml0KCZnZ3R0LT5iYXNlLCBkZXZfcHJpdiwgIltnbG9iYWxdIik7CiAJZ2d0dC0+ YmFzZS50b3RhbCArPSBQQUdFX1NJWkU7CiAJaWYgKCFIQVNfTExDKGRldl9wcml2KSkKIAkJZ2d0 dC0+YmFzZS5tbS5jb2xvcl9hZGp1c3QgPSBpOTE1X2d0dF9jb2xvcl9hZGp1c3Q7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlpZiAoIWlvX21hcHBpbmdf aW5pdF93YygmZGV2X3ByaXYtPmdndHQubWFwcGFibGUsCiAJCQkJZGV2X3ByaXYtPmdndHQubWFw cGFibGVfYmFzZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggOWYwMzI3ZTUx NzZhLi41MThlNzViNjQyOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0z NDIsNiArMzQyLDcgQEAgc3RydWN0IGk5MTVfcG1sNCB7CiAKIHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgewogCXN0cnVjdCBkcm1fbW0gbW07CisJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lIHRp bWVsaW5lOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJLyogRXZlcnkgYWRkcmVzcyBzcGFj ZSBiZWxvbmdzIHRvIGEgc3RydWN0IGZpbGUgLSBleGNlcHQgZm9yIHRoZSBnbG9iYWwKIAkgKiBH VFQgdGhhdCBpcyBvd25lZCBieSB0aGUgZHJpdmVyIChhbmQgc28gQGZpbGUgaXMgc2V0IHRvIE5V TEwpLiBJbgpAQCAtNjEzLDcgKzYxNCw4IEBAIHZvaWQgaTkxNV9nZ3R0X2NsZWFudXBfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGludCBpOTE1X3BwZ3R0X2luaXRfaHco c3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qg a3JlZiAqa3JlZik7CiBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmcHJpdik7CisJCQkJCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZw cml2LAorCQkJCQljb25zdCBjaGFyICpuYW1lKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3Bw Z3R0X2dldChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7CiAJaWYgKHBwZ3R0KQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmluZGV4IGM1NGZlZTU3YzhmYi4uYTdi NjlhZTBiNjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC0z NCwxMiArMzQsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9mZW5jZV9nZXRfZHJpdmVyX25h bWUoc3RydWN0IGZlbmNlICpmZW5jZSkKIAogc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2Vf Z2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKIHsKLQkvKiBUaW1lbGluZXMg YXJlIGJvdW5kIGJ5IGV2aWN0aW9uIHRvIGEgVk0uIEhvd2V2ZXIsIHNpbmNlCi0JICogd2Ugb25s eSBoYXZlIGEgZ2xvYmFsIHNlcW5vIGF0IHRoZSBtb21lbnQsIHdlIG9ubHkgaGF2ZQotCSAqIGEg c2luZ2xlIHRpbWVsaW5lLiBOb3RlIHRoYXQgZWFjaCB0aW1lbGluZSB3aWxsIGhhdmUKLQkgKiBt dWx0aXBsZSBleGVjdXRpb24gY29udGV4dHMgKGZlbmNlIGNvbnRleHRzKSBhcyB3ZSBhbGxvdwot CSAqIGVuZ2luZXMgd2l0aGluIGEgc2luZ2xlIHRpbWVsaW5lIHRvIGV4ZWN1dGUgaW4gcGFyYWxs ZWwuCi0JICovCiAJcmV0dXJuIHRvX3JlcXVlc3QoZmVuY2UpLT50aW1lbGluZS0+Y29tbW9uLT5u YW1lOwogfQogCkBAIC02NCwxOCArNTgsNiBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgaTkxNV9mZW5j ZV93YWl0KHN0cnVjdCBmZW5jZSAqZmVuY2UsCiAJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KHRv X3JlcXVlc3QoZmVuY2UpLCBpbnRlcnJ1cHRpYmxlLCB0aW1lb3V0KTsKIH0KIAotc3RhdGljIHZv aWQgaTkxNV9mZW5jZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwgY2hhciAqc3RyLCBp bnQgc2l6ZSkKLXsKLQlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIGZlbmNlLT5zZXFubyk7Ci19 Ci0KLXN0YXRpYyB2b2lkIGk5MTVfZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBmZW5j ZSAqZmVuY2UsIGNoYXIgKnN0ciwKLQkJCQkJICBpbnQgc2l6ZSkKLXsKLQlzbnByaW50ZihzdHIs IHNpemUsICIldSIsCi0JCSBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKHRvX3JlcXVlc3QoZmVuY2Up LT5lbmdpbmUpKTsKLX0KLQogc3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBm ZW5jZSAqZmVuY2UpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19y ZXF1ZXN0KGZlbmNlKTsKQEAgLTkwLDggKzcyLDYgQEAgY29uc3Qgc3RydWN0IGZlbmNlX29wcyBp OTE1X2ZlbmNlX29wcyA9IHsKIAkuc2lnbmFsZWQgPSBpOTE1X2ZlbmNlX3NpZ25hbGVkLAogCS53 YWl0ID0gaTkxNV9mZW5jZV93YWl0LAogCS5yZWxlYXNlID0gaTkxNV9mZW5jZV9yZWxlYXNlLAot CS5mZW5jZV92YWx1ZV9zdHIgPSBpOTE1X2ZlbmNlX3ZhbHVlX3N0ciwKLQkudGltZWxpbmVfdmFs dWVfc3RyID0gaTkxNV9mZW5jZV90aW1lbGluZV92YWx1ZV9zdHIsCiB9OwogCiBpbnQgaTkxNV9n ZW1fcmVxdWVzdF9hZGRfdG9fY2xpZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LApAQCAtMTQ3LDcgKzEyNywxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGly ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJR0VNX0JVR19PTighaTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpOwogCiAJdHJhY2VfaTkxNV9nZW1fcmVx dWVzdF9yZXRpcmUocmVxdWVzdCk7CisKKwlzcGluX2xvY2tfaXJxKCZyZXF1ZXN0LT5lbmdpbmUt PnRpbWVsaW5lLT5sb2NrKTsKIAlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5saW5rKTsKKwlzcGlu X3VubG9ja19pcnEoJnJlcXVlc3QtPmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwogCiAJLyogV2Ug a25vdyB0aGUgR1BVIG11c3QgaGF2ZSByZWFkIHRoZSByZXF1ZXN0IHRvIGhhdmUKIAkgKiBzZW50 IHVzIHRoZSBzZXFubyArIGludGVycnVwdCwgc28gdXNlIHRoZSBwb3NpdGlvbgpAQCAtMzEzLDYg KzI5NiwxMiBAQCBzdGF0aWMgaW50IHJlc2VydmVfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgdTMyIF9fdGltZWxpbmVf Z2V0X3NlcW5vKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwpCit7CisJLyogbmV4dF9zZXFu byBvbmx5IGluY3JlbWVudGVkIHVuZGVyIGEgbXV0ZXggKi8KKwlyZXR1cm4gKyt0bC0+bmV4dF9z ZXFuby5jb3VudGVyOworfQorCiBzdGF0aWMgdTMyIHRpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3Qg aTkxNV9nZW1fdGltZWxpbmUgKnRsKQogewogCXJldHVybiBhdG9taWNfaW5jX3JldHVybigmdGwt Pm5leHRfc2Vxbm8pOwpAQCAtMzI1LDYgKzMxNCw3IEBAIHN1Ym1pdF9ub3RpZnkoc3RydWN0IGk5 MTVfc3dfZmVuY2UgKmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKQogCQlj b250YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqcmVxdWVzdCksIHN1Ym1pdCk7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwogCXN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGltZWxpbmU7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MzIgc2Vxbm87CiAK IAlpZiAoc3RhdGUgIT0gRkVOQ0VfQ09NUExFVEUpCkBAIC0zMzIsOSArMzIyLDEyIEBAIHN1Ym1p dF9ub3RpZnkoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vf bm90aWZ5IHN0YXRlKQogCiAJLyogV2lsbCBiZSBjYWxsZWQgZnJvbSBpcnEtY29udGV4dCB3aGVu IHVzaW5nIGZvcmVpZ24gRE1BIGZlbmNlcyAqLwogCi0JdGltZWxpbmUgPSByZXF1ZXN0LT50aW1l bGluZTsKKwl0aW1lbGluZSA9IGVuZ2luZS0+dGltZWxpbmU7CisJR0VNX0JVR19PTih0aW1lbGlu ZSA9PSByZXF1ZXN0LT50aW1lbGluZSk7CiAKLQlzZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5v OworCXNwaW5fbG9ja19pcnFzYXZlKCZ0aW1lbGluZS0+bG9jaywgZmxhZ3MpOworCisJc2Vxbm8g PSB0aW1lbGluZV9nZXRfc2Vxbm8odGltZWxpbmUtPmNvbW1vbik7CiAJR0VNX0JVR19PTighc2Vx bm8pOwogCUdFTV9CVUdfT04oaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFu byhlbmdpbmUpLCBzZXFubykpOwogCkBAIC0zNTMsNiArMzQ2LDEyIEBAIHN1Ym1pdF9ub3RpZnko c3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0 YXRlKQogCQkJCXJlcXVlc3QtPnJpbmctPnZhZGRyICsgcmVxdWVzdC0+cG9zdGZpeCk7CiAJZW5n aW5lLT5zdWJtaXRfcmVxdWVzdChyZXF1ZXN0KTsKIAorCXNwaW5fbG9ja19uZXN0ZWQoJnJlcXVl c3QtPnRpbWVsaW5lLT5sb2NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CisJbGlzdF9tb3ZlX3Rh aWwoJnJlcXVlc3QtPmxpbmssICZ0aW1lbGluZS0+cmVxdWVzdHMpOworCXNwaW5fdW5sb2NrKCZy ZXF1ZXN0LT50aW1lbGluZS0+bG9jayk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aW1l bGluZS0+bG9jaywgZmxhZ3MpOworCiAJcmV0dXJuIE5PVElGWV9ET05FOwogfQogCkBAIC0zOTMs NyArMzkyLDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAJLyogTW92ZSB0aGUgb2xkZXN0IHJlcXVlc3QgdG8gdGhlIHNsYWItY2FjaGUg KGlmIG5vdCBpbiB1c2UhKSAqLwogCXJlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5n aW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCiAJCQkJICAgICAgIHR5cGVvZigqcmVxKSwgbGluayk7 Ci0JaWYgKHJlcSAmJiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQorCWlmIChyZXEg JiYgX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQogCQlpOTE1X2dlbV9yZXF1ZXN0 X3JldGlyZShyZXEpOwogCiAJLyogQmV3YXJlOiBEcmFnb25zIGJlIGZseWluZyBvdmVyaGVhZC4K QEAgLTQzMCwxNCArNDI5LDE1IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAogCQlnb3RvIGVycl91bnJlc2VydmU7CiAJfQogCi0JcmVxLT50 aW1lbGluZSA9IGVuZ2luZS0+dGltZWxpbmU7CisJcmVxLT50aW1lbGluZSA9IGk5MTVfZ2VtX2Nv bnRleHRfbG9va3VwX3RpbWVsaW5lKGN0eCwgZW5naW5lKTsKKwlHRU1fQlVHX09OKHJlcS0+dGlt ZWxpbmUgPT0gZW5naW5lLT50aW1lbGluZSk7CiAKIAlzcGluX2xvY2tfaW5pdCgmcmVxLT5sb2Nr KTsKIAlmZW5jZV9pbml0KCZyZXEtPmZlbmNlLAogCQkgICAmaTkxNV9mZW5jZV9vcHMsCiAJCSAg ICZyZXEtPmxvY2ssCiAJCSAgIHJlcS0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQsCi0JCSAgIHRp bWVsaW5lX2dldF9zZXFubyhyZXEtPnRpbWVsaW5lLT5jb21tb24pKTsKKwkJICAgX190aW1lbGlu ZV9nZXRfc2Vxbm8ocmVxLT50aW1lbGluZS0+Y29tbW9uKSk7CiAKIAlpOTE1X3N3X2ZlbmNlX2lu aXQoJnJlcS0+c3VibWl0LCBzdWJtaXRfbm90aWZ5KTsKIApAQCAtNzIxLDkgKzcyMSwxNCBAQCB2 b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKCZy ZXF1ZXN0LT5zdWJtaXQsICZwcmV2LT5zdWJtaXQsCiAJCQkJCSAgICAgJnJlcXVlc3QtPnN1Ym1p dHEpOwogCisJc3Bpbl9sb2NrX2lycSgmdGltZWxpbmUtPmxvY2spOwogCWxpc3RfYWRkX3RhaWwo JnJlcXVlc3QtPmxpbmssICZ0aW1lbGluZS0+cmVxdWVzdHMpOworCXNwaW5fdW5sb2NrX2lycSgm dGltZWxpbmUtPmxvY2spOworCisJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCh0aW1lbGlu ZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8sCisJCQkJICAgICByZXF1ZXN0LT5mZW5jZS5zZXFubykp OwogCi0JdGltZWxpbmUtPmxhc3RfcGVuZGluZ19zZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5v OworCXRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5v OwogCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsIHJlcXVlc3Qp OwogCiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+cmluZ19saW5rLCAmcmluZy0+cmVxdWVzdF9s aXN0KTsKQEAgLTk4Nyw3ICs5OTIsNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmV0aXJlX3JlcXVl c3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShyZXF1ZXN0LCBuZXh0LAogCQkJCSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMs IGxpbmspIHsKLQkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKKwkJ aWYgKCFfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQogCQkJcmV0dXJuOwog CiAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbWVsaW5lLmMKaW5kZXggYTQ1NzljMTA5MDY2Li40MGQ5ZjAwOTY3M2YgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYwpAQCAtNDgsNiArNDgsNyBA QCBpbnQgaTkxNV9nZW1fdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAkJdGwtPmZlbmNlX2NvbnRleHQgPSBmZW5jZXMrKzsKIAkJdGwtPmNvbW1vbiA9IHRpbWVs aW5lOwogCisJCXNwaW5fbG9ja19pbml0KCZ0bC0+bG9jayk7CiAJCWluaXRfcmVxdWVzdF9hY3Rp dmUoJnRsLT5sYXN0X3JlcXVlc3QsIE5VTEwpOwogCQlJTklUX0xJU1RfSEVBRCgmdGwtPnJlcXVl c3RzKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1l bGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaAppbmRleCAx OGU2MDM5ODBkZDkuLmYyYmY3YjFkNDlhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdGltZWxpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aW1lbGluZS5oCkBAIC0zNCw3ICszNCw4IEBAIHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZTsK IHN0cnVjdCBpbnRlbF90aW1lbGluZSB7CiAJdTY0IGZlbmNlX2NvbnRleHQ7CiAJdTMyIGxhc3Rf c3VibWl0dGVkX3NlcW5vOwotCXUzMiBsYXN0X3BlbmRpbmdfc2Vxbm87CisKKwlzcGlubG9ja190 IGxvY2s7CiAKIAkvKioKIAkgKiBMaXN0IG9mIGJyZWFkY3J1bWJzIGFzc29jaWF0ZWQgd2l0aCBH UFUgcmVxdWVzdHMgY3VycmVudGx5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKaW5kZXggODkxNjI5Y2FhYjZjLi5kY2IxNDVjNjdlODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTU2OSw5ICs1NjksNCBAQCB2b2lkIGludGVsX2VuZ2lu ZV9maW5pX2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB1bnNp Z25lZCBpbnQgaW50ZWxfa2lja193YWl0ZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKIHVuc2lnbmVkIGludCBpbnRlbF9raWNrX3NpZ25hbGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdpbmVfaXNfYWN0aXZl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKLXsKLQlyZXR1cm4gaTkxNV9nZW1fYWN0 aXZlX2lzc2V0KCZlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QpOwotfQotCiAjZW5kaWYg LyogX0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK