From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 2/6] drm/i915: update cursors asynchronously through atomic Date: Fri, 30 Jun 2017 09:27:58 +0200 Message-ID: <20170630072743.u3k7jpo6lys7pt47@phenom.ffwll.local> References: <20170628205500.8015-1-gustavo@padovan.org> <20170628205500.8015-3-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 75ECE899BB for ; Fri, 30 Jun 2017 07:28:05 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id y5so6316133wmh.3 for ; Fri, 30 Jun 2017 00:28:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170628205500.8015-3-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 , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMjgsIDIwMTcgYXQgMDU6NTQ6NTZQTSAtMDMwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jb20+Cj4gCj4gQWRkIHN1cHBvcnQgdG8gYXN5bmMgdXBkYXRlcyBvZiBjdXJzb3JzIGJ5IHVz aW5nIHRoZSBuZXcgYXRvbWljCj4gaW50ZXJmYWNlIGZvciB0aGF0LiBCYXNpY2FsbHkgd2hhdCB0 aGlzIGNvbW1pdCBkb2VzIGlzIGRvIHdoYXQKPiBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZSgp IGRpZCBidXQgdGhyb3VnaCBhdG9taWMuCj4gCj4gdjM6Cj4gCS0gc2V0IGNvcnJlY3Qgdm1hIHRv IG5ldyBzdGF0ZSBmb3IgY2xlYW51cAo+IAktIG1vdmUgc2l6ZSBjaGVja3MgYmFjayB0byBkcml2 ZXJzIChWaWxsZSBTeXJqw6Rsw6QpCj4gCj4gdjI6Cj4gCS0gbW92ZSBmYiBzZXR0aW5nIHRvIGNv cmUgYW5kIHVzZSBuZXcgc3RhdGUgKEVyaWMgQW5ob2x0KQo+IAo+IENjOiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92 YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICA3MyArKysrKysrKysrKysrKysKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAxNDkgKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwg MTI1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19w bGFuZS5jCj4gaW5kZXggYTQwYzgyYy4uMTczN2I4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gQEAgLTI0NiwxMSArMjQ2LDg0IEBAIHN0YXRpYyB2 b2lkIGludGVsX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAl9Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2FzeW5jX2NoZWNr KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBsYW5lLT5zdGF0ZS0+ Y3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGNydGMtPnN0YXRl Owo+ICsKPiArCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyoKPiArCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBv ciB0aGVyZSBpcyBhIG1vZGVzZXQgcGVuZGluZywKPiArCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBs ZXRlIGluIHRoZSBzbG93cGF0aAo+ICsJICovCj4gKwlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSB8 fCB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT51cGRhdGVfcGlwZSkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwkvKgo+ICsJICogSWYgYW55IHBhcmFtZXRlcnMgY2hhbmdlIHRo YXQgbWF5IGFmZmVjdCB3YXRlcm1hcmtzLAo+ICsJICogdGFrZSB0aGUgc2xvd3BhdGguIE9ubHkg Y2hhbmdpbmcgZmIgb3IgcG9zaXRpb24gc2hvdWxkIGJlCj4gKwkgKiBpbiB0aGUgZmFzdHBhdGgu Cj4gKwkgKi8KPiArCWlmIChwbGFuZS0+c3RhdGUtPmNydGMgIT0gc3RhdGUtPmNydGMgfHwKPiAr CSAgICBwbGFuZS0+c3RhdGUtPnNyY193ICE9IHN0YXRlLT5zcmNfdyB8fAo+ICsJICAgIHBsYW5l LT5zdGF0ZS0+c3JjX2ggIT0gc3RhdGUtPnNyY19oIHx8Cj4gKwkgICAgcGxhbmUtPnN0YXRlLT5j cnRjX3cgIT0gc3RhdGUtPmNydGNfdyB8fAo+ICsJICAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y19oICE9 IHN0YXRlLT5jcnRjX2ggfHwKPiArCSAgICAhcGxhbmUtPnN0YXRlLT5mYiAhPSAhc3RhdGUtPmZi KQo+ICsJCXJldHVybiAtRUlOVkFMOwoKSWYgd2UgZXZlciBleHBvc2UgYXN5bmMgdXBkYXRlcyBh cyBhbiBBVE9NSUNfSU9DVEwgZmxhZyB0aGVuIHdlIG5lZWQgdG8KaW1wcm92ZSB0aGlzIGNoZWNr IGEgbG90LCBhbmQgbWFrZSBpdCBtb3JlIHJvYnVzdC4gT3RoZXJ3aXNlIHdlJ2xsIGdldAp0aGlu Z3Mgd3JvbmcgZXZlcnl0aW1lIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eSAobGlrZSByb3RhdGlvbiku Ci1EYW5pZWwKCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVs X3BsYW5lX2F0b21pY19hc3luY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJ CQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPiArewo+ICsJc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiArCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBsYW5lLT5zdGF0ZS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKm9sZF9mYjsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqb2xkX3ZtYTsKPiArCj4g KwlvbGRfdm1hID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKS0+dm1hOwo+ICsJ b2xkX2ZiID0gcGxhbmUtPnN0YXRlLT5mYjsKPiArCj4gKwlpOTE1X2dlbV90cmFja19mYihpbnRl bF9mYl9vYmoob2xkX2ZiKSwgaW50ZWxfZmJfb2JqKG5ld19zdGF0ZS0+ZmIpLAo+ICsJCQkgIGlu dGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpOwo+ICsKPiArCXBsYW5lLT5zdGF0ZS0+c3JjX3gg PSBuZXdfc3RhdGUtPnNyY194Owo+ICsJcGxhbmUtPnN0YXRlLT5zcmNfeSA9IG5ld19zdGF0ZS0+ c3JjX3k7Cj4gKwlwbGFuZS0+c3RhdGUtPmNydGNfeCA9IG5ld19zdGF0ZS0+Y3J0Y194Owo+ICsJ cGxhbmUtPnN0YXRlLT5jcnRjX3kgPSBuZXdfc3RhdGUtPmNydGNfeTsKPiArCXBsYW5lLT5zdGF0 ZS0+ZmIgPSBuZXdfc3RhdGUtPmZiOwo+ICsJKnRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5z dGF0ZSkgPSAqdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKTsKPiArCj4gKwl0b19pbnRl bF9wbGFuZV9zdGF0ZShuZXdfc3RhdGUpLT52bWEgPSBvbGRfdm1hOwo+ICsJbmV3X3N0YXRlLT5m YiA9IG9sZF9mYjsKPiArCj4gKwlpZiAocGxhbmUtPnN0YXRlLT52aXNpYmxlKSB7Cj4gKwkJdHJh Y2VfaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCB0b19pbnRlbF9jcnRjKGNydGMpKTsKPiArCQlp bnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lKHBsYW5lLAo+ICsJCQkJCSAgdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSksCj4gKwkJCQkJICB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+ c3RhdGUpKTsKPiArCX0gZWxzZSB7Cj4gKwkJdHJhY2VfaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFu ZSwgdG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gKwkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUo cGxhbmUsIGNydGMpOwo+ICsJfQo+ICsKPiArCW11dGV4X2xvY2soJnBsYW5lLT5kZXYtPnN0cnVj dF9tdXRleCk7Cj4gKwlpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHBsYW5lLCBuZXdfc3RhdGUpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZwbGFuZS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICt9Cj4gKwo+ICBj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVu Y3MgPSB7Cj4gIAkucHJlcGFyZV9mYiA9IGludGVsX3ByZXBhcmVfcGxhbmVfZmIsCj4gIAkuY2xl YW51cF9mYiA9IGludGVsX2NsZWFudXBfcGxhbmVfZmIsCj4gIAkuYXRvbWljX2NoZWNrID0gaW50 ZWxfcGxhbmVfYXRvbWljX2NoZWNrLAo+ICAJLmF0b21pY191cGRhdGUgPSBpbnRlbF9wbGFuZV9h dG9taWNfdXBkYXRlLAo+ICsJLmF0b21pY19hc3luY19jaGVjayA9IGludGVsX3BsYW5lX2F0b21p Y19hc3luY19jaGVjaywKPiArCS5hdG9taWNfYXN5bmNfdXBkYXRlID0gaW50ZWxfcGxhbmVfYXRv bWljX2FzeW5jX3VwZGF0ZSwKPiAgfTsKPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiBpbmRleCA2MzZjNjRlLi43MzYzMDFkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzAwNCw2ICsxMzAwNCwyNiBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCWludCByZXQgPSAw Owo+ICAKPiArCS8qCj4gKwkgKiBUaGUgYXRvbWljIGFzeW5jIHVwZGF0ZSBmYXN0IHBhdGggdGFr ZXMgY2FyZQo+ICsJICogb2YgYXZvaWRpbmcgdGhlIHZibGFuayB3YWl0cyBmb3Igc2ltcGxlIGN1 cnNvcgo+ICsJICogbW92ZW1lbnQgYW5kIGZsaXBzLiBGb3IgY3Vyc29yIG9uL29mZiBhbmQgc2l6 ZSBjaGFuZ2VzLAo+ICsJICogd2Ugd2FudCB0byBwZXJmb3JtIHRoZSB2Ymxhbmsgd2FpdHMgc28g dGhhdCB3YXRlcm1hcmsKPiArCSAqIHVwZGF0ZXMgaGFwcGVuIGR1cmluZyB0aGUgY29ycmVjdCBm cmFtZXMuIEdlbjkrIGhhdmUKPiArCSAqIGRvdWJsZSBidWZmZXJlZCB3YXRlcm1hcmtzIGFuZCBz byBzaG91bGRuJ3QgbmVlZCB0aGlzLgo+ICsJICovCj4gKwlpZiAoc3RhdGUtPmFzeW5jX3VwZGF0 ZSkgewo+ICsJCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IGRybV9h dG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICsJCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCQlkcm1fYXRvbWljX2hlbHBlcl9hc3luY19j b21taXQoZGV2LCBzdGF0ZSk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICAJcmV0ID0gZHJt X2F0b21pY19oZWxwZXJfc2V0dXBfY29tbWl0KHN0YXRlLCBub25ibG9jayk7Cj4gIAlpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gQEAgLTEzMTYyLDYgKzEzMTgyLDkgQEAgaW50ZWxfcHJlcGFy ZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQl9Cj4gIAl9Cj4gIAo+ICsJ aWYgKG5ld19zdGF0ZS0+c3RhdGUtPmFzeW5jX3VwZGF0ZSkKPiArCQlyZXR1cm4gMDsKPiArCj4g IAlpZiAoIW9iaiAmJiAhb2xkX29iaikKPiAgCQlyZXR1cm4gMDsKPiAgCj4gQEAgLTEzMzg5LDEz MiArMTM0MTIsOCBAQCBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX3BsYW5lX2Z1 bmNzID0gewo+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9z dGF0ZSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBpbnQKPiAtaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRh dGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gLQkJCSAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAtCQkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gLQkJCSAgIGludCBjcnRj X3gsIGludCBjcnRjX3ksCj4gLQkJCSAgIHVuc2lnbmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGlu dCBjcnRjX2gsCj4gLQkJCSAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKPiAtCQkJ ICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oLAo+IC0JCQkgICBzdHJ1Y3QgZHJtX21v ZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+IC0JaW50IHJldDsKPiAtCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwgKm5ld19wbGFuZV9zdGF0ZTsKPiAtCXN0 cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4g LQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmI7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUgPSBjcnRjLT5zdGF0ZTsKPiAtCXN0cnVjdCBpOTE1X3ZtYSAqb2xkX3Zt YTsKPiAtCj4gLQkvKgo+IC0JICogV2hlbiBjcnRjIGlzIGluYWN0aXZlIG9yIHRoZXJlIGlzIGEg bW9kZXNldCBwZW5kaW5nLAo+IC0JICogd2FpdCBmb3IgaXQgdG8gY29tcGxldGUgaW4gdGhlIHNs b3dwYXRoCj4gLQkgKi8KPiAtCWlmICghY3J0Y19zdGF0ZS0+YWN0aXZlIHx8IG5lZWRzX21vZGVz ZXQoY3J0Y19zdGF0ZSkgfHwKPiAtCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUp LT51cGRhdGVfcGlwZSkKPiAtCQlnb3RvIHNsb3c7Cj4gLQo+IC0Jb2xkX3BsYW5lX3N0YXRlID0g cGxhbmUtPnN0YXRlOwo+IC0KPiAtCS8qCj4gLQkgKiBJZiBhbnkgcGFyYW1ldGVycyBjaGFuZ2Ug dGhhdCBtYXkgYWZmZWN0IHdhdGVybWFya3MsCj4gLQkgKiB0YWtlIHRoZSBzbG93cGF0aC4gT25s eSBjaGFuZ2luZyBmYiBvciBwb3NpdGlvbiBzaG91bGQgYmUKPiAtCSAqIGluIHRoZSBmYXN0cGF0 aC4KPiAtCSAqLwo+IC0JaWYgKG9sZF9wbGFuZV9zdGF0ZS0+Y3J0YyAhPSBjcnRjIHx8Cj4gLQkg ICAgb2xkX3BsYW5lX3N0YXRlLT5zcmNfdyAhPSBzcmNfdyB8fAo+IC0JICAgIG9sZF9wbGFuZV9z dGF0ZS0+c3JjX2ggIT0gc3JjX2ggfHwKPiAtCSAgICBvbGRfcGxhbmVfc3RhdGUtPmNydGNfdyAh PSBjcnRjX3cgfHwKPiAtCSAgICBvbGRfcGxhbmVfc3RhdGUtPmNydGNfaCAhPSBjcnRjX2ggfHwK PiAtCSAgICAhb2xkX3BsYW5lX3N0YXRlLT5mYiAhPSAhZmIpCj4gLQkJZ290byBzbG93Owo+IC0K PiAtCW5ld19wbGFuZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSk7 Cj4gLQlpZiAoIW5ld19wbGFuZV9zdGF0ZSkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4gLQlk cm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUobmV3X3BsYW5lX3N0YXRlLCBmYik7Cj4gLQo+IC0J bmV3X3BsYW5lX3N0YXRlLT5zcmNfeCA9IHNyY194Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5zcmNf eSA9IHNyY195Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5zcmNfdyA9IHNyY193Owo+IC0JbmV3X3Bs YW5lX3N0YXRlLT5zcmNfaCA9IHNyY19oOwo+IC0JbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3ggPSBj cnRjX3g7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmNydGNfeSA9IGNydGNfeTsKPiAtCW5ld19wbGFu ZV9zdGF0ZS0+Y3J0Y193ID0gY3J0Y193Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5jcnRjX2ggPSBj cnRjX2g7Cj4gLQo+IC0JcmV0ID0gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUo dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSksCj4gLQkJCQkJCSAgdG9faW50ZWxfcGxh bmVfc3RhdGUobmV3X3BsYW5lX3N0YXRlKSk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X2Zy ZWU7Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X2ZyZWU7Cj4gLQo+IC0J aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpIHsKPiAtCQlp bnQgYWxpZ24gPSBJU19JODMwKGRldl9wcml2KSA/IDE2ICogMTAyNCA6IDI1NjsKPiAtCj4gLQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKGludGVsX2ZiX29iaihmYiksIGFsaWdu KTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhdHRhY2gg cGh5cyBvYmplY3RcbiIpOwo+IC0JCQlnb3RvIG91dF91bmxvY2s7Cj4gLQkJfQo+IC0JfSBlbHNl IHsKPiAtCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCj4gLQkJdm1hID0gaW50ZWxfcGluX2Fu ZF9mZW5jZV9mYl9vYmooZmIsIG5ld19wbGFuZV9zdGF0ZS0+cm90YXRpb24pOwo+IC0JCWlmIChJ U19FUlIodm1hKSkgewo+IC0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gcGluIG9iamVjdFxu Iik7Cj4gLQo+IC0JCQlyZXQgPSBQVFJfRVJSKHZtYSk7Cj4gLQkJCWdvdG8gb3V0X3VubG9jazsK PiAtCQl9Cj4gLQo+IC0JCXRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSktPnZt YSA9IHZtYTsKPiAtCX0KPiAtCj4gLQlvbGRfZmIgPSBvbGRfcGxhbmVfc3RhdGUtPmZiOwo+IC0J b2xkX3ZtYSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZSktPnZtYTsKPiAt Cj4gLQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoob2xkX2ZiKSwgaW50ZWxfZmJfb2Jq KGZiKSwKPiAtCQkJICBpbnRlbF9wbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKPiAtCj4gLQkvKiBT d2FwIHBsYW5lIHN0YXRlICovCj4gLQluZXdfcGxhbmVfc3RhdGUtPmZlbmNlID0gb2xkX3BsYW5l X3N0YXRlLT5mZW5jZTsKPiAtCSp0b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfcGxhbmVfc3RhdGUp ID0gKnRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSk7Cj4gLQluZXdfcGxhbmVf c3RhdGUtPmZlbmNlID0gTlVMTDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+ZmIgPSBvbGRfZmI7Cj4g LQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfcGxhbmVfc3RhdGUpLT52bWEgPSBvbGRfdm1hOwo+ IC0KPiAtCWlmIChwbGFuZS0+c3RhdGUtPnZpc2libGUpIHsKPiAtCQl0cmFjZV9pbnRlbF91cGRh dGVfcGxhbmUocGxhbmUsIHRvX2ludGVsX2NydGMoY3J0YykpOwo+IC0JCWludGVsX3BsYW5lLT51 cGRhdGVfcGxhbmUocGxhbmUsCj4gLQkJCQkJICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKSwKPiAtCQkJCQkgIHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSkpOwo+IC0J fSBlbHNlIHsKPiAtCQl0cmFjZV9pbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCB0b19pbnRlbF9j cnRjKGNydGMpKTsKPiAtCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0Yyk7 Cj4gLQl9Cj4gLQo+IC0JaW50ZWxfY2xlYW51cF9wbGFuZV9mYihwbGFuZSwgbmV3X3BsYW5lX3N0 YXRlKTsKPiAtCj4gLW91dF91bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKPiAtb3V0X2ZyZWU6Cj4gLQlpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRl KHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUpOwo+IC0JcmV0dXJuIHJldDsKPiAtCj4gLXNsb3c6Cj4g LQlyZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lKHBsYW5lLCBjcnRjLCBmYiwK PiAtCQkJCQkgICAgICBjcnRjX3gsIGNydGNfeSwgY3J0Y193LCBjcnRjX2gsCj4gLQkJCQkJICAg ICAgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gsIGN0eCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX2N1cnNvcl9wbGFuZV9mdW5jcyA9IHsK PiAtCS51cGRhdGVfcGxhbmUgPSBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZSwKPiArCS51cGRh dGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gIAkuZGlzYWJsZV9w bGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gIAkuZGVzdHJveSA9IGlu dGVsX3BsYW5lX2Rlc3Ryb3ksCj4gIAkuc2V0X3Byb3BlcnR5ID0gZHJtX2F0b21pY19oZWxwZXJf cGxhbmVfc2V0X3Byb3BlcnR5LAo+IC0tIAo+IDIuOS40Cj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4g ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==