From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH 38/43] drm/i915: Implement gmbus burst read Date: Wed, 14 Feb 2018 19:43:53 +0530 Message-ID: <1518617638-21684-39-git-send-email-ramalingam.c@intel.com> References: <1518617638-21684-1-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCBE26E3F7 for ; Wed, 14 Feb 2018 14:21:16 +0000 (UTC) In-Reply-To: <1518617638-21684-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: seanpaul@chromium.org, intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com, daniel.vetter@ffwll.ch Cc: tomas.winkler@intel.com List-Id: intel-gfx@lists.freedesktop.org SW1wbGVtZW50cyBhIGludGVyZmFjZSBmb3Igc2luZ2xlIGJ1cnN0IHJlYWQgb2YgZGF0YSB0aGF0 IGlzIGxhcmdlcgp0aGFuIDUxMiBCeXRlcyB0aHJvdWdoIGdtYnVzLgoKSERDUDIuMiBzcGVjIGV4 cGVjdHMgSERDUDIuMiB0cmFuc21pdHRlciB0byByZWFkIDUyMkJ5dGVzIG9mIEhEQ1AKcmVjZWl2 ZXIgY2VydGlmaWNhdGVzIGluIHNpbmdsZSBidXJzdCByZWFkLiBPbiBnbWJ1cywgdG8gcmVhZCBt b3JlCnRoYW4gNTExQnl0ZXMsIEhXIHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgYnVyc3QgcmVh ZC4KClRoaXMgcGF0Y2ggcGFzc2VzIHRoZSBidXJzdCByZWFkIHJlcXVlc3QgdGhyb3VnaCBnbWJ1 cyByZWFkIGZ1bmN0aW9ucy4KQW5kIGltcGxlbWVudHMgdGhlIHNlcXVlbmNlIG9mIGVuYWJsaW5n IGFuZCBkaXNhYmxpbmcgdGhlIGJ1cnN0IHJlYWQuCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2Ft IEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAgIDMg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgfCAxMjQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25z KCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwOWQzMWRi OTBhMzguLjllYzM0YTJkMWNlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zNjcwLDYg KzM2NzAsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF90ZWFyZG93bl9nbWJ1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGJvb2wgaW50ZWxfZ21idXNfaXNfdmFsaWRf cGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgIHVuc2lnbmVk IGludCBwaW4pOwogZXh0ZXJuIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIpOworZXh0ZXJuIGludCBpbnRlbF9nbWJ1c19idXJzdF9yZWFkKHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgIHVuc2lnbmVkIGludCBvZmZzZXQsIHZv aWQgKmJ1Ziwgc2l6ZV90IHNpemUpOwogCiBleHRlcm4gc3RydWN0IGkyY19hZGFwdGVyICoKIGlu dGVsX2dtYnVzX2dldF9hZGFwdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dW5zaWduZWQgaW50IHBpbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA2YTU3YjEyZDhk YWIuLmY5M2MyN2ZlNzc5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0zMjI3LDYgKzMy MjcsNyBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7CiAjZGVmaW5lICAgR01CVVNfUkFURV80 MDBLSFoJKDI8PDgpIC8qIHJlc2VydmVkIG9uIFBpbmV2aWV3ICovCiAjZGVmaW5lICAgR01CVVNf UkFURV8xTUhaCSgzPDw4KSAvKiByZXNlcnZlZCBvbiBQaW5ldmlldyAqLwogI2RlZmluZSAgIEdN QlVTX0hPTERfRVhUCSgxPDw3KSAvKiAzMDBucyBob2xkIHRpbWUsIHJzdmQgb24gUGluZXZpZXcg Ki8KKyNkZWZpbmUgICBHTUJVU19CWVRFX0NOVF9PVkVSUklERSAoMTw8NikKICNkZWZpbmUgICBH TUJVU19QSU5fRElTQUJMRUQJMAogI2RlZmluZSAgIEdNQlVTX1BJTl9TU0MJCTEKICNkZWZpbmUg ICBHTUJVU19QSU5fVkdBRERDCTIKQEAgLTMyNTQsOCArMzI1NSwxMCBAQCBlbnVtIGk5MTVfcG93 ZXJfd2VsbF9pZCB7CiAjZGVmaW5lICAgR01CVVNfQ1lDTEVfV0FJVAkoMTw8MjUpCiAjZGVmaW5l ICAgR01CVVNfQ1lDTEVfSU5ERVgJKDI8PDI1KQogI2RlZmluZSAgIEdNQlVTX0NZQ0xFX1NUT1AJ KDQ8PDI1KQorI2RlZmluZSAgIEdNQlVTX0NZQ0xFX01BU0sJKDc8PDI1KQogI2RlZmluZSAgIEdN QlVTX0JZVEVfQ09VTlRfU0hJRlQgMTYKICNkZWZpbmUgICBHTUJVU19CWVRFX0NPVU5UX01BWCAg IDI1NlUKKyNkZWZpbmUgICBHTUJVU19CWVRFX0NPVU5UX0hXX01BWCA1MTFVCiAjZGVmaW5lICAg R01CVVNfU0xBVkVfSU5ERVhfU0hJRlQgOAogI2RlZmluZSAgIEdNQlVTX1NMQVZFX0FERFJfU0hJ RlQgMQogI2RlZmluZSAgIEdNQlVTX1NMQVZFX1JFQUQJKDE8PDApCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2kyYy5jCmluZGV4IGU2ODc1NTA5YmNkOS4uNTU5MzMyMjQ4NWZhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9pMmMuYwpAQCAtMzY0LDIxICszNjQsMzAgQEAgZ21idXNfd2FpdF9pZGxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHN0YXRpYyBpbnQKIGdtYnVzX3hmZXJfcmVhZF9j aHVuayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgIHVuc2lnbmVk IHNob3J0IGFkZHIsIHU4ICpidWYsIHVuc2lnbmVkIGludCBsZW4sCi0JCSAgICAgIHUzMiBnbWJ1 czFfaW5kZXgpCisJCSAgICAgIHUzMiBnbWJ1czFfaW5kZXgsIGJvb2wgYnVyc3RfcmVhZCkKIHsK Kwl1bnNpZ25lZCBpbnQgc2l6ZSA9IGxlbjsKKwlpbnQgcmV0OworCisJaWYgKGJ1cnN0X3JlYWQp IHsKKwkJLyogU2VxIHRvIGVuYWJsZSBCdXJzdCBSZWFkICovCisJCUk5MTVfV1JJVEVfRlcoR01C VVMwLCAoSTkxNV9SRUFEX0ZXKEdNQlVTMCkgfAorCQkJICAgICAgR01CVVNfQllURV9DTlRfT1ZF UlJJREUpKTsKKwkJc2l6ZSA9IEdNQlVTX0JZVEVfQ09VTlRfSFdfTUFYOworCX0KKwogCUk5MTVf V1JJVEVfRlcoR01CVVMxLAogCQkgICAgICBnbWJ1czFfaW5kZXggfAogCQkgICAgICBHTUJVU19D WUNMRV9XQUlUIHwKLQkJICAgICAgKGxlbiA8PCBHTUJVU19CWVRFX0NPVU5UX1NISUZUKSB8CisJ CSAgICAgIChzaXplIDw8IEdNQlVTX0JZVEVfQ09VTlRfU0hJRlQpIHwKIAkJICAgICAgKGFkZHIg PDwgR01CVVNfU0xBVkVfQUREUl9TSElGVCkgfAogCQkgICAgICBHTUJVU19TTEFWRV9SRUFEIHwg R01CVVNfU1dfUkRZKTsKIAl3aGlsZSAobGVuKSB7Ci0JCWludCByZXQ7CiAJCXUzMiB2YWwsIGxv b3AgPSAwOwogCiAJCXJldCA9IGdtYnVzX3dhaXQoZGV2X3ByaXYsIEdNQlVTX0hXX1JEWSwgR01C VVNfSFdfUkRZX0VOKTsKIAkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CisJCQlnb3RvIGV4aXQ7 CiAKIAkJdmFsID0gSTkxNV9SRUFEX0ZXKEdNQlVTMyk7CiAJCWRvIHsKQEAgLTM4NywxMiArMzk2 LDI5IEBAIGdtYnVzX3hmZXJfcmVhZF9jaHVuayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCX0gd2hpbGUgKC0tbGVuICYmICsrbG9vcCA8IDQpOwogCX0KIAotCXJldHVybiAw OworZXhpdDoKKwlpZiAoYnVyc3RfcmVhZCkgeworCisJCS8qIFNlcSB0byBkaXNhYmxlIHRoZSBC dXJzdCBSZWFkICovCisJCUk5MTVfV1JJVEVfRlcoR01CVVMwLAorCQkJKEk5MTVfUkVBRF9GVyhH TUJVUzApICYgfkdNQlVTX0JZVEVfQ05UX09WRVJSSURFKSk7CisJCUk5MTVfV1JJVEVfRlcoR01C VVMxLCAoSTkxNV9SRUFEX0ZXKEdNQlVTMSkgJgorCQkJCQl+R01CVVNfQ1lDTEVfTUFTSykgfCBH TUJVU19DWUNMRV9TVE9QKTsKKworCQkvKgorCQkgKiBPbiBCdXJzdCByZWFkIGRpc2FibGUsIEdN QlVTIG5lZWQgbW9yZSB0aW1lIHRvIHNldHRsZQorCQkgKiBkb3duIHRvIElkbGUgU3RhdGUuCisJ CSAqLworCQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwgR01CVVMy LAorCQkJCQlHTUJVU19BQ1RJVkUsIDAsIDUwKTsKKwl9CisKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgaW50CiBnbWJ1c194ZmVyX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBzdHJ1Y3QgaTJjX21zZyAqbXNnLAotCQl1MzIgZ21idXMxX2luZGV4KQorCQl1MzIgZ21i dXMxX2luZGV4LCBib29sIGJ1cnN0X3JlYWQpCiB7CiAJdTggKmJ1ZiA9IG1zZy0+YnVmOwogCXVu c2lnbmVkIGludCByeF9zaXplID0gbXNnLT5sZW47CkBAIC00MDAsMTAgKzQyNiwxMyBAQCBnbWJ1 c194ZmVyX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgaTJj X21zZyAqbXNnLAogCWludCByZXQ7CiAKIAlkbyB7Ci0JCWxlbiA9IG1pbihyeF9zaXplLCBHTUJV U19CWVRFX0NPVU5UX01BWCk7CisJCWlmIChidXJzdF9yZWFkKQorCQkJbGVuID0gcnhfc2l6ZTsK KwkJZWxzZQorCQkJbGVuID0gbWluKHJ4X3NpemUsIEdNQlVTX0JZVEVfQ09VTlRfTUFYKTsKIAot CQlyZXQgPSBnbWJ1c194ZmVyX3JlYWRfY2h1bmsoZGV2X3ByaXYsIG1zZy0+YWRkciwKLQkJCQkJ ICAgIGJ1ZiwgbGVuLCBnbWJ1czFfaW5kZXgpOworCQlyZXQgPSBnbWJ1c194ZmVyX3JlYWRfY2h1 bmsoZGV2X3ByaXYsIG1zZy0+YWRkciwgYnVmLCBsZW4sCisJCQkJCSAgICBnbWJ1czFfaW5kZXgs IGJ1cnN0X3JlYWQpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIApAQCAtNDkxLDcgKzUy MCw4IEBAIGdtYnVzX2lzX2luZGV4X3hmZXIoc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBpLCBp bnQgbnVtKQogfQogCiBzdGF0aWMgaW50Ci1nbWJ1c19pbmRleF94ZmVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGkyY19tc2cgKm1zZ3MpCitnbWJ1c19pbmRleF94 ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGkyY19tc2cgKm1z Z3MsCisJCSBib29sIGJ1cnN0X3JlYWQpCiB7CiAJdTMyIGdtYnVzMV9pbmRleCA9IDA7CiAJdTMy IGdtYnVzNSA9IDA7CkBAIC01MDksNyArNTM5LDggQEAgZ21idXNfaW5kZXhfeGZlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNnICptc2dzKQogCQlJOTE1 X1dSSVRFX0ZXKEdNQlVTNSwgZ21idXM1KTsKIAogCWlmIChtc2dzWzFdLmZsYWdzICYgSTJDX01f UkQpCi0JCXJldCA9IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3NbMV0sIGdtYnVzMV9p bmRleCk7CisJCXJldCA9IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3NbMV0sCisJCQkJ ICAgICAgZ21idXMxX2luZGV4LCBidXJzdF9yZWFkKTsKIAllbHNlCiAJCXJldCA9IGdtYnVzX3hm ZXJfd3JpdGUoZGV2X3ByaXYsICZtc2dzWzFdLCBnbWJ1czFfaW5kZXgpOwogCkBAIC01MjIsNyAr NTUzLDcgQEAgZ21idXNfaW5kZXhfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHN0cnVjdCBpMmNfbXNnICptc2dzKQogCiBzdGF0aWMgaW50CiBkb19nbWJ1c194ZmVyKHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBudW0s Ci0JICAgICAgdTMyIGdtYnVzMF9zb3VyY2UpCisJICAgICAgdTMyIGdtYnVzMF9zb3VyY2UsIGJv b2wgYnVyc3RfcmVhZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ21idXMgKmJ1cyA9IGNvbnRhaW5lcl9v ZihhZGFwdGVyLAogCQkJCQkgICAgICAgc3RydWN0IGludGVsX2dtYnVzLApAQCAtNTQ0LDE1ICs1 NzUsMjAgQEAgZG9fZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVj dCBpMmNfbXNnICptc2dzLCBpbnQgbnVtLAogCWZvciAoOyBpIDwgbnVtOyBpICs9IGluYykgewog CQlpbmMgPSAxOwogCQlpZiAoZ21idXNfaXNfaW5kZXhfeGZlcihtc2dzLCBpLCBudW0pKSB7Ci0J CQlyZXQgPSBnbWJ1c19pbmRleF94ZmVyKGRldl9wcml2LCAmbXNnc1tpXSk7CisJCQlyZXQgPSBn bWJ1c19pbmRleF94ZmVyKGRldl9wcml2LCAmbXNnc1tpXSwgYnVyc3RfcmVhZCk7CiAJCQlpbmMg PSAyOyAvKiBhbiBpbmRleCB0cmFuc21pc3Npb24gaXMgdHdvIG1zZ3MgKi8KIAkJfSBlbHNlIGlm IChtc2dzW2ldLmZsYWdzICYgSTJDX01fUkQpIHsKLQkJCXJldCA9IGdtYnVzX3hmZXJfcmVhZChk ZXZfcHJpdiwgJm1zZ3NbaV0sIDApOworCQkJcmV0ID0gZ21idXNfeGZlcl9yZWFkKGRldl9wcml2 LCAmbXNnc1tpXSwKKwkJCQkJICAgICAgMCwgYnVyc3RfcmVhZCk7CiAJCX0gZWxzZSB7CiAJCQly ZXQgPSBnbWJ1c194ZmVyX3dyaXRlKGRldl9wcml2LCAmbXNnc1tpXSwgMCk7CiAJCX0KIAotCQlp ZiAoIXJldCkKKwkJLyoKKwkJICogQnVyc3QgcmVhZCBTZXF1ZW5jZSBlbmRzIHdpdGggU1RPUC4g U28gRG9udCBleHBlY3QKKwkJICogSFcgd2FpdCBwaGFzZS4KKwkJICovCisJCWlmICghcmV0ICYm ICFidXJzdF9yZWFkKQogCQkJcmV0ID0gZ21idXNfd2FpdChkZXZfcHJpdiwKIAkJCQkJIEdNQlVT X0hXX1dBSVRfUEhBU0UsIEdNQlVTX0hXX1dBSVRfRU4pOwogCQlpZiAocmV0ID09IC1FVElNRURP VVQpCkBAIC02NjQsNyArNzAwLDcgQEAgZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFk YXB0ZXIsIHN0cnVjdCBpMmNfbXNnICptc2dzLCBpbnQgbnVtKQogCQlpZiAocmV0IDwgMCkKIAkJ CWJ1cy0+Zm9yY2VfYml0ICY9IH5HTUJVU19GT1JDRV9CSVRfUkVUUlk7CiAJfSBlbHNlIHsKLQkJ cmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBudW0sIDApOworCQlyZXQgPSBkb19n bWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIG51bSwgMCwgZmFsc2UpOwogCQlpZiAocmV0ID09IC1F QUdBSU4pCiAJCQlidXMtPmZvcmNlX2JpdCB8PSBHTUJVU19GT1JDRV9CSVRfUkVUUlk7CiAJfQpA QCAtNzA1LDcgKzc0MSw4IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIpCiAJICogcGFzcyB0aGUgaTJjIGNvbW1hbmQsIGFuZCB0ZWxsIEdN QlVTIHRvIHVzZSB0aGUgSFctcHJvdmlkZWQgdmFsdWUKIAkgKiBpbnN0ZWFkIG9mIHNvdXJjaW5n IEdNQlVTMyBmb3IgdGhlIGRhdGEuCiAJICovCi0JcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVy LCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLCBHTUJVU19BS1NWX1NFTEVDVCk7CisJcmV0ID0gZG9f Z21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLAorCQkJICAgIEdNQlVT X0FLU1ZfU0VMRUNULCBmYWxzZSk7CiAKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5nbWJ1c19t dXRleCk7CiAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9H TUJVUyk7CkBAIC03MTMsNiArNzUwLDU5IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGlu bGluZQorYm9vbCBpbnRlbF9nbWJ1c19idXJzdF9yZWFkX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAxMCB8 fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fAorCSAgICBJU19LQUJZTEFLRShkZXZfcHJpdikp CisJCXJldHVybiB0cnVlOworCXJldHVybiBmYWxzZTsKK30KKworaW50IGludGVsX2dtYnVzX2J1 cnN0X3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0 LAorCQkJICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ21idXMg KmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFwdGVyLCBzdHJ1Y3QgaW50ZWxfZ21idXMsCisJCQkJCSAg ICAgICBhZGFwdGVyKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBidXMt PmRldl9wcml2OworCWludCByZXQ7CisJdTggc3RhcnQgPSBvZmZzZXQgJiAweGZmOworCXN0cnVj dCBpMmNfbXNnIG1zZ3NbXSA9IHsKKwkJeworCQkJLmFkZHIgPSBEUk1fSERDUF9ERENfQUREUiwK KwkJCS5mbGFncyA9IDAsCisJCQkubGVuID0gMSwKKwkJCS5idWYgPSAmc3RhcnQsCisJCX0sCisJ CXsKKwkJCS5hZGRyID0gRFJNX0hEQ1BfRERDX0FERFIsCisJCQkuZmxhZ3MgPSBJMkNfTV9SRCwK KwkJCS5sZW4gPSBzaXplLAorCQkJLmJ1ZiA9IGJ1ZiwKKwkJfQorCX07CisKKwlpZiAoIWludGVs X2dtYnVzX2J1cnN0X3JlYWRfc3VwcG9ydGVkKGRldl9wcml2KSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVT KTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+Z21idXNfbXV0ZXgpOworCisJLyoKKwkgKiBJbiBv cmRlciB0byByZWFkIHRoZSBjb21wbGV0ZSBsZW5ndGgoTW9yZSB0aGFuIEdNQnVzIExpbWl0KSBv ZiBkYXRhLAorCSAqIGluIGJ1cnN0IG1vZGUsIGltcGxlbWVudCB0aGUgV29ya2Fyb3VuZCBzdXBw b3J0ZWQgaW4gSFcuCisJICovCisJcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBB UlJBWV9TSVpFKG1zZ3MpLCAwLCB0cnVlKTsKKworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmdt YnVzX211dGV4KTsKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9N QUlOX0dNQlVTKTsKKworCWlmIChyZXQgPT0gQVJSQVlfU0laRShtc2dzKSkKKwkJcmV0dXJuIDA7 CisKKwlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0OworfQorCiBzdGF0aWMgdTMyIGdtYnVz X2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQogewogCXJldHVybiBpMmNfYml0X2Fs Z28uZnVuY3Rpb25hbGl0eShhZGFwdGVyKSAmCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==