From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Strasser Subject: [PATCH 3/3] drm/i915: Implement half float formats and pixel normalize property Date: Wed, 28 Nov 2018 22:38:13 -0800 Message-ID: <1543473493-30973-4-git-send-email-kevin.strasser@intel.com> References: <1543473493-30973-1-git-send-email-kevin.strasser@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1543473493-30973-1-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: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: David Airlie , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org NjQgYnBwIGhhbGYgZmxvYXQgZm9ybWF0cyBhcmUgc3VwcG9ydGVkIG9uIGhkciBwbGFuZXMgb25s eSBhbmQgYXJlIHN1YmplY3QKdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CiAgKiA5MC8y NzAgcm90YXRpb24gbm90IHN1cHBvcnRlZAogICogWWYgVGlsaW5nIG5vdCBzdXBwb3J0ZWQKICAq IEZyYW1lIEJ1ZmZlciBDb21wcmVzc2lvbiBub3Qgc3VwcG9ydGVkCiAgKiBDb2xvciBLZXlpbmcg bm90IHN1cHBvcnRlZAoKVGhlIGJlaGF2aW9yIG9mIHBpeGVsIG5vcm1hbGl6ZSB3aXRoIG5vbi1m bG9hdCBmb3JtYXRzIGlzIGN1cnJlbnRseQp1bmRlZmluZWQuIEFzIHN1Y2gsIHRoZSBwaXhlbCBu b3JtYWxpemUgcmVnaXN0ZXIgaXMgZW5hYmxlZCBpZmYgdGhlCmZyYW1lYnVmZmVyIGNvbnRhaW5z IGZsb2F0aW5nIHBvaW50IHBpeGVsIGRhdGEuCgpTaWduZWQtb2ZmLWJ5OiBLZXZpbiBTdHJhc3Nl ciA8a2V2aW4uc3RyYXNzZXJAaW50ZWwuY29tPgpDYzogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2Fy QGludGVsLmNvbT4KQ2M6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNv bT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNj OiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8IDE1ICsrKysrKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDQ4ICsrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDUgKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCA4MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggNDdiYWYyZmUuLjg3MWQy OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtNjU2Myw2ICs2NTYzLDEwIEBAIGVudW0g ewogI2RlZmluZSBfUExBTkVfS0VZTUFYXzFfQQkJCTB4NzAxYTAKICNkZWZpbmUgX1BMQU5FX0tF WU1BWF8yX0EJCQkweDcwMmEwCiAjZGVmaW5lICBQTEFORV9LRVlNQVhfQUxQSEEoYSkJCQkoKGEp IDw8IDI0KQorI2RlZmluZSBfUExBTkVfUElYRUxfTk9STUFMSVpFXzFfQQkJMHg3MDFhOAorI2Rl ZmluZSBfUExBTkVfUElYRUxfTk9STUFMSVpFXzJfQQkJMHg3MDJhOAorI2RlZmluZSAgIFBMQU5F X1BJWEVMX05PUk1BTElaRV9FTkFCTEUJCSgxIDw8IDMxKQorI2RlZmluZSAgIFBMQU5FX1BJWEVM X05PUk1BTElaRV9GQUNUT1JfTUFTSwkweGZmZmYKICNkZWZpbmUgX1BMQU5FX0FVWF9ESVNUXzFf QQkJCTB4NzAxYzAKICNkZWZpbmUgX1BMQU5FX0FVWF9ESVNUXzJfQQkJCTB4NzAyYzAKICNkZWZp bmUgX1BMQU5FX0FVWF9PRkZTRVRfMV9BCQkJMHg3MDFjNApAQCAtNjc4Niw3ICs2NzkwLDE2IEBA IGVudW0gewogI2RlZmluZSBQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmUpCVwKIAlfTU1JT19Q TEFORShwbGFuZSwgX1BMQU5FX0NPTE9SX0NUTF8xKHBpcGUpLCBfUExBTkVfQ09MT1JfQ1RMXzIo cGlwZSkpCiAKLSMvKiBTS0wgbmV3IGN1cnNvciByZWdpc3RlcnMgKi8KKyNkZWZpbmUgX1BMQU5F X1BJWEVMX05PUk1BTElaRV8xX0IJMHg3MTFhOAorI2RlZmluZSBfUExBTkVfUElYRUxfTk9STUFM SVpFXzJfQgkweDcxMmE4CisjZGVmaW5lIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVfMShwaXBlKSBc CisJX1BJUEUocGlwZSwgX1BMQU5FX1BJWEVMX05PUk1BTElaRV8xX0EsIF9QTEFORV9QSVhFTF9O T1JNQUxJWkVfMV9CKQorI2RlZmluZSBfUExBTkVfUElYRUxfTk9STUFMSVpFXzIocGlwZSkgXAor CV9QSVBFKHBpcGUsIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVfMl9BLCBfUExBTkVfUElYRUxfTk9S TUFMSVpFXzJfQikKKyNkZWZpbmUgUExBTkVfUElYRUxfTk9STUFMSVpFKHBpcGUsIHBsYW5lKSBc CisJX01NSU9fUExBTkUocGxhbmUsIF9QTEFORV9QSVhFTF9OT1JNQUxJWkVfMShwaXBlKSwgX1BM QU5FX1BJWEVMX05PUk1BTElaRV8yKHBpcGUpKQorCisvKiBTS0wgbmV3IGN1cnNvciByZWdpc3Rl cnMgKi8KICNkZWZpbmUgX0NVUl9CVUZfQ0ZHX0EJCQkJMHg3MDE3YwogI2RlZmluZSBfQ1VSX0JV Rl9DRkdfQgkJCQkweDcxMTdjCiAjZGVmaW5lIENVUl9CVUZfQ0ZHKHBpcGUpCV9NTUlPX1BJUEUo cGlwZSwgX0NVUl9CVUZfQ0ZHX0EsIF9DVVJfQlVGX0NGR19CKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IGU5ZjRlMjIuLmNiYWNiNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTI2MTgsNiArMjYxOCwxOCBAQCBpbnQgc2tsX2Zvcm1hdF90b19m b3VyY2MoaW50IGZvcm1hdCwgYm9vbCByZ2Jfb3JkZXIsIGJvb2wgYWxwaGEpCiAJCXJldHVybiBE Uk1fRk9STUFUX1JHQjU2NTsKIAljYXNlIFBMQU5FX0NUTF9GT1JNQVRfTlYxMjoKIAkJcmV0dXJu IERSTV9GT1JNQVRfTlYxMjsKKwljYXNlIFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8xNjE2MTYxNkY6 CisJCWlmIChyZ2Jfb3JkZXIpIHsKKwkJCWlmIChhbHBoYSkKKwkJCQlyZXR1cm4gRFJNX0ZPUk1B VF9BQkdSMTYxNjE2MTZIOworCQkJZWxzZQorCQkJCXJldHVybiBEUk1fRk9STUFUX1hCR1IxNjE2 MTYxNkg7CisJCX0gZWxzZSB7CisJCQlpZiAoYWxwaGEpCisJCQkJcmV0dXJuIERSTV9GT1JNQVRf QVJHQjE2MTYxNjE2SDsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gRFJNX0ZPUk1BVF9YUkdCMTYxNjE2 MTZIOworCQl9CiAJZGVmYXVsdDoKIAljYXNlIFBMQU5FX0NUTF9GT1JNQVRfWFJHQl84ODg4Ogog CQlpZiAocmdiX29yZGVyKSB7CkBAIC0zNTA1LDYgKzM1MTcsMTIgQEAgc3RhdGljIHUzMiBza2xf cGxhbmVfY3RsX2Zvcm1hdCh1aW50MzJfdCBwaXhlbF9mb3JtYXQpCiAJCXJldHVybiBQTEFORV9D VExfRk9STUFUX1lVVjQyMiB8IFBMQU5FX0NUTF9ZVVY0MjJfVllVWTsKIAljYXNlIERSTV9GT1JN QVRfTlYxMjoKIAkJcmV0dXJuIFBMQU5FX0NUTF9GT1JNQVRfTlYxMjsKKwljYXNlIERSTV9GT1JN QVRfWEJHUjE2MTYxNjE2SDoKKwljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2SDoKKwkJcmV0 dXJuIFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8xNjE2MTYxNkYgfCBQTEFORV9DVExfT1JERVJfUkdC WDsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SDoKKwljYXNlIERSTV9GT1JNQVRfQVJH QjE2MTYxNjE2SDoKKwkJcmV0dXJuIFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8xNjE2MTYxNkY7CiAJ ZGVmYXVsdDoKIAkJTUlTU0lOR19DQVNFKHBpeGVsX2Zvcm1hdCk7CiAJfQpAQCAtMzY4MCw2ICsz Njk4LDMyIEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAogCXJldHVybiBwbGFuZV9jb2xvcl9jdGw7CiB9CiAKK3UzMiBp Y2xfcGxhbmVfcGl4ZWxfbm9ybWFsaXplKHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwKKwkJCSAgICAg IGVudW0gZHJtX3BpeGVsX25vcm1hbGl6ZV9yYW5nZSByYW5nZSkKK3sKKwkvKiAxLjAgaW4gaGFs ZiBmbG9hdCAqLworCXUxNiBoYWxmX2Zsb2F0XzEgPSAweDNjMDA7CisJLyogMy45MkUtMyBpbiBo YWxmIGZsb2F0ICovCisJdTE2IGhhbGZfZmxvYXRfMjU1ID0gMHgxYzA0OworCisJc3dpdGNoIChw aXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SDoKKwljYXNlIERS TV9GT1JNQVRfWEJHUjE2MTYxNjE2SDoKKwljYXNlIERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDoK KwljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2SDoKKwkJc3dpdGNoIChyYW5nZSkgeworCQlj YXNlIERSTV9QSVhFTF9OT1JNQUxJWkVfUkFOR0VfMF8xOgorCQkJcmV0dXJuIFBMQU5FX1BJWEVM X05PUk1BTElaRV9FTkFCTEUgfCBoYWxmX2Zsb2F0XzE7CisJCWNhc2UgRFJNX1BJWEVMX05PUk1B TElaRV9SQU5HRV8wXzI1NToKKwkJCXJldHVybiBQTEFORV9QSVhFTF9OT1JNQUxJWkVfRU5BQkxF IHwgaGFsZl9mbG9hdF8yNTU7CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gMDsKKwkJfQorCWRlZmF1 bHQ6CisJCXJldHVybiAwOworCX0KK30KKwogc3RhdGljIGludAogX19pbnRlbF9kaXNwbGF5X3Jl c3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLApAQCAtNDk5OCw2ICs1MDQyLDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0 ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY2Fz ZSBEUk1fRk9STUFUX1VZVlk6CiAJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CiAJY2FzZSBEUk1fRk9S TUFUX05WMTI6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkg6CisJY2FzZSBEUk1fRk9S TUFUX0FCR1IxNjE2MTYxNkg6CisJY2FzZSBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkg6CisJY2Fz ZSBEUk1fRk9STUFUX0FSR0IxNjE2MTYxNkg6CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCURSTV9E RUJVR19LTVMoIltQTEFORTolZDolc10gRkI6JWQgdW5zdXBwb3J0ZWQgc2NhbGluZyBmb3JtYXQg MHgleFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYTYyZDc3Yi4uYTU2YjEzMSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTU2NSw2ICs1NjUsOSBAQCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgewogCXUzMiBzbGF2ZTsKIAogCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRl X2NvbG9ya2V5IGNrZXk7CisKKwkvKiBwbGFuZSBwaXhlbCBub3JtYWxpemUgcmVnaXN0ZXIgKi8K Kwl1MzIgcGl4ZWxfbm9ybWFsaXplOwogfTsKIAogc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVf Y29uZmlnIHsKQEAgLTE3MzgsNiArMTc0MSw4IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogdTMyIGdsa19jb2xvcl9jdGwoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CiB1MzIgc2tsX3BsYW5l X3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAogCQkg ICAgIGludCBwbGFuZSk7Cit1MzIgaWNsX3BsYW5lX3BpeGVsX25vcm1hbGl6ZSh1aW50MzJfdCBw aXhlbF9mb3JtYXQsCisJCQkgICAgICBlbnVtIGRybV9waXhlbF9ub3JtYWxpemVfcmFuZ2UgcmFu Z2UpOwogaW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpOwogaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKIGludCBza2xfZm9ybWF0X3RvX2ZvdXJjYyhp bnQgZm9ybWF0LCBib29sIHJnYl9vcmRlciwgYm9vbCBhbHBoYSk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCmluZGV4IGFiZTE5MzguLjlkZWEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCkBAIC01MTUsNiArNTE1LDEwIEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJaWYgKGZiLT5mb3JtYXQtPmlzX3l1diAmJiBpY2xfaXNf aGRyX3BsYW5lKHBsYW5lKSkKIAkJaWNsX3Byb2dyYW1faW5wdXRfY3NjX2NvZWZmKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKTsKIAorCWlmIChmYi0+Zm9ybWF0LT5pc19mcCAmJiBpY2xfaXNfaGRy X3BsYW5lKHBsYW5lKSkKKwkJSTkxNV9XUklURV9GVyhQTEFORV9QSVhFTF9OT1JNQUxJWkUocGlw ZSwgcGxhbmVfaWQpLAorCQkJICAgICAgcGxhbmVfc3RhdGUtPnBpeGVsX25vcm1hbGl6ZSk7CisK IAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZV9pZCksIGtleS0+bWluX3Zh bHVlKTsKIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tFWU1BWChwaXBlLCBwbGFuZV9pZCksIGtleW1h eCk7CiAJSTkxNV9XUklURV9GVyhQTEFORV9LRVlNU0socGlwZSwgcGxhbmVfaWQpLCBrZXltc2sp OwpAQCAtMTQxNyw4ICsxNDIxLDYgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCS8qCiAJCSAqIDkwLzI3 MCBpcyBub3QgYWxsb3dlZCB3aXRoIFJHQjY0IDE2OjE2OjE2OjE2IGFuZAogCQkgKiBJbmRleGVk IDgtYml0LiBSR0IgMTYtYml0IDU6Njo1IGlzIGFsbG93ZWQgZ2VuMTEgb253YXJkcy4KLQkJICog VEJEOiBBZGQgUkdCNjQgY2FzZSBvbmNlIGl0cyBhZGRlZCBpbiBzdXBwb3J0ZWQgZm9ybWF0Ci0J CSAqIGxpc3QuCiAJCSAqLwogCQlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgewogCQljYXNl IERSTV9GT1JNQVRfUkdCNTY1OgpAQCAtMTQyNiw2ICsxNDI4LDEwIEBAIHN0YXRpYyBpbnQgc2ts X3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkJCWJyZWFrOwogCQkJLyogZmFsbCB0aHJvdWdoICovCiAJCWNhc2UgRFJNX0ZPUk1BVF9D ODoKKwkJY2FzZSBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkg6CisJCWNhc2UgRFJNX0ZPUk1BVF9Y QkdSMTYxNjE2MTZIOgorCQljYXNlIERSTV9GT1JNQVRfQVJHQjE2MTYxNjE2SDoKKwkJY2FzZSBE Uk1fRk9STUFUX0FCR1IxNjE2MTYxNkg6CiAJCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBw aXhlbCBmb3JtYXQgJXMgZm9yIDkwLzI3MCFcbiIsCiAJCQkJICAgICAgZHJtX2dldF9mb3JtYXRf bmFtZShmYi0+Zm9ybWF0LT5mb3JtYXQsCiAJCQkJCQkJICAmZm9ybWF0X25hbWUpKTsKQEAgLTE1 NTIsNiArMTU1OCwxMSBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCA9IGdsa19w bGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwKIAkJCQkJCQkgICAgIHBsYW5lX3N0YXRlKTsKIAor CWlmIChpY2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKKwkJcGxhbmVfc3RhdGUtPnBpeGVsX25vcm1h bGl6ZSA9CisJCQlpY2xfcGxhbmVfcGl4ZWxfbm9ybWFsaXplKHBsYW5lX3N0YXRlLT5iYXNlLmZi LT5mb3JtYXQtPmZvcm1hdCwKKwkJCQkJCSAgcGxhbmVfc3RhdGUtPmJhc2UucGl4ZWxfbm9ybWFs aXplX3JhbmdlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xNzQxLDYgKzE3NTIsNDUgQEAgc3Rh dGljIGNvbnN0IHVpbnQzMl90IHNrbF9wbGFuYXJfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRf TlYxMiwKIH07CiAKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBpY2xfaGRyX3BsYW5lX2Zvcm1hdHNb XSA9IHsKKwlEUk1fRk9STUFUX0M4LAorCURSTV9GT1JNQVRfUkdCNTY1LAorCURSTV9GT1JNQVRf WFJHQjg4ODgsCisJRFJNX0ZPUk1BVF9YQkdSODg4OCwKKwlEUk1fRk9STUFUX0FSR0I4ODg4LAor CURSTV9GT1JNQVRfQUJHUjg4ODgsCisJRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwKKwlEUk1fRk9S TUFUX1hCR1IyMTAxMDEwLAorCURSTV9GT1JNQVRfWFJHQjE2MTYxNjE2SCwKKwlEUk1fRk9STUFU X1hCR1IxNjE2MTYxNkgsCisJRFJNX0ZPUk1BVF9BUkdCMTYxNjE2MTZILAorCURSTV9GT1JNQVRf QUJHUjE2MTYxNjE2SCwKKwlEUk1fRk9STUFUX1lVWVYsCisJRFJNX0ZPUk1BVF9ZVllVLAorCURS TV9GT1JNQVRfVVlWWSwKKwlEUk1fRk9STUFUX1ZZVVksCit9OworCitzdGF0aWMgY29uc3QgdWlu dDMyX3QgaWNsX2hkcl9wbGFuYXJfZm9ybWF0c1tdID0geworCURSTV9GT1JNQVRfQzgsCisJRFJN X0ZPUk1BVF9SR0I1NjUsCisJRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwlEUk1fRk9STUFUX1hCR1I4 ODg4LAorCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJRFJNX0ZPUk1BVF9BQkdSODg4OCwKKwlEUk1f Rk9STUFUX1hSR0IyMTAxMDEwLAorCURSTV9GT1JNQVRfWEJHUjIxMDEwMTAsCisJRFJNX0ZPUk1B VF9YUkdCMTYxNjE2MTZILAorCURSTV9GT1JNQVRfWEJHUjE2MTYxNjE2SCwKKwlEUk1fRk9STUFU X0FSR0IxNjE2MTYxNkgsCisJRFJNX0ZPUk1BVF9BQkdSMTYxNjE2MTZILAorCURSTV9GT1JNQVRf WVVZViwKKwlEUk1fRk9STUFUX1lWWVUsCisJRFJNX0ZPUk1BVF9VWVZZLAorCURSTV9GT1JNQVRf VllVWSwKKwlEUk1fRk9STUFUX05WMTIsCit9OworCiBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2ts X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfbm9jY3NbXSA9IHsKIAlJOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQsCiAJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCkBAIC0xODg0LDYgKzE5MzQsMTAgQEAg c3RhdGljIGJvb2wgc2tsX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxh bmUgKl9wbGFuZSwKIAkJCXJldHVybiB0cnVlOwogCQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNl IERSTV9GT1JNQVRfQzg6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkg6CisJY2FzZSBE Uk1fRk9STUFUX0FCR1IxNjE2MTYxNkg6CisJY2FzZSBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkg6 CisJY2FzZSBEUk1fRk9STUFUX0FSR0IxNjE2MTYxNkg6CiAJCWlmIChtb2RpZmllciA9PSBEUk1f Rk9STUFUX01PRF9MSU5FQVIgfHwKIAkJICAgIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9Y X1RJTEVEIHx8CiAJCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCkKQEAg LTIwMjAsMTEgKzIwNzQsMjEgQEAgc2tsX3VuaXZlcnNhbF9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlwbGFuZS0+dXBkYXRlX3NsYXZlID0gaWNsX3Vw ZGF0ZV9zbGF2ZTsKIAogCWlmIChza2xfcGxhbmVfaGFzX3BsYW5hcihkZXZfcHJpdiwgcGlwZSwg cGxhbmVfaWQpKSB7Ci0JCWZvcm1hdHMgPSBza2xfcGxhbmFyX2Zvcm1hdHM7Ci0JCW51bV9mb3Jt YXRzID0gQVJSQVlfU0laRShza2xfcGxhbmFyX2Zvcm1hdHMpOworCQlpZiAoaWNsX2lzX2hkcl9w bGFuZShwbGFuZSkpIHsKKwkJCWZvcm1hdHMgPSBpY2xfaGRyX3BsYW5hcl9mb3JtYXRzOworCQkJ bnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKGljbF9oZHJfcGxhbmFyX2Zvcm1hdHMpOworCQl9IGVs c2UgeworCQkJZm9ybWF0cyA9IHNrbF9wbGFuYXJfZm9ybWF0czsKKwkJCW51bV9mb3JtYXRzID0g QVJSQVlfU0laRShza2xfcGxhbmFyX2Zvcm1hdHMpOworCQl9CiAJfSBlbHNlIHsKLQkJZm9ybWF0 cyA9IHNrbF9wbGFuZV9mb3JtYXRzOwotCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3Bs YW5lX2Zvcm1hdHMpOworCQlpZiAoaWNsX2lzX2hkcl9wbGFuZShwbGFuZSkpIHsKKwkJCWZvcm1h dHMgPSBpY2xfaGRyX3BsYW5lX2Zvcm1hdHM7CisJCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUo aWNsX2hkcl9wbGFuZV9mb3JtYXRzKTsKKwkJfSBlbHNlIHsKKwkJCWZvcm1hdHMgPSBza2xfcGxh bmVfZm9ybWF0czsKKwkJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0 cyk7CisJCX0KIAl9CiAKIAlwbGFuZS0+aGFzX2NjcyA9IHNrbF9wbGFuZV9oYXNfY2NzKGRldl9w cml2LCBwaXBlLCBwbGFuZV9pZCk7CkBAIC0yMDc0LDYgKzIxMzgsMTIgQEAgc2tsX3VuaXZlcnNh bF9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkg ICAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfAogCQkJCQkgICAgIEJJVChEUk1fTU9E RV9CTEVORF9DT1ZFUkFHRSkpOwogCisJaWYgKGljbF9pc19oZHJfcGxhbmUocGxhbmUpKQorCQlk cm1fcGxhbmVfY3JlYXRlX3BpeGVsX25vcm1hbGl6ZV9yYW5nZV9wcm9wZXJ0eSgmcGxhbmUtPmJh c2UsCisJCQkJQklUKERSTV9QSVhFTF9OT1JNQUxJWkVfUkFOR0VfMF8xKSB8CisJCQkJQklUKERS TV9QSVhFTF9OT1JNQUxJWkVfUkFOR0VfMF8yNTUpLAorCQkJCURSTV9QSVhFTF9OT1JNQUxJWkVf UkFOR0VfMF8xKTsKKwogCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwbGFuZS0+YmFzZSwgJmludGVs X3BsYW5lX2hlbHBlcl9mdW5jcyk7CiAKIAlyZXR1cm4gcGxhbmU7Ci0tIAoyLjcuNAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==