From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [igt-dev] [PATCH i-g-t 02/24] lib: Add GPU power measurement Date: Tue, 26 Mar 2019 08:49:07 +0000 Message-ID: <155359014752.15930.11670960100247903065@skylake-alporthouse-com> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> <20190322092155.1656-2-chris@chris-wilson.co.uk> <204a2a2c-4372-0284-d715-9cf474de6dac@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <204a2a2c-4372-0284-d715-9cf474de6dac@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: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxOS0wMy0yNiAwODozNjoxOCkKPiAKPiBPbiAyMi8w My8yMDE5IDA5OjIxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiBSZWFkIHRoZSBSQVBMIHBvd2Vy IG1ldHJpY3MgY291cnRlc3kgb2YgcGVyZi4gT3IgeW91ciBsb2NhbCBIVwo+ID4gZXF1aXZhbGVu dD8KPiA+IAo+ID4gdjI6IHVzZWxvY2FsZSgpCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gLS0tCj4gPiAgIGxpYi9NYWtl ZmlsZS5hbSAgICAgIHwgICAxICsKPiA+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwo+ ID4gICBsaWIvaWd0X2dwdV9wb3dlci5jICB8IDExNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiAgIGxpYi9pZ3RfZ3B1X3Bvd2VyLmggIHwgIDU5ICsrKysr KysrKysrKysrKysrKysrKysKPiA+ICAgbGliL21lc29uLmJ1aWxkICAgICAgfCAgIDIgKwo+ID4g ICA1IGZpbGVzIGNoYW5nZWQsIDE3OCBpbnNlcnRpb25zKCspCj4gPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvaWd0X2dwdV9wb3dlci5jCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0 X2dwdV9wb3dlci5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIv TWFrZWZpbGUuYW0KPiA+IGluZGV4IDNlNmE3ZmRiYS4uNjJlOGJkYTczIDEwMDY0NAo+ID4gLS0t IGEvbGliL01ha2VmaWxlLmFtCj4gPiArKysgYi9saWIvTWFrZWZpbGUuYW0KPiA+IEBAIC04NCw0 ICs4NCw1IEBAIGxpYmludGVsX3Rvb2xzX2xhX0xJQkFERCA9IFwKPiA+ICAgICAgICQoTElCVURF Vl9MSUJTKSBcCj4gPiAgICAgICAkKFBJWE1BTl9MSUJTKSBcCj4gPiAgICAgICAkKEdMSUJfTElC UykgXAo+ID4gKyAgICAgbGliaWd0X3BlcmYubGEgXAo+ID4gICAgICAgLWxtCj4gPiBkaWZmIC0t Z2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+ID4gaW5k ZXggY2YyNzIwOTgxLi5lMDAzNDdmOTQgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvTWFrZWZpbGUuc291 cmNlcwo+ID4gKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiA+IEBAIC0yNiw2ICsyNiw4IEBA IGxpYl9zb3VyY2VfbGlzdCA9ICAgICAgICAgICBcCj4gPiAgICAgICBpZ3RfY29sb3JfZW5jb2Rp bmcuYyAgICBcCj4gPiAgICAgICBpZ3RfY29sb3JfZW5jb2RpbmcuaCAgICBcCj4gPiAgICAgICBp Z3RfZWRpZF90ZW1wbGF0ZS5oICAgICBcCj4gPiArICAgICBpZ3RfZ3B1X3Bvd2VyLmMgICAgICAg ICBcCj4gPiArICAgICBpZ3RfZ3B1X3Bvd2VyLmggICAgICAgICBcCj4gPiAgICAgICBpZ3RfZ3Qu YyAgICAgICAgICAgICAgICBcCj4gPiAgICAgICBpZ3RfZ3QuaCAgICAgICAgICAgICAgICBcCj4g PiAgICAgICBpZ3RfZ3Z0LmMgICAgICAgICAgICAgICBcCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2ln dF9ncHVfcG93ZXIuYyBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAuLmE0ZTNjMTQyMAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4g KysrIGIvbGliL2lndF9ncHVfcG93ZXIuYwo+ID4gQEAgLTAsMCArMSwxMTQgQEAKPiA+ICsjaW5j bHVkZSA8Y3R5cGUuaD4KPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiA+ICsjaW5jbHVkZSA8ZmNu dGwuaD4KPiA+ICsjaW5jbHVkZSA8bG9jYWxlLmg+Cj4gPiArI2luY2x1ZGUgPG1hdGguaD4KPiA+ ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImlndF9ncHVfcG93ZXIu aCIKPiA+ICsjaW5jbHVkZSAiaWd0X3BlcmYuaCIKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGZpbGVu YW1lX3RvX2J1Zihjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQg c3opCj4gPiArewo+ID4gKyAgICAgaW50IGZkOwo+ID4gKyAgICAgc3NpemVfdCByZXQ7Cj4gPiAr Cj4gPiArICAgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZKTsKPiA+ICsgICAgIGlmIChm ZCA8IDApCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsKPiA+ICsKPiA+ICsgICAgIHJldCA9 IHJlYWQoZmQsIGJ1Ziwgc3ogLSAxKTsKPiA+ICsgICAgIGNsb3NlKGZkKTsKPiA+ICsgICAgIGlm IChyZXQgPCAxKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gPiArCj4gPiArICAgICBi dWZbcmV0XSA9ICdcMCc7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHVpbnQ2NF90IGZpbGVuYW1lX3RvX3U2NChjb25zdCBjaGFyICpmaWxlbmFtZSwg aW50IGJhc2UpCj4gPiArewo+ID4gKyAgICAgY2hhciBidWZbNjRdLCAqYjsKPiA+ICsKPiA+ICsg ICAgIGlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBI YW5kbGUgYm90aCBzaW5nbGUgaW50ZWdlciBhbmQga2V5PXZhbHVlIGZvcm1hdHMgYnkgc2tpcHBp bmcKPiA+ICsgICAgICAqIGxlYWRpbmcgbm9uLWRpZ2l0cy4KPiA+ICsgICAgICAqLwo+ID4gKyAg ICAgYiA9IGJ1ZjsKPiA+ICsgICAgIHdoaWxlICgqYiAmJiAhaXNkaWdpdCgqYikpCj4gPiArICAg ICAgICAgICAgIGIrKzsKPiA+ICsKPiA+ICsgICAgIHJldHVybiBzdHJ0b3VsbChiLCBOVUxMLCBi YXNlKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGRvdWJsZSBmaWxlbmFtZV90b19kb3VibGUo Y29uc3QgY2hhciAqZmlsZW5hbWUpCj4gPiArewo+ID4gKyAgICAgbG9jYWxlX3QgbG9jYWxlLCBv bGRsb2NhbGU7Cj4gPiArICAgICBjaGFyIGJ1Zls4MF07Cj4gPiArICAgICBkb3VibGUgdjsKPiA+ ICsKPiA+ICsgICAgIGlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1 ZikpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICsgICAgIC8qIFJlcGxh Y2UgdXNlciBlbnZpcm9ubWVudCB3aXRoIHBsYWluIEMgdG8gbWF0Y2gga2VybmVsIGZvcm1hdCAq Lwo+ID4gKyAgICAgbG9jYWxlID0gbmV3bG9jYWxlKExDX0FMTCwgIkMiLCAwKTsKPiA+ICsgICAg IG9sZGxvY2FsZSA9IHVzZWxvY2FsZShsb2NhbGUpOwo+ID4gKwo+ID4gKyAgICAgdiA9IHN0cnRv ZChidWYsIE5VTEwpOwo+ID4gKwo+ID4gKyAgICAgdXNlbG9jYWxlKG9sZGxvY2FsZSk7Cj4gPiAr ICAgICBmcmVlbG9jYWxlKGxvY2FsZSk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gdjsKPiA+ICt9 Cj4gCj4gSGV5IHlvdSBrbm93IHdoYXQgb3VyIGd1aWRlbGluZXMgZm9yIGludHJvZHVjaW5nIGEg M3JkIGNvcHkgb2Ygc29tZXRoaW5nIAo+IGFyZS4gOykKCkknbSBub3QgZXZlbiBzdXJlIHRoaXMg aXMgdGhlIHRoaXJkIGNvcHkuLi4gRXhjZXB0IGZvciB0aGUgaGFuZGxpbmcgb2YKcGxhaW4gQyBz dHJ0b2QoKS4KIAo+IE1heWJlIGl0IHdvdWxkIGJlIGZhaXIgZ2FtZSB0byBzdHVmZiB0aGVzZSBo ZWxwZXJzIHRvIGlndF9wZXJmLmxhIC0gCj4gc2luY2UgYm90aCBvdmVybGF5IGFuZCBpbnRlbF9n cHVfZ3B1IGxpbmsgd2l0aCBpdCBhbHJlYWR5IGFuZCBpdCBpcyAKPiBhYm91dCBpbnRlcmZhY2lu ZyB3aXRoIHBlcmYgYWZ0ZXIgYWxsLgoKQXMgZmFyIGFzIGlndCBnb2VzLCBpbW8gd2Ugc2hvdWxk IG1vdmUgdGhlIHN0cnRvZCBoYW5kbGluZyBpbnRvIGlndF9zeXNmcwp3aXRoIHRoZSBvdGhlciBz Y2FuZi4KIAo+IFRoZXJlIGFyZSBzb21lIHNtYWxsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZ1 bmN0aW9ucyBoZXJlIGFuZCBpbiAKPiBpbnRlbF9ncHVfdG9wLCBzb21lb25lIGlzIHJpZ2h0IG9y IHdyb25nLCBvciBhdCBsZWFzdCBtb3JlIHJpZ2h0PwoKT25seSBjaGFuZ2VkIHRvIHVzZSB0aHJl YWRzYWZlIHVzZWxvY2FsZSgpIGlpcmMuCgo+ID4gK3N0YXRpYyB1aW50NjRfdCByYXBsX3R5cGVf aWQodm9pZCkKPiA+ICt7Cj4gPiArICAgICByZXR1cm4gZmlsZW5hbWVfdG9fdTY0KCIvc3lzL2Rl dmljZXMvcG93ZXIvdHlwZSIsIDEwKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHVpbnQ2NF90 IHJhcGxfZ3B1X3Bvd2VyKHZvaWQpCj4gPiArewo+ID4gKyAgICAgcmV0dXJuIGZpbGVuYW1lX3Rv X3U2NCgiL3N5cy9kZXZpY2VzL3Bvd2VyL2V2ZW50cy9lbmVyZ3ktZ3B1IiwgMCk7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBkb3VibGUgcmFwbF9ncHVfcG93ZXJfc2NhbGUodm9pZCkKPiA+ICt7 Cj4gPiArICAgICByZXR1cm4gZmlsZW5hbWVfdG9fZG91YmxlKCIvc3lzL2RldmljZXMvcG93ZXIv ZXZlbnRzL2VuZXJneS1ncHUuc2NhbGUiKTsKPiA+ICt9Cj4gPiArCj4gPiAraW50IGdwdV9wb3dl cl9vcGVuKHN0cnVjdCBncHVfcG93ZXIgKnBvd2VyKQo+ID4gK3sKPiA+ICsgICAgIHBvd2VyLT5m ZCA9IGlndF9wZXJmX29wZW4ocmFwbF90eXBlX2lkKCksIHJhcGxfZ3B1X3Bvd2VyKCkpOwo+ID4g KyAgICAgaWYgKHBvd2VyLT5mZCA8IDApIHsKPiA+ICsgICAgICAgICAgICAgcG93ZXItPmZkID0g LWVycm5vOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ ICsgICAgIHBvd2VyLT5zY2FsZSA9IHJhcGxfZ3B1X3Bvd2VyX3NjYWxlKCk7Cj4gPiArICAgICBp ZiAoaXNuYW4ocG93ZXItPnNjYWxlKSB8fCAhcG93ZXItPnNjYWxlKSB7Cj4gPiArICAgICAgICAg ICAgIGNsb3NlKHBvd2VyLT5mZCk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gZXJyOwo+ID4gKyAg ICAgfQo+ID4gKyAgICAgcG93ZXItPnNjYWxlICo9IDFlOTsKPiAKPiBTY2FsZSBoYXMgbm8gdW5p dCBzbyBJIHRoaW5rIHRoaXMgd291bGQgZ28gYmV0dGVyIGludG8gZ3B1X3Bvd2VyX1cuIAo+IFdv dWxkIGF2b2lkICogMWU5ICogMWUtOSBpbiBncHVfcG93ZXJfSiBhcyB3ZWxsLgoKSXQncyA2IG9m IG9uZSwgaGFsZi1hLWRvemVuIG9mIHRoZSBvdGhlci4gSSB3YXMgdGVtcHRlZCB0byBtb3ZlIGl0 CmFyb3VuZCwgYnV0IHlvdSBzdGlsbCBlbmQgdXAgc2NhbGluZyBzb21ld2hlcmUuCgpncHVfcG93 ZXJfSigpCmdwdV9wb3dlcl9zKCkKZ3B1X3Bvd2VyX1coKQoKYW5kIGhvcGUgZm9yIHRoZSBiZXN0 LgotQ2hyaXMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 From: Chris Wilson In-Reply-To: <204a2a2c-4372-0284-d715-9cf474de6dac@linux.intel.com> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> <20190322092155.1656-2-chris@chris-wilson.co.uk> <204a2a2c-4372-0284-d715-9cf474de6dac@linux.intel.com> Message-ID: <155359014752.15930.11670960100247903065@skylake-alporthouse-com> Date: Tue, 26 Mar 2019 08:49:07 +0000 Subject: Re: [igt-dev] [PATCH i-g-t 02/24] lib: Add GPU power measurement List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxOS0wMy0yNiAwODozNjoxOCkKPiAKPiBPbiAyMi8w My8yMDE5IDA5OjIxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiBSZWFkIHRoZSBSQVBMIHBvd2Vy IG1ldHJpY3MgY291cnRlc3kgb2YgcGVyZi4gT3IgeW91ciBsb2NhbCBIVwo+ID4gZXF1aXZhbGVu dD8KPiA+IAo+ID4gdjI6IHVzZWxvY2FsZSgpCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gLS0tCj4gPiAgIGxpYi9NYWtl ZmlsZS5hbSAgICAgIHwgICAxICsKPiA+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwo+ ID4gICBsaWIvaWd0X2dwdV9wb3dlci5jICB8IDExNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiAgIGxpYi9pZ3RfZ3B1X3Bvd2VyLmggIHwgIDU5ICsrKysr KysrKysrKysrKysrKysrKysKPiA+ICAgbGliL21lc29uLmJ1aWxkICAgICAgfCAgIDIgKwo+ID4g ICA1IGZpbGVzIGNoYW5nZWQsIDE3OCBpbnNlcnRpb25zKCspCj4gPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvaWd0X2dwdV9wb3dlci5jCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0 X2dwdV9wb3dlci5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIv TWFrZWZpbGUuYW0KPiA+IGluZGV4IDNlNmE3ZmRiYS4uNjJlOGJkYTczIDEwMDY0NAo+ID4gLS0t IGEvbGliL01ha2VmaWxlLmFtCj4gPiArKysgYi9saWIvTWFrZWZpbGUuYW0KPiA+IEBAIC04NCw0 ICs4NCw1IEBAIGxpYmludGVsX3Rvb2xzX2xhX0xJQkFERCA9IFwKPiA+ICAgICAgICQoTElCVURF Vl9MSUJTKSBcCj4gPiAgICAgICAkKFBJWE1BTl9MSUJTKSBcCj4gPiAgICAgICAkKEdMSUJfTElC UykgXAo+ID4gKyAgICAgbGliaWd0X3BlcmYubGEgXAo+ID4gICAgICAgLWxtCj4gPiBkaWZmIC0t Z2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+ID4gaW5k ZXggY2YyNzIwOTgxLi5lMDAzNDdmOTQgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvTWFrZWZpbGUuc291 cmNlcwo+ID4gKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiA+IEBAIC0yNiw2ICsyNiw4IEBA IGxpYl9zb3VyY2VfbGlzdCA9ICAgICAgICAgICBcCj4gPiAgICAgICBpZ3RfY29sb3JfZW5jb2Rp bmcuYyAgICBcCj4gPiAgICAgICBpZ3RfY29sb3JfZW5jb2RpbmcuaCAgICBcCj4gPiAgICAgICBp Z3RfZWRpZF90ZW1wbGF0ZS5oICAgICBcCj4gPiArICAgICBpZ3RfZ3B1X3Bvd2VyLmMgICAgICAg ICBcCj4gPiArICAgICBpZ3RfZ3B1X3Bvd2VyLmggICAgICAgICBcCj4gPiAgICAgICBpZ3RfZ3Qu YyAgICAgICAgICAgICAgICBcCj4gPiAgICAgICBpZ3RfZ3QuaCAgICAgICAgICAgICAgICBcCj4g PiAgICAgICBpZ3RfZ3Z0LmMgICAgICAgICAgICAgICBcCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2ln dF9ncHVfcG93ZXIuYyBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAuLmE0ZTNjMTQyMAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4g KysrIGIvbGliL2lndF9ncHVfcG93ZXIuYwo+ID4gQEAgLTAsMCArMSwxMTQgQEAKPiA+ICsjaW5j bHVkZSA8Y3R5cGUuaD4KPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiA+ICsjaW5jbHVkZSA8ZmNu dGwuaD4KPiA+ICsjaW5jbHVkZSA8bG9jYWxlLmg+Cj4gPiArI2luY2x1ZGUgPG1hdGguaD4KPiA+ ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImlndF9ncHVfcG93ZXIu aCIKPiA+ICsjaW5jbHVkZSAiaWd0X3BlcmYuaCIKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGZpbGVu YW1lX3RvX2J1Zihjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQg c3opCj4gPiArewo+ID4gKyAgICAgaW50IGZkOwo+ID4gKyAgICAgc3NpemVfdCByZXQ7Cj4gPiAr Cj4gPiArICAgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZKTsKPiA+ICsgICAgIGlmIChm ZCA8IDApCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsKPiA+ICsKPiA+ICsgICAgIHJldCA9 IHJlYWQoZmQsIGJ1Ziwgc3ogLSAxKTsKPiA+ICsgICAgIGNsb3NlKGZkKTsKPiA+ICsgICAgIGlm IChyZXQgPCAxKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gPiArCj4gPiArICAgICBi dWZbcmV0XSA9ICdcMCc7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHVpbnQ2NF90IGZpbGVuYW1lX3RvX3U2NChjb25zdCBjaGFyICpmaWxlbmFtZSwg aW50IGJhc2UpCj4gPiArewo+ID4gKyAgICAgY2hhciBidWZbNjRdLCAqYjsKPiA+ICsKPiA+ICsg ICAgIGlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBI YW5kbGUgYm90aCBzaW5nbGUgaW50ZWdlciBhbmQga2V5PXZhbHVlIGZvcm1hdHMgYnkgc2tpcHBp bmcKPiA+ICsgICAgICAqIGxlYWRpbmcgbm9uLWRpZ2l0cy4KPiA+ICsgICAgICAqLwo+ID4gKyAg ICAgYiA9IGJ1ZjsKPiA+ICsgICAgIHdoaWxlICgqYiAmJiAhaXNkaWdpdCgqYikpCj4gPiArICAg ICAgICAgICAgIGIrKzsKPiA+ICsKPiA+ICsgICAgIHJldHVybiBzdHJ0b3VsbChiLCBOVUxMLCBi YXNlKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGRvdWJsZSBmaWxlbmFtZV90b19kb3VibGUo Y29uc3QgY2hhciAqZmlsZW5hbWUpCj4gPiArewo+ID4gKyAgICAgbG9jYWxlX3QgbG9jYWxlLCBv bGRsb2NhbGU7Cj4gPiArICAgICBjaGFyIGJ1Zls4MF07Cj4gPiArICAgICBkb3VibGUgdjsKPiA+ ICsKPiA+ICsgICAgIGlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1 ZikpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICsgICAgIC8qIFJlcGxh Y2UgdXNlciBlbnZpcm9ubWVudCB3aXRoIHBsYWluIEMgdG8gbWF0Y2gga2VybmVsIGZvcm1hdCAq Lwo+ID4gKyAgICAgbG9jYWxlID0gbmV3bG9jYWxlKExDX0FMTCwgIkMiLCAwKTsKPiA+ICsgICAg IG9sZGxvY2FsZSA9IHVzZWxvY2FsZShsb2NhbGUpOwo+ID4gKwo+ID4gKyAgICAgdiA9IHN0cnRv ZChidWYsIE5VTEwpOwo+ID4gKwo+ID4gKyAgICAgdXNlbG9jYWxlKG9sZGxvY2FsZSk7Cj4gPiAr ICAgICBmcmVlbG9jYWxlKGxvY2FsZSk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gdjsKPiA+ICt9 Cj4gCj4gSGV5IHlvdSBrbm93IHdoYXQgb3VyIGd1aWRlbGluZXMgZm9yIGludHJvZHVjaW5nIGEg M3JkIGNvcHkgb2Ygc29tZXRoaW5nIAo+IGFyZS4gOykKCkknbSBub3QgZXZlbiBzdXJlIHRoaXMg aXMgdGhlIHRoaXJkIGNvcHkuLi4gRXhjZXB0IGZvciB0aGUgaGFuZGxpbmcgb2YKcGxhaW4gQyBz dHJ0b2QoKS4KIAo+IE1heWJlIGl0IHdvdWxkIGJlIGZhaXIgZ2FtZSB0byBzdHVmZiB0aGVzZSBo ZWxwZXJzIHRvIGlndF9wZXJmLmxhIC0gCj4gc2luY2UgYm90aCBvdmVybGF5IGFuZCBpbnRlbF9n cHVfZ3B1IGxpbmsgd2l0aCBpdCBhbHJlYWR5IGFuZCBpdCBpcyAKPiBhYm91dCBpbnRlcmZhY2lu ZyB3aXRoIHBlcmYgYWZ0ZXIgYWxsLgoKQXMgZmFyIGFzIGlndCBnb2VzLCBpbW8gd2Ugc2hvdWxk IG1vdmUgdGhlIHN0cnRvZCBoYW5kbGluZyBpbnRvIGlndF9zeXNmcwp3aXRoIHRoZSBvdGhlciBz Y2FuZi4KIAo+IFRoZXJlIGFyZSBzb21lIHNtYWxsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZ1 bmN0aW9ucyBoZXJlIGFuZCBpbiAKPiBpbnRlbF9ncHVfdG9wLCBzb21lb25lIGlzIHJpZ2h0IG9y IHdyb25nLCBvciBhdCBsZWFzdCBtb3JlIHJpZ2h0PwoKT25seSBjaGFuZ2VkIHRvIHVzZSB0aHJl YWRzYWZlIHVzZWxvY2FsZSgpIGlpcmMuCgo+ID4gK3N0YXRpYyB1aW50NjRfdCByYXBsX3R5cGVf aWQodm9pZCkKPiA+ICt7Cj4gPiArICAgICByZXR1cm4gZmlsZW5hbWVfdG9fdTY0KCIvc3lzL2Rl dmljZXMvcG93ZXIvdHlwZSIsIDEwKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHVpbnQ2NF90 IHJhcGxfZ3B1X3Bvd2VyKHZvaWQpCj4gPiArewo+ID4gKyAgICAgcmV0dXJuIGZpbGVuYW1lX3Rv X3U2NCgiL3N5cy9kZXZpY2VzL3Bvd2VyL2V2ZW50cy9lbmVyZ3ktZ3B1IiwgMCk7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBkb3VibGUgcmFwbF9ncHVfcG93ZXJfc2NhbGUodm9pZCkKPiA+ICt7 Cj4gPiArICAgICByZXR1cm4gZmlsZW5hbWVfdG9fZG91YmxlKCIvc3lzL2RldmljZXMvcG93ZXIv ZXZlbnRzL2VuZXJneS1ncHUuc2NhbGUiKTsKPiA+ICt9Cj4gPiArCj4gPiAraW50IGdwdV9wb3dl cl9vcGVuKHN0cnVjdCBncHVfcG93ZXIgKnBvd2VyKQo+ID4gK3sKPiA+ICsgICAgIHBvd2VyLT5m ZCA9IGlndF9wZXJmX29wZW4ocmFwbF90eXBlX2lkKCksIHJhcGxfZ3B1X3Bvd2VyKCkpOwo+ID4g KyAgICAgaWYgKHBvd2VyLT5mZCA8IDApIHsKPiA+ICsgICAgICAgICAgICAgcG93ZXItPmZkID0g LWVycm5vOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ ICsgICAgIHBvd2VyLT5zY2FsZSA9IHJhcGxfZ3B1X3Bvd2VyX3NjYWxlKCk7Cj4gPiArICAgICBp ZiAoaXNuYW4ocG93ZXItPnNjYWxlKSB8fCAhcG93ZXItPnNjYWxlKSB7Cj4gPiArICAgICAgICAg ICAgIGNsb3NlKHBvd2VyLT5mZCk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gZXJyOwo+ID4gKyAg ICAgfQo+ID4gKyAgICAgcG93ZXItPnNjYWxlICo9IDFlOTsKPiAKPiBTY2FsZSBoYXMgbm8gdW5p dCBzbyBJIHRoaW5rIHRoaXMgd291bGQgZ28gYmV0dGVyIGludG8gZ3B1X3Bvd2VyX1cuIAo+IFdv dWxkIGF2b2lkICogMWU5ICogMWUtOSBpbiBncHVfcG93ZXJfSiBhcyB3ZWxsLgoKSXQncyA2IG9m IG9uZSwgaGFsZi1hLWRvemVuIG9mIHRoZSBvdGhlci4gSSB3YXMgdGVtcHRlZCB0byBtb3ZlIGl0 CmFyb3VuZCwgYnV0IHlvdSBzdGlsbCBlbmQgdXAgc2NhbGluZyBzb21ld2hlcmUuCgpncHVfcG93 ZXJfSigpCmdwdV9wb3dlcl9zKCkKZ3B1X3Bvd2VyX1coKQoKYW5kIGhvcGUgZm9yIHRoZSBiZXN0 LgotQ2hyaXMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2