From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [RFC 07/11] drm/i915: Engine busy time tracking Date: Thu, 14 Sep 2017 21:16:23 +0100 Message-ID: <150542018383.19729.17341226345406650540@mail.alporthouse.com> References: <20170911152559.7077-1-tvrtko.ursulin@linux.intel.com> <20170911152559.7077-8-tvrtko.ursulin@linux.intel.com> 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 730616E186 for ; Thu, 14 Sep 2017 20:16:56 +0000 (UTC) In-Reply-To: <20170911152559.7077-8-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: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org Cc: Peter Zijlstra List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxNy0wOS0xMSAxNjoyNTo1NSkKPiBGcm9tOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IAo+IFRyYWNrIHRvdGFsIHRp bWUgcmVxdWVzdHMgaGF2ZSBiZWVuIGV4ZWN1dGluZyBvbiB0aGUgaGFyZHdhcmUuCj4gCj4gV2Ug YWRkIG5ldyBrZXJuZWwgQVBJIHRvIGFsbG93IHNvZnR3YXJlIHRyYWNraW5nIG9mIHRpbWUgR1BV Cj4gZW5naW5lcyBhcmUgc3BlbmRpbmcgZXhlY3V0aW5nIHJlcXVlc3RzLgo+IAo+IEJvdGggcGVy LWVuZ2luZSBhbmQgZ2xvYmFsIEFQSSBpcyBhZGRlZCB3aXRoIHRoZSBsYXR0ZXIgYWxzbwo+IGJl aW5nIGV4cG9ydGVkIGZvciB1c2UgYnkgZXh0ZXJuYWwgdXNlcnMuCj4gCj4gdjI6Cj4gICogU3F1 YXNoZWQgd2l0aCB0aGUgaW50ZXJuYWwgQVBJLgo+ICAqIERyb3BwZWQgc3RhdGljIGtleS4KPiAg KiBNYWRlIHBlci1lbmdpbmUuCj4gICogU3RvcmUgdGltZSBpbiBtb25vdG9uaWMga3RpbWUuCj4g Cj4gdjM6IE1vdmVkIHN0YXRzIGNsZWFyaW5nIHRvIGRpc2FibGUuCj4gCj4gdjQ6Cj4gICogQ29t bWVudHMuCj4gICogRG9uJ3QgZXhwb3J0IHRoZSBBUEkganVzdCB5ZXQuCj4gCj4gU2lnbmVkLW9m Zi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgMTQxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j ICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCB8ICA4MSArKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMjQgaW5zZXJ0 aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXgg ZGJjN2FiZDY1ZjMzLi5mN2RiYTE3Njk4OWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwo+IEBAIC0yMzIsNiArMjMyLDggQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgICAgICAgIC8qIE5vdGhpbmcgdG8g ZG8gaGVyZSwgZXhlY3V0ZSBpbiBvcmRlciBvZiBkZXBlbmRlbmNpZXMgKi8KPiAgICAgICAgIGVu Z2luZS0+c2NoZWR1bGUgPSBOVUxMOwo+ICAKPiArICAgICAgIHNwaW5fbG9ja19pbml0KCZlbmdp bmUtPnN0YXRzLmxvY2spOwo+ICsKPiAgICAgICAgIEFUT01JQ19JTklUX05PVElGSUVSX0hFQUQo JmVuZ2luZS0+Y29udGV4dF9zdGF0dXNfbm90aWZpZXIpOwo+ICAKPiAgICAgICAgIGRldl9wcml2 LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNlXSA9IGVuZ2luZTsKPiBA QCAtMTQxNyw2ICsxNDE5LDE0NSBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgICAgICAgfQo+ICB9Cj4gIAo+ICsv KioKPiArICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVuZ2luZSBidXN5 IHRyYWNraW5nIG9uIGVuZ2luZQo+ICsgKiBAZW5naW5lOiBlbmdpbmUgdG8gZW5hYmxlIHN0YXRz IGNvbGxlY3Rpb24KPiArICoKPiArICogU3RhcnQgY29sbGVjdGluZyB0aGUgZW5naW5lIGJ1c3lu ZXNzIGRhdGEgZm9yIEBlbmdpbmUuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9y IGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KPiArICovCj4gK2ludCBpbnRlbF9lbmFibGVfZW5naW5l X3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsgICAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICAgICBpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0 cykKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsgICAgICAgc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+ICsgICAgICAgaWYgKGVu Z2luZS0+c3RhdHMuZW5hYmxlZCA9PSB+MCkKPiArICAgICAgICAgICAgICAgZ290byBidXN5Owo+ ICsgICAgICAgZW5naW5lLT5zdGF0cy5lbmFibGVkKys7Cj4gKyAgICAgICBzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiArCj4gKyAgICAgICByZXR1 cm4gMDsKPiArCj4gK2J1c3k6Cj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdp bmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiArCj4gKyAgICAgICByZXR1cm4gLUVCVVNZOwo+ICt9 Cj4gKwo+ICsvKioKPiArICogaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoKSAtIERpc2FibGUg ZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gZW5naW5lCj4gKyAqIEBlbmdpbmU6IGVuZ2luZSB0byBk aXNhYmxlIHN0YXRzIGNvbGxlY3Rpb24KPiArICoKPiArICogU3RvcHMgY29sbGVjdGluZyB0aGUg ZW5naW5lIGJ1c3luZXNzIGRhdGEgZm9yIEBlbmdpbmUuCj4gKyAqLwo+ICt2b2lkIGludGVsX2Rp c2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICAgICBpZiAoIWk5MTUuZW5h YmxlX2V4ZWNsaXN0cykKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgICAgIHNw aW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiArICAgICAgIFdB Uk5fT05fT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCk7Cj4gKyAgICAgICBpZiAoLS1l bmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCkgewoKU2F0dXJhdGlvbiBwcm90ZWN0aW9uIG9uIGlu YywgYnV0IG5vdCBvbiBkZWM/CgpZb3UgbWlnaHQgYXMgd2VsbCBqdXN0IHVzZSByZWZjb3VudF90 LgoKPiArICAgICAgICAgICAgICAgZW5naW5lLT5zdGF0cy5yZWYgPSAwOwo+ICsgICAgICAgICAg ICAgICBlbmdpbmUtPnN0YXRzLnN0YXJ0ID0gZW5naW5lLT5zdGF0cy50b3RhbCA9IDA7Cj4gKyAg ICAgICB9Cj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxv Y2ssIGZsYWdzKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2VuYWJsZV9lbmdpbmVzX3N0 YXRzKCkgLSBFbmFibGUgZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gYWxsIGVuZ2luZXMKPiArICog QGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlCj4gKyAqCj4gKyAqIFN0YXJ0IGNvbGxlY3Rp bmcgdGhlIGVuZ2luZSBidXN5bmVzcyBkYXRhIGZvciBhbGwgZW5naW5lcy4KPiArICoKPiArICog UmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgo+ICsgKi8KPiAr aW50IGludGVsX2VuYWJsZV9lbmdpbmVzX3N0YXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArewo+ICsgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ ICsgICAgICAgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsK PiArCj4gKyAgICAgICBpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsgICAgICAgZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg ZGV2X3ByaXYsIGlkKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IGludGVsX2VuYWJsZV9lbmdp bmVfc3RhdHMoZW5naW5lKTsKPiArICAgICAgICAgICAgICAgaWYgKFdBUk5fT05fT05DRShyZXQp KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKRG9lc24ndCB0aGUgZmFpbHVyZSBo ZXJlIG9ubHkgbGVhZCB0byBtb3JlIGZhaWx1cmU/IFRoZSBvbmx5IGZhaWx1cmUgaXMKY291bnRl ciBzYXR1cmF0aW9uLCBhbmQgYnkgbm90IGhhbmRsaW5nIHRoYXQgZmFpbHVyZSB5b3UgbGVhayB0 aGUKZWFybGllciByZWZzLgoKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfZGlzYWJsZV9lbmdpbmVzX3N0YXRzKCkgLSBEaXNh YmxlIGVuZ2luZSBidXN5IHRyYWNraW5nIG9uIGFsbCBlbmdpbmVzCj4gKyAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UgcHJpdmF0ZQo+ICsgKgo+ICsgKiBTdG9wcyBjb2xsZWN0aW5nIHRoZSBlbmdp bmUgYnVzeW5lc3MgZGF0YSBmb3IgYWxsIGVuZ2luZXMuCj4gKyAqLwo+ICt2b2lkIGludGVsX2Rp c2FibGVfZW5naW5lc19zdGF0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g K3sKPiArICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArICAgICAgIGVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsKPiArICAgICAgIGZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkKPiArICAgICAgICAgICAgICAgaW50ZWxfZGlzYWJsZV9lbmdpbmVf c3RhdHMoZW5naW5lKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2VuZ2luZV9nZXRfYnVz eV90aW1lKCkgLSBSZXR1cm4gY3VycmVudCBhY2N1bXVsYXRlZCBlbmdpbmUgYnVzeW5lc3MKPiAr ICogQGVuZ2luZTogZW5naW5lIHRvIHJlcG9ydCBvbgo+ICsgKgo+ICsgKiBSZXR1cm5zIGFjY3Vt dWxhdGVkIHRpbWUgQGVuZ2luZSB3YXMgYnVzeSBzaW5jZSBlbmdpbmUgc3RhdHMgd2VyZSBlbmFi bGVkLgo+ICsgKi8KPiAra3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArICAgICAgIGt0aW1lX3QgdG90YWw7Cj4g KyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArICAgICAgIHNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiArCj4gKyAgICAgICB0b3RhbCA9IGVu Z2luZS0+c3RhdHMudG90YWw7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIElmIHRoZSBl bmdpbmUgaXMgZXhlY3V0aW5nIHNvbWV0aGluZyBhdCB0aGUgbW9tZW50Cj4gKyAgICAgICAgKiBh ZGQgaXQgdG8gdGhlIHRvdGFsLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoZW5naW5lLT5z dGF0cy5yZWYpCj4gKyAgICAgICAgICAgICAgIHRvdGFsID0ga3RpbWVfYWRkKHRvdGFsLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdGltZV9zdWIoa3RpbWVfZ2V0KCksIGVu Z2luZS0+c3RhdHMuc3RhcnQpKTsKPiArCj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiArCj4gKyAgICAgICByZXR1cm4gdG90YWw7 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9lbmdpbmVzX2dldF9idXN5X3RpbWUoKSAtIFJl dHVybiBjdXJyZW50IGFjY3VtdWxhdGVkIG92ZXJhbGwgZW5naW5lIGJ1c3luZXNzCj4gKyAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+ICsgKgo+ICsgKiBSZXR1cm5zIGFjY3VtdWxh dGVkIHRpbWUgYWxsIGVuZ2luZXMgd2VyZSBidXN5IHNpbmNlIGVuZ2luZSBzdGF0cyB3ZXJlCj4g KyAqIGVuYWJsZWQuCj4gKyAqLwo+ICtrdGltZV90IGludGVsX2VuZ2luZXNfZ2V0X2J1c3lfdGlt ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArICAgICAgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArICAgICAgIGVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwo+ICsgICAgICAga3RpbWVfdCB0b3RhbCA9IDA7Cj4gKwo+ICsgICAgICAgZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+ICsgICAgICAgICAgICAgICB0b3RhbCA9IGt0 aW1lX2FkZCh0b3RhbCwgaW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoZW5naW5lKSk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIHRvdGFsOwo+ICt9Cj4gKwo+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdf RFJNX0k5MTVfU0VMRlRFU1QpCj4gICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUuYyIK PiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBiNjFmYjA5MDI0YzMu LjAwZmNiZGU5OThmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTMxMCwx MiArMzEwLDE0IEBAIGV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2Uoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycSwKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gIGV4ZWNsaXN0c19j b250ZXh0X3NjaGVkdWxlX2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIHsK PiArICAgICAgIGludGVsX2VuZ2luZV9jb250ZXh0X2luKHJxLT5lbmdpbmUpOwo+ICAgICAgICAg ZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVM RV9JTik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+ICBleGVjbGlzdHNfY29udGV4 dF9zY2hlZHVsZV9vdXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgewo+ICsg ICAgICAgaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHJxLT5lbmdpbmUpOwo+ICAgICAgICAgZXhl Y2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9P VVQpOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBp bmRleCBjZjA5NWI5Mzg2ZjQuLmY2MThjNWY5OGVkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtNDYzLDYgKzQ2MywzNCBAQCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzIHsKPiAgICAgICAgICAqIGNlcnRhaW4gYml0cyB0byBlbmNvZGUgdGhlIGNvbW1h bmQgbGVuZ3RoIGluIHRoZSBoZWFkZXIpLgo+ICAgICAgICAgICovCj4gICAgICAgICB1MzIgKCpn ZXRfY21kX2xlbmd0aF9tYXNrKSh1MzIgY21kX2hlYWRlcik7Cj4gKwo+ICsgICAgICAgc3RydWN0 IHsKPiArICAgICAgICAgICAgICAvKioKPiArICAgICAgICAgICAgICAgKiBAbG9jazogTG9jayBw cm90ZWN0aW5nIHRoZSBiZWxvdyBmaWVsZHMuCj4gKyAgICAgICAgICAgICAgICovCj4gKyAgICAg ICAgICAgICAgIHNwaW5sb2NrX3QgbG9jazsKPiArICAgICAgICAgICAgICAgLyoqCj4gKyAgICAg ICAgICAgICAgICAqIEBlbmFibGVkOiBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGluZyBudW1iZXIg b2YgbGlzdGVuZXJzLgo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGVuYWJsZWQ7Cj4gKyAgICAgICAgICAgICAgIC8qKgo+ICsgICAgICAgICAgICAg ICAgKiBAcmVmOiBOdW1iZXIgb2YgY29udGV4dHMgY3VycmVudGx5IHNjaGVkdWxlZCBpbi4KPiAr ICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWY7Cgph Y3RpdmU/Cgo+ICsgICAgICAgICAgICAgICAvKioKPiArICAgICAgICAgICAgICAgICogQHN0YXJ0 OiBUaW1lc3RhbXAgb2YgdGhlIGxhc3QgaWRsZSB0byBhY3RpdmUgdHJhbnNpdGlvbi4KPiArICAg ICAgICAgICAgICAgICoKPiArICAgICAgICAgICAgICAgICogSWRsZSBpcyBkZWZpbmVkIGFzIHJl ZiA9PSAwLCBhY3RpdmUgaXMgcmVmID4gMC4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAg ICAgICAgICAgIGt0aW1lX3Qgc3RhcnQ7Cj4gKyAgICAgICAgICAgICAgIC8qKgo+ICsgICAgICAg ICAgICAgICAgKiBAdG90YWw6IFRvdGFsIHRpbWUgdGhpcyBlbmdpbmUgd2FzIGJ1c3kuCj4gKyAg ICAgICAgICAgICAgICAqCj4gKyAgICAgICAgICAgICAgICAqIEFjY3VtdWxhdGVkIHRpbWUgbm90 IGNvdW50aW5nIHRoZSBtb3N0IHJlY2VudCBibG9jayBpbiBjYXNlcwo+ICsgICAgICAgICAgICAg ICAgKiB3aGVyZSBlbmdpbmUgaXMgY3VycmVudGx5IGJ1c3kgKHJlZiA+IDApLgo+ICsgICAgICAg ICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAga3RpbWVfdCB0b3RhbDsKPiArICAgICAgIH0g c3RhdHM7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAo+IEBAIC03NjIs NCArNzkwLDU3IEBAIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKPiAgaW50 ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBj bGFzcywgdTggaW5zdGFuY2UpOwo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2lu ZV9jb250ZXh0X2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsgICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICAgICBpZiAoUkVBRF9PTkNFKGVuZ2lu ZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsKPiAr ICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPiAr Cj4gKyAgICAgICBpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgewo+ICsgICAgICAgICAg ICAgICBpZiAoZW5naW5lLT5zdGF0cy5yZWYrKyA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQoKTsKPiArICAgICAgICAgICAgICAg R0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLnJlZiA9PSAwKTsKPiArICAgICAgIH0KPiArCj4gKyAg ICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gKwo+ICsgICAgICAgaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJs ZWQpID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiArCj4gKyAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cj4gKwo+ICsgICAgICAgaWYg KGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKPiArICAgICAgICAgICAgICAgLyoKPiArICAg ICAgICAgICAgICAgICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNvbnRleHQgb3V0 IG1pZ2h0IGJlIHRoZQo+ICsgICAgICAgICAgICAgICAgKiBmaXJzdCBldmVudCB3aGljaCB0aGVu IG5lZWRzIHRvIGJlIGlnbm9yZWQgKHJlZiA9PSAwKS4KPiArICAgICAgICAgICAgICAgICovCj4g KyAgICAgICAgICAgICAgIGlmIChlbmdpbmUtPnN0YXRzLnJlZiAmJiAtLWVuZ2luZS0+c3RhdHMu cmVmID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBrdGltZV90IGxhc3QgPSBrdGlt ZV9zdWIoa3RpbWVfZ2V0KCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVuZ2luZS0+c3RhdHMuc3RhcnQpOwoKcy9sYXN0L3RoaXMvID8gWW91IGFk ZGluZyBpbiB0aGUgdGltZSBlbGFwc2VkIGZvciB0aGUgY3VycmVudCBhY3Rpdml0eS4KCj4gKwo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQo ZW5naW5lLT5zdGF0cy50b3RhbCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxhc3QpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5s b2NrLCBmbGFncyk7CgpPbmx5IHNsaWdodCBhbm5veWFuY2UgaXMgdGhhdCB3ZSBkbyBvdXQgYmVm b3JlIHdlIHByb2Nlc3MgaW4sIHNvIGlmIHdlCm9ubHkgZmlsbCBzbG90MCBldmVyeSB0aW1lLCB3 ZSBlbmQgdXAgd2l0aCBhIHBhaXIgb2Yga3RpbWVfZ2V0KClzIHdlCmRpZG4ndCBuZWVkLgotQ2hy aXMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==