From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH 08/20] drm/i915: Add a relay backed debugfs interface for capturing GuC logs Date: Fri, 12 Aug 2016 21:40:10 +0530 Message-ID: References: <1470983123-22127-1-git-send-email-akash.goel@intel.com> <1470983123-22127-9-git-send-email-akash.goel@intel.com> <57ADD4C4.8010902@linux.intel.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 ESMTP id 6984A6E2F4 for ; Fri, 12 Aug 2016 16:10:13 +0000 (UTC) In-Reply-To: <57ADD4C4.8010902@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: Sourab Gupta , akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiA4LzEyLzIwMTYgNzoyMyBQTSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAxMi8w OC8xNiAwNzoyNSwgYWthc2guZ29lbEBpbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IEFrYXNoIEdv ZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+Pgo+PiBBZGRlZCBhIG5ldyBkZWJ1Z2ZzIGludGVy ZmFjZSAnL3N5cy9rZXJuZWwvZGVidWcvZHJpL2d1Y19sb2cnIGZvciB0aGUKPj4gVXNlciB0byBj YXB0dXJlIEd1QyBmaXJtd2FyZSBsb2dzLiBBdmFpbGVkIHJlbGF5IGZyYW1ld29yayB0byBpbXBs ZW1lbnQKPj4gdGhlIGludGVyZmFjZSwgd2hlcmUgRHJpdmVyIHdpbGwgaGF2ZSB0byBqdXN0IHVz ZSBhIHJlbGF5IEFQSSB0byBzdG9yZQo+PiBzbmFwc2hvdHMgb2YgdGhlIEd1QyBsb2cgYnVmZmVy IGluIHRoZSBidWZmZXIgbWFuYWdlZCBieSByZWxheS4KPj4gVGhlIHNuYXBzaG90IHdpbGwgYmUg dGFrZW4gd2hlbiBHdUMgZmlybXdhcmUgc2VuZHMgYSBsb2cgYnVmZmVyIGZsdXNoCj4+IGludGVy cnVwdCBhbmQgdXAgdG8gZm91ciBzbmFwaG90cyBjb3VsZCBiZSBzdG9yZWQgaW4gdGhlIHJlbGF5 IGJ1ZmZlci4KPgo+IHNuYXBzaG90cwo+Cj4+IFRoZSByZWxheSBidWZmZXIgd2lsbCBiZSBvcGVy YXRlZCBpbiBhIG1vZGUgd2hlcmUgaXQgd2lsbCBvdmVyd3JpdGUgdGhlCj4+IGRhdGEgbm90IHll dCBjb2xsZWN0ZWQgYnkgVXNlci4KPj4gQmVzaWRlcyBtbWFwIG1ldGhvZCwgdGhyb3VnaCB3aGlj aCBVc2VyIGNhbiBkaXJlY3RseSBhY2Nlc3MgdGhlIHJlbGF5Cj4+IGJ1ZmZlciBjb250ZW50cywg cmVsYXkgYWxzbyBzdXBwb3J0cyB0aGUgJ3BvbGwnIG1ldGhvZC4gVGhyb3VnaCB0aGUKPj4gJ3Bv bGwnCj4+IGNhbGwgb24gbG9nIGZpbGUsIFVzZXIgY2FuIGNvbWUgdG8ga25vdyB3aGVuZXZlciBh IG5ldyBzbmFwc2hvdCBvZiB0aGUKPj4gbG9nIGJ1ZmZlciBpcyB0YWtlbiBieSBEcml2ZXIsIHNv IGNhbiBydW4gaW4gdGFuZGVtIHdpdGggdGhlIERyaXZlciBhbmQKPj4gY2FwdHVyZSB0aGUgbG9n cyBpbiBhIHN1c3RhaW5lZC9zdHJlYW1pbmcgbWFubmVyLCB3aXRob3V0IGFueSBsb3NzIG9mCj4+ IGRhdGEuCj4+Cj4+IHYyOiBEZWZlciB0aGUgY3JlYXRpb24gb2YgcmVsYXkgY2hhbm5lbCAmIGFz c29jaWF0ZWQgZGVidWdmcyBmaWxlLCBhcwo+PiAgICAgIGRlYnVnZnMgc2V0dXAgaXMgbm93IGRv bmUgYXQgdGhlIGVuZCBvZiBpOTE1IERyaXZlciBsb2FkLiAoQ2hyaXMpCj4+Cj4+IHYzOgo+PiAt IFN3aXRjaCB0byBuby1vdmVyd3JpdGUgbW9kZSBmb3IgcmVsYXkuCj4+IC0gRml4IHRoZSByZWxh eSBzdWIgYnVmZmVyIHN3aXRjaGluZyBzZXF1ZW5jZS4KPj4KPj4gdjQ6Cj4+IC0gVXBkYXRlIGk5 MTUgS2NvbmZpZyB0byBzZWxlY3QgUkVMQVkgY29uZmlnLiAoVHZydEtvKQo+PiAtIExvZyBhIG1l c3NhZ2Ugd2hlbiB0aGVyZSBpcyBubyBzdWIgYnVmZmVyIGF2YWlsYWJsZSB0byBjYXB0dXJlCj4+ ICAgIHRoZSBHdUMgbG9nIGJ1ZmZlci4gKFR2cnRrbykKPj4gLSBJbmNyZWFzZSB0aGUgbnVtYmVy IG9mIHJlbGF5IHN1YiBidWZmZXJzIHRvIDggZnJvbSA0LCB0byBoYXZlCj4+ICAgIHN1ZmZpY2ll bnQgYnVmZmVyaW5nIGZvciBib290IHRpbWUgbG9ncwo+Pgo+PiBTdWdnZXN0ZWQtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBTaWduZWQtb2ZmLWJ5OiBTb3Vy YWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEFrYXNo IEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9LY29uZmlnICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICB8ICAgMiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgMjA2Cj4+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKystCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwg ICAzICsKPj4gICA0IGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPj4gaW5kZXggNzc2OWU0Ni4uZmM5MDBkMiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9LY29uZmlnCj4+IEBAIC0xMSw2ICsxMSw3IEBAIGNvbmZpZyBEUk1fSTkx NQo+PiAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVIKPj4gICAgICAgc2VsZWN0IERSTV9QQU5F TAo+PiAgICAgICBzZWxlY3QgRFJNX01JUElfRFNJCj4+ICsgICAgc2VsZWN0IFJFTEFZCj4+ICAg ICAgICMgaTkxNSBkZXBlbmRzIG9uIEFDUElfVklERU8gd2hlbiBBQ1BJIGlzIGVuYWJsZWQKPj4g ICAgICAgIyBidXQgZm9yIHNlbGVjdCB0byB3b3JrLCBuZWVkIHRvIHNlbGVjdCBBQ1BJX1ZJREVP J3MKPj4gZGVwZW5kZW5jaWVzLCBpY2sKPj4gICAgICAgc2VsZWN0IEJBQ0tMSUdIVF9MQ0RfU1VQ UE9SVCBpZiBBQ1BJCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBpbmRleCBmYzJkYTMy Li5jYjhjOTQzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gQEAgLTExNDUsNiAr MTE0NSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdAo+PiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAgICAgLyogUmV2ZWFsIG91ciBwcmVzZW5jZSB0 byB1c2Vyc3BhY2UgKi8KPj4gICAgICAgaWYgKGRybV9kZXZfcmVnaXN0ZXIoZGV2LCAwKSA9PSAw KSB7Cj4+ICAgICAgICAgICBpOTE1X2RlYnVnZnNfcmVnaXN0ZXIoZGV2X3ByaXYpOwo+PiArICAg ICAgICBpOTE1X2d1Y19yZWdpc3RlcihkZXZfcHJpdik7Cj4+ICAgICAgICAgICBpOTE1X3NldHVw X3N5c2ZzKGRldik7Cj4+ICAgICAgIH0gZWxzZQo+PiAgICAgICAgICAgRFJNX0VSUk9SKCJGYWls ZWQgdG8gcmVnaXN0ZXIgZHJpdmVyIGZvciB1c2Vyc3BhY2UgYWNjZXNzIVxuIik7Cj4+IEBAIC0x MTgzLDYgKzExODQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVj dAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAgICAgaW50ZWxfb3ByZWdpb25f dW5yZWdpc3RlcihkZXZfcHJpdik7Cj4+Cj4+ICAgICAgIGk5MTVfdGVhcmRvd25fc3lzZnMoJmRl dl9wcml2LT5kcm0pOwo+PiArICAgIGk5MTVfZ3VjX3VucmVnaXN0ZXIoZGV2X3ByaXYpOwo+PiAg ICAgICBpOTE1X2RlYnVnZnNfdW5yZWdpc3RlcihkZXZfcHJpdik7Cj4+ICAgICAgIGRybV9kZXZf dW5yZWdpc3RlcigmZGV2X3ByaXYtPmRybSk7Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gaW5kZXggMjYzNWI2Ny4uMWEyZDY0OCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+PiBAQCAtMjMs NiArMjMsOCBAQAo+PiAgICAqLwo+PiAgICNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgo+PiAg ICNpbmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWxheS5oPgo+PiAgICNpbmNsdWRlICJpOTE1X2Rydi5o Igo+PiAgICNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPj4KPj4gQEAgLTg1MSwxMiArODUzLDMzIEBA IGVycjoKPj4KPj4gICBzdGF0aWMgdm9pZCBndWNfbW92ZV90b19uZXh0X2J1ZihzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCj4+ICAgewo+PiAtICAgIHJldHVybjsKPj4gKyAgICAvKiBNYWtlIHN1cmUg dGhlIHVwZGF0ZXMgbWFkZSBpbiB0aGUgc3ViIGJ1ZmZlciBhcmUgdmlzaWJsZSB3aGVuCj4+ICsg ICAgICogQ29uc3VtZXIgc2VlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZSB0byBvZmZzZXQgaW5zaWRl IHRoZSBzdWIKPj4gYnVmZmVyLgo+PiArICAgICAqLwo+PiArICAgIHNtcF93bWIoKTsKPj4gKwo+ PiArICAgIC8qIEFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIHNvIG5vdyBtb3ZlIHRoZSBvZmZz ZXQgb2Ygc3ViCj4+IGJ1ZmZlci4gKi8KPj4gKyAgICByZWxheV9yZXNlcnZlKGd1Yy0+bG9nLnJl bGF5X2NoYW4sIGd1Yy0+bG9nLm9iai0+YmFzZS5zaXplKTsKPj4gKwo+PiArICAgIC8qIFN3aXRj aCB0byB0aGUgbmV4dCBzdWIgYnVmZmVyICovCj4+ICsgICAgcmVsYXlfZmx1c2goZ3VjLT5sb2cu cmVsYXlfY2hhbik7Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyB2b2lkKiBndWNfZ2V0X3dyaXRlX2J1 ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+ICAgewo+PiAtICAgIHJldHVybiBOVUxMOwo+ PiArICAgIC8qIEZJWE1FOiBDb3ZlciB0aGUgY2hlY2sgdW5kZXIgYSBsb2NrID8gKi8KPgo+IE5l ZWQgdG8gcmVzb2x2ZSBiZWZvcmUgci1iIGluIGFueSBjYXNlLgpBZnRlciB0aGUgbGFzdCBwYXRj aCBpbiB0aGlzIHNlcmllcywgd2hlcmUgcmVsYXkgY2hhbm5lbCB3aWxsIGJlIGNyZWF0ZWQgCmJl Zm9yZSBlbmFibGluZyB0aGUgR3VDIGludGVycnVwdHMsIHRoZSBuZWVkIG9mIGxvY2sgd2lsbCBu b3QgYmUgdGhlcmUgCnNvIHdpbGwgcmVtb3ZlIHRoZXNlIGNvbW1lbnRzIGluIHRoYXQgcGF0Y2gu Cgo+Cj4+ICsgICAgaWYgKCFndWMtPmxvZy5yZWxheV9jaGFuKQo+PiArICAgICAgICByZXR1cm4g TlVMTDsKPj4gKwo+PiArICAgIC8qIEp1c3QgZ2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgYSBuZXcg c3ViIGJ1ZmZlciBhbmQgY29weSBkYXRhCj4+IGludG8gaXQKPj4gKyAgICAgKiBvdXJzZWx2ZXMu IE5VTEwgd2lsbCBiZSByZXR1cm5lZCBpbiBuby1vdmVyd3JpdGUgbW9kZSwgaWYgYWxsIHN1Ygo+ PiArICAgICAqIGJ1ZmZlcnMgYXJlIGZ1bGwuIENvdWxkIGhhdmUgdXNlZCB0aGUgcmVsYXlfd3Jp dGUoKSB0byBpbmRpcmVjdGx5Cj4+ICsgICAgICogY29weSB0aGUgZGF0YSwgYnV0IHRoYXQgd291 bGQgaGF2ZSBiZWVuIGJpdCBjb252b2x1dGVkLCBhcyB3ZQo+PiBuZWVkIHRvCj4+ICsgICAgICog d3JpdGUgdG8gb25seSBjZXJ0YWluIGxvY2F0aW9ucyBpbnNpZGUgYSBzdWIgYnVmZmVyIHdoaWNo Cj4+IGNhbm5vdCBiZQo+PiArICAgICAqIGRvbmUgd2l0aG91dCB1c2luZyByZWxheV9yZXNlcnZl KCkgYWxvbmcgd2l0aCByZWxheV93cml0ZSgpLgo+PiBTbyBpdHMKPj4gKyAgICAgKiBiZXR0ZXIg dG8gdXNlIHJlbGF5X3Jlc2VydmUoKSBhbG9uZS4KPj4gKyAgICAgKi8KPj4gKyAgICByZXR1cm4g cmVsYXlfcmVzZXJ2ZShndWMtPmxvZy5yZWxheV9jaGFuLCAwKTsKPj4gICB9Cj4+Cj4+ICAgc3Rh dGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xvZ19idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+PiBAQCAtOTIzLDYgKzk0NiwxMzAgQEAgc3RhdGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xv Z19idWZmZXIoc3RydWN0Cj4+IGludGVsX2d1YyAqZ3VjKQo+Pgo+PiAgICAgICBpZiAobG9nX2J1 ZmZlcl9zbmFwc2hvdF9zdGF0ZSkKPj4gICAgICAgICAgIGd1Y19tb3ZlX3RvX25leHRfYnVmKGd1 Yyk7Cj4+ICsgICAgZWxzZSB7Cj4+ICsgICAgICAgIC8qIFVzZWQgcmF0ZSBsaW1pdGVkIHRvIGF2 b2lkIGRlbHVnZSBvZiBtZXNzYWdlcywgbG9ncyBtaWdodCBiZQo+PiArICAgICAgICAgKiBnZXR0 aW5nIGNvbnN1bWVkIGJ5IFVzZXIgYXQgYSBzbG93IHJhdGUuCj4+ICsgICAgICAgICAqLwo+PiAr ICAgICAgICBEUk1fRVJST1JfUkFURUxJTUlURUQoIm5vIHN1Yi1idWZmZXIgdG8gY2FwdHVyZSBs b2cgYnVmZmVyXG4iKTsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBTdWIgYnVm ZmVyIHN3aXRjaCBjYWxsYmFjay4gQ2FsbGVkIHdoZW5ldmVyIHJlbGF5IGhhcyB0byBzd2l0Y2gg dG8KPj4gYSBuZXcKPj4gKyAqIHN1YiBidWZmZXIsIHJlbGF5IHN0YXlzIG9uIHRoZSBzYW1lIHN1 YiBidWZmZXIgaWYgMCBpcyByZXR1cm5lZC4KPj4gKyAqLwo+PiArc3RhdGljIGludCBzdWJidWZf c3RhcnRfY2FsbGJhY2soc3RydWN0IHJjaGFuX2J1ZiAqYnVmLAo+PiArICAgICAgICAgICAgICAg ICB2b2lkICpzdWJidWYsCj4+ICsgICAgICAgICAgICAgICAgIHZvaWQgKnByZXZfc3ViYnVmLAo+ PiArICAgICAgICAgICAgICAgICBzaXplX3QgcHJldl9wYWRkaW5nKQo+PiArewo+PiArICAgIC8q IFVzZSBuby1vdmVyd3JpdGUgbW9kZSBieSBkZWZhdWx0LCB3aGVyZSByZWxheSB3aWxsIHN0b3Ag YWNjZXB0aW5nCj4+ICsgICAgICogbmV3IGRhdGEgaWYgdGhlcmUgYXJlIG5vIGVtcHR5IHN1YiBi dWZmZXJzIGxlZnQuCj4+ICsgICAgICogVGhlcmUgaXMgbm8gc3RyaWN0IHN5bmNocm9uaXphdGlv biBlbmZvcmNlZCBieSByZWxheSBiZXR3ZWVuCj4+IENvbnN1bWVyCj4+ICsgICAgICogYW5kIFBy b2R1Y2VyLiBJbiBvdmVyd3JpdGUgbW9kZSwgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZgo+PiBn ZXR0aW5nCj4+ICsgICAgICogaW5jb25zaXN0ZW50L2dhcmJsZWQgZGF0YSwgdGhlIHByb2R1Y2Vy IGNvdWxkIGJlIHdyaXRpbmcgb24gdG8KPj4gdGhlCj4+ICsgICAgICogc2FtZSBzdWIgYnVmZmVy IGZyb20gd2hpY2ggQ29uc3VtZXIgaXMgcmVhZGluZy4gVGhpcyBjYW4ndCBiZQo+PiBhdm9pZGVk Cj4+ICsgICAgICogdW5sZXNzIENvbnN1bWVyIGlzIGZhc3QgZW5vdWdoIGFuZCBjYW4gYWx3YXlz IHJ1biBpbiB0YW5kZW0gd2l0aAo+PiArICAgICAqIFByb2R1Y2VyLgo+PiArICAgICAqLwo+PiAr ICAgIGlmIChyZWxheV9idWZfZnVsbChidWYpKQo+PiArICAgICAgICByZXR1cm4gMDsKPj4gKwo+ PiArICAgIHJldHVybiAxOwo+PiArfQo+PiArCj4+ICsvKgo+PiArICogZmlsZV9jcmVhdGUoKSBj YWxsYmFjay4gQ3JlYXRlcyByZWxheSBmaWxlIGluIGRlYnVnZnMuCj4+ICsgKi8KPj4gK3N0YXRp YyBzdHJ1Y3QgZGVudHJ5ICpjcmVhdGVfYnVmX2ZpbGVfY2FsbGJhY2soY29uc3QgY2hhciAqZmls ZW5hbWUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJl bnQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1bW9kZV90IG1vZGUsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmNoYW5fYnVmICpidWYsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgKmlzX2dsb2JhbCkKPj4gK3sKPj4gKyAgICBzdHJ1Y3Qg ZGVudHJ5ICpidWZfZmlsZSA9IE5VTEw7Cj4+ICsKPgo+IFdvdWxkIHRoaXMgZnVuY3Rpb24gYmUg YSB0aW55IGJpdCBzaW1wbGVyIGFzOgo+Cj4gICAgIGlmICghcGFyZW50KQo+ICAgICAgICAgcmV0 dXJuIE5VTEw7Cj4KRmluZSwgd2lsbCBkbyBsaWtlIHRoaXMuCgo+ID8KPgo+PiArICAgIGlmIChw YXJlbnQpIHsKPj4gKyAgICAgICAgLyogTm90IHVzaW5nIHRoZSBjaGFubmVsIGZpbGVuYW1lIHBh c3NlZCBhcyBhbiBhcmd1bWVudCwgc2luY2UKPj4gKyAgICAgICAgICogZm9yIGVhY2ggY2hhbm5l bCByZWxheSBhcHBlbmRzIHRoZSBjb3JyZXNwb25kaW5nIENQVSBudW1iZXIKPj4gKyAgICAgICAg ICogdG8gdGhlIGZpbGVuYW1lIHBhc3NlZCBpbiByZWxheV9vcGVuKCkuIFRoaXMgc2hvdWxkIGJl IGZpbmUKPj4gKyAgICAgICAgICogYXMgcmVsYXkganVzdCBuZWVkcyBhIGRlbnRyeSBvZiB0aGUg ZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlCj4+ICsgICAgICAgICAqIGNoYW5uZWwgYnVmZmVyIGFu ZCB0aGF0IGZpbGUncyBuYW1lIG5lZWQgbm90IGJlIHNhbWUgYXMgdGhlCj4+ICsgICAgICAgICAq IGZpbGVuYW1lIHBhc3NlZCBhcyBhbiBhcmd1bWVudC4KPj4gKyAgICAgICAgICovCj4+ICsgICAg ICAgIGJ1Zl9maWxlID0gZGVidWdmc19jcmVhdGVfZmlsZSgiZ3VjX2xvZyIsIG1vZGUsCj4+ICsg ICAgICAgICAgICAgICAgcGFyZW50LCBidWYsICZyZWxheV9maWxlX29wZXJhdGlvbnMpOwo+Cj4g QWxpZ25tZW50IGlzIHdyb25nLgo+CldpbGwgY2hhbmdlIGxpa2UgdGhpcy4KCglidWZfZmlsZSA9 IGRlYnVnZnNfY3JlYXRlX2ZpbGUoImd1Y19sb2ciLCBtb2RlLAoJCQkJICAgICAgIHBhcmVudCwg YnVmLCAmcmVsYXlfZmlsZV9vcGVyYXRpb25zKTsKCj4+ICsgICAgfQo+PiArCj4+ICsgICAgLyog VGhpcyB0byBlbmFibGUgdGhlIHVzZSBvZiBhIHNpbmdsZSBidWZmZXIgZm9yIHRoZSByZWxheQo+ PiBjaGFubmVsIGFuZAo+PiArICAgICAqIGNvcnJlc3BvbmRpbmdseSBoYXZlIGEgc2luZ2xlIGZp bGUgZXhwb3NlZCB0byBVc2VyLCB0aHJvdWdoIHdoaWNoCj4+ICsgICAgICogaXQgY2FuIGNvbGxl Y3QgdGhlIGxvZ3MgaW5vcmRlciB3aXRob3V0IGFueSBwb3N0LXByb2Nlc3NpbmcuCj4KPiAiaW4g b3JkZXIiCgpGaW5lLgo+Cj4+ICsgICAgICovCj4+ICsgICAgKmlzX2dsb2JhbCA9IDE7Cj4+ICsK Pj4gKyAgICByZXR1cm4gYnVmX2ZpbGU7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBmaWxlX3Jl bW92ZSgpIGRlZmF1bHQgY2FsbGJhY2suIFJlbW92ZXMgcmVsYXkgZmlsZSBpbiBkZWJ1Z2ZzLgo+ PiArICovCj4+ICtzdGF0aWMgaW50IHJlbW92ZV9idWZfZmlsZV9jYWxsYmFjayhzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCj4+ICt7Cj4+ICsgICAgZGVidWdmc19yZW1vdmUoZGVudHJ5KTsKPj4gKyAg ICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArLyogcmVsYXkgY2hhbm5lbCBjYWxsYmFja3MgKi8K Pj4gK3N0YXRpYyBzdHJ1Y3QgcmNoYW5fY2FsbGJhY2tzIHJlbGF5X2NhbGxiYWNrcyA9IHsKPj4g KyAgICAuc3ViYnVmX3N0YXJ0ID0gc3ViYnVmX3N0YXJ0X2NhbGxiYWNrLAo+PiArICAgIC5jcmVh dGVfYnVmX2ZpbGUgPSBjcmVhdGVfYnVmX2ZpbGVfY2FsbGJhY2ssCj4+ICsgICAgLnJlbW92ZV9i dWZfZmlsZSA9IHJlbW92ZV9idWZfZmlsZV9jYWxsYmFjaywKPj4gK307Cj4+ICsKPj4gK3N0YXRp YyB2b2lkIGd1Y19yZW1vdmVfbG9nX3JlbGF5X2ZpbGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ PiArewo+PiArICAgIHJlbGF5X2Nsb3NlKGd1Yy0+bG9nLnJlbGF5X2NoYW4pOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IGd1Y19jcmVhdGVfbG9nX3JlbGF5X2ZpbGUoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+PiArewo+PiArICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGd1Y190b19pOTE1KGd1Yyk7Cj4+ICsgICAgc3RydWN0IHJjaGFuICpndWNfbG9nX3JlbGF5X2No YW47Cj4+ICsgICAgc3RydWN0IGRlbnRyeSAqbG9nX2RpcjsKPj4gKyAgICBzaXplX3Qgbl9zdWJi dWZzLCBzdWJidWZfc2l6ZTsKPj4gKwo+PiArICAgIC8qIEZvciBub3cgY3JlYXRlIHRoZSBsb2cg ZmlsZSBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy9kcmkvMCBkaXIgKi8KPgo+IFdoZXJlIGl0IHNob3Vs ZCBiZSBvciB3aWxsIGJlIGxhdGVyPwoKVGhlcmUgd2FzIGEgcHJvcG9zYWwgdG8gY3JlYXRlIGEg bmV3IGN1c3RvbSBmaWxlIHN5c3RlbSBmb3IgZHJtIApzdWJzeXN0ZW0gKHdpdGggYSBkaWZmZXJu dCBtb3VudCBwb2ludCkgYW5kIGFsbCB0aGUgZGVidWdmcyBmaWxlcyAmCnNvbWUgc3lzZnMgZmls ZXMgZm9yIGRybS9pOTE1IHdvdWxkIGJlIG1vdmVkIHRoZXJlLgoKPgo+PiArICAgIGxvZ19kaXIg PSBkZXZfcHJpdi0+ZHJtLnByaW1hcnktPmRlYnVnZnNfcm9vdDsKPj4gKwo+PiArICAgIC8qIElm IC9zeXMva2VybmVsL2RlYnVnL2RyaS8wIGxvY2F0aW9uIGRvIG5vdCBleGlzdCwgdGhlbiBkZWJ1 Z2ZzIGlzCj4+ICsgICAgICogbm90IG1vdW50ZWQgYW5kIHNvIGNhbid0IGNyZWF0ZSB0aGUgcmVs YXkgZmlsZS4KPj4gKyAgICAgKiBUaGUgcmVsYXkgQVBJIHNlZW1zIHRvIGZpdCB3ZWxsIHdpdGgg ZGVidWdmcyBvbmx5Lgo+PiArICAgICAqLwo+PiArICAgIGlmICghbG9nX2Rpcikgewo+PiArICAg ICAgICBEUk1fREVCVUdfRFJJVkVSKCJQYXJlbnQgZGVidWdmcyBkaXJlY3Rvcnkgbm90IGF2YWls YWJsZQo+PiB5ZXRcbiIpOwo+PiArICAgICAgICByZXR1cm4gLUVOT0RFVjsKPj4gKyAgICB9Cj4+ ICsKPj4gKyAgICAvKiBLZWVwIHRoZSBzaXplIG9mIHN1YiBidWZmZXJzIHNhbWUgYXMgc2hhcmVk IGxvZyBidWZmZXIgKi8KPj4gKyAgICBzdWJidWZfc2l6ZSA9IGd1Yy0+bG9nLm9iai0+YmFzZS5z aXplOwo+Cj4gSW5zZXJ0IGJsYW5rIGxpbmUgZm9yIHJlYWRhYmlsaXR5IHByb2JhYmx5LgpGaW5l IHdpbGwgYWRkIGEgbmV3bGluZS4KPgo+PiArICAgIC8qIFN0b3JlIHVwIHRvIDggc25hcGhvc3Rz LCB3aGljaCBpcyBsYXJnZSBlbm91Z2ggdG8gYnVmZmVyCj4+IHN1ZmZpY2llbnQKPgo+IHNuYXBz aG90cwpTb3JyeSBmb3IgdHlwby4KPgo+PiArICAgICAqIGJvb3QgdGltZSBsb2dzIGFuZCBwcm92 aWRlcyBlbm91Z2ggbGVld2F5IHRvIFVzZXIsIGluIHRlcm1zIG9mCj4+ICsgICAgICogbGF0ZW5j eSwgZm9yIGNvbnN1bWluZyB0aGUgbG9ncyBmcm9tIHJlbGF5LiBBbHNvIGRvZXNuJ3QgdGFrZQo+ PiArICAgICAqIHVwIHRvbyBtdWNoIG1lbW9yeS4KPj4gKyAgICAgICAgICovCj4KPiBJbmRlbnRh dGlvbiBpcyBvZmYuClNvcnJ5Lgo+Cj4+ICsgICAgbl9zdWJidWZzID0gODsKPj4gKwo+PiArICAg IGd1Y19sb2dfcmVsYXlfY2hhbiA9IHJlbGF5X29wZW4oImd1Y19sb2ciLCBsb2dfZGlyLAo+PiAr ICAgICAgICAgICAgc3ViYnVmX3NpemUsIG5fc3ViYnVmcywgJnJlbGF5X2NhbGxiYWNrcywgZGV2 X3ByaXYpOwo+Cj4gQWxpZ25tZW50IGlzIHdyb25nLgpTb3JyeS4KPgo+PiArCj4+ICsgICAgaWYg KCFndWNfbG9nX3JlbGF5X2NoYW4pIHsKPj4gKyAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiQ291 bGRuJ3QgY3JlYXRlIHJlbGF5IGNoYW4gZm9yIGd1YyBsb2dzXG4iKTsKPj4gKyAgICAgICAgcmV0 dXJuIC1FTk9NRU07Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgLyogRklYTUU6IENvdmVyIHRoZSB1 cGRhdGUgdW5kZXIgYSBsb2NrID8gKi8KPgo+IEFub3RoZXIgRklYTUUgdG8gYmUgcmVzb2x2ZWQu ClNhbWUgYXMgYWJvdmUsIHdpbGwgcmVtb3ZlIGl0IGluIHRoZSBsYXN0IHBhdGNoIG9mIHRoaXMg c2VyaWVzLgoKPgo+PiArICAgIGd1Yy0+bG9nLnJlbGF5X2NoYW4gPSBndWNfbG9nX3JlbGF5X2No YW47Cj4+ICsgICAgcmV0dXJuIDA7Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyB2b2lkIGd1Y19sb2df Y2xlYW51cChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+IEBAIC05MzcsNiArMTA4NCwxMSBAQCBz dGF0aWMgdm9pZCBndWNfbG9nX2NsZWFudXAoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiAgICAg ICAvKiBGaXJzdCBkaXNhYmxlIHRoZSBmbHVzaCBpbnRlcnJ1cHQgKi8KPj4gICAgICAgZ2VuOV9k aXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPj4KPj4gKyAgICBpZiAoZ3VjLT5sb2cu cmVsYXlfY2hhbikKPj4gKyAgICAgICAgZ3VjX3JlbW92ZV9sb2dfcmVsYXlfZmlsZShndWMpOwo+ PiArCj4+ICsgICAgZ3VjLT5sb2cucmVsYXlfY2hhbiA9IE5VTEw7Cj4+ICsKPj4gICAgICAgaWYg KGd1Yy0+bG9nLmJ1Zl9hZGRyKQo+PiAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0X3VucGluX21h cChndWMtPmxvZy5vYmopOwo+Pgo+PiBAQCAtMTAxNSw2ICsxMTY3LDM1IEBAIHN0YXRpYyB2b2lk IGd1Y19jcmVhdGVfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gICAgICAgZ3VjLT5sb2cu ZmxhZ3MgPSAob2Zmc2V0IDw8IEdVQ19MT0dfQlVGX0FERFJfU0hJRlQpIHwgZmxhZ3M7Cj4+ICAg fQo+Pgo+PiArc3RhdGljIGludCBndWNfbG9nX2xhdGVfc2V0dXAoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+Cj4gc3RhdGljIHZvaWQgaWYgZmFpbHVyZSBjYW5ub3QgYmUgaGFuZGxlZCBvciBvdGhl cndpc2UgYWN0IG9uIHRoZSByZXR1cm4KPiB2YWx1ZT8KPgpyZXR1cm4gdmFsdWUgaXMgYWN0ZWQg dXBvbiBmb3IgdGhlIGNhbGwgZnJvbSBkZWJ1Z2ZzIGZ1bmN0aW9uLgoKQnV0IG5vIHVzZSBvZiB0 aGF0IGNhbGxlZCBmcm9tIERyaXZlciBsb2FkIHBhdGguCgpCZXN0IHJlZ2FyZHMKQWthc2gKCj4+ ICt7Cj4+ICsgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5 MTUoZ3VjKTsKPj4gKyAgICBpbnQgcmV0Owo+PiArCj4+ICsgICAgbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArCj4+ICsgICAgaWYgKGk5MTUuZ3Vj X2xvZ19sZXZlbCA8IDApCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAg LyogSWYgbG9nX2xldmVsIHdhcyBzZXQgYXMgLTEgYXQgYm9vdCB0aW1lLCB0aGVuIHZtYWxsb2Mg bWFwcGluZwo+PiB3b3VsZAo+PiArICAgICAqIG5vdCBoYXZlIGJlZW4gY3JlYXRlZCBmb3IgdGhl IGxvZyBidWZmZXIsIHNvIGNyZWF0ZSBvbmUgbm93Lgo+PiArICAgICAqLwo+PiArICAgIHJldCA9 IGd1Y19jcmVhdGVfbG9nX2V4dHJhcyhndWMpOwo+PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAg IGdvdG8gZXJyOwo+PiArCj4+ICsgICAgcmV0ID0gZ3VjX2NyZWF0ZV9sb2dfcmVsYXlfZmlsZShn dWMpOwo+PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAgIGdvdG8gZXJyOwo+PiArCj4+ICsgICAg cmV0dXJuIDA7Cj4+ICtlcnI6Cj4+ICsgICAgZ3VjX2xvZ19jbGVhbnVwKGd1Yyk7Cj4+ICsgICAg LyogbG9nZ2luZyB3aWxsIHJlbWFpbiBvZmYgKi8KPj4gKyAgICBpOTE1Lmd1Y19sb2dfbGV2ZWwg PSAtMTsKPj4gKyAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICAgc3RhdGljIHZvaWQgaW5p dF9ndWNfcG9saWNpZXMoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXMpCj4+ICAgewo+PiAg ICAgICBzdHJ1Y3QgZ3VjX3BvbGljeSAqcG9saWN5Owo+PiBAQCAtMTE4NSw3ICsxMzY2LDYgQEAg dm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0Cj4+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+PiAgICAgICBnZW1fcmVsZWFzZV9ndWNfb2JqKGRldl9wcml2LT5ndWMuYWRz X29iaik7Cj4+ICAgICAgIGd1Yy0+YWRzX29iaiA9IE5VTEw7Cj4+Cj4+IC0gICAgZ3VjX2xvZ19j bGVhbnVwKGd1Yyk7Cj4+ICAgICAgIGdlbV9yZWxlYXNlX2d1Y19vYmooZGV2X3ByaXYtPmd1Yy5s b2cub2JqKTsKPj4gICAgICAgZ3VjLT5sb2cub2JqID0gTlVMTDsKPj4KPj4gQEAgLTEyNjEsMyAr MTQ0MSwyMyBAQCB2b2lkIGk5MTVfZ3VjX2NhcHR1cmVfbG9ncyhzdHJ1Y3QKPj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgICAgIGhvc3QyZ3VjX2xvZ2J1ZmZlcl9mbHVzaF9jb21w bGV0ZSgmZGV2X3ByaXYtPmd1Yyk7Cj4+ICAgICAgIGludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKPj4gICB9Cj4+ICsKPj4gK3ZvaWQgaTkxNV9ndWNfdW5yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt7Cj4+ICsgICAgaWYgKCFpOTE1LmVuYWJsZV9n dWNfc3VibWlzc2lvbikKPj4gKyAgICAgICAgcmV0dXJuOwo+PiArCj4+ICsgICAgbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArICAgIGd1Y19sb2dfY2xlYW51cCgm ZGV2X3ByaXYtPmd1Yyk7Cj4+ICsgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaTkxNV9ndWNfcmVnaXN0ZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiArewo+PiArICAgIGlmICghaTkxNS5lbmFibGVf Z3VjX3N1Ym1pc3Npb24pCj4+ICsgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgIG11dGV4X2xv Y2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPj4gKyAgICBndWNfbG9nX2xhdGVfc2V0 dXAoJmRldl9wcml2LT5ndWMpOwo+PiArICAgIG11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+PiArfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+PiBpbmRl eCA3YzBiZGJhLi45NmVmN2RjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+PiBA QCAtMTI2LDYgKzEyNiw3IEBAIHN0cnVjdCBpbnRlbF9ndWNfbG9nIHsKPj4gICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPj4gICAgICAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3QgKndxOwo+PiAgICAgICB2b2lkICpidWZfYWRkcjsKPj4gKyAgICBzdHJ1Y3QgcmNoYW4gKnJl bGF5X2NoYW47Cj4+ICAgfTsKPj4KPj4gICBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPj4gQEAgLTE3Miw1 ICsxNzMsNyBAQCBpbnQgaTkxNV9ndWNfd3FfY2hlY2tfc3BhY2Uoc3RydWN0Cj4+IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpycSk7Cj4+ICAgdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPj4gICB2b2lkIGk5MTVfZ3VjX3N1 Ym1pc3Npb25fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgIHZv aWQgaTkxNV9ndWNfY2FwdHVyZV9sb2dzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4+ICt2b2lkIGk5MTVfZ3VjX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4+ICt2b2lkIGk5MTVfZ3VjX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPj4KPj4gICAjZW5kaWYKPj4KPgo+IFJlZ2FyZHMsCj4KPiBUdnJ0 a28KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK