From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Antoine, Peter" Subject: Re: [PATCH v2] drm/i915 : Added Programming of the MOCS Date: Fri, 5 Jun 2015 15:39:18 +0000 Message-ID: References: <1433442442-512-1-git-send-email-peter.antoine@intel.com> <1433515416-12946-1-git-send-email-peter.antoine@intel.com> <20150605145353.GB19705@strange.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id EF99D6E003 for ; Fri, 5 Jun 2015 08:39:20 -0700 (PDT) In-Reply-To: <20150605145353.GB19705@strange.ger.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: "Lespiau, Damien" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org VGhlIHNhbWUgZW50cmllcyBoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudCBzb3VyY2VzLiBJJ2xs IHNlZSBpZiBJIGNhbiBmaW5kIHNvbWUgY29tbXVuYWxpdHkuCkFsc28sIEkgbWlnaHQgY2hhbmdl IHNvbWUgb2YgdGhlIG51bWJlcnMgdG8gdXNlciBuYW1lZCB2YWx1ZXMgYW5kIHRoYXQgbWF5IG1h a2UgaXQgZWFzaWVyIHRvIHdvcmsgb3V0IHRoZSB1c2FnZS4KClBldGVyLgoKCi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tCkZyb206IExlc3BpYXUsIERhbWllbiAKU2VudDogRnJpZGF5LCBKdW5l IDUsIDIwMTUgMzo1NCBQTQpUbzogQW50b2luZSwgUGV0ZXIKQ2M6IGludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSCB2Ml0gZHJtL2k5 MTUgOiBBZGRlZCBQcm9ncmFtbWluZyBvZiB0aGUgTU9DUwoKT24gRnJpLCBKdW4gMDUsIDIwMTUg YXQgMDM6NDM6MzZQTSArMDEwMCwgUGV0ZXIgQW50b2luZSB3cm90ZToKPiBUaGlzIGNoYW5nZSBh ZGRzIHRoZSBwcm9ncmFtbWluZyBvZiB0aGUgTU9DUyByZWdpc3RlcnMgdG8gdGhlIGdlbiA5KyAK PiBwbGF0Zm9ybXMuIFRoaXMgY2hhbmdlIHNldCBwcm9ncmFtcyB0aGUgTU9DUyByZWdpc3RlciB2 YWx1ZXMgdG8gYSBzZXQgCj4gb2YgdmFsdWVzIHRoYXQgYXJlIGRlZmluZWQgdG8gYmUgb3B0aW1h bC4KPiAKPiBJdCBjcmVhdGVzIGEgZml4ZWQgcmVnaXN0ZXIgc2V0IHRoYXQgaXMgcHJvZ3JhbW1l ZCBhY3Jvc3MgdGhlIAo+IGRpZmZlcmVudCBlbmdpbmVzIHNvIHRoYXQgYWxsIGVuZ2luZXMgaGF2 ZSB0aGUgc2FtZSB0YWJsZS4gVGhpcyBpcyAKPiBkb25lIGFzIHRoZSBtYWluIFJDUyBjb250ZXh0 IG9ubHkgaG9sZHMgdGhlIHJlZ2lzdGVycyBmb3IgaXRzZWxmIGFuZCAKPiB0aGUgc2hhcmVkCj4g TDMgdmFsdWVzLiBCeSB0cnlpbmcgdG8ga2VlcCB0aGUgcmVnaXN0ZXJzIGNvbnNpc3RlbnQgYWNy b3NzIHRoZSAKPiBkaWZmZXJlbnQgZW5naW5lcyBpdCBzaG91bGQgbWFrZSB0aGUgcHJvZ3JhbW1p bmcgZm9yIHRoZSByZWdpc3RlcnMgCj4gY29uc2lzdGVudC4KPiAKPiB2MjogJ3N0YXRpYyBjb25z dCcgZm9yIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzdHlsZSBjaGFuZ2VzLgo+IAo+IFNp Z25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgoKSSB3 YXMgd29uZGVyaW5nLCB3b3VsZCBpdCBwb3NzaWJsZSB0byBkb2N1bWVudCB0aGUgaW50ZW5kZWQg dXNhZ2UgZm9yIHRoZSBkZWZpbmVkIGNvbmZpZ3VyYXRpb25zPyBUaGF0J2QgaGVscCB1c2VyIHNw YWNlIGRyaXZlcnMgSSB0aGluay4KCi0tCkRhbWllbgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICB8ICAgOSArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgfCAg NjggKysrKysrKysrKysgIAo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyB8IDI0 MiAKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9tb2NzLmggfCAxMDEgKysrKysrKysrKysrKysrKwo+ICA1IGZpbGVz IGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pICBjcmVhdGUgbW9kZSAx MDA2NDQgCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICBjcmVhdGUgbW9kZSAx MDA2NDQgCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5oCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgaW5kZXggYjdkZGY0OC4uY2Q3YjkxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gQEAgLTM2LDcgKzM2LDggQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKPiAg CSAgaTkxNV90cmFjZV9wb2ludHMubyBcCj4gIAkgIGludGVsX2xyYy5vIFwKPiAgCSAgaW50ZWxf cmluZ2J1ZmZlci5vIFwKPiAtCSAgaW50ZWxfdW5jb3JlLm8KPiArCSAgaW50ZWxfdW5jb3JlLm8g XAo+ICsJICBpbnRlbF9tb2NzLm8KPiAgCj4gICMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBz dGF0ZQo+ICBpOTE1LXkgKz0gaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5vIFwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAKPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggaW5kZXggNzIxMzIyNC4uM2E0MzViNSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+IEBAIC03ODI5LDQgKzc4MjksMTMgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93 ZWxscyB7ICAjZGVmaW5lIF9QQUxFVFRFX0EgCj4gKGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1p b19vZmZzZXQgKyAweGEwMDApICAjZGVmaW5lIF9QQUxFVFRFX0IgCj4gKGRldl9wcml2LT5pbmZv LmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweGE4MDApCj4gIAo+ICsvKiBNT0NTIChNZW1vcnkgT2Jq ZWN0IENvbnRyb2wgU3RhdGUpIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIEdFTjlfTE5DRkNNT0NT MAkJKDB4QjAyMCkJLyogTDMgQ2FjaGUgQ29udHJvbCBiYXNlICovCj4gKwo+ICsjZGVmaW5lIEdF TjlfR0ZYX01PQ1NfMAkJKDB4YzgwMCkJLyogR3JhcGhpY3MgTU9DUyBiYXNlIHJlZ2lzdGVyKi8K PiArI2RlZmluZSBHRU45X01GWDBfTU9DU18wCSgweGM5MDApCS8qIE1lZGlhIDAgTU9DUyBiYXNl IHJlZ2lzdGVyKi8KPiArI2RlZmluZSBHRU45X01GWDFfTU9DU18wCSgweGNBMDApCS8qIE1lZGlh IDEgTU9DUyBiYXNlIHJlZ2lzdGVyKi8KPiArI2RlZmluZSBHRU45X1ZFQk9YX01PQ1NfMAkoMHhj QjAwKQkvKiBWaWRlbyBNT0NTIGJhc2UgcmVnaXN0ZXIqLwo+ICsjZGVmaW5lIEdFTjlfQkxUX01P Q1NfMAkJKDB4Y2MwMCkJLyogQmxpdHRlciBNT0NTIGJhc2UgcmVnaXN0ZXIqLwo+ICsKPiAgI2Vu ZGlmIC8qIF9JOTE1X1JFR19IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5k ZXggOWY1NDg1ZC4uYzg3NTU2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAg LTEzNSw2ICsxMzUsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRy bS9pOTE1X2RybS5oPgo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVs X21vY3MuaCIKPiAgCj4gICNkZWZpbmUgR0VOOV9MUl9DT05URVhUX1JFTkRFUl9TSVpFICgyMiAq IFBBR0VfU0laRSkgICNkZWZpbmUgCj4gR0VOOF9MUl9DT05URVhUX1JFTkRFUl9TSVpFICgyMCAq IFBBR0VfU0laRSkgQEAgLTEzNzAsNiArMTM3MSw2NyBAQCAKPiBvdXQ6Cj4gIAlyZXR1cm4gcmV0 Owo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBpOTE1X2dlbV9wcm9ncmFtX21vY3MoKSAtIHByb2dyYW0g dGhlIE1PQ1MgcmVnaXN0ZXIuCj4gKyAqCj4gKyAqIHJpbmc6CVRoZSByaW5nIHRoYXQgdGhlIHBy b2dyYW1taW5nIGJhdGNoIHdpbGwgYmUgcnVuIGluLgo+ICsgKiBjdHg6CQlUaGUgaW50ZWxfY29u dGV4dCB0byBiZSB1c2VkLgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJh dGNoIGJ1ZmZlciB3aXRoIHRoZSB2YWx1ZXMgcmVxdWlyZWQgCj4gK2Zvcgo+ICsgKiBwcm9ncmFt bWluZyB0aGUgTU9DUyByZWdpc3RlciB2YWx1ZXMgZm9yIGFsbCB0aGUgY3VycmVubHkgCj4gK3N1 cHBvcnRlZAo+ICsgKiByaW5ncy4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG90 aGVyd2lzZSB0aGUgZXJyb3Igc3RhdHVzLgo+ICsgKi8KPiArc3RhdGljIGludCBpOTE1X2dlbV9w cm9ncmFtX21vY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiArCQkJICBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY3R4KQo+ICt7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfbW9jc190YWJsZSB0Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmct PmRldjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gY3R4LT5lbmdpbmVb cmluZy0+aWRdLnJpbmdidWY7Cj4gKwo+ICsJaWYgKGdldF9tb2NzX3NldHRpbmdzKGRldiwgJnQp KSB7Cj4gKwkJdTMyIHRhYmxlX3NpemU7Cj4gKwo+ICsJCS8qCj4gKwkJICogT0suIEZvciBlYWNo IHN1cHBvcnRlZCByaW5nOgo+ICsJCSAqICB0YWJsZV9zaXplICogMiBkd29yZHMgZm9yIGVhY2gg Y29udHJvbF92YWx1ZQo+ICsJCSAqICBwbHVzIHRhYmxlLzIgZHdvcmRzIGZvciBsM2NjIHZhbHVl cy4KPiArCQkgKgo+ICsJCSAqICBQbHVzIDEgZm9yIHRoZSBsb2FkIGNvbW1hbmQgYW5kIDEgZm9y IHRoZSBOT09QIHBlciByaW5nCj4gKwkJICogIGFuZCB0aGUgbDNjYyBwcm9ncmFtbWluZy4KPiAr CQkgKi8KPiArCQl0YWJsZV9zaXplID0gR0VOOV9OVU1fTU9DU19SSU5HUyAqICgoMiAqIHQuc2l6 ZSkgKyAyKSArCj4gKwkJCQl0LnNpemUgKyAyOwo+ICsJCXJldCA9IGludGVsX2xvZ2ljYWxfcmlu Z19iZWdpbihyaW5nYnVmLCBjdHgsIHRhYmxlX3NpemUpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJ RFJNX0VSUk9SKCJpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4gZmFpbGVkICVkXG4iLCByZXQpOwo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJLyogcHJvZ3JhbSB0aGUgY29udHJvbCBy ZWdpc3RlcnMgKi8KPiArCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5nYnVmLCAmdCwgR0VO OV9HRlhfTU9DU18wKTsKPiArCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5nYnVmLCAmdCwg R0VOOV9NRlgwX01PQ1NfMCk7Cj4gKwkJZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUocmluZ2J1Ziwg JnQsIEdFTjlfTUZYMV9NT0NTXzApOwo+ICsJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdi dWYsICZ0LCBHRU45X1ZFQk9YX01PQ1NfMCk7Cj4gKwkJZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUo cmluZ2J1ZiwgJnQsIEdFTjlfQkxUX01PQ1NfMCk7Cj4gKwo+ICsJCS8qIG5vdyBwcm9ncmFtIHRo ZSBsM2NjIHJlZ2lzdGVycyAqLwo+ICsJCWVtaXRfbW9jc19sM2NjX3RhYmxlKHJpbmdidWYsICZ0 KTsKPiArCj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwo+ICsJ CURSTV9JTkZPKCJNT0NTOiBUYWJsZSBzZXQgaW4gQ29udGV4dFxuIik7Cj4gKwl9IGVsc2Ugewo+ ICsJCURSTV9JTkZPKCJNT0NTOiBUYWJsZSBOb3Qgc3VwcG9ydGVkIG9uIHBsYXRmb3JtXG4iKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsKPiAgc3RhdGljIGludCBnZW44 X2luaXRfcmNzX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQkgICAg ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAgewo+IEBAIC0xMzc5LDYgKzE0NDEsMTIg QEAgc3RhdGljIGludCBnZW44X2luaXRfcmNzX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gKwkvKgo+ICsJICog RmFpbGluZyB0byBwcm9ncmFtIHRoZSBNT0NTIGlzIG5vbi1mYXRhbC5UaGUgc3lzdGVtIHdpbGwg bm90Cj4gKwkgKiBydW4gYXQgcGVhayBwZXJmb3JtYW5jZS4gU28gZ2VuZXJhdGUgYSB3YXJuaW5n IGFuZCBjYXJyeSBvbi4KPiArCSAqLwo+ICsJV0FSTl9PTihpOTE1X2dlbV9wcm9ncmFtX21vY3Mo cmluZywgY3R4KSAhPSAwKTsKPiArCj4gIAlyZXR1cm4gaW50ZWxfbHJfY29udGV4dF9yZW5kZXJf c3RhdGVfaW5pdChyaW5nLCBjdHgpOyAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbW9jcy5jIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9j cy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi42N2M3OTY3Cj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IEBA IC0wLDAgKzEsMjQyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jw b3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPiArb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAKPiArIlNv ZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IAo+ICtsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCAKPiArc3VibGlj ZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gCj4gK3RoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyAKPiArY29uZGl0aW9uczogKgo+ICsg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIAo+ICt0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgCj4gK29mIHRoZQo+ICsgKiBT b2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIAo+ICtFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgCj4gK01FUkNI QU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIAo+ICtTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyAKPiAr T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIAo+ICtBUklTSU5HIEZST00sCj4gKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgCj4gK0RF QUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiArICog ICAgUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiAr I2luY2x1ZGUgImludGVsX21vY3MuaCIKPiArI2luY2x1ZGUgImludGVsX2xyYy5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgo+ICsKPiArLyoKPiArICogTU9DUyB0YWJsZXMKPiAr ICoKPiArICogVGhlc2UgYXJlIHRoZSBNT0NTIHRhYmxlcyB0aGF0IGFyZSBwcm9ncmFtbWVkIGFj cm9zcyBhbGwgdGhlIHJpbmdzLgo+ICsgKiBUaGUgY29udHJvbCB2YWx1ZSBpcyBwcm9ncmFtbWVk IHRvIGFsbCB0aGUgcmluZ3MgdGhhdCBzdXBwb3J0IHRoZQo+ICsgKiBNT0NTIHJlZ2lzdGVycy4g V2hpbGUgdGhlIGwzY2NfdmFsdWVzIGFyZSBvbmx5IHByb2dyYW1tZWQgdG8gdGhlCj4gKyAqIExO Q0ZDTU9DUzAgLSBMTkNGQ01PQ1MzMiByZWdpc3RlcnMuCj4gKyAqCj4gKyAqIE5PVEU6IFRoZXNl IHRhYmxlcyBNVVNUIHN0YXJ0IHdpdGggYmVpbmcgdW5jYWNoZWQgezAsMH0gYW5kIHRoZQo+ICsg KiAgICAgICB0aGUgbGVuZ3RoIE1VU1QgYmUgbGVzcyB0aGFuIDYzIGFzIHRoZSBsYXN0IHR3byBy ZWdpc3RlcnMgYXJlCj4gKyAqICAgICAgIHJlc2VydmVkIGJ5IHRoZSBoYXJkd2FyZS4KPiArICov Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc19lbnRyeSBza3lsYWtlX21vY3Nf dGFibGVbXSA9IHsKPiArCSAvKiB7MHgwMDAwMDAwOSwgMHgwMDEwfSAqLwo+ICsJeyhNT0NTX0NB Q0hFQUJJTElUWSgxKSB8IE1PQ1NfVEdUX0NBQ0hFKDIpIHwgTU9DU19MUlVNKDApIHwKPiArCQlN T0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ19QRk0oMCkg fAo+ICsJCU1PQ1NfU0NGKDApKSwKPiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1P Q1NfTDNfQ0FDSEVBQklMSVRZKDEpKX0sCj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAzMH0gKi8K PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJV TSgzKSB8Cj4gKwkJTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkg fCBNT0NfUEZNKDApIHwKPiArCQlNT0NTX1NDRigwKSksCj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9D U19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgzKSl9LAo+ICsJIC8qIHsweDAwMDAwMDM5 LCAweDAwMTB9ICovCj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKDEpIHwgTU9DU19UR1RfQ0FDSEUo MikgfCBNT0NTX0xSVU0oMykgfAo+ICsJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8 IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8Cj4gKwkJTU9DU19TQ0YoMCkpLAo+ICsJCShNT0NT X0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoMSkpfSwKPiArCSAv KiB7MHgwMDAwMDAxNywgMHgwMDMwfSAqLwo+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWSgzKSB8IE1P Q1NfVEdUX0NBQ0hFKDEpIHwgTU9DU19MUlVNKDEpIHwKPiArCQlNT0NTX0FPTSgwKSB8IE1PQ1Nf TEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ19QRk0oMCkgfAo+ICsJCU1PQ1NfU0NGKDAp KSwKPiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZ KDMpKX0sCj4gKwkgLyogezB4MDAwMDAwMTcsIDB4MDAxMH0gKi8KPiArCXsoTU9DU19DQUNIRUFC SUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8IE1PQ1NfTFJVTSgxKSB8Cj4gKwkJTU9DU19B T00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NfUEZNKDApIHwKPiAr CQlNT0NTX1NDRigwKSksCj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wz X0NBQ0hFQUJJTElUWSgxKSl9LAo+ICsJIC8qIHsweDAwMDAwMDE5LCAweDAwMTB9ICovCj4gKwl7 KE1PQ1NfQ0FDSEVBQklMSVRZKDEpIHwgTU9DU19UR1RfQ0FDSEUoMikgfCBNT0NTX0xSVU0oMSkg fAo+ICsJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9D X1BGTSgwKSB8Cj4gKwkJTU9DU19TQ0YoMCkpLAo+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0ND KDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoMSkpfSwKPiArCSAvKiB7MHgwMDAwMDAzNywgMHgw MDMwfSAqLwo+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWSgzKSB8IE1PQ1NfVEdUX0NBQ0hFKDEpIHwg TU9DU19MUlVNKDMpIHwKPiArCQlNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NT X1NDQygwKSB8IE1PQ19QRk0oMCkgfAo+ICsJCU1PQ1NfU0NGKDApKSwKPiArCQkoTU9DU19FU0Mo MCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKDMpKX0sCj4gKwkgLyogezB4 MDAwMDAwM2IsIDB4MDAxMH0gKi8KPiArCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RH VF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgzKSB8Cj4gKwkJTU9DU19BT00oMCkgfCBNT0NTX0xFQ0Nf RVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NfUEZNKDApIHwKPiArCQlNT0NTX1NDRigwKSksCj4g KwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9 LCB9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IGJyb3h0 b25fbW9jc190YWJsZVtdID0gewo+ICsJIC8qIHsweDAwMDAwMDAxLCAweDAwMTB9ICovCj4gKwl7 KE1PQ1NfQ0FDSEVBQklMSVRZKDEpIHwgTU9DU19UR1RfQ0FDSEUoMCkgfCBNT0NTX0xSVU0oMCkg fAo+ICsJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9D X1BGTSgwKSB8Cj4gKwkJTU9DU19TQ0YoMCkpLAo+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0ND KDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoMSkpfSwKPiArCSAvKiB7MHgwMDAwNDAwMSwgMHgw MDEwfSAqLwo+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWSgxKSB8IE1PQ1NfVEdUX0NBQ0hFKDApIHwg TU9DU19MUlVNKDApIHwKPiArCQlNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NT X1NDQygwKSB8IE1PQ19QRk0oMCkgfAo+ICsJCU1PQ1NfU0NGKDEpKSwKPiArCQkoTU9DU19FU0Mo MCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKDEpKX0sCj4gKwkgLyogezB4 MDAwMDQwM2IsIDB4MDAzMH0gKi8KPiArCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RH VF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgzKSB8Cj4gKwkJTU9DU19BT00oMCkgfCBNT0NTX0xFQ0Nf RVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NfUEZNKDApIHwKPiArCQlNT0NTX1NDRigxKSksCj4g KwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgzKSl9 LAo+ICsJIC8qIHsweDAwMDA0MDFiLCAweDAwMzB9ICovCj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZ KDMpIHwgTU9DU19UR1RfQ0FDSEUoMikgfCBNT0NTX0xSVU0oMSkgfAo+ICsJCU1PQ1NfQU9NKDAp IHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8Cj4gKwkJTU9D U19TQ0YoMSkpLAo+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNI RUFCSUxJVFkoMykpfSwKPiArCSAvKiB7MHgwMDAwMDAxNywgMHgwMDEwfSAqLwo+ICsJeyhNT0NT X0NBQ0hFQUJJTElUWSgzKSB8IE1PQ1NfVEdUX0NBQ0hFKDEpIHwgTU9DU19MUlVNKDEpIHwKPiAr CQlNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ19QRk0o MCkgfAo+ICsJCU1PQ1NfU0NGKDApKSwKPiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8 IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKDEpKX0sCj4gKwkgLyogezB4MDAwMDAwMTksIDB4MDAxMH0g Ki8KPiArCXsoTU9DU19DQUNIRUFCSUxJVFkoMSkgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1Nf TFJVTSgxKSB8Cj4gKwkJTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0Mo MCkgfCBNT0NfUEZNKDApIHwKPiArCQlNT0NTX1NDRigwKSksCj4gKwkJKE1PQ1NfRVNDKDApIHwg TU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9LAo+ICsJIC8qIHsweDAwMDAw MDM3LCAweDAwMzB9ICovCj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKDMpIHwgTU9DU19UR1RfQ0FD SEUoMSkgfCBNT0NTX0xSVU0oMykgfAo+ICsJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygw KSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8Cj4gKwkJTU9DU19TQ0YoMCkpLAo+ICsKPiAr CQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKDMpKX0s Cj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAxMH0gKi8KPiArCXsoTU9DU19DQUNIRUFCSUxJVFko MykgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgzKSB8Cj4gKwkJTU9DU19BT00oMCkg fCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NfUEZNKDApIHwKPiArCQlNT0NT X1NDRigwKSksCj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hF QUJJTElUWSgxKSl9LCB9Owo+ICsKPiArLyoqCj4gKyAqIGdldF9tb2NzX3NldHRpbmdzCj4gKyAq Cj4gKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHZhbHVlcyBvZiB0aGUgTU9DUyB0 YWJsZSB0aGF0IG5lZWRzIAo+ICt0bwo+ICsgKiBiZSBwcm9ncmFtbWVkIGZvciB0aGUgcGxhdGZv cm0uIEl0IHdpbGwgcmV0dXJuIHRoZSB2YWx1ZXMgdGhhdCAKPiArbmVlZAo+ICsgKiB0byBiZSBw cm9ncmFtbWVkIGFuZCBpZiB0aGV5IG5lZWQgdG8gYmUgcHJvZ3JhbW1lZC4KPiArICoKPiArICog SWYgdGhlIHJldHVybiB2YWx1ZXMgaXMgZmFsc2UgdGhlbiB0aGUgcmVnaXN0ZXJzIGRvIG5vdCBu ZWVkIHByb2dyYW1taW5nLgo+ICsgKi8KPiArYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAq dGFibGUpIHsKPiArCWJvb2wJcmVzdWx0ID0gZmFsc2U7Cj4gKwo+ICsJaWYgKElTX1NLWUxBS0Uo ZGV2KSkgewo+ICsJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUoc2t5bGFrZV9tb2NzX3RhYmxl KTsKPiArCQl0YWJsZS0+dGFibGUgPSBza3lsYWtlX21vY3NfdGFibGU7Cj4gKwkJcmVzdWx0ID0g dHJ1ZTsKPiArCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKSB7Cj4gKwkJdGFibGUtPnNpemUg ID0gQVJSQVlfU0laRShicm94dG9uX21vY3NfdGFibGUpOwo+ICsJCXRhYmxlLT50YWJsZSA9IGJy b3h0b25fbW9jc190YWJsZTsKPiArCQlyZXN1bHQgPSB0cnVlOwo+ICsJfSBlbHNlIHsKPiArCQkv KiBQbGF0Zm9ybSB0aGF0IHNob3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzIG5vdCAqLwo+ICsJ CVdBUk5fT04oSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IHJlc3VsdDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGVtaXRfbW9jc19jb250cm9sX3RhYmxlKCkg LSBlbWl0IHRoZSBtb2NzIGNvbnRyb2wgdGFibGUKPiArICogQHJpbmdidWY6CURSTSBkZXZpY2Uu Cj4gKyAqIEB0YWJsZToJVGhlIHZhbHVlcyB0byBwcm9ncmFtIGludG8gdGhlIGNvbnRyb2wgcmVn cy4KPiArICogQHJlZ19iYXNlOglUaGUgYmFzZSBmb3IgdGhlIEVuZ2luZSB0aGF0IG5lZWRzIHRv IGJlIHByb2dyYW1tZWQuCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gc2ltcGx5IGVtaXRzIGEg TUlfTE9BRF9SRUdJU1RFUl9JTU0gY29tbWFuZCBmb3IgdGhlCj4gKyAqIGdpdmVuIHRhYmxlIHN0 YXJ0aW5nIGF0IHRoZSBnaXZlbiBhZGRyZXNzLgo+ICsgKgo+ICsgKiBSZXR1cm46IE5vdGhpbmcu Cj4gKyAqLwo+ICt2b2lkIGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmLAo+ICsJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0 YWJsZSwKPiArCQkJCSAgICB1MzIgcmVnX2Jhc2UpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpbmRl eDsKPiArCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAo+ICsJCQlNSV9MT0FE X1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPiArCj4gKwlmb3IgKGluZGV4 ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykgewo+ICsJCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNlICsgKGluZGV4ICogNCkpOwo+ICsJCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCj4gKwkJCQkJdGFibGUtPnRhYmxlW2luZGV4XS5jb250 cm9sX3ZhbHVlKTsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogT2ssIG5vdyBzZXQgdGhlIHVudXNl ZCBlbnRyaWVzIHRvIHVuY2FjaGVkLiBUaGVzZSBlbnRyaWVzIGFyZQo+ICsJICogb2ZmaWNpYWxs eSB1bmRlZmluZWQgYW5kIG5vIGNvbnRhY3QgaXMgZ2l2ZW4gZm9yIHRoZSBjb250ZW50cyBhbmQK PiArCSAqIHNldHRpbmdzIGlzIGdpdmVuIGZvciB0aGVzZSBlbnRyaWVzLgo+ICsJICoKPiArCSAq IEVudHJ5IDAgaW4gdGhlIHRhYmxlIGlzIHVuY2FjaGVkIC0gc28gd2UgYXJlIGp1c3Qgd3JpdHRl biB0aGF0Cj4gKwkgKiB2YWx1ZSB0byBhbGwgdGhlIHVzZWQgZW50cmllcy4KPiArCSAqLwo+ICsJ Zm9yICg7IGluZGV4IDwgR0VOOV9OVU1fTU9DU19FTlRSSUVTOyBpbmRleCsrKSB7Cj4gKwkJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVnX2Jhc2UgKyAoaW5kZXggKiA0KSk7Cj4g KwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxlWzBdLmNvbnRy b2xfdmFsdWUpOwo+ICsJfQo+ICsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYs IE1JX05PT1ApOyB9Cj4gKwo+ICsvKioKPiArICogZW1pdF9tb2NzX2wzY2NfdGFibGUoKSAtIGVt aXQgdGhlIG1vY3MgY29udHJvbCB0YWJsZQo+ICsgKiBAcmluZ2J1ZjoJRFJNIGRldmljZS4KPiAr ICogQHRhYmxlOglUaGUgdmFsdWVzIHRvIHByb2dyYW0gaW50byB0aGUgY29udHJvbCByZWdzLgo+ ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHNpbXBseSBlbWl0cyBhIE1JX0xPQURfUkVHSVNURVJf SU1NIGNvbW1hbmQgZm9yIHRoZQo+ICsgKiBnaXZlbiB0YWJsZSBzdGFydGluZyBhdCB0aGUgZ2l2 ZW4gYWRkcmVzcy4gVGhpcyByZWdpc3RlciBzZXQgaXMgIAo+ICtwcm9ncmFtbWVkCj4gKyAqIGlu IHBhaXJzLgo+ICsgKgo+ICsgKiBSZXR1cm46IE5vdGhpbmcuCj4gKyAqLwo+ICt2b2lkIGVtaXRf bW9jc19sM2NjX3RhYmxlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICsJCQkg c3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlKSB7Cj4gKwl1bnNpZ25lZCBpbnQgY291 bnQ7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLAo+ICsJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMg LyAyKSk7Cj4gKwo+ICsJZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgdGFibGUtPnNpemUgLyAy OyBpKyssIGNvdW50ICs9IDIpIHsKPiArCQl1MzIgdmFsdWUgPSAodGFibGUtPnRhYmxlW2NvdW50 XS5sM2NjX3ZhbHVlICYgMHhmZmZmKSB8Cj4gKwkJCSgodGFibGUtPnRhYmxlW2NvdW50ICsgMV0u bDNjY192YWx1ZSAmIDB4ZmZmZikgPDwgMTYpOwo+ICsKPiArCQlpbnRlbF9sb2dpY2FsX3Jpbmdf ZW1pdChyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUzAgKyAoaSAqIDQpKTsKPiArCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCB2YWx1ZSk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIE5v dyBzZXQgdGhlIHJlc3Qgb2YgdGhlIHRhYmxlIHRvIHVuY2FjaGVkIC0gdXNlIGVudHJ5IDAgYXMg dGhpcwo+ICsJICogd2lsbCBiZSB1bmNhY2hlZC4gTGVhdmUgdGhlIGxhc3QgcGFpciBpbml0aWFs aXNlZCBhcyByZXNlcnZlZCBieQo+ICsJICogdGhlIGhhcmR3YXJlLgo+ICsJICovCj4gKwlmb3Ig KDsgaSA8IEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDI7IGkrKykgewo+ICsJCXUzMiB2YWx1ZSA9 ICh0YWJsZS0+dGFibGVbMF0ubDNjY192YWx1ZSAmIDB4ZmZmZikgfAo+ICsJCQkoKHRhYmxlLT50 YWJsZVswXS5sM2NjX3ZhbHVlICYgMHhmZmZmKSA8PCAxNik7Cj4gKwo+ICsJCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTMCArIChpICogNCkpOwo+ICsJCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHZhbHVlKTsKPiArCX0KPiArCj4gKwlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsgfQo+ICsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5oIAo+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbW9jcy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li5hY2ZmYTE1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX21vY3MuaAo+IEBAIC0wLDAgKzEsMTAxIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykg MjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPiArb2J0YWluaW5nIGEKPiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAKPiArIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IAo+ICtsaW1pdGF0aW9uCj4gKyAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCAKPiArc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gCj4gK3RoZQo+ICsgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIAo+ICt0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgCj4g K29mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIAo+ICtFWFBSRVNTIE9S Cj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgCj4gK01FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIAo+ICtTSEFMTAo+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyAKPiArT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIAo+ICtBUklTSU5HIEZST00sCj4g KyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgCj4gK0RFQUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiArICoKPiArICog QXV0aG9yczoKPiArICogICAgUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBJTlRFTF9NT0NTX0gKPiArI2RlZmluZSBJTlRFTF9NT0NT X0gKPiArCj4gKy8qKgo+ICsgKiBET0M6IE1lbW9yeSBPYmplY3RzIENvbnRyb2wgU3RhdGUgKE1P Q1MpCj4gKyAqCj4gKyAqIE1vdGl2YXRpb246Cj4gKyAqIEluIHByZXZpb3VzIEdlbnMgdGhlIE1P Q1Mgc2V0dGluZ3Mgd2FzIGEgdmFsdWUgdGhhdCB3YXMgc2V0IGJ5IAo+ICt1c2VyIGxhbmQgYXMK PiArICogcGFydCBvZiB0aGUgYmF0Y2guIEluIEdlbjkgdGhpcyBoYXMgY2hhbmdlZCB0byBiZSBh IHNpbmdsZSB0YWJsZSAKPiArKHBlciByaW5nKQo+ICsgKiB0aGF0IGFsbCBiYXRjaGVzIG5vdyBy ZWZlcmVuY2UgYnkgaW5kZXggaW5zdGVhZCBvZiBwcm9ncmFtbWluZyB0aGUgCj4gK01PQ1MKPiAr ICogZGlyZWN0bHkuCj4gKyAqCj4gKyAqIFRoZSBvbmUgd3JpbmtsZSBpbiB0aGlzIGlzIHRoYXQg b25seSBQQVJUIG9mIHRoZSBNT0NTIHRhYmxlcyBhcmUgCj4gK2luY2x1ZGVkCj4gKyAqIGluIGNv bnRleHQgKFRoZSBHRlhfTU9DU18wIC0gR0ZYX01PQ1NfNjQgYW5kIHRoZSBMTkNGQ01PQ1MwIC0g Cj4gK0xOQ0ZDTU9DUzMyCj4gKyAqIHJlZ2lzdGVycykuIFRoZSByZXN0IGFyZSBub3QgKHRoZSBz ZXR0aW5ncyBmb3IgdGhlIG90aGVyIHJpbmdzKS4KPiArICoKPiArICogVGhpcyB0YWJsZSBuZWVk cyB0byBiZSBzZXQgYXQgc3lzdGVtIHN0YXJ0LXVwIGJlY2F1c2UgdGhlIHdheSB0aGUgCj4gK3Rh YmxlCj4gKyAqIGludGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0cyBhbmQgdGhlIEdtbUxpYiBpbnRl cmZhY2UuCj4gKyAqCj4gKyAqCj4gKyAqIEltcGxlbWVudGF0aW9uOgo+ICsgKgo+ICsgKiBUaGUg dGFibGUgaXMgcHJvZ3JhbW1lZCBvbiBhIHBsYXRmb3JtIGJhc2lzIGZyb20gYSB0YWJsZSB0aGF0 IGlzIAo+ICtnZW5lcmF0ZWQKPiArICogZnJvbSB0aGUgb25lIHRoYXQgaGFzIGJlZW4gYWdyZWVk IGJ5IHRoZSBkaWZmZXJlbnQgcmVzcG9uc2libGUgCj4gK3BhcnRpZXMuIFRoaXMKPiArICogdGFi bGVzIChvbmUgcGVyIHN1cHBvcnRlZCBwbGF0Zm9ybSkgaXMgZGVmaW5lZCBpbiBpbnRlbF9tb2Nz LmMgYW5kIAo+ICtpcwo+ICsgKiBwcm9ncmFtbWVkIGluIHRoZSBmaXJzdCBiYXRjaCBhZnRlciB0 aGUgY29udGV4dCBpcyBsb2FkZWQgKHdpdGggCj4gK3RoZSBoYXJkd2FyZQo+ICsgKiB3b3JrYXJv dW5kcykuIFRoaXMgd2lsbCB0aGVuIGxldCB0aGUgdXN1YWwgY29udGV4dCBoYW5kbGluZyBrZWVw IAo+ICt0aGUgTU9DUyBpbgo+ICsgKiBzdGVwLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0v ZHJtUC5oPgo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArCj4gKy8qIERlZmluZXMgZm9yIHRo ZSB0YWJsZXMgKFhYWF9NT0NTXzAgLSBYWFhfTU9DU182MykgKi8KPiArI2RlZmluZQlNT0NTX0NB Q0hFQUJJTElUWSh2YWx1ZSkJKCh2YWx1ZSAmIDB4MDMpIDw8IDApCj4gKyNkZWZpbmUJTU9DU19U R1RfQ0FDSEUodmFsdWUpCQkoKHZhbHVlICYgMHgwMykgPDwgMikKPiArI2RlZmluZQlNT0NTX0xS VU0odmFsdWUpCQkoKHZhbHVlICYgMHgwMykgPDwgNCkKPiArI2RlZmluZQlNT0NTX0FPTSh2YWx1 ZSkJCQkoKHZhbHVlICYgMHgwMSkgPDwgNikKPiArI2RlZmluZQlNT0NTX0xFQ0NfRVNDKHZhbHVl KQkJKCh2YWx1ZSAmIDB4MDEpIDw8IDcpCj4gKyNkZWZpbmUJTU9DU19MRUNDX1NDQyh2YWx1ZSkJ CSgodmFsdWUgJiAweDA3KSA8PCA4KQo+ICsjZGVmaW5lCU1PQ19QRk0odmFsdWUpCQkJKCh2YWx1 ZSAmIDB4MDcpIDw8IDExKQo+ICsjZGVmaW5lCU1PQ1NfU0NGKHZhbHVlKQkJCSgodmFsdWUgJiAw eDAxKSA8PCAxNCkKPiArCj4gKy8qIERlZmluZXMgZm9yIHRoZSB0YWJsZXMgKExOQ0ZNT0NTMCAt IExOQ0ZNT0NTMzEpIC0gdHdvIGVudHJpZXMgcGVyIHdvcmQgKi8KPiArI2RlZmluZQlNT0NTX0VT Qyh2YWx1ZSkJCQkoKHZhbHVlICYgMHgwMSkgPDwgMCkKPiArI2RlZmluZQlNT0NTX1NDQyh2YWx1 ZSkJCQkoKHZhbHVlICYgMHgwNykgPDwgMSkKPiArI2RlZmluZQlNT0NTX0wzX0NBQ0hFQUJJTElU WSh2YWx1ZSkJKCh2YWx1ZSAmIDB4MDMpIDw8IDQpCj4gKwo+ICsvKiBIZWxwZXIgZGVmaW5lcyAq Lwo+ICsjZGVmaW5lIEdFTjlfTlVNX01PQ1NfUklOR1MJKDUpCS8qIE51bWJlciBvZiBtb2NzIGVu Z2luZXMgdG8gcHJvZ3JhbSAqLwo+ICsjZGVmaW5lIEdFTjlfTlVNX01PQ1NfRU5UUklFUwkoNjMp CS8qIDYzIG91dCBvZiA2NCAtIDY0IGlzIHJzdnJkICovCj4gKwo+ICsvKiBzdHJ1Y3R1cmVzIHJl cXVpcmVkICovCj4gK3N0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IHsKPiArCXUzMgljb250cm9s X3ZhbHVlOwo+ICsJdTE2CWwzY2NfdmFsdWU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgZHJtX2k5MTVf bW9jc190YWJsZSB7Cj4gKwl1MzIJCQkJCXNpemU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVf bW9jc19lbnRyeQkqdGFibGU7Cj4gK307Cj4gKwo+ICt2b2lkIGVtaXRfbW9jc19sM2NjX3RhYmxl KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICsJCQkgc3RydWN0IGRybV9pOTE1 X21vY3NfdGFibGUgKnRhYmxlKTsKPiArCj4gK3ZvaWQgZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gKwkJCQlzdHJ1Y3QgZHJtX2k5MTVf bW9jc190YWJsZSAqdGFibGUsCj4gKwkJCQl1MzIgcmVnX2Jhc2UpOwo+ICsKPiArYm9vbCBnZXRf bW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkgICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUpOwo+ICsKPiArI2VuZGlmCj4gKwo+IC0tCj4gMS45 LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=