From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rex Zhu Subject: [PATCH 4/5] drm/amdgpu: Add fan RPM setting via sysfs Date: Sun, 30 Sep 2018 14:17:58 +0800 Message-ID: <1538288279-11428-4-git-send-email-Rex.Zhu@amd.com> References: <1538288279-11428-1-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1538288279-11428-1-git-send-email-Rex.Zhu-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Rex Zhu QWRkIGZhbjFfdGFyZ2V0IGZvciBnZXQvc2V0IGZhbiBzcGVlZCBpbiBSUE0gdW5pdApBZGQgZmFu MV9taW4vZmFuMV9tYXggZm9yIGdldCBtaW4sIG1heCBmYW4gc3BlZWQgaW4gUlBNIHVuaXQKQWRk IGZhbjFfZW5hYmxlIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBmYW4xIHNlbnNvcgoKdjI6IHF1ZXJ5 IHRoZSBtaW4vbWF4IHJwbSBncHUgc3VwcG9ydCBpbnN0YW5kIG9mIGhhcmRjb2RlLgoKU2lnbmVk LW9mZi1ieTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kcG0uaCAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3BtLmMgICAgICAgICB8IDE5MCArKysrKysrKysrKysrKysrKysrKysr KystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3BwX2ludGVyZmFjZS5oIHwgICAx ICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYyAgfCAgMTkg KysrCiA0IGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcG0uaCBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcG0uaAppbmRleCA0MjU2OGFlLi5mOTcy Y2QxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHBtLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RwbS5oCkBAIC0yNzgsNiAr Mjc4LDkgQEAgZW51bSBhbWRncHVfcGNpZV9nZW4gewogI2RlZmluZSBhbWRncHVfZHBtX2dldF9m YW5fc3BlZWRfcnBtKGFkZXYsIHMpIFwKIAkJKChhZGV2KS0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5n ZXRfZmFuX3NwZWVkX3JwbSkoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLCAocykpCiAKKyNk ZWZpbmUgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3JwbShhZGV2LCBzKSBcCisJCSgoYWRldikt PnBvd2VycGxheS5wcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9ycG0pKChhZGV2KS0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwgKHMpKQorCiAjZGVmaW5lIGFtZGdwdV9kcG1fZ2V0X3NjbGsoYWRldiwgbCkg XAogCQkoKGFkZXYpLT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9zY2xrKChhZGV2KS0+cG93ZXJw bGF5LnBwX2hhbmRsZSwgKGwpKSkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0u YwppbmRleCAxOGQ5ODllLi4xZDg1NzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcG0uYwpAQCAtMTE3Miw2ICsxMTcyLDExIEBAIHN0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21v bl9nZXRfZmFuMV9pbnB1dChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlpbnQgZXJyOwogCXUzMiBzcGVlZCA9 IDA7CisJdTMyIHB3bV9tb2RlOworCisJcHdtX21vZGUgPSBhbWRncHVfZHBtX2dldF9mYW5fY29u dHJvbF9tb2RlKGFkZXYpOworCWlmIChwd21fbW9kZSAhPSBBTURfRkFOX0NUUkxfTUFOVUFMKQor CQlyZXR1cm4gLUVOT0RBVEE7CiAKIAkvKiBDYW4ndCBhZGp1c3QgZmFuIHdoZW4gdGhlIGNhcmQg aXMgb2ZmICovCiAJaWYgICgoYWRldi0+ZmxhZ3MgJiBBTURfSVNfUFgpICYmCkBAIC0xMTg3LDYg KzExOTIsMTUzIEBAIHN0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9nZXRfZmFuMV9pbnB1dChz dHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWlcbiIsIHNwZWVkKTsK IH0KIAorc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX2dldF9mYW4xX21pbihzdHJ1Y3QgZGV2 aWNlICpkZXYsCisJCQkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkJIGNo YXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOworCXUzMiBtaW5fcnBtID0gMDsKKwl1MzIgc2l6ZSA9IHNpemVvZihtaW5fcnBtKTsK KwlpbnQgcjsKKworCWlmICghYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5yZWFkX3NlbnNvcikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyID0gYW1kZ3B1X2RwbV9yZWFkX3NlbnNvcihhZGV2LCBB TURHUFVfUFBfU0VOU09SX01JTl9GQU5fUlBNLAorCQkJCSAgICh2b2lkICopJm1pbl9ycG0sICZz aXplKTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdF X1NJWkUsICIlZFxuIiwgbWluX3JwbSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21v bl9nZXRfZmFuMV9tYXgoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCisJCQkJCSBjaGFyICpidWYpCit7CisJc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgbWF4X3JwbSA9IDA7CisJdTMy IHNpemUgPSBzaXplb2YobWF4X3JwbSk7CisJaW50IHI7CisKKwlpZiAoIWFkZXYtPnBvd2VycGxh eS5wcF9mdW5jcy0+cmVhZF9zZW5zb3IpCisJCXJldHVybiAtRUlOVkFMOworCisJciA9IGFtZGdw dV9kcG1fcmVhZF9zZW5zb3IoYWRldiwgQU1ER1BVX1BQX1NFTlNPUl9NQVhfRkFOX1JQTSwKKwkJ CQkgICAodm9pZCAqKSZtYXhfcnBtLCAmc2l6ZSk7CisJaWYgKHIpCisJCXJldHVybiByOworCisJ cmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIG1heF9ycG0pOworfQorCitz dGF0aWMgc3NpemVfdCBhbWRncHVfaHdtb25fZ2V0X2ZhbjFfdGFyZ2V0KHN0cnVjdCBkZXZpY2Ug KmRldiwKKwkJCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCSAgIGNo YXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOworCWludCBlcnI7CisJdTMyIHJwbSA9IDA7CisJdTMyIHB3bV9tb2RlOworCisJcHdt X21vZGUgPSBhbWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKGFkZXYpOworCWlmIChwd21f bW9kZSAhPSBBTURfRkFOX0NUUkxfTUFOVUFMKQorCQlyZXR1cm4gLUVOT0RBVEE7CisKKwkvKiBD YW4ndCBhZGp1c3QgZmFuIHdoZW4gdGhlIGNhcmQgaXMgb2ZmICovCisJaWYgICgoYWRldi0+Zmxh Z3MgJiBBTURfSVNfUFgpICYmCisJICAgICAoYWRldi0+ZGRldi0+c3dpdGNoX3Bvd2VyX3N0YXRl ICE9IERSTV9TV0lUQ0hfUE9XRVJfT04pKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKSB7CisJCWVyciA9IGFtZGdw dV9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0oYWRldiwgJnJwbSk7CisJCWlmIChlcnIpCisJCQlyZXR1 cm4gZXJyOworCX0KKworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVpXG4iLCBycG0pOworfQorCitz dGF0aWMgc3NpemVfdCBhbWRncHVfaHdtb25fc2V0X2ZhbjFfdGFyZ2V0KHN0cnVjdCBkZXZpY2Ug KmRldiwKKwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAg Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgZXJyOworCXUzMiB2YWx1ZTsKKwl1 MzIgcHdtX21vZGU7CisKKwlwd21fbW9kZSA9IGFtZGdwdV9kcG1fZ2V0X2Zhbl9jb250cm9sX21v ZGUoYWRldik7CisJaWYgKHB3bV9tb2RlICE9IEFNRF9GQU5fQ1RSTF9NQU5VQUwpCisJCXJldHVy biAtRU5PREFUQTsKKworCS8qIENhbid0IGFkanVzdCBmYW4gd2hlbiB0aGUgY2FyZCBpcyBvZmYg Ki8KKwlpZiAgKChhZGV2LT5mbGFncyAmIEFNRF9JU19QWCkgJiYKKwkgICAgIChhZGV2LT5kZGV2 LT5zd2l0Y2hfcG93ZXJfc3RhdGUgIT0gRFJNX1NXSVRDSF9QT1dFUl9PTikpCisJCXJldHVybiAt RUlOVkFMOworCisJZXJyID0ga3N0cnRvdTMyKGJ1ZiwgMTAsICZ2YWx1ZSk7CisJaWYgKGVycikK KwkJcmV0dXJuIGVycjsKKworCWlmIChhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPnNldF9mYW5f c3BlZWRfcnBtKSB7CisJCWVyciA9IGFtZGdwdV9kcG1fc2V0X2Zhbl9zcGVlZF9ycG0oYWRldiwg dmFsdWUpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gY291bnQ7 Cit9CisKK3N0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9nZXRfZmFuMV9lbmFibGUoc3RydWN0 IGRldmljZSAqZGV2LAorCQkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJ CQkJCSAgICBjaGFyICpidWYpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgcHdtX21vZGUgPSAwOworCisJaWYgKCFhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3MtPmdldF9mYW5fY29udHJvbF9tb2RlKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXB3bV9tb2RlID0gYW1kZ3B1X2RwbV9nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2KTsKKwor CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVpXG4iLCBwd21fbW9kZSA9PSBBTURfRkFOX0NUUkxfQVVU TyA/IDAgOiAxKTsKK30KKworc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX3NldF9mYW4xX2Vu YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKKwkJCQkJICAgIGNvbnN0IGNoYXIgKmJ1ZiwKKwkJCQkJICAgIHNpemVfdCBjb3Vu dCkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OworCWludCBlcnI7CisJaW50IHZhbHVlOworCXUzMiBwd21fbW9kZTsKKworCS8qIENhbid0IGFk anVzdCBmYW4gd2hlbiB0aGUgY2FyZCBpcyBvZmYgKi8KKwlpZiAgKChhZGV2LT5mbGFncyAmIEFN RF9JU19QWCkgJiYKKwkgICAgIChhZGV2LT5kZGV2LT5zd2l0Y2hfcG93ZXJfc3RhdGUgIT0gRFJN X1NXSVRDSF9QT1dFUl9PTikpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWVyciA9IGtzdHJ0b2ludChidWYsIDEwLCAmdmFsdWUpOworCWlmIChlcnIpCisJCXJldHVy biBlcnI7CisKKwlpZiAodmFsdWUgPT0gMCkKKwkJcHdtX21vZGUgPSBBTURfRkFOX0NUUkxfQVVU TzsKKwllbHNlIGlmICh2YWx1ZSA9PSAxKQorCQlwd21fbW9kZSA9IEFNRF9GQU5fQ1RSTF9NQU5V QUw7CisJZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWFtZGdwdV9kcG1fc2V0X2Zhbl9jb250 cm9sX21vZGUoYWRldiwgcHdtX21vZGUpOworCisJcmV0dXJuIGNvdW50OworfQorCiBzdGF0aWMg c3NpemVfdCBhbWRncHVfaHdtb25fc2hvd192ZGRnZngoc3RydWN0IGRldmljZSAqZGV2LAogCQkJ CQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJCQkJY2hhciAqYnVmKQpAQCAtMTQw Niw4ICsxNTU4LDE2IEBAIHN0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9zZXRfcG93ZXJfY2Fw KHN0cnVjdCBkZXZpY2UgKmRldiwKICAqCiAgKiAtIHB3bTFfbWF4OiBwdWxzZSB3aWR0aCBtb2R1 bGF0aW9uIGZhbiBjb250cm9sIG1heGltdW0gbGV2ZWwgKDI1NSkKICAqCisgKiAtIGZhbjFfbWlu OiBhbiBtaW5pbXVtIHZhbHVlIFVuaXQ6IHJldm9sdXRpb24vbWluIChSUE0pICgwKQorICoKKyAq IC0gZmFuMV9tYXg6IGFuIG1heG11bSB2YWx1ZSBVbml0OiByZXZvbHV0aW9uL21heCAoUlBNKSAo NjAwMCkKKyAqCiAgKiAtIGZhbjFfaW5wdXQ6IGZhbiBzcGVlZCBpbiBSUE0KICAqCisgKiAtIGZh blsxLSpdX3RhcmdldDogRGVzaXJlZCBmYW4gc3BlZWQgVW5pdDogcmV2b2x1dGlvbi9taW4gKFJQ TSkKKyAqCisgKiAtIGZhblsxLSpdX2VuYWJsZTogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbnNv cnMuMTogRW5hYmxlIDA6IERpc2FibGUKKyAqCiAgKiBZb3UgY2FuIHVzZSBod21vbiB0b29scyBs aWtlIHNlbnNvcnMgdG8gdmlldyB0aGlzIGluZm9ybWF0aW9uIG9uIHlvdXIgc3lzdGVtLgogICoK ICAqLwpAQCAtMTQyMCw2ICsxNTgwLDEwIEBAIHN0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9z ZXRfcG93ZXJfY2FwKHN0cnVjdCBkZXZpY2UgKmRldiwKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FU VFIocHdtMV9taW4sIFNfSVJVR08sIGFtZGdwdV9od21vbl9nZXRfcHdtMV9taW4sIE5VTEwsIDAp Owogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwd20xX21heCwgU19JUlVHTywgYW1kZ3B1X2h3 bW9uX2dldF9wd20xX21heCwgTlVMTCwgMCk7CiBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGZh bjFfaW5wdXQsIFNfSVJVR08sIGFtZGdwdV9od21vbl9nZXRfZmFuMV9pbnB1dCwgTlVMTCwgMCk7 CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGZhbjFfbWluLCBTX0lSVUdPLCBhbWRncHVfaHdt b25fZ2V0X2ZhbjFfbWluLCBOVUxMLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoZmFu MV9tYXgsIFNfSVJVR08sIGFtZGdwdV9od21vbl9nZXRfZmFuMV9tYXgsIE5VTEwsIDApOworc3Rh dGljIFNFTlNPUl9ERVZJQ0VfQVRUUihmYW4xX3RhcmdldCwgU19JUlVHTyB8IFNfSVdVU1IsIGFt ZGdwdV9od21vbl9nZXRfZmFuMV90YXJnZXQsIGFtZGdwdV9od21vbl9zZXRfZmFuMV90YXJnZXQs IDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihmYW4xX2VuYWJsZSwgU19JUlVHTyB8IFNf SVdVU1IsIGFtZGdwdV9od21vbl9nZXRfZmFuMV9lbmFibGUsIGFtZGdwdV9od21vbl9zZXRfZmFu MV9lbmFibGUsIDApOwogc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbjBfaW5wdXQsIFNfSVJV R08sIGFtZGdwdV9od21vbl9zaG93X3ZkZGdmeCwgTlVMTCwgMCk7CiBzdGF0aWMgU0VOU09SX0RF VklDRV9BVFRSKGluMF9sYWJlbCwgU19JUlVHTywgYW1kZ3B1X2h3bW9uX3Nob3dfdmRkZ2Z4X2xh YmVsLCBOVUxMLCAwKTsKIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW4xX2lucHV0LCBTX0lS VUdPLCBhbWRncHVfaHdtb25fc2hvd192ZGRuYiwgTlVMTCwgMCk7CkBAIC0xNDM4LDYgKzE2MDIs MTAgQEAgc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX3NldF9wb3dlcl9jYXAoc3RydWN0IGRl dmljZSAqZGV2LAogCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9taW4uZGV2X2F0dHIuYXR0ciwKIAkm c2Vuc29yX2Rldl9hdHRyX3B3bTFfbWF4LmRldl9hdHRyLmF0dHIsCiAJJnNlbnNvcl9kZXZfYXR0 cl9mYW4xX2lucHV0LmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9mYW4xX21pbi5k ZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfZmFuMV9tYXguZGV2X2F0dHIuYXR0ciwK Kwkmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfdGFyZ2V0LmRldl9hdHRyLmF0dHIsCisJJnNlbnNvcl9k ZXZfYXR0cl9mYW4xX2VuYWJsZS5kZXZfYXR0ci5hdHRyLAogCSZzZW5zb3JfZGV2X2F0dHJfaW4w X2lucHV0LmRldl9hdHRyLmF0dHIsCiAJJnNlbnNvcl9kZXZfYXR0cl9pbjBfbGFiZWwuZGV2X2F0 dHIuYXR0ciwKIAkmc2Vuc29yX2Rldl9hdHRyX2luMV9pbnB1dC5kZXZfYXR0ci5hdHRyLApAQCAt MTQ1NiwxMyArMTYyNCwxNiBAQCBzdGF0aWMgdW1vZGVfdCBod21vbl9hdHRyaWJ1dGVzX3Zpc2li bGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAl1bW9kZV90IGVmZmVjdGl2ZV9tb2RlID0gYXR0ci0+bW9k ZTsKIAotCiAJLyogU2tpcCBmYW4gYXR0cmlidXRlcyBpZiBmYW4gaXMgbm90IHByZXNlbnQgKi8K IAlpZiAoYWRldi0+cG0ubm9fZmFuICYmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMS5k ZXZfYXR0ci5hdHRyIHx8CiAJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX2VuYWJs ZS5kZXZfYXR0ci5hdHRyIHx8CiAJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX21h eC5kZXZfYXR0ci5hdHRyIHx8CiAJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX21p bi5kZXZfYXR0ci5hdHRyIHx8Ci0JICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4xX2lu cHV0LmRldl9hdHRyLmF0dHIpKQorCSAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfZmFuMV9p bnB1dC5kZXZfYXR0ci5hdHRyIHx8CisJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4x X21pbi5kZXZfYXR0ci5hdHRyIHx8CisJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4x X21heC5kZXZfYXR0ci5hdHRyIHx8CisJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4x X3RhcmdldC5kZXZfYXR0ci5hdHRyIHx8CisJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9m YW4xX2VuYWJsZS5kZXZfYXR0ci5hdHRyKSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBTa2lwIGxpbWl0 IGF0dHJpYnV0ZXMgaWYgRFBNIGlzIG5vdCBlbmFibGVkICovCkBAIC0xNDcyLDcgKzE2NDMsMTIg QEAgc3RhdGljIHVtb2RlX3QgaHdtb25fYXR0cmlidXRlc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0 ICprb2JqLAogCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTEuZGV2X2F0dHIuYXR0 ciB8fAogCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTFfZW5hYmxlLmRldl9hdHRy LmF0dHIgfHwKIAkgICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX21heC5kZXZfYXR0 ci5hdHRyIHx8Ci0JICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9taW4uZGV2X2F0 dHIuYXR0cikpCisJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9taW4uZGV2X2F0 dHIuYXR0ciB8fAorCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfaW5wdXQuZGV2 X2F0dHIuYXR0ciB8fAorCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfbWluLmRl dl9hdHRyLmF0dHIgfHwKKwkgICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4xX21heC5k ZXZfYXR0ci5hdHRyIHx8CisJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfZmFuMV90YXJn ZXQuZGV2X2F0dHIuYXR0ciB8fAorCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFf ZW5hYmxlLmRldl9hdHRyLmF0dHIpKQogCQlyZXR1cm4gMDsKIAogCS8qIG1hc2sgZmFuIGF0dHJp YnV0ZXMgaWYgd2UgaGF2ZSBubyBiaW5kaW5ncyBmb3IgdGhpcyBhc2ljIHRvIGV4cG9zZSAqLwpA QCAtMTQ5NywxMCArMTY3MywxOCBAQCBzdGF0aWMgdW1vZGVfdCBod21vbl9hdHRyaWJ1dGVzX3Zp c2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiAJLyogaGlkZSBtYXgvbWluIHZhbHVlcyBpZiB3 ZSBjYW4ndCBib3RoIHF1ZXJ5IGFuZCBtYW5hZ2UgdGhlIGZhbiAqLwogCWlmICgoIWFkZXYtPnBv d2VycGxheS5wcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wZXJjZW50ICYmCiAJICAgICAhYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3BlcmNlbnQpICYmCisJICAgICAoIWFk ZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9ycG0gJiYKKwkgICAgICFhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKSAmJgogCSAgICAoYXR0ciA9 PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTFfbWF4LmRldl9hdHRyLmF0dHIgfHwKIAkgICAgIGF0dHIg PT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX21pbi5kZXZfYXR0ci5hdHRyKSkKIAkJcmV0dXJuIDA7 CiAKKwlpZiAoKCFhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtICYm CisJICAgICAhYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3JwbSkgJiYK KwkgICAgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9mYW4xX21heC5kZXZfYXR0ci5hdHRyIHx8 CisJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfZmFuMV9taW4uZGV2X2F0dHIuYXR0cikp CisJCXJldHVybiAwOworCiAJLyogb25seSBBUFVzIGhhdmUgdmRkbmIgKi8KIAlpZiAoIShhZGV2 LT5mbGFncyAmIEFNRF9JU19BUFUpICYmCiAJICAgIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJf aW4xX2lucHV0LmRldl9hdHRyLmF0dHIgfHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvaW5jbHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1 ZGUva2dkX3BwX2ludGVyZmFjZS5oCmluZGV4IDk3MDAxYTYuLjk4MGU2OTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaApAQCAtMjMwLDYgKzIz MCw3IEBAIHN0cnVjdCBhbWRfcG1fZnVuY3MgewogCWVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwg KCpnZXRfcGVyZm9ybWFuY2VfbGV2ZWwpKHZvaWQgKmhhbmRsZSk7CiAJZW51bSBhbWRfcG1fc3Rh dGVfdHlwZSAoKmdldF9jdXJyZW50X3Bvd2VyX3N0YXRlKSh2b2lkICpoYW5kbGUpOwogCWludCAo KmdldF9mYW5fc3BlZWRfcnBtKSh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpycG0pOworCWludCAo KnNldF9mYW5fc3BlZWRfcnBtKSh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHJwbSk7CiAJaW50ICgq Z2V0X3BwX251bV9zdGF0ZXMpKHZvaWQgKmhhbmRsZSwgc3RydWN0IHBwX3N0YXRlc19pbmZvICpk YXRhKTsKIAlpbnQgKCpnZXRfcHBfdGFibGUpKHZvaWQgKmhhbmRsZSwgY2hhciAqKnRhYmxlKTsK IAlpbnQgKCpzZXRfcHBfdGFibGUpKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hhciAqYnVmLCBzaXpl X3Qgc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRf cG93ZXJwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5 LmMKaW5kZXggMDUzYzQ4NS4uOWQ4ZmEyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYwpAQCAtNTc2LDYgKzU3NiwyNCBAQCBzdGF0aWMgaW50IHBw X2RwbV9nZXRfZmFuX3NwZWVkX3JwbSh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpycG0pCiAJcmV0 dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBwcF9kcG1fc2V0X2Zhbl9zcGVlZF9ycG0odm9pZCAq aGFuZGxlLCB1aW50MzJfdCBycG0pCit7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRs ZTsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghaHdtZ3IgfHwgIWh3bWdyLT5wbV9lbikKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9mYW5fc3BlZWRfcnBt ID09IE5VTEwpIHsKKwkJcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVu Y19fKTsKKwkJcmV0dXJuIDA7CisJfQorCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CisJ cmV0ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9mYW5fc3BlZWRfcnBtKGh3bWdyLCBycG0pOwor CW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0 aWMgaW50IHBwX2RwbV9nZXRfcHBfbnVtX3N0YXRlcyh2b2lkICpoYW5kbGUsCiAJCXN0cnVjdCBw cF9zdGF0ZXNfaW5mbyAqZGF0YSkKIHsKQEAgLTEyOTcsNiArMTMxNSw3IEBAIHN0YXRpYyBpbnQg cHBfZW5hYmxlX21ncHVfZmFuX2Jvb3N0KHZvaWQgKmhhbmRsZSkKIAkuc2V0X2Zhbl9zcGVlZF9w ZXJjZW50ID0gcHBfZHBtX3NldF9mYW5fc3BlZWRfcGVyY2VudCwKIAkuZ2V0X2Zhbl9zcGVlZF9w ZXJjZW50ID0gcHBfZHBtX2dldF9mYW5fc3BlZWRfcGVyY2VudCwKIAkuZ2V0X2Zhbl9zcGVlZF9y cG0gPSBwcF9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0sCisJLnNldF9mYW5fc3BlZWRfcnBtID0gcHBf ZHBtX3NldF9mYW5fc3BlZWRfcnBtLAogCS5nZXRfcHBfbnVtX3N0YXRlcyA9IHBwX2RwbV9nZXRf cHBfbnVtX3N0YXRlcywKIAkuZ2V0X3BwX3RhYmxlID0gcHBfZHBtX2dldF9wcF90YWJsZSwKIAku c2V0X3BwX3RhYmxlID0gcHBfZHBtX3NldF9wcF90YWJsZSwKLS0gCjEuOS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK