From mboxrd@z Thu Jan 1 00:00:00 1970 From: Prathap Kumar Valsan Subject: [PATCH] drm/i915/tgl: Add sysfs interface to control class-of-service Date: Sun, 25 Aug 2019 18:48:01 -0400 Message-ID: <20190825224801.19117-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id ECE586E138 for ; Sun, 25 Aug 2019 22:31:24 +0000 (UTC) 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 VG8gcHJvdmlkZSBzaGFyZWQgbGFzdC1sZXZlbC1jYWNoZSBpc29sYXRpb24gdG8gY3B1IHdvcmts b2FkcyBydW5uaW5nCmNvbmN1cnJlbnRseSB3aXRoIGdwdSB3b3JrbG9hZHMsIHRoZSBncHUgYWxs b2NhdGlvbiBvZiBjYWNoZSBsaW5lcyBuZWVkcwp0byBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4g d2F5cy4gQ3VycmVudGx5IEdQVSBoYXJkd2FyZSBzdXBwb3J0cyBmb3VyCmNsYXNzLW9mLXNlcnZp Y2UoQ0xPUykgbGV2ZWxzIGFuZCB0aGVyZSBpcyBhbiBhc3NvY2lhdGVkIHdheS1tYXNrIGZvcgpl YWNoIENMT1MuCgpIYXJkd2FyZSBzdXBwb3J0cyByZWFkaW5nIHN1cHBvcnRlZCB3YXktbWFzayBj b25maWd1cmF0aW9uIGZvciBHUFUgdXNpbmcKYSBiaW9zIHBjb2RlIGludGVyZmFjZS4gVGhlIHN1 cHBvcnRlZCB3YXktbWFza3MgYW5kIHRoZSBvbmUgY3VycmVudGx5CmFjdGl2ZSBpcyBjb21tdW5p Y2F0ZWQgdG8gdXNlcnNwYWNlIHZpYSBhIHN5c2ZzIGZpbGUtLWNsb3NjdHJsLiBBZG1pbiB1c2Vy CmNhbiB0aGVuIHNlbGVjdCBhIG5ldyBtYXNrIGJ5IHdyaXRpbmcgdGhlIG1hc2sgdmFsdWUgdG8g dGhlIGZpbGUuCgpOb3RlIG9mIENhdXRpb246IFJlc3RyaWN0aW5nIGNhY2hlIHdheXMgdXNpbmcg dGhpcyBtZWNoYW5pc20gcHJlc2VudHMgYQpsYXJnZXIgYXR0YWNrIHN1cmZhY2UgZm9yIHNpZGUt Y2hhbm5lbCBhdHRhY2tzLgoKRXhhbXBsZSB1c2FnZToKVGhlIGFjdGl2ZSB3YXktbWFzayBpcyBo aWdobGlnaHRlZCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzLgo+IGNhdCAvc3lzL2NsYXNzL2RybS9j YXJkMC9jbG9zY3RybApbMHhmZmZmXSAweGZmMDAgMHhjMDAwIDB4ODAwMAoKQ0xPUzAgaXMgY3Vy cmVudGx5IGFjdGl2ZS4KCj4gZWNobyAweDgwMDAgPiAvc3lzL2NsYXNzL2RybS9jYXJkMC9jbG9z Y3RybAo+IGNhdCAvc3lzL2NsYXNzL2RybS9jYXJkMC9jbG9zY3RybAoweGZmZmYgMHhmZjAwIDB4 YzAwMCBbMHg4MDAwXQoKQ0xPUzMgaXMgY3VycmVudGx5IGFjdGl2ZQoKU2lnbmVkLW9mZi1ieTog UHJhdGhhcCBLdW1hciBWYWxzYW4gPHByYXRoYXAua3VtYXIudmFsc2FuQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgfCA1NyArKysrKysrKysrKysr KysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5oIHwgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDggKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5jICAgIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxl cyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9tb2NzLmMKaW5kZXggNzI4NzA0YmJiZTE4Li5kZDEzZTYxOTQ0ZmQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs dWRlICJpbnRlbF9ndC5oIgogI2luY2x1ZGUgImludGVsX21vY3MuaCIKICNpbmNsdWRlICJpbnRl bF9scmMuaCIKKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgogCiAvKiBzdHJ1Y3R1cmVzIHJl cXVpcmVkICovCiBzdHJ1Y3QgZHJtX2k5MTVfbW9jc19lbnRyeSB7CkBAIC01MSw2ICs1Miw3IEBA IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHsKICNkZWZpbmUgTEVfU0NGKHZhbHVlKQkJKCh2 YWx1ZSkgPDwgMTQpCiAjZGVmaW5lIExFX0NPUyh2YWx1ZSkJCSgodmFsdWUpIDw8IDE1KQogI2Rl ZmluZSBMRV9TU0UodmFsdWUpCQkoKHZhbHVlKSA8PCAxNykKKyNkZWZpbmUgTEVfQ09TX01BU0sJ CUdFTk1BU0soMTYsIDE1KQogCiAvKiBEZWZpbmVzIGZvciB0aGUgdGFibGVzIChMTkNGTU9DUzAg LSBMTkNGTU9DUzMxKSAtIHR3byBlbnRyaWVzIHBlciB3b3JkICovCiAjZGVmaW5lIEwzX0VTQyh2 YWx1ZSkJCSgodmFsdWUpIDw8IDApCkBAIC00MDgsMTAgKzQxMCwxMyBAQCB2b2lkIGludGVsX21v Y3NfaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJCSAgICAg IHVudXNlZF92YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX21vY3NfaW5pdF9nbG9iYWwo c3RydWN0IGludGVsX2d0ICpndCkKK3ZvaWQgaW50ZWxfbW9jc19pbml0X2dsb2JhbChzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5 MTU7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfbW9jc190YWJsZSB0YWJsZTsKKwl1bnNpZ25lZCBpbnQgYWN0aXZlX2Nsb3M7CisJ dTMyIHZhbHVlLCB1bnVzZWRfdmFsdWU7CiAJdW5zaWduZWQgaW50IGluZGV4OwogCiAJR0VNX0JV R19PTighSEFTX0dMT0JBTF9NT0NTX1JFR0lTVEVSUyhndC0+aTkxNSkpOwpAQCAtNDIyLDIwICs0 MjcsMzEgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9jc19pbml0X2dsb2JhbChzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQogCWlmIChHRU1fREVCVUdfV0FSTl9PTih0YWJsZS5zaXplID4gdGFibGUubl9lbnRy aWVzKSkKIAkJcmV0dXJuOwogCi0JZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUuc2l6ZTsg aW5kZXgrKykKKwlhY3RpdmVfY2xvcyA9IGF0b21pY19yZWFkKCZpOTE1LT5jbG9zLmFjdGl2ZV9j bG9zKTsKKworCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLnNpemU7IGluZGV4KyspIHsK KwkJdmFsdWUgPSB0YWJsZS50YWJsZVtpbmRleF0uY29udHJvbF92YWx1ZTsKKwkJdmFsdWUgJj0g fkxFX0NPU19NQVNLOworCQl2YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19NQVNLLCBhY3RpdmVf Y2xvcyk7CisKIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBHRU4xMl9HTE9C QUxfTU9DUyhpbmRleCksCi0JCQkJICAgdGFibGUudGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUp OworCQkJCSAgIHZhbHVlKTsKKwl9CiAKIAkvKgogCSAqIE9rLCBub3cgc2V0IHRoZSB1bnVzZWQg ZW50cmllcyB0byB0aGUgaW52YWxpZCBlbnRyeSAoaW5kZXggMCkuIFRoZXNlCiAJICogZW50cmll cyBhcmUgb2ZmaWNpYWxseSB1bmRlZmluZWQgYW5kIG5vIGNvbnRyYWN0IGZvciB0aGUgY29udGVu dHMgYW5kCiAJICogc2V0dGluZ3MgaXMgZ2l2ZW4gZm9yIHRoZXNlIGVudHJpZXMuCiAJICovCisJ dW51c2VkX3ZhbHVlID0gdGFibGUudGFibGVbMF0uY29udHJvbF92YWx1ZTsKKwl1bnVzZWRfdmFs dWUgJj0gfkxFX0NPU19NQVNLOworCXVudXNlZF92YWx1ZSB8PSBGSUVMRF9QUkVQKExFX0NPU19N QVNLLCBhY3RpdmVfY2xvcyk7CisKIAlmb3IgKDsgaW5kZXggPCB0YWJsZS5uX2VudHJpZXM7IGlu ZGV4KyspCiAJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCiAJCQkJICAgR0VOMTJfR0xPQkFM X01PQ1MoaW5kZXgpLAotCQkJCSAgIHRhYmxlLnRhYmxlWzBdLmNvbnRyb2xfdmFsdWUpOworCQkJ CSAgIHVudXNlZF92YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2NvbnRyb2xfdGFi bGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCkBAIC02MjUsMTAgKzY0MSw0MSBAQCBpbnQgaW50 ZWxfbW9jc19lbWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCXJldHVybiAwOwogfQogCitz dGF0aWMgdm9pZCBpbnRlbF9yZWFkX2Nsb3Nfd2F5X21hc2soc3RydWN0IGludGVsX2d0ICpndCkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OworCXN0cnVjdCBk cm1faTkxNV9tb2NzX3RhYmxlIHRhYmxlOworCWludCByZXQsIGk7CisJdTMyIHZhbDsKKworCWlm ICghZ2V0X21vY3Nfc2V0dGluZ3MoZ3QsICZ0YWJsZSkpCisJCXJldHVybjsKKworCS8qIENPUyBp cyBzYW1lIGZvciBhbGwgZW50cmllcyAqLworCWF0b21pY19zZXQoJmk5MTUtPmNsb3MuYWN0aXZl X2Nsb3MsCisJCSAgIEZJRUxEX0dFVChMRV9DT1NfTUFTSywgZ2V0X2VudHJ5X2NvbnRyb2woJnRh YmxlLCAwKSkpOworCWZvciAoaSA9IDA7IGkgPCBOVU1fT0ZfQ0xPUzsgaSsrKSB7CisJCXZhbCA9 IGk7CisJCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwKKwkJCQkJICAgICBJQ0xf UENPREVfTExDX0NPU19XQVlfTUFTS19JTkZPLAorCQkJCQkgICAgICZ2YWwsIE5VTEwpOworCQlp ZiAocmV0KSB7CisJCQlEUk1fRVJST1IoIk1haWxib3ggcmVhZCBlcnJvciA9ICVkXG4iLCByZXQp OworCQkJcmV0dXJuOworCQl9CisKKwkJaTkxNS0+Y2xvcy53YXlfbWFza1tpXSA9IHZhbDsKKwl9 CisKKwlpOTE1LT5jbG9zLnN1cHBvcnRfd2F5X21hc2tfcmVhZCA9IHRydWU7Cit9CisKIHZvaWQg aW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CiAJaW50ZWxfbW9jc19pbml0 X2wzY2NfdGFibGUoZ3QpOwogCi0JaWYgKEhBU19HTE9CQUxfTU9DU19SRUdJU1RFUlMoZ3QtPmk5 MTUpKQorCWlmIChIQVNfR0xPQkFMX01PQ1NfUkVHSVNURVJTKGd0LT5pOTE1KSkgeworCQlpbnRl bF9yZWFkX2Nsb3Nfd2F5X21hc2soZ3QpOwogCQlpbnRlbF9tb2NzX2luaXRfZ2xvYmFsKGd0KTsK Kwl9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmgKaW5kZXggMmFlODE2YjdjYTE5 Li5lNjRlMWIxMDQ3NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X21vY3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmgKQEAgLTUz LDYgKzUzLDcgQEAgc3RydWN0IGk5MTVfcmVxdWVzdDsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3M7 CiBzdHJ1Y3QgaW50ZWxfZ3Q7CiAKK3ZvaWQgaW50ZWxfbW9jc19pbml0X2dsb2JhbChzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KTsKIHZvaWQgaW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3Qp Owogdm9pZCBpbnRlbF9tb2NzX2luaXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGI0MjY1MWEzODdkOS4uMGUyNTA0 MTZjNWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE2MjEsNiArMTYyMSwxNCBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWJvb2wgZGlzdHJ1c3RfYmlvc193bTsKIAl9IHdt OwogCisJLyogTGFzdCBMZXZlbCBDYWNoZSAgQ2xhc3Mgb2YgU2VydmljZSAqLworCXN0cnVjdCB7 CisJCWJvb2wgc3VwcG9ydF93YXlfbWFza19yZWFkOworCQlhdG9taWNfdCBhY3RpdmVfY2xvczsK KyNkZWZpbmUgTlVNX09GX0NMT1MgNAorCQl1MTYgd2F5X21hc2tbTlVNX09GX0NMT1NdOworCX0g Y2xvczsKKwogCXN0cnVjdCBkcmFtX2luZm8gewogCQlib29sIHZhbGlkOwogCQlib29sIGlzXzE2 Z2JfZGltbTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDAyZTFlZjEwYzQ3ZS4uMzk5YWNi N2EzNmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTg4NDUsNiArODg0NSw3IEBAIGVu dW0gewogI2RlZmluZSAgIElDTF9QQ09ERV9NRU1fU1VCU1lTWVNURU1fSU5GTwkweGQKICNkZWZp bmUgICAgIElDTF9QQ09ERV9NRU1fU1NfUkVBRF9HTE9CQUxfSU5GTwkoMHgwIDw8IDgpCiAjZGVm aW5lICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfUUdWX1BPSU5UX0lORk8ocG9pbnQpCSgoKHBv aW50KSA8PCAxNikgfCAoMHgxIDw8IDgpKQorI2RlZmluZSAgIElDTF9QQ09ERV9MTENfQ09TX1dB WV9NQVNLX0lORk8JMHgxZAogI2RlZmluZSAgIEdFTjZfUENPREVfUkVBRF9EX0NPTVAJCTB4MTAK ICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX0RfQ09NUAkJMHgxMQogI2RlZmluZSAgIEhTV19Q Q09ERV9ERV9XUklURV9GUkVRX1JFUQkJMHgxNwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCmlu ZGV4IGQ4YTNiMTgwYzA4NC4uNmU2MWJhYjk1YTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNm cy5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiaTkxNV9zeXNmcy5oIgogI2luY2x1ZGUg ImludGVsX3BtLmgiCiAjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKKyNpbmNsdWRlICJndC9p bnRlbF9tb2NzLmgiCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmtk ZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2KQogewpAQCAtMjU3LDYgKzI1OCw2 MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZHBmX2F0dHJzXzEgPSB7CiAJ LnByaXZhdGUgPSAodm9pZCAqKTEKIH07CiAKK3NzaXplX3QgY2xvc2N0cmxfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICprZGV2LAorCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlu b3JfdG9faTkxNShrZGV2KTsKKwlzc2l6ZV90IGxlbiA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgTlVNX09GX0NMT1M7IGkrKykgeworCQlpZiAoaSA9PSBhdG9taWNfcmVhZCgmZGV2 X3ByaXYtPmNsb3MuYWN0aXZlX2Nsb3MpKQorCQkJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwg UEFHRV9TSVpFLCAiJXMweCV4JXMgIiwKKwkJCQkJIlsiLCBkZXZfcHJpdi0+Y2xvcy53YXlfbWFz a1tpXSwgIl0iKTsKKwkJZWxzZQorCQkJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9T SVpFLCAiMHgleCAiLAorCQkJCQlkZXZfcHJpdi0+Y2xvcy53YXlfbWFza1tpXSk7CisJfQorCWxl biArPSBzbnByaW50ZihidWYgKyBsZW4sIFBBR0VfU0laRSwgIlxuIik7CisKKwlyZXR1cm4gbGVu OworfQorCitzc2l6ZV90IGNsb3NjdHJsX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCisJCSAg ICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJICAgICAgIGNvbnN0IGNoYXIg KmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKKwl1OCBhY3RpdmVfY2xvcywgY2xvc19pbmRl eDsKKwlib29sIHZhbGlkX21hc2sgPSBmYWxzZTsKKwlzc2l6ZV90IHJldDsKKwl1MTYgd2F5X21h c2s7CisKKwlyZXQgPSBrc3RydG91MTYoYnVmLCAwLCAmd2F5X21hc2spOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKKwlhY3RpdmVfY2xvcyA9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Y2xv cy5hY3RpdmVfY2xvcyk7CisKKwlpZiAoZGV2X3ByaXYtPmNsb3Mud2F5X21hc2tbYWN0aXZlX2Ns b3NdID09IHdheV9tYXNrKQorCQlyZXR1cm4gY291bnQ7CisKKwlmb3IgKGNsb3NfaW5kZXggPSAw OyBjbG9zX2luZGV4IDwgTlVNX09GX0NMT1M7IGNsb3NfaW5kZXgrKykgeworCQlpZiAoZGV2X3By aXYtPmNsb3Mud2F5X21hc2tbY2xvc19pbmRleF0gPT0gd2F5X21hc2spIHsKKwkJCWF0b21pY19z ZXQoJmRldl9wcml2LT5jbG9zLmFjdGl2ZV9jbG9zLCBjbG9zX2luZGV4KTsKKwkJCXZhbGlkX21h c2sgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIXZhbGlkX21hc2spCisJCXJl dHVybiAtRUlOVkFMOworCisJaW50ZWxfbW9jc19pbml0X2dsb2JhbCgmZGV2X3ByaXYtPmd0KTsK KworCXJldHVybiBjb3VudDsKK30KK3N0YXRpYyBERVZJQ0VfQVRUUl9SVyhjbG9zY3RybCk7CisK IHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYs CiAJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CkBA IC01NzYsNiArNjMzLDEzIEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGRldmljZSAqa2RldiA9IGRldl9wcml2LT5kcm0u cHJpbWFyeS0+a2RldjsKIAlpbnQgcmV0OwogCisJaWYgKGRldl9wcml2LT5jbG9zLnN1cHBvcnRf d2F5X21hc2tfcmVhZCkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZSgma2Rldi0+a29iaiwK KwkJCQkJJmRldl9hdHRyX2Nsb3NjdHJsLmF0dHIpOworCQlpZiAocmV0KQorCQkJRFJNX0VSUk9S KCJMTEMgQ09TIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7CisJfQorCiAjaWZkZWYgQ09ORklHX1BN CiAJaWYgKEhBU19SQzYoZGV2X3ByaXYpKSB7CiAJCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKCZr ZGV2LT5rb2JqLApAQCAtNjI2LDYgKzY5MCw5IEBAIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlpOTE1X3RlYXJkb3duX2Vycm9y X2NhcHR1cmUoa2Rldik7CiAKKwlpZiAoZGV2X3ByaXYtPmNsb3Muc3VwcG9ydF93YXlfbWFza19y ZWFkKQorCQlzeXNmc19yZW1vdmVfZmlsZSgma2Rldi0+a29iaiwgJmRldl9hdHRyX2Nsb3NjdHJs LmF0dHIpOworCiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQogCQlzeXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRycyk7 CiAJZWxzZQotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=