From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 12/14] drm/amdgpu: introduce pcie port read/write entry Date: Tue, 30 Aug 2016 19:50:09 +0800 Message-ID: <1472557811-8015-13-git-send-email-ray.huang@amd.com> References: <1472557811-8015-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: <1472557811-8015-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 Cc: Ken Wang , Hui Yu , Huang Rui , Alvin Huan VGhpcyBwYXRjaCBhZGRzIHBjaWUgcG9ydCByZWFkL3dyaXRlIGVudHJ5LCBiZWNhdXNlIGl0IHdp bGwgYmUgYWxzbwp1c2VkIG9uIHNpIGRwbSBwYXJ0LgoKQ2hhbmdlLUlkOiBJZDhhM2NmNTcyMzNh YzgwN2MyZTVhMzdmZTFkMzEwZTI4NzRiMDgxNApTaWduZWQtb2ZmLWJ5OiBIdWFuZyBSdWkgPHJh eS5odWFuZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o ICAgICAgICB8ICAgNCArKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rldmlj ZS5jIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMgICAgICAgICAgICB8 IDEwNiArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA2MCBp bnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oCmluZGV4IDE5YzlhMmUuLjZlYjFkM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oCkBAIC0yMDQzLDYgKzIwNDMsOCBAQCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSB7CiAJc3Bpbmxv Y2tfdCBwY2llX2lkeF9sb2NrOwogCWFtZGdwdV9ycmVnX3QJCQlwY2llX3JyZWc7CiAJYW1kZ3B1 X3dyZWdfdAkJCXBjaWVfd3JlZzsKKwlhbWRncHVfcnJlZ190CQkJcGNpZXBfcnJlZzsKKwlhbWRn cHVfd3JlZ190CQkJcGNpZXBfd3JlZzsKIAkvKiBwcm90ZWN0cyBjb25jdXJyZW50IFVWRCByZWdp c3RlciBhY2Nlc3MgKi8KIAlzcGlubG9ja190IHV2ZF9jdHhfaWR4X2xvY2s7CiAJYW1kZ3B1X3Jy ZWdfdAkJCXV2ZF9jdHhfcnJlZzsKQEAgLTIxODMsNiArMjE4NSw4IEBAIGJvb2wgYW1kZ3B1X2Rl dmljZV9oYXNfZGFsX3N1cHBvcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogI2RlZmlu ZSBSRUdfR0VUKEZJRUxELCB2KSAoKCh2KSA8PCBGSUVMRCMjX1NISUZUKSAmIEZJRUxEIyNfTUFT SykKICNkZWZpbmUgUlJFRzMyX1BDSUUocmVnKSBhZGV2LT5wY2llX3JyZWcoYWRldiwgKHJlZykp CiAjZGVmaW5lIFdSRUczMl9QQ0lFKHJlZywgdikgYWRldi0+cGNpZV93cmVnKGFkZXYsIChyZWcp LCAodikpCisjZGVmaW5lIFJSRUczMl9QQ0lFX1BPUlQocmVnKSBhZGV2LT5wY2llcF9ycmVnKGFk ZXYsIChyZWcpKQorI2RlZmluZSBXUkVHMzJfUENJRV9QT1JUKHJlZywgdikgYWRldi0+cGNpZXBf d3JlZyhhZGV2LCAocmVnKSwgKHYpKQogI2RlZmluZSBSUkVHMzJfU01DKHJlZykgYWRldi0+c21j X3JyZWcoYWRldiwgKHJlZykpCiAjZGVmaW5lIFdSRUczMl9TTUMocmVnLCB2KSBhZGV2LT5zbWNf d3JlZyhhZGV2LCAocmVnKSwgKHYpKQogI2RlZmluZSBSUkVHMzJfVVZEX0NUWChyZWcpIGFkZXYt PnV2ZF9jdHhfcnJlZyhhZGV2LCAocmVnKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kZXZpY2UuYwppbmRleCA4ZWI1Mzk2Li5hMjBhMmIyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCkBAIC0xNTQ0LDYgKzE1NDQsOCBAQCBpbnQgYW1k Z3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWFkZXYtPnNtY193 cmVnID0gJmFtZGdwdV9pbnZhbGlkX3dyZWc7CiAJYWRldi0+cGNpZV9ycmVnID0gJmFtZGdwdV9p bnZhbGlkX3JyZWc7CiAJYWRldi0+cGNpZV93cmVnID0gJmFtZGdwdV9pbnZhbGlkX3dyZWc7CisJ YWRldi0+cGNpZXBfcnJlZyA9ICZhbWRncHVfaW52YWxpZF9ycmVnOworCWFkZXYtPnBjaWVwX3dy ZWcgPSAmYW1kZ3B1X2ludmFsaWRfd3JlZzsKIAlhZGV2LT51dmRfY3R4X3JyZWcgPSAmYW1kZ3B1 X2ludmFsaWRfcnJlZzsKIAlhZGV2LT51dmRfY3R4X3dyZWcgPSAmYW1kZ3B1X2ludmFsaWRfd3Jl ZzsKIAlhZGV2LT5kaWR0X3JyZWcgPSAmYW1kZ3B1X2ludmFsaWRfcnJlZzsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9zaS5jCmluZGV4IGQ1ZmMxOTcuLmZlZTc2YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3NpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2ku YwpAQCAtOTA1LDYgKzkwNSwzMSBAQCBzdGF0aWMgdm9pZCBzaV9wY2llX3dyZWcoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiByZWcsIHUzMiB2KQogCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ssIGZsYWdzKTsKIH0KIAordTMyIHNpX3BjaWVwX3JyZWco c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiByZWcpCit7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKwl1MzIgcjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT5wY2llX2lkeF9sb2Nr LCBmbGFncyk7CisJV1JFRzMyKFBDSUVfUE9SVF9JTkRFWCwgKChyZWcpICYgMHhmZikpOworCSh2 b2lkKVJSRUczMihQQ0lFX1BPUlRfSU5ERVgpOworCXIgPSBSUkVHMzIoUENJRV9QT1JUX0RBVEEp OworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ssIGZsYWdzKTsK KwlyZXR1cm4gcjsKK30KKwordm9pZCBzaV9wY2llcF93cmVnKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCB1MzIgcmVnLCB1MzIgdikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bp bl9sb2NrX2lycXNhdmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ssIGZsYWdzKTsKKwlXUkVHMzIoUENJ RV9QT1JUX0lOREVYLCAoKHJlZykgJiAweGZmKSk7CisJKHZvaWQpUlJFRzMyKFBDSUVfUE9SVF9J TkRFWCk7CisJV1JFRzMyKFBDSUVfUE9SVF9EQVRBLCAodikpOworCSh2b2lkKVJSRUczMihQQ0lF X1BPUlRfREFUQSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+cGNpZV9pZHhfbG9j aywgZmxhZ3MpOworfQorCiBzdGF0aWMgdTMyIHNpX3NtY19ycmVnKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1MzIgcmVnKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xMTI1LDYg KzExNTAsOCBAQCBzdGF0aWMgaW50IHNpX2NvbW1vbl9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkK IAlhZGV2LT5zbWNfd3JlZyA9ICZzaV9zbWNfd3JlZzsKIAlhZGV2LT5wY2llX3JyZWcgPSAmc2lf cGNpZV9ycmVnOwogCWFkZXYtPnBjaWVfd3JlZyA9ICZzaV9wY2llX3dyZWc7CisJYWRldi0+cGNp ZXBfcnJlZyA9ICZzaV9wY2llcF9ycmVnOworCWFkZXYtPnBjaWVwX3dyZWcgPSAmc2lfcGNpZXBf d3JlZzsKIAlhZGV2LT51dmRfY3R4X3JyZWcgPSBOVUxMOwogCWFkZXYtPnV2ZF9jdHhfd3JlZyA9 IE5VTEw7CiAJYWRldi0+ZGlkdF9ycmVnID0gTlVMTDsKQEAgLTEzMTYsMzEgKzEzNDMsNiBAQCBz dGF0aWMgdm9pZCBzaV9pbml0X2dvbGRlbl9yZWdpc3RlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJfQogfQogCi11MzIgc2lfcGNpZXBfcnJlZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgdTMyIHJlZykKLXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXUzMiByOwotCi0Jc3Bp bl9sb2NrX2lycXNhdmUoJmFkZXYtPnBjaWVfaWR4X2xvY2ssIGZsYWdzKTsKLQlXUkVHMzIoUENJ RV9QT1JUX0lOREVYLCAoKHJlZykgJiAweGZmKSk7Ci0JKHZvaWQpUlJFRzMyKFBDSUVfUE9SVF9J TkRFWCk7Ci0JciA9IFJSRUczMihQQ0lFX1BPUlRfREFUQSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmYWRldi0+cGNpZV9pZHhfbG9jaywgZmxhZ3MpOwotCXJldHVybiByOwotfQotCi12b2lk IHNpX3BjaWVwX3dyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiByZWcsIHUzMiB2 KQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+ cGNpZV9pZHhfbG9jaywgZmxhZ3MpOwotCVdSRUczMihQQ0lFX1BPUlRfSU5ERVgsICgocmVnKSAm IDB4ZmYpKTsKLQkodm9pZClSUkVHMzIoUENJRV9QT1JUX0lOREVYKTsKLQlXUkVHMzIoUENJRV9Q T1JUX0RBVEEsICh2KSk7Ci0JKHZvaWQpUlJFRzMyKFBDSUVfUE9SVF9EQVRBKTsKLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZhZGV2LT5wY2llX2lkeF9sb2NrLCBmbGFncyk7Ci19Ci0KIHN0YXRp YyB2b2lkIHNpX3BjaWVfZ2VuM19lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7 CiAJc3RydWN0IHBjaV9kZXYgKnJvb3QgPSBhZGV2LT5wZGV2LT5idXMtPnNlbGY7CkBAIC0xMzY1 LDcgKzEzNjcsNyBAQCBzdGF0aWMgdm9pZCBzaV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCWlmICghKG1hc2sgJiAoRFJNX1BDSUVfU1BFRURfNTAgfCBEUk1f UENJRV9TUEVFRF84MCkpKQogCQlyZXR1cm47CiAKLQlzcGVlZF9jbnRsID0gc2lfcGNpZXBfcnJl ZyhhZGV2LFBDSUVfTENfU1BFRURfQ05UTCk7CisJc3BlZWRfY250bCA9IFJSRUczMl9QQ0lFX1BP UlQoUENJRV9MQ19TUEVFRF9DTlRMKTsKIAljdXJyZW50X2RhdGFfcmF0ZSA9IChzcGVlZF9jbnRs ICYgTENfQ1VSUkVOVF9EQVRBX1JBVEVfTUFTSykgPj4KIAkJTENfQ1VSUkVOVF9EQVRBX1JBVEVf U0hJRlQ7CiAJaWYgKG1hc2sgJiBEUk1fUENJRV9TUEVFRF84MCkgewpAQCAtMTQxMCwxMiArMTQx MiwxMiBAQCBzdGF0aWMgdm9pZCBzaV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogCQkJY3VycmVudF9sdyA9ICh0bXAgJiBMQ19PUEVSQVRJTkdfTElOS19XSURU SF9NQVNLKSA+PiBMQ19PUEVSQVRJTkdfTElOS19XSURUSF9TSElGVDsKIAogCQkJaWYgKGN1cnJl bnRfbHcgPCBtYXhfbHcpIHsKLQkJCQl0bXAgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENf TElOS19XSURUSF9DTlRMKTsKKwkJCQl0bXAgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfTElO S19XSURUSF9DTlRMKTsKIAkJCQlpZiAodG1wICYgTENfUkVORUdPVElBVElPTl9TVVBQT1JUKSB7 CiAJCQkJCXRtcCAmPSB+KExDX0xJTktfV0lEVEhfTUFTSyB8IExDX1VQQ09ORklHVVJFX0RJUyk7 CiAJCQkJCXRtcCB8PSAobWF4X2x3IDw8IExDX0xJTktfV0lEVEhfU0hJRlQpOwogCQkJCQl0bXAg fD0gTENfVVBDT05GSUdVUkVfU1VQUE9SVCB8IExDX1JFTkVHT1RJQVRFX0VOIHwgTENfUkVDT05G SUdfTk9XOwotCQkJCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfTElOS19XSURUSF9DTlRM LCB0bXApOworCQkJCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfTElOS19XSURUSF9DTlRMLCB0 bXApOwogCQkJCX0KIAkJCX0KIApAQCAtMTQzMCwxMyArMTQzMiwxMyBAQCBzdGF0aWMgdm9pZCBz aV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJCXBjaV9y ZWFkX2NvbmZpZ193b3JkKHJvb3QsIGJyaWRnZV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsICZicmlk Z2VfY2ZnMik7CiAJCQkJcGNpX3JlYWRfY29uZmlnX3dvcmQoYWRldi0+cGRldiwgZ3B1X3BvcyAr IFBDSV9FWFBfTE5LQ1RMMiwgJmdwdV9jZmcyKTsKIAotCQkJCXRtcCA9IHNpX3BjaWVwX3JyZWco YWRldiwgUENJRV9MQ19DTlRMNCk7CisJCQkJdG1wID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xD X0NOVEw0KTsKIAkJCQl0bXAgfD0gTENfU0VUX1FVSUVTQ0U7Ci0JCQkJc2lfcGNpZXBfd3JlZyhh ZGV2LFBDSUVfTENfQ05UTDQsIHRtcCk7CisJCQkJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NO VEw0LCB0bXApOwogCi0JCQkJdG1wID0gc2lfcGNpZXBfcnJlZyhhZGV2LCBQQ0lFX0xDX0NOVEw0 KTsKKwkJCQl0bXAgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTDQpOwogCQkJCXRtcCB8 PSBMQ19SRURPX0VROwotCQkJCXNpX3BjaWVwX3dyZWcoYWRldiwgUENJRV9MQ19DTlRMNCwgdG1w KTsKKwkJCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTDQsIHRtcCk7CiAKIAkJCQltZGVs YXkoMTAwKTsKIApAQCAtMTQ2MCwxNiArMTQ2MiwxNiBAQCBzdGF0aWMgdm9pZCBzaV9wY2llX2dl bjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJCXRtcDE2IHw9IChncHVf Y2ZnMiAmICgoMSA8PCA0KSB8ICg3IDw8IDkpKSk7CiAJCQkJcGNpX3dyaXRlX2NvbmZpZ193b3Jk KGFkZXYtPnBkZXYsIGdwdV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsIHRtcDE2KTsKIAotCQkJCXRt cCA9IHNpX3BjaWVwX3JyZWcoYWRldiwgUENJRV9MQ19DTlRMNCk7CisJCQkJdG1wID0gUlJFRzMy X1BDSUVfUE9SVChQQ0lFX0xDX0NOVEw0KTsKIAkJCQl0bXAgJj0gfkxDX1NFVF9RVUlFU0NFOwot CQkJCXNpX3BjaWVwX3dyZWcoYWRldiwgUENJRV9MQ19DTlRMNCwgdG1wKTsKKwkJCQlXUkVHMzJf UENJRV9QT1JUKFBDSUVfTENfQ05UTDQsIHRtcCk7CiAJCQl9CiAJCX0KIAl9CiAKIAlzcGVlZF9j bnRsIHw9IExDX0ZPUkNFX0VOX1NXX1NQRUVEX0NIQU5HRSB8IExDX0ZPUkNFX0RJU19IV19TUEVF RF9DSEFOR0U7CiAJc3BlZWRfY250bCAmPSB+TENfRk9SQ0VfRElTX1NXX1NQRUVEX0NIQU5HRTsK LQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfU1BFRURfQ05UTCwgc3BlZWRfY250bCk7CisJ V1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX1NQRUVEX0NOVEwsIHNwZWVkX2NudGwpOwogCiAJcGNp X3JlYWRfY29uZmlnX3dvcmQoYWRldi0+cGRldiwgZ3B1X3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwg JnRtcDE2KTsKIAl0bXAxNiAmPSB+MHhmOwpAQCAtMTQ4MSwxMiArMTQ4MywxMiBAQCBzdGF0aWMg dm9pZCBzaV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQl0 bXAxNiB8PSAxOwogCXBjaV93cml0ZV9jb25maWdfd29yZChhZGV2LT5wZGV2LCBncHVfcG9zICsg UENJX0VYUF9MTktDVEwyLCB0bXAxNik7CiAKLQlzcGVlZF9jbnRsID0gc2lfcGNpZXBfcnJlZyhh ZGV2LCBQQ0lFX0xDX1NQRUVEX0NOVEwpOworCXNwZWVkX2NudGwgPSBSUkVHMzJfUENJRV9QT1JU KFBDSUVfTENfU1BFRURfQ05UTCk7CiAJc3BlZWRfY250bCB8PSBMQ19JTklUSUFURV9MSU5LX1NQ RUVEX0NIQU5HRTsKLQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfU1BFRURfQ05UTCwgc3Bl ZWRfY250bCk7CisJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX1NQRUVEX0NOVEwsIHNwZWVkX2Nu dGwpOwogCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7Ci0JCXNw ZWVkX2NudGwgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENfU1BFRURfQ05UTCk7CisJCXNw ZWVkX2NudGwgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfU1BFRURfQ05UTCk7CiAJCWlmICgo c3BlZWRfY250bCAmIExDX0lOSVRJQVRFX0xJTktfU1BFRURfQ0hBTkdFKSA9PSAwKQogCQkJYnJl YWs7CiAJCXVkZWxheSgxKTsKQEAgLTE1NDcsMjMgKzE1NDksMjMgQEAgc3RhdGljIHZvaWQgc2lf cHJvZ3JhbV9hc3BtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiAJaWYgKGFkZXYtPmZs YWdzICYgQU1EX0lTX0FQVSkKIAkJcmV0dXJuOwotCW9yaWcgPSBkYXRhID0gc2lfcGNpZXBfcnJl ZyhhZGV2LCBQQ0lFX0xDX05fRlRTX0NOVEwpOworCW9yaWcgPSBkYXRhID0gUlJFRzMyX1BDSUVf UE9SVChQQ0lFX0xDX05fRlRTX0NOVEwpOwogCWRhdGEgJj0gfkxDX1hNSVRfTl9GVFNfTUFTSzsK IAlkYXRhIHw9IExDX1hNSVRfTl9GVFMoMHgyNCkgfCBMQ19YTUlUX05fRlRTX09WRVJSSURFX0VO OwogCWlmIChvcmlnICE9IGRhdGEpCi0JCXNpX3BjaWVwX3dyZWcoYWRldiwgUENJRV9MQ19OX0ZU U19DTlRMLCBkYXRhKTsKKwkJV1JFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX05fRlRTX0NOVEwsIGRh dGEpOwogCi0Jb3JpZyA9IGRhdGEgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENfQ05UTDMp OworCW9yaWcgPSBkYXRhID0gUlJFRzMyX1BDSUVfUE9SVChQQ0lFX0xDX0NOVEwzKTsKIAlkYXRh IHw9IExDX0dPX1RPX1JFQ09WRVJZOwogCWlmIChvcmlnICE9IGRhdGEpCi0JCXNpX3BjaWVwX3dy ZWcoYWRldiwgUENJRV9MQ19DTlRMMywgZGF0YSk7CisJCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9M Q19DTlRMMywgZGF0YSk7CiAKIAlvcmlnID0gZGF0YSA9IFJSRUczMl9QQ0lFKFBDSUVfUF9DTlRM KTsKIAlkYXRhIHw9IFBfSUdOT1JFX0VEQl9FUlI7CiAJaWYgKG9yaWcgIT0gZGF0YSkKIAkJV1JF RzMyX1BDSUUoUENJRV9QX0NOVEwsIGRhdGEpOwogCi0Jb3JpZyA9IGRhdGEgPSBzaV9wY2llcF9y cmVnKGFkZXYsIFBDSUVfTENfQ05UTCk7CisJb3JpZyA9IGRhdGEgPSBSUkVHMzJfUENJRV9QT1JU KFBDSUVfTENfQ05UTCk7CiAJZGF0YSAmPSB+KExDX0wwU19JTkFDVElWSVRZX01BU0sgfCBMQ19M MV9JTkFDVElWSVRZX01BU0spOwogCWRhdGEgfD0gTENfUE1JX1RPX0wxX0RJUzsKIAlpZiAoIWRp c2FibGVfbDBzKQpAQCAtMTU3Myw3ICsxNTc1LDcgQEAgc3RhdGljIHZvaWQgc2lfcHJvZ3JhbV9h c3BtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlkYXRhIHw9IExDX0wxX0lOQUNUSVZJ VFkoNyk7CiAJCWRhdGEgJj0gfkxDX1BNSV9UT19MMV9ESVM7CiAJCWlmIChvcmlnICE9IGRhdGEp Ci0JCQlzaV9wY2llcF93cmVnKGFkZXYsIFBDSUVfTENfQ05UTCwgZGF0YSk7CisJCQlXUkVHMzJf UENJRV9QT1JUKFBDSUVfTENfQ05UTCwgZGF0YSk7CiAKIAkJaWYgKCFkaXNhYmxlX3BsbG9mZl9p bl9sMSkgewogCQkJYm9vbCBjbGtfcmVxX3N1cHBvcnQ7CkBAIC0xNjQzLDExICsxNjQ1LDExIEBA IHN0YXRpYyB2b2lkIHNpX3Byb2dyYW1fYXNwbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IAkJCQlpZiAob3JpZyAhPSBkYXRhKQogCQkJCQlzaV9waWZfcGh5MV93cmVnKGFkZXYsUEIxX1BJ Rl9QV1JET1dOXzMsIGRhdGEpOwogCQkJfQotCQkJb3JpZyA9IGRhdGEgPSBzaV9wY2llcF9ycmVn KGFkZXYsIFBDSUVfTENfTElOS19XSURUSF9DTlRMKTsKKwkJCW9yaWcgPSBkYXRhID0gUlJFRzMy X1BDSUVfUE9SVChQQ0lFX0xDX0xJTktfV0lEVEhfQ05UTCk7CiAJCQlkYXRhICY9IH5MQ19EWU5f TEFORVNfUFdSX1NUQVRFX01BU0s7CiAJCQlkYXRhIHw9IExDX0RZTl9MQU5FU19QV1JfU1RBVEUo Myk7CiAJCQlpZiAob3JpZyAhPSBkYXRhKQotCQkJCXNpX3BjaWVwX3dyZWcoYWRldiwgUENJRV9M Q19MSU5LX1dJRFRIX0NOVEwsIGRhdGEpOworCQkJCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19M SU5LX1dJRFRIX0NOVEwsIGRhdGEpOwogCiAJCQlvcmlnID0gZGF0YSA9IHNpX3BpZl9waHkwX3Jy ZWcoYWRldixQQjBfUElGX0NOVEwpOwogCQkJZGF0YSAmPSB+TFMyX0VYSVRfVElNRV9NQVNLOwpA QCAtMTY3NywxMCArMTY3OSwxMCBAQCBzdGF0aWMgdm9pZCBzaV9wcm9ncmFtX2FzcG0oc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQl9CiAKIAkJCWlmIChjbGtfcmVxX3N1cHBvcnQpIHsK LQkJCQlvcmlnID0gZGF0YSA9IHNpX3BjaWVwX3JyZWcoYWRldiwgUENJRV9MQ19DTlRMMik7CisJ CQkJb3JpZyA9IGRhdGEgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTDIpOwogCQkJCWRh dGEgfD0gTENfQUxMT1dfUERXTl9JTl9MMSB8IExDX0FMTE9XX1BEV05fSU5fTDIzOwogCQkJCWlm IChvcmlnICE9IGRhdGEpCi0JCQkJCXNpX3BjaWVwX3dyZWcoYWRldiwgUENJRV9MQ19DTlRMMiwg ZGF0YSk7CisJCQkJCVdSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19DTlRMMiwgZGF0YSk7CiAKIAkJ CQlvcmlnID0gZGF0YSA9IFJSRUczMihUSE1fQ0xLX0NOVEwpOwogCQkJCWRhdGEgJj0gfihDTU9O X0NMS19TRUxfTUFTSyB8IFRNT05fQ0xLX1NFTF9NQVNLKTsKQEAgLTE3MTgsNyArMTcyMCw3IEBA IHN0YXRpYyB2b2lkIHNpX3Byb2dyYW1fYXNwbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IAkJfQogCX0gZWxzZSB7CiAJCWlmIChvcmlnICE9IGRhdGEpCi0JCQlzaV9wY2llcF93cmVnKGFk ZXYsIFBDSUVfTENfQ05UTCwgZGF0YSk7CisJCQlXUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05U TCwgZGF0YSk7CiAJfQogCiAJb3JpZyA9IGRhdGEgPSBSUkVHMzJfUENJRShQQ0lFX0NOVEwyKTsK QEAgLTE3MjcsMTQgKzE3MjksMTQgQEAgc3RhdGljIHZvaWQgc2lfcHJvZ3JhbV9hc3BtKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlXUkVHMzJfUENJRShQQ0lFX0NOVEwyLCBkYXRhKTsK IAogCWlmICghZGlzYWJsZV9sMHMpIHsKLQkJZGF0YSA9IHNpX3BjaWVwX3JyZWcoYWRldiwgUENJ RV9MQ19OX0ZUU19DTlRMKTsKKwkJZGF0YSA9IFJSRUczMl9QQ0lFX1BPUlQoUENJRV9MQ19OX0ZU U19DTlRMKTsKIAkJaWYoKGRhdGEgJiBMQ19OX0ZUU19NQVNLKSA9PSBMQ19OX0ZUU19NQVNLKSB7 CiAJCQlkYXRhID0gUlJFRzMyX1BDSUUoUENJRV9MQ19TVEFUVVMxKTsKIAkJCWlmICgoZGF0YSAm IExDX1JFVkVSU0VfWE1JVCkgJiYgKGRhdGEgJiBMQ19SRVZFUlNFX1JDVlIpKSB7Ci0JCQkJb3Jp ZyA9IGRhdGEgPSBzaV9wY2llcF9ycmVnKGFkZXYsIFBDSUVfTENfQ05UTCk7CisJCQkJb3JpZyA9 IGRhdGEgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTCk7CiAJCQkJZGF0YSAmPSB+TENf TDBTX0lOQUNUSVZJVFlfTUFTSzsKIAkJCQlpZiAob3JpZyAhPSBkYXRhKQotCQkJCQlzaV9wY2ll cF93cmVnKGFkZXYsIFBDSUVfTENfQ05UTCwgZGF0YSk7CisJCQkJCVdSRUczMl9QQ0lFX1BPUlQo UENJRV9MQ19DTlRMLCBkYXRhKTsKIAkJCX0KIAkJfQogCX0KLS0gCjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK