From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH v3 3/4] drm/i915: Add code to accept valid locked WOPCM register values Date: Sat, 14 Apr 2018 06:20:54 +0200 Message-ID: References: <1523320940-32742-1-git-send-email-yaodong.li@intel.com> <1523320940-32742-3-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 974206E05A for ; Sat, 14 Apr 2018 04:21:00 +0000 (UTC) In-Reply-To: <1523320940-32742-3-git-send-email-yaodong.li@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Jackie Li List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxMCBBcHIgMjAxOCAwMjo0MjoxOSArMDIwMCwgSmFja2llIExpIDx5YW9kb25nLmxp QGludGVsLmNvbT4gd3JvdGU6Cgo+IEluIGN1cnJlbnQgY29kZSwgd2Ugb25seSBjb21wYXJlIHRo ZSBsb2NrZWQgV09QQ00gcmVnaXN0ZXIgdmFsdWVzIHdpdGggIAo+IHRoZQo+IGNhbGN1bGF0ZWQg dmFsdWVzLiBIb3dldmVyLCB3ZSBjYW4gY29udGludWUgbG9hZGluZyBHdUMvSHVDIGZpcm13YXJl IGlmICAKPiB0aGUKPiBsb2NrZWQgKG9yIHBhcnRpYWxseSBsb2NrZWQpIHZhbHVlcyB3ZXJlIHZh bGlkIGZvciBjdXJyZW50IEd1Qy9IdUMgIAo+IGZpcm13YXJlCj4gc2l6ZXMuCj4KPiBUaGlzIHBh dGNoIGFkZGVkIGEgbmV3IGNvZGUgcGF0aCB0byB2ZXJpZnkgd2hldGhlciB0aGUgbG9ja2VkIHJl Z2lzdGVyCj4gdmFsdWVzIGNhbiBiZSB1c2VkIGZvciBHdUMvSHVDIGZpcm13YXJlIGxvYWRpbmcs IGl0IHdpbGwgcmVjYWxjdWxhdGUgdGhlCj4gdmVyaWZ5IHRoZSBuZXcgdmFsdWVzIGlmIHRoZXNl IHJlZ2lzdGVycyB3ZXJlIHBhcnRpYWxseSBsb2NrZWQsIHNvIHRoYXQgIAo+IHdlCj4gd29uJ3Qg ZmFpbCB0aGUgR3VDL0h1QyBmaXJtd2FyZSBsb2FkaW5nIGV2ZW4gaWYgdGhlIGxvY2tlZCByZWdp c3RlciAgCj4gdmFsdWVzCj4gYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBjYWxjdWxhdGVkIG9uZXMu Cj4KPiB2MjoKPiAgLSBVcGRhdGUgV09QQ00gcmVnaXN0ZXIgb25seSBpZiBpdCdzIG5vdCBsb2Nr ZWQKPgo+IFNpZ25lZC1vZmYtYnk6IEphY2tpZSBMaSA8eWFvZG9uZy5saUBpbnRlbC5jb20+Cj4g Q2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+IENjOiBT YWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+IENjOiBNaWNoYWwg V2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KPiBDYzogSm9obiBTcG90c3dv b2QgPGpvaG4uYS5zcG90c3dvb2RAaW50ZWwuY29tPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dvcGNtLmMgfCAyMTcgIAo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5j ICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMKPiBpbmRleCBiMWMwOGNh Li5mYThkMmJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jCj4gQEAgLTE0MCw2 ICsxNDAsNTMgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfaHdfcmVzdHJpY3Rpb24oc3RydWN0 ICAKPiBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJcmV0dXJuIGVycjsKPiAgfQo+ICtzdGF0 aWMgaW5saW5lIHUzMiBjYWxjdWxhdGVfbWluX2d1Y193b3BjbV9iYXNlKHUzMiBodWNfZndfc2l6 ZSkKPiArewo+ICsJcmV0dXJuIEFMSUdOKGh1Y19md19zaXplICsgV09QQ01fUkVTRVJWRURfU0la RSwKPiArCQkgICAgIEdVQ19XT1BDTV9PRkZTRVRfQUxJR05NRU5UKTsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSB1MzIgY2FsY3VsYXRlX21pbl9ndWNfd29wY21fc2l6ZSh1MzIgZ3VjX2Z3X3Np emUpCj4gK3sKPiArCXJldHVybiBndWNfZndfc2l6ZSArIEdVQ19XT1BDTV9SRVNFUlZFRCArIEdV Q19XT1BDTV9TVEFDS19SRVNFUlZFRDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgY2Fs Y3VsYXRlX21heF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgaW50ZWxfd29wY20gIAo+ICp3b3BjbSwK PiArCQkJCQkgICAgICAgdTMyIGd1Y193b3BjbV9iYXNlLAo+ICsJCQkJCSAgICAgICB1MzIgKmd1 Y193b3BjbV9zaXplKQoKQ2FuJ3Qgd2UganVzdCByZXR1cm4gdGhpcyBzaXplIGFzIHBvc2l0aXZl IHZhbHVlPwpJIGd1ZXNzIHdvcGNtIHNpemUgd2lsbCBuZXZlciBiZSBsYXJnZXIgdGhhbiBNQVhf SU5ULgpXZSBjYW4gYWRkIEdFTV9CVUdfT04gdG8gYmUgc3VyZS4KCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gd29wY21fdG9faTkxNSh3b3BjbSk7Cj4gKwl1MzIgY3R4 X3JzdmQgPSBjb250ZXh0X3Jlc2VydmVkX3NpemUoaTkxNSk7Cj4gKwo+ICsJaWYgKGd1Y193b3Bj bV9iYXNlID49IHdvcGNtLT5zaXplIHx8Cj4gKwkgICAgKGd1Y193b3BjbV9iYXNlICsgY3R4X3Jz dmQpID49IHdvcGNtLT5zaXplKSB7Cj4gKwkJRFJNX0VSUk9SKCJHdUMgV09QQ00gYmFzZSAoJXVL aUIpIGlzIHRvbyBiaWcuXG4iLAo+ICsJCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCk7Cj4gKwkJ cmV0dXJuIC1FMkJJRzsKCllvdSBhcmUgbWl4aW5nIGNhbGN1bGF0aW9ucyB3aXRoIHZlcmlmaWNh dGlvbnMgaGVyZS4KRm9jdXMgb24gY2FsY3VsYXRpb25zIGFzIHlvdSBoYXZlIHNlcGFyYXRlIGZ1 bmN0aW9uIHRoYXQgdmVyaWZpZXMgdmFsdWVzLgoKPiArCX0KPiArCj4gKwkqZ3VjX3dvcGNtX3Np emUgPQo+ICsJCSh3b3BjbS0+c2l6ZSAtIGd1Y193b3BjbV9iYXNlIC0gY3R4X3JzdmQpICYgR1VD X1dPUENNX1NJWkVfTUFTSzsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSBpbnQgdmVyaWZ5X2NhbGN1bGF0ZWRfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl CgpobW0sIG1heWJlIHdlIGNhbiB1bmlmeSBzb21laG93IHRoaXMgdmVyaWZpY2F0aW9uIHRvIGJl IGFibGUgdG8gd29yayB3aXRoCmJvdGggY2FsY3VsYXRlZCBhbmQgbG9ja2VkIHZhbHVlcz8KCj4g Kmk5MTUsCj4gKwkJCQkJICAgdTMyIGd1Y19md19zaXplLCB1MzIgaHVjX2Z3X3NpemUsCj4gKwkJ CQkJICAgdTMyIGd1Y193b3BjbV9iYXNlLAo+ICsJCQkJCSAgIHUzMiBndWNfd29wY21fc2l6ZSkK PiArewo+ICsJaWYgKGd1Y193b3BjbV9zaXplIDwgY2FsY3VsYXRlX21pbl9ndWNfd29wY21fc2l6 ZShndWNfZndfc2l6ZSkpIHsKPiArCQlEUk1fRVJST1IoIk5lZWQgJXVLaUIgV09QQ00gZm9yIEd1 QyBGVywgJXVLaUIgYXZhaWxhYmxlLlxuIiwKPiArCQkJICBjYWxjdWxhdGVfbWluX2d1Y193b3Bj bV9zaXplKGd1Y19md19zaXplKSwKCnlvdSBhcmUgY2FsbGluZyBjYWxjdWxhdGVfbWluX2d1Y193 b3BjbV9zaXplKCkgdHdpY2UKCj4gKwkJCSAgZ3VjX3dvcGNtX3NpemUgLyAxMDI0KTsKPiArCQly ZXR1cm4gLUUyQklHOwo+ICsJfQo+ICsKPiArCXJldHVybiBjaGVja19od19yZXN0cmljdGlvbihp OTE1LCBndWNfd29wY21fYmFzZSwgZ3VjX3dvcGNtX3NpemUsCj4gKwkJCQkgICAgaHVjX2Z3X3Np emUpOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfd29wY21faW5pdCgpIC0gSW5pdGlhbGl6 ZSB0aGUgV09QQ00gc3RydWN0dXJlLgo+ICAgKiBAd29wY206IHBvaW50ZXIgdG8gaW50ZWxfd29w Y20uCj4gQEAgLTE1NywxMCArMjA0LDggQEAgaW50IGludGVsX3dvcGNtX2luaXQoc3RydWN0IGlu dGVsX3dvcGNtICp3b3BjbSkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gd29w Y21fdG9faTkxNSh3b3BjbSk7Cj4gIAl1MzIgZ3VjX2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRf dXBsb2FkX3NpemUoJmk5MTUtPmd1Yy5mdyk7Cj4gIAl1MzIgaHVjX2Z3X3NpemUgPSBpbnRlbF91 Y19md19nZXRfdXBsb2FkX3NpemUoJmk5MTUtPmh1Yy5mdyk7Cj4gLQl1MzIgY3R4X3JzdmQgPSBj b250ZXh0X3Jlc2VydmVkX3NpemUoaTkxNSk7Cj4gIAl1MzIgZ3VjX3dvcGNtX2Jhc2U7Cj4gIAl1 MzIgZ3VjX3dvcGNtX3NpemU7Cj4gLQl1MzIgZ3VjX3dvcGNtX3JzdmQ7Cj4gIAlpbnQgZXJyOwo+ IAlHRU1fQlVHX09OKCF3b3BjbS0+c2l6ZSk7Cj4gQEAgLTE3NywzNSArMjIyLDEyMSBAQCBpbnQg aW50ZWxfd29wY21faW5pdChzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQo+ICAJCXJldHVybiAt RTJCSUc7Cj4gIAl9Cj4gLQlndWNfd29wY21fYmFzZSA9IEFMSUdOKGh1Y19md19zaXplICsgV09Q Q01fUkVTRVJWRURfU0laRSwKPiAtCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfQUxJR05NRU5U KTsKPiAtCWlmICgoZ3VjX3dvcGNtX2Jhc2UgKyBjdHhfcnN2ZCkgPj0gd29wY20tPnNpemUpIHsK PiAtCQlEUk1fRVJST1IoIkd1QyBXT1BDTSBiYXNlICgldUtpQikgaXMgdG9vIGJpZy5cbiIsCj4g LQkJCSAgZ3VjX3dvcGNtX2Jhc2UgLyAxMDI0KTsKPiArCWd1Y193b3BjbV9iYXNlID0gY2FsY3Vs YXRlX21pbl9ndWNfd29wY21fYmFzZShodWNfZndfc2l6ZSk7Cj4gKwllcnIgPSBjYWxjdWxhdGVf bWF4X2d1Y193b3BjbV9zaXplKHdvcGNtLCBndWNfd29wY21fYmFzZSwKPiArCQkJCQkgICAmZ3Vj X3dvcGNtX3NpemUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCURSTV9E RUJVR19EUklWRVIoIkNhbGN1bGF0ZWQgR3VDIFdPUENNIFJlZ2lvbjogWyV1S2lCLCAldUtpQilc biIsCj4gKwkJCSBndWNfd29wY21fYmFzZSAvIDEwMjQsCj4gKwkJCSAoZ3VjX3dvcGNtX2Jhc2Ug KyBndWNfd29wY21fc2l6ZSkgLyAxMDI0KTsKPiArCj4gKwllcnIgPSB2ZXJpZnlfY2FsY3VsYXRl ZF92YWx1ZXMoaTkxNSwgZ3VjX2Z3X3NpemUsIGh1Y19md19zaXplLAo+ICsJCQkJICAgICAgIGd1 Y193b3BjbV9iYXNlLCBndWNfd29wY21fc2l6ZSk7CgpJZiB3ZSB3YW50IHRvIHN1cHBvcnQgc2Nl bmFyaW8gd2hlcmUgd29wY20gdmFsdWVzIGFyZSBhbHJlYWR5IGxvY2tlZCwgbWF5YmUKd2Ugc2hv dWxkIGNoZWNrIGZpcnN0IGZvciB0aGVtLCBhcyBpZiB0aGV5IGFyZSByZWFsbHkgbG9ja2VkLCB3 ZSBzaG91bGQKYXZvaWQgY2FsY3VsYXRpbmcgYW5kIHByaW50aW5nIG91ciB2YWx1ZXMuLi4KCj4g KwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJd29wY20tPmd1Yy5iYXNlID0gZ3Vj X3dvcGNtX2Jhc2U7Cj4gKwl3b3BjbS0+Z3VjLnNpemUgPSBndWNfd29wY21fc2l6ZTsKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5X2xvY2tlZF92 YWx1ZXMoc3RydWN0IGludGVsX3dvcGNtICp3b3BjbSwKPiArCQkJCSAgICAgICB1MzIgZ3VjX3dv cGNtX2Jhc2UsIHUzMiBndWNfd29wY21fc2l6ZSkKCmhtbSwgZWl0aGVyIHBhc3MgbG9ja2VkIHZh bHVlcyBpbiAndGhlJyB3b3BjbSBzdHJ1Y3R1cmUsIG9yIHVzZSBpOTE1CnBhcmFtZXRlciB0byBh dm9pZCBjb25mdXNpb24uCgo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHdvcGNtX3RvX2k5MTUod29wY20pOwo+ICsJdTMyIGd1Y19md19zaXplID0gaW50ZWxfdWNfZndf Z2V0X3VwbG9hZF9zaXplKCZpOTE1LT5ndWMuZncpOwo+ICsJdTMyIGh1Y19md19zaXplID0gaW50 ZWxfdWNfZndfZ2V0X3VwbG9hZF9zaXplKCZpOTE1LT5odWMuZncpOwo+ICsJdTMyIGN0eF9yc3Zk ID0gY29udGV4dF9yZXNlcnZlZF9zaXplKGk5MTUpOwo+ICsKPiArCS8qCj4gKwkgKiBMb2NrZWQg R3VDIFdPUENNIGJhc2UgYW5kIHNpemUgY291bGQgYmUgYW55IHZhbHVlcyB3aGljaCBhcmUgbGFy Z2UKPiArCSAqIGVub3VnaCB0byBsZWFkIHRvIGEgd3JhcCBhcm91bmQgYWZ0ZXIgcGVyZm9ybWlu ZyBhZGQgb3BlcmF0aW9ucy4KCm1heWJlIHNpbXBsZXIgYW5kIG1vcmUgcm9idXN0IHdheSB3b3Vs ZCBiZSB0byBqdXN0IHVzZSB1NjQgZm9yICAKY2FsY3VsYXRpb25zPwoKPiArCSAqLwo+ICsJaWYg KGd1Y193b3BjbV9iYXNlID49IHdvcGNtLT5zaXplKSB7Cj4gKwkJRFJNX0VSUk9SKCJMb2NrZWQg YmFzZSB2YWx1ZSAldUtpQiA+PSBXT1BDTSBzaXplICV1S2lCLlxuIiwKPiArCQkJICBndWNfd29w Y21fYmFzZSAvIDEwMjQsCj4gKwkJCSAgd29wY20tPnNpemUgLyAxMDI0KTsKPiAgCQlyZXR1cm4g LUUyQklHOwo+ICAJfQo+IC0JZ3VjX3dvcGNtX3NpemUgPSB3b3BjbS0+c2l6ZSAtIGd1Y193b3Bj bV9iYXNlIC0gY3R4X3JzdmQ7Cj4gLQlndWNfd29wY21fc2l6ZSAmPSBHVUNfV09QQ01fU0laRV9N QVNLOwo+ICsJaWYgKGd1Y193b3BjbV9zaXplID49IHdvcGNtLT5zaXplKSB7Cj4gKwkJRFJNX0VS Uk9SKCJMb2NrZWQgc2l6ZSB2YWx1ZSAldUtpQiA+PSBXT1BDTSBzaXplICV1S2lCLlxuIiwKPiAr CQkJICBndWNfd29wY21fYmFzZSAvIDEwMjQsCj4gKwkJCSAgd29wY20tPnNpemUgLyAxMDI0KTsK PiArCQlyZXR1cm4gLUUyQklHOwo+ICsJfQo+IC0JRFJNX0RFQlVHX0RSSVZFUigiQ2FsY3VsYXRl ZCBHdUMgV09QQ00gUmVnaW9uOiBbJXVLaUIsICV1S2lCKVxuIiwKPiAtCQkJIGd1Y193b3BjbV9i YXNlIC8gMTAyNCwgZ3VjX3dvcGNtX3NpemUgLyAxMDI0KTsKPiArCWlmIChndWNfd29wY21fYmFz ZSArIGd1Y193b3BjbV9zaXplICsgY3R4X3JzdmQgPiB3b3BjbS0+c2l6ZSkgewo+ICsJCURSTV9F UlJPUigiTmVlZCAldUtpQiBXT1BDTSBpbiB0b3RhbCwgJXVLaUIgYXZhaWxhYmxlLlxuIiwKPiAr CQkJICAoZ3VjX3dvcGNtX2Jhc2UgKyBndWNfd29wY21fc2l6ZSArIGN0eF9yc3ZkKSAvIDEwMjQs Cj4gKwkJCSAgKHdvcGNtLT5zaXplKSAvIDEwMjQpOwo+ICsJCXJldHVybiAtRTJCSUc7Cj4gKwl9 Cj4gLQlndWNfd29wY21fcnN2ZCA9IEdVQ19XT1BDTV9SRVNFUlZFRCArIEdVQ19XT1BDTV9TVEFD S19SRVNFUlZFRDsKPiAtCWlmICgoZ3VjX2Z3X3NpemUgKyBndWNfd29wY21fcnN2ZCkgPiBndWNf d29wY21fc2l6ZSkgewo+IC0JCURSTV9FUlJPUigiTmVlZCAldUtpQiBXT1BDTSBmb3IgR3VDLCAl dUtpQiBhdmFpbGFibGUuXG4iLAo+IC0JCQkgIChndWNfZndfc2l6ZSArIGd1Y193b3BjbV9yc3Zk KSAvIDEwMjQsCj4gLQkJCSAgZ3VjX3dvcGNtX3NpemUgLyAxMDI0KTsKPiArCWlmIChndWNfd29w Y21fYmFzZSA8IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UoaHVjX2Z3X3NpemUpKSB7Cj4g KwkJRFJNX0VSUk9SKCJOZWVkICV1S2lCIFdPUENNIGZvciBIdUMgRlcsICV1S2lCIGF2YWlsYWJs ZS5cbiIsCj4gKwkJCSAgY2FsY3VsYXRlX21pbl9ndWNfd29wY21fYmFzZShodWNfZndfc2l6ZSkg LyAxMDI0LAoKY2FsY3VsYXRlX21pbl9ndWNfd29wY21fYmFzZSgpIGNhbGxlZCB0d2ljZQoKPiAr CQkJICBndWNfd29wY21fYmFzZSAvIDEwMjQpOwo+ICAJCXJldHVybiAtRTJCSUc7Cj4gIAl9Cj4g LQllcnIgPSBjaGVja19od19yZXN0cmljdGlvbihpOTE1LCBndWNfd29wY21fYmFzZSwgZ3VjX3dv cGNtX3NpemUsCj4gLQkJCQkgICBodWNfZndfc2l6ZSk7Cj4gKwlyZXR1cm4gdmVyaWZ5X2NhbGN1 bGF0ZWRfdmFsdWVzKGk5MTUsIGd1Y19md19zaXplLCBodWNfZndfc2l6ZSwKPiArCQkJCQlndWNf d29wY21fYmFzZSwgZ3VjX3dvcGNtX3NpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGlu dCB2ZXJpZnlfbG9ja2VkX3ZhbHVlc19hbmRfdXBkYXRlKHN0cnVjdCBpbnRlbF93b3BjbQoKInVw ZGF0ZSIgd2hhdCA/Cgo+ICp3b3BjbSwKPiArCQkJCQkJICBib29sICp1cGRhdGVfc2l6ZV9yZWcs Cj4gKwkJCQkJCSAgYm9vbCAqdXBkYXRlX29mZnNldF9yZWcpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHdvcGNtX3RvX2k5MTUod29wY20pOwo+ICsJdTMyIGh1 Y19md19zaXplID0gaW50ZWxfdWNfZndfZ2V0X3VwbG9hZF9zaXplKCZkZXZfcHJpdi0+aHVjLmZ3 KTsKPiArCXUzMiBzaXplX3ZhbCA9IEk5MTVfUkVBRChHVUNfV09QQ01fU0laRSk7Cj4gKwl1MzIg b2Zmc2V0X3ZhbCA9IEk5MTVfUkVBRChETUFfR1VDX1dPUENNX09GRlNFVCk7Cj4gKwlib29sIG9m ZnNldF9yZWdfbG9ja2VkID0gb2Zmc2V0X3ZhbCAmIEdVQ19XT1BDTV9PRkZTRVRfVkFMSUQ7Cj4g Kwlib29sIHNpemVfcmVnX2xvY2tlZCA9IHNpemVfdmFsICYgR1VDX1dPUENNX1NJWkVfTE9DS0VE Owo+ICsJdTMyIGd1Y193b3BjbV9iYXNlID0gb2Zmc2V0X3ZhbCAmIEdVQ19XT1BDTV9PRkZTRVRf TUFTSzsKPiArCXUzMiBndWNfd29wY21fc2l6ZSA9IHNpemVfdmFsICYgR1VDX1dPUENNX1NJWkVf TUFTSzsKPiArCWludCBlcnI7Cj4gKwo+ICsJKnVwZGF0ZV9zaXplX3JlZyA9ICFzaXplX3JlZ19s b2NrZWQ7Cj4gKwkqdXBkYXRlX29mZnNldF9yZWcgPSAhb2Zmc2V0X3JlZ19sb2NrZWQ7Cj4gKwo+ ICsJaWYgKCFvZmZzZXRfcmVnX2xvY2tlZCAmJiAhc2l6ZV9yZWdfbG9ja2VkKQo+ICsJCXJldHVy biAwOwo+ICsKPiArCWlmIChndWNfd29wY21fYmFzZSA9PSB3b3BjbS0+Z3VjLmJhc2UgJiYKPiAr CSAgICBndWNfd29wY21fc2l6ZSA9PSB3b3BjbS0+Z3VjLnNpemUpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJaWYgKFVTRVNfSFVDKGRldl9wcml2KSAmJiBvZmZzZXRfcmVnX2xvY2tlZCAmJgo+ICsJ ICAgICEob2Zmc2V0X3ZhbCAmIEhVQ19MT0FESU5HX0FHRU5UX0dVQykpIHsKPiArCQlEUk1fRVJS T1IoIkhVQ19MT0FESU5HX0FHRU5UX0dVQyBpc24ndCBsb2NrZWQgZm9yIFVTRVNfSFVDLlxuIik7 Cj4gKwkJcmV0dXJuIC1FSU87Cj4gKwl9Cj4gKwo+ICsJaWYgKCFvZmZzZXRfcmVnX2xvY2tlZCkK PiArCQlndWNfd29wY21fYmFzZSA9IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UoaHVjX2Z3 X3NpemUpOwo+ICsKPiArCWlmICghc2l6ZV9yZWdfbG9ja2VkKSB7Cj4gKwkJZXJyID0gY2FsY3Vs YXRlX21heF9ndWNfd29wY21fc2l6ZSh3b3BjbSwgZ3VjX3dvcGNtX2Jhc2UsCj4gKwkJCQkJCSAg ICZndWNfd29wY21fc2l6ZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJuIGVycjsKPiArCX0K PiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJSZWNhbGN1bGF0ZWQgR3VDIFdPUENNIFJlZ2lvbjog WyV1S2lCLCAldUtpQilcbiIsCj4gKwkJCSBndWNfd29wY21fYmFzZSAvIDEwMjQsCj4gKwkJCSAo Z3VjX3dvcGNtX2Jhc2UgKyBndWNfd29wY21fc2l6ZSkgLyAxMDI0KTsKPiArCj4gKwllcnIgPSB2 ZXJpZnlfbG9ja2VkX3ZhbHVlcyh3b3BjbSwgZ3VjX3dvcGNtX2Jhc2UsIGd1Y193b3BjbV9zaXpl KTsKPiAgCWlmIChlcnIpCj4gIAkJcmV0dXJuIGVycjsKPiAtCXdvcGNtLT5ndWMuYmFzZSA9IGd1 Y193b3BjbV9iYXNlOwo+ICAJd29wY20tPmd1Yy5zaXplID0gZ3VjX3dvcGNtX3NpemU7Cj4gKwl3 b3BjbS0+Z3VjLmJhc2UgPSBndWNfd29wY21fYmFzZTsKCmJ0dywgc2V0dGluZyBiYXNlIHRoZW4g c2l6ZSBpcyB0aGUgY29ycmVjdCBvcmRlciA7KQoKPiAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjMz LDExICszNjQsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgd3JpdGVfYW5kX3ZlcmlmeShzdHJ1Y3Qg IAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgKiB3aWxsIHZlcmlmeSB0aGUgcmVn aXN0ZXIgdmFsdWVzIHRvIG1ha2Ugc3VyZSB0aGUgcmVnaXN0ZXJzIGFyZSAgCj4gbG9ja2VkIHdp dGgKPiAgICogY29ycmVjdCB2YWx1ZXMuCj4gICAqCj4gLSAqIFJldHVybjogMCBvbiBzdWNjZXNz LiAtRUlPIGlmIHJlZ2lzdGVycyB3ZXJlIGxvY2tlZCB3aXRoIGluY29ycmVjdCAgCj4gdmFsdWVz Lgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gTWludXMgZXJyb3IgY29kZSBpZiByZWdpc3Rl cmVkIHdlcmUgbG9ja2VkIHdpdGgKPiArICogaW5jb3JyZWN0IHZhbHVlcy4tRUlPIGlmIHJlZ2lz dGVycyBmYWlsZWQgdG8gbG9jayB3aXRoIGNvcnJlY3QgIAo+IHZhbHVlcy4KCnBsZWFzZSBmaXgg dHlwb3MgYW5kIHNwYWNlcy4KYnR3LCBkbyB3ZSByZWFsbHkgY2FyZSBhYm91dCBkaWZmZXJlbnQg ZXJyb3IgY29kZXM/Cm5vdGUgdGhhdCAtRUlPIGhhcyBzcGVjaWFsIG1lYW5pbmcgZHVyaW5nIGRy aXZlciBsb2FkLgoKPiAgICovCj4gIGludCBpbnRlbF93b3BjbV9pbml0X2h3KHN0cnVjdCBpbnRl bF93b3BjbSAqd29wY20pCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHdvcGNtX3RvX2k5MTUod29wY20pOwo+ICsJYm9vbCB1cGRhdGVfc2l6ZV9yZWc7Cj4gKwli b29sIHVwZGF0ZV9vZmZzZXRfcmVnOwo+ICAJaW50IGVycjsKPiAJaWYgKCFVU0VTX0dVQyhkZXZf cHJpdikpCj4gQEAgLTI0NywyNyArMzgxLDQ2IEBAIGludCBpbnRlbF93b3BjbV9pbml0X2h3KHN0 cnVjdCBpbnRlbF93b3BjbSAqd29wY20pCj4gIAlHRU1fQlVHX09OKCF3b3BjbS0+Z3VjLnNpemUp Owo+ICAJR0VNX0JVR19PTighd29wY20tPmd1Yy5iYXNlKTsKPiAtCWVyciA9IHdyaXRlX2FuZF92 ZXJpZnkoZGV2X3ByaXYsIEdVQ19XT1BDTV9TSVpFLCB3b3BjbS0+Z3VjLnNpemUsCj4gLQkJCSAg ICAgICBHVUNfV09QQ01fU0laRV9NQVNLIHwgR1VDX1dPUENNX1NJWkVfTE9DS0VELAo+IC0JCQkg ICAgICAgR1VDX1dPUENNX1NJWkVfTE9DS0VEKTsKPiAtCWlmIChlcnIpCj4gKwllcnIgPSB2ZXJp ZnlfbG9ja2VkX3ZhbHVlc19hbmRfdXBkYXRlKHdvcGNtLCAmdXBkYXRlX3NpemVfcmVnLAo+ICsJ CQkJCSAgICAgICZ1cGRhdGVfb2Zmc2V0X3JlZyk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJRFJNX0VS Uk9SKCJXT1BDTSByZWdpc3RlcnMgYXJlIGxvY2tlZCB3aXRoIGludmFsaWQgdmFsdWVzLlxuIik7 Cj4gIAkJZ290byBlcnJfb3V0Owo+ICsJfQo+IC0JZXJyID0gd3JpdGVfYW5kX3ZlcmlmeShkZXZf cHJpdiwgRE1BX0dVQ19XT1BDTV9PRkZTRVQsCj4gLQkJCSAgICAgICB3b3BjbS0+Z3VjLmJhc2Ug fCBIVUNfTE9BRElOR19BR0VOVF9HVUMsCj4gLQkJCSAgICAgICBHVUNfV09QQ01fT0ZGU0VUX01B U0sgfCBIVUNfTE9BRElOR19BR0VOVF9HVUMgfAo+IC0JCQkgICAgICAgR1VDX1dPUENNX09GRlNF VF9WQUxJRCwKPiAtCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMSUQpOwo+IC0JaWYgKGVy cikKPiAtCQlnb3RvIGVycl9vdXQ7Cj4gKwlpZiAodXBkYXRlX3NpemVfcmVnKSB7Cj4gKwkJZXJy ID0gd3JpdGVfYW5kX3ZlcmlmeShkZXZfcHJpdiwgR1VDX1dPUENNX1NJWkUsCj4gKwkJCQkgICAg ICAgd29wY20tPmd1Yy5zaXplLAo+ICsJCQkJICAgICAgIEdVQ19XT1BDTV9TSVpFX01BU0sgfAo+ ICsJCQkJICAgICAgIEdVQ19XT1BDTV9TSVpFX0xPQ0tFRCwKPiArCQkJCSAgICAgICBHVUNfV09Q Q01fU0laRV9MT0NLRUQpOwo+ICsJCWlmIChlcnIpIHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gR3VDIFdPUENNIHNpemUgd2l0aCAlI3guXG4iLAo+ICsJCQkJICB3b3BjbS0+Z3VjLnNpemUp Owo+ICsJCQlnb3RvIGVycl9vdXQ7Cj4gKwkJfQo+ICsJfQo+ICsJaWYgKHVwZGF0ZV9vZmZzZXRf cmVnKSB7Cj4gKwkJZXJyID0gd3JpdGVfYW5kX3ZlcmlmeShkZXZfcHJpdiwgRE1BX0dVQ19XT1BD TV9PRkZTRVQsCj4gKwkJCQkgICAgICAgd29wY20tPmd1Yy5iYXNlIHwgSFVDX0xPQURJTkdfQUdF TlRfR1VDLAo+ICsJCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfTUFTSyB8Cj4gKwkJCQkgICAg ICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDIHwKPiArCQkJCSAgICAgICBHVUNfV09QQ01fT0ZGU0VU X1ZBTElELAo+ICsJCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMSUQpOwo+ICsJCWlmIChl cnIpIHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gR3VDIFdPUENNIG9mZnNldCB3aXRoICUj eC5cbiIsCj4gKwkJCQkgIHdvcGNtLT5ndWMuYmFzZSk7Cj4gKwkJCWdvdG8gZXJyX291dDsKPiAr CQl9Cj4gKwl9Cj4gIAlyZXR1cm4gMDsKPiBlcnJfb3V0Ogo+IC0JRFJNX0VSUk9SKCJGYWlsZWQg dG8gaW5pdCBXT1BDTSByZWdpc3RlcnM6XG4iKTsKPiAgCURSTV9FUlJPUigiRE1BX0dVQ19XT1BD TV9PRkZTRVQ9JSN4XG4iLAo+ICAJCSAgSTkxNV9SRUFEKERNQV9HVUNfV09QQ01fT0ZGU0VUKSk7 Cj4gIAlEUk1fRVJST1IoIkdVQ19XT1BDTV9TSVpFPSUjeFxuIiwgSTkxNV9SRUFEKEdVQ19XT1BD TV9TSVpFKSk7Cj4gKwlEUk1fRVJST1IoIkEgc3lzdGVtIHJlYm9vdCBpcyByZXF1aXJlZC5cbiIp Owo+IAlyZXR1cm4gZXJyOwo+ICB9CgphcyBtZW50aW9uZWQgYWJvdmUsIG1heWJlIHdlIHNob3Vs ZCBzdGFydCB3aXRoOgoKCXN0YXRpYyBpbnQgd29wY21faW5pdF9mcm9tX3JlZ2lzdGVycyh3b3Bj bSkKCXsKCQl1MzIgYmFzZSA9IEk5MTVfUkVBRCgpOwoJCXUzMiBzaXplID0gSTkxNV9SRUFEKCk7 CgoJCXdvcGNtLT5ndWMuYmFzZSA9IGJhc2UgJiBMT0NLRUQgPyBiYXNlICYgTUFTSyA6IDA7CgkJ d29wY20tPmd1Yy5zaXplID0gc2l6ZSAmIExPQ0tFRCA/IHNpemUgJiBNQVNLIDogMDsKCgkJcmV0 dXJuIHdvcGNtLT5ndWMuYmFzZSAmJiB3b3BjbS0+Z3VjLnNpemUgPyAwIDogLUVOT0RBVEE7Cgl9 Cgp0aGVuIHdlIGNhbiBkbyBldmVyeXRoaW5nIGluIG9uZSBwYXNzOgoKCWludCBpbnRlbF93b3Bj bV9pbml0KHdvcGNtKQoJewoJCXJldCA9IHdvcGNtX2luaXRfZnJvbV9yZWdpc3RlcnMod29wY20p OwoJCWlmIChyZXQpCgkJCXdvcGNtX2ZpbmlzaF9wYXJ0aXRpb25pbmcod29wY20pOwoKCQlyZXQg PSB3b3BjbV92ZXJpZnlfcGFydGl0aW9ucyh3b3BjbSk7CgkJaWYgKHJldCkKCQkJcmV0dXJuIHJl dDsKCgkJcmV0ID0gd29wY21fd3JpdGVfcmVnaXN0ZXJzKHdvcGNtKTsKCQlpZiAocmV0KQoJCQly ZXR1cm4gcmV0OwoJCXJldHVybiAwOwoJfQoKd2hlcmUgIndvcGNtX2ZpbmlzaF9wYXJ0aXRpb25p bmciIG11c3Qgbm90IHRyeSB0byB1cGRhdGUgYW55IG5vbi16ZXJvCnZhbHVlcyBidXQgdGhlbiBj YW4gYmUgaW1wbGVtZW50ZWQgaW4gYW55IGZhc2hpb24uCgooYnR3LCBJIGd1ZXNzIHdlIGRvbid0 IG5lZWQgc2VwYXJhdGUgd29wY21faW5pdF9odyBzdGVwKQoKL21pY2hhbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK