From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 4/9] drm/i915: Make derived plane state correct after crtc_enable Date: Tue, 10 Mar 2015 19:57:13 +0200 Message-ID: <20150310175713.GJ11371@intel.com> References: <1425986129-15547-1-git-send-email-ville.syrjala@linux.intel.com> <1425986129-15547-5-git-send-email-ville.syrjala@linux.intel.com> <20150310170151.GH27526@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id EFE8189E41 for ; Tue, 10 Mar 2015 10:57:17 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150310170151.GH27526@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 T24gVHVlLCBNYXIgMTAsIDIwMTUgYXQgMTA6MDE6NTFBTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBUdWUsIE1hciAxMCwgMjAxNSBhdCAwMToxNToyNFBNICswMjAwLCB2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAKPiA+IFdlIG5lZWQgdG8gY2FsbCB0aGUg cGxhbmUgLmF0b21pY19jaGVjaygpIGhvb2sgd2hlbiBlbmFibGluZyB0aGUgY3J0Ywo+ID4gdG8g bWFrZSBzdXJlIGFsbCB0aGUgZGVyaXZlZCBzdGF0ZSAoZWcuIHZpc2libGUsIGNsaXBwZWQgc3Jj L2RzdAo+ID4gY29vcmRpbmF0ZXMpIGFyZSB1cCB0byBkYXRlIHdoZW4gd2UgZW5hYmxlIHRoZSBw bGFuZS4gVGhpcyBhbGxvd3MgdXMgdG8KPiA+IHRydXN0IHRoaXMgZGVyaXZlZCBzdGF0ZSBldmVy eXdoZXJlLgo+ID4gCj4gPiBXZSBhbHNvIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIHJld3JpdGUg dGhlIHBsYW5lIGVuYWJsZSBzZXF1ZW5jZSB0bwo+ID4gcGVyZm9ybSBpdCBhcyBhIHNpbmdsZSBh dG9taWMgdXBkYXRlLCB3aGljaCBpcyBhIGJpdCBjbG9zZXIgdG8gd2hlcmUgd2UKPiA+IHdhbnQg dG8gZW5kIHVwLiBPYnZpb3VzbHkgdGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgYXMgd2UgY2FuJ3Qg ZGVhbCB3aXRoCj4gPiBlcnJvcnMgZnJvbSAuYXRvbWljX2NoZWNrKCksIHNvIHdlIGp1c3QgcGFw ZXIgb3ZlciB0aGF0IGJ5IG1ha2luZyBzdXJlCj4gPiB2aXNpYmxlPWZhbHNlIHNvIHRoYXQgd2Ug ZG9uJ3QgdHJ5IHRvIGVuYWJsZSB0aGUgcGxhbmUgd2l0aCBwb3RlbnRpYWxseQo+ID4gZ2FyYmFn ZSBjb29yZGluYXRlcyBhbmQgd2hhdG5vdC4KPiA+IAo+ID4gV2UgYWxzbyBhYnVzZSB0aGUgYXRv bWljIGNvZGUgYSBiaXQgYnkgbm90IG1ha2luZyBhbm90aGVyIGNvcHkgb2YgdGhlCj4gPiBwbGFu ZSBzdGF0ZSBhbmQganVzdCBmcm9iYmluZyBkaXJlY3RseSB3aXRoIHRoZSBwbGFuZS0+c3RhdGUu Cj4gPiAKPiA+IENjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4g Q2M6IFNvbmlrYSBKaW5kYWwgPHNvbmlrYS5qaW5kYWxAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMyArCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMjIyICsrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRp b25zKCspLCAxMzcgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ID4gaW5kZXggNTQ2MmNiZi4uYjE2YzBhNyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiA+IEBAIC0yMzgsNiArMjM4LDkgQEAgZW51bSBocGRfcGluIHsKPiA+ICAjZGVmaW5lIGZv cl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSBcCj4gPiAgCWxpc3RfZm9yX2VhY2hf ZW50cnkoaW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBiYXNlLmhlYWQp Cj4gPiAgCj4gPiArI2RlZmluZSBmb3JfZWFjaF9pbnRlbF9wbGFuZShkZXYsIGludGVsX3BsYW5l KSBcCj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfcGxhbmUsICZkZXYtPm1vZGVfY29u ZmlnLnBsYW5lX2xpc3QsIGJhc2UuaGVhZCkKPiA+ICsKPiA+ICAjZGVmaW5lIGZvcl9lYWNoX2lu dGVsX2VuY29kZXIoZGV2LCBpbnRlbF9lbmNvZGVyKQkJXAo+ID4gIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGludGVsX2VuY29kZXIsCQkJXAo+ID4gIAkJCSAgICAmKGRldiktPm1vZGVfY29uZmlnLmVu Y29kZXJfbGlzdCwJXAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5k ZXggMGRhM2FiZi4uZmRjODNmMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiBAQCAtMjEyNCw2NiArMjEyNCw2IEBAIHZvaWQgaW50ZWxfZmx1c2hfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCVBPU1RJTkdf UkVBRChyZWcpOwo+ID4gIH0KPiA+ICAKPiA+IC0vKioKPiA+IC0gKiBpbnRlbF9lbmFibGVfcHJp bWFyeV9od19wbGFuZSAtIGVuYWJsZSB0aGUgcHJpbWFyeSBwbGFuZSBvbiBhIGdpdmVuIHBpcGUK PiA+IC0gKiBAcGxhbmU6ICBwbGFuZSB0byBiZSBlbmFibGVkCj4gPiAtICogQGNydGM6IGNydGMg Zm9yIHRoZSBwbGFuZQo+ID4gLSAqCj4gPiAtICogRW5hYmxlIEBwbGFuZSBvbiBAY3J0YywgbWFr aW5nIHN1cmUgdGhhdCB0aGUgcGlwZSBpcyBydW5uaW5nIGZpcnN0Lgo+ID4gLSAqLwo+ID4gLXN0 YXRpYyB2b2lkIGludGVsX2VuYWJsZV9wcmltYXJ5X2h3X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ID4gLQkJCQkJICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiAtewo+ID4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiA+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+IC0Jc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQo+ID4gLQkvKiBJ ZiB0aGUgcGlwZSBpc24ndCBlbmFibGVkLCB3ZSBjYW4ndCBwdW1wIHBpeGVscyBhbmQgbWF5IGhh bmcgKi8KPiA+IC0JYXNzZXJ0X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGlw ZSk7Cj4gPiAtCj4gPiAtCWlmIChpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpCj4gPiAtCQly ZXR1cm47Cj4gPiAtCj4gPiAtCWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCA9IHRydWU7Cj4g PiAtCj4gPiAtCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBs YW5lLT5mYiwKPiA+IC0JCQkJCSAgICAgICBjcnRjLT54LCBjcnRjLT55KTsKPiA+IC0KPiA+IC0J LyoKPiA+IC0JICogQkRXIHNpZ25hbHMgZmxpcCBkb25lIGltbWVkaWF0ZWx5IGlmIHRoZSBwbGFu ZQo+ID4gLQkgKiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxhbmUgZW5hYmxlIGlzIGFscmVh ZHkKPiA+IC0JICogYXJtZWQgdG8gb2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCj4gPiAtCSAq Lwo+ID4gLQlpZiAoSVNfQlJPQURXRUxMKGRldikpCj4gPiAtCQlpbnRlbF93YWl0X2Zvcl92Ymxh bmsoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiA+IC19Cj4gPiAtCj4gPiAtLyoqCj4gPiAtICog aW50ZWxfZGlzYWJsZV9wcmltYXJ5X2h3X3BsYW5lIC0gZGlzYWJsZSB0aGUgcHJpbWFyeSBoYXJk d2FyZSBwbGFuZQo+ID4gLSAqIEBwbGFuZTogcGxhbmUgdG8gYmUgZGlzYWJsZWQKPiA+IC0gKiBA Y3J0YzogY3J0YyBmb3IgdGhlIHBsYW5lCj4gPiAtICoKPiA+IC0gKiBEaXNhYmxlIEBwbGFuZSBv biBAY3J0YywgbWFraW5nIHN1cmUgdGhhdCB0aGUgcGlwZSBpcyBydW5uaW5nIGZpcnN0Lgo+ID4g LSAqLwo+ID4gLXN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcHJpbWFyeV9od19wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+IC0JCQkJCSAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiA+IC17Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ID4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g PiAtCj4gPiAtCWlmIChXQVJOX09OKCFpbnRlbF9jcnRjLT5hY3RpdmUpKQo+ID4gLQkJcmV0dXJu Owo+ID4gLQo+ID4gLQlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCkKPiA+IC0JCXJl dHVybjsKPiA+IC0KPiA+IC0JaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkID0gZmFsc2U7Cj4g PiAtCj4gPiAtCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBs YW5lLT5mYiwKPiA+IC0JCQkJCSAgICAgICBjcnRjLT54LCBjcnRjLT55KTsKPiA+IC19Cj4gPiAt Cj4gPiAgc3RhdGljIGJvb2wgbmVlZF92dGRfd2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ICB7Cj4gPiAgI2lmZGVmIENPTkZJR19JTlRFTF9JT01NVQo+ID4gQEAgLTI4OTUsNyArMjgzNSwx MCBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwgMCkpOwo+ID4g IH0KPiA+ICAKPiA+IC0vKiBBc3N1bWUgZmIgb2JqZWN0IGlzIHBpbm5lZCAmIGlkbGUgJiBmZW5j ZWQgYW5kIGp1c3QgdXBkYXRlIGJhc2UgcG9pbnRlcnMgKi8KPiA+ICsvKgo+ID4gKyAqIEFzc3Vt ZSBmYiBvYmplY3QgaXMgYmlnIGVub3VnaCAmIHBpbm5lZCAmIGlkbGUgJiBmZW5jZWQsCj4gPiAr ICogYW5kIGp1c3QgdXBkYXRlIGJhc2UgcG9pbnRlcnMKPiA+ICsgKi8KPiA+ICBzdGF0aWMgaW50 Cj4gPiAgaW50ZWxfcGlwZV9zZXRfYmFzZV9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ICAJCQkgICBpbnQgeCwgaW50IHksIGVudW0g bW9kZV9zZXRfYXRvbWljIHN0YXRlKQo+ID4gQEAgLTI5MDYsNiArMjg0OSw3IEBAIGludGVsX3Bp cGVfc2V0X2Jhc2VfYXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCj4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxlX2ZiYykKPiA+ ICAJCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfZmJjKGRldik7Cj4gPiAgCj4gPiArCXRvX2lu dGVsX2NydGMoY3J0YyktPnByaW1hcnlfZW5hYmxlZCA9IHRydWU7Cj4gPiAgCWRldl9wcml2LT5k aXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIGZiLCB4LCB5KTsKPiA+ICAKPiA+ICAJ cmV0dXJuIDA7Cj4gPiBAQCAtMjkzMywxNiArMjg3NywxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91 cGRhdGVfcHJpbWFyeV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+ICAKPiA+ ICAJCWRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBOVUxMKTsKPiA+IC0JCS8qCj4gPiAt CQkgKiBGSVhNRTogT25jZSB3ZSBoYXZlIHByb3BlciBzdXBwb3J0IGZvciBwcmltYXJ5IHBsYW5l cyAoYW5kCj4gPiAtCQkgKiBkaXNhYmxpbmcgdGhlbSB3aXRob3V0IGRpc2FibGluZyB0aGUgZW50 aXJlIGNydGMpIGFsbG93IGFnYWluCj4gPiAtCQkgKiBhIE5VTEwgY3J0Yy0+cHJpbWFyeS0+ZmIu Cj4gPiAtCQkgKi8KPiA+IC0JCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUgJiYgY3J0Yy0+cHJpbWFy eS0+ZmIpCj4gPiArCj4gPiArCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gPiArCQkJY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9Cj4gPiArCQkJCXRvX2ludGVsX3Bs YW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKPiA+ICsKPiA+ICAJCQlkZXZfcHJpdi0+ ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZShjcnRjLAo+ID4gLQkJCQkJCQkgICAgICAgY3J0 Yy0+cHJpbWFyeS0+ZmIsCj4gPiAtCQkJCQkJCSAgICAgICBjcnRjLT54LAo+ID4gLQkJCQkJCQkg ICAgICAgY3J0Yy0+eSk7Cj4gPiArCQkJCQkJCSAgICAgICBzdGF0ZS0+YmFzZS5mYiwKPiA+ICsJ CQkJCQkJICAgICAgIHN0YXRlLT5zcmMueDEgPj4gMTYsCj4gPiArCQkJCQkJCSAgICAgICBzdGF0 ZS0+c3JjLnkxID4+IDE2KTsKPiA+ICsJCX0KPiA+ICsKPiA+ICAJCWRybV9tb2Rlc2V0X3VubG9j aygmY3J0Yy0+bXV0ZXgpOwo+ID4gIAl9Cj4gPiAgfQo+ID4gQEAgLTQxODMsNTAgKzQxMjgsNzYg QEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZpdF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3Nw cml0ZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRl bF9jcnRjKGNydGMpLT5waXBlOwo+ID4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+IC0J c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiA+IC0KPiA+IC0JZHJtX2Zvcl9lYWNo X2xlZ2FjeV9wbGFuZShwbGFuZSwgJmRldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCkgewo+ID4g LQkJaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gPiAtCQlpZiAoaW50ZWxf cGxhbmUtPnBpcGUgPT0gcGlwZSkKPiA+IC0JCQlpbnRlbF9wbGFuZV9yZXN0b3JlKCZpbnRlbF9w bGFuZS0+YmFzZSk7Cj4gPiAtCX0KPiA+IC19Cj4gPiAtCj4gPiAgLyoKPiA+IC0gKiBEaXNhYmxl IGEgcGxhbmUgaW50ZXJuYWxseSB3aXRob3V0IGFjdHVhbGx5IG1vZGlmeWluZyB0aGUgcGxhbmUn cyBzdGF0ZS4KPiA+IC0gKiBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gZWFzaWx5IHJlc3RvcmUgdGhl IHBsYW5lIGxhdGVyIGJ5IGp1c3QgcmVwcm9ncmFtbWluZwo+ID4gLSAqIGl0cyBzdGF0ZS4KPiA+ ICsgKiBVZ2x5IGhhY2sgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgcGxhbmVzIGNvcnJlY3Rs eQo+ID4gICAqLwo+ID4gLXN0YXRpYyB2b2lkIGRpc2FibGVfcGxhbmVfaW50ZXJuYWwoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUpCj4gPiArc3RhdGljIHZvaWQgX2ludGVsX2NydGNfZW5hYmxlX3Bs YW5lcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gPiAtCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnN0YXRlID0KPiA+IC0JCXBsYW5lLT5mdW5jcy0+YXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZShwbGFuZSk7Cj4gPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxf c3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4gPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5w aXBlOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ID4gKwljb25zdCBzdHJ1Y3Qg ZHJtX2NydGNfaGVscGVyX2Z1bmNzICpjcnRjX2Z1bmNzID0KPiA+ICsJCWNydGMtPmJhc2UuaGVs cGVyX3ByaXZhdGU7Cj4gPiAgCj4gPiAtCWludGVsX3N0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4g PiAtCWludGVsX3BsYW5lLT5jb21taXRfcGxhbmUocGxhbmUsIGludGVsX3N0YXRlKTsKPiA+ICsJ Zm9yX2VhY2hfaW50ZWxfcGxhbmUoZGV2LCBwbGFuZSkgewo+ID4gKwkJY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzID0KPiA+ICsJCQlwbGFuZS0+YmFzZS5oZWxwZXJf cHJpdmF0ZTsKPiA+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPQo+ID4gKwkJ CXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiA+ICAKPiA+IC0JaW50 ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwo+ID4gKwkJaWYgKHBsYW5lLT5w aXBlICE9IHBpcGUpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQlpZiAoZnVuY3MtPmF0 b21pY19jaGVjaygmcGxhbmUtPmJhc2UsICZzdGF0ZS0+YmFzZSkpCj4gCj4gTWF5YmUgYWRkIGEg V0FSTl9PTigpIGhlcmU/ICBJJ20gYXNzdW1pbmcgdGhhdCB0aGlzIHNob3VsZG4ndCByZWFsbHkg YmUKPiBwb3NzaWJsZSBzaW5jZSBpZiB0aGlzIGZhaWxzIGl0IG1lYW5zIHdlJ3ZlIGFscmVhZHkg cHJldmlvdXNseSBkb25lIGEKPiBjb21taXQgb2YgaW52YWxpZCBzdGF0ZSBvbiBhIHByZXZpb3Vz IGF0b21pYyB0cmFuc2FjdGlvbi4gIEJ1dCBpZiBpdAo+IGRvZXMgc29tZWhvdyBoYXBwZW4sIHRo ZSBXQVJOIHdpbGwgZ2l2ZSB1cyBhIGNsdWUgd2h5IHRoZSBwbGFuZSBjb250ZW50cwo+IHNpbXBs eSBkaWRuJ3Qgc2hvdyB1cC4KCkkgY2FuIHRoaW5rIG9mIG9uZSB3YXkgdG8gbWFrZSBpdCBmYWls LiBUaGF0IGlzLCBmaXJzdCBzZXQgYSBzbWFsbGVyCm1vZGUgd2l0aCB0aGUgcHJpbWFyeSBwbGFu ZSAoYW5kIGZiKSBjb25maWd1cmVkIHRvIGNvdmVyIHRoYXQgZnVsbHksIGFuZAp0aGVuIHN3aXRj aCB0byBhIGxhcmdlciBtb2RlIHdpdGhvdXQgcmVjb25maWd1cmluZyB0aGUgcHJpbWFyeSBwbGFu ZS4gSWYKdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHRoZSBwcmltYXJ5IHBsYW5lIHRvIGJlIGZ1bGxz Y3JlZW4gaXQnbGwgZmFpbC4gQnV0CnRoYXQgc2hvdWxkIGFjdGF1bGx5IG5vdCBiZSBwb3NzaWJs ZSB1c2luZyB0aGUgbGVnYWN5IG1vZGVzZXQgQVBJIGFzIGl0CmFsd2F5cyByZWNvbmZpZ3VyZXMg dGhlIHByaW1hcnksIHNvIHdlJ2Qgb25seSBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoYXQKd2l0aCBm dWxsIGF0b21pYyBtb2Rlc2V0LCBhbmQgZm9yIHRoYXQgd2UgYW55d2F5IG5lZWQgdG8gY2hhbmdl IHRoZSBjb2RlCnRvIGRvIHRoZSBjaGVjayBzdHVmZiB1cCBmcm9udC4KClNvIHllYWgsIHdpdGgg dGhlIHdheSB0aGluZ3MgYXJlIHRoaXMgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZhaWwuIEknbGwK cmVzcGluIHdpdGggdGhlIFdBUk4uCgo+ID4gKwkJCXN0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4g PiArCX0KPiA+ICsKPiA+ICsJY3J0Y19mdW5jcy0+YXRvbWljX2JlZ2luKCZjcnRjLT5iYXNlKTsK PiA+ICsKPiA+ICsJZm9yX2VhY2hfaW50ZWxfcGxhbmUoZGV2LCBwbGFuZSkgewo+ID4gKwkJY29u c3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzID0KPiA+ICsJCQlwbGFuZS0+ YmFzZS5oZWxwZXJfcHJpdmF0ZTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZS0+cGlwZSAhPSBwaXBl KQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJZnVuY3MtPmF0b21pY191cGRhdGUoJnBs YW5lLT5iYXNlLCBwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJY3J0Y19m dW5jcy0+YXRvbWljX2ZsdXNoKCZjcnRjLT5iYXNlKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGlj IHZvaWQgaW50ZWxfZGlzYWJsZV9zcHJpdGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiA+ICtzdGF0aWMgdm9pZCBfaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiA+ IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmU7Cj4gPiAtCj4gPiAtCWRybV9mb3JfZWFjaF9sZWdhY3lfcGxhbmUocGxhbmUsICZk ZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QpIHsKPiA+IC0JCWludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOwo+ID4gLQkJaWYgKHBsYW5lLT5mYiAmJiBpbnRlbF9wbGFuZS0+cGlw ZSA9PSBwaXBlKQo+ID4gLQkJCWRpc2FibGVfcGxhbmVfaW50ZXJuYWwocGxhbmUpOwo+ID4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gPiArCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKPiA+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsKPiA+ICsJ Y29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqY3J0Y19mdW5jcyA9Cj4gPiArCQlj cnRjLT5iYXNlLmhlbHBlcl9wcml2YXRlOwo+ID4gKwo+ID4gKwlmb3JfZWFjaF9pbnRlbF9wbGFu ZShkZXYsIHBsYW5lKSB7Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0K PiA+ICsJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gPiArCj4g PiArCQlpZiAocGxhbmUtPnBpcGUgIT0gcGlwZSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ ICsJCXN0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4gPiAgCX0KPiAKPiBJJ20gbm90IHN1cGVyIGZh bWlsaWFyIHdpdGggdGhlIGN1cnJlbnQgbG9ja2luZyBzaXR1YXRpb24gb2Ygb3VyIGxlZ2FjeQo+ IG1vZGVzZXQgcGF0aHM7IGlzIGl0IHBvc3NpYmxlIGZvciB1cyB0byByYWNlIHRoaXMgd2l0aCBh bm90aGVyIHBsYW5lCj4gdXBkYXRlIG9yIGFyZSB3ZSBhbHJlYWR5IGhvbGRpbmcgbG9ja3MgZnJv bSBzb21ld2hlcmUgaGlnaGVyIGluIHRoZQo+IGNhbGxzdGFjaz8gIElmIGl0J3MgcG9zc2libGUg Zm9yIGFub3RoZXIgdGhyZWFkIHRvIHN3YXAgaW4gYSBuZXcKPiBwbGFuZS0+c3RhdGUgcmlnaHQg aGVyZSB0aGVuIHdlJ3JlIG5vdCByZWFsbHkgY29tbWl0dGluZyB3aGF0IHdlIHRob3VnaHQKPiB3 ZSB3ZXJlIChhbmQgcGxhbmUtPnN0YXRlLT52aXNpYmxlIG1heSBiZSB0cnVlKS4KCldlIHNob3Vs ZCBhbHJlYWR5IGJlIGhvbGRpbmcgYWxsIHRoZSBtb2Rlc2V0IGxvY2tzIGlmIHdlJ3JlIHRoaXMg ZGVlcAppbnRvIHRoZSBtb2Rlc2V0IGNvZGUuCgo+IAo+IAo+IE1hdHQKPiAKPiA+ICsKPiA+ICsJ Y3J0Y19mdW5jcy0+YXRvbWljX2JlZ2luKCZjcnRjLT5iYXNlKTsKPiA+ICsKPiA+ICsJZm9yX2Vh Y2hfaW50ZWxfcGxhbmUoZGV2LCBwbGFuZSkgewo+ID4gKwkJY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9oZWxwZXJfZnVuY3MgKmZ1bmNzID0KPiA+ICsJCQlwbGFuZS0+YmFzZS5oZWxwZXJfcHJpdmF0 ZTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZS0+cGlwZSAhPSBwaXBlKQo+ID4gKwkJCWNvbnRpbnVl Owo+ID4gKwo+ID4gKwkJZnVuY3MtPmF0b21pY191cGRhdGUoJnBsYW5lLT5iYXNlLCBwbGFuZS0+ YmFzZS5zdGF0ZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJY3J0Y19mdW5jcy0+YXRvbWljX2ZsdXNo KCZjcnRjLT5iYXNlKTsKPiA+ICB9Cj4gPiAgCj4gPiAgdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+IEBAIC00MzU4LDkgKzQzMjksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAg CWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICAKPiA+IC0JaW50ZWxfZW5hYmxlX3By aW1hcnlfaHdfcGxhbmUoY3J0Yy0+cHJpbWFyeSwgY3J0Yyk7Cj4gPiAtCWludGVsX2VuYWJsZV9z cHJpdGVfcGxhbmVzKGNydGMpOwo+ID4gLQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0Yywg dHJ1ZSk7Cj4gPiArCV9pbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoaW50ZWxfY3J0Yyk7Cj4gPiAg CWludGVsX2NydGNfZHBtc19vdmVybGF5KGludGVsX2NydGMsIHRydWUpOwo+ID4gIAo+ID4gIAlo c3dfZW5hYmxlX2lwcyhpbnRlbF9jcnRjKTsKPiA+IEBAIC00MzkyLDkgKzQzNjEsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiA+ICAJaHN3X2Rpc2FibGVfaXBzKGludGVsX2NydGMpOwo+ID4gIAo+ID4gIAlpbnRlbF9jcnRj X2RwbXNfb3ZlcmxheShpbnRlbF9jcnRjLCBmYWxzZSk7Cj4gPiAtCWludGVsX2NydGNfdXBkYXRl X2N1cnNvcihjcnRjLCBmYWxzZSk7Cj4gPiAtCWludGVsX2Rpc2FibGVfc3ByaXRlX3BsYW5lcyhj cnRjKTsKPiA+IC0JaW50ZWxfZGlzYWJsZV9wcmltYXJ5X2h3X3BsYW5lKGNydGMtPnByaW1hcnks IGNydGMpOwo+ID4gKwlfaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhpbnRlbF9jcnRjKTsKPiA+ ICAKPiA+ICAJLyoKPiA+ICAJICogRklYTUU6IE9uY2Ugd2UgZ3JvdyBwcm9wZXIgbnVjbGVhciBm bGlwIHN1cHBvcnQgb3V0IG9mIHRoaXMgd2UgbmVlZAo+ID4gQEAgLTExNzA4LDcgKzExNjc1LDYg QEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAq c2V0KQo+ID4gIAkJCQkJICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywKPiA+ICAJCQkJ CSAgIGRpc2FibGVfcGlwZXMpOwo+ID4gIAl9IGVsc2UgaWYgKGNvbmZpZy0+ZmJfY2hhbmdlZCkg ewo+ID4gLQkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHNl dC0+Y3J0Yyk7Cj4gPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gc2V0LT5jcnRjLT5w cmltYXJ5Owo+ID4gIAkJaW50IHZkaXNwbGF5LCBoZGlzcGxheTsKPiA+ICAKPiA+IEBAIC0xMTcx OSwxNSArMTE2ODUsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICpzZXQpCj4gPiAgCQkJCQkJICAgaGRpc3BsYXkgPDwgMTYsIHZkaXNwbGF5 IDw8IDE2KTsKPiA+ICAKPiA+ICAJCS8qCj4gPiAtCQkgKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0 aGUgcHJpbWFyeSBwbGFuZSBpcyByZS1lbmFibGVkIGlmIGl0Cj4gPiAtCQkgKiBoYXMgcHJldmlv dXNseSBiZWVuIHR1cm5lZCBvZmYuCj4gPiAtCQkgKi8KPiA+IC0JCWlmICghaW50ZWxfY3J0Yy0+ cHJpbWFyeV9lbmFibGVkICYmIHJldCA9PSAwKSB7Cj4gPiAtCQkJV0FSTl9PTighaW50ZWxfY3J0 Yy0+YWN0aXZlKTsKPiA+IC0JCQlpbnRlbF9lbmFibGVfcHJpbWFyeV9od19wbGFuZShzZXQtPmNy dGMtPnByaW1hcnksIHNldC0+Y3J0Yyk7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQkvKgo+ID4gIAkJ ICogSW4gdGhlIGZhc3Rib290IGNhc2UgdGhpcyBtYXkgYmUgb3VyIG9ubHkgY2hlY2sgb2YgdGhl Cj4gPiAgCQkgKiBzdGF0ZSBhZnRlciBib290LiAgSXQgd291bGQgYmUgYmV0dGVyIHRvIG9ubHkg ZG8gaXQgb24KPiA+ICAJCSAqIHRoZSBmaXJzdCB1cGRhdGUsIGJ1dCB3ZSBkb24ndCBoYXZlIGEg bmljZSB3YXkgb2YgZG9pbmcgdGhhdAo+ID4gQEAgLTEyMDU0LDI0ICsxMjAxMSwxNSBAQCBpbnRl bF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJaW50 ZWxfcGxhbmUtPm9iaiA9IG9iajsKPiA+ICAKPiA+ICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkg ewo+ID4gLQkJaWYgKHN0YXRlLT52aXNpYmxlKSB7Cj4gPiAtCQkJLyogRklYTUU6IGtpbGwgdGhp cyBmYXN0Ym9vdCBoYWNrICovCj4gPiArCQkvKiBGSVhNRToga2lsbCB0aGlzIGZhc3Rib290IGhh Y2sgKi8KPiA+ICsJCWlmIChzdGF0ZS0+dmlzaWJsZSkKPiA+ICAJCQlpbnRlbF91cGRhdGVfcGlw ZV9zaXplKGludGVsX2NydGMpOwo+ID4gIAo+ID4gLQkJCWludGVsX2NydGMtPnByaW1hcnlfZW5h YmxlZCA9IHRydWU7Cj4gPiAtCj4gPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1h cnlfcGxhbmUoY3J0YywgcGxhbmUtPmZiLAo+ID4gLQkJCQkJY3J0Yy0+eCwgY3J0Yy0+eSk7Cj4g PiAtCQl9IGVsc2Ugewo+ID4gLQkJCS8qCj4gPiAtCQkJICogSWYgY2xpcHBpbmcgcmVzdWx0cyBp biBhIG5vbi12aXNpYmxlIHByaW1hcnkgcGxhbmUsCj4gPiAtCQkJICogd2UnbGwgZGlzYWJsZSB0 aGUgcHJpbWFyeSBwbGFuZS4gIE5vdGUgdGhhdCB0aGlzIGlzCj4gPiAtCQkJICogYSBiaXQgZGlm ZmVyZW50IHRoYW4gd2hhdCBoYXBwZW5zIGlmIHVzZXJzcGFjZQo+ID4gLQkJCSAqIGV4cGxpY2l0 bHkgZGlzYWJsZXMgdGhlIHBsYW5lIGJ5IHBhc3NpbmcgZmI9MAo+ID4gLQkJCSAqIGJlY2F1c2Ug cGxhbmUtPmZiIHN0aWxsIGdldHMgc2V0IGFuZCBwaW5uZWQuCj4gPiAtCQkJICovCj4gPiAtCQkJ aW50ZWxfZGlzYWJsZV9wcmltYXJ5X2h3X3BsYW5lKHBsYW5lLCBjcnRjKTsKPiA+IC0JCX0KPiA+ ICsJCWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCA9IHN0YXRlLT52aXNpYmxlOwo+ID4gKwkJ ZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0YywKPiA+ICsJCQkJCQkg ICAgICAgc3RhdGUtPmJhc2UuZmIsCj4gPiArCQkJCQkJICAgICAgIHN0YXRlLT5zcmMueDEgPj4g MTYsCj4gPiArCQkJCQkJICAgICAgIHN0YXRlLT5zcmMueTEgPj4gMTYpOwo+ID4gIAl9Cj4gPiAg fQo+ID4gIAo+ID4gLS0gCj4gPiAyLjAuNQo+ID4gCj4gCj4gLS0gCj4gTWF0dCBSb3Blcgo+IEdy YXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCj4gSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVs b3BtZW50Cj4gSW50ZWwgQ29ycG9yYXRpb24KPiAoOTE2KSAzNTYtMjc5NQoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK