From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v5 14/19] drm/msm/dpu: remove cdm block support from resource manager Date: Wed, 5 Sep 2018 19:08:23 -0700 Message-ID: <1536199708-23664-15-git-send-email-jsanka@codeaurora.org> References: <1536199708-23664-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: <1536199708-23664-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 , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org U3VwcG9ydCBmb3IgQ0RNIGJsb2NrIGlzIG5vdCBwcmVzZW50IGluIERQVS4gUmVtb3ZlIENETQpo YW5kbGVycyBmcm9tIHJlc291cmNlIG1hbmFnZXIuCgpjaGFuZ2VzIGluIHY0OgoJLSBJbnRyb2R1 Y2VkIGluIHRoZSBzZXJpZXMKY2hhbmdlcyBpbiB2NToKCS0gUmVtb3ZlIGNhdGFsb2cgcmVmZXJl bmNlcyB0byBDRE0gKFNlYW4pCgpTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNh bmthQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlci5oICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5cy5oIHwgICA1IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19jYXRhbG9nLmMgICB8ICAxNCAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfY2F0YWxvZy5oICAgfCAgMTYgLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19jZG0uYyAgICAgICB8IDMyMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5oICAgICAgIHwgMTM5IC0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuYyAgICAgICB8 ICAxNCAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmggICAgICAg fCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21kc3MuaCAgICAg IHwgIDI2ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgICAg ICAgfCAgMTggLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaCAg ICAgICB8ICAxNyAtLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMgICAg ICAgICAgIHwgIDY4ICstLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJh Y2UuaCAgICAgICAgfCAgIDQgLQogMTQgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwg NjQwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19jZG0uYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCmluZGV4IDI2MWZh NzkuLjE5YWI1MjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQpAQCAtNTgsNyArNTgsNiBAQCBtc20teSA6 PSBcCiAJZGlzcC9kcHUxL2RwdV9mb3JtYXRzLm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfYmxrLm8g XAogCWRpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5vIFwKLQlkaXNwL2RwdTEvZHB1X2h3X2NkbS5v IFwKIAlkaXNwL2RwdTEvZHB1X2h3X2N0bC5vIFwKIAlkaXNwL2RwdTEvZHB1X2h3X2ludGVycnVw dHMubyBcCiAJZGlzcC9kcHUxL2RwdV9od19pbnRmLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKaW5kZXggNjBmODA5Zi4uZmYwNjRlMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oCkBAIC0zMiwxNCArMzIsMTIg QEAKIC8qKgogICogRW5jb2RlciBmdW5jdGlvbnMgYW5kIGRhdGEgdHlwZXMKICAqIEBpbnRmczoJ SW50ZXJmYWNlcyB0aGlzIGVuY29kZXIgaXMgdXNpbmcsIElOVEZfTU9ERV9OT05FIGlmIHVudXNl ZAotICogQG5lZWRzX2NkbToJRW5jb2RlciByZXF1ZXN0cyBhIENETSBiYXNlZCBvbiBwaXhlbCBm b3JtYXQgY29udmVyc2lvbiBuZWVkcwogICogQGRpc3BsYXlfbnVtX29mX2hfdGlsZXM6IE51bWJl ciBvZiBob3Jpem9udGFsIHRpbGVzIGluIGNhc2Ugb2Ygc3BsaXQKICAqICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnRlcmZhY2UKICAqIEB0b3BvbG9neTogICBUb3BvbG9neSBvZiB0aGUgZGlz cGxheQogICovCiBzdHJ1Y3QgZHB1X2VuY29kZXJfaHdfcmVzb3VyY2VzIHsKIAllbnVtIGRwdV9p bnRmX21vZGUgaW50ZnNbSU5URl9NQVhdOwotCWJvb2wgbmVlZHNfY2RtOwogCXUzMiBkaXNwbGF5 X251bV9vZl9oX3RpbGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5cy5oCmluZGV4IGIzOTE3ZTAuLmEwMGIyMjIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKQEAgLTIyLDcg KzIyLDYgQEAKICNpbmNsdWRlICJkcHVfaHdfcGluZ3BvbmcuaCIKICNpbmNsdWRlICJkcHVfaHdf Y3RsLmgiCiAjaW5jbHVkZSAiZHB1X2h3X3RvcC5oIgotI2luY2x1ZGUgImRwdV9od19jZG0uaCIK ICNpbmNsdWRlICJkcHVfZW5jb2Rlci5oIgogCiAjZGVmaW5lIERQVV9FTkNPREVSX05BTUVfTUFY CTE2CkBAIC0yMDQsOCArMjAzLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX2lycSB7CiAgKiBAcGFy ZW50X29wczoJCUNhbGxiYWNrcyBleHBvc2VkIGJ5IHRoZSBwYXJlbnQgdG8gdGhlIHBoeXNfZW5j CiAgKiBAaHdfbWRwdG9wOgkJSGFyZHdhcmUgaW50ZXJmYWNlIHRvIHRoZSB0b3AgcmVnaXN0ZXJz CiAgKiBAaHdfY3RsOgkJSGFyZHdhcmUgaW50ZXJmYWNlIHRvIHRoZSBjdGwgcmVnaXN0ZXJzCi0g KiBAaHdfY2RtOgkJSGFyZHdhcmUgaW50ZXJmYWNlIHRvIHRoZSBjZG0gcmVnaXN0ZXJzCi0gKiBA Y2RtX2NmZzoJCUNocm9tYS1kb3duIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24KICAqIEBod19wcDoJ CUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUgcGluZyBwb25nIHJlZ2lzdGVycwogICogQGRwdV9r bXM6CQlQb2ludGVyIHRvIHRoZSBkcHVfa21zIHRvcCBsZXZlbAogICogQGNhY2hlZF9tb2RlOglE Uk0gbW9kZSBjYWNoZWQgYXQgbW9kZV9zZXQgdGltZSwgYWN0ZWQgb24gaW4gZW5hYmxlCkBAIC0y MzUsOCArMjMyLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgewogCWNvbnN0IHN0cnVjdCBk cHVfZW5jb2Rlcl92aXJ0X29wcyAqcGFyZW50X29wczsKIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdf bWRwdG9wOwogCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGw7Ci0Jc3RydWN0IGRwdV9od19jZG0g Kmh3X2NkbTsKLQlzdHJ1Y3QgZHB1X2h3X2NkbV9jZmcgY2RtX2NmZzsKIAlzdHJ1Y3QgZHB1X2h3 X3Bpbmdwb25nICpod19wcDsKIAlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKIAlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSBjYWNoZWRfbW9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IDlmNzE4NjEuLjUxMmFjMDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwpAQCAtMjk1LDE4ICsy OTUsNiBAQAogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIENETSBzdWIgYmxvY2tzIGNvbmZpZwotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1z dGF0aWMgc3RydWN0IGRwdV9jZG1fY2ZnIHNkbTg0NV9jZG1bXSA9IHsKLQl7Ci0JLm5hbWUgPSAi Y2RtXzAiLCAuaWQgPSBDRE1fMCwKLQkuYmFzZSA9IDB4NzkyMDAsIC5sZW4gPSAweDIyNCwKLQku ZmVhdHVyZXMgPSAwLAotCS5pbnRmX2Nvbm5lY3QgPSBCSVQoSU5URl8zKSwKLQl9LAotfTsKLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKICAqIFZCSUYgc3ViIGJsb2NrcyBjb25maWcKICAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVkJJRiBRT1MgcmVt YXAgKi8KQEAgLTQzMCw4ICs0MTgsNiBAQCBzdGF0aWMgdm9pZCBzZG04NDVfY2ZnX2luaXQoc3Ry dWN0IGRwdV9tZHNzX2NmZyAqZHB1X2NmZykKIAkJLm1peGVyID0gc2RtODQ1X2xtLAogCQkucGlu Z3BvbmdfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9wcCksCiAJCS5waW5ncG9uZyA9IHNkbTg0 NV9wcCwKLQkJLmNkbV9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X2NkbSksCi0JCS5jZG0gPSBz ZG04NDVfY2RtLAogCQkuaW50Zl9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X2ludGYpLAogCQku aW50ZiA9IHNkbTg0NV9pbnRmLAogCQkudmJpZl9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X3Zi aWYpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2Nh dGFsb2cuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgK aW5kZXggMmRhODAzYy4uZGMwNjBlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfY2F0YWxvZy5oCkBAIC00OTQsMTggKzQ5NCw2IEBAIHN0cnVjdCBkcHVfcGlu Z3BvbmdfY2ZnICB7CiB9OwogCiAvKioKLSAqIHN0cnVjdCBkcHVfY2RtX2NmZyAtIGluZm9ybWF0 aW9uIG9mIGNocm9tYSBkb3duIGJsb2NrcwotICogQGlkICAgICAgICAgICAgICAgICBlbnVtIGlk ZW50aWZ5aW5nIHRoaXMgYmxvY2sKLSAqIEBiYXNlICAgICAgICAgICAgICAgcmVnaXN0ZXIgb2Zm c2V0IG9mIHRoaXMgYmxvY2sKLSAqIEBmZWF0dXJlcyAgICAgICAgICAgYml0IG1hc2sgaWRlbnRp Znlpbmcgc3ViLWJsb2Nrcy9mZWF0dXJlcwotICogQGludGZfY29ubmVjdCAgICAgICBCaXRtYXNr IG9mIElOVEYgSURzIHRoaXMgQ0RNIGNhbiBjb25uZWN0IHRvCi0gKi8KLXN0cnVjdCBkcHVfY2Rt X2NmZyAgIHsKLQlEUFVfSFdfQkxLX0lORk87Ci0JdW5zaWduZWQgbG9uZyBpbnRmX2Nvbm5lY3Q7 Ci19OwotCi0vKioKICAqIHN0cnVjdCBkcHVfaW50Zl9jZmcgLSBpbmZvcm1hdGlvbiBvZiB0aW1p bmcgZW5naW5lIGJsb2NrcwogICogQGlkICAgICAgICAgICAgICAgICBlbnVtIGlkZW50aWZ5aW5n IHRoaXMgYmxvY2sKICAqIEBiYXNlICAgICAgICAgICAgICAgcmVnaXN0ZXIgb2Zmc2V0IG9mIHRo aXMgYmxvY2sKQEAgLTY5NSw5ICs2ODMsNiBAQCBzdHJ1Y3QgZHB1X21kc3NfY2ZnIHsKIAl1MzIg cGluZ3BvbmdfY291bnQ7CiAJc3RydWN0IGRwdV9waW5ncG9uZ19jZmcgKnBpbmdwb25nOwogCi0J dTMyIGNkbV9jb3VudDsKLQlzdHJ1Y3QgZHB1X2NkbV9jZmcgKmNkbTsKLQogCXUzMiBpbnRmX2Nv dW50OwogCXN0cnVjdCBkcHVfaW50Zl9jZmcgKmludGY7CiAKQEAgLTczMyw3ICs3MTgsNiBAQCBz dHJ1Y3QgZHB1X21kc3NfaHdfY2ZnX2hhbmRsZXIgewogI2RlZmluZSBCTEtfQ1VSU09SKHMpICgo cyktPmN1cnNvcikKICNkZWZpbmUgQkxLX01JWEVSKHMpICgocyktPm1peGVyKQogI2RlZmluZSBC TEtfUElOR1BPTkcocykgKChzKS0+cGluZ3BvbmcpCi0jZGVmaW5lIEJMS19DRE0ocykgKChzKS0+ Y2RtKQogI2RlZmluZSBCTEtfSU5URihzKSAoKHMpLT5pbnRmKQogI2RlZmluZSBCTEtfQUQocykg KChzKS0+YWQpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od19jZG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uYwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0ODc0Yi4uMDAwMDAwMAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmMKKysrIC9kZXYvbnVsbApAQCAt MSwzMjMgKzAsMCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDE1LTIwMTgsIFRoZSBMaW51eCBGb3Vu ZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhbmQKLSAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8KLQotI2luY2x1ZGUg ImRwdV9od19tZHNzLmgiCi0jaW5jbHVkZSAiZHB1X2h3aW8uaCIKLSNpbmNsdWRlICJkcHVfaHdf Y2F0YWxvZy5oIgotI2luY2x1ZGUgImRwdV9od19jZG0uaCIKLSNpbmNsdWRlICJkcHVfZGJnLmgi Ci0jaW5jbHVkZSAiZHB1X2ttcy5oIgotCi0jZGVmaW5lIENETV9DU0NfMTBfT1BNT0RFICAgICAg ICAgICAgICAgICAgMHgwMDAKLSNkZWZpbmUgQ0RNX0NTQ18xMF9CQVNFICAgICAgICAgICAgICAg ICAgICAweDAwNAotCi0jZGVmaW5lIENETV9DRFdOMl9PUF9NT0RFICAgICAgICAgICAgICAgICAg MHgxMDAKLSNkZWZpbmUgQ0RNX0NEV04yX0NMQU1QX09VVCAgICAgICAgICAgICAgICAweDEwNAot I2RlZmluZSBDRE1fQ0RXTjJfUEFSQU1TXzNEXzAgICAgICAgICAgICAgIDB4MTA4Ci0jZGVmaW5l IENETV9DRFdOMl9QQVJBTVNfM0RfMSAgICAgICAgICAgICAgMHgxMEMKLSNkZWZpbmUgQ0RNX0NE V04yX0NPRUZGX0NPU0lURV9IXzAgICAgICAgICAweDExMAotI2RlZmluZSBDRE1fQ0RXTjJfQ09F RkZfQ09TSVRFX0hfMSAgICAgICAgIDB4MTE0Ci0jZGVmaW5lIENETV9DRFdOMl9DT0VGRl9DT1NJ VEVfSF8yICAgICAgICAgMHgxMTgKLSNkZWZpbmUgQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVfSF8w ICAgICAgICAweDExQwotI2RlZmluZSBDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lURV9IXzEgICAgICAg IDB4MTIwCi0jZGVmaW5lIENETV9DRFdOMl9DT0VGRl9PRkZTSVRFX0hfMiAgICAgICAgMHgxMjQK LSNkZWZpbmUgQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9WICAgICAgICAgICAweDEyOAotI2RlZmlu ZSBDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lURV9WICAgICAgICAgIDB4MTJDCi0jZGVmaW5lIENETV9D RFdOMl9PVVRfU0laRSAgICAgICAgICAgICAgICAgMHgxMzAKLQotI2RlZmluZSBDRE1fSERNSV9Q QUNLX09QX01PREUgICAgICAgICAgICAgIDB4MjAwCi0jZGVmaW5lIENETV9DU0NfMTBfTUFUUklY X0NPRUZGXzAgICAgICAgICAgMHgwMDQKLQotLyoqCi0gKiBIb3Jpem9udGFsIGNvZWZmaWNpZW50 cyBmb3IgY29zaXRlIGNocm9tYSBkb3duc2NhbGUKLSAqIHMxMyByZXByZXNlbnRhdGlvbiBvZiBj b2VmZmljaWVudHMKLSAqLwotc3RhdGljIHUzMiBjb3NpdGVfaF9jb2VmZltdID0gezB4MDAwMDAw MTYsIDB4MDAwMDAxY2MsIDB4MDEwMDAwOWV9OwotCi0vKioKLSAqIEhvcml6b250YWwgY29lZmZp Y2llbnRzIGZvciBvZmZzaXRlIGNocm9tYSBkb3duc2NhbGUKLSAqLwotc3RhdGljIHUzMiBvZmZz aXRlX2hfY29lZmZbXSA9IHsweDAwMGIwMDA1LCAweDAxZGIwMWViLCAweDAwZTQwMDQ2fTsKLQot LyoqCi0gKiBWZXJ0aWNhbCBjb2VmZmljaWVudHMgZm9yIGNvc2l0ZSBjaHJvbWEgZG93bnNjYWxl Ci0gKi8KLXN0YXRpYyB1MzIgY29zaXRlX3ZfY29lZmZbXSA9IHsweDAwMDgwMDA0fTsKLS8qKgot ICogVmVydGljYWwgY29lZmZpY2llbnRzIGZvciBvZmZzaXRlIGNocm9tYSBkb3duc2NhbGUKLSAq Lwotc3RhdGljIHUzMiBvZmZzaXRlX3ZfY29lZmZbXSA9IHsweDAwMDYwMDAyfTsKLQotLyogTGlt aXRlZCBSYW5nZSByZ2IyeXV2IGNvZWZmIHdpdGggY2xhbXAgYW5kIGJpYXMgdmFsdWVzIGZvciBD U0MgMTAgbW9kdWxlICovCi1zdGF0aWMgc3RydWN0IGRwdV9jc2NfY2ZnIHJnYjJ5dXZfY2ZnID0g ewotCXsKLQkJMHgwMDgzLCAweDAxMDIsIDB4MDAzMiwKLQkJMHgxZmI1LCAweDFmNmMsIDB4MDBl MSwKLQkJMHgwMGUxLCAweDFmNDUsIDB4MWZkYwotCX0sCi0JeyAweDAwLCAweDAwLCAweDAwIH0s Ci0JeyAweDAwNDAsIDB4MDIwMCwgMHgwMjAwIH0sCi0JeyAweDAwMCwgMHgzZmYsIDB4MDAwLCAw eDNmZiwgMHgwMDAsIDB4M2ZmIH0sCi0JeyAweDA0MCwgMHgzYWMsIDB4MDQwLCAweDNjMCwgMHgw NDAsIDB4M2MwIH0sCi19OwotCi1zdGF0aWMgc3RydWN0IGRwdV9jZG1fY2ZnICpfY2RtX29mZnNl dChlbnVtIGRwdV9jZG0gY2RtLAotCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAotCQl2b2lkIF9f aW9tZW0gKmFkZHIsCi0JCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmIpCi17Ci0JaW50IGk7 Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbS0+Y2RtX2NvdW50OyBpKyspIHsKLQkJaWYgKGNkbSA9PSBt LT5jZG1baV0uaWQpIHsKLQkJCWItPmJhc2Vfb2ZmID0gYWRkcjsKLQkJCWItPmJsa19vZmYgPSBt LT5jZG1baV0uYmFzZTsKLQkJCWItPmxlbmd0aCA9IG0tPmNkbVtpXS5sZW47Ci0JCQliLT5od3Zl cnNpb24gPSBtLT5od3ZlcnNpb247Ci0JCQliLT5sb2dfbWFzayA9IERQVV9EQkdfTUFTS19DRE07 Ci0JCQlyZXR1cm4gJm0tPmNkbVtpXTsKLQkJfQotCX0KLQotCXJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwotfQotCi1zdGF0aWMgaW50IGRwdV9od19jZG1fc2V0dXBfY3NjXzEwYml0KHN0cnVjdCBk cHVfaHdfY2RtICpjdHgsCi0JCXN0cnVjdCBkcHVfY3NjX2NmZyAqZGF0YSkKLXsKLQlkcHVfaHdf Y3NjX3NldHVwKCZjdHgtPmh3LCBDRE1fQ1NDXzEwX01BVFJJWF9DT0VGRl8wLCBkYXRhLCB0cnVl KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGRwdV9od19jZG1fc2V0dXBfY2R3bihz dHJ1Y3QgZHB1X2h3X2NkbSAqY3R4LAotCQlzdHJ1Y3QgZHB1X2h3X2NkbV9jZmcgKmNmZykKLXsK LQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjID0gJmN0eC0+aHc7Ci0JdTMyIG9wbW9kZSA9 IDA7Ci0JdTMyIG91dF9zaXplID0gMDsKLQotCWlmIChjZmctPm91dHB1dF9iaXRfZGVwdGggPT0g Q0RNX0NEV05fT1VUUFVUXzEwQklUKQotCQlvcG1vZGUgJj0gfkJJVCg3KTsKLQllbHNlCi0JCW9w bW9kZSB8PSBCSVQoNyk7Ci0KLQkvKiBFTkFCTEUgRFdOU19IIGJpdCAqLwotCW9wbW9kZSB8PSBC SVQoMSk7Ci0KLQlzd2l0Y2ggKGNmZy0+aF9jZHduX3R5cGUpIHsKLQljYXNlIENETV9DRFdOX0RJ U0FCTEU6Ci0JCS8qIENMRUFSIE1FVEhPRF9IIGZpZWxkICovCi0JCW9wbW9kZSAmPSB+KDB4MTgp OwotCQkvKiBDTEVBUiBEV05TX0ggYml0ICovCi0JCW9wbW9kZSAmPSB+QklUKDEpOwotCQlicmVh azsKLQljYXNlIENETV9DRFdOX1BJWEVMX0RST1A6Ci0JCS8qIENsZWFyIE1FVEhPRF9IIGZpZWxk IChwaXhlbCBkcm9wIGlzIDApICovCi0JCW9wbW9kZSAmPSB+KDB4MTgpOwotCQlicmVhazsKLQlj YXNlIENETV9DRFdOX0FWRzoKLQkJLyogQ2xlYXIgTUVUSE9EX0ggZmllbGQgKEF2ZXJhZ2UgaXMg MHgxKSAqLwotCQlvcG1vZGUgJj0gfigweDE4KTsKLQkJb3Btb2RlIHw9ICgweDEgPDwgMHgzKTsK LQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9DT1NJVEU6Ci0JCS8qIENsZWFyIE1FVEhPRF9IIGZp ZWxkIChBdmVyYWdlIGlzIDB4MikgKi8KLQkJb3Btb2RlICY9IH4oMHgxOCk7Ci0JCW9wbW9kZSB8 PSAoMHgyIDw8IDB4Myk7Ci0JCS8qIENvLXNpdGUgaG9yaXpvbnRhbCBjb2VmZmljaWVudHMgKi8K LQkJRFBVX1JFR19XUklURShjLCBDRE1fQ0RXTjJfQ09FRkZfQ09TSVRFX0hfMCwKLQkJCQljb3Np dGVfaF9jb2VmZlswXSk7Ci0JCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX0NPRUZGX0NPU0lU RV9IXzEsCi0JCQkJY29zaXRlX2hfY29lZmZbMV0pOwotCQlEUFVfUkVHX1dSSVRFKGMsIENETV9D RFdOMl9DT0VGRl9DT1NJVEVfSF8yLAotCQkJCWNvc2l0ZV9oX2NvZWZmWzJdKTsKLQkJYnJlYWs7 Ci0JY2FzZSBDRE1fQ0RXTl9PRkZTSVRFOgotCQkvKiBDbGVhciBNRVRIT0RfSCBmaWVsZCAoQXZl cmFnZSBpcyAweDMpICovCi0JCW9wbW9kZSAmPSB+KDB4MTgpOwotCQlvcG1vZGUgfD0gKDB4MyA8 PCAweDMpOwotCi0JCS8qIE9mZi1zaXRlIGhvcml6b250YWwgY29lZmZpY2llbnRzICovCi0JCURQ VV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVfSF8wLAotCQkJCW9mZnNpdGVf aF9jb2VmZlswXSk7Ci0JCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVf SF8xLAotCQkJCW9mZnNpdGVfaF9jb2VmZlsxXSk7Ci0JCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NE V04yX0NPRUZGX09GRlNJVEVfSF8yLAotCQkJCW9mZnNpdGVfaF9jb2VmZlsyXSk7Ci0JCWJyZWFr OwotCWRlZmF1bHQ6Ci0JCXByX2VycigiJXMgaW52YWxpZCBob3J6IGRvd24gc2FtcGxpbmcgdHlw ZVxuIiwgX19mdW5jX18pOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQkvKiBFTkFCTEUgRFdO U19WIGJpdCAqLwotCW9wbW9kZSB8PSBCSVQoMik7Ci0KLQlzd2l0Y2ggKGNmZy0+dl9jZHduX3R5 cGUpIHsKLQljYXNlIENETV9DRFdOX0RJU0FCTEU6Ci0JCS8qIENMRUFSIE1FVEhPRF9WIGZpZWxk ICovCi0JCW9wbW9kZSAmPSB+KDB4NjApOwotCQkvKiBDTEVBUiBEV05TX1YgYml0ICovCi0JCW9w bW9kZSAmPSB+QklUKDIpOwotCQlicmVhazsKLQljYXNlIENETV9DRFdOX1BJWEVMX0RST1A6Ci0J CS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChwaXhlbCBkcm9wIGlzIDApICovCi0JCW9wbW9kZSAm PSB+KDB4NjApOwotCQlicmVhazsKLQljYXNlIENETV9DRFdOX0FWRzoKLQkJLyogQ2xlYXIgTUVU SE9EX1YgZmllbGQgKEF2ZXJhZ2UgaXMgMHgxKSAqLwotCQlvcG1vZGUgJj0gfigweDYwKTsKLQkJ b3Btb2RlIHw9ICgweDEgPDwgMHg1KTsKLQkJYnJlYWs7Ci0JY2FzZSBDRE1fQ0RXTl9DT1NJVEU6 Ci0JCS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChBdmVyYWdlIGlzIDB4MikgKi8KLQkJb3Btb2Rl ICY9IH4oMHg2MCk7Ci0JCW9wbW9kZSB8PSAoMHgyIDw8IDB4NSk7Ci0JCS8qIENvLXNpdGUgdmVy dGljYWwgY29lZmZpY2llbnRzICovCi0JCURQVV9SRUdfV1JJVEUoYywKLQkJCQlDRE1fQ0RXTjJf Q09FRkZfQ09TSVRFX1YsCi0JCQkJY29zaXRlX3ZfY29lZmZbMF0pOwotCQlicmVhazsKLQljYXNl IENETV9DRFdOX09GRlNJVEU6Ci0JCS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChBdmVyYWdlIGlz IDB4MykgKi8KLQkJb3Btb2RlICY9IH4oMHg2MCk7Ci0JCW9wbW9kZSB8PSAoMHgzIDw8IDB4NSk7 Ci0KLQkJLyogT2ZmLXNpdGUgdmVydGljYWwgY29lZmZpY2llbnRzICovCi0JCURQVV9SRUdfV1JJ VEUoYywKLQkJCQlDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lURV9WLAotCQkJCW9mZnNpdGVfdl9jb2Vm ZlswXSk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWlm IChjZmctPnZfY2R3bl90eXBlIHx8IGNmZy0+aF9jZHduX3R5cGUpCi0JCW9wbW9kZSB8PSBCSVQo MCk7IC8qIEVOIENEV04gbW9kdWxlICovCi0JZWxzZQotCQlvcG1vZGUgJj0gfkJJVCgwKTsKLQot CW91dF9zaXplID0gKGNmZy0+b3V0cHV0X3dpZHRoICYgMHhGRkZGKSB8Ci0JCSgoY2ZnLT5vdXRw dXRfaGVpZ2h0ICYgMHhGRkZGKSA8PCAxNik7Ci0JRFBVX1JFR19XUklURShjLCBDRE1fQ0RXTjJf T1VUX1NJWkUsIG91dF9zaXplKTsKLQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9PUF9NT0RF LCBvcG1vZGUpOwotCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX0NMQU1QX09VVCwKLQkJCSgo MHgzRkYgPDwgMTYpIHwgMHgwKSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBkcHVf aHdfY2RtX2VuYWJsZShzdHJ1Y3QgZHB1X2h3X2NkbSAqY3R4LAotCQlzdHJ1Y3QgZHB1X2h3X2Nk bV9jZmcgKmNkbSkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjID0gJmN0eC0+aHc7 Ci0JY29uc3Qgc3RydWN0IGRwdV9mb3JtYXQgKmZtdCA9IGNkbS0+b3V0cHV0X2ZtdDsKLQlzdHJ1 Y3QgY2RtX291dHB1dF9jZmcgY2RtX2NmZyA9IHsgMCB9OwotCXUzMiBvcG1vZGUgPSAwOwotCXUz MiBjc2MgPSAwOwotCi0JaWYgKCFEUFVfRk9STUFUX0lTX1lVVihmbXQpKQotCQlyZXR1cm4gLUVJ TlZBTDsKLQotCWlmIChjZG0tPm91dHB1dF90eXBlID09IENETV9DRFdOX09VVFBVVF9IRE1JKSB7 Ci0JCWlmIChmbXQtPmNocm9tYV9zYW1wbGUgIT0gRFBVX0NIUk9NQV9IMVYyKQotCQkJcmV0dXJu IC1FSU5WQUw7IC8qdW5zdXBwb3J0ZWQgZm9ybWF0ICovCi0JCW9wbW9kZSA9IEJJVCgwKTsKLQkJ b3Btb2RlIHw9IChmbXQtPmNocm9tYV9zYW1wbGUgPDwgMSk7Ci0JCWNkbV9jZmcuaW50Zl9lbiA9 IHRydWU7Ci0JfQotCi0JY3NjIHw9IEJJVCgyKTsKLQljc2MgJj0gfkJJVCgxKTsKLQljc2MgfD0g QklUKDApOwotCi0JaWYgKGN0eC0+aHdfbWRwICYmIGN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2Rt X291dHB1dCkKLQkJY3R4LT5od19tZHAtPm9wcy5zZXR1cF9jZG1fb3V0cHV0KGN0eC0+aHdfbWRw LCAmY2RtX2NmZyk7Ci0KLQlEUFVfUkVHX1dSSVRFKGMsIENETV9DU0NfMTBfT1BNT0RFLCBjc2Mp OwotCURQVV9SRUdfV1JJVEUoYywgQ0RNX0hETUlfUEFDS19PUF9NT0RFLCBvcG1vZGUpOwotCXJl dHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBkcHVfaHdfY2RtX2Rpc2FibGUoc3RydWN0IGRwdV9o d19jZG0gKmN0eCkKLXsKLQlzdHJ1Y3QgY2RtX291dHB1dF9jZmcgY2RtX2NmZyA9IHsgMCB9Owot Ci0JaWYgKGN0eC0+aHdfbWRwICYmIGN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2RtX291dHB1dCkK LQkJY3R4LT5od19tZHAtPm9wcy5zZXR1cF9jZG1fb3V0cHV0KGN0eC0+aHdfbWRwLCAmY2RtX2Nm Zyk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9zZXR1cF9jZG1fb3BzKHN0cnVjdCBkcHVfaHdfY2RtX29w cyAqb3BzLAotCXVuc2lnbmVkIGxvbmcgZmVhdHVyZXMpCi17Ci0Jb3BzLT5zZXR1cF9jc2NfZGF0 YSA9IGRwdV9od19jZG1fc2V0dXBfY3NjXzEwYml0OwotCW9wcy0+c2V0dXBfY2R3biA9IGRwdV9o d19jZG1fc2V0dXBfY2R3bjsKLQlvcHMtPmVuYWJsZSA9IGRwdV9od19jZG1fZW5hYmxlOwotCW9w cy0+ZGlzYWJsZSA9IGRwdV9od19jZG1fZGlzYWJsZTsKLX0KLQotc3RhdGljIHN0cnVjdCBkcHVf aHdfYmxrX29wcyBkcHVfaHdfb3BzID0gewotCS5zdGFydCA9IE5VTEwsCi0JLnN0b3AgPSBOVUxM LAotfTsKLQotc3RydWN0IGRwdV9od19jZG0gKmRwdV9od19jZG1faW5pdChlbnVtIGRwdV9jZG0g aWR4LAotCQl2b2lkIF9faW9tZW0gKmFkZHIsCi0JCXN0cnVjdCBkcHVfbWRzc19jZmcgKm0sCi0J CXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHApCi17Ci0Jc3RydWN0IGRwdV9od19jZG0gKmM7Ci0J c3RydWN0IGRwdV9jZG1fY2ZnICpjZmc7Ci0JaW50IHJjOwotCi0JYyA9IGt6YWxsb2Moc2l6ZW9m KCpjKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFjKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK LQotCWNmZyA9IF9jZG1fb2Zmc2V0KGlkeCwgbSwgYWRkciwgJmMtPmh3KTsKLQlpZiAoSVNfRVJS X09SX05VTEwoY2ZnKSkgewotCQlrZnJlZShjKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 Ci0JfQotCi0JYy0+aWR4ID0gaWR4OwotCWMtPmNhcHMgPSBjZmc7Ci0JX3NldHVwX2NkbV9vcHMo JmMtPm9wcywgYy0+Y2Fwcy0+ZmVhdHVyZXMpOwotCWMtPmh3X21kcCA9IGh3X21kcDsKLQotCXJj ID0gZHB1X2h3X2Jsa19pbml0KCZjLT5iYXNlLCBEUFVfSFdfQkxLX0NETSwgaWR4LCAmZHB1X2h3 X29wcyk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVk XG4iLCByYyk7Ci0JCWdvdG8gYmxrX2luaXRfZXJyb3I7Ci0JfQotCi0JLyoKLQkgKiBQZXJmb3Jt IGFueSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciB0aGUgY2hyb21hIGRvd24gbW9kdWxlCi0J ICogQHNldHVwIGRlZmF1bHQgY3NjIGNvZWZmaWNpZW50cwotCSAqLwotCWRwdV9od19jZG1fc2V0 dXBfY3NjXzEwYml0KGMsICZyZ2IyeXV2X2NmZyk7Ci0KLQlyZXR1cm4gYzsKLQotYmxrX2luaXRf ZXJyb3I6Ci0Ja3pmcmVlKGMpOwotCi0JcmV0dXJuIEVSUl9QVFIocmMpOwotfQotCi12b2lkIGRw dV9od19jZG1fZGVzdHJveShzdHJ1Y3QgZHB1X2h3X2NkbSAqY2RtKQotewotCWlmIChjZG0pCi0J CWRwdV9od19ibGtfZGVzdHJveSgmY2RtLT5iYXNlKTsKLQlrZnJlZShjZG0pOwotfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1Y2NlYjFlLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19jZG0uaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKiBD b3B5cmlnaHQgKGMpIDIwMTUtMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAotICogb25seSB2ZXJz aW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgot ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotCi0jaWZuZGVmIF9EUFVfSFdfQ0RNX0gKLSNkZWZp bmUgX0RQVV9IV19DRE1fSAotCi0jaW5jbHVkZSAiZHB1X2h3X21kc3MuaCIKLSNpbmNsdWRlICJk cHVfaHdfdG9wLmgiCi0jaW5jbHVkZSAiZHB1X2h3X2Jsay5oIgotCi1zdHJ1Y3QgZHB1X2h3X2Nk bTsKLQotc3RydWN0IGRwdV9od19jZG1fY2ZnIHsKLQl1MzIgb3V0cHV0X3dpZHRoOwotCXUzMiBv dXRwdXRfaGVpZ2h0OwotCXUzMiBvdXRwdXRfYml0X2RlcHRoOwotCXUzMiBoX2Nkd25fdHlwZTsK LQl1MzIgdl9jZHduX3R5cGU7Ci0JY29uc3Qgc3RydWN0IGRwdV9mb3JtYXQgKm91dHB1dF9mbXQ7 Ci0JdTMyIG91dHB1dF90eXBlOwotCWludCBmbGFnczsKLX07Ci0KLWVudW0gZHB1X2h3X2Nkd25f dHlwZSB7Ci0JQ0RNX0NEV05fRElTQUJMRSwKLQlDRE1fQ0RXTl9QSVhFTF9EUk9QLAotCUNETV9D RFdOX0FWRywKLQlDRE1fQ0RXTl9DT1NJVEUsCi0JQ0RNX0NEV05fT0ZGU0lURSwKLX07Ci0KLWVu dW0gZHB1X2h3X2Nkd25fb3V0cHV0X3R5cGUgewotCUNETV9DRFdOX09VVFBVVF9IRE1JLAotCUNE TV9DRFdOX09VVFBVVF9XQiwKLX07Ci0KLWVudW0gZHB1X2h3X2Nkd25fb3V0cHV0X2JpdF9kZXB0 aCB7Ci0JQ0RNX0NEV05fT1VUUFVUXzhCSVQsCi0JQ0RNX0NEV05fT1VUUFVUXzEwQklULAotfTsK LQotLyoqCi0gKiBzdHJ1Y3QgZHB1X2h3X2NkbV9vcHMgOiBJbnRlcmZhY2UgdG8gdGhlIGNocm9t YSBkb3duIEh3IGRyaXZlciBmdW5jdGlvbnMKLSAqICAgICAgICAgICAgICAgICAgICAgICAgIEFz c3VtcHRpb24gaXMgdGhlc2UgZnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIGFmdGVyCi0gKiAgICAg ICAgICAgICAgICAgICAgICAgICBjbG9ja3MgYXJlIGVuYWJsZWQKLSAqICBAc2V0dXBfY3NjOiAg ICAgICAgICAgIFByb2dyYW1zIHRoZSBjc2MgbWF0cml4Ci0gKiAgQHNldHVwX2Nkd246ICAgICAg ICAgICBTZXRzIHVwIHRoZSBjaHJvbWEgZG93biBzdWIgbW9kdWxlCi0gKiAgQGVuYWJsZTogICAg ICAgICAgICAgICBFbmFibGVzIHRoZSBvdXRwdXQgdG8gaW50ZXJmYWNlIGFuZCBwcm9ncmFtcyB0 aGUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBwYWNrZXIKLSAqICBAZGlzYWJs ZTogICAgICAgICAgICAgIFB1dHMgdGhlIGNkbSBpbiBieXBhc3MgbW9kZQotICovCi1zdHJ1Y3Qg ZHB1X2h3X2NkbV9vcHMgewotCS8qKgotCSAqIFByb2dyYW1zIHRoZSBDU0MgbWF0cml4IGZvciBj b252ZXJzaW9uIGZyb20gUkdCIHNwYWNlIHRvIFlVViBzcGFjZSwKLQkgKiBpdCBpcyBvcHRpb25h bCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYXMgdGhpcyBtYXRyaXggaXMgYXV0b21hdGljYWxseQot CSAqIHNldCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHVzZXIgc2hvdWxkIGNhbGwgdGhpcyBpZiBp dCB3YW50cwotCSAqIHRvIHByb2dyYW0gYSBkaWZmZXJlbnQgbWF0cml4IHRoYW4gZGVmYXVsdCBt YXRyaXguCi0JICogQGNkbTogICAgICAgICAgUG9pbnRlciB0byB0aGUgY2hyb21hIGRvd24gY29u dGV4dCBzdHJ1Y3R1cmUKLQkgKiBAZGF0YSAgICAgICAgICBQb2ludGVyIHRvIENTQyBjb25maWd1 cmF0aW9uIGRhdGEKLQkgKiByZXR1cm46ICAgICAgICAwIGlmIHN1Y2Nlc3M7IGVycm9yIGNvZGUg b3RoZXJ3aXNlCi0JICovCi0JaW50ICgqc2V0dXBfY3NjX2RhdGEpKHN0cnVjdCBkcHVfaHdfY2Rt ICpjZG0sCi0JCQlzdHJ1Y3QgZHB1X2NzY19jZmcgKmRhdGEpOwotCi0JLyoqCi0JICogUHJvZ3Jh bXMgdGhlIENocm9tYSBkb3duc2FtcGxlIHBhcnQuCi0JICogQGNkbSAgICAgICAgIFBvaW50ZXIg dG8gY2hyb21hIGRvd24gY29udGV4dAotCSAqLwotCWludCAoKnNldHVwX2Nkd24pKHN0cnVjdCBk cHVfaHdfY2RtICpjZG0sCi0Jc3RydWN0IGRwdV9od19jZG1fY2ZnICpjZmcpOwotCi0JLyoqCi0J ICogRW5hYmxlIHRoZSBDRE0gbW9kdWxlCi0JICogQGNkbSAgICAgICAgIFBvaW50ZXIgdG8gY2hy b21hIGRvd24gY29udGV4dAotCSAqLwotCWludCAoKmVuYWJsZSkoc3RydWN0IGRwdV9od19jZG0g KmNkbSwKLQlzdHJ1Y3QgZHB1X2h3X2NkbV9jZmcgKmNmZyk7Ci0KLQkvKioKLQkgKiBEaXNhYmxl IHRoZSBDRE0gbW9kdWxlCi0JICogQGNkbSAgICAgICAgIFBvaW50ZXIgdG8gY2hyb21hIGRvd24g Y29udGV4dAotCSAqLwotCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgZHB1X2h3X2NkbSAqY2RtKTsK LX07Ci0KLXN0cnVjdCBkcHVfaHdfY2RtIHsKLQlzdHJ1Y3QgZHB1X2h3X2JsayBiYXNlOwotCXN0 cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgaHc7Ci0KLQkvKiBjaHJvbWEgZG93biAqLwotCWNvbnN0 IHN0cnVjdCBkcHVfY2RtX2NmZyAqY2FwczsKLQllbnVtICBkcHVfY2RtICBpZHg7Ci0KLQkvKiBt ZHAgdG9wIGh3IGRyaXZlciAqLwotCXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHA7Ci0KLQkvKiBv cHMgKi8KLQlzdHJ1Y3QgZHB1X2h3X2NkbV9vcHMgb3BzOwotfTsKLQotLyoqCi0gKiBkcHVfaHdf Y2RtIC0gY29udmVydCBiYXNlIG9iamVjdCBkcHVfaHdfYmFzZSB0byBjb250YWluZXIKLSAqIEBo dzogUG9pbnRlciB0byBiYXNlIGhhcmR3YXJlIGJsb2NrCi0gKiByZXR1cm46IFBvaW50ZXIgdG8g aGFyZHdhcmUgYmxvY2sgY29udGFpbmVyCi0gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRwdV9o d19jZG0gKnRvX2RwdV9od19jZG0oc3RydWN0IGRwdV9od19ibGsgKmh3KQotewotCXJldHVybiBj b250YWluZXJfb2YoaHcsIHN0cnVjdCBkcHVfaHdfY2RtLCBiYXNlKTsKLX0KLQotLyoqCi0gKiBk cHVfaHdfY2RtX2luaXQgLSBpbml0aWFsaXplcyB0aGUgY2RtIGh3IGRyaXZlciBvYmplY3QuCi0g KiBzaG91bGQgYmUgY2FsbGVkIG9uY2UgYmVmb3JlIGFjY2Vzc2luZyBldmVyeSBjZG0uCi0gKiBA aWR4OiAgY2RtIGluZGV4IGZvciB3aGljaCBkcml2ZXIgb2JqZWN0IGlzIHJlcXVpcmVkCi0gKiBA YWRkcjogbWFwcGVkIHJlZ2lzdGVyIGlvIGFkZHJlc3Mgb2YgTURQCi0gKiBAbSA6ICAgcG9pbnRl ciB0byBtZHNzIGNhdGFsb2cgZGF0YQotICogQGh3X21kcDogIHBvaW50ZXIgdG8gbWRwIHRvcCBo dyBkcml2ZXIgb2JqZWN0Ci0gKi8KLXN0cnVjdCBkcHVfaHdfY2RtICpkcHVfaHdfY2RtX2luaXQo ZW51bSBkcHVfY2RtIGlkeCwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X21k c3NfY2ZnICptLAotCQlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwKTsKLQotLyoqCi0gKiBkcHVf aHdfY2RtX2Rlc3Ryb3kgLSBkZXN0cm95cyBDRE0gZHJpdmVyIGNvbnRleHQKLSAqIEBjZG06ICAg cG9pbnRlciB0byBDRE0gZHJpdmVyIGNvbnRleHQKLSAqLwotdm9pZCBkcHVfaHdfY2RtX2Rlc3Ry b3koc3RydWN0IGRwdV9od19jZG0gKmNkbSk7Ci0KLSNlbmRpZiAvKl9EUFVfSFdfQ0RNX0ggKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuYwppbmRleCAwNmJlN2Nm Li5iMzk0YTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY3RsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2N0bC5j CkBAIC0yMjQsMTkgKzIyNCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRwdV9od19jdGxfZ2V0X2Jp dG1hc2tfaW50ZihzdHJ1Y3QgZHB1X2h3X2N0bCAqY3R4LAogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgaW5saW5lIGludCBkcHVfaHdfY3RsX2dldF9iaXRtYXNrX2NkbShzdHJ1Y3QgZHB1X2h3X2N0 bCAqY3R4LAotCQl1MzIgKmZsdXNoYml0cywgZW51bSBkcHVfY2RtIGNkbSkKLXsKLQlzd2l0Y2gg KGNkbSkgewotCWNhc2UgQ0RNXzA6Ci0JCSpmbHVzaGJpdHMgfD0gQklUKDI2KTsKLQkJYnJlYWs7 Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCXJldHVybiAwOwotfQotCiBzdGF0 aWMgdTMyIGRwdV9od19jdGxfcG9sbF9yZXNldF9zdGF0dXMoc3RydWN0IGRwdV9od19jdGwgKmN0 eCwgdTMyIHRpbWVvdXRfdXMpCiB7CiAJc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYyA9ICZj dHgtPmh3OwpAQCAtNDg1LDcgKzQ3Miw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9jdGxfb3BzKHN0 cnVjdCBkcHVfaHdfY3RsX29wcyAqb3BzLAogCW9wcy0+Z2V0X2JpdG1hc2tfc3NwcCA9IGRwdV9o d19jdGxfZ2V0X2JpdG1hc2tfc3NwcDsKIAlvcHMtPmdldF9iaXRtYXNrX21peGVyID0gZHB1X2h3 X2N0bF9nZXRfYml0bWFza19taXhlcjsKIAlvcHMtPmdldF9iaXRtYXNrX2ludGYgPSBkcHVfaHdf Y3RsX2dldF9iaXRtYXNrX2ludGY7Ci0Jb3BzLT5nZXRfYml0bWFza19jZG0gPSBkcHVfaHdfY3Rs X2dldF9iaXRtYXNrX2NkbTsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHB1X2h3X2Jsa19vcHMgZHB1 X2h3X29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od19jdGwuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuaApp bmRleCBjNjZhNzFmLi42ZjMxM2ZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfY3RsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2N0bC5oCkBAIC0xNDIsMTAgKzE0Miw2IEBAIHN0cnVjdCBkcHVfaHdfY3RsX29wcyB7 CiAJCXUzMiAqZmx1c2hiaXRzLAogCQllbnVtIGRwdV9pbnRmIGJsayk7CiAKLQlpbnQgKCpnZXRf Yml0bWFza19jZG0pKHN0cnVjdCBkcHVfaHdfY3RsICpjdHgsCi0JCXUzMiAqZmx1c2hiaXRzLAot CQllbnVtIGRwdV9jZG0gYmxrKTsKLQogCS8qKgogCSAqIFNldCBhbGwgYmxlbmQgc3RhZ2VzIHRv IGRpc2FibGVkCiAJICogQGN0eCAgICAgICA6IGN0bCBwYXRoIGN0eCBwb2ludGVyCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21kc3MuaAppbmRleCAxNjQ2ODEyLi42MmNm MTI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRz cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmgKQEAg LTEwMCw3ICsxMDAsNiBAQCBlbnVtIGRwdV9od19ibGtfdHlwZSB7CiAJRFBVX0hXX0JMS19TU1BQ LAogCURQVV9IV19CTEtfTE0sCiAJRFBVX0hXX0JMS19DVEwsCi0JRFBVX0hXX0JMS19DRE0sCiAJ RFBVX0hXX0JMS19QSU5HUE9ORywKIAlEUFVfSFdfQkxLX0lOVEYsCiAJRFBVX0hXX0JMS19XQiwK QEAgLTE4MiwxMiArMTgxLDYgQEAgZW51bSBkcHVfY3RsIHsKIAlDVExfTUFYCiB9OwogCi1lbnVt IGRwdV9jZG0gewotCUNETV8wID0gMSwKLQlDRE1fMSwKLQlDRE1fTUFYCi19OwotCiBlbnVtIGRw dV9waW5ncG9uZyB7CiAJUElOR1BPTkdfMCA9IDEsCiAJUElOR1BPTkdfMSwKQEAgLTQ0NCwxNSAr NDM3LDE0IEBAIHN0cnVjdCBkcHVfbWRzc19jb2xvciB7CiAgKiBEZWZpbmUgYml0IG1hc2tzIGZv ciBoL3cgbG9nZ2luZy4KICAqLwogI2RlZmluZSBEUFVfREJHX01BU0tfTk9ORSAgICAgKDEgPDwg MCkKLSNkZWZpbmUgRFBVX0RCR19NQVNLX0NETSAgICAgICgxIDw8IDEpCi0jZGVmaW5lIERQVV9E QkdfTUFTS19JTlRGICAgICAoMSA8PCAyKQotI2RlZmluZSBEUFVfREJHX01BU0tfTE0gICAgICAg KDEgPDwgMykKLSNkZWZpbmUgRFBVX0RCR19NQVNLX0NUTCAgICAgICgxIDw8IDQpCi0jZGVmaW5l IERQVV9EQkdfTUFTS19QSU5HUE9ORyAoMSA8PCA1KQotI2RlZmluZSBEUFVfREJHX01BU0tfU1NQ UCAgICAgKDEgPDwgNikKLSNkZWZpbmUgRFBVX0RCR19NQVNLX1dCICAgICAgICgxIDw8IDcpCi0j ZGVmaW5lIERQVV9EQkdfTUFTS19UT1AgICAgICAoMSA8PCA4KQotI2RlZmluZSBEUFVfREJHX01B U0tfVkJJRiAgICAgKDEgPDwgOSkKLSNkZWZpbmUgRFBVX0RCR19NQVNLX1JPVCAgICAgICgxIDw8 IDEwKQorI2RlZmluZSBEUFVfREJHX01BU0tfSU5URiAgICAgKDEgPDwgMSkKKyNkZWZpbmUgRFBV X0RCR19NQVNLX0xNICAgICAgICgxIDw8IDIpCisjZGVmaW5lIERQVV9EQkdfTUFTS19DVEwgICAg ICAoMSA8PCAzKQorI2RlZmluZSBEUFVfREJHX01BU0tfUElOR1BPTkcgKDEgPDwgNCkKKyNkZWZp bmUgRFBVX0RCR19NQVNLX1NTUFAgICAgICgxIDw8IDUpCisjZGVmaW5lIERQVV9EQkdfTUFTS19X QiAgICAgICAoMSA8PCA2KQorI2RlZmluZSBEUFVfREJHX01BU0tfVE9QICAgICAgKDEgPDwgNykK KyNkZWZpbmUgRFBVX0RCR19NQVNLX1ZCSUYgICAgICgxIDw8IDgpCisjZGVmaW5lIERQVV9EQkdf TUFTS19ST1QgICAgICAoMSA8PCA5KQogCiAjZW5kaWYgIC8qIF9EUFVfSFdfTURTU19IICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKaW5kZXggZGIyNzk4ZS4u Yjg3ODEyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X3RvcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYwpA QCAtOTgsMjMgKzk4LDYgQEAgc3RhdGljIHZvaWQgZHB1X2h3X3NldHVwX3NwbGl0X3BpcGUoc3Ry dWN0IGRwdV9od19tZHAgKm1kcCwKIAlEUFVfUkVHX1dSSVRFKGMsIFNQTElUX0RJU1BMQVlfRU4s IGNmZy0+ZW4gJiAweDEpOwogfQogCi1zdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfY2RtX291dHB1 dChzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAotCQlzdHJ1Y3QgY2RtX291dHB1dF9jZmcgKmNmZykK LXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjOwotCXUzMiBvdXRfY3RsID0gMDsKLQot CWlmICghbWRwIHx8ICFjZmcpCi0JCXJldHVybjsKLQotCWMgPSAmbWRwLT5odzsKLQotCWlmIChj ZmctPmludGZfZW4pCi0JCW91dF9jdGwgfD0gQklUKDE5KTsKLQotCURQVV9SRUdfV1JJVEUoYywg TURQX09VVF9DVExfMCwgb3V0X2N0bCk7Ci19Ci0KIHN0YXRpYyBib29sIGRwdV9od19zZXR1cF9j bGtfZm9yY2VfY3RybChzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCQllbnVtIGRwdV9jbGtfY3Ry bF90eXBlIGNsa19jdHJsLCBib29sIGVuYWJsZSkKIHsKQEAgLTMwNyw3ICsyOTAsNiBAQCBzdGF0 aWMgdm9pZCBfc2V0dXBfbWRwX29wcyhzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgKm9wcywKIAkJdW5z aWduZWQgbG9uZyBjYXApCiB7CiAJb3BzLT5zZXR1cF9zcGxpdF9waXBlID0gZHB1X2h3X3NldHVw X3NwbGl0X3BpcGU7Ci0Jb3BzLT5zZXR1cF9jZG1fb3V0cHV0ID0gZHB1X2h3X3NldHVwX2NkbV9v dXRwdXQ7CiAJb3BzLT5zZXR1cF9jbGtfZm9yY2VfY3RybCA9IGRwdV9od19zZXR1cF9jbGtfZm9y Y2VfY3RybDsKIAlvcHMtPmdldF9kYW5nZXJfc3RhdHVzID0gZHB1X2h3X2dldF9kYW5nZXJfc3Rh dHVzOwogCW9wcy0+c2V0dXBfdnN5bmNfc291cmNlID0gZHB1X2h3X3NldHVwX3ZzeW5jX3NvdXJj ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3Au aCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaAppbmRleCA4OTk5 MjVhLi4xOTJlMzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfdG9wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Rv cC5oCkBAIC01MiwxNCArNTIsNiBAQCBzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgewogfTsKIAogLyoq Ci0gKiBzdHJ1Y3QgY2RtX291dHB1dF9jZmc6IG91dHB1dCBjb25maWd1cmF0aW9uIGZvciBjZG0K LSAqIEBpbnRmX2VuICAgOiBlbmFibGUvZGlzYWJsZSBpbnRlcmZhY2Ugb3V0cHV0Ci0gKi8KLXN0 cnVjdCBjZG1fb3V0cHV0X2NmZyB7Ci0JYm9vbCBpbnRmX2VuOwotfTsKLQotLyoqCiAgKiBzdHJ1 Y3QgZHB1X2Rhbmdlcl9zYWZlX3N0YXR1czogZGFuZ2VyIGFuZCBzYWZlIHN0YXR1cyBzaWduYWxz CiAgKiBAbWRwOiB0b3AgbGV2ZWwgc3RhdHVzCiAgKiBAc3NwcDogc291cmNlIHBpcGUgc3RhdHVz CkBAIC04OSw3ICs4MSw2IEBAIHN0cnVjdCBkcHVfdnN5bmNfc291cmNlX2NmZyB7CiAgKiBBc3N1 bXB0aW9uIGlzIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCBhZnRlciBjbG9ja3MgYXJl IGVuYWJsZWQuCiAgKiBAc2V0dXBfc3BsaXRfcGlwZSA6IFByb2dyYW1zIHRoZSBwaXBlIGNvbnRy b2wgcmVnaXN0ZXJzCiAgKiBAc2V0dXBfcHBfc3BsaXQgOiBQcm9ncmFtcyB0aGUgcHAgc3BsaXQg Y29udHJvbCByZWdpc3RlcnMKLSAqIEBzZXR1cF9jZG1fb3V0cHV0IDogcHJvZ3JhbXMgY2RtIGNv bnRyb2wKICAqIEBzZXR1cF90cmFmZmljX3NoYXBlciA6IHByb2dyYW1zIHRyYWZmaWMgc2hhcGVy IGNvbnRyb2wKICAqLwogc3RydWN0IGRwdV9od19tZHBfb3BzIHsKQEAgLTEwMiwxNCArOTMsNiBA QCBzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgewogCQkJc3RydWN0IHNwbGl0X3BpcGVfY2ZnICpwKTsK IAogCS8qKgotCSAqIHNldHVwX2NkbV9vdXRwdXQoKSA6IFNldHVwIHNlbGVjdGlvbiBjb250cm9s IG9mIHRoZSBjZG0gZGF0YSBwYXRoCi0JICogQG1kcCAgOiBtZHAgdG9wIGNvbnRleHQgZHJpdmVy Ci0JICogQGNmZyAgOiBjZG0gb3V0cHV0IGNvbmZpZ3VyYXRpb24KLQkgKi8KLQl2b2lkICgqc2V0 dXBfY2RtX291dHB1dCkoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKLQkJCXN0cnVjdCBjZG1fb3V0 cHV0X2NmZyAqY2ZnKTsKLQotCS8qKgogCSAqIHNldHVwX3RyYWZmaWNfc2hhcGVyKCkgOiBTZXR1 cCB0cmFmZmljIHNoYXBlciBjb250cm9sCiAJICogQG1kcCAgOiBtZHAgdG9wIGNvbnRleHQgZHJp dmVyCiAJICogQGNmZyAgOiB0cmFmZmljIHNoYXBlciBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDBiNDMxOTMuLmUyZTY0ZmUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBAIC0xNiw3ICsxNiw2IEBACiAjaW5jbHVk ZSAiZHB1X2ttcy5oIgogI2luY2x1ZGUgImRwdV9od19sbS5oIgogI2luY2x1ZGUgImRwdV9od19j dGwuaCIKLSNpbmNsdWRlICJkcHVfaHdfY2RtLmgiCiAjaW5jbHVkZSAiZHB1X2h3X3Bpbmdwb25n LmgiCiAjaW5jbHVkZSAiZHB1X2h3X2ludGYuaCIKICNpbmNsdWRlICJkcHVfZW5jb2Rlci5oIgpA QCAtMjI4LDkgKzIyNyw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfcm1faHdfZGVzdHJveShlbnVtIGRw dV9od19ibGtfdHlwZSB0eXBlLCB2b2lkICpodykKIAljYXNlIERQVV9IV19CTEtfQ1RMOgogCQlk cHVfaHdfY3RsX2Rlc3Ryb3koaHcpOwogCQlicmVhazsKLQljYXNlIERQVV9IV19CTEtfQ0RNOgot CQlkcHVfaHdfY2RtX2Rlc3Ryb3koaHcpOwotCQlicmVhazsKIAljYXNlIERQVV9IV19CTEtfUElO R1BPTkc6CiAJCWRwdV9od19waW5ncG9uZ19kZXN0cm95KGh3KTsKIAkJYnJlYWs7CkBAIC0zMDQs OSArMzAwLDYgQEAgc3RhdGljIGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJY2FzZSBEUFVf SFdfQkxLX0NUTDoKIAkJaHcgPSBkcHVfaHdfY3RsX2luaXQoaWQsIG1taW8sIGNhdCk7CiAJCWJy ZWFrOwotCWNhc2UgRFBVX0hXX0JMS19DRE06Ci0JCWh3ID0gZHB1X2h3X2NkbV9pbml0KGlkLCBt bWlvLCBjYXQsIGh3X21kcCk7Ci0JCWJyZWFrOwogCWNhc2UgRFBVX0hXX0JMS19QSU5HUE9ORzoK IAkJaHcgPSBkcHVfaHdfcGluZ3BvbmdfaW5pdChpZCwgbW1pbywgY2F0KTsKIAkJYnJlYWs7CkBA IC00MzcsMTUgKzQzMCw2IEBAIGludCBkcHVfcm1faW5pdChzdHJ1Y3QgZHB1X3JtICpybSwKIAkJ fQogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBjYXQtPmNkbV9jb3VudDsgaSsrKSB7Ci0JCXJjID0g X2RwdV9ybV9od19ibGtfY3JlYXRlKHJtLCBjYXQsIG1taW8sIERQVV9IV19CTEtfQ0RNLAotCQkJ CWNhdC0+Y2RtW2ldLmlkLCAmY2F0LT5jZG1baV0pOwotCQlpZiAocmMpIHsKLQkJCURQVV9FUlJP UigiZmFpbGVkOiBjZG0gaHcgbm90IGF2YWlsYWJsZVxuIik7Ci0JCQlnb3RvIGZhaWw7Ci0JCX0K LQl9Ci0KIAlyZXR1cm4gMDsKIAogZmFpbDoKQEAgLTY0Miw1NSArNjI2LDExIEBAIHN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX2Rw dV9ybV9yZXNlcnZlX2NkbSgKLQkJc3RydWN0IGRwdV9ybSAqcm0sCi0JCXN0cnVjdCBkcHVfcm1f cnN2cCAqcnN2cCwKLQkJdWludDMyX3QgaWQsCi0JCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGUp Ci17Ci0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7Ci0KLQlEUk1fREVCVUdfS01TKCJ0eXBl ICVkIGlkICVkXG4iLCB0eXBlLCBpZCk7Ci0KLQlkcHVfcm1faW5pdF9od19pdGVyKCZpdGVyLCAw LCBEUFVfSFdfQkxLX0NETSk7Ci0Jd2hpbGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tlZChybSwgJml0 ZXIpKSB7Ci0JCWNvbnN0IHN0cnVjdCBkcHVfaHdfY2RtICpjZG0gPSB0b19kcHVfaHdfY2RtKGl0 ZXIuYmxrLT5odyk7Ci0JCWNvbnN0IHN0cnVjdCBkcHVfY2RtX2NmZyAqY2FwcyA9IGNkbS0+Y2Fw czsKLQkJYm9vbCBtYXRjaCA9IGZhbHNlOwotCi0JCWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVy LmJsaywgcnN2cCkpCi0JCQljb250aW51ZTsKLQotCQlpZiAodHlwZSA9PSBEUFVfSFdfQkxLX0lO VEYgJiYgaWQgIT0gSU5URl9NQVgpCi0JCQltYXRjaCA9IHRlc3RfYml0KGlkLCAmY2Fwcy0+aW50 Zl9jb25uZWN0KTsKLQotCQlEUk1fREVCVUdfS01TKCJpdGVyOiB0eXBlOiVkIGlkOiVkIGVuYzol ZCBjZG06JWx1IG1hdGNoOiVkXG4iLAotCQkJICAgICAgaXRlci5ibGstPnR5cGUsIGl0ZXIuYmxr LT5pZCwgcnN2cC0+ZW5jX2lkLAotCQkJICAgICAgY2Fwcy0+aW50Zl9jb25uZWN0LCBtYXRjaCk7 Ci0KLQkJaWYgKCFtYXRjaCkKLQkJCWNvbnRpbnVlOwotCi0JCXRyYWNlX2RwdV9ybV9yZXNlcnZl X2NkbShpdGVyLmJsay0+aWQsIGl0ZXIuYmxrLT50eXBlLAotCQkJCQkgcnN2cC0+ZW5jX2lkKTsK LQkJaXRlci5ibGstPnJzdnBfbnh0ID0gcnN2cDsKLQkJYnJlYWs7Ci0JfQotCi0JaWYgKCFpdGVy Lmh3KSB7Ci0JCURQVV9FUlJPUigiY291bGRuJ3QgcmVzZXJ2ZSBjZG0gZm9yIHR5cGUgJWQgaWQg JWRcbiIsIHR5cGUsIGlkKTsKLQkJcmV0dXJuIC1FTkFWQUlMOwotCX0KLQotCXJldHVybiAwOwot fQotCiBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAogCQlzdHJ1Y3QgZHB1X3JtICpy bSwKIAkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwLAogCQl1aW50MzJfdCBpZCwKLQkJZW51bSBk cHVfaHdfYmxrX3R5cGUgdHlwZSwKLQkJYm9vbCBuZWVkc19jZG0pCisJCWVudW0gZHB1X2h3X2Js a190eXBlIHR5cGUpCiB7CiAJc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7CiAJaW50IHJldCA9 IDA7CkBAIC03MTgsOSArNjU4LDYgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigK IAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYgKG5lZWRzX2NkbSkKLQkJcmV0ID0gX2RwdV9y bV9yZXNlcnZlX2NkbShybSwgcnN2cCwgaWQsIHR5cGUpOwotCiAJcmV0dXJuIHJldDsKIH0KIApA QCAtNzM3LDcgKzY3NCw3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRl ZF9odygKIAkJCWNvbnRpbnVlOwogCQlpZCA9IGkgKyBJTlRGXzA7CiAJCXJldCA9IF9kcHVfcm1f cmVzZXJ2ZV9pbnRmKHJtLCByc3ZwLCBpZCwKLQkJCQlEUFVfSFdfQkxLX0lOVEYsIGh3X3Jlcy0+ bmVlZHNfY2RtKTsKKwkJCQlEUFVfSFdfQkxLX0lOVEYpOwogCQlpZiAocmV0KQogCQkJcmV0dXJu IHJldDsKIAl9CkBAIC03ODQsNyArNzIxLDYgQEAgc3RhdGljIGludCBfZHB1X3JtX21ha2VfbmV4 dF9yc3ZwKAogCQlyZXR1cm4gcmV0OwogCX0KIAotCS8qIEFzc2lnbiBJTlRGcyBhbmQgYmxrcyB3 aG9zZSB1c2FnZSBpcyB0aWVkIHRvIHRoZW06IENUTCAmIENETSAqLwogCXJldCA9IF9kcHVfcm1f cmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcocm0sIHJzdnAsICZyZXFzLT5od19yZXMpOwogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfdHJhY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV90cmFj ZS5oCmluZGV4IGFlMGNhNTAuLjBiZTUxZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV90cmFjZS5oCkBAIC04NjgsMTAgKzg2OCw2IEBACiAJVFBfcHJpbnRrKCJpZDolZCB0 eXBlOiVkIGVuY19pZDoldSIsIF9fZW50cnktPmlkLCBfX2VudHJ5LT50eXBlLAogCQkgIF9fZW50 cnktPmVuY19pZCkKICk7Ci1ERUZJTkVfRVZFTlQoZHB1X3JtX2l0ZXJfdGVtcGxhdGUsIGRwdV9y bV9yZXNlcnZlX2NkbSwKLQlUUF9QUk9UTyh1aW50MzJfdCBpZCwgZW51bSBkcHVfaHdfYmxrX3R5 cGUgdHlwZSwgdWludDMyX3QgZW5jX2lkKSwKLQlUUF9BUkdTKGlkLCB0eXBlLCBlbmNfaWQpCi0p OwogREVGSU5FX0VWRU5UKGRwdV9ybV9pdGVyX3RlbXBsYXRlLCBkcHVfcm1fcmVzZXJ2ZV9pbnRm LAogCVRQX1BST1RPKHVpbnQzMl90IGlkLCBlbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlLCB1aW50 MzJfdCBlbmNfaWQpLAogCVRQX0FSR1MoaWQsIHR5cGUsIGVuY19pZCkKLS0gClRoZSBRdWFsY29t bSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEg Rm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5n IGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=