From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 15/24] drm/i915: Try to make bigjoiner work in atomic check, v2. Date: Tue, 8 Oct 2019 22:40:22 +0300 Message-ID: <20191008194022.GW1208@intel.com> References: <20191004113514.17064-1-maarten.lankhorst@linux.intel.com> <20191004113514.17064-16-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 8C33689850 for ; Tue, 8 Oct 2019 19:40:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191004113514.17064-16-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 T24gRnJpLCBPY3QgMDQsIDIwMTkgYXQgMDE6MzU6MDVQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2hlbiB0aGUgY2xvY2sgaXMgaGlnaGVyIHRoYW4gdGhlIGRvdGNsb2NrLCB0 cnkgd2l0aCAyIHBpcGVzIGVuYWJsZWQuCj4gSWYgd2UgY2FuIGVuYWJsZSAyLCB0aGVuIHdlIHdp bGwgZ28gaW50byBiaWcgam9pbmVyIG1vZGUsIGFuZCBzdGVhbAo+IHRoZSBhZGphY2VudCBjcnRj Lgo+IAo+IFRoaXMgb25seSBsaW5rcyB0aGUgY3J0YydzIGluIHNvZnR3YXJlLCBubyBoYXJkd2Fy ZSBvciBwbGFuZQo+IHByb2dyYW1taW5nIGlzIGRvbmUgeWV0LiBCbG9icyBhcmUgYWxzbyBjb3Bp ZWQgZnJvbSB0aGUgbWFzdGVyJ3MKPiBjcnRjX3N0YXRlLCBzbyBpdCBkb2Vzbid0IGRlcGVuZCBh dCBjb21taXQgdGltZSBvbiB0aGUgb3RoZXIKPiBjcnRjX3N0YXRlLgo+IAo+IENoYW5nZXMgc2lu Y2UgdjE6Cj4gLSBSZW5hbWUgcGlwZSB0aW1pbmdzIHRvIHRyYW5zY29kZXIgdGltaW5ncywgYXMg dGhleSBhcmUgbm93IGRpZmZlcmVudC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jICAgfCAgMTUgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuaCAgIHwgICAzICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDIxOCArKysrKysrKysr KysrKysrLS0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAg IHwgIDExICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyAgICAg ICB8ICAyNSArLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRpb25zKCspLCAzOCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWlj LmMKPiBpbmRleCA0NzgzZDdmZjRmY2YuLmE1YjExYmQ5ZGE2OCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+IEBAIC0yMjgsMjUgKzIyOCwyNiBA QCB2b2lkIGludGVsX2NydGNfZnJlZV9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgCWludGVsX2NydGNfcHV0X2NvbG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+ ICB9Cj4gIAo+IC12b2lkIGludGVsX2NydGNfY29weV9jb2xvcl9ibG9icyhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArdm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxv YnMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmZyb21fY3J0Y19zdGF0ZSkKPiAgewo+ICAJaW50ZWxfY3J0 Y19wdXRfY29sb3JfYmxvYnMoY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JaWYgKGNydGNfc3RhdGUtPnVh cGkuZGVnYW1tYV9sdXQpCj4gKwlpZiAoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmRlZ2FtbWFfbHV0 KQo+ICAJCWNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0ID0KPiAtCQkJZHJtX3Byb3BlcnR5X2Js b2JfZ2V0KGNydGNfc3RhdGUtPnVhcGkuZGVnYW1tYV9sdXQpOwo+ICsJCQlkcm1fcHJvcGVydHlf YmxvYl9nZXQoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmRlZ2FtbWFfbHV0KTsKPiAgCWVsc2UKPiAg CQljcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dCA9IE5VTEw7Cj4gIAo+IC0JaWYgKGNydGNfc3Rh dGUtPnVhcGkuZ2FtbWFfbHV0KQo+ICsJaWYgKGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9s dXQpCj4gIAkJY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ID0KPiAtCQkJZHJtX3Byb3BlcnR5X2Js b2JfZ2V0KGNydGNfc3RhdGUtPnVhcGkuZ2FtbWFfbHV0KTsKPiArCQkJZHJtX3Byb3BlcnR5X2Js b2JfZ2V0KGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpOwo+ICAJZWxzZQo+ICAJCWNy dGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IE5VTEw7Cj4gIAo+IC0JaWYgKGNydGNfc3RhdGUtPnVh cGkuY3RtKQo+ICsJaWYgKGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5jdG0pCj4gIAkJY3J0Y19zdGF0 ZS0+aHcuY3RtID0KPiAtCQkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KGNydGNfc3RhdGUtPnVhcGku Y3RtKTsKPiArCQkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5j dG0pOwo+ICAJZWxzZQo+ICAJCWNydGNfc3RhdGUtPmh3LmN0bSA9IE5VTEw7Cj4gIH0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmgKPiBpbmRleCA0MmJlOTFl MDc3MmEuLjhkYTg0ZDY0YWEwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2F0b21pYy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hdG9taWMuaAo+IEBAIC0zNiw3ICszNiw4IEBAIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAg dm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ CQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4gIHZvaWQgaW50ZWxfY3J0 Y19mcmVlX2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAt dm9pZCBpbnRlbF9jcnRjX2NvcHlfY29sb3JfYmxvYnMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICt2b2lkIGludGVsX2NydGNfY29weV9jb2xvcl9ibG9icyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqZnJvbV9jcnRjX3N0YXRlKTsKPiAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KmludGVsX2F0b21pY19zdGF0ZV9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9p ZCBpbnRlbF9hdG9taWNfc3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMK PiBpbmRleCBjYWFiOGNmZGRjYmQuLmMyYjNjN2I2ZjM5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEyMyw3ICsxMjMsNyBAQCBz dGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyICppZmIsCj4gIAkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g IAkJCQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCk7Cj4gLXN0YXRpYyB2b2lk IGludGVsX3NldF9waXBlX3RpbWluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpOwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgc3RhdGljIHZvaWQg aW50ZWxfc2V0X3BpcGVfc3JjX3NpemUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpOwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJCSBjb25zdCBz dHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiBAQCAtNjMwOCw3ICs2MzA4LDcgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAo+ICAJaWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIocGlwZV9jb25maWcpKQo+ ICAJCWludGVsX2RwX3NldF9tX24ocGlwZV9jb25maWcsIE0xX04xKTsKPiAgCj4gLQlpbnRlbF9z ZXRfcGlwZV90aW1pbmdzKHBpcGVfY29uZmlnKTsKPiArCWludGVsX3NldF90cmFuc2NvZGVyX3Rp bWluZ3MocGlwZV9jb25maWcpOwo+ICAJaW50ZWxfc2V0X3BpcGVfc3JjX3NpemUocGlwZV9jb25m aWcpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gQEAgLTY0 MzUsNyArNjQzNSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCWludGVsX2RwX3NldF9tX24ocGlwZV9j b25maWcsIE0xX04xKTsKPiAgCj4gIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2Nv ZGVyKSkKPiAtCQlpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHBpcGVfY29uZmlnKTsKPiArCQlpbnRl bF9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpbnRlbF9zZXRf cGlwZV9zcmNfc2l6ZShwaXBlX2NvbmZpZyk7Cj4gIAo+IEBAIC02ODM4LDcgKzY4MzgsNyBAQCBz dGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKPiAgCWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29u ZmlnKSkKPiAgCQlpbnRlbF9kcF9zZXRfbV9uKHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4gIAo+IC0J aW50ZWxfc2V0X3BpcGVfdGltaW5ncyhwaXBlX2NvbmZpZyk7Cj4gKwlpbnRlbF9zZXRfdHJhbnNj b2Rlcl90aW1pbmdzKHBpcGVfY29uZmlnKTsKPiAgCWludGVsX3NldF9waXBlX3NyY19zaXplKHBp cGVfY29uZmlnKTsKPiAgCj4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYgcGlwZSA9 PSBQSVBFX0IpIHsKPiBAQCAtNjkwNiw3ICs2OTA2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRj X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAlpZiAoaW50 ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihwaXBlX2NvbmZpZykpCj4gIAkJaW50ZWxfZHBfc2V0X21f bihwaXBlX2NvbmZpZywgTTFfTjEpOwo+ICAKPiAtCWludGVsX3NldF9waXBlX3RpbWluZ3MocGlw ZV9jb25maWcpOwo+ICsJaW50ZWxfc2V0X3RyYW5zY29kZXJfdGltaW5ncyhwaXBlX2NvbmZpZyk7 Cj4gIAlpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaTl4eF9z ZXRfcGlwZWNvbmYocGlwZV9jb25maWcpOwo+IEBAIC03Mzk2LDcgKzczOTYsNyBAQCBzdGF0aWMg aW50IGludGVsX2NydGNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRl dik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZw aXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50 IGNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPiAgCj4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPiBAQCAtNzQxMyw2ICs3NDEzLDI1IEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CQl9Cj4gIAl9Cj4gIAo+ICsJLyoKPiArCSAqIGNvcHkgaHcgbW9kZSB0byB0cmFuc2NvZGVyIG1v ZGUuCj4gKwkgKiBUaGlzIG1hdHRlcnMgbW9zdGx5IGZvciBiaWcgam9pbmVyLCB3aGljaCBzcGxp dHMgdGhlIG1vZGUgaW4gaGFsZi4KPiArCSAqLwo+ICsJcGlwZV9jb25maWctPmh3LnRyYW5zY29k ZXJfbW9kZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsJaWYgKHBpcGVfY29u ZmlnLT5iaWdqb2luZXIpIHsKPiArCQkvKiBNYWtlIHN1cmUgdGhlIGNydGMgY29uZmlnIGlzIGhh bHZlZCBob3Jpem9udGFsbHkgKi8KPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrIC89IDI7 Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSAvPSAyOwo+ICsJCWFkanVzdGVkX21v ZGUtPmNydGNfaGJsYW5rX3N0YXJ0IC89IDI7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oYmxh bmtfZW5kIC89IDI7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19zdGFydCAvPSAyOwo+ ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaHN5bmNfZW5kIC89IDI7Cj4gKwkJYWRqdXN0ZWRfbW9k ZS0+Y3J0Y19odG90YWwgLz0gMjsKPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hza2V3IC89IDI7 Cj4gKwo+ICsJCXBpcGVfY29uZmlnLT5waXBlX3NyY193IC89IDI7Cj4gKwl9CgpIbW0uIE9oIHJp Z2h0LCB3ZSBzdGlsbCBuZWVkIHRvIGtlZXAgdGhlIGZ1bGwgdGltaW5ncyBzaW5jZQp0aGUgam9p bmVyIGlzIGJldHdlZW4gdGhlIHBpcGUgYW5kIHRyYW5zY29kZXIgOi8KCldlIHByb2JhYmx5IG5l ZWQgYSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIG5vbi1oYWx2ZWQgaG9yaXoKdGltaW5ncyBhcmUg ZXZlbi4KCmhza2V3IHdlIGRvbid0IHVzZSBzbyBkb24ndCBuZWVkIHRvIGZyb2IgdGhhdC4KCkkg d29uZGVyIGlmIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgdGhhdCBuZWVkIHRoZSBmdWxsIHZhbHVl cy4gUXVpY2sKZ2xhbmNlIG9ubHkgcmVhbGx5IHJldmVhbHMgZW5jb2RlciBhbmQgYXVkaW8gY29k ZS4gTW9zdCBlbmNvZGVyIGNvZGUKSSBndWVzcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgc2luY2Ug Ymlnam9pbmVyIGlzIERQIG9ubHkuIEFuZCB0aGUgRFAKY29kZSBpdHNlbGYgbG9va3MgZmluZSBz aW5jZSB0aGlzIGhhbHZpbmcgaGFwcGVucyBhZnRlcgouY29tcHV0ZV9jb25mb2coKS4gQW5kIHRo ZSBhdWRpbyBjb2RlIG9ubHkgdXNlcyBjcnRjX2Nsb2NrIG9uIEhETUkKKG5vdCBzdXJlIGl0IHNo b3VsZCB1c2UgaXQgdGhlcmUgZWl0aGVyLCBidXQgdGhhdCdzIGEgc2VwYXJhdGUgaXNzdWUpLgoK PiArCj4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA+IGNsb2NrX2xpbWl0KSB7Cj4g IAkJRFJNX0RFQlVHX0tNUygicmVxdWVzdGVkIHBpeGVsIGNsb2NrICglZCBrSHopIHRvbyBoaWdo IChtYXg6ICVkIGtIeiwgZG91YmxlIHdpZGU6ICVzKVxuIiwKPiAgCQkJICAgICAgYWRqdXN0ZWRf bW9kZS0+Y3J0Y19jbG9jaywgY2xvY2tfbGltaXQsCj4gQEAgLTgxMTQsMTMgKzgxMzMsMTMgQEAg c3RhdGljIHZvaWQgaTh4eF9jb21wdXRlX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBkcGxsOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zZXRfdHJhbnNjb2Rlcl90aW1p bmdzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJZW51bSB0 cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcudHJhbnNjb2Rlcl9tb2RlOwo+ICAJdTMy IGNydGNfdnRvdGFsLCBjcnRjX3ZibGFua19lbmQ7Cj4gIAlpbnQgdnN5bmNzaGlmdCA9IDA7Cj4g IAo+IEBAIC04MjA1LDggKzgyMjQsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9waXBlX2lzX2ludGVy bGFjZWQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJcmV0 dXJuIEk5MTVfUkVBRChQSVBFQ09ORihjcHVfdHJhbnNjb2RlcikpICYgUElQRUNPTkZfSU5URVJM QUNFX01BU0s7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2dldF9waXBlX3RpbWluZ3Mo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gLQkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpCj4gK3N0YXRpYyB2b2lkIGludGVsX2dldF90cmFuc2NvZGVyX3RpbWlu Z3Moc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZykKCk1pc3NpbmcgdGhlIHRyYW5zY29kZXJfbW9kZSByZWFkb3V0ICsg YWRqdXN0ZWRfbW9kZS8yIGhlcmU/Cgo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gQEAgLTg4MDksNyArODgyOCw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0 X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA0KQo+ICAJCXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVD T05GX0RPVUJMRV9XSURFOwo+ICAKPiAtCWludGVsX2dldF9waXBlX3RpbWluZ3MoY3J0YywgcGlw ZV9jb25maWcpOwo+ICsJaW50ZWxfZ2V0X3RyYW5zY29kZXJfdGltaW5ncyhjcnRjLCBwaXBlX2Nv bmZpZyk7Cj4gIAlpbnRlbF9nZXRfcGlwZV9zcmNfc2l6ZShjcnRjLCBwaXBlX2NvbmZpZyk7Cj4g IAo+ICAJaTl4eF9nZXRfcGZpdF9jb25maWcoY3J0YywgcGlwZV9jb25maWcpOwo+IEBAIC0xMDA0 NSw3ICsxMDA2NCw3IEBAIHN0YXRpYyBib29sIGlyb25sYWtlX2dldF9waXBlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9 IDE7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhjcnRjLCBwaXBlX2NvbmZp Zyk7Cj4gKwlpbnRlbF9nZXRfdHJhbnNjb2Rlcl90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsK PiAgCWludGVsX2dldF9waXBlX3NyY19zaXplKGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAlp cm9ubGFrZV9nZXRfcGZpdF9jb25maWcoY3J0YywgcGlwZV9jb25maWcpOwo+IEBAIC0xMDQ0NSw3 ICsxMDQ2NCw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShwaXBlX2NvbmZpZy0+ Y3B1X3RyYW5zY29kZXIpIHx8Cj4gIAkgICAgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ ICAJCWhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKGNydGMsIHBpcGVfY29uZmlnKTsKPiAtCQlp bnRlbF9nZXRfcGlwZV90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPiArCQlpbnRlbF9nZXRf dHJhbnNjb2Rlcl90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCX0KPiAgCj4gIAlpbnRl bF9nZXRfcGlwZV9zcmNfc2l6ZShjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTExODE0LDYgKzEx ODMzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIAlpZiAobW9kZV9jaGFuZ2VkICYmIGNydGNfc3Rh dGUtPmh3LmVuYWJsZSAmJgo+ICAJICAgIGRldl9wcml2LT5kaXNwbGF5LmNydGNfY29tcHV0ZV9j bG9jayAmJgo+ICsJICAgICFjcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUgJiYKPiAgCSAgICAh V0FSTl9PTihjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCkpIHsKPiAgCQlyZXQgPSBkZXZfcHJpdi0+ ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2soY3J0YywgY3J0Y19zdGF0ZSk7Cj4gIAkJaWYgKHJl dCkKPiBAQCAtMTIyNzgsNyArMTIyOTgsNyBAQCBzdGF0aWMgdm9pZCBjb3B5X3VhcGlfdG9faHdf c3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAljcnRjX3N0YXRl LT5ody5hY3RpdmUgPSBjcnRjX3N0YXRlLT51YXBpLmFjdGl2ZTsKPiAgCWNydGNfc3RhdGUtPmh3 Lm1vZGUgPSBjcnRjX3N0YXRlLT51YXBpLm1vZGU7Cj4gIAljcnRjX3N0YXRlLT5ody5hZGp1c3Rl ZF9tb2RlID0gY3J0Y19zdGF0ZS0+dWFwaS5hZGp1c3RlZF9tb2RlOwo+IC0JaW50ZWxfY3J0Y19j b3B5X2NvbG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+ICsJaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Js b2JzKGNydGNfc3RhdGUsIGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBjb3B5 X2h3X3RvX3VhcGlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g QEAgLTEyMjg2LDcgKzEyMzA2LDQ4IEBAIHN0YXRpYyB2b2lkIGNvcHlfaHdfdG9fdWFwaV9zdGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCWNydGNfc3RhdGUtPnVh cGkuZW5hYmxlID0gY3J0Y19zdGF0ZS0+aHcuZW5hYmxlOwo+ICAJY3J0Y19zdGF0ZS0+dWFwaS5h Y3RpdmUgPSBjcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gIAljcnRjX3N0YXRlLT51YXBpLm1vZGUg PSBjcnRjX3N0YXRlLT5ody5tb2RlOwo+IC0JY3J0Y19zdGF0ZS0+dWFwaS5hZGp1c3RlZF9tb2Rl ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiArCWNydGNfc3RhdGUtPnVhcGkuYWRq dXN0ZWRfbW9kZSA9IGNydGNfc3RhdGUtPmh3LnRyYW5zY29kZXJfbW9kZTsKPiArfQo+ICsKPiAr c3RhdGljIGludAo+ICtjb3B5X2JpZ2pvaW5lcl9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpmcm9tX2NydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzYXZl ZF9zdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICsKPiArCXNhdmVkX3N0YXRlID0ga21lbWR1cChmcm9tX2Ny dGNfc3RhdGUsIHNpemVvZigqc2F2ZWRfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc2F2 ZWRfc3RhdGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc2F2ZWRfc3RhdGUtPnVhcGkg PSBjcnRjX3N0YXRlLT51YXBpOwo+ICsJc2F2ZWRfc3RhdGUtPnNjYWxlcl9zdGF0ZSA9IGNydGNf c3RhdGUtPnNjYWxlcl9zdGF0ZTsKPiArCXNhdmVkX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGNydGNf c3RhdGUtPnNoYXJlZF9kcGxsOwo+ICsJc2F2ZWRfc3RhdGUtPmRwbGxfaHdfc3RhdGUgPSBjcnRj X3N0YXRlLT5kcGxsX2h3X3N0YXRlOwo+ICsJc2F2ZWRfc3RhdGUtPmNyY19lbmFibGVkID0gY3J0 Y19zdGF0ZS0+Y3JjX2VuYWJsZWQ7Cj4gKwo+ICsJaW50ZWxfY3J0Y19mcmVlX2h3X3N0YXRlKGNy dGNfc3RhdGUpOwo+ICsJbWVtY3B5KGNydGNfc3RhdGUsIHNhdmVkX3N0YXRlLCBzaXplb2YoKmNy dGNfc3RhdGUpKTsKPiArCWtmcmVlKHNhdmVkX3N0YXRlKTsKPiArCj4gKwkvKiBSZS1pbml0IGh3 IHN0YXRlICovCj4gKwltZW1zZXQoJmNydGNfc3RhdGUtPmh3LCAwLCBzaXplb2Yoc2F2ZWRfc3Rh dGUtPmh3KSk7Cj4gKwljcnRjX3N0YXRlLT5ody5lbmFibGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3 LmVuYWJsZTsKPiArCWNydGNfc3RhdGUtPmh3LmFjdGl2ZSA9IGZyb21fY3J0Y19zdGF0ZS0+aHcu YWN0aXZlOwo+ICsJY3J0Y19zdGF0ZS0+aHcubW9kZSA9IGZyb21fY3J0Y19zdGF0ZS0+aHcubW9k ZTsKPiArCWNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7Cj4gKwo+ICsJLyogU29tZSBmaXh1cHMgKi8KPiArCWNydGNfc3RhdGUt PnVhcGkubW9kZV9jaGFuZ2VkID0gZnJvbV9jcnRjX3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZDsK PiArCWNydGNfc3RhdGUtPnVhcGkuY29ubmVjdG9yc19jaGFuZ2VkID0gZnJvbV9jcnRjX3N0YXRl LT51YXBpLmNvbm5lY3RvcnNfY2hhbmdlZDsKPiArCWNydGNfc3RhdGUtPnVhcGkuYWN0aXZlX2No YW5nZWQgPSBmcm9tX2NydGNfc3RhdGUtPnVhcGkuYWN0aXZlX2NoYW5nZWQ7Cj4gKwljcnRjX3N0 YXRlLT5udjEyX3BsYW5lcyA9IGNydGNfc3RhdGUtPmM4X3BsYW5lcyA9IGNydGNfc3RhdGUtPnVw ZGF0ZV9wbGFuZXMgPSAwOwo+ICsJY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX2xpbmtlZF9jcnRjID0g dG9faW50ZWxfY3J0Yyhmcm9tX2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwljcnRjX3N0YXRl LT5iaWdqb2luZXJfc2xhdmUgPSB0cnVlOwo+ICsJY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIg PSAoZW51bSB0cmFuc2NvZGVyKWNydGMtPnBpcGU7Cj4gKwljcnRjX3N0YXRlLT5oYXNfYXVkaW8g PSBmYWxzZTsKPiArCj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IEBAIC0x MjQ1OSw3ICsxMjUyMCw3IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICAJCSAgICAgIGJhc2VfYnBwLCBwaXBlX2NvbmZp Zy0+cGlwZV9icHAsIHBpcGVfY29uZmlnLT5kaXRoZXIpOwo+ICAKPiAgCS8qIHVhcGkgd2FudHMg YSBjb3B5IG9mIHRoZSBhZGp1c3RlZF9tb2RlIGZvciB2YmxhbmsgYm9va2tlZXBpbmcgKi8KPiAt CXBpcGVfY29uZmlnLT51YXBpLmFkanVzdGVkX21vZGUgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZTsKPiArCXBpcGVfY29uZmlnLT51YXBpLmFkanVzdGVkX21vZGUgPSBwaXBlX2NvbmZp Zy0+aHcudHJhbnNjb2Rlcl9tb2RlOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTEzNjEy LDYgKzEzNjczLDEwOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVja19jcnRjcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtz dGF0aWMgaW50IGludGVsX2F0b21pY19jaGVja19iaWdqb2luZXIoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlLCAqc2xhdmVfY3J0Y19zdGF0ZSwgKm1h c3Rlcl9jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMsICpzbGF2ZSwgKm1h c3RlcjsKPiArCWludCBpLCByZXQgPSAwOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgMTEpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJCSAgICBuZXdfY3J0 Y19zdGF0ZSwgaSkgewo+ICsJCWlmICghb2xkX2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkK Ckkga2VlcCB0aGlua2luZyB0aGF0IHBvaW50cyBhdCB0aGUgc2xhdmUuICJpc19iaWdqb2luZXJf c2xhdmUiIHdvdWxkIGJlCmEgbGVzcyBjb25mdXNpbmcgbmFtZSBwZXJoYXBzLgoKPiArCQkJY29u dGludWU7Cj4gKwo+ICsJCWlmIChjcnRjLT5waXBlID09IFBJUEVfQSkgewo+ICsJCQlEUk1fRVJS T1IoIkJpZ2pvaW5lciBzbGF2ZSBvbiBwaXBlIEE/XG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJfQoKRGVhZCBjb2RlPwoKPiArCj4gKwkJLyogY3J0YyBzdGF5aW5nIGluIHNsYXZlIG1v ZGU/ICovCj4gKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCj4gKwkJCWNvbnRp bnVlOwo+ICsKPiArCQlpZiAobmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgfHwgbmV3X2Ny dGNfc3RhdGUtPnVwZGF0ZV9waXBlKSB7CgpBcmUgdGhlc2UgY2hlY2tzIGV2ZW4gbmVlZGVkPyBX ZSd2ZSBhbHJlYWR5IGRldGVybWluZWQgd2Ugd2VyZSBhCnNsYXZlIGFuZCB0aGUgdWFwaSBjcnRj IGlzIG5vdyBlbmFibGVkLCBzbyB3ZSBoYXZlIHRvIGdpdmUgdGhlCnBpcGUgYmFjayB0byB0aGUg dWFwaSB1c2VyIG5vIG1hdHRlciB3aGF0LgoKPiArCQkJbWFzdGVyID0gb2xkX2NydGNfc3RhdGUt PmJpZ2pvaW5lcl9saW5rZWRfY3J0YzsKPiArCQkJbWFzdGVyX2NydGNfc3RhdGUgPSBpbnRlbF9h dG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLCBtYXN0ZXIpOwo+ICsJCQlpZiAoSVNf RVJSKG1hc3Rlcl9jcnRjX3N0YXRlKSkKPiArCQkJCXJldHVybiBQVFJfRVJSKG1hc3Rlcl9jcnRj X3N0YXRlKTsKPiArCj4gKwkJCS8qCj4gKwkJCSAqIEZvcmNlIG1vZGVzZXQgb24gbWFzdGVyLCB0 byByZWNhbGN1bGF0ZSBiaWdqb2luZXIKPiArCQkJICogc3RhdGUuCj4gKwkJCSAqCj4gKwkJCSAq IElmIG1hc3Rlcl9jcnRjX3N0YXRlIHdhcyBub3QgcGFydCBvZiB0aGUgYXRvbWljIGNvbW1pdCwK PiArCQkJICogd2Ugd2lsbCBmYWlsIGJlY2F1c2UgdGhlIG1hc3RlciB3YXMgbm90IGRlY29uZmln dXJlZCwKPiArCQkJICogYnV0IGF0IGxlYXN0IGZhaWwgYmVsb3cgdG8gdW5pZnkgdGhlIGNoZWNr cy4KPiArCQkJICovCj4gKwkJCW1hc3Rlcl9jcnRjX3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZCA9 IHRydWU7Cj4gKwo+ICsJCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoJnN0 YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZSk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlyZXR1cm4gcmV0 Owo+ICsKPiArCQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycygmc3Rh dGUtPmJhc2UsICZjcnRjLT5iYXNlKTsKPiArCQkJaWYgKHJldCkKPiArCQkJCXJldHVybiByZXQ7 CgpUaGlzIHdob2xlIHRoaW5nIGZlZWxzIGEgYml0IGxhdGUgdG8gYmUgZG9pbmcgaXQuIENhbid0 IHdlIGp1c3QgZG8gdGhpcwpzdHVmZiBiZWZvcmUgLmNvbXB1dGVfY29uZmlnKCk/IFRoZW4gYXQg bGVhc3QgaW4gdGhlb3J5IHRoZSBtYXN0ZXIgY291bGQKaGF2ZSBhIGNoYW5jZSB0byByZWNvbmZp Z3VyZSBpdHNlbGYgdG8gbm90IHVzZSB0aGUgYmlnam9pbmVyPyBJIHN1cHBvc2UKdGhlcmUgaXMg bm90aGluZyBpdCByZWFsbHkgY2FuIGRvIHRvIG1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gd29yaywg YnV0CkkgdGhpbmsgaXQgd291bGQgc3RpbGwgZmVlbCBsaWtlIHRoZSBtb3JlIG5hdHVyYWwgb3Jk ZXIgb2YgdGhpbmdzLgoKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVs X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJCSAgICBu ZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWlmICghbmV3X2NydGNfc3RhdGUtPnVhcGkuZW5hYmxl IHx8ICFuZXdfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKSB7Cj4gKwkJCWlmICghb2xkX2NydGNfc3Rh dGUtPmJpZ2pvaW5lcikKPiArCQkJCWNvbnRpbnVlOwoKSSdtIGhhdmluZyBhIGhhcmQgdGltZSBk ZWNvZGluZyB0aGF0LiBXaGF0IGFyZSB3ZSB0cnlpbmcgdG8gZG8/Cgo+ICsJCX0KPiArCj4gKwkJ aWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJiAhbmV3X2NydGNfc3RhdGUtPnVw ZGF0ZV9waXBlKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5i aWdqb2luZXIgJiYgIW5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpIHsKPiArCQkJaWYg KDEgKyBjcnRjLT5waXBlID49IElOVEVMX05VTV9QSVBFUyhkZXZfcHJpdikpIHsKPiArCQkJCURS TV9ERUJVR19LTVMoIkJpZyBqb2luZXIgY29uZmlndXJhdGlvbiByZXF1aXJlcyBDUlRDICsgMSB0 byBiZSB1c2VkLCBkb2Vzbid0IGV4aXN0XG4iKTsKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJ CQl9CgpJIHRoaW5rIHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlamVjdCBzdWNoIGEgY29uZmlndXJh dGlvbiBhbHJlYWR5CndoZW4gd2UgZGVjaWRlZCB0aGF0IHdlIG5lZWQgdG8gdXNlIHRoZSBiaWdq b2luZXIuIFNob3VsZCBwcm9iYWJseQp3cml0ZSBpdCB3aXRoIGJpdG1hc2tzIHRvIGJlIGZ1dHVy ZSBwcm9vZi4KCj4gKwo+ICsJCQlzbGF2ZSA9IG5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlu a2VkX2NydGMgPQo+ICsJCQkJaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsIGNydGMt PnBpcGUgKyAxKTsKPiArCQkJc2xhdmVfY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0 Y19zdGF0ZSgmc3RhdGUtPmJhc2UsIHNsYXZlKTsKPiArCQkJaWYgKElTX0VSUihzbGF2ZV9jcnRj X3N0YXRlKSkKPiArCQkJCXJldHVybiBQVFJfRVJSKHNsYXZlX2NydGNfc3RhdGUpOwo+ICsKPiAr CQkJaWYgKHNsYXZlX2NydGNfc3RhdGUtPnVhcGkuZW5hYmxlKSB7Cj4gKwkJCQlEUk1fREVCVUdf S01TKCJbQ1JUQzolZDolc10gQmlnIGpvaW5lciBjb25maWd1cmF0aW9uIHJlcXVpcmVzIHRoaXMg Q1JUQyB0byBiZSB1bmNvbmZpZ3VyZWRcbiIsCj4gKwkJCQkJICAgICAgc2xhdmUtPmJhc2UuYmFz ZS5pZCwgc2xhdmUtPmJhc2UubmFtZSk7Cj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJfSBl bHNlIHsKPiArCQkJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBVc2VkIGFzIHNsYXZlIGZv ciBiaWcgam9pbmVyXG4iLAo+ICsJCQkJCSAgICAgIHNsYXZlLT5iYXNlLmJhc2UuaWQsIHNsYXZl LT5iYXNlLm5hbWUpOwo+ICsJCQkJcmV0ID0gY29weV9iaWdqb2luZXJfY3J0Y19zdGF0ZShzbGF2 ZV9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCX0KPiArCQl9IGVsc2UgewoKSSBn dWVzcyB0aGlzIG1lYW5zIHdlJ3JlIGFsd2F5cyBsb29raW5nIHRvIGFzc29jaWF0ZSB0aGUgYmln am9pbmVyCm1hc3RlciB3aXRoIHRoZSB1YXBpIGNydGM/IEkgdGhpbmsgaW4gdGhlb3J5IHdlIHNo b3VsZCBiZSBhYmxlIHRvCmhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgc2xhdmUgaXMgdGhlIHVh cGkgY3J0YyBhcyB3ZWxsLiBCdXQgbWF5YmUKaXQgZG9lc24ndCBtYXR0ZXIgc28gbXVjaCBhcyB1 c2Vyc3BhY2UgcHJvYmFibHkgcGlja3MgY3J0Y3MgaW4gb3JkZXIKYW55d2F5LiBIbW0sIG1heWJl IGl0IHdvdWxkIGV2ZW4gYmUgaGFyZCB0byBkZWFsIHdpdGggdGhhdC4uLgoKPiArCQkJbWFzdGVy ID0gbmV3X2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YzsKPiArCQkJaWYgKCFtYXN0 ZXIpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCW1hc3Rlcl9jcnRjX3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgbWFzdGVyKTsKPiArCQkJaWYgKElT X0VSUihtYXN0ZXJfY3J0Y19zdGF0ZSkpCj4gKwkJCQlyZXR1cm4gUFRSX0VSUihtYXN0ZXJfY3J0 Y19zdGF0ZSk7Cj4gKwo+ICsJCQlpZiAoIW1hc3Rlcl9jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSAm JiAhbmV3X2NydGNfc3RhdGUtPnVhcGkuZW5hYmxlKSB7Cj4gKwkJCQlEUk1fREVCVUdfS01TKCJb Q1JUQzolZDolc10gRGlzYWJsaW5nIHNsYXZlIGZyb20gYmlnIGpvaW5lclxuIiwKPiArCQkJCQkg ICAgICBjcnRjLT5iYXNlLmJhc2UuaWQsIGNydGMtPmJhc2UubmFtZSk7Cj4gKwkJCQlyZXQgPSBj bGVhcl9pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCQkJfQoKVGhpcyB0b28g ZmVlbHMgbGlrZSBpdCBjb3VsZCBiZSBkb25lIGJlZm9yZSB3ZSd2ZSBjb21wdXRlIGFueXRoaW5n LgoKU29tZXRoaW5nIGxpa2UgdGhpcyBpcyB3aGF0IEkgd2FzIHRoaW5raW5nIGVhcmxpZXI6Cgpk ZXRhY2hfam9pbmVyKCkgewoJbWFzdGVyLmJpZ2pvaW5lciA9IHt9OwoJc2xhdmUuYmlnam9pbmVy ID0ge307Cn0KCnNldHVwX3N0YXRlX3RoaW5nKCkgewoJaWYgKG5ld19jcnRjX3N0YXRlLT51YXBp LmVuYWJsZSkgewoJCWlmIChpc19zbGF2ZSkgewoJCQlhc3NlcnQobmVlZHNfbW9kZXNldChuZXdf Y3J0Y19zdGF0ZSkpOwoJCQltYXN0ZXIgPSBnZXRfbGlua2VkKCk7CgkJCW1hc3Rlci5tb2Rlc2V0 ID0gdHJ1ZTsKCQkJZGV0YWNoX2pvaW5lcigpOwoJCX0gZWxzZSBpZiAoaXNfbWFzdGVyKSB7CgkJ CXNsYXZlID0gZ2V0X2xpbmtlZCgpOwoJCQlpZiAobmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0 ZSkpIHsKCQkJCXNsYXZlLm1vZGVzZXQgPSB0cnVlOwoJCQkJZGV0YWNoX2pvaW5lcigpOwoJCQl9 CgkJfQoJCWNvcHlfdWFwaV90b19odyhuZXdfY3J0Y19zdGF0ZSk7Cgl9IGVsc2UgewoJCWlmIChp c19tYXN0ZXIpIHsKCQkJYXNzZXJ0KG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKTsKCQkJ c2xhdmUgPSBnZXRfbGlua2VkKCk7CgkJCXNsYXZlLm1vZGVzZXQgPSB0cnVlOwoJCQlkZXRhY2hf am9pbmVyKCk7CgkJfQoJCWlmICghaXNfc2xhdmUgJiYgbmVlZHNfbW9kZXNldChuZXdfY3J0Y19z dGF0ZSkpCgkJCWNvcHlfdWFwaV90b19odyhuZXdfY3J0Y19zdGF0ZSk7Cgl9Cn0KCiAgZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldCgpOworIHNldHVwX3N0YXRlX3RoaW5nKCk7CgoKPiAr CQl9Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGludGVsX2F0b21pY19jaGVjayAtIHZhbGlkYXRlIHN0 YXRlIG9iamVjdAo+ICAgKiBAZGV2OiBkcm0gZGV2aWNlCj4gQEAgLTEzNjQyLDE2ICsxMzgwNiwx OSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9s ZF9jcnRjX3N0YXRlLAo+ICAJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWlmICgh bmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpIHsKPiAtCQkJaWYgKG5ld19jcnRjX3N0YXRl LT51YXBpLmNvbG9yX21nbXRfY2hhbmdlZCkKPiAtCQkJCWludGVsX2NydGNfY29weV9jb2xvcl9i bG9icyhuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jb2xv cl9tZ210X2NoYW5nZWQgJiYKPiArCQkJICAgICFuZXdfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3Ns YXZlKQo+ICsJCQkJaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKG5ld19jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSk7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAgCj4gIAkJaWYgKCFuZXdf Y3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpIHsKPiAgCQkJYW55X21zID0gdHJ1ZTsKPiAtCQkJaW50 ZWxfY3J0Y19mcmVlX2h3X3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiAtCQkJbWVtc2V0KCZuZXdf Y3J0Y19zdGF0ZS0+aHcsIDAsCj4gLQkJCSAgICAgICBzaXplb2YobmV3X2NydGNfc3RhdGUtPmh3 KSk7Cj4gKwkJCWlmICghbmV3X2NydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkgewo+ICsJCQkJ aW50ZWxfY3J0Y19mcmVlX2h3X3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCQkJCW1lbXNldCgm bmV3X2NydGNfc3RhdGUtPmh3LCAwLAo+ICsJCQkJICAgICAgc2l6ZW9mKG5ld19jcnRjX3N0YXRl LT5odykpOwo+ICsJCQl9Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAgCj4gQEAgLTEzNjY1LDYg KzEzODMyLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJCWFueV9tcyA9IHRydWU7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaW50ZWxf YXRvbWljX2NoZWNrX2JpZ2pvaW5lcihzdGF0ZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICAJcmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2soJnN0YXRlLT5iYXNlKTsK PiAgCWlmIChyZXQpCj4gIAkJZ290byBmYWlsOwo+IEBAIC0xMzg2MCw3ICsxNDAzMSw5IEBAIHN0 YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAK PiAgCWNvbW1pdF9waXBlX2NvbmZpZyhzdGF0ZSwgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0 YXRlKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKG5ld19j cnRjX3N0YXRlLT5iaWdqb2luZXIpCj4gKwkJey8qIE5vdCBzdXBwb3J0ZWQgeWV0ICovfQo+ICsJ ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAJCXNrbF91cGRhdGVfcGxhbmVz X29uX2NydGMoc3RhdGUsIGNydGMpOwo+ICAJZWxzZQo+ICAJCWk5eHhfdXBkYXRlX3BsYW5lc19v bl9jcnRjKHN0YXRlLCBjcnRjKTsKPiBAQCAtMTY5MTUsNyArMTcwODgsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCQl9Cj4gIAo+ICAJCWludGVsX2J3X2NydGNfdXBkYXRlKGJ3X3N0YXRlLCBjcnRjX3N0YXRl KTsKPiAtCj4gIAkJY29weV9od190b191YXBpX3N0YXRlKGNydGNfc3RhdGUpOwo+ICAJCWludGVs X3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVz LmgKPiBpbmRleCA2NzY0NDgxOGVmZDIuLjZjZTgyMzk0M2E2OSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gQEAgLTc5 MSw3ICs3OTEsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gIAlzdHJ1Y3Qgewo+ICAJ CWJvb2wgYWN0aXZlLCBlbmFibGU7Cj4gIAkJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdh bW1hX2x1dCwgKmdhbW1hX2x1dCwgKmN0bTsKPiAtCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBt b2RlLCBhZGp1c3RlZF9tb2RlOwo+ICsJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGUsIGFk anVzdGVkX21vZGUsIHRyYW5zY29kZXJfbW9kZTsKPiAgCX0gaHc7Cj4gIAo+ICAJLyoqCj4gQEAg LTEwMjIsNiArMTAyMiwxNSBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gIAkvKiBlbmFi bGUgcGlwZSBjc2M/ICovCj4gIAlib29sIGNzY19lbmFibGU7Cj4gIAo+ICsJLyogZW5hYmxlIHBp cGUgYmlnIGpvaW5lcj8gKi8KPiArCWJvb2wgYmlnam9pbmVyOwo+ICsKPiArCS8qIGJpZyBqb2lu ZXIgc2xhdmUgY3J0Yz8gKi8KPiArCWJvb2wgYmlnam9pbmVyX3NsYXZlOwo+ICsKPiArCS8qIGxp bmtlZCBjcnRjIGZvciBiaWdqb2luZXIsIGVpdGhlciBzbGF2ZSBvciBtYXN0ZXIgKi8KPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpiaWdqb2luZXJfbGlua2VkX2NydGM7Cj4gKwo+ICAJLyogRGlzcGxh eSBTdHJlYW0gY29tcHJlc3Npb24gc3RhdGUgKi8KPiAgCXN0cnVjdCB7Cj4gIAkJYm9vbCBjb21w cmVzc2lvbl9lbmFibGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ IGluZGV4IDVjNzMyM2FmMDhiMy4uNjM3ZWU3ZDA2NTZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yMTA2LDYgKzIxMDYsMTkgQEAgc3RhdGljIGlu dCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gaW50ZWxfZHAtPmNvbW1vbl9yYXRlc1tsaW1p dHMtPm1heF9jbG9ja107Cj4gIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IGxpbWl0cy0+bWF4 X2xhbmVfY291bnQ7Cj4gIAo+ICsJaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBpbnRl bF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9kcCwgZmFsc2UpKSB7Cj4gKwkJaWYg KGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBpbnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3Rj bG9jayhpbnRlbF9kcCwgdHJ1ZSkpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiQ2xvY2sgcmF0ZSB0 b28gaGlnaCBmb3IgYmlnIGpvaW5lclxuIik7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0K PiArCQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ICsJCQlEUk1fREVCVUdfS01T KCJDYW5ub3Qgc3BsaXQgZURQIHN0cmVhbSBpbiBiaWdqb2luZXIgY29uZmlndXJhdGlvbi5cbiIp Owo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJcGlwZV9jb25maWctPmJpZ2pvaW5l ciA9IHRydWU7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVXNpbmcgYmlnam9pbmVyIGNvbmZpZ3VyYXRp b25cbiIpOwo+ICsJfQo+ICsKPiAgCWlmIChpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7Cj4g IAkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHAgPQo+ICAJCQltaW5fdCh1 MTYsIGRybV9lZHBfZHNjX3Npbmtfb3V0cHV0X2JwcChpbnRlbF9kcC0+ZHNjX2RwY2QpID4+IDQs Cj4gQEAgLTIxMjMsMTIgKzIxMzYsMTIgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0 ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkJCQkJICAgIHBpcGVfY29u ZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywK PiAgCQkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXksCj4gLQkJCQkJCSAgICBm YWxzZSk7Cj4gKwkJCQkJCSAgICBwaXBlX2NvbmZpZy0+Ymlnam9pbmVyKTsKPiAgCQlkc2NfZHBf c2xpY2VfY291bnQgPQo+ICAJCQlpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2Rw LAo+ICAJCQkJCQkgICAgIGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4gIAkJCQkJCSAgICAg YWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiAtCQkJCQkJICAgICBmYWxzZSk7Cj4gKwkJ CQkJCSAgICAgcGlwZV9jb25maWctPmJpZ2pvaW5lcik7Cj4gIAkJaWYgKCFkc2NfbWF4X291dHB1 dF9icHAgfHwgIWRzY19kcF9zbGljZV9jb3VudCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJDb21w cmVzc2VkIEJQUC9TbGljZSBDb3VudCBub3Qgc3VwcG9ydGVkXG4iKTsKPiAgCQkJcmV0dXJuIC1F SU5WQUw7Cj4gQEAgLTIxNDMsMTMgKzIxNTYsMTMgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2Nf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCSAqIGlzIGdyZWF0 ZXIgdGhhbiB0aGUgbWF4aW11bSBDZGNsb2NrIGFuZCBpZiBzbGljZSBjb3VudCBpcyBldmVuCj4g IAkgKiB0aGVuIHdlIG5lZWQgdG8gdXNlIDIgVkRTQyBpbnN0YW5jZXMuCj4gIAkgKi8KPiAtCWlm IChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7 Cj4gLQkJaWYgKHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50ID4gMSkgewo+IC0J CQlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQgPSB0cnVlOwo+IC0JCX0gZWxzZSB7 Cj4gKwlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA+IGRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcSB8fCBwaXBlX2NvbmZpZy0+Ymlnam9pbmVyKSB7Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5k c2NfcGFyYW1zLnNsaWNlX2NvdW50IDwgMikgewo+ICAJCQlEUk1fREVCVUdfS01TKCJDYW5ub3Qg c3BsaXQgc3RyZWFtIHRvIHVzZSAyIFZEU0MgaW5zdGFuY2VzXG4iKTsKPiAgCQkJcmV0dXJuIC1F SU5WQUw7Cj4gIAkJfQo+ICsKPiArCQlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQg PSB0cnVlOwo+ICAJfQo+ICAKPiAgCXJldCA9IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhp bnRlbF9kcCwgcGlwZV9jb25maWcpOwo+IC0tIAo+IDIuMjMuMAo+IAo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=