From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 10/13] drm/i915: Move ddb/wm programming into plane update/disable hooks on skl+ Date: Wed, 21 Nov 2018 21:01:18 +0200 Message-ID: <20181121190118.GK9144@intel.com> References: <20181114210729.16185-1-ville.syrjala@linux.intel.com> <20181114210729.16185-11-ville.syrjala@linux.intel.com> <20181121004839.GR32505@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDC2389948 for ; Wed, 21 Nov 2018 19:01:22 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181121004839.GR32505@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMjAsIDIwMTggYXQgMDQ6NDg6MzlQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBXZWQsIE5vdiAxNCwgMjAxOCBhdCAxMTowNzoyNlBNICswMjAwLCBWaWxsZSBTeXJq YWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+IAo+ID4gT24gU0tMKyB0aGUgcGxhbmUgV00vQlVGX0NGRyByZWdpc3Rl cnMgYXJlIGEgcHJvcGVyIHBhcnQgb2YgZWFjaAo+ID4gcGxhbmUncyByZWdpc3RlciBzZXQuIFRo YXQgbWVhbnMgYWNjZXNzaW5nIHRoZW0gd2lsbCBjYW5jZWwgYW55Cj4gPiBwZW5kaW5nIHBsYW5l IHVwZGF0ZSwgYW5kIHdlIHdvdWxkIG5lZWQgYSBQTEFORV9TVVJGIHJlZ2lzdGVyIHdyaXRlCj4g PiB0byBhcm0gdGhlIHdtL2RkYiBjaGFuZ2UgYXMgd2VsbC4KPiA+IAo+ID4gVG8gYXZvaWQgYWxs IHRoZSBwcm9ibGVtcyB3aXRoIHRoYXQgbGV0J3MganVzdCBtb3ZlIHRoZSB3bS9kZGIKPiA+IHBy b2dyYW1taW5nIGludG8gdGhlIHBsYW5lIHVwZGF0ZS9kaXNhYmxlIGhvb2tzLiBOb3cgYWxsIHBs YW5lCj4gPiByZWdpc3RlcnMgZ2V0IHdyaXR0ZW4gaW4gb25lIChob3BlZnVsbHkgYXRvbWljKSBv cGVyYXRpb24uCj4gPiAKPiA+IFRvIG1ha2UgdGhhdCBmZWFzaWJsZSB3ZSdsbCBtb3ZlIHRoZSBw bGFuZSBkZGIgdHJhY2tpbmcgaW50bwo+ID4gdGhlIGNydGMgc3RhdGUuIFdhdGVybWFya3Mgd2Vy ZSBhbHJlYWR5IHRyYWNrZWQgdGhlcmUuCj4gPiAKPiA+IHYyOiBSZWJhc2UgZHVlIHRvIGlucHV0 IENTQwo+ID4gdjM6IFNwbGl0IG91dCBhIGJ1bmNoIG9mIGp1bmsgKE1hdHQpCj4gPiAKPiA+IENj OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0t LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICB8ICAyMSArLQo+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMyAtCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE2ICstCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oIHwgIDExICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgIHwgICA5ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jICAgICAgfCAzMTcgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICA0ICsKPiA+ICA3IGZpbGVzIGNoYW5n ZWQsIDE4MSBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBpbmRleCA2NzBkYjUwNzNkNzAuLmY4YjIyMDA5NDdj ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gQEAgLTM0Mzcs MzEgKzM0MzcsMzIgQEAgc3RhdGljIGludCBpOTE1X2RkYl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqdW51c2VkKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ID4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gPiAtCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYjsKPiA+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmVudHJ5Owo+ID4gLQllbnVtIHBpcGUg cGlwZTsKPiA+IC0JaW50IHBsYW5lOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+ ICAKPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQo+ID4gIAkJcmV0dXJuIC1FTk9E RVY7Cj4gPiAgCj4gPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4gPiAgCj4gPiAtCWRk YiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiA+IC0KPiA+ICAJc2VxX3ByaW50ZihtLCAi JS0xNXMlOHMlOHMlOHNcbiIsICIiLCAiU3RhcnQiLCAiRW5kIiwgIlNpemUiKTsKPiA+ICAKPiA+ IC0JZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewo+ID4gKwlmb3JfZWFjaF9pbnRlbF9j cnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSA9Cj4gPiArCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0 YXRlKTsKPiA+ICsJCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+ICsJCWVudW0gcGxh bmVfaWQgcGxhbmVfaWQ7Cj4gPiArCj4gPiAgCQlzZXFfcHJpbnRmKG0sICJQaXBlICVjXG4iLCBw aXBlX25hbWUocGlwZSkpOwo+ID4gIAo+ID4gLQkJZm9yX2VhY2hfdW5pdmVyc2FsX3BsYW5lKGRl dl9wcml2LCBwaXBlLCBwbGFuZSkgewo+ID4gLQkJCWVudHJ5ID0gJmRkYi0+cGxhbmVbcGlwZV1b cGxhbmVdOwo+ID4gLQkJCXNlcV9wcmludGYobSwgIiAgUGxhbmUlLThkJTh1JTh1JTh1XG4iLCBw bGFuZSArIDEsCj4gPiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5lX2lk KSB7Cj4gPiArCQkJZW50cnkgPSAmY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5l X2lkXTsKPiA+ICsJCQlzZXFfcHJpbnRmKG0sICIgIFBsYW5lJS04ZCU4dSU4dSU4dVxuIiwgcGxh bmVfaWQgKyAxLAo+ID4gIAkJCQkgICBlbnRyeS0+c3RhcnQsIGVudHJ5LT5lbmQsCj4gPiAgCQkJ CSAgIHNrbF9kZGJfZW50cnlfc2l6ZShlbnRyeSkpOwo+ID4gIAkJfQo+ID4gIAo+ID4gLQkJZW50 cnkgPSAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwo+ID4gKwkJZW50cnkgPSAmY3J0 Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl07Cj4gPiAgCQlzZXFfcHJp bnRmKG0sICIgICUtMTNzJTh1JTh1JTh1XG4iLCAiQ3Vyc29yIiwgZW50cnktPnN0YXJ0LAo+ID4g IAkJCSAgIGVudHJ5LT5lbmQsIHNrbF9kZGJfZW50cnlfc2l6ZShlbnRyeSkpOwo+ID4gIAl9Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDVkNjg2YjU4NWE5NS4uODlhZjY0ZmU5 MGE1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTEyNDEsOSArMTI0 MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBza2xfZGRiX2VudHJ5X2VxdWFsKGNvbnN0IHN0cnVj dCBza2xfZGRiX2VudHJ5ICplMSwKPiA+ICB9Cj4gPiAgCj4gPiAgc3RydWN0IHNrbF9kZGJfYWxs b2NhdGlvbiB7Cj4gPiAtCS8qIHBhY2tlZC95ICovCj4gPiAtCXN0cnVjdCBza2xfZGRiX2VudHJ5 IHBsYW5lW0k5MTVfTUFYX1BJUEVTXVtJOTE1X01BWF9QTEFORVNdOwo+ID4gLQlzdHJ1Y3Qgc2ts X2RkYl9lbnRyeSB1dl9wbGFuZVtJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVTXTsKPiA+ ICAJdTggZW5hYmxlZF9zbGljZXM7IC8qIEdFTjExIGhhcyBjb25maWd1cmFibGUgMiBzbGljZXMg Ki8KPiA+ICB9Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g aW5kZXggMGNhYmE3MjU4ZmVlLi4yOTgxY2VhMzcwNGEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTEwMDgzLDYgKzEwMDgzLDEwIEBAIHN0YXRpYyB2 b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIAkg KiBleGNlcHQgd2hlbiB0aGUgcGxhbmUgaXMgZ2V0dGluZyBlbmFibGVkIGF0IHdoaWNoIHRpbWUK PiA+ICAJICogdGhlIENVUkNOVFIgd3JpdGUgYXJtcyB0aGUgdXBkYXRlLgo+ID4gIAkgKi8KPiA+ ICsKPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiA+ICsJCXNrbF93cml0ZV9j dXJzb3Jfd20ocGxhbmUsIGNydGNfc3RhdGUpOwo+ID4gKwo+ID4gIAlpZiAocGxhbmUtPmN1cnNv ci5iYXNlICE9IGJhc2UgfHwKPiA+ICAJICAgIHBsYW5lLT5jdXJzb3Iuc2l6ZSAhPSBmYmNfY3Rs IHx8Cj4gPiAgCSAgICBwbGFuZS0+Y3Vyc29yLmNudGwgIT0gY250bCkgewo+ID4gQEAgLTExODcy LDYgKzExODc2LDggQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJc3RydWN0IHNrbF9waXBlX3dtIGh3X3dtLCAqc3dfd207Cj4gPiAgCXN0 cnVjdCBza2xfcGxhbmVfd20gKmh3X3BsYW5lX3dtLCAqc3dfcGxhbmVfd207Cj4gPiAgCXN0cnVj dCBza2xfZGRiX2VudHJ5ICpod19kZGJfZW50cnksICpzd19kZGJfZW50cnk7Cj4gPiArCXN0cnVj dCBza2xfZGRiX2VudHJ5IGh3X2RkYl95W0k5MTVfTUFYX1BMQU5FU107Cj4gPiArCXN0cnVjdCBz a2xfZGRiX2VudHJ5IGh3X2RkYl91dltJOTE1X01BWF9QTEFORVNdOwo+ID4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAgCWNvbnN0IGVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICAJaW50IHBsYW5lLCBsZXZlbCwg bWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gPiBAQCAtMTE4ODIsNiAr MTE4ODgsOCBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3RhdGUoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ID4gIAlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmh3X3dtKTsKPiA+ICAJ c3dfd20gPSAmdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpLT53bS5za2wub3B0aW1hbDsK PiA+ICAKPiA+ICsJc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShpbnRlbF9jcnRjLCBod19kZGJf eSwgaHdfZGRiX3V2KTsKPiA+ICsKPiA+ICAJc2tsX2RkYl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYs ICZod19kZGIpOwo+ID4gIAlzd19kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7Cj4gPiAg Cj4gPiBAQCAtMTE5MjQsOCArMTE5MzIsOCBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3RhdGUo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAkJfQo+ID4gIAo+ID4gIAkJLyogRERCICovCj4g PiAtCQlod19kZGJfZW50cnkgPSAmaHdfZGRiLnBsYW5lW3BpcGVdW3BsYW5lXTsKPiA+IC0JCXN3 X2RkYl9lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW3BsYW5lXTsKPiA+ICsJCWh3X2RkYl9l bnRyeSA9ICZod19kZGJfeVtwbGFuZV07Cj4gPiArCQlzd19kZGJfZW50cnkgPSAmdG9faW50ZWxf Y3J0Y19zdGF0ZShuZXdfc3RhdGUpLT53bS5za2wucGxhbmVfZGRiX3lbcGxhbmVdOwo+ID4gIAo+ ID4gIAkJaWYgKCFza2xfZGRiX2VudHJ5X2VxdWFsKGh3X2RkYl9lbnRyeSwgc3dfZGRiX2VudHJ5 KSkgewo+ID4gIAkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgcGxh bmUgJWQgKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+ID4gQEAgLTExOTc0 LDggKzExOTgyLDggQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJCX0KPiA+ICAKPiA+ICAJCS8qIEREQiAqLwo+ID4gLQkJaHdfZGRiX2Vu dHJ5ID0gJmh3X2RkYi5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwo+ID4gLQkJc3dfZGRiX2Vu dHJ5ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiA+ICsJCWh3X2RkYl9l bnRyeSA9ICZod19kZGJfeVtQTEFORV9DVVJTT1JdOwo+ID4gKwkJc3dfZGRiX2VudHJ5ID0gJnRv X2ludGVsX2NydGNfc3RhdGUobmV3X3N0YXRlKS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NV UlNPUl07Cj4gPiAgCj4gPiAgCQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZGRiX2VudHJ5 LCBzd19kZGJfZW50cnkpKSB7Cj4gPiAgCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBEREIgc3Rh dGUgcGlwZSAlYyBjdXJzb3IgKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaAo+ID4gaW5kZXggZGY5ZTZlYmIyN2Rl Li4wNzg0MDZkYzY1ZTUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku aAo+ID4gQEAgLTMxOSw3ICszMTksNyBAQCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gewo+ID4gIAkJ CSAgICAmKGRldiktPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsCQlcCj4gPiAgCQkJICAgIGJhc2Uu aGVhZCkJCQkJCVwKPiA+ICAJCWZvcl9lYWNoX2lmKChwbGFuZV9tYXNrKSAmCQkJCVwKPiA+IC0J CQkgICAgZHJtX3BsYW5lX21hc2soJmludGVsX3BsYW5lLT5iYXNlKSkpCj4gPiArCQkJICAgIGRy bV9wbGFuZV9tYXNrKCZpbnRlbF9wbGFuZS0+YmFzZSkpCj4gPiAgCj4gPiAgI2RlZmluZSBmb3Jf ZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpCVwK PiA+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9wbGFuZSwJCQkJXAo+ID4gQEAgLTQxNSw2 ICs0MTUsMTUgQEAgc3RydWN0IGludGVsX2xpbmtfbV9uIHsKPiA+ICAJICAgICAoX19pKSsrKSBc Cj4gPiAgCQlmb3JfZWFjaF9pZihwbGFuZSkKPiA+ICAKPiA+ICsjZGVmaW5lIGZvcl9lYWNoX29s ZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKF9fc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSwgX19pKSBcCj4gPiArCWZvciAoKF9faSkgPSAwOyBcCj4gPiArCSAgICAg KF9faSkgPCAoX19zdGF0ZSktPmJhc2UuZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YyAmJiBcCj4g PiArCQkgICAgICgoY3J0YykgPSB0b19pbnRlbF9jcnRjKChfX3N0YXRlKS0+YmFzZS5jcnRjc1tf X2ldLnB0ciksIFwKPiA+ICsJCSAgICAgIChvbGRfY3J0Y19zdGF0ZSkgPSB0b19pbnRlbF9jcnRj X3N0YXRlKChfX3N0YXRlKS0+YmFzZS5jcnRjc1tfX2ldLm9sZF9zdGF0ZSksIFwKPiA+ICsJCSAg ICAgIChuZXdfY3J0Y19zdGF0ZSkgPSB0b19pbnRlbF9jcnRjX3N0YXRlKChfX3N0YXRlKS0+YmFz ZS5jcnRjc1tfX2ldLm5ld19zdGF0ZSksIDEpOyBcCj4gPiArCSAgICAgKF9faSkrKykgXAo+ID4g KwkJZm9yX2VhY2hfaWYoY3J0YykKPiA+ICsKPiA+ICB2b2lkIGludGVsX2xpbmtfY29tcHV0ZV9t X24oaW50IGJwcCwgaW50IG5sYW5lcywKPiA+ICAJCQkgICAgaW50IHBpeGVsX2Nsb2NrLCBpbnQg bGlua19jbG9jaywKPiA+ICAJCQkgICAgc3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggMjNiMzM5NzBkYjE3Li40YTlhZjA5YzQ4 M2EgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC03MDUsNiArNzA1 LDggQEAgc3RydWN0IGludGVsX2NydGNfd21fc3RhdGUgewo+ID4gIAkJCS8qIGdlbjkrIG9ubHkg bmVlZHMgMS1zdGVwIHdtIHByb2dyYW1taW5nICovCj4gPiAgCQkJc3RydWN0IHNrbF9waXBlX3dt IG9wdGltYWw7Cj4gPiAgCQkJc3RydWN0IHNrbF9kZGJfZW50cnkgZGRiOwo+ID4gKwkJCXN0cnVj dCBza2xfZGRiX2VudHJ5IHBsYW5lX2RkYl95W0k5MTVfTUFYX1BMQU5FU107Cj4gPiArCQkJc3Ry dWN0IHNrbF9kZGJfZW50cnkgcGxhbmVfZGRiX3V2W0k5MTVfTUFYX1BMQU5FU107Cj4gCj4gSSBm ZWVsIGxpa2UgbmFtaW5nIHRoZXNlIF95IGFuZCBfdXYgaXMgZ29pbmcgdG8gY2F1c2UgY29uZnVz aW9uLiAgVGhlIFkKPiBhbmQgVVYgYXJlIGJhY2t3YXJkcyBoYWxmIHRoZSB0aW1lIChiYXNlZCBv biB0aGUgc3dhcCB3ZSBoYXZlIHRvIGRvCj4gZmFydGhlciBkb3duKSwgYW5kIGRvZXNuJ3QgaGF2 ZSBtZWFuaW5nIGF0IGFsbCBmb3IgUkdCLiAgTWF5YmUgbmFtZQo+IHRoZXNlIHNvbWV0aGluZyBs aWtlICJwbGFuZV9kZGJfbWFpbiIgYW5kICJwbGFuZV9kZGJfZXh0cmEiIHRvIHNvbWV3aGF0Cj4g ZGlzYXNzb2NpYXRlIGl0IHdpdGggdGhlIGFjdHVhbCB0eXBlIG9mIGRhdGEgaXQncyBzdXBwb3Nl ZCB0byByZXByZXNlbnQ/Cj4gCj4gSWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgX3kgYW5kIF91diAo d2hpY2ggYXJlIG5pY2UgYW5kIHNob3J0KSwgSSB0aGluawo+IHdlIGF0IGxlYXN0IG5lZWQgc29t ZSB3YXJuaW5nIGNvbW1lbnRzIGhlcmUgZXhwbGFpbmluZyB0aGUgYmVoYXZpb3IuCgpZZWFoLCBJ IHdhcyBhbHNvIHRoaW5raW5nIHdlIG1pZ2h0IHdhbnQgdG8ganVzdCBzdGFydCBmb2xsb3dpbmcg dGhlCmhhcmR3YXJlIGNvbnZlbnRpb24gd2l0aCB0aGVzZSBhbmQgZ2V0IHJpZCBvZiB0aGUgc3dh cCgpcy4gTXkgaW5pdGlhbAppZGVhIHdhcyBqdXN0IHNvbWV0aGluZyBsaWtlIGRkYltdIGFuZCBk ZGJfbnYxMltdIHRvIG1hdGNoIHRoZQpyZWdpc3RlciBuYW1lcy4KCkJ1dCBsZXQncyBkbyB0aGF0 IGFzIGEgZm9sbG93dXAgbWF5YmU/Cgo+IAo+ID4gIAkJfSBza2w7Cj4gPiAgCj4gPiAgCQlzdHJ1 Y3Qgewo+ID4gQEAgLTIxODMsNiArMjE4NSw5IEBAIHZvaWQgZzR4X3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICB2b2lkIHZsdl93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiAgdm9pZCBpbGtfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiA+ICt2b2lkIHNrbF9waXBlX2RkYl9nZXRfaHdfc3RhdGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gPiArCQkJICAgICAgIHN0cnVjdCBza2xfZGRiX2VudHJ5 ICpkZGJfeSwKPiA+ICsJCQkgICAgICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmRkYl91dik7Cj4g PiAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiAgCQkJICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICov KTsKPiA+ICB2b2lkIHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gPiBAQCAtMjE5Nyw2ICsyMjAyLDEwIEBAIGJvb2wgc2tsX3dtX2xldmVsX2VxdWFscyhj b25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsMSwKPiA+ICBib29sIHNrbF9kZGJfYWxsb2NhdGlv bl9vdmVybGFwcyhjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZGRiLAo+ID4gIAkJCQkgY29u c3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgZW50cmllc1tdLAo+ID4gIAkJCQkgaW50IG51bV9lbnRy aWVzLCBpbnQgaWdub3JlX2lkeCk7Cj4gPiArdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICsJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSk7Cj4gPiArdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsCj4gPiArCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKPiA+ICBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4gIGludCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+ICAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gaW5kZXggYTIxNjU0Yzk3NGJh Li4xYjMzNzAwNDA1NGEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBAQCAt MzkxMiw2OCArMzkxMiw3MCBAQCBzdGF0aWMgdm9pZAo+ID4gIHNrbF9kZGJfZ2V0X2h3X3BsYW5l X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQkgICBjb25z dCBlbnVtIHBpcGUgcGlwZSwKPiA+ICAJCQkgICBjb25zdCBlbnVtIHBsYW5lX2lkIHBsYW5lX2lk LAo+ID4gLQkJCSAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4g PiArCQkJICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmRkYl95LAo+ID4gKwkJCSAgIHN0cnVjdCBz a2xfZGRiX2VudHJ5ICpkZGJfdXYpCj4gPiAgewo+ID4gLQl1MzIgdmFsLCB2YWwyID0gMDsKPiA+ IC0JaW50IGZvdXJjYywgcGl4ZWxfZm9ybWF0Owo+ID4gKwl1MzIgdmFsLCB2YWwyOwo+ID4gKwl1 MzIgZm91cmNjID0gMDsKPiA+ICAKPiA+ICAJLyogQ3Vyc29yIGRvZXNuJ3Qgc3VwcG9ydCBOVjEy L3BsYW5hciwgc28gbm8gZXh0cmEgY2FsY3VsYXRpb24gbmVlZGVkICovCj4gPiAgCWlmIChwbGFu ZV9pZCA9PSBQTEFORV9DVVJTT1IpIHsKPiA+ICAJCXZhbCA9IEk5MTVfUkVBRChDVVJfQlVGX0NG RyhwaXBlKSk7Cj4gPiAtCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odyhkZXZfcHJpdiwKPiA+ IC0JCQkJCSAgICZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwgdmFsKTsKPiA+ICsJCXNrbF9k ZGJfZW50cnlfaW5pdF9mcm9tX2h3KGRldl9wcml2LCBkZGJfeSwgdmFsKTsKPiA+ICAJCXJldHVy bjsKPiA+ICAJfQo+ID4gIAo+ID4gIAl2YWwgPSBJOTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIHBs YW5lX2lkKSk7Cj4gPiAgCj4gPiAgCS8qIE5vIEREQiBhbGxvY2F0ZWQgZm9yIGRpc2FibGVkIHBs YW5lcyAqLwo+ID4gLQlpZiAoISh2YWwgJiBQTEFORV9DVExfRU5BQkxFKSkKPiA+IC0JCXJldHVy bjsKPiAKPiBJIHRoaW5rIHdlIHNob3VsZCBtZW50aW9uIHRoZSByZWFkb3V0IGJlaGF2aW9yIGNo YW5nZSBpbiB0aGUgY29tbWl0Cj4gbWVzc2FnZSAoaS5lLiwgd2Ugbm93IHJlYWQgb3V0IEREQiBl dmVuIGlmIHdlIHRoaW5rIHRoZSBwbGFuZSBpcwo+IGRpc2FibGVkKS4gIEVpdGhlciB0aGF0IG9y IG1vdmUgdGhlIGJlaGF2aW9yIGNoYW5nZSB0byBhIHNlcGFyYXRlIHBhdGNoLgo+IAo+IFdlIHNo b3VsZCBhbHNvIGRyb3AgdGhlIGNvbW1lbnQgbGluZSBzaW5jZSBJIGRvbid0IHRoaW5rIGl0IHJl YWxseSBtYWtlcwo+IHNlbnNlIGFueW1vcmUuCgpTdXJlLgoKPiAKPiA+ICsJaWYgKHZhbCAmIFBM QU5FX0NUTF9FTkFCTEUpCj4gPiArCQlmb3VyY2MgPSBza2xfZm9ybWF0X3RvX2ZvdXJjYyh2YWwg JiBQTEFORV9DVExfRk9STUFUX01BU0ssCj4gPiArCQkJCQkgICAgICB2YWwgJiBQTEFORV9DVExf T1JERVJfUkdCWCwKPiA+ICsJCQkJCSAgICAgIHZhbCAmIFBMQU5FX0NUTF9BTFBIQV9NQVNLKTsK PiA+ICAKPiA+IC0JcGl4ZWxfZm9ybWF0ID0gdmFsICYgUExBTkVfQ1RMX0ZPUk1BVF9NQVNLOwo+ ID4gLQlmb3VyY2MgPSBza2xfZm9ybWF0X3RvX2ZvdXJjYyhwaXhlbF9mb3JtYXQsCj4gPiAtCQkJ CSAgICAgIHZhbCAmIFBMQU5FX0NUTF9PUkRFUl9SR0JYLAo+ID4gLQkJCQkgICAgICB2YWwgJiBQ TEFORV9DVExfQUxQSEFfTUFTSyk7Cj4gPiAtCj4gPiAtCXZhbCA9IEk5MTVfUkVBRChQTEFORV9C VUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSk7Cj4gPiAtCWlmIChmb3VyY2MgPT0gRFJNX0ZPUk1BVF9O VjEyICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkgewo+ID4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMSkgewo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX0JVRl9DRkcocGlw ZSwgcGxhbmVfaWQpKTsKPiA+ICsJCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KGRldl9wcml2 LCBkZGJfeSwgdmFsKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCXZhbCA9IEk5MTVfUkVBRChQTEFO RV9CVUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSk7Cj4gPiAgCQl2YWwyID0gSTkxNV9SRUFEKFBMQU5F X05WMTJfQlVGX0NGRyhwaXBlLCBwbGFuZV9pZCkpOwo+ID4gIAo+ID4gLQkJc2tsX2RkYl9lbnRy eV9pbml0X2Zyb21faHcoZGV2X3ByaXYsCj4gPiAtCQkJCQkgICAmZGRiLT5wbGFuZVtwaXBlXVtw bGFuZV9pZF0sIHZhbDIpOwo+ID4gLQkJc2tsX2RkYl9lbnRyeV9pbml0X2Zyb21faHcoZGV2X3By aXYsCj4gPiAtCQkJCQkgICAmZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0sIHZhbCk7Cj4g PiAtCX0gZWxzZSB7Cj4gPiAtCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odyhkZXZfcHJpdiwK PiA+IC0JCQkJCSAgICZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwgdmFsKTsKPiA+ICsJCWlm IChmb3VyY2MgPT0gRFJNX0ZPUk1BVF9OVjEyKQo+ID4gKwkJCXN3YXAodmFsLCB2YWwyKTsKPiA+ ICsKPiA+ICsJCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KGRldl9wcml2LCBkZGJfeSwgdmFs KTsKPiA+ICsJCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KGRldl9wcml2LCBkZGJfdXYsIHZh bDIpOwo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gK3ZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19z dGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ICsJCQkgICAgICAgc3RydWN0IHNrbF9k ZGJfZW50cnkgKmRkYl95LAo+ID4gKwkJCSAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZGRi X3V2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gPiArCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4gcG93ZXJfZG9tYWluOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gPiAr CWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gPiArCj4gPiArCXBvd2VyX2RvbWFpbiA9IFBPV0VS X0RPTUFJTl9QSVBFKHBpcGUpOwo+ID4gKwlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lm X2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4g PiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoY3J0YywgcGxhbmVfaWQpCj4gPiArCQlza2xf ZGRiX2dldF9od19wbGFuZV9zdGF0ZShkZXZfcHJpdiwgcGlwZSwKPiA+ICsJCQkJCSAgIHBsYW5l X2lkLAo+ID4gKwkJCQkJICAgJmRkYl95W3BsYW5lX2lkXSwKPiA+ICsJCQkJCSAgICZkZGJfdXZb cGxhbmVfaWRdKTsKPiA+ICsKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IHBvd2VyX2RvbWFpbik7Cj4gPiArfQo+ID4gKwo+ID4gIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJCSAgc3RydWN0IHNr bF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjOwo+ID4gLQo+ID4gIAltZW1zZXQoZGRiLCAwLCBzaXplb2YoKmRkYikpOwo+ IAo+IFdlIGNhbiBkcm9wIHRoZSBtZW1zZXQuICBUaGUgZW50aXJlIHN0cnVjdHVyZSBpcyBvbmx5 IDEgYnl0ZSBub3csIGFuZCB3ZQo+IHNldCBpdHMgb25seSByZW1haW5pbmcgZmllbGQgb24gdGhl IG5leHQgbGluZS4KCkFjay4KCj4gCj4gPiAgCj4gPiAgCWRkYi0+ZW5hYmxlZF9zbGljZXMgPSBp bnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX251bShkZXZfcHJpdik7Cj4gPiAtCj4gPiAtCWZvcl9l YWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0sIGNydGMpIHsKPiA+IC0JCWVudW0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ID4gLQkJZW51bSBwbGFuZV9pZCBw bGFuZV9pZDsKPiA+IC0JCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+IC0KPiA+IC0J CXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpOwo+ID4gLQkJaWYgKCFpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKQo+ ID4gLQkJCWNvbnRpbnVlOwo+ID4gLQo+ID4gLQkJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0Yyhj cnRjLCBwbGFuZV9pZCkKPiA+IC0JCQlza2xfZGRiX2dldF9od19wbGFuZV9zdGF0ZShkZXZfcHJp diwgcGlwZSwKPiA+IC0JCQkJCQkgICBwbGFuZV9pZCwgZGRiKTsKPiA+IC0KPiA+IC0JCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ID4gLQl9Cj4gPiAg fQo+ID4gIAo+ID4gIC8qCj4gPiBAQCAtNDM3MSw3ICs0MzczLDYgQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiAgCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+IC0JZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2Mg PSAmY3N0YXRlLT53bS5za2wuZGRiOwo+ID4gIAl1aW50MTZfdCBhbGxvY19zaXplLCBzdGFydDsK PiA+ICAJdWludDE2X3QgbWluaW11bVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gPiBAQCAtNDM4 NCw4ICs0Mzg1LDggQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUsCj4gPiAgCXVpbnQxNl90IHRvdGFsX21pbl9ibG9ja3MgPSAwOwo+ID4gIAo+ ID4gIAkvKiBDbGVhciB0aGUgcGFydGl0aW9uaW5nIGZvciBkaXNhYmxlZCBwbGFuZXMuICovCj4g PiAtCW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkp Owo+ID4gLQltZW1zZXQoZGRiLT51dl9wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+dXZfcGxh bmVbcGlwZV0pKTsKPiA+ICsJbWVtc2V0KGNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95LCAwLCBz aXplb2YoY3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3kpKTsKPiA+ICsJbWVtc2V0KGNzdGF0ZS0+ d20uc2tsLnBsYW5lX2RkYl91diwgMCwgc2l6ZW9mKGNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91 dikpOwo+ID4gIAo+ID4gIAlpZiAoV0FSTl9PTighc3RhdGUpKQo+ID4gIAkJcmV0dXJuIDA7Cj4g PiBAQCAtNDQzMiw4ICs0NDMzLDggQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiAgCX0KPiA+ICAKPiA+ICAJYWxsb2Nfc2l6ZSAtPSB0 b3RhbF9taW5fYmxvY2tzOwo+ID4gLQlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0uc3Rh cnQgPSBhbGxvYy0+ZW5kIC0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ID4gLQlkZGItPnBsYW5l W3BpcGVdW1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2MtPmVuZDsKPiA+ICsJY3N0YXRlLT53bS5z a2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLSBtaW5pbXVt W1BMQU5FX0NVUlNPUl07Cj4gPiArCWNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NV UlNPUl0uZW5kID0gYWxsb2MtPmVuZDsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogMi4gRGlzdHJp YnV0ZSB0aGUgcmVtYWluaW5nIHNwYWNlIGluIHByb3BvcnRpb24gdG8gdGhlIGFtb3VudCBvZgo+ ID4gQEAgLTQ0NjQsOCArNDQ2NSw4IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gIAo+ID4gIAkJLyogTGVhdmUgZGlzYWJsZWQgcGxh bmVzIGF0ICgwLDApICovCj4gPiAgCQlpZiAoZGF0YV9yYXRlKSB7Cj4gPiAtCQkJZGRiLT5wbGFu ZVtwaXBlXVtwbGFuZV9pZF0uc3RhcnQgPSBzdGFydDsKPiA+IC0JCQlkZGItPnBsYW5lW3BpcGVd W3BsYW5lX2lkXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiA+ICsJCQljc3RhdGUtPndt LnNrbC5wbGFuZV9kZGJfeVtwbGFuZV9pZF0uc3RhcnQgPSBzdGFydDsKPiA+ICsJCQljc3RhdGUt PndtLnNrbC5wbGFuZV9kZGJfeVtwbGFuZV9pZF0uZW5kID0gc3RhcnQgKyBwbGFuZV9ibG9ja3M7 Cj4gPiAgCQl9Cj4gPiAgCj4gPiAgCQlzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4gPiBAQCAtNDQ4 MCw4ICs0NDgxLDggQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUsCj4gPiAgCQlXQVJOX09OKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYg dXZfcGxhbmVfYmxvY2tzKTsKPiA+ICAKPiA+ICAJCWlmICh1dl9kYXRhX3JhdGUpIHsKPiA+IC0J CQlkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+ID4gLQkJCWRk Yi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLmVuZCA9Cj4gPiArCQkJY3N0YXRlLT53bS5za2wu cGxhbmVfZGRiX3V2W3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+ID4gKwkJCWNzdGF0ZS0+d20u c2tsLnBsYW5lX2RkYl91dltwbGFuZV9pZF0uZW5kID0KPiA+ICAJCQkJc3RhcnQgKyB1dl9wbGFu ZV9ibG9ja3M7Cj4gPiAgCQl9Cj4gPiAgCj4gPiBAQCAtNDkzOSwxNiArNDk0MCwxMyBAQCBzdGF0 aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGludCBza2xf YnVpbGRfcGxhbmVfd21fc2luZ2xlKHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+ IC0JCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICtzdGF0 aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gPiAgCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSwKPiA+ICAJCQkJICAgICBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkLCBpbnQg Y29sb3JfcGxhbmUpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ID4gIAlzdHJ1Y3Qgc2tsX3Bs YW5lX3dtICp3bSA9ICZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRd Owo+ID4gKwl1MTYgZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmY3J0Y19zdGF0ZS0+ d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lkXSk7Cj4gPiAgCXN0cnVjdCBza2xfd21fcGFyYW1z IHdtX3BhcmFtczsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiA+IC0JdWlu dDE2X3QgZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtwaXBlXVtw bGFuZV9pZF0pOwo+ID4gIAlpbnQgcmV0Owo+ID4gIAo+ID4gIAlyZXQgPSBza2xfY29tcHV0ZV9w bGFuZV93bV9wYXJhbXMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiBAQCAtNDk2NiwxNiAr NDk2NCwxMyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoc3RydWN0IHNr bF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAt c3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd21fdXYoc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlv biAqZGRiLAo+ID4gLQkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g PiArc3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd21fdXYoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gPiAgCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlLAo+ID4gIAkJCQkgZW51bSBwbGFuZV9pZCBwbGFuZV9pZCkKPiA+ICB7Cj4g PiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7Cj4gPiAgCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0gJmNydGNfc3Rh dGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07Cj4gPiArCXUxNiBkZGJfYmxvY2tz ID0gc2tsX2RkYl9lbnRyeV9zaXplKCZjcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3V2W3Bs YW5lX2lkXSk7Cj4gPiAgCXN0cnVjdCBza2xfd21fcGFyYW1zIHdtX3BhcmFtczsKPiA+IC0JZW51 bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiA+IC0JdWludDE2X3QgZGRiX2Jsb2NrcyA9IHNr bF9kZGJfZW50cnlfc2l6ZSgmZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pOwo+ID4gIAlp bnQgcmV0Owo+ID4gIAo+ID4gIAl3bS0+aXNfcGxhbmFyID0gdHJ1ZTsKPiA+IEBAIC00OTk0LDgg KzQ5ODksNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV91dihzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIsCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0 aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bShzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIs Cj4gPiAtCQkJICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLAo+ID4gK3N0YXRpYyBp bnQgc2tsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwKPiA+ICAJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gIHsKPiA+ IEBAIC01MDA3LDEzICs1MDAxLDEzIEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtKHN0 cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+ICAJaWYgKCFpbnRlbF93bV9wbGFuZV92 aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKPiA+ICAJCXJldHVybiAwOwo+ID4gIAo+ ID4gLQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKGRkYiwgY3J0Y19zdGF0ZSwgcGxh bmVfc3RhdGUsCj4gPiArCXJldCA9IHNrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoY3J0Y19zdGF0 ZSwgcGxhbmVfc3RhdGUsCj4gPiAgCQkJCQlwbGFuZV9pZCwgMCk7Cj4gPiAgCWlmIChyZXQpCj4g PiAgCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gIAlpZiAoZmItPmZvcm1hdC0+aXNfeXV2ICYmIGZi LT5mb3JtYXQtPm51bV9wbGFuZXMgPiAxKSB7Cj4gPiAtCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVf d21fdXYoZGRiLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwKPiA+ICsJCXJldCA9IHNrbF9idWls ZF9wbGFuZV93bV91dihjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwKPiA+ICAJCQkJCSAgICBwbGFu ZV9pZCk7Cj4gPiAgCQlpZiAocmV0KQo+ID4gIAkJCXJldHVybiByZXQ7Cj4gPiBAQCAtNTAyMiw4 ICs1MDE2LDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd20oc3RydWN0IHNrbF9kZGJf YWxsb2NhdGlvbiAqZGRiLAo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGlj IGludCBpY2xfYnVpbGRfcGxhbmVfd20oc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+ ID4gLQkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwKPiA+ICtzdGF0aWMgaW50 IGljbF9idWlsZF9wbGFuZV93bShzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20sCj4gPiAgCQkJ ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiAgCQkJICAgICAg Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICB7Cj4gPiBA QCAtNTA0MSwxNyArNTAzNCwxNyBAQCBzdGF0aWMgaW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1 Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gPiAgCQlXQVJOX09OKCFmYi0+Zm9ybWF0LT5p c195dXYgfHwKPiA+ICAJCQlmYi0+Zm9ybWF0LT5udW1fcGxhbmVzID09IDEpOwo+ID4gIAo+ID4g LQkJcmV0ID0gc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShkZGIsIGNydGNfc3RhdGUsIHBsYW5l X3N0YXRlLAo+ID4gKwkJcmV0ID0gc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSwKPiA+ICAJCQkJCQl5X3BsYW5lX2lkLCAwKTsKPiA+ICAJCWlmIChyZXQp Cj4gPiAgCQkJcmV0dXJuIHJldDsKPiA+ICAKPiA+IC0JCXJldCA9IHNrbF9idWlsZF9wbGFuZV93 bV9zaW5nbGUoZGRiLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwKPiA+ICsJCXJldCA9IHNrbF9i dWlsZF9wbGFuZV93bV9zaW5nbGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiAgCQkJCQkJ cGxhbmVfaWQsIDEpOwo+ID4gIAkJaWYgKHJldCkKPiA+ICAJCQlyZXR1cm4gcmV0Owo+ID4gIAl9 IGVsc2UgaWYgKGludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUp KSB7Cj4gPiAtCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKGRkYiwgY3J0Y19zdGF0 ZSwgcGxhbmVfc3RhdGUsCj4gPiArCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKGNy dGNfc3RhdGUsIHBsYW5lX3N0YXRlLAo+ID4gIAkJCQkJCXBsYW5lX2lkLCAwKTsKPiA+ICAJCWlm IChyZXQpCj4gPiAgCQkJcmV0dXJuIHJldDsKPiA+IEBAIC01MDYxLDcgKzUwNTQsNiBAQCBzdGF0 aWMgaW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIs Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+IC0JCQkgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9j YXRpb24gKmRkYiwKPiA+ICAJCQkgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSkKPiA+ ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0 YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gPiBAQCAtNTA4MSwxMCArNTA3MywxMCBAQCBzdGF0aWMg aW50IHNrbF9idWlsZF9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4g PiAgCQkJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKPiA+ICAKPiA+ICAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4gLQkJCXJldCA9IGljbF9idWlsZF9wbGFuZV93 bShkZGIsIHBpcGVfd20sCj4gPiArCQkJcmV0ID0gaWNsX2J1aWxkX3BsYW5lX3dtKHBpcGVfd20s Cj4gPiAgCQkJCQkJIGNzdGF0ZSwgaW50ZWxfcHN0YXRlKTsKPiA+ICAJCWVsc2UKPiA+IC0JCQly ZXQgPSBza2xfYnVpbGRfcGxhbmVfd20oZGRiLCBwaXBlX3dtLAo+ID4gKwkJCXJldCA9IHNrbF9i dWlsZF9wbGFuZV93bShwaXBlX3dtLAo+ID4gIAkJCQkJCSBjc3RhdGUsIGludGVsX3BzdGF0ZSk7 Cj4gPiAgCQlpZiAocmV0KQo+ID4gIAkJCXJldHVybiByZXQ7Cj4gPiBAQCAtNTEwMCw5ICs1MDky LDkgQEAgc3RhdGljIHZvaWQgc2tsX2RkYl9lbnRyeV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICplbnRy eSkKPiA+ICB7Cj4gPiAgCWlmIChlbnRyeS0+ZW5kKQo+ID4gLQkJSTkxNV9XUklURShyZWcsIChl bnRyeS0+ZW5kIC0gMSkgPDwgMTYgfCBlbnRyeS0+c3RhcnQpOwo+ID4gKwkJSTkxNV9XUklURV9G VyhyZWcsIChlbnRyeS0+ZW5kIC0gMSkgPDwgMTYgfCBlbnRyeS0+c3RhcnQpOwo+ID4gIAllbHNl Cj4gPiAtCQlJOTE1X1dSSVRFKHJlZywgMCk7Cj4gPiArCQlJOTE1X1dSSVRFX0ZXKHJlZywgMCk7 Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIHNrbF93cml0ZV93bV9sZXZlbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiBAQCAtNTExNywxOSArNTEwOSwyMiBAQCBz dGF0aWMgdm9pZCBza2xfd3JpdGVfd21fbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gIAkJdmFsIHw9IGxldmVsLT5wbGFuZV9yZXNfbCA8PCBQTEFORV9XTV9MSU5F U19TSElGVDsKPiA+ICAJfQo+ID4gIAo+ID4gLQlJOTE1X1dSSVRFKHJlZywgdmFsKTsKPiA+ICsJ STkxNV9XUklURV9GVyhyZWcsIHZhbCk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIHNr bF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+IC0JCQkg ICAgICAgY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqd20sCj4gPiAtCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+IC0JCQkgICAgICAgZW51bSBwbGFu ZV9pZCBwbGFuZV9pZCkKPiA+ICt2b2lkIHNrbF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ID4gKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMt PmJhc2U7Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp Owo+ID4gIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYp Owo+ID4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiArCWVudW0gcGxh bmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0gcGxhbmUt PnBpcGU7Cj4gPiArCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiA+ICsJCSZjcnRj X3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRdOwo+ID4gKwljb25zdCBzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqZGRiX3kgPQo+ID4gKwkJJmNydGNfc3RhdGUtPndtLnNrbC5wbGFu ZV9kZGJfeVtwbGFuZV9pZF07Cj4gPiArCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICpkZGJf dXYgPQo+ID4gKwkJJmNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfdXZbcGxhbmVfaWRdOwo+ ID4gIAo+ID4gIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7 Cj4gPiAgCQlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsIHBsYW5l X2lkLCBsZXZlbCksCj4gPiBAQCAtNTEzOCwyOSArNTEzMywzMiBAQCBzdGF0aWMgdm9pZCBza2xf d3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiAgCXNrbF93 cml0ZV93bV9sZXZlbChkZXZfcHJpdiwgUExBTkVfV01fVFJBTlMocGlwZSwgcGxhbmVfaWQpLAo+ ID4gIAkJCSAgICZ3bS0+dHJhbnNfd20pOwo+ID4gIAo+ID4gLQlpZiAod20tPmlzX3BsYW5hciAm JiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpIHsKPiA+IC0JCXNrbF9kZGJfZW50cnlfd3JpdGUo ZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ID4gLQkJCQkgICAgJmRk Yi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEpIHsKPiA+ICAJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsCj4gPiAtCQkJ CSAgICBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ID4gLQkJCQkgICAgJmRk Yi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiA+IC0JfSBlbHNlIHsKPiA+IC0JCXNrbF9kZGJf ZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ID4g LQkJCQkgICAgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiA+IC0JCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgMTEpCj4gPiAtCQkJSTkxNV9XUklURShQTEFORV9OVjEyX0JVRl9DRkco cGlwZSwgcGxhbmVfaWQpLCAweDApOwo+ID4gKwkJCQkgICAgUExBTkVfQlVGX0NGRyhwaXBlLCBw bGFuZV9pZCksIGRkYl95KTsKPiA+ICsJCXJldHVybjsKPiA+ICAJfQo+ID4gKwo+ID4gKwlpZiAo d20tPmlzX3BsYW5hcikKPiA+ICsJCXN3YXAoZGRiX3ksIGRkYl91dik7Cj4gCj4gQXMgbm90ZWQg YWJvdmUsIEkgdW5kZXJzdGFuZCB3aHkgdGhpcyBpcywgYnV0IGl0IHN1cmUgbG9va3MgY29uZnVz aW5nIGF0Cj4gYSBjYXN1YWwgZ2xhbmNlLi4uCj4gCj4gCj4gTWF0dAo+IAo+ID4gKwo+ID4gKwlz a2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LAo+ID4gKwkJCSAgICBQTEFORV9CVUZfQ0ZHKHBp cGUsIHBsYW5lX2lkKSwgZGRiX3kpOwo+ID4gKwlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2 LAo+ID4gKwkJCSAgICBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLCBkZGJfdXYp Owo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ID4gLQkJCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5l X3dtICp3bSwKPiA+IC0JCQkJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKQo+ ID4gK3ZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ID4gKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICB7 Cj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+ID4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiA+ICAJaW50IGxl dmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiA+IC0JZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gKwllbnVtIHBsYW5lX2lkIHBsYW5lX2lk ID0gcGxhbmUtPmlkOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ID4gKwlj b25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9Cj4gPiArCQkmY3J0Y19zdGF0ZS0+d20uc2ts Lm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiA+ICsJY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50 cnkgKmRkYiA9Cj4gPiArCQkmY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lk XTsKPiA+ICAKPiA+ICAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwr Kykgewo+ID4gIAkJc2tsX3dyaXRlX3dtX2xldmVsKGRldl9wcml2LCBDVVJfV00ocGlwZSwgbGV2 ZWwpLAo+ID4gQEAgLTUxNjgsOCArNTE2Niw3IEBAIHN0YXRpYyB2b2lkIHNrbF93cml0ZV9jdXJz b3Jfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiAgCX0KPiA+ICAJc2tsX3dy aXRlX3dtX2xldmVsKGRldl9wcml2LCBDVVJfV01fVFJBTlMocGlwZSksICZ3bS0+dHJhbnNfd20p Owo+ID4gIAo+ID4gLQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBDVVJfQlVGX0NGRyhw aXBlKSwKPiA+IC0JCQkgICAgJmRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSk7Cj4gPiAr CXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIENVUl9CVUZfQ0ZHKHBpcGUpLCBkZGIpOwo+ ID4gIH0KPiA+ICAKPiA+ICBib29sIHNrbF93bV9sZXZlbF9lcXVhbHMoY29uc3Qgc3RydWN0IHNr bF93bV9sZXZlbCAqbDEsCj4gPiBAQCAtNTIxMCwxMyArNTIwNywxMiBAQCBib29sIHNrbF9kZGJf YWxsb2NhdGlvbl9vdmVybGFwcyhjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZGRiLAo+ID4g IHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+ID4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVfd20s Cj4gPiAgCQkJICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLCAvKiBvdXQgKi8KPiA+ IC0JCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsIC8qIG91dCAqLwo+ID4g IAkJCSAgICAgIGJvb2wgKmNoYW5nZWQgLyogb3V0ICovKQo+ID4gIHsKPiA+ICAJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRl KTsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+IC0JcmV0ID0gc2tsX2J1aWxkX3BpcGVfd20oaW50 ZWxfY3N0YXRlLCBkZGIsIHBpcGVfd20pOwo+ID4gKwlyZXQgPSBza2xfYnVpbGRfcGlwZV93bShp bnRlbF9jc3RhdGUsIHBpcGVfd20pOwo+ID4gIAlpZiAocmV0KQo+ID4gIAkJcmV0dXJuIHJldDsK PiA+ICAKPiA+IEBAIC01MjQyLDQyICs1MjM4LDI5IEBAIHBpcGVzX21vZGlmaWVkKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGludAo+ID4g LXNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlKQo+ID4gK3NrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gPiArCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHN0YXRlLT5kZXY7Cj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+ YmFzZS5jcnRjOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiA+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUg PSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gLQlzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKPiA+IC0Jc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqY3VyX2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRk YjsKPiA+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUg PSB0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ID4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ ID4gIAo+ID4gLQlkcm1fZm9yX2VhY2hfcGxhbmVfbWFzayhwbGFuZSwgZGV2LCBjc3RhdGUtPmJh c2UucGxhbmVfbWFzaykgewo+ID4gLQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGU7Cj4gPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmxpbmtlZDsKPiA+IC0JCWVudW0gcGxhbmVf aWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOwo+ID4gKwlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjLCBwbGFuZSkgewo+ID4gKwkJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiA+ICsJCWVudW0gcGxhbmVf aWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPiAgCj4gPiAtCQlpZiAoc2tsX2RkYl9lbnRyeV9l cXVhbCgmY3VyX2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdLAo+ID4gLQkJCQkJJm5ld19kZGIt PnBsYW5lW3BpcGVdW3BsYW5lX2lkXSkgJiYKPiA+IC0JCSAgICBza2xfZGRiX2VudHJ5X2VxdWFs KCZjdXJfZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4gPiAtCQkJCQkmbmV3X2RkYi0+ dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkKPiA+ICsJCWlmIChza2xfZGRiX2VudHJ5X2VxdWFs KCZvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lkXSwKPiA+ICsJCQkJ CSZuZXdfY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lkXSkgJiYKPiA+ICsJ CSAgICBza2xfZGRiX2VudHJ5X2VxdWFsKCZvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2Rk Yl91dltwbGFuZV9pZF0sCj4gPiArCQkJCQkmbmV3X2NydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9k ZGJfdXZbcGxhbmVfaWRdKSkKPiA+ICAJCQljb250aW51ZTsKPiA+ICAKPiA+IC0JCXBsYW5lX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+ICsJCXBs YW5lX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+ ID4gIAkJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpCj4gPiAgCQkJcmV0dXJuIFBUUl9FUlIocGxh bmVfc3RhdGUpOwo+ID4gIAo+ID4gLQkJLyogTWFrZSBzdXJlIGxpbmtlZCBwbGFuZSBpcyB1cGRh dGVkIHRvbyAqLwo+ID4gLQkJbGlua2VkID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3Rh dGUpLT5saW5rZWRfcGxhbmU7Cj4gPiAtCQlpZiAoIWxpbmtlZCkKPiA+IC0JCQljb250aW51ZTsK PiA+IC0KPiA+IC0JCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3Rh dGUsICZsaW5rZWQtPmJhc2UpOwo+ID4gLQkJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpCj4gPiAt CQkJcmV0dXJuIFBUUl9FUlIocGxhbmVfc3RhdGUpOwo+ID4gKwkJbmV3X2NydGNfc3RhdGUtPnVw ZGF0ZV9wbGFuZXMgfD0gQklUKHBsYW5lX2lkKTsKPiA+ICAJfQo+ID4gIAo+ID4gIAlyZXR1cm4g MDsKPiA+IEBAIC01Mjg5LDE4ICs1MjcyLDIxIEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+ ICAJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1 bHRzLmRkYjsKPiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gPiAgCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl Owo+ID4gIAlpbnQgcmV0LCBpOwo+ID4gIAo+ID4gIAltZW1jcHkoZGRiLCAmZGV2X3ByaXYtPndt LnNrbF9ody5kZGIsIHNpemVvZigqZGRiKSk7Cj4gPiAgCj4gPiAtCWZvcl9lYWNoX25ld19pbnRl bF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiA+IC0JCXJl dCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGRkYik7Cj4gPiArCWZvcl9lYWNoX29s ZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwKPiA+ICsJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ID4gKwkJcmV0ID0gc2tsX2Fs bG9jYXRlX3BpcGVfZGRiKG5ld19jcnRjX3N0YXRlLCBkZGIpOwo+ID4gIAkJaWYgKHJldCkKPiA+ ICAJCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gLQkJcmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0ZWRf cGxhbmVzKGNzdGF0ZSk7Cj4gPiArCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMo b2xkX2NydGNfc3RhdGUsCj4gPiArCQkJCQkJICBuZXdfY3J0Y19zdGF0ZSk7Cj4gPiAgCQlpZiAo cmV0KQo+ID4gIAkJCXJldHVybiByZXQ7Cj4gPiAgCX0KPiA+IEBAIC01MzA5LDM2ICs1Mjk1LDI5 IEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAg fQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkCj4gPiAtc2tsX3ByaW50X3dtX2NoYW5nZXMoY29uc3Qg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gK3NrbF9wcmludF93bV9jaGFuZ2Vz KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+IC0JY29uc3Qgc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gPiAtCWNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IC0JY29uc3Qgc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ID4gLQkJdG9faW50ZWxfYXRvbWlj X3N0YXRlKHN0YXRlKTsKPiA+IC0JY29uc3Qgc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gLQlj b25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiA+IC0JY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiA+IC0JY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2Nh dGlvbiAqb2xkX2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiA+IC0JY29uc3Qgc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0 cy5kZGI7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo c3RhdGUtPmJhc2UuZGV2KTsKPiA+ICsJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlOwo+ID4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGU7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwo+ID4gIAlpbnQgaTsKPiA+ICAKPiA+IC0JZm9yX2VhY2hfbmV3X2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgewo+ID4gLQkJY29uc3Qgc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQkJZW51 bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gLQo+ID4gLQkJZm9yX2VhY2hfaW50 ZWxfcGxhbmVfb25fY3J0YyhkZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7Cj4gPiAtCQkJ ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IGludGVsX3BsYW5lLT5pZDsKPiA+ICsJZm9yX2VhY2hf b2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ ID4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gPiArCQlmb3JfZWFjaF9pbnRlbF9w bGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjLCBwbGFuZSkgewo+ID4gKwkJCWVudW0g cGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPiAgCQkJY29uc3Qgc3RydWN0IHNrbF9k ZGJfZW50cnkgKm9sZCwgKm5ldzsKPiA+ICAKPiA+IC0JCQlvbGQgPSAmb2xkX2RkYi0+cGxhbmVb cGlwZV1bcGxhbmVfaWRdOwo+ID4gLQkJCW5ldyA9ICZuZXdfZGRiLT5wbGFuZVtwaXBlXVtwbGFu ZV9pZF07Cj4gPiArCQkJb2xkID0gJm9sZF9jcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lb cGxhbmVfaWRdOwo+ID4gKwkJCW5ldyA9ICZuZXdfY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2Rk Yl95W3BsYW5lX2lkXTsKPiA+ICAKPiA+ICAJCQlpZiAoc2tsX2RkYl9lbnRyeV9lcXVhbChvbGQs IG5ldykpCj4gPiAgCQkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gIAkJCURSTV9ERUJVR19LTVMoIltQ TEFORTolZDolc10gZGRiICglZCAtICVkKSAtPiAoJWQgLSAlZClcbiIsCj4gPiAtCQkJCSAgICAg IGludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQsCj4gPiAtCQkJCSAgICAgIGludGVsX3BsYW5lLT5i YXNlLm5hbWUsCj4gPiArCQkJCSAgICAgIHBsYW5lLT5iYXNlLmJhc2UuaWQsIHBsYW5lLT5iYXNl Lm5hbWUsCj4gPiAgCQkJCSAgICAgIG9sZC0+c3RhcnQsIG9sZC0+ZW5kLAo+ID4gIAkJCQkgICAg ICBuZXctPnN0YXJ0LCBuZXctPmVuZCk7Cj4gPiAgCQl9Cj4gPiBAQCAtNTQ3NCw4ICs1NDUzLDcg QEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIAkJ CSZ0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+d20uc2tsLm9wdGltYWw7Cj4gPiAg Cj4gPiAgCQlwaXBlX3dtID0gJmludGVsX2NzdGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4gPiAtCQly ZXQgPSBza2xfdXBkYXRlX3BpcGVfd20oY3N0YXRlLCBvbGRfcGlwZV93bSwgcGlwZV93bSwKPiA+ IC0JCQkJCSAmcmVzdWx0cy0+ZGRiLCAmY2hhbmdlZCk7Cj4gPiArCQlyZXQgPSBza2xfdXBkYXRl X3BpcGVfd20oY3N0YXRlLCBvbGRfcGlwZV93bSwgcGlwZV93bSwgJmNoYW5nZWQpOwo+ID4gIAkJ aWYgKHJldCkKPiA+ICAJCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gQEAgLTU0ODksNyArNTQ2Nyw3 IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICAJ CWludGVsX2NzdGF0ZS0+dXBkYXRlX3dtX3ByZSA9IHRydWU7Cj4gPiAgCX0KPiA+ICAKPiA+IC0J c2tsX3ByaW50X3dtX2NoYW5nZXMoc3RhdGUpOwo+ID4gKwlza2xfcHJpbnRfd21fY2hhbmdlcyhp bnRlbF9zdGF0ZSk7Cj4gPiAgCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+IEBAIC01NTAwLDIz ICs1NDc4LDEyIEBAIHN0YXRpYyB2b2lkIHNrbF9hdG9taWNfdXBkYXRlX2NydGNfd20oc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKPiA+ICAJc3Ry dWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4gPiAt CWNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiA9ICZzdGF0ZS0+d21fcmVzdWx0 cy5kZGI7Cj4gPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+IC0JZW51bSBwbGFu ZV9pZCBwbGFuZV9pZDsKPiA+ICAKPiA+ICAJaWYgKCEoc3RhdGUtPndtX3Jlc3VsdHMuZGlydHlf cGlwZXMgJiBkcm1fY3J0Y19tYXNrKCZjcnRjLT5iYXNlKSkpCj4gPiAgCQlyZXR1cm47Cj4gPiAg Cj4gPiAgCUk5MTVfV1JJVEUoUElQRV9XTV9MSU5FVElNRShwaXBlKSwgcGlwZV93bS0+bGluZXRp bWUpOwo+ID4gLQo+ID4gLQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5lX2lk KSB7Cj4gPiAtCQlpZiAocGxhbmVfaWQgIT0gUExBTkVfQ1VSU09SKQo+ID4gLQkJCXNrbF93cml0 ZV9wbGFuZV93bShjcnRjLCAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXSwKPiA+IC0JCQkJCSAg IGRkYiwgcGxhbmVfaWQpOwo+ID4gLQkJZWxzZQo+ID4gLQkJCXNrbF93cml0ZV9jdXJzb3Jfd20o Y3J0YywgJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF0sCj4gPiAtCQkJCQkgICAgZGRiKTsKPiA+ IC0JfQo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBza2xfaW5pdGlhbF93bShzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+IEBAIC01NTI2LDggKzU0OTMsNiBAQCBzdGF0 aWMgdm9pZCBza2xfaW5pdGlhbF93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK PiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2Owo+ID4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAg CXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAqcmVzdWx0cyA9ICZzdGF0ZS0+d21fcmVzdWx0czsKPiA+ IC0Jc3RydWN0IHNrbF9kZGJfdmFsdWVzICpod192YWxzID0gJmRldl9wcml2LT53bS5za2xfaHc7 Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICAKPiA+ICAJaWYg KChyZXN1bHRzLT5kaXJ0eV9waXBlcyAmIGRybV9jcnRjX21hc2soJmludGVsX2NydGMtPmJhc2Up KSA9PSAwKQo+ID4gIAkJcmV0dXJuOwo+ID4gQEAgLTU1MzcsMTEgKzU1MDIsNiBAQCBzdGF0aWMg dm9pZCBza2xfaW5pdGlhbF93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ ICAJaWYgKGNzdGF0ZS0+YmFzZS5hY3RpdmVfY2hhbmdlZCkKPiA+ICAJCXNrbF9hdG9taWNfdXBk YXRlX2NydGNfd20oc3RhdGUsIGNzdGF0ZSk7Cj4gPiAgCj4gPiAtCW1lbWNweShod192YWxzLT5k ZGIudXZfcGxhbmVbcGlwZV0sIHJlc3VsdHMtPmRkYi51dl9wbGFuZVtwaXBlXSwKPiA+IC0JICAg ICAgIHNpemVvZihod192YWxzLT5kZGIudXZfcGxhbmVbcGlwZV0pKTsKPiA+IC0JbWVtY3B5KGh3 X3ZhbHMtPmRkYi5wbGFuZVtwaXBlXSwgcmVzdWx0cy0+ZGRiLnBsYW5lW3BpcGVdLAo+ID4gLQkg ICAgICAgc2l6ZW9mKGh3X3ZhbHMtPmRkYi5wbGFuZVtwaXBlXSkpOwo+ID4gLQo+ID4gIAltdXRl eF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTU2 OTIsMTMgKzU2NTIsNiBAQCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ICAJaWYgKGRldl9wcml2LT5hY3RpdmVfY3J0Y3MpIHsKPiA+ICAJCS8qIEZ1 bGx5IHJlY29tcHV0ZSBEREIgb24gZmlyc3QgYXRvbWljIGNvbW1pdCAqLwo+ID4gIAkJZGV2X3By aXYtPndtLmRpc3RydXN0X2Jpb3Nfd20gPSB0cnVlOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJLyoK PiA+IC0JCSAqIEVhc3kvY29tbW9uIGNhc2U7IGp1c3Qgc2FuaXRpemUgRERCIG5vdyBpZiBldmVy eXRoaW5nIG9mZgo+ID4gLQkJICogS2VlcCBkYnVmIHNsaWNlIGluZm8gaW50YWN0Cj4gPiAtCQkg Ki8KPiA+IC0JCW1lbXNldChkZGItPnBsYW5lLCAwLCBzaXplb2YoZGRiLT5wbGFuZSkpOwo+ID4g LQkJbWVtc2V0KGRkYi0+dXZfcGxhbmUsIDAsIHNpemVvZihkZGItPnV2X3BsYW5lKSk7Cj4gPiAg CX0KPiA+ICB9Cj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gaW5k ZXggNzRkOTA0YTQ5YmY5Li4wMjYyMTU5ZTcwODQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKPiA+IEBAIC01NDIsNiArNTQyLDggQEAgc2tsX3Byb2dyYW1fcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAJaWYgKGZiLT5mb3JtYXQtPmlzX3l1diAm JiBpY2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKPiA+ICAJCWljbF9wcm9ncmFtX2lucHV0X2NzY19j b2VmZihjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPiAgCj4gPiArCXNrbF93cml0ZV9wbGFu ZV93bShwbGFuZSwgY3J0Y19zdGF0ZSk7Cj4gPiArCj4gPiAgCUk5MTVfV1JJVEVfRlcoUExBTkVf S0VZVkFMKHBpcGUsIHBsYW5lX2lkKSwga2V5LT5taW5fdmFsdWUpOwo+ID4gIAlJOTE1X1dSSVRF X0ZXKFBMQU5FX0tFWU1TSyhwaXBlLCBwbGFuZV9pZCksIGtleW1zayk7Cj4gPiAgCUk5MTVfV1JJ VEVfRlcoUExBTkVfS0VZTUFYKHBpcGUsIHBsYW5lX2lkKSwga2V5bWF4KTsKPiA+IEBAIC02MDQs NiArNjA2LDggQEAgc2tsX2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiA+ICAKPiA+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJx ZmxhZ3MpOwo+ID4gIAo+ID4gKwlza2xfd3JpdGVfcGxhbmVfd20ocGxhbmUsIGNydGNfc3RhdGUp Owo+ID4gKwo+ID4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NUTChwaXBlLCBwbGFuZV9pZCksIDAp Owo+ID4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX1NVUkYocGlwZSwgcGxhbmVfaWQpLCAwKTsKPiA+ ICAKPiA+IC0tIAo+ID4gMi4xOC4xCj4gPiAKPiAKPiAtLSAKPiBNYXR0IFJvcGVyCj4gR3JhcGhp Y3MgU29mdHdhcmUgRW5naW5lZXIKPiBJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1l bnQKPiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICg5MTYpIDM1Ni0yNzk1CgotLSAKVmlsbGUgU3lyasOk bMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=