From mboxrd@z Thu Jan 1 00:00:00 1970 From: Prathap Kumar Valsan Subject: [PATCH v2] drm/i915/tgl: Add sysfs interface to control class-of-service Date: Sun, 25 Aug 2019 19:35:27 -0400 Message-ID: <20190825233527.17841-1-prathap.kumar.valsan@intel.com> References: <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 DA6D689130 for ; Sun, 25 Aug 2019 23:18:52 +0000 (UTC) In-Reply-To: <20190825224801.19117-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 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 CkNoYW5nZXMgaW4gdjI6CkRlY2xhcmUgY2xvc2N0cmxfc2hvdyBhbmQgY2xvc2N0cmxfc3RvcmUg YXMgc3RhdGljIGZ1bmN0aW9ucy4KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3Mu YyB8IDU3ICsrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9tb2NzLmggfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg fCAgOCArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgMSArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgfCA2NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwppbmRleCA3Mjg3MDRiYmJl MTguLmRkMTNlNjE5NDRmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwpAQCAt MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImludGVsX2d0LmgiCiAjaW5jbHVkZSAiaW50ZWxfbW9j cy5oIgogI2luY2x1ZGUgImludGVsX2xyYy5oIgorI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgi CiAKIC8qIHN0cnVjdHVyZXMgcmVxdWlyZWQgKi8KIHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5 IHsKQEAgLTUxLDYgKzUyLDcgQEAgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgewogI2RlZmlu ZSBMRV9TQ0YodmFsdWUpCQkoKHZhbHVlKSA8PCAxNCkKICNkZWZpbmUgTEVfQ09TKHZhbHVlKQkJ KCh2YWx1ZSkgPDwgMTUpCiAjZGVmaW5lIExFX1NTRSh2YWx1ZSkJCSgodmFsdWUpIDw8IDE3KQor I2RlZmluZSBMRV9DT1NfTUFTSwkJR0VOTUFTSygxNiwgMTUpCiAKIC8qIERlZmluZXMgZm9yIHRo ZSB0YWJsZXMgKExOQ0ZNT0NTMCAtIExOQ0ZNT0NTMzEpIC0gdHdvIGVudHJpZXMgcGVyIHdvcmQg Ki8KICNkZWZpbmUgTDNfRVNDKHZhbHVlKQkJKCh2YWx1ZSkgPDwgMCkKQEAgLTQwOCwxMCArNDEw LDEzIEBAIHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiAJCQkJICAgICAgdW51c2VkX3ZhbHVlKTsKIH0KIAotc3RhdGljIHZvaWQgaW50 ZWxfbW9jc19pbml0X2dsb2JhbChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQordm9pZCBpbnRlbF9tb2Nz X2luaXRfZ2xvYmFsKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBn dC0+dW5jb3JlOwogCXN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHRhYmxlOworCXVuc2lnbmVk IGludCBhY3RpdmVfY2xvczsKKwl1MzIgdmFsdWUsIHVudXNlZF92YWx1ZTsKIAl1bnNpZ25lZCBp bnQgaW5kZXg7CiAKIAlHRU1fQlVHX09OKCFIQVNfR0xPQkFMX01PQ1NfUkVHSVNURVJTKGd0LT5p OTE1KSk7CkBAIC00MjIsMjAgKzQyNywzMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2NzX2luaXRf Z2xvYmFsKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJaWYgKEdFTV9ERUJVR19XQVJOX09OKHRhYmxl LnNpemUgPiB0YWJsZS5uX2VudHJpZXMpKQogCQlyZXR1cm47CiAKLQlmb3IgKGluZGV4ID0gMDsg aW5kZXggPCB0YWJsZS5zaXplOyBpbmRleCsrKQorCWFjdGl2ZV9jbG9zID0gYXRvbWljX3JlYWQo Jmk5MTUtPmNsb3MuYWN0aXZlX2Nsb3MpOworCisJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFi bGUuc2l6ZTsgaW5kZXgrKykgeworCQl2YWx1ZSA9IHRhYmxlLnRhYmxlW2luZGV4XS5jb250cm9s X3ZhbHVlOworCQl2YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJCXZhbHVlIHw9IEZJRUxEX1BSRVAo TEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKKwogCQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3Jl LAogCQkJCSAgIEdFTjEyX0dMT0JBTF9NT0NTKGluZGV4KSwKLQkJCQkgICB0YWJsZS50YWJsZVtp bmRleF0uY29udHJvbF92YWx1ZSk7CisJCQkJICAgdmFsdWUpOworCX0KIAogCS8qCiAJICogT2ss IG5vdyBzZXQgdGhlIHVudXNlZCBlbnRyaWVzIHRvIHRoZSBpbnZhbGlkIGVudHJ5IChpbmRleCAw KS4gVGhlc2UKIAkgKiBlbnRyaWVzIGFyZSBvZmZpY2lhbGx5IHVuZGVmaW5lZCBhbmQgbm8gY29u dHJhY3QgZm9yIHRoZSBjb250ZW50cyBhbmQKIAkgKiBzZXR0aW5ncyBpcyBnaXZlbiBmb3IgdGhl c2UgZW50cmllcy4KIAkgKi8KKwl1bnVzZWRfdmFsdWUgPSB0YWJsZS50YWJsZVswXS5jb250cm9s X3ZhbHVlOworCXVudXNlZF92YWx1ZSAmPSB+TEVfQ09TX01BU0s7CisJdW51c2VkX3ZhbHVlIHw9 IEZJRUxEX1BSRVAoTEVfQ09TX01BU0ssIGFjdGl2ZV9jbG9zKTsKKwogCWZvciAoOyBpbmRleCA8 IHRhYmxlLm5fZW50cmllczsgaW5kZXgrKykKIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwK IAkJCQkgICBHRU4xMl9HTE9CQUxfTU9DUyhpbmRleCksCi0JCQkJICAgdGFibGUudGFibGVbMF0u Y29udHJvbF92YWx1ZSk7CisJCQkJICAgdW51c2VkX3ZhbHVlKTsKIH0KIAogc3RhdGljIGludCBl bWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKQEAgLTYyNSwx MCArNjQxLDQxIEBAIGludCBpbnRlbF9tb2NzX2VtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVsX3JlYWRfY2xvc193YXlfbWFzayhz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g Z3QtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgdGFibGU7CisJaW50IHJldCwg aTsKKwl1MzIgdmFsOworCisJaWYgKCFnZXRfbW9jc19zZXR0aW5ncyhndCwgJnRhYmxlKSkKKwkJ cmV0dXJuOworCisJLyogQ09TIGlzIHNhbWUgZm9yIGFsbCBlbnRyaWVzICovCisJYXRvbWljX3Nl dCgmaTkxNS0+Y2xvcy5hY3RpdmVfY2xvcywKKwkJICAgRklFTERfR0VUKExFX0NPU19NQVNLLCBn ZXRfZW50cnlfY29udHJvbCgmdGFibGUsIDApKSk7CisJZm9yIChpID0gMDsgaSA8IE5VTV9PRl9D TE9TOyBpKyspIHsKKwkJdmFsID0gaTsKKwkJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChp OTE1LAorCQkJCQkgICAgIElDTF9QQ09ERV9MTENfQ09TX1dBWV9NQVNLX0lORk8sCisJCQkJCSAg ICAgJnZhbCwgTlVMTCk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigiTWFpbGJveCByZWFk IGVycm9yID0gJWRcbiIsIHJldCk7CisJCQlyZXR1cm47CisJCX0KKworCQlpOTE1LT5jbG9zLndh eV9tYXNrW2ldID0gdmFsOworCX0KKworCWk5MTUtPmNsb3Muc3VwcG9ydF93YXlfbWFza19yZWFk ID0gdHJ1ZTsKK30KKwogdm9pZCBpbnRlbF9tb2NzX2luaXQoc3RydWN0IGludGVsX2d0ICpndCkK IHsKIAlpbnRlbF9tb2NzX2luaXRfbDNjY190YWJsZShndCk7CiAKLQlpZiAoSEFTX0dMT0JBTF9N T0NTX1JFR0lTVEVSUyhndC0+aTkxNSkpCisJaWYgKEhBU19HTE9CQUxfTU9DU19SRUdJU1RFUlMo Z3QtPmk5MTUpKSB7CisJCWludGVsX3JlYWRfY2xvc193YXlfbWFzayhndCk7CiAJCWludGVsX21v Y3NfaW5pdF9nbG9iYWwoZ3QpOworCX0KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX21vY3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3Mu aAppbmRleCAyYWU4MTZiN2NhMTkuLmU2NGUxYjEwNDc1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX21vY3MuaApAQCAtNTMsNiArNTMsNyBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0Owogc3Ry dWN0IGludGVsX2VuZ2luZV9jczsKIHN0cnVjdCBpbnRlbF9ndDsKIAordm9pZCBpbnRlbF9tb2Nz X2luaXRfZ2xvYmFsKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwogdm9pZCBpbnRlbF9tb2NzX2luaXQo c3RydWN0IGludGVsX2d0ICpndCk7CiB2b2lkIGludGVsX21vY3NfaW5pdF9lbmdpbmUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg YjQyNjUxYTM4N2Q5Li4wZTI1MDQxNmM1YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt MTYyMSw2ICsxNjIxLDE0IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJYm9vbCBkaXN0 cnVzdF9iaW9zX3dtOwogCX0gd207CiAKKwkvKiBMYXN0IExldmVsIENhY2hlICBDbGFzcyBvZiBT ZXJ2aWNlICovCisJc3RydWN0IHsKKwkJYm9vbCBzdXBwb3J0X3dheV9tYXNrX3JlYWQ7CisJCWF0 b21pY190IGFjdGl2ZV9jbG9zOworI2RlZmluZSBOVU1fT0ZfQ0xPUyA0CisJCXUxNiB3YXlfbWFz a1tOVU1fT0ZfQ0xPU107CisJfSBjbG9zOworCiAJc3RydWN0IGRyYW1faW5mbyB7CiAJCWJvb2wg dmFsaWQ7CiAJCWJvb2wgaXNfMTZnYl9kaW1tOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXgg MDJlMWVmMTBjNDdlLi4zOTlhY2I3YTM2ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAt ODg0NSw2ICs4ODQ1LDcgQEAgZW51bSB7CiAjZGVmaW5lICAgSUNMX1BDT0RFX01FTV9TVUJTWVNZ U1RFTV9JTkZPCTB4ZAogI2RlZmluZSAgICAgSUNMX1BDT0RFX01FTV9TU19SRUFEX0dMT0JBTF9J TkZPCSgweDAgPDwgOCkKICNkZWZpbmUgICAgIElDTF9QQ09ERV9NRU1fU1NfUkVBRF9RR1ZfUE9J TlRfSU5GTyhwb2ludCkJKCgocG9pbnQpIDw8IDE2KSB8ICgweDEgPDwgOCkpCisjZGVmaW5lICAg SUNMX1BDT0RFX0xMQ19DT1NfV0FZX01BU0tfSU5GTwkweDFkCiAjZGVmaW5lICAgR0VONl9QQ09E RV9SRUFEX0RfQ09NUAkJMHgxMAogI2RlZmluZSAgIEdFTjZfUENPREVfV1JJVEVfRF9DT01QCQkw eDExCiAjZGVmaW5lICAgSFNXX1BDT0RFX0RFX1dSSVRFX0ZSRVFfUkVRCQkweDE3CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggZDhhM2IxODBjMDg0Li5iNTMxNDM0MTYzOTYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJpOTE1 X3N5c2ZzLmgiCiAjaW5jbHVkZSAiaW50ZWxfcG0uaCIKICNpbmNsdWRlICJpbnRlbF9zaWRlYmFu ZC5oIgorI2luY2x1ZGUgImd0L2ludGVsX21vY3MuaCIKIAogc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqa2Rldl9taW5vcl90b19pOTE1KHN0cnVjdCBkZXZpY2UgKmtkZXYp CiB7CkBAIC0yNTcsNiArMjU4LDYyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0 ZSBkcGZfYXR0cnNfMSA9IHsKIAkucHJpdmF0ZSA9ICh2b2lkICopMQogfTsKIAorc3RhdGljIHNz aXplX3QgY2xvc2N0cmxfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAorCQkJICAgICBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKKwlzc2l6ZV90IGxl biA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX09GX0NMT1M7IGkrKykgewor CQlpZiAoaSA9PSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmNsb3MuYWN0aXZlX2Nsb3MpKQorCQkJ bGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFLCAiJXMweCV4JXMgIiwKKwkJCQkJ IlsiLCBkZXZfcHJpdi0+Y2xvcy53YXlfbWFza1tpXSwgIl0iKTsKKwkJZWxzZQorCQkJbGVuICs9 IHNucHJpbnRmKGJ1ZiArIGxlbiwgUEFHRV9TSVpFLCAiMHgleCAiLAorCQkJCQlkZXZfcHJpdi0+ Y2xvcy53YXlfbWFza1tpXSk7CisJfQorCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIFBBR0Vf U0laRSwgIlxuIik7CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgc3NpemVfdCBjbG9zY3Ry bF9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAorCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCisJCQkgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUo a2Rldik7CisJdTggYWN0aXZlX2Nsb3MsIGNsb3NfaW5kZXg7CisJYm9vbCB2YWxpZF9tYXNrID0g ZmFsc2U7CisJc3NpemVfdCByZXQ7CisJdTE2IHdheV9tYXNrOworCisJcmV0ID0ga3N0cnRvdTE2 KGJ1ZiwgMCwgJndheV9tYXNrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYWN0aXZl X2Nsb3MgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmNsb3MuYWN0aXZlX2Nsb3MpOworCisJaWYg KGRldl9wcml2LT5jbG9zLndheV9tYXNrW2FjdGl2ZV9jbG9zXSA9PSB3YXlfbWFzaykKKwkJcmV0 dXJuIGNvdW50OworCisJZm9yIChjbG9zX2luZGV4ID0gMDsgY2xvc19pbmRleCA8IE5VTV9PRl9D TE9TOyBjbG9zX2luZGV4KyspIHsKKwkJaWYgKGRldl9wcml2LT5jbG9zLndheV9tYXNrW2Nsb3Nf aW5kZXhdID09IHdheV9tYXNrKSB7CisJCQlhdG9taWNfc2V0KCZkZXZfcHJpdi0+Y2xvcy5hY3Rp dmVfY2xvcywgY2xvc19pbmRleCk7CisJCQl2YWxpZF9tYXNrID0gdHJ1ZTsKKwkJCWJyZWFrOwor CQl9CisJfQorCisJaWYgKCF2YWxpZF9tYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWludGVs X21vY3NfaW5pdF9nbG9iYWwoJmRldl9wcml2LT5ndCk7CisKKwlyZXR1cm4gY291bnQ7Cit9Citz dGF0aWMgREVWSUNFX0FUVFJfUlcoY2xvc2N0cmwpOworCiBzdGF0aWMgc3NpemVfdCBndF9hY3Rf ZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAogCQkJCSAgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewpAQCAtNTc2LDYgKzYzMywxMyBAQCB2b2lk IGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0 cnVjdCBkZXZpY2UgKmtkZXYgPSBkZXZfcHJpdi0+ZHJtLnByaW1hcnktPmtkZXY7CiAJaW50IHJl dDsKIAorCWlmIChkZXZfcHJpdi0+Y2xvcy5zdXBwb3J0X3dheV9tYXNrX3JlYWQpIHsKKwkJcmV0 ID0gc3lzZnNfY3JlYXRlX2ZpbGUoJmtkZXYtPmtvYmosCisJCQkJCSZkZXZfYXR0cl9jbG9zY3Ry bC5hdHRyKTsKKwkJaWYgKHJldCkKKwkJCURSTV9FUlJPUigiTExDIENPUyBzeXNmcyBzZXR1cCBm YWlsZWRcbiIpOworCX0KKwogI2lmZGVmIENPTkZJR19QTQogCWlmIChIQVNfUkM2KGRldl9wcml2 KSkgewogCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwKQEAgLTYyNiw2ICs2 OTAsOSBAQCB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCiAJaTkxNV90ZWFyZG93bl9lcnJvcl9jYXB0dXJlKGtkZXYpOwogCisJaWYg KGRldl9wcml2LT5jbG9zLnN1cHBvcnRfd2F5X21hc2tfcmVhZCkKKwkJc3lzZnNfcmVtb3ZlX2Zp bGUoJmtkZXYtPmtvYmosICZkZXZfYXR0cl9jbG9zY3RybC5hdHRyKTsKKwogCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJc3lzZnNfcmVt b3ZlX2ZpbGVzKCZrZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwogCWVsc2UKLS0gCjIuMjAuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4