From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/6] drm/i915: Move rotation from intel_plane to intel_plane_state Date: Tue, 20 Jan 2015 10:44:06 +0100 Message-ID: <20150120094406.GL10113@phenom.ffwll.local> References: <1421375664-30550-1-git-send-email-matthew.d.roper@intel.com> <1421375664-30550-2-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f178.google.com (mail-we0-f178.google.com [74.125.82.178]) by gabe.freedesktop.org (Postfix) with ESMTP id 161756E60E for ; Tue, 20 Jan 2015 01:44:11 -0800 (PST) Received: by mail-we0-f178.google.com with SMTP id p10so35935950wes.9 for ; Tue, 20 Jan 2015 01:44:10 -0800 (PST) Content-Disposition: inline In-Reply-To: <1421375664-30550-2-git-send-email-matthew.d.roper@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 T24gVGh1LCBKYW4gMTUsIDIwMTUgYXQgMDY6MzQ6MTlQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBSdW50aW1lIHN0YXRlIHRoYXQgY2FuIGJlIG1hbmlwdWxhdGVkIHZpYSBwcm9wZXJ0aWVz IHNob3VsZCBub3cgZ28gaW4KPiBpbnRlbF9wbGFuZV9zdGF0ZSBpbnN0ZWFkIHNvIHRoYXQgaXQg Y2FuIGJlIHRyYWNrZWQgYXMgcGFydCBvZiBhbiBhdG9taWMKPiB0cmFuc2FjdGlvbi4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgoKSW1v IHdlIHNob3VsZCBtb3ZlIHRoaXMgdG8gZHJtX3BsYW5lX3N0YXRlIHNvIHRoYXQgZmIgaGVscGVy cyBvciBhbmQgdGhlCmRybSBhdG9taWMgaW9jdGwgY291bGQgZG8gdGhlIGRlY29kaW5nIGluIHNo YXJlZCBjb2RlIGluc3RlYWQgb2YKZHVwbGljYXRpbmcgdGhpbmdzIGFsbCBvdmVyLiBCdXQgd2Ug cHJvYmFibHkgd2FudCB0byBkbyB0aGF0IG9uY2UgdGhlIGk5MTUKY29udmVyc2lvbiAoYXQgbGVh c3Qgb24gdGhlIHBsYW5lIHNpZGUpIGhhcyBzZXR0bGVkIGEgYml0LgotRGFuaWVsCgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAzNiArKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgMTAgKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMu YyAgICAgfCAgNCArKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8 IDMzICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCBiNmM0NjY3Li44NGIwYjRkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yNDM1LDYgKzI0MzUsOCBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgewo+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlID0KPiArCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmlt YXJ5LT5zdGF0ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJaW50 IHBsYW5lID0gaW50ZWxfY3J0Yy0+cGxhbmU7Cj4gQEAgLTI1MzIsNyArMjUzNCw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNldDsKPiAgCX0KPiAg Cj4gLQlpZiAodG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSktPnJvdGF0aW9uID09IEJJVChE Uk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChzdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RB VEVfMTgwKSkgewo+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4gIAo+ICAJ CXggKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+IEBAIC0yNTY4LDYg KzI1NzAsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPQo+ICsJCXRvX2ludGVsX3Bs YW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7Cj4gIAlpbnQgcGxhbmUgPSBpbnRlbF9jcnRjLT5wbGFuZTsKPiAgCXVuc2ln bmVkIGxvbmcgbGluZWFyX29mZnNldDsKPiBAQCAtMjYzNCw3ICsyNjM4LDcgQEAgc3RhdGljIHZv aWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJCQkJCSAgICAgICBwaXhlbF9zaXplLAo+ICAJCQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7 Cj4gIAlsaW5lYXJfb2Zmc2V0IC09IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0Owo+IC0JaWYg KHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFU RV8xODApKSB7Cj4gKwlpZiAoc3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkp IHsKPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV9ST1RBVEVfMTgwOwo+ICAKPiAgCQlpZiAoIUlT X0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKPiBAQCAtMjY3Myw2ICsyNjc3 LDggQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPQo+ICsJCXRvX2ludGVsX3BsYW5lX3N0 YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAq aW50ZWxfZmI7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJaW50IHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IEBAIC0yNzMxLDcgKzI3MzcsNyBAQCBzdGF0aWMgdm9p ZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CX0KPiAgCj4gIAlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4g LQlpZiAodG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSktPnJvdGF0aW9uID09IEJJVChEUk1f Uk9UQVRFXzE4MCkpCj4gKwlpZiAoc3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4 MCkpCj4gIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+ICAKPiAgCUk5MTVf V1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwo+IEBAIC04MjE2LDYgKzgyMjIs OCBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRj LCB1MzIgYmFzZSkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9Cj4gKwkJdG9faW50ZWxfcGxhbmVfc3Rh dGUoY3J0Yy0+Y3Vyc29yLT5zdGF0ZSk7Cj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Cj4gIAl1aW50MzJfdCBjbnRsOwo+ICAKPiBAQCAtODI0Miw3ICs4MjUwLDcgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UpCj4g IAkJCWNudGwgfD0gQ1VSU09SX1BJUEVfQ1NDX0VOQUJMRTsKPiAgCX0KPiAgCj4gLQlpZiAodG9f aW50ZWxfcGxhbmUoY3J0Yy0+Y3Vyc29yKS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgw KSkKPiArCWlmIChzdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiAgCQlj bnRsIHw9IENVUlNPUl9ST1RBVEVfMTgwOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jdXJzb3Jf Y250bCAhPSBjbnRsKSB7Cj4gQEAgLTgyNjUsNiArODI3Myw4IEBAIHN0YXRpYyB2b2lkIGludGVs X2NydGNfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq c3RhdGUgPQo+ICsJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPmN1cnNvci0+c3RhdGUpOwo+ ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJaW50IHggPSBjcnRjLT5jdXJzb3Jf eDsKPiAgCWludCB5ID0gY3J0Yy0+Y3Vyc29yX3k7Cj4gQEAgLTgzMDMsOCArODMxMyw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2NydGNfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAlJOTE1X1dSSVRFKENVUlBPUyhwaXBlKSwgcG9zKTsKPiAgCj4gIAkvKiBJTEsrIGRvIHRo aXMgYXV0b21hZ2ljYWxseSAqLwo+IC0JaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSAmJgo+IC0J CXRvX2ludGVsX3BsYW5lKGNydGMtPmN1cnNvciktPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpIHsKPiArCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikgJiYgc3RhdGUtPnJvdGF0aW9u ID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiAgCQliYXNlICs9IChpbnRlbF9jcnRjLT5jdXJz b3JfaGVpZ2h0ICoKPiAgCQkJaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoIC0gMSkgKiA0Owo+ICAJ fQo+IEBAIC0xMTc1Niw3ICsxMTc2NSw2IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUt PmJhc2UuY3J0YzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gIAlzdHJ1Y3QgZHJt X3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0 YXRlLT5zcmM7Cj4gQEAgLTExNzkwLDcgKzExNzk4LDcgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQlpZiAoaW50ZWxfY3J0Yy0+cHJpbWFy eV9lbmFibGVkICYmCj4gIAkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0 WChkZXYpICYmCj4gIAkJICAgIGRldl9wcml2LT5mYmMucGxhbmUgPT0gaW50ZWxfY3J0Yy0+cGxh bmUgJiYKPiAtCQkgICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9uICE9IEJJVChEUk1fUk9UQVRFXzAp KSB7Cj4gKwkJICAgIHN0YXRlLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewo+ICAJ CQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOwo+ICAJCX0KPiAgCj4gQEAg LTExOTc1LDYgKzExOTgzLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJCSAgICBpbnQg cGlwZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwcmltYXJ5Owo+ICsJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpzdGF0ZTsKPiAgCWNvbnN0IHVpbnQzMl90ICppbnRlbF9wcmltYXJ5 X2Zvcm1hdHM7Cj4gIAlpbnQgbnVtX2Zvcm1hdHM7Cj4gIAo+IEBAIC0xMTk4NywxMiArMTE5OTYs MTMgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJa2ZyZWUocHJpbWFyeSk7Cj4gIAkJcmV0dXJu IE5VTEw7Cj4gIAl9Cj4gKwlzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnktPmJh c2Uuc3RhdGUpOwo+ICAKPiAgCXByaW1hcnktPmNhbl9zY2FsZSA9IGZhbHNlOwo+ICAJcHJpbWFy eS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gIAlwcmltYXJ5LT5waXBlID0gcGlwZTsKPiAgCXByaW1h cnktPnBsYW5lID0gcGlwZTsKPiAtCXByaW1hcnktPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVf MCk7Cj4gKwlzdGF0ZS0+cm90YXRpb24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPiAgCXByaW1hcnkt PmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZTsKPiAgCXByaW1hcnktPmNv bW1pdF9wbGFuZSA9IGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lOwo+ICAJaWYgKEhBU19GQkMo ZGV2KSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCj4gQEAgLTEyMDIwLDcgKzEyMDMwLDcg QEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25f cHJvcGVydHkpCj4gIAkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNl LmJhc2UsCj4gIAkJCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+IC0JCQkJ cHJpbWFyeS0+cm90YXRpb24pOwo+ICsJCQkJc3RhdGUtPnJvdGF0aW9uKTsKPiAgCX0KPiAgCj4g IAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmcHJpbWFyeS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBl cl9mdW5jcyk7Cj4gQEAgLTEyMTQ4LDYgKzEyMTU4LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxh bmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CQkJCQkJICAgaW50IHBpcGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqY3Vyc29yOwo+ ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZTsKPiAgCj4gIAljdXJzb3IgPSBremFs bG9jKHNpemVvZigqY3Vyc29yKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoY3Vyc29yID09IE5VTEwp Cj4gQEAgLTEyMTU4LDEyICsxMjE2OSwxMyBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50 ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWtmcmVl KGN1cnNvcik7Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAl9Cj4gKwlzdGF0ZSA9IHRvX2ludGVsX3Bs YW5lX3N0YXRlKGN1cnNvci0+YmFzZS5zdGF0ZSk7Cj4gIAo+ICAJY3Vyc29yLT5jYW5fc2NhbGUg PSBmYWxzZTsKPiAgCWN1cnNvci0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gIAljdXJzb3ItPnBpcGUg PSBwaXBlOwo+ICAJY3Vyc29yLT5wbGFuZSA9IHBpcGU7Cj4gLQljdXJzb3ItPnJvdGF0aW9uID0g QklUKERSTV9ST1RBVEVfMCk7Cj4gKwlzdGF0ZS0+cm90YXRpb24gPSBCSVQoRFJNX1JPVEFURV8w KTsKPiAgCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmU7Cj4g IAljdXJzb3ItPmNvbW1pdF9wbGFuZSA9IGludGVsX2NvbW1pdF9jdXJzb3JfcGxhbmU7Cj4gIAo+ IEBAIC0xMjE4Miw3ICsxMjE5NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9j dXJzb3JfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKGRldi0+ bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gIAkJCWRybV9vYmplY3RfYXR0YWNoX3By b3BlcnR5KCZjdXJzb3ItPmJhc2UuYmFzZSwKPiAgCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRp b25fcHJvcGVydHksCj4gLQkJCQljdXJzb3ItPnJvdGF0aW9uKTsKPiArCQkJCXN0YXRlLT5yb3Rh dGlvbik7Cj4gIAl9Cj4gIAo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmN1cnNvci0+YmFzZSwg JmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBp bmRleCBjOGMwYjdmLi45MThjY2UyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBA QCAtMjUwLDYgKzI1MCw5IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gIAlzdHJ1Y3Qg ZHJtX3JlY3QgY2xpcDsKPiAgCWJvb2wgdmlzaWJsZTsKPiAgCj4gKwkvKiBJbnRlbC1zcGVjaWZp YyBwbGFuZSBwcm9wZXJ0aWVzICovCj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb247Cj4gKwo+ICAJ LyoKPiAgCSAqIHVzZWQgb25seSBmb3Igc3ByaXRlIHBsYW5lcyB0byBkZXRlcm1pbmUgd2hlbiB0 byBpbXBsaWNpdGx5Cj4gIAkgKiBlbmFibGUvZGlzYWJsZSB0aGUgcHJpbWFyeSBwbGFuZQo+IEBA IC01MDksNyArNTEyLDYgQEAgc3RydWN0IGludGVsX3BsYW5lIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4gIAlib29sIGNhbl9zY2FsZTsKPiAgCWludCBtYXhfZG93bnNj YWxlOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+ICAKPiAgCS8qIFNpbmNlIHdlIG5lZWQg dG8gY2hhbmdlIHRoZSB3YXRlcm1hcmtzIGJlZm9yZS9hZnRlcgo+ICAJICogZW5hYmxpbmcvZGlz YWJsaW5nIHRoZSBwbGFuZXMsIHdlIG5lZWQgdG8gc3RvcmUgdGhlIHBhcmFtZXRlcnMgaGVyZQo+ IEBAIC01MTgsNiArNTIwLDEyIEBAIHN0cnVjdCBpbnRlbF9wbGFuZSB7Cj4gIAkgKi8KPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0ZXJzIHdtOwo+ICAKPiArCS8qCj4gKwkgKiBOT1RF OiBEbyBub3QgcGxhY2UgbmV3IHBsYW5lIHN0YXRlIGZpZWxkcyBoZXJlIChlLmcuLCB3aGVuIGFk ZGluZwo+ICsJICogbmV3IHBsYW5lIHByb3BlcnRpZXMpLiAgTmV3IHJ1bnRpbWUgc3RhdGUgc2hv dWxkIG5vdyBiZSBwbGFjZWQgaW4KPiArCSAqIHRoZSBpbnRlbF9wbGFuZV9zdGF0ZSBzdHJ1Y3R1 cmUgYW5kIGFjY2Vzc2VkIHZpYSBkcm1fcGxhbmUtPnN0YXRlLgo+ICsJICovCj4gKwo+ICAJdm9p ZCAoKnVwZGF0ZV9wbGFuZSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgICAgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gaW5kZXggNWIxZDdjNC4uM2U4NzQ1NCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTQ5Niw2ICs0OTYsNyBAQCB2b2lkIGlu dGVsX2ZiY191cGRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBOVUxMLCAqdG1wX2NydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YzsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpbWFyeV9zdGF0ZTsKPiAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlOwo+ IEBAIC01NDAsNiArNTQxLDcgQEAgdm9pZCBpbnRlbF9mYmNfdXBkYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAl9Cj4gIAo+ICAJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gKwlwcmltYXJ5X3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+cHJpbWFyeS0+ c3RhdGUpOwo+ICAJZmIgPSBjcnRjLT5wcmltYXJ5LT5mYjsKPiAgCW9iaiA9IGludGVsX2ZiX29i aihmYik7Cj4gIAlhZGp1c3RlZF9tb2RlID0gJmludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlOwo+IEBAIC01OTUsNyArNTk3LDcgQEAgdm9pZCBpbnRlbF9mYmNfdXBkYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZ290byBvdXRfZGlzYWJsZTsKPiAgCX0KPiAgCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+IC0JICAgIHRv X2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8w KSkgewo+ICsJICAgIHByaW1hcnlfc3RhdGUtPnJvdGF0aW9uICE9IEJJVChEUk1fUk9UQVRFXzAp KSB7Cj4gIAkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfVU5TVVBQT1JURURf TU9ERSkpCj4gIAkJCURSTV9ERUJVR19LTVMoIlJvdGF0aW9uIHVuc3VwcG9ydGVkLCBkaXNhYmxp bmdcbiIpOwo+ICAJCWdvdG8gb3V0X2Rpc2FibGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBpbmRleCAwYTYwOTRlLi4xNDBjNWI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiBAQCAtMTg3LDYgKzE4Nyw4IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZHJtX3BsYW5lLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKGRybV9wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0KPiArCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxh bmUtPnN0YXRlKTsKPiAgCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gIAlj b25zdCBpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+ICAJdTMyIHBsYW5lX2N0 bCwgc3RyaWRlOwo+IEBAIC0yNTYsNyArMjU4LDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCWRlZmF1bHQ6 Cj4gIAkJQlVHKCk7Cj4gIAl9Cj4gLQlpZiAoaW50ZWxfcGxhbmUtPnJvdGF0aW9uID09IEJJVChE Uk1fUk9UQVRFXzE4MCkpCj4gKwlpZiAoc3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpCj4gIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+ICAKPiAgCXBs YW5lX2N0bCB8PSBQTEFORV9DVExfRU5BQkxFOwo+IEBAIC00MDcsNiArNDA5LDcgQEAgdmx2X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcGxhbmUtPmRldjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUoZHBsYW5lKTsKPiArCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShkcGxh bmUtPnN0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiAgCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gIAlpbnQgcGxh bmUgPSBpbnRlbF9wbGFuZS0+cGxhbmU7Cj4gQEAgLTQ5Myw3ICs0OTYsNyBAQCB2bHZfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJCQkJCQkJZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBzcHJzdXJmX29m ZnNldDsKPiAgCj4gLQlpZiAoaW50ZWxfcGxhbmUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpIHsKPiArCWlmIChzdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkg ewo+ICAJCXNwcmN0bCB8PSBTUF9ST1RBVEVfMTgwOwo+ICAKPiAgCQl4ICs9IHNyY193Owo+IEBA IC02MDgsNiArNjExLDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBs YW5lLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPSB0b19p bnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFu ZS0+cGlwZTsKPiAgCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKPiBAQCAtNjg0LDcgKzY4OCw3 IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ ICAJbGluZWFyX29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4gLQlpZiAoaW50ZWxfcGxh bmUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChzdGF0ZS0+cm90 YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ICAJCXNwcmN0bCB8PSBTUFJJVEVfUk9U QVRFXzE4MDsKPiAgCj4gIAkJLyogSFNXIGFuZCBCRFcgZG9lcyB0aGlzIGF1dG9tYWdpY2FsbHkg aW4gaGFyZHdhcmUgKi8KPiBAQCAtODEzLDYgKzgxNyw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWlu dCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gIAl1bnNpZ25lZCBsb25nIGR2c3N1cmZfb2Zm c2V0LCBsaW5lYXJfb2Zmc2V0Owo+IEBAIC04ODQsNyArODg5LDcgQEAgaWxrX3VwZGF0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJ CSAgICAgICBwaXhlbF9zaXplLCBmYi0+cGl0Y2hlc1swXSk7Cj4gIAlsaW5lYXJfb2Zmc2V0IC09 IGR2c3N1cmZfb2Zmc2V0Owo+ICAKPiAtCWlmIChpbnRlbF9wbGFuZS0+cm90YXRpb24gPT0gQklU KERSTV9ST1RBVEVfMTgwKSkgewo+ICsJaWYgKHN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JP VEFURV8xODApKSB7Cj4gIAkJZHZzY250ciB8PSBEVlNfUk9UQVRFXzE4MDsKPiAgCj4gIAkJeCAr PSBzcmNfdzsKPiBAQCAtMTEyNSw3ICsxMTMwLDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJbWluX3NjYWxlID0gaW50ZWxfcGxhbmUtPmNh bl9zY2FsZSA/IDEgOiAoMSA8PCAxNik7Cj4gIAo+ICAJZHJtX3JlY3Rfcm90YXRlKHNyYywgZmIt PndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LAo+IC0JCQlpbnRlbF9wbGFuZS0+cm90YXRp b24pOwo+ICsJCQlzdGF0ZS0+cm90YXRpb24pOwo+ICAKPiAgCWhzY2FsZSA9IGRybV9yZWN0X2Nh bGNfaHNjYWxlX3JlbGF4ZWQoc3JjLCBkc3QsIG1pbl9zY2FsZSwgbWF4X3NjYWxlKTsKPiAgCUJV R19PTihoc2NhbGUgPCAwKTsKPiBAQCAtMTE2Niw3ICsxMTcxLDcgQEAgaW50ZWxfY2hlY2tfc3By aXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJICAgICBkcm1fcmVjdF9o ZWlnaHQoZHN0KSAqIHZzY2FsZSAtIGRybV9yZWN0X2hlaWdodChzcmMpKTsKPiAgCj4gIAkJZHJt X3JlY3Rfcm90YXRlX2ludihzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhlaWdodCA8PCAxNiwK PiAtCQkJCSAgICBpbnRlbF9wbGFuZS0+cm90YXRpb24pOwo+ICsJCQkJICAgIHN0YXRlLT5yb3Rh dGlvbik7Cj4gIAo+ICAJCS8qIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHNyYyB2aWV3 cG9ydCB3YXNuJ3QgZW5sYXJnZWQgKi8KPiAgCQlXQVJOX09OKHNyYy0+eDEgPCAoaW50KSBzdGF0 ZS0+YmFzZS5zcmNfeCB8fAo+IEBAIC0xMzY3LDcgKzEzNzIsNyBAQCBpbnQgaW50ZWxfcGxhbmVf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgICAgIHVpbnQ2NF90 IHZhbCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRl KHBsYW5lLT5zdGF0ZSk7Cj4gIAl1aW50NjRfdCBvbGRfdmFsOwo+ICAJaW50IHJldCA9IC1FTk9F TlQ7Cj4gIAo+IEBAIC0xMzc2LDE0ICsxMzgxLDE0IEBAIGludCBpbnRlbF9wbGFuZV9zZXRfcHJv cGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJaWYgKGh3ZWlnaHQzMih2YWwgJiAw eGYpICE9IDEpCj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCQlpZiAoaW50ZWxfcGxhbmUt PnJvdGF0aW9uID09IHZhbCkKPiArCQlpZiAoc3RhdGUtPnJvdGF0aW9uID09IHZhbCkKPiAgCQkJ cmV0dXJuIDA7Cj4gIAo+IC0JCW9sZF92YWwgPSBpbnRlbF9wbGFuZS0+cm90YXRpb247Cj4gLQkJ aW50ZWxfcGxhbmUtPnJvdGF0aW9uID0gdmFsOwo+ICsJCW9sZF92YWwgPSBzdGF0ZS0+cm90YXRp b247Cj4gKwkJc3RhdGUtPnJvdGF0aW9uID0gdmFsOwo+ICAJCXJldCA9IGludGVsX3BsYW5lX3Jl c3RvcmUocGxhbmUpOwo+ICAJCWlmIChyZXQpCj4gLQkJCWludGVsX3BsYW5lLT5yb3RhdGlvbiA9 IG9sZF92YWw7Cj4gKwkJCXN0YXRlLT5yb3RhdGlvbiA9IG9sZF92YWw7Cj4gIAl9Cj4gIAo+ICAJ cmV0dXJuIHJldDsKPiBAQCAtMTQ1Nyw2ICsxNDYyLDcgQEAgaW50Cj4gIGludGVsX3BsYW5lX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPiAg ewo+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiArCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3RhdGU7Cj4gIAl1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzOwo+ICAJ Y29uc3QgdWludDMyX3QgKnBsYW5lX2Zvcm1hdHM7Cj4gIAlpbnQgbnVtX3BsYW5lX2Zvcm1hdHM7 Cj4gQEAgLTE0NzUsNiArMTQ4MSw3IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPiAgCQlrZnJlZShpbnRlbF9wbGFu ZSk7Cj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAl9Cj4gKwlzdGF0ZSA9IHRvX2ludGVsX3BsYW5l X3N0YXRlKGludGVsX3BsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCj4gIAlzd2l0Y2ggKElOVEVMX0lO Rk8oZGV2KS0+Z2VuKSB7Cj4gIAljYXNlIDU6Cj4gQEAgLTE1NDUsNyArMTU1Miw3IEBAIGludGVs X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBw bGFuZSkKPiAgCj4gIAlpbnRlbF9wbGFuZS0+cGlwZSA9IHBpcGU7Cj4gIAlpbnRlbF9wbGFuZS0+ cGxhbmUgPSBwbGFuZTsKPiAtCWludGVsX3BsYW5lLT5yb3RhdGlvbiA9IEJJVChEUk1fUk9UQVRF XzApOwo+ICsJc3RhdGUtPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gIAlpbnRlbF9w bGFuZS0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmU7Cj4gIAlpbnRlbF9w bGFuZS0+Y29tbWl0X3BsYW5lID0gaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZTsKPiAgCXBvc3Np YmxlX2NydGNzID0gKDEgPDwgcGlwZSk7Cj4gQEAgLTE1NjcsNyArMTU3NCw3IEBAIGludGVsX3Bs YW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFu ZSkKPiAgCWlmIChkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ICAJCWRybV9v YmplY3RfYXR0YWNoX3Byb3BlcnR5KCZpbnRlbF9wbGFuZS0+YmFzZS5iYXNlLAo+ICAJCQkJCSAg IGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gLQkJCQkJICAgaW50ZWxfcGxh bmUtPnJvdGF0aW9uKTsKPiArCQkJCQkgICBzdGF0ZS0+cm90YXRpb24pOwo+ICAKPiAgCWRybV9w bGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9wbGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9m dW5jcyk7Cj4gIAo+IC0tIAo+IDEuOC41LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK