From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 4/9] drm/i915: Make derived plane state correct after crtc_enable Date: Tue, 10 Mar 2015 10:01:51 -0700 Message-ID: <20150310170151.GH27526@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id A4D5A6E71D for ; Tue, 10 Mar 2015 10:02:30 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1425986129-15547-5-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMTAsIDIwMTUgYXQgMDE6MTU6MjRQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBXZSBuZWVkIHRvIGNhbGwgdGhlIHBsYW5lIC5hdG9t aWNfY2hlY2soKSBob29rIHdoZW4gZW5hYmxpbmcgdGhlIGNydGMKPiB0byBtYWtlIHN1cmUgYWxs IHRoZSBkZXJpdmVkIHN0YXRlIChlZy4gdmlzaWJsZSwgY2xpcHBlZCBzcmMvZHN0Cj4gY29vcmRp bmF0ZXMpIGFyZSB1cCB0byBkYXRlIHdoZW4gd2UgZW5hYmxlIHRoZSBwbGFuZS4gVGhpcyBhbGxv d3MgdXMgdG8KPiB0cnVzdCB0aGlzIGRlcml2ZWQgc3RhdGUgZXZlcnl3aGVyZS4KPiAKPiBXZSBh bHNvIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIHJld3JpdGUgdGhlIHBsYW5lIGVuYWJsZSBzZXF1 ZW5jZSB0bwo+IHBlcmZvcm0gaXQgYXMgYSBzaW5nbGUgYXRvbWljIHVwZGF0ZSwgd2hpY2ggaXMg YSBiaXQgY2xvc2VyIHRvIHdoZXJlIHdlCj4gd2FudCB0byBlbmQgdXAuIE9idmlvdXNseSB0aGlz IGlzIGEgYml0IG9mIGEgaGFjayBhcyB3ZSBjYW4ndCBkZWFsIHdpdGgKPiBlcnJvcnMgZnJvbSAu YXRvbWljX2NoZWNrKCksIHNvIHdlIGp1c3QgcGFwZXIgb3ZlciB0aGF0IGJ5IG1ha2luZyBzdXJl Cj4gdmlzaWJsZT1mYWxzZSBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byBlbmFibGUgdGhlIHBsYW5l IHdpdGggcG90ZW50aWFsbHkKPiBnYXJiYWdlIGNvb3JkaW5hdGVzIGFuZCB3aGF0bm90Lgo+IAo+ IFdlIGFsc28gYWJ1c2UgdGhlIGF0b21pYyBjb2RlIGEgYml0IGJ5IG5vdCBtYWtpbmcgYW5vdGhl ciBjb3B5IG9mIHRoZQo+IHBsYW5lIHN0YXRlIGFuZCBqdXN0IGZyb2JiaW5nIGRpcmVjdGx5IHdp dGggdGhlIHBsYW5lLT5zdGF0ZS4KPiAKPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVy QGludGVsLmNvbT4KPiBDYzogU29uaWthIEppbmRhbCA8c29uaWthLmppbmRhbEBpbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwg ICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMjIyICsrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgODggaW5z ZXJ0aW9ucygrKSwgMTM3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IDU0NjJjYmYuLmIxNmMwYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtMjM4LDYgKzIzOCw5IEBAIGVudW0gaHBkX3BpbiB7Cj4gICNkZWZpbmUgZm9yX2VhY2hfaW50 ZWxfY3J0YyhkZXYsIGludGVsX2NydGMpIFwKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxf Y3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBiYXNlLmhlYWQpCj4gIAo+ICsjZGVm aW5lIGZvcl9lYWNoX2ludGVsX3BsYW5lKGRldiwgaW50ZWxfcGxhbmUpIFwKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoaW50ZWxfcGxhbmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGJh c2UuaGVhZCkKPiArCj4gICNkZWZpbmUgZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGludGVs X2VuY29kZXIpCQlcCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2VuY29kZXIsCQkJXAo+ ICAJCQkgICAgJihkZXYpLT5tb2RlX2NvbmZpZy5lbmNvZGVyX2xpc3QsCVwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMGRhM2FiZi4uZmRjODNmMSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjEyNCw2NiArMjEyNCw2IEBAIHZv aWQgaW50ZWxfZmx1c2hfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAlQT1NUSU5HX1JFQUQocmVnKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIGludGVs X2VuYWJsZV9wcmltYXJ5X2h3X3BsYW5lIC0gZW5hYmxlIHRoZSBwcmltYXJ5IHBsYW5lIG9uIGEg Z2l2ZW4gcGlwZQo+IC0gKiBAcGxhbmU6ICBwbGFuZSB0byBiZSBlbmFibGVkCj4gLSAqIEBjcnRj OiBjcnRjIGZvciB0aGUgcGxhbmUKPiAtICoKPiAtICogRW5hYmxlIEBwbGFuZSBvbiBAY3J0Yywg bWFraW5nIHN1cmUgdGhhdCB0aGUgcGlwZSBpcyBydW5uaW5nIGZpcnN0Lgo+IC0gKi8KPiAtc3Rh dGljIHZvaWQgaW50ZWxfZW5hYmxlX3ByaW1hcnlfaHdfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gLQkJCQkJICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gLXsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCj4gLQkvKiBJZiB0aGUgcGlwZSBpc24n dCBlbmFibGVkLCB3ZSBjYW4ndCBwdW1wIHBpeGVscyBhbmQgbWF5IGhhbmcgKi8KPiAtCWFzc2Vy dF9waXBlX2VuYWJsZWQoZGV2X3ByaXYsIGludGVsX2NydGMtPnBpcGUpOwo+IC0KPiAtCWlmIChp bnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWludGVsX2Ny dGMtPnByaW1hcnlfZW5hYmxlZCA9IHRydWU7Cj4gLQo+IC0JZGV2X3ByaXYtPmRpc3BsYXkudXBk YXRlX3ByaW1hcnlfcGxhbmUoY3J0YywgcGxhbmUtPmZiLAo+IC0JCQkJCSAgICAgICBjcnRjLT54 LCBjcnRjLT55KTsKPiAtCj4gLQkvKgo+IC0JICogQkRXIHNpZ25hbHMgZmxpcCBkb25lIGltbWVk aWF0ZWx5IGlmIHRoZSBwbGFuZQo+IC0JICogaXMgZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5l IGVuYWJsZSBpcyBhbHJlYWR5Cj4gLQkgKiBhcm1lZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2Ymxh bmsgOigKPiAtCSAqLwo+IC0JaWYgKElTX0JST0FEV0VMTChkZXYpKQo+IC0JCWludGVsX3dhaXRf Zm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+IC19Cj4gLQo+IC0vKioKPiAtICog aW50ZWxfZGlzYWJsZV9wcmltYXJ5X2h3X3BsYW5lIC0gZGlzYWJsZSB0aGUgcHJpbWFyeSBoYXJk d2FyZSBwbGFuZQo+IC0gKiBAcGxhbmU6IHBsYW5lIHRvIGJlIGRpc2FibGVkCj4gLSAqIEBjcnRj OiBjcnRjIGZvciB0aGUgcGxhbmUKPiAtICoKPiAtICogRGlzYWJsZSBAcGxhbmUgb24gQGNydGMs IG1ha2luZyBzdXJlIHRoYXQgdGhlIHBpcGUgaXMgcnVubmluZyBmaXJzdC4KPiAtICovCj4gLXN0 YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcHJpbWFyeV9od19wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAtCQkJCQkgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gLXsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCj4gLQlpZiAoV0FSTl9PTighaW50 ZWxfY3J0Yy0+YWN0aXZlKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKCFpbnRlbF9jcnRjLT5w cmltYXJ5X2VuYWJsZWQpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWludGVsX2NydGMtPnByaW1hcnlf ZW5hYmxlZCA9IGZhbHNlOwo+IC0KPiAtCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5 X3BsYW5lKGNydGMsIHBsYW5lLT5mYiwKPiAtCQkJCQkgICAgICAgY3J0Yy0+eCwgY3J0Yy0+eSk7 Cj4gLX0KPiAtCj4gIHN0YXRpYyBib29sIG5lZWRfdnRkX3dhKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIHsKPiAgI2lmZGVmIENPTkZJR19JTlRFTF9JT01NVQo+IEBAIC0yODk1LDcgKzI4MzUs MTAgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCAwKSk7Cj4gIH0K PiAgCj4gLS8qIEFzc3VtZSBmYiBvYmplY3QgaXMgcGlubmVkICYgaWRsZSAmIGZlbmNlZCBhbmQg anVzdCB1cGRhdGUgYmFzZSBwb2ludGVycyAqLwo+ICsvKgo+ICsgKiBBc3N1bWUgZmIgb2JqZWN0 IGlzIGJpZyBlbm91Z2ggJiBwaW5uZWQgJiBpZGxlICYgZmVuY2VkLAo+ICsgKiBhbmQganVzdCB1 cGRhdGUgYmFzZSBwb2ludGVycwo+ICsgKi8KPiAgc3RhdGljIGludAo+ICBpbnRlbF9waXBlX3Nl dF9iYXNlX2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLAo+ICAJCQkgICBpbnQgeCwgaW50IHksIGVudW0gbW9kZV9zZXRfYXRvbWljIHN0YXRl KQo+IEBAIC0yOTA2LDYgKzI4NDksNyBAQCBpbnRlbF9waXBlX3NldF9iYXNlX2F0b21pYyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJaWYgKGRl dl9wcml2LT5kaXNwbGF5LmRpc2FibGVfZmJjKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmRpc2Fi bGVfZmJjKGRldik7Cj4gIAo+ICsJdG9faW50ZWxfY3J0YyhjcnRjKS0+cHJpbWFyeV9lbmFibGVk ID0gdHJ1ZTsKPiAgCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMs IGZiLCB4LCB5KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMjkzMywxNiArMjg3NywxNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7Cj4gIAo+ICAJCWRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBOVUxMKTsKPiAt CQkvKgo+IC0JCSAqIEZJWE1FOiBPbmNlIHdlIGhhdmUgcHJvcGVyIHN1cHBvcnQgZm9yIHByaW1h cnkgcGxhbmVzIChhbmQKPiAtCQkgKiBkaXNhYmxpbmcgdGhlbSB3aXRob3V0IGRpc2FibGluZyB0 aGUgZW50aXJlIGNydGMpIGFsbG93IGFnYWluCj4gLQkJICogYSBOVUxMIGNydGMtPnByaW1hcnkt PmZiLgo+IC0JCSAqLwo+IC0JCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUgJiYgY3J0Yy0+cHJpbWFy eS0+ZmIpCj4gKwo+ICsJCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCQkJY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9Cj4gKwkJCQl0b19pbnRlbF9wbGFuZV9zdGF0 ZShjcnRjLT5wcmltYXJ5LT5zdGF0ZSk7Cj4gKwo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRh dGVfcHJpbWFyeV9wbGFuZShjcnRjLAo+IC0JCQkJCQkJICAgICAgIGNydGMtPnByaW1hcnktPmZi LAo+IC0JCQkJCQkJICAgICAgIGNydGMtPngsCj4gLQkJCQkJCQkgICAgICAgY3J0Yy0+eSk7Cj4g KwkJCQkJCQkgICAgICAgc3RhdGUtPmJhc2UuZmIsCj4gKwkJCQkJCQkgICAgICAgc3RhdGUtPnNy Yy54MSA+PiAxNiwKPiArCQkJCQkJCSAgICAgICBzdGF0ZS0+c3JjLnkxID4+IDE2KTsKPiArCQl9 Cj4gKwo+ICAJCWRybV9tb2Rlc2V0X3VubG9jaygmY3J0Yy0+bXV0ZXgpOwo+ICAJfQo+ICB9Cj4g QEAgLTQxODMsNTAgKzQxMjgsNzYgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZpdF9lbmFibGUo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlu dGVsX2VuYWJsZV9zcHJpdGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAtewo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiAtCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiAtCj4gLQlkcm1fZm9yX2VhY2hf bGVnYWN5X3BsYW5lKHBsYW5lLCAmZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0KSB7Cj4gLQkJ aW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gLQkJaWYgKGludGVsX3BsYW5l LT5waXBlID09IHBpcGUpCj4gLQkJCWludGVsX3BsYW5lX3Jlc3RvcmUoJmludGVsX3BsYW5lLT5i YXNlKTsKPiAtCX0KPiAtfQo+IC0KPiAgLyoKPiAtICogRGlzYWJsZSBhIHBsYW5lIGludGVybmFs bHkgd2l0aG91dCBhY3R1YWxseSBtb2RpZnlpbmcgdGhlIHBsYW5lJ3Mgc3RhdGUuCj4gLSAqIFRo aXMgd2lsbCBhbGxvdyB1cyB0byBlYXNpbHkgcmVzdG9yZSB0aGUgcGxhbmUgbGF0ZXIgYnkganVz dCByZXByb2dyYW1taW5nCj4gLSAqIGl0cyBzdGF0ZS4KPiArICogVWdseSBoYWNrIHRvIG1ha2Ug c3VyZSB3ZSB1cGRhdGUgdGhlIHBsYW5lcyBjb3JyZWN0bHkKPiAgICovCj4gLXN0YXRpYyB2b2lk IGRpc2FibGVfcGxhbmVfaW50ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gK3N0YXRp YyB2b2lkIF9pbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZSk7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9Cj4gLQkJcGxhbmUt PmZ1bmNzLT5hdG9taWNfZHVwbGljYXRlX3N0YXRlKHBsYW5lKTsKPiAtCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ICsJY29u c3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqY3J0Y19mdW5jcyA9Cj4gKwkJY3J0Yy0+ YmFzZS5oZWxwZXJfcHJpdmF0ZTsKPiAgCj4gLQlpbnRlbF9zdGF0ZS0+dmlzaWJsZSA9IGZhbHNl Owo+IC0JaW50ZWxfcGxhbmUtPmNvbW1pdF9wbGFuZShwbGFuZSwgaW50ZWxfc3RhdGUpOwo+ICsJ Zm9yX2VhY2hfaW50ZWxfcGxhbmUoZGV2LCBwbGFuZSkgewo+ICsJCWNvbnN0IHN0cnVjdCBkcm1f cGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jcyA9Cj4gKwkJCXBsYW5lLT5iYXNlLmhlbHBlcl9wcml2 YXRlOwo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUgPQo+ICsJCQl0b19pbnRl bF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JaW50ZWxfcGxhbmVfZGVz dHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwo+ICsJCWlmIChwbGFuZS0+cGlwZSAhPSBwaXBlKQo+ ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKGZ1bmNzLT5hdG9taWNfY2hlY2soJnBsYW5lLT5i YXNlLCAmc3RhdGUtPmJhc2UpKQoKTWF5YmUgYWRkIGEgV0FSTl9PTigpIGhlcmU/ICBJJ20gYXNz dW1pbmcgdGhhdCB0aGlzIHNob3VsZG4ndCByZWFsbHkgYmUKcG9zc2libGUgc2luY2UgaWYgdGhp cyBmYWlscyBpdCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHByZXZpb3VzbHkgZG9uZSBhCmNvbW1pdCBv ZiBpbnZhbGlkIHN0YXRlIG9uIGEgcHJldmlvdXMgYXRvbWljIHRyYW5zYWN0aW9uLiAgQnV0IGlm IGl0CmRvZXMgc29tZWhvdyBoYXBwZW4sIHRoZSBXQVJOIHdpbGwgZ2l2ZSB1cyBhIGNsdWUgd2h5 IHRoZSBwbGFuZSBjb250ZW50cwpzaW1wbHkgZGlkbid0IHNob3cgdXAuCgo+ICsJCQlzdGF0ZS0+ dmlzaWJsZSA9IGZhbHNlOwo+ICsJfQo+ICsKPiArCWNydGNfZnVuY3MtPmF0b21pY19iZWdpbigm Y3J0Yy0+YmFzZSk7Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfcGxhbmUoZGV2LCBwbGFuZSkgewo+ ICsJCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jcyA9Cj4gKwkJCXBs YW5lLT5iYXNlLmhlbHBlcl9wcml2YXRlOwo+ICsKPiArCQlpZiAocGxhbmUtPnBpcGUgIT0gcGlw ZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWZ1bmNzLT5hdG9taWNfdXBkYXRlKCZwbGFuZS0+ YmFzZSwgcGxhbmUtPmJhc2Uuc3RhdGUpOwo+ICsJfQo+ICsKPiArCWNydGNfZnVuY3MtPmF0b21p Y19mbHVzaCgmY3J0Yy0+YmFzZSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2Rpc2Fi bGVfc3ByaXRlX3BsYW5lcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2b2lkIF9p bnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0JZW51bSBwaXBlIHBpcGUg PSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+IC0KPiAtCWRybV9mb3JfZWFj aF9sZWdhY3lfcGxhbmUocGxhbmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QpIHsKPiAt CQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAtCQlpZiAocGxhbmUtPmZi ICYmIGludGVsX3BsYW5lLT5waXBlID09IHBpcGUpCj4gLQkJCWRpc2FibGVfcGxhbmVfaW50ZXJu YWwocGxhbmUpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmNydGNfZnVuY3Mg PQo+ICsJCWNydGMtPmJhc2UuaGVscGVyX3ByaXZhdGU7Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxf cGxhbmUoZGV2LCBwbGFuZSkgewo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUg PQo+ICsJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gKwo+ICsJ CWlmIChwbGFuZS0+cGlwZSAhPSBwaXBlKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJc3RhdGUt PnZpc2libGUgPSBmYWxzZTsKPiAgCX0KCkknbSBub3Qgc3VwZXIgZmFtaWxpYXIgd2l0aCB0aGUg Y3VycmVudCBsb2NraW5nIHNpdHVhdGlvbiBvZiBvdXIgbGVnYWN5Cm1vZGVzZXQgcGF0aHM7IGlz IGl0IHBvc3NpYmxlIGZvciB1cyB0byByYWNlIHRoaXMgd2l0aCBhbm90aGVyIHBsYW5lCnVwZGF0 ZSBvciBhcmUgd2UgYWxyZWFkeSBob2xkaW5nIGxvY2tzIGZyb20gc29tZXdoZXJlIGhpZ2hlciBp biB0aGUKY2FsbHN0YWNrPyAgSWYgaXQncyBwb3NzaWJsZSBmb3IgYW5vdGhlciB0aHJlYWQgdG8g c3dhcCBpbiBhIG5ldwpwbGFuZS0+c3RhdGUgcmlnaHQgaGVyZSB0aGVuIHdlJ3JlIG5vdCByZWFs bHkgY29tbWl0dGluZyB3aGF0IHdlIHRob3VnaHQKd2Ugd2VyZSAoYW5kIHBsYW5lLT5zdGF0ZS0+ dmlzaWJsZSBtYXkgYmUgdHJ1ZSkuCgoKTWF0dAoKPiArCj4gKwljcnRjX2Z1bmNzLT5hdG9taWNf YmVnaW4oJmNydGMtPmJhc2UpOwo+ICsKPiArCWZvcl9lYWNoX2ludGVsX3BsYW5lKGRldiwgcGxh bmUpIHsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3MgPQo+ ICsJCQlwbGFuZS0+YmFzZS5oZWxwZXJfcHJpdmF0ZTsKPiArCj4gKwkJaWYgKHBsYW5lLT5waXBl ICE9IHBpcGUpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlmdW5jcy0+YXRvbWljX3VwZGF0ZSgm cGxhbmUtPmJhc2UsIHBsYW5lLT5iYXNlLnN0YXRlKTsKPiArCX0KPiArCj4gKwljcnRjX2Z1bmNz LT5hdG9taWNfZmx1c2goJmNydGMtPmJhc2UpOwo+ICB9Cj4gIAo+ICB2b2lkIGhzd19lbmFibGVf aXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IEBAIC00MzU4LDkgKzQzMjksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAKPiAtCWludGVsX2VuYWJsZV9wcmlt YXJ5X2h3X3BsYW5lKGNydGMtPnByaW1hcnksIGNydGMpOwo+IC0JaW50ZWxfZW5hYmxlX3Nwcml0 ZV9wbGFuZXMoY3J0Yyk7Cj4gLQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0YywgdHJ1ZSk7 Cj4gKwlfaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKGludGVsX2NydGMpOwo+ICAJaW50ZWxfY3J0 Y19kcG1zX292ZXJsYXkoaW50ZWxfY3J0YywgdHJ1ZSk7Cj4gIAo+ICAJaHN3X2VuYWJsZV9pcHMo aW50ZWxfY3J0Yyk7Cj4gQEAgLTQzOTIsOSArNDM2MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Ny dGNfZGlzYWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaHN3X2Rpc2FibGVf aXBzKGludGVsX2NydGMpOwo+ICAKPiAgCWludGVsX2NydGNfZHBtc19vdmVybGF5KGludGVsX2Ny dGMsIGZhbHNlKTsKPiAtCWludGVsX2NydGNfdXBkYXRlX2N1cnNvcihjcnRjLCBmYWxzZSk7Cj4g LQlpbnRlbF9kaXNhYmxlX3Nwcml0ZV9wbGFuZXMoY3J0Yyk7Cj4gLQlpbnRlbF9kaXNhYmxlX3By aW1hcnlfaHdfcGxhbmUoY3J0Yy0+cHJpbWFyeSwgY3J0Yyk7Cj4gKwlfaW50ZWxfY3J0Y19kaXNh YmxlX3BsYW5lcyhpbnRlbF9jcnRjKTsKPiAgCj4gIAkvKgo+ICAJICogRklYTUU6IE9uY2Ugd2Ug Z3JvdyBwcm9wZXIgbnVjbGVhciBmbGlwIHN1cHBvcnQgb3V0IG9mIHRoaXMgd2UgbmVlZAo+IEBA IC0xMTcwOCw3ICsxMTY3NSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0 cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKPiAgCQkJCQkgICBtb2Rlc2V0X3BpcGVzLCBwcmVwYXJl X3BpcGVzLAo+ICAJCQkJCSAgIGRpc2FibGVfcGlwZXMpOwo+ICAJfSBlbHNlIGlmIChjb25maWct PmZiX2NoYW5nZWQpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoc2V0LT5jcnRjKTsKPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gc2V0 LT5jcnRjLT5wcmltYXJ5Owo+ICAJCWludCB2ZGlzcGxheSwgaGRpc3BsYXk7Cj4gIAo+IEBAIC0x MTcxOSwxNSArMTE2ODUsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1 Y3QgZHJtX21vZGVfc2V0ICpzZXQpCj4gIAkJCQkJCSAgIGhkaXNwbGF5IDw8IDE2LCB2ZGlzcGxh eSA8PCAxNik7Cj4gIAo+ICAJCS8qCj4gLQkJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHBy aW1hcnkgcGxhbmUgaXMgcmUtZW5hYmxlZCBpZiBpdAo+IC0JCSAqIGhhcyBwcmV2aW91c2x5IGJl ZW4gdHVybmVkIG9mZi4KPiAtCQkgKi8KPiAtCQlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5h YmxlZCAmJiByZXQgPT0gMCkgewo+IC0JCQlXQVJOX09OKCFpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ IC0JCQlpbnRlbF9lbmFibGVfcHJpbWFyeV9od19wbGFuZShzZXQtPmNydGMtPnByaW1hcnksIHNl dC0+Y3J0Yyk7Cj4gLQkJfQo+IC0KPiAtCQkvKgo+ICAJCSAqIEluIHRoZSBmYXN0Ym9vdCBjYXNl IHRoaXMgbWF5IGJlIG91ciBvbmx5IGNoZWNrIG9mIHRoZQo+ICAJCSAqIHN0YXRlIGFmdGVyIGJv b3QuICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gb25seSBkbyBpdCBvbgo+ICAJCSAqIHRoZSBmaXJz dCB1cGRhdGUsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgbmljZSB3YXkgb2YgZG9pbmcgdGhhdAo+IEBA IC0xMjA1NCwyNCArMTIwMTEsMTUgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOwo+ICAKPiAgCWlm IChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiAtCQlpZiAoc3RhdGUtPnZpc2libGUpIHsKPiAtCQkJ LyogRklYTUU6IGtpbGwgdGhpcyBmYXN0Ym9vdCBoYWNrICovCj4gKwkJLyogRklYTUU6IGtpbGwg dGhpcyBmYXN0Ym9vdCBoYWNrICovCj4gKwkJaWYgKHN0YXRlLT52aXNpYmxlKQo+ICAJCQlpbnRl bF91cGRhdGVfcGlwZV9zaXplKGludGVsX2NydGMpOwo+ICAKPiAtCQkJaW50ZWxfY3J0Yy0+cHJp bWFyeV9lbmFibGVkID0gdHJ1ZTsKPiAtCj4gLQkJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9w cmltYXJ5X3BsYW5lKGNydGMsIHBsYW5lLT5mYiwKPiAtCQkJCQljcnRjLT54LCBjcnRjLT55KTsK PiAtCQl9IGVsc2Ugewo+IC0JCQkvKgo+IC0JCQkgKiBJZiBjbGlwcGluZyByZXN1bHRzIGluIGEg bm9uLXZpc2libGUgcHJpbWFyeSBwbGFuZSwKPiAtCQkJICogd2UnbGwgZGlzYWJsZSB0aGUgcHJp bWFyeSBwbGFuZS4gIE5vdGUgdGhhdCB0aGlzIGlzCj4gLQkJCSAqIGEgYml0IGRpZmZlcmVudCB0 aGFuIHdoYXQgaGFwcGVucyBpZiB1c2Vyc3BhY2UKPiAtCQkJICogZXhwbGljaXRseSBkaXNhYmxl cyB0aGUgcGxhbmUgYnkgcGFzc2luZyBmYj0wCj4gLQkJCSAqIGJlY2F1c2UgcGxhbmUtPmZiIHN0 aWxsIGdldHMgc2V0IGFuZCBwaW5uZWQuCj4gLQkJCSAqLwo+IC0JCQlpbnRlbF9kaXNhYmxlX3By aW1hcnlfaHdfcGxhbmUocGxhbmUsIGNydGMpOwo+IC0JCX0KPiArCQlpbnRlbF9jcnRjLT5wcmlt YXJ5X2VuYWJsZWQgPSBzdGF0ZS0+dmlzaWJsZTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRh dGVfcHJpbWFyeV9wbGFuZShjcnRjLAo+ICsJCQkJCQkgICAgICAgc3RhdGUtPmJhc2UuZmIsCj4g KwkJCQkJCSAgICAgICBzdGF0ZS0+c3JjLngxID4+IDE2LAo+ICsJCQkJCQkgICAgICAgc3RhdGUt PnNyYy55MSA+PiAxNik7Cj4gIAl9Cj4gIH0KPiAgCj4gLS0gCj4gMi4wLjUKPiAKCi0tIApNYXR0 IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcg JiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=