From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Implement half float formats and pixel normalize property Date: Thu, 29 Nov 2018 20:52:07 +0200 Message-ID: <20181129185207.GP9144@intel.com> References: <1543473493-30973-1-git-send-email-kevin.strasser@intel.com> <1543473493-30973-4-git-send-email-kevin.strasser@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1543473493-30973-4-git-send-email-kevin.strasser@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Kevin Strasser Cc: David Airlie , Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMjgsIDIwMTggYXQgMTA6Mzg6MTNQTSAtMDgwMCwgS2V2aW4gU3RyYXNzZXIg d3JvdGU6Cj4gNjQgYnBwIGhhbGYgZmxvYXQgZm9ybWF0cyBhcmUgc3VwcG9ydGVkIG9uIGhkciBw bGFuZXMgb25seSBhbmQgYXJlIHN1YmplY3QKPiB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9u czoKPiAgICogOTAvMjcwIHJvdGF0aW9uIG5vdCBzdXBwb3J0ZWQKPiAgICogWWYgVGlsaW5nIG5v dCBzdXBwb3J0ZWQKPiAgICogRnJhbWUgQnVmZmVyIENvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQK PiAgICogQ29sb3IgS2V5aW5nIG5vdCBzdXBwb3J0ZWQKCklzIHNjYWxpbmcgc3VwcG9ydGVkPyBJ dCB3YXNuJ3Qgb24gZWFybGllciBwbGF0Zm9ybXMuCgo+IAo+IFRoZSBiZWhhdmlvciBvZiBwaXhl bCBub3JtYWxpemUgd2l0aCBub24tZmxvYXQgZm9ybWF0cyBpcyBjdXJyZW50bHkKPiB1bmRlZmlu ZWQuIEFzIHN1Y2gsIHRoZSBwaXhlbCBub3JtYWxpemUgcmVnaXN0ZXIgaXMgZW5hYmxlZCBpZmYg dGhlCj4gZnJhbWVidWZmZXIgY29udGFpbnMgZmxvYXRpbmcgcG9pbnQgcGl4ZWwgZGF0YS4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBTdHJhc3NlciA8a2V2aW4uc3RyYXNzZXJAaW50ZWwuY29t Pgo+IENjOiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+IENjOiBTaGFzaGFu ayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IERhdmlkIEFpcmxpZSA8YWly bGllZEBsaW51eC5pZT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD4KPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAxNSArKysrKystCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgNSArKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDcgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggNDdiYWYyZmUuLjg3 MWQyOTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNjU2Myw2ICs2NTYzLDEw IEBAIGVudW0gewo+ICAjZGVmaW5lIF9QTEFORV9LRVlNQVhfMV9BCQkJMHg3MDFhMAo+ICAjZGVm aW5lIF9QTEFORV9LRVlNQVhfMl9BCQkJMHg3MDJhMAo+ICAjZGVmaW5lICBQTEFORV9LRVlNQVhf QUxQSEEoYSkJCQkoKGEpIDw8IDI0KQo+ICsjZGVmaW5lIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVf MV9BCQkweDcwMWE4Cj4gKyNkZWZpbmUgX1BMQU5FX1BJWEVMX05PUk1BTElaRV8yX0EJCTB4NzAy YTgKPiArI2RlZmluZSAgIFBMQU5FX1BJWEVMX05PUk1BTElaRV9FTkFCTEUJCSgxIDw8IDMxKQo+ ICsjZGVmaW5lICAgUExBTkVfUElYRUxfTk9STUFMSVpFX0ZBQ1RPUl9NQVNLCTB4ZmZmZgo+ICAj ZGVmaW5lIF9QTEFORV9BVVhfRElTVF8xX0EJCQkweDcwMWMwCj4gICNkZWZpbmUgX1BMQU5FX0FV WF9ESVNUXzJfQQkJCTB4NzAyYzAKPiAgI2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8xX0EJCQkw eDcwMWM0Cj4gQEAgLTY3ODYsNyArNjc5MCwxNiBAQCBlbnVtIHsKPiAgI2RlZmluZSBQTEFORV9D T0xPUl9DVEwocGlwZSwgcGxhbmUpCVwKPiAgCV9NTUlPX1BMQU5FKHBsYW5lLCBfUExBTkVfQ09M T1JfQ1RMXzEocGlwZSksIF9QTEFORV9DT0xPUl9DVExfMihwaXBlKSkKPiAgCj4gLSMvKiBTS0wg bmV3IGN1cnNvciByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBfUExBTkVfUElYRUxfTk9STUFMSVpF XzFfQgkweDcxMWE4Cj4gKyNkZWZpbmUgX1BMQU5FX1BJWEVMX05PUk1BTElaRV8yX0IJMHg3MTJh OAo+ICsjZGVmaW5lIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVfMShwaXBlKSBcCj4gKwlfUElQRShw aXBlLCBfUExBTkVfUElYRUxfTk9STUFMSVpFXzFfQSwgX1BMQU5FX1BJWEVMX05PUk1BTElaRV8x X0IpCj4gKyNkZWZpbmUgX1BMQU5FX1BJWEVMX05PUk1BTElaRV8yKHBpcGUpIFwKPiArCV9QSVBF KHBpcGUsIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVfMl9BLCBfUExBTkVfUElYRUxfTk9STUFMSVpF XzJfQikKPiArI2RlZmluZSBQTEFORV9QSVhFTF9OT1JNQUxJWkUocGlwZSwgcGxhbmUpIFwKPiAr CV9NTUlPX1BMQU5FKHBsYW5lLCBfUExBTkVfUElYRUxfTk9STUFMSVpFXzEocGlwZSksIF9QTEFO RV9QSVhFTF9OT1JNQUxJWkVfMihwaXBlKSkKPiArCj4gKy8qIFNLTCBuZXcgY3Vyc29yIHJlZ2lz dGVycyAqLwo+ICAjZGVmaW5lIF9DVVJfQlVGX0NGR19BCQkJCTB4NzAxN2MKPiAgI2RlZmluZSBf Q1VSX0JVRl9DRkdfQgkJCQkweDcxMTdjCj4gICNkZWZpbmUgQ1VSX0JVRl9DRkcocGlwZSkJX01N SU9fUElQRShwaXBlLCBfQ1VSX0JVRl9DRkdfQSwgX0NVUl9CVUZfQ0ZHX0IpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGU5ZjRlMjIuLmNiYWNiNGIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTI2MTgsNiArMjYxOCwxOCBAQCBp bnQgc2tsX2Zvcm1hdF90b19mb3VyY2MoaW50IGZvcm1hdCwgYm9vbCByZ2Jfb3JkZXIsIGJvb2wg YWxwaGEpCj4gIAkJcmV0dXJuIERSTV9GT1JNQVRfUkdCNTY1Owo+ICAJY2FzZSBQTEFORV9DVExf Rk9STUFUX05WMTI6Cj4gIAkJcmV0dXJuIERSTV9GT1JNQVRfTlYxMjsKPiArCWNhc2UgUExBTkVf Q1RMX0ZPUk1BVF9YUkdCXzE2MTYxNjE2RjoKPiArCQlpZiAocmdiX29yZGVyKSB7Cj4gKwkJCWlm IChhbHBoYSkKPiArCQkJCXJldHVybiBEUk1fRk9STUFUX0FCR1IxNjE2MTYxNkg7Cj4gKwkJCWVs c2UKPiArCQkJCXJldHVybiBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkg7Cj4gKwkJfSBlbHNlIHsK PiArCQkJaWYgKGFscGhhKQo+ICsJCQkJcmV0dXJuIERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDsK PiArCQkJZWxzZQo+ICsJCQkJcmV0dXJuIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SDsKPiArCQl9 Cj4gIAlkZWZhdWx0Ogo+ICAJY2FzZSBQTEFORV9DVExfRk9STUFUX1hSR0JfODg4ODoKPiAgCQlp ZiAocmdiX29yZGVyKSB7Cj4gQEAgLTM1MDUsNiArMzUxNywxMiBAQCBzdGF0aWMgdTMyIHNrbF9w bGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKPiAgCQlyZXR1cm4gUExBTkVf Q1RMX0ZPUk1BVF9ZVVY0MjIgfCBQTEFORV9DVExfWVVWNDIyX1ZZVVk7Cj4gIAljYXNlIERSTV9G T1JNQVRfTlYxMjoKPiAgCQlyZXR1cm4gUExBTkVfQ1RMX0ZPUk1BVF9OVjEyOwo+ICsJY2FzZSBE Uk1fRk9STUFUX1hCR1IxNjE2MTYxNkg6Cj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2 SDoKPiArCQlyZXR1cm4gUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzE2MTYxNjE2RiB8IFBMQU5FX0NU TF9PUkRFUl9SR0JYOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkg6Cj4gKwljYXNl IERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDoKPiArCQlyZXR1cm4gUExBTkVfQ1RMX0ZPUk1BVF9Y UkdCXzE2MTYxNjE2RjsKPiAgCWRlZmF1bHQ6Cj4gIAkJTUlTU0lOR19DQVNFKHBpeGVsX2Zvcm1h dCk7Cj4gIAl9Cj4gQEAgLTM2ODAsNiArMzY5OCwzMiBAQCB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0 bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJldHVybiBw bGFuZV9jb2xvcl9jdGw7Cj4gIH0KPiAgCj4gK3UzMiBpY2xfcGxhbmVfcGl4ZWxfbm9ybWFsaXpl KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwKPiArCQkJICAgICAgZW51bSBkcm1fcGl4ZWxfbm9ybWFs aXplX3JhbmdlIHJhbmdlKQo+ICt7Cj4gKwkvKiAxLjAgaW4gaGFsZiBmbG9hdCAqLwo+ICsJdTE2 IGhhbGZfZmxvYXRfMSA9IDB4M2MwMDsKPiArCS8qIDMuOTJFLTMgaW4gaGFsZiBmbG9hdCAqLwo+ ICsJdTE2IGhhbGZfZmxvYXRfMjU1ID0gMHgxYzA0Owo+ICsKPiArCXN3aXRjaCAocGl4ZWxfZm9y bWF0KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SDoKPiArCWNhc2UgRFJNX0ZP Uk1BVF9YQkdSMTYxNjE2MTZIOgo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0IxNjE2MTYxNkg6Cj4g KwljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2SDoKPiArCQlzd2l0Y2ggKHJhbmdlKSB7Cj4g KwkJY2FzZSBEUk1fUElYRUxfTk9STUFMSVpFX1JBTkdFXzBfMToKPiArCQkJcmV0dXJuIFBMQU5F X1BJWEVMX05PUk1BTElaRV9FTkFCTEUgfCBoYWxmX2Zsb2F0XzE7Cj4gKwkJY2FzZSBEUk1fUElY RUxfTk9STUFMSVpFX1JBTkdFXzBfMjU1Ogo+ICsJCQlyZXR1cm4gUExBTkVfUElYRUxfTk9STUFM SVpFX0VOQUJMRSB8IGhhbGZfZmxvYXRfMjU1Owo+ICsJCWRlZmF1bHQ6Cj4gKwkJCXJldHVybiAw Owo+ICsJCX0KPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gK30KPiArCj4gIHN0 YXRpYyBpbnQKPiAgX19pbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gQEAgLTQ5OTgs NiArNTA0MiwxMCBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY2FzZSBEUk1fRk9STUFUX1VZVlk6Cj4g IAljYXNlIERSTV9GT1JNQVRfVllVWToKPiAgCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+ICsJY2Fz ZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkg6Cj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYx NjE2SDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTYxNjE2MTZIOgo+ICsJY2FzZSBEUk1fRk9S TUFUX0FSR0IxNjE2MTYxNkg6Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCURSTV9ERUJV R19LTVMoIltQTEFORTolZDolc10gRkI6JWQgdW5zdXBwb3J0ZWQgc2NhbGluZyBmb3JtYXQgMHgl eFxuIiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGE2MmQ3N2IuLmE1NmIxMzEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC01NjUsNiArNTY1LDkgQEAgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiAgCXUzMiBzbGF2ZTsKPiAgCj4gIAlzdHJ1Y3QgZHJt X2ludGVsX3Nwcml0ZV9jb2xvcmtleSBja2V5Owo+ICsKPiArCS8qIHBsYW5lIHBpeGVsIG5vcm1h bGl6ZSByZWdpc3RlciAqLwo+ICsJdTMyIHBpeGVsX25vcm1hbGl6ZTsKPiAgfTsKPiAgCj4gIHN0 cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyB7Cj4gQEAgLTE3MzgsNiArMTc0MSw4IEBA IHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICB1MzIgZ2xrX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKTsKPiAgdTMyIHNrbF9wbGFuZV9zdHJpZGUoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkgICAgIGludCBwbGFuZSk7Cj4gK3UzMiBp Y2xfcGxhbmVfcGl4ZWxfbm9ybWFsaXplKHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwKPiArCQkJICAg ICAgZW51bSBkcm1fcGl4ZWxfbm9ybWFsaXplX3JhbmdlIHJhbmdlKTsKPiAgaW50IHNrbF9jaGVj a19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ ICBpbnQgaTl4eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpOwo+ICBpbnQgc2tsX2Zvcm1hdF90b19mb3VyY2MoaW50IGZvcm1hdCwgYm9v bCByZ2Jfb3JkZXIsIGJvb2wgYWxwaGEpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gaW5kZXggYWJlMTkzOC4uOWRlYTBiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jCj4gQEAgLTUxNSw2ICs1MTUsMTAgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPiAgCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYgaWNsX2lzX2hk cl9wbGFuZShwbGFuZSkpCj4gIAkJaWNsX3Byb2dyYW1faW5wdXRfY3NjX2NvZWZmKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKTsKPiAgCj4gKwlpZiAoZmItPmZvcm1hdC0+aXNfZnAgJiYgaWNsX2lz X2hkcl9wbGFuZShwbGFuZSkpCj4gKwkJSTkxNV9XUklURV9GVyhQTEFORV9QSVhFTF9OT1JNQUxJ WkUocGlwZSwgcGxhbmVfaWQpLAo+ICsJCQkgICAgICBwbGFuZV9zdGF0ZS0+cGl4ZWxfbm9ybWFs aXplKTsKPiArCj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZV9pZCks IGtleS0+bWluX3ZhbHVlKTsKPiAgCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTUFYKHBpcGUsIHBs YW5lX2lkKSwga2V5bWF4KTsKPiAgCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBs YW5lX2lkKSwga2V5bXNrKTsKPiBAQCAtMTQxNyw4ICsxNDIxLDYgQEAgc3RhdGljIGludCBza2xf cGxhbmVfY2hlY2tfZmIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAkJLyoKPiAgCQkgKiA5MC8yNzAgaXMgbm90IGFsbG93ZWQgd2l0aCBSR0I2NCAxNjoxNjox NjoxNiBhbmQKPiAgCQkgKiBJbmRleGVkIDgtYml0LiBSR0IgMTYtYml0IDU6Njo1IGlzIGFsbG93 ZWQgZ2VuMTEgb253YXJkcy4KPiAtCQkgKiBUQkQ6IEFkZCBSR0I2NCBjYXNlIG9uY2UgaXRzIGFk ZGVkIGluIHN1cHBvcnRlZCBmb3JtYXQKPiAtCQkgKiBsaXN0Lgo+ICAJCSAqLwo+ICAJCXN3aXRj aCAoZmItPmZvcm1hdC0+Zm9ybWF0KSB7Cj4gIAkJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiBA QCAtMTQyNiw2ICsxNDI4LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJYnJlYWs7Cj4gIAkJ CS8qIGZhbGwgdGhyb3VnaCAqLwo+ICAJCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiArCQljYXNlIERS TV9GT1JNQVRfWFJHQjE2MTYxNjE2SDoKPiArCQljYXNlIERSTV9GT1JNQVRfWEJHUjE2MTYxNjE2 SDoKPiArCQljYXNlIERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDoKPiArCQljYXNlIERSTV9GT1JN QVRfQUJHUjE2MTYxNjE2SDoKPiAgCQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwg Zm9ybWF0ICVzIGZvciA5MC8yNzAhXG4iLAo+ICAJCQkJICAgICAgZHJtX2dldF9mb3JtYXRfbmFt ZShmYi0+Zm9ybWF0LT5mb3JtYXQsCj4gIAkJCQkJCQkgICZmb3JtYXRfbmFtZSkpOwo+IEBAIC0x NTUyLDYgKzE1NTgsMTEgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCA9IGds a19wbGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwKPiAgCQkJCQkJCSAgICAgcGxhbmVfc3RhdGUp Owo+ICAKPiArCWlmIChpY2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKPiArCQlwbGFuZV9zdGF0ZS0+ cGl4ZWxfbm9ybWFsaXplID0KPiArCQkJaWNsX3BsYW5lX3BpeGVsX25vcm1hbGl6ZShwbGFuZV9z dGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5mb3JtYXQsCj4gKwkJCQkJCSAgcGxhbmVfc3RhdGUtPmJh c2UucGl4ZWxfbm9ybWFsaXplX3JhbmdlKTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBA QCAtMTc0MSw2ICsxNzUyLDQ1IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBza2xfcGxhbmFyX2Zv cm1hdHNbXSA9IHsKPiAgCURSTV9GT1JNQVRfTlYxMiwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25z dCB1aW50MzJfdCBpY2xfaGRyX3BsYW5lX2Zvcm1hdHNbXSA9IHsKPiArCURSTV9GT1JNQVRfQzgs Cj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwlEUk1f Rk9STUFUX1hCR1I4ODg4LAo+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiArCURSTV9GT1JNQVRf QUJHUjg4ODgsCj4gKwlEUk1fRk9STUFUX1hSR0IyMTAxMDEwLAo+ICsJRFJNX0ZPUk1BVF9YQkdS MjEwMTAxMCwKPiArCURSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SCwKPiArCURSTV9GT1JNQVRfWEJH UjE2MTYxNjE2SCwKPiArCURSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SCwKPiArCURSTV9GT1JNQVRf QUJHUjE2MTYxNjE2SCwKPiArCURSTV9GT1JNQVRfWVVZViwKPiArCURSTV9GT1JNQVRfWVZZVSwK PiArCURSTV9GT1JNQVRfVVlWWSwKPiArCURSTV9GT1JNQVRfVllVWSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1aW50MzJfdCBpY2xfaGRyX3BsYW5hcl9mb3JtYXRzW10gPSB7Cj4gKwlEUk1f Rk9STUFUX0M4LAo+ICsJRFJNX0ZPUk1BVF9SR0I1NjUsCj4gKwlEUk1fRk9STUFUX1hSR0I4ODg4 LAo+ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwKPiArCURSTV9GT1JNQVRfQVJHQjg4ODgsCj4gKwlE Uk1fRk9STUFUX0FCR1I4ODg4LAo+ICsJRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwKPiArCURSTV9G T1JNQVRfWEJHUjIxMDEwMTAsCj4gKwlEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkgsCj4gKwlEUk1f Rk9STUFUX1hCR1IxNjE2MTYxNkgsCj4gKwlEUk1fRk9STUFUX0FSR0IxNjE2MTYxNkgsCj4gKwlE Uk1fRk9STUFUX0FCR1IxNjE2MTYxNkgsCj4gKwlEUk1fRk9STUFUX1lVWVYsCj4gKwlEUk1fRk9S TUFUX1lWWVUsCj4gKwlEUk1fRk9STUFUX1VZVlksCj4gKwlEUk1fRk9STUFUX1ZZVVksCj4gKwlE Uk1fRk9STUFUX05WMTIsCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX3Bs YW5lX2Zvcm1hdF9tb2RpZmllcnNfbm9jY3NbXSA9IHsKPiAgCUk5MTVfRk9STUFUX01PRF9ZZl9U SUxFRCwKPiAgCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELAo+IEBAIC0xODg0LDYgKzE5MzQsMTAg QEAgc3RhdGljIGJvb2wgc2tsX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAkJLyogZmFsbCB0aHJvdWdoICov Cj4gIAljYXNlIERSTV9GT1JNQVRfQzg6Cj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjE2MTYxNjE2 SDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMTYxNjE2MTZIOgo+ICsJY2FzZSBEUk1fRk9STUFU X1hSR0IxNjE2MTYxNkg6Cj4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDoKPiAgCQlp ZiAobW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8Cj4gIAkJICAgIG1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEIHx8Cj4gIAkJICAgIG1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEKQo+IEBAIC0yMDIwLDExICsyMDc0LDIxIEBAIHNrbF91bml2ZXJz YWxfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlw bGFuZS0+dXBkYXRlX3NsYXZlID0gaWNsX3VwZGF0ZV9zbGF2ZTsKPiAgCj4gIAlpZiAoc2tsX3Bs YW5lX2hhc19wbGFuYXIoZGV2X3ByaXYsIHBpcGUsIHBsYW5lX2lkKSkgewo+IC0JCWZvcm1hdHMg PSBza2xfcGxhbmFyX2Zvcm1hdHM7Cj4gLQkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNrbF9w bGFuYXJfZm9ybWF0cyk7Cj4gKwkJaWYgKGljbF9pc19oZHJfcGxhbmUocGxhbmUpKSB7Cj4gKwkJ CWZvcm1hdHMgPSBpY2xfaGRyX3BsYW5hcl9mb3JtYXRzOwo+ICsJCQludW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUoaWNsX2hkcl9wbGFuYXJfZm9ybWF0cyk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZm9y bWF0cyA9IHNrbF9wbGFuYXJfZm9ybWF0czsKPiArCQkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpF KHNrbF9wbGFuYXJfZm9ybWF0cyk7Cj4gKwkJfQo+ICAJfSBlbHNlIHsKPiAtCQlmb3JtYXRzID0g c2tsX3BsYW5lX2Zvcm1hdHM7Cj4gLQkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNrbF9wbGFu ZV9mb3JtYXRzKTsKPiArCQlpZiAoaWNsX2lzX2hkcl9wbGFuZShwbGFuZSkpIHsKPiArCQkJZm9y bWF0cyA9IGljbF9oZHJfcGxhbmVfZm9ybWF0czsKPiArCQkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9T SVpFKGljbF9oZHJfcGxhbmVfZm9ybWF0cyk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZm9ybWF0cyA9 IHNrbF9wbGFuZV9mb3JtYXRzOwo+ICsJCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3Bs YW5lX2Zvcm1hdHMpOwo+ICsJCX0KPiAgCX0KPiAgCj4gIAlwbGFuZS0+aGFzX2NjcyA9IHNrbF9w bGFuZV9oYXNfY2NzKGRldl9wcml2LCBwaXBlLCBwbGFuZV9pZCk7Cj4gQEAgLTIwNzQsNiArMjEz OCwxMiBAQCBza2xfdW5pdmVyc2FsX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCQkJICAgICBCSVQoRFJNX01PREVfQkxFTkRfUFJFTVVMVEkpIHwK PiAgCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRSkpOwo+ICAKPiArCWlmIChp Y2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKPiArCQlkcm1fcGxhbmVfY3JlYXRlX3BpeGVsX25vcm1h bGl6ZV9yYW5nZV9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsCj4gKwkJCQlCSVQoRFJNX1BJWEVMX05P Uk1BTElaRV9SQU5HRV8wXzEpIHwKPiArCQkJCUJJVChEUk1fUElYRUxfTk9STUFMSVpFX1JBTkdF XzBfMjU1KSwKPiArCQkJCURSTV9QSVhFTF9OT1JNQUxJWkVfUkFOR0VfMF8xKTsKPiArCj4gIAlk cm1fcGxhbmVfaGVscGVyX2FkZCgmcGxhbmUtPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVu Y3MpOwo+ICAKPiAgCXJldHVybiBwbGFuZTsKPiAtLSAKPiAyLjcuNAoKLS0gClZpbGxlIFN5cmrD pGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK