From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH 6/7] drm/i915: Switch plane handling to atomic helpers Date: Fri, 14 Nov 2014 11:39:57 +0200 Message-ID: <20141114093957.GY10649@intel.com> References: <1415904206-22548-1-git-send-email-matthew.d.roper@intel.com> <1415904206-22548-7-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1415904206-22548-7-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMTMsIDIwMTQgYXQgMTA6NDM6MjVBTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBOb3cgdGhhdCB3ZSBoYXZlIGhvb2tzIHRvIGVuYWJsZSB0aGUgYXRvbWljIHBsYW5lIGhl bHBlcnMsIHdlIGNhbiB1c2UKPiB0aGUgcGxhbmUgaGVscGVycyBmb3Igb3VyIC51cGRhdGVfcGxh bmUoKSBhbmQgLmRpc2FibGVfcGxhbmUoKQo+IGVudHJ5cG9pbnRzLgo+IAo+IEV2ZW4gdGhvdWdo IHdlJ2QgYWxyZWFkeSByZWZhY3RvcmVkIG91ciBwbGFuZSBoYW5kbGluZyBjb2RlIGludG8KPiBj aGVjay9jb21taXQsIHdlIHN0aWxsIGhhdmUgdG8gcmV3b3JrIHNvbWUgb2YgdGhhdCBsb2dpYyBo ZXJlIGFzIHdlIG1ha2UKPiB0aGUgdHJhbnNpdGlvbi4gIFRoZSBhdG9taWMgcGxhbmUgaGVscGVy cyBub3cgY2FsbCBwcmVwYXJlX2ZiL2NsZWFudXBfZmIKPiBmb3IgdXMsIHNvIG5vdGUgdGhlIGZv bGxvd2luZzoKPiAgLSAnY29tbWl0JyBzaG91bGQgbm90IGxvbmdlciB1bnBpbiB0aGUgb2xkIG9i amVjdDsgdGhlIGNsZWFudXBfZmIgd2lsbAo+ICAgIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cwo+ ICAtIHByZXBhcmVfZmIgb25seSBnZXRzIGNhbGxlZCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgYW4g ZmIsIHNvIHRoZQo+ICAgIGludGVybmFsICdkaXNhYmxlJyBjb2RlIG5lZWRzIHRvIHVwZGF0ZSBm cm9udGJ1ZmZlciB0cmFja2luZwo+ICAtIHRoZSBjdXJzb3IgcGxhbmUgY29kZSBuZXZlciBoYWQg J3ByZXBhcmUnIGNvZGUgc2VwYXJhdGVkIGZyb20gaXRzCj4gICAgJ2NvbW1pdCcgZnVuY3Rpb24s IHNvIGEgbG90IG9mIHRoZSBjdXJzb3IncyAnY29tbWl0JyBuZWVkcyB0byBiZQo+ICAgIGRyb3Bw ZWQgc2luY2UgcHJlcGFyZV9mYiBhbHJlYWR5IGRvZXMgaXQgZm9yIHVzCj4gIC0gd2l0aCBhbGwg dGhlIHBpbm5pbmcgd29yayByZW1vdmVkIGZyb20gY3Vyc29yIGNvbW1pdCwgaXQgY2FuIG5vCj4g ICAgbG9uZ2VyIGZhaWwgYW5kIHNob3VsZCByZXR1cm4gdm9pZCByYXRoZXIgdGhhbiBpbnQKPiAK PiBUZXN0Y2FzZTogaWd0L2ttc19wbGFuZQo+IFRlc3RjYXNlOiBpZ3Qva21zX3VuaXZlcnNhbF9w bGFuZQo+IFRlc3RjYXNlOiBpZ3Qva21zX2N1cnNvcl9jcmMKPiBTaWduZWQtb2ZmLWJ5OiBNYXR0 IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyNTUgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTIyICsr LS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMzM2 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRl eCAzMmEyYjEyLi44ZDVhM2I0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IEBAIC04Mjg1LDE3ICs4Mjg1LDE1IEBAIHN0YXRpYyBib29sIGN1cnNvcl9zaXplX29rKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGlj IGludCBpbnRlbF9jcnRjX2N1cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAt CQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgdWlu dDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKPiArc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19j dXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkJICAgICAgdWludDMyX3Qgd2lkdGgsIHVp bnQzMl90IGhlaWdodCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAl1bnNpZ25lZCBv bGRfd2lkdGg7Cj4gIAl1aW50MzJfdCBhZGRyOwo+IC0JaW50IHJldDsKPiAgCj4gIAkvKiBpZiB3 ZSB3YW50IHRvIHR1cm4gb2ZmIHRoZSBjdXJzb3IgaWdub3JlIHdpZHRoIGFuZCBoZWlnaHQgKi8K PiAgCWlmICghb2JqKSB7Cj4gQEAgLTgzMDUsNjQgKzgzMDMsMTQgQEAgc3RhdGljIGludCBpbnRl bF9jcnRjX2N1cnNvcl9zZXRfb2JqKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlnb3RvIGZp bmlzaDsKPiAgCX0KPiAgCj4gLQkvKiB3ZSBvbmx5IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYg Y3Vyc29yIGlzIG5vbi1waHkgKi8KPiArCS8qIHBsYW5lIGhlbHBlcidzIHByZXBhcmVfZmIoKSBh bHJlYWR5IGhhbmRsZWQgcGlubmluZyAqLwo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+IC0JaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkgewo+ IC0JCXVuc2lnbmVkIGFsaWdubWVudDsKPiAtCj4gLQkJLyoKPiAtCQkgKiBHbG9iYWwgZ3R0IHB0 ZSByZWdpc3RlcnMgYXJlIHNwZWNpYWwgcmVnaXN0ZXJzIHdoaWNoIGFjdHVhbGx5Cj4gLQkJICog Zm9yd2FyZCB3cml0ZXMgdG8gYSBjaHVuayBvZiBzeXN0ZW0gbWVtb3J5LiBXaGljaCBtZWFucyB0 aGF0Cj4gLQkJICogdGhlcmUgaXMgbm8gcmlzayB0aGF0IHRoZSByZWdpc3RlciB2YWx1ZXMgZGlz YXBwZWFyIGFzIHNvb24KPiAtCQkgKiBhcyB3ZSBjYWxsIGludGVsX3J1bnRpbWVfcG1fcHV0KCks IHNvIGl0IGlzIGNvcnJlY3QgdG8gd3JhcAo+IC0JCSAqIG9ubHkgdGhlIHBpbi91bnBpbi9mZW5j ZSBhbmQgbm90IG1vcmUuCj4gLQkJICovCj4gLQkJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3By aXYpOwo+IC0KPiAtCQkvKiBOb3RlIHRoYXQgdGhlIHcvYSBhbHNvIHJlcXVpcmVzIDIgUFRFIG9m IHBhZGRpbmcgZm9sbG93aW5nCj4gLQkJICogdGhlIGJvLiBXZSBjdXJyZW50bHkgZmlsbCBhbGwg dW51c2VkIFBURSB3aXRoIHRoZSBzaGFkb3cKPiAtCQkgKiBwYWdlIGFuZCBzbyB3ZSBzaG91bGQg YWx3YXlzIGhhdmUgdmFsaWQgUFRFIGZvbGxvd2luZyB0aGUKPiAtCQkgKiBjdXJzb3IgcHJldmVu dGluZyB0aGUgVlQtZCB3YXJuaW5nLgo+IC0JCSAqLwo+IC0JCWFsaWdubWVudCA9IDA7Cj4gLQkJ aWYgKG5lZWRfdnRkX3dhKGRldikpCj4gLQkJCWFsaWdubWVudCA9IDY0KjEwMjQ7Cj4gLQo+IC0J CXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFsaWdubWVu dCwgTlVMTCk7Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8g bW92ZSBjdXJzb3IgYm8gaW50byB0aGUgR1RUXG4iKTsKPiAtCQkJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwo+IC0JCQlnb3RvIGZhaWxfbG9ja2VkOwo+IC0JCX0KPiAtCj4gLQkJcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJ RFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHJlbGVhc2UgZmVuY2UgZm9yIGN1cnNvciIpOwo+IC0J CQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gLQkJCWdvdG8gZmFpbF91bnBpbjsK PiAtCQl9Cj4gLQoKU28gSSdtIG5vdyB3b25kZXJpbmcgd2hlcmUgYWxsIHRoaXMgY29kZSBpcyBk aXNhcHBlYXJpbmcgaW50bz8KCkFueXdheSB0aGlzIGNvbmZsaWN0cyBwcmV0dHkgaGFyc2hseSB3 aXRoIEd1dGF2bydzIHBlbmRpbmcgcGF0Y2hlcy4gSQp0aGluayBhdCBsZWFzdCB0aGUgcGFydGlj dWxhciBwYXRjaCB0b3VjaGluZyB0aGlzIGhhZCB0aGUgci1iIGFscmVhZHkKKGFwYXJ0IGZyb20g YSBzdGFsZSBibyB1bnJlIGxlZnQgYmVoaW5kLCB3aGljaCBjYW4gZWFzaWx5IGJlIGZpeGVkIHVw CndoZW4gYXBwbHlpbmcgdGhlIHBhdGNoKS4KClNvIEkgd291bGQgbGlrZSB0byBnZXQgR3VzdGF2 bydzIHBhdGNoZXMgaW4gZmlyc3QsIGVzcGVjaWFsbHkgYXMgdGhleQptb3ZlIHRoZSBjb2RlIGFs cmVhZHkgdG8gdGhlIHJpZ2h0IGRpcmVjdGlvbi4gV2UgYWxzbyBoYXZlIGJ1Z3MgaW4gdGhlCmN1 cnJlbnQgY29kZSB0aGF0IG5lZWQgdG8gZml4ZWQuIEd1c3Rhdm8ncyBwYXRjaGVzIGNhbWUgY2xv c2UsIGJ1dCBub3QKcXVpdGUgdGhlcmUgSUlSQy4gU28gSSB0aGluayBpdCB3b3VsZCBiZSBuaWNl IHRvIGdldCB0aGF0IHN0dWZmIGRvbmUKZmlyc3QsIGFuZCB0aGVuIHRvc3MgdGhpcyBhdG9taWMg c3R1ZmYgb24gdG9wLgoKCj4gKwlpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3Bo eXNpY2FsKQo+ICAJCWFkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKPiAtCj4g LQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+IC0JfSBlbHNlIHsKPiAtCQlpbnQg YWxpZ24gPSBJU19JODMwKGRldikgPyAxNiAqIDEwMjQgOiAyNTY7Cj4gLQkJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X2F0dGFjaF9waHlzKG9iaiwgYWxpZ24pOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJ RFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGF0dGFjaCBwaHlzIG9iamVjdFxuIik7Cj4gLQkJCWdv dG8gZmFpbF9sb2NrZWQ7Cj4gLQkJfQo+ICsJZWxzZQo+ICAJCWFkZHIgPSBvYmotPnBoeXNfaGFu ZGxlLT5idXNhZGRyOwo+IC0JfQo+ICAKPiAgIGZpbmlzaDoKPiAtCWlmIChpbnRlbF9jcnRjLT5j dXJzb3JfYm8pIHsKPiAtCQlpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNp Y2FsKQo+IC0JCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKGludGVs X2NydGMtPmN1cnNvcl9ibyk7Cj4gLQl9Cj4gLQo+IC0JaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxf Y3J0Yy0+Y3Vyc29yX2JvLCBvYmosCj4gLQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBp cGUpKTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCW9sZF93 aWR0aCA9IGludGVsX2NydGMtPmN1cnNvcl93aWR0aDsKPiBAQCAtODM3OSwxMyArODMyNyw2IEBA IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAo+ICAJCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZF Ul9DVVJTT1IocGlwZSkpOwo+ICAJfQo+IC0KPiAtCXJldHVybiAwOwo+IC1mYWlsX3VucGluOgo+ IC0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZShvYmopOwo+IC1mYWls X2xvY2tlZDoKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19nYW1tYV9zZXQoc3RydWN0 IGRybV9jcnRjICpjcnRjLCB1MTYgKnJlZCwgdTE2ICpncmVlbiwKPiBAQCAtMTE1NDQsNyArMTE0 ODUsNiBAQCBkaXNhYmxlX3VucGluOgo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+ICAJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJfb2JqKHBsYW5lLT5mYiksIE5VTEwsCj4g IAkJCSAgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShpbnRlbF9jcnRjLT5waXBlKSk7Cj4gLQlp bnRlbF91bnBpbl9mYl9vYmooaW50ZWxfZmJfb2JqKHBsYW5lLT5mYikpOwo+ICAJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlwbGFuZS0+ZmIgPSBOVUxMOwo+ICAKPiBAQCAt MTE1NjgsNDIgKzExNTA4LDYgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgCQkJCQkgICAgIGZhbHNlLCB0cnVlLCAmc3RhdGUtPnZpc2libGUp Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50Cj4gLWludGVsX3ByZXBhcmVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNy dGM7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWVudW0gcGlwZSBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBp bnRlbF9mYl9vYmooZmIpOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmog PSBpbnRlbF9mYl9vYmoocGxhbmUtPmZiKTsKPiAtCWludCByZXQ7Cj4gLQo+IC0JaW50ZWxfY3J0 Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKGNydGMpOwo+IC0KPiAtCWlmIChpbnRlbF9jcnRjX2hh c19wZW5kaW5nX2ZsaXAoY3J0YykpIHsKPiAtCQlEUk1fRVJST1IoInBpcGUgaXMgc3RpbGwgYnVz eSB3aXRoIGFuIG9sZCBwYWdlZmxpcFxuIik7Cj4gLQkJcmV0dXJuIC1FQlVTWTsKPiAtCX0KPiAt Cj4gLQlpZiAob2xkX29iaiAhPSBvYmopIHsKPiAtCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gLQkJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoocGxhbmUsIGZiLCBO VUxMKTsKPiAtCQlpZiAocmV0ID09IDApCj4gLQkJCWk5MTVfZ2VtX3RyYWNrX2ZiKG9sZF9vYmos IG9iaiwKPiAtCQkJCQkgIElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkocGlwZSkpOwo+IC0JCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWlmIChyZXQgIT0gMCkgewo+IC0J CQlEUk1fREVCVUdfS01TKCJwaW4gJiBmZW5jZSBmYWlsZWRcbiIpOwo+IC0JCQlyZXR1cm4gcmV0 Owo+IC0JCX0KPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQK PiAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gQEAgLTExNjE0LDkgKzEx NTE4LDcgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0Jc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gcGxhbmUtPmZiOwo+ICAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2xkX29iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+ZmIpOwo+ICAJc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgCXN0cnVj dCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7Cj4gIAo+IEBAIC0xMTY4Nyw2MiArMTE1ODks NiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgCQlpbnRlbF91cGRhdGVfZmJjKGRldik7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gIAl9Cj4gLQo+IC0JaWYgKG9sZF9mYiAmJiBvbGRfZmIgIT0gZmIpIHsKPiAt CQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+IC0JCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2 LCBpbnRlbF9jcnRjLT5waXBlKTsKPiAtCj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+IC0JCWludGVsX3VucGluX2ZiX29iaihvbGRfb2JqKTsKPiAtCQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIGludAo+IC1pbnRl bF9wcmltYXJ5X3BsYW5lX3NldHBsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gLQkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGlu dCBjcnRjX3gsIGludCBjcnRjX3ksCj4gLQkJCSAgICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5z aWduZWQgaW50IGNydGNfaCwKPiAtCQkJICAgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3Jj X3ksCj4gLQkJCSAgICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQo+IC17Cj4gLQlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3RhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXN0YXRl LmJhc2UuY3J0YyA9IGNydGM7Cj4gLQlzdGF0ZS5iYXNlLmZiID0gZmI7Cj4gLQo+IC0JLyogc2Ft cGxlIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZpeGVkIHBvaW50ICovCj4gLQlzdGF0ZS5zcmMueDEg PSBzcmNfeDsKPiAtCXN0YXRlLnNyYy54MiA9IHNyY194ICsgc3JjX3c7Cj4gLQlzdGF0ZS5zcmMu eTEgPSBzcmNfeTsKPiAtCXN0YXRlLnNyYy55MiA9IHNyY195ICsgc3JjX2g7Cj4gLQo+IC0JLyog aW50ZWdlciBwaXhlbHMgKi8KPiAtCXN0YXRlLmRzdC54MSA9IGNydGNfeDsKPiAtCXN0YXRlLmRz dC54MiA9IGNydGNfeCArIGNydGNfdzsKPiAtCXN0YXRlLmRzdC55MSA9IGNydGNfeTsKPiAtCXN0 YXRlLmRzdC55MiA9IGNydGNfeSArIGNydGNfaDsKPiAtCj4gLQlzdGF0ZS5jbGlwLngxID0gMDsK PiAtCXN0YXRlLmNsaXAueTEgPSAwOwo+IC0Jc3RhdGUuY2xpcC54MiA9IGludGVsX2NydGMtPmFj dGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IDogMDsKPiAtCXN0YXRlLmNsaXAu eTIgPSBpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfaCA6 IDA7Cj4gLQo+IC0Jc3RhdGUub3JpZ19zcmMgPSBzdGF0ZS5zcmM7Cj4gLQlzdGF0ZS5vcmlnX2Rz dCA9IHN0YXRlLmRzdDsKPiAtCj4gLQlyZXQgPSBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHBs YW5lLCAmc3RhdGUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJldCA9 IGludGVsX3ByZXBhcmVfcHJpbWFyeV9wbGFuZShwbGFuZSwgJnN0YXRlKTsKPiAtCWlmIChyZXQp Cj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShwbGFu ZSwgJnN0YXRlKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyogQ29tbW9uIGRlc3Ry dWN0aW9uIGZ1bmN0aW9uIGZvciBib3RoIHByaW1hcnkgYW5kIGN1cnNvciBwbGFuZXMgKi8KPiBA QCAtMTE3NTUsOCArMTE2MDEsOCBAQCB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUpCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2Z1bmNzIGludGVsX3ByaW1hcnlfcGxhbmVfZnVuY3MgPSB7Cj4gLQkudXBkYXRlX3BsYW5lID0g aW50ZWxfcHJpbWFyeV9wbGFuZV9zZXRwbGFuZSwKPiAtCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxf cHJpbWFyeV9wbGFuZV9kaXNhYmxlLAo+ICsJLnVwZGF0ZV9wbGFuZSA9IGRybV9wbGFuZV9oZWxw ZXJfdXBkYXRlLAo+ICsJLmRpc2FibGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX2Rpc2FibGUs Cj4gIAkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gIAkuc2V0X3Byb3BlcnR5ID0g aW50ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBp bnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gQEAgLTExODE2LDE1ICsxMTY2MiwyMiBAQCBz dGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCXJldHVybiAmcHJpbWFyeS0+YmFzZTsKPiAgfQo+ICAKPiAt c3RhdGljIGludAo+ICtzdGF0aWMgdm9pZAo+ICBpbnRlbF9jdXJzb3JfcGxhbmVfZGlzYWJsZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgewo+ICsJc3RydWN0IGludGVsX3BsYW5lICppbnRl bF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiArCj4gIAlpZiAoIXBsYW5lLT5mYikK PiAtCQlyZXR1cm4gMDsKPiArCQlyZXR1cm47Cj4gIAo+ICAJQlVHX09OKCFwbGFuZS0+Y3J0Yyk7 Cj4gIAo+IC0JcmV0dXJuIGludGVsX2NydGNfY3Vyc29yX3NldF9vYmoocGxhbmUtPmNydGMsIE5V TEwsIDAsIDApOwo+ICsJaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihwbGFuZS0+Y3J0YywgTlVM TCwgMCwgMCk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmcGxhbmUtPmRldi0+c3RydWN0X211dGV4KTsK PiArCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIpLCBOVUxMLAo+ICsJ CQkgIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihpbnRlbF9wbGFuZS0+cGlwZSkpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZwbGFuZS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg aW50Cj4gQEAgLTExODM4LDcgKzExNjkxLDYgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmc3RhdGUt PnNyYzsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKPiAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+IC0J aW50IGNydGNfdywgY3J0Y19oOwo+ICAJdW5zaWduZWQgc3RyaWRlOwo+ICAJaW50IHJldDsKPiAg Cj4gQEAgLTExODU2LDE1ICsxMTcwOCwxNCBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJLyogQ2hlY2sgZm9y IHdoaWNoIGN1cnNvciB0eXBlcyB3ZSBzdXBwb3J0ICovCj4gLQljcnRjX3cgPSBkcm1fcmVjdF93 aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3Rh dGUtPm9yaWdfZHN0KTsKPiAtCWlmICghY3Vyc29yX3NpemVfb2soZGV2LCBjcnRjX3csIGNydGNf aCkpIHsKPiAtCQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gbm90IHN1cHBvcnRlZFxuIik7 Cj4gKwlpZiAoIWN1cnNvcl9zaXplX29rKGRldiwgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+ YmFzZS5jcnRjX2gpKSB7Cj4gKwkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5v dCBzdXBwb3J0ZWRcbiIsCj4gKwkJCSAgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5j cnRjX2gpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAtCXN0cmlkZSA9IHJvdW5k dXBfcG93X29mX3R3byhjcnRjX3cpICogNDsKPiAtCWlmIChvYmotPmJhc2Uuc2l6ZSA8IHN0cmlk ZSAqIGNydGNfaCkgewo+ICsJc3RyaWRlID0gcm91bmR1cF9wb3dfb2ZfdHdvKHN0YXRlLT5iYXNl LmNydGNfdykgKiA0Owo+ICsJaWYgKG9iai0+YmFzZS5zaXplIDwgc3RyaWRlICogc3RhdGUtPmJh c2UuY3J0Y19oKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiYnVmZmVyIGlzIHRvbyBzbWFsbFxuIik7 Cj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAl9Cj4gQEAgLTExODgzLDcgKzExNzM0LDcgQEAgaW50 ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIGludAo+ICtzdGF0aWMgdm9pZAo+ICBpbnRlbF9jb21t aXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgIHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gIHsKPiBAQCAtMTE4OTMsMTAgKzExNzQ0LDkgQEAg aW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4g IAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZm ZXIoZmIpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5v Ymo7Cj4gLQlpbnQgY3J0Y193LCBjcnRjX2g7Cj4gIAo+IC0JY3J0Yy0+Y3Vyc29yX3ggPSBzdGF0 ZS0+b3JpZ19kc3QueDE7Cj4gLQljcnRjLT5jdXJzb3JfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsK PiArCWNydGMtPmN1cnNvcl94ID0gc3RhdGUtPmJhc2UuY3J0Y194Owo+ICsJY3J0Yy0+Y3Vyc29y X3kgPSBzdGF0ZS0+YmFzZS5jcnRjX3k7Cj4gIAo+ICAJaW50ZWxfcGxhbmUtPmNydGNfeCA9IHN0 YXRlLT5vcmlnX2RzdC54MTsKPiAgCWludGVsX3BsYW5lLT5jcnRjX3kgPSBzdGF0ZS0+b3JpZ19k c3QueTE7Cj4gQEAgLTExOTA5LDYzICsxMTc1OSwyMCBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaW50ZWxfcGxhbmUtPm9iaiA9IG9iajsK PiAgCj4gIAlpZiAoZmIgIT0gY3J0Yy0+Y3Vyc29yLT5mYikgewo+IC0JCWNydGNfdyA9IGRybV9y ZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+IC0JCWNydGNfaCA9IGRybV9yZWN0X2hlaWdo dCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCQlyZXR1cm4gaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29i aihjcnRjLCBvYmosIGNydGNfdywgY3J0Y19oKTsKPiArCQlpbnRlbF9jcnRjX2N1cnNvcl9zZXRf b2JqKGNydGMsIG9iaiwKPiArCQkJCQkgIHN0YXRlLT5iYXNlLmNydGNfdywKPiArCQkJCQkgIHN0 YXRlLT5iYXNlLmNydGNfaCk7Cj4gIAl9IGVsc2Ugewo+ICAJCWludGVsX2NydGNfdXBkYXRlX2N1 cnNvcihjcnRjLCBzdGF0ZS0+dmlzaWJsZSk7Cj4gIAo+ICAJCWludGVsX2Zyb250YnVmZmVyX2Zs aXAoY3J0Yy0+ZGV2LAo+ICAJCQkJICAgICAgIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihpbnRl bF9jcnRjLT5waXBlKSk7Cj4gLQo+IC0JCXJldHVybiAwOwo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0 aWMgaW50Cj4gLWludGVsX2N1cnNvcl9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiAtCQkJICB1bnNpZ25lZCBpbnQgY3J0Y193 LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAo+IC0JCQkgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBz cmNfeSwKPiAtCQkJICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4gLXsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZTsKPiAtCWludCByZXQ7Cj4gLQo+IC0Jc3RhdGUu YmFzZS5jcnRjID0gY3J0YzsKPiAtCXN0YXRlLmJhc2UuZmIgPSBmYjsKPiAtCj4gLQkvKiBzYW1w bGUgY29vcmRpbmF0ZXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKi8KPiAtCXN0YXRlLnNyYy54MSA9 IHNyY194Owo+IC0Jc3RhdGUuc3JjLngyID0gc3JjX3ggKyBzcmNfdzsKPiAtCXN0YXRlLnNyYy55 MSA9IHNyY195Owo+IC0Jc3RhdGUuc3JjLnkyID0gc3JjX3kgKyBzcmNfaDsKPiAtCj4gLQkvKiBp bnRlZ2VyIHBpeGVscyAqLwo+IC0Jc3RhdGUuZHN0LngxID0gY3J0Y194Owo+IC0Jc3RhdGUuZHN0 LngyID0gY3J0Y194ICsgY3J0Y193Owo+IC0Jc3RhdGUuZHN0LnkxID0gY3J0Y195Owo+IC0Jc3Rh dGUuZHN0LnkyID0gY3J0Y195ICsgY3J0Y19oOwo+IC0KPiAtCXN0YXRlLmNsaXAueDEgPSAwOwo+ IC0Jc3RhdGUuY2xpcC55MSA9IDA7Cj4gLQlzdGF0ZS5jbGlwLngyID0gaW50ZWxfY3J0Yy0+YWN0 aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgOiAwOwo+IC0Jc3RhdGUuY2xpcC55 MiA9IGludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY19oIDog MDsKPiAtCj4gLQlzdGF0ZS5vcmlnX3NyYyA9IHN0YXRlLnNyYzsKPiAtCXN0YXRlLm9yaWdfZHN0 ID0gc3RhdGUuZHN0Owo+IC0KPiAtCXJldCA9IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShwbGFu ZSwgJnN0YXRlKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXR1cm4g aW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShwbGFuZSwgJnN0YXRlKTsKPiAtfQo+IC0KPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNz ID0gewo+IC0JLnVwZGF0ZV9wbGFuZSA9IGludGVsX2N1cnNvcl9wbGFuZV91cGRhdGUsCj4gLQku ZGlzYWJsZV9wbGFuZSA9IGludGVsX2N1cnNvcl9wbGFuZV9kaXNhYmxlLAo+ICsJLnVwZGF0ZV9w bGFuZSA9IGRybV9wbGFuZV9oZWxwZXJfdXBkYXRlLAo+ICsJLmRpc2FibGVfcGxhbmUgPSBkcm1f cGxhbmVfaGVscGVyX2Rpc2FibGUsCj4gIAkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ks Cj4gIAkuc2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAo+ICAJLmF0b21p Y19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCBkMzY3N2MzLi4yOGNjYWY3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMTEwNiw3ICsxMTA2LDYgQEAgaW50 ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJdWludDMy X3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7Cj4gIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZzdGF0ZS0+c3JjOwo+ICAJc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmc3RhdGUtPmRzdDsKPiAt CXN0cnVjdCBkcm1fcmVjdCAqb3JpZ19zcmMgPSAmc3RhdGUtPm9yaWdfc3JjOwo+ICAJY29uc3Qg c3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+ICAJaW50IGhzY2FsZSwgdnNj YWxlOwo+ICAJaW50IG1heF9zY2FsZSwgbWluX3NjYWxlOwo+IEBAIC0xMTg3LDEwICsxMTg2LDEw IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CQkJCSAgICBpbnRlbF9wbGFuZS0+cm90YXRpb24pOwo+ICAKPiAgCQkvKiBzYW5pdHkgY2hlY2sg dG8gbWFrZSBzdXJlIHRoZSBzcmMgdmlld3BvcnQgd2Fzbid0IGVubGFyZ2VkICovCj4gLQkJV0FS Tl9PTihzcmMtPngxIDwgKGludCkgb3JpZ19zcmMtPngxIHx8Cj4gLQkJCXNyYy0+eTEgPCAoaW50 KSBvcmlnX3NyYy0+eTEgfHwKPiAtCQkJc3JjLT54MiA+IChpbnQpIG9yaWdfc3JjLT54MiB8fAo+ IC0JCQlzcmMtPnkyID4gKGludCkgb3JpZ19zcmMtPnkyKTsKPiArCQlXQVJOX09OKHNyYy0+eDEg PCAoaW50KSBzdGF0ZS0+YmFzZS5zcmNfeCB8fAo+ICsJCQlzcmMtPnkxIDwgKGludCkgc3RhdGUt PmJhc2Uuc3JjX3kgfHwKPiArCQkJc3JjLT54MiA+IChpbnQpIHN0YXRlLT5iYXNlLnNyY194ICsg c3RhdGUtPmJhc2Uuc3JjX3cgfHwKPiArCQkJc3JjLT55MiA+IChpbnQpIHN0YXRlLT5iYXNlLnNy Y195ICsgc3RhdGUtPmJhc2Uuc3JjX2gpOwo+ICAKPiAgCQkvKgo+ICAJCSAqIEhhcmR3YXJlIGRv ZXNuJ3QgaGFuZGxlIHN1YnBpeGVsIGNvb3JkaW5hdGVzLgo+IEBAIC0xMjU4LDQxICsxMjU3LDYg QEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQKPiAtaW50ZWxfcHJlcGFyZV9zcHJpdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gLQkJCSAgIHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0 cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4g LQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2xkX29iaiA9IGludGVsX3BsYW5lLT5vYmo7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChv bGRfb2JqICE9IG9iaikgewo+IC0JCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAt Cj4gLQkJLyogTm90ZSB0aGF0IHRoaXMgd2lsbCBhcHBseSB0aGUgVlQtZCB3b3JrYXJvdW5kIGZv ciBzY2Fub3V0cywKPiAtCQkgKiB3aGljaCBpcyBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gcmVxdWly ZWQgZm9yIHNwcml0ZXMuIChUaGUKPiAtCQkgKiBwcmltYXJ5IHBsYW5lIHJlcXVpcmVzIDI1Nktp QiBhbGlnbm1lbnQgd2l0aCA2NCBQVEUgcGFkZGluZywKPiAtCQkgKiB0aGUgc3ByaXRlIHBsYW5l cyBvbmx5IHJlcXVpcmUgMTI4S2lCIGFsaWdubWVudCBhbmQgMzIgUFRFCj4gLQkJICogcGFkZGlu Zy4KPiAtCQkgKi8KPiAtCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwbGFuZSwg ZmIsIE5VTEwpOwo+IC0JCWlmIChyZXQgPT0gMCkKPiAtCQkJaTkxNV9nZW1fdHJhY2tfZmIob2xk X29iaiwgb2JqLAo+IC0JCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfU1BSSVRFKHBpcGUpKTsKPiAt CQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlpZiAocmV0KQo+IC0JCQly ZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9p ZAo+ICBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICAJCQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gQEAgLTEzMDQsNyArMTI2 OCw2IEBAIGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2xkX29iaiA9IGludGVsX3BsYW5lLT5vYmo7Cj4gIAlpbnQgY3J0Y194LCBjcnRjX3k7 Cj4gIAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRjX2g7Cj4gIAl1aW50MzJfdCBzcmNfeCwgc3Jj X3ksIHNyY193LCBzcmNfaDsKPiBAQCAtMTM2Miw2OCArMTMyNSw2IEBAIGludGVsX2NvbW1pdF9z cHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJaWYgKCFwcmltYXJ5X3dh c19lbmFibGVkICYmIHByaW1hcnlfZW5hYmxlZCkKPiAgCQkJaW50ZWxfcG9zdF9lbmFibGVfcHJp bWFyeShjcnRjKTsKPiAgCX0KPiAtCj4gLQkvKiBVbnBpbiBvbGQgb2JqIGFmdGVyIG5ldyBvbmUg aXMgYWN0aXZlIHRvIGF2b2lkIHVnbGluZXNzICovCj4gLQlpZiAob2xkX29iaiAmJiBvbGRfb2Jq ICE9IG9iaikgewo+IC0KPiAtCQkvKgo+IC0JCSAqIEl0J3MgZmFpcmx5IGNvbW1vbiB0byBzaW1w bHkgdXBkYXRlIHRoZSBwb3NpdGlvbiBvZgo+IC0JCSAqIGFuIGV4aXN0aW5nIG9iamVjdC4gIElu IHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0bwo+IC0JCSAqIHdhaXQgZm9yIHZibGFuayB0byBh dm9pZCB1Z2xpbmVzcywgd2Ugb25seSBuZWVkIHRvCj4gLQkJICogZG8gdGhlIHBpbiAmIHJlZiBi b29ra2VlcGluZy4KPiAtCQkgKi8KPiAtCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+IC0JCQlp bnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiAtCj4gLQkJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWludGVsX3VucGluX2ZiX29iaihvbGRf b2JqKTsKPiAtCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCX0KPiAtfQo+ IC0KPiAtc3RhdGljIGludAo+IC1pbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiAtCQkgICB1bnNpZ25lZCBpbnQgY3J0 Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAo+IC0JCSAgIHVpbnQzMl90IHNyY194LCB1aW50MzJf dCBzcmNfeSwKPiAtCQkgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4gLXsKPiAt CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWludCByZXQ7Cj4gLQo+IC0Jc3Rh dGUuYmFzZS5jcnRjID0gY3J0YzsKPiAtCXN0YXRlLmJhc2UuZmIgPSBmYjsKPiAtCj4gLQkvKiBz YW1wbGUgY29vcmRpbmF0ZXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKi8KPiAtCXN0YXRlLnNyYy54 MSA9IHNyY194Owo+IC0Jc3RhdGUuc3JjLngyID0gc3JjX3ggKyBzcmNfdzsKPiAtCXN0YXRlLnNy Yy55MSA9IHNyY195Owo+IC0Jc3RhdGUuc3JjLnkyID0gc3JjX3kgKyBzcmNfaDsKPiAtCj4gLQkv KiBpbnRlZ2VyIHBpeGVscyAqLwo+IC0Jc3RhdGUuZHN0LngxID0gY3J0Y194Owo+IC0Jc3RhdGUu ZHN0LngyID0gY3J0Y194ICsgY3J0Y193Owo+IC0Jc3RhdGUuZHN0LnkxID0gY3J0Y195Owo+IC0J c3RhdGUuZHN0LnkyID0gY3J0Y195ICsgY3J0Y19oOwo+IC0KPiAtCXN0YXRlLmNsaXAueDEgPSAw Owo+IC0Jc3RhdGUuY2xpcC55MSA9IDA7Cj4gLQlzdGF0ZS5jbGlwLngyID0gaW50ZWxfY3J0Yy0+ YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgOiAwOwo+IC0Jc3RhdGUuY2xp cC55MiA9IGludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY19o IDogMDsKPiAtCXN0YXRlLm9yaWdfc3JjID0gc3RhdGUuc3JjOwo+IC0Jc3RhdGUub3JpZ19kc3Qg PSBzdGF0ZS5kc3Q7Cj4gLQo+IC0JcmV0ID0gaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHBsYW5l LCAmc3RhdGUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJldCA9IGlu dGVsX3ByZXBhcmVfc3ByaXRlX3BsYW5lKHBsYW5lLCAmc3RhdGUpOwo+IC0JaWYgKHJldCkKPiAt CQlyZXR1cm4gcmV0Owo+IC0KPiAtCWludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUocGxhbmUsICZz dGF0ZSk7Cj4gLQlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgaW50Cj4gQEAgLTE0NTksNyArMTM2MCw2 IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ ICAJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gIAo+ ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlpbnRlbF91bnBpbl9mYl9v YmooaW50ZWxfcGxhbmUtPm9iaik7Cj4gIAkJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfcGxhbmUt Pm9iaiwgTlVMTCwKPiAgCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfU1BSSVRFKHBpcGUpKTsKPiAg CQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiBAQCAtMTU1NywyMSArMTQ1Nywx OSBAQCBpbnQgaW50ZWxfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+ICAKPiAgaW50IGludGVsX3BsYW5lX3Jlc3RvcmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZSk7Cj4gLQo+ICAJaWYgKCFwbGFuZS0+Y3J0YyB8fCAhcGxhbmUtPmZiKQo+ICAJCXJl dHVybiAwOwo+ICAKPiAgCXJldHVybiBwbGFuZS0+ZnVuY3MtPnVwZGF0ZV9wbGFuZShwbGFuZSwg cGxhbmUtPmNydGMsIHBsYW5lLT5mYiwKPiAtCQkJCSAgaW50ZWxfcGxhbmUtPmNydGNfeCwgaW50 ZWxfcGxhbmUtPmNydGNfeSwKPiAtCQkJCSAgaW50ZWxfcGxhbmUtPmNydGNfdywgaW50ZWxfcGxh bmUtPmNydGNfaCwKPiAtCQkJCSAgaW50ZWxfcGxhbmUtPnNyY194LCBpbnRlbF9wbGFuZS0+c3Jj X3ksCj4gLQkJCQkgIGludGVsX3BsYW5lLT5zcmNfdywgaW50ZWxfcGxhbmUtPnNyY19oKTsKPiAr CQkJCSAgcGxhbmUtPnN0YXRlLT5jcnRjX3gsIHBsYW5lLT5zdGF0ZS0+Y3J0Y195LAo+ICsJCQkJ ICBwbGFuZS0+c3RhdGUtPmNydGNfdywgcGxhbmUtPnN0YXRlLT5jcnRjX2gsCj4gKwkJCQkgIHBs YW5lLT5zdGF0ZS0+c3JjX3gsIHBsYW5lLT5zdGF0ZS0+c3JjX3ksCj4gKwkJCQkgIHBsYW5lLT5z dGF0ZS0+c3JjX3csIHBsYW5lLT5zdGF0ZS0+c3JjX2gpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKPiAtCS51cGRh dGVfcGxhbmUgPSBpbnRlbF91cGRhdGVfcGxhbmUsCj4gLQkuZGlzYWJsZV9wbGFuZSA9IGludGVs X3Nwcml0ZV9wbGFuZV9kaXNhYmxlLAo+ICsJLnVwZGF0ZV9wbGFuZSA9IGRybV9wbGFuZV9oZWxw ZXJfdXBkYXRlLAo+ICsJLmRpc2FibGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX2Rpc2FibGUs Cj4gIAkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gIAkuc2V0X3Byb3BlcnR5ID0g aW50ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBp bnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gLS0gCj4gMS44LjUuMQo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=