From: Rex Zhu Subject: [PATCH] drm/amd/powerplay: refine code in amd_powerplay.c Date: Tue, 26 Sep 2017 13:24:09 +0800 Message-ID: <1506403449-15065-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: 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 ZGVsZXRlIGZsYWcgb2YgUFBfRFBNX0RJU0FCTEVECnBwX2VuIGluIHBwX2hhbmRsZSBpcyBlbm91 Z2gKCkNoYW5nZS1JZDogSWFkN2Q0ODY5MGU5MWU3MzZkYTBmNzZiM2ExMWE4N2QyY2I1MTliMDUK U2lnbmVkLW9mZi1ieTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYyAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuYyAgICAgfCAgIDkgLS0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYyAgICAgfCAxNTIgKysrKysr KysrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2FtZF9w b3dlcnBsYXkuaCB8ICAgMiAtCiA0IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDk1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jZ3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYwppbmRl eCBmYzlhNTBhLi4wZWUzM2YzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfY2dzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nn cy5jCkBAIC05NjksNyArOTY5LDcgQEAgc3RhdGljIGludCBhbWRncHVfY2dzX25vdGlmeV9kcG1f ZW5hYmxlZChzdHJ1Y3QgY2dzX2RldmljZSAqY2dzX2RldmljZSwgYm9vbCBlbmEKIHsKIAlDR1Nf RlVOQ19BREVWOwogCi0JYWRldi0+cG0uZHBtX2VuYWJsZWQgPSBlbmFibGVkOworCWFtZGdwdV9k cG0gPSBhZGV2LT5wbS5kcG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKIAlyZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuYwppbmRleCAxNjQ5 YjFlLi4xYmUyZTFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcG93ZXJwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bv d2VycGxheS5jCkBAIC05OCwxMCArOTgsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9wcF9lYXJseV9p bml0KHZvaWQgKmhhbmRsZSkKIAkJCQkJYW1kX3BwLT5jZ3NfZGV2aWNlID8gYW1kX3BwLT5jZ3Nf ZGV2aWNlIDoKIAkJCQkJYW1kX3BwLT5wcF9oYW5kbGUpOwogCi0JaWYgKHJldCA9PSBQUF9EUE1f RElTQUJMRUQpIHsKLQkJYWRldi0+cG0uZHBtX2VuYWJsZWQgPSBmYWxzZTsKLQkJcmV0dXJuIDA7 Ci0JfQogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE1NCwxMSArMTUwLDYgQEAgc3RhdGljIGludCBh bWRncHVfcHBfaHdfaW5pdCh2b2lkICpoYW5kbGUpCiAJCXJldCA9IGFkZXYtPnBvd2VycGxheS5p cF9mdW5jcy0+aHdfaW5pdCgKIAkJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CiAKLQlp ZiAocmV0ID09IFBQX0RQTV9ESVNBQkxFRCkgewotCQlhZGV2LT5wbS5kcG1fZW5hYmxlZCA9IGZh bHNlOwotCQlyZXR1cm4gMDsKLQl9Ci0KIAlpZiAoKGFtZGdwdV9kcG0gIT0gMCkgJiYgIWFtZGdw dV9zcmlvdl92ZihhZGV2KSkKIAkJYWRldi0+cG0uZHBtX2VuYWJsZWQgPSB0cnVlOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMKaW5kZXggN2MxYTk3 NC4uZjQ3NTQzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1k X3Bvd2VycGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dl cnBsYXkuYwpAQCAtNDEsMTEgKzQxLDggQEAgc3RhdGljIGlubGluZSBpbnQgcHBfY2hlY2soc3Ry dWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCiAJaWYgKGhhbmRsZS0+aHdtZ3IgPT0gTlVMTCB8fCBo YW5kbGUtPmh3bWdyLT5zbXVtZ3JfZnVuY3MgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK LQlpZiAoaGFuZGxlLT5wbV9lbiA9PSAwKQotCQlyZXR1cm4gUFBfRFBNX0RJU0FCTEVEOwotCiAJ aWYgKGhhbmRsZS0+aHdtZ3ItPmh3bWdyX2Z1bmMgPT0gTlVMTCkKLQkJcmV0dXJuIFBQX0RQTV9E SVNBQkxFRDsKKwkJaGFuZGxlLT5wbV9lbiA9IDA7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTkzLDE0 ICs5MCw4IEBAIHN0YXRpYyBpbnQgcHBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCiAJcHBfaGFu ZGxlID0gY2dzX3JlZ2lzdGVyX3BwX2hhbmRsZShoYW5kbGUsIGFtZF9wb3dlcnBsYXlfY3JlYXRl KTsKIAogCXJldCA9IGh3bWdyX2Vhcmx5X2luaXQocHBfaGFuZGxlKTsKLQlpZiAocmV0KQotCQly ZXR1cm4gLUVJTlZBTDsKLQotCWlmICgocHBfaGFuZGxlLT5wbV9lbiA9PSAwKQotCQl8fCBjZ3Nf aXNfdmlydHVhbGl6YXRpb25fZW5hYmxlZChwcF9oYW5kbGUtPmRldmljZSkpCi0JCXJldHVybiBQ UF9EUE1fRElTQUJMRUQ7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMg aW50IHBwX3N3X2luaXQodm9pZCAqaGFuZGxlKQpAQCAtMTExLDcgKzEwMiw3IEBAIHN0YXRpYyBp bnQgcHBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUp OwogCi0JaWYgKHJldCA9PSAwIHx8IHJldCA9PSBQUF9EUE1fRElTQUJMRUQpIHsKKwlpZiAoIXJl dCkgewogCQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7CiAKIAkJaWYgKGh3bWdyLT5zbXVtZ3Jf ZnVuY3MtPnNtdV9pbml0ID09IE5VTEwpCkBAIC0xMzEsNyArMTIyLDcgQEAgc3RhdGljIGludCBw cF9zd19maW5pKHZvaWQgKmhhbmRsZSkKIAlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9 IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5k bGUpOwotCWlmIChyZXQgPT0gMCB8fCByZXQgPT0gUFBfRFBNX0RJU0FCTEVEKSB7CisJaWYgKCFy ZXQpIHsKIAkJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwogCiAJCWlmIChod21nci0+c211bWdy X2Z1bmNzLT5zbXVfZmluaSA9PSBOVUxMKQpAQCAtMTUwLDcgKzE0MSw3IEBAIHN0YXRpYyBpbnQg cHBfaHdfaW5pdCh2b2lkICpoYW5kbGUpCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwog Ci0JaWYgKHJldCA9PSAwIHx8IHJldCA9PSBQUF9EUE1fRElTQUJMRUQpIHsKKwlpZiAoIXJldCkg ewogCQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7CiAKIAkJaWYgKGh3bWdyLT5zbXVtZ3JfZnVu Y3MtPnN0YXJ0X3NtdSA9PSBOVUxMKQpAQCAtMTYxLDE3ICsxNTIsMTYgQEAgc3RhdGljIGludCBw cF9od19pbml0KHZvaWQgKmhhbmRsZSkKIAkJCWh3bWdyLT5zbXVtZ3JfZnVuY3MtPnNtdV9maW5p KHBwX2hhbmRsZS0+aHdtZ3IpOwogCQkJcmV0dXJuIC1FSU5WQUw7OwogCQl9Ci0JCWlmIChyZXQg PT0gUFBfRFBNX0RJU0FCTEVEKQotCQkJcmV0dXJuIFBQX0RQTV9ESVNBQkxFRDsKIAl9CiAKLQly ZXQgPSBod21ncl9od19pbml0KHBwX2hhbmRsZSk7Ci0JaWYgKHJldCkKLQkJZ290byBlcnI7CisJ aWYgKHBwX2hhbmRsZS0+cG1fZW4pIHsKKwkJcmV0ID0gaHdtZ3JfaHdfaW5pdChwcF9oYW5kbGUp OworCQlpZiAocmV0KSB7CisJCQlwcF9oYW5kbGUtPnBtX2VuID0gMDsKKwkJCWNnc19ub3RpZnlf ZHBtX2VuYWJsZWQoaHdtZ3ItPmRldmljZSwgZmFsc2UpOworCQl9CisJfQogCXJldHVybiAwOwot ZXJyOgotCXBwX2hhbmRsZS0+cG1fZW4gPSAwOwotCXJldHVybiBQUF9EUE1fRElTQUJMRUQ7CiB9 CiAKIHN0YXRpYyBpbnQgcHBfaHdfZmluaSh2b2lkICpoYW5kbGUpCkBAIC0xODAsNyArMTcwLDcg QEAgc3RhdGljIGludCBwcF9od19maW5pKHZvaWQgKmhhbmRsZSkKIAlpbnQgcmV0ID0gMDsKIAog CXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Ci0JaWYgKHJldCA9PSAwKQorCWlmICghcmV0ICYm IHBwX2hhbmRsZS0+cG1fZW4pCiAJCWh3bWdyX2h3X2ZpbmkocHBfaGFuZGxlKTsKIAogCXJldHVy biAwOwpAQCAtMTkyLDcgKzE4Miw3IEBAIHN0YXRpYyBpbnQgcHBfbGF0ZV9pbml0KHZvaWQgKmhh bmRsZSkKIAlpbnQgcmV0ID0gMDsKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Ci0JaWYg KHJldCA9PSAwKQorCWlmICghcmV0ICYmIHBwX2hhbmRsZS0+cG1fZW4pCiAJCXBwX2RwbV9kaXNw YXRjaF90YXNrcyhwcF9oYW5kbGUsCiAJCQkJCUFNRF9QUF9UQVNLX0NPTVBMRVRFX0lOSVQsIE5V TEwsIE5VTEwpOwogCkBAIC0yMjksNyArMjE5LDcgQEAgaW50IGFtZF9zZXRfY2xvY2tnYXRpbmdf Ynlfc211KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbXNnX2lkKQogCiAJcmV0ID0gcHBfY2hlY2so cHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtMjUwLDggKzI0MCw3IEBAIHN0YXRpYyBp bnQgcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwKIAlpbnQgcmV0ID0gMDsK IAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Ci0KLQlpZiAocmV0ICE9IDApCisJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTI3Mywy NCArMjYyLDI1IEBAIHN0YXRpYyBpbnQgcHBfc3VzcGVuZCh2b2lkICpoYW5kbGUpCiAKIAlyZXQg PSBwcF9jaGVjayhwcF9oYW5kbGUpOwogCi0JaWYgKHJldCA9PSBQUF9EUE1fRElTQUJMRUQpCi0J CXJldHVybiAwOwotCWVsc2UgaWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKLQlyZXR1cm4gaHdtZ3JfaHdfc3VzcGVuZChwcF9oYW5kbGUpOworCWlmIChwcF9oYW5kbGUt PnBtX2VuKQorCQlyZXQgPSBod21ncl9od19zdXNwZW5kKHBwX2hhbmRsZSk7CisKKwlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgaW50IHBwX3Jlc3VtZSh2b2lkICpoYW5kbGUpCiB7CiAJc3RydWN0 IHBwX2h3bWdyICAqaHdtZ3I7Ci0JaW50IHJldCwgcmV0MTsKKwlpbnQgcmV0OwogCXN0cnVjdCBw cF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKIAot CXJldDEgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7 CiAKLQlpZiAocmV0MSAhPSAwICYmIHJldDEgIT0gUFBfRFBNX0RJU0FCTEVEKQotCQlyZXR1cm4g cmV0MTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3 bWdyOwogCkBAIC0zMDMsMTEgKzI5MywxMCBAQCBzdGF0aWMgaW50IHBwX3Jlc3VtZSh2b2lkICpo YW5kbGUpCiAJCWh3bWdyLT5zbXVtZ3JfZnVuY3MtPnNtdV9maW5pKHBwX2hhbmRsZS0+aHdtZ3Ip OwogCQlyZXR1cm4gcmV0OwogCX0KKwlpZiAocHBfaGFuZGxlLT5wbV9lbikKKwkJcmV0ID0gaHdt Z3JfaHdfcmVzdW1lKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0MSA9PSBQUF9EUE1fRElTQUJMRUQp Ci0JCXJldHVybiAwOwotCi0JcmV0dXJuIGh3bWdyX2h3X3Jlc3VtZShwcF9oYW5kbGUpOworCXJl dHVybiByZXQ7CiB9CiAKIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgcHBfaXBfZnVuY3MgPSB7 CkBAIC0zODMsNyArMzcyLDcgQEAgc3RhdGljIGludCBwcF9kcG1fZm9yY2VfcGVyZm9ybWFuY2Vf bGV2ZWwodm9pZCAqaGFuZGxlLAogCiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlm IChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5k bGUtPmh3bWdyOwpAQCAtNDE4LDcgKzQwNyw3IEBAIHN0YXRpYyBlbnVtIGFtZF9kcG1fZm9yY2Vk X2xldmVsIHBwX2RwbV9nZXRfcGVyZm9ybWFuY2VfbGV2ZWwoCiAKIAlyZXQgPSBwcF9jaGVjayhw cF9oYW5kbGUpOwogCi0JaWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAK IAlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7CkBAIC00MzcsNyArNDI2LDcgQEAgc3RhdGljIHVp bnQzMl90IHBwX2RwbV9nZXRfc2Nsayh2b2lkICpoYW5kbGUsIGJvb2wgbG93KQogCiAJcmV0ID0g cHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtNDYxLDcgKzQ1MCw3IEBA IHN0YXRpYyB1aW50MzJfdCBwcF9kcG1fZ2V0X21jbGsodm9pZCAqaGFuZGxlLCBib29sIGxvdykK IAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTQ4NCw3 ICs0NzMsNyBAQCBzdGF0aWMgdm9pZCBwcF9kcG1fcG93ZXJnYXRlX3ZjZSh2b2lkICpoYW5kbGUs IGJvb2wgZ2F0ZSkKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9 IDApCisJaWYgKHJldCkKIAkJcmV0dXJuOwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpA QCAtNTA2LDcgKzQ5NSw3IEBAIHN0YXRpYyB2b2lkIHBwX2RwbV9wb3dlcmdhdGVfdXZkKHZvaWQg KmhhbmRsZSwgYm9vbCBnYXRlKQogCiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlm IChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1cm47CiAKIAlod21nciA9IHBwX2hhbmRsZS0+ aHdtZ3I7CkBAIC01MjgsNyArNTE3LDcgQEAgc3RhdGljIGludCBwcF9kcG1fZGlzcGF0Y2hfdGFz a3Modm9pZCAqaGFuZGxlLCBlbnVtIGFtZF9wcF90YXNrIHRhc2tfaWQsCiAKIAlyZXQgPSBwcF9j aGVjayhwcF9oYW5kbGUpOwogCi0JaWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKIAltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwpAQCAtNTQ4LDcgKzUzNyw3 IEBAIHN0YXRpYyBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlIHBwX2RwbV9nZXRfY3VycmVudF9wb3dl cl9zdGF0ZSh2b2lkICpoYW5kbGUpCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwogCi0J aWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlod21nciA9IHBwX2hh bmRsZS0+aHdtZ3I7CkBAIC01OTAsNyArNTc5LDcgQEAgc3RhdGljIHZvaWQgcHBfZHBtX3NldF9m YW5fY29udHJvbF9tb2RlKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbW9kZSkKIAogCXJldCA9IHBw X2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJu OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtNjEzLDcgKzYwMiw3IEBAIHN0YXRp YyB1aW50MzJfdCBwcF9kcG1fZ2V0X2Zhbl9jb250cm9sX21vZGUodm9pZCAqaGFuZGxlKQogCiAJ cmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtNjM2LDcgKzYy NSw3IEBAIHN0YXRpYyBpbnQgcHBfZHBtX3NldF9mYW5fc3BlZWRfcGVyY2VudCh2b2lkICpoYW5k bGUsIHVpbnQzMl90IHBlcmNlbnQpCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwogCi0J aWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlod21nciA9IHBwX2hh bmRsZS0+aHdtZ3I7CkBAIC02NTksNyArNjQ4LDcgQEAgc3RhdGljIGludCBwcF9kcG1fZ2V0X2Zh bl9zcGVlZF9wZXJjZW50KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgKnNwZWVkKQogCiAJcmV0ID0g cHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtNjgzLDcgKzY3Miw3IEBA IHN0YXRpYyBpbnQgcHBfZHBtX2dldF9mYW5fc3BlZWRfcnBtKHZvaWQgKmhhbmRsZSwgdWludDMy X3QgKnJwbSkKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDAp CisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsK QEAgLTcwNSw3ICs2OTQsNyBAQCBzdGF0aWMgaW50IHBwX2RwbV9nZXRfdGVtcGVyYXR1cmUodm9p ZCAqaGFuZGxlKQogCiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0g MCkKKwlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdy OwpAQCAtNzMwLDcgKzcxOSw3IEBAIHN0YXRpYyBpbnQgcHBfZHBtX2dldF9wcF9udW1fc3RhdGVz KHZvaWQgKmhhbmRsZSwKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0 ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5o d21ncjsKQEAgLTc3NSw3ICs3NjQsNyBAQCBzdGF0aWMgaW50IHBwX2RwbV9nZXRfcHBfdGFibGUo dm9pZCAqaGFuZGxlLCBjaGFyICoqdGFibGUpCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUp OwogCi0JaWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlod21nciA9 IHBwX2hhbmRsZS0+aHdtZ3I7CkBAIC03OTgsNyArNzg3LDcgQEAgc3RhdGljIGludCBwcF9kcG1f c2V0X3BwX3RhYmxlKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkK IAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTgyMiwx MyArODExLDEwIEBAIHN0YXRpYyBpbnQgcHBfZHBtX3NldF9wcF90YWJsZSh2b2lkICpoYW5kbGUs IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCWlmIChod21nci0+aHdtZ3JfZnVuYy0+YXZmc19jb250cm9sKSB7CisJaWYgKGh3bWdyLT5o d21ncl9mdW5jLT5hdmZzX2NvbnRyb2wpCiAJCXJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5hdmZz X2NvbnRyb2woaHdtZ3IsIGZhbHNlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQog Ci0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9kcG1fZm9yY2Vf Y2xvY2tfbGV2ZWwodm9pZCAqaGFuZGxlLApAQCAtODQwLDcgKzgyNiw3IEBAIHN0YXRpYyBpbnQg cHBfZHBtX2ZvcmNlX2Nsb2NrX2xldmVsKHZvaWQgKmhhbmRsZSwKIAogCXJldCA9IHBwX2NoZWNr KHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTg2NCw3ICs4NTAsNyBAQCBzdGF0aWMg aW50IHBwX2RwbV9wcmludF9jbG9ja19sZXZlbHModm9pZCAqaGFuZGxlLAogCiAJcmV0ID0gcHBf Y2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtODg3LDcgKzg3Myw3IEBAIHN0 YXRpYyBpbnQgcHBfZHBtX2dldF9zY2xrX29kKHZvaWQgKmhhbmRsZSkKIAogCXJldCA9IHBwX2No ZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTkxMCw3ICs4OTYsNyBAQCBzdGF0 aWMgaW50IHBwX2RwbV9zZXRfc2Nsa19vZCh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHZhbHVlKQog CiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwpAQCAtOTM0LDcg KzkyMCw3IEBAIHN0YXRpYyBpbnQgcHBfZHBtX2dldF9tY2xrX29kKHZvaWQgKmhhbmRsZSkKIAog CXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKQEAgLTk1Nyw3ICs5 NDMsNyBAQCBzdGF0aWMgaW50IHBwX2RwbV9zZXRfbWNsa19vZCh2b2lkICpoYW5kbGUsIHVpbnQz Ml90IHZhbHVlKQogCiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKIAotCWlmIChyZXQgIT0g MCkKKwlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdy OwpAQCAtOTgxLDcgKzk2Nyw3IEBAIHN0YXRpYyBpbnQgcHBfZHBtX3JlYWRfc2Vuc29yKHZvaWQg KmhhbmRsZSwgaW50IGlkeCwKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAo cmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxl LT5od21ncjsKQEAgLTEwMDcsNyArOTkzLDcgQEAgc3RhdGljIGludCBwcF9kcG1fcmVhZF9zZW5z b3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAogCiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsK IAotCWlmIChyZXQgIT0gMCkKKwlpZiAocmV0KQogCQlyZXR1cm4gTlVMTDsKIAogCWh3bWdyID0g cHBfaGFuZGxlLT5od21ncjsKQEAgLTExODcsMTEgKzExNzMsMTEgQEAgaW50IGFtZF9wb3dlcnBs YXlfcmVzZXQodm9pZCAqaGFuZGxlKQogCXN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2UgPSAo c3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwogCWludCByZXQ7CiAKLQlpZiAoY2dzX2lzX3Zp cnR1YWxpemF0aW9uX2VuYWJsZWQoaW5zdGFuY2UtPmh3bWdyLT5kZXZpY2UpKQotCQlyZXR1cm4g UFBfRFBNX0RJU0FCTEVEOworCWlmICghaW5zdGFuY2UtPnBtX2VuKQorCQlyZXR1cm4gMDsKIAog CXJldCA9IHBwX2NoZWNrKGluc3RhbmNlKTsKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIAogCXJldCA9IHBwX2h3X2ZpbmkoaW5zdGFuY2UpOwpAQCAtMTIwMCw3ICsx MTg2LDcgQEAgaW50IGFtZF9wb3dlcnBsYXlfcmVzZXQodm9pZCAqaGFuZGxlKQogCiAJcmV0ID0g aHdtZ3JfaHdfaW5pdChpbnN0YW5jZSk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIFBQX0RQTV9ESVNB QkxFRDsKKwkJcmV0dXJuIHJldDsKIAogCXJldHVybiBod21ncl9oYW5kbGVfdGFzayhpbnN0YW5j ZSwgQU1EX1BQX1RBU0tfQ09NUExFVEVfSU5JVCwgTlVMTCwgTlVMTCk7CiB9CkBAIC0xMjE2LDcg KzEyMDIsNyBAQCBpbnQgYW1kX3Bvd2VycGxheV9kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdl KHZvaWQgKmhhbmRsZSwKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0 ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5o d21ncjsKQEAgLTEyMzUsNyArMTIyMSw3IEBAIGludCBhbWRfcG93ZXJwbGF5X2dldF9kaXNwbGF5 X3Bvd2VyX2xldmVsKHZvaWQgKmhhbmRsZSwKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7 CiAKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0g cHBfaGFuZGxlLT5od21ncjsKQEAgLTEyNjAsNyArMTI0Niw3IEBAIGludCBhbWRfcG93ZXJwbGF5 X2dldF9jdXJyZW50X2Nsb2Nrcyh2b2lkICpoYW5kbGUsCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9o YW5kbGUpOwogCi0JaWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlo d21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7CkBAIC0xMjc3LDcgKzEyNjMsNyBAQCBpbnQgYW1kX3Bv d2VycGxheV9nZXRfY3VycmVudF9jbG9ja3Modm9pZCAqaGFuZGxlLAogCQlyZXQgPSBwaG1fZ2V0 X2Nsb2NrX2luZm8oaHdtZ3IsICZod21nci0+Y3VycmVudF9wcy0+aGFyZHdhcmUsCiAJCQkJCSZo d19jbG9ja3MsIFBITV9QZXJmb3JtYW5jZUxldmVsRGVzaWduYXRpb25fQWN0aXZpdHkpOwogCi0J aWYgKHJldCAhPSAwKSB7CisJaWYgKHJldCkgewogCQlwcl9pbmZvKCJFcnJvciBpbiBwaG1fZ2V0 X2Nsb2NrX2luZm8gXG4iKTsKIAkJbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwog CQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEzMTEsNyArMTI5Nyw3IEBAIGludCBhbWRfcG93ZXJwbGF5 X2dldF9jbG9ja19ieV90eXBlKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfY2xvY2tfdHlwZSB0 eXBlLCBzCiAKIAlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwogCi0JaWYgKHJldCAhPSAwKQor CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7CkBA IC0xMzM0LDcgKzEzMjAsNyBAQCBpbnQgYW1kX3Bvd2VycGxheV9nZXRfY2xvY2tfYnlfdHlwZV93 aXRoX2xhdGVuY3kodm9pZCAqaGFuZGxlLAogCWludCByZXQgPSAwOwogCiAJcmV0ID0gcHBfY2hl Y2socHBfaGFuZGxlKTsKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAogCWlmICghY2xvY2tzKQpAQCAtMTM1Niw3ICsxMzQyLDcgQEAgaW50IGFtZF9wb3dlcnBsYXlf Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF92b2x0YWdlKHZvaWQgKmhhbmRsZSwKIAlpbnQgcmV0ID0g MDsKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Ci0JaWYgKHJldCAhPSAwKQorCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKIAlpZiAoIWNsb2NrcykKQEAgLTEzODAsNyArMTM2Niw3IEBA IGludCBhbWRfcG93ZXJwbGF5X3NldF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKHZvaWQg KmhhbmRsZSwKIAlpbnQgcmV0ID0gMDsKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Ci0J aWYgKHJldCAhPSAwKQorCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlpZiAoIXdtX3dpdGhf Y2xvY2tfcmFuZ2VzKQpAQCAtMTQwNCw3ICsxMzkwLDcgQEAgaW50IGFtZF9wb3dlcnBsYXlfZGlz cGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3Qodm9pZCAqaGFuZGxlLAogCWludCByZXQgPSAwOwog CiAJcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKLQlpZiAocmV0ICE9IDApCisJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAogCWlmICghY2xvY2spCkBAIC0xNDI4LDcgKzE0MTQsNyBAQCBpbnQg YW1kX3Bvd2VycGxheV9nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKHZvaWQgKmhh bmRsZSwKIAogCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CiAKLQlpZiAocmV0ICE9IDApCisJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRfcG93ZXJwbGF5 LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvYW1kX3Bvd2VycGxheS5oCmlu ZGV4IDkxNmI2YzQuLmU1MmFkYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2luYy9hbWRfcG93ZXJwbGF5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaW5jL2FtZF9wb3dlcnBsYXkuaApAQCAtMzMsOCArMzMsNiBAQAogZXh0ZXJuIGNvbnN0 IHN0cnVjdCBhbWRfaXBfZnVuY3MgcHBfaXBfZnVuY3M7CiBleHRlcm4gY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyBwcF9kcG1fZnVuY3M7CiAKLSNkZWZpbmUgUFBfRFBNX0RJU0FCTEVEIDB4Q0ND QwotCiBlbnVtIGFtZF9wcF9zZW5zb3JzIHsKIAlBTURHUFVfUFBfU0VOU09SX0dGWF9TQ0xLID0g MCwKIAlBTURHUFVfUFBfU0VOU09SX1ZERE5CLAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=