From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 11/23] drm/i915: Try to make bigjoiner work in atomic check. Date: Mon, 30 Sep 2019 16:12:32 +0200 Message-ID: References: <20190920114235.22411-1-maarten.lankhorst@linux.intel.com> <20190920114235.22411-11-maarten.lankhorst@linux.intel.com> <20190926034802.GV1869@mdroper-desk1.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A23A6E448 for ; Mon, 30 Sep 2019 14:12:35 +0000 (UTC) In-Reply-To: <20190926034802.GV1869@mdroper-desk1.amr.corp.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjYtMDktMjAxOSBvbSAwNTo0OCBzY2hyZWVmIE1hdHQgUm9wZXI6Cj4gT24gRnJpLCBTZXAg MjAsIDIwMTkgYXQgMDE6NDI6MjNQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IFdoZW4gdGhlIGNsb2NrIGlzIGhpZ2hlciB0aGFuIHRoZSBkb3RjbG9jaywgdHJ5IHdpdGggMiBw aXBlcyBlbmFibGVkLgo+PiBJZiB3ZSBjYW4gZW5hYmxlIDIsIHRoZW4gd2Ugd2lsbCBnbyBpbnRv IGJpZyBqb2luZXIgbW9kZSwgYW5kIHN0ZWFsCj4+IHRoZSBhZGphY2VudCBjcnRjLgo+Pgo+PiBU aGlzIG9ubHkgbGlua3MgdGhlIGNydGMncyBpbiBzb2Z0d2FyZSwgbm8gaGFyZHdhcmUgb3IgcGxh bmUKPj4gcHJvZ3JhbW1pbmcgaXMgZG9uZSB5ZXQuIEJsb2JzIGFyZSBhbHNvIGNvcGllZCBmcm9t IHRoZSBtYXN0ZXIncwo+PiBjcnRjX3N0YXRlLCBzbyBpdCBkb2Vzbid0IGRlcGVuZCBhdCBjb21t aXQgdGltZSBvbiB0aGUgb3RoZXIKPj4gY3J0Y19zdGF0ZS4KPj4KPj4gU2lnbmVkLW9mZi1ieTog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4g LS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jICAgfCAg MTUgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmggICB8 ICAgMyArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMg IHwgMTk3ICsrKysrKysrKysrKysrKysrLQo+PiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV90eXBlcy5oICAgIHwgIDExICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMgICAgICAgfCAgMjUgKystCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDIyOCBp bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4+IGluZGV4IGM1MGUwYjIxOGJkNi4uMGRiMDQwNjRj ODZlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0 b21pYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWlj LmMKPj4gQEAgLTIyOCwyNSArMjI4LDI2IEBAIHZvaWQgaW50ZWxfY3J0Y19mcmVlX2h3X3N0YXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAgCWludGVsX2NydGNfcHV0 X2NvbG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+PiAgfQo+PiAgCj4+IC12b2lkIGludGVsX2NydGNf Y29weV9jb2xvcl9ibG9icyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4g K3ZvaWQgaW50ZWxfY3J0Y19jb3B5X2NvbG9yX2Jsb2JzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+PiArCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqZnJv bV9jcnRjX3N0YXRlKQo+PiAgewo+PiAgCWludGVsX2NydGNfcHV0X2NvbG9yX2Jsb2JzKGNydGNf c3RhdGUpOwo+PiAgCj4+IC0JaWYgKGNydGNfc3RhdGUtPnVhcGkuZGVnYW1tYV9sdXQpCj4+ICsJ aWYgKGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5kZWdhbW1hX2x1dCkKPj4gIAkJY3J0Y19zdGF0ZS0+ aHcuZGVnYW1tYV9sdXQgPQo+PiAtCQkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KGNydGNfc3RhdGUt PnVhcGkuZGVnYW1tYV9sdXQpOwo+PiArCQkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KGZyb21fY3J0 Y19zdGF0ZS0+dWFwaS5kZWdhbW1hX2x1dCk7Cj4+ICAJZWxzZQo+PiAgCQljcnRjX3N0YXRlLT5o dy5kZWdhbW1hX2x1dCA9IE5VTEw7Cj4+ICAKPj4gLQlpZiAoY3J0Y19zdGF0ZS0+dWFwaS5nYW1t YV9sdXQpCj4+ICsJaWYgKGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpCj4+ICAJCWNy dGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9Cj4+IC0JCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoY3J0 Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpOwo+PiArCQkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KGZy b21fY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQpOwo+PiAgCWVsc2UKPj4gIAkJY3J0Y19zdGF0 ZS0+aHcuZ2FtbWFfbHV0ID0gTlVMTDsKPj4gIAo+PiAtCWlmIChjcnRjX3N0YXRlLT51YXBpLmN0 bSkKPj4gKwlpZiAoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmN0bSkKPj4gIAkJY3J0Y19zdGF0ZS0+ aHcuY3RtID0KPj4gLQkJCWRybV9wcm9wZXJ0eV9ibG9iX2dldChjcnRjX3N0YXRlLT51YXBpLmN0 bSk7Cj4+ICsJCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoZnJvbV9jcnRjX3N0YXRlLT51YXBpLmN0 bSk7Cj4+ICAJZWxzZQo+PiAgCQljcnRjX3N0YXRlLT5ody5jdG0gPSBOVUxMOwo+PiAgfQo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmgKPj4gaW5kZXggNDJi ZTkxZTA3NzJhLi44ZGE4NGQ2NGFhMDQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdG9taWMuaAo+PiBAQCAtMzYsNyArMzYsOCBAQCBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7Cj4+ICB2b2lkIGludGVsX2NydGNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4+ICAJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4+ICB2b2lk IGludGVsX2NydGNfZnJlZV9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4+IC12b2lkIGludGVsX2NydGNfY29weV9jb2xvcl9ibG9icyhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+ICt2b2lkIGludGVsX2NydGNfY29weV9jb2xvcl9i bG9icyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gKwkJCQkgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmZyb21fY3J0Y19zdGF0ZSk7Cj4+ICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+PiAgdm9pZCBpbnRlbF9hdG9taWNfc3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKTsKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCBiYTUyYTcwODQwZmQuLjE0M2Q1MzFjNGM4MSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4g QEAgLTc0MzQsNyArNzQzNCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4gLQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPj4gIAlpbnQgY2xvY2tfbGltaXQgPSBkZXZfcHJp di0+bWF4X2RvdGNsa19mcmVxOwo+PiAgCj4+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KSB7Cj4+IEBAIC03NDUxLDYgKzc0NTEsMjUgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgCQl9Cj4+ICAJfQo+PiAgCj4+ ICsJLyoKPj4gKwkgKiBjb3B5IGh3IG1vZGUgdG8gdHJhbnNjb2RlciBtb2RlLgo+PiArCSAqIFRo aXMgbWF0dGVycyBtb3N0bHkgZm9yIGJpZyBqb2luZXIsIHdoaWNoIHNwbGl0cyB0aGUgbW9kZSBp biBoYWxmLgo+PiArCSAqLwo+PiArCXBpcGVfY29uZmlnLT5ody50cmFuc2NvZGVyX21vZGUgPSBw aXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPj4gKwlpZiAocGlwZV9jb25maWctPmJpZ2pv aW5lcikgewo+PiArCQkvKiBNYWtlIHN1cmUgdGhlIGNydGMgY29uZmlnIGlzIGhhbHZlZCBob3Jp em9udGFsbHkgKi8KPj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayAvPSAyOwo+PiArCQlh ZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC89IDI7Cj4+ICsJCWFkanVzdGVkX21vZGUtPmNy dGNfaGJsYW5rX3N0YXJ0IC89IDI7Cj4+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaGJsYW5rX2Vu ZCAvPSAyOwo+PiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0IC89IDI7Cj4+ICsJ CWFkanVzdGVkX21vZGUtPmNydGNfaHN5bmNfZW5kIC89IDI7Cj4+ICsJCWFkanVzdGVkX21vZGUt PmNydGNfaHRvdGFsIC89IDI7Cj4+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaHNrZXcgLz0gMjsK PiBJZiBhZGp1c3RlZF9tb2RlIGlzIHRoZSAicGlwZSBtb2RlLCIgZG9lcyBhbnl0aGluZyBvdGhl ciB0aGFuIHRoZSBzaXplCj4gaGF2ZSBtZWFuaW5nIG9yIG1hdHRlciBhdCB0aGF0IGxldmVsPyAg Tm90IHRoYXQgaGFsdmluZyB0aGUgcmVzdCBvZgo+IHRoZXNlIGh1cnRzIGFueXRoaW5nLCBpdCBq dXN0IHNlZW1zIHN0cmFuZ2UgdG8gY29uc2lkZXIgdGhlbSBhdCB0aGUgcGlwZQo+IGxldmVsLgoK Q29ycmVjdC4KCkEgZmV3IHBsYWNlcyBsb29rIGF0IGNydGNfaHRvdGFsL3Z0b3RhbCwgZm9yIGV4 YW1wbGUgcGl4ZWwgcmF0ZSBjYWxjdWxhdGlvbnMsCndhdGVybWFya3MgYW5kIHBpcGUgc2NhbGVy LgoKdHJhbnNjb2RlciBnZXRzIHRoZSBmdWxsIG1vZGUgY292ZXJpbmcgYm90aCBwaXBlcywgYW55 dGhpbmcgZWxzZSBsb29rcyBhdCB0aGUKcmVkdWNlZCBtb2RlIGluIG9yZGVyIHRvIG5vdCBicmVh ayBhbnl0aGluZy4gOikKCj4+ICsKPj4gKwkJcGlwZV9jb25maWctPnBpcGVfc3JjX3cgLz0gMjsK Pj4gKwl9Cj4+ICsKPj4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA+IGNsb2NrX2xp bWl0KSB7Cj4+ICAJCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBwaXhlbCBjbG9jayAoJWQga0h6 KSB0b28gaGlnaCAobWF4OiAlZCBrSHosIGRvdWJsZSB3aWRlOiAlcylcbiIsCj4+ICAJCQkgICAg ICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLCBjbG9ja19saW1pdCwKPj4gQEAgLTgxMzMsNyAr ODE1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX3RpbWluZ3MoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gV2UgbWF5IHdhbnQgdG8gcmVuYW1lIHRo aXMgZnVuY3Rpb24gdG8gaW50ZWxfc2V0X3RyYW5zY29kZXJfdGltaW5ncwo+IG5vdyB0aGF0IHBp cGUgYW5kIHRyYW5zY29kZXIgYXJlIHN0YXJ0aW5nIHRvIGJlIGRpZmZlcmVudC4KKzEsIHdpbGwg Zml4Lgo+Cj4KPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKPj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+ICAJ ZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29k ZXI7Cj4+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody50cmFuc2NvZGVyX21vZGU7 Cj4+ICAJdTMyIGNydGNfdnRvdGFsLCBjcnRjX3ZibGFua19lbmQ7Cj4+ICAJaW50IHZzeW5jc2hp ZnQgPSAwOwo+PiAgCj4+IEBAIC0xMTc3NCw2ICsxMTc5Myw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf Y3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpfY3J0YywKPj4gIAkJdG9faW50ZWxf Y3J0Y19zdGF0ZShfY3J0Y19zdGF0ZSk7Cj4+ICAJaW50IHJldDsKPj4gIAlib29sIG1vZGVfY2hh bmdlZCA9IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSk7Cj4+ICsJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUgPQo+PiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+ dWFwaS5zdGF0ZSk7Cj4+ICAKPj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlT X0c0WChkZXZfcHJpdikgJiYKPj4gIAkgICAgbW9kZV9jaGFuZ2VkICYmICFjcnRjX3N0YXRlLT5o dy5hY3RpdmUpCj4+IEBAIC0xMTc4MSw2ICsxMTgwMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpfY3J0YywKPj4gIAo+PiAgCWlmIChtb2Rl X2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+aHcuZW5hYmxlICYmCj4+ICAJICAgIGRldl9wcml2LT5k aXNwbGF5LmNydGNfY29tcHV0ZV9jbG9jayAmJgo+PiArCSAgICAhY3J0Y19zdGF0ZS0+Ymlnam9p bmVyX3NsYXZlICYmCj4+ICAJICAgICFXQVJOX09OKGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsKSkg ewo+PiAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2soY3J0Yywg Y3J0Y19zdGF0ZSk7Cj4+ICAJCWlmIChyZXQpCj4+IEBAIC0xMTc5Niw4ICsxMTgxOCwxNSBAQCBz dGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqX2NydGMs Cj4+ICAKPj4gIAlpZiAobW9kZV9jaGFuZ2VkIHx8IGNydGNfc3RhdGUtPnVwZGF0ZV9waXBlIHx8 Cj4+ICAJICAgIGNydGNfc3RhdGUtPnVhcGkuY29sb3JfbWdtdF9jaGFuZ2VkKSB7Cj4+ICsJCWNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICptYXN0ZXJfY3J0Y19zdGF0ZSA9IGNydGNfc3Rh dGU7Cj4+ICsKPj4gKwkJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkKPj4gKwkJCW1h c3Rlcl9jcnRjX3N0YXRlID0KPj4gKwkJCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRl KHN0YXRlLAo+PiArCQkJCQljcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGMpOwo+PiAr Cj4+ICAJCS8qIENvcHkgY29sb3IgYmxvYnMgdG8gaHcgc3RhdGUgKi8KPj4gLQkJaW50ZWxfY3J0 Y19jb3B5X2NvbG9yX2Jsb2JzKGNydGNfc3RhdGUpOwo+PiArCQlpbnRlbF9jcnRjX2NvcHlfY29s b3JfYmxvYnMoY3J0Y19zdGF0ZSwgbWFzdGVyX2NydGNfc3RhdGUpOwo+PiAgCj4+ICAJCXJldCA9 IGludGVsX2NvbG9yX2NoZWNrKGNydGNfc3RhdGUpOwo+PiAgCQlpZiAocmV0KQo+PiBAQCAtMTIy NTksNyArMTIyODgsNDggQEAgc3RhdGljIHZvaWQgY29weV9od190b191YXBpX3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAgCWNydGNfc3RhdGUtPnVhcGkuZW5h YmxlID0gY3J0Y19zdGF0ZS0+aHcuZW5hYmxlOwo+PiAgCWNydGNfc3RhdGUtPnVhcGkuYWN0aXZl ID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwo+PiAgCWNydGNfc3RhdGUtPnVhcGkubW9kZSA9IGNy dGNfc3RhdGUtPmh3Lm1vZGU7Cj4+IC0JY3J0Y19zdGF0ZS0+dWFwaS5hZGp1c3RlZF9tb2RlID0g Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPj4gKwljcnRjX3N0YXRlLT51YXBpLmFkanVz dGVkX21vZGUgPSBjcnRjX3N0YXRlLT5ody50cmFuc2NvZGVyX21vZGU7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQKPj4gK2NvcHlfYmlnam9pbmVyX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpmcm9tX2NydGNfc3RhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnNhdmVkX3N0YXRlOwo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+PiArCj4+ICsJc2F2ZWRfc3RhdGUgPSBrbWVtZHVw KGZyb21fY3J0Y19zdGF0ZSwgc2l6ZW9mKCpzYXZlZF9zdGF0ZSksIEdGUF9LRVJORUwpOwo+PiAr CWlmICghc2F2ZWRfc3RhdGUpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJc2F2ZWRf c3RhdGUtPnVhcGkgPSBjcnRjX3N0YXRlLT51YXBpOwo+PiArCXNhdmVkX3N0YXRlLT5zY2FsZXJf c3RhdGUgPSBjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Cj4+ICsJc2F2ZWRfc3RhdGUtPnNoYXJl ZF9kcGxsID0gY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGw7Cj4+ICsJc2F2ZWRfc3RhdGUtPmRwbGxf aHdfc3RhdGUgPSBjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlOwo+PiArCXNhdmVkX3N0YXRlLT5j cmNfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmNyY19lbmFibGVkOwo+PiArCj4+ICsJaW50ZWxfY3J0 Y19mcmVlX2h3X3N0YXRlKGNydGNfc3RhdGUpOwo+PiArCW1lbWNweShjcnRjX3N0YXRlLCBzYXZl ZF9zdGF0ZSwgc2l6ZW9mKCpjcnRjX3N0YXRlKSk7Cj4+ICsJa2ZyZWUoc2F2ZWRfc3RhdGUpOwo+ PiArCj4+ICsJLyogUmUtaW5pdCBodyBzdGF0ZSAqLwo+PiArCW1lbXNldCgmY3J0Y19zdGF0ZS0+ aHcsIDAsIHNpemVvZihzYXZlZF9zdGF0ZS0+aHcpKTsKPj4gKwljcnRjX3N0YXRlLT5ody5lbmFi bGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3LmVuYWJsZTsKPj4gKwljcnRjX3N0YXRlLT5ody5hY3Rp dmUgPSBmcm9tX2NydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPj4gKwljcnRjX3N0YXRlLT5ody5tb2Rl ID0gZnJvbV9jcnRjX3N0YXRlLT5ody5tb2RlOwo+PiArCWNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUgPSBmcm9tX2NydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4+ICsKPj4gKwkvKiBT b21lIGZpeHVwcyAqLwo+PiArCWNydGNfc3RhdGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gZnJvbV9j cnRjX3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZDsKPj4gKwljcnRjX3N0YXRlLT51YXBpLmNvbm5l Y3RvcnNfY2hhbmdlZCA9IGZyb21fY3J0Y19zdGF0ZS0+dWFwaS5jb25uZWN0b3JzX2NoYW5nZWQ7 Cj4+ICsJY3J0Y19zdGF0ZS0+dWFwaS5hY3RpdmVfY2hhbmdlZCA9IGZyb21fY3J0Y19zdGF0ZS0+ dWFwaS5hY3RpdmVfY2hhbmdlZDsKPj4gKwljcnRjX3N0YXRlLT5udjEyX3BsYW5lcyA9IGNydGNf c3RhdGUtPmM4X3BsYW5lcyA9IGNydGNfc3RhdGUtPnVwZGF0ZV9wbGFuZXMgPSAwOwo+PiArCWNy dGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YyA9IHRvX2ludGVsX2NydGMoZnJvbV9jcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+PiArCWNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSA9IHRy dWU7Cj4+ICsJY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIgPSAoZW51bSB0cmFuc2NvZGVyKWNy dGMtPnBpcGU7Cj4+ICsJY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvID0gZmFsc2U7Cj4+ICsKPj4gKwly ZXR1cm4gMDsKPj4gIH0KPj4gIAo+PiAgc3RhdGljIGludAo+PiBAQCAtMTI0MzIsNyArMTI1MDIs NyBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKPj4gIAkJICAgICAgYmFzZV9icHAsIHBpcGVfY29uZmlnLT5waXBlX2JwcCwg cGlwZV9jb25maWctPmRpdGhlcik7Cj4+ICAKPj4gIAkvKiB1YXBpIHdhbnRzIGEgY29weSBvZiB0 aGUgYWRqdXN0ZWRfbW9kZSBmb3IgdmJsYW5rIGJvb2trZWVwaW5nICovCj4+IC0JcGlwZV9jb25m aWctPnVhcGkuYWRqdXN0ZWRfbW9kZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ PiArCXBpcGVfY29uZmlnLT51YXBpLmFkanVzdGVkX21vZGUgPSBwaXBlX2NvbmZpZy0+aHcudHJh bnNjb2Rlcl9tb2RlOwo+PiAgCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IEBAIC0xMzU0OSw2ICsx MzYxOSwxMDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jaGVja19mYXN0c2V0KGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGEKPj4gIAluZXdfY3J0Y19zdGF0ZS0+ aGFzX2RycnMgPSBvbGRfY3J0Y19zdGF0ZS0+aGFzX2RycnM7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRp YyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5lcihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Cj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGUsICpzbGF2ZV9jcnRjX3N0YXRlLCAqbWFz dGVyX2NydGNfc3RhdGU7Cj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMsICpzbGF2ZSwgKm1h c3RlcjsKPj4gKwlpbnQgaSwgcmV0ID0gMDsKPj4gKwo+PiArCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgMTEpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVs X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+PiArCQkJCQkgICAg bmV3X2NydGNfc3RhdGUsIGkpIHsKPj4gKwkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVy X3NsYXZlKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJaWYgKGNydGMtPnBpcGUgPT0gUElQ RV9BKSB7Cj4gUmF0aGVyIHRoYW4gYSBoYXJkY29kZWQgUElQRV9BIGNoZWNrLCBzaG91bGQgd2Ug aGF2ZSBhIGJpdG1hc2sgb2YgcGlwZXMKPiB0aGF0IGNhbiBiZSBiaWcgam9pbmVyIG1hc3RlcnMg c29tZXdoZXJlPyAgbWFzayA9IDBiMTExIGZvciBnZW4xMiwgYnV0Cj4gbWFzayA9IDBiMDEwIGZv ciBnZW4xMS4gIFRoZW4gdGhlIGFsbG93YWJsZSBzbGF2ZXMKPiB3b3VsZCBiZSBtYXNrIDw8IDEs IHdoaWNoIHdvdWxkIGFsc28gZW5zdXJlIGdlbjExIGRvZXNuJ3QgYWxsb3cgYSBzbGF2ZSBvbiBw aXBlIEIuCj4KPj4gKwkJCURSTV9FUlJPUigiQmlnam9pbmVyIHNsYXZlIG9uIHBpcGUgQT9cbiIp Owo+IFdlIHNob3VsZCBwcm9iYWJseSBqdXN0IHVzZSBhIFdBUk5fT04oKSBpbiB0aGUgY29uZGl0 aW9uIGFib3ZlIHNpbmNlCj4gdGhpcyBzaG91bGRuJ3QgaGFwcGVuIHVubGVzcyB3ZSBzY3Jld2Vk IHVwIHNvbWV3aGVyZSBpbiB0aGUgZHJpdmVyLgo+Cj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4g KwkJfQo+PiArCj4+ICsJCS8qIGNydGMgc3RheWluZyBpbiBzbGF2ZSBtb2RlPyAqLwo+PiArCQlp ZiAoIW5ld19jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSkKPj4gKwkJCWNvbnRpbnVlOwo+PiArCj4+ ICsJCWlmIChuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSB8fCBuZXdfY3J0Y19zdGF0ZS0+ dXBkYXRlX3BpcGUpIHsKPiBXb24ndCBuZWVkc19tb2Rlc2V0KCkgYWx3YXlzIHJldHVybiB0cnVl IGhlcmU/ICBJLmUuLCBpZiB3ZSB3ZXJlIGEgc2xhdmUKPiBwcmV2aW91c2x5IGJ1dCBkaWRuJ3Qg YmFpbCBvbiB0aGUgdWFwaS5lbmFibGUgY2hlY2sgYWJvdmUsIHRoZW4KPiB1YXBpLmVuYWJsZSBp cyBmbGlwcGluZyBmcm9tIGZhbHNlIHRvIHRydWUuCj4KPiBHaXZlbiB0aGF0IGVuYWJsaW5nIHRo ZSBwcmV2aW91c2x5LXNsYXZlIENSVEMgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUKPiBwcmV2aW91 c2x5LW1hc3RlciBDUlRDIGlzIGFsc28gbW9kZXNldHRpbmcgaW4gYSB3YXkgdGhhdCB3b24ndCBu ZWVkIGEKPiBzbGF2ZSBhbnltb3JlLCBpdCBzZWVtcyBsaWtlIHRoZSBuZXh0IHN0ZXAgd291bGQg YmUKPgo+ICAgICAgICAgbWFzdGVyX2NydGNfc3RhdGUgPSBpbnRlbF9nZXRfZXhpc3RpbmdfY3J0 Y19zdGF0ZSgpCj4gICAgICAgICBpZiAoIW1hc3Rlcl9jcnRjX3N0YXRlIHx8ICFuZWVkc19tb2Rl c2V0KG1hc3Rlcl9jcnRjX3N0YXRlKSkKPiAgICAgICAgICAgICAgICAgZmFpbAo+ICAgICAgICAg ICAgICAgICAKPiBvdGhlcndpc2Ugd2UndmUgbm93IG92ZXJjb21taXR0ZWQgb3VyIHNsYXZlIENS VEMuCj4KPj4gKwkJCW1hc3RlciA9IG9sZF9jcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2Ny dGM7Cj4+ICsJCQltYXN0ZXJfY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0 ZSgmc3RhdGUtPmJhc2UsIG1hc3Rlcik7Cj4+ICsJCQlpZiAoSVNfRVJSKG1hc3Rlcl9jcnRjX3N0 YXRlKSkKPj4gKwkJCQlyZXR1cm4gUFRSX0VSUihtYXN0ZXJfY3J0Y19zdGF0ZSk7Cj4+ICsKPj4g KwkJCS8qCj4+ICsJCQkgKiBGb3JjZSBtb2Rlc2V0IG9uIG1hc3RlciwgdG8gcmVjYWxjdWxhdGUg Ymlnam9pbmVyCj4+ICsJCQkgKiBzdGF0ZS4KPj4gKwkJCSAqCj4+ICsJCQkgKiBJZiBtYXN0ZXJf Y3J0Y19zdGF0ZSB3YXMgbm90IHBhcnQgb2YgdGhlIGF0b21pYyBjb21taXQsCj4+ICsJCQkgKiB3 ZSB3aWxsIGZhaWwgYmVjYXVzZSB0aGUgbWFzdGVyIHdhcyBub3QgZGVjb25maWd1cmVkLAo+PiAr CQkJICogYnV0IGF0IGxlYXN0IGZhaWwgYmVsb3cgdG8gdW5pZnkgdGhlIGNoZWNrcy4KPj4gKwkJ CSAqLwo+PiArCQkJbWFzdGVyX2NydGNfc3RhdGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsK PiBTaG91bGQgd2UgaW5zdGVhZCB1cGRhdGUgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZSB0byBj aGVjayBiaWdqb2luZXIKPiBmaWVsZHMgYW5kIHByZXZlbnQgZmFzdHNldHMgb24gc3RhdGVzIGN1 cnJlbnRseSB1c2luZyB0aGUgYmlnam9pbmVyPyAKPgo+PiArCj4+ICsJCQlyZXQgPSBkcm1fYXRv bWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoJnN0YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZSk7Cj4+ICsJ CQlpZiAocmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJCXJldCA9IGRybV9hdG9t aWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoJnN0YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZSk7Cj4+ ICsJCQlpZiAocmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4g Kwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2Ny dGNfc3RhdGUsCj4+ICsJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+PiArCQlpZiAoIW5l d19jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSB8fCAhbmV3X2NydGNfc3RhdGUtPmJpZ2pvaW5lcikg ewo+PiArCQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKQo+PiArCQkJCWNvbnRpbnVl Owo+PiArCQl9Cj4+ICsKPj4gKwkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAm JiAhbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4g KwkJaWYgKG5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXIgJiYgIW5ld19jcnRjX3N0YXRlLT5iaWdq b2luZXJfc2xhdmUpIHsKPj4gKwkJCWlmICgxICsgY3J0Yy0+cGlwZSA+PSBJTlRFTF9OVU1fUElQ RVMoZGV2X3ByaXYpKSB7Cj4+ICsJCQkJRFJNX0RFQlVHX0tNUygiQmlnIGpvaW5lciBjb25maWd1 cmF0aW9uIHJlcXVpcmVzIENSVEMgKyAxIHRvIGJlIHVzZWQsIGRvZXNuJ3QgZXhpc3RcbiIpOwo+ PiArCQkJCXJldHVybiAtRUlOVkFMOwo+PiArCQkJfQo+PiArCj4+ICsJCQlzbGF2ZSA9IG5ld19j cnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGMgPQo+PiArCQkJCWludGVsX2dldF9jcnRj X2Zvcl9waXBlKGRldl9wcml2LCBjcnRjLT5waXBlICsgMSk7Cj4+ICsJCQlzbGF2ZV9jcnRjX3N0 YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgc2xhdmUpOwo+ PiArCQkJaWYgKElTX0VSUihzbGF2ZV9jcnRjX3N0YXRlKSkKPj4gKwkJCQlyZXR1cm4gUFRSX0VS UihzbGF2ZV9jcnRjX3N0YXRlKTsKPj4gKwo+PiArCQkJaWYgKHNsYXZlX2NydGNfc3RhdGUtPnVh cGkuZW5hYmxlKSB7Cj4+ICsJCQkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNdIEJpZyBqb2lu ZXIgY29uZmlndXJhdGlvbiByZXF1aXJlcyB0aGlzIENSVEMgdG8gYmUgdW5jb25maWd1cmVkXG4i LAo+PiArCQkJCQkgICAgICBzbGF2ZS0+YmFzZS5iYXNlLmlkLCBzbGF2ZS0+YmFzZS5uYW1lKTsK Pj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwkJCX0gZWxzZSB7Cj4+ICsJCQkJRFJNX0RFQlVH X0tNUygiW0NSVEM6JWQ6JXNdIFVzZWQgYXMgc2xhdmUgZm9yIGJpZyBqb2luZXJcbiIsCj4+ICsJ CQkJCSAgICAgIHNsYXZlLT5iYXNlLmJhc2UuaWQsIHNsYXZlLT5iYXNlLm5hbWUpOwo+PiArCQkJ CXJldCA9IGNvcHlfYmlnam9pbmVyX2NydGNfc3RhdGUoc2xhdmVfY3J0Y19zdGF0ZSwgbmV3X2Ny dGNfc3RhdGUpOwo+PiArCQkJfQo+PiArCQl9IGVsc2Ugewo+PiArCQkJbWFzdGVyID0gbmV3X2Ny dGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YzsKPj4gKwkJCWlmICghbWFzdGVyKQo+PiAr CQkJCWNvbnRpbnVlOwo+PiArCj4gV2hhdCBhYm91dCB0aGUgY2FzZSBvZiBhIENSVEMgdGhhdCBw cmV2aW91c2x5IG5lZWRlZCB0aGUgYmlnam9pbmVyIGJ1dAo+IGlzIHBlcmZvcm1pbmcgYSBtb2Rl c2V0IHN1Y2ggdGhhdCBpdCBubyBsb25nZXIgZG9lcz8gIEluIHRoYXQgY2FzZQo+IG5ld19jcnRj X3N0YXRlLT5iaWdqb2luZXIgd2lsbCBiZSBmYWxzZSBzbyB3ZSdsbCBlbmQgdXAgaW4gdGhpcyBi cmFuY2guCj4gQnV0IHRoZW4gd2Ugc2VlbSB0byBiZSB0cnlpbmcgdG8gZ3JhYiB0aGUgZXgtbWFz dGVyJ3MgbWFzdGVyIHdoaWNoCj4gZG9lc24ndCBtYWtlIHNlbnNlIGZvciB0aGlzIGNhc2Ugc2lu Y2Ugd2UgYWN0dWFsbHkgd2FudCB0byBncmFiIHRoZQo+IHNsYXZlIGFuZCBjbGVhciBpdCBvdXQu Cj4KPiBUaGUgY29kZSBpbiB0aGlzIGJyYW5jaCBzZWVtcyB0byBiZSB0cnlpbmcgdG8gb3BlcmF0 ZSBvbiBhIENSVEMgdGhhdCB3YXMKPiBwcmV2aW91c2x5IGEgc2xhdmUsIGJ1dCBhc3N1bWluZyBh biBleC1zbGF2ZSBpcyBzdGF5aW5nIGRpc2FibGVkCj4gKCFuZXdfY3J0Y19zdGF0ZS0+dWFwaS5l bmFibGUpLCB0aGVuIEkgdGhpbmsgd2UgdG9vayB0aGUgJ2NvbnRpbnVlJyBhdAo+IHRoZSB0b3Ag b2YgdGhlIGxvb3AgYW5kIG5ldmVyIG1ha2UgaXQgZG93biBoZXJlLgo+Cj4+ICsJCQltYXN0ZXJf Y3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZSgmc3RhdGUtPmJhc2UsIG1h c3Rlcik7Cj4+ICsJCQlpZiAoSVNfRVJSKG1hc3Rlcl9jcnRjX3N0YXRlKSkKPj4gKwkJCQlyZXR1 cm4gUFRSX0VSUihtYXN0ZXJfY3J0Y19zdGF0ZSk7Cj4+ICsKPj4gKwkJCWlmICghbWFzdGVyX2Ny dGNfc3RhdGUtPnVhcGkuZW5hYmxlICYmICFuZXdfY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpIHsK Pj4gKwkJCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc10gRGlzYWJsaW5nIHNsYXZlIGZyb20g YmlnIGpvaW5lclxuIiwKPj4gKwkJCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjLT5i YXNlLm5hbWUpOwo+PiArCQkJCXJldCA9IGNsZWFyX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNf c3RhdGUpOwo+PiArCQkJfQo+PiArCQl9Cj4+ICsJCWlmIChyZXQpCj4+ICsJCQlyZXR1cm4gcmV0 Owo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICAvKioKPj4gICAqIGlu dGVsX2F0b21pY19jaGVjayAtIHZhbGlkYXRlIHN0YXRlIG9iamVjdAo+PiAgICogQGRldjogZHJt IGRldmljZQo+PiBAQCAtMTM1ODMsNyArMTM3NTYsMTAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAo+PiAgCQlpZiAoIW5ld19jcnRj X3N0YXRlLT51YXBpLmVuYWJsZSkgewo+PiAgCQkJYW55X21zID0gdHJ1ZTsKPj4gLQkJCWNsZWFy X2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+PiArCj4+ICsJCQkvKiBiaWcgam9p bmVyIHNsYXZlIGlzIGNsZWFyZWQgaW4gaW50ZWxfYXRvbWljX2NoZWNrX2JpZ2pvaW5lcigpICov Cj4+ICsJCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4+ICsJCQkJY2xl YXJfaW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4+ICAJCQljb250aW51ZTsKPj4g IAkJfQo+PiAgCj4+IEBAIC0xMzU5Nyw2ICsxMzc3MywxMCBAQCBzdGF0aWMgaW50IGludGVsX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJYW55X21zID0gdHJ1ZTsK Pj4gIAl9Cj4+ICAKPj4gKwlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2tfYmlnam9pbmVyKHN0YXRl KTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICAJcmV0ID0gZHJtX2Rw X21zdF9hdG9taWNfY2hlY2soJnN0YXRlLT5iYXNlKTsKPj4gIAlpZiAocmV0KQo+PiAgCQlnb3Rv IGZhaWw7Cj4+IEBAIC0xMzc0Nyw3ICsxMzkyNyw5IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0 ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgCj4+ICAJY29tbWl0X3BpcGVfY29u ZmlnKHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+PiAgCj4+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlpZiAobmV3X2NydGNfc3RhdGUtPmJpZ2pv aW5lcikKPj4gKwkJey8qIE5vdCBzdXBwb3J0ZWQgeWV0ICovfQo+PiArCWVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKPj4gIAkJc2tsX3VwZGF0ZV9wbGFuZXNfb25fY3J0YyhzdGF0 ZSwgY3J0Yyk7Cj4+ICAJZWxzZQo+PiAgCQlpOXh4X3VwZGF0ZV9wbGFuZXNfb25fY3J0YyhzdGF0 ZSwgY3J0Yyk7Cj4+IEBAIC0xNjg0Niw3ICsxNzAyOCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX21v ZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCQl9Cj4+ ICAKPj4gIAkJaW50ZWxfYndfY3J0Y191cGRhdGUoYndfc3RhdGUsIGNydGNfc3RhdGUpOwo+PiAt Cj4+ICAJCWNvcHlfaHdfdG9fdWFwaV9zdGF0ZShjcnRjX3N0YXRlKTsKPj4gIAkJaW50ZWxfcGlw ZV9jb25maWdfc2FuaXR5X2NoZWNrKGRldl9wcml2LCBjcnRjX3N0YXRlKTsKPj4gIAl9Cj4gU3Ry YXAgd2hpdGVzcGFjZSBjaGFuZ2UuCj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPj4gaW5kZXggMzk0Zjg0ZTVkNTgzLi5kZDAz MjlhNGI5ZmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV90eXBlcy5oCj4+IEBAIC03NzQsNyArNzc0LDcgQEAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgewo+PiAgCXN0cnVjdCB7Cj4+ICAJCWJvb2wgYWN0aXZlLCBlbmFibGU7Cj4+ ICAJCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQsICpnYW1tYV9sdXQsICpj dG07Cj4+IC0JCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGUsIGFkanVzdGVkX21vZGU7Cj4+ ICsJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGUsIGFkanVzdGVkX21vZGUsIHRyYW5zY29k ZXJfbW9kZTsKPj4gIAl9IGh3Owo+PiAgCj4+ICAJLyoqCj4+IEBAIC0xMDA1LDYgKzEwMDUsMTUg QEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+PiAgCS8qIGVuYWJsZSBwaXBlIGNzYz8gKi8K Pj4gIAlib29sIGNzY19lbmFibGU7Cj4+ICAKPj4gKwkvKiBlbmFibGUgcGlwZSBiaWcgam9pbmVy PyAqLwo+PiArCWJvb2wgYmlnam9pbmVyOwo+PiArCj4+ICsJLyogYmlnIGpvaW5lciBzbGF2ZSBj cnRjPyAqLwo+PiArCWJvb2wgYmlnam9pbmVyX3NsYXZlOwo+PiArCj4+ICsJLyogbGlua2VkIGNy dGMgZm9yIGJpZ2pvaW5lciwgZWl0aGVyIHNsYXZlIG9yIG1hc3RlciAqLwo+PiArCXN0cnVjdCBp bnRlbF9jcnRjICpiaWdqb2luZXJfbGlua2VkX2NydGM7Cj4+ICsKPj4gIAkvKiBEaXNwbGF5IFN0 cmVhbSBjb21wcmVzc2lvbiBzdGF0ZSAqLwo+PiAgCXN0cnVjdCB7Cj4+ICAJCWJvb2wgY29tcHJl c3Npb25fZW5hYmxlOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4+ IGluZGV4IDA0NmUxNjYyZDFlMy4uM2Q0ODdjZTE2MTUxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4+IEBAIC0yMTA1LDYgKzIxMDUsMTkgQEAgc3RhdGlj IGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPj4gIAlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGludGVsX2RwLT5jb21tb25fcmF0ZXNb bGltaXRzLT5tYXhfY2xvY2tdOwo+PiAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gbGltaXRz LT5tYXhfbGFuZV9jb3VudDsKPj4gIAo+PiArCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2Nr ID4gaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soaW50ZWxfZHAsIGZhbHNlKSkgewo+ PiArCQlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA+IGludGVsX2RwX2Rvd25zdHJlYW1f bWF4X2RvdGNsb2NrKGludGVsX2RwLCB0cnVlKSkgewo+PiArCQkJRFJNX0RFQlVHX0tNUygiQ2xv Y2sgcmF0ZSB0b28gaGlnaCBmb3IgYmlnIGpvaW5lclxuIik7Cj4+ICsJCQlyZXR1cm4gLUVJTlZB TDsKPj4gKwkJfQo+PiArCQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+PiArCQkJ RFJNX0RFQlVHX0tNUygiQ2Fubm90IHNwbGl0IGVEUCBzdHJlYW0gaW4gYmlnam9pbmVyIGNvbmZp Z3VyYXRpb24uXG4iKTsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQl9Cj4+ICsJCXBpcGVf Y29uZmlnLT5iaWdqb2luZXIgPSB0cnVlOwo+PiArCQlEUk1fREVCVUdfS01TKCJVc2luZyBiaWdq b2luZXIgY29uZmlndXJhdGlvblxuIik7Cj4+ICsJfQo+PiArCj4+ICAJaWYgKGludGVsX2RwX2lz X2VkcChpbnRlbF9kcCkpIHsKPj4gIAkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Nl ZF9icHAgPQo+PiAgCQkJbWluX3QodTE2LCBkcm1fZWRwX2RzY19zaW5rX291dHB1dF9icHAoaW50 ZWxfZHAtPmRzY19kcGNkKSA+PiA0LAo+PiBAQCAtMjEyMiwxMiArMjEzNSwxMiBAQCBzdGF0aWMg aW50IGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+PiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+PiAgCQkJCQkJICAgIGFk anVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4+ICAJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19oZGlzcGxheSwKPj4gLQkJCQkJCSAgICBmYWxzZSk7Cj4+ICsJCQkJCQkgICAgcGlwZV9jb25m aWctPmJpZ2pvaW5lcik7Cj4+ICAJCWRzY19kcF9zbGljZV9jb3VudCA9Cj4+ICAJCQlpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+PiAgCQkJCQkJICAgICBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrLAo+PiAgCQkJCQkJICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5LAo+PiAtCQkJCQkJICAgICBmYWxzZSk7Cj4+ICsJCQkJCQkgICAgIHBpcGVfY29uZmlnLT5i aWdqb2luZXIpOwo+PiAgCQlpZiAoIWRzY19tYXhfb3V0cHV0X2JwcCB8fCAhZHNjX2RwX3NsaWNl X2NvdW50KSB7Cj4+ICAJCQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3Vu dCBub3Qgc3VwcG9ydGVkXG4iKTsKPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+PiBAQCAtMjE0Miwx MyArMjE1NSwxMyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiAgCSAqIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11 bSBDZGNsb2NrIGFuZCBpZiBzbGljZSBjb3VudCBpcyBldmVuCj4+ICAJICogdGhlbiB3ZSBuZWVk IHRvIHVzZSAyIFZEU0MgaW5zdGFuY2VzLgo+PiAgCSAqLwo+PiAtCWlmIChhZGp1c3RlZF9tb2Rl LT5jcnRjX2Nsb2NrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7Cj4+IC0JCWlmIChwaXBl X2NvbmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCA+IDEpIHsKPj4gLQkJCXBpcGVfY29uZmln LT5kc2NfcGFyYW1zLmRzY19zcGxpdCA9IHRydWU7Cj4+IC0JCX0gZWxzZSB7Cj4+ICsJaWYgKGFk anVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgfHwgcGlw ZV9jb25maWctPmJpZ2pvaW5lcikgewo+PiArCQlpZiAocGlwZV9jb25maWctPmRzY19wYXJhbXMu c2xpY2VfY291bnQgPCAyKSB7Cj4+ICAJCQlEUk1fREVCVUdfS01TKCJDYW5ub3Qgc3BsaXQgc3Ry ZWFtIHRvIHVzZSAyIFZEU0MgaW5zdGFuY2VzXG4iKTsKPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ PiAgCQl9Cj4+ICsKPj4gKwkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuZHNjX3NwbGl0ID0gdHJ1 ZTsKPj4gIAl9Cj4+ICAKPj4gIAlyZXQgPSBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50 ZWxfZHAsIHBpcGVfY29uZmlnKTsKPj4gLS0gCj4+IDIuMjAuMQo+Pgo+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=