From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/7] drm/msm/dpu: move hw_inf encoder baseclass Date: Mon, 4 Mar 2019 13:08:07 -0500 Message-ID: <20190304180807.GT114153@art_vandelay> References: <1550107156-17625-1-git-send-email-jsanka@codeaurora.org> <1550107156-17625-2-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1550107156-17625-2-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: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDU6MTk6MTBQTSAtMDgwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gQm90aCB2aWRlbyBhbmQgY29tbWFuZCBwaHlzaWNhbCBlbmNvZGVycyB3aWxs IGhhdmUKPiBhIGh3IGludGVyZmFjZSBhc3NpZ25lZCB0byBpdC4gU28gdGhlcmUgaXMgcmVhbGx5 IG5vCj4gbmVlZCB0byB0cmFjayB0aGUgaHcgYmxvY2sgaW4gc3BlY2lmaWMgZW5jb2RlciBzdWJj bGFzcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVh dXJvcmEub3JnPgoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPgoKPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAg fCAgIDQgKy0KPiAgLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3Zp ZC5jICAgfCAxMjUgKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgNTIg aW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAo+IGluZGV4IDQ0ZTZmOGI2Li5hY2Q1 OTU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXMuaAo+IEBAIC0yMDEsNiArMjAxLDcgQEAgc3RydWN0IGRwdV9lbmNvZGVyX2lycSB7 Cj4gICAqIEBod19tZHB0b3A6CQlIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIHRvcCByZWdpc3Rl cnMKPiAgICogQGh3X2N0bDoJCUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUgY3RsIHJlZ2lzdGVy cwo+ICAgKiBAaHdfcHA6CQlIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIHBpbmcgcG9uZyByZWdp c3RlcnMKPiArICogQGh3X2ludGY6CQlIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIGludGYgcmVn aXN0ZXJzCj4gICAqIEBkcHVfa21zOgkJUG9pbnRlciB0byB0aGUgZHB1X2ttcyB0b3AgbGV2ZWwK PiAgICogQGNhY2hlZF9tb2RlOglEUk0gbW9kZSBjYWNoZWQgYXQgbW9kZV9zZXQgdGltZSwgYWN0 ZWQgb24gaW4gZW5hYmxlCj4gICAqIEBlbmFibGVkOgkJV2hldGhlciB0aGUgZW5jb2RlciBoYXMg ZW5hYmxlZCBhbmQgcnVubmluZyBhIG1vZGUKPiBAQCAtMjI5LDYgKzIzMCw3IEBAIHN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzIHsKPiAgCXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHB0b3A7Cj4gIAlz dHJ1Y3QgZHB1X2h3X2N0bCAqaHdfY3RsOwo+ICAJc3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdf cHA7Cj4gKwlzdHJ1Y3QgZHB1X2h3X2ludGYgKmh3X2ludGY7Cj4gIAlzdHJ1Y3QgZHB1X2ttcyAq ZHB1X2ttczsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGNhY2hlZF9tb2RlOwo+ICAJZW51 bSBkcHVfZW5jX3NwbGl0X3JvbGUgc3BsaXRfcm9sZTsKPiBAQCAtMjU1LDEyICsyNTcsMTAgQEAg c3RhdGljIGlubGluZSBpbnQgZHB1X2VuY29kZXJfcGh5c19pbmNfcGVuZGluZyhzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyAqcGh5cykKPiAgICogc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkIC0g c3ViLWNsYXNzIG9mIGRwdV9lbmNvZGVyX3BoeXMgdG8gaGFuZGxlIHZpZGVvCj4gICAqCW1vZGUg c3BlY2lmaWMgb3BlcmF0aW9ucwo+ICAgKiBAYmFzZToJQmFzZWNsYXNzIHBoeXNpY2FsIGVuY29k ZXIgc3RydWN0dXJlCj4gLSAqIEBod19pbnRmOglIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIGlu dGYgcmVnaXN0ZXJzCj4gICAqIEB0aW1pbmdfcGFyYW1zOiBDdXJyZW50IHRpbWluZyBwYXJhbWV0 ZXIKPiAgICovCj4gIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCB7Cj4gIAlzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyBiYXNlOwo+IC0Jc3RydWN0IGRwdV9od19pbnRmICpod19pbnRmOwo+ICAJ c3RydWN0IGludGZfdGltaW5nX3BhcmFtcyB0aW1pbmdfcGFyYW1zOwo+ICB9Owo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192 aWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlk LmMKPiBpbmRleCBhY2RhYjViMC4uZTMyNjM5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+IEBAIC0xOCwxNCAr MTgsMTQgQEAKPiAgI2luY2x1ZGUgImRwdV90cmFjZS5oIgo+ICAKPiAgI2RlZmluZSBEUFVfREVC VUdfVklERU5DKGUsIGZtdCwgLi4uKSBEUFVfREVCVUcoImVuYyVkIGludGYlZCAiIGZtdCwgXAo+ IC0JCShlKSAmJiAoZSktPmJhc2UucGFyZW50ID8gXAo+IC0JCShlKS0+YmFzZS5wYXJlbnQtPmJh c2UuaWQgOiAtMSwgXAo+ICsJCShlKSAmJiAoZSktPnBhcmVudCA/IFwKPiArCQkoZSktPnBhcmVu dC0+YmFzZS5pZCA6IC0xLCBcCj4gIAkJKGUpICYmIChlKS0+aHdfaW50ZiA/IFwKPiAgCQkoZSkt Pmh3X2ludGYtPmlkeCAtIElOVEZfMCA6IC0xLCAjI19fVkFfQVJHU19fKQo+ICAKPiAgI2RlZmlu ZSBEUFVfRVJST1JfVklERU5DKGUsIGZtdCwgLi4uKSBEUFVfRVJST1IoImVuYyVkIGludGYlZCAi IGZtdCwgXAo+IC0JCShlKSAmJiAoZSktPmJhc2UucGFyZW50ID8gXAo+IC0JCShlKS0+YmFzZS5w YXJlbnQtPmJhc2UuaWQgOiAtMSwgXAo+ICsJCShlKSAmJiAoZSktPnBhcmVudCA/IFwKPiArCQko ZSktPnBhcmVudC0+YmFzZS5pZCA6IC0xLCBcCj4gIAkJKGUpICYmIChlKS0+aHdfaW50ZiA/IFwK PiAgCQkoZSktPmh3X2ludGYtPmlkeCAtIElOVEZfMCA6IC0xLCAjI19fVkFfQVJHU19fKQo+ICAK PiBAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pc19t YXN0ZXIoCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRybV9tb2RlX3RvX2ludGZfdGltaW5nX3Bh cmFtcygKPiAtCQljb25zdCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmMsCj4g KwkJY29uc3Qgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jLAo+ICAJCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICAJCXN0cnVjdCBpbnRmX3RpbWluZ19wYXJh bXMgKnRpbWluZykKPiAgewo+IEBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIGRybV9tb2Rl X3RvX2ludGZfdGltaW5nX3BhcmFtcygKPiAgCXRpbWluZy0+aHN5bmNfc2tldyA9IG1vZGUtPmhz a2V3Owo+ICAKPiAgCS8qIERTSSBjb250cm9sbGVyIGNhbm5vdCBoYW5kbGUgYWN0aXZlLWxvdyBz eW5jIHNpZ25hbHMuICovCj4gLQlpZiAodmlkX2VuYy0+aHdfaW50Zi0+Y2FwLT50eXBlID09IElO VEZfRFNJKSB7Cj4gKwlpZiAocGh5c19lbmMtPmh3X2ludGYtPmNhcC0+dHlwZSA9PSBJTlRGX0RT SSkgewo+ICAJCXRpbWluZy0+aHN5bmNfcG9sYXJpdHkgPSAwOwo+ICAJCXRpbWluZy0+dnN5bmNf cG9sYXJpdHkgPSAwOwo+ICAJfQo+IEBAIC0xNDMsMTEgKzE0MywxMSBAQCBzdGF0aWMgdTMyIGdl dF92ZXJ0aWNhbF90b3RhbChjb25zdCBzdHJ1Y3QgaW50Zl90aW1pbmdfcGFyYW1zICp0aW1pbmcp Cj4gICAqIGxpbmVzIGJhc2VkIG9uIHRoZSBjaGlwIHdvcnN0IGNhc2UgbGF0ZW5jaWVzLgo+ICAg Ki8KPiAgc3RhdGljIHUzMiBwcm9ncmFtbWFibGVfZmV0Y2hfZ2V0X251bV9saW5lcygKPiAtCQlz dHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmMsCj4gKwkJc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXMgKnBoeXNfZW5jLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRmX3RpbWluZ19wYXJhbXMg KnRpbWluZykKPiAgewo+ICAJdTMyIHdvcnN0X2Nhc2VfbmVlZGVkX2xpbmVzID0KPiAtCSAgICB2 aWRfZW5jLT5od19pbnRmLT5jYXAtPnByb2dfZmV0Y2hfbGluZXNfd29yc3RfY2FzZTsKPiArCSAg ICBwaHlzX2VuYy0+aHdfaW50Zi0+Y2FwLT5wcm9nX2ZldGNoX2xpbmVzX3dvcnN0X2Nhc2U7Cj4g IAl1MzIgc3RhcnRfb2ZfZnJhbWVfbGluZXMgPQo+ICAJICAgIHRpbWluZy0+dl9iYWNrX3BvcmNo ICsgdGltaW5nLT52c3luY19wdWxzZV93aWR0aDsKPiAgCXUzMiBuZWVkZWRfdmZwX2xpbmVzID0g d29yc3RfY2FzZV9uZWVkZWRfbGluZXMgLSBzdGFydF9vZl9mcmFtZV9saW5lczsKPiBAQCAtMTU1 LDI2ICsxNTUsMjYgQEAgc3RhdGljIHUzMiBwcm9ncmFtbWFibGVfZmV0Y2hfZ2V0X251bV9saW5l cygKPiAgCj4gIAkvKiBGZXRjaCBtdXN0IGJlIG91dHNpZGUgYWN0aXZlIGxpbmVzLCBvdGhlcndp c2UgdW5kZWZpbmVkLiAqLwo+ICAJaWYgKHN0YXJ0X29mX2ZyYW1lX2xpbmVzID49IHdvcnN0X2Nh c2VfbmVlZGVkX2xpbmVzKSB7Cj4gLQkJRFBVX0RFQlVHX1ZJREVOQyh2aWRfZW5jLAo+ICsJCURQ VV9ERUJVR19WSURFTkMocGh5c19lbmMsCj4gIAkJCQkicHJvZyBmZXRjaCBpcyBub3QgbmVlZGVk LCBsYXJnZSB2YnArdnN3XG4iKTsKPiAgCQlhY3R1YWxfdmZwX2xpbmVzID0gMDsKPiAgCX0gZWxz ZSBpZiAodGltaW5nLT52X2Zyb250X3BvcmNoIDwgbmVlZGVkX3ZmcF9saW5lcykgewo+ICAJCS8q IFdhcm4gZmV0Y2ggbmVlZGVkLCBidXQgbm90IGVub3VnaCBwb3JjaCBpbiBwYW5lbCBjb25maWcg Ki8KPiAgCQlwcl93YXJuX29uY2UKPiAgCQkJKCJsb3cgdmJwK3ZmcCBtYXkgbGVhZCB0byBwZXJm IGlzc3VlcyBpbiBzb21lIGNhc2VzXG4iKTsKPiAtCQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMs Cj4gKwkJRFBVX0RFQlVHX1ZJREVOQyhwaHlzX2VuYywKPiAgCQkJCSJsZXNzIHZmcCB0aGFuIGZl dGNoIHJlcSwgdXNpbmcgZW50aXJlIHZmcFxuIik7Cj4gIAkJYWN0dWFsX3ZmcF9saW5lcyA9IHRp bWluZy0+dl9mcm9udF9wb3JjaDsKPiAgCX0gZWxzZSB7Cj4gLQkJRFBVX0RFQlVHX1ZJREVOQyh2 aWRfZW5jLCAicm9vbSBpbiB2ZnAgZm9yIG5lZWRlZCBwcmVmZXRjaFxuIik7Cj4gKwkJRFBVX0RF QlVHX1ZJREVOQyhwaHlzX2VuYywgInJvb20gaW4gdmZwIGZvciBuZWVkZWQgcHJlZmV0Y2hcbiIp Owo+ICAJCWFjdHVhbF92ZnBfbGluZXMgPSBuZWVkZWRfdmZwX2xpbmVzOwo+ICAJfQo+ICAKPiAt CURQVV9ERUJVR19WSURFTkModmlkX2VuYywKPiArCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMs Cj4gIAkJInZfZnJvbnRfcG9yY2ggJXUgdl9iYWNrX3BvcmNoICV1IHZzeW5jX3B1bHNlX3dpZHRo ICV1XG4iLAo+ICAJCXRpbWluZy0+dl9mcm9udF9wb3JjaCwgdGltaW5nLT52X2JhY2tfcG9yY2gs Cj4gIAkJdGltaW5nLT52c3luY19wdWxzZV93aWR0aCk7Cj4gLQlEUFVfREVCVUdfVklERU5DKHZp ZF9lbmMsCj4gKwlEUFVfREVCVUdfVklERU5DKHBoeXNfZW5jLAo+ICAJCSJ3Y19saW5lcyAldSBu ZWVkZWRfdmZwX2xpbmVzICV1IGFjdHVhbF92ZnBfbGluZXMgJXVcbiIsCj4gIAkJd29yc3RfY2Fz ZV9uZWVkZWRfbGluZXMsIG5lZWRlZF92ZnBfbGluZXMsIGFjdHVhbF92ZnBfbGluZXMpOwo+ICAK PiBAQCAtMTk0LDggKzE5NCw2IEBAIHN0YXRpYyB1MzIgcHJvZ3JhbW1hYmxlX2ZldGNoX2dldF9u dW1fbGluZXMoCj4gIHN0YXRpYyB2b2lkIHByb2dyYW1tYWJsZV9mZXRjaF9jb25maWcoc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jLAo+ICAJCQkJICAgICAgY29uc3Qgc3RydWN0IGlu dGZfdGltaW5nX3BhcmFtcyAqdGltaW5nKQo+ICB7Cj4gLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 c192aWQgKnZpZF9lbmMgPQo+IC0JCXRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsK PiAgCXN0cnVjdCBpbnRmX3Byb2dfZmV0Y2ggZiA9IHsgMCB9Owo+ICAJdTMyIHZmcF9mZXRjaF9s aW5lcyA9IDA7Cj4gIAl1MzIgaG9yaXpfdG90YWwgPSAwOwo+IEBAIC0yMDMsMTAgKzIwMSwxMCBA QCBzdGF0aWMgdm9pZCBwcm9ncmFtbWFibGVfZmV0Y2hfY29uZmlnKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYywKPiAgCXUzMiB2ZnBfZmV0Y2hfc3RhcnRfdnN5bmNfY291bnRlciA9 IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7Cj4gIAo+IC0JaWYgKFdBUk5fT05fT05D RSghdmlkX2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3ByZ19mZXRjaCkpCj4gKwlpZiAoV0FSTl9P Tl9PTkNFKCFwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3ByZ19mZXRjaCkpCj4gIAkJcmV0 dXJuOwo+ICAKPiAtCXZmcF9mZXRjaF9saW5lcyA9IHByb2dyYW1tYWJsZV9mZXRjaF9nZXRfbnVt X2xpbmVzKHZpZF9lbmMsIHRpbWluZyk7Cj4gKwl2ZnBfZmV0Y2hfbGluZXMgPSBwcm9ncmFtbWFi bGVfZmV0Y2hfZ2V0X251bV9saW5lcyhwaHlzX2VuYywgdGltaW5nKTsKPiAgCWlmICh2ZnBfZmV0 Y2hfbGluZXMpIHsKPiAgCQl2ZXJ0X3RvdGFsID0gZ2V0X3ZlcnRpY2FsX3RvdGFsKHRpbWluZyk7 Cj4gIAkJaG9yaXpfdG90YWwgPSBnZXRfaG9yaXpvbnRhbF90b3RhbCh0aW1pbmcpOwo+IEBAIC0y MTYsMTIgKzIxNCwxMiBAQCBzdGF0aWMgdm9pZCBwcm9ncmFtbWFibGVfZmV0Y2hfY29uZmlnKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKPiAgCQlmLmZldGNoX3N0YXJ0ID0gdmZw X2ZldGNoX3N0YXJ0X3ZzeW5jX2NvdW50ZXI7Cj4gIAl9Cj4gIAo+IC0JRFBVX0RFQlVHX1ZJREVO Qyh2aWRfZW5jLAo+ICsJRFBVX0RFQlVHX1ZJREVOQyhwaHlzX2VuYywKPiAgCQkidmZwX2ZldGNo X2xpbmVzICV1IHZmcF9mZXRjaF9zdGFydF92c3luY19jb3VudGVyICV1XG4iLAo+ICAJCXZmcF9m ZXRjaF9saW5lcywgdmZwX2ZldGNoX3N0YXJ0X3ZzeW5jX2NvdW50ZXIpOwo+ICAKPiAgCXNwaW5f bG9ja19pcnFzYXZlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+IC0Jdmlk X2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3ByZ19mZXRjaCh2aWRfZW5jLT5od19pbnRmLCAmZik7 Cj4gKwlwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3ByZ19mZXRjaChwaHlzX2VuYy0+aHdf aW50ZiwgJmYpOwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaHlzX2VuYy0+ZW5jX3NwaW5s b2NrLCBsb2NrX2ZsYWdzKTsKPiAgfQo+ICAKPiBAQCAtMjMxLDcgKzIyOSw3IEBAIHN0YXRpYyBi b29sIGRwdV9lbmNvZGVyX3BoeXNfdmlkX21vZGVfZml4dXAoCj4gIAkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkal9tb2RlKQo+ICB7Cj4gIAlpZiAocGh5c19lbmMpCj4gLQkJRFBVX0RFQlVH X1ZJREVOQyh0b19kcHVfZW5jb2Rlcl9waHlzX3ZpZChwaHlzX2VuYyksICJcbiIpOwo+ICsJCURQ VV9ERUJVR19WSURFTkMocGh5c19lbmMsICJcbiIpOwo+ICAKPiAgCS8qCj4gIAkgKiBNb2RpZnlp bmcgbW9kZSBoYXMgY29uc2VxdWVuY2VzIHdoZW4gdGhlIG1vZGUgY29tZXMgYmFjayB0byB1cwo+ IEBAIC0yNTcsMTIgKzI1NSwxMiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9z ZXR1cF90aW1pbmdfZW5naW5lKAo+ICAKPiAgCW1vZGUgPSBwaHlzX2VuYy0+Y2FjaGVkX21vZGU7 Cj4gIAl2aWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19lbmMpOwo+IC0JaWYg KCF2aWRfZW5jLT5od19pbnRmLT5vcHMuc2V0dXBfdGltaW5nX2dlbikgewo+ICsJaWYgKCFwaHlz X2VuYy0+aHdfaW50Zi0+b3BzLnNldHVwX3RpbWluZ19nZW4pIHsKPiAgCQlEUFVfRVJST1IoInRp bWluZyBlbmdpbmUgc2V0dXAgaXMgbm90IHN1cHBvcnRlZFxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJ fQo+ICAKPiAtCURQVV9ERUJVR19WSURFTkModmlkX2VuYywgImVuYWJsaW5nIG1vZGU6XG4iKTsK PiArCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsICJlbmFibGluZyBtb2RlOlxuIik7Cj4gIAlk cm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZtb2RlKTsKPiAgCj4gIAlpZiAocGh5c19lbmMt PnNwbGl0X3JvbGUgIT0gRU5DX1JPTEVfU09MTykgewo+IEBAIC0yNzEsMjUgKzI2OSwyNSBAQCBz dGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9zZXR1cF90aW1pbmdfZW5naW5lKAo+ICAJ CW1vZGUuaHN5bmNfc3RhcnQgPj49IDE7Cj4gIAkJbW9kZS5oc3luY19lbmQgPj49IDE7Cj4gIAo+ IC0JCURQVV9ERUJVR19WSURFTkModmlkX2VuYywKPiArCQlEUFVfREVCVUdfVklERU5DKHBoeXNf ZW5jLAo+ICAJCQkic3BsaXRfcm9sZSAlZCwgaGFsdmUgaG9yaXpvbnRhbCAlZCAlZCAlZCAlZFxu IiwKPiAgCQkJcGh5c19lbmMtPnNwbGl0X3JvbGUsCj4gIAkJCW1vZGUuaGRpc3BsYXksIG1vZGUu aHRvdGFsLAo+ICAJCQltb2RlLmhzeW5jX3N0YXJ0LCBtb2RlLmhzeW5jX2VuZCk7Cj4gIAl9Cj4g IAo+IC0JZHJtX21vZGVfdG9faW50Zl90aW1pbmdfcGFyYW1zKHZpZF9lbmMsICZtb2RlLCAmdGlt aW5nX3BhcmFtcyk7Cj4gKwlkcm1fbW9kZV90b19pbnRmX3RpbWluZ19wYXJhbXMocGh5c19lbmMs ICZtb2RlLCAmdGltaW5nX3BhcmFtcyk7Cj4gIAo+ICAJZm10ID0gZHB1X2dldF9kcHVfZm9ybWF0 KGZtdF9mb3VyY2MpOwo+IC0JRFBVX0RFQlVHX1ZJREVOQyh2aWRfZW5jLCAiZm10X2ZvdXJjYyAw eCVYXG4iLCBmbXRfZm91cmNjKTsKPiArCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsICJmbXRf Zm91cmNjIDB4JVhcbiIsIGZtdF9mb3VyY2MpOwo+ICAKPiAtCWludGZfY2ZnLmludGYgPSB2aWRf ZW5jLT5od19pbnRmLT5pZHg7Cj4gKwlpbnRmX2NmZy5pbnRmID0gcGh5c19lbmMtPmh3X2ludGYt PmlkeDsKPiAgCWludGZfY2ZnLmludGZfbW9kZV9zZWwgPSBEUFVfQ1RMX01PREVfU0VMX1ZJRDsK PiAgCWludGZfY2ZnLnN0cmVhbV9zZWwgPSAwOyAvKiBEb24ndCBjYXJlIHZhbHVlIGZvciB2aWRl byBtb2RlICovCj4gIAlpbnRmX2NmZy5tb2RlXzNkID0gZHB1X2VuY29kZXJfaGVscGVyX2dldF8z ZF9ibGVuZF9tb2RlKHBoeXNfZW5jKTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZShwaHlzX2Vu Yy0+ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKPiAtCXZpZF9lbmMtPmh3X2ludGYtPm9wcy5z ZXR1cF90aW1pbmdfZ2VuKHZpZF9lbmMtPmh3X2ludGYsCj4gKwlwaHlzX2VuYy0+aHdfaW50Zi0+ b3BzLnNldHVwX3RpbWluZ19nZW4ocGh5c19lbmMtPmh3X2ludGYsCj4gIAkJCSZ0aW1pbmdfcGFy YW1zLCBmbXQpOwo+ICAJcGh5c19lbmMtPmh3X2N0bC0+b3BzLnNldHVwX2ludGZfY2ZnKHBoeXNf ZW5jLT5od19jdGwsICZpbnRmX2NmZyk7Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKHBoeXNf ZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+IEBAIC0zOTYsMTkgKzM5NCwxNSBAQCBz dGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9tb2RlX3NldCgKPiAgCQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqX21v ZGUpCj4gIHsKPiAtCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsKPiAtCj4g IAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+ZHB1X2ttcykgewo+ICAJCURQVV9FUlJPUigi aW52YWxpZCBlbmNvZGVyL2ttc1xuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCXZpZF9l bmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX3ZpZChwaHlzX2VuYyk7Cj4gLQo+ICAJaWYgKGFkal9t b2RlKSB7Cj4gIAkJcGh5c19lbmMtPmNhY2hlZF9tb2RlID0gKmFkal9tb2RlOwo+ICAJCWRybV9t b2RlX2RlYnVnX3ByaW50bW9kZWxpbmUoYWRqX21vZGUpOwo+IC0JCURQVV9ERUJVR19WSURFTkMo dmlkX2VuYywgImNhY2hpbmcgbW9kZTpcbiIpOwo+ICsJCURQVV9ERUJVR19WSURFTkMocGh5c19l bmMsICJjYWNoaW5nIG1vZGU6XG4iKTsKPiAgCX0KPiAgCj4gIAlfZHB1X2VuY29kZXJfcGh5c192 aWRfc2V0dXBfaXJxX2h3X2lkeChwaHlzX2VuYyk7Cj4gQEAgLTQxOSw3ICs0MTMsNiBAQCBzdGF0 aWMgaW50IGRwdV9lbmNvZGVyX3BoeXNfdmlkX2NvbnRyb2xfdmJsYW5rX2lycSgKPiAgCQlib29s IGVuYWJsZSkKPiAgewo+ICAJaW50IHJldCA9IDA7Cj4gLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 c192aWQgKnZpZF9lbmM7Cj4gIAlpbnQgcmVmY291bnQ7Cj4gIAo+ICAJaWYgKCFwaHlzX2VuYykg ewo+IEBAIC00MjgsNyArNDIxLDYgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9j b250cm9sX3ZibGFua19pcnEoCj4gIAl9Cj4gIAo+ICAJcmVmY291bnQgPSBhdG9taWNfcmVhZCgm cGh5c19lbmMtPnZibGFua19yZWZjb3VudCk7Cj4gLQl2aWRfZW5jID0gdG9fZHB1X2VuY29kZXJf cGh5c192aWQocGh5c19lbmMpOwo+ICAKPiAgCS8qIFNsYXZlIGVuY29kZXJzIGRvbid0IHJlcG9y dCB2YmxhbmsgKi8KPiAgCWlmICghZHB1X2VuY29kZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNf ZW5jKSkKPiBAQCAtNDUzLDcgKzQ0NSw3IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192 aWRfY29udHJvbF92YmxhbmtfaXJxKAo+ICAJaWYgKHJldCkgewo+ICAJCURSTV9FUlJPUigiZmFp bGVkOiBpZDoldSBpbnRmOiVkIHJldDolZCBlbmFibGU6JWQgcmVmY250OiVkXG4iLAo+ICAJCQkg IERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAo+IC0JCQkgIHZpZF9lbmMtPmh3X2ludGYtPmlkeCAt IElOVEZfMCwgcmV0LCBlbmFibGUsCj4gKwkJCSAgcGh5c19lbmMtPmh3X2ludGYtPmlkeCAtIElO VEZfMCwgcmV0LCBlbmFibGUsCj4gIAkJCSAgcmVmY291bnQpOwo+ICAJfQo+ICAJcmV0dXJuIHJl dDsKPiBAQCAtNDYyLDcgKzQ1NCw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRf Y29udHJvbF92YmxhbmtfaXJxKAo+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9l bmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ICB7Cj4gIAlzdHJ1Y3Qg bXNtX2RybV9wcml2YXRlICpwcml2Owo+IC0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkICp2 aWRfZW5jOwo+ICAJc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7Cj4gIAlzdHJ1Y3QgZHB1X2h3 X2N0bCAqY3RsOwo+ICAJdTMyIGZsdXNoX21hc2sgPSAwOwo+IEBAIC00NzQsNyArNDY1LDYgQEAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYykKPiAgCX0KPiAgCXByaXYgPSBwaHlzX2VuYy0+cGFyZW50LT5kZXYt PmRldl9wcml2YXRlOwo+ICAKPiAtCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX3ZpZChw aHlzX2VuYyk7Cj4gIAljdGwgPSBwaHlzX2VuYy0+aHdfY3RsOwo+ICAKPiAgCWRwdV9ybV9pbml0 X2h3X2l0ZXIoJml0ZXIsIHBoeXNfZW5jLT5wYXJlbnQtPmJhc2UuaWQsIERQVV9IV19CTEtfSU5U Rik7Cj4gQEAgLTQ4MiwyMiArNDcyLDIyIEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNf dmlkX2VuYWJsZShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIAkJc3RydWN0 IGRwdV9od19pbnRmICpod19pbnRmID0gKHN0cnVjdCBkcHVfaHdfaW50ZiAqKWl0ZXIuaHc7Cj4g IAo+ICAJCWlmIChod19pbnRmLT5pZHggPT0gcGh5c19lbmMtPmludGZfaWR4KSB7Cj4gLQkJCXZp ZF9lbmMtPmh3X2ludGYgPSBod19pbnRmOwo+ICsJCQlwaHlzX2VuYy0+aHdfaW50ZiA9IGh3X2lu dGY7Cj4gIAkJCWJyZWFrOwo+ICAJCX0KPiAgCX0KPiAgCj4gLQlpZiAoIXZpZF9lbmMtPmh3X2lu dGYpIHsKPiArCWlmICghcGh5c19lbmMtPmh3X2ludGYpIHsKPiAgCQlEUFVfRVJST1IoImh3X2lu dGYgbm90IGFzc2lnbmVkXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JRFBVX0RFQlVH X1ZJREVOQyh2aWRfZW5jLCAiXG4iKTsKPiArCURQVV9ERUJVR19WSURFTkMocGh5c19lbmMsICJc biIpOwo+ICAKPiAtCWlmIChXQVJOX09OKCF2aWRfZW5jLT5od19pbnRmLT5vcHMuZW5hYmxlX3Rp bWluZykpCj4gKwlpZiAoV0FSTl9PTighcGh5c19lbmMtPmh3X2ludGYtPm9wcy5lbmFibGVfdGlt aW5nKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JZHB1X2VuY29kZXJfaGVscGVyX3NwbGl0X2NvbmZp ZyhwaHlzX2VuYywgdmlkX2VuYy0+aHdfaW50Zi0+aWR4KTsKPiArCWRwdV9lbmNvZGVyX2hlbHBl cl9zcGxpdF9jb25maWcocGh5c19lbmMsIHBoeXNfZW5jLT5od19pbnRmLT5pZHgpOwo+ICAKPiAg CWRwdV9lbmNvZGVyX3BoeXNfdmlkX3NldHVwX3RpbWluZ19lbmdpbmUocGh5c19lbmMpOwo+ICAK PiBAQCAtNTEwLDEyICs1MDAsMTMgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRf ZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKPiAgCQkhZHB1X2VuY29k ZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKPiAgCQlnb3RvIHNraXBfZmx1c2g7Cj4g IAo+IC0JY3RsLT5vcHMuZ2V0X2JpdG1hc2tfaW50ZihjdGwsICZmbHVzaF9tYXNrLCB2aWRfZW5j LT5od19pbnRmLT5pZHgpOwo+ICsJY3RsLT5vcHMuZ2V0X2JpdG1hc2tfaW50ZihjdGwsICZmbHVz aF9tYXNrLCBwaHlzX2VuYy0+aHdfaW50Zi0+aWR4KTsKPiAgCWN0bC0+b3BzLnVwZGF0ZV9wZW5k aW5nX2ZsdXNoKGN0bCwgZmx1c2hfbWFzayk7Cj4gIAo+ICBza2lwX2ZsdXNoOgo+IC0JRFBVX0RF QlVHX1ZJREVOQyh2aWRfZW5jLCAidXBkYXRlIHBlbmRpbmcgZmx1c2ggY3RsICVkIGZsdXNoX21h c2sgJXhcbiIsCj4gLQkJY3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7Cj4gKwlEUFVfREVC VUdfVklERU5DKHBoeXNfZW5jLAo+ICsJCQkgInVwZGF0ZSBwZW5kaW5nIGZsdXNoIGN0bCAlZCBm bHVzaF9tYXNrICV4XG4iLAo+ICsJCQkgY3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7Cj4g IAo+ICAJLyogY3RsX2ZsdXNoICYgdGltaW5nIGVuZ2luZSBlbmFibGUgd2lsbCBiZSB0cmlnZ2Vy ZWQgYnkgZnJhbWV3b3JrICovCj4gIAlpZiAocGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9PSBEUFVf RU5DX0RJU0FCTEVEKQo+IEBAIC01MzIsNyArNTIzLDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29k ZXJfcGh5c192aWRfZGVzdHJveShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4g IAl9Cj4gIAo+ICAJdmlkX2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsK PiAtCURQVV9ERUJVR19WSURFTkModmlkX2VuYywgIlxuIik7Cj4gKwlEUFVfREVCVUdfVklERU5D KHBoeXNfZW5jLCAiXG4iKTsKPiAgCWtmcmVlKHZpZF9lbmMpOwo+ICB9Cj4gIAo+IEBAIC01OTAs NyArNTgxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfcHJlcGFyZV9mb3Jf a2lja29mZigKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsCj4gIAkJc3Ry dWN0IGRwdV9lbmNvZGVyX2tpY2tvZmZfcGFyYW1zICpwYXJhbXMpCj4gIHsKPiAtCXN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsKPiAgCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7 Cj4gIAlpbnQgcmM7Cj4gIAo+IEBAIC01OTgsNyArNTg4LDYgQEAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfcGh5c192aWRfcHJlcGFyZV9mb3Jfa2lja29mZigKPiAgCQlEUFVfRVJST1IoImludmFs aWQgZW5jb2Rlci9wYXJhbWV0ZXJzXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gLQl2aWRfZW5j ID0gdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19lbmMpOwo+ICAKPiAgCWN0bCA9IHBoeXNf ZW5jLT5od19jdGw7Cj4gIAlpZiAoIWN0bCB8fCAhY3RsLT5vcHMud2FpdF9yZXNldF9zdGF0dXMp Cj4gQEAgLTYxMCw3ICs1OTksNyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9w cmVwYXJlX2Zvcl9raWNrb2ZmKAo+ICAJICovCj4gIAlyYyA9IGN0bC0+b3BzLndhaXRfcmVzZXRf c3RhdHVzKGN0bCk7Cj4gIAlpZiAocmMpIHsKPiAtCQlEUFVfRVJST1JfVklERU5DKHZpZF9lbmMs ICJjdGwgJWQgcmVzZXQgZmFpbHVyZTogJWRcbiIsCj4gKwkJRFBVX0VSUk9SX1ZJREVOQyhwaHlz X2VuYywgImN0bCAlZCByZXNldCBmYWlsdXJlOiAlZFxuIiwKPiAgCQkJCWN0bC0+aWR4LCByYyk7 Cj4gIAkJZHB1X2VuY29kZXJfaGVscGVyX3VucmVnaXN0ZXJfaXJxKHBoeXNfZW5jLCBJTlRSX0lE WF9WU1lOQyk7Cj4gIAl9Cj4gQEAgLTYxOSw3ICs2MDgsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX3ZpZF9wcmVwYXJlX2Zvcl9raWNrb2ZmKAo+ICBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykK PiAgewo+ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAtCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzX3ZpZCAqdmlkX2VuYzsKPiAgCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKPiAg CWludCByZXQ7Cj4gIAo+IEBAIC02MzAsMTYgKzYxOCwxMyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykK PiAgCX0KPiAgCXByaXYgPSBwaHlzX2VuYy0+cGFyZW50LT5kZXYtPmRldl9wcml2YXRlOwo+ICAK PiAtCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX3ZpZChwaHlzX2VuYyk7Cj4gLQlpZiAo IXZpZF9lbmMtPmh3X2ludGYgfHwgIXBoeXNfZW5jLT5od19jdGwpIHsKPiArCWlmICghcGh5c19l bmMtPmh3X2ludGYgfHwgIXBoeXNfZW5jLT5od19jdGwpIHsKPiAgCQlEUFVfRVJST1IoImludmFs aWQgaHdfaW50ZiAlZCBod19jdGwgJWRcbiIsCj4gLQkJCQl2aWRfZW5jLT5od19pbnRmICE9IDAs IHBoeXNfZW5jLT5od19jdGwgIT0gMCk7Cj4gKwkJCQlwaHlzX2VuYy0+aHdfaW50ZiAhPSAwLCBw aHlzX2VuYy0+aHdfY3RsICE9IDApOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlEUFVfREVC VUdfVklERU5DKHZpZF9lbmMsICJcbiIpOwo+IC0KPiAtCWlmIChXQVJOX09OKCF2aWRfZW5jLT5o d19pbnRmLT5vcHMuZW5hYmxlX3RpbWluZykpCj4gKwlpZiAoV0FSTl9PTighcGh5c19lbmMtPmh3 X2ludGYtPm9wcy5lbmFibGVfdGltaW5nKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKHBoeXNf ZW5jLT5lbmFibGVfc3RhdGUgPT0gRFBVX0VOQ19ESVNBQkxFRCkgewo+IEBAIC02NDgsNyArNjMz LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfZGlzYWJsZShzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIAl9Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUo cGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7Cj4gLQl2aWRfZW5jLT5od19pbnRm LT5vcHMuZW5hYmxlX3RpbWluZyh2aWRfZW5jLT5od19pbnRmLCAwKTsKPiArCXBoeXNfZW5jLT5o d19pbnRmLT5vcHMuZW5hYmxlX3RpbWluZyhwaHlzX2VuYy0+aHdfaW50ZiwgMCk7Cj4gIAlpZiAo ZHB1X2VuY29kZXJfcGh5c192aWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKPiAgCQlkcHVfZW5jb2Rl cl9waHlzX2luY19wZW5kaW5nKHBoeXNfZW5jKTsKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo cGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7Cj4gQEAgLTY2Nyw3ICs2NTIsNyBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKPiAgCQkJYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdf a2lja29mZl9jbnQsIDApOwo+ICAJCQlEUk1fRVJST1IoIndhaXQgZGlzYWJsZSBmYWlsZWQ6IGlk OiV1IGludGY6JWQgcmV0OiVkXG4iLAo+ICAJCQkJICBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwK PiAtCQkJCSAgdmlkX2VuYy0+aHdfaW50Zi0+aWR4IC0gSU5URl8wLCByZXQpOwo+ICsJCQkJICBw aHlzX2VuYy0+aHdfaW50Zi0+aWR4IC0gSU5URl8wLCByZXQpOwo+ICAJCX0KPiAgCX0KPiAgCj4g QEAgLTY3OCwyNSArNjYzLDIxIEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX2hh bmRsZV9wb3N0X2tpY2tvZmYoCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5j KQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7Cj4gLQlzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5c192aWQgKnZpZF9lbmM7Cj4gIAo+ICAJaWYgKCFwaHlzX2VuYykgewo+ICAJCURQVV9F UlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0Jdmlk X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKPiAtCURQVV9ERUJVR19W SURFTkModmlkX2VuYywgImVuYWJsZV9zdGF0ZSAlZFxuIiwgcGh5c19lbmMtPmVuYWJsZV9zdGF0 ZSk7Cj4gLQo+ICAJLyoKPiAgCSAqIFZpZGVvIG1vZGUgbXVzdCBmbHVzaCBDVEwgYmVmb3JlIGVu YWJsaW5nIHRpbWluZyBlbmdpbmUKPiAgCSAqIFZpZGVvIGVuY29kZXJzIG5lZWQgdG8gdHVybiBv biB0aGVpciBpbnRlcmZhY2VzIG5vdwo+ICAJICovCj4gIAlpZiAocGh5c19lbmMtPmVuYWJsZV9z dGF0ZSA9PSBEUFVfRU5DX0VOQUJMSU5HKSB7Cj4gIAkJdHJhY2VfZHB1X2VuY19waHlzX3ZpZF9w b3N0X2tpY2tvZmYoRFJNSUQocGh5c19lbmMtPnBhcmVudCksCj4gLQkJCQkgICAgdmlkX2VuYy0+ aHdfaW50Zi0+aWR4IC0gSU5URl8wKTsKPiArCQkJCSAgICBwaHlzX2VuYy0+aHdfaW50Zi0+aWR4 IC0gSU5URl8wKTsKPiAgCQlzcGluX2xvY2tfaXJxc2F2ZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2Nr LCBsb2NrX2ZsYWdzKTsKPiAtCQl2aWRfZW5jLT5od19pbnRmLT5vcHMuZW5hYmxlX3RpbWluZyh2 aWRfZW5jLT5od19pbnRmLCAxKTsKPiArCQlwaHlzX2VuYy0+aHdfaW50Zi0+b3BzLmVuYWJsZV90 aW1pbmcocGh5c19lbmMtPmh3X2ludGYsIDEpOwo+ICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo cGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7Cj4gIAkJcGh5c19lbmMtPmVuYWJs ZV9zdGF0ZSA9IERQVV9FTkNfRU5BQkxFRDsKPiAgCX0KPiBAQCAtNzA1LDE2ICs2ODYsMTMgQEAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfaGFuZGxlX3Bvc3Rfa2lja29mZigKPiAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfaXJxX2NvbnRyb2woc3RydWN0IGRwdV9l bmNvZGVyX3BoeXMgKnBoeXNfZW5jLAo+ICAJCWJvb2wgZW5hYmxlKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmM7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICgh cGh5c19lbmMpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9w aHlzX3ZpZChwaHlzX2VuYyk7Cj4gLQo+ICAJdHJhY2VfZHB1X2VuY19waHlzX3ZpZF9pcnFfY3Ry bChEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwKPiAtCQkJICAgIHZpZF9lbmMtPmh3X2ludGYtPmlk eCAtIElOVEZfMCwKPiArCQkJICAgIHBoeXNfZW5jLT5od19pbnRmLT5pZHggLSBJTlRGXzAsCj4g IAkJCSAgICBlbmFibGUsCj4gIAkJCSAgICBhdG9taWNfcmVhZCgmcGh5c19lbmMtPnZibGFua19y ZWZjb3VudCkpOwo+ICAKPiBAQCAtNzMzLDE5ICs3MTEsMTYgQEAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfcGh5c192aWRfaXJxX2NvbnRyb2woc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNf ZW5jLAo+ICBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3BoeXNfdmlkX2dldF9saW5lX2NvdW50KAo+ ICAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKPiAgewo+IC0Jc3RydWN0IGRw dV9lbmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jOwo+IC0KPiAgCWlmICghcGh5c19lbmMpCj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pc19tYXN0 ZXIocGh5c19lbmMpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCXZpZF9lbmMgPSB0b19k cHVfZW5jb2Rlcl9waHlzX3ZpZChwaHlzX2VuYyk7Cj4gLQlpZiAoIXZpZF9lbmMtPmh3X2ludGYg fHwgIXZpZF9lbmMtPmh3X2ludGYtPm9wcy5nZXRfbGluZV9jb3VudCkKPiArCWlmICghcGh5c19l bmMtPmh3X2ludGYgfHwgIXBoeXNfZW5jLT5od19pbnRmLT5vcHMuZ2V0X2xpbmVfY291bnQpCj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JcmV0dXJuIHZpZF9lbmMtPmh3X2ludGYtPm9wcy5n ZXRfbGluZV9jb3VudCh2aWRfZW5jLT5od19pbnRmKTsKPiArCXJldHVybiBwaHlzX2VuYy0+aHdf aW50Zi0+b3BzLmdldF9saW5lX2NvdW50KHBoeXNfZW5jLT5od19pbnRmKTsKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfaW5pdF9vcHMoc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXNfb3BzICpvcHMpCj4gQEAgLTc5Miw3ICs3NjcsNyBAQCBzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cyAqZHB1X2VuY29kZXJfcGh5c192aWRfaW5pdCgKPiAgCXBoeXNfZW5jLT5od19tZHB0 b3AgPSBwLT5kcHVfa21zLT5od19tZHA7Cj4gIAlwaHlzX2VuYy0+aW50Zl9pZHggPSBwLT5pbnRm X2lkeDsKPiAgCj4gLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJcbiIpOwo+ICsJRFBVX0RF QlVHX1ZJREVOQyhwaHlzX2VuYywgIlxuIik7Cj4gIAo+ICAJZHB1X2VuY29kZXJfcGh5c192aWRf aW5pdF9vcHMoJnBoeXNfZW5jLT5vcHMpOwo+ICAJcGh5c19lbmMtPnBhcmVudCA9IHAtPnBhcmVu dDsKPiBAQCAtODI2LDcgKzgwMSw3IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpkcHVfZW5j b2Rlcl9waHlzX3ZpZF9pbml0KAo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmcGh5c19lbmMtPnBl bmRpbmdfa2lja29mZl93cSk7Cj4gIAlwaHlzX2VuYy0+ZW5hYmxlX3N0YXRlID0gRFBVX0VOQ19E SVNBQkxFRDsKPiAgCj4gLQlEUFVfREVCVUdfVklERU5DKHZpZF9lbmMsICJjcmVhdGVkIGludGYg aWR4OiVkXG4iLCBwLT5pbnRmX2lkeCk7Cj4gKwlEUFVfREVCVUdfVklERU5DKHBoeXNfZW5jLCAi Y3JlYXRlZCBpbnRmIGlkeDolZFxuIiwgcC0+aW50Zl9pZHgpOwo+ICAKPiAgCXJldHVybiBwaHlz X2VuYzsKPiAgCj4gLS0gCj4gVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlz IGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKPiBhIExpbnV4IEZvdW5kYXRpb24g Q29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBGcmVlZHJlbm8gbWFpbGluZyBsaXN0Cj4gRnJlZWRyZW5vQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZnJlZWRyZW5vCgotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwg R29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZnJlZWRyZW5v