From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/9] drm/i915: Engine busy time tracking Date: Wed, 11 Oct 2017 13:55:13 +0100 Message-ID: <20171011125517.1372-6-tvrtko.ursulin@linux.intel.com> References: <20171011125517.1372-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4967F6E681 for ; Wed, 11 Oct 2017 12:55:30 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id q124so1791260wmb.5 for ; Wed, 11 Oct 2017 05:55:30 -0700 (PDT) In-Reply-To: <20171011125517.1372-1-tvrtko.ursulin@linux.intel.com> 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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRyYWNrIHRv dGFsIHRpbWUgcmVxdWVzdHMgaGF2ZSBiZWVuIGV4ZWN1dGluZyBvbiB0aGUgaGFyZHdhcmUuCgpX ZSBhZGQgbmV3IGtlcm5lbCBBUEkgdG8gYWxsb3cgc29mdHdhcmUgdHJhY2tpbmcgb2YgdGltZSBH UFUKZW5naW5lcyBhcmUgc3BlbmRpbmcgZXhlY3V0aW5nIHJlcXVlc3RzLgoKQm90aCBwZXItZW5n aW5lIGFuZCBnbG9iYWwgQVBJIGlzIGFkZGVkIHdpdGggdGhlIGxhdHRlciBhbHNvCmJlaW5nIGV4 cG9ydGVkIGZvciB1c2UgYnkgZXh0ZXJuYWwgdXNlcnMuCgp2MjoKICogU3F1YXNoZWQgd2l0aCB0 aGUgaW50ZXJuYWwgQVBJLgogKiBEcm9wcGVkIHN0YXRpYyBrZXkuCiAqIE1hZGUgcGVyLWVuZ2lu ZS4KICogU3RvcmUgdGltZSBpbiBtb25vdG9uaWMga3RpbWUuCgp2MzogTW92ZWQgc3RhdHMgY2xl YXJpbmcgdG8gZGlzYWJsZS4KCnY0OgogKiBDb21tZW50cy4KICogRG9uJ3QgZXhwb3J0IHRoZSBB UEkganVzdCB5ZXQuCgp2NTogV2hpdGVzcGFjZSBjbGVhbnVwLgoKdjY6CiAqIFJlbmFtZSByZWYg dG8gYWN0aXZlLgogKiBEcm9wIGVuZ2luZSBhZ2dyZWdhdGUgc3RhdHMgZm9yIG5vdy4KICogQWNj b3VudCBpbml0aWFsIGJ1c3kgcGVyaW9kIGFmdGVyIGVuYWJsaW5nIHN0YXRzLgoKdjc6CiAqIFJl YmFzZS4KCnY4OgogKiBNb3ZlIGNvbnRleHQgaW4gbm90aWZpY2F0aW9uIGFmdGVyIHRoZSBub3Rp Zmllci4gKENocmlzIFdpbHNvbikKCnY5OgoKSW4gY2FzZXMgd2hlcmUgc3RhdHMgdHJhY2tpbmcg aXMgZ2V0dGluZyBkaXNhYmxlZCB3aGlsZSB0aGVyZSBpcwphbiBhY3RpdmUgY29udGV4dCBvbiBh biBlbmdpbmUsIGFkZCB1cCB0aGUgY3VycmVudCB2YWx1ZSB0byB0aGUKdG90YWwuIFRoaXMgYWxz byBpbXBsaWVzIHdlIGRvbid0IGNsZWFyIHRoZSB0b3RhbCB3aGVuIHRyYWNraW5nCmlzIGRpc2Fi bGVkIGFueSBsb25nZXIuIFRoZXJlIGlzIG5vIHJlYWwgbmVlZCB0byBkbyBzbyBiZWNhdXNlCndl IGRlZmluZSB0aGUgc3RhdHMgYXMgcmVsYXRpdmUgd2hpbGUgZW5hYmxlZCwgbWVhbmluZwpjb21w YXJpc29uIGJldHdlZW4gdHdvIHNhbXBsZXMgd2hpbGUgdHJhY2tpbmcgaXMgZW5hYmxlZCBpcyB0 aGUKdmFsaWQgdXNhZ2UuIEhvd2V2ZXIsIHdoZW4gYnVzeSBzdGF0cyB3aWxsIGxhdGVyIGJlIHBs dWdnZWQgaW50bwp0aGUgcGVyZiBQTVUgQVBJLCBpdCBpcyBiZW5lZmljaWFsIHRvIG5vdCByZXNl dCB0aGUgdG90YWwsIHNpbmNlCnRoZSBQTVUgY29yZSBsaWtlcyB0byBkbyBzb21lIGNvdW50ZXIg ZGlzYWJsZS9lbmFibGUgY3ljbGVzIG9uCnN0YXJ0dXAsIGFuZCB3aGlsZSBkb2luZyBzbyBkdXJp bmcgYSBzaW5nbGUgbG9uZyBjb250ZXh0CmV4ZWN1dGluZyBvbiBhbiBlbmdpbmUgd2Ugd291bGQg bG9zZSBzb21lIGFjY3VyYWN5IGFuZCBzbyBtYWtlCnVuaXQgdGVzdGluZyBtb3JlIGRpZmZpY3Vs dCB0aGFuIG5lZWRzIHRvIGJlLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPiAodjgpCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMgIHwgODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDE4MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA0YzdkN2FkZTk5ZDguLjFkYmU5OTM3MzA1NyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTIzNiw2ICsyMzYsOCBAQCBp bnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCS8q IE5vdGhpbmcgdG8gZG8gaGVyZSwgZXhlY3V0ZSBpbiBvcmRlciBvZiBkZXBlbmRlbmNpZXMgKi8K IAllbmdpbmUtPnNjaGVkdWxlID0gTlVMTDsKIAorCXNwaW5fbG9ja19pbml0KCZlbmdpbmUtPnN0 YXRzLmxvY2spOworCiAJQVRPTUlDX0lOSVRfTk9USUZJRVJfSEVBRCgmZW5naW5lLT5jb250ZXh0 X3N0YXR1c19ub3RpZmllcik7CiAKIAlkZXZfcHJpdi0+ZW5naW5lX2NsYXNzW2luZm8tPmNsYXNz XVtpbmZvLT5pbnN0YW5jZV0gPSBlbmdpbmU7CkBAIC0xODExLDYgKzE4MTMsOTEgQEAgaW50ZWxf ZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFz cywgdTggaW5zdGFuY2UpCiAJcmV0dXJuIGk5MTUtPmVuZ2luZV9jbGFzc1tjbGFzc11baW5zdGFu Y2VdOwogfQogCisvKioKKyAqIGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoKSAtIEVuYWJsZSBl bmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdpbmUKKyAqIEBlbmdpbmU6IGVuZ2luZSB0byBlbmFi bGUgc3RhdHMgY29sbGVjdGlvbgorICoKKyAqIFN0YXJ0IGNvbGxlY3RpbmcgdGhlIGVuZ2luZSBi dXN5bmVzcyBkYXRhIGZvciBAZW5naW5lLgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9y IGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KKyAqLworaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3Rh dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCisJCXJldHVybiAt RU5PREVWOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3Mp OworCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gfjApCisJCWdvdG8gYnVzeTsKKwlpZiAo ZW5naW5lLT5zdGF0cy5lbmFibGVkKysgPT0gMCkKKwkJZW5naW5lLT5zdGF0cy5lbmFibGVkX2F0 ID0ga3RpbWVfZ2V0KCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5s b2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKKworYnVzeToKKwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCXJldHVybiAtRUJVU1k7Cit9CisK K3N0YXRpYyBrdGltZV90IF9faW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQoreworCWt0aW1lX3QgdG90YWwgPSBlbmdpbmUtPnN0YXRzLnRv dGFsOworCisJLyoKKwkgKiBJZiB0aGUgZW5naW5lIGlzIGV4ZWN1dGluZyBzb21ldGhpbmcgYXQg dGhlIG1vbWVudAorCSAqIGFkZCBpdCB0byB0aGUgdG90YWwuCisJICovCisJaWYgKGVuZ2luZS0+ c3RhdHMuYWN0aXZlKQorCQl0b3RhbCA9IGt0aW1lX2FkZCh0b3RhbCwKKwkJCQkgIGt0aW1lX3N1 YihrdGltZV9nZXQoKSwgZW5naW5lLT5zdGF0cy5zdGFydCkpOworCisJcmV0dXJuIHRvdGFsOwor fQorCisvKioKKyAqIGludGVsX2VuZ2luZV9nZXRfYnVzeV90aW1lKCkgLSBSZXR1cm4gY3VycmVu dCBhY2N1bXVsYXRlZCBlbmdpbmUgYnVzeW5lc3MKKyAqIEBlbmdpbmU6IGVuZ2luZSB0byByZXBv cnQgb24KKyAqCisgKiBSZXR1cm5zIGFjY3VtdWxhdGVkIHRpbWUgQGVuZ2luZSB3YXMgYnVzeSBz aW5jZSBlbmdpbmUgc3RhdHMgd2VyZSBlbmFibGVkLgorICovCitrdGltZV90IGludGVsX2VuZ2lu ZV9nZXRfYnVzeV90aW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlrdGlt ZV90IHRvdGFsOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgm ZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJdG90YWwgPSBfX2ludGVsX2VuZ2luZV9nZXRf YnVzeV90aW1lKGVuZ2luZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0 cy5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gdG90YWw7Cit9CisKKy8qKgorICogaW50ZWxfZGlz YWJsZV9lbmdpbmVfc3RhdHMoKSAtIERpc2FibGUgZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gZW5n aW5lCisgKiBAZW5naW5lOiBlbmdpbmUgdG8gZGlzYWJsZSBzdGF0cyBjb2xsZWN0aW9uCisgKgor ICogU3RvcHMgY29sbGVjdGluZyB0aGUgZW5naW5lIGJ1c3luZXNzIGRhdGEgZm9yIEBlbmdpbmUu CisgKi8KK3ZvaWQgaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWk5MTVfbW9k cGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwlXQVJOX09OX09OQ0UoZW5naW5lLT5zdGF0 cy5lbmFibGVkID09IDApOworCWlmICgtLWVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKSB7CisJ CWVuZ2luZS0+c3RhdHMudG90YWwgPSBfX2ludGVsX2VuZ2luZV9nZXRfYnVzeV90aW1lKGVuZ2lu ZSk7CisJCWVuZ2luZS0+c3RhdHMuYWN0aXZlID0gMDsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cit9CisKICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUu YyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCA1MmE3Yzc0MTc2MmQuLjE0 NWYyZDlkMGZlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTQwNCwxMSArNDA0LDEz IEBAIHN0YXRpYyBpbmxpbmUgdm9pZAogZXhlY2xpc3RzX2NvbnRleHRfc2NoZWR1bGVfaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIHsKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0 dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKKwlpbnRlbF9lbmdpbmVf Y29udGV4dF9pbihycS0+ZW5naW5lKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBleGVjbGlz dHNfY29udGV4dF9zY2hlZHVsZV9vdXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkK IHsKKwlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQocnEtPmVuZ2luZSk7CiAJZXhlY2xpc3RzX2Nv bnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQpOwogfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMjg5YmIyNWRkOTY0 Li44NTA2MjA2OTk0NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK QEAgLTU0Niw2ICs1NDYsMzggQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJICogY2VydGFp biBiaXRzIHRvIGVuY29kZSB0aGUgY29tbWFuZCBsZW5ndGggaW4gdGhlIGhlYWRlcikuCiAJICov CiAJdTMyICgqZ2V0X2NtZF9sZW5ndGhfbWFzaykodTMyIGNtZF9oZWFkZXIpOworCisJc3RydWN0 IHsKKwkJLyoqCisJCSAqIEBsb2NrOiBMb2NrIHByb3RlY3RpbmcgdGhlIGJlbG93IGZpZWxkcy4K KwkJICovCisJCXNwaW5sb2NrX3QgbG9jazsKKwkJLyoqCisJCSAqIEBlbmFibGVkOiBSZWZlcmVu Y2UgY291bnQgaW5kaWNhdGluZyBudW1iZXIgb2YgbGlzdGVuZXJzLgorCQkgKi8KKwkJdW5zaWdu ZWQgaW50IGVuYWJsZWQ7CisJCS8qKgorCQkgKiBAYWN0aXZlOiBOdW1iZXIgb2YgY29udGV4dHMg Y3VycmVudGx5IHNjaGVkdWxlZCBpbi4KKwkJICovCisJCXVuc2lnbmVkIGludCBhY3RpdmU7CisJ CS8qKgorCQkgKiBAZW5hYmxlZF9hdDogVGltZXN0YW1wIHdoZW4gYnVzeSBzdGF0cyB3ZXJlIGVu YWJsZWQuCisJCSAqLworCQlrdGltZV90IGVuYWJsZWRfYXQ7CisJCS8qKgorCQkgKiBAc3RhcnQ6 IFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBpZGxlIHRvIGFjdGl2ZSB0cmFuc2l0aW9uLgorCQkgKgor CQkgKiBJZGxlIGlzIGRlZmluZWQgYXMgYWN0aXZlID09IDAsIGFjdGl2ZSBpcyBhY3RpdmUgPiAw LgorCQkgKi8KKwkJa3RpbWVfdCBzdGFydDsKKwkJLyoqCisJCSAqIEB0b3RhbDogVG90YWwgdGlt ZSB0aGlzIGVuZ2luZSB3YXMgYnVzeS4KKwkJICoKKwkJICogQWNjdW11bGF0ZWQgdGltZSBub3Qg Y291bnRpbmcgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGluIGNhc2VzCisJCSAqIHdoZXJlIGVuZ2lu ZSBpcyBjdXJyZW50bHkgYnVzeSAoYWN0aXZlID4gMCkuCisJCSAqLworCQlrdGltZV90IHRvdGFs OworCX0gc3RhdHM7CiB9OwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludApAQCAtODY5LDQg KzkwMSw2NCBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgc3RydWN0IGRybV9wcmludGVyICpwKTsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwogCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5n aW5lX2NvbnRleHRfaW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkg PT0gMCkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOworCisJaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKKwkJaWYgKGVu Z2luZS0+c3RhdHMuYWN0aXZlKysgPT0gMCkKKwkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGlt ZV9nZXQoKTsKKwkJR0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKTsKKwl9CisK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKK30K Kworc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChS RUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQorCQlyZXR1cm47CisKKwlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisKKwlpZiAoZW5naW5l LT5zdGF0cy5lbmFibGVkID4gMCkgeworCQlrdGltZV90IGxhc3QsIG5vdyA9IGt0aW1lX2dldCgp OworCisJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+c3RhdHMuYWN0aXZl ID09IDApIHsKKwkJCS8qCisJCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50 IGFuZCBpbiBjYXNlIEdQVQorCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRvIHRoZSBydW5uaW5n IHRvdGFsLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5z dGFydCk7CisKKwkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0 cy50b3RhbCwKKwkJCQkJCQlsYXN0KTsKKwkJfSBlbHNlIGlmIChlbmdpbmUtPnN0YXRzLmFjdGl2 ZSA9PSAwKSB7CisJCQkvKgorCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNv bnRleHQgb3V0IG1pZ2h0IGJlCisJCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hpY2ggY2FzZSB3 ZSBhY2NvdW50IGZyb20gdGhlCisJCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMgdHVybmVk IG9uLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5lbmFi bGVkX2F0KTsKKworCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2FkZChlbmdpbmUtPnN0 YXRzLnRvdGFsLAorCQkJCQkJCWxhc3QpOworCQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cit9CisKK2ludCBpbnRlbF9lbmFibGVf ZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVs X2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisK K2t0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKKwogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCi0tIAoyLjku NQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==