From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: Re: [PATCHv3/RFC 1/4] drm/arm: Factor out generic afbc helpers Date: Thu, 28 Nov 2019 10:47:58 +0000 Message-ID: <20191128104751.GA3121@jamwan02-TSP300> References: <20191119083429.GA2881@jamwan02-TSP300> <20191121172247.31150-1-andrzej.p@collabora.com> <20191121172247.31150-2-andrzej.p@collabora.com> <20191125085506.GA29965@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50064.outbound.protection.outlook.com [40.107.5.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5C3EA6E7A3 for ; Thu, 28 Nov 2019 10:48:14 +0000 (UTC) In-Reply-To: <20191125085506.GA29965@phenom.ffwll.local> 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: Daniel Vetter Cc: nd , Ayan Halder , "kernel@collabora.com" , David Airlie , Liviu Dudau , Andrzej Pietrasiewicz , "dri-devel@lists.freedesktop.org" , Mihail Atanassov , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBOb3YgMjUsIDIwMTkgYXQgMDk6NTU6MDZBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAwNjoyMjo0NFBNICswMTAwLCBBbmRyemVq IFBpZXRyYXNpZXdpY3ogd3JvdGU6Cj4gPiBUaGVzZSBhcmUgdXNlZnVsIGZvciBvdGhlciB1c2Vy cyBvZiBhZmJjLCBlLmcuIHJvY2tjaGlwLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyemVq IFBpZXRyYXNpZXdpY3ogPGFuZHJ6ZWoucEBjb2xsYWJvcmEuY29tPgo+ID4gLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgIHwgIDIgKy0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2FmYmMuYyAgICAgICAgfCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYyAgICAgIHwgMTEgKysrLQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYyB8IDcxICsrKysrKysrKysrKysrKysrKysr KysrKystCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2FmYmMuaCAgICAgICAgICAgIHwgMzUgKysrKysr KysrKysrKwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5j Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9hZmJjLmgKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQo+ID4gaW5kZXggZDliY2M5ZjJhMGE0Li4zYTU4ZjMwYjgzYTYgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQo+ID4gQEAgLTQ0LDcgKzQ0LDcgQEAgZHJtX2ttc19oZWxwZXIteSA6PSBkcm1fY3J0 Y19oZWxwZXIubyBkcm1fZHBfaGVscGVyLm8gZHJtX2RzYy5vIGRybV9wcm9iZV9oZWxwZXIKPiA+ ICAJCWRybV9zaW1wbGVfa21zX2hlbHBlci5vIGRybV9tb2Rlc2V0X2hlbHBlci5vIFwKPiA+ICAJ CWRybV9zY2RjX2hlbHBlci5vIGRybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLm8gXAo+ID4gIAkJ ZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIubyBkcm1fZGFtYWdlX2hlbHBlci5vIFwKPiA+IC0JCWRy bV9mb3JtYXRfaGVscGVyLm8gZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIubwo+ID4gKwkJZHJtX2Zv cm1hdF9oZWxwZXIubyBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5vIGRybV9hZmJjLm8KPiAKPiBK dXN0IGEgcXVpY2sgZHJpdmUtYnk6Cj4gLSB5b3UgY2FuJ3QgcHV0IHRoaXMgaW50byBoZWxwZXJz IGFuZCBjYWxsIGZyb20gY29yZSBjb2RlLiBUaGlzIHNob3VsZCBiZQo+ICAgY29yZSBjb2RlLiBB bHNvLCBJJ2QgaGF2ZSBqdXN0IHN0dWZmZWQgaXQgaW50byBkcm1fZm9ybWF0LmMuCj4gCj4gLSBJ ZiB5b3Ugd2FudCB0byBrZWVwIHlvdXIgc2VwYXJhdGUgZmlsZSwgcGxlYXNlIGluY2x1ZGUgaXQg aW4gdGhlIGRvYwo+ICAgdGVtcGxhdGUsIG5leHQgdG8gdGhlIGZvcm1hdCBoYW5kbGluZyBmdW5j dGlvbnMuCj4gPiAgCj4gPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURH RSkgKz0gYnJpZGdlL3BhbmVsLm8KPiA+ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJE RVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2FmYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5jCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mMzA4YzQ3MTk1NDYKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5jCj4gPiBA QCAtMCwwICsxLDg0IEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK PiA+ICsvKgo+ID4gKyAqIChDKSAyMDE5IENvbGxhYm9yYSBMdGQuCj4gPiArICoKPiA+ICsgKiBh dXRob3I6IEFuZHJ6ZWogUGlldHJhc2lld2ljeiA8YW5kcnplai5wQGNvbGxhYm9yYS5jb20+Cj4g PiArICoKPiA+ICsgKi8KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArCj4gPiAr I2luY2x1ZGUgPGRybS9kcm1fYWZiYy5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5o Pgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJt X2dlbS5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KPiA+ICsjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9hZmJjX2dldF9zdXBlcmJs a193aCAtIGV4dHJhY3QgYWZiYyBibG9jayB3aWR0aC9oZWlnaHQgZnJvbSBtb2RpZmllcgo+ID4g KyAqIEBtb2RpZmllcjogdGhlIG1vZGlmaWVyIHRvIGJlIGxvb2tlZCBhdAo+ID4gKyAqIEB3OiBh ZGRyZXNzIG9mIGEgcGxhY2UgdG8gc3RvcmUgdGhlIGJsb2NrIHdpZHRoCj4gPiArICogQGg6IGFk ZHJlc3Mgb2YgYSBwbGFjZSB0byBzdG9yZSB0aGUgYmxvY2sgaGVpZ2h0Cj4gPiArICoKPiA+ICsg KiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBtb2RpZmllciBkZXNjcmliZXMgYSBzdXBwb3J0ZWQgYmxv Y2sgc2l6ZQo+ID4gKyAqLwo+ID4gK2Jvb2wgZHJtX2FmYmNfZ2V0X3N1cGVyYmxrX3doKHU2NCBt b2RpZmllciwgdTMyICp3LCB1MzIgKmgpCj4gPiArewo+ID4gKwlzd2l0Y2ggKG1vZGlmaWVyICYg QUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfTUFTSykgewo+ID4gKwljYXNlIEFGQkNfRk9STUFU X01PRF9CTE9DS19TSVpFXzE2eDE2Ogo+ID4gKwkJKncgPSAxNjsKPiA+ICsJCSpoID0gMTY7Cj4g PiArCQlicmVhazsKPiA+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8zMng4Ogo+ ID4gKwkJKncgPSAzMjsKPiA+ICsJCSpoID0gODsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIEFG QkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzY0eDQ6Cj4gPiArCQkvKiBmYWxsIHRocm91Z2ggKi8K PiA+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8zMng4XzY0eDQ6Cj4gPiArCQkv KiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJZGVmYXVsdDoKPiA+ICsJCURSTV9ERUJVR19LTVMoIklu dmFsaWQgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkU6ICVsbGQuXG4iLAo+ID4gKwkJCSAgICAg IG1vZGlmaWVyICYgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfTUFTSyk7Cj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsJcmV0dXJuIHRydWU7Cj4gPiArfQo+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKGRybV9hZmJjX2dldF9zdXBlcmJsa193aCk7Cj4gPiArCj4gPiArLyoqCj4gPiAr ICogZHJtX2FmYmNfZ2V0X3BhcmFtZXRlcnMgLSBleHRyYWN0IGFmYmMgcGFyYW1ldGVycyBmcm9t IG1vZGUgY29tbWFuZAo+ID4gKyAqIEBtb2RlX2NtZDogbW9kZSBjb21tYW5kIHRvIGJlIGxvb2tl ZCBhdAo+ID4gKyAqIEBhZmJjOiBhZGRyZXNzIG9mIGEgc3RydWN0IHRvIGJlIGZpbGxlZCBpbgo+ ID4gKyAqLwo+ID4gK3ZvaWQgZHJtX2FmYmNfZ2V0X3BhcmFtZXRlcnMoY29uc3Qgc3RydWN0IGRy bV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+ID4gKwkJCSAgICAgc3RydWN0IGRybV9hZmJjICph ZmJjKQo+ID4gK3sKPiA+ICsJZHJtX2FmYmNfZ2V0X3N1cGVyYmxrX3doKG1vZGVfY21kLT5tb2Rp ZmllclswXSwKPiA+ICsJCQkJICZhZmJjLT50aWxlX3csICZhZmJjLT50aWxlX2gpOwo+ID4gKwlh ZmJjLT53aWR0aCA9IG1vZGVfY21kLT5waXRjaGVzWzBdOwo+ID4gKwlhZmJjLT5oZWlnaHQgPQo+ ID4gKwkJRElWX1JPVU5EX1VQKG1vZGVfY21kLT5oZWlnaHQsIGFmYmMtPnRpbGVfaCkgKiBhZmJj LT50aWxlX2g7Cj4gPiArCWFmYmMtPm9mZnNldCA9IG1vZGVfY21kLT5vZmZzZXRzWzBdOwo+ID4g K30KPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9hZmJjX2dldF9wYXJhbWV0ZXJzKTsKPiA+ICsKPiA+ ICsvKioKPiA+ICsgKiBkcm1faXNfYWZiYyAtIHRlc3QgaWYgdGhlIG1vZGlmaWVyIGRlc2NyaWJl cyBhbiBhZmJjIGJ1ZmZlcgo+ID4gKyAqIEBtb2RpZmllciAtIG1vZGlmaWVyIHRvIGJlIHRlc3Rl ZAo+ID4gKyAqCj4gPiArICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgbW9kaWZpZXIgZGVzY3JpYmVz IGFuIGFmYmMgYnVmZmVyCj4gPiArICovCj4gPiArYm9vbCBkcm1faXNfYWZiYyh1NjQgbW9kaWZp ZXIpCj4gPiArewo+ID4gKwkvKiBpcyBpdCBBUk0gQUZCQz8gKi8KPiA+ICsJaWYgKChtb2RpZmll ciAmIERSTV9GT1JNQVRfTU9EX0FSTV9BRkJDKDApKSA9PSAwKQo+ID4gKwkJcmV0dXJuIGZhbHNl Owo+ID4gKwo+ID4gKwkvKiBCbG9jayBzaXplIG11c3QgYmUga25vd24gKi8KPiA+ICsJaWYgKCht b2RpZmllciAmIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFX01BU0spID09IDApCj4gPiArCQly ZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30KPiA+ICtFWFBPUlRf U1lNQk9MX0dQTChkcm1faXNfYWZiYyk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mb3VyY2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiA+IGluZGV4IGM2 MzAwNjRjY2Y0MS4uOGQ5ZjE5N2NjMGFiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9mb3VyY2MuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ID4g QEAgLTI3LDYgKzI3LDcgQEAKPiA+ICAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4gPiAgI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4gIAo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2FmYmMu aD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9mb3VyY2MuaD4KPiA+ICAKPiA+IEBAIC0zMjIsOCArMzIzLDE0IEBAIGRybV9nZXRfZm9ybWF0 X2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICB7Cj4gPiAgCWNvbnN0IHN0cnVjdCBk cm1fZm9ybWF0X2luZm8gKmluZm8gPSBOVUxMOwo+ID4gIAo+ID4gLQlpZiAoZGV2LT5tb2RlX2Nv bmZpZy5mdW5jcy0+Z2V0X2Zvcm1hdF9pbmZvKQo+ID4gLQkJaW5mbyA9IGRldi0+bW9kZV9jb25m aWcuZnVuY3MtPmdldF9mb3JtYXRfaW5mbyhtb2RlX2NtZCk7Cj4gPiArCS8qIGJ5cGFzcyBkcml2 ZXIgY2FsbGJhY2sgaWYgYWZiYyAqLwo+ID4gKwlpZiAoIWRybV9pc19hZmJjKG1vZGVfY21kLT5t b2RpZmllclswXSkpCj4gPiArCQlpZiAoZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+Z2V0X2Zvcm1h dF9pbmZvKSB7Cj4gPiArCQkJY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyAqZnVu Y3M7Cj4gPiArCj4gPiArCQkJZnVuY3MgPSBkZXYtPm1vZGVfY29uZmlnLmZ1bmNzOwo+ID4gKwkJ CWluZm8gPSBmdW5jcy0+Z2V0X2Zvcm1hdF9pbmZvKG1vZGVfY21kKTsKPiA+ICsJCX0KPiA+ICAK PiA+ICAJaWYgKCFpbmZvKQo+ID4gIAkJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhtb2RlX2NtZC0+ cGl4ZWxfZm9ybWF0KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1l YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMKPiA+IGluZGV4IDU3 NTY0MzE4Y2VlYS4uMzAzZWVhNjI0YTAyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9mcmFtZWJ1ZmZlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVm ZmVyLmMKPiA+IEBAIC0yMyw2ICsyMyw3IEBACj4gPiAgI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5o Pgo+ID4gICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cj4gPiAgCj4gPiArI2luY2x1ZGUgPGRy bS9kcm1fYWZiYy5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ID4gICNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY191YXBpLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYXV0aC5o Pgo+ID4gQEAgLTMxLDYgKzMyLDcgQEAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4g PiAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZnJh bWVidWZmZXIuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiA+ICAjaW5jbHVkZSA8 ZHJtL2RybV9wcmludC5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3V0aWwuaD4KPiA+ICAKPiA+ IEBAIC0xNjgsNyArMTcwLDY5IEBAIHN0YXRpYyBpbnQgZmJfcGxhbmVfaGVpZ2h0KGludCBoZWln aHQsCj4gPiAgCXJldHVybiBESVZfUk9VTkRfVVAoaGVpZ2h0LCBmb3JtYXQtPnZzdWIpOwo+ID4g IH0KPiA+ICAKPiA+ICtzdGF0aWMgaW50IGFmYmNfY2hlY2soc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCj4gPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqciwgaW50 IGksCj4gPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvKQo+ID4g K3sKPiA+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiArCWludCBicHAgPSBpbmZv LT5jcHBbMF0gKiA4Owo+ID4gKwlpbnQgdGlsZXM7Cj4gPiArCXUzMiB3LCBoLCBoZWlnaHQsIHRp bGVfc3osIGFmYmNfc2l6ZTsKPiA+ICsJaW50IHJlc3VsdCA9IDA7Cj4gPiArCj4gPiArCWlmIChp KSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJBRkJDIHN1cHBvcnRlZCBvbmx5IGZvciBwbGFuZSAw XG4iKTsKPiA+ICsKPiA+ICsJCXJldHVybiAxOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIGdldCB0 aWxlIHcvaCAqLwo+ID4gKwlpZiAoIWRybV9hZmJjX2dldF9zdXBlcmJsa193aChyLT5tb2RpZmll clswXSwgJncsICZoKSkKPiA+ICsJCXJldHVybiAxOwo+ID4gKwo+ID4gKwkvKiBwaXRjaCBtdXN0 IGJlIGRpdmlzaWJsZSBieSB0aWxlIHdpZHRoICovCj4gPiArCWlmIChyLT5waXRjaGVzWzBdICUg dykgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBwaXRjaCBmb3IgcGxhbmUgJWRcbiIs IGkpOwo+ID4gKwo+ID4gKwkJcmV0dXJuIDE7Cj4gPiArCX0KPiA+ICsKPiA+ICsJb2JqID0gZHJt X2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgci0+aGFuZGxlc1swXSk7Cj4gCj4gSSB0aGlu ayB0aGlzIGlzIGEgYml0IHVnbHkgLi4uIEknZCBzcGxpdCB0aGlzIGludG8gYSBuZXcKPiBmcmFt ZWJ1ZmZlcl9jaGVja19wb3N0KCkgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGZiX2Ny ZWF0ZSwgYXQgdGhhdAo+IHBvaW50IHlvdSBkbyBoYXZlIHRoZSBvYmplY3RzIGFscmVhZHkgbG9v a2VkIHVwLgo+IAo+IEFsc28gSSBzdWdnZXN0ZWQgdGhhdCB0aGlzIGNvdWxkIGJlIGRvbmUgYXMg YSBoZWxwZXIgaW1wbGVtZW50YXRpb24gZm9yCj4gZmJfY3JlYXRlLCB3cmFwcGluZyBpdCBhcm91 bmQgdGhlIGRlZmF1bHQgZ2VtIGltcGxlbWVudGF0aW9uLiBUaGF0IHdheSB5b3UKPiBjb3VsZCBr ZWVwIGFsbCB0aGUgYWZiYyBzdHVmZiBpbiBoZWxwZXJzIGVudGlyZWx5IChidXQgZHJpdmVycyBj b3VsZCBzY3Jldwo+IHRoaW5ncyB1cCwgc28gdGhlcmUncyBhIHRyYWRlb2ZmKS4KPiAKPiBXaGF0 J3MgZGVmaW5pdGVseSBub3Qgb2sgaXMgY2FsbGluZyBkcm1fZ2VtX29iamVjdF9sb29rdXAgdW5j b25kaXRpb25hbGx5Cj4gZnJvbSBjb3JlIGNvZGUgaGVyZS4gRm9yIGNvbnNpc3RlbmN5IEkgdGhp bmsgdGhlIGhlbHBlciBhcHByb2FjaCB3b3VsZCBiZQo+IGdvb2QsIHNpbmNlIGN1cnJlbnRseSB0 aGUgc2l6ZSByZWxhdGVkIGNoZWNrcyBhcmUgZG9uZSBpbgo+IGRybV9nZW1fZmJfY3JlYXRlKCkg LSBpLmUuIGluIHRoZSBoZWxwZXJzLCBub3QgaW4gY29yZS4gT3RvaCBoYXZpbmcgY2hlY2tzCj4g c3BsaXQgbGlrZSB0aGlzIGlzIGFsc28gdWdseSwgc28gbWF5YmUgd2Ugc2hvdWxkIGhhdmUgYQo+ IGZyYW1lYnVmZmVyX2NoZWNrX3Bvc3QgZm9yIGV2ZXJ5b25lLCBhbmQgbW92ZSBhbGwgdGhlIHNp emUgY2hlY2tzIGludG8KPiBjb3JlIChub3QganVzdCBmb3IgYWZiYykuCj4gLURhbmllbAo+IAo+ ID4gKwlpZiAoIW9iaikgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGxvb2t1cCBH RU0gb2JqZWN0XG4iKTsKPiA+ICsKPiA+ICsJCXJldHVybiAxOwo+ID4gKwl9Cj4gPiArCj4gPiAr CS8qIGVzdGltYXRlIGhlaWdodCBiYXNlZCBvbiB0aWxlIHNpemUgYW5kIGhlaWdodCBmcm9tIHVz ZXJzcGFjZSAqLwo+ID4gKwloZWlnaHQgPSBESVZfUk9VTkRfVVAoci0+aGVpZ2h0LCBoKSAqIGg7 Cj4gPiArCj4gPiArCXRpbGVzID0gKHItPnBpdGNoZXNbMF0gLyB3KSAqIChoZWlnaHQgLyBoKTsK PiA+ICsJYWZiY19zaXplID0gQUxJR04odGlsZXMgKiBBRkJDX0hFQURFUl9TSVpFLCBBRkJDX1NV UEVSQkxLX0FMSUdOTUVOVCk7Cj4gPiArCj4gPiArCXRpbGVfc3ogPSAoYnBwICogdyAqIGgpIC8g QklUU19QRVJfQllURTsKPiA+ICsJYWZiY19zaXplICs9IHRpbGVzICogQUxJR04odGlsZV9zeiwg QUZCQ19TVVBFUkJMS19BTElHTk1FTlQpOwo+ID4gKwo+ID4gKwlyZXN1bHQgPSBvYmotPnNpemUg PCBhZmJjX3NpemU7Cj4gPiArCj4gPiArCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmop Owo+ID4gKwo+ID4gKwlyZXR1cm4gcmVzdWx0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50 IG1vZGlmaWVyX2NoZWNrKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ID4gKwkJCSAgY29u c3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIsIGludCBpLAo+ID4gKwkJCSAgY29uc3Qgc3Ry dWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbykKPiA+ICt7Cj4gPiArCS8qIG5vbi1hZmJjIGZvcm1h dCAqLwo+ID4gKwlpZiAoIWRybV9pc19hZmJjKHItPm1vZGlmaWVyW2ldKSkKPiA+ICsJCXJldHVy biAwOwo+ID4gKwo+ID4gKwlyZXR1cm4gYWZiY19jaGVjayhmaWxlX3ByaXYsIHIsIGksIGluZm8p Owo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gPiArCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK PiA+ICAJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpyKQo+ID4gIHsKPiA+ ICAJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKPiA+IEBAIC0yMDQsNiArMjY4 LDkgQEAgc3RhdGljIGludCBmcmFtZWJ1ZmZlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gIAkJdW5zaWduZWQgaW50IGJsb2NrX3NpemUgPSBpbmZvLT5jaGFyX3Blcl9ibG9ja1tp XTsKPiA+ICAJCXU2NCBtaW5fcGl0Y2ggPSBkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8s IGksIHdpZHRoKTsKPiA+ICAKPiA+ICsJCWlmIChkcm1faXNfYWZiYyhyLT5tb2RpZmllcltpXSkp Cj4gPiArCQkJYmxvY2tfc2l6ZSA9IDA7Cj4gPiArCj4gPiAgCQlpZiAoIWJsb2NrX3NpemUgJiYg KHItPm1vZGlmaWVyW2ldID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUikpIHsKPiA+ICAJCQlEUk1f REVCVUdfS01TKCJGb3JtYXQgcmVxdWlyZXMgbm9uLWxpbmVhciBtb2RpZmllciBmb3IgcGxhbmUg JWRcbiIsIGkpOwo+ID4gIAkJCXJldHVybiAtRUlOVkFMOwo+ID4gQEAgLTI1Myw2ICszMjAsOCBA QCBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g PiAgCQkJYnJlYWs7Cj4gPiAgCj4gPiAgCQlkZWZhdWx0Ogo+ID4gKwkJCWlmIChtb2RpZmllcl9j aGVjayhmaWxlX3ByaXYsIHIsIGksIGluZm8pKQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ ICAJCQlicmVhazsKPiA+ICAJCX0KPiA+ICAJfQo+ID4gQEAgLTMxNyw3ICszODYsNyBAQCBkcm1f aW50ZXJuYWxfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAg CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlyZXQgPSBmcmFt ZWJ1ZmZlcl9jaGVjayhkZXYsIHIpOwo+ID4gKwlyZXQgPSBmcmFtZWJ1ZmZlcl9jaGVjayhkZXYs IGZpbGVfcHJpdiwgcik7Cj4gPiAgCWlmIChyZXQpCj4gPiAgCQlyZXR1cm4gRVJSX1BUUihyZXQp Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hZmJjLmggYi9pbmNsdWRl L2RybS9kcm1fYWZiYy5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAw MDAwMDAwLi5mYjRkNDU0OWY3N2UKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9hZmJjLmgKPiA+IEBAIC0wLDAgKzEsMzUgQEAKPiA+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCsgKi8KPiA+ICsvKgo+ID4gKyAqIChDKSAyMDE5IENvbGxhYm9y YSBMdGQuCj4gPiArICoKPiA+ICsgKiBhdXRob3I6IEFuZHJ6ZWogUGlldHJhc2lld2ljeiA8YW5k cnplai5wQGNvbGxhYm9yYS5jb20+Cj4gPiArICoKPiA+ICsgKi8KPiA+ICsjaWZuZGVmIF9fRFJN X0FGQkNfSF9fCj4gPiArI2RlZmluZSBfX0RSTV9BRkJDX0hfXwo+ID4gKwo+ID4gKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgo+ID4gKwo+ID4gK3N0cnVjdCBkcm1fZGV2aWNlOwo+ID4gK3N0cnVj dCBkcm1fbW9kZV9mYl9jbWQyOwo+ID4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiA+ICsKPiA+ ICtzdHJ1Y3QgZHJtX2FmYmMgewo+ID4gKwl1MzIgdGlsZV93Owo+ID4gKwl1MzIgdGlsZV9oOwo+ ID4gKwl1MzIgd2lkdGg7Cj4gPiArCXUzMiBoZWlnaHQ7Cj4gPiArCXUzMiBvZmZzZXQ7Cj4gPiAr fTsKPiA+ICsKCkNhbiB3ZSBwdXQgYSBhZmJjIHB0ciBpbnRvIGRybV9mcmFtZWJ1ZmZlciwgYXMg dGhlIGFmYmMgZXh0ZW5zaW9uIGlmCnRoZSBmYiBpcyBhZmJjLgpTaW5jZSBtb3N0bHkgdGhpcyBk cm1fYWZiYyBpcyBlbm91Z2ggZm9yIGFmYmMgc3VwcG9ydCwgYnV0IG5vIG5lZWQgdG8KZXhwb3Nl IGNoZWNrIGZ1bmMgdG8gZHJpdmVyLCBzaW5jZSBwZXIgZGVzaWduIHRoZSBhZmJjIG1vZGlmaWVy IGJpdHMgcmVwcmVzZW50CmFsbCB0aGUgcmVxdXJlbWVudCwgdGhlIGNoZWNrIGlzIGxpa2UgYSBz YW5pdHkgY2hlY2sgYmV0d2VlbiB0aGUgbW9kaWZpZXIgYW5kCmZiIGluZm8uCgpBbmQgd2UgY2Fu IGFsc28gZXh0ZW5kIHN1Y2ggYWZiY19pbmZvIHRvIGFsbCBtb2RpZmllciB3aGljaCBuZWVkIGFu CmV4dHJhIGNoZWNrIG9yIGV4dHJhIGluZm8uIGxpa2UuCgpzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy IHsKICAgIC4uLgogICAgdW5pb24geyAgICAKICAgICAgICBzdHJ1Y3QgZHJtX2FmYmMgKmFmYmNf aW5mbzsKICAgICAgICB2b2lkICptb2RfaW5mbzsgLy9leHRyYSBtb2RpZmllciBleHRlbnNpb24u ICAKICAgIH0KICAgIC4uLgp9CgphbmQgc3VjaCBtb2RpZmllciBpbmZvIGNhbiBiZSByZXR1cm5l ZCBtb2RpZmllcl9jaGVjaygpCgpkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1bmNzKCkKewogICAg dm9pZCAqbW9kX2luZm87CgogICAgaWYgKCFtb2RpZmllcikKICAgICAgICBub25lX21vZGlmaWVy X3NpemVfY2hlY2soKTsKICAgIGVsc2UgaWYgKGFmYmMpCiAgICAgICAgbW9kX2luZm8gPSBkcm1f YWZiY19zaXplX2NoZWNrKCk7CiAgICBlbHNlIGlmIChtb2RlX2NvbmZpZy0+ZmJfbW9kaWZpZXJf Y2hlY2soKSkKICAgICAgICAvLyBmb3IgdmVuZG9yIHNwZWNpZmljIG1vZGlmaWVyIGNoZWNrCiAg ICAgICAgbW9kX2luZm8gPSBtb2RlX2NvbmZpZy0+ZmJfbW9kaWZpZXJfY2hlY2soKTsKCiAgICBm YiA9IGRybV9nZW1fZmJfYWxsb2MoKTsKCiAgICBmYi0+bW9kX2luZm8gPSBtb2RfaW5mbzsKfQoK QW5kIGluIHNwZWNpZmljIGRyaXZlciwgeW91IGNhbiBkaXJlY3RseSBjb252ZXJ0IHRoZSBmYi0+ bW9kX2luZm8gdG8KeW91ciBvd24gbW9kaWZpZXIgaW5mby4gbGlrZSBjdXJyZW50IG1vZGlmaWVy IGlzIGFmYmMsIHRoZW4KCiAgIHN0cnVjdCBkcm1fYWZiYyAqYWZiY19pbmZvID0gZmItPm1vZF9p bmZvOwoKVGhhbmtzCkphbWVzCj4gPiArI2RlZmluZSBBRkJDX0hFQURFUl9TSVpFCQkxNgo+ID4g KyNkZWZpbmUgQUZCQ19TVVBFUkJMS19BTElHTk1FTlQJCTEyOAo+ID4gKwo+ID4gK2Jvb2wgZHJt X2FmYmNfZ2V0X3N1cGVyYmxrX3doKHU2NCBtb2RpZmllciwgdTMyICp3LCB1MzIgKmgpOwo+ID4g Kwo+ID4gK3ZvaWQgZHJtX2FmYmNfZ2V0X3BhcmFtZXRlcnMoY29uc3Qgc3RydWN0IGRybV9tb2Rl X2ZiX2NtZDIgKm1vZGVfY21kLAo+ID4gKwkJCSAgICAgc3RydWN0IGRybV9hZmJjICphZmJjKTsK PiA+ICsKPiA+ICtib29sIGRybV9pc19hZmJjKHU2NCBtb2RpZmllcik7Cj4gPiArCj4gPiArI2Vu ZGlmIC8qIF9fRFJNX0FGQkNfSF9fICovCj4gPiAtLSAKPiA+IDIuMTcuMQo+ID4gCj4gCj4gLS0g Cj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==