From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v2 11/27] drm/i915: Split skl_update_scaler, v2. Date: Wed, 10 Jun 2015 18:34:47 -0700 Message-ID: <20150611013447.GE15024@intel.com> References: <1433422077-14907-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433422077-14907-12-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id A538E6E113 for ; Wed, 10 Jun 2015 18:34:50 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1433422077-14907-12-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMDQsIDIwMTUgYXQgMDI6NDc6NDFQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSXQncyBlYXNpZXIgdG8gcmVhZCBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIGNy dGMgYW5kIHBsYW5lIHNjYWxlciBzdGF0ZS4KPiAKPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ICAtIFVw ZGF0ZSBkb2N1bWVudGF0aW9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0 IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDIwMCArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAgIDIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDEyICsrLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDMgKy0KPiAgNCBmaWxlcyBj aGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA5NjczOThjYzAzY2IuLjMxMGI5ODIyNmQ4 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNDI5OSw2MiAr NDI5OSwxNyBAQCBzdGF0aWMgdm9pZCBjcHRfdmVyaWZ5X21vZGVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IHBpcGUpCj4gIAl9Cj4gIH0KPiAgCj4gLS8qKgo+IC0gKiBza2xfdXBkYXRl X3NjYWxlcl91c2VycyAtIFN0YWdlcyB1cGRhdGUgdG8gY3J0YydzIHNjYWxlciBzdGF0ZQo+IC0g KiBAaW50ZWxfY3J0YzogY3J0Ywo+IC0gKiBAY3J0Y19zdGF0ZTogY3J0Y19zdGF0ZQo+IC0gKiBA cGxhbmU6IHBsYW5lIChOVUxMIGluZGljYXRlcyBjcnRjIGlzIHJlcXVlc3RpbmcgdXBkYXRlKQo+ IC0gKiBAcGxhbmVfc3RhdGU6IHBsYW5lJ3Mgc3RhdGUKPiAtICogQGZvcmNlX2RldGFjaDogcmVx dWVzdCB1bmNvbmRpdGlvbmFsIGRldGFjaG1lbnQgb2Ygc2NhbGVyCj4gLSAqCj4gLSAqIFRoaXMg ZnVuY3Rpb24gdXBkYXRlcyBzY2FsZXIgc3RhdGUgZm9yIHJlcXVlc3RlZCBwbGFuZSBvciBjcnRj Lgo+IC0gKiBUbyByZXF1ZXN0IHNjYWxlciB1c2FnZSB1cGRhdGUgZm9yIGEgcGxhbmUsIGNhbGxl ciBzaGFsbCBwYXNzIHBsYW5lIHBvaW50ZXIuCj4gLSAqIFRvIHJlcXVlc3Qgc2NhbGVyIHVzYWdl IHVwZGF0ZSBmb3IgY3J0YywgY2FsbGVyIHNoYWxsIHBhc3MgcGxhbmUgcG9pbnRlcgo+IC0gKiBh cyBOVUxMLgo+IC0gKgo+IC0gKiBSZXR1cm4KPiAtICogICAgIDAgLSBzY2FsZXJfdXNhZ2UgdXBk YXRlZCBzdWNjZXNzZnVsbHkKPiAtICogICAgZXJyb3IgLSByZXF1ZXN0ZWQgc2NhbGluZyBjYW5u b3QgYmUgc3VwcG9ydGVkIG9yIG90aGVyIGVycm9yIGNvbmRpdGlvbgo+IC0gKi8KPiAtaW50Cj4g LXNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKAo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0Jc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSwgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAtCWludCBmb3JjZV9kZXRhY2gpCj4gK3N0YXRpYyBpbnQKPiArc2tsX3VwZGF0ZV9zY2Fs ZXIoY29uc3QgY2hhciAqbmFtZSwgaW50IGksIHVuc2lnbmVkIGlkeCwKClRoaXMgaXMgYSBwcmV0 dHkgY29uZnVzaW5nIGZ1bmN0aW9uIHNpZ25hdHVyZSB3aXRoICdpLCcgJ2lkeCwnIGFuZAonc2Nh bGVyX2lkJyBhbGwgYXMgcGFyYW1ldGVycy4gIEV2ZW4gdGhvdWdoIHRoaXMgaXMgYSBzdGF0aWMg ZnVuY3Rpb24sIEkKdGhpbmsga2VlcGluZyBrZXJuZWxkb2MgKGFuZCBwb3NzaWJseSByZW5hbWlu ZyB0aGVzZSB0byBiZSBtb3JlIGNsZWFyCmFib3V0IHdoYXQgdGhleSByZXByZXNlbnQgYW4gaW5k ZXggb3IgSUQgb2YpIHdvdWxkIGJlIGEgZ29vZCBpZGVhLgoKQWN0dWFsbHksIGEgYnVuY2ggb2Yg dGhlIHBhcmFtZXRlcnMgd2UgcGFzcyBoZXJlIGhhdmUgbm8gdXNlIGV4Y2VwdCBmb3IKdmVyeSB2 ZXJib3NlIERSTV9ERUJVR19LTVMoKSBtZXNzYWdlcy4gIENvdWxkIHdlIGp1c3QgaGF2ZSBhIHNp bmdsZQpkZXRhaWxlZCBtZXNzYWdlIGF0IHRoZSBjYWxsc2l0ZSBhbmQgZWxpbWluYXRlIGFsbCBv ZiB0aGUgc2NhbGVyIElEJ3MsCm9iamVjdCBJRCdzLCBzcmMvZGVzdCByZWN0YW5nbGVzLCBldGMu IGZyb20gdGhlIG1lc3NhZ2VzIGluIHRoaXMKZnVuY3Rpb24/ICBUaGF0IG1pZ2h0IHNpbXBsaWZ5 IHRoaW5ncyBhIGJpdC4KCgpNYXR0Cgo+ICsJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAo+ICsJCSAgaW50ICpzY2FsZXJfaWQsIHVuc2ln bmVkIGludCByb3RhdGlvbiwKPiArCQkgIGludCBzcmNfdywgaW50IHNyY19oLCBpbnQgZHN0X3cs IGludCBkc3RfaCkKPiAgewo+ICsJc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2Fs ZXJfc3RhdGUgPQo+ICsJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9Cj4gKwkJdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNl LmNydGMpOwo+ICAJaW50IG5lZWRfc2NhbGluZzsKPiAtCWludCBpZHg7Cj4gLQlpbnQgc3JjX3cs IHNyY19oLCBkc3RfdywgZHN0X2g7Cj4gLQlpbnQgKnNjYWxlcl9pZDsKPiAtCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2Fs ZXJfc3RhdGU7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb247Cj4gLQo+IC0JaWYgKCFpbnRlbF9j cnRjIHx8ICFjcnRjX3N0YXRlKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCXNjYWxlcl9zdGF0ZSA9 ICZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Cj4gLQo+IC0JaWR4ID0gaW50ZWxfcGxhbmUgPyBk cm1fcGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSA6IFNLTF9DUlRDX0lOREVYOwo+IC0J ZmIgPSBpbnRlbF9wbGFuZSA/IHBsYW5lX3N0YXRlLT5iYXNlLmZiIDogTlVMTDsKPiAtCj4gLQlp ZiAoaW50ZWxfcGxhbmUpIHsKPiAtCQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+c3JjKSA+PiAxNjsKPiAtCQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PnNyYykgPj4gMTY7Cj4gLQkJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRz dCk7Cj4gLQkJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5kc3QpOwo+IC0J CXNjYWxlcl9pZCA9ICZwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwo+IC0JCXJvdGF0aW9uID0gcGxh bmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gLQl9IGVsc2Ugewo+IC0JCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiAtCQlzcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gLQkJc3JjX2gg PSBjcnRjX3N0YXRlLT5waXBlX3NyY19oOwo+IC0JCWRzdF93ID0gYWRqdXN0ZWRfbW9kZS0+aGRp c3BsYXk7Cj4gLQkJZHN0X2ggPSBhZGp1c3RlZF9tb2RlLT52ZGlzcGxheTsKPiAtCQlzY2FsZXJf aWQgPSAmc2NhbGVyX3N0YXRlLT5zY2FsZXJfaWQ7Cj4gLQkJcm90YXRpb24gPSBEUk1fUk9UQVRF XzA7Cj4gLQl9Cj4gIAo+ICAJbmVlZF9zY2FsaW5nID0gaW50ZWxfcm90YXRpb25fOTBfb3JfMjcw KHJvdGF0aW9uKSA/Cj4gIAkJKHNyY19oICE9IGRzdF93IHx8IHNyY193ICE9IGRzdF9oKToKPiBA QCAtNDM3MCwxOCArNDMyNSwxNSBAQCBza2xfdXBkYXRlX3NjYWxlcl91c2VycygKPiAgCSAqIHVw ZGF0ZSB0byBmcmVlIHRoZSBzY2FsZXIgaXMgZG9uZSBpbiBwbGFuZS9wYW5lbC1maXQgcHJvZ3Jh bW1pbmcuCj4gIAkgKiBGb3IgdGhpcyBwdXJwb3NlIGNydGMvcGxhbmVfc3RhdGUtPnNjYWxlcl9p ZCBpc24ndCByZXNldCBoZXJlLgo+ICAJICovCj4gLQlpZiAoZm9yY2VfZGV0YWNoIHx8ICFuZWVk X3NjYWxpbmcgfHwgKGludGVsX3BsYW5lICYmCj4gLQkJKCFmYiB8fCAhcGxhbmVfc3RhdGUtPnZp c2libGUpKSkgewo+ICsJaWYgKGZvcmNlX2RldGFjaCB8fCAhbmVlZF9zY2FsaW5nKSB7Cj4gIAkJ aWYgKCpzY2FsZXJfaWQgPj0gMCkgewo+ICAJCQlzY2FsZXJfc3RhdGUtPnNjYWxlcl91c2VycyAm PSB+KDEgPDwgaWR4KTsKPiAgCQkJc2NhbGVyX3N0YXRlLT5zY2FsZXJzWypzY2FsZXJfaWRdLmlu X3VzZSA9IDA7Cj4gIAo+ICAJCQlEUk1fREVCVUdfS01TKCJTdGFnZWQgZnJlZWluZyBzY2FsZXIg aWQgJWQuJWQgZnJvbSAlczolZCAiCj4gIAkJCQkiY3J0Y19zdGF0ZSA9ICVwIHNjYWxlcl91c2Vy cyA9IDB4JXhcbiIsCj4gLQkJCQlpbnRlbF9jcnRjLT5waXBlLCAqc2NhbGVyX2lkLCBpbnRlbF9w bGFuZSA/ICJQTEFORSIgOiAiQ1JUQyIsCj4gLQkJCQlpbnRlbF9wbGFuZSA/IGludGVsX3BsYW5l LT5iYXNlLmJhc2UuaWQgOgo+IC0JCQkJaW50ZWxfY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjX3N0 YXRlLAo+IC0JCQkJc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMpOwo+ICsJCQkJaW50ZWxfY3J0 Yy0+cGlwZSwgKnNjYWxlcl9pZCwgbmFtZSwgaSwKPiArCQkJCWNydGNfc3RhdGUsIHNjYWxlcl9z dGF0ZS0+c2NhbGVyX3VzZXJzKTsKPiAgCQkJKnNjYWxlcl9pZCA9IC0xOwo+ICAJCX0KPiAgCQly ZXR1cm4gMDsKPiBAQCAtNDM5NSw0OSArNDM0NywxMDQgQEAgc2tsX3VwZGF0ZV9zY2FsZXJfdXNl cnMoCj4gIAkJZHN0X3cgPiBTS0xfTUFYX0RTVF9XIHx8IGRzdF9oID4gU0tMX01BWF9EU1RfSCkg ewo+ICAJCURSTV9ERUJVR19LTVMoIiVzOiVkIHNjYWxlcl91c2VyIGluZGV4ICV1LiV1OiBzcmMg JXV4JXUgZHN0ICV1eCV1ICIKPiAgCQkJInNpemUgaXMgb3V0IG9mIHNjYWxlciByYW5nZVxuIiwK PiAtCQkJaW50ZWxfcGxhbmUgPyAiUExBTkUiIDogIkNSVEMiLAo+IC0JCQlpbnRlbF9wbGFuZSA/ IGludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQgOiBpbnRlbF9jcnRjLT5iYXNlLmJhc2UuaWQsCj4g LQkJCWludGVsX2NydGMtPnBpcGUsIGlkeCwgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2gpOwo+ ICsJCQluYW1lLCBpLCBpbnRlbF9jcnRjLT5waXBlLCBpZHgsIHNyY193LCBzcmNfaCwgZHN0X3cs IGRzdF9oKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gKwkvKiBtYXJrIHRoaXMg cGxhbmUgYXMgYSBzY2FsZXIgdXNlciBpbiBjcnRjX3N0YXRlICovCj4gKwlzY2FsZXJfc3RhdGUt PnNjYWxlcl91c2VycyB8PSAoMSA8PCBpZHgpOwo+ICsJRFJNX0RFQlVHX0tNUygiJXM6JWQgc3Rh Z2VkIHNjYWxpbmcgcmVxdWVzdCBmb3IgJXV4JXUtPiV1eCV1ICIKPiArCQkiY3J0Y19zdGF0ZSA9 ICVwIHNjYWxlcl91c2VycyA9IDB4JXhcbiIsCj4gKwkJbmFtZSwgaSwgc3JjX3csIHNyY19oLCBk c3RfdywgZHN0X2gsCj4gKwkJY3J0Y19zdGF0ZSwgc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogc2tsX3VwZGF0ZV9zY2Fs ZXJfY3J0YyAtIFN0YWdlcyB1cGRhdGUgdG8gc2NhbGVyIHN0YXRlIGZvciBhIGdpdmVuIGNydGMu Cj4gKyAqCj4gKyAqIEBzdGF0ZTogY3J0YydzIHNjYWxlciBzdGF0ZQo+ICsgKiBAZm9yY2VfZGV0 YWNoOiB3aGV0aGVyIHRvIGZvcmNpYmx5IGRpc2FibGUgc2NhbGVyCj4gKyAqCj4gKyAqIFJldHVy bgo+ICsgKiAgICAgMCAtIHNjYWxlcl91c2FnZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseQo+ICsgKiAg ICBlcnJvciAtIHJlcXVlc3RlZCBzY2FsaW5nIGNhbm5vdCBiZSBzdXBwb3J0ZWQgb3Igb3RoZXIg ZXJyb3IgY29uZGl0aW9uCj4gKyAqLwo+ICtpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUsIGludCBmb3JjZV9kZXRhY2gpCj4gK3sKPiArCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gKwkJJnN0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gKwo+ICsJcmV0dXJuIHNrbF91cGRhdGVfc2NhbGVyKCJDUlRDIiwgY3J0Yy0+YmFzZS5p ZCwKPiArCQlTS0xfQ1JUQ19JTkRFWCwgc3RhdGUsIGZvcmNlX2RldGFjaCwKPiArCQkmc3RhdGUt PnNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQsIERSTV9ST1RBVEVfMCwKPiArCQlzdGF0ZS0+cGlwZV9z cmNfdywgc3RhdGUtPnBpcGVfc3JjX2gsCj4gKwkJYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXksIGFk anVzdGVkX21vZGUtPmhkaXNwbGF5KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHNrbF91cGRhdGVf c2NhbGVyX3BsYW5lIC0gU3RhZ2VzIHVwZGF0ZSB0byBzY2FsZXIgc3RhdGUgZm9yIGEgZ2l2ZW4g cGxhbmUuCj4gKyAqCj4gKyAqIEBzdGF0ZTogY3J0YydzIHNjYWxlciBzdGF0ZQo+ICsgKiBAaW50 ZWxfcGxhbmU6IGFmZmVjdGVkIHBsYW5lCj4gKyAqIEBwbGFuZV9zdGF0ZTogYXRvbWljIHBsYW5l IHN0YXRlIHRvIHVwZGF0ZQo+ICsgKgo+ICsgKiBSZXR1cm4KPiArICogICAgIDAgLSBzY2FsZXJf dXNhZ2UgdXBkYXRlZCBzdWNjZXNzZnVsbHkKPiArICogICAgZXJyb3IgLSByZXF1ZXN0ZWQgc2Nh bGluZyBjYW5ub3QgYmUgc3VwcG9ydGVkIG9yIG90aGVyIGVycm9yIGNvbmRpdGlvbgo+ICsgKi8K PiAraW50IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCQkgICAgc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSwKPiAr CQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gK3sKPiArCj4g KwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJ aW50IHJldDsKPiArCj4gKwlib29sIGZvcmNlX2RldGFjaCA9ICFmYiB8fCAhcGxhbmVfc3RhdGUt PnZpc2libGU7Cj4gKwo+ICsJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXIoIlBMQU5FIiwgaW50ZWxf cGxhbmUtPmJhc2UuYmFzZS5pZCwKPiArCQkJCWRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUt PmJhc2UpLAo+ICsJCQkJY3J0Y19zdGF0ZSwgZm9yY2VfZGV0YWNoLAo+ICsJCQkJJnBsYW5lX3N0 YXRlLT5zY2FsZXJfaWQsCj4gKwkJCQlwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwKPiArCQkJ CWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNiwKPiArCQkJCWRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTYsCj4gKwkJCQlkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPmRzdCksCj4gKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5k c3QpKTsKPiArCj4gKwlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICAJLyogY2hlY2sgY29sb3JrZXkgKi8KPiAtCWlmIChXQVJOX09O KGludGVsX3BsYW5lICYmCj4gLQkJaW50ZWxfcGxhbmUtPmNrZXkuZmxhZ3MgIT0gSTkxNV9TRVRf Q09MT1JLRVlfTk9ORSkpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJQTEFORTolZCBzY2FsaW5nICV1 eCV1LT4ldXgldSBub3QgYWxsb3dlZCB3aXRoIGNvbG9ya2V5IiwKPiAtCQkJaW50ZWxfcGxhbmUt PmJhc2UuYmFzZS5pZCwgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2gpOwo+ICsJaWYgKFdBUk5f T04oaW50ZWxfcGxhbmUtPmNrZXkuZmxhZ3MgIT0gSTkxNV9TRVRfQ09MT1JLRVlfTk9ORSkpIHsK PiArCQlEUk1fREVCVUdfS01TKCJQTEFORTolZCBzY2FsaW5nIHdpdGggY29sb3Iga2V5IG5vdCBh bGxvd2VkIiwKPiArCQkJaW50ZWxfcGxhbmUtPmJhc2UuYmFzZS5pZCk7Cj4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gIAl9Cj4gIAo+ICAJLyogQ2hlY2sgc3JjIGZvcm1hdCAqLwo+IC0JaWYgKGludGVs X3BsYW5lKSB7Cj4gLQkJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7Cj4gLQkJY2FzZSBEUk1f Rk9STUFUX1JHQjU2NToKPiAtCQljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gLQkJY2FzZSBE Uk1fRk9STUFUX1hSR0I4ODg4Ogo+IC0JCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiAtCQlj YXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gLQkJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEw Ogo+IC0JCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiAtCQljYXNlIERSTV9GT1JNQVRf WVVZVjoKPiAtCQljYXNlIERSTV9GT1JNQVRfWVZZVToKPiAtCQljYXNlIERSTV9GT1JNQVRfVVlW WToKPiAtCQljYXNlIERSTV9GT1JNQVRfVllVWToKPiAtCQkJYnJlYWs7Cj4gLQkJZGVmYXVsdDoK PiAtCQkJRFJNX0RFQlVHX0tNUygiUExBTkU6JWQgRkI6JWQgdW5zdXBwb3J0ZWQgc2NhbGluZyBm b3JtYXQgMHgleFxuIiwKPiAtCQkJCWludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQsIGZiLT5iYXNl LmlkLCBmYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQkJfQo+ICsJ c3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ ICsJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4 Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4 ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFU X1hCR1IyMTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4gKwljYXNlIERSTV9GT1JN QVRfWVZZVToKPiArCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICsJY2FzZSBEUk1fRk9STUFUX1ZZ VVk6Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCURSTV9ERUJVR19LTVMoIlBMQU5FOiVk IEZCOiVkIHVuc3VwcG9ydGVkIHNjYWxpbmcgZm9ybWF0IDB4JXhcbiIsCj4gKwkJCWludGVsX3Bs YW5lLT5iYXNlLmJhc2UuaWQsIGZiLT5iYXNlLmlkLCBmYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQkvKiBtYXJrIHRoaXMgcGxhbmUgYXMgYSBzY2Fs ZXIgdXNlciBpbiBjcnRjX3N0YXRlICovCj4gLQlzY2FsZXJfc3RhdGUtPnNjYWxlcl91c2VycyB8 PSAoMSA8PCBpZHgpOwo+IC0JRFJNX0RFQlVHX0tNUygiJXM6JWQgc3RhZ2VkIHNjYWxpbmcgcmVx dWVzdCBmb3IgJXV4JXUtPiV1eCV1ICIKPiAtCQkiY3J0Y19zdGF0ZSA9ICVwIHNjYWxlcl91c2Vy cyA9IDB4JXhcbiIsCj4gLQkJaW50ZWxfcGxhbmUgPyAiUExBTkUiIDogIkNSVEMiLAo+IC0JCWlu dGVsX3BsYW5lID8gaW50ZWxfcGxhbmUtPmJhc2UuYmFzZS5pZCA6IGludGVsX2NydGMtPmJhc2Uu YmFzZS5pZCwKPiAtCQlzcmNfdywgc3JjX2gsIGRzdF93LCBkc3RfaCwgY3J0Y19zdGF0ZSwgc2Nh bGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTQ0 NTIsNyArNDQ1OSw3IEBAIHN0YXRpYyB2b2lkIHNreWxha2VfcGZpdF91cGRhdGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsIGludCBlbmFibGUpCj4gIAlEUk1fREVCVUdfS01TKCJmb3IgY3J0Y19z dGF0ZSA9ICVwXG4iLCBjcnRjLT5jb25maWcpOwo+ICAKPiAgCS8qIFRvIHVwZGF0ZSBwZml0LCBm aXJzdCB1cGRhdGUgc2NhbGVyIHN0YXRlICovCj4gLQlza2xfdXBkYXRlX3NjYWxlcl91c2Vycyhj cnRjLCBjcnRjLT5jb25maWcsIE5VTEwsIE5VTEwsICFlbmFibGUpOwo+ICsJc2tsX3VwZGF0ZV9z Y2FsZXJfY3J0YyhjcnRjLT5jb25maWcsICFlbmFibGUpOwo+ICAJaW50ZWxfYXRvbWljX3NldHVw X3NjYWxlcnMoY3J0Yy0+YmFzZS5kZXYsIGNydGMsIGNydGMtPmNvbmZpZyk7Cj4gIAlza2xfZGV0 YWNoX3NjYWxlcnMoY3J0Yyk7Cj4gIAlpZiAoIWVuYWJsZSkKPiBAQCAtMTMzMzksOCArMTMzNDYs OSBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICAJfQo+ICAKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gLQkJcmV0ID0g c2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoaW50ZWxfY3J0YywgY3J0Y19zdGF0ZSwKPiAtCQkJdG9f aW50ZWxfcGxhbmUocGxhbmUpLCBzdGF0ZSwgMCk7Cj4gKwkJcmV0ID0gc2tsX3VwZGF0ZV9zY2Fs ZXJfcGxhbmUoY3J0Y19zdGF0ZSwKPiArCQkJCQkgICAgICB0b19pbnRlbF9wbGFuZShwbGFuZSks Cj4gKwkJCQkJICAgICAgc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4g IAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggMTVlODg5MjJhOTg0Li42YmZiM2Vi NjJlOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMTM3Niw3ICsxMzc2LDcg QEAgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAo+ICAJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gIAkJCWludCByZXQ7 Cj4gLQkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKGludGVsX2NydGMsIHBpcGVfY29u ZmlnLCBOVUxMLCBOVUxMLCAwKTsKPiArCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0Yyhw aXBlX2NvbmZpZywgMCk7Cj4gIAkJCWlmIChyZXQpCj4gIAkJCQlyZXR1cm4gcmV0Owo+ICAJCX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDFkOWZlYjg3MjdlYS4uZTExNmE1ZjYz NDZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjUyLDcgKzI1Miw3IEBA IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gIAkgKiBwbGFuZSByZXF1aXJpbmcgYSBzY2Fs ZXI6Cj4gIAkgKiAgIC0gRHVyaW5nIGNoZWNrX3BsYW5lLCBpdHMgYml0IGlzIHNldCBpbgo+ICAJ ICogICAgIGNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJfdXNlcnMgYnkgY2FsbGluZyBo ZWxwZXIgZnVuY3Rpb24KPiAtCSAqICAgICB1cGRhdGVfc2NhbGVyX3VzZXJzLgo+ICsJICogICAg IHVwZGF0ZV9zY2FsZXJfcGxhbmUuCj4gIAkgKiAgIC0gc2NhbGVyX2lkIGluZGljYXRlcyB0aGUg c2NhbGVyIGl0IGdvdCBhc3NpZ25lZC4KPiAgCSAqCj4gIAkgKiBwbGFuZSBkb2Vzbid0IHJlcXVp cmUgYSBzY2FsZXI6Cj4gQEAgLTI2MCw3ICsyNjAsNyBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgewo+ICAJICogICAgIGdvdCBkaXNhYmxlZC4KPiAgCSAqICAgLSBEdXJpbmcgY2hlY2tfcGxh bmUsIGNvcnJlc3BvbmRpbmcgYml0IGlzIHJlc2V0IGluCj4gIAkgKiAgICAgY3J0Y19zdGF0ZS0+ c2NhbGVyX3N0YXRlLnNjYWxlcl91c2VycyBieSBjYWxsaW5nIGhlbHBlciBmdW5jdGlvbgo+IC0J ICogICAgIHVwZGF0ZV9zY2FsZXJfdXNlcnMuCj4gKwkgKiAgICAgdXBkYXRlX3NjYWxlcl9wbGFu ZS4KPiAgCSAqLwo+ICAJaW50IHNjYWxlcl9pZDsKPiAgfTsKPiBAQCAtMTEzNiw5ICsxMTM2LDEx IEBAIHZvaWQgaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAo+ICB2b2lkIGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwo+ICB2b2lkIGludGVsX21vZGVzZXRfcHJlY2xvc2Uoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgdm9pZCBza2xfZGV0 YWNoX3NjYWxlcnMoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpOwo+IC1pbnQgc2tsX3Vw ZGF0ZV9zY2FsZXJfdXNlcnMoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgc3RydWN0IGludGVsX3BsYW5lICppbnRl bF9wbGFuZSwKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsIGludCBm b3JjZV9kZXRhY2gpOwo+ICtpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSAgICBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lLAo+ICsJCQkgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSk7Cj4gKwo+ICtpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwgaW50IGZvcmNlX2RldGFjaCk7Cj4gIGludCBza2xfbWF4X3NjYWxl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gIAo+ICB1bnNpZ25lZCBsb25nIGludGVsX3BsYW5lX29ial9vZmZzZXQoc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+IGluZGV4IDgxOTNhMzUzODhkNy4uZmU5NWYyNWYwMTlhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtOTQxLDggKzk0MSw3IEBAIGZpbmlzaDoKPiAgCX0KPiAg Cj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IC0JCXJldCA9IHNrbF91cGRh dGVfc2NhbGVyX3VzZXJzKGludGVsX2NydGMsIGNydGNfc3RhdGUsIGludGVsX3BsYW5lLAo+IC0J CQlzdGF0ZSwgMCk7Cj4gKwkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoY3J0Y19zdGF0 ZSwgaW50ZWxfcGxhbmUsIHN0YXRlKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ ICAJfQo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2lu ZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlv bgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=