From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2EAD98979D for ; Tue, 19 Mar 2019 04:26:53 +0000 (UTC) Date: Mon, 18 Mar 2019 21:26:51 -0700 Message-ID: <87d0mnebg4.wl-ashutosh.dixit@intel.com> From: Ashutosh Dixit In-Reply-To: <20190316092505.19820-1-chris@chris-wilson.co.uk> References: <20190316092505.19820-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Subject: Re: [igt-dev] [PATCH i-g-t 1/2] lib: Add hooks for enabling ftrace 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: Chris Wilson Cc: igt-dev@lists.freedesktop.org List-ID: T24gU2F0LCAxNiBNYXIgMjAxOSAwMjoyNTowNCAtMDcwMCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+ Cj4gSWYgdGhlIGtlcm5lbCBoYXMgdHJhY2luZyBzdXBwb3J0IGJ1aWx0aW4sIHdlIGNhbiBlbmFi bGUgYXJvdW5kCj4gdHJvdWJsZXNvbWUgdGVzdHMgdG8gb2J0YWluIGdyZWF0ZXIgZGV0YWlsIGZy b20gdGhlIGtlcm5lbCB0aGF0IG1heQo+IHByb3ZlIGludmFsdWFibGUgaW4gZGVidWdnaW5nIHRo ZSBwcm9ibGVtLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CgpJIGhhdmUgYSBmZXcgZ2VuZXJhbCBjb21tZW50cyBvbiB0aGUgcGF0Y2gu IEkgaGF2ZSBzdWJtaXR0ZWQgYSBwYXRjaCBbMV0Kd2hpY2ggaGFzIHNvbWUgb3ZlcmxhcCB3aXRo IHRoZSBmdW5jdGlvbmFsaXR5IGVuYWJsZWQgaGVyZSBzbyBJIGFtIHRoaW5raW5nCmlmIGl0IGlz IHBvc3NpYmxlIHRvIGNvbWJpbmUgdGhlIGJlc3QgcGFydHMgb2YgYm90aCB0aGUgcGF0Y2hlcy4g SSBhbSBhd2FyZQp0aGF0IGNvbWluZyB1cCB3aXRoIGEgZ2VuZXJhbCBoYXJkLWNvZGVkIHNvbHV0 aW9uIGZvciB0aGVzZSBzb3J0IG9mIHRyYWNlcwppcyBkaWZmaWN1bHQuCgphLiBJcyB0aGUgZnVu Y3Rpb24gZ3JhcGggdHJhY2VyIHRoZSBtb3N0IHVzZWZ1bCB0cmFjZXIgdG8gdXNlIGFzIGlzIGRv bmUgaW4KICAgdGhpcyBwYXRjaD8gT3IgYSBub3AgdHJhY2VyLCBvciBpdCBkb2Vzbid0IG1hdHRl cj8KYi4gRG8gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgZnRyYWNlIHJpbmcg dG8gcmVkdWNlIHRoZQogICBsaWtlbGlob29kIG9mIHRoZSBmdHJhY2UgcmluZyBvdmVyZmxvdz8K Yy4gVGhpcyBwYXRjaCBkdW1wcyBvdXQgdGhlIGZ0cmFjZSBidWZmZXIgd2hlbiB0aGVyZSBpcyBh IGtlcm5lbAogICBvb3BzLiBIb3dldmVyLCBhZmFpaywgdGhlIGF1ZGlvIGlzc3VlcyB3ZSBhcmUg c2VlaW5nIHJlc3VsdCBpbiB0ZXN0CiAgIGZhaWx1cmVzIGJ1dCB0aGVyZSBhcmUgbm8gb29wcy4K ZC4gRXZlbiB3aGVuIHRoZXJlIGlzIGFuIG9vcHMsIGZ0cmFjZSBvdXRwdXQgZnJvbSB0aGlzIHBh dGNoIHdpbGwgY29udGFpbgogICB0aGUgb3V0cHV0IGZyb20gYWxsIHByZXZpb3VzIHN1Yi10ZXN0 cywgbm90IGp1c3QgdGhlIHN1Yi10ZXN0IHdoaWNoCiAgIGNhdXNlZCB0aGUgb29wcy4gSSBoYWQg dHJpZWQgdG8gdGFrZSBjYXJlIG9mIGMuIGFuZCBkLiBpbiBteSBwYXRjaC4KClRoYW5rcyEKClsx XSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjkyNTc0LwoKPiAtLS0K PiAgbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwo+ICBsaWIvaWd0X2NvcmUuYyAgICAgICB8 ICAyOCArKy0tLS0KPiAgbGliL2lndF9mdHJhY2UuYyAgICAgfCAyMDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWIvaWd0X2Z0cmFjZS5oICAgICB8ICA0 NiArKysrKysrKysrCj4gIGxpYi9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKPiAgNSBmaWxlcyBj aGFuZ2VkLCAyNTggaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWIvaWd0X2Z0cmFjZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2Z0 cmFjZS5oCj4KPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZp bGUuc291cmNlcwo+IGluZGV4IGNmMjcyMDk4MS4uMjRlZTVmMDk0IDEwMDY0NAo+IC0tLSBhL2xp Yi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMjYs NiArMjYsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkJXAo+CWlndF9jb2xvcl9lbmNvZGluZy5jCVwK PglpZ3RfY29sb3JfZW5jb2RpbmcuaAlcCj4JaWd0X2VkaWRfdGVtcGxhdGUuaAlcCj4gKwlpZ3Rf ZnRyYWNlLmMJCVwKPiArCWlndF9mdHJhY2UuaAkJXAo+CWlndF9ndC5jCQlcCj4JaWd0X2d0LmgJ CVwKPglpZ3RfZ3Z0LmMJCVwKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0 X2NvcmUuYwo+IGluZGV4IDZlYjQ3OThlMi4uM2U2OWNmNjZjIDEwMDY0NAo+IC0tLSBhL2xpYi9p Z3RfY29yZS5jCj4gKysrIGIvbGliL2lndF9jb3JlLmMKPiBAQCAtNjIsNiArNjIsNyBAQAo+ICAj aW5jbHVkZSAiaW50ZWxfaW8uaCIKPiAgI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgiCj4gICNpbmNs dWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4gKyNpbmNsdWRlICJpZ3RfZnRyYWNlLmgiCj4gICNpbmNs dWRlICJ2ZXJzaW9uLmgiCj4gICNpbmNsdWRlICJjb25maWcuaCIKPgo+IEBAIC00OTAsMzEgKzQ5 MSwxMSBAQCB2b2lkIF9faWd0X2ZpeHR1cmVfZW5kKHZvaWQpCj4Jc2lnbG9uZ2ptcChpZ3Rfc3Vi dGVzdF9qbXBidWYsIDEpOwo+ICB9Cj4KPiAtLyoKPiAtICogSWYgdGhlIHRlc3QgdGFrZXMgb3V0 IHRoZSBtYWNoaW5lLCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgZG1lc2cKPiAtICogc3BhbSwg dGhlIGtlcm5lbCBtYXkgYWxzbyBlbWl0IGEgImRlYXRoIHJhdHRsZSIgLS0gZXh0cmEgZGVidWcK PiAtICogaW5mb3JtYXRpb24gdGhhdCBpcyBvdmVya2lsbCBmb3Igbm9ybWFsIHN1Y2Nlc3NmdWwg dGVzdHMsIGJ1dAo+IC0gKiB2aXRhbCBmb3IgcG9zdC1tb3J0ZW0gYW5hbHlzaXMuCj4gLSAqLwo+ IC1zdGF0aWMgdm9pZCBmdHJhY2VfZHVtcF9vbl9vb3BzKGJvb2wgZW5hYmxlKQo+IC17Cj4gLQlp bnQgZmQ7Cj4gLQo+IC0JZmQgPSBvcGVuKCIvcHJvYy9zeXMva2VybmVsL2Z0cmFjZV9kdW1wX29u X29vcHMiLCBPX1dST05MWSk7Cj4gLQlpZiAoZmQgPCAwKQo+IC0JCXJldHVybjsKPiAtCj4gLQkv Kgo+IC0JICogSWYgd2UgZmFpbCwgd2UgZG8gbm90IGdldCB0aGUgZGVhdGggcmF0dGxlIHdlIHdp c2gsIGJ1dCB3ZQo+IC0JICogc3RpbGwgd2FudCB0byBydW4gdGhlIHRlc3RzIGFueXdheS4KPiAt CSAqLwo+IC0JaWd0X2lnbm9yZV93YXJuKHdyaXRlKGZkLCBlbmFibGUgPyAiMVxuIiA6ICIwXG4i LCAyKSk7Cj4gLQljbG9zZShmZCk7Cj4gLX0KPiAtCj4gIGJvb2wgaWd0X2V4aXRfY2FsbGVkOwo+ ICBzdGF0aWMgdm9pZCBjb21tb25fZXhpdF9oYW5kbGVyKGludCBzaWcpCj4gIHsKPiArCWlndF9m dHJhY2VfY2xvc2UoKTsKPiArCj4JaWYgKCFpZ3Rfb25seV9saXN0X3N1YnRlc3RzKCkpIHsKPgkJ YmluZF9mYmNvbih0cnVlKTsKPgl9Cj4gQEAgLTgxMiw3ICs3OTMsOCBAQCBvdXQ6Cj4KPgkJc3lu YygpOwo+CQlvb21fYWRqdXN0X2Zvcl9kb29tKCk7Cj4gLQkJZnRyYWNlX2R1bXBfb25fb29wcyh0 cnVlKTsKPiArCj4gKwkJaWd0X2Z0cmFjZV9vcGVuKCk7Cj4JfQo+Cj4JLyogaW5zdGFsbCBleGl0 IGhhbmRsZXIsIHRvIGVuc3VyZSB3ZSBjbGVhbiB1cCAqLwo+IGRpZmYgLS1naXQgYS9saWIvaWd0 X2Z0cmFjZS5jIGIvbGliL2lndF9mdHJhY2UuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwLi40MjhiMzUxMzIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2lndF9m dHJhY2UuYwo+IEBAIC0wLDAgKzEsMjA0IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE3 IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us Cj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4g KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5j bHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArCj4gKyNpbmNsdWRlICJp Z3QuaCIKPiArI2luY2x1ZGUgImlndF9mdHJhY2UuaCIKPiArI2luY2x1ZGUgImlndF9kZWJ1Z2Zz LmgiCj4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiArCj4gKyNkZWZpbmUgQklUKHgpICgxdWwg PDwgKHgpKQo+ICsKPiArLyogT25seSBhIHNpbmdsZSB0cmFjZXIgaW4gdGhlIGtlcm5lbCwgc28g d2UgY2FuIHVzZSBhIHNpbmdsZXRvbiAqLwo+ICtzdHJ1Y3QgaWd0X2Z0cmFjZSB7Cj4gKwlpbnQg ZGlyOwo+ICsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyNkZWZpbmUgUElEX1NFVCBCSVQo MCkKPiArI2RlZmluZSBJTkNMVURFX1NFVCBCSVQoMSkKPiArI2RlZmluZSBFWENMVURFX1NFVCBC SVQoMikKPiArCj4gK30gaWd0X2Z0cmFjZSA9IHsgLTEgfTsKPiArCj4gKy8qCj4gKyAqIElmIHRo ZSB0ZXN0IHRha2VzIG91dCB0aGUgbWFjaGluZSwgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGRt ZXNnCj4gKyAqIHNwYW0sIHRoZSBrZXJuZWwgbWF5IGFsc28gZW1pdCBhICJkZWF0aCByYXR0bGUi IC0tIGV4dHJhIGRlYnVnCj4gKyAqIGluZm9ybWF0aW9uIHRoYXQgaXMgb3ZlcmtpbGwgZm9yIG5v cm1hbCBzdWNjZXNzZnVsIHRlc3RzLCBidXQKPiArICogdml0YWwgZm9yIHBvc3QtbW9ydGVtIGFu YWx5c2lzLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgZnRyYWNlX2R1bXBfb25fb29wcyhib29sIGVu YWJsZSkKPiArewo+ICsJaW50IGZkOwo+ICsKPiArCWZkID0gb3BlbigiL3Byb2Mvc3lzL2tlcm5l bC9mdHJhY2VfZHVtcF9vbl9vb3BzIiwgT19XUk9OTFkpOwo+ICsJaWYgKGZkIDwgMCkKPiArCQly ZXR1cm47Cj4gKwo+ICsJLyoKPiArCSAqIElmIHdlIGZhaWwsIHdlIGRvIG5vdCBnZXQgdGhlIGRl YXRoIHJhdHRsZSB3ZSB3aXNoLCBidXQgd2UKPiArCSAqIHN0aWxsIHdhbnQgdG8gcnVuIHRoZSB0 ZXN0cyBhbnl3YXkuCj4gKwkgKi8KPiArCWlndF9pZ25vcmVfd2Fybih3cml0ZShmZCwgZW5hYmxl ID8gIjFcbiIgOiAiMFxuIiwgMikpOwo+ICsJY2xvc2UoZmQpOwo+ICt9Cj4gKwo+ICtpbnQgaWd0 X2Z0cmFjZV9vcGVuKHZvaWQpCj4gK3sKPiArCWludCBkaXI7Cj4gKwlpbnQgZXJyOwo+ICsKPiAr CWRpciA9IG9wZW4oaWd0X2RlYnVnZnNfbW91bnQoKSwgT19SRE9OTFkpOwo+ICsJaWYgKGRpciA8 IDApCj4gKwkJcmV0dXJuIC1lcnJubzsKPiArCj4gKwlpZ3RfZnRyYWNlLmRpciA9IG9wZW5hdChk aXIsICJ0cmFjaW5nIiwgT19SRE9OTFkpOwo+ICsJY2xvc2UoZGlyKTsKPiArCWlmIChpZ3RfZnRy YWNlLmRpciA8IDApCj4gKwkJcmV0dXJuIC1lcnJubzsKPiArCj4gKwllcnIgPSBpZ3RfZnRyYWNl X2Rpc2FibGUoKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBmdF9jbG9zZTsKPiArCj4gKwlmdHJh Y2VfZHVtcF9vbl9vb3BzKHRydWUpOwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtmdF9jbG9zZToKPiAr CWNsb3NlKGlndF9mdHJhY2UuZGlyKTsKPiArCWlndF9mdHJhY2UuZGlyID0gLTE7Cj4gKwlyZXR1 cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgX19pZ3RfZnRyYWNlX2VuYWJsZShjb25zdCBjaGFyICpt b2RlLAo+ICsJCQljb25zdCBzdHJ1Y3QgaWd0X2Z0cmFjZV9vcHRpb25zICpvcHRzKQo+ICt7Cj4g KwlpbnQgZXJyOwo+ICsKPiArCWlmIChpZ3RfZnRyYWNlLmRpciA8IDApCj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwo+ICsJaWYgKCFtb2RlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWVy ciA9IGlndF9zeXNmc19zZXQoaWd0X2Z0cmFjZS5kaXIsICJjdXJyZW50X3RyYWNlciIsIG1vZGUp Owo+ICsJaWYgKGVyciA8IDApCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlpZiAob3B0cyAmJiBv cHRzLT5waWQpIHsKPiArCQllcnIgPSBpZ3Rfc3lzZnNfcHJpbnRmKGlndF9mdHJhY2UuZGlyLAo+ ICsJCQkJICAgICAgICJzZXRfZnRyYWNlX3BpZCIsICIlZCIsCj4gKwkJCQkgICAgICAgb3B0cy0+ cGlkKTsKPiArCQlpZiAoZXJyIDwgMCkKPiArCQkJZ290byBkaXNhYmxlOwo+ICsKPiArCQlpZ3Rf ZnRyYWNlLmZsYWdzIHw9IFBJRF9TRVQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKG9wdHMgJiYgb3B0cy0+ aW5jbHVkZSkgewo+ICsJCWVyciA9IGlndF9zeXNmc19zZXQoaWd0X2Z0cmFjZS5kaXIsCj4gKwkJ CQkgICAgInNldF9mdHJhY2VfZmlsdGVyIiwKPiArCQkJCSAgICBvcHRzLT5pbmNsdWRlKTsKPiAr CQlpZiAoZXJyIDwgMCkKPiArCQkJZ290byBkaXNhYmxlOwo+ICsKPiArCQlpZ3RfZnRyYWNlLmZs YWdzIHw9IElOQ0xVREVfU0VUOwo+ICsJfQo+ICsKPiArCWlmIChvcHRzICYmIG9wdHMtPmV4Y2x1 ZGUpIHsKPiArCQllcnIgPSBpZ3Rfc3lzZnNfc2V0KGlndF9mdHJhY2UuZGlyLAo+ICsJCQkJICAg ICJzZXRfZnRyYWNlX25vdHJhY2UiLAo+ICsJCQkJICAgIG9wdHMtPmV4Y2x1ZGUpOwo+ICsJCWlm IChlcnIgPCAwKQo+ICsJCQlnb3RvIGRpc2FibGU7Cj4gKwo+ICsJCWlndF9mdHJhY2UuZmxhZ3Mg fD0gRVhDTFVERV9TRVQ7Cj4gKwl9Cj4gKwo+ICsJZXJyID0gaWd0X3N5c2ZzX3NldChpZ3RfZnRy YWNlLmRpciwgInRyYWNlcl9vbiIsICIxIik7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4g ZXJyOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZGlzYWJsZToKPiArCWlndF9mdHJhY2VfZGlz YWJsZSgpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IGlndF9mdHJhY2VfZGlzYWJs ZSh2b2lkKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmIChpZ3RfZnRyYWNlLmRpciA8IDAp Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZXJyID0gaWd0X3N5c2ZzX3NldChpZ3RfZnRy YWNlLmRpciwgInRyYWNlcl9vbiIsICIwIik7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4g ZXJyOwo+ICsKPiArCWlmIChpZ3RfZnRyYWNlLmZsYWdzICYgUElEX1NFVCkgewo+ICsJCWlndF9z eXNmc19zZXQoaWd0X2Z0cmFjZS5kaXIsICJzZXRfZnRyYWNlX3BpZCIsICIiKTsKPiArCQlpZ3Rf ZnRyYWNlLmZsYWdzICY9IH5QSURfU0VUOwo+ICsJfQo+ICsKPiArCWlmIChpZ3RfZnRyYWNlLmZs YWdzICYgSU5DTFVERV9TRVQpIHsKPiArCQlpZ3Rfc3lzZnNfc2V0KGlndF9mdHJhY2UuZGlyLCAi c2V0X2Z0cmFjZV9maWx0ZXIiLCAiIik7Cj4gKwkJaWd0X2Z0cmFjZS5mbGFncyAmPSB+SU5DTFVE RV9TRVQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKGlndF9mdHJhY2UuZmxhZ3MgJiBFWENMVURFX1NFVCkg ewo+ICsJCWlndF9zeXNmc19zZXQoaWd0X2Z0cmFjZS5kaXIsICJzZXRfZnRyYWNlX25vdHJhY2Ui LCAiIik7Cj4gKwkJaWd0X2Z0cmFjZS5mbGFncyAmPSB+RVhDTFVERV9TRVQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgaWd0X2Z0cmFjZV9kdW1wKGNvbnN0IGNoYXIg KmhlYWRlcikKPiArewo+ICsJY2hhciAqdHh0Owo+ICsKPiArCWlmIChpZ3RfZnRyYWNlLmRpciA8 IDApCj4gKwkJcmV0dXJuOwo+ICsKPiArCXR4dCA9IGlndF9zeXNmc19nZXQoaWd0X2Z0cmFjZS5k aXIsICJ0cmFjZSIpOwo+ICsJaWYgKCF0eHQpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlndF9pbmZv KCIlczpcbiVzIiwgaGVhZGVyLCB0eHQpOwo+ICsJZnJlZSh0eHQpOwo+ICt9Cj4gKwo+ICt2b2lk IGlndF9mdHJhY2VfY2xvc2Uodm9pZCkKPiArewo+ICsJaWYgKGlndF9mdHJhY2UuZGlyIDwgMCkK PiArCQlyZXR1cm47Cj4gKwo+ICsJY2xvc2UoaWd0X2Z0cmFjZS5kaXIpOwo+ICsJaWd0X2Z0cmFj ZS5kaXIgPSAtMTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2Z0cmFjZS5oIGIvbGliL2ln dF9mdHJhY2UuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwLi4zZGQ2 NzY4MjkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2lndF9mdHJhY2UuaAo+IEBAIC0wLDAg KzEsNDYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjaWZuZGVmIElH VF9GVFJBQ0VfSAo+ICsjZGVmaW5lIElHVF9GVFJBQ0VfSAo+ICsKPiAraW50IGlndF9mdHJhY2Vf b3Blbih2b2lkKTsKPiArCj4gK3N0cnVjdCBpZ3RfZnRyYWNlX29wdGlvbnMgewo+ICsJaW50IHBp ZDsKPiArCWNvbnN0IGNoYXIgKmluY2x1ZGU7Cj4gKwljb25zdCBjaGFyICpleGNsdWRlOwo+ICt9 Owo+ICsKPiAraW50IF9faWd0X2Z0cmFjZV9lbmFibGUoY29uc3QgY2hhciAqbW9kZSwKPiArCQkJ Y29uc3Qgc3RydWN0IGlndF9mdHJhY2Vfb3B0aW9ucyAqb3B0cyk7Cj4gKyNkZWZpbmUgaWd0X2Z0 cmFjZV9lbmFibGUoKSBfX2lndF9mdHJhY2VfZW5hYmxlKCJmdW5jdGlvbl9ncmFwaCIsIE5VTEwp Cj4gKwo+ICtpbnQgaWd0X2Z0cmFjZV9kaXNhYmxlKHZvaWQpOwo+ICsKPiArdm9pZCBpZ3RfZnRy YWNlX2R1bXAoY29uc3QgY2hhciAqaGVhZGVyKTsKPiArCj4gK3ZvaWQgaWd0X2Z0cmFjZV9jbG9z ZSh2b2lkKTsKPiArCj4gKyNlbmRpZiAvKiBJR1RfRlRSQUNFX0ggKi8KPiBkaWZmIC0tZ2l0IGEv bGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCj4gaW5kZXggMGViNTU4NWQ3Li4yZjBm NjVhMDggMTAwNjQ0Cj4gLS0tIGEvbGliL21lc29uLmJ1aWxkCj4gKysrIGIvbGliL21lc29uLmJ1 aWxkCj4gQEAgLTksNiArOSw3IEBAIGxpYl9zb3VyY2VzID0gWwo+CSdpZ3RfZGVidWdmcy5jJywK PgknaWd0X2RldmljZS5jJywKPgknaWd0X2F1eC5jJywKPiArCSdpZ3RfZnRyYWNlLmMnLAo+CSdp Z3RfZ3QuYycsCj4JJ2lndF9ndnQuYycsCj4JJ2lndF9tYXRyaXguYycsCj4gLS0KPiAyLjIwLjEK Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gaWd0 LWRldiBtYWlsaW5nIGxpc3QKPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcg bGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=