From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 7/9] drm/amdgpu: add bo_list iterators Date: Tue, 31 Jul 2018 14:12:43 +0800 Message-ID: <20180731053456.GB11983@hr-amur2> References: <20180730145159.13212-1-christian.koenig@amd.com> <20180730145159.13212-7-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: <20180730145159.13212-7-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 =?utf-8?B?S++/vW5pZw==?= Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gTW9uLCBKdWwgMzAsIDIwMTggYXQgMDQ6NTE6NTdQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBZGQgaGVscGVycyB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMgaW4gYSBi b19saXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KCk5pY2Ugd3JhcHBlci4KCkFja2VkLWJ5OiBIdWFuZyBSdWkgPHJheS5o dWFuZ0BhbWQuY29tPgoKVGhhbmtzLApSYXkKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9ib19saXN0LmMgfCAyMSArKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3QuaCB8IDEwICsrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyAgICAgIHwgNTEgKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAzOSBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2JvX2xpc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0 LmMKPiBpbmRleCA1MzM1ZjFiNTQ1OWYuLjA5NmJjZjRhNjMzNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3QuYwo+IEBAIC00MywxMiArNDMsMTIgQEAg c3RhdGljIGludCBhbWRncHVfYm9fbGlzdF9zZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4gIAo+ICBzdGF0aWMgdm9pZCBhbWRncHVfYm9fbGlzdF9yZWxlYXNlX3JjdShzdHJ1Y3Qga3Jl ZiAqcmVmKQo+ICB7Cj4gLQl1bnNpZ25lZCBpOwo+ICAJc3RydWN0IGFtZGdwdV9ib19saXN0ICps aXN0ID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IGFtZGdwdV9ib19saXN0LAo+ICAJCQkJCQkg ICByZWZjb3VudCk7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4gIAo+IC0J Zm9yIChpID0gMDsgaSA8IGxpc3QtPm51bV9lbnRyaWVzOyArK2kpCj4gLQkJYW1kZ3B1X2JvX3Vu cmVmKCZsaXN0LT5hcnJheVtpXS5yb2JqKTsKPiArCWFtZGdwdV9ib19saXN0X2Zvcl9lYWNoX2Vu dHJ5KGUsIGxpc3QpCj4gKwkJYW1kZ3B1X2JvX3VucmVmKCZlLT5yb2JqKTsKPiAgCj4gIAlrdmZy ZWUobGlzdC0+YXJyYXkpOwo+ICAJa2ZyZWVfcmN1KGxpc3QsIHJoZWFkKTsKPiBAQCAtMTAzLDYg KzEwMyw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2JvX2xpc3Rfc2V0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+ICAJc3RydWN0IGFtZGdwdV9ibyAqb2Ffb2JqID0gYWRldi0+Z2RzLm9hX2dm eF9ibzsKPiAgCj4gIAl1bnNpZ25lZCBsYXN0X2VudHJ5ID0gMCwgZmlyc3RfdXNlcnB0ciA9IG51 bV9lbnRyaWVzOwo+ICsJc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5ICplOwo+ICAJdWludDY0 X3QgdG90YWxfc2l6ZSA9IDA7Cj4gIAl1bnNpZ25lZCBpOwo+ICAJaW50IHI7Cj4gQEAgLTE1Niw3 ICsxNTcsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9ib19saXN0X3NldChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPiAgCQl0cmFjZV9hbWRncHVfYm9fbGlzdF9zZXQobGlzdCwgZW50cnktPnJv YmopOwo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBsaXN0LT5udW1fZW50cmllczsgKytp KQo+ICsJYW1kZ3B1X2JvX2xpc3RfZm9yX2VhY2hfZW50cnkoZSwgbGlzdCkKPiAgCQlhbWRncHVf Ym9fdW5yZWYoJmxpc3QtPmFycmF5W2ldLnJvYmopOwo+ICAKPiAgCWt2ZnJlZShsaXN0LT5hcnJh eSk7Cj4gQEAgLTIwMSw2ICsyMDIsNyBAQCB2b2lkIGFtZGdwdV9ib19saXN0X2dldF9saXN0KHN0 cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdCwKPiAgCSAqIGNvbmNhdGVuYXRlZCBpbiBkZXNjZW5k aW5nIG9yZGVyLgo+ICAJICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGJ1Y2tldFtBTURHUFVfQk9f TElTVF9OVU1fQlVDS0VUU107Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4g IAl1bnNpZ25lZCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfQk9fTElTVF9OVU1f QlVDS0VUUzsgaSsrKQo+IEBAIC0yMTEsMTQgKzIxMywxMyBAQCB2b2lkIGFtZGdwdV9ib19saXN0 X2dldF9saXN0KHN0cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdCwKPiAgCSAqIGluIHRoZSBsaXN0 LCB0aGUgc29ydCBtdXN0bid0IGNoYW5nZSB0aGUgb3JkZXJpbmcgb2YgYnVmZmVycwo+ICAJICog d2l0aCB0aGUgc2FtZSBwcmlvcml0eSwgaS5lLiBpdCBtdXN0IGJlIHN0YWJsZS4KPiAgCSAqLwo+ IC0JZm9yIChpID0gMDsgaSA8IGxpc3QtPm51bV9lbnRyaWVzOyBpKyspIHsKPiAtCQl1bnNpZ25l ZCBwcmlvcml0eSA9IGxpc3QtPmFycmF5W2ldLnByaW9yaXR5Owo+ICsJYW1kZ3B1X2JvX2xpc3Rf Zm9yX2VhY2hfZW50cnkoZSwgbGlzdCkgewo+ICsJCXVuc2lnbmVkIHByaW9yaXR5ID0gZS0+cHJp b3JpdHk7Cj4gIAo+IC0JCWlmICghbGlzdC0+YXJyYXlbaV0ucm9iai0+cGFyZW50KQo+IC0JCQls aXN0X2FkZF90YWlsKCZsaXN0LT5hcnJheVtpXS50di5oZWFkLAo+IC0JCQkJICAgICAgJmJ1Y2tl dFtwcmlvcml0eV0pOwo+ICsJCWlmICghZS0+cm9iai0+cGFyZW50KQo+ICsJCQlsaXN0X2FkZF90 YWlsKCZlLT50di5oZWFkLCAmYnVja2V0W3ByaW9yaXR5XSk7Cj4gIAo+IC0JCWxpc3QtPmFycmF5 W2ldLnVzZXJfcGFnZXMgPSBOVUxMOwo+ICsJCWUtPnVzZXJfcGFnZXMgPSBOVUxMOwo+ICAJfQo+ ICAKPiAgCS8qIENvbm5lY3QgdGhlIHNvcnRlZCBidWNrZXRzIGluIHRoZSBvdXRwdXQgbGlzdC4g Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xp c3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmgKPiBpbmRl eCAwY2U1NDAyMDNkYjEuLjNkNzdhYmZjZDRhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3QuaAo+IEBAIC02NSw0ICs2NSwxNCBAQCBpbnQgYW1kZ3B1 X2JvX2xpc3RfY3JlYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAJCQkJIHVuc2ln bmVkIG51bV9lbnRyaWVzLAo+ICAJCQkJIHN0cnVjdCBhbWRncHVfYm9fbGlzdCAqKmxpc3QpOwo+ ICAKPiArI2RlZmluZSBhbWRncHVfYm9fbGlzdF9mb3JfZWFjaF9lbnRyeShlLCBsaXN0KSBcCj4g Kwlmb3IgKGUgPSAmKGxpc3QpLT5hcnJheVswXTsgXAo+ICsJICAgICBlICE9ICYobGlzdCktPmFy cmF5WyhsaXN0KS0+bnVtX2VudHJpZXNdOyBcCj4gKwkgICAgICsrZSkKPiArCj4gKyNkZWZpbmUg YW1kZ3B1X2JvX2xpc3RfZm9yX2VhY2hfdXNlcnB0cl9lbnRyeShlLCBsaXN0KSBcCj4gKwlmb3Ig KGUgPSAmKGxpc3QpLT5hcnJheVsobGlzdCktPmZpcnN0X3VzZXJwdHJdOyBcCj4gKwkgICAgIGUg IT0gJihsaXN0KS0+YXJyYXlbKGxpc3QpLT5udW1fZW50cmllc107IFwKPiArCSAgICAgKytlKQo+ ICsKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiBpbmRl eCBmNzE1NGYzZWQ4MDcuLjFkNzI5MmFiMmI2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jCj4gQEAgLTU2MywxMCArNTYzLDEwIEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2NzX3BhcnNlcl9ib3Moc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gIAlzdHJ1Y3QgYW1k Z3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+ICAJc3RydWN0IGFtZGdw dV9ib19saXN0X2VudHJ5ICplOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBkdXBsaWNhdGVzOwo+IC0J dW5zaWduZWQgaSwgdHJpZXMgPSAxMDsKPiAgCXN0cnVjdCBhbWRncHVfYm8gKmdkczsKPiAgCXN0 cnVjdCBhbWRncHVfYm8gKmd3czsKPiAgCXN0cnVjdCBhbWRncHVfYm8gKm9hOwo+ICsJdW5zaWdu ZWQgdHJpZXMgPSAxMDsKPiAgCWludCByOwo+ICAKPiAgCUlOSVRfTElTVF9IRUFEKCZwLT52YWxp ZGF0ZWQpOwo+IEBAIC01OTYsNyArNTk2LDYgQEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFyc2Vy X2JvcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiAgCj4gIAl3aGlsZSAoMSkgewo+ICAJ CXN0cnVjdCBsaXN0X2hlYWQgbmVlZF9wYWdlczsKPiAtCQl1bnNpZ25lZCBpOwo+ICAKPiAgCQly ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmcC0+dGlja2V0LCAmcC0+dmFsaWRhdGVkLCB0cnVl LAo+ICAJCQkJCSAgICZkdXBsaWNhdGVzKTsKPiBAQCAtNjExLDEyICs2MTAsOCBAQCBzdGF0aWMg aW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+ICAJ CQlicmVhazsKPiAgCj4gIAkJSU5JVF9MSVNUX0hFQUQoJm5lZWRfcGFnZXMpOwo+IC0JCWZvciAo aSA9IHAtPmJvX2xpc3QtPmZpcnN0X3VzZXJwdHI7Cj4gLQkJICAgICBpIDwgcC0+Ym9fbGlzdC0+ bnVtX2VudHJpZXM7ICsraSkgewo+IC0JCQlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKPiAtCj4gLQkJ CWUgPSAmcC0+Ym9fbGlzdC0+YXJyYXlbaV07Cj4gLQkJCWJvID0gZS0+cm9iajsKPiArCQlhbWRn cHVfYm9fbGlzdF9mb3JfZWFjaF91c2VycHRyX2VudHJ5KGUsIHAtPmJvX2xpc3QpIHsKPiArCQkJ c3RydWN0IGFtZGdwdV9ibyAqYm8gPSBlLT5yb2JqOwo+ICAKPiAgCQkJaWYgKGFtZGdwdV90dG1f dHRfdXNlcnB0cl9pbnZhbGlkYXRlZChiby0+dGJvLnR0bSwKPiAgCQkJCSAmZS0+dXNlcl9pbnZh bGlkYXRlZCkgJiYgZS0+dXNlcl9wYWdlcykgewo+IEBAIC03MTAsMTYgKzcwNSwxNCBAQCBzdGF0 aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+ ICAKPiAgCWlmIChwLT5ib19saXN0KSB7Cj4gIAkJc3RydWN0IGFtZGdwdV92bSAqdm0gPSAmZnBy aXYtPnZtOwo+IC0JCXVuc2lnbmVkIGk7Cj4gKwkJc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5 ICplOwo+ICAKPiAgCQlnZHMgPSBwLT5ib19saXN0LT5nZHNfb2JqOwo+ICAJCWd3cyA9IHAtPmJv X2xpc3QtPmd3c19vYmo7Cj4gIAkJb2EgPSBwLT5ib19saXN0LT5vYV9vYmo7Cj4gLQkJZm9yIChp ID0gMDsgaSA8IHAtPmJvX2xpc3QtPm51bV9lbnRyaWVzOyBpKyspIHsKPiAtCQkJc3RydWN0IGFt ZGdwdV9ibyAqYm8gPSBwLT5ib19saXN0LT5hcnJheVtpXS5yb2JqOwo+ICAKPiAtCQkJcC0+Ym9f bGlzdC0+YXJyYXlbaV0uYm9fdmEgPSBhbWRncHVfdm1fYm9fZmluZCh2bSwgYm8pOwo+IC0JCX0K PiArCQlhbWRncHVfYm9fbGlzdF9mb3JfZWFjaF9lbnRyeShlLCBwLT5ib19saXN0KQo+ICsJCQll LT5ib192YSA9IGFtZGdwdV92bV9ib19maW5kKHZtLCBlLT5yb2JqKTsKPiAgCX0gZWxzZSB7Cj4g IAkJZ2RzID0gcC0+YWRldi0+Z2RzLmdkc19nZnhfYm87Cj4gIAkJZ3dzID0gcC0+YWRldi0+Z2Rz Lmd3c19nZnhfYm87Cj4gQEAgLTc1MywxMCArNzQ2LDcgQEAgc3RhdGljIGludCBhbWRncHVfY3Nf cGFyc2VyX2JvcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiAgZXJyb3JfZnJlZV9wYWdl czoKPiAgCj4gIAlpZiAocC0+Ym9fbGlzdCkgewo+IC0JCWZvciAoaSA9IHAtPmJvX2xpc3QtPmZp cnN0X3VzZXJwdHI7Cj4gLQkJICAgICBpIDwgcC0+Ym9fbGlzdC0+bnVtX2VudHJpZXM7ICsraSkg ewo+IC0JCQllID0gJnAtPmJvX2xpc3QtPmFycmF5W2ldOwo+IC0KPiArCQlhbWRncHVfYm9fbGlz dF9mb3JfZWFjaF91c2VycHRyX2VudHJ5KGUsIHAtPmJvX2xpc3QpIHsKPiAgCQkJaWYgKCFlLT51 c2VyX3BhZ2VzKQo+ICAJCQkJY29udGludWU7Cj4gIAo+IEBAIC04MzAsNyArODIwLDcgQEAgc3Rh dGljIGludCBhbWRncHVfYm9fdm1fdXBkYXRlX3B0ZShzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAq cCkKPiAgCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gJmZwcml2LT52bTsKPiAgCXN0cnVjdCBhbWRn cHVfYm9fdmEgKmJvX3ZhOwo+ICAJc3RydWN0IGFtZGdwdV9ibyAqYm87Cj4gLQlpbnQgaSwgcjsK PiArCWludCByOwo+ICAKPiAgCXIgPSBhbWRncHVfdm1fY2xlYXJfZnJlZWQoYWRldiwgdm0sIE5V TEwpOwo+ICAJaWYgKHIpCj4gQEAgLTg2MSwxNSArODUxLDE3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2JvX3ZtX3VwZGF0ZV9wdGUoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnApCj4gIAl9Cj4gIAo+ ICAJaWYgKHAtPmJvX2xpc3QpIHsKPiAtCQlmb3IgKGkgPSAwOyBpIDwgcC0+Ym9fbGlzdC0+bnVt X2VudHJpZXM7IGkrKykgewo+ICsJCXN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSAqZTsKPiAr Cj4gKwkJYW1kZ3B1X2JvX2xpc3RfZm9yX2VhY2hfZW50cnkoZSwgcC0+Ym9fbGlzdCkgewo+ICAJ CQlzdHJ1Y3QgZG1hX2ZlbmNlICpmOwo+ICAKPiAgCQkJLyogaWdub3JlIGR1cGxpY2F0ZXMgKi8K PiAtCQkJYm8gPSBwLT5ib19saXN0LT5hcnJheVtpXS5yb2JqOwo+ICsJCQlibyA9IGUtPnJvYmo7 Cj4gIAkJCWlmICghYm8pCj4gIAkJCQljb250aW51ZTsKPiAgCj4gLQkJCWJvX3ZhID0gcC0+Ym9f bGlzdC0+YXJyYXlbaV0uYm9fdmE7Cj4gKwkJCWJvX3ZhID0gZS0+Ym9fdmE7Cj4gIAkJCWlmIChi b192YSA9PSBOVUxMKQo+ICAJCQkJY29udGludWU7Cj4gIAo+IEBAIC04OTgsMTQgKzg5MCwxNSBA QCBzdGF0aWMgaW50IGFtZGdwdV9ib192bV91cGRhdGVfcHRlKHN0cnVjdCBhbWRncHVfY3NfcGFy c2VyICpwKQo+ICAJCXJldHVybiByOwo+ICAKPiAgCWlmIChhbWRncHVfdm1fZGVidWcgJiYgcC0+ Ym9fbGlzdCkgewo+ICsJCXN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSAqZTsKPiArCj4gIAkJ LyogSW52YWxpZGF0ZSBhbGwgQk9zIHRvIHRlc3QgZm9yIHVzZXJzcGFjZSBidWdzICovCj4gLQkJ Zm9yIChpID0gMDsgaSA8IHAtPmJvX2xpc3QtPm51bV9lbnRyaWVzOyBpKyspIHsKPiArCQlhbWRn cHVfYm9fbGlzdF9mb3JfZWFjaF9lbnRyeShlLCBwLT5ib19saXN0KSB7Cj4gIAkJCS8qIGlnbm9y ZSBkdXBsaWNhdGVzICovCj4gLQkJCWJvID0gcC0+Ym9fbGlzdC0+YXJyYXlbaV0ucm9iajsKPiAt CQkJaWYgKCFibykKPiArCQkJaWYgKCFlLT5yb2JqKQo+ICAJCQkJY29udGludWU7Cj4gIAo+IC0J CQlhbWRncHVfdm1fYm9faW52YWxpZGF0ZShhZGV2LCBibywgZmFsc2UpOwo+ICsJCQlhbWRncHVf dm1fYm9faW52YWxpZGF0ZShhZGV2LCBlLT5yb2JqLCBmYWxzZSk7Cj4gIAkJfQo+ICAJfQo+ICAK PiBAQCAtMTIyNSwxNiArMTIxOCwxNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXQoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gIAlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50 aXR5ID0gJnAtPmN0eC0+cmluZ3NbcmluZy0+aWR4XS5lbnRpdHk7Cj4gIAllbnVtIGRybV9zY2hl ZF9wcmlvcml0eSBwcmlvcml0eTsKPiAgCXN0cnVjdCBhbWRncHVfam9iICpqb2I7Cj4gLQl1bnNp Z25lZCBpOwo+ICAJdWludDY0X3Qgc2VxOwo+ICAKPiAgCWludCByOwo+ICAKPiAgCWFtZGdwdV9t bl9sb2NrKHAtPm1uKTsKPiAgCWlmIChwLT5ib19saXN0KSB7Cj4gLQkJZm9yIChpID0gcC0+Ym9f bGlzdC0+Zmlyc3RfdXNlcnB0cjsKPiAtCQkgICAgIGkgPCBwLT5ib19saXN0LT5udW1fZW50cmll czsgKytpKSB7Cj4gLQkJCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gcC0+Ym9fbGlzdC0+YXJyYXlb aV0ucm9iajsKPiArCQlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4gKwo+ICsJCWFt ZGdwdV9ib19saXN0X2Zvcl9lYWNoX3VzZXJwdHJfZW50cnkoZSwgcC0+Ym9fbGlzdCkgewo+ICsJ CQlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGUtPnJvYmo7Cj4gIAo+ICAJCQlpZiAoYW1kZ3B1X3R0 bV90dF91c2VycHRyX25lZWRzX3BhZ2VzKGJvLT50Ym8udHRtKSkgewo+ICAJCQkJYW1kZ3B1X21u X3VubG9jayhwLT5tbik7Cj4gLS0gCj4gMi4xNC4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeAo=