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: Wed, 13 Feb 2019 10:50:55 +0100 Message-ID: <20190213095055.GF23159@phenom.ffwll.local> References: <20190211032225.9488-1-mario.kleiner.de@gmail.com> <20190211032225.9488-3-mario.kleiner.de@gmail.com> <20190211083540.GR23159@phenom.ffwll.local> <41354dd1-e3fe-58cc-9c10-1a8cd05b2a40@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Mario Kleiner Cc: "michel-otUistvHUpPR7s880joybQ@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter , "Deucher, Alexander" , "Kazlauskas, Nicholas" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMTIsIDIwMTkgYXQgMTA6MzI6MzFQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3 cm90ZToKPiBPbiBNb24sIEZlYiAxMSwgMjAxOSBhdCA2OjA0IFBNIERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPgo+ID4gT24gTW9uLCBGZWIgMTEsIDIwMTkgYXQgNDow MSBQTSBLYXpsYXVza2FzLCBOaWNob2xhcwo+ID4gPE5pY2hvbGFzLkthemxhdXNrYXNAYW1kLmNv bT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIDIvMTEvMTkgMzozNSBBTSwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiA+ID4gPiBPbiBNb24sIEZlYiAxMSwgMjAxOSBhdCAwNDoyMjoyNEFNICswMTAwLCBN YXJpbyBLbGVpbmVyIHdyb3RlOgo+ID4gPiA+PiBUaGUgcGFnZWZsaXAgY29tcGxldGlvbiB0aW1l c3RhbXBzIHRyYW5zbWl0dGVkIHRvIHVzZXJzcGFjZQo+ID4gPiA+PiB2aWEgcGFnZWZsaXAgY29t cGxldGlvbiBldmVudHMgYXJlIHN1cHBvc2VkIHRvIGRlc2NyaWJlIHRoZQo+ID4gPiA+PiB0aW1l IGF0IHdoaWNoIHRoZSBmaXJzdCBwaXhlbCBvZiB0aGUgbmV3IHBvc3QtcGFnZWZsaXAgc2Nhbm91 dAo+ID4gPiA+PiBidWZmZXIgbGVhdmVzIHRoZSB2aWRlbyBvdXRwdXQgb2YgdGhlIGdwdS4gVGhp cyB0aW1lIGlzCj4gPiA+ID4+IGlkZW50aWNhbCB0byBlbmQgb2YgdmJsYW5rLCB3aGVuIGFjdGl2 ZSBzY2Fub3V0IHN0YXJ0cy4KPiA+ID4gPj4KPiA+ID4gPj4gRm9yIGEgY3J0YyBpbiBzdGFuZGFy ZCBmaXhlZCByZWZyZXNoIHJhdGUsIHRoZSBlbmQgb2YgdmJsYW5rCj4gPiA+ID4+IGlzIGlkZW50 aWNhbCB0byB0aGUgdmJsYW5rIHRpbWVzdGFtcHMgY2FsY3VsYXRlZCBieQo+ID4gPiA+PiBkcm1f dXBkYXRlX3ZibGFua19jb3VudCgpIGF0IGVhY2ggdmJsYW5rIGludGVycnVwdCwgb3IgZWFjaAo+ ID4gPiA+PiB2YmxhbmsgZGlzLS9lbmFibGUuIFRoZXJlZm9yZSBwYWdlZmxpcCBldmVudHMganVz dCBjYXJyeQo+ID4gPiA+PiB0aGF0IHZibGFuayB0aW1lc3RhbXAgYXMgdGhlaXIgcGFnZWZsaXAg dGltZXN0YW1wLgo+ID4gPiA+Pgo+ID4gPiA+PiBGb3IgYSBjcnRjIHN3aXRjaGVkIHRvIHZhcmlh YmxlIHJlZnJlc2ggcmF0ZSBtb2RlICh2cnIpLCB0aGUKPiA+ID4gPj4gcGFnZWZsaXAgY29tcGxl dGlvbiB0aW1lc3RhbXBzIGFyZSBpZGVudGljYWwgdG8gdGhlIHZibGFuawo+ID4gPiA+PiB0aW1l c3RhbXBzIGlmZiB0aGUgcGFnZWZsaXAgd2FzIGV4ZWN1dGVkIGVhcmx5IGluIHZibGFuaywKPiA+ ID4gPj4gYmVmb3JlIHRoZSBtaW5pbXVtIHZibGFuayBkdXJhdGlvbiBlbGFwc2VkLiBJbiB0aGlz IGNhc2UKPiA+ID4gPj4gdGhlIHRpbWUgb2YgZGlzcGxheSBvbnNldCBpcyBpZGVudGljYWwgdG8g d2hlbiB0aGUgY3J0Ywo+ID4gPiA+PiBpcyBydW5uaW5nIGluIGZpeGVkIHJlZnJlc2ggcmF0ZS4K PiA+ID4gPj4KPiA+ID4gPj4gSG93ZXZlciwgaWYgYSBwYWdlZmxpcCBjb21wbGV0ZXMgbGF0ZXIg aW4gdGhlIHZibGFuaywgaW5zaWRlCj4gPiA+ID4+IHRoZSAiZXh0ZW5kZWQgZnJvbnQgcG9yY2gi IGluIHZyciBtb2RlLCB0aGVuIHRoZSB2Ymxhbmsgd2lsbAo+ID4gPiA+PiB0ZXJtaW5hdGUgYXQg YSBmaXhlZCAoYmFjayBwb3JjaCkgZHVyYXRpb24gYWZ0ZXIgZmxpcCwgc28KPiA+ID4gPj4gdGhl IGRpc3BsYXkgb25zZXQgdGltZSBpcyBkZWxheWVkIGNvcnJlc3BvbmRpbmdseS4gSW4gdGhpcwo+ ID4gPiA+PiBjYXNlIHRoZSB2YmxhbmsgdGltZXN0YW1wIGNvbXB1dGVkIGF0IHZibGFuayBpcnEg dGltZSB3b3VsZAo+ID4gPiA+PiBiZSB0b28gZWFybHksIGFuZCB3ZSBuZWVkIGEgd2F5IHRvIGNh bGN1bGF0ZSBhbiBlc3RpbWF0ZWQKPiA+ID4gPj4gcGFnZWZsaXAgdGltZXN0YW1wIHRoYXQgd2ls bCBiZSBsYXRlciB0aGFuIHRoZSB2YmxhbmsgdGltZXN0YW1wLgo+ID4gPiA+Pgo+ID4gPiA+PiBI b3cgYSBkcml2ZXIgZGV0ZXJtaW5lcyBzdWNoIGEgImxhdGUgZmxpcCIgdGltZXN0YW1wIGlzIGh3 Cj4gPiA+ID4+IGFuZCBkcml2ZXIgc3BlY2lmaWMsIGJ1dCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcg aGVscGVyIGZ1bmN0aW9uCj4gPiA+ID4+IHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gcHJvcG9z ZSBzdWNoIGFuIGFsdGVybmF0ZSAibGF0ZSBmbGlwIgo+ID4gPiA+PiB0aW1lc3RhbXAgZm9yIHVz ZSBpbiBwYWdlZmxpcCBldmVudHM6Cj4gPiA+ID4+Cj4gPiA+ID4+IGRybV9jcnRjX3NldF92cnJf cGFnZWZsaXBfdGltZXN0YW1wKGNydGMsIGZsaXBfdGltZXN0YW1wKTsKPiA+ID4gPj4KPiA+ID4g Pj4gV2hlbiBzZW5kaW5nIG91dCBwYWdlZmxpcCBldmVudHMsIHdlIG5vdyBjb21wYXJlIHRoYXQg cHJvcG9zZWQKPiA+ID4gPj4gZmxpcF90aW1lc3RhbXAgYWdhaW5zdCB0aGUgdmJsYW5rIHRpbWVz dGFtcCBvZiB0aGUgY3VycmVudAo+ID4gPiA+PiB2Ymxhbmsgb2YgZmxpcCBjb21wbGV0aW9uIGFu ZCBjaG9vc2UgdG8gc2VuZCBvdXQgdGhlIGdyZWF0ZXIvCj4gPiA+ID4+IGxhdGVyIHRpbWVzdGFt cCBhcyBmbGlwIGNvbXBsZXRpb24gdGltZXN0YW1wLgo+ID4gPiA+Pgo+ID4gPiA+PiBUaGUgbW9z dCBzaW1wbGUgd2F5IGZvciBhIGttcyBkcml2ZXIgdG8gc3VwcGx5IGEgc3VpdGFibGUKPiA+ID4g Pj4gZmxpcF90aW1lc3RhbXAgaW4gdnJyIG1vZGUgd291bGQgYmUgdG8gc2ltcGx5IHRha2UgYSB0 aW1lc3RhbXAKPiA+ID4gPj4gYXQgc3RhcnQgb2YgdGhlIHBhZ2VmbGlwIGNvbXBsZXRpb24gaGFu ZGxlciwgZS5nLiwgcGFnZWZsaXAKPiA+ID4gPj4gaXJxIGhhbmRsZXI6IGZsaXBfdGltZXN0YW1w ID0ga3RpbWVfZ2V0KCk7IGFuZCB0aGVuIHNldCB0aGF0Cj4gPiA+ID4+IGFzIHByb3Bvc2VkICJs YXRlIiBhbHRlcm5hdGl2ZSB0aW1lc3RhbXAgdmlhIC4uLgo+ID4gPiA+PiBkcm1fY3J0Y19zZXRf dnJyX3BhZ2VmbGlwX3RpbWVzdGFtcChjcnRjLCBmbGlwX3RpbWVzdGFtcCk7Cj4gPiA+ID4+Cj4g PiA+ID4+IE1vcmUgY2xldmVyIGFwcHJvYWNoZXMgY291bGQgdHJ5IHRvIGFkZCBzb21lIGNvcnJl Y3RpdmUgb2Zmc2V0Cj4gPiA+ID4+IGZvciBmaXhlZCBiYWNrIHBvcmNoIGR1cmF0aW9uLCBvciBp ZGVhbGx5IHVzZSBoYXJkd2FyZSBmZWF0dXJlcwo+ID4gPiA+PiBsaWtlIGh3IHRpbWVzdGFtcHMg dG8gY2FsY3VsYXRlIHRoZSBleGFjdCBlbmQgdGltZSBvZiB2YmxhbmsuCj4gPiA+ID4+Cj4gPiA+ ID4+IFNpZ25lZC1vZmYtYnk6IE1hcmlvIEtsZWluZXIgPG1hcmlvLmtsZWluZXIuZGVAZ21haWwu Y29tPgo+ID4gPiA+PiBDYzogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2th c0BhbWQuY29tPgo+ID4gPiA+PiBDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFt ZC5jb20+Cj4gPiA+ID4+IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5j b20+Cj4gPiA+ID4KPiA+ID4gPiBVaCwgdGhpcyBsb29rcyBsaWtlIGEgcHJldHR5IGJhZCBoYWNr LiBDYW4ndCB3ZSBmaXggYW1kZ3B1IHRvIG9ubHkgZ2l2ZSB1cwo+ID4gPiA+IHRoZSByaWdodCB0 aW1lc3RhbXBlLCBvbmNlPyBXaXRoIHRoaXMgSSBndWVzcyBpZiB5b3UgZG8gYSB2YmxhbmsgcXVl cnkgaW4KPiA+ID4gPiBiZXR3ZWVuIHRoZSB3cm9uZyBhbmQgdGhlIHJpZ2h0IHZibGFuayB5b3Un bGwgZ2V0IHRoZSBib2d1cyB2YWx1ZS4gTm90Cj4gPiA+ID4gcmVhbGx5IGdyZWF0IGZvciB1c2Vy c3BhY2UuCj4gPiA+ID4gLURhbmllbAo+ID4gPgo+ID4gPiBJIHRoaW5rIHdlIGNhbGN1bGF0ZSB0 aGUgdGltZXN0YW1wIGFuZCBzZW5kIHRoZSB2YmxhbmsgZXZlbnQgYm90aCB3aXRoaW4KPiA+ID4g dGhlIHBhZ2VmbGlwIElSUSBoYW5kbGVyIHNvIGNhbGN1bGF0aW5nIHRoZSByaWdodCBwYWdlZmxp cCB0aW1lc3RhbXAKPiA+ID4gb25jZSBjb3VsZCBwcm9iYWJseSBiZSBkb25lLiBJJ20gbm90IHN1 cmUgaWYgaXQncyBlYXNpZXIgdGhhbiBwcm9wb3NpbmcKPiA+ID4gYSBsYXRlciBmbGlwIHRpbWUg d2l0aCBhbiBBUEkgbGlrZSB0aGlzIHRob3VnaC4KPiA+ID4KPiA+ID4gVGhlIGFjdHVhbCBzY2Fu b3V0IHRpbWUgc2hvdWxkIGJlIGtub3duIGZyb20gdGhlIHBhZ2UtZmxpcCBoYW5kbGVyIHNvCj4g PiA+IHRoZSBzZW1hbnRpY3MgZm9yIFZSUiBvbi9vZmYgcmVtYWluIHRoZSBzYW1lLiBUaGlzIGlz IGJlY2F1c2UgdGhlCj4gPiA+IHBhZ2UtZmxpcCB0cmlnZ2VycyBlbnRlcmluZyB0aGUgYmFjayBw b3JjaCBpZiB3ZSdyZSBpbiB0aGUgZXh0ZW5kZWQKPiA+ID4gZnJvbnQgcG9yY2guCj4gPiA+Cj4g PiA+IEJ1dCBzY2Fub3V0IHRpbWUgZnJvbSB2YmxhbmsgZXZlbnRzIGZvciBzb21ldGhpbmcgbGlr ZQo+ID4gPiBEUk1fSU9DVExfV0FJVF9WQkxBTksgYXJlIGdvaW5nIHRvIGJlIHdyb25nIGluIG1v c3QgY2FzZXMgYW5kIGFyZSBvbmx5Cj4gPiA+IHRyZWF0ZWQgYXMgZXN0aW1hdGVzLiBJZiB3ZSdy ZSBpbiB0aGUgcmVndWxhciBmcm9udCBwb3JjaCB0aGVuIHRoZQo+ID4gPiB0aW1pbmcgdG8gc2Nh bm91dCBpcyBiYXNlZCBvbiB0aGUgZml4ZWQgZHVyYXRpb24gZnJvbnQgcG9yY2ggZm9yIHRoZQo+ ID4gPiBjdXJyZW50IG1vZGUuIElmIHdlJ3JlIGluIHRoZSBleHRlbmRlZCBiYWNrIHBvcmNoIHRo ZW4gaXQncyB0ZWNobmljYWxseQo+ID4gPiBkcml2ZXIgZGVmaW5lZCBidXQgdGhlIG1vc3QgcmVh c29uYWJsZSBndWVzcyBpcyB0byBhc3N1bWUgdGhhdCB0aGUgZnJvbnQKPiA+ID4gcG9yY2ggaXMg Z29pbmcgdG8gZW5kIGF0IGFueSBtb21lbnQsIHNvIGp1c3QgcmV0dXJuIHRoZSBsZW5ndGggb2Yg dGhlCj4gPiA+IGJhY2sgcG9yY2ggZm9yIGdldHRpbmcgdGhlIHNjYW5vdXQgdGltZS4KPiA+ID4K PiA+ID4gUHJvcG9zaW5nIHRoZSBsYXRlIHRpbWVzdGFtcCBzaG91bGRuJ3QgYWZmZWN0IHZibGFu ayBldmVudCBpbiB0aGUKPiA+ID4gRFJNX0lPQ1RMX1dBSVRfVkJMQU5LIGNhc2UgYW5kIHNob3Vs ZCBvbmx5IGJlIHVzZWQgaW4gdGhlIHBhZ2UtZmxpcAo+ID4gPiBldmVudCBjYXNlLiBJJ20gbm90 IHN1cmUgaWYgdGhhdCdzIHdoYXQncyBndWFyYW50ZWVkIHRvIGhhcHBlbiB3aXRoIHRoaXMKPiA+ ID4gcGF0Y2ggdGhvdWdoLiBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYW55IGxvY2tpbmcgb24g ZWl0aGVyCj4gPiA+IGRldi0+dmJsYW5rX3RpbWVfbG9jayBvciB0aGUgdmJsYW5rLT5zZXFsb2Nr IHNvIHdoaWxlIGl0J3MgbGlrZWx5IHRvIGdldAo+ID4gPiB0aGUgc2FtZSB2YmxhbmsgZXZlbnQg YmFjayBhcyB0aGUgb25lIGp1c3Qgc3RvcmVkIEkgZG9uJ3QgdGhpbmsgaXQncwo+ID4gPiBndWFy YW50ZWVkLgo+ID4KPiA+IFRoYXQncyB0aGUgaW5jb25zaXN0ZW5jeSBJIG1lYW4gdG8gaGlnaGxp Z2h0IC0gdGhlIHRpbWVzdGFtcCBmb3IgdGhlCj4gPiBzYW1lIGZyYW1lIGFzIG9ic2VydmVkIHRo cm91Z2ggZmxpcCBjb21wbGV0ZSBhbmQgdGhyb3VnaCB0aGUKPiA+IHdhaXRfdmJsYW5rIGlvY3Rs IGNhbiBkaWZmZXIuIFdoaWNoIHRoZXkgcmVhbGx5IHNob3VsZG4ndC4KPiA+Cj4gCj4gSWRlYWxs eSB0aGV5IHNob3VsZG4ndCBkaWZmZXIuIFRoZSBrZXJuZWwgZG9jcyBmb3IgZHJtX2NydGNfc3Rh dGUgc2F5Cj4gdGhhdCB2YmxhbmsgYW5kIHBhZ2VmbGlwIHRpbWVzdGFtcHMgc2hvdWxkIGFsd2F5 cyBtYXRjaC4gQnV0IHRoZW4gdGhlCj4ga2VybmVsIGRvY3MgZm9yICJWYXJpYWJsZSByZWZyZXNo IHByb3BlcnRpZXMiIGluIGRybV9jb25uZWN0b3IuYyBmb3IKPiB2YmxhbmsgdGltZXN0YW1wcyB3 ZXJlIGNoYW5nZWQgZm9yIHRoZSBWUlIgaW1wbGVtZW50YXRpb24gaW4gTGludXgKPiA1LjAtcmMg dG8gcmVkZWZpbmUgdGhlbSB3aGVuIGluIFZSUiBtb2RlLiBUaGV5IGFyZSBkZWZpbmVkLCBidXQK PiBwcm9iYWJseSByYXRoZXIgdXNlbGVzcyBmb3IgYW55IHByYWN0aWNhbCBwdXJwb3NlLCBsaWtl IHRoaXM6Cj4gCj4gIlRoZSBzZW1hbnRpY3MgZm9yIHRoZSB2ZXJ0aWNhbCBibGFuayB0aW1lc3Rh bXAgZGlmZmVyIHdoZW4KPiB2YXJpYWJsZSByZWZyZXNoIHJhdGUgaXMgYWN0aXZlLiBUaGUgdmVy dGljYWwgYmxhbmsgdGltZXN0YW1wCj4gaXMgZGVmaW5lZCB0byBiZSBhbiBlc3RpbWF0ZSB1c2lu ZyB0aGUgY3VycmVudCBtb2RlJ3MgZml4ZWQKPiByZWZyZXNoIHJhdGUgdGltaW5ncy4gVGhlIHNl bWFudGljcyBmb3IgdGhlIHBhZ2UtZmxpcCBldmVudAo+IHRpbWVzdGFtcCByZW1haW4gdGhlIHNh bWUuIgoKVWggSSBtaXNzZWQgdGhhdC4gVGhhdCBzb3VuZHMgbGlrZSBub25zZW5zZSB0YmguCgo+ IFNvIG91ciBkb2NzIGNvbnRyYWRpY3QgZWFjaCBvdGhlciBhcyBvZiBMaW51eCA1LjAtcmMuIENl cnRhaW5seSBoYXZpbmcKPiB1c2VmdWwgdmJsYW5rIHRpbWV0YW1wcyB3b3VsZCBiZSB1c2VmdWwu CgpZdXAsIGltbyB2Ymxhbmsgc2hvdWxkIHN0aWxsIG1hdGNoIHBhZ2VfZmxpcC4gT3RoZXJ3aXNl IEkgZXhwZWN0IGEgbG90IG9mCmhpbGFyaXR5IHdpbGwgZW5zdWUuCgo+ID4gTm93IGFkZGVkIGNv bXBsaWNhdGlvbiBpcyB0aGF0IGFtZGdwdSBzZW5kcyBvdXQgdmJsYW5rIGV2ZW50cyByZWFsbHkK PiA+IGVhcmx5LCB3aGljaCBpcyB1c2VkIGJ5IHVzZXJzcGFjZSB0byBkbyBmcm9udGJ1ZmZlciBy ZW5kZXJpbmcgaW4gdGhlCj4gPiB2YmxhbmsgdGltZS4gQnV0IEkgZG9uJ3QgdGhpbmsgYW55b25l IHdhbnRzIHRvIGRvIGJvdGggVlJSIGFuZAo+IAo+IEkgdGhpbmsgYWxsIGttcyBkcml2ZXJzIHRy eSB0byBjYWxsIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKSBhdCBzdGFydAo+IG9mIHZibGFuayB0 byBnaXZlIE1lc2EgdGhlIG1vc3QgdGltZSBmb3IgZnJvbnRidWZmZXIgcmVuZGVyaW5nIGZvcgo+ IGNsYXNzaWMgWC4gQnV0IHZibGFuayBldmVudHMgYXJlIGFsc28gdXNlZCBmb3Igc2NoZWR1bGlu ZyBidWZmZXJzd2Fwcwo+IG9yIG90aGVyIHN0dWZmIGZvciByZWRpcmVjdGVkIHdpbmRvd2VkIHJl bmRlcmluZywgb3IgdmlhIGFwaSdzIGxpa2UKPiBPTUxfc3luY19jb250cm9scyBnbFhXYWl0Rm9y TXNjT01MLCBzbyB0aGVyZSBtaWdodCBiZSBvdGhlciB0aGluZ3MKPiBhZmZlY3RlZCBieSBhIG1v cmUgZGVsYXllZCB2YmxhbmsgaGFuZGxpbmcuCgpUaGUgZnJvbnRidWZmZXIgcmVuZGVyaW5nIGlz IHZlcnkgbXVjaCBYIGRyaXZlciBzcGVjaWZpYywgYW5kIEkgdGhpbmsKLWFtZGdwdS9yYWRlb24g aXMgdGhlIG9ubHkgb25lIHRoYXQgcmVxdWlyZXMgdGhpcy4gTm8gaTkxNSBkcml2ZXIgZXZlcgp1 c2VkIHRoZSB2YmxhbmsgaW50ZXJydXB0IHRvIHNjaGVkdWxlIGZyb250YnVmZmVyIGJsaXRzLCB3 ZSB1c2Ugc29tZQpDUy1zaWRlIHN0YWxscy4KCldydCBzY2hlZHVsaW5nIHBhZ2VmbGlwczogVGhl IHJ1bGUgaXMgdGhhdCByaWdodCBhZnRlciB5b3UndmUgcmVjZWl2ZWQgdGhlCnZibGFuayBmb3Ig ZnJhbWUgWCwgdGhlbiBhbiBpbW1lZGlhdGVseSBzY2hlZHVsZSBwYWdlZmxpcCBzaG91bGQgaGl0 IFgrMSwKYnV0IG5vdCBYLiBhbWRncHUgaGFkIHRoaXMgYnJva2VuLCBidXQgaXQncyBmaXhlZCBz aW5jZSBhIHdoaWxlLgoKPiA+IGZyb250YnVmZmVyIHJlbmRlcmluZywgaGVuY2UgSSB0aGluayBp dCBzaG91bGQgYmUgcG9zc2libGUgdG8gY3JlYXRlCj4gPiBjb3JyZWN0IHZibGFuayB0aW1lc3Rh bXBzIGZvciB0aGUgVlJSIGNhc2UsIHdoaWxlIGxlYXZpbmcgdGhlIGN1cnJlbnQKPiA+IGxvZ2lj IGluIHBsYWNlIGZvciBldmVyeXRoaW5nIGVsc2UuIEJ1dCB0aGF0IG1lYW5zIG1vdmluZyB0aGUg ZW50aXJlCj4gPiB2YmxhbmsgcHJvY2Vzc2luZyB0byB3aGVyZSB5b3Uga25vdyB0aGUgbmV4dCBm cmFtZSdzIHN0YXJ0IHRpbWUgZm9yCj4gPiBWUlIsIGJvdGggZm9yIHBhZ2UgZmxpcHMgYW5kIGZv ciBhbGwgb3RoZXIgdmJsYW5rIGV2ZW50cy4KPiA+IC1EYW5pZWwKPiA+Cj4gCj4gSSB0aGluayBm b3IgYW1kZ3B1IGl0IHdvdWxkIGJlIGRvYWJsZSBieSBjYWxsaW5nIGRybV9oYW5kbGVfdmJsYW5r Cj4gZnJvbSB0aGUgcGFnZWZsaXAgaXJxIGhhbmRsZXIgaW4gVlJSIG1vZGUsIGFuZCB0aGVuIGFk ZGl0aW9uYWxseSBmcm9tCj4gdGhlIHZibGFuayBpbnRlcnJ1cHQgaGFuZGxlciBsaWtlIG5vdy4g VmJsYW5rIGlycSdzIGFyZSB0cmlnZ2VyZWQgdmlhCj4gdmxpbmUgaW50ZXJydXB0cyB3aXRoIHBy b2dyYW1tYWJsZSB2ZXJ0aWNhbCB0cmlnZ2VyIGxpbmUgcG9zaXRpb24sIHNvCj4gd2UgY291bGQg cHJvZ3JhbSB0aGUgdHJpZ2dlciBsaW5lIHRvIGJlIHN0YXJ0IG9mIGJhY2stcG9yY2ggaW5zdGVh ZCBvZgo+IHN0YXJ0IG9mIGZyb250LXBvcmNoLiBJbiB0aGUgcGFnZWZsaXAgY2FzZSB3ZSBkbyB2 YmxhbmsgaGFuZGxpbmcgKwo+IHRpbWVzdGFtcGluZyArIHBmbGlwIGNvbXBsZXRpb24gZnJvbSBw ZmxpcCBpcnEsIGFuZCBoYXZlIHRoZSByZWd1bGFyCj4gYmFjay1wb3JjaCB2YmxhbmsgaGFuZGxp bmcgZm9yIHJlZnJlc2ggY3ljbGVzIGluIHdoaWNoIG5vCj4gcGFnZWZsaXAvcGZsaXAgaXJxIGhh cHBlbmVkLgoKSG0sIGNhbid0IHdlIHNpbXBseSBwcm9ncmFtIHRoZSB2YmxhbmsgdG8gb2NjdXIg aW4gdGhlIGJhY2sgcG9yY2ggcmVnaW9uCmZvciBWUlI/IFRoZSB2YmxhbmsgdGltZXN0YW1waW5n IHNob3VsZCBhdXRvbWF0aWNhbGx5IGNvcnJlY3QgdGhlCnRpbWVzdGFtcCBpbiB0aGF0IGNhc2Uu IFdvdWxkIHJlcXVpcmUgYSBsb3QgbGVzcyBjb2RlIGNoYW5nZXMuCgpQbHVzIHVwZGF0ZSB0aGUg ZG9jdW1lbnRhdGlvbiBvZmMuCgo+IE5vdCBzdXJlIGlmL2hvdyB0aGF0IHdvdWxkIG1lc3Mgd2l0 aCBiZWxvdy12cnItcmVmcmVzaC1yYXRlLXJhbmdlCj4gc3VwcG9ydCBmb3Igc3R1dHRlciByZWR1 Y3Rpb24gYXQgbG93IGZwcyB0aG91Z2g/IE9yIHdpdGggcGVyZm9ybWFuY2UsCj4gZ2l2ZW4gdmJs YW5rIGV2ZW50IGRpc3BhdGNoIGNvdWxkIGJlIGRlbGF5ZWQgYSBsb3QgaW4gVlJSIGNvbXBhcmVk IHRvCj4gbm9ybWFsIG1vZGU/IE9yIHdpdGggYWxsIHRoZSB2YmxhbmsgYWNjb3VudGluZyBkdXJp bmcgbW9kZXNldHMgb3IgY3J0Ywo+IGVuL2Rpc2FibGU/CgpDdXJyZW50bHkgVlJSIGFuZCBleHBs aWNpdCBmcmFtZSBzY2hlZHVsaW5nIGRvbid0IG1peC4gV2UndmUgZGlzY3Vzc2VkCnRoaXMsIGFu ZCBjb25zZW5zIHNlZW1zIHRvIGJlIHRoYXQgd2UgbmVlZCBhIG5ldyBwcm9wZXJ0eSBmb3IgcGFn ZV9mbGlwLApzaW1pbGFyIHRvIHRoZSB0YXJnZXQgZnJhbWUsIGJ1dCBpbnN0ZWFkIG9mIGZyYW1l cyBhIHRpbWVzdGFtcC4gVGhlbiB0aGUKZHJpdmVyIGNhbiBoaXQgYSBzcGVjaWZpYyB0aW1lIGZv ciB0aGUgbmV4dCBmcmFtZS4KCkFuZCBzaW5jZSBjb21wb3NpdG9ycyB1c2UgdGhlIHZibGFuayBp b2N0bCBqdXN0IHRvIGRvIGZyYW1lIHNjaGVkdWxpbmcsIEkKZG9uJ3QgdGhpbmsgd2UgaGF2ZSB0 byB3b3JyeSBodWdlbHkgYWJvdXQgaW50ZXJhY3Rpb25zIHRoZXJlLiBNdWNoIGJldHRlcgp0byBh aW0gZm9yIGNsZWFuIHNlbWFudGljcyAoaS5lLiB2YmxhbmsgYW5kIGZsaXAgY29tcGxldGUgdGlt ZXN0YW1wcwpiZXR0ZXIgbWF0Y2gpLgoKPiBBbHNvLCBjb3VsZCBvdGhlciBkcml2ZXJzIGxpa2Ug SW50ZWwgZWFzaWx5IGRvIHRoaXMgZGVsYXllZCB2YmxhbmsKPiBwcm9jZXNzaW5nIGluIHRoZSBu b24tcGFnZWZsaXAgY2FzZT8KCkludGVsJ3MgcHJvYmxlbSA6LSkgQnV0IHllYWggd2UgaGF2ZSBw YWdlIGZsaXAgdGltZXN0YW1wIHJlZ2lzdGVycywgc28Kd29yc3QgY2FzZSBhbGwgd2UgbmVlZCB0 byBkbyBpcyBzaHVmZmxlIGNvZGUgYXJvdW5kIGEgYml0LiBBbmQgd2UgaGF2ZQppbnRlcnJ1cHRz IGZvciBib3RoIHN0YXJ0IG9mIHZibGFuayBhbmQgYW5kIG9mIHZibGFuay4gSXQgbWlnaHQgYmUg YSBiaXQKbW9yZSB3b3JrIGJlY2F1c2Ugd2UgdXNlIHRoZSB2YmxhbmsgaW50ZXJydXB0IHRvIGF2 b2lkIHJhY2VzIGluIGF0b21pYwp1cGRhdGVzLCBidXQgdGhhdCdzIG5vdCB0b28gdGVycmlibGUg dG8gZml4LgoKPiBGcm9tIG15IHVzZXIgcGVyc3BlY3RpdmUgYXMgYSBkZXZlbG9wZXIgb2YgYSBu ZXVyb3NjaWVuY2UgcmVzZWFyY2gKPiBhcHBsaWNhdGlvbiB0aGF0IGhhcyBhIGNvdXBsZSBvZiBl eGNpdGluZy9pbXBvcnRhbnQgdXNlIGNhc2VzIGZvciBWUlIKPiBtb2RlLCBpIGFic29sdXRlbHkg ZG8gbmVlZCB0cnVzdHdvcnRoeSBhbmQgcHJlY2lzZSBwYWdlZmxpcCBldmVudAo+IHRpbWVzdGFt cHMgdGhhdCByZXByZXNlbnQgcmVhbGl0eSwgb3RoZXJ3aXNlIFZSUiBtb2RlIHdvdWxkIGJlIGxl c3MKPiB0aGFuIHVzZWxlc3MgZm9yIG1lLiBJIGNhbiBkbyB3aXRob3V0IG1lYW5pbmdmdWwgdmJs YW5rIHRpbWVzdGFtcHMgaW4KPiBWUlIgbW9kZSB0aG91Z2gsIGFuZCBleHBlY3RlZCB0byBkbyB3 aXRob3V0IHRoZW0sIGFzIGFueSBzY2hlZHVsaW5nCj4gaGFzIHRvIGhhcHBlbiB0aW1lLWJhc2Vk IGluc3RlYWQgb2YgYmFzZWQgb24gdmJsYW5rIGNvdW50cyBhbnl3YXksCj4gZ2l2ZW4gdGhhdCB2 YmxhbmsgY291bnRzIGFyZSBxdWl0ZSBtZWFuaW5nbGVzcyBpZiBldmVyeSBmcmFtZSBjYW4gaGF2 ZQo+IGEgZGlmZmVyZW50IGR1cmF0aW9uLiBJJ2QgZXhwZWN0IHRoYXQgc2l0dWF0aW9uIHRvIGJl IHNpbWlsYXIgZm9yCj4gb3RoZXIgYXBwcyB0aGF0IHdvdWxkIHdhbnQgdG8gdXNlIHRpbWVzdGFt cHMgaW4gVlJSIG1vZGUgbGlrZSB2aWRlbwo+IGdhbWVzLCBtb3ZpZSBwbGF5ZXJzIG9yIFZSL0FS IGFwcGxpY2F0aW9ucy4KClllYWggZm9yIHRoYXQgeW91IHdhbnQgdG8gc2NoZWR1bGUgeW91ciBm cmFtZXMgd2l0aCBhIHRhcmdldCBmcmFtZSBudW1iZXIuCldvdWxkIHN0aWxsIGJlIG5pY2UgaWYg dmJsYW5rIHRpbWVzdGFtcHMgd291bGRuJ3QgYmUgYW4gb3V0cmlnaHQgbGllIChhbmQKdGhlIHRp bWVzdGFtcCBpcyBzdGlsbCB1c2VmdWwgaW5mb3JtYXRpb24sIGV2ZW4gaWYgdGhlIGZyYW1lIGNv dW50ZXIKaXNuJ3QgLSBtYW55IGRpc3BsYXlzIGhhdmUgbWluL21heCBmcmFtZSByYXRlcyBmb3Ig VlJSLCB3aGljaCBpcwppbmZvcm1hdGlvbiB3ZSBjb3VsZCBwZXJoYXBzIGV4cG9zZSkuCi1EYW5p ZWwKCj4gCj4gLW1hcmlvCj4gCj4gPiA+Cj4gPiA+IE5pY2hvbGFzIEthemxhdXNrYXMKPiA+ID4K PiA+ID4gPgo+ID4gPiA+PiAtLS0KPiA+ID4gPj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFu ay5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiA+ID4+ICAg aW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oICAgICB8ICA4ICsrKysrKwo+ID4gPiA+PiAgIDIgZmls ZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gPiA+Pgo+ID4g PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fdmJsYW5rLmMKPiA+ID4gPj4gaW5kZXggOThlMDkxMTc1OTIxLi40YjNhNGMz OGZhYmUgMTAwNjQ0Cj4gPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMK PiA+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwo+ID4gPiA+PiBAQCAt ODE0LDEwICs4MTQsMjEgQEAgc3RhdGljIHZvaWQgc2VuZF92YmxhbmtfZXZlbnQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+ID4gPj4gICAgICAgICAgICAgIHU2NCBzZXEsIGt0aW1lX3Qgbm93 KQo+ID4gPiA+PiAgIHsKPiA+ID4gPj4gICAgICBzdHJ1Y3QgdGltZXNwZWM2NCB0djsKPiA+ID4g Pj4gKyAgICBrdGltZV90IGFsdF9mbGlwX3RpbWU7Cj4gPiA+ID4+Cj4gPiA+ID4+ICAgICAgc3dp dGNoIChlLT5ldmVudC5iYXNlLnR5cGUpIHsKPiA+ID4gPj4gLSAgICBjYXNlIERSTV9FVkVOVF9W QkxBTks6Cj4gPiA+ID4+ICAgICAgY2FzZSBEUk1fRVZFTlRfRkxJUF9DT01QTEVURToKPiA+ID4g Pj4gKyAgICAgICAgICAgIC8qCj4gPiA+ID4+ICsgICAgICAgICAgICAgKiBGb3IgZmxpcCBjb21w bGV0aW9uIGV2ZW50cywgb3ZlcnJpZGUgIm5vdyIgdGltZQo+ID4gPiA+PiArICAgICAgICAgICAg ICogd2l0aCBhbHRfZmxpcF90aW1lIHByb3ZpZGVkIGJ5IHRoZSBkcml2ZXIgdmlhCj4gPiA+ID4+ ICsgICAgICAgICAgICAgKiBkcm1fY3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcCgpIGlu IFZSUiBtb2RlCj4gPiA+ID4+ICsgICAgICAgICAgICAgKiBpZiB0aGF0IHRpbWUgaXMgbGF0ZXIg dGhhbiBnaXZlbiAibm93IiB2YmxhbmsgdGltZS4KPiA+ID4gPj4gKyAgICAgICAgICAgICAqLwo+ ID4gPiA+PiArICAgICAgICAgICAgYWx0X2ZsaXBfdGltZSA9IGRldi0+dmJsYW5rW2UtPnBpcGVd LmFsdF9mbGlwX3RpbWU7Cj4gPiA+ID4+ICsgICAgICAgICAgICBpZiAoYWx0X2ZsaXBfdGltZSA+ IG5vdykKPiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgbm93ID0gYWx0X2ZsaXBfdGltZTsK PiA+ID4gPj4gKyAgICAgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCj4gPiA+ID4+ICsgICAgY2Fz ZSBEUk1fRVZFTlRfVkJMQU5LOgo+ID4gPiA+PiAgICAgICAgICAgICAgdHYgPSBrdGltZV90b190 aW1lc3BlYzY0KG5vdyk7Cj4gPiA+ID4+ICAgICAgICAgICAgICBlLT5ldmVudC52Ymwuc2VxdWVu Y2UgPSBzZXE7Cj4gPiA+ID4+ICAgICAgICAgICAgICAvKgo+ID4gPiA+PiBAQCAtOTE2LDExICs5 MjcsNDcgQEAgdm9pZCBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gPiA+ID4+Cj4gPiA+ID4+ICAgICAgICAgICAgICBub3cgPSBrdGltZV9nZXQoKTsK PiA+ID4gPj4gICAgICB9Cj4gPiA+ID4+ICsKPiA+ID4gPj4gICAgICBlLT5waXBlID0gcGlwZTsK PiA+ID4gPj4gICAgICBzZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgbm93KTsKPiA+ID4g Pj4gICB9Cj4gPiA+ID4+ICAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVu dCk7Cj4gPiA+ID4+Cj4gPiA+ID4+ICsvKioKPiA+ID4gPj4gKyAqIGRybV9jcnRjX3NldF92cnJf cGFnZWZsaXBfdGltZXN0YW1wIC0gaGVscGVyIHRvIHNldCBhbHRlcm5hdGUgcGFnZWZsaXAgdGlt ZQo+ID4gPiA+PiArICogQGNydGM6IHRoZSBzb3VyY2UgQ1JUQyBvZiB0aGUgcGFnZWZsaXAgY29t cGxldGlvbiBldmVudAo+ID4gPiA+PiArICogQGZsaXBfdGltZTogVGhlIGFsdGVybmF0ZSBwYWdl ZmxpcCBjb21wbGV0aW9uIHRpbWVzdGFtcCBpbiBWUlIgbW9kZQo+ID4gPiA+PiArICoKPiA+ID4g Pj4gKyAqIEluIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBtb2RlIChWUlIpLCBhIHBhZ2VmbGlwIGNv bXBsZXRpb24gdGltZXN0YW1wIGNhcnJpZWQKPiA+ID4gPj4gKyAqIGJ5IHRoZSBwYWdlZmxpcCBl dmVudCBjYW4gbmV2ZXIgYmUgZWFybGllciB0aGFuIHRoZSB2YmxhbmsgdGltZXN0YW1wIG9mIHRo ZQo+ID4gPiA+PiArICogdmJsYW5rIG9mIGZsaXAgY29tcGxldGlvbiwgYXMgdGhhdCB2Ymxhbmsg dGltZXN0YW1wIGRlZmluZXMgdGhlIGVuZCBvZiB0aGUKPiA+ID4gPj4gKyAqIHNob3J0ZXN0IHBv c3NpYmxlIHZibGFuayBkdXJhdGlvbi4gSW4gY2FzZSBvZiBhIGRlbGF5ZWQgZmxpcCBjb21wbGV0 aW9uCj4gPiA+ID4+ICsgKiBpbnNpZGUgdGhlIGV4dGVuZGVkIFZSUiBmcm9udCBwb3JjaCBob3dl dmVyLCB0aGUgZW5kIG9mIHZibGFuayBjYW4gYmUgbXVjaAo+ID4gPiA+PiArICogbGF0ZXIsIHNv IHRoZSBkcml2ZXIgbXVzdCBhc3NpZ24gYW4gZXN0aW1hdGVkIHRpbWVzdGFtcCBvZiB0aGF0IGxh dGVyIGVuZCBvZgo+ID4gPiA+PiArICogdmJsYW5rLiBGb3IgYSBDUlRDIGluIFZSUiBtb2RlLCB0 aGUgZHJpdmVyIHNob3VsZCB1c2UgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8KPiA+ID4gPj4gKyAq IHNldCBhbiBhbHRlcm5hdGUgZmxpcCBjb21wbGV0aW9uIHRpbWVzdGFtcCBpbiBjYXNlIG9mIGxh dGUgZmxpcCBjb21wbGV0aW9ucwo+ID4gPiA+PiArICogaW4gZXh0ZW5kZWQgdmJsYW5rLiBJbiB0 aGUgbW9zdCBzaW1wbGUgY2FzZSwgdGhpcyBAZmxpcF90aW1lIHRpbWVzdGFtcCBjb3VsZAo+ID4g PiA+PiArICogc2ltcGx5IGJlIGEga3RpbWVfZ2V0KCkgdGltZXN0YW1wIHRha2VuIGF0IHRoZSBz dGFydCBvZiB0aGUgcGFnZWZsaXAKPiA+ID4gPj4gKyAqIGNvbXBsZXRpb24gcm91dGluZSwgd2l0 aCBzb21lIGNvbnN0YW50IGR1cmF0aW9uIG9mIHRoZSBiYWNrIHBvcmNoIGludGVydmFsCj4gPiA+ ID4+ICsgKiBhZGRlZCwgYWx0aG91Z2ggbW9yZSBwcmVjaXNlIGVzdGltYXRlcyBtYXkgYmUgcG9z c2libGUgb24gc29tZSBoYXJkd2FyZSBpZgo+ID4gPiA+PiArICogdGhlIGhhcmR3YXJlIHByb3Zp ZGVzIHNvbWUgbWVhbnMgb2YgdGltZXN0YW1waW5nIHRoZSB0cnVlIGVuZCBvZiB2YmxhbmsuCj4g PiA+ID4+ICsgKgo+ID4gPiA+PiArICogV2hlbiBzZW5kaW5nIG91dCBwYWdlZmxpcCBldmVudHMs IGUuZy4sIHZpYSBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgpLCBpdAo+ID4gPiA+PiArICog d2lsbCB1c2UgZWl0aGVyIHRoZSBzdGFuZGFyZCB2YmxhbmsgdGltZXN0YW1wLCBjYWxjdWxhdGVk IGZvciBhIG1pbmltdW0KPiA+ID4gPj4gKyAqIGR1cmF0aW9uIHZibGFuaywgb3IgdGhlIHByb3Zp ZGVkIEBmbGlwX3RpbWUgaWYgdGhhdCB0aW1lIGlzIGxhdGVyIHRoYW4gdGhlCj4gPiA+ID4+ICsg KiB2YmxhbmsgdGltZXN0YW1wLCB0byBnZXQgdGhlIGJlc3QgcG9zc2libGUgZXN0aW1hdGUgb2Yg c3RhcnQgb2YgZGlzcGxheSBvZgo+ID4gPiA+PiArICogdGhlIG5ldyBwb3N0LXBhZ2VmbGlwIHNj YW5vdXQgYnVmZmVyLgo+ID4gPiA+PiArICovCj4gPiA+ID4+ICt2b2lkIGRybV9jcnRjX3NldF92 cnJfcGFnZWZsaXBfdGltZXN0YW1wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdGltZV90IGZsaXBfdGltZSkKPiA+ ID4gPj4gK3sKPiA+ID4gPj4gKyAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2 Owo+ID4gPiA+PiArICAgIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZi bGFua1tkcm1fY3J0Y19pbmRleChjcnRjKV07Cj4gPiA+ID4+ICsKPiA+ID4gPj4gKyAgICB2Ymxh bmstPmFsdF9mbGlwX3RpbWUgPSBmbGlwX3RpbWU7Cj4gPiA+ID4+ICt9Cj4gPiA+ID4+ICtFWFBP UlRfU1lNQk9MKGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKTsKPiA+ID4gPj4g Kwo+ID4gPiA+PiAgIHN0YXRpYyBpbnQgX19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ID4gPiA+PiAgIHsKPiA+ID4gPj4gICAgICBpZiAo ZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkgewo+ID4gPiA+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oIGIvaW5jbHVkZS9kcm0vZHJtX3Zi bGFuay5oCj4gPiA+ID4+IGluZGV4IDZhZDk2MzBkNGY0OC4uYWFjZjQ0Njk0YWI2IDEwMDY0NAo+ ID4gPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmgKPiA+ID4gPj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ID4+IEBAIC0xMTcsNiArMTE3LDEyIEBAIHN0cnVj dCBkcm1fdmJsYW5rX2NydGMgewo+ID4gPiA+PiAgICAgICAqIEB0aW1lOiBWYmxhbmsgdGltZXN0 YW1wIGNvcnJlc3BvbmRpbmcgdG8gQGNvdW50Lgo+ID4gPiA+PiAgICAgICAqLwo+ID4gPiA+PiAg ICAgIGt0aW1lX3QgdGltZTsKPiA+ID4gPj4gKyAgICAvKioKPiA+ID4gPj4gKyAgICAgKiBAYWx0 X2ZsaXBfdGltZTogVmJsYW5rIHRpbWVzdGFtcCBmb3IgZW5kIG9mIGV4dGVuZGVkIHZibGFuayBk dWUgdG8KPiA+ID4gPj4gKyAgICAgKiBhIGxhdGUgcGFnZWZsaXAgY29tcGxldGlvbiBpbiB2YXJp YWJsZSByZWZyZXNoIHJhdGUgbW9kZS4gUGFnZWZsaXAKPiA+ID4gPj4gKyAgICAgKiBldmVudHMg d2lsbCBjYXJyeSB0aGUgbGF0ZXIgb25lIG9mIEB0aW1lIGFuZCBAYWx0X2ZsaXBfdGltZS4KPiA+ ID4gPj4gKyAgICAgKi8KPiA+ID4gPj4gKyAgICBrdGltZV90IGFsdF9mbGlwX3RpbWU7Cj4gPiA+ ID4+Cj4gPiA+ID4+ICAgICAgLyoqCj4gPiA+ID4+ICAgICAgICogQHJlZmNvdW50OiBOdW1iZXIg b2YgdXNlcnMvd2FpdGVycyBvZiB0aGUgdmJsYW5rIGludGVycnVwdC4gT25seSB3aGVuCj4gPiA+ ID4+IEBAIC0xNzksNiArMTg1LDggQEAgaW50IGRybV92YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnVtX2NydGNzKTsKPiA+ID4gPj4gICB1NjQgZHJtX2Ny dGNfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiA+ID4+ICAgdTY0IGRy bV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3RpbWVfdCAqdmJsYW5rdGltZSk7 Cj4gPiA+ID4+ICt2b2lkIGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBrdGltZV90IGZsaXBfdGltZSk7Cj4gPiA+ID4+ICAgdm9pZCBkcm1fY3J0Y19zZW5k X3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKTsKPiA+ ID4gPj4gICB2b2lkIGRybV9jcnRjX2FybV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ID4gPiA+PiAtLQo+ID4gPiA+PiAyLjE3LjEKPiA+ID4gPj4KPiA+ID4gPj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPj4gZHJpLWRl dmVsIG1haWxpbmcgbGlzdAo+ID4gPiA+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gPiA+ID4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCj4gPiA+ID4KPiA+ID4KPiA+Cj4gPgo+ID4gLS0KPiA+IERhbmllbCBWZXR0ZXIK PiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKzQxICgwKSA3OSAz NjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGlu ZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==