From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH v2 2/2] drm/msm/dsi: implement auto PHY timing calculator for 10nm PHY Date: Mon, 16 Apr 2018 13:01:34 -0400 Message-ID: <20180416170134.GP73214@art_vandelay> References: <1523087405-18877-1-git-send-email-abhinavk@codeaurora.org> <1523411647-16840-2-git-send-email-abhinavk@codeaurora.org> <20180413202919.GK73214@art_vandelay> <41fb3b8501b466e40a542066b76004c0@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: <41fb3b8501b466e40a542066b76004c0-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: abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Cc: jeykumar-jfJNa2p1gH1BDgjK7y7TUQ@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Sean Paul , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBBcHIgMTMsIDIwMTggYXQgMDE6NTI6MTdQTSAtMDcwMCwgYWJoaW5hdmtAY29kZWF1 cm9yYS5vcmcgd3JvdGU6Cj4gT24gMjAxOC0wNC0xMyAxMzoyOSwgU2VhbiBQYXVsIHdyb3RlOgo+ ID4gT24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDY6NTQ6MDdQTSAtMDcwMCwgQWJoaW5hdiBLdW1h ciB3cm90ZToKPiA+ID4gQ3VycmVudGx5IHRoZSBEU0kgUEhZIHRpbWluZ3MgYXJlIGhhcmQtY29k ZWQgZm9yIGEgc3BlY2lmaWMgcGFuZWwKPiA+ID4gZm9yIHRoZSAxMG5tIFBIWS4KPiA+ID4gCj4g PiA+IFJlcGxhY2UgdGhpcyB3aXRoIHRoZSBhdXRvIFBIWSB0aW1pbmcgY2FsY3VsYXRvciB3aGlj aCBjYW4gY2FsY3VsYXRlCj4gPiA+IHRoZSBQSFkgdGltaW5ncyBmb3IgYW55IHBhbmVsLgo+ID4g Cj4gPiBBbnkgY2hhbmNlIHlvdSBjb3VsZCBkb2N1bWVudCB3aGF0IHlvdSdyZSBkb2luZyBzbyBh bnlvbmUgd2l0aG91dAo+ID4gZG9jdW1lbnRhdGlvbgo+ID4gaGFzIGEgY2x1ZSB3aGF0J3MgZ29p bmcgb24/Cj4gPiAKPiA+IFNlYW4KPiA+IAo+IEkgYW0gYWZyYWlkIGl0IHdpbGwgaGFyZCB0byBk b2N1bWVudCBtb3JlIGFib3V0IHRoaXMgZnVuY3Rpb24gb3RoZXIgdGhhbgo+IHdoYXRzIG1lbnRp b25lZCBoZXJlLgo+IEJhc2ljYWxseSwgd2UgaGF2ZSBhbiBleGNlbCBzaGVldCB3aGljaCBkb2Vz IHRoaXMgbWF0aCB0byBjYWxjdWxhdGUgdGhlIERTSQo+IHRpbWluZ3MuCj4gVGhpcyBwYXRjaCBp bXBsZW1lbnRzIHRoYXQgZXhjZWwgc2hlZXQgZm9yIFNETTg0NSB3aGljaCB1c2VzIDEwbm0gUEhZ Lgo+IFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZXhwbGFpbiB0aGUgbWF0aCBpbiBtb3JlIGRldGFp bC4KCkFoaCwgb2sgOigKClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVt Lm9yZz4KCj4gPiA+IAo+ID4gPiBDaGFuZ2VzIGluIHYyOgo+ID4gPiAtIE5vbmUKPiA+ID4gCj4g PiA+IFJldmlld2VkLWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBBYmhpbmF2IEt1bWFyIDxhYmhpbmF2a0Bjb2RlYXVyb3JhLm9y Zz4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5j ICAgICAgfCAxMTEKPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmggICAgICB8ICAgMiArCj4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8xMG5tLmMgfCAgMjggLS0tLS0tLS0K PiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygt KQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9k c2lfcGh5LmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5jCj4g PiA+IGluZGV4IDhlOWQ1YzIuLjViNDI4ODUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvcGh5L2RzaV9waHkuYwo+ID4gPiBAQCAtMjY1LDYgKzI2NSwxMTcgQEAgaW50IG1zbV9k c2lfZHBoeV90aW1pbmdfY2FsY192MihzdHJ1Y3QKPiA+ID4gbXNtX2RzaV9kcGh5X3RpbWluZyAq dGltaW5nLAo+ID4gPiAgCXJldHVybiAwOwo+ID4gPiAgfQo+ID4gPiAKPiA+ID4gK2ludCBtc21f ZHNpX2RwaHlfdGltaW5nX2NhbGNfdjMoc3RydWN0IG1zbV9kc2lfZHBoeV90aW1pbmcgKnRpbWlu ZywKPiA+ID4gKwkJCQkgICAgICAgc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtf cmVxKQo+ID4gPiArewo+ID4gPiArCWNvbnN0IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUgPSBjbGtf cmVxLT5iaXRjbGtfcmF0ZTsKPiA+ID4gKwljb25zdCB1bnNpZ25lZCBsb25nIGVzY19yYXRlID0g Y2xrX3JlcS0+ZXNjY2xrX3JhdGU7Cj4gPiA+ICsJczMyIHVpLCB1aV94OCwgbHB4Owo+ID4gPiAr CXMzMiB0bWF4LCB0bWluOwo+ID4gPiArCXMzMiBwY250MCA9IDUwOwo+ID4gPiArCXMzMiBwY250 MSA9IDUwOwo+ID4gPiArCXMzMiBwY250MiA9IDEwOwo+ID4gPiArCXMzMiBwY250MyA9IDMwOwo+ ID4gPiArCXMzMiBwY250NCA9IDEwOwo+ID4gPiArCXMzMiBwY250NSA9IDI7Cj4gPiA+ICsJczMy IGNvZWZmID0gMTAwMDsgLyogUHJlY2lzaW9uLCBzaG91bGQgYXZvaWQgb3ZlcmZsb3cgKi8KPiA+ ID4gKwlzMzIgaGJfZW4sIGhiX2VuX2NrbG47Cj4gPiA+ICsJczMyIHRlbXA7Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoIWJpdF9yYXRlIHx8ICFlc2NfcmF0ZSkKPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiA+ICsKPiA+ID4gKwl0aW1pbmctPmhzX2hhbGZieXRlX2VuID0gMDsKPiA+ID4gKwloYl9l biA9IDA7Cj4gPiA+ICsJdGltaW5nLT5oc19oYWxmYnl0ZV9lbl9ja2xuID0gMDsKPiA+ID4gKwlo Yl9lbl9ja2xuID0gMDsKPiA+ID4gKwo+ID4gPiArCXVpID0gbXVsdF9mcmFjKE5TRUNfUEVSX01T RUMsIGNvZWZmLCBiaXRfcmF0ZSAvIDEwMDApOwo+ID4gPiArCXVpX3g4ID0gdWkgPDwgMzsKPiA+ ID4gKwlscHggPSBtdWx0X2ZyYWMoTlNFQ19QRVJfTVNFQywgY29lZmYsIGVzY19yYXRlIC8gMTAw MCk7Cj4gPiA+ICsKPiA+ID4gKwl0ZW1wID0gU19ESVZfUk9VTkRfVVAoMzggKiBjb2VmZiwgdWlf eDgpOwo+ID4gPiArCXRtaW4gPSBtYXhfdChzMzIsIHRlbXAsIDApOwo+ID4gPiArCXRlbXAgPSAo OTUgKiBjb2VmZikgLyB1aV94ODsKPiA+ID4gKwl0bWF4ID0gbWF4X3QoczMyLCB0ZW1wLCAwKTsK PiA+ID4gKwl0aW1pbmctPmNsa19wcmVwYXJlID0gbGluZWFyX2ludGVyKHRtYXgsIHRtaW4sIHBj bnQwLCAwLCBmYWxzZSk7Cj4gPiA+ICsKPiA+ID4gKwo+ID4gPiArCXRlbXAgPSAzMDAgKiBjb2Vm ZiAtICh0aW1pbmctPmNsa19wcmVwYXJlIDw8IDMpICogdWk7Cj4gPiA+ICsJdG1pbiA9IFNfRElW X1JPVU5EX1VQKHRlbXAsIHVpX3g4KSAtIDE7Cj4gPiA+ICsJdG1heCA9ICh0bWluID4gMjU1KSA/ IDUxMSA6IDI1NTsKPiA+ID4gKwl0aW1pbmctPmNsa196ZXJvID0gbGluZWFyX2ludGVyKHRtYXgs IHRtaW4sIHBjbnQ1LCAwLCBmYWxzZSk7Cj4gPiA+ICsKPiA+ID4gKwl0bWluID0gRElWX1JPVU5E X1VQKDYwICogY29lZmYgKyAzICogdWksIHVpX3g4KTsKPiA+ID4gKwl0ZW1wID0gMTA1ICogY29l ZmYgKyAxMiAqIHVpIC0gMjAgKiBjb2VmZjsKPiA+ID4gKwl0bWF4ID0gKHRlbXAgKyAzICogdWkp IC8gdWlfeDg7Cj4gPiA+ICsJdGltaW5nLT5jbGtfdHJhaWwgPSBsaW5lYXJfaW50ZXIodG1heCwg dG1pbiwgcGNudDMsIDAsIGZhbHNlKTsKPiA+ID4gKwo+ID4gPiArCXRlbXAgPSBTX0RJVl9ST1VO RF9VUCg0MCAqIGNvZWZmICsgNCAqIHVpLCB1aV94OCk7Cj4gPiA+ICsJdG1pbiA9IG1heF90KHMz MiwgdGVtcCwgMCk7Cj4gPiA+ICsJdGVtcCA9ICg4NSAqIGNvZWZmICsgNiAqIHVpKSAvIHVpX3g4 Owo+ID4gPiArCXRtYXggPSBtYXhfdChzMzIsIHRlbXAsIDApOwo+ID4gPiArCXRpbWluZy0+aHNf cHJlcGFyZSA9IGxpbmVhcl9pbnRlcih0bWF4LCB0bWluLCBwY250MSwgMCwgZmFsc2UpOwo+ID4g PiArCj4gPiA+ICsJdGVtcCA9IDE0NSAqIGNvZWZmICsgMTAgKiB1aSAtICh0aW1pbmctPmhzX3By ZXBhcmUgPDwgMykgKiB1aTsKPiA+ID4gKwl0bWluID0gU19ESVZfUk9VTkRfVVAodGVtcCwgdWlf eDgpIC0gMTsKPiA+ID4gKwl0bWF4ID0gMjU1Owo+ID4gPiArCXRpbWluZy0+aHNfemVybyA9IGxp bmVhcl9pbnRlcih0bWF4LCB0bWluLCBwY250NCwgMCwgZmFsc2UpOwo+ID4gPiArCj4gPiA+ICsJ dG1pbiA9IERJVl9ST1VORF9VUCg2MCAqIGNvZWZmICsgNCAqIHVpLCB1aV94OCkgLSAxOwo+ID4g PiArCXRlbXAgPSAxMDUgKiBjb2VmZiArIDEyICogdWkgLSAyMCAqIGNvZWZmOwo+ID4gPiArCXRt YXggPSAodGVtcCAvIHVpX3g4KSAtIDE7Cj4gPiA+ICsJdGltaW5nLT5oc190cmFpbCA9IGxpbmVh cl9pbnRlcih0bWF4LCB0bWluLCBwY250MywgMCwgZmFsc2UpOwo+ID4gPiArCj4gPiA+ICsJdGVt cCA9IDUwICogY29lZmYgKyAoKGhiX2VuIDw8IDIpIC0gOCkgKiB1aTsKPiA+ID4gKwl0aW1pbmct PmhzX3Jxc3QgPSBTX0RJVl9ST1VORF9VUCh0ZW1wLCB1aV94OCk7Cj4gPiA+ICsKPiA+ID4gKwl0 bWluID0gRElWX1JPVU5EX1VQKDEwMCAqIGNvZWZmLCB1aV94OCkgLSAxOwo+ID4gPiArCXRtYXgg PSAyNTU7Cj4gPiA+ICsJdGltaW5nLT5oc19leGl0ID0gbGluZWFyX2ludGVyKHRtYXgsIHRtaW4s IHBjbnQyLCAwLCBmYWxzZSk7Cj4gPiA+ICsKPiA+ID4gKwl0ZW1wID0gNTAgKiBjb2VmZiArICgo aGJfZW5fY2tsbiA8PCAyKSAtIDgpICogdWk7Cj4gPiA+ICsJdGltaW5nLT5oc19ycXN0X2NrbG4g PSBTX0RJVl9ST1VORF9VUCh0ZW1wLCB1aV94OCk7Cj4gPiA+ICsKPiA+ID4gKwl0ZW1wID0gNjAg KiBjb2VmZiArIDUyICogdWkgLSA0MyAqIHVpOwo+ID4gPiArCXRtaW4gPSBESVZfUk9VTkRfVVAo dGVtcCwgdWlfeDgpIC0gMTsKPiA+ID4gKwl0bWF4ID0gNjM7Cj4gPiA+ICsJdGltaW5nLT5zaGFy ZWRfdGltaW5ncy5jbGtfcG9zdCA9Cj4gPiA+ICsJCQkJbGluZWFyX2ludGVyKHRtYXgsIHRtaW4s IHBjbnQyLCAwLCBmYWxzZSk7Cj4gPiA+ICsKPiA+ID4gKwl0ZW1wID0gOCAqIHVpICsgKHRpbWlu Zy0+Y2xrX3ByZXBhcmUgPDwgMykgKiB1aTsKPiA+ID4gKwl0ZW1wICs9ICgoKHRpbWluZy0+Y2xr X3plcm8gKyAzKSA8PCAzKSArIDExKSAqIHVpOwo+ID4gPiArCXRlbXAgKz0gaGJfZW5fY2tsbiA/ ICgoKHRpbWluZy0+aHNfcnFzdF9ja2xuIDw8IDMpICsgNCkgKiB1aSkgOgo+ID4gPiArCQkJCSgo KHRpbWluZy0+aHNfcnFzdF9ja2xuIDw8IDMpICsgOCkgKiB1aSk7Cj4gPiA+ICsJdG1pbiA9IFNf RElWX1JPVU5EX1VQKHRlbXAsIHVpX3g4KSAtIDE7Cj4gPiA+ICsJdG1heCA9IDYzOwo+ID4gPiAr CWlmICh0bWluID4gdG1heCkgewo+ID4gPiArCQl0ZW1wID0gbGluZWFyX2ludGVyKHRtYXggPDwg MSwgdG1pbiwgcGNudDIsIDAsIGZhbHNlKTsKPiA+ID4gKwkJdGltaW5nLT5zaGFyZWRfdGltaW5n cy5jbGtfcHJlID0gdGVtcCA+PiAxOwo+ID4gPiArCQl0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNs a19wcmVfaW5jX2J5XzIgPSAxOwo+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ICsJCXRpbWluZy0+c2hh cmVkX3RpbWluZ3MuY2xrX3ByZSA9Cj4gPiA+ICsJCQkJbGluZWFyX2ludGVyKHRtYXgsIHRtaW4s IHBjbnQyLCAwLCBmYWxzZSk7Cj4gPiA+ICsJCXRpbWluZy0+c2hhcmVkX3RpbWluZ3MuY2xrX3By ZV9pbmNfYnlfMiA9IDA7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJdGltaW5nLT50YV9nbyA9 IDM7Cj4gPiA+ICsJdGltaW5nLT50YV9zdXJlID0gMDsKPiA+ID4gKwl0aW1pbmctPnRhX2dldCA9 IDQ7Cj4gPiA+ICsKPiA+ID4gKwlEQkcoIiVkLCAlZCwgJWQsICVkLCAlZCwgJWQsICVkLCAlZCwg JWQsICVkLCAlZCwgJWQsICVkLCAlZCwgJWQsCj4gPiA+ICVkIiwKPiA+ID4gKwkgICAgdGltaW5n LT5zaGFyZWRfdGltaW5ncy5jbGtfcHJlLCB0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNsa19wb3N0 LAo+ID4gPiArCSAgICB0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNsa19wcmVfaW5jX2J5XzIsIHRp bWluZy0+Y2xrX3plcm8sCj4gPiA+ICsJICAgIHRpbWluZy0+Y2xrX3RyYWlsLCB0aW1pbmctPmNs a19wcmVwYXJlLCB0aW1pbmctPmhzX2V4aXQsCj4gPiA+ICsJICAgIHRpbWluZy0+aHNfemVybywg dGltaW5nLT5oc19wcmVwYXJlLCB0aW1pbmctPmhzX3RyYWlsLAo+ID4gPiArCSAgICB0aW1pbmct PmhzX3Jxc3QsIHRpbWluZy0+aHNfcnFzdF9ja2xuLCB0aW1pbmctPmhzX2hhbGZieXRlX2VuLAo+ ID4gPiArCSAgICB0aW1pbmctPmhzX2hhbGZieXRlX2VuX2NrbG4sIHRpbWluZy0+aHNfcHJlcF9k bHksCj4gPiA+ICsJICAgIHRpbWluZy0+aHNfcHJlcF9kbHlfY2tsbik7Cj4gPiA+ICsKPiA+ID4g Kwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICB2b2lkIG1zbV9kc2lf cGh5X3NldF9zcmNfcGxsKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgcGxsX2lkLAo+ID4g PiB1MzIgcmVnLAo+ID4gPiAgCQkJCXUzMiBiaXRfbWFzaykKPiA+ID4gIHsKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmgKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5oCj4gPiA+IGluZGV4IGM1NjI2OGMuLmEy NGFiODAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lf cGh5LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHkuaAo+ ID4gPiBAQCAtMTAxLDYgKzEwMSw4IEBAIGludCBtc21fZHNpX2RwaHlfdGltaW5nX2NhbGMoc3Ry dWN0Cj4gPiA+IG1zbV9kc2lfZHBoeV90aW1pbmcgKnRpbWluZywKPiA+ID4gIAkJCSAgICAgc3Ry dWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKTsKPiA+ID4gIGludCBtc21fZHNp X2RwaHlfdGltaW5nX2NhbGNfdjIoc3RydWN0IG1zbV9kc2lfZHBoeV90aW1pbmcgKnRpbWluZywK PiA+ID4gIAkJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfY2xrX3JlcXVlc3QgKmNsa19yZXEpOwo+ID4g PiAraW50IG1zbV9kc2lfZHBoeV90aW1pbmdfY2FsY192MyhzdHJ1Y3QgbXNtX2RzaV9kcGh5X3Rp bWluZyAqdGltaW5nLAo+ID4gPiArCQkJCXN0cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAq Y2xrX3JlcSk7Cj4gPiA+ICB2b2lkIG1zbV9kc2lfcGh5X3NldF9zcmNfcGxsKHN0cnVjdCBtc21f ZHNpX3BoeSAqcGh5LCBpbnQgcGxsX2lkLAo+ID4gPiB1MzIgcmVnLAo+ID4gPiAgCQkJCXUzMiBi aXRfbWFzayk7Cj4gPiA+ICBpbnQgbXNtX2RzaV9waHlfaW5pdF9jb21tb24oc3RydWN0IG1zbV9k c2lfcGh5ICpwaHkpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv cGh5L2RzaV9waHlfMTBubS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2Rz aV9waHlfMTBubS5jCj4gPiA+IGluZGV4IDBhZjk1MWEuLmIzZmZmYzggMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzEwbm0uYwo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8xMG5tLmMKPiA+ID4gQEAgLTc5 LDM0ICs3OSw2IEBAIHN0YXRpYyB2b2lkIGRzaV9waHlfaHdfdjNfMF9sYW5lX3NldHRpbmdzKHN0 cnVjdAo+ID4gPiBtc21fZHNpX3BoeSAqcGh5KQo+ID4gPiAgCWRzaV9waHlfd3JpdGUobGFuZV9i YXNlICsgUkVHX0RTSV8xMG5tX1BIWV9MTl9UWF9EQ1RSTCgzKSwgMHgwNCk7Cj4gPiA+ICB9Cj4g PiA+IAo+ID4gPiAtc3RhdGljIGludCBtc21fZHNpX2RwaHlfdGltaW5nX2NhbGNfdjMoc3RydWN0 IG1zbV9kc2lfZHBoeV90aW1pbmcKPiA+ID4gKnRpbWluZywKPiA+ID4gLQkJCQkgICAgICAgc3Ry dWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKQo+ID4gPiAtewo+ID4gPiAtCS8q Cj4gPiA+IC0JICogVE9ETzogVGhlc2UgcGFyYW1zIG5lZWQgdG8gYmUgY29tcHV0ZWQsIHRoZXkn cmUgY3VycmVudGx5Cj4gPiA+IGhhcmRjb2RlZAo+ID4gPiAtCSAqIGZvciBhIDE0NDB4MjU2MEA2 MEh6IHBhbmVsIHdpdGggYSBieXRlY2xrIG9mIDEwMC42MTggTWh6LCBhbmQgYQo+ID4gPiAtCSAq IGRlZmF1bHQgZXNjYXBlIGNsb2NrIG9mIDE5LjIgTWh6Lgo+ID4gPiAtCSAqLwo+ID4gPiAtCj4g PiA+IC0JdGltaW5nLT5oc19oYWxmYnl0ZV9lbiA9IDA7Cj4gPiA+IC0JdGltaW5nLT5jbGtfemVy byA9IDB4MWM7Cj4gPiA+IC0JdGltaW5nLT5jbGtfcHJlcGFyZSA9IDB4MDc7Cj4gPiA+IC0JdGlt aW5nLT5jbGtfdHJhaWwgPSAweDA3Owo+ID4gPiAtCXRpbWluZy0+aHNfZXhpdCA9IDB4MjM7Cj4g PiA+IC0JdGltaW5nLT5oc196ZXJvID0gMHgyMTsKPiA+ID4gLQl0aW1pbmctPmhzX3ByZXBhcmUg PSAweDA3Owo+ID4gPiAtCXRpbWluZy0+aHNfdHJhaWwgPSAweDA3Owo+ID4gPiAtCXRpbWluZy0+ aHNfcnFzdCA9IDB4MDU7Cj4gPiA+IC0JdGltaW5nLT50YV9zdXJlID0gMHgwMDsKPiA+ID4gLQl0 aW1pbmctPnRhX2dvID0gMHgwMzsKPiA+ID4gLQl0aW1pbmctPnRhX2dldCA9IDB4MDQ7Cj4gPiA+ IC0KPiA+ID4gLQl0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNsa19wcmUgPSAweDJkOwo+ID4gPiAt CXRpbWluZy0+c2hhcmVkX3RpbWluZ3MuY2xrX3Bvc3QgPSAweDBkOwo+ID4gPiAtCj4gPiA+IC0J cmV0dXJuIDA7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4gIHN0YXRpYyBpbnQgZHNpXzEwbm1fcGh5 X2VuYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSwgaW50Cj4gPiA+IHNyY19wbGxfaWQsCj4g PiA+ICAJCQkgICAgICAgc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKQo+ ID4gPiAgewo+ID4gPiAtLQo+ID4gPiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIElu Yy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhCj4gPiA+IEZvcnVtLAo+ID4gPiBhIExp bnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4gPiA+IAoKLS0gClNlYW4gUGF1 bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=