From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915/bios: store child devices in a list Date: Thu, 07 Nov 2019 10:22:10 +0200 Message-ID: <87d0e42j0t.fsf@intel.com> References: <20191106164531.7079-1-jani.nikula@intel.com> <20191106203752.GX1208@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 397956EEE2 for ; Thu, 7 Nov 2019 08:22:17 +0000 (UTC) In-Reply-To: <20191106203752.GX1208@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?utf-8?B?U3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwNiBOb3YgMjAxOSwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gV2VkLCBOb3YgMDYsIDIwMTkgYXQgMDY6NDU6MzFQTSAr MDIwMCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4+IFVzaW5nIHRoZSBhcnJheSBpcyBnZXR0aW5nIGNs dW1zeS4gTWFrZSB0aGluZ3MgYSBiaXQgbW9yZSBkeW5hbWljLgo+PiAKPj4gSW4gY29kZSwgc3Rh cnQgbWlncmF0aW5nIHRvd2FyZHMgY2FsbGluZyB0aGUgbmV3IHN0cnVjdCBjaGlsZF9kZXZpY2UK Pj4gImNoaWxkIiBhbmQgdGhlIFZCVC1vcmlnaW5hdGluZyBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2Nv bmZpZyAiY29uZmlnIi4KPj4gCj4+IFJlbW92ZSBlYXJseSByZXR1cm5zIG9uIG5vdCBoYXZpbmcg Y2hpbGQgZGV2aWNlcyB3aGVuIHRoZSBlbmQgcmVzdWx0Cj4+IGFmdGVyICJpdGVyYXRpbmciIHRo ZSBlbXB0eSBsaXN0IHdvdWxkIGJlIHRoZSBzYW1lLgo+PiAKPj4gQ2M6IFZpbGxlIFN5cmphbGEg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+PiAKPj4gLS0tCj4+IAo+PiBUaGUgZW5kIGdv YWw6IGFsbG93IG1vcmUgbWV0YSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCB0byB0aGUgbmV3Cj4+ IGNoaWxkX2RldmljZSBzdHJ1Y3QsIGluZGVwZW5kZW50IG9mIERESSBwb3J0IGluZm8gYmVpbmcg dXNlZCBvciBub3Qgb24KPj4gdGhlIHBsYXRmb3JtLCBhbmQgZXZlbnR1YWxseSBtaWdyYXRlIGRk aV9wb3J0X2luZm8gdG8gaXQgYXMgd2VsbCwKPj4gdW5pZnlpbmcgdGhlIHN0dWZmIGFjcm9zcyBw bGF0Zm9ybXMuCj4+IAo+PiBDdXJyZW50bHkgaXQncyBub3QgZWFzaWx5IHBvc3NpYmxlIHRvIGFz c29jaWF0ZSBmb3IgZXhhbXBsZSB0aGUgRFNDCj4+IGNvbXByZXNzaW9uIGRhdGEgdG8gdGhlIGNo aWxkIGRldmljZSBmb3Igbm9uLURESSBwbGF0Zm9ybXMgb3IgZm9yIERTSQo+PiBvdXRwdXRzLiBU aGlzIGxldHMgdXMgYWRkIHRoZSBjb21wcmVzc2lvbiBkYXRhIChwb2ludGVyKSB0byBzdHJ1Y3QK Pj4gY2hpbGRfZGV2aWNlLgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfYmlvcy5jIHwgMjAzICsrKysrKysrKystLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgIHwgICAzICstCj4+ICAyIGZpbGVzIGNoYW5n ZWQsIDk3IGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jpb3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jCj4+IGluZGV4IGEwM2Y1NmI3YjRlZi4uMDI1 MDc0ODYyYWIwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Jpb3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jp b3MuYwo+PiBAQCAtNTgsNiArNTgsMTIgQEAKPj4gICAqIHRoYXQuCj4+ICAgKi8KPj4gIAo+PiAr LyogV3JhcHBlciBmb3IgVkJUIGNoaWxkIGRldmljZSBjb25maWcgKi8KPj4gK3N0cnVjdCBjaGls ZF9kZXZpY2Ugewo+PiArCXN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnIGNvbmZpZzsKPj4gKwlz dHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4KPiBUaGUgd3JhcHBlciBpcyBhIGJpdCB1bmZvcnR1bmF0 ZS4gSSBkb24ndCBzdXBwb3NlIHdlIGNvdWxkIGp1c3Qgc2hvdmUKPiB0aGUgbGlzdCBoZWFkIGlu dG8gdGhlIGV4aXN0aW5nIHN0cnVjdCBhbmQgYWRqdXN0IHdoYXQgbmVlZHMgYWRqdXN0aW5nPwoK VGhlIGV4aXN0aW5nIHN0cnVjdCBpcyB1c2VkIGZvciBzZXJpYWxpemF0aW9uIGFuZCB0aGUgc2l6 ZSBpcyBjaGVja2VkCmFnYWluc3Qgd2hhdCdzIGluIHZidCBldGMuIEkgbWlnaHQgYWxzbyBhZGQg c3R1ZmYgaW4gdGhlIHdyYXBwZXIgc3RydWN0LAphdCBsZWFzdCBpbnRlcm1lZGlhdGVseSwgc28g aXQncyBraW5kIG9mIHVzZWZ1bC4gSSBkb24ndCByZWFsbHkgdGhpbmsKdGhlIHdyYXBwZXIgaXMg YWxsIHRoYXQgYmFkLgoKPgo+PiArfTsKPj4gKwo+PiAgI2RlZmluZQlTTEFWRV9BRERSMQkweDcw Cj4+ICAjZGVmaW5lCVNMQVZFX0FERFIyCTB4NzIKPj4gIAo+PiBAQCAtNDQ5LDggKzQ1NSw5IEBA IHN0YXRpYyB2b2lkCj4+ICBwYXJzZV9zZHZvX2RldmljZV9tYXBwaW5nKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICB7Cj4+ICAJc3RydWN0IHNk dm9fZGV2aWNlX21hcHBpbmcgKm1hcHBpbmc7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2Rldmlj ZV9jb25maWcgKmNoaWxkOwo+PiAtCWludCBpLCBjb3VudCA9IDA7Cj4+ICsJY29uc3Qgc3RydWN0 IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPgo+IFRoaXMgdGhpbmcgY291bGQgYXQgbGVh c3QgY2FuIGxpdmUgaW5zaWRlIHRoZSBsb29wLiBUaG91Z2ggdGhlIHJlbmFtZSBpcwo+IGFsc28g YSBiaXQgdW5mb3J0dW5hdGUsIGxlYWRpbmcgdG8gYSBuZWVkbGVzc2x5IGxhcmdlIGRpZmYuIEF2 b2lkaW5nIHRoZQo+IHdyYXBwZXIgc3RydWN0IHdvdWxkIGFsc28gYXZvaWQgdGhhdC4gSSBndWVz cyBhbm90aGVyIG9wdGlvbiB3b3VsZAo+IGJlIHRvIHNlbGVjdCBhIGRpZmZlcmVudCBuYW1lIGZv ciB0aGUgd3JhcHBlciBwb2ludGVyIGhlcmUgYW5kIGtlZXAgdGhlCj4gb3JpZ2luYWwgbmFtZSBm b3IgdGhlIGFjdHVhbCB0aGluZy4KClRoZSBtYWluIHByb2JsZW0gd2l0aCBhdm9pZGluZyB0aGUg cmVuYW1lIGlzIHRvIGNvbWUgdXAgd2l0aCBhIGJldHRlcgpuYW1lIGZvciB0aGUgd3JhcHBlciBz dHJ1Y3R1cmUuIDopIENoaWxkIGFuZCBjb25maWcgc2VlbWVkIGFwdCwgYnV0IEkgZG8KdW5kZXJz dGFuZCB0aGUgZG93bnNpZGVzLiBJJ2QganVzdCBsaWtlIHRvIGhhdmUgbmFtZXMgdGhhdCB3ZSBj YW4gdXNlCnRocm91Z291dC4gTWF5YmUgd2UgY2FuIHN0aWNrIHRvIGNoaWxkIGZvciBzdHJ1Y3Qg Y2hpbGRfZGV2aWNlX2NvbmZpZywKYnV0IHdoYXQgZG8gd2UgY2FsbCB0aGUgd2hvbGUgd3JhcHBl ciBzdHJ1Y3QgYW5kIGxvY2FsIHZhcnM/ClN1Z2dlc3Rpb25zPwoKCkJSLApKYW5pLgoKCj4KPj4g Kwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPj4gKwlpbnQgY291bnQgPSAwOwo+ PiAgCj4+ICAJLyoKPj4gIAkgKiBPbmx5IHBhcnNlIFNEVk8gbWFwcGluZ3Mgb24gZ2VucyB0aGF0 IGNvdWxkIGhhdmUgU0RWTy4gVGhpcyBpc24ndAo+PiBAQCAtNDYxLDM1ICs0NjgsMzUgQEAgcGFy c2Vfc2R2b19kZXZpY2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHU4IGJkYl92ZXJzaW9uKQo+PiAgCQlyZXR1cm47Cj4+ICAJfQo+PiAgCj4+IC0JZm9yIChpID0g MCwgY291bnQgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4g LQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiAr CQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPj4gIAo+PiAtCQlpZiAoY2hpbGQtPnNsYXZlX2Fk ZHIgIT0gU0xBVkVfQUREUjEgJiYKPj4gLQkJICAgIGNoaWxkLT5zbGF2ZV9hZGRyICE9IFNMQVZF X0FERFIyKSB7Cj4+ICsJCWlmIChjb25maWctPnNsYXZlX2FkZHIgIT0gU0xBVkVfQUREUjEgJiYK Pj4gKwkJICAgIGNvbmZpZy0+c2xhdmVfYWRkciAhPSBTTEFWRV9BRERSMikgewo+PiAgCQkJLyoK Pj4gIAkJCSAqIElmIHRoZSBzbGF2ZSBhZGRyZXNzIGlzIG5laXRoZXIgMHg3MCBub3IgMHg3MiwK Pj4gIAkJCSAqIGl0IGlzIG5vdCBhIFNEVk8gZGV2aWNlLiBTa2lwIGl0Lgo+PiAgCQkJICovCj4+ ICAJCQljb250aW51ZTsKPj4gIAkJfQo+PiAtCQlpZiAoY2hpbGQtPmR2b19wb3J0ICE9IERFVklD RV9QT1JUX0RWT0IgJiYKPj4gLQkJICAgIGNoaWxkLT5kdm9fcG9ydCAhPSBERVZJQ0VfUE9SVF9E Vk9DKSB7Cj4+ICsJCWlmIChjb25maWctPmR2b19wb3J0ICE9IERFVklDRV9QT1JUX0RWT0IgJiYK Pj4gKwkJICAgIGNvbmZpZy0+ZHZvX3BvcnQgIT0gREVWSUNFX1BPUlRfRFZPQykgewo+PiAgCQkJ Lyogc2tpcCB0aGUgaW5jb3JyZWN0IFNEVk8gcG9ydCAqLwo+PiAgCQkJRFJNX0RFQlVHX0tNUygi SW5jb3JyZWN0IFNEVk8gcG9ydC4gU2tpcCBpdFxuIik7Cj4+ICAJCQljb250aW51ZTsKPj4gIAkJ fQo+PiAgCQlEUk1fREVCVUdfS01TKCJ0aGUgU0RWTyBkZXZpY2Ugd2l0aCBzbGF2ZSBhZGRyICUy eCBpcyBmb3VuZCBvbiIKPj4gIAkJCSAgICAgICIgJXMgcG9ydFxuIiwKPj4gLQkJCSAgICAgIGNo aWxkLT5zbGF2ZV9hZGRyLAo+PiAtCQkJICAgICAgKGNoaWxkLT5kdm9fcG9ydCA9PSBERVZJQ0Vf UE9SVF9EVk9CKSA/Cj4+ICsJCQkgICAgICBjb25maWctPnNsYXZlX2FkZHIsCj4+ICsJCQkgICAg ICAoY29uZmlnLT5kdm9fcG9ydCA9PSBERVZJQ0VfUE9SVF9EVk9CKSA/Cj4+ICAJCQkgICAgICAi U0RWT0IiIDogIlNEVk9DIik7Cj4+IC0JCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZvX21h cHBpbmdzW2NoaWxkLT5kdm9fcG9ydCAtIDFdOwo+PiArCQltYXBwaW5nID0gJmRldl9wcml2LT52 YnQuc2R2b19tYXBwaW5nc1tjb25maWctPmR2b19wb3J0IC0gMV07Cj4+ICAJCWlmICghbWFwcGlu Zy0+aW5pdGlhbGl6ZWQpIHsKPj4gLQkJCW1hcHBpbmctPmR2b19wb3J0ID0gY2hpbGQtPmR2b19w b3J0Owo+PiAtCQkJbWFwcGluZy0+c2xhdmVfYWRkciA9IGNoaWxkLT5zbGF2ZV9hZGRyOwo+PiAt CQkJbWFwcGluZy0+ZHZvX3dpcmluZyA9IGNoaWxkLT5kdm9fd2lyaW5nOwo+PiAtCQkJbWFwcGlu Zy0+ZGRjX3BpbiA9IGNoaWxkLT5kZGNfcGluOwo+PiAtCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNo aWxkLT5pMmNfcGluOwo+PiArCQkJbWFwcGluZy0+ZHZvX3BvcnQgPSBjb25maWctPmR2b19wb3J0 Owo+PiArCQkJbWFwcGluZy0+c2xhdmVfYWRkciA9IGNvbmZpZy0+c2xhdmVfYWRkcjsKPj4gKwkJ CW1hcHBpbmctPmR2b193aXJpbmcgPSBjb25maWctPmR2b193aXJpbmc7Cj4+ICsJCQltYXBwaW5n LT5kZGNfcGluID0gY29uZmlnLT5kZGNfcGluOwo+PiArCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNv bmZpZy0+aTJjX3BpbjsKPj4gIAkJCW1hcHBpbmctPmluaXRpYWxpemVkID0gMTsKPj4gIAkJCURS TV9ERUJVR19LTVMoIlNEVk8gZGV2aWNlOiBkdm89JXgsIGFkZHI9JXgsIHdpcmluZz0lZCwgZGRj X3Bpbj0lZCwgaTJjX3Bpbj0lZFxuIiwKPj4gIAkJCQkgICAgICBtYXBwaW5nLT5kdm9fcG9ydCwK Pj4gQEAgLTUwMSw3ICs1MDgsNyBAQCBwYXJzZV9zZHZvX2RldmljZV9tYXBwaW5nKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICAJCQlEUk1fREVC VUdfS01TKCJNYXliZSBvbmUgU0RWTyBwb3J0IGlzIHNoYXJlZCBieSAiCj4+ICAJCQkJCSAidHdv IFNEVk8gZGV2aWNlLlxuIik7Cj4+ICAJCX0KPj4gLQkJaWYgKGNoaWxkLT5zbGF2ZTJfYWRkcikg ewo+PiArCQlpZiAoY29uZmlnLT5zbGF2ZTJfYWRkcikgewo+PiAgCQkJLyogTWF5YmUgdGhpcyBp cyBhIFNEVk8gZGV2aWNlIHdpdGggbXVsdGlwbGUgaW5wdXRzICovCj4+ICAJCQkvKiBBbmQgdGhl IG1hcHBpbmcgaW5mbyBpcyBub3QgYWRkZWQgKi8KPj4gIAkJCURSTV9ERUJVR19LTVMoInRoZXJl IGV4aXN0cyB0aGUgc2xhdmUyX2FkZHIuIE1heWJlIHRoaXMiCj4+IEBAIC0xNTcxLDggKzE1Nzgs NyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9kZGlfcG9ydChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4+ICAKPj4gIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJzaW9uKQo+PiAgewo+PiAtCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPj4gLQlpbnQgaTsKPj4gKwljb25z dCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPj4gIAo+PiAgCWlmICghSEFTX0RESShkZXZf cHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlyZXR1cm47Cj4+IEBAIC0x NTgwLDExICsxNTg2LDggQEAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICAJaWYgKGJkYl92ZXJz aW9uIDwgMTU1KQo+PiAgCQlyZXR1cm47Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0 LmNoaWxkX2RldiArIGk7Cj4+IC0KPj4gLQkJcGFyc2VfZGRpX3BvcnQoZGV2X3ByaXYsIGNoaWxk LCBiZGJfdmVyc2lvbik7Cj4+IC0JfQo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZk ZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpCj4+ICsJCXBhcnNlX2RkaV9wb3J0KGRl dl9wcml2LCAmY2hpbGQtPmNvbmZpZywgYmRiX3ZlcnNpb24pOwo+PiAgfQo+PiAgCj4+ICBzdGF0 aWMgdm9pZAo+PiBAQCAtMTU5Miw4ICsxNTk1LDkgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9u cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCQkgIGNvbnN0IHN0cnVj dCBiZGJfaGVhZGVyICpiZGIpCj4+ICB7Cj4+ICAJY29uc3Qgc3RydWN0IGJkYl9nZW5lcmFsX2Rl ZmluaXRpb25zICpkZWZzOwo+PiAtCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpj aGlsZDsKPj4gLQlpbnQgaSwgY2hpbGRfZGV2aWNlX251bSwgY291bnQ7Cj4+ICsJY29uc3Qgc3Ry dWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPj4gKwlzdHJ1Y3QgY2hpbGRfZGV2aWNl ICpjaGlsZDsKPj4gKwlpbnQgaSwgY2hpbGRfZGV2aWNlX251bTsKPj4gIAl1OCBleHBlY3RlZF9z aXplOwo+PiAgCXUxNiBibG9ja19zaXplOwo+PiAgCWludCBidXNfcGluOwo+PiBAQCAtMTYyOSw4 ICsxNjMzLDggQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAJfSBlbHNlIGlmIChiZGItPnZlcnNpb24gPD0gMjI5KSB7Cj4+ ICAJCWV4cGVjdGVkX3NpemUgPSAzOTsKPj4gIAl9IGVsc2Ugewo+PiAtCQlleHBlY3RlZF9zaXpl ID0gc2l6ZW9mKCpjaGlsZCk7Cj4+IC0JCUJVSUxEX0JVR19PTihzaXplb2YoKmNoaWxkKSA8IDM5 KTsKPj4gKwkJZXhwZWN0ZWRfc2l6ZSA9IHNpemVvZigqY29uZmlnKTsKPj4gKwkJQlVJTERfQlVH X09OKHNpemVvZigqY29uZmlnKSA8IDM5KTsKPj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiRXhwZWN0 ZWQgY2hpbGQgZGV2aWNlIGNvbmZpZyBzaXplIGZvciBWQlQgdmVyc2lvbiAldSBub3Qga25vd247 IGFzc3VtaW5nICV1XG4iLAo+PiAgCQkJCSBiZGItPnZlcnNpb24sIGV4cGVjdGVkX3NpemUpOwo+ PiAgCX0KPj4gQEAgLTE2NDksNDMgKzE2NTMsMzAgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9u cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAKPj4gIAkvKiBnZXQgdGhl IG51bWJlciBvZiBjaGlsZCBkZXZpY2UgKi8KPj4gIAljaGlsZF9kZXZpY2VfbnVtID0gKGJsb2Nr X3NpemUgLSBzaXplb2YoKmRlZnMpKSAvIGRlZnMtPmNoaWxkX2Rldl9zaXplOwo+PiAtCWNvdW50 ID0gMDsKPj4gLQkvKiBnZXQgdGhlIG51bWJlciBvZiBjaGlsZCBkZXZpY2UgdGhhdCBpcyBwcmVz ZW50ICovCj4+IC0JZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+PiAt CQljaGlsZCA9IGNoaWxkX2RldmljZV9wdHIoZGVmcywgaSk7Cj4+IC0JCWlmICghY2hpbGQtPmRl dmljZV90eXBlKQo+PiAtCQkJY29udGludWU7Cj4+IC0JCWNvdW50Kys7Cj4+IC0JfQo+PiAtCWlm ICghY291bnQpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygibm8gY2hpbGQgZGV2IGlzIHBhcnNlZCBm cm9tIFZCVFxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0JZGV2X3ByaXYtPnZidC5jaGls ZF9kZXYgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoKmNoaWxkKSwgR0ZQX0tFUk5FTCk7Cj4+IC0J aWYgKCFkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldikgewo+PiAtCQlEUk1fREVCVUdfS01TKCJObyBt ZW1vcnkgc3BhY2UgZm9yIGNoaWxkIGRldmljZVxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+ ICAKPj4gLQlkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0gPSBjb3VudDsKPj4gLQljb3VudCA9 IDA7Cj4+ICAJZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+PiAtCQlj aGlsZCA9IGNoaWxkX2RldmljZV9wdHIoZGVmcywgaSk7Cj4+IC0JCWlmICghY2hpbGQtPmRldmlj ZV90eXBlKQo+PiArCQljb25maWcgPSBjaGlsZF9kZXZpY2VfcHRyKGRlZnMsIGkpOwo+PiArCQlp ZiAoIWNvbmZpZy0+ZGV2aWNlX3R5cGUpCj4+ICAJCQljb250aW51ZTsKPj4gIAo+PiAgCQlEUk1f REVCVUdfS01TKCJGb3VuZCBWQlQgY2hpbGQgZGV2aWNlIHdpdGggdHlwZSAweCV4XG4iLAo+PiAt CQkJICAgICAgY2hpbGQtPmRldmljZV90eXBlKTsKPj4gKwkJCSAgICAgIGNvbmZpZy0+ZGV2aWNl X3R5cGUpOwo+PiArCj4+ICsJCWNoaWxkID0ga21hbGxvYyhzaXplb2YoKmNoaWxkKSwgR0ZQX0tF Uk5FTCk7Cj4+ICAKPj4gIAkJLyoKPj4gIAkJICogQ29weSBhcyBtdWNoIGFzIHdlIGtub3cgKHNp emVvZikgYW5kIGlzIGF2YWlsYWJsZQo+PiAtCQkgKiAoY2hpbGRfZGV2X3NpemUpIG9mIHRoZSBj aGlsZCBkZXZpY2UuIEFjY2Vzc2luZyB0aGUgZGF0YSBtdXN0Cj4+IC0JCSAqIGRlcGVuZCBvbiBW QlQgdmVyc2lvbi4KPj4gKwkJICogKGNoaWxkX2Rldl9zaXplKSBvZiB0aGUgY2hpbGQgZGV2aWNl IGNvbmZpZy4gQWNjZXNzaW5nIHRoZQo+PiArCQkgKiBkYXRhIG11c3QgZGVwZW5kIG9uIFZCVCB2 ZXJzaW9uLgo+PiAgCQkgKi8KPj4gLQkJbWVtY3B5KGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsg Y291bnQsIGNoaWxkLAo+PiAtCQkgICAgICAgbWluX3Qoc2l6ZV90LCBkZWZzLT5jaGlsZF9kZXZf c2l6ZSwgc2l6ZW9mKCpjaGlsZCkpKTsKPj4gLQkJY291bnQrKzsKPj4gKwkJbWVtY3B5KCZjaGls ZC0+Y29uZmlnLCBjb25maWcsCj4+ICsJCSAgICAgICBtaW5fdChzaXplX3QsIGRlZnMtPmNoaWxk X2Rldl9zaXplLCBzaXplb2YoKmNvbmZpZykpKTsKPj4gKwo+PiArCQlsaXN0X2FkZCgmY2hpbGQt Pm5vZGUsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpOwo+PiAgCX0KPj4gKwo+PiArCWlm IChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+PiArCQlEUk1fREVC VUdfS01TKCJubyBjaGlsZCBkZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPj4gIH0KPj4gIAo+ PiAgLyogQ29tbW9uIGRlZmF1bHRzIHdoaWNoIG1heSBiZSBvdmVycmlkZGVuIGJ5IFZCVC4gKi8K Pj4gQEAgLTE4NDksNiArMTg0MCw4IEBAIHZvaWQgaW50ZWxfYmlvc19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAkJcmV0dXJuOwo+PiAgCX0KPj4gIAo+PiArCUlO SVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpOwo+PiArCj4+ICAJaW5p dF92YnRfZGVmYXVsdHMoZGV2X3ByaXYpOwo+PiAgCj4+ICAJLyogSWYgdGhlIE9wUmVnaW9uIGRv ZXMgbm90IGhhdmUgVkJULCBsb29rIGluIFBDSSBST00uICovCj4+IEBAIC0xOTAzLDkgKzE4OTYs MTMgQEAgdm9pZCBpbnRlbF9iaW9zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiAgICovCj4+ICB2b2lkIGludGVsX2Jpb3NfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICB7Cj4+IC0Ja2ZyZWUoZGV2X3ByaXYtPnZidC5j aGlsZF9kZXYpOwo+PiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2ID0gTlVMTDsKPj4gLQlkZXZf cHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0gPSAwOwo+PiArCXN0cnVjdCBjaGlsZF9kZXZpY2UgKmNo aWxkLCAqbjsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjaGlsZCwgbiwgJmRl dl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiArCQlsaXN0X2RlbCgmY2hpbGQt Pm5vZGUpOwo+PiArCQlrZnJlZShjaGlsZCk7Cj4+ICsJfQo+PiArCj4+ICAJa2ZyZWUoZGV2X3By aXYtPnZidC5zZHZvX2x2ZHNfdmJ0X21vZGUpOwo+PiAgCWRldl9wcml2LT52YnQuc2R2b19sdmRz X3ZidF9tb2RlID0gTlVMTDsKPj4gIAlrZnJlZShkZXZfcHJpdi0+dmJ0LmxmcF9sdmRzX3ZidF9t b2RlKTsKPj4gQEAgLTE5MjksMjEgKzE5MjYsMjIgQEAgdm9pZCBpbnRlbF9iaW9zX2RyaXZlcl9y ZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgICovCj4+ICBib29s IGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxkOwo+ PiAtCWludCBpOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7 Cj4+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAKPj4gIAlpZiAoIWRl dl9wcml2LT52YnQuaW50X3R2X3N1cHBvcnQpCj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiAt CWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtKQo+PiArCWlmIChsaXN0X2VtcHR5KCZk ZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+PiAgCQlyZXR1cm4gdHJ1ZTsKPj4gIAo+PiAt CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+PiAt CQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ICsJ CWNvbmZpZyA9ICZjaGlsZC0+Y29uZmlnOwo+PiArCj4+ICAJCS8qCj4+ICAJCSAqIElmIHRoZSBk ZXZpY2UgdHlwZSBpcyBub3QgVFYsIGNvbnRpbnVlLgo+PiAgCQkgKi8KPj4gLQkJc3dpdGNoIChj aGlsZC0+ZGV2aWNlX3R5cGUpIHsKPj4gKwkJc3dpdGNoIChjb25maWctPmRldmljZV90eXBlKSB7 Cj4+ICAJCWNhc2UgREVWSUNFX1RZUEVfSU5UX1RWOgo+PiAgCQljYXNlIERFVklDRV9UWVBFX1RW Ogo+PiAgCQljYXNlIERFVklDRV9UWVBFX1RWX1NWSURFT19DT01QT1NJVEU6Cj4+IEBAIC0xOTU0 LDcgKzE5NTIsNyBAQCBib29sIGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJCS8qIE9ubHkgd2hlbiB0aGUgYWRkaW5fb2Zmc2V0 IGlzIG5vbi16ZXJvLCBpdCBpcyByZWdhcmRlZAo+PiAgCQkgKiBhcyBwcmVzZW50Lgo+PiAgCQkg Ki8KPj4gLQkJaWYgKGNoaWxkLT5hZGRpbl9vZmZzZXQpCj4+ICsJCWlmIChjb25maWctPmFkZGlu X29mZnNldCkKPj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMTk3MSwzMiAr MTk2OSwzMiBAQCBib29sIGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgKi8KPj4gIGJvb2wgaW50ZWxfYmlvc19pc19sdmRzX3By ZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikKPj4g IHsKPj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQ7Cj4+IC0JaW50 IGk7Cj4+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICsJY29uc3Qgc3Ry dWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPj4gIAo+PiAtCWlmICghZGV2X3ByaXYt PnZidC5jaGlsZF9kZXZfbnVtKQo+PiArCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+dmJ0LmNo aWxkX2RldmljZXMpKQo+PiAgCQlyZXR1cm4gdHJ1ZTsKPj4gIAo+PiAtCWZvciAoaSA9IDA7IGkg PCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+PiAtCQljaGlsZCA9IGRldl9w cml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAm ZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ICsJCWNvbmZpZyA9ICZjaGls ZC0+Y29uZmlnOwo+PiAgCj4+ICAJCS8qIElmIHRoZSBkZXZpY2UgdHlwZSBpcyBub3QgTEZQLCBj b250aW51ZS4KPj4gIAkJICogV2UgaGF2ZSB0byBjaGVjayBib3RoIHRoZSBuZXcgaWRlbnRpZmll cnMgYXMgd2VsbCBhcyB0aGUKPj4gIAkJICogb2xkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc29t ZSBCSU9TZXMuCj4+ICAJCSAqLwo+PiAtCQlpZiAoY2hpbGQtPmRldmljZV90eXBlICE9IERFVklD RV9UWVBFX0lOVF9MRlAgJiYKPj4gLQkJICAgIGNoaWxkLT5kZXZpY2VfdHlwZSAhPSBERVZJQ0Vf VFlQRV9MRlApCj4+ICsJCWlmIChjb25maWctPmRldmljZV90eXBlICE9IERFVklDRV9UWVBFX0lO VF9MRlAgJiYKPj4gKwkJICAgIGNvbmZpZy0+ZGV2aWNlX3R5cGUgIT0gREVWSUNFX1RZUEVfTEZQ KQo+PiAgCQkJY29udGludWU7Cj4+ICAKPj4gLQkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3Bp bihkZXZfcHJpdiwgY2hpbGQtPmkyY19waW4pKQo+PiAtCQkJKmkyY19waW4gPSBjaGlsZC0+aTJj X3BpbjsKPj4gKwkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3BpbihkZXZfcHJpdiwgY29uZmln LT5pMmNfcGluKSkKPj4gKwkJCSppMmNfcGluID0gY29uZmlnLT5pMmNfcGluOwo+PiAgCj4+ICAJ CS8qIEhvd2V2ZXIsIHdlIGNhbm5vdCB0cnVzdCB0aGUgQklPUyB3cml0ZXJzIHRvIHBvcHVsYXRl Cj4+ICAJCSAqIHRoZSBWQlQgY29ycmVjdGx5LiAgU2luY2UgTFZEUyByZXF1aXJlcyBhZGRpdGlv bmFsCj4+ICAJCSAqIGluZm9ybWF0aW9uIGZyb20gQUlNIGJsb2NrcywgYSBub24temVybyBhZGRp biBvZmZzZXQgaXMKPj4gIAkJICogYSBnb29kIGluZGljYXRvciB0aGF0IHRoZSBMVkRTIGlzIGFj dHVhbGx5IHByZXNlbnQuCj4+ICAJCSAqLwo+PiAtCQlpZiAoY2hpbGQtPmFkZGluX29mZnNldCkK Pj4gKwkJaWYgKGNvbmZpZy0+YWRkaW5fb2Zmc2V0KQo+PiAgCQkJcmV0dXJuIHRydWU7Cj4+ICAK Pj4gIAkJLyogQnV0IGV2ZW4gdGhlbiBzb21lIEJJT1Mgd3JpdGVycyBwZXJmb3JtIHNvbWUgYmxh Y2sgbWFnaWMKPj4gQEAgLTIwMjAsNyArMjAxOCw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19sdmRz X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikK Pj4gICAqLwo+PiAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+PiAgewo+PiAtCWNvbnN0IHN0 cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRf ZGV2aWNlX2NvbmZpZyAqY29uZmlnOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNo aWxkOwo+PiAgCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+PiAgCQl1MTYgZHAsIGhkbWk7Cj4+ICAJ fSBwb3J0X21hcHBpbmdbXSA9IHsKPj4gQEAgLTIwMzAsNyArMjAyOSw2IEBAIGJvb2wgaW50ZWxf Ymlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBvcnQgcG9yCj4+ICAJCVtQT1JUX0VdID0geyBEVk9fUE9SVF9EUEUsIERWT19QT1JUX0hE TUlFLCB9LAo+PiAgCQlbUE9SVF9GXSA9IHsgRFZPX1BPUlRfRFBGLCBEVk9fUE9SVF9IRE1JRiwg fSwKPj4gIAl9Owo+PiAtCWludCBpOwo+PiAgCj4+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7 Cj4+ICAJCWNvbnN0IHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyAqcG9ydF9pbmZvID0KPj4gQEAg LTIwNDUsMTYgKzIwNDMsMTMgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPj4gIAlpZiAoV0FS Tl9PTihwb3J0ID09IFBPUlRfQSkgfHwgcG9ydCA+PSBBUlJBWV9TSVpFKHBvcnRfbWFwcGluZykp Cj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiAtCWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9k ZXZfbnVtKQo+PiAtCQlyZXR1cm4gZmFsc2U7Cj4+IC0KPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2 X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+ dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjaGlsZCwgJmRldl9w cml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiArCQljb25maWcgPSAmY2hpbGQtPmNv bmZpZzsKPj4gIAo+PiAtCQlpZiAoKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9y dF0uZHAgfHwKPj4gLQkJICAgICBjaGlsZC0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRd LmhkbWkpICYmCj4+IC0JCSAgICAoY2hpbGQtPmRldmljZV90eXBlICYgKERFVklDRV9UWVBFX1RN RFNfRFZJX1NJR05BTElORyB8Cj4+IC0JCQkJCSAgIERFVklDRV9UWVBFX0RJU1BMQVlQT1JUX09V VFBVVCkpKQo+PiArCQlpZiAoKGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRd LmRwIHx8Cj4+ICsJCSAgICAgY29uZmlnLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9ydF0u aGRtaSkgJiYKPj4gKwkJICAgIChjb25maWctPmRldmljZV90eXBlICYgKERFVklDRV9UWVBFX1RN RFNfRFZJX1NJR05BTElORyB8Cj4+ICsJCQkJCSAgICBERVZJQ0VfVFlQRV9ESVNQTEFZUE9SVF9P VVRQVVQpKSkKPj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMjA3MCw3ICsy MDY1LDggQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPj4gICAqLwo+PiAgYm9vbCBpbnRlbF9i aW9zX2lzX3BvcnRfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw b3J0IHBvcnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNo aWxkOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7Cj4+ICsJ Y29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAJc3RhdGljIGNvbnN0IHNob3J0 IHBvcnRfbWFwcGluZ1tdID0gewo+PiAgCQlbUE9SVF9CXSA9IERWT19QT1JUX0RQQiwKPj4gIAkJ W1BPUlRfQ10gPSBEVk9fUE9SVF9EUEMsCj4+IEBAIC0yMDc4LDE5ICsyMDc0LDE1IEBAIGJvb2wg aW50ZWxfYmlvc19pc19wb3J0X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGVudW0gcG9ydCBwb3J0KQo+PiAgCQlbUE9SVF9FXSA9IERWT19QT1JUX0RQRSwKPj4gIAkJW1BP UlRfRl0gPSBEVk9fUE9SVF9EUEYsCj4+ICAJfTsKPj4gLQlpbnQgaTsKPj4gIAo+PiAgCWlmIChI QVNfRERJKGRldl9wcml2KSkKPj4gIAkJcmV0dXJuIGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5m b1twb3J0XS5zdXBwb3J0c19lZHA7Cj4+ICAKPj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRf ZGV2X251bSkKPj4gLQkJcmV0dXJuIGZhbHNlOwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hp bGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpIHsKPj4gKwkJY29uZmlnID0g JmNoaWxkLT5jb25maWc7Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rl diArIGk7Cj4+IC0KPj4gLQkJaWYgKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9y dF0gJiYKPj4gLQkJICAgIChjaGlsZC0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklU UykgPT0KPj4gKwkJaWYgKGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRdICYm Cj4+ICsJCSAgICAoY29uZmlnLT5kZXZpY2VfdHlwZSAmIERFVklDRV9UWVBFX2VEUF9CSVRTKSA9 PQo+PiAgCQkgICAgKERFVklDRV9UWVBFX2VEUCAmIERFVklDRV9UWVBFX2VEUF9CSVRTKSkKPj4g IAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gQEAgLTIxMzYsMTMgKzIxMjgsMTAgQEAgc3RhdGlj IGJvb2wgY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShjb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNl X2NvbmZpZyAqY2hpbGQsCj4+ICBib29sIGludGVsX2Jpb3NfaXNfcG9ydF9kcF9kdWFsX21vZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkJCSAgICAgZW51bSBwb3J0 IHBvcnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+PiAtCWludCBpOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+PiAg Cj4+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7 Cj4+IC0JCWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+PiAtCj4+IC0JCWlm IChjaGlsZF9kZXZfaXNfZHBfZHVhbF9tb2RlKGNoaWxkLCBwb3J0KSkKPj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ ICsJCWlmIChjaGlsZF9kZXZfaXNfZHBfZHVhbF9tb2RlKCZjaGlsZC0+Y29uZmlnLCBwb3J0KSkK Pj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMjE1OSwxNyArMjE0OCwxNyBA QCBib29sIGludGVsX2Jpb3NfaXNfcG9ydF9kcF9kdWFsX21vZGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+PiAgYm9vbCBpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJCSAgICAgICBlbnVtIHBvcnQgKnBv cnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxkOwo+ PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7Cj4+ICsJY29uc3Qg c3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAJdTggZHZvX3BvcnQ7Cj4+IC0JaW50IGk7 Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBp KyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9k ZSkgewo+PiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPj4gIAo+PiAtCQlpZiAoIShjaGls ZC0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4+ICsJCWlmICghKGNv bmZpZy0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4+ICAJCQljb250 aW51ZTsKPj4gIAo+PiAtCQlkdm9fcG9ydCA9IGNoaWxkLT5kdm9fcG9ydDsKPj4gKwkJZHZvX3Bv cnQgPSBjb25maWctPmR2b19wb3J0Owo+PiAgCj4+ICAJCWlmIChkdm9fcG9ydCA9PSBEVk9fUE9S VF9NSVBJQSB8fAo+PiAgCQkgICAgKGR2b19wb3J0ID09IERWT19QT1JUX01JUElCICYmIElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpIHx8Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRl eCA3ZTBmNjdiYWJlMjAuLmFlODVmZmEwODY2NSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4+IEBAIC03MjQsOCArNzI0LDcgQEAgc3RydWN0IGludGVsX3ZidF9kYXRhIHsKPj4gIAo+ PiAgCWludCBjcnRfZGRjX3BpbjsKPj4gIAo+PiAtCWludCBjaGlsZF9kZXZfbnVtOwo+PiAtCXN0 cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZF9kZXY7Cj4+ICsJc3RydWN0IGxpc3RfaGVh ZCBjaGlsZF9kZXZpY2VzOwo+PiAgCj4+ICAJc3RydWN0IGRkaV92YnRfcG9ydF9pbmZvIGRkaV9w b3J0X2luZm9bSTkxNV9NQVhfUE9SVFNdOwo+PiAgCXN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5n IHNkdm9fbWFwcGluZ3NbMl07Cj4+IC0tIAo+PiAyLjIwLjEKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19f 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=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 D9F95C5DF60 for ; Thu, 7 Nov 2019 08:22:18 +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 B613D21D7E for ; Thu, 7 Nov 2019 08:22:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B613D21D7E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 582316EEE2; Thu, 7 Nov 2019 08:22:18 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 397956EEE2 for ; Thu, 7 Nov 2019 08:22:17 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2019 00:22:16 -0800 X-IronPort-AV: E=Sophos;i="5.68,277,1569308400"; d="scan'208";a="196485201" Received: from mgherza1-mobl2.ger.corp.intel.com (HELO localhost) ([10.252.55.226]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2019 00:22:14 -0800 From: Jani Nikula To: Ville =?utf-8?B?U3lyasOkbMOk?= In-Reply-To: <20191106203752.GX1208@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20191106164531.7079-1-jani.nikula@intel.com> <20191106203752.GX1208@intel.com> Date: Thu, 07 Nov 2019 10:22:10 +0200 Message-ID: <87d0e42j0t.fsf@intel.com> MIME-Version: 1.0 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: <20191107082210.r-ch_q4Z1_S_HoNXoFYL0wUNQFyKCFgy3REo77kdkEY@z> T24gV2VkLCAwNiBOb3YgMjAxOSwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gV2VkLCBOb3YgMDYsIDIwMTkgYXQgMDY6NDU6MzFQTSAr MDIwMCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4+IFVzaW5nIHRoZSBhcnJheSBpcyBnZXR0aW5nIGNs dW1zeS4gTWFrZSB0aGluZ3MgYSBiaXQgbW9yZSBkeW5hbWljLgo+PiAKPj4gSW4gY29kZSwgc3Rh cnQgbWlncmF0aW5nIHRvd2FyZHMgY2FsbGluZyB0aGUgbmV3IHN0cnVjdCBjaGlsZF9kZXZpY2UK Pj4gImNoaWxkIiBhbmQgdGhlIFZCVC1vcmlnaW5hdGluZyBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2Nv bmZpZyAiY29uZmlnIi4KPj4gCj4+IFJlbW92ZSBlYXJseSByZXR1cm5zIG9uIG5vdCBoYXZpbmcg Y2hpbGQgZGV2aWNlcyB3aGVuIHRoZSBlbmQgcmVzdWx0Cj4+IGFmdGVyICJpdGVyYXRpbmciIHRo ZSBlbXB0eSBsaXN0IHdvdWxkIGJlIHRoZSBzYW1lLgo+PiAKPj4gQ2M6IFZpbGxlIFN5cmphbGEg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+PiAKPj4gLS0tCj4+IAo+PiBUaGUgZW5kIGdv YWw6IGFsbG93IG1vcmUgbWV0YSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCB0byB0aGUgbmV3Cj4+ IGNoaWxkX2RldmljZSBzdHJ1Y3QsIGluZGVwZW5kZW50IG9mIERESSBwb3J0IGluZm8gYmVpbmcg dXNlZCBvciBub3Qgb24KPj4gdGhlIHBsYXRmb3JtLCBhbmQgZXZlbnR1YWxseSBtaWdyYXRlIGRk aV9wb3J0X2luZm8gdG8gaXQgYXMgd2VsbCwKPj4gdW5pZnlpbmcgdGhlIHN0dWZmIGFjcm9zcyBw bGF0Zm9ybXMuCj4+IAo+PiBDdXJyZW50bHkgaXQncyBub3QgZWFzaWx5IHBvc3NpYmxlIHRvIGFz c29jaWF0ZSBmb3IgZXhhbXBsZSB0aGUgRFNDCj4+IGNvbXByZXNzaW9uIGRhdGEgdG8gdGhlIGNo aWxkIGRldmljZSBmb3Igbm9uLURESSBwbGF0Zm9ybXMgb3IgZm9yIERTSQo+PiBvdXRwdXRzLiBU aGlzIGxldHMgdXMgYWRkIHRoZSBjb21wcmVzc2lvbiBkYXRhIChwb2ludGVyKSB0byBzdHJ1Y3QK Pj4gY2hpbGRfZGV2aWNlLgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfYmlvcy5jIHwgMjAzICsrKysrKysrKystLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgIHwgICAzICstCj4+ICAyIGZpbGVzIGNoYW5n ZWQsIDk3IGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jpb3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYmlvcy5jCj4+IGluZGV4IGEwM2Y1NmI3YjRlZi4uMDI1 MDc0ODYyYWIwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Jpb3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jp b3MuYwo+PiBAQCAtNTgsNiArNTgsMTIgQEAKPj4gICAqIHRoYXQuCj4+ICAgKi8KPj4gIAo+PiAr LyogV3JhcHBlciBmb3IgVkJUIGNoaWxkIGRldmljZSBjb25maWcgKi8KPj4gK3N0cnVjdCBjaGls ZF9kZXZpY2Ugewo+PiArCXN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnIGNvbmZpZzsKPj4gKwlz dHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4KPiBUaGUgd3JhcHBlciBpcyBhIGJpdCB1bmZvcnR1bmF0 ZS4gSSBkb24ndCBzdXBwb3NlIHdlIGNvdWxkIGp1c3Qgc2hvdmUKPiB0aGUgbGlzdCBoZWFkIGlu dG8gdGhlIGV4aXN0aW5nIHN0cnVjdCBhbmQgYWRqdXN0IHdoYXQgbmVlZHMgYWRqdXN0aW5nPwoK VGhlIGV4aXN0aW5nIHN0cnVjdCBpcyB1c2VkIGZvciBzZXJpYWxpemF0aW9uIGFuZCB0aGUgc2l6 ZSBpcyBjaGVja2VkCmFnYWluc3Qgd2hhdCdzIGluIHZidCBldGMuIEkgbWlnaHQgYWxzbyBhZGQg c3R1ZmYgaW4gdGhlIHdyYXBwZXIgc3RydWN0LAphdCBsZWFzdCBpbnRlcm1lZGlhdGVseSwgc28g aXQncyBraW5kIG9mIHVzZWZ1bC4gSSBkb24ndCByZWFsbHkgdGhpbmsKdGhlIHdyYXBwZXIgaXMg YWxsIHRoYXQgYmFkLgoKPgo+PiArfTsKPj4gKwo+PiAgI2RlZmluZQlTTEFWRV9BRERSMQkweDcw Cj4+ICAjZGVmaW5lCVNMQVZFX0FERFIyCTB4NzIKPj4gIAo+PiBAQCAtNDQ5LDggKzQ1NSw5IEBA IHN0YXRpYyB2b2lkCj4+ICBwYXJzZV9zZHZvX2RldmljZV9tYXBwaW5nKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICB7Cj4+ICAJc3RydWN0IHNk dm9fZGV2aWNlX21hcHBpbmcgKm1hcHBpbmc7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2Rldmlj ZV9jb25maWcgKmNoaWxkOwo+PiAtCWludCBpLCBjb3VudCA9IDA7Cj4+ICsJY29uc3Qgc3RydWN0 IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPgo+IFRoaXMgdGhpbmcgY291bGQgYXQgbGVh c3QgY2FuIGxpdmUgaW5zaWRlIHRoZSBsb29wLiBUaG91Z2ggdGhlIHJlbmFtZSBpcwo+IGFsc28g YSBiaXQgdW5mb3J0dW5hdGUsIGxlYWRpbmcgdG8gYSBuZWVkbGVzc2x5IGxhcmdlIGRpZmYuIEF2 b2lkaW5nIHRoZQo+IHdyYXBwZXIgc3RydWN0IHdvdWxkIGFsc28gYXZvaWQgdGhhdC4gSSBndWVz cyBhbm90aGVyIG9wdGlvbiB3b3VsZAo+IGJlIHRvIHNlbGVjdCBhIGRpZmZlcmVudCBuYW1lIGZv ciB0aGUgd3JhcHBlciBwb2ludGVyIGhlcmUgYW5kIGtlZXAgdGhlCj4gb3JpZ2luYWwgbmFtZSBm b3IgdGhlIGFjdHVhbCB0aGluZy4KClRoZSBtYWluIHByb2JsZW0gd2l0aCBhdm9pZGluZyB0aGUg cmVuYW1lIGlzIHRvIGNvbWUgdXAgd2l0aCBhIGJldHRlcgpuYW1lIGZvciB0aGUgd3JhcHBlciBz dHJ1Y3R1cmUuIDopIENoaWxkIGFuZCBjb25maWcgc2VlbWVkIGFwdCwgYnV0IEkgZG8KdW5kZXJz dGFuZCB0aGUgZG93bnNpZGVzLiBJJ2QganVzdCBsaWtlIHRvIGhhdmUgbmFtZXMgdGhhdCB3ZSBj YW4gdXNlCnRocm91Z291dC4gTWF5YmUgd2UgY2FuIHN0aWNrIHRvIGNoaWxkIGZvciBzdHJ1Y3Qg Y2hpbGRfZGV2aWNlX2NvbmZpZywKYnV0IHdoYXQgZG8gd2UgY2FsbCB0aGUgd2hvbGUgd3JhcHBl ciBzdHJ1Y3QgYW5kIGxvY2FsIHZhcnM/ClN1Z2dlc3Rpb25zPwoKCkJSLApKYW5pLgoKCj4KPj4g Kwljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPj4gKwlpbnQgY291bnQgPSAwOwo+ PiAgCj4+ICAJLyoKPj4gIAkgKiBPbmx5IHBhcnNlIFNEVk8gbWFwcGluZ3Mgb24gZ2VucyB0aGF0 IGNvdWxkIGhhdmUgU0RWTy4gVGhpcyBpc24ndAo+PiBAQCAtNDYxLDM1ICs0NjgsMzUgQEAgcGFy c2Vfc2R2b19kZXZpY2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHU4IGJkYl92ZXJzaW9uKQo+PiAgCQlyZXR1cm47Cj4+ICAJfQo+PiAgCj4+IC0JZm9yIChpID0g MCwgY291bnQgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4g LQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiAr CQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPj4gIAo+PiAtCQlpZiAoY2hpbGQtPnNsYXZlX2Fk ZHIgIT0gU0xBVkVfQUREUjEgJiYKPj4gLQkJICAgIGNoaWxkLT5zbGF2ZV9hZGRyICE9IFNMQVZF X0FERFIyKSB7Cj4+ICsJCWlmIChjb25maWctPnNsYXZlX2FkZHIgIT0gU0xBVkVfQUREUjEgJiYK Pj4gKwkJICAgIGNvbmZpZy0+c2xhdmVfYWRkciAhPSBTTEFWRV9BRERSMikgewo+PiAgCQkJLyoK Pj4gIAkJCSAqIElmIHRoZSBzbGF2ZSBhZGRyZXNzIGlzIG5laXRoZXIgMHg3MCBub3IgMHg3MiwK Pj4gIAkJCSAqIGl0IGlzIG5vdCBhIFNEVk8gZGV2aWNlLiBTa2lwIGl0Lgo+PiAgCQkJICovCj4+ ICAJCQljb250aW51ZTsKPj4gIAkJfQo+PiAtCQlpZiAoY2hpbGQtPmR2b19wb3J0ICE9IERFVklD RV9QT1JUX0RWT0IgJiYKPj4gLQkJICAgIGNoaWxkLT5kdm9fcG9ydCAhPSBERVZJQ0VfUE9SVF9E Vk9DKSB7Cj4+ICsJCWlmIChjb25maWctPmR2b19wb3J0ICE9IERFVklDRV9QT1JUX0RWT0IgJiYK Pj4gKwkJICAgIGNvbmZpZy0+ZHZvX3BvcnQgIT0gREVWSUNFX1BPUlRfRFZPQykgewo+PiAgCQkJ Lyogc2tpcCB0aGUgaW5jb3JyZWN0IFNEVk8gcG9ydCAqLwo+PiAgCQkJRFJNX0RFQlVHX0tNUygi SW5jb3JyZWN0IFNEVk8gcG9ydC4gU2tpcCBpdFxuIik7Cj4+ICAJCQljb250aW51ZTsKPj4gIAkJ fQo+PiAgCQlEUk1fREVCVUdfS01TKCJ0aGUgU0RWTyBkZXZpY2Ugd2l0aCBzbGF2ZSBhZGRyICUy eCBpcyBmb3VuZCBvbiIKPj4gIAkJCSAgICAgICIgJXMgcG9ydFxuIiwKPj4gLQkJCSAgICAgIGNo aWxkLT5zbGF2ZV9hZGRyLAo+PiAtCQkJICAgICAgKGNoaWxkLT5kdm9fcG9ydCA9PSBERVZJQ0Vf UE9SVF9EVk9CKSA/Cj4+ICsJCQkgICAgICBjb25maWctPnNsYXZlX2FkZHIsCj4+ICsJCQkgICAg ICAoY29uZmlnLT5kdm9fcG9ydCA9PSBERVZJQ0VfUE9SVF9EVk9CKSA/Cj4+ICAJCQkgICAgICAi U0RWT0IiIDogIlNEVk9DIik7Cj4+IC0JCW1hcHBpbmcgPSAmZGV2X3ByaXYtPnZidC5zZHZvX21h cHBpbmdzW2NoaWxkLT5kdm9fcG9ydCAtIDFdOwo+PiArCQltYXBwaW5nID0gJmRldl9wcml2LT52 YnQuc2R2b19tYXBwaW5nc1tjb25maWctPmR2b19wb3J0IC0gMV07Cj4+ICAJCWlmICghbWFwcGlu Zy0+aW5pdGlhbGl6ZWQpIHsKPj4gLQkJCW1hcHBpbmctPmR2b19wb3J0ID0gY2hpbGQtPmR2b19w b3J0Owo+PiAtCQkJbWFwcGluZy0+c2xhdmVfYWRkciA9IGNoaWxkLT5zbGF2ZV9hZGRyOwo+PiAt CQkJbWFwcGluZy0+ZHZvX3dpcmluZyA9IGNoaWxkLT5kdm9fd2lyaW5nOwo+PiAtCQkJbWFwcGlu Zy0+ZGRjX3BpbiA9IGNoaWxkLT5kZGNfcGluOwo+PiAtCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNo aWxkLT5pMmNfcGluOwo+PiArCQkJbWFwcGluZy0+ZHZvX3BvcnQgPSBjb25maWctPmR2b19wb3J0 Owo+PiArCQkJbWFwcGluZy0+c2xhdmVfYWRkciA9IGNvbmZpZy0+c2xhdmVfYWRkcjsKPj4gKwkJ CW1hcHBpbmctPmR2b193aXJpbmcgPSBjb25maWctPmR2b193aXJpbmc7Cj4+ICsJCQltYXBwaW5n LT5kZGNfcGluID0gY29uZmlnLT5kZGNfcGluOwo+PiArCQkJbWFwcGluZy0+aTJjX3BpbiA9IGNv bmZpZy0+aTJjX3BpbjsKPj4gIAkJCW1hcHBpbmctPmluaXRpYWxpemVkID0gMTsKPj4gIAkJCURS TV9ERUJVR19LTVMoIlNEVk8gZGV2aWNlOiBkdm89JXgsIGFkZHI9JXgsIHdpcmluZz0lZCwgZGRj X3Bpbj0lZCwgaTJjX3Bpbj0lZFxuIiwKPj4gIAkJCQkgICAgICBtYXBwaW5nLT5kdm9fcG9ydCwK Pj4gQEAgLTUwMSw3ICs1MDgsNyBAQCBwYXJzZV9zZHZvX2RldmljZV9tYXBwaW5nKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICAJCQlEUk1fREVC VUdfS01TKCJNYXliZSBvbmUgU0RWTyBwb3J0IGlzIHNoYXJlZCBieSAiCj4+ICAJCQkJCSAidHdv IFNEVk8gZGV2aWNlLlxuIik7Cj4+ICAJCX0KPj4gLQkJaWYgKGNoaWxkLT5zbGF2ZTJfYWRkcikg ewo+PiArCQlpZiAoY29uZmlnLT5zbGF2ZTJfYWRkcikgewo+PiAgCQkJLyogTWF5YmUgdGhpcyBp cyBhIFNEVk8gZGV2aWNlIHdpdGggbXVsdGlwbGUgaW5wdXRzICovCj4+ICAJCQkvKiBBbmQgdGhl IG1hcHBpbmcgaW5mbyBpcyBub3QgYWRkZWQgKi8KPj4gIAkJCURSTV9ERUJVR19LTVMoInRoZXJl IGV4aXN0cyB0aGUgc2xhdmUyX2FkZHIuIE1heWJlIHRoaXMiCj4+IEBAIC0xNTcxLDggKzE1Nzgs NyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9kZGlfcG9ydChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4+ICAKPj4gIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGJkYl92ZXJzaW9uKQo+PiAgewo+PiAtCWNvbnN0 IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPj4gLQlpbnQgaTsKPj4gKwljb25z dCBzdHJ1Y3QgY2hpbGRfZGV2aWNlICpjaGlsZDsKPj4gIAo+PiAgCWlmICghSEFTX0RESShkZXZf cHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlyZXR1cm47Cj4+IEBAIC0x NTgwLDExICsxNTg2LDggQEAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYmRiX3ZlcnNpb24pCj4+ICAJaWYgKGJkYl92ZXJz aW9uIDwgMTU1KQo+PiAgCQlyZXR1cm47Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0 LmNoaWxkX2RldiArIGk7Cj4+IC0KPj4gLQkJcGFyc2VfZGRpX3BvcnQoZGV2X3ByaXYsIGNoaWxk LCBiZGJfdmVyc2lvbik7Cj4+IC0JfQo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZk ZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpCj4+ICsJCXBhcnNlX2RkaV9wb3J0KGRl dl9wcml2LCAmY2hpbGQtPmNvbmZpZywgYmRiX3ZlcnNpb24pOwo+PiAgfQo+PiAgCj4+ICBzdGF0 aWMgdm9pZAo+PiBAQCAtMTU5Miw4ICsxNTk1LDkgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9u cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCQkgIGNvbnN0IHN0cnVj dCBiZGJfaGVhZGVyICpiZGIpCj4+ICB7Cj4+ICAJY29uc3Qgc3RydWN0IGJkYl9nZW5lcmFsX2Rl ZmluaXRpb25zICpkZWZzOwo+PiAtCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpj aGlsZDsKPj4gLQlpbnQgaSwgY2hpbGRfZGV2aWNlX251bSwgY291bnQ7Cj4+ICsJY29uc3Qgc3Ry dWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPj4gKwlzdHJ1Y3QgY2hpbGRfZGV2aWNl ICpjaGlsZDsKPj4gKwlpbnQgaSwgY2hpbGRfZGV2aWNlX251bTsKPj4gIAl1OCBleHBlY3RlZF9z aXplOwo+PiAgCXUxNiBibG9ja19zaXplOwo+PiAgCWludCBidXNfcGluOwo+PiBAQCAtMTYyOSw4 ICsxNjMzLDggQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAJfSBlbHNlIGlmIChiZGItPnZlcnNpb24gPD0gMjI5KSB7Cj4+ ICAJCWV4cGVjdGVkX3NpemUgPSAzOTsKPj4gIAl9IGVsc2Ugewo+PiAtCQlleHBlY3RlZF9zaXpl ID0gc2l6ZW9mKCpjaGlsZCk7Cj4+IC0JCUJVSUxEX0JVR19PTihzaXplb2YoKmNoaWxkKSA8IDM5 KTsKPj4gKwkJZXhwZWN0ZWRfc2l6ZSA9IHNpemVvZigqY29uZmlnKTsKPj4gKwkJQlVJTERfQlVH X09OKHNpemVvZigqY29uZmlnKSA8IDM5KTsKPj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiRXhwZWN0 ZWQgY2hpbGQgZGV2aWNlIGNvbmZpZyBzaXplIGZvciBWQlQgdmVyc2lvbiAldSBub3Qga25vd247 IGFzc3VtaW5nICV1XG4iLAo+PiAgCQkJCSBiZGItPnZlcnNpb24sIGV4cGVjdGVkX3NpemUpOwo+ PiAgCX0KPj4gQEAgLTE2NDksNDMgKzE2NTMsMzAgQEAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9u cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAKPj4gIAkvKiBnZXQgdGhl IG51bWJlciBvZiBjaGlsZCBkZXZpY2UgKi8KPj4gIAljaGlsZF9kZXZpY2VfbnVtID0gKGJsb2Nr X3NpemUgLSBzaXplb2YoKmRlZnMpKSAvIGRlZnMtPmNoaWxkX2Rldl9zaXplOwo+PiAtCWNvdW50 ID0gMDsKPj4gLQkvKiBnZXQgdGhlIG51bWJlciBvZiBjaGlsZCBkZXZpY2UgdGhhdCBpcyBwcmVz ZW50ICovCj4+IC0JZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+PiAt CQljaGlsZCA9IGNoaWxkX2RldmljZV9wdHIoZGVmcywgaSk7Cj4+IC0JCWlmICghY2hpbGQtPmRl dmljZV90eXBlKQo+PiAtCQkJY29udGludWU7Cj4+IC0JCWNvdW50Kys7Cj4+IC0JfQo+PiAtCWlm ICghY291bnQpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygibm8gY2hpbGQgZGV2IGlzIHBhcnNlZCBm cm9tIFZCVFxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0JZGV2X3ByaXYtPnZidC5jaGls ZF9kZXYgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoKmNoaWxkKSwgR0ZQX0tFUk5FTCk7Cj4+IC0J aWYgKCFkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldikgewo+PiAtCQlEUk1fREVCVUdfS01TKCJObyBt ZW1vcnkgc3BhY2UgZm9yIGNoaWxkIGRldmljZVxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+ ICAKPj4gLQlkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0gPSBjb3VudDsKPj4gLQljb3VudCA9 IDA7Cj4+ICAJZm9yIChpID0gMDsgaSA8IGNoaWxkX2RldmljZV9udW07IGkrKykgewo+PiAtCQlj aGlsZCA9IGNoaWxkX2RldmljZV9wdHIoZGVmcywgaSk7Cj4+IC0JCWlmICghY2hpbGQtPmRldmlj ZV90eXBlKQo+PiArCQljb25maWcgPSBjaGlsZF9kZXZpY2VfcHRyKGRlZnMsIGkpOwo+PiArCQlp ZiAoIWNvbmZpZy0+ZGV2aWNlX3R5cGUpCj4+ICAJCQljb250aW51ZTsKPj4gIAo+PiAgCQlEUk1f REVCVUdfS01TKCJGb3VuZCBWQlQgY2hpbGQgZGV2aWNlIHdpdGggdHlwZSAweCV4XG4iLAo+PiAt CQkJICAgICAgY2hpbGQtPmRldmljZV90eXBlKTsKPj4gKwkJCSAgICAgIGNvbmZpZy0+ZGV2aWNl X3R5cGUpOwo+PiArCj4+ICsJCWNoaWxkID0ga21hbGxvYyhzaXplb2YoKmNoaWxkKSwgR0ZQX0tF Uk5FTCk7Cj4+ICAKPj4gIAkJLyoKPj4gIAkJICogQ29weSBhcyBtdWNoIGFzIHdlIGtub3cgKHNp emVvZikgYW5kIGlzIGF2YWlsYWJsZQo+PiAtCQkgKiAoY2hpbGRfZGV2X3NpemUpIG9mIHRoZSBj aGlsZCBkZXZpY2UuIEFjY2Vzc2luZyB0aGUgZGF0YSBtdXN0Cj4+IC0JCSAqIGRlcGVuZCBvbiBW QlQgdmVyc2lvbi4KPj4gKwkJICogKGNoaWxkX2Rldl9zaXplKSBvZiB0aGUgY2hpbGQgZGV2aWNl IGNvbmZpZy4gQWNjZXNzaW5nIHRoZQo+PiArCQkgKiBkYXRhIG11c3QgZGVwZW5kIG9uIFZCVCB2 ZXJzaW9uLgo+PiAgCQkgKi8KPj4gLQkJbWVtY3B5KGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsg Y291bnQsIGNoaWxkLAo+PiAtCQkgICAgICAgbWluX3Qoc2l6ZV90LCBkZWZzLT5jaGlsZF9kZXZf c2l6ZSwgc2l6ZW9mKCpjaGlsZCkpKTsKPj4gLQkJY291bnQrKzsKPj4gKwkJbWVtY3B5KCZjaGls ZC0+Y29uZmlnLCBjb25maWcsCj4+ICsJCSAgICAgICBtaW5fdChzaXplX3QsIGRlZnMtPmNoaWxk X2Rldl9zaXplLCBzaXplb2YoKmNvbmZpZykpKTsKPj4gKwo+PiArCQlsaXN0X2FkZCgmY2hpbGQt Pm5vZGUsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpOwo+PiAgCX0KPj4gKwo+PiArCWlm IChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+PiArCQlEUk1fREVC VUdfS01TKCJubyBjaGlsZCBkZXYgaXMgcGFyc2VkIGZyb20gVkJUXG4iKTsKPj4gIH0KPj4gIAo+ PiAgLyogQ29tbW9uIGRlZmF1bHRzIHdoaWNoIG1heSBiZSBvdmVycmlkZGVuIGJ5IFZCVC4gKi8K Pj4gQEAgLTE4NDksNiArMTg0MCw4IEBAIHZvaWQgaW50ZWxfYmlvc19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAkJcmV0dXJuOwo+PiAgCX0KPj4gIAo+PiArCUlO SVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpOwo+PiArCj4+ICAJaW5p dF92YnRfZGVmYXVsdHMoZGV2X3ByaXYpOwo+PiAgCj4+ICAJLyogSWYgdGhlIE9wUmVnaW9uIGRv ZXMgbm90IGhhdmUgVkJULCBsb29rIGluIFBDSSBST00uICovCj4+IEBAIC0xOTAzLDkgKzE4OTYs MTMgQEAgdm9pZCBpbnRlbF9iaW9zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiAgICovCj4+ICB2b2lkIGludGVsX2Jpb3NfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICB7Cj4+IC0Ja2ZyZWUoZGV2X3ByaXYtPnZidC5j aGlsZF9kZXYpOwo+PiAtCWRldl9wcml2LT52YnQuY2hpbGRfZGV2ID0gTlVMTDsKPj4gLQlkZXZf cHJpdi0+dmJ0LmNoaWxkX2Rldl9udW0gPSAwOwo+PiArCXN0cnVjdCBjaGlsZF9kZXZpY2UgKmNo aWxkLCAqbjsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjaGlsZCwgbiwgJmRl dl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiArCQlsaXN0X2RlbCgmY2hpbGQt Pm5vZGUpOwo+PiArCQlrZnJlZShjaGlsZCk7Cj4+ICsJfQo+PiArCj4+ICAJa2ZyZWUoZGV2X3By aXYtPnZidC5zZHZvX2x2ZHNfdmJ0X21vZGUpOwo+PiAgCWRldl9wcml2LT52YnQuc2R2b19sdmRz X3ZidF9tb2RlID0gTlVMTDsKPj4gIAlrZnJlZShkZXZfcHJpdi0+dmJ0LmxmcF9sdmRzX3ZidF9t b2RlKTsKPj4gQEAgLTE5MjksMjEgKzE5MjYsMjIgQEAgdm9pZCBpbnRlbF9iaW9zX2RyaXZlcl9y ZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgICovCj4+ICBib29s IGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxkOwo+ PiAtCWludCBpOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7 Cj4+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAKPj4gIAlpZiAoIWRl dl9wcml2LT52YnQuaW50X3R2X3N1cHBvcnQpCj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiAt CWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtKQo+PiArCWlmIChsaXN0X2VtcHR5KCZk ZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMpKQo+PiAgCQlyZXR1cm4gdHJ1ZTsKPj4gIAo+PiAt CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+PiAt CQljaGlsZCA9IGRldl9wcml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ICsJ CWNvbmZpZyA9ICZjaGlsZC0+Y29uZmlnOwo+PiArCj4+ICAJCS8qCj4+ICAJCSAqIElmIHRoZSBk ZXZpY2UgdHlwZSBpcyBub3QgVFYsIGNvbnRpbnVlLgo+PiAgCQkgKi8KPj4gLQkJc3dpdGNoIChj aGlsZC0+ZGV2aWNlX3R5cGUpIHsKPj4gKwkJc3dpdGNoIChjb25maWctPmRldmljZV90eXBlKSB7 Cj4+ICAJCWNhc2UgREVWSUNFX1RZUEVfSU5UX1RWOgo+PiAgCQljYXNlIERFVklDRV9UWVBFX1RW Ogo+PiAgCQljYXNlIERFVklDRV9UWVBFX1RWX1NWSURFT19DT01QT1NJVEU6Cj4+IEBAIC0xOTU0 LDcgKzE5NTIsNyBAQCBib29sIGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJCS8qIE9ubHkgd2hlbiB0aGUgYWRkaW5fb2Zmc2V0 IGlzIG5vbi16ZXJvLCBpdCBpcyByZWdhcmRlZAo+PiAgCQkgKiBhcyBwcmVzZW50Lgo+PiAgCQkg Ki8KPj4gLQkJaWYgKGNoaWxkLT5hZGRpbl9vZmZzZXQpCj4+ICsJCWlmIChjb25maWctPmFkZGlu X29mZnNldCkKPj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMTk3MSwzMiAr MTk2OSwzMiBAQCBib29sIGludGVsX2Jpb3NfaXNfdHZfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgKi8KPj4gIGJvb2wgaW50ZWxfYmlvc19pc19sdmRzX3By ZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikKPj4g IHsKPj4gLQljb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyAqY2hpbGQ7Cj4+IC0JaW50 IGk7Cj4+ICsJY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICsJY29uc3Qgc3Ry dWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNvbmZpZzsKPj4gIAo+PiAtCWlmICghZGV2X3ByaXYt PnZidC5jaGlsZF9kZXZfbnVtKQo+PiArCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+dmJ0LmNo aWxkX2RldmljZXMpKQo+PiAgCQlyZXR1cm4gdHJ1ZTsKPj4gIAo+PiAtCWZvciAoaSA9IDA7IGkg PCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+PiAtCQljaGlsZCA9IGRldl9w cml2LT52YnQuY2hpbGRfZGV2ICsgaTsKPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoaWxkLCAm ZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ICsJCWNvbmZpZyA9ICZjaGls ZC0+Y29uZmlnOwo+PiAgCj4+ICAJCS8qIElmIHRoZSBkZXZpY2UgdHlwZSBpcyBub3QgTEZQLCBj b250aW51ZS4KPj4gIAkJICogV2UgaGF2ZSB0byBjaGVjayBib3RoIHRoZSBuZXcgaWRlbnRpZmll cnMgYXMgd2VsbCBhcyB0aGUKPj4gIAkJICogb2xkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc29t ZSBCSU9TZXMuCj4+ICAJCSAqLwo+PiAtCQlpZiAoY2hpbGQtPmRldmljZV90eXBlICE9IERFVklD RV9UWVBFX0lOVF9MRlAgJiYKPj4gLQkJICAgIGNoaWxkLT5kZXZpY2VfdHlwZSAhPSBERVZJQ0Vf VFlQRV9MRlApCj4+ICsJCWlmIChjb25maWctPmRldmljZV90eXBlICE9IERFVklDRV9UWVBFX0lO VF9MRlAgJiYKPj4gKwkJICAgIGNvbmZpZy0+ZGV2aWNlX3R5cGUgIT0gREVWSUNFX1RZUEVfTEZQ KQo+PiAgCQkJY29udGludWU7Cj4+ICAKPj4gLQkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3Bp bihkZXZfcHJpdiwgY2hpbGQtPmkyY19waW4pKQo+PiAtCQkJKmkyY19waW4gPSBjaGlsZC0+aTJj X3BpbjsKPj4gKwkJaWYgKGludGVsX2dtYnVzX2lzX3ZhbGlkX3BpbihkZXZfcHJpdiwgY29uZmln LT5pMmNfcGluKSkKPj4gKwkJCSppMmNfcGluID0gY29uZmlnLT5pMmNfcGluOwo+PiAgCj4+ICAJ CS8qIEhvd2V2ZXIsIHdlIGNhbm5vdCB0cnVzdCB0aGUgQklPUyB3cml0ZXJzIHRvIHBvcHVsYXRl Cj4+ICAJCSAqIHRoZSBWQlQgY29ycmVjdGx5LiAgU2luY2UgTFZEUyByZXF1aXJlcyBhZGRpdGlv bmFsCj4+ICAJCSAqIGluZm9ybWF0aW9uIGZyb20gQUlNIGJsb2NrcywgYSBub24temVybyBhZGRp biBvZmZzZXQgaXMKPj4gIAkJICogYSBnb29kIGluZGljYXRvciB0aGF0IHRoZSBMVkRTIGlzIGFj dHVhbGx5IHByZXNlbnQuCj4+ICAJCSAqLwo+PiAtCQlpZiAoY2hpbGQtPmFkZGluX29mZnNldCkK Pj4gKwkJaWYgKGNvbmZpZy0+YWRkaW5fb2Zmc2V0KQo+PiAgCQkJcmV0dXJuIHRydWU7Cj4+ICAK Pj4gIAkJLyogQnV0IGV2ZW4gdGhlbiBzb21lIEJJT1Mgd3JpdGVycyBwZXJmb3JtIHNvbWUgYmxh Y2sgbWFnaWMKPj4gQEAgLTIwMjAsNyArMjAxOCw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc19sdmRz X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCAqaTJjX3BpbikK Pj4gICAqLwo+PiAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+PiAgewo+PiAtCWNvbnN0IHN0 cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZDsKPj4gKwljb25zdCBzdHJ1Y3QgY2hpbGRf ZGV2aWNlX2NvbmZpZyAqY29uZmlnOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNo aWxkOwo+PiAgCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+PiAgCQl1MTYgZHAsIGhkbWk7Cj4+ICAJ fSBwb3J0X21hcHBpbmdbXSA9IHsKPj4gQEAgLTIwMzAsNyArMjAyOSw2IEBAIGJvb2wgaW50ZWxf Ymlvc19pc19wb3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBvcnQgcG9yCj4+ICAJCVtQT1JUX0VdID0geyBEVk9fUE9SVF9EUEUsIERWT19QT1JUX0hE TUlFLCB9LAo+PiAgCQlbUE9SVF9GXSA9IHsgRFZPX1BPUlRfRFBGLCBEVk9fUE9SVF9IRE1JRiwg fSwKPj4gIAl9Owo+PiAtCWludCBpOwo+PiAgCj4+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7 Cj4+ICAJCWNvbnN0IHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyAqcG9ydF9pbmZvID0KPj4gQEAg LTIwNDUsMTYgKzIwNDMsMTMgQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPj4gIAlpZiAoV0FS Tl9PTihwb3J0ID09IFBPUlRfQSkgfHwgcG9ydCA+PSBBUlJBWV9TSVpFKHBvcnRfbWFwcGluZykp Cj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiAtCWlmICghZGV2X3ByaXYtPnZidC5jaGlsZF9k ZXZfbnVtKQo+PiAtCQlyZXR1cm4gZmFsc2U7Cj4+IC0KPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2 X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+ dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjaGlsZCwgJmRldl9w cml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9kZSkgewo+PiArCQljb25maWcgPSAmY2hpbGQtPmNv bmZpZzsKPj4gIAo+PiAtCQlpZiAoKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9y dF0uZHAgfHwKPj4gLQkJICAgICBjaGlsZC0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRd LmhkbWkpICYmCj4+IC0JCSAgICAoY2hpbGQtPmRldmljZV90eXBlICYgKERFVklDRV9UWVBFX1RN RFNfRFZJX1NJR05BTElORyB8Cj4+IC0JCQkJCSAgIERFVklDRV9UWVBFX0RJU1BMQVlQT1JUX09V VFBVVCkpKQo+PiArCQlpZiAoKGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRd LmRwIHx8Cj4+ICsJCSAgICAgY29uZmlnLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9ydF0u aGRtaSkgJiYKPj4gKwkJICAgIChjb25maWctPmRldmljZV90eXBlICYgKERFVklDRV9UWVBFX1RN RFNfRFZJX1NJR05BTElORyB8Cj4+ICsJCQkJCSAgICBERVZJQ0VfVFlQRV9ESVNQTEFZUE9SVF9P VVRQVVQpKSkKPj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMjA3MCw3ICsy MDY1LDggQEAgYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3IKPj4gICAqLwo+PiAgYm9vbCBpbnRlbF9i aW9zX2lzX3BvcnRfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw b3J0IHBvcnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNo aWxkOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7Cj4+ICsJ Y29uc3Qgc3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAJc3RhdGljIGNvbnN0IHNob3J0 IHBvcnRfbWFwcGluZ1tdID0gewo+PiAgCQlbUE9SVF9CXSA9IERWT19QT1JUX0RQQiwKPj4gIAkJ W1BPUlRfQ10gPSBEVk9fUE9SVF9EUEMsCj4+IEBAIC0yMDc4LDE5ICsyMDc0LDE1IEBAIGJvb2wg aW50ZWxfYmlvc19pc19wb3J0X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGVudW0gcG9ydCBwb3J0KQo+PiAgCQlbUE9SVF9FXSA9IERWT19QT1JUX0RQRSwKPj4gIAkJW1BP UlRfRl0gPSBEVk9fUE9SVF9EUEYsCj4+ICAJfTsKPj4gLQlpbnQgaTsKPj4gIAo+PiAgCWlmIChI QVNfRERJKGRldl9wcml2KSkKPj4gIAkJcmV0dXJuIGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5m b1twb3J0XS5zdXBwb3J0c19lZHA7Cj4+ICAKPj4gLQlpZiAoIWRldl9wcml2LT52YnQuY2hpbGRf ZGV2X251bSkKPj4gLQkJcmV0dXJuIGZhbHNlOwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hp bGQsICZkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldmljZXMsIG5vZGUpIHsKPj4gKwkJY29uZmlnID0g JmNoaWxkLT5jb25maWc7Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5j aGlsZF9kZXZfbnVtOyBpKyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rl diArIGk7Cj4+IC0KPj4gLQkJaWYgKGNoaWxkLT5kdm9fcG9ydCA9PSBwb3J0X21hcHBpbmdbcG9y dF0gJiYKPj4gLQkJICAgIChjaGlsZC0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9lRFBfQklU UykgPT0KPj4gKwkJaWYgKGNvbmZpZy0+ZHZvX3BvcnQgPT0gcG9ydF9tYXBwaW5nW3BvcnRdICYm Cj4+ICsJCSAgICAoY29uZmlnLT5kZXZpY2VfdHlwZSAmIERFVklDRV9UWVBFX2VEUF9CSVRTKSA9 PQo+PiAgCQkgICAgKERFVklDRV9UWVBFX2VEUCAmIERFVklDRV9UWVBFX2VEUF9CSVRTKSkKPj4g IAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gQEAgLTIxMzYsMTMgKzIxMjgsMTAgQEAgc3RhdGlj IGJvb2wgY2hpbGRfZGV2X2lzX2RwX2R1YWxfbW9kZShjb25zdCBzdHJ1Y3QgY2hpbGRfZGV2aWNl X2NvbmZpZyAqY2hpbGQsCj4+ICBib29sIGludGVsX2Jpb3NfaXNfcG9ydF9kcF9kdWFsX21vZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkJCSAgICAgZW51bSBwb3J0 IHBvcnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxk Owo+PiAtCWludCBpOwo+PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2UgKmNoaWxkOwo+PiAg Cj4+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7 Cj4+IC0JCWNoaWxkID0gZGV2X3ByaXYtPnZidC5jaGlsZF9kZXYgKyBpOwo+PiAtCj4+IC0JCWlm IChjaGlsZF9kZXZfaXNfZHBfZHVhbF9tb2RlKGNoaWxkLCBwb3J0KSkKPj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KGNoaWxkLCAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZpY2VzLCBub2RlKSB7Cj4+ ICsJCWlmIChjaGlsZF9kZXZfaXNfZHBfZHVhbF9tb2RlKCZjaGlsZC0+Y29uZmlnLCBwb3J0KSkK Pj4gIAkJCXJldHVybiB0cnVlOwo+PiAgCX0KPj4gIAo+PiBAQCAtMjE1OSwxNyArMjE0OCwxNyBA QCBib29sIGludGVsX2Jpb3NfaXNfcG9ydF9kcF9kdWFsX21vZGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+PiAgYm9vbCBpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJCSAgICAgICBlbnVtIHBvcnQgKnBv cnQpCj4+ICB7Cj4+IC0JY29uc3Qgc3RydWN0IGNoaWxkX2RldmljZV9jb25maWcgKmNoaWxkOwo+ PiArCWNvbnN0IHN0cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjb25maWc7Cj4+ICsJY29uc3Qg c3RydWN0IGNoaWxkX2RldmljZSAqY2hpbGQ7Cj4+ICAJdTggZHZvX3BvcnQ7Cj4+IC0JaW50IGk7 Cj4+ICAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtOyBp KyspIHsKPj4gLQkJY2hpbGQgPSBkZXZfcHJpdi0+dmJ0LmNoaWxkX2RldiArIGk7Cj4+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeShjaGlsZCwgJmRldl9wcml2LT52YnQuY2hpbGRfZGV2aWNlcywgbm9k ZSkgewo+PiArCQljb25maWcgPSAmY2hpbGQtPmNvbmZpZzsKPj4gIAo+PiAtCQlpZiAoIShjaGls ZC0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4+ICsJCWlmICghKGNv bmZpZy0+ZGV2aWNlX3R5cGUgJiBERVZJQ0VfVFlQRV9NSVBJX09VVFBVVCkpCj4+ICAJCQljb250 aW51ZTsKPj4gIAo+PiAtCQlkdm9fcG9ydCA9IGNoaWxkLT5kdm9fcG9ydDsKPj4gKwkJZHZvX3Bv cnQgPSBjb25maWctPmR2b19wb3J0Owo+PiAgCj4+ICAJCWlmIChkdm9fcG9ydCA9PSBEVk9fUE9S VF9NSVBJQSB8fAo+PiAgCQkgICAgKGR2b19wb3J0ID09IERWT19QT1JUX01JUElCICYmIElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpIHx8Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRl eCA3ZTBmNjdiYWJlMjAuLmFlODVmZmEwODY2NSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4+IEBAIC03MjQsOCArNzI0LDcgQEAgc3RydWN0IGludGVsX3ZidF9kYXRhIHsKPj4gIAo+ PiAgCWludCBjcnRfZGRjX3BpbjsKPj4gIAo+PiAtCWludCBjaGlsZF9kZXZfbnVtOwo+PiAtCXN0 cnVjdCBjaGlsZF9kZXZpY2VfY29uZmlnICpjaGlsZF9kZXY7Cj4+ICsJc3RydWN0IGxpc3RfaGVh ZCBjaGlsZF9kZXZpY2VzOwo+PiAgCj4+ICAJc3RydWN0IGRkaV92YnRfcG9ydF9pbmZvIGRkaV9w b3J0X2luZm9bSTkxNV9NQVhfUE9SVFNdOwo+PiAgCXN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5n IHNkdm9fbWFwcGluZ3NbMl07Cj4+IC0tIAo+PiAyLjIwLjEKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==