From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH 1/4] drm/exynos: remove struct *_win_data abstraction on planes Date: Fri, 6 Feb 2015 10:45:34 -0200 Message-ID: <20150206124534.GF21463@joana> References: <1423159199-16394-1-git-send-email-gustavo@padovan.org> <54D44084.3030308@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <54D44084.3030308@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Joonyoung Shim Cc: linux-samsung-soc@vger.kernel.org, Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org SGksCgoyMDE1LTAyLTA2IEpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT46 Cgo+IEhpIEd1c3Rhdm8sCj4gCj4gT24gMDIvMDYvMjAxNSAwMjo1OSBBTSwgR3VzdGF2byBQYWRv dmFuIHdyb3RlOgo+ID4gRnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29s bGFib3JhLmNvLnVrPgo+ID4gCj4gPiBzdHJ1Y3Qge2ZpbWQsbWl4ZXIsdmlkaX1fd2luX2RhdGEg d2FzIGp1c3Qga2VlcGluZyB0aGUgc2FtZSBkYXRhCj4gPiBhcyBzdHJ1Y3QgZXh5bm9zX2RybV9w bGFuZSB0aHVzIGdldCByaWRlIG9mIGl0IGFuZCB1c2UgZXh5bm9zX2RybV9wbGFuZQo+ID4gZGly ZWN0bHkuCj4gPiAKPiA+IEl0IGNoYW5nZXMgaG93IHBsYW5lcyBhcmUgY3JlYXRlZCBhbmQgcmVt b3ZlIC53aW5fbW9kZV9zZXQoKSBjYWxsYmFjawo+ID4gdGhhdCB3YXMgb25seSBmaWxsaW5nIGFs bCAqX3dpbl9kYXRhIHN0cnVjdHMuCj4gPiAKPiAKPiBPSywgbGV0J3MgZ28gYWhlYWQgdGhpcyB3 aXRoIG5leHQgenBvcyBwcm9ibGVtIGZpeC4KPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8g UGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KPiA+IC0tLQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmMgIHwgICA5ICstCj4gPiAgZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuaCAgfCAgIDEgKwo+ID4gIGRyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyAgIHwgIDE0IC0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oICAgfCAgIDUgKy0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jICB8IDE4MiArKysrKysrKysrLS0tLS0t LS0tLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMg fCAgMjAgKy0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmgg fCAgIDYgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jICB8 IDEyMyArKysrKy0tLS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X21peGVyLmMgICAgIHwgMjEyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIDkg ZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDM4OSBkZWxldGlvbnMoLSkKPiA+IAo+ IAo+IFtzbmlwXQo+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX21peGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jCj4gPiBp bmRleCA3MzYyNjlhLi42ZTdjMGNjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfbWl4ZXIuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfbWl4ZXIuYwo+ID4gQEAgLTM3LDM0ICszNywxMyBAQAo+ID4gIAo+ID4gICNpbmNsdWRlICJl eHlub3NfZHJtX2Rydi5oIgo+ID4gICNpbmNsdWRlICJleHlub3NfZHJtX2NydGMuaCIKPiA+ICsj aW5jbHVkZSAiZXh5bm9zX2RybV9wbGFuZS5oIgo+ID4gICNpbmNsdWRlICJleHlub3NfZHJtX2lv bW11LmgiCj4gPiAgI2luY2x1ZGUgImV4eW5vc19taXhlci5oIgo+ID4gIAo+ID4gICNkZWZpbmUg TUlYRVJfV0lOX05SCQkzCj4gPiAgI2RlZmluZSBNSVhFUl9ERUZBVUxUX1dJTgkwCj4gPiAgCj4g PiAtc3RydWN0IGhkbWlfd2luX2RhdGEgewo+ID4gLQlkbWFfYWRkcl90CQlkbWFfYWRkcjsKPiA+ IC0JZG1hX2FkZHJfdAkJY2hyb21hX2RtYV9hZGRyOwo+ID4gLQl1aW50MzJfdAkJcGl4ZWxfZm9y bWF0Owo+ID4gLQl1bnNpZ25lZCBpbnQJCWJwcDsKPiA+IC0JdW5zaWduZWQgaW50CQljcnRjX3g7 Cj4gPiAtCXVuc2lnbmVkIGludAkJY3J0Y195Owo+ID4gLQl1bnNpZ25lZCBpbnQJCWNydGNfd2lk dGg7Cj4gPiAtCXVuc2lnbmVkIGludAkJY3J0Y19oZWlnaHQ7Cj4gPiAtCXVuc2lnbmVkIGludAkJ ZmJfeDsKPiA+IC0JdW5zaWduZWQgaW50CQlmYl95Owo+ID4gLQl1bnNpZ25lZCBpbnQJCWZiX3dp ZHRoOwo+ID4gLQl1bnNpZ25lZCBpbnQJCWZiX2hlaWdodDsKPiA+IC0JdW5zaWduZWQgaW50CQlz cmNfd2lkdGg7Cj4gPiAtCXVuc2lnbmVkIGludAkJc3JjX2hlaWdodDsKPiA+IC0JdW5zaWduZWQg aW50CQltb2RlX3dpZHRoOwo+ID4gLQl1bnNpZ25lZCBpbnQJCW1vZGVfaGVpZ2h0Owo+ID4gLQl1 bnNpZ25lZCBpbnQJCXNjYW5fZmxhZ3M7Cj4gPiAtCWJvb2wJCQllbmFibGVkOwo+ID4gLQlib29s CQkJcmVzdW1lOwo+ID4gLX07Cj4gPiAtCj4gPiAgc3RydWN0IG1peGVyX3Jlc291cmNlcyB7Cj4g PiAgCWludAkJCWlycTsKPiA+ICAJdm9pZCBfX2lvbWVtCQkqbWl4ZXJfcmVnczsKPiA+IEBAIC04 OCw2ICs2Nyw3IEBAIHN0cnVjdCBtaXhlcl9jb250ZXh0IHsKPiA+ICAJc3RydWN0IGRldmljZQkJ KmRldjsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UJKmRybV9kZXY7Cj4gPiAgCXN0cnVjdCBleHlu b3NfZHJtX2NydGMJKmNydGM7Cj4gPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCXBsYW5lc1tN SVhFUl9XSU5fTlJdOwo+ID4gIAlpbnQJCQlwaXBlOwo+ID4gIAlib29sCQkJaW50ZXJsYWNlOwo+ ID4gIAlib29sCQkJcG93ZXJlZDsKPiA+IEBAIC05Nyw3ICs3Nyw2IEBAIHN0cnVjdCBtaXhlcl9j b250ZXh0IHsKPiA+ICAKPiA+ICAJc3RydWN0IG11dGV4CQltaXhlcl9tdXRleDsKPiA+ICAJc3Ry dWN0IG1peGVyX3Jlc291cmNlcwltaXhlcl9yZXM7Cj4gPiAtCXN0cnVjdCBoZG1pX3dpbl9kYXRh CXdpbl9kYXRhW01JWEVSX1dJTl9OUl07Cj4gPiAgCWVudW0gbWl4ZXJfdmVyc2lvbl9pZAlteHJf dmVyOwo+ID4gIAl3YWl0X3F1ZXVlX2hlYWRfdAl3YWl0X3ZzeW5jX3F1ZXVlOwo+ID4gIAlhdG9t aWNfdAkJd2FpdF92c3luY19ldmVudDsKPiA+IEBAIC00MDEsNyArMzgwLDcgQEAgc3RhdGljIHZv aWQgdnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGludCB3aW4pCj4g PiAgewo+ID4gIAlzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzICpyZXMgPSAmY3R4LT5taXhlcl9yZXM7 Cj4gPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiAtCXN0cnVjdCBoZG1pX3dpbl9kYXRhICp3 aW5fZGF0YTsKPiA+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwo+ID4gIAl1bnNp Z25lZCBpbnQgeF9yYXRpbywgeV9yYXRpbzsKPiA+ICAJdW5zaWduZWQgaW50IGJ1Zl9udW0gPSAx Owo+ID4gIAlkbWFfYWRkcl90IGx1bWFfYWRkclsyXSwgY2hyb21hX2FkZHJbMl07Cj4gPiBAQCAt NDA5LDkgKzM4OCw5IEBAIHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJf Y29udGV4dCAqY3R4LCBpbnQgd2luKQo+ID4gIAlib29sIGNyY2JfbW9kZSA9IGZhbHNlOwo+ID4g IAl1MzIgdmFsOwo+ID4gIAo+ID4gLQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW3dpbl07Cj4g PiArCXBsYW5lID0gJmN0eC0+cGxhbmVzW3dpbl07Cj4gPiAgCj4gPiAtCXN3aXRjaCAod2luX2Rh dGEtPnBpeGVsX2Zvcm1hdCkgewo+ID4gKwlzd2l0Y2ggKHBsYW5lLT5waXhlbF9mb3JtYXQpIHsK PiA+ICAJY2FzZSBEUk1fRk9STUFUX05WMTJNVDoKPiA+ICAJCXRpbGVkX21vZGUgPSB0cnVlOwo+ ID4gIAljYXNlIERSTV9GT1JNQVRfTlYxMjoKPiA+IEBAIC00MjEsMzUgKzQwMCwzNSBAQCBzdGF0 aWMgdm9pZCB2cF92aWRlb19idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdp bikKPiA+ICAJLyogVE9ETzogc2luZ2xlIGJ1ZmZlciBmb3JtYXQgTlYxMiwgTlYyMSAqLwo+ID4g IAlkZWZhdWx0Ogo+ID4gIAkJLyogaWdub3JlIHBpeGVsIGZvcm1hdCBhdCBkaXNhYmxlIHRpbWUg Ki8KPiA+IC0JCWlmICghd2luX2RhdGEtPmRtYV9hZGRyKQo+ID4gKwkJaWYgKCFwbGFuZS0+ZG1h X2FkZHJbMF0pCj4gPiAgCQkJYnJlYWs7Cj4gPiAgCj4gPiAgCQlEUk1fRVJST1IoInBpeGVsIGZv cm1hdCBmb3IgdnAgaXMgd3JvbmcgWyVkXS5cbiIsCj4gPiAtCQkJCXdpbl9kYXRhLT5waXhlbF9m b3JtYXQpOwo+ID4gKwkJCQlwbGFuZS0+cGl4ZWxfZm9ybWF0KTsKPiA+ICAJCXJldHVybjsKPiA+ ICAJfQo+ID4gIAo+ID4gIAkvKiBzY2FsaW5nIGZlYXR1cmU6IChzcmMgPDwgMTYpIC8gZHN0ICov Cj4gPiAtCXhfcmF0aW8gPSAod2luX2RhdGEtPnNyY193aWR0aCA8PCAxNikgLyB3aW5fZGF0YS0+ Y3J0Y193aWR0aDsKPiA+IC0JeV9yYXRpbyA9ICh3aW5fZGF0YS0+c3JjX2hlaWdodCA8PCAxNikg LyB3aW5fZGF0YS0+Y3J0Y19oZWlnaHQ7Cj4gPiArCXhfcmF0aW8gPSAocGxhbmUtPnNyY193aWR0 aCA8PCAxNikgLyBwbGFuZS0+Y3J0Y193aWR0aDsKPiA+ICsJeV9yYXRpbyA9IChwbGFuZS0+c3Jj X2hlaWdodCA8PCAxNikgLyBwbGFuZS0+Y3J0Y19oZWlnaHQ7Cj4gPiAgCj4gPiAgCWlmIChidWZf bnVtID09IDIpIHsKPiA+IC0JCWx1bWFfYWRkclswXSA9IHdpbl9kYXRhLT5kbWFfYWRkcjsKPiA+ IC0JCWNocm9tYV9hZGRyWzBdID0gd2luX2RhdGEtPmNocm9tYV9kbWFfYWRkcjsKPiA+ICsJCWx1 bWFfYWRkclswXSA9IHBsYW5lLT5kbWFfYWRkclswXTsKPiA+ICsJCWNocm9tYV9hZGRyWzBdID0g cGxhbmUtPmRtYV9hZGRyWzFdOwo+ID4gIAl9IGVsc2Ugewo+ID4gLQkJbHVtYV9hZGRyWzBdID0g d2luX2RhdGEtPmRtYV9hZGRyOwo+ID4gLQkJY2hyb21hX2FkZHJbMF0gPSB3aW5fZGF0YS0+ZG1h X2FkZHIKPiA+IC0JCQkrICh3aW5fZGF0YS0+ZmJfd2lkdGggKiB3aW5fZGF0YS0+ZmJfaGVpZ2h0 KTsKPiA+ICsJCWx1bWFfYWRkclswXSA9IHBsYW5lLT5kbWFfYWRkclswXTsKPiA+ICsJCWNocm9t YV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdCj4gPiArCQkJKyAocGxhbmUtPmZiX3dpZHRo ICogcGxhbmUtPmZiX2hlaWdodCk7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWYgKHdpbl9kYXRhLT5z Y2FuX2ZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiA+ICsJaWYgKHBsYW5lLT5z Y2FuX2ZsYWcgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewo+ID4gIAkJY3R4LT5pbnRlcmxh Y2UgPSB0cnVlOwo+ID4gIAkJaWYgKHRpbGVkX21vZGUpIHsKPiA+ICAJCQlsdW1hX2FkZHJbMV0g PSBsdW1hX2FkZHJbMF0gKyAweDQwOwo+ID4gIAkJCWNocm9tYV9hZGRyWzFdID0gY2hyb21hX2Fk ZHJbMF0gKyAweDQwOwo+ID4gIAkJfSBlbHNlIHsKPiA+IC0JCQlsdW1hX2FkZHJbMV0gPSBsdW1h X2FkZHJbMF0gKyB3aW5fZGF0YS0+ZmJfd2lkdGg7Cj4gPiAtCQkJY2hyb21hX2FkZHJbMV0gPSBj aHJvbWFfYWRkclswXSArIHdpbl9kYXRhLT5mYl93aWR0aDsKPiA+ICsJCQlsdW1hX2FkZHJbMV0g PSBsdW1hX2FkZHJbMF0gKyBwbGFuZS0+ZmJfd2lkdGg7Cj4gPiArCQkJY2hyb21hX2FkZHJbMV0g PSBjaHJvbWFfYWRkclswXSArIHBsYW5lLT5mYl93aWR0aDsKPiA+ICAJCX0KPiA+ICAJfSBlbHNl IHsKPiA+ICAJCWN0eC0+aW50ZXJsYWNlID0gZmFsc2U7Cj4gPiBAQCAtNDcwLDI2ICs0NDksMjYg QEAgc3RhdGljIHZvaWQgdnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgs IGludCB3aW4pCj4gPiAgCXZwX3JlZ193cml0ZW1hc2socmVzLCBWUF9NT0RFLCB2YWwsIFZQX01P REVfRk1UX01BU0spOwo+ID4gIAo+ID4gIAkvKiBzZXR0aW5nIHNpemUgb2YgaW5wdXQgaW1hZ2Ug Ki8KPiA+IC0JdnBfcmVnX3dyaXRlKHJlcywgVlBfSU1HX1NJWkVfWSwgVlBfSU1HX0hTSVpFKHdp bl9kYXRhLT5mYl93aWR0aCkgfAo+ID4gLQkJVlBfSU1HX1ZTSVpFKHdpbl9kYXRhLT5mYl9oZWln aHQpKTsKPiA+ICsJdnBfcmVnX3dyaXRlKHJlcywgVlBfSU1HX1NJWkVfWSwgVlBfSU1HX0hTSVpF KHBsYW5lLT5mYl93aWR0aCkgfAo+ID4gKwkJVlBfSU1HX1ZTSVpFKHBsYW5lLT5mYl9oZWlnaHQp KTsKPiA+ICAJLyogY2hyb21hIGhlaWdodCBoYXMgdG8gcmVkdWNlZCBieSAyIHRvIGF2b2lkIGNo cm9tYSBkaXN0b3Jpb25zICovCj4gPiAtCXZwX3JlZ193cml0ZShyZXMsIFZQX0lNR19TSVpFX0Ms IFZQX0lNR19IU0laRSh3aW5fZGF0YS0+ZmJfd2lkdGgpIHwKPiA+IC0JCVZQX0lNR19WU0laRSh3 aW5fZGF0YS0+ZmJfaGVpZ2h0IC8gMikpOwo+ID4gKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9JTUdf U0laRV9DLCBWUF9JTUdfSFNJWkUocGxhbmUtPmZiX3dpZHRoKSB8Cj4gPiArCQlWUF9JTUdfVlNJ WkUocGxhbmUtPmZiX2hlaWdodCAvIDIpKTsKPiA+ICAKPiA+IC0JdnBfcmVnX3dyaXRlKHJlcywg VlBfU1JDX1dJRFRILCB3aW5fZGF0YS0+c3JjX3dpZHRoKTsKPiA+IC0JdnBfcmVnX3dyaXRlKHJl cywgVlBfU1JDX0hFSUdIVCwgd2luX2RhdGEtPnNyY19oZWlnaHQpOwo+ID4gKwl2cF9yZWdfd3Jp dGUocmVzLCBWUF9TUkNfV0lEVEgsIHBsYW5lLT5zcmNfd2lkdGgpOwo+ID4gKwl2cF9yZWdfd3Jp dGUocmVzLCBWUF9TUkNfSEVJR0hULCBwbGFuZS0+c3JjX2hlaWdodCk7Cj4gPiAgCXZwX3JlZ193 cml0ZShyZXMsIFZQX1NSQ19IX1BPU0lUSU9OLAo+ID4gLQkJCVZQX1NSQ19IX1BPU0lUSU9OX1ZB TCh3aW5fZGF0YS0+ZmJfeCkpOwo+ID4gLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfVl9QT1NJ VElPTiwgd2luX2RhdGEtPmZiX3kpOwo+ID4gKwkJCVZQX1NSQ19IX1BPU0lUSU9OX1ZBTChwbGFu ZS0+ZmJfeCkpOwo+ID4gKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfVl9QT1NJVElPTiwgcGxh bmUtPmZiX3kpOwo+ID4gIAo+ID4gLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfV0lEVEgsIHdp bl9kYXRhLT5jcnRjX3dpZHRoKTsKPiA+IC0JdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hfUE9T SVRJT04sIHdpbl9kYXRhLT5jcnRjX3gpOwo+ID4gKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1Rf V0lEVEgsIHBsYW5lLT5jcnRjX3dpZHRoKTsKPiA+ICsJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNU X0hfUE9TSVRJT04sIHBsYW5lLT5jcnRjX3gpOwo+ID4gIAlpZiAoY3R4LT5pbnRlcmxhY2UpIHsK PiA+IC0JCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IRUlHSFQsIHdpbl9kYXRhLT5jcnRjX2hl aWdodCAvIDIpOwo+ID4gLQkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX1ZfUE9TSVRJT04sIHdp bl9kYXRhLT5jcnRjX3kgLyAyKTsKPiA+ICsJCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IRUlH SFQsIHBsYW5lLT5jcnRjX2hlaWdodCAvIDIpOwo+ID4gKwkJdnBfcmVnX3dyaXRlKHJlcywgVlBf RFNUX1ZfUE9TSVRJT04sIHBsYW5lLT5jcnRjX3kgLyAyKTsKPiA+ICAJfSBlbHNlIHsKPiA+IC0J CXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IRUlHSFQsIHdpbl9kYXRhLT5jcnRjX2hlaWdodCk7 Cj4gPiAtCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfVl9QT1NJVElPTiwgd2luX2RhdGEtPmNy dGNfeSk7Cj4gPiArCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfSEVJR0hULCBwbGFuZS0+Y3J0 Y19oZWlnaHQpOwo+ID4gKwkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX1ZfUE9TSVRJT04sIHBs YW5lLT5jcnRjX3kpOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCXZwX3JlZ193cml0ZShyZXMsIFZQX0hf UkFUSU8sIHhfcmF0aW8pOwo+ID4gQEAgLTUwMyw4ICs0ODIsOCBAQCBzdGF0aWMgdm9pZCB2cF92 aWRlb19idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKPiA+ICAJdnBf cmVnX3dyaXRlKHJlcywgVlBfVE9QX0NfUFRSLCBjaHJvbWFfYWRkclswXSk7Cj4gPiAgCXZwX3Jl Z193cml0ZShyZXMsIFZQX0JPVF9DX1BUUiwgY2hyb21hX2FkZHJbMV0pOwo+ID4gIAo+ID4gLQlt aXhlcl9jZmdfc2NhbihjdHgsIHdpbl9kYXRhLT5tb2RlX2hlaWdodCk7Cj4gPiAtCW1peGVyX2Nm Z19yZ2JfZm10KGN0eCwgd2luX2RhdGEtPm1vZGVfaGVpZ2h0KTsKPiA+ICsJbWl4ZXJfY2ZnX3Nj YW4oY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwo+ID4gKwltaXhlcl9jZmdfcmdiX2ZtdChjdHgs IHBsYW5lLT5tb2RlX2hlaWdodCk7Cj4gPiAgCW1peGVyX2NmZ19sYXllcihjdHgsIHdpbiwgdHJ1 ZSk7Cj4gPiAgCW1peGVyX3J1bihjdHgpOwo+ID4gIAo+ID4gQEAgLTUyNSwyMSArNTA0LDIxIEBA IHN0YXRpYyB2b2lkIG1peGVyX2dyYXBoX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4 LCBpbnQgd2luKQo+ID4gIHsKPiA+ICAJc3RydWN0IG1peGVyX3Jlc291cmNlcyAqcmVzID0gJmN0 eC0+bWl4ZXJfcmVzOwo+ID4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gLQlzdHJ1Y3QgaGRt aV93aW5fZGF0YSAqd2luX2RhdGE7Cj4gPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFu ZTsKPiA+ICAJdW5zaWduZWQgaW50IHhfcmF0aW8sIHlfcmF0aW87Cj4gPiAgCXVuc2lnbmVkIGlu dCBzcmNfeF9vZmZzZXQsIHNyY195X29mZnNldCwgZHN0X3hfb2Zmc2V0LCBkc3RfeV9vZmZzZXQ7 Cj4gPiAgCWRtYV9hZGRyX3QgZG1hX2FkZHI7Cj4gPiAgCXVuc2lnbmVkIGludCBmbXQ7Cj4gPiAg CXUzMiB2YWw7Cj4gPiAgCj4gPiAtCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKPiA+ ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKPiA+ICAKPiA+ICAJI2RlZmluZSBSR0I1NjUg NAo+ID4gIAkjZGVmaW5lIEFSR0IxNTU1IDUKPiA+ICAJI2RlZmluZSBBUkdCNDQ0NCA2Cj4gPiAg CSNkZWZpbmUgQVJHQjg4ODggNwo+ID4gIAo+ID4gLQlzd2l0Y2ggKHdpbl9kYXRhLT5icHApIHsK PiA+ICsJc3dpdGNoIChwbGFuZS0+YnBwKSB7Cj4gPiAgCWNhc2UgMTY6Cj4gPiAgCQlmbXQgPSBB UkdCNDQ0NDsKPiA+ICAJCWJyZWFrOwo+ID4gQEAgLTU1NCwxNyArNTMzLDE3IEBAIHN0YXRpYyB2 b2lkIG1peGVyX2dyYXBoX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2lu KQo+ID4gIAl4X3JhdGlvID0gMDsKPiA+ICAJeV9yYXRpbyA9IDA7Cj4gPiAgCj4gPiAtCWRzdF94 X29mZnNldCA9IHdpbl9kYXRhLT5jcnRjX3g7Cj4gPiAtCWRzdF95X29mZnNldCA9IHdpbl9kYXRh LT5jcnRjX3k7Cj4gPiArCWRzdF94X29mZnNldCA9IHBsYW5lLT5jcnRjX3g7Cj4gPiArCWRzdF95 X29mZnNldCA9IHBsYW5lLT5jcnRjX3k7Cj4gPiAgCj4gPiAgCS8qIGNvbnZlcnRpbmcgZG1hIGFk ZHJlc3MgYmFzZSBhbmQgc291cmNlIG9mZnNldCAqLwo+ID4gLQlkbWFfYWRkciA9IHdpbl9kYXRh LT5kbWFfYWRkcgo+ID4gLQkJKyAod2luX2RhdGEtPmZiX3ggKiB3aW5fZGF0YS0+YnBwID4+IDMp Cj4gPiAtCQkrICh3aW5fZGF0YS0+ZmJfeSAqIHdpbl9kYXRhLT5mYl93aWR0aCAqIHdpbl9kYXRh LT5icHAgPj4gMyk7Cj4gPiArCWRtYV9hZGRyID0gcGxhbmUtPmRtYV9hZGRyWzBdCj4gPiArCQkr IChwbGFuZS0+ZmJfeCAqIHBsYW5lLT5icHAgPj4gMykKPiA+ICsJCSsgKHBsYW5lLT5mYl95ICog cGxhbmUtPmZiX3dpZHRoICogcGxhbmUtPmJwcCA+PiAzKTsKPiA+ICAJc3JjX3hfb2Zmc2V0ID0g MDsKPiA+ICAJc3JjX3lfb2Zmc2V0ID0gMDsKPiA+ICAKPiA+IC0JaWYgKHdpbl9kYXRhLT5zY2Fu X2ZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gPiArCWlmIChwbGFuZS0+c2Nhbl9m bGFnICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gPiAgCQljdHgtPmludGVybGFjZSA9IHRy dWU7Cj4gPiAgCWVsc2UKPiA+ICAJCWN0eC0+aW50ZXJsYWNlID0gZmFsc2U7Cj4gPiBAQCAtNTc3 LDE4ICs1NTYsMTggQEAgc3RhdGljIHZvaWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhl cl9jb250ZXh0ICpjdHgsIGludCB3aW4pCj4gPiAgCQlNWFJfR1JQX0NGR19GT1JNQVRfVkFMKGZt dCksIE1YUl9HUlBfQ0ZHX0ZPUk1BVF9NQVNLKTsKPiA+ICAKPiA+ICAJLyogc2V0dXAgZ2VvbWV0 cnkgKi8KPiA+IC0JbWl4ZXJfcmVnX3dyaXRlKHJlcywgTVhSX0dSQVBISUNfU1BBTih3aW4pLCB3 aW5fZGF0YS0+ZmJfd2lkdGgpOwo+ID4gKwltaXhlcl9yZWdfd3JpdGUocmVzLCBNWFJfR1JBUEhJ Q19TUEFOKHdpbiksIHBsYW5lLT5mYl93aWR0aCk7Cj4gPiAgCj4gPiAgCS8qIHNldHVwIGRpc3Bs YXkgc2l6ZSAqLwo+ID4gIAlpZiAoY3R4LT5teHJfdmVyID09IE1YUl9WRVJfMTI4XzBfMF8xODQg JiYKPiA+ICAJCXdpbiA9PSBNSVhFUl9ERUZBVUxUX1dJTikgewo+ID4gLQkJdmFsICA9IE1YUl9N WFJfUkVTX0hFSUdIVCh3aW5fZGF0YS0+ZmJfaGVpZ2h0KTsKPiA+IC0JCXZhbCB8PSBNWFJfTVhS X1JFU19XSURUSCh3aW5fZGF0YS0+ZmJfd2lkdGgpOwo+ID4gKwkJdmFsICA9IE1YUl9NWFJfUkVT X0hFSUdIVChwbGFuZS0+ZmJfaGVpZ2h0KTsKPiA+ICsJCXZhbCB8PSBNWFJfTVhSX1JFU19XSURU SChwbGFuZS0+ZmJfd2lkdGgpOwo+IAo+IEkgY2FuJ3QgYXBwbHkgYmVjYXVzZSBvZiB0aGlzIGNo YW5nZXMuCj4gCj4gQ291bGQgeW91IG1ha2UgcGF0Y2ggYmFzZWQgb24gbGF0ZXN0IGV4eW5vcy1k cm0tbmV4dCBicmFuY2g/CQoKU3VyZSwgSSdsbCBzZW5kIGEgbmV3IHBhdGNoc2V0LgoKCUd1c3Rh dm8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK