From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH] drm/vc4: Add a load tracker to prevent HVS underflow errors Date: Tue, 16 Oct 2018 14:57:43 +0200 Message-ID: <20181016125743.GZ31561@phenom.ffwll.local> References: <20181016094045.23021-1-boris.brezillon@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id A0D1D6E218 for ; Tue, 16 Oct 2018 12:57:47 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id g32-v6so21174410edg.13 for ; Tue, 16 Oct 2018 05:57:47 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181016094045.23021-1-boris.brezillon@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon Cc: "Hollingworth, Gordon" , dri-devel@lists.freedesktop.org, Eben Upton List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBPY3QgMTYsIDIwMTggYXQgMTE6NDA6NDVBTSArMDIwMCwgQm9yaXMgQnJlemlsbG9u IHdyb3RlOgo+IFRoZSBIVlMgYmxvY2sgaXMgc3VwcG9zZWQgdG8gZmlsbCB0aGUgcGl4ZWx2YWx2 ZSBGSUZPcyBmYXN0IGVub3VnaCB0bwo+IG1lZXQgdGhlIHJlcXVlc3RlZCBmcmFtZXJhdGUuIFRo ZSBwcm9ibGVtIGlzLCB0aGUgSFZTIGFuZCBtZW1vcnkgYnVzCj4gYmFuZHdpZHRocyBhcmUgbGlt aXRlZCwgYW5kIGlmIHdlIGRvbid0IHRha2UgdGhlc2UgbGltaXRhdGlvbnMgaW50bwo+IGFjY291 bnQgd2UgbWlnaHQgZW5kIHVwIHdpdGggSFZTIHVuZGVyZmxvdyBlcnJvcnMuCj4gCj4gVGhpcyBw YXRjaCBpcyB0cnlpbmcgdG8gbW9kZWwgdGhlIHBlci1wbGFuZSBIVlMgYW5kIG1lbW9yeSBidXMg YmFuZHdpZHRoCj4gY29uc3VtcHRpb24gYW5kIHRha2UgYSBkZWNpc2lvbiBhdCBhdG9taWNfY2hl Y2soKSB0aW1lIHdoZXRoZXIgdGhlCj4gZXN0aW1hdGVkIGxvYWQgd2lsbCBmaXQgaW4gdGhlIEhW UyBhbmQgbWVtYnVzIGJ1ZGdldC4KPiAKPiBOb3RlIHRoYXQgd2UgdGFrZSBhbiBleHRyYSBtYXJn aW4gb24gdGhlIG1lbW9yeSBidXMgY29uc3VtcHRpb24gdG8gbGV0Cj4gdGhlIHN5c3RlbSBydW4g c21vb3RobHkgd2hlbiBvdGhlciBibG9ja3MgYXJlIGRvaW5nIGhlYXZ5IHVzZSBvZiB0aGUKPiBt ZW1vcnkgYnVzLiBTYW1lIGdvZXMgZm9yIHRoZSBIVlMgbGltaXQsIGV4Y2VwdCB0aGUgbWFyZ2lu IGlzIHNtYWxsZXIgaW4KPiB0aGlzIGNhc2UsIHNpbmNlIHRoZSBIVlMgaXMgbm90IHVzZWQgYnkg ZXh0ZXJuYWwgY29tcG9uZW50cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxsb24g PGJvcmlzLmJyZXppbGxvbkBib290bGluLmNvbT4KPiAtLS0KPiBUaGlzIGxvZ2ljIGhhcyBiZWVu IHZhbGlkYXRlZCB1c2luZyBhIHNpbXBsZSBzaGVsbCBzY3JpcHQgYW5kCj4gc29tZSBpbnN0cnVt ZW50YXRpb24gaW4gdGhlIFZDNCBkcml2ZXI6Cj4gCj4gLSBjYXB0dXJlIHVuZGVyZmxvdyBlcnJv cnMgYXQgdGhlIEhWUyBsZXZlbCBhbmQgZXhwb3NlIGEgZGVidWdmcyBmaWxlCj4gICByZXBvcnRp bmcgdGhvc2UgZXJyb3JzCj4gLSBhZGQgZGVidWdmcyBmaWxlcyB0byBleHBvc2Ugd2hlbiBhdG9t aWNfY2hlY2sgZmFpbHMgYmVjYXVzZSBvZiB0aGUKPiAgIEhWUyBvciBtZW1idXMgbG9hZCBsaW1p dGF0aW9uIG9yIHdoZW4gaXQgZmFpbHMgZm9yIG90aGVyIHJlYXNvbnMKPiAKPiBUaGUgYnJhbmNo IGNvbnRhaW5pbmcgdGhvc2UgbW9kaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBoZXJlIFsxXSwgYW5k IHRoZQo+IHNjcmlwdCAod2hpY2ggaXMgaW50ZXJuYWxseSB1c2luZyBtb2RldGVzdCkgaXMgaGVy ZSBbMl0gKHBsZWFzZSBub3RlCj4gdGhhdCBJJ20gYmFkIGF0IHdyaXRpbmcgc2hlbGwgc2NyaXB0 cyA6LSkpLgo+IAo+IE5vdGUgdGhhdCB0aG9zZSBtb2RpZmljYXRpb24gdGVuZCB0byBvdmVyLWVz dGltYXRlIHRoZSBsb2FkLCBhbmQgdGh1cwo+IHJlamVjdCBzZXR1cHMgdGhhdCBtaWdodCBoYXZl IHByZXZpb3VzbHkgd29ya2VkLCBzbyB3ZSBtaWdodCB3YW50IHRvCj4gYWRqdXN0IHRoZSBsaW1p dHMgdG8gYXZvaWQgdGhhdC4KPiAKPiBbMV1odHRwczovL2dpdGh1Yi5jb20vYmJyZXppbGxvbi9s aW51eC90cmVlL3ZjNC9odnMtYmFuZHdpZHRoLWV2YWwKPiBbMl1odHRwczovL2dpdGh1Yi5jb20v YmJyZXppbGxvbi92YzQtaHZzLWJhbmR3aWR0aC10ZXN0CgpBbnkgaW50ZXJlc3QgaW4gdXNpbmcg aWd0IHRvIHRlc3QgdGhpcyBzdHVmZj8gV2UgaGF2ZSBhdCBsZWFzdCBhIGJ1bmNoIG9mCnRlc3Rz IGFscmVhZHkgaW4gdGhlcmUgdGhhdCB0cnkgYWxsIGtpbmRzIG9mIHBsYW5lIHNldHVwcy4gQW5k IHdlIHVzZQp0aG9zZSB0byBodW50IGZvciB1bmRlcnJ1bnMgb24gaTkxNSBody4KCldydCB1bmRl cnJ1biByZXBvcnRpbmc6IE9uIGk5MTUgd2UganVzdCBkdW1wIHRoZW0gaW50byBkbWVzZyBhdCB0 aGUgZXJyb3IKbGV2ZWwsIHVzaW5nIERSTV9FUlJPUiwgcGx1cyBhIHRyYWNlcG9pbnQuIFNlZSBl LmcuCmludGVsX3BjaF9maWZvX3VuZGVycnVuX2lycV9oYW5kbGVyKCkuIElmIHRoZXJlJ3MgaW50 ZXJlc3Qgd2UgY291bGQKcGVyaGFwcyBleHRyYWN0IHRoaXMgaW50byBzb21ldGhpbmcgY29tbW9u LCBzaW1pbGFyIHRvIHdoYXQgd2FzIGRvbmUgd2l0aApjcmMgc3VwcG9ydCBhbHJlYWR5LgoKPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggICB8ICAxMSArKysrKwo+ICBkcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYyAgIHwgMTA0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcGxhbmUuYyB8ICA2 MCArKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKPiBpbmRleCBiZDZl ZjFmMzE4MjIuLjQ4ZjZlZTVjZWRhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCj4gQEAgLTIw MCw2ICsyMDAsNyBAQCBzdHJ1Y3QgdmM0X2RldiB7Cj4gIAo+ICAJc3RydWN0IGRybV9tb2Rlc2V0 X2xvY2sgY3RtX3N0YXRlX2xvY2s7Cj4gIAlzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqIGN0bV9tYW5h Z2VyOwo+ICsJc3RydWN0IGRybV9wcml2YXRlX29iaiBsb2FkX3RyYWNrZXI7Cj4gIH07Cj4gIAo+ ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB2YzRfZGV2ICoKPiBAQCAtMzY5LDYgKzM3MCwxNiBAQCBz dHJ1Y3QgdmM0X3BsYW5lX3N0YXRlIHsKPiAgCSAqIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGNvbG9y IGZpbGwuCj4gIAkgKi8KPiAgCWJvb2wgbmVlZHNfYmdfZmlsbDsKPiArCj4gKwkvKiBMb2FkIG9m IHRoaXMgcGxhbmUgb24gdGhlIEhWUyBibG9jay4gVGhlIGxvYWQgaXMgZXhwcmVzc2VkIGluIEhW Uwo+ICsJICogY3ljbGVzL3NlYy4KPiArCSAqLwo+ICsJdTY0IGh2c19sb2FkOwo+ICsKPiArCS8q IE1lbW9yeSBiYW5kd2lkdGggbmVlZGVkIGZvciB0aGlzIHBsYW5lLiBUaGlzIGlzIGV4cHJlc3Nl ZCBpbgo+ICsJICogYnl0ZXMvc2VjLgo+ICsJICovCj4gKwl1NjQgbWVtYnVzX2xvYWQ7Cj4gIH07 Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB2YzRfcGxhbmVfc3RhdGUgKgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQv dmM0X2ttcy5jCj4gaW5kZXggMTI3NDY4Nzg1Zjc0Li40YzY1ZTYwMTNiZDMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9rbXMuYwo+IEBAIC0zNCw2ICszNCwxOCBAQCBzdGF0aWMgc3RydWN0IHZjNF9jdG1f c3RhdGUgKnRvX3ZjNF9jdG1fc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2KQo+ ICAJcmV0dXJuIGNvbnRhaW5lcl9vZihwcml2LCBzdHJ1Y3QgdmM0X2N0bV9zdGF0ZSwgYmFzZSk7 Cj4gIH0KPiAgCj4gK3N0cnVjdCB2YzRfbG9hZF90cmFja2VyX3N0YXRlIHsKPiArCXN0cnVjdCBk cm1fcHJpdmF0ZV9zdGF0ZSBiYXNlOwo+ICsJdTY0IGh2c19sb2FkOwo+ICsJdTY0IG1lbWJ1c19s b2FkOwo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCB2YzRfbG9hZF90cmFja2VyX3N0YXRlICoK PiArdG9fdmM0X2xvYWRfdHJhY2tlcl9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnBy aXYpCj4gK3sKPiArCXJldHVybiBjb250YWluZXJfb2YocHJpdiwgc3RydWN0IHZjNF9sb2FkX3Ry YWNrZXJfc3RhdGUsIGJhc2UpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgc3RydWN0IHZjNF9jdG1fc3Rh dGUgKnZjNF9nZXRfY3RtX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAg CQkJCQkgICAgICAgc3RydWN0IGRybV9wcml2YXRlX29iaiAqbWFuYWdlcikKPiAgewo+IEBAIC0z NzksNiArMzkxLDgxIEBAIHZjNF9jdG1fYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+ICtzdGF0aWMgaW50IHZjNF9sb2FkX3RyYWNrZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xk X3BsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwo+ICsJc3RydWN0IHZjNF9kZXYgKnZjNCA9 IHRvX3ZjNF9kZXYoc3RhdGUtPmRldik7Cj4gKwlzdHJ1Y3QgdmM0X2xvYWRfdHJhY2tlcl9zdGF0 ZSAqbG9hZF9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdl9zdGF0ZTsK PiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICsJaW50IHJldCwgaTsKPiArCgpZb3UncmUg bWlzc2luZyB0aGUgbW9kZXNldCBsb2NraW5nIGZvciB2YzQtPmxvYWRfdHJhY2tlci4gU2VlIHRo ZQprZXJuZWxkb2MgZm9yIGRybV9hdG9taWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKCkuIFByb2Jh Ymx5IGEgZ29vZCB0aW1lIHRvCmltcGxlbWVudCB0aGUgbG9ja2luZyByZWZhY3RvcmluZyBpZGVh IEkgaGF2ZSBhbmQganVzdCBpbXBsZW1lbnQgYSBwZXIKcHJpdmF0ZV9vYmogbG9jaywgYW5kIHJl bW92ZSBhbGwgdGhlIGFkLWhvYyBsb2NraW5nIGZyb20gYWxsIHRoZSBjYWxsZXJzPwoKV291bGQg ZGVmaW5pdGVseSBzaW1wbGlmeSB0aGUgY29kZSwgYW5kIGF2b2lkICJvb3BzIG5vIGxvY2tpbmci IGlzc3VlcwpsaWtlIGhlcmUuCgpDaGVlcnMsIERhbmllbAoKPiArCXByaXZfc3RhdGUgPSBkcm1f YXRvbWljX2dldF9wcml2YXRlX29ial9zdGF0ZShzdGF0ZSwKPiArCQkJCQkJICAgICAgJnZjNC0+ bG9hZF90cmFja2VyKTsKPiArCWlmIChJU19FUlIocHJpdl9zdGF0ZSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIocHJpdl9zdGF0ZSk7Cj4gKwo+ICsJbG9hZF9zdGF0ZSA9IHRvX3ZjNF9sb2FkX3RyYWNr ZXJfc3RhdGUocHJpdl9zdGF0ZSk7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUo c3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsCj4gKwkJCQkgICAgICAgbmV3X3BsYW5lX3N0 YXRlLCBpKSB7Cj4gKwkJc3RydWN0IHZjNF9wbGFuZV9zdGF0ZSAqdmM0X3BsYW5lX3N0YXRlOwo+ ICsKPiArCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5mYiAmJiBvbGRfcGxhbmVfc3RhdGUtPmNydGMp IHsKPiArCQkJdmM0X3BsYW5lX3N0YXRlID0gdG9fdmM0X3BsYW5lX3N0YXRlKG9sZF9wbGFuZV9z dGF0ZSk7Cj4gKwkJCWxvYWRfc3RhdGUtPm1lbWJ1c19sb2FkIC09IHZjNF9wbGFuZV9zdGF0ZS0+ bWVtYnVzX2xvYWQ7Cj4gKwkJCWxvYWRfc3RhdGUtPmh2c19sb2FkIC09IHZjNF9wbGFuZV9zdGF0 ZS0+aHZzX2xvYWQ7Cj4gKwkJfQo+ICsKPiArCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5mYiAmJiBu ZXdfcGxhbmVfc3RhdGUtPmNydGMpIHsKPiArCQkJdmM0X3BsYW5lX3N0YXRlID0gdG9fdmM0X3Bs YW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSk7Cj4gKwkJCWxvYWRfc3RhdGUtPm1lbWJ1c19sb2Fk ICs9IHZjNF9wbGFuZV9zdGF0ZS0+bWVtYnVzX2xvYWQ7Cj4gKwkJCWxvYWRfc3RhdGUtPmh2c19s b2FkICs9IHZjNF9wbGFuZV9zdGF0ZS0+aHZzX2xvYWQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8q IFRoZSBhYm9sc3V0ZSBsaW1pdCBpcyAyR2J5dGUvc2VjLCBidXQgbGV0J3MgdGFrZSBhIG1hcmdp biB0byBsZXQKPiArCSAqIHRoZSBzeXN0ZW0gd29yayB3aGVuIG90aGVyIGJsb2NrcyBhcmUgYWNj ZXNzaW5nIHRoZSBtZW1vcnkuCj4gKwkgKi8KPiArCWlmIChsb2FkX3N0YXRlLT5tZW1idXNfbG9h ZCA+IFNaXzFHICsgU1pfNTEyTSkKPiArCQlyZXR1cm4gLUVOT1NQQzsKPiArCj4gKwkvKiBIVlMg Y2xvY2sgaXMgc3VwcG9zZWQgdG8gcnVuIEAgMjUwTWh6LCBsZXQncyB0YWtlIGEgbWFyZ2luIGFu ZAo+ICsJICogY29uc2lkZXIgdGhlIG1heGltdW0gbnVtYmVyIG9mIGN5Y2xlcyBpcyAyNDBNLgo+ ICsJICovCj4gKwlpZiAobG9hZF9zdGF0ZS0+aHZzX2xvYWQgPiAyNDAwMDAwMDBVTEwpCj4gKwkJ cmV0dXJuIC1FTk9TUEM7CgpFSU5WQUwgaXMgZm9yIGF0b21pY19jaGVjayBmYWlsdXJlcy4gRU5P U1BDIGlzbid0IG9uZSBvZiB0aGUgcGVybWl0dGVkCmVycm5vIGNvZGVzLCBzZWUgdGhlIGtlcm5l bC1kb2MgZm9yICZkcm1fbW9kZV9jb25maWdfZnVuY3MuYXRvbWljX2NoZWNrLgphdG9taWNfY29t bWl0IGhhcyBhIGRpZmZlcmVudCBzZXQgb2YgcGVybWlzc2libGUgZXJybm8gY29kZXMuCgpXZSBz aG91bGQgcHJvYmFibHkgZW5mb3JjZSB0aGlzIGluIGRybSBjb3JlIC4uLgotRGFuaWVsCgo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9wcml2YXRlX3N0YXRl ICoKPiArdmM0X2xvYWRfdHJhY2tlcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRl X29iaiAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgdmM0X2xvYWRfdHJhY2tlcl9zdGF0ZSAqc3RhdGU7 Cj4gKwo+ICsJc3RhdGUgPSBrbWVtZHVwKG9iai0+c3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBf S0VSTkVMKTsKPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJX19kcm1f YXRvbWljX2hlbHBlcl9wcml2YXRlX29ial9kdXBsaWNhdGVfc3RhdGUob2JqLCAmc3RhdGUtPmJh c2UpOwo+ICsKPiArCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHZjNF9sb2FkX3RyYWNrZXJfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpv YmosCj4gKwkJCQkJICAgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJ c3RydWN0IHZjNF9sb2FkX3RyYWNrZXJfc3RhdGUgKmxvYWRfc3RhdGU7Cj4gKwo+ICsJbG9hZF9z dGF0ZSA9IHRvX3ZjNF9sb2FkX3RyYWNrZXJfc3RhdGUoc3RhdGUpOwo+ICsJa2ZyZWUobG9hZF9z dGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVf ZnVuY3MgdmM0X2xvYWRfdHJhY2tlcl9zdGF0ZV9mdW5jcyA9IHsKPiArCS5hdG9taWNfZHVwbGlj YXRlX3N0YXRlID0gdmM0X2xvYWRfdHJhY2tlcl9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWlj X2Rlc3Ryb3lfc3RhdGUgPSB2YzRfbG9hZF90cmFja2VyX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4g Kwo+ICBzdGF0aWMgaW50Cj4gIHZjNF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gQEAgLTM4OCw3ICs0NzUs MTEgQEAgdmM0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAlpZiAocmV0IDwgMCkKPiAgCQlyZXR1cm4gcmV0Owo+ ICAKPiAtCXJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhkZXYsIHN0YXRlKTsKPiArCXJl dCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKGRldiwgc3RhdGUpOwo+ICsJaWYgKHJldCkKPiAr CQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldHVybiB2YzRfbG9hZF90cmFja2VyX2F0b21pY19jaGVj ayhzdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmln X2Z1bmNzIHZjNF9tb2RlX2Z1bmNzID0gewo+IEBAIC00MDEsNiArNDkyLDcgQEAgaW50IHZjNF9r bXNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgdmM0X2RldiAq dmM0ID0gdG9fdmM0X2RldihkZXYpOwo+ICAJc3RydWN0IHZjNF9jdG1fc3RhdGUgKmN0bV9zdGF0 ZTsKPiArCXN0cnVjdCB2YzRfbG9hZF90cmFja2VyX3N0YXRlICpsb2FkX3N0YXRlOwo+ICAJaW50 IHJldDsKPiAgCj4gIAlzZW1hX2luaXQoJnZjNC0+YXN5bmNfbW9kZXNldCwgMSk7Cj4gQEAgLTQy Niw5ICs1MTgsMTkgQEAgaW50IHZjNF9rbXNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJY3RtX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmN0bV9zdGF0ZSksIEdGUF9LRVJORUwpOwo+ ICAJaWYgKCFjdG1fc3RhdGUpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICAJZHJtX2F0b21p Y19wcml2YXRlX29ial9pbml0KCZ2YzQtPmN0bV9tYW5hZ2VyLCAmY3RtX3N0YXRlLT5iYXNlLAo+ ICAJCQkJICAgICZ2YzRfY3RtX3N0YXRlX2Z1bmNzKTsKPiAgCj4gKwlsb2FkX3N0YXRlID0ga3ph bGxvYyhzaXplb2YoKmxvYWRfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghbG9hZF9zdGF0 ZSkgewo+ICsJCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfZmluaSgmdmM0LT5jdG1fbWFuYWdlcik7 Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICsJZHJtX2F0b21pY19wcml2YXRlX29i al9pbml0KCZ2YzQtPmxvYWRfdHJhY2tlciwgJmxvYWRfc3RhdGUtPmJhc2UsCj4gKwkJCQkgICAg JnZjNF9sb2FkX3RyYWNrZXJfc3RhdGVfZnVuY3MpOwo+ICsKPiAgCWRybV9tb2RlX2NvbmZpZ19y ZXNldChkZXYpOwo+ICAKPiAgCWRybV9rbXNfaGVscGVyX3BvbGxfaW5pdChkZXYpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfcGxhbmUuYwo+IGluZGV4IDYwZDVhZDE5Y2VkZC4uZjQ3ZDM4MzgzYTJmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3BsYW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9wbGFuZS5jCj4gQEAgLTQ1NSw2ICs0NTUsNjQgQEAgc3RhdGljIHZv aWQgdmM0X3dyaXRlX3NjYWxpbmdfcGFyYW1ldGVycyhzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpz dGF0ZSwKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgdmM0X3BsYW5lX2NhbGNfbG9hZChz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJdW5zaWduZWQgaW50IGh2c19s b2FkX3NoaWZ0LCB2cmVmcmVzaCwgaTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g c3RhdGUtPmZiOwo+ICsJc3RydWN0IHZjNF9wbGFuZV9zdGF0ZSAqdmM0X3N0YXRlOwo+ICsJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJdW5zaWduZWQgaW50IHZzY2FsZV9m YWN0b3I7Cj4gKwo+ICsJdmM0X3N0YXRlID0gdG9fdmM0X3BsYW5lX3N0YXRlKHN0YXRlKTsKPiAr CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLT5z dGF0ZSwKPiArCQkJCQkJCXN0YXRlLT5jcnRjKTsKPiArCXZyZWZyZXNoID0gZHJtX21vZGVfdnJl ZnJlc2goJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwo+ICsKPiArCS8qIFRoZSBIVlMgaXMg YWJsZSB0byBwcm9jZXNzIDIgcGl4ZWxzL2N5Y2xlIHdoZW4gc2NhbGluZyB0aGUgc291cmNlLAo+ ICsJICogNCBwaXhlbHMvY3ljbGUgb3RoZXJ3aXNlLgo+ICsJICogQWxwaGEgYmxlbmRpbmcgc3Rl cCBzZWVtcyB0byBiZSBwaXBlbGluZWQgYW5kIGl0J3MgYWx3YXlzIG9wZXJhdGluZwo+ICsJICog YXQgNCBwaXhlbHMvY3ljbGUsIHNvIHRoZSBsaW1pdGluZyBhc3BlY3QgaGVyZSBzZWVtcyB0byBi ZSB0aGUKPiArCSAqIHNjYWxlciBibG9jay4KPiArCSAqIEhWUyBsb2FkIGlzIGV4cHJlc3NlZCBp biBjbGstY3ljbGVzL3NlYyAoQUtBIEh6KS4KPiArCSAqLwo+ICsJaWYgKHZjNF9zdGF0ZS0+eF9z Y2FsaW5nWzBdICE9IFZDNF9TQ0FMSU5HX05PTkUgfHwKPiArCSAgICB2YzRfc3RhdGUtPnhfc2Nh bGluZ1sxXSAhPSBWQzRfU0NBTElOR19OT05FIHx8Cj4gKwkgICAgdmM0X3N0YXRlLT55X3NjYWxp bmdbMF0gIT0gVkM0X1NDQUxJTkdfTk9ORSB8fAo+ICsJICAgIHZjNF9zdGF0ZS0+eV9zY2FsaW5n WzFdICE9IFZDNF9TQ0FMSU5HX05PTkUpCj4gKwkJaHZzX2xvYWRfc2hpZnQgPSAxOwo+ICsJZWxz ZQo+ICsJCWh2c19sb2FkX3NoaWZ0ID0gMjsKPiArCj4gKwl2YzRfc3RhdGUtPm1lbWJ1c19sb2Fk ID0gMDsKPiArCXZjNF9zdGF0ZS0+aHZzX2xvYWQgPSAwOwo+ICsJZm9yIChpID0gMDsgaSA8IGZi LT5mb3JtYXQtPm51bV9wbGFuZXM7IGkrKykgewo+ICsJCXVuc2lnbmVkIGxvbmcgcGl4ZWxzX2xv YWQ7Cj4gKwo+ICsJCS8qIEV2ZW4gaWYgdGhlIGJhbmR3aWR0aC9wbGFuZSByZXF1aXJlZCBmb3Ig YSBzaW5nbGUgZnJhbWUgaXMKPiArCQkgKgo+ICsJCSAqIHZjNF9zdGF0ZS0+c3JjX3dbaV0gKiB2 YzRfc3RhdGUtPnNyY19oW2ldICogY3BwICogdnJlZnJlc2gKPiArCQkgKgo+ICsJCSAqIHdoZW4g ZG93bnNjYWxpbmcsIHdlIGhhdmUgdG8gcmVhZCBtb3JlIHBpeGVscyBwZXIgbGluZSBpbgo+ICsJ CSAqIHRoZSB0aW1lIGZyYW1lIHJlc2VydmVkIGZvciBhIHNpbmdsZSBsaW5lLCBzbyB0aGUgYmFu ZHdpZHRoCj4gKwkJICogZGVtYW5kIGNhbiBiZSBwdW5jdHVhbGx5IGhpZ2hlci4gVG8gYWNjb3Vu dCBmb3IgdGhhdCwgd2UKPiArCQkgKiBjYWxjdWxhdGUgdGhlIGRvd24tc2NhbGluZyBmYWN0b3Ig YW5kIG11bHRpcGx5IHRoZSBwbGFuZQo+ICsJCSAqIGxvYWQgYnkgdGhpcyBudW1iZXIuIFdlJ3Jl IGxpa2VseSBvdmVyLWVzdGltYXRpbmcgdGhlIHJlYWQKPiArCQkgKiBkZW1hbmQsIGJ1dCB0aGF0 J3MgYmV0dGVyIHRoYW4gdW5kZXItZXN0aW1hdGluZyBpdC4KPiArCQkgKi8KPiArCQl2c2NhbGVf ZmFjdG9yID0gRElWX1JPVU5EX1VQKHZjNF9zdGF0ZS0+c3JjX2hbaV0sCj4gKwkJCQkJICAgICB2 YzRfc3RhdGUtPmNydGNfaCk7Cj4gKwkJcGl4ZWxzX2xvYWQgPSB2YzRfc3RhdGUtPnNyY193W2ld ICogdmM0X3N0YXRlLT5zcmNfaFtpXSAqCj4gKwkJCSAgICAgIHZzY2FsZV9mYWN0b3I7Cj4gKwo+ ICsJCXZjNF9zdGF0ZS0+bWVtYnVzX2xvYWQgKz0gZmItPmZvcm1hdC0+Y3BwW2ldICogcGl4ZWxz X2xvYWQ7Cj4gKwkJdmM0X3N0YXRlLT5odnNfbG9hZCArPSBwaXhlbHNfbG9hZDsKPiArCX0KPiAr Cj4gKwl2YzRfc3RhdGUtPmh2c19sb2FkICo9IHZyZWZyZXNoOwo+ICsJdmM0X3N0YXRlLT5odnNf bG9hZCA+Pj0gaHZzX2xvYWRfc2hpZnQ7Cj4gKwl2YzRfc3RhdGUtPm1lbWJ1c19sb2FkICo9IHZy ZWZyZXNoOwo+ICt9Cj4gKwo+ICAvKiBXcml0ZXMgb3V0IGEgZnVsbCBkaXNwbGF5IGxpc3QgZm9y IGFuIGFjdGl2ZSBwbGFuZSB0byB0aGUgcGxhbmUncwo+ICAgKiBwcml2YXRlIGRsaXN0IHN0YXRl Lgo+ICAgKi8KPiBAQCAtNzIyLDYgKzc4MCw4IEBAIHN0YXRpYyBpbnQgdmM0X3BsYW5lX21vZGVf c2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJdmM0X3N0YXRlLT5uZWVkc19iZ19maWxs ID0gZmItPmZvcm1hdC0+aGFzX2FscGhhIHx8ICFjb3ZlcnNfc2NyZWVuIHx8Cj4gIAkJCQkgICBz dGF0ZS0+YWxwaGEgIT0gRFJNX0JMRU5EX0FMUEhBX09QQVFVRTsKPiAgCj4gKwl2YzRfcGxhbmVf Y2FsY19sb2FkKHN0YXRlKTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtLSAKPiAyLjE0 LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK