From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v4 3/8] drm/i915: Decode system memory bandwidth Date: Thu, 03 Nov 2016 17:06:46 -0200 Message-ID: <1478200006.2535.108.camel@intel.com> References: <20161013105826.9710-1-mahesh1.kumar@intel.com> <20161013105826.9710-4-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EA136E0C1 for ; Thu, 3 Nov 2016 19:06:52 +0000 (UTC) In-Reply-To: <20161013105826.9710-4-mahesh1.kumar@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" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE2LTEwLTEzIMOgcyAxNjoyOCArMDUzMCwgS3VtYXIsIE1haGVzaCBlc2NyZXZl dToKPiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCB0byBkZWNvZGUgc3lzdGVtIG1lbW9yeSBiYW5k d2lkdGgKPiB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIGFyYml0cmF0ZWQgZGlzcGxheSBtZW1vcnkg cGVyY2VudGFnZQo+IGNhbGN1bGF0aW9uIGluIEdFTjkgYmFzZWQgc3lzdGVtLgo+IAo+IENoYW5n ZXMgZnJvbSB2MToKPiDCoC0gQWRkcmVzcyBjb21tZW50cyBmcm9tIFBhdWxvCj4gwqAtIGltcGxl bWVudCBkZWNvZGUgZnVuY3Rpb24gZm9yIFNLTC9LQkwgYWxzbwoKQWdhaW4sIG15IHVuZGVyc3Rh bmRpbmcgb2YgdGhlc2UgcmVnaXN0ZXJzIGlzIG5vdCBnb29kIHNvIEkgd2lsbCBhc2sKc29tZSBx dWVzdGlvbnMgdGhhdCB3aWxsIGhlbHAgbWUgcHJvcGVybHkgdW5kZXJzdGFuZCBhbmQgcmV2aWV3 IHRoZQpjb2RlLiBJIG1heSBhbHNvIGVuZCB1cCBhc2tpbmcgc29tZSBxdWVzdGlvbnMgdGhhdCBk b24ndCBtYWtlIHNlbnNlLgpQbGVhc2UgY29ycmVjdCBtZSBpbiBjYXNlIGFueSBvZiBteSBhc3N1 bXB0aW9ucyBpcyB3cm9uZy4KClBlcmhhcHMgYW5zd2VycyB0byBteSBxdWVzdGlvbnMgY291bGQg YmVjb21lIGNvZGUgY29tbWVudHMgc2luY2UgSQpzdXBwb3NlIG1vc3Qgb2YgdGhlIGdmeCB0ZWFt IGlzIG5vdCBzdXBlciBmYW1pbGlhciB3aXRoIHRoZSBtZW1vcnkKcmVncywgYW5kIHdlJ3JlIGdv aW5nIHRvIGhhdmUgdG8gbWFpbnRhaW4gdGhlIGNvZGUuCgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiAi S3VtYXIsIE1haGVzaCIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyB8IDE3MAo+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggfMKg wqAxNCArKysrCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIHzCoMKgMzggKysr KysrKysrCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA4OWQzMjIyLi5iNWY2MDFjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCj4gQEAgLTk3OSw2ICs5NzksMTcwIEBAIHN0YXRpYyB2b2lkIGludGVs X3Nhbml0aXplX29wdGlvbnMoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g wqAJRFJNX0RFQlVHX0RSSVZFUigidXNlIEdQVSBzZW1wYWhvcmVzPyAlc1xuIiwKPiB5ZXNubyhp OTE1LnNlbWFwaG9yZXMpKTsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgaW5saW5lIHZvaWQgc2tsX21l bWRldl9pbmZvX2ZpbGwoc3RydWN0IG1lbWRldl9pbmZvICppbmZvLAo+IHVpbnQzMl90IHZhbCkK PiArewo+ICsJdWludDhfdCBjaGFubmVsX3dpZHRoLCByYW5rOwo+ICsKPiArCWluZm8tPnJhbmtf dmFsaWQgPSB0cnVlOwo+ICsJY2hhbm5lbF93aWR0aCA9ICh2YWwgPj4gU0tMX0RSQU1fQ0hBTk5F TF9XSURUSF9TSElGVCkgJgo+ICsJCVNLTF9EUkFNX0NIQU5ORUxfV0lEVEhfTUFTSzsKCldoeSBh cmUgd2UgbG9va2luZyBhdCB0aGUgTCBiaXRzIGluc3RlYWQgb2YgdGhlIFMgYml0cz8gV2hhdCdz IHRoZQpkaWZmZXJlbmNlIGJldHdlZW4gdGhlbT8KCgo+ICsJaWYgKGNoYW5uZWxfd2lkdGggPT0g U0tMX0RSQU1fV0lEVEhfMSkKPiArCQlpbmZvLT5jaGFubmVsX3dpZHRoX2J5dGVzID0gMTsKPiAr CWVsc2UgaWYgKGNoYW5uZWxfd2lkdGggPT0gU0tMX0RSQU1fV0lEVEhfMikKPiArCQlpbmZvLT5j aGFubmVsX3dpZHRoX2J5dGVzID0gMjsKPiArCWVsc2UKPiArCQlpbmZvLT5jaGFubmVsX3dpZHRo X2J5dGVzID0gNDsKClRoaXMgaXMgbm90IGNoZWNraW5nIGZvciB0aGUgaW52YWxpZCB2YWx1ZSBv ZiAweDMuIFBlcmhhcHMgYSBzd2l0Y2goKQppbnN0ZWFkIG9mIGFuIGlmKCkgbGFkZGVyIHdvdWxk IGJlIGJldHRlciBoZXJlLgoKPiArCj4gKwlyYW5rID0gKHZhbCA+PiBTS0xfRFJBTV9SQU5LX1NI SUZUKSAmIFNLTF9EUkFNX1JBTktfTUFTSzsKPiArCWlmIChyYW5rID09IFNLTF9EUkFNX1JBTktf U0lOR0xFKQo+ICsJCWluZm8tPnJhbmsgPSBEUkFNX1JBTktfU0lOR0xFOwo+ICsJZWxzZQo+ICsJ CWluZm8tPnJhbmsgPSBEUkFNX1JBTktfRFVBTDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtz a2xfZ2V0X21lbWRldl9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAr ewo+ICsJdWludDMyX3QgdmFsID0gMDsKPiArCXVpbnQzMl90IG1lbV9zcGVlZCA9IDA7Cj4gKwlz dHJ1Y3QgbWVtZGV2X2luZm8gKm1lbWRldl9pbmZvID0gJmRldl9wcml2LT5tZW1kZXZfaW5mbzsK PiArCj4gKwl2YWwgPSBJOTE1X1JFQUQoU0tMX01DX0JJT1NfREFUQV8wXzBfMF9NQ0hCQVJfUENV KTsKPiArCW1lbV9zcGVlZCA9IGRpdl91NjQoKHVpbnQ2NF90KSAodmFsICYgU0tMX1JFUV9EQVRB X01BU0spICoKPiArCQkJU0tMX01FTU9SWV9GUkVRX01VTFRJUExJRVIsIDEwMDApOwoKQnV0IGJ1 dCBidXQgaXNuJ3QgaXQgcG9zc2libGUgdG8gaGF2ZSBtb3JlIHRoYW4gMkdIeiBpbiBTS0w/IEkg dGhpbmsgSQpoYXZlIGEgYmlnIFNLTCBtYWNoaW5lIHdpdGggbW9yZSB0aGFuIDJHSHogaGVyZS4u LiBJJ2xsIGNoZWNrIGl0IGxhdGVyLgpBbHNvLCBkb24ndCB3ZSBuZWVkIHRvIGNoZWNrIEZSRVFf VFlQRSBhbmQgT0REX1JBVElPPwoKU29tZSBkaWdnaW5nIHN1Z2dlc3RzIHRoYXQgbWF5YmUgd2Ug bmVlZCB0byBmaWd1cmUgb3V0IHNvbWVob3cgaWYgd2UncmUKdXNpbmcgRENMSyBvciBRQ0xLIGFu ZCBtdWx0aXBseSBhY2NvcmRpbmdseSAoYmFzZWQgb24gdGhlIEJJT1NfUkVRCnJlZ2lzdGVyIGlu c3RlYWQgb2YgQklPU19EQVRBKS4KCkknZCByZWFsbHkgbmVlZCBzb21lIGNsYXJpZmljYXRpb24g b24gaG93IGFsbCBvZiB0aGlzIHdvcmtzLgoKQWxzbywgaXQgbG9va3MgbGlrZSB0aGVyZSdzIG5v IG5lZWQgZm9yIHRoaXMgdG8gYmUgYSA2NGJpdCBjYWxjdWxhdGlvbgpkdWUgdG8gdGhlIG1hc2sg bGltaXQuCgoKPiArCj4gKwlpZiAobWVtX3NwZWVkID09IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsJbWVtZGV2X2luZm8tPnZhbGlkID0gdHJ1ZTsKPiArCW1lbWRldl9pbmZvLT5tZW1f c3BlZWRfa2h6ID0gbWVtX3NwZWVkOwo+ICsJbWVtZGV2X2luZm8tPm51bV9jaGFubmVsc8KgwqA9 IDA7Cj4gKwo+ICsJbWVtZGV2X2luZm8tPnJhbmtfdmFsaWQgPSBmYWxzZTsKPiArCXZhbCA9IEk5 MTVfUkVBRChTS0xfTUFEX0RJTU1fQ0gwXzBfMF8wX01DSEJBUl9NQ01BSU4pOwo+ICsKPiArCWlm ICh2YWwgIT0gMHhGRkZGRkZGRikgewo+ICsJCW1lbWRldl9pbmZvLT5udW1fY2hhbm5lbHMrKzsK PiArCQlza2xfbWVtZGV2X2luZm9fZmlsbChtZW1kZXZfaW5mbywgdmFsKTsKPiArCX0KPiArCj4g Kwl2YWwgPSBJOTE1X1JFQUQoU0tMX01BRF9ESU1NX0NIMV8wXzBfMF9NQ0hCQVJfTUNNQUlOKTsK PiArCj4gKwlpZiAodmFsICE9IDB4RkZGRkZGRkYpIHsKPiArCQltZW1kZXZfaW5mby0+bnVtX2No YW5uZWxzKys7Cj4gKwkJaWYgKCFtZW1kZXZfaW5mby0+cmFua192YWxpZCkKPiArCQkJc2tsX21l bWRldl9pbmZvX2ZpbGwobWVtZGV2X2luZm8sIHZhbCk7Cj4gKwl9CgpBIHNpbXBsZSBpdGVyYXRp b24gb3ZlciB0aGUgdHdvIHJlZ2lzdGVyIGFkZHJlc3NlcyB3b3VsZCBoYXZlIHNhdmVkCnNvbWUg Y29kZSA6KS4KCkFsc28sIGlzbid0IGl0IHBvc3NpYmxlIHRvIGhhdmUgY2hhbm5lbHMgd2l0aCBk aWZmZXJlbnQgd2lkdGgvcmFuaz8KU2hvdWxkbid0IG91ciBjb2RlIGJlIHNhbml0eS1jaGVja2lu ZyB0aGlzPyBQZXJoYXBzIGdyYWIgdGhlIHdpZHRoL3JhbmsKZm9yIGVhY2ggY2hhbm5lbCBhbmQg Y29tcGFyZS4gV2hlbiB0aGUgc3BlY3MgYXJlIHVuY2xlYXIgb3IgZG9uJ3QKZXhpc3QsIGl0J3Mg cHJvYmFibHkgYmV0dGVyIGlmIG91ciBjb2RlIGlzIGFibGUgdG8gY2hlY2svdmFsaWRhdGUgaXRz Cm93biBhc3N1bXB0aW9ucy4KCgo+ICsKPiArCWlmIChtZW1kZXZfaW5mby0+bnVtX2NoYW5uZWxz ID09IDApCj4gKwkJbWVtZGV2X2luZm8tPnZhbGlkID0gZmFsc2U7Cj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGludAo+ICtieHRfZ2V0X21lbWRldl9pbmZvKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IG1lbWRldl9pbmZvICptZW1kZXZf aW5mbyA9ICZkZXZfcHJpdi0+bWVtZGV2X2luZm87Cj4gKwl1aW50MzJfdCBkcmFtX2NoYW5uZWw7 Cj4gKwl1aW50MzJfdCBtZW1fc3BlZWQsIHZhbDsKPiArCXVpbnQ4X3QgbnVtX2NoYW5uZWwsIGRy YW1fdHlwZTsKPiArCWludCBpOwo+ICsKPiArCXZhbCA9IEk5MTVfUkVBRChCWFRfUF9DUl9NQ19C SU9TX1JFUV8wXzBfMCk7Cj4gKwltZW1fc3BlZWQgPSBkaXZfdTY0KCh1aW50NjRfdCkgKHZhbCAm IEJYVF9SRVFfREFUQV9NQVNLKSAqCj4gKwkJCVNLTF9NRU1PUllfRlJFUV9NVUxUSVBMSUVSLCAx MDAwKTsKCkFGQUlVLCB0aGVyZSdzIG5vIG5lZWQgZm9yIDY0IGJpdCBkaXZpc2lvbiBzaW5jZSB0 aGUgbWF4aW11bSB2YWx1ZQppc8KgODM5OTc5MC4KCgo+ICsKPiArCWlmIChtZW1fc3BlZWQgPT0g MCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwltZW1kZXZfaW5mby0+dmFsaWQgPSB0cnVl Owo+ICsJbWVtZGV2X2luZm8tPm1lbV9zcGVlZF9raHogPSBtZW1fc3BlZWQ7Cj4gKwlkcmFtX3R5 cGUgPSAodmFsID4+IEJYVF9EUkFNX1RZUEVfU0hJRlQpICYKPiBCWFRfRFJBTV9UWVBFX01BU0s7 Cj4gKwlkcmFtX2NoYW5uZWwgPSAodmFsID4+IEJYVF9EUkFNX0NIQU5ORUxfU0hJRlQpICYKPiBC WFRfRFJBTV9DSEFOTkVMX01BU0s7Cj4gKwludW1fY2hhbm5lbCA9IGh3ZWlnaHQzMihkcmFtX2No YW5uZWwpOwo+ICsKPiArCS8qCj4gKwnCoCogVGhlIGxwZGRyMyBhbmQgbHBkZHI0IHRlY2hub2xv Z2llcyBjYW4gaGF2ZSAxLTQgY2hhbm5lbHMKPiBhbmQgdGhlCj4gKwnCoCogY2hhbm5lbHMgYXJl IDMyYml0cyB3aWRlOyB3aGlsZSBkZHIzbCB0ZWNobm9sb2dpZXMgY2FuCj4gaGF2ZSAxLTIKPiAr CcKgKiBjaGFubmVscyBhbmQgdGhlIGNoYW5uZWxzIGFyZSA2NCBiaXRzIHdpZGUuIEluIGNhc2Ug b2YKPiBzaW5nbGUgNjQgYml0Cj4gKwnCoCogd2lkZSBERFIzTCBkaW1tIHNldHMgdHdvIGNoYW5u ZWwtYWN0aXZlIGJpdHMgaW4KPiArCcKgKiBQX0NSX01DX0JJT1NfUkVRXzBfMF8wIHJlZ2lzdGVy IGFuZCBzeXN0ZW0gd2l0aCB0d28gRERSM0wKPiA2NGJpdCBkaW1tCj4gKwnCoCogd2lsbCBzZXQg YWxsIGZvdXIgY2hhbm5lbC1hY3RpdmUgYml0cyBpbiBhYm92ZSByZWdpc3Rlci4KPiArCcKgKiBJ biBvcmRlciB0byBnZXQgYWN0dWFsIG51bWJlciBvZiBjaGFubmVscyBpbiBERFIzTCBEUkFNCj4g d2UgbmVlZCB0bwo+ICsJwqAqIGRldmljZSB0b3RhbCBjaGFubmVsLWFjdGl2ZSBiaXRzIHNldCBi eSAyLgo+ICsJwqAqLwo+ICsKPiArCXN3aXRjaCAoZHJhbV90eXBlKSB7Cj4gKwljYXNlIEJYVF9E UkFNX1RZUEVfTFBERFIzOgo+ICsJY2FzZSBCWFRfRFJBTV9UWVBFX0xQRERSNDoKPiArCQltZW1k ZXZfaW5mby0+Y2hhbm5lbF93aWR0aF9ieXRlcyA9IDQ7Cj4gKwkJbWVtZGV2X2luZm8tPm51bV9j aGFubmVscyA9IG51bV9jaGFubmVsOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBCWFRfRFJBTV9UWVBF X0REUjNMOgo+ICsJCW1lbWRldl9pbmZvLT5jaGFubmVsX3dpZHRoX2J5dGVzID0gODsKPiArCQlt ZW1kZXZfaW5mby0+bnVtX2NoYW5uZWxzID0gbnVtX2NoYW5uZWwgLyAyOwo+ICsJCWJyZWFrOwo+ ICsJZGVmYXVsdDoKPiArCQlEUk1fREVCVUdfS01TKCJVbmtub3duIERSQU0gdHlwZVxuIik7Cj4g KwkJbWVtZGV2X2luZm8tPnZhbGlkID0gZmFsc2U7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9 CgpTaG91bGRuJ3QgY2hhbm5lbF93aWR0aF9ieXRlcyBqdXN0IGJlIG51bV9jaGFubmVscyAqIDQg Zm9yIExQRERSMy80IGFuZApudW1fY2hhbm5lbHMgKiA4IGZvciBERFIzTD8KCk9yIGp1c3QgbXVs dGlwbHkgYnkgNCBiZWZvcmUgd2UgZG8gdGhlICJudW1fY2hhbm5lbCAvIDIiLi4uIFRoaXMgd291 bGQKYXZvaWQgZXZlbiBoYXZpbmcgdG8gZmluZCBvdXQgdGhlIERSQU0gdHlwZSAoaW4gY2FzZSBp dCdzIG5vdCBuZWVkZWQKYW55d2hlcmUgZWxzZSkuCgo+ICsKPiArCS8qCj4gKwnCoCogTm93IHJl YWQgZWFjaCBEVU5JVDgvOS8xMC8xMSB0byBjaGVjayB0aGUgcmFuayBvZiBlYWNoCj4gZGltbXMu Cj4gKwnCoCogYWxsIHRoZSBkaW1tcyBzaG91bGQgaGF2ZSBzYW1lIHJhbmsgYXMgaW4gZmlyc3Qg dmFsaWQKPiBEaW1tCj4gKwnCoCovCgoKSSB0aGluayB3ZSBuZWVkIHRvIGV4cGxhaW4gaW4gdGhl IGNvbW1lbnQgd2h5IHdlJ3JlIGl0ZXJhdGluZyBvdmVyIHRoZQo0IGR1bml0cyBidXQganVzdCBs b29raW5nIGF0IHRoZSBmaXJzdCBvbmUgdGhhdCdzIG5vdCAweEZGRkZGRkZGLgoKSXNuJ3QgdGhl cmUgYSB3YXkgdG8gZGlzY292ZXIgd2hpY2ggZHVuaXRzIHRvIGxvb2sgYXQgYmFzZWQgb24gdGhl Cm51bWJlciBvZiBjaGFubmVscyBhbmQgRFJBTSB0eXBlPwoKQWxzbywgZG9lcyB0aGUgdmFsaWQg ZHVuaXQgYW1vdW50IHJlZmxlY3QgdGhlIG51bWJlciBvZiBjaGFubmVscyBsaWtlCmluIFNLTD8K Cgo+ICsJbWVtZGV2X2luZm8tPnJhbmtfdmFsaWQgPSBmYWxzZTsKPiArCWZvciAoaSA9IDA7IGkg PCBCWFRfRF9DUl9EUlAwX0RVTklUX01BWDsgaSsrKSB7Cj4gKwkJdmFsID0gSTkxNV9SRUFEKEJY VF9EX0NSX0RSUDBfRFVOSVQoaSkpOwo+ICsJCWlmICh2YWwgIT0gMHhGRkZGRkZGRikgewo+ICsJ CQl1aW50OF90IHJhbms7Cj4gKwo+ICsJCQltZW1kZXZfaW5mby0+cmFua192YWxpZCA9IHRydWU7 Cj4gKwkJCXJhbmsgPSB2YWwgJiBCWFRfRFJBTV9SQU5LX01BU0s7Cj4gKwkJCWlmIChyYW5rID09 IEJYVF9EUkFNX1JBTktfU0lOR0xFKQo+ICsJCQkJbWVtZGV2X2luZm8tPnJhbmsgPQo+IERSQU1f UkFOS19TSU5HTEU7Cj4gKwkJCWVsc2UgaWYgKHJhbmsgPT0gQlhUX0RSQU1fUkFOS19EVUFMKQo+ ICsJCQkJbWVtZGV2X2luZm8tPnJhbmsgPSBEUkFNX1JBTktfRFVBTDsKPiArCQkJZWxzZQo+ICsJ CQkJbWVtZGV2X2luZm8tPnJhbmsgPSBEUkFNX1JBTktfTk9ORTsKClByb2JhYmx5IERSTV9ERUJV R19LTVMoInNvbWV0aGluZ1xuIikgaGVyZT8gQWxzbyBtYXliZSBzZXQgcmFua192YWxpZApiYWNr IHRvIGZhbHNlPyBSZXR1cm4gbm9uLXplcm8/CgoKPiArCj4gKwkJCWJyZWFrOwo+ICsJCX0KPiAr CX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtpbnRlbF9nZXRfbWVt ZGV2X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1 Y3QgbWVtZGV2X2luZm8gKm1lbWRldl9pbmZvID0gJmRldl9wcml2LT5tZW1kZXZfaW5mbzsKPiAr CWludCByZXQ7Cj4gKwo+ICsJbWVtZGV2X2luZm8tPnZhbGlkID0gZmFsc2U7Cj4gKwlpZiAoIUlT X0dFTjkoZGV2X3ByaXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpCj4gKwkJcmV0ID0gYnh0X2dldF9tZW1kZXZfaW5mbyhkZXZfcHJpdik7Cj4gKwllbHNl Cj4gKwkJcmV0ID0gc2tsX2dldF9tZW1kZXZfaW5mbyhkZXZfcHJpdik7Cj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybjsKCldoYXQgSSBmaW5kIGEgbGl0dGxlIGhhcmQgdG8gcmVhZCBpcyB0aGF0IHdl IHNldCBtZW1kZXZfaW5mby0+dmFsaWQKYm90aCBoZXJlIGFuZCBpbiB0aGUgZnVuY3Rpb25zIHdl IGNhbGwuIER1ZSB0byB0aGUgZWFybHkgcmV0dXJucyBpdCdzCm5vdCBzdXBlciBzaW1wbGUgdG8g c2VlIHRoZSBwb3NzaWJsZSB2YWx1ZSBpdCBtYXkgZ2V0LCBhbmQgdGhpbmdzIGdldApldmVuIG1v cmUgY29tcGxpY2F0ZWQgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgbWF5IHJldHVybiAwIGZyb20K c2tsX2dldF9tZW1kZXZfaW5mbygpIHdoaWxlIHN0aWxsIHNldHRpbmcgbWVtZGV2X2luZm8tPnZh bGlkIHRvIGZhbHNlLgoKVGhpbmdzIHdvdWxkIGJlIG11Y2ggc2ltcGxlciBhbmQgZWFzaWVyIHRv IHJlYWQgaWYgd2Ugb25seSBzZXQKbWVtZGV2X2luZm8tPnZhbGlkIGluIHRoaXMgZnVuY3Rpb24s IGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCmdldF9tZW1kZXZfaW5mbygpIGZ1bmN0 aW9ucy4gQW5kIHRoZW4gdGhlIGdldF9tZW1kZXZfaW5mbygpIGZ1bmN0aW9ucwp3b3VsZCBhcHBy b3ByaWF0ZWx5IHJldHVybiB6ZXJvL25vbnplcm8gYmFzZWQgb24gdmFsaWQvaW52YWxpZApjb25m aWd1cmF0aW9uLgoKCj4gKwo+ICsJaWYgKG1lbWRldl9pbmZvLT52YWxpZCkgewo+ICsJCURSTV9E RUJVR19EUklWRVIoIkRSQU0gc3BlZWQtJWQgS2h6IHRvdGFsLWNoYW5uZWxzLQo+ICVkIGNoYW5u ZWwtd2lkdGgtJWQgYnl0ZXNcbiIsCj4gKwkJCQltZW1kZXZfaW5mby0+bWVtX3NwZWVkX2toeiwK PiArCQkJCW1lbWRldl9pbmZvLT5udW1fY2hhbm5lbHMsCj4gKwkJCQltZW1kZXZfaW5mby0+Y2hh bm5lbF93aWR0aF9ieXRlcyk7CgpBcyBJIG1lbnRpb25lZCBpbiBteSBwcmV2aW91cyByZXZpZXcs IHBsZWFzZSB1c2UgdGhlIGFwcHJvcHJpYXRlCnNwZWNpZmllcnMgaGVyZSBpbnN0ZWFkIG9mICVk IGZvciBldmVyeWJvZHkuCgpBbHNvLCB3ZSB1c3VhbGx5IHByaW50ICJ2YXJpYWJsZTogdmFsdWUs IG90aGVyIHZhcmlhYmxlOiB2YWx1ZSIgaW5zdGVhZApvZiAidmFyaWFibGUtdmFsdWUgb3RoZXIt dmFyaWFibGUtdmFsdWUiLiBQbGVhc2UgdXNlIHRoZSBlc3RhYmxpc2hlZApjb252ZW50aW9uLiBS ZWFkaW5nICJ0b3RhbC1jaGFubmVscy0xIiBpcyBsZXNzIGNsZWFyIHRoYW4gInRvdGFsCmNoYW5u ZWxzOiAxIiBhbmQgZG9lc24ndCByYWlzZSBhbWJpZ3VpdHkgY29uY2VybnMgd2l0aCBuZWdhdGl2 ZSB2YWx1ZXMuCgoKPiArCQlpZiAobWVtZGV2X2luZm8tPnJhbmtfdmFsaWQpCj4gKwkJCURSTV9E RUJVR19EUklWRVIoIkRSQU0gcmFuay0lc1xuIiwKPiArCQkJKG1lbWRldl9pbmZvLT5yYW5rID09 IERSQU1fUkFOS19EVUFMKSA/Cj4gKwkJCQkJCSJkdWFsIiA6ICJzaW5nbGUiKTsKCkJ1dCB0aGVy ZSdzIGFsc28gRFJBTV9SQU5LX05PTkUuCgoKPiArCX0KPiArfQo+ICsKPiArCj4gwqAvKioKPiDC oCAqIGk5MTVfZHJpdmVyX2luaXRfaHcgLSBzZXR1cCBzdGF0ZSByZXF1aXJpbmcgZGV2aWNlIGFj Y2Vzcwo+IMKgICogQGRldl9wcml2OiBkZXZpY2UgcHJpdmF0ZQo+IEBAIC0xMDgyLDYgKzEyNDYs MTIgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVjdAo+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+IMKgCQkJRFJNX0RFQlVHX0RSSVZFUigiY2FuJ3QgZW5hYmxlIE1T SSIpOwo+IMKgCX0KPiDCoAo+ICsJLyoKPiArCcKgKiBGaWxsIHRoZSBtZW1kZXYgc3RydWN0dXJl IHRvIGdldCB0aGUgc3lzdGVtIHJhdyBiYW5kd2lkdGgKPiArCcKgKiBUaGlzIHdpbGwgYmUgdXNl ZCBieSBXTSBhbGdvcml0aG0sIHRvIGltcGxlbWVudCBHRU45Cj4gYmFzZWQgV0EKPiArCcKgKi8K PiArCWludGVsX2dldF9tZW1kZXZfaW5mbyhkZXZfcHJpdik7Cj4gKwo+IMKgCXJldHVybiAwOwo+ IMKgCj4gwqBvdXRfZ2d0dDoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGEyMTlh MzUuLmFkYmQ5YWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjA1Nyw2ICsy MDU3LDIwIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiDCoAkJYm9vbCBkaXN0cnVzdF9i aW9zX3dtOwo+IMKgCX0gd207Cj4gwqAKPiArCXN0cnVjdCBtZW1kZXZfaW5mbyB7Cj4gKwkJYm9v bCB2YWxpZDsKPiArCQl1aW50MzJfdCBtZW1fc3BlZWRfa2h6Owo+ICsJCXVpbnQ4X3QgY2hhbm5l bF93aWR0aF9ieXRlczsKPiArCQl1aW50OF90IG51bV9jaGFubmVsczsKPiArCQlib29sIHJhbmtf dmFsaWQ7Cj4gKwkJZW51bSB7Cj4gKwkJCURSQU1fUkFOS19OT05FID0gMCwKPiArCQkJRFJBTV9S QU5LX1NJTkdMRSwKPiArCQkJRFJBTV9SQU5LX0RVQUwKPiArCQl9IHJhbms7CgpXaGF0J3MgdGhl IG1lYW5pbmcgb2YgRFJBTV9SQU5LX05PTkU/IERvZXMgRFJBTV9SQU5LX05PTkUgaW1wbHkKcmFu a192YWxpZD1mYWxzZT8gV2hhdCdzIHRoZSBtZWFuaW5nIG9mIHJhbms9RFJBTV9SQU5LX05PTkUg d2hlbgpyYW5rX3ZhbGlkPXRydWU/CgpQZXJoYXBzIHdlIGNvdWxkIGdldCByaWQgb2YgdGhlIHJh bmtfdmFsaWQgdmFyaWFibGU/IE1heWJlIHJlbmFtZQpEUkFNX1JBTktfTk9ORSB0byBEUkFNX1JB TktfSU5WQUxJRD8KCgo+ICsJfSBtZW1kZXZfaW5mbzsKPiArCj4gKwo+IMKgCXN0cnVjdCBpOTE1 X3J1bnRpbWVfcG0gcG07Cj4gwqAKPiDCoAkvKiBBYnN0cmFjdCB0aGUgc3VibWlzc2lvbiBtZWNo YW5pc20gKGxlZ2FjeSByaW5nYnVmZmVyIG9yCj4gZXhlY2xpc3RzKSBhd2F5ICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBhY2M3NjdhLi5hOWM0NjdjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gQEAgLTc3MjEsNiArNzcyMSw0NCBAQCBlbnVtIHsKPiDCoCNkZWZp bmXCoMKgRENfU1RBVEVfREVCVUdfTUFTS19DT1JFUwkoMTw8MCkKPiDCoCNkZWZpbmXCoMKgRENf U1RBVEVfREVCVUdfTUFTS19NRU1PUllfVVAJKDE8PDEpCj4gwqAKPiArI2RlZmluZSBfTU1JT19N Q0hCQVJfUElQRSh4LCBhLCBiKQlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfUwo+IE5CICsgX1BJ UEUoeCwgYSwgYikpCgpXYWl0LCB3aGF0PyBJIG1heSBoYXZlIG1pc3VuZGVyc3Rvb2Qgc29tZXRo aW5nLCBidXQgQUZBSUNTIHRoZQpyZWdpc3RlcnMgdGhhdCB1c2UgdGhpcyBtYWNybyBhcmXCoG5v dCBwZXItcGlwZSwgc28gdXNpbmcgdGhlIF9QSVBFCm1hY3JvIG1ha2VzIHRoaW5ncyBzdXBlciBj b25mdXNpbmcuIEluIHRoaXMgY2FzZSBpdCBzaG91bGQgYmUgZmluZSB0bwpqdXN0IGRvIHNvbWV0 aGluZyBhIGxpdHRsZSBtb3JlIGhhcmRjb2RlZCwgbGlrZToKCiNkZWZpbmUgQlhUX0RfQ1JfRFJQ MF9EVU5JVCh1bml0KSBfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsgKHVuaXQpCiogMHgy MDApCgoJCj4gKyNkZWZpbmUgQlhUX1BfQ1JfTUNfQklPU19SRVFfMF8wXzAJX01NSU8oTUNIQkFS X01JUlJPUl9CQVNFX1MKPiBOQiArIDB4NzExNCkKPiArI2RlZmluZSBCWFRfUkVRX0RBVEFfTUFT SwkJKDB4M0YgPDwgMCkKCk9yIGp1c3QgMHgzRiB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIG90 aGVyIGRlZmluaXRpb25zLgoKCj4gKyNkZWZpbmUgQlhUX0RSQU1fVFlQRV9TSElGVAkJMjQKPiAr I2RlZmluZSBCWFRfRFJBTV9UWVBFX01BU0sJCTB4NwoKVGhlIHNwZWMgeW91IHNlbnQgbWUgbGlz dHMgdGhlc2UgYml0cyBhcyByZXNlcnZlZC4gQXJlIHlvdSBzdXJlIHRoZXNlCmNvbWUgZnJvbSB0 aGlzIHJlZ2lzdGVyPwoKCj4gKyNkZWZpbmUgQlhUX0RSQU1fQ0hBTk5FTF9TSElGVAkJMTIKPiAr I2RlZmluZSBCWFRfRFJBTV9DSEFOTkVMX01BU0sJCTB4RgoKSSdkIHJlbmFtZSB0aGVzZSB0byBC WFRfRFJBTV9DSEFOTkVMX0FDVElWRV97U0hJRlQsTUFTS30uCgoKPiArCj4gKyNkZWZpbmUgQlhU X0RSQU1fVFlQRV9MUEREUjMJCTB4MQo+ICsjZGVmaW5lIEJYVF9EUkFNX1RZUEVfTFBERFI0CQkw eDIKPiArI2RlZmluZSBCWFRfRFJBTV9UWVBFX0REUjNMCQkweDQKPiArLyoKPiArICogQklPUyBw cm9ncmFtcyB0aGlzIGZpZWxkIG9mIFJFUV9EQVRBIFs1OjBdIGluIGludGVnZXIKPiArICogbXVs dGlwbGUgb2YgMTMzMzMwIEtIeiAoMTMzLjMzTUh6KQo+ICsgKi8KPiArI2RlZmluZQlTS0xfTUVN T1JZX0ZSRVFfTVVMVElQTElFUgkJMHgyMDhEMgoKVGhlcmUncyBhIGJhZCB0YWIgaGVyZSB0aGF0 IHNob3VsZCBiZSBhIHNwYWNlLgoKQWxzbywgaXQgbWFrZXMgYSBsb29vb290IG1vcmUgc2Vuc2Ug dG8gdXNlIHRoZSBkZWNpbWFsIHZhbHVlIGluc3RlYWQgb2YKMHgyMDhEMi4KCgo+ICsjZGVmaW5l IEJYVF9EX0NSX0RSUDBfRFVOSVQ4CQkJMHgxMDAwCj4gKyNkZWZpbmUgQlhUX0RfQ1JfRFJQMF9E VU5JVDkJCQkweDEyMDAKPiArI2RlZmluZSBCWFRfRF9DUl9EUlAwX0RVTklUX01BWAkJCTQKPiAr I2RlZmluZSBCWFRfRF9DUl9EUlAwX0RVTklUKHgpCV9NTUlPX01DSEJBUl9QSVBFKHgsCj4gQlhU X0RfQ1JfRFJQMF9EVU5JVDgsIEJYVF9EX0NSX0RSUDBfRFVOSVQ5KQo+ICsjZGVmaW5lIEJYVF9E UkFNX1JBTktfTUFTSwkJCTB4Mwo+ICsjZGVmaW5lIEJYVF9EUkFNX1JBTktfU0lOR0xFCQkJMHgx Cj4gKyNkZWZpbmUgQlhUX0RSQU1fUkFOS19EVUFMCQkJMHgzCj4gKwo+ICsjZGVmaW5lIFNLTF9N Q19CSU9TX0RBVEFfMF8wXzBfTUNIQkFSX1BDVQlfTU1JTyhNQ0hCQVJfTUlSUk9SCj4gX0JBU0Vf U05CICsgMHg1RTA0KQoKV2h5IGRvZXMgQlhUIGxvb2sgYXQgQklPU19SRVEgd2hpbGUgU0tMIGxv b2tzIGF0IEJJT1NfREFUQT8gU2hvdWxkbid0ClNLTCBhbHNvIGxvb2sgYXQgQklPU19EQVRBIG9y IEJYVCBsb29rIGF0IEJJT1NfUkVRPyBXaGF0J3MgdGhlIGJpZwpkaWZmZXJlbmNlPyBBbHNvLCB0 aGF0IGNvbW1lbnQgbWVudGlvbmluZyB0aGF0IHdlIG1heSBzb21ldGltZXMgZ2V0Cnplcm8gaXMg YSBsaXR0bGUgd29ycnlpbmc6IHNob3VsZG4ndCB3ZSBtYWtlIHN1cmUgd2UgYWx3YXlzIHJlYWQg d2hlbgppdCdzIG5vbi16ZXJvPwoKVGhhbmtzIGZvciB0aGUgcGF0Y2gsIGFuZCBzb3JyeSBmb3Ig dGhlIGh1Z2UgYW1vdW50IG9mIHF1ZXN0aW9ucyBoZXJlOgpsZWFybmluZyB3aGlsZSBkb2luZyB0 aGUgcmV2aWV3IGlzIHNvbWV0aW1lcyB0cmlja3kuCgo+ICsjZGVmaW5lIFNLTF9SRVFfREFUQV9N QVNLCQkJKDB4RiA8PCAwKQo+ICsjZGVmaW5lIFNLTF9NQURfRElNTV9DSDBfMF8wXzBfTUNIQkFS X01DTUFJTglfTU1JTyhNQ0hCQVJfTUlSCj4gUk9SX0JBU0VfU05CICsgMHg1MDBDKQo+ICsjZGVm aW5lIFNLTF9NQURfRElNTV9DSDFfMF8wXzBfTUNIQkFSX01DTUFJTglfTU1JTyhNQ0hCQVJfTUlS Cj4gUk9SX0JBU0VfU05CICsgMHg1MDEwKQo+ICsjZGVmaW5lIFNLTF9EUkFNX0NIQU5ORUxfV0lE VEhfTUFTSwkJMHgzCj4gKyNkZWZpbmUgU0tMX0RSQU1fQ0hBTk5FTF9XSURUSF9TSElGVAkJOAo+ ICsjZGVmaW5lIFNLTF9EUkFNX1dJRFRIXzEJCQkweDAKPiArI2RlZmluZSBTS0xfRFJBTV9XSURU SF8yCQkJMHgxCj4gKyNkZWZpbmUgU0tMX0RSQU1fV0lEVEhfNAkJCTB4Mgo+ICsjZGVmaW5lIFNL TF9EUkFNX1JBTktfTUFTSwkJCTB4MQo+ICsjZGVmaW5lIFNLTF9EUkFNX1JBTktfU0hJRlQJCQkx MAo+ICsjZGVmaW5lIFNLTF9EUkFNX1JBTktfU0lOR0xFCQkJMHgwCj4gKyNkZWZpbmUgU0tMX0RS QU1fUkFOS19EVUFMCQkJMHgxCj4gKwo+IMKgLyogUGxlYXNlIHNlZSBoc3dfcmVhZF9kY29tcCgp IGFuZCBoc3dfd3JpdGVfZGNvbXAoKSBiZWZvcmUgdXNpbmcKPiB0aGlzIHJlZ2lzdGVyLAo+IMKg ICogc2luY2Ugb24gSFNXIHdlIGNhbid0IHdyaXRlIHRvIGl0IHVzaW5nIEk5MTVfV1JJVEUuICov Cj4gwqAjZGVmaW5lIERfQ09NUF9IU1cJCQlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfUwo+IE5C ICsgMHg1RjBDKQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK