From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonyoung Shim Subject: Re: [PATCH 04/14] drm/exynos: remove struct *_win_data abstraction on planes Date: Wed, 04 Feb 2015 16:44:12 +0900 Message-ID: <54D1CDCC.60906@samsung.com> References: <1422990871-21355-1-git-send-email-gustavo@padovan.org> <1422990871-21355-5-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1422990871-21355-5-git-send-email-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 , linux-samsung-soc@vger.kernel.org Cc: Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org SGksCgpPbiAwMi8wNC8yMDE1IDA0OjE0IEFNLCBHdXN0YXZvIFBhZG92YW4gd3JvdGU6Cj4gRnJv bTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+IAo+ IHN0cnVjdCB7ZmltZCxtaXhlcix2aWRpfV93aW5fZGF0YSB3YXMganVzdCBrZWVwaW5nIHRoZSBz YW1lIGRhdGEKPiBhcyBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSB0aHVzIGdldCByaWRlIG9mIGl0 IGFuZCB1c2UgZXh5bm9zX2RybV9wbGFuZQo+IGRpcmVjdGx5Lgo+IAo+IEl0IGNoYW5nZXMgaG93 IHBsYW5lcyBhcmUgY3JlYXRlZCBhbmQgcmVtb3ZlIC53aW5fbW9kZV9zZXQoKSBjYWxsYmFjawo+ IHRoYXQgd2FzIG9ubHkgZmlsbGluZyBhbGwgKl93aW5fZGF0YSBzdHJ1Y3RzLgo+IAoKSSBjb21t ZW50ZWQgYWxyZWFkeSBvbiBwcmlvciBwYXRjaC4KClRoYW5rcy4KCj4gU2lnbmVkLW9mZi1ieTog R3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5jICB8ICAgOSArLQo+ICBk cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oICB8ICAgMSArCj4gIGRyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyAgIHwgIDE0IC0tCj4gIGRyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuaCAgIHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgIHwgMTgyICsrKysrKysrKystLS0tLS0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMgfCAgMjAg Ky0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5oIHwgICA2ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV92aWRpLmMgIHwgMTIzICsrKysr LS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMgICAg IHwgMjEyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICA5IGZpbGVzIGNoYW5nZWQs IDE4MyBpbnNlcnRpb25zKCspLCAzODkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5jCj4gaW5kZXggYWQ2NzVmYi4uZDUwNGYwYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYwo+IEBAIC0yOTYsMTMgKzI5 NiwxMyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHJtX2NydGNfYXR0YWNoX21vZGVfcHJvcGVydHko c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB9Cj4gIAo+ICBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRj ICpleHlub3NfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+ICsJ CQkJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJCQkgICAgICAgaW50IHBp cGUsCj4gIAkJCQkJICAgICAgIGVudW0gZXh5bm9zX2RybV9vdXRwdXRfdHlwZSB0eXBlLAo+ICAJ CQkJCSAgICAgICBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyAqb3BzLAo+ICAJCQkJCSAgICAg ICB2b2lkICpjdHgpCj4gIHsKPiAgCXN0cnVjdCBleHlub3NfZHJtX2NydGMgKmV4eW5vc19jcnRj Owo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gIAlzdHJ1Y3QgZXh5bm9zX2RybV9wcml2 YXRlICpwcml2YXRlID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gIAlpbnQgcmV0Owo+IEBAIC0zMTgsMTIgKzMxOCw2IEBAIHN0cnVjdCBleHlub3Nf ZHJtX2NydGMgKmV4eW5vc19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9k ZXYsCj4gIAlleHlub3NfY3J0Yy0+dHlwZSA9IHR5cGU7Cj4gIAlleHlub3NfY3J0Yy0+b3BzID0g b3BzOwo+ICAJZXh5bm9zX2NydGMtPmN0eCA9IGN0eDsKPiAtCXBsYW5lID0gZXh5bm9zX3BsYW5l X2luaXQoZHJtX2RldiwgMSA8PCBwaXBlLAo+IC0JCQkJICBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KTsKPiAtCWlmIChJU19FUlIocGxhbmUpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihwbGFuZSk7Cj4g LQkJZ290byBlcnJfcGxhbmU7Cj4gLQl9Cj4gIAo+ICAJY3J0YyA9ICZleHlub3NfY3J0Yy0+YmFz ZTsKPiAgCj4gQEAgLTM0Miw3ICszMzYsNiBAQCBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpleHlu b3NfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+ICAKPiAgZXJy X2NydGM6Cj4gIAlwbGFuZS0+ZnVuY3MtPmRlc3Ryb3kocGxhbmUpOwo+IC1lcnJfcGxhbmU6Cj4g IAlrZnJlZShleHlub3NfY3J0Yyk7Cj4gIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICB9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmggYi9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oCj4gaW5kZXggNjI4Yjc4Ny4uMGVj ZDhmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0 Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuaAo+IEBA IC0xOCw2ICsxOCw3IEBACj4gICNpbmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgo+ICAKPiAgc3Ry dWN0IGV4eW5vc19kcm1fY3J0YyAqZXh5bm9zX2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtX2RldiwKPiArCQkJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAkJCQkJICAgICAgIGludCBwaXBlLAo+ICAJCQkJCSAgICAgICBlbnVtIGV4eW5vc19kcm1fb3V0 cHV0X3R5cGUgdHlwZSwKPiAgCQkJCQkgICAgICAgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMg Km9wcywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCj4gaW5kZXggNzM3 MTY0ZC4uNzc4YzkxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2 LmMKPiBAQCAtNTUsNyArNTUsNiBAQCBzdGF0aWMgaW50IGV4eW5vc19kcm1fbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICB7Cj4gIAlzdHJ1Y3QgZXh5 bm9zX2RybV9wcml2YXRlICpwcml2YXRlOwo+ICAJaW50IHJldDsKPiAtCWludCBucjsKPiAgCj4g IAlwcml2YXRlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGV4eW5vc19kcm1fcHJpdmF0ZSksIEdG UF9LRVJORUwpOwo+ICAJaWYgKCFwcml2YXRlKQo+IEBAIC04MCwxOSArNzksNiBAQCBzdGF0aWMg aW50IGV4eW5vc19kcm1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25n IGZsYWdzKQo+ICAKPiAgCWV4eW5vc19kcm1fbW9kZV9jb25maWdfaW5pdChkZXYpOwo+ICAKPiAt CWZvciAobnIgPSAwOyBuciA8IE1BWF9QTEFORTsgbnIrKykgewo+IC0JCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOwo+IC0JCXVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3MgPSAoMSA8PCBNQVhf Q1JUQykgLSAxOwo+IC0KPiAtCQlwbGFuZSA9IGV4eW5vc19wbGFuZV9pbml0KGRldiwgcG9zc2li bGVfY3J0Y3MsCj4gLQkJCQkJICBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKTsKPiAtCQlpZiAoIUlT X0VSUihwbGFuZSkpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlyZXQgPSBQVFJfRVJSKHBsYW5l KTsKPiAtCQlnb3RvIGVycl9tb2RlX2NvbmZpZ19jbGVhbnVwOwo+IC0JfQo+IC0KPiAgCS8qIHNl dHVwIHBvc3NpYmxlX2Nsb25lcy4gKi8KPiAgCWV4eW5vc19kcm1fZW5jb2Rlcl9zZXR1cChkZXYp Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4gaW5kZXggNzQx MWFmMi4uY2FkNTRlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2 LmgKPiBAQCAtNzgsNiArNzgsNyBAQCBlbnVtIGV4eW5vc19kcm1fb3V0cHV0X3R5cGUgewo+ICAg KiBAdHJhbnNwYXJlbmN5OiB0cmFuc3BhcmVuY3kgb24gb3Igb2ZmLgo+ICAgKiBAYWN0aXZhdGVk OiBhY3RpdmF0ZWQgb3Igbm90Lgo+ICAgKiBAZW5hYmxlZDogZW5hYmxlZCBvciBub3QuCj4gKyAq IEByZXN1bWU6IHRvIHJlc3VtZSBvciBub3QuCj4gICAqCj4gICAqIHRoaXMgc3RydWN0dXJlIGlz IGNvbW1vbiB0byBleHlub3MgU29DIGFuZCBpdHMgY29udGVudHMgd291bGQgYmUgY29waWVkCj4g ICAqIHRvIGhhcmR3YXJlIHNwZWNpZmljIG92ZXJsYXkgaW5mby4KPiBAQCAtMTEyLDYgKzExMyw3 IEBAIHN0cnVjdCBleHlub3NfZHJtX3BsYW5lIHsKPiAgCWJvb2wgdHJhbnNwYXJlbmN5OjE7Cj4g IAlib29sIGFjdGl2YXRlZDoxOwo+ICAJYm9vbCBlbmFibGVkOjE7Cj4gKwlib29sIHJlc3VtZTox Owo+ICB9Owo+ICAKPiAgLyoKPiBAQCAtMTcyLDcgKzE3NCw2IEBAIHN0cnVjdCBleHlub3NfZHJt X2Rpc3BsYXkgewo+ICAgKiBAZGlzYWJsZV92Ymxhbms6IHNwZWNpZmljIGRyaXZlciBjYWxsYmFj ayBmb3IgZGlzYWJsaW5nIHZibGFuayBpbnRlcnJ1cHQuCj4gICAqIEB3YWl0X2Zvcl92Ymxhbms6 IHdhaXQgZm9yIHZibGFuayBpbnRlcnJ1cHQgdG8gbWFrZSBzdXJlIHRoYXQKPiAgICoJaGFyZHdh cmUgb3ZlcmxheSBpcyB1cGRhdGVkLgo+IC0gKiBAd2luX21vZGVfc2V0OiBjb3B5IGRybSBvdmVy bGF5IGluZm8gdG8gaHcgc3BlY2lmaWMgb3ZlcmxheSBpbmZvLgo+ICAgKiBAd2luX2NvbW1pdDog YXBwbHkgaGFyZHdhcmUgc3BlY2lmaWMgb3ZlcmxheSBkYXRhIHRvIHJlZ2lzdGVycy4KPiAgICog QHdpbl9lbmFibGU6IGVuYWJsZSBoYXJkd2FyZSBzcGVjaWZpYyBvdmVybGF5Lgo+ICAgKiBAd2lu X2Rpc2FibGU6IGRpc2FibGUgaGFyZHdhcmUgc3BlY2lmaWMgb3ZlcmxheS4KPiBAQCAtMTg5LDgg KzE5MCw2IEBAIHN0cnVjdCBleHlub3NfZHJtX2NydGNfb3BzIHsKPiAgCWludCAoKmVuYWJsZV92 YmxhbmspKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpOwo+ICAJdm9pZCAoKmRpc2FibGVf dmJsYW5rKShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKTsKPiAgCXZvaWQgKCp3YWl0X2Zv cl92YmxhbmspKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpOwo+IC0Jdm9pZCAoKndpbl9t b2RlX3NldCkoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywKPiAtCQkJCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpwbGFuZSk7Cj4gIAl2b2lkICgqd2luX2NvbW1pdCkoc3RydWN0IGV4eW5v c19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpOwo+ICAJdm9pZCAoKndpbl9lbmFibGUpKHN0cnVj dCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKTsKPiAgCXZvaWQgKCp3aW5fZGlzYWJs ZSkoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jIGIvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwo+IGluZGV4IDkyNWZjNjkuLmViYjRjZGMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKPiBAQCAtMzEsNiAr MzEsNyBAQAo+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKPiAgI2luY2x1ZGUgImV4eW5v c19kcm1fZmJkZXYuaCIKPiAgI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgo+ICsjaW5jbHVk ZSAiZXh5bm9zX2RybV9wbGFuZS5oIgo+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgo+ ICAKPiAgLyoKPiBAQCAtMTQwLDMxICsxNDEsMTUgQEAgc3RhdGljIHN0cnVjdCBmaW1kX2RyaXZl cl9kYXRhIGV4eW5vczVfZmltZF9kcml2ZXJfZGF0YSA9IHsKPiAgCS5oYXNfdnRzZWwgPSAxLAo+ ICB9Owo+ICAKPiAtc3RydWN0IGZpbWRfd2luX2RhdGEgewo+IC0JdW5zaWduZWQgaW50CQlvZmZz ZXRfeDsKPiAtCXVuc2lnbmVkIGludAkJb2Zmc2V0X3k7Cj4gLQl1bnNpZ25lZCBpbnQJCW92bF93 aWR0aDsKPiAtCXVuc2lnbmVkIGludAkJb3ZsX2hlaWdodDsKPiAtCXVuc2lnbmVkIGludAkJZmJf d2lkdGg7Cj4gLQl1bnNpZ25lZCBpbnQJCWZiX2hlaWdodDsKPiAtCXVuc2lnbmVkIGludAkJYnBw Owo+IC0JdW5zaWduZWQgaW50CQlwaXhlbF9mb3JtYXQ7Cj4gLQlkbWFfYWRkcl90CQlkbWFfYWRk cjsKPiAtCXVuc2lnbmVkIGludAkJYnVmX29mZnNpemU7Cj4gLQl1bnNpZ25lZCBpbnQJCWxpbmVf c2l6ZTsJLyogYnl0ZXMgKi8KPiAtCWJvb2wJCQllbmFibGVkOwo+IC0JYm9vbAkJCXJlc3VtZTsK PiAtfTsKPiAtCj4gIHN0cnVjdCBmaW1kX2NvbnRleHQgewo+ICAJc3RydWN0IGRldmljZQkJCSpk ZXY7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZQkJKmRybV9kZXY7Cj4gIAlzdHJ1Y3QgZXh5bm9zX2Ry bV9jcnRjCQkqY3J0YzsKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCQlwbGFuZXNbV0lORE9X U19OUl07Cj4gIAlzdHJ1Y3QgY2xrCQkJKmJ1c19jbGs7Cj4gIAlzdHJ1Y3QgY2xrCQkJKmxjZF9j bGs7Cj4gIAl2b2lkIF9faW9tZW0JCQkqcmVnczsKPiAgCXN0cnVjdCByZWdtYXAJCQkqc3lzcmVn Owo+IC0Jc3RydWN0IGZpbWRfd2luX2RhdGEJCXdpbl9kYXRhW1dJTkRPV1NfTlJdOwo+ICAJdW5z aWduZWQgaW50CQkJZGVmYXVsdF93aW47Cj4gIAl1bnNpZ25lZCBsb25nCQkJaXJxX2ZsYWdzOwo+ ICAJdTMyCQkJCXZpZGNvbjA7Cj4gQEAgLTUwNiw1OCArNDkxLDkgQEAgc3RhdGljIHZvaWQgZmlt ZF9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQo+ICAJfQo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBmaW1kX3dpbl9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2RybV9j cnRjICpjcnRjLAo+IC0JCQlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUpCj4gLXsKPiAt CXN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKPiAtCXN0cnVjdCBmaW1kX3dp bl9kYXRhICp3aW5fZGF0YTsKPiAtCWludCB3aW47Cj4gLQl1bnNpZ25lZCBsb25nIG9mZnNldDsK PiAtCj4gLQlpZiAoIXBsYW5lKSB7Cj4gLQkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsK PiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+IC0Jd2luID0gcGxhbmUtPnpwb3M7Cj4gLQlpZiAod2lu ID09IERFRkFVTFRfWlBPUykKPiAtCQl3aW4gPSBjdHgtPmRlZmF1bHRfd2luOwo+IC0KPiAtCWlm ICh3aW4gPCAwIHx8IHdpbiA+PSBXSU5ET1dTX05SKQo+IC0JCXJldHVybjsKPiAtCj4gLQlvZmZz ZXQgPSBwbGFuZS0+ZmJfeCAqIChwbGFuZS0+YnBwID4+IDMpOwo+IC0Jb2Zmc2V0ICs9IHBsYW5l LT5mYl95ICogcGxhbmUtPnBpdGNoOwo+IC0KPiAtCURSTV9ERUJVR19LTVMoIm9mZnNldCA9IDB4 JWx4LCBwaXRjaCA9ICV4XG4iLCBvZmZzZXQsIHBsYW5lLT5waXRjaCk7Cj4gLQo+IC0Jd2luX2Rh dGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+IC0KPiAtCXdpbl9kYXRhLT5vZmZzZXRfeCA9IHBs YW5lLT5jcnRjX3g7Cj4gLQl3aW5fZGF0YS0+b2Zmc2V0X3kgPSBwbGFuZS0+Y3J0Y195Owo+IC0J d2luX2RhdGEtPm92bF93aWR0aCA9IHBsYW5lLT5jcnRjX3dpZHRoOwo+IC0Jd2luX2RhdGEtPm92 bF9oZWlnaHQgPSBwbGFuZS0+Y3J0Y19oZWlnaHQ7Cj4gLQl3aW5fZGF0YS0+ZmJfd2lkdGggPSBw bGFuZS0+ZmJfd2lkdGg7Cj4gLQl3aW5fZGF0YS0+ZmJfaGVpZ2h0ID0gcGxhbmUtPmZiX2hlaWdo dDsKPiAtCXdpbl9kYXRhLT5kbWFfYWRkciA9IHBsYW5lLT5kbWFfYWRkclswXSArIG9mZnNldDsK PiAtCXdpbl9kYXRhLT5icHAgPSBwbGFuZS0+YnBwOwo+IC0Jd2luX2RhdGEtPnBpeGVsX2Zvcm1h dCA9IHBsYW5lLT5waXhlbF9mb3JtYXQ7Cj4gLQl3aW5fZGF0YS0+YnVmX29mZnNpemUgPSAocGxh bmUtPmZiX3dpZHRoIC0gcGxhbmUtPmNydGNfd2lkdGgpICoKPiAtCQkJCShwbGFuZS0+YnBwID4+ IDMpOwo+IC0Jd2luX2RhdGEtPmxpbmVfc2l6ZSA9IHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5l LT5icHAgPj4gMyk7Cj4gLQo+IC0JRFJNX0RFQlVHX0tNUygib2Zmc2V0X3ggPSAlZCwgb2Zmc2V0 X3kgPSAlZFxuIiwKPiAtCQkJd2luX2RhdGEtPm9mZnNldF94LCB3aW5fZGF0YS0+b2Zmc2V0X3kp Owo+IC0JRFJNX0RFQlVHX0tNUygib3ZsX3dpZHRoID0gJWQsIG92bF9oZWlnaHQgPSAlZFxuIiwK PiAtCQkJd2luX2RhdGEtPm92bF93aWR0aCwgd2luX2RhdGEtPm92bF9oZWlnaHQpOwo+IC0JRFJN X0RFQlVHX0tNUygicGFkZHIgPSAweCVseFxuIiwgKHVuc2lnbmVkIGxvbmcpd2luX2RhdGEtPmRt YV9hZGRyKTsKPiAtCURSTV9ERUJVR19LTVMoImZiX3dpZHRoID0gJWQsIGNydGNfd2lkdGggPSAl ZFxuIiwKPiAtCQkJcGxhbmUtPmZiX3dpZHRoLCBwbGFuZS0+Y3J0Y193aWR0aCk7Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGZpbWRfd2luX3NldF9waXhmbXQoc3RydWN0IGZpbWRfY29udGV4dCAq Y3R4LCB1bnNpZ25lZCBpbnQgd2luKQo+ICB7Cj4gLQlzdHJ1Y3QgZmltZF93aW5fZGF0YSAqd2lu X2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUg KnBsYW5lID0gJmN0eC0+cGxhbmVzW3dpbl07Cj4gIAl1bnNpZ25lZCBsb25nIHZhbDsKPiAgCj4g IAl2YWwgPSBXSU5DT054X0VOV0lOOwo+IEBAIC01NjcsMTEgKzUwMywxMSBAQCBzdGF0aWMgdm9p ZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCwgdW5zaWduZWQg aW50IHdpbikKPiAgCSAqIFNvIHRoZSByZXF1ZXN0IGZvcm1hdCBpcyBBUkdCODg4OCB0aGVuIGNo YW5nZSBpdCB0byBYUkdCODg4OC4KPiAgCSAqLwo+ICAJaWYgKGN0eC0+ZHJpdmVyX2RhdGEtPmhh c19saW1pdGVkX2ZtdCAmJiAhd2luKSB7Cj4gLQkJaWYgKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQg PT0gRFJNX0ZPUk1BVF9BUkdCODg4OCkKPiAtCQkJd2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9IERS TV9GT1JNQVRfWFJHQjg4ODg7Cj4gKwkJaWYgKHBsYW5lLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9BUkdCODg4OCkKPiArCQkJcGxhbmUtPnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJH Qjg4ODg7Cj4gIAl9Cj4gIAo+IC0Jc3dpdGNoICh3aW5fZGF0YS0+cGl4ZWxfZm9ybWF0KSB7Cj4g Kwlzd2l0Y2ggKHBsYW5lLT5waXhlbF9mb3JtYXQpIHsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9DODoK PiAgCQl2YWwgfD0gV0lOQ09OMF9CUFBNT0RFXzhCUFBfUEFMRVRURTsKPiAgCQl2YWwgfD0gV0lO Q09OeF9CVVJTVExFTl84V09SRDsKPiBAQCAtNjA3LDcgKzU0Myw3IEBAIHN0YXRpYyB2b2lkIGZp bWRfd2luX3NldF9waXhmbXQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQg d2luKQo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCURSTV9ERUJVR19LTVMoImJwcCA9ICVkXG4i LCB3aW5fZGF0YS0+YnBwKTsKPiArCURSTV9ERUJVR19LTVMoImJwcCA9ICVkXG4iLCBwbGFuZS0+ YnBwKTsKPiAgCj4gIAkvKgo+ICAJICogSW4gY2FzZSBvZiBleHlub3MsIHNldHRpbmcgZG1hLWJ1 cnN0IHRvIDE2V29yZCBjYXVzZXMgcGVybWFuZW50Cj4gQEAgLTYxNyw3ICs1NTMsNyBAQCBzdGF0 aWMgdm9pZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCwgdW5z aWduZWQgaW50IHdpbikKPiAgCSAqIG1vdmVtZW50IGNhdXNlcyB1bnN0YWJsZSBETUEgd2hpY2gg cmVzdWx0cyBpbnRvIGlvbW11IGNyYXNoL3RlYXIuCj4gIAkgKi8KPiAgCj4gLQlpZiAod2luX2Rh dGEtPmZiX3dpZHRoIDwgTUlOX0ZCX1dJRFRIX0ZPUl8xNldPUkRfQlVSU1QpIHsKPiArCWlmIChw bGFuZS0+ZmJfd2lkdGggPCBNSU5fRkJfV0lEVEhfRk9SXzE2V09SRF9CVVJTVCkgewo+ICAJCXZh bCAmPSB+V0lOQ09OeF9CVVJTVExFTl9NQVNLOwo+ICAJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVO XzRXT1JEOwo+ICAJfQo+IEBAIC02NjgsMTEgKzYwNCwxMSBAQCBzdGF0aWMgdm9pZCBmaW1kX3No YWRvd19wcm90ZWN0X3dpbihzdHJ1Y3QgZmltZF9jb250ZXh0ICpjdHgsCj4gIHN0YXRpYyB2b2lk IGZpbWRfd2luX2NvbW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykK PiAgewo+ICAJc3RydWN0IGZpbWRfY29udGV4dCAqY3R4ID0gY3J0Yy0+Y3R4Owo+IC0Jc3RydWN0 IGZpbWRfd2luX2RhdGEgKndpbl9kYXRhOwo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBs YW5lOwo+ICAJaW50IHdpbiA9IHpwb3M7Cj4gLQl1bnNpZ25lZCBsb25nIHZhbCwgYWxwaGEsIHNp emU7Cj4gLQl1bnNpZ25lZCBpbnQgbGFzdF94Owo+IC0JdW5zaWduZWQgaW50IGxhc3RfeTsKPiAr CWRtYV9hZGRyX3QgZG1hX2FkZHI7Cj4gKwl1bnNpZ25lZCBsb25nIHZhbCwgYWxwaGEsIHNpemUs IG9mZnNldDsKPiArCXVuc2lnbmVkIGludCBsYXN0X3gsIGxhc3RfeSwgYnVmX29mZnNpemUsIGxp bmVfc2l6ZTsKPiAgCj4gIAlpZiAoY3R4LT5zdXNwZW5kZWQpCj4gIAkJcmV0dXJuOwo+IEBAIC02 ODMsMTEgKzYxOSwxMSBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9jb21taXQoc3RydWN0IGV4eW5v c19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4gIAlpZiAod2luIDwgMCB8fCB3aW4gPj0gV0lO RE9XU19OUikKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3 aW5dOwo+ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKPiAgCj4gIAkvKiBJZiBzdXNwZW5k ZWQsIGVuYWJsZSB0aGlzIG9uIHJlc3VtZSAqLwo+ICAJaWYgKGN0eC0+c3VzcGVuZGVkKSB7Cj4g LQkJd2luX2RhdGEtPnJlc3VtZSA9IHRydWU7Cj4gKwkJcGxhbmUtPnJlc3VtZSA9IHRydWU7Cj4g IAkJcmV0dXJuOwo+ICAJfQo+ICAKPiBAQCAtNzA0LDM4ICs2NDAsNDUgQEAgc3RhdGljIHZvaWQg ZmltZF93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+ ICAJLyogcHJvdGVjdCB3aW5kb3dzICovCj4gIAlmaW1kX3NoYWRvd19wcm90ZWN0X3dpbihjdHgs IHdpbiwgdHJ1ZSk7Cj4gIAo+ICsKPiArCW9mZnNldCA9IHBsYW5lLT5mYl94ICogKHBsYW5lLT5i cHAgPj4gMyk7Cj4gKwlvZmZzZXQgKz0gcGxhbmUtPmZiX3kgKiBwbGFuZS0+cGl0Y2g7Cj4gKwo+ ICAJLyogYnVmZmVyIHN0YXJ0IGFkZHJlc3MgKi8KPiAtCXZhbCA9ICh1bnNpZ25lZCBsb25nKXdp bl9kYXRhLT5kbWFfYWRkcjsKPiArCWRtYV9hZGRyID0gcGxhbmUtPmRtYV9hZGRyWzBdICsgb2Zm c2V0Owo+ICsJdmFsID0gKHVuc2lnbmVkIGxvbmcpZG1hX2FkZHI7Cj4gIAl3cml0ZWwodmFsLCBj dHgtPnJlZ3MgKyBWSURXeF9CVUZfU1RBUlQod2luLCAwKSk7Cj4gIAo+ICAJLyogYnVmZmVyIGVu ZCBhZGRyZXNzICovCj4gLQlzaXplID0gd2luX2RhdGEtPmZiX3dpZHRoICogd2luX2RhdGEtPm92 bF9oZWlnaHQgKiAod2luX2RhdGEtPmJwcCA+PiAzKTsKPiAtCXZhbCA9ICh1bnNpZ25lZCBsb25n KSh3aW5fZGF0YS0+ZG1hX2FkZHIgKyBzaXplKTsKPiArCXNpemUgPSBwbGFuZS0+ZmJfd2lkdGgg KiBwbGFuZS0+Y3J0Y19oZWlnaHQgKiAocGxhbmUtPmJwcCA+PiAzKTsKPiArCXZhbCA9ICh1bnNp Z25lZCBsb25nKShkbWFfYWRkciArIHNpemUpOwo+ICAJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsg VklEV3hfQlVGX0VORCh3aW4sIDApKTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJzdGFydCBhZGRy ID0gMHglbHgsIGVuZCBhZGRyID0gMHglbHgsIHNpemUgPSAweCVseFxuIiwKPiAtCQkJKHVuc2ln bmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRyLCB2YWwsIHNpemUpOwo+ICsJCQkodW5zaWduZWQg bG9uZylkbWFfYWRkciwgdmFsLCBzaXplKTsKPiAgCURSTV9ERUJVR19LTVMoIm92bF93aWR0aCA9 ICVkLCBvdmxfaGVpZ2h0ID0gJWRcbiIsCj4gLQkJCXdpbl9kYXRhLT5vdmxfd2lkdGgsIHdpbl9k YXRhLT5vdmxfaGVpZ2h0KTsKPiArCQkJcGxhbmUtPmNydGNfd2lkdGgsIHBsYW5lLT5jcnRjX2hl aWdodCk7Cj4gIAo+ICAJLyogYnVmZmVyIHNpemUgKi8KPiAtCXZhbCA9IFZJRFdfQlVGX1NJWkVf T0ZGU0VUKHdpbl9kYXRhLT5idWZfb2Zmc2l6ZSkgfAo+IC0JCVZJRFdfQlVGX1NJWkVfUEFHRVdJ RFRIKHdpbl9kYXRhLT5saW5lX3NpemUpIHwKPiAtCQlWSURXX0JVRl9TSVpFX09GRlNFVF9FKHdp bl9kYXRhLT5idWZfb2Zmc2l6ZSkgfAo+IC0JCVZJRFdfQlVGX1NJWkVfUEFHRVdJRFRIX0Uod2lu X2RhdGEtPmxpbmVfc2l6ZSk7Cj4gKwlidWZfb2Zmc2l6ZSA9IChwbGFuZS0+ZmJfd2lkdGggLSBw bGFuZS0+Y3J0Y193aWR0aCkgKiAocGxhbmUtPmJwcCA+PiAzKTsKPiArCWxpbmVfc2l6ZSA9IHBs YW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5icHAgPj4gMyk7Cj4gKwl2YWwgPSBWSURXX0JVRl9T SVpFX09GRlNFVChidWZfb2Zmc2l6ZSkgfAo+ICsJCVZJRFdfQlVGX1NJWkVfUEFHRVdJRFRIKGxp bmVfc2l6ZSkgfAo+ICsJCVZJRFdfQlVGX1NJWkVfT0ZGU0VUX0UoYnVmX29mZnNpemUpIHwKPiAr CQlWSURXX0JVRl9TSVpFX1BBR0VXSURUSF9FKGxpbmVfc2l6ZSk7Cj4gIAl3cml0ZWwodmFsLCBj dHgtPnJlZ3MgKyBWSURXeF9CVUZfU0laRSh3aW4sIDApKTsKPiAgCj4gIAkvKiBPU0QgcG9zaXRp b24gKi8KPiAtCXZhbCA9IFZJRE9TRHhBX1RPUExFRlRfWCh3aW5fZGF0YS0+b2Zmc2V0X3gpIHwK PiAtCQlWSURPU0R4QV9UT1BMRUZUX1kod2luX2RhdGEtPm9mZnNldF95KSB8Cj4gLQkJVklET1NE eEFfVE9QTEVGVF9YX0Uod2luX2RhdGEtPm9mZnNldF94KSB8Cj4gLQkJVklET1NEeEFfVE9QTEVG VF9ZX0Uod2luX2RhdGEtPm9mZnNldF95KTsKPiArCXZhbCA9IFZJRE9TRHhBX1RPUExFRlRfWChw bGFuZS0+Y3J0Y194KSB8Cj4gKwkJVklET1NEeEFfVE9QTEVGVF9ZKHBsYW5lLT5jcnRjX3kpIHwK PiArCQlWSURPU0R4QV9UT1BMRUZUX1hfRShwbGFuZS0+Y3J0Y194KSB8Cj4gKwkJVklET1NEeEFf VE9QTEVGVF9ZX0UocGxhbmUtPmNydGNfeSk7Cj4gIAl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBW SURPU0RfQSh3aW4pKTsKPiAgCj4gLQlsYXN0X3ggPSB3aW5fZGF0YS0+b2Zmc2V0X3ggKyB3aW5f ZGF0YS0+b3ZsX3dpZHRoOwo+ICsJbGFzdF94ID0gcGxhbmUtPmNydGNfeCArIHBsYW5lLT5jcnRj X3dpZHRoOwo+ICAJaWYgKGxhc3RfeCkKPiAgCQlsYXN0X3gtLTsKPiAtCWxhc3RfeSA9IHdpbl9k YXRhLT5vZmZzZXRfeSArIHdpbl9kYXRhLT5vdmxfaGVpZ2h0Owo+ICsJbGFzdF95ID0gcGxhbmUt PmNydGNfeSArIHBsYW5lLT5jcnRjX2hlaWdodDsKPiAgCWlmIChsYXN0X3kpCj4gIAkJbGFzdF95 LS07Cj4gIAo+IEBAIC03NDUsNyArNjg4LDcgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fY29tbWl0 KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+ICAJd3JpdGVsKHZhbCwg Y3R4LT5yZWdzICsgVklET1NEX0Iod2luKSk7Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygib3NkIHBv czogdHggPSAlZCwgdHkgPSAlZCwgYnggPSAlZCwgYnkgPSAlZFxuIiwKPiAtCQkJd2luX2RhdGEt Pm9mZnNldF94LCB3aW5fZGF0YS0+b2Zmc2V0X3ksIGxhc3RfeCwgbGFzdF95KTsKPiArCQkJcGxh bmUtPmNydGNfeCwgcGxhbmUtPmNydGNfeSwgbGFzdF94LCBsYXN0X3kpOwo+ICAKPiAgCS8qIGhh cmR3YXJlIHdpbmRvdyAwIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYSBjaGFubmVsLiAqLwo+ICAJaWYg KHdpbiAhPSAwKSB7Cj4gQEAgLTc2Miw3ICs3MDUsNyBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9j b21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4gIAkJdTMyIG9m ZnNldCA9IFZJRE9TRF9EKHdpbik7Cj4gIAkJaWYgKHdpbiA9PSAwKQo+ICAJCQlvZmZzZXQgPSBW SURPU0RfQyh3aW4pOwo+IC0JCXZhbCA9IHdpbl9kYXRhLT5vdmxfd2lkdGggKiB3aW5fZGF0YS0+ b3ZsX2hlaWdodDsKPiArCQl2YWwgPSBwbGFuZS0+Y3J0Y193aWR0aCAqIHBsYW5lLT5jcnRjX2hl aWdodDsKPiAgCQl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBvZmZzZXQpOwo+ICAKPiAgCQlEUk1f REVCVUdfS01TKCJvc2Qgc2l6ZSA9IDB4JXhcbiIsICh1bnNpZ25lZCBpbnQpdmFsKTsKPiBAQCAt NzgyLDcgKzcyNSw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2NvbW1pdChzdHJ1Y3QgZXh5bm9z X2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPiAgCS8qIEVuYWJsZSBETUEgY2hhbm5lbCBhbmQg dW5wcm90ZWN0IHdpbmRvd3MgKi8KPiAgCWZpbWRfc2hhZG93X3Byb3RlY3Rfd2luKGN0eCwgd2lu LCBmYWxzZSk7Cj4gIAo+IC0Jd2luX2RhdGEtPmVuYWJsZWQgPSB0cnVlOwo+ICsJcGxhbmUtPmVu YWJsZWQgPSB0cnVlOwo+ICAKPiAgCWlmIChjdHgtPmk4MF9pZikKPiAgCQlhdG9taWNfc2V0KCZj dHgtPndpbl91cGRhdGVkLCAxKTsKPiBAQCAtNzkxLDcgKzczNCw3IEBAIHN0YXRpYyB2b2lkIGZp bWRfd2luX2NvbW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPiAg c3RhdGljIHZvaWQgZmltZF93aW5fZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRj LCBpbnQgenBvcykKPiAgewo+ICAJc3RydWN0IGZpbWRfY29udGV4dCAqY3R4ID0gY3J0Yy0+Y3R4 Owo+IC0Jc3RydWN0IGZpbWRfd2luX2RhdGEgKndpbl9kYXRhOwo+ICsJc3RydWN0IGV4eW5vc19k cm1fcGxhbmUgKnBsYW5lOwo+ICAJaW50IHdpbiA9IHpwb3M7Cj4gIAo+ICAJaWYgKHdpbiA9PSBE RUZBVUxUX1pQT1MpCj4gQEAgLTgwMCwxMSArNzQzLDExIEBAIHN0YXRpYyB2b2lkIGZpbWRfd2lu X2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4gIAlpZiAo d2luIDwgMCB8fCB3aW4gPj0gV0lORE9XU19OUikKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jd2luX2Rh dGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsK PiAgCj4gIAlpZiAoY3R4LT5zdXNwZW5kZWQpIHsKPiAgCQkvKiBkbyBub3QgcmVzdW1lIHRoaXMg d2luZG93Ki8KPiAtCQl3aW5fZGF0YS0+cmVzdW1lID0gZmFsc2U7Cj4gKwkJcGxhbmUtPnJlc3Vt ZSA9IGZhbHNlOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gQEAgLTgxOSw0MiArNzYyLDQyIEBA IHN0YXRpYyB2b2lkIGZpbWRfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0 YywgaW50IHpwb3MpCj4gIAkvKiB1bnByb3RlY3Qgd2luZG93cyAqLwo+ICAJZmltZF9zaGFkb3df cHJvdGVjdF93aW4oY3R4LCB3aW4sIGZhbHNlKTsKPiAgCj4gLQl3aW5fZGF0YS0+ZW5hYmxlZCA9 IGZhbHNlOwo+ICsJcGxhbmUtPmVuYWJsZWQgPSBmYWxzZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgZmltZF93aW5kb3dfc3VzcGVuZChzdHJ1Y3QgZmltZF9jb250ZXh0ICpjdHgpCj4gIHsKPiAt CXN0cnVjdCBmaW1kX3dpbl9kYXRhICp3aW5fZGF0YTsKPiArCXN0cnVjdCBleHlub3NfZHJtX3Bs YW5lICpwbGFuZTsKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBXSU5ET1dTX05S OyBpKyspIHsKPiAtCQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwo+IC0JCXdpbl9kYXRh LT5yZXN1bWUgPSB3aW5fZGF0YS0+ZW5hYmxlZDsKPiAtCQlpZiAod2luX2RhdGEtPmVuYWJsZWQp Cj4gKwkJcGxhbmUgPSAmY3R4LT5wbGFuZXNbaV07Cj4gKwkJcGxhbmUtPnJlc3VtZSA9IHBsYW5l LT5lbmFibGVkOwo+ICsJCWlmIChwbGFuZS0+ZW5hYmxlZCkKPiAgCQkJZmltZF93aW5fZGlzYWJs ZShjdHgtPmNydGMsIGkpOwo+ICAJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBmaW1kX3dpbmRv d19yZXN1bWUoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4KQo+ICB7Cj4gLQlzdHJ1Y3QgZmltZF93 aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4g IAlpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Cj4gLQkJ d2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKPiAtCQl3aW5fZGF0YS0+ZW5hYmxlZCA9IHdp bl9kYXRhLT5yZXN1bWU7Cj4gLQkJd2luX2RhdGEtPnJlc3VtZSA9IGZhbHNlOwo+ICsJCXBsYW5l ID0gJmN0eC0+cGxhbmVzW2ldOwo+ICsJCXBsYW5lLT5lbmFibGVkID0gcGxhbmUtPnJlc3VtZTsK PiArCQlwbGFuZS0+cmVzdW1lID0gZmFsc2U7Cj4gIAl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lk IGZpbWRfYXBwbHkoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4KQo+ICB7Cj4gLQlzdHJ1Y3QgZmlt ZF93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7 Cj4gIAlpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Cj4g LQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKPiAtCQlpZiAod2luX2RhdGEtPmVuYWJs ZWQpCj4gKwkJcGxhbmUgPSAmY3R4LT5wbGFuZXNbaV07Cj4gKwkJaWYgKHBsYW5lLT5lbmFibGVk KQo+ICAJCQlmaW1kX3dpbl9jb21taXQoY3R4LT5jcnRjLCBpKTsKPiAgCQllbHNlCj4gIAkJCWZp bWRfd2luX2Rpc2FibGUoY3R4LT5jcnRjLCBpKTsKPiBAQCAtMTAxMSw3ICs5NTQsNiBAQCBzdGF0 aWMgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMgZmltZF9jcnRjX29wcyA9IHsKPiAgCS5lbmFi bGVfdmJsYW5rID0gZmltZF9lbmFibGVfdmJsYW5rLAo+ICAJLmRpc2FibGVfdmJsYW5rID0gZmlt ZF9kaXNhYmxlX3ZibGFuaywKPiAgCS53YWl0X2Zvcl92YmxhbmsgPSBmaW1kX3dhaXRfZm9yX3Zi bGFuaywKPiAtCS53aW5fbW9kZV9zZXQgPSBmaW1kX3dpbl9tb2RlX3NldCwKPiAgCS53aW5fY29t bWl0ID0gZmltZF93aW5fY29tbWl0LAo+ICAJLndpbl9kaXNhYmxlID0gZmltZF93aW5fZGlzYWJs ZSwKPiAgCS50ZV9oYW5kbGVyID0gZmltZF90ZV9oYW5kbGVyLAo+IEBAIC0xMDU2LDcgKzk5OCwx NiBAQCBzdGF0aWMgaW50IGZpbWRfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgewo+ICAJc3RydWN0IGZpbWRfY29udGV4dCAqY3R4 ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9 IGRhdGE7Cj4gLQlpbnQgcmV0Owo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19w bGFuZTsKPiArCWVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZTsKPiArCWludCBpLCByZXQ7Cj4gKwo+ ICsJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgewo+ICsJCXR5cGUgPSAoaSA9PSBj dHgtPmRlZmF1bHRfd2luKSA/IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgOgo+ICsJCQkJCQlEUk1f UExBTkVfVFlQRV9PVkVSTEFZOwo+ICsJCWV4eW5vc19wbGFuZV9pbml0KGRybV9kZXYsICZjdHgt PnBsYW5lc1tpXSwgMSA8PCBjdHgtPnBpcGUsCj4gKwkJCQkgIHR5cGUpOwo+ICsJfQo+ICAKPiAg CXJldCA9IGZpbWRfY3R4X2luaXRpYWxpemUoY3R4LCBkcm1fZGV2KTsKPiAgCWlmIChyZXQpIHsK PiBAQCAtMTA2NCw4ICsxMDE1LDkgQEAgc3RhdGljIGludCBmaW1kX2JpbmQoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCX0KPiAgCj4gLQljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9k ZXYsIGN0eC0+cGlwZSwKPiAtCQkJCQkgICBFWFlOT1NfRElTUExBWV9UWVBFX0xDRCwKPiArCWV4 eW5vc19wbGFuZSA9ICZjdHgtPnBsYW5lc1tjdHgtPmRlZmF1bHRfd2luXTsKPiArCWN0eC0+Y3J0 YyA9IGV4eW5vc19kcm1fY3J0Y19jcmVhdGUoZHJtX2RldiwgJmV4eW5vc19wbGFuZS0+YmFzZSwK PiArCQkJCQkgICBjdHgtPnBpcGUsIEVYWU5PU19ESVNQTEFZX1RZUEVfTENELAo+ICAJCQkJCSAg ICZmaW1kX2NydGNfb3BzLCBjdHgpOwo+ICAJaWYgKElTX0VSUihjdHgtPmNydGMpKSB7Cj4gIAkJ ZmltZF9jdHhfcmVtb3ZlKGN0eCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X3BsYW5lLmMKPiBpbmRleCAzNThjZmY2Li5kYzEzNjIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKPiBAQCAtOTMsNyArOTMsNiBAQCB2b2lkIGV4eW5v c19wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJCQkgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKPiAgewo+ICAJ c3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFuZSA9IHRvX2V4eW5vc19wbGFuZShw bGFuZSk7Cj4gLQlzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpleHlub3NfY3J0YyA9IHRvX2V4eW5v c19jcnRjKGNydGMpOwo+ICAJdW5zaWduZWQgaW50IGFjdHVhbF93Owo+ICAJdW5zaWduZWQgaW50 IGFjdHVhbF9oOwo+ICAKPiBAQCAtMTQwLDkgKzEzOSw2IEBAIHZvaWQgZXh5bm9zX3BsYW5lX21v ZGVfc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJCWV4eW5vc19wbGFuZS0+Y3J0Y193aWR0aCwgZXh5bm9zX3BsYW5lLT5jcnRjX2hlaWdodCk7 Cj4gIAo+ICAJcGxhbmUtPmNydGMgPSBjcnRjOwo+IC0KPiAtCWlmIChleHlub3NfY3J0Yy0+b3Bz LT53aW5fbW9kZV9zZXQpCj4gLQkJZXh5bm9zX2NydGMtPm9wcy0+d2luX21vZGVfc2V0KGV4eW5v c19jcnRjLCBleHlub3NfcGxhbmUpOwo+ICB9Cj4gIAo+ICB2b2lkIGV4eW5vc19wbGFuZV9kcG1z KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBpbnQgbW9kZSkKPiBAQCAtMjU1LDI0ICsyNTEsMTgg QEAgc3RhdGljIHZvaWQgZXh5bm9zX3BsYW5lX2F0dGFjaF96cG9zX3Byb3BlcnR5KHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKQo+ICAJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5i YXNlLCBwcm9wLCAwKTsKPiAgfQo+ICAKPiAtc3RydWN0IGRybV9wbGFuZSAqZXh5bm9zX3BsYW5l X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJCSAgICB1bnNpZ25lZCBsb25nIHBv c3NpYmxlX2NydGNzLAo+IC0JCQkJICAgIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSkKPiAraW50 IGV4eW5vc19wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJICAgICAgc3Ry dWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFuZSwKPiArCQkgICAgICB1bnNpZ25lZCBs b25nIHBvc3NpYmxlX2NydGNzLCBlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUpCj4gIHsKPiAtCXN0 cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7Cj4gIAlpbnQgZXJyOwo+ICAKPiAt CWV4eW5vc19wbGFuZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHlub3NfZHJtX3BsYW5lKSwg R0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWV4eW5vc19wbGFuZSkKPiAtCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiAtCj4gIAllcnIgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCAmZXh5 bm9zX3BsYW5lLT5iYXNlLCBwb3NzaWJsZV9jcnRjcywKPiAgCQkJCSAgICAgICAmZXh5bm9zX3Bs YW5lX2Z1bmNzLCBmb3JtYXRzLAo+ICAJCQkJICAgICAgIEFSUkFZX1NJWkUoZm9ybWF0cyksIHR5 cGUpOwo+ICAJaWYgKGVycikgewo+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGluaXRpYWxpemUg cGxhbmVcbiIpOwo+IC0JCWtmcmVlKGV4eW5vc19wbGFuZSk7Cj4gLQkJcmV0dXJuIEVSUl9QVFIo ZXJyKTsKPiArCQlyZXR1cm4gZXJyOwo+ICAJfQo+ICAKPiAgCWlmICh0eXBlID09IERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpCj4gQEAgLTI4MCw1ICsyNzAsNSBAQCBzdHJ1Y3QgZHJtX3BsYW5lICpl eHlub3NfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJZWxzZQo+ICAJCWV4 eW5vc19wbGFuZV9hdHRhY2hfenBvc19wcm9wZXJ0eSgmZXh5bm9zX3BsYW5lLT5iYXNlKTsKPiAg Cj4gLQlyZXR1cm4gJmV4eW5vc19wbGFuZS0+YmFzZTsKPiArCXJldHVybiAwOwo+ICB9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5oIGIvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmgKPiBpbmRleCA1OWQ0MDc1Li4x MDBjYTVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9w bGFuZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmgK PiBAQCAtMjEsNiArMjEsNiBAQCBpbnQgZXh5bm9zX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQl1aW50MzJfdCBzcmNfeCwg dWludDMyX3Qgc3JjX3ksCj4gIAkJCXVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCk7Cj4g IHZvaWQgZXh5bm9zX3BsYW5lX2RwbXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIGludCBtb2Rl KTsKPiAtc3RydWN0IGRybV9wbGFuZSAqZXh5bm9zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAtCQkJCSAgICB1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzLAo+IC0JCQkJ ICAgIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSk7Cj4gK2ludCBleHlub3NfcGxhbmVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCSAgICAgIHN0cnVjdCBleHlub3NfZHJtX3BsYW5l ICpleHlub3NfcGxhbmUsCj4gKwkJICAgICAgdW5zaWduZWQgbG9uZyBwb3NzaWJsZV9jcnRjcywg ZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX3ZpZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV92aWRpLmMKPiBpbmRleCBiODg2OTcyLi4wOGM3YTFlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV92aWRpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jCj4gQEAgLTIzLDYgKzIzLDcgQEAKPiAgCj4gICNp bmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgo+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9jcnRjLmgi Cj4gKyNpbmNsdWRlICJleHlub3NfZHJtX3BsYW5lLmgiCj4gICNpbmNsdWRlICJleHlub3NfZHJt X2VuY29kZXIuaCIKPiAgI2luY2x1ZGUgImV4eW5vc19kcm1fdmlkaS5oIgo+ICAKPiBAQCAtMzIs MjAgKzMzLDYgQEAKPiAgI2RlZmluZSBjdHhfZnJvbV9jb25uZWN0b3IoYykJY29udGFpbmVyX29m KGMsIHN0cnVjdCB2aWRpX2NvbnRleHQsIFwKPiAgCQkJCQljb25uZWN0b3IpCj4gIAo+IC1zdHJ1 Y3QgdmlkaV93aW5fZGF0YSB7Cj4gLQl1bnNpZ25lZCBpbnQJCW9mZnNldF94Owo+IC0JdW5zaWdu ZWQgaW50CQlvZmZzZXRfeTsKPiAtCXVuc2lnbmVkIGludAkJb3ZsX3dpZHRoOwo+IC0JdW5zaWdu ZWQgaW50CQlvdmxfaGVpZ2h0Owo+IC0JdW5zaWduZWQgaW50CQlmYl93aWR0aDsKPiAtCXVuc2ln bmVkIGludAkJZmJfaGVpZ2h0Owo+IC0JdW5zaWduZWQgaW50CQlicHA7Cj4gLQlkbWFfYWRkcl90 CQlkbWFfYWRkcjsKPiAtCXVuc2lnbmVkIGludAkJYnVmX29mZnNpemU7Cj4gLQl1bnNpZ25lZCBp bnQJCWxpbmVfc2l6ZTsJLyogYnl0ZXMgKi8KPiAtCWJvb2wJCQllbmFibGVkOwo+IC19Owo+IC0K PiAgc3RydWN0IHZpZGlfY29udGV4dCB7Cj4gIAlzdHJ1Y3QgZXh5bm9zX2RybV9kaXNwbGF5CWRp c3BsYXk7Cj4gIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCQkqcGRldjsKPiBAQCAtNTMsNyArNDAs NyBAQCBzdHJ1Y3QgdmlkaV9jb250ZXh0IHsKPiAgCXN0cnVjdCBleHlub3NfZHJtX2NydGMJCSpj cnRjOwo+ICAJc3RydWN0IGRybV9lbmNvZGVyCQkqZW5jb2RlcjsKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yCQljb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgdmlkaV93aW5fZGF0YQkJd2luX2RhdGFbV0lO RE9XU19OUl07Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZQkJcGxhbmVzW1dJTkRPV1NfTlJd Owo+ICAJc3RydWN0IGVkaWQJCQkqcmF3X2VkaWQ7Cj4gIAl1bnNpZ25lZCBpbnQJCQljbGtkaXY7 Cj4gIAl1bnNpZ25lZCBpbnQJCQlkZWZhdWx0X3dpbjsKPiBAQCAtOTcsMTkgKzg0LDYgQEAgc3Rh dGljIGNvbnN0IGNoYXIgZmFrZV9lZGlkX2luZm9bXSA9IHsKPiAgCTB4MDAsIDB4MDAsIDB4MDAs IDB4MDYKPiAgfTsKPiAgCj4gLXN0YXRpYyB2b2lkIHZpZGlfYXBwbHkoc3RydWN0IHZpZGlfY29u dGV4dCAqY3R4KQo+IC17Cj4gLQlzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyAqY3J0Y19vcHMg PSBjdHgtPmNydGMtPm9wczsKPiAtCXN0cnVjdCB2aWRpX3dpbl9kYXRhICp3aW5fZGF0YTsKPiAt CWludCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBXSU5ET1dTX05SOyBpKyspIHsKPiAtCQl3 aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwo+IC0JCWlmICh3aW5fZGF0YS0+ZW5hYmxlZCAm JiAoY3J0Y19vcHMgJiYgY3J0Y19vcHMtPndpbl9jb21taXQpKQo+IC0JCQljcnRjX29wcy0+d2lu X2NvbW1pdChjdHgtPmNydGMsIGkpOwo+IC0JfQo+IC19Cj4gLQo+ICBzdGF0aWMgaW50IHZpZGlf ZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1 Y3QgdmlkaV9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4gQEAgLTE0Myw2MyArMTE3LDEwIEBA IHN0YXRpYyB2b2lkIHZpZGlfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YykKPiAgCQljdHgtPnZibGFua19vbiA9IGZhbHNlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCB2aWRpX3dpbl9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLAo+IC0JCQlz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUpCj4gLXsKPiAtCXN0cnVjdCB2aWRpX2NvbnRl eHQgKmN0eCA9IGNydGMtPmN0eDsKPiAtCXN0cnVjdCB2aWRpX3dpbl9kYXRhICp3aW5fZGF0YTsK PiAtCWludCB3aW47Cj4gLQl1bnNpZ25lZCBsb25nIG9mZnNldDsKPiAtCj4gLQlpZiAoIXBsYW5l KSB7Cj4gLQkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsKPiAtCQlyZXR1cm47Cj4gLQl9 Cj4gLQo+IC0Jd2luID0gcGxhbmUtPnpwb3M7Cj4gLQlpZiAod2luID09IERFRkFVTFRfWlBPUykK PiAtCQl3aW4gPSBjdHgtPmRlZmF1bHRfd2luOwo+IC0KPiAtCWlmICh3aW4gPCAwIHx8IHdpbiA+ PSBXSU5ET1dTX05SKQo+IC0JCXJldHVybjsKPiAtCj4gLQlvZmZzZXQgPSBwbGFuZS0+ZmJfeCAq IChwbGFuZS0+YnBwID4+IDMpOwo+IC0Jb2Zmc2V0ICs9IHBsYW5lLT5mYl95ICogcGxhbmUtPnBp dGNoOwo+IC0KPiAtCURSTV9ERUJVR19LTVMoIm9mZnNldCA9IDB4JWx4LCBwaXRjaCA9ICV4XG4i LCBvZmZzZXQsIHBsYW5lLT5waXRjaCk7Cj4gLQo+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0 YVt3aW5dOwo+IC0KPiAtCXdpbl9kYXRhLT5vZmZzZXRfeCA9IHBsYW5lLT5jcnRjX3g7Cj4gLQl3 aW5fZGF0YS0+b2Zmc2V0X3kgPSBwbGFuZS0+Y3J0Y195Owo+IC0Jd2luX2RhdGEtPm92bF93aWR0 aCA9IHBsYW5lLT5jcnRjX3dpZHRoOwo+IC0Jd2luX2RhdGEtPm92bF9oZWlnaHQgPSBwbGFuZS0+ Y3J0Y19oZWlnaHQ7Cj4gLQl3aW5fZGF0YS0+ZmJfd2lkdGggPSBwbGFuZS0+ZmJfd2lkdGg7Cj4g LQl3aW5fZGF0YS0+ZmJfaGVpZ2h0ID0gcGxhbmUtPmZiX2hlaWdodDsKPiAtCXdpbl9kYXRhLT5k bWFfYWRkciA9IHBsYW5lLT5kbWFfYWRkclswXSArIG9mZnNldDsKPiAtCXdpbl9kYXRhLT5icHAg PSBwbGFuZS0+YnBwOwo+IC0Jd2luX2RhdGEtPmJ1Zl9vZmZzaXplID0gKHBsYW5lLT5mYl93aWR0 aCAtIHBsYW5lLT5jcnRjX3dpZHRoKSAqCj4gLQkJCQkocGxhbmUtPmJwcCA+PiAzKTsKPiAtCXdp bl9kYXRhLT5saW5lX3NpemUgPSBwbGFuZS0+Y3J0Y193aWR0aCAqIChwbGFuZS0+YnBwID4+IDMp Owo+IC0KPiAtCS8qCj4gLQkgKiBzb21lIHBhcnRzIG9mIHdpbl9kYXRhIHNob3VsZCBiZSB0cmFu c2ZlcnJlZCB0byB1c2VyIHNpZGUKPiAtCSAqIHRocm91Z2ggc3BlY2lmaWMgaW9jdGwuCj4gLQkg Ki8KPiAtCj4gLQlEUk1fREVCVUdfS01TKCJvZmZzZXRfeCA9ICVkLCBvZmZzZXRfeSA9ICVkXG4i LAo+IC0JCQl3aW5fZGF0YS0+b2Zmc2V0X3gsIHdpbl9kYXRhLT5vZmZzZXRfeSk7Cj4gLQlEUk1f REVCVUdfS01TKCJvdmxfd2lkdGggPSAlZCwgb3ZsX2hlaWdodCA9ICVkXG4iLAo+IC0JCQl3aW5f ZGF0YS0+b3ZsX3dpZHRoLCB3aW5fZGF0YS0+b3ZsX2hlaWdodCk7Cj4gLQlEUk1fREVCVUdfS01T KCJwYWRkciA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHIpOwo+ IC0JRFJNX0RFQlVHX0tNUygiZmJfd2lkdGggPSAlZCwgY3J0Y193aWR0aCA9ICVkXG4iLAo+IC0J CQlwbGFuZS0+ZmJfd2lkdGgsIHBsYW5lLT5jcnRjX3dpZHRoKTsKPiAtfQo+IC0KPiAgc3RhdGlj IHZvaWQgdmlkaV93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6 cG9zKQo+ICB7Cj4gIAlzdHJ1Y3QgdmlkaV9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4gLQlz dHJ1Y3QgdmlkaV93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFu ZSAqcGxhbmU7Cj4gIAlpbnQgd2luID0genBvczsKPiAgCj4gIAlpZiAoY3R4LT5zdXNwZW5kZWQp Cj4gQEAgLTIxMSwxMSArMTMyLDExIEBAIHN0YXRpYyB2b2lkIHZpZGlfd2luX2NvbW1pdChzdHJ1 Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPiAgCWlmICh3aW4gPCAwIHx8IHdp biA+PSBXSU5ET1dTX05SKQo+ICAJCXJldHVybjsKPiAgCj4gLQl3aW5fZGF0YSA9ICZjdHgtPndp bl9kYXRhW3dpbl07Cj4gKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+ICAKPiAtCXdpbl9k YXRhLT5lbmFibGVkID0gdHJ1ZTsKPiArCXBsYW5lLT5lbmFibGVkID0gdHJ1ZTsKPiAgCj4gLQlE Uk1fREVCVUdfS01TKCJkbWFfYWRkciA9ICVwYWRcbiIsICZ3aW5fZGF0YS0+ZG1hX2FkZHIpOwo+ ICsJRFJNX0RFQlVHX0tNUygiZG1hX2FkZHIgPSAlcGFkXG4iLCBwbGFuZS0+ZG1hX2FkZHIpOwo+ ICAKPiAgCWlmIChjdHgtPnZibGFua19vbikKPiAgCQlzY2hlZHVsZV93b3JrKCZjdHgtPndvcmsp Owo+IEBAIC0yMjQsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgdmlkaV93aW5fY29tbWl0KHN0cnVj dCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+ICBzdGF0aWMgdm9pZCB2aWRpX3dp bl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+ICB7Cj4g IAlzdHJ1Y3QgdmlkaV9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4gLQlzdHJ1Y3QgdmlkaV93 aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4g IAlpbnQgd2luID0genBvczsKPiAgCj4gIAlpZiAod2luID09IERFRkFVTFRfWlBPUykKPiBAQCAt MjMzLDE0ICsxNTQsMTcgQEAgc3RhdGljIHZvaWQgdmlkaV93aW5fZGlzYWJsZShzdHJ1Y3QgZXh5 bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPiAgCWlmICh3aW4gPCAwIHx8IHdpbiA+PSBX SU5ET1dTX05SKQo+ICAJCXJldHVybjsKPiAgCj4gLQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRh W3dpbl07Cj4gLQl3aW5fZGF0YS0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsJcGxhbmUgPSAmY3R4LT5w bGFuZXNbd2luXTsKPiArCXBsYW5lLT5lbmFibGVkID0gZmFsc2U7Cj4gIAo+ICAJLyogVE9ETy4g Ki8KPiAgfQo+ICAKPiAgc3RhdGljIGludCB2aWRpX3Bvd2VyX29uKHN0cnVjdCB2aWRpX2NvbnRl eHQgKmN0eCwgYm9vbCBlbmFibGUpCj4gIHsKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpw bGFuZTsKPiArCWludCBpOwo+ICsKPiAgCURSTV9ERUJVR19LTVMoIiVzXG4iLCBfX0ZJTEVfXyk7 Cj4gIAo+ICAJaWYgKGVuYWJsZSAhPSBmYWxzZSAmJiBlbmFibGUgIT0gdHJ1ZSkKPiBAQCAtMjUz LDcgKzE3NywxMSBAQCBzdGF0aWMgaW50IHZpZGlfcG93ZXJfb24oc3RydWN0IHZpZGlfY29udGV4 dCAqY3R4LCBib29sIGVuYWJsZSkKPiAgCQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KDAsICZjdHgt PmlycV9mbGFncykpCj4gIAkJCXZpZGlfZW5hYmxlX3ZibGFuayhjdHgtPmNydGMpOwo+ICAKPiAt CQl2aWRpX2FwcGx5KGN0eCk7Cj4gKwkJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykg ewo+ICsJCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsKPiArCQkJaWYgKHBsYW5lLT5lbmFibGVk KQo+ICsJCQkJdmlkaV93aW5fY29tbWl0KGN0eC0+Y3J0YywgaSk7Cj4gKwkJfQo+ICAJfSBlbHNl IHsKPiAgCQljdHgtPnN1c3BlbmRlZCA9IHRydWU7Cj4gIAl9Cj4gQEAgLTMwMSw3ICsyMjksNiBA QCBzdGF0aWMgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMgdmlkaV9jcnRjX29wcyA9IHsKPiAg CS5kcG1zID0gdmlkaV9kcG1zLAo+ICAJLmVuYWJsZV92YmxhbmsgPSB2aWRpX2VuYWJsZV92Ymxh bmssCj4gIAkuZGlzYWJsZV92YmxhbmsgPSB2aWRpX2Rpc2FibGVfdmJsYW5rLAo+IC0JLndpbl9t b2RlX3NldCA9IHZpZGlfd2luX21vZGVfc2V0LAo+ICAJLndpbl9jb21taXQgPSB2aWRpX3dpbl9j b21taXQsCj4gIAkud2luX2Rpc2FibGUgPSB2aWRpX3dpbl9kaXNhYmxlLAo+ICB9Owo+IEBAIC01 NDMsMTIgKzQ3MCwyMiBAQCBzdGF0aWMgaW50IHZpZGlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgewo+ICAJc3RydWN0IHZpZGlf Y29udGV4dCAqY3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtX2RldiA9IGRhdGE7Cj4gLQlpbnQgcmV0Owo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxh bmUgKmV4eW5vc19wbGFuZTsKPiArCWVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZTsKPiArCWludCBp LCByZXQ7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgewo+ICsJCXR5 cGUgPSAoaSA9PSBjdHgtPmRlZmF1bHRfd2luKSA/IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgOgo+ ICsJCQkJCQlEUk1fUExBTkVfVFlQRV9PVkVSTEFZOwo+ICsJCWV4eW5vc19wbGFuZV9pbml0KGRy bV9kZXYsICZjdHgtPnBsYW5lc1tpXSwgMSA8PCBjdHgtPnBpcGUsCj4gKwkJCQkgIHR5cGUpOwo+ ICsJfQo+ICAKPiAgCXZpZGlfY3R4X2luaXRpYWxpemUoY3R4LCBkcm1fZGV2KTsKPiAgCj4gLQlj dHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsIGN0eC0+cGlwZSwKPiAt CQkJCQkgICBFWFlOT1NfRElTUExBWV9UWVBFX1ZJREksCj4gKwlleHlub3NfcGxhbmUgPSAmY3R4 LT5wbGFuZXNbY3R4LT5kZWZhdWx0X3dpbl07Cj4gKwljdHgtPmNydGMgPSBleHlub3NfZHJtX2Ny dGNfY3JlYXRlKGRybV9kZXYsICZleHlub3NfcGxhbmUtPmJhc2UsCj4gKwkJCQkJICAgY3R4LT5w aXBlLCBFWFlOT1NfRElTUExBWV9UWVBFX1ZJREksCj4gIAkJCQkJICAgJnZpZGlfY3J0Y19vcHMs IGN0eCk7Cj4gIAlpZiAoSVNfRVJSKGN0eC0+Y3J0YykpIHsKPiAgCQlEUk1fRVJST1IoImZhaWxl ZCB0byBjcmVhdGUgY3J0Yy5cbiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19taXhlci5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIu Ywo+IGluZGV4IDczNjI2OWEuLmQ2ODY0ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfbWl4ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX21peGVyLmMKPiBAQCAtMzcsMzQgKzM3LDEzIEBACj4gIAo+ICAjaW5jbHVkZSAiZXh5bm9z X2RybV9kcnYuaCIKPiAgI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgo+ICsjaW5jbHVkZSAi ZXh5bm9zX2RybV9wbGFuZS5oIgo+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgo+ICAj aW5jbHVkZSAiZXh5bm9zX21peGVyLmgiCj4gIAo+ICAjZGVmaW5lIE1JWEVSX1dJTl9OUgkJMwo+ ICAjZGVmaW5lIE1JWEVSX0RFRkFVTFRfV0lOCTAKPiAgCj4gLXN0cnVjdCBoZG1pX3dpbl9kYXRh IHsKPiAtCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwo+IC0JZG1hX2FkZHJfdAkJY2hyb21hX2RtYV9h ZGRyOwo+IC0JdWludDMyX3QJCXBpeGVsX2Zvcm1hdDsKPiAtCXVuc2lnbmVkIGludAkJYnBwOwo+ IC0JdW5zaWduZWQgaW50CQljcnRjX3g7Cj4gLQl1bnNpZ25lZCBpbnQJCWNydGNfeTsKPiAtCXVu c2lnbmVkIGludAkJY3J0Y193aWR0aDsKPiAtCXVuc2lnbmVkIGludAkJY3J0Y19oZWlnaHQ7Cj4g LQl1bnNpZ25lZCBpbnQJCWZiX3g7Cj4gLQl1bnNpZ25lZCBpbnQJCWZiX3k7Cj4gLQl1bnNpZ25l ZCBpbnQJCWZiX3dpZHRoOwo+IC0JdW5zaWduZWQgaW50CQlmYl9oZWlnaHQ7Cj4gLQl1bnNpZ25l ZCBpbnQJCXNyY193aWR0aDsKPiAtCXVuc2lnbmVkIGludAkJc3JjX2hlaWdodDsKPiAtCXVuc2ln bmVkIGludAkJbW9kZV93aWR0aDsKPiAtCXVuc2lnbmVkIGludAkJbW9kZV9oZWlnaHQ7Cj4gLQl1 bnNpZ25lZCBpbnQJCXNjYW5fZmxhZ3M7Cj4gLQlib29sCQkJZW5hYmxlZDsKPiAtCWJvb2wJCQly ZXN1bWU7Cj4gLX07Cj4gLQo+ICBzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzIHsKPiAgCWludAkJCWly cTsKPiAgCXZvaWQgX19pb21lbQkJKm1peGVyX3JlZ3M7Cj4gQEAgLTg4LDYgKzY3LDcgQEAgc3Ry dWN0IG1peGVyX2NvbnRleHQgewo+ICAJc3RydWN0IGRldmljZQkJKmRldjsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlCSpkcm1fZGV2Owo+ICAJc3RydWN0IGV4eW5vc19kcm1fY3J0YwkqY3J0YzsKPiAr CXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCXBsYW5lc1tNSVhFUl9XSU5fTlJdOwo+ICAJaW50CQkJ cGlwZTsKPiAgCWJvb2wJCQlpbnRlcmxhY2U7Cj4gIAlib29sCQkJcG93ZXJlZDsKPiBAQCAtOTcs NyArNzcsNiBAQCBzdHJ1Y3QgbWl4ZXJfY29udGV4dCB7Cj4gIAo+ICAJc3RydWN0IG11dGV4CQlt aXhlcl9tdXRleDsKPiAgCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMJbWl4ZXJfcmVzOwo+IC0Jc3Ry dWN0IGhkbWlfd2luX2RhdGEJd2luX2RhdGFbTUlYRVJfV0lOX05SXTsKPiAgCWVudW0gbWl4ZXJf dmVyc2lvbl9pZAlteHJfdmVyOwo+ICAJd2FpdF9xdWV1ZV9oZWFkX3QJd2FpdF92c3luY19xdWV1 ZTsKPiAgCWF0b21pY190CQl3YWl0X3ZzeW5jX2V2ZW50Owo+IEBAIC00MDEsNyArMzgwLDcgQEAg c3RhdGljIHZvaWQgdnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGlu dCB3aW4pCj4gIHsKPiAgCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMgKnJlcyA9ICZjdHgtPm1peGVy X3JlczsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQlzdHJ1Y3QgaGRtaV93aW5fZGF0YSAq d2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4gIAl1bnNpZ25l ZCBpbnQgeF9yYXRpbywgeV9yYXRpbzsKPiAgCXVuc2lnbmVkIGludCBidWZfbnVtID0gMTsKPiAg CWRtYV9hZGRyX3QgbHVtYV9hZGRyWzJdLCBjaHJvbWFfYWRkclsyXTsKPiBAQCAtNDA5LDkgKzM4 OCw5IEBAIHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAq Y3R4LCBpbnQgd2luKQo+ICAJYm9vbCBjcmNiX21vZGUgPSBmYWxzZTsKPiAgCXUzMiB2YWw7Cj4g IAo+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsJcGxhbmUgPSAmY3R4LT5w bGFuZXNbd2luXTsKPiAgCj4gLQlzd2l0Y2ggKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQpIHsKPiAr CXN3aXRjaCAocGxhbmUtPnBpeGVsX2Zvcm1hdCkgewo+ICAJY2FzZSBEUk1fRk9STUFUX05WMTJN VDoKPiAgCQl0aWxlZF9tb2RlID0gdHJ1ZTsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+IEBA IC00MjEsMzUgKzQwMCwzNSBAQCBzdGF0aWMgdm9pZCB2cF92aWRlb19idWZmZXIoc3RydWN0IG1p eGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKPiAgCS8qIFRPRE86IHNpbmdsZSBidWZmZXIgZm9y bWF0IE5WMTIsIE5WMjEgKi8KPiAgCWRlZmF1bHQ6Cj4gIAkJLyogaWdub3JlIHBpeGVsIGZvcm1h dCBhdCBkaXNhYmxlIHRpbWUgKi8KPiAtCQlpZiAoIXdpbl9kYXRhLT5kbWFfYWRkcikKPiArCQlp ZiAoIXBsYW5lLT5kbWFfYWRkclswXSkKPiAgCQkJYnJlYWs7Cj4gIAo+ICAJCURSTV9FUlJPUigi cGl4ZWwgZm9ybWF0IGZvciB2cCBpcyB3cm9uZyBbJWRdLlxuIiwKPiAtCQkJCXdpbl9kYXRhLT5w aXhlbF9mb3JtYXQpOwo+ICsJCQkJcGxhbmUtPnBpeGVsX2Zvcm1hdCk7Cj4gIAkJcmV0dXJuOwo+ ICAJfQo+ICAKPiAgCS8qIHNjYWxpbmcgZmVhdHVyZTogKHNyYyA8PCAxNikgLyBkc3QgKi8KPiAt CXhfcmF0aW8gPSAod2luX2RhdGEtPnNyY193aWR0aCA8PCAxNikgLyB3aW5fZGF0YS0+Y3J0Y193 aWR0aDsKPiAtCXlfcmF0aW8gPSAod2luX2RhdGEtPnNyY19oZWlnaHQgPDwgMTYpIC8gd2luX2Rh dGEtPmNydGNfaGVpZ2h0Owo+ICsJeF9yYXRpbyA9IChwbGFuZS0+c3JjX3dpZHRoIDw8IDE2KSAv IHBsYW5lLT5jcnRjX3dpZHRoOwo+ICsJeV9yYXRpbyA9IChwbGFuZS0+c3JjX2hlaWdodCA8PCAx NikgLyBwbGFuZS0+Y3J0Y19oZWlnaHQ7Cj4gIAo+ICAJaWYgKGJ1Zl9udW0gPT0gMikgewo+IC0J CWx1bWFfYWRkclswXSA9IHdpbl9kYXRhLT5kbWFfYWRkcjsKPiAtCQljaHJvbWFfYWRkclswXSA9 IHdpbl9kYXRhLT5jaHJvbWFfZG1hX2FkZHI7Cj4gKwkJbHVtYV9hZGRyWzBdID0gcGxhbmUtPmRt YV9hZGRyWzBdOwo+ICsJCWNocm9tYV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzFdOwo+ICAJ fSBlbHNlIHsKPiAtCQlsdW1hX2FkZHJbMF0gPSB3aW5fZGF0YS0+ZG1hX2FkZHI7Cj4gLQkJY2hy b21hX2FkZHJbMF0gPSB3aW5fZGF0YS0+ZG1hX2FkZHIKPiAtCQkJKyAod2luX2RhdGEtPmZiX3dp ZHRoICogd2luX2RhdGEtPmZiX2hlaWdodCk7Cj4gKwkJbHVtYV9hZGRyWzBdID0gcGxhbmUtPmRt YV9hZGRyWzBdOwo+ICsJCWNocm9tYV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdCj4gKwkJ CSsgKHBsYW5lLT5mYl93aWR0aCAqIHBsYW5lLT5mYl9oZWlnaHQpOwo+ICAJfQo+ICAKPiAtCWlm ICh3aW5fZGF0YS0+c2Nhbl9mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4gKwlp ZiAocGxhbmUtPnNjYW5fZmxhZyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4gIAkJY3R4 LT5pbnRlcmxhY2UgPSB0cnVlOwo+ICAJCWlmICh0aWxlZF9tb2RlKSB7Cj4gIAkJCWx1bWFfYWRk clsxXSA9IGx1bWFfYWRkclswXSArIDB4NDA7Cj4gIAkJCWNocm9tYV9hZGRyWzFdID0gY2hyb21h X2FkZHJbMF0gKyAweDQwOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCWx1bWFfYWRkclsxXSA9IGx1bWFf YWRkclswXSArIHdpbl9kYXRhLT5mYl93aWR0aDsKPiAtCQkJY2hyb21hX2FkZHJbMV0gPSBjaHJv bWFfYWRkclswXSArIHdpbl9kYXRhLT5mYl93aWR0aDsKPiArCQkJbHVtYV9hZGRyWzFdID0gbHVt YV9hZGRyWzBdICsgcGxhbmUtPmZiX3dpZHRoOwo+ICsJCQljaHJvbWFfYWRkclsxXSA9IGNocm9t YV9hZGRyWzBdICsgcGxhbmUtPmZiX3dpZHRoOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gIAkJY3R4 LT5pbnRlcmxhY2UgPSBmYWxzZTsKPiBAQCAtNDcwLDI2ICs0NDksMjYgQEAgc3RhdGljIHZvaWQg dnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGludCB3aW4pCj4gIAl2 cF9yZWdfd3JpdGVtYXNrKHJlcywgVlBfTU9ERSwgdmFsLCBWUF9NT0RFX0ZNVF9NQVNLKTsKPiAg Cj4gIAkvKiBzZXR0aW5nIHNpemUgb2YgaW5wdXQgaW1hZ2UgKi8KPiAtCXZwX3JlZ193cml0ZShy ZXMsIFZQX0lNR19TSVpFX1ksIFZQX0lNR19IU0laRSh3aW5fZGF0YS0+ZmJfd2lkdGgpIHwKPiAt CQlWUF9JTUdfVlNJWkUod2luX2RhdGEtPmZiX2hlaWdodCkpOwo+ICsJdnBfcmVnX3dyaXRlKHJl cywgVlBfSU1HX1NJWkVfWSwgVlBfSU1HX0hTSVpFKHBsYW5lLT5mYl93aWR0aCkgfAo+ICsJCVZQ X0lNR19WU0laRShwbGFuZS0+ZmJfaGVpZ2h0KSk7Cj4gIAkvKiBjaHJvbWEgaGVpZ2h0IGhhcyB0 byByZWR1Y2VkIGJ5IDIgdG8gYXZvaWQgY2hyb21hIGRpc3RvcmlvbnMgKi8KPiAtCXZwX3JlZ193 cml0ZShyZXMsIFZQX0lNR19TSVpFX0MsIFZQX0lNR19IU0laRSh3aW5fZGF0YS0+ZmJfd2lkdGgp IHwKPiAtCQlWUF9JTUdfVlNJWkUod2luX2RhdGEtPmZiX2hlaWdodCAvIDIpKTsKPiArCXZwX3Jl Z193cml0ZShyZXMsIFZQX0lNR19TSVpFX0MsIFZQX0lNR19IU0laRShwbGFuZS0+ZmJfd2lkdGgp IHwKPiArCQlWUF9JTUdfVlNJWkUocGxhbmUtPmZiX2hlaWdodCAvIDIpKTsKPiAgCj4gLQl2cF9y ZWdfd3JpdGUocmVzLCBWUF9TUkNfV0lEVEgsIHdpbl9kYXRhLT5zcmNfd2lkdGgpOwo+IC0JdnBf cmVnX3dyaXRlKHJlcywgVlBfU1JDX0hFSUdIVCwgd2luX2RhdGEtPnNyY19oZWlnaHQpOwo+ICsJ dnBfcmVnX3dyaXRlKHJlcywgVlBfU1JDX1dJRFRILCBwbGFuZS0+c3JjX3dpZHRoKTsKPiArCXZw X3JlZ193cml0ZShyZXMsIFZQX1NSQ19IRUlHSFQsIHBsYW5lLT5zcmNfaGVpZ2h0KTsKPiAgCXZw X3JlZ193cml0ZShyZXMsIFZQX1NSQ19IX1BPU0lUSU9OLAo+IC0JCQlWUF9TUkNfSF9QT1NJVElP Tl9WQUwod2luX2RhdGEtPmZiX3gpKTsKPiAtCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19WX1BP U0lUSU9OLCB3aW5fZGF0YS0+ZmJfeSk7Cj4gKwkJCVZQX1NSQ19IX1BPU0lUSU9OX1ZBTChwbGFu ZS0+ZmJfeCkpOwo+ICsJdnBfcmVnX3dyaXRlKHJlcywgVlBfU1JDX1ZfUE9TSVRJT04sIHBsYW5l LT5mYl95KTsKPiAgCj4gLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfV0lEVEgsIHdpbl9kYXRh LT5jcnRjX3dpZHRoKTsKPiAtCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IX1BPU0lUSU9OLCB3 aW5fZGF0YS0+Y3J0Y194KTsKPiArCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9XSURUSCwgcGxh bmUtPmNydGNfd2lkdGgpOwo+ICsJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hfUE9TSVRJT04s IHBsYW5lLT5jcnRjX3gpOwo+ICAJaWYgKGN0eC0+aW50ZXJsYWNlKSB7Cj4gLQkJdnBfcmVnX3dy aXRlKHJlcywgVlBfRFNUX0hFSUdIVCwgd2luX2RhdGEtPmNydGNfaGVpZ2h0IC8gMik7Cj4gLQkJ dnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX1ZfUE9TSVRJT04sIHdpbl9kYXRhLT5jcnRjX3kgLyAy KTsKPiArCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfSEVJR0hULCBwbGFuZS0+Y3J0Y19oZWln aHQgLyAyKTsKPiArCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfVl9QT1NJVElPTiwgcGxhbmUt PmNydGNfeSAvIDIpOwo+ICAJfSBlbHNlIHsKPiAtCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1Rf SEVJR0hULCB3aW5fZGF0YS0+Y3J0Y19oZWlnaHQpOwo+IC0JCXZwX3JlZ193cml0ZShyZXMsIFZQ X0RTVF9WX1BPU0lUSU9OLCB3aW5fZGF0YS0+Y3J0Y195KTsKPiArCQl2cF9yZWdfd3JpdGUocmVz LCBWUF9EU1RfSEVJR0hULCBwbGFuZS0+Y3J0Y19oZWlnaHQpOwo+ICsJCXZwX3JlZ193cml0ZShy ZXMsIFZQX0RTVF9WX1BPU0lUSU9OLCBwbGFuZS0+Y3J0Y195KTsKPiAgCX0KPiAgCj4gIAl2cF9y ZWdfd3JpdGUocmVzLCBWUF9IX1JBVElPLCB4X3JhdGlvKTsKPiBAQCAtNTAzLDggKzQ4Miw4IEBA IHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBp bnQgd2luKQo+ICAJdnBfcmVnX3dyaXRlKHJlcywgVlBfVE9QX0NfUFRSLCBjaHJvbWFfYWRkclsw XSk7Cj4gIAl2cF9yZWdfd3JpdGUocmVzLCBWUF9CT1RfQ19QVFIsIGNocm9tYV9hZGRyWzFdKTsK PiAgCj4gLQltaXhlcl9jZmdfc2NhbihjdHgsIHdpbl9kYXRhLT5tb2RlX2hlaWdodCk7Cj4gLQlt aXhlcl9jZmdfcmdiX2ZtdChjdHgsIHdpbl9kYXRhLT5tb2RlX2hlaWdodCk7Cj4gKwltaXhlcl9j Zmdfc2NhbihjdHgsIHBsYW5lLT5tb2RlX2hlaWdodCk7Cj4gKwltaXhlcl9jZmdfcmdiX2ZtdChj dHgsIHBsYW5lLT5tb2RlX2hlaWdodCk7Cj4gIAltaXhlcl9jZmdfbGF5ZXIoY3R4LCB3aW4sIHRy dWUpOwo+ICAJbWl4ZXJfcnVuKGN0eCk7Cj4gIAo+IEBAIC01MjUsMjEgKzUwNCwyMSBAQCBzdGF0 aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50 IHdpbikKPiAgewo+ICAJc3RydWN0IG1peGVyX3Jlc291cmNlcyAqcmVzID0gJmN0eC0+bWl4ZXJf cmVzOwo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCXN0cnVjdCBoZG1pX3dpbl9kYXRhICp3 aW5fZGF0YTsKPiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKPiAgCXVuc2lnbmVk IGludCB4X3JhdGlvLCB5X3JhdGlvOwo+ICAJdW5zaWduZWQgaW50IHNyY194X29mZnNldCwgc3Jj X3lfb2Zmc2V0LCBkc3RfeF9vZmZzZXQsIGRzdF95X29mZnNldDsKPiAgCWRtYV9hZGRyX3QgZG1h X2FkZHI7Cj4gIAl1bnNpZ25lZCBpbnQgZm10Owo+ICAJdTMyIHZhbDsKPiAgCj4gLQl3aW5fZGF0 YSA9ICZjdHgtPndpbl9kYXRhW3dpbl07Cj4gKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+ ICAKPiAgCSNkZWZpbmUgUkdCNTY1IDQKPiAgCSNkZWZpbmUgQVJHQjE1NTUgNQo+ICAJI2RlZmlu ZSBBUkdCNDQ0NCA2Cj4gIAkjZGVmaW5lIEFSR0I4ODg4IDcKPiAgCj4gLQlzd2l0Y2ggKHdpbl9k YXRhLT5icHApIHsKPiArCXN3aXRjaCAocGxhbmUtPmJwcCkgewo+ICAJY2FzZSAxNjoKPiAgCQlm bXQgPSBBUkdCNDQ0NDsKPiAgCQlicmVhazsKPiBAQCAtNTU0LDE3ICs1MzMsMTcgQEAgc3RhdGlj IHZvaWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGludCB3 aW4pCj4gIAl4X3JhdGlvID0gMDsKPiAgCXlfcmF0aW8gPSAwOwo+ICAKPiAtCWRzdF94X29mZnNl dCA9IHdpbl9kYXRhLT5jcnRjX3g7Cj4gLQlkc3RfeV9vZmZzZXQgPSB3aW5fZGF0YS0+Y3J0Y195 Owo+ICsJZHN0X3hfb2Zmc2V0ID0gcGxhbmUtPmNydGNfeDsKPiArCWRzdF95X29mZnNldCA9IHBs YW5lLT5jcnRjX3k7Cj4gIAo+ICAJLyogY29udmVydGluZyBkbWEgYWRkcmVzcyBiYXNlIGFuZCBz b3VyY2Ugb2Zmc2V0ICovCj4gLQlkbWFfYWRkciA9IHdpbl9kYXRhLT5kbWFfYWRkcgo+IC0JCSsg KHdpbl9kYXRhLT5mYl94ICogd2luX2RhdGEtPmJwcCA+PiAzKQo+IC0JCSsgKHdpbl9kYXRhLT5m Yl95ICogd2luX2RhdGEtPmZiX3dpZHRoICogd2luX2RhdGEtPmJwcCA+PiAzKTsKPiArCWRtYV9h ZGRyID0gcGxhbmUtPmRtYV9hZGRyWzBdCj4gKwkJKyAocGxhbmUtPmZiX3ggKiBwbGFuZS0+YnBw ID4+IDMpCj4gKwkJKyAocGxhbmUtPmZiX3kgKiBwbGFuZS0+ZmJfd2lkdGggKiBwbGFuZS0+YnBw ID4+IDMpOwo+ICAJc3JjX3hfb2Zmc2V0ID0gMDsKPiAgCXNyY195X29mZnNldCA9IDA7Cj4gIAo+ IC0JaWYgKHdpbl9kYXRhLT5zY2FuX2ZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4g KwlpZiAocGxhbmUtPnNjYW5fZmxhZyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICAJCWN0 eC0+aW50ZXJsYWNlID0gdHJ1ZTsKPiAgCWVsc2UKPiAgCQljdHgtPmludGVybGFjZSA9IGZhbHNl Owo+IEBAIC01NzcsMTggKzU1NiwxOCBAQCBzdGF0aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIo c3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKPiAgCQlNWFJfR1JQX0NGR19GT1JN QVRfVkFMKGZtdCksIE1YUl9HUlBfQ0ZHX0ZPUk1BVF9NQVNLKTsKPiAgCj4gIAkvKiBzZXR1cCBn ZW9tZXRyeSAqLwo+IC0JbWl4ZXJfcmVnX3dyaXRlKHJlcywgTVhSX0dSQVBISUNfU1BBTih3aW4p LCB3aW5fZGF0YS0+ZmJfd2lkdGgpOwo+ICsJbWl4ZXJfcmVnX3dyaXRlKHJlcywgTVhSX0dSQVBI SUNfU1BBTih3aW4pLCBwbGFuZS0+ZmJfd2lkdGgpOwo+ICAKPiAgCS8qIHNldHVwIGRpc3BsYXkg c2l6ZSAqLwo+ICAJaWYgKGN0eC0+bXhyX3ZlciA9PSBNWFJfVkVSXzEyOF8wXzBfMTg0ICYmCj4g IAkJd2luID09IE1JWEVSX0RFRkFVTFRfV0lOKSB7Cj4gLQkJdmFsICA9IE1YUl9NWFJfUkVTX0hF SUdIVCh3aW5fZGF0YS0+ZmJfaGVpZ2h0KTsKPiAtCQl2YWwgfD0gTVhSX01YUl9SRVNfV0lEVEgo d2luX2RhdGEtPmZiX3dpZHRoKTsKPiArCQl2YWwgID0gTVhSX01YUl9SRVNfSEVJR0hUKHBsYW5l LT5mYl9oZWlnaHQpOwo+ICsJCXZhbCB8PSBNWFJfTVhSX1JFU19XSURUSChwbGFuZS0+ZmJfd2lk dGgpOwo+ICAJCW1peGVyX3JlZ193cml0ZShyZXMsIE1YUl9SRVNPTFVUSU9OLCB2YWwpOwo+ICAJ fQo+ICAKPiAtCXZhbCAgPSBNWFJfR1JQX1dIX1dJRFRIKHdpbl9kYXRhLT5jcnRjX3dpZHRoKTsK PiAtCXZhbCB8PSBNWFJfR1JQX1dIX0hFSUdIVCh3aW5fZGF0YS0+Y3J0Y19oZWlnaHQpOwo+ICsJ dmFsICA9IE1YUl9HUlBfV0hfV0lEVEgocGxhbmUtPmNydGNfd2lkdGgpOwo+ICsJdmFsIHw9IE1Y Ul9HUlBfV0hfSEVJR0hUKHBsYW5lLT5jcnRjX2hlaWdodCk7Cj4gIAl2YWwgfD0gTVhSX0dSUF9X SF9IX1NDQUxFKHhfcmF0aW8pOwo+ICAJdmFsIHw9IE1YUl9HUlBfV0hfVl9TQ0FMRSh5X3JhdGlv KTsKPiAgCW1peGVyX3JlZ193cml0ZShyZXMsIE1YUl9HUkFQSElDX1dIKHdpbiksIHZhbCk7Cj4g QEAgLTYwNiw4ICs1ODUsOCBAQCBzdGF0aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIoc3RydWN0 IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKPiAgCS8qIHNldCBidWZmZXIgYWRkcmVzcyB0 byBtaXhlciAqLwo+ICAJbWl4ZXJfcmVnX3dyaXRlKHJlcywgTVhSX0dSQVBISUNfQkFTRSh3aW4p LCBkbWFfYWRkcik7Cj4gIAo+IC0JbWl4ZXJfY2ZnX3NjYW4oY3R4LCB3aW5fZGF0YS0+bW9kZV9o ZWlnaHQpOwo+IC0JbWl4ZXJfY2ZnX3JnYl9mbXQoY3R4LCB3aW5fZGF0YS0+bW9kZV9oZWlnaHQp Owo+ICsJbWl4ZXJfY2ZnX3NjYW4oY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwo+ICsJbWl4ZXJf Y2ZnX3JnYl9mbXQoY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwo+ICAJbWl4ZXJfY2ZnX2xheWVy KGN0eCwgd2luLCB0cnVlKTsKPiAgCj4gIAkvKiBsYXllciB1cGRhdGUgbWFuZGF0b3J5IGZvciBt aXhlciAxNi4wLjMzLjAgKi8KPiBAQCAtOTEzLDU4ICs4OTIsNiBAQCBzdGF0aWMgdm9pZCBtaXhl cl9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQo+ICAJbWl4ZXJf cmVnX3dyaXRlbWFzayhyZXMsIE1YUl9JTlRfRU4sIDAsIE1YUl9JTlRfRU5fVlNZTkMpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBtaXhlcl93aW5fbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1f Y3J0YyAqY3J0YywKPiAtCQkJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lKQo+IC17Cj4g LQlzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqbWl4ZXJfY3R4ID0gY3J0Yy0+Y3R4Owo+IC0Jc3RydWN0 IGhkbWlfd2luX2RhdGEgKndpbl9kYXRhOwo+IC0JaW50IHdpbjsKPiAtCj4gLQlpZiAoIXBsYW5l KSB7Cj4gLQkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsKPiAtCQlyZXR1cm47Cj4gLQl9 Cj4gLQo+IC0JRFJNX0RFQlVHX0tNUygic2V0IFslZF14WyVkXSBhdCAoJWQsJWQpIHRvIFslZF14 WyVkXSBhdCAoJWQsJWQpXG4iLAo+IC0JCQkJIHBsYW5lLT5mYl93aWR0aCwgcGxhbmUtPmZiX2hl aWdodCwKPiAtCQkJCSBwbGFuZS0+ZmJfeCwgcGxhbmUtPmZiX3ksCj4gLQkJCQkgcGxhbmUtPmNy dGNfd2lkdGgsIHBsYW5lLT5jcnRjX2hlaWdodCwKPiAtCQkJCSBwbGFuZS0+Y3J0Y194LCBwbGFu ZS0+Y3J0Y195KTsKPiAtCj4gLQl3aW4gPSBwbGFuZS0+enBvczsKPiAtCWlmICh3aW4gPT0gREVG QVVMVF9aUE9TKQo+IC0JCXdpbiA9IE1JWEVSX0RFRkFVTFRfV0lOOwo+IC0KPiAtCWlmICh3aW4g PCAwIHx8IHdpbiA+PSBNSVhFUl9XSU5fTlIpIHsKPiAtCQlEUk1fRVJST1IoIm1peGVyIHdpbmRv d1slZF0gaXMgd3JvbmdcbiIsIHdpbik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCXdpbl9k YXRhID0gJm1peGVyX2N0eC0+d2luX2RhdGFbd2luXTsKPiAtCj4gLQl3aW5fZGF0YS0+ZG1hX2Fk ZHIgPSBwbGFuZS0+ZG1hX2FkZHJbMF07Cj4gLQl3aW5fZGF0YS0+Y2hyb21hX2RtYV9hZGRyID0g cGxhbmUtPmRtYV9hZGRyWzFdOwo+IC0Jd2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9IHBsYW5lLT5w aXhlbF9mb3JtYXQ7Cj4gLQl3aW5fZGF0YS0+YnBwID0gcGxhbmUtPmJwcDsKPiAtCj4gLQl3aW5f ZGF0YS0+Y3J0Y194ID0gcGxhbmUtPmNydGNfeDsKPiAtCXdpbl9kYXRhLT5jcnRjX3kgPSBwbGFu ZS0+Y3J0Y195Owo+IC0Jd2luX2RhdGEtPmNydGNfd2lkdGggPSBwbGFuZS0+Y3J0Y193aWR0aDsK PiAtCXdpbl9kYXRhLT5jcnRjX2hlaWdodCA9IHBsYW5lLT5jcnRjX2hlaWdodDsKPiAtCj4gLQl3 aW5fZGF0YS0+ZmJfeCA9IHBsYW5lLT5mYl94Owo+IC0Jd2luX2RhdGEtPmZiX3kgPSBwbGFuZS0+ ZmJfeTsKPiAtCXdpbl9kYXRhLT5mYl93aWR0aCA9IHBsYW5lLT5mYl93aWR0aDsKPiAtCXdpbl9k YXRhLT5mYl9oZWlnaHQgPSBwbGFuZS0+ZmJfaGVpZ2h0Owo+IC0Jd2luX2RhdGEtPnNyY193aWR0 aCA9IHBsYW5lLT5zcmNfd2lkdGg7Cj4gLQl3aW5fZGF0YS0+c3JjX2hlaWdodCA9IHBsYW5lLT5z cmNfaGVpZ2h0Owo+IC0KPiAtCXdpbl9kYXRhLT5tb2RlX3dpZHRoID0gcGxhbmUtPm1vZGVfd2lk dGg7Cj4gLQl3aW5fZGF0YS0+bW9kZV9oZWlnaHQgPSBwbGFuZS0+bW9kZV9oZWlnaHQ7Cj4gLQo+ IC0Jd2luX2RhdGEtPnNjYW5fZmxhZ3MgPSBwbGFuZS0+c2Nhbl9mbGFnOwo+IC19Cj4gLQo+ICBz dGF0aWMgdm9pZCBtaXhlcl93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMs IGludCB6cG9zKQo+ICB7Cj4gIAlzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqbWl4ZXJfY3R4ID0gY3J0 Yy0+Y3R4Owo+IEBAIC05ODQsNyArOTExLDcgQEAgc3RhdGljIHZvaWQgbWl4ZXJfd2luX2NvbW1p dChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPiAgCWVsc2UKPiAgCQlt aXhlcl9ncmFwaF9idWZmZXIobWl4ZXJfY3R4LCB3aW4pOwo+ICAKPiAtCW1peGVyX2N0eC0+d2lu X2RhdGFbd2luXS5lbmFibGVkID0gdHJ1ZTsKPiArCW1peGVyX2N0eC0+cGxhbmVzW3dpbl0uZW5h YmxlZCA9IHRydWU7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG1peGVyX3dpbl9kaXNhYmxlKHN0 cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+IEBAIC05OTksNyArOTI2LDcg QEAgc3RhdGljIHZvaWQgbWl4ZXJfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YywgaW50IHpwb3MpCj4gIAltdXRleF9sb2NrKCZtaXhlcl9jdHgtPm1peGVyX211dGV4KTsK PiAgCWlmICghbWl4ZXJfY3R4LT5wb3dlcmVkKSB7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZtaXhlcl9j dHgtPm1peGVyX211dGV4KTsKPiAtCQltaXhlcl9jdHgtPndpbl9kYXRhW3dpbl0ucmVzdW1lID0g ZmFsc2U7Cj4gKwkJbWl4ZXJfY3R4LT5wbGFuZXNbd2luXS5yZXN1bWUgPSBmYWxzZTsKPiAgCQly ZXR1cm47Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJm1peGVyX2N0eC0+bWl4ZXJfbXV0ZXgpOwo+ IEBAIC0xMDEyLDcgKzkzOSw3IEBAIHN0YXRpYyB2b2lkIG1peGVyX3dpbl9kaXNhYmxlKHN0cnVj dCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+ICAJbWl4ZXJfdnN5bmNfc2V0X3Vw ZGF0ZShtaXhlcl9jdHgsIHRydWUpOwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmVzLT5y ZWdfc2xvY2ssIGZsYWdzKTsKPiAgCj4gLQltaXhlcl9jdHgtPndpbl9kYXRhW3dpbl0uZW5hYmxl ZCA9IGZhbHNlOwo+ICsJbWl4ZXJfY3R4LT5wbGFuZXNbd2luXS5lbmFibGVkID0gZmFsc2U7Cj4g IH0KPiAgCj4gIHN0YXRpYyB2b2lkIG1peGVyX3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZXh5bm9z X2RybV9jcnRjICpjcnRjKQo+IEBAIC0xMDQ5LDEyICs5NzYsMTIgQEAgc3RhdGljIHZvaWQgbWl4 ZXJfd2FpdF9mb3JfdmJsYW5rKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpCj4gIAo+ICBz dGF0aWMgdm9pZCBtaXhlcl93aW5kb3dfc3VzcGVuZChzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4 KQo+ICB7Cj4gLQlzdHJ1Y3QgaGRtaV93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlzdHJ1Y3QgZXh5 bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4gIAlpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwg TUlYRVJfV0lOX05SOyBpKyspIHsKPiAtCQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwo+ IC0JCXdpbl9kYXRhLT5yZXN1bWUgPSB3aW5fZGF0YS0+ZW5hYmxlZDsKPiArCQlwbGFuZSA9ICZj dHgtPnBsYW5lc1tpXTsKPiArCQlwbGFuZS0+cmVzdW1lID0gcGxhbmUtPmVuYWJsZWQ7Cj4gIAkJ bWl4ZXJfd2luX2Rpc2FibGUoY3R4LT5jcnRjLCBpKTsKPiAgCX0KPiAgCW1peGVyX3dhaXRfZm9y X3ZibGFuayhjdHgtPmNydGMpOwo+IEBAIC0xMDYyLDE0ICs5ODksMTQgQEAgc3RhdGljIHZvaWQg bWl4ZXJfd2luZG93X3N1c3BlbmQoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCkKPiAgCj4gIHN0 YXRpYyB2b2lkIG1peGVyX3dpbmRvd19yZXN1bWUoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCkK PiAgewo+IC0Jc3RydWN0IGhkbWlfd2luX2RhdGEgKndpbl9kYXRhOwo+ICsJc3RydWN0IGV4eW5v c19kcm1fcGxhbmUgKnBsYW5lOwo+ICAJaW50IGk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IE1J WEVSX1dJTl9OUjsgaSsrKSB7Cj4gLQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKPiAt CQl3aW5fZGF0YS0+ZW5hYmxlZCA9IHdpbl9kYXRhLT5yZXN1bWU7Cj4gLQkJd2luX2RhdGEtPnJl c3VtZSA9IGZhbHNlOwo+IC0JCWlmICh3aW5fZGF0YS0+ZW5hYmxlZCkKPiArCQlwbGFuZSA9ICZj dHgtPnBsYW5lc1tpXTsKPiArCQlwbGFuZS0+ZW5hYmxlZCA9IHBsYW5lLT5yZXN1bWU7Cj4gKwkJ cGxhbmUtPnJlc3VtZSA9IGZhbHNlOwo+ICsJCWlmIChwbGFuZS0+ZW5hYmxlZCkKPiAgCQkJbWl4 ZXJfd2luX2NvbW1pdChjdHgtPmNydGMsIGkpOwo+ICAJfQo+ICB9Cj4gQEAgLTExNzksNyArMTEw Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyBtaXhlcl9jcnRjX29wcyA9 IHsKPiAgCS5lbmFibGVfdmJsYW5rCQk9IG1peGVyX2VuYWJsZV92YmxhbmssCj4gIAkuZGlzYWJs ZV92YmxhbmsJCT0gbWl4ZXJfZGlzYWJsZV92YmxhbmssCj4gIAkud2FpdF9mb3JfdmJsYW5rCT0g bWl4ZXJfd2FpdF9mb3JfdmJsYW5rLAo+IC0JLndpbl9tb2RlX3NldAkJPSBtaXhlcl93aW5fbW9k ZV9zZXQsCj4gIAkud2luX2NvbW1pdAkJPSBtaXhlcl93aW5fY29tbWl0LAo+ICAJLndpbl9kaXNh YmxlCQk9IG1peGVyX3dpbl9kaXNhYmxlLAo+ICB9Owo+IEBAIC0xMjQzLDE1ICsxMTY5LDI1IEBA IHN0YXRpYyBpbnQgbWl4ZXJfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Ug Km1hbmFnZXIsIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0g ZGF0YTsKPiAtCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqZXh5bm9zX3Bs YW5lOwo+ICsJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlOwo+ICsJaW50IGksIHJldDsKPiArCj4g Kwlmb3IgKGkgPSAwOyBpIDwgTUlYRVJfV0lOX05SOyBpKyspIHsKPiArCQl0eXBlID0gKGkgPT0g TUlYRVJfREVGQVVMVF9XSU4pID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6Cj4gKwkJCQkJCURS TV9QTEFORV9UWVBFX09WRVJMQVk7Cj4gKwkJZXh5bm9zX3BsYW5lX2luaXQoZHJtX2RldiwgJmN0 eC0+cGxhbmVzW2ldLCAxIDw8IGN0eC0+cGlwZSwKPiArCQkJCSAgdHlwZSk7Cj4gKwl9Cj4gIAo+ ICAJcmV0ID0gbWl4ZXJfaW5pdGlhbGl6ZShjdHgsIGRybV9kZXYpOwo+ICAJaWYgKHJldCkKPiAg CQlyZXR1cm4gcmV0Owo+ICAKPiAtCWN0eC0+Y3J0YyA9IGV4eW5vc19kcm1fY3J0Y19jcmVhdGUo ZHJtX2RldiwgY3R4LT5waXBlLAo+IC0JCQkJICAgICBFWFlOT1NfRElTUExBWV9UWVBFX0hETUks Cj4gLQkJCQkgICAgICZtaXhlcl9jcnRjX29wcywgY3R4KTsKPiArCWV4eW5vc19wbGFuZSA9ICZj dHgtPnBsYW5lc1tNSVhFUl9ERUZBVUxUX1dJTl07Cj4gKwljdHgtPmNydGMgPSBleHlub3NfZHJt X2NydGNfY3JlYXRlKGRybV9kZXYsICZleHlub3NfcGxhbmUtPmJhc2UsCj4gKwkJCQkJICAgY3R4 LT5waXBlLCBFWFlOT1NfRElTUExBWV9UWVBFX0hETUksCj4gKwkJCQkJICAgJm1peGVyX2NydGNf b3BzLCBjdHgpOwo+ICAJaWYgKElTX0VSUihjdHgtPmNydGMpKSB7Cj4gIAkJbWl4ZXJfY3R4X3Jl bW92ZShjdHgpOwo+ICAJCXJldCA9IFBUUl9FUlIoY3R4LT5jcnRjKTsKPiAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==