From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandra Yates Subject: [PATCH 2/5] drm/i915: Add sys FBC toggle interface Date: Tue, 12 Apr 2016 12:18:45 -0700 Message-ID: <1460488728-23319-3-git-send-email-alexandra.yates@linux.intel.com> References: <1460488728-23319-1-git-send-email-alexandra.yates@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id E7AB06E770 for ; Tue, 12 Apr 2016 19:14:13 +0000 (UTC) In-Reply-To: <1460488728-23319-1-git-send-email-alexandra.yates@linux.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, rodrigo.vivi@intel.com, nivedita.swaminathan@intel.com, joe.konno@intel.com Cc: Alexandra Yates List-Id: intel-gfx@lists.freedesktop.org VGhpcyBpbnRlcmZhY2UgYWxsb3dzIGFuIGltbWVkaWF0ZSBlbmFibGluZyBvZiBGQkMgZmVhdHVy ZS4gV2hhdCBhbGxvdyB1cwp0byBzZWUgaW1tZWRpYXRlbHkgdGhlIEZCQyBwb3dlciBtYW5hZ2Vt ZW50IHNhdmluZ3MgYW5kIHdpbGwgYWxsb3cgdXMgdG8KZXhwb3NlIHRoaXMgdGhyb3VnaCBzeXNm cyBpbnRlcmZhY2UgZm9yIHBvd2VydG9wIHRvIGxldmVyYWdlIGl0cwpmdW5jdGlvbmFsaXR5LgoK U2lnbmVkLW9mZi1ieTogQWxleGFuZHJhIFlhdGVzIDxhbGV4YW5kcmEueWF0ZXNAbGludXguaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICB8IDc3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIHwgMTUgKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwg IDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jICAgICB8IDI5ICsrKysrKysr KysrLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBjOTZkYTRkLi4wZjNhMzdmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTkzNiw2ICs5MzYsNyBAQCBzdHJ1Y3QgaW50ZWxfZmJjIHsK IAl9IHdvcms7CiAKIAljb25zdCBjaGFyICpub19mYmNfcmVhc29uOworCWJvb2wgc3lzZnNfc2V0 OwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggMjA4YzZlYy4uNTBk NDVlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwpAQCAtMTA3LDYgKzEwNyw2NSBAQCBz aG93X21lZGlhX3JjNl9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogfQogCiBzdGF0aWMgc3NpemVfdAorc2hvd19mYmMoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKK3sKKwlzdHJ1Y3QgZHJtX21pbm9yICpkbWlub3IgPSBkZXZfdG9fZHJtX21pbm9yKGtkZXYp OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkbWlub3ItPmRldjsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXNzaXplX3QgcmV0Owor CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKKwlyZXQgPSBzbnByaW50ZihidWYs IFBBR0VfU0laRSwgIiVzXG4iLCBkZXZfcHJpdi0+ZmJjLmVuYWJsZWQgPworCQkJImVuYWJsZWQi OiJkaXNhYmxlZCIpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdAordG9nZ2xlX2ZiYyhzdHJ1Y3QgZGV2aWNlICpr ZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwljb25zdCBjaGFyICpidWYsIHNp emVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgZHJtX21pbm9yICpkbWlub3IgPSBkZXZfdG9fZHJtX21p bm9yKGtkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkbWlub3ItPmRldjsKKwlzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXI7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBOVUxMOworCXUzMiB2YWw7CisJc3Np emVfdCByZXQ7CisJYm9vbCBzeXNmc19zZXQgPSB0cnVlOworCisJcmV0ID0ga3N0cnRvdTMyKGJ1 ZiwgMCwgJnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWZvcl9lYWNoX2ludGVs X2Nvbm5lY3RvcihkZXYsIGNvbm5lY3RvcikgeworCQlpZiAoIWNvbm5lY3Rvci0+YmFzZS5lbmNv ZGVyKQorCQkJY29udGludWU7CisJCWVuY29kZXIgPSB0b19pbnRlbF9lbmNvZGVyKGNvbm5lY3Rv ci0+YmFzZS5lbmNvZGVyKTsKKwkJY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5j cnRjKTsKKwl9CisKKwlpZiAoIWNydGMpCisJCXJldHVybiAtRU5PREVWOworCXN3aXRjaCAodmFs KSB7CisJY2FzZSAwOgorCQlyZXQgPSBpbnRlbF9mYmNfZGlzYWJsZShjcnRjLCBzeXNmc19zZXQp OworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlyZXQg PSBpbnRlbF9mYmNfZW5hYmxlKGNydGMsIHN5c2ZzX3NldCk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKworCX0KKwly ZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90CiBzaG93X3BzcihzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewogCXN0 cnVjdCBkcm1fbWlub3IgKmRtaW5vciA9IGRldl90b19kcm1fbWlub3Ioa2Rldik7CkBAIC0xNjcs NiArMjI2LDcgQEAgdG9nZ2xlX3BzcihzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwKIAlyZXR1cm4gY291bnQ7CiB9CiAKK3N0YXRpYyBERVZJQ0VfQVRU UihmYmNfZW5hYmxlLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hvd19mYmMsIHRvZ2dsZV9mYmMpOwog c3RhdGljIERFVklDRV9BVFRSKHBzcl9lbmFibGUsIFNfSVJVR08gfCBTX0lXVVNSLCBzaG93X3Bz ciwgdG9nZ2xlX3Bzcik7CiBzdGF0aWMgREVWSUNFX0FUVFIocmM2X2VuYWJsZSwgU19JUlVHTywg c2hvd19yYzZfbWFzaywgTlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIocmM2X3Jlc2lkZW5jeV9t cywgU19JUlVHTywgc2hvd19yYzZfbXMsIE5VTEwpOwpAQCAtMTc0LDYgKzIzNCwxNiBAQCBzdGF0 aWMgREVWSUNFX0FUVFIocmM2cF9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2cF9tcywg TlVMTCk7CiBzdGF0aWMgREVWSUNFX0FUVFIocmM2cHBfcmVzaWRlbmN5X21zLCBTX0lSVUdPLCBz aG93X3JjNnBwX21zLCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRUUihtZWRpYV9yYzZfcmVzaWRl bmN5X21zLCBTX0lSVUdPLCBzaG93X21lZGlhX3JjNl9tcywgTlVMTCk7CiAKK3N0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICpmYmNfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfZmJjX2VuYWJsZS5hdHRy LAorCU5VTEwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGZiY19hdHRyX2dy b3VwID0geworCS5uYW1lID0gcG93ZXJfZ3JvdXBfbmFtZSwKKwkuYXR0cnMgPSBmYmNfYXR0cnMK K307CisKIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpwc3JfYXR0cnNbXSA9IHsKIAkmZGV2X2F0 dHJfcHNyX2VuYWJsZS5hdHRyLAogCU5VTEwKQEAgLTY2OCw2ICs3MzgsMTIgQEAgdm9pZCBpOTE1 X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50IHJldDsKIAogI2lmZGVm IENPTkZJR19QTQorCWlmIChIQVNfRkJDKGRldikpIHsKKwkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3Jv dXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKKwkJCQkJJmZiY19hdHRyX2dyb3VwKTsKKwkJ aWYgKHJldCkKKwkJCURSTV9FUlJPUigiRkJDIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7CisJfQog CWlmIChIQVNfUFNSKGRldikpIHsKIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJp bWFyeS0+a2Rldi0+a29iaiwKIAkJCQkJJnBzcl9hdHRyX2dyb3VwKTsKQEAgLTczMCw2ICs4MDYs NyBAQCB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlk ZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGRldi0+cHJpbWFyeS0+a2RldiwgICZkcGZfYXR0cnNfMSk7 CiAJZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShkZXYtPnByaW1hcnktPmtkZXYsICAmZHBmX2F0dHJz KTsKICNpZmRlZiBDT05GSUdfUE0KKwlzeXNmc191bm1lcmdlX2dyb3VwKCZkZXYtPnByaW1hcnkt PmtkZXYtPmtvYmosICZmYmNfYXR0cl9ncm91cCk7CiAJc3lzZnNfdW5tZXJnZV9ncm91cCgmZGV2 LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCAmcHNyX2F0dHJfZ3JvdXApOwogCXN5c2ZzX3VubWVyZ2Vf Z3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgJnJjNl9hdHRyX2dyb3VwKTsKIAlzeXNm c191bm1lcmdlX2dyb3VwKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosICZyYzZwX2F0dHJfZ3Jv dXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGJmOWUzNDcuLjNkMjUy YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTYyNTQsNyArNjI1NCw4 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGNydGMtPmRldiwgY3J0YywgZW5j b2RlcikKIAkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVMTDsKIAotCWludGVsX2ZiY19kaXNhYmxl KGludGVsX2NydGMpOworCWlmIChkZXZfcHJpdi0+ZmJjLnN5c2ZzX3NldCAhPSB0cnVlKQorCQlp bnRlbF9mYmNfZGlzYWJsZShpbnRlbF9jcnRjLCBkZXZfcHJpdi0+ZmJjLnN5c2ZzX3NldCk7CiAJ aW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7CiAJaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBs bChpbnRlbF9jcnRjKTsKIApAQCAtMTM1ODYsNyArMTM1ODcsMTAgQEAgc3RhdGljIGludCBpbnRl bF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlpbnRlbF9jcnRjX2Rp c2FibGVfcGxhbmVzKGNydGMsIG9sZF9jcnRjX3N0YXRlLT5wbGFuZV9tYXNrKTsKIAkJCWRldl9w cml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsKIAkJCWludGVsX2NydGMtPmFjdGl2ZSA9 IGZhbHNlOwotCQkJaW50ZWxfZmJjX2Rpc2FibGUoaW50ZWxfY3J0Yyk7CisKKwkJCWlmIChkZXZf cHJpdi0+ZmJjLnN5c2ZzX3NldCAhPSB0cnVlKQorCQkJCWludGVsX2ZiY19kaXNhYmxlKGludGVs X2NydGMsCisJCQkJCQlkZXZfcHJpdi0+ZmJjLnN5c2ZzX3NldCk7CiAJCQlpbnRlbF9kaXNhYmxl X3NoYXJlZF9kcGxsKGludGVsX2NydGMpOwogCiAJCQkvKgpAQCAtMTM2MzIsOCArMTM2MzYsMTEg QEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNf c3RhdGUpKTsKIAogCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSAmJgotCQkgICAgZHJtX2F0b21p Y19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUoc3RhdGUsIGNydGMtPnByaW1hcnkpKQotCQkJaW50 ZWxfZmJjX2VuYWJsZShpbnRlbF9jcnRjKTsKKwkJICAgIGRybV9hdG9taWNfZ2V0X2V4aXN0aW5n X3BsYW5lX3N0YXRlKHN0YXRlLCBjcnRjLT5wcmltYXJ5KSkgeworCQkJaWYgKGRldl9wcml2LT5m YmMuc3lzZnNfc2V0ICE9IHRydWUpCisJCQkJaW50ZWxfZmJjX2VuYWJsZShpbnRlbF9jcnRjLAor CQkJCQkJZGV2X3ByaXYtPmZiYy5zeXNmc19zZXQpOworCQl9CiAKIAkJaWYgKGNydGMtPnN0YXRl LT5hY3RpdmUgJiYKIAkJICAgIChjcnRjLT5zdGF0ZS0+cGxhbmVzX2NoYW5nZWQgfHwgdXBkYXRl X3BpcGUpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAxOTllOGNjLi45M2QwOWNjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTM3Myw4ICsxMzczLDggQEAgdm9pZCBpbnRl bF9mYmNfcHJlX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CiB2b2lkIGludGVsX2Zi Y19wb3N0X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CiB2b2lkIGludGVsX2ZiY19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2ZiY19p bml0X3BpcGVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLXZvaWQg aW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Ci12b2lkIGludGVsX2Zi Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKK2ludCBpbnRlbF9mYmNfZW5hYmxl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBib29sIHN5c2ZzX3NldCk7CitpbnQgaW50ZWxfZmJj X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGJvb2wgc3lzZnNfc2V0KTsKIHZvaWQg aW50ZWxfZmJjX2dsb2JhbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiB2b2lkIGludGVsX2ZiY19pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCSAgdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMsCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCmluZGV4IGQ1YTdjZmUuLmQ2MTU0ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiYy5jCkBAIC0xMDgzLDE5ICsxMDgzLDI0IEBAIG91dDoKIC8qKgogICogaW50ZWxfZmJjX2Vu YWJsZTogdHJpZXMgdG8gZW5hYmxlIEZCQyBvbiB0aGUgQ1JUQwogICogQGNydGM6IHRoZSBDUlRD CisgKiBAc3lzZnNfc2V0OiBJZGVudGlmaWVzIGlmIHRoaXMgZmVhdHVkcmUgaXMgc2V0IGZyb20g c3lzZnMuCiAgKgogICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGdpdmVuIENSVEMgd2Fz IGNob3NlbiBmb3IgRkJDLCB0aGVuIGVuYWJsZXMgaXQgaWYKICAqIHBvc3NpYmxlLiBOb3RpY2Ug dGhhdCBpdCBkb2Vzbid0IGFjdGl2YXRlIEZCQy4gSXQgaXMgdmFsaWQgdG8gY2FsbAogICogaW50 ZWxfZmJjX2VuYWJsZSBtdWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUgcGlwZSB3aXRob3V0IGFu CiAgKiBpbnRlbF9mYmNfZGlzYWJsZSBpbiB0aGUgbWlkZGxlLCBhcyBsb25nIGFzIGl0IGlzIGRl YWN0aXZhdGVkLgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3MgYW5kIC1lcnJubyBv dGhlcndpc2UKICAqLwotdm9pZCBpbnRlbF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQoraW50IGludGVsX2ZiY19lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGJvb2wg c3lzZnNfc2V0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMt PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3By aXYtPmZiYzsKKwlpbnQgcmV0ID0gMDsKIAogCWlmICghZmJjX3N1cHBvcnRlZChkZXZfcHJpdikp Ci0JCXJldHVybjsKKwkJcmV0dXJuIC1FSU5WQUw7CiAKIAltdXRleF9sb2NrKCZmYmMtPmxvY2sp OwogCkBAIC0xMTA1LDExICsxMTEwLDE0IEBAIHZvaWQgaW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKIAkJCVdBUk5fT04oIWNydGMtPmNvbmZpZy0+ZW5hYmxlX2ZiYyk7 CiAJCQlXQVJOX09OKGZiYy0+YWN0aXZlKTsKIAkJfQorCQlyZXQgPSAtRUFMUkVBRFk7CiAJCWdv dG8gb3V0OwogCX0KIAotCWlmICghY3J0Yy0+Y29uZmlnLT5lbmFibGVfZmJjKQorCWlmICghY3J0 Yy0+Y29uZmlnLT5lbmFibGVfZmJjKSB7CisJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0Owor CX0KIAogCVdBUk5fT04oZmJjLT5hY3RpdmUpOwogCVdBUk5fT04oZmJjLT5jcnRjICE9IE5VTEwp OwpAQCAtMTExNyw2ICsxMTI1LDcgQEAgdm9pZCBpbnRlbF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQogCWludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoY3J0Yyk7CiAJaWYg KGludGVsX2ZiY19hbGxvY19jZmIoY3J0YykpIHsKIAkJZmJjLT5ub19mYmNfcmVhc29uID0gIm5v dCBlbm91Z2ggc3RvbGVuIG1lbW9yeSI7CisJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0Owog CX0KIApAQCAtMTEyNSw4ICsxMTM0LDExIEBAIHZvaWQgaW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKIAogCWZiYy0+ZW5hYmxlZCA9IHRydWU7CiAJZmJjLT5jcnRjID0g Y3J0YzsKKwlpZiAoc3lzZnNfc2V0KQorCQlkZXZfcHJpdi0+ZmJjLnN5c2ZzX3NldCA9IHN5c2Zz X3NldDsKIG91dDoKIAltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CisJcmV0dXJuIHJldDsKIH0K IAogLyoqCkBAIC0xMTU3LDI2ICsxMTY5LDMzIEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX2Rp c2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogLyoqCiAgKiBpbnRlbF9m YmNfZGlzYWJsZSAtIGRpc2FibGUgRkJDIGlmIGl0J3MgYXNzb2NpYXRlZCB3aXRoIGNydGMKICAq IEBjcnRjOiB0aGUgQ1JUQworICogQHN5c2ZzX3NldDogSWRlbnRpZmllcyBpZiB0aGlzIGZlYXR1 ZHJlIGlzIHNldCBmcm9tIHN5c2ZzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gZGlzYWJsZXMgRkJD IGlmIGl0J3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBDUlRDLgorICoKKyAqIFJldHVy bnM6CisgKiAwIG9uIHN1Y2Nlc3MgYW5kIC1lcnJubyBvdGhlcndpc2UKICAqLwotdm9pZCBpbnRl bF9mYmNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK2ludCBpbnRlbF9mYmNfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgYm9vbCBzeXNmc19zZXQpCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRl OwogCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwogCiAJaWYgKCFmYmNf c3VwcG9ydGVkKGRldl9wcml2KSkKLQkJcmV0dXJuOworCQlyZXR1cm4gLUVJTlZBTDsKIAogCW11 dGV4X2xvY2soJmZiYy0+bG9jayk7CiAJaWYgKGZiYy0+Y3J0YyA9PSBjcnRjKSB7CiAJCVdBUk5f T04oIWZiYy0+ZW5hYmxlZCk7CiAJCVdBUk5fT04oZmJjLT5hY3RpdmUpOwogCQlfX2ludGVsX2Zi Y19kaXNhYmxlKGRldl9wcml2KTsKKwkJaWYgKHN5c2ZzX3NldCkKKwkJCWRldl9wcml2LT5mYmMu c3lzZnNfc2V0ID0gc3lzZnNfc2V0OwogCX0KIAltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CiAK IAljYW5jZWxfd29ya19zeW5jKCZmYmMtPndvcmsud29yayk7CisJcmV0dXJuIDA7CiB9CiAKIC8q KgotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=