From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 4/5] drm/i915/kbl+: Enable IPC only for symmetric memory configurations Date: Wed, 22 Aug 2018 08:39:47 -0700 Message-ID: <20180822153947.GB2340@intel.com> References: <20180726141410.2185-1-mahesh1.kumar@intel.com> <20180726141410.2185-5-mahesh1.kumar@intel.com> <20180817182020.GC8880@intel.com> <6a9242d2-4407-561a-6725-d3260fff25e2@intel.com> <5ccab3a0-6e23-a7b3-c5ee-44f15f921cd5@intel.com> <20180821185639.GA4050@intel.com> <6deb00cc-2c3b-9df4-f1df-1ed84b4e80fc@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 51DE06E38D for ; Wed, 22 Aug 2018 15:39:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <6deb00cc-2c3b-9df4-f1df-1ed84b4e80fc@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Kumar, Mahesh" Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBdWcgMjIsIDIwMTggYXQgMDY6MzI6MzNQTSArMDUzMCwgS3VtYXIsIE1haGVzaCB3 cm90ZToKPiBIaSwKPiAKPiAKPiBPbiA4LzIyLzIwMTggMTI6MjYgQU0sIFJvZHJpZ28gVml2aSB3 cm90ZToKPiA+IE9uIFR1ZSwgQXVnIDIxLCAyMDE4IGF0IDA5OjMwOjIxUE0gKzA1MzAsIEt1bWFy LCBNYWhlc2ggd3JvdGU6Cj4gPiA+IEhpLAo+ID4gPiAKPiA+ID4gCj4gPiA+IE9uIDgvMjEvMjAx OCA4OjI3IFBNLCBLdW1hciwgTWFoZXNoIHdyb3RlOgo+ID4gPiA+IEhpLAo+ID4gPiA+IAo+ID4g PiA+IAo+ID4gPiA+IE9uIDgvMTcvMjAxOCAxMTo1MCBQTSwgUm9kcmlnbyBWaXZpIHdyb3RlOgo+ ID4gPiA+ID4gT24gVGh1LCBKdWwgMjYsIDIwMTggYXQgMDc6NDQ6MDlQTSArMDUzMCwgTWFoZXNo IEt1bWFyIHdyb3RlOgo+ID4gPiA+ID4gPiBJUEMgbWF5IGNhdXNlIHVuZGVyZmxvd3MgaWYgbm90 IHVzZWQgd2l0aCBkdWFsIGNoYW5uZWwgc3ltbWV0cmljCj4gPiA+ID4gPiA+IG1lbW9yeSBjb25m aWd1cmF0aW9uLiBEaXNhYmxlIElQQyBmb3Igbm9uIHN5bW1ldHJpYyBjb25maWd1cmF0aW9ucyBp bgo+ID4gPiA+ID4gPiBhZmZlY3RlZCBwbGF0Zm9ybXMuCj4gPiA+ID4gPiA+IERpc3BsYXkgV0Eg IzExNDEKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE1haGVzaCBLdW1h ciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Cj4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiAg wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyB8IDQzCj4gPiA+ID4gPiA+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiA+ID4gPiA+ICDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIHzCoCAxICsKPiA+ID4gPiA+ID4gIMKgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfMKgIDIgKy0KPiA+ID4gPiA+ID4gIMKgIDMgZmls ZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiA+ID4g PiBpbmRleCA4NmJjMmU2ODU1MjIuLjIyNzM2NjQxNjZiYyAxMDA2NDQKPiA+ID4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+ID4gPiA+IEBAIC0xMTQxLDIxICsxMTQx LDQ3IEBAIHNrbF9kcmFtX2dldF9jaGFubmVsX2luZm8oc3RydWN0Cj4gPiA+ID4gPiA+IGRyYW1f Y2hhbm5lbF9pbmZvICpjaCwgdTMyIHZhbCkKPiA+ID4gPiA+ID4gIMKgwqDCoMKgwqAgcmV0dXJu IDA7Cj4gPiA+ID4gPiA+ICDCoCB9Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiArc3RhdGljIGJv b2wKPiA+ID4gPiA+ID4gK2ludGVsX2lzX2RyYW1faXBjX2NhcGFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIHZhbF9jaDAsIHUzMiB2YWxfY2gxLAo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGRyYW1fY2hhbm5lbF9pbmZvICpjaDApCj4gPiA+ID4gPiB3aGF0 IGFib3V0Cj4gPiA+ID4gPiBpbnRlbF9pc19kcmFtX3N5bW1ldHJpYygpID8KPiA+ID4gPiBzb3Vu ZHMgZ29vZC4KPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gK8KgwqDCoCAvKiBEaXNwbGF5IFdB ICMxMTQxOiBTS0w6YWxsIEtCTDphbGwgQ05MOkEgQ05MOkIgKi8KPiA+ID4gPiA+IG1vdmUgdGhp cyB0byB0aGUgd2EgY2FsbCwgbm90IHRoZSB0aGUgZnVuY3Rpb24gY2hlY2suLi4KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiArwqDCoMKgIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gOSAmJgo+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgIUlTX0NOTF9SRVZJRChkZXZfcHJpdiwgQ05MX1JFVklE X0EwLCBDTkxfUkVWSURfQjApKQo+ID4gPiA+ID4gcGxlYXNlIGRvbid0IGFkZCBDTkwgcHJlLXBy b2Qgd2EKPiA+ID4gPiBvayBzdXJlCj4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g dHJ1ZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArwqDCoMKgIGlmICghSVNfS0FCWUxBS0Uo ZGV2X3ByaXYpICYmICFJU19TS1lMQUtFKGRldl9wcml2KSkKPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiB0cnVlOwo+ID4gPiA+ID4gYWN0dWFsbHkgcmVtb3ZlIGFsbCBwbGF0Zm9y bXMgY2hlY2tzIGhlcmUuLi4KPiA+ID4gPiBBZ3JlZSB3aWxsIHJlbW92ZSB0aGVzZSBjaGVja3Ms IGZ1bmN0aW9uIHdpbGwganVzdCByZXR1cm4gaWYgbWVtb3J5IGlzCj4gPiA+ID4gc3ltbWV0cmlj Lgo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICvCoMKgwqAgaWYgKHZhbF9jaDAgIT0gdmFsX2No MSkKPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArwqDCoMKgIGlmIChjaDAtPnNfaW5mby5zaXplID09IDApCj4gPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ID4gK8KgwqDCoCBpZiAo Y2gwLT5sX2luZm8uc2l6ZSA9PSBjaDAtPnNfaW5mby5zaXplICYmCj4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoCBjaDAtPmxfaW5mby53aWR0aCA9PSBjaDAtPnNfaW5mby53aWR0aCAmJgo+ID4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgY2gwLT5sX2luZm8ucmFuayA9PSBjaDAtPnNfaW5mby5y YW5rKQo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gK8KgwqDCoCByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiByZXR1cm4gKHZh bF9jaDAgPT0gdmFsX2NoMSAmJiAoY2gwLT5zX2luZm8uc2l6ZSA9PSAwIHx8Cj4gPiA+ID4gPiAg wqDCoMKgwqDCoMKgwqAgKGNoMC0+bF9pbmZvLnNpemUgPT0gY2gwLT5zX2luZm8uc2l6ZSAmJgo+ ID4gPiA+ID4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjaDAtPmxfaW5mby53aWR0aCA9PSBjaDAtPnNf aW5mby53aWR0aCAmJgo+ID4gPiA+ID4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjaDAtPmxfaW5mby5y YW5rID09IGNoMC0+c19pbmZvLnJhbmspKSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiArfQo+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ICDCoCBzdGF0aWMgaW50Cj4gPiA+ID4gPiA+ICDCoCBza2xf ZHJhbV9nZXRfY2hhbm5lbHNfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiA+ID4gPiA+ICDCoCB7Cj4gPiA+ID4gPiA+ICDCoMKgwqDCoMKgIHN0cnVjdCBkcmFtX2lu Zm8gKmRyYW1faW5mbyA9ICZkZXZfcHJpdi0+ZHJhbV9pbmZvOwo+ID4gPiA+ID4gPiAgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJhbV9jaGFubmVsX2luZm8gY2gwLCBjaDE7Cj4gPiA+ID4gPiA+IC3CoMKg wqAgdTMyIHZhbDsKPiA+ID4gPiA+ID4gK8KgwqDCoCB1MzIgdmFsX2NoMCwgdmFsX2NoMTsKPiA+ ID4gPiA+ID4gIMKgwqDCoMKgwqAgaW50IHJldDsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC3C oMKgwqAgdmFsID0gSTkxNV9SRUFEKFNLTF9NQURfRElNTV9DSDBfMF8wXzBfTUNIQkFSX01DTUFJ Tik7Cj4gPiA+ID4gPiA+IC3CoMKgwqAgcmV0ID0gc2tsX2RyYW1fZ2V0X2NoYW5uZWxfaW5mbygm Y2gwLCB2YWwpOwo+ID4gPiA+ID4gPiArwqDCoMKgIHZhbF9jaDAgPSBJOTE1X1JFQUQoU0tMX01B RF9ESU1NX0NIMF8wXzBfMF9NQ0hCQVJfTUNNQUlOKTsKPiA+ID4gPiA+ID4gK8KgwqDCoCByZXQg PSBza2xfZHJhbV9nZXRfY2hhbm5lbF9pbmZvKCZjaDAsIHZhbF9jaDApOwo+ID4gPiA+ID4gPiAg wqDCoMKgwqDCoCBpZiAocmV0ID09IDApCj4gPiA+ID4gPiA+ICDCoMKgwqDCoMKgwqDCoMKgwqAg ZHJhbV9pbmZvLT5udW1fY2hhbm5lbHMrKzsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC3CoMKg wqAgdmFsID0gSTkxNV9SRUFEKFNLTF9NQURfRElNTV9DSDFfMF8wXzBfTUNIQkFSX01DTUFJTik7 Cj4gPiA+ID4gPiA+IC3CoMKgwqAgcmV0ID0gc2tsX2RyYW1fZ2V0X2NoYW5uZWxfaW5mbygmY2gx LCB2YWwpOwo+ID4gPiA+ID4gPiArwqDCoMKgIHZhbF9jaDEgPSBJOTE1X1JFQUQoU0tMX01BRF9E SU1NX0NIMV8wXzBfMF9NQ0hCQVJfTUNNQUlOKTsKPiA+ID4gPiA+ID4gK8KgwqDCoCByZXQgPSBz a2xfZHJhbV9nZXRfY2hhbm5lbF9pbmZvKCZjaDEsIHZhbF9jaDEpOwo+ID4gPiA+ID4gPiAgwqDC oMKgwqDCoCBpZiAocmV0ID09IDApCj4gPiA+ID4gPiA+ICDCoMKgwqDCoMKgwqDCoMKgwqAgZHJh bV9pbmZvLT5udW1fY2hhbm5lbHMrKzsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEBAIC0xMTg1 LDYgKzEyMTEsMTMgQEAgc2tsX2RyYW1fZ2V0X2NoYW5uZWxzX2luZm8oc3RydWN0Cj4gPiA+ID4g PiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiA+ID4gPiAgwqDCoMKgwqDCoCBp ZiAoY2gwLmlzXzE2Z2JfZGltbSB8fCBjaDEuaXNfMTZnYl9kaW1tKQo+ID4gPiA+ID4gPiAgwqDC oMKgwqDCoMKgwqDCoMKgIGRyYW1faW5mby0+aXNfMTZnYl9kaW1tID0gdHJ1ZTsKPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ICvCoMKgwqAgaWYgKGludGVsX2lzX2RyYW1faXBjX2NhcGFibGUoZGV2 X3ByaXYsIHZhbF9jaDAsIHZhbF9jaDEsICZjaDApKQo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqAgZGV2X3ByaXYtPmlwY19jYXBhYmxlX21lbSA9IHRydWU7Cj4gPiA+ID4gPiA+ICvCoMKgwqAg ZWxzZQo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgZGV2X3ByaXYtPmlwY19jYXBhYmxlX21l bSA9IGZhbHNlOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICvCoMKgwqAgRFJNX0RFQlVHX0tN UygibWVtb3J5IGNvbmZpZ3VyYXRpb24gaXMgJXNJUEMgY2FwYWJsZVxuIiwKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9wcml2LT5pcGNfY2FwYWJsZV9tZW0gPyAi IiA6ICJub3QgIik7Cj4gPiA+ID4gPiA+ICDCoMKgwqDCoMKgIHJldHVybiAwOwo+ID4gPiA+ID4g PiAgwqAgfQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gPiA+ID4gPiA+IGluZGV4IDg1NGYzYzgyOGUwMS4uMDM2ZDY1NTRjMDE3IDEw MDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ ID4gQEAgLTIxMTIsNiArMjExMiw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiA+ID4g PiA+ID4gIMKgwqDCoMKgwqAgYm9vbCBjaHZfcGh5X2Fzc2VydFsyXTsKPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ICDCoMKgwqDCoMKgIGJvb2wgaXBjX2VuYWJsZWQ7Cj4gPiA+ID4gPiA+ICvCoMKg wqAgYm9vbCBpcGNfY2FwYWJsZV9tZW07Cj4gPiA+ID4gPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQg dG8gc3RhZ2UgdGhpcy4uLgo+ID4gPiA+IFdpdGggYWJvdmUgY2hhbmdlcyBzdG9yaW5nIHRoaXMg aW5mbyBpcyBub3QgbmVlZGVkLCBCdXQgd2UgbmVlZCB0byBrZWVwCj4gPiA+ID4gYSBmbGFnIGlu IGRyYW1faW5mbyB0byBjaGVjayBpZiAibWVtb3J5IGlzIHN5bW1ldHJpYyIsIE90aGVyd2lzZSB3 ZSBuZWVkCj4gPiA+ID4gdG8gY29tcHV0ZSBhbGwgdGhlIG1lbW9yeSByZWxhdGVkIGluZm8gYWdh aW4uCj4gPiA+ID4gCj4gPiA+ID4gLU1haGVzaAo+ID4gPiA+ID4gPiAgwqDCoMKgwqDCoCAvKiBV c2VkIHRvIHNhdmUgdGhlIHBpcGUtdG8tZW5jb2RlciBtYXBwaW5nIGZvciBhdWRpbyAqLwo+ID4g PiA+ID4gPiAgwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqYXZfZW5jX21hcFtJOTE1 X01BWF9QSVBFU107Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+ID4gPiA+ID4gPiBpbmRleCAyNDQ2ZjUzYWRmMjEuLjM5ZTQwMGQ1ZjU1NSAxMDA2NDQKPiA+ ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ID4gPiA+IEBAIC02 MDk3LDcgKzYwOTcsNyBAQCB2b2lkIGludGVsX2VuYWJsZV9pcGMoc3RydWN0Cj4gPiA+ID4gPiA+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiA+ID4gPiAgwqDCoMKgwqDCoCB1MzIg dmFsOwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gIMKgwqDCoMKgwqAgLyogRGlzcGxheSBXQSAj MDQ3NyBXYURpc2FibGVJUEM6IHNrbCAqLwo+ID4gPiA+ID4gPiAtwqDCoMKgIGlmIChJU19TS1lM QUtFKGRldl9wcml2KSkgewo+ID4gPiA+ID4gPiArwqDCoMKgIGlmIChJU19TS1lMQUtFKGRldl9w cml2KSB8fCAhZGV2X3ByaXYtPmlwY19jYXBhYmxlX21lbSkgewo+ID4gPiA+ID4gPiAgwqDCoMKg wqDCoMKgwqDCoMKgIGRldl9wcml2LT5pcGNfZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiA+ID4gVGhp cyBpcyBub3QgdGhlIFdBIDExNDEgZm9yIG90aGVyIHBsYXRmb3JtcyB0aGFuIFNLTC4gUGxlYXNl IG9ubHkKPiA+ID4gPiA+IGtlZXAgc2tsIGhlcmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEZvciB0 aGUgb3RoZXIgV0EgYWRkIDR1cyBhY3Jvc3MgYWxsIHdhdGVybWFyayBsZXZlbHMKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gLyogRGlzcGxheSBXQSAjMTE0MTogc2tsLGtibCxjZmwgKi8KPiA+ID4gPiA+ IGlmICgoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8IElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKSAm Jgo+ID4gPiA+ID4gIMKgwqDCoCBpbnRlbF9pc19kcmFtX3N5bW1ldHJpYygpKQo+ID4gPiA+ID4g IMKgwqDCoCBsZXZlbHMgKz0gNDsKPiA+ID4gQWRkaW5nIDR1cyBpbiBsYXRlbmN5IGlzIGFscmVh ZHkgdGFrZW4gY2FyZSBpbiBza2xfY29tcHV0ZV9wbGFuZV93bS4KPiA+ID4gV2lsbCBoYW5kbGUg aGVyZSwgZW5hYmxpbmcgb2YgSVBDIG9ubHkgaWYgbWVtb3J5IGlzIHN5bW1ldHJpYy4KPiA+IEJ1 dCBXQTExNDEgZGVzY3JpYmUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gYXZvaWQgSVBDIG9uIFNLTC4u Lgo+ID4gbm90IG9uIGV2ZXJ5IGdlbjkuLi4gRXZlcnl3aGVyZSBlbHNlIHRoZSA0cyBzaG91bGQg YmUgZW5vdWdoLgo+ID4gCj4gPiBzbyBpZiB0aGUgNHVzIGlzIGFscmVhZHkgaW4gcGxhY2UgbWF5 YmUgdGhlIHBhdGNoIHRoYXQgd2UgbmVlZAo+ID4gaXMgdG8gb25seSBhcHBseSB0aGUgNHVzIGlm IG1lbW9yeSBpcyBzeW1tZXRyaWMgYW5kIG5vdCBza2wuCj4gV0EgYWxzbyBzYXlzIGVuYWJsZSBJ UEMgb25seSBpZiBtZW1vcnkgaXMgc3ltbWV0cmljLAo+IDxLQkwgV0E6IFdoZW4gSVBDIGlzIGVu YWJsZWQsIHdhdGVybWFyayBsYXRlbmN5IHZhbHVlcyBtdXN0IGJlIGluY3JlYXNlZCBieQo+IDR1 cyBhY3Jvc3MgYWxsIGxldmVscy4KPiBJUEMgbXVzdCBiZSBlbmFibGVkIG9ubHkgd2l0aCBkdWFs IGNoYW5uZWwgc3ltbWV0cmljIG1lbW9yeSBjb25maWd1cmF0aW9ucy4+CgpPaCEgSW5kZWVkLiBJ J20gc29ycnkuLgoKc28gd2UgbmVlZCBzb21ldGhpbmcgbGlrZToKCi8qIERpc3BsYXkgV0EgIzA0 NzcgV2FEaXNhYmxlSVBDOiBza2wgKi8KLyogRGlzcGxheSBXQSAjMTE0MTogc2tsLGtibCxjZmwg Ki8KIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fAogICAgKChJU19LQUJZTEFLRShkZXZfcHJp dikgfHwgSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpICYmCiAgICAgICFpbnRlbF9pc19kcmFtX3N5 bW1ldHJpYygpKQogICAgIAkgIGRldl9wcml2LT5pcGNfZW5hYmxlZCA9IGZhbHNlOwoKPiAKPiAt TWFoZXNoCj4gPiAKPiA+ID4gLU1haGVzaAo+ID4gPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybjsKPiA+ID4gPiA+ID4gIMKgwqDCoMKgwqAgfQo+ID4gPiA+ID4gPiAtLSAKPiA+ID4g PiA+ID4gMi4xNi4yCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiA+ID4gPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gPiA+ID4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4g PiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=