From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [RFC 6/7] drm/i915: Try to make bigjoiner work in atomic check. Date: Wed, 3 Jul 2019 10:02:58 +0200 Message-ID: <3ccbc816-79f3-d9bd-bbd3-cb6f1a5d4a95@linux.intel.com> References: <20190702194205.13366-1-maarten.lankhorst@linux.intel.com> <20190702194205.13366-7-maarten.lankhorst@linux.intel.com> <20190703003252.GB3708@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C56E6E0B3 for ; Wed, 3 Jul 2019 08:03:00 +0000 (UTC) In-Reply-To: <20190703003252.GB3708@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: Manasi Navare Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDMtMDctMjAxOSBvbSAwMjozMiBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6Cj4gT24gVHVlLCBK dWwgMDIsIDIwMTkgYXQgMDk6NDI6MDRQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IFdoZW4gdGhlIGNsb2NrIGlzIGhpZ2hlciB0aGFuIHRoZSBkb3RjbG9jaywgdHJ5IHdpdGgg MiBwaXBlcyBlbmFibGVkLgo+PiBJZiB3ZSBjYW4gZW5hYmxlIDIsIHRoZW4gd2Ugd2lsbCBnbyBp bnRvIGJpZyBqb2luZXIgbW9kZSwgYW5kIHN0ZWFsCj4+IHRoZSBhZGphY2VudCBjcnRjLgo+Pgo+ PiBUaGlzIG9ubHkgbGlua3MgdGhlIHBsYW5lcyBpbiBzb2Z0d2FyZSwgbm8gaGFyZHdhcmUgcHJv Z3JhbW1pbmcgaXMKPj4gZG9uZSB5ZXQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAxNDUgKysrKysrKysr KysrKysrKysrLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jICAg ICAgfCAgMjIgKystCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAg ICAgICB8ICAgNiArCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYwo+PiBpbmRleCBkOGU2M2YxMzNhNjIuLmNhNzIwNTgyMDJmOCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAgLTEyMjAz LDYgKzEyMjAzLDQ3IEBAIHN0YXRpYyB2b2lkIGNvcHlfaHdfdG9fdWFwaV9zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gIAljcnRjX3N0YXRlLT51YXBpLmFkanVz dGVkX21vZGUgPSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+PiAgfQo+PiAgCj4+ICtz dGF0aWMgaW50Cj4+ICtjb3B5X2JpZ2pvaW5lcl9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+PiArCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqZnJvbV9jcnRjX3N0YXRlKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpz YXZlZF9zdGF0ZTsKPj4gKwo+PiArCXNhdmVkX3N0YXRlID0ga21lbWR1cChmcm9tX2NydGNfc3Rh dGUsIHNpemVvZigqc2F2ZWRfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIXNhdmVkX3N0 YXRlKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCXNhdmVkX3N0YXRlLT51YXBpID0g Y3J0Y19zdGF0ZS0+dWFwaTsKPj4gKwlzYXZlZF9zdGF0ZS0+c2NhbGVyX3N0YXRlID0gY3J0Y19z dGF0ZS0+c2NhbGVyX3N0YXRlOwo+PiArCXNhdmVkX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGNydGNf c3RhdGUtPnNoYXJlZF9kcGxsOwo+PiArCXNhdmVkX3N0YXRlLT5kcGxsX2h3X3N0YXRlID0gY3J0 Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZTsKPj4gKwlzYXZlZF9zdGF0ZS0+Y3JjX2VuYWJsZWQgPSBj cnRjX3N0YXRlLT5jcmNfZW5hYmxlZDsKPj4gKwo+PiArCWludGVsX2NydGNfZnJlZV9od19zdGF0 ZShjcnRjX3N0YXRlKTsKPj4gKwltZW1jcHkoY3J0Y19zdGF0ZSwgc2F2ZWRfc3RhdGUsIHNpemVv ZigqY3J0Y19zdGF0ZSkpOwo+PiArCWtmcmVlKHNhdmVkX3N0YXRlKTsKPj4gKwo+PiArCS8qIFJl LWluaXQgaHcgc3RhdGUgKi8KPj4gKwltZW1zZXQoJmNydGNfc3RhdGUtPmh3LCAwLCBzaXplb2Yo c2F2ZWRfc3RhdGUtPmh3KSk7Cj4+ICsJY3J0Y19zdGF0ZS0+aHcuZW5hYmxlID0gZnJvbV9jcnRj X3N0YXRlLT5ody5lbmFibGU7Cj4+ICsJY3J0Y19zdGF0ZS0+aHcuYWN0aXZlID0gZnJvbV9jcnRj X3N0YXRlLT5ody5hY3RpdmU7Cj4+ICsJY3J0Y19zdGF0ZS0+aHcubW9kZSA9IGZyb21fY3J0Y19z dGF0ZS0+aHcubW9kZTsKPj4gKwljcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlID0gZnJvbV9j cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+PiArCj4+ICsJLyogU29tZSBmaXh1cHMgKi8K Pj4gKwljcnRjX3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZCA9IGZyb21fY3J0Y19zdGF0ZS0+dWFw aS5tb2RlX2NoYW5nZWQ7Cj4+ICsJY3J0Y19zdGF0ZS0+dWFwaS5jb25uZWN0b3JzX2NoYW5nZWQg PSBmcm9tX2NydGNfc3RhdGUtPnVhcGkuY29ubmVjdG9yc19jaGFuZ2VkOwo+PiArCWNydGNfc3Rh dGUtPnVhcGkuYWN0aXZlX2NoYW5nZWQgPSBmcm9tX2NydGNfc3RhdGUtPnVhcGkuYWN0aXZlX2No YW5nZWQ7Cj4+ICsJY3J0Y19zdGF0ZS0+bnYxMl9wbGFuZXMgPSBjcnRjX3N0YXRlLT5jOF9wbGFu ZXMgPSBjcnRjX3N0YXRlLT51cGRhdGVfcGxhbmVzID0gMDsKPj4gKwo+PiArCWNydGNfc3RhdGUt PmJpZ2pvaW5lcl9tYXN0ZXJfY3J0YyA9IHRvX2ludGVsX2NydGMoZnJvbV9jcnRjX3N0YXRlLT51 YXBpLmNydGMpOwo+PiArCj4+ICsJLyogWFhYL1RPRE86IERvIHdlIG5lZWQgdGhlIG1hc3Rlcidz IGNwdV90cmFuc2NvZGVyIGhlcmUsIG9yIHJlc2V0IHRvIGRlZmF1bHQ/ICovCj4+ICsJY3J0Y19z dGF0ZS0+Y3B1X3RyYW5zY29kZXIgPSAoZW51bSB0cmFuc2NvZGVyKXRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjKS0+cGlwZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiAr Cj4+ICBzdGF0aWMgaW50Cj4+ICBjbGVhcl9pbnRlbF9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAgewo+PiBAQCAtMTM1NzcsNiArMTM2MTgsOTYgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jaGVja19mYXN0c2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGEKPj4gIAluZXdfY3J0Y19zdGF0ZS0+aGFzX2RycnMgPSBv bGRfY3J0Y19zdGF0ZS0+aGFzX2RycnM7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRpYyBpbnQgaW50ZWxf YXRvbWljX2NoZWNrX2JpZ2pvaW5lcihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK Pj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0 YXRlLT5iYXNlLmRldik7Cj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlLCAqbmV3X2NydGNfc3RhdGUsICpzbGF2ZV9jcnRjX3N0YXRlLCAqbWFzdGVyX2NydGNfc3Rh dGU7Cj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMsICpzbGF2ZSwgKm1hc3RlcjsKPj4gKwlp bnQgaSwgcmV0ID0gMDsKPj4gKwo+PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4+ ICsJCXJldHVybiAwOwo+PiArCj4+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+PiArCQkJCQkgICAgbmV3X2NydGNfc3Rh dGUsIGkpIHsKPj4gKwkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX21hc3Rlcl9jcnRj KQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJaWYgKGNydGMtPnBpcGUgPT0gUElQRV9BKSB7 Cj4+ICsJCQlEUk1fRVJST1IoIkJpZ2pvaW5lciBzbGF2ZSBvbiBwaXBlIEE/XG4iKTsKPj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+PiArCQl9Cj4+ICsKPj4gKwkJLyogY3J0YyBzdGF5aW5nIGluIHNs YXZlIG1vZGU/ICovCj4+ICsJCWlmICghbmV3X2NydGNfc3RhdGUtPnVhcGkuZW5hYmxlKQo+PiAr CQkJY29udGludWU7Cj4+ICsKPj4gKwkJaWYgKG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUp IHx8IG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSkgewo+PiArCQkJbWFzdGVyID0gaW50ZWxf Z2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsIGNydGMtPnBpcGUgLSAxKTsKPj4gKwkJCW1hc3Rl cl9jcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwg bWFzdGVyKTsKPj4gKwkJCWlmIChJU19FUlIobWFzdGVyX2NydGNfc3RhdGUpKQo+PiArCQkJCXJl dHVybiBQVFJfRVJSKG1hc3Rlcl9jcnRjX3N0YXRlKTsKPj4gKwo+PiArCQkJLyoKPj4gKwkJCSAq IEZvcmNlIG1vZGVzZXQgb24gbWFzdGVyLCB0byByZWNhbGN1bGF0ZSBiaWdqb2luZXIKPj4gKwkJ CSAqIHN0YXRlLgo+PiArCQkJICoKPj4gKwkJCSAqIElmIG1hc3Rlcl9jcnRjX3N0YXRlIHdhcyBu b3QgcGFydCBvZiB0aGUgYXRvbWljIGNvbW1pdCwKPj4gKwkJCSAqIHdlIHdpbGwgZmFpbCBiZWNh dXNlIHRoZSBtYXN0ZXIgd2FzIG5vdCBkZWNvbmZpZ3VyZWQsCj4+ICsJCQkgKiBidXQgYXQgbGVh c3QgZmFpbCBiZWxvdyB0byB1bmlmeSB0aGUgY2hlY2tzLgo+PiArCQkJICovCj4+ICsJCQltYXN0 ZXJfY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+PiArCj4+ICsJCQlyZXQg PSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoJnN0YXRlLT5iYXNlLCAmY3J0Yy0+YmFz ZSk7Cj4+ICsJCQlpZiAocmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJCXJldCA9 IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoJnN0YXRlLT5iYXNlLCAmY3J0Yy0+ YmFzZSk7Cj4+ICsJCQlpZiAocmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsJCX0KPj4gKwl9 Cj4+ICsKPj4gKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 Yywgb2xkX2NydGNfc3RhdGUsCj4+ICsJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+PiAr CQlpZiAoIW5ld19jcnRjX3N0YXRlLT51YXBpLmVuYWJsZSB8fCAhbmV3X2NydGNfc3RhdGUtPmJp Z2pvaW5lcikgewo+PiArCQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKQo+PiArCQkJ CWNvbnRpbnVlOwo+PiArCQl9Cj4+ICsKPj4gKwkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19jcnRj X3N0YXRlKSAmJiAhbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQo+PiArCQkJY29udGludWU7 Cj4+ICsKPj4gKwkJaWYgKDEgKyBjcnRjLT5waXBlID49IElOVEVMX0lORk8oZGV2X3ByaXYpLT5u dW1fcGlwZXMpIHsKPj4gKwkJCURSTV9ERUJVR19LTVMoIkJpZyBqb2luZXIgY29uZmlndXJhdGlv biByZXF1aXJlcyBDUlRDICsgMSB0byBiZSB1c2VkLCBkb2Vzbid0IGV4aXN0XG4iKTsKPj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+PiArCQl9Cj4+ICsKPj4gKwkJc2xhdmUgPSBpbnRlbF9nZXRfY3J0 Y19mb3JfcGlwZShkZXZfcHJpdiwgY3J0Yy0+cGlwZSArIDEpOwo+PiArCQlzbGF2ZV9jcnRjX3N0 YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgc2xhdmUpOwo+ PiArCQlpZiAoSVNfRVJSKHNsYXZlX2NydGNfc3RhdGUpKQo+PiArCQkJcmV0dXJuIFBUUl9FUlIo c2xhdmVfY3J0Y19zdGF0ZSk7Cj4+ICsKPj4gKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5iaWdqb2lu ZXIgJiYgc2xhdmVfY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpIHsKPj4gKwkJCURSTV9ERUJVR19L TVMoIltDUlRDOiVkOiVzXSBCaWcgam9pbmVyIGNvbmZpZ3VyYXRpb24gcmVxdWlyZXMgdGhpcyBD UlRDIHRvIGJlIHVuY29uZmlndXJlZFxuIiwKPj4gKwkJCQkgICAgICBzbGF2ZS0+YmFzZS5iYXNl LmlkLCBzbGF2ZS0+YmFzZS5uYW1lKTsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQl9IGVs c2UgaWYgKG5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXIpIHsKPj4gKwkJCURSTV9ERUJVR19LTVMo IltDUlRDOiVkOiVzXSBVc2VkIGFzIHNsYXZlIGZvciBiaWcgam9pbmVyXG4iLAo+PiArCQkJCSAg ICAgIHNsYXZlLT5iYXNlLmJhc2UuaWQsIHNsYXZlLT5iYXNlLm5hbWUpOwo+PiArCQkJcmV0ID0g Y29weV9iaWdqb2luZXJfY3J0Y19zdGF0ZShzbGF2ZV9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0 ZSk7Cj4+ICsJCX0gZWxzZSBpZiAoIXNsYXZlX2NydGNfc3RhdGUtPnVhcGkuZW5hYmxlKSB7Cj4+ ICsJCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc10gRGlzYWJsaW5nIHNsYXZlIGZyb20gYmln IGpvaW5lclxuIiwKPj4gKwkJCQkgICAgICBzbGF2ZS0+YmFzZS5iYXNlLmlkLCBzbGF2ZS0+YmFz ZS5uYW1lKTsKPj4gKwkJCXJldCA9IGNsZWFyX2ludGVsX2NydGNfc3RhdGUoc2xhdmVfY3J0Y19z dGF0ZSk7Cj4+ICsJCX0KPj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJfQo+ PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gIC8qKgo+PiAgICogaW50ZWxfYXRvbWlj X2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0Cj4+ICAgKiBAZGV2OiBkcm0gZGV2aWNlCj4+ IEBAIC0xMzYxMSw3ICsxMzc0MiwxMCBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCj4+ICAJCWlmICghbmV3X2NydGNfc3RhdGUtPnVh cGkuZW5hYmxlKSB7Cj4+ICAJCQlhbnlfbXMgPSB0cnVlOwo+PiAtCQkJY2xlYXJfaW50ZWxfY3J0 Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4+ICsKPj4gKwkJCS8qIGJpZyBqb2luZXIgaXMgc2xh dmUgY2xlYXJlZCBpbiBpbnRlbF9hdG9taWNfY2hlY2tfYmlnam9pbmVyKCkgKi8KPj4gKwkJCWlm IChvbGRfY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUgfHwgIW9sZF9jcnRjX3N0YXRlLT5iaWdqb2lu ZXIpCj4+ICsJCQkJY2xlYXJfaW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4+ICAJ CQljb250aW51ZTsKPj4gIAkJfQo+PiAgCj4+IEBAIC0xMzYyNSw2ICsxMzc1OSwxMCBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJ YW55X21zID0gdHJ1ZTsKPj4gIAl9Cj4+ICAKPj4gKwlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2tf Ymlnam9pbmVyKHN0YXRlKTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ ICAJcmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2soJnN0YXRlLT5iYXNlKTsKPj4gIAlpZiAo cmV0KQo+PiAgCQlnb3RvIGZhaWw7Cj4+IEBAIC0xMzcyOSw2ICsxMzg2NywxMSBAQCBzdGF0aWMg dm9pZCBpbnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gIAllbHNl IGlmIChuZXdfcGxhbmVfc3RhdGUpCj4+ICAJCWludGVsX2ZiY19lbmFibGUoY3J0YywgbmV3X2Ny dGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4+ICAKPj4gKwlpZiAobmV3X2NydGNfc3RhdGUt PmJpZ2pvaW5lcikgewo+PiArCQlEUk1fRVJST1IoIlBsYW5lIHVwZGF0ZXMgbm90IHN1cHBvcnRl ZCBpbiBiaWdqb2luZXIgY29uZmlndXJhdGlvbiB5ZXRcbiIpOwo+PiArCQlyZXR1cm47Cj4+ICsJ fQo+PiArCj4+ICAJaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RhdGUsIGNydGMpOwo+PiAgCj4+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHAuYwo+PiBpbmRleCBiZjI4OTcwYzAxYWEuLjUwNjNjOGVlNmZkOSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+PiBAQCAtMjA0Niw2 ICsyMDQ2LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ICAJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBpbnRl bF9kcC0+Y29tbW9uX3JhdGVzW2xpbWl0cy0+bWF4X2Nsb2NrXTsKPj4gIAlwaXBlX2NvbmZpZy0+ bGFuZV9jb3VudCA9IGxpbWl0cy0+bWF4X2xhbmVfY291bnQ7Cj4+ICAKPj4gKwlpZiAoYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19jbG9jayA+IGludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKGlu dGVsX2RwLCBmYWxzZSkpIHsKPj4gKwkJaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBp bnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9kcCwgdHJ1ZSkpIHsKPj4gKwkJ CURSTV9ERUJVR19LTVMoIkNsb2NrIHJhdGUgdG9vIGhpZ2ggZm9yIGJpZyBqb2luZXJcbiIpOwo+ PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJCX0KPj4gKwkJcGlwZV9jb25maWctPmJpZ2pvaW5l ciA9IHRydWU7Cj4+ICsJCURSTV9ERUJVR19LTVMoIlVzaW5nIGJpZ2pvaW5lciBjb25maWd1cmF0 aW9uXG4iKTsKPj4gKwl9Cj4gSWYgd2UgbGF0ZXIgY2Fubm90IGNvbXB1dGUgRFNDIHBhcmFtZXRl cnMgYW5kIGRzYy0+Y29tcHJlc3Npb25fZW4gY2Fubm90IGJlIHNldCB0aGVuIHdlIG5lZWQgdG8K PiBzZXQgcGlwZV9jb25maWctPmJpZ19qb2luZXIgdG8gZmFsc2UgYXMgd2VsbCBhcyB3ZSBjYW5u b3QgZW5hYmxlIGJpZyBqb2luZXIgd2l0aG91dCBEU0MKCkRTQyBpcyBvbmx5IGVuYWJsZWQgd2hl biB3ZSBkb24ndCBoYXZlIGVub3VnaCBiYW5kd2lkdGguIFRoZSBvbmx5IHRpbWUgdGhhdCBmdW5j dGlvbgpyZXR1cm5zIGVhcmx5IGlzIHdoZW4gaXQgZW5jb3VudGVycyBhIGZhaWx1cmUuCgo+IE1h bmFzaQo+Cj4+ICsKPj4gIAlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+PiAgCQlw aXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCA9Cj4+ICAJCQltaW5fdCh1MTYs IGRybV9lZHBfZHNjX3Npbmtfb3V0cHV0X2JwcChpbnRlbF9kcC0+ZHNjX2RwY2QpID4+IDQsCj4+ IEBAIC0yMDUzLDYgKzIwNjIsMTEgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAkJcGlwZV9jb25maWctPmRzY19w YXJhbXMuc2xpY2VfY291bnQgPQo+PiAgCQkJZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV9jb3Vu dChpbnRlbF9kcC0+ZHNjX2RwY2QsCj4+ICAJCQkJCQkJdHJ1ZSk7Cj4+ICsKPj4gKwkJaWYgKHBp cGVfY29uZmlnLT5iaWdqb2luZXIgJiYgcGlwZV9jb25maWctPmRzY19wYXJhbXMuc2xpY2VfY291 bnQgPCA0KSB7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJDYW5ub3Qgc3BsaXQgZURQIHN0cmVhbSBp biBiaWdqb2luZXIgY29uZmlndXJhdGlvbi5cbiIpOwo+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ ICsJCX0KPj4gIAl9IGVsc2Ugewo+PiAgCQl1MTYgZHNjX21heF9vdXRwdXRfYnBwOwo+PiAgCQl1 OCBkc2NfZHBfc2xpY2VfY291bnQ7Cj4+IEBAIC0yMDgwLDEzICsyMDk0LDEzIEBAIHN0YXRpYyBp bnQgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4+ICAJICogaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIENkY2xvY2sgYW5kIGlmIHNsaWNl IGNvdW50IGlzIGV2ZW4KPj4gIAkgKiB0aGVuIHdlIG5lZWQgdG8gdXNlIDIgVkRTQyBpbnN0YW5j ZXMuCj4+ICAJICovCj4+IC0JaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEpIHsKPj4gLQkJaWYgKHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNs aWNlX2NvdW50ID4gMSkgewo+PiAtCQkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuZHNjX3NwbGl0 ID0gdHJ1ZTsKPj4gLQkJfSBlbHNlIHsKPj4gKwlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9j ayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSB8fCBwaXBlX2NvbmZpZy0+Ymlnam9pbmVyKSB7 Cj4+ICsJCWlmIChwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCA8IDIpIHsKPj4g IAkJCURSTV9ERUJVR19LTVMoIkNhbm5vdCBzcGxpdCBzdHJlYW0gdG8gdXNlIDIgVkRTQyBpbnN0 YW5jZXNcbiIpOwo+PiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAJCX0KPj4gKwo+PiArCQlwaXBl X2NvbmZpZy0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQgPSB0cnVlOwo+PiAgCX0KPj4gIAo+PiAgCXJl dCA9IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhpbnRlbF9kcCwgcGlwZV9jb25maWcpOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCA4YTlmMDg5ODQzYmMuLmQ2ZWI3Nzg4 ZWQ0MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAgLTk3Niw2ICs5NzYs MTIgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+PiAgCS8qIGVuYWJsZSBwaXBlIGNzYz8g Ki8KPj4gIAlib29sIGNzY19lbmFibGU7Cj4+ICAKPj4gKwkvKiBlbmFibGUgcGlwZSBiaWcgam9p bmVyPyAqLwo+PiArCWJvb2wgYmlnam9pbmVyOwo+PiArCj4+ICsJLyogYmlnIGpvaW5lciBtYXN0 ZXIgQ1JUQyAqLwo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpiaWdqb2luZXJfbWFzdGVyX2NydGM7 Cj4+ICsKPj4gIAkvKiBEaXNwbGF5IFN0cmVhbSBjb21wcmVzc2lvbiBzdGF0ZSAqLwo+PiAgCXN0 cnVjdCB7Cj4+ICAJCWJvb2wgY29tcHJlc3Npb25fZW5hYmxlOwo+PiAtLSAKPj4gMi4yMC4xCj4+ Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==