From: Subject: [PATCH] drm/amdgpu: Add GPU reset functionality for Vega10 Date: Fri, 15 Sep 2017 15:57:44 +0800 Message-ID: <1505462264-672-1-git-send-email-Ken.Wang@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: Ken Wang RnJvbTogS2VuIFdhbmcgPEtlbi5XYW5nQGFtZC5jb20+CgpWMgoKU2lnbmVkLW9mZi1ieTogS2Vu IFdhbmcgPEtlbi5XYW5nQGFtZC5jb20+CkNoYW5nZS1JZDogSTZmZDJjMjE2YTg0NzQ3MzEzZjE4 ZGIyNWE0NDRiZTVlZDQzYjRmNGIKLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZGV2aWNlLmMgfCAgMyArKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9w c3AuYyAgICB8IDIxICsrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3BzcC5oICAgIHwgIDMgKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9w c3BfdjEwXzAuYyAgICAgfCAgNyArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Bz cF92MTBfMC5oICAgICB8ICAyICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNf MS5jICAgICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmggICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3NvYzE1LmMgICAgICAgICB8IDI3ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQog OCBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKaW5kZXggZmMxYzU0MzcuLjJh ZDk3MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZp Y2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKQEAg LTI2NDQsNyArMjY0NCw4IEBAIHN0YXRpYyBib29sIGFtZGdwdV9uZWVkX2Z1bGxfcmVzZXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCWlmICgoYWRldi0+aXBfYmxvY2tzW2ldLnZlcnNp b24tPnR5cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfR01DKSB8fAogCQkgICAgKGFkZXYtPmlwX2Js b2Nrc1tpXS52ZXJzaW9uLT50eXBlID09IEFNRF9JUF9CTE9DS19UWVBFX1NNQykgfHwKIAkJICAg IChhZGV2LT5pcF9ibG9ja3NbaV0udmVyc2lvbi0+dHlwZSA9PSBBTURfSVBfQkxPQ0tfVFlQRV9B Q1ApIHx8Ci0JCSAgICAoYWRldi0+aXBfYmxvY2tzW2ldLnZlcnNpb24tPnR5cGUgPT0gQU1EX0lQ X0JMT0NLX1RZUEVfRENFKSkgeworCQkgICAgKGFkZXYtPmlwX2Jsb2Nrc1tpXS52ZXJzaW9uLT50 eXBlID09IEFNRF9JUF9CTE9DS19UWVBFX0RDRSkgfHwKKwkJICAgICBhZGV2LT5pcF9ibG9ja3Nb aV0udmVyc2lvbi0+dHlwZSA9PSBBTURfSVBfQkxPQ0tfVFlQRV9QU1ApIHsKIAkJCWlmIChhZGV2 LT5pcF9ibG9ja3NbaV0uc3RhdHVzLmhhbmcpIHsKIAkJCQlEUk1fSU5GTygiU29tZSBibG9jayBu ZWVkIGZ1bGwgcmVzZXQhXG4iKTsKIAkJCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9wc3AuYwppbmRleCA4YTFlZTk3Li44ZTUzNjUwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jCkBAIC02Miw2ICs2Miw3IEBAIHN0YXRpYyBpbnQg cHNwX3N3X2luaXQodm9pZCAqaGFuZGxlKQogCQlwc3AtPmNtZF9zdWJtaXQgPSBwc3BfdjNfMV9j bWRfc3VibWl0OwogCQlwc3AtPmNvbXBhcmVfc3JhbV9kYXRhID0gcHNwX3YzXzFfY29tcGFyZV9z cmFtX2RhdGE7CiAJCXBzcC0+c211X3JlbG9hZF9xdWlyayA9IHBzcF92M18xX3NtdV9yZWxvYWRf cXVpcms7CisJCXBzcC0+bW9kZTFfcmVzZXQgPSBwc3BfdjNfMV9tb2RlMV9yZXNldDsKIAkJYnJl YWs7CiAJY2FzZSBDSElQX1JBVkVOOgogCQlwc3AtPmluaXRfbWljcm9jb2RlID0gcHNwX3YxMF8w X2luaXRfbWljcm9jb2RlOwpAQCAtNzIsNiArNzMsNyBAQCBzdGF0aWMgaW50IHBzcF9zd19pbml0 KHZvaWQgKmhhbmRsZSkKIAkJcHNwLT5yaW5nX2Rlc3Ryb3kgPSBwc3BfdjEwXzBfcmluZ19kZXN0 cm95OwogCQlwc3AtPmNtZF9zdWJtaXQgPSBwc3BfdjEwXzBfY21kX3N1Ym1pdDsKIAkJcHNwLT5j b21wYXJlX3NyYW1fZGF0YSA9IHBzcF92MTBfMF9jb21wYXJlX3NyYW1fZGF0YTsKKwkJcHNwLT5t b2RlMV9yZXNldCA9IHBzcF92MTBfMF9tb2RlMV9yZXNldDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJcmV0dXJuIC1FSU5WQUw7CkBAIC00OTcsNiArNDk5LDIyIEBAIHN0YXRpYyBpbnQgcHNwX3Jl c3VtZSh2b2lkICpoYW5kbGUpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGJvb2wgcHNwX2No ZWNrX3Jlc2V0KHZvaWQqIGhhbmRsZSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9 IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKworCWlmIChhZGV2LT5hc2ljX3R5cGUg PT0gQ0hJUF9WRUdBMTApCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgaW50IHBzcF9yZXNldCh2b2lkKiBoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisJcmV0dXJuIHBzcF9t b2RlMV9yZXNldCgmYWRldi0+cHNwKTsKK30KKwogc3RhdGljIGJvb2wgcHNwX2NoZWNrX2Z3X2xv YWRpbmdfc3RhdHVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQllbnVtIEFNREdQ VV9VQ09ERV9JRCB1Y29kZV90eXBlKQogewpAQCAtNTQwLDggKzU1OCw5IEBAIGNvbnN0IHN0cnVj dCBhbWRfaXBfZnVuY3MgcHNwX2lwX2Z1bmNzID0gewogCS5zdXNwZW5kID0gcHNwX3N1c3BlbmQs CiAJLnJlc3VtZSA9IHBzcF9yZXN1bWUsCiAJLmlzX2lkbGUgPSBOVUxMLAorCS5jaGVja19zb2Z0 X3Jlc2V0ID0gcHNwX2NoZWNrX3Jlc2V0LAogCS53YWl0X2Zvcl9pZGxlID0gTlVMTCwKLQkuc29m dF9yZXNldCA9IE5VTEwsCisJLnNvZnRfcmVzZXQgPSBwc3BfcmVzZXQsCiAJLnNldF9jbG9ja2dh dGluZ19zdGF0ZSA9IHBzcF9zZXRfY2xvY2tnYXRpbmdfc3RhdGUsCiAJLnNldF9wb3dlcmdhdGlu Z19zdGF0ZSA9IHBzcF9zZXRfcG93ZXJnYXRpbmdfc3RhdGUsCiB9OwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5oIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3BzcC5oCmluZGV4IDFiN2QxMmQuLmNlNDY1NDU1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5oCkBAIC03Niw2ICs3Niw3IEBAIHN0cnVjdCBw c3BfY29udGV4dAogCQkJCSAgc3RydWN0IGFtZGdwdV9maXJtd2FyZV9pbmZvICp1Y29kZSwKIAkJ CQkgIGVudW0gQU1ER1BVX1VDT0RFX0lEIHVjb2RlX3R5cGUpOwogCWJvb2wgKCpzbXVfcmVsb2Fk X3F1aXJrKShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCk7CisJaW50ICgqbW9kZTFfcmVzZXQpKHN0 cnVjdCBwc3BfY29udGV4dCAqcHNwKTsKIAogCS8qIGZlbmNlIGJ1ZmZlciAqLwogCXN0cnVjdCBh bWRncHVfYm8gCQkqZndfcHJpX2JvOwpAQCAtMTM5LDYgKzE0MCw4IEBAIHN0cnVjdCBhbWRncHVf cHNwX2Z1bmNzIHsKIAkJKChwc3ApLT5ib290bG9hZGVyX2xvYWRfc29zID8gKHBzcCktPmJvb3Rs b2FkZXJfbG9hZF9zb3MoKHBzcCkpIDogMCkKICNkZWZpbmUgcHNwX3NtdV9yZWxvYWRfcXVpcmso cHNwKSBcCiAJCSgocHNwKS0+c211X3JlbG9hZF9xdWlyayA/IChwc3ApLT5zbXVfcmVsb2FkX3F1 aXJrKChwc3ApKSA6IGZhbHNlKQorI2RlZmluZSBwc3BfbW9kZTFfcmVzZXQocHNwKSBcCisJCSgo cHNwKS0+bW9kZTFfcmVzZXQgPyAocHNwKS0+bW9kZTFfcmVzZXQoKHBzcCkpIDogZmFsc2UpCiAK IGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIHBzcF9pcF9mdW5jczsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYwppbmRleCA2YjMyNGRhLi5jYmM0M2JiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYwpAQCAtNDA2LDMgKzQwNiwxMCBAQCBi b29sIHBzcF92MTBfMF9jb21wYXJlX3NyYW1fZGF0YShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwK IAogCXJldHVybiB0cnVlOwogfQorCisKK2ludCBwc3BfdjEwXzBfbW9kZTFfcmVzZXQoc3RydWN0 IHBzcF9jb250ZXh0ICpwc3ApCit7CisJRFJNX0lORk8oInBzcCBtb2RlIDEgcmVzZXQgbm90IHN1 cHBvcnRlZCBub3chIFxuIik7CisJcmV0dXJuIC1FSU5WQUw7Cit9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L3BzcF92MTBfMC5oCmluZGV4IDNhZjNhZDEuLjQ1MWU4MzAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5oCkBAIC00NSw0ICs0NSw2IEBAIGV4dGVybiBpbnQgcHNw X3YxMF8wX2NtZF9zdWJtaXQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3AsCiBleHRlcm4gYm9vbCBw c3BfdjEwXzBfY29tcGFyZV9zcmFtX2RhdGEoc3RydWN0IHBzcF9jb250ZXh0ICpwc3AsCiAJCQkJ ICAgICAgIHN0cnVjdCBhbWRncHVfZmlybXdhcmVfaW5mbyAqdWNvZGUsCiAJCQkJICAgICAgIGVu dW0gQU1ER1BVX1VDT0RFX0lEIHVjb2RlX3R5cGUpOworCitleHRlcm4gaW50IHBzcF92MTBfMF9t b2RlMV9yZXNldChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9wc3BfdjNfMS5jCmluZGV4IGViNzM5MzEuLjRlNzBiYWQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYwpAQCAtNTMwLDMgKzUzMCwzNyBAQCBib29sIHBzcF92 M18xX3NtdV9yZWxvYWRfcXVpcmsoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCiAJcmVnID0gUlJF RzMyX1NPQzE1KE5CSU8sIDAsIG1tUENJRV9EQVRBMik7CiAJcmV0dXJuIChyZWcgJiBNUDFfRklS TVdBUkVfRkxBR1NfX0lOVEVSUlVQVFNfRU5BQkxFRF9NQVNLKSA/IHRydWUgOiBmYWxzZTsKIH0K KworaW50IHBzcF92M18xX21vZGUxX3Jlc2V0KHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQorewor CWludCByZXQ7CisJdWludDMyX3Qgb2Zmc2V0OworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gcHNwLT5hZGV2OworCisJb2Zmc2V0ID0gU09DMTVfUkVHX09GRlNFVChNUDAsIDAsIG1tTVAw X1NNTl9DMlBNU0dfNjQpOworCisJcmV0ID0gcHNwX3dhaXRfZm9yKHBzcCwgb2Zmc2V0LCAweDgw MDAwMDAwLCAweDgwMDBGRkZGLCBmYWxzZSk7CisKKwlpZiAocmV0KSB7CisJCURSTV9JTkZPKCJw c3AgaXMgbm90IHdvcmtpbmcgY29ycmVjdGx5IGJlZm9yZSBtb2RlMSByZXNldCFcbiIpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKnNlbmQgdGhlIG1vZGUgMSByZXNldCBjb21tYW5kKi8K KwlXUkVHMzIob2Zmc2V0LCAweDcwMDAwKTsKKworCW1kZWxheSgxMDAwKTsKKworCW9mZnNldCA9 IFNPQzE1X1JFR19PRkZTRVQoTVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzMzKTsKKworCXJldCA9 IHBzcF93YWl0X2Zvcihwc3AsIG9mZnNldCwgMHg4MDAwMDAwMCwgMHg4MDAwMDAwMCwgZmFsc2Up OworCisJaWYgKHJldCkgeworCQlEUk1fSU5GTygicHNwIG1vZGUgMSByZXNldCBmYWlsZWQhXG4i KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJRFJNX0lORk8oInBzcCBtb2RlMSByZXNldCBz dWNjZWVkIFxuIik7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3BzcF92M18xLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3Bf djNfMS5oCmluZGV4IDVhZjIyMzEuLmIwNWRiYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3BzcF92M18xLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv cHNwX3YzXzEuaApAQCAtNTMsNCArNTMsNSBAQCBleHRlcm4gYm9vbCBwc3BfdjNfMV9jb21wYXJl X3NyYW1fZGF0YShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwKIAkJCQkgICAgICAgc3RydWN0IGFt ZGdwdV9maXJtd2FyZV9pbmZvICp1Y29kZSwKIAkJCQkgICAgICAgZW51bSBBTURHUFVfVUNPREVf SUQgdWNvZGVfdHlwZSk7CiBleHRlcm4gYm9vbCBwc3BfdjNfMV9zbXVfcmVsb2FkX3F1aXJrKHN0 cnVjdCBwc3BfY29udGV4dCAqcHNwKTsKK2V4dGVybiBpbnQgcHNwX3YzXzFfbW9kZTFfcmVzZXQo c3RydWN0IHBzcF9jb250ZXh0ICpwc3ApOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29j MTUuYwppbmRleCBhNzRkNjE2Li45Yzc1OTYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9zb2MxNS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1 LmMKQEAgLTQwNywxOCArNDA3LDI3IEBAIHN0YXRpYyBpbnQgc29jMTVfcmVhZF9yZWdpc3Rlcihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIHNlX251bSwKIAlyZXR1cm4gLUVJTlZBTDsK IH0KIAotc3RhdGljIHZvaWQgc29jMTVfZ3B1X3BjaV9jb25maWdfcmVzZXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCitzdGF0aWMgaW50IHNvYzE1X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiB7CiAJdTMyIGk7CiAKLQlkZXZfaW5mbyhhZGV2LT5kZXYsICJHUFUg cGNpIGNvbmZpZyByZXNldFxuIik7CisJYW1kZ3B1X2F0b21iaW9zX3NjcmF0Y2hfcmVnc19lbmdp bmVfaHVuZyhhZGV2LCB0cnVlKTsKKworCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSByZXNldFxu Iik7CiAKIAkvKiBkaXNhYmxlIEJNICovCiAJcGNpX2NsZWFyX21hc3RlcihhZGV2LT5wZGV2KTsK LQkvKiByZXNldCAqLwotCWFtZGdwdV9wY2lfY29uZmlnX3Jlc2V0KGFkZXYpOwogCi0JdWRlbGF5 KDEwMCk7CisJcGNpX3NhdmVfc3RhdGUoYWRldi0+cGRldik7CisKKwlmb3IgKGkgPSAwOyBpIDwg QU1ER1BVX01BWF9JUF9OVU07IGkrKykgeworCQlpZiAoYWRldi0+aXBfYmxvY2tzW2ldLnZlcnNp b24tPnR5cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfUFNQKXsKKwkJCWFkZXYtPmlwX2Jsb2Nrc1tp XS52ZXJzaW9uLT5mdW5jcy0+c29mdF9yZXNldCgodm9pZCAqKWFkZXYpOworCQkJYnJlYWs7CisJ CX0KKwl9CisKKwlwY2lfcmVzdG9yZV9zdGF0ZShhZGV2LT5wZGV2KTsKIAogCS8qIHdhaXQgZm9y IGFzaWMgdG8gY29tZSBvdXQgb2YgcmVzZXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dXNl Y190aW1lb3V0OyBpKyspIHsKQEAgLTQzMCwxNCArNDM5LDYgQEAgc3RhdGljIHZvaWQgc29jMTVf Z3B1X3BjaV9jb25maWdfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCXVkZWxh eSgxKTsKIAl9CiAKLX0KLQotc3RhdGljIGludCBzb2MxNV9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQotewotCWFtZGdwdV9hdG9tYmlvc19zY3JhdGNoX3JlZ3NfZW5naW5l X2h1bmcoYWRldiwgdHJ1ZSk7Ci0KLQlzb2MxNV9ncHVfcGNpX2NvbmZpZ19yZXNldChhZGV2KTsK LQogCWFtZGdwdV9hdG9tYmlvc19zY3JhdGNoX3JlZ3NfZW5naW5lX2h1bmcoYWRldiwgZmFsc2Up OwogCiAJcmV0dXJuIDA7Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4Cg==