From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/3] drm: Add basic helper to allow precise pageflip timestamps in vrr. Date: Mon, 11 Feb 2019 09:35:40 +0100 Message-ID: <20190211083540.GR23159@phenom.ffwll.local> References: <20190211032225.9488-1-mario.kleiner.de@gmail.com> <20190211032225.9488-3-mario.kleiner.de@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id E840689BC2 for ; Mon, 11 Feb 2019 08:35:44 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id f9so8084556eds.10 for ; Mon, 11 Feb 2019 00:35:44 -0800 (PST) Content-Disposition: inline In-Reply-To: <20190211032225.9488-3-mario.kleiner.de@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mario Kleiner Cc: Alex Deucher , michel@daenzer.net, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Nicholas Kazlauskas List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBGZWIgMTEsIDIwMTkgYXQgMDQ6MjI6MjRBTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3 cm90ZToKPiBUaGUgcGFnZWZsaXAgY29tcGxldGlvbiB0aW1lc3RhbXBzIHRyYW5zbWl0dGVkIHRv IHVzZXJzcGFjZQo+IHZpYSBwYWdlZmxpcCBjb21wbGV0aW9uIGV2ZW50cyBhcmUgc3VwcG9zZWQg dG8gZGVzY3JpYmUgdGhlCj4gdGltZSBhdCB3aGljaCB0aGUgZmlyc3QgcGl4ZWwgb2YgdGhlIG5l dyBwb3N0LXBhZ2VmbGlwIHNjYW5vdXQKPiBidWZmZXIgbGVhdmVzIHRoZSB2aWRlbyBvdXRwdXQg b2YgdGhlIGdwdS4gVGhpcyB0aW1lIGlzCj4gaWRlbnRpY2FsIHRvIGVuZCBvZiB2YmxhbmssIHdo ZW4gYWN0aXZlIHNjYW5vdXQgc3RhcnRzLgo+IAo+IEZvciBhIGNydGMgaW4gc3RhbmRhcmQgZml4 ZWQgcmVmcmVzaCByYXRlLCB0aGUgZW5kIG9mIHZibGFuawo+IGlzIGlkZW50aWNhbCB0byB0aGUg dmJsYW5rIHRpbWVzdGFtcHMgY2FsY3VsYXRlZCBieQo+IGRybV91cGRhdGVfdmJsYW5rX2NvdW50 KCkgYXQgZWFjaCB2YmxhbmsgaW50ZXJydXB0LCBvciBlYWNoCj4gdmJsYW5rIGRpcy0vZW5hYmxl LiBUaGVyZWZvcmUgcGFnZWZsaXAgZXZlbnRzIGp1c3QgY2FycnkKPiB0aGF0IHZibGFuayB0aW1l c3RhbXAgYXMgdGhlaXIgcGFnZWZsaXAgdGltZXN0YW1wLgo+IAo+IEZvciBhIGNydGMgc3dpdGNo ZWQgdG8gdmFyaWFibGUgcmVmcmVzaCByYXRlIG1vZGUgKHZyciksIHRoZQo+IHBhZ2VmbGlwIGNv bXBsZXRpb24gdGltZXN0YW1wcyBhcmUgaWRlbnRpY2FsIHRvIHRoZSB2YmxhbmsKPiB0aW1lc3Rh bXBzIGlmZiB0aGUgcGFnZWZsaXAgd2FzIGV4ZWN1dGVkIGVhcmx5IGluIHZibGFuaywKPiBiZWZv cmUgdGhlIG1pbmltdW0gdmJsYW5rIGR1cmF0aW9uIGVsYXBzZWQuIEluIHRoaXMgY2FzZQo+IHRo ZSB0aW1lIG9mIGRpc3BsYXkgb25zZXQgaXMgaWRlbnRpY2FsIHRvIHdoZW4gdGhlIGNydGMKPiBp cyBydW5uaW5nIGluIGZpeGVkIHJlZnJlc2ggcmF0ZS4KPiAKPiBIb3dldmVyLCBpZiBhIHBhZ2Vm bGlwIGNvbXBsZXRlcyBsYXRlciBpbiB0aGUgdmJsYW5rLCBpbnNpZGUKPiB0aGUgImV4dGVuZGVk IGZyb250IHBvcmNoIiBpbiB2cnIgbW9kZSwgdGhlbiB0aGUgdmJsYW5rIHdpbGwKPiB0ZXJtaW5h dGUgYXQgYSBmaXhlZCAoYmFjayBwb3JjaCkgZHVyYXRpb24gYWZ0ZXIgZmxpcCwgc28KPiB0aGUg ZGlzcGxheSBvbnNldCB0aW1lIGlzIGRlbGF5ZWQgY29ycmVzcG9uZGluZ2x5LiBJbiB0aGlzCj4g Y2FzZSB0aGUgdmJsYW5rIHRpbWVzdGFtcCBjb21wdXRlZCBhdCB2YmxhbmsgaXJxIHRpbWUgd291 bGQKPiBiZSB0b28gZWFybHksIGFuZCB3ZSBuZWVkIGEgd2F5IHRvIGNhbGN1bGF0ZSBhbiBlc3Rp bWF0ZWQKPiBwYWdlZmxpcCB0aW1lc3RhbXAgdGhhdCB3aWxsIGJlIGxhdGVyIHRoYW4gdGhlIHZi bGFuayB0aW1lc3RhbXAuCj4gCj4gSG93IGEgZHJpdmVyIGRldGVybWluZXMgc3VjaCBhICJsYXRl IGZsaXAiIHRpbWVzdGFtcCBpcyBodwo+IGFuZCBkcml2ZXIgc3BlY2lmaWMsIGJ1dCB0aGlzIHBh dGNoIGFkZHMgYSBuZXcgaGVscGVyIGZ1bmN0aW9uCj4gdGhhdCBhbGxvd3MgdGhlIGRyaXZlciB0 byBwcm9wb3NlIHN1Y2ggYW4gYWx0ZXJuYXRlICJsYXRlIGZsaXAiCj4gdGltZXN0YW1wIGZvciB1 c2UgaW4gcGFnZWZsaXAgZXZlbnRzOgo+IAo+IGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGlt ZXN0YW1wKGNydGMsIGZsaXBfdGltZXN0YW1wKTsKPiAKPiBXaGVuIHNlbmRpbmcgb3V0IHBhZ2Vm bGlwIGV2ZW50cywgd2Ugbm93IGNvbXBhcmUgdGhhdCBwcm9wb3NlZAo+IGZsaXBfdGltZXN0YW1w IGFnYWluc3QgdGhlIHZibGFuayB0aW1lc3RhbXAgb2YgdGhlIGN1cnJlbnQKPiB2Ymxhbmsgb2Yg ZmxpcCBjb21wbGV0aW9uIGFuZCBjaG9vc2UgdG8gc2VuZCBvdXQgdGhlIGdyZWF0ZXIvCj4gbGF0 ZXIgdGltZXN0YW1wIGFzIGZsaXAgY29tcGxldGlvbiB0aW1lc3RhbXAuCj4gCj4gVGhlIG1vc3Qg c2ltcGxlIHdheSBmb3IgYSBrbXMgZHJpdmVyIHRvIHN1cHBseSBhIHN1aXRhYmxlCj4gZmxpcF90 aW1lc3RhbXAgaW4gdnJyIG1vZGUgd291bGQgYmUgdG8gc2ltcGx5IHRha2UgYSB0aW1lc3RhbXAK PiBhdCBzdGFydCBvZiB0aGUgcGFnZWZsaXAgY29tcGxldGlvbiBoYW5kbGVyLCBlLmcuLCBwYWdl ZmxpcAo+IGlycSBoYW5kbGVyOiBmbGlwX3RpbWVzdGFtcCA9IGt0aW1lX2dldCgpOyBhbmQgdGhl biBzZXQgdGhhdAo+IGFzIHByb3Bvc2VkICJsYXRlIiBhbHRlcm5hdGl2ZSB0aW1lc3RhbXAgdmlh IC4uLgo+IGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKGNydGMsIGZsaXBfdGlt ZXN0YW1wKTsKPiAKPiBNb3JlIGNsZXZlciBhcHByb2FjaGVzIGNvdWxkIHRyeSB0byBhZGQgc29t ZSBjb3JyZWN0aXZlIG9mZnNldAo+IGZvciBmaXhlZCBiYWNrIHBvcmNoIGR1cmF0aW9uLCBvciBp ZGVhbGx5IHVzZSBoYXJkd2FyZSBmZWF0dXJlcwo+IGxpa2UgaHcgdGltZXN0YW1wcyB0byBjYWxj dWxhdGUgdGhlIGV4YWN0IGVuZCB0aW1lIG9mIHZibGFuay4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBN YXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4KPiBDYzogTmljaG9sYXMg S2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPgo+IENjOiBIYXJyeSBXZW50 bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5k ZXIuZGV1Y2hlckBhbWQuY29tPgoKVWgsIHRoaXMgbG9va3MgbGlrZSBhIHByZXR0eSBiYWQgaGFj ay4gQ2FuJ3Qgd2UgZml4IGFtZGdwdSB0byBvbmx5IGdpdmUgdXMKdGhlIHJpZ2h0IHRpbWVzdGFt cGUsIG9uY2U/IFdpdGggdGhpcyBJIGd1ZXNzIGlmIHlvdSBkbyBhIHZibGFuayBxdWVyeSBpbgpi ZXR3ZWVuIHRoZSB3cm9uZyBhbmQgdGhlIHJpZ2h0IHZibGFuayB5b3UnbGwgZ2V0IHRoZSBib2d1 cyB2YWx1ZS4gTm90CnJlYWxseSBncmVhdCBmb3IgdXNlcnNwYWNlLgotRGFuaWVsCgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4gIGluY2x1ZGUvZHJtL2RybV92YmxhbmsuaCAgICAgfCAgOCArKysr KysKPiAgMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3ZibGFuay5jCj4gaW5kZXggOThlMDkxMTc1OTIxLi40YjNhNGMzOGZhYmUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fdmJsYW5rLmMKPiBAQCAtODE0LDEwICs4MTQsMjEgQEAgc3RhdGljIHZvaWQg c2VuZF92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl1NjQgc2VxLCBr dGltZV90IG5vdykKPiAgewo+ICAJc3RydWN0IHRpbWVzcGVjNjQgdHY7Cj4gKwlrdGltZV90IGFs dF9mbGlwX3RpbWU7Cj4gIAo+ICAJc3dpdGNoIChlLT5ldmVudC5iYXNlLnR5cGUpIHsKPiAtCWNh c2UgRFJNX0VWRU5UX1ZCTEFOSzoKPiAgCWNhc2UgRFJNX0VWRU5UX0ZMSVBfQ09NUExFVEU6Cj4g KwkJLyoKPiArCQkgKiBGb3IgZmxpcCBjb21wbGV0aW9uIGV2ZW50cywgb3ZlcnJpZGUgIm5vdyIg dGltZQo+ICsJCSAqIHdpdGggYWx0X2ZsaXBfdGltZSBwcm92aWRlZCBieSB0aGUgZHJpdmVyIHZp YQo+ICsJCSAqIGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKCkgaW4gVlJSIG1v ZGUKPiArCQkgKiBpZiB0aGF0IHRpbWUgaXMgbGF0ZXIgdGhhbiBnaXZlbiAibm93IiB2Ymxhbmsg dGltZS4KPiArCQkgKi8KPiArCQlhbHRfZmxpcF90aW1lID0gZGV2LT52YmxhbmtbZS0+cGlwZV0u YWx0X2ZsaXBfdGltZTsKPiArCQlpZiAoYWx0X2ZsaXBfdGltZSA+IG5vdykKPiArCQkJbm93ID0g YWx0X2ZsaXBfdGltZTsKPiArCQkvKiBGYWxsdGhyb3VnaCAqLwo+ICsJY2FzZSBEUk1fRVZFTlRf VkJMQU5LOgo+ICAJCXR2ID0ga3RpbWVfdG9fdGltZXNwZWM2NChub3cpOwo+ICAJCWUtPmV2ZW50 LnZibC5zZXF1ZW5jZSA9IHNlcTsKPiAgCQkvKgo+IEBAIC05MTYsMTEgKzkyNyw0NyBAQCB2b2lk IGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4g IAkJbm93ID0ga3RpbWVfZ2V0KCk7Cj4gIAl9Cj4gKwo+ICAJZS0+cGlwZSA9IHBpcGU7Cj4gIAlz ZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgbm93KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9M KGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KTsKPiAgCj4gKy8qKgo+ICsgKiBkcm1fY3J0Y19z ZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcCAtIGhlbHBlciB0byBzZXQgYWx0ZXJuYXRlIHBhZ2Vm bGlwIHRpbWUKPiArICogQGNydGM6IHRoZSBzb3VyY2UgQ1JUQyBvZiB0aGUgcGFnZWZsaXAgY29t cGxldGlvbiBldmVudAo+ICsgKiBAZmxpcF90aW1lOiBUaGUgYWx0ZXJuYXRlIHBhZ2VmbGlwIGNv bXBsZXRpb24gdGltZXN0YW1wIGluIFZSUiBtb2RlCj4gKyAqCj4gKyAqIEluIHZhcmlhYmxlIHJl ZnJlc2ggcmF0ZSBtb2RlIChWUlIpLCBhIHBhZ2VmbGlwIGNvbXBsZXRpb24gdGltZXN0YW1wIGNh cnJpZWQKPiArICogYnkgdGhlIHBhZ2VmbGlwIGV2ZW50IGNhbiBuZXZlciBiZSBlYXJsaWVyIHRo YW4gdGhlIHZibGFuayB0aW1lc3RhbXAgb2YgdGhlCj4gKyAqIHZibGFuayBvZiBmbGlwIGNvbXBs ZXRpb24sIGFzIHRoYXQgdmJsYW5rIHRpbWVzdGFtcCBkZWZpbmVzIHRoZSBlbmQgb2YgdGhlCj4g KyAqIHNob3J0ZXN0IHBvc3NpYmxlIHZibGFuayBkdXJhdGlvbi4gSW4gY2FzZSBvZiBhIGRlbGF5 ZWQgZmxpcCBjb21wbGV0aW9uCj4gKyAqIGluc2lkZSB0aGUgZXh0ZW5kZWQgVlJSIGZyb250IHBv cmNoIGhvd2V2ZXIsIHRoZSBlbmQgb2YgdmJsYW5rIGNhbiBiZSBtdWNoCj4gKyAqIGxhdGVyLCBz byB0aGUgZHJpdmVyIG11c3QgYXNzaWduIGFuIGVzdGltYXRlZCB0aW1lc3RhbXAgb2YgdGhhdCBs YXRlciBlbmQgb2YKPiArICogdmJsYW5rLiBGb3IgYSBDUlRDIGluIFZSUiBtb2RlLCB0aGUgZHJp dmVyIHNob3VsZCB1c2UgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8KPiArICogc2V0IGFuIGFsdGVy bmF0ZSBmbGlwIGNvbXBsZXRpb24gdGltZXN0YW1wIGluIGNhc2Ugb2YgbGF0ZSBmbGlwIGNvbXBs ZXRpb25zCj4gKyAqIGluIGV4dGVuZGVkIHZibGFuay4gSW4gdGhlIG1vc3Qgc2ltcGxlIGNhc2Us IHRoaXMgQGZsaXBfdGltZSB0aW1lc3RhbXAgY291bGQKPiArICogc2ltcGx5IGJlIGEga3RpbWVf Z2V0KCkgdGltZXN0YW1wIHRha2VuIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFnZWZsaXAKPiArICog Y29tcGxldGlvbiByb3V0aW5lLCB3aXRoIHNvbWUgY29uc3RhbnQgZHVyYXRpb24gb2YgdGhlIGJh Y2sgcG9yY2ggaW50ZXJ2YWwKPiArICogYWRkZWQsIGFsdGhvdWdoIG1vcmUgcHJlY2lzZSBlc3Rp bWF0ZXMgbWF5IGJlIHBvc3NpYmxlIG9uIHNvbWUgaGFyZHdhcmUgaWYKPiArICogdGhlIGhhcmR3 YXJlIHByb3ZpZGVzIHNvbWUgbWVhbnMgb2YgdGltZXN0YW1waW5nIHRoZSB0cnVlIGVuZCBvZiB2 YmxhbmsuCj4gKyAqCj4gKyAqIFdoZW4gc2VuZGluZyBvdXQgcGFnZWZsaXAgZXZlbnRzLCBlLmcu LCB2aWEgZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoKSwgaXQKPiArICogd2lsbCB1c2UgZWl0 aGVyIHRoZSBzdGFuZGFyZCB2YmxhbmsgdGltZXN0YW1wLCBjYWxjdWxhdGVkIGZvciBhIG1pbmlt dW0KPiArICogZHVyYXRpb24gdmJsYW5rLCBvciB0aGUgcHJvdmlkZWQgQGZsaXBfdGltZSBpZiB0 aGF0IHRpbWUgaXMgbGF0ZXIgdGhhbiB0aGUKPiArICogdmJsYW5rIHRpbWVzdGFtcCwgdG8gZ2V0 IHRoZSBiZXN0IHBvc3NpYmxlIGVzdGltYXRlIG9mIHN0YXJ0IG9mIGRpc3BsYXkgb2YKPiArICog dGhlIG5ldyBwb3N0LXBhZ2VmbGlwIHNjYW5vdXQgYnVmZmVyLgo+ICsgKi8KPiArdm9pZCBkcm1f Y3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g KwkJCQkJIGt0aW1lX3QgZmxpcF90aW1lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+ dmJsYW5rW2RybV9jcnRjX2luZGV4KGNydGMpXTsKPiArCj4gKwl2YmxhbmstPmFsdF9mbGlwX3Rp bWUgPSBmbGlwX3RpbWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fY3J0Y19zZXRfdnJyX3Bh Z2VmbGlwX3RpbWVzdGFtcCk7Cj4gKwo+ICBzdGF0aWMgaW50IF9fZW5hYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiAgewo+ICAJaWYgKGRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpIHsKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gaW5k ZXggNmFkOTYzMGQ0ZjQ4Li5hYWNmNDQ2OTRhYjYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX3ZibGFuay5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gQEAgLTExNyw2 ICsxMTcsMTIgQEAgc3RydWN0IGRybV92YmxhbmtfY3J0YyB7Cj4gIAkgKiBAdGltZTogVmJsYW5r IHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIEBjb3VudC4KPiAgCSAqLwo+ICAJa3RpbWVfdCB0 aW1lOwo+ICsJLyoqCj4gKwkgKiBAYWx0X2ZsaXBfdGltZTogVmJsYW5rIHRpbWVzdGFtcCBmb3Ig ZW5kIG9mIGV4dGVuZGVkIHZibGFuayBkdWUgdG8KPiArCSAqIGEgbGF0ZSBwYWdlZmxpcCBjb21w bGV0aW9uIGluIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBtb2RlLiBQYWdlZmxpcAo+ICsJICogZXZl bnRzIHdpbGwgY2FycnkgdGhlIGxhdGVyIG9uZSBvZiBAdGltZSBhbmQgQGFsdF9mbGlwX3RpbWUu Cj4gKwkgKi8KPiArCWt0aW1lX3QgYWx0X2ZsaXBfdGltZTsKPiAgCj4gIAkvKioKPiAgCSAqIEBy ZWZjb3VudDogTnVtYmVyIG9mIHVzZXJzL3dhaXRlcnMgb2YgdGhlIHZibGFuayBpbnRlcnJ1cHQu IE9ubHkgd2hlbgo+IEBAIC0xNzksNiArMTg1LDggQEAgaW50IGRybV92YmxhbmtfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnVtX2NydGNzKTsKPiAgdTY0IGRybV9j cnRjX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICB1NjQgZHJtX2NydGNf dmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCSAgIGt0 aW1lX3QgKnZibGFua3RpbWUpOwo+ICt2b2lkIGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGlt ZXN0YW1wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJCQkga3RpbWVfdCBmbGlwX3RpbWUp Owo+ICB2b2lkIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUpOwo+ICB2 b2lkIGRybV9jcnRjX2FybV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0t IAo+IDIuMTcuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=