From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: Re: [v2,1/2] drm/komeda: Add slave pipeline support Date: Wed, 12 Jun 2019 10:51:46 +0000 Message-ID: <20190612105138.GA4466@james-ThinkStation-P300> References: <1560251589-31827-2-git-send-email-lowry.li@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150073.outbound.protection.outlook.com [40.107.15.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id A704C89306 for ; Wed, 12 Jun 2019 10:51:49 +0000 (UTC) In-Reply-To: <1560251589-31827-2-git-send-email-lowry.li@arm.com> Content-Language: en-US Content-ID: <04B8D5E1BC72BD47B42EFFD648ABFC50@eurprd08.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Lowry Li (Arm Technology China)" Cc: nd , "airlied@linux.ie" , Liviu Dudau , "Jonathan Chai (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin (Arm Technology China)" , "seanpaul@chromium.org" , Ayan Halder List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMTEsIDIwMTkgYXQgMTE6MTM6MzlBTSArMDAwMCwgTG93cnkgTGkgKEFybSBU ZWNobm9sb2d5IENoaW5hKSB3cm90ZToKPiBGcm9tOiAiTG93cnkgTGkgKEFybSBUZWNobm9sb2d5 IENoaW5hKSIgPExvd3J5LkxpQGFybS5jb20+Cj4gCj4gT25lIGNydGMgY2FuIHVzZSB0d28ga29t ZWRhX3BpcGVsaW5lLCBhbmQgb25lIHdvcmtzIGFzIG1hc3RlciBhbmQgYXMKPiBzbGF2ZS4gdGhl IHNsYXZlIHBpcGVsaW5lIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIG91dHB1dCBhbmQgdGltaW5nCj4g Y3RybHIsIGJ1dCBwcmUtY29tcG9zaXRlIHRoZSBpbnB1dCBsYXllciBkYXRhIGZsb3cgYW5kIHRo ZW4gZmVlZCB0aGUKPiByZXN1bHQgdG8gbWFzdGVyLiB0aGUgcGlwZWxpbmUgY29uZmlndXJhdGlv biBsaWtlOgo+IAo+IHNsYXZlLWxheWVyLTAgXAo+IC4uLiAgICAgICAgICAgIHNsYXZlLT5DVQo+ IHNsYXZlLWxheWVyLTQgLyAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g bWFzdGVyLWxheWVyLTAgLS0tLS0tLS0+IG1hc3Rlci0+Q1UgLT4gLi4uCj4gIC4uLiAgICAgICAg ICAgICAgICAgIC8KPiBtYXN0ZXItbGF5ZXItNCAtLS0tLS0+Cj4gCj4gU2luY2Uga29tZWRhIENv bXBpeiBkb2Vzbid0IG91dHB1dCBhbHBoYSwgc28gdGhlIHNsYXZlLT5DVSByZXN1bHQKPiBvbmx5 IGNhbiBiZSB1c2VkIGFzIGJvdHRvbSBpbnB1dCB3aGVuIGJsZW5kIGl0IHdpdGggbWFzdGVyIGlu cHV0IGRhdGEKPiBmbG93cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMb3dyeSBMaSAoQXJtIFRlY2hu b2xvZ3kgQ2hpbmEpIDxsb3dyeS5saUBhcm0uY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMgICB8IDQxICsrKysrKysrKysrKysrKysr KysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMg ICAgfCAxMCArKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21l ZGFfa21zLmggICAgfCAgOSArKysrKwo+ICAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX3BpcGVsaW5lLmMgICB8IDIyICsrKysrKysrKysrKwo+ICAuLi4vZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggICB8ICAyICsrCj4gIC4uLi9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZV9zdGF0ZS5jIHwgMTUgKysrKysrKysKPiAg ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYyAgfCAzMiAr KysrKysrKysrKysrKysrLQo+ICA3IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQo+IAo+IC0tIAo+IDEuOS4xCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYwo+IGluZGV4IGEyZDY1NmYuLmNhZmI0 NDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21l ZGFfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21l ZGFfY3J0Yy5jCj4gQEAgLTY0LDYgKzY0LDEwIEBAIHN0YXRpYyB2b2lkIGtvbWVkYV9jcnRjX3Vw ZGF0ZV9jbG9ja19yYXRpbyhzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0KQo+ICAJ fQo+ICAKPiAgCS8qIHJlbGVhc2UgdW5jbGFpbWVkIHBpcGVsaW5lIHJlc291cmNlcyAqLwo+ICsJ ZXJyID0ga29tZWRhX3JlbGVhc2VfdW5jbGFpbWVkX3Jlc291cmNlcyhrY3J0Yy0+c2xhdmUsIGtj cnRjX3N0KTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gIAllcnIgPSBrb21l ZGFfcmVsZWFzZV91bmNsYWltZWRfcmVzb3VyY2VzKGtjcnRjLT5tYXN0ZXIsIGtjcnRjX3N0KTsK PiAgCWlmIChlcnIpCj4gIAkJcmV0dXJuIGVycjsKPiBAQCAtMjI2LDYgKzIzMCw3IEBAIHZvaWQg a29tZWRhX2NydGNfaGFuZGxlX2V2ZW50KHN0cnVjdCBrb21lZGFfY3J0YyAgICprY3J0YywKPiAg CXN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QgPSB0b19rY3J0Y19zdChjcnRjLT5z dGF0ZSk7Cj4gIAlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiA9IGtjcnRjLT5iYXNlLmRldi0+ZGV2 X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICptYXN0ZXIgPSBrY3J0Yy0+bWFz dGVyOwo+ICsJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqc2xhdmUgPSBrY3J0Yy0+c2xhdmU7Cj4g IAlzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqd2JfY29ubiA9IGtjcnRjLT53Yl9jb25uOwo+ ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Q7Cj4gIAo+IEBAIC0yMzcsNiAr MjQyLDkgQEAgdm9pZCBrb21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoc3RydWN0IGtvbWVkYV9jcnRj ICAgKmtjcnRjLAo+ICAJaWYgKGhhc19iaXQobWFzdGVyLT5pZCwga2NydGNfc3QtPmFmZmVjdGVk X3BpcGVzKSkKPiAgCQlrb21lZGFfcGlwZWxpbmVfdXBkYXRlKG1hc3Rlciwgb2xkLT5zdGF0ZSk7 Cj4gIAo+ICsJaWYgKHNsYXZlICYmIGhhc19iaXQoc2xhdmUtPmlkLCBrY3J0Y19zdC0+YWZmZWN0 ZWRfcGlwZXMpKQo+ICsJCWtvbWVkYV9waXBlbGluZV91cGRhdGUoc2xhdmUsIG9sZC0+c3RhdGUp Owo+ICsKPiAgCWNvbm5fc3QgPSB3Yl9jb25uID8gd2JfY29ubi0+YmFzZS5iYXNlLnN0YXRlIDog TlVMTDsKPiAgCWlmIChjb25uX3N0ICYmIGNvbm5fc3QtPndyaXRlYmFja19qb2IpCj4gIAkJZHJt X3dyaXRlYmFja19xdWV1ZV9qb2IoJndiX2Nvbm4tPmJhc2UsIGNvbm5fc3QpOwo+IEBAIC0yNjIs NiArMjcwLDcgQEAgdm9pZCBrb21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoc3RydWN0IGtvbWVkYV9j cnRjICAgKmtjcnRjLAo+ICAJc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICpvbGRfc3QgPSB0b19r Y3J0Y19zdChvbGQpOwo+ICAJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYgPSBjcnRjLT5kZXYtPmRl dl9wcml2YXRlOwo+ICAJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqbWFzdGVyID0ga2NydGMtPm1h c3RlcjsKPiArCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnNsYXZlICA9IGtjcnRjLT5zbGF2ZTsK PiAgCXN0cnVjdCBjb21wbGV0aW9uICpkaXNhYmxlX2RvbmUgPSAmY3J0Yy0+c3RhdGUtPmNvbW1p dC0+ZmxpcF9kb25lOwo+ICAJc3RydWN0IGNvbXBsZXRpb24gdGVtcDsKPiAgCWludCB0aW1lb3V0 Owo+IEBAIC0yNzAsNiArMjc5LDkgQEAgdm9pZCBrb21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoc3Ry dWN0IGtvbWVkYV9jcnRjICAgKmtjcnRjLAo+ICAJCQkgZHJtX2NydGNfaW5kZXgoY3J0YyksCj4g IAkJCSBvbGRfc3QtPmFjdGl2ZV9waXBlcywgb2xkX3N0LT5hZmZlY3RlZF9waXBlcyk7Cj4gIAo+ ICsJaWYgKHNsYXZlICYmIGhhc19iaXQoc2xhdmUtPmlkLCBvbGRfc3QtPmFjdGl2ZV9waXBlcykp Cj4gKwkJa29tZWRhX3BpcGVsaW5lX2Rpc2FibGUoc2xhdmUsIG9sZC0+c3RhdGUpOwo+ICsKPiAg CWlmIChoYXNfYml0KG1hc3Rlci0+aWQsIG9sZF9zdC0+YWN0aXZlX3BpcGVzKSkKPiAgCQlrb21l ZGFfcGlwZWxpbmVfZGlzYWJsZShtYXN0ZXIsIG9sZC0+c3RhdGUpOwo+ICAKPiBAQCAtNDE0LDYg KzQyNiw3IEBAIHN0YXRpYyB2b2lkIGtvbWVkYV9jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCj4gIAluZXctPmFmZmVjdGVkX3BpcGVzID0gb2xkLT5hY3RpdmVfcGlwZXM7Cj4g IAluZXctPmNsb2NrX3JhdGlvID0gb2xkLT5jbG9ja19yYXRpbzsKPiArCW5ldy0+bWF4X3NsYXZl X3pvcmRlciA9IG9sZC0+bWF4X3NsYXZlX3pvcmRlcjsKPiAgCj4gIAlyZXR1cm4gJm5ldy0+YmFz ZTsKPiAgfQo+IEBAIC00ODgsNyArNTAxLDcgQEAgaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Mo c3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCj4gIAkJbWFzdGVyID0gbWRldi0+cGlwZWxpbmVz W2ldOwo+ICAKPiAgCQljcnRjLT5tYXN0ZXIgPSBtYXN0ZXI7Cj4gLQkJY3J0Yy0+c2xhdmUgID0g TlVMTDsKPiArCQljcnRjLT5zbGF2ZSAgPSBrb21lZGFfcGlwZWxpbmVfZ2V0X3NsYXZlKG1hc3Rl cik7Cj4gIAo+ICAJCWlmIChjcnRjLT5zbGF2ZSkKPiAgCQkJc3ByaW50ZihzdHIsICJwaXBlLSVk IiwgY3J0Yy0+c2xhdmUtPmlkKTsKPiBAQCAtNTIyLDYgKzUzNSwyNiBAQCBzdGF0aWMgaW50IGtv bWVkYV9jcnRjX2NyZWF0ZV9jbG9ja19yYXRpb19wcm9wZXJ0eShzdHJ1Y3Qga29tZWRhX2NydGMg KmtjcnRjKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQga29tZWRhX2NydGNf Y3JlYXRlX3NsYXZlX3BsYW5lc19wcm9wZXJ0eShzdHJ1Y3Qga29tZWRhX2NydGMgKmtjcnRjKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAma2NydGMtPmJhc2U7Cj4gKwlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wOwo+ICsKPiArCWlmIChrY3J0Yy0+c2xhdmVfcGxhbmVzID09IDAp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2Uo Y3J0Yy0+ZGV2LCBEUk1fTU9ERV9QUk9QX0lNTVVUQUJMRSwKPiArCQkJCQkgInNsYXZlX3BsYW5l cyIsIDAsIFUzMl9NQVgpOwo+ICsJaWYgKCFwcm9wKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsK PiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjcnRjLT5iYXNlLCBwcm9wLCBrY3J0Yy0+ c2xhdmVfcGxhbmVzKTsKPiArCj4gKwlrY3J0Yy0+c2xhdmVfcGxhbmVzX3Byb3BlcnR5ID0gcHJv cDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUg Kgo+ICBnZXRfY3J0Y19wcmltYXJ5KHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qg a29tZWRhX2NydGMgKmNydGMpCj4gIHsKPiBAQCAtNTYyLDcgKzU5NSwxMSBAQCBzdGF0aWMgaW50 IGtvbWVkYV9jcnRjX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKPiAgCWlmIChlcnIp Cj4gIAkJcmV0dXJuIGVycjsKPiAgCj4gLQlyZXR1cm4gMDsKPiArCWVyciA9IGtvbWVkYV9jcnRj X2NyZWF0ZV9zbGF2ZV9wbGFuZXNfcHJvcGVydHkoa2NydGMpOwo+ICsJaWYgKGVycikKPiArCQly ZXR1cm4gZXJyOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gIH0KPiAgCj4gIGludCBrb21lZGFfa21z X2FkZF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf a21zLmMKPiBpbmRleCA1ZDEwYzU1Li44NTQzODYwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKPiBAQCAtMTQzLDYgKzE0Myw4IEBA IHN0YXRpYyBpbnQga29tZWRhX2NydGNfbm9ybWFsaXplX3pwb3Moc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCQkJICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0KQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0LT5zdGF0ZTsKPiArCXN0 cnVjdCBrb21lZGFfY3J0YyAqa2NydGMgPSB0b19rY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBrb21l ZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QgPSB0b19rY3J0Y19zdChjcnRjX3N0KTsKPiAgCXN0cnVj dCBrb21lZGFfcGxhbmVfc3RhdGUgKmtwbGFuZV9zdDsKPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBsYW5lX3N0Owo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gQEAgLTE2Nyw2 ICsxNjksOCBAQCBzdGF0aWMgaW50IGtvbWVkYV9jcnRjX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCQkJcmV0dXJuIGVycjsKPiAgCX0KPiAgCj4gKwlrY3J0Y19zdC0+ bWF4X3NsYXZlX3pvcmRlciA9IDA7Cj4gKwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShrcGxhbmVf c3QsICZ6b3JkZXJfbGlzdCwgemxpc3Rfbm9kZSkgewo+ICAJCXBsYW5lX3N0ID0gJmtwbGFuZV9z dC0+YmFzZTsKPiAgCQlmYiA9IHBsYW5lX3N0LT5mYjsKPiBAQCAtMTg1LDYgKzE4OSwxMiBAQCBz dGF0aWMgaW50IGtvbWVkYV9jcnRjX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHpwb3M6JWQsIG5vcm1hbGl6 ZWQgenBvczogJWRcbiIsCj4gIAkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+ICAJ CQkJIHBsYW5lX3N0LT56cG9zLCBwbGFuZV9zdC0+bm9ybWFsaXplZF96cG9zKTsKPiArCj4gKwkJ LyogY2FsY3VsYXRlIG1heCBzbGF2ZSB6b3JkZXIgKi8KPiArCQlpZiAoaGFzX2JpdChkcm1fcGxh bmVfaW5kZXgocGxhbmUpLCBrY3J0Yy0+c2xhdmVfcGxhbmVzKSkKPiArCQkJa2NydGNfc3QtPm1h eF9zbGF2ZV96b3JkZXIgPQo+ICsJCQkJbWF4KHBsYW5lX3N0LT5ub3JtYWxpemVkX3pwb3MsCj4g KwkJCQkgICAga2NydGNfc3QtPm1heF9zbGF2ZV96b3JkZXIpOwo+ICAJfQo+ICAKPiAgCWNydGNf c3QtPnpwb3NfY2hhbmdlZCA9IHRydWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfa21zLmgKPiBpbmRleCA5ZGNmZTVhLi4yMTlmYTNmIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKPiBA QCAtODYsNiArODYsOSBAQCBzdHJ1Y3Qga29tZWRhX2NydGMgewo+ICAJICovCj4gIAlzdHJ1Y3Qg a29tZWRhX3BpcGVsaW5lICpzbGF2ZTsKPiAgCj4gKwkvKiogQHNsYXZlX3BsYW5lczoga29tZWRh IHNsYXZlIHBsYW5lcyBtYXNrICovCj4gKwl1MzIgc2xhdmVfcGxhbmVzOwo+ICsKPiAgCS8qKiBA d2JfY29ubjoga29tZWRhIHdyaXRlIGJhY2sgY29ubmVjdG9yICovCj4gIAlzdHJ1Y3Qga29tZWRh X3diX2Nvbm5lY3RvciAqd2JfY29ubjsKPiAgCj4gQEAgLTk0LDYgKzk3LDkgQEAgc3RydWN0IGtv bWVkYV9jcnRjIHsKPiAgCj4gIAkvKiogQGNsb2NrX3JhdGlvX3Byb3BlcnR5OiBwcm9wZXJ0eSBm b3IgcmF0aW8gb2YgKGFjbGsgPDwgMzIpL3B4bGNsayAqLwo+ICAJc3RydWN0IGRybV9wcm9wZXJ0 eSAqY2xvY2tfcmF0aW9fcHJvcGVydHk7Cj4gKwo+ICsJLyoqIEBzbGF2ZV9wbGFuZXNfcHJvcGVy dHk6IHByb3BlcnR5IGZvciBzbGF2ZXMgb2YgdGhlIHBsYW5lcyAqLwo+ICsJc3RydWN0IGRybV9w cm9wZXJ0eSAqc2xhdmVfcGxhbmVzX3Byb3BlcnR5Owo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTEx OSw2ICsxMjUsOSBAQCBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgewo+ICAKPiAgCS8qKiBAY2xv Y2tfcmF0aW86IHJhdGlvIG9mIChhY2xrIDw8IDMyKS9weGxjbGsgKi8KPiAgCXU2NCBjbG9ja19y YXRpbzsKPiArCj4gKwkvKiogQG1heF9zbGF2ZV96b3JkZXI6IHRoZSBtYXhpbXVtIG9mIHNsYXZl IHpvcmRlciAqLwo+ICsJdTMyIG1heF9zbGF2ZV96b3JkZXI7Cj4gIH07Cj4gIAo+ICAvKiogc3Ry dWN0IGtvbWVkYV9rbXNfZGV2IC0gZm9yIGdhdGhlciBLTVMgcmVsYXRlZCB0aGluZ3MgKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlw ZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVs aW5lLmMKPiBpbmRleCBlYjllMGMwLi5hM2Q5MGQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5jCj4gQEAgLTE0Miw2 ICsxNDIsMTQgQEAgc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKgo+ICAJcmV0dXJuIGM7Cj4gIH0K PiAgCj4gK3N0YXRpYyBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqCj4gK2tvbWVkYV9jb21wb25l bnRfcGlja3VwX2lucHV0KHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLCB1MzIgYXZhaWxfY29t cHMpCj4gK3sKPiArCXUzMiBhdmFpbF9pbnB1dHMgPSBjLT5zdXBwb3J0ZWRfaW5wdXRzICYgKGF2 YWlsX2NvbXBzKTsKPiArCj4gKwlyZXR1cm4ga29tZWRhX3BpcGVsaW5lX2dldF9maXJzdF9jb21w b25lbnQoYy0+cGlwZWxpbmUsIGF2YWlsX2lucHV0cyk7Cj4gK30KPiArCj4gIC8qKiBrb21lZGFf Y29tcG9uZW50X2FkZCAtIEFkZCBhIGNvbXBvbmVudCB0byAma29tZWRhX3BpcGVsaW5lICovCj4g IHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICoKPiAga29tZWRhX2NvbXBvbmVudF9hZGQoc3RydWN0 IGtvbWVkYV9waXBlbGluZSAqcGlwZSwKPiBAQCAtMjk2LDYgKzMwNCwyMCBAQCBzdGF0aWMgdm9p ZCBrb21lZGFfcGlwZWxpbmVfYXNzZW1ibGUoc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSkK PiAgCX0KPiAgfQo+ICAKPiArLyogaWYgcGlwZWxpbmVfQSBhY2NlcHQgYW5vdGhlciBwaXBlbGlu ZV9CJ3MgY29tcG9uZW50IGFzIGlucHV0LCB0cmVhdAo+ICsgKiBwaXBlbGluZV9CIGFzIHNsYXZl IG9mIHBpcGVsaW5lX0EuCj4gKyAqLwo+ICtzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICoKPiAra29t ZWRhX3BpcGVsaW5lX2dldF9zbGF2ZShzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICptYXN0ZXIpCj4g K3sKPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpzbGF2ZTsKPiArCj4gKwlzbGF2ZSA9IGtv bWVkYV9jb21wb25lbnRfcGlja3VwX2lucHV0KCZtYXN0ZXItPmNvbXBpei0+YmFzZSwKPiArCQkJ CQkgICAgICBLT01FREFfUElQRUxJTkVfQ09NUElaUyk7Cj4gKwo+ICsJcmV0dXJuIHNsYXZlID8g c2xhdmUtPnBpcGVsaW5lIDogTlVMTDsKPiArfQo+ICsKPiAgaW50IGtvbWVkYV9hc3NlbWJsZV9w aXBlbGluZXMoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCj4gIHsKPiAgCXN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnBpcGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9waXBlbGluZS5oCj4gaW5kZXggZjZhNGE1MS4uMmE2N2M4YSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGlu ZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlw ZWxpbmUuaAo+IEBAIC00NTIsNiArNDUyLDggQEAgc3RydWN0IGtvbWVkYV9waXBlbGluZSAqCj4g IAkJICAgIGNvbnN0IHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfZnVuY3MgKmZ1bmNzKTsKPiAgdm9p ZCBrb21lZGFfcGlwZWxpbmVfZGVzdHJveShzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiwKPiAgCQkJ ICAgICBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlKTsKPiArc3RydWN0IGtvbWVkYV9waXBl bGluZSAqCj4gK2tvbWVkYV9waXBlbGluZV9nZXRfc2xhdmUoc3RydWN0IGtvbWVkYV9waXBlbGlu ZSAqbWFzdGVyKTsKPiAgaW50IGtvbWVkYV9hc3NlbWJsZV9waXBlbGluZXMoc3RydWN0IGtvbWVk YV9kZXYgKm1kZXYpOwo+ICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqCj4gIGtvbWVkYV9waXBl bGluZV9nZXRfY29tcG9uZW50KHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGUsIGludCBpZCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X3BpcGVsaW5lX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9waXBlbGluZV9zdGF0ZS5jCj4gaW5kZXggMjMxODJlZC4uNmMzNWFmZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZV9z dGF0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf cGlwZWxpbmVfc3RhdGUuYwo+IEBAIC0xMDMyLDEwICsxMDMyLDI1IEBAIGludCBrb21lZGFfYnVp bGRfZGlzcGxheV9kYXRhX2Zsb3coc3RydWN0IGtvbWVkYV9jcnRjICprY3J0YywKPiAgCQkJCSAg IHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QpCj4gIHsKPiAgCXN0cnVjdCBrb21l ZGFfcGlwZWxpbmUgKm1hc3RlciA9IGtjcnRjLT5tYXN0ZXI7Cj4gKwlzdHJ1Y3Qga29tZWRhX3Bp cGVsaW5lICpzbGF2ZSAgPSBrY3J0Yy0+c2xhdmU7Cj4gIAlzdHJ1Y3Qga29tZWRhX2RhdGFfZmxv d19jZmcgbV9kZmxvdzsgLyogbWFzdGVyIGRhdGEgZmxvdyAqLwo+ICsJc3RydWN0IGtvbWVkYV9k YXRhX2Zsb3dfY2ZnIHNfZGZsb3c7IC8qIHNsYXZlIGRhdGEgZmxvdyAqLwo+ICAJaW50IGVycjsK PiAgCj4gIAltZW1zZXQoJm1fZGZsb3csIDAsIHNpemVvZihtX2RmbG93KSk7Cj4gKwltZW1zZXQo JnNfZGZsb3csIDAsIHNpemVvZihzX2RmbG93KSk7Cj4gKwo+ICsJaWYgKHNsYXZlICYmIGhhc19i aXQoc2xhdmUtPmlkLCBrY3J0Y19zdC0+YWN0aXZlX3BpcGVzKSkgewo+ICsJCWVyciA9IGtvbWVk YV9jb21waXpfdmFsaWRhdGUoc2xhdmUtPmNvbXBpeiwga2NydGNfc3QsICZzX2RmbG93KTsKPiAr CQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4gZXJyOwo+ICsKPiArCQkvKiBtZXJnZSB0aGUgc2xhdmUg ZGZsb3cgaW50byBtYXN0ZXIgcGlwZWxpbmUgKi8KPiArCQllcnIgPSBrb21lZGFfY29tcGl6X3Nl dF9pbnB1dChtYXN0ZXItPmNvbXBpeiwga2NydGNfc3QsCj4gKwkJCQkJICAgICAgJnNfZGZsb3cp Owo+ICsJCWlmIChlcnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9Cj4gIAo+ICAJZXJyID0ga29t ZWRhX2NvbXBpel92YWxpZGF0ZShtYXN0ZXItPmNvbXBpeiwga2NydGNfc3QsICZtX2RmbG93KTsK PiAgCWlmIChlcnIpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEva29tZWRhX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRh L2tvbWVkYV9wbGFuZS5jCj4gaW5kZXggZDFjNThhOC4uMDRiMTIyZiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYwo+IEBAIC0x NCwxNSArMTQsMjcgQEAKPiAgCj4gIHN0YXRpYyBpbnQKPiAga29tZWRhX3BsYW5lX2luaXRfZGF0 YV9mbG93KHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0LAo+ICsJCQkgICAgc3RydWN0IGtvbWVk YV9jcnRjX3N0YXRlICprY3J0Y19zdCwKPiAgCQkJICAgIHN0cnVjdCBrb21lZGFfZGF0YV9mbG93 X2NmZyAqZGZsb3cpCj4gIHsKPiArCXN0cnVjdCBrb21lZGFfcGxhbmUgKmtwbGFuZSA9IHRvX2tw bGFuZShzdC0+cGxhbmUpOwo+ICAJc3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZSAqa3BsYW5lX3N0 ID0gdG9fa3BsYW5lX3N0KHN0KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3Qt PmZiOwo+ICAJY29uc3Qgc3RydWN0IGtvbWVkYV9mb3JtYXRfY2FwcyAqY2FwcyA9IHRvX2tmYihm YiktPmZvcm1hdF9jYXBzOwo+ICsJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSA9IGtwbGFu ZS0+bGF5ZXItPmJhc2UucGlwZWxpbmU7Cj4gIAo+ICAJbWVtc2V0KGRmbG93LCAwLCBzaXplb2Yo KmRmbG93KSk7Cj4gIAo+ICAJZGZsb3ctPmJsZW5kaW5nX3pvcmRlciA9IHN0LT5ub3JtYWxpemVk X3pwb3M7Cj4gKwlpZiAocGlwZSA9PSB0b19rY3J0YyhzdC0+Y3J0YyktPm1hc3RlcikKPiArCQlk Zmxvdy0+YmxlbmRpbmdfem9yZGVyIC09IGtjcnRjX3N0LT5tYXhfc2xhdmVfem9yZGVyOwo+ICsJ aWYgKGRmbG93LT5ibGVuZGluZ196b3JkZXIgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0FUT01JQygi JXMgem9yZGVyOiVkIDwgbWF4X3NsYXZlX3pvcmRlcjogJWQuXG4iLAo+ICsJCQkJIHN0LT5wbGFu ZS0+bmFtZSwgc3QtPm5vcm1hbGl6ZWRfenBvcywKPiArCQkJCSBrY3J0Y19zdC0+bWF4X3NsYXZl X3pvcmRlcik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICAJZGZsb3ctPnBpeGVs X2JsZW5kX21vZGUgPSBzdC0+cGl4ZWxfYmxlbmRfbW9kZTsKPiAgCWRmbG93LT5sYXllcl9hbHBo YSA9IHN0LT5hbHBoYSA+PiA4Owo+ICAKPiBAQCAtODgsNyArMTAwLDcgQEAKPiAgCj4gIAlrY3J0 Y19zdCA9IHRvX2tjcnRjX3N0KGNydGNfc3QpOwo+ICAKPiAtCWVyciA9IGtvbWVkYV9wbGFuZV9p bml0X2RhdGFfZmxvdyhzdGF0ZSwgJmRmbG93KTsKPiArCWVyciA9IGtvbWVkYV9wbGFuZV9pbml0 X2RhdGFfZmxvdyhzdGF0ZSwga2NydGNfc3QsICZkZmxvdyk7Cj4gIAlpZiAoZXJyKQo+ICAJCXJl dHVybiBlcnI7Cj4gIAo+IEBAIC0yODgsNiArMzAwLDIyIEBAIHN0YXRpYyB1MzIgZ2V0X3Bvc3Np YmxlX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAo+ICAJcmV0dXJuIHBvc3NpYmxl X2NydGNzOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZAo+ICtrb21lZGFfc2V0X2NydGNfcGxhbmVf bWFzayhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKPiArCQkJICAgc3RydWN0IGtvbWVkYV9w aXBlbGluZSAqcGlwZSwKPiArCQkJICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gK3sKPiAr CXN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGM7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwga21zLT5uX2NydGNzOyBpKyspIHsKPiArCQlrY3J0YyA9ICZrbXMtPmNydGNzW2ldOwo+ ICsKPiArCQlpZiAocGlwZSA9PSBrY3J0Yy0+c2xhdmUpCj4gKwkJCWtjcnRjLT5zbGF2ZV9wbGFu ZXMgfD0gQklUKGRybV9wbGFuZV9pbmRleChwbGFuZSkpOwo+ICsJfQo+ICt9Cj4gKwo+ICAvKiB1 c2UgTGF5ZXIwIGFzIHByaW1hcnkgKi8KPiAgc3RhdGljIHUzMiBnZXRfcGxhbmVfdHlwZShzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKPiAgCQkJICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAq YykKPiBAQCAtMzY2LDYgKzM5NCw4IEBAIHN0YXRpYyBpbnQga29tZWRhX3BsYW5lX2FkZChzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKPiAgCWlmIChlcnIpCj4gIAkJZ290byBjbGVhbnVwOwo+ ICAKPiArCWtvbWVkYV9zZXRfY3J0Y19wbGFuZV9tYXNrKGttcywgYy0+cGlwZWxpbmUsIHBsYW5l KTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgY2xlYW51cDoKPiAgCWtvbWVkYV9wbGFuZV9kZXN0cm95 KHBsYW5lKTsKCgpMb29rcyBnb29kIHRvIG1lLgoKUmV2aWV3ZWQtYnk6IEphbWVzIFFpYW4gV2Fu ZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs