From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 6/7] drm/i915: abstract away platform specific parts from hpd handling Date: Fri, 29 May 2015 09:18:33 +0300 Message-ID: <87y4k7gb46.fsf@intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D739E6E1F6 for ; Thu, 28 May 2015 23:16:18 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyOCBNYXkgMjAxNSwgUGF1bG8gWmFub25pIDxwcnphbm9uaUBnbWFpbC5jb20+IHdy b3RlOgo+IDIwMTUtMDUtMjggOTo0MyBHTVQtMDM6MDAgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT46Cj4+IFNwbGl0IGludGVsX2hwZF9pcnFfaGFuZGxlciBpbnRvIHBsYXRmb3Jt cyBzcGVjaWZpYyBhbmQgcGxhdGZvcm0KPj4gYWdub3N0aWMgcGFydHMuIFRoZSBwbGF0Zm9ybSBz cGVjaWZpYyBwYXJ0cyBkZWNvZGUgdGhlIHJlZ2lzdGVycyBpbnRvCj4+IGluZm9ybWF0aW9uIGFi b3V0IHdoaWNoIGhwZCBwaW5zIHRyaWdnZXJlZCwgYW5kIGlmIHRoZXkgd2VyZSBsb25nCj4+IHB1 bHNlcy4gVGhlIHBsYXRmb3JtIGFnbm9zdGljIHBhcnRzIGRvIGZ1cnRoZXIgcHJvY2Vzc2luZywg c3VjaCBhcwo+PiBpbnRlcnJ1cHQgc3Rvcm0gbWl0aWdhdGlvbiBhbmQgc2NoZWR1bGluZyBib3R0 b20gaGFsdmVzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA aW50ZWwuY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCAx NDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNo YW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCj4+IGluZGV4IDZmZmZiZmQzMTIxYS4uZDQwMWM4NjNhZWVlIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gQEAgLTEzNzUsMzUgKzEzNzUsMzEgQEAgc3RhdGlj IGlycXJldHVybl90IGdlbjhfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+PiAgI2RlZmluZSBIUERfU1RPUk1fREVURUNUX1BFUklPRCAxMDAwCj4+ICAj ZGVmaW5lIEhQRF9TVE9STV9USFJFU0hPTEQgNQo+Pgo+PiAtc3RhdGljIGludCBwY2hfcG9ydF90 b19ob3RwbHVnX3NoaWZ0KGVudW0gcG9ydCBwb3J0KQo+PiArc3RhdGljIGJvb2wgcGNoX3BvcnRf aG90cGx1Z19sb25nX2RldGVjdChlbnVtIHBvcnQgcG9ydCwgdTMyIHZhbCkKPgo+IFdlIGNvdWxk IHRyeSB0byB0aGluayBvbiBzb21ldGhpbmcgYmV0dGVyIHRoYW4ganVzdCAidmFsIi4gSU1ITyBh bGwKPiB0aGUgdmFyaWFibGUgbmFtZXMgZm9yIHRoZSB3aG9sZSBob3RwbHVnIGNvZGUgb24gdGhp cyBmaWxlIGZlZWwgd2VpcmQuCj4KPgo+PiAgewo+PiAgICAgICAgIHN3aXRjaCAocG9ydCkgewo+ PiAtICAgICAgIGNhc2UgUE9SVF9BOgo+PiAtICAgICAgIGNhc2UgUE9SVF9FOgo+PiAtICAgICAg IGRlZmF1bHQ6Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4+ICAgICAgICAgY2FzZSBQ T1JUX0I6Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gMDsKPj4gKyAgICAgICAgICAgICAgIHJl dHVybiB2YWwgJiBQT1JUQl9IT1RQTFVHX0xPTkdfREVURUNUOwo+PiAgICAgICAgIGNhc2UgUE9S VF9DOgo+PiAtICAgICAgICAgICAgICAgcmV0dXJuIDg7Cj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gdmFsICYgUE9SVENfSE9UUExVR19MT05HX0RFVEVDVDsKPj4gICAgICAgICBjYXNlIFBPUlRf RDoKPj4gLSAgICAgICAgICAgICAgIHJldHVybiAxNjsKPj4gKyAgICAgICAgICAgICAgIHJldHVy biB2YWwgJiBQT1JURF9IT1RQTFVHX0xPTkdfREVURUNUOwo+Cj4gSG93IGFib3V0IGlmIHdlIGF0 IGxlYXN0IERSTV9ERUJVR19LTVMoKSBpbiBjYXNlIHRoZSBzaG9ydCBiaXQgaXMgbm90Cj4gMSBm b3IgdGhlc2UgInZhbGlkIiBwb3J0cz8gQnV0IEkgd291bGQgcHJlZmVyIERSTV9FUlJPUi4gVGhp cwo+IGNhbi9zaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaC4KPgo+Cj4+ICsgICAgICAgZGVmYXVs dDoKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4gICAgICAgICB9Cj4+ICB9Cj4+ Cj4+IC1zdGF0aWMgaW50IGk5MTVfcG9ydF90b19ob3RwbHVnX3NoaWZ0KGVudW0gcG9ydCBwb3J0 KQo+PiArc3RhdGljIGJvb2wgaTl4eF9wb3J0X2hvdHBsdWdfbG9uZ19kZXRlY3QoZW51bSBwb3J0 IHBvcnQsIHUzMiB2YWwpCj4+ICB7Cj4+ICAgICAgICAgc3dpdGNoIChwb3J0KSB7Cj4+IC0gICAg ICAgY2FzZSBQT1JUX0E6Cj4+IC0gICAgICAgY2FzZSBQT1JUX0U6Cj4+IC0gICAgICAgZGVmYXVs dDoKPj4gLSAgICAgICAgICAgICAgIHJldHVybiAtMTsKPj4gICAgICAgICBjYXNlIFBPUlRfQjoK Pj4gLSAgICAgICAgICAgICAgIHJldHVybiAxNzsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiB2 YWwgJiBQT1JUQl9IT1RQTFVHX0lOVF9MT05HX1BVTFNFOwo+PiAgICAgICAgIGNhc2UgUE9SVF9D Ogo+PiAtICAgICAgICAgICAgICAgcmV0dXJuIDE5Owo+PiArICAgICAgICAgICAgICAgcmV0dXJu IHZhbCAmIFBPUlRDX0hPVFBMVUdfSU5UX0xPTkdfUFVMU0U7Cj4+ICAgICAgICAgY2FzZSBQT1JU X0Q6Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gMjE7Cj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gdmFsICYgUE9SVERfSE9UUExVR19JTlRfTE9OR19QVUxTRTsKPj4gKyAgICAgICBkZWZhdWx0 Ogo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiAgICAgICAgIH0KPj4gIH0KPj4K Pj4gQEAgLTE0MjEsNDMgKzE0MTcsOTYgQEAgc3RhdGljIGVudW0gcG9ydCBnZXRfcG9ydF9mcm9t X3BpbihlbnVtIGhwZF9waW4gcGluKQo+PiAgICAgICAgIH0KPj4gIH0KPj4KPj4gKy8qIEdldCBh IGJpdCBtYXNrIG9mIHBpbnMgdGhhdCBoYXZlIHRyaWdnZXJlZCwgYW5kIHdoaWNoIG9uZXMgbWF5 IGJlIGxvbmcuICovCj4+ICtzdGF0aWMgdm9pZCBwY2hfZ2V0X2hwZF9waW5zKHUzMiAqcGluX21h c2ssIHUzMiAqbG9uZ19tYXNrLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBo b3RwbHVnX3RyaWdnZXIsIHUzMiBkaWdfaG90cGx1Z19yZWcsIGNvbnN0IHUzMiBocGRbSFBEX05V TV9QSU5TXSkKPgo+IDxpbnNlcnQgZXZlbiBsb3VkZXIgY29tcGxhaW50cyBhYm91dCBnb2luZyBw YXN0IDgwIGNvbHVtbnM+Cj4KPj4gK3sKPj4gKyAgICAgICBpbnQgaTsKPj4gKwo+PiArICAgICAg ICpwaW5fbWFzayA9IDA7Cj4+ICsgICAgICAgKmxvbmdfbWFzayA9IDA7Cj4+ICsKPj4gKyAgICAg ICBpZiAoIWhvdHBsdWdfdHJpZ2dlcikKPj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPj4gKwo+ PiArICAgICAgIGZvcl9lYWNoX2hwZF9waW4oaSkgewo+PiArICAgICAgICAgICAgICAgaWYgKGhw ZFtpXSAmIGhvdHBsdWdfdHJpZ2dlcikgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAqcGlu X21hc2sgfD0gQklUKGkpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChwY2hf cG9ydF9ob3RwbHVnX2xvbmdfZGV0ZWN0KGdldF9wb3J0X2Zyb21fcGluKGkpLCBkaWdfaG90cGx1 Z19yZWcpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsb25nX21hc2sgfD0g QklUKGkpOwo+PiArICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAg IERSTV9ERUJVR19EUklWRVIoImhvdHBsdWcgZXZlbnQgcmVjZWl2ZWQsIHN0YXQgMHglMDh4LCBk aWcgMHglMDh4LCBwaW5zIDB4JTA4eFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhv dHBsdWdfdHJpZ2dlciwgZGlnX2hvdHBsdWdfcmVnLCAqcGluX21hc2spOwo+PiArCj4+ICt9Cj4+ ICsKPj4gKy8qIEdldCBhIGJpdCBtYXNrIG9mIHBpbnMgdGhhdCBoYXZlIHRyaWdnZXJlZCwgYW5k IHdoaWNoIG9uZXMgbWF5IGJlIGxvbmcuICovCj4+ICtzdGF0aWMgdm9pZCBpOXh4X2dldF9ocGRf cGlucyh1MzIgKnBpbl9tYXNrLCB1MzIgKmxvbmdfbWFzaywKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTMyIGhvdHBsdWdfdHJpZ2dlciwgY29uc3QgdTMyIGhwZFtIUERfTlVNX1BJ TlNdKQo+PiArewo+PiArICAgICAgIGludCBpOwo+PiArCj4+ICsgICAgICAgKnBpbl9tYXNrID0g MDsKPj4gKyAgICAgICAqbG9uZ19tYXNrID0gMDsKPj4gKwo+PiArICAgICAgIGlmICghaG90cGx1 Z190cmlnZ2VyKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+PiArCj4+ICsgICAgICAgZm9y X2VhY2hfaHBkX3BpbihpKSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAoaHBkW2ldICYgaG90cGx1 Z190cmlnZ2VyKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICpwaW5fbWFzayB8PSBCSVQo aSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk5eHhfcG9ydF9ob3RwbHVn X2xvbmdfZGV0ZWN0KGdldF9wb3J0X2Zyb21fcGluKGkpLCBob3RwbHVnX3RyaWdnZXIpKQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsb25nX21hc2sgfD0gQklUKGkpOwo+PiAr ICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIERSTV9ERUJVR19E UklWRVIoImhvdHBsdWcgZXZlbnQgcmVjZWl2ZWQsIHN0YXQgMHglMDh4LCBwaW5zIDB4JTA4eFxu IiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhvdHBsdWdfdHJpZ2dlciwgKnBpbl9tYXNr KTsKPgo+IFRoZSBmYWN0IHRoYXQgdGhpcyBpcyBtb3N0bHkgZHVwbGljYXRlZCBjb2RlIGZlZWxz IGEgbGl0dGxlIGJpdCB3ZWlyZC4KPiBJIHdvbid0IGJlIHN1cnByaXNlZCBpZiBzb21lIHJhbmRv bSBwZXJzb24gd3JpdGVzIGEgcGF0Y2ggdG8KPiBkZWR1cGxpY2F0ZSB0aGlzIGluIHRoZSBmdXR1 cmUuIEkgY291bGQgZXZlbiBnaXZlIGl0IGEgUi1CLgoKSSBrbm93LCBJIHdhcyBkaXZpZGVkIGhl cmUgbXlzZWxmLiBJbiB0aGUgZW5kIEkgZGlkbid0IHdhbnQgdG8gbWFrZSB0aGlzCnN1cGVyZmlj aWFsbHkgcGxhdGZvcm0gaW5kZXBlbmRlbnQgd2l0aCBpZnMgaW5zaWRlLCB3aGVuIHRoZSBjYWxs ZXJzIGFyZQphbHJlYWR5IHBsYXRmb3JtIHNwZWNpZmljLiBBbHNvLCB0aGUgaTl4eCBvbmUgZG9l cyBub3QgaGF2ZQpkaWdfaG90cGx1Z19yZWcsIHNvIG5vdCBwYXNzaW5nIHRoYXQgaW4gb3IgbG9n Z2luZyBhZGRzIGNsYXJpdHkuIEJ1dCBJCmNvdWxkIGhhdmUgZ29uZSBlaXRoZXIgd2F5LgoKPgo+ Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogaW50ZWxfaHBkX2lycV9oYW5kbGVyIC0gbWFpbiBo b3RwbHVnIGlycSBoYW5kbGVyCj4+ICsgKiBAZGV2OiBkcm0gZGV2aWNlCj4+ICsgKiBAcGluX21h c2s6IGEgbWFzayBvZiBocGQgcGlucyB0aGF0IGhhdmUgdHJpZ2dlcmVkIHRoZSBpcnEKPj4gKyAq IEBsb25nX21hc2s6IGEgbWFzayBvZiBocGQgcGlucyB0aGF0IG1heSBiZSBsb25nIGhwZCBwdWxz ZXMKPj4gKyAqCj4+ICsgKiBUaGlzIGlzIHRoZSBtYWluIGhvdHBsdWcgaXJxIGhhbmRsZXIgZm9y IGFsbCBwbGF0Zm9ybXMuIFRoZSBwbGF0Zm9ybSBzcGVjaWZpYwo+PiArICogaXJxIGhhbmRsZXJz IGNhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGhvdHBsdWcgaXJxIGhhbmRsZXJzLCB3aGljaCBy ZWFkIGFuZAo+PiArICogZGVjb2RlIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcnMgaW50byBiaXRt YXNrcyBhYm91dCBocGQgcGlucyB0aGF0IGhhdmUKPj4gKyAqIHRyaWdnZXJlZCAoQHBpbl9tYXNr KSwgYW5kIHdoaWNoIG9mIHRob3NlIHBpbnMgbWF5IGJlIGxvbmcgcHVsc2VzCj4+ICsgKiAoQGxv bmdfbWFzaykuIFRoZSBAbG9uZ19tYXNrIGlzIGlnbm9yZWQgaWYgdGhlIHBvcnQgY29ycmVzcG9u ZGluZyB0byB0aGUgcGluCj4+ICsgKiBpcyBub3QgYSBkaWdpdGFsIHBvcnQuCj4KPiBOaWNlIQo+ Cj4+ICsgKgo+PiArICogSGVyZSwgd2UgZG8gaG90cGx1ZyBpcnEgc3Rvcm0gZGV0ZWN0aW9uIGFu ZCBtaXRpZ2F0aW9uLCBhbmQgcGFzcyBmdXJ0aGVyCj4+ICsgKiBwcm9jZXNzaW5nIHRvIGFwcHJv cHJpYXRlIGJvdHRvbSBoYWx2ZXMuCj4KPiBOb3cgeW91IGNhbiBleHRyYWN0IHRoZSBjb2RlIHRo YXQgZG9lcyB0aGUgc3Rvcm0gZGV0ZWN0aW9uIGFuZCBwdXQgaXQKPiBvbiBpdHMgb3duIGZ1bmN0 aW9uIDopCj4gaW50ZWxfaHBkX3N0b3JtX3Bpbl91cGRhdGUoKSBvciBzb21ldGhpbmcgZWxzZS4u LgoKWXVwLCB0aGF0J3MgdGhlIHBsYW4sIGJ1dCB0aGluZ3Mgc2VlbSB0byBtb3ZlIGZvcndhcmQg YmV0dGVyIHdpdGgKc21hbGxlciBzdGVwcyEKCj4KPiBCZXNpZGVzIGFsbCB0aGUgYmlrZXNoZWRk aW5nIGFuZCBzdWdnZXN0aW9ucyBmb3IgInBhcnQgSUlJIiwgdGhlIGNvZGUKPiBsb29rcyBjb3Jy ZWN0LCBhbmQgbW9yZSBvcmdhbml6ZWQsIHNvIHdpdGggb3Igd2l0aG91dCBjaGFuZ2VzOgo+IFJl dmlld2VkLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KClRoYW5r cyBmb3IgdGhlIHJldmlldyBhbmQgc3VnZ2VzdGlvbnMhCgpCUiwKSmFuaS4KCgo+Cj4KPj4gKyAq Lwo+PiAgc3RhdGljIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaG90cGx1Z190 cmlnZ2VyLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGRpZ19ob3Rw bHVnX3JlZywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMiBo cGRbSFBEX05VTV9QSU5TXSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUz MiBwaW5fbWFzaywgdTMyIGxvbmdfbWFzaykKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAgICAgICAgIGludCBp Owo+PiAgICAgICAgIGVudW0gcG9ydCBwb3J0Owo+PiAgICAgICAgIGJvb2wgc3Rvcm1fZGV0ZWN0 ZWQgPSBmYWxzZTsKPj4gICAgICAgICBib29sIHF1ZXVlX2RpZyA9IGZhbHNlLCBxdWV1ZV9ocCA9 IGZhbHNlOwo+PiAtICAgICAgIHUzMiBkaWdfc2hpZnQ7Cj4+ICAgICAgICAgYm9vbCBpc19kaWdf cG9ydDsKPj4KPj4gLSAgICAgICBpZiAoIWhvdHBsdWdfdHJpZ2dlcikKPj4gKyAgICAgICBpZiAo IXBpbl9tYXNrKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pgo+PiAtICAgICAgIERSTV9E RUJVR19EUklWRVIoImhvdHBsdWcgZXZlbnQgcmVjZWl2ZWQsIHN0YXQgMHglMDh4LCBkaWcgMHgl MDh4XG4iLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgaG90cGx1Z190cmlnZ2VyLCBkaWdf aG90cGx1Z19yZWcpOwo+PiAtCj4+ICAgICAgICAgc3Bpbl9sb2NrKCZkZXZfcHJpdi0+aXJxX2xv Y2spOwo+PiAgICAgICAgIGZvcl9lYWNoX2hwZF9waW4oaSkgewo+PiAtICAgICAgICAgICAgICAg aWYgKCEoaHBkW2ldICYgaG90cGx1Z190cmlnZ2VyKSkKPj4gKyAgICAgICAgICAgICAgIGlmICgh KEJJVChpKSAmIHBpbl9tYXNrKSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4+Cj4+ICAgICAgICAgICAgICAgICBwb3J0ID0gZ2V0X3BvcnRfZnJvbV9waW4oaSk7Cj4+ICAg ICAgICAgICAgICAgICBpc19kaWdfcG9ydCA9IHBvcnQgJiYgZGV2X3ByaXYtPmhvdHBsdWcuaXJx X3BvcnRbcG9ydF07Cj4+Cj4+ICAgICAgICAgICAgICAgICBpZiAoaXNfZGlnX3BvcnQpIHsKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb25nX2hwZDsKPj4gLQo+PiAtICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIUhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpKSB7Cj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnX3NoaWZ0ID0gcGNoX3BvcnRfdG9faG90cGx1 Z19zaGlmdChwb3J0KTsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX2hw ZCA9IChkaWdfaG90cGx1Z19yZWcgPj4gZGlnX3NoaWZ0KSAmIFBPUlRCX0hPVFBMVUdfTE9OR19E RVRFQ1Q7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGlnX3NoaWZ0ID0gaTkxNV9wb3J0X3RvX2hvdHBsdWdfc2hp ZnQocG9ydCk7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19ocGQgPSAo aG90cGx1Z190cmlnZ2VyID4+IGRpZ19zaGlmdCkgJiBQT1JUQl9IT1RQTFVHX0xPTkdfREVURUNU Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgbG9uZ19ocGQgPSBsb25nX21hc2sgJiBCSVQoaSk7Cj4+Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIERSTV9ERUJVR19EUklWRVIoImRpZ2l0YWwgaHBkIHBvcnQgJWMgLSAlc1xuIiwg cG9ydF9uYW1lKHBvcnQpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvbmdfaHBkID8gImxvbmciIDogInNob3J0Iik7Cj4+IEBAIC0xNDgzLDkgKzE1MzIsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICogaW50ZXJydXB0cyBvbiBzYW5lciBwbGF0 Zm9ybXMuCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+PiAgICAgICAgICAgICAgICAg ICAgICAgICBXQVJOX09OQ0UoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSAmJiAhSVNfVkFMTEVZ VklFVyhkZXYpLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlY2VpdmVk IEhQRCBpbnRlcnJ1cHQgKDB4JTA4eCkgb24gcGluICVkICgweCUwOHgpIGFsdGhvdWdoIGRpc2Fi bGVkXG4iLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90cGx1Z190cmln Z2VyLCBpLCBocGRbaV0pOwo+PiAtCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiUmVjZWl2ZWQgSFBEIGludGVycnVwdCBvbiBwaW4gJWQgYWx0aG91Z2ggZGlzYWJsZWRcbiIs IGkpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gICAgICAgICAgICAg ICAgIH0KPj4KPj4gQEAgLTE0OTMsNyArMTU0MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKPj4KPj4gICAgICAgICAgICAgICAgIGlmICghaXNfZGlnX3BvcnQpIHsK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPmhvdHBsdWcuZXZlbnRfYml0cyB8 PSAoMSA8PCBpKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPmhvdHBsdWcu ZXZlbnRfYml0cyB8PSBCSVQoaSk7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlX2hw ID0gdHJ1ZTsKPj4gICAgICAgICAgICAgICAgIH0KPj4KPj4gQEAgLTE1MDUsNyArMTU1Miw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJSZWNlaXZlZCBIUEQg aW50ZXJydXB0IG9uIFBJTiAlZCAtIGNudDogMFxuIiwgaSk7Cj4+ICAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKGRldl9wcml2LT5ob3RwbHVnLnN0YXRzW2ldLmNvdW50ID4gSFBEX1NUT1JNX1RI UkVTSE9MRCkgewo+PiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+aG90cGx1Zy5z dGF0c1tpXS5zdGF0ZSA9IEhQRF9NQVJLX0RJU0FCTEVEOwo+PiAtICAgICAgICAgICAgICAgICAg ICAgICBkZXZfcHJpdi0+aG90cGx1Zy5ldmVudF9iaXRzICY9IH4oMSA8PCBpKTsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPmhvdHBsdWcuZXZlbnRfYml0cyAmPSB+QklUKGkp Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJIUEQgaW50ZXJydXB0 IHN0b3JtIGRldGVjdGVkIG9uIFBJTiAlZFxuIiwgaSk7Cj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIHN0b3JtX2RldGVjdGVkID0gdHJ1ZTsKPj4gICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ IEBAIC0xNzUzLDYgKzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFuZGxlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAgICAgICAgdTMyIGhvdHBs dWdfc3RhdHVzID0gSTkxNV9SRUFEKFBPUlRfSE9UUExVR19TVEFUKTsKPj4gKyAgICAgICB1MzIg cGluX21hc2ssIGxvbmdfbWFzazsKPj4KPj4gICAgICAgICBpZiAoIWhvdHBsdWdfc3RhdHVzKQo+ PiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+PiBAQCAtMTc2NywxNCArMTgxNSwxNiBAQCBzdGF0 aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAg ICAgICAgIGlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gICAgICAg ICAgICAgICAgIHUzMiBob3RwbHVnX3RyaWdnZXIgPSBob3RwbHVnX3N0YXR1cyAmIEhPVFBMVUdf SU5UX1NUQVRVU19HNFg7Cj4+Cj4+IC0gICAgICAgICAgICAgICBpbnRlbF9ocGRfaXJxX2hhbmRs ZXIoZGV2LCBob3RwbHVnX3RyaWdnZXIsIDAsIGhwZF9zdGF0dXNfZzR4KTsKPj4gKyAgICAgICAg ICAgICAgIGk5eHhfZ2V0X2hwZF9waW5zKCZwaW5fbWFzaywgJmxvbmdfbWFzaywgaG90cGx1Z190 cmlnZ2VyLCBocGRfc3RhdHVzX2c0eCk7Cj4+ICsgICAgICAgICAgICAgICBpbnRlbF9ocGRfaXJx X2hhbmRsZXIoZGV2LCBwaW5fbWFzaywgbG9uZ19tYXNrKTsKPj4KPj4gICAgICAgICAgICAgICAg IGlmIChob3RwbHVnX3N0YXR1cyAmIERQX0FVWF9DSEFOTkVMX01BU0tfSU5UX1NUQVRVU19HNFgp Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGRwX2F1eF9pcnFfaGFuZGxlcihkZXYpOwo+PiAg ICAgICAgIH0gZWxzZSB7Cj4+ICAgICAgICAgICAgICAgICB1MzIgaG90cGx1Z190cmlnZ2VyID0g aG90cGx1Z19zdGF0dXMgJiBIT1RQTFVHX0lOVF9TVEFUVVNfSTkxNTsKPj4KPj4gLSAgICAgICAg ICAgICAgIGludGVsX2hwZF9pcnFfaGFuZGxlcihkZXYsIGhvdHBsdWdfdHJpZ2dlciwgMCwgaHBk X3N0YXR1c19pOTE1KTsKPj4gKyAgICAgICAgICAgICAgIGk5eHhfZ2V0X2hwZF9waW5zKCZwaW5f bWFzaywgJmxvbmdfbWFzaywgaG90cGx1Z190cmlnZ2VyLCBocGRfc3RhdHVzX2k5MTUpOwo+PiAr ICAgICAgICAgICAgICAgaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ssIGxvbmdf bWFzayk7Cj4+ICAgICAgICAgfQo+PiAgfQo+Pgo+PiBAQCAtMTg3NCwxMSArMTkyNCwxMyBAQCBz dGF0aWMgdm9pZCBpYnhfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBj aF9paXIpCj4+ICAgICAgICAgaW50IHBpcGU7Cj4+ICAgICAgICAgdTMyIGhvdHBsdWdfdHJpZ2dl ciA9IHBjaF9paXIgJiBTREVfSE9UUExVR19NQVNLOwo+PiAgICAgICAgIHUzMiBkaWdfaG90cGx1 Z19yZWc7Cj4+ICsgICAgICAgdTMyIHBpbl9tYXNrLCBsb25nX21hc2s7Cj4+Cj4+ICAgICAgICAg ZGlnX2hvdHBsdWdfcmVnID0gSTkxNV9SRUFEKFBDSF9QT1JUX0hPVFBMVUcpOwo+PiAgICAgICAg IEk5MTVfV1JJVEUoUENIX1BPUlRfSE9UUExVRywgZGlnX2hvdHBsdWdfcmVnKTsKPj4KPj4gLSAg ICAgICBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVnX3RyaWdnZXIsIGRpZ19ob3Rw bHVnX3JlZywgaHBkX2lieCk7Cj4+ICsgICAgICAgcGNoX2dldF9ocGRfcGlucygmcGluX21hc2ss ICZsb25nX21hc2ssIGhvdHBsdWdfdHJpZ2dlciwgZGlnX2hvdHBsdWdfcmVnLCBocGRfaWJ4KTsK Pj4gKyAgICAgICBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBwaW5fbWFzaywgbG9uZ19tYXNr KTsKPj4KPj4gICAgICAgICBpZiAocGNoX2lpciAmIFNERV9BVURJT19QT1dFUl9NQVNLKSB7Cj4+ ICAgICAgICAgICAgICAgICBpbnQgcG9ydCA9IGZmcygocGNoX2lpciAmIFNERV9BVURJT19QT1dF Ul9NQVNLKSA+Pgo+PiBAQCAtMTk3MSwxMSArMjAyMywxMyBAQCBzdGF0aWMgdm9pZCBjcHRfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIpCj4+ICAgICAgICAg aW50IHBpcGU7Cj4+ICAgICAgICAgdTMyIGhvdHBsdWdfdHJpZ2dlciA9IHBjaF9paXIgJiBTREVf SE9UUExVR19NQVNLX0NQVDsKPj4gICAgICAgICB1MzIgZGlnX2hvdHBsdWdfcmVnOwo+PiArICAg ICAgIHUzMiBwaW5fbWFzaywgbG9uZ19tYXNrOwo+Pgo+PiAgICAgICAgIGRpZ19ob3RwbHVnX3Jl ZyA9IEk5MTVfUkVBRChQQ0hfUE9SVF9IT1RQTFVHKTsKPj4gICAgICAgICBJOTE1X1dSSVRFKFBD SF9QT1JUX0hPVFBMVUcsIGRpZ19ob3RwbHVnX3JlZyk7Cj4+Cj4+IC0gICAgICAgaW50ZWxfaHBk X2lycV9oYW5kbGVyKGRldiwgaG90cGx1Z190cmlnZ2VyLCBkaWdfaG90cGx1Z19yZWcsIGhwZF9j cHQpOwo+PiArICAgICAgIHBjaF9nZXRfaHBkX3BpbnMoJnBpbl9tYXNrLCAmbG9uZ19tYXNrLCBo b3RwbHVnX3RyaWdnZXIsIGRpZ19ob3RwbHVnX3JlZywgaHBkX2NwdCk7Cj4+ICsgICAgICAgaW50 ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ssIGxvbmdfbWFzayk7Cj4+Cj4+ICAgICAg ICAgaWYgKHBjaF9paXIgJiBTREVfQVVESU9fUE9XRVJfTUFTS19DUFQpIHsKPj4gICAgICAgICAg ICAgICAgIGludCBwb3J0ID0gZmZzKChwY2hfaWlyICYgU0RFX0FVRElPX1BPV0VSX01BU0tfQ1BU KSA+Pgo+PiBAQCAtMjE3NCw4ICsyMjI4LDggQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtl X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPj4gIHN0YXRpYyB2b2lkIGJ4dF9ocGRf aGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBpaXJfc3RhdHVzKQo+PiAg ewo+PiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4+IC0gICAgICAgdWludDMyX3QgaHBfY29udHJvbDsKPj4gLSAgICAgICB1aW50 MzJfdCBocF90cmlnZ2VyOwo+PiArICAgICAgIHUzMiBocF9jb250cm9sLCBocF90cmlnZ2VyOwo+ PiArICAgICAgIHUzMiBwaW5fbWFzaywgbG9uZ19tYXNrOwo+Pgo+PiAgICAgICAgIC8qIEdldCB0 aGUgc3RhdHVzICovCj4+ICAgICAgICAgaHBfdHJpZ2dlciA9IGlpcl9zdGF0dXMgJiBCWFRfREVf UE9SVF9IT1RQTFVHX01BU0s7Cj4+IEBAIC0yMTkxLDcgKzIyNDUsOCBAQCBzdGF0aWMgdm9pZCBi eHRfaHBkX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgaWlyX3N0YXR1 cykKPj4gICAgICAgICAgICAgICAgIGhwX2NvbnRyb2wgJiBCWFRfSE9UUExVR19DVExfTUFTSyk7 Cj4+Cj4+ICAgICAgICAgLyogQ2hlY2sgZm9yIEhQRCBzdG9ybSBhbmQgc2NoZWR1bGUgYm90dG9t IGhhbGYgKi8KPj4gLSAgICAgICBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBocF90cmlnZ2Vy LCBocF9jb250cm9sLCBocGRfYnh0KTsKPj4gKyAgICAgICBwY2hfZ2V0X2hwZF9waW5zKCZwaW5f bWFzaywgJmxvbmdfbWFzaywgaHBfdHJpZ2dlciwgaHBfY29udHJvbCwgaHBkX2J4dCk7Cj4+ICsg ICAgICAgaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ssIGxvbmdfbWFzayk7Cj4+ Cj4+ICAgICAgICAgLyoKPj4gICAgICAgICAgKiBGSVhNRTogU2F2ZSB0aGUgaG90IHBsdWcgc3Rh dHVzIGZvciBib3R0b20gaGFsZiBiZWZvcmUKPj4gLS0KPj4gMi4xLjQKPj4KPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPgo+Cj4KPiAtLSAK PiBQYXVsbyBaYW5vbmkKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK