From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry" Subject: RE: [PATCH] drm/amdgpu: add DP audio support for si dce6 Date: Tue, 21 Feb 2017 03:29:11 +0000 Message-ID: References: <1487585786-29676-1-git-send-email-Xiaojie.Yuan@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1487585786-29676-1-git-send-email-Xiaojie.Yuan-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Yuan, Xiaojie" SGkgWGlhb2ppZSwNCg0KSXQgbG9va3MgbmljZSBiYXNpY2FsbHkuDQpTbyBBY2tlZC1ieTogSnVu d2VpIFpoYW5nIDxKZXJyeS5aaGFuZ0BhbWQuY29tPg0KDQpKdXN0IHNvbWUgcmVnIHByb2dyYW1p bmcgc3R5bGUgYWR2aWNlIGZvciBiZXR0ZXIgdmlldy4NCg0KPiArCXRtcCA9IFJFR19TRVRfRklF TEQoMCwgQVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVYLA0KPiArCQkJQVpBTElBX0VORFBP SU5UX1JFR19JTkRFWCwgcmVnKTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQVpBTElB X0YwX0NPREVDX0VORFBPSU5UX0lOREVYLA0KPiArCQkJQVpBTElBX0VORFBPSU5UX1JFR19XUklU RV9FTiwgMSk7DQoNCldlIGNhbiAifCBBWkFMSUFfRU5EUE9JTlRfUkVHX1dSSVRFX0VOIiBmb3Ig YmV0dGVyIHVuZGVyc3RhbmRpbmcsIEkgdGhpbmsuDQpQbGVhc2UgZmluZCBvdGhlciBwYXJ0cyBs aWtlIHRoYXQuDQoNCj4gKwlkY2VfdjZfMF9hdWRpb193cml0ZV9sYXRlbmN5X2ZpZWxkcyhlbmNv ZGVyLCBtb2RlKTsNCj4gKwlkY2VfdjZfMF9hdWRpb19zZXRfZHRvKGVuY29kZXIsIGFkZXYtPmNs b2NrLmRlZmF1bHRfZGlzcGNsayAqIDEwKTsNCj4gKwlkY2VfdjZfMF9zZXRfYXVkaW9fcGFja2V0 KGVuY29kZXIpOw0KDQpCZSBjb25zaXN0ZW50IHdpdGggY3VycmVudCBuYW1pbmcgdG8gYmUgZGNl X3Y2XzBfYXVkaW9fc2V0X3BhY2tldCgpDQoNClJlZ2FyZHMsDQpKZXJyeSAoSnVud2VpIFpoYW5n KQ0KDQpMaW51eCBCYXNlIEdyYXBoaWNzDQpTUkRDIFNvZnR3YXJlIERldmVsb3BtZW50DQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBhbWQtZ2Z4IFttYWlsdG86YW1kLWdmeC1ib3VuY2VzQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmIE9mDQo+IFhpYW9qaWUgWXVhbg0KPiBTZW50OiBN b25kYXksIEZlYnJ1YXJ5IDIwLCAyMDE3IDE4OjE2DQo+IFRvOiBhbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZw0KPiBDYzogWXVhbiwgWGlhb2ppZQ0KPiBTdWJqZWN0OiBbUEFUQ0hdIGRybS9h bWRncHU6IGFkZCBEUCBhdWRpbyBzdXBwb3J0IGZvciBzaSBkY2U2DQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBYaWFvamllIFl1YW4gPFhpYW9qaWUuWXVhbkBhbWQuY29tPg0KPiAtLS0NCj4gIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92Nl8wLmMgICAgICAgICAgICAgIHwgNDU3DQo+ICsr KysrKysrKysrKysrKysrKystLQ0KPiAgLi4uL2RybS9hbWQvaW5jbHVkZS9hc2ljX3JlZy9kY2Uv ZGNlXzZfMF9zaF9tYXNrLmggfCAgIDIgKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0 aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2RjZV92Nl8wLmMNCj4gaW5kZXggOTQ4NzdjYi4uZWMyZjEyMiAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jDQo+IEBAIC0xMTgsMTQgKzExOCwzMSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHsgIHN0YXRpYyB1MzINCj4gZGNlX3Y2XzBfYXVkaW9fZW5kcHRfcnJlZyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gIAkJCQkgICAgIHUzMiBibG9ja19vZmZzZXQs IHUzMiByZWcpDQo+ICB7DQo+IC0JRFJNX0lORk8oInh4eHg6IGRjZV92Nl8wX2F1ZGlvX2VuZHB0 X3JyZWcgLS0tLW5vIGltcGwhISEhXG4iKTsNCj4gLQlyZXR1cm4gMDsNCj4gKwl1bnNpZ25lZCBs b25nIGZsYWdzOw0KPiArCXUzMiByOw0KPiArDQo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYt PmF1ZGlvX2VuZHB0X2lkeF9sb2NrLCBmbGFncyk7DQo+ICsJV1JFRzMyKG1tQVpBTElBX0YwX0NP REVDX0VORFBPSU5UX0lOREVYICsgYmxvY2tfb2Zmc2V0LCByZWcpOw0KPiArCXIgPSBSUkVHMzIo bW1BWkFMSUFfRjBfQ09ERUNfRU5EUE9JTlRfREFUQSArIGJsb2NrX29mZnNldCk7DQo+ICsJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+YXVkaW9fZW5kcHRfaWR4X2xvY2ssIGZsYWdzKTsN Cj4gKw0KPiArCXJldHVybiByOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2F1 ZGlvX2VuZHB0X3dyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAJCQkJICAgICAg dTMyIGJsb2NrX29mZnNldCwgdTMyIHJlZywgdTMyIHYpICB7DQo+IC0JRFJNX0lORk8oInh4eHg6 IGRjZV92Nl8wX2F1ZGlvX2VuZHB0X3dyZWcgLS0tLW5vIGltcGwhISEhXG4iKTsNCj4gKwl1bnNp Z25lZCBsb25nIGZsYWdzOw0KPiArCXUzMiB0bXA7DQo+ICsNCj4gKwlzcGluX2xvY2tfaXJxc2F2 ZSgmYWRldi0+YXVkaW9fZW5kcHRfaWR4X2xvY2ssIGZsYWdzKTsNCj4gKwl0bXAgPSBSRUdfU0VU X0ZJRUxEKDAsIEFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRFWCwNCj4gKwkJCUFaQUxJQV9F TkRQT0lOVF9SRUdfSU5ERVgsIHJlZyk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEFa QUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRFWCwNCj4gKwkJCUFaQUxJQV9FTkRQT0lOVF9SRUdf V1JJVEVfRU4sIDEpOw0KPiArCVdSRUczMihtbUFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRF WCArIGJsb2NrX29mZnNldCwgdG1wKTsNCj4gKwlXUkVHMzIobW1BWkFMSUFfRjBfQ09ERUNfRU5E UE9JTlRfREFUQSArIGJsb2NrX29mZnNldCwgdik7DQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmYWRldi0+YXVkaW9fZW5kcHRfaWR4X2xvY2ssIGZsYWdzKTsNCj4gIH0NCj4gDQo+ICBzdGF0 aWMgYm9vbCBkY2VfdjZfMF9pc19pbl92Ymxhbmsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IGludCBjcnRjKSBAQCAtDQo+IDEyMzEsMTcgKzEyNDgsMTcgQEAgc3RhdGljIHZvaWQgZGNlX3Y2 XzBfYmFuZHdpZHRoX3VwZGF0ZShzdHJ1Y3QNCj4gYW1kZ3B1X2RldmljZSAqYWRldikNCj4gIAkJ ZGNlX3Y2XzBfcHJvZ3JhbV93YXRlcm1hcmtzKGFkZXYsIGFkZXYtDQo+ID5tb2RlX2luZm8uY3J0 Y3NbaSsxXSwgbGJfc2l6ZSwgbnVtX2hlYWRzKTsNCj4gIAl9DQo+ICB9DQo+IC0vKg0KPiArDQo+ ICBzdGF0aWMgdm9pZCBkY2VfdjZfMF9hdWRpb19nZXRfY29ubmVjdGVkX3BpbnMoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpDQo+IHsNCj4gIAlpbnQgaTsNCj4gLQl1MzIgb2Zmc2V0LCB0bXA7 DQo+ICsJdTMyIHRtcDsNCj4gDQo+ICAJZm9yIChpID0gMDsgaSA8IGFkZXYtPm1vZGVfaW5mby5h dWRpby5udW1fcGluczsgaSsrKSB7DQo+IC0JCW9mZnNldCA9IGFkZXYtPm1vZGVfaW5mby5hdWRp by5waW5baV0ub2Zmc2V0Ow0KPiAtCQl0bXAgPSBSUkVHMzJfQVVESU9fRU5EUFQob2Zmc2V0LA0K PiAtDQo+IEFaX0YwX0NPREVDX1BJTl9DT05UUk9MX1JFU1BPTlNFX0NPTkZJR1VSQVRJT05fREVG QVVMVCk7DQo+IC0JCWlmICgoKHRtcCAmIFBPUlRfQ09OTkVDVElWSVRZX01BU0spID4+DQo+IFBP UlRfQ09OTkVDVElWSVRZX1NISUZUKSA9PSAxKQ0KPiArCQl0bXAgPSBSUkVHMzJfQVVESU9fRU5E UFQoYWRldi0NCj4gPm1vZGVfaW5mby5hdWRpby5waW5baV0ub2Zmc2V0LA0KPiArDQo+IAlpeEFa QUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9DT05GSUdVUkFUSU9OX0RFRg0KPiBB VUxUKTsNCj4gKwkJaWYgKFJFR19HRVRfRklFTEQodG1wLA0KPiBBWkFMSUFfRjBfQ09ERUNfUElO X0NPTlRST0xfUkVTUE9OU0VfQ09ORklHVVJBVElPTl9ERUZBVUxULA0KPiArCQkJCQlQT1JUX0NP Tk5FQ1RJVklUWSkpDQo+ICAJCQlhZGV2LT5tb2RlX2luZm8uYXVkaW8ucGluW2ldLmNvbm5lY3Rl ZCA9IGZhbHNlOw0KPiAgCQllbHNlDQo+ICAJCQlhZGV2LT5tb2RlX2luZm8uYXVkaW8ucGluW2ld LmNvbm5lY3RlZCA9IHRydWU7IEBAIC0NCj4gMTI2OCw0MCArMTI4NSwyMDEgQEAgc3RhdGljIHZv aWQgZGNlX3Y2XzBfYWZtdF9hdWRpb19zZWxlY3RfcGluKHN0cnVjdA0KPiBkcm1fZW5jb2RlciAq ZW5jb2RlcikNCj4gIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGVuY29kZXItPmRldi0+ ZGV2X3ByaXZhdGU7DQo+ICAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9 DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0KPiAgCXN0cnVjdCBhbWRncHVfZW5jb2Rl cl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXItPmVuY19wcml2Ow0KPiAtCXUzMiBvZmZz ZXQ7DQo+IA0KPiAgCWlmICghZGlnIHx8ICFkaWctPmFmbXQgfHwgIWRpZy0+YWZtdC0+cGluKQ0K PiAgCQlyZXR1cm47DQo+IA0KPiAtCW9mZnNldCA9IGRpZy0+YWZtdC0+b2Zmc2V0Ow0KPiAtDQo+ IC0JV1JFRzMyKEFGTVRfQVVESU9fU1JDX0NPTlRST0wgKyBvZmZzZXQsDQo+IC0JICAgICAgIEFG TVRfQVVESU9fU1JDX1NFTEVDVChkaWctPmFmbXQtPnBpbi0+aWQpKTsNCj4gLQ0KPiArCVdSRUcz MihtbUFGTVRfQVVESU9fU1JDX0NPTlRST0wgKyBkaWctPmFmbXQtPm9mZnNldCwNCj4gKwkgICAg ICAgUkVHX1NFVF9GSUVMRCgwLCBBRk1UX0FVRElPX1NSQ19DT05UUk9MLA0KPiBBRk1UX0FVRElP X1NSQ19TRUxFQ1QsDQo+ICsJCSAgICAgICAgICAgICBkaWctPmFmbXQtPnBpbi0+aWQpKTsNCj4g IH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBkY2VfdjZfMF9hdWRpb193cml0ZV9sYXRlbmN5X2ZpZWxk cyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJCQkJCQlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSkNCj4gIHsNCj4gLQlEUk1fSU5GTygieHh4eDogZGNlX3Y2XzBfYXVkaW9f d3JpdGVfbGF0ZW5jeV9maWVsZHMtLS1ubw0KPiBpbXAhISEhIVxuIik7DQo+ICsJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBlbmNvZGVyLT5kZXYtPmRldl9wcml2YXRlOw0KPiArCXN0cnVj dCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5jb2Rlcihl bmNvZGVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IGFtZGdw dV9lbmNvZGVyLT5lbmNfcHJpdjsNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y Ow0KPiArCXN0cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVfY29ubmVjdG9yID0gTlVMTDsN Cj4gKwlpbnQgaW50ZXJsYWNlID0gMDsNCj4gKwl1MzIgdG1wOw0KPiArDQo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShjb25uZWN0b3IsICZlbmNvZGVyLT5kZXYtDQo+ID5tb2RlX2NvbmZpZy5jb25u ZWN0b3JfbGlzdCwgaGVhZCkgew0KPiArCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29k ZXIpIHsNCj4gKwkJCWFtZGdwdV9jb25uZWN0b3IgPSB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5l Y3Rvcik7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghYW1kZ3B1 X2Nvbm5lY3Rvcikgew0KPiArCQlEUk1fRVJST1IoIkNvdWxkbid0IGZpbmQgZW5jb2RlcidzIGNv bm5lY3RvclxuIik7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAobW9kZS0+Zmxh Z3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkNCj4gKwkJaW50ZXJsYWNlID0gMTsNCj4gKw0K PiArCWlmIChjb25uZWN0b3ItPmxhdGVuY3lfcHJlc2VudFtpbnRlcmxhY2VdKSB7DQo+ICsJCXRt cCA9IFJFR19TRVRfRklFTEQoMCwNCj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX1JFU1BP TlNFX0xJUFNZTkMsDQo+ICsJCQkJVklERU9fTElQU1lOQywgY29ubmVjdG9yLQ0KPiA+dmlkZW9f bGF0ZW5jeVtpbnRlcmxhY2VdKTsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFa QUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9MSVBTWU5DLA0KPiArCQkJCUFVRElP X0xJUFNZTkMsIGNvbm5lY3Rvci0NCj4gPmF1ZGlvX2xhdGVuY3lbaW50ZXJsYWNlXSk7DQo+ICsJ fSBlbHNlIHsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCgwLA0KPiBBWkFMSUFfRjBfQ09ERUNf UElOX0NPTlRST0xfUkVTUE9OU0VfTElQU1lOQywNCj4gKwkJCQlWSURFT19MSVBTWU5DLCAwKTsN Cj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09O VFJPTF9SRVNQT05TRV9MSVBTWU5DLA0KPiArCQkJCUFVRElPX0xJUFNZTkMsIDApOw0KPiArCX0N Cj4gKwlXUkVHMzJfQVVESU9fRU5EUFQoZGlnLT5hZm10LT5waW4tPm9mZnNldCwNCj4gKw0KPiBp eEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9MSVBTWU5DLCB0bXApOw0KPiAg fQ0KPiANCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2F1ZGlvX3dyaXRlX3NwZWFrZXJfYWxsb2Nh dGlvbihzdHJ1Y3QgZHJtX2VuY29kZXINCj4gKmVuY29kZXIpICB7DQo+IC0JRFJNX0lORk8oInh4 eHg6IGRjZV92Nl8wX2F1ZGlvX3dyaXRlX3NwZWFrZXJfYWxsb2NhdGlvbi0tLW5vDQo+IGltcCEh ISEhXG4iKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGVuY29kZXItPmRldi0+ ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9 DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0KPiArCXN0cnVjdCBhbWRncHVfZW5jb2Rl cl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXItPmVuY19wcml2Ow0KPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7DQo+ICsJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFt ZGdwdV9jb25uZWN0b3IgPSBOVUxMOw0KPiArCXU4ICpzYWRiID0gTlVMTDsNCj4gKwlpbnQgc2Fk X2NvdW50Ow0KPiArCXUzMiB0bXA7DQo+ICsNCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5l Y3RvciwgJmVuY29kZXItPmRldi0NCj4gPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFk KSB7DQo+ICsJCWlmIChjb25uZWN0b3ItPmVuY29kZXIgPT0gZW5jb2Rlcikgew0KPiArCQkJYW1k Z3B1X2Nvbm5lY3RvciA9IHRvX2FtZGdwdV9jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gKwkJCWJy ZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFhbWRncHVfY29ubmVjdG9yKSB7DQo+ ICsJCURSTV9FUlJPUigiQ291bGRuJ3QgZmluZCBlbmNvZGVyJ3MgY29ubmVjdG9yXG4iKTsNCj4g KwkJcmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCXNhZF9jb3VudCA9DQo+IGRybV9lZGlkX3RvX3Nw ZWFrZXJfYWxsb2NhdGlvbihhbWRncHVfY29ubmVjdG9yX2VkaWQoY29ubmVjdG9yKSwgJnNhZGIp Ow0KPiArCWlmIChzYWRfY291bnQgPCAwKSB7DQo+ICsJCURSTV9FUlJPUigiQ291bGRuJ3QgcmVh ZCBTcGVha2VyIEFsbG9jYXRpb24gRGF0YSBCbG9jazogJWRcbiIsDQo+IHNhZF9jb3VudCk7DQo+ ICsJCXNhZF9jb3VudCA9IDA7DQo+ICsJfQ0KPiArDQo+ICsJLyogcHJvZ3JhbSB0aGUgc3BlYWtl ciBhbGxvY2F0aW9uICovDQo+ICsJdG1wID0gUlJFRzMyX0FVRElPX0VORFBUKGRpZy0+YWZtdC0+ cGluLT5vZmZzZXQsDQo+ICsNCj4gCWl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0NIQU5O RUxfU1BFQUtFUik7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJQV9GMF9D T0RFQ19QSU5fQ09OVFJPTF9DSEFOTkVMX1NQRUFLRVIsDQo+ICsJCQlIRE1JX0NPTk5FQ1RJT04s IDApOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLA0KPiBBWkFMSUFfRjBfQ09ERUNfUElO X0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VSLA0KPiArCQkJRFBfQ09OTkVDVElPTiwgMCk7DQo+ICsN Cj4gKwlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PQ0KPiBEUk1fTU9ERV9DT05ORUNU T1JfRGlzcGxheVBvcnQpDQo+ICsJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLA0KPiBBWkFMSUFf RjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VSLA0KPiArCQkJCURQX0NPTk5FQ1RJ T04sIDEpOw0KPiArCWVsc2UNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJ QV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9DSEFOTkVMX1NQRUFLRVIsDQo+ICsJCQkJSERNSV9DT05O RUNUSU9OLCAxKTsNCj4gKw0KPiArCWlmIChzYWRfY291bnQpDQo+ICsJCXRtcCA9IFJFR19TRVRf RklFTEQodG1wLA0KPiBBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VS LA0KPiArCQkJCVNQRUFLRVJfQUxMT0NBVElPTiwgc2FkYlswXSk7DQo+ICsJZWxzZQ0KPiArCQl0 bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0NI QU5ORUxfU1BFQUtFUiwNCj4gKwkJCQlTUEVBS0VSX0FMTE9DQVRJT04sIDUpOyAvKiBzdGVyZW8g Ki8NCj4gKw0KPiArCVdSRUczMl9BVURJT19FTkRQVChkaWctPmFmbXQtPnBpbi0+b2Zmc2V0LA0K PiArCQkJaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VSLA0KPiB0 bXApOw0KPiArDQo+ICsJa2ZyZWUoc2FkYik7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQgZGNl X3Y2XzBfYXVkaW9fd3JpdGVfc2FkX3JlZ3Moc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKSAg ew0KPiAtCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hdWRpb193cml0ZV9zYWRfcmVncy0tLW5v IGltcCEhISEhXG4iKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGVuY29kZXIt PmRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5j b2RlciA9DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0KPiArCXN0cnVjdCBhbWRncHVf ZW5jb2Rlcl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXItPmVuY19wcml2Ow0KPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7DQo+ICsJc3RydWN0IGFtZGdwdV9jb25uZWN0 b3IgKmFtZGdwdV9jb25uZWN0b3IgPSBOVUxMOw0KPiArCXN0cnVjdCBjZWFfc2FkICpzYWRzOw0K PiArCWludCBpLCBzYWRfY291bnQ7DQo+ICsNCj4gKwlzdGF0aWMgY29uc3QgdTE2IGVsZF9yZWdf dG9fdHlwZVtdWzJdID0gew0KPiArCQl7IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FV RElPX0RFU0NSSVBUT1IwLA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBFX1BDTSB9LA0KPiArCQl7 IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElPX0RFU0NSSVBUT1IxLA0KPiBIRE1J X0FVRElPX0NPRElOR19UWVBFX0FDMyB9LA0KPiArCQl7IGl4QVpBTElBX0YwX0NPREVDX1BJTl9D T05UUk9MX0FVRElPX0RFU0NSSVBUT1IyLA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBFX01QRUcx IH0sDQo+ICsJCXsgaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRP UjMsDQo+IEhETUlfQVVESU9fQ09ESU5HX1RZUEVfTVAzIH0sDQo+ICsJCXsgaXhBWkFMSUFfRjBf Q09ERUNfUElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRPUjQsDQo+IEhETUlfQVVESU9fQ09ESU5H X1RZUEVfTVBFRzIgfSwNCj4gKwkJeyBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJ T19ERVNDUklQVE9SNSwNCj4gSERNSV9BVURJT19DT0RJTkdfVFlQRV9BQUNfTEMgfSwNCj4gKwkJ eyBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SNiwNCj4gSERN SV9BVURJT19DT0RJTkdfVFlQRV9EVFMgfSwNCj4gKwkJeyBpeEFaQUxJQV9GMF9DT0RFQ19QSU5f Q09OVFJPTF9BVURJT19ERVNDUklQVE9SNywNCj4gSERNSV9BVURJT19DT0RJTkdfVFlQRV9BVFJB QyB9LA0KPiArCQl7IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElPX0RFU0NSSVBU T1I5LA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBFX0VBQzMgfSwNCj4gKwkJeyBpeEFaQUxJQV9G MF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SMTAsDQo+IEhETUlfQVVESU9fQ09E SU5HX1RZUEVfRFRTX0hEIH0sDQo+ICsJCXsgaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xf QVVESU9fREVTQ1JJUFRPUjExLA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBFX01MUCB9LA0KPiAr CQl7IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElPX0RFU0NSSVBUT1IxMywNCj4g SERNSV9BVURJT19DT0RJTkdfVFlQRV9XTUFfUFJPIH0sDQo+ICsJfTsNCj4gKw0KPiArCWxpc3Rf Zm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZW5jb2Rlci0+ZGV2LQ0KPiA+bW9kZV9jb25maWcu Y29ubmVjdG9yX2xpc3QsIGhlYWQpIHsNCj4gKwkJaWYgKGNvbm5lY3Rvci0+ZW5jb2RlciA9PSBl bmNvZGVyKSB7DQo+ICsJCQlhbWRncHVfY29ubmVjdG9yID0gdG9fYW1kZ3B1X2Nvbm5lY3Rvcihj b25uZWN0b3IpOw0KPiArCQkJYnJlYWs7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlpZiAoIWFt ZGdwdV9jb25uZWN0b3IpIHsNCj4gKwkJRFJNX0VSUk9SKCJDb3VsZG4ndCBmaW5kIGVuY29kZXIn cyBjb25uZWN0b3JcbiIpOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0KPiArDQo+ICsJc2FkX2NvdW50 ID0gZHJtX2VkaWRfdG9fc2FkKGFtZGdwdV9jb25uZWN0b3JfZWRpZChjb25uZWN0b3IpLA0KPiAm c2Fkcyk7DQo+ICsJaWYgKHNhZF9jb3VudCA8PSAwKSB7DQo+ICsJCURSTV9FUlJPUigiQ291bGRu J3QgcmVhZCBTQURzOiAlZFxuIiwgc2FkX2NvdW50KTsNCj4gKwkJcmV0dXJuOw0KPiArCX0NCj4g Kw0KPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVsZF9yZWdfdG9fdHlwZSk7IGkrKykg ew0KPiArCQl1MzIgdG1wID0gMDsNCj4gKwkJdTggc3RlcmVvX2ZyZXFzID0gMDsNCj4gKwkJaW50 IG1heF9jaGFubmVscyA9IC0xOw0KPiArCQlpbnQgajsNCj4gKw0KPiArCQlmb3IgKGogPSAwOyBq IDwgc2FkX2NvdW50OyBqKyspIHsNCj4gKwkJCXN0cnVjdCBjZWFfc2FkICpzYWQgPSAmc2Fkc1tq XTsNCj4gKw0KPiArCQkJaWYgKHNhZC0+Zm9ybWF0ID09IGVsZF9yZWdfdG9fdHlwZVtpXVsxXSkg ew0KPiArCQkJCWlmIChzYWQtPmNoYW5uZWxzID4gbWF4X2NoYW5uZWxzKSB7DQo+ICsJCQkJCXRt cCA9IFJFR19TRVRfRklFTEQodG1wLA0KPiBBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQVVE SU9fREVTQ1JJUFRPUjAsDQo+ICsJCQkJCQkJTUFYX0NIQU5ORUxTLCBzYWQtDQo+ID5jaGFubmVs cyk7DQo+ICsJCQkJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLA0KPiBBWkFMSUFfRjBfQ09ERUNf UElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRPUjAsDQo+ICsJCQkJCQkJREVTQ1JJUFRPUl9CWVRF XzIsDQo+IHNhZC0+Ynl0ZTIpOw0KPiArCQkJCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4g QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElPX0RFU0NSSVBUT1IwLA0KPiArDQo+IAlT VVBQT1JURURfRlJFUVVFTkNJRVMsIHNhZC0+ZnJlcSk7DQo+ICsJCQkJCW1heF9jaGFubmVscyA9 IHNhZC0+Y2hhbm5lbHM7DQo+ICsJCQkJfQ0KPiArDQo+ICsJCQkJaWYgKHNhZC0+Zm9ybWF0ID09 DQo+IEhETUlfQVVESU9fQ09ESU5HX1RZUEVfUENNKQ0KPiArCQkJCQlzdGVyZW9fZnJlcXMgfD0g c2FkLT5mcmVxOw0KPiArCQkJCWVsc2UNCj4gKwkJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCX0N Cj4gKw0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4gQVpBTElBX0YwX0NPREVDX1BJ Tl9DT05UUk9MX0FVRElPX0RFU0NSSVBUT1IwLA0KPiArCQkJCVNVUFBPUlRFRF9GUkVRVUVOQ0lF U19TVEVSRU8sDQo+IHN0ZXJlb19mcmVxcyk7DQo+ICsJCVdSRUczMl9BVURJT19FTkRQVChkaWct PmFmbXQtPnBpbi0+b2Zmc2V0LA0KPiBlbGRfcmVnX3RvX3R5cGVbaV1bMF0sIHRtcCk7DQo+ICsJ fQ0KPiArDQo+ICsJa2ZyZWUoc2Fkcyk7DQo+IA0KPiAgfQ0KPiAtKi8NCj4gKw0KPiAgc3RhdGlj IHZvaWQgZGNlX3Y2XzBfYXVkaW9fZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0K PiAgCQkJCSAgc3RydWN0IGFtZGdwdV9hdWRpb19waW4gKnBpbiwNCj4gIAkJCQkgIGJvb2wgZW5h YmxlKQ0KPiAgew0KPiAtCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hdWRpb19lbmFibGUtLS1u byBpbXAhISEhIVxuIik7DQo+ICsJaWYgKCFwaW4pDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCVdS RUczMl9BVURJT19FTkRQVChwaW4tPm9mZnNldCwNCj4gaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NP TlRST0xfSE9UX1BMVUdfQ09OVFJPTCwNCj4gKwkJCWVuYWJsZSA/DQo+ICtBWkFMSUFfRjBfQ09E RUNfUElOX0NPTlRST0xfSE9UX1BMVUdfQ09OVFJPTF9fQVVESU9fRU5BQkxFRF8NCj4gTUFTSyA6 IDApOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBjb25zdCB1MzIgcGluX29mZnNldHNbN10gPQ0KPiBA QCAtMTMxNywxMiArMTQ5NSw0NCBAQCBzdGF0aWMgY29uc3QgdTMyIHBpbl9vZmZzZXRzWzddID0N Cj4gDQo+ICBzdGF0aWMgaW50IGRjZV92Nl8wX2F1ZGlvX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpICB7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlpZiAoIWFtZGdwdV9hdWRpbykNCj4g KwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlhZGV2LT5tb2RlX2luZm8uYXVkaW8uZW5hYmxlZCA9IHRy dWU7DQo+ICsNCj4gKwlhZGV2LT5tb2RlX2luZm8uYXVkaW8ubnVtX3BpbnMgPSA3Ow0KPiArDQo+ ICsJZm9yIChpID0gMDsgaSA8IGFkZXYtPm1vZGVfaW5mby5hdWRpby5udW1fcGluczsgaSsrKSB7 DQo+ICsJCWFkZXYtPm1vZGVfaW5mby5hdWRpby5waW5baV0uY2hhbm5lbHMgPSAtMTsNCj4gKwkJ YWRldi0+bW9kZV9pbmZvLmF1ZGlvLnBpbltpXS5yYXRlID0gLTE7DQo+ICsJCWFkZXYtPm1vZGVf aW5mby5hdWRpby5waW5baV0uYml0c19wZXJfc2FtcGxlID0gLTE7DQo+ICsJCWFkZXYtPm1vZGVf aW5mby5hdWRpby5waW5baV0uc3RhdHVzX2JpdHMgPSAwOw0KPiArCQlhZGV2LT5tb2RlX2luZm8u YXVkaW8ucGluW2ldLmNhdGVnb3J5X2NvZGUgPSAwOw0KPiArCQlhZGV2LT5tb2RlX2luZm8uYXVk aW8ucGluW2ldLmNvbm5lY3RlZCA9IGZhbHNlOw0KPiArCQlhZGV2LT5tb2RlX2luZm8uYXVkaW8u cGluW2ldLm9mZnNldCA9IHBpbl9vZmZzZXRzW2ldOw0KPiArCQlhZGV2LT5tb2RlX2luZm8uYXVk aW8ucGluW2ldLmlkID0gaTsNCj4gKwkJZGNlX3Y2XzBfYXVkaW9fZW5hYmxlKGFkZXYsICZhZGV2 LT5tb2RlX2luZm8uYXVkaW8ucGluW2ldLA0KPiBmYWxzZSk7DQo+ICsJfQ0KPiArDQo+ICAJcmV0 dXJuIDA7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQgZGNlX3Y2XzBfYXVkaW9fZmluaShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikgIHsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmICghYW1k Z3B1X2F1ZGlvKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlpZiAoIWFkZXYtPm1vZGVfaW5mby5h dWRpby5lbmFibGVkKQ0KPiArCQlyZXR1cm47DQo+IA0KPiArCWZvciAoaSA9IDA7IGkgPCBhZGV2 LT5tb2RlX2luZm8uYXVkaW8ubnVtX3BpbnM7IGkrKykNCj4gKwkJZGNlX3Y2XzBfYXVkaW9fZW5h YmxlKGFkZXYsICZhZGV2LT5tb2RlX2luZm8uYXVkaW8ucGluW2ldLA0KPiBmYWxzZSk7DQo+ICsN Cj4gKwlhZGV2LT5tb2RlX2luZm8uYXVkaW8uZW5hYmxlZCA9IGZhbHNlOw0KPiAgfQ0KPiANCj4g IC8qDQo+IEBAIC0xMzMxLDI4ICsxNTQxLDIwNCBAQCBzdGF0aWMgdm9pZCBkY2VfdjZfMF9hZm10 X3VwZGF0ZV9BQ1Ioc3RydWN0DQo+IGRybV9lbmNvZGVyICplbmNvZGVyLCB1aW50MzJfdCBjbG9j aw0KPiAgCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hZm10X3VwZGF0ZV9BQ1ItLS1ubyBpbXAh ISEhIVxuIik7ICB9ICAqLw0KPiAtLyoNCj4gLSAqIGJ1aWxkIGEgSERNSSBWaWRlbyBJbmZvIEZy YW1lDQo+IC0gKi8NCj4gLS8qDQo+ICsNCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2FmbXRfdXBk YXRlX2F2aV9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVyDQo+ICplbmNvZGVyLA0KPiAtCQkJ CQkgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkNCj4gKwkJCQkJICAgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQ0KPiAgew0KPiAtCURSTV9JTkZPKCJ4eHh4OiBkY2Vf djZfMF9hZm10X3VwZGF0ZV9hdmlfaW5mb2ZyYW1lLS0tbm8NCj4gaW1wISEhISFcbiIpOw0KPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7DQo+ICsJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPiArCXN0cnVjdCBhbWRncHVfZW5j b2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5jb2RlcihlbmNvZGVyKTsNCj4g KwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IGFtZGdwdV9lbmNvZGVyLT5l bmNfcHJpdjsNCj4gKwlzdHJ1Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lIGZyYW1lOw0KPiArCXU4IGJ1 ZmZlcltIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSArDQo+IEhETUlfQVZJX0lORk9GUkFNRV9T SVpFXTsNCj4gKwl1aW50OF90ICpwYXlsb2FkID0gYnVmZmVyICsgMzsNCj4gKwl1aW50OF90ICpo ZWFkZXIgPSBidWZmZXI7DQo+ICsJc3NpemVfdCBlcnI7DQo+ICsJdTMyIHRtcDsNCj4gKw0KPiAr CWVyciA9IGRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUoJmZyYW1lLCBt b2RlKTsNCj4gKwlpZiAoZXJyIDwgMCkgew0KPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBzZXR1 cCBBVkkgaW5mb2ZyYW1lOiAlemRcbiIsIGVycik7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsN Cj4gKwllcnIgPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1ZmZlciwgc2l6ZW9m KGJ1ZmZlcikpOw0KPiArCWlmIChlcnIgPCAwKSB7DQo+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRv IHBhY2sgQVZJIGluZm9mcmFtZTogJXpkXG4iLCBlcnIpOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0K PiArDQo+ICsJV1JFRzMyKG1tQUZNVF9BVklfSU5GTzAgKyBkaWctPmFmbXQtPm9mZnNldCwNCj4g KwkgICAgICAgcGF5bG9hZFsweDBdIHwgKHBheWxvYWRbMHgxXSA8PCA4KSB8IChwYXlsb2FkWzB4 Ml0gPDwgMTYpIHwNCj4gKHBheWxvYWRbMHgzXSA8PCAyNCkpOw0KPiArCVdSRUczMihtbUFGTVRf QVZJX0lORk8xICsgZGlnLT5hZm10LT5vZmZzZXQsDQo+ICsJICAgICAgIHBheWxvYWRbMHg0XSB8 IChwYXlsb2FkWzB4NV0gPDwgOCkgfCAocGF5bG9hZFsweDZdIDw8IDE2KSB8DQo+IChwYXlsb2Fk WzB4N10gPDwgMjQpKTsNCj4gKwlXUkVHMzIobW1BRk1UX0FWSV9JTkZPMiArIGRpZy0+YWZtdC0+ b2Zmc2V0LA0KPiArCSAgICAgICBwYXlsb2FkWzB4OF0gfCAocGF5bG9hZFsweDldIDw8IDgpIHwg KHBheWxvYWRbMHhBXSA8PCAxNikgfA0KPiAocGF5bG9hZFsweEJdIDw8IDI0KSk7DQo+ICsJV1JF RzMyKG1tQUZNVF9BVklfSU5GTzMgKyBkaWctPmFmbXQtPm9mZnNldCwNCj4gKwkgICAgICAgcGF5 bG9hZFsweENdIHwgKHBheWxvYWRbMHhEXSA8PCA4KSB8IChoZWFkZXJbMV0gPDwgMjQpKTsNCj4g Kw0KPiArCXRtcCA9IFJSRUczMihtbUhETUlfSU5GT0ZSQU1FX0NPTlRST0wxICsgZGlnLT5hZm10 LT5vZmZzZXQpOw0KPiArCS8qIGFueXRoaW5nIG90aGVyIHRoYW4gMCAqLw0KPiArCXRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBIRE1JX0lORk9GUkFNRV9DT05UUk9MMSwNCj4gKwkJCUhETUlfQVVE SU9fSU5GT19MSU5FLCAyKTsNCj4gKwlXUkVHMzIobW1IRE1JX0lORk9GUkFNRV9DT05UUk9MMSAr IGRpZy0+YWZtdC0+b2Zmc2V0LCB0bXApOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGRjZV92 Nl8wX2F1ZGlvX3NldF9kdG8oc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCB1MzIgY2xvY2sp ICB7DQo+IC0JRFJNX0lORk8oInh4eHg6IGRjZV92Nl8wX2F1ZGlvX3NldF9kdG8tLS1ubyBpbXAh ISEhIVxuIik7DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4g KwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3Ry dWN0IGFtZGdwdV9jcnRjICphbWRncHVfY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGVuY29kZXItPmNy dGMpOw0KPiArCXUzMiB0bXA7DQo+ICsNCj4gKwkvKg0KPiArCSAqIFR3byBkdG9zOiBnZW5lcmFs bHkgdXNlIGR0bzAgZm9yIGhkbWksIGR0bzEgZm9yIGRwLg0KPiArCSAqIEV4cHJlc3MgWzI0TUh6 IC8gdGFyZ2V0IHBpeGVsIGNsb2NrXSBhcyBhbiBleGFjdCByYXRpb25hbA0KPiArCSAqIG51bWJl ciAoY29lZmZpY2llbnQgb2YgdHdvIGludGVnZXIgbnVtYmVycy4NCj4gRENDR19BVURJT19EVE94 X1BIQVNFDQo+ICsJICogaXMgdGhlIG51bWVyYXRvciwgRENDR19BVURJT19EVE94X01PRFVMRSBp cyB0aGUgZGVub21pbmF0b3INCj4gKwkgKi8NCj4gKwl0bXAgPSBSUkVHMzIobW1EQ0NHX0FVRElP X0RUT19TT1VSQ0UpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBEQ0NHX0FVRElPX0RU T19TT1VSQ0UsDQo+ICsJCQlEQ0NHX0FVRElPX0RUTzBfU09VUkNFX1NFTCwgYW1kZ3B1X2NydGMt DQo+ID5jcnRjX2lkKTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRENDR19BVURJT19E VE9fU09VUkNFLA0KPiBEQ0NHX0FVRElPX0RUT19TRUwsIDEpOw0KPiArCVdSRUczMihtbURDQ0df QVVESU9fRFRPX1NPVVJDRSwgdG1wKTsNCj4gKwlXUkVHMzIobW1EQ0NHX0FVRElPX0RUTzFfUEhB U0UsIDI0MDAwKTsNCj4gKwlXUkVHMzIobW1EQ0NHX0FVRElPX0RUTzFfTU9EVUxFLCBjbG9jayk7 IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgZGNlX3Y2XzBfc2V0X2F1ZGlvX3BhY2tldChzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpIHsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5j b2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0NCj4gdG9f YW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21f ZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7DQo+ICsJdTMyIHRtcDsNCj4gKw0K PiArCXRtcCA9IFJSRUczMihtbUFGTVRfSU5GT0ZSQU1FX0NPTlRST0wwICsgZGlnLT5hZm10LT5v ZmZzZXQpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBBRk1UX0lORk9GUkFNRV9DT05U Uk9MMCwNCj4gQUZNVF9BVURJT19JTkZPX1VQREFURSwgMSk7DQo+ICsJV1JFRzMyKG1tQUZNVF9J TkZPRlJBTUVfQ09OVFJPTDAgKyBkaWctPmFmbXQtPm9mZnNldCwgdG1wKTsNCj4gKw0KPiArCXRt cCA9IFJSRUczMihtbUFGTVRfNjA5NThfMCArIGRpZy0+YWZtdC0+b2Zmc2V0KTsNCj4gKwl0bXAg PSBSRUdfU0VUX0ZJRUxEKHRtcCwgQUZNVF82MDk1OF8wLA0KPiBBRk1UXzYwOTU4X0NTX0NIQU5O RUxfTlVNQkVSX0wsIDEpOw0KPiArCVdSRUczMihtbUFGTVRfNjA5NThfMCArIGRpZy0+YWZtdC0+ b2Zmc2V0LCB0bXApOw0KPiArDQo+ICsJdG1wID0gUlJFRzMyKG1tQUZNVF82MDk1OF8xICsgZGln LT5hZm10LT5vZmZzZXQpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBBRk1UXzYwOTU4 XzEsDQo+IEFGTVRfNjA5NThfQ1NfQ0hBTk5FTF9OVU1CRVJfUiwgMik7DQo+ICsJV1JFRzMyKG1t QUZNVF82MDk1OF8xICsgZGlnLT5hZm10LT5vZmZzZXQsIHRtcCk7DQo+ICsNCj4gKwl0bXAgPSBS UkVHMzIobW1BRk1UXzYwOTU4XzIgKyBkaWctPmFmbXQtPm9mZnNldCk7DQo+ICsJdG1wID0gUkVH X1NFVF9GSUVMRCh0bXAsIEFGTVRfNjA5NThfMiwNCj4gQUZNVF82MDk1OF9DU19DSEFOTkVMX05V TUJFUl8yLCAzKTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQUZNVF82MDk1OF8yLA0K PiBBRk1UXzYwOTU4X0NTX0NIQU5ORUxfTlVNQkVSXzMsIDQpOw0KPiArCXRtcCA9IFJFR19TRVRf RklFTEQodG1wLCBBRk1UXzYwOTU4XzIsDQo+IEFGTVRfNjA5NThfQ1NfQ0hBTk5FTF9OVU1CRVJf NCwgNSk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEFGTVRfNjA5NThfMiwNCj4gQUZN VF82MDk1OF9DU19DSEFOTkVMX05VTUJFUl81LCA2KTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxE KHRtcCwgQUZNVF82MDk1OF8yLA0KPiBBRk1UXzYwOTU4X0NTX0NIQU5ORUxfTlVNQkVSXzYsIDcp Ow0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBBRk1UXzYwOTU4XzIsDQo+IEFGTVRfNjA5 NThfQ1NfQ0hBTk5FTF9OVU1CRVJfNywgOCk7DQo+ICsJV1JFRzMyKG1tQUZNVF82MDk1OF8yICsg ZGlnLT5hZm10LT5vZmZzZXQsIHRtcCk7DQo+ICsNCj4gKwl0bXAgPSBSUkVHMzIobW1BRk1UX0FV RElPX1BBQ0tFVF9DT05UUk9MMiArIGRpZy0+YWZtdC0NCj4gPm9mZnNldCk7DQo+ICsJdG1wID0g UkVHX1NFVF9GSUVMRCh0bXAsIEFGTVRfQVVESU9fUEFDS0VUX0NPTlRST0wyLA0KPiBBRk1UX0FV RElPX0NIQU5ORUxfRU5BQkxFLCAweGZmKTsNCj4gKwlXUkVHMzIobW1BRk1UX0FVRElPX1BBQ0tF VF9DT05UUk9MMiArIGRpZy0+YWZtdC0+b2Zmc2V0LA0KPiB0bXApOw0KPiArDQo+ICsJdG1wID0g UlJFRzMyKG1tSERNSV9BVURJT19QQUNLRVRfQ09OVFJPTCArIGRpZy0+YWZtdC0NCj4gPm9mZnNl dCk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEhETUlfQVVESU9fUEFDS0VUX0NPTlRS T0wsDQo+IEhETUlfQVVESU9fREVMQVlfRU4sIDEpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQo dG1wLCBIRE1JX0FVRElPX1BBQ0tFVF9DT05UUk9MLA0KPiBIRE1JX0FVRElPX1BBQ0tFVFNfUEVS X0xJTkUsIDMpOw0KPiArCVdSRUczMihtbUhETUlfQVVESU9fUEFDS0VUX0NPTlRST0wgKyBkaWct PmFmbXQtPm9mZnNldCwNCj4gdG1wKTsNCj4gKw0KPiArCXRtcCA9IFJSRUczMihtbUFGTVRfQVVE SU9fUEFDS0VUX0NPTlRST0wgKyBkaWctPmFmbXQtDQo+ID5vZmZzZXQpOw0KPiArCXRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBBRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MLA0KPiBBRk1UX1JFU0VU X0ZJRk9fV0hFTl9BVURJT19ESVMsIDEpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBB Rk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MLA0KPiBBRk1UXzYwOTU4X0NTX1VQREFURSwgMSk7DQo+ ICsJV1JFRzMyKG1tQUZNVF9BVURJT19QQUNLRVRfQ09OVFJPTCArIGRpZy0+YWZtdC0+b2Zmc2V0 LA0KPiB0bXApOw0KPiAgfQ0KPiAtKi8NCj4gLS8qDQo+IC0gKiB1cGRhdGUgdGhlIGluZm8gZnJh bWVzIHdpdGggdGhlIGRhdGEgZnJvbSB0aGUgY3VycmVudCBkaXNwbGF5IG1vZGUNCj4gLSAqLw0K PiArDQo+ICtzdGF0aWMgdm9pZCBkY2VfdjZfMF9hdWRpb19zZXRfbXV0ZShzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIsIGJvb2wNCj4gK211dGUpIHsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVy ID0NCj4gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNv ZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7DQo+ICsJdTMyIHRt cDsNCj4gKw0KPiArCXRtcCA9IFJSRUczMihtbUhETUlfR0MgKyBkaWctPmFmbXQtPm9mZnNldCk7 DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEhETUlfR0MsIEhETUlfR0NfQVZNVVRFLCBt dXRlID8gMSA6IDApOw0KPiArCVdSRUczMihtbUhETUlfR0MgKyBkaWctPmFmbXQtPm9mZnNldCwg dG1wKTsgfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkY2VfdjZfMF9hdWRpb19kcF9lbmFibGUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBib29sDQo+ICtlbmFibGUpIHsNCj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFt ZGdwdV9lbmNvZGVyID0NCj4gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ICsJc3RydWN0 IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7 DQo+ICsJdTMyIHRtcDsNCj4gKw0KPiArCWlmIChlbmFibGUpIHsNCj4gKwkJdG1wID0gUlJFRzMy KG1tQUZNVF9BVURJT19QQUNLRVRfQ09OVFJPTCArIGRpZy0NCj4gPmFmbXQtPm9mZnNldCk7DQo+ ICsJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBBRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MLA0K PiBBRk1UX0FVRElPX1NBTVBMRV9TRU5ELCAxKTsNCj4gKwkJV1JFRzMyKG1tQUZNVF9BVURJT19Q QUNLRVRfQ09OVFJPTCArIGRpZy0+YWZtdC0NCj4gPm9mZnNldCwgdG1wKTsNCj4gKw0KPiArCQl0 bXAgPSBSUkVHMzIobW1EUF9TRUNfVElNRVNUQU1QICsgZGlnLT5hZm10LT5vZmZzZXQpOw0KPiAr CQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRFBfU0VDX1RJTUVTVEFNUCwNCj4gRFBfU0VDX1RJ TUVTVEFNUF9NT0RFLCAxKTsNCj4gKwkJV1JFRzMyKG1tRFBfU0VDX1RJTUVTVEFNUCArIGRpZy0+ YWZtdC0+b2Zmc2V0LCB0bXApOw0KPiArDQo+ICsJCXRtcCA9IFJSRUczMihtbURQX1NFQ19DTlRM ICsgZGlnLT5hZm10LT5vZmZzZXQpOw0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRFBf U0VDX0NOVEwsIERQX1NFQ19BU1BfRU5BQkxFLA0KPiAxKTsNCj4gKwkJdG1wID0gUkVHX1NFVF9G SUVMRCh0bXAsIERQX1NFQ19DTlRMLCBEUF9TRUNfQVRQX0VOQUJMRSwNCj4gMSk7DQo+ICsJCXRt cCA9IFJFR19TRVRfRklFTEQodG1wLCBEUF9TRUNfQ05UTCwgRFBfU0VDX0FJUF9FTkFCTEUsDQo+ IDEpOw0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRFBfU0VDX0NOVEwsDQo+IERQX1NF Q19TVFJFQU1fRU5BQkxFLCAxKTsNCj4gKwkJV1JFRzMyKG1tRFBfU0VDX0NOVEwgKyBkaWctPmFm bXQtPm9mZnNldCwgdG1wKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlXUkVHMzIobW1EUF9TRUNfQ05U TCArIGRpZy0+YWZtdC0+b2Zmc2V0LCAwKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2 b2lkIGRjZV92Nl8wX2FmbXRfc2V0bW9kZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ ICAJCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkNCj4gIHsNCj4gLQlEUk1fSU5G TygieHh4eDogZGNlX3Y2XzBfYWZtdF9zZXRtb2RlIC0tLS1ubyBpbXBsICEhISEhISEhXG4iKTsN Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1 X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0NCj4gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rl ci0+ZW5jX3ByaXY7DQo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gKwlz dHJ1Y3QgYW1kZ3B1X2Nvbm5lY3RvciAqYW1kZ3B1X2Nvbm5lY3RvciA9IE5VTEw7DQo+ICsNCj4g KwlpZiAoIWRpZyB8fCAhZGlnLT5hZm10KQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmVuY29kZXItPmRldi0NCj4gPm1vZGVfY29uZmlnLmNv bm5lY3Rvcl9saXN0LCBoZWFkKSB7DQo+ICsJCWlmIChjb25uZWN0b3ItPmVuY29kZXIgPT0gZW5j b2Rlcikgew0KPiArCQkJYW1kZ3B1X2Nvbm5lY3RvciA9IHRvX2FtZGdwdV9jb25uZWN0b3IoY29u bmVjdG9yKTsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFhbWRn cHVfY29ubmVjdG9yKSB7DQo+ICsJCURSTV9FUlJPUigiQ291bGRuJ3QgZmluZCBlbmNvZGVyJ3Mg Y29ubmVjdG9yXG4iKTsNCj4gKwkJcmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCWlmICghZGlnLT5h Zm10LT5lbmFibGVkKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlkaWctPmFmbXQtPnBpbiA9IGRj ZV92Nl8wX2F1ZGlvX2dldF9waW4oYWRldik7DQo+ICsJaWYgKCFkaWctPmFmbXQtPnBpbikNCj4g KwkJcmV0dXJuOw0KPiArDQo+ICsJLyogZGlzYWJsZSBhdWRpbyBiZWZvcmUgc2V0dGluZyB1cCBo dyAqLw0KPiArCWRjZV92Nl8wX2F1ZGlvX2VuYWJsZShhZGV2LCBkaWctPmFmbXQtPnBpbiwgZmFs c2UpOw0KPiArDQo+ICsJZGNlX3Y2XzBfYXVkaW9fc2V0X211dGUoZW5jb2RlciwgdHJ1ZSk7DQo+ ICsJZGNlX3Y2XzBfYXVkaW9fd3JpdGVfc3BlYWtlcl9hbGxvY2F0aW9uKGVuY29kZXIpOw0KPiAr CWRjZV92Nl8wX2F1ZGlvX3dyaXRlX3NhZF9yZWdzKGVuY29kZXIpOw0KPiArCWRjZV92Nl8wX2F1 ZGlvX3dyaXRlX2xhdGVuY3lfZmllbGRzKGVuY29kZXIsIG1vZGUpOw0KPiArCWRjZV92Nl8wX2F1 ZGlvX3NldF9kdG8oZW5jb2RlciwgYWRldi0+Y2xvY2suZGVmYXVsdF9kaXNwY2xrICogMTApOw0K PiArCWRjZV92Nl8wX3NldF9hdWRpb19wYWNrZXQoZW5jb2Rlcik7DQo+ICsJZGNlX3Y2XzBfYWZt dF9hdWRpb19zZWxlY3RfcGluKGVuY29kZXIpOw0KPiArCWRjZV92Nl8wX2FmbXRfdXBkYXRlX2F2 aV9pbmZvZnJhbWUoZW5jb2RlciwgbW9kZSk7DQo+ICsJZGNlX3Y2XzBfYXVkaW9fc2V0X211dGUo ZW5jb2RlciwgZmFsc2UpOw0KPiArCWRjZV92Nl8wX2F1ZGlvX2RwX2VuYWJsZShlbmNvZGVyLCAx KTsNCj4gKw0KPiArCS8qIGVuYWJsZSBhdWRpbyBhZnRlciBzZXR0aW5nIHVwIGh3ICovDQo+ICsJ ZGNlX3Y2XzBfYXVkaW9fZW5hYmxlKGFkZXYsIGRpZy0+YWZtdC0+cGluLCB0cnVlKTsNCj4gIH0N Cj4gDQo+ICBzdGF0aWMgdm9pZCBkY2VfdjZfMF9hZm10X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsIGJvb2wgZW5hYmxlKQ0KPiBAQCAtMTM2OCw2ICsxNzU0LDcgQEAgc3RhdGlj IHZvaWQgZGNlX3Y2XzBfYWZtdF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyDQo+ICplbmNvZGVy LCBib29sIGVuYWJsZSkNCj4gIAkvKiBTaWxlbnQsIHI2MDBfaGRtaV9lbmFibGUgd2lsbCByYWlz ZSBXQVJOIGZvciB1cyAqLw0KPiAgCWlmIChlbmFibGUgJiYgZGlnLT5hZm10LT5lbmFibGVkKQ0K PiAgCQlyZXR1cm47DQo+ICsNCj4gIAlpZiAoIWVuYWJsZSAmJiAhZGlnLT5hZm10LT5lbmFibGVk KQ0KPiAgCQlyZXR1cm47DQo+IA0KPiBAQCAtMjc4MSw2ICszMTY4LDcgQEAgZGNlX3Y2XzBfZW5j b2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXINCj4gKmVuY29kZXIsICB7DQo+IA0KPiAg CXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5j b2RlcihlbmNvZGVyKTsNCj4gKwlpbnQgZW0gPSBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9nZXRf ZW5jb2Rlcl9tb2RlKGVuY29kZXIpOw0KPiANCj4gIAlhbWRncHVfZW5jb2Rlci0+cGl4ZWxfY2xv Y2sgPSBhZGp1c3RlZF9tb2RlLT5jbG9jazsNCj4gDQo+IEBAIC0yNzkwLDcgKzMxNzgsNyBAQCBk Y2VfdjZfMF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2Rlcg0KPiAqZW5jb2RlciwN Cj4gIAkvKiBzZXQgc2NhbGVyIGNsZWFycyB0aGlzIG9uIHNvbWUgY2hpcHMgKi8NCj4gIAlkY2Vf djZfMF9zZXRfaW50ZXJsZWF2ZShlbmNvZGVyLT5jcnRjLCBtb2RlKTsNCj4gDQo+IC0JaWYgKGFt ZGdwdV9hdG9tYmlvc19lbmNvZGVyX2dldF9lbmNvZGVyX21vZGUoZW5jb2RlcikgPT0NCj4gQVRP TV9FTkNPREVSX01PREVfSERNSSkgew0KPiArCWlmIChlbSA9PSBBVE9NX0VOQ09ERVJfTU9ERV9I RE1JIHx8DQo+IEVOQ09ERVJfTU9ERV9JU19EUChlbSkpIHsNCj4gIAkJZGNlX3Y2XzBfYWZtdF9l bmFibGUoZW5jb2RlciwgdHJ1ZSk7DQo+ICAJCWRjZV92Nl8wX2FmbXRfc2V0bW9kZShlbmNvZGVy LCBhZGp1c3RlZF9tb2RlKTsNCj4gIAl9DQo+IEBAIC0yODUyLDExICszMjQwLDEyIEBAIHN0YXRp YyB2b2lkIGRjZV92Nl8wX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QNCj4gZHJtX2VuY29kZXIgKmVu Y29kZXIpDQo+IA0KPiAgCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0K PiB0b19hbWRncHVfZW5jb2RlcihlbmNvZGVyKTsNCj4gIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJf YXRvbV9kaWcgKmRpZzsNCj4gKwlpbnQgZW0gPSBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9nZXRf ZW5jb2Rlcl9tb2RlKGVuY29kZXIpOw0KPiANCj4gIAlhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9k cG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsNCj4gDQo+ICAJaWYgKGFtZGdwdV9hdG9t Ymlvc19lbmNvZGVyX2lzX2RpZ2l0YWwoZW5jb2RlcikpIHsNCj4gLQkJaWYgKGFtZGdwdV9hdG9t Ymlvc19lbmNvZGVyX2dldF9lbmNvZGVyX21vZGUoZW5jb2RlcikNCj4gPT0gQVRPTV9FTkNPREVS X01PREVfSERNSSkNCj4gKwkJaWYgKGVtID09IEFUT01fRU5DT0RFUl9NT0RFX0hETUkgfHwNCj4g RU5DT0RFUl9NT0RFX0lTX0RQKGVtKSkNCj4gIAkJCWRjZV92Nl8wX2FmbXRfZW5hYmxlKGVuY29k ZXIsIGZhbHNlKTsNCj4gIAkJZGlnID0gYW1kZ3B1X2VuY29kZXItPmVuY19wcml2Ow0KPiAgCQlk aWctPmRpZ19lbmNvZGVyID0gLTE7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2luY2x1ZGUvYXNpY19yZWcvZGNlL2RjZV82XzBfc2hfbWFzay5oDQo+IGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9pbmNsdWRlL2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21hc2suaA0KPiBpbmRleCA5 YTRkNGMyLi5hYmUwNWJjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1 ZGUvYXNpY19yZWcvZGNlL2RjZV82XzBfc2hfbWFzay5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvaW5jbHVkZS9hc2ljX3JlZy9kY2UvZGNlXzZfMF9zaF9tYXNrLmgNCj4gQEAgLTkwNiw2 ICs5MDYsOCBAQA0KPiAgI2RlZmluZQ0KPiBBWkFMSUFfRjBfQ09ERUNfRU5EUE9JTlRfREFUQV9f QVpBTElBX0VORFBPSU5UX1JFR19EQVRBX19TSElGVA0KPiAweDAwMDAwMDAwICAjZGVmaW5lDQo+ IEFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRFWF9fQVpBTElBX0VORFBPSU5UX1JFR19JTkRF WF9NQVNLDQo+IDB4MDAwMDAwZmZMICAjZGVmaW5lDQo+IEFaQUxJQV9GMF9DT0RFQ19FTkRQT0lO VF9JTkRFWF9fQVpBTElBX0VORFBPSU5UX1JFR19JTkRFWF9fU0hJRg0KPiBUIDB4MDAwMDAwMDAN Cj4gKyNkZWZpbmUNCj4gK0FaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRFWF9fQVpBTElBX0VO RFBPSU5UX1JFR19XUklURV9FTl8NCj4gTUFTSw0KPiArMHgwMDAwMDEwMEwgI2RlZmluZQ0KPiAr QVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVYX19BWkFMSUFfRU5EUE9JTlRfUkVHX1dSSVRF X0VOXw0KPiBfU0hJRlQNCj4gKzB4MDAwMDAwMDgNCj4gICNkZWZpbmUNCj4gQVpBTElBX0YwX0NP REVDX0ZVTkNUSU9OX0NPTlRST0xfQ09OVkVSVEVSX1NZTkNIUk9OSVpBVElPTl9fQw0KPiBPTlZF UlRFUl9TWU5DSFJPTklaQVRJT05fTUFTSyAweDAwMDAwMDNmTCAgI2RlZmluZQ0KPiBBWkFMSUFf RjBfQ09ERUNfRlVOQ1RJT05fQ09OVFJPTF9DT05WRVJURVJfU1lOQ0hST05JWkFUSU9OX19DDQo+ IE9OVkVSVEVSX1NZTkNIUk9OSVpBVElPTl9fU0hJRlQgMHgwMDAwMDAwMCAgI2RlZmluZQ0KPiBB WkFMSUFfRjBfQ09ERUNfRlVOQ1RJT05fQ09OVFJPTF9QT1dFUl9TVEFURV9fQ0xLU1RPUE9LX01B U0sNCj4gMHgwMDAwMDIwMEwNCj4gLS0NCj4gMi43LjQNCj4gDQo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+ IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4Cg==