From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mihail Atanassov Subject: Re: [PATCH 1/2] drm/arm: Factor out generic afbc helpers Date: Mon, 21 Oct 2019 14:41:22 +0000 Message-ID: <2485717.1SzL54aMiy@e123338-lin> References: <20191011111813.20851-1-andrzej.p@collabora.com> <20191011111813.20851-2-andrzej.p@collabora.com> <20191021135013.GA16072@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191021135013.GA16072@arm.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ayan Halder Cc: nd , David Airlie , Liviu Dudau , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Andrzej Pietrasiewicz , "linux-rockchip@lists.infradead.org" , "james qian wang (Arm Technology China)" , "kernel@collabora.com" , Sean Paul , "linux-arm-kernel@lists.infradead.org" List-Id: linux-rockchip.vger.kernel.org SGkgQW5kcnplaiwKCk9uIE1vbmRheSwgMjEgT2N0b2JlciAyMDE5IDE0OjUwOjE0IEJTVCBBeWFu IEhhbGRlciB3cm90ZToKPiBPbiBGcmksIE9jdCAxMSwgMjAxOSBhdCAwMToxODoxMFBNICswMjAw LCBBbmRyemVqIFBpZXRyYXNpZXdpY3ogd3JvdGU6Cj4gPiBUaGVzZSBhcmUgdXNlZnVsIGZvciBv dGhlciB1c2VycyBvZiBhZmJjLCBlLmcuIHJvY2tjaGlwLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5 OiBBbmRyemVqIFBpZXRyYXNpZXdpY3ogPGFuZHJ6ZWoucEBjb2xsYWJvcmEuY29tPgo+IAo+IEhp IEFuZHJ6ZWosCj4gCj4gVGhhbmtzIGEgbG90IGZvciBkb2luZyB0aGlzLiBNdWNoIGFwcHJlY2lh dGVkLiA6KQo+IEl0IHdhcyBvbiBvdXIgVE9ETyBsaXN0IGZvciBhIGxvbmcgdGltZS4KClNlY29u ZGVkLCB0aGFua3MgZm9yIHRoZSBwYXRjaCEKCj4gCj4gSSBoYXZlIGNjLWVkIGphbWVzLnFpYW4u d2FuZ0Bhcm0uY29tLCBNaWhhaWwuQXRhbmFzc292QGFybS5jb20gZm9yCj4gdGhlaXIgY29tbWVu dHMgYXMgd2VsbC4KPiAKPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAg ICAgIHwgICA0ICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgfCAgIDEg Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZyAgICAgIHwgICAxICsKPiA+ICBkcml2 ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYyB8ICA1OCArKy0tLS0tLS0tLS0tLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9hZmJjLmMgICAgICAgfCAxMTQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ID4gIGluY2x1ZGUvZHJtL2RybV9hZmJjLmggICAgICAgICAgIHwgIDI1 ICsrKysrKysKPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDE0OSBpbnNlcnRpb25zKCspLCA1NCBkZWxl dGlvbnMoLSkKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9hZmJj LmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX2FmYmMuaAo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v S2NvbmZpZwo+ID4gaW5kZXggM2M4ODQyMGUzNDk3Li4wMGUzZjkwNTU3ZjQgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKPiA+IEBAIC0xOTUsNiArMTk1LDEwIEBAIGNvbmZpZyBEUk1fU0NIRUQKPiA+ICAJdHJp c3RhdGUKPiA+ICAJZGVwZW5kcyBvbiBEUk0KPiA+ICAKPiA+ICtjb25maWcgRFJNX0FGQkMKPiA+ ICsJdHJpc3RhdGUKPiA+ICsJZGVwZW5kcyBvbiBEUk0KPiBBZGRpbmcgYSAnaGVscCcgd291bGQg YmUgZ3JlYXQgaGVyZS4gU3RlYWxpbmcgdGhlIGZpcnN0IGxpbmUgZnJvbQo+IGh0dHBzOi8vd3d3 Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L2dwdS9hZmJjLmh0bWwKPiAKPiAiQUZCQyBpcyBh IHByb3ByaWV0YXJ5IGxvc3NsZXNzIGltYWdlIGNvbXByZXNzaW9uIHByb3RvY29sIGFuZCBmb3Jt YXQuCj4gSXQgcHJvdmlkZXMgZmluZS1ncmFpbmVkIHJhbmRvbSBhY2Nlc3MgYW5kIG1pbmltaXpl cyB0aGUgYW1vdW50IG9mCj4gZGF0YSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIElQIGJsb2Nrcy4iCj4g Cj4gPiArCj4gPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWciCj4gPiAgCj4g PiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYXJtL0tjb25maWciCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiBp bmRleCA5ZjBkMmVlMzU3OTQuLjU1MzY4YjY2ODM1NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiBA QCAtMzEsNiArMzEsNyBAQCBkcm0tJChDT05GSUdfT0YpICs9IGRybV9vZi5vCj4gPiAgZHJtLSQo Q09ORklHX0FHUCkgKz0gZHJtX2FncHN1cHBvcnQubwo+ID4gIGRybS0kKENPTkZJR19ERUJVR19G UykgKz0gZHJtX2RlYnVnZnMubyBkcm1fZGVidWdmc19jcmMubwo+ID4gIGRybS0kKENPTkZJR19E Uk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KPiA+ICtkcm0tJChDT05G SUdfRFJNX0FGQkMpICs9IGRybV9hZmJjLm8KPiA+ICAKPiA+ICBkcm1fdnJhbV9oZWxwZXIteSA6 PSBkcm1fZ2VtX3ZyYW1faGVscGVyLm8gXAo+ID4gIAkJICAgICBkcm1fdnJhbV9oZWxwZXJfY29t bW9uLm8gXAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZwo+ID4gaW5kZXggYTIwNDEwM2IzZWZiLi4yNWMzZGM0 MDhjZGEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL0tjb25maWcKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZwo+ID4gQEAgLTI5LDYgKzI5LDcgQEAgY29u ZmlnIERSTV9NQUxJX0RJU1BMQVkKPiA+ICAJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4gPiAgCXNl bGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKPiA+ICAJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUgo+ ID4gKwlzZWxlY3QgRFJNX0FGQkMKPiA+ICAJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCj4gPiAg CWhlbHAKPiA+ICAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gY29tcGlsZSB0 aGUgQVJNIE1hbGkgRGlzcGxheQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v bWFsaWRwX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmMKPiA+IGluZGV4 IGYyNWVjNDM4MjI3Ny4uYTY3YjY5ZTA4ZjYzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FybS9tYWxpZHBfZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRw X2Rydi5jCgpUaGlzIGZpbGUgaXMgR1BMLTIuMC1vbmx5LiBTaG91bGRuJ3QgdGhpcyBiZSBwcmVz ZXJ2ZWQgd2hlbiB0aGUKc3Vic3RhbnRpdmUgYml0IG9mIHRoZSBjb2RlIGluIGRybV9hZmJjLmMg Y29tZXMgZnJvbSBoZXJlPwoKPiA+IEBAIC0xNiw2ICsxNiw3IEBACj4gPiAgI2luY2x1ZGUgPGxp bnV4L2RlYnVnZnMuaD4KPiA+ICAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiA+ICsjaW5j bHVkZSA8ZHJtL2RybV9hZmJjLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4g PiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gICNpbmNsdWRlIDxkcm0v ZHJtX2NydGMuaD4KPiA+IEBAIC0zMyw4ICszNCw2IEBACj4gPiAgI2luY2x1ZGUgIm1hbGlkcF9o dy5oIgo+ID4gIAo+ID4gICNkZWZpbmUgTUFMSURQX0NPTkZfVkFMSURfVElNRU9VVAkyNTAKPiA+ IC0jZGVmaW5lIEFGQkNfSEVBREVSX1NJWkUJCTE2Cj4gPiAtI2RlZmluZSBBRkJDX1NVUEVSQkxL X0FMSUdOTUVOVAkJMTI4Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgbWFsaWRwX3dyaXRlX2dhbW1h X3RhYmxlKHN0cnVjdCBtYWxpZHBfaHdfZGV2aWNlICpod2RldiwKPiA+ICAJCQkJICAgICB1MzIg ZGF0YVtNQUxJRFBfQ09FRkZUQUJfTlVNX0NPRUZGU10pCj4gPiBAQCAtMjc1LDI0ICsyNzQsOCBA QCBtYWxpZHBfdmVyaWZ5X2FmYmNfZnJhbWVidWZmZXJfY2FwcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gIAkJCQkJbW9kZV9jbWQtPm1vZGlmaWVyWzBdKSA9PSBmYWxzZSkKPiA+ICAJCXJl dHVybiBmYWxzZTsKPiA+ICAKPiA+IC0JaWYgKG1vZGVfY21kLT5vZmZzZXRzWzBdICE9IDApIHsK PiA+IC0JCURSTV9ERUJVR19LTVMoIkFGQkMgYnVmZmVycycgcGxhbmUgb2Zmc2V0IHNob3VsZCBi ZSAwXG4iKTsKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlzd2l0Y2gg KG1vZGVfY21kLT5tb2RpZmllclswXSAmIEFGQkNfU0laRV9NQVNLKSB7Cj4gPiAtCWNhc2UgQUZC Q19TSVpFXzE2WDE2Ogo+ID4gLQkJaWYgKChtb2RlX2NtZC0+d2lkdGggJSAxNikgfHwgKG1vZGVf Y21kLT5oZWlnaHQgJSAxNikpIHsKPiA+IC0JCQlEUk1fREVCVUdfS01TKCJBRkJDIGJ1ZmZlcnMg bXVzdCBiZSBhbGlnbmVkIHRvIDE2IHBpeGVsc1xuIik7Cj4gPiAtCQkJcmV0dXJuIGZhbHNlOwo+ ID4gLQkJfQo+ID4gLQkJYnJlYWs7Cj4gPiAtCWRlZmF1bHQ6Cj4gPiAtCQlEUk1fREVCVUdfS01T KCJVbnN1cHBvcnRlZCBBRkJDIGJsb2NrIHNpemVcbiIpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ ID4gLQl9Cj4gPiAtCj4gPiAtCXJldHVybiB0cnVlOwo+ID4gKwlyZXR1cm4gZHJtX2FmYmNfY2hl Y2tfb2Zmc2V0KGRldiwgbW9kZV9jbWQpICYmCj4gPiArCSAgICAgICBkcm1fYWZiY19jaGVja19z aXplX2FsaWduKGRldiwgbW9kZV9jbWQpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgYm9vbAo+ ID4gQEAgLTMwMCw1MyArMjgzLDIwIEBAIG1hbGlkcF92ZXJpZnlfYWZiY19mcmFtZWJ1ZmZlcl9z aXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUsCj4gPiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9j bWQpCj4gPiAgewo+ID4gLQlpbnQgbl9zdXBlcmJsb2NrcyA9IDA7Cj4gPiAgCWNvbnN0IHN0cnVj dCBkcm1fZm9ybWF0X2luZm8gKmluZm87Cj4gPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq cyA9IE5VTEw7Cj4gPiAtCXUzMiBhZmJjX3N1cGVyYmxvY2tfc2l6ZSA9IDAsIGFmYmNfc3VwZXJi bG9ja19oZWlnaHQgPSAwOwo+ID4gLQl1MzIgYWZiY19zdXBlcmJsb2NrX3dpZHRoID0gMCwgYWZi Y19zaXplID0gMDsKPiA+ICAJaW50IGJwcCA9IDA7Cj4gPiAgCj4gPiAtCXN3aXRjaCAobW9kZV9j bWQtPm1vZGlmaWVyWzBdICYgQUZCQ19TSVpFX01BU0spIHsKPiA+IC0JY2FzZSBBRkJDX1NJWkVf MTZYMTY6Cj4gPiAtCQlhZmJjX3N1cGVyYmxvY2tfaGVpZ2h0ID0gMTY7Cj4gPiAtCQlhZmJjX3N1 cGVyYmxvY2tfd2lkdGggPSAxNjsKPiA+IC0JCWJyZWFrOwo+ID4gLQlkZWZhdWx0Ogo+ID4gLQkJ RFJNX0RFQlVHX0tNUygiQUZCQyBzdXBlcmJsb2NrIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIik7 Cj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiAtCX0KPiA+IC0KPiA+ICAJaW5mbyA9IGRybV9nZXRf Zm9ybWF0X2luZm8oZGV2LCBtb2RlX2NtZCk7Cj4gPiAtCj4gPiAtCW5fc3VwZXJibG9ja3MgPSAo bW9kZV9jbWQtPndpZHRoIC8gYWZiY19zdXBlcmJsb2NrX3dpZHRoKSAqCj4gPiAtCQkobW9kZV9j bWQtPmhlaWdodCAvIGFmYmNfc3VwZXJibG9ja19oZWlnaHQpOwo+ID4gLQo+ID4gIAlicHAgPSBt YWxpZHBfZm9ybWF0X2dldF9icHAoaW5mby0+Zm9ybWF0KTsKPiA+ICAKPiA+IC0JYWZiY19zdXBl cmJsb2NrX3NpemUgPSAoYnBwICogYWZiY19zdXBlcmJsb2NrX3dpZHRoICogYWZiY19zdXBlcmJs b2NrX2hlaWdodCkKPiA+IC0JCQkJLyBCSVRTX1BFUl9CWVRFOwo+ID4gLQo+ID4gLQlhZmJjX3Np emUgPSBBTElHTihuX3N1cGVyYmxvY2tzICogQUZCQ19IRUFERVJfU0laRSwgQUZCQ19TVVBFUkJM S19BTElHTk1FTlQpOwo+ID4gLQlhZmJjX3NpemUgKz0gbl9zdXBlcmJsb2NrcyAqIEFMSUdOKGFm YmNfc3VwZXJibG9ja19zaXplLCBBRkJDX1NVUEVSQkxLX0FMSUdOTUVOVCk7Cj4gPiAtCj4gPiAt CWlmICgobW9kZV9jbWQtPndpZHRoICogYnBwKSAhPSAobW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBC SVRTX1BFUl9CWVRFKSkgewo+ID4gLQkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCB2YWx1ZSBvZiAo cGl0Y2ggKiBCSVRTX1BFUl9CWVRFKSAoPSV1KSAiCj4gPiAtCQkJICAgICAgInNob3VsZCBiZSBz YW1lIGFzIHdpZHRoICg9JXUpICogYnBwICg9JXUpXG4iLAo+ID4gLQkJCSAgICAgIChtb2RlX2Nt ZC0+cGl0Y2hlc1swXSAqIEJJVFNfUEVSX0JZVEUpLAo+ID4gLQkJCSAgICAgIG1vZGVfY21kLT53 aWR0aCwgYnBwKTsKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+IC0JfQo+ID4gLQo+ID4gIAlvYmpz ID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGUsIG1vZGVfY21kLT5oYW5kbGVzWzBdKTsKPiA+ ICAJaWYgKCFvYmpzKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gbG9va3VwIEdF TSBvYmplY3RcbiIpOwo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWlm IChvYmpzLT5zaXplIDwgYWZiY19zaXplKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJidWZmZXIg c2l6ZSAoJXp1KSB0b28gc21hbGwgZm9yIEFGQkMgYnVmZmVyIHNpemUgPSAldVxuIiwKPiA+IC0J CQkgICAgICBvYmpzLT5zaXplLCBhZmJjX3NpemUpOwo+ID4gKwlpZiAoIWRybV9hZmJjX2NoZWNr X2ZiX3NpemUoZGV2LCBtb2RlX2NtZCwgb2JqcywgYnBwKSkgewo+ID4gIAkJZHJtX2dlbV9vYmpl Y3RfcHV0X3VubG9ja2VkKG9ianMpOwo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gQWxz byBjYW4geW91IGRvIHRoZSBjb2RlIHJlZmFjdG9yaW5nIGZvciBrb21lZGEgZHJpdmVyIGFzIHdl bGwuCj4gc3BlY2lmaWNhbGx5IGtvbWVkYV9mYl9hZmJjX3NpemVfY2hlY2soKS4gSSB3aWxsIGxl dAo+IGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tIGFuZCBNaWhhaWwuQXRhbmFzc292QGFybS5jb20g aGF2ZSB0aGVpcgo+IG9waW5pb24gb24gdGhpcy4KCkknZCBzYXkgdGhhdCBpdCdkIGJlIHJlYWxs eSBuaWNlIHRvIGdldCB0aGlzIHdvcmsgZG9uZSBmb3IgdXMgOykKYnV0IGl0IGRvZXNuJ3QgaGF2 ZSB0byBiZSBpbiB0aGlzIHBhdGNoIGJ1dCByYXRoZXIgaW4gYSBmb2xsb3ctdXAuCgo+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hZmJjLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjNlOGE5MjI1ZmQyZQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hZmJjLmMKPiA+IEBAIC0wLDAgKzEsMTE0IEBACj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjArCj4gPiArLyoKPiA+ICsgKiAoQykgMjAxOSBDb2xsYWJvcmEg THRkLgo+ID4gKyAqCj4gPiArICogYXV0aG9yOiBBbmRyemVqIFBpZXRyYXNpZXdpY3ogPGFuZHJ6 ZWoucEBjb2xsYWJvcmEuY29tPgo+ID4gKyAqCj4gPiArICovCj4gPiArI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2FmYmMuaD4KPiA+ICsjaW5j bHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4K PiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rl Lmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiA+ICsKPiA+ICsjZGVmaW5lIEFG QkNfSEVBREVSX1NJWkUJCTE2Cj4gPiArI2RlZmluZSBBRkJDX1NVUEVSQkxLX0FMSUdOTUVOVAkJ MTI4Cj4gPiArCj4gPiArYm9vbCBkcm1fYWZiY19jaGVja19vZmZzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+ICsJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9j bWQpCj4gPiArewo+ID4gKwlpZiAobW9kZV9jbWQtPm9mZnNldHNbMF0gIT0gMCkgewo+ID4gKwkJ RFJNX0RFQlVHX0tNUygiQUZCQyBidWZmZXJzJyBwbGFuZSBvZmZzZXQgc2hvdWxkIGJlIDBcbiIp Owo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYWZiY19jaGVja19vZmZzZXQpOwo+ID4g Kwo+ID4gK2Jvb2wgZHJtX2FmYmNfY2hlY2tfc2l6ZV9hbGlnbihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9j bWQpCj4gPiArewo+ID4gKwo+ID4gKwlzd2l0Y2ggKG1vZGVfY21kLT5tb2RpZmllclswXSAmIEFG QkNfRk9STUFUX01PRF9CTE9DS19TSVpFX01BU0spIHsKPiA+ICsJY2FzZSBBRkJDX0ZPUk1BVF9N T0RfQkxPQ0tfU0laRV8xNngxNjoKPiA+ICsJCWlmICgobW9kZV9jbWQtPndpZHRoICUgMTYpIHx8 IChtb2RlX2NtZC0+aGVpZ2h0ICUgMTYpKSB7Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygKPiA+ICsJ CQkJIkFGQkMgYnVmZmVyIG11c3QgYmUgYWxpZ25lZCB0byAxNiBwaXhlbHNcbiIKPiA+ICsJCQkp Owo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsJCX0KPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNl IEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzMyeDg6Cj4gPiArCQkvKiBmYWxsIHRocm91Z2gg Ki8KPiA+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV82NHg0Ogo+ID4gKwkJLyog ZmFsbCB0aHJvdWdoICovCj4gPiArCWNhc2UgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfMzJ4 OF82NHg0Ogo+ID4gKwkJLyogZmFsbCB0aHJvdWdoICovCj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlE Uk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBBRkJDIGJsb2NrIHNpemVcbiIpOwo+ID4gKwkJcmV0 dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30KPiA+ICtF WFBPUlRfU1lNQk9MX0dQTChkcm1fYWZiY19jaGVja19zaXplX2FsaWduKTsKPiA+ICsKPiA+ICti b29sIGRybV9hZmJjX2NoZWNrX2ZiX3NpemUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJ CQkgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+ID4gKwkJCSAg ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9ianMsIGludCBicHApCj4gPiArewo+ID4gKwlpbnQg bl9zdXBlcmJsb2NrcyA9IDA7Cj4gPiArCXUzMiBhZmJjX3N1cGVyYmxvY2tfc2l6ZSA9IDAsIGFm YmNfc3VwZXJibG9ja19oZWlnaHQgPSAwOwo+ID4gKwl1MzIgYWZiY19zdXBlcmJsb2NrX3dpZHRo ID0gMCwgYWZiY19zaXplID0gMDsKPiA+ICsKPiA+ICsJc3dpdGNoIChtb2RlX2NtZC0+bW9kaWZp ZXJbMF0gJiBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV9NQVNLKSB7Cj4gPiArCWNhc2UgQUZC Q19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfMTZ4MTY6Cj4gPiArCQlhZmJjX3N1cGVyYmxvY2tfaGVp Z2h0ID0gMTY7Cj4gPiArCQlhZmJjX3N1cGVyYmxvY2tfd2lkdGggPSAxNjsKPiA+ICsJCWJyZWFr Owo+ID4gKwljYXNlIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzMyeDg6Cj4gQ29weWluZyBm cm9tCj4gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9kcm0vZHJtLXRpcC90cmVlL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMjbjYwCj4g ICAgICAgICAgICAgICAgIGFmYmNfc3VwZXJibG9ja193aWR0aCA9IDMyOwo+ICAgICAgICAgICAg ICAgICBhZmJjX3N1cGVyYmxvY2tfaGVpZ2h0ID0gODsKPiA+ICsJCS8qIGZhbGwgdGhyb3VnaCAq Lwo+ID4gKwljYXNlIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzY0eDQ6Cj4gPiArCQkvKiBm YWxsIHRocm91Z2ggKi8KPiA+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8zMng4 XzY0eDQ6Cj4gPiArCQkvKiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJZGVmYXVsdDoKPiA+ICsJCURS TV9ERUJVR19LTVMoIkFGQkMgc3VwZXJibG9jayBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOwo+ ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gQ2FuIHlvdSBjb21iaW5lIHRoZSB0d28gc3dp dGNoIC0gY2FzZSBjb25maXRpb25zIChmcm9tIHRoaXMgZnVuY3Rpb24KPiBhbmQgdGhlIG9uZSBp biBkcm1fYWZiY19jaGVja19zaXplX2FsaWduKCkpIGFuZCBwdXQgaXQgaW4gYSBzZXBhcmF0ZQo+ IGZ1bmN0aW9uIChzYXkgZHJtX2FmYmNfZ2V0X3N1cGVyYmxvY2tfZGltZW5zaW9ucygpKSBvZiBp dHMgb3duID8KPiBUaGlzIHdpbGwgaGVscCB0byBhdm9pZCBjb2RlIHJlcGV0aXRpb24uCj4gCgpJ J20gcGVyc29uYWxseSBhIGJpdCBvbiB0aGUgZmVuY2UgYWJvdXQgdGhpcyAtIGZ1bmN0aW9ucyBz aG91bGQgaWRlYWxseQpkbyBvbmUgdGhpbmcuIFRoYXQgc2hhcmVkIGhlbHBlciB3b3VsZCBiZSBi b3RoIGdldHRpbmcgdGhlIGRpbWVuc2lvbnMKX2FuZF8gY2hlY2tpbmcgdGhlIG1vZGVfY21kIGlz IHZhbGlkLCBzbyBvbmUgcGxhY2UgY2FyZXMgYWJvdXQgb25lIGhhbGYKb2YgdGhlIGZ1bmN0aW9u J3MgcmVzdWx0cywgYW5kIHRoZSBvdGhlciAtIHRoZSBzZWNvbmQgaGFsZi4gwq9cX09fL8KvLApv cGluaW9ucywgZXZlcnlib2R5IGhhcyB0aGVtIDopLgoKPiA+ICsKPiA+ICsJbl9zdXBlcmJsb2Nr cyA9IChtb2RlX2NtZC0+d2lkdGggLyBhZmJjX3N1cGVyYmxvY2tfd2lkdGgpICoKPiA+ICsJCSht b2RlX2NtZC0+aGVpZ2h0IC8gYWZiY19zdXBlcmJsb2NrX2hlaWdodCk7Cj4gPiArCj4gPiArCWFm YmNfc3VwZXJibG9ja19zaXplID0KPiA+ICsJCShicHAgKiBhZmJjX3N1cGVyYmxvY2tfd2lkdGgg KiBhZmJjX3N1cGVyYmxvY2tfaGVpZ2h0KQo+ID4gKwkJCS8gQklUU19QRVJfQllURTsKPiA+ICsK PiA+ICsJYWZiY19zaXplID0gQUxJR04obl9zdXBlcmJsb2NrcyAqIEFGQkNfSEVBREVSX1NJWkUs Cj4gPiArCQkJICBBRkJDX1NVUEVSQkxLX0FMSUdOTUVOVCk7Cj4gPiArCWFmYmNfc2l6ZSArPSBu X3N1cGVyYmxvY2tzICoKPiA+ICsJCUFMSUdOKGFmYmNfc3VwZXJibG9ja19zaXplLCBBRkJDX1NV UEVSQkxLX0FMSUdOTUVOVCk7Cj4gPiArCj4gPiArCWlmICgobW9kZV9jbWQtPndpZHRoICogYnBw KSAhPSAobW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBCSVRTX1BFUl9CWVRFKSkgewo+ID4gKwkJRFJN X0RFQlVHX0tNUygiSW52YWxpZCB2YWx1ZSBvZiAocGl0Y2ggKiBCSVRTX1BFUl9CWVRFKSAoPSV1 KSBzaG91bGQgYmUgc2FtZSBhcyB3aWR0aCAoPSV1KSAqIGJwcCAoPSV1KVxuIiwKPiA+ICsJCQlt b2RlX2NtZC0+cGl0Y2hlc1swXSAqIEJJVFNfUEVSX0JZVEUsCj4gPiArCQkJbW9kZV9jbWQtPndp ZHRoLCBicHAKPiA+ICsJCSk7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJaWYgKG9ianMtPnNpemUgPCBhZmJjX3NpemUpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoImJ1 ZmZlciBzaXplICglenUpIHRvbyBzbWFsbCBmb3IgQUZCQyBidWZmZXIgc2l6ZSA9ICV1XG4iLAo+ ID4gKwkJCW9ianMtPnNpemUsIGFmYmNfc2l6ZQo+ID4gKwkJKTsKPiA+ICsKPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiArRVhQ T1JUX1NZTUJPTChkcm1fYWZiY19jaGVja19mYl9zaXplKTsKPiA+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fYWZiYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2FmYmMuaAo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uY2UzOWM4NTAyMTdiCj4gPiAtLS0g L2Rldi9udWxsCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYWZiYy5oCj4gPiBAQCAtMCwwICsx LDI1IEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCj4gPiAr LyoKPiA+ICsgKiAoQykgMjAxOSBDb2xsYWJvcmEgTHRkLgo+ID4gKyAqCj4gPiArICogYXV0aG9y OiBBbmRyemVqIFBpZXRyYXNpZXdpY3ogPGFuZHJ6ZWoucEBjb2xsYWJvcmEuY29tPgo+ID4gKyAq Cj4gPiArICovCj4gPiArI2lmbmRlZiBfX0RSTV9BRkJDX0hfXwo+ID4gKyNkZWZpbmUgX19EUk1f QUZCQ19IX18KPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX2RldmljZTsKPiA+ICtzdHJ1Y3QgZHJtX21v ZGVfZmJfY21kMjsKPiA+ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7Cj4gPiArCj4gPiArYm9vbCBk cm1fYWZiY19jaGVja19vZmZzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJCQkgICBj b25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpOwo+ID4gKwo+ID4gK2Jvb2wg ZHJtX2FmYmNfY2hlY2tfc2l6ZV9hbGlnbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gKwkJ CSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpOwo+ID4gKwo+ ID4gK2Jvb2wgZHJtX2FmYmNfY2hlY2tfZmJfc2l6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ID4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCj4gPiAr CQkJICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqcywgaW50IGJwcCk7Cj4gPiArCj4gPiAr I2VuZGlmIC8qIF9fRFJNX0FGQkNfSF9fICovCj4gPiAtLQo+ID4gMi4xNy4xCj4gPiAKPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBkcmktZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ IAoKT3ZlcmFsbCB0aGUgcGF0Y2ggTEdUTSBhcy1pcywgbmljZSBhbmQgc3RyYWlnaHRmb3J3YXJk Cm1vc3RseS1jdXQtbi1wYXN0ZSwganVzdCBsZXQncyBzb3J0IG91dCB0aGUgU1BEWCBpZGVudGlm aWVyIHF1ZXN0aW9uCkkgaGF2ZSwgdGhlbiBJJ2xsIGJlIGhhcHB5LgoKLS0gCk1paGFpbAoKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=