From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [RFC PATCH 06/13] drm/nouveau/fault/gp100: initial implementation of MaxwellFaultBufferA Date: Fri, 9 Mar 2018 22:21:34 -0500 Message-ID: <20180310032141.6096-7-jglisse@redhat.com> References: <20180310032141.6096-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180310032141.6096-1-jglisse@redhat.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, nouveau@lists.freedesktop.org Cc: linux-mm@kvack.org, Evgeny Baskakov , Ralph Campbell , Ben Skeggs , John Hubbard List-Id: dri-devel@lists.freedesktop.org RnJvbTogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgoKU2lnbmVkLW9mZi1ieTogQmVu IFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L2luY2x1ZGUvbnZpZi9jbGFzcy5oICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L2luY2x1ZGUvbnZpZi9jbGIwNjkuaCAgICAgIHwgICA4ICsrCiAuLi4vZ3B1L2RybS9ub3V2 ZWF1L2luY2x1ZGUvbnZrbS9lbmdpbmUvZmF1bHQuaCAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL2VuZ2luZS9kZXZpY2UvYmFzZS5jICB8ICAgNiArCiBkcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kZXZpY2UvdXNlci5jICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9LYnVpbGQgICB8ICAgNCArCiBkcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9iYXNlLmMgICB8IDExNiArKysr KysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0 L2dwMTAwLmMgIHwgIDYxICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9l bmdpbmUvZmF1bHQvcHJpdi5oICAgfCAgMjkgKysrKysKIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L252a20vZW5naW5lL2ZhdWx0L3VzZXIuYyAgIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQvdXNlci5oICAgfCAgIDcg KysKIDExIGZpbGVzIGNoYW5nZWQsIDM3MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9udmlmL2NsYjA2OS5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQvYmFz ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdp bmUvZmF1bHQvZ3AxMDAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L252a20vZW5naW5lL2ZhdWx0L3ByaXYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L3VzZXIuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L3VzZXIuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZpZi9jbGFzcy5oIGIv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9udmlmL2NsYXNzLmgKaW5kZXggYTdjNWJm NTcyNzg4Li45OGFjMjUwNjcwYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L2luY2x1ZGUvbnZpZi9jbGFzcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1 ZGUvbnZpZi9jbGFzcy5oCkBAIC01Miw2ICs1Miw4IEBACiAKICNkZWZpbmUgTlYwNF9ESVNQICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsMDA0Ni5oICovIDB4MDAwMDAw NDYKIAorI2RlZmluZSBNQVhXRUxMX0ZBVUxUX0JVRkZFUl9BICAgICAgICAgICAgICAgICAgICAg ICAgLyogY2xiMDY5LmggKi8gMHgwMDAwYjA2OQorCiAjZGVmaW5lIE5WMDNfQ0hBTk5FTF9ETUEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbDUwNmIuaCAqLyAweDAwMDAwMDZiCiAj ZGVmaW5lIE5WMTBfQ0hBTk5FTF9ETUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBj bDUwNmIuaCAqLyAweDAwMDAwMDZlCiAjZGVmaW5lIE5WMTdfQ0hBTk5FTF9ETUEgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBjbDUwNmIuaCAqLyAweDAwMDAxNzZlCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252aWYvY2xiMDY5LmggYi9kcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252aWYvY2xiMDY5LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMGQ1MDlmZDg2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252aWYvY2xiMDY5LmgKQEAgLTAsMCArMSw4 IEBACisjaWZuZGVmIF9fTlZJRl9DTEIwNjlfSF9fCisjZGVmaW5lIF9fTlZJRl9DTEIwNjlfSF9f CisKK3N0cnVjdCBudmIwNjlfdm4geworfTsKKworI2RlZmluZSBOVkIwNjlfVk5fTlRGWV9GQVVM VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMAorI2Vu ZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vZW5n aW5lL2ZhdWx0LmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vZW5naW5l L2ZhdWx0LmgKaW5kZXggMzk4Y2E1YTAyZWVlLi4wODg5M2YxM2UyZjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9lbmdpbmUvZmF1bHQuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vZW5naW5lL2ZhdWx0LmgKQEAgLTEs NCArMSw1IEBACiAjaWZuZGVmIF9fTlZLTV9GQVVMVF9IX18KICNkZWZpbmUgX19OVktNX0ZBVUxU X0hfXwogI2luY2x1ZGUgPGNvcmUvZW5naW5lLmg+CitpbnQgZ3AxMDBfZmF1bHRfbmV3KHN0cnVj dCBudmttX2RldmljZSAqLCBpbnQsIHN0cnVjdCBudmttX2VuZ2luZSAqKik7CiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2RldmljZS9iYXNl LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kZXZpY2UvYmFzZS5jCmlu ZGV4IDJmZTg2MmFjMGQ5NS4uZWU2N2NhZjk1YTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL2VuZ2luZS9kZXZpY2UvYmFzZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L252a20vZW5naW5lL2RldmljZS9iYXNlLmMKQEAgLTIxODQsNiArMjE4NCw3IEBA IG52MTMwX2NoaXBzZXQgPSB7CiAJLmNlWzVdID0gZ3AxMDBfY2VfbmV3LAogCS5kbWEgPSBnZjEx OV9kbWFfbmV3LAogCS5kaXNwID0gZ3AxMDBfZGlzcF9uZXcsCisJLmZhdWx0ID0gZ3AxMDBfZmF1 bHRfbmV3LAogCS5maWZvID0gZ3AxMDBfZmlmb19uZXcsCiAJLmdyID0gZ3AxMDBfZ3JfbmV3LAog CS5zdyA9IGdmMTAwX3N3X25ldywKQEAgLTIyMTcsNiArMjIxOCw3IEBAIG52MTMyX2NoaXBzZXQg PSB7CiAJLmNlWzNdID0gZ3AxMDJfY2VfbmV3LAogCS5kaXNwID0gZ3AxMDJfZGlzcF9uZXcsCiAJ LmRtYSA9IGdmMTE5X2RtYV9uZXcsCisJLmZhdWx0ID0gZ3AxMDBfZmF1bHRfbmV3LAogCS5maWZv ID0gZ3AxMDBfZmlmb19uZXcsCiAJLmdyID0gZ3AxMDJfZ3JfbmV3LAogCS5udmRlYyA9IGdwMTAy X252ZGVjX25ldywKQEAgLTIyNTIsNiArMjI1NCw3IEBAIG52MTM0X2NoaXBzZXQgPSB7CiAJLmNl WzNdID0gZ3AxMDJfY2VfbmV3LAogCS5kaXNwID0gZ3AxMDJfZGlzcF9uZXcsCiAJLmRtYSA9IGdm MTE5X2RtYV9uZXcsCisJLmZhdWx0ID0gZ3AxMDBfZmF1bHRfbmV3LAogCS5maWZvID0gZ3AxMDBf Zmlmb19uZXcsCiAJLmdyID0gZ3AxMDJfZ3JfbmV3LAogCS5udmRlYyA9IGdwMTAyX252ZGVjX25l dywKQEAgLTIyODcsNiArMjI5MCw3IEBAIG52MTM2X2NoaXBzZXQgPSB7CiAJLmNlWzNdID0gZ3Ax MDJfY2VfbmV3LAogCS5kaXNwID0gZ3AxMDJfZGlzcF9uZXcsCiAJLmRtYSA9IGdmMTE5X2RtYV9u ZXcsCisJLmZhdWx0ID0gZ3AxMDBfZmF1bHRfbmV3LAogCS5maWZvID0gZ3AxMDBfZmlmb19uZXcs CiAJLmdyID0gZ3AxMDJfZ3JfbmV3LAogCS5udmRlYyA9IGdwMTAyX252ZGVjX25ldywKQEAgLTIz MjIsNiArMjMyNiw3IEBAIG52MTM3X2NoaXBzZXQgPSB7CiAJLmNlWzNdID0gZ3AxMDJfY2VfbmV3 LAogCS5kaXNwID0gZ3AxMDJfZGlzcF9uZXcsCiAJLmRtYSA9IGdmMTE5X2RtYV9uZXcsCisJLmZh dWx0ID0gZ3AxMDBfZmF1bHRfbmV3LAogCS5maWZvID0gZ3AxMDBfZmlmb19uZXcsCiAJLmdyID0g Z3AxMDdfZ3JfbmV3LAogCS5udmRlYyA9IGdwMTAyX252ZGVjX25ldywKQEAgLTIzODIsNiArMjM4 Nyw3IEBAIG52MTNiX2NoaXBzZXQgPSB7CiAJLnRvcCA9IGdrMTA0X3RvcF9uZXcsCiAJLmNlWzJd ID0gZ3AxMDJfY2VfbmV3LAogCS5kbWEgPSBnZjExOV9kbWFfbmV3LAorCS5mYXVsdCA9IGdwMTAw X2ZhdWx0X25ldywKIAkuZmlmbyA9IGdwMTBiX2ZpZm9fbmV3LAogCS5nciA9IGdwMTBiX2dyX25l dywKIAkuc3cgPSBnZjEwMF9zd19uZXcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL2VuZ2luZS9kZXZpY2UvdXNlci5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnZrbS9lbmdpbmUvZGV2aWNlL3VzZXIuYwppbmRleCAxN2FkY2I0ZTg4NTQuLjVlZWU0MzlmNjE1 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGV2aWNl L3VzZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kZXZpY2Uv dXNlci5jCkBAIC0yNzYsNiArMjc2LDcgQEAgbnZrbV91ZGV2aWNlX2NoaWxkX2dldChzdHJ1Y3Qg bnZrbV9vYmplY3QgKm9iamVjdCwgaW50IGluZGV4LAogCXN0cnVjdCBudmttX2RldmljZSAqZGV2 aWNlID0gdWRldi0+ZGV2aWNlOwogCXN0cnVjdCBudmttX2VuZ2luZSAqZW5naW5lOwogCXU2NCBt YXNrID0gKDFVTEwgPDwgTlZLTV9FTkdJTkVfRE1BT0JKKSB8CisJCSAgICgxVUxMIDw8IE5WS01f RU5HSU5FX0ZBVUxUKSB8CiAJCSAgICgxVUxMIDw8IE5WS01fRU5HSU5FX0ZJRk8pIHwKIAkJICAg KDFVTEwgPDwgTlZLTV9FTkdJTkVfRElTUCkgfAogCQkgICAoMVVMTCA8PCBOVktNX0VOR0lORV9Q TSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVs dC9LYnVpbGQgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9LYnVp bGQKaW5kZXggZTY5ZGUyOWJiMmQxLi42MjdkNzRlYWJhMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L0tidWlsZAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9LYnVpbGQKQEAgLTAsMCArMSw0IEBACitu dmttLXkgKz0gbnZrbS9lbmdpbmUvZmF1bHQvYmFzZS5vCitudmttLXkgKz0gbnZrbS9lbmdpbmUv ZmF1bHQvZ3AxMDAubworCitudmttLXkgKz0gbnZrbS9lbmdpbmUvZmF1bHQvdXNlci5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9iYXNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9iYXNlLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hOTcwMDEyZTg0YzgKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVsdC9iYXNl LmMKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBSZWQgSGF0IEluYy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQg SE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqLworI2luY2x1ZGUgInByaXYuaCIKKyNpbmNsdWRlICJ1c2VyLmgi CisKKyNpbmNsdWRlIDxjb3JlL2NsaWVudC5oPgorI2luY2x1ZGUgPGNvcmUvbm90aWZ5Lmg+CisK K3N0YXRpYyBpbnQKK252a21fZmF1bHRfbnRmeV9jdG9yKHN0cnVjdCBudmttX29iamVjdCAqb2Jq ZWN0LCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKKwkJICAgICBzdHJ1Y3QgbnZrbV9ub3RpZnkgKm5v dGlmeSkKK3sKKwlpZiAoc2l6ZSA9PSAwKSB7CisJCW5vdGlmeS0+c2l6ZSAgPSAwOworCQlub3Rp ZnktPnR5cGVzID0gMTsKKwkJbm90aWZ5LT5pbmRleCA9IDA7CisJCXJldHVybiAwOworCX0KKwly ZXR1cm4gLUVOT1NZUzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBudmttX2V2ZW50X2Z1bmMK K252a21fZmF1bHRfbnRmeSA9IHsKKwkuY3RvciA9IG52a21fZmF1bHRfbnRmeV9jdG9yLAorfTsK Kworc3RhdGljIGludAorbnZrbV9mYXVsdF9jbGFzc19uZXcoc3RydWN0IG52a21fZGV2aWNlICpk ZXZpY2UsCisJCSAgICAgY29uc3Qgc3RydWN0IG52a21fb2NsYXNzICpvY2xhc3MsIHZvaWQgKmRh dGEsIHUzMiBzaXplLAorCQkgICAgIHN0cnVjdCBudmttX29iamVjdCAqKnBvYmplY3QpCit7CisJ c3RydWN0IG52a21fZmF1bHQgKmZhdWx0ID0gbnZrbV9mYXVsdChkZXZpY2UtPmZhdWx0KTsKKwlp ZiAoIW9jbGFzcy0+Y2xpZW50LT5zdXBlcikKKwkJcmV0dXJuIC1FQUNDRVM7CisJcmV0dXJuIG52 a21fdWZhdWx0X25ldyhmYXVsdCwgb2NsYXNzLCBkYXRhLCBzaXplLCBwb2JqZWN0KTsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBudmttX2RldmljZV9vY2xhc3MKK252a21fZmF1bHRfY2xhc3Mg PSB7CisJLmN0b3IgPSBudmttX2ZhdWx0X2NsYXNzX25ldywKK307CisKK3N0YXRpYyBpbnQKK252 a21fZmF1bHRfY2xhc3NfZ2V0KHN0cnVjdCBudmttX29jbGFzcyAqb2NsYXNzLCBpbnQgaW5kZXgs CisJCSAgICAgY29uc3Qgc3RydWN0IG52a21fZGV2aWNlX29jbGFzcyAqKmNsYXNzKQoreworCXN0 cnVjdCBudmttX2ZhdWx0ICpmYXVsdCA9IG52a21fZmF1bHQob2NsYXNzLT5lbmdpbmUpOworCWlm IChpbmRleCA9PSAwKSB7CisJCW9jbGFzcy0+YmFzZS5vY2xhc3MgPSBmYXVsdC0+ZnVuYy0+b2Ns YXNzOworCQlvY2xhc3MtPmJhc2UubWludmVyID0gLTE7CisJCW9jbGFzcy0+YmFzZS5tYXh2ZXIg PSAtMTsKKwkJKmNsYXNzID0gJm52a21fZmF1bHRfY2xhc3M7CisJfQorCXJldHVybiAxOworfQor CitzdGF0aWMgdm9pZAorbnZrbV9mYXVsdF9pbnRyKHN0cnVjdCBudmttX2VuZ2luZSAqZW5naW5l KQoreworCXN0cnVjdCBudmttX2ZhdWx0ICpmYXVsdCA9IG52a21fZmF1bHQoZW5naW5lKTsKKwlu dmttX2V2ZW50X3NlbmQoJmZhdWx0LT5ldmVudCwgMSwgMCwgTlVMTCwgMCk7Cit9CisKK3N0YXRp YyB2b2lkICoKK252a21fZmF1bHRfZHRvcihzdHJ1Y3QgbnZrbV9lbmdpbmUgKmVuZ2luZSkKK3sK KwlzdHJ1Y3QgbnZrbV9mYXVsdCAqZmF1bHQgPSBudmttX2ZhdWx0KGVuZ2luZSk7CisJbnZrbV9l dmVudF9maW5pKCZmYXVsdC0+ZXZlbnQpOworCXJldHVybiBmYXVsdDsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBudmttX2VuZ2luZV9mdW5jCitudmttX2ZhdWx0ID0geworCS5kdG9yID0gbnZr bV9mYXVsdF9kdG9yLAorCS5pbnRyID0gbnZrbV9mYXVsdF9pbnRyLAorCS5iYXNlLnNjbGFzcyA9 IG52a21fZmF1bHRfY2xhc3NfZ2V0LAorfTsKKworaW50CitudmttX2ZhdWx0X25ld18oY29uc3Qg c3RydWN0IG52a21fZmF1bHRfZnVuYyAqZnVuYywgc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2Us CisJCWludCBpbmRleCwgc3RydWN0IG52a21fZW5naW5lICoqcGVuZ2luZSkKK3sKKwlzdHJ1Y3Qg bnZrbV9mYXVsdCAqZmF1bHQ7CisJaW50IHJldDsKKworCWlmICghKGZhdWx0ID0ga3phbGxvYyhz aXplb2YoKmZhdWx0KSwgR0ZQX0tFUk5FTCkpKQorCQlyZXR1cm4gLUVOT01FTTsKKwkqcGVuZ2lu ZSA9ICZmYXVsdC0+ZW5naW5lOworCWZhdWx0LT5mdW5jID0gZnVuYzsKKworCXJldCA9IG52a21f ZW5naW5lX2N0b3IoJm52a21fZmF1bHQsIGRldmljZSwgaW5kZXgsIHRydWUsCisJCQkgICAgICAg JmZhdWx0LT5lbmdpbmUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gbnZr bV9ldmVudF9pbml0KCZudmttX2ZhdWx0X250ZnksIDEsIDEsICZmYXVsdC0+ZXZlbnQpOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQvZ3Ax MDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L2dwMTAwLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MTIwYmMwNDNhM2QKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9mYXVs dC9ncDEwMC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBSZWQgSGF0 IEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZ UklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworI2luY2x1ZGUgInByaXYuaCIKKworI2luY2x1ZGUg PG52aWYvY2xhc3MuaD4KKworc3RhdGljIHZvaWQKK2dwMTAwX2ZhdWx0X2Zpbmkoc3RydWN0IG52 a21fZmF1bHQgKmZhdWx0KQoreworCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlID0gZmF1bHQt PmVuZ2luZS5zdWJkZXYuZGV2aWNlOworCW52a21fbWFzayhkZXZpY2UsIDB4MDAyYTcwLCAweDAw MDAwMDAxLCAweDAwMDAwMDAwKTsKK30KKworc3RhdGljIHZvaWQKK2dwMTAwX2ZhdWx0X2luaXQo c3RydWN0IG52a21fZmF1bHQgKmZhdWx0KQoreworCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNl ID0gZmF1bHQtPmVuZ2luZS5zdWJkZXYuZGV2aWNlOworCW52a21fd3IzMihkZXZpY2UsIDB4MDAy YTc0LCB1cHBlcl8zMl9iaXRzKGZhdWx0LT52bWEtPmFkZHIpKTsKKwludmttX3dyMzIoZGV2aWNl LCAweDAwMmE3MCwgbG93ZXJfMzJfYml0cyhmYXVsdC0+dm1hLT5hZGRyKSk7CisJbnZrbV9tYXNr KGRldmljZSwgMHgwMDJhNzAsIDB4MDAwMDAwMDEsIDB4MDAwMDAwMDEpOworfQorCitzdGF0aWMg dTMyCitncDEwMF9mYXVsdF9zaXplKHN0cnVjdCBudmttX2ZhdWx0ICpmYXVsdCkKK3sKKwlyZXR1 cm4gbnZrbV9yZDMyKGZhdWx0LT5lbmdpbmUuc3ViZGV2LmRldmljZSwgMHgwMDJhNzgpICogMzI7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnZrbV9mYXVsdF9mdW5jCitncDEwMF9mYXVsdCA9 IHsKKwkuc2l6ZSA9IGdwMTAwX2ZhdWx0X3NpemUsCisJLmluaXQgPSBncDEwMF9mYXVsdF9pbml0 LAorCS5maW5pID0gZ3AxMDBfZmF1bHRfZmluaSwKKwkub2NsYXNzID0gTUFYV0VMTF9GQVVMVF9C VUZGRVJfQSwKK307CisKK2ludAorZ3AxMDBfZmF1bHRfbmV3KHN0cnVjdCBudmttX2RldmljZSAq ZGV2aWNlLCBpbnQgaW5kZXgsCisJCXN0cnVjdCBudmttX2VuZ2luZSAqKnBlbmdpbmUpCit7CisJ cmV0dXJuIG52a21fZmF1bHRfbmV3XygmZ3AxMDBfZmF1bHQsIGRldmljZSwgaW5kZXgsIHBlbmdp bmUpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUv ZmF1bHQvcHJpdi5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQv cHJpdi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWUzZTYzNjZi MGZiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdp bmUvZmF1bHQvcHJpdi5oCkBAIC0wLDAgKzEsMjkgQEAKKyNpZm5kZWYgX19OVktNX0ZBVUxUX1BS SVZfSF9fCisjZGVmaW5lIF9fTlZLTV9GQVVMVF9QUklWX0hfXworI2RlZmluZSBudmttX2ZhdWx0 KHApIGNvbnRhaW5lcl9vZigocCksIHN0cnVjdCBudmttX2ZhdWx0LCBlbmdpbmUpCisjaW5jbHVk ZSA8ZW5naW5lL2ZhdWx0Lmg+CisKKyNpbmNsdWRlIDxjb3JlL2V2ZW50Lmg+CisjaW5jbHVkZSA8 c3ViZGV2L21tdS5oPgorCitzdHJ1Y3QgbnZrbV9mYXVsdCB7CisJY29uc3Qgc3RydWN0IG52a21f ZmF1bHRfZnVuYyAqZnVuYzsKKwlzdHJ1Y3QgbnZrbV9lbmdpbmUgZW5naW5lOworCisJc3RydWN0 IG52a21fZXZlbnQgZXZlbnQ7CisKKwlzdHJ1Y3QgbnZrbV9vYmplY3QgKnVzZXI7CisJc3RydWN0 IG52a21fbWVtb3J5ICptZW07CisJc3RydWN0IG52a21fdm1hICp2bWE7Cit9OworCitzdHJ1Y3Qg bnZrbV9mYXVsdF9mdW5jIHsKKwl1MzIgKCpzaXplKShzdHJ1Y3QgbnZrbV9mYXVsdCAqKTsKKwl2 b2lkICgqaW5pdCkoc3RydWN0IG52a21fZmF1bHQgKik7CisJdm9pZCAoKmZpbmkpKHN0cnVjdCBu dmttX2ZhdWx0ICopOworCXMzMiBvY2xhc3M7Cit9OworCitpbnQgbnZrbV9mYXVsdF9uZXdfKGNv bnN0IHN0cnVjdCBudmttX2ZhdWx0X2Z1bmMgKiwgc3RydWN0IG52a21fZGV2aWNlICosCisJCSAg ICBpbnQsIHN0cnVjdCBudmttX2VuZ2luZSAqKik7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L3VzZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L3VzZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjYzFjNGI5ODliYgotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2ZhdWx0L3VzZXIuYwpAQCAtMCwwICsx LDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFJlZCBIYXQgSW5jLgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh bGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1Ig QVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF LgorICovCisjaW5jbHVkZSAidXNlci5oIgorCisjaW5jbHVkZSA8Y29yZS9vYmplY3QuaD4KKyNp bmNsdWRlIDxjb3JlL21lbW9yeS5oPgorI2luY2x1ZGUgPHN1YmRldi9iYXIuaD4KKworI2luY2x1 ZGUgPG52aWYvY2xiMDY5Lmg+CisjaW5jbHVkZSA8bnZpZi91bnBhY2suaD4KKworc3RhdGljIGlu dAorbnZrbV91ZmF1bHRfbWFwKHN0cnVjdCBudmttX29iamVjdCAqb2JqZWN0LCB2b2lkICphcmd2 LCB1MzIgYXJnYywKKwkJZW51bSBudmttX29iamVjdF9tYXAgKnR5cGUsIHU2NCAqYWRkciwgdTY0 ICpzaXplKQoreworCXN0cnVjdCBudmttX2ZhdWx0ICpmYXVsdCA9IG52a21fZmF1bHQob2JqZWN0 LT5lbmdpbmUpOworCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlID0gZmF1bHQtPmVuZ2luZS5z dWJkZXYuZGV2aWNlOworCSp0eXBlID0gTlZLTV9PQkpFQ1RfTUFQX0lPOworCSphZGRyID0gZGV2 aWNlLT5mdW5jLT5yZXNvdXJjZV9hZGRyKGRldmljZSwgMykgKyBmYXVsdC0+dm1hLT5hZGRyOwor CSpzaXplID0gbnZrbV9tZW1vcnlfc2l6ZShmYXVsdC0+bWVtKTsKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludAorbnZrbV91ZmF1bHRfbnRmeShzdHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCwg dTMyIHR5cGUsCisJCSBzdHJ1Y3QgbnZrbV9ldmVudCAqKnBldmVudCkKK3sKKwlzdHJ1Y3QgbnZr bV9mYXVsdCAqZmF1bHQgPSBudmttX2ZhdWx0KG9iamVjdC0+ZW5naW5lKTsKKwlpZiAodHlwZSA9 PSBOVkIwNjlfVk5fTlRGWV9GQVVMVCkgeworCQkqcGV2ZW50ID0gJmZhdWx0LT5ldmVudDsKKwkJ cmV0dXJuIDA7CisJfQorCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50CitudmttX3Vm YXVsdF9maW5pKHN0cnVjdCBudmttX29iamVjdCAqb2JqZWN0LCBib29sIHN1c3BlbmQpCit7CisJ c3RydWN0IG52a21fZmF1bHQgKmZhdWx0ID0gbnZrbV9mYXVsdChvYmplY3QtPmVuZ2luZSk7CisJ ZmF1bHQtPmZ1bmMtPmZpbmkoZmF1bHQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Citu dmttX3VmYXVsdF9pbml0KHN0cnVjdCBudmttX29iamVjdCAqb2JqZWN0KQoreworCXN0cnVjdCBu dmttX2ZhdWx0ICpmYXVsdCA9IG52a21fZmF1bHQob2JqZWN0LT5lbmdpbmUpOworCWZhdWx0LT5m dW5jLT5pbml0KGZhdWx0KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgKgorbnZrbV91 ZmF1bHRfZHRvcihzdHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCkKK3sKKwlzdHJ1Y3QgbnZrbV9m YXVsdCAqZmF1bHQgPSBudmttX2ZhdWx0KG9iamVjdC0+ZW5naW5lKTsKKwlzdHJ1Y3QgbnZrbV92 bW0gKmJhcjIgPSBudmttX2Jhcl9iYXIyX3ZtbShmYXVsdC0+ZW5naW5lLnN1YmRldi5kZXZpY2Up OworCisJbXV0ZXhfbG9jaygmZmF1bHQtPmVuZ2luZS5zdWJkZXYubXV0ZXgpOworCWlmIChmYXVs dC0+dXNlciA9PSBvYmplY3QpCisJCWZhdWx0LT51c2VyID0gTlVMTDsKKwltdXRleF91bmxvY2so JmZhdWx0LT5lbmdpbmUuc3ViZGV2Lm11dGV4KTsKKworCW52a21fdm1tX3B1dChiYXIyLCAmZmF1 bHQtPnZtYSk7CisJbnZrbV9tZW1vcnlfdW5yZWYoJmZhdWx0LT5tZW0pOworCXJldHVybiBvYmpl Y3Q7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnZrbV9vYmplY3RfZnVuYworbnZrbV91ZmF1 bHQgPSB7CisJLmR0b3IgPSBudmttX3VmYXVsdF9kdG9yLAorCS5pbml0ID0gbnZrbV91ZmF1bHRf aW5pdCwKKwkuZmluaSA9IG52a21fdWZhdWx0X2ZpbmksCisJLm50ZnkgPSBudmttX3VmYXVsdF9u dGZ5LAorCS5tYXAgPSBudmttX3VmYXVsdF9tYXAsCit9OworCitpbnQKK252a21fdWZhdWx0X25l dyhzdHJ1Y3QgbnZrbV9mYXVsdCAqZmF1bHQsIGNvbnN0IHN0cnVjdCBudmttX29jbGFzcyAqb2Ns YXNzLAorCQl2b2lkICphcmd2LCB1MzIgYXJnYywgc3RydWN0IG52a21fb2JqZWN0ICoqcG9iamVj dCkKK3sKKwl1bmlvbiB7CisJCXN0cnVjdCBudmIwNjlfdm4gdm47CisJfSAqYXJncyA9IGFyZ3Y7 CisJc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYgPSAmZmF1bHQtPmVuZ2luZS5zdWJkZXY7CisJ c3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSBzdWJkZXYtPmRldmljZTsKKwlzdHJ1Y3QgbnZr bV92bW0gKmJhcjIgPSBudmttX2Jhcl9iYXIyX3ZtbShkZXZpY2UpOworCXUzMiBzaXplID0gZmF1 bHQtPmZ1bmMtPnNpemUoZmF1bHQpOworCWludCByZXQgPSAtRU5PU1lTOworCisJaWYgKChyZXQg PSBudmlmX3VudmVycyhyZXQsICZhcmd2LCAmYXJnYywgYXJncy0+dm4pKSkKKwkJcmV0dXJuIHJl dDsKKworCXJldCA9IG52a21fb2JqZWN0X25ld18oJm52a21fdWZhdWx0LCBvY2xhc3MsIE5VTEws IDAsIHBvYmplY3QpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBudmttX21l bW9yeV9uZXcoZGV2aWNlLCBOVktNX01FTV9UQVJHRVRfSU5TVCwgc2l6ZSwKKwkJCSAgICAgIDB4 MTAwMCwgZmFsc2UsICZmYXVsdC0+bWVtKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ cmV0ID0gbnZrbV92bW1fZ2V0KGJhcjIsIDEyLCBudmttX21lbW9yeV9zaXplKGZhdWx0LT5tZW0p LCAmZmF1bHQtPnZtYSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IG52a21f bWVtb3J5X21hcChmYXVsdC0+bWVtLCAwLCBiYXIyLCBmYXVsdC0+dm1hLCBOVUxMLCAwKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJbXV0ZXhfbG9jaygmc3ViZGV2LT5tdXRleCk7CisJ aWYgKCFmYXVsdC0+dXNlcikKKwkJZmF1bHQtPnVzZXIgPSAqcG9iamVjdDsKKwllbHNlCisJCXJl dCA9IC1FQlVTWTsKKwltdXRleF91bmxvY2soJnN1YmRldi0+bXV0ZXgpOworCXJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQv dXNlci5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1bHQvdXNlci5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzBjMDNiYmJjMGIyCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZmF1 bHQvdXNlci5oCkBAIC0wLDAgKzEsNyBAQAorI2lmbmRlZiBfX05WS01fRkFVTFRfVVNFUl9IX18K KyNkZWZpbmUgX19OVktNX0ZBVUxUX1VTRVJfSF9fCisjaW5jbHVkZSAicHJpdi5oIgorCitpbnQg bnZrbV91ZmF1bHRfbmV3KHN0cnVjdCBudmttX2ZhdWx0ICosIGNvbnN0IHN0cnVjdCBudmttX29j bGFzcyAqLAorCQkgICAgdm9pZCAqLCB1MzIsIHN0cnVjdCBudmttX29iamVjdCAqKik7CisjZW5k aWYKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==