From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 3/9] drm/amdgpu: cleanup amdgpu_ih.c Date: Tue, 25 Sep 2018 18:28:24 +0800 Message-ID: <20180925102823.GD30495@hr-amur2> References: <20180924123820.1873-1-christian.koenig@amd.com> <20180924123820.1873-3-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180924123820.1873-3-christian.koenig-5C7GfCeVMHo@public.gmane.org> 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: Christian =?iso-8859-1?Q?K=F6nig?= Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDI6Mzg6MTRQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBDbGVhbnVwIGFtZGdwdV9paC5jIHRvIGJlIGFibGUgdG8gaGFuZGxlIG11bHRp cGxlIGludGVycnVwdCByaW5ncy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmln IDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CgpSZXZpZXdlZC1ieTogSHVhbmcgUnVpIDxyYXku aHVhbmdAYW1kLmNvbT4KCldpbGwgd2UgaGF2ZSBtdWx0aXBsZSBpbnRlcnJ1cHQgcmluZ3MgaW4g bmV3IGFzaWM/CgpUaGFua3MsClJheQoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2loLmMgIHwgMTUyICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oICB8ICAgOCArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaXJxLmMgfCAgIDIgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvY2lrX2loLmMgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2N6X2loLmMgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9pY2VsYW5kX2loLmMgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvc2lfaWguYyAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Rv bmdhX2loLmMgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92ZWdhMTBf aWguYyAgfCAgIDQgKy0KPiAgOSBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAxMDIg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9paC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMKPiBp bmRleCA0ZWQ4NjIxOGNlZjMuLjE1ZmIwZjk3MzhhYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9paC5jCj4gQEAgLTI2LDQ0ICsyNiwyMCBAQAo+ICAjaW5jbHVkZSAiYW1k Z3B1X2loLmgiCj4gICNpbmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCj4gIAo+IC0vKioKPiAtICog YW1kZ3B1X2loX3JpbmdfYWxsb2MgLSBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBJSCByaW5nCj4g LSAqCj4gLSAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPiAtICoKPiAtICogQWxsb2Nh dGUgYSByaW5nIGJ1ZmZlciBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyLgo+IC0gKiBSZXR1 cm5zIDAgZm9yIHN1Y2Nlc3MsIGVycm9ycyBmb3IgZmFpbHVyZS4KPiAtICovCj4gLXN0YXRpYyBp bnQgYW1kZ3B1X2loX3JpbmdfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gLXsK PiAtCWludCByOwo+IC0KPiAtCS8qIEFsbG9jYXRlIHJpbmcgYnVmZmVyICovCj4gLQlpZiAoYWRl di0+aXJxLmloLnJpbmdfb2JqID09IE5VTEwpIHsKPiAtCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZV9r ZXJuZWwoYWRldiwgYWRldi0+aXJxLmloLnJpbmdfc2l6ZSwKPiAtCQkJCQkgICAgUEFHRV9TSVpF LCBBTURHUFVfR0VNX0RPTUFJTl9HVFQsCj4gLQkJCQkJICAgICZhZGV2LT5pcnEuaWgucmluZ19v YmosCj4gLQkJCQkJICAgICZhZGV2LT5pcnEuaWguZ3B1X2FkZHIsCj4gLQkJCQkJICAgICh2b2lk ICoqKSZhZGV2LT5pcnEuaWgucmluZyk7Cj4gLQkJaWYgKHIpIHsKPiAtCQkJRFJNX0VSUk9SKCJh bWRncHU6IGZhaWxlZCB0byBjcmVhdGUgaWggcmluZyBidWZmZXIgKCVkKS5cbiIsIHIpOwo+IC0J CQlyZXR1cm4gcjsKPiAtCQl9Cj4gLQl9Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgLyoqCj4g ICAqIGFtZGdwdV9paF9yaW5nX2luaXQgLSBpbml0aWFsaXplIHRoZSBJSCBzdGF0ZQo+ICAgKgo+ ICAgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4gKyAqIEBpaDogaWggcmluZyB0byBp bml0aWFsaXplCj4gKyAqIEByaW5nX3NpemU6IHJpbmcgc2l6ZSB0byBhbGxvY2F0ZQo+ICsgKiBA dXNlX2J1c19hZGRyOiB0cnVlIHdoZW4gd2UgY2FuIHVzZSBkbWFfYWxsb2NfY29oZXJlbnQKPiAg ICoKPiAgICogSW5pdGlhbGl6ZXMgdGhlIElIIHN0YXRlIGFuZCBhbGxvY2F0ZXMgYSBidWZmZXIK PiAgICogZm9yIHRoZSBJSCByaW5nIGJ1ZmZlci4KPiAgICogUmV0dXJucyAwIGZvciBzdWNjZXNz LCBlcnJvcnMgZm9yIGZhaWx1cmUuCj4gICAqLwo+IC1pbnQgYW1kZ3B1X2loX3JpbmdfaW5pdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgcmluZ19zaXplLAo+IC0JCQlib29s IHVzZV9idXNfYWRkcikKPiAraW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgsCj4gKwkJCXVuc2lnbmVkIHJp bmdfc2l6ZSwgYm9vbCB1c2VfYnVzX2FkZHIpCj4gIHsKPiAgCXUzMiByYl9idWZzejsKPiAgCWlu dCByOwo+IEBAIC03MSw3MCArNDcsNzYgQEAgaW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKPiAgCS8qIEFsaWduIHJp bmcgc2l6ZSAqLwo+ICAJcmJfYnVmc3ogPSBvcmRlcl9iYXNlXzIocmluZ19zaXplIC8gNCk7Cj4g IAlyaW5nX3NpemUgPSAoMSA8PCByYl9idWZzeikgKiA0Owo+IC0JYWRldi0+aXJxLmloLnJpbmdf c2l6ZSA9IHJpbmdfc2l6ZTsKPiAtCWFkZXYtPmlycS5paC5wdHJfbWFzayA9IGFkZXYtPmlycS5p aC5yaW5nX3NpemUgLSAxOwo+IC0JYWRldi0+aXJxLmloLnJwdHIgPSAwOwo+IC0JYWRldi0+aXJx LmloLnVzZV9idXNfYWRkciA9IHVzZV9idXNfYWRkcjsKPiAtCj4gLQlpZiAoYWRldi0+aXJxLmlo LnVzZV9idXNfYWRkcikgewo+IC0JCWlmICghYWRldi0+aXJxLmloLnJpbmcpIHsKPiAtCQkJLyog YWRkIDggYnl0ZXMgZm9yIHRoZSBycHRyL3dwdHIgc2hhZG93cyBhbmQKPiAtCQkJICogYWRkIHRo ZW0gdG8gdGhlIGVuZCBvZiB0aGUgcmluZyBhbGxvY2F0aW9uLgo+IC0JCQkgKi8KPiAtCQkJYWRl di0+aXJxLmloLnJpbmcgPSBwY2lfYWxsb2NfY29uc2lzdGVudChhZGV2LT5wZGV2LAo+IC0JCQkJ CQkJCSBhZGV2LT5pcnEuaWgucmluZ19zaXplICsgOCwKPiAtCQkJCQkJCQkgJmFkZXYtPmlycS5p aC5yYl9kbWFfYWRkcik7Cj4gLQkJCWlmIChhZGV2LT5pcnEuaWgucmluZyA9PSBOVUxMKQo+IC0J CQkJcmV0dXJuIC1FTk9NRU07Cj4gLQkJCW1lbXNldCgodm9pZCAqKWFkZXYtPmlycS5paC5yaW5n LCAwLCBhZGV2LT5pcnEuaWgucmluZ19zaXplICsgOCk7Cj4gLQkJCWFkZXYtPmlycS5paC53cHRy X29mZnMgPSAoYWRldi0+aXJxLmloLnJpbmdfc2l6ZSAvIDQpICsgMDsKPiAtCQkJYWRldi0+aXJx LmloLnJwdHJfb2ZmcyA9IChhZGV2LT5pcnEuaWgucmluZ19zaXplIC8gNCkgKyAxOwo+IC0JCX0K PiAtCQlyZXR1cm4gMDsKPiArCWloLT5yaW5nX3NpemUgPSByaW5nX3NpemU7Cj4gKwlpaC0+cHRy X21hc2sgPSBpaC0+cmluZ19zaXplIC0gMTsKPiArCWloLT5ycHRyID0gMDsKPiArCWloLT51c2Vf YnVzX2FkZHIgPSB1c2VfYnVzX2FkZHI7Cj4gKwo+ICsJaWYgKHVzZV9idXNfYWRkcikgewo+ICsJ CWlmIChpaC0+cmluZykKPiArCQkJcmV0dXJuIDA7Cj4gKwo+ICsJCS8qIGFkZCA4IGJ5dGVzIGZv ciB0aGUgcnB0ci93cHRyIHNoYWRvd3MgYW5kCj4gKwkJICogYWRkIHRoZW0gdG8gdGhlIGVuZCBv ZiB0aGUgcmluZyBhbGxvY2F0aW9uLgo+ICsJCSAqLwo+ICsJCWloLT5yaW5nID0gZG1hX2FsbG9j X2NvaGVyZW50KGFkZXYtPmRldiwgaWgtPnJpbmdfc2l6ZSArIDgsCj4gKwkJCQkJICAgICAgJmlo LT5yYl9kbWFfYWRkciwgR0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKGloLT5yaW5nID09IE5VTEwpCj4g KwkJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQltZW1zZXQoKHZvaWQgKilpaC0+cmluZywgMCwg aWgtPnJpbmdfc2l6ZSArIDgpOwo+ICsJCWloLT53cHRyX29mZnMgPSAoaWgtPnJpbmdfc2l6ZSAv IDQpICsgMDsKPiArCQlpaC0+cnB0cl9vZmZzID0gKGloLT5yaW5nX3NpemUgLyA0KSArIDE7Cj4g IAl9IGVsc2Ugewo+IC0JCXIgPSBhbWRncHVfZGV2aWNlX3diX2dldChhZGV2LCAmYWRldi0+aXJx LmloLndwdHJfb2Zmcyk7Cj4gKwkJciA9IGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KGFkZXYsICZpaC0+ d3B0cl9vZmZzKTsKPiArCQlpZiAocikKPiArCQkJcmV0dXJuIHI7Cj4gKwo+ICsJCXIgPSBhbWRn cHVfZGV2aWNlX3diX2dldChhZGV2LCAmaWgtPnJwdHJfb2Zmcyk7Cj4gIAkJaWYgKHIpIHsKPiAt CQkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGloIHdwdHJfb2ZmcyB3YiBhbGxvYyBmYWlsZWRc biIsIHIpOwo+ICsJCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwgaWgtPndwdHJfb2Zmcyk7 Cj4gIAkJCXJldHVybiByOwo+ICAJCX0KPiAgCj4gLQkJciA9IGFtZGdwdV9kZXZpY2Vfd2JfZ2V0 KGFkZXYsICZhZGV2LT5pcnEuaWgucnB0cl9vZmZzKTsKPiArCQlyID0gYW1kZ3B1X2JvX2NyZWF0 ZV9rZXJuZWwoYWRldiwgaWgtPnJpbmdfc2l6ZSwgUEFHRV9TSVpFLAo+ICsJCQkJCSAgICBBTURH UFVfR0VNX0RPTUFJTl9HVFQsCj4gKwkJCQkJICAgICZpaC0+cmluZ19vYmosICZpaC0+Z3B1X2Fk ZHIsCj4gKwkJCQkJICAgICh2b2lkICoqKSZpaC0+cmluZyk7Cj4gIAkJaWYgKHIpIHsKPiAtCQkJ YW1kZ3B1X2RldmljZV93Yl9mcmVlKGFkZXYsIGFkZXYtPmlycS5paC53cHRyX29mZnMpOwo+IC0J CQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkgaWggcnB0cl9vZmZzIHdiIGFsbG9jIGZhaWxlZFxu Iiwgcik7Cj4gKwkJCWFtZGdwdV9kZXZpY2Vfd2JfZnJlZShhZGV2LCBpaC0+cnB0cl9vZmZzKTsK PiArCQkJYW1kZ3B1X2RldmljZV93Yl9mcmVlKGFkZXYsIGloLT53cHRyX29mZnMpOwo+ICAJCQly ZXR1cm4gcjsKPiAgCQl9Cj4gLQo+IC0JCXJldHVybiBhbWRncHVfaWhfcmluZ19hbGxvYyhhZGV2 KTsKPiAgCX0KPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogYW1kZ3B1X2loX3Jp bmdfZmluaSAtIHRlYXIgZG93biB0aGUgSUggc3RhdGUKPiAgICoKPiAgICogQGFkZXY6IGFtZGdw dV9kZXZpY2UgcG9pbnRlcgo+ICsgKiBAaWg6IGloIHJpbmcgdG8gdGVhciBkb3duCj4gICAqCj4g ICAqIFRlYXJzIGRvd24gdGhlIElIIHN0YXRlIGFuZCBmcmVlcyBidWZmZXIKPiAgICogdXNlZCBm b3IgdGhlIElIIHJpbmcgYnVmZmVyLgo+ICAgKi8KPiAtdm9pZCBhbWRncHVfaWhfcmluZ19maW5p KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICt2b2lkIGFtZGdwdV9paF9yaW5nX2Zpbmko c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpCj4g IHsKPiAtCWlmIChhZGV2LT5pcnEuaWgudXNlX2J1c19hZGRyKSB7Cj4gLQkJaWYgKGFkZXYtPmly cS5paC5yaW5nKSB7Cj4gLQkJCS8qIGFkZCA4IGJ5dGVzIGZvciB0aGUgcnB0ci93cHRyIHNoYWRv d3MgYW5kCj4gLQkJCSAqIGFkZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIHJpbmcgYWxsb2NhdGlv bi4KPiAtCQkJICovCj4gLQkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRldi0+cGRldiwgYWRldi0+ aXJxLmloLnJpbmdfc2l6ZSArIDgsCj4gLQkJCQkJICAgICh2b2lkICopYWRldi0+aXJxLmloLnJp bmcsCj4gLQkJCQkJICAgIGFkZXYtPmlycS5paC5yYl9kbWFfYWRkcik7Cj4gLQkJCWFkZXYtPmly cS5paC5yaW5nID0gTlVMTDsKPiAtCQl9Cj4gKwlpZiAoaWgtPnVzZV9idXNfYWRkcikgewo+ICsJ CWlmICghaWgtPnJpbmcpCj4gKwkJCXJldHVybjsKPiArCj4gKwkJLyogYWRkIDggYnl0ZXMgZm9y IHRoZSBycHRyL3dwdHIgc2hhZG93cyBhbmQKPiArCQkgKiBhZGQgdGhlbSB0byB0aGUgZW5kIG9m IHRoZSByaW5nIGFsbG9jYXRpb24uCj4gKwkJICovCj4gKwkJZG1hX2ZyZWVfY29oZXJlbnQoYWRl di0+ZGV2LCBpaC0+cmluZ19zaXplICsgOCwKPiArCQkJCSAgKHZvaWQgKilpaC0+cmluZywgaWgt PnJiX2RtYV9hZGRyKTsKPiArCQlpaC0+cmluZyA9IE5VTEw7Cj4gIAl9IGVsc2Ugewo+IC0JCWFt ZGdwdV9ib19mcmVlX2tlcm5lbCgmYWRldi0+aXJxLmloLnJpbmdfb2JqLAo+IC0JCQkJICAgICAg JmFkZXYtPmlycS5paC5ncHVfYWRkciwKPiAtCQkJCSAgICAgICh2b2lkICoqKSZhZGV2LT5pcnEu aWgucmluZyk7Cj4gLQkJYW1kZ3B1X2RldmljZV93Yl9mcmVlKGFkZXYsIGFkZXYtPmlycS5paC53 cHRyX29mZnMpOwo+IC0JCWFtZGdwdV9kZXZpY2Vfd2JfZnJlZShhZGV2LCBhZGV2LT5pcnEuaWgu cnB0cl9vZmZzKTsKPiArCQlhbWRncHVfYm9fZnJlZV9rZXJuZWwoJmloLT5yaW5nX29iaiwgJmlo LT5ncHVfYWRkciwKPiArCQkJCSAgICAgICh2b2lkICoqKSZpaC0+cmluZyk7Cj4gKwkJYW1kZ3B1 X2RldmljZV93Yl9mcmVlKGFkZXYsIGloLT53cHRyX29mZnMpOwo+ICsJCWFtZGdwdV9kZXZpY2Vf d2JfZnJlZShhZGV2LCBpaC0+cnB0cl9vZmZzKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTQyLDU2 ICsxMjQsNTYgQEAgdm9pZCBhbWRncHVfaWhfcmluZ19maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQo+ICAgKiBhbWRncHVfaWhfcHJvY2VzcyAtIGludGVycnVwdCBoYW5kbGVyCj4gICAq Cj4gICAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPiArICogQGloOiBpaCByaW5nIHRv IHByb2Nlc3MKPiAgICoKPiAgICogSW50ZXJydXB0IGhhbmRlciAoVkkpLCB3YWxrIHRoZSBJSCBy aW5nLgo+ICAgKiBSZXR1cm5zIGlycSBwcm9jZXNzIHJldHVybiBjb2RlLgo+ICAgKi8KPiAtaW50 IGFtZGdwdV9paF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICtpbnQgYW1k Z3B1X2loX3Byb2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVf aWhfcmluZyAqaWgpCj4gIHsKPiAgCXN0cnVjdCBhbWRncHVfaXZfZW50cnkgZW50cnk7Cj4gIAl1 MzIgd3B0cjsKPiAgCj4gLQlpZiAoIWFkZXYtPmlycS5paC5lbmFibGVkIHx8IGFkZXYtPnNodXRk b3duKQo+ICsJaWYgKCFpaC0+ZW5hYmxlZCB8fCBhZGV2LT5zaHV0ZG93bikKPiAgCQlyZXR1cm4g SVJRX05PTkU7Cj4gIAo+ICAJd3B0ciA9IGFtZGdwdV9paF9nZXRfd3B0cihhZGV2KTsKPiAgCj4g IHJlc3RhcnRfaWg6Cj4gIAkvKiBpcyBzb21lYm9keSBlbHNlIGFscmVhZHkgcHJvY2Vzc2luZyBp cnFzPyAqLwo+IC0JaWYgKGF0b21pY194Y2hnKCZhZGV2LT5pcnEuaWgubG9jaywgMSkpCj4gKwlp ZiAoYXRvbWljX3hjaGcoJmloLT5sb2NrLCAxKSkKPiAgCQlyZXR1cm4gSVJRX05PTkU7Cj4gIAo+ IC0JRFJNX0RFQlVHKCIlczogcnB0ciAlZCwgd3B0ciAlZFxuIiwgX19mdW5jX18sIGFkZXYtPmly cS5paC5ycHRyLCB3cHRyKTsKPiArCURSTV9ERUJVRygiJXM6IHJwdHIgJWQsIHdwdHIgJWRcbiIs IF9fZnVuY19fLCBpaC0+cnB0ciwgd3B0cik7Cj4gIAo+ICAJLyogT3JkZXIgcmVhZGluZyBvZiB3 cHRyIHZzLiByZWFkaW5nIG9mIElIIHJpbmcgZGF0YSAqLwo+ICAJcm1iKCk7Cj4gIAo+IC0Jd2hp bGUgKGFkZXYtPmlycS5paC5ycHRyICE9IHdwdHIpIHsKPiAtCQl1MzIgcmluZ19pbmRleCA9IGFk ZXYtPmlycS5paC5ycHRyID4+IDI7Cj4gKwl3aGlsZSAoaWgtPnJwdHIgIT0gd3B0cikgewo+ICsJ CXUzMiByaW5nX2luZGV4ID0gaWgtPnJwdHIgPj4gMjsKPiAgCj4gIAkJLyogUHJlc2NyZWVuaW5n IG9mIGhpZ2gtZnJlcXVlbmN5IGludGVycnVwdHMgKi8KPiAgCQlpZiAoIWFtZGdwdV9paF9wcmVz Y3JlZW5faXYoYWRldikpIHsKPiAtCQkJYWRldi0+aXJxLmloLnJwdHIgJj0gYWRldi0+aXJxLmlo LnB0cl9tYXNrOwo+ICsJCQlpaC0+cnB0ciAmPSBpaC0+cHRyX21hc2s7Cj4gIAkJCWNvbnRpbnVl Owo+ICAJCX0KPiAgCj4gIAkJLyogQmVmb3JlIGRpc3BhdGNoaW5nIGlycSB0byBJUCBibG9ja3Ms IHNlbmQgaXQgdG8gYW1ka2ZkICovCj4gIAkJYW1kZ3B1X2FtZGtmZF9pbnRlcnJ1cHQoYWRldiwK PiAtCQkJCShjb25zdCB2b2lkICopICZhZGV2LT5pcnEuaWgucmluZ1tyaW5nX2luZGV4XSk7Cj4g KwkJCQkJKGNvbnN0IHZvaWQgKikgJmloLT5yaW5nW3JpbmdfaW5kZXhdKTsKPiAgCj4gLQkJZW50 cnkuaXZfZW50cnkgPSAoY29uc3QgdWludDMyX3QgKikKPiAtCQkJJmFkZXYtPmlycS5paC5yaW5n W3JpbmdfaW5kZXhdOwo+ICsJCWVudHJ5Lml2X2VudHJ5ID0gKGNvbnN0IHVpbnQzMl90ICopJmlo LT5yaW5nW3JpbmdfaW5kZXhdOwo+ICAJCWFtZGdwdV9paF9kZWNvZGVfaXYoYWRldiwgJmVudHJ5 KTsKPiAtCQlhZGV2LT5pcnEuaWgucnB0ciAmPSBhZGV2LT5pcnEuaWgucHRyX21hc2s7Cj4gKwkJ aWgtPnJwdHIgJj0gaWgtPnB0cl9tYXNrOwo+ICAKPiAgCQlhbWRncHVfaXJxX2Rpc3BhdGNoKGFk ZXYsICZlbnRyeSk7Cj4gIAl9Cj4gIAlhbWRncHVfaWhfc2V0X3JwdHIoYWRldik7Cj4gLQlhdG9t aWNfc2V0KCZhZGV2LT5pcnEuaWgubG9jaywgMCk7Cj4gKwlhdG9taWNfc2V0KCZpaC0+bG9jaywg MCk7Cj4gIAo+ICAJLyogbWFrZSBzdXJlIHdwdHIgaGFzbid0IGNoYW5nZWQgd2hpbGUgcHJvY2Vz c2luZyAqLwo+ICAJd3B0ciA9IGFtZGdwdV9paF9nZXRfd3B0cihhZGV2KTsKPiAtCWlmICh3cHRy ICE9IGFkZXYtPmlycS5paC5ycHRyKQo+ICsJaWYgKHdwdHIgIT0gaWgtPnJwdHIpCj4gIAkJZ290 byByZXN0YXJ0X2loOwo+ICAKPiAgCXJldHVybiBJUlFfSEFORExFRDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfaWguaAo+IGluZGV4IDBkNWIzZjUyMDFkMi4uM2U1NWY5ODUwMDVj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmgKPiBAQCAtODIsOSAr ODIsOSBAQCBzdHJ1Y3QgYW1kZ3B1X2loX2Z1bmNzIHsKPiAgI2RlZmluZSBhbWRncHVfaWhfZGVj b2RlX2l2KGFkZXYsIGl2KSAoYWRldiktPmlycS5paF9mdW5jcy0+ZGVjb2RlX2l2KChhZGV2KSwg KGl2KSkKPiAgI2RlZmluZSBhbWRncHVfaWhfc2V0X3JwdHIoYWRldikgKGFkZXYpLT5pcnEuaWhf ZnVuY3MtPnNldF9ycHRyKChhZGV2KSkKPiAgCj4gLWludCBhbWRncHVfaWhfcmluZ19pbml0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCByaW5nX3NpemUsCj4gLQkJCWJvb2wg dXNlX2J1c19hZGRyKTsKPiAtdm9pZCBhbWRncHVfaWhfcmluZ19maW5pKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KTsKPiAtaW50IGFtZGdwdV9paF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KTsKPiAraW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgsCj4gKwkJCXVuc2lnbmVkIHJpbmdf c2l6ZSwgYm9vbCB1c2VfYnVzX2FkZHIpOwo+ICt2b2lkIGFtZGdwdV9paF9yaW5nX2Zpbmkoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpOwo+ICtp bnQgYW1kZ3B1X2loX3Byb2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBh bWRncHVfaWhfcmluZyAqaWgpOwo+ICAKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9pcnEuYwo+IGluZGV4IGI5MjdlODc5ODUzNC4uYWFhODU0NWU0NThhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pcnEuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pcnEuYwo+IEBAIC0xNjMsNyArMTYz LDcgQEAgaXJxcmV0dXJuX3QgYW1kZ3B1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykK PiAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWly cXJldHVybl90IHJldDsKPiAgCj4gLQlyZXQgPSBhbWRncHVfaWhfcHJvY2VzcyhhZGV2KTsKPiAr CXJldCA9IGFtZGdwdV9paF9wcm9jZXNzKGFkZXYsICZhZGV2LT5pcnEuaWgpOwo+ICAJaWYgKHJl dCA9PSBJUlFfSEFORExFRCkKPiAgCQlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldi0+ZGV2 KTsKPiAgCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2Npa19paC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX2loLmMKPiBpbmRl eCBlNzUxODNlMDk4MjAuLmMzN2M0Yjc2ZTdlOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9jaWtfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2Npa19paC5jCj4gQEAgLTMxOCw3ICszMTgsNyBAQCBzdGF0aWMgaW50IGNpa19paF9zd19pbml0 KHZvaWQgKmhhbmRsZSkKPiAgCWludCByOwo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+IC0JciA9IGFtZGdwdV9paF9y aW5nX2luaXQoYWRldiwgNjQgKiAxMDI0LCBmYWxzZSk7Cj4gKwlyID0gYW1kZ3B1X2loX3Jpbmdf aW5pdChhZGV2LCAmYWRldi0+aXJxLmloLCA2NCAqIDEwMjQsIGZhbHNlKTsKPiAgCWlmIChyKQo+ ICAJCXJldHVybiByOwo+ICAKPiBAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBpbnQgY2lrX2lo X3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAo c3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+ICAJYW1kZ3B1X2lycV9maW5pKGFk ZXYpOwo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2KTsKPiArCWFtZGdwdV9paF9yaW5nX2Zp bmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAlhbWRncHVfaXJxX3JlbW92ZV9kb21haW4oYWRl dik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2N6X2loLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jel9paC5jCj4gaW5k ZXggOTM4NWRhMWUxZTQwLi4zMDZlMGJkMTU0ZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvY3pfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2N6X2loLmMKPiBAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbnQgY3pfaWhfc3dfaW5pdCh2 b2lkICpoYW5kbGUpCj4gIAlpbnQgcjsKPiAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ICAKPiAtCXIgPSBhbWRncHVfaWhfcmlu Z19pbml0KGFkZXYsIDY0ICogMTAyNCwgZmFsc2UpOwo+ICsJciA9IGFtZGdwdV9paF9yaW5nX2lu aXQoYWRldiwgJmFkZXYtPmlycS5paCwgNjQgKiAxMDI0LCBmYWxzZSk7Cj4gIAlpZiAocikKPiAg CQlyZXR1cm4gcjsKPiAgCj4gQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgaW50IGN6X2loX3N3 X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+ICAJYW1kZ3B1X2lycV9maW5pKGFkZXYp Owo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2KTsKPiArCWFtZGdwdV9paF9yaW5nX2Zpbmko YWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAlhbWRncHVfaXJxX3JlbW92ZV9kb21haW4oYWRldik7 Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2ljZWxhbmRfaWguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWgu Ywo+IGluZGV4IDQ1ZWYwYTgxOGUxMS4uOTAwNWRlZWVjNjEyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYwo+IEBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIGlu dCBpY2VsYW5kX2loX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+ICAJaW50IHI7Cj4gIAlzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPiAg Cj4gLQlyID0gYW1kZ3B1X2loX3JpbmdfaW5pdChhZGV2LCA2NCAqIDEwMjQsIGZhbHNlKTsKPiAr CXIgPSBhbWRncHVfaWhfcmluZ19pbml0KGFkZXYsICZhZGV2LT5pcnEuaWgsIDY0ICogMTAyNCwg ZmFsc2UpOwo+ICAJaWYgKHIpCj4gIAkJcmV0dXJuIHI7Cj4gIAo+IEBAIC0zMTEsNyArMzExLDcg QEAgc3RhdGljIGludCBpY2VsYW5kX2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4g IAo+ICAJYW1kZ3B1X2lycV9maW5pKGFkZXYpOwo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2 KTsKPiArCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAlhbWRn cHVfaXJxX3JlbW92ZV9kb21haW4oYWRldik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9zaV9paC5jCj4gaW5kZXggOTc3MTFkMzI3NTI3Li5hY2RmNjA3NTk1N2EgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMKPiBAQCAtMTcwLDcgKzE3MCw3IEBAIHN0 YXRpYyBpbnQgc2lfaWhfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4gIAlpbnQgcjsKPiAgCXN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ ICAKPiAtCXIgPSBhbWRncHVfaWhfcmluZ19pbml0KGFkZXYsIDY0ICogMTAyNCwgZmFsc2UpOwo+ ICsJciA9IGFtZGdwdV9paF9yaW5nX2luaXQoYWRldiwgJmFkZXYtPmlycS5paCwgNjQgKiAxMDI0 LCBmYWxzZSk7Cj4gIAlpZiAocikKPiAgCQlyZXR1cm4gcjsKPiAgCj4gQEAgLTE4Miw3ICsxODIs NyBAQCBzdGF0aWMgaW50IHNpX2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+ ICAJYW1kZ3B1X2lycV9maW5pKGFkZXYpOwo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2KTsK PiArCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdG9u Z2FfaWguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3RvbmdhX2loLmMKPiBpbmRleCBh NzlhMzc3Njg4OGEuLjgzZmRmODEwZmZjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS90b25nYV9paC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv dG9uZ2FfaWguYwo+IEBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIGludCB0b25nYV9paF9zd19p bml0KHZvaWQgKmhhbmRsZSkKPiAgCWludCByOwo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+IC0JciA9IGFtZGdwdV9p aF9yaW5nX2luaXQoYWRldiwgNjQgKiAxMDI0LCB0cnVlKTsKPiArCXIgPSBhbWRncHVfaWhfcmlu Z19pbml0KGFkZXYsICZhZGV2LT5pcnEuaWgsIDY0ICogMTAyNCwgdHJ1ZSk7Cj4gIAlpZiAocikK PiAgCQlyZXR1cm4gcjsKPiAgCj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IHRvbmdh X2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gIAo+ICAJYW1kZ3B1X2lycV9maW5p KGFkZXYpOwo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2KTsKPiArCWFtZGdwdV9paF9yaW5n X2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAlhbWRncHVfaXJxX3JlbW92ZV9kb21haW4o YWRldik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3ZlZ2ExMF9paC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmVnYTEw X2loLmMKPiBpbmRleCAzNzQ4N2I0Y2JkNmUuLmE5OWY3MTc5N2FhMyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92ZWdhMTBfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jCj4gQEAgLTM4MCw3ICszODAsNyBAQCBzdGF0aWMg aW50IHZlZ2ExMF9paF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPiAgCWludCByOwo+ICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4g IAo+IC0JciA9IGFtZGdwdV9paF9yaW5nX2luaXQoYWRldiwgMjU2ICogMTAyNCwgdHJ1ZSk7Cj4g KwlyID0gYW1kZ3B1X2loX3JpbmdfaW5pdChhZGV2LCAmYWRldi0+aXJxLmloLCAyNTYgKiAxMDI0 LCB0cnVlKTsKPiAgCWlmIChyKQo+ICAJCXJldHVybiByOwo+ICAKPiBAQCAtMzk3LDcgKzM5Nyw3 IEBAIHN0YXRpYyBpbnQgdmVnYTEwX2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+ICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4g IAo+ICAJYW1kZ3B1X2lycV9maW5pKGFkZXYpOwo+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2 KTsKPiArCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAtLSAKPiAyLjE0LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cg==