From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH libdrm] amdgpu: add a function to create amdgpu bo internally (v4) Date: Tue, 14 Aug 2018 10:59:43 +0800 Message-ID: <5B72459F.8040309@amd.com> References: <1534154763-2287-1-git-send-email-Jerry.Zhang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gMDgvMTMvMjAxOCAwNjoxNCBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBBbSAxMy4w OC4yMDE4IHVtIDEyOjA2IHNjaHJpZWIgSnVud2VpIFpoYW5nOgo+PiBhIGhlbHBlciBmdW5jdGlv biB0byBjcmVhdGUgYW5kIGluaXRpYWxpemUgYW1kZ3B1IGJvCj4+Cj4+IHYyOiB1cGRhdGUgZXJy b3IgaGFuZGxpbmc6IGFkZCBsYWJlbCBhbmQgZnJlZSBibwo+PiB2MzogdXBkYXRlIGVycm9yIGhh bmRsaW5nOiBzZXBhcmF0ZSBlYWNoIGVycm9yIGxhYmVsCj4+IHY0OiB1cGRhdGUgZXJyb3IgaGFu ZGxpbmcgYW5kIGZyZWUgZmxpbmsgYm8gaW4gYm8gaW1wb3J0Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IEp1bndlaSBaaGFuZyA8SmVycnkuWmhhbmdAYW1kLmNvbT4KPgo+IEEgc2VwYXJhdGUgcGF0Y2gg Zm9yIHRoZSBmaXggdG8gZmxpbmsgaGFuZGxlIGhhbmRsaW5nIHdvdWxkIGJlIG5pY2UsIGJ1dCBw YXRjaCBpcyBSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPiBhbnl3YXkuCgpUaGFua3MsIHllcy4KSSB3aWxsIHByZXBhcmUgdGhlIGZpeCBwYXRj aCBmb3Igb3JpZ2luYWwgY29kZSBiYXNlLCB0aGVuIGl0IGNvdWxkIGJlIHBvcnRlZCBmb3IgbGVn YWN5IGxpYmRybS4KVGhpcyBwYXRjaCBjb3VsZCBiZSByZWJhc2VkIGFzIGZpbmFsIHZlcnNpb24u CgpKZXJyeQoKPgo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+Cj4+IC0tLQo+PiAgIGFtZGdwdS9h bWRncHVfYm8uYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKSwgMTAx IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvYW1kZ3B1L2FtZGdwdV9iby5jIGIvYW1k Z3B1L2FtZGdwdV9iby5jCj4+IGluZGV4IGI3OTBlOWIuLmFkNzJmMDkgMTAwNjQ0Cj4+IC0tLSBh L2FtZGdwdS9hbWRncHVfYm8uYwo+PiArKysgYi9hbWRncHUvYW1kZ3B1X2JvLmMKPj4gQEAgLTQ4 LDExICs0OCwzMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShhbWRncHVf ZGV2aWNlX2hhbmRsZSBkZXYsCj4+ICAgICAgIGRybUlvY3RsKGRldi0+ZmQsIERSTV9JT0NUTF9H RU1fQ0xPU0UsICZhcmdzKTsKPj4gICB9Cj4+ICtzdGF0aWMgaW50IGFtZGdwdV9ib19jcmVhdGUo YW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+PiArICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNp emUsCj4+ICsgICAgICAgICAgICAgICAgdWludDMyX3QgaGFuZGxlLAo+PiArICAgICAgICAgICAg ICAgIGFtZGdwdV9ib19oYW5kbGUgKmJ1Zl9oYW5kbGUpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGFt ZGdwdV9ibyAqYm87Cj4+ICsKPj4gKyAgICBibyA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGFt ZGdwdV9ibykpOwo+PiArICAgIGlmICghYm8pCj4+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ PiArCj4+ICsgICAgYXRvbWljX3NldCgmYm8tPnJlZmNvdW50LCAxKTsKPj4gKyAgICBiby0+ZGV2 ID0gZGV2Owo+PiArICAgIGJvLT5hbGxvY19zaXplID0gc2l6ZTsKPj4gKyAgICBiby0+aGFuZGxl ID0gaGFuZGxlOwo+PiArICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmYm8tPmNwdV9hY2Nlc3NfbXV0 ZXgsIE5VTEwpOwo+PiArCj4+ICsgICAgKmJ1Zl9oYW5kbGUgPSBibzsKPj4gKyAgICByZXR1cm4g MDsKPj4gK30KPj4gKwo+PiAgIGludCBhbWRncHVfYm9fYWxsb2MoYW1kZ3B1X2RldmljZV9oYW5k bGUgZGV2LAo+PiAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm9fYWxsb2NfcmVxdWVzdCAq YWxsb2NfYnVmZmVyLAo+PiAgICAgICAgICAgICAgIGFtZGdwdV9ib19oYW5kbGUgKmJ1Zl9oYW5k bGUpCj4+ICAgewo+PiAtICAgIHN0cnVjdCBhbWRncHVfYm8gKmJvOwo+PiAgICAgICB1bmlvbiBk cm1fYW1kZ3B1X2dlbV9jcmVhdGUgYXJnczsKPj4gICAgICAgdW5zaWduZWQgaGVhcCA9IGFsbG9j X2J1ZmZlci0+cHJlZmVycmVkX2hlYXA7Cj4+ICAgICAgIGludCByID0gMDsKPj4gQEAgLTYxLDE0 ICs4MSw2IEBAIGludCBhbWRncHVfYm9fYWxsb2MoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+ PiAgICAgICBpZiAoIShoZWFwICYgKEFNREdQVV9HRU1fRE9NQUlOX0dUVCB8IEFNREdQVV9HRU1f RE9NQUlOX1ZSQU0pKSkKPj4gICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiAtICAgIGJvID0g Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2JvKSk7Cj4+IC0gICAgaWYgKCFibykKPj4g LSAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+IC0KPj4gLSAgICBhdG9taWNfc2V0KCZiby0+cmVm Y291bnQsIDEpOwo+PiAtICAgIGJvLT5kZXYgPSBkZXY7Cj4+IC0gICAgYm8tPmFsbG9jX3NpemUg PSBhbGxvY19idWZmZXItPmFsbG9jX3NpemU7Cj4+IC0KPj4gICAgICAgbWVtc2V0KCZhcmdzLCAw LCBzaXplb2YoYXJncykpOwo+PiAgICAgICBhcmdzLmluLmJvX3NpemUgPSBhbGxvY19idWZmZXIt PmFsbG9jX3NpemU7Cj4+ICAgICAgIGFyZ3MuaW4uYWxpZ25tZW50ID0gYWxsb2NfYnVmZmVyLT5w aHlzX2FsaWdubWVudDsKPj4gQEAgLTgwLDI0ICs5MiwyMyBAQCBpbnQgYW1kZ3B1X2JvX2FsbG9j KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKPj4gICAgICAgLyogQWxsb2NhdGUgdGhlIGJ1ZmZl ciB3aXRoIHRoZSBwcmVmZXJyZWQgaGVhcC4gKi8KPj4gICAgICAgciA9IGRybUNvbW1hbmRXcml0 ZVJlYWQoZGV2LT5mZCwgRFJNX0FNREdQVV9HRU1fQ1JFQVRFLAo+PiAgICAgICAgICAgICAgICAg ICAmYXJncywgc2l6ZW9mKGFyZ3MpKTsKPj4gKyAgICBpZiAocikKPj4gKyAgICAgICAgZ290byBv dXQ7Cj4+ICsKPj4gKyAgICByID0gYW1kZ3B1X2JvX2NyZWF0ZShkZXYsIGFsbG9jX2J1ZmZlci0+ YWxsb2Nfc2l6ZSwgYXJncy5vdXQuaGFuZGxlLAo+PiArICAgICAgICAgICAgICAgICBidWZfaGFu ZGxlKTsKPj4gICAgICAgaWYgKHIpIHsKPj4gLSAgICAgICAgZnJlZShibyk7Cj4+IC0gICAgICAg IHJldHVybiByOwo+PiArICAgICAgICBhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShkZXYsIGFyZ3Mu b3V0LmhhbmRsZSk7Cj4+ICsgICAgICAgIGdvdG8gb3V0Owo+PiAgICAgICB9Cj4+IC0gICAgYm8t PmhhbmRsZSA9IGFyZ3Mub3V0LmhhbmRsZTsKPj4gLQo+PiAtICAgIHB0aHJlYWRfbXV0ZXhfbG9j aygmYm8tPmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAtICAgIHIgPSBoYW5kbGVfdGFibGVfaW5z ZXJ0KCZiby0+ZGV2LT5ib19oYW5kbGVzLCBiby0+aGFuZGxlLCBibyk7Cj4+IC0gICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmJvLT5kZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gLQo+PiAtICAgIHB0 aHJlYWRfbXV0ZXhfaW5pdCgmYm8tPmNwdV9hY2Nlc3NfbXV0ZXgsIE5VTEwpOwo+PiAtCj4+ICsg ICAgcHRocmVhZF9tdXRleF9sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gKyAgICByID0g aGFuZGxlX3RhYmxlX2luc2VydCgmZGV2LT5ib19oYW5kbGVzLCAoKmJ1Zl9oYW5kbGUpLT5oYW5k bGUsCj4+ICsgICAgICAgICAgICAgICAgKmJ1Zl9oYW5kbGUpOwo+PiArICAgIHB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gICAgICAgaWYgKHIpCj4+IC0gICAg ICAgIGFtZGdwdV9ib19mcmVlKGJvKTsKPj4gLSAgICBlbHNlCj4+IC0gICAgICAgICpidWZfaGFu ZGxlID0gYm87Cj4+IC0KPj4gKyAgICAgICAgYW1kZ3B1X2JvX2ZyZWUoKmJ1Zl9oYW5kbGUpOwo+ PiArb3V0Ogo+PiAgICAgICByZXR1cm4gcjsKPj4gICB9Cj4+IEBAIC0yNTUsOCArMjY2LDExIEBA IGludCBhbWRncHVfYm9faW1wb3J0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKPj4gICAgICAg ICAgICAgICAgc3RydWN0IGFtZGdwdV9ib19pbXBvcnRfcmVzdWx0ICpvdXRwdXQpCj4+ICAgewo+ PiAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vcGVuIG9wZW5fYXJnID0ge307Cj4+ICsgICAgc3RydWN0 IGRybV9nZW1fY2xvc2UgY2xvc2VfYXJncyA9IHt9Owo+PiAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Jv ICpibyA9IE5VTEw7Cj4+IC0gICAgaW50IHI7Cj4+ICsgICAgdWludDMyX3QgaGFuZGxlID0gMCwg ZmxpbmtfbmFtZSA9IDA7Cj4+ICsgICAgdWludDY0X3QgYWxsb2Nfc2l6ZSA9IDA7Cj4+ICsgICAg aW50IHIgPSAwOwo+PiAgICAgICBpbnQgZG1hX2ZkOwo+PiAgICAgICB1aW50NjRfdCBkbWFfYnVm X3NpemUgPSAwOwo+PiBAQCAtMjY2LDIyICsyODAsMTggQEAgaW50IGFtZGdwdV9ib19pbXBvcnQo YW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+PiAgICAgICAvKiBDb252ZXJ0IGEgRE1BIGJ1ZiBo YW5kbGUgdG8gYSBLTVMgaGFuZGxlIG5vdy4gKi8KPj4gICAgICAgaWYgKHR5cGUgPT0gYW1kZ3B1 X2JvX2hhbmRsZV90eXBlX2RtYV9idWZfZmQpIHsKPj4gLSAgICAgICAgdWludDMyX3QgaGFuZGxl Owo+PiAgICAgICAgICAgb2ZmX3Qgc2l6ZTsKPj4gICAgICAgICAgIC8qIEdldCBhIEtNUyBoYW5k bGUuICovCj4+ICAgICAgICAgICByID0gZHJtUHJpbWVGRFRvSGFuZGxlKGRldi0+ZmQsIHNoYXJl ZF9oYW5kbGUsICZoYW5kbGUpOwo+PiAtICAgICAgICBpZiAocikgewo+PiAtICAgICAgICAgICAg cHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAtICAgICAgICAg ICAgcmV0dXJuIHI7Cj4+IC0gICAgICAgIH0KPj4gKyAgICAgICAgaWYgKHIpCj4+ICsgICAgICAg ICAgICBnb3RvIHVubG9jazsKPj4gICAgICAgICAgIC8qIFF1ZXJ5IHRoZSBidWZmZXIgc2l6ZS4g Ki8KPj4gICAgICAgICAgIHNpemUgPSBsc2VlayhzaGFyZWRfaGFuZGxlLCAwLCBTRUVLX0VORCk7 Cj4+ICAgICAgICAgICBpZiAoc2l6ZSA9PSAob2ZmX3QpLTEpIHsKPj4gLSAgICAgICAgICAgIHB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gLSAgICAgICAgICAg IGFtZGdwdV9jbG9zZV9rbXNfaGFuZGxlKGRldiwgaGFuZGxlKTsKPj4gLSAgICAgICAgICAgIHJl dHVybiAtZXJybm87Cj4+ICsgICAgICAgICAgICByID0gLWVycm5vOwo+PiArICAgICAgICAgICAg Z290byBmcmVlX2JvX2hhbmRsZTsKPj4gICAgICAgICAgIH0KPj4gICAgICAgICAgIGxzZWVrKHNo YXJlZF9oYW5kbGUsIDAsIFNFRUtfU0VUKTsKPj4gQEAgLTMwMiwxMiArMzEyLDEyIEBAIGludCBh bWRncHVfYm9faW1wb3J0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKPj4gICAgICAgY2FzZSBh bWRncHVfYm9faGFuZGxlX3R5cGVfa21zOgo+PiAgICAgICBjYXNlIGFtZGdwdV9ib19oYW5kbGVf dHlwZV9rbXNfbm9pbXBvcnQ6Cj4+ICAgICAgICAgICAvKiBJbXBvcnRpbmcgYSBLTVMgaGFuZGxl IGluIG5vdCBhbGxvd2VkLiAqLwo+PiAtICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZGV2 LT5ib190YWJsZV9tdXRleCk7Cj4+IC0gICAgICAgIHJldHVybiAtRVBFUk07Cj4+ICsgICAgICAg IHIgPSAtRVBFUk07Cj4+ICsgICAgICAgIGdvdG8gdW5sb2NrOwo+PiAgICAgICBkZWZhdWx0Ogo+ PiAtICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5ib190YWJsZV9tdXRleCk7Cj4+ IC0gICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgICByID0gLUVJTlZBTDsKPj4gKyAg ICAgICAgZ290byB1bmxvY2s7Cj4+ICAgICAgIH0KPj4gICAgICAgaWYgKGJvKSB7Cj4+IEBAIC0z MjAsNTggKzMzMCwzNyBAQCBpbnQgYW1kZ3B1X2JvX2ltcG9ydChhbWRncHVfZGV2aWNlX2hhbmRs ZSBkZXYsCj4+ICAgICAgICAgICByZXR1cm4gMDsKPj4gICAgICAgfQo+PiAtICAgIGJvID0gY2Fs bG9jKDEsIHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2JvKSk7Cj4+IC0gICAgaWYgKCFibykgewo+PiAt ICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5ib190YWJsZV9tdXRleCk7Cj4+IC0g ICAgICAgIGlmICh0eXBlID09IGFtZGdwdV9ib19oYW5kbGVfdHlwZV9kbWFfYnVmX2ZkKSB7Cj4+ IC0gICAgICAgICAgICBhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShkZXYsIHNoYXJlZF9oYW5kbGUp Owo+PiAtICAgICAgICB9Cj4+IC0gICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiAtICAgIH0KPj4g LQo+PiAgICAgICAvKiBPcGVuIHRoZSBoYW5kbGUuICovCj4+ICAgICAgIHN3aXRjaCAodHlwZSkg ewo+PiAgICAgICBjYXNlIGFtZGdwdV9ib19oYW5kbGVfdHlwZV9nZW1fZmxpbmtfbmFtZToKPj4g ICAgICAgICAgIG9wZW5fYXJnLm5hbWUgPSBzaGFyZWRfaGFuZGxlOwo+PiAgICAgICAgICAgciA9 IGRybUlvY3RsKGRldi0+ZmxpbmtfZmQsIERSTV9JT0NUTF9HRU1fT1BFTiwgJm9wZW5fYXJnKTsK Pj4gLSAgICAgICAgaWYgKHIpIHsKPj4gLSAgICAgICAgICAgIGZyZWUoYm8pOwo+PiAtICAgICAg ICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAtICAg ICAgICAgICAgcmV0dXJuIHI7Cj4+IC0gICAgICAgIH0KPj4gKyAgICAgICAgaWYgKHIpCj4+ICsg ICAgICAgICAgICBnb3RvIHVubG9jazsKPj4gLSAgICAgICAgYm8tPmhhbmRsZSA9IG9wZW5fYXJn LmhhbmRsZTsKPj4gKyAgICAgICAgZmxpbmtfbmFtZSA9IHNoYXJlZF9oYW5kbGU7Cj4+ICsgICAg ICAgIGhhbmRsZSA9IG9wZW5fYXJnLmhhbmRsZTsKPj4gKyAgICAgICAgYWxsb2Nfc2l6ZSA9IG9w ZW5fYXJnLnNpemU7Cj4+ICAgICAgICAgICBpZiAoZGV2LT5mbGlua19mZCAhPSBkZXYtPmZkKSB7 Cj4+IC0gICAgICAgICAgICByID0gZHJtUHJpbWVIYW5kbGVUb0ZEKGRldi0+ZmxpbmtfZmQsIGJv LT5oYW5kbGUsIERSTV9DTE9FWEVDLCAmZG1hX2ZkKTsKPj4gLSAgICAgICAgICAgIGlmIChyKSB7 Cj4+IC0gICAgICAgICAgICAgICAgZnJlZShibyk7Cj4+IC0gICAgICAgICAgICAgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAtICAgICAgICAgICAgICAg IHJldHVybiByOwo+PiAtICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgciA9IGRybVByaW1l RkRUb0hhbmRsZShkZXYtPmZkLCBkbWFfZmQsICZiby0+aGFuZGxlICk7Cj4+IC0KPj4gKyAgICAg ICAgICAgIHIgPSBkcm1QcmltZUhhbmRsZVRvRkQoZGV2LT5mbGlua19mZCwgaGFuZGxlLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0NMT0VYRUMsICZkbWFfZmQpOwo+PiArICAg ICAgICAgICAgaWYgKHIpCj4+ICsgICAgICAgICAgICAgICAgZ290byBmcmVlX2JvX2hhbmRsZTsK Pj4gKyAgICAgICAgICAgIHIgPSBkcm1QcmltZUZEVG9IYW5kbGUoZGV2LT5mZCwgZG1hX2ZkLCAm aGFuZGxlKTsKPj4gICAgICAgICAgICAgICBjbG9zZShkbWFfZmQpOwo+PiAtCj4+IC0gICAgICAg ICAgICBpZiAocikgewo+PiAtICAgICAgICAgICAgICAgIGZyZWUoYm8pOwo+PiAtICAgICAgICAg ICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gLSAg ICAgICAgICAgICAgICByZXR1cm4gcjsKPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAgfQo+ PiAtICAgICAgICBiby0+ZmxpbmtfbmFtZSA9IHNoYXJlZF9oYW5kbGU7Cj4+IC0gICAgICAgIGJv LT5hbGxvY19zaXplID0gb3Blbl9hcmcuc2l6ZTsKPj4gLSAgICAgICAgciA9IGhhbmRsZV90YWJs ZV9pbnNlcnQoJmRldi0+Ym9fZmxpbmtfbmFtZXMsIHNoYXJlZF9oYW5kbGUsCj4+IC0gICAgICAg ICAgICAgICAgICAgIGJvKTsKPj4gLSAgICAgICAgaWYgKHIpIHsKPj4gLSAgICAgICAgICAgIHB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gLSAgICAgICAgICAg IGFtZGdwdV9ib19mcmVlKGJvKTsKPj4gLSAgICAgICAgICAgIHJldHVybiByOwo+PiArICAgICAg ICAgICAgaWYgKHIpCj4+ICsgICAgICAgICAgICAgICAgZ290byBmcmVlX2JvX2hhbmRsZTsKPj4g KyAgICAgICAgICAgIGNsb3NlX2FyZ3MuaGFuZGxlID0gb3Blbl9hcmcuaGFuZGxlOwo+PiArICAg ICAgICAgICAgciA9IGRybUlvY3RsKGRldi0+ZmxpbmtfZmQsIERSTV9JT0NUTF9HRU1fQ0xPU0Us Cj4+ICsgICAgICAgICAgICAgICAgICAgICAmY2xvc2VfYXJncyk7Cj4+ICsgICAgICAgICAgICBp ZiAocikKPj4gKyAgICAgICAgICAgICAgICBnb3RvIGZyZWVfYm9faGFuZGxlOwo+PiAgICAgICAg ICAgfQo+PiAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgIGNhc2UgYW1kZ3B1X2JvX2hhbmRsZV90 eXBlX2RtYV9idWZfZmQ6Cj4+IC0gICAgICAgIGJvLT5oYW5kbGUgPSBzaGFyZWRfaGFuZGxlOwo+ PiAtICAgICAgICBiby0+YWxsb2Nfc2l6ZSA9IGRtYV9idWZfc2l6ZTsKPj4gKyAgICAgICAgaGFu ZGxlID0gc2hhcmVkX2hhbmRsZTsKPj4gKyAgICAgICAgYWxsb2Nfc2l6ZSA9IGRtYV9idWZfc2l6 ZTsKPj4gICAgICAgICAgIGJyZWFrOwo+PiAgICAgICBjYXNlIGFtZGdwdV9ib19oYW5kbGVfdHlw ZV9rbXM6Cj4+IEBAIC0zODAsMTYgKzM2OSw0MSBAQCBpbnQgYW1kZ3B1X2JvX2ltcG9ydChhbWRn cHVfZGV2aWNlX2hhbmRsZSBkZXYsCj4+ICAgICAgIH0KPj4gICAgICAgLyogSW5pdGlhbGl6ZSBp dC4gKi8KPj4gLSAgICBhdG9taWNfc2V0KCZiby0+cmVmY291bnQsIDEpOwo+PiAtICAgIGJvLT5k ZXYgPSBkZXY7Cj4+IC0gICAgcHRocmVhZF9tdXRleF9pbml0KCZiby0+Y3B1X2FjY2Vzc19tdXRl eCwgTlVMTCk7Cj4+ICsgICAgciA9IGFtZGdwdV9ib19jcmVhdGUoZGV2LCBhbGxvY19zaXplLCBo YW5kbGUsICZibyk7Cj4+ICsgICAgaWYgKHIpCj4+ICsgICAgICAgIGdvdG8gZnJlZV9ib19oYW5k bGU7Cj4+IC0gICAgaGFuZGxlX3RhYmxlX2luc2VydCgmZGV2LT5ib19oYW5kbGVzLCBiby0+aGFu ZGxlLCBibyk7Cj4+IC0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+Ym9fdGFibGVfbXV0 ZXgpOwo+PiArICAgIHIgPSBoYW5kbGVfdGFibGVfaW5zZXJ0KCZkZXYtPmJvX2hhbmRsZXMsIGJv LT5oYW5kbGUsIGJvKTsKPj4gKyAgICBpZiAocikKPj4gKyAgICAgICAgZ290byBmcmVlX2JvX2hh bmRsZTsKPj4gKyAgICBpZiAoZmxpbmtfbmFtZSkgewo+PiArICAgICAgICBiby0+ZmxpbmtfbmFt ZSA9IGZsaW5rX25hbWU7Cj4+ICsgICAgICAgIHIgPSBoYW5kbGVfdGFibGVfaW5zZXJ0KCZkZXYt PmJvX2ZsaW5rX25hbWVzLCBmbGlua19uYW1lLAo+PiArICAgICAgICAgICAgICAgICAgICBibyk7 Cj4+ICsgICAgICAgIGlmIChyKQo+PiArICAgICAgICAgICAgZ290byByZW1vdmVfaGFuZGxlOwo+ PiArCj4+ICsgICAgfQo+PiAgICAgICBvdXRwdXQtPmJ1Zl9oYW5kbGUgPSBibzsKPj4gICAgICAg b3V0cHV0LT5hbGxvY19zaXplID0gYm8tPmFsbG9jX3NpemU7Cj4+ICsgICAgcHRocmVhZF9tdXRl eF91bmxvY2soJmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAgICAgICByZXR1cm4gMDsKPj4gKwo+ PiArcmVtb3ZlX2hhbmRsZToKPj4gKyAgICBoYW5kbGVfdGFibGVfcmVtb3ZlKCZkZXYtPmJvX2hh bmRsZXMsIGJvLT5oYW5kbGUpOwo+PiArZnJlZV9ib19oYW5kbGU6Cj4+ICsgICAgaWYgKGZsaW5r X25hbWUgJiYgIWNsb3NlX2FyZ3MuaGFuZGxlICYmIG9wZW5fYXJnLmhhbmRsZSkgewo+PiArICAg ICAgICBjbG9zZV9hcmdzLmhhbmRsZSA9IG9wZW5fYXJnLmhhbmRsZTsKPj4gKyAgICAgICAgZHJt SW9jdGwoZGV2LT5mbGlua19mZCwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgJmNsb3NlX2FyZ3MpOwo+ PiArICAgIH0KPj4gKyAgICBpZiAoYm8pCj4+ICsgICAgICAgIGFtZGdwdV9ib19mcmVlKGJvKTsK Pj4gKyAgICBlbHNlCj4+ICsgICAgICAgIGFtZGdwdV9jbG9zZV9rbXNfaGFuZGxlKGRldiwgaGFu ZGxlKTsKPj4gK3VubG9jazoKPj4gKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5ib190 YWJsZV9tdXRleCk7Cj4+ICsgICAgcmV0dXJuIHI7Cj4+ICAgfQo+PiAgIGludCBhbWRncHVfYm9f ZnJlZShhbWRncHVfYm9faGFuZGxlIGJ1Zl9oYW5kbGUpCj4+IEBAIC01NzQsNyArNTg4LDYgQEAg aW50IGFtZGdwdV9jcmVhdGVfYm9fZnJvbV91c2VyX21lbShhbWRncHVfZGV2aWNlX2hhbmRsZSBk ZXYsCj4+ICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfYm9faGFuZGxlICpidWZfaGFuZGxl KQo+PiAgIHsKPj4gICAgICAgaW50IHI7Cj4+IC0gICAgc3RydWN0IGFtZGdwdV9ibyAqYm87Cj4+ ICAgICAgIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV91c2VycHRyIGFyZ3M7Cj4+ICAgICAgIGFyZ3Mu YWRkciA9ICh1aW50cHRyX3QpY3B1Owo+PiBAQCAtNTg0LDI4ICs1OTcsMjEgQEAgaW50IGFtZGdw dV9jcmVhdGVfYm9fZnJvbV91c2VyX21lbShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCj4+ICAg ICAgIHIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGRldi0+ZmQsIERSTV9BTURHUFVfR0VNX1VTRVJQ VFIsCj4+ICAgICAgICAgICAgICAgICAgICZhcmdzLCBzaXplb2YoYXJncykpOwo+PiAgICAgICBp ZiAocikKPj4gLSAgICAgICAgcmV0dXJuIHI7Cj4+IC0KPj4gLSAgICBibyA9IGNhbGxvYygxLCBz aXplb2Yoc3RydWN0IGFtZGdwdV9ibykpOwo+PiAtICAgIGlmICghYm8pCj4+IC0gICAgICAgIHJl dHVybiAtRU5PTUVNOwo+PiAtCj4+IC0gICAgYXRvbWljX3NldCgmYm8tPnJlZmNvdW50LCAxKTsK Pj4gLSAgICBiby0+ZGV2ID0gZGV2Owo+PiAtICAgIGJvLT5hbGxvY19zaXplID0gc2l6ZTsKPj4g LSAgICBiby0+aGFuZGxlID0gYXJncy5oYW5kbGU7Cj4+ICsgICAgICAgIGdvdG8gb3V0Owo+PiAt ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYm8tPmRldi0+Ym9fdGFibGVfbXV0ZXgpOwo+PiAtICAg IHIgPSBoYW5kbGVfdGFibGVfaW5zZXJ0KCZiby0+ZGV2LT5ib19oYW5kbGVzLCBiby0+aGFuZGxl LCBibyk7Cj4+IC0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmJvLT5kZXYtPmJvX3RhYmxlX211 dGV4KTsKPj4gLQo+PiAtICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmYm8tPmNwdV9hY2Nlc3NfbXV0 ZXgsIE5VTEwpOwo+PiArICAgIHIgPSBhbWRncHVfYm9fY3JlYXRlKGRldiwgc2l6ZSwgYXJncy5o YW5kbGUsIGJ1Zl9oYW5kbGUpOwo+PiArICAgIGlmIChyKSB7Cj4+ICsgICAgICAgIGFtZGdwdV9j bG9zZV9rbXNfaGFuZGxlKGRldiwgYXJncy5oYW5kbGUpOwo+PiArICAgICAgICBnb3RvIG91dDsK Pj4gKyAgICB9Cj4+ICsgICAgcHRocmVhZF9tdXRleF9sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4 KTsKPj4gKyAgICByID0gaGFuZGxlX3RhYmxlX2luc2VydCgmZGV2LT5ib19oYW5kbGVzLCAoKmJ1 Zl9oYW5kbGUpLT5oYW5kbGUsCj4+ICsgICAgICAgICAgICAgICAgKmJ1Zl9oYW5kbGUpOwo+PiAr ICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKPj4gICAgICAg aWYgKHIpCj4+IC0gICAgICAgIGFtZGdwdV9ib19mcmVlKGJvKTsKPj4gLSAgICBlbHNlCj4+IC0g ICAgICAgICpidWZfaGFuZGxlID0gYm87Cj4+IC0KPj4gKyAgICAgICAgYW1kZ3B1X2JvX2ZyZWUo KmJ1Zl9oYW5kbGUpOwo+PiArb3V0Ogo+PiAgICAgICByZXR1cm4gcjsKPj4gICB9Cj4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==