From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm: use seqlocks for vblank time/count Date: Mon, 9 May 2016 20:16:07 +0300 Message-ID: <20160509171607.GP4329@intel.com> References: <1462810123-28493-1-git-send-email-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1462810123-28493-1-git-send-email-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Matthew Auld Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDksIDIwMTYgYXQgMDU6MDg6NDNQTSArMDEwMCwgTWF0dGhldyBBdWxkIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWltcyB0byByZXBsYWNlIHRoZSByb2xsLXlvdXItb3duIHNlcWxv Y2sgaW1wbGVtZW50YXRpb24gd2l0aAo+IGZ1bGwtYmxvd24gc2VxbG9jaycuIFdlIGFsc28gcmVt b3ZlIHRoZSB0aW1lc3RhbXAgcmluZy1idWZmZXIgaW4gZmF2b3VyCj4gb2Ygc2luZ2xlIHRpbWVz dGFtcC9jb3VudCBwYWlyIHByb3RlY3RlZCBieSBhIHNlcWxvY2suIEluIHR1cm4gdGhpcwo+IG1l YW5zIHdlIGNhbiBub3cgaW5jcmVtZW50IHRoZSB2YmxhbmsgZnJlZWx5IHdpdGhvdXQgdGhlIG5l ZWQgZm9yCj4gY2xhbXBpbmcuCgpUaGlzIHdpbGwgYWxzbyBjaGFuZ2UgdGhlIGJlaGF2aW91ciB0 byBibG9jayBuZXcgcmVhZGVycyB3aGlsZSB0aGUKd3JpdGVyIGhhcyB0aGUgbG9jaywgd2hlcmVh cyB0aGUgb2xkIGNvZGUgd291bGQgYWxsb3cgcmVhZGVycyB0bwpwcm9jZWVkIGluIHBhcmFsbGVs LiBXZSBkbyB0aGUgd2hvbGUgaHcgY291bnRlciArIHNjYW5vdXQgcG9zaXRpb24KcXVlcnkgd2hp bGUgaG9sZGluZyB0aGUgbG9jayBzbyBpdCdzIG5vdCBleGFjdGx5IHplcm8gYW1vdW50IG9mIHdv cmssCmJ1dCBJJ20gbm90IHN1cmUgdGhhdCdzIGEgcmVhbCBwcm9ibGVtLgoKSSBndWVzcyB3ZSBj b3VsZCByZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBzZXFsb2NrLCBidXQgdGhlbiBtYXliZSB3ZSdk Cm5lZWQgdG8ga2VlcCB0aGUgdmJsYW5rX3RpbWVfbG9jayBzcGlubG9jayBhcyB3ZWxsLiBUaGUg ZGV0YWlscyBlc2NhcGUKbWUgbm93LCBzbyBJJ2QgaGF2ZSByZS1yZWFkIHRoZSBjb2RlIGFnYWlu LgoKQ2NpbmcgTWFyaW8gdG9vLgoKPiAKPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBmZndsbC5jaD4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgfCAxMTEgKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2RybS9kcm1Q LmggICAgICAgIHwgIDE0ICsrLS0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMo KyksIDEwMCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPiBpbmRleCAzYzFhNmYxLi5iZmM2 YThkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4gQEAgLTQyLDEwICs0Miw2IEBACj4gICNpbmNsdWRlIDxs aW51eC92Z2FhcmIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ICAKPiAtLyogQWNj ZXNzIG1hY3JvIGZvciBzbG90cyBpbiB2YmxhbmsgdGltZXN0YW1wIHJpbmdidWZmZXIuICovCj4g LSNkZWZpbmUgdmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwgY291bnQpIFwKPiAtCSgoZGV2KS0+ dmJsYW5rW3BpcGVdLnRpbWVbKGNvdW50KSAlIERSTV9WQkxBTktUSU1FX1JCU0laRV0pCj4gLQo+ ICAvKiBSZXRyeSB0aW1lc3RhbXAgY2FsY3VsYXRpb24gdXAgdG8gMyB0aW1lcyB0byBzYXRpc2Z5 Cj4gICAqIGRybV90aW1lc3RhbXBfcHJlY2lzaW9uIGJlZm9yZSBnaXZpbmcgdXAuCj4gICAqLwo+ IEBAIC04MiwyOSArNzgsMTMgQEAgc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ICAJCQkgc3RydWN0IHRpbWV2YWwgKnRf dmJsYW5rLCB1MzIgbGFzdCkKPiAgewo+ICAJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+IC0JdTMyIHRzbG90Owo+ICAKPiAtCWFzc2VydF9zcGlu X2xvY2tlZCgmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKPiArCWFzc2VydF9zcGluX2xvY2tlZCgm ZGV2LT52Ymxhbmtfc2VxbG9jay5sb2NrKTsKPiAgCj4gIAl2YmxhbmstPmxhc3QgPSBsYXN0Owo+ ICAKPiAtCS8qIEFsbCB3cml0ZXJzIGhvbGQgdGhlIHNwaW5sb2NrLCBidXQgcmVhZGVycyBhcmUg c2VyaWFsaXplZCBieQo+IC0JICogdGhlIGxhdGNoaW5nIG9mIHZibGFuay0+Y291bnQgYmVsb3cu Cj4gLQkgKi8KPiAtCXRzbG90ID0gdmJsYW5rLT5jb3VudCArIHZibGFua19jb3VudF9pbmM7Cj4g LQl2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB0c2xvdCkgPSAqdF92Ymxhbms7Cj4gLQo+IC0J LyoKPiAtCSAqIHZibGFuayB0aW1lc3RhbXAgdXBkYXRlcyBhcmUgcHJvdGVjdGVkIG9uIHRoZSB3 cml0ZSBzaWRlIHdpdGgKPiAtCSAqIHZibGFua190aW1lX2xvY2ssIGJ1dCBvbiB0aGUgcmVhZCBz aWRlIGRvbmUgbG9ja2xlc3NseSB1c2luZyBhCj4gLQkgKiBzZXF1ZW5jZS1sb2NrIG9uIHRoZSB2 YmxhbmsgY291bnRlci4gRW5zdXJlIGNvcnJlY3Qgb3JkZXJpbmcgdXNpbmcKPiAtCSAqIG1lbW9y eSBiYXJycmllcnMuIFdlIG5lZWQgdGhlIGJhcnJpZXIgYm90aCBiZWZvcmUgYW5kIGFsc28gYWZ0 ZXIgdGhlCj4gLQkgKiBjb3VudGVyIHVwZGF0ZSB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBuZXh0 IHRpbWVzdGFtcCB3cml0ZS4KPiAtCSAqIFRoZSByZWFkLXNpZGUgYmFycmllcnMgZm9yIHRoaXMg YXJlIGluIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUuCj4gLQkgKi8KPiAtCXNtcF93bWIoKTsK PiArCXZibGFuay0+dGltZSA9ICp0X3ZibGFuazsKPiAgCXZibGFuay0+Y291bnQgKz0gdmJsYW5r X2NvdW50X2luYzsKPiAtCXNtcF93bWIoKTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTEyNyw3ICsx MDcsNyBAQCBzdGF0aWMgdm9pZCBkcm1fcmVzZXRfdmJsYW5rX3RpbWVzdGFtcChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZQo+ICAJc3RydWN0IHRpbWV2YWwgdF92Ymxh bms7Cj4gIAlpbnQgY291bnQgPSBEUk1fVElNRVNUQU1QX01BWFJFVFJJRVM7Cj4gIAo+IC0Jc3Bp bl9sb2NrKCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+ICsJd3JpdGVfc2VxbG9jaygmZGV2LT52 Ymxhbmtfc2VxbG9jayk7Cj4gIAo+ICAJLyoKPiAgCSAqIHNhbXBsZSB0aGUgY3VycmVudCBjb3Vu dGVyIHRvIGF2b2lkIHJhbmRvbSBqdW1wcwo+IEBAIC0xNTIsNyArMTMyLDcgQEAgc3RhdGljIHZv aWQgZHJtX3Jlc2V0X3ZibGFua190aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUKPiAgCSAqLwo+ICAJc3RvcmVfdmJsYW5rKGRldiwgcGlwZSwgMSwgJnRf dmJsYW5rLCBjdXJfdmJsYW5rKTsKPiAgCj4gLQlzcGluX3VubG9jaygmZGV2LT52YmxhbmtfdGlt ZV9sb2NrKTsKPiArCXdyaXRlX3NlcXVubG9jaygmZGV2LT52Ymxhbmtfc2VxbG9jayk7Cj4gIH0K PiAgCj4gIC8qKgo+IEBAIC0yMDUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92 YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4g IAkJY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRfb2xkOwo+ICAJCXU2NCBkaWZmX25zOwo+ICAKPiAt CQl0X29sZCA9ICZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB2YmxhbmstPmNvdW50KTsKPiAr CQl0X29sZCA9ICZ2YmxhbmstPnRpbWU7Cj4gIAkJZGlmZl9ucyA9IHRpbWV2YWxfdG9fbnMoJnRf dmJsYW5rKSAtIHRpbWV2YWxfdG9fbnModF9vbGQpOwo+ICAKPiAgCQkvKgo+IEBAIC0yMzksNDkg KzIxOSw2IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ICAJCWRpZmYgPSAxOwo+ICAJfQo+ICAK PiAtCS8qCj4gLQkgKiBGSU1YRTogTmVlZCB0byByZXBsYWNlIHRoaXMgaGFjayB3aXRoIHByb3Bl ciBzZXFsb2Nrcy4KPiAtCSAqCj4gLQkgKiBSZXN0cmljdCB0aGUgYnVtcCBvZiB0aGUgc29mdHdh cmUgdmJsYW5rIGNvdW50ZXIgdG8gYSBzYWZlIG1heGltdW0KPiAtCSAqIHZhbHVlIG9mICsxIHdo ZW5ldmVyIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGNvbmN1cnJlbnQgcmVhZGVycwo+ IC0JICogb2YgdmJsYW5rIHRpbWVzdGFtcHMgY291bGQgYmUgYWN0aXZlIGF0IHRoZSBtb21lbnQs IGFzIHRoZSBjdXJyZW50Cj4gLQkgKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGltZXN0YW1wIGNh Y2hpbmcgYW5kIHVwZGF0aW5nIGlzIG5vdCBzYWZlCj4gLQkgKiBhZ2FpbnN0IGNvbmN1cnJlbnQg cmVhZGVycyBmb3IgY2FsbHMgdG8gc3RvcmVfdmJsYW5rKCkgd2l0aCBhIGJ1bXAKPiAtCSAqIG9m IGFueXRoaW5nIGJ1dCArMS4gQSBidW1wICE9IDEgd291bGQgdmVyeSBsaWtlbHkgcmV0dXJuIGNv cnJ1cHRlZAo+IC0JICogdGltZXN0YW1wcyB0byB1c2Vyc3BhY2UsIGJlY2F1c2UgdGhlIHNhbWUg c2xvdCBpbiB0aGUgY2FjaGUgY291bGQKPiAtCSAqIGJlIGNvbmN1cnJlbnRseSB3cml0dGVuIGJ5 IHN0b3JlX3ZibGFuaygpIGFuZCByZWFkIGJ5IG9uZSBvZiB0aG9zZQo+IC0JICogcmVhZGVycyB3 aXRob3V0IHRoZSByZWFkLXJldHJ5IGxvZ2ljIGRldGVjdGluZyB0aGUgY29sbGlzaW9uLgo+IC0J ICoKPiAtCSAqIENvbmN1cnJlbnQgcmVhZGVycyBjYW4gZXhpc3Qgd2hlbiB3ZSBhcmUgY2FsbGVk IGZyb20gdGhlCj4gLQkgKiBkcm1fdmJsYW5rX29mZigpIG9yIGRybV92Ymxhbmtfb24oKSBmdW5j dGlvbnMgYW5kIG90aGVyIG5vbi12YmxhbmstCj4gLQkgKiBpcnEgY2FsbGVycy4gSG93ZXZlciwg YWxsIHRob3NlIGNhbGxzIHRvIHVzIGFyZSBoYXBwZW5pbmcgd2l0aCB0aGUKPiAtCSAqIHZibF9s b2NrIGxvY2tlZCB0byBwcmV2ZW50IGRybV92YmxhbmtfZ2V0KCksIHNvIHRoZSB2YmxhbmsgcmVm Y291bnQKPiAtCSAqIGNhbid0IGluY3JlYXNlIHdoaWxlIHdlIGFyZSBleGVjdXRpbmcuIFRoZXJl Zm9yZSBhIHplcm8gcmVmY291bnQgYXQKPiAtCSAqIHRoaXMgcG9pbnQgaXMgc2FmZSBmb3IgYXJi aXRyYXJ5IGNvdW50ZXIgYnVtcHMgaWYgd2UgYXJlIGNhbGxlZAo+IC0JICogb3V0c2lkZSB2Ymxh bmsgaXJxLCBhIG5vbi16ZXJvIGNvdW50IGlzIG5vdCAxMDAlIHNhZmUuIFVuZm9ydHVuYXRlbHkK PiAtCSAqIHdlIG11c3QgYWxzbyBhY2NlcHQgYSByZWZjb3VudCBvZiAxLCBhcyB3aGVuZXZlciB3 ZSBhcmUgY2FsbGVkIGZyb20KPiAtCSAqIGRybV92YmxhbmtfZ2V0KCkgLT4gZHJtX3ZibGFua19l bmFibGUoKSB0aGUgcmVmY291bnQgd2lsbCBiZSAxIGFuZAo+IC0JICogd2UgbXVzdCBsZXQgdGhh dCBvbmUgcGFzcyB0aHJvdWdoIGluIG9yZGVyIHRvIG5vdCBsb3NlIHZibGFuayBjb3VudHMKPiAt CSAqIGR1cmluZyB2YmxhbmsgaXJxIG9mZiAtIHdoaWNoIHdvdWxkIGNvbXBsZXRlbHkgZGVmZWF0 IHRoZSB3aG9sZQo+IC0JICogcG9pbnQgb2YgdGhpcyByb3V0aW5lLgo+IC0JICoKPiAtCSAqIFdo ZW5ldmVyIHdlIGFyZSBjYWxsZWQgZnJvbSB2YmxhbmsgaXJxLCB3ZSBoYXZlIHRvIGFzc3VtZSBj b25jdXJyZW50Cj4gLQkgKiByZWFkZXJzIGV4aXN0IG9yIGNhbiBzaG93IHVwIGFueSB0aW1lIGR1 cmluZyBvdXIgZXhlY3V0aW9uLCBldmVuIGlmCj4gLQkgKiB0aGUgcmVmY291bnQgaXMgY3VycmVu dGx5IHplcm8sIGFzIHZibGFuayBpcnFzIGFyZSB1c3VhbGx5IG9ubHkKPiAtCSAqIGVuYWJsZWQg ZHVlIHRvIHRoZSBwcmVzZW5jZSBvZiByZWFkZXJzLCBhbmQgYmVjYXVzZSB3aGVuIHdlIGFyZSBj YWxsZWQKPiAtCSAqIGZyb20gdmJsYW5rIGlycSB3ZSBjYW4ndCBob2xkIHRoZSB2YmxfbG9jayB0 byBwcm90ZWN0IHVzIGZyb20gc3VkZGVuCj4gLQkgKiBidW1wcyBpbiB2YmxhbmsgcmVmY291bnQu IFRoZXJlZm9yZSBhbHNvIHJlc3RyaWN0IGJ1bXBzIHRvICsxIHdoZW4KPiAtCSAqIGNhbGxlZCBm cm9tIHZibGFuayBpcnEuCj4gLQkgKi8KPiAtCWlmICgoZGlmZiA+IDEpICYmIChhdG9taWNfcmVh ZCgmdmJsYW5rLT5yZWZjb3VudCkgPiAxIHx8Cj4gLQkgICAgKGZsYWdzICYgRFJNX0NBTExFRF9G Uk9NX1ZCTElSUSkpKSB7Cj4gLQkJRFJNX0RFQlVHX1ZCTCgiY2xhbXBpbmcgdmJsYW5rIGJ1bXAg dG8gMSBvbiBjcnRjICV1OiBkaWZmcj0ldSAiCj4gLQkJCSAgICAgICJyZWZjb3VudCAldSwgdmJs aXJxICV1XG4iLCBwaXBlLCBkaWZmLAo+IC0JCQkgICAgICBhdG9taWNfcmVhZCgmdmJsYW5rLT5y ZWZjb3VudCksCj4gLQkJCSAgICAgIChmbGFncyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpICE9 IDApOwo+IC0JCWRpZmYgPSAxOwo+IC0JfQo+IC0KPiAgCURSTV9ERUJVR19WQkwoInVwZGF0aW5n IHZibGFuayBjb3VudCBvbiBjcnRjICV1OiIKPiAgCQkgICAgICAiIGN1cnJlbnQ9JXUsIGRpZmY9 JXUsIGh3PSV1IGh3X2xhc3Q9JXVcbiIsCj4gIAkJICAgICAgcGlwZSwgdmJsYW5rLT5jb3VudCwg ZGlmZiwgY3VyX3ZibGFuaywgdmJsYW5rLT5sYXN0KTsKPiBAQCAtMzE4LDcgKzI1NSw3IEBAIHN0 YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlKQo+ICAJICogc28gbm8gdXBkYXRlcyBvZiB0aW1lc3RhbXBzIG9y IGNvdW50IGNhbiBoYXBwZW4gYWZ0ZXIgd2UndmUKPiAgCSAqIGRpc2FibGVkLiBOZWVkZWQgdG8g cHJldmVudCByYWNlcyBpbiBjYXNlIG9mIGRlbGF5ZWQgaXJxJ3MuCj4gIAkgKi8KPiAtCXNwaW5f bG9ja19pcnFzYXZlKCZkZXYtPnZibGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKPiArCXdyaXRl X3NlcWxvY2tfaXJxc2F2ZSgmZGV2LT52Ymxhbmtfc2VxbG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAg CS8qCj4gIAkgKiBPbmx5IGRpc2FibGUgdmJsYW5rIGludGVycnVwdHMgaWYgdGhleSdyZSBlbmFi bGVkLiBUaGlzIGF2b2lkcwo+IEBAIC0zMzgsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5r X2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBp cGUpCj4gIAkgKi8KPiAgCWRybV91cGRhdGVfdmJsYW5rX2NvdW50KGRldiwgcGlwZSwgMCk7Cj4g IAo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxhbmtfdGltZV9sb2NrLCBpcnFm bGFncyk7Cj4gKwl3cml0ZV9zZXF1bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52Ymxhbmtfc2VxbG9j aywgaXJxZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9mbih1 bnNpZ25lZCBsb25nIGFyZykKPiBAQCAtNDA0LDcgKzM0MSw3IEBAIGludCBkcm1fdmJsYW5rX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG51bV9jcnRjcykKPiAgCXVu c2lnbmVkIGludCBpOwo+ICAKPiAgCXNwaW5fbG9ja19pbml0KCZkZXYtPnZibF9sb2NrKTsKPiAt CXNwaW5fbG9ja19pbml0KCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+ICsJc2VxbG9ja19pbml0 KCZkZXYtPnZibGFua19zZXFsb2NrKTsKPiAgCj4gIAlkZXYtPm51bV9jcnRjcyA9IG51bV9jcnRj czsKPiAgCj4gQEAgLTk5MSwyNSArOTI4LDE5IEBAIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90 aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ICAJCQkgICAg ICBzdHJ1Y3QgdGltZXZhbCAqdmJsYW5rdGltZSkKPiAgewo+ICAJc3RydWN0IGRybV92Ymxhbmtf Y3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+IC0JaW50IGNvdW50ID0gRFJNX1RJ TUVTVEFNUF9NQVhSRVRSSUVTOwo+IC0JdTMyIGN1cl92Ymxhbms7Cj4gKwl1MzIgdmJsYW5rX2Nv dW50Owo+ICsJdW5zaWduZWQgaW50IHNlcTsKPiAgCj4gIAlpZiAoV0FSTl9PTihwaXBlID49IGRl di0+bnVtX2NydGNzKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQkvKgo+IC0JICogVmJsYW5rIHRp bWVzdGFtcHMgYXJlIHJlYWQgbG9ja2xlc3MuIFRvIGVuc3VyZSBjb25zaXN0ZW5jeSB0aGUgdmJs YW5rCj4gLQkgKiBjb3VudGVyIGlzIHJlY2hlY2tlZCBhbmQgb3JkZXJpbmcgaXMgZW5zdXJlZCB1 c2luZyBtZW1vcnkgYmFycmllcnMuCj4gLQkgKiBUaGlzIHdvcmtzIGxpa2UgYSBzZXFsb2NrLiBU aGUgd3JpdGUtc2lkZSBiYXJyaWVycyBhcmUgaW4gc3RvcmVfdmJsYW5rLgo+IC0JICovCj4gIAlk byB7Cj4gLQkJY3VyX3ZibGFuayA9IHZibGFuay0+Y291bnQ7Cj4gLQkJc21wX3JtYigpOwo+IC0J CSp2Ymxhbmt0aW1lID0gdmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwgY3VyX3ZibGFuayk7Cj4g LQkJc21wX3JtYigpOwo+IC0JfSB3aGlsZSAoY3VyX3ZibGFuayAhPSB2YmxhbmstPmNvdW50ICYm IC0tY291bnQgPiAwKTsKPiArCQlzZXEgPSByZWFkX3NlcWJlZ2luKCZkZXYtPnZibGFua19zZXFs b2NrKTsKPiArCQl2YmxhbmtfY291bnQgPSB2YmxhbmstPmNvdW50Owo+ICsJCSp2Ymxhbmt0aW1l ID0gdmJsYW5rLT50aW1lOwo+ICsJfSB3aGlsZSAocmVhZF9zZXFyZXRyeSgmZGV2LT52Ymxhbmtf c2VxbG9jaywgc2VxKSk7Cj4gIAo+IC0JcmV0dXJuIGN1cl92Ymxhbms7Cj4gKwlyZXR1cm4gdmJs YW5rX2NvdW50Owo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX3ZibGFua19jb3VudF9hbmRfdGlt ZSk7Cj4gIAo+IEBAIC0xMTYwLDExICsxMDkxLDExIEBAIHN0YXRpYyBpbnQgZHJtX3ZibGFua19l bmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gIAo+ICAJ YXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXYtPnZibF9sb2NrKTsKPiAgCj4gLQlzcGluX2xvY2soJmRl di0+dmJsYW5rX3RpbWVfbG9jayk7Cj4gKwl3cml0ZV9zZXFsb2NrKCZkZXYtPnZibGFua19zZXFs b2NrKTsKPiAgCj4gIAlpZiAoIXZibGFuay0+ZW5hYmxlZCkgewo+ICAJCS8qCj4gLQkJICogRW5h YmxlIHZibGFuayBpcnFzIHVuZGVyIHZibGFua190aW1lX2xvY2sgcHJvdGVjdGlvbi4KPiArCQkg KiBFbmFibGUgdmJsYW5rIGlycXMgdW5kZXIgdmJsYW5rX3NlcWxvY2sgcHJvdGVjdGlvbi4KPiAg CQkgKiBBbGwgdmJsYW5rIGNvdW50ICYgdGltZXN0YW1wIHVwZGF0ZXMgYXJlIGhlbGQgb2ZmCj4g IAkJICogdW50aWwgd2UgYXJlIGRvbmUgcmVpbml0aWFsaXppbmcgbWFzdGVyIGNvdW50ZXIgYW5k Cj4gIAkJICogdGltZXN0YW1wcy4gRmlsdGVyY29kZSBpbiBkcm1faGFuZGxlX3ZibGFuaygpIHdp bGwKPiBAQCAtMTE4MCw3ICsxMTExLDcgQEAgc3RhdGljIGludCBkcm1fdmJsYW5rX2VuYWJsZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiAgCQl9Cj4gIAl9Cj4g IAo+IC0Jc3Bpbl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4gKwl3cml0ZV9zZXF1 bmxvY2soJmRldi0+dmJsYW5rX3NlcWxvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBA QCAtMTg4MCwxOCArMTgxMSwxOCBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ICAJICogdmJsYW5rIGVuYWJsZS9kaXNh YmxlLCBhcyB0aGlzIHdvdWxkIGNhdXNlIGluY29uc2lzdGVudAo+ICAJICogb3IgY29ycnVwdGVk IHRpbWVzdGFtcHMgYW5kIHZibGFuayBjb3VudHMuCj4gIAkgKi8KPiAtCXNwaW5fbG9jaygmZGV2 LT52YmxhbmtfdGltZV9sb2NrKTsKPiArCXdyaXRlX3NlcWxvY2soJmRldi0+dmJsYW5rX3NlcWxv Y2spOwo+ICAKPiAgCS8qIFZibGFuayBpcnEgaGFuZGxpbmcgZGlzYWJsZWQuIE5vdGhpbmcgdG8g ZG8uICovCj4gIAlpZiAoIXZibGFuay0+ZW5hYmxlZCkgewo+IC0JCXNwaW5fdW5sb2NrKCZkZXYt PnZibGFua190aW1lX2xvY2spOwo+ICsJCXdyaXRlX3NlcXVubG9jaygmZGV2LT52Ymxhbmtfc2Vx bG9jayk7Cj4gIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBpcnFm bGFncyk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWRybV91cGRhdGVfdmJsYW5r X2NvdW50KGRldiwgcGlwZSwgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSk7Cj4gIAo+IC0Jc3Bpbl91 bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4gKwl3cml0ZV9zZXF1bmxvY2soJmRldi0+ dmJsYW5rX3NlcWxvY2spOwo+ICAKPiAgCXdha2VfdXAoJnZibGFuay0+cXVldWUpOwo+ICAJZHJt X2hhbmRsZV92YmxhbmtfZXZlbnRzKGRldiwgcGlwZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+IGluZGV4IDM2MGIyYTcuLjhiZWU0MjQg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtUC5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt UC5oCj4gQEAgLTUyLDYgKzUyLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L3JhdGVsaW1pdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L3NlcWxvY2suaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiAg I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+Cj4g QEAgLTM5MiwxMSArMzkzLDYgQEAgc3RydWN0IGRybV9tYXN0ZXIgewo+ICAJdm9pZCAqZHJpdmVy X3ByaXY7Cj4gIH07Cj4gIAo+IC0vKiBTaXplIG9mIHJpbmdidWZmZXIgZm9yIHZibGFuayB0aW1l c3RhbXBzLiBKdXN0IGRvdWJsZS1idWZmZXIKPiAtICogaW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlv bi4KPiAtICovCj4gLSNkZWZpbmUgRFJNX1ZCTEFOS1RJTUVfUkJTSVpFIDIKPiAtCj4gIC8qIEZs YWdzIGFuZCByZXR1cm4gY29kZXMgZm9yIGdldF92YmxhbmtfdGltZXN0YW1wKCkgZHJpdmVyIGZ1 bmN0aW9uLiAqLwo+ICAjZGVmaW5lIERSTV9DQUxMRURfRlJPTV9WQkxJUlEgMQo+ICAjZGVmaW5l IERSTV9WQkxBTktUSU1FX1NDQU5PVVRQT1NfTUVUSE9EICgxIDw8IDApCj4gQEAgLTcyNSwxMCAr NzIxLDggQEAgc3RydWN0IGRybV92YmxhbmtfY3J0YyB7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRfdCBx dWV1ZTsJLyoqPCBWQkxBTksgd2FpdCBxdWV1ZSAqLwo+ICAJc3RydWN0IHRpbWVyX2xpc3QgZGlz YWJsZV90aW1lcjsJCS8qIGRlbGF5ZWQgZGlzYWJsZSB0aW1lciAqLwo+ICAKPiAtCS8qIHZibGFu ayBjb3VudGVyLCBwcm90ZWN0ZWQgYnkgZGV2LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMg Ki8KPiAtCXUzMiBjb3VudDsKPiAtCS8qIHZibGFuayB0aW1lc3RhbXBzLCBwcm90ZWN0ZWQgYnkg ZGV2LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KPiAtCXN0cnVjdCB0aW1ldmFsIHRp bWVbRFJNX1ZCTEFOS1RJTUVfUkJTSVpFXTsKPiArCXUzMiBjb3VudDsJCQkvKiB2YmxhbmsgY291 bnRlciwgcHJvdGVjdGVkIGJ5IGRldi0+dmJsYW5rX3NlcWxvY2sgKi8KPiArCXN0cnVjdCB0aW1l dmFsIHRpbWU7CQkvKiB2YmxhbmsgdGltZXN0YW1wLCBwcm90ZWN0ZWQgYnkgZGV2LT52Ymxhbmtf c2VxbG9jayAqLwo+ICAKPiAgCWF0b21pY190IHJlZmNvdW50OwkJLyogbnVtYmVyIG9mIHVzZXJz IG9mIHZibGFuayBpbnRlcnJ1cHRzcGVyIGNydGMgKi8KPiAgCXUzMiBsYXN0OwkJCS8qIHByb3Rl Y3RlZCBieSBkZXYtPnZibF9sb2NrLCB1c2VkICovCj4gQEAgLTgzNSw3ICs4MjksNyBAQCBzdHJ1 Y3QgZHJtX2RldmljZSB7Cj4gIAkvKiBhcnJheSBvZiBzaXplIG51bV9jcnRjcyAqLwo+ICAJc3Ry dWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rOwo+ICAKPiAtCXNwaW5sb2NrX3QgdmJsYW5rX3Rp bWVfbG9jazsgICAgLyoqPCBQcm90ZWN0cyB2YmxhbmsgY291bnQgYW5kIHRpbWUgdXBkYXRlcyBk dXJpbmcgdmJsYW5rIGVuYWJsZS9kaXNhYmxlICovCj4gKwlzZXFsb2NrX3QgdmJsYW5rX3NlcWxv Y2s7CS8qKjwgUHJvdGVjdHMgdmJsYW5rIGNvdW50IGFuZCB0aW1lIHVwZGF0ZXMgZHVyaW5nIHZi bGFuayBlbmFibGUvZGlzYWJsZSAqLwo+ICAJc3BpbmxvY2tfdCB2YmxfbG9jazsKPiAgCj4gIAl1 MzIgbWF4X3ZibGFua19jb3VudDsgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB2YmxhbmsgY291bnRl ciByZWdpc3RlciAqLwo+IC0tIAo+IDIuNC4xMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBP VEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==