From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH] drm/i915/tgl: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Tue, 2 Jul 2019 11:24:34 +0530 Message-ID: <20190702055434.14630-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17E8C8991A for ; Tue, 2 Jul 2019 13:03:47 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: shashank.sharma@intel.com, Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org RnJvbSBHZW4xMiBvbndhcmRzLCBIRENQIEhXIGJsb2NrIGlzIGltcGxlbWVudGVkIHdpdGhpbiB0 cmFuc2NvZGVycy4KVGlsbCBHZW4xMSBIRENQIEhXIGJsb2NrIHdhcyBwYXJ0IG9mIERESS4KCkhl bmNlIHJlcXVpcmVkIGNoYW5nZXMgaW4gSFcgcHJvZ3JhbW1pbmcgaXMgaGFuZGxlZCBoZXJlLgoK djI6CiAgX01NSU9fVFJBTlMgaXMgdXNlZCBbTHVjYXMgYW5kIERhbmllbF0KICBwbGF0Zm9ybSBj aGVjayBpcyBtb3ZlZCBpbnRvIHRoZSBjYWxsZXIgW0x1Y2FzXQp2MzoKICBwbGF0Zm9ybSBjaGVj ayBpcyBtb3ZlZCBpbnRvIGEgbWFjcm8gW1NoYXNoYW5rXQoKU2lnbmVkLW9mZi1ieTogUmFtYWxp bmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfaGRjcC5jIHwgMTU1ICsrKysrKysrKysrKysrLS0tLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jIHwgICA5ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICB8IDEyMCArKysrKysrKysrKysrKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgIDggKysKIDQgZmls ZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKaW5kZXggYmMzYTk0ZDQ5MWM0Li4xNGJh NzIzYTM1NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf aGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCkBA IC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxf aGRjcC5oIgogI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCisjaW5jbHVkZSAiaW50ZWxfY29u bmVjdG9yLmgiCiAKICNkZWZpbmUgS0VZX0xPQURfVFJJRVMJNQogI2RlZmluZSBFTkNSWVBUX1NU QVRVU19DSEFOR0VfVElNRU9VVF9NUwk1MApAQCAtMTA0LDIzICsxMDUsMjEgQEAgYm9vbCBpbnRl bF9oZGNwMl9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlyZXR1 cm4gY2FwYWJsZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNlKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRl bF9oZGNwX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAg ICBlbnVtIHBpcGUgcGlwZSwgZW51bSBwb3J0IHBvcnQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKLQllbnVtIHBv cnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKIAl1MzIgcmVnOwogCi0JcmVnID0g STkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpOworCXJlZyA9IEk5MTVfUkVBRChIRENQ X1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpOwogCXJldHVybiByZWcgJiBIRENQX1NUQVRV U19FTkM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9oZGNwMl9pbl91c2Uoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorc3RhdGljIGlubGluZSBib29sIGludGVsX2hk Y3AyX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAg ZW51bSBwaXBlIHBpcGUsIGVudW0gcG9ydCBwb3J0KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Ci0JZW51bSBwb3J0 IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7CiAJdTMyIHJlZzsKIAotCXJlZyA9IEk5 MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKTsKKwlyZWcgPSBJOTE1X1JFQUQoSERDUDJf U1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSk7CiAJcmV0dXJuIHJlZyAmIExJTktfRU5DUllQ VElPTl9TVEFUVVM7CiB9CiAKQEAgLTI1MywzNyArMjUyLDU5IEBAIHN0YXRpYyBpbnQgaW50ZWxf d3JpdGVfc2hhX3RleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgc2hh X3RleHQpCiB9CiAKIHN0YXRpYwotdTMyIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKK3UzMiBpbnRlbF9oZGNwX2dl dF9yZXBlYXRlcl9jdGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCWVu dW0gcGlwZSBwaXBlLCBlbnVtIHBvcnQgcG9ydCkKIHsKLQllbnVtIHBvcnQgcG9ydCA9IGludGVs X2RpZ19wb3J0LT5iYXNlLnBvcnQ7Ci0Jc3dpdGNoIChwb3J0KSB7Ci0JY2FzZSBQT1JUX0E6Ci0J CXJldHVybiBIRENQX0RESUFfUkVQX1BSRVNFTlQgfCBIRENQX0RESUFfU0hBMV9NMDsKLQljYXNl IFBPUlRfQjoKLQkJcmV0dXJuIEhEQ1BfRERJQl9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJQl9TSEEx X00wOwotCWNhc2UgUE9SVF9DOgotCQlyZXR1cm4gSERDUF9ERElDX1JFUF9QUkVTRU5UIHwgSERD UF9ERElDX1NIQTFfTTA7Ci0JY2FzZSBQT1JUX0Q6Ci0JCXJldHVybiBIRENQX0RESURfUkVQX1BS RVNFTlQgfCBIRENQX0RESURfU0hBMV9NMDsKLQljYXNlIFBPUlRfRToKLQkJcmV0dXJuIEhEQ1Bf RERJRV9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJRV9TSEExX00wOwotCWRlZmF1bHQ6Ci0JCWJyZWFr OwotCX0KLQlEUk1fRVJST1IoIlVua25vd24gcG9ydCAlZFxuIiwgcG9ydCk7CisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTIpIHsKKwkJc3dpdGNoIChwaXBlKSB7CisJCWNhc2UgUElQRV9B OgorCQkJcmV0dXJuIEhEQ1BfVFJBTlNBX1JFUF9QUkVTRU5UIHwKKwkJCSAgICAgICBIRENQX1RS QU5TQV9TSEExX00wOworCQljYXNlIFBJUEVfQjoKKwkJCXJldHVybiBIRENQX1RSQU5TQl9SRVBf UFJFU0VOVCB8CisJCQkgICAgICAgSERDUF9UUkFOU0JfU0hBMV9NMDsKKwkJY2FzZSBQSVBFX0M6 CisJCQlyZXR1cm4gSERDUF9UUkFOU0NfUkVQX1BSRVNFTlQgfAorCQkJICAgICAgIEhEQ1BfVFJB TlNDX1NIQTFfTTA7CisJCS8qIEZJWE1FOiBBZGQgYSBjYXNlIGZvciBQSVBFX0QgKi8KKwkJZGVm YXVsdDoKKwkJCURSTV9FUlJPUigiVW5rbm93biBwaXBlICVkXG4iLCBwaXBlKTsKKwkJCWJyZWFr OworCQl9CisJfSBlbHNlIHsKKwkJc3dpdGNoIChwb3J0KSB7CisJCWNhc2UgUE9SVF9BOgorCQkJ cmV0dXJuIEhEQ1BfRERJQV9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJQV9TSEExX00wOworCQljYXNl IFBPUlRfQjoKKwkJCXJldHVybiBIRENQX0RESUJfUkVQX1BSRVNFTlQgfCBIRENQX0RESUJfU0hB MV9NMDsKKwkJY2FzZSBQT1JUX0M6CisJCQlyZXR1cm4gSERDUF9ERElDX1JFUF9QUkVTRU5UIHwg SERDUF9ERElDX1NIQTFfTTA7CisJCWNhc2UgUE9SVF9EOgorCQkJcmV0dXJuIEhEQ1BfRERJRF9S RVBfUFJFU0VOVCB8IEhEQ1BfRERJRF9TSEExX00wOworCQljYXNlIFBPUlRfRToKKwkJCXJldHVy biBIRENQX0RESUVfUkVQX1BSRVNFTlQgfCBIRENQX0RESUVfU0hBMV9NMDsKKwkJZGVmYXVsdDoK KwkJCURSTV9FUlJPUigiVW5rbm93biBwb3J0ICVkXG4iLCBwb3J0KTsKKwkJCWJyZWFrOworCQl9 CisJfQogCXJldHVybiAtRUlOVkFMOwogfQogCiBzdGF0aWMKLWludCBpbnRlbF9oZGNwX3ZhbGlk YXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCitp bnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwKIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltLAogCQkJCXU4 ICprc3ZfZmlmbywgdTggbnVtX2Rvd25zdHJlYW0sIHU4ICpic3RhdHVzKQogeworCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25u ZWN0b3IpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKKwllbnVtIHBpcGUg cGlwZSA9IGNvbm5lY3Rvci0+aGRjcC5waXBlOworCWVudW0gcG9ydCBwb3J0OwogCXUzMiB2cHJp bWUsIHNoYV90ZXh0LCBzaGFfbGVmdG92ZXJzLCByZXBfY3RsOwogCWludCByZXQsIGksIGosIHNo YV9pZHg7CiAKIAlkZXZfcHJpdiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2LT5kZXZf cHJpdmF0ZTsKKwlwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKIAogCS8qIFByb2Nl c3MgVicgdmFsdWVzIGZyb20gdGhlIHJlY2VpdmVyICovCiAJZm9yIChpID0gMDsgaSA8IERSTV9I RENQX1ZfUFJJTUVfTlVNX1BBUlRTOyBpKyspIHsKQEAgLTMwNiw3ICszMjcsNyBAQCBpbnQgaW50 ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAogCXNoYV9pZHggPSAwOwogCXNoYV90ZXh0ID0gMDsKIAlzaGFfbGVmdG92ZXJz ID0gMDsKLQlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVsX2RpZ19w b3J0KTsKKwlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGRldl9wcml2LCBw aXBlLCBwb3J0KTsKIAlJOTE1X1dSSVRFKEhEQ1BfUkVQX0NUTCwgcmVwX2N0bCB8IEhEQ1BfU0hB MV9URVhUXzMyKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2Rvd25zdHJlYW07IGkrKykgewogCQl1 bnNpZ25lZCBpbnQgc2hhX2VtcHR5OwpAQCAtNTQ0LDcgKzU2NSw3IEBAIGludCBpbnRlbF9oZGNw X2F1dGhfZG93bnN0cmVhbShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJICog ViBwcmltZSBhdGxlYXN0IHR3aWNlLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCB0cmllczsgaSsr KSB7Ci0JCXJldCA9IGludGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShpbnRlbF9kaWdfcG9ydCwg c2hpbSwKKwkJcmV0ID0gaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKGNvbm5lY3Rvciwgc2hp bSwKIAkJCQkJCSAga3N2X2ZpZm8sIG51bV9kb3duc3RyZWFtLAogCQkJCQkJICBic3RhdHVzKTsK IAkJaWYgKCFyZXQpCkBAIC01NzIsNiArNTkzLDcgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1 dGgoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2OwogCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3No aW0gKnNoaW0gPSBoZGNwLT5zaGltOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp djsKKwllbnVtIHBpcGUgcGlwZSA9IGNvbm5lY3Rvci0+aGRjcC5waXBlOwogCWVudW0gcG9ydCBw b3J0OwogCXVuc2lnbmVkIGxvbmcgcjBfcHJpbWVfZ2VuX3N0YXJ0OwogCWludCByZXQsIGksIHRy aWVzID0gMjsKQEAgLTYxMSwxOSArNjMzLDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRo KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAogCS8qIEluaXRpYWxpemUgQW4g d2l0aCAyIHJhbmRvbSB2YWx1ZXMgYW5kIGFjcXVpcmUgaXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwg MjsgaSsrKQotCQlJOTE1X1dSSVRFKFBPUlRfSERDUF9BTklOSVQocG9ydCksIGdldF9yYW5kb21f dTMyKCkpOwotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0NPTkYocG9ydCksIEhEQ1BfQ09ORl9DQVBU VVJFX0FOKTsKKwkJSTkxNV9XUklURShIRENQX0FOSU5JVChkZXZfcHJpdiwgcGlwZSwgcG9ydCks IGdldF9yYW5kb21fdTMyKCkpOworCUk5MTVfV1JJVEUoSERDUF9DT05GKGRldl9wcml2LCBwaXBl LCBwb3J0KSwgSERDUF9DT05GX0NBUFRVUkVfQU4pOwogCiAJLyogV2FpdCBmb3IgQW4gdG8gYmUg YWNxdWlyZWQgKi8KLQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNv cmUsIFBPUlRfSERDUF9TVEFUVVMocG9ydCksCisJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KCZkZXZfcHJpdi0+dW5jb3JlLAorCQkJCSAgICBIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwg cG9ydCksCiAJCQkJICAgIEhEQ1BfU1RBVFVTX0FOX1JFQURZLAogCQkJCSAgICBIRENQX1NUQVRV U19BTl9SRUFEWSwgMSkpIHsKIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgQW5c biIpOwogCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAl9CiAKLQlhbi5yZWdbMF0gPSBJOTE1X1JFQUQo UE9SVF9IRENQX0FOTE8ocG9ydCkpOwotCWFuLnJlZ1sxXSA9IEk5MTVfUkVBRChQT1JUX0hEQ1Bf QU5ISShwb3J0KSk7CisJYW4ucmVnWzBdID0gSTkxNV9SRUFEKEhEQ1BfQU5MTyhkZXZfcHJpdiwg cGlwZSwgcG9ydCkpOworCWFuLnJlZ1sxXSA9IEk5MTVfUkVBRChIRENQX0FOSEkoZGV2X3ByaXYs IHBpcGUsIHBvcnQpKTsKIAlyZXQgPSBzaGltLT53cml0ZV9hbl9ha3N2KGludGVsX2RpZ19wb3J0 LCBhbi5zaGltKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtNjQxLDI0ICs2NjQsMjQg QEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQogCQlyZXR1cm4gLUVQRVJNOwogCX0KIAotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JL U1ZMTyhwb3J0KSwgYmtzdi5yZWdbMF0pOwotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZISShw b3J0KSwgYmtzdi5yZWdbMV0pOworCUk5MTVfV1JJVEUoSERDUF9CS1NWTE8oZGV2X3ByaXYsIHBp cGUsIHBvcnQpLCBia3N2LnJlZ1swXSk7CisJSTkxNV9XUklURShIRENQX0JLU1ZISShkZXZfcHJp diwgcGlwZSwgcG9ydCksIGJrc3YucmVnWzFdKTsKIAogCXJldCA9IHNoaW0tPnJlcGVhdGVyX3By ZXNlbnQoaW50ZWxfZGlnX3BvcnQsICZyZXBlYXRlcl9wcmVzZW50KTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCWlmIChyZXBlYXRlcl9wcmVzZW50KQogCQlJOTE1X1dSSVRFKEhEQ1BfUkVQ X0NUTCwKLQkJCSAgIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChpbnRlbF9kaWdfcG9ydCkp OworCQkJICAgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGRldl9wcml2LCBwaXBlLCBwb3J0 KSk7CiAKIAlyZXQgPSBzaGltLT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1 ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0NP TkYocG9ydCksIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOworCUk5MTVfV1JJVEUoSERDUF9DT05G KGRldl9wcml2LCBwaXBlLCBwb3J0KSwgSERDUF9DT05GX0FVVEhfQU5EX0VOQyk7CiAKIAkvKiBX YWl0IGZvciBSMCByZWFkeSAqLwotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoUE9SVF9IRENQX1NU QVRVUyhwb3J0KSkgJgorCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3By aXYsIHBpcGUsIHBvcnQpKSAmCiAJCSAgICAgKEhEQ1BfU1RBVFVTX1IwX1JFQURZIHwgSERDUF9T VEFUVVNfRU5DKSwgMSkpIHsKIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgUjAg cmVhZHlcbiIpOwogCQlyZXR1cm4gLUVUSU1FRE9VVDsKQEAgLTY4NiwyMiArNzA5LDIzIEBAIHN0 YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKIAkJcmV0ID0gc2hpbS0+cmVhZF9yaV9wcmltZShpbnRlbF9kaWdfcG9ydCwgcmkuc2hpbSk7 CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCQlJOTE1X1dSSVRFKFBPUlRfSERDUF9SUFJJ TUUocG9ydCksIHJpLnJlZyk7CisJCUk5MTVfV1JJVEUoSERDUF9SUFJJTUUoZGV2X3ByaXYsIHBp cGUsIHBvcnQpLCByaS5yZWcpOwogCiAJCS8qIFdhaXQgZm9yIFJpIHByaW1lIG1hdGNoICovCi0J CWlmICghd2FpdF9mb3IoSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpICYKKwkJaWYg KCF3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAm CiAJCSAgICAoSERDUF9TVEFUVVNfUklfTUFUQ0ggfCBIRENQX1NUQVRVU19FTkMpLCAxKSkKIAkJ CWJyZWFrOwogCX0KIAogCWlmIChpID09IHRyaWVzKSB7CiAJCURSTV9ERUJVR19LTVMoIlRpbWVk IG91dCB3YWl0aW5nIGZvciBSaSBwcmltZSBtYXRjaCAoJXgpXG4iLAotCQkJICAgICAgSTkxNV9S RUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKKwkJCSAgICAgIEk5MTVfUkVBRChIRENQX1NU QVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQog CiAJLyogV2FpdCBmb3IgZW5jcnlwdGlvbiBjb25maXJtYXRpb24gKi8KLQlpZiAoaW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsIFBPUlRfSERDUF9TVEFUVVMocG9ydCks CisJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAorCQkJCSAg ICBIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksCiAJCQkJICAgIEhEQ1BfU1RBVFVT X0VOQywgSERDUF9TVEFUVVNfRU5DLAogCQkJCSAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElN RU9VVF9NUykpIHsKIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZW5jcnlwdGlv blxuIik7CkBAIC03MjYsMTUgKzc1MCwxNiBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2Rpc2Fi bGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9y dChjb25uZWN0b3IpOwogCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9y dDsKKwllbnVtIHBpcGUgcGlwZSA9IGhkY3AtPnBpcGU7CiAJaW50IHJldDsKIAogCURSTV9ERUJV R19LTVMoIlslczolZF0gSERDUCBpcyBiZWluZyBkaXNhYmxlZC4uLlxuIiwKIAkJICAgICAgY29u bmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkKTsKIAogCWhkY3AtPmhk Y3BfZW5jcnlwdGVkID0gZmFsc2U7Ci0JSTkxNV9XUklURShQT1JUX0hEQ1BfQ09ORihwb3J0KSwg MCk7CisJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCAwKTsKIAlp ZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCi0JCQkJICAgIFBP UlRfSERDUF9TVEFUVVMocG9ydCksIH4wLCAwLAorCQkJCSAgICBIRENQX1NUQVRVUyhkZXZfcHJp diwgcGlwZSwgcG9ydCksIH4wLCAwLAogCQkJCSAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElN RU9VVF9NUykpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQLCB0aW1lb3V0 IGNsZWFyaW5nIHN0YXR1c1xuIik7CiAJCXJldHVybiAtRVRJTUVET1VUOwpAQCAtODA2LDkgKzgz MSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g Y29ubmVjdG9yLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CiAJZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0OworCWVudW0gcGlwZSBwaXBl OwogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOworCXBpcGUgPSBo ZGNwLT5waXBlOwogCiAJLyogQ2hlY2tfbGluayB2YWxpZCBvbmx5IHdoZW4gSERDUDEuNCBpcyBl bmFibGVkICovCiAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElP Tl9FTkFCTEVEIHx8CkBAIC04MTcsMTAgKzg0NCwxMCBAQCBzdGF0aWMgaW50IGludGVsX2hkY3Bf Y2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCWdvdG8gb3V0 OwogCX0KIAotCWlmIChXQVJOX09OKCFpbnRlbF9oZGNwX2luX3VzZShjb25uZWN0b3IpKSkgewor CWlmIChXQVJOX09OKCFpbnRlbF9oZGNwX2luX3VzZShkZXZfcHJpdiwgcGlwZSwgcG9ydCkpKSB7 CiAJCURSTV9FUlJPUigiJXM6JWQgSERDUCBsaW5rIHN0b3BwZWQgZW5jcnlwdGlvbiwleFxuIiwK IAkJCSAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAotCQkJ ICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOworCQkJICBJOTE1X1JFQUQoSERD UF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSk7CiAJCXJldCA9IC1FTlhJTzsKIAkJaGRj cC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKIAkJc2NoZWR1 bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKQEAgLTE0OTEsMTAgKzE1MTgsMTEgQEAgc3RhdGlj IGludCBoZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25u ZWN0b3ItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3It PmhkY3A7CiAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7CisJZW51 bSBwaXBlIHBpcGUgPSBoZGNwLT5waXBlOwogCWludCByZXQ7CiAKLQlXQVJOX09OKEk5MTVfUkVB RChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9TVEFUVVMpOwotCisJ V0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkgJgor CQlMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKTsKIAlpZiAoaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25h bGxpbmcpIHsKIAkJcmV0ID0gaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGln X3BvcnQsIHRydWUpOwogCQlpZiAocmV0KSB7CkBAIC0xNTA0LDE0ICsxNTMyLDE1IEBAIHN0YXRp YyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQogCQl9CiAJfQogCi0JaWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQp KSAmIExJTktfQVVUSF9TVEFUVVMpIHsKKwlpZiAoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZf cHJpdiwgcGlwZSwgcG9ydCkpICYgTElOS19BVVRIX1NUQVRVUykgewogCQkvKiBMaW5rIGlzIEF1 dGhlbnRpY2F0ZWQuIE5vdyBzZXQgZm9yIEVuY3J5cHRpb24gKi8KLQkJSTkxNV9XUklURShIRENQ Ml9DVExfRERJKHBvcnQpLAotCQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTF9EREkocG9ydCkpIHwK KwkJSTkxNV9XUklURShIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAorCQkJICAgSTkx NV9SRUFEKEhEQ1AyX0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCkpIHwKIAkJCSAgIENUTF9MSU5L X0VOQ1JZUFRJT05fUkVRKTsKIAl9CiAKLQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcigm ZGV2X3ByaXYtPnVuY29yZSwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKKwlyZXQgPSBpbnRlbF93 YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwKKwkJCQkgICAgICBIRENQMl9TVEFU VVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAogCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFU VVMsCiAJCQkJICAgICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUywKIAkJCQkgICAgICBFTkNSWVBU X1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUyk7CkBAIC0xNTI1LDE0ICsxNTU0LDE3IEBAIHN0YXRp YyBpbnQgaGRjcDJfZGlzYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNv bm5lY3Rvci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rv ci0+aGRjcDsKIAllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKKwll bnVtIHBpcGUgcGlwZSA9IGhkY3AtPnBpcGU7CiAJaW50IHJldDsKIAotCVdBUk5fT04oIShJOTE1 X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7 CisJV0FSTl9PTighKEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQp KSAmCisJCUxJTktfRU5DUllQVElPTl9TVEFUVVMpKTsKKwlJOTE1X1dSSVRFKEhEQ1AyX0NUTChk ZXZfcHJpdiwgcGlwZSwgcG9ydCksCisJCSAgIEk5MTVfUkVBRChIRENQMl9DVEwoZGV2X3ByaXYs IHBpcGUsIHBvcnQpKSAmCisJCSAgIH5DVExfTElOS19FTkNSWVBUSU9OX1JFUSk7CiAKLQlJOTE1 X1dSSVRFKEhEQ1AyX0NUTF9EREkocG9ydCksCi0JCSAgIEk5MTVfUkVBRChIRENQMl9DVExfRERJ KHBvcnQpKSAmIH5DVExfTElOS19FTkNSWVBUSU9OX1JFUSk7Ci0KLQlyZXQgPSBpbnRlbF93YWl0 X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwK KwlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwKKwkJCQkg ICAgICBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAogCQkJCSAgICAgIExJTktf RU5DUllQVElPTl9TVEFUVVMsIDB4MCwKIAkJCQkgICAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0Vf VElNRU9VVF9NUyk7CiAJaWYgKHJldCA9PSAtRVRJTUVET1VUKQpAQCAtMTYzMSw5ICsxNjYzLDEx IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZj b25uZWN0b3ItPmhkY3A7CiAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBv cnQ7CisJZW51bSBwaXBlIHBpcGU7CiAJaW50IHJldCA9IDA7CiAKIAltdXRleF9sb2NrKCZoZGNw LT5tdXRleCk7CisJcGlwZSA9IGhkY3AtPnBpcGU7CiAKIAkvKiBoZGNwMl9jaGVja19saW5rIGlz IGV4cGVjdGVkIG9ubHkgd2hlbiBIRENQMi4yIGlzIEVuYWJsZWQgKi8KIAlpZiAoaGRjcC0+dmFs dWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQgfHwKQEAgLTE2NDIsOSAr MTY3Niw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCiAJCWdvdG8gb3V0OwogCX0KIAotCWlmIChXQVJOX09OKCFp bnRlbF9oZGNwMl9pbl91c2UoY29ubmVjdG9yKSkpIHsKKwlpZiAoV0FSTl9PTighaW50ZWxfaGRj cDJfaW5fdXNlKGRldl9wcml2LCBwaXBlLCBwb3J0KSkpIHsKIAkJRFJNX0VSUk9SKCJIRENQMi4y IGxpbmsgc3RvcHBlZCB0aGUgZW5jcnlwdGlvbiwgJXhcbiIsCi0JCQkgIEk5MTVfUkVBRChIRENQ Ml9TVEFUVVNfRERJKHBvcnQpKSk7CisJCQkgIEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3By aXYsIHBpcGUsIHBvcnQpKSk7CiAJCXJldCA9IC1FTlhJTzsKIAkJaGRjcC0+dmFsdWUgPSBEUk1f TU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKIAkJc2NoZWR1bGVfd29yaygmaGRjcC0+ cHJvcF93b3JrKTsKQEAgLTE4NTcsNiArMTg5MSw5IEBAIGludCBpbnRlbF9oZGNwX2VuYWJsZShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0 ZXgpOwogCVdBUk5fT04oaGRjcC0+dmFsdWUgPT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9O X0VOQUJMRUQpOwogCisJLyogRklYTUU6IE5lZWQgdG8gdGFrZSB0aGUgZHJtIG1vZGVzZXQgbG9j ayBmb3IgY29ubmVjdGlvbl9tdXRleC4gKi8KKwloZGNwLT5waXBlID0gaW50ZWxfY29ubmVjdG9y X2dldF9waXBlKGNvbm5lY3Rvcik7CisKIAkvKgogCSAqIENvbnNpZGVyaW5nIHRoYXQgSERDUDIu MiBpcyBtb3JlIHNlY3VyZSB0aGFuIEhEQ1AxLjQsIElmIHRoZSBzZXR1cAogCSAqIGlzIGNhcGFi bGUgb2YgSERDUDIuMiwgaXQgaXMgcHJlZmVycmVkIHRvIHVzZSBIRENQMi4yLgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwppbmRleCAwZWJlYzY5YmJiZmMuLjIwOTZh ZWUxNzRiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9o ZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKQEAg LTE0OTEsNyArMTQ5MSwxMCBAQCBib29sIGludGVsX2hkbWlfaGRjcF9jaGVja19saW5rKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9CiAJCWludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2LT5k ZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPQorCQkJCWlu dGVsX2RpZ19wb3J0LT5oZG1pLmF0dGFjaGVkX2Nvbm5lY3RvcjsKIAllbnVtIHBvcnQgcG9ydCA9 IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7CisJZW51bSBwaXBlIHBpcGUgPSBjb25uZWN0b3It PmhkY3AucGlwZTsKIAlpbnQgcmV0OwogCXVuaW9uIHsKIAkJdTMyIHJlZzsKQEAgLTE1MDIsMTMg KzE1MDUsMTMgQEAgYm9vbCBpbnRlbF9oZG1pX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKIAlpZiAocmV0KQogCQlyZXR1cm4gZmFsc2U7 CiAKLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9SUFJJTUUocG9ydCksIHJpLnJlZyk7CisJSTkxNV9X UklURShIRENQX1JQUklNRShkZXZfcHJpdiwgcGlwZSwgcG9ydCksIHJpLnJlZyk7CiAKIAkvKiBX YWl0IGZvciBSaSBwcmltZSBtYXRjaCAqLwotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoUE9SVF9I RENQX1NUQVRVUyhwb3J0KSkgJgorCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMo ZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCiAJCSAgICAgKEhEQ1BfU1RBVFVTX1JJX01BVENIIHwg SERDUF9TVEFUVVNfRU5DKSwgMSkpIHsKIAkJRFJNX0VSUk9SKCJSaScgbWlzbWF0Y2ggZGV0ZWN0 ZWQsIGxpbmsgY2hlY2sgZmFpbGVkICgleClcbiIsCi0JCQkgIEk5MTVfUkVBRChQT1JUX0hEQ1Bf U1RBVFVTKHBvcnQpKSk7CisJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlw ZSwgcG9ydCkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCmluZGV4IDdlNjAwOWNlZmIxOC4uMjMwNmU4M2IxNmZjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKQEAgLTkyMjUsMTIgKzkyMjUsMjAgQEAgZW51bSBza2xfcG93ZXJfZ2F0 ZSB7CiAKIC8qIEhEQ1AgUmVwZWF0ZXIgUmVnaXN0ZXJzICovCiAjZGVmaW5lIEhEQ1BfUkVQX0NU TAkJCV9NTUlPKDB4NjZkMDApCisjZGVmaW5lICBIRENQX1RSQU5TQV9SRVBfUFJFU0VOVAlCSVQo MzEpCisjZGVmaW5lICBIRENQX1RSQU5TQl9SRVBfUFJFU0VOVAlCSVQoMzApCisjZGVmaW5lICBI RENQX1RSQU5TQ19SRVBfUFJFU0VOVAlCSVQoMjkpCisjZGVmaW5lICBIRENQX1RSQU5TRF9SRVBf UFJFU0VOVAlCSVQoMjgpCiAjZGVmaW5lICBIRENQX0RESUJfUkVQX1BSRVNFTlQJCUJJVCgzMCkK ICNkZWZpbmUgIEhEQ1BfRERJQV9SRVBfUFJFU0VOVAkJQklUKDI5KQogI2RlZmluZSAgSERDUF9E RElDX1JFUF9QUkVTRU5UCQlCSVQoMjgpCiAjZGVmaW5lICBIRENQX0RESURfUkVQX1BSRVNFTlQJ CUJJVCgyNykKICNkZWZpbmUgIEhEQ1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2KQogI2RlZmlu ZSAgSERDUF9ERElFX1JFUF9QUkVTRU5UCQlCSVQoMjUpCisjZGVmaW5lICBIRENQX1RSQU5TQV9T SEExX00wCQkoMSA8PCAyMCkKKyNkZWZpbmUgIEhEQ1BfVFJBTlNCX1NIQTFfTTAJCSgyIDw8IDIw KQorI2RlZmluZSAgSERDUF9UUkFOU0NfU0hBMV9NMAkJKDMgPDwgMjApCisjZGVmaW5lICBIRENQ X1RSQU5TRF9TSEExX00wCQkoNCA8PCAyMCkKICNkZWZpbmUgIEhEQ1BfRERJQl9TSEExX00wCQko MSA8PCAyMCkKICNkZWZpbmUgIEhEQ1BfRERJQV9TSEExX00wCQkoMiA8PCAyMCkKICNkZWZpbmUg IEhEQ1BfRERJQ19TSEExX00wCQkoMyA8PCAyMCkKQEAgLTkyNzAsMTUgKzkyNzgsODkgQEAgZW51 bSBza2xfcG93ZXJfZ2F0ZSB7CiAJCQkJCSAgX1BPUlRFX0hEQ1BfQVVUSEVOQywgXAogCQkJCQkg IF9QT1JURl9IRENQX0FVVEhFTkMpICsgKHgpKQogI2RlZmluZSBQT1JUX0hEQ1BfQ09ORihwb3J0 KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MCkKKyNkZWZpbmUgX1RSQU5TQV9IRENQX0NP TkYJCTB4NjY0MDAKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0NPTkYJCTB4NjY1MDAKKyNkZWZpbmUg VFJBTlNfSERDUF9DT05GKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUF9D T05GLCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQX0NPTkYpCisjZGVmaW5lIEhEQ1BfQ09ORihk ZXZfcHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJ CVRSQU5TX0hEQ1BfQ09ORihwaXBlKSA6IFwKKwkJCQkJUE9SVF9IRENQX0NPTkYocG9ydCkpCisK ICNkZWZpbmUgIEhEQ1BfQ09ORl9DQVBUVVJFX0FOCQlCSVQoMCkKICNkZWZpbmUgIEhEQ1BfQ09O Rl9BVVRIX0FORF9FTkMJCShCSVQoMSkgfCBCSVQoMCkpCiAjZGVmaW5lIFBPUlRfSERDUF9BTklO SVQocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDQpCisjZGVmaW5lIF9UUkFOU0Ff SERDUF9BTklOSVQJCTB4NjY0MDQKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FOSU5JVAkJMHg2NjUw NAorI2RlZmluZSBUUkFOU19IRENQX0FOSU5JVCh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwK KwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfQU5JTklULCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQ X0FOSU5JVCkKKyNkZWZpbmUgSERDUF9BTklOSVQoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKKwkJ CQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJCVRSQU5TX0hEQ1BfQU5JTklU KHBpcGUpIDogXAorCQkJCQlQT1JUX0hEQ1BfQU5JTklUKHBvcnQpKQorCiAjZGVmaW5lIFBPUlRf SERDUF9BTkxPKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHg4KQorI2RlZmluZSBf VFJBTlNBX0hEQ1BfQU5MTwkJMHg2NjQwOAorI2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5MTwkJMHg2 NjUwOAorI2RlZmluZSBUUkFOU19IRENQX0FOTE8odHJhbnMpCQlfTU1JT19UUkFOUyh0cmFucywg X1RSQU5TQV9IRENQX0FOTE8sIFwKKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQU5MTykKKyNkZWZp bmUgSERDUF9BTkxPKGRldl9wcml2LCBwaXBlLCBwb3J0KQkoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMiA/IFwKKwkJCQkJVFJBTlNfSERDUF9BTkxPKHBpcGUpIDogXAorCQkJCQlQT1JUX0hEQ1Bf QU5MTyhwb3J0KSkKKwogI2RlZmluZSBQT1JUX0hEQ1BfQU5ISShwb3J0KQkJX1BPUlRfSERDUF9B VVRIRU5DKHBvcnQsIDB4QykKKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOSEkJCTB4NjY0MEMKKyNk ZWZpbmUgX1RSQU5TQl9IRENQX0FOSEkJCTB4NjY1MEMKKyNkZWZpbmUgVFJBTlNfSERDUF9BTkhJ KHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUF9BTkhJLCBcCisJCQkJCQkg ICAgX1RSQU5TQl9IRENQX0FOSEkpCisjZGVmaW5lIEhEQ1BfQU5ISShkZXZfcHJpdiwgcGlwZSwg cG9ydCkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJCVRSQU5TX0hEQ1BfQU5I SShwaXBlKSA6IFwKKwkJCQkJUE9SVF9IRENQX0FOSEkocG9ydCkpCisKICNkZWZpbmUgUE9SVF9I RENQX0JLU1ZMTyhwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MTApCisjZGVmaW5l IF9UUkFOU0FfSERDUF9CS1NWTE8JCTB4NjY0MTAKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0JLU1ZM TwkJMHg2NjUxMAorI2RlZmluZSBUUkFOU19IRENQX0JLU1ZMTyh0cmFucykJX01NSU9fVFJBTlMo dHJhbnMsIFwKKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfQktTVkxPLCBcCisJCQkJCQkgICAgX1RS QU5TQl9IRENQX0JLU1ZMTykKKyNkZWZpbmUgSERDUF9CS1NWTE8oZGV2X3ByaXYsIHBpcGUsIHBv cnQpIFwKKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJCVRSQU5TX0hE Q1BfQktTVkxPKHBpcGUpIDogXAorCQkJCQlQT1JUX0hEQ1BfQktTVkxPKHBvcnQpKQorCiAjZGVm aW5lIFBPUlRfSERDUF9CS1NWSEkocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDE0 KQorI2RlZmluZSBfVFJBTlNBX0hEQ1BfQktTVkhJCQkweDY2NDE0CisjZGVmaW5lIF9UUkFOU0Jf SERDUF9CS1NWSEkJCTB4NjY1MTQKKyNkZWZpbmUgVFJBTlNfSERDUF9CS1NWSEkodHJhbnMpCV9N TUlPX1RSQU5TKHRyYW5zLCBcCisJCQkJCQkgICAgX1RSQU5TQV9IRENQX0JLU1ZISSwgXAorCQkJ CQkJICAgIF9UUkFOU0JfSERDUF9CS1NWSEkpCisjZGVmaW5lIEhEQ1BfQktTVkhJKGRldl9wcml2 LCBwaXBlLCBwb3J0KSBcCisJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJ CQlUUkFOU19IRENQX0JLU1ZISShwaXBlKSA6IFwKKwkJCQkJUE9SVF9IRENQX0JLU1ZISShwb3J0 KSkKKwogI2RlZmluZSBQT1JUX0hEQ1BfUlBSSU1FKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMo cG9ydCwgMHgxOCkKKyNkZWZpbmUgX1RSQU5TQV9IRENQX1JQUklNRQkJMHg2NjQxOAorI2RlZmlu ZSBfVFJBTlNCX0hEQ1BfUlBSSU1FCQkweDY2NTE4CisjZGVmaW5lIFRSQU5TX0hEQ1BfUlBSSU1F KHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAorCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJ TUUsIFwKKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfUlBSSU1FKQorI2RlZmluZSBIRENQX1JQUklN RShkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAorCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MiA/IFwKKwkJCQkJVFJBTlNfSERDUF9SUFJJTUUocGlwZSkgOiBcCisJCQkJCVBPUlRfSERDUF9S UFJJTUUocG9ydCkpCisKICNkZWZpbmUgUE9SVF9IRENQX1NUQVRVUyhwb3J0KQkJX1BPUlRfSERD UF9BVVRIRU5DKHBvcnQsIDB4MUMpCisjZGVmaW5lIF9UUkFOU0FfSERDUF9TVEFUVVMJCTB4NjY0 MUMKKyNkZWZpbmUgX1RSQU5TQl9IRENQX1NUQVRVUwkJMHg2NjUxQworI2RlZmluZSBUUkFOU19I RENQX1NUQVRVUyh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKKwkJCQkJCSAgICBfVFJBTlNB X0hEQ1BfU1RBVFVTLCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQX1NUQVRVUykKKyNkZWZpbmUg SERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKKwkJCQkJKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTIgPyBcCisJCQkJCVRSQU5TX0hEQ1BfU1RBVFVTKHBpcGUpIDogXAorCQkJCQlQ T1JUX0hEQ1BfU1RBVFVTKHBvcnQpKQorCiAjZGVmaW5lICBIRENQX1NUQVRVU19TVFJFQU1fQV9F TkMJQklUKDMxKQogI2RlZmluZSAgSERDUF9TVEFUVVNfU1RSRUFNX0JfRU5DCUJJVCgzMCkKICNk ZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9DX0VOQwlCSVQoMjkpCkBAIC05MzA1LDIzICs5Mzg3 LDQzIEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewogCQkJCQkgIF9QT1JURF9IRENQMl9CQVNFLCBc CiAJCQkJCSAgX1BPUlRFX0hEQ1AyX0JBU0UsIFwKIAkJCQkJICBfUE9SVEZfSERDUDJfQkFTRSkg KyAoeCkpCi0KLSNkZWZpbmUgSERDUDJfQVVUSF9EREkocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0Uo cG9ydCwgMHg5OCkKKyNkZWZpbmUgUE9SVF9IRENQMl9BVVRIKHBvcnQpCQlfUE9SVF9IRENQMl9C QVNFKHBvcnQsIDB4OTgpCisjZGVmaW5lIF9UUkFOU0FfSERDUDJfQVVUSAkJMHg2NjQ5OAorI2Rl ZmluZSBfVFJBTlNCX0hEQ1AyX0FVVEgJCTB4NjY1OTgKKyNkZWZpbmUgVFJBTlNfSERDUDJfQVVU SCh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1AyX0FVVEgsIFwKKwkJCQkJ CSAgICBfVFJBTlNCX0hEQ1AyX0FVVEgpCiAjZGVmaW5lICAgQVVUSF9MSU5LX0FVVEhFTlRJQ0FU RUQJQklUKDMxKQogI2RlZmluZSAgIEFVVEhfTElOS19UWVBFCQlCSVQoMzApCiAjZGVmaW5lICAg QVVUSF9GT1JDRV9DTFJfSU5QVVRDVFIJQklUKDE5KQogI2RlZmluZSAgIEFVVEhfQ0xSX0tFWVMJ CQlCSVQoMTgpCi0KLSNkZWZpbmUgSERDUDJfQ1RMX0RESShwb3J0KQkJX1BPUlRfSERDUDJfQkFT RShwb3J0LCAweEIwKQorI2RlZmluZSBIRENQMl9BVVRIKGRldl9wcml2LCBwaXBlLCBwb3J0KSBc CisJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQkgVFJBTlNfSERDUDJf QVVUSChwaXBlKSA6IFwKKwkJCQkJIFBPUlRfSERDUDJfQVVUSChwb3J0KSkKKworI2RlZmluZSBQ T1JUX0hEQ1AyX0NUTChwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEIwKQorI2RlZmlu ZSBfVFJBTlNBX0hEQ1AyX0NUTAkJMHg2NjRCMAorI2RlZmluZSBfVFJBTlNCX0hEQ1AyX0NUTAkJ MHg2NjVCMAorI2RlZmluZSBUUkFOU19IRENQMl9DVEwodHJhbnMpCQlfTU1JT19UUkFOUyh0cmFu cywgX1RSQU5TQV9IRENQMl9DVEwsIFwKKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1AyX0NUTCkKICNk ZWZpbmUgICBDVExfTElOS19FTkNSWVBUSU9OX1JFUQlCSVQoMzEpCi0KLSNkZWZpbmUgSERDUDJf U1RBVFVTX0RESShwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEI0KQotI2RlZmluZSAg IFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRVU19BCUJJVCgzMSkKLSNkZWZpbmUgICBTVFJFQU1fRU5D UllQVElPTl9TVEFUVVNfQglCSVQoMzApCi0jZGVmaW5lICAgU1RSRUFNX0VOQ1JZUFRJT05fU1RB VFVTX0MJQklUKDI5KQorI2RlZmluZSBIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpCShJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQlUUkFOU19IRENQMl9DVEwocGlwZSkg OiBcCisJCQkJCVBPUlRfSERDUDJfQ1RMKHBvcnQpKQorCisjZGVmaW5lIFBPUlRfSERDUDJfU1RB VFVTKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjQpCisjZGVmaW5lIF9UUkFOU0Ff SERDUDJfU1RBVFVTCQkweDY2NEI0CisjZGVmaW5lIF9UUkFOU0JfSERDUDJfU1RBVFVTCQkweDY2 NUI0CisjZGVmaW5lIFRSQU5TX0hEQ1AyX1NUQVRVUyh0cmFucykJX01NSU9fVFJBTlModHJhbnMs IFwKKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1AyX1NUQVRVUywgXAorCQkJCQkJICAgIF9UUkFOU0Jf SERDUDJfU1RBVFVTKQogI2RlZmluZSAgIExJTktfVFlQRV9TVEFUVVMJCUJJVCgyMikKICNkZWZp bmUgICBMSU5LX0FVVEhfU1RBVFVTCQlCSVQoMjEpCiAjZGVmaW5lICAgTElOS19FTkNSWVBUSU9O X1NUQVRVUwlCSVQoMjApCisjZGVmaW5lIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkgXAorCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKKwkJCQkJIFRSQU5TX0hE Q1AyX1NUQVRVUyhwaXBlKSA6IFwKKwkJCQkJIFBPUlRfSERDUDJfU1RBVFVTKHBvcnQpKQogCiAv KiBQZXItcGlwZSBEREkgRnVuY3Rpb24gQ29udHJvbCAqLwogI2RlZmluZSBfVFJBTlNfRERJX0ZV TkNfQ1RMX0EJCTB4NjA0MDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMWQ1OGY3ZWM1 ZDg0Li41M2YxM2U2YTVhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0zNTksNiAr MzU5LDE0IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAl3YWl0X3F1ZXVlX2hlYWRfdCBjcF9pcnFf cXVldWU7CiAJYXRvbWljX3QgY3BfaXJxX2NvdW50OwogCWludCBjcF9pcnFfY291bnRfY2FjaGVk OworCisJLyoKKwkgKiBHZW4gMTIgb253YXJkcywgSERDUCBpcyBwYXJ0IG9mIHRyYW5zY29kZXIo cHJldmlvdXNseSBEREkpLgorCSAqIFNvIGNoYWNoZWluZyB0aGUgcGlwZSBhc3NvY2lhdGVkIHRv IGNvbm5lY3RvciBhdCBoZGNwX2VuYWJsZQorCSAqIHdvdWxkIGhlbHAgaW4gc3Vic2VxdWVudCBm dW5jdGlvbnMgdG8gZGVyaXZlIHRoZSByaWdodCBvZmZzZXRzCisJICogZm9yIEhEQ1AgcmVnaXN0 ZXJzLgorCSAqLworCWVudW0gcGlwZSBwaXBlOwogfTsKIAogc3RydWN0IGludGVsX2Nvbm5lY3Rv ciB7Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeA==