From mboxrd@z Thu Jan 1 00:00:00 1970 From: Prathap Kumar Valsan Subject: [PATCH v4 1/1] drm/i915: Add sysfs interface to control class-of-service Date: Tue, 15 Oct 2019 03:31:29 -0400 Message-ID: <20191015073129.2375-2-prathap.kumar.valsan@intel.com> References: <20191015073129.2375-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7C28E6E618 for ; Tue, 15 Oct 2019 07:14:32 +0000 (UTC) In-Reply-To: <20191015073129.2375-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: reinette.chatre@intel.com, Chris P Wilson List-Id: intel-gfx@lists.freedesktop.org UmVhbC1UaW1lIGNsaWVudHMgcnVubmluZyBvbiBDUFUgbWF5IHdhbnQgdG8gcnVuIG9uIGl0cyBv d24gcGFydGl0aW9uIG9mCkxhc3QtTGV2ZWwtQ2FjaGUoTExDKSB0byBhY2hpZXZlIGlzb2xhdGlv biBhbmQgdG8gYmUgbW9yZSBkZXRlcm1pbmlzdGljLgpUaGUgSW50ZWwgQ2FjaGUtQWxsb2NhdGlv bi1UZWNobm9sb2d5IGV4aXN0IG9uIENQVSB0byBwYXJ0aXRpb24gTExDIGluCnRvIHdheXMgYW5k IGRlZGljYXRlIGEgcGFydGl0aW9uIHRvIGFuIGFwcGxpY2F0aW9uLgoKSG93ZXZlciwgd2hlbiBM TEMgaXMgc2hhcmVkIGJldHdlZW4gQ1BVIGFuZCBHUFUsIHRoZSB3b3JrbG9hZHMgcnVubmluZwpv biBHUFUgIGhhcyBubyBub3Rpb24gYWJvdXQgdGhpcyBwYXJ0aXRpb24gYW5kIGNhbiB0aHJhc2gg dGhlIGNhY2hlIGxpbmVzCmRlZGljYXRlZCB0byBhIFJlYWwgVGltZSB0YXNrIHJ1bm5pbmcgb24g Q1BVLiBUbyBhdm9pZCB0aGlzLCBSZWFsLVRpbWUKY2xpZW50cyB3YW50cyBhIG1lY2hhbmlzbSB0 byByZWFkIHRoZSBleGlzdGluZyBjYWNoZSB3YXlzIHRoYXQgR1BVIGNhbgphbGxvY2F0ZSwgd2hp Y2ggZGVwZW5kcyBvbiBhIGNsYXNzLW9mLXNlcnZpY2UoQ0xPUykgYW5kIGl0cyBhc3NvY2lhdGVk CmNhY2hlIHdheSBtYXNrIGFuZCB0byByZXN0cmljdCB0aGUgR1BVIGRldmljZSBnbG9iYWxseSB0 byBvbmUgb2YgdGhlCnN1cHBvcnRlZCBDTE9TIGxldmVscy4KCkN1cnJlbnRseSBHUFUgaGFyZHdh cmUgc3VwcG9ydHMgZm91ciBDTE9TIGxldmVscyBhbmQgIHRoZXJlIGlzIGFuCmFzc29jaWF0ZWQg d2F5LW1hc2sgZm9yIGVhY2ggQ0xPUy4gRWFjaCBMTEMgTU9DUyByZWdpc3RlciBoYXMgYSBmaWVs ZAp0byBzZWxlY3QgdGhlIENMT1MgbGV2ZWwuIFNvIGluLW9yZGVyIHRvIGdsb2JhbGx5IHNldCB0 aGUgR1BVIHRvIGEgQ0xPUwpsZXZlbCwgZHJpdmVyIG5lZWRzIHRvIHByb2dyYW0gZW50aXJlIE1P Q1MgdGFibGUuCgpIYXJkd2FyZSBzdXBwb3J0cyByZWFkaW5nIHN1cHBvcnRlZCB3YXktbWFzayBj b25maWd1cmF0aW9uIGZvciBHUFUgdXNpbmcKYSBiaW9zIFBDb2RlIGludGVyZmFjZS4gVGhlIHN5 c2ZzIGludGVyZmFjZSBoYXMgdHdvIGZpbGVzLS1sbGNfY2xvc19tb2RlcwphbmQgbGxjX2Nsb3Mu IFRoZSBmaWxlIGxsY19jbG9zX21vZGVzIGlzIHJlYWQgb25seSBmaWxlIGFuZCB3aWxsIGxpc3Qg dGhlCmF2YWlsYWJsZSB3YXkgbWFza3MuIFRoZSBmaWxlIGxsY19jbG9zIGlzIHJlYWQvd3JpdGUg YW5kIHdpbGwgc2hvdyB0aGUKY3VycmVudGx5IGFjdGl2ZSB3YXkgbWFzayBhbmQgd3JpdGluZyBh IG5ldyB3YXkgbWFzayB3aWxsIHVwZGF0ZSB0aGUKYWN0aXZlIHdheSBtYXNrIG9mIHRoZSBHUFUu CgpOb3RlIG9mIENhdXRpb246IFJlc3RyaWN0aW5nIGNhY2hlIHdheXMgdXNpbmcgdGhpcyBtZWNo YW5pc20gcHJlc2VudHMgYQpsYXJnZXIgYXR0YWNrIHN1cmZhY2UgZm9yIHNpZGUtY2hhbm5lbCBh dHRhY2tzLgoKRXhhbXBsZSB1c2FnZToKPiBjYXQgL3N5cy9jbGFzcy9kcm0vY2FyZDAvbGxjX2Ns b3NfbW9kZXMKMHhmZmYgMHhmYzAgMHhjMDAgMHg4MDAKCj5jYXQgL3N5cy9jbGFzcy9kcm0vY2Fy ZDAvbGxjX2Nsb3MKMHhmZmYKClVwZGF0ZSB0byBuZXcgY2xvcwplY2hvICIweDgwMCIgPiAvc3lz L2NsYXNzL2RybS9jYXJkMC9sbGNfY2xvcwoKU2lnbmVkLW9mZi1ieTogUHJhdGhhcCBLdW1hciBW YWxzYW4gPHByYXRoYXAua3VtYXIudmFsc2FuQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMgICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9scmNfcmVnLmggfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5j ICAgIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbW9jcy5oICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nsb3Mu YyAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Nsb3MuaCAgICAgICAgfCAgMTUgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgfCAgMTAgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg ICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgIHwgMTA1 ICsrKysrKysrKysrKysrKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDM5MyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbG9zLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nsb3MuaAoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKaW5kZXggZTc5MWQ5MzIzYjUxLi41Yjg3NjlmYjc1NDAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCkBAIC0xMzUsNiArMTM1LDcgQEAgaTkxNS15ICs9IFwKIAkgICQoZ2VtLXkpIFwK IAkgIGk5MTVfYWN0aXZlLm8gXAogCSAgaTkxNV9idWRkeS5vIFwKKwkgIGk5MTVfY2xvcy5vIFwK IAkgIGk5MTVfY21kX3BhcnNlci5vIFwKIAkgIGk5MTVfZ2VtX2V2aWN0Lm8gXAogCSAgaTkxNV9n ZW1fZmVuY2VfcmVnLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwppbmRleCA0ODRl ZmUzYjQyNzMuLjAxOTFjMTA0ODZlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMK QEAgLTIxMzAsNiArMjEzMCwxMyBAQCBfX2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0YXRlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCWludGVsX3NzZXVfbWFrZV9ycGNzKGVuZ2lu ZS0+aTkxNSwgJmNlLT5zc2V1KTsKIAogCQlpOTE1X29hX2luaXRfcmVnX3N0YXRlKGNlLCBlbmdp bmUpOworCQkvKgorCQkgKiBHZW4xMSsgd2FudHMgdG8gc3VwcG9ydCB1cGRhdGUgb2YgTExDIGNs YXNzLW9mLXNlcnZpY2UgdmlhCisJCSAqIHN5c2ZzIGludGVyZmFjZS4gQ0xPUyBpcyBkZWZpbmVk IGluIE1PQ1MgcmVnaXN0ZXJzIGFuZCBmb3IKKwkJICogR2VuMTEsIE1PQ1MgaXMgcGFydCBvZiBj b250ZXh0IHJlc2dpc3RlciBzdGF0ZS4KKwkJICovCisJCWlmIChJU19HRU4oZW5naW5lLT5pOTE1 LCAxMSkpCisJCQlpbnRlbF9tb2NzX2luaXRfcmVnX3N0YXRlKGNlKTsKIAl9CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaAppbmRleCAwNmFiMDI3NmUxMGUuLmYwN2E2 MjYyMjE3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3Jl Zy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaApAQCAtMjgs NiArMjgsNyBAQAogI2RlZmluZSBDVFhfUl9QV1JfQ0xLX1NUQVRFCQkoMHg0MiArIDEpCiAKICNk ZWZpbmUgR0VOOV9DVFhfUklOR19NSV9NT0RFCQkweDU0CisjZGVmaW5lIEdFTjExX0NUWF9HRlhf TU9DU19CQVNFCQkweDRGMgogCiAvKiBHRU4xMisgUmVnIFN0YXRlIENvbnRleHQgKi8KICNkZWZp bmUgR0VOMTJfQ1RYX0JCX1BFUl9DVFhfUFRSCQkoMHgxMiArIDEpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9tb2NzLmMKaW5kZXggNzI4NzA0YmJiZTE4Li5iYmU5NWU4OTk1NDAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJp bnRlbF9ndC5oIgogI2luY2x1ZGUgImludGVsX21vY3MuaCIKICNpbmNsdWRlICJpbnRlbF9scmMu aCIKKyNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAKIC8qIHN0cnVjdHVyZXMgcmVxdWlyZWQg Ki8KIHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IHsKQEAgLTQwLDYgKzQxLDcgQEAgc3RydWN0 IGRybV9pOTE1X21vY3NfdGFibGUgewogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5 ICp0YWJsZTsKIH07CiAKKyNkZWZpbmUgY3R4X21vY3NOKE4pIChHRU4xMV9DVFhfR0ZYX01PQ1Nf QkFTRSArIDIgKiAoTikgKyAxKQogLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoWFhYX01PQ1Nf MCAtIFhYWF9NT0NTXzYzKSAqLwogI2RlZmluZSBfTEVfQ0FDSEVBQklMSVRZKHZhbHVlKQkoKHZh bHVlKSA8PCAwKQogI2RlZmluZSBfTEVfVEdUX0NBQ0hFKHZhbHVlKQkoKHZhbHVlKSA8PCAyKQpA QCAtNTEsNiArNTMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB7CiAjZGVmaW5lIExF X1NDRih2YWx1ZSkJCSgodmFsdWUpIDw8IDE0KQogI2RlZmluZSBMRV9DT1ModmFsdWUpCQkoKHZh bHVlKSA8PCAxNSkKICNkZWZpbmUgTEVfU1NFKHZhbHVlKQkJKCh2YWx1ZSkgPDwgMTcpCisjZGVm aW5lIExFX0NPU19NQVNLCQlHRU5NQVNLKDE2LCAxNSkKIAogLyogRGVmaW5lcyBmb3IgdGhlIHRh YmxlcyAoTE5DRk1PQ1MwIC0gTE5DRk1PQ1MzMSkgLSB0d28gZW50cmllcyBwZXIgd29yZCAqLwog I2RlZmluZSBMM19FU0ModmFsdWUpCQkoKHZhbHVlKSA8PCAwKQpAQCAtMzc5LDYgKzM4Miw3IEBA IHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgdGFibGU7CiAJdW5zaWduZWQgaW50IGlu ZGV4OwogCXUzMiB1bnVzZWRfdmFsdWU7CisJdTMyIGFjdGl2ZV9jbG9zOwogCiAJLyogUGxhdGZv cm1zIHdpdGggZ2xvYmFsIE1PQ1MgZG8gbm90IG5lZWQgcGVyLWVuZ2luZSBpbml0aWFsaXphdGlv bi4gKi8KIAlpZiAoSEFTX0dMT0JBTF9NT0NTX1JFR0lTVEVSUyhndC0+aTkxNSkpCkBAIC0zOTAs MTEgKzM5NCwxNiBAQCB2b2lkIGludGVsX21vY3NfaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCWlmICghZ2V0X21vY3Nfc2V0dGluZ3MoZ3QsICZ0YWJsZSkpCiAJ CXJldHVybjsKIAorCWFjdGl2ZV9jbG9zID0gZW5naW5lLT5pOTE1LT5jbG9zLmFjdGl2ZV9jbG9z OwogCS8qIFNldCB1bnVzZWQgdmFsdWVzIHRvIFBURSAqLwogCXVudXNlZF92YWx1ZSA9IHRhYmxl LnRhYmxlW0k5MTVfTU9DU19QVEVdLmNvbnRyb2xfdmFsdWU7CisJdW51c2VkX3ZhbHVlICY9IH5M RV9DT1NfTUFTSzsKKwl1bnVzZWRfdmFsdWUgfD0gRklFTERfUFJFUChMRV9DT1NfTUFTSywgYWN0 aXZlX2Nsb3MpOwogCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUuc2l6ZTsgaW5kZXgr KykgewogCQl1MzIgdmFsdWUgPSBnZXRfZW50cnlfY29udHJvbCgmdGFibGUsIGluZGV4KTsKKwkJ dmFsdWUgJj0gfkxFX0NPU19NQVNLOworCQl2YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19NQVNL LCBhY3RpdmVfY2xvcyk7CiAKIAkJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwKIAkJCQkg ICAgICBtb2NzX3JlZ2lzdGVyKGVuZ2luZS0+aWQsIGluZGV4KSwKQEAgLTQ0NCwxMyArNDUzLDE3 IEBAIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lID0gcnEtPmVuZ2luZS0+aWQ7CiAJ dW5zaWduZWQgaW50IGluZGV4OwogCXUzMiB1bnVzZWRfdmFsdWU7CisJdTMyIGFjdGl2ZV9jbG9z OwogCXUzMiAqY3M7CiAKIAlpZiAoR0VNX1dBUk5fT04odGFibGUtPnNpemUgPiB0YWJsZS0+bl9l bnRyaWVzKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlhY3RpdmVfY2xvcyA9IHJxLT5pOTE1LT5j bG9zLmFjdGl2ZV9jbG9zOwogCS8qIFNldCB1bnVzZWQgdmFsdWVzIHRvIFBURSAqLwogCXVudXNl ZF92YWx1ZSA9IHRhYmxlLT50YWJsZVtJOTE1X01PQ1NfUFRFXS5jb250cm9sX3ZhbHVlOworCXVu dXNlZF92YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJdW51c2VkX3ZhbHVlIHw9IEZJRUxEX1BSRVAo TEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKIAogCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwg MiArIDIgKiB0YWJsZS0+bl9lbnRyaWVzKTsKIAlpZiAoSVNfRVJSKGNzKSkKQEAgLTQ2MCw2ICs0 NzMsOCBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLAogCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4 KyspIHsKIAkJdTMyIHZhbHVlID0gZ2V0X2VudHJ5X2NvbnRyb2wodGFibGUsIGluZGV4KTsKKwkJ dmFsdWUgJj0gfkxFX0NPU19NQVNLOworCQl2YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19NQVNL LCBhY3RpdmVfY2xvcyk7CiAKIAkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3Jl Z2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKIAkJKmNzKysgPSB2YWx1ZTsKQEAgLTYyNSw2ICs2NDAs MTA2IEBAIGludCBpbnRlbF9tb2NzX2VtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJcmV0 dXJuIDA7CiB9CiAKK3ZvaWQgaW50ZWxfbW9jc19pbml0X3JlZ19zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBj ZS0+ZW5naW5lLT5pOTE1OworCXUzMiAqcmVnX3N0YXRlID0gY2UtPmxyY19yZWdfc3RhdGU7CisJ c3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgdDsKKwl1MzIgYWN0aXZlX2Nsb3M7CisJdTMyIHZh bHVlOworCWludCBpOworCisJZ2V0X21vY3Nfc2V0dGluZ3MoY2UtPmVuZ2luZS0+Z3QsICZ0KTsK KworCWFjdGl2ZV9jbG9zID0gaTkxNS0+Y2xvcy5hY3RpdmVfY2xvczsKKworCWlmIChhY3RpdmVf Y2xvcyA9PSBGSUVMRF9HRVQoTEVfQ09TX01BU0ssIGdldF9lbnRyeV9jb250cm9sKCZ0LCAwKSkp CisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCB0Lm5fZW50cmllczsgaSsrKSB7CisJCXZh bHVlID0gcmVnX3N0YXRlW2N0eF9tb2NzTihpKV07CisJCXZhbHVlICY9IH5MRV9DT1NfTUFTSzsK KwkJdmFsdWUgfD0gRklFTERfUFJFUChMRV9DT1NfTUFTSywgYWN0aXZlX2Nsb3MpOworCQlyZWdf c3RhdGVbY3R4X21vY3NOKGkpXSA9IHZhbHVlOworCX0KK30KKworaW50IGludGVsX21vY3Nfc3Rv cmVfY2xvcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCSAgc3RydWN0IGludGVsX2NvbnRl eHQgKmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHQ7CisJdW5zaWduZWQgaW50 IGNvdW50LCBpbmRleDsKKwl1MzIgdmFsdWUsIHVudXNlZF92YWx1ZSwgYWN0aXZlX2Nsb3M7CisJ dTMyIG9mZnNldDsKKwl1MzIgKmNzOworCisJaWYgKCFnZXRfbW9jc19zZXR0aW5ncyhycS0+ZW5n aW5lLT5ndCwgJnQpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWNvdW50ID0gdC5uX2VudHJpZXM7 CisJYWN0aXZlX2Nsb3MgPSBycS0+aTkxNS0+Y2xvcy5hY3RpdmVfY2xvczsKKwljcyA9IGludGVs X3JpbmdfYmVnaW4ocnEsIDQgKiBjb3VudCk7CisJaWYgKElTX0VSUihjcykpCisJCXJldHVybiBQ VFJfRVJSKGNzKTsKKworCW9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0YXRlKSArIExS Q19TVEFURV9QTiAqIFBBR0VfU0laRTsKKworCXVudXNlZF92YWx1ZSA9IHQudGFibGVbSTkxNV9N T0NTX1BURV0uY29udHJvbF92YWx1ZTsKKwl1bnVzZWRfdmFsdWUgJj0gfkxFX0NPU19NQVNLOwor CXVudXNlZF92YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19NQVNLLCBhY3RpdmVfY2xvcyk7CisK Kwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0LnNpemU7IGluZGV4KyspIHsKKwkJdmFsdWUgPSBn ZXRfZW50cnlfY29udHJvbCgmdCwgaW5kZXgpOworCQl2YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJ CXZhbHVlIHw9IEZJRUxEX1BSRVAoTEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKKworCQkqY3Mr KyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJCSpjcysrID0gb2Zm c2V0ICsgY3R4X21vY3NOKGluZGV4KSAqIHNpemVvZih1aW50MzJfdCk7CisJCSpjcysrID0gMDsK KwkJKmNzKysgPSB2YWx1ZTsKKwl9CisKKwlmb3IgKDsgaW5kZXggPCB0Lm5fZW50cmllczsgaW5k ZXgrKykgeworCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7 CisJCSpjcysrID0gb2Zmc2V0ICsgY3R4X21vY3NOKGluZGV4KSAqIHNpemVvZih1aW50MzJfdCk7 CisJCSpjcysrID0gMDsKKwkJKmNzKysgPSB1bnVzZWRfdmFsdWU7CisJfQorCisJaW50ZWxfcmlu Z19hZHZhbmNlKHJxLCBjcyk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGludGVsX21vY3NfZW1p dF9hbGxfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludCBlcnI7CisKKwlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwkJc3Ry dWN0IGRybV9pOTE1X21vY3NfdGFibGUgdDsKKworCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUo ZW5naW5lLT5rZXJuZWxfY29udGV4dCk7CisJCWlmIChJU19FUlIocnEpKQorCQkJcmV0dXJuIFBU Ul9FUlIocnEpOworCisJCWdldF9tb2NzX3NldHRpbmdzKHJxLT5lbmdpbmUtPmd0LCAmdCk7CisJ CWVyciA9IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJxLCAmdCk7CisJCWlmIChlcnIpIHsKKwkJ CWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOworCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJ CQlyZXR1cm4gZXJyOworCQl9CisKKwkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJfQorCisJcmV0 dXJuIDA7Cit9CisKIHZvaWQgaW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7 CiAJaW50ZWxfbW9jc19pbml0X2wzY2NfdGFibGUoZ3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbW9jcy5oCmluZGV4IDJhZTgxNmI3Y2ExOS4uNmE1ODRhYTM2MzcwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbW9jcy5oCkBAIC00OSwxMyArNDksMjAgQEAKICAqIGNvbnRleHQgaGFu ZGxpbmcga2VlcCB0aGUgTU9DUyBpbiBzdGVwLgogICovCiAKKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorCiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0Owogc3RydWN0IGludGVsX2VuZ2luZV9jczsKK3N0 cnVjdCBpbnRlbF9jb250ZXh0Owogc3RydWN0IGludGVsX2d0OwogCiB2b2lkIGludGVsX21vY3Nf aW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKIHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRlbF9tb2NzX2luaXRfcmVn X3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAKIGludCBpbnRlbF9tb2Nz X2VtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworaW50IGludGVsX21vY3NfZW1pdF9hbGxf ZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKKworaW50IGludGVsX21vY3Nfc3RvcmVfY2xv cyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKIAog I2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nsb3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY2xvcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZWFkNmZhZGNiNWIzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9jbG9zLmMKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaCIKKyNpbmNs dWRlICJndC9pbnRlbF9jb250ZXh0LmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfbW9jcy5oIgorCisj aW5jbHVkZSAiaTkxNV9jbG9zLmgiCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJp bnRlbF9zaWRlYmFuZC5oIgorCisjZGVmaW5lIEdFTjExX0RFRkFVTFRfQ0xPUyAwCisKK3N0YXRp YyBpbnQgY2xvc19tb2RpZnlfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJaW50IGVycjsKKworCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmNlLT5waW5fbXV0ZXgpOworCisJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGNlLT5lbmdp bmUtPmtlcm5lbF9jb250ZXh0KTsKKwlpZiAoSVNfRVJSKHJxKSkKKwkJcmV0dXJuIFBUUl9FUlIo cnEpOworCisJLyogU2VyaWFsaXNlIHdpdGggdGhlIHJlbW90ZSBjb250ZXh0ICovCisJZXJyID0g aW50ZWxfY29udGV4dF9wcmVwYXJlX3JlbW90ZV9yZXF1ZXN0KGNlLCBycSk7CisJaWYgKGVyciA9 PSAwKQorCQllcnIgPSBpbnRlbF9tb2NzX3N0b3JlX2Nsb3MocnEsIGNlKTsKKworCWk5MTVfcmVx dWVzdF9hZGQocnEpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgY2xvc19jb25maWd1 cmVfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQoreworCXN0cnVjdCBpOTE1 X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCBl cnIgPSAwOworCisJZm9yX2VhY2hfZ2VtX2VuZ2luZShjZSwgaTkxNV9nZW1fY29udGV4dF9sb2Nr X2VuZ2luZXMoY3R4KSwgaXQpIHsKKwkJR0VNX0JVR19PTihjZSA9PSBjZS0+ZW5naW5lLT5rZXJu ZWxfY29udGV4dCk7CisKKwkJaWYgKGNlLT5lbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykK KwkJCWNvbnRpbnVlOworCisJCWVyciA9IGludGVsX2NvbnRleHRfbG9ja19waW5uZWQoY2UpOwor CQlpZiAoZXJyKQorCQkJYnJlYWs7CisKKwkJaWYgKGludGVsX2NvbnRleHRfaXNfcGlubmVkKGNl KSkKKwkJCWVyciA9IGNsb3NfbW9kaWZ5X2NvbnRleHQoY2UpOworCisJCWludGVsX2NvbnRleHRf dW5sb2NrX3Bpbm5lZChjZSk7CisJCWlmIChlcnIpCisJCQlicmVhazsKKwl9CisJaTkxNV9nZW1f Y29udGV4dF91bmxvY2tfZW5naW5lcyhjdHgpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGlj IGludCBjbG9zX2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgKmNuOworCWludCBlcnI7 CisKKwkvKgorCSAqIE1PQ1MgcmVnaXN0ZXJzIG9mIHJlbmRlciBlbmdpbmUgYXJlIGNvbnRleHQg c2F2ZWQgYW5kIHJlc3RvcmVkIHRvIGFuZAorCSAqIGZyb20gYSBjb250ZXh0IGltYWdlLgorCSAq IFNvIGZvciBhbnkgTU9DUyB1cGRhdGUgdG8gcmVmbGVjdCBvbiB0aGUgZXhpc3RpbmcgY29udGV4 dHMgcmVxdWlyZXMKKwkgKiB1cGRhdGluZyB0aGUgY29udGV4dCBpbWFnZS4KKwkgKi8KKwlzcGlu X2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUoY3R4LCBjbiwgJmk5MTUtPmdlbS5jb250ZXh0cy5saXN0LCBsaW5rKSB7CisJCWlmIChjdHgg PT0gaTkxNS0+a2VybmVsX2NvbnRleHQpCisJCQljb250aW51ZTsKKworCQlzcGluX3VubG9jaygm aTkxNS0+Z2VtLmNvbnRleHRzLmxvY2spOworCisJCWVyciA9IGNsb3NfY29uZmlndXJlX2NvbnRl eHQoY3R4KTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisKKwkJc3Bpbl9sb2NrKCZpOTE1 LT5nZW0uY29udGV4dHMubG9jayk7CisJCWxpc3Rfc2FmZV9yZXNldF9uZXh0KGN0eCwgY24sIGxp bmspOworCQlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOworCX0KKwlzcGluX3VubG9jaygmaTkx NS0+Z2VtLmNvbnRleHRzLmxvY2spOworCS8qCisJICogQWZ0ZXIgdXBkYXRpbmcgYWxsIG90aGVy IGNvbnRleHRzLCB1cGRhdGUgcmVuZGVyIGNvbnRleHQgaW1hZ2Ugb2YKKwkgKiBrZXJuZWwgY29u dGV4dC4gQWxzbyB1cGRhdGUgdGhlIE1PQ1Mgb2Ygbm9uLXJlbmRlciBlbmdpbmVzLgorCSAqLwor CWVyciA9IGludGVsX21vY3NfZW1pdF9hbGxfZW5naW5lcygmaTkxNS0+Z3QpOworCisJcmV0dXJu IGVycjsKK30KKworaW50IGk5MTVfbW9jc191cGRhdGVfY2xvcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKK3sKKwlyZXR1cm4gY2xvc19jb25maWd1cmVfYWxsX2NvbnRleHRzKGk5MTUp OworfQorCit2b2lkIGk5MTVfcmVhZF9jbG9zX3dheV9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQoreworCWludCByZXQsIGk7CisJdTMyIHZhbDsKKworCWk5MTUtPmNsb3MuYWN0 aXZlX2Nsb3MgPSBHRU4xMV9ERUZBVUxUX0NMT1M7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX09G X0NMT1M7IGkrKykgeworCQl2YWwgPSBpOworCQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFk KGk5MTUsCisJCQkJCSAgICAgSUNMX1BDT0RFX0xMQ19DT1NfV0FZX01BU0tfSU5GTywKKwkJCQkJ ICAgICAmdmFsLCBOVUxMKTsKKwkJaWYgKHJldCkgeworCQkJRFJNX0VSUk9SKCJNYWlsYm94IHJl YWQgZXJyb3IgPSAlZFxuIiwgcmV0KTsKKwkJCXJldHVybjsKKwkJfQorCisJCWk5MTUtPmNsb3Mu d2F5X21hc2tbaV0gPSB2YWw7CisJfQorCisJaTkxNS0+Y2xvcy5zdXBwb3J0X3dheV9tYXNrX3Jl YWQgPSB0cnVlOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ns b3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY2xvcy5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDJiZmJkYWYwY2EzCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbG9zLmgKQEAgLTAsMCArMSwxNSBAQAorLyoKKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJ bnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19JOTE1X0NMT1NfSF9fCisjZGVmaW5l IF9fSTkxNV9DTE9TX0hfXworCitzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKKworaW50IGk5MTVf bW9jc191cGRhdGVfY2xvcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cit2b2lkIGk5 MTVfcmVhZF9jbG9zX3dheV9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKwor I2VuZGlmIC8qIF9fSTkxNV9DTE9TX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg YzQ2YjMzOTA2NGMwLi43M2QxZjc5ZjM0N2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt MTMxMyw2ICsxMzEzLDE2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJYm9vbCBkaXN0 cnVzdF9iaW9zX3dtOwogCX0gd207CiAKKwkvKiBMYXN0IExldmVsIENhY2hlICBDbGFzcyBvZiBT ZXJ2aWNlICovCisJc3RydWN0IHsKKwkJYm9vbCBzdXBwb3J0X3dheV9tYXNrX3JlYWQ7CisJCXUz MiBhY3RpdmVfY2xvczsKKyNkZWZpbmUgTlVNX09GX0NMT1MgNAorCQl1MTYgd2F5X21hc2tbTlVN X09GX0NMT1NdOworCQkvKiBMb2NrIHRvIHNlcmlhbGl6ZSB1cGRhdGluZyBkZXZpY2UgY2xvcyB2 aWEgc3lzZnMgaW50ZXJmYWNlLiovCisJCXN0cnVjdCBtdXRleCBsb2NrOworCX0gY2xvczsKKwog CXN0cnVjdCBkcmFtX2luZm8gewogCQlib29sIHZhbGlkOwogCQlib29sIGlzXzE2Z2JfZGltbTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDBkZGJkM2E1ZmI4ZC4uYjJiODljYThjNzI2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJndC9p bnRlbF9yZW5kZXJzdGF0ZS5oIgogI2luY2x1ZGUgImd0L2ludGVsX3dvcmthcm91bmRzLmgiCiAK KyNpbmNsdWRlICJpOTE1X2Nsb3MuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUg Imk5MTVfc2NhdHRlcmxpc3QuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCkBAIC0xMjgxLDYg KzEyODIsOCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAKIAlpbnRlbF91Y19pbml0KCZkZXZfcHJpdi0+Z3QudWMpOwogCisJaTkxNV9yZWFk X2Nsb3Nfd2F5X21hc2soZGV2X3ByaXYpOworCiAJcmV0ID0gaW50ZWxfZ3RfaW5pdF9odygmZGV2 X3ByaXYtPmd0KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl91Y19pbml0OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKaW5kZXggZTI0OTkxZTU0ODk3Li5kOTY4OWE0OTQ5MTAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaApAQCAtODg2OSw2ICs4ODY5LDcgQEAgZW51bSB7CiAjZGVmaW5lICAgSUNMX1BD T0RFX01FTV9TVUJTWVNZU1RFTV9JTkZPCTB4ZAogI2RlZmluZSAgICAgSUNMX1BDT0RFX01FTV9T U19SRUFEX0dMT0JBTF9JTkZPCSgweDAgPDwgOCkKICNkZWZpbmUgICAgIElDTF9QQ09ERV9NRU1f U1NfUkVBRF9RR1ZfUE9JTlRfSU5GTyhwb2ludCkJKCgocG9pbnQpIDw8IDE2KSB8ICgweDEgPDwg OCkpCisjZGVmaW5lICAgSUNMX1BDT0RFX0xMQ19DT1NfV0FZX01BU0tfSU5GTwkweDFkCiAjZGVm aW5lICAgR0VONl9QQ09ERV9SRUFEX0RfQ09NUAkJMHgxMAogI2RlZmluZSAgIEdFTjZfUENPREVf V1JJVEVfRF9DT01QCQkweDExCiAjZGVmaW5lICAgSFNXX1BDT0RFX0RFX1dSSVRFX0ZSRVFfUkVR CQkweDE3CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggYmYwMzliOGJhNTkzLi5jYjkw Y2VlNDc0ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKQEAgLTMyLDEwICszMiwxMiBA QAogCiAjaW5jbHVkZSAiZ3QvaW50ZWxfcmM2LmgiCiAKKyNpbmNsdWRlICJpOTE1X2Nsb3MuaCIK ICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfc3lzZnMuaCIKICNpbmNsdWRl ICJpbnRlbF9wbS5oIgogI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCisjaW5jbHVkZSAiZ3Qv aW50ZWxfbW9jcy5oIgogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpr ZGV2X21pbm9yX3RvX2k5MTUoc3RydWN0IGRldmljZSAqa2RldikKIHsKQEAgLTI1NSw2ICsyNTcs OTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIGRwZl9hdHRyc18xID0gewog CS5wcml2YXRlID0gKHZvaWQgKikxCiB9OwogCitzdGF0aWMgc3NpemVfdCBsbGNfY2xvc19zaG93 KHN0cnVjdCBkZXZpY2UgKmtkZXYsCisJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g a2Rldl9taW5vcl90b19pOTE1KGtkZXYpOworCXNzaXplX3QgbGVuID0gMDsKKwlpbnQgYWN0aXZl X2Nsb3M7CisKKwlhY3RpdmVfY2xvcyA9IGRldl9wcml2LT5jbG9zLmFjdGl2ZV9jbG9zOworCWxl biArPSBzbnByaW50ZihidWYgKyBsZW4sIFBBR0VfU0laRSwgIjB4JXhcbiIsCisJCQlkZXZfcHJp di0+Y2xvcy53YXlfbWFza1thY3RpdmVfY2xvc10pOworCisJcmV0dXJuIGxlbjsKK30KKworLyoK KyAqIFRoaXMgd2lsbCB0aWUgdGhlIEdQVSBkZXZpY2UgdG8gYSBjbGFzcy1vZi1zZXJ2aWNlLiBF YWNoIGNsYXNzLW9mLXNlcnZpY2UKKyAqIGhhcyB3YXlfbWFzayBhc3NvY2lhdGVkIHdpdGggaXQu IEEgd2F5LW1hc2sgZGV0ZXJtaW5lcyB0aGUgTExDIGNhY2hlIHdheXMKKyAqIHRoYXQgd2lsIGJl IHVzZWQgdG8gYWxsb2NhdGUgY2FjaGVsaW5lcyBmb3IgdGhlIEdQVSBtZW1vcnkgYWNjZXNzZXMu CisgKi8KK3N0YXRpYyBzc2l6ZV90IGxsY19jbG9zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYs CisJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgIGNvbnN0 IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKKwl1OCBhY3RpdmVfY2xvcywgbmV3 X2Nsb3MsIGNsb3NfaW5kZXg7CisJYm9vbCB2YWxpZF9tYXNrID0gZmFsc2U7CisJc3NpemVfdCBy ZXQ7CisJdTE2IHdheV9tYXNrOworCisJcmV0ID0ga3N0cnRvdTE2KGJ1ZiwgMCwgJndheV9tYXNr KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYWN0aXZlX2Nsb3MgPSBkZXZfcHJpdi0+ Y2xvcy5hY3RpdmVfY2xvczsKKworCWlmIChkZXZfcHJpdi0+Y2xvcy53YXlfbWFza1thY3RpdmVf Y2xvc10gPT0gd2F5X21hc2spCisJCXJldHVybiBjb3VudDsKKworCWZvciAoY2xvc19pbmRleCA9 IDA7IGNsb3NfaW5kZXggPCBOVU1fT0ZfQ0xPUzsgY2xvc19pbmRleCsrKSB7CisJCWlmIChkZXZf cHJpdi0+Y2xvcy53YXlfbWFza1tjbG9zX2luZGV4XSA9PSB3YXlfbWFzaykgeworCQkJbmV3X2Ns b3MgPSBjbG9zX2luZGV4OworCQkJdmFsaWRfbWFzayA9IHRydWU7CisJCQlicmVhazsKKwkJfQor CX0KKworCWlmICghdmFsaWRfbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSBtdXRl eF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5jbG9zLmxvY2spOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKKwlkZXZfcHJpdi0+Y2xvcy5hY3RpdmVfY2xvcyA9IG5ld19jbG9zOwor CXJldCA9IGk5MTVfbW9jc191cGRhdGVfY2xvcyhkZXZfcHJpdik7CisJaWYgKHJldCkgeworCQlE Uk1fRVJST1IoIkZhaWxlZCB0byB1cGRhdGUgQ2xhc3Mgb2Ygc2VydmljZVxuIik7CisJCWRldl9w cml2LT5jbG9zLmFjdGl2ZV9jbG9zID0gYWN0aXZlX2Nsb3M7CisJCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmNsb3MubG9jayk7CisJCXJldHVybiByZXQ7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+Y2xvcy5sb2NrKTsKKworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXpl X3QgbGxjX2Nsb3NfbW9kZXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAorCQkJCSAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOworCXNzaXplX3Qg bGVuID0gMDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBOVU1fT0ZfQ0xPUzsgaSsrKQor CQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBQQUdFX1NJWkUsICIweCV4ICIsCisJCQkJZGV2 X3ByaXYtPmNsb3Mud2F5X21hc2tbaV0pOworCisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwg UEFHRV9TSVpFLCAiXG4iKTsKKworCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRU Ul9SVyhsbGNfY2xvcyk7CitzdGF0aWMgREVWSUNFX0FUVFJfUk8obGxjX2Nsb3NfbW9kZXMpOwor CiBzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2 LAogCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewpA QCAtNTc0LDYgKzY2MiwxOCBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSBkZXZfcHJpdi0+ZHJt LnByaW1hcnktPmtkZXY7CiAJaW50IHJldDsKIAorCWlmIChkZXZfcHJpdi0+Y2xvcy5zdXBwb3J0 X3dheV9tYXNrX3JlYWQpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGUoJmtkZXYtPmtvYmos CisJCQkJCSZkZXZfYXR0cl9sbGNfY2xvcy5hdHRyKTsKKwkJaWYgKHJldCkKKwkJCURSTV9FUlJP UigiTExDIENPUyBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOworCisJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9maWxlKCZrZGV2LT5rb2JqLAorCQkJCQkmZGV2X2F0dHJfbGxjX2Nsb3NfbW9kZXMuYXR0cik7 CisJCWlmIChyZXQpCisJCQlEUk1fRVJST1IoIkxMQyBDT1Mgc3lzZnMgc2V0dXAgZmFpbGVkXG4i KTsKKwl9CisKICNpZmRlZiBDT05GSUdfUE0KIAlpZiAoSEFTX1JDNihkZXZfcHJpdikpIHsKIAkJ cmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosCkBAIC02MjQsNiArNzI0LDExIEBA IHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAKIAlpOTE1X3RlYXJkb3duX2Vycm9yX2NhcHR1cmUoa2Rldik7CiAKKwlpZiAoZGV2X3By aXYtPmNsb3Muc3VwcG9ydF93YXlfbWFza19yZWFkKSB7CisJCXN5c2ZzX3JlbW92ZV9maWxlKCZr ZGV2LT5rb2JqLCAmZGV2X2F0dHJfbGxjX2Nsb3MuYXR0cik7CisJCXN5c2ZzX3JlbW92ZV9maWxl KCZrZGV2LT5rb2JqLCAmZGV2X2F0dHJfbGxjX2Nsb3NfbW9kZXMuYXR0cik7CisJfQorCiAJaWYg KElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlz eXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRycyk7CiAJZWxzZQotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=