From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v2 6/6] drm/i915: Add a cursor hack to allow converting legacy page flip to atomic, v3. Date: Tue, 13 Dec 2016 18:31:02 +0530 Message-ID: References: <1481204729-9058-1-git-send-email-maarten.lankhorst@linux.intel.com> <1481204729-9058-7-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst , Matthew Auld Cc: Intel Graphics Development , ML dri-devel List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiAxMi8xMi8yMDE2IDQ6MDQgUE0sIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IERv IHNvbWV0aGluZyBzaW1pbGFyIHRvIHZjNCwgb25seSBhbGxvdyB1cGRhdGluZyB0aGUgY3Vyc29y IHN0YXRlCj4gaW4tcGxhY2UgdGhyb3VnaCBhIGZhc3RwYXRoIHdoZW4gdGhlIHdhdGVybWFya3Mg YXJlIHVuYWZmZWN0ZWQuIFRoaXMKPiB3aWxsIGFsbG93IGN1cnNvciBtb3ZlbWVudCB0byBiZSBz bW9vdGgsIGJ1dCBjaGFuZ2luZyBjdXJzb3Igc2l6ZSBvcgo+IHNob3dpbmcvaGlkaW5nIGN1cnNv ciB3aWxsIHN0aWxsIGZhbGwgYmFjayBzbyB3YXRlcm1hcmtzIGNhbiBiZSB1cGRhdGVkLgo+Cj4g T25seSBtb3ZpbmcgYW5kIGNoYW5naW5nIGZiIGlzIGFsbG93ZWQuCgpJIHdhcyBpbXBsZW1lbnRp bmcgc29tZXRoaW5nIHNpbWlsYXIgZm9yIG1zbSBrbXMuIEkgaGF2ZSBhIGNvbW1lbnQvcXVlcnkK YmVsb3cuCgo+Cj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAtIFNldCBwYWdlIGZsaXAgdG8gYWx3YXlz X3VudXNlZCBmb3IgdHJ5Ym90Lgo+IC0gQ29weSBmZW5jZSBjb3JyZWN0bHksIGlnbm9yZSBwbGFu ZV9zdGF0ZS0+c3RhdGUsIHNob3VsZCBiZSBOVUxMLgo+IC0gQ2hlY2sgY3J0Y19zdGF0ZSBmb3Ig IWFjdGl2ZSBhbmQgbW9kZXNldCwgZ28gdG8gc2xvd3BhdGggaWYgdGhlIGNhc2UuCj4gQ2hhbmdl cyBzaW5jZSB2MjoKPiAtIE1ha2UgZXJyb3IgaGFuZGxpbmcgd29yayBjb3JyZWN0bHkuIChNYXR0 aGV3IEF1bGQpCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYyB8ICA0NyArKysrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgIDIg Kwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gaW5kZXggZGJl OWZiNDFhZTUzLi42MGQ3NWNlOGE5ODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYwo+IEBAIC0xMDMsMzYgKzEwMywyNCBAQCBpbnRlbF9wbGFuZV9kZXN0 cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJZHJtX2F0b21pY19oZWxwZXJf cGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwo+ICB9Cj4KPiAtc3RhdGljIGludCBp bnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gLQkJCQkg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK2ludCBpbnRlbF9wbGFuZV9hdG9t aWNfY2hlY2tfd2l0aF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiArCQkJCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3N0YXRlKQo+ICB7Cj4gKwlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IGludGVsX3N0YXRlLT5iYXNlLnBsYW5lOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKPiAt CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGM7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK PiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gJmludGVsX3N0YXRlLT5iYXNlOwo+ ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l KTsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9w bGFuZV9zdGF0ZShzdGF0ZSk7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmRybV9jcnRjX3N0 YXRlOwo+ICAJaW50IHJldDsKPgo+IC0JY3J0YyA9IGNydGMgPyBjcnRjIDogcGxhbmUtPnN0YXRl LT5jcnRjOwo+IC0JaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQo+ICAJLyoK PiAgCSAqIEJvdGggY3J0YyBhbmQgcGxhbmUtPmNydGMgY291bGQgYmUgTlVMTCBpZiB3ZSdyZSB1 cGRhdGluZyBhCj4gIAkgKiBwcm9wZXJ0eSB3aGlsZSB0aGUgcGxhbmUgaXMgZGlzYWJsZWQuICBX ZSBkb24ndCBhY3R1YWxseSBoYXZlCj4gIAkgKiBhbnl0aGluZyBkcml2ZXItc3BlY2lmaWMgd2Ug bmVlZCB0byB0ZXN0IGluIHRoYXQgY2FzZSwgc28KPiAgCSAqIGp1c3QgcmV0dXJuIHN1Y2Nlc3Mu Cj4gIAkgKi8KPiAtCWlmICghY3J0YykKPiArCWlmICghaW50ZWxfc3RhdGUtPmJhc2UuY3J0YyAm JiAhcGxhbmUtPnN0YXRlLT5jcnRjKQo+ICAJCXJldHVybiAwOwo+Cj4gLQlkcm1fY3J0Y19zdGF0 ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLCBjcnRj KTsKPiAtCWlmIChXQVJOX09OKCFkcm1fY3J0Y19zdGF0ZSkpCj4gLQkJcmV0dXJuIC1FSU5WQUw7 Cj4gLQo+IC0JY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoZHJtX2NydGNfc3RhdGUp Owo+IC0KPiAgCS8qIENsaXAgYWxsIHBsYW5lcyB0byBDUlRDIHNpemUsIG9yIDB4MCBpZiBDUlRD IGlzIGRpc2FibGVkICovCj4gIAlpbnRlbF9zdGF0ZS0+Y2xpcC54MSA9IDA7Cj4gIAlpbnRlbF9z dGF0ZS0+Y2xpcC55MSA9IDA7Cj4gQEAgLTE4NCw2ICsxNzIsMzEgQEAgc3RhdGljIGludCBpbnRl bF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlyZXR1cm4g aW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcygmY3J0Y19zdGF0ZS0+YmFzZSwgc3RhdGUp Owo+ICB9Cj4KPiArc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCj4gKwkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ICsJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpkcm1fY3J0Y19zdGF0ZTsKPiArCj4gKwljcnRjID0gY3J0YyA/IGNy dGMgOiBwbGFuZS0+c3RhdGUtPmNydGM7Cj4gKwo+ICsJLyoKPiArCSAqIEJvdGggY3J0YyBhbmQg cGxhbmUtPmNydGMgY291bGQgYmUgTlVMTCBpZiB3ZSdyZSB1cGRhdGluZyBhCj4gKwkgKiBwcm9w ZXJ0eSB3aGlsZSB0aGUgcGxhbmUgaXMgZGlzYWJsZWQuICBXZSBkb24ndCBhY3R1YWxseSBoYXZl Cj4gKwkgKiBhbnl0aGluZyBkcml2ZXItc3BlY2lmaWMgd2UgbmVlZCB0byB0ZXN0IGluIHRoYXQg Y2FzZSwgc28KPiArCSAqIGp1c3QgcmV0dXJuIHN1Y2Nlc3MuCj4gKwkgKi8KPiArCWlmICghY3J0 YykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlkcm1fY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLCBjcnRjKTsKPiArCWlmIChXQVJOX09O KCFkcm1fY3J0Y19zdGF0ZSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmV0dXJuIGlu dGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKHRvX2ludGVsX2NydGNfc3RhdGUoZHJt X2NydGNfc3RhdGUpLAo+ICsJCQkJCQkgICB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSkpOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xk X3N0YXRlKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDll YWYxZTViZGFlOS4uNTU2OGVjYWMyZWRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IEBAIC0xNTAyOCw2ICsxNTAyOCwxMzYgQEAgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKPiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gIH07Cj4KPiArc3RhdGljIGludAo+ICtpbnRl bF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJICAg c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKPiArCQkJICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiArCQkJICAgdW5zaWduZWQgaW50 IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiArCQkJICAgdWludDMyX3Qgc3JjX3gsIHVp bnQzMl90IHNyY195LAo+ICsJCQkgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ ZGV2KTsKPiArCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVf c3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq b2xkX2ZiOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gY3J0Yy0+c3Rh dGU7Cj4gKwo+ICsJLyoKPiArCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVyZSBpcyBh IG1vZGVzZXQgcGVuZGluZywKPiArCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIGluIHRoZSBz bG93cGF0aAo+ICsJICovCj4gKwlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSB8fCBuZWVkc19tb2Rl c2V0KGNydGNfc3RhdGUpIHx8Cj4gKwkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRl KS0+dXBkYXRlX3BpcGUpCj4gKwkJZ290byBzbG93Owo+ICsKPiArCW9sZF9wbGFuZV9zdGF0ZSA9 IHBsYW5lLT5zdGF0ZTsKPiArCj4gKwkvKgo+ICsJICogSWYgYW55IHBhcmFtZXRlcnMgY2hhbmdl IHRoYXQgbWF5IGFmZmVjdCB3YXRlcm1hcmtzLAo+ICsJICogdGFrZSB0aGUgc2xvd3BhdGguIE9u bHkgY2hhbmdpbmcgZmIgb3IgcG9zaXRpb24gc2hvdWxkIGJlCj4gKwkgKiBpbiB0aGUgZmFzdHBh dGguCj4gKwkgKi8KPiArCWlmIChvbGRfcGxhbmVfc3RhdGUtPmNydGMgIT0gY3J0YyB8fAo+ICsJ ICAgIG9sZF9wbGFuZV9zdGF0ZS0+c3JjX3cgIT0gc3JjX3cgfHwKPiArCSAgICBvbGRfcGxhbmVf c3RhdGUtPnNyY19oICE9IHNyY19oIHx8Cj4gKwkgICAgb2xkX3BsYW5lX3N0YXRlLT5jcnRjX3cg IT0gY3J0Y193IHx8Cj4gKwkgICAgb2xkX3BsYW5lX3N0YXRlLT5jcnRjX2ggIT0gY3J0Y19oIHx8 Cj4gKwkgICAgIW9sZF9wbGFuZV9zdGF0ZS0+dmlzaWJsZSB8fAo+ICsJICAgIG9sZF9wbGFuZV9z dGF0ZS0+ZmItPm1vZGlmaWVyICE9IGZiLT5tb2RpZmllcikKPiArCQlnb3RvIHNsb3c7Cj4gKwo+ ICsJbmV3X3BsYW5lX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lKTsK PiArCWlmICghbmV3X3BsYW5lX3N0YXRlKQo+ICsJCXJldHVybiAtRU5PTUVNOwoKQWJvdXQgY3Jl YXRpbmcgYSBuZXcgcGxhbmUgc3RhdGUgaGVyZSBhbmQgc3dhcHBpbmcgaXQgbGF0ZXIsIEkgZ3Vl c3MKaXQncyBtb3JlIGZvciB0aGUgc2FrZSBvZiBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0 aF9zdGF0ZSgpIHRvIGdvCnRocm91Z2ggY2xlYW5seSwgcmlnaHQ/IFJhdGhlciB0aGFuIGRpcmVj dGx5IG1vZGlmeWluZyB0aGUgb2xkIHBsYW5lCnN0YXRlPwoKSSBkaWRuJ3Qgc2VlIGFueXRoaW5n IGVxdWl2YWxlbnQgaW4gdmM0J3MgaW1wbGVtZW50YXRpb24gb2YKdXBkYXRlX3BsYW5lLCBoZW5j ZSB3YXMgd29uZGVyaW5nIHdoeSBleGFjdGx5IGl0IGlzIG5lZWRlZC4KCkFsc28sIGFib3V0IHVw ZGF0aW5nIGZiIGluIHRoZSBmYXN0IHBhdGgsIG15IGFzc3VtcHRpb24gd2FzCnRoYXQgaXQgd2Fz IG9ubHkgY3J0Y194L3kgd2FzIHRoZSB0aGluZyBtb3N0IGxpa2VseSB0byBiZQpjaGFuZ2VkIHJl YWxseSBmYXN0LiBIYXZlIHlvdSBzZWVuIHVzZSBjYXNlcyB3aGVyZSB0aGUgZmIKY2hhbmdlcyBh dCBhIGZhc3RlciB0aGFuIHZzeW5jIHJhdGU/CgpUaGFua3MsCkFyY2hpdAoKPiArCj4gKwlkcm1f YXRvbWljX3NldF9mYl9mb3JfcGxhbmUobmV3X3BsYW5lX3N0YXRlLCBmYik7Cj4gKwo+ICsJbmV3 X3BsYW5lX3N0YXRlLT5zcmNfeCA9IHNyY194Owo+ICsJbmV3X3BsYW5lX3N0YXRlLT5zcmNfeSA9 IHNyY195Owo+ICsJbmV3X3BsYW5lX3N0YXRlLT5zcmNfdyA9IHNyY193Owo+ICsJbmV3X3BsYW5l X3N0YXRlLT5zcmNfaCA9IHNyY19oOwo+ICsJbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3ggPSBjcnRj X3g7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPmNydGNfeSA9IGNydGNfeTsKPiArCW5ld19wbGFuZV9z dGF0ZS0+Y3J0Y193ID0gY3J0Y193Owo+ICsJbmV3X3BsYW5lX3N0YXRlLT5jcnRjX2ggPSBjcnRj X2g7Cj4gKwo+ICsJcmV0ID0gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUodG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSksCj4gKwkJCQkJCSAgdG9faW50ZWxfcGxhbmVf c3RhdGUobmV3X3BsYW5lX3N0YXRlKSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0X2ZyZWU7 Cj4gKwo+ICsJLyogVmlzaWJpbGl0eSBjaGFuZ2VkLCBtdXN0IHRha2Ugc2xvd3BhdGguICovCj4g KwlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+dmlzaWJsZSkKPiArCQlnb3RvIHNsb3dfZnJlZTsKPiAr Cj4gKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXRfZnJlZTsKPiArCj4gKwlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkgewo+ICsJCWludCBhbGln biA9IElTX0k4MzAoZGV2X3ByaXYpID8gMTYgKiAxMDI0IDogMjU2Owo+ICsKPiArCQlyZXQgPSBp OTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoaW50ZWxfZmJfb2JqKGZiKSwgYWxpZ24pOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGF0dGFjaCBwaHlzIG9i amVjdFxuIik7Cj4gKwkJCWdvdG8gb3V0X3VubG9jazsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+ICsJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNl X2ZiX29iaihmYiwgbmV3X3BsYW5lX3N0YXRlLT5yb3RhdGlvbik7Cj4gKwkJaWYgKElTX0VSUih2 bWEpKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBwaW4gb2JqZWN0XG4iKTsKPiAr Cj4gKwkJCXJldCA9IFBUUl9FUlIodm1hKTsKPiArCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCX0K PiArCX0KPiArCj4gKwlvbGRfZmIgPSBvbGRfcGxhbmVfc3RhdGUtPmZiOwo+ICsKPiArCWk5MTVf Z2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihvbGRfZmIpLCBpbnRlbF9mYl9vYmooZmIpLAo+ICsJ CQkgIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpOwo+ICsKPiArCS8qIFN3YXAgcGxhbmUg c3RhdGUgKi8KPiArCW5ld19wbGFuZV9zdGF0ZS0+ZmVuY2UgPSBvbGRfcGxhbmVfc3RhdGUtPmZl bmNlOwo+ICsJKnRvX2ludGVsX3BsYW5lX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZSkgPSAqdG9faW50 ZWxfcGxhbmVfc3RhdGUobmV3X3BsYW5lX3N0YXRlKTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+ZmVu Y2UgPSBOVUxMOwo+ICsJbmV3X3BsYW5lX3N0YXRlLT5mYiA9IG9sZF9mYjsKPiArCj4gKwlpbnRl bF9wbGFuZS0+dXBkYXRlX3BsYW5lKHBsYW5lLAo+ICsJCQkJICB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKSwKPiArCQkJCSAgdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRl KSk7Cj4gKwo+ICsJaW50ZWxfY2xlYW51cF9wbGFuZV9mYihwbGFuZSwgbmV3X3BsYW5lX3N0YXRl KTsKPiArCj4gK291dF91bmxvY2s6Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3Ry dWN0X211dGV4KTsKPiArb3V0X2ZyZWU6Cj4gKwlpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHBs YW5lLCBuZXdfcGxhbmVfc3RhdGUpOwo+ICsJcmV0dXJuIHJldDsKPiArCj4gK3Nsb3dfZnJlZToK PiArCWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4g K3Nsb3c6Cj4gKwlyZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lKHBsYW5lLCBj cnRjLCBmYiwKPiArCQkJCQkgICAgICBjcnRjX3gsIGNydGNfeSwgY3J0Y193LCBjcnRjX2gsCj4g KwkJCQkJICAgICAgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3Mg PSB7Cj4gKwkudXBkYXRlX3BsYW5lID0gaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUsCj4gKwku ZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gKwkuZGVz dHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gKwkuc2V0X3Byb3BlcnR5ID0gZHJtX2F0b21p Y19oZWxwZXJfcGxhbmVfc2V0X3Byb3BlcnR5LAo+ICsJLmF0b21pY19nZXRfcHJvcGVydHkgPSBp bnRlbF9wbGFuZV9hdG9taWNfZ2V0X3Byb3BlcnR5LAo+ICsJLmF0b21pY19zZXRfcHJvcGVydHkg PSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ICsJLmF0b21pY19kdXBsaWNhdGVf c3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ICt9Owo+ICsKPiAgc3RhdGljIHN0 cnVjdCBpbnRlbF9wbGFuZSAqCj4gIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIHsKPiBAQCAtMTUy NzQsNyArMTU0MDQsNyBAQCBpbnRlbF9jdXJzb3JfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAljdXJzb3ItPmRpc2FibGVf cGxhbmUgPSBpbnRlbF9kaXNhYmxlX2N1cnNvcl9wbGFuZTsKPgo+ICAJcmV0ID0gZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmY3Vyc29yLT5iYXNlLAo+IC0JCQkJICAg ICAgIDAsICZpbnRlbF9wbGFuZV9mdW5jcywKPiArCQkJCSAgICAgICAwLCAmaW50ZWxfY3Vyc29y X3BsYW5lX2Z1bmNzLAo+ICAJCQkJICAgICAgIGludGVsX2N1cnNvcl9mb3JtYXRzLAo+ICAJCQkJ ICAgICAgIEFSUkFZX1NJWkUoaW50ZWxfY3Vyc29yX2Zvcm1hdHMpLAo+ICAJCQkJICAgICAgIERS TV9QTEFORV9UWVBFX0NVUlNPUiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDhm NGRkY2EwZjUyMS4uOGI2ZjM5NTA2ZDQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBAQCAtMTg0NCw2ICsxODQ0LDggQEAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxh bmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPiAgdm9pZCBpbnRl bF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgICAg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzOwo+ICtpbnQg aW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gKwkJCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9z dGF0ZSk7Cj4KPiAgLyogaW50ZWxfY29sb3IuYyAqLwo+ICB2b2lkIGludGVsX2NvbG9yX2luaXQo c3RydWN0IGRybV9jcnRjICpjcnRjKTsKPgoKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRp b24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=