From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 05/11] drm/i915: Try to make bigjoiner work in atomic check, v3. Date: Thu, 28 Nov 2019 21:24:35 +0200 Message-ID: <20191128192435.GA1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-5-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 048616E874 for ; Thu, 28 Nov 2019 19:24:38 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191114160522.9699-5-maarten.lankhorst@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTZQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2hlbiB0aGUgY2xvY2sgaXMgaGlnaGVyIHRoYW4gdGhlIGRvdGNsb2NrLCB0 cnkgd2l0aCAyIHBpcGVzIGVuYWJsZWQuCj4gSWYgd2UgY2FuIGVuYWJsZSAyLCB0aGVuIHdlIHdp bGwgZ28gaW50byBiaWcgam9pbmVyIG1vZGUsIGFuZCBzdGVhbAo+IHRoZSBhZGphY2VudCBjcnRj Lgo+IAo+IFRoaXMgb25seSBsaW5rcyB0aGUgY3J0YydzIGluIHNvZnR3YXJlLCBubyBoYXJkd2Fy ZSBvciBwbGFuZQo+IHByb2dyYW1taW5nIGlzIGRvbmUgeWV0LiBCbG9icyBhcmUgYWxzbyBjb3Bp ZWQgZnJvbSB0aGUgbWFzdGVyJ3MKPiBjcnRjX3N0YXRlLCBzbyBpdCBkb2Vzbid0IGRlcGVuZCBh dCBjb21taXQgdGltZSBvbiB0aGUgb3RoZXIKPiBjcnRjX3N0YXRlLgo+IAo+IENoYW5nZXMgc2lu Y2UgdjE6Cj4gLSBSZW5hbWUgcGlwZSB0aW1pbmdzIHRvIHRyYW5zY29kZXIgdGltaW5ncywgYXMg dGhleSBhcmUgbm93IGRpZmZlcmVudC4KPiBDaGFuZ2VzIHNpbmNlIHYyOgo+IC0gUmV3b3JrIGJp Z2pvaW5lciBjaGVja3M7IGFsd2F5cyBkaXNhYmxlIHNsYXZlIHdoZW4gcmVjYWxjdWxhdGluZwo+ ICAgbWFzdGVyLiBObyBuZWVkIHRvIGhhdmUgYSBzZXBhcmF0ZSBiaWdqb2luZXIgcGFzcyBhbnkg bW9yZS4KPiAtIFVzZSBwaXBlX21vZGUgaW5zdGVhZCBvZiB0cmFuc2NvZGVyX21vZGUsIHRvIGNs ZWFuIHVwIHRoZSBjb2RlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgOSArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5oICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMTk4ICsrKysrKysrKysrKysrKyst LQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAgIDkg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgICAgICAgfCAgMjIg Ky0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyMDcgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gaW5k ZXggZmQwMDI2ZmMzNjE4Li5iNWMxN2Q4YzAyMDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiBAQCAtMjI5LDE0ICsyMjksMTUgQEAgdm9pZCBp bnRlbF9jcnRjX2ZyZWVfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIAlpbnRlbF9jcnRjX3B1dF9jb2xvcl9ibG9icyhjcnRjX3N0YXRlKTsKPiAgfQo+ICAK PiAtdm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK3ZvaWQgaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpmcm9tX2NydGNfc3RhdGUpCj4gIHsKPiAgCWRybV9wcm9wZXJ0eV9yZXBs YWNlX2Jsb2IoJmNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0LAo+IC0JCQkJICBjcnRjX3N0YXRl LT51YXBpLmRlZ2FtbWFfbHV0KTsKPiArCQkJCSAgZnJvbV9jcnRjX3N0YXRlLT51YXBpLmRlZ2Ft bWFfbHV0KTsKPiAgCWRybV9wcm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmh3Lmdh bW1hX2x1dCwKPiAtCQkJCSAgY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpOwo+ICsJCQkJICBm cm9tX2NydGNfc3RhdGUtPnVhcGkuZ2FtbWFfbHV0KTsKPiAgCWRybV9wcm9wZXJ0eV9yZXBsYWNl X2Jsb2IoJmNydGNfc3RhdGUtPmh3LmN0bSwKPiAtCQkJCSAgY3J0Y19zdGF0ZS0+dWFwaS5jdG0p Owo+ICsJCQkJICBmcm9tX2NydGNfc3RhdGUtPnVhcGkuY3RtKTsKPiAgfQo+ICAKPiAgLyoqCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5oCj4gaW5kZXggN2I0 OTYyMzQxOWJhLi5lNjQ0NzMyMjcyODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfYXRvbWljLmgKPiBAQCAtMzcsNyArMzcsOCBAQCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 Cj4gIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+ICB2b2lkIGludGVs X2NydGNfZnJlZV9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7 Cj4gLXZvaWQgaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKTsKPiArdm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmZyb21fY3J0Y19zdGF0ZSk7Cj4gIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICppbnRlbF9hdG9taWNfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g IHZvaWQgaW50ZWxfYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggN2E2ZGE4NTgyM2FmLi4yZGM2M2VmNWNhZjggMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC03NTc2LDkgKzc1NzYs MjUgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBpcGVf bW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcucGlwZV9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKnBpcGVfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcucGlwZV9tb2RlOwo+ICAJaW50IGNs b2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPiAgCj4gKwkqcGlwZV9tb2Rl ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gKwo+ICsJLyogQWRqdXN0IHBpcGVf bW9kZSBmb3IgYmlnam9pbmVyLCB3aXRoIGhhbGYgdGhlIGhvcml6b250YWwgbW9kZSAqLwo+ICsJ aWYgKHBpcGVfY29uZmlnLT5iaWdqb2luZXIpIHsKPiArCQlwaXBlX21vZGUtPmNydGNfY2xvY2sg Lz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaGRpc3BsYXkgLz0gMjsKPiArCQlwaXBlX21vZGUt PmNydGNfaGJsYW5rX3N0YXJ0IC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2hibGFua19lbmQg Lz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaHN5bmNfc3RhcnQgLz0gMjsKPiArCQlwaXBlX21v ZGUtPmNydGNfaHN5bmNfZW5kIC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2h0b3RhbCAvPSAy Owo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19oc2tldyAvPSAyOwo+ICsKPiArCQlwaXBlX2NvbmZpZy0+ cGlwZV9zcmNfdyAvPSAyOwo+ICsJfQo+ICsKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NCkgewo+ICAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEw Owo+ICAKPiBAQCAtNzYzNSw3ICs3NjUxLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJICogV2FQcnVuZU1vZGVXaXRo SW5jb3JyZWN0SHN5bmNPZmZzZXQ6Y3RnLGVsayxpbGssc25iLGl2Yix2bHYsaHN3Lgo+ICAJICov Cj4gIAlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPiA0IHx8IElTX0c0WChkZXZfcHJpdikpICYm Cj4gLQkJcGlwZV9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IHBpcGVfbW9kZS0+Y3J0Y19oZGlz cGxheSkKPiArCSAgICBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0 YXJ0ID09IHBpcGVfbW9kZS0+Y3J0Y19oZGlzcGxheSkKCkEgYml0IGluY29uc2lzdGVudCBub3cu Cgo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWludGVsX2NydGNfY29tcHV0ZV9waXhlbF9y YXRlKHBpcGVfY29uZmlnKTsKPiBAQCAtMTE5MjEsNyArMTE5MzcsNyBAQCBzdGF0aWMgYm9vbCBl bmNvZGVyc19jbG9uZWFibGUoY29uc3Qgc3RydWN0IGludGVsX2VuY29kZXIgKmEsCj4gIAkJCSAg Yi0+Y2xvbmVhYmxlICYgKDEgPDwgYS0+dHlwZSkpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBj aGVja19zaW5nbGVfZW5jb2Rlcl9jbG9uaW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiArc3RhdGljIGJvb2wgY2hlY2tfc2luZ2xlX2VuY29kZXJfY2xvbmluZyhzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCQkgc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gQEAgLTExOTMw LDcgKzExOTQ2LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfc2luZ2xlX2VuY29kZXJfY2xvbmluZyhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfbmV3X2Nv bm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsK PiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBjb25uZWN0 b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICAJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMg IT0gJmNydGMtPmJhc2UpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTIxNjcsNiArMTIxODMs NyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICAKPiAgCWlmIChtb2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+ aHcuZW5hYmxlICYmCj4gIAkgICAgZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2Nr ICYmCj4gKwkgICAgIWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSAmJgoKV2h5IGRvIHdlIG5l ZWQgdGhpcz8gV291bGRuJ3Qgd2UganVzdCBlbmQgdXAgc2hhcmluZyB0aGUgc2FtZSBEUExMCmZv ciBib3RoIHBpcGVzIGFueXdheT8KCj4gIAkgICAgIVdBUk5fT04oY3J0Y19zdGF0ZS0+c2hhcmVk X2RwbGwpKSB7Cj4gIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2Nr KGNydGMsIGNydGNfc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gQEAgLTEyNjI3LDE4ICsxMjY0NCwz MSBAQCBzdGF0aWMgYm9vbCBjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1pbnRlbF9j cnRjX2NvcHlfdWFwaV90b19od19zdGF0ZV9ub21vZGVzZXQoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK2ludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9k ZXNldChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQkgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0JaW50ZWxfY3J0Y19jb3B5X2Nv bG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+ICsJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmZyb21fY3J0Y19zdGF0ZSA9IGNydGNfc3RhdGU7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmJp Z2pvaW5lcl9zbGF2ZSkgewo+ICsJCWZyb21fY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRf bmV3X2NydGNfc3RhdGUoc3RhdGUsCj4gKwkJCQkJY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtl ZF9jcnRjKTsKPiArCj4gKwkJLyogTm8gbmVlZCB0byBjb3B5IHN0YXRlIGlmIHRoZSBtYXN0ZXIg c3RhdGUgaXMgdW5jaGFuZ2VkICovCj4gKwkJaWYgKCFmcm9tX2NydGNfc3RhdGUpCj4gKwkJCXJl dHVybjsKPiArCX0KPiArCj4gKwlpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoY3J0Y19zdGF0 ZSwgZnJvbV9jcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtaW50ZWxfY3J0 Y19jb3B5X3VhcGlfdG9faHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gK2ludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICB7Cj4gIAljcnRjX3N0YXRlLT5ody5lbmFibGUgPSBjcnRjX3N0YXRlLT51YXBpLmVu YWJsZTsKPiAgCWNydGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGNydGNfc3RhdGUtPnVhcGkuYWN0aXZl Owo+ICAJY3J0Y19zdGF0ZS0+aHcucGlwZV9tb2RlID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSA9IGNydGNfc3RhdGUtPnVhcGkuYWRqdXN0ZWRfbW9kZTsKPiAtCWludGVsX2NydGNfY29w eV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNldChjcnRjX3N0YXRlKTsKPiArCWludGVsX2NydGNf Y29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNldChzdGF0ZSwgY3J0Y19zdGF0ZSk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfY29weV9od190b191YXBpX3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IEBAIC0xMjY2MCw3ICsxMjY5MCw0OSBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvcHlfaHdfdG9fdWFwaV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWludGVs X2NydGNfcHJlcGFyZV9jbGVhcmVkX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICtjb3B5X2JpZ2pvaW5lcl9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpm cm9tX2NydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzYXZlZF9z dGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICsKPiArCXNhdmVkX3N0YXRlID0ga21lbWR1cChmcm9tX2NydGNf c3RhdGUsIHNpemVvZigqc2F2ZWRfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc2F2ZWRf c3RhdGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc2F2ZWRfc3RhdGUtPnVhcGkgPSBj cnRjX3N0YXRlLT51YXBpOwo+ICsJc2F2ZWRfc3RhdGUtPnNjYWxlcl9zdGF0ZSA9IGNydGNfc3Rh dGUtPnNjYWxlcl9zdGF0ZTsKPiArCXNhdmVkX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGNydGNfc3Rh dGUtPnNoYXJlZF9kcGxsOwo+ICsJc2F2ZWRfc3RhdGUtPmRwbGxfaHdfc3RhdGUgPSBjcnRjX3N0 YXRlLT5kcGxsX2h3X3N0YXRlOwo+ICsJc2F2ZWRfc3RhdGUtPmNyY19lbmFibGVkID0gY3J0Y19z dGF0ZS0+Y3JjX2VuYWJsZWQ7Cj4gKwo+ICsJaW50ZWxfY3J0Y19mcmVlX2h3X3N0YXRlKGNydGNf c3RhdGUpOwo+ICsJbWVtY3B5KGNydGNfc3RhdGUsIHNhdmVkX3N0YXRlLCBzaXplb2YoKmNydGNf c3RhdGUpKTsKPiArCWtmcmVlKHNhdmVkX3N0YXRlKTsKPiArCj4gKwkvKiBSZS1pbml0IGh3IHN0 YXRlICovCj4gKwltZW1zZXQoJmNydGNfc3RhdGUtPmh3LCAwLCBzaXplb2Yoc2F2ZWRfc3RhdGUt Pmh3KSk7Cj4gKwljcnRjX3N0YXRlLT5ody5lbmFibGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiArCWNydGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGZyb21fY3J0Y19zdGF0ZS0+aHcuYWN0 aXZlOwo+ICsJY3J0Y19zdGF0ZS0+aHcucGlwZV9tb2RlID0gZnJvbV9jcnRjX3N0YXRlLT5ody5w aXBlX21vZGU7Cj4gKwljcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlID0gZnJvbV9jcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsKPiArCS8qIFNvbWUgZml4dXBzICovCj4gKwljcnRj X3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZCA9IGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2No YW5nZWQ7Cj4gKwljcnRjX3N0YXRlLT51YXBpLmNvbm5lY3RvcnNfY2hhbmdlZCA9IGZyb21fY3J0 Y19zdGF0ZS0+dWFwaS5jb25uZWN0b3JzX2NoYW5nZWQ7Cj4gKwljcnRjX3N0YXRlLT51YXBpLmFj dGl2ZV9jaGFuZ2VkID0gZnJvbV9jcnRjX3N0YXRlLT51YXBpLmFjdGl2ZV9jaGFuZ2VkOwo+ICsJ Y3J0Y19zdGF0ZS0+bnYxMl9wbGFuZXMgPSBjcnRjX3N0YXRlLT5jOF9wbGFuZXMgPSBjcnRjX3N0 YXRlLT51cGRhdGVfcGxhbmVzID0gMDsKPiArCWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRf Y3J0YyA9IHRvX2ludGVsX2NydGMoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsJY3J0 Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlID0gdHJ1ZTsKPiArCWNydGNfc3RhdGUtPmNwdV90cmFu c2NvZGVyID0gKGVudW0gdHJhbnNjb2RlciljcnRjLT5waXBlOwo+ICsJY3J0Y19zdGF0ZS0+aGFz X2F1ZGlvID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQK PiAraW50ZWxfY3J0Y19wcmVwYXJlX2NsZWFyZWRfc3RhdGUoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gKwkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gIAkJdG9faTkx NShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gQEAgLTEyNzAzLDE2ICsxMjc3NSwxNiBA QCBpbnRlbF9jcnRjX3ByZXBhcmVfY2xlYXJlZF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgCWNydGNfc3RhdGUtPnVhcGkubW9kZS5wcml2YXRlX2ZsYWdzID0g MDsKPiAgCWNydGNfc3RhdGUtPnVhcGkuYWRqdXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzID0gMDsK PiAgCj4gLQlpbnRlbF9jcnRjX2NvcHlfdWFwaV90b19od19zdGF0ZShjcnRjX3N0YXRlKTsKPiAr CWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBjcnRjX3N0YXRlKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC1pbnRlbF9tb2Rlc2V0X3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAraW50ZWxf bW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAr CQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAgCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT51YXBpLmNydGM7Cj4gLQlzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+dWFwaS5zdGF0ZTsKPiAgCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4g QEAgLTEyNzU1LDcgKzEyODI3LDcgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWct PnBpcGVfc3JjX3csCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWctPnBpcGVfc3JjX2gpOwo+ICAK PiAtCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29u bmVjdG9yX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZz dGF0ZS0+YmFzZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29u bmVjdG9yX3N0YXRlLT5jcnRjICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI4 MDAsNyArMTI4NzIsNyBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCSAqIGFkanVzdCBpdCBhY2NvcmRpbmcgdG8gbGlt aXRhdGlvbnMgb3IgY29ubmVjdG9yIHByb3BlcnRpZXMsIGFuZCBhbHNvCj4gIAkgKiBhIGNoYW5j ZSB0byByZWplY3QgdGhlIG1vZGUgZW50aXJlbHkuCj4gIAkgKi8KPiAtCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7 Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubmVj dG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRj ICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI4NTMsOCArMTI5MjUsNiBAQCBp bnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiAgCSAqLwo+ICAJcGlwZV9jb25maWctPnVhcGkuYWRqdXN0ZWRfbW9kZSA9IHBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAtCS8qIHdpdGhvdXQgYmlnam9pbmVyLCBw aXBlX21vZGUgPT0gYWRqdXN0ZWRfbW9kZSAqLwo+IC0JcGlwZV9jb25maWctPmh3LnBpcGVfbW9k ZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gQEAgLTE0MDkxLDYgKzE0MTYxLDc0IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNr X2NydGNzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5lcihzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gKwkJ CQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc2xhdmVfY3J0Y19zdGF0ZSwgKm1hc3Rlcl9j cnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKnNsYXZlLCAqbWFzdGVyOwo+ICsKPiAr CS8qIHNsYXZlIGJlaW5nIGVuYWJsZWQsIGlzIG1hc3RlciBpcyBzdGlsbCBjbGFpbWluZyB0aGlz IGNydGM/ICovCj4gKwlpZiAob2xkX2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkgewo+ICsJ CXNsYXZlID0gY3J0YzsKPiArCQltYXN0ZXIgPSBvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xp bmtlZF9jcnRjOwo+ICsJCW1hc3Rlcl9jcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgbWFzdGVyKTsKPiArCQlpZiAoIW1hc3Rlcl9jcnRjX3N0YXRlIHx8 ICFuZWVkc19tb2Rlc2V0KG1hc3Rlcl9jcnRjX3N0YXRlKSkKPiArCQkJZ290byBjbGFpbWVkOwo+ ICsJfQo+ICsKPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlpZiAoMSArIGNydGMtPnBpcGUgPj0gSU5URUxfTlVNX1BJUEVTKGRldl9wcml2 KSkgewo+ICsJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBCaWcgam9pbmVyIGNvbmZpZ3Vy YXRpb24gcmVxdWlyZXMgIgo+ICsJCQkgICAgICAiQ1JUQyArIDEgdG8gYmUgdXNlZCwgZG9lc24n dCBleGlzdFxuIiwKPiArCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjLT5iYXNlLm5h bWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXNsYXZlID0gbmV3X2NydGNf c3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YyA9Cj4gKwkJaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2X3ByaXYsIGNydGMtPnBpcGUgKyAxKTsKPiArCXNsYXZlX2NydGNfc3RhdGUgPSBpbnRl bF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLCBzbGF2ZSk7Cj4gKwltYXN0ZXIg PSBjcnRjOwo+ICsJaWYgKElTX0VSUihzbGF2ZV9jcnRjX3N0YXRlKSkKPiArCQlyZXR1cm4gUFRS X0VSUihzbGF2ZV9jcnRjX3N0YXRlKTsKPiArCj4gKwkvKiBtYXN0ZXIgYmVpbmcgZW5hYmxlZCwg c2xhdmUgd2FzIGFscmVhZHkgY29uZmlndXJlZD8gKi8KPiArCWlmIChzbGF2ZV9jcnRjX3N0YXRl LT51YXBpLmVuYWJsZSkKPiArCQlnb3RvIGNsYWltZWQ7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi W0NSVEM6JWQ6JXNdIFVzZWQgYXMgc2xhdmUgZm9yIGJpZyBqb2luZXJcbiIsCj4gKwkJICAgICAg c2xhdmUtPmJhc2UuYmFzZS5pZCwgc2xhdmUtPmJhc2UubmFtZSk7Cj4gKwlyZXR1cm4gY29weV9i aWdqb2luZXJfY3J0Y19zdGF0ZShzbGF2ZV9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4g Kwo+ICtjbGFpbWVkOgo+ICsJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNdIFNsYXZlIGlzIGVu YWJsZWQgYXMgbm9ybWFsIENSVEMsIGJ1dCAiCj4gKwkJICAgICAgIltDUlRDOiVkOiVzXSBjbGFp bWluZyB0aGlzIENSVEMgZm9yIGJpZ2pvaW5lci5cbiIsCj4gKwkJICAgICAgc2xhdmUtPmJhc2Uu YmFzZS5pZCwgc2xhdmUtPmJhc2UubmFtZSwKPiArCQkgICAgICBtYXN0ZXItPmJhc2UuYmFzZS5p ZCwgbWFzdGVyLT5iYXNlLm5hbWUpOwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQga2lsbF9iaWdqb2luZXJfc2xhdmUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzbGF2ZV9jcnRjX3N0YXRlID0KPiAr CQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLAo+ICsJCQltYXN0ZXJf Y3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjKTsKCm5pdDogSSdkIGRvIHRoaXMgYXMK CnN0cnVjdCBmb28gKmJhcjsKCmJhciA9IHdoYXRldmVyKCk7CmlmIChJU19FUlIpCgkuLi4KCnRv IG1ha2UgaXQgc3RhbmQgb3V0IG1vcmUgc2luY2UgdGhhdCBmdW5jdGlvbiBoYXMgc29tZSByZWFs CnNpZGUgZWZmZWN0cy4KCj4gKwo+ICsJaWYgKElTX0VSUihzbGF2ZV9jcnRjX3N0YXRlKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihzbGF2ZV9jcnRjX3N0YXRlKTsKPiArCj4gKwlzbGF2ZV9jcnRjX3N0 YXRlLT5iaWdqb2luZXIgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyID0gZmFsc2U7Cj4g KwlzbGF2ZV9jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyX3NsYXZlID0gZmFsc2U7Cj4gKwlzbGF2ZV9jcnRjX3N0YXRlLT5iaWdqb2luZXJf bGlua2VkX2NydGMgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjID0g TlVMTDsKPiArCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBzbGF2ZV9j cnRjX3N0YXRlKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfYXRv bWljX2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0Cj4gICAqIEBkZXY6IGRybSBkZXZpY2UK PiBAQCAtMTQxMjIsMjMgKzE0MjYwLDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7 Cj4gIAkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkgewo+ICAJCQkvKiBMaWdo dCBjb3B5ICovCj4gLQkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNl dChuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRl X25vbW9kZXNldChzdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAKPiAgCQkJY29udGludWU7Cj4g IAkJfQo+ICAKPiAtCQlpZiAoIW5ld19jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSkgewo+IC0JCQlp bnRlbF9jcnRjX2NvcHlfdWFwaV90b19od19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJLyog S2lsbCBvbGQgYmlnam9pbmVyIGxpbmssIHdlIG1heSByZS1lc3RhYmxpc2ggYWZ0ZXJ3YXJkcyAq Lwo+ICsJCWlmIChvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyICYmICFvbGRfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyX3NsYXZlKSB7Cj4gKwkJCXJldCA9IGtpbGxfYmlnam9pbmVyX3NsYXZlKHN0YXRl LCBuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlnb3RvIGZhaWw7Cj4gKwkJ fQo+ICAKPiAtCQkJYW55X21zID0gdHJ1ZTsKPiArCQlpZiAoIW5ld19jcnRjX3N0YXRlLT51YXBp LmVuYWJsZSkgewo+ICsJCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpIHsK PiArCQkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBuZXdfY3J0Y19z dGF0ZSk7Cj4gKwkJCQlhbnlfbXMgPSB0cnVlOwo+ICsJCQl9Cj4gIAkJCWNvbnRpbnVlOwo+ICAJ CX0KCkhvdyBkb2VzIHRoaXMgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzbGF2ZSB1YXBpLmVu YWJsZSBnZXRzCmVuYWJsZWQgYnV0IHRoZSBtYXN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHN0YXRl IHlldD8KCj4gIAo+IC0JCXJldCA9IGludGVsX2NydGNfcHJlcGFyZV9jbGVhcmVkX3N0YXRlKG5l d19jcnRjX3N0YXRlKTsKPiArCQlyZXQgPSBpbnRlbF9jcnRjX3ByZXBhcmVfY2xlYXJlZF9zdGF0 ZShzdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZmFpbDsK PiAgCj4gLQkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhuZXdfY3J0Y19zdGF0ZSk7 Cj4gKwkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdGF0ZSwgbmV3X2NydGNfc3Rh dGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZmFpbDsKPiAgCj4gQEAgLTE0MTQ2LDYgKzE0 MjkyLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAo+ICAJCWlmIChuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKPiAgCQkJ YW55X21zID0gdHJ1ZTsKPiArCj4gKwkJcmV0ID0gaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5l cihzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsKPiArCQlpZiAo cmV0KQo+ICsJCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gIAo+ICAJaWYgKGFueV9tcyAmJiAhY2hlY2tf ZGlnaXRhbF9wb3J0X2NvbmZsaWN0cyhzdGF0ZSkpIHsKPiBAQCAtMTQzNTAsNyArMTQ1MDAsOSBA QCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCj4gIAljb21taXRfcGlwZV9jb25maWcoc3RhdGUsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0 Y19zdGF0ZSk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChu ZXdfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKQo+ICsJCXsvKiBOb3Qgc3VwcG9ydGVkIHlldCAqL30K PiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQlza2xfdXBkYXRlX3Bs YW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPiAgCWVsc2UKPiAgCQlpOXh4X3VwZGF0ZV9wbGFu ZXNfb25fY3J0YyhzdGF0ZSwgY3J0Yyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBpbmRleCA3ZjQ2YzE2NDZkM2YuLmNmMmVj ZmExNzQxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCj4gQEAgLTEwNDQsNiArMTA0NCwxNSBAQCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSB7Cj4gIAkvKiBlbmFibGUgcGlwZSBjc2M/ICovCj4gIAlib29sIGNzY19lbmFi bGU7Cj4gIAo+ICsJLyogZW5hYmxlIHBpcGUgYmlnIGpvaW5lcj8gKi8KPiArCWJvb2wgYmlnam9p bmVyOwo+ICsKPiArCS8qIGJpZyBqb2luZXIgc2xhdmUgY3J0Yz8gKi8KPiArCWJvb2wgYmlnam9p bmVyX3NsYXZlOwo+ICsKPiArCS8qIGxpbmtlZCBjcnRjIGZvciBiaWdqb2luZXIsIGVpdGhlciBz bGF2ZSBvciBtYXN0ZXIgKi8KPiArCXN0cnVjdCBpbnRlbF9jcnRjICpiaWdqb2luZXJfbGlua2Vk X2NydGM7Cj4gKwo+ICAJLyogRGlzcGxheSBTdHJlYW0gY29tcHJlc3Npb24gc3RhdGUgKi8KPiAg CXN0cnVjdCB7Cj4gIAkJYm9vbCBjb21wcmVzc2lvbl9lbmFibGU7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGluZGV4IDliN2RmOGU4NWVhMi4uNTRmZGU0YzRjNGRk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yMTQ3 LDYgKzIxNDcsMTUgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gaW50 ZWxfZHAtPmNvbW1vbl9yYXRlc1tsaW1pdHMtPm1heF9jbG9ja107Cj4gIAlwaXBlX2NvbmZpZy0+ bGFuZV9jb3VudCA9IGxpbWl0cy0+bWF4X2xhbmVfY291bnQ7Cj4gIAo+ICsJaWYgKGFkanVzdGVk X21vZGUtPmNydGNfY2xvY2sgPiBpbnRlbF9kcF9tYXhfZG90Y2xvY2soaW50ZWxfZHAsIGZhbHNl KSkgewo+ICsJCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID4gaW50ZWxfZHBfbWF4X2Rv dGNsb2NrKGludGVsX2RwLCB0cnVlKSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJDbG9jayByYXRl IHRvbyBoaWdoIGZvciBiaWcgam9pbmVyXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJ fQo+ICsJCXBpcGVfY29uZmlnLT5iaWdqb2luZXIgPSB0cnVlOwo+ICsJCURSTV9ERUJVR19LTVMo IlVzaW5nIGJpZ2pvaW5lciBjb25maWd1cmF0aW9uXG4iKTsKPiArCX0KPiArCj4gIAlpZiAoaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ICAJCXBpcGVfY29uZmlnLT5kc2MuY29tcHJlc3Nl ZF9icHAgPQo+ICAJCQltaW5fdCh1MTYsIGRybV9lZHBfZHNjX3Npbmtfb3V0cHV0X2JwcChpbnRl bF9kcC0+ZHNjX2RwY2QpID4+IDQsCj4gQEAgLTIxNjQsMTIgKzIxNzMsMTIgQEAgc3RhdGljIGlu dCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkJCQkgICAgYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiAgCQkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNfaGRp c3BsYXksCj4gLQkJCQkJCSAgICBmYWxzZSk7Cj4gKwkJCQkJCSAgICBwaXBlX2NvbmZpZy0+Ymln am9pbmVyKTsKPiAgCQlkc2NfZHBfc2xpY2VfY291bnQgPQo+ICAJCQlpbnRlbF9kcF9kc2NfZ2V0 X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkgICAgIGFkanVzdGVkX21vZGUtPmNydGNf Y2xvY2ssCj4gIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiAtCQkJ CQkJICAgICBmYWxzZSk7Cj4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmJpZ2pvaW5lcik7Cj4g IAkJaWYgKCFkc2NfbWF4X291dHB1dF9icHAgfHwgIWRzY19kcF9zbGljZV9jb3VudCkgewo+ICAJ CQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3VudCBub3Qgc3VwcG9ydGVk XG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTIxODQsMTMgKzIxOTMsMTQgQEAgc3Rh dGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiAgCSAqIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBDZGNsb2NrIGFuZCBpZiBz bGljZSBjb3VudCBpcyBldmVuCj4gIAkgKiB0aGVuIHdlIG5lZWQgdG8gdXNlIDIgVkRTQyBpbnN0 YW5jZXMuCj4gIAkgKi8KPiAtCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID4gZGV2X3By aXYtPm1heF9jZGNsa19mcmVxKSB7Cj4gLQkJaWYgKHBpcGVfY29uZmlnLT5kc2Muc2xpY2VfY291 bnQgPiAxKSB7Cj4gLQkJCXBpcGVfY29uZmlnLT5kc2MuZHNjX3NwbGl0ID0gdHJ1ZTsKPiAtCQl9 IGVsc2Ugewo+ICsJaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBkZXZfcHJpdi0+bWF4 X2NkY2xrX2ZyZXEgfHwKPiArCSAgICBwaXBlX2NvbmZpZy0+Ymlnam9pbmVyKSB7Cj4gKwkJaWYg KHBpcGVfY29uZmlnLT5kc2Muc2xpY2VfY291bnQgPCAyKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMo IkNhbm5vdCBzcGxpdCBzdHJlYW0gdG8gdXNlIDIgVkRTQyBpbnN0YW5jZXNcbiIpOwo+ICAJCQly ZXR1cm4gLUVJTlZBTDsKPiAgCQl9Cj4gKwo+ICsJCXBpcGVfY29uZmlnLT5kc2MuZHNjX3NwbGl0 ID0gdHJ1ZTsKPiAgCX0KPiAgCj4gIAlyZXQgPSBpbnRlbF9kc2NfY29tcHV0ZV9wYXJhbXMoJmRp Z19wb3J0LT5iYXNlLCBwaXBlX2NvbmZpZyk7Cj4gLS0gCj4gMi4yNC4wCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2ACEFC432C0 for ; Thu, 28 Nov 2019 19:24:41 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 019D821774 for ; Thu, 28 Nov 2019 19:24:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 019D821774 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 74C776E874; Thu, 28 Nov 2019 19:24:40 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 048616E874 for ; Thu, 28 Nov 2019 19:24:38 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Nov 2019 11:24:38 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,254,1571727600"; d="scan'208";a="217649342" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga001.fm.intel.com with SMTP; 28 Nov 2019 11:24:35 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 28 Nov 2019 21:24:35 +0200 Date: Thu, 28 Nov 2019 21:24:35 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191128192435.GA1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-5-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191114160522.9699-5-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH 05/11] drm/i915: Try to make bigjoiner work in atomic check, v3. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191128192435.rkmTYeapIQxP6pDwBxY-O-Q7L_Fqrtk8U9yduNz_roA@z> T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTZQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2hlbiB0aGUgY2xvY2sgaXMgaGlnaGVyIHRoYW4gdGhlIGRvdGNsb2NrLCB0 cnkgd2l0aCAyIHBpcGVzIGVuYWJsZWQuCj4gSWYgd2UgY2FuIGVuYWJsZSAyLCB0aGVuIHdlIHdp bGwgZ28gaW50byBiaWcgam9pbmVyIG1vZGUsIGFuZCBzdGVhbAo+IHRoZSBhZGphY2VudCBjcnRj Lgo+IAo+IFRoaXMgb25seSBsaW5rcyB0aGUgY3J0YydzIGluIHNvZnR3YXJlLCBubyBoYXJkd2Fy ZSBvciBwbGFuZQo+IHByb2dyYW1taW5nIGlzIGRvbmUgeWV0LiBCbG9icyBhcmUgYWxzbyBjb3Bp ZWQgZnJvbSB0aGUgbWFzdGVyJ3MKPiBjcnRjX3N0YXRlLCBzbyBpdCBkb2Vzbid0IGRlcGVuZCBh dCBjb21taXQgdGltZSBvbiB0aGUgb3RoZXIKPiBjcnRjX3N0YXRlLgo+IAo+IENoYW5nZXMgc2lu Y2UgdjE6Cj4gLSBSZW5hbWUgcGlwZSB0aW1pbmdzIHRvIHRyYW5zY29kZXIgdGltaW5ncywgYXMg dGhleSBhcmUgbm93IGRpZmZlcmVudC4KPiBDaGFuZ2VzIHNpbmNlIHYyOgo+IC0gUmV3b3JrIGJp Z2pvaW5lciBjaGVja3M7IGFsd2F5cyBkaXNhYmxlIHNsYXZlIHdoZW4gcmVjYWxjdWxhdGluZwo+ ICAgbWFzdGVyLiBObyBuZWVkIHRvIGhhdmUgYSBzZXBhcmF0ZSBiaWdqb2luZXIgcGFzcyBhbnkg bW9yZS4KPiAtIFVzZSBwaXBlX21vZGUgaW5zdGVhZCBvZiB0cmFuc2NvZGVyX21vZGUsIHRvIGNs ZWFuIHVwIHRoZSBjb2RlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgOSArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5oICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMTk4ICsrKysrKysrKysrKysrKyst LQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAgIDkg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgICAgICAgfCAgMjIg Ky0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyMDcgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gaW5k ZXggZmQwMDI2ZmMzNjE4Li5iNWMxN2Q4YzAyMDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiBAQCAtMjI5LDE0ICsyMjksMTUgQEAgdm9pZCBp bnRlbF9jcnRjX2ZyZWVfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIAlpbnRlbF9jcnRjX3B1dF9jb2xvcl9ibG9icyhjcnRjX3N0YXRlKTsKPiAgfQo+ICAK PiAtdm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK3ZvaWQgaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpmcm9tX2NydGNfc3RhdGUpCj4gIHsKPiAgCWRybV9wcm9wZXJ0eV9yZXBs YWNlX2Jsb2IoJmNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0LAo+IC0JCQkJICBjcnRjX3N0YXRl LT51YXBpLmRlZ2FtbWFfbHV0KTsKPiArCQkJCSAgZnJvbV9jcnRjX3N0YXRlLT51YXBpLmRlZ2Ft bWFfbHV0KTsKPiAgCWRybV9wcm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmh3Lmdh bW1hX2x1dCwKPiAtCQkJCSAgY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpOwo+ICsJCQkJICBm cm9tX2NydGNfc3RhdGUtPnVhcGkuZ2FtbWFfbHV0KTsKPiAgCWRybV9wcm9wZXJ0eV9yZXBsYWNl X2Jsb2IoJmNydGNfc3RhdGUtPmh3LmN0bSwKPiAtCQkJCSAgY3J0Y19zdGF0ZS0+dWFwaS5jdG0p Owo+ICsJCQkJICBmcm9tX2NydGNfc3RhdGUtPnVhcGkuY3RtKTsKPiAgfQo+ICAKPiAgLyoqCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5oCj4gaW5kZXggN2I0 OTYyMzQxOWJhLi5lNjQ0NzMyMjcyODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfYXRvbWljLmgKPiBAQCAtMzcsNyArMzcsOCBAQCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 Cj4gIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+ICB2b2lkIGludGVs X2NydGNfZnJlZV9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7 Cj4gLXZvaWQgaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKTsKPiArdm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmZyb21fY3J0Y19zdGF0ZSk7Cj4gIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICppbnRlbF9hdG9taWNfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g IHZvaWQgaW50ZWxfYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggN2E2ZGE4NTgyM2FmLi4yZGM2M2VmNWNhZjggMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC03NTc2LDkgKzc1NzYs MjUgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBpcGVf bW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcucGlwZV9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKnBpcGVfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcucGlwZV9tb2RlOwo+ICAJaW50IGNs b2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPiAgCj4gKwkqcGlwZV9tb2Rl ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gKwo+ICsJLyogQWRqdXN0IHBpcGVf bW9kZSBmb3IgYmlnam9pbmVyLCB3aXRoIGhhbGYgdGhlIGhvcml6b250YWwgbW9kZSAqLwo+ICsJ aWYgKHBpcGVfY29uZmlnLT5iaWdqb2luZXIpIHsKPiArCQlwaXBlX21vZGUtPmNydGNfY2xvY2sg Lz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaGRpc3BsYXkgLz0gMjsKPiArCQlwaXBlX21vZGUt PmNydGNfaGJsYW5rX3N0YXJ0IC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2hibGFua19lbmQg Lz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaHN5bmNfc3RhcnQgLz0gMjsKPiArCQlwaXBlX21v ZGUtPmNydGNfaHN5bmNfZW5kIC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2h0b3RhbCAvPSAy Owo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19oc2tldyAvPSAyOwo+ICsKPiArCQlwaXBlX2NvbmZpZy0+ cGlwZV9zcmNfdyAvPSAyOwo+ICsJfQo+ICsKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NCkgewo+ICAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEw Owo+ICAKPiBAQCAtNzYzNSw3ICs3NjUxLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJICogV2FQcnVuZU1vZGVXaXRo SW5jb3JyZWN0SHN5bmNPZmZzZXQ6Y3RnLGVsayxpbGssc25iLGl2Yix2bHYsaHN3Lgo+ICAJICov Cj4gIAlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPiA0IHx8IElTX0c0WChkZXZfcHJpdikpICYm Cj4gLQkJcGlwZV9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IHBpcGVfbW9kZS0+Y3J0Y19oZGlz cGxheSkKPiArCSAgICBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0 YXJ0ID09IHBpcGVfbW9kZS0+Y3J0Y19oZGlzcGxheSkKCkEgYml0IGluY29uc2lzdGVudCBub3cu Cgo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWludGVsX2NydGNfY29tcHV0ZV9waXhlbF9y YXRlKHBpcGVfY29uZmlnKTsKPiBAQCAtMTE5MjEsNyArMTE5MzcsNyBAQCBzdGF0aWMgYm9vbCBl bmNvZGVyc19jbG9uZWFibGUoY29uc3Qgc3RydWN0IGludGVsX2VuY29kZXIgKmEsCj4gIAkJCSAg Yi0+Y2xvbmVhYmxlICYgKDEgPDwgYS0+dHlwZSkpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBj aGVja19zaW5nbGVfZW5jb2Rlcl9jbG9uaW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiArc3RhdGljIGJvb2wgY2hlY2tfc2luZ2xlX2VuY29kZXJfY2xvbmluZyhzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCQkgc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gQEAgLTExOTMw LDcgKzExOTQ2LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfc2luZ2xlX2VuY29kZXJfY2xvbmluZyhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfbmV3X2Nv bm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsK PiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBjb25uZWN0 b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICAJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMg IT0gJmNydGMtPmJhc2UpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTIxNjcsNiArMTIxODMs NyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICAKPiAgCWlmIChtb2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+ aHcuZW5hYmxlICYmCj4gIAkgICAgZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2Nr ICYmCj4gKwkgICAgIWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSAmJgoKV2h5IGRvIHdlIG5l ZWQgdGhpcz8gV291bGRuJ3Qgd2UganVzdCBlbmQgdXAgc2hhcmluZyB0aGUgc2FtZSBEUExMCmZv ciBib3RoIHBpcGVzIGFueXdheT8KCj4gIAkgICAgIVdBUk5fT04oY3J0Y19zdGF0ZS0+c2hhcmVk X2RwbGwpKSB7Cj4gIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2Nr KGNydGMsIGNydGNfc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gQEAgLTEyNjI3LDE4ICsxMjY0NCwz MSBAQCBzdGF0aWMgYm9vbCBjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1pbnRlbF9j cnRjX2NvcHlfdWFwaV90b19od19zdGF0ZV9ub21vZGVzZXQoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK2ludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9k ZXNldChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQkgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0JaW50ZWxfY3J0Y19jb3B5X2Nv bG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+ICsJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmZyb21fY3J0Y19zdGF0ZSA9IGNydGNfc3RhdGU7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmJp Z2pvaW5lcl9zbGF2ZSkgewo+ICsJCWZyb21fY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRf bmV3X2NydGNfc3RhdGUoc3RhdGUsCj4gKwkJCQkJY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtl ZF9jcnRjKTsKPiArCj4gKwkJLyogTm8gbmVlZCB0byBjb3B5IHN0YXRlIGlmIHRoZSBtYXN0ZXIg c3RhdGUgaXMgdW5jaGFuZ2VkICovCj4gKwkJaWYgKCFmcm9tX2NydGNfc3RhdGUpCj4gKwkJCXJl dHVybjsKPiArCX0KPiArCj4gKwlpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoY3J0Y19zdGF0 ZSwgZnJvbV9jcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtaW50ZWxfY3J0 Y19jb3B5X3VhcGlfdG9faHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gK2ludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICB7Cj4gIAljcnRjX3N0YXRlLT5ody5lbmFibGUgPSBjcnRjX3N0YXRlLT51YXBpLmVu YWJsZTsKPiAgCWNydGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGNydGNfc3RhdGUtPnVhcGkuYWN0aXZl Owo+ICAJY3J0Y19zdGF0ZS0+aHcucGlwZV9tb2RlID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSA9IGNydGNfc3RhdGUtPnVhcGkuYWRqdXN0ZWRfbW9kZTsKPiAtCWludGVsX2NydGNfY29w eV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNldChjcnRjX3N0YXRlKTsKPiArCWludGVsX2NydGNf Y29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNldChzdGF0ZSwgY3J0Y19zdGF0ZSk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfY29weV9od190b191YXBpX3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IEBAIC0xMjY2MCw3ICsxMjY5MCw0OSBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvcHlfaHdfdG9fdWFwaV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWludGVs X2NydGNfcHJlcGFyZV9jbGVhcmVkX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICtjb3B5X2JpZ2pvaW5lcl9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpm cm9tX2NydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzYXZlZF9z dGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICsKPiArCXNhdmVkX3N0YXRlID0ga21lbWR1cChmcm9tX2NydGNf c3RhdGUsIHNpemVvZigqc2F2ZWRfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc2F2ZWRf c3RhdGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc2F2ZWRfc3RhdGUtPnVhcGkgPSBj cnRjX3N0YXRlLT51YXBpOwo+ICsJc2F2ZWRfc3RhdGUtPnNjYWxlcl9zdGF0ZSA9IGNydGNfc3Rh dGUtPnNjYWxlcl9zdGF0ZTsKPiArCXNhdmVkX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGNydGNfc3Rh dGUtPnNoYXJlZF9kcGxsOwo+ICsJc2F2ZWRfc3RhdGUtPmRwbGxfaHdfc3RhdGUgPSBjcnRjX3N0 YXRlLT5kcGxsX2h3X3N0YXRlOwo+ICsJc2F2ZWRfc3RhdGUtPmNyY19lbmFibGVkID0gY3J0Y19z dGF0ZS0+Y3JjX2VuYWJsZWQ7Cj4gKwo+ICsJaW50ZWxfY3J0Y19mcmVlX2h3X3N0YXRlKGNydGNf c3RhdGUpOwo+ICsJbWVtY3B5KGNydGNfc3RhdGUsIHNhdmVkX3N0YXRlLCBzaXplb2YoKmNydGNf c3RhdGUpKTsKPiArCWtmcmVlKHNhdmVkX3N0YXRlKTsKPiArCj4gKwkvKiBSZS1pbml0IGh3IHN0 YXRlICovCj4gKwltZW1zZXQoJmNydGNfc3RhdGUtPmh3LCAwLCBzaXplb2Yoc2F2ZWRfc3RhdGUt Pmh3KSk7Cj4gKwljcnRjX3N0YXRlLT5ody5lbmFibGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiArCWNydGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGZyb21fY3J0Y19zdGF0ZS0+aHcuYWN0 aXZlOwo+ICsJY3J0Y19zdGF0ZS0+aHcucGlwZV9tb2RlID0gZnJvbV9jcnRjX3N0YXRlLT5ody5w aXBlX21vZGU7Cj4gKwljcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlID0gZnJvbV9jcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsKPiArCS8qIFNvbWUgZml4dXBzICovCj4gKwljcnRj X3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZCA9IGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2No YW5nZWQ7Cj4gKwljcnRjX3N0YXRlLT51YXBpLmNvbm5lY3RvcnNfY2hhbmdlZCA9IGZyb21fY3J0 Y19zdGF0ZS0+dWFwaS5jb25uZWN0b3JzX2NoYW5nZWQ7Cj4gKwljcnRjX3N0YXRlLT51YXBpLmFj dGl2ZV9jaGFuZ2VkID0gZnJvbV9jcnRjX3N0YXRlLT51YXBpLmFjdGl2ZV9jaGFuZ2VkOwo+ICsJ Y3J0Y19zdGF0ZS0+bnYxMl9wbGFuZXMgPSBjcnRjX3N0YXRlLT5jOF9wbGFuZXMgPSBjcnRjX3N0 YXRlLT51cGRhdGVfcGxhbmVzID0gMDsKPiArCWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRf Y3J0YyA9IHRvX2ludGVsX2NydGMoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsJY3J0 Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlID0gdHJ1ZTsKPiArCWNydGNfc3RhdGUtPmNwdV90cmFu c2NvZGVyID0gKGVudW0gdHJhbnNjb2RlciljcnRjLT5waXBlOwo+ICsJY3J0Y19zdGF0ZS0+aGFz X2F1ZGlvID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQK PiAraW50ZWxfY3J0Y19wcmVwYXJlX2NsZWFyZWRfc3RhdGUoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gKwkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gIAkJdG9faTkx NShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gQEAgLTEyNzAzLDE2ICsxMjc3NSwxNiBA QCBpbnRlbF9jcnRjX3ByZXBhcmVfY2xlYXJlZF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgCWNydGNfc3RhdGUtPnVhcGkubW9kZS5wcml2YXRlX2ZsYWdzID0g MDsKPiAgCWNydGNfc3RhdGUtPnVhcGkuYWRqdXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzID0gMDsK PiAgCj4gLQlpbnRlbF9jcnRjX2NvcHlfdWFwaV90b19od19zdGF0ZShjcnRjX3N0YXRlKTsKPiAr CWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBjcnRjX3N0YXRlKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC1pbnRlbF9tb2Rlc2V0X3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAraW50ZWxf bW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAr CQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAgCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT51YXBpLmNydGM7Cj4gLQlzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+dWFwaS5zdGF0ZTsKPiAgCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4g QEAgLTEyNzU1LDcgKzEyODI3LDcgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWct PnBpcGVfc3JjX3csCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWctPnBpcGVfc3JjX2gpOwo+ICAK PiAtCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29u bmVjdG9yX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZz dGF0ZS0+YmFzZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29u bmVjdG9yX3N0YXRlLT5jcnRjICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI4 MDAsNyArMTI4NzIsNyBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCSAqIGFkanVzdCBpdCBhY2NvcmRpbmcgdG8gbGlt aXRhdGlvbnMgb3IgY29ubmVjdG9yIHByb3BlcnRpZXMsIGFuZCBhbHNvCj4gIAkgKiBhIGNoYW5j ZSB0byByZWplY3QgdGhlIG1vZGUgZW50aXJlbHkuCj4gIAkgKi8KPiAtCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7 Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubmVj dG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRj ICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI4NTMsOCArMTI5MjUsNiBAQCBp bnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiAgCSAqLwo+ICAJcGlwZV9jb25maWctPnVhcGkuYWRqdXN0ZWRfbW9kZSA9IHBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAtCS8qIHdpdGhvdXQgYmlnam9pbmVyLCBw aXBlX21vZGUgPT0gYWRqdXN0ZWRfbW9kZSAqLwo+IC0JcGlwZV9jb25maWctPmh3LnBpcGVfbW9k ZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gQEAgLTE0MDkxLDYgKzE0MTYxLDc0IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNr X2NydGNzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5lcihzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gKwkJ CQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc2xhdmVfY3J0Y19zdGF0ZSwgKm1hc3Rlcl9j cnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKnNsYXZlLCAqbWFzdGVyOwo+ICsKPiAr CS8qIHNsYXZlIGJlaW5nIGVuYWJsZWQsIGlzIG1hc3RlciBpcyBzdGlsbCBjbGFpbWluZyB0aGlz IGNydGM/ICovCj4gKwlpZiAob2xkX2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkgewo+ICsJ CXNsYXZlID0gY3J0YzsKPiArCQltYXN0ZXIgPSBvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xp bmtlZF9jcnRjOwo+ICsJCW1hc3Rlcl9jcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgbWFzdGVyKTsKPiArCQlpZiAoIW1hc3Rlcl9jcnRjX3N0YXRlIHx8 ICFuZWVkc19tb2Rlc2V0KG1hc3Rlcl9jcnRjX3N0YXRlKSkKPiArCQkJZ290byBjbGFpbWVkOwo+ ICsJfQo+ICsKPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlpZiAoMSArIGNydGMtPnBpcGUgPj0gSU5URUxfTlVNX1BJUEVTKGRldl9wcml2 KSkgewo+ICsJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBCaWcgam9pbmVyIGNvbmZpZ3Vy YXRpb24gcmVxdWlyZXMgIgo+ICsJCQkgICAgICAiQ1JUQyArIDEgdG8gYmUgdXNlZCwgZG9lc24n dCBleGlzdFxuIiwKPiArCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjLT5iYXNlLm5h bWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXNsYXZlID0gbmV3X2NydGNf c3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YyA9Cj4gKwkJaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2X3ByaXYsIGNydGMtPnBpcGUgKyAxKTsKPiArCXNsYXZlX2NydGNfc3RhdGUgPSBpbnRl bF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLCBzbGF2ZSk7Cj4gKwltYXN0ZXIg PSBjcnRjOwo+ICsJaWYgKElTX0VSUihzbGF2ZV9jcnRjX3N0YXRlKSkKPiArCQlyZXR1cm4gUFRS X0VSUihzbGF2ZV9jcnRjX3N0YXRlKTsKPiArCj4gKwkvKiBtYXN0ZXIgYmVpbmcgZW5hYmxlZCwg c2xhdmUgd2FzIGFscmVhZHkgY29uZmlndXJlZD8gKi8KPiArCWlmIChzbGF2ZV9jcnRjX3N0YXRl LT51YXBpLmVuYWJsZSkKPiArCQlnb3RvIGNsYWltZWQ7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi W0NSVEM6JWQ6JXNdIFVzZWQgYXMgc2xhdmUgZm9yIGJpZyBqb2luZXJcbiIsCj4gKwkJICAgICAg c2xhdmUtPmJhc2UuYmFzZS5pZCwgc2xhdmUtPmJhc2UubmFtZSk7Cj4gKwlyZXR1cm4gY29weV9i aWdqb2luZXJfY3J0Y19zdGF0ZShzbGF2ZV9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4g Kwo+ICtjbGFpbWVkOgo+ICsJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNdIFNsYXZlIGlzIGVu YWJsZWQgYXMgbm9ybWFsIENSVEMsIGJ1dCAiCj4gKwkJICAgICAgIltDUlRDOiVkOiVzXSBjbGFp bWluZyB0aGlzIENSVEMgZm9yIGJpZ2pvaW5lci5cbiIsCj4gKwkJICAgICAgc2xhdmUtPmJhc2Uu YmFzZS5pZCwgc2xhdmUtPmJhc2UubmFtZSwKPiArCQkgICAgICBtYXN0ZXItPmJhc2UuYmFzZS5p ZCwgbWFzdGVyLT5iYXNlLm5hbWUpOwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQga2lsbF9iaWdqb2luZXJfc2xhdmUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzbGF2ZV9jcnRjX3N0YXRlID0KPiAr CQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLAo+ICsJCQltYXN0ZXJf Y3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjKTsKCm5pdDogSSdkIGRvIHRoaXMgYXMK CnN0cnVjdCBmb28gKmJhcjsKCmJhciA9IHdoYXRldmVyKCk7CmlmIChJU19FUlIpCgkuLi4KCnRv IG1ha2UgaXQgc3RhbmQgb3V0IG1vcmUgc2luY2UgdGhhdCBmdW5jdGlvbiBoYXMgc29tZSByZWFs CnNpZGUgZWZmZWN0cy4KCj4gKwo+ICsJaWYgKElTX0VSUihzbGF2ZV9jcnRjX3N0YXRlKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihzbGF2ZV9jcnRjX3N0YXRlKTsKPiArCj4gKwlzbGF2ZV9jcnRjX3N0 YXRlLT5iaWdqb2luZXIgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyID0gZmFsc2U7Cj4g KwlzbGF2ZV9jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyX3NsYXZlID0gZmFsc2U7Cj4gKwlzbGF2ZV9jcnRjX3N0YXRlLT5iaWdqb2luZXJf bGlua2VkX2NydGMgPSBtYXN0ZXJfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjID0g TlVMTDsKPiArCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBzbGF2ZV9j cnRjX3N0YXRlKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfYXRv bWljX2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0Cj4gICAqIEBkZXY6IGRybSBkZXZpY2UK PiBAQCAtMTQxMjIsMjMgKzE0MjYwLDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7 Cj4gIAkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkgewo+ICAJCQkvKiBMaWdo dCBjb3B5ICovCj4gLQkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlX25vbW9kZXNl dChuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRl X25vbW9kZXNldChzdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAKPiAgCQkJY29udGludWU7Cj4g IAkJfQo+ICAKPiAtCQlpZiAoIW5ld19jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSkgewo+IC0JCQlp bnRlbF9jcnRjX2NvcHlfdWFwaV90b19od19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJLyog S2lsbCBvbGQgYmlnam9pbmVyIGxpbmssIHdlIG1heSByZS1lc3RhYmxpc2ggYWZ0ZXJ3YXJkcyAq Lwo+ICsJCWlmIChvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyICYmICFvbGRfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyX3NsYXZlKSB7Cj4gKwkJCXJldCA9IGtpbGxfYmlnam9pbmVyX3NsYXZlKHN0YXRl LCBuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlnb3RvIGZhaWw7Cj4gKwkJ fQo+ICAKPiAtCQkJYW55X21zID0gdHJ1ZTsKPiArCQlpZiAoIW5ld19jcnRjX3N0YXRlLT51YXBp LmVuYWJsZSkgewo+ICsJCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpIHsK PiArCQkJCWludGVsX2NydGNfY29weV91YXBpX3RvX2h3X3N0YXRlKHN0YXRlLCBuZXdfY3J0Y19z dGF0ZSk7Cj4gKwkJCQlhbnlfbXMgPSB0cnVlOwo+ICsJCQl9Cj4gIAkJCWNvbnRpbnVlOwo+ICAJ CX0KCkhvdyBkb2VzIHRoaXMgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzbGF2ZSB1YXBpLmVu YWJsZSBnZXRzCmVuYWJsZWQgYnV0IHRoZSBtYXN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHN0YXRl IHlldD8KCj4gIAo+IC0JCXJldCA9IGludGVsX2NydGNfcHJlcGFyZV9jbGVhcmVkX3N0YXRlKG5l d19jcnRjX3N0YXRlKTsKPiArCQlyZXQgPSBpbnRlbF9jcnRjX3ByZXBhcmVfY2xlYXJlZF9zdGF0 ZShzdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZmFpbDsK PiAgCj4gLQkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhuZXdfY3J0Y19zdGF0ZSk7 Cj4gKwkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdGF0ZSwgbmV3X2NydGNfc3Rh dGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZmFpbDsKPiAgCj4gQEAgLTE0MTQ2LDYgKzE0 MjkyLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAo+ICAJCWlmIChuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKPiAgCQkJ YW55X21zID0gdHJ1ZTsKPiArCj4gKwkJcmV0ID0gaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5l cihzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsKPiArCQlpZiAo cmV0KQo+ICsJCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gIAo+ICAJaWYgKGFueV9tcyAmJiAhY2hlY2tf ZGlnaXRhbF9wb3J0X2NvbmZsaWN0cyhzdGF0ZSkpIHsKPiBAQCAtMTQzNTAsNyArMTQ1MDAsOSBA QCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCj4gIAljb21taXRfcGlwZV9jb25maWcoc3RhdGUsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0 Y19zdGF0ZSk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChu ZXdfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKQo+ICsJCXsvKiBOb3Qgc3VwcG9ydGVkIHlldCAqL30K PiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQlza2xfdXBkYXRlX3Bs YW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPiAgCWVsc2UKPiAgCQlpOXh4X3VwZGF0ZV9wbGFu ZXNfb25fY3J0YyhzdGF0ZSwgY3J0Yyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBpbmRleCA3ZjQ2YzE2NDZkM2YuLmNmMmVj ZmExNzQxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCj4gQEAgLTEwNDQsNiArMTA0NCwxNSBAQCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSB7Cj4gIAkvKiBlbmFibGUgcGlwZSBjc2M/ICovCj4gIAlib29sIGNzY19lbmFi bGU7Cj4gIAo+ICsJLyogZW5hYmxlIHBpcGUgYmlnIGpvaW5lcj8gKi8KPiArCWJvb2wgYmlnam9p bmVyOwo+ICsKPiArCS8qIGJpZyBqb2luZXIgc2xhdmUgY3J0Yz8gKi8KPiArCWJvb2wgYmlnam9p bmVyX3NsYXZlOwo+ICsKPiArCS8qIGxpbmtlZCBjcnRjIGZvciBiaWdqb2luZXIsIGVpdGhlciBz bGF2ZSBvciBtYXN0ZXIgKi8KPiArCXN0cnVjdCBpbnRlbF9jcnRjICpiaWdqb2luZXJfbGlua2Vk X2NydGM7Cj4gKwo+ICAJLyogRGlzcGxheSBTdHJlYW0gY29tcHJlc3Npb24gc3RhdGUgKi8KPiAg CXN0cnVjdCB7Cj4gIAkJYm9vbCBjb21wcmVzc2lvbl9lbmFibGU7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGluZGV4IDliN2RmOGU4NWVhMi4uNTRmZGU0YzRjNGRk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yMTQ3 LDYgKzIxNDcsMTUgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gaW50 ZWxfZHAtPmNvbW1vbl9yYXRlc1tsaW1pdHMtPm1heF9jbG9ja107Cj4gIAlwaXBlX2NvbmZpZy0+ bGFuZV9jb3VudCA9IGxpbWl0cy0+bWF4X2xhbmVfY291bnQ7Cj4gIAo+ICsJaWYgKGFkanVzdGVk X21vZGUtPmNydGNfY2xvY2sgPiBpbnRlbF9kcF9tYXhfZG90Y2xvY2soaW50ZWxfZHAsIGZhbHNl KSkgewo+ICsJCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID4gaW50ZWxfZHBfbWF4X2Rv dGNsb2NrKGludGVsX2RwLCB0cnVlKSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJDbG9jayByYXRl IHRvbyBoaWdoIGZvciBiaWcgam9pbmVyXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJ fQo+ICsJCXBpcGVfY29uZmlnLT5iaWdqb2luZXIgPSB0cnVlOwo+ICsJCURSTV9ERUJVR19LTVMo IlVzaW5nIGJpZ2pvaW5lciBjb25maWd1cmF0aW9uXG4iKTsKPiArCX0KPiArCj4gIAlpZiAoaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ICAJCXBpcGVfY29uZmlnLT5kc2MuY29tcHJlc3Nl ZF9icHAgPQo+ICAJCQltaW5fdCh1MTYsIGRybV9lZHBfZHNjX3Npbmtfb3V0cHV0X2JwcChpbnRl bF9kcC0+ZHNjX2RwY2QpID4+IDQsCj4gQEAgLTIxNjQsMTIgKzIxNzMsMTIgQEAgc3RhdGljIGlu dCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkJCQkgICAgYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiAgCQkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNfaGRp c3BsYXksCj4gLQkJCQkJCSAgICBmYWxzZSk7Cj4gKwkJCQkJCSAgICBwaXBlX2NvbmZpZy0+Ymln am9pbmVyKTsKPiAgCQlkc2NfZHBfc2xpY2VfY291bnQgPQo+ICAJCQlpbnRlbF9kcF9kc2NfZ2V0 X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkgICAgIGFkanVzdGVkX21vZGUtPmNydGNf Y2xvY2ssCj4gIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiAtCQkJ CQkJICAgICBmYWxzZSk7Cj4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmJpZ2pvaW5lcik7Cj4g IAkJaWYgKCFkc2NfbWF4X291dHB1dF9icHAgfHwgIWRzY19kcF9zbGljZV9jb3VudCkgewo+ICAJ CQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3VudCBub3Qgc3VwcG9ydGVk XG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTIxODQsMTMgKzIxOTMsMTQgQEAgc3Rh dGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiAgCSAqIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBDZGNsb2NrIGFuZCBpZiBz bGljZSBjb3VudCBpcyBldmVuCj4gIAkgKiB0aGVuIHdlIG5lZWQgdG8gdXNlIDIgVkRTQyBpbnN0 YW5jZXMuCj4gIAkgKi8KPiAtCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID4gZGV2X3By aXYtPm1heF9jZGNsa19mcmVxKSB7Cj4gLQkJaWYgKHBpcGVfY29uZmlnLT5kc2Muc2xpY2VfY291 bnQgPiAxKSB7Cj4gLQkJCXBpcGVfY29uZmlnLT5kc2MuZHNjX3NwbGl0ID0gdHJ1ZTsKPiAtCQl9 IGVsc2Ugewo+ICsJaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBkZXZfcHJpdi0+bWF4 X2NkY2xrX2ZyZXEgfHwKPiArCSAgICBwaXBlX2NvbmZpZy0+Ymlnam9pbmVyKSB7Cj4gKwkJaWYg KHBpcGVfY29uZmlnLT5kc2Muc2xpY2VfY291bnQgPCAyKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMo IkNhbm5vdCBzcGxpdCBzdHJlYW0gdG8gdXNlIDIgVkRTQyBpbnN0YW5jZXNcbiIpOwo+ICAJCQly ZXR1cm4gLUVJTlZBTDsKPiAgCQl9Cj4gKwo+ICsJCXBpcGVfY29uZmlnLT5kc2MuZHNjX3NwbGl0 ID0gdHJ1ZTsKPiAgCX0KPiAgCj4gIAlyZXQgPSBpbnRlbF9kc2NfY29tcHV0ZV9wYXJhbXMoJmRp Z19wb3J0LT5iYXNlLCBwaXBlX2NvbmZpZyk7Cj4gLS0gCj4gMi4yNC4wCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==