From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v6 14/19] drm/msm/dpu: remove cdm block support from resource manager Date: Fri, 7 Sep 2018 17:24:22 -0700 Message-ID: <1536366267-22336-15-git-send-email-jsanka@codeaurora.org> References: <1536366267-22336-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1536366267-22336-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org U3VwcG9ydCBmb3IgQ0RNIGJsb2NrIGlzIG5vdCBwcmVzZW50IGluIERQVS4gUmVtb3ZlIENETQpo YW5kbGVycyBmcm9tIHJlc291cmNlIG1hbmFnZXIuCgpjaGFuZ2VzIGluIHY0OgoJLSBJbnRyb2R1 Y2VkIGluIHRoZSBzZXJpZXMKY2hhbmdlcyBpbiB2NToKCS0gUmVtb3ZlIGNhdGFsb2cgcmVmZXJl bmNlcyB0byBDRE0gKFNlYW4pCmNoYW5nZXMgaW4gdjY6CgktIG5vbmUKClNpZ25lZC1vZmYtYnk6 IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+ClJldmlld2VkLWJ5OiBT ZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNt L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCB8ICAgNSAtCiBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgfCAgMTQgLQogZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCAgIHwgIDE2IC0tCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmMgICAgICAgfCAzMjMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uaCAgICAg ICB8IDEzOSAtLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf Y3RsLmMgICAgICAgfCAgMTQgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2N0bC5oICAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19tZHNzLmggICAgICB8ICAyNiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X3RvcC5jICAgICAgIHwgIDE4IC0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfdG9wLmggICAgICAgfCAgMTcgLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5jICAgICAgICAgICB8ICA2OCArLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3RyYWNlLmggICAgICAgIHwgICA0IC0KIDE0IGZpbGVzIGNoYW5nZWQsIDExIGlu c2VydGlvbnMoKyksIDY0MCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmgKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmls ZQppbmRleCAyNjFmYTc5Li4xOWFiNTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTU4LDcgKzU4 LDYgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1MS9kcHVfZm9ybWF0cy5vIFwKIAlkaXNwL2RwdTEv ZHB1X2h3X2Jsay5vIFwKIAlkaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cubyBcCi0JZGlzcC9kcHUx L2RwdV9od19jZG0ubyBcCiAJZGlzcC9kcHUxL2RwdV9od19jdGwubyBcCiAJZGlzcC9kcHUxL2Rw dV9od19pbnRlcnJ1cHRzLm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfaW50Zi5vIFwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmggYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oCmluZGV4IDYwZjgwOWYuLmZmMDY0 ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaApAQCAt MzIsMTQgKzMyLDEyIEBACiAvKioKICAqIEVuY29kZXIgZnVuY3Rpb25zIGFuZCBkYXRhIHR5cGVz CiAgKiBAaW50ZnM6CUludGVyZmFjZXMgdGhpcyBlbmNvZGVyIGlzIHVzaW5nLCBJTlRGX01PREVf Tk9ORSBpZiB1bnVzZWQKLSAqIEBuZWVkc19jZG06CUVuY29kZXIgcmVxdWVzdHMgYSBDRE0gYmFz ZWQgb24gcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb24gbmVlZHMKICAqIEBkaXNwbGF5X251bV9vZl9o X3RpbGVzOiBOdW1iZXIgb2YgaG9yaXpvbnRhbCB0aWxlcyBpbiBjYXNlIG9mIHNwbGl0CiAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlCiAgKiBAdG9wb2xvZ3k6ICAgVG9wb2xv Z3kgb2YgdGhlIGRpc3BsYXkKICAqLwogc3RydWN0IGRwdV9lbmNvZGVyX2h3X3Jlc291cmNlcyB7 CiAJZW51bSBkcHVfaW50Zl9tb2RlIGludGZzW0lOVEZfTUFYXTsKLQlib29sIG5lZWRzX2NkbTsK IAl1MzIgZGlzcGxheV9udW1fb2ZfaF90aWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAppbmRleCBiMzkxN2UwLi5hMDBiMjIy IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9w aHlzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 cy5oCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiZHB1X2h3X3Bpbmdwb25nLmgiCiAjaW5j bHVkZSAiZHB1X2h3X2N0bC5oIgogI2luY2x1ZGUgImRwdV9od190b3AuaCIKLSNpbmNsdWRlICJk cHVfaHdfY2RtLmgiCiAjaW5jbHVkZSAiZHB1X2VuY29kZXIuaCIKIAogI2RlZmluZSBEUFVfRU5D T0RFUl9OQU1FX01BWAkxNgpAQCAtMjA0LDggKzIwMyw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9p cnEgewogICogQHBhcmVudF9vcHM6CQlDYWxsYmFja3MgZXhwb3NlZCBieSB0aGUgcGFyZW50IHRv IHRoZSBwaHlzX2VuYwogICogQGh3X21kcHRvcDoJCUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUg dG9wIHJlZ2lzdGVycwogICogQGh3X2N0bDoJCUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUgY3Rs IHJlZ2lzdGVycwotICogQGh3X2NkbToJCUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUgY2RtIHJl Z2lzdGVycwotICogQGNkbV9jZmc6CQlDaHJvbWEtZG93biBoYXJkd2FyZSBjb25maWd1cmF0aW9u CiAgKiBAaHdfcHA6CQlIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIHBpbmcgcG9uZyByZWdpc3Rl cnMKICAqIEBkcHVfa21zOgkJUG9pbnRlciB0byB0aGUgZHB1X2ttcyB0b3AgbGV2ZWwKICAqIEBj YWNoZWRfbW9kZToJRFJNIG1vZGUgY2FjaGVkIGF0IG1vZGVfc2V0IHRpbWUsIGFjdGVkIG9uIGlu IGVuYWJsZQpAQCAtMjM1LDggKzIzMiw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzIHsKIAlj b25zdCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgKnBhcmVudF9vcHM7CiAJc3RydWN0IGRw dV9od19tZHAgKmh3X21kcHRvcDsKIAlzdHJ1Y3QgZHB1X2h3X2N0bCAqaHdfY3RsOwotCXN0cnVj dCBkcHVfaHdfY2RtICpod19jZG07Ci0Jc3RydWN0IGRwdV9od19jZG1fY2ZnIGNkbV9jZmc7CiAJ c3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHA7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7 CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgY2FjaGVkX21vZGU7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwppbmRleCA5ZjcxODYxLi41MTJhYzA4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxv Zy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMK QEAgLTI5NSwxOCArMjk1LDYgQEAKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDRE0gc3ViIGJsb2NrcyBjb25m aWcKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwotc3RhdGljIHN0cnVjdCBkcHVfY2RtX2NmZyBzZG04NDVfY2RtW10gPSB7Ci0J ewotCS5uYW1lID0gImNkbV8wIiwgLmlkID0gQ0RNXzAsCi0JLmJhc2UgPSAweDc5MjAwLCAubGVu ID0gMHgyMjQsCi0JLmZlYXR1cmVzID0gMCwKLQkuaW50Zl9jb25uZWN0ID0gQklUKElOVEZfMyks Ci0JfSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKiBWQklGIHN1YiBibG9ja3MgY29uZmlnCiAgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8q IFZCSUYgUU9TIHJlbWFwICovCkBAIC00MzAsOCArNDE4LDYgQEAgc3RhdGljIHZvaWQgc2RtODQ1 X2NmZ19pbml0KHN0cnVjdCBkcHVfbWRzc19jZmcgKmRwdV9jZmcpCiAJCS5taXhlciA9IHNkbTg0 NV9sbSwKIAkJLnBpbmdwb25nX2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfcHApLAogCQkucGlu Z3BvbmcgPSBzZG04NDVfcHAsCi0JCS5jZG1fY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9jZG0p LAotCQkuY2RtID0gc2RtODQ1X2NkbSwKIAkJLmludGZfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0 NV9pbnRmKSwKIAkJLmludGYgPSBzZG04NDVfaW50ZiwKIAkJLnZiaWZfY291bnQgPSBBUlJBWV9T SVpFKHNkbTg0NV92YmlmKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19jYXRhbG9nLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5oCmluZGV4IDJkYTgwM2MuLmRjMDYwZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaApAQCAtNDk0LDE4ICs0OTQsNiBAQCBz dHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAgewogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgZHB1X2NkbV9j ZmcgLSBpbmZvcm1hdGlvbiBvZiBjaHJvbWEgZG93biBibG9ja3MKLSAqIEBpZCAgICAgICAgICAg ICAgICAgZW51bSBpZGVudGlmeWluZyB0aGlzIGJsb2NrCi0gKiBAYmFzZSAgICAgICAgICAgICAg IHJlZ2lzdGVyIG9mZnNldCBvZiB0aGlzIGJsb2NrCi0gKiBAZmVhdHVyZXMgICAgICAgICAgIGJp dCBtYXNrIGlkZW50aWZ5aW5nIHN1Yi1ibG9ja3MvZmVhdHVyZXMKLSAqIEBpbnRmX2Nvbm5lY3Qg ICAgICAgQml0bWFzayBvZiBJTlRGIElEcyB0aGlzIENETSBjYW4gY29ubmVjdCB0bwotICovCi1z dHJ1Y3QgZHB1X2NkbV9jZmcgICB7Ci0JRFBVX0hXX0JMS19JTkZPOwotCXVuc2lnbmVkIGxvbmcg aW50Zl9jb25uZWN0OwotfTsKLQotLyoqCiAgKiBzdHJ1Y3QgZHB1X2ludGZfY2ZnIC0gaW5mb3Jt YXRpb24gb2YgdGltaW5nIGVuZ2luZSBibG9ja3MKICAqIEBpZCAgICAgICAgICAgICAgICAgZW51 bSBpZGVudGlmeWluZyB0aGlzIGJsb2NrCiAgKiBAYmFzZSAgICAgICAgICAgICAgIHJlZ2lzdGVy IG9mZnNldCBvZiB0aGlzIGJsb2NrCkBAIC02OTUsOSArNjgzLDYgQEAgc3RydWN0IGRwdV9tZHNz X2NmZyB7CiAJdTMyIHBpbmdwb25nX2NvdW50OwogCXN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICpw aW5ncG9uZzsKIAotCXUzMiBjZG1fY291bnQ7Ci0Jc3RydWN0IGRwdV9jZG1fY2ZnICpjZG07Ci0K IAl1MzIgaW50Zl9jb3VudDsKIAlzdHJ1Y3QgZHB1X2ludGZfY2ZnICppbnRmOwogCkBAIC03MzMs NyArNzE4LDYgQEAgc3RydWN0IGRwdV9tZHNzX2h3X2NmZ19oYW5kbGVyIHsKICNkZWZpbmUgQkxL X0NVUlNPUihzKSAoKHMpLT5jdXJzb3IpCiAjZGVmaW5lIEJMS19NSVhFUihzKSAoKHMpLT5taXhl cikKICNkZWZpbmUgQkxLX1BJTkdQT05HKHMpICgocyktPnBpbmdwb25nKQotI2RlZmluZSBCTEtf Q0RNKHMpICgocyktPmNkbSkKICNkZWZpbmUgQkxLX0lOVEYocykgKChzKS0+aW50ZikKICNkZWZp bmUgQkxLX0FEKHMpICgocyktPmFkKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY2RtLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NDg3NGIuLjAwMDAw MDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5jCisrKyAv ZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNS0yMDE4LCBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICov Ci0KLSNpbmNsdWRlICJkcHVfaHdfbWRzcy5oIgotI2luY2x1ZGUgImRwdV9od2lvLmgiCi0jaW5j bHVkZSAiZHB1X2h3X2NhdGFsb2cuaCIKLSNpbmNsdWRlICJkcHVfaHdfY2RtLmgiCi0jaW5jbHVk ZSAiZHB1X2RiZy5oIgotI2luY2x1ZGUgImRwdV9rbXMuaCIKLQotI2RlZmluZSBDRE1fQ1NDXzEw X09QTU9ERSAgICAgICAgICAgICAgICAgIDB4MDAwCi0jZGVmaW5lIENETV9DU0NfMTBfQkFTRSAg ICAgICAgICAgICAgICAgICAgMHgwMDQKLQotI2RlZmluZSBDRE1fQ0RXTjJfT1BfTU9ERSAgICAg ICAgICAgICAgICAgIDB4MTAwCi0jZGVmaW5lIENETV9DRFdOMl9DTEFNUF9PVVQgICAgICAgICAg ICAgICAgMHgxMDQKLSNkZWZpbmUgQ0RNX0NEV04yX1BBUkFNU18zRF8wICAgICAgICAgICAgICAw eDEwOAotI2RlZmluZSBDRE1fQ0RXTjJfUEFSQU1TXzNEXzEgICAgICAgICAgICAgIDB4MTBDCi0j ZGVmaW5lIENETV9DRFdOMl9DT0VGRl9DT1NJVEVfSF8wICAgICAgICAgMHgxMTAKLSNkZWZpbmUg Q0RNX0NEV04yX0NPRUZGX0NPU0lURV9IXzEgICAgICAgICAweDExNAotI2RlZmluZSBDRE1fQ0RX TjJfQ09FRkZfQ09TSVRFX0hfMiAgICAgICAgIDB4MTE4Ci0jZGVmaW5lIENETV9DRFdOMl9DT0VG Rl9PRkZTSVRFX0hfMCAgICAgICAgMHgxMUMKLSNkZWZpbmUgQ0RNX0NEV04yX0NPRUZGX09GRlNJ VEVfSF8xICAgICAgICAweDEyMAotI2RlZmluZSBDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lURV9IXzIg ICAgICAgIDB4MTI0Ci0jZGVmaW5lIENETV9DRFdOMl9DT0VGRl9DT1NJVEVfViAgICAgICAgICAg MHgxMjgKLSNkZWZpbmUgQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVfViAgICAgICAgICAweDEyQwot I2RlZmluZSBDRE1fQ0RXTjJfT1VUX1NJWkUgICAgICAgICAgICAgICAgIDB4MTMwCi0KLSNkZWZp bmUgQ0RNX0hETUlfUEFDS19PUF9NT0RFICAgICAgICAgICAgICAweDIwMAotI2RlZmluZSBDRE1f Q1NDXzEwX01BVFJJWF9DT0VGRl8wICAgICAgICAgIDB4MDA0Ci0KLS8qKgotICogSG9yaXpvbnRh bCBjb2VmZmljaWVudHMgZm9yIGNvc2l0ZSBjaHJvbWEgZG93bnNjYWxlCi0gKiBzMTMgcmVwcmVz ZW50YXRpb24gb2YgY29lZmZpY2llbnRzCi0gKi8KLXN0YXRpYyB1MzIgY29zaXRlX2hfY29lZmZb XSA9IHsweDAwMDAwMDE2LCAweDAwMDAwMWNjLCAweDAxMDAwMDllfTsKLQotLyoqCi0gKiBIb3Jp em9udGFsIGNvZWZmaWNpZW50cyBmb3Igb2Zmc2l0ZSBjaHJvbWEgZG93bnNjYWxlCi0gKi8KLXN0 YXRpYyB1MzIgb2Zmc2l0ZV9oX2NvZWZmW10gPSB7MHgwMDBiMDAwNSwgMHgwMWRiMDFlYiwgMHgw MGU0MDA0Nn07Ci0KLS8qKgotICogVmVydGljYWwgY29lZmZpY2llbnRzIGZvciBjb3NpdGUgY2hy b21hIGRvd25zY2FsZQotICovCi1zdGF0aWMgdTMyIGNvc2l0ZV92X2NvZWZmW10gPSB7MHgwMDA4 MDAwNH07Ci0vKioKLSAqIFZlcnRpY2FsIGNvZWZmaWNpZW50cyBmb3Igb2Zmc2l0ZSBjaHJvbWEg ZG93bnNjYWxlCi0gKi8KLXN0YXRpYyB1MzIgb2Zmc2l0ZV92X2NvZWZmW10gPSB7MHgwMDA2MDAw Mn07Ci0KLS8qIExpbWl0ZWQgUmFuZ2UgcmdiMnl1diBjb2VmZiB3aXRoIGNsYW1wIGFuZCBiaWFz IHZhbHVlcyBmb3IgQ1NDIDEwIG1vZHVsZSAqLwotc3RhdGljIHN0cnVjdCBkcHVfY3NjX2NmZyBy Z2IyeXV2X2NmZyA9IHsKLQl7Ci0JCTB4MDA4MywgMHgwMTAyLCAweDAwMzIsCi0JCTB4MWZiNSwg MHgxZjZjLCAweDAwZTEsCi0JCTB4MDBlMSwgMHgxZjQ1LCAweDFmZGMKLQl9LAotCXsgMHgwMCwg MHgwMCwgMHgwMCB9LAotCXsgMHgwMDQwLCAweDAyMDAsIDB4MDIwMCB9LAotCXsgMHgwMDAsIDB4 M2ZmLCAweDAwMCwgMHgzZmYsIDB4MDAwLCAweDNmZiB9LAotCXsgMHgwNDAsIDB4M2FjLCAweDA0 MCwgMHgzYzAsIDB4MDQwLCAweDNjMCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBkcHVfY2RtX2Nm ZyAqX2NkbV9vZmZzZXQoZW51bSBkcHVfY2RtIGNkbSwKLQkJc3RydWN0IGRwdV9tZHNzX2NmZyAq bSwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpi KQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IG0tPmNkbV9jb3VudDsgaSsrKSB7Ci0J CWlmIChjZG0gPT0gbS0+Y2RtW2ldLmlkKSB7Ci0JCQliLT5iYXNlX29mZiA9IGFkZHI7Ci0JCQli LT5ibGtfb2ZmID0gbS0+Y2RtW2ldLmJhc2U7Ci0JCQliLT5sZW5ndGggPSBtLT5jZG1baV0ubGVu OwotCQkJYi0+aHd2ZXJzaW9uID0gbS0+aHd2ZXJzaW9uOwotCQkJYi0+bG9nX21hc2sgPSBEUFVf REJHX01BU0tfQ0RNOwotCQkJcmV0dXJuICZtLT5jZG1baV07Ci0JCX0KLQl9Ci0KLQlyZXR1cm4g RVJSX1BUUigtRUlOVkFMKTsKLX0KLQotc3RhdGljIGludCBkcHVfaHdfY2RtX3NldHVwX2NzY18x MGJpdChzdHJ1Y3QgZHB1X2h3X2NkbSAqY3R4LAotCQlzdHJ1Y3QgZHB1X2NzY19jZmcgKmRhdGEp Ci17Ci0JZHB1X2h3X2NzY19zZXR1cCgmY3R4LT5odywgQ0RNX0NTQ18xMF9NQVRSSVhfQ09FRkZf MCwgZGF0YSwgdHJ1ZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBkcHVfaHdfY2Rt X3NldHVwX2Nkd24oc3RydWN0IGRwdV9od19jZG0gKmN0eCwKLQkJc3RydWN0IGRwdV9od19jZG1f Y2ZnICpjZmcpCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYyA9ICZjdHgtPmh3Owot CXUzMiBvcG1vZGUgPSAwOwotCXUzMiBvdXRfc2l6ZSA9IDA7Ci0KLQlpZiAoY2ZnLT5vdXRwdXRf Yml0X2RlcHRoID09IENETV9DRFdOX09VVFBVVF8xMEJJVCkKLQkJb3Btb2RlICY9IH5CSVQoNyk7 Ci0JZWxzZQotCQlvcG1vZGUgfD0gQklUKDcpOwotCi0JLyogRU5BQkxFIERXTlNfSCBiaXQgKi8K LQlvcG1vZGUgfD0gQklUKDEpOwotCi0Jc3dpdGNoIChjZmctPmhfY2R3bl90eXBlKSB7Ci0JY2Fz ZSBDRE1fQ0RXTl9ESVNBQkxFOgotCQkvKiBDTEVBUiBNRVRIT0RfSCBmaWVsZCAqLwotCQlvcG1v ZGUgJj0gfigweDE4KTsKLQkJLyogQ0xFQVIgRFdOU19IIGJpdCAqLwotCQlvcG1vZGUgJj0gfkJJ VCgxKTsKLQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9QSVhFTF9EUk9QOgotCQkvKiBDbGVhciBN RVRIT0RfSCBmaWVsZCAocGl4ZWwgZHJvcCBpcyAwKSAqLwotCQlvcG1vZGUgJj0gfigweDE4KTsK LQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9BVkc6Ci0JCS8qIENsZWFyIE1FVEhPRF9IIGZpZWxk IChBdmVyYWdlIGlzIDB4MSkgKi8KLQkJb3Btb2RlICY9IH4oMHgxOCk7Ci0JCW9wbW9kZSB8PSAo MHgxIDw8IDB4Myk7Ci0JCWJyZWFrOwotCWNhc2UgQ0RNX0NEV05fQ09TSVRFOgotCQkvKiBDbGVh ciBNRVRIT0RfSCBmaWVsZCAoQXZlcmFnZSBpcyAweDIpICovCi0JCW9wbW9kZSAmPSB+KDB4MTgp OwotCQlvcG1vZGUgfD0gKDB4MiA8PCAweDMpOwotCQkvKiBDby1zaXRlIGhvcml6b250YWwgY29l ZmZpY2llbnRzICovCi0JCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9I XzAsCi0JCQkJY29zaXRlX2hfY29lZmZbMF0pOwotCQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdO Ml9DT0VGRl9DT1NJVEVfSF8xLAotCQkJCWNvc2l0ZV9oX2NvZWZmWzFdKTsKLQkJRFBVX1JFR19X UklURShjLCBDRE1fQ0RXTjJfQ09FRkZfQ09TSVRFX0hfMiwKLQkJCQljb3NpdGVfaF9jb2VmZlsy XSk7Ci0JCWJyZWFrOwotCWNhc2UgQ0RNX0NEV05fT0ZGU0lURToKLQkJLyogQ2xlYXIgTUVUSE9E X0ggZmllbGQgKEF2ZXJhZ2UgaXMgMHgzKSAqLwotCQlvcG1vZGUgJj0gfigweDE4KTsKLQkJb3Bt b2RlIHw9ICgweDMgPDwgMHgzKTsKLQotCQkvKiBPZmYtc2l0ZSBob3Jpem9udGFsIGNvZWZmaWNp ZW50cyAqLwotCQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9DT0VGRl9PRkZTSVRFX0hfMCwK LQkJCQlvZmZzaXRlX2hfY29lZmZbMF0pOwotCQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9D T0VGRl9PRkZTSVRFX0hfMSwKLQkJCQlvZmZzaXRlX2hfY29lZmZbMV0pOwotCQlEUFVfUkVHX1dS SVRFKGMsIENETV9DRFdOMl9DT0VGRl9PRkZTSVRFX0hfMiwKLQkJCQlvZmZzaXRlX2hfY29lZmZb Ml0pOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcl9lcnIoIiVzIGludmFsaWQgaG9yeiBkb3du IHNhbXBsaW5nIHR5cGVcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0J LyogRU5BQkxFIERXTlNfViBiaXQgKi8KLQlvcG1vZGUgfD0gQklUKDIpOwotCi0Jc3dpdGNoIChj ZmctPnZfY2R3bl90eXBlKSB7Ci0JY2FzZSBDRE1fQ0RXTl9ESVNBQkxFOgotCQkvKiBDTEVBUiBN RVRIT0RfViBmaWVsZCAqLwotCQlvcG1vZGUgJj0gfigweDYwKTsKLQkJLyogQ0xFQVIgRFdOU19W IGJpdCAqLwotCQlvcG1vZGUgJj0gfkJJVCgyKTsKLQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9Q SVhFTF9EUk9QOgotCQkvKiBDbGVhciBNRVRIT0RfViBmaWVsZCAocGl4ZWwgZHJvcCBpcyAwKSAq LwotCQlvcG1vZGUgJj0gfigweDYwKTsKLQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9BVkc6Ci0J CS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChBdmVyYWdlIGlzIDB4MSkgKi8KLQkJb3Btb2RlICY9 IH4oMHg2MCk7Ci0JCW9wbW9kZSB8PSAoMHgxIDw8IDB4NSk7Ci0JCWJyZWFrOwotCWNhc2UgQ0RN X0NEV05fQ09TSVRFOgotCQkvKiBDbGVhciBNRVRIT0RfViBmaWVsZCAoQXZlcmFnZSBpcyAweDIp ICovCi0JCW9wbW9kZSAmPSB+KDB4NjApOwotCQlvcG1vZGUgfD0gKDB4MiA8PCAweDUpOwotCQkv KiBDby1zaXRlIHZlcnRpY2FsIGNvZWZmaWNpZW50cyAqLwotCQlEUFVfUkVHX1dSSVRFKGMsCi0J CQkJQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9WLAotCQkJCWNvc2l0ZV92X2NvZWZmWzBdKTsKLQkJ YnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9PRkZTSVRFOgotCQkvKiBDbGVhciBNRVRIT0RfViBmaWVs ZCAoQXZlcmFnZSBpcyAweDMpICovCi0JCW9wbW9kZSAmPSB+KDB4NjApOwotCQlvcG1vZGUgfD0g KDB4MyA8PCAweDUpOwotCi0JCS8qIE9mZi1zaXRlIHZlcnRpY2FsIGNvZWZmaWNpZW50cyAqLwot CQlEUFVfUkVHX1dSSVRFKGMsCi0JCQkJQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVfViwKLQkJCQlv ZmZzaXRlX3ZfY29lZmZbMF0pOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZB TDsKLQl9Ci0KLQlpZiAoY2ZnLT52X2Nkd25fdHlwZSB8fCBjZmctPmhfY2R3bl90eXBlKQotCQlv cG1vZGUgfD0gQklUKDApOyAvKiBFTiBDRFdOIG1vZHVsZSAqLwotCWVsc2UKLQkJb3Btb2RlICY9 IH5CSVQoMCk7Ci0KLQlvdXRfc2l6ZSA9IChjZmctPm91dHB1dF93aWR0aCAmIDB4RkZGRikgfAot CQkoKGNmZy0+b3V0cHV0X2hlaWdodCAmIDB4RkZGRikgPDwgMTYpOwotCURQVV9SRUdfV1JJVEUo YywgQ0RNX0NEV04yX09VVF9TSVpFLCBvdXRfc2l6ZSk7Ci0JRFBVX1JFR19XUklURShjLCBDRE1f Q0RXTjJfT1BfTU9ERSwgb3Btb2RlKTsKLQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9DTEFN UF9PVVQsCi0JCQkoKDB4M0ZGIDw8IDE2KSB8IDB4MCkpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0 YXRpYyBpbnQgZHB1X2h3X2NkbV9lbmFibGUoc3RydWN0IGRwdV9od19jZG0gKmN0eCwKLQkJc3Ry dWN0IGRwdV9od19jZG1fY2ZnICpjZG0pCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAq YyA9ICZjdHgtPmh3OwotCWNvbnN0IHN0cnVjdCBkcHVfZm9ybWF0ICpmbXQgPSBjZG0tPm91dHB1 dF9mbXQ7Ci0Jc3RydWN0IGNkbV9vdXRwdXRfY2ZnIGNkbV9jZmcgPSB7IDAgfTsKLQl1MzIgb3Bt b2RlID0gMDsKLQl1MzIgY3NjID0gMDsKLQotCWlmICghRFBVX0ZPUk1BVF9JU19ZVVYoZm10KSkK LQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoY2RtLT5vdXRwdXRfdHlwZSA9PSBDRE1fQ0RXTl9P VVRQVVRfSERNSSkgewotCQlpZiAoZm10LT5jaHJvbWFfc2FtcGxlICE9IERQVV9DSFJPTUFfSDFW MikKLQkJCXJldHVybiAtRUlOVkFMOyAvKnVuc3VwcG9ydGVkIGZvcm1hdCAqLwotCQlvcG1vZGUg PSBCSVQoMCk7Ci0JCW9wbW9kZSB8PSAoZm10LT5jaHJvbWFfc2FtcGxlIDw8IDEpOwotCQljZG1f Y2ZnLmludGZfZW4gPSB0cnVlOwotCX0KLQotCWNzYyB8PSBCSVQoMik7Ci0JY3NjICY9IH5CSVQo MSk7Ci0JY3NjIHw9IEJJVCgwKTsKLQotCWlmIChjdHgtPmh3X21kcCAmJiBjdHgtPmh3X21kcC0+ b3BzLnNldHVwX2NkbV9vdXRwdXQpCi0JCWN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2RtX291dHB1 dChjdHgtPmh3X21kcCwgJmNkbV9jZmcpOwotCi0JRFBVX1JFR19XUklURShjLCBDRE1fQ1NDXzEw X09QTU9ERSwgY3NjKTsKLQlEUFVfUkVHX1dSSVRFKGMsIENETV9IRE1JX1BBQ0tfT1BfTU9ERSwg b3Btb2RlKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgZHB1X2h3X2NkbV9kaXNhYmxl KHN0cnVjdCBkcHVfaHdfY2RtICpjdHgpCi17Ci0Jc3RydWN0IGNkbV9vdXRwdXRfY2ZnIGNkbV9j ZmcgPSB7IDAgfTsKLQotCWlmIChjdHgtPmh3X21kcCAmJiBjdHgtPmh3X21kcC0+b3BzLnNldHVw X2NkbV9vdXRwdXQpCi0JCWN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2RtX291dHB1dChjdHgtPmh3 X21kcCwgJmNkbV9jZmcpOwotfQotCi1zdGF0aWMgdm9pZCBfc2V0dXBfY2RtX29wcyhzdHJ1Y3Qg ZHB1X2h3X2NkbV9vcHMgKm9wcywKLQl1bnNpZ25lZCBsb25nIGZlYXR1cmVzKQotewotCW9wcy0+ c2V0dXBfY3NjX2RhdGEgPSBkcHVfaHdfY2RtX3NldHVwX2NzY18xMGJpdDsKLQlvcHMtPnNldHVw X2Nkd24gPSBkcHVfaHdfY2RtX3NldHVwX2Nkd247Ci0Jb3BzLT5lbmFibGUgPSBkcHVfaHdfY2Rt X2VuYWJsZTsKLQlvcHMtPmRpc2FibGUgPSBkcHVfaHdfY2RtX2Rpc2FibGU7Ci19Ci0KLXN0YXRp YyBzdHJ1Y3QgZHB1X2h3X2Jsa19vcHMgZHB1X2h3X29wcyA9IHsKLQkuc3RhcnQgPSBOVUxMLAot CS5zdG9wID0gTlVMTCwKLX07Ci0KLXN0cnVjdCBkcHVfaHdfY2RtICpkcHVfaHdfY2RtX2luaXQo ZW51bSBkcHVfY2RtIGlkeCwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X21k c3NfY2ZnICptLAotCQlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwKQotewotCXN0cnVjdCBkcHVf aHdfY2RtICpjOwotCXN0cnVjdCBkcHVfY2RtX2NmZyAqY2ZnOwotCWludCByYzsKLQotCWMgPSBr emFsbG9jKHNpemVvZigqYyksIEdGUF9LRVJORUwpOwotCWlmICghYykKLQkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7Ci0KLQljZmcgPSBfY2RtX29mZnNldChpZHgsIG0sIGFkZHIsICZjLT5odyk7 Ci0JaWYgKElTX0VSUl9PUl9OVUxMKGNmZykpIHsKLQkJa2ZyZWUoYyk7Ci0JCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOwotCX0KLQotCWMtPmlkeCA9IGlkeDsKLQljLT5jYXBzID0gY2ZnOwotCV9z ZXR1cF9jZG1fb3BzKCZjLT5vcHMsIGMtPmNhcHMtPmZlYXR1cmVzKTsKLQljLT5od19tZHAgPSBo d19tZHA7Ci0KLQlyYyA9IGRwdV9od19ibGtfaW5pdCgmYy0+YmFzZSwgRFBVX0hXX0JMS19DRE0s IGlkeCwgJmRwdV9od19vcHMpOwotCWlmIChyYykgewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBp bml0IGh3IGJsayAlZFxuIiwgcmMpOwotCQlnb3RvIGJsa19pbml0X2Vycm9yOwotCX0KLQotCS8q Ci0JICogUGVyZm9ybSBhbnkgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGNocm9tYSBk b3duIG1vZHVsZQotCSAqIEBzZXR1cCBkZWZhdWx0IGNzYyBjb2VmZmljaWVudHMKLQkgKi8KLQlk cHVfaHdfY2RtX3NldHVwX2NzY18xMGJpdChjLCAmcmdiMnl1dl9jZmcpOwotCi0JcmV0dXJuIGM7 Ci0KLWJsa19pbml0X2Vycm9yOgotCWt6ZnJlZShjKTsKLQotCXJldHVybiBFUlJfUFRSKHJjKTsK LX0KLQotdm9pZCBkcHVfaHdfY2RtX2Rlc3Ryb3koc3RydWN0IGRwdV9od19jZG0gKmNkbSkKLXsK LQlpZiAoY2RtKQotCQlkcHVfaHdfYmxrX2Rlc3Ryb3koJmNkbS0+YmFzZSk7Ci0Ja2ZyZWUoY2Rt KTsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19j ZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNjZWIxZS4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkg KzAsMCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDE1LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQK LSAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8KLQotI2lmbmRlZiBfRFBVX0hX X0NETV9ICi0jZGVmaW5lIF9EUFVfSFdfQ0RNX0gKLQotI2luY2x1ZGUgImRwdV9od19tZHNzLmgi Ci0jaW5jbHVkZSAiZHB1X2h3X3RvcC5oIgotI2luY2x1ZGUgImRwdV9od19ibGsuaCIKLQotc3Ry dWN0IGRwdV9od19jZG07Ci0KLXN0cnVjdCBkcHVfaHdfY2RtX2NmZyB7Ci0JdTMyIG91dHB1dF93 aWR0aDsKLQl1MzIgb3V0cHV0X2hlaWdodDsKLQl1MzIgb3V0cHV0X2JpdF9kZXB0aDsKLQl1MzIg aF9jZHduX3R5cGU7Ci0JdTMyIHZfY2R3bl90eXBlOwotCWNvbnN0IHN0cnVjdCBkcHVfZm9ybWF0 ICpvdXRwdXRfZm10OwotCXUzMiBvdXRwdXRfdHlwZTsKLQlpbnQgZmxhZ3M7Ci19OwotCi1lbnVt IGRwdV9od19jZHduX3R5cGUgewotCUNETV9DRFdOX0RJU0FCTEUsCi0JQ0RNX0NEV05fUElYRUxf RFJPUCwKLQlDRE1fQ0RXTl9BVkcsCi0JQ0RNX0NEV05fQ09TSVRFLAotCUNETV9DRFdOX09GRlNJ VEUsCi19OwotCi1lbnVtIGRwdV9od19jZHduX291dHB1dF90eXBlIHsKLQlDRE1fQ0RXTl9PVVRQ VVRfSERNSSwKLQlDRE1fQ0RXTl9PVVRQVVRfV0IsCi19OwotCi1lbnVtIGRwdV9od19jZHduX291 dHB1dF9iaXRfZGVwdGggewotCUNETV9DRFdOX09VVFBVVF84QklULAotCUNETV9DRFdOX09VVFBV VF8xMEJJVCwKLX07Ci0KLS8qKgotICogc3RydWN0IGRwdV9od19jZG1fb3BzIDogSW50ZXJmYWNl IHRvIHRoZSBjaHJvbWEgZG93biBIdyBkcml2ZXIgZnVuY3Rpb25zCi0gKiAgICAgICAgICAgICAg ICAgICAgICAgICBBc3N1bXB0aW9uIGlzIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCBh ZnRlcgotICogICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tzIGFyZSBlbmFibGVkCi0gKiAg QHNldHVwX2NzYzogICAgICAgICAgICBQcm9ncmFtcyB0aGUgY3NjIG1hdHJpeAotICogIEBzZXR1 cF9jZHduOiAgICAgICAgICAgU2V0cyB1cCB0aGUgY2hyb21hIGRvd24gc3ViIG1vZHVsZQotICog IEBlbmFibGU6ICAgICAgICAgICAgICAgRW5hYmxlcyB0aGUgb3V0cHV0IHRvIGludGVyZmFjZSBh bmQgcHJvZ3JhbXMgdGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgcGFja2Vy Ci0gKiAgQGRpc2FibGU6ICAgICAgICAgICAgICBQdXRzIHRoZSBjZG0gaW4gYnlwYXNzIG1vZGUK LSAqLwotc3RydWN0IGRwdV9od19jZG1fb3BzIHsKLQkvKioKLQkgKiBQcm9ncmFtcyB0aGUgQ1ND IG1hdHJpeCBmb3IgY29udmVyc2lvbiBmcm9tIFJHQiBzcGFjZSB0byBZVVYgc3BhY2UsCi0JICog aXQgaXMgb3B0aW9uYWwgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFzIHRoaXMgbWF0cml4IGlzIGF1 dG9tYXRpY2FsbHkKLQkgKiBzZXQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB1c2VyIHNob3VsZCBj YWxsIHRoaXMgaWYgaXQgd2FudHMKLQkgKiB0byBwcm9ncmFtIGEgZGlmZmVyZW50IG1hdHJpeCB0 aGFuIGRlZmF1bHQgbWF0cml4LgotCSAqIEBjZG06ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGNo cm9tYSBkb3duIGNvbnRleHQgc3RydWN0dXJlCi0JICogQGRhdGEgICAgICAgICAgUG9pbnRlciB0 byBDU0MgY29uZmlndXJhdGlvbiBkYXRhCi0JICogcmV0dXJuOiAgICAgICAgMCBpZiBzdWNjZXNz OyBlcnJvciBjb2RlIG90aGVyd2lzZQotCSAqLwotCWludCAoKnNldHVwX2NzY19kYXRhKShzdHJ1 Y3QgZHB1X2h3X2NkbSAqY2RtLAotCQkJc3RydWN0IGRwdV9jc2NfY2ZnICpkYXRhKTsKLQotCS8q KgotCSAqIFByb2dyYW1zIHRoZSBDaHJvbWEgZG93bnNhbXBsZSBwYXJ0LgotCSAqIEBjZG0gICAg ICAgICBQb2ludGVyIHRvIGNocm9tYSBkb3duIGNvbnRleHQKLQkgKi8KLQlpbnQgKCpzZXR1cF9j ZHduKShzdHJ1Y3QgZHB1X2h3X2NkbSAqY2RtLAotCXN0cnVjdCBkcHVfaHdfY2RtX2NmZyAqY2Zn KTsKLQotCS8qKgotCSAqIEVuYWJsZSB0aGUgQ0RNIG1vZHVsZQotCSAqIEBjZG0gICAgICAgICBQ b2ludGVyIHRvIGNocm9tYSBkb3duIGNvbnRleHQKLQkgKi8KLQlpbnQgKCplbmFibGUpKHN0cnVj dCBkcHVfaHdfY2RtICpjZG0sCi0Jc3RydWN0IGRwdV9od19jZG1fY2ZnICpjZmcpOwotCi0JLyoq Ci0JICogRGlzYWJsZSB0aGUgQ0RNIG1vZHVsZQotCSAqIEBjZG0gICAgICAgICBQb2ludGVyIHRv IGNocm9tYSBkb3duIGNvbnRleHQKLQkgKi8KLQl2b2lkICgqZGlzYWJsZSkoc3RydWN0IGRwdV9o d19jZG0gKmNkbSk7Ci19OwotCi1zdHJ1Y3QgZHB1X2h3X2NkbSB7Ci0Jc3RydWN0IGRwdV9od19i bGsgYmFzZTsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwIGh3OwotCi0JLyogY2hyb21hIGRv d24gKi8KLQljb25zdCBzdHJ1Y3QgZHB1X2NkbV9jZmcgKmNhcHM7Ci0JZW51bSAgZHB1X2NkbSAg aWR4OwotCi0JLyogbWRwIHRvcCBodyBkcml2ZXIgKi8KLQlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdf bWRwOwotCi0JLyogb3BzICovCi0Jc3RydWN0IGRwdV9od19jZG1fb3BzIG9wczsKLX07Ci0KLS8q KgotICogZHB1X2h3X2NkbSAtIGNvbnZlcnQgYmFzZSBvYmplY3QgZHB1X2h3X2Jhc2UgdG8gY29u dGFpbmVyCi0gKiBAaHc6IFBvaW50ZXIgdG8gYmFzZSBoYXJkd2FyZSBibG9jawotICogcmV0dXJu OiBQb2ludGVyIHRvIGhhcmR3YXJlIGJsb2NrIGNvbnRhaW5lcgotICovCi1zdGF0aWMgaW5saW5l IHN0cnVjdCBkcHVfaHdfY2RtICp0b19kcHVfaHdfY2RtKHN0cnVjdCBkcHVfaHdfYmxrICpodykK LXsKLQlyZXR1cm4gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgZHB1X2h3X2NkbSwgYmFzZSk7Ci19 Ci0KLS8qKgotICogZHB1X2h3X2NkbV9pbml0IC0gaW5pdGlhbGl6ZXMgdGhlIGNkbSBodyBkcml2 ZXIgb2JqZWN0LgotICogc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGJlZm9yZSBhY2Nlc3NpbmcgZXZl cnkgY2RtLgotICogQGlkeDogIGNkbSBpbmRleCBmb3Igd2hpY2ggZHJpdmVyIG9iamVjdCBpcyBy ZXF1aXJlZAotICogQGFkZHI6IG1hcHBlZCByZWdpc3RlciBpbyBhZGRyZXNzIG9mIE1EUAotICog QG0gOiAgIHBvaW50ZXIgdG8gbWRzcyBjYXRhbG9nIGRhdGEKLSAqIEBod19tZHA6ICBwb2ludGVy IHRvIG1kcCB0b3AgaHcgZHJpdmVyIG9iamVjdAotICovCi1zdHJ1Y3QgZHB1X2h3X2NkbSAqZHB1 X2h3X2NkbV9pbml0KGVudW0gZHB1X2NkbSBpZHgsCi0JCXZvaWQgX19pb21lbSAqYWRkciwKLQkJ c3RydWN0IGRwdV9tZHNzX2NmZyAqbSwKLQkJc3RydWN0IGRwdV9od19tZHAgKmh3X21kcCk7Ci0K LS8qKgotICogZHB1X2h3X2NkbV9kZXN0cm95IC0gZGVzdHJveXMgQ0RNIGRyaXZlciBjb250ZXh0 Ci0gKiBAY2RtOiAgIHBvaW50ZXIgdG8gQ0RNIGRyaXZlciBjb250ZXh0Ci0gKi8KLXZvaWQgZHB1 X2h3X2NkbV9kZXN0cm95KHN0cnVjdCBkcHVfaHdfY2RtICpjZG0pOwotCi0jZW5kaWYgLypfRFBV X0hXX0NETV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY3RsLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmMK aW5kZXggMDZiZTdjZi4uYjM5NGExOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2N0bC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19jdGwuYwpAQCAtMjI0LDE5ICsyMjQsNiBAQCBzdGF0aWMgaW5saW5lIGludCBkcHVf aHdfY3RsX2dldF9iaXRtYXNrX2ludGYoc3RydWN0IGRwdV9od19jdGwgKmN0eCwKIAlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgZHB1X2h3X2N0bF9nZXRfYml0bWFza19jZG0oc3Ry dWN0IGRwdV9od19jdGwgKmN0eCwKLQkJdTMyICpmbHVzaGJpdHMsIGVudW0gZHB1X2NkbSBjZG0p Ci17Ci0Jc3dpdGNoIChjZG0pIHsKLQljYXNlIENETV8wOgotCQkqZmx1c2hiaXRzIHw9IEJJVCgy Nik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQlyZXR1cm4g MDsKLX0KLQogc3RhdGljIHUzMiBkcHVfaHdfY3RsX3BvbGxfcmVzZXRfc3RhdHVzKHN0cnVjdCBk cHVfaHdfY3RsICpjdHgsIHUzMiB0aW1lb3V0X3VzKQogewogCXN0cnVjdCBkcHVfaHdfYmxrX3Jl Z19tYXAgKmMgPSAmY3R4LT5odzsKQEAgLTQ4NSw3ICs0NzIsNiBAQCBzdGF0aWMgdm9pZCBfc2V0 dXBfY3RsX29wcyhzdHJ1Y3QgZHB1X2h3X2N0bF9vcHMgKm9wcywKIAlvcHMtPmdldF9iaXRtYXNr X3NzcHAgPSBkcHVfaHdfY3RsX2dldF9iaXRtYXNrX3NzcHA7CiAJb3BzLT5nZXRfYml0bWFza19t aXhlciA9IGRwdV9od19jdGxfZ2V0X2JpdG1hc2tfbWl4ZXI7CiAJb3BzLT5nZXRfYml0bWFza19p bnRmID0gZHB1X2h3X2N0bF9nZXRfYml0bWFza19pbnRmOwotCW9wcy0+Z2V0X2JpdG1hc2tfY2Rt ID0gZHB1X2h3X2N0bF9nZXRfYml0bWFza19jZG07CiB9OwogCiBzdGF0aWMgc3RydWN0IGRwdV9o d19ibGtfb3BzIGRwdV9od19vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY3RsLmgKaW5kZXggYzY2YTcxZi4uNmYzMTNmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2N0bC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jdGwuaApAQCAtMTQyLDEwICsxNDIsNiBAQCBzdHJ1Y3QgZHB1 X2h3X2N0bF9vcHMgewogCQl1MzIgKmZsdXNoYml0cywKIAkJZW51bSBkcHVfaW50ZiBibGspOwog Ci0JaW50ICgqZ2V0X2JpdG1hc2tfY2RtKShzdHJ1Y3QgZHB1X2h3X2N0bCAqY3R4LAotCQl1MzIg KmZsdXNoYml0cywKLQkJZW51bSBkcHVfY2RtIGJsayk7Ci0KIAkvKioKIAkgKiBTZXQgYWxsIGJs ZW5kIHN0YWdlcyB0byBkaXNhYmxlZAogCSAqIEBjdHggICAgICAgOiBjdGwgcGF0aCBjdHggcG9p bnRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21k c3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmgKaW5kZXgg MTY0NjgxMi4uNjJjZjEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X21kc3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfbWRzcy5oCkBAIC0xMDAsNyArMTAwLDYgQEAgZW51bSBkcHVfaHdfYmxrX3R5cGUgewogCURQ VV9IV19CTEtfU1NQUCwKIAlEUFVfSFdfQkxLX0xNLAogCURQVV9IV19CTEtfQ1RMLAotCURQVV9I V19CTEtfQ0RNLAogCURQVV9IV19CTEtfUElOR1BPTkcsCiAJRFBVX0hXX0JMS19JTlRGLAogCURQ VV9IV19CTEtfV0IsCkBAIC0xODIsMTIgKzE4MSw2IEBAIGVudW0gZHB1X2N0bCB7CiAJQ1RMX01B WAogfTsKIAotZW51bSBkcHVfY2RtIHsKLQlDRE1fMCA9IDEsCi0JQ0RNXzEsCi0JQ0RNX01BWAot fTsKLQogZW51bSBkcHVfcGluZ3BvbmcgewogCVBJTkdQT05HXzAgPSAxLAogCVBJTkdQT05HXzEs CkBAIC00NDQsMTUgKzQzNywxNCBAQCBzdHJ1Y3QgZHB1X21kc3NfY29sb3IgewogICogRGVmaW5l IGJpdCBtYXNrcyBmb3IgaC93IGxvZ2dpbmcuCiAgKi8KICNkZWZpbmUgRFBVX0RCR19NQVNLX05P TkUgICAgICgxIDw8IDApCi0jZGVmaW5lIERQVV9EQkdfTUFTS19DRE0gICAgICAoMSA8PCAxKQot I2RlZmluZSBEUFVfREJHX01BU0tfSU5URiAgICAgKDEgPDwgMikKLSNkZWZpbmUgRFBVX0RCR19N QVNLX0xNICAgICAgICgxIDw8IDMpCi0jZGVmaW5lIERQVV9EQkdfTUFTS19DVEwgICAgICAoMSA8 PCA0KQotI2RlZmluZSBEUFVfREJHX01BU0tfUElOR1BPTkcgKDEgPDwgNSkKLSNkZWZpbmUgRFBV X0RCR19NQVNLX1NTUFAgICAgICgxIDw8IDYpCi0jZGVmaW5lIERQVV9EQkdfTUFTS19XQiAgICAg ICAoMSA8PCA3KQotI2RlZmluZSBEUFVfREJHX01BU0tfVE9QICAgICAgKDEgPDwgOCkKLSNkZWZp bmUgRFBVX0RCR19NQVNLX1ZCSUYgICAgICgxIDw8IDkpCi0jZGVmaW5lIERQVV9EQkdfTUFTS19S T1QgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgRFBVX0RCR19NQVNLX0lOVEYgICAgICgxIDw8IDEp CisjZGVmaW5lIERQVV9EQkdfTUFTS19MTSAgICAgICAoMSA8PCAyKQorI2RlZmluZSBEUFVfREJH X01BU0tfQ1RMICAgICAgKDEgPDwgMykKKyNkZWZpbmUgRFBVX0RCR19NQVNLX1BJTkdQT05HICgx IDw8IDQpCisjZGVmaW5lIERQVV9EQkdfTUFTS19TU1BQICAgICAoMSA8PCA1KQorI2RlZmluZSBE UFVfREJHX01BU0tfV0IgICAgICAgKDEgPDwgNikKKyNkZWZpbmUgRFBVX0RCR19NQVNLX1RPUCAg ICAgICgxIDw8IDcpCisjZGVmaW5lIERQVV9EQkdfTUFTS19WQklGICAgICAoMSA8PCA4KQorI2Rl ZmluZSBEUFVfREJHX01BU0tfUk9UICAgICAgKDEgPDwgOSkKIAogI2VuZGlmICAvKiBfRFBVX0hX X01EU1NfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X3RvcC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCmlu ZGV4IGRiMjc5OGUuLmI4NzgxMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od190b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfdG9wLmMKQEAgLTk4LDIzICs5OCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9z cGxpdF9waXBlKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCiAJRFBVX1JFR19XUklURShjLCBTUExJ VF9ESVNQTEFZX0VOLCBjZmctPmVuICYgMHgxKTsKIH0KIAotc3RhdGljIHZvaWQgZHB1X2h3X3Nl dHVwX2NkbV9vdXRwdXQoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKLQkJc3RydWN0IGNkbV9vdXRw dXRfY2ZnICpjZmcpCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQl1MzIgb3V0 X2N0bCA9IDA7Ci0KLQlpZiAoIW1kcCB8fCAhY2ZnKQotCQlyZXR1cm47Ci0KLQljID0gJm1kcC0+ aHc7Ci0KLQlpZiAoY2ZnLT5pbnRmX2VuKQotCQlvdXRfY3RsIHw9IEJJVCgxOSk7Ci0KLQlEUFVf UkVHX1dSSVRFKGMsIE1EUF9PVVRfQ1RMXzAsIG91dF9jdGwpOwotfQotCiBzdGF0aWMgYm9vbCBk cHVfaHdfc2V0dXBfY2xrX2ZvcmNlX2N0cmwoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKIAkJZW51 bSBkcHVfY2xrX2N0cmxfdHlwZSBjbGtfY3RybCwgYm9vbCBlbmFibGUpCiB7CkBAIC0zMDcsNyAr MjkwLDYgQEAgc3RhdGljIHZvaWQgX3NldHVwX21kcF9vcHMoc3RydWN0IGRwdV9od19tZHBfb3Bz ICpvcHMsCiAJCXVuc2lnbmVkIGxvbmcgY2FwKQogewogCW9wcy0+c2V0dXBfc3BsaXRfcGlwZSA9 IGRwdV9od19zZXR1cF9zcGxpdF9waXBlOwotCW9wcy0+c2V0dXBfY2RtX291dHB1dCA9IGRwdV9o d19zZXR1cF9jZG1fb3V0cHV0OwogCW9wcy0+c2V0dXBfY2xrX2ZvcmNlX2N0cmwgPSBkcHVfaHdf c2V0dXBfY2xrX2ZvcmNlX2N0cmw7CiAJb3BzLT5nZXRfZGFuZ2VyX3N0YXR1cyA9IGRwdV9od19n ZXRfZGFuZ2VyX3N0YXR1czsKIAlvcHMtPnNldHVwX3ZzeW5jX3NvdXJjZSA9IGRwdV9od19zZXR1 cF92c3luY19zb3VyY2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfdG9wLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9w LmgKaW5kZXggODk5OTI1YS4uMTkyZTMzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuaApAQCAtNTIsMTQgKzUyLDYgQEAgc3RydWN0IHNwbGl0X3BpcGVfY2Zn IHsKIH07CiAKIC8qKgotICogc3RydWN0IGNkbV9vdXRwdXRfY2ZnOiBvdXRwdXQgY29uZmlndXJh dGlvbiBmb3IgY2RtCi0gKiBAaW50Zl9lbiAgIDogZW5hYmxlL2Rpc2FibGUgaW50ZXJmYWNlIG91 dHB1dAotICovCi1zdHJ1Y3QgY2RtX291dHB1dF9jZmcgewotCWJvb2wgaW50Zl9lbjsKLX07Ci0K LS8qKgogICogc3RydWN0IGRwdV9kYW5nZXJfc2FmZV9zdGF0dXM6IGRhbmdlciBhbmQgc2FmZSBz dGF0dXMgc2lnbmFscwogICogQG1kcDogdG9wIGxldmVsIHN0YXR1cwogICogQHNzcHA6IHNvdXJj ZSBwaXBlIHN0YXR1cwpAQCAtODksNyArODEsNiBAQCBzdHJ1Y3QgZHB1X3ZzeW5jX3NvdXJjZV9j ZmcgewogICogQXNzdW1wdGlvbiBpcyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgYWZ0 ZXIgY2xvY2tzIGFyZSBlbmFibGVkLgogICogQHNldHVwX3NwbGl0X3BpcGUgOiBQcm9ncmFtcyB0 aGUgcGlwZSBjb250cm9sIHJlZ2lzdGVycwogICogQHNldHVwX3BwX3NwbGl0IDogUHJvZ3JhbXMg dGhlIHBwIHNwbGl0IGNvbnRyb2wgcmVnaXN0ZXJzCi0gKiBAc2V0dXBfY2RtX291dHB1dCA6IHBy b2dyYW1zIGNkbSBjb250cm9sCiAgKiBAc2V0dXBfdHJhZmZpY19zaGFwZXIgOiBwcm9ncmFtcyB0 cmFmZmljIHNoYXBlciBjb250cm9sCiAgKi8KIHN0cnVjdCBkcHVfaHdfbWRwX29wcyB7CkBAIC0x MDIsMTQgKzkzLDYgQEAgc3RydWN0IGRwdV9od19tZHBfb3BzIHsKIAkJCXN0cnVjdCBzcGxpdF9w aXBlX2NmZyAqcCk7CiAKIAkvKioKLQkgKiBzZXR1cF9jZG1fb3V0cHV0KCkgOiBTZXR1cCBzZWxl Y3Rpb24gY29udHJvbCBvZiB0aGUgY2RtIGRhdGEgcGF0aAotCSAqIEBtZHAgIDogbWRwIHRvcCBj b250ZXh0IGRyaXZlcgotCSAqIEBjZmcgIDogY2RtIG91dHB1dCBjb25maWd1cmF0aW9uCi0JICov Ci0Jdm9pZCAoKnNldHVwX2NkbV9vdXRwdXQpKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCi0JCQlz dHJ1Y3QgY2RtX291dHB1dF9jZmcgKmNmZyk7Ci0KLQkvKioKIAkgKiBzZXR1cF90cmFmZmljX3No YXBlcigpIDogU2V0dXAgdHJhZmZpYyBzaGFwZXIgY29udHJvbAogCSAqIEBtZHAgIDogbWRwIHRv cCBjb250ZXh0IGRyaXZlcgogCSAqIEBjZmcgIDogdHJhZmZpYyBzaGFwZXIgY29uZmlndXJhdGlv bgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwppbmRleCAwYjQzMTkzLi5lMmU2 NGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwpAQCAtMTYsNyArMTYs NiBAQAogI2luY2x1ZGUgImRwdV9rbXMuaCIKICNpbmNsdWRlICJkcHVfaHdfbG0uaCIKICNpbmNs dWRlICJkcHVfaHdfY3RsLmgiCi0jaW5jbHVkZSAiZHB1X2h3X2NkbS5oIgogI2luY2x1ZGUgImRw dV9od19waW5ncG9uZy5oIgogI2luY2x1ZGUgImRwdV9od19pbnRmLmgiCiAjaW5jbHVkZSAiZHB1 X2VuY29kZXIuaCIKQEAgLTIyOCw5ICsyMjcsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X3JtX2h3X2Rl c3Ryb3koZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSwgdm9pZCAqaHcpCiAJY2FzZSBEUFVfSFdf QkxLX0NUTDoKIAkJZHB1X2h3X2N0bF9kZXN0cm95KGh3KTsKIAkJYnJlYWs7Ci0JY2FzZSBEUFVf SFdfQkxLX0NETToKLQkJZHB1X2h3X2NkbV9kZXN0cm95KGh3KTsKLQkJYnJlYWs7CiAJY2FzZSBE UFVfSFdfQkxLX1BJTkdQT05HOgogCQlkcHVfaHdfcGluZ3BvbmdfZGVzdHJveShodyk7CiAJCWJy ZWFrOwpAQCAtMzA0LDkgKzMwMCw2IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9od19ibGtfY3JlYXRl KAogCWNhc2UgRFBVX0hXX0JMS19DVEw6CiAJCWh3ID0gZHB1X2h3X2N0bF9pbml0KGlkLCBtbWlv LCBjYXQpOwogCQlicmVhazsKLQljYXNlIERQVV9IV19CTEtfQ0RNOgotCQlodyA9IGRwdV9od19j ZG1faW5pdChpZCwgbW1pbywgY2F0LCBod19tZHApOwotCQlicmVhazsKIAljYXNlIERQVV9IV19C TEtfUElOR1BPTkc6CiAJCWh3ID0gZHB1X2h3X3Bpbmdwb25nX2luaXQoaWQsIG1taW8sIGNhdCk7 CiAJCWJyZWFrOwpAQCAtNDM3LDE1ICs0MzAsNiBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRw dV9ybSAqcm0sCiAJCX0KIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgY2F0LT5jZG1fY291bnQ7IGkr KykgewotCQlyYyA9IF9kcHVfcm1faHdfYmxrX2NyZWF0ZShybSwgY2F0LCBtbWlvLCBEUFVfSFdf QkxLX0NETSwKLQkJCQljYXQtPmNkbVtpXS5pZCwgJmNhdC0+Y2RtW2ldKTsKLQkJaWYgKHJjKSB7 Ci0JCQlEUFVfRVJST1IoImZhaWxlZDogY2RtIGh3IG5vdCBhdmFpbGFibGVcbiIpOwotCQkJZ290 byBmYWlsOwotCQl9Ci0JfQotCiAJcmV0dXJuIDA7CiAKIGZhaWw6CkBAIC02NDIsNTUgKzYyNiwx MSBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAogCXJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jZG0oCi0JCXN0cnVjdCBkcHVfcm0gKnJtLAotCQlz dHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnAsCi0JCXVpbnQzMl90IGlkLAotCQllbnVtIGRwdV9od19i bGtfdHlwZSB0eXBlKQotewotCXN0cnVjdCBkcHVfcm1faHdfaXRlciBpdGVyOwotCi0JRFJNX0RF QlVHX0tNUygidHlwZSAlZCBpZCAlZFxuIiwgdHlwZSwgaWQpOwotCi0JZHB1X3JtX2luaXRfaHdf aXRlcigmaXRlciwgMCwgRFBVX0hXX0JMS19DRE0pOwotCXdoaWxlIChfZHB1X3JtX2dldF9od19s b2NrZWQocm0sICZpdGVyKSkgewotCQljb25zdCBzdHJ1Y3QgZHB1X2h3X2NkbSAqY2RtID0gdG9f ZHB1X2h3X2NkbShpdGVyLmJsay0+aHcpOwotCQljb25zdCBzdHJ1Y3QgZHB1X2NkbV9jZmcgKmNh cHMgPSBjZG0tPmNhcHM7Ci0JCWJvb2wgbWF0Y2ggPSBmYWxzZTsKLQotCQlpZiAoUkVTRVJWRURf QllfT1RIRVIoaXRlci5ibGssIHJzdnApKQotCQkJY29udGludWU7Ci0KLQkJaWYgKHR5cGUgPT0g RFBVX0hXX0JMS19JTlRGICYmIGlkICE9IElOVEZfTUFYKQotCQkJbWF0Y2ggPSB0ZXN0X2JpdChp ZCwgJmNhcHMtPmludGZfY29ubmVjdCk7Ci0KLQkJRFJNX0RFQlVHX0tNUygiaXRlcjogdHlwZTol ZCBpZDolZCBlbmM6JWQgY2RtOiVsdSBtYXRjaDolZFxuIiwKLQkJCSAgICAgIGl0ZXIuYmxrLT50 eXBlLCBpdGVyLmJsay0+aWQsIHJzdnAtPmVuY19pZCwKLQkJCSAgICAgIGNhcHMtPmludGZfY29u bmVjdCwgbWF0Y2gpOwotCi0JCWlmICghbWF0Y2gpCi0JCQljb250aW51ZTsKLQotCQl0cmFjZV9k cHVfcm1fcmVzZXJ2ZV9jZG0oaXRlci5ibGstPmlkLCBpdGVyLmJsay0+dHlwZSwKLQkJCQkJIHJz dnAtPmVuY19pZCk7Ci0JCWl0ZXIuYmxrLT5yc3ZwX254dCA9IHJzdnA7Ci0JCWJyZWFrOwotCX0K LQotCWlmICghaXRlci5odykgewotCQlEUFVfRVJST1IoImNvdWxkbid0IHJlc2VydmUgY2RtIGZv ciB0eXBlICVkIGlkICVkXG4iLCB0eXBlLCBpZCk7Ci0JCXJldHVybiAtRU5BVkFJTDsKLQl9Ci0K LQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKIAkJc3Ry dWN0IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2cCwKIAkJdWludDMyX3Qg aWQsCi0JCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGUsCi0JCWJvb2wgbmVlZHNfY2RtKQorCQll bnVtIGRwdV9od19ibGtfdHlwZSB0eXBlKQogewogCXN0cnVjdCBkcHVfcm1faHdfaXRlciBpdGVy OwogCWludCByZXQgPSAwOwpAQCAtNzE4LDkgKzY1OCw2IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9y ZXNlcnZlX2ludGYoCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWlmIChuZWVkc19jZG0pCi0J CXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9jZG0ocm0sIHJzdnAsIGlkLCB0eXBlKTsKLQogCXJldHVy biByZXQ7CiB9CiAKQEAgLTczNyw3ICs2NzQsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2 ZV9pbnRmX3JlbGF0ZWRfaHcoCiAJCQljb250aW51ZTsKIAkJaWQgPSBpICsgSU5URl8wOwogCQly ZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50ZihybSwgcnN2cCwgaWQsCi0JCQkJRFBVX0hXX0JMS19J TlRGLCBod19yZXMtPm5lZWRzX2NkbSk7CisJCQkJRFBVX0hXX0JMS19JTlRGKTsKIAkJaWYgKHJl dCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtNzg0LDcgKzcyMSw2IEBAIHN0YXRpYyBpbnQgX2Rw dV9ybV9tYWtlX25leHRfcnN2cCgKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQkvKiBBc3NpZ24gSU5U RnMgYW5kIGJsa3Mgd2hvc2UgdXNhZ2UgaXMgdGllZCB0byB0aGVtOiBDVEwgJiBDRE0gKi8KIAly ZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCByc3ZwLCAmcmVxcy0+aHdf cmVzKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfdHJhY2UuaAppbmRleCBhZTBjYTUwLi4wYmU1MWRiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaApAQCAtODY4LDEwICs4NjgsNiBAQAogCVRQX3By aW50aygiaWQ6JWQgdHlwZTolZCBlbmNfaWQ6JXUiLCBfX2VudHJ5LT5pZCwgX19lbnRyeS0+dHlw ZSwKIAkJICBfX2VudHJ5LT5lbmNfaWQpCiApOwotREVGSU5FX0VWRU5UKGRwdV9ybV9pdGVyX3Rl bXBsYXRlLCBkcHVfcm1fcmVzZXJ2ZV9jZG0sCi0JVFBfUFJPVE8odWludDMyX3QgaWQsIGVudW0g ZHB1X2h3X2Jsa190eXBlIHR5cGUsIHVpbnQzMl90IGVuY19pZCksCi0JVFBfQVJHUyhpZCwgdHlw ZSwgZW5jX2lkKQotKTsKIERFRklORV9FVkVOVChkcHVfcm1faXRlcl90ZW1wbGF0ZSwgZHB1X3Jt X3Jlc2VydmVfaW50ZiwKIAlUUF9QUk9UTyh1aW50MzJfdCBpZCwgZW51bSBkcHVfaHdfYmxrX3R5 cGUgdHlwZSwgdWludDMyX3QgZW5jX2lkKSwKIAlUUF9BUkdTKGlkLCB0eXBlLCBlbmNfaWQpCi0t IApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhl IENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9q ZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVl ZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K