From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH 10/18] drm/i915: Functions to support command submission via GuC Date: Thu, 26 Mar 2015 12:41:17 -0700 Message-ID: <1427398885-31988-11-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 308AB72122 for ; Thu, 26 Mar 2015 12:44:26 -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+CgpUbyBlbmFibGUgR3VDIGNvbW1hbmQg c3VibWlzc2lvbiAvIHNjaGVkdWxpbmcsIHdlIG5lZWQgdG8gc2V0dXAKZmlybXdhcmUgaW5pdGlh bGl6YWlvbiBwcm9wZXJseS4gaTkxNS5lbmFibGVfZ3VjX3NjaGVkdWxpbmcgaXMKaW50cm9kdWNl ZCB0byBlbmFibGUgLyBkaXNhYmxlIEd1QyBzdWJtaXNzaW9uLgoKSXNzdWU6IFZJWi00ODg0ClNp Z25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BhcmFtcy5jICAgICAgICAgfCAgNCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmggICAgICAgICAgIHwgMTAgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jICAgIHwgNDkgKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19zY2hlZHVsZXIuYyB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogNiBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zY2hlZHVsZXIu YwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNjE4ODMwMi4uNTBiMjA1NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKQEAgLTM3LDcgKzM3LDggQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwK IAkgIGk5MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaW50ZWxfbHJjLm8gXAogCSAgaW50ZWxfcmlu Z2J1ZmZlci5vIFwKLQkgIGludGVsX3VuY29yZS5vCisJICBpbnRlbF91bmNvcmUubyBcCisJICBp bnRlbF9ndWNfc2NoZWR1bGVyLm8KIAogIyBhbmNpbGxpYXJ5IG1pY3JvY29udHJvbGxlciBzdXBw b3J0CiBpOTE1LXkgKz0gaW50ZWxfdWNfbG9hZGVyLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggNDViZGYzMC4uNzJjYzEyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yNDcx LDYgKzI0NzEsNyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgewogCWJvb2wgcmVzZXQ7CiAJYm9vbCBk aXNhYmxlX2Rpc3BsYXk7CiAJYm9vbCBkaXNhYmxlX3Z0ZF93YTsKKwlib29sIGVuYWJsZV9ndWNf c2NoZWR1bGluZzsKIAlpbnQgdXNlX21taW9fZmxpcDsKIAlpbnQgbW1pb19kZWJ1ZzsKIAlib29s IHZlcmJvc2Vfc3RhdGVfY2hlY2tzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKaW5kZXgg ZjNiOGI2Mi4uYTQ3NDNlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w YXJhbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCkBAIC01Miw2 ICs1Miw3IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkgPSB7CiAJLm1t aW9fZGVidWcgPSAwLAogCS52ZXJib3NlX3N0YXRlX2NoZWNrcyA9IDEsCiAJLm51Y2xlYXJfcGFn ZWZsaXAgPSAwLAorCS5lbmFibGVfZ3VjX3NjaGVkdWxpbmcgPSBmYWxzZSwKIH07CiAKIG1vZHVs ZV9wYXJhbV9uYW1lZChtb2Rlc2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQwMCk7CkBAIC0xNzgs MyArMTc5LDYgQEAgTU9EVUxFX1BBUk1fREVTQyh2ZXJib3NlX3N0YXRlX2NoZWNrcywKIG1vZHVs ZV9wYXJhbV9uYW1lZF91bnNhZmUobnVjbGVhcl9wYWdlZmxpcCwgaTkxNS5udWNsZWFyX3BhZ2Vm bGlwLCBib29sLCAwNjAwKTsKIE1PRFVMRV9QQVJNX0RFU0MobnVjbGVhcl9wYWdlZmxpcCwKIAkJ ICJGb3JjZSBhdG9taWMgbW9kZXNldCBmdW5jdGlvbmFsaXR5OyBvbmx5IHBsYW5lcyB3b3JrIGZv ciBub3cgKGRlZmF1bHQ6IGZhbHNlKS4iKTsKKworbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9n dWNfc2NoZWR1bGluZywgaTkxNS5lbmFibGVfZ3VjX3NjaGVkdWxpbmcsIGJvb2wsIDA0MDApOwor TU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZ3VjX3NjaGVkdWxpbmcsICJFbmFibGUgR3VDIHNjaGVk dWxpbmcgKGRlZmF1bHQ6ZmFsc2UpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCmluZGV4IGFl MTRjNTcuLjdlYWJhZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBAIC0yOSw2ICsyOSw5 IEBACiAKIHN0cnVjdCBpbnRlbF9ndWMgewogCXN0cnVjdCBpbnRlbF91Y19mdyBndWNfZnc7CisK KwkvKiBHdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmN0eF9wb29sX29iajsKIH07CiAKICNkZWZpbmUgR1VDX1NUQVRVUwkJMHhjMDAwCkBAIC05 Niw0ICs5OSwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCiBpbnRlbF9ndWNfYWxs b2NhdGVfZ2VtX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSk7CiB2b2lkIGlu dGVsX2d1Y19yZWxlYXNlX2dlbV9vYmooc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7 CiAKKy8qIGludGVsX2d1Y19zY2hlZHVsZXIuYyAqLworaW50IGd1Y19zY2hlZHVsZXJfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgZ3VjX3NjaGVkdWxlcl9maW5pKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOworaW50IGd1Y19zY2hlZHVsZXJfZW5hYmxlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwordm9pZCBndWNfc2NoZWR1bGVyX2Rpc2FibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Citib29sIHNhbml0aXplX2VuYWJsZV9ndWNfc2NoZWR1bGluZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKaW5kZXggMDUwMGE1My4uYzI2NmJlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYwpAQCAtMTc3LDYgKzE3NywzNCBAQCBzdGF0aWMgdm9pZCBzZXRfZ3VjX2luaXRf cGFyYW1zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCS8qIFhYWDogU2V0 IHVwIGxvZyBidWZmZXIgKi8KIAorCS8qIElmIEd1QyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQsIHNl dHVwIHBhcmFtcyBoZXJlLiAqLworCWlmIChpOTE1LmVuYWJsZV9ndWNfc2NoZWR1bGluZykgewor CQl1MzIgcGdzID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGRldl9wcml2LT5ndWMuY3R4X3Bv b2xfb2JqKTsKKwkJdTMyIGN0eF9pbl8xNiA9IE1BWF9HVUNfR1BVX0NPTlRFWFRTIC8gMTY7CisK KwkJcGdzID4+PSBQQUdFX1NISUZUOworCQlwYXJhbXNbR1VDX0NUTF9DVFhJTkZPXSA9IChwZ3Mg PDwgR1VDX0NUTF9CQVNFX0FERFJfU0hJRlQpIHwKKwkJCShjdHhfaW5fMTYgPDwgR1VDX0NUTF9D VFhOVU1fSU4xNl9TSElGVCk7CisKKwkJLyogVGhlIHNoYXJlZCBkYXRhIGlzIG9uZSBwYWdlIGZv bGxvd2luZyB0aGUgUmluZyBDb250ZXh0LgorCQkgKiBTbyB0aGUgb2Zmc2V0IGlzIHRoZSBwYWdl IG51bWJlciBvZiBMUkMgKi8KKwkJcGdzID0gZ2V0X2xyX2NvbnRleHRfc2l6ZSgmZGV2X3ByaXYt PnJpbmdbUkNTXSkgPj4gUEFHRV9TSElGVDsKKwkJcGFyYW1zW0dVQ19DVExfT0ZGU0VUXSB8PSBw Z3MgPDwgR1VDX0NUTF9TSEFSRURfREFUQV9TSElGVDsKKworCQkvKiBUaGlzIG11c3QgYmUgbm9u LXplcm8gZm9yIHNjaGVkdWxlciB0byBpbml0aWFsaXplIGV2ZW4gdGhlCisJCSAqIGZpcm13YXJl IGRvZXNuJ3QgdXNlIGl0LiBCZSBub3RlIHRoYXQgd2UgdXNlIHNlcGFyYXRlZCBvYmoKKwkJICog Zm9yIGFjdHVhbCByaW5nIGJ1ZmZlciwgd2hpbGUgZmlybXdhcmUgbWF5IHRyZWF0IHRoaXMgYXMg YW4KKwkJICogb2Zmc2V0IGZyb20gUmluZyBDb250ZXh0IGJhc2UuIFdlIG11c3QgdGFrZSBjYXJl IG9mIHRoaXMgaWYKKwkJICogZmlybXdhcmUgc3RhcnRzIHVzaW5nIHRoaXMgZmllbGQuCisJCSAq LworCQlwYXJhbXNbR1VDX0NUTF9PRkZTRVRdIHw9IDEgPDwgR1VDX0NUTF9SSU5HX0JVRkZFUl9T SElGVDsKKworCQlwYXJhbXNbR1VDX0NUTF9GRUFUVVJFXSB8PSBHVUNfQ1RMX0tFUk5FTF9TVUJN SVNTSU9OUzsKKworCQkvKiBVbm1hc2sgdGhpcyBiaXQgdG8gZW5hYmxlIEd1QyBzY2hlZHVsZXIg Ki8KKwkJcGFyYW1zW0dVQ19DVExfRkVBVFVSRV0gJj0gfkdVQ19DVExfRElTQUJMRV9TQ0hFRFVM RVI7CisJfQorCiAJSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMCksIDApOwogCiAJZm9yIChpID0g MDsgaSA8IEdVQ19DVExfTUFYX0RXT1JEUzsgaSsrKQpAQCAtMjcxLDYgKzI5OSw4IEBAIGludCBp bnRlbF9ndWNfbG9hZF91Y29kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHdhaXQpCiAJ c3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJaW50 IGVycjsKIAorCWk5MTUuZW5hYmxlX2d1Y19zY2hlZHVsaW5nID0gc2FuaXRpemVfZW5hYmxlX2d1 Y19zY2hlZHVsaW5nKGRldik7CisKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUM6IHdhaXQgJWQsIGZl dGNoIHN0YXR1cyAlZCwgbG9hZCBzdGF0dXMgJWRcbiIsCiAJCXdhaXQsIGd1Y19mdy0+dWNfZndf ZmV0Y2hfc3RhdHVzLCBndWNfZnctPnVjX2Z3X2xvYWRfc3RhdHVzKTsKIApAQCAtMjg1LDE1ICsz MTUsMzIgQEAgaW50IGludGVsX2d1Y19sb2FkX3Vjb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGJvb2wgd2FpdCkKIAlpZiAoZXJyKQogCQlnb3RvIGZhaWw7CiAKKwllcnIgPSBndWNfc2NoZWR1 bGVyX2luaXQoZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGZhaWw7CisKIAlndWNfZnctPnVjX2Z3 X2xvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKIAllcnIgPSBndWNfbG9h ZF91Y29kZShkZXYpOwogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsKIAorCWVyciA9IGd1Y19zY2hl ZHVsZXJfZW5hYmxlKGRldik7CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCiAJZ3VjX2Z3LT51 Y19md19sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAJcmV0dXJuIDA7 CiAKIGZhaWw6CisJZ3VjX3NjaGVkdWxlcl9kaXNhYmxlKGRldik7CisKKwlpZiAoaTkxNS5lbmFi bGVfZ3VjX3NjaGVkdWxpbmcpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBH dUMsIGRlY2xhcmluZyBHUFUgd2VkZ2VkXG4iKTsKKwkJYXRvbWljX3NldF9tYXNrKEk5MTVfV0VE R0VELAorCQkJCSZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpOworCQlpOTE1LmVu YWJsZV9ndWNfc2NoZWR1bGluZyA9IGZhbHNlOworCX0KKwogCWd1Y19mdy0+dWNfZndfbG9hZF9z dGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogCXJldHVybiBlcnI7CiB9CkBAIC0zNTQs NSArNDAxLDcgQEAgdm9pZCBpbnRlbF9ndWNfdWNvZGVfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7 CiAKKwlndWNfc2NoZWR1bGVyX2ZpbmkoZGV2KTsKKwogCWludGVsX3VjX2Z3X2ZpbmkoZGV2LCBn dWNfZncpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3Nj aGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3NjaGVkdWxlci5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNzQ0ZmIKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2NoZWR1bGVyLmMKQEAgLTAsMCAr MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1 ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJp bnRlbF9ndWMuaCIKKwordm9pZCBndWNfc2NoZWR1bGVyX2Zpbmkoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOworCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfcG9vbCA9IGd1Yy0+Y3R4X3Bvb2xfb2JqOworCisJ Z3VjX3NjaGVkdWxlcl9kaXNhYmxlKGRldik7CisKKwlpZiAoY3R4X3Bvb2wpIHsKKwkJaW50ZWxf Z3VjX3JlbGVhc2VfZ2VtX29iaihjdHhfcG9vbCk7CisJCWd1Yy0+Y3R4X3Bvb2xfb2JqID0gTlVM TDsKKwl9Cit9CisKKy8qIFNldCB1cCB0aGUgcmVzb3VyY2VzIG5lZWRlZCBieSB0aGUgZmlybXdh cmUgc2NoZWR1bGVyLiBDdXJyZW50bHkgdGhpcyBvbmx5CisgKiByZXF1aXJlcyBvbmUgb2JqZWN0 IHRoYXQgY2FuIGJlIG1hcHBlZCB0aHJvdWdoIHRoZSBHR1RULgorICovCitpbnQgZ3VjX3NjaGVk dWxlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwljb25zdCBzaXplX3QgY3R4c2l6 ZSA9IHNpemVvZihzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzYyk7CisJY29uc3Qgc2l6ZV90IHBvb2xz aXplID0gTUFYX0dVQ19HUFVfQ09OVEVYVFMgKiBjdHhzaXplOworCWNvbnN0IHNpemVfdCBnZW1z aXplID0gcm91bmRfdXAocG9vbHNpemUsIFBBR0VfU0laRSk7CisJc3RydWN0IGludGVsX2d1YyAq Z3VjID0gJmRldl9wcml2LT5ndWM7CisKKwlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zY2hlZHVsaW5n KQorCQlyZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCisKKwlpZiAoZ3VjLT5jdHhfcG9vbF9v YmopCisJCXJldHVybiAwOyAvKiBhbHJlYWR5IGFsbG9jYXRlZCAqLworCisJZ3VjLT5jdHhfcG9v bF9vYmogPSBpbnRlbF9ndWNfYWxsb2NhdGVfZ2VtX29iaihkZXZfcHJpdi0+ZGV2LCBnZW1zaXpl KTsKKwlpZiAoIWd1Yy0+Y3R4X3Bvb2xfb2JqKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldHVy biAwOworfQorCitpbnQgZ3VjX3NjaGVkdWxlcl9lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKKwlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zY2hlZHVsaW5nKQorCQlyZXR1cm4gMDsKKwor CS8qIFRPRE86IHBsYWNlaG9sZGVyIGZvciBndWMgc2NoZWR1bGVyIGVuYWJsaW5nICovCisJcmV0 dXJuIDA7Cit9CisKK3ZvaWQgZ3VjX3NjaGVkdWxlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCit7CisJLyogVE9ETzogcGxhY2Vob2xkZXIgZm9yIGd1YyBzY2hlZHVsZXIgZGlzYWJs aW5nICovCit9CisKK2Jvb2wgc2FuaXRpemVfZW5hYmxlX2d1Y19zY2hlZHVsaW5nKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJaWYgKCFIQVNfR1VDX1VDT0RFKGRldikgfHwgIUhBU19HVUNf U0NIRUQoZGV2KSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGk5MTUuZW5hYmxlX2d1Y19z Y2hlZHVsaW5nOworfQorCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK