From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Deucher, Alexander" Subject: RE: [PATCH] drm/amdgpu: add DP audio support for si dce6 Date: Tue, 21 Feb 2017 15:21:30 +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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBhbWQtZ2Z4IFttYWlsdG86YW1k LWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmDQo+IE9mIFhpYW9q aWUgWXVhbg0KPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDIwLCAyMDE3IDU6MTYgQU0NCj4gVG86 IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IENjOiBZdWFuLCBYaWFvamllDQo+IFN1 YmplY3Q6IFtQQVRDSF0gZHJtL2FtZGdwdTogYWRkIERQIGF1ZGlvIHN1cHBvcnQgZm9yIHNpIGRj ZTYNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFhpYW9qaWUgWXVhbiA8WGlhb2ppZS5ZdWFuQGFtZC5j b20+DQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYyAgICAg ICAgICAgICAgfCA0NTcNCj4gKysrKysrKysrKysrKysrKysrKy0tDQo+ICAuLi4vZHJtL2FtZC9p bmNsdWRlL2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21hc2suaCB8ICAgMiArDQo+ICAyIGZpbGVz IGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jDQo+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYw0KPiBpbmRleCA5NDg3N2NiLi5lYzJmMTIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jDQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92Nl8wLmMNCj4gQEAgLTExOCwx NCArMTE4LDMxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KPiAgc3RhdGljIHUzMiBkY2VfdjZf MF9hdWRpb19lbmRwdF9ycmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgCQkJCSAg ICAgdTMyIGJsb2NrX29mZnNldCwgdTMyIHJlZykNCj4gIHsNCj4gLQlEUk1fSU5GTygieHh4eDog ZGNlX3Y2XzBfYXVkaW9fZW5kcHRfcnJlZyAtLS0tbm8gaW1wbCEhISFcbiIpOw0KPiAtCXJldHVy biAwOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsJdTMyIHI7DQo+ICsNCj4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmYWRldi0+YXVkaW9fZW5kcHRfaWR4X2xvY2ssIGZsYWdzKTsNCj4gKwlX UkVHMzIobW1BWkFMSUFfRjBfQ09ERUNfRU5EUE9JTlRfSU5ERVggKyBibG9ja19vZmZzZXQsDQo+ IHJlZyk7DQo+ICsJciA9IFJSRUczMihtbUFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9EQVRBICsN Cj4gYmxvY2tfb2Zmc2V0KTsNCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5hdWRp b19lbmRwdF9pZHhfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJcmV0dXJuIHI7DQo+ICB9DQo+IA0K PiAgc3RhdGljIHZvaWQgZGNlX3Y2XzBfYXVkaW9fZW5kcHRfd3JlZyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwNCj4gIAkJCQkgICAgICB1MzIgYmxvY2tfb2Zmc2V0LCB1MzIgcmVnLCB1MzIg dikNCj4gIHsNCj4gLQlEUk1fSU5GTygieHh4eDogZGNlX3Y2XzBfYXVkaW9fZW5kcHRfd3JlZyAt LS0tbm8gaW1wbCEhISFcbiIpOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsJdTMyIHRt cDsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT5hdWRpb19lbmRwdF9pZHhfbG9j aywgZmxhZ3MpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQoMCwgQVpBTElBX0YwX0NPREVDX0VO RFBPSU5UX0lOREVYLA0KPiArCQkJQVpBTElBX0VORFBPSU5UX1JFR19JTkRFWCwgcmVnKTsNCj4g Kwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVY LA0KPiArCQkJQVpBTElBX0VORFBPSU5UX1JFR19XUklURV9FTiwgMSk7DQo+ICsJV1JFRzMyKG1t QVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVYICsgYmxvY2tfb2Zmc2V0LA0KPiB0bXApOw0K PiArCVdSRUczMihtbUFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9EQVRBICsgYmxvY2tfb2Zmc2V0 LA0KPiB2KTsNCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5hdWRpb19lbmRwdF9p ZHhfbG9jaywgZmxhZ3MpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBib29sIGRjZV92Nl8wX2lzX2lu X3ZibGFuayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IGNydGMpDQo+IEBAIC0xMjMx LDE3ICsxMjQ4LDE3IEBAIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2JhbmR3aWR0aF91cGRhdGUoc3Ry dWN0DQo+IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAJCWRjZV92Nl8wX3Byb2dyYW1fd2F0ZXJt YXJrcyhhZGV2LCBhZGV2LQ0KPiA+bW9kZV9pbmZvLmNydGNzW2krMV0sIGxiX3NpemUsIG51bV9o ZWFkcyk7DQo+ICAJfQ0KPiAgfQ0KPiAtLyoNCj4gKw0KPiAgc3RhdGljIHZvaWQgZGNlX3Y2XzBf YXVkaW9fZ2V0X2Nvbm5lY3RlZF9waW5zKHN0cnVjdCBhbWRncHVfZGV2aWNlDQo+ICphZGV2KQ0K PiAgew0KPiAgCWludCBpOw0KPiAtCXUzMiBvZmZzZXQsIHRtcDsNCj4gKwl1MzIgdG1wOw0KPiAN Cj4gIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+bW9kZV9pbmZvLmF1ZGlvLm51bV9waW5zOyBpKysp IHsNCj4gLQkJb2Zmc2V0ID0gYWRldi0+bW9kZV9pbmZvLmF1ZGlvLnBpbltpXS5vZmZzZXQ7DQo+ IC0JCXRtcCA9IFJSRUczMl9BVURJT19FTkRQVChvZmZzZXQsDQo+IC0NCj4gQVpfRjBfQ09ERUNf UElOX0NPTlRST0xfUkVTUE9OU0VfQ09ORklHVVJBVElPTl9ERUZBVUxUKTsNCj4gLQkJaWYgKCgo dG1wICYgUE9SVF9DT05ORUNUSVZJVFlfTUFTSykgPj4NCj4gUE9SVF9DT05ORUNUSVZJVFlfU0hJ RlQpID09IDEpDQo+ICsJCXRtcCA9IFJSRUczMl9BVURJT19FTkRQVChhZGV2LQ0KPiA+bW9kZV9p bmZvLmF1ZGlvLnBpbltpXS5vZmZzZXQsDQo+ICsNCj4gCWl4QVpBTElBX0YwX0NPREVDX1BJTl9D T05UUk9MX1JFU1BPTlNFX0NPTkZJR1VSQVRJT05fDQo+IERFRkFVTFQpOw0KPiArCQlpZiAoUkVH X0dFVF9GSUVMRCh0bXAsDQo+IEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9D T05GSUdVUkFUSU9OX0RFRkFVTFQsDQo+ICsJCQkJCVBPUlRfQ09OTkVDVElWSVRZKSkNCj4gIAkJ CWFkZXYtPm1vZGVfaW5mby5hdWRpby5waW5baV0uY29ubmVjdGVkID0gZmFsc2U7DQo+ICAJCWVs c2UNCj4gIAkJCWFkZXYtPm1vZGVfaW5mby5hdWRpby5waW5baV0uY29ubmVjdGVkID0gdHJ1ZTsN Cj4gQEAgLTEyNjgsNDAgKzEyODUsMjAxIEBAIHN0YXRpYyB2b2lkDQo+IGRjZV92Nl8wX2FmbXRf YXVkaW9fc2VsZWN0X3BpbihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpDQo+ICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBlbmNvZGVyLT5kZXYtPmRldl9wcml2YXRlOw0KPiAgCXN0 cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5jb2Rl cihlbmNvZGVyKTsNCj4gIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IGFt ZGdwdV9lbmNvZGVyLQ0KPiA+ZW5jX3ByaXY7DQo+IC0JdTMyIG9mZnNldDsNCj4gDQo+ICAJaWYg KCFkaWcgfHwgIWRpZy0+YWZtdCB8fCAhZGlnLT5hZm10LT5waW4pDQo+ICAJCXJldHVybjsNCj4g DQo+IC0Jb2Zmc2V0ID0gZGlnLT5hZm10LT5vZmZzZXQ7DQo+IC0NCj4gLQlXUkVHMzIoQUZNVF9B VURJT19TUkNfQ09OVFJPTCArIG9mZnNldCwNCj4gLQkgICAgICAgQUZNVF9BVURJT19TUkNfU0VM RUNUKGRpZy0+YWZtdC0+cGluLT5pZCkpOw0KPiAtDQo+ICsJV1JFRzMyKG1tQUZNVF9BVURJT19T UkNfQ09OVFJPTCArIGRpZy0+YWZtdC0+b2Zmc2V0LA0KPiArCSAgICAgICBSRUdfU0VUX0ZJRUxE KDAsIEFGTVRfQVVESU9fU1JDX0NPTlRST0wsDQo+IEFGTVRfQVVESU9fU1JDX1NFTEVDVCwNCj4g KwkJICAgICAgICAgICAgIGRpZy0+YWZtdC0+cGluLT5pZCkpOw0KPiAgfQ0KPiANCj4gIHN0YXRp YyB2b2lkIGRjZV92Nl8wX2F1ZGlvX3dyaXRlX2xhdGVuY3lfZmllbGRzKHN0cnVjdCBkcm1fZW5j b2Rlcg0KPiAqZW5jb2RlciwNCj4gIAkJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlDQo+ICpt b2RlKQ0KPiAgew0KPiAtCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hdWRpb193cml0ZV9sYXRl bmN5X2ZpZWxkcy0tLW5vDQo+IGltcCEhISEhXG4iKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFtZGdwdV9l bmNvZGVyICphbWRncHVfZW5jb2RlciA9DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0K PiArCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXIt DQo+ID5lbmNfcHJpdjsNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPiAr CXN0cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVfY29ubmVjdG9yID0gTlVMTDsNCj4gKwlp bnQgaW50ZXJsYWNlID0gMDsNCj4gKwl1MzIgdG1wOw0KPiArDQo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjb25uZWN0b3IsICZlbmNvZGVyLT5kZXYtDQo+ID5tb2RlX2NvbmZpZy5jb25uZWN0b3Jf bGlzdCwgaGVhZCkgew0KPiArCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29kZXIpIHsN Cj4gKwkJCWFtZGdwdV9jb25uZWN0b3IgPQ0KPiB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rv cik7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghYW1kZ3B1X2Nv bm5lY3Rvcikgew0KPiArCQlEUk1fRVJST1IoIkNvdWxkbid0IGZpbmQgZW5jb2RlcidzIGNvbm5l Y3RvclxuIik7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAobW9kZS0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkNCj4gKwkJaW50ZXJsYWNlID0gMTsNCj4gKw0KPiAr CWlmIChjb25uZWN0b3ItPmxhdGVuY3lfcHJlc2VudFtpbnRlcmxhY2VdKSB7DQo+ICsJCXRtcCA9 IFJFR19TRVRfRklFTEQoMCwNCj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX1JFU1BPTlNF X0xJUFNZTkMsDQo+ICsJCQkJVklERU9fTElQU1lOQywgY29ubmVjdG9yLQ0KPiA+dmlkZW9fbGF0 ZW5jeVtpbnRlcmxhY2VdKTsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJ QV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9MSVBTWU5DLA0KPiArCQkJCUFVRElPX0xJ UFNZTkMsIGNvbm5lY3Rvci0NCj4gPmF1ZGlvX2xhdGVuY3lbaW50ZXJsYWNlXSk7DQo+ICsJfSBl bHNlIHsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCgwLA0KPiBBWkFMSUFfRjBfQ09ERUNfUElO X0NPTlRST0xfUkVTUE9OU0VfTElQU1lOQywNCj4gKwkJCQlWSURFT19MSVBTWU5DLCAwKTsNCj4g KwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJP TF9SRVNQT05TRV9MSVBTWU5DLA0KPiArCQkJCUFVRElPX0xJUFNZTkMsIDApOw0KPiArCX0NCj4g KwlXUkVHMzJfQVVESU9fRU5EUFQoZGlnLT5hZm10LT5waW4tPm9mZnNldCwNCj4gKw0KPiBpeEFa QUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9SRVNQT05TRV9MSVBTWU5DLCB0bXApOw0KPiAgfQ0K PiANCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2F1ZGlvX3dyaXRlX3NwZWFrZXJfYWxsb2NhdGlv bihzdHJ1Y3QgZHJtX2VuY29kZXINCj4gKmVuY29kZXIpDQo+ICB7DQo+IC0JRFJNX0lORk8oInh4 eHg6IGRjZV92Nl8wX2F1ZGlvX3dyaXRlX3NwZWFrZXJfYWxsb2NhdGlvbi0tLW5vDQo+IGltcCEh ISEhXG4iKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGVuY29kZXItPmRldi0+ ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9 DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0KPiArCXN0cnVjdCBhbWRncHVfZW5jb2Rl cl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXItDQo+ID5lbmNfcHJpdjsNCj4gKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPiArCXN0cnVjdCBhbWRncHVfY29ubmVjdG9y ICphbWRncHVfY29ubmVjdG9yID0gTlVMTDsNCj4gKwl1OCAqc2FkYiA9IE5VTEw7DQo+ICsJaW50 IHNhZF9jb3VudDsNCj4gKwl1MzIgdG1wOw0KPiArDQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShj b25uZWN0b3IsICZlbmNvZGVyLT5kZXYtDQo+ID5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwg aGVhZCkgew0KPiArCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29kZXIpIHsNCj4gKwkJ CWFtZGdwdV9jb25uZWN0b3IgPQ0KPiB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghYW1kZ3B1X2Nvbm5lY3Rv cikgew0KPiArCQlEUk1fRVJST1IoIkNvdWxkbid0IGZpbmQgZW5jb2RlcidzIGNvbm5lY3Rvclxu Iik7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlzYWRfY291bnQgPQ0KPiBkcm1fZWRp ZF90b19zcGVha2VyX2FsbG9jYXRpb24oYW1kZ3B1X2Nvbm5lY3Rvcl9lZGlkKGNvbm5lY3Rvciks DQo+ICZzYWRiKTsNCj4gKwlpZiAoc2FkX2NvdW50IDwgMCkgew0KPiArCQlEUk1fRVJST1IoIkNv dWxkbid0IHJlYWQgU3BlYWtlciBBbGxvY2F0aW9uIERhdGEgQmxvY2s6DQo+ICVkXG4iLCBzYWRf Y291bnQpOw0KPiArCQlzYWRfY291bnQgPSAwOw0KPiArCX0NCj4gKw0KPiArCS8qIHByb2dyYW0g dGhlIHNwZWFrZXIgYWxsb2NhdGlvbiAqLw0KPiArCXRtcCA9IFJSRUczMl9BVURJT19FTkRQVChk aWctPmFmbXQtPnBpbi0+b2Zmc2V0LA0KPiArDQo+IAlpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09O VFJPTF9DSEFOTkVMX1NQRUFLRVIpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLA0KPiBB WkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VSLA0KPiArCQkJSERNSV9D T05ORUNUSU9OLCAwKTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4gQVpBTElBX0Yw X0NPREVDX1BJTl9DT05UUk9MX0NIQU5ORUxfU1BFQUtFUiwNCj4gKwkJCURQX0NPTk5FQ1RJT04s IDApOw0KPiArDQo+ICsJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0NCj4gRFJNX01P REVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KQ0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwN Cj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0NIQU5ORUxfU1BFQUtFUiwNCj4gKwkJCQlE UF9DT05ORUNUSU9OLCAxKTsNCj4gKwllbHNlDQo+ICsJCXRtcCA9IFJFR19TRVRfRklFTEQodG1w LA0KPiBBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9TUEVBS0VSLA0KPiArCQkJ CUhETUlfQ09OTkVDVElPTiwgMSk7DQo+ICsNCj4gKwlpZiAoc2FkX2NvdW50KQ0KPiArCQl0bXAg PSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0NIQU5O RUxfU1BFQUtFUiwNCj4gKwkJCQlTUEVBS0VSX0FMTE9DQVRJT04sIHNhZGJbMF0pOw0KPiArCWVs c2UNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFaQUxJQV9GMF9DT0RFQ19QSU5f Q09OVFJPTF9DSEFOTkVMX1NQRUFLRVIsDQo+ICsJCQkJU1BFQUtFUl9BTExPQ0FUSU9OLCA1KTsg Lyogc3RlcmVvICovDQo+ICsNCj4gKwlXUkVHMzJfQVVESU9fRU5EUFQoZGlnLT5hZm10LT5waW4t Pm9mZnNldCwNCj4gKw0KPiAJaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQ0hBTk5FTF9T UEVBS0VSLCB0bXApOw0KPiArDQo+ICsJa2ZyZWUoc2FkYik7DQo+ICB9DQo+IA0KPiAgc3RhdGlj IHZvaWQgZGNlX3Y2XzBfYXVkaW9fd3JpdGVfc2FkX3JlZ3Moc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQ0KPiAgew0KPiAtCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hdWRpb193cml0ZV9z YWRfcmVncy0tLW5vDQo+IGltcCEhISEhXG4iKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNv ZGVyICphbWRncHVfZW5jb2RlciA9DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOw0KPiAr CXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29kZXItDQo+ ID5lbmNfcHJpdjsNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPiArCXN0 cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVfY29ubmVjdG9yID0gTlVMTDsNCj4gKwlzdHJ1 Y3QgY2VhX3NhZCAqc2FkczsNCj4gKwlpbnQgaSwgc2FkX2NvdW50Ow0KPiArDQo+ICsJc3RhdGlj IGNvbnN0IHUxNiBlbGRfcmVnX3RvX3R5cGVbXVsyXSA9IHsNCj4gKwkJew0KPiBpeEFaQUxJQV9G MF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SMCwNCj4gSERNSV9BVURJT19DT0RJ TkdfVFlQRV9QQ00gfSwNCj4gKwkJew0KPiBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9B VURJT19ERVNDUklQVE9SMSwNCj4gSERNSV9BVURJT19DT0RJTkdfVFlQRV9BQzMgfSwNCj4gKwkJ ew0KPiBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SMiwNCj4g SERNSV9BVURJT19DT0RJTkdfVFlQRV9NUEVHMSB9LA0KPiArCQl7DQo+IGl4QVpBTElBX0YwX0NP REVDX1BJTl9DT05UUk9MX0FVRElPX0RFU0NSSVBUT1IzLA0KPiBIRE1JX0FVRElPX0NPRElOR19U WVBFX01QMyB9LA0KPiArCQl7DQo+IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElP X0RFU0NSSVBUT1I0LA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBFX01QRUcyIH0sDQo+ICsJCXsN Cj4gaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRPUjUsDQo+IEhE TUlfQVVESU9fQ09ESU5HX1RZUEVfQUFDX0xDIH0sDQo+ICsJCXsNCj4gaXhBWkFMSUFfRjBfQ09E RUNfUElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRPUjYsDQo+IEhETUlfQVVESU9fQ09ESU5HX1RZ UEVfRFRTIH0sDQo+ICsJCXsNCj4gaXhBWkFMSUFfRjBfQ09ERUNfUElOX0NPTlRST0xfQVVESU9f REVTQ1JJUFRPUjcsDQo+IEhETUlfQVVESU9fQ09ESU5HX1RZUEVfQVRSQUMgfSwNCj4gKwkJew0K PiBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SOSwNCj4gSERN SV9BVURJT19DT0RJTkdfVFlQRV9FQUMzIH0sDQo+ICsJCXsNCj4gaXhBWkFMSUFfRjBfQ09ERUNf UElOX0NPTlRST0xfQVVESU9fREVTQ1JJUFRPUjEwLA0KPiBIRE1JX0FVRElPX0NPRElOR19UWVBF X0RUU19IRCB9LA0KPiArCQl7DQo+IGl4QVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FVRElP X0RFU0NSSVBUT1IxMSwNCj4gSERNSV9BVURJT19DT0RJTkdfVFlQRV9NTFAgfSwNCj4gKwkJew0K PiBpeEFaQUxJQV9GMF9DT0RFQ19QSU5fQ09OVFJPTF9BVURJT19ERVNDUklQVE9SMTMsDQo+IEhE TUlfQVVESU9fQ09ESU5HX1RZUEVfV01BX1BSTyB9LA0KPiArCX07DQo+ICsNCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmVuY29kZXItPmRldi0NCj4gPm1vZGVfY29uZmlnLmNv bm5lY3Rvcl9saXN0LCBoZWFkKSB7DQo+ICsJCWlmIChjb25uZWN0b3ItPmVuY29kZXIgPT0gZW5j b2Rlcikgew0KPiArCQkJYW1kZ3B1X2Nvbm5lY3RvciA9DQo+IHRvX2FtZGdwdV9jb25uZWN0b3Io Y29ubmVjdG9yKTsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFh bWRncHVfY29ubmVjdG9yKSB7DQo+ICsJCURSTV9FUlJPUigiQ291bGRuJ3QgZmluZCBlbmNvZGVy J3MgY29ubmVjdG9yXG4iKTsNCj4gKwkJcmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCXNhZF9jb3Vu dCA9DQo+IGRybV9lZGlkX3RvX3NhZChhbWRncHVfY29ubmVjdG9yX2VkaWQoY29ubmVjdG9yKSwg JnNhZHMpOw0KPiArCWlmIChzYWRfY291bnQgPD0gMCkgew0KPiArCQlEUk1fRVJST1IoIkNvdWxk bid0IHJlYWQgU0FEczogJWRcbiIsIHNhZF9jb3VudCk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlbGRfcmVnX3RvX3R5cGUpOyBpKysp IHsNCj4gKwkJdTMyIHRtcCA9IDA7DQo+ICsJCXU4IHN0ZXJlb19mcmVxcyA9IDA7DQo+ICsJCWlu dCBtYXhfY2hhbm5lbHMgPSAtMTsNCj4gKwkJaW50IGo7DQo+ICsNCj4gKwkJZm9yIChqID0gMDsg aiA8IHNhZF9jb3VudDsgaisrKSB7DQo+ICsJCQlzdHJ1Y3QgY2VhX3NhZCAqc2FkID0gJnNhZHNb al07DQo+ICsNCj4gKwkJCWlmIChzYWQtPmZvcm1hdCA9PSBlbGRfcmVnX3RvX3R5cGVbaV1bMV0p IHsNCj4gKwkJCQlpZiAoc2FkLT5jaGFubmVscyA+IG1heF9jaGFubmVscykgew0KPiArCQkJCQl0 bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwNCj4gQVpBTElBX0YwX0NPREVDX1BJTl9DT05UUk9MX0FV RElPX0RFU0NSSVBUT1IwLA0KPiArCQkJCQkJCU1BWF9DSEFOTkVMUywNCj4gc2FkLT5jaGFubmVs 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+IEFaQUxJQV9GMF9DT0RF Q19QSU5fQ09OVFJPTF9IT1RfUExVR19DT05UUk9MX19BVURJT19FTkFCTEUNCj4gRF9NQVNLIDog MCk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGNvbnN0IHUzMiBwaW5fb2Zmc2V0c1s3XSA9DQo+IEBA IC0xMzE3LDEyICsxNDk1LDQ0IEBAIHN0YXRpYyBjb25zdCB1MzIgcGluX29mZnNldHNbN10gPQ0K PiANCj4gIHN0YXRpYyBpbnQgZGNlX3Y2XzBfYXVkaW9faW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikNCj4gIHsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmICghYW1kZ3B1X2F1ZGlvKQ0K PiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCWFkZXYtPm1vZGVfaW5mby5hdWRpby5lbmFibGVkID0g dHJ1ZTsNCj4gKw0KPiArCWFkZXYtPm1vZGVfaW5mby5hdWRpby5udW1fcGlucyA9IDc7DQoNCg0K bnVtX3BpbnMgc2hvdWxkIGJlIDYgb24gU0kuICBXaXRoIHRoYXQgZml4ZWQ6DQoNClJldmlld2Vk LWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+DQoNCj4gKw0KPiAr CWZvciAoaSA9IDA7IGkgPCBhZGV2LT5tb2RlX2luZm8uYXVkaW8ubnVtX3BpbnM7IGkrKykgew0K PiArCQlhZGV2LT5tb2RlX2luZm8uYXVkaW8ucGluW2ldLmNoYW5uZWxzID0gLTE7DQo+ICsJCWFk ZXYtPm1vZGVfaW5mby5hdWRpby5waW5baV0ucmF0ZSA9IC0xOw0KPiArCQlhZGV2LT5tb2RlX2lu Zm8uYXVkaW8ucGluW2ldLmJpdHNfcGVyX3NhbXBsZSA9IC0xOw0KPiArCQlhZGV2LT5tb2RlX2lu Zm8uYXVkaW8ucGluW2ldLnN0YXR1c19iaXRzID0gMDsNCj4gKwkJYWRldi0+bW9kZV9pbmZvLmF1 ZGlvLnBpbltpXS5jYXRlZ29yeV9jb2RlID0gMDsNCj4gKwkJYWRldi0+bW9kZV9pbmZvLmF1ZGlv LnBpbltpXS5jb25uZWN0ZWQgPSBmYWxzZTsNCj4gKwkJYWRldi0+bW9kZV9pbmZvLmF1ZGlvLnBp bltpXS5vZmZzZXQgPSBwaW5fb2Zmc2V0c1tpXTsNCj4gKwkJYWRldi0+bW9kZV9pbmZvLmF1ZGlv LnBpbltpXS5pZCA9IGk7DQo+ICsJCWRjZV92Nl8wX2F1ZGlvX2VuYWJsZShhZGV2LCAmYWRldi0N Cj4gPm1vZGVfaW5mby5hdWRpby5waW5baV0sIGZhbHNlKTsNCj4gKwl9DQo+ICsNCj4gIAlyZXR1 cm4gMDsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBkY2VfdjZfMF9hdWRpb19maW5pKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAgew0KPiArCWludCBpOw0KPiArDQo+ICsJaWYgKCFh bWRncHVfYXVkaW8pDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWlmICghYWRldi0+bW9kZV9pbmZv LmF1ZGlvLmVuYWJsZWQpDQo+ICsJCXJldHVybjsNCj4gDQo+ICsJZm9yIChpID0gMDsgaSA8IGFk ZXYtPm1vZGVfaW5mby5hdWRpby5udW1fcGluczsgaSsrKQ0KPiArCQlkY2VfdjZfMF9hdWRpb19l bmFibGUoYWRldiwgJmFkZXYtDQo+ID5tb2RlX2luZm8uYXVkaW8ucGluW2ldLCBmYWxzZSk7DQo+ ICsNCj4gKwlhZGV2LT5tb2RlX2luZm8uYXVkaW8uZW5hYmxlZCA9IGZhbHNlOw0KPiAgfQ0KPiAN Cj4gIC8qDQo+IEBAIC0xMzMxLDI4ICsxNTQxLDIwNCBAQCBzdGF0aWMgdm9pZCBkY2VfdjZfMF9h Zm10X3VwZGF0ZV9BQ1Ioc3RydWN0DQo+IGRybV9lbmNvZGVyICplbmNvZGVyLCB1aW50MzJfdCBj bG9jaw0KPiAgCURSTV9JTkZPKCJ4eHh4OiBkY2VfdjZfMF9hZm10X3VwZGF0ZV9BQ1ItLS1ubyBp bXAhISEhIVxuIik7DQo+ICB9DQo+ICAqLw0KPiAtLyoNCj4gLSAqIGJ1aWxkIGEgSERNSSBWaWRl byBJbmZvIEZyYW1lDQo+IC0gKi8NCj4gLS8qDQo+ICsNCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8w X2FmbXRfdXBkYXRlX2F2aV9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVyDQo+ICplbmNvZGVy LA0KPiAtCQkJCQkgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkNCj4gKwkJCQkJICAg ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQ0KPiAgew0KPiAtCURSTV9JTkZPKCJ4 eHh4OiBkY2VfdjZfMF9hZm10X3VwZGF0ZV9hdmlfaW5mb2ZyYW1lLS0tbm8NCj4gaW1wISEhISFc biIpOw0KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7DQo+ICsJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPiArCXN0cnVjdCBh bWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5jb2RlcihlbmNv ZGVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IGFtZGdwdV9l bmNvZGVyLQ0KPiA+ZW5jX3ByaXY7DQo+ICsJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSBmcmFt ZTsNCj4gKwl1OCBidWZmZXJbSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKw0KPiBIRE1JX0FW SV9JTkZPRlJBTUVfU0laRV07DQo+ICsJdWludDhfdCAqcGF5bG9hZCA9IGJ1ZmZlciArIDM7DQo+ ICsJdWludDhfdCAqaGVhZGVyID0gYnVmZmVyOw0KPiArCXNzaXplX3QgZXJyOw0KPiArCXUzMiB0 bXA7DQo+ICsNCj4gKwllcnIgPSBkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9t b2RlKCZmcmFtZSwNCj4gbW9kZSk7DQo+ICsJaWYgKGVyciA8IDApIHsNCj4gKwkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gc2V0dXAgQVZJIGluZm9mcmFtZTogJXpkXG4iLCBlcnIpOw0KPiArCQlyZXR1 cm47DQo+ICsJfQ0KPiArDQo+ICsJZXJyID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3BhY2soJmZyYW1l LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsNCj4gKwlpZiAoZXJyIDwgMCkgew0KPiArCQlEUk1f RVJST1IoImZhaWxlZCB0byBwYWNrIEFWSSBpbmZvZnJhbWU6ICV6ZFxuIiwgZXJyKTsNCj4gKwkJ cmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCVdSRUczMihtbUFGTVRfQVZJX0lORk8wICsgZGlnLT5h Zm10LT5vZmZzZXQsDQo+ICsJICAgICAgIHBheWxvYWRbMHgwXSB8IChwYXlsb2FkWzB4MV0gPDwg OCkgfCAocGF5bG9hZFsweDJdIDw8IDE2KSB8DQo+IChwYXlsb2FkWzB4M10gPDwgMjQpKTsNCj4g KwlXUkVHMzIobW1BRk1UX0FWSV9JTkZPMSArIGRpZy0+YWZtdC0+b2Zmc2V0LA0KPiArCSAgICAg ICBwYXlsb2FkWzB4NF0gfCAocGF5bG9hZFsweDVdIDw8IDgpIHwgKHBheWxvYWRbMHg2XSA8PCAx NikgfA0KPiAocGF5bG9hZFsweDddIDw8IDI0KSk7DQo+ICsJV1JFRzMyKG1tQUZNVF9BVklfSU5G TzIgKyBkaWctPmFmbXQtPm9mZnNldCwNCj4gKwkgICAgICAgcGF5bG9hZFsweDhdIHwgKHBheWxv YWRbMHg5XSA8PCA4KSB8IChwYXlsb2FkWzB4QV0gPDwgMTYpIHwNCj4gKHBheWxvYWRbMHhCXSA8 PCAyNCkpOw0KPiArCVdSRUczMihtbUFGTVRfQVZJX0lORk8zICsgZGlnLT5hZm10LT5vZmZzZXQs DQo+ICsJICAgICAgIHBheWxvYWRbMHhDXSB8IChwYXlsb2FkWzB4RF0gPDwgOCkgfCAoaGVhZGVy WzFdIDw8IDI0KSk7DQo+ICsNCj4gKwl0bXAgPSBSUkVHMzIobW1IRE1JX0lORk9GUkFNRV9DT05U Uk9MMSArIGRpZy0+YWZtdC0NCj4gPm9mZnNldCk7DQo+ICsJLyogYW55dGhpbmcgb3RoZXIgdGhh biAwICovDQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEhETUlfSU5GT0ZSQU1FX0NPTlRS T0wxLA0KPiArCQkJSERNSV9BVURJT19JTkZPX0xJTkUsIDIpOw0KPiArCVdSRUczMihtbUhETUlf SU5GT0ZSQU1FX0NPTlRST0wxICsgZGlnLT5hZm10LT5vZmZzZXQsDQo+IHRtcCk7DQo+ICB9DQo+ IA0KPiAgc3RhdGljIHZvaWQgZGNlX3Y2XzBfYXVkaW9fc2V0X2R0byhzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsIHUzMg0KPiBjbG9jaykNCj4gIHsNCj4gLQlEUk1fSU5GTygieHh4eDogZGNl X3Y2XzBfYXVkaW9fc2V0X2R0by0tLW5vIGltcCEhISEhXG4iKTsNCj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFtZGdwdV9jcnRj ID0gdG9fYW1kZ3B1X2NydGMoZW5jb2Rlci0NCj4gPmNydGMpOw0KPiArCXUzMiB0bXA7DQo+ICsN Cj4gKwkvKg0KPiArCSAqIFR3byBkdG9zOiBnZW5lcmFsbHkgdXNlIGR0bzAgZm9yIGhkbWksIGR0 bzEgZm9yIGRwLg0KPiArCSAqIEV4cHJlc3MgWzI0TUh6IC8gdGFyZ2V0IHBpeGVsIGNsb2NrXSBh cyBhbiBleGFjdCByYXRpb25hbA0KPiArCSAqIG51bWJlciAoY29lZmZpY2llbnQgb2YgdHdvIGlu dGVnZXIgbnVtYmVycy4NCj4gRENDR19BVURJT19EVE94X1BIQVNFDQo+ICsJICogaXMgdGhlIG51 bWVyYXRvciwgRENDR19BVURJT19EVE94X01PRFVMRSBpcyB0aGUNCj4gZGVub21pbmF0b3INCj4g KwkgKi8NCj4gKwl0bXAgPSBSUkVHMzIobW1EQ0NHX0FVRElPX0RUT19TT1VSQ0UpOw0KPiArCXRt cCA9IFJFR19TRVRfRklFTEQodG1wLCBEQ0NHX0FVRElPX0RUT19TT1VSQ0UsDQo+ICsJCQlEQ0NH X0FVRElPX0RUTzBfU09VUkNFX1NFTCwgYW1kZ3B1X2NydGMtDQo+ID5jcnRjX2lkKTsNCj4gKwl0 bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRENDR19BVURJT19EVE9fU09VUkNFLA0KPiBEQ0NHX0FV RElPX0RUT19TRUwsIDEpOw0KPiArCVdSRUczMihtbURDQ0dfQVVESU9fRFRPX1NPVVJDRSwgdG1w KTsNCj4gKwlXUkVHMzIobW1EQ0NHX0FVRElPX0RUTzFfUEhBU0UsIDI0MDAwKTsNCj4gKwlXUkVH MzIobW1EQ0NHX0FVRElPX0RUTzFfTU9EVUxFLCBjbG9jayk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGRjZV92Nl8wX3NldF9hdWRpb19wYWNrZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7DQo+ ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPiArCXN0 cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPQ0KPiB0b19hbWRncHVfZW5jb2Rl cihlbmNvZGVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IGFt ZGdwdV9lbmNvZGVyLQ0KPiA+ZW5jX3ByaXY7DQo+ICsJdTMyIHRtcDsNCj4gKw0KPiArCXRtcCA9 IFJSRUczMihtbUFGTVRfSU5GT0ZSQU1FX0NPTlRST0wwICsgZGlnLT5hZm10LQ0KPiA+b2Zmc2V0 KTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQUZNVF9JTkZPRlJBTUVfQ09OVFJPTDAs DQo+IEFGTVRfQVVESU9fSU5GT19VUERBVEUsIDEpOw0KPiArCVdSRUczMihtbUFGTVRfSU5GT0ZS QU1FX0NPTlRST0wwICsgZGlnLT5hZm10LT5vZmZzZXQsDQo+IHRtcCk7DQo+ICsNCj4gKwl0bXAg PSBSUkVHMzIobW1BRk1UXzYwOTU4XzAgKyBkaWctPmFmbXQtPm9mZnNldCk7DQo+ICsJdG1wID0g UkVHX1NFVF9GSUVMRCh0bXAsIEFGTVRfNjA5NThfMCwNCj4gQUZNVF82MDk1OF9DU19DSEFOTkVM X05VTUJFUl9MLCAxKTsNCj4gKwlXUkVHMzIobW1BRk1UXzYwOTU4XzAgKyBkaWctPmFmbXQtPm9m ZnNldCwgdG1wKTsNCj4gKw0KPiArCXRtcCA9IFJSRUczMihtbUFGTVRfNjA5NThfMSArIGRpZy0+ YWZtdC0+b2Zmc2V0KTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQUZNVF82MDk1OF8x LA0KPiBBRk1UXzYwOTU4X0NTX0NIQU5ORUxfTlVNQkVSX1IsIDIpOw0KPiArCVdSRUczMihtbUFG TVRfNjA5NThfMSArIGRpZy0+YWZtdC0+b2Zmc2V0LCB0bXApOw0KPiArDQo+ICsJdG1wID0gUlJF RzMyKG1tQUZNVF82MDk1OF8yICsgZGlnLT5hZm10LT5vZmZzZXQpOw0KPiArCXRtcCA9IFJFR19T RVRfRklFTEQodG1wLCBBRk1UXzYwOTU4XzIsDQo+IEFGTVRfNjA5NThfQ1NfQ0hBTk5FTF9OVU1C RVJfMiwgMyk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEFGTVRfNjA5NThfMiwNCj4g QUZNVF82MDk1OF9DU19DSEFOTkVMX05VTUJFUl8zLCA0KTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJ RUxEKHRtcCwgQUZNVF82MDk1OF8yLA0KPiBBRk1UXzYwOTU4X0NTX0NIQU5ORUxfTlVNQkVSXzQs IDUpOw0KPiArCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBBRk1UXzYwOTU4XzIsDQo+IEFGTVRf NjA5NThfQ1NfQ0hBTk5FTF9OVU1CRVJfNSwgNik7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0 bXAsIEFGTVRfNjA5NThfMiwNCj4gQUZNVF82MDk1OF9DU19DSEFOTkVMX05VTUJFUl82LCA3KTsN Cj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQUZNVF82MDk1OF8yLA0KPiBBRk1UXzYwOTU4 X0NTX0NIQU5ORUxfTlVNQkVSXzcsIDgpOw0KPiArCVdSRUczMihtbUFGTVRfNjA5NThfMiArIGRp Zy0+YWZtdC0+b2Zmc2V0LCB0bXApOw0KPiArDQo+ICsJdG1wID0gUlJFRzMyKG1tQUZNVF9BVURJ T19QQUNLRVRfQ09OVFJPTDIgKyBkaWctPmFmbXQtDQo+ID5vZmZzZXQpOw0KPiArCXRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBBRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MMiwNCj4gQUZNVF9BVURJ T19DSEFOTkVMX0VOQUJMRSwgMHhmZik7DQo+ICsJV1JFRzMyKG1tQUZNVF9BVURJT19QQUNLRVRf Q09OVFJPTDIgKyBkaWctPmFmbXQtDQo+ID5vZmZzZXQsIHRtcCk7DQo+ICsNCj4gKwl0bXAgPSBS UkVHMzIobW1IRE1JX0FVRElPX1BBQ0tFVF9DT05UUk9MICsgZGlnLT5hZm10LQ0KPiA+b2Zmc2V0 KTsNCj4gKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgSERNSV9BVURJT19QQUNLRVRfQ09OVFJP TCwNCj4gSERNSV9BVURJT19ERUxBWV9FTiwgMSk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0 bXAsIEhETUlfQVVESU9fUEFDS0VUX0NPTlRST0wsDQo+IEhETUlfQVVESU9fUEFDS0VUU19QRVJf TElORSwgMyk7DQo+ICsJV1JFRzMyKG1tSERNSV9BVURJT19QQUNLRVRfQ09OVFJPTCArIGRpZy0+ YWZtdC0+b2Zmc2V0LA0KPiB0bXApOw0KPiArDQo+ICsJdG1wID0gUlJFRzMyKG1tQUZNVF9BVURJ T19QQUNLRVRfQ09OVFJPTCArIGRpZy0+YWZtdC0NCj4gPm9mZnNldCk7DQo+ICsJdG1wID0gUkVH X1NFVF9GSUVMRCh0bXAsIEFGTVRfQVVESU9fUEFDS0VUX0NPTlRST0wsDQo+IEFGTVRfUkVTRVRf RklGT19XSEVOX0FVRElPX0RJUywgMSk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEFG TVRfQVVESU9fUEFDS0VUX0NPTlRST0wsDQo+IEFGTVRfNjA5NThfQ1NfVVBEQVRFLCAxKTsNCj4g KwlXUkVHMzIobW1BRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MICsgZGlnLT5hZm10LT5vZmZzZXQs DQo+IHRtcCk7DQo+ICB9DQo+IC0qLw0KPiAtLyoNCj4gLSAqIHVwZGF0ZSB0aGUgaW5mbyBmcmFt ZXMgd2l0aCB0aGUgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGRpc3BsYXkgbW9kZQ0KPiAtICovDQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGRjZV92Nl8wX2F1ZGlvX3NldF9tdXRlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwgYm9vbA0KPiBtdXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBlbmNvZGVyLT5kZXY7DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBk ZXYtPmRldl9wcml2YXRlOw0KPiArCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29k ZXIgPQ0KPiB0b19hbWRncHVfZW5jb2RlcihlbmNvZGVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2Vu Y29kZXJfYXRvbV9kaWcgKmRpZyA9IGFtZGdwdV9lbmNvZGVyLQ0KPiA+ZW5jX3ByaXY7DQo+ICsJ dTMyIHRtcDsNCj4gKw0KPiArCXRtcCA9IFJSRUczMihtbUhETUlfR0MgKyBkaWctPmFmbXQtPm9m ZnNldCk7DQo+ICsJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIEhETUlfR0MsIEhETUlfR0NfQVZN VVRFLCBtdXRlID8NCj4gMSA6IDApOw0KPiArCVdSRUczMihtbUhETUlfR0MgKyBkaWctPmFmbXQt Pm9mZnNldCwgdG1wKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZGNlX3Y2XzBfYXVkaW9f ZHBfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgYm9vbA0KPiBlbmFibGUpDQo+ ICt7DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4gKwlzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IGFt ZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9DQo+IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29k ZXIpOw0KPiArCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2Vu Y29kZXItDQo+ID5lbmNfcHJpdjsNCj4gKwl1MzIgdG1wOw0KPiArDQo+ICsJaWYgKGVuYWJsZSkg ew0KPiArCQl0bXAgPSBSUkVHMzIobW1BRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MICsgZGlnLQ0K PiA+YWZtdC0+b2Zmc2V0KTsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsDQo+IEFGTVRf QVVESU9fUEFDS0VUX0NPTlRST0wsIEFGTVRfQVVESU9fU0FNUExFX1NFTkQsIDEpOw0KPiArCQlX UkVHMzIobW1BRk1UX0FVRElPX1BBQ0tFVF9DT05UUk9MICsgZGlnLT5hZm10LQ0KPiA+b2Zmc2V0 LCB0bXApOw0KPiArDQo+ICsJCXRtcCA9IFJSRUczMihtbURQX1NFQ19USU1FU1RBTVAgKyBkaWct PmFmbXQtDQo+ID5vZmZzZXQpOw0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRFBfU0VD X1RJTUVTVEFNUCwNCj4gRFBfU0VDX1RJTUVTVEFNUF9NT0RFLCAxKTsNCj4gKwkJV1JFRzMyKG1t RFBfU0VDX1RJTUVTVEFNUCArIGRpZy0+YWZtdC0+b2Zmc2V0LA0KPiB0bXApOw0KPiArDQo+ICsJ CXRtcCA9IFJSRUczMihtbURQX1NFQ19DTlRMICsgZGlnLT5hZm10LT5vZmZzZXQpOw0KPiArCQl0 bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgRFBfU0VDX0NOVEwsDQo+IERQX1NFQ19BU1BfRU5BQkxF LCAxKTsNCj4gKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIERQX1NFQ19DTlRMLA0KPiBEUF9T RUNfQVRQX0VOQUJMRSwgMSk7DQo+ICsJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBEUF9TRUNf Q05UTCwNCj4gRFBfU0VDX0FJUF9FTkFCTEUsIDEpOw0KPiArCQl0bXAgPSBSRUdfU0VUX0ZJRUxE KHRtcCwgRFBfU0VDX0NOVEwsDQo+IERQX1NFQ19TVFJFQU1fRU5BQkxFLCAxKTsNCj4gKwkJV1JF RzMyKG1tRFBfU0VDX0NOVEwgKyBkaWctPmFmbXQtPm9mZnNldCwgdG1wKTsNCj4gKwl9IGVsc2Ug ew0KPiArCQlXUkVHMzIobW1EUF9TRUNfQ05UTCArIGRpZy0+YWZtdC0+b2Zmc2V0LCAwKTsNCj4g Kwl9DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2FmbXRfc2V0bW9kZShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSkNCj4gIHsNCj4gLQlEUk1fSU5GTygieHh4eDogZGNlX3Y2XzBfYWZtdF9zZXRtb2Rl IC0tLS1ubyBpbXBsICEhISEhISEhXG4iKTsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZf cHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0NCj4g dG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ICsJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0 b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0NCj4gPmVuY19wcml2Ow0KPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7DQo+ICsJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFt ZGdwdV9jb25uZWN0b3IgPSBOVUxMOw0KPiArDQo+ICsJaWYgKCFkaWcgfHwgIWRpZy0+YWZtdCkN Cj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZl bmNvZGVyLT5kZXYtDQo+ID5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgew0KPiAr CQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29kZXIpIHsNCj4gKwkJCWFtZGdwdV9jb25u ZWN0b3IgPQ0KPiB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ICsJCQlicmVhazsN Cj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghYW1kZ3B1X2Nvbm5lY3Rvcikgew0KPiArCQlE Uk1fRVJST1IoIkNvdWxkbid0IGZpbmQgZW5jb2RlcidzIGNvbm5lY3RvclxuIik7DQo+ICsJCXJl dHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoIWRpZy0+YWZtdC0+ZW5hYmxlZCkNCj4gKwkJcmV0 dXJuOw0KPiArDQo+ICsJZGlnLT5hZm10LT5waW4gPSBkY2VfdjZfMF9hdWRpb19nZXRfcGluKGFk ZXYpOw0KPiArCWlmICghZGlnLT5hZm10LT5waW4pDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCS8q IGRpc2FibGUgYXVkaW8gYmVmb3JlIHNldHRpbmcgdXAgaHcgKi8NCj4gKwlkY2VfdjZfMF9hdWRp b19lbmFibGUoYWRldiwgZGlnLT5hZm10LT5waW4sIGZhbHNlKTsNCj4gKw0KPiArCWRjZV92Nl8w X2F1ZGlvX3NldF9tdXRlKGVuY29kZXIsIHRydWUpOw0KPiArCWRjZV92Nl8wX2F1ZGlvX3dyaXRl X3NwZWFrZXJfYWxsb2NhdGlvbihlbmNvZGVyKTsNCj4gKwlkY2VfdjZfMF9hdWRpb193cml0ZV9z YWRfcmVncyhlbmNvZGVyKTsNCj4gKwlkY2VfdjZfMF9hdWRpb193cml0ZV9sYXRlbmN5X2ZpZWxk cyhlbmNvZGVyLCBtb2RlKTsNCj4gKwlkY2VfdjZfMF9hdWRpb19zZXRfZHRvKGVuY29kZXIsIGFk ZXYtPmNsb2NrLmRlZmF1bHRfZGlzcGNsayAqDQo+IDEwKTsNCj4gKwlkY2VfdjZfMF9zZXRfYXVk aW9fcGFja2V0KGVuY29kZXIpOw0KPiArCWRjZV92Nl8wX2FmbXRfYXVkaW9fc2VsZWN0X3Bpbihl bmNvZGVyKTsNCj4gKwlkY2VfdjZfMF9hZm10X3VwZGF0ZV9hdmlfaW5mb2ZyYW1lKGVuY29kZXIs IG1vZGUpOw0KPiArCWRjZV92Nl8wX2F1ZGlvX3NldF9tdXRlKGVuY29kZXIsIGZhbHNlKTsNCj4g KwlkY2VfdjZfMF9hdWRpb19kcF9lbmFibGUoZW5jb2RlciwgMSk7DQo+ICsNCj4gKwkvKiBlbmFi bGUgYXVkaW8gYWZ0ZXIgc2V0dGluZyB1cCBodyAqLw0KPiArCWRjZV92Nl8wX2F1ZGlvX2VuYWJs ZShhZGV2LCBkaWctPmFmbXQtPnBpbiwgdHJ1ZSk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQg ZGNlX3Y2XzBfYWZtdF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBib29sDQo+ IGVuYWJsZSkNCj4gQEAgLTEzNjgsNiArMTc1NCw3IEBAIHN0YXRpYyB2b2lkIGRjZV92Nl8wX2Fm bXRfZW5hYmxlKHN0cnVjdA0KPiBkcm1fZW5jb2RlciAqZW5jb2RlciwgYm9vbCBlbmFibGUpDQo+ ICAJLyogU2lsZW50LCByNjAwX2hkbWlfZW5hYmxlIHdpbGwgcmFpc2UgV0FSTiBmb3IgdXMgKi8N Cj4gIAlpZiAoZW5hYmxlICYmIGRpZy0+YWZtdC0+ZW5hYmxlZCkNCj4gIAkJcmV0dXJuOw0KPiAr DQo+ICAJaWYgKCFlbmFibGUgJiYgIWRpZy0+YWZtdC0+ZW5hYmxlZCkNCj4gIAkJcmV0dXJuOw0K PiANCj4gQEAgLTI3ODEsNiArMzE2OCw3IEBAIGRjZV92Nl8wX2VuY29kZXJfbW9kZV9zZXQoc3Ry dWN0DQo+IGRybV9lbmNvZGVyICplbmNvZGVyLA0KPiAgew0KPiANCj4gIAlzdHJ1Y3QgYW1kZ3B1 X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0NCj4gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7 DQo+ICsJaW50IGVtID0NCj4gYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0X2VuY29kZXJfbW9k ZShlbmNvZGVyKTsNCj4gDQo+ICAJYW1kZ3B1X2VuY29kZXItPnBpeGVsX2Nsb2NrID0gYWRqdXN0 ZWRfbW9kZS0+Y2xvY2s7DQo+IA0KPiBAQCAtMjc5MCw3ICszMTc4LDcgQEAgZGNlX3Y2XzBfZW5j b2Rlcl9tb2RlX3NldChzdHJ1Y3QNCj4gZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJLyogc2V0 IHNjYWxlciBjbGVhcnMgdGhpcyBvbiBzb21lIGNoaXBzICovDQo+ICAJZGNlX3Y2XzBfc2V0X2lu dGVybGVhdmUoZW5jb2Rlci0+Y3J0YywgbW9kZSk7DQo+IA0KPiAtCWlmIChhbWRncHVfYXRvbWJp b3NfZW5jb2Rlcl9nZXRfZW5jb2Rlcl9tb2RlKGVuY29kZXIpID09DQo+IEFUT01fRU5DT0RFUl9N T0RFX0hETUkpIHsNCj4gKwlpZiAoZW0gPT0gQVRPTV9FTkNPREVSX01PREVfSERNSSB8fA0KPiBF TkNPREVSX01PREVfSVNfRFAoZW0pKSB7DQo+ICAJCWRjZV92Nl8wX2FmbXRfZW5hYmxlKGVuY29k ZXIsIHRydWUpOw0KPiAgCQlkY2VfdjZfMF9hZm10X3NldG1vZGUoZW5jb2RlciwgYWRqdXN0ZWRf bW9kZSk7DQo+ICAJfQ0KPiBAQCAtMjg1MiwxMSArMzI0MCwxMiBAQCBzdGF0aWMgdm9pZCBkY2Vf djZfMF9lbmNvZGVyX2Rpc2FibGUoc3RydWN0DQo+IGRybV9lbmNvZGVyICplbmNvZGVyKQ0KPiAN Cj4gIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0NCj4gdG9fYW1kZ3B1 X2VuY29kZXIoZW5jb2Rlcik7DQo+ICAJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpk aWc7DQo+ICsJaW50IGVtID0NCj4gYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0X2VuY29kZXJf bW9kZShlbmNvZGVyKTsNCj4gDQo+ICAJYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZHBtcyhlbmNv ZGVyLA0KPiBEUk1fTU9ERV9EUE1TX09GRik7DQo+IA0KPiAgCWlmIChhbWRncHVfYXRvbWJpb3Nf ZW5jb2Rlcl9pc19kaWdpdGFsKGVuY29kZXIpKSB7DQo+IC0JCWlmDQo+IChhbWRncHVfYXRvbWJp b3NfZW5jb2Rlcl9nZXRfZW5jb2Rlcl9tb2RlKGVuY29kZXIpID09DQo+IEFUT01fRU5DT0RFUl9N T0RFX0hETUkpDQo+ICsJCWlmIChlbSA9PSBBVE9NX0VOQ09ERVJfTU9ERV9IRE1JIHx8DQo+IEVO Q09ERVJfTU9ERV9JU19EUChlbSkpDQo+ICAJCQlkY2VfdjZfMF9hZm10X2VuYWJsZShlbmNvZGVy LCBmYWxzZSk7DQo+ICAJCWRpZyA9IGFtZGdwdV9lbmNvZGVyLT5lbmNfcHJpdjsNCj4gIAkJZGln LT5kaWdfZW5jb2RlciA9IC0xOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21hc2suaA0KPiBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvaW5jbHVkZS9hc2ljX3JlZy9kY2UvZGNlXzZfMF9zaF9tYXNrLmgNCj4gaW5kZXggOWE0 ZDRjMi4uYWJlMDViYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRl L2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21hc2suaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2luY2x1ZGUvYXNpY19yZWcvZGNlL2RjZV82XzBfc2hfbWFzay5oDQo+IEBAIC05MDYsNiAr OTA2LDggQEANCj4gICNkZWZpbmUNCj4gQVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0RBVEFfX0Fa QUxJQV9FTkRQT0lOVF9SRUdfREFUQV9fUw0KPiBISUZUIDB4MDAwMDAwMDANCj4gICNkZWZpbmUN Cj4gQVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVYX19BWkFMSUFfRU5EUE9JTlRfUkVHX0lO REVYX00NCj4gQVNLIDB4MDAwMDAwZmZMDQo+ICAjZGVmaW5lDQo+IEFaQUxJQV9GMF9DT0RFQ19F TkRQT0lOVF9JTkRFWF9fQVpBTElBX0VORFBPSU5UX1JFR19JTkRFWF9fUw0KPiBISUZUIDB4MDAw MDAwMDANCj4gKyNkZWZpbmUNCj4gQVpBTElBX0YwX0NPREVDX0VORFBPSU5UX0lOREVYX19BWkFM SUFfRU5EUE9JTlRfUkVHX1dSSVRFX0UNCj4gTl9NQVNLIDB4MDAwMDAxMDBMDQo+ICsjZGVmaW5l DQo+IEFaQUxJQV9GMF9DT0RFQ19FTkRQT0lOVF9JTkRFWF9fQVpBTElBX0VORFBPSU5UX1JFR19X UklURV9FDQo+IE5fX1NISUZUIDB4MDAwMDAwMDgNCj4gICNkZWZpbmUNCj4gQVpBTElBX0YwX0NP REVDX0ZVTkNUSU9OX0NPTlRST0xfQ09OVkVSVEVSX1NZTkNIUk9OSVpBVElPTg0KPiBfX0NPTlZF UlRFUl9TWU5DSFJPTklaQVRJT05fTUFTSyAweDAwMDAwMDNmTA0KPiAgI2RlZmluZQ0KPiBBWkFM SUFfRjBfQ09ERUNfRlVOQ1RJT05fQ09OVFJPTF9DT05WRVJURVJfU1lOQ0hST05JWkFUSU9ODQo+ IF9fQ09OVkVSVEVSX1NZTkNIUk9OSVpBVElPTl9fU0hJRlQgMHgwMDAwMDAwMA0KPiAgI2RlZmlu ZQ0KPiBBWkFMSUFfRjBfQ09ERUNfRlVOQ1RJT05fQ09OVFJPTF9QT1dFUl9TVEFURV9fQ0xLU1RP UE9LX00NCj4gQVNLIDB4MDAwMDAyMDBMDQo+IC0tDQo+IDIuNy40DQo+IA0KPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBhbWQtZ2Z4IG1haWxpbmcg bGlzdA0KPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=