From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH 2/3] drm: Add basic helper to allow precise pageflip timestamps in vrr. Date: Mon, 11 Feb 2019 15:01:44 +0000 Message-ID: <41354dd1-e3fe-58cc-9c10-1a8cd05b2a40@amd.com> References: <20190211032225.9488-1-mario.kleiner.de@gmail.com> <20190211032225.9488-3-mario.kleiner.de@gmail.com> <20190211083540.GR23159@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190211083540.GR23159-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US Content-ID: <6F5476C184FE574E86B0E3985B083530-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter , Mario Kleiner Cc: "Deucher, Alexander" , "michel-otUistvHUpPR7s880joybQ@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gMi8xMS8xOSAzOjM1IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiBPbiBNb24sIEZlYiAx MSwgMjAxOSBhdCAwNDoyMjoyNEFNICswMTAwLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPj4gVGhl IHBhZ2VmbGlwIGNvbXBsZXRpb24gdGltZXN0YW1wcyB0cmFuc21pdHRlZCB0byB1c2Vyc3BhY2UN Cj4+IHZpYSBwYWdlZmxpcCBjb21wbGV0aW9uIGV2ZW50cyBhcmUgc3VwcG9zZWQgdG8gZGVzY3Jp YmUgdGhlDQo+PiB0aW1lIGF0IHdoaWNoIHRoZSBmaXJzdCBwaXhlbCBvZiB0aGUgbmV3IHBvc3Qt cGFnZWZsaXAgc2Nhbm91dA0KPj4gYnVmZmVyIGxlYXZlcyB0aGUgdmlkZW8gb3V0cHV0IG9mIHRo ZSBncHUuIFRoaXMgdGltZSBpcw0KPj4gaWRlbnRpY2FsIHRvIGVuZCBvZiB2YmxhbmssIHdoZW4g YWN0aXZlIHNjYW5vdXQgc3RhcnRzLg0KPj4NCj4+IEZvciBhIGNydGMgaW4gc3RhbmRhcmQgZml4 ZWQgcmVmcmVzaCByYXRlLCB0aGUgZW5kIG9mIHZibGFuaw0KPj4gaXMgaWRlbnRpY2FsIHRvIHRo ZSB2YmxhbmsgdGltZXN0YW1wcyBjYWxjdWxhdGVkIGJ5DQo+PiBkcm1fdXBkYXRlX3ZibGFua19j b3VudCgpIGF0IGVhY2ggdmJsYW5rIGludGVycnVwdCwgb3IgZWFjaA0KPj4gdmJsYW5rIGRpcy0v ZW5hYmxlLiBUaGVyZWZvcmUgcGFnZWZsaXAgZXZlbnRzIGp1c3QgY2FycnkNCj4+IHRoYXQgdmJs YW5rIHRpbWVzdGFtcCBhcyB0aGVpciBwYWdlZmxpcCB0aW1lc3RhbXAuDQo+Pg0KPj4gRm9yIGEg Y3J0YyBzd2l0Y2hlZCB0byB2YXJpYWJsZSByZWZyZXNoIHJhdGUgbW9kZSAodnJyKSwgdGhlDQo+ PiBwYWdlZmxpcCBjb21wbGV0aW9uIHRpbWVzdGFtcHMgYXJlIGlkZW50aWNhbCB0byB0aGUgdmJs YW5rDQo+PiB0aW1lc3RhbXBzIGlmZiB0aGUgcGFnZWZsaXAgd2FzIGV4ZWN1dGVkIGVhcmx5IGlu IHZibGFuaywNCj4+IGJlZm9yZSB0aGUgbWluaW11bSB2YmxhbmsgZHVyYXRpb24gZWxhcHNlZC4g SW4gdGhpcyBjYXNlDQo+PiB0aGUgdGltZSBvZiBkaXNwbGF5IG9uc2V0IGlzIGlkZW50aWNhbCB0 byB3aGVuIHRoZSBjcnRjDQo+PiBpcyBydW5uaW5nIGluIGZpeGVkIHJlZnJlc2ggcmF0ZS4NCj4+ DQo+PiBIb3dldmVyLCBpZiBhIHBhZ2VmbGlwIGNvbXBsZXRlcyBsYXRlciBpbiB0aGUgdmJsYW5r LCBpbnNpZGUNCj4+IHRoZSAiZXh0ZW5kZWQgZnJvbnQgcG9yY2giIGluIHZyciBtb2RlLCB0aGVu IHRoZSB2Ymxhbmsgd2lsbA0KPj4gdGVybWluYXRlIGF0IGEgZml4ZWQgKGJhY2sgcG9yY2gpIGR1 cmF0aW9uIGFmdGVyIGZsaXAsIHNvDQo+PiB0aGUgZGlzcGxheSBvbnNldCB0aW1lIGlzIGRlbGF5 ZWQgY29ycmVzcG9uZGluZ2x5LiBJbiB0aGlzDQo+PiBjYXNlIHRoZSB2YmxhbmsgdGltZXN0YW1w IGNvbXB1dGVkIGF0IHZibGFuayBpcnEgdGltZSB3b3VsZA0KPj4gYmUgdG9vIGVhcmx5LCBhbmQg d2UgbmVlZCBhIHdheSB0byBjYWxjdWxhdGUgYW4gZXN0aW1hdGVkDQo+PiBwYWdlZmxpcCB0aW1l c3RhbXAgdGhhdCB3aWxsIGJlIGxhdGVyIHRoYW4gdGhlIHZibGFuayB0aW1lc3RhbXAuDQo+Pg0K Pj4gSG93IGEgZHJpdmVyIGRldGVybWluZXMgc3VjaCBhICJsYXRlIGZsaXAiIHRpbWVzdGFtcCBp cyBodw0KPj4gYW5kIGRyaXZlciBzcGVjaWZpYywgYnV0IHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBo ZWxwZXIgZnVuY3Rpb24NCj4+IHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gcHJvcG9zZSBzdWNo IGFuIGFsdGVybmF0ZSAibGF0ZSBmbGlwIg0KPj4gdGltZXN0YW1wIGZvciB1c2UgaW4gcGFnZWZs aXAgZXZlbnRzOg0KPj4NCj4+IGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKGNy dGMsIGZsaXBfdGltZXN0YW1wKTsNCj4+DQo+PiBXaGVuIHNlbmRpbmcgb3V0IHBhZ2VmbGlwIGV2 ZW50cywgd2Ugbm93IGNvbXBhcmUgdGhhdCBwcm9wb3NlZA0KPj4gZmxpcF90aW1lc3RhbXAgYWdh aW5zdCB0aGUgdmJsYW5rIHRpbWVzdGFtcCBvZiB0aGUgY3VycmVudA0KPj4gdmJsYW5rIG9mIGZs aXAgY29tcGxldGlvbiBhbmQgY2hvb3NlIHRvIHNlbmQgb3V0IHRoZSBncmVhdGVyLw0KPj4gbGF0 ZXIgdGltZXN0YW1wIGFzIGZsaXAgY29tcGxldGlvbiB0aW1lc3RhbXAuDQo+Pg0KPj4gVGhlIG1v c3Qgc2ltcGxlIHdheSBmb3IgYSBrbXMgZHJpdmVyIHRvIHN1cHBseSBhIHN1aXRhYmxlDQo+PiBm bGlwX3RpbWVzdGFtcCBpbiB2cnIgbW9kZSB3b3VsZCBiZSB0byBzaW1wbHkgdGFrZSBhIHRpbWVz dGFtcA0KPj4gYXQgc3RhcnQgb2YgdGhlIHBhZ2VmbGlwIGNvbXBsZXRpb24gaGFuZGxlciwgZS5n LiwgcGFnZWZsaXANCj4+IGlycSBoYW5kbGVyOiBmbGlwX3RpbWVzdGFtcCA9IGt0aW1lX2dldCgp OyBhbmQgdGhlbiBzZXQgdGhhdA0KPj4gYXMgcHJvcG9zZWQgImxhdGUiIGFsdGVybmF0aXZlIHRp bWVzdGFtcCB2aWEgLi4uDQo+PiBkcm1fY3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcChj cnRjLCBmbGlwX3RpbWVzdGFtcCk7DQo+Pg0KPj4gTW9yZSBjbGV2ZXIgYXBwcm9hY2hlcyBjb3Vs ZCB0cnkgdG8gYWRkIHNvbWUgY29ycmVjdGl2ZSBvZmZzZXQNCj4+IGZvciBmaXhlZCBiYWNrIHBv cmNoIGR1cmF0aW9uLCBvciBpZGVhbGx5IHVzZSBoYXJkd2FyZSBmZWF0dXJlcw0KPj4gbGlrZSBo dyB0aW1lc3RhbXBzIHRvIGNhbGN1bGF0ZSB0aGUgZXhhY3QgZW5kIHRpbWUgb2YgdmJsYW5rLg0K Pj4NCj4+IFNpZ25lZC1vZmYtYnk6IE1hcmlvIEtsZWluZXIgPG1hcmlvLmtsZWluZXIuZGVAZ21h aWwuY29tPg0KPj4gQ2M6IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNA YW1kLmNvbT4NCj4+IENjOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4N Cj4+IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+DQo+IA0KPiBV aCwgdGhpcyBsb29rcyBsaWtlIGEgcHJldHR5IGJhZCBoYWNrLiBDYW4ndCB3ZSBmaXggYW1kZ3B1 IHRvIG9ubHkgZ2l2ZSB1cw0KPiB0aGUgcmlnaHQgdGltZXN0YW1wZSwgb25jZT8gV2l0aCB0aGlz IEkgZ3Vlc3MgaWYgeW91IGRvIGEgdmJsYW5rIHF1ZXJ5IGluDQo+IGJldHdlZW4gdGhlIHdyb25n IGFuZCB0aGUgcmlnaHQgdmJsYW5rIHlvdSdsbCBnZXQgdGhlIGJvZ3VzIHZhbHVlLiBOb3QNCj4g cmVhbGx5IGdyZWF0IGZvciB1c2Vyc3BhY2UuDQo+IC1EYW5pZWwNCg0KSSB0aGluayB3ZSBjYWxj dWxhdGUgdGhlIHRpbWVzdGFtcCBhbmQgc2VuZCB0aGUgdmJsYW5rIGV2ZW50IGJvdGggd2l0aGlu IA0KdGhlIHBhZ2VmbGlwIElSUSBoYW5kbGVyIHNvIGNhbGN1bGF0aW5nIHRoZSByaWdodCBwYWdl ZmxpcCB0aW1lc3RhbXAgDQpvbmNlIGNvdWxkIHByb2JhYmx5IGJlIGRvbmUuIEknbSBub3Qgc3Vy ZSBpZiBpdCdzIGVhc2llciB0aGFuIHByb3Bvc2luZyANCmEgbGF0ZXIgZmxpcCB0aW1lIHdpdGgg YW4gQVBJIGxpa2UgdGhpcyB0aG91Z2guDQoNClRoZSBhY3R1YWwgc2Nhbm91dCB0aW1lIHNob3Vs ZCBiZSBrbm93biBmcm9tIHRoZSBwYWdlLWZsaXAgaGFuZGxlciBzbyANCnRoZSBzZW1hbnRpY3Mg Zm9yIFZSUiBvbi9vZmYgcmVtYWluIHRoZSBzYW1lLiBUaGlzIGlzIGJlY2F1c2UgdGhlIA0KcGFn ZS1mbGlwIHRyaWdnZXJzIGVudGVyaW5nIHRoZSBiYWNrIHBvcmNoIGlmIHdlJ3JlIGluIHRoZSBl eHRlbmRlZCANCmZyb250IHBvcmNoLg0KDQpCdXQgc2Nhbm91dCB0aW1lIGZyb20gdmJsYW5rIGV2 ZW50cyBmb3Igc29tZXRoaW5nIGxpa2UgDQpEUk1fSU9DVExfV0FJVF9WQkxBTksgYXJlIGdvaW5n IHRvIGJlIHdyb25nIGluIG1vc3QgY2FzZXMgYW5kIGFyZSBvbmx5IA0KdHJlYXRlZCBhcyBlc3Rp bWF0ZXMuIElmIHdlJ3JlIGluIHRoZSByZWd1bGFyIGZyb250IHBvcmNoIHRoZW4gdGhlIA0KdGlt aW5nIHRvIHNjYW5vdXQgaXMgYmFzZWQgb24gdGhlIGZpeGVkIGR1cmF0aW9uIGZyb250IHBvcmNo IGZvciB0aGUgDQpjdXJyZW50IG1vZGUuIElmIHdlJ3JlIGluIHRoZSBleHRlbmRlZCBiYWNrIHBv cmNoIHRoZW4gaXQncyB0ZWNobmljYWxseSANCmRyaXZlciBkZWZpbmVkIGJ1dCB0aGUgbW9zdCBy ZWFzb25hYmxlIGd1ZXNzIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBmcm9udCANCnBvcmNoIGlzIGdv aW5nIHRvIGVuZCBhdCBhbnkgbW9tZW50LCBzbyBqdXN0IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo ZSANCmJhY2sgcG9yY2ggZm9yIGdldHRpbmcgdGhlIHNjYW5vdXQgdGltZS4NCg0KUHJvcG9zaW5n IHRoZSBsYXRlIHRpbWVzdGFtcCBzaG91bGRuJ3QgYWZmZWN0IHZibGFuayBldmVudCBpbiB0aGUg DQpEUk1fSU9DVExfV0FJVF9WQkxBTksgY2FzZSBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0 aGUgcGFnZS1mbGlwIA0KZXZlbnQgY2FzZS4gSSdtIG5vdCBzdXJlIGlmIHRoYXQncyB3aGF0J3Mg Z3VhcmFudGVlZCB0byBoYXBwZW4gd2l0aCB0aGlzIA0KcGF0Y2ggdGhvdWdoLiBUaGVyZSBkb2Vz bid0IHNlZW0gdG8gYmUgYW55IGxvY2tpbmcgb24gZWl0aGVyIA0KZGV2LT52YmxhbmtfdGltZV9s b2NrIG9yIHRoZSB2YmxhbmstPnNlcWxvY2sgc28gd2hpbGUgaXQncyBsaWtlbHkgdG8gZ2V0IA0K dGhlIHNhbWUgdmJsYW5rIGV2ZW50IGJhY2sgYXMgdGhlIG9uZSBqdXN0IHN0b3JlZCBJIGRvbid0 IHRoaW5rIGl0J3MgDQpndWFyYW50ZWVkLg0KDQpOaWNob2xhcyBLYXpsYXVza2FzDQoNCj4gDQo+ PiAtLS0NCj4+ICAgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyB8IDQ5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQ0KPj4gICBpbmNsdWRlL2RybS9kcm1fdmJsYW5rLmgg ICAgIHwgIDggKysrKysrDQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Zi bGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYw0KPj4gaW5kZXggOThlMDkxMTc1 OTIxLi40YjNhNGMzOGZhYmUgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Zi bGFuay5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jDQo+PiBAQCAtODE0 LDEwICs4MTQsMjEgQEAgc3RhdGljIHZvaWQgc2VuZF92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwNCj4+ICAgCQl1NjQgc2VxLCBrdGltZV90IG5vdykNCj4+ICAgew0KPj4gICAJ c3RydWN0IHRpbWVzcGVjNjQgdHY7DQo+PiArCWt0aW1lX3QgYWx0X2ZsaXBfdGltZTsNCj4+ICAg DQo+PiAgIAlzd2l0Y2ggKGUtPmV2ZW50LmJhc2UudHlwZSkgew0KPj4gLQljYXNlIERSTV9FVkVO VF9WQkxBTks6DQo+PiAgIAljYXNlIERSTV9FVkVOVF9GTElQX0NPTVBMRVRFOg0KPj4gKwkJLyoN Cj4+ICsJCSAqIEZvciBmbGlwIGNvbXBsZXRpb24gZXZlbnRzLCBvdmVycmlkZSAibm93IiB0aW1l DQo+PiArCQkgKiB3aXRoIGFsdF9mbGlwX3RpbWUgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciB2aWEN Cj4+ICsJCSAqIGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKCkgaW4gVlJSIG1v ZGUNCj4+ICsJCSAqIGlmIHRoYXQgdGltZSBpcyBsYXRlciB0aGFuIGdpdmVuICJub3ciIHZibGFu ayB0aW1lLg0KPj4gKwkJICovDQo+PiArCQlhbHRfZmxpcF90aW1lID0gZGV2LT52YmxhbmtbZS0+ cGlwZV0uYWx0X2ZsaXBfdGltZTsNCj4+ICsJCWlmIChhbHRfZmxpcF90aW1lID4gbm93KQ0KPj4g KwkJCW5vdyA9IGFsdF9mbGlwX3RpbWU7DQo+PiArCQkvKiBGYWxsdGhyb3VnaCAqLw0KPj4gKwlj YXNlIERSTV9FVkVOVF9WQkxBTks6DQo+PiAgIAkJdHYgPSBrdGltZV90b190aW1lc3BlYzY0KG5v dyk7DQo+PiAgIAkJZS0+ZXZlbnQudmJsLnNlcXVlbmNlID0gc2VxOw0KPj4gICAJCS8qDQo+PiBA QCAtOTE2LDExICs5MjcsNDcgQEAgdm9pZCBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsDQo+PiAgIA0KPj4gICAJCW5vdyA9IGt0aW1lX2dldCgpOw0KPj4g ICAJfQ0KPj4gKw0KPj4gICAJZS0+cGlwZSA9IHBpcGU7DQo+PiAgIAlzZW5kX3ZibGFua19ldmVu dChkZXYsIGUsIHNlcSwgbm93KTsNCj4+ICAgfQ0KPj4gICBFWFBPUlRfU1lNQk9MKGRybV9jcnRj X3NlbmRfdmJsYW5rX2V2ZW50KTsNCj4+ICAgDQo+PiArLyoqDQo+PiArICogZHJtX2NydGNfc2V0 X3Zycl9wYWdlZmxpcF90aW1lc3RhbXAgLSBoZWxwZXIgdG8gc2V0IGFsdGVybmF0ZSBwYWdlZmxp cCB0aW1lDQo+PiArICogQGNydGM6IHRoZSBzb3VyY2UgQ1JUQyBvZiB0aGUgcGFnZWZsaXAgY29t cGxldGlvbiBldmVudA0KPj4gKyAqIEBmbGlwX3RpbWU6IFRoZSBhbHRlcm5hdGUgcGFnZWZsaXAg Y29tcGxldGlvbiB0aW1lc3RhbXAgaW4gVlJSIG1vZGUNCj4+ICsgKg0KPj4gKyAqIEluIHZhcmlh YmxlIHJlZnJlc2ggcmF0ZSBtb2RlIChWUlIpLCBhIHBhZ2VmbGlwIGNvbXBsZXRpb24gdGltZXN0 YW1wIGNhcnJpZWQNCj4+ICsgKiBieSB0aGUgcGFnZWZsaXAgZXZlbnQgY2FuIG5ldmVyIGJlIGVh cmxpZXIgdGhhbiB0aGUgdmJsYW5rIHRpbWVzdGFtcCBvZiB0aGUNCj4+ICsgKiB2Ymxhbmsgb2Yg ZmxpcCBjb21wbGV0aW9uLCBhcyB0aGF0IHZibGFuayB0aW1lc3RhbXAgZGVmaW5lcyB0aGUgZW5k IG9mIHRoZQ0KPj4gKyAqIHNob3J0ZXN0IHBvc3NpYmxlIHZibGFuayBkdXJhdGlvbi4gSW4gY2Fz ZSBvZiBhIGRlbGF5ZWQgZmxpcCBjb21wbGV0aW9uDQo+PiArICogaW5zaWRlIHRoZSBleHRlbmRl ZCBWUlIgZnJvbnQgcG9yY2ggaG93ZXZlciwgdGhlIGVuZCBvZiB2YmxhbmsgY2FuIGJlIG11Y2gN Cj4+ICsgKiBsYXRlciwgc28gdGhlIGRyaXZlciBtdXN0IGFzc2lnbiBhbiBlc3RpbWF0ZWQgdGlt ZXN0YW1wIG9mIHRoYXQgbGF0ZXIgZW5kIG9mDQo+PiArICogdmJsYW5rLiBGb3IgYSBDUlRDIGlu IFZSUiBtb2RlLCB0aGUgZHJpdmVyIHNob3VsZCB1c2UgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8N Cj4+ICsgKiBzZXQgYW4gYWx0ZXJuYXRlIGZsaXAgY29tcGxldGlvbiB0aW1lc3RhbXAgaW4gY2Fz ZSBvZiBsYXRlIGZsaXAgY29tcGxldGlvbnMNCj4+ICsgKiBpbiBleHRlbmRlZCB2YmxhbmsuIElu IHRoZSBtb3N0IHNpbXBsZSBjYXNlLCB0aGlzIEBmbGlwX3RpbWUgdGltZXN0YW1wIGNvdWxkDQo+ PiArICogc2ltcGx5IGJlIGEga3RpbWVfZ2V0KCkgdGltZXN0YW1wIHRha2VuIGF0IHRoZSBzdGFy dCBvZiB0aGUgcGFnZWZsaXANCj4+ICsgKiBjb21wbGV0aW9uIHJvdXRpbmUsIHdpdGggc29tZSBj b25zdGFudCBkdXJhdGlvbiBvZiB0aGUgYmFjayBwb3JjaCBpbnRlcnZhbA0KPj4gKyAqIGFkZGVk LCBhbHRob3VnaCBtb3JlIHByZWNpc2UgZXN0aW1hdGVzIG1heSBiZSBwb3NzaWJsZSBvbiBzb21l IGhhcmR3YXJlIGlmDQo+PiArICogdGhlIGhhcmR3YXJlIHByb3ZpZGVzIHNvbWUgbWVhbnMgb2Yg dGltZXN0YW1waW5nIHRoZSB0cnVlIGVuZCBvZiB2YmxhbmsuDQo+PiArICoNCj4+ICsgKiBXaGVu IHNlbmRpbmcgb3V0IHBhZ2VmbGlwIGV2ZW50cywgZS5nLiwgdmlhIGRybV9jcnRjX3NlbmRfdmJs YW5rX2V2ZW50KCksIGl0DQo+PiArICogd2lsbCB1c2UgZWl0aGVyIHRoZSBzdGFuZGFyZCB2Ymxh bmsgdGltZXN0YW1wLCBjYWxjdWxhdGVkIGZvciBhIG1pbmltdW0NCj4+ICsgKiBkdXJhdGlvbiB2 YmxhbmssIG9yIHRoZSBwcm92aWRlZCBAZmxpcF90aW1lIGlmIHRoYXQgdGltZSBpcyBsYXRlciB0 aGFuIHRoZQ0KPj4gKyAqIHZibGFuayB0aW1lc3RhbXAsIHRvIGdldCB0aGUgYmVzdCBwb3NzaWJs ZSBlc3RpbWF0ZSBvZiBzdGFydCBvZiBkaXNwbGF5IG9mDQo+PiArICogdGhlIG5ldyBwb3N0LXBh Z2VmbGlwIHNjYW5vdXQgYnVmZmVyLg0KPj4gKyAqLw0KPj4gK3ZvaWQgZHJtX2NydGNfc2V0X3Zy cl9wYWdlZmxpcF90aW1lc3RhbXAoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gKwkJCQkJIGt0 aW1lX3QgZmxpcF90aW1lKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmRldjsNCj4+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW2RybV9jcnRjX2luZGV4KGNydGMpXTsNCj4+ICsNCj4+ICsJdmJsYW5rLT5hbHRfZmxpcF90 aW1lID0gZmxpcF90aW1lOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3NldF92 cnJfcGFnZWZsaXBfdGltZXN0YW1wKTsNCj4+ICsNCj4+ICAgc3RhdGljIGludCBfX2VuYWJsZV92 Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpDQo+PiAgIHsN Cj4+ICAgCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKSB7 DQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oIGIvaW5jbHVkZS9kcm0v ZHJtX3ZibGFuay5oDQo+PiBpbmRleCA2YWQ5NjMwZDRmNDguLmFhY2Y0NDY5NGFiNiAxMDA2NDQN Cj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV92YmxhbmsuaA0KPj4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX3ZibGFuay5oDQo+PiBAQCAtMTE3LDYgKzExNywxMiBAQCBzdHJ1Y3QgZHJtX3ZibGFua19j cnRjIHsNCj4+ICAgCSAqIEB0aW1lOiBWYmxhbmsgdGltZXN0YW1wIGNvcnJlc3BvbmRpbmcgdG8g QGNvdW50Lg0KPj4gICAJICovDQo+PiAgIAlrdGltZV90IHRpbWU7DQo+PiArCS8qKg0KPj4gKwkg KiBAYWx0X2ZsaXBfdGltZTogVmJsYW5rIHRpbWVzdGFtcCBmb3IgZW5kIG9mIGV4dGVuZGVkIHZi bGFuayBkdWUgdG8NCj4+ICsJICogYSBsYXRlIHBhZ2VmbGlwIGNvbXBsZXRpb24gaW4gdmFyaWFi bGUgcmVmcmVzaCByYXRlIG1vZGUuIFBhZ2VmbGlwDQo+PiArCSAqIGV2ZW50cyB3aWxsIGNhcnJ5 IHRoZSBsYXRlciBvbmUgb2YgQHRpbWUgYW5kIEBhbHRfZmxpcF90aW1lLg0KPj4gKwkgKi8NCj4+ ICsJa3RpbWVfdCBhbHRfZmxpcF90aW1lOw0KPj4gICANCj4+ICAgCS8qKg0KPj4gICAJICogQHJl ZmNvdW50OiBOdW1iZXIgb2YgdXNlcnMvd2FpdGVycyBvZiB0aGUgdmJsYW5rIGludGVycnVwdC4g T25seSB3aGVuDQo+PiBAQCAtMTc5LDYgKzE4NSw4IEBAIGludCBkcm1fdmJsYW5rX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG51bV9jcnRjcyk7DQo+PiAgIHU2NCBk cm1fY3J0Y192YmxhbmtfY291bnQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsNCj4+ICAgdTY0IGRy bV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQo+PiAg IAkJCQkgICBrdGltZV90ICp2Ymxhbmt0aW1lKTsNCj4+ICt2b2lkIGRybV9jcnRjX3NldF92cnJf cGFnZWZsaXBfdGltZXN0YW1wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4+ICsJCQkJCSBrdGlt ZV90IGZsaXBfdGltZSk7DQo+PiAgIHZvaWQgZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoc3Ry dWN0IGRybV9jcnRjICpjcnRjLA0KPj4gICAJCQkgICAgICAgc3RydWN0IGRybV9wZW5kaW5nX3Zi bGFua19ldmVudCAqZSk7DQo+PiAgIHZvaWQgZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsDQo+PiAtLSANCj4+IDIuMTcuMQ0KPj4NCj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+PiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0DQo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+PiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA0KPiANCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==