From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 01/11] drm/i915: Use passed plane state for sprite planes. Date: Thu, 22 Oct 2015 14:58:19 +0200 Message-ID: <20151022125819.GS16848@phenom.ffwll.local> References: <1445514996-18733-1-git-send-email-maarten.lankhorst@linux.intel.com> <1445514996-18733-2-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by gabe.freedesktop.org (Postfix) with ESMTPS id 86CE1892AA for ; Thu, 22 Oct 2015 05:58:24 -0700 (PDT) Received: by wicfx6 with SMTP id fx6so134432489wic.1 for ; Thu, 22 Oct 2015 05:58:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445514996-18733-2-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjIsIDIwMTUgYXQgMDE6NTY6MjZQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gRG9uJ3QgdXNlIHBsYW5lLT5zdGF0ZSBkaXJlY3RseSwgdXNlIHRoZSBwb2lu dGVyIGZyb20gY29tbWl0X3BsYW5lLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hv cnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgIDggKystLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0ZTM1NTU3YmJkNDEuLjUx NzIyZTY1N2I5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTYzMSwxNiAr NjMxLDE2IEBAIHN0cnVjdCBpbnRlbF9wbGFuZSB7Cj4gIAkvKgo+ICAJICogTk9URTogRG8gbm90 IHBsYWNlIG5ldyBwbGFuZSBzdGF0ZSBmaWVsZHMgaGVyZSAoZS5nLiwgd2hlbiBhZGRpbmcKPiAg CSAqIG5ldyBwbGFuZSBwcm9wZXJ0aWVzKS4gIE5ldyBydW50aW1lIHN0YXRlIHNob3VsZCBub3cg YmUgcGxhY2VkIGluCj4gLQkgKiB0aGUgaW50ZWxfcGxhbmVfc3RhdGUgc3RydWN0dXJlIGFuZCBh Y2Nlc3NlZCB2aWEgZHJtX3BsYW5lLT5zdGF0ZS4KPiArCSAqIHRoZSBpbnRlbF9wbGFuZV9zdGF0 ZSBzdHJ1Y3R1cmUgYW5kIGFjY2Vzc2VkIHZpYSBwbGFuZV9zdGF0ZS4KPiAgCSAqLwo+ICAKPiAg CXZvaWQgKCp1cGRhdGVfcGxhbmUpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IC0JCQkgICAg IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ ICAJCQkgICAgIGludCBjcnRjX3gsIGludCBjcnRjX3ksCj4gIAkJCSAgICAgdW5zaWduZWQgaW50 IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiAgCQkJICAgICB1aW50MzJfdCB4LCB1aW50 MzJfdCB5LAo+IC0JCQkgICAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCk7Cj4gKwkJ CSAgICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oLAo+ICsJCQkgICAgIHN0cnVjdCBp bnRlbF9zY2FsZXIgKnNjYWxlcik7CgpUaGlzIGlzIGFuIHVnbHkgaGFjayBpbW8uIEJldHRlciB0 byBhZGQgdGhlIHNjYWxlciBwb2ludGVyIHRvIHRoZSBwbGFuZQpzdGF0ZSwgc2V0IGl0IGluIGNv bXB1dGVfY29uZmlnIG9uY2Ugd2UncmUgZG9uZSBhbmQgbm90IHBhc3MgaXQgYXJvdW5kCmxpa2Ug dGhpcy4gT3Igd2UgYWxzbyBwYXNzIGFyb3VuZCBhIHBvaW50ZXIgdG8gdGhlIHJpZ2h0IGNydGNf c3RhdGUuCgpBbHNvLCBpZiB3ZSBwYXNzIGFyb3VuZCBwbGFuZV9zdGF0ZSBJIHRoaW5rIGFsbCB0 aGUgY3J0Y194L3kvdy9oIGFuZCB4L3kKYW5kIHNyY194L3kvdy9oIHNob3VsZCBkaXNhcHBlYXIs IGZvciBhIHJlYWxseSBjbGVhbiB2ZnVuYyBpbnRlcmZhY2UuCi1EYW5pZWwKCj4gIAl2b2lkICgq ZGlzYWJsZV9wbGFuZSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgICAgIHN0cnVj dCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIAlpbnQgKCpjaGVja19wbGFuZSkoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCAyNTUxMzM1 YWRhMDQuLjU5OWQwMDFiMTQxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gQEAgLTE3OCwxNiArMTc4LDE5IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1za2xfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRj LAo+IC0JCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiArc2tsX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gKwkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUsCj4gIAkJIGludCBjcnRjX3gsIGludCBjcnRjX3ksCj4gIAkJIHVuc2ln bmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGludCBjcnRjX2gsCj4gIAkJIHVpbnQzMl90IHgsIHVp bnQzMl90IHksCj4gLQkJIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKPiArCQkgdWlu dDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oLAo+ICsJCSBzdHJ1Y3QgaW50ZWxfc2NhbGVyICpz Y2FsZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcm1fcGxhbmUtPmRldjsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUoZHJt X3BsYW5lKTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRj Owo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7 Cj4gIAljb25zdCBpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ICAJY29uc3QgaW50IHBs YW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lICsgMTsKPiBAQCAtMTk5LDggKzIwMiw2IEBAIHNrbF91 cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiAg CXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAgCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGMoY3J0Yykt PmNvbmZpZzsKPiAtCWludCBzY2FsZXJfaWQ7Cj4gIAo+ICAJcGxhbmVfY3RsID0gUExBTkVfQ1RM X0VOQUJMRSB8Cj4gIAkJUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiBAQCAtMjE5LDgg KzIyMCw2IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2Fs aWdubWVudChkZXYsIGZiLT5tb2RpZmllclswXSwKPiAgCQkJCQkgICAgICAgZmItPnBpeGVsX2Zv cm1hdCk7Cj4gIAo+IC0Jc2NhbGVyX2lkID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5l LT5zdGF0ZSktPnNjYWxlcl9pZDsKPiAtCj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ICAJ c3JjX3ctLTsKPiAgCXNyY19oLS07Cj4gQEAgLTI2MSwxMyArMjYwLDEzIEBAIHNrbF91cGRhdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPiAg Cj4gIAkvKiBwcm9ncmFtIHBsYW5lIHNjYWxlciAqLwo+IC0JaWYgKHNjYWxlcl9pZCA+PSAwKSB7 Cj4gKwlpZiAoc2NhbGVyKSB7Cj4gIAkJdWludDMyX3QgcHNfY3RybCA9IDA7Cj4gKwkJaW50IHNj YWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7Cj4gIAo+ICAJCURSTV9ERUJVR19LTVMo InBsYW5lID0gJWQgUFNfUExBTkVfU0VMKHBsYW5lKSA9IDB4JXhcbiIsIHBsYW5lLAo+ICAJCQlQ U19QTEFORV9TRUwocGxhbmUpKTsKPiAtCQlwc19jdHJsID0gUFNfU0NBTEVSX0VOIHwgUFNfUExB TkVfU0VMKHBsYW5lKSB8Cj4gLQkJCWNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJzW3Nj YWxlcl9pZF0ubW9kZTsKPiArCQlwc19jdHJsID0gUFNfU0NBTEVSX0VOIHwgUFNfUExBTkVfU0VM KHBsYW5lKSB8IHNjYWxlci0+bW9kZTsKPiAgCQlJOTE1X1dSSVRFKFNLTF9QU19DVFJMKHBpcGUs IHNjYWxlcl9pZCksIHBzX2N0cmwpOwo+ICAJCUk5MTVfV1JJVEUoU0tMX1BTX1BXUl9HQVRFKHBp cGUsIHNjYWxlcl9pZCksIDApOwo+ICAJCUk5MTVfV1JJVEUoU0tMX1BTX1dJTl9QT1MocGlwZSwg c2NhbGVyX2lkKSwgKGNydGNfeCA8PCAxNikgfCBjcnRjX3kpOwo+IEBAIC0zNDEsMTYgKzM0MCwx OCBAQCBjaHZfdXBkYXRlX2NzYyhzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lLCB1aW50 MzJfdCBmb3JtYXQpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICt2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKmRwbGFuZSwKPiArCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAgCQkgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiAgCQkgdW5zaWduZWQgaW50IGNydGNf dywgdW5zaWduZWQgaW50IGNydGNfaCwKPiAgCQkgdWludDMyX3QgeCwgdWludDMyX3QgeSwKPiAt CQkgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQo+ICsJCSB1aW50MzJfdCBzcmNfdywg dWludDMyX3Qgc3JjX2gsCj4gKwkJIHN0cnVjdCBpbnRlbF9zY2FsZXIgKnNjYWxlcikKPiAgewo+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcGxhbmUpOwo+ICsJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAgCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJaW50IHBpcGUg PSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZTsK PiBAQCAtNDgxLDE2ICs0ODIsMTkgQEAgdmx2X2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lk Cj4gLWl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAtCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gK2l2Yl91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJIHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAkJIGludCBjcnRjX3gsIGludCBjcnRjX3ksCj4gIAkJ IHVuc2lnbmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGludCBjcnRjX2gsCj4gIAkJIHVpbnQzMl90 IHgsIHVpbnQzMl90IHksCj4gLQkJIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKPiAr CQkgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oLAo+ICsJCSBzdHJ1Y3QgaW50ZWxfc2Nh bGVyICpzY2FsZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZSk7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0YzsK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCXUzMiBzcHJjdGwsIHNw cnNjYWxlID0gMDsKPiBAQCAtNjIzLDE2ICs2MjcsMTkgQEAgaXZiX2Rpc2FibGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQKPiAtaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwg c3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK PiAraWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkgaW50IGNydGNfeCwgaW50IGNy dGNfeSwKPiAgCQkgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiAg CQkgdWludDMyX3QgeCwgdWludDMyX3QgeSwKPiAtCQkgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90 IHNyY19oKQo+ICsJCSB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsCj4gKwkJIHN0cnVj dCBpbnRlbF9zY2FsZXIgKnNjYWxlcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IHBsYW5lLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lKTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5jcnRjOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2Zi X29iaihmYik7Cj4gIAlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ICAJdW5zaWduZWQg bG9uZyBkdnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKPiBAQCAtOTMyLDIzICs5MzksMzEg QEAgc3RhdGljIHZvaWQKPiAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICB7 Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+ICAJc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAtCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gLQo+IC0JY3J0YyA9 IGNydGMgPyBjcnRjIDogcGxhbmUtPmNydGM7Cj4gIAo+ICAJaWYgKHN0YXRlLT52aXNpYmxlKSB7 Cj4gLQkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZShwbGFuZSwgY3J0YywgZmIsCj4gKwkJc3Ry dWN0IGludGVsX3NjYWxlciAqc2NhbGVyID0gTlVMTDsKPiArCj4gKwkJaWYgKHN0YXRlLT5zY2Fs ZXJfaWQgPj0gMCkgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9 Cj4gKwkJCQl0b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpLT5jb25maWc7Cj4gKwo+ICsJ CQlzY2FsZXIgPSAmY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbc3RhdGUtPnNjYWxl cl9pZF07Cj4gKwkJfQo+ICsKPiArCQlpbnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lKHBsYW5lLCBz dGF0ZSwKPiAgCQkJCQkgIHN0YXRlLT5kc3QueDEsIHN0YXRlLT5kc3QueTEsCj4gIAkJCQkJICBk cm1fcmVjdF93aWR0aCgmc3RhdGUtPmRzdCksCj4gIAkJCQkJICBkcm1fcmVjdF9oZWlnaHQoJnN0 YXRlLT5kc3QpLAo+ICAJCQkJCSAgc3RhdGUtPnNyYy54MSA+PiAxNiwKPiAgCQkJCQkgIHN0YXRl LT5zcmMueTEgPj4gMTYsCj4gIAkJCQkJICBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPnNyYykgPj4g MTYsCj4gLQkJCQkJICBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5zcmMpID4+IDE2KTsKPiArCQkJ CQkgIGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPnNyYykgPj4gMTYsCj4gKwkJCQkJICBzY2FsZXIp Owo+ICAJfSBlbHNlIHsKPiAtCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0 Yyk7Cj4gKwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiArCj4g KwkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUocGxhbmUsIGNydGMgPzogcGxhbmUtPmNydGMp Owo+ICAJfQo+ICB9Cj4gIAo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=