From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/vblank: Fixup and document timestamp update/read barriers Date: Thu, 16 Apr 2015 10:54:16 +0200 Message-ID: <20150416085416.GI6092@phenom.ffwll.local> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <552ED78D.7060004@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: Peter Hurley , Daniel Vetter , Michel =?iso-8859-1?Q?D=E4nzer?= , DRI Development , Daniel Vetter , Intel Graphics Development List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBcHIgMTUsIDIwMTUgYXQgMTE6MjY6MzdQTSArMDIwMCwgTWFyaW8gS2xlaW5lciB3 cm90ZToKPiBBIGNvdXBsZSBvZiBxdWVzdGlvbnMgdG8gZWR1Y2F0ZSBtZSBhbmQgb25lIHJldmll dyBjb21tZW50Lgo+IAo+IE9uIDA0LzE1LzIwMTUgMDc6MzQgUE0sIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPlRoaXMgd2FzIGEgYml0IHRvbyBtdWNoIGNhcmdvLWN1bHRlZCwgc28gbGV0cyBtYWtl IGl0IHNvbGlkOgo+ID4tIHZibGFuay0+Y291bnQgZG9lc24ndCBuZWVkIHRvIGJlIGFuIGF0b21p Yywgd3JpdGVzIGFyZSBhbHdheXMgZG9uZQo+ID4gICB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiBk ZXYtPnZibGFua190aW1lX2xvY2suIFN3aXRjaCB0byBhbiB1bnNpZ25lZAo+ID4gICBsb25nIGlu c3RlYWQgYW5kIHVwZGF0ZSBjb21tZW50cy4gTm90ZSB0aGF0IGF0b21pY19yZWFkIGlzIGp1c3Qg YQo+ID4gICBub3JtYWwgcmVhZCBvZiBhIHZvbGF0aWxlIHZhcmlhYmxlLCBzbyBubyBuZWVkIHRv IGF1ZGl0IGFsbCB0aGUKPiA+ICAgcmVhZC1zaWRlIGFjY2VzcyBzcGVjaWZpY2FsbHkuCj4gPgo+ ID4tIFRoZSBiYXJyaWVycyBmb3IgdGhlIHZibGFuayBjb3VudGVyIHNlcWxvY2sgd2VyZW4ndCBj b21wbGV0ZTogVGhlCj4gPiAgIHJlYWQtc2lkZSB3YXMgbWlzc2luZyB0aGUgZmlyc3QgYmFycmll ciBiZXR3ZWVuIHRoZSBjb3VudGVyIHJlYWQgYW5kCj4gPiAgIHRoZSB0aW1lc3RhbXAgcmVhZCwg aXQgb25seSBoYWQgYSBiYXJyaWVyIGJldHdlZW4gdGhlIHRzIGFuZCB0aGUKPiA+ICAgY291bnRl ciByZWFkLiBXZSBuZWVkIGJvdGguCj4gPgo+ID4tIEJhcnJpZXJzIHdlcmVuJ3QgcHJvcGVybHkg ZG9jdW1lbnRlZC4gU2luY2UgYmFycmllcnMgb25seSB3b3JrIGlmCj4gPiAgIHlvdSBoYXZlIHRo ZW0gb24gYm90aHMgc2lkZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGl0J3MgcHJ1ZGVudCB0bwo+ID4g ICByZWZlcmVuY2Ugd2hlcmUgdGhlIG90aGVyIHNpZGUgaXMuIFRvIGF2b2lkIGR1cGxpY2F0aW5n IHRoZQo+ID4gICB3cml0ZS1zaWRlIGNvbW1lbnQgMyB0aW1lcyBleHRyYWN0IGEgbGl0dGxlIHN0 b3JlX3ZibGFuaygpIGhlbHBlci4KPiA+ICAgSW4gdGhhdCBoZWxwZXIgYWxzbyBhc3NlcnQgdGhh dCB3ZSBkbyBpbmRlZWQgaG9sZAo+ID4gICBkZXYtPnZibGFua190aW1lX2xvY2ssIHNpbmNlIGlu IHNvbWUgY2FzZXMgdGhlIGxvY2sgaXMgYWNxdWlyZWQgYQo+ID4gICBmZXcgZnVuY3Rpb25zIHVw IGluIHRoZSBjYWxsY2hhaW4uCj4gPgo+ID5TcG90dGVkIHdoaWxlIHJldmlld2luZyBhIHBhdGNo IGZyb20gQ2hyaXMgV2lsc29uIHRvIGFkZCBhIGZhc3RwYXRoIHRvCj4gPnRoZSB2Ymxhbmtfd2Fp dCBpb2N0bC4KPiA+Cj4gPnYyOiBBZGQgY29tbWVudCB0byBiZXR0ZXIgZXhwbGFpbiBob3cgc3Rv cmVfdmJsYW5rIHdvcmtzLCBzdWdnZXN0ZWQgYnkKPiA+Q2hyaXMuCj4gPgo+ID52MzogUGV0ZXIg bm90aWNlZCB0aGF0IGFzLWlzIHRoZSAybmQgc21wX3dtYiBpcyByZWR1bmRhbnQgd2l0aCB0aGUK PiA+aW1wbGljaXQgYmFycmllciBpbiB0aGUgc3Bpbl91bmxvY2suIEJ1dCB0aGF0IGNhbiBvbmx5 IGJlIHByb3ZlbiBieQo+ID5hdWRpdGluZyBhbGwgY2FsbGVycyBhbmQgbXkgcG9pbnQgaW4gZXh0 cmFjdGluZyB0aGlzIGxpdHRsZSBoZWxwZXIgd2FzCj4gPnRvIGxvY2FsaXplIGFsbCB0aGUgbG9j a2luZyBpbnRvIGp1c3Qgb25lIHBsYWNlLiBIZW5jZSBJIHRoaW5rIHRoYXQKPiA+YWRkaXRpb25h bCBvcHRpbWl6YXRpb24gaXMgdG9vIHJpc2t5Lgo+ID4KPiA+Q2M6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ID5DYzogTWFyaW8gS2xlaW5lciA8bWFyaW8ua2xlaW5l ci5kZUBnbWFpbC5jb20+Cj4gPkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+ID5DYzogTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD4K PiA+Q2M6IFBldGVyIEh1cmxleSA8cGV0ZXJAaHVybGV5c29mdHdhcmUuY29tPgo+ID5TaWduZWQt b2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiA+LS0tCj4g PiAgZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICB8 ICA4ICsrKy0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0 aW9ucygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4gPmluZGV4IGM4YTM0NDc2NTcwYS4uODY5NGI3N2Qw MDAyIDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4gPisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPiA+QEAgLTc0LDYgKzc0LDM2IEBAIG1vZHVsZV9wYXJh bV9uYW1lZCh2YmxhbmtvZmZkZWxheSwgZHJtX3ZibGFua19vZmZkZWxheSwgaW50LCAwNjAwKTsK PiA+ICBtb2R1bGVfcGFyYW1fbmFtZWQodGltZXN0YW1wX3ByZWNpc2lvbl91c2VjLCBkcm1fdGlt ZXN0YW1wX3ByZWNpc2lvbiwgaW50LCAwNjAwKTsKPiA+ICBtb2R1bGVfcGFyYW1fbmFtZWQodGlt ZXN0YW1wX21vbm90b25pYywgZHJtX3RpbWVzdGFtcF9tb25vdG9uaWMsIGludCwgMDYwMCk7Cj4g Pgo+ID4rc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjcnRjLAo+ID4rCQkJIHVuc2lnbmVkIHZibGFua19jb3VudF9pbmMsCj4gPisJCQkgc3RydWN0 IHRpbWV2YWwgKnRfdmJsYW5rKQo+ID4rewo+ID4rCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZi bGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPiA+Kwl1MzIgdHNsb3Q7Cj4gPisKPiA+Kwlhc3Nl cnRfc3Bpbl9sb2NrZWQoJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7Cj4gPisKPiA+KwlpZiAodF92 YmxhbmspIHsKPiA+KwkJLyogQWxsIHdyaXRlcnMgaG9sZCB0aGUgc3BpbmxvY2ssIGJ1dCByZWFk ZXJzIGFyZSBzZXJpYWxpemVkIGJ5Cj4gPisJCSAqIHRoZSBsYXRjaGluZyBvZiB2YmxhbmstPmNv dW50IGJlbG93Lgo+ID4rCQkgKi8KPiA+KwkJdHNsb3QgPSB2YmxhbmstPmNvdW50ICsgdmJsYW5r X2NvdW50X2luYzsKPiA+KwkJdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgdHNsb3QpID0gKnRf dmJsYW5rOwo+ID4rCX0KPiA+Kwo+ID4rCS8qCj4gPisJICogdmJsYW5rIHRpbWVzdGFtcCB1cGRh dGVzIGFyZSBwcm90ZWN0ZWQgb24gdGhlIHdyaXRlIHNpZGUgd2l0aAo+ID4rCSAqIHZibGFua190 aW1lX2xvY2ssIGJ1dCBvbiB0aGUgcmVhZCBzaWRlIGRvbmUgbG9ja2xlc3NseSB1c2luZyBhCj4g PisJICogc2VxdWVuY2UtbG9jayBvbiB0aGUgdmJsYW5rIGNvdW50ZXIuIEVuc3VyZSBjb3JyZWN0 IG9yZGVyaW5nIHVzaW5nCj4gPisJICogbWVtb3J5IGJhcnJyaWVycy4gV2UgbmVlZCB0aGUgYmFy cmllciBib3RoIGJlZm9yZSBhbmQgYWxzbyBhZnRlciB0aGUKPiA+KwkgKiBjb3VudGVyIHVwZGF0 ZSB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBuZXh0IHRpbWVzdGFtcCB3cml0ZS4KPiA+KwkgKiBU aGUgcmVhZC1zaWRlIGJhcnJpZXJzIGZvciB0aGlzIGFyZSBpbiBkcm1fdmJsYW5rX2NvdW50X2Fu ZF90aW1lLgo+ID4rCSAqLwo+ID4rCXNtcF93bWIoKTsKPiA+Kwl2YmxhbmstPmNvdW50ICs9IHZi bGFua19jb3VudF9pbmM7Cj4gPisJc21wX3dtYigpOwo+ID4rfQo+ID4rCj4gPiAgLyoqCj4gPiAg ICogZHJtX3VwZGF0ZV92YmxhbmtfY291bnQgLSB1cGRhdGUgdGhlIG1hc3RlciB2YmxhbmsgY291 bnRlcgo+ID4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiA+QEAgLTkzLDcgKzEyMyw3IEBAIG1vZHVs ZV9wYXJhbV9uYW1lZCh0aW1lc3RhbXBfbW9ub3RvbmljLCBkcm1fdGltZXN0YW1wX21vbm90b25p YywgaW50LCAwNjAwKTsKPiA+ICBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1f dmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPiA+LQl1MzIgY3VyX3Zi bGFuaywgZGlmZiwgdHNsb3Q7Cj4gPisJdTMyIGN1cl92YmxhbmssIGRpZmY7Cj4gPiAgCWJvb2wg cmM7Cj4gPiAgCXN0cnVjdCB0aW1ldmFsIHRfdmJsYW5rOwo+ID4KPiA+QEAgLTEyOSwxOCArMTU5 LDEyIEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjKQo+ID4gIAlpZiAoZGlmZiA9PSAwKQo+ID4gIAkJcmV0dXJuOwo+ ID4KPiA+LQkvKiBSZWluaXRpYWxpemUgY29ycmVzcG9uZGluZyB2YmxhbmsgdGltZXN0YW1wIGlm IGhpZ2gtcHJlY2lzaW9uIHF1ZXJ5Cj4gPi0JICogYXZhaWxhYmxlLiBTa2lwIHRoaXMgc3RlcCBp ZiBxdWVyeSB1bnN1cHBvcnRlZCBvciBmYWlsZWQuIFdpbGwKPiA+LQkgKiByZWluaXRpYWxpemUg ZGVsYXllZCBhdCBuZXh0IHZibGFuayBpbnRlcnJ1cHQgaW4gdGhhdCBjYXNlLgo+ID4rCS8qCj4g PisJICogT25seSByZWluaXRpYWxpemUgY29ycmVzcG9uZGluZyB2YmxhbmsgdGltZXN0YW1wIGlm IGhpZ2gtcHJlY2lzaW9uIHF1ZXJ5Cj4gPisJICogYXZhaWxhYmxlIGFuZCBkaWRuJ3QgZmFpbC4g V2lsbCByZWluaXRpYWxpemUgZGVsYXllZCBhdCBuZXh0IHZibGFuawo+ID4rCSAqIGludGVycnVw dCBpbiB0aGF0IGNhc2UuCj4gPiAgCSAqLwo+ID4tCWlmIChyYykgewo+ID4tCQl0c2xvdCA9IGF0 b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KSArIGRpZmY7Cj4gPi0JCXZibGFua3RpbWVzdGFtcChk ZXYsIGNydGMsIHRzbG90KSA9IHRfdmJsYW5rOwo+ID4tCX0KPiA+LQo+ID4tCXNtcF9tYl9fYmVm b3JlX2F0b21pYygpOwo+ID4tCWF0b21pY19hZGQoZGlmZiwgJnZibGFuay0+Y291bnQpOwo+ID4t CXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gPisJc3RvcmVfdmJsYW5rKGRldiwgY3J0YywgZGlm ZiwgcmMgPyAmdF92YmxhbmsgOiBOVUxMKTsKPiA+ICB9Cj4gPgo+ID4gIC8qCj4gPkBAIC0yMTgs NyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gPiAgCS8qIENvbXB1dGUgdGltZSBkaWZmZXJlbmNl IHRvIHN0b3JlZCB0aW1lc3RhbXAgb2YgbGFzdCB2YmxhbmsKPiA+ICAJICogYXMgdXBkYXRlZCBi eSBsYXN0IGludm9jYXRpb24gb2YgZHJtX2hhbmRsZV92YmxhbmsoKSBpbiB2YmxhbmsgaXJxLgo+ ID4gIAkgKi8KPiA+LQl2Ymxjb3VudCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KTsKPiA+ Kwl2Ymxjb3VudCA9IHZibGFuay0+Y291bnQ7Cj4gPiAgCWRpZmZfbnMgPSB0aW1ldmFsX3RvX25z KCZ0dmJsYW5rKSAtCj4gPiAgCQkgIHRpbWV2YWxfdG9fbnMoJnZibGFua3RpbWVzdGFtcChkZXYs IGNydGMsIHZibGNvdW50KSk7Cj4gPgo+ID5AQCAtMjM0LDE3ICsyNTgsOCBAQCBzdGF0aWMgdm9p ZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YykKPiA+ICAJICogYXZhaWxhYmxlLiBJbiB0aGF0IGNhc2Ugd2UgY2FuJ3QgYWNjb3VudCBmb3Ig dGhpcyBhbmQganVzdAo+ID4gIAkgKiBob3BlIGZvciB0aGUgYmVzdC4KPiA+ICAJICovCj4gPi0J aWYgKHZibHJjICYmIChhYnM2NChkaWZmX25zKSA+IDEwMDAwMDApKSB7Cj4gPi0JCS8qIFN0b3Jl IG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZlci4gKi8KPiA+LQkJdmJsYW5rdGltZXN0YW1wKGRl diwgY3J0YywgdmJsY291bnQgKyAxKSA9IHR2Ymxhbms7Cj4gPi0KPiA+LQkJLyogSW5jcmVtZW50 IGNvb2tlZCB2YmxhbmsgY291bnQuIFRoaXMgYWxzbyBhdG9taWNhbGx5IGNvbW1pdHMKPiA+LQkJ ICogdGhlIHRpbWVzdGFtcCBjb21wdXRlZCBhYm92ZS4KPiA+LQkJICovCj4gPi0JCXNtcF9tYl9f YmVmb3JlX2F0b21pYygpOwo+ID4tCQlhdG9taWNfaW5jKCZ2YmxhbmstPmNvdW50KTsKPiA+LQkJ c21wX21iX19hZnRlcl9hdG9taWMoKTsKPiA+LQl9Cj4gPisJaWYgKHZibHJjICYmIChhYnM2NChk aWZmX25zKSA+IDEwMDAwMDApKQo+ID4rCQlzdG9yZV92YmxhbmsoZGV2LCBjcnRjLCAxLCAmdHZi bGFuayk7Cj4gPgo+ID4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibGFua190aW1l X2xvY2ssIGlycWZsYWdzKTsKPiA+ICB9Cj4gPkBAIC04NTIsNyArODY3LDcgQEAgdTMyIGRybV92 YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gPgo+ID4gIAlp ZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2NydGNzKSkKPiA+ICAJCXJldHVybiAwOwo+ID4t CXJldHVybiBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4gPisJcmV0dXJuIHZibGFuay0+ Y291bnQ7Cj4gCj4gSSB3cm9uZ2x5IGFzc3VtZWQgYXRvbWljX3JlYWQgd291bGQgZ3VhcmFudGVl IG1vcmUgdGhhbiBpdCBhY3R1YWxseSBkb2VzLCBzbwo+IHBsZWFzZSBoZWxwIG1lIHRvIGxlYXJu IHNvbWV0aGluZy4gV2h5IGRvbid0IHdlIG5lZWQgc29tZSBzbXBfcm1iKCkgaGVyZQo+IGJlZm9y ZSByZXR1cm5pbmcgdmJsYW5rLT5jb3VudD8gV2hhdCBndWFyYW50ZWVzIHRoYXQgZHJtX3ZibGFu a19jb3VudCgpIGRvZXMKPiByZXR1cm4gdGhlIGxhdGVzdCB2YWx1ZSBhc3NpZ25lZCB0byB2Ymxh bmstPmNvdW50IGluIHN0b3JlX3ZibGFuaygpPyBJbgo+IHN0b3JlX3ZibGFuaygpIHRoZXJlIGlz IGEgc21wX3dtYigpLCBidXQgd2h5IGRvbid0IHdlIG5lZWQgYSBtYXRjaGluZwo+IHNtcF9ybWIo KSBoZXJlIHRvIGJlbmVmaXQgZnJvbSBpdD8KCkJlY2F1c2UgYXRvbWljX3JlYWQgaXMgdW5vcmRl cmVkIGFuZCBhdG9taWNfdCBpcyBqdXN0IG9uZSBjcHUgd29yZAphdG9taWNfcmVhZCgpIGlzIGFj dHVhbGx5IHRoZSBleGFjdCBzYW1lIHRoaW5nIGFzIHRoZSByZXBsYWNlbWVudCBoZXJlLgpFc3Nl bnRpYWxseSBkcm1fdmJsYW5rX2NvdW50IGp1c3QgZ2l2ZXMgeW91IGEgc25hcHNob3QgYW5kIG1h a2VzIG5vCmd1YXJhbnRlZXMgYWJvdXQgb3JkZXJpbmcsIGFuZCBmcm9tIGEgcXVpY2sgbG9vayBh bGwgY2FsbGVycyBhcmUgb2sgd2l0aAp0aGF0LgoKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChk cm1fdmJsYW5rX2NvdW50KTsKPiA+Cj4gPkBAIC04OTcsMTYgKzkxMiwxNyBAQCB1MzIgZHJtX3Zi bGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKPiA+ ICAJaWYgKFdBUk5fT04oY3J0YyA+PSBkZXYtPm51bV9jcnRjcykpCj4gPiAgCQlyZXR1cm4gMDsK PiA+Cj4gPi0JLyogUmVhZCB0aW1lc3RhbXAgZnJvbSBzbG90IG9mIF92YmxhbmtfdGltZSByaW5n YnVmZmVyCj4gPi0JICogdGhhdCBjb3JyZXNwb25kcyB0byBjdXJyZW50IHZibGFuayBjb3VudC4g UmV0cnkgaWYKPiA+LQkgKiBjb3VudCBoYXMgaW5jcmVtZW50ZWQgZHVyaW5nIHJlYWRvdXQuIFRo aXMgd29ya3MgbGlrZQo+ID4tCSAqIGEgc2VxbG9jay4KPiA+KwkvKgo+ID4rCSAqIFZibGFuayB0 aW1lc3RhbXBzIGFyZSByZWFkIGxvY2tsZXNzLiBUbyBlbnN1cmUgY29uc2lzdGVuY3kgdGhlIHZi bGFuawo+ID4rCSAqIGNvdW50ZXIgaXMgcmVjaGVja2VkIGFuZCBvcmRlcmluZyBpcyBlbnN1cmVk IHVzaW5nIG1lbW9yeSBiYXJyaWVycy4KPiA+KwkgKiBUaGlzIHdvcmtzIGxpa2UgYSBzZXFsb2Nr LiBUaGUgd3JpdGUtc2lkZSBiYXJyaWVycyBhcmUgaW4gc3RvcmVfdmJsYW5rLgo+ID4gIAkgKi8K PiA+ICAJZG8gewo+ID4tCQljdXJfdmJsYW5rID0gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQp Owo+ID4rCQljdXJfdmJsYW5rID0gdmJsYW5rLT5jb3VudDsKPiA+KwkJc21wX3JtYigpOwo+ID4g IAkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCBjdXJfdmJsYW5rKTsK PiA+ICAJCXNtcF9ybWIoKTsKPiA+LQl9IHdoaWxlIChjdXJfdmJsYW5rICE9IGF0b21pY19yZWFk KCZ2YmxhbmstPmNvdW50KSk7Cj4gPisJfSB3aGlsZSAoY3VyX3ZibGFuayAhPSB2YmxhbmstPmNv dW50KTsKPiA+Cj4gCj4gU2ltaWxhciBxdWVzdGlvbiBhcyBhYm92ZS4gV2UgaGF2ZSBhIG5ldyBz bXBfcm1iKCkgYWZ0ZXIgdGhlIGN1cl92YmxhbmsKPiBhc3NpZ25tZW50IGFuZCB0aGVuIGFmdGVy ICp2Ymxhbmt0aW1lIGFzc2lnbm1lbnQuIE15IG9yaWdpbmFsIHdyb25nCj4gYXNzdW1wdGlvbiB3 YXMgdGhhdCB0aGUgZmlyc3Qgc21wX3JtYigpIHdvdWxkbid0IGJlIG5lZWRlZCBiZWNhdXNlCj4g YXRvbWljX3JlYWQoKSB3b3VsZCBpbXBseSB0aGF0LCBhbmQgdGhhdCB0aGUgY29tcGlsZXIvY3B1 IGNvdWxkbid0IHJlb3JkZXIKPiBhbnl0aGluZyBoZXJlIGJlY2F1c2UgdGhlICp2Ymxhbmt0aW1l IGFzc2lnbm1lbnQgZGVwZW5kcyBvbiBjdXJfdmJsYW5rIGZyb20KPiB0aGUgcHJlY2VlZGluZyBh dG9taWNfcmVhZC4KCmF0b21pY190IGlzIGZ1bGx5IHVub3JkZXJlZCBpbiBMaW51eCwgd2hpY2gg aXMgYSBiaWcgY29udHJhc3QgdG8gdXNlcnNwYWNlCndoZXJlIGF0b21pY3MgKGFmYWlrIGF0IGxl YXN0KSBhcmUgYnkgZGVmYXVsdCBvcmRlcmVkIGFjb3JkaW5nIHRvIHRoZQpsb2FkLWFjcXVpcmUg c3RvcmUtcmVsZWFzZSBtb2RlbC4gV2hpY2ggbWVhbnMgdGhhdCB0aGUgY3B1IGFuZCBjb21waWxl cgphcmUgZnJlZSB0byByZW9yZGVyIHRoaW5ncyBob3dldmVyIHRoZXkgd2FudCAoYW5kIGhlbmNl IHdlIG5lZWQgZXhwbGljaXQKYmFycmllcnMgdG8gbWFrZSBzdXJlIHRoaW5nIGFyZSBvaykuCgpU aGUgb3RoZXIgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBmb3IgdW5vcmRlcmVkIGFjY2VzcyAo aS5lLiBldmVyeXRoaW5nCndoaWNoIGlzIG5vdCBleHBsaWNpdCBvciBpbXBsaWNpdGx5IGEgYmFy cmllcikgY29tcGlsZXIgYW5kIGNwdSBjYW4gZG8Kd2hhdGV2ZXIgdGhleSB3YW50IHRvIHdpdGgg aG93IGxvYWRzIGFuZCBzdG9yZXMgYXJlIHZpc2libGUgb24gdGhlCmNvaGVyZW5jeSBmYWJyaWMu IFRoZXJlIGlzIG9ubHkgb25lIHJlc3RyaWN0aW9uOiBUaGUgY29tcGlsZXIvY3B1IGlzIG5vdAph bGxvd2VkIHRvIGZhYnJpY2F0ZSBzdG9yZXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgY29kZS4gSS5l LiBpZiB5b3UgaGF2ZQp0aGUgZm9sbG93aW5nIGNvZGUKCgliID0gMDsKCWIgPSAxOwoJYiA9IDI7 CgpUaGUgb25seSBndWFyYW50ZWUgeW91IHJlYWxseSBoYXZlIGlzIHRoYXQgZXZlbnR1YWxseSB5 b3UnbGwgc2VlIDIsIGFuZAp5b3Ugc2VlIG5vdGhpbmcgZWxzZSBidXQgMCwgMSwgMiBpbiBiZXR3 ZWVuLgoKVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgYWxsIHRoZSBjb2hlcmVuY3kgb3JkZXJp bmcgaXMgX29ubHlfIGZyb20gdGhlCmNwdSB1cCB0byB0aGUgY29oZXJlbmN5IGZhYnJpYy4gSXQg ZG9lcyBfbm90XyBleHRlbmQgdG8gYWxsIHRoZSBvdGhlcgpjcHVzLCBzbyBpZiB5b3Ugd2FudCB0 byBtYWtlIGFuIG9yZGVyZWQgdHJhbnNhY3Rpb24sIHlvdSBoYXZlIHRvIGhhdmUKYmFycmllcnMg b24gYm90aCB0aGUgc2VuZGluZyBhbmQgdGhlIHJlY2VpdmluZyBjcHUuIFNwZWNpZmljYWxseSBp biB0aGlzCmNhc2UgdGhlIGZvbGxvd2luZyBpcyBhbGxvd2VkIHdpdGhvdXQgdGhlIGZpcnN0IGJh cnJpZXI6CgoxLiByZWFkIHRoZSB0aW1lc3RhbXAsIHJhY2luZyB3aXRoIGFuIHVwZGF0ZSAoc28g aW5jb25zaXN0ZW50IGRhdGEpCjIuIHJlYWQgdmJsYW5rLT5jb3VudAozLiBzbXBfcm1iKCk7CjQu IHJlYWQgdmJsYW5rLT5jb3VudCBhZ2FpbgoKU28gMiY0IHJlYWQgdGhlIHNhbWUgdmJsYW5rIGNv dW50IGRlc3BpdGUgdGhhdCB0aGUgdXBkYXRlIHJhY2UuIE9ubHkgaWYKeW91IGFkZCB0aGUgZmly c3Qgc21wX3JtYigpIHN0ZXAgMiBpcyBndXJhbmF0ZWVkIHRvIGhhcHBlbiBiZWZvcmUgc3RlcCAx LgoKPiBCdXQgd2h5IGNhbiB3ZSBub3cgZG8gdGhlIGNvbXBhcmlzb24gd2hpbGUoY3VyX3ZibGFu ayAhPSB2YmxhbmstPmNvdW50KQo+IHdpdGhvdXQgbmVlZGluZyBzb21ldGhpbmcgbGlrZQo+IAo+ IAluZXdfdmJsYW5rID0gdmJsYW5rLT5jb3VudDsKPiAJc21wX3JtYigpOwo+ICAgIH0gd2hpbGUg KGN1cl92YmxhbmsgIT0gbmV3X3ZibGFuayk7Cj4gCj4gdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBm cm9tIHRoZSAybmQgdmJsYW5rLT5jb3VudCByZWFkIGlzbid0IHN0YWxlIHdydC4gdG8KPiBwb3Rl bnRpYWwgdXBkYXRlcyBmcm9tIHN0b3JlX3ZibGFuaygpPwoKWW91IG9ubHkgZXZlciBuZWVkIGJh cnJpZXJzIGJldHdlZW4gZGlmZmVyZW50IGxvYWRzL3N0b3JlcyBhbmQgbm90IGJldHdlZW4KbG9h ZC9zdG9yZXMgYW5kIGNvbXB1dGF0aW9uLiBTbyBhZGRpbmcgYSBzbXBfcm1iKCkgd2hlcmUgeW91 IHN1Z2dlc3RlZApkb2VzIGV4YWN0bHkgbm90aGluZy4KCldlbGwgbm90IHF1aXRlLCB0aGVyZSBp cyBvbmUgZXhjZXB0aW9uOiBDb21waWxlcnMgYXJlIGFsbG93ZWQgdG8gZmFicmljYXRlCmFzIG1h bnkgbG9hZHMgYXMgdGhleSB3YW50IHRvLiBTbyBpZiB5b3VyIGNvZGUgZmxvdyBkZXBlbmRzIHVw b24gaGF2aW5nIGEKY29uc2lzdGVudCB2YWx1ZSAoZS5nLiBiZWNhdXNlIHlvdSBoYXZlIGEgYnVu Y2ggb2YgaWYgY2hlY2tzIG9yIHNvbWV0aGluZwplbHNlKSB0aGVuIHlvdSBuZWVkIHRvIG1ha2Ug c3VyZSB0aGUgY29tcGlsZXIgb25seSBsb2FkcyB0aGUgdmFsdWUgb25jZQp1c2luZyBBQ0NFU1Nf T05DRS4gQnV0IGhlcmUgd2Ugb25seSBjYXJlIGFib3V0IGVxdWFsaXR5IGFuZCBvbmx5IGhhdmUg b25lCmNoZWNrLCBzbyBpZiB0aGUgY29tcGlsZXIgZ29lcyBudXRzIGFuZCByZWxvYWRzIHRoZSB2 YWx1ZSB3ZSBkb24ndCBjYXJlCnNpbmNlIGlmIGl0J3MgaW5lcXVhbCBhbnkgdmFsdWUgcmVsb2Fk ZWQgbGF0ZXIgb24gd2lsbCBzdGlsbCBiZSB1bmVxdWFsIHRvCmN1cl92YmxhbmsuIEJ1dCBpZiB5 b3UgZG8gc29tZXRoaW5nIG1vcmUgZmFuY3kgeW91IG1pZ2h0IGluZGVlZCBuZWVkIHNvbWUKYWRk aXRpb25hbCBjb21waWxlciBvciBmdWxsIGJhcnJpZXJzLgoKPiBBbm90aGVyIHF1ZXN0aW9uIGlz IHdoeSB0aGUgZHJtX3ZibGFua19jb3VudF9hbmRfdGltZSgpIGNvZGUgZXZlciB3b3JrZWQKPiB3 aXRob3V0IHRyaWdnZXJpbmcgYW55IG9mIG15IG93biB0ZXN0cyBhbmQgY29uc2lzdGVuY3kgY2hl Y2tzIGluIG15Cj4gc29mdHdhcmUsIG9yIGFueSBvZiB5b3VyIGlndCB0ZXN0cz8gSSBydW4gbXkg dGVzdHMgdmVyeSBvZnRlbiwgYnV0IG9ubHkgb24KPiBJbnRlbCBhcmNoaXRlY3R1cmUgY3B1cy4g SSBhc3N1bWUgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGlndCB0ZXN0cz8gSXMKPiB0aGVyZSBh bnl0aGluZyBzcGVjaWZpYyBhYm91dCBJbnRlbCBjcHUncyB0aGF0IG1ha2VzIHRoaXMgc3RpbGwg d29yayBvciB2ZXJ5Cj4gdW5saWtlbHkgdG8gYnJlYWs/IE9yIGFyZSB0aGUgdGVzdHMgaW5zdWZm aWNpZW50IHRvIGNhdGNoIHRoaXM/IE9yIGp1c3QKPiBsdWNrPwo+IAo+IEkgbG9va2VkIHRocm91 Z2gga2VybmVscyBiYWNrIHRvIDMuMTYgYW5kIG1vc3QgdXNlcyBvZiB0aGUgZnVuY3Rpb24gd291 bGQgYmUKPiBzYWZlIGZyb20gcmFjZXMgZHVlIHRvIHRoZSBsb2NraW5nIGFyb3VuZCBpdCwgaG9s ZGluZyBvZiB2YmxhbmsgcmVmY291bnRzLAo+IG9yIHRoZSBwbGFjZSBhbmQgb3JkZXIgb2YgZXhl Y3V0aW9uLCBlLmcuLCBmcm9tIHdpdGhpbiBkcm1faGFuZGxlX3ZibGFuaygpLgo+IEJ1dCBpbiBz b21lIHRpZ2h0IHRlc3QgbG9vcCBqdXN0IGNhbGxpbmcgdGhlIGRybVdhaXRWYmxhbmsgaW9jdGwg dG8gcXVlcnkKPiBjdXJyZW50IHZhbHVlcyBpJ2QgZXhwZWN0IGl0IHRvIGF0IGxlYXN0IG9jY2Fz c2lvbmFsbHkgcmV0dXJuIGNvcnJ1cHRlZAo+IHRpbWVzdGFtcHMsIGUuZy4sIHRpbWUganVtcGlu ZyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBldGMuPwoKTHVjayBhbmQgdGhlIHg4NiBjcHUgYWN0dWFs bHkgYmVpbmcgYSBsb3QgbW9yZSBjb2hlcmVudCB0aGFuIHRoZSBsaW51eAptZW1vcnkgbW9kZWwg aXMuIHg4NiBoYXMKLSBmdWxseSBvcmRlcmVkIHdyaXRlcyBhZ2FpbnN0IHdyaXRlcwotIGZ1bGx5 IG9yZGVyZWQgcmVhZHMgYWdhaW5zdCByZWFkcwotIHRoZSBvbmx5IHRoaW5nIHdoZXJlIGl0IHJl b3JkZXJzIGlzIHRoYXQgdGhlIGNwdSBjYW4gbW92ZSByZWFkcyBhaGVhZCBvZgogIGVhcmxpZXIg d3JpdGVzIChidXQgbm90IHRoZSBvdGhlciB3YXkgcm91bmQpLgoKU28gdGhlIG9ubHkgcmlzayBo ZXJlIGlzIGdjYyBkb2luZyBzb21ldGhpbmcgZnVubnksIGFuZCB0aGF0IG9ubHkgaGFwcGVucwpp ZiBnY2MgaGFzIGEgbmVlZCAocmVnaXN0ZXIgcHJlc3N1cmUgb3Igd2hhdGV2ZXIpLiBUaGUgY29k ZSBpcyBzaW1wbGUKZW5vdWdoIGZvciB0aGF0IHRvIGJlIHByYWN0aWNhbGx5IGltcG9zc2libGUu Cgo+IAo+ID4gIAlyZXR1cm4gY3VyX3ZibGFuazsKPiA+ICB9Cj4gPkBAIC0xNzE1LDcgKzE3MzEs NyBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBj cnRjKQo+ID4gIAkgKi8KPiA+Cj4gPiAgCS8qIEdldCBjdXJyZW50IHRpbWVzdGFtcCBhbmQgY291 bnQuICovCj4gPi0JdmJsY291bnQgPSBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4gPisJ dmJsY291bnQgPSB2YmxhbmstPmNvdW50Owo+ID4gIAlkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1w KGRldiwgY3J0YywgJnR2YmxhbmssIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpOwo+ID4KPiA+ICAJ LyogQ29tcHV0ZSB0aW1lIGRpZmZlcmVuY2UgdG8gdGltZXN0YW1wIG9mIGxhc3QgdmJsYW5rICov Cj4gPkBAIC0xNzMxLDIwICsxNzQ3LDExIEBAIGJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gPiAgCSAqIGUuZy4sIGR1ZSB0byBzcHVyaW91 cyB2YmxhbmsgaW50ZXJydXB0cy4gV2UgbmVlZCB0bwo+ID4gIAkgKiBpZ25vcmUgdGhvc2UgZm9y IGFjY291bnRpbmcuCj4gPiAgCSAqLwo+ID4tCWlmIChhYnM2NChkaWZmX25zKSA+IERSTV9SRURV TkRBTlRfVkJMSVJRX1RIUkVTSF9OUykgewo+ID4tCQkvKiBTdG9yZSBuZXcgdGltZXN0YW1wIGlu IHJpbmdidWZmZXIuICovCj4gPi0JCXZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHZibGNvdW50 ICsgMSkgPSB0dmJsYW5rOwo+ID4tCj4gPi0JCS8qIEluY3JlbWVudCBjb29rZWQgdmJsYW5rIGNv dW50LiBUaGlzIGFsc28gYXRvbWljYWxseSBjb21taXRzCj4gPi0JCSAqIHRoZSB0aW1lc3RhbXAg Y29tcHV0ZWQgYWJvdmUuCj4gPi0JCSAqLwo+ID4tCQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsK PiA+LQkJYXRvbWljX2luYygmdmJsYW5rLT5jb3VudCk7Cj4gPi0JCXNtcF9tYl9fYWZ0ZXJfYXRv bWljKCk7Cj4gPi0JfSBlbHNlIHsKPiA+KwlpZiAoYWJzNjQoZGlmZl9ucykgPiBEUk1fUkVEVU5E QU5UX1ZCTElSUV9USFJFU0hfTlMpCj4gPisJCXN0b3JlX3ZibGFuayhkZXYsIGNydGMsIDEsICZ0 dmJsYW5rKTsKPiA+KwllbHNlCj4gPiAgCQlEUk1fREVCVUcoImNydGMgJWQ6IFJlZHVuZGFudCB2 YmxpcnEgaWdub3JlZC4gZGlmZl9ucyA9ICVkXG4iLAo+ID4gIAkJCSAgY3J0YywgKGludCkgZGlm Zl9ucyk7Cj4gPi0JfQo+ID4KPiA+ICAJc3Bpbl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9j ayk7Cj4gPgo+ID5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0v ZHJtUC5oCj4gPmluZGV4IDYyYzQwNzc3YzAwOS4uNGMzMWEyY2M1YTMzIDEwMDY0NAo+ID4tLS0g YS9pbmNsdWRlL2RybS9kcm1QLmgKPiA+KysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4gPkBAIC02 ODYsOSArNjg2LDEzIEBAIHN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgewo+ID4gIHN0 cnVjdCBkcm1fdmJsYW5rX2NydGMgewo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwkJLyog cG9pbnRlciB0byB0aGUgZHJtX2RldmljZSAqLwo+ID4gIAl3YWl0X3F1ZXVlX2hlYWRfdCBxdWV1 ZTsJLyoqPCBWQkxBTksgd2FpdCBxdWV1ZSAqLwo+ID4tCXN0cnVjdCB0aW1ldmFsIHRpbWVbRFJN X1ZCTEFOS1RJTUVfUkJTSVpFXTsJLyoqPCB0aW1lc3RhbXAgb2YgY3VycmVudCBjb3VudCAqLwo+ ID4gIAlzdHJ1Y3QgdGltZXJfbGlzdCBkaXNhYmxlX3RpbWVyOwkJLyogZGVsYXllZCBkaXNhYmxl IHRpbWVyICovCj4gPi0JYXRvbWljX3QgY291bnQ7CQkJLyoqPCBudW1iZXIgb2YgVkJMQU5LIGlu dGVycnVwdHMgKi8KPiA+Kwo+ID4rCS8qIHZibGFuayBjb3VudGVyLCBwcm90ZWN0ZWQgYnkgZGV2 LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KPiA+Kwl1bnNpZ25lZCBsb25nIGNvdW50 Owo+IAo+IFdoeSBpcyBjb3VudCBhbiB1bnNpZ25lZCBsb25nICg9IDY0IGJpdCBvbiA2NC1iaXQg a2VybmVscykgaW5zdGVhZCBvZiB1MzIKPiB3aGVuIGFsbCB1c2VycyBvZiBjb3VudCBhcmUgdTMy PyBJcyB0aGlzIGludGVudGlvbmFsPwoKV2VsbCBJIGZpZ3VyZWQgaXQgY2FuJ3QgaHVydC4gSSBj YW4gY2hhbmdlIGl0IHRvIHUzMiBmb3IgY29uc2lzdGVuY3ksCm1ha2VzIHNlbnNlIHRvIGRvIHNv LgotRGFuaWVsCgo+IAo+IAo+ID4rCS8qIHZibGFuayB0aW1lc3RhbXBzLCBwcm90ZWN0ZWQgYnkg ZGV2LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KPiA+KwlzdHJ1Y3QgdGltZXZhbCB0 aW1lW0RSTV9WQkxBTktUSU1FX1JCU0laRV07Cj4gPisKPiA+ICAJYXRvbWljX3QgcmVmY291bnQ7 CQkvKiBudW1iZXIgb2YgdXNlcnMgb2YgdmJsYW5rIGludGVycnVwdHNwZXIgY3J0YyAqLwo+ID4g IAl1MzIgbGFzdDsJCQkvKiBwcm90ZWN0ZWQgYnkgZGV2LT52YmxfbG9jaywgdXNlZCAqLwo+ID4g IAkJCQkJLyogZm9yIHdyYXBhcm91bmQgaGFuZGxpbmcgKi8KPiA+Cj4gCj4gVGhhbmtzLAo+IC1t YXJpbwoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==