From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Weinehall Subject: Re: [PATCH v2 01/14] drm/i915: Store the pipe pixel rate in the crtc state Date: Tue, 24 Jan 2017 14:30:09 +0200 Message-ID: <20170124123009.vxaogdlo7boyn3u4@boom> References: <20170120182205.8141-1-ville.syrjala@linux.intel.com> <20170120182205.8141-2-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 ESMTPS id A4E2D6E796 for ; Tue, 24 Jan 2017 12:30:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170120182205.8141-2-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 T24gRnJpLCBKYW4gMjAsIDIwMTcgYXQgMDg6MjE6NTJQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBSYXRoZXIgdGhhbiByZWNvbXB0dWluZyB0aGUgcGlw ZSBwaXhlbCByYXRlIG9uIGRlbWFuZCBldmVyd2hlcmUsIGxldCdzCgpyZWNvbXB1dGluZywgZXZl cnl3aGVyZQoKPiBqdXN0IHN0aWNrIHRoZSBwcmVjb21wdXRlZCB2YWx1ZSBpbnRvIHRoZSBjcnRj IHN0YXRlLgo+IAo+IHYyOiBSZWJhc2UgZHVlIHRvIG1pbl9waXhjbGtbXSBjb2RlIG1vdmVtZW50 Cj4gICAgIERvY3VtZW50IHRoZSBuZXcgcGl4ZWxfcmF0ZSBzdHJ1Y3QgbWVtYmVyIChBbmRlcikK PiAgICAgQ29tYmluZSB2bHYvY2h2IHdpdGggYmR3KyBpbiBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRf aHdfc3RhdGUoKQo+IAo+IENjOiBBbmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmEgPGNvbnNlbHZh bjJAZ21haWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgNiArKysrKysKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgIHwgIDMgKy0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDE0ICsrKysrKystLS0tLS0tCj4gIDQgZmlsZXMgY2hh bmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDBmNDI3MmY5ODY0OC4uYTgyNTEwN2IzNjJiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC03MTY1LDcgKzcxNjUs NyBAQCBzdGF0aWMgYm9vbCBwaXBlX2NvbmZpZ19zdXBwb3J0c19pcHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICoKPiAgCSAqIFNob3VsZCBtZWFzdXJlIHdoZXRoZXIg dXNpbmcgYSBsb3dlciBjZGNsayB3L28gSVBTCj4gIAkgKi8KPiAtCXJldHVybiBpbGtfcGlwZV9w aXhlbF9yYXRlKHBpcGVfY29uZmlnKSA8PQo+ICsJcmV0dXJuIHBpcGVfY29uZmlnLT5waXhlbF9y YXRlIDw9Cj4gIAkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOTUgLyAxMDA7Cj4gIH0KPiAg Cj4gQEAgLTcxODksNiArNzE4OSwxOSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRjX3N1cHBvcnRz X2RvdWJsZV93aWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJCShjcnRjLT5w aXBlID09IFBJUEVfQSB8fCBJU19JOTE1RyhkZXZfcHJpdikpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwo+ICsJaWYgKEhBU19H TUNIX0RJU1BMQVkoZGV2X3ByaXYpKQo+ICsJCS8qIEZJWE1FIGNhbGN1bGF0ZSBwcm9wZXIgcGlw ZSBwaXhlbCByYXRlIGZvciBHTUNIIHBmaXQgKi8KPiArCQljcnRjX3N0YXRlLT5waXhlbF9yYXRl ID0KPiArCQkJY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwll bHNlCj4gKwkJY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSA9Cj4gKwkJCWlsa19waXBlX3BpeGVsX3Jh dGUoY3J0Y19zdGF0ZSk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gQEAgLTcyMzUsNiArNzI0OCw4IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVzdGVkX21vZGUt PmNydGNfaGRpc3BsYXkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICsJaW50ZWxfY3J0Y19j b21wdXRlX3BpeGVsX3JhdGUocGlwZV9jb25maWcpOwo+ICsKPiAgCWlmIChIQVNfSVBTKGRldl9w cml2KSkKPiAgCQloc3dfY29tcHV0ZV9pcHNfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKPiAg Cj4gQEAgLTEwMjgzLDcgKzEwMjk4LDcgQEAgc3RhdGljIGludCBpbGtfbWF4X3BpeGVsX3JhdGUo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCQljb250aW51ZTsKPiAgCQl9Cj4g IAo+IC0JCXBpeGVsX3JhdGUgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+ICsJ CXBpeGVsX3JhdGUgPSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ICAKPiAgCQlpZiAoSVNfQlJP QURXRUxMKGRldl9wcml2KSB8fCBJU19HRU45KGRldl9wcml2KSkKPiAgCQkJcGl4ZWxfcmF0ZSA9 IGJkd19hZGp1c3RfbWluX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlLAo+IEBAIC0xMjc5Miw5 ICsxMjgwNywxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAJRFJNX0RFQlVHX0tNUygiYWRqdXN0ZWQgbW9kZTpcbiIpOwo+ ICAJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZSk7Cj4gIAlpbnRlbF9kdW1wX2NydGNfdGltaW5ncygmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZSk7Cj4gLQlEUk1fREVCVUdfS01TKCJwb3J0IGNsb2NrOiAlZCwgcGlwZSBz cmMgc2l6ZTogJWR4JWRcbiIsCj4gKwlEUk1fREVCVUdfS01TKCJwb3J0IGNsb2NrOiAlZCwgcGlw ZSBzcmMgc2l6ZTogJWR4JWQsIHBpeGVsIHJhdGUgJWRcbiIsCj4gIAkJICAgICAgcGlwZV9jb25m aWctPnBvcnRfY2xvY2ssCj4gLQkJICAgICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVf Y29uZmlnLT5waXBlX3NyY19oKTsKPiArCQkgICAgICBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdywg cGlwZV9jb25maWctPnBpcGVfc3JjX2gsCj4gKwkJICAgICAgcGlwZV9jb25maWctPnBpeGVsX3Jh dGUpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gIAkJRFJNX0RFQlVH X0tNUygibnVtX3NjYWxlcnM6ICVkLCBzY2FsZXJfdXNlcnM6IDB4JXgsIHNjYWxlcl9pZDogJWRc biIsCj4gQEAgLTEzMzY3LDYgKzEzMzgzLDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJfQo+ICAKPiAgCQlQSVBFX0NP TkZfQ0hFQ0tfSShzY2FsZXJfc3RhdGUuc2NhbGVyX2lkKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tf Q0xPQ0tfRlVaWlkocGl4ZWxfcmF0ZSk7Cj4gIAl9Cj4gIAo+ICAJLyogQkRXKyBkb24ndCBleHBv c2UgYSBzeW5jaHJvbm91cyB3YXkgdG8gcmVhZCB0aGUgc3RhdGUgKi8KPiBAQCAtMTM2NTgsNiAr MTM2NzUsOCBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJ fQo+ICAJfQo+ICAKPiArCWludGVsX2NydGNfY29tcHV0ZV9waXhlbF9yYXRlKHBpcGVfY29uZmln KTsKPiArCj4gIAlpZiAoIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAK PiBAQCAtMTcxMDIsMTAgKzE3MTIxLDExIEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVh ZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkgKi8KPiAgCQkJY3J0 Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgPSBJOTE1X01PREVfRkxBR19JTkhFUklU RUQ7Cj4gIAo+IC0JCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4gLQkJCQlwaXhjbGsgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3Rh dGUpOwo+IC0JCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiAtCQkJCXBpeGNsayA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrOwo+ICsJCQlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShjcnRj X3N0YXRlKTsKPiArCj4gKwkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJP QURXRUxMKGRldl9wcml2KSB8fAo+ICsJCQkgICAgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gKwkJCQlwaXhjbGsgPSBjcnRjX3N0YXRlLT5waXhl bF9yYXRlOwo+ICAJCQllbHNlCj4gIAkJCQlXQVJOX09OKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVz ZXRfY2FsY19jZGNsayk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMGNl YzAwMTNhY2UwLi4zYjI2M2QxNWUxNmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ IEBAIC01NDIsNiArNTQyLDEyIEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCSAqIGFu ZCBnZXQgY2xpcHBlZCBhdCB0aGUgZWRnZXMuICovCj4gIAlpbnQgcGlwZV9zcmNfdywgcGlwZV9z cmNfaDsKPiAgCj4gKwkvKgo+ICsJICogUGlwZSBwaXhlbCByYXRlLCBhZGp1c3RlZCBmb3IKPiAr CSAqIHBhbmVsIGZpdHRlci9waXBlIHNjYWxlciBkb3duc2NhbGluZy4KPiArCSAqLwo+ICsJdW5z aWduZWQgaW50IHBpeGVsX3JhdGU7Cj4gKwo+ICAJLyogV2hldGhlciB0byBzZXQgdXAgdGhlIFBD SC9GREkuIE5vdGUgdGhhdCB3ZSBuZXZlciBhbGxvdyBzaGFyaW5nCj4gIAkgKiBiZXR3ZWVuIHBj aCBlbmNvZGVycyBhbmQgY3B1IGVuY29kZXJzLiAqLwo+ICAJYm9vbCBoYXNfcGNoX2VuY29kZXI7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBpbmRleCA4OWZlNWM4NDY0ZGYuLjJiNGMxNzY1 MTBkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTc0Myw4ICs3NDMsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAKPiAgCWNhY2hlLT5jcnRjLm1vZGVfZmxhZ3MgPSBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuZmxhZ3M7Cj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwg SVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAtCQljYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3Jh dGUgPQo+IC0JCQlpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+ICsJCWNhY2hlLT5j cnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7Cj4gIAo+ICAJ Y2FjaGUtPnBsYW5lLnJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gIAlj YWNoZS0+cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj KSA+PiAxNjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCAyNDk2MjNkNDViZTAuLjk0 ODE5NDM1NjQxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0xODA3LDEyICsx ODA3LDEyIEBAIHN0YXRpYyB1aW50MzJfdCBpbGtfY29tcHV0ZV9wcmlfd20oY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCj4gIAljcHAgPSBwc3RhdGUtPmJhc2UuZmIt PmZvcm1hdC0+Y3BwWzBdOwo+ICAKPiAtCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShpbGtfcGlw ZV9waXhlbF9yYXRlKGNzdGF0ZSksIGNwcCwgbWVtX3ZhbHVlKTsKPiArCW1ldGhvZDEgPSBpbGtf d21fbWV0aG9kMShjc3RhdGUtPnBpeGVsX3JhdGUsIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCj4gIAlp ZiAoIWlzX2xwKQo+ICAJCXJldHVybiBtZXRob2QxOwo+ICAKPiAtCW1ldGhvZDIgPSBpbGtfd21f bWV0aG9kMihpbGtfcGlwZV9waXhlbF9yYXRlKGNzdGF0ZSksCj4gKwltZXRob2QyID0gaWxrX3dt X21ldGhvZDIoY3N0YXRlLT5waXhlbF9yYXRlLAo+ICAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmNydGNfaHRvdGFsLAo+ICAJCQkJIGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmJhc2Uu ZHN0KSwKPiAgCQkJCSBjcHAsIG1lbV92YWx1ZSk7Cj4gQEAgLTE4MzYsOCArMTgzNiw4IEBAIHN0 YXRpYyB1aW50MzJfdCBpbGtfY29tcHV0ZV9zcHJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiAgCj4gIAljcHAgPSBwc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3Bw WzBdOwo+ICAKPiAtCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShpbGtfcGlwZV9waXhlbF9yYXRl KGNzdGF0ZSksIGNwcCwgbWVtX3ZhbHVlKTsKPiAtCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9kMihp bGtfcGlwZV9waXhlbF9yYXRlKGNzdGF0ZSksCj4gKwltZXRob2QxID0gaWxrX3dtX21ldGhvZDEo Y3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7Cj4gKwltZXRob2QyID0gaWxrX3dt X21ldGhvZDIoY3N0YXRlLT5waXhlbF9yYXRlLAo+ICAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmNydGNfaHRvdGFsLAo+ICAJCQkJIGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmJhc2Uu ZHN0KSwKPiAgCQkJCSBjcHAsIG1lbV92YWx1ZSk7Cj4gQEAgLTE4NjMsNyArMTg2Myw3IEBAIHN0 YXRpYyB1aW50MzJfdCBpbGtfY29tcHV0ZV9jdXJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiAgCWlmICghY3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiAgCQlyZXR1cm4g MDsKPiAgCj4gLQlyZXR1cm4gaWxrX3dtX21ldGhvZDIoaWxrX3BpcGVfcGl4ZWxfcmF0ZShjc3Rh dGUpLAo+ICsJcmV0dXJuIGlsa193bV9tZXRob2QyKGNzdGF0ZS0+cGl4ZWxfcmF0ZSwKPiAgCQkJ ICAgICAgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gIAkJCSAgICAg IHdpZHRoLCBjcHAsIG1lbV92YWx1ZSk7Cj4gIH0KPiBAQCAtMzU0Nyw3ICszNTQ3LDcgQEAgc3Rh dGljIHVpbnQzMl90IHNrbF9hZGp1c3RlZF9wbGFuZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3QKPiAgCSAqIEFkanVzdGVkIHBsYW5lIHBpeGVsIHJhdGUgaXMg anVzdCB0aGUgcGlwZSdzIGFkanVzdGVkIHBpeGVsIHJhdGUKPiAgCSAqIHdpdGggYWRkaXRpb25h bCBhZGp1c3RtZW50cyBmb3IgcGxhbmUtc3BlY2lmaWMgc2NhbGluZy4KPiAgCSAqLwo+IC0JYWRq dXN0ZWRfcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKTsKPiArCWFkanVz dGVkX3BpeGVsX3JhdGUgPSBjc3RhdGUtPnBpeGVsX3JhdGU7Cj4gIAlkb3duc2NhbGVfYW1vdW50 ID0gc2tsX3BsYW5lX2Rvd25zY2FsZV9hbW91bnQocHN0YXRlKTsKPiAgCj4gIAlwaXhlbF9yYXRl ID0gYWRqdXN0ZWRfcGl4ZWxfcmF0ZSAqIGRvd25zY2FsZV9hbW91bnQgPj4gMTY7Cj4gQEAgLTM3 NzUsNyArMzc3NSw3IEBAIHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUpCj4gIAlpZiAoIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCj4gIAkJcmV0dXJu IDA7Cj4gIAo+IC0JcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKTsKPiAr CXBpeGVsX3JhdGUgPSBjc3RhdGUtPnBpeGVsX3JhdGU7Cj4gIAo+ICAJaWYgKFdBUk5fT04ocGl4 ZWxfcmF0ZSA9PSAwKSkKPiAgCQlyZXR1cm4gMDsKPiAtLSAKPiAyLjEwLjIKPiAKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWls aW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==