From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC v2 3/7] drm/i915: update cursors asynchronously through atomic Date: Thu, 27 Apr 2017 18:41:00 +0300 Message-ID: <20170427154100.GP30290@intel.com> References: <20170427151519.8308-1-gustavo@padovan.org> <20170427151519.8308-4-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 722326E659 for ; Thu, 27 Apr 2017 15:41:07 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170427151519.8308-4-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: Gustavo Padovan , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBcHIgMjcsIDIwMTcgYXQgMTI6MTU6MTVQTSAtMDMwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jb20+Cj4gCj4gQWRkIHN1cHBvcnQgdG8gYXN5bmMgdXBkYXRlcyBvZiBjdXJzb3JzIGJ5IHVz aW5nIHRoZSBuZXcgYXRvbWljCj4gaW50ZXJmYWNlIGZvciB0aGF0LiBCYXNpY2FsbHkgd2hhdCB0 aGlzIGNvbW1pdCBkb2VzIGlzIGRvIHdoYXQKPiBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZSgp IGRpZCBidXQgdGhyb3VnaCBhdG9taWMuCj4gCj4gdjI6IG1vdmUgZmIgc2V0dGluZyB0byBjb3Jl IGFuZCB1c2UgbmV3IHN0YXRlIChFcmljIEFuaG9sdCkKPiAKPiBDYzogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFu IDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgNTIgKysrKysrKysrKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAxNDcgKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMTI2IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j Cj4gaW5kZXggY2ZiNDcyOS4uYzVkMDU5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pY19wbGFuZS5jCj4gQEAgLTI0NiwxMSArMjQ2LDYzIEBAIHN0YXRpYyB2b2lkIGlu dGVsX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAl9Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2FzeW5jX2NoZWNrKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBsYW5lLT5zdGF0ZS0+Y3J0YzsK PiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGNydGMtPnN0YXRlOwo+ICsK PiArCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwo+ICsJLyoKPiArCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVy ZSBpcyBhIG1vZGVzZXQgcGVuZGluZywKPiArCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIGlu IHRoZSBzbG93cGF0aAo+ICsJICovCj4gKwlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSB8fCB0b19p bnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT51cGRhdGVfcGlwZSkKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCj4gKwkvKiBPbmx5IGNoYW5naW5nIGZiIHNob3VsZCBiZSBpbiB0aGUgZmFzdHBh dGguICAqLwoKTm8sIHdlIHdhbnQgY3Vyc29yIG1vdmVtZW50IHRoZXJlIGFzIHdlbGwuIEl0J3Mg c29tZXdoYXQgaW1wb3NzaWJsZQp0byBzZWUgZnJvbSB0aGlzIGNvZGUgbm93IHRoYXQgdGhlIGNv cmUgaGFzIHRoZSBzaXplIGNoZWNrcy4gQnV0IGV2ZW4Kc28gdGhlIGNvbW1lbnQgc2hvdWxkIG5v dCBsaWUuCgo+ICsJaWYgKCFwbGFuZS0+c3RhdGUtPmZiICE9ICFzdGF0ZS0+ZmIpCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlu dGVsX3BsYW5lX2F0b21pY19hc3luY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g KwkJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPiArewo+ICsJc3Ry dWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBsYW5lLT5zdGF0ZS0+Y3J0YzsKPiArCj4gKwlpOTE1 X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYiksCj4gKwkJCSAgaW50 ZWxfZmJfb2JqKG5ld19zdGF0ZS0+ZmIpLAo+ICsJCQkgIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZl cl9iaXQpOwo+ICsKPiArCSp0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpID0gKnRv X2ludGVsX3BsYW5lX3N0YXRlKG5ld19zdGF0ZSk7Cj4gKwl0b19pbnRlbF9wbGFuZV9zdGF0ZShu ZXdfc3RhdGUpLT52bWEgPQo+ICsJCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0 ZSktPnZtYTsKPiArCj4gKwlwbGFuZS0+c3RhdGUtPnZpc2libGUgPSBuZXdfc3RhdGUtPnZpc2li bGU7Cj4gKwo+ICsJaWYgKHBsYW5lLT5zdGF0ZS0+dmlzaWJsZSkgewo+ICsJCXRyYWNlX2ludGVs X3VwZGF0ZV9wbGFuZShwbGFuZSwgdG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gKwkJaW50ZWxfcGxh bmUtPnVwZGF0ZV9wbGFuZShwbGFuZSwKPiArCQkJCQkgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpLAo+ICsJCQkJCSAgdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKSk7Cj4g Kwl9IGVsc2Ugewo+ICsJCXRyYWNlX2ludGVsX2Rpc2FibGVfcGxhbmUocGxhbmUsIHRvX2ludGVs X2NydGMoY3J0YykpOwo+ICsJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRj KTsKPiArCX0KPiArfQo+ICsKPiAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mg aW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzID0gewo+ICAJLnByZXBhcmVfZmIgPSBpbnRlbF9wcmVw YXJlX3BsYW5lX2ZiLAo+ICAJLmNsZWFudXBfZmIgPSBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiLAo+ ICAJLmF0b21pY19jaGVjayA9IGludGVsX3BsYW5lX2F0b21pY19jaGVjaywKPiAgCS5hdG9taWNf dXBkYXRlID0gaW50ZWxfcGxhbmVfYXRvbWljX3VwZGF0ZSwKPiArCS5hdG9taWNfYXN5bmNfY2hl Y2sgPSBpbnRlbF9wbGFuZV9hdG9taWNfYXN5bmNfY2hlY2ssCj4gKwkuYXRvbWljX2FzeW5jX3Vw ZGF0ZSA9IGludGVsX3BsYW5lX2F0b21pY19hc3luY191cGRhdGUsCgpOQUsuIFdlIGRvbid0IHdh bnQgdGhlc2UgImFzeW5jIiB1cGRhdGVzIGZvciBhbnl0aGluZyBidXQgY3Vyc29ycy4KCj4gIH07 Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZTIx N2QwNC4uYzg1NGM4NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBA QCAtMTI5OTMsMTMgKzEyOTkzLDI5IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ICAJLyoKPiAtCSAq IFRoZSBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZSgpIGZhc3QgcGF0aCB0YWtlcyBjYXJlCj4g KwkgKiBUaGUgYXRvbWljIGFzeW5jIHVwZGF0ZSBmYXN0IHBhdGggdGFrZXMgY2FyZQo+ICAJICog b2YgYXZvaWRpbmcgdGhlIHZibGFuayB3YWl0cyBmb3Igc2ltcGxlIGN1cnNvcgo+ICAJICogbW92 ZW1lbnQgYW5kIGZsaXBzLiBGb3IgY3Vyc29yIG9uL29mZiBhbmQgc2l6ZSBjaGFuZ2VzLAo+ICAJ ICogd2Ugd2FudCB0byBwZXJmb3JtIHRoZSB2Ymxhbmsgd2FpdHMgc28gdGhhdCB3YXRlcm1hcmsK PiAgCSAqIHVwZGF0ZXMgaGFwcGVuIGR1cmluZyB0aGUgY29ycmVjdCBmcmFtZXMuIEdlbjkrIGhh dmUKPiAgCSAqIGRvdWJsZSBidWZmZXJlZCB3YXRlcm1hcmtzIGFuZCBzbyBzaG91bGRuJ3QgbmVl ZCB0aGlzLgo+ICAJICovCj4gKwlpZiAoc3RhdGUtPmFzeW5jX3VwZGF0ZSkgewo+ICsJCXJldCA9 IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCWlmIChy ZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3By ZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICsJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+ICsKPiArCQlkcm1fYXRvbWljX2hlbHBlcl9hc3luY19jb21taXQoZGV2LCBzdGF0 ZSk7Cj4gKwo+ICsJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCQlkcm1fYXRv bWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiArCQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDkpCj4gIAkJc3RhdGUtPmxlZ2FjeV9jdXJzb3JfdXBkYXRlID0g ZmFsc2U7Cj4gIAo+IEBAIC0xMzE0MSw2ICsxMzE1Nyw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfQo+ICAKPiArCWlmIChuZXdf c3RhdGUtPnN0YXRlLT5hc3luY191cGRhdGUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICAJaWYgKCFv YmogJiYgIW9sZF9vYmopCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC0xMzM2MCwxMzIgKzEzMzc5 LDggQEAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsK PiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4g IH07Cj4gIAo+IC1zdGF0aWMgaW50Cj4gLWludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+IC0JCQkgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJ CSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+IC0JCQkgICBpbnQgY3J0Y194LCBpbnQg Y3J0Y195LAo+IC0JCQkgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19o LAo+IC0JCQkgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCj4gLQkJCSAgIHVpbnQz Ml90IHNyY193LCB1aW50MzJfdCBzcmNfaCwKPiAtCQkJICAgc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4ICpjdHgpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAtCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+IC0Jc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlID0gY3J0Yy0+c3RhdGU7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKm9sZF92bWE7Cj4gLQo+ IC0JLyoKPiAtCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVyZSBpcyBhIG1vZGVzZXQg cGVuZGluZywKPiAtCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIGluIHRoZSBzbG93cGF0aAo+ IC0JICovCj4gLQlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSB8fCBuZWVkc19tb2Rlc2V0KGNydGNf c3RhdGUpIHx8Cj4gLQkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+dXBkYXRl X3BpcGUpCj4gLQkJZ290byBzbG93Owo+IC0KPiAtCW9sZF9wbGFuZV9zdGF0ZSA9IHBsYW5lLT5z dGF0ZTsKPiAtCj4gLQkvKgo+IC0JICogSWYgYW55IHBhcmFtZXRlcnMgY2hhbmdlIHRoYXQgbWF5 IGFmZmVjdCB3YXRlcm1hcmtzLAo+IC0JICogdGFrZSB0aGUgc2xvd3BhdGguIE9ubHkgY2hhbmdp bmcgZmIgb3IgcG9zaXRpb24gc2hvdWxkIGJlCj4gLQkgKiBpbiB0aGUgZmFzdHBhdGguCj4gLQkg Ki8KPiAtCWlmIChvbGRfcGxhbmVfc3RhdGUtPmNydGMgIT0gY3J0YyB8fAo+IC0JICAgIG9sZF9w bGFuZV9zdGF0ZS0+c3JjX3cgIT0gc3JjX3cgfHwKPiAtCSAgICBvbGRfcGxhbmVfc3RhdGUtPnNy Y19oICE9IHNyY19oIHx8Cj4gLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5jcnRjX3cgIT0gY3J0Y193 IHx8Cj4gLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5jcnRjX2ggIT0gY3J0Y19oIHx8Cj4gLQkgICAg IW9sZF9wbGFuZV9zdGF0ZS0+ZmIgIT0gIWZiKQo+IC0JCWdvdG8gc2xvdzsKPiAtCj4gLQluZXdf cGxhbmVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUpOwo+IC0JaWYg KCFuZXdfcGxhbmVfc3RhdGUpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JZHJtX2F0b21p Y19zZXRfZmJfZm9yX3BsYW5lKG5ld19wbGFuZV9zdGF0ZSwgZmIpOwo+IC0KPiAtCW5ld19wbGFu ZV9zdGF0ZS0+c3JjX3ggPSBzcmNfeDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+c3JjX3kgPSBzcmNf eTsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+c3JjX3cgPSBzcmNfdzsKPiAtCW5ld19wbGFuZV9zdGF0 ZS0+c3JjX2ggPSBzcmNfaDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+Y3J0Y194ID0gY3J0Y194Owo+ IC0JbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3kgPSBjcnRjX3k7Cj4gLQluZXdfcGxhbmVfc3RhdGUt PmNydGNfdyA9IGNydGNfdzsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+Y3J0Y19oID0gY3J0Y19oOwo+ IC0KPiAtCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLAo+IC0JCQkJCQkgIHRvX2ludGVsX3BsYW5lX3N0YXRl KG5ld19wbGFuZV9zdGF0ZSkpOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIG91dF9mcmVlOwo+IC0K PiAtCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIG91dF9mcmVlOwo+IC0KPiAtCWlmIChJTlRF TF9JTkZPKGRldl9wcml2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSB7Cj4gLQkJaW50IGFsaWdu ID0gSVNfSTgzMChkZXZfcHJpdikgPyAxNiAqIDEwMjQgOiAyNTY7Cj4gLQo+IC0JCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhpbnRlbF9mYl9vYmooZmIpLCBhbGlnbik7Cj4gLQkJ aWYgKHJldCkgewo+IC0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2Jq ZWN0XG4iKTsKPiAtCQkJZ290byBvdXRfdW5sb2NrOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJ c3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQo+IC0JCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2Vf ZmJfb2JqKGZiLCBuZXdfcGxhbmVfc3RhdGUtPnJvdGF0aW9uKTsKPiAtCQlpZiAoSVNfRVJSKHZt YSkpIHsKPiAtCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHBpbiBvYmplY3RcbiIpOwo+IC0K PiAtCQkJcmV0ID0gUFRSX0VSUih2bWEpOwo+IC0JCQlnb3RvIG91dF91bmxvY2s7Cj4gLQkJfQo+ IC0KPiAtCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfcGxhbmVfc3RhdGUpLT52bWEgPSB2bWE7 Cj4gLQl9Cj4gLQo+IC0Jb2xkX2ZiID0gb2xkX3BsYW5lX3N0YXRlLT5mYjsKPiAtCW9sZF92bWEg PSB0b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfcGxhbmVfc3RhdGUpLT52bWE7Cj4gLQo+IC0JaTkx NV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJfb2JqKG9sZF9mYiksIGludGVsX2ZiX29iaihmYiksCj4g LQkJCSAgaW50ZWxfcGxhbmUtPmZyb250YnVmZmVyX2JpdCk7Cj4gLQo+IC0JLyogU3dhcCBwbGFu ZSBzdGF0ZSAqLwo+IC0JbmV3X3BsYW5lX3N0YXRlLT5mZW5jZSA9IG9sZF9wbGFuZV9zdGF0ZS0+ ZmVuY2U7Cj4gLQkqdG9faW50ZWxfcGxhbmVfc3RhdGUob2xkX3BsYW5lX3N0YXRlKSA9ICp0b19p bnRlbF9wbGFuZV9zdGF0ZShuZXdfcGxhbmVfc3RhdGUpOwo+IC0JbmV3X3BsYW5lX3N0YXRlLT5m ZW5jZSA9IE5VTEw7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmZiID0gb2xkX2ZiOwo+IC0JdG9faW50 ZWxfcGxhbmVfc3RhdGUobmV3X3BsYW5lX3N0YXRlKS0+dm1hID0gb2xkX3ZtYTsKPiAtCj4gLQlp ZiAocGxhbmUtPnN0YXRlLT52aXNpYmxlKSB7Cj4gLQkJdHJhY2VfaW50ZWxfdXBkYXRlX3BsYW5l KHBsYW5lLCB0b19pbnRlbF9jcnRjKGNydGMpKTsKPiAtCQlpbnRlbF9wbGFuZS0+dXBkYXRlX3Bs YW5lKHBsYW5lLAo+IC0JCQkJCSAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSksCj4g LQkJCQkJICB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpKTsKPiAtCX0gZWxzZSB7 Cj4gLQkJdHJhY2VfaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFuZSwgdG9faW50ZWxfY3J0YyhjcnRj KSk7Cj4gLQkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUocGxhbmUsIGNydGMpOwo+IC0JfQo+ IC0KPiAtCWludGVsX2NsZWFudXBfcGxhbmVfZmIocGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4g LQo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gLW91dF9mcmVlOgo+IC0JaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwg bmV3X3BsYW5lX3N0YXRlKTsKPiAtCXJldHVybiByZXQ7Cj4gLQo+IC1zbG93Ogo+IC0JcmV0dXJu IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZShwbGFuZSwgY3J0YywgZmIsCj4gLQkJCQkJ ICAgICAgY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oLAo+IC0JCQkJCSAgICAgIHNyY194 LCBzcmNfeSwgc3JjX3csIHNyY19oLCBjdHgpOwo+IC19Cj4gLQo+ICBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MgPSB7Cj4gLQkudXBk YXRlX3BsYW5lID0gaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUsCj4gKwkudXBkYXRlX3BsYW5l ID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAo+ICAJLmRpc2FibGVfcGxhbmUgPSBk cm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAo+ICAJLmRlc3Ryb3kgPSBpbnRlbF9wbGFu ZV9kZXN0cm95LAo+ICAJLnNldF9wcm9wZXJ0eSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3Nl dF9wcm9wZXJ0eSwKPiAtLSAKPiAyLjkuMwo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==