From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Hurley Subject: Re: [PATCH] drm/vblank: Fixup and document timestamp update/read barriers Date: Thu, 16 Apr 2015 05:00:02 -0400 Message-ID: <552F7A12.7020504@hurleysoftware.com> References: <1429093934-7535-1-git-send-email-daniel.vetter@ffwll.ch> <1429119283-11215-1-git-send-email-daniel.vetter@ffwll.ch> <552ED78D.7060004@gmail.com> <552F108A.6060406@hurleysoftware.com> <552F5929.4040101@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <552F5929.4040101@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mario Kleiner Cc: Daniel Vetter , =?UTF-8?B?TWljaGVsIETDpG56ZXI=?= , DRI Development , Daniel Vetter , Intel Graphics Development List-Id: dri-devel@lists.freedesktop.org T24gMDQvMTYvMjAxNSAwMjozOSBBTSwgTWFyaW8gS2xlaW5lciB3cm90ZToKPiBPbiAwNC8xNi8y MDE1IDAzOjI5IEFNLCBQZXRlciBIdXJsZXkgd3JvdGU6Cj4+IE9uIDA0LzE1LzIwMTUgMDU6MjYg UE0sIE1hcmlvIEtsZWluZXIgd3JvdGU6Cj4+PiBBIGNvdXBsZSBvZiBxdWVzdGlvbnMgdG8gZWR1 Y2F0ZSBtZSBhbmQgb25lIHJldmlldyBjb21tZW50Lgo+Pj4KPj4+IE9uIDA0LzE1LzIwMTUgMDc6 MzQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4gVGhpcyB3YXMgYSBiaXQgdG9vIG11Y2gg Y2FyZ28tY3VsdGVkLCBzbyBsZXRzIG1ha2UgaXQgc29saWQ6Cj4+Pj4gLSB2YmxhbmstPmNvdW50 IGRvZXNuJ3QgbmVlZCB0byBiZSBhbiBhdG9taWMsIHdyaXRlcyBhcmUgYWx3YXlzIGRvbmUKPj4+ PiAgICAgdW5kZXIgdGhlIHByb3RlY3Rpb24gb2YgZGV2LT52YmxhbmtfdGltZV9sb2NrLiBTd2l0 Y2ggdG8gYW4gdW5zaWduZWQKPj4+PiAgICAgbG9uZyBpbnN0ZWFkIGFuZCB1cGRhdGUgY29tbWVu dHMuIE5vdGUgdGhhdCBhdG9taWNfcmVhZCBpcyBqdXN0IGEKPj4+PiAgICAgbm9ybWFsIHJlYWQg b2YgYSB2b2xhdGlsZSB2YXJpYWJsZSwgc28gbm8gbmVlZCB0byBhdWRpdCBhbGwgdGhlCj4+Pj4g ICAgIHJlYWQtc2lkZSBhY2Nlc3Mgc3BlY2lmaWNhbGx5Lgo+Pj4+Cj4+Pj4gLSBUaGUgYmFycmll cnMgZm9yIHRoZSB2YmxhbmsgY291bnRlciBzZXFsb2NrIHdlcmVuJ3QgY29tcGxldGU6IFRoZQo+ Pj4+ICAgICByZWFkLXNpZGUgd2FzIG1pc3NpbmcgdGhlIGZpcnN0IGJhcnJpZXIgYmV0d2VlbiB0 aGUgY291bnRlciByZWFkIGFuZAo+Pj4+ICAgICB0aGUgdGltZXN0YW1wIHJlYWQsIGl0IG9ubHkg aGFkIGEgYmFycmllciBiZXR3ZWVuIHRoZSB0cyBhbmQgdGhlCj4+Pj4gICAgIGNvdW50ZXIgcmVh ZC4gV2UgbmVlZCBib3RoLgo+Pj4+Cj4+Pj4gLSBCYXJyaWVycyB3ZXJlbid0IHByb3Blcmx5IGRv Y3VtZW50ZWQuIFNpbmNlIGJhcnJpZXJzIG9ubHkgd29yayBpZgo+Pj4+ICAgICB5b3UgaGF2ZSB0 aGVtIG9uIGJvdGhzIHNpZGVzIG9mIHRoZSB0cmFuc2FjdGlvbiBpdCdzIHBydWRlbnQgdG8KPj4+ PiAgICAgcmVmZXJlbmNlIHdoZXJlIHRoZSBvdGhlciBzaWRlIGlzLiBUbyBhdm9pZCBkdXBsaWNh dGluZyB0aGUKPj4+PiAgICAgd3JpdGUtc2lkZSBjb21tZW50IDMgdGltZXMgZXh0cmFjdCBhIGxp dHRsZSBzdG9yZV92YmxhbmsoKSBoZWxwZXIuCj4+Pj4gICAgIEluIHRoYXQgaGVscGVyIGFsc28g YXNzZXJ0IHRoYXQgd2UgZG8gaW5kZWVkIGhvbGQKPj4+PiAgICAgZGV2LT52YmxhbmtfdGltZV9s b2NrLCBzaW5jZSBpbiBzb21lIGNhc2VzIHRoZSBsb2NrIGlzIGFjcXVpcmVkIGEKPj4+PiAgICAg ZmV3IGZ1bmN0aW9ucyB1cCBpbiB0aGUgY2FsbGNoYWluLgo+Pj4+Cj4+Pj4gU3BvdHRlZCB3aGls ZSByZXZpZXdpbmcgYSBwYXRjaCBmcm9tIENocmlzIFdpbHNvbiB0byBhZGQgYSBmYXN0cGF0aCB0 bwo+Pj4+IHRoZSB2Ymxhbmtfd2FpdCBpb2N0bC4KPj4+Pgo+Pj4+IHYyOiBBZGQgY29tbWVudCB0 byBiZXR0ZXIgZXhwbGFpbiBob3cgc3RvcmVfdmJsYW5rIHdvcmtzLCBzdWdnZXN0ZWQgYnkKPj4+ PiBDaHJpcy4KPj4+Pgo+Pj4+IHYzOiBQZXRlciBub3RpY2VkIHRoYXQgYXMtaXMgdGhlIDJuZCBz bXBfd21iIGlzIHJlZHVuZGFudCB3aXRoIHRoZQo+Pj4+IGltcGxpY2l0IGJhcnJpZXIgaW4gdGhl IHNwaW5fdW5sb2NrLiBCdXQgdGhhdCBjYW4gb25seSBiZSBwcm92ZW4gYnkKPj4+PiBhdWRpdGlu ZyBhbGwgY2FsbGVycyBhbmQgbXkgcG9pbnQgaW4gZXh0cmFjdGluZyB0aGlzIGxpdHRsZSBoZWxw ZXIgd2FzCj4+Pj4gdG8gbG9jYWxpemUgYWxsIHRoZSBsb2NraW5nIGludG8ganVzdCBvbmUgcGxh Y2UuIEhlbmNlIEkgdGhpbmsgdGhhdAo+Pj4+IGFkZGl0aW9uYWwgb3B0aW1pemF0aW9uIGlzIHRv byByaXNreS4KPj4+Pgo+Pj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPj4+PiBDYzogTWFyaW8gS2xlaW5lciA8bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5jb20+ Cj4+Pj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4+Pj4gQ2M6IE1pY2hlbCBEw6RuemVyIDxtaWNoZWxAZGFlbnplci5uZXQ+Cj4+Pj4gQ2M6IFBl dGVyIEh1cmxleSA8cGV0ZXJAaHVybGV5c29mdHdhcmUuY29tPgo+Pj4+IFNpZ25lZC1vZmYtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+Pj4+IC0tLQo+Pj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ICAgIGluY2x1ZGUvZHJtL2RybVAuaCAgICAgICAg fCAgOCArKystCj4+Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCA0NiBk ZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+Pj4+IGluZGV4IGM4YTM0NDc2NTcwYS4u ODY5NGI3N2QwMDAyIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMK Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4+Pj4gQEAgLTc0LDYgKzc0LDM2 IEBAIG1vZHVsZV9wYXJhbV9uYW1lZCh2YmxhbmtvZmZkZWxheSwgZHJtX3ZibGFua19vZmZkZWxh eSwgaW50LCAwNjAwKTsKPj4+PiAgICBtb2R1bGVfcGFyYW1fbmFtZWQodGltZXN0YW1wX3ByZWNp c2lvbl91c2VjLCBkcm1fdGltZXN0YW1wX3ByZWNpc2lvbiwgaW50LCAwNjAwKTsKPj4+PiAgICBt b2R1bGVfcGFyYW1fbmFtZWQodGltZXN0YW1wX21vbm90b25pYywgZHJtX3RpbWVzdGFtcF9tb25v dG9uaWMsIGludCwgMDYwMCk7Cj4+Pj4KPj4+PiArc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAo+Pj4+ICsgICAgICAgICAgICAgdW5zaWdu ZWQgdmJsYW5rX2NvdW50X2luYywKPj4+PiArICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICp0 X3ZibGFuaykKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW2NydGNdOwo+Pj4+ICsgICAgdTMyIHRzbG90Owo+Pj4+ICsKPj4+PiAr ICAgIGFzc2VydF9zcGluX2xvY2tlZCgmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKPj4+PiArCj4+ Pj4gKyAgICBpZiAodF92YmxhbmspIHsKPj4+PiArICAgICAgICAvKiBBbGwgd3JpdGVycyBob2xk IHRoZSBzcGlubG9jaywgYnV0IHJlYWRlcnMgYXJlIHNlcmlhbGl6ZWQgYnkKPj4+PiArICAgICAg ICAgKiB0aGUgbGF0Y2hpbmcgb2YgdmJsYW5rLT5jb3VudCBiZWxvdy4KPj4+PiArICAgICAgICAg Ki8KPj4+PiArICAgICAgICB0c2xvdCA9IHZibGFuay0+Y291bnQgKyB2YmxhbmtfY291bnRfaW5j Owo+Pj4+ICsgICAgICAgIHZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHRzbG90KSA9ICp0X3Zi bGFuazsKPj4+PiArICAgIH0KPj4+PiArCj4+Pj4gKyAgICAvKgo+Pj4+ICsgICAgICogdmJsYW5r IHRpbWVzdGFtcCB1cGRhdGVzIGFyZSBwcm90ZWN0ZWQgb24gdGhlIHdyaXRlIHNpZGUgd2l0aAo+ Pj4+ICsgICAgICogdmJsYW5rX3RpbWVfbG9jaywgYnV0IG9uIHRoZSByZWFkIHNpZGUgZG9uZSBs b2NrbGVzc2x5IHVzaW5nIGEKPj4+PiArICAgICAqIHNlcXVlbmNlLWxvY2sgb24gdGhlIHZibGFu ayBjb3VudGVyLiBFbnN1cmUgY29ycmVjdCBvcmRlcmluZyB1c2luZwo+Pj4+ICsgICAgICogbWVt b3J5IGJhcnJyaWVycy4gV2UgbmVlZCB0aGUgYmFycmllciBib3RoIGJlZm9yZSBhbmQgYWxzbyBh ZnRlciB0aGUKPj4+PiArICAgICAqIGNvdW50ZXIgdXBkYXRlIHRvIHN5bmNocm9uaXplIHdpdGgg dGhlIG5leHQgdGltZXN0YW1wIHdyaXRlLgo+Pj4+ICsgICAgICogVGhlIHJlYWQtc2lkZSBiYXJy aWVycyBmb3IgdGhpcyBhcmUgaW4gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZS4KPj4+PiArICAg ICAqLwo+Pj4+ICsgICAgc21wX3dtYigpOwo+Pj4+ICsgICAgdmJsYW5rLT5jb3VudCArPSB2Ymxh bmtfY291bnRfaW5jOwo+Pj4+ICsgICAgc21wX3dtYigpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAg IC8qKgo+Pj4+ICAgICAqIGRybV91cGRhdGVfdmJsYW5rX2NvdW50IC0gdXBkYXRlIHRoZSBtYXN0 ZXIgdmJsYW5rIGNvdW50ZXIKPj4+PiAgICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4+Pj4gQEAgLTkz LDcgKzEyMyw3IEBAIG1vZHVsZV9wYXJhbV9uYW1lZCh0aW1lc3RhbXBfbW9ub3RvbmljLCBkcm1f dGltZXN0YW1wX21vbm90b25pYywgaW50LCAwNjAwKTsKPj4+PiAgICBzdGF0aWMgdm9pZCBkcm1f dXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPj4+ PiAgICB7Cj4+Pj4gICAgICAgIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYt PnZibGFua1tjcnRjXTsKPj4+PiAtICAgIHUzMiBjdXJfdmJsYW5rLCBkaWZmLCB0c2xvdDsKPj4+ PiArICAgIHUzMiBjdXJfdmJsYW5rLCBkaWZmOwo+Pj4+ICAgICAgICBib29sIHJjOwo+Pj4+ICAg ICAgICBzdHJ1Y3QgdGltZXZhbCB0X3ZibGFuazsKPj4+Pgo+Pj4+IEBAIC0xMjksMTggKzE1OSwx MiBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgY3J0YykKPj4+PiAgICAgICAgaWYgKGRpZmYgPT0gMCkKPj4+PiAgICAgICAg ICAgIHJldHVybjsKPj4+Pgo+Pj4+IC0gICAgLyogUmVpbml0aWFsaXplIGNvcnJlc3BvbmRpbmcg dmJsYW5rIHRpbWVzdGFtcCBpZiBoaWdoLXByZWNpc2lvbiBxdWVyeQo+Pj4+IC0gICAgICogYXZh aWxhYmxlLiBTa2lwIHRoaXMgc3RlcCBpZiBxdWVyeSB1bnN1cHBvcnRlZCBvciBmYWlsZWQuIFdp bGwKPj4+PiAtICAgICAqIHJlaW5pdGlhbGl6ZSBkZWxheWVkIGF0IG5leHQgdmJsYW5rIGludGVy cnVwdCBpbiB0aGF0IGNhc2UuCj4+Pj4gKyAgICAvKgo+Pj4+ICsgICAgICogT25seSByZWluaXRp YWxpemUgY29ycmVzcG9uZGluZyB2YmxhbmsgdGltZXN0YW1wIGlmIGhpZ2gtcHJlY2lzaW9uIHF1 ZXJ5Cj4+Pj4gKyAgICAgKiBhdmFpbGFibGUgYW5kIGRpZG4ndCBmYWlsLiBXaWxsIHJlaW5pdGlh bGl6ZSBkZWxheWVkIGF0IG5leHQgdmJsYW5rCj4+Pj4gKyAgICAgKiBpbnRlcnJ1cHQgaW4gdGhh dCBjYXNlLgo+Pj4+ICAgICAgICAgKi8KPj4+PiAtICAgIGlmIChyYykgewo+Pj4+IC0gICAgICAg IHRzbG90ID0gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQpICsgZGlmZjsKPj4+PiAtICAgICAg ICB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB0c2xvdCkgPSB0X3ZibGFuazsKPj4+PiAtICAg IH0KPj4+PiAtCj4+Pj4gLSAgICBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPj4+PiAtICAgIGF0 b21pY19hZGQoZGlmZiwgJnZibGFuay0+Y291bnQpOwo+Pj4+IC0gICAgc21wX21iX19hZnRlcl9h dG9taWMoKTsKPj4+PiArICAgIHN0b3JlX3ZibGFuayhkZXYsIGNydGMsIGRpZmYsIHJjID8gJnRf dmJsYW5rIDogTlVMTCk7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4gICAgLyoKPj4+PiBAQCAtMjE4LDcg KzI0Miw3IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBjcnRjKQo+Pj4+ICAgICAgICAvKiBDb21wdXRlIHRpbWUgZGlmZmVy ZW5jZSB0byBzdG9yZWQgdGltZXN0YW1wIG9mIGxhc3QgdmJsYW5rCj4+Pj4gICAgICAgICAqIGFz IHVwZGF0ZWQgYnkgbGFzdCBpbnZvY2F0aW9uIG9mIGRybV9oYW5kbGVfdmJsYW5rKCkgaW4gdmJs YW5rIGlycS4KPj4+PiAgICAgICAgICovCj4+Pj4gLSAgICB2Ymxjb3VudCA9IGF0b21pY19yZWFk KCZ2YmxhbmstPmNvdW50KTsKPj4+PiArICAgIHZibGNvdW50ID0gdmJsYW5rLT5jb3VudDsKPj4+ PiAgICAgICAgZGlmZl9ucyA9IHRpbWV2YWxfdG9fbnMoJnR2YmxhbmspIC0KPj4+PiAgICAgICAg ICAgICAgdGltZXZhbF90b19ucygmdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgdmJsY291bnQp KTsKPj4+Pgo+Pj4+IEBAIC0yMzQsMTcgKzI1OCw4IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNh YmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+Pj4+ICAgICAg ICAgKiBhdmFpbGFibGUuIEluIHRoYXQgY2FzZSB3ZSBjYW4ndCBhY2NvdW50IGZvciB0aGlzIGFu ZCBqdXN0Cj4+Pj4gICAgICAgICAqIGhvcGUgZm9yIHRoZSBiZXN0Lgo+Pj4+ICAgICAgICAgKi8K Pj4+PiAtICAgIGlmICh2YmxyYyAmJiAoYWJzNjQoZGlmZl9ucykgPiAxMDAwMDAwKSkgewo+Pj4+ IC0gICAgICAgIC8qIFN0b3JlIG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZlci4gKi8KPj4+PiAt ICAgICAgICB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB2Ymxjb3VudCArIDEpID0gdHZibGFu azsKPj4+PiAtCj4+Pj4gLSAgICAgICAgLyogSW5jcmVtZW50IGNvb2tlZCB2YmxhbmsgY291bnQu IFRoaXMgYWxzbyBhdG9taWNhbGx5IGNvbW1pdHMKPj4+PiAtICAgICAgICAgKiB0aGUgdGltZXN0 YW1wIGNvbXB1dGVkIGFib3ZlLgo+Pj4+IC0gICAgICAgICAqLwo+Pj4+IC0gICAgICAgIHNtcF9t Yl9fYmVmb3JlX2F0b21pYygpOwo+Pj4+IC0gICAgICAgIGF0b21pY19pbmMoJnZibGFuay0+Y291 bnQpOwo+Pj4+IC0gICAgICAgIHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4+Pj4gLSAgICB9Cj4+ Pj4gKyAgICBpZiAodmJscmMgJiYgKGFiczY0KGRpZmZfbnMpID4gMTAwMDAwMCkpCj4+Pj4gKyAg ICAgICAgc3RvcmVfdmJsYW5rKGRldiwgY3J0YywgMSwgJnR2YmxhbmspOwo+Pj4+Cj4+Pj4gICAg ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsYW5rX3RpbWVfbG9jaywgaXJxZmxh Z3MpOwo+Pj4+ICAgIH0KPj4+PiBAQCAtODUyLDcgKzg2Nyw3IEBAIHUzMiBkcm1fdmJsYW5rX2Nv dW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+Pj4+Cj4+Pj4gICAgICAgIGlm IChXQVJOX09OKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpKQo+Pj4+ICAgICAgICAgICAgcmV0dXJu IDA7Cj4+Pj4gLSAgICByZXR1cm4gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQpOwo+Pj4+ICsg ICAgcmV0dXJuIHZibGFuay0+Y291bnQ7Cj4+Pgo+Pj4gSSB3cm9uZ2x5IGFzc3VtZWQgYXRvbWlj X3JlYWQgd291bGQgZ3VhcmFudGVlIG1vcmUgdGhhbiBpdCBhY3R1YWxseSBkb2VzLCBzbyBwbGVh c2UgaGVscCBtZSB0byBsZWFybiBzb21ldGhpbmcuIFdoeSBkb24ndCB3ZSBuZWVkIHNvbWUgc21w X3JtYigpIGhlcmUgYmVmb3JlIHJldHVybmluZyB2YmxhbmstPmNvdW50PyBXaGF0IGd1YXJhbnRl ZXMgdGhhdCBkcm1fdmJsYW5rX2NvdW50KCkgZG9lcyByZXR1cm4gdGhlIGxhdGVzdCB2YWx1ZSBh c3NpZ25lZCB0byB2YmxhbmstPmNvdW50IGluIHN0b3JlX3ZibGFuaygpPyBJbiBzdG9yZV92Ymxh bmsoKSB0aGVyZSBpcyBhIHNtcF93bWIoKSwgYnV0IHdoeSBkb24ndCB3ZSBuZWVkIGEgbWF0Y2hp bmcgc21wX3JtYigpIGhlcmUgdG8gYmVuZWZpdCBmcm9tIGl0Pwo+Pgo+PiBXZWxsLCB5b3UgY291 bGQgYnV0IHRoZSB2YmxhbmsgY291bnRlciByZXNvbHV0aW9uIGlzIHZlcnkgbG93ICg2MEhaKSwK Pj4gc28gcHJhY3RpY2FsbHkgc3BlYWtpbmcsIHdoYXQgd291bGQgYmUgdGhlIHBvaW50Pwo+Pgo+ IAo+IFRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9ucyBQZXRlci4KPiAKPiBEZXBlbmRzIG9uIHRo ZSBsYXRlbmN5IGluZHVjZWQuIEEgZmV3IG1pY3Jvc2Vjb25kcyBkb24ndCBtYXR0ZXIsIGEgbWls bGlzZWNvbmQgb3IgbW9yZSB3b3VsZCBtYXR0ZXIgZm9yIHNvbWUgYXBwbGljYXRpb25zLgo+IAo+ PiBUaGUgdHJhaWxpbmcgd3JpdGUgYmFycmllciBpbiBzdG9yZV92YmxhbmsoKSBpcyBvbmx5IG5l Y2Vzc2FyeSB0bwo+PiBmb3JjZSB0aGUgb3JkZXJpbmcgb2YgdGhlIHRpbWVzdGFtcCB3cnQgdG8g dmJsYW5rIGNvdW50ICppbiBjYXNlIHRoZXJlCj4+IHdhcyBubyB3cml0ZSBiYXJyaWVyIGV4ZWN1 dGVkIGJldHdlZW4gdG8gY2FsbHMgdG8gc3RvcmVfdmJsYW5rKCkqLAo+PiBub3QgdG8gZW5zdXJl IHRoZSBjcHUgZm9yY2VzIHRoZSB3cml0ZSB0byBtYWluIG1lbW9yeSBpbW1lZGlhdGVseS4KPj4K PiAKPiBUaGF0IHBhcnQgaSB1bmRlcnN0YW5kLCB0aGUgcG9zc2libHkgc2xpZ2h0bHkgZWFybGll ciB3cml0ZSBvZiBzb21lIHN0b3JlIGJ1ZmZlcnMgdG8gbWFpbiBtZW1vcnkgaXMganVzdCBhIHBv c3NpYmxlIG5pY2Ugc2lkZSBlZmZlY3QuIEJpdHMgYW5kIHBpZWNlcyBvZiBteSBtZW1vcnkgYWJv dXQgaG93IGNhY2hlIGNvaGVyZW5jeSBldGMuIHdvcmsgc2xvd2x5IGNvbWUgYmFjayB0byBteSBv d24gbWVtb3J5Li4uCj4gCj4+IEJlY2F1c2UgdGhlIHRpbWUgc2NhbGVzIGZvciB0aGVzZSBldmVu dHMgZG9uJ3QgcmVxdWlyZSB0aGF0IGxldmVsIG9mCj4+IHJlc29sdXRpb247IGNvbnNpZGVyIGhv dyBtdWNoIGNvZGUgaGFzIHRvIGdldCBleGVjdXRlZCBiZXR3ZWVuIGEKPj4gaGFyZHdhcmUgdmJs YW5rIGlycSB0cmlnZ2VyaW5nIGFuZCB0aGUgdmJsYW5rIGNvdW50ZXIgYmVpbmcgdXBkYXRlZC4K Pj4KPj4gUmVhbGlzdGljYWxseSwgdGhlIG9ubHkgcmVsZXZhbnQgcmVxdWlyZW1lbnQgaXMgdGhh dCB0aGUgdGltZXN0YW1wCj4+IG1hdGNoIHRoZSBjb3VudGVyLgo+Pgo+IAo+IFllcyB0aGF0IGlz IHRoZSByZWFsbHkgaW1wb3J0YW50IHBhcnQuIEEgbXNlYyBkZWxheSB3b3VsZCBwb3NzaWJseSBt YXR0ZXIgZm9yIHNvbWUgdGltaW5nIHNlbnNpdGl2ZSBhcHBzIGxpa2UgbWluZSAtIHNvbWUgbW9y ZSBleG90aWMgZGlzcGxheXMgcnVuIGF0IDIwMCBIeiwgYW5kIHNvbWUgYXBwcyBuZWVkIHRvIHN5 bmNocm9uaXplIHRvIHRoZSB2Ymxhbmsgbm90IHN0cmljdGx5IGZvciBncmFwaGljcy4gQnV0IGkg YXNzdW1lIHBvdGVudGlhbCBkZWxheXMgaGVyZSBhcmUgbW9yZSBvbiB0aGUgb3JkZXIgb2YgYSBm ZXcgbWljcm9zZWNvbmRzIGlmIHNvbWUgcGVuZGluZyBsb2FkcyBmcm9tIHRoZSBjYWNoZSB3b3Vs ZCBnZXQgcmVvcmRlcmVkIGZvciBvdmVyYWxsIGVmZmljaWVuY3k/Cj4gCj4+Pgo+Pj4+ICAgIH0K Pj4+PiAgICBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfY291bnQpOwo+Pj4+Cj4+Pj4gQEAgLTg5 NywxNiArOTEyLDE3IEBAIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBjcnRjLAo+Pj4+ICAgICAgICBpZiAoV0FSTl9PTihjcnRjID49IGRl di0+bnVtX2NydGNzKSkKPj4+PiAgICAgICAgICAgIHJldHVybiAwOwo+Pj4+Cj4+Pj4gLSAgICAv KiBSZWFkIHRpbWVzdGFtcCBmcm9tIHNsb3Qgb2YgX3ZibGFua190aW1lIHJpbmdidWZmZXIKPj4+ PiAtICAgICAqIHRoYXQgY29ycmVzcG9uZHMgdG8gY3VycmVudCB2YmxhbmsgY291bnQuIFJldHJ5 IGlmCj4+Pj4gLSAgICAgKiBjb3VudCBoYXMgaW5jcmVtZW50ZWQgZHVyaW5nIHJlYWRvdXQuIFRo aXMgd29ya3MgbGlrZQo+Pj4+IC0gICAgICogYSBzZXFsb2NrLgo+Pj4+ICsgICAgLyoKPj4+PiAr ICAgICAqIFZibGFuayB0aW1lc3RhbXBzIGFyZSByZWFkIGxvY2tsZXNzLiBUbyBlbnN1cmUgY29u c2lzdGVuY3kgdGhlIHZibGFuawo+Pj4+ICsgICAgICogY291bnRlciBpcyByZWNoZWNrZWQgYW5k IG9yZGVyaW5nIGlzIGVuc3VyZWQgdXNpbmcgbWVtb3J5IGJhcnJpZXJzLgo+Pj4+ICsgICAgICog VGhpcyB3b3JrcyBsaWtlIGEgc2VxbG9jay4gVGhlIHdyaXRlLXNpZGUgYmFycmllcnMgYXJlIGlu IHN0b3JlX3ZibGFuay4KPj4+PiAgICAgICAgICovCj4+Pj4gICAgICAgIGRvIHsKPj4+PiAtICAg ICAgICBjdXJfdmJsYW5rID0gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQpOwo+Pj4+ICsgICAg ICAgIGN1cl92YmxhbmsgPSB2YmxhbmstPmNvdW50Owo+Pj4+ICsgICAgICAgIHNtcF9ybWIoKTsK Pj4+PiAgICAgICAgICAgICp2Ymxhbmt0aW1lID0gdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0Yywg Y3VyX3ZibGFuayk7Cj4+Pj4gICAgICAgICAgICBzbXBfcm1iKCk7Cj4+Pj4gLSAgICB9IHdoaWxl IChjdXJfdmJsYW5rICE9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KSk7Cj4+Pj4gKyAgICB9 IHdoaWxlIChjdXJfdmJsYW5rICE9IHZibGFuay0+Y291bnQpOwo+Pj4+Cj4+Pgo+Pj4gU2ltaWxh ciBxdWVzdGlvbiBhcyBhYm92ZS4gV2UgaGF2ZSBhIG5ldyBzbXBfcm1iKCkgYWZ0ZXIgdGhlIGN1 cl92YmxhbmsgYXNzaWdubWVudCBhbmQgdGhlbiBhZnRlciAqdmJsYW5rdGltZSBhc3NpZ25tZW50 LiBNeSBvcmlnaW5hbCB3cm9uZyBhc3N1bXB0aW9uIHdhcyB0aGF0IHRoZSBmaXJzdCBzbXBfcm1i KCkgd291bGRuJ3QgYmUgbmVlZGVkIGJlY2F1c2UgYXRvbWljX3JlYWQoKSB3b3VsZCBpbXBseSB0 aGF0LCBhbmQgdGhhdCB0aGUgY29tcGlsZXIvY3B1IGNvdWxkbid0IHJlb3JkZXIgYW55dGhpbmcg aGVyZSBiZWNhdXNlIHRoZSAqdmJsYW5rdGltZSBhc3NpZ25tZW50IGRlcGVuZHMgb24gY3VyX3Zi bGFuayBmcm9tIHRoZSBwcmVjZWVkaW5nIGF0b21pY19yZWFkLgo+Pj4KPj4+IEJ1dCB3aHkgY2Fu IHdlIG5vdyBkbyB0aGUgY29tcGFyaXNvbiB3aGlsZShjdXJfdmJsYW5rICE9IHZibGFuay0+Y291 bnQpIHdpdGhvdXQgbmVlZGluZyBzb21ldGhpbmcgbGlrZQo+Pj4KPj4+ICAgICAgbmV3X3ZibGFu ayA9IHZibGFuay0+Y291bnQ7Cj4+PiAgICAgIHNtcF9ybWIoKTsKPj4+ICAgICB9IHdoaWxlIChj dXJfdmJsYW5rICE9IG5ld192YmxhbmspOwo+Pj4KPj4+IHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUg ZnJvbSB0aGUgMm5kIHZibGFuay0+Y291bnQgcmVhZCBpc24ndCBzdGFsZSB3cnQuIHRvIHBvdGVu dGlhbCB1cGRhdGVzIGZyb20gc3RvcmVfdmJsYW5rKCk/Cj4+Cj4+IFNpbWlsYXIgcmVzcG9uc2Ug aGVyZS4KPj4KPj4gV2hhdCBtYXR0ZXJzIGlzIHRoYXQgdGhlIHRpbWVzdGFtcCByZWFkIGlzIGNv bnNpc3RlbnQgd2l0aCB0aGUKPj4gdmJsYW5rIGNvdW50OyBub3QgdGhhdCB5b3UgImp1c3QgbWlz c2VkIiBuZXcgdmFsdWVzLgo+Pgo+Pj4gQW5vdGhlciBxdWVzdGlvbiBpcyB3aHkgdGhlIGRybV92 YmxhbmtfY291bnRfYW5kX3RpbWUoKSBjb2RlIGV2ZXIgd29ya2VkIHdpdGhvdXQgdHJpZ2dlcmlu ZyBhbnkgb2YgbXkgb3duIHRlc3RzIGFuZCBjb25zaXN0ZW5jeSBjaGVja3MgaW4gbXkgc29mdHdh cmUsIG9yIGFueSBvZiB5b3VyIGlndCB0ZXN0cz8gSSBydW4gbXkgdGVzdHMgdmVyeSBvZnRlbiwg YnV0IG9ubHkgb24gSW50ZWwgYXJjaGl0ZWN0dXJlIGNwdXMuIEkgYXNzdW1lIHRoZSBzYW1lIGlz IHRydWUgZm9yIHRoZSBpZ3QgdGVzdHM/IElzIHRoZXJlIGFueXRoaW5nIHNwZWNpZmljIGFib3V0 IEludGVsIGNwdSdzIHRoYXQgbWFrZXMgdGhpcyBzdGlsbCB3b3JrIG9yIHZlcnkgdW5saWtlbHkg dG8gYnJlYWs/IE9yIGFyZSB0aGUgdGVzdHMgaW5zdWZmaWNpZW50IHRvIGNhdGNoIHRoaXM/IE9y IGp1c3QgbHVjaz8KPj4KPj4gSW50ZWwgeDg2IGNwdXMgYXJlIHN0cm9uZ2x5LW9yZGVyZWQsIHNv IHNtcF9ybWIoKSBhbmQgc21wX3dtYigpIGFyZSBvbmx5Cj4+IGNvbXBpbGVyIGJhcnJpZXJzIG9u IHg4NiBhcmNoLgo+Pgo+IAo+IE9rLCB0aGF0IG1ha2VzIHNlbnNlIGFzIHBhcnQgb2YgdGhlIGV4 cGxhbmF0aW9uIHdoeSBzdHVmZiBzdGlsbCB3b3JrZWQsIGF0IGxlYXN0IG9uIHRoZSB0ZXN0ZWQg eDg2IGFyY2guCj4gCj4+IFRoZSBjb21waWxlciBjb3VsZCBoYXZlIGhvaXN0ZWQgdGhlIHZibGFu a3RpbWVzdGFtcCByZWFkIGluIGZyb250IG9mCj4+IHRoZSB2YmxhbmsgY291bnQgcmVhZCwgYnV0 IGNob3NlIG5vdCB0by4KPj4KPiAKPiBUaGlzIG9uZSBzdGlsbCBjb25mdXNlcyBtZS4gSSBrbm93 IHdoeSB0aGUgc21wX3JtYiBhZnRlciB0aGUgdmJsYW5rdGltZXN0YW1wIHJlYWQgaXMgdGhlcmUg LSBpIHBsYWNlZCBvbmUgdGhlcmUgaW4gdGhlIGN1cnJlbnQgY29kZSBteXNlbGYuIEJ1dCB3aHkg Y291bGQgdGhlIGNvbXBpbGVyIC0gaW4gYWJzZW5jZSBvZiB0aGUgbmV3IHNtcF9ybWIgY29tcGls ZXIgYmFycmllciBpbiB0aGlzIHBhdGNoICAtIHJlb3JkZXIgdGhvc2UgdHdvIGxvYWRzIHdpdGhv dXQgdmlvbGF0aW5nIHRoZSBzZW1hbnRpYyBvZiB0aGUgY29kZT8KPiAKPiBXaHkgY291bGQgaXQg aGF2ZSB0dXJuZWQgdGhpcwo+IAo+IGN1cl92YmxhbmsgPSB2YmxhbmstPmNvdW50Owo+IC8vIHNt cF9ybWIoKTsKPiB2Ymxhbmt0aW1lID0gdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgY3VyX3Zi bGFuayk7Cj4gCj4gaW50byB0aGlzIGluc3RlYWQKPiAKPiAqdmJsYW5rdGltZSA9IHZibGFua3Rp bWVzdGFtcChkZXYsIGNydGMsIGN1cl92YmxhbmspOwo+IC8vIHNtcF9ybWIoKTsKPiBjdXJfdmJs YW5rID0gdmJsYW5rLT5jb3VudDsKPiAKPiB3aGVuIHRoZSBmaXJzdCBsb2FkIHdvdWxkIG5lZWQg dGhlIHZhbHVlIG9mIGN1cl92YmxhbmsgLSBhbmQgdGhlcmVieSB0aGUgcmVzdWx0IG9mIHRoZSAy bmQgbG9hZCAtIGFzIGlucHV0IHRvIGNhbGN1bGF0ZSBpdHMgYWRkcmVzcyBmb3IgdGhlICp2Ymxh bmt0aW1lID0gLi4uIGxvYWQ/Cj4gCj4gSSB0aGluayBpJ20gc3RpbGwgbm90IGdldHRpbmcgc29t ZXRoaW5nIGFib3V0IHdoeSB0aGUgY29tcGlsZXIgd291bGQgYmUgYWxsb3dlZCB0byByZW9yZGVy IGluIHRoaXMgd2F5IGluIGFic2VuY2Ugb2YgdGhlIGFkZGl0aW9uYWwgc21wX3JtYj8gT3IgaXMg dGhhdCBiYXJyaWVyIHJlcXVpcmVkIGZvciBvdGhlciBhcmNocyB3aGljaCBhcmUgbGVzcyBzdHJv bmdseSBvcmRlcmVkPwoKQXBvbG9naWVzIGZvciB0aGUgY29uZnVzaW9uOyBJIG1pc3NlZCB0aGF0 IGl0IHdhcyBkYXRhLWRlcGVuZGVudCBsb2FkLgoKUmVnYXJkcywKUGV0ZXIgSHVybGV5CgoKPiB0 aGFua3MsCj4gLW1hcmlvCj4gCj4+PiBJIGxvb2tlZCB0aHJvdWdoIGtlcm5lbHMgYmFjayB0byAz LjE2IGFuZCBtb3N0IHVzZXMgb2YgdGhlIGZ1bmN0aW9uIHdvdWxkIGJlIHNhZmUgZnJvbSByYWNl cyBkdWUgdG8gdGhlIGxvY2tpbmcgYXJvdW5kIGl0LCBob2xkaW5nIG9mIHZibGFuayByZWZjb3Vu dHMsIG9yIHRoZSBwbGFjZSBhbmQgb3JkZXIgb2YgZXhlY3V0aW9uLCBlLmcuLCBmcm9tIHdpdGhp biBkcm1faGFuZGxlX3ZibGFuaygpLiBCdXQgaW4gc29tZSB0aWdodCB0ZXN0IGxvb3AganVzdCBj YWxsaW5nIHRoZSBkcm1XYWl0VmJsYW5rIGlvY3RsIHRvIHF1ZXJ5IGN1cnJlbnQgdmFsdWVzIGkn ZCBleHBlY3QgaXQgdG8gYXQgbGVhc3Qgb2NjYXNzaW9uYWxseSByZXR1cm4gY29ycnVwdGVkIHRp bWVzdGFtcHMsIGUuZy4sIHRpbWUganVtcGluZyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBldGMuPwo+ Pgo+PiBBcyBhIHRlc3QsIHJldmVyc2UgdGhlIGxvYWQgb3JkZXIgb2YgdmJsYW5rdGltZXN0YW1w IHdydCB2YmxhbmsgY291bnQKPj4gYW5kIHNlZSBpZiB5b3VyIHRlc3RzIHRyaXA7IGlmIG5vdCwg eW91IGtub3cgdGhlIHRlc3RzIGFyZSBpbnN1ZmZpY2llbnQuCj4+Cj4+IFJlZ2FyZHMsCj4+IFBl dGVyIEh1cmxleQo+Pgo+Pj4KPj4+PiAgICAgICAgcmV0dXJuIGN1cl92Ymxhbms7Cj4+Pj4gICAg fQo+Pj4+IEBAIC0xNzE1LDcgKzE3MzEsNyBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+Pj4+ICAgICAgICAgKi8KPj4+Pgo+Pj4+ICAg ICAgICAvKiBHZXQgY3VycmVudCB0aW1lc3RhbXAgYW5kIGNvdW50LiAqLwo+Pj4+IC0gICAgdmJs Y291bnQgPSBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4+Pj4gKyAgICB2Ymxjb3VudCA9 IHZibGFuay0+Y291bnQ7Cj4+Pj4gICAgICAgIGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2 LCBjcnRjLCAmdHZibGFuaywgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSk7Cj4+Pj4KPj4+PiAgICAg ICAgLyogQ29tcHV0ZSB0aW1lIGRpZmZlcmVuY2UgdG8gdGltZXN0YW1wIG9mIGxhc3QgdmJsYW5r ICovCj4+Pj4gQEAgLTE3MzEsMjAgKzE3NDcsMTEgQEAgYm9vbCBkcm1faGFuZGxlX3ZibGFuayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPj4+PiAgICAgICAgICogZS5nLiwgZHVl IHRvIHNwdXJpb3VzIHZibGFuayBpbnRlcnJ1cHRzLiBXZSBuZWVkIHRvCj4+Pj4gICAgICAgICAq IGlnbm9yZSB0aG9zZSBmb3IgYWNjb3VudGluZy4KPj4+PiAgICAgICAgICovCj4+Pj4gLSAgICBp ZiAoYWJzNjQoZGlmZl9ucykgPiBEUk1fUkVEVU5EQU5UX1ZCTElSUV9USFJFU0hfTlMpIHsKPj4+ PiAtICAgICAgICAvKiBTdG9yZSBuZXcgdGltZXN0YW1wIGluIHJpbmdidWZmZXIuICovCj4+Pj4g LSAgICAgICAgdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgdmJsY291bnQgKyAxKSA9IHR2Ymxh bms7Cj4+Pj4gLQo+Pj4+IC0gICAgICAgIC8qIEluY3JlbWVudCBjb29rZWQgdmJsYW5rIGNvdW50 LiBUaGlzIGFsc28gYXRvbWljYWxseSBjb21taXRzCj4+Pj4gLSAgICAgICAgICogdGhlIHRpbWVz dGFtcCBjb21wdXRlZCBhYm92ZS4KPj4+PiAtICAgICAgICAgKi8KPj4+PiAtICAgICAgICBzbXBf bWJfX2JlZm9yZV9hdG9taWMoKTsKPj4+PiAtICAgICAgICBhdG9taWNfaW5jKCZ2YmxhbmstPmNv dW50KTsKPj4+PiAtICAgICAgICBzbXBfbWJfX2FmdGVyX2F0b21pYygpOwo+Pj4+IC0gICAgfSBl bHNlIHsKPj4+PiArICAgIGlmIChhYnM2NChkaWZmX25zKSA+IERSTV9SRURVTkRBTlRfVkJMSVJR X1RIUkVTSF9OUykKPj4+PiArICAgICAgICBzdG9yZV92YmxhbmsoZGV2LCBjcnRjLCAxLCAmdHZi bGFuayk7Cj4+Pj4gKyAgICBlbHNlCj4+Pj4gICAgICAgICAgICBEUk1fREVCVUcoImNydGMgJWQ6 IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4gZGlmZl9ucyA9ICVkXG4iLAo+Pj4+ICAgICAgICAg ICAgICAgICAgY3J0YywgKGludCkgZGlmZl9ucyk7Cj4+Pj4gLSAgICB9Cj4+Pj4KPj4+PiAgICAg ICAgc3Bpbl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4+Pj4KPj4+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4+Pj4gaW5kZXgg NjJjNDA3NzdjMDA5Li40YzMxYTJjYzVhMzMgMTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtUC5oCj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4+Pj4gQEAgLTY4Niw5ICs2ODYs MTMgQEAgc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCB7Cj4+Pj4gICAgc3RydWN0IGRy bV92YmxhbmtfY3J0YyB7Cj4+Pj4gICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXY7ICAgICAg ICAvKiBwb2ludGVyIHRvIHRoZSBkcm1fZGV2aWNlICovCj4+Pj4gICAgICAgIHdhaXRfcXVldWVf aGVhZF90IHF1ZXVlOyAgICAvKio8IFZCTEFOSyB3YWl0IHF1ZXVlICovCj4+Pj4gLSAgICBzdHJ1 Y3QgdGltZXZhbCB0aW1lW0RSTV9WQkxBTktUSU1FX1JCU0laRV07ICAgIC8qKjwgdGltZXN0YW1w IG9mIGN1cnJlbnQgY291bnQgKi8KPj4+PiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgZGlzYWJs ZV90aW1lcjsgICAgICAgIC8qIGRlbGF5ZWQgZGlzYWJsZSB0aW1lciAqLwo+Pj4+IC0gICAgYXRv bWljX3QgY291bnQ7ICAgICAgICAgICAgLyoqPCBudW1iZXIgb2YgVkJMQU5LIGludGVycnVwdHMg Ki8KPj4+PiArCj4+Pj4gKyAgICAvKiB2YmxhbmsgY291bnRlciwgcHJvdGVjdGVkIGJ5IGRldi0+ dmJsYW5rX3RpbWVfbG9jayBmb3Igd3JpdGVzICovCj4+Pj4gKyAgICB1bnNpZ25lZCBsb25nIGNv dW50Owo+Pj4KPj4+IFdoeSBpcyBjb3VudCBhbiB1bnNpZ25lZCBsb25nICg9IDY0IGJpdCBvbiA2 NC1iaXQga2VybmVscykgaW5zdGVhZCBvZiB1MzIgd2hlbiBhbGwgdXNlcnMgb2YgY291bnQgYXJl IHUzMj8gSXMgdGhpcyBpbnRlbnRpb25hbD8KPj4+Cj4+Pgo+Pj4+ICsgICAgLyogdmJsYW5rIHRp bWVzdGFtcHMsIHByb3RlY3RlZCBieSBkZXYtPnZibGFua190aW1lX2xvY2sgZm9yIHdyaXRlcyAq Lwo+Pj4+ICsgICAgc3RydWN0IHRpbWV2YWwgdGltZVtEUk1fVkJMQU5LVElNRV9SQlNJWkVdOwo+ Pj4+ICsKPj4+PiAgICAgICAgYXRvbWljX3QgcmVmY291bnQ7ICAgICAgICAvKiBudW1iZXIgb2Yg dXNlcnMgb2YgdmJsYW5rIGludGVycnVwdHNwZXIgY3J0YyAqLwo+Pj4+ICAgICAgICB1MzIgbGFz dDsgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgZGV2LT52YmxfbG9jaywgdXNlZCAqLwo+Pj4+ ICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHdyYXBhcm91bmQgaGFuZGxpbmcgKi8KPj4+ Pgo+Pj4KPj4+IFRoYW5rcywKPj4+IC1tYXJpbwo+PgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK