From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH] drm/amdgpu: implement harvesting support for UVD 7.2 (v2) Date: Mon, 23 Jul 2018 16:53:03 -0500 Message-ID: <20180723215303.7869-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 UApibG9jayBtYXkgYmUgaGFydmVzdGVkLgoKdjI6IG1ha2Ugc3VyZSBpcF9udW1fcmluZ3MgaXMg aW5pdGlhbGl6ZWQgYW1kZ3B1X3F1ZXVlX21nci5jCgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNo ZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2ttcy5jICAgICAgIHwgMTAgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYyB8IDEzICsrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV91dmQuYyAgICAgICB8IDExICsrKysrLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5oICAgICAgIHwgIDUgKysrCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS91dmRfdjdfMC5jICAgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIDUgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKaW5kZXggMjU4YjZmNzNjYmRm Li5mNGQzNzljZDRlNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMK QEAgLTM0OCw4ICszNDgsMTEgQEAgc3RhdGljIGludCBhbWRncHVfaW5mb19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUKIAkJCWJyZWFrOwog CQljYXNlIEFNREdQVV9IV19JUF9VVkQ6CiAJCQl0eXBlID0gQU1EX0lQX0JMT0NLX1RZUEVfVVZE OwotCQkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykKKwkJCWZv ciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBpKyspIHsKKwkJCQlpZiAoYWRl di0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQkJCWNvbnRpbnVlOwogCQkJCXJp bmdfbWFzayB8PSAoKGFkZXYtPnV2ZC5pbnN0W2ldLnJpbmcucmVhZHkgPyAxIDogMCkgPDwgaSk7 CisJCQl9CiAJCQlpYl9zdGFydF9hbGlnbm1lbnQgPSA2NDsKIAkJCWliX3NpemVfYWxpZ25tZW50 ID0gNjQ7CiAJCQlicmVhazsKQEAgLTM2MiwxMSArMzY1LDE0IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2luZm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRy bV9maWxlCiAJCQlicmVhazsKIAkJY2FzZSBBTURHUFVfSFdfSVBfVVZEX0VOQzoKIAkJCXR5cGUg PSBBTURfSVBfQkxPQ0tfVFlQRV9VVkQ7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dXZkLm51 bV91dmRfaW5zdDsgaSsrKQorCQkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2lu c3Q7IGkrKykgeworCQkJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkK KwkJCQkJY29udGludWU7CiAJCQkJZm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5udW1fZW5jX3Jp bmdzOyBqKyspCiAJCQkJCXJpbmdfbWFzayB8PQogCQkJCQkoKGFkZXYtPnV2ZC5pbnN0W2ldLnJp bmdfZW5jW2pdLnJlYWR5ID8gMSA6IDApIDw8CiAJCQkJCShqICsgaSAqIGFkZXYtPnV2ZC5udW1f ZW5jX3JpbmdzKSk7CisJCQl9CiAJCQlpYl9zdGFydF9hbGlnbm1lbnQgPSA2NDsKIAkJCWliX3Np emVfYWxpZ25tZW50ID0gNjQ7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYwppbmRleCBlYTk4NTBjOTIyNGQuLmM1OWQzYTJhZjM4OCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYwpAQCAt MjE5LDcgKzIxOSw3IEBAIGludCBhbWRncHVfcXVldWVfbWdyX21hcChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCSB1MzIgaHdfaXAsIHUzMiBpbnN0YW5jZSwgdTMyIHJpbmcsCiAJCQkg c3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpCiB7Ci0JaW50IHIsIGlwX251bV9yaW5nczsK KwlpbnQgaSwgciwgaXBfbnVtX3JpbmdzID0gMDsKIAlzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBl ciAqbWFwcGVyID0gJm1nci0+bWFwcGVyW2h3X2lwXTsKIAogCWlmICghYWRldiB8fCAhbWdyIHx8 ICFvdXRfcmluZykKQEAgLTI0OCwxNCArMjQ4LDIxIEBAIGludCBhbWRncHVfcXVldWVfbWdyX21h cChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJaXBfbnVtX3JpbmdzID0gYWRldi0+c2Rt YS5udW1faW5zdGFuY2VzOwogCQlicmVhazsKIAljYXNlIEFNREdQVV9IV19JUF9VVkQ6Ci0JCWlw X251bV9yaW5ncyA9IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7CisJCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBpKyspIHsKKwkJCWlmICghKGFkZXYtPnV2ZC5oYXJ2ZXN0 X2NvbmZpZyAmICgxIDw8IGkpKSkKKwkJCQlpcF9udW1fcmluZ3MrKzsKKwkJfQogCQlicmVhazsK IAljYXNlIEFNREdQVV9IV19JUF9WQ0U6CiAJCWlwX251bV9yaW5ncyA9IGFkZXYtPnZjZS5udW1f cmluZ3M7CiAJCWJyZWFrOwogCWNhc2UgQU1ER1BVX0hXX0lQX1VWRF9FTkM6CisJCWZvciAoaSA9 IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyBpKyspIHsKKwkJCWlmICghKGFkZXYtPnV2 ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKSkKKwkJCQlpcF9udW1fcmluZ3MrKzsKKwkJfQog CQlpcF9udW1fcmluZ3MgPQotCQkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKiBhZGV2LT51dmQu bnVtX3V2ZF9pbnN0OworCQkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKiBpcF9udW1fcmluZ3M7 CiAJCWJyZWFrOwogCWNhc2UgQU1ER1BVX0hXX0lQX1ZDTl9ERUM6CiAJCWlwX251bV9yaW5ncyA9 IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKaW5kZXggODBiNWM0NTNm OGMxLi5hMDc1NDhjOTlhYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV91dmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZk LmMKQEAgLTI1NSw3ICsyNTUsOCBAQCBpbnQgYW1kZ3B1X3V2ZF9zd19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCQlib19zaXplICs9IEFNREdQVV9HUFVfUEFHRV9BTElHTihsZTMy X3RvX2NwdShoZHItPnVjb2RlX3NpemVfYnl0ZXMpICsgOCk7CiAKIAlmb3IgKGogPSAwOyBqIDwg YWRldi0+dXZkLm51bV91dmRfaW5zdDsgaisrKSB7Ci0KKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0 X2NvbmZpZyAmICgxIDw8IGopKQorCQkJY29udGludWU7CiAJCXIgPSBhbWRncHVfYm9fY3JlYXRl X2tlcm5lbChhZGV2LCBib19zaXplLCBQQUdFX1NJWkUsCiAJCQkJCSAgICBBTURHUFVfR0VNX0RP TUFJTl9WUkFNLCAmYWRldi0+dXZkLmluc3Rbal0udmNwdV9ibywKIAkJCQkJICAgICZhZGV2LT51 dmQuaW5zdFtqXS5ncHVfYWRkciwgJmFkZXYtPnV2ZC5pbnN0W2pdLmNwdV9hZGRyKTsKQEAgLTMw OSw2ICszMTAsOCBAQCBpbnQgYW1kZ3B1X3V2ZF9zd19maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogCQkJCSAmYWRldi0+dXZkLmVudGl0eSk7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRl di0+dXZkLm51bV91dmRfaW5zdDsgKytqKSB7CisJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25m aWcgJiAoMSA8PCBqKSkKKwkJCWNvbnRpbnVlOwogCQlrZnJlZShhZGV2LT51dmQuaW5zdFtqXS5z YXZlZF9ibyk7CiAKIAkJYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT51dmQuaW5zdFtqXS52 Y3B1X2JvLApAQCAtMzQ0LDYgKzM0Nyw4IEBAIGludCBhbWRncHVfdXZkX3N1c3BlbmQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJfQogCiAJZm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5u dW1fdXZkX2luc3Q7ICsraikgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEg PDwgaikpCisJCQljb250aW51ZTsKIAkJaWYgKGFkZXYtPnV2ZC5pbnN0W2pdLnZjcHVfYm8gPT0g TlVMTCkKIAkJCWNvbnRpbnVlOwogCkBAIC0zNjYsNiArMzcxLDggQEAgaW50IGFtZGdwdV91dmRf cmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWludCBpOwogCiAJZm9yIChpID0g MDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykgeworCQlpZiAoYWRldi0+dXZkLmhh cnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJaWYgKGFkZXYtPnV2ZC5p bnN0W2ldLnZjcHVfYm8gPT0gTlVMTCkKIAkJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xMTYwLDYg KzExNjcsOCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdXZkX2lkbGVfd29ya19oYW5kbGVyKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIAl1bnNpZ25lZCBmZW5jZXMgPSAwLCBpLCBqOwogCiAJZm9y IChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+ dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJZmVuY2VzICs9 IGFtZGdwdV9mZW5jZV9jb3VudF9lbWl0dGVkKCZhZGV2LT51dmQuaW5zdFtpXS5yaW5nKTsKIAkJ Zm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5udW1fZW5jX3JpbmdzOyArK2opIHsKIAkJCWZlbmNl cyArPSBhbWRncHVfZmVuY2VfY291bnRfZW1pdHRlZCgmYWRldi0+dXZkLmluc3RbaV0ucmluZ19l bmNbal0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2 ZC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5oCmluZGV4IDY2ODcy Mjg2YWIxMi4uOWNmNDI0NTRiYTgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdXZkLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3V2ZC5oCkBAIC00Niw4ICs0NiwxMiBAQCBzdHJ1Y3QgYW1kZ3B1X3V2ZF9pbnN0IHsKIAlzdHJ1 Y3QgYW1kZ3B1X3JpbmcJcmluZ19lbmNbQU1ER1BVX01BWF9VVkRfRU5DX1JJTkdTXTsKIAlzdHJ1 Y3QgYW1kZ3B1X2lycV9zcmMJaXJxOwogCXVpbnQzMl90ICAgICAgICAgICAgICAgIHNyYm1fc29m dF9yZXNldDsKKwl1aW50MzJfdCAgICAgICAgICAgICAgICBpbnN0YW5jZTsKIH07CiAKKyNkZWZp bmUgQU1ER1BVX1VWRF9IQVJWRVNUX1VWRDAgKDEgPDwgMCkKKyNkZWZpbmUgQU1ER1BVX1VWRF9I QVJWRVNUX1VWRDEgKDEgPDwgMSkKKwogc3RydWN0IGFtZGdwdV91dmQgewogCWNvbnN0IHN0cnVj dCBmaXJtd2FyZQkqZnc7CS8qIFVWRCBmaXJtd2FyZSAqLwogCXVuc2lnbmVkCQlmd192ZXJzaW9u OwpAQCAtNjEsNiArNjUsNyBAQCBzdHJ1Y3QgYW1kZ3B1X3V2ZCB7CiAJYXRvbWljX3QJCWhhbmRs ZXNbQU1ER1BVX01BWF9VVkRfSEFORExFU107CiAJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgZW50 aXR5OwogCXN0cnVjdCBkZWxheWVkX3dvcmsJaWRsZV93b3JrOworCXVuc2lnbmVkCQloYXJ2ZXN0 X2NvbmZpZzsKIH07CiAKIGludCBhbWRncHVfdXZkX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3 XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92N18wLmMKaW5kZXggZGI1ZjNk NzhhYjEyLi44MTc5MzE3YmU3NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3V2ZF92N18wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAu YwpAQCAtNDEsNiArNDEsMTIgQEAKICNpbmNsdWRlICJtbWh1Yi9tbWh1Yl8xXzBfc2hfbWFzay5o IgogI2luY2x1ZGUgIml2c3JjaWQvdXZkL2lycXNyY3NfdXZkXzdfMC5oIgogCisjZGVmaW5lIG1t VVZEX1BHMF9DQ19VVkRfSEFSVkVTVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMGM3CisjZGVmaW5lIG1tVVZE X1BHMF9DQ19VVkRfSEFSVkVTVElOR19CQVNFX0lEWCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorLy9VVkRfUEcwX0NDX1VWRF9IQVJW RVNUSU5HCisjZGVmaW5lIFVWRF9QRzBfQ0NfVVZEX0hBUlZFU1RJTkdfX1VWRF9ESVNBQkxFX19T SElGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MQorI2RlZmluZSBVVkRfUEcwX0NDX1VWRF9IQVJWRVNUSU5HX19VVkRfRElTQUJMRV9N QVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwMDAwMDAyTAorCiAjZGVmaW5lIFVWRDdfTUFYX0hXX0lOU1RBTkNFU19WRUdBMjAJ CQkyCiAKIHN0YXRpYyB2b2lkIHV2ZF92N18wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KTsKQEAgLTM3MCwxMCArMzc2LDI1IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBf ZW5jX3JpbmdfdGVzdF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgdGltZW91dCkK IHN0YXRpYyBpbnQgdXZkX3Y3XzBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCiB7CiAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Ci0J aWYgKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX1ZFR0EyMCkKKworCWlmIChhZGV2LT5hc2ljX3R5 cGUgPT0gQ0hJUF9WRUdBMjApIHsKKwkJdTMyIGhhcnZlc3Q7CisJCWludCBpOworCiAJCWFkZXYt PnV2ZC5udW1fdXZkX2luc3QgPSBVVkQ3X01BWF9IV19JTlNUQU5DRVNfVkVHQTIwOwotCWVsc2UK KwkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7IGkrKykgeworCQkJaGFy dmVzdCA9IFJSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX1BHMF9DQ19VVkRfSEFSVkVTVElORyk7 CisJCQlpZiAoaGFydmVzdCAmIFVWRF9QRzBfQ0NfVVZEX0hBUlZFU1RJTkdfX1VWRF9ESVNBQkxF X01BU0spIHsKKwkJCQlhZGV2LT51dmQuaGFydmVzdF9jb25maWcgfD0gMSA8PCBpOworCQkJfQor CQl9CisJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgPT0gKEFNREdQVV9VVkRfSEFSVkVT VF9VVkQwIHwKKwkJCQkJCSBBTURHUFVfVVZEX0hBUlZFU1RfVVZEMSkpCisJCQkvKiBib3RoIGlu c3RhbmNlcyBhcmUgaGFydmVzdGVkLCBkaXNhYmxlIHRoZSBibG9jayAqLworCQkJcmV0dXJuIC1F Tk9FTlQ7CisJfSBlbHNlIHsKIAkJYWRldi0+dXZkLm51bV91dmRfaW5zdCA9IDE7CisJfQogCiAJ aWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKIAkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgPSAx OwpAQCAtMzkzLDYgKzQxNCw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfc3dfaW5pdCh2b2lkICpo YW5kbGUpCiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsg aisrKSB7CisJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBqKSkKKwkJCWNv bnRpbnVlOwogCQkvKiBVVkQgVFJBUCAqLwogCQlyID0gYW1kZ3B1X2lycV9hZGRfaWQoYWRldiwg YW1kZ3B1X2loX2NsaWVudGlkX3V2ZHNbal0sIFVWRF83XzBfX1NSQ0lEX19VVkRfU1lTVEVNX01F U1NBR0VfSU5URVJSVVBULCAmYWRldi0+dXZkLmluc3Rbal0uaXJxKTsKIAkJaWYgKHIpCkBAIC00 MjUsNiArNDQ4LDggQEAgc3RhdGljIGludCB1dmRfdjdfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkK IAkJcmV0dXJuIHI7CiAKIAlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsg aisrKSB7CisJCWlmIChhZGV2LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBqKSkKKwkJCWNv bnRpbnVlOwogCQlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewogCQkJcmluZyA9ICZhZGV2 LT51dmQuaW5zdFtqXS5yaW5nOwogCQkJc3ByaW50ZihyaW5nLT5uYW1lLCAidXZkPCVkPiIsIGop OwpAQCAtNDcyLDYgKzQ5Nyw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfc3dfZmluaSh2b2lkICpo YW5kbGUpCiAJCXJldHVybiByOwogCiAJZm9yIChqID0gMDsgaiA8IGFkZXYtPnV2ZC5udW1fdXZk X2luc3Q7ICsraikgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaikp CisJCQljb250aW51ZTsKIAkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fZW5jX3Jpbmdz OyArK2kpCiAJCQlhbWRncHVfcmluZ19maW5pKCZhZGV2LT51dmQuaW5zdFtqXS5yaW5nX2VuY1tp XSk7CiAJfQpAQCAtNTAwLDYgKzUyNyw4IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfaHdfaW5pdCh2 b2lkICpoYW5kbGUpCiAJCWdvdG8gZG9uZTsKIAogCWZvciAoaiA9IDA7IGogPCBhZGV2LT51dmQu bnVtX3V2ZF9pbnN0OyArK2opIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgx IDw8IGopKQorCQkJY29udGludWU7CiAJCXJpbmcgPSAmYWRldi0+dXZkLmluc3Rbal0ucmluZzsK IAogCQlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewpAQCAtNTc5LDggKzYwOCwxMSBAQCBz dGF0aWMgaW50IHV2ZF92N18wX2h3X2Zpbmkodm9pZCAqaGFuZGxlKQogCQlEUk1fREVCVUcoIkZv ciBTUklPViBjbGllbnQsIHNob3VsZG4ndCBkbyBhbnl0aGluZy5cbiIpOwogCX0KIAotCWZvciAo aSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpCisJZm9yIChpID0gMDsgaSA8 IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3Rf Y29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJYWRldi0+dXZkLmluc3RbaV0ucmlu Zy5yZWFkeSA9IGZhbHNlOworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNjIzLDYgKzY1NSw4IEBA IHN0YXRpYyB2b2lkIHV2ZF92N18wX21jX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyAr K2kpIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29u dGludWU7CiAJCWlmIChhZGV2LT5maXJtd2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURf UFNQKSB7CiAJCQlXUkVHMzJfU09DMTUoVVZELCBpLCBtbVVWRF9MTUlfVkNQVV9DQUNIRV82NEJJ VF9CQVJfTE9XLAogCQkJCWxvd2VyXzMyX2JpdHMoYWRldi0+ZmlybXdhcmUudWNvZGVbQU1ER1BV X1VDT0RFX0lEX1VWRF0ubWNfYWRkcikpOwpAQCAtNjk1LDYgKzcyOSw4IEBAIHN0YXRpYyBpbnQg dXZkX3Y3XzBfbW1zY2hfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJV1JFRzMy X1NPQzE1KFZDRSwgMCwgbW1WQ0VfTU1TQ0hfVkZfTUFJTEJPWF9SRVNQLCAwKTsKIAogCWZvciAo aSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpIHsKKwkJaWYgKGFkZXYtPnV2 ZC5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CiAJCVdET09SQkVMTDMy KGFkZXYtPnV2ZC5pbnN0W2ldLnJpbmdfZW5jWzBdLmRvb3JiZWxsX2luZGV4LCAwKTsKIAkJYWRl di0+d2Iud2JbYWRldi0+dXZkLmluc3RbaV0ucmluZ19lbmNbMF0ud3B0cl9vZmZzXSA9IDA7CiAJ CWFkZXYtPnV2ZC5pbnN0W2ldLnJpbmdfZW5jWzBdLndwdHIgPSAwOwpAQCAtNzUxLDYgKzc4Nyw4 IEBAIHN0YXRpYyBpbnQgdXZkX3Y3XzBfc3Jpb3Zfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJCWluaXRfdGFibGUgKz0gaGVhZGVyLT51dmRfdGFibGVfb2Zmc2V0OwogCiAJCWZv ciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX3V2ZF9pbnN0OyArK2kpIHsKKwkJCWlmIChhZGV2 LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKKwkJCQljb250aW51ZTsKIAkJCXJpbmcg PSAmYWRldi0+dXZkLmluc3RbaV0ucmluZzsKIAkJCXJpbmctPndwdHIgPSAwOwogCQkJc2l6ZSA9 IEFNREdQVV9HUFVfUEFHRV9BTElHTihhZGV2LT51dmQuZnctPnNpemUgKyA0KTsKQEAgLTg5MCw2 ICs5MjgsOCBAQCBzdGF0aWMgaW50IHV2ZF92N18wX3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogCWludCBpLCBqLCBrLCByOwogCiAJZm9yIChrID0gMDsgayA8IGFkZXYtPnV2ZC5u dW1fdXZkX2luc3Q7ICsraykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEg PDwgaykpCisJCQljb250aW51ZTsKIAkJLyogZGlzYWJsZSBEUEcgKi8KIAkJV1JFRzMyX1AoU09D MTVfUkVHX09GRlNFVChVVkQsIGssIG1tVVZEX1BPV0VSX1NUQVRVUyksIDAsCiAJCQkJflVWRF9Q T1dFUl9TVEFUVVNfX1VWRF9QR19NT0RFX01BU0spOwpAQCAtOTAyLDYgKzk0Miw4IEBAIHN0YXRp YyBpbnQgdXZkX3Y3XzBfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdXZkX3Y3 XzBfbWNfcmVzdW1lKGFkZXYpOwogCiAJZm9yIChrID0gMDsgayA8IGFkZXYtPnV2ZC5udW1fdXZk X2luc3Q7ICsraykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaykp CisJCQljb250aW51ZTsKIAkJcmluZyA9ICZhZGV2LT51dmQuaW5zdFtrXS5yaW5nOwogCQkvKiBk aXNhYmxlIGNsb2NrIGdhdGluZyAqLwogCQlXUkVHMzJfUChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwg aywgbW1VVkRfQ0dDX0NUUkwpLCAwLApAQCAtMTA2OSw2ICsxMTExLDggQEAgc3RhdGljIHZvaWQg dXZkX3Y3XzBfc3RvcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl1aW50OF90IGkgPSAw OwogCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7ICsraSkgeworCQlp ZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKIAkJ LyogZm9yY2UgUkJDIGludG8gaWRsZSBzdGF0ZSAqLwogCQlXUkVHMzJfU09DMTUoVVZELCBpLCBt bVVWRF9SQkNfUkJfQ05UTCwgMHgxMTAxMDEwMSk7CiAKQEAgLTE3NTYsNiArMTgwMCw4IEBAIHN0 YXRpYyB2b2lkIHV2ZF92N18wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPnV2ZC5udW1fdXZkX2luc3Q7 IGkrKykgeworCQlpZiAoYWRldi0+dXZkLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQlj b250aW51ZTsKIAkJYWRldi0+dXZkLmluc3RbaV0ucmluZy5mdW5jcyA9ICZ1dmRfdjdfMF9yaW5n X3ZtX2Z1bmNzOwogCQlhZGV2LT51dmQuaW5zdFtpXS5yaW5nLm1lID0gaTsKIAkJRFJNX0lORk8o IlVWRCglZCkgaXMgZW5hYmxlZCBpbiBWTSBtb2RlXG4iLCBpKTsKQEAgLTE3NjcsNiArMTgxMyw4 IEBAIHN0YXRpYyB2b2lkIHV2ZF92N18wX3NldF9lbmNfcmluZ19mdW5jcyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAlpbnQgaSwgajsKIAogCWZvciAoaiA9IDA7IGogPCBhZGV2LT51dmQu bnVtX3V2ZF9pbnN0OyBqKyspIHsKKwkJaWYgKGFkZXYtPnV2ZC5oYXJ2ZXN0X2NvbmZpZyAmICgx IDw8IGopKQorCQkJY29udGludWU7CiAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51dmQubnVtX2Vu Y19yaW5nczsgKytpKSB7CiAJCQlhZGV2LT51dmQuaW5zdFtqXS5yaW5nX2VuY1tpXS5mdW5jcyA9 ICZ1dmRfdjdfMF9lbmNfcmluZ192bV9mdW5jczsKIAkJCWFkZXYtPnV2ZC5pbnN0W2pdLnJpbmdf ZW5jW2ldLm1lID0gajsKQEAgLTE3ODYsNiArMTgzNCw4IEBAIHN0YXRpYyB2b2lkIHV2ZF92N18w X3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaW50IGk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgYWRldi0+dXZkLm51bV91dmRfaW5zdDsgaSsrKSB7CisJCWlmIChhZGV2 LT51dmQuaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKKwkJCWNvbnRpbnVlOwogCQlhZGV2LT51 dmQuaW5zdFtpXS5pcnEubnVtX3R5cGVzID0gYWRldi0+dXZkLm51bV9lbmNfcmluZ3MgKyAxOwog CQlhZGV2LT51dmQuaW5zdFtpXS5pcnEuZnVuY3MgPSAmdXZkX3Y3XzBfaXJxX2Z1bmNzOwogCX0K LS0gCjIuMTMuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==