From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhawanpreet Lakha Subject: [PATCH 13/20] drm/amd/display: Create amdgpu_dm_hdcp Date: Tue, 10 Sep 2019 15:04:15 -0400 Message-ID: <20190910190422.794-14-Bhawanpreet.Lakha@amd.com> References: <20190910190422.794-1-Bhawanpreet.Lakha@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190910190422.794-1-Bhawanpreet.Lakha-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Bhawanpreet Lakha W1doeV0KV2UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBoZGNwIG1vZHVsZSBmcm9tIHRoZSBE TSwgdGhlIG1vZHVsZQpoYXMgdG8gYmUgaW50ZXJhY3RlZCB3aXRoIGluIHRlcm1zIG9mIGV2ZW50 cwoKW0hvd10KQ3JlYXRlIHRoZSBmaWxlcyBuZWVkZWQgZm9yIGxpbnV4IGhkY3AuIFRoZXNlIGZp bGVzIG1hbmFnZSB0aGUgZXZlbnRzCm5lZWRlZCBmb3IgdGhlIGRtIHRvIGludGVyYWN0IHdpdGgg dGhlIGhkY3AgbW9kdWxlLgoKV2UgdXNlIHRoZSBrZXJuZWwgd29yayBxdWV1ZSB0byBwcm9jZXNz IHRoZSBldmVudHMgbmVlZGVkIGZvcgp0aGUgbW9kdWxlCgpTaWduZWQtb2ZmLWJ5OiBCaGF3YW5w cmVldCBMYWtoYSA8Qmhhd2FucHJlZXQuTGFraGFAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEhhcnJ5 IFdlbnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPgotLS0KIC4uLi9ncHUvZHJtL2FtZC9k aXNwbGF5L2FtZGdwdV9kbS9NYWtlZmlsZSAgICB8ICAgNCArCiAuLi4vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMgICAgfCAyNDEgKysrKysrKysrKysrKysrKysrCiAuLi4v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmggICAgfCAgNjEgKysrKysKIDMg ZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbV9oZGNwLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9N YWtlZmlsZQppbmRleCA5NDkxMTg3MWViOWIuLjlhM2I3YmY4YWIwYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL01ha2VmaWxlCkBAIC0zMSw2ICszMSwxMCBA QCBpZm5lcSAoJChDT05GSUdfRFJNX0FNRF9EQyksKQogQU1ER1BVRE0gKz0gYW1kZ3B1X2RtX3Nl cnZpY2VzLm8gYW1kZ3B1X2RtX2hlbHBlcnMubyBhbWRncHVfZG1fcHBfc211Lm8KIGVuZGlmCiAK K2lmZGVmIENPTkZJR19EUk1fQU1EX0RDX0hEQ1AKK0FNREdQVURNICs9IGFtZGdwdV9kbV9oZGNw Lm8KK2VuZGlmCisKIGlmbmVxICgkKENPTkZJR19ERUJVR19GUyksKQogQU1ER1BVRE0gKz0gYW1k Z3B1X2RtX2NyYy5vIGFtZGdwdV9kbV9kZWJ1Z2ZzLm8KIGVuZGlmCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMDRiNmU4ZTllZDUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9k bV9oZGNwLmMKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOSBBZHZhbmNl ZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S CisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1E CisgKgorICovCisKKyNpbmNsdWRlICJhbWRncHVfZG1faGRjcC5oIgorI2luY2x1ZGUgImFtZGdw dS5oIgorI2luY2x1ZGUgImFtZGdwdV9kbS5oIgorCitzdGF0aWMgdm9pZCBwcm9jZXNzX291dHB1 dChzdHJ1Y3QgaGRjcF93b3JrcXVldWUgKmhkY3Bfd29yaykKK3sKKwlzdHJ1Y3QgbW9kX2hkY3Bf b3V0cHV0IG91dHB1dCA9IGhkY3Bfd29yay0+b3V0cHV0OworCisJaWYgKG91dHB1dC5jYWxsYmFj a19zdG9wKQorCQljYW5jZWxfZGVsYXllZF93b3JrKCZoZGNwX3dvcmstPmNhbGxiYWNrX2R3b3Jr KTsKKworCWlmIChvdXRwdXQuY2FsbGJhY2tfbmVlZGVkKQorCQlzY2hlZHVsZV9kZWxheWVkX3dv cmsoJmhkY3Bfd29yay0+Y2FsbGJhY2tfZHdvcmssCisJCQkJICAgICAgbXNlY3NfdG9famlmZmll cyhvdXRwdXQuY2FsbGJhY2tfZGVsYXkpKTsKKworCWlmIChvdXRwdXQud2F0Y2hkb2dfdGltZXJf c3RvcCkKKwkJY2FuY2VsX2RlbGF5ZWRfd29yaygmaGRjcF93b3JrLT53YXRjaGRvZ190aW1lcl9k d29yayk7CisKKwlpZiAob3V0cHV0LndhdGNoZG9nX3RpbWVyX25lZWRlZCkKKwkJc2NoZWR1bGVf ZGVsYXllZF93b3JrKCZoZGNwX3dvcmstPndhdGNoZG9nX3RpbWVyX2R3b3JrLAorCQkJCSAgICAg IG1zZWNzX3RvX2ppZmZpZXMob3V0cHV0LndhdGNoZG9nX3RpbWVyX2RlbGF5KSk7CisKK30KKwor dm9pZCBoZGNwX2FkZF9kaXNwbGF5KHN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAqaGRjcF93b3JrLCB1 bnNpZ25lZCBpbnQgbGlua19pbmRleCkKK3sKKwlzdHJ1Y3QgaGRjcF93b3JrcXVldWUgKmhkY3Bf dyA9ICZoZGNwX3dvcmtbbGlua19pbmRleF07CisJc3RydWN0IG1vZF9oZGNwX2Rpc3BsYXkgKmRp c3BsYXkgPSAmaGRjcF93b3JrW2xpbmtfaW5kZXhdLmRpc3BsYXk7CisJc3RydWN0IG1vZF9oZGNw X2xpbmsgKmxpbmsgPSAmaGRjcF93b3JrW2xpbmtfaW5kZXhdLmxpbms7CisKKwltdXRleF9sb2Nr KCZoZGNwX3ctPm11dGV4KTsKKworCW1vZF9oZGNwX2FkZF9kaXNwbGF5KCZoZGNwX3ctPmhkY3As IGxpbmssIGRpc3BsYXksICZoZGNwX3ctPm91dHB1dCk7CisKKwlwcm9jZXNzX291dHB1dChoZGNw X3cpOworCisJbXV0ZXhfdW5sb2NrKCZoZGNwX3ctPm11dGV4KTsKKworfQorCit2b2lkIGhkY3Bf cmVtb3ZlX2Rpc3BsYXkoc3RydWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX3dvcmssIHVuc2lnbmVk IGludCBsaW5rX2luZGV4LCAgdW5zaWduZWQgaW50IGRpc3BsYXlfaW5kZXgpCit7CisJc3RydWN0 IGhkY3Bfd29ya3F1ZXVlICpoZGNwX3cgPSAmaGRjcF93b3JrW2xpbmtfaW5kZXhdOworCisJbXV0 ZXhfbG9jaygmaGRjcF93LT5tdXRleCk7CisKKwltb2RfaGRjcF9yZW1vdmVfZGlzcGxheSgmaGRj cF93LT5oZGNwLCBkaXNwbGF5X2luZGV4LCAmaGRjcF93LT5vdXRwdXQpOworCisJcHJvY2Vzc19v dXRwdXQoaGRjcF93KTsKKworCW11dGV4X3VubG9jaygmaGRjcF93LT5tdXRleCk7CisKK30KKwor dm9pZCBoZGNwX3Jlc2V0X2Rpc3BsYXkoc3RydWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX3dvcmss IHVuc2lnbmVkIGludCBsaW5rX2luZGV4KQoreworCXN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAqaGRj cF93ID0gJmhkY3Bfd29ya1tsaW5rX2luZGV4XTsKKworCW11dGV4X2xvY2soJmhkY3Bfdy0+bXV0 ZXgpOworCisJbW9kX2hkY3BfcmVzZXRfY29ubmVjdGlvbigmaGRjcF93LT5oZGNwLCAgJmhkY3Bf dy0+b3V0cHV0KTsKKworCXByb2Nlc3Nfb3V0cHV0KGhkY3Bfdyk7CisKKwltdXRleF91bmxvY2so JmhkY3Bfdy0+bXV0ZXgpOworfQorCit2b2lkIGhkY3BfaGFuZGxlX2NwaXJxKHN0cnVjdCBoZGNw X3dvcmtxdWV1ZSAqaGRjcF93b3JrLCB1bnNpZ25lZCBpbnQgbGlua19pbmRleCkKK3sKKwlzdHJ1 Y3QgaGRjcF93b3JrcXVldWUgKmhkY3BfdyA9ICZoZGNwX3dvcmtbbGlua19pbmRleF07CisKKwlz Y2hlZHVsZV93b3JrKCZoZGNwX3ctPmNwaXJxX3dvcmspOworfQorCisKKworCitzdGF0aWMgdm9p ZCBldmVudF9jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGhk Y3Bfd29ya3F1ZXVlICpoZGNwX3dvcms7CisKKwloZGNwX3dvcmsgPSBjb250YWluZXJfb2YodG9f ZGVsYXllZF93b3JrKHdvcmspLCBzdHJ1Y3QgaGRjcF93b3JrcXVldWUsCisJCQkJICAgICAgY2Fs bGJhY2tfZHdvcmspOworCisJbXV0ZXhfbG9jaygmaGRjcF93b3JrLT5tdXRleCk7CisKKwljYW5j ZWxfZGVsYXllZF93b3JrKCZoZGNwX3dvcmstPndhdGNoZG9nX3RpbWVyX2R3b3JrKTsKKworCW1v ZF9oZGNwX3Byb2Nlc3NfZXZlbnQoJmhkY3Bfd29yay0+aGRjcCwgTU9EX0hEQ1BfRVZFTlRfQ0FM TEJBQ0ssCisJCQkgICAgICAgJmhkY3Bfd29yay0+b3V0cHV0KTsKKworCXByb2Nlc3Nfb3V0cHV0 KGhkY3Bfd29yayk7CisKKwltdXRleF91bmxvY2soJmhkY3Bfd29yay0+bXV0ZXgpOworCisKK30K KworCitzdGF0aWMgdm9pZCBldmVudF93YXRjaGRvZ190aW1lcihzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCit7CisJc3RydWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX3dvcms7CisKKwloZGNwX3dv cmsgPSBjb250YWluZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLAorCQkJCSAgICAgIHN0cnVj dCBoZGNwX3dvcmtxdWV1ZSwKKwkJCQkgICAgICB3YXRjaGRvZ190aW1lcl9kd29yayk7CisKKwlt dXRleF9sb2NrKCZoZGNwX3dvcmstPm11dGV4KTsKKworCW1vZF9oZGNwX3Byb2Nlc3NfZXZlbnQo JmhkY3Bfd29yay0+aGRjcCwKKwkJCSAgICAgICBNT0RfSERDUF9FVkVOVF9XQVRDSERPR19USU1F T1VULAorCQkJICAgICAgICZoZGNwX3dvcmstPm91dHB1dCk7CisKKwlwcm9jZXNzX291dHB1dCho ZGNwX3dvcmspOworCisJbXV0ZXhfdW5sb2NrKCZoZGNwX3dvcmstPm11dGV4KTsKKworfQorCitz dGF0aWMgdm9pZCBldmVudF9jcGlycShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3Ry dWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX3dvcms7CisKKwloZGNwX3dvcmsgPSBjb250YWluZXJf b2Yod29yaywgc3RydWN0IGhkY3Bfd29ya3F1ZXVlLCBjcGlycV93b3JrKTsKKworCW11dGV4X2xv Y2soJmhkY3Bfd29yay0+bXV0ZXgpOworCisJbW9kX2hkY3BfcHJvY2Vzc19ldmVudCgmaGRjcF93 b3JrLT5oZGNwLCBNT0RfSERDUF9FVkVOVF9DUElSUSwgJmhkY3Bfd29yay0+b3V0cHV0KTsKKwor CXByb2Nlc3Nfb3V0cHV0KGhkY3Bfd29yayk7CisKKwltdXRleF91bmxvY2soJmhkY3Bfd29yay0+ bXV0ZXgpOworCit9CisKKwordm9pZCBoZGNwX2Rlc3Ryb3koc3RydWN0IGhkY3Bfd29ya3F1ZXVl ICpoZGNwX3dvcmspCit7CisJaW50IGkgPSAwOworCisJZm9yIChpID0gMDsgaSA8IGhkY3Bfd29y ay0+bWF4X2xpbms7IGkrKykgeworCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmhkY3Bfd29y a1tpXS5jYWxsYmFja19kd29yayk7CisJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaGRjcF93 b3JrW2ldLndhdGNoZG9nX3RpbWVyX2R3b3JrKTsKKwl9CisKKwlrZnJlZShoZGNwX3dvcmspOwor Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jb25maWcodm9pZCAqaGFuZGxlLCBzdHJ1Y3QgY3Bf cHNwX3N0cmVhbV9jb25maWcgKmNvbmZpZykKK3sKKwlzdHJ1Y3QgaGRjcF93b3JrcXVldWUgKmhk Y3Bfd29yayA9IGhhbmRsZTsKKwlzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3Rv ciA9IGNvbmZpZy0+ZG1fc3RyZWFtX2N0eDsKKwlpbnQgbGlua19pbmRleCA9IGFjb25uZWN0b3It PmRjX2xpbmstPmxpbmtfaW5kZXg7CisJc3RydWN0IG1vZF9oZGNwX2Rpc3BsYXkgKmRpc3BsYXkg PSAmaGRjcF93b3JrW2xpbmtfaW5kZXhdLmRpc3BsYXk7CisJc3RydWN0IG1vZF9oZGNwX2xpbmsg KmxpbmsgPSAmaGRjcF93b3JrW2xpbmtfaW5kZXhdLmxpbms7CisKKwltZW1zZXQoZGlzcGxheSwg MCwgc2l6ZW9mKCpkaXNwbGF5KSk7CisJbWVtc2V0KGxpbmssIDAsIHNpemVvZigqbGluaykpOwor CisJZGlzcGxheS0+aW5kZXggPSBhY29ubmVjdG9yLT5iYXNlLmluZGV4OworCWRpc3BsYXktPnN0 YXRlID0gTU9EX0hEQ1BfRElTUExBWV9BQ1RJVkU7CisKKwlpZiAoYWNvbm5lY3Rvci0+ZGNfc2lu ayAhPSBOVUxMKQorCQlsaW5rLT5tb2RlID0gbW9kX2hkY3Bfc2lnbmFsX3R5cGVfdG9fb3BlcmF0 aW9uX21vZGUoYWNvbm5lY3Rvci0+ZGNfc2luay0+c2lua19zaWduYWwpOworCisJZGlzcGxheS0+ Y29udHJvbGxlciA9IENPTlRST0xMRVJfSURfRDAgKyBjb25maWctPm90Z19pbnN0OworCWRpc3Bs YXktPmRpZ19mZSA9IGNvbmZpZy0+c3RyZWFtX2VuY19pbnN0OworCWxpbmstPmRpZ19iZSA9IGNv bmZpZy0+bGlua19lbmNfaW5zdDsKKwlsaW5rLT5kZGNfbGluZSA9IGFjb25uZWN0b3ItPmRjX2xp bmstPmRkY19od19pbnN0ICsgMTsKKwlsaW5rLT5kcC5yZXYgPSBhY29ubmVjdG9yLT5kY19saW5r LT5kcGNkX2NhcHMuZHBjZF9yZXYucmF3OworCWxpbmstPmFkanVzdC5oZGNwMi5kaXNhYmxlID0g MTsKKworfQorCitzdHJ1Y3QgaGRjcF93b3JrcXVldWUgKmhkY3BfY3JlYXRlX3dvcmtxdWV1ZSh2 b2lkICpwc3BfY29udGV4dCwgc3RydWN0IGNwX3BzcCAqY3BfcHNwLCBzdHJ1Y3QgZGMgKmRjKQor eworCisJaW50IG1heF9jYXBzID0gZGMtPmNhcHMubWF4X2xpbmtzOworCXN0cnVjdCBoZGNwX3dv cmtxdWV1ZSAqaGRjcF93b3JrID0ga3phbGxvYyhtYXhfY2FwcypzaXplb2YoKmhkY3Bfd29yayks IEdGUF9LRVJORUwpOworCWludCBpID0gMDsKKworCWlmIChoZGNwX3dvcmsgPT0gTlVMTCkKKwkJ Z290byBmYWlsX2FsbG9jX2NvbnRleHQ7CisKKwloZGNwX3dvcmstPm1heF9saW5rID0gbWF4X2Nh cHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2NhcHM7IGkrKykgeworCisJCW11dGV4X2luaXQo JmhkY3Bfd29ya1tpXS5tdXRleCk7CisKKwkJSU5JVF9XT1JLKCZoZGNwX3dvcmtbaV0uY3BpcnFf d29yaywgZXZlbnRfY3BpcnEpOworCQlJTklUX0RFTEFZRURfV09SSygmaGRjcF93b3JrW2ldLmNh bGxiYWNrX2R3b3JrLCBldmVudF9jYWxsYmFjayk7CisJCUlOSVRfREVMQVlFRF9XT1JLKCZoZGNw X3dvcmtbaV0ud2F0Y2hkb2dfdGltZXJfZHdvcmssIGV2ZW50X3dhdGNoZG9nX3RpbWVyKTsKKwor CQloZGNwX3dvcmtbaV0uaGRjcC5jb25maWcucHNwLmhhbmRsZSA9ICBwc3BfY29udGV4dDsKKwkJ aGRjcF93b3JrW2ldLmhkY3AuY29uZmlnLmRkYy5oYW5kbGUgPSBkY19nZXRfbGlua19hdF9pbmRl eChkYywgaSk7CisKKwl9CisKKwljcF9wc3AtPmZ1bmNzLnVwZGF0ZV9zdHJlYW1fY29uZmlnID0g dXBkYXRlX2NvbmZpZzsKKwljcF9wc3AtPmhhbmRsZSA9IGhkY3Bfd29yazsKKworCXJldHVybiBo ZGNwX3dvcms7CisKK2ZhaWxfYWxsb2NfY29udGV4dDoKKwlrZnJlZShoZGNwX3dvcmspOworCisJ cmV0dXJuIE5VTEw7CisKKworCit9CisKKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYjZjNmZiZDc0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmgKQEAg LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE5IEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAqCisgKi8KKwor I2lmbmRlZiBBTURHUFVfRE1fQU1ER1BVX0RNX0hEQ1BfSF8KKyNkZWZpbmUgQU1ER1BVX0RNX0FN REdQVV9ETV9IRENQX0hfCisKKyNpbmNsdWRlICJtb2RfaGRjcC5oIgorI2luY2x1ZGUgImhkY3Au aCIKKyNpbmNsdWRlICJkYy5oIgorI2luY2x1ZGUgImRtX2NwX3BzcC5oIgorCitzdHJ1Y3QgbW9k X2hkY3A7CitzdHJ1Y3QgbW9kX2hkY3BfbGluazsKK3N0cnVjdCBtb2RfaGRjcF9kaXNwbGF5Owor c3RydWN0IGNwX3BzcDsKKworc3RydWN0IGhkY3Bfd29ya3F1ZXVlIHsKKwlzdHJ1Y3Qgd29ya19z dHJ1Y3QgY3BpcnFfd29yazsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGNhbGxiYWNrX2R3b3JrOwor CXN0cnVjdCBkZWxheWVkX3dvcmsgd2F0Y2hkb2dfdGltZXJfZHdvcms7CisJc3RydWN0IG11dGV4 IG11dGV4OworCisJc3RydWN0IG1vZF9oZGNwIGhkY3A7CisJc3RydWN0IG1vZF9oZGNwX291dHB1 dCBvdXRwdXQ7CisJc3RydWN0IG1vZF9oZGNwX2Rpc3BsYXkgZGlzcGxheTsKKwlzdHJ1Y3QgbW9k X2hkY3BfbGluayBsaW5rOworCisJdWludDhfdCBtYXhfbGluazsKK307CisKK3ZvaWQgaGRjcF9h ZGRfZGlzcGxheShzdHJ1Y3QgaGRjcF93b3JrcXVldWUgKmhkY3Bfd29yaywgdW5zaWduZWQgaW50 IGxpbmtfaW5kZXgpOwordm9pZCBoZGNwX3JlbW92ZV9kaXNwbGF5KHN0cnVjdCBoZGNwX3dvcmtx dWV1ZSAqd29yaywgdW5zaWduZWQgaW50IGxpbmtfaW5kZXgsIHVuc2lnbmVkIGludCBkaXNwbGF5 X2luZGV4KTsKK3ZvaWQgaGRjcF9yZXNldF9kaXNwbGF5KHN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAq d29yaywgdW5zaWduZWQgaW50IGxpbmtfaW5kZXgpOwordm9pZCBoZGNwX2hhbmRsZV9jcGlycShz dHJ1Y3QgaGRjcF93b3JrcXVldWUgKndvcmssIHVuc2lnbmVkIGludCBsaW5rX2luZGV4KTsKK3Zv aWQgaGRjcF9kZXN0cm95KHN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAqd29yayk7CisKK3N0cnVjdCBo ZGNwX3dvcmtxdWV1ZSAqaGRjcF9jcmVhdGVfd29ya3F1ZXVlKHZvaWQgKnBzcF9jb250ZXh0LCBz dHJ1Y3QgY3BfcHNwICpjcF9wc3AsIHN0cnVjdCBkYyAqZGMpOworCisjZW5kaWYgLyogQU1ER1BV X0RNX0FNREdQVV9ETV9IRENQX0hfICovCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeA==