From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 15/17] drm/amdgpu: add SI SMC support Date: Sat, 14 May 2016 15:26:27 -0400 Message-ID: <1463253989-28924-16-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 329A76E2F9 for ; Sat, 14 May 2016 19:26:48 +0000 (UTC) Received: by mail-qg0-x243.google.com with SMTP id 90so10657047qgz.0 for ; Sat, 14 May 2016 12:26:48 -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 , Maruthi Bayyavarapu List-Id: dri-devel@lists.freedesktop.org RnJvbTogTWFydXRoaSBTcmluaXZhcyBCYXl5YXZhcmFwdSA8TWFydXRoaS5CYXl5YXZhcmFwdUBh bWQuY29tPgoKU2lnbmVkLW9mZi1ieTogTWFydXRoaSBCYXl5YXZhcmFwdSA8bWFydXRoaS5iYXl5 YXZhcmFwdUBhbWQuY29tPgpSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1 Y2hlckBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVj aGVyQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfc21jLmMgICAg ICAgfCAyODAgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3Npc2xhbmRzX3NtYy5oIHwgNDIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCA3MDMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX3NtYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvc2lzbGFuZHNfc21jLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9zbWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3NpX3NtYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNGYzN2MKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9zbWMuYwpAQCAt MCwwICsxLDI4MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBbGV4IERldWNoZXIKKyAq LworCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlICJkcm1QLmgiCisjaW5j bHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSAic2kvc2lkLmgiCisjaW5jbHVkZSAicHBzbWMuaCIK KyNpbmNsdWRlICJhbWRncHVfdWNvZGUuaCIKKyNpbmNsdWRlICJzaXNsYW5kc19zbWMuaCIKKwor c3RhdGljIGludCBzaV9zZXRfc21jX3NyYW1fYWRkcmVzcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKKwkJCQkgICB1MzIgc21jX2FkZHJlc3MsIHUzMiBsaW1pdCkKK3sKKwlpZiAoc21jX2Fk ZHJlc3MgJiAzKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoKHNtY19hZGRyZXNzICsgMykgPiBs aW1pdCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlXUkVHMzIoU01DX0lORF9JTkRFWF8wLCBzbWNf YWRkcmVzcyk7CisJV1JFRzMyX1AoU01DX0lORF9BQ0NFU1NfQ05UTCwgMCwgfkFVVE9fSU5DUkVN RU5UX0lORF8wKTsKKworCXJldHVybiAwOworfQorCitpbnQgc2lfY29weV9ieXRlc190b19zbWMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgdTMyIHNtY19zdGFydF9hZGRyZXNzLAor CQkJIGNvbnN0IHU4ICpzcmMsIHUzMiBieXRlX2NvdW50LCB1MzIgbGltaXQpCit7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0ID0gMDsKKwl1MzIgZGF0YSwgb3JpZ2luYWxfZGF0YSwg YWRkciwgZXh0cmFfc2hpZnQ7CisKKwlpZiAoc21jX3N0YXJ0X2FkZHJlc3MgJiAzKQorCQlyZXR1 cm4gLUVJTlZBTDsKKwlpZiAoKHNtY19zdGFydF9hZGRyZXNzICsgYnl0ZV9jb3VudCkgPiBsaW1p dCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlhZGRyID0gc21jX3N0YXJ0X2FkZHJlc3M7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+c21jX2lkeF9sb2NrLCBmbGFncyk7CisJd2hpbGUgKGJ5 dGVfY291bnQgPj0gNCkgeworCQkvKiBTTUMgYWRkcmVzcyBzcGFjZSBpcyBCRSAqLworCQlkYXRh ID0gKHNyY1swXSA8PCAyNCkgfCAoc3JjWzFdIDw8IDE2KSB8IChzcmNbMl0gPDwgOCkgfCBzcmNb M107CisKKwkJcmV0ID0gc2lfc2V0X3NtY19zcmFtX2FkZHJlc3MoYWRldiwgYWRkciwgbGltaXQp OworCQlpZiAocmV0KQorCQkJZ290byBkb25lOworCisJCVdSRUczMihTTUNfSU5EX0RBVEFfMCwg ZGF0YSk7CisKKwkJc3JjICs9IDQ7CisJCWJ5dGVfY291bnQgLT0gNDsKKwkJYWRkciArPSA0Owor CX0KKworCS8qIFJNVyBmb3IgdGhlIGZpbmFsIGJ5dGVzICovCisJaWYgKGJ5dGVfY291bnQgPiAw KSB7CisJCWRhdGEgPSAwOworCisJCXJldCA9IHNpX3NldF9zbWNfc3JhbV9hZGRyZXNzKGFkZXYs IGFkZHIsIGxpbWl0KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZG9uZTsKKworCQlvcmlnaW5hbF9k YXRhID0gUlJFRzMyKFNNQ19JTkRfREFUQV8wKTsKKworCQlleHRyYV9zaGlmdCA9IDggKiAoNCAt IGJ5dGVfY291bnQpOworCisJCXdoaWxlIChieXRlX2NvdW50ID4gMCkgeworCQkJLyogU01DIGFk ZHJlc3Mgc3BhY2UgaXMgQkUgKi8KKwkJCWRhdGEgPSAoZGF0YSA8PCA4KSArICpzcmMrKzsKKwkJ CWJ5dGVfY291bnQtLTsKKwkJfQorCisJCWRhdGEgPDw9IGV4dHJhX3NoaWZ0OworCisJCWRhdGEg fD0gKG9yaWdpbmFsX2RhdGEgJiB+KCh+MFVMKSA8PCBleHRyYV9zaGlmdCkpOworCisJCXJldCA9 IHNpX3NldF9zbWNfc3JhbV9hZGRyZXNzKGFkZXYsIGFkZHIsIGxpbWl0KTsKKwkJaWYgKHJldCkK KwkJCWdvdG8gZG9uZTsKKworCQlXUkVHMzIoU01DX0lORF9EQVRBXzAsIGRhdGEpOworCX0KKwor ZG9uZToKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdz KTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2lfc3RhcnRfc21jKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQoreworCXUzMiB0bXAgPSBSUkVHMzJfU01DKFNNQ19TWVNDT05fUkVTRVRf Q05UTCk7CisKKwl0bXAgJj0gflJTVF9SRUc7CisKKwlXUkVHMzJfU01DKFNNQ19TWVNDT05fUkVT RVRfQ05UTCwgdG1wKTsKK30KKwordm9pZCBzaV9yZXNldF9zbWMoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCit7CisJdTMyIHRtcDsKKworCVJSRUczMihDQl9DR1RUX1NDTEtfQ1RSTCk7CisJ UlJFRzMyKENCX0NHVFRfU0NMS19DVFJMKTsKKwlSUkVHMzIoQ0JfQ0dUVF9TQ0xLX0NUUkwpOwor CVJSRUczMihDQl9DR1RUX1NDTEtfQ1RSTCk7CisKKwl0bXAgPSBSUkVHMzJfU01DKFNNQ19TWVND T05fUkVTRVRfQ05UTCk7CisJdG1wIHw9IFJTVF9SRUc7CisJV1JFRzMyX1NNQyhTTUNfU1lTQ09O X1JFU0VUX0NOVEwsIHRtcCk7Cit9CisKK2ludCBzaV9wcm9ncmFtX2p1bXBfb25fc3RhcnQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJc3RhdGljIGNvbnN0IHU4IGRhdGFbXSA9IHsg MHgwRSwgMHgwMCwgMHg0MCwgMHg0MCB9OworCisJcmV0dXJuIHNpX2NvcHlfYnl0ZXNfdG9fc21j KGFkZXYsIDB4MCwgZGF0YSwgNCwgc2l6ZW9mKGRhdGEpKzEpOworfQorCit2b2lkIHNpX3N0b3Bf c21jX2Nsb2NrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCXUzMiB0bXAgPSBSUkVH MzJfU01DKFNNQ19TWVNDT05fQ0xPQ0tfQ05UTF8wKTsKKworCXRtcCB8PSBDS19ESVNBQkxFOwor CisJV1JFRzMyX1NNQyhTTUNfU1lTQ09OX0NMT0NLX0NOVExfMCwgdG1wKTsKK30KKwordm9pZCBz aV9zdGFydF9zbWNfY2xvY2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJdTMyIHRt cCA9IFJSRUczMl9TTUMoU01DX1NZU0NPTl9DTE9DS19DTlRMXzApOworCisJdG1wICY9IH5DS19E SVNBQkxFOworCisJV1JFRzMyX1NNQyhTTUNfU1lTQ09OX0NMT0NLX0NOVExfMCwgdG1wKTsKK30K KworYm9vbCBzaV9pc19zbWNfcnVubmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sK Kwl1MzIgcnN0ID0gUlJFRzMyX1NNQyhTTUNfU1lTQ09OX1JFU0VUX0NOVEwpOworCXUzMiBjbGsg PSBSUkVHMzJfU01DKFNNQ19TWVNDT05fQ0xPQ0tfQ05UTF8wKTsKKworCWlmICghKHJzdCAmIFJT VF9SRUcpICYmICEoY2xrICYgQ0tfRElTQUJMRSkpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJu IGZhbHNlOworfQorCitQUFNNQ19SZXN1bHQgc2lfc2VuZF9tc2dfdG9fc21jKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBQUFNNQ19Nc2cgbXNnKQoreworCXUzMiB0bXA7CisJaW50IGk7CisK KwlpZiAoIXNpX2lzX3NtY19ydW5uaW5nKGFkZXYpKQorCQlyZXR1cm4gUFBTTUNfUmVzdWx0X0Zh aWxlZDsKKworCVdSRUczMihTTUNfTUVTU0FHRV8wLCBtc2cpOworCisJZm9yIChpID0gMDsgaSA8 IGFkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7CisJCXRtcCA9IFJSRUczMihTTUNfUkVTUF8wKTsK KwkJaWYgKHRtcCAhPSAwKQorCQkJYnJlYWs7CisJCXVkZWxheSgxKTsKKwl9CisJdG1wID0gUlJF RzMyKFNNQ19SRVNQXzApOworCisJcmV0dXJuIChQUFNNQ19SZXN1bHQpdG1wOworfQorCitQUFNN Q19SZXN1bHQgc2lfd2FpdF9mb3Jfc21jX2luYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQoreworCXUzMiB0bXA7CisJaW50IGk7CisKKwlpZiAoIXNpX2lzX3NtY19ydW5uaW5nKGFk ZXYpKQorCQlyZXR1cm4gUFBTTUNfUmVzdWx0X09LOworCisJZm9yIChpID0gMDsgaSA8IGFkZXYt PnVzZWNfdGltZW91dDsgaSsrKSB7CisJCXRtcCA9IFJSRUczMl9TTUMoU01DX1NZU0NPTl9DTE9D S19DTlRMXzApOworCQlpZiAoKHRtcCAmIENLRU4pID09IDApCisJCQlicmVhazsKKwkJdWRlbGF5 KDEpOworCX0KKworCXJldHVybiBQUFNNQ19SZXN1bHRfT0s7Cit9CisKK2ludCBzaV9sb2FkX3Nt Y191Y29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIGxpbWl0KQoreworCWNvbnN0 IHN0cnVjdCBzbWNfZmlybXdhcmVfaGVhZGVyX3YxXzAgKmhkcjsKKwl1bnNpZ25lZCBsb25nIGZs YWdzOworCXUzMiB1Y29kZV9zdGFydF9hZGRyZXNzOworCXUzMiB1Y29kZV9zaXplOworCWNvbnN0 IHU4ICpzcmM7CisJdTMyIGRhdGE7CisKKwlpZiAoIWFkZXYtPnBtLmZ3KQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCWhkciA9IChjb25zdCBzdHJ1Y3Qgc21jX2Zpcm13YXJlX2hlYWRlcl92MV8wICop YWRldi0+cG0uZnctPmRhdGE7CisKKwlhbWRncHVfdWNvZGVfcHJpbnRfc21jX2hkcigmaGRyLT5o ZWFkZXIpOworCisJdWNvZGVfc3RhcnRfYWRkcmVzcyA9IGxlMzJfdG9fY3B1KGhkci0+dWNvZGVf c3RhcnRfYWRkcik7CisJdWNvZGVfc2l6ZSA9IGxlMzJfdG9fY3B1KGhkci0+aGVhZGVyLnVjb2Rl X3NpemVfYnl0ZXMpOworCXNyYyA9IChjb25zdCB1OCAqKQorCQkoYWRldi0+cG0uZnctPmRhdGEg KyBsZTMyX3RvX2NwdShoZHItPmhlYWRlci51Y29kZV9hcnJheV9vZmZzZXRfYnl0ZXMpKTsKKwlp ZiAodWNvZGVfc2l6ZSAmIDMpCisJCXJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrX2lycXNh dmUoJmFkZXYtPnNtY19pZHhfbG9jaywgZmxhZ3MpOworCVdSRUczMihTTUNfSU5EX0lOREVYXzAs IHVjb2RlX3N0YXJ0X2FkZHJlc3MpOworCVdSRUczMl9QKFNNQ19JTkRfQUNDRVNTX0NOVEwsIEFV VE9fSU5DUkVNRU5UX0lORF8wLCB+QVVUT19JTkNSRU1FTlRfSU5EXzApOworCXdoaWxlICh1Y29k ZV9zaXplID49IDQpIHsKKwkJLyogU01DIGFkZHJlc3Mgc3BhY2UgaXMgQkUgKi8KKwkJZGF0YSA9 IChzcmNbMF0gPDwgMjQpIHwgKHNyY1sxXSA8PCAxNikgfCAoc3JjWzJdIDw8IDgpIHwgc3JjWzNd OworCisJCVdSRUczMihTTUNfSU5EX0RBVEFfMCwgZGF0YSk7CisKKwkJc3JjICs9IDQ7CisJCXVj b2RlX3NpemUgLT0gNDsKKwl9CisJV1JFRzMyX1AoU01DX0lORF9BQ0NFU1NfQ05UTCwgMCwgfkFV VE9fSU5DUkVNRU5UX0lORF8wKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5zbWNf aWR4X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitpbnQgc2lfcmVhZF9zbWNfc3Jh bV9kd29yZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIHNtY19hZGRyZXNzLAorCQkJ ICAgdTMyICp2YWx1ZSwgdTMyIGxpbWl0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50 IHJldDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdzKTsK KwlyZXQgPSBzaV9zZXRfc21jX3NyYW1fYWRkcmVzcyhhZGV2LCBzbWNfYWRkcmVzcywgbGltaXQp OworCWlmIChyZXQgPT0gMCkKKwkJKnZhbHVlID0gUlJFRzMyKFNNQ19JTkRfREFUQV8wKTsKKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdzKTsKKworCXJl dHVybiByZXQ7Cit9CisKK2ludCBzaV93cml0ZV9zbWNfc3JhbV9kd29yZChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdTMyIHNtY19hZGRyZXNzLAorCQkJICAgIHUzMiB2YWx1ZSwgdTMyIGxp bWl0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldDsKKworCXNwaW5fbG9ja19p cnFzYXZlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdzKTsKKwlyZXQgPSBzaV9zZXRfc21jX3Ny YW1fYWRkcmVzcyhhZGV2LCBzbWNfYWRkcmVzcywgbGltaXQpOworCWlmIChyZXQgPT0gMCkKKwkJ V1JFRzMyKFNNQ19JTkRfREFUQV8wLCB2YWx1ZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm YWRldi0+c21jX2lkeF9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lzbGFuZHNfc21jLmggYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9zaXNsYW5kc19zbWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41NDJhYjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvc2lzbGFuZHNfc21jLmgKQEAgLTAsMCArMSw0MjMgQEAKKy8qCisgKiBDb3B5cmln aHQgMjAxMyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1Io UykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAor ICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor ICovCisjaWZuZGVmIFBQX1NJU0xBTkRTX1NNQ19ICisjZGVmaW5lIFBQX1NJU0xBTkRTX1NNQ19I CisKKyNpbmNsdWRlICJwcHNtYy5oIgorCisjcHJhZ21hIHBhY2socHVzaCwgMSkKKworI2RlZmlu ZSBTSVNMQU5EU19NQVhfU01DX1BFUkZPUk1BTkNFX0xFVkVMU19QRVJfU1dTVEFURSAxNgorCitz dHJ1Y3QgUFBfU0lzbGFuZHNfRHBtMlBlcmZMZXZlbAoreworICAgIHVpbnQ4X3QgTWF4UFM7Cisg ICAgdWludDhfdCBUZ3RBY3Q7CisgICAgdWludDhfdCBNYXhQU19TdGVwSW5jOworICAgIHVpbnQ4 X3QgTWF4UFNfU3RlcERlYzsKKyAgICB1aW50OF90IFBTU2FtcGxpbmdUaW1lOworICAgIHVpbnQ4 X3QgTmVhclREUERlYzsKKyAgICB1aW50OF90IEFib3ZlU2FmZUluYzsKKyAgICB1aW50OF90IEJl bG93U2FmZUluYzsKKyAgICB1aW50OF90IFBTRGVsdGFMaW1pdDsKKyAgICB1aW50OF90IFBTRGVs dGFXaW47CisgICAgdWludDE2X3QgUHdyRWZmaWNpZW5jeVJhdGlvOworICAgIHVpbnQ4X3QgUmVz ZXJ2ZWRbNF07Cit9OworCit0eXBlZGVmIHN0cnVjdCBQUF9TSXNsYW5kc19EcG0yUGVyZkxldmVs IFBQX1NJc2xhbmRzX0RwbTJQZXJmTGV2ZWw7CisKK3N0cnVjdCBQUF9TSXNsYW5kc19EUE0yU3Rh dHVzCit7CisgICAgdWludDMyX3QgICAgZHBtMkZsYWdzOworICAgIHVpbnQ4X3QgICAgIEN1cnJQ U2tpcDsKKyAgICB1aW50OF90ICAgICBDdXJyUFNraXBQb3dlclNoaWZ0OworICAgIHVpbnQ4X3Qg ICAgIEN1cnJQU2tpcFREUDsKKyAgICB1aW50OF90ICAgICBDdXJyUFNraXBPQ1A7CisgICAgdWlu dDhfdCAgICAgTWF4U1BMTEluZGV4OworICAgIHVpbnQ4X3QgICAgIE1pblNQTExJbmRleDsKKyAg ICB1aW50OF90ICAgICBDdXJyU1BMTEluZGV4OworICAgIHVpbnQ4X3QgICAgIEluZlN3ZWVwTW9k ZTsKKyAgICB1aW50OF90ICAgICBJbmZTd2VlcERpcjsKKyAgICB1aW50OF90ICAgICBURFBleGNl ZWRlZDsKKyAgICB1aW50OF90ICAgICByZXNlcnZlZDsKKyAgICB1aW50OF90ICAgICBTd2l0Y2hE b3duVGhyZXNob2xkOworICAgIHVpbnQzMl90ICAgIFN3aXRjaERvd25Db3VudGVyOworICAgIHVp bnQzMl90ICAgIFN5c1NjYWxpbmdGYWN0b3I7Cit9OworCit0eXBlZGVmIHN0cnVjdCBQUF9TSXNs YW5kc19EUE0yU3RhdHVzIFBQX1NJc2xhbmRzX0RQTTJTdGF0dXM7CisKK3N0cnVjdCBQUF9TSXNs YW5kc19EUE0yUGFyYW1ldGVycworeworICAgIHVpbnQzMl90ICAgIFREUExpbWl0OworICAgIHVp bnQzMl90ICAgIE5lYXJURFBMaW1pdDsKKyAgICB1aW50MzJfdCAgICBTYWZlUG93ZXJMaW1pdDsK KyAgICB1aW50MzJfdCAgICBQb3dlckJvb3N0TGltaXQ7CisgICAgdWludDMyX3QgICAgTWluTGlt aXREZWx0YTsKK307Cit0eXBlZGVmIHN0cnVjdCBQUF9TSXNsYW5kc19EUE0yUGFyYW1ldGVycyBQ UF9TSXNsYW5kc19EUE0yUGFyYW1ldGVyczsKKworc3RydWN0IFBQX1NJc2xhbmRzX1BBUE1TdGF0 dXMKK3sKKyAgICB1aW50MzJfdCAgICBFc3RpbWF0ZWRER1BVX1Q7CisgICAgdWludDMyX3QgICAg RXN0aW1hdGVkREdQVV9QOworICAgIHVpbnQzMl90ICAgIEVzdGltYXRlZEFQVV9UOworICAgIHVp bnQzMl90ICAgIEVzdGltYXRlZEFQVV9QOworICAgIHVpbnQ4X3QgICAgIGRHUFVfVF9MaW1pdF9F eGNlZWRlZDsKKyAgICB1aW50OF90ICAgICByZXNlcnZlZFszXTsKK307Cit0eXBlZGVmIHN0cnVj dCBQUF9TSXNsYW5kc19QQVBNU3RhdHVzIFBQX1NJc2xhbmRzX1BBUE1TdGF0dXM7CisKK3N0cnVj dCBQUF9TSXNsYW5kc19QQVBNUGFyYW1ldGVycworeworICAgIHVpbnQzMl90ICAgIE5lYXJURFBM aW1pdFRoZXJtOworICAgIHVpbnQzMl90ICAgIE5lYXJURFBMaW1pdFBBUE07CisgICAgdWludDMy X3QgICAgUGxhdGZvcm1Qb3dlckxpbWl0OworICAgIHVpbnQzMl90ICAgIGRHUFVfVF9MaW1pdDsK KyAgICB1aW50MzJfdCAgICBkR1BVX1RfV2FybmluZzsKKyAgICB1aW50MzJfdCAgICBkR1BVX1Rf SHlzdGVyZXNpczsKK307Cit0eXBlZGVmIHN0cnVjdCBQUF9TSXNsYW5kc19QQVBNUGFyYW1ldGVy cyBQUF9TSXNsYW5kc19QQVBNUGFyYW1ldGVyczsKKworc3RydWN0IFNJU0xBTkRTX1NNQ19TQ0xL X1ZBTFVFCit7CisgICAgdWludDMyX3QgICAgdkNHX1NQTExfRlVOQ19DTlRMOworICAgIHVpbnQz Ml90ICAgIHZDR19TUExMX0ZVTkNfQ05UTF8yOworICAgIHVpbnQzMl90ICAgIHZDR19TUExMX0ZV TkNfQ05UTF8zOworICAgIHVpbnQzMl90ICAgIHZDR19TUExMX0ZVTkNfQ05UTF80OworICAgIHVp bnQzMl90ICAgIHZDR19TUExMX1NQUkVBRF9TUEVDVFJVTTsKKyAgICB1aW50MzJfdCAgICB2Q0df U1BMTF9TUFJFQURfU1BFQ1RSVU1fMjsKKyAgICB1aW50MzJfdCAgICBzY2xrX3ZhbHVlOworfTsK KwordHlwZWRlZiBzdHJ1Y3QgU0lTTEFORFNfU01DX1NDTEtfVkFMVUUgU0lTTEFORFNfU01DX1ND TEtfVkFMVUU7CisKK3N0cnVjdCBTSVNMQU5EU19TTUNfTUNMS19WQUxVRQoreworICAgIHVpbnQz Ml90ICAgIHZNUExMX0ZVTkNfQ05UTDsKKyAgICB1aW50MzJfdCAgICB2TVBMTF9GVU5DX0NOVExf MTsKKyAgICB1aW50MzJfdCAgICB2TVBMTF9GVU5DX0NOVExfMjsKKyAgICB1aW50MzJfdCAgICB2 TVBMTF9BRF9GVU5DX0NOVEw7CisgICAgdWludDMyX3QgICAgdk1QTExfRFFfRlVOQ19DTlRMOwor ICAgIHVpbnQzMl90ICAgIHZNQ0xLX1BXUk1HVF9DTlRMOworICAgIHVpbnQzMl90ICAgIHZETExf Q05UTDsKKyAgICB1aW50MzJfdCAgICB2TVBMTF9TUzsKKyAgICB1aW50MzJfdCAgICB2TVBMTF9T UzI7CisgICAgdWludDMyX3QgICAgbWNsa192YWx1ZTsKK307CisKK3R5cGVkZWYgc3RydWN0IFNJ U0xBTkRTX1NNQ19NQ0xLX1ZBTFVFIFNJU0xBTkRTX1NNQ19NQ0xLX1ZBTFVFOworCitzdHJ1Y3Qg U0lTTEFORFNfU01DX1ZPTFRBR0VfVkFMVUUKK3sKKyAgICB1aW50MTZfdCAgICB2YWx1ZTsKKyAg ICB1aW50OF90ICAgICBpbmRleDsKKyAgICB1aW50OF90ICAgICBwaGFzZV9zZXR0aW5nczsKK307 CisKK3R5cGVkZWYgc3RydWN0IFNJU0xBTkRTX1NNQ19WT0xUQUdFX1ZBTFVFIFNJU0xBTkRTX1NN Q19WT0xUQUdFX1ZBTFVFOworCitzdHJ1Y3QgU0lTTEFORFNfU01DX0hXX1BFUkZPUk1BTkNFX0xF VkVMCit7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAgICAgIEFDSW5kZXg7CisgICAgdWlu dDhfdCAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlXYXRlcm1hcms7CisgICAgdWludDhfdCAg ICAgICAgICAgICAgICAgICAgIGdlbjJQQ0lFOworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAg ICAgICBVVkRXYXRlcm1hcms7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAgICAgIFZDRVdh dGVybWFyazsKKyAgICB1aW50OF90ICAgICAgICAgICAgICAgICAgICAgc3Ryb2JlTW9kZTsKKyAg ICB1aW50OF90ICAgICAgICAgICAgICAgICAgICAgbWNGbGFnczsKKyAgICB1aW50OF90ICAgICAg ICAgICAgICAgICAgICAgcGFkZGluZzsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAg YVQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIGJTUDsKKyAgICBTSVNMQU5EU19T TUNfU0NMS19WQUxVRSAgICAgc2NsazsKKyAgICBTSVNMQU5EU19TTUNfTUNMS19WQUxVRSAgICAg bWNsazsKKyAgICBTSVNMQU5EU19TTUNfVk9MVEFHRV9WQUxVRSAgdmRkYzsKKyAgICBTSVNMQU5E U19TTUNfVk9MVEFHRV9WQUxVRSAgbXZkZDsKKyAgICBTSVNMQU5EU19TTUNfVk9MVEFHRV9WQUxV RSAgdmRkY2k7CisgICAgU0lTTEFORFNfU01DX1ZPTFRBR0VfVkFMVUUgIHN0ZF92ZGRjOworICAg IHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICBoeXN0ZXJlc2lzVXA7CisgICAgdWludDhfdCAg ICAgICAgICAgICAgICAgICAgIGh5c3RlcmVzaXNEb3duOworICAgIHVpbnQ4X3QgICAgICAgICAg ICAgICAgICAgICBzdGF0ZUZsYWdzOworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICBh cmJSZWZyZXNoU3RhdGU7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIFNRUG93ZXJU aHJvdHRsZTsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgU1FQb3dlclRocm90dGxl XzI7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIE1heFBvd2VyZWRVcENVOworICAg IFNJU0xBTkRTX1NNQ19WT0xUQUdFX1ZBTFVFICBoaWdoX3RlbXBfdmRkYzsKKyAgICBTSVNMQU5E U19TTUNfVk9MVEFHRV9WQUxVRSAgbG93X3RlbXBfdmRkYzsKKyAgICB1aW50MzJfdCAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWRbMl07CisgICAgUFBfU0lzbGFuZHNfRHBtMlBlcmZMZXZlbCAg IGRwbTI7Cit9OworCisjZGVmaW5lIFNJU0xBTkRTX1NNQ19TVFJPQkVfUkFUSU8gICAgMHgwRgor I2RlZmluZSBTSVNMQU5EU19TTUNfU1RST0JFX0VOQUJMRSAgIDB4MTAKKworI2RlZmluZSBTSVNM QU5EU19TTUNfTUNfRURDX1JEX0ZMQUcgIDB4MDEKKyNkZWZpbmUgU0lTTEFORFNfU01DX01DX0VE Q19XUl9GTEFHICAweDAyCisjZGVmaW5lIFNJU0xBTkRTX1NNQ19NQ19SVFRfRU5BQkxFICAgMHgw NAorI2RlZmluZSBTSVNMQU5EU19TTUNfTUNfU1RVVFRFUl9FTiAgIDB4MDgKKyNkZWZpbmUgU0lT TEFORFNfU01DX01DX1BHX0VOICAgICAgICAweDEwCisKK3R5cGVkZWYgc3RydWN0IFNJU0xBTkRT X1NNQ19IV19QRVJGT1JNQU5DRV9MRVZFTCBTSVNMQU5EU19TTUNfSFdfUEVSRk9STUFOQ0VfTEVW RUw7CisKK3N0cnVjdCBTSVNMQU5EU19TTUNfU1dTVEFURQoreworICAgIHVpbnQ4X3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxldmVsQ291bnQ7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFkZGluZzI7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFkZGluZzM7CisgICAgU0lTTEFORFNfU01DX0hXX1BFUkZPUk1BTkNFX0xFVkVMICAgbGV2 ZWxzWzFdOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgU0lTTEFORFNfU01DX1NXU1RBVEUgU0lTTEFO RFNfU01DX1NXU1RBVEU7CisKKyNkZWZpbmUgU0lTTEFORFNfU01DX1ZPTFRBR0VNQVNLX1ZEREMg IDAKKyNkZWZpbmUgU0lTTEFORFNfU01DX1ZPTFRBR0VNQVNLX01WREQgIDEKKyNkZWZpbmUgU0lT TEFORFNfU01DX1ZPTFRBR0VNQVNLX1ZERENJIDIKKyNkZWZpbmUgU0lTTEFORFNfU01DX1ZPTFRB R0VNQVNLX01BWCAgIDQKKworc3RydWN0IFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS1RBQkxFCit7 CisgICAgdWludDMyX3QgbG93TWFza1tTSVNMQU5EU19TTUNfVk9MVEFHRU1BU0tfTUFYXTsKK307 CisKK3R5cGVkZWYgc3RydWN0IFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS1RBQkxFIFNJU0xBTkRT X1NNQ19WT0xUQUdFTUFTS1RBQkxFOworCisjZGVmaW5lIFNJU0xBTkRTX01BWF9OT19WUkVHX1NU RVBTIDMyCisKK3N0cnVjdCBTSVNMQU5EU19TTUNfU1RBVEVUQUJMRQoreworICAgIHVpbnQ4X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJtYWxQcm90ZWN0VHlwZTsKKyAgICB1aW50 OF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1GbGFnczsKKyAgICB1aW50OF90 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWRERDSW5kZXhJblBQVGFibGU7CisgICAg dWludDhfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFGbGFnczsKKyAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dTTUlPW1NJU0xBTkRTX01BWF9OT19W UkVHX1NURVBTXTsKKyAgICBTSVNMQU5EU19TTUNfVk9MVEFHRU1BU0tUQUJMRSAgICAgICB2b2x0 YWdlTWFza1RhYmxlOworICAgIFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS1RBQkxFICAgICAgIHBo YXNlTWFza1RhYmxlOworICAgIFBQX1NJc2xhbmRzX0RQTTJQYXJhbWV0ZXJzICAgICAgICAgIGRw bTJQYXJhbXM7CisgICAgU0lTTEFORFNfU01DX1NXU1RBVEUgICAgICAgICAgICAgICAgaW5pdGlh bFN0YXRlOworICAgIFNJU0xBTkRTX1NNQ19TV1NUQVRFICAgICAgICAgICAgICAgIEFDUElTdGF0 ZTsKKyAgICBTSVNMQU5EU19TTUNfU1dTVEFURSAgICAgICAgICAgICAgICBVTFZTdGF0ZTsKKyAg ICBTSVNMQU5EU19TTUNfU1dTVEFURSAgICAgICAgICAgICAgICBkcml2ZXJTdGF0ZTsKKyAgICBT SVNMQU5EU19TTUNfSFdfUEVSRk9STUFOQ0VfTEVWRUwgICBkcG1MZXZlbHNbU0lTTEFORFNfTUFY X1NNQ19QRVJGT1JNQU5DRV9MRVZFTFNfUEVSX1NXU1RBVEUgLSAxXTsKK307CisKK3R5cGVkZWYg c3RydWN0IFNJU0xBTkRTX1NNQ19TVEFURVRBQkxFIFNJU0xBTkRTX1NNQ19TVEFURVRBQkxFOwor CisjZGVmaW5lIFNJX1NNQ19TT0ZUX1JFR0lTVEVSX21jbGtfY2hnX3RpbWVvdXQgICAgICAgICAw eDAKKyNkZWZpbmUgU0lfU01DX1NPRlRfUkVHSVNURVJfZGVsYXlfdnJlZyAgICAgICAgICAgICAg IDB4QworI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9kZWxheV9hY3BpICAgICAgICAgICAg ICAgMHgyOAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9zZXFfaW5kZXggICAgICAgICAg ICAgICAgMHg1QworI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9tdmRkX2NoZ190aW1lICAg ICAgICAgICAgMHg2MAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9tY2xrX3N3aXRjaF9s aW0gICAgICAgICAgMHg3MAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl93YXRlcm1hcmtf dGhyZXNob2xkICAgICAgMHg3OAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9waGFzZV9z aGVkZGluZ19kZWxheSAgICAgMHg4OAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl91bHZf dm9sdF9jaGFuZ2VfZGVsYXkgICAgMHg4QworI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9t Y19ibG9ja19kZWxheSAgICAgICAgICAgMHg5OAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RF Ul90aWNrc19wZXJfdXMgICAgICAgICAgICAgMHhBOAorI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJ U1RFUl9jcnRjX2luZGV4ICAgICAgICAgICAgICAgMHhDNAorI2RlZmluZSBTSV9TTUNfU09GVF9S RUdJU1RFUl9tY2xrX2NoYW5nZV9ibG9ja19jcF9taW4gMHhDOAorI2RlZmluZSBTSV9TTUNfU09G VF9SRUdJU1RFUl9tY2xrX2NoYW5nZV9ibG9ja19jcF9tYXggMHhDQworI2RlZmluZSBTSV9TTUNf U09GVF9SRUdJU1RFUl9ub25fdWx2X3BjaWVfbGlua193aWR0aCAgMHhGNAorI2RlZmluZSBTSV9T TUNfU09GVF9SRUdJU1RFUl90ZHJfaXNfYWJvdXRfdG9faGFwcGVuICAgMHhGQworI2RlZmluZSBT SV9TTUNfU09GVF9SRUdJU1RFUl92cl9ob3RfZ3BpbyAgICAgICAgICAgICAgMHgxMDAKKyNkZWZp bmUgU0lfU01DX1NPRlRfUkVHSVNURVJfc3ZpX3Jld29ya19wbGF0X3R5cGUgICAgIDB4MTE4Cisj ZGVmaW5lIFNJX1NNQ19TT0ZUX1JFR0lTVEVSX3N2aV9yZXdvcmtfZ3Bpb19pZF9zdmQgICAweDEx YworI2RlZmluZSBTSV9TTUNfU09GVF9SRUdJU1RFUl9zdmlfcmV3b3JrX2dwaW9faWRfc3ZjICAg MHgxMjAKKworc3RydWN0IFBQX1NJc2xhbmRzX0ZhblRhYmxlCit7CisJdWludDhfdCAgZmRvX21v ZGU7CisJdWludDhfdCAgcGFkZGluZzsKKwlpbnQxNl90ICB0ZW1wX21pbjsKKwlpbnQxNl90ICB0 ZW1wX21lZDsKKwlpbnQxNl90ICB0ZW1wX21heDsKKwlpbnQxNl90ICBzbG9wZTE7CisJaW50MTZf dCAgc2xvcGUyOworCWludDE2X3QgIGZkb19taW47CisJaW50MTZfdCAgaHlzX3VwOworCWludDE2 X3QgIGh5c19kb3duOworCWludDE2X3QgIGh5c19zbG9wZTsKKwlpbnQxNl90ICB0ZW1wX3Jlc3Bf bGltOworCWludDE2X3QgIHRlbXBfY3VycjsKKwlpbnQxNl90ICBzbG9wZV9jdXJyOworCWludDE2 X3QgIHB3bV9jdXJyOworCXVpbnQzMl90IHJlZnJlc2hfcGVyaW9kOworCWludDE2X3QgIGZkb19t YXg7CisJdWludDhfdCAgdGVtcF9zcmM7CisJaW50OF90ICBwYWRkaW5nMjsKK307CisKK3R5cGVk ZWYgc3RydWN0IFBQX1NJc2xhbmRzX0ZhblRhYmxlIFBQX1NJc2xhbmRzX0ZhblRhYmxlOworCisj ZGVmaW5lIFNNQ19TSVNMQU5EU19MS0dFX0xVVF9OVU1fT0ZfVEVNUF9FTlRSSUVTIDE2CisjZGVm aW5lIFNNQ19TSVNMQU5EU19MS0dFX0xVVF9OVU1fT0ZfVk9MVF9FTlRSSUVTIDMyCisKKyNkZWZp bmUgU01DX1NJU0xBTkRTX1NDQUxFX0kgIDcKKyNkZWZpbmUgU01DX1NJU0xBTkRTX1NDQUxFX1Ig MTIKKworc3RydWN0IFBQX1NJc2xhbmRzX0NhY0NvbmZpZworeworICAgIHVpbnQxNl90ICAgY2Fj X2xrZ2VfbHV0W1NNQ19TSVNMQU5EU19MS0dFX0xVVF9OVU1fT0ZfVEVNUF9FTlRSSUVTXVtTTUNf U0lTTEFORFNfTEtHRV9MVVRfTlVNX09GX1ZPTFRfRU5UUklFU107CisgICAgdWludDMyX3QgICBs a2dlX2x1dF9WMDsKKyAgICB1aW50MzJfdCAgIGxrZ2VfbHV0X1ZzdGVwOworICAgIHVpbnQzMl90 ICAgV2luVGltZTsKKyAgICB1aW50MzJfdCAgIFJfTEw7CisgICAgdWludDMyX3QgICBjYWxjdWxh dGlvbl9yZXBlYXRzOworICAgIHVpbnQzMl90ICAgbDJudW1XaW5fVERQOworICAgIHVpbnQzMl90 ICAgZGNfY2FjOworICAgIHVpbnQ4X3QgICAgbHRzX3RydW5jYXRlX247CisgICAgdWludDhfdCAg ICBTSElGVF9OOworICAgIHVpbnQ4X3QgICAgbG9nMl9QR19MS0dfU0NBTEU7CisgICAgdWludDhf dCAgICBjYWNfdGVtcDsKKyAgICB1aW50MzJfdCAgIGxrZ2VfbHV0X1QwOworICAgIHVpbnQzMl90 ICAgbGtnZV9sdXRfVHN0ZXA7Cit9OworCit0eXBlZGVmIHN0cnVjdCBQUF9TSXNsYW5kc19DYWND b25maWcgUFBfU0lzbGFuZHNfQ2FjQ29uZmlnOworCisjZGVmaW5lIFNNQ19TSVNMQU5EU19NQ19S RUdJU1RFUl9BUlJBWV9TSVpFIDE2CisjZGVmaW5lIFNNQ19TSVNMQU5EU19NQ19SRUdJU1RFUl9B UlJBWV9TRVRfQ09VTlQgMjAKKworc3RydWN0IFNNQ19TSXNsYW5kc19NQ1JlZ2lzdGVyQWRkcmVz cworeworICAgIHVpbnQxNl90IHMwOworICAgIHVpbnQxNl90IHMxOworfTsKKwordHlwZWRlZiBz dHJ1Y3QgU01DX1NJc2xhbmRzX01DUmVnaXN0ZXJBZGRyZXNzIFNNQ19TSXNsYW5kc19NQ1JlZ2lz dGVyQWRkcmVzczsKKworc3RydWN0IFNNQ19TSXNsYW5kc19NQ1JlZ2lzdGVyU2V0Cit7CisgICAg dWludDMyX3QgdmFsdWVbU01DX1NJU0xBTkRTX01DX1JFR0lTVEVSX0FSUkFZX1NJWkVdOworfTsK KwordHlwZWRlZiBzdHJ1Y3QgU01DX1NJc2xhbmRzX01DUmVnaXN0ZXJTZXQgU01DX1NJc2xhbmRz X01DUmVnaXN0ZXJTZXQ7CisKK3N0cnVjdCBTTUNfU0lzbGFuZHNfTUNSZWdpc3RlcnMKK3sKKyAg ICB1aW50OF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OworICAgIHVpbnQ4X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkWzNdOworICAgIFNNQ19TSXNsYW5k c19NQ1JlZ2lzdGVyQWRkcmVzcyAgICAgIGFkZHJlc3NbU01DX1NJU0xBTkRTX01DX1JFR0lTVEVS X0FSUkFZX1NJWkVdOworICAgIFNNQ19TSXNsYW5kc19NQ1JlZ2lzdGVyU2V0ICAgICAgICAgIGRh dGFbU01DX1NJU0xBTkRTX01DX1JFR0lTVEVSX0FSUkFZX1NFVF9DT1VOVF07Cit9OworCit0eXBl ZGVmIHN0cnVjdCBTTUNfU0lzbGFuZHNfTUNSZWdpc3RlcnMgU01DX1NJc2xhbmRzX01DUmVnaXN0 ZXJzOworCitzdHJ1Y3QgU01DX1NJc2xhbmRzX01DQXJiRHJhbVRpbWluZ1JlZ2lzdGVyU2V0Cit7 CisgICAgdWludDMyX3QgbWNfYXJiX2RyYW1fdGltaW5nOworICAgIHVpbnQzMl90IG1jX2FyYl9k cmFtX3RpbWluZzI7CisgICAgdWludDhfdCAgbWNfYXJiX3Jmc2hfcmF0ZTsKKyAgICB1aW50OF90 ICBtY19hcmJfYnVyc3RfdGltZTsKKyAgICB1aW50OF90ICBwYWRkaW5nWzJdOworfTsKKwordHlw ZWRlZiBzdHJ1Y3QgU01DX1NJc2xhbmRzX01DQXJiRHJhbVRpbWluZ1JlZ2lzdGVyU2V0IFNNQ19T SXNsYW5kc19NQ0FyYkRyYW1UaW1pbmdSZWdpc3RlclNldDsKKworc3RydWN0IFNNQ19TSXNsYW5k c19NQ0FyYkRyYW1UaW1pbmdSZWdpc3RlcnMKK3sKKyAgICB1aW50OF90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFyYl9jdXJyZW50OworICAgIHVpbnQ4X3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWRbM107CisgICAgU01DX1NJc2xhbmRz X01DQXJiRHJhbVRpbWluZ1JlZ2lzdGVyU2V0ICAgICBkYXRhWzE2XTsKK307CisKK3R5cGVkZWYg c3RydWN0IFNNQ19TSXNsYW5kc19NQ0FyYkRyYW1UaW1pbmdSZWdpc3RlcnMgU01DX1NJc2xhbmRz X01DQXJiRHJhbVRpbWluZ1JlZ2lzdGVyczsKKworc3RydWN0IFNNQ19TSVNMQU5EU19TUExMX0RJ Vl9UQUJMRQoreworICAgIHVpbnQzMl90ICAgIGZyZXFbMjU2XTsKKyAgICB1aW50MzJfdCAgICBz c1syNTZdOworfTsKKworI2RlZmluZSBTTUNfU0lTTEFORFNfU1BMTF9ESVZfVEFCTEVfRkJESVZf TUFTSyAgMHgwMWZmZmZmZgorI2RlZmluZSBTTUNfU0lTTEFORFNfU1BMTF9ESVZfVEFCTEVfRkJE SVZfU0hJRlQgMAorI2RlZmluZSBTTUNfU0lTTEFORFNfU1BMTF9ESVZfVEFCTEVfUERJVl9NQVNL ICAgMHhmZTAwMDAwMAorI2RlZmluZSBTTUNfU0lTTEFORFNfU1BMTF9ESVZfVEFCTEVfUERJVl9T SElGVCAgMjUKKyNkZWZpbmUgU01DX1NJU0xBTkRTX1NQTExfRElWX1RBQkxFX0NMS1ZfTUFTSyAg IDB4MDAwZmZmZmYKKyNkZWZpbmUgU01DX1NJU0xBTkRTX1NQTExfRElWX1RBQkxFX0NMS1ZfU0hJ RlQgIDAKKyNkZWZpbmUgU01DX1NJU0xBTkRTX1NQTExfRElWX1RBQkxFX0NMS1NfTUFTSyAgIDB4 ZmZmMDAwMDAKKyNkZWZpbmUgU01DX1NJU0xBTkRTX1NQTExfRElWX1RBQkxFX0NMS1NfU0hJRlQg IDIwCisKK3R5cGVkZWYgc3RydWN0IFNNQ19TSVNMQU5EU19TUExMX0RJVl9UQUJMRSBTTUNfU0lT TEFORFNfU1BMTF9ESVZfVEFCTEU7CisKKyNkZWZpbmUgU01DX1NJU0xBTkRTX0RURV9NQVhfRklM VEVSX1NUQUdFUyA1CisKKyNkZWZpbmUgU01DX1NJU0xBTkRTX0RURV9NQVhfVEVNUEVSQVRVUkVf REVQRU5ERU5UX0FSUkFZX1NJWkUgMTYKKworc3RydWN0IFNtY19TSXNsYW5kc19EVEVfQ29uZmln dXJhdGlvbgoreworICAgIHVpbnQzMl90IHRhdVtTTUNfU0lTTEFORFNfRFRFX01BWF9GSUxURVJf U1RBR0VTXTsKKyAgICB1aW50MzJfdCBSW1NNQ19TSVNMQU5EU19EVEVfTUFYX0ZJTFRFUl9TVEFH RVNdOworICAgIHVpbnQzMl90IEs7CisgICAgdWludDMyX3QgVDA7CisgICAgdWludDMyX3QgTWF4 VDsKKyAgICB1aW50OF90ICBXaW5kb3dTaXplOworICAgIHVpbnQ4X3QgIFRkZXBfY291bnQ7Cisg ICAgdWludDhfdCAgdGVtcF9zZWxlY3Q7CisgICAgdWludDhfdCAgRFRFX21vZGU7CisgICAgdWlu dDhfdCAgVF9saW1pdHNbU01DX1NJU0xBTkRTX0RURV9NQVhfVEVNUEVSQVRVUkVfREVQRU5ERU5U X0FSUkFZX1NJWkVdOworICAgIHVpbnQzMl90IFRkZXBfdGF1W1NNQ19TSVNMQU5EU19EVEVfTUFY X1RFTVBFUkFUVVJFX0RFUEVOREVOVF9BUlJBWV9TSVpFXTsKKyAgICB1aW50MzJfdCBUZGVwX1Jb U01DX1NJU0xBTkRTX0RURV9NQVhfVEVNUEVSQVRVUkVfREVQRU5ERU5UX0FSUkFZX1NJWkVdOwor ICAgIHVpbnQzMl90IFR0aHJlc2hvbGQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCBTbWNfU0lzbGFu ZHNfRFRFX0NvbmZpZ3VyYXRpb24gU21jX1NJc2xhbmRzX0RURV9Db25maWd1cmF0aW9uOworCisj ZGVmaW5lIFNNQ19TSVNMQU5EU19EVEVfU1RBVFVTX0ZMQUdfRFRFX09OIDEKKworI2RlZmluZSBT SVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX0xPQ0FUSU9OIDB4MTAwMDAKKworI2RlZmluZSBT SVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX3ZlcnNpb24gICAgICAgICAgICAgICAgICAgMHgw CisjZGVmaW5lIFNJU0xBTkRTX1NNQ19GSVJNV0FSRV9IRUFERVJfZmxhZ3MgICAgICAgICAgICAg ICAgICAgICAweDQKKyNkZWZpbmUgU0lTTEFORFNfU01DX0ZJUk1XQVJFX0hFQURFUl9zb2Z0UmVn aXN0ZXJzICAgICAgICAgICAgIDB4QworI2RlZmluZSBTSVNMQU5EU19TTUNfRklSTVdBUkVfSEVB REVSX3N0YXRlVGFibGUgICAgICAgICAgICAgICAgMHgxMAorI2RlZmluZSBTSVNMQU5EU19TTUNf RklSTVdBUkVfSEVBREVSX2ZhblRhYmxlICAgICAgICAgICAgICAgICAgMHgxNAorI2RlZmluZSBT SVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX0NhY0NvbmZpZ1RhYmxlICAgICAgICAgICAgMHgx OAorI2RlZmluZSBTSVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX21jUmVnaXN0ZXJUYWJsZSAg ICAgICAgICAgMHgyNAorI2RlZmluZSBTSVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX21jQXJi RHJhbUF1dG9SZWZyZXNoVGFibGUgMHgzMAorI2RlZmluZSBTSVNMQU5EU19TTUNfRklSTVdBUkVf SEVBREVSX3NwbGxUYWJsZSAgICAgICAgICAgICAgICAgMHgzOAorI2RlZmluZSBTSVNMQU5EU19T TUNfRklSTVdBUkVfSEVBREVSX0R0ZUNvbmZpZ3VyYXRpb24gICAgICAgICAgMHg0MAorI2RlZmlu ZSBTSVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX1BBUE1QYXJhbWV0ZXJzICAgICAgICAgICAg MHg0OAorCisjcHJhZ21hIHBhY2socG9wKQorCitpbnQgc2lfY29weV9ieXRlc190b19zbWMoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgdTMyIHNtY19zdGFydF9hZGRyZXNzLAorCQkJ IGNvbnN0IHU4ICpzcmMsIHUzMiBieXRlX2NvdW50LCB1MzIgbGltaXQpOwordm9pZCBzaV9zdGFy dF9zbWMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwordm9pZCBzaV9yZXNldF9zbWMoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworaW50IHNpX3Byb2dyYW1fanVtcF9vbl9zdGFydChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cit2b2lkIHNpX3N0b3Bfc21jX2Nsb2NrKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KTsKK3ZvaWQgc2lfc3RhcnRfc21jX2Nsb2NrKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KTsKK2Jvb2wgc2lfaXNfc21jX3J1bm5pbmcoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpOworUFBTTUNfUmVzdWx0IHNpX3NlbmRfbXNnX3RvX3NtYyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgUFBTTUNfTXNnIG1zZyk7CitQUFNNQ19SZXN1bHQgc2lfd2Fp dF9mb3Jfc21jX2luYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK2ludCBzaV9s b2FkX3NtY191Y29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIGxpbWl0KTsKK2lu dCBzaV9yZWFkX3NtY19zcmFtX2R3b3JkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIg c21jX2FkZHJlc3MsCisJCQkgICB1MzIgKnZhbHVlLCB1MzIgbGltaXQpOworaW50IHNpX3dyaXRl X3NtY19zcmFtX2R3b3JkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgc21jX2FkZHJl c3MsCisJCQkgICAgdTMyIHZhbHVlLCB1MzIgbGltaXQpOworCisjZW5kaWYKKwotLSAKMi41LjUK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=