From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v2 1/7] drm/msm/dpu: move hw_inf encoder baseclass Date: Wed, 13 Feb 2019 17:19:10 -0800 Message-ID: <1550107156-17625-2-git-send-email-jsanka@codeaurora.org> References: <1550107156-17625-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: <1550107156-17625-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 Qm90aCB2aWRlbyBhbmQgY29tbWFuZCBwaHlzaWNhbCBlbmNvZGVycyB3aWxsIGhhdmUKYSBodyBp bnRlcmZhY2UgYXNzaWduZWQgdG8gaXQuIFNvIHRoZXJlIGlzIHJlYWxseSBubwpuZWVkIHRvIHRy YWNrIHRoZSBodyBibG9jayBpbiBzcGVjaWZpYyBlbmNvZGVyIHN1YmNsYXNzLgoKU2lnbmVkLW9m Zi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmggICB8ICAgNCArLQog Li4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jICAgfCAxMjUg KysrKysrKysrLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyks IDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9lbmNvZGVyX3BoeXMuaAppbmRleCA0NGU2ZjhiNi4uYWNkNTk1NiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaApAQCAtMjAxLDYgKzIw MSw3IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEgewogICogQGh3X21kcHRvcDoJCUhhcmR3YXJl IGludGVyZmFjZSB0byB0aGUgdG9wIHJlZ2lzdGVycwogICogQGh3X2N0bDoJCUhhcmR3YXJlIGlu dGVyZmFjZSB0byB0aGUgY3RsIHJlZ2lzdGVycwogICogQGh3X3BwOgkJSGFyZHdhcmUgaW50ZXJm YWNlIHRvIHRoZSBwaW5nIHBvbmcgcmVnaXN0ZXJzCisgKiBAaHdfaW50ZjoJCUhhcmR3YXJlIGlu dGVyZmFjZSB0byB0aGUgaW50ZiByZWdpc3RlcnMKICAqIEBkcHVfa21zOgkJUG9pbnRlciB0byB0 aGUgZHB1X2ttcyB0b3AgbGV2ZWwKICAqIEBjYWNoZWRfbW9kZToJRFJNIG1vZGUgY2FjaGVkIGF0 IG1vZGVfc2V0IHRpbWUsIGFjdGVkIG9uIGluIGVuYWJsZQogICogQGVuYWJsZWQ6CQlXaGV0aGVy IHRoZSBlbmNvZGVyIGhhcyBlbmFibGVkIGFuZCBydW5uaW5nIGEgbW9kZQpAQCAtMjI5LDYgKzIz MCw3IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzIHsKIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdf bWRwdG9wOwogCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGw7CiAJc3RydWN0IGRwdV9od19waW5n cG9uZyAqaHdfcHA7CisJc3RydWN0IGRwdV9od19pbnRmICpod19pbnRmOwogCXN0cnVjdCBkcHVf a21zICpkcHVfa21zOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGNhY2hlZF9tb2RlOwogCWVu dW0gZHB1X2VuY19zcGxpdF9yb2xlIHNwbGl0X3JvbGU7CkBAIC0yNTUsMTIgKzI1NywxMCBAQCBz dGF0aWMgaW5saW5lIGludCBkcHVfZW5jb2Rlcl9waHlzX2luY19wZW5kaW5nKHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzKQogICogc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkIC0gc3Vi LWNsYXNzIG9mIGRwdV9lbmNvZGVyX3BoeXMgdG8gaGFuZGxlIHZpZGVvCiAgKgltb2RlIHNwZWNp ZmljIG9wZXJhdGlvbnMKICAqIEBiYXNlOglCYXNlY2xhc3MgcGh5c2ljYWwgZW5jb2RlciBzdHJ1 Y3R1cmUKLSAqIEBod19pbnRmOglIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIGludGYgcmVnaXN0 ZXJzCiAgKiBAdGltaW5nX3BhcmFtczogQ3VycmVudCB0aW1pbmcgcGFyYW1ldGVyCiAgKi8KIHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgYmFz ZTsKLQlzdHJ1Y3QgZHB1X2h3X2ludGYgKmh3X2ludGY7CiAJc3RydWN0IGludGZfdGltaW5nX3Bh cmFtcyB0aW1pbmdfcGFyYW1zOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKaW5kZXggYWNkYWI1YjAuLmUzMjYzOTUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3Bo eXNfdmlkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c192aWQuYwpAQCAtMTgsMTQgKzE4LDE0IEBACiAjaW5jbHVkZSAiZHB1X3RyYWNlLmgiCiAK ICNkZWZpbmUgRFBVX0RFQlVHX1ZJREVOQyhlLCBmbXQsIC4uLikgRFBVX0RFQlVHKCJlbmMlZCBp bnRmJWQgIiBmbXQsIFwKLQkJKGUpICYmIChlKS0+YmFzZS5wYXJlbnQgPyBcCi0JCShlKS0+YmFz ZS5wYXJlbnQtPmJhc2UuaWQgOiAtMSwgXAorCQkoZSkgJiYgKGUpLT5wYXJlbnQgPyBcCisJCShl KS0+cGFyZW50LT5iYXNlLmlkIDogLTEsIFwKIAkJKGUpICYmIChlKS0+aHdfaW50ZiA/IFwKIAkJ KGUpLT5od19pbnRmLT5pZHggLSBJTlRGXzAgOiAtMSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmlu ZSBEUFVfRVJST1JfVklERU5DKGUsIGZtdCwgLi4uKSBEUFVfRVJST1IoImVuYyVkIGludGYlZCAi IGZtdCwgXAotCQkoZSkgJiYgKGUpLT5iYXNlLnBhcmVudCA/IFwKLQkJKGUpLT5iYXNlLnBhcmVu dC0+YmFzZS5pZCA6IC0xLCBcCisJCShlKSAmJiAoZSktPnBhcmVudCA/IFwKKwkJKGUpLT5wYXJl bnQtPmJhc2UuaWQgOiAtMSwgXAogCQkoZSkgJiYgKGUpLT5od19pbnRmID8gXAogCQkoZSktPmh3 X2ludGYtPmlkeCAtIElOVEZfMCA6IC0xLCAjI19fVkFfQVJHU19fKQogCkBAIC00NCw3ICs0NCw3 IEBAIHN0YXRpYyBib29sIGRwdV9lbmNvZGVyX3BoeXNfdmlkX2lzX21hc3RlcigKIH0KIAogc3Rh dGljIHZvaWQgZHJtX21vZGVfdG9faW50Zl90aW1pbmdfcGFyYW1zKAotCQljb25zdCBzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmMsCisJCWNvbnN0IHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYywKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUs CiAJCXN0cnVjdCBpbnRmX3RpbWluZ19wYXJhbXMgKnRpbWluZykKIHsKQEAgLTkyLDcgKzkyLDcg QEAgc3RhdGljIHZvaWQgZHJtX21vZGVfdG9faW50Zl90aW1pbmdfcGFyYW1zKAogCXRpbWluZy0+ aHN5bmNfc2tldyA9IG1vZGUtPmhza2V3OwogCiAJLyogRFNJIGNvbnRyb2xsZXIgY2Fubm90IGhh bmRsZSBhY3RpdmUtbG93IHN5bmMgc2lnbmFscy4gKi8KLQlpZiAodmlkX2VuYy0+aHdfaW50Zi0+ Y2FwLT50eXBlID09IElOVEZfRFNJKSB7CisJaWYgKHBoeXNfZW5jLT5od19pbnRmLT5jYXAtPnR5 cGUgPT0gSU5URl9EU0kpIHsKIAkJdGltaW5nLT5oc3luY19wb2xhcml0eSA9IDA7CiAJCXRpbWlu Zy0+dnN5bmNfcG9sYXJpdHkgPSAwOwogCX0KQEAgLTE0MywxMSArMTQzLDExIEBAIHN0YXRpYyB1 MzIgZ2V0X3ZlcnRpY2FsX3RvdGFsKGNvbnN0IHN0cnVjdCBpbnRmX3RpbWluZ19wYXJhbXMgKnRp bWluZykKICAqIGxpbmVzIGJhc2VkIG9uIHRoZSBjaGlwIHdvcnN0IGNhc2UgbGF0ZW5jaWVzLgog ICovCiBzdGF0aWMgdTMyIHByb2dyYW1tYWJsZV9mZXRjaF9nZXRfbnVtX2xpbmVzKAotCQlzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmMsCisJCXN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzX2VuYywKIAkJY29uc3Qgc3RydWN0IGludGZfdGltaW5nX3BhcmFtcyAqdGltaW5n KQogewogCXUzMiB3b3JzdF9jYXNlX25lZWRlZF9saW5lcyA9Ci0JICAgIHZpZF9lbmMtPmh3X2lu dGYtPmNhcC0+cHJvZ19mZXRjaF9saW5lc193b3JzdF9jYXNlOworCSAgICBwaHlzX2VuYy0+aHdf aW50Zi0+Y2FwLT5wcm9nX2ZldGNoX2xpbmVzX3dvcnN0X2Nhc2U7CiAJdTMyIHN0YXJ0X29mX2Zy YW1lX2xpbmVzID0KIAkgICAgdGltaW5nLT52X2JhY2tfcG9yY2ggKyB0aW1pbmctPnZzeW5jX3B1 bHNlX3dpZHRoOwogCXUzMiBuZWVkZWRfdmZwX2xpbmVzID0gd29yc3RfY2FzZV9uZWVkZWRfbGlu ZXMgLSBzdGFydF9vZl9mcmFtZV9saW5lczsKQEAgLTE1NSwyNiArMTU1LDI2IEBAIHN0YXRpYyB1 MzIgcHJvZ3JhbW1hYmxlX2ZldGNoX2dldF9udW1fbGluZXMoCiAKIAkvKiBGZXRjaCBtdXN0IGJl IG91dHNpZGUgYWN0aXZlIGxpbmVzLCBvdGhlcndpc2UgdW5kZWZpbmVkLiAqLwogCWlmIChzdGFy dF9vZl9mcmFtZV9saW5lcyA+PSB3b3JzdF9jYXNlX25lZWRlZF9saW5lcykgewotCQlEUFVfREVC VUdfVklERU5DKHZpZF9lbmMsCisJCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsCiAJCQkJInBy b2cgZmV0Y2ggaXMgbm90IG5lZWRlZCwgbGFyZ2UgdmJwK3Zzd1xuIik7CiAJCWFjdHVhbF92ZnBf bGluZXMgPSAwOwogCX0gZWxzZSBpZiAodGltaW5nLT52X2Zyb250X3BvcmNoIDwgbmVlZGVkX3Zm cF9saW5lcykgewogCQkvKiBXYXJuIGZldGNoIG5lZWRlZCwgYnV0IG5vdCBlbm91Z2ggcG9yY2gg aW4gcGFuZWwgY29uZmlnICovCiAJCXByX3dhcm5fb25jZQogCQkJKCJsb3cgdmJwK3ZmcCBtYXkg bGVhZCB0byBwZXJmIGlzc3VlcyBpbiBzb21lIGNhc2VzXG4iKTsKLQkJRFBVX0RFQlVHX1ZJREVO Qyh2aWRfZW5jLAorCQlEUFVfREVCVUdfVklERU5DKHBoeXNfZW5jLAogCQkJCSJsZXNzIHZmcCB0 aGFuIGZldGNoIHJlcSwgdXNpbmcgZW50aXJlIHZmcFxuIik7CiAJCWFjdHVhbF92ZnBfbGluZXMg PSB0aW1pbmctPnZfZnJvbnRfcG9yY2g7CiAJfSBlbHNlIHsKLQkJRFBVX0RFQlVHX1ZJREVOQyh2 aWRfZW5jLCAicm9vbSBpbiB2ZnAgZm9yIG5lZWRlZCBwcmVmZXRjaFxuIik7CisJCURQVV9ERUJV R19WSURFTkMocGh5c19lbmMsICJyb29tIGluIHZmcCBmb3IgbmVlZGVkIHByZWZldGNoXG4iKTsK IAkJYWN0dWFsX3ZmcF9saW5lcyA9IG5lZWRlZF92ZnBfbGluZXM7CiAJfQogCi0JRFBVX0RFQlVH X1ZJREVOQyh2aWRfZW5jLAorCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsCiAJCSJ2X2Zyb250 X3BvcmNoICV1IHZfYmFja19wb3JjaCAldSB2c3luY19wdWxzZV93aWR0aCAldVxuIiwKIAkJdGlt aW5nLT52X2Zyb250X3BvcmNoLCB0aW1pbmctPnZfYmFja19wb3JjaCwKIAkJdGltaW5nLT52c3lu Y19wdWxzZV93aWR0aCk7Ci0JRFBVX0RFQlVHX1ZJREVOQyh2aWRfZW5jLAorCURQVV9ERUJVR19W SURFTkMocGh5c19lbmMsCiAJCSJ3Y19saW5lcyAldSBuZWVkZWRfdmZwX2xpbmVzICV1IGFjdHVh bF92ZnBfbGluZXMgJXVcbiIsCiAJCXdvcnN0X2Nhc2VfbmVlZGVkX2xpbmVzLCBuZWVkZWRfdmZw X2xpbmVzLCBhY3R1YWxfdmZwX2xpbmVzKTsKIApAQCAtMTk0LDggKzE5NCw2IEBAIHN0YXRpYyB1 MzIgcHJvZ3JhbW1hYmxlX2ZldGNoX2dldF9udW1fbGluZXMoCiBzdGF0aWMgdm9pZCBwcm9ncmFt bWFibGVfZmV0Y2hfY29uZmlnKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIAkJ CQkgICAgICBjb25zdCBzdHJ1Y3QgaW50Zl90aW1pbmdfcGFyYW1zICp0aW1pbmcpCiB7Ci0Jc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jID0KLQkJdG9fZHB1X2VuY29kZXJfcGh5 c192aWQocGh5c19lbmMpOwogCXN0cnVjdCBpbnRmX3Byb2dfZmV0Y2ggZiA9IHsgMCB9OwogCXUz MiB2ZnBfZmV0Y2hfbGluZXMgPSAwOwogCXUzMiBob3Jpel90b3RhbCA9IDA7CkBAIC0yMDMsMTAg KzIwMSwxMCBAQCBzdGF0aWMgdm9pZCBwcm9ncmFtbWFibGVfZmV0Y2hfY29uZmlnKHN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIAl1MzIgdmZwX2ZldGNoX3N0YXJ0X3ZzeW5jX2Nv dW50ZXIgPSAwOwogCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKIAotCWlmIChXQVJOX09OX09O Q0UoIXZpZF9lbmMtPmh3X2ludGYtPm9wcy5zZXR1cF9wcmdfZmV0Y2gpKQorCWlmIChXQVJOX09O X09OQ0UoIXBoeXNfZW5jLT5od19pbnRmLT5vcHMuc2V0dXBfcHJnX2ZldGNoKSkKIAkJcmV0dXJu OwogCi0JdmZwX2ZldGNoX2xpbmVzID0gcHJvZ3JhbW1hYmxlX2ZldGNoX2dldF9udW1fbGluZXMo dmlkX2VuYywgdGltaW5nKTsKKwl2ZnBfZmV0Y2hfbGluZXMgPSBwcm9ncmFtbWFibGVfZmV0Y2hf Z2V0X251bV9saW5lcyhwaHlzX2VuYywgdGltaW5nKTsKIAlpZiAodmZwX2ZldGNoX2xpbmVzKSB7 CiAJCXZlcnRfdG90YWwgPSBnZXRfdmVydGljYWxfdG90YWwodGltaW5nKTsKIAkJaG9yaXpfdG90 YWwgPSBnZXRfaG9yaXpvbnRhbF90b3RhbCh0aW1pbmcpOwpAQCAtMjE2LDEyICsyMTQsMTIgQEAg c3RhdGljIHZvaWQgcHJvZ3JhbW1hYmxlX2ZldGNoX2NvbmZpZyhzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmMsCiAJCWYuZmV0Y2hfc3RhcnQgPSB2ZnBfZmV0Y2hfc3RhcnRfdnN5bmNf Y291bnRlcjsKIAl9CiAKLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsCisJRFBVX0RFQlVHX1ZJ REVOQyhwaHlzX2VuYywKIAkJInZmcF9mZXRjaF9saW5lcyAldSB2ZnBfZmV0Y2hfc3RhcnRfdnN5 bmNfY291bnRlciAldVxuIiwKIAkJdmZwX2ZldGNoX2xpbmVzLCB2ZnBfZmV0Y2hfc3RhcnRfdnN5 bmNfY291bnRlcik7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2Nr LCBsb2NrX2ZsYWdzKTsKLQl2aWRfZW5jLT5od19pbnRmLT5vcHMuc2V0dXBfcHJnX2ZldGNoKHZp ZF9lbmMtPmh3X2ludGYsICZmKTsKKwlwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3ByZ19m ZXRjaChwaHlzX2VuYy0+aHdfaW50ZiwgJmYpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocGh5 c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7CiB9CiAKQEAgLTIzMSw3ICsyMjksNyBA QCBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9tb2RlX2ZpeHVwKAogCQlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqX21vZGUpCiB7CiAJaWYgKHBoeXNfZW5jKQotCQlEUFVfREVC VUdfVklERU5DKHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKSwgIlxuIik7CisJCURQ VV9ERUJVR19WSURFTkMocGh5c19lbmMsICJcbiIpOwogCiAJLyoKIAkgKiBNb2RpZnlpbmcgbW9k ZSBoYXMgY29uc2VxdWVuY2VzIHdoZW4gdGhlIG1vZGUgY29tZXMgYmFjayB0byB1cwpAQCAtMjU3 LDEyICsyNTUsMTIgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfc2V0dXBfdGlt aW5nX2VuZ2luZSgKIAogCW1vZGUgPSBwaHlzX2VuYy0+Y2FjaGVkX21vZGU7CiAJdmlkX2VuYyA9 IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKLQlpZiAoIXZpZF9lbmMtPmh3X2lu dGYtPm9wcy5zZXR1cF90aW1pbmdfZ2VuKSB7CisJaWYgKCFwaHlzX2VuYy0+aHdfaW50Zi0+b3Bz LnNldHVwX3RpbWluZ19nZW4pIHsKIAkJRFBVX0VSUk9SKCJ0aW1pbmcgZW5naW5lIHNldHVwIGlz IG5vdCBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm47CiAJfQogCi0JRFBVX0RFQlVHX1ZJREVOQyh2 aWRfZW5jLCAiZW5hYmxpbmcgbW9kZTpcbiIpOworCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMs ICJlbmFibGluZyBtb2RlOlxuIik7CiAJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmbW9k ZSk7CiAKIAlpZiAocGh5c19lbmMtPnNwbGl0X3JvbGUgIT0gRU5DX1JPTEVfU09MTykgewpAQCAt MjcxLDI1ICsyNjksMjUgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfc2V0dXBf dGltaW5nX2VuZ2luZSgKIAkJbW9kZS5oc3luY19zdGFydCA+Pj0gMTsKIAkJbW9kZS5oc3luY19l bmQgPj49IDE7CiAKLQkJRFBVX0RFQlVHX1ZJREVOQyh2aWRfZW5jLAorCQlEUFVfREVCVUdfVklE RU5DKHBoeXNfZW5jLAogCQkJInNwbGl0X3JvbGUgJWQsIGhhbHZlIGhvcml6b250YWwgJWQgJWQg JWQgJWRcbiIsCiAJCQlwaHlzX2VuYy0+c3BsaXRfcm9sZSwKIAkJCW1vZGUuaGRpc3BsYXksIG1v ZGUuaHRvdGFsLAogCQkJbW9kZS5oc3luY19zdGFydCwgbW9kZS5oc3luY19lbmQpOwogCX0KIAot CWRybV9tb2RlX3RvX2ludGZfdGltaW5nX3BhcmFtcyh2aWRfZW5jLCAmbW9kZSwgJnRpbWluZ19w YXJhbXMpOworCWRybV9tb2RlX3RvX2ludGZfdGltaW5nX3BhcmFtcyhwaHlzX2VuYywgJm1vZGUs ICZ0aW1pbmdfcGFyYW1zKTsKIAogCWZtdCA9IGRwdV9nZXRfZHB1X2Zvcm1hdChmbXRfZm91cmNj KTsKLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJmbXRfZm91cmNjIDB4JVhcbiIsIGZtdF9m b3VyY2MpOworCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsICJmbXRfZm91cmNjIDB4JVhcbiIs IGZtdF9mb3VyY2MpOwogCi0JaW50Zl9jZmcuaW50ZiA9IHZpZF9lbmMtPmh3X2ludGYtPmlkeDsK KwlpbnRmX2NmZy5pbnRmID0gcGh5c19lbmMtPmh3X2ludGYtPmlkeDsKIAlpbnRmX2NmZy5pbnRm X21vZGVfc2VsID0gRFBVX0NUTF9NT0RFX1NFTF9WSUQ7CiAJaW50Zl9jZmcuc3RyZWFtX3NlbCA9 IDA7IC8qIERvbid0IGNhcmUgdmFsdWUgZm9yIHZpZGVvIG1vZGUgKi8KIAlpbnRmX2NmZy5tb2Rl XzNkID0gZHB1X2VuY29kZXJfaGVscGVyX2dldF8zZF9ibGVuZF9tb2RlKHBoeXNfZW5jKTsKIAog CXNwaW5fbG9ja19pcnFzYXZlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwot CXZpZF9lbmMtPmh3X2ludGYtPm9wcy5zZXR1cF90aW1pbmdfZ2VuKHZpZF9lbmMtPmh3X2ludGYs CisJcGh5c19lbmMtPmh3X2ludGYtPm9wcy5zZXR1cF90aW1pbmdfZ2VuKHBoeXNfZW5jLT5od19p bnRmLAogCQkJJnRpbWluZ19wYXJhbXMsIGZtdCk7CiAJcGh5c19lbmMtPmh3X2N0bC0+b3BzLnNl dHVwX2ludGZfY2ZnKHBoeXNfZW5jLT5od19jdGwsICZpbnRmX2NmZyk7CiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKQEAgLTM5Niwx OSArMzk0LDE1IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX21vZGVfc2V0KAog CQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkal9tb2RlKQogewotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsK LQogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5kcHVfa21zKSB7CiAJCURQVV9FUlJPUigi aW52YWxpZCBlbmNvZGVyL2ttc1xuIik7CiAJCXJldHVybjsKIAl9CiAKLQl2aWRfZW5jID0gdG9f ZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19lbmMpOwotCiAJaWYgKGFkal9tb2RlKSB7CiAJCXBo eXNfZW5jLT5jYWNoZWRfbW9kZSA9ICphZGpfbW9kZTsKIAkJZHJtX21vZGVfZGVidWdfcHJpbnRt b2RlbGluZShhZGpfbW9kZSk7Ci0JCURQVV9ERUJVR19WSURFTkModmlkX2VuYywgImNhY2hpbmcg bW9kZTpcbiIpOworCQlEUFVfREVCVUdfVklERU5DKHBoeXNfZW5jLCAiY2FjaGluZyBtb2RlOlxu Iik7CiAJfQogCiAJX2RwdV9lbmNvZGVyX3BoeXNfdmlkX3NldHVwX2lycV9od19pZHgocGh5c19l bmMpOwpAQCAtNDE5LDcgKzQxMyw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRf Y29udHJvbF92YmxhbmtfaXJxKAogCQlib29sIGVuYWJsZSkKIHsKIAlpbnQgcmV0ID0gMDsKLQlz dHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmM7CiAJaW50IHJlZmNvdW50OwogCiAJ aWYgKCFwaHlzX2VuYykgewpAQCAtNDI4LDcgKzQyMSw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29k ZXJfcGh5c192aWRfY29udHJvbF92YmxhbmtfaXJxKAogCX0KIAogCXJlZmNvdW50ID0gYXRvbWlj X3JlYWQoJnBoeXNfZW5jLT52YmxhbmtfcmVmY291bnQpOwotCXZpZF9lbmMgPSB0b19kcHVfZW5j b2Rlcl9waHlzX3ZpZChwaHlzX2VuYyk7CiAKIAkvKiBTbGF2ZSBlbmNvZGVycyBkb24ndCByZXBv cnQgdmJsYW5rICovCiAJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pc19tYXN0ZXIocGh5c19l bmMpKQpAQCAtNDUzLDcgKzQ0NSw3IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRf Y29udHJvbF92YmxhbmtfaXJxKAogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQ6IGlk OiV1IGludGY6JWQgcmV0OiVkIGVuYWJsZTolZCByZWZjbnQ6JWRcbiIsCiAJCQkgIERSTUlEKHBo eXNfZW5jLT5wYXJlbnQpLAotCQkJICB2aWRfZW5jLT5od19pbnRmLT5pZHggLSBJTlRGXzAsIHJl dCwgZW5hYmxlLAorCQkJICBwaHlzX2VuYy0+aHdfaW50Zi0+aWR4IC0gSU5URl8wLCByZXQsIGVu YWJsZSwKIAkJCSAgcmVmY291bnQpOwogCX0KIAlyZXR1cm4gcmV0OwpAQCAtNDYyLDcgKzQ1NCw2 IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRfY29udHJvbF92YmxhbmtfaXJxKAog c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYykKIHsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwotCXN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsKIAlzdHJ1Y3QgZHB1X3JtX2h3X2l0 ZXIgaXRlcjsKIAlzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwogCXUzMiBmbHVzaF9tYXNrID0gMDsK QEAgLTQ3NCw3ICs0NjUsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9lbmFi bGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCX0KIAlwcml2ID0gcGh5c19l bmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAotCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rl cl9waHlzX3ZpZChwaHlzX2VuYyk7CiAJY3RsID0gcGh5c19lbmMtPmh3X2N0bDsKIAogCWRwdV9y bV9pbml0X2h3X2l0ZXIoJml0ZXIsIHBoeXNfZW5jLT5wYXJlbnQtPmJhc2UuaWQsIERQVV9IV19C TEtfSU5URik7CkBAIC00ODIsMjIgKzQ3MiwyMiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9w aHlzX3ZpZF9lbmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCQlzdHJ1 Y3QgZHB1X2h3X2ludGYgKmh3X2ludGYgPSAoc3RydWN0IGRwdV9od19pbnRmICopaXRlci5odzsK IAogCQlpZiAoaHdfaW50Zi0+aWR4ID09IHBoeXNfZW5jLT5pbnRmX2lkeCkgewotCQkJdmlkX2Vu Yy0+aHdfaW50ZiA9IGh3X2ludGY7CisJCQlwaHlzX2VuYy0+aHdfaW50ZiA9IGh3X2ludGY7CiAJ CQlicmVhazsKIAkJfQogCX0KIAotCWlmICghdmlkX2VuYy0+aHdfaW50ZikgeworCWlmICghcGh5 c19lbmMtPmh3X2ludGYpIHsKIAkJRFBVX0VSUk9SKCJod19pbnRmIG5vdCBhc3NpZ25lZFxuIik7 CiAJCXJldHVybjsKIAl9CiAKLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJcbiIpOworCURQ VV9ERUJVR19WSURFTkMocGh5c19lbmMsICJcbiIpOwogCi0JaWYgKFdBUk5fT04oIXZpZF9lbmMt Pmh3X2ludGYtPm9wcy5lbmFibGVfdGltaW5nKSkKKwlpZiAoV0FSTl9PTighcGh5c19lbmMtPmh3 X2ludGYtPm9wcy5lbmFibGVfdGltaW5nKSkKIAkJcmV0dXJuOwogCi0JZHB1X2VuY29kZXJfaGVs cGVyX3NwbGl0X2NvbmZpZyhwaHlzX2VuYywgdmlkX2VuYy0+aHdfaW50Zi0+aWR4KTsKKwlkcHVf ZW5jb2Rlcl9oZWxwZXJfc3BsaXRfY29uZmlnKHBoeXNfZW5jLCBwaHlzX2VuYy0+aHdfaW50Zi0+ aWR4KTsKIAogCWRwdV9lbmNvZGVyX3BoeXNfdmlkX3NldHVwX3RpbWluZ19lbmdpbmUocGh5c19l bmMpOwogCkBAIC01MTAsMTIgKzUwMCwxMyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlz X3ZpZF9lbmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCQkhZHB1X2Vu Y29kZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKIAkJZ290byBza2lwX2ZsdXNoOwog Ci0JY3RsLT5vcHMuZ2V0X2JpdG1hc2tfaW50ZihjdGwsICZmbHVzaF9tYXNrLCB2aWRfZW5jLT5o d19pbnRmLT5pZHgpOworCWN0bC0+b3BzLmdldF9iaXRtYXNrX2ludGYoY3RsLCAmZmx1c2hfbWFz aywgcGh5c19lbmMtPmh3X2ludGYtPmlkeCk7CiAJY3RsLT5vcHMudXBkYXRlX3BlbmRpbmdfZmx1 c2goY3RsLCBmbHVzaF9tYXNrKTsKIAogc2tpcF9mbHVzaDoKLQlEUFVfREVCVUdfVklERU5DKHZp ZF9lbmMsICJ1cGRhdGUgcGVuZGluZyBmbHVzaCBjdGwgJWQgZmx1c2hfbWFzayAleFxuIiwKLQkJ Y3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7CisJRFBVX0RFQlVHX1ZJREVOQyhwaHlzX2Vu YywKKwkJCSAidXBkYXRlIHBlbmRpbmcgZmx1c2ggY3RsICVkIGZsdXNoX21hc2sgJXhcbiIsCisJ CQkgY3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7CiAKIAkvKiBjdGxfZmx1c2ggJiB0aW1p bmcgZW5naW5lIGVuYWJsZSB3aWxsIGJlIHRyaWdnZXJlZCBieSBmcmFtZXdvcmsgKi8KIAlpZiAo cGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9PSBEUFVfRU5DX0RJU0FCTEVEKQpAQCAtNTMyLDcgKzUy Myw3IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX2Rlc3Ryb3koc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCX0KIAogCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rl cl9waHlzX3ZpZChwaHlzX2VuYyk7Ci0JRFBVX0RFQlVHX1ZJREVOQyh2aWRfZW5jLCAiXG4iKTsK KwlEUFVfREVCVUdfVklERU5DKHBoeXNfZW5jLCAiXG4iKTsKIAlrZnJlZSh2aWRfZW5jKTsKIH0K IApAQCAtNTkwLDcgKzU4MSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3By ZXBhcmVfZm9yX2tpY2tvZmYoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywK IAkJc3RydWN0IGRwdV9lbmNvZGVyX2tpY2tvZmZfcGFyYW1zICpwYXJhbXMpCiB7Ci0Jc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jOwogCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7 CiAJaW50IHJjOwogCkBAIC01OTgsNyArNTg4LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJf cGh5c192aWRfcHJlcGFyZV9mb3Jfa2lja29mZigKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29k ZXIvcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybjsKIAl9Ci0JdmlkX2VuYyA9IHRvX2RwdV9lbmNv ZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKIAogCWN0bCA9IHBoeXNfZW5jLT5od19jdGw7CiAJaWYg KCFjdGwgfHwgIWN0bC0+b3BzLndhaXRfcmVzZXRfc3RhdHVzKQpAQCAtNjEwLDcgKzU5OSw3IEBA IHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3ByZXBhcmVfZm9yX2tpY2tvZmYoCiAJ ICovCiAJcmMgPSBjdGwtPm9wcy53YWl0X3Jlc2V0X3N0YXR1cyhjdGwpOwogCWlmIChyYykgewot CQlEUFVfRVJST1JfVklERU5DKHZpZF9lbmMsICJjdGwgJWQgcmVzZXQgZmFpbHVyZTogJWRcbiIs CisJCURQVV9FUlJPUl9WSURFTkMocGh5c19lbmMsICJjdGwgJWQgcmVzZXQgZmFpbHVyZTogJWRc biIsCiAJCQkJY3RsLT5pZHgsIHJjKTsKIAkJZHB1X2VuY29kZXJfaGVscGVyX3VucmVnaXN0ZXJf aXJxKHBoeXNfZW5jLCBJTlRSX0lEWF9WU1lOQyk7CiAJfQpAQCAtNjE5LDcgKzYwOCw2IEBAIHN0 YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3ByZXBhcmVfZm9yX2tpY2tvZmYoCiBzdGF0 aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzX2VuYykKIHsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwotCXN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsKIAl1bnNpZ25lZCBsb25nIGxvY2tfZmxh Z3M7CiAJaW50IHJldDsKIApAQCAtNjMwLDE2ICs2MTgsMTMgQEAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfcGh5c192aWRfZGlzYWJsZShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMp CiAJfQogCXByaXYgPSBwaHlzX2VuYy0+cGFyZW50LT5kZXYtPmRldl9wcml2YXRlOwogCi0Jdmlk X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKLQlpZiAoIXZpZF9lbmMt Pmh3X2ludGYgfHwgIXBoeXNfZW5jLT5od19jdGwpIHsKKwlpZiAoIXBoeXNfZW5jLT5od19pbnRm IHx8ICFwaHlzX2VuYy0+aHdfY3RsKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBod19pbnRmICVk IGh3X2N0bCAlZFxuIiwKLQkJCQl2aWRfZW5jLT5od19pbnRmICE9IDAsIHBoeXNfZW5jLT5od19j dGwgIT0gMCk7CisJCQkJcGh5c19lbmMtPmh3X2ludGYgIT0gMCwgcGh5c19lbmMtPmh3X2N0bCAh PSAwKTsKIAkJcmV0dXJuOwogCX0KIAotCURQVV9ERUJVR19WSURFTkModmlkX2VuYywgIlxuIik7 Ci0KLQlpZiAoV0FSTl9PTighdmlkX2VuYy0+aHdfaW50Zi0+b3BzLmVuYWJsZV90aW1pbmcpKQor CWlmIChXQVJOX09OKCFwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLmVuYWJsZV90aW1pbmcpKQogCQly ZXR1cm47CiAKIAlpZiAocGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9PSBEUFVfRU5DX0RJU0FCTEVE KSB7CkBAIC02NDgsNyArNjMzLDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRf ZGlzYWJsZShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiAJfQogCiAJc3Bpbl9s b2NrX2lycXNhdmUocGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7Ci0JdmlkX2Vu Yy0+aHdfaW50Zi0+b3BzLmVuYWJsZV90aW1pbmcodmlkX2VuYy0+aHdfaW50ZiwgMCk7CisJcGh5 c19lbmMtPmh3X2ludGYtPm9wcy5lbmFibGVfdGltaW5nKHBoeXNfZW5jLT5od19pbnRmLCAwKTsK IAlpZiAoZHB1X2VuY29kZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKIAkJZHB1X2Vu Y29kZXJfcGh5c19pbmNfcGVuZGluZyhwaHlzX2VuYyk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKQEAgLTY2Nyw3ICs2NTIsNyBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKIAkJCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5kaW5nX2tp Y2tvZmZfY250LCAwKTsKIAkJCURSTV9FUlJPUigid2FpdCBkaXNhYmxlIGZhaWxlZDogaWQ6JXUg aW50ZjolZCByZXQ6JWRcbiIsCiAJCQkJICBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwKLQkJCQkg IHZpZF9lbmMtPmh3X2ludGYtPmlkeCAtIElOVEZfMCwgcmV0KTsKKwkJCQkgIHBoeXNfZW5jLT5o d19pbnRmLT5pZHggLSBJTlRGXzAsIHJldCk7CiAJCX0KIAl9CiAKQEAgLTY3OCwyNSArNjYzLDIx IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX2hhbmRsZV9wb3N0X2tpY2tvZmYo CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKIAl1bnNpZ25lZCBsb25n IGxvY2tfZmxhZ3M7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jOwogCiAJ aWYgKCFwaHlzX2VuYykgewogCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CiAJCXJl dHVybjsKIAl9CiAKLQl2aWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19lbmMp OwotCURQVV9ERUJVR19WSURFTkModmlkX2VuYywgImVuYWJsZV9zdGF0ZSAlZFxuIiwgcGh5c19l bmMtPmVuYWJsZV9zdGF0ZSk7Ci0KIAkvKgogCSAqIFZpZGVvIG1vZGUgbXVzdCBmbHVzaCBDVEwg YmVmb3JlIGVuYWJsaW5nIHRpbWluZyBlbmdpbmUKIAkgKiBWaWRlbyBlbmNvZGVycyBuZWVkIHRv IHR1cm4gb24gdGhlaXIgaW50ZXJmYWNlcyBub3cKIAkgKi8KIAlpZiAocGh5c19lbmMtPmVuYWJs ZV9zdGF0ZSA9PSBEUFVfRU5DX0VOQUJMSU5HKSB7CiAJCXRyYWNlX2RwdV9lbmNfcGh5c192aWRf cG9zdF9raWNrb2ZmKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAotCQkJCSAgICB2aWRfZW5jLT5o d19pbnRmLT5pZHggLSBJTlRGXzApOworCQkJCSAgICBwaHlzX2VuYy0+aHdfaW50Zi0+aWR4IC0g SU5URl8wKTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUocGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9j a19mbGFncyk7Ci0JCXZpZF9lbmMtPmh3X2ludGYtPm9wcy5lbmFibGVfdGltaW5nKHZpZF9lbmMt Pmh3X2ludGYsIDEpOworCQlwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLmVuYWJsZV90aW1pbmcocGh5 c19lbmMtPmh3X2ludGYsIDEpOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKHBoeXNfZW5jLT5l bmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwogCQlwaHlzX2VuYy0+ZW5hYmxlX3N0YXRlID0gRFBV X0VOQ19FTkFCTEVEOwogCX0KQEAgLTcwNSwxNiArNjg2LDEzIEBAIHN0YXRpYyB2b2lkIGRwdV9l bmNvZGVyX3BoeXNfdmlkX2hhbmRsZV9wb3N0X2tpY2tvZmYoCiBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX3ZpZF9pcnFfY29udHJvbChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMsCiAJCWJvb2wgZW5hYmxlKQogewotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlk X2VuYzsKIAlpbnQgcmV0OwogCiAJaWYgKCFwaHlzX2VuYykKIAkJcmV0dXJuOwogCi0JdmlkX2Vu YyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKLQogCXRyYWNlX2RwdV9lbmNf cGh5c192aWRfaXJxX2N0cmwoRFJNSUQocGh5c19lbmMtPnBhcmVudCksCi0JCQkgICAgdmlkX2Vu Yy0+aHdfaW50Zi0+aWR4IC0gSU5URl8wLAorCQkJICAgIHBoeXNfZW5jLT5od19pbnRmLT5pZHgg LSBJTlRGXzAsCiAJCQkgICAgZW5hYmxlLAogCQkJICAgIGF0b21pY19yZWFkKCZwaHlzX2VuYy0+ dmJsYW5rX3JlZmNvdW50KSk7CiAKQEAgLTczMywxOSArNzExLDE2IEBAIHN0YXRpYyB2b2lkIGRw dV9lbmNvZGVyX3BoeXNfdmlkX2lycV9jb250cm9sKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpw aHlzX2VuYywKIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRfZ2V0X2xpbmVfY291bnQo CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKLQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5c192aWQgKnZpZF9lbmM7Ci0KIAlpZiAoIXBoeXNfZW5jKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAogCWlmICghZHB1X2VuY29kZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkK IAkJcmV0dXJuIC1FSU5WQUw7CiAKLQl2aWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c192aWQo cGh5c19lbmMpOwotCWlmICghdmlkX2VuYy0+aHdfaW50ZiB8fCAhdmlkX2VuYy0+aHdfaW50Zi0+ b3BzLmdldF9saW5lX2NvdW50KQorCWlmICghcGh5c19lbmMtPmh3X2ludGYgfHwgIXBoeXNfZW5j LT5od19pbnRmLT5vcHMuZ2V0X2xpbmVfY291bnQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0 dXJuIHZpZF9lbmMtPmh3X2ludGYtPm9wcy5nZXRfbGluZV9jb3VudCh2aWRfZW5jLT5od19pbnRm KTsKKwlyZXR1cm4gcGh5c19lbmMtPmh3X2ludGYtPm9wcy5nZXRfbGluZV9jb3VudChwaHlzX2Vu Yy0+aHdfaW50Zik7CiB9CiAKIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX2luaXRf b3BzKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX29wcyAqb3BzKQpAQCAtNzkyLDcgKzc2Nyw3IEBA IHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pbml0KAogCXBo eXNfZW5jLT5od19tZHB0b3AgPSBwLT5kcHVfa21zLT5od19tZHA7CiAJcGh5c19lbmMtPmludGZf aWR4ID0gcC0+aW50Zl9pZHg7CiAKLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJcbiIpOwor CURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsICJcbiIpOwogCiAJZHB1X2VuY29kZXJfcGh5c192 aWRfaW5pdF9vcHMoJnBoeXNfZW5jLT5vcHMpOwogCXBoeXNfZW5jLT5wYXJlbnQgPSBwLT5wYXJl bnQ7CkBAIC04MjYsNyArODAxLDcgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRwdV9lbmNv ZGVyX3BoeXNfdmlkX2luaXQoCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmcGh5c19lbmMtPnBlbmRp bmdfa2lja29mZl93cSk7CiAJcGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9IERQVV9FTkNfRElTQUJM RUQ7CiAKLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJjcmVhdGVkIGludGYgaWR4OiVkXG4i LCBwLT5pbnRmX2lkeCk7CisJRFBVX0RFQlVHX1ZJREVOQyhwaHlzX2VuYywgImNyZWF0ZWQgaW50 ZiBpZHg6JWRcbiIsIHAtPmludGZfaWR4KTsKIAogCXJldHVybiBwaHlzX2VuYzsKIAotLSAKVGhl IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2Rl IEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5v IG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5v