From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 2/2] drm/i915: Use intel_ types more consistently for color management code Date: Thu, 6 Dec 2018 16:54:01 -0800 Message-ID: <20181207005401.13988-3-matthew.d.roper@intel.com> References: <20181207005401.13988-1-matthew.d.roper@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 ESMTPS id 95D786E69C for ; Fri, 7 Dec 2018 00:54:48 +0000 (UTC) In-Reply-To: <20181207005401.13988-1-matthew.d.roper@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 VHJ5IHRvIGJlIG1vcmUgY29uc2lzdGVudCBhYm91dCBpbnRlbF8qIHR5cGVzIHJhdGhlciB0aGFu IGRybV8qIHR5cGVzCmZvciBsb3dlci1sZXZlbCBkcml2ZXIgZnVuY3Rpb25zLiAgV2hpbGUgd2Un cmUgYXQgaXQsIGxldCdzIGFsc28gYmUgbW9yZQpjb25zaXN0ZW50IHdpdGggc3RhdGUgdmFyaWFi bGUgbmFtaW5nIChoYWxmIG9mIHRoZSBwbGF0Zm9ybXMgdXNlIHRoZQpuYW1lICdzdGF0ZScgd2hl cmVhcyB0aGUgb3RoZXIgaGFsZiB1c2VkICdjcnRjX3N0YXRlJykuCgpTaWduZWQtb2ZmLWJ5OiBN YXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29sb3IuYyAgIHwgMjA3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMjAgKystLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA4ICstCiA0IGZpbGVzIGNoYW5nZWQsIDEx MiBpbnNlcnRpb25zKCspLCAxMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggNzQ2OWE3Nzg1MjUzLi40OGZiNWU5YmQwOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtMzIxLDggKzMyMSw4IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKIAkv KiBkaXNwbGF5IGNsb2NrIGluY3JlYXNlL2RlY3JlYXNlICovCiAJLyogcGxsIGNsb2NrIGluY3Jl YXNlL2RlY3JlYXNlICovCiAKLQl2b2lkICgqbG9hZF9jc2NfbWF0cml4KShzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpOwotCXZvaWQgKCpsb2FkX2x1dHMpKHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CisJdm9pZCAoKmxvYWRfY3NjX21hdHJpeCkoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnN0YXRlKTsKKwl2b2lkICgqbG9hZF9sdXRzKShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqc3RhdGUpOwogfTsKIAogI2RlZmluZSBDU1JfVkVSU0lPTihtYWpvciwgbWlu b3IpCSgobWFqb3IpIDw8IDE2IHwgKG1pbm9yKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5j CmluZGV4IDUxMjdkYTI4NmEyYi4uMzM1YzQ3MDJmY2ZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMKQEAgLTc0LDEyICs3NCwxMiBAQAogI2RlZmluZSBJTEtfQ1NDX0NPRUZGXzFfMAkJ XAogCSgoNyA8PCAxMikgfCBJTEtfQ1NDX0NPRUZGX0ZQKENUTV9DT0VGRl8xXzAsIDgpKQogCi1z dGF0aWMgYm9vbCBjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKnN0YXRlKQorc3RhdGljIGJvb2wgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQogewotCXJldHVybiAhc3RhdGUtPmRlZ2FtbWFfbHV0 ICYmCi0JCSFzdGF0ZS0+Y3RtICYmCi0JCXN0YXRlLT5nYW1tYV9sdXQgJiYKLQkJZHJtX2NvbG9y X2x1dF9zaXplKHN0YXRlLT5nYW1tYV9sdXQpID09IExFR0FDWV9MVVRfTEVOR1RIOworCXJldHVy biAhc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgJiYKKwkJIXN0YXRlLT5iYXNlLmN0bSAmJgorCQlz dGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKKwkJZHJtX2NvbG9yX2x1dF9zaXplKHN0YXRlLT5iYXNl LmdhbW1hX2x1dCkgPT0gTEVHQUNZX0xVVF9MRU5HVEg7CiB9CiAKIC8qCkBAIC0xMDgsMTAgKzEw OCwxMCBAQCBzdGF0aWMgdTY0ICpjdG1fbXVsdF9ieV9saW1pdGVkKHU2NCAqcmVzdWx0LCBjb25z dCB1NjQgKmlucHV0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIGlsa19sb2Fk X3ljYmNyX2NvbnZlcnNpb25fbWF0cml4KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQor c3RhdGljIHZvaWQgaWxrX2xvYWRfeWNiY3JfY29udmVyc2lvbl9tYXRyaXgoc3RydWN0IGludGVs X2NydGMgKmNydGMpCiB7Ci0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYp OworCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAogCUk5MTVfV1JJVEUoUElQRV9DU0Nf UFJFT0ZGX0hJKHBpcGUpLCAwKTsKIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9NRShwaXBl KSwgMCk7CkBAIC0xMzIsMTQgKzEzMiwxMiBAQCBzdGF0aWMgdm9pZCBpbGtfbG9hZF95Y2Jjcl9j b252ZXJzaW9uX21hdHJpeChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAlJOTE1X1dS SVRFKFBJUEVfQ1NDX01PREUocGlwZSksIDApOwogfQogCi1zdGF0aWMgdm9pZCBpbGtfbG9hZF9j c2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3N0YXRpYyB2b2lk IGlsa19sb2FkX2NzY19tYXRyaXgoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQogewot CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmNydGM7Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwotCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlpbnQgaSwgcGlwZSA9 IGludGVsX2NydGMtPnBpcGU7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKHN0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCWludCBpLCBwaXBlID0gY3J0Yy0+cGlwZTsK IAl1aW50MTZfdCBjb2VmZnNbOV0gPSB7IDAsIH07Ci0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmludGVsX2NydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOwogCWJv b2wgbGltaXRlZF9jb2xvcl9yYW5nZSA9IGZhbHNlOwogCiAJLyoKQEAgLTE0NywxNCArMTQ1LDE0 IEBAIHN0YXRpYyB2b2lkIGlsa19sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQogCSAqIGRvIHRoZSByYW5nZSBjb21wcmVzc2lvbiB1c2luZyB0aGUgZ2Ft bWEgTFVUIGluc3RlYWQuCiAJICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCB8fCBJ U19IQVNXRUxMKGRldl9wcml2KSkKLQkJbGltaXRlZF9jb2xvcl9yYW5nZSA9IGludGVsX2NydGNf c3RhdGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2U7CisJCWxpbWl0ZWRfY29sb3JfcmFuZ2UgPSBzdGF0 ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsKIAotCWlmIChpbnRlbF9jcnRjX3N0YXRlLT5vdXRwdXRf Zm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNCQ1I0MjAgfHwKLQkgICAgaW50ZWxfY3J0 Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDQ0KSB7 Ci0JCWlsa19sb2FkX3ljYmNyX2NvbnZlcnNpb25fbWF0cml4KGludGVsX2NydGMpOworCWlmIChz dGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwIHx8CisJ ICAgIHN0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNCQ1I0NDQp IHsKKwkJaWxrX2xvYWRfeWNiY3JfY29udmVyc2lvbl9tYXRyaXgoY3J0Yyk7CiAJCXJldHVybjsK LQl9IGVsc2UgaWYgKGNydGNfc3RhdGUtPmN0bSkgewotCQlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAq Y3RtID0gY3J0Y19zdGF0ZS0+Y3RtLT5kYXRhOworCX0gZWxzZSBpZiAoc3RhdGUtPmJhc2UuY3Rt KSB7CisJCXN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBzdGF0ZS0+YmFzZS5jdG0tPmRhdGE7 CiAJCWNvbnN0IHU2NCAqaW5wdXQ7CiAJCXU2NCB0ZW1wWzldOwogCkBAIC0yNTMsMTYgKzI1MSwx NSBAQCBzdGF0aWMgdm9pZCBpbGtfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIC8qCiAgKiBTZXQgdXAgdGhlIHBpcGUgQ1NDIHVuaXQgb24gQ2hlcnJ5 Vmlldy4KICAqLwotc3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2NzY19tYXRyaXgoc3RydWN0 IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKK3N0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9jc2Nf bWF0cml4KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCWludCBw aXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKKwlpbnQgcGlwZSA9IHRvX2ludGVsX2Ny dGMoc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7CiAJdWludDMyX3QgbW9kZTsKIAotCWlmIChzdGF0 ZS0+Y3RtKSB7Ci0JCXN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBzdGF0ZS0+Y3RtLT5kYXRh OworCWlmIChzdGF0ZS0+YmFzZS5jdG0pIHsKKwkJc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9 IHN0YXRlLT5iYXNlLmN0bS0+ZGF0YTsKIAkJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9Owog CQlpbnQgaTsKIApAQCAtMjkzLDM2ICsyOTAsMzQgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19s b2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKIAkJSTkxNV9XUklU RShDR01fUElQRV9DU0NfQ09FRkY4KHBpcGUpLCBjb2VmZnNbOF0pOwogCX0KIAotCW1vZGUgPSAo c3RhdGUtPmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCk7CisJbW9kZSA9IChzdGF0ZS0+YmFz ZS5jdG0gPyBDR01fUElQRV9NT0RFX0NTQyA6IDApOwogCWlmICghY3J0Y19zdGF0ZV9pc19sZWdh Y3lfZ2FtbWEoc3RhdGUpKSB7Ci0JCW1vZGUgfD0gKHN0YXRlLT5kZWdhbW1hX2x1dCA/IENHTV9Q SVBFX01PREVfREVHQU1NQSA6IDApIHwKLQkJCShzdGF0ZS0+Z2FtbWFfbHV0ID8gQ0dNX1BJUEVf TU9ERV9HQU1NQSA6IDApOworCQltb2RlIHw9IChzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCA/IENH TV9QSVBFX01PREVfREVHQU1NQSA6IDApIHwKKwkJCShzdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPyBD R01fUElQRV9NT0RFX0dBTU1BIDogMCk7CiAJfQogCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShw aXBlKSwgbW9kZSk7CiB9CiAKLXZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCit2b2lkIGludGVsX2NvbG9yX3NldF9jc2Moc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj X3N0YXRlLT5jcnRjLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNl LmNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7CiAKIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4KQotCQlkZXZf cHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXgoY3J0Y19zdGF0ZSk7CisJCWRldl9wcml2LT5k aXNwbGF5LmxvYWRfY3NjX21hdHJpeChzdGF0ZSk7CiB9CiAKIC8qIExvYWRzIHRoZSBsZWdhY3kg cGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQy4gKi8KLXN0YXRpYyB2b2lkIGk5eHhfbG9h ZF9sdXRzX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgICAgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpibG9iLAotCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKK3N0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzX2ludGVybmFsKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpzdGF0ZSwKKwkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpibG9iKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKIAlpbnQgaTsKIAogCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkgewotCQlp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKSkKKwkJ aWYgKGludGVsX2NydGNfaGFzX3R5cGUoc3RhdGUsIElOVEVMX09VVFBVVF9EU0kpKQogCQkJYXNz ZXJ0X2RzaV9wbGxfZW5hYmxlZChkZXZfcHJpdik7CiAJCWVsc2UKIAkJCWFzc2VydF9wbGxfZW5h YmxlZChkZXZfcHJpdiwgcGlwZSk7CkBAIC0zNTMsNTMgKzM0OCw0OCBAQCBzdGF0aWMgdm9pZCBp OXh4X2xvYWRfbHV0c19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJfQogfQogCi1z dGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCitzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq c3RhdGUpCiB7Ci0JaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0ZS0+Y3J0YywgY3J0 Y19zdGF0ZS0+Z2FtbWFfbHV0LAotCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSkp OworCWk5eHhfbG9hZF9sdXRzX2ludGVybmFsKHN0YXRlLCBzdGF0ZS0+YmFzZS5nYW1tYV9sdXQp OwogfQogCiAvKiBMb2FkcyB0aGUgbGVnYWN5IHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENS VEMgb24gSGFzd2VsbC4gKi8KLXN0YXRpYyB2b2lkIGhhc3dlbGxfbG9hZF9sdXRzKHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3N0YXRpYyB2b2lkIGhhc3dlbGxfbG9hZF9sdXRz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBjcnRjX3N0YXRlLT5jcnRjOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwot CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3J0Y19zdGF0ZSA9Ci0JCXRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Y19zdGF0ZSk7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWJvb2wgcmVlbmFibGVfaXBzID0gZmFs c2U7CiAKIAkvKgogCSAqIFdvcmthcm91bmQgOiBEbyBub3QgcmVhZCBvciB3cml0ZSB0aGUgcGlw ZSBwYWxldHRlL2dhbW1hIGRhdGEgd2hpbGUKIAkgKiBHQU1NQV9NT0RFIGlzIGNvbmZpZ3VyZWQg Zm9yIHNwbGl0IGdhbW1hIGFuZCBJUFNfQ1RMIGhhcyBJUFMgZW5hYmxlZC4KIAkgKi8KLQlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgJiYgaW50ZWxfY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQgJiYK LQkgICAgKGludGVsX2NydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFX1NQ TElUKSkgewotCQloc3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Y19zdGF0ZSk7CisJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpICYmIHN0YXRlLT5pcHNfZW5hYmxlZCAmJgorCSAgICAoc3RhdGUtPmdh bW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFX1NQTElUKSkgeworCQloc3dfZGlzYWJsZV9pcHMo c3RhdGUpOwogCQlyZWVuYWJsZV9pcHMgPSB0cnVlOwogCX0KIAotCWludGVsX2NydGNfc3RhdGUt PmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKLQlJOTE1X1dSSVRFKEdBTU1BX01P REUoaW50ZWxfY3J0Yy0+cGlwZSksIEdBTU1BX01PREVfTU9ERV84QklUKTsKKwlzdGF0ZS0+Z2Ft bWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV84QklUOworCUk5MTVfV1JJVEUoR0FNTUFfTU9ERShj cnRjLT5waXBlKSwgR0FNTUFfTU9ERV9NT0RFXzhCSVQpOwogCi0JaTl4eF9sb2FkX2x1dHMoY3J0 Y19zdGF0ZSk7CisJaTl4eF9sb2FkX2x1dHMoc3RhdGUpOwogCiAJaWYgKHJlZW5hYmxlX2lwcykK LQkJaHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0Y19zdGF0ZSk7CisJCWhzd19lbmFibGVfaXBzKHN0 YXRlKTsKIH0KIAotc3RhdGljIHZvaWQgYmR3X2xvYWRfZGVnYW1tYV9sdXQoc3RydWN0IGRybV9j cnRjX3N0YXRlICpzdGF0ZSkKK3N0YXRpYyB2b2lkIGJkd19sb2FkX2RlZ2FtbWFfbHV0KHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5jcnRjLT5kZXYpOwotCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfY3J0YyhzdGF0ZS0+Y3J0YyktPnBpcGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOworCWVudW0gcGlw ZSBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKIAl1aW50MzJf dCBpLCBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9z aXplOwogCiAJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwKIAkJICAgUEFMX1BSRUNf U1BMSVRfTU9ERSB8IFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKIAotCWlmIChzdGF0ZS0+ZGVn YW1tYV9sdXQpIHsKLQkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IHN0YXRlLT5kZWdhbW1h X2x1dC0+ZGF0YTsKKwlpZiAoc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpIHsKKwkJc3RydWN0IGRy bV9jb2xvcl9sdXQgKmx1dCA9IHN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0LT5kYXRhOwogCiAJCWZv ciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CiAJCQl1aW50MzJfdCB3b3JkID0KQEAgLTQx OSwxMCArNDA5LDEwIEBAIHN0YXRpYyB2b2lkIGJkd19sb2FkX2RlZ2FtbWFfbHV0KHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqc3RhdGUpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBiZHdfbG9hZF9nYW1t YV9sdXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSwgdTMyIG9mZnNldCkKK3N0YXRpYyB2 b2lkIGJkd19sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUsIHUz MiBvZmZzZXQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+Y3J0Yy0+ZGV2KTsKLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3Rh dGUtPmNydGMpLT5waXBlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVs X2NydGMoc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7CiAJdWludDMyX3QgaSwgbHV0X3NpemUgPSBJ TlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7CiAKIAlXQVJOX09OKG9m ZnNldCAmIH5QQUxfUFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsKQEAgLTQzMiw4ICs0MjIsOCBAQCBz dGF0aWMgdm9pZCBiZHdfbG9hZF9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSwgdTMyIG9mZnNldCkKIAkJICAgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQgfAogCQkgICBvZmZz ZXQpOwogCi0JaWYgKHN0YXRlLT5nYW1tYV9sdXQpIHsKLQkJc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dCA9IHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7CisJaWYgKHN0YXRlLT5iYXNlLmdhbW1hX2x1 dCkgeworCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gc3RhdGUtPmJhc2UuZ2FtbWFfbHV0 LT5kYXRhOwogCiAJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CiAJCQl1aW50MzJf dCB3b3JkID0KQEAgLTQ2NywxMSArNDU3LDEwIEBAIHN0YXRpYyB2b2lkIGJkd19sb2FkX2dhbW1h X2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgb2Zmc2V0KQogfQogCiAvKiBM b2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBCcm9hZHdlbGwrLiAq Lwotc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KnN0YXRlKQorc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShzdGF0ZS0+Y3J0Yy0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50 ZWxfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRlKTsKLQllbnVtIHBpcGUgcGlwZSA9 IHRvX2ludGVsX2NydGMoc3RhdGUtPmNydGMpLT5waXBlOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKKwllbnVtIHBp cGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7CiAKIAlpZiAo Y3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RhdGUpKSB7CiAJCWhhc3dlbGxfbG9hZF9sdXRz KHN0YXRlKTsKQEAgLTQ3OSwxMCArNDY4LDkgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRf bHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQogCX0KIAogCWJkd19sb2FkX2RlZ2Ft bWFfbHV0KHN0YXRlKTsKLQliZHdfbG9hZF9nYW1tYV9sdXQoc3RhdGUsCi0JCQkgICBJTlRFTF9J TkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSk7CisJYmR3X2xvYWRfZ2FtbWFf bHV0KHN0YXRlLCBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSk7 CiAKLQlpbnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsKKwlz dGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsKIAlJOTE1X1dSSVRFKEdB TU1BX01PREUocGlwZSksIEdBTU1BX01PREVfTU9ERV9TUExJVCk7CiAJUE9TVElOR19SRUFEKEdB TU1BX01PREUocGlwZSkpOwogCkBAIC00OTMsMTAgKzQ4MSwxMCBAQCBzdGF0aWMgdm9pZCBicm9h ZHdlbGxfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCiAJSTkxNV9XUklU RShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdsa19sb2FkX2Rl Z2FtbWFfbHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBnbGtf bG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+Y3J0Yy0+ZGV2 KTsKLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmNydGMpLT5waXBlOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2Uu Y3J0Yy0+ZGV2KTsKKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2Uu Y3J0YyktPnBpcGU7CiAJY29uc3QgdWludDMyX3QgbHV0X3NpemUgPSAzMzsKIAl1aW50MzJfdCBp OwogCkBAIC01MjMsMTMgKzUxMSwxMSBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1 dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQogCQlJOTE1X1dSSVRFKFBSRV9DU0NfR0FN Q19EQVRBKHBpcGUpLCAoMSA8PCAxNikpOwogfQogCi1zdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRz KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBzdGF0ZS0+Y3J0YzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUpOwot CWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKKwllbnVtIHBpcGUg cGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7CiAKIAlnbGtfbG9h ZF9kZWdhbW1hX2x1dChzdGF0ZSk7CiAKQEAgLTU0MCwxNSArNTI2LDE1IEBAIHN0YXRpYyB2b2lk IGdsa19sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKIAogCWJkd19sb2Fk X2dhbW1hX2x1dChzdGF0ZSwgMCk7CiAKLQlpbnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1B X01PREVfTU9ERV8xMEJJVDsKKwlzdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV8x MEJJVDsKIAlJOTE1X1dSSVRFKEdBTU1BX01PREUocGlwZSksIEdBTU1BX01PREVfTU9ERV8xMEJJ VCk7CiAJUE9TVElOR19SRUFEKEdBTU1BX01PREUocGlwZSkpOwogfQogCiAvKiBMb2FkcyB0aGUg cGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBDaGVycnlWaWV3LiAqLwotc3RhdGlj IHZvaWQgY2hlcnJ5dmlld19sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkK K3N0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKKwlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9 IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7CiAJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsK QEAgLTU1OCwxNCArNTQ0LDEzIEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCiAJaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dh bW1hKHN0YXRlKSkgewogCQkvKiBUdXJuIG9mZiBkZWdhbW1hL2dhbW1hIG9uIENHTSBibG9jay4g Ki8KIAkJSTkxNV9XUklURShDR01fUElQRV9NT0RFKHBpcGUpLAotCQkJICAgKHN0YXRlLT5jdG0g PyBDR01fUElQRV9NT0RFX0NTQyA6IDApKTsKLQkJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0 Yywgc3RhdGUtPmdhbW1hX2x1dCwKLQkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZSkpOwor CQkJICAgKHN0YXRlLT5iYXNlLmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCkpOworCQlpOXh4 X2xvYWRfbHV0c19pbnRlcm5hbChzdGF0ZSwgc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KTsKIAkJcmV0 dXJuOwogCX0KIAotCWlmIChzdGF0ZS0+ZGVnYW1tYV9sdXQpIHsKLQkJbHV0ID0gc3RhdGUtPmRl Z2FtbWFfbHV0LT5kYXRhOworCWlmIChzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkgeworCQlsdXQg PSBzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dC0+ZGF0YTsKIAkJbHV0X3NpemUgPSBJTlRFTF9JTkZP KGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZTsKIAkJZm9yIChpID0gMDsgaSA8IGx1 dF9zaXplOyBpKyspIHsKIAkJCS8qIFdyaXRlIExVVCBpbiBVMC4xNCBmb3JtYXQuICovCkBAIC01 NzksOCArNTY0LDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2x1dHMoc3RydWN0IGRy bV9jcnRjX3N0YXRlICpzdGF0ZSkKIAkJfQogCX0KIAotCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KSB7 Ci0JCWx1dCA9IHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7CisJaWYgKHN0YXRlLT5iYXNlLmdhbW1h X2x1dCkgeworCQlsdXQgPSBzdGF0ZS0+YmFzZS5nYW1tYV9sdXQtPmRhdGE7CiAJCWx1dF9zaXpl ID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwogCQlmb3IgKGkg PSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewogCQkJLyogV3JpdGUgTFVUIGluIFUwLjEwIGZvcm1h dC4gKi8KQEAgLTU5NSwyOSArNTgwLDI5IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9s dXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCiAJfQogCiAJSTkxNV9XUklURShDR01f UElQRV9NT0RFKHBpcGUpLAotCQkgICAoc3RhdGUtPmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDog MCkgfAotCQkgICAoc3RhdGUtPmRlZ2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9ERV9ERUdBTU1BIDog MCkgfAotCQkgICAoc3RhdGUtPmdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVfR0FNTUEgOiAwKSk7 CisJCSAgIChzdGF0ZS0+YmFzZS5jdG0gPyBDR01fUElQRV9NT0RFX0NTQyA6IDApIHwKKwkJICAg KHN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9ERV9ERUdBTU1BIDogMCkgfAor CQkgICAoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9ERV9HQU1NQSA6IDApKTsK IAogCS8qCiAJICogQWxzbyBwcm9ncmFtIGEgbGluZWFyIExVVCBpbiB0aGUgbGVnYWN5IGJsb2Nr IChiZWhpbmQgdGhlCiAJICogQ0dNIGJsb2NrKS4KIAkgKi8KLQlpOXh4X2xvYWRfbHV0c19pbnRl cm5hbChjcnRjLCBOVUxMLCB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRlKSk7CisJaTl4eF9sb2Fk X2x1dHNfaW50ZXJuYWwoc3RhdGUsIE5VTEwpOwogfQogCi12b2lkIGludGVsX2NvbG9yX2xvYWRf bHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit2b2lkIGludGVsX2NvbG9y X2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGNfc3RhdGUtPmNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAotCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0 cyhjcnRjX3N0YXRlKTsKKwlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMoc3RhdGUpOwogfQog Ci1pbnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkgICAgICBz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCitpbnQgaW50ZWxfY29sb3JfY2hlY2so c3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjLT5iYXNlLmRldik7CiAJc2l6ZV90IGdhbW1hX2xlbmd0aCwgZGVnYW1tYV9sZW5ndGg7 CiAKIAlkZWdhbW1hX2xlbmd0aCA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1h X2x1dF9zaXplOwpAQCAtNjI3LDI3ICs2MTIsMjcgQEAgaW50IGludGVsX2NvbG9yX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkgKiBXZSBhbGxvdyBib3RoIGRlZ2FtbWEgJiBnYW1tYSBs dXRzIGF0IHRoZSByaWdodCBzaXplIG9yCiAJICogTlVMTC4KIAkgKi8KLQlpZiAoKCFjcnRjX3N0 YXRlLT5kZWdhbW1hX2x1dCB8fAotCSAgICAgZHJtX2NvbG9yX2x1dF9zaXplKGNydGNfc3RhdGUt PmRlZ2FtbWFfbHV0KSA9PSBkZWdhbW1hX2xlbmd0aCkgJiYKLQkgICAgKCFjcnRjX3N0YXRlLT5n YW1tYV9sdXQgfHwKLQkgICAgIGRybV9jb2xvcl9sdXRfc2l6ZShjcnRjX3N0YXRlLT5nYW1tYV9s dXQpID09IGdhbW1hX2xlbmd0aCkpCisJaWYgKCghc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwK KwkgICAgIGRybV9jb2xvcl9sdXRfc2l6ZShzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkgPT0gZGVn YW1tYV9sZW5ndGgpICYmCisJICAgICghc3RhdGUtPmJhc2UuZ2FtbWFfbHV0IHx8CisJICAgICBk cm1fY29sb3JfbHV0X3NpemUoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KSA9PSBnYW1tYV9sZW5ndGgp KQogCQlyZXR1cm4gMDsKIAogCS8qCiAJICogV2UgYWxzbyBhbGxvdyBubyBkZWdhbW1hIGx1dC9j dG0gYW5kIGEgZ2FtbWEgbHV0IGF0IHRoZSBsZWdhY3kKIAkgKiBzaXplICgyNTYgZW50cmllcyku CiAJICovCi0JaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNydGNfc3RhdGUpKQorCWlm IChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShzdGF0ZSkpCiAJCXJldHVybiAwOwogCiAJcmV0 dXJuIC1FSU5WQUw7CiB9CiAKLXZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCit2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwogCi0JZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShjcnRjLCAyNTYpOworCWRy bV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoJmNydGMtPmJhc2UsIDI1Nik7CiAKIAlpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0 cml4ID0gY2hlcnJ5dmlld19sb2FkX2NzY19tYXRyaXg7CkBAIC02NjksNyArNjU0LDcgQEAgdm9p ZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkvKiBFbmFibGUgY29s b3IgbWFuYWdlbWVudCBzdXBwb3J0IHdoZW4gd2UgaGF2ZSBkZWdhbW1hICYgZ2FtbWEgTFVUcy4g Ki8KIAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUgIT0g MCAmJgogCSAgICBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUgIT0g MCkKLQkJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoY3J0YywKKwkJZHJtX2NydGNfZW5hYmxl X2NvbG9yX21nbXQoJmNydGMtPmJhc2UsCiAJCQkJCSAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5j b2xvci5kZWdhbW1hX2x1dF9zaXplLAogCQkJCQkgICB0cnVlLAogCQkJCQkgICBJTlRFTF9JTkZP KGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IGRiNjAwNGE4ODNjNy4uNWI5NjU3OTdkZjRlIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC01NjQxLDcgKzU2NDEsNyBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcs CiAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5p bmcgYnV0IHdpdGgKIAkgKiBjbG9ja3MgZW5hYmxlZAogCSAqLwotCWludGVsX2NvbG9yX2xvYWRf bHV0cygmcGlwZV9jb25maWctPmJhc2UpOworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhwaXBlX2Nv bmZpZyk7CiAKIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzICE9IE5V TEwpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhvbGRfaW50ZWxfc3Rh dGUsIHBpcGVfY29uZmlnKTsKQEAgLTU3NTIsNyArNTc1Miw3IEBAIHN0YXRpYyB2b2lkIGhhc3dl bGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCiAJ aGFzd2VsbF9zZXRfcGlwZW1pc2MocGlwZV9jb25maWcpOwogCi0JaW50ZWxfY29sb3Jfc2V0X2Nz YygmcGlwZV9jb25maWctPmJhc2UpOworCWludGVsX2NvbG9yX3NldF9jc2MocGlwZV9jb25maWcp OwogCiAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKIApAQCAtNTc3MSw3ICs1NzcxLDcgQEAg c3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcsCiAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBw aXBlIGlzIHJ1bm5pbmcgYnV0IHdpdGgKIAkgKiBjbG9ja3MgZW5hYmxlZAogCSAqLwotCWludGVs X2NvbG9yX2xvYWRfbHV0cygmcGlwZV9jb25maWctPmJhc2UpOworCWludGVsX2NvbG9yX2xvYWRf bHV0cyhwaXBlX2NvbmZpZyk7CiAKIAkvKgogCSAqIERpc3BsYXkgV0EgIzExNTM6IGVuYWJsZSBo YXJkd2FyZSB0byBieXBhc3MgdGhlIGFscGhhIG1hdGgKQEAgLTYxMTcsNyArNjExNyw3IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnLAogCiAJaTl4eF9zZXRfcGlwZWNvbmYocGlwZV9jb25maWcpOwogCi0JaW50 ZWxfY29sb3Jfc2V0X2NzYygmcGlwZV9jb25maWctPmJhc2UpOworCWludGVsX2NvbG9yX3NldF9j c2MocGlwZV9jb25maWcpOwogCiAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKIApAQCAtNjEz Nyw3ICs2MTM3LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAKIAlpOXh4X3BmaXRfZW5hYmxlKHBpcGVf Y29uZmlnKTsKIAotCWludGVsX2NvbG9yX2xvYWRfbHV0cygmcGlwZV9jb25maWctPmJhc2UpOwor CWludGVsX2NvbG9yX2xvYWRfbHV0cyhwaXBlX2NvbmZpZyk7CiAKIAlkZXZfcHJpdi0+ZGlzcGxh eS5pbml0aWFsX3dhdGVybWFya3Mob2xkX2ludGVsX3N0YXRlLAogCQkJCQkgICAgIHBpcGVfY29u ZmlnKTsKQEAgLTYxOTMsNyArNjE5Myw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCiAJaTl4eF9wZml0X2VuYWJs ZShwaXBlX2NvbmZpZyk7CiAKLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoJnBpcGVfY29uZmlnLT5i YXNlKTsKKwlpbnRlbF9jb2xvcl9sb2FkX2x1dHMocGlwZV9jb25maWcpOwogCiAJaWYgKGRldl9w cml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQogCQlkZXZfcHJpdi0+ZGlz cGxheS5pbml0aWFsX3dhdGVybWFya3Mob2xkX2ludGVsX3N0YXRlLApAQCAtMTA5NzIsNyArMTA5 NzIsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAl9CiAKIAlpZiAoY3J0Y19zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Ci0J CXJldCA9IGludGVsX2NvbG9yX2NoZWNrKGNydGMsIGNydGNfc3RhdGUpOworCQlyZXQgPSBpbnRl bF9jb2xvcl9jaGVjayhpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiAJCWlmIChyZXQpCiAJCQly ZXR1cm4gcmV0OwogCkBAIC0xMzU0OCw4ICsxMzU0OCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2Jl Z2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoIW1vZGVzZXQgJiYK IAkgICAgKGludGVsX2NzdGF0ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKIAkgICAgIGlu dGVsX2NzdGF0ZS0+dXBkYXRlX3BpcGUpKSB7Ci0JCWludGVsX2NvbG9yX3NldF9jc2MoJmludGVs X2NzdGF0ZS0+YmFzZSk7Ci0JCWludGVsX2NvbG9yX2xvYWRfbHV0cygmaW50ZWxfY3N0YXRlLT5i YXNlKTsKKwkJaW50ZWxfY29sb3Jfc2V0X2NzYyhpbnRlbF9jc3RhdGUpOworCQlpbnRlbF9jb2xv cl9sb2FkX2x1dHMoaW50ZWxfY3N0YXRlKTsKIAl9CiAKIAkvKiBQZXJmb3JtIHZibGFuayBldmFz aW9uIGFyb3VuZCBjb21taXQgb3BlcmF0aW9uICovCkBAIC0xNDEyMiw3ICsxNDEyMiw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgZW51bSBwaXBlIHBpcGUpCiAKIAlkcm1fY3J0Y19oZWxwZXJfYWRkKCZpbnRlbF9jcnRjLT5i YXNlLCAmaW50ZWxfaGVscGVyX2Z1bmNzKTsKIAotCWludGVsX2NvbG9yX2luaXQoJmludGVsX2Ny dGMtPmJhc2UpOworCWludGVsX2NvbG9yX2luaXQoaW50ZWxfY3J0Yyk7CiAKIAlXQVJOX09OKGRy bV9jcnRjX2luZGV4KCZpbnRlbF9jcnRjLT5iYXNlKSAhPSBpbnRlbF9jcnRjLT5waXBlKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBhODE3N2NjZjFkNGYuLmJhMWQ5Nzk5MWQ1YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTIzMjcsMTAgKzIzMjcsMTAgQEAgaW50IGlu dGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpvbGRfY3J0Y18KIAkJCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9z dGF0ZSk7CiAKIC8qIGludGVsX2NvbG9yLmMgKi8KLXZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwotaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yywgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7Ci12b2lkIGludGVsX2NvbG9y X3NldF9jc2Moc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKLXZvaWQgaW50ZWxf Y29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cit2b2lk IGludGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpOworaW50IGludGVsX2Nv bG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqc3RhdGUpOwordm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpzdGF0ZSk7Cit2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqc3RhdGUpOwogCiAvKiBpbnRlbF9sc3Bjb24uYyAqLwogYm9vbCBsc3Bjb25faW5p dChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7Ci0tIAoyLjE0LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=