From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/8] drm/i915: Engine busy time tracking Date: Tue, 26 Sep 2017 13:30:06 +0100 Message-ID: <0f4b7a70-c6c5-7e15-40ae-9aba59dbe323@linux.intel.com> References: <20170925151543.7395-1-tvrtko.ursulin@linux.intel.com> <20170925151543.7395-7-tvrtko.ursulin@linux.intel.com> <150636139282.18819.814711624771681244@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id C76056E54E for ; Tue, 26 Sep 2017 12:30:16 +0000 (UTC) In-Reply-To: <150636139282.18819.814711624771681244@mail.alporthouse.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzA5LzIwMTcgMTg6NDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE3LTA5LTI1IDE2OjE1OjQxKQo+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pgo+PiBUcmFjayB0b3RhbCB0aW1lIHJlcXVlc3Rz IGhhdmUgYmVlbiBleGVjdXRpbmcgb24gdGhlIGhhcmR3YXJlLgo+Pgo+PiBXZSBhZGQgbmV3IGtl cm5lbCBBUEkgdG8gYWxsb3cgc29mdHdhcmUgdHJhY2tpbmcgb2YgdGltZSBHUFUKPj4gZW5naW5l cyBhcmUgc3BlbmRpbmcgZXhlY3V0aW5nIHJlcXVlc3RzLgo+Pgo+PiBCb3RoIHBlci1lbmdpbmUg YW5kIGdsb2JhbCBBUEkgaXMgYWRkZWQgd2l0aCB0aGUgbGF0dGVyIGFsc28KPj4gYmVpbmcgZXhw b3J0ZWQgZm9yIHVzZSBieSBleHRlcm5hbCB1c2Vycy4KPj4KPj4gdjI6Cj4+ICAgKiBTcXVhc2hl ZCB3aXRoIHRoZSBpbnRlcm5hbCBBUEkuCj4+ICAgKiBEcm9wcGVkIHN0YXRpYyBrZXkuCj4+ICAg KiBNYWRlIHBlci1lbmdpbmUuCj4+ICAgKiBTdG9yZSB0aW1lIGluIG1vbm90b25pYyBrdGltZS4K Pj4KPj4gdjM6IE1vdmVkIHN0YXRzIGNsZWFyaW5nIHRvIGRpc2FibGUuCj4+Cj4+IHY0Ogo+PiAg ICogQ29tbWVudHMuCj4+ICAgKiBEb24ndCBleHBvcnQgdGhlIEFQSSBqdXN0IHlldC4KPj4KPj4g djU6IFdoaXRlc3BhY2UgY2xlYW51cC4KPj4KPj4gdjY6Cj4+ICAgKiBSZW5hbWUgcmVmIHRvIGFj dGl2ZS4KPj4gICAqIERyb3AgZW5naW5lIGFnZ3JlZ2F0ZSBzdGF0cyBmb3Igbm93Lgo+PiAgICog QWNjb3VudCBpbml0aWFsIGJ1c3kgcGVyaW9kIGFmdGVyIGVuYWJsaW5nIHN0YXRzLgo+Pgo+PiB2 NzoKPj4gICAqIFJlYmFzZS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMgIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgIDIgKwo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8IDkyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTc4IGluc2VydGlvbnMo KykKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4gaW5kZXggMzVj MTE3YzNmYTBkLi44ZGI4M2Y1MDRkNzAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCj4+IEBAIC0yMzQsNiArMjM0LDggQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAgICAgICAgLyogTm90aGluZyB0 byBkbyBoZXJlLCBleGVjdXRlIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcyAqLwo+PiAgICAgICAg ICBlbmdpbmUtPnNjaGVkdWxlID0gTlVMTDsKPj4gICAKPj4gKyAgICAgICBzcGluX2xvY2tfaW5p dCgmZW5naW5lLT5zdGF0cy5sb2NrKTsKPj4gKwo+PiAgICAgICAgICBBVE9NSUNfSU5JVF9OT1RJ RklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVyKTsKPj4gICAKPj4gICAg ICAgICAgZGV2X3ByaXYtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11baW5mby0+aW5zdGFuY2Vd ID0gZW5naW5lOwo+PiBAQCAtMTYxMyw2ICsxNjE1LDg4IEBAIGludGVsX2VuZ2luZV9sb29rdXBf dXNlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNl KQo+PiAgICAgICAgICByZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5jZV07 Cj4+ICAgfQo+PiAgIAo+PiArLyoqCj4+ICsgKiBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKCkg LSBFbmFibGUgZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gZW5naW5lCj4+ICsgKiBAZW5naW5lOiBl bmdpbmUgdG8gZW5hYmxlIHN0YXRzIGNvbGxlY3Rpb24KPj4gKyAqCj4+ICsgKiBTdGFydCBjb2xs ZWN0aW5nIHRoZSBlbmdpbmUgYnVzeW5lc3MgZGF0YSBmb3IgQGVuZ2luZS4KPj4gKyAqCj4+ICsg KiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUuCj4+ICsgKi8K Pj4gK2ludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPj4gK3sKPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsg ICAgICAgaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4+ICsKPj4gKyAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgm ZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cj4+ICsgICAgICAgaWYgKGVuZ2luZS0+c3RhdHMu ZW5hYmxlZCA9PSB+MCkKPj4gKyAgICAgICAgICAgICAgIGdvdG8gYnVzeTsKPiAKPiBUaGlzIHN0 aWxsIG1ha2VzIG1lIGdvIHd1dD8gV2h5IG5vdCBqdXN0IHJlZmNvdW50X3QgZm9yIHRoaXM/CgpC ZWNhdXNlIEkgbmVlZCB0aGUgc3BpbmxvY2sgYW55d2F5IChpbiBjb250ZXh0IGluL291dCkgc28g cmVmY291bnRfdCBmb3IgCmVuYWJsZSBkb2Vzbid0IHNvdW5kIGxpa2UgYSBnYWluIHRvIG1lLgoK Pj4gKyAgICAgICBpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkKysgPT0gMCkKPj4gKyAgICAgICAg ICAgICAgIGVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCA9IGt0aW1lX2dldCgpOwo+PiArICAgICAg IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+PiAr Cj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4gK2J1c3k6Cj4+ICsgICAgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKyAgICAg ICByZXR1cm4gLUVCVVNZOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGludGVsX2Rpc2FibGVf ZW5naW5lX3N0YXRzKCkgLSBEaXNhYmxlIGVuZ2luZSBidXN5IHRyYWNraW5nIG9uIGVuZ2luZQo+ PiArICogQGVuZ2luZTogZW5naW5lIHRvIGRpc2FibGUgc3RhdHMgY29sbGVjdGlvbgo+PiArICoK Pj4gKyAqIFN0b3BzIGNvbGxlY3RpbmcgdGhlIGVuZ2luZSBidXN5bmVzcyBkYXRhIGZvciBAZW5n aW5lLgo+PiArICovCj4+ICt2b2lkIGludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gK3sKPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwo+PiArCj4+ICsgICAgICAgaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3Rz KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+PiArCj4+ICsgICAgICAgc3Bpbl9sb2NrX2ly cXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+PiArICAgICAgIFdBUk5fT05fT05D RShlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCk7Cj4+ICsgICAgICAgaWYgKC0tZW5naW5lLT5z dGF0cy5lbmFibGVkID09IDApIHsKPj4gKyAgICAgICAgICAgICAgIGVuZ2luZS0+c3RhdHMuZW5h YmxlZF9hdCA9IDA7Cj4+ICsgICAgICAgICAgICAgICBlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9IDA7 Cj4+ICsgICAgICAgICAgICAgICBlbmdpbmUtPnN0YXRzLnN0YXJ0ID0gMDsKPj4gKyAgICAgICAg ICAgICAgIGVuZ2luZS0+c3RhdHMudG90YWwgPSAwOwo+PiArICAgICAgIH0KPj4gKyAgICAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPj4gK30K Pj4gKwo+PiArLyoqCj4+ICsgKiBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZSgpIC0gUmV0dXJu IGN1cnJlbnQgYWNjdW11bGF0ZWQgZW5naW5lIGJ1c3luZXNzCj4+ICsgKiBAZW5naW5lOiBlbmdp bmUgdG8gcmVwb3J0IG9uCj4+ICsgKgo+PiArICogUmV0dXJucyBhY2N1bXVsYXRlZCB0aW1lIEBl bmdpbmUgd2FzIGJ1c3kgc2luY2UgZW5naW5lIHN0YXRzIHdlcmUgZW5hYmxlZC4KPj4gKyAqLwo+ PiAra3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ICt7Cj4+ICsgICAgICAga3RpbWVfdCB0b3RhbDsKPj4gKyAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+PiArCj4+ICsgICAgICAgdG90YWwgPSBlbmdpbmUt PnN0YXRzLnRvdGFsOwo+PiArCj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBJZiB0aGUgZW5n aW5lIGlzIGV4ZWN1dGluZyBzb21ldGhpbmcgYXQgdGhlIG1vbWVudAo+PiArICAgICAgICAqIGFk ZCBpdCB0byB0aGUgdG90YWwuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaWYgKGVuZ2luZS0+ c3RhdHMuYWN0aXZlKQo+PiArICAgICAgICAgICAgICAgdG90YWwgPSBrdGltZV9hZGQodG90YWws Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdGltZV9zdWIoa3RpbWVfZ2V0 KCksIGVuZ2luZS0+c3RhdHMuc3RhcnQpKTsKPj4gKwo+PiArICAgICAgIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+PiArCj4+ICsgICAgICAgcmV0 dXJuIHRvdGFsOwo+PiArfQo+PiArCj4+ICAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1 X1NFTEZURVNUKQo+PiAgICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUuYyIKPj4gICAj ZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggN2NkMTRiNzAxZWQ3Li4x ZTc0M2QzZDE2Y2IgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC0zNjYs MTIgKzM2NiwxNCBAQCBleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnEsCj4+ICAgc3RhdGljIGlubGluZSB2b2lkCj4+ICAgZXhlY2xp c3RzX2NvbnRleHRfc2NoZWR1bGVfaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkK Pj4gICB7Cj4+ICsgICAgICAgaW50ZWxfZW5naW5lX2NvbnRleHRfaW4ocnEtPmVuZ2luZSk7Cj4+ ICAgICAgICAgIGV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRF WFRfU0NIRURVTEVfSU4pOwo+IAo+IFN5bW1ldHJ5OiBzdGFydCBhY2N1bXVsYXRpbmcgYWZ0ZXIg dGhlIG5vdGlmaWVyLgoKT2suCgo+IAo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW5saW5lIHZv aWQKPj4gICBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpycSkKPj4gICB7Cj4+ICsgICAgICAgaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0 KHJxLT5lbmdpbmUpOwo+PiAgICAgICAgICBleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdl KHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7Cj4+ICAgfQo+PiAgIAo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4+IGluZGV4IDdhOTAxZTc2NmQwMy4uOGRi MjI4ZWJkYjI4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4+IEBAIC01MzgsNiArNTM4LDM4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+PiAgICAg ICAgICAgKiBjZXJ0YWluIGJpdHMgdG8gZW5jb2RlIHRoZSBjb21tYW5kIGxlbmd0aCBpbiB0aGUg aGVhZGVyKS4KPj4gICAgICAgICAgICovCj4+ICAgICAgICAgIHUzMiAoKmdldF9jbWRfbGVuZ3Ro X21hc2spKHUzMiBjbWRfaGVhZGVyKTsKPj4gKwo+PiArICAgICAgIHN0cnVjdCB7Cj4+ICsgICAg ICAgICAgICAgICAvKioKPj4gKyAgICAgICAgICAgICAgICAqIEBsb2NrOiBMb2NrIHByb3RlY3Rp bmcgdGhlIGJlbG93IGZpZWxkcy4KPj4gKyAgICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAg ICAgICAgc3BpbmxvY2tfdCBsb2NrOwo+PiArICAgICAgICAgICAgICAgLyoqCj4+ICsgICAgICAg ICAgICAgICAgKiBAZW5hYmxlZDogUmVmZXJlbmNlIGNvdW50IGluZGljYXRpbmcgbnVtYmVyIG9m IGxpc3RlbmVycy4KPj4gKyAgICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGVuYWJsZWQ7Cj4+ICsgICAgICAgICAgICAgICAvKioKPj4gKyAgICAgICAgICAg ICAgICAqIEBhY3RpdmU6IE51bWJlciBvZiBjb250ZXh0cyBjdXJyZW50bHkgc2NoZWR1bGVkIGlu Lgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg YWN0aXZlOwo+PiArICAgICAgICAgICAgICAgLyoqCj4+ICsgICAgICAgICAgICAgICAgKiBAZW5h YmxlZF9hdDogVGltZXN0YW1wIHdoZW4gYnVzeSBzdGF0cyB3ZXJlIGVuYWJsZWQuCj4+ICsgICAg ICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIGt0aW1lX3QgZW5hYmxlZF9hdDsKPj4g KyAgICAgICAgICAgICAgIC8qKgo+PiArICAgICAgICAgICAgICAgICogQHN0YXJ0OiBUaW1lc3Rh bXAgb2YgdGhlIGxhc3QgaWRsZSB0byBhY3RpdmUgdHJhbnNpdGlvbi4KPj4gKyAgICAgICAgICAg ICAgICAqCj4+ICsgICAgICAgICAgICAgICAgKiBJZGxlIGlzIGRlZmluZWQgYXMgYWN0aXZlID09 IDAsIGFjdGl2ZSBpcyBhY3RpdmUgPiAwLgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAg ICAgICAgICAgICBrdGltZV90IHN0YXJ0Owo+PiArICAgICAgICAgICAgICAgLyoqCj4+ICsgICAg ICAgICAgICAgICAgKiBAdG90YWw6IFRvdGFsIHRpbWUgdGhpcyBlbmdpbmUgd2FzIGJ1c3kuCj4+ ICsgICAgICAgICAgICAgICAgKgo+PiArICAgICAgICAgICAgICAgICogQWNjdW11bGF0ZWQgdGlt ZSBub3QgY291bnRpbmcgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGluIGNhc2VzCj4+ICsgICAgICAg ICAgICAgICAgKiB3aGVyZSBlbmdpbmUgaXMgY3VycmVudGx5IGJ1c3kgKGFjdGl2ZSA+IDApLgo+ PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBrdGltZV90IHRvdGFsOwo+ PiArICAgICAgIH0gc3RhdHM7Cj4+ICAgfTsKPj4gICAKPj4gICBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGludAo+PiBAQCAtODU5LDQgKzg5MSw2NCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3Rv cmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPj4gICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICoKPj4gICBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7Cj4+ICAgCj4+ICtzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2NvbnRleHRfaW4oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+PiArewo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsK Pj4gKyAgICAgICBpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKPj4g KyAgICAgICAgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZl KCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKPj4gKwo+PiArICAgICAgIGlmIChlbmdpbmUt PnN0YXRzLmVuYWJsZWQgPiAwKSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAoZW5naW5lLT5zdGF0 cy5hY3RpdmUrKyA9PSAwKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUtPnN0YXRz LnN0YXJ0ID0ga3RpbWVfZ2V0KCk7Cj4+ICsgICAgICAgICAgICAgICBHRU1fQlVHX09OKGVuZ2lu ZS0+c3RhdHMuYWN0aXZlID09IDApOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gK3sKPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwo+PiArCj4+ICsgICAgICAgaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQp ID09IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKyAgICAgICBp ZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgewo+PiArICAgICAgICAgICAgICAga3RpbWVf dCBsYXN0LCBub3cgPSBrdGltZV9nZXQoKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKGVu Z2luZS0+c3RhdHMuYWN0aXZlICYmIC0tZW5naW5lLT5zdGF0cy5hY3RpdmUgPT0gMCkgewo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgKiBE ZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbiBjYXNlIEdQVQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgKiBpcyBub3cgaWRsZSBhZGQgdXAgdG8gdGhlIHJ1bm5pbmcg dG90YWwuCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5zdGFydCk7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2Fk ZChlbmdpbmUtPnN0YXRzLnRvdGFsLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QpOwo+PiArICAgICAgICAgICAgICAgfSBlbHNl IGlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIC8qCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIEFmdGVyIHR1cm5pbmcgb24gZW5n aW5lIHN0YXRzLCBjb250ZXh0IG91dCBtaWdodCBiZQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hpY2ggY2FzZSB3ZSBhY2NvdW50IGZyb20gdGhlCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAqIHRpbWUgc3RhdHMgZ2F0aGVyaW5nIHdhcyB0dXJu ZWQgb24uCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5lbmFibGVkX2F0KTsK Pj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUtPnN0YXRzLnRvdGFsID0ga3Rp bWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCk7Cj4+ICsgICAgICAgICAgICAgICB9 Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5n aW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBpbnRlbF9lbmFibGVf ZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4+ICt2b2lkIGlu dGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 Cj4+ICsKPj4gK2t0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKPj4gKwo+PiAgICNlbmRpZiAvKiBfSU5URUxfUklOR0JVRkZF Ul9IXyAqLwo+PiAtLSAKPj4gMi45LjUKPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=