From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 5/6] drm/i915: Implement color management on bdw/skl/bxt/kbl Date: Mon, 1 Feb 2016 15:18:36 +0000 Message-ID: <1454339917-31569-6-git-send-email-lionel.g.landwerlin@intel.com> References: <1454339917-31569-1-git-send-email-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 6CC476E492 for ; Mon, 1 Feb 2016 07:18:55 -0800 (PST) In-Reply-To: <1454339917-31569-1-git-send-email-lionel.g.landwerlin@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 List-Id: intel-gfx@lists.freedesktop.org UGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZSBieSBTaGFzaGFuayBTaGFybWEuCgp2Mjog RG8gbm90IHJlYWQgR0FNTUFfTU9ERSByZWdpc3RlciB0byBmaWd1cmUgd2hhdCBtb2RlIHdlJ3Jl IGluCgp2MzogUHJvZ3JhbSBQUkVDX1BBTF9HQ19NQVggdG8gY2xhbXAgcGl4ZWwgdmFsdWVzID4g MS4wCgogICAgQWRkIGRvY3VtZW50YXRpb24gb24gaG93IHRoZSBCcm9hZGNhc3QgUkdCIHByb3Bl cnR5IGlzIGFmZmVjdGVkIGJ5CiAgICBDVE1fTUFUUklYCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwg TGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Ci0tLQogRG9jdW1lbnRh dGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jICAgICAgfCAgMjQgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwg IDIyICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgIHwgMzY3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgfCAgMjIgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgfCAgIDYgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlvbnMoKyksIDYwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbCBiL0Rv Y3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAppbmRleCA2MzdlNzE4Li5lMGFiYTc0IDEwMDY0 NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwKKysrIGIvRG9jdW1lbnRhdGlv bi9Eb2NCb29rL2dwdS50bXBsCkBAIC0yMTUyLDcgKzIxNTIsMTEgQEAgdm9pZCBpbnRlbF9jcnRf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3Rk PgogCTx0ZCB2YWxpZ249InRvcCIgPnsgIkF1dG9tYXRpYyIsICJGdWxsIiwgIkxpbWl0ZWQgMTY6 MjM1IiB9PC90ZD4KIAk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgotCTx0ZCB2YWxp Z249InRvcCIgPlRCRDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+V2hlbiB0aGlzIHByb3BlcnR5 IGlzIHNldCB0byBMaW1pdGVkIDE2OjIzNQorCQlhbmQgQ1RNX01BVFJJWCBpcyBzZXQsIHRoZSBo YXJkd2FyZSB3aWxsIGJlIHByb2dyYW1tZWQgd2l0aAorCQl0aGUgcmVzdWx0IG9mIHRoZSBtdWx0 aXBsaWNhdGlvbiBvZiBDVE1fTUFUUklYIGJ5IHRoZSBsaW1pdGVkCisJCXJhbmdlIG1hdHJpeCB0 byBlbnN1cmUgdGhlIHBpeGVscyBub3JtYWx5IGluIHRoZSByYW5nZSAwLi4xLjAKKwkJYXJlIHJl bWFwcGVkIHRvIHRoZSByYW5nZSAxNi8yNTUuLjIzNS8yNTUuPC90ZD4KIAk8L3RyPgogCTx0cj4K IAk8dGQgdmFsaWduPSJ0b3AiID7igJxhdWRpb+KAnTwvdGQ+CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwppbmRleCAxMWQ4NDE0Li4zNjM3ZmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTYz LDYgKzYzLDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlcjsKICNkZWZpbmUgSVZC X0NVUlNPUl9PRkZTRVRTIFwKIAkuY3Vyc29yX29mZnNldHMgPSB7IENVUlNPUl9BX09GRlNFVCwg SVZCX0NVUlNPUl9CX09GRlNFVCwgSVZCX0NVUlNPUl9DX09GRlNFVCB9CiAKKyNkZWZpbmUgQkRX X0NPTE9SUyBcCisJLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDUxMiwgLmdhbW1hX2x1 dF9zaXplID0gNTEyIH0KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBp bnRlbF9pODMwX2luZm8gPSB7CiAJLmdlbiA9IDIsIC5pc19tb2JpbGUgPSAxLCAuY3Vyc29yX25l ZWRzX3BoeXNpY2FsID0gMSwgLm51bV9waXBlcyA9IDIsCiAJLmhhc19vdmVybGF5ID0gMSwgLm92 ZXJsYXlfbmVlZHNfcGh5c2ljYWwgPSAxLApAQCAtMjg1LDI0ICsyODgsMjggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9oYXN3ZWxsX21faW5mbyA9IHsKIAku aXNfbW9iaWxlID0gMSwKIH07CiAKKyNkZWZpbmUgQkRXX0ZFQVRVUkVTIFwKKwlIU1dfRkVBVFVS RVMsIFwKKwlCRFdfQ09MT1JTCisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2lu Zm8gaW50ZWxfYnJvYWR3ZWxsX2RfaW5mbyA9IHsKLQlIU1dfRkVBVFVSRVMsCisJQkRXX0ZFQVRV UkVTLAogCS5nZW4gPSA4LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2Vf aW5mbyBpbnRlbF9icm9hZHdlbGxfbV9pbmZvID0gewotCUhTV19GRUFUVVJFUywKKwlCRFdfRkVB VFVSRVMsCiAJLmdlbiA9IDgsIC5pc19tb2JpbGUgPSAxLAogfTsKIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9icm9hZHdlbGxfZ3QzZF9pbmZvID0gewotCUhT V19GRUFUVVJFUywKKwlCRFdfRkVBVFVSRVMsCiAJLmdlbiA9IDgsCiAJLnJpbmdfbWFzayA9IFJF TkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcgfCBCU0QyX1JJTkcs CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2Jyb2Fk d2VsbF9ndDNtX2luZm8gPSB7Ci0JSFNXX0ZFQVRVUkVTLAorCUJEV19GRUFUVVJFUywKIAkuZ2Vu ID0gOCwgLmlzX21vYmlsZSA9IDEsCiAJLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJ TkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcgfCBCU0QyX1JJTkcsCiB9OwpAQCAtMzE4LDEzICsz MjUsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVy cnl2aWV3X2luZm8gPSB7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9p bmZvIGludGVsX3NreWxha2VfaW5mbyA9IHsKLQlIU1dfRkVBVFVSRVMsCisJQkRXX0ZFQVRVUkVT LAogCS5pc19za3lsYWtlID0gMSwKIAkuZ2VuID0gOSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfc2t5bGFrZV9ndDNfaW5mbyA9IHsKLQlIU1dfRkVB VFVSRVMsCisJQkRXX0ZFQVRVUkVTLAogCS5pc19za3lsYWtlID0gMSwKIAkuZ2VuID0gOSwKIAku cmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVCT1hfUklO RyB8IEJTRDJfUklORywKQEAgLTM0MiwxNyArMzQ5LDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJveHRvbl9pbmZvID0gewogCS5oYXNfZmJjID0gMSwK IAlHRU5fREVGQVVMVF9QSVBFT0ZGU0VUUywKIAlJVkJfQ1VSU09SX09GRlNFVFMsCisJQkRXX0NP TE9SUywKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxf a2FieWxha2VfaW5mbyA9IHsKLQlIU1dfRkVBVFVSRVMsCisJQkRXX0ZFQVRVUkVTLAogCS5pc19w cmVsaW1pbmFyeSA9IDEsCiAJLmlzX2thYnlsYWtlID0gMSwKIAkuZ2VuID0gOSwKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfa2FieWxha2VfZ3QzX2lu Zm8gPSB7Ci0JSFNXX0ZFQVRVUkVTLAorCUJEV19GRUFUVVJFUywKIAkuaXNfcHJlbGltaW5hcnkg PSAxLAogCS5pc19rYWJ5bGFrZSA9IDEsCiAJLmdlbiA9IDksCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCBjOTIxYWQ4Li4yYzZmNDYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTY1 OSw2ICs2NTksMTAgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3MgewogCS8qIHJlbmRl ciBjbG9jayBpbmNyZWFzZS9kZWNyZWFzZSAqLwogCS8qIGRpc3BsYXkgY2xvY2sgaW5jcmVhc2Uv ZGVjcmVhc2UgKi8KIAkvKiBwbGwgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8KKworCXZvaWQg KCpsb2FkX2RlZ2FtbWFfbHV0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOworCXZvaWQgKCpsb2Fk X2NzY19tYXRyaXgpKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CisJdm9pZCAoKmxvYWRfZ2FtbWFf bHV0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogfTsKIAogZW51bSBmb3JjZXdha2VfZG9tYWlu X2lkIHsKQEAgLTgwNiw2ICs4MTAsMTEgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKIAl1 OCBoYXNfc2xpY2VfcGc6MTsKIAl1OCBoYXNfc3Vic2xpY2VfcGc6MTsKIAl1OCBoYXNfZXVfcGc6 MTsKKworCXN0cnVjdCBjb2xvcl9sdXRzIHsKKwkJdTE2IGRlZ2FtbWFfbHV0X3NpemU7CisJCXUx NiBnYW1tYV9sdXRfc2l6ZTsKKwl9IGNvbG9yOwogfTsKIAogI3VuZGVmIERFRklORV9GTEFHCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCBmZGFlMzc0Li41NjI2ZWQ2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKQEAgLTc2NDgsNiArNzY0OCwyOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dl bGxzIHsKICNkZWZpbmUgUElQRV9DU0NfUE9TVE9GRl9NRShwaXBlKQlfTU1JT19QSVBFMyhwaXBl LCBfUElQRV9BX0NTQ19QT1NUT0ZGX01FLCBfUElQRV9CX0NTQ19QT1NUT0ZGX01FLCBfUElQRV9D X0NTQ19QT1NUT0ZGX01FKQogI2RlZmluZSBQSVBFX0NTQ19QT1NUT0ZGX0xPKHBpcGUpCV9NTUlP X1BJUEUzKHBpcGUsIF9QSVBFX0FfQ1NDX1BPU1RPRkZfTE8sIF9QSVBFX0JfQ1NDX1BPU1RPRkZf TE8sIF9QSVBFX0NfQ1NDX1BPU1RPRkZfTE8pCiAKKy8qIHBpcGUgZGVnYW1tYS9nYW1tYSBMVVRz IG9uIElWQisgKi8KKyNkZWZpbmUgX1BBTF9QUkVDX0lOREVYX0EJMHg0QTQwMAorI2RlZmluZSBf UEFMX1BSRUNfSU5ERVhfQgkweDRBQzAwCisjZGVmaW5lIF9QQUxfUFJFQ19JTkRFWF9DCTB4NEI0 MDAKKyNkZWZpbmUgICBQQUxfUFJFQ18xMF8xMl9CSVQJCSgwIDw8IDMxKQorI2RlZmluZSAgIFBB TF9QUkVDX1NQTElUX01PREUJCSgxIDw8IDMxKQorI2RlZmluZSAgIFBBTF9QUkVDX0FVVE9fSU5D UkVNRU5UCSgxIDw8IDE1KQorI2RlZmluZSBfUEFMX1BSRUNfREFUQV9BCTB4NEE0MDQKKyNkZWZp bmUgX1BBTF9QUkVDX0RBVEFfQgkweDRBQzA0CisjZGVmaW5lIF9QQUxfUFJFQ19EQVRBX0MJMHg0 QjQwNAorI2RlZmluZSBfUEFMX1BSRUNfR0NfTUFYX0EJMHg0QTQxMAorI2RlZmluZSBfUEFMX1BS RUNfR0NfTUFYX0IJMHg0QUMxMAorI2RlZmluZSBfUEFMX1BSRUNfR0NfTUFYX0MJMHg0QjQxMAor I2RlZmluZSBfUEFMX1BSRUNfRVhUX0dDX01BWF9BCTB4NEE0MjAKKyNkZWZpbmUgX1BBTF9QUkVD X0VYVF9HQ19NQVhfQgkweDRBQzIwCisjZGVmaW5lIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0MJMHg0 QjQyMAorCisjZGVmaW5lIFBSRUNfUEFMX0lOREVYKHBpcGUpCQlfTU1JT19QSVBFMyhwaXBlLCBf UEFMX1BSRUNfSU5ERVhfQSwgX1BBTF9QUkVDX0lOREVYX0IsIF9QQUxfUFJFQ19JTkRFWF9DKQor I2RlZmluZSBQUkVDX1BBTF9EQVRBKHBpcGUpCQlfTU1JT19QSVBFMyhwaXBlLCBfUEFMX1BSRUNf REFUQV9BLCBfUEFMX1BSRUNfREFUQV9CLCBfUEFMX1BSRUNfREFUQV9DKQorI2RlZmluZSBQUkVD X1BBTF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUzKHBpcGUsIF9QQUxfUFJFQ19HQ19NQVhf QSwgX1BBTF9QUkVDX0dDX01BWF9CLCBfUEFMX1BSRUNfR0NfTUFYX0MpICsgKGkpICogNCkKKyNk ZWZpbmUgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCBpKQlfTU1JTyhfUElQRTMocGlwZSwgX1BB TF9QUkVDX0VYVF9HQ19NQVhfQSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQiwgX1BBTF9QUkVDX0VY VF9HQ19NQVhfQykgKyAoaSkgKiA0KQorCiAvKiBNSVBJIERTSSByZWdpc3RlcnMgKi8KIAogI2Rl ZmluZSBfTUlQSV9QT1JUKHBvcnQsIGEsIGMpCV9QT1JUMyhwb3J0LCBhLCAwLCBjKQkvKiBwb3J0 cyBBIGFuZCBDIG9ubHkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCmluZGV4IDM5Y2Ey MTUuLjc4MmI5ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwpAQCAtMjQsNDQgKzI0 LDE2OSBAQAogCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAKKyNkZWZpbmUgQ1RNX0NPRUZGX1NJ R04JKDFVTEwgPDwgNjMpCisKKyNkZWZpbmUgQ1RNX0NPRUZGXzFfMAkoMVVMTCA8PCAzMikKKyNk ZWZpbmUgQ1RNX0NPRUZGXzJfMAkoQ1RNX0NPRUZGXzFfMCA8PCAxKQorI2RlZmluZSBDVE1fQ09F RkZfNF8wCShDVE1fQ09FRkZfMl8wIDw8IDEpCisjZGVmaW5lIENUTV9DT0VGRl8wXzUJKENUTV9D T0VGRl8xXzAgPj4gMSkKKyNkZWZpbmUgQ1RNX0NPRUZGXzBfMjUJKENUTV9DT0VGRl8wXzUgPj4g MSkKKyNkZWZpbmUgQ1RNX0NPRUZGXzBfMTI1CShDVE1fQ09FRkZfMF8yNSA+PiAxKQorCisjZGVm aW5lIENUTV9DT0VGRl9MSU1JVEVEX1JBTkdFICgoMjM1VUxMIC0gMTZVTEwpICogQ1RNX0NPRUZG XzFfMCAvIDI1NSkKKworI2RlZmluZSBDVE1fQ09FRkZfTkVHQVRJVkUoY29lZmYpCSgoKGNvZWZm KSAmIENUTV9DT0VGRl9TSUdOKSAhPSAwKQorI2RlZmluZSBDVE1fQ09FRkZfQUJTKGNvZWZmKQkJ KChjb2VmZikgJiAoQ1RNX0NPRUZGX1NJR04gLSAxKSkKKworLyoKKyAqIEV4dHJhY3QgdGhlIENT QyBjb2VmZmljaWVudCBmcm9tIGEgQ1RNIGNvZWZmaWNpZW50IChpbiBVMzIuMzIgZml4ZWQgcG9p bnQKKyAqIGZvcm1hdCkuIFRoaXMgbWFjcm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50IHdlIHdhbnQg dHJhbnNmb3JtZWQgYW5kIHRoZQorICogbnVtYmVyIG9mIGZyYWN0aW9uYWwgYml0cy4KKyAqCisg KiBXZSBvbmx5IGhhdmUgYSA5IGJpdHMgcHJlY2lzaW9uIHdpbmRvdyB3aGljaCBzbGlkZXMgZGVw ZW5kaW5nIG9uIHRoZSB2YWx1ZQorICogb2YgdGhlIENUTSBjb2VmZmljaWVudCBhbmQgd2Ugd3Jp dGUgdGhlIHZhbHVlIGZyb20gYml0IDMuIFdlIGFsc28gcm91bmQgdGhlCisgKiB2YWx1ZS4KKyAq LworI2RlZmluZSBJOVhYX0NTQ19DT0VGRl9GUChjb2VmZiwgZmJpdHMpCVwKKwkoY2xhbXBfdmFs KCgoY29lZmYpID4+ICgzMiAtIChmYml0cykgLSAzKSkgKyA0LCAwLCAweGZmZikgJiAweGZmOCkK KworI2RlZmluZSBJOVhYX0NTQ19DT0VGRl9MSU1JVEVEX1JBTkdFCVwKKwlJOVhYX0NTQ19DT0VG Rl9GUChDVE1fQ09FRkZfTElNSVRFRF9SQU5HRSwgOSkKKyNkZWZpbmUgSTlYWF9DU0NfQ09FRkZf MV8wCQlcCisJKCg3IDw8IDEyKSB8IEk5WFhfQ1NDX0NPRUZGX0ZQKENUTV9DT0VGRl8xXzAsIDgp KQorCisvKgorICogV2hlbiB1c2luZyBsaW1pdGVkIHJhbmdlLCBtdWx0aXBseSB0aGUgbWF0cml4 IGdpdmVuIGJ5IHVzZXJzcGFjZSBieQorICogdGhlIG1hdHJpeCB0aGF0IHdlIHdvdWxkIHVzZSBm b3IgdGhlIGxpbWl0ZWQgcmFuZ2UuIFdlIGRvIHRoZQorICogbXVsdGlwbGljYXRpb24gaW4gVTIu MzAgZm9ybWF0LgorICovCitzdGF0aWMgdm9pZCBjdG1fbWF0cml4X211bHRfYnlfbGltaXRlZCh1 aW50NjRfdCAqcmVzdWx0LAorCQkJCSAgICAgICBpbnQ2NF90ICppbnB1dCkKK3sKKwlpbnQgaSwg ajsKKwl1aW50NjRfdCBsaW1pdGVkX2NvZWZmc1s5XSA9IHsgQ1RNX0NPRUZGX0xJTUlURURfUkFO R0UsIDAsIDAsCisJCQkJICAgICAgIDAsIENUTV9DT0VGRl9MSU1JVEVEX1JBTkdFLCAwLAorCQkJ CSAgICAgICAwLCAwLCBDVE1fQ09FRkZfTElNSVRFRF9SQU5HRSB9OworCisJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUobGltaXRlZF9jb2VmZnMpOyBpKyspIHsKKwkJaW50IGNvbHVtbiA9IGkg JSAzLCByb3cgPSBpIC8gMzsKKwkJaW50IG5lZ2F0aXZlID0gMDsKKworCQlpbnB1dFtpXSA9IDA7 CisJCWZvciAoaiA9IDA7IGogPCAzOyBqKyspIHsKKwkJCWludDY0X3QgdXNlcl9jb2VmZiA9IGlu cHV0W2ogKiAzICsgY29sdW1uXTsKKwkJCXVpbnQ2NF90IGxpbWl0ZWRfY29lZmYgPQorCQkJCWxp bWl0ZWRfY29lZmZzW3JvdyAqIDMgKyBqXSA+PiAyOworCQkJdWludDY0X3QgYWJzX2NvZWZmID0K KwkJCQljbGFtcF92YWwoQ1RNX0NPRUZGX0FCUyh1c2VyX2NvZWZmKSwKKwkJCQkJICAwLAorCQkJ CQkgIENUTV9DT0VGRl80XzAgLSAxKSA+PiAyOworCisJCQlpZiAoQ1RNX0NPRUZGX05FR0FUSVZF KHVzZXJfY29lZmYpKQorCQkJCW5lZ2F0aXZlID0gIW5lZ2F0aXZlOworCQkJcmVzdWx0W2ldICs9 IGxpbWl0ZWRfY29lZmYgKiBhYnNfY29lZmY7CisJCX0KKworCQlyZXN1bHRbaV0gPj49IDI3Owor CQlpZiAobmVnYXRpdmUpCisJCQlyZXN1bHRbaV0gfD0gQ1RNX0NPRUZGX1NJR047CisJfQorfQor CiAvKgogICogU2V0IHVwIHRoZSBwaXBlIENTQyB1bml0LgogICoKLSAqIEN1cnJlbnRseSBvbmx5 IGZ1bGwgcmFuZ2UgUkdCIHRvIGxpbWl0ZWQgcmFuZ2UgUkdCIGNvbnZlcnNpb24KLSAqIGlzIHN1 cHBvcnRlZCwgYnV0IGV2ZW50dWFsbHkgdGhpcyBzaG91bGQgaGFuZGxlIHZhcmlvdXMKLSAqIFJH QjwtPllDYkNyIHNjZW5hcmlvcyBhcyB3ZWxsLgorICogQ3VycmVudGx5IG9ubHkgZnVsbCByYW5n ZSBSR0IgdG8gbGltaXRlZCByYW5nZSBSR0IgY29udmVyc2lvbiBpcyBzdXBwb3J0ZWQsCisgKiBi dXQgZXZlbnR1YWxseSB0aGlzIHNob3VsZCBoYW5kbGUgdmFyaW91cyBSR0I8LT5ZQ2JDciBzY2Vu YXJpb3MgYXMgd2VsbC4KICAqLwogc3RhdGljIHZvaWQgaTl4eF9sb2FkX2NzY19tYXRyaXgoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gY3J0Yy0+c3RhdGU7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JaW50 IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCXVpbnQxNl90IGNvZWZmID0gMHg3ODAwOyAvKiAx LjAgKi8KKwlpbnQgaSwgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJdWludDE2X3QgY29lZmZz WzldID0geyAwLCB9OwogCi0JLyoKLQkgKiBUT0RPOiBDaGVjayB3aGF0IGtpbmQgb2YgdmFsdWVz IGFjdHVhbGx5IGNvbWUgb3V0IG9mIHRoZSBwaXBlCi0JICogd2l0aCB0aGVzZSBjb2VmZi9wb3N0 b2ZmIHZhbHVlcyBhbmQgYWRqdXN0IHRvIGdldCB0aGUgYmVzdAotCSAqIGFjY3VyYWN5LiBQZXJo YXBzIHdlIGV2ZW4gbmVlZCB0byB0YWtlIHRoZSBicGMgdmFsdWUgaW50bwotCSAqIGNvbnNpZGVy YXRpb24uCi0JICovCisJaWYgKGNydGNfc3RhdGUtPmN0bV9tYXRyaXgpIHsKKwkJc3RydWN0IGRy bV9jb2xvcl9jdG0gKmN0bSA9CisJCQkoc3RydWN0IGRybV9jb2xvcl9jdG0gKiljcnRjX3N0YXRl LT5jdG1fbWF0cml4LT5kYXRhOworCQl1aW50NjRfdCBpbnB1dFs5XSA9IHsgMCwgfTsKKworCQlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQorCQkJY3RtX21hdHJp eF9tdWx0X2J5X2xpbWl0ZWQoaW5wdXQsIGN0bS0+bWF0cml4KTsKKwkJZWxzZSB7CisJCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnB1dCk7IGkrKykKKwkJCQlpbnB1dFtpXSA9IGN0bS0+ bWF0cml4W2ldOworCQl9CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9y X3JhbmdlKQotCQljb2VmZiA9ICgoMjM1IC0gMTYpICogKDEgPDwgMTIpIC8gMjU1KSAmIDB4ZmY4 OyAvKiAwLnh4eC4uLiAqLworCisJCS8qCisJCSAqIENvbnZlcnQgZml4ZWQgcG9pbnQgUzMxLjMy IGlucHV0IHRvIGZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhlCisJCSAqIGhhcmR3YXJlLgorCQkgKi8K KwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29lZmZzKTsgaSsrKSB7CisJCQl1aW50NjRf dCBhYnNfY29lZmYgPSAoKDFVTEwgPDwgNjMpIC0gMSkgJiBpbnB1dFtpXTsKKworCQkJLyoKKwkJ CSAqIENsYW1wIGlucHV0IHZhbHVlIHRvIG1pbi9tYXggc3VwcG9ydGVkIGJ5CisJCQkgKiBoYXJk d2FyZS4KKwkJCSAqLworCQkJYWJzX2NvZWZmID0gY2xhbXBfdmFsKGFic19jb2VmZiwgMCwgQ1RN X0NPRUZGXzRfMCAtIDEpOworCisJCQkvKiBzaWduIGJpdCAqLworCQkJaWYgKENUTV9DT0VGRl9O RUdBVElWRShpbnB1dFtpXSkpCisJCQkJY29lZmZzW2ldIHw9IDEgPDwgMTU7CisKKwkJCWlmIChh YnNfY29lZmYgPCBDVE1fQ09FRkZfMF8xMjUpCisJCQkJY29lZmZzW2ldIHw9ICgzIDw8IDEyKSB8 CisJCQkJCUk5WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgMTIpOworCQkJZWxzZSBpZiAoYWJz X2NvZWZmIDwgQ1RNX0NPRUZGXzBfMjUpCisJCQkJY29lZmZzW2ldIHw9ICgyIDw8IDEyKSB8CisJ CQkJCUk5WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgMTEpOworCQkJZWxzZSBpZiAoYWJzX2Nv ZWZmIDwgQ1RNX0NPRUZGXzBfNSkKKwkJCQljb2VmZnNbaV0gfD0gKDEgPDwgMTIpIHwKKwkJCQkJ STlYWF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZmLCAxMCk7CisJCQllbHNlIGlmIChhYnNfY29lZmYg PCBDVE1fQ09FRkZfMV8wKQorCQkJCWNvZWZmc1tpXSB8PSBJOVhYX0NTQ19DT0VGRl9GUChhYnNf Y29lZmYsIDkpOworCQkJZWxzZSBpZiAoYWJzX2NvZWZmIDwgQ1RNX0NPRUZGXzJfMCkKKwkJCQlj b2VmZnNbaV0gfD0gKDcgPDwgMTIpIHwKKwkJCQkJSTlYWF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZm LCA4KTsKKwkJCWVsc2UKKwkJCQljb2VmZnNbaV0gfD0gKDYgPDwgMTIpIHwKKwkJCQkJSTlYWF9D U0NfQ09FRkZfRlAoYWJzX2NvZWZmLCA3KTsKKwkJfQorCX0gZWxzZSB7CisJCS8qCisJCSAqIExv YWQgYW4gaWRlbnRpZnkgbWF0cml4IGlmIG5vIGNvZWZmaWNpZW50cyBhcmUgcHJvdmlkZWQuCisJ CSAqCisJCSAqIFRPRE86IENoZWNrIHdoYXQga2luZCBvZiB2YWx1ZXMgYWN0dWFsbHkgY29tZSBv dXQgb2YgdGhlCisJCSAqIHBpcGUgd2l0aCB0aGVzZSBjb2VmZi9wb3N0b2ZmIHZhbHVlcyBhbmQg YWRqdXN0IHRvIGdldCB0aGUKKwkJICogYmVzdCBhY2N1cmFjeS4gUGVyaGFwcyB3ZSBldmVuIG5l ZWQgdG8gdGFrZSB0aGUgYnBjIHZhbHVlCisJCSAqIGludG8gY29uc2lkZXJhdGlvbi4KKwkJICov CisJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJCWlmIChpbnRlbF9jcnRjLT5jb25maWct PmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJCQkJY29lZmZzW2kgKiAzICsgaV0gPQorCQkJCQlJOVhY X0NTQ19DT0VGRl9MSU1JVEVEX1JBTkdFOworCQkJZWxzZQorCQkJCWNvZWZmc1tpICogMyArIGld ID0gSTlYWF9DU0NfQ09FRkZfMV8wOworCQl9CisJfQogCiAJLyoKIAkgKiBHWS9HVSBhbmQgUlkv UlUgc2hvdWxkIGJlIHRoZSBvdGhlciB3YXkgYXJvdW5kIGFjY29yZGluZwogCSAqIHRvIEJTcGVj LCBidXQgcmVhbGl0eSBkb2Vzbid0IGFncmVlLiBKdXN0IHNldCB0aGVtIHVwIGluCiAJICogYSB3 YXkgdGhhdCByZXN1bHRzIGluIHRoZSBjb3JyZWN0IHBpY3R1cmUuCiAJICovCi0JSTkxNV9XUklU RShQSVBFX0NTQ19DT0VGRl9SWV9HWShwaXBlKSwgY29lZmYgPDwgMTYpOwotCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfQlkocGlwZSksIDApOworCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZf UllfR1kocGlwZSksIGNvZWZmc1swXSA8PCAxNiB8IGNvZWZmc1sxXSk7CisJSTkxNV9XUklURShQ SVBFX0NTQ19DT0VGRl9CWShwaXBlKSwgY29lZmZzWzJdIDw8IDE2KTsKIAotCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfUlVfR1UocGlwZSksIGNvZWZmKTsKLQlJOTE1X1dSSVRFKFBJUEVfQ1ND X0NPRUZGX0JVKHBpcGUpLCAwKTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBp cGUpLCBjb2VmZnNbM10gPDwgMTYgfCBjb2VmZnNbNF0pOworCUk5MTVfV1JJVEUoUElQRV9DU0Nf Q09FRkZfQlUocGlwZSksIGNvZWZmc1s1XSA8PCAxNik7CiAKLQlJOTE1X1dSSVRFKFBJUEVfQ1ND X0NPRUZGX1JWX0dWKHBpcGUpLCAwKTsKLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JWKHBp cGUpLCBjb2VmZiA8PCAxNik7CisJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9SVl9HVihwaXBl KSwgY29lZmZzWzZdIDw8IDE2IHwgY29lZmZzWzddKTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NP RUZGX0JWKHBpcGUpLCBjb2VmZnNbOF0gPDwgMTYpOwogCiAJSTkxNV9XUklURShQSVBFX0NTQ19Q UkVPRkZfSEkocGlwZSksIDApOwogCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01FKHBpcGUp LCAwKTsKQEAgLTg4LDIxICsyMTMsMTQ2IEBAIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9jc2NfbWF0 cml4KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl9CiB9CiAKLXZvaWQgaW50ZWxfY29sb3Jfc2V0 X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCisvKiogTG9hZHMgdGhlIGxlZ2FjeSBwYWxldHRl L2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIHdpdGggdGhlIHByZXBhcmVkCisgKiB2YWx1ZXMuCisg Ki8KK3N0YXRpYyB2b2lkIGk5eHhfbG9hZF9sZWdhY3lfZ2FtbWFfbHV0KHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKLQlpOXh4X2xvYWRfY3NjX21hdHJpeChjcnRjKTsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAy NTY7IGkrKykgeworCQl1aW50MzJfdCB3b3JkID0gKGludGVsX2NydGMtPmx1dF9yW2ldIDw8IDE2 KSB8CisJCQkoaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPDwgOCkgfAorCQkJaW50ZWxfY3J0Yy0+bHV0 X2JbaV07CisJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikpCisJCQlJOTE1X1dSSVRFKFBBTEVU VEUocGlwZSwgaSksIHdvcmQpOworCQllbHNlCisJCQlJOTE1X1dSSVRFKExHQ19QQUxFVFRFKHBp cGUsIGkpLCB3b3JkKTsKKwl9CisKKwlpbnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01P REVfTU9ERV84QklUOworCUk5MTVfV1JJVEUoR0FNTUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSwg R0FNTUFfTU9ERV9NT0RFXzhCSVQpOwogfQogCi0vKiogTG9hZHMgdGhlIHBhbGV0dGUvZ2FtbWEg dW5pdCBmb3IgdGhlIENSVEMgd2l0aCB0aGUgcHJlcGFyZWQgdmFsdWVzIG9uICAqLwotc3RhdGlj IHZvaWQgaTl4eF9sb2FkX2xlZ2FjeV9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQor c3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfZGVnYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpj cnRjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKnN0YXRlID0gY3J0Yy0+c3RhdGU7CisJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZSk7CisJZW51bSBwaXBl IHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOworCXVpbnQzMl90IGksIGx1dF9zaXpl ID0gSU5URUxfSU5GTyhkZXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplOworCisJSTkxNV9XUklU RShQUkVDX1BBTF9JTkRFWChwaXBlKSwKKwkJICAgUEFMX1BSRUNfU1BMSVRfTU9ERSB8IFBBTF9Q UkVDX0FVVE9fSU5DUkVNRU5UKTsKKworCWlmIChzdGF0ZS0+ZGVnYW1tYV9sdXQpIHsKKwkJc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9CisJCQkoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3Rh dGUtPmRlZ2FtbWFfbHV0LT5kYXRhOworCisJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsr KSB7CisJCQl1aW50MzJfdCB3b3JkID0KKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0u cmVkLCAxMCkgPDwgMjAgfAorCQkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwg MTApIDw8IDEwIHwKKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTApOwor CisJCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIHdvcmQpOworCQl9CisJfSBlbHNl IHsKKwkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKKwkJCXVpbnQzMl90IHYgPSAo aSAqICgoMSA8PCAxMCkgLSAxKSkgLyAobHV0X3NpemUgLSAxKTsKKworCQkJSTkxNV9XUklURShQ UkVDX1BBTF9EQVRBKHBpcGUpLAorCQkJCSAgICh2IDw8IDIwKSB8ICh2IDw8IDEwKSB8IHYpOwor CQl9CisJfQorCisJaW50ZWxfc3RhdGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfU1BM SVQ7CisJSTkxNV9XUklURShHQU1NQV9NT0RFKHBpcGUpLCBHQU1NQV9NT0RFX01PREVfU1BMSVQp OworCVBPU1RJTkdfUkVBRChHQU1NQV9NT0RFKHBpcGUpKTsKKworCS8qIFJlc2V0IHRoZSBpbmRl eCwgb3RoZXJ3aXNlIGl0IHByZXZlbnRzIHRoZSBsZWdhY3kgcGFsZXR0ZSB0byBiZQorCSAqIHdy aXR0ZW4gcHJvcGVybHkuCisJICovCisJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwg MCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb2Fkd2VsbF9sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUgPSBjcnRjLT5zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRlKTsKKwll bnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7CisJdWludDMyX3QgaSwg bHV0X29mZnNldCA9IElOVEVMX0lORk8oZGV2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSwKKwkJ bHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOworCisKKwlJ OTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLAorCQkgICBQQUxfUFJFQ19TUExJVF9NT0RF IHwgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQgfCBsdXRfb2Zmc2V0KTsKKworCWlmIChzdGF0ZS0+ Z2FtbWFfbHV0KSB7CisJCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPQorCQkJKHN0cnVjdCBk cm1fY29sb3JfbHV0ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7CisKKwkJZm9yIChpID0gMDsg aSA8IGx1dF9zaXplOyBpKyspIHsKKwkJCXVpbnQzMl90IHdvcmQgPQorCQkJKGRybV9jb2xvcl9s dXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxMCkgPDwgMjApIHwKKwkJCShkcm1fY29sb3JfbHV0X2V4 dHJhY3QobHV0W2ldLmdyZWVuLCAxMCkgPDwgMTApIHwKKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFj dChsdXRbaV0uYmx1ZSwgMTApOworCisJCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSks IHdvcmQpOworCQl9CisKKwkJLyogUHJvZ3JhbSB0aGUgbWF4IHJlZ2lzdGVyIHRvIGNsYW1wIHZh bHVlcyA+IDEuMC4gKi8KKwkJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMCksCisJ CQkgICBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTYpKTsKKwkJSTkxNV9XUklU RShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksCisJCQkgICBkcm1fY29sb3JfbHV0X2V4dHJhY3Qo bHV0W2ldLmdyZWVuLCAxNikpOworCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAy KSwKKwkJCSAgIGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTYpKTsKKwl9IGVs c2UgeworCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgeworCQkJdWludDMyX3QgdiA9 IChpICogKCgxIDw8IDEwKSAtIDEpKSAvIChsdXRfc2l6ZSAtIDEpOworCisJCQlJOTE1X1dSSVRF KFBSRUNfUEFMX0RBVEEocGlwZSksCisJCQkJICAgKHYgPDwgMjApIHwgKHYgPDwgMTApIHwgdik7 CisJCX0KKworCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgKDEgPDwgMTYp IC0gMSk7CisJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCAoMSA8PCAxNikg LSAxKTsKKwkJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMiksICgxIDw8IDE2KSAt IDEpOworCX0KKworCWludGVsX3N0YXRlLT5nYW1tYV9tb2RlID0gR0FNTUFfTU9ERV9NT0RFX1NQ TElUOworCUk5MTVfV1JJVEUoR0FNTUFfTU9ERShwaXBlKSwgR0FNTUFfTU9ERV9NT0RFX1NQTElU KTsKKwlQT1NUSU5HX1JFQUQoR0FNTUFfTU9ERShwaXBlKSk7CisKKwkvKiBSZXNldCB0aGUgaW5k ZXgsIG90aGVyd2lzZSBpdCBwcmV2ZW50cyB0aGUgbGVnYWN5IHBhbGV0dGUgdG8gYmUKKwkgKiB3 cml0dGVuIHByb3Blcmx5LgorCSAqLworCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSks IDApOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHNfaW50ZXJuYWwoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAorCQkJCQkgIGJvb2wgbGVnYWN5KQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl OwotCWludCBpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2lu dGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZTsKIAlib29sIHJlZW5hYmxlX2lwcyA9IGZhbHNlOwogCisJLyogVGhl IGNsb2NrcyBoYXZlIHRvIGJlIG9uIHRvIGxvYWQgdGhlIHBhbGV0dGUuICovCisJaWYgKCFjcnRj LT5zdGF0ZS0+YWN0aXZlKQorCQlyZXR1cm47CisKIAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXYp KSB7CiAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kc2lfZW5jb2RlcikKIAkJCWFzc2Vy dF9kc2lfcGxsX2VuYWJsZWQoZGV2X3ByaXYpOwpAQCAtMTE0LDQyICszNjQsMzIgQEAgc3RhdGlj IHZvaWQgaTl4eF9sb2FkX2xlZ2FjeV9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQog CSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQgZ2FtbWEgYW5kIElQU19DVEwg aGFzIElQUyBlbmFibGVkLgogCSAqLwogCWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50ZWxfY3J0 Yy0+Y29uZmlnLT5pcHNfZW5hYmxlZCAmJgotCSAgICAoKEk5MTVfUkVBRChHQU1NQV9NT0RFKHBp cGUpKSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQotCSAgICAgR0FNTUFfTU9ERV9NT0RFX1NQ TElUKSkgeworCSAgICBpbnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVf U1BMSVQpIHsKIAkJaHN3X2Rpc2FibGVfaXBzKGludGVsX2NydGMpOwogCQlyZWVuYWJsZV9pcHMg PSB0cnVlOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotCQl1aW50MzJfdCB3 b3JkID0gKGludGVsX2NydGMtPmx1dF9yW2ldIDw8IDE2KSB8Ci0JCQkoaW50ZWxfY3J0Yy0+bHV0 X2dbaV0gPDwgOCkgfAotCQkJaW50ZWxfY3J0Yy0+bHV0X2JbaV07Ci0JCWlmIChIQVNfR01DSF9E SVNQTEFZKGRldikpCi0JCQlJOTE1X1dSSVRFKFBBTEVUVEUocGlwZSwgaSksIHdvcmQpOwotCQll bHNlCi0JCQlJOTE1X1dSSVRFKExHQ19QQUxFVFRFKHBpcGUsIGkpLCB3b3JkKTsKKwlpZiAobGVn YWN5KQorCQlpOXh4X2xvYWRfbGVnYWN5X2dhbW1hX2x1dChjcnRjKTsKKwllbHNlIHsKKwkJZGV2 X3ByaXYtPmRpc3BsYXkubG9hZF9kZWdhbW1hX2x1dChjcnRjKTsKKwkJZGV2X3ByaXYtPmRpc3Bs YXkubG9hZF9nYW1tYV9sdXQoY3J0Yyk7CiAJfQogCi0JSTkxNV9XUklURShHQU1NQV9NT0RFKGlu dGVsX2NydGMtPnBpcGUpLCBHQU1NQV9NT0RFX01PREVfOEJJVCk7Ci0KIAlpZiAocmVlbmFibGVf aXBzKQogCQloc3dfZW5hYmxlX2lwcyhpbnRlbF9jcnRjKTsKIH0KIAotdm9pZCBpbnRlbF9jb2xv cl9sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit2b2lkIGludGVsX2NvbG9y X2xlZ2FjeV9sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0JLyogVGhlIGNsb2Nr cyBoYXZlIHRvIGJlIG9uIHRvIGxvYWQgdGhlIHBhbGV0dGUuICovCi0JaWYgKCFjcnRjLT5zdGF0 ZS0+YWN0aXZlKQotCQlyZXR1cm47Ci0KLQlpOXh4X2xvYWRfbGVnYWN5X2dhbW1hX2x1dChjcnRj KTsKKwlpbnRlbF9jb2xvcl9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0YywgdHJ1ZSk7CiB9CiAKIHZv aWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUx NiAqcmVkLCB1MTYgKmdyZWVuLAogCQkJCSAgdTE2ICpibHVlLCB1aW50MzJfdCBzdGFydCwgdWlu dDMyX3Qgc2l6ZSkKIHsKLQlpbnQgZW5kID0gKHN0YXJ0ICsgc2l6ZSA+IDI1NikgPyAyNTYgOiBz dGFydCArIHNpemUsIGk7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOworCWludCBlbmQgPSAoc3RhcnQgKyBzaXplID4gMjU2KSA/IDI1NiA6IHN0 YXJ0ICsgc2l6ZSwgaTsKIAogCWZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKIAkJaW50 ZWxfY3J0Yy0+bHV0X3JbaV0gPSByZWRbaV0gPj4gODsKQEAgLTE1NywxMSArMzk3LDI5IEBAIHZv aWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUx NiAqcmVkLCB1MTYgKmdyZWVuLAogCQlpbnRlbF9jcnRjLT5sdXRfYltpXSA9IGJsdWVbaV0gPj4g ODsKIAl9CiAKLQlpbnRlbF9jb2xvcl9sb2FkX2dhbW1hX2x1dChjcnRjKTsKKwlpbnRlbF9jb2xv cl9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0YywgdHJ1ZSk7Cit9CisKK3ZvaWQgaW50ZWxfY29sb3Jf bG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlpbnRlbF9jb2xvcl9sb2FkX2x1 dHNfaW50ZXJuYWwoY3J0YywKKwkJCQkgICAgICAgIWNydGMtPnN0YXRlLT5kZWdhbW1hX2x1dCAm JgorCQkJCSAgICAgICAhY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dCk7Cit9CisKK3ZvaWQgaW50ZWxf Y29sb3Jfc2V0X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKGRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21h dHJpeCkKKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4KGNydGMpOwogfQogCiB2 b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogeworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJaW50IGk7CiAKQEAgLTE3MSw0ICs0MjksMjMgQEAg dm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJaW50ZWxfY3J0 Yy0+bHV0X2dbaV0gPSBpOwogCQlpbnRlbF9jcnRjLT5sdXRfYltpXSA9IGk7CiAJfQorCisJaWYg KElTX0JST0FEV0VMTChkZXYpIHx8IElTX1NLWUxBS0UoZGV2KSB8fAorCSAgICBJU19CUk9YVE9O KGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkgeworCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2Rl Z2FtbWFfbHV0ID0gYnJvYWR3ZWxsX2xvYWRfZGVnYW1tYV9sdXQ7CisJCWRldl9wcml2LT5kaXNw bGF5LmxvYWRfZ2FtbWFfbHV0ID0gYnJvYWR3ZWxsX2xvYWRfZ2FtbWFfbHV0OworCQlkZXZfcHJp di0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBpOXh4X2xvYWRfY3NjX21hdHJpeDsKKwl9IGVs c2UgeworCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBpOXh4X2xvYWRfY3Nj X21hdHJpeDsKKwl9CisKKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5jb2xvci5kZWdhbW1hX2x1dF9z aXplICE9IDAgJiYKKwkgICAgSU5URUxfSU5GTyhkZXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZSAh PSAwKSB7CisJCVdBUk5fT04oIWRldl9wcml2LT5kaXNwbGF5LmxvYWRfZGVnYW1tYV9sdXQgfHwK KwkJCSFkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2dhbW1hX2x1dCB8fAorCQkJIWRldl9wcml2LT5k aXNwbGF5LmxvYWRfY3NjX21hdHJpeCk7CisJCWRybV9oZWxwZXJfY3J0Y19lbmFibGVfY29sb3Jf bWdtdChjcnRjLAorCQkJCQlJTlRFTF9JTkZPKGRldiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUs CisJCQkJCUlOVEVMX0lORk8oZGV2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUpOworCX0KIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAxZmU4OWYzLi4xZTI1NDRkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00ODU0LDcgKzQ4NTQsNyBAQCBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICog T24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5pbmcgYnV0 IHdpdGgKIAkgKiBjbG9ja3MgZW5hYmxlZAogCSAqLwotCWludGVsX2NvbG9yX2xvYWRfZ2FtbWFf bHV0KGNydGMpOworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKIAogCWludGVsX3VwZGF0 ZV93YXRlcm1hcmtzKGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwpAQCAt NDk0OSw3ICs0OTQ5LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRo ZSBwaXBlIGlzIHJ1bm5pbmcgYnV0IHdpdGgKIAkgKiBjbG9ja3MgZW5hYmxlZAogCSAqLwotCWlu dGVsX2NvbG9yX2xvYWRfZ2FtbWFfbHV0KGNydGMpOworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhj cnRjKTsKIAogCWludGVsX2RkaV9zZXRfcGlwZV9zZXR0aW5ncyhjcnRjKTsKIAlpZiAoIWludGVs X2NydGMtPmNvbmZpZy0+aGFzX2RzaV9lbmNvZGVyKQpAQCAtNjE2NCw3ICs2MTY0LDcgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAK IAlpOXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwogCi0JaW50ZWxfY29sb3JfbG9hZF9nYW1t YV9sdXQoY3J0Yyk7CisJaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNydGMpOwogCiAJaW50ZWxfZW5h YmxlX3BpcGUoaW50ZWxfY3J0Yyk7CiAKQEAgLTYyMTcsNyArNjIxNyw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaTl4eF9wZml0X2Vu YWJsZShpbnRlbF9jcnRjKTsKIAotCWludGVsX2NvbG9yX2xvYWRfZ2FtbWFfbHV0KGNydGMpOwor CWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKIAogCWludGVsX3VwZGF0ZV93YXRlcm1hcmtz KGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwpAQCAtMTE5MDMsNyArMTE5 MDMsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaW50 ZWxfaGVscGVyX2Z1bmNzID0gewogCS5tb2RlX3NldF9iYXNlX2F0b21pYyA9IGludGVsX3BpcGVf c2V0X2Jhc2VfYXRvbWljLAotCS5sb2FkX2x1dCA9IGludGVsX2NvbG9yX2xvYWRfZ2FtbWFfbHV0 LAorCS5sb2FkX2x1dCA9IGludGVsX2NvbG9yX2xlZ2FjeV9sb2FkX2x1dCwKIAkuYXRvbWljX2Jl Z2luID0gaW50ZWxfYmVnaW5fY3J0Y19jb21taXQsCiAJLmF0b21pY19mbHVzaCA9IGludGVsX2Zp bmlzaF9jcnRjX2NvbW1pdCwKIAkuYXRvbWljX2NoZWNrID0gaW50ZWxfY3J0Y19hdG9taWNfY2hl Y2ssCkBAIC0xMzQzMyw2ICsxMzQzMywxNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21t aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCWh3X2NoZWNrID0gdHJ1ZTsKIAkJfQogCisJ CWlmICghbW9kZXNldCAmJgorCQkgICAgY3J0Yy0+c3RhdGUtPmFjdGl2ZSAmJgorCQkgICAgY3J0 Yy0+c3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgeworCQkJLyogT25seSB1cGRhdGUgY29sb3Ig bWFuYWdlbWVudCB3aGVuIG5vdCBkb2luZworCQkJICogYSBtb2Rlc2V0IGFzIHRoaXMgd2lsbCBi ZSBkb25lIGJ5CisJCQkgKiBjcnRjX2VuYWJsZSBhbHJlYWR5LgorCQkJICovCisJCQlpbnRlbF9j b2xvcl9zZXRfY3NjKGNydGMpOworCQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNydGMpOworCQl9 CisKIAkJaWYgKCFtb2Rlc2V0KQogCQkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRj KTsKIApAQCAtMTM1MjQsNiArMTM1MzUsNyBAQCBvdXQ6CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jcnRjX2Z1bmNzIGludGVsX2NydGNfZnVuY3MgPSB7CiAJLmdhbW1hX3NldCA9IGludGVsX2Nv bG9yX2xlZ2FjeV9nYW1tYV9zZXQsCiAJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnLAorCS5zZXRfcHJvcGVydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3NldF9w cm9wZXJ0eSwKIAkuZGVzdHJveSA9IGludGVsX2NydGNfZGVzdHJveSwKIAkucGFnZV9mbGlwID0g aW50ZWxfY3J0Y19wYWdlX2ZsaXAsCiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9j cnRjX2R1cGxpY2F0ZV9zdGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMTE1YzUz YS4uMjE0N2UwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTUwNyw2ICs1MDcsOCBA QCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7CiAJLyogSVZCIHNwcml0ZSBzY2FsaW5nIHcvYSAo V2FDeFNSRGlzYWJsZWRGb3JTcHJpdGVTY2FsaW5nOml2YikgKi8KIAlib29sIGRpc2FibGVfbHBf d207CiAKKwl1aW50MzJfdCBnYW1tYV9tb2RlOworCiAJc3RydWN0IHsKIAkJLyoKIAkJICogb3B0 aW1hbCB3YXRlcm1hcmtzLCBwcm9ncmFtbWVkIHBvc3QtdmJsYW5rIHdoZW4gdGhpcyBzdGF0ZQpA QCAtMTYyMiw5ICsxNjI0LDExIEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBl cl9mdW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3M7CiAKIC8qIGludGVsX2NvbG9yLmMgKi8K IHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwordm9pZCBpbnRl bF9jb2xvcl91cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHZvaWQgaW50ZWxfY29sb3Jf c2V0X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwotdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2dh bW1hX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwordm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1 dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHZvaWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1h X3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAogCQkJCSAg dTE2ICpibHVlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSk7Cit2b2lkIGludGVsX2Nv bG9yX2xlZ2FjeV9sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogCiAjZW5kaWYgLyog X19JTlRFTF9EUlZfSF9fICovCi0tIAoyLjcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK