From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH libdrm] libdrm_amdgpu: add kernel semaphore support Date: Fri, 7 Jul 2017 11:07:37 +0200 Message-ID: <8a5bb44b-c749-43e1-c58a-6c340bbf5474@vodafone.de> References: <20170706011749.4217-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dave Airlie , dri-devel , amd-gfx mailing list , "Olsak, Marek" List-Id: dri-devel@lists.freedesktop.org SGkgRGF2ZSwKCm9uIGZpcnN0IGdsYW5jZSB0aGF0IGxvb2tzIHJhdGhlciBnb29kIHRvIG1lLCBi dXQgdGhlcmUgaXMgb25lIHRoaW5ncyBJIApkb24ndCByZWFsbHkgbGlrZSBhbmQgSSBzdHJvbmds eSB0aGluayBNYXJlayB3aWxsIGFic29sdXRlbHkgYWdyZWUgb24gCnRoYXQ6IFdoZW4gd2UgYWRk IGEgbmV3IENTIGZ1bmN0aW9uIHRoZW4gbGV0J3MgZ2V0IHJpZGUgb2YgYWxsIHRoaXMgCmFic3Ry YWN0aW9uIQoKVGhlIG5ldyBmdW5jdGlvbiBzaG91bGQgZ2V0IGFuIGFtZGdwdV9kZXZpY2VfaGFu ZGxlIGFuZCBhIGxpc3Qgb2YgY2h1bmtzIAp0byBzdWJtaXQsIG5vdGhpbmcgZWxzZS4KCldoZW4g dGhlbiBwcm92aWRlIGhlbHBlciBmdW5jdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIGNodW5rcyBvdXQg b2YgdGhlIApleGlzdGluZyBhbWRncHVfY29udGV4dF9oYW5kbGUgYW5kIGFtZGdwdV9ib19saXN0 X2hhbmRsZS4KClRoYXQgc2hvdWxkIGJlIHBlcmZlY3RseSBzdWZmaWNpZW50IGFuZCBleHRlbnNp YmxlIGZvciBmdXR1cmUgYWRkaXRpb25zIAphcyB3ZWxsLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoK QW0gMDcuMDcuMjAxNyB1bSAwMDoxOSBzY2hyaWViIERhdmUgQWlybGllOgo+IENocnN0aWFuLAo+ Cj4geW91IGFyZSBwcm9iYWJseSB0aGUgYmVzdCBwZXJzb24gdG8gYWNrIHRoaXMsIEknZCBsaWtl IHRvIGdldCB0aGUgcmFkdgo+IGNvZGUgbGFuZGVkCj4gYW5kIGFsbG93IHRoZSBHTCBjb2RlIHRv IGdldCBnb2luZy4KPgo+IERhdmUuCj4KPj4gVGhpcyBhZGRzIGtlcm5lbCBzZW1hcGhvcmUgc3Vw cG9ydCB0byB0aGUgY29tbWFuZCBzdWJtaXNzaW9uCj4+IGludGVyZmFjZSBpbiB3aGF0IHNob3Vs ZCBiZSBhIGJhY2t3YXJkcyBjb21wYXRpYmxlIG1hbm5lciwKPj4gaXQgYWRkcyBhIG5ldyBjb21t YW5kIHN1Ym1pc3Npb24gQVBJLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWly bGllZEByZWRoYXQuY29tPgo+PiAtLS0KPj4gICBhbWRncHUvYW1kZ3B1LmggICAgfCAgMjkgKysr KysrKysrKysrLQo+PiAgIGFtZGdwdS9hbWRncHVfY3MuYyB8IDExOCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiAgIDIgZmlsZXMgY2hhbmdl ZCwgMTM4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9h bWRncHUvYW1kZ3B1LmggYi9hbWRncHUvYW1kZ3B1LmgKPj4gaW5kZXggMTkwMWZhOC4uNjQ5YjY2 ZSAxMDA2NDQKPj4gLS0tIGEvYW1kZ3B1L2FtZGdwdS5oCj4+ICsrKyBiL2FtZGdwdS9hbWRncHUu aAo+PiBAQCAtMzY5LDYgKzM2OSwxNiBAQCBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3Qgewo+PiAg ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX2ZlbmNlX2luZm8gZmVuY2VfaW5mbzsKPj4gICB9Owo+ Pgo+PiArc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0X3N5bmNvYmogewo+PiArICAgICAgIC8qCj4+ ICsgICAgICAgICoKPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICB1aW50MzJfdCBudW1iZXJfaW5f c3luY29iajsKPj4gKyAgICAgICB1aW50MzJfdCBudW1iZXJfb3V0X3N5bmNvYmo7Cj4+ICsgICAg ICAgdWludDMyX3QgKmluX3N5bmNvYmo7Cj4+ICsgICAgICAgdWludDMyX3QgKm91dF9zeW5jb2Jq Owo+PiArfTsKPj4gKwo+PiAgIC8qKgo+PiAgICAqIFN0cnVjdHVyZSB3aGljaCBwcm92aWRlIGlu Zm9ybWF0aW9uIGFib3V0IEdQVSBWTSBNQyBBZGRyZXNzIHNwYWNlCj4+ICAgICogYWxpZ25tZW50 cyByZXF1aXJlbWVudHMKPj4gQEAgLTg4Niw2ICs4OTYsMTIgQEAgaW50IGFtZGdwdV9jc19zdWJt aXQoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCj4+ICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgKmlic19yZXF1ZXN0LAo+PiAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgbnVtYmVyX29mX3JlcXVlc3RzKTsKPj4KPj4gK2ludCBhbWRncHVf Y3Nfc3VibWl0X3N5bmNvYmooYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZmxhZ3MsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3Rfc3lu Y29iaiAqaWJzX3N5bmNvYmosCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgbnVtYmVyX29mX3JlcXVlc3RzKTsKPj4gKwo+PiAgIC8qKgo+PiAgICAqICBRdWVyeSBzdGF0 dXMgb2YgQ29tbWFuZCBCdWZmZXIgU3VibWlzc2lvbgo+PiAgICAqCj4+IEBAIC0xMzI4LDggKzEz NDQsMTkgQEAgaW50IGFtZGdwdV9jc19kZXN0cm95X3NlbWFwaG9yZShhbWRncHVfc2VtYXBob3Jl X2hhbmRsZSBzZW0pOwo+PiAgICovCj4+ICAgY29uc3QgY2hhciAqYW1kZ3B1X2dldF9tYXJrZXRp bmdfbmFtZShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYpOwo+Pgo+PiArCj4+ICtpbnQgYW1kZ3B1 X2NzX2NyZWF0ZV9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3luY29iaik7Cj4+ICtpbnQgYW1kZ3B1X2Nz X2V4cG9ydF9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBzeW5jb2JqLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAqc2hhcmVkX2ZkKTsKPj4gK2ludCBhbWRncHVfY3NfaW1wb3J0X3N5bmNv YmooYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBzaGFyZWRfZmQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgKnN5bmNvYmopOwo+PiAraW50IGFtZGdwdV9jc19kZXN0cm95X3N5bmNvYmooYW1kZ3B1X2Rl dmljZV9oYW5kbGUgZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBzeW5jb2JqKTsKPj4gKwo+PiAgICNpZmRlZiBfX2NwbHVzcGx1cwo+PiAgIH0KPj4gICAjZW5k aWYKPj4gLQo+PiAgICNlbmRpZiAvKiAjaWZkZWYgX0FNREdQVV9IXyAqLwo+PiBkaWZmIC0tZ2l0 IGEvYW1kZ3B1L2FtZGdwdV9jcy5jIGIvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+IGluZGV4IDg2OGVi N2IuLjMzOWM1ZjkgMTAwNjQ0Cj4+IC0tLSBhL2FtZGdwdS9hbWRncHVfY3MuYwo+PiArKysgYi9h bWRncHUvYW1kZ3B1X2NzLmMKPj4gQEAgLTE2OCw3ICsxNjgsOCBAQCBpbnQgYW1kZ3B1X2NzX3F1 ZXJ5X3Jlc2V0X3N0YXRlKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+PiAgICAqIFxz YSBhbWRncHVfY3Nfc3VibWl0KCkKPj4gICAqLwo+PiAgIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3N1 Ym1pdF9vbmUoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCkK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVl c3QgKmlic19yZXF1ZXN0LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBhbWRncHVfY3NfcmVxdWVzdF9zeW5jb2JqICpzeW5jb2JqX3JlcXVlc3QpCj4+ICAgewo+PiAg ICAgICAgICB1bmlvbiBkcm1fYW1kZ3B1X2NzIGNzOwo+PiAgICAgICAgICB1aW50NjRfdCAqY2h1 bmtfYXJyYXk7Cj4+IEBAIC0xNzYsMTAgKzE3NywxMyBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19z dWJtaXRfb25lKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+PiAgICAgICAgICBzdHJ1 Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kYXRhICpjaHVua19kYXRhOwo+PiAgICAgICAgICBzdHJ1 Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kZXAgKmRlcGVuZGVuY2llcyA9IE5VTEw7Cj4+ICAgICAg ICAgIHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RlcCAqc2VtX2RlcGVuZGVuY2llcyA9IE5V TEw7Cj4+ICsgICAgICAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtICppbl9zeW5jb2Jq X2RlcGVuZGVuY2llcyA9IE5VTEw7Cj4+ICsgICAgICAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1 bmtfc2VtICpvdXRfc3luY29ial9kZXBlbmRlbmNpZXMgPSBOVUxMOwo+PiAgICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkICpzZW1fbGlzdDsKPj4gICAgICAgICAgYW1kZ3B1X3NlbWFwaG9yZV9oYW5k bGUgc2VtLCB0bXA7Cj4+IC0gICAgICAgdWludDMyX3QgaSwgc2l6ZSwgc2VtX2NvdW50ID0gMDsK Pj4gKyAgICAgICB1aW50MzJfdCBpLCBqLCBzaXplLCBzZW1fY291bnQgPSAwOwo+PiAgICAgICAg ICBib29sIHVzZXJfZmVuY2U7Cj4+ICsgICAgICAgdWludDMyX3Qgc2VtX3NpemUgPSAwOwo+PiAg ICAgICAgICBpbnQgciA9IDA7Cj4+Cj4+ICAgICAgICAgIGlmIChpYnNfcmVxdWVzdC0+aXBfdHlw ZSA+PSBBTURHUFVfSFdfSVBfTlVNKQo+PiBAQCAtMTk0LDcgKzE5OCwxMSBAQCBzdGF0aWMgaW50 IGFtZGdwdV9jc19zdWJtaXRfb25lKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+PiAg ICAgICAgICB9Cj4+ICAgICAgICAgIHVzZXJfZmVuY2UgPSAoaWJzX3JlcXVlc3QtPmZlbmNlX2lu Zm8uaGFuZGxlICE9IE5VTEwpOwo+Pgo+PiAtICAgICAgIHNpemUgPSBpYnNfcmVxdWVzdC0+bnVt YmVyX29mX2licyArICh1c2VyX2ZlbmNlID8gMiA6IDEpICsgMTsKPj4gKyAgICAgICBpZiAoc3lu Y29ial9yZXF1ZXN0KSB7Cj4+ICsgICAgICAgICAgICAgICBzZW1fc2l6ZSArPSBzeW5jb2JqX3Jl cXVlc3QtPm51bWJlcl9pbl9zeW5jb2JqID8gMSA6IDA7Cj4+ICsgICAgICAgICAgICAgICBzZW1f c2l6ZSArPSBzeW5jb2JqX3JlcXVlc3QtPm51bWJlcl9vdXRfc3luY29iaiA/IDEgOiAwOwo+PiAr ICAgICAgIH0KPj4gKyAgICAgICBzaXplID0gaWJzX3JlcXVlc3QtPm51bWJlcl9vZl9pYnMgKyAo dXNlcl9mZW5jZSA/IDIgOiAxKSArIDEgKyBzZW1fc2l6ZTsKPj4KPj4gICAgICAgICAgY2h1bmtf YXJyYXkgPSBhbGxvY2Eoc2l6ZW9mKHVpbnQ2NF90KSAqIHNpemUpOwo+PiAgICAgICAgICBjaHVu a3MgPSBhbGxvY2Eoc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rKSAqIHNpemUpOwo+ PiBAQCAtMzA2LDYgKzMxNCw0NSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXRfb25lKGFt ZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+PiAgICAgICAgICAgICAgICAgIGNodW5rc1tp XS5jaHVua19kYXRhID0gKHVpbnQ2NF90KSh1aW50cHRyX3Qpc2VtX2RlcGVuZGVuY2llczsKPj4g ICAgICAgICAgfQo+Pgo+PiArICAgICAgIGlmIChzeW5jb2JqX3JlcXVlc3QpIHsKPj4gKyAgICAg ICAgICAgICAgIGlmIChzeW5jb2JqX3JlcXVlc3QtPm51bWJlcl9pbl9zeW5jb2JqKSB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGluX3N5bmNvYmpfZGVwZW5kZW5jaWVzID0gbWFsbG9jKHNp emVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0pICogc3luY29ial9yZXF1ZXN0LT5u dW1iZXJfaW5fc3luY29iaik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5fc3lu Y29ial9kZXBlbmRlbmNpZXMpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ID0gLUVOT01FTTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9y X3VubG9jazsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBmb3IgKGogPSAwOyBqIDwgc3luY29ial9yZXF1ZXN0LT5udW1iZXJfaW5fc3luY29i ajsgaisrKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9h bWRncHVfY3NfY2h1bmtfc2VtICpkZXAgPSAmaW5fc3luY29ial9kZXBlbmRlbmNpZXNbal07Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwLT5oYW5kbGUgPSBzeW5jb2JqX3Jl cXVlc3QtPmluX3N5bmNvYmpbal07Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgaSA9IGNzLmluLm51bV9jaHVua3MrKzsKPj4gKwo+PiArICAg ICAgICAgICAgICAgICAgICAgICAvKiBkZXBlbmRlbmNpZXMgY2h1bmsgKi8KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY2h1bmtfYXJyYXlbaV0gPSAodWludDY0X3QpKHVpbnRwdHJfdCkmY2h1 bmtzW2ldOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbaV0uY2h1bmtfaWQgPSBB TURHUFVfQ0hVTktfSURfU1lOQ09CSl9JTjsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2h1 bmtzW2ldLmxlbmd0aF9kdyA9IHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0p IC8gNCAqIHN5bmNvYmpfcmVxdWVzdC0+bnVtYmVyX2luX3N5bmNvYmo7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGNodW5rc1tpXS5jaHVua19kYXRhID0gKHVpbnQ2NF90KSh1aW50cHRyX3Qp aW5fc3luY29ial9kZXBlbmRlbmNpZXM7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAg ICAgICAgICBpZiAoc3luY29ial9yZXF1ZXN0LT5udW1iZXJfb3V0X3N5bmNvYmopIHsKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgb3V0X3N5bmNvYmpfZGVwZW5kZW5jaWVzID0gbWFsbG9jKHNp emVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0pICogc3luY29ial9yZXF1ZXN0LT5u dW1iZXJfb3V0X3N5bmNvYmopOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW91dF9z eW5jb2JqX2RlcGVuZGVuY2llcykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHIgPSAtRU5PTUVNOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJy b3JfdW5sb2NrOwo+PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBzeW5jb2JqX3JlcXVlc3QtPm51bWJlcl9vdXRfc3lu Y29iajsgaisrKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRy bV9hbWRncHVfY3NfY2h1bmtfc2VtICpkZXAgPSAmb3V0X3N5bmNvYmpfZGVwZW5kZW5jaWVzW2pd Owo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC0+aGFuZGxlID0gc3luY29i al9yZXF1ZXN0LT5vdXRfc3luY29ialtqXTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBpID0gY3MuaW4ubnVtX2NodW5rcysrOwo+PiArCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlcGVuZGVuY2llcyBjaHVuayAqLwo+PiArICAg ICAgICAgICAgICAgICAgICAgICBjaHVua19hcnJheVtpXSA9ICh1aW50NjRfdCkodWludHB0cl90 KSZjaHVua3NbaV07Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNodW5rc1tpXS5jaHVua19p ZCA9IEFNREdQVV9DSFVOS19JRF9TWU5DT0JKX09VVDsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgY2h1bmtzW2ldLmxlbmd0aF9kdyA9IHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVu a19zZW0pIC8gNCAqIHN5bmNvYmpfcmVxdWVzdC0+bnVtYmVyX291dF9zeW5jb2JqOwo+PiArICAg ICAgICAgICAgICAgICAgICAgICBjaHVua3NbaV0uY2h1bmtfZGF0YSA9ICh1aW50NjRfdCkodWlu dHB0cl90KW91dF9zeW5jb2JqX2RlcGVuZGVuY2llczsKPj4gKyAgICAgICAgICAgICAgIH0KPj4g KyAgICAgICB9Cj4+ICsKPj4gICAgICAgICAgciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoY29udGV4 dC0+ZGV2LT5mZCwgRFJNX0FNREdQVV9DUywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmNzLCBzaXplb2YoY3MpKTsKPj4gICAgICAgICAgaWYgKHIpCj4+IEBAIC0zMTcsMzEg KzM2NCw0OCBAQCBlcnJvcl91bmxvY2s6Cj4+ICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZjb250ZXh0LT5zZXF1ZW5jZV9tdXRleCk7Cj4+ICAgICAgICAgIGZyZWUoZGVwZW5kZW5jaWVz KTsKPj4gICAgICAgICAgZnJlZShzZW1fZGVwZW5kZW5jaWVzKTsKPj4gKyAgICAgICBmcmVlKGlu X3N5bmNvYmpfZGVwZW5kZW5jaWVzKTsKPj4gKyAgICAgICBmcmVlKG91dF9zeW5jb2JqX2RlcGVu ZGVuY2llcyk7Cj4+ICAgICAgICAgIHJldHVybiByOwo+PiAgIH0KPj4KPj4gLWludCBhbWRncHVf Y3Nfc3VibWl0KGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+PiAtICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBmbGFncywKPj4gLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFt ZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKPj4gLSAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgbnVtYmVyX29mX3JlcXVlc3RzKQo+PiAraW50IGFtZGdwdV9jc19zdWJtaXRfc3luY29i aihhbWRncHVfY29udGV4dF9oYW5kbGUgY29udGV4dCwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBmbGFncywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgKmlic19yZXF1ZXN0LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdF9zeW5jb2JqICppYnNfc3luY29i aiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1iZXJfb2ZfcmVx dWVzdHMpCj4+ICAgewo+PiAgICAgICAgICB1aW50MzJfdCBpOwo+PiAgICAgICAgICBpbnQgcjsK Pj4gKyAgICAgICBib29sIGhhc19zeW5jb2JqID0gaWJzX3N5bmNvYmogPyB0cnVlIDogZmFsc2U7 Cj4+Cj4+ICAgICAgICAgIGlmICghY29udGV4dCB8fCAhaWJzX3JlcXVlc3QpCj4+ICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Cj4+ICAgICAgICAgIHIgPSAwOwo+PiAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyX29mX3JlcXVlc3RzOyBpKyspIHsKPj4gLSAgICAgICAg ICAgICAgIHIgPSBhbWRncHVfY3Nfc3VibWl0X29uZShjb250ZXh0LCBpYnNfcmVxdWVzdCk7Cj4+ ICsgICAgICAgICAgICAgICByID0gYW1kZ3B1X2NzX3N1Ym1pdF9vbmUoY29udGV4dCwgaWJzX3Jl cXVlc3QsIGhhc19zeW5jb2JqID8gaWJzX3N5bmNvYmogOiBOVUxMKTsKPj4gICAgICAgICAgICAg ICAgICBpZiAocikKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAg ICAgICAgICAgIGlic19yZXF1ZXN0Kys7Cj4+ICsgICAgICAgICAgICAgICBpZiAoaGFzX3N5bmNv YmopCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlic19zeW5jb2JqKys7Cj4+ICAgICAgICAg IH0KPj4KPj4gICAgICAgICAgcmV0dXJuIHI7Cj4+ICAgfQo+Pgo+PiAraW50IGFtZGdwdV9jc19z dWJtaXQoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCj4+ICsgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGZsYWdzLAo+PiArICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X2NzX3JlcXVlc3QgKmlic19yZXF1ZXN0LAo+PiArICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBudW1iZXJfb2ZfcmVxdWVzdHMpCj4+ICt7Cj4+ICsgICAgICAgcmV0dXJuIGFtZGdwdV9jc19z dWJtaXRfc3luY29iaihjb250ZXh0LCBmbGFncywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlic19yZXF1ZXN0LCBOVUxMLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbnVtYmVyX29mX3JlcXVlc3RzKTsKPj4gK30KPj4gKwo+PiAr Cj4+ICAgLyoqCj4+ICAgICogQ2FsY3VsYXRlIGFic29sdXRlIHRpbWVvdXQuCj4+ICAgICoKPj4g QEAgLTU5NiwzICs2NjAsNDEgQEAgaW50IGFtZGdwdV9jc19kZXN0cm95X3NlbWFwaG9yZShhbWRn cHVfc2VtYXBob3JlX2hhbmRsZSBzZW0pCj4+ICAgewo+PiAgICAgICAgICByZXR1cm4gYW1kZ3B1 X2NzX3VucmVmZXJlbmNlX3NlbShzZW0pOwo+PiAgIH0KPj4gKwo+PiAraW50IGFtZGdwdV9jc19j cmVhdGVfc3luY29iaihhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKmhhbmRsZSkKPj4gK3sKPj4gKyAgICAgICBpZiAoTlVM TCA9PSBkZXYpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAg ICAgIHJldHVybiBkcm1TeW5jb2JqQ3JlYXRlKGRldi0+ZmQsIDAsIGhhbmRsZSk7Cj4+ICt9Cj4+ ICsKPj4gK2ludCBhbWRncHVfY3NfZGVzdHJveV9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxl IGRldiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaGFuZGxlKQo+ PiArewo+PiArICAgICAgIGlmIChOVUxMID09IGRldikKPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIGRybVN5bmNvYmpEZXN0cm95KGRldi0+ ZmQsIGhhbmRsZSk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBhbWRncHVfY3NfZXhwb3J0X3N5bmNvYmoo YW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGhhbmRsZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNo YXJlZF9mZCkKPj4gK3sKPj4gKyAgICAgICBpZiAoTlVMTCA9PSBkZXYpCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAgICAgIHJldHVybiBkcm1TeW5jb2JqSGFu ZGxlVG9GRChkZXYtPmZkLCBoYW5kbGUsIHNoYXJlZF9mZCk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBh bWRncHVfY3NfaW1wb3J0X3N5bmNvYmooYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFyZWRfZmQsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKmhhbmRsZSkKPj4gK3sKPj4gKyAgICAgICBpZiAoTlVM TCA9PSBkZXYpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAg ICAgIHJldHVybiBkcm1TeW5jb2JqRkRUb0hhbmRsZShkZXYtPmZkLCBzaGFyZWRfZmQsIGhhbmRs ZSk7Cj4+ICt9Cj4+IC0tCj4+IDIuOS40Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=