From: Subject: [PATCH] drm/amdgpu: Add GPU reset functionality for Vega10 Date: Fri, 15 Sep 2017 14:53:44 +0800 Message-ID: <1505458424-27688-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+CgpTaWduZWQtb2ZmLWJ5OiBLZW4gV2Fu ZyA8S2VuLldhbmdAYW1kLmNvbT4KQ2hhbmdlLUlkOiBJNmZkMmMyMTZhODQ3NDczMTNmMThkYjI1 YTQ0NGJlNWVkNDNiNGY0YgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k ZXZpY2UuYyB8ICA3ICsrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bz cC5jICAgIHwgMTAgKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9w c3AuaCAgICB8ICAzICsrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMg ICAgIHwgIDcgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuaCAg ICAgfCAgMiArKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYyAgICAgIHwg MzYgKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9wc3BfdjNfMS5oICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2Mx NS5jICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDggZmlsZXMg Y2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCmluZGV4IGZjMWM1NDM3Li40MTk2Nzg2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCkBAIC0yODgzLDcg KzI4ODMsNyBAQCBpbnQgYW1kZ3B1X2dwdV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAlpbnQgcmVzY2hlZDsKIAlib29sIG5lZWRfZnVsbF9yZXNldCwgdnJhbV9sb3N0ID0gZmFs c2U7CiAKLQlpZiAoIWFtZGdwdV9jaGVja19zb2Z0X3Jlc2V0KGFkZXYpKSB7CisJaWYgKCFhbWRn cHVfY2hlY2tfc29mdF9yZXNldChhZGV2KSAmJiAoYWRldi0+YXNpY190eXBlICE9IENISVBfVkVH QTEwKSkgewogCQlEUk1fSU5GTygiTm8gaGFyZHdhcmUgaGFuZyBkZXRlY3RlZC4gRGlkIHNvbWUg YmxvY2tzIHN0YWxsP1xuIik7CiAJCXJldHVybiAwOwogCX0KQEAgLTI5MTAsNiArMjkxMCwxMCBA QCBpbnQgYW1kZ3B1X2dwdV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAogCW5l ZWRfZnVsbF9yZXNldCA9IGFtZGdwdV9uZWVkX2Z1bGxfcmVzZXQoYWRldik7CiAKKwkvKiBubyBz b2Z0IHJlc2V0IGZvciB2ZWdhMTAgcmlnaHQgbm93Ki8KKwlpZiAoYWRldi0+YXNpY190eXBlID09 IENISVBfVkVHQTEwKQorCQluZWVkX2Z1bGxfcmVzZXQgPSB0cnVlOworCiAJaWYgKCFuZWVkX2Z1 bGxfcmVzZXQpIHsKIAkJYW1kZ3B1X3ByZV9zb2Z0X3Jlc2V0KGFkZXYpOwogCQlyID0gYW1kZ3B1 X3NvZnRfcmVzZXQoYWRldik7CkBAIC0yOTI0LDYgKzI5MjgsNyBAQCBpbnQgYW1kZ3B1X2dwdV9y ZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJciA9IGFtZGdwdV9zdXNwZW5kKGFk ZXYpOwogCiByZXRyeToKKwogCQlhbWRncHVfYXRvbWJpb3Nfc2NyYXRjaF9yZWdzX3NhdmUoYWRl dik7CiAJCXIgPSBhbWRncHVfYXNpY19yZXNldChhZGV2KTsKIAkJYW1kZ3B1X2F0b21iaW9zX3Nj cmF0Y2hfcmVnc19yZXN0b3JlKGFkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3BzcC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3BzcC5jCmluZGV4IDhhMWVlOTcuLjY5NDJiODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcHNwLmMKQEAgLTYyLDYgKzYyLDcgQEAgc3RhdGljIGludCBwc3Bfc3dfaW5pdCh2 b2lkICpoYW5kbGUpCiAJCXBzcC0+Y21kX3N1Ym1pdCA9IHBzcF92M18xX2NtZF9zdWJtaXQ7CiAJ CXBzcC0+Y29tcGFyZV9zcmFtX2RhdGEgPSBwc3BfdjNfMV9jb21wYXJlX3NyYW1fZGF0YTsKIAkJ cHNwLT5zbXVfcmVsb2FkX3F1aXJrID0gcHNwX3YzXzFfc211X3JlbG9hZF9xdWlyazsKKwkJcHNw LT5tb2RlMV9yZXNldCA9IHBzcF92M18xX21vZGUxX3Jlc2V0OwogCQlicmVhazsKIAljYXNlIENI SVBfUkFWRU46CiAJCXBzcC0+aW5pdF9taWNyb2NvZGUgPSBwc3BfdjEwXzBfaW5pdF9taWNyb2Nv ZGU7CkBAIC03Miw2ICs3Myw3IEBAIHN0YXRpYyBpbnQgcHNwX3N3X2luaXQodm9pZCAqaGFuZGxl KQogCQlwc3AtPnJpbmdfZGVzdHJveSA9IHBzcF92MTBfMF9yaW5nX2Rlc3Ryb3k7CiAJCXBzcC0+ Y21kX3N1Ym1pdCA9IHBzcF92MTBfMF9jbWRfc3VibWl0OwogCQlwc3AtPmNvbXBhcmVfc3JhbV9k YXRhID0gcHNwX3YxMF8wX2NvbXBhcmVfc3JhbV9kYXRhOworCQlwc3AtPm1vZGUxX3Jlc2V0ID0g cHNwX3YxMF8wX21vZGUxX3Jlc2V0OwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVJ TlZBTDsKQEAgLTQ5Nyw2ICs0OTksMTIgQEAgc3RhdGljIGludCBwc3BfcmVzdW1lKHZvaWQgKmhh bmRsZSkKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IHBzcF9yZXNldCh2b2lkKiBoYW5k bGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7CisJcmV0dXJuIHBzcF9tb2RlMV9yZXNldCgmYWRldi0+cHNwKTsKK30KKwog c3RhdGljIGJvb2wgcHNwX2NoZWNrX2Z3X2xvYWRpbmdfc3RhdHVzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCQkJCQllbnVtIEFNREdQVV9VQ09ERV9JRCB1Y29kZV90eXBlKQogewpAQCAt NTQxLDcgKzU0OSw3IEBAIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgcHNwX2lwX2Z1bmNzID0g ewogCS5yZXN1bWUgPSBwc3BfcmVzdW1lLAogCS5pc19pZGxlID0gTlVMTCwKIAkud2FpdF9mb3Jf aWRsZSA9IE5VTEwsCi0JLnNvZnRfcmVzZXQgPSBOVUxMLAorCS5zb2Z0X3Jlc2V0ID0gcHNwX3Jl c2V0LAogCS5zZXRfY2xvY2tnYXRpbmdfc3RhdGUgPSBwc3Bfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRl LAogCS5zZXRfcG93ZXJnYXRpbmdfc3RhdGUgPSBwc3Bfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlLAog fTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaAppbmRleCAxYjdkMTJkLi5j ZTQ2NTQ1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bz cC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaApAQCAtNzYs NiArNzYsNyBAQCBzdHJ1Y3QgcHNwX2NvbnRleHQKIAkJCQkgIHN0cnVjdCBhbWRncHVfZmlybXdh cmVfaW5mbyAqdWNvZGUsCiAJCQkJICBlbnVtIEFNREdQVV9VQ09ERV9JRCB1Y29kZV90eXBlKTsK IAlib29sICgqc211X3JlbG9hZF9xdWlyaykoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApOworCWlu dCAoKm1vZGUxX3Jlc2V0KShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCk7CiAKIAkvKiBmZW5jZSBi dWZmZXIgKi8KIAlzdHJ1Y3QgYW1kZ3B1X2JvIAkJKmZ3X3ByaV9ibzsKQEAgLTEzOSw2ICsxNDAs OCBAQCBzdHJ1Y3QgYW1kZ3B1X3BzcF9mdW5jcyB7CiAJCSgocHNwKS0+Ym9vdGxvYWRlcl9sb2Fk X3NvcyA/IChwc3ApLT5ib290bG9hZGVyX2xvYWRfc29zKChwc3ApKSA6IDApCiAjZGVmaW5lIHBz cF9zbXVfcmVsb2FkX3F1aXJrKHBzcCkgXAogCQkoKHBzcCktPnNtdV9yZWxvYWRfcXVpcmsgPyAo cHNwKS0+c211X3JlbG9hZF9xdWlyaygocHNwKSkgOiBmYWxzZSkKKyNkZWZpbmUgcHNwX21vZGUx X3Jlc2V0KHBzcCkgXAorCQkoKHBzcCktPm1vZGUxX3Jlc2V0ID8gKHBzcCktPm1vZGUxX3Jlc2V0 KChwc3ApKSA6IGZhbHNlKQogCiBleHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBwc3Bf aXBfZnVuY3M7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92 MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMKaW5kZXggNmIz MjRkYS4uY2JjNDNiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNw X3YxMF8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMKQEAg LTQwNiwzICs0MDYsMTAgQEAgYm9vbCBwc3BfdjEwXzBfY29tcGFyZV9zcmFtX2RhdGEoc3RydWN0 IHBzcF9jb250ZXh0ICpwc3AsCiAKIAlyZXR1cm4gdHJ1ZTsKIH0KKworCitpbnQgcHNwX3YxMF8w X21vZGUxX3Jlc2V0KHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQoreworCURSTV9JTkZPKCJwc3Ag bW9kZSAxIHJlc2V0IG5vdCBzdXBwb3J0ZWQgbm93ISBcbiIpOworCXJldHVybiAtRUlOVkFMOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuaAppbmRleCAzYWYzYWQxLi40NTFl ODMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuaApAQCAtNDUsNCArNDUs NiBAQCBleHRlcm4gaW50IHBzcF92MTBfMF9jbWRfc3VibWl0KHN0cnVjdCBwc3BfY29udGV4dCAq cHNwLAogZXh0ZXJuIGJvb2wgcHNwX3YxMF8wX2NvbXBhcmVfc3JhbV9kYXRhKHN0cnVjdCBwc3Bf Y29udGV4dCAqcHNwLAogCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Zpcm13YXJlX2luZm8gKnVj b2RlLAogCQkJCSAgICAgICBlbnVtIEFNREdQVV9VQ09ERV9JRCB1Y29kZV90eXBlKTsKKworZXh0 ZXJuIGludCBwc3BfdjEwXzBfbW9kZTFfcmVzZXQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApOwog I2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYwppbmRleCBlYjczOTMxLi4w MWE4OTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMKQEAgLTUxNyw3ICs1 MTcsNyBAQCBib29sIHBzcF92M18xX2NvbXBhcmVfc3JhbV9kYXRhKHN0cnVjdCBwc3BfY29udGV4 dCAqcHNwLAogCQl1Y29kZV9zaXplIC09IDQ7CiAJfQogCi0JcmV0dXJuIHRydWU7CisJcmV0dXJu IHRydWU7IAogfQogCiBib29sIHBzcF92M18xX3NtdV9yZWxvYWRfcXVpcmsoc3RydWN0IHBzcF9j b250ZXh0ICpwc3ApCkBAIC01MzAsMyArNTMwLDM3IEBAIGJvb2wgcHNwX3YzXzFfc211X3JlbG9h ZF9xdWlyayhzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKIAlyZWcgPSBSUkVHMzJfU09DMTUoTkJJ TywgMCwgbW1QQ0lFX0RBVEEyKTsKIAlyZXR1cm4gKHJlZyAmIE1QMV9GSVJNV0FSRV9GTEFHU19f SU5URVJSVVBUU19FTkFCTEVEX01BU0spID8gdHJ1ZSA6IGZhbHNlOwogfQorCitpbnQgcHNwX3Yz XzFfbW9kZTFfcmVzZXQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCit7CisJaW50IHJldDsKKwl1 aW50MzJfdCBvZmZzZXQ7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBwc3AtPmFkZXY7 CisKKwlvZmZzZXQgPSBTT0MxNV9SRUdfT0ZGU0VUKE1QMCwgMCwgbW1NUDBfU01OX0MyUE1TR182 NCk7CisKKwlyZXQgPSBwc3Bfd2FpdF9mb3IocHNwLCBvZmZzZXQsIDB4ODAwMDAwMDAsIDB4ODAw MEZGRkYsIGZhbHNlKTsKKworCWlmIChyZXQpIHsKKwkJRFJNX0lORk8oInBzcCBpcyBub3Qgd29y a2luZyBjb3JyZWN0bHkgYmVmb3JlIG1vZGUxIHJlc2V0IVxuIik7CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCS8qc2VuZCB0aGUgbW9kZSAxIHJlc2V0IGNvbW1hbmQqLworCVdSRUczMihvZmZz ZXQsIDB4NzAwMDApOworCisJbWRlbGF5KDEwMDApOworCisJb2Zmc2V0ID0gU09DMTVfUkVHX09G RlNFVChNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzMpOworCisJcmV0ID0gcHNwX3dhaXRfZm9y KHBzcCwgb2Zmc2V0LCAweDgwMDAwMDAwLCAweDgwMDAwMDAwLCBmYWxzZSk7CisKKwlpZiAocmV0 KSB7CisJCURSTV9JTkZPKCJwc3AgbW9kZSAxIHJlc2V0IGZhaWxlZCFcbiIpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlEUk1fSU5GTygicHNwIG1vZGUxIHJlc2V0IHN1Y2NlZWQgXG4iKTsK KworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv cHNwX3YzXzEuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmgKaW5kZXgg NWFmMjIzMS4uYjA1ZGJhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv cHNwX3YzXzEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5oCkBA IC01Myw0ICs1Myw1IEBAIGV4dGVybiBib29sIHBzcF92M18xX2NvbXBhcmVfc3JhbV9kYXRhKHN0 cnVjdCBwc3BfY29udGV4dCAqcHNwLAogCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Zpcm13YXJl X2luZm8gKnVjb2RlLAogCQkJCSAgICAgICBlbnVtIEFNREdQVV9VQ09ERV9JRCB1Y29kZV90eXBl KTsKIGV4dGVybiBib29sIHBzcF92M18xX3NtdV9yZWxvYWRfcXVpcmsoc3RydWN0IHBzcF9jb250 ZXh0ICpwc3ApOworZXh0ZXJuIGludCBwc3BfdjNfMV9tb2RlMV9yZXNldChzdHJ1Y3QgcHNwX2Nv bnRleHQgKnBzcCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NvYzE1LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jCmluZGV4IGE3 NGQ2MTYuLjE5MGJlMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Nv YzE1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYwpAQCAtNDA3LDE4 ICs0MDcsMzcgQEAgc3RhdGljIGludCBzb2MxNV9yZWFkX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1MzIgc2VfbnVtLAogCXJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMg dm9pZCBzb2MxNV9ncHVfcGNpX2NvbmZpZ19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKK3N0YXRpYyBpbnQgc29jMTVfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIHsKIAl1MzIgaTsKKwl1MzIgKnBjaV9yZWdzOworCisJcGNpX3JlZ3MgPSBrbWFsbG9jKDEy OCAqIHNpemVvZih1MzIpLCBHRlBfS0VSTkVMKTsKKworCWlmIChwY2lfcmVncyA9PSBOVUxMKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWFtZGdwdV9hdG9tYmlvc19zY3JhdGNoX3JlZ3NfZW5naW5l X2h1bmcoYWRldiwgdHJ1ZSk7CiAKLQlkZXZfaW5mbyhhZGV2LT5kZXYsICJHUFUgcGNpIGNvbmZp ZyByZXNldFxuIik7CisJZGV2X2luZm8oYWRldi0+ZGV2LCAiR1BVIHJlc2V0XG4iKTsKIAogCS8q IGRpc2FibGUgQk0gKi8KIAlwY2lfY2xlYXJfbWFzdGVyKGFkZXYtPnBkZXYpOwotCS8qIHJlc2V0 ICovCi0JYW1kZ3B1X3BjaV9jb25maWdfcmVzZXQoYWRldik7CiAKLQl1ZGVsYXkoMTAwKTsKKwlm b3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHsKKwkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGFkZXYt PnBkZXYsIGkqNCwgJnBjaV9yZWdzW2ldKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgQU1ER1BV X01BWF9JUF9OVU07IGkrKykgeworCQlpZiAoYWRldi0+aXBfYmxvY2tzW2ldLnZlcnNpb24tPnR5 cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfUFNQKXsKKwkJCWFkZXYtPmlwX2Jsb2Nrc1tpXS52ZXJz aW9uLT5mdW5jcy0+c29mdF9yZXNldCgodm9pZCAqKWFkZXYpOworCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHsKKwkJcGNpX3dyaXRlX2NvbmZpZ19kd29y ZChhZGV2LT5wZGV2LCBpKjQsIHBjaV9yZWdzW2ldKTsKKwl9CiAKIAkvKiB3YWl0IGZvciBhc2lj IHRvIGNvbWUgb3V0IG9mIHJlc2V0ICovCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPnVzZWNfdGlt ZW91dDsgaSsrKSB7CkBAIC00MzAsMTYgKzQ0OSwxMCBAQCBzdGF0aWMgdm9pZCBzb2MxNV9ncHVf cGNpX2NvbmZpZ19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJdWRlbGF5KDEp OwogCX0KIAotfQotCi1zdGF0aWMgaW50IHNvYzE1X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCi17Ci0JYW1kZ3B1X2F0b21iaW9zX3NjcmF0Y2hfcmVnc19lbmdpbmVfaHVu ZyhhZGV2LCB0cnVlKTsKLQotCXNvYzE1X2dwdV9wY2lfY29uZmlnX3Jlc2V0KGFkZXYpOwotCiAJ YW1kZ3B1X2F0b21iaW9zX3NjcmF0Y2hfcmVnc19lbmdpbmVfaHVuZyhhZGV2LCBmYWxzZSk7CiAK KwlrZnJlZShwY2lfcmVncyk7CisKIAlyZXR1cm4gMDsKIH0KIAotLSAKMi43LjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=