From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [CI v4 2/3] drm/i915/guc: Introduce buffer based cmd transport Date: Fri, 26 May 2017 13:26:28 +0100 Message-ID: <20170526122628.GY10827@nuc-i3427.alporthouse.com> References: <20170526111326.87280-1-michal.wajdeczko@intel.com> <20170526111326.87280-3-michal.wajdeczko@intel.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 92B116ED13 for ; Fri, 26 May 2017 12:27:02 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170526111326.87280-3-michal.wajdeczko@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMjYsIDIwMTcgYXQgMTE6MTM6MjVBTSArMDAwMCwgTWljaGFsIFdhamRlY3pr byB3cm90ZToKPiBCdWZmZXIgYmFzZWQgY29tbWFuZCB0cmFuc3BvcnQgY2FuIHJlcGxhY2UgTU1J TyBiYXNlZCBtZWNoYW5pc20uCj4gSXQgbWF5IGJlIHVzZWQgdG8gcGVyZm9ybSBob3N0LTItZ3Vj IGFuZCBndWMtdG8taG9zdCBjb21tdW5pY2F0aW9uLgo+IAo+IFBvcnRpb25zIG9mIHRoaXMgcGF0 Y2ggYXJlIGJhc2VkIG9uIHdvcmsgYnk6Cj4gIE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJy eUBpbnRlbC5jb20+Cj4gIFJvYmVydCBCZWNrZXR0IDxyb2JlcnQuYmVja2V0dEBpbnRlbC5jb20+ Cj4gIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5j b20+Cj4gCj4gdjI6IHVzZSBnZW1fb2JqZWN0X3Bpbl9tYXAgKENocmlzKQo+ICAgICBkb24ndCB1 c2UgREVCVUdfUkFURUxJTUlURUQgKENocmlzKQo+ICAgICBkb24ndCB0cmFjayBhY3Rpb24gc3Rh dHMgKENocmlzKQo+ICAgICBzaW1wbGlmeSBuZXh0IGZlbmNlIChDaHJpcykKPiAgICAgdXNlIFJF QURfT05DRSAoQ2hyaXMpCj4gICAgIG1vdmUgYmxvYiBhbGxvY2F0aW9uIHRvIG5ldyBmdW5jdGlv biAoQ2hyaXMpCj4gCj4gdjM6IHVzZSBzdGF0aWMgb3duZXIgaWQgKERhbmllbGUpCj4gdjQ6IGJ1 dCBrZWVwIGNoYW5uZWwgaW5pdGlhbGl6YXRpb24gZ2VuZXJpYyAoRGFuaWVsZSkKPiAgICAgYW5k IGludHJvZHVjZSBvd25lcl9zdWJfaWQgKERhbmllbGUpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWlj aGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4gQ2M6IERhbmllbGUg Q2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gQ2M6IE9z Y2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8 am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4gUmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVy aW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2N0LmMgICB8IDQ2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jdC5oICAgfCAgODYgKysrKysrKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oIHwgIDQzICsrKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICB8ICAxOSArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5oICAgICAgIHwgICAzICstCj4gIDcgZmlsZXMgY2hhbmdlZCwgNjEzIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY3QuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2N0LmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGlu ZGV4IDdiMDVmYjguLjE2ZGNjZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC01OCw2 ICs1OCw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4gIAo+ICAjIGdlbmVyYWwt cHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9ydAo+ICBpOTE1LXkgKz0gaW50ZWxf dWMubyBcCj4gKwkgIGludGVsX2d1Y19jdC5vIFwKPiAgCSAgaW50ZWxfZ3VjX2xvZy5vIFwKPiAg CSAgaW50ZWxfZ3VjX2xvYWRlci5vIFwKPiAgCSAgaW50ZWxfaHVjLm8gXAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IGluZGV4IDliYTIyNDIuLmQyYTU3NDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBAQCAtNzYwLDYgKzc2MCw3IEBAIHN0cnVjdCBpbnRlbF9jc3Igewo+ICAJZnVu YyhoYXNfZ21idXNfaXJxKTsgXAo+ICAJZnVuYyhoYXNfZ21jaF9kaXNwbGF5KTsgXAo+ICAJZnVu YyhoYXNfZ3VjKTsgXAo+ICsJZnVuYyhoYXNfZ3VjX2N0KTsgXAo+ICAJZnVuYyhoYXNfaG90cGx1 Zyk7IFwKPiAgCWZ1bmMoaGFzX2wzX2RwZik7IFwKPiAgCWZ1bmMoaGFzX2xsYyk7IFwKPiBAQCAt Mjk0Nyw2ICsyOTQ4LDcgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAqIHByb3BlcnRpZXMsIHNvIHdlIGhhdmUgc2VwYXJhdGUgbWFjcm9z IHRvIHRlc3QgdGhlbS4KPiAgICovCj4gICNkZWZpbmUgSEFTX0dVQyhkZXZfcHJpdikJKChkZXZf cHJpdiktPmluZm8uaGFzX2d1YykKPiArI2RlZmluZSBIQVNfR1VDX0NUKGRldl9wcml2KQkoKGRl dl9wcml2KS0+aW5mby5oYXNfZ3VjX2N0KQo+ICAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2X3By aXYpCShIQVNfR1VDKGRldl9wcml2KSkKPiAgI2RlZmluZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2 KQkoSEFTX0dVQyhkZXZfcHJpdikpCj4gICNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJ KEhBU19HVUMoZGV2X3ByaXYpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jdC5jCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jNGNiZWMxCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jdC5jCj4gQEAgLTAsMCAr MSw0NjEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxNyBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZ3VjX2N0LmgiCj4gKwo+ICtlbnVtIHsgQ1RC X1NFTkQgPSAwLCBDVEJfUkVDViA9IDEgfTsKPiArCj4gK2VudW0geyBDVEJfT1dORVJfSE9TVCA9 IDAgfTsKPiArCj4gK3ZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1 Y19jdCAqY3QpCj4gK3sKPiArCS8qIHdlJ3JlIHVzaW5nIHN0YXRpYyBjaGFubmVsIG93bmVycyAq Lwo+ICsJY3QtPmhvc3RfY2hhbm5lbC5vd25lciA9IENUQl9PV05FUl9IT1NUOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmd1Y19jdF9idWZmZXJfdHlwZV90b19zdHIodTMy IHR5cGUpCj4gK3sKPiArCXN3aXRjaCAodHlwZSkgewo+ICsJY2FzZSBJTlRFTF9HVUNfQ1RfQlVG RkVSX1RZUEVfU0VORDoKPiArCQlyZXR1cm4gIlNFTkQiOwo+ICsJY2FzZSBJTlRFTF9HVUNfQ1Rf QlVGRkVSX1RZUEVfUkVDVjoKPiArCQlyZXR1cm4gIlJFQ1YiOwo+ICsJZGVmYXVsdDoKPiArCQly ZXR1cm4gIjxpbnZhbGlkPiI7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGd1Y19jdF9i dWZmZXJfZGVzY19pbml0KHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MsCj4gKwkJCQkg ICAgdTMyIGNtZHNfYWRkciwgdTMyIHNpemUsIHUzMiBvd25lcikKPiArewo+ICsJRFJNX0RFQlVH X0RSSVZFUigiQ1Q6IGRlc2MgJXAgaW5pdCBhZGRyPSUjeCBzaXplPSV1IG93bmVyPSV1XG4iLAo+ ICsJCQkgZGVzYywgY21kc19hZGRyLCBzaXplLCBvd25lcik7Cj4gKwltZW1zZXQoZGVzYywgMCwg c2l6ZW9mKCpkZXNjKSk7Cj4gKwlkZXNjLT5hZGRyID0gY21kc19hZGRyOwo+ICsJZGVzYy0+c2l6 ZSA9IHNpemU7Cj4gKwlkZXNjLT5vd25lciA9IG93bmVyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBndWNfY3RfYnVmZmVyX2Rlc2NfcmVzZXQoc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVz YykKPiArewo+ICsJRFJNX0RFQlVHX0RSSVZFUigiQ1Q6IGRlc2MgJXAgcmVzZXQgaGVhZD0ldSB0 YWlsPSV1XG4iLAo+ICsJCQkgZGVzYywgZGVzYy0+aGVhZCwgZGVzYy0+dGFpbCk7Cj4gKwlkZXNj LT5oZWFkID0gMDsKPiArCWRlc2MtPnRhaWwgPSAwOwo+ICsJZGVzYy0+aXNfaW5fZXJyb3IgPSAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGd1Y19hY3Rpb25fcmVnaXN0ZXJfY3RfYnVmZmVyKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywKPiArCQkJCQkgdTMyIGRlc2NfYWRkciwKPiArCQkJCQkgdTMy IHR5cGUpCj4gK3sKPiArCXUzMiBhY3Rpb25bXSA9IHsKPiArCQlJTlRFTF9HVUNfQUNUSU9OX1JF R0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiwKPiArCQlkZXNjX2FkZHIsCj4gKwkJc2l6 ZW9mKHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MpLAo+ICsJCXR5cGUKPiArCX07Cj4gKwlpbnQg ZXJyOwo+ICsKPiArCS8qIENhbid0IHVzZSBnZW5lcmljIHNlbmQoKSwgQ1QgcmVnaXN0cmF0aW9u IG11c3QgZ28gb3ZlciBNTUlPICovCj4gKwllcnIgPSBpbnRlbF9ndWNfc2VuZF9tbWlvKGd1Yywg YWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwo+ICsJaWYgKGVycikKPiArCQlEUk1fRVJST1Io IkNUOiByZWdpc3RlciAlcyBidWZmZXIgZmFpbGVkOyBlcnI9JWRcbiIsCj4gKwkJCSAgZ3VjX2N0 X2J1ZmZlcl90eXBlX3RvX3N0cih0eXBlKSwgZXJyKTsKPiArCXJldHVybiBlcnI7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgZ3VjX2FjdGlvbl9kZXJlZ2lzdGVyX2N0X2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsCj4gKwkJCQkJICAgdTMyIG93bmVyLAo+ICsJCQkJCSAgIHUzMiB0eXBlKQo+ ICt7Cj4gKwl1MzIgYWN0aW9uW10gPSB7Cj4gKwkJSU5URUxfR1VDX0FDVElPTl9ERVJFR0lTVEVS X0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiwKPiArCQlvd25lciwKPiArCQl0eXBlCj4gKwl9Owo+ ICsJaW50IGVycjsKPiArCj4gKwkvKiBDYW4ndCB1c2UgZ2VuZXJpYyBzZW5kKCksIENUIGRlcmVn aXN0cmF0aW9uIG11c3QgZ28gb3ZlciBNTUlPICovCj4gKwllcnIgPSBpbnRlbF9ndWNfc2VuZF9t bWlvKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwo+ICsJaWYgKGVycikKPiArCQlE Uk1fRVJST1IoIkNUOiBkZXJlZ2lzdGVyICVzIGJ1ZmZlciBmYWlsZWQ7IG93bmVyPSVkIGVycj0l ZFxuIiwKPiArCQkJICBndWNfY3RfYnVmZmVyX3R5cGVfdG9fc3RyKHR5cGUpLCBvd25lciwgZXJy KTsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGN0Y2hfaXNfb3Blbihz dHJ1Y3QgaW50ZWxfZ3VjX2N0X2NoYW5uZWwgKmN0Y2gpCj4gK3sKPiArCXJldHVybiBjdGNoLT52 bWEgIT0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjdGNoX2luaXQoc3RydWN0IGludGVs X2d1YyAqZ3VjLAo+ICsJCSAgICAgc3RydWN0IGludGVsX2d1Y19jdF9jaGFubmVsICpjdGNoKQo+ ICt7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCXZvaWQgKmJsb2I7Cj4gKwlpbnQgZXJy Owo+ICsJaW50IGk7Cj4gKwo+ICsJR0VNX0JVR19PTihjdGNoLT52bWEpOwo+ICsKPiArCS8qIFdl IGFsbG9jYXRlIDEgcGFnZSB0byBob2xkIGJvdGggZGVzY3JpcHRvcnMgYW5kIGJvdGggYnVmZmVy cy4KPiArCSAqICAgICAgIF9fX19fX19fX19fLi4uLi4uLi4uLi4uLi4uLi4uLi4uCj4gKwkgKiAg ICAgIHxkZXNjIChTRU5EKXwgICAgICAgICAgICAgICAgICAgOgo+ICsJICogICAgICB8X19fX19f X19fX198ICAgICAgICAgICAgICAgICAgIFBBR0UvNAo+ICsJICogICAgICA6X19fX19fX19fX18u Li4uLi4uLi4uLi4uLi4uLi4uLjoKPiArCSAqICAgICAgfGRlc2MgKFJFQ1YpfCAgICAgICAgICAg ICAgICAgICA6Cj4gKwkgKiAgICAgIHxfX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgUEFH RS80Cj4gKwkgKiAgICAgIDpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fOgo+ICsJICog ICAgICB8Y21kcyAoU0VORCkgICAgICAgICAgICAgICAgICAgIHwKPiArCSAqICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFLzQKPiArCSAqICAgICAgfF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX198Cj4gKwkgKiAgICAgIHxjbWRzIChSRUNWKSAgICAgICAgICAg ICAgICAgICAgfAo+ICsJICogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBB R0UvNAo+ICsJICogICAgICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wKPiArCSAq Cj4gKwkgKiBFYWNoIG1lc3NhZ2UgY2FuIHVzZSBhIG1heGltdW0gb2YgMzIgZHdvcmRzIGFuZCB3 ZSBkb24ndCBleHBlY3QgdG8KPiArCSAqIGhhdmUgbW9yZSB0aGFuIDEgaW4gZmxpZ2h0IGF0IGFu eSB0aW1lLCBzbyB3ZSBoYXZlIGVub3VnaCBzcGFjZS4KPiArCSAqIFNvbWUgbG9naWMgZnVydGhl ciBhaGVhZCB3aWxsIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGVyZSBpcyBvbmx5IDEKPiArCSAq IHBhZ2UgYW5kIHRoYXQgaXQgaXMgYWx3YXlzIG1hcHBlZCwgc28gaWYgdGhlIHNpemUgaXMgY2hh bmdlZCB0aGUKPiArCSAqIG90aGVyIGNvZGUgd2lsbCBuZWVkIHVwZGF0aW5nIGFzIHdlbGwuCj4g KwkgKi8KPiArCj4gKwkvKiBhbGxvY2F0ZSB2bWEgKi8KPiArCXZtYSA9IGludGVsX2d1Y19hbGxv Y2F0ZV92bWEoZ3VjLCBQQUdFX1NJWkUpOwo+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJZXJy ID0gUFRSX0VSUih2bWEpOwo+ICsJCWdvdG8gZXJyX291dDsKPiArCX0KPiArCWN0Y2gtPnZtYSA9 IHZtYTsKPiArCj4gKwkvKiBtYXAgZmlyc3QgcGFnZSAqLwo+ICsJYmxvYiA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKHZtYS0+b2JqLCBJOTE1X01BUF9XQik7Cj4gKwlpZiAoSVNfRVJSKGJsb2Ip KSB7Cj4gKwkJZXJyID0gUFRSX0VSUihibG9iKTsKPiArCQlnb3RvIGVycl92bWE7Cj4gKwl9Cj4g KwlEUk1fREVCVUdfRFJJVkVSKCJDVDogdm1hIGJhc2U9JSN4XG4iLCBndWNfZ2d0dF9vZmZzZXQo Y3RjaC0+dm1hKSk7Cj4gKwo+ICsJLyogc3RvcmUgcG9pbnRlcnMgdG8gZGVzYyBhbmQgY21kcyAq Lwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3RjaC0+Y3Ricyk7IGkrKykgewo+ICsJ CUdFTV9CVUdfT04oKGkgIT0gQ1RCX1NFTkQpICYmIChpICE9IENUQl9SRUNWKSk7Cj4gKwkJY3Rj aC0+Y3Ric1tpXS5kZXNjID0gYmxvYiArIFBBR0VfU0laRS80ICogaTsKPiArCQljdGNoLT5jdGJz W2ldLmNtZHMgPSBibG9iICsgUEFHRV9TSVpFLzQgKiBpICsgUEFHRV9TSVpFLzI7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfdm1hOgo+ICsJaTkxNV92bWFfdW5waW5fYW5kX3Jl bGVhc2UoJmN0Y2gtPnZtYSk7Cj4gK2Vycl9vdXQ6Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJDVDog Y2hhbm5lbCAlZCBpbml0aWFsaXphdGlvbiBmYWlsZWQ7IGVycj0lZFxuIiwKPiArCQkJIGN0Y2gt Pm93bmVyLCBlcnIpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY3Rj aF9maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKPiArCQkgICAgICBzdHJ1Y3QgaW50ZWxfZ3Vj X2N0X2NoYW5uZWwgKmN0Y2gpCj4gK3sKPiArCUdFTV9CVUdfT04oIWN0Y2gtPnZtYSk7Cj4gKwo+ ICsJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjdGNoLT52bWEtPm9iaik7Cj4gKwlpOTE1X3Zt YV91bnBpbl9hbmRfcmVsZWFzZSgmY3RjaC0+dm1hKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBj dGNoX29wZW4oc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+ICsJCSAgICAgc3RydWN0IGludGVsX2d1 Y19jdF9jaGFubmVsICpjdGNoKQo+ICt7Cj4gKwl1MzIgYmFzZTsKPiArCWludCBlcnI7Cj4gKwlp bnQgaTsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJDVDogY2hhbm5lbCAlZCByZW9wZW49JXNc biIsCj4gKwkJCSBjdGNoLT5vd25lciwgeWVzbm8oY3RjaF9pc19vcGVuKGN0Y2gpKSk7Cj4gKwo+ ICsJaWYgKCFjdGNoLT52bWEpIHsKPiArCQllcnIgPSBjdGNoX2luaXQoZ3VjLCBjdGNoKTsKPiAr CQlpZiAodW5saWtlbHkoZXJyKSkKPiArCQkJZ290byBlcnJfb3V0Owo+ICsJfQo+ICsKPiArCS8q IHZtYSBzaG91bGQgYmUgYWxyZWFkeSBhbGxvY2F0ZWQgYW5kIG1hcCdlZCAqLwo+ICsJYmFzZSA9 IGd1Y19nZ3R0X29mZnNldChjdGNoLT52bWEpOwo+ICsKPiArCS8qIChyZSlpbml0aWFsaXplIGRl c2NyaXB0b3JzCj4gKwkgKiBjbWRzIGJ1ZmZlcnMgYXJlIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0 aGUgYmxvYiBwYWdlCj4gKwkgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0Y2gt PmN0YnMpOyBpKyspIHsKPiArCQlHRU1fQlVHX09OKChpICE9IENUQl9TRU5EKSAmJiAoaSAhPSBD VEJfUkVDVikpOwo+ICsJCWd1Y19jdF9idWZmZXJfZGVzY19pbml0KGN0Y2gtPmN0YnNbaV0uZGVz YywKPiArCQkJCQliYXNlICsgUEFHRV9TSVpFLzQgKiBpICsgUEFHRV9TSVpFLzIsCj4gKwkJCQkJ UEFHRV9TSVpFLzQsCgpIbW0sIEkgd291bGQgbGlrZSB0byBzZWUgdGhlc2UgcmV1c2UgdGhlIG9m ZnNldHMgY29tcHV0ZWQgaW4KY2hjdF9pbml0KCkuIEFuZCBmb3IgY3RjYl93cml0ZSgpIHRvIHRh a2UgYWR2YW50YWdlIG9mIHRoZSBwb3Qgc2l6ZQoodGhhdCB3aWxsIGF0IGxlYXN0IG1ha2UgaXQg bG9vayBsaWtlIGEgbW9yZSByZWd1bGFyIGNpcmNfYnVmLmgpCgpCdXQgbm90IGEgYmxvY2tlciwg c28gcHVzaGVkLgotQ2hyaXMKCi0tIApDaHJpcyBXaWxzb24sIEludGVsIE9wZW4gU291cmNlIFRl Y2hub2xvZ3kgQ2VudHJlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=