From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rex Zhu Subject: [PATCH v2] drm/amdgpu: Remove FW_LOAD_DIRECT type support on VI Date: Wed, 3 Oct 2018 18:57:46 +0800 Message-ID: <1538564266-28212-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 QU1ER1BVX0ZXX0xPQURfRElSRUNUIGlzIHVzZWQgZm9yIGJyaW5nIHVwLgpOb3cgaXQgZG9uJ3Qg d29yayBhbnkgbW9yZS4gc28gcmVtb3ZlIHRoZSBzdXBwb3J0LgoKdjI6IEFkZCB3YXJuaW5nIG1l c3NhZ2UgaWYgdXNlciBzZWxlY3QKICAgQU1ER1BVX0ZXX0xPQURfRElSRUNUL0FNREdQVV9GV19M T0FEX1BTUCBvbiBWSS4KClNpZ25lZC1vZmYtYnk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuYyB8ICAgNyArLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAgICAgfCAyNDkgKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Yz XzAuYyAgICB8ICA1NyArLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyks IDI1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdWNvZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29k ZS5jCmluZGV4IDFmYThiYzMuLjk4NzgyMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV91Y29kZS5jCkBAIC0yOTcsMTAgKzI5Nyw5IEBAIGVudW0gYW1kZ3B1X2Zpcm13YXJl X2xvYWRfdHlwZQogCWNhc2UgQ0hJUF9QT0xBUklTMTE6CiAJY2FzZSBDSElQX1BPTEFSSVMxMjoK IAljYXNlIENISVBfVkVHQU06Ci0JCWlmICghbG9hZF90eXBlKQotCQkJcmV0dXJuIEFNREdQVV9G V19MT0FEX0RJUkVDVDsKLQkJZWxzZQotCQkJcmV0dXJuIEFNREdQVV9GV19MT0FEX1NNVTsKKwkJ aWYgKGxvYWRfdHlwZSAhPSBBTURHUFVfRldfTE9BRF9TTVUpCisJCQlwcl93YXJuaW5nKCIlZCBp cyBub3Qgc3VwcG9ydGVkIG9uIFZJXG4iLCBsb2FkX3R5cGUpOworCQlyZXR1cm4gQU1ER1BVX0ZX X0xPQURfU01VOwogCWNhc2UgQ0hJUF9WRUdBMTA6CiAJY2FzZSBDSElQX1JBVkVOOgogCWNhc2Ug Q0hJUF9WRUdBMTI6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwppbmRleCBmOWUw YTIxLi42YjE5NTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djhfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKQEAgLTEx NzMsNjQgKzExNzMsNjEgQEAgc3RhdGljIGludCBnZnhfdjhfMF9pbml0X21pY3JvY29kZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJfQogCX0KIAotCWlmIChhZGV2LT5maXJtd2FyZS5s b2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURfU01VKSB7Ci0JCWluZm8gPSAmYWRldi0+ZmlybXdh cmUudWNvZGVbQU1ER1BVX1VDT0RFX0lEX0NQX1BGUF07Ci0JCWluZm8tPnVjb2RlX2lkID0gQU1E R1BVX1VDT0RFX0lEX0NQX1BGUDsKLQkJaW5mby0+ZncgPSBhZGV2LT5nZngucGZwX2Z3OwotCQlo ZWFkZXIgPSAoY29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilpbmZvLT5mdy0+ ZGF0YTsKLQkJYWRldi0+ZmlybXdhcmUuZndfc2l6ZSArPQotCQkJQUxJR04obGUzMl90b19jcHUo aGVhZGVyLT51Y29kZV9zaXplX2J5dGVzKSwgUEFHRV9TSVpFKTsKLQotCQlpbmZvID0gJmFkZXYt PmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9DUF9NRV07Ci0JCWluZm8tPnVjb2RlX2lk ID0gQU1ER1BVX1VDT0RFX0lEX0NQX01FOwotCQlpbmZvLT5mdyA9IGFkZXYtPmdmeC5tZV9mdzsK LQkJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICopaW5mby0+ ZnctPmRhdGE7Ci0JCWFkZXYtPmZpcm13YXJlLmZ3X3NpemUgKz0KLQkJCUFMSUdOKGxlMzJfdG9f Y3B1KGhlYWRlci0+dWNvZGVfc2l6ZV9ieXRlcyksIFBBR0VfU0laRSk7Ci0KLQkJaW5mbyA9ICZh ZGV2LT5maXJtd2FyZS51Y29kZVtBTURHUFVfVUNPREVfSURfQ1BfQ0VdOwotCQlpbmZvLT51Y29k ZV9pZCA9IEFNREdQVV9VQ09ERV9JRF9DUF9DRTsKLQkJaW5mby0+ZncgPSBhZGV2LT5nZnguY2Vf Znc7Ci0JCWhlYWRlciA9IChjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqKWlu Zm8tPmZ3LT5kYXRhOwotCQlhZGV2LT5maXJtd2FyZS5md19zaXplICs9Ci0JCQlBTElHTihsZTMy X3RvX2NwdShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdFX1NJWkUpOworCWluZm8gPSAm YWRldi0+ZmlybXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lEX0NQX1BGUF07CisJaW5mby0+dWNv ZGVfaWQgPSBBTURHUFVfVUNPREVfSURfQ1BfUEZQOworCWluZm8tPmZ3ID0gYWRldi0+Z2Z4LnBm cF9mdzsKKwloZWFkZXIgPSAoY29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilp bmZvLT5mdy0+ZGF0YTsKKwlhZGV2LT5maXJtd2FyZS5md19zaXplICs9CisJCUFMSUdOKGxlMzJf dG9fY3B1KGhlYWRlci0+dWNvZGVfc2l6ZV9ieXRlcyksIFBBR0VfU0laRSk7CisKKwlpbmZvID0g JmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9DUF9NRV07CisJaW5mby0+dWNv ZGVfaWQgPSBBTURHUFVfVUNPREVfSURfQ1BfTUU7CisJaW5mby0+ZncgPSBhZGV2LT5nZngubWVf Znc7CisJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICopaW5m by0+ZnctPmRhdGE7CisJYWRldi0+ZmlybXdhcmUuZndfc2l6ZSArPQorCQlBTElHTihsZTMyX3Rv X2NwdShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdFX1NJWkUpOworCisJaW5mbyA9ICZh ZGV2LT5maXJtd2FyZS51Y29kZVtBTURHUFVfVUNPREVfSURfQ1BfQ0VdOworCWluZm8tPnVjb2Rl X2lkID0gQU1ER1BVX1VDT0RFX0lEX0NQX0NFOworCWluZm8tPmZ3ID0gYWRldi0+Z2Z4LmNlX2Z3 OworCWhlYWRlciA9IChjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqKWluZm8t PmZ3LT5kYXRhOworCWFkZXYtPmZpcm13YXJlLmZ3X3NpemUgKz0KKwkJQUxJR04obGUzMl90b19j cHUoaGVhZGVyLT51Y29kZV9zaXplX2J5dGVzKSwgUEFHRV9TSVpFKTsKKworCWluZm8gPSAmYWRl di0+ZmlybXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lEX1JMQ19HXTsKKwlpbmZvLT51Y29kZV9p ZCA9IEFNREdQVV9VQ09ERV9JRF9STENfRzsKKwlpbmZvLT5mdyA9IGFkZXYtPmdmeC5ybGNfZnc7 CisJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICopaW5mby0+ ZnctPmRhdGE7CisJYWRldi0+ZmlybXdhcmUuZndfc2l6ZSArPQorCQlBTElHTihsZTMyX3RvX2Nw dShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdFX1NJWkUpOworCisJaW5mbyA9ICZhZGV2 LT5maXJtd2FyZS51Y29kZVtBTURHUFVfVUNPREVfSURfQ1BfTUVDMV07CisJaW5mby0+dWNvZGVf aWQgPSBBTURHUFVfVUNPREVfSURfQ1BfTUVDMTsKKwlpbmZvLT5mdyA9IGFkZXYtPmdmeC5tZWNf Znc7CisJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICopaW5m by0+ZnctPmRhdGE7CisJYWRldi0+ZmlybXdhcmUuZndfc2l6ZSArPQorCQlBTElHTihsZTMyX3Rv X2NwdShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdFX1NJWkUpOworCisJLyogd2UgbmVl ZCBhY2NvdW50IEpUIGluICovCisJY3BfaGRyID0gKGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVf aGVhZGVyX3YxXzAgKilhZGV2LT5nZngubWVjX2Z3LT5kYXRhOworCWFkZXYtPmZpcm13YXJlLmZ3 X3NpemUgKz0KKwkJQUxJR04obGUzMl90b19jcHUoY3BfaGRyLT5qdF9zaXplKSA8PCAyLCBQQUdF X1NJWkUpOwogCi0JCWluZm8gPSAmYWRldi0+ZmlybXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lE X1JMQ19HXTsKLQkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfUkxDX0c7Ci0JCWlu Zm8tPmZ3ID0gYWRldi0+Z2Z4LnJsY19mdzsKLQkJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21t b25fZmlybXdhcmVfaGVhZGVyICopaW5mby0+ZnctPmRhdGE7CisJaWYgKGFtZGdwdV9zcmlvdl92 ZihhZGV2KSkgeworCQlpbmZvID0gJmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9J RF9TVE9SQUdFXTsKKwkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfU1RPUkFHRTsK KwkJaW5mby0+ZncgPSBhZGV2LT5nZngubWVjX2Z3OwogCQlhZGV2LT5maXJtd2FyZS5md19zaXpl ICs9Ci0JCQlBTElHTihsZTMyX3RvX2NwdShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdF X1NJWkUpOworCQkJQUxJR04obGUzMl90b19jcHUoNjQgKiBQQUdFX1NJWkUpLCBQQUdFX1NJWkUp OworCX0KIAotCQlpbmZvID0gJmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9D UF9NRUMxXTsKLQkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfQ1BfTUVDMTsKLQkJ aW5mby0+ZncgPSBhZGV2LT5nZngubWVjX2Z3OworCWlmIChhZGV2LT5nZngubWVjMl9mdykgewor CQlpbmZvID0gJmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9DUF9NRUMyXTsK KwkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfQ1BfTUVDMjsKKwkJaW5mby0+Zncg PSBhZGV2LT5nZngubWVjMl9mdzsKIAkJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmly bXdhcmVfaGVhZGVyICopaW5mby0+ZnctPmRhdGE7CiAJCWFkZXYtPmZpcm13YXJlLmZ3X3NpemUg Kz0KIAkJCUFMSUdOKGxlMzJfdG9fY3B1KGhlYWRlci0+dWNvZGVfc2l6ZV9ieXRlcyksIFBBR0Vf U0laRSk7Ci0KLQkJLyogd2UgbmVlZCBhY2NvdW50IEpUIGluICovCi0JCWNwX2hkciA9IChjb25z dCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4Lm1lY19mdy0+ZGF0 YTsKLQkJYWRldi0+ZmlybXdhcmUuZndfc2l6ZSArPQotCQkJQUxJR04obGUzMl90b19jcHUoY3Bf aGRyLT5qdF9zaXplKSA8PCAyLCBQQUdFX1NJWkUpOwotCi0JCWlmIChhbWRncHVfc3Jpb3ZfdmYo YWRldikpIHsKLQkJCWluZm8gPSAmYWRldi0+ZmlybXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lE X1NUT1JBR0VdOwotCQkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfU1RPUkFHRTsK LQkJCWluZm8tPmZ3ID0gYWRldi0+Z2Z4Lm1lY19mdzsKLQkJCWFkZXYtPmZpcm13YXJlLmZ3X3Np emUgKz0KLQkJCQlBTElHTihsZTMyX3RvX2NwdSg2NCAqIFBBR0VfU0laRSksIFBBR0VfU0laRSk7 Ci0JCX0KLQotCQlpZiAoYWRldi0+Z2Z4Lm1lYzJfZncpIHsKLQkJCWluZm8gPSAmYWRldi0+Zmly bXdhcmUudWNvZGVbQU1ER1BVX1VDT0RFX0lEX0NQX01FQzJdOwotCQkJaW5mby0+dWNvZGVfaWQg PSBBTURHUFVfVUNPREVfSURfQ1BfTUVDMjsKLQkJCWluZm8tPmZ3ID0gYWRldi0+Z2Z4Lm1lYzJf Znc7Ci0JCQloZWFkZXIgPSAoY29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilp bmZvLT5mdy0+ZGF0YTsKLQkJCWFkZXYtPmZpcm13YXJlLmZ3X3NpemUgKz0KLQkJCQlBTElHTihs ZTMyX3RvX2NwdShoZWFkZXItPnVjb2RlX3NpemVfYnl0ZXMpLCBQQUdFX1NJWkUpOwotCQl9Ci0K IAl9CiAKIG91dDoKQEAgLTQxODEsNDUgKzQxNzgsMTEgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBf cmxjX3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCXVkZWxheSg1MCk7CiB9CiAK LXN0YXRpYyBpbnQgZ2Z4X3Y4XzBfcmxjX2xvYWRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQotewotCWNvbnN0IHN0cnVjdCBybGNfZmlybXdhcmVfaGVhZGVyX3YyXzAgKmhk cjsKLQljb25zdCBfX2xlMzIgKmZ3X2RhdGE7Ci0JdW5zaWduZWQgaSwgZndfc2l6ZTsKLQotCWlm ICghYWRldi0+Z2Z4LnJsY19mdykKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQloZHIgPSAoY29uc3Qg c3RydWN0IHJsY19maXJtd2FyZV9oZWFkZXJfdjJfMCAqKWFkZXYtPmdmeC5ybGNfZnctPmRhdGE7 Ci0JYW1kZ3B1X3Vjb2RlX3ByaW50X3JsY19oZHIoJmhkci0+aGVhZGVyKTsKLQotCWZ3X2RhdGEg PSAoY29uc3QgX19sZTMyICopKGFkZXYtPmdmeC5ybGNfZnctPmRhdGEgKwotCQkJICAgbGUzMl90 b19jcHUoaGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKSk7Ci0JZndfc2l6ZSA9 IGxlMzJfdG9fY3B1KGhkci0+aGVhZGVyLnVjb2RlX3NpemVfYnl0ZXMpIC8gNDsKLQotCVdSRUcz MihtbVJMQ19HUE1fVUNPREVfQUREUiwgMCk7Ci0JZm9yIChpID0gMDsgaSA8IGZ3X3NpemU7IGkr KykKLQkJV1JFRzMyKG1tUkxDX0dQTV9VQ09ERV9EQVRBLCBsZTMyX3RvX2NwdXAoZndfZGF0YSsr KSk7Ci0JV1JFRzMyKG1tUkxDX0dQTV9VQ09ERV9BRERSLCBhZGV2LT5nZngucmxjX2Z3X3ZlcnNp b24pOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfcmxjX3Jlc3VtZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKLQlpbnQgcjsKLQogCWdmeF92OF8wX3JsY19z dG9wKGFkZXYpOwogCWdmeF92OF8wX3JsY19yZXNldChhZGV2KTsKIAlnZnhfdjhfMF9pbml0X3Bn KGFkZXYpOwotCi0JaWYgKGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSA9PSBBTURHUFVfRldfTE9B RF9ESVJFQ1QpIHsKLQkJLyogbGVnYWN5IHJsYyBmaXJtd2FyZSBsb2FkaW5nICovCi0JCXIgPSBn ZnhfdjhfMF9ybGNfbG9hZF9taWNyb2NvZGUoYWRldik7Ci0JCWlmIChyKQotCQkJcmV0dXJuIHI7 Ci0JfQotCiAJZ2Z4X3Y4XzBfcmxjX3N0YXJ0KGFkZXYpOwogCiAJcmV0dXJuIDA7CkBAIC00MjQ1 LDYzICs0MjA4LDYgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfY3BfZ2Z4X2VuYWJsZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiAJdWRlbGF5KDUwKTsKIH0KIAotc3Rh dGljIGludCBnZnhfdjhfMF9jcF9nZnhfbG9hZF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCi17Ci0JY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqcGZw X2hkcjsKLQljb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICpjZV9oZHI7Ci0J Y29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqbWVfaGRyOwotCWNvbnN0IF9f bGUzMiAqZndfZGF0YTsKLQl1bnNpZ25lZCBpLCBmd19zaXplOwotCi0JaWYgKCFhZGV2LT5nZngu bWVfZncgfHwgIWFkZXYtPmdmeC5wZnBfZncgfHwgIWFkZXYtPmdmeC5jZV9mdykKLQkJcmV0dXJu IC1FSU5WQUw7Ci0KLQlwZnBfaGRyID0gKGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVy X3YxXzAgKikKLQkJYWRldi0+Z2Z4LnBmcF9mdy0+ZGF0YTsKLQljZV9oZHIgPSAoY29uc3Qgc3Ry dWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKQotCQlhZGV2LT5nZnguY2VfZnctPmRhdGE7 Ci0JbWVfaGRyID0gKGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKikKLQkJ YWRldi0+Z2Z4Lm1lX2Z3LT5kYXRhOwotCi0JYW1kZ3B1X3Vjb2RlX3ByaW50X2dmeF9oZHIoJnBm cF9oZHItPmhlYWRlcik7Ci0JYW1kZ3B1X3Vjb2RlX3ByaW50X2dmeF9oZHIoJmNlX2hkci0+aGVh ZGVyKTsKLQlhbWRncHVfdWNvZGVfcHJpbnRfZ2Z4X2hkcigmbWVfaGRyLT5oZWFkZXIpOwotCi0J Z2Z4X3Y4XzBfY3BfZ2Z4X2VuYWJsZShhZGV2LCBmYWxzZSk7Ci0KLQkvKiBQRlAgKi8KLQlmd19k YXRhID0gKGNvbnN0IF9fbGUzMiAqKQotCQkoYWRldi0+Z2Z4LnBmcF9mdy0+ZGF0YSArCi0JCSBs ZTMyX3RvX2NwdShwZnBfaGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKSk7Ci0J Zndfc2l6ZSA9IGxlMzJfdG9fY3B1KHBmcF9oZHItPmhlYWRlci51Y29kZV9zaXplX2J5dGVzKSAv IDQ7Ci0JV1JFRzMyKG1tQ1BfUEZQX1VDT0RFX0FERFIsIDApOwotCWZvciAoaSA9IDA7IGkgPCBm d19zaXplOyBpKyspCi0JCVdSRUczMihtbUNQX1BGUF9VQ09ERV9EQVRBLCBsZTMyX3RvX2NwdXAo ZndfZGF0YSsrKSk7Ci0JV1JFRzMyKG1tQ1BfUEZQX1VDT0RFX0FERFIsIGFkZXYtPmdmeC5wZnBf ZndfdmVyc2lvbik7Ci0KLQkvKiBDRSAqLwotCWZ3X2RhdGEgPSAoY29uc3QgX19sZTMyICopCi0J CShhZGV2LT5nZnguY2VfZnctPmRhdGEgKwotCQkgbGUzMl90b19jcHUoY2VfaGRyLT5oZWFkZXIu dWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKSk7Ci0JZndfc2l6ZSA9IGxlMzJfdG9fY3B1KGNlX2hk ci0+aGVhZGVyLnVjb2RlX3NpemVfYnl0ZXMpIC8gNDsKLQlXUkVHMzIobW1DUF9DRV9VQ09ERV9B RERSLCAwKTsKLQlmb3IgKGkgPSAwOyBpIDwgZndfc2l6ZTsgaSsrKQotCQlXUkVHMzIobW1DUF9D RV9VQ09ERV9EQVRBLCBsZTMyX3RvX2NwdXAoZndfZGF0YSsrKSk7Ci0JV1JFRzMyKG1tQ1BfQ0Vf VUNPREVfQUREUiwgYWRldi0+Z2Z4LmNlX2Z3X3ZlcnNpb24pOwotCi0JLyogTUUgKi8KLQlmd19k YXRhID0gKGNvbnN0IF9fbGUzMiAqKQotCQkoYWRldi0+Z2Z4Lm1lX2Z3LT5kYXRhICsKLQkJIGxl MzJfdG9fY3B1KG1lX2hkci0+aGVhZGVyLnVjb2RlX2FycmF5X29mZnNldF9ieXRlcykpOwotCWZ3 X3NpemUgPSBsZTMyX3RvX2NwdShtZV9oZHItPmhlYWRlci51Y29kZV9zaXplX2J5dGVzKSAvIDQ7 Ci0JV1JFRzMyKG1tQ1BfTUVfUkFNX1dBRERSLCAwKTsKLQlmb3IgKGkgPSAwOyBpIDwgZndfc2l6 ZTsgaSsrKQotCQlXUkVHMzIobW1DUF9NRV9SQU1fREFUQSwgbGUzMl90b19jcHVwKGZ3X2RhdGEr KykpOwotCVdSRUczMihtbUNQX01FX1JBTV9XQUREUiwgYWRldi0+Z2Z4Lm1lX2Z3X3ZlcnNpb24p OwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB1MzIgZ2Z4X3Y4XzBfZ2V0X2NzYl9zaXplKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXUzMiBjb3VudCA9IDA7CkBAIC00NTAxLDUy ICs0NDA3LDYgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfY3BfY29tcHV0ZV9lbmFibGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogCXVkZWxheSg1MCk7CiB9CiAKLXN0 YXRpYyBpbnQgZ2Z4X3Y4XzBfY3BfY29tcHV0ZV9sb2FkX21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKLXsKLQljb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8w ICptZWNfaGRyOwotCWNvbnN0IF9fbGUzMiAqZndfZGF0YTsKLQl1bnNpZ25lZCBpLCBmd19zaXpl OwotCi0JaWYgKCFhZGV2LT5nZngubWVjX2Z3KQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWdmeF92 OF8wX2NwX2NvbXB1dGVfZW5hYmxlKGFkZXYsIGZhbHNlKTsKLQotCW1lY19oZHIgPSAoY29uc3Qg c3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5tZWNfZnctPmRhdGE7 Ci0JYW1kZ3B1X3Vjb2RlX3ByaW50X2dmeF9oZHIoJm1lY19oZHItPmhlYWRlcik7Ci0KLQlmd19k YXRhID0gKGNvbnN0IF9fbGUzMiAqKQotCQkoYWRldi0+Z2Z4Lm1lY19mdy0+ZGF0YSArCi0JCSBs ZTMyX3RvX2NwdShtZWNfaGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKSk7Ci0J Zndfc2l6ZSA9IGxlMzJfdG9fY3B1KG1lY19oZHItPmhlYWRlci51Y29kZV9zaXplX2J5dGVzKSAv IDQ7Ci0KLQkvKiBNRUMxICovCi0JV1JFRzMyKG1tQ1BfTUVDX01FMV9VQ09ERV9BRERSLCAwKTsK LQlmb3IgKGkgPSAwOyBpIDwgZndfc2l6ZTsgaSsrKQotCQlXUkVHMzIobW1DUF9NRUNfTUUxX1VD T0RFX0RBVEEsIGxlMzJfdG9fY3B1cChmd19kYXRhK2kpKTsKLQlXUkVHMzIobW1DUF9NRUNfTUUx X1VDT0RFX0FERFIsIGFkZXYtPmdmeC5tZWNfZndfdmVyc2lvbik7Ci0KLQkvKiBMb2FkaW5nIE1F QzIgZmlybXdhcmUgaXMgb25seSBuZWNlc3NhcnkgaWYgTUVDMiBzaG91bGQgcnVuIGRpZmZlcmVu dCBtaWNyb2NvZGUgdGhhbiBNRUMxLiAqLwotCWlmIChhZGV2LT5nZngubWVjMl9mdykgewotCQlj b25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICptZWMyX2hkcjsKLQotCQltZWMy X2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4 Lm1lYzJfZnctPmRhdGE7Ci0JCWFtZGdwdV91Y29kZV9wcmludF9nZnhfaGRyKCZtZWMyX2hkci0+ aGVhZGVyKTsKLQotCQlmd19kYXRhID0gKGNvbnN0IF9fbGUzMiAqKQotCQkJKGFkZXYtPmdmeC5t ZWMyX2Z3LT5kYXRhICsKLQkJCSBsZTMyX3RvX2NwdShtZWMyX2hkci0+aGVhZGVyLnVjb2RlX2Fy cmF5X29mZnNldF9ieXRlcykpOwotCQlmd19zaXplID0gbGUzMl90b19jcHUobWVjMl9oZHItPmhl YWRlci51Y29kZV9zaXplX2J5dGVzKSAvIDQ7Ci0KLQkJV1JFRzMyKG1tQ1BfTUVDX01FMl9VQ09E RV9BRERSLCAwKTsKLQkJZm9yIChpID0gMDsgaSA8IGZ3X3NpemU7IGkrKykKLQkJCVdSRUczMiht bUNQX01FQ19NRTJfVUNPREVfREFUQSwgbGUzMl90b19jcHVwKGZ3X2RhdGEraSkpOwotCQlXUkVH MzIobW1DUF9NRUNfTUUyX1VDT0RFX0FERFIsIGFkZXYtPmdmeC5tZWMyX2Z3X3ZlcnNpb24pOwot CX0KLQotCXJldHVybiAwOwotfQotCiAvKiBLSVEgZnVuY3Rpb25zICovCiBzdGF0aWMgdm9pZCBn ZnhfdjhfMF9raXFfc2V0dGluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiB7CkBAIC00OTgw LDE3ICs0ODQwLDYgQEAgc3RhdGljIGludCBnZnhfdjhfMF9jcF9yZXN1bWUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJaWYgKCEoYWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVKSkKIAkJZ2Z4 X3Y4XzBfZW5hYmxlX2d1aV9pZGxlX2ludGVycnVwdChhZGV2LCBmYWxzZSk7CiAKLQlpZiAoYWRl di0+ZmlybXdhcmUubG9hZF90eXBlID09IEFNREdQVV9GV19MT0FEX0RJUkVDVCkgewotCQkJLyog bGVnYWN5IGZpcm13YXJlIGxvYWRpbmcgKi8KLQkJciA9IGdmeF92OF8wX2NwX2dmeF9sb2FkX21p Y3JvY29kZShhZGV2KTsKLQkJaWYgKHIpCi0JCQlyZXR1cm4gcjsKLQotCQlyID0gZ2Z4X3Y4XzBf Y3BfY29tcHV0ZV9sb2FkX21pY3JvY29kZShhZGV2KTsKLQkJaWYgKHIpCi0JCQlyZXR1cm4gcjsK LQl9Ci0KIAlyID0gZ2Z4X3Y4XzBfa2lxX3Jlc3VtZShhZGV2KTsKIAlpZiAocikKIAkJcmV0dXJu IHI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YzXzAuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCmluZGV4IDZkNWM4YWMuLjZm YjNlZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCkBAIC0zMTgsMTQg KzMxOCwxMyBAQCBzdGF0aWMgaW50IHNkbWFfdjNfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAkJaWYgKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZmVhdHVyZV92 ZXJzaW9uID49IDIwKQogCQkJYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5idXJzdF9ub3AgPSB0cnVl OwogCi0JCWlmIChhZGV2LT5maXJtd2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURfU01V KSB7Ci0JCQlpbmZvID0gJmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9TRE1B MCArIGldOwotCQkJaW5mby0+dWNvZGVfaWQgPSBBTURHUFVfVUNPREVfSURfU0RNQTAgKyBpOwot CQkJaW5mby0+ZncgPSBhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3OwotCQkJaGVhZGVyID0gKGNv bnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICopaW5mby0+ZnctPmRhdGE7Ci0JCQlh ZGV2LT5maXJtd2FyZS5md19zaXplICs9Ci0JCQkJQUxJR04obGUzMl90b19jcHUoaGVhZGVyLT51 Y29kZV9zaXplX2J5dGVzKSwgUEFHRV9TSVpFKTsKLQkJfQorCQlpbmZvID0gJmFkZXYtPmZpcm13 YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9TRE1BMCArIGldOworCQlpbmZvLT51Y29kZV9pZCA9 IEFNREdQVV9VQ09ERV9JRF9TRE1BMCArIGk7CisJCWluZm8tPmZ3ID0gYWRldi0+c2RtYS5pbnN0 YW5jZVtpXS5mdzsKKwkJaGVhZGVyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVh ZGVyICopaW5mby0+ZnctPmRhdGE7CisJCWFkZXYtPmZpcm13YXJlLmZ3X3NpemUgKz0KKwkJCUFM SUdOKGxlMzJfdG9fY3B1KGhlYWRlci0+dWNvZGVfc2l6ZV9ieXRlcyksIFBBR0VfU0laRSk7CisK IAl9CiBvdXQ6CiAJaWYgKGVycikgewpAQCAtNzc4LDQyICs3NzcsNiBAQCBzdGF0aWMgaW50IHNk bWFfdjNfMF9ybGNfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogfQogCiAvKioK LSAqIHNkbWFfdjNfMF9sb2FkX21pY3JvY29kZSAtIGxvYWQgdGhlIHNETUEgTUUgdWNvZGUKLSAq Ci0gKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCi0gKgotICogTG9hZHMgdGhlIHNETUEw LzEgdWNvZGUuCi0gKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgdGhlIHVjb2Rl IGlzIG5vdCBhdmFpbGFibGUuCi0gKi8KLXN0YXRpYyBpbnQgc2RtYV92M18wX2xvYWRfbWljcm9j b2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQotewotCWNvbnN0IHN0cnVjdCBzZG1hX2Zp cm13YXJlX2hlYWRlcl92MV8wICpoZHI7Ci0JY29uc3QgX19sZTMyICpmd19kYXRhOwotCXUzMiBm d19zaXplOwotCWludCBpLCBqOwotCi0JLyogaGFsdCB0aGUgTUVzICovCi0Jc2RtYV92M18wX2Vu YWJsZShhZGV2LCBmYWxzZSk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5z dGFuY2VzOyBpKyspIHsKLQkJaWYgKCFhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3KQotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCWhkciA9IChjb25zdCBzdHJ1Y3Qgc2RtYV9maXJtd2FyZV9oZWFkZXJf djFfMCAqKWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZnctPmRhdGE7Ci0JCWFtZGdwdV91Y29kZV9w cmludF9zZG1hX2hkcigmaGRyLT5oZWFkZXIpOwotCQlmd19zaXplID0gbGUzMl90b19jcHUoaGRy LT5oZWFkZXIudWNvZGVfc2l6ZV9ieXRlcykgLyA0OwotCQlmd19kYXRhID0gKGNvbnN0IF9fbGUz MiAqKQotCQkJKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZnctPmRhdGEgKwotCQkJCWxlMzJfdG9f Y3B1KGhkci0+aGVhZGVyLnVjb2RlX2FycmF5X29mZnNldF9ieXRlcykpOwotCQlXUkVHMzIobW1T RE1BMF9VQ09ERV9BRERSICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKLQkJZm9yIChqID0gMDsgaiA8 IGZ3X3NpemU7IGorKykKLQkJCVdSRUczMihtbVNETUEwX1VDT0RFX0RBVEEgKyBzZG1hX29mZnNl dHNbaV0sIGxlMzJfdG9fY3B1cChmd19kYXRhKyspKTsKLQkJV1JFRzMyKG1tU0RNQTBfVUNPREVf QUREUiArIHNkbWFfb2Zmc2V0c1tpXSwgYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5md192ZXJzaW9u KTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotLyoqCiAgKiBzZG1hX3YzXzBfc3RhcnQgLSBzZXR1 cCBhbmQgc3RhcnQgdGhlIGFzeW5jIGRtYSBlbmdpbmVzCiAgKgogICogQGFkZXY6IGFtZGdwdV9k ZXZpY2UgcG9pbnRlcgpAQCAtODI1LDEyICs3ODgsNiBAQCBzdGF0aWMgaW50IHNkbWFfdjNfMF9z dGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlpbnQgcjsKIAotCWlmIChhZGV2 LT5maXJtd2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZXX0xPQURfRElSRUNUKSB7Ci0JCXIgPSBz ZG1hX3YzXzBfbG9hZF9taWNyb2NvZGUoYWRldik7Ci0JCWlmIChyKQotCQkJcmV0dXJuIHI7Ci0J fQotCiAJLyogZGlzYWJsZSBzZG1hIGVuZ2luZSBiZWZvcmUgcHJvZ3JhbWluZyBpdCAqLwogCXNk bWFfdjNfMF9jdHhfc3dpdGNoX2VuYWJsZShhZGV2LCBmYWxzZSk7CiAJc2RtYV92M18wX2VuYWJs ZShhZGV2LCBmYWxzZSk7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4Cg==