From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH] drm: use seqlocks for vblank time/count Date: Wed, 18 May 2016 15:54:39 +0200 Message-ID: <573C741F.2020204@gmail.com> References: <1462810123-28493-1-git-send-email-matthew.auld@intel.com> <20160509171607.GP4329@intel.com> <20160509181149.GC27098@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160509181149.GC27098@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, Matthew Auld , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDUvMDkvMjAxNiAwODoxMSBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE1h eSAwOSwgMjAxNiBhdCAwODoxNjowN1BNICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+ IE9uIE1vbiwgTWF5IDA5LCAyMDE2IGF0IDA1OjA4OjQzUE0gKzAxMDAsIE1hdHRoZXcgQXVsZCB3 cm90ZToKPj4+IFRoaXMgcGF0Y2ggYWltcyB0byByZXBsYWNlIHRoZSByb2xsLXlvdXItb3duIHNl cWxvY2sgaW1wbGVtZW50YXRpb24gd2l0aAo+Pj4gZnVsbC1ibG93biBzZXFsb2NrJy4gV2UgYWxz byByZW1vdmUgdGhlIHRpbWVzdGFtcCByaW5nLWJ1ZmZlciBpbiBmYXZvdXIKPj4+IG9mIHNpbmds ZSB0aW1lc3RhbXAvY291bnQgcGFpciBwcm90ZWN0ZWQgYnkgYSBzZXFsb2NrLiBJbiB0dXJuIHRo aXMKPj4+IG1lYW5zIHdlIGNhbiBub3cgaW5jcmVtZW50IHRoZSB2YmxhbmsgZnJlZWx5IHdpdGhv dXQgdGhlIG5lZWQgZm9yCj4+PiBjbGFtcGluZy4KPj4KPj4gVGhpcyB3aWxsIGFsc28gY2hhbmdl IHRoZSBiZWhhdmlvdXIgdG8gYmxvY2sgbmV3IHJlYWRlcnMgd2hpbGUgdGhlCj4+IHdyaXRlciBo YXMgdGhlIGxvY2ssIHdoZXJlYXMgdGhlIG9sZCBjb2RlIHdvdWxkIGFsbG93IHJlYWRlcnMgdG8K Pj4gcHJvY2VlZCBpbiBwYXJhbGxlbC4gV2UgZG8gdGhlIHdob2xlIGh3IGNvdW50ZXIgKyBzY2Fu b3V0IHBvc2l0aW9uCj4+IHF1ZXJ5IHdoaWxlIGhvbGRpbmcgdGhlIGxvY2sgc28gaXQncyBub3Qg ZXhhY3RseSB6ZXJvIGFtb3VudCBvZiB3b3JrLAo+PiBidXQgSSdtIG5vdCBzdXJlIHRoYXQncyBh IHJlYWwgcHJvYmxlbS4KPj4KPj4gSSBndWVzcyB3ZSBjb3VsZCByZWR1Y2UgdGhlIHNjb3BlIG9m IHRoZSBzZXFsb2NrLCBidXQgdGhlbiBtYXliZSB3ZSdkCj4+IG5lZWQgdG8ga2VlcCB0aGUgdmJs YW5rX3RpbWVfbG9jayBzcGlubG9jayBhcyB3ZWxsLiBUaGUgZGV0YWlscyBlc2NhcGUKPj4gbWUg bm93LCBzbyBJJ2QgaGF2ZSByZS1yZWFkIHRoZSBjb2RlIGFnYWluLgo+Pgo+PiBDY2luZyBNYXJp byB0b28uCj4KPiBZZWFoLCBteSBpZGVhIHdhcyB0byBrZWVwIHRoZSBzcGlubG9jaywgYW5kIG9u bHkgcmVwbGFjZSB0aGUgc3R1ZmYgaW4KPiBzdG9yZV92YmxhbmsgYW5kIHRoZSBmZXcgZG8ge30g d2hpbGUgKGN1cl92YmxhbmsgIT0gZ2V0X3ZibGFua19jb3VudGVyKQo+IGxvb3BzLiBFeHRlbmRp bmcgdGhlIHNlcWxvY2sgc3R1ZmYgdG8gZXZlcnl0aGluZyBzZWVtcyBpbmRlZWQgY291bnRlciB0 bwo+IE1hcmlvJ3MgbG9ja2luZyBzY2hlbWUuCj4KPiBTbyBnb2FsIHdvdWxkIGJlIHRvIHJlYWxs eSBqdXN0IHJlcGxhY2UgdGhlIGhhbGYtYmFrZWQgc2VxbG9jayB0aGF0IHdlCj4gaGF2ZSBhbHJl YWR5LCBhbmQgbGVhdmUgYWxsIG90aGVyIGxvY2tpbmcgdW5jaGFuZ2VkLgo+IC1EYW5pZWwKCisx IHRvIHRoYXQsIGZvciBzaW1wbGljaXR5LiBJIHRob3VnaHQgVmlsbGUgYWxyZWFkeSBoYWQgYSBw YXRjaCBsYXlpbmcgCmFyb3VuZCBzb21ld2hlcmUgd2hpY2ggZXNzZW50aWFsbHkgZG9lcyB0aGlz PwoKLW1hcmlvCgo+Cj4+Cj4+Pgo+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Cj4+PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGlu dGVsLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jIHwgMTExICsr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+ICAgaW5jbHVk ZS9kcm0vZHJtUC5oICAgICAgICB8ICAxNCArKy0tLS0KPj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAy NSBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4+PiBp bmRleCAzYzFhNmYxLi5iZmM2YThkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9pcnEuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+Pj4gQEAgLTQyLDEw ICs0Miw2IEBACj4+PiAgICNpbmNsdWRlIDxsaW51eC92Z2FhcmIuaD4KPj4+ICAgI2luY2x1ZGUg PGxpbnV4L2V4cG9ydC5oPgo+Pj4KPj4+IC0vKiBBY2Nlc3MgbWFjcm8gZm9yIHNsb3RzIGluIHZi bGFuayB0aW1lc3RhbXAgcmluZ2J1ZmZlci4gKi8KPj4+IC0jZGVmaW5lIHZibGFua3RpbWVzdGFt cChkZXYsIHBpcGUsIGNvdW50KSBcCj4+PiAtCSgoZGV2KS0+dmJsYW5rW3BpcGVdLnRpbWVbKGNv dW50KSAlIERSTV9WQkxBTktUSU1FX1JCU0laRV0pCj4+PiAtCj4+PiAgIC8qIFJldHJ5IHRpbWVz dGFtcCBjYWxjdWxhdGlvbiB1cCB0byAzIHRpbWVzIHRvIHNhdGlzZnkKPj4+ICAgICogZHJtX3Rp bWVzdGFtcF9wcmVjaXNpb24gYmVmb3JlIGdpdmluZyB1cC4KPj4+ICAgICovCj4+PiBAQCAtODIs MjkgKzc4LDEzIEBAIHN0YXRpYyB2b2lkIHN0b3JlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPj4+ICAgCQkJIHN0cnVjdCB0aW1ldmFsICp0X3ZibGFu aywgdTMyIGxhc3QpCj4+PiAgIHsKPj4+ICAgCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFu ayA9ICZkZXYtPnZibGFua1twaXBlXTsKPj4+IC0JdTMyIHRzbG90Owo+Pj4KPj4+IC0JYXNzZXJ0 X3NwaW5fbG9ja2VkKCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+Pj4gKwlhc3NlcnRfc3Bpbl9s b2NrZWQoJmRldi0+dmJsYW5rX3NlcWxvY2subG9jayk7Cj4+Pgo+Pj4gICAJdmJsYW5rLT5sYXN0 ID0gbGFzdDsKPj4+Cj4+PiAtCS8qIEFsbCB3cml0ZXJzIGhvbGQgdGhlIHNwaW5sb2NrLCBidXQg cmVhZGVycyBhcmUgc2VyaWFsaXplZCBieQo+Pj4gLQkgKiB0aGUgbGF0Y2hpbmcgb2YgdmJsYW5r LT5jb3VudCBiZWxvdy4KPj4+IC0JICovCj4+PiAtCXRzbG90ID0gdmJsYW5rLT5jb3VudCArIHZi bGFua19jb3VudF9pbmM7Cj4+PiAtCXZibGFua3RpbWVzdGFtcChkZXYsIHBpcGUsIHRzbG90KSA9 ICp0X3ZibGFuazsKPj4+IC0KPj4+IC0JLyoKPj4+IC0JICogdmJsYW5rIHRpbWVzdGFtcCB1cGRh dGVzIGFyZSBwcm90ZWN0ZWQgb24gdGhlIHdyaXRlIHNpZGUgd2l0aAo+Pj4gLQkgKiB2Ymxhbmtf dGltZV9sb2NrLCBidXQgb24gdGhlIHJlYWQgc2lkZSBkb25lIGxvY2tsZXNzbHkgdXNpbmcgYQo+ Pj4gLQkgKiBzZXF1ZW5jZS1sb2NrIG9uIHRoZSB2YmxhbmsgY291bnRlci4gRW5zdXJlIGNvcnJl Y3Qgb3JkZXJpbmcgdXNpbmcKPj4+IC0JICogbWVtb3J5IGJhcnJyaWVycy4gV2UgbmVlZCB0aGUg YmFycmllciBib3RoIGJlZm9yZSBhbmQgYWxzbyBhZnRlciB0aGUKPj4+IC0JICogY291bnRlciB1 cGRhdGUgdG8gc3luY2hyb25pemUgd2l0aCB0aGUgbmV4dCB0aW1lc3RhbXAgd3JpdGUuCj4+PiAt CSAqIFRoZSByZWFkLXNpZGUgYmFycmllcnMgZm9yIHRoaXMgYXJlIGluIGRybV92YmxhbmtfY291 bnRfYW5kX3RpbWUuCj4+PiAtCSAqLwo+Pj4gLQlzbXBfd21iKCk7Cj4+PiArCXZibGFuay0+dGlt ZSA9ICp0X3ZibGFuazsKPj4+ICAgCXZibGFuay0+Y291bnQgKz0gdmJsYW5rX2NvdW50X2luYzsK Pj4+IC0Jc21wX3dtYigpOwo+Pj4gICB9Cj4+Pgo+Pj4gICAvKioKPj4+IEBAIC0xMjcsNyArMTA3 LDcgQEAgc3RhdGljIHZvaWQgZHJtX3Jlc2V0X3ZibGFua190aW1lc3RhbXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUKPj4+ICAgCXN0cnVjdCB0aW1ldmFsIHRfdmJs YW5rOwo+Pj4gICAJaW50IGNvdW50ID0gRFJNX1RJTUVTVEFNUF9NQVhSRVRSSUVTOwo+Pj4KPj4+ IC0Jc3Bpbl9sb2NrKCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+Pj4gKwl3cml0ZV9zZXFsb2Nr KCZkZXYtPnZibGFua19zZXFsb2NrKTsKPj4+Cj4+PiAgIAkvKgo+Pj4gICAJICogc2FtcGxlIHRo ZSBjdXJyZW50IGNvdW50ZXIgdG8gYXZvaWQgcmFuZG9tIGp1bXBzCj4+PiBAQCAtMTUyLDcgKzEz Miw3IEBAIHN0YXRpYyB2b2lkIGRybV9yZXNldF92YmxhbmtfdGltZXN0YW1wKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlCj4+PiAgIAkgKi8KPj4+ICAgCXN0b3JlX3Zi bGFuayhkZXYsIHBpcGUsIDEsICZ0X3ZibGFuaywgY3VyX3ZibGFuayk7Cj4+Pgo+Pj4gLQlzcGlu X3VubG9jaygmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKPj4+ICsJd3JpdGVfc2VxdW5sb2NrKCZk ZXYtPnZibGFua19zZXFsb2NrKTsKPj4+ICAgfQo+Pj4KPj4+ICAgLyoqCj4+PiBAQCAtMjA1LDcg KzE4NSw3IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+Pj4gICAJCWNvbnN0IHN0cnVjdCB0aW1l dmFsICp0X29sZDsKPj4+ICAgCQl1NjQgZGlmZl9uczsKPj4+Cj4+PiAtCQl0X29sZCA9ICZ2Ymxh bmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB2YmxhbmstPmNvdW50KTsKPj4+ICsJCXRfb2xkID0gJnZi bGFuay0+dGltZTsKPj4+ICAgCQlkaWZmX25zID0gdGltZXZhbF90b19ucygmdF92YmxhbmspIC0g dGltZXZhbF90b19ucyh0X29sZCk7Cj4+Pgo+Pj4gICAJCS8qCj4+PiBAQCAtMjM5LDQ5ICsyMTks NiBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPj4+ICAgCQlkaWZmID0gMTsKPj4+ICAgCX0KPj4+ Cj4+PiAtCS8qCj4+PiAtCSAqIEZJTVhFOiBOZWVkIHRvIHJlcGxhY2UgdGhpcyBoYWNrIHdpdGgg cHJvcGVyIHNlcWxvY2tzLgo+Pj4gLQkgKgo+Pj4gLQkgKiBSZXN0cmljdCB0aGUgYnVtcCBvZiB0 aGUgc29mdHdhcmUgdmJsYW5rIGNvdW50ZXIgdG8gYSBzYWZlIG1heGltdW0KPj4+IC0JICogdmFs dWUgb2YgKzEgd2hlbmV2ZXIgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRoYXQgY29uY3VycmVu dCByZWFkZXJzCj4+PiAtCSAqIG9mIHZibGFuayB0aW1lc3RhbXBzIGNvdWxkIGJlIGFjdGl2ZSBh dCB0aGUgbW9tZW50LCBhcyB0aGUgY3VycmVudAo+Pj4gLQkgKiBpbXBsZW1lbnRhdGlvbiBvZiB0 aGUgdGltZXN0YW1wIGNhY2hpbmcgYW5kIHVwZGF0aW5nIGlzIG5vdCBzYWZlCj4+PiAtCSAqIGFn YWluc3QgY29uY3VycmVudCByZWFkZXJzIGZvciBjYWxscyB0byBzdG9yZV92YmxhbmsoKSB3aXRo IGEgYnVtcAo+Pj4gLQkgKiBvZiBhbnl0aGluZyBidXQgKzEuIEEgYnVtcCAhPSAxIHdvdWxkIHZl cnkgbGlrZWx5IHJldHVybiBjb3JydXB0ZWQKPj4+IC0JICogdGltZXN0YW1wcyB0byB1c2Vyc3Bh Y2UsIGJlY2F1c2UgdGhlIHNhbWUgc2xvdCBpbiB0aGUgY2FjaGUgY291bGQKPj4+IC0JICogYmUg Y29uY3VycmVudGx5IHdyaXR0ZW4gYnkgc3RvcmVfdmJsYW5rKCkgYW5kIHJlYWQgYnkgb25lIG9m IHRob3NlCj4+PiAtCSAqIHJlYWRlcnMgd2l0aG91dCB0aGUgcmVhZC1yZXRyeSBsb2dpYyBkZXRl Y3RpbmcgdGhlIGNvbGxpc2lvbi4KPj4+IC0JICoKPj4+IC0JICogQ29uY3VycmVudCByZWFkZXJz IGNhbiBleGlzdCB3aGVuIHdlIGFyZSBjYWxsZWQgZnJvbSB0aGUKPj4+IC0JICogZHJtX3ZibGFu a19vZmYoKSBvciBkcm1fdmJsYW5rX29uKCkgZnVuY3Rpb25zIGFuZCBvdGhlciBub24tdmJsYW5r LQo+Pj4gLQkgKiBpcnEgY2FsbGVycy4gSG93ZXZlciwgYWxsIHRob3NlIGNhbGxzIHRvIHVzIGFy ZSBoYXBwZW5pbmcgd2l0aCB0aGUKPj4+IC0JICogdmJsX2xvY2sgbG9ja2VkIHRvIHByZXZlbnQg ZHJtX3ZibGFua19nZXQoKSwgc28gdGhlIHZibGFuayByZWZjb3VudAo+Pj4gLQkgKiBjYW4ndCBp bmNyZWFzZSB3aGlsZSB3ZSBhcmUgZXhlY3V0aW5nLiBUaGVyZWZvcmUgYSB6ZXJvIHJlZmNvdW50 IGF0Cj4+PiAtCSAqIHRoaXMgcG9pbnQgaXMgc2FmZSBmb3IgYXJiaXRyYXJ5IGNvdW50ZXIgYnVt cHMgaWYgd2UgYXJlIGNhbGxlZAo+Pj4gLQkgKiBvdXRzaWRlIHZibGFuayBpcnEsIGEgbm9uLXpl cm8gY291bnQgaXMgbm90IDEwMCUgc2FmZS4gVW5mb3J0dW5hdGVseQo+Pj4gLQkgKiB3ZSBtdXN0 IGFsc28gYWNjZXB0IGEgcmVmY291bnQgb2YgMSwgYXMgd2hlbmV2ZXIgd2UgYXJlIGNhbGxlZCBm cm9tCj4+PiAtCSAqIGRybV92YmxhbmtfZ2V0KCkgLT4gZHJtX3ZibGFua19lbmFibGUoKSB0aGUg cmVmY291bnQgd2lsbCBiZSAxIGFuZAo+Pj4gLQkgKiB3ZSBtdXN0IGxldCB0aGF0IG9uZSBwYXNz IHRocm91Z2ggaW4gb3JkZXIgdG8gbm90IGxvc2UgdmJsYW5rIGNvdW50cwo+Pj4gLQkgKiBkdXJp bmcgdmJsYW5rIGlycSBvZmYgLSB3aGljaCB3b3VsZCBjb21wbGV0ZWx5IGRlZmVhdCB0aGUgd2hv bGUKPj4+IC0JICogcG9pbnQgb2YgdGhpcyByb3V0aW5lLgo+Pj4gLQkgKgo+Pj4gLQkgKiBXaGVu ZXZlciB3ZSBhcmUgY2FsbGVkIGZyb20gdmJsYW5rIGlycSwgd2UgaGF2ZSB0byBhc3N1bWUgY29u Y3VycmVudAo+Pj4gLQkgKiByZWFkZXJzIGV4aXN0IG9yIGNhbiBzaG93IHVwIGFueSB0aW1lIGR1 cmluZyBvdXIgZXhlY3V0aW9uLCBldmVuIGlmCj4+PiAtCSAqIHRoZSByZWZjb3VudCBpcyBjdXJy ZW50bHkgemVybywgYXMgdmJsYW5rIGlycXMgYXJlIHVzdWFsbHkgb25seQo+Pj4gLQkgKiBlbmFi bGVkIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgcmVhZGVycywgYW5kIGJlY2F1c2Ugd2hlbiB3ZSBh cmUgY2FsbGVkCj4+PiAtCSAqIGZyb20gdmJsYW5rIGlycSB3ZSBjYW4ndCBob2xkIHRoZSB2Ymxf bG9jayB0byBwcm90ZWN0IHVzIGZyb20gc3VkZGVuCj4+PiAtCSAqIGJ1bXBzIGluIHZibGFuayBy ZWZjb3VudC4gVGhlcmVmb3JlIGFsc28gcmVzdHJpY3QgYnVtcHMgdG8gKzEgd2hlbgo+Pj4gLQkg KiBjYWxsZWQgZnJvbSB2YmxhbmsgaXJxLgo+Pj4gLQkgKi8KPj4+IC0JaWYgKChkaWZmID4gMSkg JiYgKGF0b21pY19yZWFkKCZ2YmxhbmstPnJlZmNvdW50KSA+IDEgfHwKPj4+IC0JICAgIChmbGFn cyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpKSkgewo+Pj4gLQkJRFJNX0RFQlVHX1ZCTCgiY2xh bXBpbmcgdmJsYW5rIGJ1bXAgdG8gMSBvbiBjcnRjICV1OiBkaWZmcj0ldSAiCj4+PiAtCQkJICAg ICAgInJlZmNvdW50ICV1LCB2YmxpcnEgJXVcbiIsIHBpcGUsIGRpZmYsCj4+PiAtCQkJICAgICAg YXRvbWljX3JlYWQoJnZibGFuay0+cmVmY291bnQpLAo+Pj4gLQkJCSAgICAgIChmbGFncyAmIERS TV9DQUxMRURfRlJPTV9WQkxJUlEpICE9IDApOwo+Pj4gLQkJZGlmZiA9IDE7Cj4+PiAtCX0KPj4+ IC0KPj4+ICAgCURSTV9ERUJVR19WQkwoInVwZGF0aW5nIHZibGFuayBjb3VudCBvbiBjcnRjICV1 OiIKPj4+ICAgCQkgICAgICAiIGN1cnJlbnQ9JXUsIGRpZmY9JXUsIGh3PSV1IGh3X2xhc3Q9JXVc biIsCj4+PiAgIAkJICAgICAgcGlwZSwgdmJsYW5rLT5jb3VudCwgZGlmZiwgY3VyX3ZibGFuaywg dmJsYW5rLT5sYXN0KTsKPj4+IEBAIC0zMTgsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5r X2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBp cGUpCj4+PiAgIAkgKiBzbyBubyB1cGRhdGVzIG9mIHRpbWVzdGFtcHMgb3IgY291bnQgY2FuIGhh cHBlbiBhZnRlciB3ZSd2ZQo+Pj4gICAJICogZGlzYWJsZWQuIE5lZWRlZCB0byBwcmV2ZW50IHJh Y2VzIGluIGNhc2Ugb2YgZGVsYXllZCBpcnEncy4KPj4+ICAgCSAqLwo+Pj4gLQlzcGluX2xvY2tf aXJxc2F2ZSgmZGV2LT52YmxhbmtfdGltZV9sb2NrLCBpcnFmbGFncyk7Cj4+PiArCXdyaXRlX3Nl cWxvY2tfaXJxc2F2ZSgmZGV2LT52Ymxhbmtfc2VxbG9jaywgaXJxZmxhZ3MpOwo+Pj4KPj4+ICAg CS8qCj4+PiAgIAkgKiBPbmx5IGRpc2FibGUgdmJsYW5rIGludGVycnVwdHMgaWYgdGhleSdyZSBl bmFibGVkLiBUaGlzIGF2b2lkcwo+Pj4gQEAgLTMzOCw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCB2 YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQgcGlwZSkKPj4+ICAgCSAqLwo+Pj4gICAJZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoZGV2LCBw aXBlLCAwKTsKPj4+Cj4+PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsYW5rX3Rp bWVfbG9jaywgaXJxZmxhZ3MpOwo+Pj4gKwl3cml0ZV9zZXF1bmxvY2tfaXJxcmVzdG9yZSgmZGV2 LT52Ymxhbmtfc2VxbG9jaywgaXJxZmxhZ3MpOwo+Pj4gICB9Cj4+Pgo+Pj4gICBzdGF0aWMgdm9p ZCB2YmxhbmtfZGlzYWJsZV9mbih1bnNpZ25lZCBsb25nIGFyZykKPj4+IEBAIC00MDQsNyArMzQx LDcgQEAgaW50IGRybV92YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBpbnQgbnVtX2NydGNzKQo+Pj4gICAJdW5zaWduZWQgaW50IGk7Cj4+Pgo+Pj4gICAJc3Bpbl9s b2NrX2luaXQoJmRldi0+dmJsX2xvY2spOwo+Pj4gLQlzcGluX2xvY2tfaW5pdCgmZGV2LT52Ymxh bmtfdGltZV9sb2NrKTsKPj4+ICsJc2VxbG9ja19pbml0KCZkZXYtPnZibGFua19zZXFsb2NrKTsK Pj4+Cj4+PiAgIAlkZXYtPm51bV9jcnRjcyA9IG51bV9jcnRjczsKPj4+Cj4+PiBAQCAtOTkxLDI1 ICs5MjgsMTkgQEAgdTMyIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4+PiAgIAkJCSAgICAgIHN0cnVjdCB0aW1ldmFs ICp2Ymxhbmt0aW1lKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2Ymxh bmsgPSAmZGV2LT52YmxhbmtbcGlwZV07Cj4+PiAtCWludCBjb3VudCA9IERSTV9USU1FU1RBTVBf TUFYUkVUUklFUzsKPj4+IC0JdTMyIGN1cl92Ymxhbms7Cj4+PiArCXUzMiB2YmxhbmtfY291bnQ7 Cj4+PiArCXVuc2lnbmVkIGludCBzZXE7Cj4+Pgo+Pj4gICAJaWYgKFdBUk5fT04ocGlwZSA+PSBk ZXYtPm51bV9jcnRjcykpCj4+PiAgIAkJcmV0dXJuIDA7Cj4+Pgo+Pj4gLQkvKgo+Pj4gLQkgKiBW YmxhbmsgdGltZXN0YW1wcyBhcmUgcmVhZCBsb2NrbGVzcy4gVG8gZW5zdXJlIGNvbnNpc3RlbmN5 IHRoZSB2YmxhbmsKPj4+IC0JICogY291bnRlciBpcyByZWNoZWNrZWQgYW5kIG9yZGVyaW5nIGlz IGVuc3VyZWQgdXNpbmcgbWVtb3J5IGJhcnJpZXJzLgo+Pj4gLQkgKiBUaGlzIHdvcmtzIGxpa2Ug YSBzZXFsb2NrLiBUaGUgd3JpdGUtc2lkZSBiYXJyaWVycyBhcmUgaW4gc3RvcmVfdmJsYW5rLgo+ Pj4gLQkgKi8KPj4+ICAgCWRvIHsKPj4+IC0JCWN1cl92YmxhbmsgPSB2YmxhbmstPmNvdW50Owo+ Pj4gLQkJc21wX3JtYigpOwo+Pj4gLQkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2 LCBwaXBlLCBjdXJfdmJsYW5rKTsKPj4+IC0JCXNtcF9ybWIoKTsKPj4+IC0JfSB3aGlsZSAoY3Vy X3ZibGFuayAhPSB2YmxhbmstPmNvdW50ICYmIC0tY291bnQgPiAwKTsKPj4+ICsJCXNlcSA9IHJl YWRfc2VxYmVnaW4oJmRldi0+dmJsYW5rX3NlcWxvY2spOwo+Pj4gKwkJdmJsYW5rX2NvdW50ID0g dmJsYW5rLT5jb3VudDsKPj4+ICsJCSp2Ymxhbmt0aW1lID0gdmJsYW5rLT50aW1lOwo+Pj4gKwl9 IHdoaWxlIChyZWFkX3NlcXJldHJ5KCZkZXYtPnZibGFua19zZXFsb2NrLCBzZXEpKTsKPj4+Cj4+ PiAtCXJldHVybiBjdXJfdmJsYW5rOwo+Pj4gKwlyZXR1cm4gdmJsYW5rX2NvdW50Owo+Pj4gICB9 Cj4+PiAgIEVYUE9SVF9TWU1CT0woZHJtX3ZibGFua19jb3VudF9hbmRfdGltZSk7Cj4+Pgo+Pj4g QEAgLTExNjAsMTEgKzEwOTEsMTEgQEAgc3RhdGljIGludCBkcm1fdmJsYW5rX2VuYWJsZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPj4+Cj4+PiAgIAlhc3NlcnRf c3Bpbl9sb2NrZWQoJmRldi0+dmJsX2xvY2spOwo+Pj4KPj4+IC0Jc3Bpbl9sb2NrKCZkZXYtPnZi bGFua190aW1lX2xvY2spOwo+Pj4gKwl3cml0ZV9zZXFsb2NrKCZkZXYtPnZibGFua19zZXFsb2Nr KTsKPj4+Cj4+PiAgIAlpZiAoIXZibGFuay0+ZW5hYmxlZCkgewo+Pj4gICAJCS8qCj4+PiAtCQkg KiBFbmFibGUgdmJsYW5rIGlycXMgdW5kZXIgdmJsYW5rX3RpbWVfbG9jayBwcm90ZWN0aW9uLgo+ Pj4gKwkJICogRW5hYmxlIHZibGFuayBpcnFzIHVuZGVyIHZibGFua19zZXFsb2NrIHByb3RlY3Rp b24uCj4+PiAgIAkJICogQWxsIHZibGFuayBjb3VudCAmIHRpbWVzdGFtcCB1cGRhdGVzIGFyZSBo ZWxkIG9mZgo+Pj4gICAJCSAqIHVudGlsIHdlIGFyZSBkb25lIHJlaW5pdGlhbGl6aW5nIG1hc3Rl ciBjb3VudGVyIGFuZAo+Pj4gICAJCSAqIHRpbWVzdGFtcHMuIEZpbHRlcmNvZGUgaW4gZHJtX2hh bmRsZV92YmxhbmsoKSB3aWxsCj4+PiBAQCAtMTE4MCw3ICsxMTExLDcgQEAgc3RhdGljIGludCBk cm1fdmJsYW5rX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlw ZSkKPj4+ICAgCQl9Cj4+PiAgIAl9Cj4+Pgo+Pj4gLQlzcGluX3VubG9jaygmZGV2LT52Ymxhbmtf dGltZV9sb2NrKTsKPj4+ICsJd3JpdGVfc2VxdW5sb2NrKCZkZXYtPnZibGFua19zZXFsb2NrKTsK Pj4+Cj4+PiAgIAlyZXR1cm4gcmV0Owo+Pj4gICB9Cj4+PiBAQCAtMTg4MCwxOCArMTgxMSwxOCBA QCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlKQo+Pj4gICAJICogdmJsYW5rIGVuYWJsZS9kaXNhYmxlLCBhcyB0aGlzIHdvdWxk IGNhdXNlIGluY29uc2lzdGVudAo+Pj4gICAJICogb3IgY29ycnVwdGVkIHRpbWVzdGFtcHMgYW5k IHZibGFuayBjb3VudHMuCj4+PiAgIAkgKi8KPj4+IC0Jc3Bpbl9sb2NrKCZkZXYtPnZibGFua190 aW1lX2xvY2spOwo+Pj4gKwl3cml0ZV9zZXFsb2NrKCZkZXYtPnZibGFua19zZXFsb2NrKTsKPj4+ Cj4+PiAgIAkvKiBWYmxhbmsgaXJxIGhhbmRsaW5nIGRpc2FibGVkLiBOb3RoaW5nIHRvIGRvLiAq Lwo+Pj4gICAJaWYgKCF2YmxhbmstPmVuYWJsZWQpIHsKPj4+IC0JCXNwaW5fdW5sb2NrKCZkZXYt PnZibGFua190aW1lX2xvY2spOwo+Pj4gKwkJd3JpdGVfc2VxdW5sb2NrKCZkZXYtPnZibGFua19z ZXFsb2NrKTsKPj4+ICAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ss IGlycWZsYWdzKTsKPj4+ICAgCQlyZXR1cm4gZmFsc2U7Cj4+PiAgIAl9Cj4+Pgo+Pj4gICAJZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoZGV2LCBwaXBlLCBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRKTsK Pj4+Cj4+PiAtCXNwaW5fdW5sb2NrKCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+Pj4gKwl3cml0 ZV9zZXF1bmxvY2soJmRldi0+dmJsYW5rX3NlcWxvY2spOwo+Pj4KPj4+ICAgCXdha2VfdXAoJnZi bGFuay0+cXVldWUpOwo+Pj4gICAJZHJtX2hhbmRsZV92YmxhbmtfZXZlbnRzKGRldiwgcGlwZSk7 Cj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5o Cj4+PiBpbmRleCAzNjBiMmE3Li44YmVlNDI0IDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtUC5oCj4+PiArKysgYi9pbmNsdWRlL2RybS9kcm1QLmgKPj4+IEBAIC01Miw2ICs1Miw3IEBA Cj4+PiAgICNpbmNsdWRlIDxsaW51eC9wb2xsLmg+Cj4+PiAgICNpbmNsdWRlIDxsaW51eC9yYXRl bGltaXQuaD4KPj4+ICAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4+PiArI2luY2x1ZGUgPGxp bnV4L3NlcWxvY2suaD4KPj4+ICAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4+ICAgI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+PiAgICNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+Cj4+PiBA QCAtMzkyLDExICszOTMsNiBAQCBzdHJ1Y3QgZHJtX21hc3RlciB7Cj4+PiAgIAl2b2lkICpkcml2 ZXJfcHJpdjsKPj4+ICAgfTsKPj4+Cj4+PiAtLyogU2l6ZSBvZiByaW5nYnVmZmVyIGZvciB2Ymxh bmsgdGltZXN0YW1wcy4gSnVzdCBkb3VibGUtYnVmZmVyCj4+PiAtICogaW4gaW5pdGlhbCBpbXBs ZW1lbnRhdGlvbi4KPj4+IC0gKi8KPj4+IC0jZGVmaW5lIERSTV9WQkxBTktUSU1FX1JCU0laRSAy Cj4+PiAtCj4+PiAgIC8qIEZsYWdzIGFuZCByZXR1cm4gY29kZXMgZm9yIGdldF92YmxhbmtfdGlt ZXN0YW1wKCkgZHJpdmVyIGZ1bmN0aW9uLiAqLwo+Pj4gICAjZGVmaW5lIERSTV9DQUxMRURfRlJP TV9WQkxJUlEgMQo+Pj4gICAjZGVmaW5lIERSTV9WQkxBTktUSU1FX1NDQU5PVVRQT1NfTUVUSE9E ICgxIDw8IDApCj4+PiBAQCAtNzI1LDEwICs3MjEsOCBAQCBzdHJ1Y3QgZHJtX3ZibGFua19jcnRj IHsKPj4+ICAgCXdhaXRfcXVldWVfaGVhZF90IHF1ZXVlOwkvKio8IFZCTEFOSyB3YWl0IHF1ZXVl ICovCj4+PiAgIAlzdHJ1Y3QgdGltZXJfbGlzdCBkaXNhYmxlX3RpbWVyOwkJLyogZGVsYXllZCBk aXNhYmxlIHRpbWVyICovCj4+Pgo+Pj4gLQkvKiB2YmxhbmsgY291bnRlciwgcHJvdGVjdGVkIGJ5 IGRldi0+dmJsYW5rX3RpbWVfbG9jayBmb3Igd3JpdGVzICovCj4+PiAtCXUzMiBjb3VudDsKPj4+ IC0JLyogdmJsYW5rIHRpbWVzdGFtcHMsIHByb3RlY3RlZCBieSBkZXYtPnZibGFua190aW1lX2xv Y2sgZm9yIHdyaXRlcyAqLwo+Pj4gLQlzdHJ1Y3QgdGltZXZhbCB0aW1lW0RSTV9WQkxBTktUSU1F X1JCU0laRV07Cj4+PiArCXUzMiBjb3VudDsJCQkvKiB2YmxhbmsgY291bnRlciwgcHJvdGVjdGVk IGJ5IGRldi0+dmJsYW5rX3NlcWxvY2sgKi8KPj4+ICsJc3RydWN0IHRpbWV2YWwgdGltZTsJCS8q IHZibGFuayB0aW1lc3RhbXAsIHByb3RlY3RlZCBieSBkZXYtPnZibGFua19zZXFsb2NrICovCj4+ Pgo+Pj4gICAJYXRvbWljX3QgcmVmY291bnQ7CQkvKiBudW1iZXIgb2YgdXNlcnMgb2YgdmJsYW5r IGludGVycnVwdHNwZXIgY3J0YyAqLwo+Pj4gICAJdTMyIGxhc3Q7CQkJLyogcHJvdGVjdGVkIGJ5 IGRldi0+dmJsX2xvY2ssIHVzZWQgKi8KPj4+IEBAIC04MzUsNyArODI5LDcgQEAgc3RydWN0IGRy bV9kZXZpY2Ugewo+Pj4gICAJLyogYXJyYXkgb2Ygc2l6ZSBudW1fY3J0Y3MgKi8KPj4+ICAgCXN0 cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuazsKPj4+Cj4+PiAtCXNwaW5sb2NrX3QgdmJsYW5r X3RpbWVfbG9jazsgICAgLyoqPCBQcm90ZWN0cyB2YmxhbmsgY291bnQgYW5kIHRpbWUgdXBkYXRl cyBkdXJpbmcgdmJsYW5rIGVuYWJsZS9kaXNhYmxlICovCj4+PiArCXNlcWxvY2tfdCB2Ymxhbmtf c2VxbG9jazsJLyoqPCBQcm90ZWN0cyB2YmxhbmsgY291bnQgYW5kIHRpbWUgdXBkYXRlcyBkdXJp bmcgdmJsYW5rIGVuYWJsZS9kaXNhYmxlICovCj4+PiAgIAlzcGlubG9ja190IHZibF9sb2NrOwo+ Pj4KPj4+ICAgCXUzMiBtYXhfdmJsYW5rX2NvdW50OyAgICAgICAgICAgLyoqPCBzaXplIG9mIHZi bGFuayBjb3VudGVyIHJlZ2lzdGVyICovCj4+PiAtLQo+Pj4gMi40LjExCj4+Cj4+IC0tCj4+IFZp bGxlIFN5cmrDpGzDpAo+PiBJbnRlbCBPVEMKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+PiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==