From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 14/15] drm/i915/tv: Fix >1024 modes on gen3 Date: Thu, 24 Jan 2019 12:40:42 +0200 Message-ID: <20190124104042.GA28875@ideak-desk.fi.intel.com> References: <20181112170000.27531-1-ville.syrjala@linux.intel.com> <20181112170000.27531-16-ville.syrjala@linux.intel.com> <20190123134902.GE17259@ideak-desk.fi.intel.com> <20190123163817.GC20097@intel.com> Reply-To: imre.deak@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: <20190123163817.GC20097@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMjMsIDIwMTkgYXQgMDY6Mzg6MTdQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSmFuIDIzLCAyMDE5IGF0IDAzOjQ5OjAyUE0gKzAyMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IE9uIE1vbiwgTm92IDEyLCAyMDE4IGF0IDA2OjU5OjU5UE0gKzAyMDAs IFZpbGxlIFN5cmphbGEgd3JvdGU6Cj4gPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IAo+ID4gPiBPbiBnZW4zIHdlIG11c3QgZGlz YWJsZSB0aGUgVFYgZW5jb2RlciB2ZXJ0aWNhbCBmaWx0ZXIgZm9yID4xMDI0Cj4gPiA+IHBpeGVs IHdpZGUgc291cmNlcy4gT25jZSB0aGF0J3MgZG9uZSBhbGwgd2UgY2FuIGlzIHRyeSB0byBjZW50 ZXIKPiA+ID4gdGhlIGltYWdlIG9uIHRoZSBzY3JlZW4uIE5hdHVyYWxseSB0aGUgVFYgbW9kZSB2 ZXJ0aWNhbCByZXNvbHV0aW9uCj4gPiA+IG11c3QgYmUgZXF1YWwgb3IgbGFyZ2VyIHRoYW4gdGhl IHVzZXIgbW9kZSB2ZXJ0aWNhbCByZXNvbHV0aW9uCj4gPiA+IG9yIGVsc2Ugd2UnZCBoYXZlIHRv IGN1dCBvZmYgcGFydCBvZiB0aGUgdXNlciBtb2RlLgo+ID4gPiAKPiA+ID4gQW5kIHdoaWxlIHdl IG1heSBub3QgYmUgYWJsZSB0byByZXNwZWN0IHRoZSB1c2VyJ3MgY2hvaWNlIG9mCj4gPiA+IHRv cCBhbmQgYm90dG9tIGJvcmRlcnMgZXhhY3RseSAob3Igd2UnZCBoYXZlIHRvIHJlamVjdCBoZSBt b2RlCj4gPiA+IG1vc3QgbGlrZWx5KSwgd2UgY2FuIHRyeSB0byBtYWludGFpbiB0aGUgcmVsYXRp dmUgc2l6ZXMgb2YgdGhlCj4gPiA+IHRvcCBhbmQgYm90dG9tIGJvcmRlciB3aXRoIHJlc3BlY3Qg dG8gZWFjaCBvcmhlci4KPiA+ID4gCj4gPiA+IEFkZGl0aW9uYWxseSB3ZSBtdXN0IGNvbmZpZ3Vy ZSB0aGUgcGlwZSBhcyBpbnRlcmxhY2VkIGlmIHRoZQo+ID4gPiBUViBtb2RlIGlzIGludGVybGFj ZWQuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3R2LmMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiA+ ID4gIDEgZmlsZSBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+ID4g PiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gPiA+IGluZGV4IDc1MTI2ZmNlNjU1ZC4u NzA5OWQ4MzdlMzFhIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF90di5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMKPiA+ID4g QEAgLTg2MSw2ICs4NjEsNDQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0dl9tb2RlIHR2X21vZGVz W10gPSB7Cj4gPiA+ICAJfSwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gK3N0cnVjdCBpbnRlbF90 dl9jb25uZWN0b3Jfc3RhdGUgewo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIGJh c2U7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIE1heSBuZWVkIHRvIG92ZXJyaWRlIHRo ZSB1c2VyIG1hcmdpbnMgZm9yCj4gPiA+ICsJICogZ2VuMyA+MTAyNCB3aWRlIHNvdXJjZSB2ZXJ0 aWNhbCBjZW50ZXJpbmcuCj4gPiA+ICsJICovCj4gPiA+ICsJc3RydWN0IHsKPiA+ID4gKwkJdTE2 IHRvcCwgYm90dG9tOwo+ID4gPiArCX0gbWFyZ2luczsKPiA+ID4gKwo+ID4gPiArCWJvb2wgYnlw YXNzX3ZmaWx0ZXI7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIHRvX2ludGVsX3R2 X2Nvbm5lY3Rvcl9zdGF0ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX3R2X2Nvbm5l Y3Rvcl9zdGF0ZSwgYmFzZSkKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9kaWdp dGFsX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUgLSBkdXBsaWNhdGUgY29ubmVjdG9yIHN0YXRl Cj4gPiAgICAgICBeaW50ZWxfdHZfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZQo+ID4gPiArICog QGNvbm5lY3RvcjogZGlnaXRhbCBjb25uZWN0b3IKPiA+ICAgICAgICAgICAgICAgICAgIF50diBj b25uZWN0b3I/Cj4gPiA+ICsgKgo+ID4gPiArICogQWxsb2NhdGVzIGFuZCByZXR1cm5zIGEgY29w eSBvZiB0aGUgY29ubmVjdG9yIHN0YXRlIChib3RoIGNvbW1vbiBhbmQKPiA+ID4gKyAqIGRpZ2l0 YWwgY29ubmVjdG9yIHNwZWNpZmljKSBmb3IgdGhlIHNwZWNpZmllZCBjb25uZWN0b3IuCj4gPiA+ ICsgKgo+ID4gPiArICogUmV0dXJuczogVGhlIG5ld2x5IGFsbG9jYXRlZCBjb25uZWN0b3Igc3Rh dGUsIG9yIE5VTEwgb24gZmFpbHVyZS4KPiA+ID4gKyAqLwo+ID4gPiArc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKgo+ID4gPiAraW50ZWxfdHZfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBp bnRlbF90dl9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlOwo+ID4gPiArCj4gPiA+ICsJc3RhdGUgPSBr bWVtZHVwKGNvbm5lY3Rvci0+c3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiA+ ID4gKwlpZiAoIXN0YXRlKQo+ID4gPiArCQlyZXR1cm4gTlVMTDsKPiA+ID4gKwo+ID4gPiArCV9f ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShjb25uZWN0b3IsICZz dGF0ZS0+YmFzZSk7Cj4gPiA+ICsJcmV0dXJuICZzdGF0ZS0+YmFzZTsKPiA+ID4gK30KPiA+IAo+ ID4gWW91IGRpZG4ndCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgY2hlY2tzIGZvciB0aGUgbmV3Cj4g PiBpbnRlbF90dl9jb25uZWN0b3Jfc3RhdGUgZmllbGRzIHRvIGludGVsX3R2X2F0b21pY19jaGVj aygpLiBJIHN1cHBvc2UKPiA+IHRoYXQncyBvayBzaW5jZSBzb21ldGhpbmcgcmVzdWx0aW5nIGlu IGEgY2hhbmdlIGluIHRob3NlIHdpbGwgZm9yY2UgYQo+ID4gbW9kZXNldCBhbnl3YXk6Cj4gCj4g VGhlIG5ldyBmaWVsZHMgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSB1c2VyIHNvIG5vdGhpbmcgZXh0 ZXJuYWwKPiB3aWxsIGNoYW5nZSB0aGVtLiBpbnRlbF90dl9jb21wdXRlX2NvbmZpZygpICh3aGlj aCBpcyBleGVjdXRlZAo+IGFmdGVyIC5hdG9taWNfY2hlY2soKSkgd2lsbCBqdXN0IHJlY29tcHV0 ZSB0aGVtIGJhc2VkIG9uIG90aGVyCj4gdXNlciB2aXNpYmxlIHN0YXRlLgoKQWgsIHJpZ2h0LCB0 aGF0IGV4cGxhaW5zIGFuZCBJIG1pc3NlZCB0aGUgZmFjdCB0aGF0IGl0IG1ha2VzIG5vIHNlbnNl IHRvCmNoZWNrIGFueSBwYXJhbXMgdGhhdCBhcmUgY29tcHV0ZWQgOi8KCj4gCj4gPiAKPiA+IFJl dmlld2VkLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAKPiA+ID4gKwo+ ID4gPiAgc3RhdGljIHN0cnVjdCBpbnRlbF90diAqZW5jX3RvX3R2KHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ID4gPiAgewo+ID4gPiAgCXJldHVybiBjb250YWluZXJfb2YoZW5jb2Rl ciwgc3RydWN0IGludGVsX3R2LCBiYXNlKTsKPiA+ID4gQEAgLTExMjksNiArMTE2Nyw5IEBAIGlu dGVsX3R2X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g PiAgCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gPiAgCQkJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiA+ICB7Cj4gPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7Cj4gPiA+ICsJc3RydWN0IGludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZSAqdHZfY29ubl9zdGF0 ZSA9Cj4gPiA+ICsJCXRvX2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKPiA+ ID4gIAljb25zdCBzdHJ1Y3QgdHZfbW9kZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmluZChj b25uX3N0YXRlKTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gPiA+ICAJCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gPiBAQCAt MTE0OSw2ICsxMTkwLDQzIEBAIGludGVsX3R2X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gPiAgCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gdHZfbW9k ZS0+Y2xvY2s7Cj4gPiA+ICAKPiA+ID4gIAlpbnRlbF90dl9tb2RlX3RvX21vZGUoYWRqdXN0ZWRf bW9kZSwgdHZfbW9kZSk7Cj4gPiA+ICsJZHJtX21vZGVfc2V0X2NydGNpbmZvKGFkanVzdGVkX21v ZGUsIDApOwo+ID4gPiArCj4gPiA+ICsJaWYgKElTX0dFTjMoZGV2X3ByaXYpICYmIGhkaXNwbGF5 ID4gMTAyNCkgewo+ID4gPiArCQlpbnQgZXh0cmEsIHRvcCwgYm90dG9tOwo+ID4gPiArCj4gPiA+ ICsJCWV4dHJhID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheSAtIHZkaXNwbGF5Owo+ID4g PiArCj4gPiA+ICsJCWlmIChleHRyYSA8IDApIHsKPiA+ID4gKwkJCURSTV9ERUJVR19LTVMoIk5v IHZlcnRpY2FsIHNjYWxpbmcgZm9yID4xMDI0IHBpeGVsIHdpZGUgbW9kZXNcbiIpOwo+ID4gPiAr CQkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCQl9Cj4gPiA+ICsKPiA+ID4gKwkJLyogTmVlZCB0byB0 dXJuIG9mZiB0aGUgdmVydGljYWwgZmlsdGVyIGFuZCBjZW50ZXIgdGhlIGltYWdlICovCj4gPiA+ ICsKPiA+ID4gKwkJLyogQXR0ZW1wdCB0byBtYWludGFpbiB0aGUgcmVsYXRpdmUgc2l6ZXMgb2Yg dGhlIG1hcmdpbnMgKi8KPiA+ID4gKwkJdG9wID0gY29ubl9zdGF0ZS0+dHYubWFyZ2lucy50b3A7 Cj4gPiA+ICsJCWJvdHRvbSA9IGNvbm5fc3RhdGUtPnR2Lm1hcmdpbnMuYm90dG9tOwo+ID4gPiAr Cj4gPiA+ICsJCWlmICh0b3AgKyBib3R0b20pCj4gPiA+ICsJCQl0b3AgPSBleHRyYSAqIHRvcCAv ICh0b3AgKyBib3R0b20pOwo+ID4gPiArCQllbHNlCj4gPiA+ICsJCQl0b3AgPSBleHRyYSAvIDI7 Cj4gPiA+ICsJCWJvdHRvbSA9IGV4dHJhIC0gdG9wOwo+ID4gPiArCj4gPiA+ICsJCXR2X2Nvbm5f c3RhdGUtPm1hcmdpbnMudG9wID0gdG9wOwo+ID4gPiArCQl0dl9jb25uX3N0YXRlLT5tYXJnaW5z LmJvdHRvbSA9IGJvdHRvbTsKPiA+ID4gKwo+ID4gPiArCQl0dl9jb25uX3N0YXRlLT5ieXBhc3Nf dmZpbHRlciA9IHRydWU7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKCF0dl9tb2RlLT5wcm9ncmVzc2l2 ZSkKPiA+ID4gKwkJCWFkanVzdGVkX21vZGUtPmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfSU5URVJM QUNFOwo+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ICsJCXR2X2Nvbm5fc3RhdGUtPm1hcmdpbnMudG9w ID0gY29ubl9zdGF0ZS0+dHYubWFyZ2lucy50b3A7Cj4gPiA+ICsJCXR2X2Nvbm5fc3RhdGUtPm1h cmdpbnMuYm90dG9tID0gY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5ib3R0b207Cj4gPiA+ICsKPiA+ ID4gKwkJdHZfY29ubl9zdGF0ZS0+YnlwYXNzX3ZmaWx0ZXIgPSBmYWxzZTsKPiA+ID4gKwl9Cj4g PiA+ICAKPiA+ID4gIAlEUk1fREVCVUdfS01TKCJUViBtb2RlOlxuIik7Cj4gPiA+ICAJZHJtX21v ZGVfZGVidWdfcHJpbnRtb2RlbGluZShhZGp1c3RlZF9tb2RlKTsKPiA+ID4gQEAgLTEyMjIsOCAr MTMwMCw4IEBAIGludGVsX3R2X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ID4gPiAgCQkJCSAgY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5sZWZ0LAo+ID4gPiAg CQkJCSAgY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5yaWdodCk7Cj4gPiA+ICAJaW50ZWxfdHZfc2Nh bGVfbW9kZV92ZXJ0KGFkanVzdGVkX21vZGUsIHZkaXNwbGF5LAo+ID4gPiAtCQkJCSBjb25uX3N0 YXRlLT50di5tYXJnaW5zLnRvcCwKPiA+ID4gLQkJCQkgY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5i b3R0b20pOwo+ID4gPiArCQkJCSB0dl9jb25uX3N0YXRlLT5tYXJnaW5zLnRvcCwKPiA+ID4gKwkJ CQkgdHZfY29ubl9zdGF0ZS0+bWFyZ2lucy5ib3R0b20pOwo+ID4gPiAgCWRybV9tb2RlX3NldF9j cnRjaW5mbyhhZGp1c3RlZF9tb2RlLCAwKTsKPiA+ID4gIAlhZGp1c3RlZF9tb2RlLT5uYW1lWzBd ID0gJ1wwJzsKPiA+ID4gIAo+ID4gPiBAQCAtMTMxNiw4ICsxMzk0LDEwIEBAIHN0YXRpYyB2b2lk IGludGVsX3R2X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ID4gPiAgCXN0cnVjdCBpbnRlbF90diAq aW50ZWxfdHYgPSBlbmNfdG9fdHYoZW5jb2Rlcik7Cj4gPiA+ICsJY29uc3Qgc3RydWN0IGludGVs X3R2X2Nvbm5lY3Rvcl9zdGF0ZSAqdHZfY29ubl9zdGF0ZSA9Cj4gPiA+ICsJCXRvX2ludGVsX3R2 X2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKPiA+ID4gIAljb25zdCBzdHJ1Y3QgdHZfbW9k ZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmluZChjb25uX3N0YXRlKTsKPiA+ID4gLQl1MzIg dHZfY3RsOwo+ID4gPiArCXUzMiB0dl9jdGwsIHR2X2ZpbHRlcl9jdGw7Cj4gPiA+ICAJdTMyIHNj Y3RsMSwgc2NjdGwyLCBzY2N0bDM7Cj4gPiA+ICAJaW50IGksIGo7Cj4gPiA+ICAJY29uc3Qgc3Ry dWN0IHZpZGVvX2xldmVscyAqdmlkZW9fbGV2ZWxzOwo+ID4gPiBAQCAtMTQyNSwxNiArMTUwNSwy MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF90dl9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gPiAgCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBpbnRlbF9j cnRjLT5waXBlKTsKPiA+ID4gIAo+ID4gPiAgCS8qIEZpbHRlciBjdGwgbXVzdCBiZSBzZXQgYmVm b3JlIFRWX1dJTl9TSVpFICovCj4gPiA+IC0JSTkxNV9XUklURShUVl9GSUxURVJfQ1RMXzEsIFRW X0FVVE9fU0NBTEUpOwo+ID4gPiArCXR2X2ZpbHRlcl9jdGwgPSBUVl9BVVRPX1NDQUxFOwo+ID4g PiArCWlmICh0dl9jb25uX3N0YXRlLT5ieXBhc3NfdmZpbHRlcikKPiA+ID4gKwkJdHZfZmlsdGVy X2N0bCB8PSBUVl9WX0ZJTFRFUl9CWVBBU1M7Cj4gPiA+ICsJSTkxNV9XUklURShUVl9GSUxURVJf Q1RMXzEsIHR2X2ZpbHRlcl9jdGwpOwo+ID4gPiArCj4gPiA+ICAJeHNpemUgPSB0dl9tb2RlLT5o Ymxhbmtfc3RhcnQgLSB0dl9tb2RlLT5oYmxhbmtfZW5kOwo+ID4gPiAgCXlzaXplID0gaW50ZWxf dHZfbW9kZV92ZGlzcGxheSh0dl9tb2RlKTsKPiA+ID4gIAo+ID4gPiAgCXhwb3MgPSBjb25uX3N0 YXRlLT50di5tYXJnaW5zLmxlZnQ7Cj4gPiA+IC0JeXBvcyA9IGNvbm5fc3RhdGUtPnR2Lm1hcmdp bnMudG9wOwo+ID4gPiArCXlwb3MgPSB0dl9jb25uX3N0YXRlLT5tYXJnaW5zLnRvcDsKPiA+ID4g IAl4c2l6ZSAtPSAoY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5sZWZ0ICsKPiA+ID4gIAkJICBjb25u X3N0YXRlLT50di5tYXJnaW5zLnJpZ2h0KTsKPiA+ID4gLQl5c2l6ZSAtPSAoY29ubl9zdGF0ZS0+ dHYubWFyZ2lucy50b3AgKwo+ID4gPiAtCQkgIGNvbm5fc3RhdGUtPnR2Lm1hcmdpbnMuYm90dG9t KTsKPiA+ID4gKwl5c2l6ZSAtPSAodHZfY29ubl9zdGF0ZS0+bWFyZ2lucy50b3AgKwo+ID4gPiAr CQkgIHR2X2Nvbm5fc3RhdGUtPm1hcmdpbnMuYm90dG9tKTsKPiA+ID4gIAlJOTE1X1dSSVRFKFRW X1dJTl9QT1MsICh4cG9zPDwxNil8eXBvcyk7Cj4gPiA+ICAJSTkxNV9XUklURShUVl9XSU5fU0la RSwgKHhzaXplPDwxNil8eXNpemUpOwo+ID4gPiAgCj4gPiA+IEBAIC0xNzAxLDcgKzE3ODUsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgaW50ZWxfdHZfY29ubmVj dG9yX2Z1bmNzID0gewo+ID4gPiAgCS5kZXN0cm95ID0gaW50ZWxfY29ubmVjdG9yX2Rlc3Ryb3ks Cj4gPiA+ICAJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3Jf bW9kZXMsCj4gPiA+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gPiA+IC0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ID4gPiArCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfdHZfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0 ZSwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBpbnQgaW50ZWxfdHZfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+IC0tIAo+ID4gPiAyLjE4 LjEKPiA+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVs Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=