From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915/bios: store child devices in a list Date: Wed, 6 Nov 2019 22:37:52 +0200 Message-ID: <20191106203752.GX1208@intel.com> References: <20191106164531.7079-1-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CDBAD6EC56 for ; Wed, 6 Nov 2019 20:37:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191106164531.7079-1-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMDYsIDIwMTkgYXQgMDY6NDU6MzFQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gVXNpbmcgdGhlIGFycmF5IGlzIGdldHRpbmcgY2x1bXN5LiBNYWtlIHRoaW5ncyBhIGJp dCBtb3JlIGR5bmFtaWMuCj4gCj4gSW4gY29kZSwgc3RhcnQgbWlncmF0aW5nIHRvd2FyZHMgY2Fs bGluZyB0aGUgbmV3IHN0cnVjdCBjaGlsZF9kZXZpY2UKPiAiY2hpbGQiIGFuZCB0aGUgVkJULW9y aWdpbmF0aW5nIHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICJjb25maWciLgo+IAo+IFJlbW92 ZSBlYXJseSByZXR1cm5zIG9uIG5vdCBoYXZpbmcgY2hpbGQgZGV2aWNlcyB3aGVuIHRoZSBlbmQg cmVzdWx0Cj4gYWZ0ZXIgIml0ZXJhdGluZyIgdGhlIGVtcHR5IGxpc3Qgd291bGQgYmUgdGhlIHNh bWUuCj4gCj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4g Cj4gLS0tCj4gCj4gVGhlIGVuZCBnb2FsOiBhbGxvdyBtb3JlIG1ldGEgaW5mb3JtYXRpb24gdG8g YmUgYWRkZWQgdG8gdGhlIG5ldwo+IGNoaWxkX2RldmljZSBzdHJ1Y3QsIGluZGVwZW5kZW50IG9m IERESSBwb3J0IGluZm8gYmVpbmcgdXNlZCBvciBub3Qgb24KPiB0aGUgcGxhdGZvcm0sIGFuZCBl dmVudHVhbGx5IG1pZ3JhdGUgZGRpX3BvcnRfaW5mbyB0byBpdCBhcyB3ZWxsLAo+IHVuaWZ5aW5n IHRoZSBzdHVmZiBhY3Jvc3MgcGxhdGZvcm1zLgo+IAo+IEN1cnJlbnRseSBpdCdzIG5vdCBlYXNp bHkgcG9zc2libGUgdG8gYXNzb2NpYXRlIGZvciBleGFtcGxlIHRoZSBEU0MKPiBjb21wcmVzc2lv biBkYXRhIHRvIHRoZSBjaGlsZCBkZXZpY2UgZm9yIG5vbi1EREkgcGxhdGZvcm1zIG9yIGZvciBE U0kKPiBvdXRwdXRzLiBUaGlzIGxldHMgdXMgYWRkIHRoZSBjb21wcmVzc2lvbiBkYXRhIChwb2lu dGVyKSB0byBzdHJ1Y3QKPiBjaGlsZF9kZXZpY2UuCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jIHwgMjAzICsrKysrKysrKystLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgfCAgIDMgKy0KPiAgMiBm aWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9zLmMKPiBpbmRleCBhMDNmNTZiN2I0 ZWYuLjAyNTA3NDg2MmFiMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Jpb3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYmlvcy5jCj4gQEAgLTU4LDYgKzU4LDEyIEBACj4gICAqIHRoYXQuCj4gICAqLwo+ICAKPiAr LyogV3JhcHBlciBmb3IgVkJUIGNoaWxkIGRldmljZSBjb25maWcgKi8KPiArc3RydWN0IGNoaWxk X2RldmljZSB7Cj4gKwlzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyBjb25maWc7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG5vZGU7CgpUaGUgd3JhcHBlciBpcyBhIGJpdCB1bmZvcnR1bmF0ZS4gSSBk b24ndCBzdXBwb3NlIHdlIGNvdWxkIGp1c3Qgc2hvdmUKdGhlIGxpc3QgaGVhZCBpbnRvIHRoZSBl eGlzdGluZyBzdHJ1Y3QgYW5kIGFkanVzdCB3aGF0IG5lZWRzIGFkanVzdGluZz8KCj4gK307Cj4g Kwo+ICAjZGVmaW5lCVNMQVZFX0FERFIxCTB4NzAKPiAgI2RlZmluZQlTTEFWRV9BRERSMgkweDcy Cj4gIAo+IEBAIC00NDksOCArNDU1LDkgQEAgc3RhdGljIHZvaWQKPiAgcGFyc2Vfc2R2b19kZXZp Y2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJz aW9uKQo+ICB7Cj4gIAlzdHJ1Y3Qgc2R2b19kZXZpY2VfbWFwcGluZyAqbWFwcGluZzsKPiAtCWNv bnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPiAtCWludCBpLCBjb3VudCA9 IDA7Cj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY29uZmlnOwoKVGhpcyB0 aGluZyBjb3VsZCBhdCBsZWFzdCBjYW4gbGl2ZSBpbnNpZGUgdGhlIGxvb3AuIFRob3VnaCB0aGUg cmVuYW1lIGlzCmFsc28gYSBiaXQgdW5mb3J0dW5hdGUsIGxlYWRpbmcgdG8gYSBuZWVkbGVzc2x5 IGxhcmdlIGRpZmYuIEF2b2lkaW5nIHRoZQp3cmFwcGVyIHN0cnVjdCB3b3VsZCBhbHNvIGF2b2lk IHRoYXQuIEkgZ3Vlc3MgYW5vdGhlciBvcHRpb24gd291bGQKYmUgdG8gc2VsZWN0IGEgZGlmZmVy ZW50IG5hbWUgZm9yIHRoZSB3cmFwcGVyIHBvaW50ZXIgaGVyZSBhbmQga2VlcCB0aGUKb3JpZ2lu YWwgbmFtZSBmb3IgdGhlIGFjdHVhbCB0aGluZy4KCj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2 aWNlICpjaGlsZDsKPiArCWludCBjb3VudCA9IDA7Cj4gIAo+ICAJLyoKPiAgCSAqIE9ubHkgcGFy c2UgU0RWTyBtYXBwaW5ncyBvbiBnZW5zIHRoYXQgY291bGQgaGF2ZSBTRFZPLiBUaGlzIGlzbid0 Cj4gQEAgLTQ2MSwzNSArNDY4LDM1IEBAIHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBiZGJfdmVyc2lvbikKPiAgCQlyZXR1cm47 Cj4gIAl9Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZfbnVtOyBpKyspIHsKPiAtCQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2 ICsgaTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxk X2RldmljZXMsIG5vZGUpIHsKPiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPiAgCj4gLQkJ aWYgKGNoaWxkLT5zbGF2ZV9hZGRyICE9IFNMQVZFX0FERFIxICYmCj4gLQkJICAgIGNoaWxkLT5z bGF2ZV9hZGRyICE9IFNMQVZFX0FERFIyKSB7Cj4gKwkJaWYgKGNvbmZpZy0+c2xhdmVfYWRkciAh PSBTTEFWRV9BRERSMSAmJgo+ICsJCSAgICBjb25maWctPnNsYXZlX2FkZHIgIT0gU0xBVkVfQURE UjIpIHsKPiAgCQkJLyoKPiAgCQkJICogSWYgdGhlIHNsYXZlIGFkZHJlc3MgaXMgbmVpdGhlciAw eDcwIG5vciAweDcyLAo+ICAJCQkgKiBpdCBpcyBub3QgYSBTRFZPIGRldmljZS4gU2tpcCBpdC4K PiAgCQkJICovCj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAtCQlpZiAoY2hpbGQtPmR2b19wb3J0 ICE9IERFVklDRV9QT1JUX0RWT0IgJiYKPiAtCQkgICAgY2hpbGQtPmR2b19wb3J0ICE9IERFVklD RV9QT1JUX0RWT0MpIHsKPiArCQlpZiAoY29uZmlnLT5kdm9fcG9ydCAhPSBERVZJQ0VfUE9SVF9E Vk9CICYmCj4gKwkJICAgIGNvbmZpZy0+ZHZvX3BvcnQgIT0gREVWSUNFX1BPUlRfRFZPQykgewo+ ICAJCQkvKiBza2lwIHRoZSBpbmNvcnJlY3QgU0RWTyBwb3J0ICovCj4gIAkJCURSTV9ERUJVR19L TVMoIkluY29ycmVjdCBTRFZPIHBvcnQuIFNraXAgaXRcbiIpOwo+ICAJCQljb250aW51ZTsKPiAg CQl9Cj4gIAkJRFJNX0RFQlVHX0tNUygidGhlIFNEVk8gZGV2aWNlIHdpdGggc2xhdmUgYWRkciAl MnggaXMgZm91bmQgb24iCj4gIAkJCSAgICAgICIgJXMgcG9ydFxuIiwKPiAtCQkJICAgICAgY2hp bGQtPnNsYXZlX2FkZHIsCj4gLQkJCSAgICAgIChjaGlsZC0+ZHZvX3BvcnQgPT0gREVWSUNFX1BP UlRfRFZPQikgPwo+ICsJCQkgICAgICBjb25maWctPnNsYXZlX2FkZHIsCj4gKwkJCSAgICAgIChj b25maWctPmR2b19wb3J0ID09IERFVklDRV9QT1JUX0RWT0IpID8KPiAgCQkJICAgICAgIlNEVk9C IiA6ICJTRFZPQyIpOwo+IC0JCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZvX21hcHBpbmdz W2NoaWxkLT5kdm9fcG9ydCAtIDFdOwo+ICsJCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZv X21hcHBpbmdzW2NvbmZpZy0+ZHZvX3BvcnQgLSAxXTsKPiAgCQlpZiAoIW1hcHBpbmctPmluaXRp YWxpemVkKSB7Cj4gLQkJCW1hcHBpbmctPmR2b19wb3J0ID0gY2hpbGQtPmR2b19wb3J0Owo+IC0J CQltYXBwaW5nLT5zbGF2ZV9hZGRyID0gY2hpbGQtPnNsYXZlX2FkZHI7Cj4gLQkJCW1hcHBpbmct PmR2b193aXJpbmcgPSBjaGlsZC0+ZHZvX3dpcmluZzsKPiAtCQkJbWFwcGluZy0+ZGRjX3BpbiA9 IGNoaWxkLT5kZGNfcGluOwo+IC0JCQltYXBwaW5nLT5pMmNfcGluID0gY2hpbGQtPmkyY19waW47 Cj4gKwkJCW1hcHBpbmctPmR2b19wb3J0ID0gY29uZmlnLT5kdm9fcG9ydDsKPiArCQkJbWFwcGlu Zy0+c2xhdmVfYWRkciA9IGNvbmZpZy0+c2xhdmVfYWRkcjsKPiArCQkJbWFwcGluZy0+ZHZvX3dp cmluZyA9IGNvbmZpZy0+ZHZvX3dpcmluZzsKPiArCQkJbWFwcGluZy0+ZGRjX3BpbiA9IGNvbmZp Zy0+ZGRjX3BpbjsKPiArCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNvbmZpZy0+aTJjX3BpbjsKPiAg CQkJbWFwcGluZy0+aW5pdGlhbGl6ZWQgPSAxOwo+ICAJCQlEUk1fREVCVUdfS01TKCJTRFZPIGRl dmljZTogZHZvPSV4LCBhZGRyPSV4LCB3aXJpbmc9JWQsIGRkY19waW49JWQsIGkyY19waW49JWRc biIsCj4gIAkJCQkgICAgICBtYXBwaW5nLT5kdm9fcG9ydCwKPiBAQCAtNTAxLDcgKzUwOCw3IEBA IHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1OCBiZGJfdmVyc2lvbikKPiAgCQkJRFJNX0RFQlVHX0tNUygiTWF5YmUgb25lIFNEVk8g cG9ydCBpcyBzaGFyZWQgYnkgIgo+ICAJCQkJCSAidHdvIFNEVk8gZGV2aWNlLlxuIik7Cj4gIAkJ fQo+IC0JCWlmIChjaGlsZC0+c2xhdmUyX2FkZHIpIHsKPiArCQlpZiAoY29uZmlnLT5zbGF2ZTJf YWRkcikgewo+ICAJCQkvKiBNYXliZSB0aGlzIGlzIGEgU0RWTyBkZXZpY2Ugd2l0aCBtdWx0aXBs ZSBpbnB1dHMgKi8KPiAgCQkJLyogQW5kIHRoZSBtYXBwaW5nIGluZm8gaXMgbm90IGFkZGVkICov Cj4gIAkJCURSTV9ERUJVR19LTVMoInRoZXJlIGV4aXN0cyB0aGUgc2xhdmUyX2FkZHIuIE1heWJl IHRoaXMiCj4gQEAgLTE1NzEsOCArMTU3OCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB2b2lkIHBh cnNlX2RkaV9wb3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92 ZXJzaW9uKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQ7 Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAKPiAg CWlmICghSEFTX0RESShkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJ CXJldHVybjsKPiBAQCAtMTU4MCwxMSArMTU4Niw4IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9w b3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJzaW9uKQo+ ICAJaWYgKGJkYl92ZXJzaW9uIDwgMTU1KQo+ICAJCXJldHVybjsKPiAgCj4gLQlmb3IgKGkgPSAw OyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPiAtCQljaGlsZCA9IGRl dl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPiAtCj4gLQkJcGFyc2VfZGRpX3BvcnQoZGV2X3By aXYsIGNoaWxkLCBiZGJfdmVyc2lvbik7Cj4gLQl9Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNo aWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKQo+ICsJCXBhcnNlX2RkaV9w b3J0KGRldl9wcml2LCAmY2hpbGQtPmNvbmZpZywgYmRiX3ZlcnNpb24pOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZAo+IEBAIC0xNTkyLDggKzE1OTUsOSBAQCBwYXJzZV9nZW5lcmFsX2RlZmluaXRp b25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBjb25zdCBzdHJ1 Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVm aW5pdGlvbnMgKmRlZnM7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hp bGQ7Cj4gLQlpbnQgaSwgY2hpbGRfZGV2aWNlX251bSwgY291bnQ7Cj4gKwljb25zdCBzdHJ1Y3Qg Y2hpbGRfZGV2aWNlX2NvbmZpZyAqY29uZmlnOwo+ICsJc3RydWN0IGNoaWxkX2RldmljZSAqY2hp bGQ7Cj4gKwlpbnQgaSwgY2hpbGRfZGV2aWNlX251bTsKPiAgCXU4IGV4cGVjdGVkX3NpemU7Cj4g IAl1MTYgYmxvY2tfc2l6ZTsKPiAgCWludCBidXNfcGluOwo+IEBAIC0xNjI5LDggKzE2MzMsOCBA QCBwYXJzZV9nZW5lcmFsX2RlZmluaXRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCX0gZWxzZSBpZiAoYmRiLT52ZXJzaW9uIDw9IDIyOSkgewo+ICAJCWV4cGVjdGVk X3NpemUgPSAzOTsKPiAgCX0gZWxzZSB7Cj4gLQkJZXhwZWN0ZWRfc2l6ZSA9IHNpemVvZigqY2hp bGQpOwo+IC0JCUJVSUxEX0JVR19PTihzaXplb2YoKmNoaWxkKSA8IDM5KTsKPiArCQlleHBlY3Rl ZF9zaXplID0gc2l6ZW9mKCpjb25maWcpOwo+ICsJCUJVSUxEX0JVR19PTihzaXplb2YoKmNvbmZp ZykgPCAzOSk7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiRXhwZWN0ZWQgY2hpbGQgZGV2aWNlIGNv bmZpZyBzaXplIGZvciBWQlQgdmVyc2lvbiAldSBub3Qga25vd247IGFzc3VtaW5nICV1XG4iLAo+ ICAJCQkJIGJkYi0+dmVyc2lvbiwgZXhwZWN0ZWRfc2l6ZSk7Cj4gIAl9Cj4gQEAgLTE2NDksNDMg KzE2NTMsMzAgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJLyogZ2V0IHRoZSBudW1iZXIgb2YgY2hpbGQgZGV2aWNl ICovCj4gIAljaGlsZF9kZXZpY2VfbnVtID0gKGJsb2NrX3NpemUgLSBzaXplb2YoKmRlZnMpKSAv IGRlZnMtPmNoaWxkX2Rldl9zaXplOwo+IC0JY291bnQgPSAwOwo+IC0JLyogZ2V0IHRoZSBudW1i ZXIgb2YgY2hpbGQgZGV2aWNlIHRoYXQgaXMgcHJlc2VudCAqLwo+IC0JZm9yIChpID0gMDsgaSA8 IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+IC0JCWNoaWxkID0gY2hpbGRfZGV2aWNlX3B0cihk ZWZzLCBpKTsKPiAtCQlpZiAoIWNoaWxkLT5kZXZpY2VfdHlwZSkKPiAtCQkJY29udGludWU7Cj4g LQkJY291bnQrKzsKPiAtCX0KPiAtCWlmICghY291bnQpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJu byBjaGlsZCBkZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4g LQlkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiA9IGtjYWxsb2MoY291bnQsIHNpemVvZigqY2hpbGQp LCBHRlBfS0VSTkVMKTsKPiAtCWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYpIHsKPiAtCQlE Uk1fREVCVUdfS01TKCJObyBtZW1vcnkgc3BhY2UgZm9yIGNoaWxkIGRldmljZVxuIik7Cj4gLQkJ cmV0dXJuOwo+IC0JfQo+ICAKPiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSA9IGNvdW50 Owo+IC0JY291bnQgPSAwOwo+ICAJZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkr Kykgewo+IC0JCWNoaWxkID0gY2hpbGRfZGV2aWNlX3B0cihkZWZzLCBpKTsKPiAtCQlpZiAoIWNo aWxkLT5kZXZpY2VfdHlwZSkKPiArCQljb25maWcgPSBjaGlsZF9kZXZpY2VfcHRyKGRlZnMsIGkp Owo+ICsJCWlmICghY29uZmlnLT5kZXZpY2VfdHlwZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJ CURSTV9ERUJVR19LTVMoIkZvdW5kIFZCVCBjaGlsZCBkZXZpY2Ugd2l0aCB0eXBlIDB4JXhcbiIs Cj4gLQkJCSAgICAgIGNoaWxkLT5kZXZpY2VfdHlwZSk7Cj4gKwkJCSAgICAgIGNvbmZpZy0+ZGV2 aWNlX3R5cGUpOwo+ICsKPiArCQljaGlsZCA9IGttYWxsb2Moc2l6ZW9mKCpjaGlsZCksIEdGUF9L RVJORUwpOwo+ICAKPiAgCQkvKgo+ICAJCSAqIENvcHkgYXMgbXVjaCBhcyB3ZSBrbm93IChzaXpl b2YpIGFuZCBpcyBhdmFpbGFibGUKPiAtCQkgKiAoY2hpbGRfZGV2X3NpemUpIG9mIHRoZSBjaGls ZCBkZXZpY2UuIEFjY2Vzc2luZyB0aGUgZGF0YSBtdXN0Cj4gLQkJICogZGVwZW5kIG9uIFZCVCB2 ZXJzaW9uLgo+ICsJCSAqIChjaGlsZF9kZXZfc2l6ZSkgb2YgdGhlIGNoaWxkIGRldmljZSBjb25m aWcuIEFjY2Vzc2luZyB0aGUKPiArCQkgKiBkYXRhIG11c3QgZGVwZW5kIG9uIFZCVCB2ZXJzaW9u Lgo+ICAJCSAqLwo+IC0JCW1lbWNweShkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGNvdW50LCBj aGlsZCwKPiAtCQkgICAgICAgbWluX3Qoc2l6ZV90LCBkZWZzLT5jaGlsZF9kZXZfc2l6ZSwgc2l6 ZW9mKCpjaGlsZCkpKTsKPiAtCQljb3VudCsrOwo+ICsJCW1lbWNweSgmY2hpbGQtPmNvbmZpZywg Y29uZmlnLAo+ICsJCSAgICAgICBtaW5fdChzaXplX3QsIGRlZnMtPmNoaWxkX2Rldl9zaXplLCBz aXplb2YoKmNvbmZpZykpKTsKPiArCj4gKwkJbGlzdF9hZGQoJmNoaWxkLT5ub2RlLCAmZGV2X3By aXYtPnZidC5jaGlsZF9kZXZpY2VzKTsKPiAgCX0KPiArCj4gKwlpZiAobGlzdF9lbXB0eSgmZGV2 X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzKSkKPiArCQlEUk1fREVCVUdfS01TKCJubyBjaGlsZCBk ZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPiAgfQo+ICAKPiAgLyogQ29tbW9uIGRlZmF1bHRz IHdoaWNoIG1heSBiZSBvdmVycmlkZGVuIGJ5IFZCVC4gKi8KPiBAQCAtMTg0OSw2ICsxODQwLDgg QEAgdm9pZCBpbnRlbF9iaW9zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnZi dC5jaGlsZF9kZXZpY2VzKTsKPiArCj4gIAlpbml0X3ZidF9kZWZhdWx0cyhkZXZfcHJpdik7Cj4g IAo+ICAJLyogSWYgdGhlIE9wUmVnaW9uIGRvZXMgbm90IGhhdmUgVkJULCBsb29rIGluIFBDSSBS T00uICovCj4gQEAgLTE5MDMsOSArMTg5NiwxMyBAQCB2b2lkIGludGVsX2Jpb3NfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqLwo+ICB2b2lkIGludGVsX2Jpb3Nf ZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAt CWtmcmVlKGRldl9wcml2LT52YnQuY2hpbGRfZGV2KTsKPiAtCWRldl9wcml2LT52YnQuY2hpbGRf ZGV2ID0gTlVMTDsKPiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSA9IDA7Cj4gKwlzdHJ1 Y3QgY2hpbGRfZGV2aWNlICpjaGlsZCwgKm47Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGNoaWxkLCBuLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJ bGlzdF9kZWwoJmNoaWxkLT5ub2RlKTsKPiArCQlrZnJlZShjaGlsZCk7Cj4gKwl9Cj4gKwo+ICAJ a2ZyZWUoZGV2X3ByaXYtPnZidC5zZHZvX2x2ZHNfdmJ0X21vZGUpOwo+ICAJZGV2X3ByaXYtPnZi dC5zZHZvX2x2ZHNfdmJ0X21vZGUgPSBOVUxMOwo+ICAJa2ZyZWUoZGV2X3ByaXYtPnZidC5sZnBf bHZkc192YnRfbW9kZSk7Cj4gQEAgLTE5MjksMjEgKzE5MjYsMjIgQEAgdm9pZCBpbnRlbF9iaW9z X2RyaXZlcl9yZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKi8K PiAgYm9vbCBpbnRlbF9iaW9zX2lzX3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hp bGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25m aWc7Cj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPiAgCj4gIAlpZiAoIWRl dl9wcml2LT52YnQuaW50X3R2X3N1cHBvcnQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlm ICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtKQo+ICsJaWYgKGxpc3RfZW1wdHkoJmRldl9w cml2LT52YnQuY2hpbGRfZGV2aWNlcykpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0JZm9yIChp ID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7Cj4gLQkJY2hpbGQg PSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNo aWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJY29uZmlnID0g JmNoaWxkLT5jb25maWc7Cj4gKwo+ICAJCS8qCj4gIAkJICogSWYgdGhlIGRldmljZSB0eXBlIGlz IG5vdCBUViwgY29udGludWUuCj4gIAkJICovCj4gLQkJc3dpdGNoIChjaGlsZC0+ZGV2aWNlX3R5 cGUpIHsKPiArCQlzd2l0Y2ggKGNvbmZpZy0+ZGV2aWNlX3R5cGUpIHsKPiAgCQljYXNlIERFVklD RV9UWVBFX0lOVF9UVjoKPiAgCQljYXNlIERFVklDRV9UWVBFX1RWOgo+ICAJCWNhc2UgREVWSUNF X1RZUEVfVFZfU1ZJREVPX0NPTVBPU0lURToKPiBAQCAtMTk1NCw3ICsxOTUyLDcgQEAgYm9vbCBp bnRlbF9iaW9zX2lzX3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCS8qIE9ubHkgd2hlbiB0aGUgYWRkaW5fb2Zmc2V0IGlzIG5vbi16ZXJvLCBpdCBpcyBy ZWdhcmRlZAo+ICAJCSAqIGFzIHByZXNlbnQuCj4gIAkJICovCj4gLQkJaWYgKGNoaWxkLT5hZGRp bl9vZmZzZXQpCj4gKwkJaWYgKGNvbmZpZy0+YWRkaW5fb2Zmc2V0KQo+ICAJCQlyZXR1cm4gdHJ1 ZTsKPiAgCX0KPiAgCj4gQEAgLTE5NzEsMzIgKzE5NjksMzIgQEAgYm9vbCBpbnRlbF9iaW9zX2lz X3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKi8KPiAg Ym9vbCBpbnRlbF9iaW9zX2lzX2x2ZHNfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHU4ICppMmNfcGluKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNl X2NvbmZpZyAqY2hpbGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2Ug KmNoaWxkOwo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiAg Cj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSkKPiArCWlmIChsaXN0X2VtcHR5 KCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAt CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+IC0J CWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+ICsJCWNv bmZpZyA9ICZjaGlsZC0+Y29uZmlnOwo+ICAKPiAgCQkvKiBJZiB0aGUgZGV2aWNlIHR5cGUgaXMg bm90IExGUCwgY29udGludWUuCj4gIAkJICogV2UgaGF2ZSB0byBjaGVjayBib3RoIHRoZSBuZXcg aWRlbnRpZmllcnMgYXMgd2VsbCBhcyB0aGUKPiAgCQkgKiBvbGQgZm9yIGNvbXBhdGliaWxpdHkg d2l0aCBzb21lIEJJT1Nlcy4KPiAgCQkgKi8KPiAtCQlpZiAoY2hpbGQtPmRldmljZV90eXBlICE9 IERFVklDRV9UWVBFX0lOVF9MRlAgJiYKPiAtCQkgICAgY2hpbGQtPmRldmljZV90eXBlICE9IERF VklDRV9UWVBFX0xGUCkKPiArCQlpZiAoY29uZmlnLT5kZXZpY2VfdHlwZSAhPSBERVZJQ0VfVFlQ RV9JTlRfTEZQICYmCj4gKwkJICAgIGNvbmZpZy0+ZGV2aWNlX3R5cGUgIT0gREVWSUNFX1RZUEVf TEZQKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3Bp bihkZXZfcHJpdiwgY2hpbGQtPmkyY19waW4pKQo+IC0JCQkqaTJjX3BpbiA9IGNoaWxkLT5pMmNf cGluOwo+ICsJCWlmIChpbnRlbF9nbWJ1c19pc192YWxpZF9waW4oZGV2X3ByaXYsIGNvbmZpZy0+ aTJjX3BpbikpCj4gKwkJCSppMmNfcGluID0gY29uZmlnLT5pMmNfcGluOwo+ICAKPiAgCQkvKiBI b3dldmVyLCB3ZSBjYW5ub3QgdHJ1c3QgdGhlIEJJT1Mgd3JpdGVycyB0byBwb3B1bGF0ZQo+ICAJ CSAqIHRoZSBWQlQgY29ycmVjdGx5LiAgU2luY2UgTFZEUyByZXF1aXJlcyBhZGRpdGlvbmFsCj4g IAkJICogaW5mb3JtYXRpb24gZnJvbSBBSU0gYmxvY2tzLCBhIG5vbi16ZXJvIGFkZGluIG9mZnNl dCBpcwo+ICAJCSAqIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCB0aGUgTFZEUyBpcyBhY3R1YWxseSBw cmVzZW50Lgo+ICAJCSAqLwo+IC0JCWlmIChjaGlsZC0+YWRkaW5fb2Zmc2V0KQo+ICsJCWlmIChj b25maWctPmFkZGluX29mZnNldCkKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJCS8qIEJ1dCBl dmVuIHRoZW4gc29tZSBCSU9TIHdyaXRlcnMgcGVyZm9ybSBzb21lIGJsYWNrIG1hZ2ljCj4gQEAg LTIwMjAsNyArMjAxOCw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19sdmRzX3ByZXNlbnQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikKPiAgICovCj4gIGJvb2wg aW50ZWxfYmlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBvcnQgcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9j b25maWcgKmNoaWxkOwo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZp ZzsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJc3RhdGljIGNvbnN0 IHN0cnVjdCB7Cj4gIAkJdTE2IGRwLCBoZG1pOwo+ICAJfSBwb3J0X21hcHBpbmdbXSA9IHsKPiBA QCAtMjAzMCw3ICsyMDI5LDYgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPiAgCQlbUE9SVF9F XSA9IHsgRFZPX1BPUlRfRFBFLCBEVk9fUE9SVF9IRE1JRSwgfSwKPiAgCQlbUE9SVF9GXSA9IHsg RFZPX1BPUlRfRFBGLCBEVk9fUE9SVF9IRE1JRiwgfSwKPiAgCX07Cj4gLQlpbnQgaTsKPiAgCj4g IAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZGRpX3ZidF9wb3J0 X2luZm8gKnBvcnRfaW5mbyA9Cj4gQEAgLTIwNDUsMTYgKzIwNDMsMTMgQEAgYm9vbCBpbnRlbF9i aW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcG9ydCBwb3IKPiAgCWlmIChXQVJOX09OKHBvcnQgPT0gUE9SVF9BKSB8fCBwb3J0ID49IEFS UkFZX1NJWkUocG9ydF9tYXBwaW5nKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JaWYgKCFk ZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0pCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCWZv ciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+IC0JCWNo aWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+ICsJCWNvbmZp ZyA9ICZjaGlsZC0+Y29uZmlnOwo+ICAKPiAtCQlpZiAoKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0 X21hcHBpbmdbcG9ydF0uZHAgfHwKPiAtCQkgICAgIGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21h cHBpbmdbcG9ydF0uaGRtaSkgJiYKPiAtCQkgICAgKGNoaWxkLT5kZXZpY2VfdHlwZSAmIChERVZJ Q0VfVFlQRV9UTURTX0RWSV9TSUdOQUxJTkcgfAo+IC0JCQkJCSAgIERFVklDRV9UWVBFX0RJU1BM QVlQT1JUX09VVFBVVCkpKQo+ICsJCWlmICgoY29uZmlnLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBp bmdbcG9ydF0uZHAgfHwKPiArCQkgICAgIGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5n W3BvcnRdLmhkbWkpICYmCj4gKwkJICAgIChjb25maWctPmRldmljZV90eXBlICYgKERFVklDRV9U WVBFX1RNRFNfRFZJX1NJR05BTElORyB8Cj4gKwkJCQkJICAgIERFVklDRV9UWVBFX0RJU1BMQVlQ T1JUX09VVFBVVCkpKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiAgCX0KPiAgCj4gQEAgLTIwNzAsNyAr MjA2NSw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9yCj4gICAqLwo+ICBib29sIGludGVsX2Jp b3NfaXNfcG9ydF9lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBv cnQgcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiArCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJc3RhdGljIGNvbnN0IHNob3J0IHBvcnRf bWFwcGluZ1tdID0gewo+ICAJCVtQT1JUX0JdID0gRFZPX1BPUlRfRFBCLAo+ICAJCVtQT1JUX0Nd ID0gRFZPX1BPUlRfRFBDLAo+IEBAIC0yMDc4LDE5ICsyMDc0LDE1IEBAIGJvb2wgaW50ZWxfYmlv c19pc19wb3J0X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9y dCBwb3J0KQo+ICAJCVtQT1JUX0VdID0gRFZPX1BPUlRfRFBFLAo+ICAJCVtQT1JUX0ZdID0gRFZP X1BPUlRfRFBGLAo+ICAJfTsKPiAtCWludCBpOwo+ICAKPiAgCWlmIChIQVNfRERJKGRldl9wcml2 KSkKPiAgCQlyZXR1cm4gZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRz X2VkcDsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSkKPiAtCQlyZXR1 cm4gZmFsc2U7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJY29uZmlnID0gJmNoaWxkLT5jb25maWc7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7Cj4g LQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4gLQo+IC0JCWlmIChjaGls ZC0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRdICYmCj4gLQkJICAgIChjaGlsZC0+ZGV2 aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklUUykgPT0KPiArCQlpZiAoY29uZmlnLT5kdm9f cG9ydCA9PSBwb3J0X21hcHBpbmdbcG9ydF0gJiYKPiArCQkgICAgKGNvbmZpZy0+ZGV2aWNlX3R5 cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklUUykgPT0KPiAgCQkgICAgKERFVklDRV9UWVBFX2VEUCAm IERFVklDRV9UWVBFX2VEUF9CSVRTKSkKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAl9Cj4gQEAgLTIx MzYsMTMgKzIxMjgsMTAgQEAgc3RhdGljIGJvb2wgY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShj b25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQsCj4gIGJvb2wgaW50ZWxfYmlv c19pc19wb3J0X2RwX2R1YWxfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAkJCQkgICAgIGVudW0gcG9ydCBwb3J0KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRf ZGV2aWNlX2NvbmZpZyAqY2hpbGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9k ZXZpY2UgKmNoaWxkOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxk X2Rldl9udW07IGkrKykgewo+IC0JCWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBp Owo+IC0KPiAtCQlpZiAoY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShjaGlsZCwgcG9ydCkpCj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2Vz LCBub2RlKSB7Cj4gKwkJaWYgKGNoaWxkX2Rldl9pc19kcF9kdWFsX21vZGUoJmNoaWxkLT5jb25m aWcsIHBvcnQpKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiAgCX0KPiAgCj4gQEAgLTIxNTksMTcgKzIx NDgsMTcgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfZHBfZHVhbF9tb2RlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgYm9vbCBpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgIGVudW0gcG9y dCAqcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiArCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJdTggZHZvX3BvcnQ7Cj4gLQlpbnQgaTsK PiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKysp IHsKPiAtCQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoY2hpbGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpIHsK PiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPiAgCj4gLQkJaWYgKCEoY2hpbGQtPmRldmlj ZV90eXBlICYgREVWSUNFX1RZUEVfTUlQSV9PVVRQVVQpKQo+ICsJCWlmICghKGNvbmZpZy0+ZGV2 aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAtCQlkdm9fcG9ydCA9IGNoaWxkLT5kdm9fcG9ydDsKPiArCQlkdm9fcG9ydCA9IGNvbmZpZy0+ ZHZvX3BvcnQ7Cj4gIAo+ICAJCWlmIChkdm9fcG9ydCA9PSBEVk9fUE9SVF9NSVBJQSB8fAo+ICAJ CSAgICAoZHZvX3BvcnQgPT0gRFZPX1BPUlRfTUlQSUIgJiYgSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMSkgfHwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBmNjdiYWJlMjAuLmFl ODVmZmEwODY2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC03MjQsOCArNzI0 LDcgQEAgc3RydWN0IGludGVsX3ZidF9kYXRhIHsKPiAgCj4gIAlpbnQgY3J0X2RkY19waW47Cj4g IAo+IC0JaW50IGNoaWxkX2Rldl9udW07Cj4gLQlzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAq Y2hpbGRfZGV2Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBjaGlsZF9kZXZpY2VzOwo+ICAKPiAgCXN0 cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyBkZGlfcG9ydF9pbmZvW0k5MTVfTUFYX1BPUlRTXTsKPiAg CXN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5nIHNkdm9fbWFwcGluZ3NbMl07Cj4gLS0gCj4gMi4y MC4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12106C5DF63 for ; Wed, 6 Nov 2019 20:37:59 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DB1E5214D8 for ; Wed, 6 Nov 2019 20:37:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB1E5214D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8AB146EC56; Wed, 6 Nov 2019 20:37:58 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CDBAD6EC56 for ; Wed, 6 Nov 2019 20:37:56 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 12:37:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,275,1569308400"; d="scan'208";a="214370706" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga002.jf.intel.com with SMTP; 06 Nov 2019 12:37:53 -0800 Received: by stinkbox (sSMTP sendmail emulation); Wed, 06 Nov 2019 22:37:52 +0200 Date: Wed, 6 Nov 2019 22:37:52 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Jani Nikula Message-ID: <20191106203752.GX1208@intel.com> References: <20191106164531.7079-1-jani.nikula@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191106164531.7079-1-jani.nikula@intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH] drm/i915/bios: store child devices in a list X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191106203752.8vQqx8yVr7S1aJJlOB4fBKsAyhyd3N5E0rwXpJmMYaw@z> T24gV2VkLCBOb3YgMDYsIDIwMTkgYXQgMDY6NDU6MzFQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gVXNpbmcgdGhlIGFycmF5IGlzIGdldHRpbmcgY2x1bXN5LiBNYWtlIHRoaW5ncyBhIGJp dCBtb3JlIGR5bmFtaWMuCj4gCj4gSW4gY29kZSwgc3RhcnQgbWlncmF0aW5nIHRvd2FyZHMgY2Fs bGluZyB0aGUgbmV3IHN0cnVjdCBjaGlsZF9kZXZpY2UKPiAiY2hpbGQiIGFuZCB0aGUgVkJULW9y aWdpbmF0aW5nIHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICJjb25maWciLgo+IAo+IFJlbW92 ZSBlYXJseSByZXR1cm5zIG9uIG5vdCBoYXZpbmcgY2hpbGQgZGV2aWNlcyB3aGVuIHRoZSBlbmQg cmVzdWx0Cj4gYWZ0ZXIgIml0ZXJhdGluZyIgdGhlIGVtcHR5IGxpc3Qgd291bGQgYmUgdGhlIHNh bWUuCj4gCj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4g Cj4gLS0tCj4gCj4gVGhlIGVuZCBnb2FsOiBhbGxvdyBtb3JlIG1ldGEgaW5mb3JtYXRpb24gdG8g YmUgYWRkZWQgdG8gdGhlIG5ldwo+IGNoaWxkX2RldmljZSBzdHJ1Y3QsIGluZGVwZW5kZW50IG9m IERESSBwb3J0IGluZm8gYmVpbmcgdXNlZCBvciBub3Qgb24KPiB0aGUgcGxhdGZvcm0sIGFuZCBl dmVudHVhbGx5IG1pZ3JhdGUgZGRpX3BvcnRfaW5mbyB0byBpdCBhcyB3ZWxsLAo+IHVuaWZ5aW5n IHRoZSBzdHVmZiBhY3Jvc3MgcGxhdGZvcm1zLgo+IAo+IEN1cnJlbnRseSBpdCdzIG5vdCBlYXNp bHkgcG9zc2libGUgdG8gYXNzb2NpYXRlIGZvciBleGFtcGxlIHRoZSBEU0MKPiBjb21wcmVzc2lv biBkYXRhIHRvIHRoZSBjaGlsZCBkZXZpY2UgZm9yIG5vbi1EREkgcGxhdGZvcm1zIG9yIGZvciBE U0kKPiBvdXRwdXRzLiBUaGlzIGxldHMgdXMgYWRkIHRoZSBjb21wcmVzc2lvbiBkYXRhIChwb2lu dGVyKSB0byBzdHJ1Y3QKPiBjaGlsZF9kZXZpY2UuCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jIHwgMjAzICsrKysrKysrKystLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgfCAgIDMgKy0KPiAgMiBm aWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9zLmMKPiBpbmRleCBhMDNmNTZiN2I0 ZWYuLjAyNTA3NDg2MmFiMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Jpb3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYmlvcy5jCj4gQEAgLTU4LDYgKzU4LDEyIEBACj4gICAqIHRoYXQuCj4gICAqLwo+ICAKPiAr LyogV3JhcHBlciBmb3IgVkJUIGNoaWxkIGRldmljZSBjb25maWcgKi8KPiArc3RydWN0IGNoaWxk X2RldmljZSB7Cj4gKwlzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyBjb25maWc7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG5vZGU7CgpUaGUgd3JhcHBlciBpcyBhIGJpdCB1bmZvcnR1bmF0ZS4gSSBk b24ndCBzdXBwb3NlIHdlIGNvdWxkIGp1c3Qgc2hvdmUKdGhlIGxpc3QgaGVhZCBpbnRvIHRoZSBl eGlzdGluZyBzdHJ1Y3QgYW5kIGFkanVzdCB3aGF0IG5lZWRzIGFkanVzdGluZz8KCj4gK307Cj4g Kwo+ICAjZGVmaW5lCVNMQVZFX0FERFIxCTB4NzAKPiAgI2RlZmluZQlTTEFWRV9BRERSMgkweDcy Cj4gIAo+IEBAIC00NDksOCArNDU1LDkgQEAgc3RhdGljIHZvaWQKPiAgcGFyc2Vfc2R2b19kZXZp Y2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJz aW9uKQo+ICB7Cj4gIAlzdHJ1Y3Qgc2R2b19kZXZpY2VfbWFwcGluZyAqbWFwcGluZzsKPiAtCWNv bnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPiAtCWludCBpLCBjb3VudCA9 IDA7Cj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY29uZmlnOwoKVGhpcyB0 aGluZyBjb3VsZCBhdCBsZWFzdCBjYW4gbGl2ZSBpbnNpZGUgdGhlIGxvb3AuIFRob3VnaCB0aGUg cmVuYW1lIGlzCmFsc28gYSBiaXQgdW5mb3J0dW5hdGUsIGxlYWRpbmcgdG8gYSBuZWVkbGVzc2x5 IGxhcmdlIGRpZmYuIEF2b2lkaW5nIHRoZQp3cmFwcGVyIHN0cnVjdCB3b3VsZCBhbHNvIGF2b2lk IHRoYXQuIEkgZ3Vlc3MgYW5vdGhlciBvcHRpb24gd291bGQKYmUgdG8gc2VsZWN0IGEgZGlmZmVy ZW50IG5hbWUgZm9yIHRoZSB3cmFwcGVyIHBvaW50ZXIgaGVyZSBhbmQga2VlcCB0aGUKb3JpZ2lu YWwgbmFtZSBmb3IgdGhlIGFjdHVhbCB0aGluZy4KCj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2 aWNlICpjaGlsZDsKPiArCWludCBjb3VudCA9IDA7Cj4gIAo+ICAJLyoKPiAgCSAqIE9ubHkgcGFy c2UgU0RWTyBtYXBwaW5ncyBvbiBnZW5zIHRoYXQgY291bGQgaGF2ZSBTRFZPLiBUaGlzIGlzbid0 Cj4gQEAgLTQ2MSwzNSArNDY4LDM1IEBAIHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBiZGJfdmVyc2lvbikKPiAgCQlyZXR1cm47 Cj4gIAl9Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZfbnVtOyBpKyspIHsKPiAtCQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2 ICsgaTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxk X2RldmljZXMsIG5vZGUpIHsKPiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPiAgCj4gLQkJ aWYgKGNoaWxkLT5zbGF2ZV9hZGRyICE9IFNMQVZFX0FERFIxICYmCj4gLQkJICAgIGNoaWxkLT5z bGF2ZV9hZGRyICE9IFNMQVZFX0FERFIyKSB7Cj4gKwkJaWYgKGNvbmZpZy0+c2xhdmVfYWRkciAh PSBTTEFWRV9BRERSMSAmJgo+ICsJCSAgICBjb25maWctPnNsYXZlX2FkZHIgIT0gU0xBVkVfQURE UjIpIHsKPiAgCQkJLyoKPiAgCQkJICogSWYgdGhlIHNsYXZlIGFkZHJlc3MgaXMgbmVpdGhlciAw eDcwIG5vciAweDcyLAo+ICAJCQkgKiBpdCBpcyBub3QgYSBTRFZPIGRldmljZS4gU2tpcCBpdC4K PiAgCQkJICovCj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAtCQlpZiAoY2hpbGQtPmR2b19wb3J0 ICE9IERFVklDRV9QT1JUX0RWT0IgJiYKPiAtCQkgICAgY2hpbGQtPmR2b19wb3J0ICE9IERFVklD RV9QT1JUX0RWT0MpIHsKPiArCQlpZiAoY29uZmlnLT5kdm9fcG9ydCAhPSBERVZJQ0VfUE9SVF9E Vk9CICYmCj4gKwkJICAgIGNvbmZpZy0+ZHZvX3BvcnQgIT0gREVWSUNFX1BPUlRfRFZPQykgewo+ ICAJCQkvKiBza2lwIHRoZSBpbmNvcnJlY3QgU0RWTyBwb3J0ICovCj4gIAkJCURSTV9ERUJVR19L TVMoIkluY29ycmVjdCBTRFZPIHBvcnQuIFNraXAgaXRcbiIpOwo+ICAJCQljb250aW51ZTsKPiAg CQl9Cj4gIAkJRFJNX0RFQlVHX0tNUygidGhlIFNEVk8gZGV2aWNlIHdpdGggc2xhdmUgYWRkciAl MnggaXMgZm91bmQgb24iCj4gIAkJCSAgICAgICIgJXMgcG9ydFxuIiwKPiAtCQkJICAgICAgY2hp bGQtPnNsYXZlX2FkZHIsCj4gLQkJCSAgICAgIChjaGlsZC0+ZHZvX3BvcnQgPT0gREVWSUNFX1BP UlRfRFZPQikgPwo+ICsJCQkgICAgICBjb25maWctPnNsYXZlX2FkZHIsCj4gKwkJCSAgICAgIChj b25maWctPmR2b19wb3J0ID09IERFVklDRV9QT1JUX0RWT0IpID8KPiAgCQkJICAgICAgIlNEVk9C IiA6ICJTRFZPQyIpOwo+IC0JCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZvX21hcHBpbmdz W2NoaWxkLT5kdm9fcG9ydCAtIDFdOwo+ICsJCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZv X21hcHBpbmdzW2NvbmZpZy0+ZHZvX3BvcnQgLSAxXTsKPiAgCQlpZiAoIW1hcHBpbmctPmluaXRp YWxpemVkKSB7Cj4gLQkJCW1hcHBpbmctPmR2b19wb3J0ID0gY2hpbGQtPmR2b19wb3J0Owo+IC0J CQltYXBwaW5nLT5zbGF2ZV9hZGRyID0gY2hpbGQtPnNsYXZlX2FkZHI7Cj4gLQkJCW1hcHBpbmct PmR2b193aXJpbmcgPSBjaGlsZC0+ZHZvX3dpcmluZzsKPiAtCQkJbWFwcGluZy0+ZGRjX3BpbiA9 IGNoaWxkLT5kZGNfcGluOwo+IC0JCQltYXBwaW5nLT5pMmNfcGluID0gY2hpbGQtPmkyY19waW47 Cj4gKwkJCW1hcHBpbmctPmR2b19wb3J0ID0gY29uZmlnLT5kdm9fcG9ydDsKPiArCQkJbWFwcGlu Zy0+c2xhdmVfYWRkciA9IGNvbmZpZy0+c2xhdmVfYWRkcjsKPiArCQkJbWFwcGluZy0+ZHZvX3dp cmluZyA9IGNvbmZpZy0+ZHZvX3dpcmluZzsKPiArCQkJbWFwcGluZy0+ZGRjX3BpbiA9IGNvbmZp Zy0+ZGRjX3BpbjsKPiArCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNvbmZpZy0+aTJjX3BpbjsKPiAg CQkJbWFwcGluZy0+aW5pdGlhbGl6ZWQgPSAxOwo+ICAJCQlEUk1fREVCVUdfS01TKCJTRFZPIGRl dmljZTogZHZvPSV4LCBhZGRyPSV4LCB3aXJpbmc9JWQsIGRkY19waW49JWQsIGkyY19waW49JWRc biIsCj4gIAkJCQkgICAgICBtYXBwaW5nLT5kdm9fcG9ydCwKPiBAQCAtNTAxLDcgKzUwOCw3IEBA IHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1OCBiZGJfdmVyc2lvbikKPiAgCQkJRFJNX0RFQlVHX0tNUygiTWF5YmUgb25lIFNEVk8g cG9ydCBpcyBzaGFyZWQgYnkgIgo+ICAJCQkJCSAidHdvIFNEVk8gZGV2aWNlLlxuIik7Cj4gIAkJ fQo+IC0JCWlmIChjaGlsZC0+c2xhdmUyX2FkZHIpIHsKPiArCQlpZiAoY29uZmlnLT5zbGF2ZTJf YWRkcikgewo+ICAJCQkvKiBNYXliZSB0aGlzIGlzIGEgU0RWTyBkZXZpY2Ugd2l0aCBtdWx0aXBs ZSBpbnB1dHMgKi8KPiAgCQkJLyogQW5kIHRoZSBtYXBwaW5nIGluZm8gaXMgbm90IGFkZGVkICov Cj4gIAkJCURSTV9ERUJVR19LTVMoInRoZXJlIGV4aXN0cyB0aGUgc2xhdmUyX2FkZHIuIE1heWJl IHRoaXMiCj4gQEAgLTE1NzEsOCArMTU3OCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB2b2lkIHBh cnNlX2RkaV9wb3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92 ZXJzaW9uKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQ7 Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAKPiAg CWlmICghSEFTX0RESShkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJ CXJldHVybjsKPiBAQCAtMTU4MCwxMSArMTU4Niw4IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9w b3J0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJzaW9uKQo+ ICAJaWYgKGJkYl92ZXJzaW9uIDwgMTU1KQo+ICAJCXJldHVybjsKPiAgCj4gLQlmb3IgKGkgPSAw OyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPiAtCQljaGlsZCA9IGRl dl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPiAtCj4gLQkJcGFyc2VfZGRpX3BvcnQoZGV2X3By aXYsIGNoaWxkLCBiZGJfdmVyc2lvbik7Cj4gLQl9Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNo aWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKQo+ICsJCXBhcnNlX2RkaV9w b3J0KGRldl9wcml2LCAmY2hpbGQtPmNvbmZpZywgYmRiX3ZlcnNpb24pOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZAo+IEBAIC0xNTkyLDggKzE1OTUsOSBAQCBwYXJzZV9nZW5lcmFsX2RlZmluaXRp b25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBjb25zdCBzdHJ1 Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVm aW5pdGlvbnMgKmRlZnM7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hp bGQ7Cj4gLQlpbnQgaSwgY2hpbGRfZGV2aWNlX251bSwgY291bnQ7Cj4gKwljb25zdCBzdHJ1Y3Qg Y2hpbGRfZGV2aWNlX2NvbmZpZyAqY29uZmlnOwo+ICsJc3RydWN0IGNoaWxkX2RldmljZSAqY2hp bGQ7Cj4gKwlpbnQgaSwgY2hpbGRfZGV2aWNlX251bTsKPiAgCXU4IGV4cGVjdGVkX3NpemU7Cj4g IAl1MTYgYmxvY2tfc2l6ZTsKPiAgCWludCBidXNfcGluOwo+IEBAIC0xNjI5LDggKzE2MzMsOCBA QCBwYXJzZV9nZW5lcmFsX2RlZmluaXRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCX0gZWxzZSBpZiAoYmRiLT52ZXJzaW9uIDw9IDIyOSkgewo+ICAJCWV4cGVjdGVk X3NpemUgPSAzOTsKPiAgCX0gZWxzZSB7Cj4gLQkJZXhwZWN0ZWRfc2l6ZSA9IHNpemVvZigqY2hp bGQpOwo+IC0JCUJVSUxEX0JVR19PTihzaXplb2YoKmNoaWxkKSA8IDM5KTsKPiArCQlleHBlY3Rl ZF9zaXplID0gc2l6ZW9mKCpjb25maWcpOwo+ICsJCUJVSUxEX0JVR19PTihzaXplb2YoKmNvbmZp ZykgPCAzOSk7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiRXhwZWN0ZWQgY2hpbGQgZGV2aWNlIGNv bmZpZyBzaXplIGZvciBWQlQgdmVyc2lvbiAldSBub3Qga25vd247IGFzc3VtaW5nICV1XG4iLAo+ ICAJCQkJIGJkYi0+dmVyc2lvbiwgZXhwZWN0ZWRfc2l6ZSk7Cj4gIAl9Cj4gQEAgLTE2NDksNDMg KzE2NTMsMzAgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJLyogZ2V0IHRoZSBudW1iZXIgb2YgY2hpbGQgZGV2aWNl ICovCj4gIAljaGlsZF9kZXZpY2VfbnVtID0gKGJsb2NrX3NpemUgLSBzaXplb2YoKmRlZnMpKSAv IGRlZnMtPmNoaWxkX2Rldl9zaXplOwo+IC0JY291bnQgPSAwOwo+IC0JLyogZ2V0IHRoZSBudW1i ZXIgb2YgY2hpbGQgZGV2aWNlIHRoYXQgaXMgcHJlc2VudCAqLwo+IC0JZm9yIChpID0gMDsgaSA8 IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+IC0JCWNoaWxkID0gY2hpbGRfZGV2aWNlX3B0cihk ZWZzLCBpKTsKPiAtCQlpZiAoIWNoaWxkLT5kZXZpY2VfdHlwZSkKPiAtCQkJY29udGludWU7Cj4g LQkJY291bnQrKzsKPiAtCX0KPiAtCWlmICghY291bnQpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJu byBjaGlsZCBkZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4g LQlkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiA9IGtjYWxsb2MoY291bnQsIHNpemVvZigqY2hpbGQp LCBHRlBfS0VSTkVMKTsKPiAtCWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYpIHsKPiAtCQlE Uk1fREVCVUdfS01TKCJObyBtZW1vcnkgc3BhY2UgZm9yIGNoaWxkIGRldmljZVxuIik7Cj4gLQkJ cmV0dXJuOwo+IC0JfQo+ICAKPiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSA9IGNvdW50 Owo+IC0JY291bnQgPSAwOwo+ICAJZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkr Kykgewo+IC0JCWNoaWxkID0gY2hpbGRfZGV2aWNlX3B0cihkZWZzLCBpKTsKPiAtCQlpZiAoIWNo aWxkLT5kZXZpY2VfdHlwZSkKPiArCQljb25maWcgPSBjaGlsZF9kZXZpY2VfcHRyKGRlZnMsIGkp Owo+ICsJCWlmICghY29uZmlnLT5kZXZpY2VfdHlwZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJ CURSTV9ERUJVR19LTVMoIkZvdW5kIFZCVCBjaGlsZCBkZXZpY2Ugd2l0aCB0eXBlIDB4JXhcbiIs Cj4gLQkJCSAgICAgIGNoaWxkLT5kZXZpY2VfdHlwZSk7Cj4gKwkJCSAgICAgIGNvbmZpZy0+ZGV2 aWNlX3R5cGUpOwo+ICsKPiArCQljaGlsZCA9IGttYWxsb2Moc2l6ZW9mKCpjaGlsZCksIEdGUF9L RVJORUwpOwo+ICAKPiAgCQkvKgo+ICAJCSAqIENvcHkgYXMgbXVjaCBhcyB3ZSBrbm93IChzaXpl b2YpIGFuZCBpcyBhdmFpbGFibGUKPiAtCQkgKiAoY2hpbGRfZGV2X3NpemUpIG9mIHRoZSBjaGls ZCBkZXZpY2UuIEFjY2Vzc2luZyB0aGUgZGF0YSBtdXN0Cj4gLQkJICogZGVwZW5kIG9uIFZCVCB2 ZXJzaW9uLgo+ICsJCSAqIChjaGlsZF9kZXZfc2l6ZSkgb2YgdGhlIGNoaWxkIGRldmljZSBjb25m aWcuIEFjY2Vzc2luZyB0aGUKPiArCQkgKiBkYXRhIG11c3QgZGVwZW5kIG9uIFZCVCB2ZXJzaW9u Lgo+ICAJCSAqLwo+IC0JCW1lbWNweShkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGNvdW50LCBj aGlsZCwKPiAtCQkgICAgICAgbWluX3Qoc2l6ZV90LCBkZWZzLT5jaGlsZF9kZXZfc2l6ZSwgc2l6 ZW9mKCpjaGlsZCkpKTsKPiAtCQljb3VudCsrOwo+ICsJCW1lbWNweSgmY2hpbGQtPmNvbmZpZywg Y29uZmlnLAo+ICsJCSAgICAgICBtaW5fdChzaXplX3QsIGRlZnMtPmNoaWxkX2Rldl9zaXplLCBz aXplb2YoKmNvbmZpZykpKTsKPiArCj4gKwkJbGlzdF9hZGQoJmNoaWxkLT5ub2RlLCAmZGV2X3By aXYtPnZidC5jaGlsZF9kZXZpY2VzKTsKPiAgCX0KPiArCj4gKwlpZiAobGlzdF9lbXB0eSgmZGV2 X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzKSkKPiArCQlEUk1fREVCVUdfS01TKCJubyBjaGlsZCBk ZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPiAgfQo+ICAKPiAgLyogQ29tbW9uIGRlZmF1bHRz IHdoaWNoIG1heSBiZSBvdmVycmlkZGVuIGJ5IFZCVC4gKi8KPiBAQCAtMTg0OSw2ICsxODQwLDgg QEAgdm9pZCBpbnRlbF9iaW9zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnZi dC5jaGlsZF9kZXZpY2VzKTsKPiArCj4gIAlpbml0X3ZidF9kZWZhdWx0cyhkZXZfcHJpdik7Cj4g IAo+ICAJLyogSWYgdGhlIE9wUmVnaW9uIGRvZXMgbm90IGhhdmUgVkJULCBsb29rIGluIFBDSSBS T00uICovCj4gQEAgLTE5MDMsOSArMTg5NiwxMyBAQCB2b2lkIGludGVsX2Jpb3NfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqLwo+ICB2b2lkIGludGVsX2Jpb3Nf ZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAt CWtmcmVlKGRldl9wcml2LT52YnQuY2hpbGRfZGV2KTsKPiAtCWRldl9wcml2LT52YnQuY2hpbGRf ZGV2ID0gTlVMTDsKPiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSA9IDA7Cj4gKwlzdHJ1 Y3QgY2hpbGRfZGV2aWNlICpjaGlsZCwgKm47Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGNoaWxkLCBuLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJ bGlzdF9kZWwoJmNoaWxkLT5ub2RlKTsKPiArCQlrZnJlZShjaGlsZCk7Cj4gKwl9Cj4gKwo+ICAJ a2ZyZWUoZGV2X3ByaXYtPnZidC5zZHZvX2x2ZHNfdmJ0X21vZGUpOwo+ICAJZGV2X3ByaXYtPnZi dC5zZHZvX2x2ZHNfdmJ0X21vZGUgPSBOVUxMOwo+ICAJa2ZyZWUoZGV2X3ByaXYtPnZidC5sZnBf bHZkc192YnRfbW9kZSk7Cj4gQEAgLTE5MjksMjEgKzE5MjYsMjIgQEAgdm9pZCBpbnRlbF9iaW9z X2RyaXZlcl9yZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKi8K PiAgYm9vbCBpbnRlbF9iaW9zX2lzX3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hp bGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25m aWc7Cj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPiAgCj4gIAlpZiAoIWRl dl9wcml2LT52YnQuaW50X3R2X3N1cHBvcnQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlm ICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtKQo+ICsJaWYgKGxpc3RfZW1wdHkoJmRldl9w cml2LT52YnQuY2hpbGRfZGV2aWNlcykpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0JZm9yIChp ID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7Cj4gLQkJY2hpbGQg PSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNo aWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJY29uZmlnID0g JmNoaWxkLT5jb25maWc7Cj4gKwo+ICAJCS8qCj4gIAkJICogSWYgdGhlIGRldmljZSB0eXBlIGlz IG5vdCBUViwgY29udGludWUuCj4gIAkJICovCj4gLQkJc3dpdGNoIChjaGlsZC0+ZGV2aWNlX3R5 cGUpIHsKPiArCQlzd2l0Y2ggKGNvbmZpZy0+ZGV2aWNlX3R5cGUpIHsKPiAgCQljYXNlIERFVklD RV9UWVBFX0lOVF9UVjoKPiAgCQljYXNlIERFVklDRV9UWVBFX1RWOgo+ICAJCWNhc2UgREVWSUNF X1RZUEVfVFZfU1ZJREVPX0NPTVBPU0lURToKPiBAQCAtMTk1NCw3ICsxOTUyLDcgQEAgYm9vbCBp bnRlbF9iaW9zX2lzX3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCS8qIE9ubHkgd2hlbiB0aGUgYWRkaW5fb2Zmc2V0IGlzIG5vbi16ZXJvLCBpdCBpcyBy ZWdhcmRlZAo+ICAJCSAqIGFzIHByZXNlbnQuCj4gIAkJICovCj4gLQkJaWYgKGNoaWxkLT5hZGRp bl9vZmZzZXQpCj4gKwkJaWYgKGNvbmZpZy0+YWRkaW5fb2Zmc2V0KQo+ICAJCQlyZXR1cm4gdHJ1 ZTsKPiAgCX0KPiAgCj4gQEAgLTE5NzEsMzIgKzE5NjksMzIgQEAgYm9vbCBpbnRlbF9iaW9zX2lz X3R2X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKi8KPiAg Ym9vbCBpbnRlbF9iaW9zX2lzX2x2ZHNfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHU4ICppMmNfcGluKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNl X2NvbmZpZyAqY2hpbGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2Ug KmNoaWxkOwo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiAg Cj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSkKPiArCWlmIChsaXN0X2VtcHR5 KCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAt CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+IC0J CWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+ICsJCWNv bmZpZyA9ICZjaGlsZC0+Y29uZmlnOwo+ICAKPiAgCQkvKiBJZiB0aGUgZGV2aWNlIHR5cGUgaXMg bm90IExGUCwgY29udGludWUuCj4gIAkJICogV2UgaGF2ZSB0byBjaGVjayBib3RoIHRoZSBuZXcg aWRlbnRpZmllcnMgYXMgd2VsbCBhcyB0aGUKPiAgCQkgKiBvbGQgZm9yIGNvbXBhdGliaWxpdHkg d2l0aCBzb21lIEJJT1Nlcy4KPiAgCQkgKi8KPiAtCQlpZiAoY2hpbGQtPmRldmljZV90eXBlICE9 IERFVklDRV9UWVBFX0lOVF9MRlAgJiYKPiAtCQkgICAgY2hpbGQtPmRldmljZV90eXBlICE9IERF VklDRV9UWVBFX0xGUCkKPiArCQlpZiAoY29uZmlnLT5kZXZpY2VfdHlwZSAhPSBERVZJQ0VfVFlQ RV9JTlRfTEZQICYmCj4gKwkJICAgIGNvbmZpZy0+ZGV2aWNlX3R5cGUgIT0gREVWSUNFX1RZUEVf TEZQKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3Bp bihkZXZfcHJpdiwgY2hpbGQtPmkyY19waW4pKQo+IC0JCQkqaTJjX3BpbiA9IGNoaWxkLT5pMmNf cGluOwo+ICsJCWlmIChpbnRlbF9nbWJ1c19pc192YWxpZF9waW4oZGV2X3ByaXYsIGNvbmZpZy0+ aTJjX3BpbikpCj4gKwkJCSppMmNfcGluID0gY29uZmlnLT5pMmNfcGluOwo+ICAKPiAgCQkvKiBI b3dldmVyLCB3ZSBjYW5ub3QgdHJ1c3QgdGhlIEJJT1Mgd3JpdGVycyB0byBwb3B1bGF0ZQo+ICAJ CSAqIHRoZSBWQlQgY29ycmVjdGx5LiAgU2luY2UgTFZEUyByZXF1aXJlcyBhZGRpdGlvbmFsCj4g IAkJICogaW5mb3JtYXRpb24gZnJvbSBBSU0gYmxvY2tzLCBhIG5vbi16ZXJvIGFkZGluIG9mZnNl dCBpcwo+ICAJCSAqIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCB0aGUgTFZEUyBpcyBhY3R1YWxseSBw cmVzZW50Lgo+ICAJCSAqLwo+IC0JCWlmIChjaGlsZC0+YWRkaW5fb2Zmc2V0KQo+ICsJCWlmIChj b25maWctPmFkZGluX29mZnNldCkKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJCS8qIEJ1dCBl dmVuIHRoZW4gc29tZSBCSU9TIHdyaXRlcnMgcGVyZm9ybSBzb21lIGJsYWNrIG1hZ2ljCj4gQEAg LTIwMjAsNyArMjAxOCw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19sdmRzX3ByZXNlbnQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikKPiAgICovCj4gIGJvb2wg aW50ZWxfYmlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBvcnQgcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9j b25maWcgKmNoaWxkOwo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZp ZzsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJc3RhdGljIGNvbnN0 IHN0cnVjdCB7Cj4gIAkJdTE2IGRwLCBoZG1pOwo+ICAJfSBwb3J0X21hcHBpbmdbXSA9IHsKPiBA QCAtMjAzMCw3ICsyMDI5LDYgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPiAgCQlbUE9SVF9F XSA9IHsgRFZPX1BPUlRfRFBFLCBEVk9fUE9SVF9IRE1JRSwgfSwKPiAgCQlbUE9SVF9GXSA9IHsg RFZPX1BPUlRfRFBGLCBEVk9fUE9SVF9IRE1JRiwgfSwKPiAgCX07Cj4gLQlpbnQgaTsKPiAgCj4g IAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZGRpX3ZidF9wb3J0 X2luZm8gKnBvcnRfaW5mbyA9Cj4gQEAgLTIwNDUsMTYgKzIwNDMsMTMgQEAgYm9vbCBpbnRlbF9i aW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcG9ydCBwb3IKPiAgCWlmIChXQVJOX09OKHBvcnQgPT0gUE9SVF9BKSB8fCBwb3J0ID49IEFS UkFZX1NJWkUocG9ydF9tYXBwaW5nKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JaWYgKCFk ZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0pCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCWZv ciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+IC0JCWNo aWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+ICsJCWNvbmZp ZyA9ICZjaGlsZC0+Y29uZmlnOwo+ICAKPiAtCQlpZiAoKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0 X21hcHBpbmdbcG9ydF0uZHAgfHwKPiAtCQkgICAgIGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21h cHBpbmdbcG9ydF0uaGRtaSkgJiYKPiAtCQkgICAgKGNoaWxkLT5kZXZpY2VfdHlwZSAmIChERVZJ Q0VfVFlQRV9UTURTX0RWSV9TSUdOQUxJTkcgfAo+IC0JCQkJCSAgIERFVklDRV9UWVBFX0RJU1BM QVlQT1JUX09VVFBVVCkpKQo+ICsJCWlmICgoY29uZmlnLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBp bmdbcG9ydF0uZHAgfHwKPiArCQkgICAgIGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5n W3BvcnRdLmhkbWkpICYmCj4gKwkJICAgIChjb25maWctPmRldmljZV90eXBlICYgKERFVklDRV9U WVBFX1RNRFNfRFZJX1NJR05BTElORyB8Cj4gKwkJCQkJICAgIERFVklDRV9UWVBFX0RJU1BMQVlQ T1JUX09VVFBVVCkpKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiAgCX0KPiAgCj4gQEAgLTIwNzAsNyAr MjA2NSw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9yCj4gICAqLwo+ICBib29sIGludGVsX2Jp b3NfaXNfcG9ydF9lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBv cnQgcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiArCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJc3RhdGljIGNvbnN0IHNob3J0IHBvcnRf bWFwcGluZ1tdID0gewo+ICAJCVtQT1JUX0JdID0gRFZPX1BPUlRfRFBCLAo+ICAJCVtQT1JUX0Nd ID0gRFZPX1BPUlRfRFBDLAo+IEBAIC0yMDc4LDE5ICsyMDc0LDE1IEBAIGJvb2wgaW50ZWxfYmlv c19pc19wb3J0X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9y dCBwb3J0KQo+ICAJCVtQT1JUX0VdID0gRFZPX1BPUlRfRFBFLAo+ICAJCVtQT1JUX0ZdID0gRFZP X1BPUlRfRFBGLAo+ICAJfTsKPiAtCWludCBpOwo+ICAKPiAgCWlmIChIQVNfRERJKGRldl9wcml2 KSkKPiAgCQlyZXR1cm4gZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRz X2VkcDsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bSkKPiAtCQlyZXR1 cm4gZmFsc2U7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4gKwkJY29uZmlnID0gJmNoaWxkLT5jb25maWc7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7Cj4g LQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4gLQo+IC0JCWlmIChjaGls ZC0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRdICYmCj4gLQkJICAgIChjaGlsZC0+ZGV2 aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklUUykgPT0KPiArCQlpZiAoY29uZmlnLT5kdm9f cG9ydCA9PSBwb3J0X21hcHBpbmdbcG9ydF0gJiYKPiArCQkgICAgKGNvbmZpZy0+ZGV2aWNlX3R5 cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklUUykgPT0KPiAgCQkgICAgKERFVklDRV9UWVBFX2VEUCAm IERFVklDRV9UWVBFX2VEUF9CSVRTKSkKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAl9Cj4gQEAgLTIx MzYsMTMgKzIxMjgsMTAgQEAgc3RhdGljIGJvb2wgY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShj b25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQsCj4gIGJvb2wgaW50ZWxfYmlv c19pc19wb3J0X2RwX2R1YWxfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAkJCQkgICAgIGVudW0gcG9ydCBwb3J0KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRf ZGV2aWNlX2NvbmZpZyAqY2hpbGQ7Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjaGlsZF9k ZXZpY2UgKmNoaWxkOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxk X2Rldl9udW07IGkrKykgewo+IC0JCWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBp Owo+IC0KPiAtCQlpZiAoY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShjaGlsZCwgcG9ydCkpCj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2Vz LCBub2RlKSB7Cj4gKwkJaWYgKGNoaWxkX2Rldl9pc19kcF9kdWFsX21vZGUoJmNoaWxkLT5jb25m aWcsIHBvcnQpKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiAgCX0KPiAgCj4gQEAgLTIxNTksMTcgKzIx NDgsMTcgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfZHBfZHVhbF9tb2RlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgYm9vbCBpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgIGVudW0gcG9y dCAqcG9ydCkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPiArCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+ICAJdTggZHZvX3BvcnQ7Cj4gLQlpbnQgaTsK PiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKysp IHsKPiAtCQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoY2hpbGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpIHsK PiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPiAgCj4gLQkJaWYgKCEoY2hpbGQtPmRldmlj ZV90eXBlICYgREVWSUNFX1RZUEVfTUlQSV9PVVRQVVQpKQo+ICsJCWlmICghKGNvbmZpZy0+ZGV2 aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAtCQlkdm9fcG9ydCA9IGNoaWxkLT5kdm9fcG9ydDsKPiArCQlkdm9fcG9ydCA9IGNvbmZpZy0+ ZHZvX3BvcnQ7Cj4gIAo+ICAJCWlmIChkdm9fcG9ydCA9PSBEVk9fUE9SVF9NSVBJQSB8fAo+ICAJ CSAgICAoZHZvX3BvcnQgPT0gRFZPX1BPUlRfTUlQSUIgJiYgSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMSkgfHwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBmNjdiYWJlMjAuLmFl ODVmZmEwODY2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC03MjQsOCArNzI0 LDcgQEAgc3RydWN0IGludGVsX3ZidF9kYXRhIHsKPiAgCj4gIAlpbnQgY3J0X2RkY19waW47Cj4g IAo+IC0JaW50IGNoaWxkX2Rldl9udW07Cj4gLQlzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAq Y2hpbGRfZGV2Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBjaGlsZF9kZXZpY2VzOwo+ICAKPiAgCXN0 cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyBkZGlfcG9ydF9pbmZvW0k5MTVfTUFYX1BPUlRTXTsKPiAg CXN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5nIHNkdm9fbWFwcGluZ3NbMl07Cj4gLS0gCj4gMi4y MC4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==