From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH v2] drm/i915/pmu: Measure sampler intervals Date: Wed, 30 May 2018 16:37:51 +0100 Message-ID: <152769467123.8336.4400653209806321314@mail.alporthouse.com> References: <20180525171111.6812-1-chris@chris-wilson.co.uk> <20180530115539.27556-1-chris@chris-wilson.co.uk> <152769214694.8336.13614650011860246713@mail.alporthouse.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 95FDD6E5FE for ; Wed, 30 May 2018 15:37:56 +0000 (UTC) In-Reply-To: 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 List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxOC0wNS0zMCAxNjoyNzowMikKPiAKPiBPbiAzMC8w NS8yMDE4IDE1OjU1LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiBRdW90aW5nIFR2cnRrbyBVcnN1 bGluICgyMDE4LTA1LTMwIDE1OjM3OjE4KQo+ID4+Cj4gPj4gT24gMzAvMDUvMjAxOCAxMjo1NSwg Q2hyaXMgV2lsc29uIHdyb3RlOgo+ID4+PiBocnRpbWVyIGlzIG5vdCByZWxpYWJsZSBlbm91Z2gg dG8gYXNzdW1lIGZpeGVkIGludGVydmFscywgYW5kIHNvIGV2ZW4KPiA+Pj4gY29hcnNlIGFjY3Vy YWN5IChpbiB0aGUgZmFjZSBvZiBrYXNhbiBhbmQgc2ltaWxhciBoZWF2eSBkZWJ1Z2dpbmcpIHdl Cj4gPj4+IG5lZWQgdG8gbWVhc3VyZSB0aGUgYWN0dWFsIGludGVydmFsIGJldHdlZW4gc2FtcGxl Lgo+ID4+Pgo+ID4+PiBXaGlsZSB1c2luZyBhIHNpbmdsZSB0aW1lc3RhbXAgdG8gY29tcHV0ZSB0 aGUgaW50ZXJ2YWwgZG9lcyBub3QgYWxsb3cKPiA+Pj4gdmVyeSBmaW5lIGFjY3VyYWN5IChjb25z aWRlciB0aGUgaW1wYWN0IG9mIGEgc2xvdyBmb3JjZXdha2UgYmV0d2Vlbgo+ID4+PiBkaWZmZXJl bnQgc2FtcGxlcyBhZnRlciB0aGUgdGltZXN0YW1wIGlzIHJlYWQpIGlzIG11Y2ggYmV0dGVyIHRo YW4KPiA+Pj4gYXNzdW1pbmcgdGhlIGludGVydmFsLgo+ID4+Pgo+ID4+PiB2MjogTWFrZSB1c2Ug b2YgdGhlIHNhbXBsZSBwZXJpb2QgZm9yIGVzdGltYXRpbmcgdGhlIEdQVSBjbG9jayBjeWNsZXMs Cj4gPj4+IGxlYXZpbmcgdGhlIGZyZXF1ZW5jeSBjYWxjdWxhdGlvbiAodGhlIGF2ZXJhZ2luZykg dG8gdGhlIGNhbGxlci4KPiA+Pj4gSW50cm9kdWNlIG5ldyBzYW1wbGVycyBmb3IgcmVwb3J0aW5n IGN5Y2xlcyBpbnN0ZWFkIG9mIEh6Lgo+ID4+Pgo+ID4+PiBUZXN0Y2FzZTogaWd0L3BlcmZfcG11 ICNpdmIKPiA+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gPj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgo+ID4+PiAtLS0KPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyB8 IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ID4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BtdS5oIHwgIDYgKysrKysKPiA+Pj4gICAgaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oICAgICB8ICAyICsrCj4gPj4+ICAgIDMgZmlsZXMgY2hhbmdlZCwgNDMgaW5z ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bt dS5jCj4gPj4+IGluZGV4IGRjODc3OTdkYjUwMC4uMTIwMzNlNDdlM2I0IDEwMDY0NAo+ID4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCj4gPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcG11LmMKPiA+Pj4gQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJv b2wgcG11X25lZWRzX3RpbWVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGdw dV9hY3RpdmUpCj4gPj4+ICAgICAgICAgKi8KPiA+Pj4gICAgICAgIGVuYWJsZSAmPSBjb25maWdf ZW5hYmxlZF9tYXNrKEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1kpIHwKPiA+Pj4gICAgICAgICAg ICAgICAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kp IHwKPiA+Pj4gKyAgICAgICAgICAgICAgIGNvbmZpZ19lbmFibGVkX21hc2soSTkxNV9QTVVfQUNU VUFMX0NMT0NLKSB8Cj4gPj4+ICsgICAgICAgICAgICAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5 MTVfUE1VX1JFUVVFU1RFRF9DTE9DSykgfAo+ID4+PiAgICAgICAgICAgICAgICAgIEVOR0lORV9T QU1QTEVfTUFTSzsKPiA+Pj4gICAgCj4gPj4+ICAgICAgICAvKgo+ID4+PiBAQCAtMTI3LDYgKzEy OSw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9wbXVfbWF5YmVfc3RhcnRfdGltZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gPj4+ICAgIHsKPiA+Pj4gICAgICAgIGlmICghaTkxNS0+ cG11LnRpbWVyX2VuYWJsZWQgJiYgcG11X25lZWRzX3RpbWVyKGk5MTUsIHRydWUpKSB7Cj4gPj4+ ICAgICAgICAgICAgICAgIGk5MTUtPnBtdS50aW1lcl9lbmFibGVkID0gdHJ1ZTsKPiA+Pj4gKyAg ICAgICAgICAgICBpOTE1LT5wbXUudGltZXN0YW1wID0ga3RpbWVfZ2V0KCk7Cj4gPj4+ICAgICAg ICAgICAgICAgIGhydGltZXJfc3RhcnRfcmFuZ2VfbnMoJmk5MTUtPnBtdS50aW1lciwKPiA+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc190b19rdGltZShQRVJJT0Qp LCAwLAo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhSVElNRVJf TU9ERV9SRUxfUElOTkVEKTsKPiA+Pj4gQEAgLTE2MCw3ICsxNjMsNyBAQCB1cGRhdGVfc2FtcGxl KHN0cnVjdCBpOTE1X3BtdV9zYW1wbGUgKnNhbXBsZSwgdTMyIHVuaXQsIHUzMiB2YWwpCj4gPj4+ ICAgICAgICBzYW1wbGUtPmN1ciArPSBtdWxfdTMyX3UzMih2YWwsIHVuaXQpOwo+ID4+PiAgICB9 Cj4gPj4+ICAgIAo+ID4+PiAtc3RhdGljIHZvaWQgZW5naW5lc19zYW1wbGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+PiArc3RhdGljIHZvaWQgZW5naW5lc19zYW1wbGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgcGVyaW9kKQo+ID4+PiAgICB7 Cj4gPj4+ICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gPj4+ICAgICAg ICBlbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiA+Pj4gQEAgLTE4Myw3ICsxODYsNyBAQCBzdGF0 aWMgdm9pZCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPj4+ICAgICAgICAgICAgICAgIHZhbCA9ICFpOTE1X3NlcW5vX3Bhc3NlZChjdXJyZW50X3Nl cW5vLCBsYXN0X3NlcW5vKTsKPiA+Pj4gICAgCj4gPj4+ICAgICAgICAgICAgICAgIHVwZGF0ZV9z YW1wbGUoJmVuZ2luZS0+cG11LnNhbXBsZVtJOTE1X1NBTVBMRV9CVVNZXSwKPiA+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBFUklPRCwgdmFsKTsKPiA+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBlcmlvZCwgdmFsKTsKPiA+Pj4gICAgCj4gPj4+ICAgICAgICAgICAgICAg IGlmICh2YWwgJiYgKGVuZ2luZS0+cG11LmVuYWJsZSAmCj4gPj4+ICAgICAgICAgICAgICAgICAg ICAoQklUKEk5MTVfU0FNUExFX1dBSVQpIHwgQklUKEk5MTVfU0FNUExFX1NFTUEpKSkpIHsKPiA+ Pj4gQEAgLTE5NSwxMCArMTk4LDEwIEBAIHN0YXRpYyB2b2lkIGVuZ2luZXNfc2FtcGxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Pj4gICAgICAgICAgICAgICAgfQo+ID4+ PiAgICAKPiA+Pj4gICAgICAgICAgICAgICAgdXBkYXRlX3NhbXBsZSgmZW5naW5lLT5wbXUuc2Ft cGxlW0k5MTVfU0FNUExFX1dBSVRdLAo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg UEVSSU9ELCAhISh2YWwgJiBSSU5HX1dBSVQpKTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBlcmlvZCwgISEodmFsICYgUklOR19XQUlUKSk7Cj4gPj4+ICAgIAo+ID4+PiAgICAg ICAgICAgICAgICB1cGRhdGVfc2FtcGxlKCZlbmdpbmUtPnBtdS5zYW1wbGVbSTkxNV9TQU1QTEVf U0VNQV0sCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBQRVJJT0QsICEhKHZhbCAm IFJJTkdfV0FJVF9TRU1BUEhPUkUpKTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHBlcmlvZCwgISEodmFsICYgUklOR19XQUlUX1NFTUFQSE9SRSkpOwo+ID4+PiAgICAgICAgfQo+ ID4+PiAgICAKPiA+Pj4gICAgICAgIGlmIChmdykKPiA+Pj4gQEAgLTIwNywxMCArMjEwLDExIEBA IHN0YXRpYyB2b2lkIGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+Pj4gICAgICAgIGludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiA+Pj4g ICAgfQo+ID4+PiAgICAKPiA+Pj4gLXN0YXRpYyB2b2lkIGZyZXF1ZW5jeV9zYW1wbGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+PiArc3RhdGljIHZvaWQgZnJlcXVlbmN5 X3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBwZXJpb2QpCj4g Pj4+ICAgIHsKPiA+Pj4gICAgICAgIGlmIChkZXZfcHJpdi0+cG11LmVuYWJsZSAmCj4gPj4+IC0g ICAgICAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1kpKSB7 Cj4gPj4+ICsgICAgICAgICAoY29uZmlnX2VuYWJsZWRfbWFzayhJOTE1X1BNVV9BQ1RVQUxfQ0xP Q0spIHwKPiA+Pj4gKyAgICAgICAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5MTVfUE1VX0FDVFVB TF9GUkVRVUVOQ1kpKSkgewo+ID4+PiAgICAgICAgICAgICAgICB1MzIgdmFsOwo+ID4+PiAgICAK PiA+Pj4gICAgICAgICAgICAgICAgdmFsID0gZGV2X3ByaXYtPmd0X3BtLnJwcy5jdXJfZnJlcTsK PiA+Pj4gQEAgLTIyMywxMyArMjI3LDIwIEBAIHN0YXRpYyB2b2lkIGZyZXF1ZW5jeV9zYW1wbGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+PiAgICAKPiA+Pj4gICAgICAg ICAgICAgICAgdXBkYXRlX3NhbXBsZSgmZGV2X3ByaXYtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBM RV9GUkVRX0FDVF0sCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIHZhbCkpOwo+ID4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zYW1w bGUoJmRldl9wcml2LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVfQ0xPQ0tfQUNUXSwKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmlvZCwgaW50ZWxfZ3B1X2ZyZXEoZGV2X3By aXYsIHZhbCkpOwo+ID4+Cj4gPj4gQ2FjaGUgaW50ZWxfZ3B1X2ZyZXEgaW4gYSBsb2NhbC4KPiA+ Pgo+ID4+PiAgICAgICAgfQo+ID4+PiAgICAKPiA+Pj4gICAgICAgIGlmIChkZXZfcHJpdi0+cG11 LmVuYWJsZSAmCj4gPj4+IC0gICAgICAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5MTVfUE1VX1JF UVVFU1RFRF9GUkVRVUVOQ1kpKSB7Cj4gPj4+ICsgICAgICAgICAoY29uZmlnX2VuYWJsZWRfbWFz ayhJOTE1X1BNVV9SRVFVRVNURURfQ0xPQ0spIHwKPiA+Pj4gKyAgICAgICAgICBjb25maWdfZW5h YmxlZF9tYXNrKEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kpKSkgewo+ID4+PiAgICAgICAg ICAgICAgICB1cGRhdGVfc2FtcGxlKCZkZXZfcHJpdi0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExF X0ZSRVFfUkVRXSwgMSwKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZfcHJpdi0+Z3RfcG0ucnBzLmN1cl9mcmVxKSk7Cj4gPj4+ICsgICAgICAg ICAgICAgdXBkYXRlX3NhbXBsZSgmZGV2X3ByaXYtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9D TE9DS19SRVFdLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW9kLAo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+ Z3RfcG0ucnBzLmN1cl9mcmVxKSk7Cj4gPj4KPiA+PiBTYW1lIGhlcmUuCj4gPj4KPiA+Pj4gICAg ICAgIH0KPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+Pj4gQEAgLTIzNywxMiArMjQ4LDE3IEBAIHN0 YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBpOTE1X3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0 aW1lcikKPiA+Pj4gICAgewo+ID4+PiAgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPQo+ID4+PiAgICAgICAgICAgICAgICBjb250YWluZXJfb2YoaHJ0aW1lciwgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUsIHBtdS50aW1lcik7Cj4gPj4+ICsgICAgIGt0aW1lX3Qgbm93LCBwZXJp b2Q7Cj4gPj4+ICAgIAo+ID4+PiAgICAgICAgaWYgKCFSRUFEX09OQ0UoaTkxNS0+cG11LnRpbWVy X2VuYWJsZWQpKQo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7 Cj4gPj4+ICAgIAo+ID4+PiAtICAgICBlbmdpbmVzX3NhbXBsZShpOTE1KTsKPiA+Pj4gLSAgICAg ZnJlcXVlbmN5X3NhbXBsZShpOTE1KTsKPiA+Pj4gKyAgICAgbm93ID0ga3RpbWVfZ2V0KCk7Cj4g Pj4+ICsgICAgIHBlcmlvZCA9IGt0aW1lX3N1Yihub3csIGk5MTUtPnBtdS50aW1lc3RhbXApOwo+ ID4+PiArICAgICBpOTE1LT5wbXUudGltZXN0YW1wID0gbm93Owo+ID4+PiArCj4gPj4+ICsgICAg IGVuZ2luZXNfc2FtcGxlKGk5MTUsIHBlcmlvZCk7Cj4gPj4+ICsgICAgIGZyZXF1ZW5jeV9zYW1w bGUoaTkxNSwgcGVyaW9kKTsKPiA+Pj4gICAgCj4gPj4+ICAgICAgICBocnRpbWVyX2ZvcndhcmRf bm93KGhydGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCkpOwo+ID4+PiAgICAgICAgcmV0dXJuIEhS VElNRVJfUkVTVEFSVDsKPiA+Pj4gQEAgLTMxMywxMSArMzI5LDEzIEBAIGNvbmZpZ19zdGF0dXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBjb25maWcpCj4gPj4+ICAgIHsKPiA+ Pj4gICAgICAgIHN3aXRjaCAoY29uZmlnKSB7Cj4gPj4+ICAgICAgICBjYXNlIEk5MTVfUE1VX0FD VFVBTF9GUkVRVUVOQ1k6Cj4gPj4+ICsgICAgIGNhc2UgSTkxNV9QTVVfQUNUVUFMX0NMT0NLOgo+ ID4+PiAgICAgICAgICAgICAgICBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19DSEVSUllW SUVXKGk5MTUpKQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlcXVpcmVzIGEgbXV0 ZXggZm9yIHNhbXBsaW5nISAqLwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RU5PREVWOwo+ID4+PiAgICAgICAgICAgICAgICAvKiBGYWxsLXRocm91Z2guICovCj4gPj4+ICAg ICAgICBjYXNlIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1k6Cj4gPj4+ICsgICAgIGNhc2Ug STkxNV9QTVVfUkVRVUVTVEVEX0NMT0NLOgo+ID4+PiAgICAgICAgICAgICAgICBpZiAoSU5URUxf R0VOKGk5MTUpIDwgNikKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RF VjsKPiA+Pj4gICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4+IEBAIC01MjYsNiArNTQ0LDEyIEBA IHN0YXRpYyB1NjQgX19pOTE1X3BtdV9ldmVudF9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZfdTY0KGk5MTUtPnBtdS5zYW1w bGVbX19JOTE1X1NBTVBMRV9GUkVRX1JFUV0uY3VyLAo+ID4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRlJFUVVFTkNZKTsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKPiA+Pj4gKyAgICAgICAgICAgICBjYXNlIEk5MTVfUE1VX0FDVFVBTF9DTE9DSzoKPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NB TVBMRV9DTE9DS19BQ1RdLmN1cjsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ID4+PiArICAgICAgICAgICAgIGNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0NMT0NLOgo+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgdmFsID0gaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExF X0NMT0NLX1JFUV0uY3VyOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4+ ICAgICAgICAgICAgICAgIGNhc2UgSTkxNV9QTVVfSU5URVJSVVBUUzoKPiA+Pj4gICAgICAgICAg ICAgICAgICAgICAgICB2YWwgPSBjb3VudF9pbnRlcnJ1cHRzKGk5MTUpOwo+ID4+PiAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4+PiBAQCAtODAzLDYgKzgyNyw4IEBAIGNyZWF0ZV9l dmVudF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ID4+PiAgICAg ICAgICAgICAgICBfX2V2ZW50KEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1ksICJyZXF1ZXN0 ZWQtZnJlcXVlbmN5IiwgIk1IeiIpLAo+ID4+PiAgICAgICAgICAgICAgICBfX2V2ZW50KEk5MTVf UE1VX0lOVEVSUlVQVFMsICJpbnRlcnJ1cHRzIiwgTlVMTCksCj4gPj4+ICAgICAgICAgICAgICAg IF9fZXZlbnQoSTkxNV9QTVVfUkM2X1JFU0lERU5DWSwgInJjNi1yZXNpZGVuY3kiLCAibnMiKSwK PiA+Pj4gKyAgICAgICAgICAgICBfX2V2ZW50KEk5MTVfUE1VX0FDVFVBTF9DTE9DSywgImFjdHVh bC1jbG9jayIsICJNY3ljbGVzIiksCj4gPj4+ICsgICAgICAgICAgICAgX19ldmVudChJOTE1X1BN VV9SRVFVRVNURURfQ0xPQ0ssICJyZXF1ZXN0ZWQtY2xvY2siLCAiTWN5Y2xlcyIpLAo+ID4+PiAg ICAgICAgfTsKPiA+Pj4gICAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4+PiAgICAgICAg ICAgICAgICBlbnVtIGRybV9pOTE1X3BtdV9lbmdpbmVfc2FtcGxlIHNhbXBsZTsKPiA+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BtdS5oCj4gPj4+IGluZGV4IDJiYTczNTI5OWY3Yy4uOWM0MjUyZDg1YjVl IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oCj4gPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmgKPiA+Pj4gQEAgLTE3LDYgKzE3 LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gPj4+ICAgIGVudW0gewo+ID4+PiAgICAg ICAgX19JOTE1X1NBTVBMRV9GUkVRX0FDVCA9IDAsCj4gPj4+ICAgICAgICBfX0k5MTVfU0FNUExF X0ZSRVFfUkVRLAo+ID4+PiArICAgICBfX0k5MTVfU0FNUExFX0NMT0NLX0FDVCwKPiA+Pj4gKyAg ICAgX19JOTE1X1NBTVBMRV9DTE9DS19SRVEsCj4gPj4+ICAgICAgICBfX0k5MTVfU0FNUExFX1JD NiwKPiA+Pj4gICAgICAgIF9fSTkxNV9TQU1QTEVfUkM2X0VTVElNQVRFRCwKPiA+Pj4gICAgICAg IF9fSTkxNV9OVU1fUE1VX1NBTVBMRVJTCj4gPj4+IEBAIC01Miw2ICs1NCwxMCBAQCBzdHJ1Y3Qg aTkxNV9wbXUgewo+ID4+PiAgICAgICAgICogQHRpbWVyOiBUaW1lciBmb3IgaW50ZXJuYWwgaTkx NSBQTVUgc2FtcGxpbmcuCj4gPj4+ICAgICAgICAgKi8KPiA+Pj4gICAgICAgIHN0cnVjdCBocnRp bWVyIHRpbWVyOwo+ID4+PiArICAgICAvKioKPiA+Pj4gKyAgICAgICogQHRpbWVzdGFtcDogVGlt ZXN0YW1wIG9mIGxhc3QgaW50ZXJuYWwgaTkxNSBQTVUgc2FtcGxpbmcuCj4gPj4+ICsgICAgICAq Lwo+ID4+PiArICAgICBrdGltZV90IHRpbWVzdGFtcDsKPiA+Pj4gICAgICAgIC8qKgo+ID4+PiAg ICAgICAgICogQGVuYWJsZTogQml0bWFzayBvZiBhbGwgY3VycmVudGx5IGVuYWJsZWQgZXZlbnRz Lgo+ID4+PiAgICAgICAgICoKPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ID4+PiBpbmRleCA3ZjU2MzRj ZThlODguLjYxYWI3MTk4NjI3NCAxMDA2NDQKPiA+Pj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCj4gPj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ID4+PiBA QCAtMTM5LDYgKzEzOSw4IEBAIGVudW0gZHJtX2k5MTVfcG11X2VuZ2luZV9zYW1wbGUgewo+ID4+ PiAgICAjZGVmaW5lIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kgICAgICAgIF9fSTkxNV9Q TVVfT1RIRVIoMSkKPiA+Pj4gICAgI2RlZmluZSBJOTE1X1BNVV9JTlRFUlJVUFRTICAgICAgICAg X19JOTE1X1BNVV9PVEhFUigyKQo+ID4+PiAgICAjZGVmaW5lIEk5MTVfUE1VX1JDNl9SRVNJREVO Q1kgICAgICAgICAgICAgIF9fSTkxNV9QTVVfT1RIRVIoMykKPiA+Pj4gKyNkZWZpbmUgSTkxNV9Q TVVfQUNUVUFMX0NMT0NLICAgICAgICAgICAgICAgIF9fSTkxNV9QTVVfT1RIRVIoNCkKPiA+Pj4g KyNkZWZpbmUgSTkxNV9QTVVfUkVRVUVTVEVEX0NMT0NLICAgICBfX0k5MTVfUE1VX09USEVSKDUp Cj4gPj4+ICAgIAo+ID4+PiAgICAjZGVmaW5lIEk5MTVfUE1VX0xBU1QgSTkxNV9QTVVfUkM2X1JF U0lERU5DWQo+ID4+Cj4gPj4gQnVtcCB0aGlzIG9uZS4KPiA+Pgo+ID4+IEkgd2FudCB0byBrbm93 IGlmIHdlIGNvdWxkIGdldCBhd2F5IHdpdGhvdXQgaW50cm9kdWNpbmcgYSBuZXcgcGFpciBvZgo+ ID4+IGNvdW50ZXIuCj4gPiAKPiA+IEkgd291bGRuJ3QgbWluZCBoYXZpbmcgbXkgY3ljbGUgY291 bnRlcnMgYmFjayBpbiB0aGUgYXBpIDspCj4gPiBUaGV5IGp1c3Qgc2VlbSB0byBiZSBlYXNpZXIg Zm9yIG1lIHRvIHdvcmsgd2l0aCBpbiB1c2Vyc3BhY2UuCj4gPiAKPiA+IE9yIGRvIHlvdSBtZWFu IGlmIHdlIGNhbiBqdXN0IHJlZGVmaW5lIHRoZSBleGlzdGluZyBzYW1wbGVyPwo+IAo+IEtlZXAg dGhlIGV4aXN0aW5nIHNlbWFudGljcyBidXQgaW1wcm92ZSBpbXBsZW1lbnRhdGlvbiBzdWZmaWNp ZW50bHkgc28gCj4gdGhleSBzdXJ2aXZlIHRoZSBJVkIgaHJ0aW1lciBwcm9ibGVtLgoKKE5vdyB0 aGF0IEkndmUgc3RhcnRlZCwgYnJpbmcgYmFjayB0aGUgY3ljbGUgY291bnRlcnMhKQoKPiA+PiBG b3IgaW5zdGFuY2Ugd291bGQgcnVubmluZyBhdmVyYWdlIG9mIGEgcGVyaW9kIGRvIGZvciBmcmVx dWVuY3kKPiA+PiByZWFkb3V0PyBJdCBkZXBlbmRzIG9uIHdoYXQga2luZCBvZiBlcnJvciB3ZSBh cmUgZmFjaW5nLiBPciBhIG1vdmluZwo+ID4+IGF2ZXJhZ2UgZm9yIHNvbWUgcGVyaW9kPyBJIHdv dWxkIGV4cGxvcmUgdGhhdCBidXQgZG9uJ3QgaGF2ZSBhbgo+ID4+IEl2eWJyaWRnZSBzbyBjb3Vs ZCB5b3UgaGF2ZSBhIGxvb2s/Cj4gPiAKPiA+IFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCB3ZSBk b24ndCBkZWZpbmUgdGhlIHBlcmlvZCwgdGhlIHVzZXIgZG9lcy4KPiA+IAo+ID4gSGVoLCBvbmNl IGFnYWluIHdlIGhhdmUgdHdvIGRpZmZlcmVudCBpZGVhcyBhYm91dCB3aGF0IHdlIHdhbnQgdG8K PiA+IG1lYXN1cmUgOikgSSdsZCB0YWtlIGN5Y2xlcywgd2l0aCB5b3VyIHN1Z2dlc3Rpb24gd2Ug bWF5IGFzIHdlbGwgZG8KPiA+IGluc3RhbnRhbmVvdXMgZnJlcXVlbmN5IGFuZCBzYW1wbGUgZnJv bSB3aXRoaW4gcGVyZl9ldmVudF9yZWFkIChubwo+ID4gYXZlcmFnaW5nLCBvciBqdXN0IGEgc2hv cnQgZXdtYSk/Cj4gRm9yIG1lIHRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHVuc3RhYmxlIGlzIHRo ZSBJVkIgY2xvY2s/IElzIGl0IHJhbmRvbSAKPiBqaXR0ZXIgYW5kIGJ5IGhvdyBtdWNoLCBvciB3 aGF0LiBJZiB3ZSBrZWVwIHggbXMgbW92aW5nIGF2ZXJhZ2UgZnJvbSAKPiBmcmVxdWVuY3lfc2Ft cGxlLCBhbmQgdXNlIHRoYXQgdG8gY29udmVydCB0byBIeiBvbiB0aGUgb3V0cHV0LCB3b3VsZCBp dCAKPiBiZSBnb29kIGVub3VnaD8KCldlIGRvbid0IGhhdmUgdGhhdCBzb3J0IG9mIHRlc3QgaW4g cGVyZl9wbXUuIFRoZSBjbG9zZXN0IHdlIGhhdmUgd2FzIGZvcgpnZW1fY3R4X2ZyZXEsIGFuZCB0 aGVyZSB0aGUgZnJlcXVlbmN5IHNhbXBsZXIgd2FzIG5vdCB2ZXJ5IGFjY3VyYXRlCnRob3NlICgt MTAwLysxMDAgdG9sZXJhbmNlcyB3ZXJlIG5vdCBmb3IgdGhlcm1hbCB0aHJvdHRsaW5nKS4gV2Ug Y2FuIHRyeQpkb2luZyB0aGUgc2FtZSBzYXd0b290aHMgLS0ganVzdCB0aGUgY2hhbGxlbmdlIG9m IHN5c3RlbWF0aWMgZXJyb3JzIGluCmJvdGggdGhlIHRpbWVyLCB0aGUgcnBzIHdvcmtlciBhbmQg dGhlIGh3LgogCj4gVG8gbWUgaXQgaXMgcHJlZmVyYWJsZSB0byBhZGRpbmcgbmV3IGNvdW50ZXJz LiBFc3BlY2lhbGx5IGlmIHRoZSBlcnJvciAKPiBpcyBzbyBzbWFsbCB0aGF0IG5vIG9uZSBub3Rp Y2VzIF9hbmRfIG9ubHkgb24gSVZCLgoKSSBkb24ndCB0aGluayBpdCdzIGZhaXIgdG8gc2F5IHRo YXQgb25seSBJVkIgaGFzIGEgcHJvYmxlbSB3aXRoIHRoZQpocnRpbWVyLCBpdCdzIGp1c3Qgd2hl cmUgaXQncyBtb3N0IHZpc2libGUuIE9yIHRvIHJ1bGUgaXQgb3V0IGJlaW5nIGEKcHJvYmxlbSBm b3IgdGhlIGZ1dHVyZS4gVGhlIGNvZGUgaXMgdXNpbmcgaHJ0aW1lcl9mb3J3YXJkKCkgc28gaXQK YWxyZWFkeSBhc3N1bWVzIGl0IGNhbiBhbmQgd2lsbCBtaXNzIHNhbXBsZXMgOikKLUNocmlzCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=