From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH] drm/amdgpu: implement harvesting support for UVD 7.2 Date: Mon, 23 Jul 2018 15:09:11 -0500 Message-ID: <20180723200911.22086-1-alexander.deucher@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: Alex Deucher UHJvcGVybHkgaGFuZGxlIGNhc2VzIHdoZXJlIG9uZSBvciBtb3JlIGluc3RhbmNlIG9mIHRoZSBJ UApibG9jayBtYXkgYmUgaGFydmVzdGVkLgoKU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9rbXMuYyAgICAgICB8IDEwICsrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcXVldWVfbWdyLmMgfCAxMyArKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdXZkLmMgICAgICAgfCAxMSArKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV91dmQuaCAgICAgICB8ICA1ICsrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvdXZkX3Y3XzAuYyAgICAgICAgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKy0t CiA1IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCmluZGV4IDI1OGI2ZjczY2JkZi4uZjRk Mzc5Y2Q0ZTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf a21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCkBAIC0z NDgsOCArMzQ4LDExIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2luZm9faW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlCiAJCQlicmVhazsKIAkJY2Fz ZSBBTURHUFVfSFdfSVBfVVZEOgogCQkJdHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX1VWRDsKLQkJ CWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBpKyspCisJCQlmb3IgKGkg PSAwOyBpIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsgaSsrKSB7CisJCQkJaWYgKGFkZXYtPnV2 ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJCQljb250aW51ZTsKIAkJCQlyaW5nX21h c2sgfD0gKChhZGV2LT51dmQuaW5zdFtpXS5yaW5nLnJlYWR5ID8gMSA6IDApIDw8IGkpOworCQkJ fQogCQkJaWJfc3RhcnRfYWxpZ25tZW50ID0gNjQ7CiAJCQlpYl9zaXplX2FsaWdubWVudCA9IDY0 OwogCQkJYnJlYWs7CkBAIC0zNjIsMTEgKzM2NSwxNCBAQCBzdGF0aWMgaW50IGFtZGdwdV9pbmZv X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZQogCQkJYnJlYWs7CiAJCWNhc2UgQU1ER1BVX0hXX0lQX1VWRF9FTkM6CiAJCQl0eXBlID0gQU1E X0lQX0JMT0NLX1RZUEVfVVZEOwotCQkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZk X2luc3Q7IGkrKykKKwkJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBp KyspIHsKKwkJCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQkJ CWNvbnRpbnVlOwogCQkJCWZvciAoaiA9IDA7IGogPCBhZGV2LT51dmQubnVtX2VuY19yaW5nczsg aisrKQogCQkJCQlyaW5nX21hc2sgfD0KIAkJCQkJKChhZGV2LT51dmQuaW5zdFtpXS5yaW5nX2Vu Y1tqXS5yZWFkeSA/IDEgOiAwKSA8PAogCQkJCQkoaiArIGkgKiBhZGV2LT51dmQubnVtX2VuY19y aW5ncykpOworCQkJfQogCQkJaWJfc3RhcnRfYWxpZ25tZW50ID0gNjQ7CiAJCQlpYl9zaXplX2Fs aWdubWVudCA9IDY0OwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcXVldWVfbWdyLmMKaW5kZXggZWE5ODUwYzkyMjRkLi5iYjg4NDExZDdjMzUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmMKQEAgLTIxOSw3 ICsyMTksNyBAQCBpbnQgYW1kZ3B1X3F1ZXVlX21ncl9tYXAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkgdTMyIGh3X2lwLCB1MzIgaW5zdGFuY2UsIHUzMiByaW5nLAogCQkJIHN0cnVj dCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQogewotCWludCByLCBpcF9udW1fcmluZ3M7CisJaW50 IGksIHIsIGlwX251bV9yaW5nczsKIAlzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVy ID0gJm1nci0+bWFwcGVyW2h3X2lwXTsKIAogCWlmICghYWRldiB8fCAhbWdyIHx8ICFvdXRfcmlu ZykKQEAgLTI0OCwxNCArMjQ4LDIxIEBAIGludCBhbWRncHVfcXVldWVfbWdyX21hcChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJaXBfbnVtX3JpbmdzID0gYWRldi0+c2RtYS5udW1faW5z dGFuY2VzOwogCQlicmVhazsKIAljYXNlIEFNREdQVV9IV19JUF9VVkQ6Ci0JCWlwX251bV9yaW5n cyA9IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7CisJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQu bnVtX3V2ZF9pbnN0OyBpKyspIHsKKwkJCWlmICghKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAm ICgxIDw8IGkpKSkKKwkJCQlpcF9udW1fcmluZ3MrKzsKKwkJfQogCQlicmVhazsKIAljYXNlIEFN REdQVV9IV19JUF9WQ0U6CiAJCWlwX251bV9yaW5ncyA9IGFkZXYtPnZjZS5udW1fcmluZ3M7CiAJ CWJyZWFrOwogCWNhc2UgQU1ER1BVX0hXX0lQX1VWRF9FTkM6CisJCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBpKyspIHsKKwkJCWlmICghKGFkZXYtPnV2ZC5oYXJ2ZXN0 X2NvbmZpZyAmICgxIDw8IGkpKSkKKwkJCQlpcF9udW1fcmluZ3MrKzsKKwkJfQogCQlpcF9udW1f cmluZ3MgPQotCQkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKiBhZGV2LT51dmQubnVtX3V2ZF9p bnN0OworCQkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKiBpcF9udW1fcmluZ3M7CiAJCWJyZWFr OwogCWNhc2UgQU1ER1BVX0hXX0lQX1ZDTl9ERUM6CiAJCWlwX251bV9yaW5ncyA9IDE7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKaW5kZXggODBiNWM0NTNmOGMxLi5hMDc1 NDhjOTlhYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91 dmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKQEAgLTI1 NSw3ICsyNTUsOCBAQCBpbnQgYW1kZ3B1X3V2ZF9zd19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogCQlib19zaXplICs9IEFNREdQVV9HUFVfUEFHRV9BTElHTihsZTMyX3RvX2NwdSho ZHItPnVjb2RlX3NpemVfYnl0ZXMpICsgOCk7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZk Lm51bV91dmRfaW5zdDsgaisrKSB7Ci0KKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAm ICgxIDw8IGopKQorCQkJY29udGludWU7CiAJCXIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChh ZGV2LCBib19zaXplLCBQQUdFX1NJWkUsCiAJCQkJCSAgICBBTURHUFVfR0VNX0RPTUFJTl9WUkFN LCAmYWRldi0+dXZkLmluc3Rbal0udmNwdV9ibywKIAkJCQkJICAgICZhZGV2LT51dmQuaW5zdFtq XS5ncHVfYWRkciwgJmFkZXYtPnV2ZC5pbnN0W2pdLmNwdV9hZGRyKTsKQEAgLTMwOSw2ICszMTAs OCBAQCBpbnQgYW1kZ3B1X3V2ZF9zd19maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CQkJCSAmYWRldi0+dXZkLmVudGl0eSk7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZkLm51 bV91dmRfaW5zdDsgKytqKSB7CisJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8 PCBqKSkKKwkJCWNvbnRpbnVlOwogCQlrZnJlZShhZGV2LT51dmQuaW5zdFtqXS5zYXZlZF9ibyk7 CiAKIAkJYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT51dmQuaW5zdFtqXS52Y3B1X2JvLApA QCAtMzQ0LDYgKzM0Nyw4IEBAIGludCBhbWRncHVfdXZkX3N1c3BlbmQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJfQogCiAJZm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5udW1fdXZkX2lu c3Q7ICsraikgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaikpCisJ CQljb250aW51ZTsKIAkJaWYgKGFkZXYtPnV2ZC5pbnN0W2pdLnZjcHVfYm8gPT0gTlVMTCkKIAkJ CWNvbnRpbnVlOwogCkBAIC0zNjYsNiArMzcxLDggQEAgaW50IGFtZGdwdV91dmRfcmVzdW1lKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGFk ZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29u ZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJaWYgKGFkZXYtPnV2ZC5pbnN0W2ldLnZj cHVfYm8gPT0gTlVMTCkKIAkJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xMTYwLDYgKzExNjcsOCBA QCBzdGF0aWMgdm9pZCBhbWRncHVfdXZkX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAl1bnNpZ25lZCBmZW5jZXMgPSAwLCBpLCBqOwogCiAJZm9yIChpID0gMDsg aSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+dXZkLmhhcnZl c3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJZmVuY2VzICs9IGFtZGdwdV9m ZW5jZV9jb3VudF9lbWl0dGVkKCZhZGV2LT51dmQuaW5zdFtpXS5yaW5nKTsKIAkJZm9yIChqID0g MDsgaiA8IGFkZXYtPnV2ZC5udW1fZW5jX3JpbmdzOyArK2opIHsKIAkJCWZlbmNlcyArPSBhbWRn cHVfZmVuY2VfY291bnRfZW1pdHRlZCgmYWRldi0+dXZkLmluc3RbaV0ucmluZ19lbmNbal0pOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5oCmluZGV4IDY2ODcyMjg2YWIxMi4u OWNmNDI0NTRiYTgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdXZkLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5oCkBA IC00Niw4ICs0NiwxMiBAQCBzdHJ1Y3QgYW1kZ3B1X3V2ZF9pbnN0IHsKIAlzdHJ1Y3QgYW1kZ3B1 X3JpbmcJcmluZ19lbmNbQU1ER1BVX01BWF9VVkRfRU5DX1JJTkdTXTsKIAlzdHJ1Y3QgYW1kZ3B1 X2lycV9zcmMJaXJxOwogCXVpbnQzMl90ICAgICAgICAgICAgICAgIHNyYm1fc29mdF9yZXNldDsK Kwl1aW50MzJfdCAgICAgICAgICAgICAgICBpbnN0YW5jZTsKIH07CiAKKyNkZWZpbmUgQU1ER1BV X1VWRF9IQVJWRVNUX1VWRDAgKDEgPDwgMCkKKyNkZWZpbmUgQU1ER1BVX1VWRF9IQVJWRVNUX1VW RDEgKDEgPDwgMSkKKwogc3RydWN0IGFtZGdwdV91dmQgewogCWNvbnN0IHN0cnVjdCBmaXJtd2Fy ZQkqZnc7CS8qIFVWRCBmaXJtd2FyZSAqLwogCXVuc2lnbmVkCQlmd192ZXJzaW9uOwpAQCAtNjEs NiArNjUsNyBAQCBzdHJ1Y3QgYW1kZ3B1X3V2ZCB7CiAJYXRvbWljX3QJCWhhbmRsZXNbQU1ER1BV X01BWF9VVkRfSEFORExFU107CiAJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgZW50aXR5OwogCXN0 cnVjdCBkZWxheWVkX3dvcmsJaWRsZV93b3JrOworCXVuc2lnbmVkCQloYXJ2ZXN0X2NvbmZpZzsK IH07CiAKIGludCBhbWRncHVfdXZkX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92N18wLmMKaW5kZXggZGI1ZjNkNzhhYjEyLi44 MTc5MzE3YmU3NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92 N18wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYwpAQCAtNDEs NiArNDEsMTIgQEAKICNpbmNsdWRlICJtbWh1Yi9tbWh1Yl8xXzBfc2hfbWFzay5oIgogI2luY2x1 ZGUgIml2c3JjaWQvdXZkL2lycXNyY3NfdXZkXzdfMC5oIgogCisjZGVmaW5lIG1tVVZEX1BHMF9D Q19VVkRfSEFSVkVTVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMGM3CisjZGVmaW5lIG1tVVZEX1BHMF9DQ19V VkRfSEFSVkVTVElOR19CQVNFX0lEWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQorLy9VVkRfUEcwX0NDX1VWRF9IQVJWRVNUSU5HCisj ZGVmaW5lIFVWRF9QRzBfQ0NfVVZEX0hBUlZFU1RJTkdfX1VWRF9ESVNBQkxFX19TSElGVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQor I2RlZmluZSBVVkRfUEcwX0NDX1VWRF9IQVJWRVNUSU5HX19VVkRfRElTQUJMRV9NQVNLICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAw MDAwMDAyTAorCiAjZGVmaW5lIFVWRDdfTUFYX0hXX0lOU1RBTkNFU19WRUdBMjAJCQkyCiAKIHN0 YXRpYyB2b2lkIHV2ZF92N18wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KTsKQEAgLTM3MCwxMCArMzc2LDI1IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfZW5jX3Jpbmdf dGVzdF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgdGltZW91dCkKIHN0YXRpYyBp bnQgdXZkX3Y3XzBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCiB7CiAJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Ci0JaWYgKGFkZXYt PmFzaWNfdHlwZSA9PSBDSElQX1ZFR0EyMCkKKworCWlmIChhZGV2LT5hc2ljX3R5cGUgPT0gQ0hJ UF9WRUdBMjApIHsKKwkJdTMyIGhhcnZlc3Q7CisJCWludCBpOworCiAJCWFkZXYtPnV2ZC5udW1f dXZkX2luc3QgPSBVVkQ3X01BWF9IV19JTlNUQU5DRVNfVkVHQTIwOwotCWVsc2UKKwkJZm9yIChp ID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykgeworCQkJaGFydmVzdCA9IFJS RUczMl9TT0MxNShVVkQsIGksIG1tVVZEX1BHMF9DQ19VVkRfSEFSVkVTVElORyk7CisJCQlpZiAo aGFydmVzdCAmIFVWRF9QRzBfQ0NfVVZEX0hBUlZFU1RJTkdfX1VWRF9ESVNBQkxFX01BU0spIHsK KwkJCQlhZGV2LT51dmQuaGFydmVzdF9jb25maWcgfD0gMSA8PCBpOworCQkJfQorCQl9CisJCWlm IChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgPT0gKEFNREdQVV9VVkRfSEFSVkVTVF9VVkQwIHwK KwkJCQkJCSBBTURHUFVfVVZEX0hBUlZFU1RfVVZEMSkpCisJCQkvKiBib3RoIGluc3RhbmNlcyBh cmUgaGFydmVzdGVkLCBkaXNhYmxlIHRoZSBibG9jayAqLworCQkJcmV0dXJuIC1FTk9FTlQ7CisJ fSBlbHNlIHsKIAkJYWRldi0+dXZkLm51bV91dmRfaW5zdCA9IDE7CisJfQogCiAJaWYgKGFtZGdw dV9zcmlvdl92ZihhZGV2KSkKIAkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgPSAxOwpAQCAtMzkz LDYgKzQxNCw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCiAJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5k bGU7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsgaisrKSB7CisJ CWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBqKSkKKwkJCWNvbnRpbnVlOwog CQkvKiBVVkQgVFJBUCAqLwogCQlyID0gYW1kZ3B1X2lycV9hZGRfaWQoYWRldiwgYW1kZ3B1X2lo X2NsaWVudGlkX3V2ZHNbal0sIFVWRF83XzBfX1NSQ0lEX19VVkRfU1lTVEVNX01FU1NBR0VfSU5U RVJSVVBULCAmYWRldi0+dXZkLmluc3Rbal0uaXJxKTsKIAkJaWYgKHIpCkBAIC00MjUsNiArNDQ4 LDggQEAgc3RhdGljIGludCB1dmRfdjdfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkKIAkJcmV0dXJu IHI7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsgaisrKSB7CisJ CWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBqKSkKKwkJCWNvbnRpbnVlOwog CQlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewogCQkJcmluZyA9ICZhZGV2LT51dmQuaW5z dFtqXS5yaW5nOwogCQkJc3ByaW50ZihyaW5nLT5uYW1lLCAidXZkPCVkPiIsIGopOwpAQCAtNDcy LDYgKzQ5Nyw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfc3dfZmluaSh2b2lkICpoYW5kbGUpCiAJ CXJldHVybiByOwogCiAJZm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsr aikgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaikpCisJCQljb250 aW51ZTsKIAkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fZW5jX3JpbmdzOyArK2kpCiAJ CQlhbWRncHVfcmluZ19maW5pKCZhZGV2LT51dmQuaW5zdFtqXS5yaW5nX2VuY1tpXSk7CiAJfQpA QCAtNTAwLDYgKzUyNyw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfaHdfaW5pdCh2b2lkICpoYW5k bGUpCiAJCWdvdG8gZG9uZTsKIAogCWZvciAoaiA9IDA7IGogPCBhZGV2LT51dmQubnVtX3V2ZF9p bnN0OyArK2opIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGopKQor CQkJY29udGludWU7CiAJCXJpbmcgPSAmYWRldi0+dXZkLmluc3Rbal0ucmluZzsKIAogCQlpZiAo IWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewpAQCAtNTc5LDggKzYwOCwxMSBAQCBzdGF0aWMgaW50 IHV2ZF92N18wX2h3X2Zpbmkodm9pZCAqaGFuZGxlKQogCQlEUk1fREVCVUcoIkZvciBTUklPViBj bGllbnQsIHNob3VsZG4ndCBkbyBhbnl0aGluZy5cbiIpOwogCX0KIAotCWZvciAoaSA9IDA7IGkg PCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpCisJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2 ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYg KDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJYWRldi0+dXZkLmluc3RbaV0ucmluZy5yZWFkeSA9 IGZhbHNlOworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNjIzLDYgKzY1NSw4IEBAIHN0YXRpYyB2 b2lkIHV2ZF92N18wX21jX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpbnQg aTsKIAogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpIHsKKwkJ aWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CiAJ CWlmIChhZGV2LT5maXJtd2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURfUFNQKSB7CiAJ CQlXUkVHMzJfU09DMTUoVVZELCBpLCBtbVVWRF9MTUlfVkNQVV9DQUNIRV82NEJJVF9CQVJfTE9X LAogCQkJCWxvd2VyXzMyX2JpdHMoYWRldi0+ZmlybXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lE X1VWRF0ubWNfYWRkcikpOwpAQCAtNjk1LDYgKzcyOSw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBf bW1zY2hfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJV1JFRzMyX1NPQzE1KFZD RSwgMCwgbW1WQ0VfTU1TQ0hfVkZfTUFJTEJPWF9SRVNQLCAwKTsKIAogCWZvciAoaSA9IDA7IGkg PCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0 X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CiAJCVdET09SQkVMTDMyKGFkZXYtPnV2 ZC5pbnN0W2ldLnJpbmdfZW5jWzBdLmRvb3JiZWxsX2luZGV4LCAwKTsKIAkJYWRldi0+d2Iud2Jb YWRldi0+dXZkLmluc3RbaV0ucmluZ19lbmNbMF0ud3B0cl9vZmZzXSA9IDA7CiAJCWFkZXYtPnV2 ZC5pbnN0W2ldLnJpbmdfZW5jWzBdLndwdHIgPSAwOwpAQCAtNzUxLDYgKzc4Nyw4IEBAIHN0YXRp YyBpbnQgdXZkX3Y3XzBfc3Jpb3Zfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CWluaXRfdGFibGUgKz0gaGVhZGVyLT51dmRfdGFibGVfb2Zmc2V0OwogCiAJCWZvciAoaSA9IDA7 IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpIHsKKwkJCWlmIChhZGV2LT51dmQuaGFy dmVzdF9jb25maWcgJiAoMSA8PCBpKSkKKwkJCQljb250aW51ZTsKIAkJCXJpbmcgPSAmYWRldi0+ dXZkLmluc3RbaV0ucmluZzsKIAkJCXJpbmctPndwdHIgPSAwOwogCQkJc2l6ZSA9IEFNREdQVV9H UFVfUEFHRV9BTElHTihhZGV2LT51dmQuZnctPnNpemUgKyA0KTsKQEAgLTg5MCw2ICs5MjgsOCBA QCBzdGF0aWMgaW50IHV2ZF92N18wX3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CWludCBpLCBqLCBrLCByOwogCiAJZm9yIChrID0gMDsgayA8IGFkZXYtPnV2ZC5udW1fdXZkX2lu c3Q7ICsraykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaykpCisJ CQljb250aW51ZTsKIAkJLyogZGlzYWJsZSBEUEcgKi8KIAkJV1JFRzMyX1AoU09DMTVfUkVHX09G RlNFVChVVkQsIGssIG1tVVZEX1BPV0VSX1NUQVRVUyksIDAsCiAJCQkJflVWRF9QT1dFUl9TVEFU VVNfX1VWRF9QR19NT0RFX01BU0spOwpAQCAtOTAyLDYgKzk0Miw4IEBAIHN0YXRpYyBpbnQgdXZk X3Y3XzBfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdXZkX3Y3XzBfbWNfcmVz dW1lKGFkZXYpOwogCiAJZm9yIChrID0gMDsgayA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsr aykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaykpCisJCQljb250 aW51ZTsKIAkJcmluZyA9ICZhZGV2LT51dmQuaW5zdFtrXS5yaW5nOwogCQkvKiBkaXNhYmxlIGNs b2NrIGdhdGluZyAqLwogCQlXUkVHMzJfUChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgaywgbW1VVkRf Q0dDX0NUUkwpLCAwLApAQCAtMTA2OSw2ICsxMTExLDggQEAgc3RhdGljIHZvaWQgdXZkX3Y3XzBf c3RvcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl1aW50OF90IGkgPSAwOwogCiAJZm9y IChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+ dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJLyogZm9yY2Ug UkJDIGludG8gaWRsZSBzdGF0ZSAqLwogCQlXUkVHMzJfU09DMTUoVVZELCBpLCBtbVVWRF9SQkNf UkJfQ05UTCwgMHgxMTAxMDEwMSk7CiAKQEAgLTE3NTYsNiArMTgwMCw4IEBAIHN0YXRpYyB2b2lk IHV2ZF92N18wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWlu dCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykgewor CQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsK IAkJYWRldi0+dXZkLmluc3RbaV0ucmluZy5mdW5jcyA9ICZ1dmRfdjdfMF9yaW5nX3ZtX2Z1bmNz OwogCQlhZGV2LT51dmQuaW5zdFtpXS5yaW5nLm1lID0gaTsKIAkJRFJNX0lORk8oIlVWRCglZCkg aXMgZW5hYmxlZCBpbiBWTSBtb2RlXG4iLCBpKTsKQEAgLTE3NjcsNiArMTgxMyw4IEBAIHN0YXRp YyB2b2lkIHV2ZF92N18wX3NldF9lbmNfcmluZ19mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIAlpbnQgaSwgajsKIAogCWZvciAoaiA9IDA7IGogPCBhZGV2LT51dmQubnVtX3V2ZF9p bnN0OyBqKyspIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGopKQor CQkJY29udGludWU7CiAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX2VuY19yaW5nczsg KytpKSB7CiAJCQlhZGV2LT51dmQuaW5zdFtqXS5yaW5nX2VuY1tpXS5mdW5jcyA9ICZ1dmRfdjdf MF9lbmNfcmluZ192bV9mdW5jczsKIAkJCWFkZXYtPnV2ZC5pbnN0W2pdLnJpbmdfZW5jW2ldLm1l ID0gajsKQEAgLTE3ODYsNiArMTgzNCw4IEBAIHN0YXRpYyB2b2lkIHV2ZF92N18wX3NldF9pcnFf ZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsgaSsrKSB7CisJCWlmIChhZGV2LT51dmQuaGFy dmVzdF9jb25maWcgJiAoMSA8PCBpKSkKKwkJCWNvbnRpbnVlOwogCQlhZGV2LT51dmQuaW5zdFtp XS5pcnEubnVtX3R5cGVzID0gYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKyAxOwogCQlhZGV2LT51 dmQuaW5zdFtpXS5pcnEuZnVuY3MgPSAmdXZkX3Y3XzBfaXJxX2Z1bmNzOwogCX0KLS0gCjIuMTMu NgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==