From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 1/6] drm/i915: Move rotation from intel_plane to intel_plane_state Date: Tue, 20 Jan 2015 07:26:20 -0800 Message-ID: <20150120152620.GM22549@intel.com> References: <1421375664-30550-1-git-send-email-matthew.d.roper@intel.com> <1421375664-30550-2-git-send-email-matthew.d.roper@intel.com> <20150120094406.GL10113@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 987336E04C for ; Tue, 20 Jan 2015 07:33:45 -0800 (PST) Content-Disposition: inline In-Reply-To: <20150120094406.GL10113@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKYW4gMjAsIDIwMTUgYXQgMTA6NDQ6MDZBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIEphbiAxNSwgMjAxNSBhdCAwNjozNDoxOVBNIC0wODAwLCBNYXR0IFJv cGVyIHdyb3RlOgo+ID4gUnVudGltZSBzdGF0ZSB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCB2aWEg cHJvcGVydGllcyBzaG91bGQgbm93IGdvIGluCj4gPiBpbnRlbF9wbGFuZV9zdGF0ZSBpbnN0ZWFk IHNvIHRoYXQgaXQgY2FuIGJlIHRyYWNrZWQgYXMgcGFydCBvZiBhbiBhdG9taWMKPiA+IHRyYW5z YWN0aW9uLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9w ZXJAaW50ZWwuY29tPgo+IAo+IEltbyB3ZSBzaG91bGQgbW92ZSB0aGlzIHRvIGRybV9wbGFuZV9z dGF0ZSBzbyB0aGF0IGZiIGhlbHBlcnMgb3IgYW5kIHRoZQo+IGRybSBhdG9taWMgaW9jdGwgY291 bGQgZG8gdGhlIGRlY29kaW5nIGluIHNoYXJlZCBjb2RlIGluc3RlYWQgb2YKPiBkdXBsaWNhdGlu ZyB0aGluZ3MgYWxsIG92ZXIuIEJ1dCB3ZSBwcm9iYWJseSB3YW50IHRvIGRvIHRoYXQgb25jZSB0 aGUgaTkxNQo+IGNvbnZlcnNpb24gKGF0IGxlYXN0IG9uIHRoZSBwbGFuZSBzaWRlKSBoYXMgc2V0 dGxlZCBhIGJpdC4KPiAtRGFuaWVsCgpJIGNvbnNpZGVyZWQgdGhpcywgYnV0IEkgd2Fzbid0IHN1 cmUgaG93IGl0IHdvdWxkIHNoYWtlIG91dCBpZiBzb21lCmRyaXZlcnMgaGF2ZSBjb252ZXJ0ZWQg dG8gYXRvbWljIChhbmQgc3RvcmUgdGhlaXIgcm90YXRpb24gaW4gcGxhbmUKc3RhdGUpIGFuZCBv dGhlciBkcml2ZXJzIGhhdmVuJ3QgY29udmVydGVkIChhbmQgc3RpbGwgc3RvcmUgaXQgaW4gc29t ZQpkcml2ZXItc3BlY2lmaWMgYXJlYSkuICBJZiBkcml2ZXJzIGhhdmVuJ3QgY29udmVydGVkIHRv IGF0b21pYywgdGhlCmF0b21pYyBpb2N0bCB3b3VsZG4ndCBiZSBhIGNvbmNlcm4sIGJ1dCBpdCBz ZWVtcyBsaWtlIHRoZSBmYiBoZWxwZXJzCm1pZ2h0IGhhdmUgbW9yZSBkaWZmaWN1bHR5IGZpZ3Vy aW5nIG91dCB3aGV0aGVyIGl0IGNvdWxkIHRydXN0IHJvdGF0aW9uCnZhbHVlcyBvciBub3QuICBG cm9tIGEgcXVpY2sgY3Njb3BlLCBpdCBsb29rcyBsaWtlIGV4eW5vcyBhbmQgb21hcCBhdApsZWFz dCBoYXZlIHNvbWUgcm90YXRpb24gc3VwcG9ydCBhbmQgSSBkaWRuJ3Qgd2FudCB0byBkZWFsIHdp dGggdGhlbQp1bnRpbCBJIGhhZCB0aGUgSW50ZWwgd29yayBpbiBnb29kIHNoYXBlLgoKCk1hdHQK Cj4gCj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAz NiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAxMCArKysrKysrKystCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgIHwgIDQgKysrLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jICB8IDMzICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0p Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IGI2YzQ2 NjcuLjg0YjBiNGQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ID4gQEAgLTI0MzUsNiArMjQzNSw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpz dGF0ZSA9Cj4gPiArCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmltYXJ5LT5zdGF0ZSk7 Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ICAJaW50IHBsYW5l ID0gaW50ZWxfY3J0Yy0+cGxhbmU7Cj4gPiBAQCAtMjUzMiw3ICsyNTM0LDcgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAg CQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7Cj4gPiAgCX0KPiA+ ICAKPiA+IC0JaWYgKHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiA9PSBC SVQoRFJNX1JPVEFURV8xODApKSB7Cj4gPiArCWlmIChzdGF0ZS0+cm90YXRpb24gPT0gQklUKERS TV9ST1RBVEVfMTgwKSkgewo+ID4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4MDsK PiA+ICAKPiA+ICAJCXggKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+ ID4gQEAgLTI1NjgsNiArMjU3MCw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0 YXRlID0KPiA+ICsJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsK PiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ICAJaW50IHBsYW5lID0g aW50ZWxfY3J0Yy0+cGxhbmU7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgbGluZWFyX29mZnNldDsKPiA+ IEBAIC0yNjM0LDcgKzI2MzgsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6 ZSwKPiA+ICAJCQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7Cj4gPiAgCWxpbmVhcl9vZmZzZXQg LT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7Cj4gPiAtCWlmICh0b19pbnRlbF9wbGFuZShj cnRjLT5wcmltYXJ5KS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gKwlp ZiAoc3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICAJCWRzcGNu dHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4gPiAgCj4gPiAgCQlpZiAoIUlTX0hBU1dFTEwo ZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKPiA+IEBAIC0yNjczLDYgKzI2NzcsOCBAQCBz dGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0KPiA+ICsJCXRvX2ludGVsX3BsYW5l X3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKPiA+ICAJc3RydWN0IGludGVsX2ZyYW1lYnVm ZmVyICppbnRlbF9mYjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gQEAgLTI3MzEsNyArMjczNyw3IEBA IHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ID4gIAl9Cj4gPiAgCj4gPiAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVf R0FNTUFfRElTQUJMRTsKPiA+IC0JaWYgKHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5y b3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+ID4gKwlpZiAoc3RhdGUtPnJvdGF0aW9u ID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gPiAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JP VEFURV8xODA7Cj4gPiAgCj4gPiAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFu ZV9jdGwpOwo+ID4gQEAgLTgyMTYsNiArODIyMiw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRl X2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlKQo+ID4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqc3RhdGUgPQo+ID4gKwkJdG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+Y3Vyc29yLT5z dGF0ZSk7Cj4gPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICAJdWludDMyX3Qg Y250bDsKPiA+ICAKPiA+IEBAIC04MjQyLDcgKzgyNTAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgYmFzZSkKPiA+ICAJCQljbnRs IHw9IENVUlNPUl9QSVBFX0NTQ19FTkFCTEU7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWYgKHRvX2lu dGVsX3BsYW5lKGNydGMtPmN1cnNvciktPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkp Cj4gPiArCWlmIChzdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiA+ICAJ CWNudGwgfD0gQ1VSU09SX1JPVEFURV8xODA7Cj4gPiAgCj4gPiAgCWlmIChpbnRlbF9jcnRjLT5j dXJzb3JfY250bCAhPSBjbnRsKSB7Cj4gPiBAQCAtODI2NSw2ICs4MjczLDggQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gKwlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0KPiA+ICsJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMt PmN1cnNvci0+c3RhdGUpOwo+ID4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiAg CWludCB4ID0gY3J0Yy0+Y3Vyc29yX3g7Cj4gPiAgCWludCB5ID0gY3J0Yy0+Y3Vyc29yX3k7Cj4g PiBAQCAtODMwMyw4ICs4MzEzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y191cGRhdGVfY3Vy c29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAJSTkxNV9XUklURShDVVJQT1MocGlwZSks IHBvcyk7Cj4gPiAgCj4gPiAgCS8qIElMSysgZG8gdGhpcyBhdXRvbWFnaWNhbGx5ICovCj4gPiAt CWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikgJiYKPiA+IC0JCXRvX2ludGVsX3BsYW5lKGNydGMt PmN1cnNvciktPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICsJaWYgKEhB U19HTUNIX0RJU1BMQVkoZGV2KSAmJiBzdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVf MTgwKSkgewo+ID4gIAkJYmFzZSArPSAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2hlaWdodCAqCj4gPiAg CQkJaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoIC0gMSkgKiA0Owo+ID4gIAl9Cj4gPiBAQCAtMTE3 NTYsNyArMTE3NjUsNiBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5j cnRjOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiA+IC0Jc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiA+ICAJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiA+ICAJc3RydWN0IGRy bV9yZWN0ICpkZXN0ID0gJnN0YXRlLT5kc3Q7Cj4gPiAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0g JnN0YXRlLT5zcmM7Cj4gPiBAQCAtMTE3OTAsNyArMTE3OTgsNyBAQCBpbnRlbF9jaGVja19wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAkJaWYgKGludGVsX2NydGMt PnByaW1hcnlfZW5hYmxlZCAmJgo+ID4gIAkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQg JiYgIUlTX0c0WChkZXYpICYmCj4gPiAgCQkgICAgZGV2X3ByaXYtPmZiYy5wbGFuZSA9PSBpbnRl bF9jcnRjLT5wbGFuZSAmJgo+ID4gLQkJICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbiAhPSBCSVQo RFJNX1JPVEFURV8wKSkgewo+ID4gKwkJICAgIHN0YXRlLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JP VEFURV8wKSkgewo+ID4gIAkJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYyA9IHRydWU7 Cj4gPiAgCQl9Cj4gPiAgCj4gPiBAQCAtMTE5NzUsNiArMTE5ODMsNyBAQCBzdGF0aWMgc3RydWN0 IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiA+ICAJCQkJCQkgICAgaW50IHBpcGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnByaW1hcnk7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGU7Cj4g PiAgCWNvbnN0IHVpbnQzMl90ICppbnRlbF9wcmltYXJ5X2Zvcm1hdHM7Cj4gPiAgCWludCBudW1f Zm9ybWF0czsKPiA+ICAKPiA+IEBAIC0xMTk4NywxMiArMTE5OTYsMTMgQEAgc3RhdGljIHN0cnVj dCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gPiAgCQlrZnJlZShwcmltYXJ5KTsKPiA+ICAJCXJldHVybiBOVUxMOwo+ID4gIAl9 Cj4gPiArCXN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+YmFzZS5zdGF0ZSk7 Cj4gPiAgCj4gPiAgCXByaW1hcnktPmNhbl9zY2FsZSA9IGZhbHNlOwo+ID4gIAlwcmltYXJ5LT5t YXhfZG93bnNjYWxlID0gMTsKPiA+ICAJcHJpbWFyeS0+cGlwZSA9IHBpcGU7Cj4gPiAgCXByaW1h cnktPnBsYW5lID0gcGlwZTsKPiA+IC0JcHJpbWFyeS0+cm90YXRpb24gPSBCSVQoRFJNX1JPVEFU RV8wKTsKPiA+ICsJc3RhdGUtPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gPiAgCXBy aW1hcnktPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZTsKPiA+ICAJcHJp bWFyeS0+Y29tbWl0X3BsYW5lID0gaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmU7Cj4gPiAgCWlm IChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ID4gQEAgLTEyMDIw LDcgKzEyMDMwLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxh bmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQlpZiAoZGV2LT5tb2RlX2Nv bmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiA+ICAJCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmcHJpbWFyeS0+YmFzZS5iYXNlLAo+ID4gIAkJCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5LAo+ID4gLQkJCQlwcmltYXJ5LT5yb3RhdGlvbik7Cj4gPiArCQkJCXN0YXRlLT5y b3RhdGlvbik7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1h cnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ID4gQEAgLTEyMTQ4LDYgKzEy MTU4LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQkJCQkgICBpbnQgcGlwZSkKPiA+ICB7 Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqY3Vyc29yOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnN0YXRlOwo+ID4gIAo+ID4gIAljdXJzb3IgPSBremFsbG9jKHNpemVvZigqY3Vy c29yKSwgR0ZQX0tFUk5FTCk7Cj4gPiAgCWlmIChjdXJzb3IgPT0gTlVMTCkKPiA+IEBAIC0xMjE1 OCwxMiArMTIxNjksMTMgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCWtmcmVlKGN1cnNvcik7 Cj4gPiAgCQlyZXR1cm4gTlVMTDsKPiA+ICAJfQo+ID4gKwlzdGF0ZSA9IHRvX2ludGVsX3BsYW5l X3N0YXRlKGN1cnNvci0+YmFzZS5zdGF0ZSk7Cj4gPiAgCj4gPiAgCWN1cnNvci0+Y2FuX3NjYWxl ID0gZmFsc2U7Cj4gPiAgCWN1cnNvci0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gPiAgCWN1cnNvci0+ cGlwZSA9IHBpcGU7Cj4gPiAgCWN1cnNvci0+cGxhbmUgPSBwaXBlOwo+ID4gLQljdXJzb3ItPnJv dGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gPiArCXN0YXRlLT5yb3RhdGlvbiA9IEJJVChE Uk1fUk9UQVRFXzApOwo+ID4gIAljdXJzb3ItPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfY3Vy c29yX3BsYW5lOwo+ID4gIAljdXJzb3ItPmNvbW1pdF9wbGFuZSA9IGludGVsX2NvbW1pdF9jdXJz b3JfcGxhbmU7Cj4gPiAgCj4gPiBAQCAtMTIxODIsNyArMTIxOTQsNyBAQCBzdGF0aWMgc3RydWN0 IGRybV9wbGFuZSAqaW50ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gIAkJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPiAg CQkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmN1cnNvci0+YmFzZS5iYXNlLAo+ID4gIAkJ CQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+ID4gLQkJCQljdXJzb3ItPnJv dGF0aW9uKTsKPiA+ICsJCQkJc3RhdGUtPnJvdGF0aW9uKTsKPiA+ICAJfQo+ID4gIAo+ID4gIAlk cm1fcGxhbmVfaGVscGVyX2FkZCgmY3Vyc29yLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1 bmNzKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBjOGMwYjdmLi45MThj Y2UyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMjUwLDYgKzI1 MCw5IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gPiAgCXN0cnVjdCBkcm1fcmVjdCBj bGlwOwo+ID4gIAlib29sIHZpc2libGU7Cj4gPiAgCj4gPiArCS8qIEludGVsLXNwZWNpZmljIHBs YW5lIHByb3BlcnRpZXMgKi8KPiA+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+ID4gKwo+ID4g IAkvKgo+ID4gIAkgKiB1c2VkIG9ubHkgZm9yIHNwcml0ZSBwbGFuZXMgdG8gZGV0ZXJtaW5lIHdo ZW4gdG8gaW1wbGljaXRseQo+ID4gIAkgKiBlbmFibGUvZGlzYWJsZSB0aGUgcHJpbWFyeSBwbGFu ZQo+ID4gQEAgLTUwOSw3ICs1MTIsNiBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmUgewo+ID4gIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4gIAlib29sIGNhbl9zY2FsZTsKPiA+ICAJ aW50IG1heF9kb3duc2NhbGU7Cj4gPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiA+ICAKPiA+ ICAJLyogU2luY2Ugd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHdhdGVybWFya3MgYmVmb3JlL2FmdGVy Cj4gPiAgCSAqIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgcGxhbmVzLCB3ZSBuZWVkIHRvIHN0b3Jl IHRoZSBwYXJhbWV0ZXJzIGhlcmUKPiA+IEBAIC01MTgsNiArNTIwLDEyIEBAIHN0cnVjdCBpbnRl bF9wbGFuZSB7Cj4gPiAgCSAqLwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVy cyB3bTsKPiA+ICAKPiA+ICsJLyoKPiA+ICsJICogTk9URTogRG8gbm90IHBsYWNlIG5ldyBwbGFu ZSBzdGF0ZSBmaWVsZHMgaGVyZSAoZS5nLiwgd2hlbiBhZGRpbmcKPiA+ICsJICogbmV3IHBsYW5l IHByb3BlcnRpZXMpLiAgTmV3IHJ1bnRpbWUgc3RhdGUgc2hvdWxkIG5vdyBiZSBwbGFjZWQgaW4K PiA+ICsJICogdGhlIGludGVsX3BsYW5lX3N0YXRlIHN0cnVjdHVyZSBhbmQgYWNjZXNzZWQgdmlh IGRybV9wbGFuZS0+c3RhdGUuCj4gPiArCSAqLwo+ID4gKwo+ID4gIAl2b2lkICgqdXBkYXRlX3Bs YW5lKShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJCQkgICAgIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+IGluZGV4IDViMWQ3YzQuLjNlODc0NTQgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+IEBAIC00OTYsNiArNDk2LDcgQEAgdm9pZCBp bnRlbF9mYmNfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IE5VTEwsICp0bXBfY3J0YzsKPiA+ICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGM7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpbWFyeV9zdGF0 ZTsKPiA+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlOwo+ID4gQEAgLTU0MCw2ICs1NDEsNyBAQCB2b2lkIGludGVsX2ZiY191cGRh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJfQo+ID4gIAo+ID4gIAlpbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+ICsJcHJpbWFyeV9zdGF0ZSA9IHRvX2ludGVsX3Bs YW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKPiA+ICAJZmIgPSBjcnRjLT5wcmltYXJ5 LT5mYjsKPiA+ICAJb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiA+ICAJYWRqdXN0ZWRfbW9kZSA9 ICZpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiA+IEBAIC01OTUsNyAr NTk3LDcgQEAgdm9pZCBpbnRlbF9mYmNfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g PiAgCQlnb3RvIG91dF9kaXNhYmxlOwo+ID4gIAl9Cj4gPiAgCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+ID4gLQkgICAgdG9faW50ZWxfcGxhbmUoY3J0 Yy0+cHJpbWFyeSktPnJvdGF0aW9uICE9IEJJVChEUk1fUk9UQVRFXzApKSB7Cj4gPiArCSAgICBw cmltYXJ5X3N0YXRlLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewo+ID4gIAkJaWYg KHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfVU5TVVBQT1JURURfTU9ERSkpCj4gPiAg CQkJRFJNX0RFQlVHX0tNUygiUm90YXRpb24gdW5zdXBwb3J0ZWQsIGRpc2FibGluZ1xuIik7Cj4g PiAgCQlnb3RvIG91dF9kaXNhYmxlOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiA+IGluZGV4IDBhNjA5NGUuLjE0MGM1YjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiA+IEBAIC0xODcsNiArMTg3LDggQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGRybV9wbGFuZS0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUoZHJtX3BsYW5lKTsKPiA+ICsJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9Cj4gPiArCQl0b19pbnRlbF9wbGFuZV9z dGF0ZShkcm1fcGxhbmUtPnN0YXRlKTsKPiA+ICAJY29uc3QgaW50IHBpcGUgPSBpbnRlbF9wbGFu ZS0+cGlwZTsKPiA+ICAJY29uc3QgaW50IHBsYW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lICsgMTsK PiA+ICAJdTMyIHBsYW5lX2N0bCwgc3RyaWRlOwo+ID4gQEAgLTI1Niw3ICsyNTgsNyBAQCBza2xf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ID4gIAlkZWZhdWx0Ogo+ID4gIAkJQlVHKCk7Cj4gPiAgCX0KPiA+IC0JaWYgKGlu dGVsX3BsYW5lLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+ID4gKwlpZiAoc3Rh dGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gPiAgCQlwbGFuZV9jdGwgfD0g UExBTkVfQ1RMX1JPVEFURV8xODA7Cj4gPiAgCj4gPiAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExf RU5BQkxFOwo+ID4gQEAgLTQwNyw2ICs0MDksNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gZHBsYW5lLT5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAq aW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcGxhbmUpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoZHBsYW5lLT5zdGF0ZSk7 Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiA+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiA+ICAJaW50IHBsYW5lID0g aW50ZWxfcGxhbmUtPnBsYW5lOwo+ID4gQEAgLTQ5Myw3ICs0OTYsNyBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4g IAkJCQkJCQlmYi0+cGl0Y2hlc1swXSk7Cj4gPiAgCWxpbmVhcl9vZmZzZXQgLT0gc3Byc3VyZl9v ZmZzZXQ7Cj4gPiAgCj4gPiAtCWlmIChpbnRlbF9wbGFuZS0+cm90YXRpb24gPT0gQklUKERSTV9S T1RBVEVfMTgwKSkgewo+ID4gKwlpZiAoc3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpIHsKPiA+ICAJCXNwcmN0bCB8PSBTUF9ST1RBVEVfMTgwOwo+ID4gIAo+ID4gIAkJeCAr PSBzcmNfdzsKPiA+IEBAIC02MDgsNiArNjExLDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGludGVsX3BsYW5lICpp bnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiA+ICsJc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4g PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiA+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiA+ICAJdTMyIHNwcmN0bCwgc3By c2NhbGUgPSAwOwo+ID4gQEAgLTY4NCw3ICs2ODgsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJCQkgICAg ICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ID4gIAlsaW5lYXJfb2Zmc2V0IC09IHNw cnN1cmZfb2Zmc2V0Owo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfcGxhbmUtPnJvdGF0aW9uID09IEJJ VChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICsJaWYgKHN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJN X1JPVEFURV8xODApKSB7Cj4gPiAgCQlzcHJjdGwgfD0gU1BSSVRFX1JPVEFURV8xODA7Cj4gPiAg Cj4gPiAgCQkvKiBIU1cgYW5kIEJEVyBkb2VzIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBoYXJkd2Fy ZSAqLwo+ID4gQEAgLTgxMyw2ICs4MTcsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVs X3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ICAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4g IAlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ID4gIAl1bnNpZ25lZCBsb25nIGR2c3N1 cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0Owo+ID4gQEAgLTg4NCw3ICs4ODksNyBAQCBpbGtfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ID4gIAlsaW5l YXJfb2Zmc2V0IC09IGR2c3N1cmZfb2Zmc2V0Owo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfcGxhbmUt PnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICsJaWYgKHN0YXRlLT5yb3Rh dGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gPiAgCQlkdnNjbnRyIHw9IERWU19ST1RB VEVfMTgwOwo+ID4gIAo+ID4gIAkJeCArPSBzcmNfdzsKPiA+IEBAIC0xMTI1LDcgKzExMzAsNyBA QCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAg CW1pbl9zY2FsZSA9IGludGVsX3BsYW5lLT5jYW5fc2NhbGUgPyAxIDogKDEgPDwgMTYpOwo+ID4g IAo+ID4gIAlkcm1fcmVjdF9yb3RhdGUoc3JjLCBmYi0+d2lkdGggPDwgMTYsIGZiLT5oZWlnaHQg PDwgMTYsCj4gPiAtCQkJaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKPiA+ICsJCQlzdGF0ZS0+cm90 YXRpb24pOwo+ID4gIAo+ID4gIAloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZV9yZWxheGVk KHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7Cj4gPiAgCUJVR19PTihoc2NhbGUgPCAw KTsKPiA+IEBAIC0xMTY2LDcgKzExNzEsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCQkJCSAgICAgZHJtX3JlY3RfaGVpZ2h0KGRzdCkg KiB2c2NhbGUgLSBkcm1fcmVjdF9oZWlnaHQoc3JjKSk7Cj4gPiAgCj4gPiAgCQlkcm1fcmVjdF9y b3RhdGVfaW52KHNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LAo+ID4gLQkJ CQkgICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKPiA+ICsJCQkJICAgIHN0YXRlLT5yb3RhdGlv bik7Cj4gPiAgCj4gPiAgCQkvKiBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzcmMgdmll d3BvcnQgd2Fzbid0IGVubGFyZ2VkICovCj4gPiAgCQlXQVJOX09OKHNyYy0+eDEgPCAoaW50KSBz dGF0ZS0+YmFzZS5zcmNfeCB8fAo+ID4gQEAgLTEzNjcsNyArMTM3Miw3IEBAIGludCBpbnRlbF9w bGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCQkJICAgICB1 aW50NjRfdCB2YWwpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUt PmRldjsKPiA+IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lKTsKPiA+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHRvX2lu dGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gPiAgCXVpbnQ2NF90IG9sZF92YWw7Cj4g PiAgCWludCByZXQgPSAtRU5PRU5UOwo+ID4gIAo+ID4gQEAgLTEzNzYsMTQgKzEzODEsMTQgQEAg aW50IGludGVsX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ ICAJCWlmIChod2VpZ2h0MzIodmFsICYgMHhmKSAhPSAxKQo+ID4gIAkJCXJldHVybiAtRUlOVkFM Owo+ID4gIAo+ID4gLQkJaWYgKGludGVsX3BsYW5lLT5yb3RhdGlvbiA9PSB2YWwpCj4gPiArCQlp ZiAoc3RhdGUtPnJvdGF0aW9uID09IHZhbCkKPiA+ICAJCQlyZXR1cm4gMDsKPiA+ICAKPiA+IC0J CW9sZF92YWwgPSBpbnRlbF9wbGFuZS0+cm90YXRpb247Cj4gPiAtCQlpbnRlbF9wbGFuZS0+cm90 YXRpb24gPSB2YWw7Cj4gPiArCQlvbGRfdmFsID0gc3RhdGUtPnJvdGF0aW9uOwo+ID4gKwkJc3Rh dGUtPnJvdGF0aW9uID0gdmFsOwo+ID4gIAkJcmV0ID0gaW50ZWxfcGxhbmVfcmVzdG9yZShwbGFu ZSk7Cj4gPiAgCQlpZiAocmV0KQo+ID4gLQkJCWludGVsX3BsYW5lLT5yb3RhdGlvbiA9IG9sZF92 YWw7Cj4gPiArCQkJc3RhdGUtPnJvdGF0aW9uID0gb2xkX3ZhbDsKPiA+ICAJfQo+ID4gIAo+ID4g IAlyZXR1cm4gcmV0Owo+ID4gQEAgLTE0NTcsNiArMTQ2Miw3IEBAIGludAo+ID4gIGludGVsX3Bs YW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFu ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4gPiArCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGU7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgcG9zc2li bGVfY3J0Y3M7Cj4gPiAgCWNvbnN0IHVpbnQzMl90ICpwbGFuZV9mb3JtYXRzOwo+ID4gIAlpbnQg bnVtX3BsYW5lX2Zvcm1hdHM7Cj4gPiBAQCAtMTQ3NSw2ICsxNDgxLDcgQEAgaW50ZWxfcGxhbmVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ ID4gIAkJa2ZyZWUoaW50ZWxfcGxhbmUpOwo+ID4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gPiAgCX0K PiA+ICsJc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShpbnRlbF9wbGFuZS0+YmFzZS5zdGF0 ZSk7Cj4gPiAgCj4gPiAgCXN3aXRjaCAoSU5URUxfSU5GTyhkZXYpLT5nZW4pIHsKPiA+ICAJY2Fz ZSA1Ogo+ID4gQEAgLTE1NDUsNyArMTU1Miw3IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPiA+ICAKPiA+ICAJaW50 ZWxfcGxhbmUtPnBpcGUgPSBwaXBlOwo+ID4gIAlpbnRlbF9wbGFuZS0+cGxhbmUgPSBwbGFuZTsK PiA+IC0JaW50ZWxfcGxhbmUtPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gPiArCXN0 YXRlLT5yb3RhdGlvbiA9IEJJVChEUk1fUk9UQVRFXzApOwo+ID4gIAlpbnRlbF9wbGFuZS0+Y2hl Y2tfcGxhbmUgPSBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmU7Cj4gPiAgCWludGVsX3BsYW5lLT5j b21taXRfcGxhbmUgPSBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5lOwo+ID4gIAlwb3NzaWJsZV9j cnRjcyA9ICgxIDw8IHBpcGUpOwo+ID4gQEAgLTE1NjcsNyArMTU3NCw3IEBAIGludGVsX3BsYW5l X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkK PiA+ICAJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPiAgCQlkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFzZSwKPiA+ICAJCQkJ CSAgIGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gPiAtCQkJCQkgICBpbnRl bF9wbGFuZS0+cm90YXRpb24pOwo+ID4gKwkJCQkJICAgc3RhdGUtPnJvdGF0aW9uKTsKPiA+ICAK PiA+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmludGVsX3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxh bmVfaGVscGVyX2Z1bmNzKTsKPiA+ICAKPiA+IC0tIAo+ID4gMS44LjUuMQo+ID4gCj4gPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+ IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAKTWF0 dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5n ICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK