From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 04/17] drm/amdgpu: add interupt handler implementation for si v3 Date: Sat, 14 May 2016 15:26:16 -0400 Message-ID: <1463253989-28924-5-git-send-email-alexander.deucher@amd.com> References: <1463253989-28924-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-x243.google.com (mail-qg0-x243.google.com [IPv6:2607:f8b0:400d:c04::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 76A246E2D9 for ; Sat, 14 May 2016 19:26:40 +0000 (UTC) Received: by mail-qg0-x243.google.com with SMTP id b14so9874277qge.2 for ; Sat, 14 May 2016 12:26:40 -0700 (PDT) In-Reply-To: <1463253989-28924-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Alex Deucher , Ken Wang List-Id: dri-devel@lists.freedesktop.org RnJvbTogS2VuIFdhbmcgPFFpbmdxaW5nLldhbmdAYW1kLmNvbT4KCnYzOiByZWJhc2UgZml4dXBz CgpSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PgpTaWduZWQtb2ZmLWJ5OiBLZW4gV2FuZyA8UWluZ3FpbmcuV2FuZ0BhbWQuY29tPgpTaWduZWQt b2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguYyB8IDMxMyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5oIHwg IDI5ICsrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzQyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguaAoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9zaV9paC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NGZmMDIK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jCkBA IC0wLDAgKzEsMzEzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgImRybVAuaCIKKyNp bmNsdWRlICJhbWRncHUuaCIKKyNpbmNsdWRlICJhbWRncHVfaWguaCIKKyNpbmNsdWRlICJzaS9z aWQuaCIKKyNpbmNsdWRlICJzaV9paC5oIgorCitzdGF0aWMgdm9pZCBzaV9paF9zZXRfaW50ZXJy dXB0X2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKworc3RhdGljIHZvaWQgc2lf aWhfZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJdTMy IGloX2NudGwgPSBSUkVHMzIoSUhfQ05UTCk7CisJdTMyIGloX3JiX2NudGwgPSBSUkVHMzIoSUhf UkJfQ05UTCk7CisKKwlpaF9jbnRsIHw9IEVOQUJMRV9JTlRSOworCWloX3JiX2NudGwgfD0gSUhf UkJfRU5BQkxFOworCVdSRUczMihJSF9DTlRMLCBpaF9jbnRsKTsKKwlXUkVHMzIoSUhfUkJfQ05U TCwgaWhfcmJfY250bCk7CisJYWRldi0+aXJxLmloLmVuYWJsZWQgPSB0cnVlOworfQorICAKK3N0 YXRpYyB2b2lkIHNpX2loX2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKK3sKKwl1MzIgaWhfcmJfY250bCA9IFJSRUczMihJSF9SQl9DTlRMKTsKKwl1MzIgaWhf Y250bCA9IFJSRUczMihJSF9DTlRMKTsKKworCWloX3JiX2NudGwgJj0gfklIX1JCX0VOQUJMRTsK KwlpaF9jbnRsICY9IH5FTkFCTEVfSU5UUjsKKwlXUkVHMzIoSUhfUkJfQ05UTCwgaWhfcmJfY250 bCk7CisJV1JFRzMyKElIX0NOVEwsIGloX2NudGwpOworCVdSRUczMihJSF9SQl9SUFRSLCAwKTsK KwlXUkVHMzIoSUhfUkJfV1BUUiwgMCk7CisJYWRldi0+aXJxLmloLmVuYWJsZWQgPSBmYWxzZTsK KwlhZGV2LT5pcnEuaWgucnB0ciA9IDA7Cit9CisKK3N0YXRpYyBpbnQgc2lfaWhfaXJxX2luaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJaW50IHJldCA9IDA7CisJaW50IHJiX2J1 ZnN6OworCXUzMiBpbnRlcnJ1cHRfY250bCwgaWhfY250bCwgaWhfcmJfY250bDsKKwl1NjQgd3B0 cl9vZmY7CisKKwlzaV9paF9kaXNhYmxlX2ludGVycnVwdHMoYWRldik7CisJV1JFRzMyKElOVEVS UlVQVF9DTlRMMiwgYWRldi0+aXJxLmloLmdwdV9hZGRyID4+IDgpOworCWludGVycnVwdF9jbnRs ID0gUlJFRzMyKElOVEVSUlVQVF9DTlRMKTsKKwlpbnRlcnJ1cHRfY250bCAmPSB+SUhfRFVNTVlf UkRfT1ZFUlJJREU7CisJaW50ZXJydXB0X2NudGwgJj0gfklIX1JFUV9OT05TTk9PUF9FTjsKKwlX UkVHMzIoSU5URVJSVVBUX0NOVEwsIGludGVycnVwdF9jbnRsKTsKKworCVdSRUczMihJSF9SQl9C QVNFLCBhZGV2LT5pcnEuaWguZ3B1X2FkZHIgPj4gOCk7CisJcmJfYnVmc3ogPSBvcmRlcl9iYXNl XzIoYWRldi0+aXJxLmloLnJpbmdfc2l6ZSAvIDQpOworCisJaWhfcmJfY250bCA9IChJSF9XUFRS X09WRVJGTE9XX0VOQUJMRSB8CisJCSAgICAgIElIX1dQVFJfT1ZFUkZMT1dfQ0xFQVIgfAorCQkg ICAgICAocmJfYnVmc3ogPDwgMSkpOworCisJaWhfcmJfY250bCB8PSBJSF9XUFRSX1dSSVRFQkFD S19FTkFCTEU7CisKKwl3cHRyX29mZiA9IGFkZXYtPndiLmdwdV9hZGRyICsgKGFkZXYtPmlycS5p aC53cHRyX29mZnMgKiA0KTsKKwlXUkVHMzIoSUhfUkJfV1BUUl9BRERSX0xPLCBsb3dlcl8zMl9i aXRzKHdwdHJfb2ZmKSk7CisJV1JFRzMyKElIX1JCX1dQVFJfQUREUl9ISSwgdXBwZXJfMzJfYml0 cyh3cHRyX29mZikgJiAweEZGKTsKKworCVdSRUczMihJSF9SQl9DTlRMLCBpaF9yYl9jbnRsKTsK KworCVdSRUczMihJSF9SQl9SUFRSLCAwKTsKKwlXUkVHMzIoSUhfUkJfV1BUUiwgMCk7CisKKwlp aF9jbnRsID0gTUNfV1JSRVFfQ1JFRElUKDB4MTApIHwgTUNfV1JfQ0xFQU5fQ05UKDB4MTApIHwg TUNfVk1JRCgwKTsKKwlpZiAoYWRldi0+aXJxLm1zaV9lbmFibGVkKQorCQlpaF9jbnRsIHw9IFJQ VFJfUkVBUk07CisJV1JFRzMyKElIX0NOVEwsIGloX2NudGwpOworCisJcGNpX3NldF9tYXN0ZXIo YWRldi0+cGRldik7CisKKwlzaV9paF9lbmFibGVfaW50ZXJydXB0cyhhZGV2KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNpX2loX2lycV9kaXNhYmxlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQoreworCXNpX2loX2Rpc2FibGVfaW50ZXJydXB0cyhhZGV2KTsKKwltZGVs YXkoMSk7Cit9CisKK3N0YXRpYyB1MzIgc2lfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCit7CisJdTMyIHdwdHIsIHRtcDsKKworCXdwdHIgPSBsZTMyX3RvX2NwdShhZGV2 LT53Yi53YlthZGV2LT5pcnEuaWgud3B0cl9vZmZzXSk7CisKKwlpZiAod3B0ciAmIElIX1JCX1dQ VFJfX1JCX09WRVJGTE9XX01BU0spIHsKKwkJd3B0ciAmPSB+SUhfUkJfV1BUUl9fUkJfT1ZFUkZM T1dfTUFTSzsKKwkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiSUggcmluZyBidWZmZXIgb3ZlcmZsb3cg KDB4JTA4WCwgMHglMDhYLCAweCUwOFgpXG4iLAorCQkJd3B0ciwgYWRldi0+aXJxLmloLnJwdHIs ICh3cHRyICsgMTYpICYgYWRldi0+aXJxLmloLnB0cl9tYXNrKTsKKwkJYWRldi0+aXJxLmloLnJw dHIgPSAod3B0ciArIDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzazsKKwkJdG1wID0gUlJFRzMy KElIX1JCX0NOVEwpOworCQl0bXAgfD0gSUhfUkJfQ05UTF9fV1BUUl9PVkVSRkxPV19DTEVBUl9N QVNLOworCQlXUkVHMzIoSUhfUkJfQ05UTCwgdG1wKTsKKwl9CisJcmV0dXJuICh3cHRyICYgYWRl di0+aXJxLmloLnB0cl9tYXNrKTsKK30KKworc3RhdGljIHZvaWQgc2lfaWhfZGVjb2RlX2l2KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2l2X2VudHJ5 ICplbnRyeSkKK3sKKwl1MzIgcmluZ19pbmRleCA9IGFkZXYtPmlycS5paC5ycHRyID4+IDI7CisJ dWludDMyX3QgZHdbNF07CisKKwlkd1swXSA9IGxlMzJfdG9fY3B1KGFkZXYtPmlycS5paC5yaW5n W3JpbmdfaW5kZXggKyAwXSk7CisJZHdbMV0gPSBsZTMyX3RvX2NwdShhZGV2LT5pcnEuaWgucmlu Z1tyaW5nX2luZGV4ICsgMV0pOworCWR3WzJdID0gbGUzMl90b19jcHUoYWRldi0+aXJxLmloLnJp bmdbcmluZ19pbmRleCArIDJdKTsKKwlkd1szXSA9IGxlMzJfdG9fY3B1KGFkZXYtPmlycS5paC5y aW5nW3JpbmdfaW5kZXggKyAzXSk7CisKKwllbnRyeS0+c3JjX2lkID0gZHdbMF0gJiAweGZmOwor CWVudHJ5LT5zcmNfZGF0YSA9IGR3WzFdICYgMHhmZmZmZmZmOworCWVudHJ5LT5yaW5nX2lkID0g ZHdbMl0gJiAweGZmOworCWVudHJ5LT52bV9pZCA9IChkd1syXSA+PiA4KSAmIDB4ZmY7CisKKwlh ZGV2LT5pcnEuaWgucnB0ciArPSAxNjsKK30KKworc3RhdGljIHZvaWQgc2lfaWhfc2V0X3JwdHIo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJV1JFRzMyKElIX1JCX1JQVFIsIGFkZXYt PmlycS5paC5ycHRyKTsKK30KKworc3RhdGljIGludCBzaV9paF9lYXJseV9pbml0KHZvaWQgKmhh bmRsZSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqKWhhbmRsZTsKKworCXNpX2loX3NldF9pbnRlcnJ1cHRfZnVuY3MoYWRldik7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzaV9paF9zd19pbml0KHZvaWQgKmhhbmRsZSkKK3sK KwlpbnQgcjsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqKWhhbmRsZTsKKworCXIgPSBhbWRncHVfaWhfcmluZ19pbml0KGFkZXYsIDY0ICogMTAy NCwgZmFsc2UpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCXIgPSBhbWRncHVfaXJxX2luaXQo YWRldik7CisKKwlyZXR1cm4gcjsKK30KKworc3RhdGljIGludCBzaV9paF9zd19maW5pKHZvaWQg KmhhbmRsZSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqKWhhbmRsZTsKKworCWFtZGdwdV9pcnFfZmluaShhZGV2KTsKKwlhbWRncHVfaWhf cmluZ19maW5pKGFkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2lfaWhfaHdf aW5pdCh2b2lkICpoYW5kbGUpCit7CisJaW50IHI7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlyID0gc2lfaWhfaXJxX2lu aXQoYWRldik7CisJaWYgKHIpCisJCXJldHVybiByOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgc2lfaWhfaHdfZmluaSh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlzaV9paF9pcnFf ZGlzYWJsZShhZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNpX2loX3N1c3Bl bmQodm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVj dCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJcmV0dXJuIHNpX2loX2h3X2ZpbmkoYWRldik7 Cit9CisKK3N0YXRpYyBpbnQgc2lfaWhfcmVzdW1lKHZvaWQgKmhhbmRsZSkKK3sKKwlzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKwor CXJldHVybiBzaV9paF9od19pbml0KGFkZXYpOworfQorCitzdGF0aWMgYm9vbCBzaV9paF9pc19p ZGxlKHZvaWQgKmhhbmRsZSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKwl1MzIgdG1wID0gUlJFRzMyKFNSQk1fU1RBVFVT KTsKKworCWlmICh0bXAgJiBTUkJNX1NUQVRVU19fSUhfQlVTWV9NQVNLKQorCQlyZXR1cm4gZmFs c2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGludCBzaV9paF93YWl0X2Zvcl9pZGxl KHZvaWQgKmhhbmRsZSkKK3sKKwl1bnNpZ25lZCBpOworCXUzMiB0bXA7CisJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlmb3Ig KGkgPSAwOyBpIDwgYWRldi0+dXNlY190aW1lb3V0OyBpKyspIHsKKwkJdG1wID0gUlJFRzMyKFNS Qk1fU1RBVFVTKSAmIFNSQk1fU1RBVFVTX19JSF9CVVNZX01BU0s7CisJCWlmICghdG1wKQorCQkJ cmV0dXJuIDA7CisJCXVkZWxheSgxKTsKKwl9CisJcmV0dXJuIC1FVElNRURPVVQ7Cit9CisKK3N0 YXRpYyBpbnQgc2lfaWhfc29mdF9yZXNldCh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwl1MzIg c3JibV9zb2Z0X3Jlc2V0ID0gMDsKKwl1MzIgdG1wID0gUlJFRzMyKFNSQk1fU1RBVFVTKTsKKwor CWlmICh0bXAgJiBTUkJNX1NUQVRVU19fSUhfQlVTWV9NQVNLKQorCQlzcmJtX3NvZnRfcmVzZXQg fD0gU1JCTV9TT0ZUX1JFU0VUX19TT0ZUX1JFU0VUX0lIX01BU0s7CisKKwlpZiAoc3JibV9zb2Z0 X3Jlc2V0KSB7CisJCXRtcCA9IFJSRUczMihTUkJNX1NPRlRfUkVTRVQpOworCQl0bXAgfD0gc3Ji bV9zb2Z0X3Jlc2V0OworCQlkZXZfaW5mbyhhZGV2LT5kZXYsICJTUkJNX1NPRlRfUkVTRVQ9MHgl MDhYXG4iLCB0bXApOworCQlXUkVHMzIoU1JCTV9TT0ZUX1JFU0VULCB0bXApOworCQl0bXAgPSBS UkVHMzIoU1JCTV9TT0ZUX1JFU0VUKTsKKworCQl1ZGVsYXkoNTApOworCisJCXRtcCAmPSB+c3Ji bV9zb2Z0X3Jlc2V0OworCQlXUkVHMzIoU1JCTV9TT0ZUX1JFU0VULCB0bXApOworCQl0bXAgPSBS UkVHMzIoU1JCTV9TT0ZUX1JFU0VUKTsKKworCQl1ZGVsYXkoNTApOworCX0KKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHNpX2loX3NldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpoYW5k bGUsCisJCQkJCSAgZW51bSBhbWRfY2xvY2tnYXRpbmdfc3RhdGUgc3RhdGUpCit7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc2lfaWhfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHZvaWQgKmhh bmRsZSwKKwkJCQkJICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1 cm4gMDsKK30KKworY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBzaV9paF9pcF9mdW5jcyA9IHsK KwkubmFtZSA9ICJzaV9paCIsCisJLmVhcmx5X2luaXQgPSBzaV9paF9lYXJseV9pbml0LAorCS5s YXRlX2luaXQgPSBOVUxMLAorCS5zd19pbml0ID0gc2lfaWhfc3dfaW5pdCwKKwkuc3dfZmluaSA9 IHNpX2loX3N3X2ZpbmksCisJLmh3X2luaXQgPSBzaV9paF9od19pbml0LAorCS5od19maW5pID0g c2lfaWhfaHdfZmluaSwKKwkuc3VzcGVuZCA9IHNpX2loX3N1c3BlbmQsCisJLnJlc3VtZSA9IHNp X2loX3Jlc3VtZSwKKwkuaXNfaWRsZSA9IHNpX2loX2lzX2lkbGUsCisJLndhaXRfZm9yX2lkbGUg PSBzaV9paF93YWl0X2Zvcl9pZGxlLAorCS5zb2Z0X3Jlc2V0ID0gc2lfaWhfc29mdF9yZXNldCwK Kwkuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0gc2lfaWhfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLAor CS5zZXRfcG93ZXJnYXRpbmdfc3RhdGUgPSBzaV9paF9zZXRfcG93ZXJnYXRpbmdfc3RhdGUsCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9paF9mdW5jcyBzaV9paF9mdW5jcyA9IHsK KwkuZ2V0X3dwdHIgPSBzaV9paF9nZXRfd3B0ciwKKwkuZGVjb2RlX2l2ID0gc2lfaWhfZGVjb2Rl X2l2LAorCS5zZXRfcnB0ciA9IHNpX2loX3NldF9ycHRyCit9OworCitzdGF0aWMgdm9pZCBzaV9p aF9zZXRfaW50ZXJydXB0X2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWlm IChhZGV2LT5pcnEuaWhfZnVuY3MgPT0gTlVMTCkKKwkJYWRldi0+aXJxLmloX2Z1bmNzID0gJnNp X2loX2Z1bmNzOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9z aV9paC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2UzYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29w eXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVU SE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaWZuZGVmIF9fU0lfSUhfSF9fCisjZGVmaW5lIF9fU0lfSUhfSF9fCisKK2V4 dGVybiBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIHNpX2loX2lwX2Z1bmNzOworCisjZW5kaWYK LS0gCjIuNS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK