From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH 11/25] drm/exynos: introduce exynos_drm_plane_state structure Date: Fri, 13 Nov 2015 09:46:35 -0200 Message-ID: <20151113114635.GG2264@joana> References: <1447161821-1877-1-git-send-email-m.szyprowski@samsung.com> <1447161821-1877-12-git-send-email-m.szyprowski@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: <1447161821-1877-12-git-send-email-m.szyprowski@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Marek Szyprowski Cc: Javier Martinez Canillas , Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Bartlomiej Zolnierkiewicz , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Andrzej Hajda , Tobias Jakobi List-Id: linux-samsung-soc@vger.kernel.org SGkgTWFyZWssCgoyMDE1LTExLTEwIE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1z dW5nLmNvbT46Cgo+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBleHlub3NfZHJtX3BsYW5lX3N0YXRl IHN0cnVjdHVyZSwgd2hpY2ggc3ViY2xhc3Nlcwo+IGRybV9wbGFuZV9zdGF0ZSBhbmQgaG9sZHMg cHJlY2FsY3VsYXRlZCBkYXRhIHN1aXRhYmxlIGZvciBjb25maWd1cmluZwo+IEV4eW5vcyBoYXJk d2FyZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYXJlayBTenlwcm93c2tpIDxtLnN6eXByb3dza2lA c2Ftc3VuZy5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19k cm1fZGVjb24uYyB8ICAyMSArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vczdf ZHJtX2RlY29uLmMgICAgfCAgMjEgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfZHJtX2Rydi5oICAgICAgIHwgIDU2ICsrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jICAgICAgfCAgMzMgKysrLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmUuYyAgICAgfCAxMjUgKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIuYyAgICAg ICAgIHwgIDYxICsrKysrKystLS0tLS0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9u cygrKSwgMTIwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vczU0MzNfZHJtX2RlY29uLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vczU0MzNfZHJtX2RlY29uLmMKPiBpbmRleCBhMzE2MWIwNDI4YjkuLjI3MDM5NDY4MzY0YiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vczU0MzNfZHJtX2RlY29u LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vczU0MzNfZHJtX2RlY29uLmMK PiBAQCAtMjYwLDkgKzI2MCwxMCBAQCBzdGF0aWMgdm9pZCBkZWNvbl9hdG9taWNfYmVnaW4oc3Ry dWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywKPiAgc3RhdGljIHZvaWQgZGVjb25fdXBkYXRlX3Bs YW5lKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZXh5 bm9zX2RybV9wbGFuZSAqcGxhbmUpCj4gIHsKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0 YXRlICpzdGF0ZSA9Cj4gKwkJCQl0b19leHlub3NfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3Rh dGUpOwo+ICAJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKPiAtCXN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxhbmUtPmJhc2Uuc3RhdGU7Cj4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgd2luID0gcGxhbmUtPnpw b3M7Cj4gIAl1bnNpZ25lZCBpbnQgYnBwID0gZmItPmJpdHNfcGVyX3BpeGVsID4+IDM7Cj4gIAl1 bnNpZ25lZCBpbnQgcGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiBAQCAtMjcyLDExICsyNzMsMTEg QEAgc3RhdGljIHZvaWQgZGVjb25fdXBkYXRlX3BsYW5lKHN0cnVjdCBleHlub3NfZHJtX2NydGMg KmNydGMsCj4gIAlpZiAodGVzdF9iaXQoQklUX1NVU1BFTkRFRCwgJmN0eC0+ZmxhZ3MpKQo+ICAJ CXJldHVybjsKPiAgCj4gLQl2YWwgPSBDT09SRElOQVRFX1gocGxhbmUtPmNydGNfeCkgfCBDT09S RElOQVRFX1kocGxhbmUtPmNydGNfeSk7Cj4gKwl2YWwgPSBDT09SRElOQVRFX1goc3RhdGUtPmNy dGMueCkgfCBDT09SRElOQVRFX1koc3RhdGUtPmNydGMueSk7Cj4gIAl3cml0ZWwodmFsLCBjdHgt PmFkZHIgKyBERUNPTl9WSURPU0R4QSh3aW4pKTsKPiAgCj4gLQl2YWwgPSBDT09SRElOQVRFX1go cGxhbmUtPmNydGNfeCArIHBsYW5lLT5jcnRjX3cgLSAxKSB8Cj4gLQkJQ09PUkRJTkFURV9ZKHBs YW5lLT5jcnRjX3kgKyBwbGFuZS0+Y3J0Y19oIC0gMSk7Cj4gKwl2YWwgPSBDT09SRElOQVRFX1go c3RhdGUtPmNydGMueCArIHN0YXRlLT5jcnRjLncgLSAxKSB8Cj4gKwkJQ09PUkRJTkFURV9ZKHN0 YXRlLT5jcnRjLnkgKyBzdGF0ZS0+Y3J0Yy5oIC0gMSk7Cj4gIAl3cml0ZWwodmFsLCBjdHgtPmFk ZHIgKyBERUNPTl9WSURPU0R4Qih3aW4pKTsKPiAgCj4gIAl2YWwgPSBWSURPU0RfV3hfQUxQSEFf Ul9GKDB4MCkgfCBWSURPU0RfV3hfQUxQSEFfR19GKDB4MCkgfAo+IEBAIC0yODksMTUgKzI5MCwx NSBAQCBzdGF0aWMgdm9pZCBkZWNvbl91cGRhdGVfcGxhbmUoc3RydWN0IGV4eW5vc19kcm1fY3J0 YyAqY3J0YywKPiAgCj4gIAl3cml0ZWwoZG1hX2FkZHIsIGN0eC0+YWRkciArIERFQ09OX1ZJRFcw eEFERDBCMCh3aW4pKTsKPiAgCj4gLQl2YWwgPSBkbWFfYWRkciArIHBpdGNoICogcGxhbmUtPmNy dGNfaDsKPiArCXZhbCA9IGRtYV9hZGRyICsgcGl0Y2ggKiBzdGF0ZS0+c3JjLmg7Cj4gIAl3cml0 ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURXMHhBREQxQjAod2luKSk7Cj4gIAo+ICAJaWYg KGN0eC0+b3V0X3R5cGUgIT0gSUZUWVBFX0hETUkpCj4gLQkJdmFsID0gQklUX1ZBTChwaXRjaCAt IHBsYW5lLT5jcnRjX3cgKiBicHAsIDI3LCAxNCkKPiAtCQkJfCBCSVRfVkFMKHBsYW5lLT5jcnRj X3cgKiBicHAsIDEzLCAwKTsKPiArCQl2YWwgPSBCSVRfVkFMKHBpdGNoIC0gc3RhdGUtPmNydGMu dyAqIGJwcCwgMjcsIDE0KQo+ICsJCQl8IEJJVF9WQUwoc3RhdGUtPmNydGMudyAqIGJwcCwgMTMs IDApOwo+ICAJZWxzZQo+IC0JCXZhbCA9IEJJVF9WQUwocGl0Y2ggLSBwbGFuZS0+Y3J0Y193ICog YnBwLCAyOSwgMTUpCj4gLQkJCXwgQklUX1ZBTChwbGFuZS0+Y3J0Y193ICogYnBwLCAxNCwgMCk7 Cj4gKwkJdmFsID0gQklUX1ZBTChwaXRjaCAtIHN0YXRlLT5jcnRjLncgKiBicHAsIDI5LCAxNSkK PiArCQkJfCBCSVRfVkFMKHN0YXRlLT5jcnRjLncgKiBicHAsIDE0LCAwKTsKPiAgCXdyaXRlbCh2 YWwsIGN0eC0+YWRkciArIERFQ09OX1ZJRFcweEFERDIod2luKSk7Cj4gIAo+ICAJZGVjb25fd2lu X3NldF9waXhmbXQoY3R4LCB3aW4sIGZiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3M3X2RybV9kZWNvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3M3X2RybV9kZWNvbi5jCj4gaW5kZXggMTVlMWUxNjUwMjBmLi43ODY4ZDMwZDhlYWMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M3X2RybV9kZWNvbi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M3X2RybV9kZWNvbi5jCj4gQEAgLTM5OSw5 ICszOTksMTAgQEAgc3RhdGljIHZvaWQgZGVjb25fYXRvbWljX2JlZ2luKHN0cnVjdCBleHlub3Nf ZHJtX2NydGMgKmNydGMsCj4gIHN0YXRpYyB2b2lkIGRlY29uX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg ZXh5bm9zX2RybV9jcnRjICpjcnRjLAo+ICAJCQkgICAgICAgc3RydWN0IGV4eW5vc19kcm1fcGxh bmUgKnBsYW5lKQo+ICB7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqc3RhdGUg PQo+ICsJCQkJdG9fZXh5bm9zX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCXN0 cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpzdGF0ZSA9IHBsYW5lLT5iYXNlLnN0YXRlOwo+IC0Jc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0 YXRlLT5iYXNlLmZiOwo+ICAJaW50IHBhZGRpbmc7Cj4gIAl1bnNpZ25lZCBsb25nIHZhbCwgYWxw aGE7Cj4gIAl1bnNpZ25lZCBpbnQgbGFzdF94Owo+IEBAIC00MzQsMjIgKzQzNSwyMiBAQCBzdGF0 aWMgdm9pZCBkZWNvbl91cGRhdGVfcGxhbmUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywK PiAgCXdyaXRlbChmYi0+aGVpZ2h0LCBjdHgtPnJlZ3MgKyBWSURXX1dIT0xFX1kod2luKSk7Cj4g IAo+ICAJLyogb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgdG8gcmVhZCAqLwo+ IC0Jd3JpdGVsKHBsYW5lLT5zcmNfeCwgY3R4LT5yZWdzICsgVklEV19PRkZTRVRfWCh3aW4pKTsK PiAtCXdyaXRlbChwbGFuZS0+c3JjX3ksIGN0eC0+cmVncyArIFZJRFdfT0ZGU0VUX1kod2luKSk7 Cj4gKwl3cml0ZWwoc3RhdGUtPnNyYy54LCBjdHgtPnJlZ3MgKyBWSURXX09GRlNFVF9YKHdpbikp Owo+ICsJd3JpdGVsKHN0YXRlLT5zcmMueSwgY3R4LT5yZWdzICsgVklEV19PRkZTRVRfWSh3aW4p KTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJzdGFydCBhZGRyID0gMHglbHhcbiIsCj4gIAkJCSh1 bnNpZ25lZCBsb25nKXZhbCk7Cj4gIAlEUk1fREVCVUdfS01TKCJvdmxfd2lkdGggPSAlZCwgb3Zs X2hlaWdodCA9ICVkXG4iLAo+IC0JCQlwbGFuZS0+Y3J0Y193LCBwbGFuZS0+Y3J0Y19oKTsKPiAr CQkJc3RhdGUtPmNydGMudywgc3RhdGUtPmNydGMuaCk7Cj4gIAo+IC0JdmFsID0gVklET1NEeEFf VE9QTEVGVF9YKHBsYW5lLT5jcnRjX3gpIHwKPiAtCQlWSURPU0R4QV9UT1BMRUZUX1kocGxhbmUt PmNydGNfeSk7Cj4gKwl2YWwgPSBWSURPU0R4QV9UT1BMRUZUX1goc3RhdGUtPmNydGMueCkgfAo+ ICsJCVZJRE9TRHhBX1RPUExFRlRfWShzdGF0ZS0+Y3J0Yy55KTsKPiAgCXdyaXRlbCh2YWwsIGN0 eC0+cmVncyArIFZJRE9TRF9BKHdpbikpOwo+ICAKPiAtCWxhc3RfeCA9IHBsYW5lLT5jcnRjX3gg KyBwbGFuZS0+Y3J0Y193Owo+ICsJbGFzdF94ID0gc3RhdGUtPmNydGMueCArIHN0YXRlLT5jcnRj Lnc7Cj4gIAlpZiAobGFzdF94KQo+ICAJCWxhc3RfeC0tOwo+IC0JbGFzdF95ID0gcGxhbmUtPmNy dGNfeSArIHBsYW5lLT5jcnRjX2g7Cj4gKwlsYXN0X3kgPSBzdGF0ZS0+Y3J0Yy55ICsgc3RhdGUt PmNydGMuaDsKPiAgCWlmIChsYXN0X3kpCj4gIAkJbGFzdF95LS07Cj4gIAo+IEBAIC00NTgsNyAr NDU5LDcgQEAgc3RhdGljIHZvaWQgZGVjb25fdXBkYXRlX3BsYW5lKHN0cnVjdCBleHlub3NfZHJt X2NydGMgKmNydGMsCj4gIAl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBWSURPU0RfQih3aW4pKTsK PiAgCj4gIAlEUk1fREVCVUdfS01TKCJvc2QgcG9zOiB0eCA9ICVkLCB0eSA9ICVkLCBieCA9ICVk LCBieSA9ICVkXG4iLAo+IC0JCQlwbGFuZS0+Y3J0Y194LCBwbGFuZS0+Y3J0Y195LCBsYXN0X3gs IGxhc3RfeSk7Cj4gKwkJCXN0YXRlLT5jcnRjLngsIHN0YXRlLT5jcnRjLnksIGxhc3RfeCwgbGFz dF95KTsKPiAgCj4gIAkvKiBPU0QgYWxwaGEgKi8KPiAgCWFscGhhID0gVklET1NEeENfQUxQSEEw X1JfRigweDApIHwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4gaW5k ZXggZGM0MWZmYjI2ZWI5Li40ODJlZDJjMmVkODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2Rydi5oCj4gQEAgLTM4LDIyICszOCw0NCBAQCBlbnVtIGV4eW5vc19kcm1f b3V0cHV0X3R5cGUgewo+ICAJRVhZTk9TX0RJU1BMQVlfVFlQRV9WSURJLAo+ICB9Owo+ICAKPiAr c3RydWN0IGV4eW5vc19kcm1fcmVjdCB7Cj4gKwl1bnNpZ25lZCBpbnQgeCwgeTsKPiArCXVuc2ln bmVkIGludCB3LCBoOwo+ICt9Owo+ICsKPiAgLyoKPiAtICogRXh5bm9zIGRybSBjb21tb24gb3Zl cmxheSBzdHJ1Y3R1cmUuCj4gKyAqIEV4eW5vcyBkcm0gcGxhbmUgc3RhdGUgc3RydWN0dXJlLgo+ ICAgKgo+IC0gKiBAYmFzZTogcGxhbmUgb2JqZWN0Cj4gLSAqIEBzcmNfeDogb2Zmc2V0IHggb24g YSBmcmFtZWJ1ZmZlciB0byBiZSBkaXNwbGF5ZWQuCj4gLSAqCS0gdGhlIHVuaXQgaXMgc2NyZWVu IGNvb3JkaW5hdGVzLgo+IC0gKiBAc3JjX3k6IG9mZnNldCB5IG9uIGEgZnJhbWVidWZmZXIgdG8g YmUgZGlzcGxheWVkLgo+IC0gKgktIHRoZSB1bml0IGlzIHNjcmVlbiBjb29yZGluYXRlcy4KPiAt ICogQHNyY193OiB3aWR0aCBvZiBhIHBhcnRpYWwgaW1hZ2UgdG8gYmUgZGlzcGxheWVkIGZyb20g ZnJhbWVidWZmZXIuCj4gLSAqIEBzcmNfaDogaGVpZ2h0IG9mIGEgcGFydGlhbCBpbWFnZSB0byBi ZSBkaXNwbGF5ZWQgZnJvbSBmcmFtZWJ1ZmZlci4KPiAtICogQGNydGNfeDogb2Zmc2V0IHggb24g aGFyZHdhcmUgc2NyZWVuLgo+IC0gKiBAY3J0Y195OiBvZmZzZXQgeSBvbiBoYXJkd2FyZSBzY3Jl ZW4uCj4gLSAqIEBjcnRjX3c6IHdpbmRvdyB3aWR0aCB0byBiZSBkaXNwbGF5ZWQgKGhhcmR3YXJl IHNjcmVlbikuCj4gLSAqIEBjcnRjX2g6IHdpbmRvdyBoZWlnaHQgdG8gYmUgZGlzcGxheWVkICho YXJkd2FyZSBzY3JlZW4pLgo+ICsgKiBAYmFzZTogcGxhbmVfc3RhdGUgb2JqZWN0IChjb250YWlu cyBkcm1fZnJhbWVidWZmZXIgcG9pbnRlcikKPiArICogQHNyYzogcmVjdGFuZ2xlIG9mIHRoZSBz b3VyY2UgaW1hZ2UgZGF0YSB0byBiZSBkaXNwbGF5ZWQgKGNsaXBwZWQgdG8KPiArICogICAgICAg dmlzaWJsZSBwYXJ0KS4KPiArICogQGNydGM6IHJlY3RhbmdsZSBvZiB0aGUgdGFyZ2V0IGltYWdl IHBvc2l0aW9uIG9uIGhhcmR3YXJlIHNjcmVlbgo+ICsgKiAgICAgICAoY2xpcHBlZCB0byB2aXNp YmxlIHBhcnQpLgo+ICAgKiBAaF9yYXRpbzogaG9yaXpvbnRhbCBzY2FsaW5nIHJhdGlvLCAxNi4x NiBmaXhlZCBwb2ludAo+ICAgKiBAdl9yYXRpbzogdmVydGljYWwgc2NhbGluZyByYXRpbywgMTYu MTYgZml4ZWQgcG9pbnQKPiArICoKPiArICogdGhpcyBzdHJ1Y3R1cmUgY29uc2lzdHMgcGxhbmUg c3RhdGUgZGF0YSB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byBoYXJkd2FyZQo+ICsgKiBzcGVjaWZp YyBvdmVybGF5IGluZm8uCj4gKyAqLwo+ICsKPiArc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3Rh dGUgewo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBiYXNlOwo+ICsJc3RydWN0IGV4eW5vc19k cm1fcmVjdCBjcnRjOwo+ICsJc3RydWN0IGV4eW5vc19kcm1fcmVjdCBzcmM7Cj4gKwl1bnNpZ25l ZCBpbnQgaF9yYXRpbzsKPiArCXVuc2lnbmVkIGludCB2X3JhdGlvOwo+ICt9Owo+ICsKPiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqCj4gK3RvX2V4eW5vc19w bGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJcmV0dXJu IGNvbnRhaW5lcl9vZihzdGF0ZSwgc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUsIGJhc2Up Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBFeHlub3MgZHJtIGNvbW1vbiBvdmVybGF5IHN0cnVjdHVy ZS4KPiArICoKPiArICogQGJhc2U6IHBsYW5lIG9iamVjdAo+ICAgKiBAenBvczogb3JkZXIgb2Yg b3ZlcmxheSBsYXllcih6IHBvc2l0aW9uKS4KPiAgICoKPiAgICogdGhpcyBzdHJ1Y3R1cmUgaXMg Y29tbW9uIHRvIGV4eW5vcyBTb0MgYW5kIGl0cyBjb250ZW50cyB3b3VsZCBiZSBjb3BpZWQKPiBA QCAtNjIsMTYgKzg0LDYgQEAgZW51bSBleHlub3NfZHJtX291dHB1dF90eXBlIHsKPiAgCj4gIHN0 cnVjdCBleHlub3NfZHJtX3BsYW5lIHsKPiAgCXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKPiAtCXVu c2lnbmVkIGludCBzcmNfeDsKPiAtCXVuc2lnbmVkIGludCBzcmNfeTsKPiAtCXVuc2lnbmVkIGlu dCBzcmNfdzsKPiAtCXVuc2lnbmVkIGludCBzcmNfaDsKPiAtCXVuc2lnbmVkIGludCBjcnRjX3g7 Cj4gLQl1bnNpZ25lZCBpbnQgY3J0Y195Owo+IC0JdW5zaWduZWQgaW50IGNydGNfdzsKPiAtCXVu c2lnbmVkIGludCBjcnRjX2g7Cj4gLQl1bnNpZ25lZCBpbnQgaF9yYXRpbzsKPiAtCXVuc2lnbmVk IGludCB2X3JhdGlvOwo+ICAJdW5zaWduZWQgaW50IHpwb3M7Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpwZW5kaW5nX2ZiOwo+ICB9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2ZpbWQuYwo+IGluZGV4IGQzOWU5NjBhODM3Zi4uNDBmYTYyMWUzOTYzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jCj4gQEAgLTY0MSw5ICs2NDEsMTAg QEAgc3RhdGljIHZvaWQgZmltZF9hdG9taWNfZmx1c2goc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YywKPiAgc3RhdGljIHZvaWQgZmltZF91cGRhdGVfcGxhbmUoc3RydWN0IGV4eW5vc19kcm1f Y3J0YyAqY3J0YywKPiAgCQkJICAgICAgc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lKQo+ ICB7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPQo+ICsJCQkJdG9f ZXh5bm9zX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCXN0cnVjdCBmaW1kX2Nv bnRleHQgKmN0eCA9IGNydGMtPmN0eDsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl ID0gcGxhbmUtPmJhc2Uuc3RhdGU7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0 YXRlLT5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7 Cj4gIAlkbWFfYWRkcl90IGRtYV9hZGRyOwo+ICAJdW5zaWduZWQgbG9uZyB2YWwsIHNpemUsIG9m ZnNldDsKPiAgCXVuc2lnbmVkIGludCBsYXN0X3gsIGxhc3RfeSwgYnVmX29mZnNpemUsIGxpbmVf c2l6ZTsKPiBAQCAtNjU0LDggKzY1NSw4IEBAIHN0YXRpYyB2b2lkIGZpbWRfdXBkYXRlX3BsYW5l KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsCj4gIAlpZiAoY3R4LT5zdXNwZW5kZWQpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCW9mZnNldCA9IHBsYW5lLT5zcmNfeCAqIGJwcDsKPiAtCW9mZnNl dCArPSBwbGFuZS0+c3JjX3kgKiBwaXRjaDsKPiArCW9mZnNldCA9IHN0YXRlLT5zcmMueCAqIGJw cDsKPiArCW9mZnNldCArPSBzdGF0ZS0+c3JjLnkgKiBwaXRjaDsKPiAgCj4gIAkvKiBidWZmZXIg c3RhcnQgYWRkcmVzcyAqLwo+ICAJZG1hX2FkZHIgPSBleHlub3NfZHJtX2ZiX2RtYV9hZGRyKGZi LCAwKSArIG9mZnNldDsKPiBAQCAtNjYzLDE4ICs2NjQsMTggQEAgc3RhdGljIHZvaWQgZmltZF91 cGRhdGVfcGxhbmUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywKPiAgCXdyaXRlbCh2YWws IGN0eC0+cmVncyArIFZJRFd4X0JVRl9TVEFSVCh3aW4sIDApKTsKPiAgCj4gIAkvKiBidWZmZXIg ZW5kIGFkZHJlc3MgKi8KPiAtCXNpemUgPSBwaXRjaCAqIHBsYW5lLT5jcnRjX2g7Cj4gKwlzaXpl ID0gcGl0Y2ggKiBzdGF0ZS0+Y3J0Yy5oOwo+ICAJdmFsID0gKHVuc2lnbmVkIGxvbmcpKGRtYV9h ZGRyICsgc2l6ZSk7Cj4gIAl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBWSURXeF9CVUZfRU5EKHdp biwgMCkpOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoInN0YXJ0IGFkZHIgPSAweCVseCwgZW5kIGFk ZHIgPSAweCVseCwgc2l6ZSA9IDB4JWx4XG4iLAo+ICAJCQkodW5zaWduZWQgbG9uZylkbWFfYWRk ciwgdmFsLCBzaXplKTsKPiAgCURSTV9ERUJVR19LTVMoIm92bF93aWR0aCA9ICVkLCBvdmxfaGVp Z2h0ID0gJWRcbiIsCj4gLQkJCXBsYW5lLT5jcnRjX3csIHBsYW5lLT5jcnRjX2gpOwo+ICsJCQlz dGF0ZS0+Y3J0Yy53LCBzdGF0ZS0+Y3J0Yy5oKTsKPiAgCj4gIAkvKiBidWZmZXIgc2l6ZSAqLwo+ IC0JYnVmX29mZnNpemUgPSBwaXRjaCAtIChwbGFuZS0+Y3J0Y193ICogYnBwKTsKPiAtCWxpbmVf c2l6ZSA9IHBsYW5lLT5jcnRjX3cgKiBicHA7Cj4gKwlidWZfb2Zmc2l6ZSA9IHBpdGNoIC0gKHN0 YXRlLT5jcnRjLncgKiBicHApOwo+ICsJbGluZV9zaXplID0gc3RhdGUtPmNydGMudyAqIGJwcDsK PiAgCXZhbCA9IFZJRFdfQlVGX1NJWkVfT0ZGU0VUKGJ1Zl9vZmZzaXplKSB8Cj4gIAkJVklEV19C VUZfU0laRV9QQUdFV0lEVEgobGluZV9zaXplKSB8Cj4gIAkJVklEV19CVUZfU0laRV9PRkZTRVRf RShidWZfb2Zmc2l6ZSkgfAo+IEBAIC02ODIsMTYgKzY4MywxNiBAQCBzdGF0aWMgdm9pZCBmaW1k X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLAo+ICAJd3JpdGVsKHZh bCwgY3R4LT5yZWdzICsgVklEV3hfQlVGX1NJWkUod2luLCAwKSk7Cj4gIAo+ICAJLyogT1NEIHBv c2l0aW9uICovCj4gLQl2YWwgPSBWSURPU0R4QV9UT1BMRUZUX1gocGxhbmUtPmNydGNfeCkgfAo+ IC0JCVZJRE9TRHhBX1RPUExFRlRfWShwbGFuZS0+Y3J0Y195KSB8Cj4gLQkJVklET1NEeEFfVE9Q TEVGVF9YX0UocGxhbmUtPmNydGNfeCkgfAo+IC0JCVZJRE9TRHhBX1RPUExFRlRfWV9FKHBsYW5l LT5jcnRjX3kpOwo+ICsJdmFsID0gVklET1NEeEFfVE9QTEVGVF9YKHN0YXRlLT5jcnRjLngpIHwK PiArCQlWSURPU0R4QV9UT1BMRUZUX1koc3RhdGUtPmNydGMueSkgfAo+ICsJCVZJRE9TRHhBX1RP UExFRlRfWF9FKHN0YXRlLT5jcnRjLngpIHwKPiArCQlWSURPU0R4QV9UT1BMRUZUX1lfRShzdGF0 ZS0+Y3J0Yy55KTsKPiAgCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRE9TRF9BKHdpbikpOwo+ ICAKPiAtCWxhc3RfeCA9IHBsYW5lLT5jcnRjX3ggKyBwbGFuZS0+Y3J0Y193Owo+ICsJbGFzdF94 ID0gc3RhdGUtPmNydGMueCArIHN0YXRlLT5jcnRjLnc7Cj4gIAlpZiAobGFzdF94KQo+ICAJCWxh c3RfeC0tOwo+IC0JbGFzdF95ID0gcGxhbmUtPmNydGNfeSArIHBsYW5lLT5jcnRjX2g7Cj4gKwls YXN0X3kgPSBzdGF0ZS0+Y3J0Yy55ICsgc3RhdGUtPmNydGMuaDsKPiAgCWlmIChsYXN0X3kpCj4g IAkJbGFzdF95LS07Cj4gIAo+IEBAIC03MDEsMTQgKzcwMiwxNCBAQCBzdGF0aWMgdm9pZCBmaW1k X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLAo+ICAJd3JpdGVsKHZh bCwgY3R4LT5yZWdzICsgVklET1NEX0Iod2luKSk7Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygib3Nk IHBvczogdHggPSAlZCwgdHkgPSAlZCwgYnggPSAlZCwgYnkgPSAlZFxuIiwKPiAtCQkJcGxhbmUt PmNydGNfeCwgcGxhbmUtPmNydGNfeSwgbGFzdF94LCBsYXN0X3kpOwo+ICsJCQlzdGF0ZS0+Y3J0 Yy54LCBzdGF0ZS0+Y3J0Yy55LCBsYXN0X3gsIGxhc3RfeSk7Cj4gIAo+ICAJLyogT1NEIHNpemUg Ki8KPiAgCWlmICh3aW4gIT0gMyAmJiB3aW4gIT0gNCkgewo+ICAJCXUzMiBvZmZzZXQgPSBWSURP U0RfRCh3aW4pOwo+ICAJCWlmICh3aW4gPT0gMCkKPiAgCQkJb2Zmc2V0ID0gVklET1NEX0Mod2lu KTsKPiAtCQl2YWwgPSBwbGFuZS0+Y3J0Y193ICogcGxhbmUtPmNydGNfaDsKPiArCQl2YWwgPSBz dGF0ZS0+Y3J0Yy53ICogc3RhdGUtPmNydGMuaDsKPiAgCQl3cml0ZWwodmFsLCBjdHgtPnJlZ3Mg KyBvZmZzZXQpOwo+ICAKPiAgCQlEUk1fREVCVUdfS01TKCJvc2Qgc2l6ZSA9IDB4JXhcbiIsICh1 bnNpZ25lZCBpbnQpdmFsKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxh bmUuYwo+IGluZGV4IGM3MjU0MDk0MjFiOC4uMzY1YTczODA0MmUyIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKPiBAQCAtNTYsMTkgKzU2LDM1IEBAIHN0 YXRpYyBpbnQgZXh5bm9zX3BsYW5lX2dldF9zaXplKGludCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro LCB1bnNpZ25lZCBsYXN0KQo+ICAJcmV0dXJuIHNpemU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IGV4eW5vc19wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtCQkJCSAg c3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKPiAtCQkJCSAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiAtCQkJCSAgdW5zaWduZWQgaW50 IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiAtCQkJCSAgdWludDMyX3Qgc3JjX3gsIHVp bnQzMl90IHNyY195LAo+IC0JCQkJICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4g K3N0YXRpYyB2b2lkIGV4eW5vc19wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2RybV9wbGFu ZV9zdGF0ZSAqZXh5bm9zX3N0YXRlKQo+ICsKPiAgewo+IC0Jc3RydWN0IGV4eW5vc19kcm1fcGxh bmUgKmV4eW5vc19wbGFuZSA9IHRvX2V4eW5vc19wbGFuZShwbGFuZSk7Cj4gKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpzdGF0ZSA9ICZleHlub3Nfc3RhdGUtPmJhc2U7Cj4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSBleHlub3Nfc3RhdGUtPmJhc2UuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlID0gJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwo+ICsJaW50IGNy dGNfeCwgY3J0Y195Owo+ICsJdW5zaWduZWQgaW50IGNydGNfdywgY3J0Y19oOwo+ICsJdW5zaWdu ZWQgaW50IHNyY194LCBzcmNfeTsKPiArCXVuc2lnbmVkIGludCBzcmNfdywgc3JjX2g7Cj4gIAl1 bnNpZ25lZCBpbnQgYWN0dWFsX3c7Cj4gIAl1bnNpZ25lZCBpbnQgYWN0dWFsX2g7Cj4gIAo+ICsJ LyoKPiArCSAqIFRoZSBvcmlnaW5hbCBzcmMvZGVzdCBjb29yZGluYXRlcyBhcmUgc3RvcmVkIGlu IGV4eW5vc19zdGF0ZS0+YmFzZSwKPiArCSAqIGJ1dCB3ZSB3YW50IHRvIGtlZXAgYW5vdGhlciBj b3B5IGludGVybmFsIHRvIG91ciBkcml2ZXIgdGhhdCB3ZSBjYW4KPiArCSAqIGNsaXAvbW9kaWZ5 IG91cnNlbHZlcy4KPiArCSAqLwo+ICsKPiArCWNydGNfeCA9IHN0YXRlLT5jcnRjX3g7Cj4gKwlj cnRjX3kgPSBzdGF0ZS0+Y3J0Y195Owo+ICsJY3J0Y193ID0gc3RhdGUtPmNydGNfdzsKPiArCWNy dGNfaCA9IHN0YXRlLT5jcnRjX2g7Cj4gKwo+ICsJc3JjX3ggPSBzdGF0ZS0+c3JjX3ggPj4gMTY7 Cj4gKwlzcmNfeSA9IHN0YXRlLT5zcmNfeSA+PiAxNjsKPiArCXNyY193ID0gc3RhdGUtPnNyY193 ID4+IDE2Owo+ICsJc3JjX2ggPSBzdGF0ZS0+c3JjX2ggPj4gMTY7Cj4gKwo+ICAJYWN0dWFsX3cg PSBleHlub3NfcGxhbmVfZ2V0X3NpemUoY3J0Y194LCBjcnRjX3csIG1vZGUtPmhkaXNwbGF5KTsK PiAgCWFjdHVhbF9oID0gZXh5bm9zX3BsYW5lX2dldF9zaXplKGNydGNfeSwgY3J0Y19oLCBtb2Rl LT52ZGlzcGxheSk7Cj4gIAo+IEBAIC04NSw0NiArMTAxLDkzIEBAIHN0YXRpYyB2b2lkIGV4eW5v c19wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCX0KPiAgCj4gIAkv KiBzZXQgcmF0aW8gKi8KPiAtCWV4eW5vc19wbGFuZS0+aF9yYXRpbyA9IChzcmNfdyA8PCAxNikg LyBjcnRjX3c7Cj4gLQlleHlub3NfcGxhbmUtPnZfcmF0aW8gPSAoc3JjX2ggPDwgMTYpIC8gY3J0 Y19oOwo+ICsJZXh5bm9zX3N0YXRlLT5oX3JhdGlvID0gKHNyY193IDw8IDE2KSAvIGNydGNfdzsK PiArCWV4eW5vc19zdGF0ZS0+dl9yYXRpbyA9IChzcmNfaCA8PCAxNikgLyBjcnRjX2g7Cj4gIAo+ ICAJLyogc2V0IGRybSBmcmFtZWJ1ZmZlciBkYXRhLiAqLwo+IC0JZXh5bm9zX3BsYW5lLT5zcmNf eCA9IHNyY194Owo+IC0JZXh5bm9zX3BsYW5lLT5zcmNfeSA9IHNyY195Owo+IC0JZXh5bm9zX3Bs YW5lLT5zcmNfdyA9IChhY3R1YWxfdyAqIGV4eW5vc19wbGFuZS0+aF9yYXRpbykgPj4gMTY7Cj4g LQlleHlub3NfcGxhbmUtPnNyY19oID0gKGFjdHVhbF9oICogZXh5bm9zX3BsYW5lLT52X3JhdGlv KSA+PiAxNjsKPiArCWV4eW5vc19zdGF0ZS0+c3JjLnggPSBzcmNfeDsKPiArCWV4eW5vc19zdGF0 ZS0+c3JjLnkgPSBzcmNfeTsKPiArCWV4eW5vc19zdGF0ZS0+c3JjLncgPSAoYWN0dWFsX3cgKiBl eHlub3Nfc3RhdGUtPmhfcmF0aW8pID4+IDE2Owo+ICsJZXh5bm9zX3N0YXRlLT5zcmMuaCA9IChh Y3R1YWxfaCAqIGV4eW5vc19zdGF0ZS0+dl9yYXRpbykgPj4gMTY7Cj4gIAo+ICAJLyogc2V0IHBs YW5lIHJhbmdlIHRvIGJlIGRpc3BsYXllZC4gKi8KPiAtCWV4eW5vc19wbGFuZS0+Y3J0Y194ID0g Y3J0Y194Owo+IC0JZXh5bm9zX3BsYW5lLT5jcnRjX3kgPSBjcnRjX3k7Cj4gLQlleHlub3NfcGxh bmUtPmNydGNfdyA9IGFjdHVhbF93Owo+IC0JZXh5bm9zX3BsYW5lLT5jcnRjX2ggPSBhY3R1YWxf aDsKPiArCWV4eW5vc19zdGF0ZS0+Y3J0Yy54ID0gY3J0Y194Owo+ICsJZXh5bm9zX3N0YXRlLT5j cnRjLnkgPSBjcnRjX3k7Cj4gKwlleHlub3Nfc3RhdGUtPmNydGMudyA9IGFjdHVhbF93Owo+ICsJ ZXh5bm9zX3N0YXRlLT5jcnRjLmggPSBhY3R1YWxfaDsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJw bGFuZSA6IG9mZnNldF94L3koJWQsJWQpLCB3aWR0aC9oZWlnaHQoJWQsJWQpIiwKPiAtCQkJZXh5 bm9zX3BsYW5lLT5jcnRjX3gsIGV4eW5vc19wbGFuZS0+Y3J0Y195LAo+IC0JCQlleHlub3NfcGxh bmUtPmNydGNfdywgZXh5bm9zX3BsYW5lLT5jcnRjX2gpOwo+ICsJCQlleHlub3Nfc3RhdGUtPmNy dGMueCwgZXh5bm9zX3N0YXRlLT5jcnRjLnksCj4gKwkJCWV4eW5vc19zdGF0ZS0+Y3J0Yy53LCBl eHlub3Nfc3RhdGUtPmNydGMuaCk7Cj4gK30KPiAgCj4gLQlwbGFuZS0+Y3J0YyA9IGNydGM7Cj4g K3N0YXRpYyB2b2lkIGV4eW5vc19kcm1fcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUpCj4gK3sKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpleHlub3Nfc3RhdGU7 Cj4gKwo+ICsJaWYgKHBsYW5lLT5zdGF0ZSkgewo+ICsJCWV4eW5vc19zdGF0ZSA9IHRvX2V4eW5v c19wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwo+ICsJCWlmIChleHlub3Nfc3RhdGUtPmJhc2Uu ZmIpCj4gKwkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShleHlub3Nfc3RhdGUtPmJhc2Uu ZmIpOwo+ICsJCWtmcmVlKGV4eW5vc19zdGF0ZSk7Cj4gKwkJcGxhbmUtPnN0YXRlID0gTlVMTDsK PiArCX0KPiArCj4gKwlleHlub3Nfc3RhdGUgPSBremFsbG9jKHNpemVvZigqZXh5bm9zX3N0YXRl KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoZXh5bm9zX3N0YXRlKSB7Cj4gKwkJcGxhbmUtPnN0YXRl ID0gJmV4eW5vc19zdGF0ZS0+YmFzZTsKPiArCQlwbGFuZS0+c3RhdGUtPnBsYW5lID0gcGxhbmU7 Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoKPiArZXh5 bm9zX2RybV9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4g K3sKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpleHlub3Nfc3RhdGU7Cj4gKwlz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqY29weTsKPiArCj4gKwlleHlub3Nfc3RhdGUg PSB0b19leHlub3NfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiArCWNvcHkgPSBremFsbG9j KHNpemVvZigqZXh5bm9zX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWNvcHkpCj4gKwkJ cmV0dXJuIE5VTEw7Cj4gKwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVf c3RhdGUocGxhbmUsICZjb3B5LT5iYXNlKTsKPiArCXJldHVybiAmY29weS0+YmFzZTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZXh5bm9zX2RybV9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9z dGF0ZSkKPiArewo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKm9sZF9leHlub3Nf c3RhdGUgPQo+ICsJCQkJCXRvX2V4eW5vc19wbGFuZV9zdGF0ZShvbGRfc3RhdGUpOwo+ICsJX19k cm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHBsYW5lLCBvbGRfc3RhdGUpOwo+ ICsJa2ZyZWUob2xkX2V4eW5vc19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIGV4eW5vc19wbGFuZV9mdW5jcyA9IHsKPiAgCS51cGRhdGVfcGxhbmUJPSBk cm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gIAkuZGlzYWJsZV9wbGFuZQk9IGRybV9h dG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gIAkuZGVzdHJveQk9IGRybV9wbGFuZV9jbGVh bnVwLAo+IC0JLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCj4gLQkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9z dGF0ZSwKPiAtCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5l X2Rlc3Ryb3lfc3RhdGUsCj4gKwkucmVzZXQJCT0gZXh5bm9zX2RybV9wbGFuZV9yZXNldCwKPiAr CS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZXh5bm9zX2RybV9wbGFuZV9kdXBsaWNhdGVfc3Rh dGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBleHlub3NfZHJtX3BsYW5lX2Rlc3Ryb3lf c3RhdGUsCj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IGV4eW5vc19wbGFuZV9hdG9taWNfY2hlY2so c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqZXh5bm9zX3BsYW5l ID0gdG9fZXh5bm9zX3BsYW5lKHBsYW5lKTsKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0 YXRlICpleHlub3Nfc3RhdGUgPQo+ICsJCQkJCQl0b19leHlub3NfcGxhbmVfc3RhdGUoc3RhdGUp Owo+ICsJaW50IHJldCA9IDA7Cj4gIAo+IC0JaWYgKCFzdGF0ZS0+ZmIpCj4gKwlpZiAoIXN0YXRl LT5jcnRjIHx8ICFzdGF0ZS0+ZmIpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0dXJuIDA7Cj4g KwkvKiB0cmFuc2xhdGUgc3RhdGUgaW50byBleHlub3Nfc3RhdGUgKi8KPiArCWV4eW5vc19wbGFu ZV9tb2RlX3NldChleHlub3Nfc3RhdGUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGV4eW5vc19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+IEBAIC0xMzcsMTIgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaWYgKCFzdGF0ZS0+Y3J0 YykKPiAgCQlyZXR1cm47Cj4gIAo+IC0JZXh5bm9zX3BsYW5lX21vZGVfc2V0KHBsYW5lLCBzdGF0 ZS0+Y3J0Yywgc3RhdGUtPmZiLAo+IC0JCQkgICAgICBzdGF0ZS0+Y3J0Y194LCBzdGF0ZS0+Y3J0 Y195LAo+IC0JCQkgICAgICBzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0Y19oLAo+IC0JCQkgICAg ICBzdGF0ZS0+c3JjX3ggPj4gMTYsIHN0YXRlLT5zcmNfeSA+PiAxNiwKPiAtCQkJICAgICAgc3Rh dGUtPnNyY193ID4+IDE2LCBzdGF0ZS0+c3JjX2ggPj4gMTYpOwo+IC0KPiArCXBsYW5lLT5jcnRj ID0gc3RhdGUtPmNydGM7Cj4gIAlleHlub3NfcGxhbmUtPnBlbmRpbmdfZmIgPSBzdGF0ZS0+ZmI7 Cj4gIAo+ICAJaWYgKGV4eW5vc19jcnRjLT5vcHMtPnVwZGF0ZV9wbGFuZSkKPiBAQCAtMTU5LDgg KzIxNyw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKGV4eW5vc19jcnRjLT5v cHMtPmRpc2FibGVfcGxhbmUpCj4gLQkJZXh5bm9zX2NydGMtPm9wcy0+ZGlzYWJsZV9wbGFuZShl eHlub3NfY3J0YywKPiAtCQkJCQkJZXh5bm9zX3BsYW5lKTsKPiArCQlleHlub3NfY3J0Yy0+b3Bz LT5kaXNhYmxlX3BsYW5lKGV4eW5vc19jcnRjLCBleHlub3NfcGxhbmUpOwoKSnVzdCBhIG5pdHBp Y2sgaGVyZTogdGhpcyBjaGFuZ2UgZG9lc24ndCBiZWxvbmcgdG8gdGhpcyBwYXRjaC4gT3RoZXJ3 aXNlCmxvb2tzIGdvb2Q6CgpSZXZpZXdlZC1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBh ZG92YW5AY29sbGFib3JhLmNvLnVrPgoKCUd1c3Rhdm8KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK