From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH libdrm] libdrm/amdgpu: add interface for kernel semaphores Date: Tue, 14 Mar 2017 10:00:46 +0800 Message-ID: <58C74ECE.3090703@amd.com> References: <20170314005054.7487-1-airlied@gmail.com> <20170314005054.7487-2-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: <20170314005054.7487-2-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dave Airlie , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, "Mao, David" List-Id: amd-gfx.lists.freedesktop.org SGkgRGF2ZSwKCkNvdWxkIHlvdSB0ZWxsIG1lIHdoeSB5b3UgY3JlYXRlIHlvdXIgbmV3IG9uZSBw YXRjaD8gSSByZW1lbWJlciBJIHNlbmQgCm91dCBvdXIgdGhlIHdob2xlIGltcGxlbWVudGF0aW9u LCBXaHkgbm90IGRpcmVjdGx5IHJldmlldyBvdXIgcGF0Y2hlcz8KClRoYW5rcywKRGF2aWQgWmhv dQoKT24gMjAxN+W5tDAz5pyIMTTml6UgMDg6NTAsIERhdmUgQWlybGllIHdyb3RlOgo+IEZyb206 IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cj4KPiBUaGlzIGFkZHMgdGhlIGNvcnJl c3BvbmRpbmcgY29kZSBmb3IgbGliZHJtIHRvIHVzZSB0aGUgbmV3Cj4ga2VybmVsIGludGVyZmFj ZXMgZm9yIHNlbWFwaG9yZXMuCj4KPiBUaGlzIHdpbGwgYmUgdXNlZCBieSByYWR2IHRvIGltcGxl bWVudCBzaGFyZWQgc2VtYXBob3Jlcy4KPgo+IFRPRE86IFZlcnNpb24gY2hlY2tzLgo+Cj4gU2ln bmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAtLS0KPiAgIGFt ZGdwdS9hbWRncHUuaCAgICAgICAgICB8ICAyOCArKysrKysrKysKPiAgIGFtZGdwdS9hbWRncHVf Y3MuYyAgICAgICB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQo+ICAgaW5jbHVkZS9kcm0vYW1kZ3B1X2RybS5oIHwgIDI4ICsrKysrKysrKwo+ICAg MyBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9hbWRncHUvYW1kZ3B1LmggYi9hbWRncHUvYW1kZ3B1LmgKPiBpbmRleCA3YjI2 YTA0Li43NDdlMjQ4IDEwMDY0NAo+IC0tLSBhL2FtZGdwdS9hbWRncHUuaAo+ICsrKyBiL2FtZGdw dS9hbWRncHUuaAo+IEBAIC0xMjksNiArMTI5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgYW1kZ3B1X3Zh ICphbWRncHVfdmFfaGFuZGxlOwo+ICAgICovCj4gICB0eXBlZGVmIHN0cnVjdCBhbWRncHVfc2Vt YXBob3JlICphbWRncHVfc2VtYXBob3JlX2hhbmRsZTsKPiAgIAo+ICt0eXBlZGVmIHVpbnQzMl90 IGFtZGdwdV9zZW1faGFuZGxlOwo+ICsKPiAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo+ICAgLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RydWN0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovCj4gICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KPiBAQCAtMzY1LDYg KzM2NywxNiBAQCBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3Qgewo+ICAgCXN0cnVjdCBhbWRncHVf Y3NfZmVuY2VfaW5mbyBmZW5jZV9pbmZvOwo+ICAgfTsKPiAgIAo+ICtzdHJ1Y3QgYW1kZ3B1X2Nz X3JlcXVlc3Rfc2VtIHsKPiArCS8qCj4gKwkgKgo+ICsJICovCj4gKwl1aW50MzJfdCBudW1iZXJf b2Zfd2FpdF9zZW07Cj4gKwl1aW50MzJfdCAqd2FpdF9zZW1zOwo+ICsJdWludDMyX3QgbnVtYmVy X29mX3NpZ25hbF9zZW07Cj4gKwl1aW50MzJfdCAqc2lnbmFsX3NlbXM7Cj4gK307Cj4gKwo+ICAg LyoqCj4gICAgKiBTdHJ1Y3R1cmUgd2hpY2ggcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBHUFUg Vk0gTUMgQWRkcmVzcyBzcGFjZQo+ICAgICogYWxpZ25tZW50cyByZXF1aXJlbWVudHMKPiBAQCAt ODgyLDYgKzg5NCwxMiBAQCBpbnQgYW1kZ3B1X2NzX3N1Ym1pdChhbWRncHVfY29udGV4dF9oYW5k bGUgY29udGV4dCwKPiAgIAkJICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgKmlic19yZXF1 ZXN0LAo+ICAgCQkgICAgIHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0cyk7Cj4gICAKPiAraW50 IGFtZGdwdV9jc19zdWJtaXRfc2VtKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+ICsJ CQkgdWludDY0X3QgZmxhZ3MsCj4gKwkJCSBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgKmlic19y ZXF1ZXN0LAo+ICsJCQkgc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0X3NlbSAqaWJzX3NlbSwKPiAr CQkJIHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0cyk7Cj4gKwo+ICAgLyoqCj4gICAgKiAgUXVl cnkgc3RhdHVzIG9mIENvbW1hbmQgQnVmZmVyIFN1Ym1pc3Npb24KPiAgICAqCj4gQEAgLTEyNTUs NCArMTI3MywxNCBAQCBpbnQgYW1kZ3B1X2NzX2Rlc3Ryb3lfc2VtYXBob3JlKGFtZGdwdV9zZW1h cGhvcmVfaGFuZGxlIHNlbSk7Cj4gICAqLwo+ICAgY29uc3QgY2hhciAqYW1kZ3B1X2dldF9tYXJr ZXRpbmdfbmFtZShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYpOwo+ICAgCj4gK2ludCBhbWRncHVf Y3NfY3JlYXRlX3NlbShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCj4gKwkJCSBhbWRncHVfc2Vt X2hhbmRsZSAqc2VtKTsKPiAraW50IGFtZGdwdV9jc19leHBvcnRfc2VtKGFtZGdwdV9kZXZpY2Vf aGFuZGxlIGRldiwKPiArCQkJICBhbWRncHVfc2VtX2hhbmRsZSBzZW0sCj4gKwkJCSBpbnQgKnNo YXJlZF9oYW5kbGUpOwo+ICtpbnQgYW1kZ3B1X2NzX2ltcG9ydF9zZW0oYW1kZ3B1X2RldmljZV9o YW5kbGUgZGV2LAo+ICsJCQkgIGludCBzaGFyZWRfaGFuZGxlLAo+ICsJCQkgYW1kZ3B1X3NlbV9o YW5kbGUgKnNlbSk7Cj4gK2ludCBhbWRncHVfY3NfZGVzdHJveV9zZW0oYW1kZ3B1X2RldmljZV9o YW5kbGUgZGV2LAo+ICsJCQkgIGFtZGdwdV9zZW1faGFuZGxlIHNlbSk7Cj4gICAjZW5kaWYgLyog I2lmZGVmIF9BTURHUFVfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvYW1kZ3B1L2FtZGdwdV9jcy5jIGIv YW1kZ3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggZmI1YjNhOC4uNzI4MzMyNyAxMDA2NDQKPiAtLS0g YS9hbWRncHUvYW1kZ3B1X2NzLmMKPiArKysgYi9hbWRncHUvYW1kZ3B1X2NzLmMKPiBAQCAtMTcw LDcgKzE3MCw4IEBAIGludCBhbWRncHVfY3NfcXVlcnlfcmVzZXRfc3RhdGUoYW1kZ3B1X2NvbnRl eHRfaGFuZGxlIGNvbnRleHQsCj4gICAgKiBcc2EgYW1kZ3B1X2NzX3N1Ym1pdCgpCj4gICAqLwo+ ICAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0X29uZShhbWRncHVfY29udGV4dF9oYW5kbGUg Y29udGV4dCwKPiAtCQkJCXN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdCAqaWJzX3JlcXVlc3QpCj4g KwkJCQlzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3QgKmlic19yZXF1ZXN0LAo+ICsJCQkJc3RydWN0 IGFtZGdwdV9jc19yZXF1ZXN0X3NlbSAqc2VtX3JlcXVlc3QpCj4gICB7Cj4gICAJdW5pb24gZHJt X2FtZGdwdV9jcyBjczsKPiAgIAl1aW50NjRfdCAqY2h1bmtfYXJyYXk7Cj4gQEAgLTE3OCw5ICsx NzksMTEgQEAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0X29uZShhbWRncHVfY29udGV4dF9o YW5kbGUgY29udGV4dCwKPiAgIAlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kYXRhICpjaHVu a19kYXRhOwo+ICAgCXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RlcCAqZGVwZW5kZW5jaWVz ID0gTlVMTDsKPiAgIAlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kZXAgKnNlbV9kZXBlbmRl bmNpZXMgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtICp3YWl0X3Nl bV9kZXBlbmRlbmNpZXMgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2Vt ICpzaWduYWxfc2VtX2RlcGVuZGVuY2llcyA9IE5VTEw7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCAq c2VtX2xpc3Q7Cj4gICAJYW1kZ3B1X3NlbWFwaG9yZV9oYW5kbGUgc2VtLCB0bXA7Cj4gLQl1aW50 MzJfdCBpLCBzaXplLCBzZW1fY291bnQgPSAwOwo+ICsJdWludDMyX3QgaSwgaiwgc2l6ZSwgc2Vt X2NvdW50ID0gMDsKPiAgIAlib29sIHVzZXJfZmVuY2U7Cj4gICAJaW50IHIgPSAwOwo+ICAgCj4g QEAgLTE5Niw3ICsxOTksNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXRfb25lKGFtZGdw dV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAo+ICAgCX0KPiAgIAl1c2VyX2ZlbmNlID0gKGlic19y ZXF1ZXN0LT5mZW5jZV9pbmZvLmhhbmRsZSAhPSBOVUxMKTsKPiAgIAo+IC0Jc2l6ZSA9IGlic19y ZXF1ZXN0LT5udW1iZXJfb2ZfaWJzICsgKHVzZXJfZmVuY2UgPyAyIDogMSkgKyAxOwo+ICsJc2l6 ZSA9IGlic19yZXF1ZXN0LT5udW1iZXJfb2ZfaWJzICsgKHVzZXJfZmVuY2UgPyAyIDogMSkgKyAx ICsgKHNlbV9yZXF1ZXN0ID8gMiA6IDApOwo+ICAgCj4gICAJY2h1bmtfYXJyYXkgPSBhbGxvY2Eo c2l6ZW9mKHVpbnQ2NF90KSAqIHNpemUpOwo+ICAgCWNodW5rcyA9IGFsbG9jYShzaXplb2Yoc3Ry dWN0IGRybV9hbWRncHVfY3NfY2h1bmspICogc2l6ZSk7Cj4gQEAgLTMwOCw2ICszMTEsNDUgQEAg c3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0X29uZShhbWRncHVfY29udGV4dF9oYW5kbGUgY29u dGV4dCwKPiAgIAkJY2h1bmtzW2ldLmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRwdHJfdClz ZW1fZGVwZW5kZW5jaWVzOwo+ICAgCX0KPiAgIAo+ICsJaWYgKHNlbV9yZXF1ZXN0KSB7Cj4gKwkJ aWYgKHNlbV9yZXF1ZXN0LT5udW1iZXJfb2Zfd2FpdF9zZW0pIHsKPiArCQkJd2FpdF9zZW1fZGVw ZW5kZW5jaWVzID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0p ICogc2VtX3JlcXVlc3QtPm51bWJlcl9vZl93YWl0X3NlbSk7Cj4gKwkJCWlmICghd2FpdF9zZW1f ZGVwZW5kZW5jaWVzKSB7Cj4gKwkJCQlyID0gLUVOT01FTTsKPiArCQkJCWdvdG8gZXJyb3JfdW5s b2NrOwo+ICsJCQl9Cj4gKwkJCWZvciAoaiA9IDA7IGogPCBzZW1fcmVxdWVzdC0+bnVtYmVyX29m X3dhaXRfc2VtOyBqKyspIHsKPiArCQkJCXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSAq ZGVwID0gJndhaXRfc2VtX2RlcGVuZGVuY2llc1tqXTsKPiArCQkJCWRlcC0+aGFuZGxlID0gc2Vt X3JlcXVlc3QtPndhaXRfc2Vtc1tqXTsKPiArCQkJfQo+ICsJCQlpID0gY3MuaW4ubnVtX2NodW5r cysrOwo+ICsKPiArCQkJLyogZGVwZW5kZW5jaWVzIGNodW5rICovCj4gKwkJCWNodW5rX2FycmF5 W2ldID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpJmNodW5rc1tpXTsKPiArCQkJY2h1bmtzW2ldLmNo dW5rX2lkID0gQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUOwo+ICsJCQljaHVua3NbaV0ubGVuZ3Ro X2R3ID0gc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSkgLyA0ICogc2VtX3Jl cXVlc3QtPm51bWJlcl9vZl93YWl0X3NlbTsKPiArCQkJY2h1bmtzW2ldLmNodW5rX2RhdGEgPSAo dWludDY0X3QpKHVpbnRwdHJfdCl3YWl0X3NlbV9kZXBlbmRlbmNpZXM7Cj4gKwkJfQo+ICsJCWlm IChzZW1fcmVxdWVzdC0+bnVtYmVyX29mX3NpZ25hbF9zZW0pIHsKPiArCQkJc2lnbmFsX3NlbV9k ZXBlbmRlbmNpZXMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3Nl bSkgKiBzZW1fcmVxdWVzdC0+bnVtYmVyX29mX3NpZ25hbF9zZW0pOwo+ICsJCQlpZiAoIXNpZ25h bF9zZW1fZGVwZW5kZW5jaWVzKSB7Cj4gKwkJCQlyID0gLUVOT01FTTsKPiArCQkJCWdvdG8gZXJy b3JfdW5sb2NrOwo+ICsJCQl9Cj4gKwkJCWZvciAoaiA9IDA7IGogPCBzZW1fcmVxdWVzdC0+bnVt YmVyX29mX3NpZ25hbF9zZW07IGorKykgewo+ICsJCQkJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1 bmtfc2VtICpkZXAgPSAmc2lnbmFsX3NlbV9kZXBlbmRlbmNpZXNbal07Cj4gKwkJCQlkZXAtPmhh bmRsZSA9IHNlbV9yZXF1ZXN0LT5zaWduYWxfc2Vtc1tqXTsKPiArCQkJfQo+ICsJCQlpID0gY3Mu aW4ubnVtX2NodW5rcysrOwo+ICsKPiArCQkJLyogZGVwZW5kZW5jaWVzIGNodW5rICovCj4gKwkJ CWNodW5rX2FycmF5W2ldID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpJmNodW5rc1tpXTsKPiArCQkJ Y2h1bmtzW2ldLmNodW5rX2lkID0gQU1ER1BVX0NIVU5LX0lEX1NFTV9TSUdOQUw7Cj4gKwkJCWNo dW5rc1tpXS5sZW5ndGhfZHcgPSBzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2Vt KSAvIDQgKiBzZW1fcmVxdWVzdC0+bnVtYmVyX29mX3NpZ25hbF9zZW07Cj4gKwkJCWNodW5rc1tp XS5jaHVua19kYXRhID0gKHVpbnQ2NF90KSh1aW50cHRyX3Qpc2lnbmFsX3NlbV9kZXBlbmRlbmNp ZXM7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgIAlyID0gZHJtQ29tbWFuZFdyaXRlUmVhZChjb250ZXh0 LT5kZXYtPmZkLCBEUk1fQU1ER1BVX0NTLAo+ICAgCQkJCSZjcywgc2l6ZW9mKGNzKSk7Cj4gICAJ aWYgKHIpCj4gQEAgLTMxOSwxNyArMzYxLDIwIEBAIGVycm9yX3VubG9jazoKPiAgIAlwdGhyZWFk X211dGV4X3VubG9jaygmY29udGV4dC0+c2VxdWVuY2VfbXV0ZXgpOwo+ICAgCWZyZWUoZGVwZW5k ZW5jaWVzKTsKPiAgIAlmcmVlKHNlbV9kZXBlbmRlbmNpZXMpOwo+ICsJZnJlZSh3YWl0X3NlbV9k ZXBlbmRlbmNpZXMpOwo+ICsJZnJlZShzaWduYWxfc2VtX2RlcGVuZGVuY2llcyk7Cj4gICAJcmV0 dXJuIHI7Cj4gICB9Cj4gICAKPiAtaW50IGFtZGdwdV9jc19zdWJtaXQoYW1kZ3B1X2NvbnRleHRf aGFuZGxlIGNvbnRleHQsCj4gLQkJICAgICB1aW50NjRfdCBmbGFncywKPiAtCQkgICAgIHN0cnVj dCBhbWRncHVfY3NfcmVxdWVzdCAqaWJzX3JlcXVlc3QsCj4gLQkJICAgICB1aW50MzJfdCBudW1i ZXJfb2ZfcmVxdWVzdHMpCj4gK2ludCBhbWRncHVfY3Nfc3VibWl0X3NlbShhbWRncHVfY29udGV4 dF9oYW5kbGUgY29udGV4dCwKPiArCQkJIHVpbnQ2NF90IGZsYWdzLAo+ICsJCQkgc3RydWN0IGFt ZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKPiArCQkJIHN0cnVjdCBhbWRncHVfY3NfcmVx dWVzdF9zZW0gKmlic19zZW0sCj4gKwkJCSB1aW50MzJfdCBudW1iZXJfb2ZfcmVxdWVzdHMpCj4g ICB7Cj4gICAJdWludDMyX3QgaTsKPiAgIAlpbnQgcjsKPiAtCj4gKwlib29sIGhhc19zZW1zID0g aWJzX3NlbSA/IHRydWUgOiBmYWxzZTsKPiAgIAlpZiAoTlVMTCA9PSBjb250ZXh0KQo+ICAgCQly ZXR1cm4gLUVJTlZBTDsKPiAgIAlpZiAoTlVMTCA9PSBpYnNfcmVxdWVzdCkKPiBAQCAtMzM3LDE1 ICszODIsMjggQEAgaW50IGFtZGdwdV9jc19zdWJtaXQoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNv bnRleHQsCj4gICAKPiAgIAlyID0gMDsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtYmVyX29mX3Jl cXVlc3RzOyBpKyspIHsKPiAtCQlyID0gYW1kZ3B1X2NzX3N1Ym1pdF9vbmUoY29udGV4dCwgaWJz X3JlcXVlc3QpOwo+ICsJCXIgPSBhbWRncHVfY3Nfc3VibWl0X29uZShjb250ZXh0LCBpYnNfcmVx dWVzdCwgaGFzX3NlbXMgPyBpYnNfc2VtIDogTlVMTCk7Cj4gICAJCWlmIChyKQo+ICAgCQkJYnJl YWs7Cj4gICAJCWlic19yZXF1ZXN0Kys7Cj4gKwkJaWYgKGhhc19zZW1zKQo+ICsJCQlpYnNfc2Vt Kys7Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIHI7Cj4gICB9Cj4gICAKPiAraW50IGFtZGdwdV9j c19zdWJtaXQoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCj4gKwkJICAgICB1aW50NjRf dCBmbGFncywKPiArCQkgICAgIHN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdCAqaWJzX3JlcXVlc3Qs Cj4gKwkJICAgICB1aW50MzJfdCBudW1iZXJfb2ZfcmVxdWVzdHMpCj4gK3sKPiArCXJldHVybiBh bWRncHVfY3Nfc3VibWl0X3NlbShjb250ZXh0LCBmbGFncywKPiArCQkJCSAgICBpYnNfcmVxdWVz dCwgTlVMTCwKPiArCQkJCSAgICBudW1iZXJfb2ZfcmVxdWVzdHMpOwo+ICt9Cj4gKwo+ICsKPiAg IC8qKgo+ICAgICogQ2FsY3VsYXRlIGFic29sdXRlIHRpbWVvdXQuCj4gICAgKgo+IEBAIC01NDIs MyArNjAwLDg4IEBAIGludCBhbWRncHVfY3NfZGVzdHJveV9zZW1hcGhvcmUoYW1kZ3B1X3NlbWFw aG9yZV9oYW5kbGUgc2VtKQo+ICAgewo+ICAgCXJldHVybiBhbWRncHVfY3NfdW5yZWZlcmVuY2Vf c2VtKHNlbSk7Cj4gICB9Cj4gKwo+ICsKPiAraW50IGFtZGdwdV9jc19jcmVhdGVfc2VtKGFtZGdw dV9kZXZpY2VfaGFuZGxlIGRldiwKPiArCQkJIGFtZGdwdV9zZW1faGFuZGxlICpzZW0pCj4gK3sK PiArCXVuaW9uIGRybV9hbWRncHVfc2VtIGFyZ3M7Cj4gKwlpbnQgcjsKPiArCj4gKwlpZiAoTlVM TCA9PSBkZXYpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogQ3JlYXRlIHRoZSBjb250 ZXh0ICovCj4gKwltZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7Cj4gKwlhcmdzLmluLm9w ID0gQU1ER1BVX1NFTV9PUF9DUkVBVEVfU0VNOwo+ICsJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQo ZGV2LT5mZCwgRFJNX0FNREdQVV9TRU0sICZhcmdzLCBzaXplb2YoYXJncykpOwo+ICsJaWYgKHIp Cj4gKwkJcmV0dXJuIHI7Cj4gKwo+ICsJKnNlbSA9IGFyZ3Mub3V0LmhhbmRsZTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGFtZGdwdV9jc19leHBvcnRfc2VtKGFtZGdwdV9kZXZp Y2VfaGFuZGxlIGRldiwKPiArCQkJICBhbWRncHVfc2VtX2hhbmRsZSBzZW0sCj4gKwkJCSAgaW50 ICpzaGFyZWRfaGFuZGxlKQo+ICt7Cj4gKwl1bmlvbiBkcm1fYW1kZ3B1X3NlbSBhcmdzOwo+ICsJ aW50IHI7Cj4gKwo+ICsJaWYgKE5VTEwgPT0gZGV2KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsK PiArCS8qIENyZWF0ZSB0aGUgY29udGV4dCAqLwo+ICsJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2Yo YXJncykpOwo+ICsJYXJncy5pbi5vcCA9IEFNREdQVV9TRU1fT1BfRVhQT1JUX1NFTTsKPiArCWFy Z3MuaW4uaGFuZGxlID0gc2VtOwo+ICsJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZGV2LT5mZCwg RFJNX0FNREdQVV9TRU0sICZhcmdzLCBzaXplb2YoYXJncykpOwo+ICsJaWYgKHIpCj4gKwkJcmV0 dXJuIHI7Cj4gKwkqc2hhcmVkX2hhbmRsZSA9IGFyZ3Mub3V0LmZkOwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK2ludCBhbWRncHVfY3NfaW1wb3J0X3NlbShhbWRncHVfZGV2aWNlX2hhbmRsZSBk ZXYsCj4gKwkJCSAgaW50IHNoYXJlZF9oYW5kbGUsCj4gKwkJCSAgYW1kZ3B1X3NlbV9oYW5kbGUg KnNlbSkKPiArewo+ICsJdW5pb24gZHJtX2FtZGdwdV9zZW0gYXJnczsKPiArCWludCByOwo+ICsK PiArCWlmIChOVUxMID09IGRldikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBDcmVh dGUgdGhlIGNvbnRleHQgKi8KPiArCW1lbXNldCgmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKPiAr CWFyZ3MuaW4ub3AgPSBBTURHUFVfU0VNX09QX0lNUE9SVF9TRU07Cj4gKwlhcmdzLmluLmhhbmRs ZSA9IHNoYXJlZF9oYW5kbGU7Cj4gKwlyID0gZHJtQ29tbWFuZFdyaXRlUmVhZChkZXYtPmZkLCBE Uk1fQU1ER1BVX1NFTSwgJmFyZ3MsIHNpemVvZihhcmdzKSk7Cj4gKwlpZiAocikKPiArCQlyZXR1 cm4gcjsKPiArCSpzZW0gPSBhcmdzLm91dC5oYW5kbGU7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArCj4gK2ludCBhbWRncHVfY3NfZGVzdHJveV9zZW0oYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2 LAo+ICsJCQkgIGFtZGdwdV9zZW1faGFuZGxlIHNlbSkKPiArewo+ICsJdW5pb24gZHJtX2FtZGdw dV9zZW0gYXJnczsKPiArCWludCByOwo+ICsKPiArCWlmIChOVUxMID09IGRldikKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBDcmVhdGUgdGhlIGNvbnRleHQgKi8KPiArCW1lbXNldCgm YXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKPiArCWFyZ3MuaW4ub3AgPSBBTURHUFVfU0VNX09QX0RF U1RST1lfU0VNOwo+ICsJYXJncy5pbi5oYW5kbGUgPSBzZW07Cj4gKwlyID0gZHJtQ29tbWFuZFdy aXRlUmVhZChkZXYtPmZkLCBEUk1fQU1ER1BVX1NFTSwgJmFyZ3MsIHNpemVvZihhcmdzKSk7Cj4g KwlpZiAocikKPiArCQlyZXR1cm4gcjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9hbWRncHVfZHJtLmggYi9pbmNsdWRlL2RybS9hbWRncHVfZHJtLmgK PiBpbmRleCBkOGYyNDk3Li5mYTBiZmUyIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2FtZGdw dV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2FtZGdwdV9kcm0uaAo+IEBAIC01MCw2ICs1MCw3 IEBAIGV4dGVybiAiQyIgewo+ICAgI2RlZmluZSBEUk1fQU1ER1BVX1dBSVRfQ1MJCTB4MDkKPiAg ICNkZWZpbmUgRFJNX0FNREdQVV9HRU1fT1AJCTB4MTAKPiAgICNkZWZpbmUgRFJNX0FNREdQVV9H RU1fVVNFUlBUUgkJMHgxMQo+ICsjZGVmaW5lIERSTV9BTURHUFVfU0VNICAgICAgICAgICAgICAg ICAgMHgxMwo+ICAgCj4gICAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX0NSRUFURQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9HRU1fQ1JFQVRFLCB1bmlvbiBkcm1f YW1kZ3B1X2dlbV9jcmVhdGUpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX01NQVAJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX01NQVAsIHVuaW9uIGRy bV9hbWRncHVfZ2VtX21tYXApCj4gQEAgLTYzLDYgKzY0LDcgQEAgZXh0ZXJuICJDIiB7Cj4gICAj ZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfV0FJVF9DUwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0FNREdQVV9XQUlUX0NTLCB1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfY3MpCj4gICAjZGVm aW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX09QCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0FNREdQVV9HRU1fT1AsIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV9vcCkKPiAgICNkZWZpbmUg RFJNX0lPQ1RMX0FNREdQVV9HRU1fVVNFUlBUUglEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0FNREdQVV9HRU1fVVNFUlBUUiwgc3RydWN0IGRybV9hbWRncHVfZ2VtX3VzZXJwdHIpCj4g KyNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9TRU0JCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fQU1ER1BVX1NFTSwgdW5pb24gZHJtX2FtZGdwdV9zZW0pCj4gICAKPiAgICNkZWZpbmUg QU1ER1BVX0dFTV9ET01BSU5fQ1BVCQkweDEKPiAgICNkZWZpbmUgQU1ER1BVX0dFTV9ET01BSU5f R1RUCQkweDIKPiBAQCAtMzAzLDYgKzMwNSwyNiBAQCB1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfY3Mg ewo+ICAgCXN0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfY3Nfb3V0IG91dDsKPiAgIH07Cj4gICAKPiAr I2RlZmluZSBBTURHUFVfU0VNX09QX0NSRUFURV9TRU0gMAo+ICsjZGVmaW5lIEFNREdQVV9TRU1f T1BfSU1QT1JUX1NFTSAxCj4gKyNkZWZpbmUgQU1ER1BVX1NFTV9PUF9FWFBPUlRfU0VNIDIKPiAr I2RlZmluZSBBTURHUFVfU0VNX09QX0RFU1RST1lfU0VNIDMKPiArCj4gK3N0cnVjdCBkcm1fYW1k Z3B1X3NlbV9pbiB7Cj4gKwlfX3UzMiBvcDsKPiArCV9fdTMyIGhhbmRsZTsKPiArfTsKPiArCj4g K3N0cnVjdCBkcm1fYW1kZ3B1X3NlbV9vdXQgewo+ICsJX191MzIgZmQ7Cj4gKwlfX3UzMiBoYW5k bGU7Cj4gK307Cj4gKwo+ICt1bmlvbiBkcm1fYW1kZ3B1X3NlbSB7Cj4gKwlzdHJ1Y3QgZHJtX2Ft ZGdwdV9zZW1faW4gaW47Cj4gKwlzdHJ1Y3QgZHJtX2FtZGdwdV9zZW1fb3V0IG91dDsKPiArfTsK PiArCj4gICAjZGVmaW5lIEFNREdQVV9HRU1fT1BfR0VUX0dFTV9DUkVBVEVfSU5GTwkwCj4gICAj ZGVmaW5lIEFNREdQVV9HRU1fT1BfU0VUX1BMQUNFTUVOVAkJMQo+ICAgCj4gQEAgLTM1OCw2ICsz ODAsOCBAQCBzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fdmEgewo+ICAgI2RlZmluZSBBTURHUFVfQ0hV TktfSURfSUIJCTB4MDEKPiAgICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX0ZFTkNFCQkweDAyCj4g ICAjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9ERVBFTkRFTkNJRVMJMHgwMwo+ICsjZGVmaW5lIEFN REdQVV9DSFVOS19JRF9TRU1fV0FJVCAgICAgICAgMHgwNAo+ICsjZGVmaW5lIEFNREdQVV9DSFVO S19JRF9TRU1fU0lHTkFMICAgICAgMHgwNQo+ICAgCj4gICBzdHJ1Y3QgZHJtX2FtZGdwdV9jc19j aHVuayB7Cj4gICAJdWludDMyX3QJCWNodW5rX2lkOwo+IEBAIC00MjIsNiArNDQ2LDEwIEBAIHN0 cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2ZlbmNlIHsKPiAgIAl1aW50MzJfdCBvZmZzZXQ7Cj4g ICB9Owo+ICAgCj4gK3N0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSB7Cj4gKwl1aW50MzJf dCBoYW5kbGU7Cj4gK307Cj4gKwo+ICAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZGF0YSB7 Cj4gICAJdW5pb24gewo+ICAgCQlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19pYgkJaWJfZGF0 YTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=