From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC 01/12] drm/i915/config: Initial framework Date: Fri, 13 Feb 2015 10:19:38 +0200 Message-ID: <87lhk2rzol.fsf@intel.com> References: <1423784498-11272-1-git-send-email-bob.j.paauwe@intel.com> <1423784498-11272-2-git-send-email-bob.j.paauwe@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id A15FF6E45F for ; Fri, 13 Feb 2015 00:18:31 -0800 (PST) In-Reply-To: <1423784498-11272-2-git-send-email-bob.j.paauwe@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Bob Paauwe , intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxMyBGZWIgMjAxNSwgQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVsLmNvbT4g d3JvdGU6Cj4gVGhpcyBhZGRzIGFuIGluaXQtdGltZSBjb25maWd1cmF0aW9uIGZyYW1ld29yayB0 aGF0IHBhcnNlcyBjb25maWd1cmF0aW9uCj4gZGF0YSBmcm9tIGFuIEFDUEkgcHJvcGVydHkgdGFi bGUuIFRoZSB0YWJsZSBpcyBhc3N1bWVkIHRvIGhhdmUgd2VsbAo+IGRlZmluZWQgc3ViLWRldmlj ZSBwcm9wZXJ0eSB0YWJsZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSB2YXJpb3VzCj4gZHJpdmVy IGNvbXBvbmVudHMuICBJbml0aWFsbHkgdGhlIGZvbGxvd2luZyBzdWItZGV2aWNlIHRhYmxlcyBh cmUKPiBkZWZpbmVkOgo+Cj4gQ1JUQyAoQ1JUQykKPiAgICBUaGUgQ1JUQyBzdWItZGV2aWNlIHRh YmxlIGNvbnRhaW5zIGFkZGl0aW9uYWwgc3ViLWRldmljZSB0YWJsZXMKPiAgICB3aGVyZSBlYWNo IG9uZSBjb3JyZXNwb25kcyB0byBhIENSVEMuICBFYWNoIENSVEMgc3ViLWRldmljZSBtdXN0Cj4g ICAgaW5jbHVkZSBhIHByb3BlcnR5IGNhbGxlZCAiaWQiIHdob3NlIHZhbHVlIG1hdGNoZXMgdGhl IGRyaXZlcidzCj4gICAgY3J0YyBpZC4gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aGUgQ1JU QyBhcmUgdXNlZCB0byBjb25maWd1cmUKPiAgICB0aGUgY3J0Yy4KPgo+IENvbm5lY3RvciAoQ05D VCkKPiAgICBUaGUgQ05DVCBzdWItZGV2aWNlIHRhYmxlIGNvbnRhaW5zIGFkZGl0aW9uYWwgc3Vi LWRldmljZSB0YWJsZXMKPiAgICB3aGVyZSBlYWNoIG9uZSBjb3JyZXNwb25kcyB0byBhIGNvbm5l Y3Rvci4gRWFjaCBvZiB0aGUgY29ubmVjdG9yCj4gICAgc3ViLWRldmljZSB0YWJsZXMgbXVzdCBp bmNsdWRlIGEgcHJvcGVydHkgY2FsbGVkICJuYW1lIiB3aG9zZSB2YWx1ZQo+ICAgIG1hdGNoZXMg YSBjb25uZWN0b3IgbmFtZSBhc3NpZ25lZCBieSB0aGUgZHJpdmVyIChzZWUgbGF0ZXIgcGF0Y2gK PiAgICBmb3Igb3V0cHV0IG5hbWUgZnVuY3Rpb24pLiBBZGRpdGlvbmFsIGNvbm5lY3RvciBwcm9w ZXJ0aWVzIGNhbgo+ICAgIGJlIHNldCB0aHJvdWdoIHRoZXNlIHRhYmxlcy4KPgo+IFBsYW5lIChQ TE5TKQo+ICAgIFRoZSBQTE5TIHN1Yi1kZXZpY2UgdGFibGUgY29udGFpbnMgYWRkaXRpb25hbCBz dWItZGV2aWNlIHRhYmxlcwo+ICAgIHdoZXJlIGVhY2ggb25lIGNvcnJlc3BvbmRzIHRvIGEgcGxh bmUuICBbdGhpcyBuZWVkcyBhZGRpdGlvbmFsIHdvcmtdCj4KPiBJbiBhZGRpdGlvbiwgdGhlIG1h aW4gZGV2aWNlIHByb3BlcnR5IHRhYmxlIGZvciB0aGUgZGV2aWNlIG1heQo+IGNvbnRhaW4gY29u ZmlndXJhdGlvbiBpbmZvcm1hdGlvbiB0aGF0IGFwcGxpZXMgdG8gZ2VuZXJhbCBkcml2ZXIKPiBj b25maWd1cmF0aW9uLgo+Cj4gVGhlIGZyYW1ld29yayBpbmNsdWRlcyBhIGNvdXBsZSBvZiBoZWxw ZXIgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUKPiBjb25maWd1cmF0aW9uIGRhdGEuCj4KPiAgICBp bnRlbF9jb25maWdfZ2V0X2ludGVnZXIoKSB3aWxsIGxvb2sgdXAgYSBjb25maWd1cmF0aW9uIHBy b3BlcnR5Cj4gICAgYW5kIHJldHVybiB0aGUgaW50ZWdlciB2YWx1ZSBhc3NvY2lhdGVkIHdpdGgg aXQuCj4KPiAgICBpbnRlbF9jb25maWdfaW5pdF88Y29tcG9uZW50Pl9wcm9wZXJ0eSgpIHdpbGwg bG9vayB1cCBhCj4gICAgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBhbmQgYXNzaWduIHRoZSB2YWx1 ZSB0byBhIGRybQo+ICAgIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuICBUaGVzZSBmdW5jdGlv bnMgYXJlIHVzZWQgdG8KPiAgICBpbml0aWFsaXplIGRybSBwcm9wZXJ0eSBpbnN0YW5jZXMgdG8g c3BlY2lmaWMgdmFsdWVzLgo+Cj4gU2lnbmVkLW9mZi1ieTogQm9iIFBhYXV3ZSA8Ym9iLmoucGFh dXdlQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAg ICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgfCAgIDQg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAxNiArKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jICB8ICAgNiArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbmZpZy5jIHwgNTQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICB8ICAyOCArKwo+ ICA2IGZpbGVzIGNoYW5nZWQsIDU5OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25maWcuYwo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBmMDI1ZTdmLi40NjJkZTE5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPiBAQCAtMTIsNyArMTIsOCBAQCBpOTE1LXkgOj0gaTkxNV9kcnYubyBcCj4g ICAgICAgICAgICBpOTE1X3N1c3BlbmQubyBcCj4gIAkgIGk5MTVfc3lzZnMubyBcCj4gIAkgIGlu dGVsX3BtLm8gXAo+IC0JICBpbnRlbF9ydW50aW1lX3BtLm8KPiArCSAgaW50ZWxfcnVudGltZV9w bS5vIFwKPiArCSAgaW50ZWxfY29uZmlnLm8KPiAgCj4gIGk5MTUtJChDT05GSUdfQ09NUEFUKSAg ICs9IGk5MTVfaW9jMzIubwo+ICBpOTE1LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVn ZnMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IGluZGV4IDU4MDRhYTUuLjk1MDEzNjAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBAQCAtNjU2LDYgKzY1Niw4IEBAIGludCBpOTE1 X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp Cj4gIAlkZXYtPmRldl9wcml2YXRlID0gZGV2X3ByaXY7Cj4gIAlkZXZfcHJpdi0+ZGV2ID0gZGV2 Owo+ICAKPiArCWludGVsX2NvbmZpZ19pbml0KGRldik7Cj4gKwo+ICAJLyogU2V0dXAgdGhlIHdy aXRlLW9uY2UgImNvbnN0YW50IiBkZXZpY2UgaW5mbyAqLwo+ICAJZGV2aWNlX2luZm8gPSAoc3Ry dWN0IGludGVsX2RldmljZV9pbmZvICopJmRldl9wcml2LT5pbmZvOwo+ICAJbWVtY3B5KGRldmlj ZV9pbmZvLCBpbmZvLCBzaXplb2YoZGV2X3ByaXYtPmluZm8pKTsKPiBAQCAtOTI5LDYgKzkzMSw4 IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4g IAlhY3BpX3ZpZGVvX3VucmVnaXN0ZXIoKTsKPiAgCj4gKwlpbnRlbF9jb25maWdfc2h1dGRvd24o ZGV2KTsKPiArCj4gIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RF U0VUKSkKPiAgCQlpbnRlbF9mYmRldl9maW5pKGRldik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IDJkZWRkNDMuLjE2NTA5MWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMTY0NSw2ICsxNjQ1LDIwIEBAIHN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHsKPiAg CWJvb2wgYWN0aXZlOwo+ICB9Owo+ICAKPiArc3RydWN0IGludGVsX2NvbmZpZ19ub2RlIHsKPiAr CXN0cnVjdCBhY3BpX2RldmljZSAqYWRldjsKPiArCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPiAr CXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRlbF9jb25maWdf aW5mbyB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29uZmlnX25vZGUgYmFzZTsKPiArCXN0cnVjdCBsaXN0 X2hlYWQgY3J0Y19saXN0Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBjb25uZWN0b3JfbGlzdDsKPiAr CXN0cnVjdCBsaXN0X2hlYWQgcGxhbmVfbGlzdDsKPiArfTsKPiArCj4gKwo+ICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ICAJc3RydWN0IGtt ZW1fY2FjaGUgKnNsYWI7Cj4gQEAgLTE4ODYsNiArMTkwMCw3IEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKPiAgCXUzMiBsb25nX2hwZF9wb3J0X21hc2s7Cj4gIAl1MzIgc2hvcnRfaHBkX3Bv cnRfbWFzazsKPiAgCXN0cnVjdCB3b3JrX3N0cnVjdCBkaWdfcG9ydF93b3JrOwo+ICsJc3RydWN0 IGludGVsX2NvbmZpZ19pbmZvICpjb25maWdfaW5mbzsKPiAgCj4gIAkvKgo+ICAJICogaWYgd2Ug Z2V0IGEgSFBEIGlycSBmcm9tIERQIGFuZCBhIEhQRCBpcnEgZnJvbSBub24tRFAKPiBAQCAtMjUy OCw2ICsyNTQzLDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIHsKPiAgCWludCBlbmFibGVfaXBzOwo+ ICAJaW50IGludmVydF9icmlnaHRuZXNzOwo+ICAJaW50IGVuYWJsZV9jbWRfcGFyc2VyOwo+ICsJ Y2hhciBjZmdfZmlybXdhcmVbUEFUSF9NQVhdOwo+ICAJLyogbGVhdmUgYm9vbHMgYXQgdGhlIGVu ZCB0byBub3QgY3JlYXRlIGhvbGVzICovCj4gIAlib29sIGVuYWJsZV9oYW5nY2hlY2s7Cj4gIAli b29sIGZhc3Rib290Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bh cmFtcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+IGluZGV4IDQ0ZjIy NjIuLmY5MjYyMWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBAQCAtNTMs NiArNTMsNyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5ID0gewo+ICAJ Lm1taW9fZGVidWcgPSAwLAo+ICAJLnZlcmJvc2Vfc3RhdGVfY2hlY2tzID0gMSwKPiAgCS5udWNs ZWFyX3BhZ2VmbGlwID0gMCwKPiArCS5jZmdfZmlybXdhcmUgPSAiIiwKPiAgfTsKPiAgCj4gIG1v ZHVsZV9wYXJhbV9uYW1lZChtb2Rlc2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQwMCk7Cj4gQEAg LTE4MywzICsxODQsOCBAQCBNT0RVTEVfUEFSTV9ERVNDKHZlcmJvc2Vfc3RhdGVfY2hlY2tzLAo+ ICBtb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG51Y2xlYXJfcGFnZWZsaXAsIGk5MTUubnVjbGVh cl9wYWdlZmxpcCwgYm9vbCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MobnVjbGVhcl9wYWdl ZmxpcCwKPiAgCQkgIkZvcmNlIGF0b21pYyBtb2Rlc2V0IGZ1bmN0aW9uYWxpdHk7IG9ubHkgcGxh bmVzIHdvcmsgZm9yIG5vdyAoZGVmYXVsdDogZmFsc2UpLiIpOwo+ICsKPiArbW9kdWxlX3BhcmFt X3N0cmluZyhjZmdfZmlybXdhcmUsIGk5MTUuY2ZnX2Zpcm13YXJlLCBzaXplb2YoaTkxNS5jZmdf ZmlybXdhcmUpLCAwNDQ0KTsKPiArTU9EVUxFX1BBUk1fREVTQyhjZmdfZmlybXdhcmUsCj4gKwkJ ICJMb2FkIGNvbmZpZ3VyYXRpb24gZmlybXdhcmUgZnJvbSBidWlsdC1pbiBkYXRhIG9yIC9saWIv ZmlybXdhcmUuICIpOwoKVGhpcyBpc24ndCB1c2VkIG5vdy4KCj4gKwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25maWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NvbmZpZy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5j ZjdkYTkzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbmZpZy5jCj4gQEAgLTAsMCArMSw1NDIgQEAKPiArLyoKPiArICogaTkxNSBjb25maWd1cmF0 aW9uIHZpYSBBQ1BJIGRldmljZSBwcm9wZXJ0aWVzLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMTQsIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiB0byB1 c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQg aXRzCj4gKyAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVk IHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0Cj4gKyAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQKPiAr ICogbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5n IGRvY3VtZW50YXRpb24sIGFuZAo+ICsgKiB0aGF0IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQg aG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvcgo+ICsgKiBwdWJsaWNpdHkgcGVy dGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMs Cj4gKyAqIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBt YWtlIG5vIHJlcHJlc2VudGF0aW9ucwo+ICsgKiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp cyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMKPiArICogaXMi IHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Lgo+ICsgKgo+ICsgKiBUSEUgQ09Q WVJJR0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJ UyBTT0ZUV0FSRSwKPiArICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwo+ICsgKiBFVkVOVCBTSEFMTCBUSEUgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKPiAr ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxU SU5HIEZST00gTE9TUyBPRiBVU0UsCj4gKyAqIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKPiArICogVE9SVElPVVMg QUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQ RVJGT1JNQU5DRQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLgo+ICsgKi8KPiArI2luY2x1ZGUgPGxp bnV4L2FjcGkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2N0eXBlLmg+Cj4gKyNpbmNsdWRlIDxhY3BpL2FjcGlfYnVzLmg+Cj4gKyNpbmNsdWRlICJp bnRlbF9kcnYuaCIKPiArI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICsjaW5jbHVkZSAiaTkx NV9kcnYuaCIKPiArI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKPiArI2luY2x1ZGUgPGRybS9kcm1Q Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KPiArCj4gKwo+ICsjZGVmaW5lIGk5MTVfQUNQSV9QUlBfUk9PVCAiXFxfU0Iu UFJQLkdGWDAiCj4gKwo+ICsvKgo+ICsgKiBMb2FkIGFuIEFDUEkgcHJvcGVydHkgdGFibGUgaW50 byB0aGUgQUNQSSBzdWJzeXN0ZW0uCj4gKyAqCj4gKyAqIEZpcnN0LCB2ZXJpZnkgdGhhdCBhIHRh YmxlIGlzbid0IGFscmVhZHkgbG9hZGVkLiAgVGhlIHRhYmxlIG1heQo+ICsgKiBiZSBwYXJ0IG9m IHRoZSBBQ1BJIGZpcm13YXJlIGFuZCB0aHVzIGxvYWRlZCBieSB0aGUgQUNQSSBzdWItc3lzdGVt Cj4gKyAqIGR1cmluZyBib290LiAgSXQgaXMgYWxzbyBwb3NzaWJsZSBmb3IgQUNQSSBzdWItc3lz dGVtIHRvIGxvYWQgdGFibGVzCj4gKyAqIHRvIG92ZXJyaWRlIHRob3NlIHN1cHBsaWVkIGJ5IHRo ZSBmaXJtd2FyZS4KPiArICoKPiArICogSWYgYSBwcm9wZXJ0eSB0YWJsZSBmb3IgdGhlIEdGWCBk ZXZpY2UgaGFzIG5vdCBiZWVuIGxvYWRlZCwgYXR0ZW1wdAo+ICsgKiB0byBsb2FkIG9uZSBmcm9t IC9saWIvZmlybXdhcmUgaGVyZS4gIFRoZSBuYW1lIHdpbGwgZGVmYXVsdCB0bwo+ICsgKiBkcm1f aTkxNS5hbWwgYnV0IHRoZSBuYW1lIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNmZ19maXJtd2FyZSBt b2R1bGUKPiArICogcGFyYW1ldGVyLgo+ICsgKgo+ICsgKiBUaGUgb3JkZXIgb2YgcHJlY2lkZW5j ZSBmb3IgdGFibGUgbG9hZGluZyBpczoKPiArICogICAtIGR5YW5hbWljIHRhYmxlIGxvYWRlZCBi eSBBQ1BJIGRyaXZlcgo+ICsgKiAgIC0gdGFibGUgYnVpbHQgaW50byBmaXJtd2FyZQo+ICsgKiAg IC0gZHluYW1pYyB0YWJsZSBsb2FkZWQgYmFzZWQgb24gZHJpdmVyIG5hbWUgb3IgbW9kdWxlIHBh cmFtZXRlcgo+ICsgKgo+ICsgKiBJZiB0aGUgdGFibGUgaXMgbG9hZGVkIGJ5IHRoZSBkcml2ZXIs IGl0IHdpbGwgYmUgdW5sb2FkZWQgd2hlbiB0aGUKPiArICogZHJpdmVyIG1vZHVsZSBpcyB1bmxv YWRlZC4gIFRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBvcgo+ICsgKiBvdmVy cmlkZGVuIGJ5IHRoZSBBQ1BJIGRyaXZlciBhcmUgbm90IHVubG9hZGVkIGFuZCBjYW5ub3QgYmUg cmVwbGFjZWQKPiArICogYnkgdGFibGVzIGxvYWRlZCBieSB0aGUgZHJpdmVyLgo+ICsgKi8KPiAr c3RhdGljIGludCBpbnRlbF9hY3BpX2xvYWRfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg Y2hhciAqZmlybXdhcmUpCj4gK3sKPiArCXN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGU7 Cj4gKwlhY3BpX3N0YXR1cyBzdGF0dXM7Cj4gKwlhY3BpX2hhbmRsZSBoYW5kbGU7Cj4gKwlzdHJ1 Y3QgYWNwaV9kZXZpY2UgKmFjcGlfZGV2ID0gTlVMTDsKPiArCWNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqZnc7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwkvKiBtYWtlIHN1cmUgdGhlIHRhYmxlIGlz bid0IGFscmVhZHkgbG9hZGVkIGJlZm9yZSBsb2FkaW5nIGl0ICovCj4gKwlzdGF0dXMgPSBhY3Bp X2dldF9oYW5kbGUoQUNQSV9ST09UX09CSkVDVCwgaTkxNV9BQ1BJX1BSUF9ST09ULCAmaGFuZGxl KTsKPiArCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewo+ICsKPiArCQkvKiBUcnkgdG8gZHlu YW1pY2FsbHkgbG9hZCBhIHRhYmxlLi4uLiAqLwo+ICsJCURSTV9ERUJVR19EUklWRVIoIlJlcXVl c3RpbmcgY29uZmlndXJhdGlvbiB0YWJsZTogJXNcbiIsCj4gKwkJCQkgZmlybXdhcmUpOwo+ICsJ CXJldCA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCBmaXJtd2FyZSwgZGV2LT5kZXYpOwo+ICsJCWlm IChyZXQgIT0gMCkgewo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBmaW5kIEFDUEkgdGFibGUg JXM6ICVkXG4iLAo+ICsJCQkJICBmaXJtd2FyZSwgcmV0KTsKPiArCQkJZncgPSBOVUxMOwo+ICsJ CQlnb3RvIGJhZF90YWJsZTsKPiArCQl9IGVsc2Ugewo+ICsJCQl0YWJsZSA9IChzdHJ1Y3QgYWNw aV90YWJsZV9oZWFkZXIgKilmdy0+ZGF0YTsKPiArCQl9Cj4gKwo+ICsJCS8qIExvYWQgdGhlIHRh YmxlIGludG8gdGhlIGFjcGkgZGV2aWNlLiAqLwo+ICsJCXN0YXR1cyA9IGFjcGlfbG9hZF90YWJs ZSh0YWJsZSk7Cj4gKwkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKQo+ICsJCQlnb3RvIGJhZF90 YWJsZTsKPiArCj4gKwkJYWRkX3RhaW50KFRBSU5UX09WRVJSSURERU5fQUNQSV9UQUJMRSwgdHJ1 ZSk7Cj4gKwo+ICsJCS8qIEdldCBhIGhhbmRsZSBhbmQgc2NhbiB0aGUgYnVzICovCj4gKwkJc3Rh dHVzID0gYWNwaV9nZXRfaGFuZGxlKEFDUElfUk9PVF9PQkpFQ1QsIGk5MTVfQUNQSV9QUlBfUk9P VCwKPiArCQkJCQkgJmhhbmRsZSk7Cj4gKwkJYWNwaV9idXNfc2NhbihoYW5kbGUpOwo+ICsKPiAr CQlpZiAoYWNwaV9idXNfZ2V0X2RldmljZShoYW5kbGUsICZhY3BpX2RldikpCj4gKwkJCWdvdG8g YmFkX3RhYmxlOwo+ICsKPiArCQlhY3BpX2JpbmRfb25lKGRldi0+ZGV2LCBhY3BpX2Rldik7Cj4g Kwo+ICsJfSBlbHNlIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJBQ1BJIFByb3BlcnR5IHRhYmxl IHByZXZpb3VzbHkgbG9hZGVkIGZvciBfU0IuUFJQLkdGWDBcbiIpOwo+ICsJfQo+ICsKPiArCXJl dHVybiAwOwo+ICsKPiArYmFkX3RhYmxlOgo+ICsJcmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gKwly ZXR1cm4gLUVOT0RFVjsKPiArfQo+ICsKPiArLyoKPiArICogVXNlIEFDUEkgbWV0aG9kcyB0byBn ZXQgdGhlIHByb3BlcnR5Lgo+ICsgKgo+ICsgKiBUaGlzIGlzbid0IHVzaW5nIHRoZSBnZW5lcmlj IGRldmljZV9wcm9wZXJ0eV9yZWFkIGJlY2F1c2UgdGhhdAo+ICsgKiBjYW4gb25seSBhY2Nlc3Mg cHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdHVhbCBkZXZpY2UuIEl0Cj4gKyAqIGRv ZXNuJ3QgdW5kZXJzdGFuZCBvdXIgc3ViLWNvbXBvbmVudCBwcm9wZXJ0eSB0cmVlLgo+ICsgKi8K PiArc3RhdGljIGJvb2wgbm9kZV9wcm9wZXJ0eShzdHJ1Y3QgaW50ZWxfY29uZmlnX25vZGUgKm4s Cj4gKwkJCSAgY29uc3QgY2hhciAqcHJvcCwKPiArCQkJICB2b2lkICp2YWx1ZSkKPiArewo+ICsJ aW50IHJldCA9IDA7Cj4gKwljb25zdCB1bmlvbiBhY3BpX29iamVjdCAqb2JqOwo+ICsKPiArCXJl dCA9IGFjcGlfZGV2X2dldF9wcm9wZXJ0eShuLT5hZGV2LCBwcm9wLCBBQ1BJX1RZUEVfQU5ZLCAm b2JqKTsKPiArCWlmIChyZXQgPT0gLUVOT0RBVEEpIHsKPiArCQkvKgo+ICsJCSAqIFRoaXMgaXNu J3QgcmVhbGx5IGEgZmFpbHVyZSwgaXQncyBvayBpZiB0aGUgcHJvcGVydHkKPiArCQkgKiBkb2Vz bid0IGV4aXN0LiBUaGUgbWVzc2FnZSBpcyBmb3IgZGVidWcgcHVycG9zZXMgb25seS4KPiArCQkg Ki8KPiArCQlEUk1fREVCVUdfRFJJVkVSKCJQcm9wZXJ0eSBcIiVzXCIgbm90IGZvdW5kIGluICVz XG4iLAo+ICsJCQkJIHByb3AsIGFjcGlfZGV2aWNlX2JpZChuLT5hZGV2KSk7Cj4gKwl9IGVsc2Ug aWYgKHJldCA9PSAtRUlOVkFMKSB7Cj4gKwkJRFJNX0VSUk9SKCJJbnZhbGlkIGFjcGkgZGV2aWNl IG9yIHByb3BlcnR5IG5hbWUuXG4iKTsKPiArCX0gZWxzZSBpZiAocmV0KSB7Cj4gKwkJLyogVGhp cyBpcyBhIGZhaWx1cmUuICovCj4gKwkJRFJNX0VSUk9SKCJQcm9wZXJ0eSByZXF1ZXN0IGZhaWxl ZCBmb3IgJXM6ICVkXG4iLCBwcm9wLCByZXQpOwo+ICsJfSBlbHNlIHsKPiArCQlzd2l0Y2ggKG9i ai0+dHlwZSkgewo+ICsJCWNhc2UgQUNQSV9UWVBFX0lOVEVHRVI6Cj4gKwkJCSoodTMyICopdmFs dWUgPSBvYmotPmludGVnZXIudmFsdWU7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgQUNQSV9UWVBF X1NUUklORzoKPiArCQkJKihjaGFyICoqKXZhbHVlID0gb2JqLT5zdHJpbmcucG9pbnRlcjsKPiAr CQkJYnJlYWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBwcm9w ZXJ0eSB0eXBlLCBvbmx5IHN1cHBvcnQgaW50ZWdlciBhbmQgc3RyaW5nLlxuIik7Cj4gKwkJCXJl dCA9IC0xOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldCA9PSAw Owo+ICt9Cj4gKwo+ICsKPiArLyoqCj4gKyAqIGludGVsX2NvbmZpZ19pbml0IC0KPiArICoKPiAr ICogSW5pdGlhbGl6ZSB0aGUgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsgYnkgYXR0ZW1wdGluZyB0 byBsb2FkIGEKPiArICogcHJvcGVydHkgdGFibGUgYW5kIHBhcnNlIHRoZSBjb250ZW50cyBpbnRv IGNvbXBvbmVudCBsaXN0cy4KPiArICoKPiArICogQGRldjogVGhlIGRybSBkcml2ZXIgZGV2aWNl Lgo+ICsgKi8KPiArdm9pZCBpbnRlbF9jb25maWdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29uZmlnX2luZm8gKmluZm87Cj4gKwlzdHJ1Y3QgaW50 ZWxfY29uZmlnX25vZGUgKm5ld19ub2RlLCAqdG1wOwo+ICsJYWNwaV9oYW5kbGUgaGFuZGxlOwo+ ICsJc3RydWN0IGFjcGlfZGV2aWNlICpjbCwgKmNvbXBvbmVudDsKPiArCWNoYXIgKmNuYW1lOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiArCj4gKwkvKiBMb2FkIGFuIEFDUEkgdGFibGUgZnJvbSAvbGliL2Zpcm13YXJlLiAgKi8KPiAr CXNucHJpbnRmKGk5MTUuY2ZnX2Zpcm13YXJlLCBQQVRIX01BWCwgImRybV8lcy5hbWwiLCBkZXYt PmRyaXZlci0+bmFtZSk7Cj4gKwo+ICsJaWYgKGludGVsX2FjcGlfbG9hZF90YWJsZShkZXYsIGk5 MTUuY2ZnX2Zpcm13YXJlKSAhPSAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gbG9hZCBB Q1BJIGRldmljZSBwcm9wZXJ0eSB0YWJsZS5cbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4g KwlEUk1fREVCVUdfRFJJVkVSKCJMb2FkZWQgQUNQSSBjb25maWd1cmF0aW9uIGZvciAlc1xuIiwK PiArCQkJIGRldi0+ZHJpdmVyLT5uYW1lKTsKPiArCj4gKwlpbmZvID0ga3phbGxvYyhzaXplb2Yo KmluZm8pLCBHRlBfS0VSTkVMKTsKPiArCWlmICghaW5mbykgewo+ICsJCURSTV9FUlJPUigiRmFp bGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgY29uZmlndXJhdGlvbi5cbiIpOwo+ICsJCXJldHVy bjsKPiArCX0KPiArCj4gKwlJTklUX0xJU1RfSEVBRCgmaW5mby0+YmFzZS5saXN0KTsKPiArCUlO SVRfTElTVF9IRUFEKCZpbmZvLT5jcnRjX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmluZm8t PmNvbm5lY3Rvcl9saXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZpbmZvLT5wbGFuZV9saXN0KTsK PiArCj4gKwloYW5kbGUgPSBBQ1BJX0hBTkRMRShkZXYtPmRldik7Cj4gKwlpZiAoIWhhbmRsZSkg ewo+ICsJCURSTV9ERUJVR19EUklWRVIoIk5vIGFzc29jaWF0ZWQgQUNQSSBoYW5kbGUuXG4iKTsK PiArCQlrZnJlZShpbmZvKTsKPiArCQlyZXR1cm47Cj4gKwl9IGVsc2Ugewo+ICsJCWFjcGlfYnVz X2dldF9kZXZpY2UoaGFuZGxlLCAmaW5mby0+YmFzZS5hZGV2KTsKPiArCX0KPiArCj4gKwkvKgo+ ICsJICogQ3JlYXRlIGEgbGlzdCBvZiBvbmUgZm9yIHRoZSB0b3AgbGV2ZWwgZHJpdmVyIGNvbmZp Zy4KPiArCSAqCj4gKwkgKiBXZSBkb24ndCByZWFsbHkgbmVlZCBhIGZ1bGwgY29uZmlnX2luZm8g c3RydWN0dXJlIGZvciB0aGlzIGJ1dAo+ICsJICogaXQgc2ltcGxpZmllcyB0aGUgaGFuZGxpbmcg b2YgZHJpdmVyIGdlbmVyYWwgY29uZmlnIHNldHRpbmdzCj4gKwkgKiBhcyB3ZSBkb24ndCBoYXZl IHRvIGhhdmUgYSBzcGVjaWFsIGNhc2UgYW5kIHVuaXF1ZSBzdHJ1Y3R1cmUKPiArCSAqIGp1c3Qg Zm9yIHRoaXMuCj4gKwkgKi8KPiArCUlOSVRfTElTVF9IRUFEKCZpbmZvLT5iYXNlLm5vZGUpOwo+ ICsJbGlzdF9hZGRfdGFpbCgmaW5mby0+YmFzZS5ub2RlLCAmaW5mby0+YmFzZS5saXN0KTsKPiAr Cj4gKy8qIENvbXBvbmVudCBzdWItZGV2aWNlIEFDUEkgbmFtZXMgKi8KPiArI2RlZmluZSBpOTE1 X0NPTVBPTkVOVF9DUlRDICJDUlRDIgo+ICsjZGVmaW5lIGk5MTVfQ09NUE9ORU5UX0NPTk5FQ1RP UiAiQ05DVCIKPiArI2RlZmluZSBpOTE1X0NPTVBPTkVOVF9QTEFORSAiUExOUyIKPiArCj4gKwkv KiBCdWlsZCBsaXN0cyAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb21wb25lbnQsICZpbmZv LT5iYXNlLmFkZXYtPmNoaWxkcmVuLCBub2RlKSB7Cj4gKwkJaWYgKCFjb21wb25lbnQpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQljbmFtZSA9IGFjcGlfZGV2aWNlX2JpZChjb21wb25lbnQpOwo+ ICsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCAmY29tcG9uZW50LT5jaGlsZHJlbiwgbm9k ZSkgewo+ICsJCQluZXdfbm9kZSA9IGt6YWxsb2Moc2l6ZW9mKCpuZXdfbm9kZSksIEdGUF9LRVJO RUwpOwo+ICsJCQlpZiAoIW5ld19ub2RlKQo+ICsJCQkJZ290byBiYWlsOwo+ICsJCQluZXdfbm9k ZS0+YWRldiA9IGNsOwo+ICsJCQlJTklUX0xJU1RfSEVBRCgmbmV3X25vZGUtPm5vZGUpOwo+ICsK PiArCQkJLyogQWRkIHRvIHRoZSBhcHByb3ByaWF0ZSBsaXN0ICovCj4gKwkJCWlmIChzdHJjbXAo Y25hbWUsIGk5MTVfQ09NUE9ORU5UX0NSVEMpID09IDApIHsKPiArCQkJCWxpc3RfYWRkX3RhaWwo Jm5ld19ub2RlLT5ub2RlLAo+ICsJCQkJCSAgICAgICZpbmZvLT5jcnRjX2xpc3QpOwo+ICsJCQl9 IGVsc2UgaWYgKHN0cmNtcChjbmFtZSwgaTkxNV9DT01QT05FTlRfQ09OTkVDVE9SKSA9PSAwKSB7 Cj4gKwkJCQlsaXN0X2FkZF90YWlsKCZuZXdfbm9kZS0+bm9kZSwKPiArCQkJCQkgICAgICAmaW5m by0+Y29ubmVjdG9yX2xpc3QpOwo+ICsJCQl9IGVsc2UgaWYgKHN0cmNtcChjbmFtZSwgaTkxNV9D T01QT05FTlRfUExBTkUpID09IDApIHsKPiArCQkJCWxpc3RfYWRkX3RhaWwoJm5ld19ub2RlLT5u b2RlLAo+ICsJCQkJCSAgICAgICZpbmZvLT5wbGFuZV9saXN0KTsKPiArCQkJfSBlbHNlIHsKPiAr CQkJCS8qIHVua25vd24gY29tcG9uZW50LCBpZ25vcmUgaXQgKi8KPiArCQkJCWtmcmVlKG5ld19u b2RlKTsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwlkZXZfcHJpdi0+Y29uZmlnX2luZm8g PSBpbmZvOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiaTkxNSBDb25maWd1cmF0aW9uIGxvYWRlZC5c biIpOwo+ICsJcmV0dXJuOwo+ICsKPiArYmFpbDoKPiArCURSTV9ERUJVR19EUklWRVIoImk5MTUg Q29uZmlndXJhdGlvbiBhYm9ydGVkLCBpbnN1ZmZpY2llbnQgbWVtb3J5LlxuIik7Cj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmV3X25vZGUsIHRtcCwgJmluZm8tPmNydGNfbGlzdCwgbm9k ZSkKPiArCQlrZnJlZShuZXdfbm9kZSk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmV3 X25vZGUsIHRtcCwgJmluZm8tPmNvbm5lY3Rvcl9saXN0LCBub2RlKQo+ICsJCWtmcmVlKG5ld19u b2RlKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuZXdfbm9kZSwgdG1wLCAmaW5mby0+ cGxhbmVfbGlzdCwgbm9kZSkKPiArCQlrZnJlZShuZXdfbm9kZSk7Cj4gKwo+ICsJa2ZyZWUoaW5m byk7Cj4gKwlkZXZfcHJpdi0+Y29uZmlnX2luZm8gPSBOVUxMOwoKWW91IHNob3VsZCBwcm9iYWJs eSBhYnN0cmFjdCB0aGlzIHBhcnQgdG8gcmVkdWNlIGR1cGxpY2F0aW9uIHdpdGgKaW50ZWxfY29u ZmlnX3NodXRkb3duLiBZb3UgYWxzbyBsZWFrIGRldl9wcml2LT5jb25maWdfaW5mbyB0aGVyZS4K Cj4gK30KPiArCj4gKwo+ICsvKioKPiArICogQ2xlYW4gdXAgdGhlIGNvbmZpZ3VyYXRpb24gaW5m cmFzdHJ1Y3R1cmUgYXMgdGhlIGRyaXZlciBpcwo+ICsgKiBzaHV0aW5nIGRvd24uICBEb24ndCBs ZWFrIG1lbW9yeSEKPiArICoKPiArICogQGRldjogVGhlIGRybSBkcml2ZXIgZGV2aWNlLgo+ICsg Ki8KPiArdm9pZCBpbnRlbF9jb25maWdfc2h1dGRvd24oc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiArCWFjcGlfaGFuZGxlIGhhbmRsZTsKPiArCWFjcGlfc3RhdHVzIHN0YXR1czsKPiAr CXN0cnVjdCBhY3BpX2RldmljZSAqYWRldjsKPiArCXN0cnVjdCBpbnRlbF9jb25maWdfaW5mbyAq aW5mbzsKPiArCXN0cnVjdCBpbnRlbF9jb25maWdfbm9kZSAqbiwgKnRtcDsKPiArCj4gKwlpZiAo ZGV2X3ByaXYtPmNvbmZpZ19pbmZvID09IE5VTEwpCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIEZy ZWUgdGhlIGNvbXBvbmVudCBsaXN0cy4gICovCj4gKwlpbmZvID0gZGV2X3ByaXYtPmNvbmZpZ19p bmZvOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG4sIHRtcCwgJmluZm8tPmNydGNfbGlz dCwgbm9kZSkKPiArCQlrZnJlZShuKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuLCB0 bXAsICZpbmZvLT5jb25uZWN0b3JfbGlzdCwgbm9kZSkKPiArCQlrZnJlZShuKTsKPiArCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShuLCB0bXAsICZpbmZvLT5wbGFuZV9saXN0LCBub2RlKQo+ICsJ CWtmcmVlKG4pOwo+ICsKPiArCS8qIFVubG9hZCBhbnkgZHluYW1pY2FsbHkgbG9hZGVkIEFDUEkg cHJvcGVydHkgdGFibGUgKi8KPiArCWhhbmRsZSA9IEFDUElfSEFORExFKGRldi0+ZGV2KTsKPiAr Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJVbmxvYWRpbmcgZHluYW1pYyBpOTE1IENvbmZpZ3VyYXRp b24gQUNQSSB0YWJsZS5cbiIpOwo+ICsJaWYgKGhhbmRsZSkgewo+ICsKPiArCQlhY3BpX3VuYmlu ZF9vbmUoZGV2LT5kZXYpOwo+ICsKPiArCQlpZiAoYWNwaV9idXNfZ2V0X2RldmljZShoYW5kbGUs ICZhZGV2KSkKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IEFDUEkgYnVzIGRldmljZS5c biIpOwo+ICsJCWVsc2UKPiArCQkJYWNwaV9idXNfdHJpbShhZGV2KTsKPiArCj4gKwkJc3RhdHVz ID0gYWNwaV91bmxvYWRfcGFyZW50X3RhYmxlKGhhbmRsZSk7Cj4gKwkJaWYgKEFDUElfRkFJTFVS RShzdGF0dXMpKQo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byB1bmxvYWQgdGhlIGk5MTUgQ29u ZmlndXJhdGlvbiIKPiArCQkJCSAgIkFDUEkgdGFibGUuICVkXG4iLCBzdGF0dXMpOwo+ICsJfQo+ ICt9Cj4gKwo+ICsKPiArCj4gKy8qCj4gKyAqIGRvZXNfbmFtZV9tYXRjaAo+ICsgKgo+ICsgKiBU aGUgdmFyaW91cyBkcm0gY29tcG9uZW50cyBoYXZlIG5hbWVzIGFzc29jYXRlZCB3aXRoIHRoZW0u IFRvIGxpbmsKPiArICogYSBjb21wb25lbnQgaW4gdGhlIEFDUEkgcHJvcGVydHkgdHJlZSwgdXNl IGEgInNwZWNpYWwiIHByb3BlcnR5Cj4gKyAqIGNhbGxlZCAibmFtZSIuCj4gKyAqCj4gKyAqIFRo ZSBleGNlcHRpb24gaXMgdGhlIGdlbmVyYWwgZHJpdmVyIHByb3BlcnRpZXMuICBUaGVyZSBpcyBu byAibmFtZSIKPiArICogcHJvcGVydHkgYXNzb2NpYXRlZCB3aXRoIHRob3NlLiAgV2UgY291bGQg Zm9yY2Ugb25lLCBidXQgdGhhdCBtYXkKPiArICogYmUgbGVzcyBpbnR1aXRpdmUgdGhhbiBsZWF2 aW5nIHRoZSBuYW1lIGVtcHR5Lgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGxvb2sgZm9yIGEg cHJvcGVydHkgY2FsbGVkICJuYW1lIiBhbmQgY29tcGFyZXMgdGhlCj4gKyAqIHZhbHVlIG9mIHRo YXQgcHJvcGVydHkgd2l0aCB0aGUgcGFzc2VkIGluIG5hbWUgcGFyYW1ldGVyLgo+ICsgKi8KPiAr c3RhdGljIGJvb2wgZG9lc19uYW1lX21hdGNoKHN0cnVjdCBpbnRlbF9jb25maWdfbm9kZSAqbm9k ZSwgY29uc3QgY2hhciAqbmFtZSkKPiArewo+ICsJY2hhciAqcF9uYW1lOwo+ICsKPiArCS8qCj4g KwkgKiBHZW5lcmFsIGRyaXZlciBwcm9wZXJ0aWVzIGFyZW4ndCBpbiBhIHNlY3Rpb24gd2l0aCBh ICJuYW1lIgo+ICsJICogcHJvcGVydHkuIFRodXMgdGhpcyBzaG91bGQganVzdCByZXR1cm4gdHJ1 ZSBpbiB0aGF0IGNhc2UuCj4gKwkgKi8KPiArCWlmICghbmFtZSB8fCBzdHJsZW4obmFtZSkgPT0g MCkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwo+ICsJLyogTG9vayB1cCBhIG5hbWUgcHJvcGVy dHkgYW5kIHNlZSBpZiBpdCBtYXRjaGVzICovCj4gKwlpZiAobm9kZV9wcm9wZXJ0eShub2RlLCAi bmFtZSIsICZwX25hbWUpKSB7Cj4gKwkJaWYgKHN0cmNtcChuYW1lLCBwX25hbWUpID09IDApCj4g KwkJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAr Cj4gKy8qCj4gKyAqIE1hcCB0aGUgY29uZmlndXJhdGlvbiBzdWIgY29tcG9uZW50IGVudW0gdG8g dGhlIGNhY2hlZAo+ICsgKiBzdWIgY29tcG9uZW50IGxpc3QuCj4gKyAqLwo+ICtzdGF0aWMgc3Ry dWN0IGxpc3RfaGVhZCAqY2ZnX3R5cGVfdG9fbGlzdChzdHJ1Y3QgaW50ZWxfY29uZmlnX2luZm8g KmluZm8sCj4gKwkJCQkJICBlbnVtIGNmZ190eXBlIGNmZ190eXBlKQo+ICt7Cj4gKwlzd2l0Y2gg KGNmZ190eXBlKSB7Cj4gKwljYXNlIENGR19EUlY6Cj4gKwkJcmV0dXJuICZpbmZvLT5iYXNlLmxp c3Q7Cj4gKwljYXNlIENGR19DUlRDOgo+ICsJCXJldHVybiAmaW5mby0+Y3J0Y19saXN0Owo+ICsJ Y2FzZSBDRkdfQ09OTkVDVE9SOgo+ICsJCXJldHVybiAmaW5mby0+Y29ubmVjdG9yX2xpc3Q7Cj4g KwljYXNlIENGR19QTEFORToKPiArCQlyZXR1cm4gJmluZm8tPnBsYW5lX2xpc3Q7Cj4gKwl9Cj4g KwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArLyoKPiArICogSW50ZWdlciBwcm9wZXJ0eS4KPiAr ICoKPiArICogTG9vayB1cCBhIHByb3BlcnR5IGFuZCBzZXQgdGhlIHZhbHVlIHBvaW50ZXIgdG8g dGhlIHByb3BlcnR5IHZhbHVlLgo+ICsgKgo+ICsgKiByZXR1cm5zIHRydWUgaWYgdGhlIHByb3Bl cnR5IHdhcyBmb3VuZCwgZmFsc2UgaWYgbm90Lgo+ICsgKi8KPiArYm9vbCBpbnRlbF9jb25maWdf Z2V0X2ludGVnZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAg ICBlbnVtIGNmZ190eXBlIGNmZ190eXBlLAo+ICsJCQkgICAgICBjb25zdCBjaGFyICpuYW1lLAo+ ICsJCQkgICAgICBjb25zdCBjaGFyICpwcm9wZXJ0eSwKPiArCQkJICAgICAgdWludDMyX3QgKnZh bHVlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29uZmlnX2luZm8gKmluZm8gPSBkZXZfcHJpdi0+ Y29uZmlnX2luZm87Cj4gKwlzdHJ1Y3QgaW50ZWxfY29uZmlnX25vZGUgKm47Cj4gKwlzdHJ1Y3Qg bGlzdF9oZWFkICpsaXN0Owo+ICsJYm9vbCByZXQgPSBmYWxzZTsKPiArCj4gKwlpZiAoIWluZm8p Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWxpc3QgPSBjZmdfdHlwZV90b19saXN0KGluZm8s IGNmZ190eXBlKTsKPiArCWlmICghbGlzdCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeShuLCBsaXN0LCBub2RlKSB7Cj4gKwkJaWYgKGRvZXNfbmFtZV9tYXRj aChuLCBuYW1lKSkgewo+ICsJCQlpZiAobm9kZV9wcm9wZXJ0eShuLCBwcm9wZXJ0eSwgdmFsdWUp KQo+ICsJCQkJcmV0dXJuIHRydWU7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiBmYWxzZTsK PiArfQo+ICsKPiArLyoKPiArICogTG9vayB1cCBhIGRybSBwcm9wZXJ0eSBuYW1lIGluIHRoZSBj b25maWd1cmF0aW9uIHN0b3JlIGFuZCBpZgo+ICsgKiBmb3VuZCwgcmV0dXJuIHRoZSB2YWx1ZS4K PiArICoKPiArICogQSBkZWZhdWx0IHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJhbWV0ZXIg bGlzdCBzbyB0aGF0IHNvbWV0aGluZwo+ICsgKiByZWFzb25hYmxlIGlzIHJldHVybmVkIGlmIHRo ZSBsb29rdXAgZmFpbHMgdG8gZmluZCBhIG1hdGNoaW5nCj4gKyAqIGNvbmZpZ3VyYXRpb24ga2V5 Lgo+ICsgKi8KPiArc3RhdGljIHVpbnQ2NF90IGxvb2t1cF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQljb25zdCBjaGFyICpuYW1lLAo+ICsJCQkJc3Ry dWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCQllbnVtIGNmZ190eXBlIGNmZ190eXBl LAo+ICsJCQkJdWludDY0X3QgZGZsdCkKPiArewo+ICsJc3RydWN0IGludGVsX2NvbmZpZ19pbmZv ICppbmZvID0gZGV2X3ByaXYtPmNvbmZpZ19pbmZvOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9l bnVtICpwcm9wX2VudW07Cj4gKwljb25zdCBjaGFyICp2YWx1ZTsKPiArCXVpbnQ2NF90IHJldHZh bCA9IGRmbHQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29uZmlnX25vZGUgKm47Cj4gKwlzdHJ1Y3QgbGlz dF9oZWFkICpsaXN0Owo+ICsKPiArCWxpc3QgPSBjZmdfdHlwZV90b19saXN0KGluZm8sIGNmZ190 eXBlKTsKPiArCWlmICghbGlzdCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KG4sIGxpc3QsIG5vZGUpIHsKPiArCQlpZiAoIWRvZXNfbmFtZV9tYXRjaChuLCBuYW1l KSkKPiArCQkJY29udGludWU7Cj4gKwkJLyoKPiArCQkgKiBGSVhNRTogVGhpcyBpcyBhc3N1bWlu ZyB0aGF0IHRoZSB0eXBlIGlzIHN0cmluZwo+ICsJCSAqIGZvciBlbnVuIGRybSBwcm9wZXJ0aWVz LiAgVGhpcyBzaG91bGQgYmUgbW9yZQo+ICsJCSAqIGdlbmVyaWMgYW5kIG1hcCBkcm0gcHJvcGVy dHkgdHlwZXMgdG8gQUNQSSBwcm9wZXJ0eQo+ICsJCSAqIHR5cGVzLgo+ICsJCSAqLwo+ICsJCWlm ICghbm9kZV9wcm9wZXJ0eShuLCBwcm9wZXJ0eS0+bmFtZSwgJnZhbHVlKSkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCS8qIExvb2sgZm9yIGEgbWF0Y2hpbmcgZW51bSAqLwo+ICsJCWxpc3RfZm9y X2VhY2hfZW50cnkocHJvcF9lbnVtLCAmcHJvcGVydHktPmVudW1fbGlzdCwgaGVhZCkgewo+ICsJ CQlpZiAoc3RyY21wKHZhbHVlLCBwcm9wX2VudW0tPm5hbWUpID09IDApIHsKPiArCQkJCXJldHZh bCA9IHByb3BfZW51bS0+dmFsdWU7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsJCX0KPiAr CX0KPiArCj4gK291dDoKPiArCXJldHVybiByZXR2YWw7Cj4gK30KPiArCj4gKy8qCj4gKyAqIENv bm5lY3RvciBwcm9wZXJ0aWVzLgo+ICsgKgo+ICsgKiBJZiBhIGNvbm5lY3RvciBkcm0gcHJvcGVy dHkgaGFzIGEgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9uIHByb3BlcnR5LAo+ICsgKiB1c2Ug dGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdmFsdWUgdG8gaW5pdGlhbGl6ZSB0aGUgZHJtIHBy b3BlcnR5Lgo+ICsgKi8KPiArdWludDY0X3QgaW50ZWxfY29uZmlnX2luaXRfY29ubmVjdG9yX3By b3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkJICAgICAgY29u c3QgY2hhciAqbmFtZSwKPiArCQkJCQkgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwKPiArCQkJCQkgICAgICB1aW50NjRfdCBkZmx0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBjb25uZWN0b3ItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY29uZmlnX2luZm8gKmluZm8gPSBkZXZfcHJpdi0+Y29uZmlnX2luZm87Cj4gKwl1 aW50NjRfdCByZXR2YWw7Cj4gKwo+ICsJaWYgKCFpbmZvKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiAr CXJldHZhbCA9IGxvb2t1cF9wcm9wZXJ0eShkZXZfcHJpdiwgbmFtZSwgcHJvcGVydHksIENGR19D T05ORUNUT1IsIGRmbHQpOwo+ICsKPiArb3V0Ogo+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVy dHkoJmNvbm5lY3Rvci0+YmFzZSwgcHJvcGVydHksIHJldHZhbCk7Cj4gKwlyZXR1cm4gcmV0dmFs Owo+ICt9Cj4gKwo+ICsKPiArLyoKPiArICogUGxhbmUgcHJvcGVydGllcy4KPiArICoKPiArICog SWYgYSBwbGFuZSBkcm0gcHJvcGVydHkgaGFzIGEgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9u IHByb3BlcnR5LAo+ICsgKiB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdmFsdWUgdG8g aW5pdGlhbGl6ZSB0aGUgZHJtIHByb3BlcnR5Lgo+ICsgKi8KPiArdWludDY0X3QgaW50ZWxfY29u ZmlnX2luaXRfcGxhbmVfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCQkJ ICBjb25zdCBjaGFyICpuYW1lLAo+ICsJCQkJCSAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVy dHksCj4gKwkJCQkJICB1aW50NjRfdCBkZmx0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRl bF9jb25maWdfaW5mbyAqaW5mbyA9IGRldl9wcml2LT5jb25maWdfaW5mbzsKPiArCXVpbnQ2NF90 IHJldHZhbDsKPiArCj4gKwlpZiAoIWluZm8pCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0dmFs ID0gbG9va3VwX3Byb3BlcnR5KGRldl9wcml2LCBuYW1lLCBwcm9wZXJ0eSwgQ0ZHX1BMQU5FLCBk Zmx0KTsKPiArCj4gK291dDoKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+ YmFzZSwgcHJvcGVydHksIHJldHZhbCk7Cj4gKwlyZXR1cm4gcmV0dmFsOwo+ICt9Cj4gKwo+ICsK PiArLyoKPiArICogQ1JUQyBwcm9wZXJ0aWVzLgo+ICsgKgo+ICsgKiBJZiBhIGNydGMgZHJtIHBy b3BlcnR5IGhhcyBhIGNvcnJlc3BvbmRpbmcgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSwKPiArICog dXNlIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IHZhbHVlIHRvIGluaXRpYWxpemUgdGhlIGRy bSBwcm9wZXJ0eS4KPiArICovCj4gK3VpbnQ2NF90IGludGVsX2NvbmZpZ19pbml0X2NydGNfcHJv cGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJCSBjb25zdCBjaGFyICpuYW1lLAo+ ICsJCQkJCSBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiArCQkJCQkgdWludDY0X3Qg ZGZsdCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+ ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jb25maWdfaW5mbyAqaW5mbyA9IGRl dl9wcml2LT5jb25maWdfaW5mbzsKPiArCXVpbnQ2NF90IHJldHZhbDsKPiArCj4gKwlpZiAoIWlu Zm8pCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0dmFsID0gbG9va3VwX3Byb3BlcnR5KGRldl9w cml2LCBuYW1lLCBwcm9wZXJ0eSwgQ0ZHX0NSVEMsIGRmbHQpOwo+ICsKPiArb3V0Ogo+ICsJZHJt X29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsIHByb3BlcnR5LCByZXR2YWwpOwo+ ICsJcmV0dXJuIHJldHZhbDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXgg MWRlOGUyMC4uYWVmZDk1ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTEy NTksNCArMTI1OSwzMiBAQCB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0 ZSk7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBpbnRlbF9w bGFuZV9oZWxwZXJfZnVuY3M7Cj4gIAo+ICsvKiBpbnRlbF9jb25maWcuYyAqLwo+ICtlbnVtIGNm Z190eXBlIHsKPiArCUNGR19EUlYsCj4gKwlDRkdfQ1JUQywKPiArCUNGR19DT05ORUNUT1IsCj4g KwlDRkdfUExBTkUKPiArfTsKPiArCj4gK3ZvaWQgaW50ZWxfY29uZmlnX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgaW50ZWxfY29uZmlnX3NodXRkb3duKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICtib29sIGludGVsX2NvbmZpZ19nZXRfaW50ZWdlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgZW51bSBjZmdfdHlwZSBjZmdfdHlwZSwK PiArCQkJICBjb25zdCBjaGFyICpuYW1lLAo+ICsJCQkgIGNvbnN0IGNoYXIgKnByb3BlcnR5LAo+ ICsJCQkgIHVpbnQzMl90ICp2YWx1ZSk7Cj4gK3VpbnQ2NF90IGludGVsX2NvbmZpZ19pbml0X2Nv bm5lY3Rvcl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkg IGNvbnN0IGNoYXIgKm5hbWUsCj4gKwkJCSAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHks Cj4gKwkJCSAgdWludDY0X3QgZGZsdCk7Cj4gK3VpbnQ2NF90IGludGVsX2NvbmZpZ19pbml0X3Bs YW5lX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkgIGNvbnN0IGNoYXIg Km5hbWUsCj4gKwkJCSAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCSAgdWlu dDY0X3QgZGZsdCk7Cj4gK3VpbnQ2NF90IGludGVsX2NvbmZpZ19pbml0X2NydGNfcHJvcGVydHko c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCj4gKwkJCSAg c3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCSAgdWludDY0X3QgZGZsdCk7Cj4g Kwo+ICAjZW5kaWYgLyogX19JTlRFTF9EUlZfSF9fICovCj4gLS0gCj4gMi4xLjAKPgo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBO aWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==