From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH 11/18] drm/i915: Integration of GuC client Date: Thu, 26 Mar 2015 12:41:18 -0700 Message-ID: <1427398885-31988-12-git-send-email-yu.dai@intel.com> References: <1427398885-31988-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id AE40C72122 for ; Thu, 26 Mar 2015 12:44:27 -0700 (PDT) In-Reply-To: <1427398885-31988-1-git-send-email-yu.dai@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 RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpJbXBsZW1lbnRhdGlvbiBvZiBHdUMg Y2xpZW50LiBBIEd1QyBjbGllbnQgaGFzIGl0cyBvd24gZG9vcmJlbGwKYW5kIHdvcmtxdWV1ZS4g SXQgbWFpbnRhaW5zIHRoZSBkb29yYmVsbCBjYWNoZSBsaW5lLCBwcm9jZXNzCmRlc2NyaXB0aW9u IG9iamVjdCBhbmQgd29yayBxdWV1ZSBpdGVtLgoKQSBkZWZhdWx0IGd1Y19jbGllbnQgaXMgY3Jl YXRlZCB0byBkbyB0aGUgaW4tb3JkZXIgbGVnYWN5IGV4ZWNsaXN0CnN1Ym1pc3Npb24uCgpJc3N1 ZTogVklaLTQ4ODQKU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgIDUgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwgIDUyICsrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnQuYyAgICB8IDM5OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAg IHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2NoZWR1bGVyLmMgfCAg MjkgKystCiA2IGZpbGVzIGNoYW5nZWQsIDQ5MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY2xp ZW50LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDUwYjIwNTcuLjA0MDc3MjAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCkBAIC00Miw3ICs0Miw4IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIu byBcCiAKICMgYW5jaWxsaWFyeSBtaWNyb2NvbnRyb2xsZXIgc3VwcG9ydAogaTkxNS15ICs9IGlu dGVsX3VjX2xvYWRlci5vIFwKLQkgIGludGVsX2d1Y19sb2FkZXIubworCSAgaW50ZWxfZ3VjX2xv YWRlci5vIFwKKwkgIGludGVsX2d1Y19jbGllbnQubwogCiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCBy ZW5kZXIgc3RhdGUKIGk5MTUteSArPSBpbnRlbF9yZW5kZXJzdGF0ZV9nZW42Lm8gXApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggNzJjYzEyYS4uYmE1ZGE5NSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCkBAIC0xODQ3LDYgKzE4NDcsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3RvX2k5MTUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiB0b19p OTE1KGRldl9nZXRfZHJ2ZGF0YShkZXYpKTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZ3VjX3RvX2k5MTUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXJl dHVybiBjb250YWluZXJfb2YoZ3VjLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgZ3VjKTsKK30K KwogLyogSXRlcmF0ZSBvdmVyIGluaXRpYWxpc2VkIHJpbmdzICovCiAjZGVmaW5lIGZvcl9lYWNo X3JpbmcocmluZ19fLCBkZXZfcHJpdl9fLCBpX18pIFwKIAlmb3IgKChpX18pID0gMDsgKGlfXykg PCBJOTE1X05VTV9SSU5HUzsgKGlfXykrKykgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRl eCA3ZWFiYWRmLi4wOTUwOGUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApAQCAtMjcsMTEg KzI3LDM4IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3VjX2FwaS5oIgogI2luY2x1ZGUgImludGVsX3Vj X2xvYWRlci5oIgogCisjZGVmaW5lIEdVQ19EQl9TSVpFCVBBR0VfU0laRQorI2RlZmluZSBHVUNf V1FfU0laRQkoUEFHRV9TSVpFICogMikKKworc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmNsaWVudF9vYmo7CisJdTMyIHByaW9yaXR5OworCW9m Zl90IGRvb3JiZWxsX29mZnNldDsKKwlvZmZfdCBwcm9jX2Rlc2Nfb2Zmc2V0OworCW9mZl90IHdx X29mZnNldDsKKwl1aW50MTZfdCBkb29yYmVsbF9pZDsKKwl1aW50MzJfdCBjdHhfaW5kZXg7CisJ dWludDMyX3Qgd3Ffc2l6ZTsKK307CisKKyNkZWZpbmUgSTkxNV9NQVhfRE9PUkJFTExTCTI1Ngor I2RlZmluZSBJTlZBTElEX0RPT1JCRUxMX0lECUk5MTVfTUFYX0RPT1JCRUxMUworCisjZGVmaW5l IElOVkFMSURfQ1RYX0lECQkoTUFYX0dVQ19HUFVfQ09OVEVYVFMrMSkKKwogc3RydWN0IGludGVs X2d1YyB7CiAJc3RydWN0IGludGVsX3VjX2Z3IGd1Y19mdzsKIAogCS8qIEd1Qy1zcGVjaWZpYyBh ZGRpdGlvbnMgKi8KKwlzcGlubG9ja190IGhvc3QyZ3VjX2xvY2s7CisKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqY3R4X3Bvb2xfb2JqOworCisJc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAq ZXhlY2J1Zl9jbGllbnQ7CisKKwlzdHJ1Y3QgaWRhIGN0eF9pZHM7CisJaW50IGRiX2NhY2hlbGlu ZTsKKwlERUNMQVJFX0JJVE1BUChkb29yYmVsbF9iaXRtYXAsIEk5MTVfTUFYX0RPT1JCRUxMUyk7 CiB9OwogCiAjZGVmaW5lIEdVQ19TVEFUVVMJCTB4YzAwMApAQCAtOTEsNiArMTE4LDIyIEBAIHN0 cnVjdCBpbnRlbF9ndWMgewogCQkJCSBHVUNfRU5BQkxFX1JFQURfQ0FDSEVfRk9SX1NSQU1fREFU QSB8IFwKIAkJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0ZPUl9XT1BDTV9EQVRBKQogCisjZGVm aW5lIEhPU1QyR1VDX0lOVEVSUlVQVAkweGM0YzgKKyNkZWZpbmUgICBIT1NUMkdVQ19UUklHR0VS CSgxPDwwKQorCisjZGVmaW5lIERSQk1JU0MxCQkweDE5ODQKKyNkZWZpbmUgICBET09SQkVMTF9F TkFCTEUJKDE8PDApCisKKyNkZWZpbmUgR0VOOF9EUkJSRUdMKHgpICgweDEwMDAgKyAoeCkgKiA4 KQorI2RlZmluZSAgIEdFTjhfRFJCX1ZBTElEICgxPDwwKQorI2RlZmluZSBHRU44X0RSQlJFR1Uo eCkgKDB4MTAwMCArICh4KSAqIDggKyA0KQorCisjZGVmaW5lIEdFTjhfR1RfUE1fQ09ORklHCQkw eDEzODE0MAorI2RlZmluZSAgIEdFTjhfR1RfRE9PUkJFTExfRU5BQkxFCSgxPDwwKQorCisjZGVm aW5lIEdFTjhfR1RDUgkJMHg0Mjc0CisjZGVmaW5lICAgR0VOOF9HVENSX0lOVkFMSURBVEUJKDE8 PDApCisKIC8qIGludGVsX2d1Y19sb2FkZXIuYyAqLwogZXh0ZXJuIGludCBpbnRlbF9ndWNfbG9h ZF91Y29kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHdhaXQpOwogZXh0ZXJuIHZvaWQg aW50ZWxfZ3VjX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CkBAIC0xMDYsNCAr MTQ5LDEzIEBAIGludCBndWNfc2NoZWR1bGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIHZvaWQgZ3VjX3NjaGVkdWxlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwog Ym9vbCBzYW5pdGl6ZV9lbmFibGVfZ3VjX3NjaGVkdWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CiAKKy8qIGludGVsX2d1Y19jbGllbnQuYyAqLworc3RydWN0IGk5MTVfZ3VjX2NsaWVudCoK K2k5MTVfZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgcHJpb3Jp dHkpOwordm9pZCBpOTE1X2d1Y19jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQkJICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpOworaW50IGk5MTVfZ3VjX2NsaWVu dF9zdWJtaXQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAorCQkJICAgc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCwKKwkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwor CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGll bnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzY3MmZmCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2NsaWVudC5jCkBAIC0wLDAgKzEsMzk5IEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgv ZmlybXdhcmUuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2d1Yy5o IgorCisvKgorICogUmVhZCBHdUMgY29tbWFuZC9zdGF0dXMgcmVnaXN0ZXIgKFNPRlRfU0NSQVRD SF8wKQorICogUmV0dXJuIHRydWUgaWYgaXQgY29udGFpbnMgYSByZXNwb25zZSByYXRoZXIgdGhh biBhIGNvbW1hbmQKKyAqLworc3RhdGljIGlubGluZSBib29sIGk5MTVfZ3VjX2dldF9yZXNwb25z ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCSB1MzIgKnN0YXR1cykK K3sKKwl1MzIgdmFsID0gSTkxNV9SRUFEKFNPRlRfU0NSQVRDSCgwKSk7CisJKnN0YXR1cyA9IHZh bDsKKwlyZXR1cm4gR1VDMkhPU1RfSVNfUkVTUE9OU0UodmFsKTsKK30KKworc3RhdGljIGludCBp bnRlbF9ndWNfYWN0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyICpkYXRhLCB1MzIgbGVu KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1 Yyk7CisJdTMyIHN0YXR1czsKKwlpbnQgaTsKKwlpbnQgcmV0OworCisJaWYgKFdBUk5fT04obGVu IDwgMSB8fCBsZW4gPiAxNSkpCisJCXJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrKCZkZXZf cHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQor CQlJOTE1X1dSSVRFKFNPRlRfU0NSQVRDSChpKSwgZGF0YVtpXSk7CisKKwlQT1NUSU5HX1JFQUQo U09GVF9TQ1JBVENIKGkgLSAxKSk7CisKKwlJOTE1X1dSSVRFKEhPU1QyR1VDX0lOVEVSUlVQVCwg SE9TVDJHVUNfVFJJR0dFUik7CisKKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoaTkxNV9ndWNfZ2V0 X3Jlc3BvbnNlKGRldl9wcml2LCAmc3RhdHVzKSwgMTApOworCWlmIChzdGF0dXMgIT0gR1VDMkhP U1RfU1RBVFVTX1NVQ0NFU1MpIHsKKwkJLyogZWl0aGVyIEd1QyBkb2Vzbid0IHJlc3BvbnNlLCB3 aGljaCBpcyBhIFRJTUVPVVQsCisJCSAqIG9yIGEgZmFpbHVyZSBjb2RlIGlzIHJldHVybmVkLiAq LworCQlpZiAocmV0ICE9IC1FVElNRURPVVQpCisJCQlyZXQgPSAtRUlPOworCisJCURSTV9FUlJP UigiR1VDOiBob3N0Mmd1YyBhY3Rpb24gMHglWCBmYWlsZWQuIHJldD0lZCAiCisJCQkJInN0YXR1 cz0weCUwOFggcmVzcG9uc2U9MHglMDhYXG4iLAorCQkJCWRhdGFbMF0sIHJldCwgc3RhdHVzLAor CQkJCUk5MTVfUkVBRChTT0ZUX1NDUkFUQ0goMTUpKSk7CisJfQorCisJc3Bpbl91bmxvY2soJmRl dl9wcml2LT5ndWMuaG9zdDJndWNfbG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg dm9pZCBndWNfcmVsZWFzZV9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHVpbnQzMl90 IGlkKQoreworCXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKKwlpZGFfc2ltcGxlX3Jl bW92ZSgmZ3VjLT5jdHhfaWRzLCBpZCk7CisJc3Bpbl91bmxvY2soJmd1Yy0+aG9zdDJndWNfbG9j ayk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBndWNfYXNzaWduX2N0eF9kZXNjKHN0cnVjdCBpbnRl bF9ndWMgKmd1YykKK3sKKwlpbnQgaWQ7CisKKwlzcGluX2xvY2soJmd1Yy0+aG9zdDJndWNfbG9j ayk7CisJaWQgPSBpZGFfc2ltcGxlX2dldCgmZ3VjLT5jdHhfaWRzLCAwLAorCQkJICAgIE1BWF9H VUNfR1BVX0NPTlRFWFRTLCBHRlBfS0VSTkVMKTsKKwlzcGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1 Y19sb2NrKTsKKworCXJldHVybiAoaWQgPCAwKSA/IElOVkFMSURfQ1RYX0lEIDogKHVpbnQzMl90 KWlkOworfQorCitzdGF0aWMgdm9pZCBndWNfcmVsZWFzZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIHVpbnQxNl90IGlkKQoreworCXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2Nr KTsKKwliaXRtYXBfY2xlYXIoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIGlkLCAxKTsKKwlzcGluX3Vu bG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKK30KKworc3RhdGljIHVpbnQxNl90IGd1Y19hc3Np Z25fZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgcHJpb3JpdHkpCit7CisJY29u c3QgdWludDE2X3Qgc2l6ZSA9IEk5MTVfTUFYX0RPT1JCRUxMUzsKKwl1aW50MTZfdCBpZDsKKwor CXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKKworCS8qIFRoZSBiaXRtYXAgaXMgc3Bs aXQgaW50byB0d28gaGFsdmVzIC0gaGlnaCBhbmQgbm9ybWFsIHByaW9yaXR5LiAqLworCWlmIChw cmlvcml0eSA8PSBHVUNfQ1RYX1BSSU9SSVRZX0hJR0gpIHsKKwkJaWQgPSBmaW5kX25leHRfemVy b19iaXQoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIHNpemUsIHNpemUgLyAyKTsKKwkJaWYgKGlkID09 IHNpemUpCisJCQlpZCA9IElOVkFMSURfRE9PUkJFTExfSUQ7CisJfSBlbHNlIHsKKwkJaWQgPSBm aW5kX25leHRfemVyb19iaXQoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIHNpemUgLyAyLCAwKTsKKwkJ aWYgKGlkID09IHNpemUgLyAyKQorCQkJaWQgPSBJTlZBTElEX0RPT1JCRUxMX0lEOworCX0KKwor CWlmIChpZCAhPSBJTlZBTElEX0RPT1JCRUxMX0lEKQorCQliaXRtYXBfc2V0KGd1Yy0+ZG9vcmJl bGxfYml0bWFwLCBpZCwgMSk7CisKKwlzcGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsK KworCXJldHVybiBpZDsKK30KKworc3RhdGljIG9mZl90IGd1Y19zZWxlY3RfZG9vcmJlbGxfY2Fj aGVsaW5lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwljb25zdCBpbnQgY2FjaGVsaW5lX3Np emUgPSBib290X2NwdV9kYXRhLng4Nl9jbGZsdXNoX3NpemU7CisJY29uc3QgaW50IGNhY2hlbGlu ZV9wZXJfcGFnZSA9IFBBR0VfU0laRSAvIGNhY2hlbGluZV9zaXplOworCW9mZl90IG9mZnNldDsK KworCXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKKworCS8qIERvb3JiZWxsIHVzZXMg c2luZ2xlIGNhY2hlIGxpbmUgKi8KKwlvZmZzZXQgPSBjYWNoZWxpbmVfc2l6ZSAqIGd1Yy0+ZGJf Y2FjaGVsaW5lOworCisJLyogTW92aW5nIHRvIG5leHQgY2FjaGUgbGluZSB0byByZWR1Y2UgY29u dGVudGlvbiAqLworCWd1Yy0+ZGJfY2FjaGVsaW5lID0gKGd1Yy0+ZGJfY2FjaGVsaW5lICsgMSkg JSBjYWNoZWxpbmVfcGVyX3BhZ2U7CisKKwlzcGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2Nr KTsKKworCXJldHVybiBvZmZzZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfY3R4X2Rlc2Moc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAorCQkJICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQp Cit7CisJc3RydWN0IGd1Y19jb250ZXh0X2Rlc2MgZGVzYzsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNn OworCisJbWVtc2V0KCZkZXNjLCAwLCBzaXplb2YoZGVzYykpOworCisJZGVzYy5hdHRyaWJ1dGUg PSBHVUNfQ1RYX0RFU0NfQVRUUl9BQ1RJVkUgfCBHVUNfQ1RYX0RFU0NfQVRUUl9LRVJORUw7CisJ ZGVzYy5jb250ZXh0X2lkID0gY2xpZW50LT5jdHhfaW5kZXg7CisJZGVzYy5wcmlvcml0eSA9IGNs aWVudC0+cHJpb3JpdHk7CisJZGVzYy5lbmdpbmVzX3VzZWQgPSAoMSA8PCBSQ1MpIHwgKDEgPDwg VkNTKSB8ICgxIDw8IEJDUykgfAorCQkJICAgICgxIDw8IFZFQ1MpIHwgKDEgPDwgVkNTMik7IC8q IGFsbCBlbmdpbmVzICovCisJZGVzYy5kYl9pZCA9IGNsaWVudC0+ZG9vcmJlbGxfaWQ7CisKKwkv KgorCSAqIFRoZSBDUFUgYWRkcmVzcyBpcyBvbmx5IG5lZWRlZCBhdCBjZXJ0YWluIHBvaW50cywg c28ga21hcF9hdG9taWMgb24KKwkgKiBkZW1hbmQgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGluIHRo ZSBjdHggZGVzY3JpcHRvci4KKwkgKiBYWFg6IE1heSBtYWtlIGRlYnVnIGVhc2llciB0byBoYXZl IGl0IG1hcHBlZAorCSAqLworCWRlc2MuZGJfdHJpZ2dlcl9jcHUgPSAwOworCWRlc2MuZGJfdHJp Z2dlcl91ayA9IGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0ICsKKwkJaTkxNV9nZW1fb2JqX2dndHRf b2Zmc2V0KGNsaWVudC0+Y2xpZW50X29iaik7CisJZGVzYy5kYl90cmlnZ2VyX3BoeSA9IGNsaWVu dC0+ZG9vcmJlbGxfb2Zmc2V0ICsKKwkJc2dfZG1hX2FkZHJlc3MoY2xpZW50LT5jbGllbnRfb2Jq LT5wYWdlcy0+c2dsKTsKKworCWRlc2MucHJvY2Vzc19kZXNjID0gY2xpZW50LT5wcm9jX2Rlc2Nf b2Zmc2V0ICsKKwkJaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGNsaWVudC0+Y2xpZW50X29iaik7 CisKKwlkZXNjLndxX2FkZHIgPSBjbGllbnQtPndxX29mZnNldCArCisJCWk5MTVfZ2VtX29ial9n Z3R0X29mZnNldChjbGllbnQtPmNsaWVudF9vYmopOworCisJZGVzYy53cV9zaXplID0gY2xpZW50 LT53cV9zaXplOworCisJLyoKKwkgKiBYWFg6IFRha2UgTFJDcyBmcm9tIGFuIGV4aXN0aW5nIGlu dGVsX2NvbnRleHQgaWYgdGhpcyBpcyBub3QgYW4KKwkgKiBJc0tNRENyZWF0ZWRDb250ZXh0IGNs aWVudAorCSAqLworCWRlc2MuZGVzY19wcml2YXRlID0gKHVpbnRwdHJfdCljbGllbnQ7CisKKwkv KiBQb29sIGNvbnRleHQgaXMgcGlubmVkIGFscmVhZHkgKi8KKwlzZyA9IGd1Yy0+Y3R4X3Bvb2xf b2JqLT5wYWdlczsKKwlzZ19wY29weV9mcm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZk ZXNjLCBzaXplb2YoZGVzYyksCisJCQkgICAgIHNpemVvZihkZXNjKSAqIGNsaWVudC0+Y3R4X2lu ZGV4KTsKK30KKworc3RhdGljIHZvaWQgZmluaV9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCisJCQkgIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZ3Vj X2NvbnRleHRfZGVzYyBkZXNjOworCXN0cnVjdCBzZ190YWJsZSAqc2c7CisKKwltZW1zZXQoJmRl c2MsIDAsIHNpemVvZihkZXNjKSk7CisKKwlzZyA9IGd1Yy0+Y3R4X3Bvb2xfb2JqLT5wYWdlczsK KwlzZ19wY29weV9mcm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZkZXNjLCBzaXplb2Yo ZGVzYyksCisJCQkgICAgIHNpemVvZihkZXNjKSAqIGNsaWVudC0+Y3R4X2luZGV4KTsKK30KKwor c3RhdGljIHZvaWQgaW5pdF9wcm9jX2Rlc2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJICAg c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQoreworCXN0cnVjdCBndWNfcHJvY2Vzc19k ZXNjICpkZXNjOworCXZvaWQgKmJhc2U7CisKKwliYXNlID0ga21hcF9hdG9taWMoaTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlKGNsaWVudC0+Y2xpZW50X29iaiwgMCkpOworCWRlc2MgPSBiYXNlICsg Y2xpZW50LT5wcm9jX2Rlc2Nfb2Zmc2V0OworCisJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVz YykpOworCisJLyoKKwkgKiBYWFg6IHBEb29yYmVsbCBhbmQgV1FWQmFzZUFkZHJlc3MgYXJlIHBv aW50ZXJzIGluIHByb2Nlc3MgYWRkcmVzcworCSAqIHNwYWNlIGZvciByaW5nMyBjbGllbnRzIChz ZXQgdGhlbSBhcyBpbiBtbWFwX2lvY3RsKSBvciBrZXJuZWwKKwkgKiBzcGFjZSBmb3Iga2VybmVs IGNsaWVudHMgKG1hcCBvbiBkZW1hbmQgaW5zdGVhZD8gTWF5IG1ha2UgZGVidWcKKwkgKiBlYXNp ZXIgdG8gaGF2ZSBpdCBtYXBwZWQpLgorCSAqLworCWRlc2MtPndxX2Jhc2VfYWRkciA9IDA7CisJ ZGVzYy0+ZGJfYmFzZV9hZGRyID0gMDsKKworCWRlc2MtPmNvbnRleHRfaWQgPSBjbGllbnQtPmN0 eF9pbmRleDsKKwlkZXNjLT53cV9zaXplX2J5dGVzID0gY2xpZW50LT53cV9zaXplOworCWRlc2Mt PndxX3N0YXR1cyA9IFdRX1NUQVRVU19BQ1RJVkU7CisJZGVzYy0+cHJpb3JpdHkgPSBjbGllbnQt PnByaW9yaXR5OworCisJa3VubWFwX2F0b21pYyhiYXNlKTsKK30KKworc3RhdGljIGludCBob3N0 Mmd1Y19hbGxvY2F0ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAgICAg c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQoreworCXUzMiBkYXRhWzJdOworCisJZGF0 YVswXSA9IEhPU1QyR1VDX0FDVElPTl9BTExPQ0FURV9ET09SQkVMTDsKKwlkYXRhWzFdID0gY2xp ZW50LT5jdHhfaW5kZXg7CisKKwlyZXR1cm4gaW50ZWxfZ3VjX2FjdGlvbihndWMsIGRhdGEsIDIp OworfQorCitzdGF0aWMgaW50IGhvc3QyZ3VjX3JlbGVhc2VfZG9vcmJlbGwoc3RydWN0IGludGVs X2d1YyAqZ3VjLAorCQkJCSAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQorewor CXUzMiBkYXRhWzJdOworCisJZGF0YVswXSA9IEhPU1QyR1VDX0FDVElPTl9ERUFMTE9DQVRFX0RP T1JCRUxMOworCWRhdGFbMV0gPSBjbGllbnQtPmN0eF9pbmRleDsKKworCXJldHVybiBpbnRlbF9n dWNfYWN0aW9uKGd1YywgZGF0YSwgMik7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfZG9vcmJlbGwo c3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGll bnQpCit7CisJc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpkb29yYmVsbDsKKwl2b2lkICpiYXNl OworCisJYmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjbGllbnQt PmNsaWVudF9vYmosIDApKTsKKwlkb29yYmVsbCA9IGJhc2UgKyBjbGllbnQtPmRvb3JiZWxsX29m ZnNldDsKKworCWRvb3JiZWxsLT5kYl9zdGF0dXMgPSAxOworCWRvb3JiZWxsLT5jb29raWUgPSAw OworCisJa3VubWFwX2F0b21pYyhiYXNlKTsKK30KKworc3RhdGljIHZvaWQgZGlzYWJsZV9kb29y YmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkgICAgIHN0cnVjdCBpOTE1X2d1Y19jbGll bnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNf dG9faTkxNShndWMpOworCXN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7CisJdm9p ZCAqYmFzZTsKKwlpbnQgZHJicmVnID0gR0VOOF9EUkJSRUdMKGNsaWVudC0+ZG9vcmJlbGxfaWQp OworCWludCB2YWx1ZTsKKworCWJhc2UgPSBrbWFwX2F0b21pYyhpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2UoY2xpZW50LT5jbGllbnRfb2JqLCAwKSk7CisJZG9vcmJlbGwgPSBiYXNlICsgY2xpZW50 LT5kb29yYmVsbF9vZmZzZXQ7CisKKwlkb29yYmVsbC0+ZGJfc3RhdHVzID0gMDsKKworCWt1bm1h cF9hdG9taWMoYmFzZSk7CisKKwlJOTE1X1dSSVRFKGRyYnJlZywgSTkxNV9SRUFEKGRyYnJlZykg JiB+R0VOOF9EUkJfVkFMSUQpOworCisJdmFsdWUgPSBJOTE1X1JFQUQoZHJicmVnKTsKKwlXQVJO X09OKCh2YWx1ZSAmIEdFTjhfRFJCX1ZBTElEKSAhPSAwKTsKKworCUk5MTVfV1JJVEUoR0VOOF9E UkJSRUdVKGNsaWVudC0+ZG9vcmJlbGxfaWQpLCAwKTsKKwlJOTE1X1dSSVRFKGRyYnJlZywgMCk7 CisKKwkvKiBYWFg6IHdhaXQgZm9yIGFueSBpbnRlcnJ1cHRzICovCisJLyogWFhYOiB3YWl0IGZv ciB3b3JrcXVldWUgdG8gZHJhaW4gKi8KK30KKwordm9pZCBpOTE1X2d1Y19jbGllbnRfZnJlZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGll bnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKKworCWlmICgh Y2xpZW50KQorCQlyZXR1cm47CisKKwlpZiAoY2xpZW50LT5kb29yYmVsbF9pZCAhPSBJTlZBTElE X0RPT1JCRUxMX0lEKSB7CisJCWRpc2FibGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOworCQlob3N0 Mmd1Y19yZWxlYXNlX2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKKwkJZ3VjX3JlbGVhc2VfZG9vcmJl bGwoZ3VjLCBjbGllbnQtPmRvb3JiZWxsX2lkKTsKKwl9CisKKwkvKgorCSAqIFhYWDogd2FpdCBm b3IgYW55IG91dHN0YW5kaW5nIHN1Ym1pc3Npb25zIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4KKwkg KiBCZSBzdXJlIHRvIGRyb3AgYW55IGxvY2tzCisJICovCisKKwlpbnRlbF9ndWNfcmVsZWFzZV9n ZW1fb2JqKGNsaWVudC0+Y2xpZW50X29iaik7CisKKwlpZiAoY2xpZW50LT5jdHhfaW5kZXggIT0g SU5WQUxJRF9DVFhfSUQpIHsKKwkJZmluaV9jdHhfZGVzYyhndWMsIGNsaWVudCk7CisJCWd1Y19y ZWxlYXNlX2N0eF9kZXNjKGd1YywgY2xpZW50LT5jdHhfaW5kZXgpOworCX0KKworCWtmcmVlKGNs aWVudCk7Cit9CisKK3N0cnVjdCBpOTE1X2d1Y19jbGllbnQqCitpOTE1X2d1Y19jbGllbnRfYWxs b2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHByaW9yaXR5KQoreworCXN0cnVjdCBpOTE1 X2d1Y19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+ Z3VjOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisKKwljbGllbnQgPSBremFs bG9jKHNpemVvZigqY2xpZW50KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbGllbnQpCisJCXJldHVy biBOVUxMOworCisJY2xpZW50LT5kb29yYmVsbF9pZCA9IElOVkFMSURfRE9PUkJFTExfSUQ7CisJ Y2xpZW50LT5wcmlvcml0eSA9IHByaW9yaXR5OworCisJY2xpZW50LT5jdHhfaW5kZXggPSBndWNf YXNzaWduX2N0eF9kZXNjKGd1Yyk7CisJaWYgKGNsaWVudC0+Y3R4X2luZGV4ID09IElOVkFMSURf Q1RYX0lEKQorCQlnb3RvIGVycjsKKworCS8qIFRoZSBmaXJzdCBwYWdlIGlzIGRvb3JiZWxsL3By b2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4gKi8KKwlvYmogPSBpbnRlbF9ndWNf YWxsb2NhdGVfZ2VtX29iaihkZXYsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOworCWlmICgh b2JqKQorCQlnb3RvIGVycjsKKworCWNsaWVudC0+Y2xpZW50X29iaiA9IG9iajsKKwljbGllbnQt PndxX29mZnNldCA9IEdVQ19EQl9TSVpFOworCWNsaWVudC0+d3Ffc2l6ZSA9IEdVQ19XUV9TSVpF OworCisJY2xpZW50LT5kb29yYmVsbF9vZmZzZXQgPSBndWNfc2VsZWN0X2Rvb3JiZWxsX2NhY2hl bGluZShndWMpOworCisJLyoKKwkgKiBTaW5jZSB0aGUgZG9vcmJlbGwgb25seSByZXF1aXJlcyBh IHNpbmdsZSBjYWNoZWxpbmUsIHdlIGNhbiBzYXZlCisJICogc3BhY2UgYnkgcHV0dGluZyB0aGUg YXBwbGljYXRpb24gcHJvY2VzcyBkZXNjcmlwdG9yIGluIHRoZSBzYW1lCisJICogcGFnZS4gVXNl IHRoZSBoYWxmIG9mIHRoZSBwYWdlIHRoYXQgZG9lc24ndCBpbmNsdWRlIHRoZSBkb29yYmVsbC4K KwkgKi8KKwlpZiAoY2xpZW50LT5kb29yYmVsbF9vZmZzZXQgPj0gKEdVQ19EQl9TSVpFIC8gMikp CisJCWNsaWVudC0+cHJvY19kZXNjX29mZnNldCA9IDA7CisJZWxzZQorCQljbGllbnQtPnByb2Nf ZGVzY19vZmZzZXQgPSAoR1VDX0RCX1NJWkUgLyAyKTsKKworCWNsaWVudC0+ZG9vcmJlbGxfaWQg PSBndWNfYXNzaWduX2Rvb3JiZWxsKGd1YywgY2xpZW50LT5wcmlvcml0eSk7CisJaWYgKGNsaWVu dC0+ZG9vcmJlbGxfaWQgPT0gSU5WQUxJRF9ET09SQkVMTF9JRCkKKwkJLyogWFhYOiBldmljdCBh IGRvb3JiZWxsIGluc3RlYWQgKi8KKwkJZ290byBlcnI7CisKKwlpbml0X2N0eF9kZXNjKGd1Yywg Y2xpZW50KTsKKwlpbml0X3Byb2NfZGVzYyhndWMsIGNsaWVudCk7CisJaW5pdF9kb29yYmVsbChn dWMsIGNsaWVudCk7CisKKwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRo ZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCisJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhf R1RDUl9JTlZBTElEQVRFKTsKKworCS8qIFhYWDogQW55IGNhY2hlIGZsdXNoZXMgbmVlZGVkPyBH ZW5lcmFsIGRvbWFpbiBtZ210IGNhbGxzPyAqLworCisJaWYgKGhvc3QyZ3VjX2FsbG9jYXRlX2Rv b3JiZWxsKGd1YywgY2xpZW50KSkKKwkJZ290byBlcnI7CisKKwlyZXR1cm4gY2xpZW50OworCitl cnI6CisJaTkxNV9ndWNfY2xpZW50X2ZyZWUoZGV2LCBjbGllbnQpOworCXJldHVybiBOVUxMOwor fQorCitpbnQgaTkxNV9ndWNfY2xpZW50X3N1Ym1pdChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpj bGllbnQsCisJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAorCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKK3sKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwppbmRleCBjMjY2YmUzLi41OGUxZTMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0yMzMsMTIgKzIzMywxOSBAQCBzdGF0aWMg aW50IGd1Y19sb2FkX3Vjb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkvKiBTZXQgTU1J Ty9XQSBmb3IgR3VDIGluaXQgKi8KIAorCUk5MTVfV1JJVEUoRFJCTUlTQzEsIERPT1JCRUxMX0VO QUJMRSk7CisKIAkvKiBFbmFibGUgTUlBIGNhY2hpbmcuIEd1QyBjbG9jayBnYXRpbmcgaXMgZGlz YWJsZWQuICovCiAJSTkxNV9XUklURShHVUNfU0hJTV9DT05UUk9MLCBHVUNfU0hJTV9DT05UUk9M X1ZBTFVFKTsKIAogCS8qIFdhQzZEaXNhbGxvd0J5R2Z4UGF1c2UqLwogCUk5MTVfV1JJVEUoR0VO Nl9HRlhQQVVTRSwgMHgzMEZGRik7CiAKKwlpZiAoSVNfU0tZTEFLRShkZXYpKQorCQlJOTE1X1dS SVRFKEdFTjlfR1RfUE1fQ09ORklHLCBHRU44X0dUX0RPT1JCRUxMX0VOQUJMRSk7CisJZWxzZQor CQlJOTE1X1dSSVRFKEdFTjhfR1RfUE1fQ09ORklHLCBHRU44X0dUX0RPT1JCRUxMX0VOQUJMRSk7 CisKIAlpZiAoSVNfR0VOOShkZXYpKSB7CiAJCS8qIERPUCBDbG9jayBHYXRpbmcgRW5hYmxlIGZv ciBHdUMgY2xvY2tzICovCiAJCUk5MTVfV1JJVEUoR0VON19NSVNDQ1BDVEwsIChHRU44X0RPUF9D TE9DS19HQVRFX0dVQ19FTkFCTEUgfApAQCAtMjU1LDEzICsyNjIsNiBAQCBzdGF0aWMgaW50IGd1 Y19sb2FkX3Vjb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlzZXRfZ3VjX2luaXRfcGFy YW1zKGRldl9wcml2KTsKIAotCS8qIEZJWE1FOiAhVVBTVFJFQU0gLSBJIGRvbid0IGhhdmUgcmVh bCBrZXlzLCBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhlCi0JICogYXV0aGVudGljYXRpb24uIFRo aXMgY2FuIG9ubHkgd29yayBpZiB0aGUgcGFydCBpcyBmdXNlZCBpbiBhIHNwZWNpYWwKLQkgKiBj b25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIGV2ZW4gaWYgaXQgbGVha2VkIGV4dGVybmFsbHksIGl0 IHdvbid0IGJlCi0JICogZGV0cmltZW50YWwgdG8gc2VjdXJpdHkKLQkgKi8KLQlJOTE1X1dSSVRF KDB4YzA2OCwgMHgzKTsKLQogCXJldCA9IHVjb2RlX2RtYV94ZmVyX3N5bmMoZGV2X3ByaXYpOwog CiAJLyogV2UgY2FuIGZyZWUgdGhlIG9iamVjdCBwYWdlcyBub3csIGFuZCB3ZSB3b3VsZCwgZXhj ZXB0IHdlIG1pZ2h0IGFzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2NoZWR1bGVy LmMKaW5kZXggZWQ3NDRmYi4uYTc4YjRiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19zY2hlZHVsZXIuYwpAQCAtMzYsNiArMzYsOCBAQCB2b2lkIGd1Y19zY2hlZHVsZXJfZmlu aShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChjdHhfcG9vbCkgewogCQlpbnRlbF9ndWNf cmVsZWFzZV9nZW1fb2JqKGN0eF9wb29sKTsKIAkJZ3VjLT5jdHhfcG9vbF9vYmogPSBOVUxMOwor CisJCWlkYV9kZXN0cm95KCZndWMtPmN0eF9pZHMpOwogCX0KIH0KIApAQCAtNjAsMjEgKzYyLDQ0 IEBAIGludCBndWNfc2NoZWR1bGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAo IWd1Yy0+Y3R4X3Bvb2xfb2JqKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCXNwaW5fbG9ja19pbml0 KCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOworCisJaWRhX2luaXQoJmd1Yy0+Y3R4X2lk cyk7CisKKwltZW1zZXQoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIDAsIHNpemVvZihndWMtPmRvb3Ji ZWxsX2JpdG1hcCkpOworCWd1Yy0+ZGJfY2FjaGVsaW5lID0gMDsKKwogCXJldHVybiAwOwogfQog CiBpbnQgZ3VjX3NjaGVkdWxlcl9lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOworCiAJaWYgKCFpOTE1LmVuYWJs ZV9ndWNfc2NoZWR1bGluZykKIAkJcmV0dXJuIDA7CiAKLQkvKiBUT0RPOiBwbGFjZWhvbGRlciBm b3IgZ3VjIHNjaGVkdWxlciBlbmFibGluZyAqLworCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJt aXNzaW9uICovCisJZ3VjLT5leGVjYnVmX2NsaWVudCA9CisJCQlpOTE1X2d1Y19jbGllbnRfYWxs b2MoZGV2LCBHVUNfQ1RYX1BSSU9SSVRZX05PUk1BTCk7CisJaWYgKCFndWMtPmV4ZWNidWZfY2xp ZW50KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBleGVjYnVmIGd1Y19jbGllbnRc biIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKIAlyZXR1cm4gMDsKIH0KIAogdm9pZCBndWNf c2NoZWR1bGVyX2Rpc2FibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQkvKiBUT0RPOiBw bGFjZWhvbGRlciBmb3IgZ3VjIHNjaGVkdWxlciBkaXNhYmxpbmcgKi8KKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9n dWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOworCisJaWYgKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpIHsK KwkJaTkxNV9ndWNfY2xpZW50X2ZyZWUoZGV2LCBndWMtPmV4ZWNidWZfY2xpZW50KTsKKwkJZ3Vj LT5leGVjYnVmX2NsaWVudCA9IE5VTEw7CisJfQogfQogCiBib29sIHNhbml0aXplX2VuYWJsZV9n dWNfc2NoZWR1bGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotLSAKMS45LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==