From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH 09/12] drm/msm: dpu: Remove dpu_power_handle Date: Mon, 12 Nov 2018 14:42:13 -0500 Message-ID: <20181112194222.193546-10-sean@poorly.run> References: <20181112194222.193546-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181112194222.193546-1-sean@poorly.run> 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, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: Sean Paul , Abhinav Kumar List-Id: linux-arm-msm@vger.kernel.org RnJvbTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CgpOb3cgdGhhdCB3ZSBkb24n dCBoYXZlIGFueSBldmVudCBoYW5kbGVycywgcmVtb3ZlIGRwdV9wb3dlcl9oYW5kbGUhCgpTaWdu ZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDEgLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jICAgICAgIHwgIDExIC0tCiBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggICAgICAgfCAgIDMgLQogLi4uL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMgIHwgMTM2IC0tLS0tLS0tLS0tLS0tLS0t LQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmggIHwgMTEzIC0t LS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAyNjQgZGVsZXRpb25zKC0pCiBkZWxldGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRs ZS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3Bvd2VyX2hhbmRsZS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggMTlhYjUyMWQ0YzNhLi43ZDAy ZWYzNjU1YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQpAQCAtNzIsNyArNzIsNiBAQCBtc20teSA6PSBc CiAJZGlzcC9kcHUxL2RwdV9rbXMubyBcCiAJZGlzcC9kcHUxL2RwdV9tZHNzLm8gXAogCWRpc3Av ZHB1MS9kcHVfcGxhbmUubyBcCi0JZGlzcC9kcHUxL2RwdV9wb3dlcl9oYW5kbGUubyBcCiAJZGlz cC9kcHUxL2RwdV9ybS5vIFwKIAlkaXNwL2RwdTEvZHB1X3ZiaWYubyBcCiAJbXNtX2F0b21pYy5v IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwppbmRleCBiYWU3ZTg2YjI5 MTMuLmU0MjY4NWExZDkyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMu YwpAQCAtMTA2Myw4ICsxMDYzLDYgQEAgc3RhdGljIGludCBkcHVfYmluZChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAkJcmV0dXJuIHJldDsK IAl9CiAKLQlkcHVfcG93ZXJfcmVzb3VyY2VfaW5pdChwZGV2LCAmZHB1X2ttcy0+cGhhbmRsZSk7 Ci0KIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcHVfa21zKTsKIAogCW1zbV9rbXNfaW5p dCgmZHB1X2ttcy0+YmFzZSwgJmttc19mdW5jcyk7CkBAIC0xMDg0LDcgKzEwODIsNiBAQCBzdGF0 aWMgdm9pZCBkcHVfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1fZ2V0 X2RydmRhdGEocGRldik7CiAJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9rbXMt Pm1wOwogCi0JZHB1X3Bvd2VyX3Jlc291cmNlX2RlaW5pdChwZGV2LCAmZHB1X2ttcy0+cGhhbmRs ZSk7CiAJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CiAJZGV2 bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CiAJbXAtPm51bV9jbGsgPSAwOwpA QCAtMTEyMywxMCArMTEyMCw2IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgZHB1X3J1bnRp bWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCXJldHVybiByYzsKIAl9CiAKLQlyYyA9 IGRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJmRwdV9rbXMtPnBoYW5kbGUsIGZhbHNlKTsKLQlp ZiAocmMpCi0JCURQVV9FUlJPUigicmVzb3VyY2UgZGlzYWJsZSBmYWlsZWQ6ICVkXG4iLCByYyk7 Ci0KIAlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGss IGZhbHNlKTsKIAlpZiAocmMpCiAJCURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWlsZWQgcmM6 JWRcbiIsIHJjKTsKQEAgLTExNjAsMTAgKzExNTMsNiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51 c2VkIGRwdV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJZHJtX2Zvcl9lYWNo X2NydGMoY3J0YywgZGRldikKIAkJZHB1X2NydGNfcnVudGltZV9yZXN1bWUoY3J0Yyk7CiAKLQly YyA9IGRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJmRwdV9rbXMtPnBoYW5kbGUsIHRydWUpOwot CWlmIChyYykKLQkJRFBVX0VSUk9SKCJyZXNvdXJjZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMp OwotCiAJcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmgKaW5kZXggNGU1YWNhY2IzMDY1Li41OWUxOGUyZDNjNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJkcHVfaHdf dG9wLmgiCiAjaW5jbHVkZSAiZHB1X2lvX3V0aWwuaCIKICNpbmNsdWRlICJkcHVfcm0uaCIKLSNp bmNsdWRlICJkcHVfcG93ZXJfaGFuZGxlLmgiCiAjaW5jbHVkZSAiZHB1X2lycS5oIgogI2luY2x1 ZGUgImRwdV9jb3JlX3BlcmYuaCIKIApAQCAtMTE0LDggKzExMyw2IEBAIHN0cnVjdCBkcHVfa21z IHsKIAlpbnQgY29yZV9yZXY7CiAJc3RydWN0IGRwdV9tZHNzX2NmZyAqY2F0YWxvZzsKIAotCXN0 cnVjdCBkcHVfcG93ZXJfaGFuZGxlIHBoYW5kbGU7Ci0KIAkvKiBkaXJlY3RvcnkgZW50cnkgZm9y IGRlYnVnZnMgKi8KIAlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7CiAJc3RydWN0IGRlbnRy eSAqZGVidWdmc19kYW5nZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcG93ZXJfaGFuZGxlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNjRmMGE1 MjE0Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9wb3dlcl9oYW5kbGUuYworKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vKiBDb3B5 cmlnaHQgKGMpIDIwMTQtMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAotICogb25seSB2ZXJzaW9u IDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKi8KLQotI2RlZmluZSBwcl9mbXQoZm10KQkiW2RybTol czolZF06ICIgZm10LCBfX2Z1bmNfXywgX19MSU5FX18KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgotI2luY2x1ZGUgPGxpbnV4L29mLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Ci0j aW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNp bmNsdWRlIDxsaW51eC9tdXRleC5oPgotI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Ci0K LSNpbmNsdWRlICJkcHVfcG93ZXJfaGFuZGxlLmgiCi0jaW5jbHVkZSAiZHB1X3RyYWNlLmgiCi0K LXN0YXRpYyB2b2lkIGRwdV9wb3dlcl9ldmVudF90cmlnZ2VyX2xvY2tlZChzdHJ1Y3QgZHB1X3Bv d2VyX2hhbmRsZSAqcGhhbmRsZSwKLQkJdTMyIGV2ZW50X3R5cGUpCi17Ci0Jc3RydWN0IGRwdV9w b3dlcl9ldmVudCAqZXZlbnQ7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmcGhhbmRs ZS0+ZXZlbnRfbGlzdCwgbGlzdCkgewotCQlpZiAoZXZlbnQtPmV2ZW50X3R5cGUgJiBldmVudF90 eXBlKQotCQkJZXZlbnQtPmNiX2ZuYyhldmVudF90eXBlLCBldmVudC0+dXNyKTsKLQl9Ci19Ci0K LXZvaWQgZHB1X3Bvd2VyX3Jlc291cmNlX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwKLQlzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSkKLXsKLQlwaGFuZGxlLT5kZXYg PSAmcGRldi0+ZGV2OwotCi0JSU5JVF9MSVNUX0hFQUQoJnBoYW5kbGUtPmV2ZW50X2xpc3QpOwot Ci0JbXV0ZXhfaW5pdCgmcGhhbmRsZS0+cGhhbmRsZV9sb2NrKTsKLX0KLQotdm9pZCBkcHVfcG93 ZXJfcmVzb3VyY2VfZGVpbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0Jc3RydWN0 IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUpCi17Ci0Jc3RydWN0IGRwdV9wb3dlcl9ldmVudCAq Y3Vycl9ldmVudCwgKm5leHRfZXZlbnQ7Ci0KLQlpZiAoIXBoYW5kbGUgfHwgIXBkZXYpIHsKLQkJ cHJfZXJyKCJpbnZhbGlkIGlucHV0IHBhcmFtXG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCW11dGV4 X2xvY2soJnBoYW5kbGUtPnBoYW5kbGVfbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZl KGN1cnJfZXZlbnQsIG5leHRfZXZlbnQsCi0JCQkmcGhhbmRsZS0+ZXZlbnRfbGlzdCwgbGlzdCkg ewotCQlwcl9lcnIoImV2ZW50OiVkLCBjbGllbnQ6JXMgc3RpbGwgcmVnaXN0ZXJlZFxuIiwKLQkJ CQljdXJyX2V2ZW50LT5ldmVudF90eXBlLAotCQkJCWN1cnJfZXZlbnQtPmNsaWVudF9uYW1lKTsK LQkJY3Vycl9ldmVudC0+YWN0aXZlID0gZmFsc2U7Ci0JCWxpc3RfZGVsKCZjdXJyX2V2ZW50LT5s aXN0KTsKLQl9Ci0JbXV0ZXhfdW5sb2NrKCZwaGFuZGxlLT5waGFuZGxlX2xvY2spOwotfQotCi1p bnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhh bmRsZSwgYm9vbCBlbmFibGUpCi17Ci0JdTMyIGV2ZW50X3R5cGU7Ci0KLQlpZiAoIXBoYW5kbGUp IHsKLQkJcHJfZXJyKCJpbnZhbGlkIGlucHV0IGFyZ3VtZW50XG4iKTsKLQkJcmV0dXJuIC1FSU5W QUw7Ci0JfQotCi0JbXV0ZXhfbG9jaygmcGhhbmRsZS0+cGhhbmRsZV9sb2NrKTsKLQotCWV2ZW50 X3R5cGUgPSBlbmFibGUgPyBEUFVfUE9XRVJfRVZFTlRfRU5BQkxFIDogRFBVX1BPV0VSX0VWRU5U X0RJU0FCTEU7Ci0KLQlkcHVfcG93ZXJfZXZlbnRfdHJpZ2dlcl9sb2NrZWQocGhhbmRsZSwJZXZl bnRfdHlwZSk7Ci0KLQltdXRleF91bmxvY2soJnBoYW5kbGUtPnBoYW5kbGVfbG9jayk7Ci0JcmV0 dXJuIDA7Ci19Ci0KLXN0cnVjdCBkcHVfcG93ZXJfZXZlbnQgKmRwdV9wb3dlcl9oYW5kbGVfcmVn aXN0ZXJfZXZlbnQoCi0JCXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAotCQl1MzIg ZXZlbnRfdHlwZSwgdm9pZCAoKmNiX2ZuYykodTMyIGV2ZW50X3R5cGUsIHZvaWQgKnVzciksCi0J CXZvaWQgKnVzciwgY2hhciAqY2xpZW50X25hbWUpCi17Ci0Jc3RydWN0IGRwdV9wb3dlcl9ldmVu dCAqZXZlbnQ7Ci0KLQlpZiAoIXBoYW5kbGUpIHsKLQkJcHJfZXJyKCJpbnZhbGlkIHBvd2VyIGhh bmRsZVxuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwotCX0gZWxzZSBpZiAoIWNiX2Zu YyB8fCAhZXZlbnRfdHlwZSkgewotCQlwcl9lcnIoIm5vIGNhbGxiYWNrIGZuYyBvciBldmVudCB0 eXBlXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0JfQotCi0JZXZlbnQgPSBremFs bG9jKHNpemVvZihzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFl dmVudCkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQlldmVudC0+ZXZlbnRfdHlwZSA9 IGV2ZW50X3R5cGU7Ci0JZXZlbnQtPmNiX2ZuYyA9IGNiX2ZuYzsKLQlldmVudC0+dXNyID0gdXNy OwotCXN0cmxjcHkoZXZlbnQtPmNsaWVudF9uYW1lLCBjbGllbnRfbmFtZSwgTUFYX0NMSUVOVF9O QU1FX0xFTik7Ci0JZXZlbnQtPmFjdGl2ZSA9IHRydWU7Ci0KLQltdXRleF9sb2NrKCZwaGFuZGxl LT5waGFuZGxlX2xvY2spOwotCWxpc3RfYWRkKCZldmVudC0+bGlzdCwgJnBoYW5kbGUtPmV2ZW50 X2xpc3QpOwotCW11dGV4X3VubG9jaygmcGhhbmRsZS0+cGhhbmRsZV9sb2NrKTsKLQotCXJldHVy biBldmVudDsKLX0KLQotdm9pZCBkcHVfcG93ZXJfaGFuZGxlX3VucmVnaXN0ZXJfZXZlbnQoCi0J CXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAotCQlzdHJ1Y3QgZHB1X3Bvd2VyX2V2 ZW50ICpldmVudCkKLXsKLQlpZiAoIXBoYW5kbGUgfHwgIWV2ZW50KSB7Ci0JCXByX2VycigiaW52 YWxpZCBwaGFuZGxlIG9yIGV2ZW50XG4iKTsKLQl9IGVsc2UgaWYgKCFldmVudC0+YWN0aXZlKSB7 Ci0JCXByX2VycigicG93ZXIgaGFuZGxlIGRlaW5pdCBhbHJlYWR5IGRvbmVcbiIpOwotCQlrZnJl ZShldmVudCk7Ci0JfSBlbHNlIHsKLQkJbXV0ZXhfbG9jaygmcGhhbmRsZS0+cGhhbmRsZV9sb2Nr KTsKLQkJbGlzdF9kZWxfaW5pdCgmZXZlbnQtPmxpc3QpOwotCQltdXRleF91bmxvY2soJnBoYW5k bGUtPnBoYW5kbGVfbG9jayk7Ci0JCWtmcmVlKGV2ZW50KTsKLQl9Ci19CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmggYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmgKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDc1MzY2MjRjOGIyMC4uMDAwMDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9wb3dlcl9oYW5kbGUuaAorKysgL2Rldi9udWxsCkBA IC0xLDExMyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAxOCwgVGhlIExpbnV4IEZv dW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFuZAotICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKi8KLQotI2lm bmRlZiBfRFBVX1BPV0VSX0hBTkRMRV9IXwotI2RlZmluZSBfRFBVX1BPV0VSX0hBTkRMRV9IXwot Ci0jZGVmaW5lIE1BWF9DTElFTlRfTkFNRV9MRU4gMTI4Ci0KLSNkZWZpbmUgRFBVX1BPV0VSX0hB TkRMRV9FTkFCTEVfQlVTX0FCX1FVT1RBCTAKLSNkZWZpbmUgRFBVX1BPV0VSX0hBTkRMRV9ESVNB QkxFX0JVU19BQl9RVU9UQQkwCi0jZGVmaW5lIERQVV9QT1dFUl9IQU5ETEVfRU5BQkxFX0JVU19J Ql9RVU9UQQkxNjAwMDAwMDAwCi0jZGVmaW5lIERQVV9QT1dFUl9IQU5ETEVfRElTQUJMRV9CVVNf SUJfUVVPVEEJMAotCi0jaW5jbHVkZSAiZHB1X2lvX3V0aWwuaCIKLQotLyogZXZlbnRzIHdpbGwg YmUgdHJpZ2dlcmVkIG9uIHBvd2VyIGhhbmRsZXIgZW5hYmxlL2Rpc2FibGUgKi8KLSNkZWZpbmUg RFBVX1BPV0VSX0VWRU5UX0RJU0FCTEUJQklUKDApCi0jZGVmaW5lIERQVV9QT1dFUl9FVkVOVF9F TkFCTEUJQklUKDEpCi0KLS8qCi0gKiBzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50IC0gbG9jYWwgZXZl bnQgcmVnaXN0cmF0aW9uIHN0cnVjdHVyZQotICogQGNsaWVudF9uYW1lOiBuYW1lIG9mIHRoZSBj bGllbnQgcmVnaXN0ZXJpbmcKLSAqIEBjYl9mbmM6IHBvaW50ZXIgdG8gZGVzaXJlZCBjYWxsYmFj ayBmdW5jdGlvbgotICogQHVzcjogdXNlciBwb2ludGVyIHRvIHBhc3MgdG8gY2FsbGJhY2sgZXZl bnQgdHJpZ2dlcgotICogQGV2ZW50OiByZWZlciB0byBEUFVfUE9XRVJfSEFORExFX0VWRU5UXyoK LSAqIEBsaXN0OiBsaXN0IHRvIGF0dGFjaCBldmVudCBtYXN0ZXIgbGlzdAotICogQGFjdGl2ZTog aW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiBkcHUgcG93ZXIgaGFuZGxlCi0gKi8KLXN0cnVjdCBkcHVf cG93ZXJfZXZlbnQgewotCWNoYXIgY2xpZW50X25hbWVbTUFYX0NMSUVOVF9OQU1FX0xFTl07Ci0J dm9pZCAoKmNiX2ZuYykodTMyIGV2ZW50X3R5cGUsIHZvaWQgKnVzcik7Ci0Jdm9pZCAqdXNyOwot CXUzMiBldmVudF90eXBlOwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQlib29sIGFjdGl2ZTsK LX07Ci0KLS8qKgotICogc3RydWN0IGRwdV9wb3dlcl9oYW5kbGU6IHBvd2VyIGhhbmRsZSBtYWlu IHN0cnVjdAotICogQHBoYW5kbGVfbG9jazogbG9jayB0byBzeW5jaHJvbml6ZSB0aGUgZW5hYmxl L2Rpc2FibGUKLSAqIEBkZXY6IHBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZQotICogQHVzZWNh c2VfbmR4OiBjdXJyZW50IHVzZWNhc2UgaW5kZXgKLSAqIEBldmVudF9saXN0OiBjdXJyZW50IHBv d2VyIGhhbmRsZSBldmVudCBsaXN0Ci0gKi8KLXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlIHsKLQlz dHJ1Y3QgbXV0ZXggcGhhbmRsZV9sb2NrOwotCXN0cnVjdCBkZXZpY2UgKmRldjsKLQl1MzIgY3Vy cmVudF91c2VjYXNlX25keDsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGV2ZW50X2xpc3Q7Ci19OwotCi0v KioKLSAqIGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KCkgLSBpbml0aWFsaXplcyB0aGUgZHB1IHBv d2VyIGhhbmRsZQotICogQHBkZXY6ICAgcGxhdGZvcm0gZGV2aWNlIHRvIHNlYXJjaCB0aGUgcG93 ZXIgcmVzb3VyY2VzCi0gKiBAcGRhdGE6ICBwb3dlciBoYW5kbGUgdG8gc3RvcmUgdGhlIHBvd2Vy IHJlc291cmNlcwotICovCi12b2lkIGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYsCi0Jc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBkYXRhKTsKLQot LyoqCi0gKiBkcHVfcG93ZXJfcmVzb3VyY2VfZGVpbml0KCkgLSByZWxlYXNlIHRoZSBkcHUgcG93 ZXIgaGFuZGxlCi0gKiBAcGRldjogICBwbGF0Zm9ybSBkZXZpY2UgZm9yIHBvd2VyIHJlc291cmNl cwotICogQHBkYXRhOiAgcG93ZXIgaGFuZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwotICoK LSAqIFJldHVybjogZXJyb3IgY29kZS4KLSAqLwotdm9pZCBkcHVfcG93ZXJfcmVzb3VyY2VfZGVp bml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0Jc3RydWN0IGRwdV9wb3dlcl9oYW5k bGUgKnBkYXRhKTsKLQotLyoqCi0gKiBkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCkgLSBlbmFi bGUvZGlzYWJsZSB0aGUgcG93ZXIgcmVzb3VyY2VzCi0gKiBAcGRhdGE6ICBwb3dlciBoYW5kbGUg Y29udGFpbmluZyB0aGUgcmVzb3VyY2VzCi0gKiBAZW5hYmxlOiBib29sZWFuIHJlcXVlc3QgZm9y IGVuYWJsZS9kaXNhYmxlCi0gKgotICogUmV0dXJuOiBlcnJvciBjb2RlLgotICovCi1pbnQgZHB1 X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGRhdGEsIGJv b2wgZW5hYmxlKTsKLQotLyoqCi0gKiBkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50IC0g cmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgYW4gZXZlbnQuCi0gKglDbGllbnRzIGNh biByZWdpc3RlciBmb3IgbXVsdGlwbGUgZXZlbnRzIHdpdGggYSBzaW5nbGUgcmVnaXN0ZXIuCi0g KglBbnkgYmxvY2sgd2l0aCBhY2Nlc3MgdG8gcGhhbmRsZSBjYW4gcmVnaXN0ZXIgZm9yIHRoZSBl dmVudAotICoJbm90aWZpY2F0aW9uLgotICogQHBoYW5kbGU6CXBvd2VyIGhhbmRsZSBjb250YWlu aW5nIHRoZSByZXNvdXJjZXMKLSAqIEBldmVudF90eXBlOglldmVudCB0eXBlIHRvIHJlZ2lzdGVy OyByZWZlciBEUFVfUE9XRVJfSEFORExFX0VWRU5UXyoKLSAqIEBjYl9mbmM6CXBvaW50ZXIgdG8g ZGVzaXJlZCBjYWxsYmFjayBmdW5jdGlvbgotICogQHVzcjoJdXNlciBwb2ludGVyIHRvIHBhc3Mg dG8gY2FsbGJhY2sgb24gZXZlbnQgdHJpZ2dlcgotICoKLSAqIFJldHVybjoJZXZlbnQgcG9pbnRl ciBpZiBzdWNjZXNzLCBvciBlcnJvciBjb2RlIG90aGVyd2lzZQotICovCi1zdHJ1Y3QgZHB1X3Bv d2VyX2V2ZW50ICpkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50KAotCQlzdHJ1Y3QgZHB1 X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKLQkJdTMyIGV2ZW50X3R5cGUsIHZvaWQgKCpjYl9mbmMp KHUzMiBldmVudF90eXBlLCB2b2lkICp1c3IpLAotCQl2b2lkICp1c3IsIGNoYXIgKmNsaWVudF9u YW1lKTsKLS8qKgotICogZHB1X3Bvd2VyX2hhbmRsZV91bnJlZ2lzdGVyX2V2ZW50IC0gdW5yZWdp c3RlciBjYWxsYmFjayBmb3IgZXZlbnQocykKLSAqIEBwaGFuZGxlOglwb3dlciBoYW5kbGUgY29u dGFpbmluZyB0aGUgcmVzb3VyY2VzCi0gKiBAZXZlbnQ6CWV2ZW50IHBvaW50ZXIgcmV0dXJuZWQg YWZ0ZXIgcG93ZXIgaGFuZGxlIHJlZ2lzdGVyCi0gKi8KLXZvaWQgZHB1X3Bvd2VyX2hhbmRsZV91 bnJlZ2lzdGVyX2V2ZW50KHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAotCQlzdHJ1 Y3QgZHB1X3Bvd2VyX2V2ZW50ICpldmVudCk7Ci0KLSNlbmRpZiAvKiBfRFBVX1BPV0VSX0hBTkRM RV9IXyAqLwotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21p dW0gT1MKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=