From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH v2 13/15] drm/amdgpu: introduce pcie port read/write entry Date: Wed, 31 Aug 2016 13:23:25 +0800 Message-ID: <1472621007-17578-14-git-send-email-ray.huang@amd.com> References: <1472621007-17578-1-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1472621007-17578-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org> 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, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= Cc: Ken Wang , Hui Yu , Huang Rui , Alvin Huan VGhpcyBwYXRjaCBhZGRzIHBjaWUgcG9ydCByZWFkL3dyaXRlIGVudHJ5LCBiZWNhdXNlIGl0IHdp bGwgYmUgYWxzbwp1c2VkIG9uIHNpIGRwbSBwYXJ0LgoKQWNrZWQtYnk6IENocmlzdGlhbiBLw7Zu aWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8 YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogSHVhbmcgUnVpIDxyYXku aHVhbmdAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAg ICAgICAgfCAgIDQgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2Uu YyB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jICAgICAgICAgICAgfCAx MDYgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNjAgaW5z ZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aAppbmRleCAxOWM5YTJlLi42ZWIxZDNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aApAQCAtMjA0Myw2ICsyMDQzLDggQEAgc3RydWN0IGFtZGdwdV9kZXZpY2UgewogCXNwaW5sb2Nr X3QgcGNpZV9pZHhfbG9jazsKIAlhbWRncHVfcnJlZ190CQkJcGNpZV9ycmVnOwogCWFtZGdwdV93 cmVnX3QJCQlwY2llX3dyZWc7CisJYW1kZ3B1X3JyZWdfdAkJCXBjaWVwX3JyZWc7CisJYW1kZ3B1 X3dyZWdfdAkJCXBjaWVwX3dyZWc7CiAJLyogcHJvdGVjdHMgY29uY3VycmVudCBVVkQgcmVnaXN0 ZXIgYWNjZXNzICovCiAJc3BpbmxvY2tfdCB1dmRfY3R4X2lkeF9sb2NrOwogCWFtZGdwdV9ycmVn X3QJCQl1dmRfY3R4X3JyZWc7CkBAIC0yMTgzLDYgKzIxODUsOCBAQCBib29sIGFtZGdwdV9kZXZp Y2VfaGFzX2RhbF9zdXBwb3J0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKICNkZWZpbmUg UkVHX0dFVChGSUVMRCwgdikgKCgodikgPDwgRklFTEQjI19TSElGVCkgJiBGSUVMRCMjX01BU0sp CiAjZGVmaW5lIFJSRUczMl9QQ0lFKHJlZykgYWRldi0+cGNpZV9ycmVnKGFkZXYsIChyZWcpKQog I2RlZmluZSBXUkVHMzJfUENJRShyZWcsIHYpIGFkZXYtPnBjaWVfd3JlZyhhZGV2LCAocmVnKSwg KHYpKQorI2RlZmluZSBSUkVHMzJfUENJRV9QT1JUKHJlZykgYWRldi0+cGNpZXBfcnJlZyhhZGV2 LCAocmVnKSkKKyNkZWZpbmUgV1JFRzMyX1BDSUVfUE9SVChyZWcsIHYpIGFkZXYtPnBjaWVwX3dy ZWcoYWRldiwgKHJlZyksICh2KSkKICNkZWZpbmUgUlJFRzMyX1NNQyhyZWcpIGFkZXYtPnNtY19y cmVnKGFkZXYsIChyZWcpKQogI2RlZmluZSBXUkVHMzJfU01DKHJlZywgdikgYWRldi0+c21jX3dy ZWcoYWRldiwgKHJlZyksICh2KSkKICNkZWZpbmUgUlJFRzMyX1VWRF9DVFgocmVnKSBhZGV2LT51 dmRfY3R4X3JyZWcoYWRldiwgKHJlZykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZGV2aWNlLmMKaW5kZXggOGViNTM5Ni4uYTIwYTJiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwpAQCAtMTU0NCw2ICsxNTQ0LDggQEAgaW50IGFtZGdw dV9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlhZGV2LT5zbWNfd3Jl ZyA9ICZhbWRncHVfaW52YWxpZF93cmVnOwogCWFkZXYtPnBjaWVfcnJlZyA9ICZhbWRncHVfaW52 YWxpZF9ycmVnOwogCWFkZXYtPnBjaWVfd3JlZyA9ICZhbWRncHVfaW52YWxpZF93cmVnOworCWFk ZXYtPnBjaWVwX3JyZWcgPSAmYW1kZ3B1X2ludmFsaWRfcnJlZzsKKwlhZGV2LT5wY2llcF93cmVn ID0gJmFtZGdwdV9pbnZhbGlkX3dyZWc7CiAJYWRldi0+dXZkX2N0eF9ycmVnID0gJmFtZGdwdV9p bnZhbGlkX3JyZWc7CiAJYWRldi0+dXZkX2N0eF93cmVnID0gJmFtZGdwdV9pbnZhbGlkX3dyZWc7 CiAJYWRldi0+ZGlkdF9ycmVnID0gJmFtZGdwdV9pbnZhbGlkX3JyZWc7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvc2kuYwppbmRleCBkNWZjMTk3Li5mZWU3NmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9zaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMK QEAgLTkwNSw2ICs5MDUsMzEgQEAgc3RhdGljIHZvaWQgc2lfcGNpZV93cmVnKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1MzIgcmVnLCB1MzIgdikKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZhZGV2LT5wY2llX2lkeF9sb2NrLCBmbGFncyk7CiB9CiAKK3UzMiBzaV9wY2llcF9ycmVnKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmVnKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJdTMyIHI7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+cGNpZV9pZHhfbG9jaywg ZmxhZ3MpOworCVdSRUczMihQQ0lFX1BPUlRfSU5ERVgsICgocmVnKSAmIDB4ZmYpKTsKKwkodm9p ZClSUkVHMzIoUENJRV9QT1JUX0lOREVYKTsKKwlyID0gUlJFRzMyKFBDSUVfUE9SVF9EQVRBKTsK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5wY2llX2lkeF9sb2NrLCBmbGFncyk7CisJ cmV0dXJuIHI7Cit9CisKK3ZvaWQgc2lfcGNpZXBfd3JlZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgdTMyIHJlZywgdTMyIHYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5f bG9ja19pcnFzYXZlKCZhZGV2LT5wY2llX2lkeF9sb2NrLCBmbGFncyk7CisJV1JFRzMyKFBDSUVf UE9SVF9JTkRFWCwgKChyZWcpICYgMHhmZikpOworCSh2b2lkKVJSRUczMihQQ0lFX1BPUlRfSU5E RVgpOworCVdSRUczMihQQ0lFX1BPUlRfREFUQSwgKHYpKTsKKwkodm9pZClSUkVHMzIoUENJRV9Q T1JUX0RBVEEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ss IGZsYWdzKTsKK30KKwogc3RhdGljIHUzMiBzaV9zbWNfcnJlZyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgdTMyIHJlZykKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMTEyNSw2ICsx MTUwLDggQEAgc3RhdGljIGludCBzaV9jb21tb25fZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCiAJ YWRldi0+c21jX3dyZWcgPSAmc2lfc21jX3dyZWc7CiAJYWRldi0+cGNpZV9ycmVnID0gJnNpX3Bj aWVfcnJlZzsKIAlhZGV2LT5wY2llX3dyZWcgPSAmc2lfcGNpZV93cmVnOworCWFkZXYtPnBjaWVw X3JyZWcgPSAmc2lfcGNpZXBfcnJlZzsKKwlhZGV2LT5wY2llcF93cmVnID0gJnNpX3BjaWVwX3dy ZWc7CiAJYWRldi0+dXZkX2N0eF9ycmVnID0gTlVMTDsKIAlhZGV2LT51dmRfY3R4X3dyZWcgPSBO VUxMOwogCWFkZXYtPmRpZHRfcnJlZyA9IE5VTEw7CkBAIC0xMzE2LDMxICsxMzQzLDYgQEAgc3Rh dGljIHZvaWQgc2lfaW5pdF9nb2xkZW5fcmVnaXN0ZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCX0KIH0KIAotdTMyIHNpX3BjaWVwX3JyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHUzMiByZWcpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1MzIgcjsKLQotCXNwaW5f bG9ja19pcnFzYXZlKCZhZGV2LT5wY2llX2lkeF9sb2NrLCBmbGFncyk7Ci0JV1JFRzMyKFBDSUVf UE9SVF9JTkRFWCwgKChyZWcpICYgMHhmZikpOwotCSh2b2lkKVJSRUczMihQQ0lFX1BPUlRfSU5E RVgpOwotCXIgPSBSUkVHMzIoUENJRV9QT1JUX0RBVEEpOwotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ssIGZsYWdzKTsKLQlyZXR1cm4gcjsKLX0KLQotdm9pZCBz aV9wY2llcF93cmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmVnLCB1MzIgdikK LXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnBj aWVfaWR4X2xvY2ssIGZsYWdzKTsKLQlXUkVHMzIoUENJRV9QT1JUX0lOREVYLCAoKHJlZykgJiAw eGZmKSk7Ci0JKHZvaWQpUlJFRzMyKFBDSUVfUE9SVF9JTkRFWCk7Ci0JV1JFRzMyKFBDSUVfUE9S VF9EQVRBLCAodikpOwotCSh2b2lkKVJSRUczMihQQ0lFX1BPUlRfREFUQSk7Ci0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmYWRldi0+cGNpZV9pZHhfbG9jaywgZmxhZ3MpOwotfQotCiBzdGF0aWMg dm9pZCBzaV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewog CXN0cnVjdCBwY2lfZGV2ICpyb290ID0gYWRldi0+cGRldi0+YnVzLT5zZWxmOwpAQCAtMTM2NSw3 ICsxMzY3LDcgQEAgc3RhdGljIHZvaWQgc2lfcGNpZV9nZW4zX2VuYWJsZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAlpZiAoIShtYXNrICYgKERSTV9QQ0lFX1NQRUVEXzUwIHwgRFJNX1BD SUVfU1BFRURfODApKSkKIAkJcmV0dXJuOwogCi0Jc3BlZWRfY250bCA9IHNpX3BjaWVwX3JyZWco YWRldixQQ0lFX0xDX1NQRUVEX0NOVEwpOworCXNwZWVkX2NudGwgPSBSUkVHMzJfUENJRV9QT1JU KFBDSUVfTENfU1BFRURfQ05UTCk7CiAJY3VycmVudF9kYXRhX3JhdGUgPSAoc3BlZWRfY250bCAm IExDX0NVUlJFTlRfREFUQV9SQVRFX01BU0spID4+CiAJCUxDX0NVUlJFTlRfREFUQV9SQVRFX1NI SUZUOwogCWlmIChtYXNrICYgRFJNX1BDSUVfU1BFRURfODApIHsKQEAgLTE0MTAsMTIgKzE0MTIs MTIgQEAgc3RhdGljIHZvaWQgc2lfcGNpZV9nZW4zX2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKIAkJCWN1cnJlbnRfbHcgPSAodG1wICYgTENfT1BFUkFUSU5HX0xJTktfV0lEVEhf TUFTSykgPj4gTENfT1BFUkFUSU5HX0xJTktfV0lEVEhfU0hJRlQ7CiAKIAkJCWlmIChjdXJyZW50 X2x3IDwgbWF4X2x3KSB7Ci0JCQkJdG1wID0gc2lfcGNpZXBfcnJlZyhhZGV2LCBQQ0lFX0xDX0xJ TktfV0lEVEhfQ05UTCk7CisJCQkJdG1wID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0xJTktf V0lEVEhfQ05UTCk7CiAJCQkJaWYgKHRtcCAmIExDX1JFTkVHT1RJQVRJT05fU1VQUE9SVCkgewog CQkJCQl0bXAgJj0gfihMQ19MSU5LX1dJRFRIX01BU0sgfCBMQ19VUENPTkZJR1VSRV9ESVMpOwog CQkJCQl0bXAgfD0gKG1heF9sdyA8PCBMQ19MSU5LX1dJRFRIX1NISUZUKTsKIAkJCQkJdG1wIHw9 IExDX1VQQ09ORklHVVJFX1NVUFBPUlQgfCBMQ19SRU5FR09USUFURV9FTiB8IExDX1JFQ09ORklH X05PVzsKLQkJCQkJc2lfcGNpZXBfd3JlZyhhZGV2LCBQQ0lFX0xDX0xJTktfV0lEVEhfQ05UTCwg dG1wKTsKKwkJCQkJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0xJTktfV0lEVEhfQ05UTCwgdG1w KTsKIAkJCQl9CiAJCQl9CiAKQEAgLTE0MzAsMTMgKzE0MzIsMTMgQEAgc3RhdGljIHZvaWQgc2lf cGNpZV9nZW4zX2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQlwY2lfcmVh ZF9jb25maWdfd29yZChyb290LCBicmlkZ2VfcG9zICsgUENJX0VYUF9MTktDVEwyLCAmYnJpZGdl X2NmZzIpOwogCQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGFkZXYtPnBkZXYsIGdwdV9wb3MgKyBQ Q0lfRVhQX0xOS0NUTDIsICZncHVfY2ZnMik7CiAKLQkJCQl0bXAgPSBzaV9wY2llcF9ycmVnKGFk ZXYsIFBDSUVfTENfQ05UTDQpOworCQkJCXRtcCA9IFJSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19D TlRMNCk7CiAJCQkJdG1wIHw9IExDX1NFVF9RVUlFU0NFOwotCQkJCXNpX3BjaWVwX3dyZWcoYWRl dixQQ0lFX0xDX0NOVEw0LCB0bXApOworCQkJCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19DTlRM NCwgdG1wKTsKIAotCQkJCXRtcCA9IHNpX3BjaWVwX3JyZWcoYWRldiwgUENJRV9MQ19DTlRMNCk7 CisJCQkJdG1wID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEw0KTsKIAkJCQl0bXAgfD0g TENfUkVET19FUTsKLQkJCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfQ05UTDQsIHRtcCk7 CisJCQkJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEw0LCB0bXApOwogCiAJCQkJbWRlbGF5 KDEwMCk7CiAKQEAgLTE0NjAsMTYgKzE0NjIsMTYgQEAgc3RhdGljIHZvaWQgc2lfcGNpZV9nZW4z X2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQl0bXAxNiB8PSAoZ3B1X2Nm ZzIgJiAoKDEgPDwgNCkgfCAoNyA8PCA5KSkpOwogCQkJCXBjaV93cml0ZV9jb25maWdfd29yZChh ZGV2LT5wZGV2LCBncHVfcG9zICsgUENJX0VYUF9MTktDVEwyLCB0bXAxNik7CiAKLQkJCQl0bXAg PSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENfQ05UTDQpOworCQkJCXRtcCA9IFJSRUczMl9Q Q0lFX1BPUlQoUENJRV9MQ19DTlRMNCk7CiAJCQkJdG1wICY9IH5MQ19TRVRfUVVJRVNDRTsKLQkJ CQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfQ05UTDQsIHRtcCk7CisJCQkJV1JFRzMyX1BD SUVfUE9SVChQQ0lFX0xDX0NOVEw0LCB0bXApOwogCQkJfQogCQl9CiAJfQogCiAJc3BlZWRfY250 bCB8PSBMQ19GT1JDRV9FTl9TV19TUEVFRF9DSEFOR0UgfCBMQ19GT1JDRV9ESVNfSFdfU1BFRURf Q0hBTkdFOwogCXNwZWVkX2NudGwgJj0gfkxDX0ZPUkNFX0RJU19TV19TUEVFRF9DSEFOR0U7Ci0J c2lfcGNpZXBfd3JlZyhhZGV2LCBQQ0lFX0xDX1NQRUVEX0NOVEwsIHNwZWVkX2NudGwpOworCVdS RUczMl9QQ0lFX1BPUlQoUENJRV9MQ19TUEVFRF9DTlRMLCBzcGVlZF9jbnRsKTsKIAogCXBjaV9y ZWFkX2NvbmZpZ193b3JkKGFkZXYtPnBkZXYsIGdwdV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsICZ0 bXAxNik7CiAJdG1wMTYgJj0gfjB4ZjsKQEAgLTE0ODEsMTIgKzE0ODMsMTIgQEAgc3RhdGljIHZv aWQgc2lfcGNpZV9nZW4zX2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJdG1w MTYgfD0gMTsKIAlwY2lfd3JpdGVfY29uZmlnX3dvcmQoYWRldi0+cGRldiwgZ3B1X3BvcyArIFBD SV9FWFBfTE5LQ1RMMiwgdG1wMTYpOwogCi0Jc3BlZWRfY250bCA9IHNpX3BjaWVwX3JyZWcoYWRl diwgUENJRV9MQ19TUEVFRF9DTlRMKTsKKwlzcGVlZF9jbnRsID0gUlJFRzMyX1BDSUVfUE9SVChQ Q0lFX0xDX1NQRUVEX0NOVEwpOwogCXNwZWVkX2NudGwgfD0gTENfSU5JVElBVEVfTElOS19TUEVF RF9DSEFOR0U7Ci0Jc2lfcGNpZXBfd3JlZyhhZGV2LCBQQ0lFX0xDX1NQRUVEX0NOVEwsIHNwZWVk X2NudGwpOworCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19TUEVFRF9DTlRMLCBzcGVlZF9jbnRs KTsKIAogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51c2VjX3RpbWVvdXQ7IGkrKykgewotCQlzcGVl ZF9jbnRsID0gc2lfcGNpZXBfcnJlZyhhZGV2LCBQQ0lFX0xDX1NQRUVEX0NOVEwpOworCQlzcGVl ZF9jbnRsID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX1NQRUVEX0NOVEwpOwogCQlpZiAoKHNw ZWVkX2NudGwgJiBMQ19JTklUSUFURV9MSU5LX1NQRUVEX0NIQU5HRSkgPT0gMCkKIAkJCWJyZWFr OwogCQl1ZGVsYXkoMSk7CkBAIC0xNTQ3LDIzICsxNTQ5LDIzIEBAIHN0YXRpYyB2b2lkIHNpX3By b2dyYW1fYXNwbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAogCWlmIChhZGV2LT5mbGFn cyAmIEFNRF9JU19BUFUpCiAJCXJldHVybjsKLQlvcmlnID0gZGF0YSA9IHNpX3BjaWVwX3JyZWco YWRldiwgUENJRV9MQ19OX0ZUU19DTlRMKTsKKwlvcmlnID0gZGF0YSA9IFJSRUczMl9QQ0lFX1BP UlQoUENJRV9MQ19OX0ZUU19DTlRMKTsKIAlkYXRhICY9IH5MQ19YTUlUX05fRlRTX01BU0s7CiAJ ZGF0YSB8PSBMQ19YTUlUX05fRlRTKDB4MjQpIHwgTENfWE1JVF9OX0ZUU19PVkVSUklERV9FTjsK IAlpZiAob3JpZyAhPSBkYXRhKQotCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfTl9GVFNf Q05UTCwgZGF0YSk7CisJCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19OX0ZUU19DTlRMLCBkYXRh KTsKIAotCW9yaWcgPSBkYXRhID0gc2lfcGNpZXBfcnJlZyhhZGV2LCBQQ0lFX0xDX0NOVEwzKTsK KwlvcmlnID0gZGF0YSA9IFJSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19DTlRMMyk7CiAJZGF0YSB8 PSBMQ19HT19UT19SRUNPVkVSWTsKIAlpZiAob3JpZyAhPSBkYXRhKQotCQlzaV9wY2llcF93cmVn KGFkZXYsIFBDSUVfTENfQ05UTDMsIGRhdGEpOworCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENf Q05UTDMsIGRhdGEpOwogCiAJb3JpZyA9IGRhdGEgPSBSUkVHMzJfUENJRShQQ0lFX1BfQ05UTCk7 CiAJZGF0YSB8PSBQX0lHTk9SRV9FREJfRVJSOwogCWlmIChvcmlnICE9IGRhdGEpCiAJCVdSRUcz Ml9QQ0lFKFBDSUVfUF9DTlRMLCBkYXRhKTsKIAotCW9yaWcgPSBkYXRhID0gc2lfcGNpZXBfcnJl ZyhhZGV2LCBQQ0lFX0xDX0NOVEwpOworCW9yaWcgPSBkYXRhID0gUlJFRzMyX1BDSUVfUE9SVChQ Q0lFX0xDX0NOVEwpOwogCWRhdGEgJj0gfihMQ19MMFNfSU5BQ1RJVklUWV9NQVNLIHwgTENfTDFf SU5BQ1RJVklUWV9NQVNLKTsKIAlkYXRhIHw9IExDX1BNSV9UT19MMV9ESVM7CiAJaWYgKCFkaXNh YmxlX2wwcykKQEAgLTE1NzMsNyArMTU3NSw3IEBAIHN0YXRpYyB2b2lkIHNpX3Byb2dyYW1fYXNw bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJZGF0YSB8PSBMQ19MMV9JTkFDVElWSVRZ KDcpOwogCQlkYXRhICY9IH5MQ19QTUlfVE9fTDFfRElTOwogCQlpZiAob3JpZyAhPSBkYXRhKQot CQkJc2lfcGNpZXBfd3JlZyhhZGV2LCBQQ0lFX0xDX0NOVEwsIGRhdGEpOworCQkJV1JFRzMyX1BD SUVfUE9SVChQQ0lFX0xDX0NOVEwsIGRhdGEpOwogCiAJCWlmICghZGlzYWJsZV9wbGxvZmZfaW5f bDEpIHsKIAkJCWJvb2wgY2xrX3JlcV9zdXBwb3J0OwpAQCAtMTY0MywxMSArMTY0NSwxMSBAQCBz dGF0aWMgdm9pZCBzaV9wcm9ncmFtX2FzcG0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CQkJaWYgKG9yaWcgIT0gZGF0YSkKIAkJCQkJc2lfcGlmX3BoeTFfd3JlZyhhZGV2LFBCMV9QSUZf UFdSRE9XTl8zLCBkYXRhKTsKIAkJCX0KLQkJCW9yaWcgPSBkYXRhID0gc2lfcGNpZXBfcnJlZyhh ZGV2LCBQQ0lFX0xDX0xJTktfV0lEVEhfQ05UTCk7CisJCQlvcmlnID0gZGF0YSA9IFJSRUczMl9Q Q0lFX1BPUlQoUENJRV9MQ19MSU5LX1dJRFRIX0NOVEwpOwogCQkJZGF0YSAmPSB+TENfRFlOX0xB TkVTX1BXUl9TVEFURV9NQVNLOwogCQkJZGF0YSB8PSBMQ19EWU5fTEFORVNfUFdSX1NUQVRFKDMp OwogCQkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENf TElOS19XSURUSF9DTlRMLCBkYXRhKTsKKwkJCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfTElO S19XSURUSF9DTlRMLCBkYXRhKTsKIAogCQkJb3JpZyA9IGRhdGEgPSBzaV9waWZfcGh5MF9ycmVn KGFkZXYsUEIwX1BJRl9DTlRMKTsKIAkJCWRhdGEgJj0gfkxTMl9FWElUX1RJTUVfTUFTSzsKQEAg LTE2NzcsMTAgKzE2NzksMTAgQEAgc3RhdGljIHZvaWQgc2lfcHJvZ3JhbV9hc3BtKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogCQkJfQogCiAJCQlpZiAoY2xrX3JlcV9zdXBwb3J0KSB7Ci0J CQkJb3JpZyA9IGRhdGEgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENfQ05UTDIpOworCQkJ CW9yaWcgPSBkYXRhID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEwyKTsKIAkJCQlkYXRh IHw9IExDX0FMTE9XX1BEV05fSU5fTDEgfCBMQ19BTExPV19QRFdOX0lOX0wyMzsKIAkJCQlpZiAo b3JpZyAhPSBkYXRhKQotCQkJCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfQ05UTDIsIGRh dGEpOworCQkJCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTDIsIGRhdGEpOwogCiAJCQkJ b3JpZyA9IGRhdGEgPSBSUkVHMzIoVEhNX0NMS19DTlRMKTsKIAkJCQlkYXRhICY9IH4oQ01PTl9D TEtfU0VMX01BU0sgfCBUTU9OX0NMS19TRUxfTUFTSyk7CkBAIC0xNzE4LDcgKzE3MjAsNyBAQCBz dGF0aWMgdm9pZCBzaV9wcm9ncmFtX2FzcG0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CX0KIAl9IGVsc2UgewogCQlpZiAob3JpZyAhPSBkYXRhKQotCQkJc2lfcGNpZXBfd3JlZyhhZGV2 LCBQQ0lFX0xDX0NOVEwsIGRhdGEpOworCQkJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEws IGRhdGEpOwogCX0KIAogCW9yaWcgPSBkYXRhID0gUlJFRzMyX1BDSUUoUENJRV9DTlRMMik7CkBA IC0xNzI3LDE0ICsxNzI5LDE0IEBAIHN0YXRpYyB2b2lkIHNpX3Byb2dyYW1fYXNwbShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAkJV1JFRzMyX1BDSUUoUENJRV9DTlRMMiwgZGF0YSk7CiAK IAlpZiAoIWRpc2FibGVfbDBzKSB7Ci0JCWRhdGEgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVf TENfTl9GVFNfQ05UTCk7CisJCWRhdGEgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfTl9GVFNf Q05UTCk7CiAJCWlmKChkYXRhICYgTENfTl9GVFNfTUFTSykgPT0gTENfTl9GVFNfTUFTSykgewog CQkJZGF0YSA9IFJSRUczMl9QQ0lFKFBDSUVfTENfU1RBVFVTMSk7CiAJCQlpZiAoKGRhdGEgJiBM Q19SRVZFUlNFX1hNSVQpICYmIChkYXRhICYgTENfUkVWRVJTRV9SQ1ZSKSkgewotCQkJCW9yaWcg PSBkYXRhID0gc2lfcGNpZXBfcnJlZyhhZGV2LCBQQ0lFX0xDX0NOVEwpOworCQkJCW9yaWcgPSBk YXRhID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEwpOwogCQkJCWRhdGEgJj0gfkxDX0ww U19JTkFDVElWSVRZX01BU0s7CiAJCQkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCQkJc2lfcGNpZXBf d3JlZyhhZGV2LCBQQ0lFX0xDX0NOVEwsIGRhdGEpOworCQkJCQlXUkVHMzJfUENJRV9QT1JUKFBD SUVfTENfQ05UTCwgZGF0YSk7CiAJCQl9CiAJCX0KIAl9Ci0tIAoyLjcuNAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==