From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH] drm/vblank: Fixup and document timestamp update/read barriers Date: Thu, 16 Apr 2015 08:39:37 +0200 Message-ID: <552F5929.4040101@gmail.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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <552F108A.6060406@hurleysoftware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter Hurley Cc: Daniel Vetter , =?UTF-8?B?TWljaGVsIETDpG56ZXI=?= , DRI Development , Daniel Vetter , Intel Graphics Development List-Id: dri-devel@lists.freedesktop.org T24gMDQvMTYvMjAxNSAwMzoyOSBBTSwgUGV0ZXIgSHVybGV5IHdyb3RlOgo+IE9uIDA0LzE1LzIw MTUgMDU6MjYgUE0sIE1hcmlvIEtsZWluZXIgd3JvdGU6Cj4+IEEgY291cGxlIG9mIHF1ZXN0aW9u cyB0byBlZHVjYXRlIG1lIGFuZCBvbmUgcmV2aWV3IGNvbW1lbnQuCj4+Cj4+IE9uIDA0LzE1LzIw MTUgMDc6MzQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBUaGlzIHdhcyBhIGJpdCB0b28g bXVjaCBjYXJnby1jdWx0ZWQsIHNvIGxldHMgbWFrZSBpdCBzb2xpZDoKPj4+IC0gdmJsYW5rLT5j b3VudCBkb2Vzbid0IG5lZWQgdG8gYmUgYW4gYXRvbWljLCB3cml0ZXMgYXJlIGFsd2F5cyBkb25l Cj4+PiAgICAgdW5kZXIgdGhlIHByb3RlY3Rpb24gb2YgZGV2LT52YmxhbmtfdGltZV9sb2NrLiBT d2l0Y2ggdG8gYW4gdW5zaWduZWQKPj4+ICAgICBsb25nIGluc3RlYWQgYW5kIHVwZGF0ZSBjb21t ZW50cy4gTm90ZSB0aGF0IGF0b21pY19yZWFkIGlzIGp1c3QgYQo+Pj4gICAgIG5vcm1hbCByZWFk IG9mIGEgdm9sYXRpbGUgdmFyaWFibGUsIHNvIG5vIG5lZWQgdG8gYXVkaXQgYWxsIHRoZQo+Pj4g ICAgIHJlYWQtc2lkZSBhY2Nlc3Mgc3BlY2lmaWNhbGx5Lgo+Pj4KPj4+IC0gVGhlIGJhcnJpZXJz IGZvciB0aGUgdmJsYW5rIGNvdW50ZXIgc2VxbG9jayB3ZXJlbid0IGNvbXBsZXRlOiBUaGUKPj4+ ICAgICByZWFkLXNpZGUgd2FzIG1pc3NpbmcgdGhlIGZpcnN0IGJhcnJpZXIgYmV0d2VlbiB0aGUg Y291bnRlciByZWFkIGFuZAo+Pj4gICAgIHRoZSB0aW1lc3RhbXAgcmVhZCwgaXQgb25seSBoYWQg YSBiYXJyaWVyIGJldHdlZW4gdGhlIHRzIGFuZCB0aGUKPj4+ICAgICBjb3VudGVyIHJlYWQuIFdl IG5lZWQgYm90aC4KPj4+Cj4+PiAtIEJhcnJpZXJzIHdlcmVuJ3QgcHJvcGVybHkgZG9jdW1lbnRl ZC4gU2luY2UgYmFycmllcnMgb25seSB3b3JrIGlmCj4+PiAgICAgeW91IGhhdmUgdGhlbSBvbiBi b3RocyBzaWRlcyBvZiB0aGUgdHJhbnNhY3Rpb24gaXQncyBwcnVkZW50IHRvCj4+PiAgICAgcmVm ZXJlbmNlIHdoZXJlIHRoZSBvdGhlciBzaWRlIGlzLiBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUK Pj4+ICAgICB3cml0ZS1zaWRlIGNvbW1lbnQgMyB0aW1lcyBleHRyYWN0IGEgbGl0dGxlIHN0b3Jl X3ZibGFuaygpIGhlbHBlci4KPj4+ICAgICBJbiB0aGF0IGhlbHBlciBhbHNvIGFzc2VydCB0aGF0 IHdlIGRvIGluZGVlZCBob2xkCj4+PiAgICAgZGV2LT52YmxhbmtfdGltZV9sb2NrLCBzaW5jZSBp biBzb21lIGNhc2VzIHRoZSBsb2NrIGlzIGFjcXVpcmVkIGEKPj4+ICAgICBmZXcgZnVuY3Rpb25z IHVwIGluIHRoZSBjYWxsY2hhaW4uCj4+Pgo+Pj4gU3BvdHRlZCB3aGlsZSByZXZpZXdpbmcgYSBw YXRjaCBmcm9tIENocmlzIFdpbHNvbiB0byBhZGQgYSBmYXN0cGF0aCB0bwo+Pj4gdGhlIHZibGFu a193YWl0IGlvY3RsLgo+Pj4KPj4+IHYyOiBBZGQgY29tbWVudCB0byBiZXR0ZXIgZXhwbGFpbiBo b3cgc3RvcmVfdmJsYW5rIHdvcmtzLCBzdWdnZXN0ZWQgYnkKPj4+IENocmlzLgo+Pj4KPj4+IHYz OiBQZXRlciBub3RpY2VkIHRoYXQgYXMtaXMgdGhlIDJuZCBzbXBfd21iIGlzIHJlZHVuZGFudCB3 aXRoIHRoZQo+Pj4gaW1wbGljaXQgYmFycmllciBpbiB0aGUgc3Bpbl91bmxvY2suIEJ1dCB0aGF0 IGNhbiBvbmx5IGJlIHByb3ZlbiBieQo+Pj4gYXVkaXRpbmcgYWxsIGNhbGxlcnMgYW5kIG15IHBv aW50IGluIGV4dHJhY3RpbmcgdGhpcyBsaXR0bGUgaGVscGVyIHdhcwo+Pj4gdG8gbG9jYWxpemUg YWxsIHRoZSBsb2NraW5nIGludG8ganVzdCBvbmUgcGxhY2UuIEhlbmNlIEkgdGhpbmsgdGhhdAo+ Pj4gYWRkaXRpb25hbCBvcHRpbWl6YXRpb24gaXMgdG9vIHJpc2t5Lgo+Pj4KPj4+IENjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4+IENjOiBNYXJpbyBLbGVpbmVy IDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4KPj4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4gQ2M6IE1pY2hlbCBEw6RuemVyIDxtaWNo ZWxAZGFlbnplci5uZXQ+Cj4+PiBDYzogUGV0ZXIgSHVybGV5IDxwZXRlckBodXJsZXlzb2Z0d2Fy ZS5jb20+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGlu dGVsLmNvbT4KPj4+IC0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyB8IDk1ICsr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgICBpbmNs dWRlL2RybS9kcm1QLmggICAgICAgIHwgIDggKysrLQo+Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCA1 NyBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPj4+IGlu ZGV4IGM4YTM0NDc2NTcwYS4uODY5NGI3N2QwMDAyIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9pcnEuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+Pj4g QEAgLTc0LDYgKzc0LDM2IEBAIG1vZHVsZV9wYXJhbV9uYW1lZCh2YmxhbmtvZmZkZWxheSwgZHJt X3ZibGFua19vZmZkZWxheSwgaW50LCAwNjAwKTsKPj4+ICAgIG1vZHVsZV9wYXJhbV9uYW1lZCh0 aW1lc3RhbXBfcHJlY2lzaW9uX3VzZWMsIGRybV90aW1lc3RhbXBfcHJlY2lzaW9uLCBpbnQsIDA2 MDApOwo+Pj4gICAgbW9kdWxlX3BhcmFtX25hbWVkKHRpbWVzdGFtcF9tb25vdG9uaWMsIGRybV90 aW1lc3RhbXBfbW9ub3RvbmljLCBpbnQsIDA2MDApOwo+Pj4KPj4+ICtzdGF0aWMgdm9pZCBzdG9y ZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMsCj4+PiArICAgICAgICAg ICAgIHVuc2lnbmVkIHZibGFua19jb3VudF9pbmMsCj4+PiArICAgICAgICAgICAgIHN0cnVjdCB0 aW1ldmFsICp0X3ZibGFuaykKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMg KnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPj4+ICsgICAgdTMyIHRzbG90Owo+Pj4gKwo+ Pj4gKyAgICBhc3NlcnRfc3Bpbl9sb2NrZWQoJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4+PiAr Cj4+PiArICAgIGlmICh0X3ZibGFuaykgewo+Pj4gKyAgICAgICAgLyogQWxsIHdyaXRlcnMgaG9s ZCB0aGUgc3BpbmxvY2ssIGJ1dCByZWFkZXJzIGFyZSBzZXJpYWxpemVkIGJ5Cj4+PiArICAgICAg ICAgKiB0aGUgbGF0Y2hpbmcgb2YgdmJsYW5rLT5jb3VudCBiZWxvdy4KPj4+ICsgICAgICAgICAq Lwo+Pj4gKyAgICAgICAgdHNsb3QgPSB2YmxhbmstPmNvdW50ICsgdmJsYW5rX2NvdW50X2luYzsK Pj4+ICsgICAgICAgIHZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHRzbG90KSA9ICp0X3ZibGFu azsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICAvKgo+Pj4gKyAgICAgKiB2YmxhbmsgdGltZXN0 YW1wIHVwZGF0ZXMgYXJlIHByb3RlY3RlZCBvbiB0aGUgd3JpdGUgc2lkZSB3aXRoCj4+PiArICAg ICAqIHZibGFua190aW1lX2xvY2ssIGJ1dCBvbiB0aGUgcmVhZCBzaWRlIGRvbmUgbG9ja2xlc3Ns eSB1c2luZyBhCj4+PiArICAgICAqIHNlcXVlbmNlLWxvY2sgb24gdGhlIHZibGFuayBjb3VudGVy LiBFbnN1cmUgY29ycmVjdCBvcmRlcmluZyB1c2luZwo+Pj4gKyAgICAgKiBtZW1vcnkgYmFycnJp ZXJzLiBXZSBuZWVkIHRoZSBiYXJyaWVyIGJvdGggYmVmb3JlIGFuZCBhbHNvIGFmdGVyIHRoZQo+ Pj4gKyAgICAgKiBjb3VudGVyIHVwZGF0ZSB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBuZXh0IHRp bWVzdGFtcCB3cml0ZS4KPj4+ICsgICAgICogVGhlIHJlYWQtc2lkZSBiYXJyaWVycyBmb3IgdGhp cyBhcmUgaW4gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZS4KPj4+ICsgICAgICovCj4+PiArICAg IHNtcF93bWIoKTsKPj4+ICsgICAgdmJsYW5rLT5jb3VudCArPSB2YmxhbmtfY291bnRfaW5jOwo+ Pj4gKyAgICBzbXBfd21iKCk7Cj4+PiArfQo+Pj4gKwo+Pj4gICAgLyoqCj4+PiAgICAgKiBkcm1f dXBkYXRlX3ZibGFua19jb3VudCAtIHVwZGF0ZSB0aGUgbWFzdGVyIHZibGFuayBjb3VudGVyCj4+ PiAgICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4+PiBAQCAtOTMsNyArMTIzLDcgQEAgbW9kdWxlX3Bh cmFtX25hbWVkKHRpbWVzdGFtcF9tb25vdG9uaWMsIGRybV90aW1lc3RhbXBfbW9ub3RvbmljLCBp bnQsIDA2MDApOwo+Pj4gICAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4+PiAgICB7Cj4+PiAgICAgICAgc3RydWN0 IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwo+Pj4gLSAgICB1 MzIgY3VyX3ZibGFuaywgZGlmZiwgdHNsb3Q7Cj4+PiArICAgIHUzMiBjdXJfdmJsYW5rLCBkaWZm Owo+Pj4gICAgICAgIGJvb2wgcmM7Cj4+PiAgICAgICAgc3RydWN0IHRpbWV2YWwgdF92Ymxhbms7 Cj4+Pgo+Pj4gQEAgLTEyOSwxOCArMTU5LDEyIEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJs YW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+Pj4gICAgICAgIGlm IChkaWZmID09IDApCj4+PiAgICAgICAgICAgIHJldHVybjsKPj4+Cj4+PiAtICAgIC8qIFJlaW5p dGlhbGl6ZSBjb3JyZXNwb25kaW5nIHZibGFuayB0aW1lc3RhbXAgaWYgaGlnaC1wcmVjaXNpb24g cXVlcnkKPj4+IC0gICAgICogYXZhaWxhYmxlLiBTa2lwIHRoaXMgc3RlcCBpZiBxdWVyeSB1bnN1 cHBvcnRlZCBvciBmYWlsZWQuIFdpbGwKPj4+IC0gICAgICogcmVpbml0aWFsaXplIGRlbGF5ZWQg YXQgbmV4dCB2YmxhbmsgaW50ZXJydXB0IGluIHRoYXQgY2FzZS4KPj4+ICsgICAgLyoKPj4+ICsg ICAgICogT25seSByZWluaXRpYWxpemUgY29ycmVzcG9uZGluZyB2YmxhbmsgdGltZXN0YW1wIGlm IGhpZ2gtcHJlY2lzaW9uIHF1ZXJ5Cj4+PiArICAgICAqIGF2YWlsYWJsZSBhbmQgZGlkbid0IGZh aWwuIFdpbGwgcmVpbml0aWFsaXplIGRlbGF5ZWQgYXQgbmV4dCB2YmxhbmsKPj4+ICsgICAgICog aW50ZXJydXB0IGluIHRoYXQgY2FzZS4KPj4+ICAgICAgICAgKi8KPj4+IC0gICAgaWYgKHJjKSB7 Cj4+PiAtICAgICAgICB0c2xvdCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KSArIGRpZmY7 Cj4+PiAtICAgICAgICB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB0c2xvdCkgPSB0X3ZibGFu azsKPj4+IC0gICAgfQo+Pj4gLQo+Pj4gLSAgICBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPj4+ IC0gICAgYXRvbWljX2FkZChkaWZmLCAmdmJsYW5rLT5jb3VudCk7Cj4+PiAtICAgIHNtcF9tYl9f YWZ0ZXJfYXRvbWljKCk7Cj4+PiArICAgIHN0b3JlX3ZibGFuayhkZXYsIGNydGMsIGRpZmYsIHJj ID8gJnRfdmJsYW5rIDogTlVMTCk7Cj4+PiAgICB9Cj4+Pgo+Pj4gICAgLyoKPj4+IEBAIC0yMTgs NyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4+PiAgICAgICAgLyogQ29tcHV0ZSB0aW1lIGRpZmZl cmVuY2UgdG8gc3RvcmVkIHRpbWVzdGFtcCBvZiBsYXN0IHZibGFuawo+Pj4gICAgICAgICAqIGFz IHVwZGF0ZWQgYnkgbGFzdCBpbnZvY2F0aW9uIG9mIGRybV9oYW5kbGVfdmJsYW5rKCkgaW4gdmJs YW5rIGlycS4KPj4+ICAgICAgICAgKi8KPj4+IC0gICAgdmJsY291bnQgPSBhdG9taWNfcmVhZCgm dmJsYW5rLT5jb3VudCk7Cj4+PiArICAgIHZibGNvdW50ID0gdmJsYW5rLT5jb3VudDsKPj4+ICAg ICAgICBkaWZmX25zID0gdGltZXZhbF90b19ucygmdHZibGFuaykgLQo+Pj4gICAgICAgICAgICAg IHRpbWV2YWxfdG9fbnMoJnZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHZibGNvdW50KSk7Cj4+ Pgo+Pj4gQEAgLTIzNCwxNyArMjU4LDggQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5k X3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4+PiAgICAgICAgICogYXZh aWxhYmxlLiBJbiB0aGF0IGNhc2Ugd2UgY2FuJ3QgYWNjb3VudCBmb3IgdGhpcyBhbmQganVzdAo+ Pj4gICAgICAgICAqIGhvcGUgZm9yIHRoZSBiZXN0Lgo+Pj4gICAgICAgICAqLwo+Pj4gLSAgICBp ZiAodmJscmMgJiYgKGFiczY0KGRpZmZfbnMpID4gMTAwMDAwMCkpIHsKPj4+IC0gICAgICAgIC8q IFN0b3JlIG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZlci4gKi8KPj4+IC0gICAgICAgIHZibGFu a3RpbWVzdGFtcChkZXYsIGNydGMsIHZibGNvdW50ICsgMSkgPSB0dmJsYW5rOwo+Pj4gLQo+Pj4g LSAgICAgICAgLyogSW5jcmVtZW50IGNvb2tlZCB2YmxhbmsgY291bnQuIFRoaXMgYWxzbyBhdG9t aWNhbGx5IGNvbW1pdHMKPj4+IC0gICAgICAgICAqIHRoZSB0aW1lc3RhbXAgY29tcHV0ZWQgYWJv dmUuCj4+PiAtICAgICAgICAgKi8KPj4+IC0gICAgICAgIHNtcF9tYl9fYmVmb3JlX2F0b21pYygp Owo+Pj4gLSAgICAgICAgYXRvbWljX2luYygmdmJsYW5rLT5jb3VudCk7Cj4+PiAtICAgICAgICBz bXBfbWJfX2FmdGVyX2F0b21pYygpOwo+Pj4gLSAgICB9Cj4+PiArICAgIGlmICh2YmxyYyAmJiAo YWJzNjQoZGlmZl9ucykgPiAxMDAwMDAwKSkKPj4+ICsgICAgICAgIHN0b3JlX3ZibGFuayhkZXYs IGNydGMsIDEsICZ0dmJsYW5rKTsKPj4+Cj4+PiAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2LT52YmxhbmtfdGltZV9sb2NrLCBpcnFmbGFncyk7Cj4+PiAgICB9Cj4+PiBAQCAtODUy LDcgKzg2Nyw3IEBAIHUzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQo+Pj4KPj4+ICAgICAgICBpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2Ny dGNzKSkKPj4+ICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiAtICAgIHJldHVybiBhdG9taWNfcmVh ZCgmdmJsYW5rLT5jb3VudCk7Cj4+PiArICAgIHJldHVybiB2YmxhbmstPmNvdW50Owo+Pgo+PiBJ IHdyb25nbHkgYXNzdW1lZCBhdG9taWNfcmVhZCB3b3VsZCBndWFyYW50ZWUgbW9yZSB0aGFuIGl0 IGFjdHVhbGx5IGRvZXMsIHNvIHBsZWFzZSBoZWxwIG1lIHRvIGxlYXJuIHNvbWV0aGluZy4gV2h5 IGRvbid0IHdlIG5lZWQgc29tZSBzbXBfcm1iKCkgaGVyZSBiZWZvcmUgcmV0dXJuaW5nIHZibGFu ay0+Y291bnQ/IFdoYXQgZ3VhcmFudGVlcyB0aGF0IGRybV92YmxhbmtfY291bnQoKSBkb2VzIHJl dHVybiB0aGUgbGF0ZXN0IHZhbHVlIGFzc2lnbmVkIHRvIHZibGFuay0+Y291bnQgaW4gc3RvcmVf dmJsYW5rKCk/IEluIHN0b3JlX3ZibGFuaygpIHRoZXJlIGlzIGEgc21wX3dtYigpLCBidXQgd2h5 IGRvbid0IHdlIG5lZWQgYSBtYXRjaGluZyBzbXBfcm1iKCkgaGVyZSB0byBiZW5lZml0IGZyb20g aXQ/Cj4KPiBXZWxsLCB5b3UgY291bGQgYnV0IHRoZSB2YmxhbmsgY291bnRlciByZXNvbHV0aW9u IGlzIHZlcnkgbG93ICg2MEhaKSwKPiBzbyBwcmFjdGljYWxseSBzcGVha2luZywgd2hhdCB3b3Vs ZCBiZSB0aGUgcG9pbnQ/Cj4KClRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9ucyBQZXRlci4KCkRl cGVuZHMgb24gdGhlIGxhdGVuY3kgaW5kdWNlZC4gQSBmZXcgbWljcm9zZWNvbmRzIGRvbid0IG1h dHRlciwgYSAKbWlsbGlzZWNvbmQgb3IgbW9yZSB3b3VsZCBtYXR0ZXIgZm9yIHNvbWUgYXBwbGlj YXRpb25zLgoKPiBUaGUgdHJhaWxpbmcgd3JpdGUgYmFycmllciBpbiBzdG9yZV92YmxhbmsoKSBp cyBvbmx5IG5lY2Vzc2FyeSB0bwo+IGZvcmNlIHRoZSBvcmRlcmluZyBvZiB0aGUgdGltZXN0YW1w IHdydCB0byB2YmxhbmsgY291bnQgKmluIGNhc2UgdGhlcmUKPiB3YXMgbm8gd3JpdGUgYmFycmll ciBleGVjdXRlZCBiZXR3ZWVuIHRvIGNhbGxzIHRvIHN0b3JlX3ZibGFuaygpKiwKPiBub3QgdG8g ZW5zdXJlIHRoZSBjcHUgZm9yY2VzIHRoZSB3cml0ZSB0byBtYWluIG1lbW9yeSBpbW1lZGlhdGVs eS4KPgoKVGhhdCBwYXJ0IGkgdW5kZXJzdGFuZCwgdGhlIHBvc3NpYmx5IHNsaWdodGx5IGVhcmxp ZXIgd3JpdGUgb2Ygc29tZSAKc3RvcmUgYnVmZmVycyB0byBtYWluIG1lbW9yeSBpcyBqdXN0IGEg cG9zc2libGUgbmljZSBzaWRlIGVmZmVjdC4gQml0cyAKYW5kIHBpZWNlcyBvZiBteSBtZW1vcnkg YWJvdXQgaG93IGNhY2hlIGNvaGVyZW5jeSBldGMuIHdvcmsgc2xvd2x5IGNvbWUgCmJhY2sgdG8g bXkgb3duIG1lbW9yeS4uLgoKPiBCZWNhdXNlIHRoZSB0aW1lIHNjYWxlcyBmb3IgdGhlc2UgZXZl bnRzIGRvbid0IHJlcXVpcmUgdGhhdCBsZXZlbCBvZgo+IHJlc29sdXRpb247IGNvbnNpZGVyIGhv dyBtdWNoIGNvZGUgaGFzIHRvIGdldCBleGVjdXRlZCBiZXR3ZWVuIGEKPiBoYXJkd2FyZSB2Ymxh bmsgaXJxIHRyaWdnZXJpbmcgYW5kIHRoZSB2YmxhbmsgY291bnRlciBiZWluZyB1cGRhdGVkLgo+ Cj4gUmVhbGlzdGljYWxseSwgdGhlIG9ubHkgcmVsZXZhbnQgcmVxdWlyZW1lbnQgaXMgdGhhdCB0 aGUgdGltZXN0YW1wCj4gbWF0Y2ggdGhlIGNvdW50ZXIuCj4KClllcyB0aGF0IGlzIHRoZSByZWFs bHkgaW1wb3J0YW50IHBhcnQuIEEgbXNlYyBkZWxheSB3b3VsZCBwb3NzaWJseSAKbWF0dGVyIGZv ciBzb21lIHRpbWluZyBzZW5zaXRpdmUgYXBwcyBsaWtlIG1pbmUgLSBzb21lIG1vcmUgZXhvdGlj IApkaXNwbGF5cyBydW4gYXQgMjAwIEh6LCBhbmQgc29tZSBhcHBzIG5lZWQgdG8gc3luY2hyb25p emUgdG8gdGhlIHZibGFuayAKbm90IHN0cmljdGx5IGZvciBncmFwaGljcy4gQnV0IGkgYXNzdW1l IHBvdGVudGlhbCBkZWxheXMgaGVyZSBhcmUgbW9yZSAKb24gdGhlIG9yZGVyIG9mIGEgZmV3IG1p Y3Jvc2Vjb25kcyBpZiBzb21lIHBlbmRpbmcgbG9hZHMgZnJvbSB0aGUgY2FjaGUgCndvdWxkIGdl dCByZW9yZGVyZWQgZm9yIG92ZXJhbGwgZWZmaWNpZW5jeT8KCj4+Cj4+PiAgICB9Cj4+PiAgICBF WFBPUlRfU1lNQk9MKGRybV92YmxhbmtfY291bnQpOwo+Pj4KPj4+IEBAIC04OTcsMTYgKzkxMiwx NyBAQCB1MzIgZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgY3J0YywKPj4+ICAgICAgICBpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2NydGNz KSkKPj4+ICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pgo+Pj4gLSAgICAvKiBSZWFkIHRpbWVzdGFt cCBmcm9tIHNsb3Qgb2YgX3ZibGFua190aW1lIHJpbmdidWZmZXIKPj4+IC0gICAgICogdGhhdCBj b3JyZXNwb25kcyB0byBjdXJyZW50IHZibGFuayBjb3VudC4gUmV0cnkgaWYKPj4+IC0gICAgICog Y291bnQgaGFzIGluY3JlbWVudGVkIGR1cmluZyByZWFkb3V0LiBUaGlzIHdvcmtzIGxpa2UKPj4+ IC0gICAgICogYSBzZXFsb2NrLgo+Pj4gKyAgICAvKgo+Pj4gKyAgICAgKiBWYmxhbmsgdGltZXN0 YW1wcyBhcmUgcmVhZCBsb2NrbGVzcy4gVG8gZW5zdXJlIGNvbnNpc3RlbmN5IHRoZSB2YmxhbmsK Pj4+ICsgICAgICogY291bnRlciBpcyByZWNoZWNrZWQgYW5kIG9yZGVyaW5nIGlzIGVuc3VyZWQg dXNpbmcgbWVtb3J5IGJhcnJpZXJzLgo+Pj4gKyAgICAgKiBUaGlzIHdvcmtzIGxpa2UgYSBzZXFs b2NrLiBUaGUgd3JpdGUtc2lkZSBiYXJyaWVycyBhcmUgaW4gc3RvcmVfdmJsYW5rLgo+Pj4gICAg ICAgICAqLwo+Pj4gICAgICAgIGRvIHsKPj4+IC0gICAgICAgIGN1cl92YmxhbmsgPSBhdG9taWNf cmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4+PiArICAgICAgICBjdXJfdmJsYW5rID0gdmJsYW5rLT5j b3VudDsKPj4+ICsgICAgICAgIHNtcF9ybWIoKTsKPj4+ICAgICAgICAgICAgKnZibGFua3RpbWUg PSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCBjdXJfdmJsYW5rKTsKPj4+ICAgICAgICAgICAg c21wX3JtYigpOwo+Pj4gLSAgICB9IHdoaWxlIChjdXJfdmJsYW5rICE9IGF0b21pY19yZWFkKCZ2 YmxhbmstPmNvdW50KSk7Cj4+PiArICAgIH0gd2hpbGUgKGN1cl92YmxhbmsgIT0gdmJsYW5rLT5j b3VudCk7Cj4+Pgo+Pgo+PiBTaW1pbGFyIHF1ZXN0aW9uIGFzIGFib3ZlLiBXZSBoYXZlIGEgbmV3 IHNtcF9ybWIoKSBhZnRlciB0aGUgY3VyX3ZibGFuayBhc3NpZ25tZW50IGFuZCB0aGVuIGFmdGVy ICp2Ymxhbmt0aW1lIGFzc2lnbm1lbnQuIE15IG9yaWdpbmFsIHdyb25nIGFzc3VtcHRpb24gd2Fz IHRoYXQgdGhlIGZpcnN0IHNtcF9ybWIoKSB3b3VsZG4ndCBiZSBuZWVkZWQgYmVjYXVzZSBhdG9t aWNfcmVhZCgpIHdvdWxkIGltcGx5IHRoYXQsIGFuZCB0aGF0IHRoZSBjb21waWxlci9jcHUgY291 bGRuJ3QgcmVvcmRlciBhbnl0aGluZyBoZXJlIGJlY2F1c2UgdGhlICp2Ymxhbmt0aW1lIGFzc2ln bm1lbnQgZGVwZW5kcyBvbiBjdXJfdmJsYW5rIGZyb20gdGhlIHByZWNlZWRpbmcgYXRvbWljX3Jl YWQuCj4+Cj4+IEJ1dCB3aHkgY2FuIHdlIG5vdyBkbyB0aGUgY29tcGFyaXNvbiB3aGlsZShjdXJf dmJsYW5rICE9IHZibGFuay0+Y291bnQpIHdpdGhvdXQgbmVlZGluZyBzb21ldGhpbmcgbGlrZQo+ Pgo+PiAgICAgIG5ld192YmxhbmsgPSB2YmxhbmstPmNvdW50Owo+PiAgICAgIHNtcF9ybWIoKTsK Pj4gICAgIH0gd2hpbGUgKGN1cl92YmxhbmsgIT0gbmV3X3ZibGFuayk7Cj4+Cj4+IHRvIG1ha2Ug c3VyZSB0aGUgdmFsdWUgZnJvbSB0aGUgMm5kIHZibGFuay0+Y291bnQgcmVhZCBpc24ndCBzdGFs ZSB3cnQuIHRvIHBvdGVudGlhbCB1cGRhdGVzIGZyb20gc3RvcmVfdmJsYW5rKCk/Cj4KPiBTaW1p bGFyIHJlc3BvbnNlIGhlcmUuCj4KPiBXaGF0IG1hdHRlcnMgaXMgdGhhdCB0aGUgdGltZXN0YW1w IHJlYWQgaXMgY29uc2lzdGVudCB3aXRoIHRoZQo+IHZibGFuayBjb3VudDsgbm90IHRoYXQgeW91 ICJqdXN0IG1pc3NlZCIgbmV3IHZhbHVlcy4KPgo+PiBBbm90aGVyIHF1ZXN0aW9uIGlzIHdoeSB0 aGUgZHJtX3ZibGFua19jb3VudF9hbmRfdGltZSgpIGNvZGUgZXZlciB3b3JrZWQgd2l0aG91dCB0 cmlnZ2VyaW5nIGFueSBvZiBteSBvd24gdGVzdHMgYW5kIGNvbnNpc3RlbmN5IGNoZWNrcyBpbiBt eSBzb2Z0d2FyZSwgb3IgYW55IG9mIHlvdXIgaWd0IHRlc3RzPyBJIHJ1biBteSB0ZXN0cyB2ZXJ5 IG9mdGVuLCBidXQgb25seSBvbiBJbnRlbCBhcmNoaXRlY3R1cmUgY3B1cy4gSSBhc3N1bWUgdGhl IHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGlndCB0ZXN0cz8gSXMgdGhlcmUgYW55dGhpbmcgc3BlY2lm aWMgYWJvdXQgSW50ZWwgY3B1J3MgdGhhdCBtYWtlcyB0aGlzIHN0aWxsIHdvcmsgb3IgdmVyeSB1 bmxpa2VseSB0byBicmVhaz8gT3IgYXJlIHRoZSB0ZXN0cyBpbnN1ZmZpY2llbnQgdG8gY2F0Y2gg dGhpcz8gT3IganVzdCBsdWNrPwo+Cj4gSW50ZWwgeDg2IGNwdXMgYXJlIHN0cm9uZ2x5LW9yZGVy ZWQsIHNvIHNtcF9ybWIoKSBhbmQgc21wX3dtYigpIGFyZSBvbmx5Cj4gY29tcGlsZXIgYmFycmll cnMgb24geDg2IGFyY2guCj4KCk9rLCB0aGF0IG1ha2VzIHNlbnNlIGFzIHBhcnQgb2YgdGhlIGV4 cGxhbmF0aW9uIHdoeSBzdHVmZiBzdGlsbCB3b3JrZWQsIAphdCBsZWFzdCBvbiB0aGUgdGVzdGVk IHg4NiBhcmNoLgoKPiBUaGUgY29tcGlsZXIgY291bGQgaGF2ZSBob2lzdGVkIHRoZSB2Ymxhbmt0 aW1lc3RhbXAgcmVhZCBpbiBmcm9udCBvZgo+IHRoZSB2YmxhbmsgY291bnQgcmVhZCwgYnV0IGNo b3NlIG5vdCB0by4KPgoKVGhpcyBvbmUgc3RpbGwgY29uZnVzZXMgbWUuIEkga25vdyB3aHkgdGhl IHNtcF9ybWIgYWZ0ZXIgdGhlIAp2Ymxhbmt0aW1lc3RhbXAgcmVhZCBpcyB0aGVyZSAtIGkgcGxh Y2VkIG9uZSB0aGVyZSBpbiB0aGUgY3VycmVudCBjb2RlIApteXNlbGYuIEJ1dCB3aHkgY291bGQg dGhlIGNvbXBpbGVyIC0gaW4gYWJzZW5jZSBvZiB0aGUgbmV3IHNtcF9ybWIgCmNvbXBpbGVyIGJh cnJpZXIgaW4gdGhpcyBwYXRjaCAgLSByZW9yZGVyIHRob3NlIHR3byBsb2FkcyB3aXRob3V0IAp2 aW9sYXRpbmcgdGhlIHNlbWFudGljIG9mIHRoZSBjb2RlPwoKV2h5IGNvdWxkIGl0IGhhdmUgdHVy bmVkIHRoaXMKCmN1cl92YmxhbmsgPSB2YmxhbmstPmNvdW50OwovLyBzbXBfcm1iKCk7CnZibGFu a3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCBjdXJfdmJsYW5rKTsKCmludG8gdGhp cyBpbnN0ZWFkCgoqdmJsYW5rdGltZSA9IHZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIGN1cl92 YmxhbmspOwovLyBzbXBfcm1iKCk7CmN1cl92YmxhbmsgPSB2YmxhbmstPmNvdW50OwoKd2hlbiB0 aGUgZmlyc3QgbG9hZCB3b3VsZCBuZWVkIHRoZSB2YWx1ZSBvZiBjdXJfdmJsYW5rIC0gYW5kIHRo ZXJlYnkgdGhlIApyZXN1bHQgb2YgdGhlIDJuZCBsb2FkIC0gYXMgaW5wdXQgdG8gY2FsY3VsYXRl IGl0cyBhZGRyZXNzIGZvciB0aGUgCip2Ymxhbmt0aW1lID0gLi4uIGxvYWQ/CgpJIHRoaW5rIGkn bSBzdGlsbCBub3QgZ2V0dGluZyBzb21ldGhpbmcgYWJvdXQgd2h5IHRoZSBjb21waWxlciB3b3Vs ZCBiZSAKYWxsb3dlZCB0byByZW9yZGVyIGluIHRoaXMgd2F5IGluIGFic2VuY2Ugb2YgdGhlIGFk ZGl0aW9uYWwgc21wX3JtYj8gT3IgCmlzIHRoYXQgYmFycmllciByZXF1aXJlZCBmb3Igb3RoZXIg YXJjaHMgd2hpY2ggYXJlIGxlc3Mgc3Ryb25nbHkgb3JkZXJlZD8KCnRoYW5rcywKLW1hcmlvCgo+ PiBJIGxvb2tlZCB0aHJvdWdoIGtlcm5lbHMgYmFjayB0byAzLjE2IGFuZCBtb3N0IHVzZXMgb2Yg dGhlIGZ1bmN0aW9uIHdvdWxkIGJlIHNhZmUgZnJvbSByYWNlcyBkdWUgdG8gdGhlIGxvY2tpbmcg YXJvdW5kIGl0LCBob2xkaW5nIG9mIHZibGFuayByZWZjb3VudHMsIG9yIHRoZSBwbGFjZSBhbmQg b3JkZXIgb2YgZXhlY3V0aW9uLCBlLmcuLCBmcm9tIHdpdGhpbiBkcm1faGFuZGxlX3ZibGFuaygp LiBCdXQgaW4gc29tZSB0aWdodCB0ZXN0IGxvb3AganVzdCBjYWxsaW5nIHRoZSBkcm1XYWl0VmJs YW5rIGlvY3RsIHRvIHF1ZXJ5IGN1cnJlbnQgdmFsdWVzIGknZCBleHBlY3QgaXQgdG8gYXQgbGVh c3Qgb2NjYXNzaW9uYWxseSByZXR1cm4gY29ycnVwdGVkIHRpbWVzdGFtcHMsIGUuZy4sIHRpbWUg anVtcGluZyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBldGMuPwo+Cj4gQXMgYSB0ZXN0LCByZXZlcnNl IHRoZSBsb2FkIG9yZGVyIG9mIHZibGFua3RpbWVzdGFtcCB3cnQgdmJsYW5rIGNvdW50Cj4gYW5k IHNlZSBpZiB5b3VyIHRlc3RzIHRyaXA7IGlmIG5vdCwgeW91IGtub3cgdGhlIHRlc3RzIGFyZSBp bnN1ZmZpY2llbnQuCj4KPiBSZWdhcmRzLAo+IFBldGVyIEh1cmxleQo+Cj4+Cj4+PiAgICAgICAg cmV0dXJuIGN1cl92Ymxhbms7Cj4+PiAgICB9Cj4+PiBAQCAtMTcxNSw3ICsxNzMxLDcgQEAgYm9v bCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPj4+ ICAgICAgICAgKi8KPj4+Cj4+PiAgICAgICAgLyogR2V0IGN1cnJlbnQgdGltZXN0YW1wIGFuZCBj b3VudC4gKi8KPj4+IC0gICAgdmJsY291bnQgPSBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7 Cj4+PiArICAgIHZibGNvdW50ID0gdmJsYW5rLT5jb3VudDsKPj4+ICAgICAgICBkcm1fZ2V0X2xh c3RfdmJsdGltZXN0YW1wKGRldiwgY3J0YywgJnR2YmxhbmssIERSTV9DQUxMRURfRlJPTV9WQkxJ UlEpOwo+Pj4KPj4+ICAgICAgICAvKiBDb21wdXRlIHRpbWUgZGlmZmVyZW5jZSB0byB0aW1lc3Rh bXAgb2YgbGFzdCB2YmxhbmsgKi8KPj4+IEBAIC0xNzMxLDIwICsxNzQ3LDExIEBAIGJvb2wgZHJt X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4+PiAgICAg ICAgICogZS5nLiwgZHVlIHRvIHNwdXJpb3VzIHZibGFuayBpbnRlcnJ1cHRzLiBXZSBuZWVkIHRv Cj4+PiAgICAgICAgICogaWdub3JlIHRob3NlIGZvciBhY2NvdW50aW5nLgo+Pj4gICAgICAgICAq Lwo+Pj4gLSAgICBpZiAoYWJzNjQoZGlmZl9ucykgPiBEUk1fUkVEVU5EQU5UX1ZCTElSUV9USFJF U0hfTlMpIHsKPj4+IC0gICAgICAgIC8qIFN0b3JlIG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZl ci4gKi8KPj4+IC0gICAgICAgIHZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHZibGNvdW50ICsg MSkgPSB0dmJsYW5rOwo+Pj4gLQo+Pj4gLSAgICAgICAgLyogSW5jcmVtZW50IGNvb2tlZCB2Ymxh bmsgY291bnQuIFRoaXMgYWxzbyBhdG9taWNhbGx5IGNvbW1pdHMKPj4+IC0gICAgICAgICAqIHRo ZSB0aW1lc3RhbXAgY29tcHV0ZWQgYWJvdmUuCj4+PiAtICAgICAgICAgKi8KPj4+IC0gICAgICAg IHNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwo+Pj4gLSAgICAgICAgYXRvbWljX2luYygmdmJsYW5r LT5jb3VudCk7Cj4+PiAtICAgICAgICBzbXBfbWJfX2FmdGVyX2F0b21pYygpOwo+Pj4gLSAgICB9 IGVsc2Ugewo+Pj4gKyAgICBpZiAoYWJzNjQoZGlmZl9ucykgPiBEUk1fUkVEVU5EQU5UX1ZCTElS UV9USFJFU0hfTlMpCj4+PiArICAgICAgICBzdG9yZV92YmxhbmsoZGV2LCBjcnRjLCAxLCAmdHZi bGFuayk7Cj4+PiArICAgIGVsc2UKPj4+ICAgICAgICAgICAgRFJNX0RFQlVHKCJjcnRjICVkOiBS ZWR1bmRhbnQgdmJsaXJxIGlnbm9yZWQuIGRpZmZfbnMgPSAlZFxuIiwKPj4+ICAgICAgICAgICAg ICAgICAgY3J0YywgKGludCkgZGlmZl9ucyk7Cj4+PiAtICAgIH0KPj4+Cj4+PiAgICAgICAgc3Bp bl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+Pj4gaW5kZXggNjJjNDA3Nzdj MDA5Li40YzMxYTJjYzVhMzMgMTAwNjQ0Cj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKPj4+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybVAuaAo+Pj4gQEAgLTY4Niw5ICs2ODYsMTMgQEAgc3RydWN0 IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCB7Cj4+PiAgICBzdHJ1Y3QgZHJtX3ZibGFua19jcnRj IHsKPj4+ICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OyAgICAgICAgLyogcG9pbnRlciB0 byB0aGUgZHJtX2RldmljZSAqLwo+Pj4gICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHF1ZXVlOyAg ICAvKio8IFZCTEFOSyB3YWl0IHF1ZXVlICovCj4+PiAtICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVb RFJNX1ZCTEFOS1RJTUVfUkJTSVpFXTsgICAgLyoqPCB0aW1lc3RhbXAgb2YgY3VycmVudCBjb3Vu dCAqLwo+Pj4gICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IGRpc2FibGVfdGltZXI7ICAgICAgICAv KiBkZWxheWVkIGRpc2FibGUgdGltZXIgKi8KPj4+IC0gICAgYXRvbWljX3QgY291bnQ7ICAgICAg ICAgICAgLyoqPCBudW1iZXIgb2YgVkJMQU5LIGludGVycnVwdHMgKi8KPj4+ICsKPj4+ICsgICAg LyogdmJsYW5rIGNvdW50ZXIsIHByb3RlY3RlZCBieSBkZXYtPnZibGFua190aW1lX2xvY2sgZm9y IHdyaXRlcyAqLwo+Pj4gKyAgICB1bnNpZ25lZCBsb25nIGNvdW50Owo+Pgo+PiBXaHkgaXMgY291 bnQgYW4gdW5zaWduZWQgbG9uZyAoPSA2NCBiaXQgb24gNjQtYml0IGtlcm5lbHMpIGluc3RlYWQg b2YgdTMyIHdoZW4gYWxsIHVzZXJzIG9mIGNvdW50IGFyZSB1MzI/IElzIHRoaXMgaW50ZW50aW9u YWw/Cj4+Cj4+Cj4+PiArICAgIC8qIHZibGFuayB0aW1lc3RhbXBzLCBwcm90ZWN0ZWQgYnkgZGV2 LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KPj4+ICsgICAgc3RydWN0IHRpbWV2YWwg dGltZVtEUk1fVkJMQU5LVElNRV9SQlNJWkVdOwo+Pj4gKwo+Pj4gICAgICAgIGF0b21pY190IHJl ZmNvdW50OyAgICAgICAgLyogbnVtYmVyIG9mIHVzZXJzIG9mIHZibGFuayBpbnRlcnJ1cHRzcGVy IGNydGMgKi8KPj4+ICAgICAgICB1MzIgbGFzdDsgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgYnkg ZGV2LT52YmxfbG9jaywgdXNlZCAqLwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Ig d3JhcGFyb3VuZCBoYW5kbGluZyAqLwo+Pj4KPj4KPj4gVGhhbmtzLAo+PiAtbWFyaW8KPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=