From mboxrd@z Thu Jan 1 00:00:00 1970 From: Prathap Kumar Valsan Subject: [PATCH v3 1/1] drm/i915/ehl: Add sysfs interface to control class-of-service Date: Mon, 7 Oct 2019 12:52:09 -0400 Message-ID: <20191007165209.31797-2-prathap.kumar.valsan@intel.com> References: <20191007165209.31797-1-prathap.kumar.valsan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0D8F789D5C for ; Mon, 7 Oct 2019 16:35:25 +0000 (UTC) In-Reply-To: <20191007165209.31797-1-prathap.kumar.valsan@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 Cc: Chris P Wilson List-Id: intel-gfx@lists.freedesktop.org VG8gcHJvdmlkZSBzaGFyZWQgbGFzdC1sZXZlbC1jYWNoZSBpc29sYXRpb24gdG8gY3B1IHdvcmts b2FkcyBydW5uaW5nCmNvbmN1cnJlbnRseSB3aXRoIGdwdSB3b3JrbG9hZHMsIHRoZSBncHUgYWxs b2NhdGlvbiBvZiBjYWNoZSBsaW5lcyBuZWVkcwp0byBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4g d2F5cy4gQ3VycmVudGx5IEdQVSBoYXJkd2FyZSBzdXBwb3J0cyBmb3VyCmNsYXNzLW9mLXNlcnZp Y2UoQ0xPUykgbGV2ZWxzIGFuZCB0aGVyZSBpcyBhbiBhc3NvY2lhdGVkIHdheS1tYXNrIGZvcgpl YWNoIENMT1MuIEVhY2ggTExDIE1PQ1MgcmVnaXN0ZXIgaGFzIGEgZmllbGQgdG8gc2VsZWN0IHRo ZSBjbG9zIGxldmVsLgpTbyBpbi1vcmRlciB0byBnbG9iYWxseSBzZXQgdGhlIGdwdSB0byBhIGNs b3MgbGV2ZWwsIGRyaXZlciBuZWVkcwp0byBwcm9ncmFtIGVudGlyZSBNT0NTIHRhYmxlLgoKSGFy ZHdhcmUgc3VwcG9ydHMgcmVhZGluZyBzdXBwb3J0ZWQgd2F5LW1hc2sgY29uZmlndXJhdGlvbiBm b3IgR1BVIHVzaW5nCmEgYmlvcyBwY29kZSBpbnRlcmZhY2UuIFRoaXMgaW50ZXJmYWNlIGhhcyB0 d28gZmlsZXMtLWxsY19jbG9zX21vZGVzIGFuZApsbGNfY2xvcy4gVGhlIGZpbGUgbGxjX2Nsb3Nf bW9kZXMgaXMgcmVhZCBvbmx5IGZpbGUgYW5kIHdpbGwgbGlzdCB0aGUKYXZhaWxhYmxlIHdheSBt YXNrcy4gVGhlIGZpbGUgbGxjX2Nsb3MgaXMgcmVhZC93cml0ZSBhbmQgd2lsbCBzaG93IHRoZQpj dXJyZW50bHkgYWN0aXZlIHdheSBtYXNrIGFuZCB3cml0aW5nIGEgbmV3IHdheSBtYXNrIHdpbGwg dXBkYXRlIHRoZQphY3RpdmUgd2F5IG1hc2sgb2YgdGhlIGdwdS4KCk5vdGUgb2YgQ2F1dGlvbjog UmVzdHJpY3RpbmcgY2FjaGUgd2F5cyB1c2luZyB0aGlzIG1lY2hhbmlzbSBwcmVzZW50cyBhCmxh cmdlciBhdHRhY2sgc3VyZmFjZSBmb3Igc2lkZS1jaGFubmVsIGF0dGFja3MuCgpFeGFtcGxlIHVz YWdlOgo+IGNhdCAvc3lzL2NsYXNzL2RybS9jYXJkMC9sbGNfY2xvc19tb2RlcwoweGZmZiAweGZj MCAweGMwMCAweDgwMAoKPmNhdCAvc3lzL2NsYXNzL2RybS9jYXJkMC9sbGNfY2xvcwoweGZmZgoK VXBkYXRlIHRvIG5ldyBjbG9zCmVjaG8gIjB4ODAwIiA+IC9zeXMvY2xhc3MvZHJtL2NhcmQwL2xs Y19jbG9zCgpTaWduZWQtb2ZmLWJ5OiBQcmF0aGFwIEt1bWFyIFZhbHNhbiA8cHJhdGhhcC5rdW1h ci52YWxzYW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xy Yy5jICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmgg fCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jICAgIHwgMjE2ICsr KysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9j cy5oICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCAgIDggKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICB8IDEwMCArKysrKysrKysr KwogNyBmaWxlcyBjaGFuZ2VkLCAzMzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IDQ2ODQzOGZiNDdhZi4uMDU0MDUxOTY5 ZDAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpAQCAtMjEzNyw2ICsyMTM3LDEz IEBAIF9fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAogCQkJaW50ZWxfc3NldV9tYWtlX3JwY3MoZW5naW5lLT5pOTE1LCAmY2UtPnNzZXUp OwogCiAJCWk5MTVfb2FfaW5pdF9yZWdfc3RhdGUoY2UsIGVuZ2luZSk7CisJCS8qCisJCSAqIEdl bjExKyB3YW50cyB0byBzdXBwb3J0IHVwZGF0ZSBvZiBMTEMgY2xhc3Mtb2Ytc2VydmljZSB2aWEK KwkJICogc3lzZnMgaW50ZXJmYWNlLiBDTE9TIGlzIGRlZmluZWQgaW4gTU9DUyByZWdpc3RlcnMg YW5kIGZvcgorCQkgKiBHZW4xMSwgTU9DUyBpcyBwYXJ0IG9mIGNvbnRleHQgcmVzZ2lzdGVyIHN0 YXRlLgorCQkgKi8KKwkJaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDExKSkKKwkJCWludGVsX21v Y3NfaW5pdF9yZWdfc3RhdGUoY2UpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjX3JlZy5oCmluZGV4IDA2YWIwMjc2ZTEwZS4uZjA3YTYyNjIyMTdjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5l IENUWF9SX1BXUl9DTEtfU1RBVEUJCSgweDQyICsgMSkKIAogI2RlZmluZSBHRU45X0NUWF9SSU5H X01JX01PREUJCTB4NTQKKyNkZWZpbmUgR0VOMTFfQ1RYX0dGWF9NT0NTX0JBU0UJCTB4NEYyCiAK IC8qIEdFTjEyKyBSZWcgU3RhdGUgQ29udGV4dCAqLwogI2RlZmluZSBHRU4xMl9DVFhfQkJfUEVS X0NUWF9QVFIJCSgweDEyICsgMSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwppbmRl eCA3Mjg3MDRiYmJlMTguLmEyNjY5YmVlOWIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X21vY3MuYwpAQCAtMjYsNiArMjYsOSBAQAogI2luY2x1ZGUgImludGVsX2d0LmgiCiAjaW5jbHVk ZSAiaW50ZWxfbW9jcy5oIgogI2luY2x1ZGUgImludGVsX2xyYy5oIgorI2luY2x1ZGUgImludGVs X2xyY19yZWcuaCIKKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgorI2luY2x1ZGUgImdlbS9p OTE1X2dlbV9jb250ZXh0LmgiCiAKIC8qIHN0cnVjdHVyZXMgcmVxdWlyZWQgKi8KIHN0cnVjdCBk cm1faTkxNV9tb2NzX2VudHJ5IHsKQEAgLTQwLDYgKzQzLDcgQEAgc3RydWN0IGRybV9pOTE1X21v Y3NfdGFibGUgewogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5ICp0YWJsZTsKIH07 CiAKKyNkZWZpbmUgY3R4X21vY3NOKE4pIChHRU4xMV9DVFhfR0ZYX01PQ1NfQkFTRSArIDIgKiAo TikgKyAxKQogLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoWFhYX01PQ1NfMCAtIFhYWF9NT0NT XzYzKSAqLwogI2RlZmluZSBfTEVfQ0FDSEVBQklMSVRZKHZhbHVlKQkoKHZhbHVlKSA8PCAwKQog I2RlZmluZSBfTEVfVEdUX0NBQ0hFKHZhbHVlKQkoKHZhbHVlKSA8PCAyKQpAQCAtNTEsNiArNTUs NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB7CiAjZGVmaW5lIExFX1NDRih2YWx1ZSkJ CSgodmFsdWUpIDw8IDE0KQogI2RlZmluZSBMRV9DT1ModmFsdWUpCQkoKHZhbHVlKSA8PCAxNSkK ICNkZWZpbmUgTEVfU1NFKHZhbHVlKQkJKCh2YWx1ZSkgPDwgMTcpCisjZGVmaW5lIExFX0NPU19N QVNLCQlHRU5NQVNLKDE2LCAxNSkKIAogLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoTE5DRk1P Q1MwIC0gTE5DRk1PQ1MzMSkgLSB0d28gZW50cmllcyBwZXIgd29yZCAqLwogI2RlZmluZSBMM19F U0ModmFsdWUpCQkoKHZhbHVlKSA8PCAwKQpAQCAtMzc3LDYgKzM4Miw3IEBAIHZvaWQgaW50ZWxf bW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0 IGludGVsX2d0ICpndCA9IGVuZ2luZS0+Z3Q7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gZ3QtPnVuY29yZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0YWJsZTsKKwl1bnNp Z25lZCBpbnQgYWN0aXZlX2Nsb3M7CiAJdW5zaWduZWQgaW50IGluZGV4OwogCXUzMiB1bnVzZWRf dmFsdWU7CiAKQEAgLTM5MCwxMSArMzk2LDE2IEBAIHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFnZXRfbW9jc19zZXR0aW5n cyhndCwgJnRhYmxlKSkKIAkJcmV0dXJuOwogCisJYWN0aXZlX2Nsb3MgPSBlbmdpbmUtPmk5MTUt PmNsb3MuYWN0aXZlX2Nsb3M7CiAJLyogU2V0IHVudXNlZCB2YWx1ZXMgdG8gUFRFICovCiAJdW51 c2VkX3ZhbHVlID0gdGFibGUudGFibGVbSTkxNV9NT0NTX1BURV0uY29udHJvbF92YWx1ZTsKKwl1 bnVzZWRfdmFsdWUgJj0gfkxFX0NPU19NQVNLOworCXVudXNlZF92YWx1ZSB8PSBGSUVMRF9QUkVQ KExFX0NPU19NQVNLLCBhY3RpdmVfY2xvcyk7CiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0 YWJsZS5zaXplOyBpbmRleCsrKSB7CiAJCXUzMiB2YWx1ZSA9IGdldF9lbnRyeV9jb250cm9sKCZ0 YWJsZSwgaW5kZXgpOworCQl2YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJCXZhbHVlIHw9IEZJRUxE X1BSRVAoTEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKIAogCQlpbnRlbF91bmNvcmVfd3JpdGVf ZncodW5jb3JlLAogCQkJCSAgICAgIG1vY3NfcmVnaXN0ZXIoZW5naW5lLT5pZCwgaW5kZXgpLApA QCAtNDA4LDcgKzQxOSw3IEBAIHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQkJICAgICAgdW51c2VkX3ZhbHVlKTsKIH0KIAotc3Rh dGljIHZvaWQgaW50ZWxfbW9jc19pbml0X2dsb2JhbChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQordm9p ZCBpbnRlbF9tb2NzX2luaXRfZ2xvYmFsKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CiAJc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfbW9j c190YWJsZSB0YWJsZTsKQEAgLTQ0Miw2ICs0NTMsNyBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19j b250cm9sX3RhYmxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQkJCSAgIGNvbnN0IHN0cnVj dCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKIHsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBl bmdpbmUgPSBycS0+ZW5naW5lLT5pZDsKKwl1bnNpZ25lZCBpbnQgYWN0aXZlX2Nsb3M7CiAJdW5z aWduZWQgaW50IGluZGV4OwogCXUzMiB1bnVzZWRfdmFsdWU7CiAJdTMyICpjczsKQEAgLTQ0OSw4 ICs0NjEsMTEgQEAgc3RhdGljIGludCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKIAlpZiAoR0VNX1dBUk5fT04odGFibGUtPnNpemUgPiB0YWJsZS0+bl9l bnRyaWVzKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlhY3RpdmVfY2xvcyA9IHJxLT5pOTE1LT5j bG9zLmFjdGl2ZV9jbG9zOwogCS8qIFNldCB1bnVzZWQgdmFsdWVzIHRvIFBURSAqLwogCXVudXNl ZF92YWx1ZSA9IHRhYmxlLT50YWJsZVtJOTE1X01PQ1NfUFRFXS5jb250cm9sX3ZhbHVlOworCXVu dXNlZF92YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJdW51c2VkX3ZhbHVlIHw9IEZJRUxEX1BSRVAo TEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKIAogCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwg MiArIDIgKiB0YWJsZS0+bl9lbnRyaWVzKTsKIAlpZiAoSVNfRVJSKGNzKSkKQEAgLTQ2MCw2ICs0 NzUsOCBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLAogCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4 KyspIHsKIAkJdTMyIHZhbHVlID0gZ2V0X2VudHJ5X2NvbnRyb2wodGFibGUsIGluZGV4KTsKKwkJ dmFsdWUgJj0gfkxFX0NPU19NQVNLOworCQl2YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19NQVNL LCBhY3RpdmVfY2xvcyk7CiAKIAkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3Jl Z2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKIAkJKmNzKysgPSB2YWx1ZTsKQEAgLTYyNSwxMCArNjQy LDIwNyBAQCBpbnQgaW50ZWxfbW9jc19lbWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCXJl dHVybiAwOwogfQogCit2b2lkIGludGVsX21vY3NfaW5pdF9yZWdfc3RhdGUoY29uc3Qgc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g Y2UtPmVuZ2luZS0+aTkxNTsKKwl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNfcmVnX3N0YXRlOwor CXN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHQ7CisJdW5zaWduZWQgaW50IGFjdGl2ZV9jbG9z OworCXUzMiB2YWx1ZTsKKwlpbnQgaTsKKworCWdldF9tb2NzX3NldHRpbmdzKGNlLT5lbmdpbmUt Pmd0LCAmdCk7CisKKwlhY3RpdmVfY2xvcyA9IGk5MTUtPmNsb3MuYWN0aXZlX2Nsb3M7CisKKwlp ZiAoYWN0aXZlX2Nsb3MgPT0gRklFTERfR0VUKExFX0NPU19NQVNLLCBnZXRfZW50cnlfY29udHJv bCgmdCwgMCkpKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgdC5uX2VudHJpZXM7IGkr KykgeworCQl2YWx1ZSA9IHJlZ19zdGF0ZVtjdHhfbW9jc04oaSldOworCQl2YWx1ZSAmPSB+TEVf Q09TX01BU0s7CisJCXZhbHVlIHw9IEZJRUxEX1BSRVAoTEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9z KTsKKwkJcmVnX3N0YXRlW2N0eF9tb2NzTihpKV0gPSB2YWx1ZTsKKwl9Cit9CisKK3N0YXRpYyBp bnQKK21vY3Nfc3RvcmVfY2xvcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHQ7CisJdW5z aWduZWQgaW50IGNvdW50LCBhY3RpdmVfY2xvcywgaW5kZXg7CisJdTMyIG9mZnNldDsKKwl1MzIg dmFsdWU7CisJdTMyICpjczsKKworCWlmICghZ2V0X21vY3Nfc2V0dGluZ3MocnEtPmVuZ2luZS0+ Z3QsICZ0KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwljb3VudCA9IHQubl9lbnRyaWVzOworCWFj dGl2ZV9jbG9zID0gcnEtPmk5MTUtPmNsb3MuYWN0aXZlX2Nsb3M7CisJY3MgPSBpbnRlbF9yaW5n X2JlZ2luKHJxLCA0ICogY291bnQpOworCWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VS Uihjcyk7CisKKwlvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgKyBMUkNfU1RB VEVfUE4gKiBQQUdFX1NJWkU7CisKKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5k ZXgrKykgeworCQl2YWx1ZSA9IGNlLT5scmNfcmVnX3N0YXRlW2N0eF9tb2NzTihpbmRleCldOwor CQl2YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJCXZhbHVlIHw9IEZJRUxEX1BSRVAoTEVfQ09TX01B U0ssIGFjdGl2ZV9jbG9zKTsKKworCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwg TUlfVVNFX0dHVFQ7CisJCSpjcysrID0gb2Zmc2V0ICsgY3R4X21vY3NOKGluZGV4KSAqIHNpemVv Zih1aW50MzJfdCk7CisJCSpjcysrID0gMDsKKwkJKmNzKysgPSB2YWx1ZTsKKwl9CisKKwlpbnRl bF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1v ZGlmeV9jb250ZXh0X21vY3Moc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOworCWludCBlcnI7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+ cGluX211dGV4KTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShjZS0+ZW5naW5lLT5rZXJu ZWxfY29udGV4dCk7CisJaWYgKElTX0VSUihycSkpCisJCXJldHVybiBQVFJfRVJSKHJxKTsKKwor CS8qIFNlcmlhbGlzZSB3aXRoIHRoZSByZW1vdGUgY29udGV4dCAqLworCWVyciA9IGludGVsX2Nv bnRleHRfcHJlcGFyZV9yZW1vdGVfcmVxdWVzdChjZSwgcnEpOworCWlmIChlcnIgPT0gMCkKKwkJ ZXJyID0gbW9jc19zdG9yZV9jbG9zKHJxLCBjZSk7CisKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsK KwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGludGVsX21vY3NfY29uZmlndXJlX2NvbnRl eHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3sKKwlzdHJ1Y3QgaTkxNV9nZW1fZW5n aW5lc19pdGVyIGl0OworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgZXJyID0gMDsK KworCWZvcl9lYWNoX2dlbV9lbmdpbmUoY2UsIGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVz KGN0eCksIGl0KSB7CisJCUdFTV9CVUdfT04oY2UgPT0gY2UtPmVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOworCisJCWlmIChjZS0+ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCisJCQljb250 aW51ZTsKKworCQllcnIgPSBpbnRlbF9jb250ZXh0X2xvY2tfcGlubmVkKGNlKTsKKwkJaWYgKGVy cikKKwkJCWJyZWFrOworCisJCWlmIChpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCisJCQll cnIgPSBtb2RpZnlfY29udGV4dF9tb2NzKGNlKTsKKworCQlpbnRlbF9jb250ZXh0X3VubG9ja19w aW5uZWQoY2UpOworCQlpZiAoZXJyKQorCQkJYnJlYWs7CisJfQorCWk5MTVfZ2VtX2NvbnRleHRf dW5sb2NrX2VuZ2luZXMoY3R4KTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaW50 ZWxfbW9jc19jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnQgZXJyOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJLyoKKwkgKiBNT0NTIHJlZ2lzdGVycyBvZiByZW5k ZXIgZW5naW5lIGFyZSBjb250ZXh0IHNhdmVkIGFuZCByZXN0b3JlZCB0byBhbmQKKwkgKiBmcm9t IGEgY29udGV4dCBpbWFnZS4KKwkgKiBTbyBmb3IgYW55IE1PQ1MgdXBkYXRlIHRvIHJlZmxlY3Qg b24gdGhlIGV4aXN0aW5nIGNvbnRleHRzIHJlcXVpcmVzCisJICogdXBkYXRpbmcgdGhlIGNvbnRl eHQgaW1hZ2UuCisJICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZpOTE1LT5nZW0uY29u dGV4dHMubGlzdCwgbGluaykgeworCQlpZiAoY3R4ID09IGk5MTUtPmtlcm5lbF9jb250ZXh0KQor CQkJY29udGludWU7CisKKwkJZXJyID0gaW50ZWxfbW9jc19jb25maWd1cmVfY29udGV4dChjdHgp OworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwkvKgorCSAqIEFmdGVyIHVwZGF0 aW5nIGFsbCBvdGhlciBjb250ZXh0cywgdXBkYXRlIHJlbmRlciBjb250ZXh0IGltYWdlIG9mCisJ ICoga2VybmVsIGNvbnRleHQuIEFsc28gdXBkYXRlIHRoZSBNT0NTIG9mIG5vbi1yZW5kZXIgZW5n aW5lcy4KKwkgKi8KKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0Owor CisJCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKKwkJ aWYgKElTX0VSUihycSkpCisJCQlyZXR1cm4gUFRSX0VSUihycSk7CisKKwkJZ2V0X21vY3Nfc2V0 dGluZ3MocnEtPmVuZ2luZS0+Z3QsICZ0KTsKKwkJZXJyID0gZW1pdF9tb2NzX2NvbnRyb2xfdGFi bGUocnEsICZ0KTsKKwkJaWYgKGVycikgeworCQkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7 CisJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCXJldHVybiBlcnI7CisJCX0KKworCQlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGludGVsX21vY3Nf dXBkYXRlX2Nsb3Moc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlyZXR1cm4gaW50ZWxfbW9jc19j b25maWd1cmVfYWxsX2NvbnRleHRzKGd0KTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfcmVhZF9j bG9zX3dheV9tYXNrKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0YWJs ZTsKKwlpbnQgcmV0LCBpOworCXUzMiB2YWw7CisKKwlpZiAoIWdldF9tb2NzX3NldHRpbmdzKGd0 LCAmdGFibGUpKQorCQlyZXR1cm47CisKKwkvKiBDTE9TIGlzIHNhbWUgZm9yIGFsbCBlbnRyaWVz LiBTbyBpdHMgZW5vdWdoIHRvIHJlYWQgb25lKi8KKwlpOTE1LT5jbG9zLmFjdGl2ZV9jbG9zID0g RklFTERfR0VUKExFX0NPU19NQVNLLAorCQkJCQkgICBnZXRfZW50cnlfY29udHJvbCgmdGFibGUs IDApKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX09GX0NMT1M7IGkrKykgeworCQl2YWwgPSBpOwor CQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGk5MTUsCisJCQkJCSAgICAgSUNMX1BDT0RF X0xMQ19DT1NfV0FZX01BU0tfSU5GTywKKwkJCQkJICAgICAmdmFsLCBOVUxMKTsKKwkJaWYgKHJl dCkgeworCQkJRFJNX0VSUk9SKCJNYWlsYm94IHJlYWQgZXJyb3IgPSAlZFxuIiwgcmV0KTsKKwkJ CXJldHVybjsKKwkJfQorCisJCWk5MTUtPmNsb3Mud2F5X21hc2tbaV0gPSB2YWw7CisJfQorCisJ aTkxNS0+Y2xvcy5zdXBwb3J0X3dheV9tYXNrX3JlYWQgPSB0cnVlOworfQorCiB2b2lkIGludGVs X21vY3NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewogCWludGVsX21vY3NfaW5pdF9sM2Nj X3RhYmxlKGd0KTsKIAorCWlmIChJU19HRU4oZ3QtPmk5MTUsIDExKSkKKwkJaW50ZWxfcmVhZF9j bG9zX3dheV9tYXNrKGd0KTsKKwogCWlmIChIQVNfR0xPQkFMX01PQ1NfUkVHSVNURVJTKGd0LT5p OTE1KSkKIAkJaW50ZWxfbW9jc19pbml0X2dsb2JhbChndCk7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9tb2NzLmgKaW5kZXggMmFlODE2YjdjYTE5Li42NTU2NjQ1NzQwOGUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmgKQEAgLTQ5LDEzICs0OSwxNyBAQAogICogY29udGV4 dCBoYW5kbGluZyBrZWVwIHRoZSBNT0NTIGluIHN0ZXAuCiAgKi8KIAotc3RydWN0IGk5MTVfcmVx dWVzdDsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3M7CitzdHJ1Y3QgaW50ZWxfY29udGV4dDsKK3N0 cnVjdCBpOTE1X3JlcXVlc3Q7CiBzdHJ1Y3QgaW50ZWxfZ3Q7CiAKIHZvaWQgaW50ZWxfbW9jc19p bml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwogdm9pZCBpbnRlbF9tb2NzX2luaXRfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIGludCBpbnRlbF9tb2NzX2VtaXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpOworaW50IGludGVsX21vY3NfdXBkYXRlX2Nsb3Moc3RydWN0 IGludGVsX2d0ICpndCk7CisKK3ZvaWQgaW50ZWxfbW9jc19pbml0X3JlZ19zdGF0ZShjb25zdCBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IGNkZTRjN2ZiNTU3MC4uMDFjNWY3ZmVjNjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTE2MDQsNiArMTYwNCwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWJv b2wgZGlzdHJ1c3RfYmlvc193bTsKIAl9IHdtOwogCisJLyogTGFzdCBMZXZlbCBDYWNoZSAgQ2xh c3Mgb2YgU2VydmljZSAqLworCXN0cnVjdCB7CisJCWJvb2wgc3VwcG9ydF93YXlfbWFza19yZWFk OworCQl1OCBhY3RpdmVfY2xvczsKKyNkZWZpbmUgTlVNX09GX0NMT1MgNAorCQl1MTYgd2F5X21h c2tbTlVNX09GX0NMT1NdOworCX0gY2xvczsKKwogCXN0cnVjdCBkcmFtX2luZm8gewogCQlib29s IHZhbGlkOwogCQlib29sIGlzXzE2Z2JfZGltbTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4 IDZkNjdiZDIzOGNmZS4uMGE3OTM3MjM0OTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAg LTg4NTksNiArODg1OSw3IEBAIGVudW0gewogI2RlZmluZSAgIElDTF9QQ09ERV9NRU1fU1VCU1lT WVNURU1fSU5GTwkweGQKICNkZWZpbmUgICAgIElDTF9QQ09ERV9NRU1fU1NfUkVBRF9HTE9CQUxf SU5GTwkoMHgwIDw8IDgpCiAjZGVmaW5lICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfUUdWX1BP SU5UX0lORk8ocG9pbnQpCSgoKHBvaW50KSA8PCAxNikgfCAoMHgxIDw8IDgpKQorI2RlZmluZSAg IElDTF9QQ09ERV9MTENfQ09TX1dBWV9NQVNLX0lORk8JMHgxZAogI2RlZmluZSAgIEdFTjZfUENP REVfUkVBRF9EX0NPTVAJCTB4MTAKICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX0RfQ09NUAkJ MHgxMQogI2RlZmluZSAgIEhTV19QQ09ERV9ERV9XUklURV9GUkVRX1JFUQkJMHgxNwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jCmluZGV4IGJmMDM5YjhiYTU5My4uODM0NGFkMjM4MGNjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiaTkx NV9zeXNmcy5oIgogI2luY2x1ZGUgImludGVsX3BtLmgiCiAjaW5jbHVkZSAiaW50ZWxfc2lkZWJh bmQuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9tb2NzLmgiCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2 KQogewpAQCAtMjU1LDYgKzI1Niw4OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1 dGUgZHBmX2F0dHJzXzEgPSB7CiAJLnByaXZhdGUgPSAodm9pZCAqKTEKIH07CiAKK3N0YXRpYyBz c2l6ZV90IGxsY19jbG9zX3Nob3coc3RydWN0IGRldmljZSAqa2RldiwKKwkJCSAgICAgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7CisJc3NpemVfdCBs ZW4gPSAwOworCWludCBhY3RpdmVfY2xvczsKKworCWFjdGl2ZV9jbG9zID0gZGV2X3ByaXYtPmNs b3MuYWN0aXZlX2Nsb3M7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFLCAi MHgleFxuIiwKKwkJCWRldl9wcml2LT5jbG9zLndheV9tYXNrW2FjdGl2ZV9jbG9zXSk7CisKKwly ZXR1cm4gbGVuOworfQorCitzdGF0aWMgc3NpemVfdCBsbGNfY2xvc19zdG9yZShzdHJ1Y3QgZGV2 aWNlICprZGV2LAorCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkg ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOworCXU4IGFjdGl2ZV9jbG9zLCBuZXdfY2xv cywgY2xvc19pbmRleDsKKwlib29sIHZhbGlkX21hc2sgPSBmYWxzZTsKKwlzc2l6ZV90IHJldDsK Kwl1MTYgd2F5X21hc2s7CisKKwlyZXQgPSBrc3RydG91MTYoYnVmLCAwLCAmd2F5X21hc2spOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhY3RpdmVfY2xvcyA9IGRldl9wcml2LT5jbG9z LmFjdGl2ZV9jbG9zOworCisJaWYgKGRldl9wcml2LT5jbG9zLndheV9tYXNrW2FjdGl2ZV9jbG9z XSA9PSB3YXlfbWFzaykKKwkJcmV0dXJuIGNvdW50OworCisJZm9yIChjbG9zX2luZGV4ID0gMDsg Y2xvc19pbmRleCA8IE5VTV9PRl9DTE9TOyBjbG9zX2luZGV4KyspIHsKKwkJaWYgKGRldl9wcml2 LT5jbG9zLndheV9tYXNrW2Nsb3NfaW5kZXhdID09IHdheV9tYXNrKSB7CisJCQluZXdfY2xvcyA9 IGNsb3NfaW5kZXg7CisJCQl2YWxpZF9tYXNrID0gdHJ1ZTsKKwkJCWJyZWFrOworCQl9CisJfQor CisJaWYgKCF2YWxpZF9tYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9IGk5MTVfbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CWRldl9wcml2LT5jbG9zLmFjdGl2ZV9jbG9zID0gbmV3X2Nsb3M7CisJcmV0ID0gaW50ZWxfbW9j c191cGRhdGVfY2xvcygmZGV2X3ByaXYtPmd0KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi RmFpbGVkIHRvIHVwZGF0ZSBDbGFzcyBvZiBzZXJ2aWNlXG4iKTsKKwkJZGV2X3ByaXYtPmNsb3Mu YWN0aXZlX2Nsb3MgPSBhY3RpdmVfY2xvczsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CisJCXJldHVybiByZXQ7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGxsY19jbG9zX21v ZGVzX3Nob3coc3RydWN0IGRldmljZSAqa2RldiwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKKwlzc2l6ZV90IGxlbiA9IDA7CisJaW50 IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX09GX0NMT1M7IGkrKykKKwkJbGVuICs9IHNucHJp bnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFLCAiMHgleCAiLAorCQkJCWRldl9wcml2LT5jbG9zLndh eV9tYXNrW2ldKTsKKworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIFBBR0VfU0laRSwgIlxu Iik7CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgREVWSUNFX0FUVFJfUlcobGxjX2Nsb3Mp Oworc3RhdGljIERFVklDRV9BVFRSX1JPKGxsY19jbG9zX21vZGVzKTsKKwogc3RhdGljIHNzaXpl X3QgZ3RfYWN0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2RldiwKIAkJCQkgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKIHsKQEAgLTU3NCw2ICs2NTcs MTggQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gZGV2X3ByaXYtPmRybS5wcmltYXJ5LT5rZGV2 OwogCWludCByZXQ7CiAKKwlpZiAoZGV2X3ByaXYtPmNsb3Muc3VwcG9ydF93YXlfbWFza19yZWFk KSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlKCZrZGV2LT5rb2JqLAorCQkJCQkmZGV2X2F0 dHJfbGxjX2Nsb3MuYXR0cik7CisJCWlmIChyZXQpCisJCQlEUk1fRVJST1IoIkxMQyBDT1Mgc3lz ZnMgc2V0dXAgZmFpbGVkXG4iKTsKKworCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZSgma2Rldi0+ a29iaiwKKwkJCQkJJmRldl9hdHRyX2xsY19jbG9zX21vZGVzLmF0dHIpOworCQlpZiAocmV0KQor CQkJRFJNX0VSUk9SKCJMTEMgQ09TIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7CisJfQorCiAjaWZk ZWYgQ09ORklHX1BNCiAJaWYgKEhBU19SQzYoZGV2X3ByaXYpKSB7CiAJCXJldCA9IHN5c2ZzX21l cmdlX2dyb3VwKCZrZGV2LT5rb2JqLApAQCAtNjI0LDYgKzcxOSwxMSBAQCB2b2lkIGk5MTVfdGVh cmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaTkxNV90 ZWFyZG93bl9lcnJvcl9jYXB0dXJlKGtkZXYpOwogCisJaWYgKGRldl9wcml2LT5jbG9zLnN1cHBv cnRfd2F5X21hc2tfcmVhZCkgeworCQlzeXNmc19yZW1vdmVfZmlsZSgma2Rldi0+a29iaiwgJmRl dl9hdHRyX2xsY19jbG9zLmF0dHIpOworCQlzeXNmc19yZW1vdmVfZmlsZSgma2Rldi0+a29iaiwg JmRldl9hdHRyX2xsY19jbG9zX21vZGVzLmF0dHIpOworCX0KKwogCWlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJc3lzZnNfcmVtb3ZlX2Zp bGVzKCZrZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwogCWVsc2UKLS0gCjIuMjAuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4