From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCHv3/RFC 1/4] drm/arm: Factor out generic afbc helpers Date: Mon, 25 Nov 2019 09:55:06 +0100 Message-ID: <20191125085506.GA29965@phenom.ffwll.local> References: <20191119083429.GA2881@jamwan02-TSP300> <20191121172247.31150-1-andrzej.p@collabora.com> <20191121172247.31150-2-andrzej.p@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id D993289DBD for ; Mon, 25 Nov 2019 08:55:28 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id z3so16857809wru.3 for ; Mon, 25 Nov 2019 00:55:28 -0800 (PST) Content-Disposition: inline In-Reply-To: <20191121172247.31150-2-andrzej.p@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Pietrasiewicz Cc: Ayan Halder , kernel@collabora.com, David Airlie , Liviu Dudau , James Wang , dri-devel@lists.freedesktop.org, Mihail Atanassov , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMDY6MjI6NDRQTSArMDEwMCwgQW5kcnplaiBQaWV0cmFz aWV3aWN6IHdyb3RlOgo+IFRoZXNlIGFyZSB1c2VmdWwgZm9yIG90aGVyIHVzZXJzIG9mIGFmYmMs IGUuZy4gcm9ja2NoaXAuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcnplaiBQaWV0cmFzaWV3aWN6 IDxhbmRyemVqLnBAY29sbGFib3JhLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hZmJjLmMgICAgICAg IHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZvdXJjYy5jICAgICAgfCAxMSArKystCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVi dWZmZXIuYyB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGluY2x1ZGUvZHJtL2Ry bV9hZmJjLmggICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2Vk LCAxOTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl L2RybS9kcm1fYWZiYy5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IGQ5YmNjOWYyYTBhNC4uM2E1OGYz MGI4M2E2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC00NCw3ICs0NCw3IEBAIGRybV9rbXNfaGVscGVy LXkgOj0gZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9kc2MubyBkcm1fcHJv YmVfaGVscGVyCj4gIAkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVy Lm8gXAo+ICAJCWRybV9zY2RjX2hlbHBlci5vIGRybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLm8g XAo+ICAJCWRybV9hdG9taWNfc3RhdGVfaGVscGVyLm8gZHJtX2RhbWFnZV9oZWxwZXIubyBcCj4g LQkJZHJtX2Zvcm1hdF9oZWxwZXIubyBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5vCj4gKwkJZHJt X2Zvcm1hdF9oZWxwZXIubyBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5vIGRybV9hZmJjLm8KCkp1 c3QgYSBxdWljayBkcml2ZS1ieToKLSB5b3UgY2FuJ3QgcHV0IHRoaXMgaW50byBoZWxwZXJzIGFu ZCBjYWxsIGZyb20gY29yZSBjb2RlLiBUaGlzIHNob3VsZCBiZQogIGNvcmUgY29kZS4gQWxzbywg SSdkIGhhdmUganVzdCBzdHVmZmVkIGl0IGludG8gZHJtX2Zvcm1hdC5jLgoKLSBJZiB5b3Ugd2Fu dCB0byBrZWVwIHlvdXIgc2VwYXJhdGUgZmlsZSwgcGxlYXNlIGluY2x1ZGUgaXQgaW4gdGhlIGRv YwogIHRlbXBsYXRlLCBuZXh0IHRvIHRoZSBmb3JtYXQgaGFuZGxpbmcgZnVuY3Rpb25zLgo+ICAK PiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgKz0gYnJpZGdlL3Bh bmVsLm8KPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0g ZHJtX2ZiX2hlbHBlci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hZmJjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uZjMwOGM0NzE5NTQ2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYWZiYy5jCj4gQEAgLTAsMCArMSw4NCBAQAo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiAoQykgMjAxOSBDb2xsYWJvcmEg THRkLgo+ICsgKgo+ICsgKiBhdXRob3I6IEFuZHJ6ZWogUGlldHJhc2lld2ljeiA8YW5kcnplai5w QGNvbGxhYm9yYS5jb20+Cj4gKyAqCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hZmJjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rl dmljZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fZ2VtLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fcHJpbnQuaD4KPiArCj4gKy8qKgo+ICsgKiBkcm1fYWZiY19nZXRfc3VwZXJibGtfd2ggLSBl eHRyYWN0IGFmYmMgYmxvY2sgd2lkdGgvaGVpZ2h0IGZyb20gbW9kaWZpZXIKPiArICogQG1vZGlm aWVyOiB0aGUgbW9kaWZpZXIgdG8gYmUgbG9va2VkIGF0Cj4gKyAqIEB3OiBhZGRyZXNzIG9mIGEg cGxhY2UgdG8gc3RvcmUgdGhlIGJsb2NrIHdpZHRoCj4gKyAqIEBoOiBhZGRyZXNzIG9mIGEgcGxh Y2UgdG8gc3RvcmUgdGhlIGJsb2NrIGhlaWdodAo+ICsgKgo+ICsgKiBSZXR1cm5zOiB0cnVlIGlm IHRoZSBtb2RpZmllciBkZXNjcmliZXMgYSBzdXBwb3J0ZWQgYmxvY2sgc2l6ZQo+ICsgKi8KPiAr Ym9vbCBkcm1fYWZiY19nZXRfc3VwZXJibGtfd2godTY0IG1vZGlmaWVyLCB1MzIgKncsIHUzMiAq aCkKPiArewo+ICsJc3dpdGNoIChtb2RpZmllciAmIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpF X01BU0spIHsKPiArCWNhc2UgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfMTZ4MTY6Cj4gKwkJ KncgPSAxNjsKPiArCQkqaCA9IDE2Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBBRkJDX0ZPUk1BVF9N T0RfQkxPQ0tfU0laRV8zMng4Ogo+ICsJCSp3ID0gMzI7Cj4gKwkJKmggPSA4Owo+ICsJCWJyZWFr Owo+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV82NHg0Ogo+ICsJCS8qIGZhbGwg dGhyb3VnaCAqLwo+ICsJY2FzZSBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8zMng4XzY0eDQ6 Cj4gKwkJLyogZmFsbCB0aHJvdWdoICovCj4gKwlkZWZhdWx0Ogo+ICsJCURSTV9ERUJVR19LTVMo IkludmFsaWQgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkU6ICVsbGQuXG4iLAo+ICsJCQkgICAg ICBtb2RpZmllciAmIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFX01BU0spOwo+ICsJCXJldHVy biBmYWxzZTsKPiArCX0KPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BM KGRybV9hZmJjX2dldF9zdXBlcmJsa193aCk7Cj4gKwo+ICsvKioKPiArICogZHJtX2FmYmNfZ2V0 X3BhcmFtZXRlcnMgLSBleHRyYWN0IGFmYmMgcGFyYW1ldGVycyBmcm9tIG1vZGUgY29tbWFuZAo+ ICsgKiBAbW9kZV9jbWQ6IG1vZGUgY29tbWFuZCB0byBiZSBsb29rZWQgYXQKPiArICogQGFmYmM6 IGFkZHJlc3Mgb2YgYSBzdHJ1Y3QgdG8gYmUgZmlsbGVkIGluCj4gKyAqLwo+ICt2b2lkIGRybV9h ZmJjX2dldF9wYXJhbWV0ZXJzKGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2Nt ZCwKPiArCQkJICAgICBzdHJ1Y3QgZHJtX2FmYmMgKmFmYmMpCj4gK3sKPiArCWRybV9hZmJjX2dl dF9zdXBlcmJsa193aChtb2RlX2NtZC0+bW9kaWZpZXJbMF0sCj4gKwkJCQkgJmFmYmMtPnRpbGVf dywgJmFmYmMtPnRpbGVfaCk7Cj4gKwlhZmJjLT53aWR0aCA9IG1vZGVfY21kLT5waXRjaGVzWzBd Owo+ICsJYWZiYy0+aGVpZ2h0ID0KPiArCQlESVZfUk9VTkRfVVAobW9kZV9jbWQtPmhlaWdodCwg YWZiYy0+dGlsZV9oKSAqIGFmYmMtPnRpbGVfaDsKPiArCWFmYmMtPm9mZnNldCA9IG1vZGVfY21k LT5vZmZzZXRzWzBdOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2FmYmNfZ2V0X3BhcmFtZXRl cnMpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9pc19hZmJjIC0gdGVzdCBpZiB0aGUgbW9kaWZpZXIg ZGVzY3JpYmVzIGFuIGFmYmMgYnVmZmVyCj4gKyAqIEBtb2RpZmllciAtIG1vZGlmaWVyIHRvIGJl IHRlc3RlZAo+ICsgKgo+ICsgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBtb2RpZmllciBkZXNjcmli ZXMgYW4gYWZiYyBidWZmZXIKPiArICovCj4gK2Jvb2wgZHJtX2lzX2FmYmModTY0IG1vZGlmaWVy KQo+ICt7Cj4gKwkvKiBpcyBpdCBBUk0gQUZCQz8gKi8KPiArCWlmICgobW9kaWZpZXIgJiBEUk1f Rk9STUFUX01PRF9BUk1fQUZCQygwKSkgPT0gMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJ LyogQmxvY2sgc2l6ZSBtdXN0IGJlIGtub3duICovCj4gKwlpZiAoKG1vZGlmaWVyICYgQUZCQ19G T1JNQVRfTU9EX0JMT0NLX1NJWkVfTUFTSykgPT0gMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2lzX2FmYmMpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mb3VyY2MuYwo+IGluZGV4IGM2MzAwNjRjY2Y0MS4uOGQ5ZjE5N2NjMGFiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZvdXJjYy5jCj4gQEAgLTI3LDYgKzI3LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4 L2V4cG9ydC5oPgo+ICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gIAo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9hZmJjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiAgCj4gQEAgLTMyMiw4ICszMjMsMTQgQEAgZHJtX2dldF9m b3JtYXRfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4gIAljb25zdCBzdHJ1Y3Qg ZHJtX2Zvcm1hdF9pbmZvICppbmZvID0gTlVMTDsKPiAgCj4gLQlpZiAoZGV2LT5tb2RlX2NvbmZp Zy5mdW5jcy0+Z2V0X2Zvcm1hdF9pbmZvKQo+IC0JCWluZm8gPSBkZXYtPm1vZGVfY29uZmlnLmZ1 bmNzLT5nZXRfZm9ybWF0X2luZm8obW9kZV9jbWQpOwo+ICsJLyogYnlwYXNzIGRyaXZlciBjYWxs YmFjayBpZiBhZmJjICovCj4gKwlpZiAoIWRybV9pc19hZmJjKG1vZGVfY21kLT5tb2RpZmllclsw XSkpCj4gKwkJaWYgKGRldi0+bW9kZV9jb25maWcuZnVuY3MtPmdldF9mb3JtYXRfaW5mbykgewo+ ICsJCQljb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzICpmdW5jczsKPiArCj4gKwkJ CWZ1bmNzID0gZGV2LT5tb2RlX2NvbmZpZy5mdW5jczsKPiArCQkJaW5mbyA9IGZ1bmNzLT5nZXRf Zm9ybWF0X2luZm8obW9kZV9jbWQpOwo+ICsJCX0KPiAgCj4gIAlpZiAoIWluZm8pCj4gIAkJaW5m byA9IGRybV9mb3JtYXRfaW5mbyhtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9mcmFtZWJ1ZmZlci5jCj4gaW5kZXggNTc1NjQzMThjZWVhLi4zMDNlZWE2MjRhMDIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj4gQEAgLTIzLDYgKzIzLDcgQEAKPiAgI2luY2x1 ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+ICAKPiAr I2luY2x1ZGUgPGRybS9kcm1fYWZiYy5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4K PiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX3VhcGkuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f YXV0aC5oPgo+IEBAIC0zMSw2ICszMiw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZpbGUuaD4K PiAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZyYW1l YnVmZmVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9wcmludC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+Cj4gIAo+IEBAIC0xNjgsNyAr MTcwLDY5IEBAIHN0YXRpYyBpbnQgZmJfcGxhbmVfaGVpZ2h0KGludCBoZWlnaHQsCj4gIAlyZXR1 cm4gRElWX1JPVU5EX1VQKGhlaWdodCwgZm9ybWF0LT52c3ViKTsKPiAgfQo+ICAKPiArc3RhdGlj IGludCBhZmJjX2NoZWNrKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ICsJCSAgICAgIGNv bnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpyLCBpbnQgaSwKPiArCQkgICAgICBjb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iajsKPiArCWludCBicHAgPSBpbmZvLT5jcHBbMF0gKiA4Owo+ICsJaW50IHRpbGVzOwo+ ICsJdTMyIHcsIGgsIGhlaWdodCwgdGlsZV9zeiwgYWZiY19zaXplOwo+ICsJaW50IHJlc3VsdCA9 IDA7Cj4gKwo+ICsJaWYgKGkpIHsKPiArCQlEUk1fREVCVUdfS01TKCJBRkJDIHN1cHBvcnRlZCBv bmx5IGZvciBwbGFuZSAwXG4iKTsKPiArCj4gKwkJcmV0dXJuIDE7Cj4gKwl9Cj4gKwo+ICsJLyog Z2V0IHRpbGUgdy9oICovCj4gKwlpZiAoIWRybV9hZmJjX2dldF9zdXBlcmJsa193aChyLT5tb2Rp ZmllclswXSwgJncsICZoKSkKPiArCQlyZXR1cm4gMTsKPiArCj4gKwkvKiBwaXRjaCBtdXN0IGJl IGRpdmlzaWJsZSBieSB0aWxlIHdpZHRoICovCj4gKwlpZiAoci0+cGl0Y2hlc1swXSAlIHcpIHsK PiArCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIHBpdGNoIGZvciBwbGFuZSAlZFxuIiwgaSk7Cj4g Kwo+ICsJCXJldHVybiAxOwo+ICsJfQo+ICsKPiArCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1 cChmaWxlX3ByaXYsIHItPmhhbmRsZXNbMF0pOwoKSSB0aGluayB0aGlzIGlzIGEgYml0IHVnbHkg Li4uIEknZCBzcGxpdCB0aGlzIGludG8gYSBuZXcKZnJhbWVidWZmZXJfY2hlY2tfcG9zdCgpIGZ1 bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBmYl9jcmVhdGUsIGF0IHRoYXQKcG9pbnQgeW91 IGRvIGhhdmUgdGhlIG9iamVjdHMgYWxyZWFkeSBsb29rZWQgdXAuCgpBbHNvIEkgc3VnZ2VzdGVk IHRoYXQgdGhpcyBjb3VsZCBiZSBkb25lIGFzIGEgaGVscGVyIGltcGxlbWVudGF0aW9uIGZvcgpm Yl9jcmVhdGUsIHdyYXBwaW5nIGl0IGFyb3VuZCB0aGUgZGVmYXVsdCBnZW0gaW1wbGVtZW50YXRp b24uIFRoYXQgd2F5IHlvdQpjb3VsZCBrZWVwIGFsbCB0aGUgYWZiYyBzdHVmZiBpbiBoZWxwZXJz IGVudGlyZWx5IChidXQgZHJpdmVycyBjb3VsZCBzY3Jldwp0aGluZ3MgdXAsIHNvIHRoZXJlJ3Mg YSB0cmFkZW9mZikuCgpXaGF0J3MgZGVmaW5pdGVseSBub3Qgb2sgaXMgY2FsbGluZyBkcm1fZ2Vt X29iamVjdF9sb29rdXAgdW5jb25kaXRpb25hbGx5CmZyb20gY29yZSBjb2RlIGhlcmUuIEZvciBj b25zaXN0ZW5jeSBJIHRoaW5rIHRoZSBoZWxwZXIgYXBwcm9hY2ggd291bGQgYmUKZ29vZCwgc2lu Y2UgY3VycmVudGx5IHRoZSBzaXplIHJlbGF0ZWQgY2hlY2tzIGFyZSBkb25lIGluCmRybV9nZW1f ZmJfY3JlYXRlKCkgLSBpLmUuIGluIHRoZSBoZWxwZXJzLCBub3QgaW4gY29yZS4gT3RvaCBoYXZp bmcgY2hlY2tzCnNwbGl0IGxpa2UgdGhpcyBpcyBhbHNvIHVnbHksIHNvIG1heWJlIHdlIHNob3Vs ZCBoYXZlIGEKZnJhbWVidWZmZXJfY2hlY2tfcG9zdCBmb3IgZXZlcnlvbmUsIGFuZCBtb3ZlIGFs bCB0aGUgc2l6ZSBjaGVja3MgaW50bwpjb3JlIChub3QganVzdCBmb3IgYWZiYykuCi1EYW5pZWwK Cj4gKwlpZiAoIW9iaikgewo+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBsb29rdXAgR0VN IG9iamVjdFxuIik7Cj4gKwo+ICsJCXJldHVybiAxOwo+ICsJfQo+ICsKPiArCS8qIGVzdGltYXRl IGhlaWdodCBiYXNlZCBvbiB0aWxlIHNpemUgYW5kIGhlaWdodCBmcm9tIHVzZXJzcGFjZSAqLwo+ ICsJaGVpZ2h0ID0gRElWX1JPVU5EX1VQKHItPmhlaWdodCwgaCkgKiBoOwo+ICsKPiArCXRpbGVz ID0gKHItPnBpdGNoZXNbMF0gLyB3KSAqIChoZWlnaHQgLyBoKTsKPiArCWFmYmNfc2l6ZSA9IEFM SUdOKHRpbGVzICogQUZCQ19IRUFERVJfU0laRSwgQUZCQ19TVVBFUkJMS19BTElHTk1FTlQpOwo+ ICsKPiArCXRpbGVfc3ogPSAoYnBwICogdyAqIGgpIC8gQklUU19QRVJfQllURTsKPiArCWFmYmNf c2l6ZSArPSB0aWxlcyAqIEFMSUdOKHRpbGVfc3osIEFGQkNfU1VQRVJCTEtfQUxJR05NRU5UKTsK PiArCj4gKwlyZXN1bHQgPSBvYmotPnNpemUgPCBhZmJjX3NpemU7Cj4gKwo+ICsJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gKwo+ICsJcmV0dXJuIHJlc3VsdDsKPiArfQo+ICsK PiArc3RhdGljIGludCBtb2RpZmllcl9jaGVjayhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK PiArCQkJICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqciwgaW50IGksCj4gKwkJCSAg Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbykKPiArewo+ICsJLyogbm9uLWFmYmMg Zm9ybWF0ICovCj4gKwlpZiAoIWRybV9pc19hZmJjKHItPm1vZGlmaWVyW2ldKSkKPiArCQlyZXR1 cm4gMDsKPiArCj4gKwlyZXR1cm4gYWZiY19jaGVjayhmaWxlX3ByaXYsIHIsIGksIGluZm8pOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gKwkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gIAkJCSAgICAg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZm9ybWF0X2luZm8gKmluZm87Cj4gQEAgLTIwNCw2ICsyNjgsOSBAQCBzdGF0aWMgaW50IGZy YW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJdW5zaWduZWQgaW50 IGJsb2NrX3NpemUgPSBpbmZvLT5jaGFyX3Blcl9ibG9ja1tpXTsKPiAgCQl1NjQgbWluX3BpdGNo ID0gZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCBpLCB3aWR0aCk7Cj4gIAo+ICsJCWlm IChkcm1faXNfYWZiYyhyLT5tb2RpZmllcltpXSkpCj4gKwkJCWJsb2NrX3NpemUgPSAwOwo+ICsK PiAgCQlpZiAoIWJsb2NrX3NpemUgJiYgKHItPm1vZGlmaWVyW2ldID09IERSTV9GT1JNQVRfTU9E X0xJTkVBUikpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiRm9ybWF0IHJlcXVpcmVzIG5vbi1saW5l YXIgbW9kaWZpZXIgZm9yIHBsYW5lICVkXG4iLCBpKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4g QEAgLTI1Myw2ICszMjAsOCBAQCBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAkJCWJyZWFrOwo+ICAKPiAgCQlkZWZhdWx0Ogo+ICsJCQlpZiAo bW9kaWZpZXJfY2hlY2soZmlsZV9wcml2LCByLCBpLCBpbmZvKSkKPiArCQkJCXJldHVybiAtRUlO VkFMOwo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9Cj4gQEAgLTMxNyw3ICszODYsNyBAQCBkcm1f aW50ZXJuYWxfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZnJhbWVidWZmZXJf Y2hlY2soZGV2LCByKTsKPiArCXJldCA9IGZyYW1lYnVmZmVyX2NoZWNrKGRldiwgZmlsZV9wcml2 LCByKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgCj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hZmJjLmggYi9pbmNsdWRlL2RybS9kcm1fYWZiYy5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZiNGQ0NTQ5Zjc3ZQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYWZiYy5oCj4gQEAgLTAsMCAr MSwzNSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KPiArLyoK PiArICogKEMpIDIwMTkgQ29sbGFib3JhIEx0ZC4KPiArICoKPiArICogYXV0aG9yOiBBbmRyemVq IFBpZXRyYXNpZXdpY3ogPGFuZHJ6ZWoucEBjb2xsYWJvcmEuY29tPgo+ICsgKgo+ICsgKi8KPiAr I2lmbmRlZiBfX0RSTV9BRkJDX0hfXwo+ICsjZGVmaW5lIF9fRFJNX0FGQkNfSF9fCj4gKwo+ICsj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArCj4gK3N0cnVjdCBkcm1fZGV2aWNlOwo+ICtzdHJ1 Y3QgZHJtX21vZGVfZmJfY21kMjsKPiArc3RydWN0IGRybV9nZW1fb2JqZWN0Owo+ICsKPiArc3Ry dWN0IGRybV9hZmJjIHsKPiArCXUzMiB0aWxlX3c7Cj4gKwl1MzIgdGlsZV9oOwo+ICsJdTMyIHdp ZHRoOwo+ICsJdTMyIGhlaWdodDsKPiArCXUzMiBvZmZzZXQ7Cj4gK307Cj4gKwo+ICsjZGVmaW5l IEFGQkNfSEVBREVSX1NJWkUJCTE2Cj4gKyNkZWZpbmUgQUZCQ19TVVBFUkJMS19BTElHTk1FTlQJ CTEyOAo+ICsKPiArYm9vbCBkcm1fYWZiY19nZXRfc3VwZXJibGtfd2godTY0IG1vZGlmaWVyLCB1 MzIgKncsIHUzMiAqaCk7Cj4gKwo+ICt2b2lkIGRybV9hZmJjX2dldF9wYXJhbWV0ZXJzKGNvbnN0 IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKPiArCQkJICAgICBzdHJ1Y3QgZHJt X2FmYmMgKmFmYmMpOwo+ICsKPiArYm9vbCBkcm1faXNfYWZiYyh1NjQgbW9kaWZpZXIpOwo+ICsK PiArI2VuZGlmIC8qIF9fRFJNX0FGQkNfSF9fICovCj4gLS0gCj4gMi4xNy4xCj4gCgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs