From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: Funky new vblank counter regressions in Linux 4.4-rc1 Date: Fri, 20 Nov 2015 16:24:50 +0100 Message-ID: <564F3B42.5050803@gmail.com> References: <564E0AF4.3050406@gmail.com> <20151119182051.GU4437@intel.com> <564E1F18.5070508@gmail.com> <20151119194557.GB4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id E8D656E669 for ; Mon, 30 Nov 2015 12:13:34 -0800 (PST) Resent-Message-ID: <20151130201316.GD4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org In-Reply-To: <20151119194557.GB4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: =?UTF-8?Q?Michel_D=c3=a4nzer?= List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMS8xOS8yMDE1IDA4OjQ1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gT24gVGh1 LCBOb3YgMTksIDIwMTUgYXQgMDg6MTI6MjRQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3cm90ZToK Pj4gT24gMTEvMTkvMjAxNSAwNzoyMCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+Pj4gT24g VGh1LCBOb3YgMTksIDIwMTUgYXQgMDY6NDY6MjhQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3cm90 ZToKPj4+PiBIaSBBbGV4IGFuZCBNaWNoZWwgYW5kIFZpbGxlLAo+Pj4+Cj4+Pj4gaXQncyAiZml4 IHZibGFuayBzdHVmZiIgdGltZSBhZ2FpbiA7LSkKPj4+Pgo+Pj4+IFZpbGxlJ3MgY2hhbmdlcyB0 byB0aGUgRFJNJ3MgZHJtX2hhbmRsZV92YmxhbmsoKSAvCj4+Pj4gZHJtX3VwZGF0ZV92Ymxhbmtf Y291bnQoKSBjb2RlIGluIExpbnV4IDQuNCBub3Qgb25seSBtYWRlIHRoYXQgY29kZSBtb3JlCj4+ Pj4gZWxlZ2FudCwgYnV0IGFsc28gcmVtb3ZlZCB0aGUgcm9idXN0bmVzcyBhZ2FpbnN0IHRoZSB2 YmxhbmsgaXJxIHF1aXJrcwo+Pj4+IGluIEFNRCBodyBhbmQgc2ltaWxhciBoYXJkd2FyZS4gU28g bm93IGkgZ2V0IHRvbnMgb2Ygb2ZmLWJ5LW9uZSBlcnJvcnMgYW5kCj4+Pj4KPj4+PiAiWyAgIDQz Mi4zNDVdIChXVykgUkFERU9OKDEpOiByYWRlb25fZHJpMl9mbGlwX2V2ZW50X2hhbmRsZXI6IFBh Z2VmbGlwCj4+Pj4gY29tcGxldGlvbiBldmVudCBoYXMgaW1wb3NzaWJsZSBtc2MgMjQ4MDMgPCB0 YXJnZXRfbXNjIDI0ODA0IiBYT3JnCj4+Pj4gbWVzc2FnZXMgZnJvbSB0aGF0IGtlcm5lbC4KPj4+ Cj4+PiBBcmdoLiBTb3JyeSBhYm91dCB0aGF0Lgo+Pj4KPj4KPj4gT24gdGhlIHBsdXMgc2lkZSwg eW91ciAidmJsYW5rIHRpbWVzdGFtcCBkZWx0YXMgYXMgZmFrZSB2YmxhbmsgY291bnRlcnMiCj4+ IGNvZGUgc2VlbXMgdG8gd29yayBuaWNlbHkgb24gbm91dmVhdS1rbXMsIGFzIGZhciBhcyB0ZXN0 aW5nIHdpdGggdGhyZWUKPj4gTnZpZGlhJ3Mgd2VudCBzbyBmYXIgOikuIEFuZCBib3RoIEludGVs IGdwdSdzIChIRCBJcm9ubGFrZSwgYW5kCj4+IEl2eWJyaWRnZSkgaSB0ZXN0ZWQgY2hlY2tlZCBv dXQgbmljZWx5Lgo+Pgo+PiBBbmQgYXQgbGVhc3QgdGhlIHJlY2VudCBudjUwKyBOVmlkaWEgVGVz bGEgYWxzbyBoYXZlIDE2IGJpdCB2YmxhbmsKPj4gY291bnRlcnMgd2hpY2ggd2UgY291bGQgaW1w bGVtZW50IGluIG5vdXZlYXUsIG1heWJlIHdpdGggdGhlIHNhbWUKPj4gdHJpY2tlcnkgdG8gYWxs b3cgbG9uZyB0cm91YmxlLWZyZWUgdmJsYW5rIG9mZiBwZXJpb2RzLCBob3BlZnVsbHkgdGhhdAo+ PiB3b3VsZCBhbHNvIGFwcGx5IHRvIHRoZSBUZWdyYS00IGFuZCBsYXRlciBLZXBsZXIgYmFzZWQg cGFydHMuIFRlZ3JhLTMKPj4gd2lsbCBwcm9iYWJseSBhbHNvIHdvcmsuIEkgdGhpbmsgaSByZWFk IGluIHRoZSBUZWdyYS0zIFBSTSB0aGF0IHRoZSBzeW5jCj4+IHBvaW50cyB0aGV5IHVzZSB0byBp bXBsZW1lbnQgdmJsYW5rIGNvdW50ZXJzIGRvIGluY3JlbWVudCBhdCBsZWFkaW5nCj4+IGVkZ2Ug b2YgdmJsYW5rLgo+Pgo+PiBUaGUgb25seSBwcm9ibGVtIHdlIG1heSBoYXZlIGlzIHRoYXQgc29t ZSBvZiB0aGUgZW1iZWRkZWQgZ3B1cyBtYXkgbm90Cj4+IGhhdmUgY29tcGxpYW50IHZibGFuayBj b3VudGVycyBhbmQgdGhleSBwcm9iYWJseSBhbHNvIGxhY2sgdmJsYW5rCj4+IHRpbWVzdGFtcGlu Zywgc28gaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEgdG8gcmF0aGVyIG5vdCB1c2UgdmJsYW5rCj4+ IGNvdW50ZXJzIGF0IGFsbCBpbiB0aG9zZSBkcml2ZXJzIC0gcGF0Y2ggdGhlaXIga21zIGRyaXZl cnMgdG8KPj4gbWF4X3ZibGFua19jb3VudCA9IDA7Cj4+Cj4+Pj4KPj4+PiBPbmUgb2YgdGhlIHJl YXNvbnMgZm9yIHRyb3VibGUgaXMgdGhhdCBBTUQgaHcgcXVpcmsgd2hlcmUgdGhlIGh3IGZpcmVz Cj4+Pj4gYW4gZXh0cmEgdmJsYW5rIGlycSBzaG9ydGx5IGFmdGVyIHZibGFuayBpcnEncyBnZXQg ZW5hYmxlZCwgbm90Cj4+Pj4gc3luY2hyb25pemVkIHRvIHZibGFuaywgYnV0IHR5cGljYWxseSBp biB0aGUgbWlkZGxlIG9mIGFjdGl2ZSBzY2Fub3V0LAo+Pj4+IHNvIHdlIGdldCBhIHJlZHVuZGFu dCBjYWxsIHRvIGRybV9oYW5kbGVfdmJsYW5rIGluIHRoZSBtaWRkbGUgb2Ygc2Nhbm91dC4KPj4+ Cj4+PiBJIHRoaW5rIHRoYXQgc2hvdWxkIGJlIGZpbmUgYXMgc3VjaC4gVGhlIGNvZGUgc2hvdWxk IGlnbm9yZSByZWR1ZG50YW50Cj4+PiB2YmwgaXJxcy4gV2VsbCwgYXNzdW1pbmcgeW91IGhhdmUg YSByZWxpYWJsZSBodyBjb3VudGVyIG9yIHlvdSB1c2UgdGhlCj4+PiB0aW1lc3RhbXAgZ3Vlc3N0 aW1hdGUgbWVjaGFuaXNtIGFuZCB5b3VyIHNjYW5vdXQgcG9zaXRpb24gaXMgcmVwb3J0ZWQKPj4+ IGFjY3VyYXRlbHkuIEJ1dCBJIGd1ZXNzIHlvdSBoYXZlIGEgYml0IG9mIHByb2JsZW0gd2l0aCBi b3RoLgo+Pj4KPj4KPj4gVGhlIHByb2JsZW0gaXMgaSdsbCBuZWVkIHRvIHRyZWF0IGNhbGxzIHRv IHJhZGVvbiBrbXMKPj4gZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIgZGlmZmVyZW50bHksIGRl cGVuZGluZyBpZiB0aGUgZnVuY3Rpb24gZ2V0cwo+PiBjYWxsZWQgZnJvbSB2YmxhbmsgaXJxLCBv ciBmcm9tIHJlZ3VsYXIgY29kZSwgc28gdGhhdCBodyBxdWlyayB0aGF0Cj4+IGNhdXNlcyBzcG9u dGFuZW91cyBtaXNmaXJpbmcgb2YgdGhlIHZibGFuayBpcnEgaW4gdGhlIG1pZGRsZSBvZiBzY2Fu b3V0Cj4+IHdvdWxkIGNvbmZ1c2UgbXkgaHcgdmJsYW5rIGNvdW50ZXIgY29va2luZyBtZXRob2Qg dG8gcHJvZHVjZSBhIGZha2UgaHcKPj4gdmJsYW5rIGNvdW50ZXIgaW5jcmVtZW50LiBUaGF0J3Mg d2h5IGkgbW92ZWQgdGhlIGZpbHRlcmluZyBmb3IgcmVkdW5kYW50Cj4+IGlycXMgYmFzZWQgb24g dmJsYW5rIHRpbWVzdGFtcHMgaW4gZHJtX3ZibGFua191cGRhdGUoKSBhcm91bmQgdG8gYWx3YXlz Cj4+IGFwcGx5LiBNYWtlcyB1cyByb2J1c3QgYWdhaW5zdCB0aGF0IHR5cGUgb2YgaHcgcXVpcmsg aW4gZ2VuZXJhbCBhbmQKPj4gbWFrZXMgbGlmZSBmb3IgdGhlIHZibGFuayBjb3VudGVyIGNvb2tp bmcgc28gbXVjaCBlYXNpZXIuCj4+Cj4+IEl0J3MgYSBiZWF1dGlmdWwgY29sbGFib3JhdGlvbiBv ZiBkaWZmZXJlbnQgaHcgYnVncyB0byBtYWtlIHRoaW5ncwo+PiBpbnRlcmVzdGluZyA6KQo+Pgo+ Pj4+Cj4+Pj4gVG8gZml4IHRoYXQgaSBoYXZlIGEgbWlub3IgcGF0Y2ggdG8gbWFrZSBkcm1fdXBk YXRlX3ZibGFua19jb3VudCgpIGFnYWluCj4+Pj4gcm9idXN0IGFnYWluc3Qgc3VjaCByZWR1bmRh bnQgY2FsbHMsIHdoaWNoIGkgd2lsbCBzZW5kIG91dCBsYXRlciB0byB0aGUKPj4+PiBtYWlsaW5n IGxpc3QuIERpZmYgYXR0YWNoZWQgZm9yIHJlZmVyZW5jZS4KPj4+Pgo+Pj4+IFRoZSBzZWNvbmQg cXVpcmsgb2YgQU1EIGh3IGlzIHRoYXQgdGhlIHZibGFuayBpbnRlcnJ1cHQgZmlyZXMgYSBmZXcK Pj4+PiBzY2FubGluZXMgYmVmb3JlIHN0YXJ0IG9mIHZibGFuaywgc28gZHJtX2hhbmRsZV92Ymxh bmsgLT4KPj4+PiBkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIC0+IGRldi0+ZHJpdmVyLT5nZXRf dmJsYW5rX2NvdW50ZXIoKSBnZXRzCj4+Pj4gY2FsbGVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhl IHZibGFuayBmb3Igd2hpY2ggdGhlIG5ldyB2YmxhbmsgY291bnQKPj4+PiBzaG91bGQgYmUgcXVl cmllZC4KPj4+Cj4+PiBEb2VzIGl0IGZpcmUgdG9vIHNvb24sIG9yIGlzIHRoZSBzY2Fub3V0IHBv c2l0aW9uIHJlZ2lzdGVyIHZhbHVlKHMpCj4+PiBqdXN0IG9mZnNldCBieSBhIGZldyBsaW5lcyBw ZXJoYXBzPwo+Pj4KPj4+IFdlIGhhdmUgdGhhdCB3aXRoIGk5MTUgYW5kIEkgc2ltcGx5IGZpeCB1 cCB0aGUgdmFsdWUgd2hlbiByZWFkaW5nIGl0Cj4+PiBvdXQuIEZvcnR1bmF0ZWx5IGZvciB1cyB0 aGUgb2Zmc2V0IGlzIGNvbnN0YW50IChvciBhdCBsZWFzdCBzZWVtcyB0bwo+Pj4gYmUpIGZvciBh IGdpdmVuIHBsYXRmb3JtL2Nvbm5lY3RvciBjb21iby4KPj4+Cj4+Cj4+IEkgdGhpbmsgdGhleSBm aXJlIHRvbyBzb29uLCBmcm9tIGFsbCBpJ3ZlIHNlZW4gc28gZmFyIG9uIGEgZmV3IGNhcmRzLgo+ Cj4gVGhhdCdzIHVuZm9ydHVuYXRlLiBGaXJpbmcgYSBiaXQgdG9vIGxhdGUgd291bGQgYmUgcGVy ZmVjdGx5IGZpbmUgZm9yCj4gbW9zdCB0aGluZ3MuIEFuZCB0aGF0J3MgYWN0dWFsbHkgd2hhdCBo YXBwZW5zIG9uIG9sZGVyIGludGVsIGh3LiBGaXJpbmcKPiB0b28gc29vbiBvcGVucyB1cCBzb21l IG1vcmUgcmFjZXMsIGFzIGluIHlvdSBtYXkgaGF2ZSB0byB3YWl0IGEgYml0Cj4gbW9yZSBhZnRl ciBnZXR0aW5nIHdva2VuIHVwIHRvIG1ha2Ugc3VyZSB5b3UndmUgY3Jvc3NlZCBpbnRvIHRoZQo+ IGZyZWFtZSB5b3Ugd2VyZSB3YWl0aW5nIGZvci4KPgo+IEFsc28gbm90IHN1cmUgaG93IHRvIGRl YWwgd2l0aCB0aGF0IHNvcnQgb2YgdGhpbmcgaW4gYSByZWFzb25hYmxlIHdheSBpbgo+IC5nZXRf dmJsYW5rX3RpbWVzdGFtcCgpLiBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRIGdldHMgcGFzc2VkIHRo ZXJlLCBzbyBpdAo+IGNvdWxkIGZ1ZGdlIHRoaW5ncyBhIGJpdCB3aGVuIHRoZSBlYXJseSBpcnEg YXJyaXZlcywgYnV0IHRoZW4gaWYgc29tZW9uZQo+IGNhbGxzIGRybV91cGRhdGVfdmJsYW5rX2Nv dW50KCkgYWZ0ZXIgdGhlIGlycSB3YXMgaGFuZGxlZCBidXQgYmVmb3JlCj4gc3RhcnQgb2YgdmJs YW5rIHlvdSdsbCBlbmQgdXAgd2l0aCBhIC0xIGRpZmYuCj4KPiBNYXliZSBzb21ldGhpbmcgbGlr ZToKPiAuZ2V0X3NjYW5vdXRfcG9zaXRvbigpCj4gewo+IAlyZWFkIGZyYW1lIGNvdW50ZXIgYW5k IHNjYWxpbmUgcG9zaXRpb24KPgo+IAlpZiAoKGZsYWdzICYgRFJNX0NBTExFRF9GUk9NX1ZCTElS USB8fCBmcmFtZSA9PSBsYXN0X2Z1ZGdlX2ZyYW1lKSAmJgo+IAkgICAgIHNjYW5saW5lX3NsaWdo dGx5X2JlbG93X3N0YXJ0X29mX3ZibGFuaykpIHsKPiAJCWxhc3RfZnVkZ2VfZnJhbWUgPSBmcmFt ZTsKPiAJCXNjYW5saW5lID0gc3RhcnRfb2ZfdmJsYW5rOwo+IAl9IGVsc2UKPiAJCWxhc3RfZnVk Z2VfZnJhbWUgPSBmcmFtZSAtIDE7Cj4gfQo+Cj4gY291bGQgYmUgZG9uZS4gU28gaXQgd291bGQg cHJldGVuZCB0aGUgc2NhbmxpbmUgaGFzIGFscmVhZHkgY3Jvc3NlZCBpbnRvCj4gdGhlIHZibGFu ayB3aGVuIHRoZSBpbnRlcnJ1cHQgYXJyaXZlcywgYW5kIGl0IHNob3VsZCBrZWVwIGRvaW5nIHRo YXQKPiB1bnRpbCB0aGUgZnJhbWUgY291bnRlciBpbmRpY2F0ZXMgdGhhdCB5b3UgcmVhbGx5IGNy b3NzZWQgdGhlcmUuCj4KCldoYXQgd2UgZG8gaW4gcmFkZW9uLWttcyBpcyBzaW1pbGFyLiBJZiBE Uk1fQ0FMTEVEX0ZST01fVkJMSVJRIGFuZCB3ZSAKYXJlIG5vIG1vcmUgdGhhbiAxJSBvZiB0aGUg ZGlzcGxheSBoZWlnaHQgYXdheSBmcm9tIHN0YXJ0IG9mIHZibGFuayB3ZSAKZnVkZ2Ugc2Nhbm91 dCBwb3NpdGlvbiBpbiBhIHdheSBzbyB0aGF0IHRoZSB0aW1lc3RhbXAgZ2V0cyBjb21wdXRlZCBm b3IgCnRoZSBzb29uLXRvLWJlZ2luIHZibGFuaywgbm90IHRoZSBvbGQgb25lLiBGb3IgdGhlIHZi bGFuayBjb3VudGVyIApjb29raW5nIGF0bS4gaSBjaGVjayBmb3IgaW5faXJxKCksIGFzc3VtaW5n IHRoYXQgbWVhbnMgdGhlIHNhbWUgYXMgCkRSTV9DQUxMRURfRlJPTV9WQkxJUlEsIGdpdmVuIHRo YXQgaXMgY3VycmVudGx5IHRoZSBvbmx5IGNhbGwgZnJvbSBhIGh3IAppcnEgcGF0aCwgYW5kIHRo ZW4gaSB0ZXN0IHNjYW5vdXQgcG9zaXRpb24gZm9yIApuby1tb3JlLXRoYW4tMTAtc2NhbmxpbmVz LXRvLXZibGFuaywgdG8gZGVjaWRlIGlmIGkgaGF2ZSB0byBidW1wIHRoZSAKcmV0dXJuZWQgdmJs YW5rIGNvdW50LiBPbiB0aGUgc2FtcGxlIG9mIGdwdXMgaSB0ZXN0ZWQgdGhlIHZibGFuayBpcnEg CmZpcmVkIHNvbWV3aGVyZSBiZXR3ZWVuIDIgYW5kIDQgc2NhbmxpbmVzIHRvbyBlYXJseSwgc28g MTAgc2NhbmxpbmVzIAptYXJnaW4gc2hvdWxkIGJlIG9rLiBTbyBpdCdzIG5vdCBmaXJpbmcgbXVj aCB0b28gZWFybHksIGp1c3QgYSBsaXR0bGUgYml0LgoKPj4KPj4+Pgo+Pj4+IFRoZSB0aGlyZCBw cm9ibGVtIGlzIHRoYXQgdGhlIERSTSB2YmxhbmsgaGFuZGxpbmcgYWx3YXlzIGhhZCB0aGUKPj4+ PiBhc3N1bXB0aW9uIHRoYXQgaGFyZHdhcmUgdmJsYW5rIGNvdW50ZXJzIHdvdWxkIGVzc2VudGlh bGx5IGluY3JlbWVudCBhdAo+Pj4+IGxlYWRpbmcgZWRnZSBvZiB2YmxhbmsgLSBiYXNpY2FsbHkg aW4gc3luYyB3aXRoIHRoZSBmaXJpbmcgb2YgdGhlIHZibGFuawo+Pj4+IGlycSwgc28gdGhhdCBh IGh3IGNvdW50ZXIgcmVhZG91dCBmcm9tIHdpdGhpbiB0aGUgdmJsYW5rIGlycSBoYW5kbGVyCj4+ Pj4gd291bGQgYWx3YXlzIGRlbGl2ZXIgdGhlIG5ldyBpbmNyZW1lbnRlZCB2YWx1ZS4gSWYgdGhp cyBhc3N1bXB0aW9uIGlzCj4+Pj4gdmlvbGF0ZWQgdGhlbiB0aGUgY291bnRpbmcgYnkgdXNlIG9m IHRoZSBodyBjb3VudGVyIGdldHMgdW5yZWxpYWJsZSwKPj4+PiBiZWNhdXNlIGRlcGVuZGluZyBv biByYW5kb20gc21hbGwgZGVsYXlzIGluIGlycSBoYW5kbGluZyB0aGUgY29kZSBtYXkKPj4+PiBl bmQgdXAgc2FtcGxpbmcgdGhlIGh3IGNvdW50ZXIgcHJlLSBvciBwb3N0LWluY3JlbWVudCwgbGVh ZGluZyB0bwo+Pj4+IGluY29uc2lzdGVudCB1cGRhdGluZyBhbmQgZnVua3kgYnVncy4gSXQganVz dCBzbyBoYXBwZW5zIHRoYXQgQU1ECj4+Pj4gaGFyZHdhcmUgZG9lc24ndCBpbmNyZW1lbnQgdGhl IGh3IGNvdW50ZXIgYXQgbGVhZGluZyBlZGdlIG9mIHZibGFuaywgc28KPj4+PiBzdHVmZiBmYWxs cyBhcGFydC4KPj4+Pgo+Pj4+IFNvIHRvIGZpeCB0aG9zZSB0d28gcHJvYmxlbXMgaSdtIHRpbmtl cmluZyB3aXRoIGNvb2tpbmcgdGhlIGh3IHZibGFuawo+Pj4+IGNvdW50ZXIgdmFsdWUgcmV0dXJu ZWQgYnkgcmFkZW9uX2dldF92YmxhbmtfY291bnRlcl9rbXMoKSB0byBtYWtlIGl0Cj4+Pj4gYXBw ZWFyIGFzIGlmIHRoZSBjb3VudGVyIGluY3JlbWVudGVkIGF0IGxlYWRpbmcgZWRnZSBvZiB2Ymxh bmsgaW4gc3luYwo+Pj4+IHdpdGggdmJsYW5rIGlycS4KPj4+Cj4+PiBZZWFoLCBJIGRvIHRoYXQg aW4gaTkxNSB0b28uIFdlbGwsIG9uIHNvbWUgcGxhdGZvcm1zIHdoZXJlIHRoZQo+Pj4gY291bnRl ciBpbmNyZW1lbnRzIGF0IHRoZSBsZWFkaW5nIGVkZ2Ugb2YgYWN0aXZlLgo+Pj4KPj4KPj4gWWVw LiBJIHRoaW5rIHRoYXQncyBrZXkgdG8gbWFrZSB0aGUgdmJsYW5rIGluc3RhbnQgb2ZmIHN0dWZm IHdvcmsgcmVsaWFibHkuCj4KPiBJIHRoaW5rIGl0IHNob3VsZCB3b3JrIE9LIHdpdGggdGhlIHRp bWVzdGFtcCBiYXNlZCBzdHVmZiB0b28sIGFzc3VtaW5nCj4geW91IGhhdmUgYWNjdXJhdGUgc2Nh bm91dCBwb3NpdGlvbiByZXBvcnRpbmcuIFNvIGhhdmluZyBhIHJlbGlhYmxlIGh3Cj4gY291bnRl ciBzaG91bGRuJ3QgYmUgYSByZXF1aXJlbWVudCBmb3IgdGhhdC4KPgoKWWVzLCBzaG91bGQgd29y ayBmb3IgdGhlIGluc3RhbnQgb2ZmL29uIGl0c2VsZi4gQnV0IHRoZSBsaW1pdGF0aW9uIG9mIAp0 aGF0IGlzIHRoYXQgd2l0aCB0aGUgdGltZXN0YW1wIGJhc2VkIHN0dWZmIHdlIGNhbiBvbmx5IGJl IGFjY3VyYXRlIGZvciAKdmJsYW5rIG9mZiBwZXJpb2RzIG9mIGEgZmV3IHNlY29uZHMgaW50byB0 aGUgZnV0dXJlLiBUaGUgZnJhbWVkdXJfbnMgd2UgCmNhbGN1bGF0ZSBmcm9tIGh3IG1vZGUgYW5k IHRoZSByZWZyZXNoIGR1cmF0aW9uIGNvbXB1dGVkIGZyb20gdGhlIAp0aW1lc3RhbXBzIGFzIG1l YXN1cmVkIGJ5IHRoZSBob3N0IGNsb2NrIGNhbiBlYXNpbHkgZGV2aWF0ZSBieSwgZS5nLiwgMTAg CnVzZWNzIGR1ZSB0byBkaWZmZXJlbmNlIGFuZCBkcmlmdCBiZXR3ZWVuIHRoZSBncHUgcGxsIGFu ZCBob3N0IGNsb2NrLCBzbyAKZm9yIGVhY2ggcGFzc2luZyByZWZyZXNoIGN5Y2xlIHdpdGggdmJs YW5rIG9mZiB3ZSdkIGFjY3VtdWxhdGUgfjEwIHVzZWNzIApvZiBlcnJvci4gQWZ0ZXIgYWNjdW11 bGF0aW5nIGhhbGYgYSByZWZyZXNoIGR1cmF0aW9uIG9mIGVycm9yIHdlJ2Qgcm91bmQgCnRvIHRo ZSB3cm9uZyBjb3VudCBhbmQgYmUgb2ZmIGJ5IG9uZS4gU28gYXQgNjAgSHogcmVmcmVzaCB3ZSdk IGhhdmUgCmFib3V0IDE2NjY2IHVzZWNzIC8gMiA9IDgzMzMgdXNlY3MgaGVhZHJvb20gLyAxMCB1 c2VjcyBwZXIgZnJhbWUgZXJyb3IgfiAKODMzIHJlZnJlc2ggY3ljbGVzIGJlZm9yZSBlcnJvcnMg aGFwcGVuLiBBdCA2MCBIeiB3ZSdkIGhhdmUgODMzIC8gNjAgfiAKMTQgc2Vjb25kcyBvZiB2Ymxh bmsgb2ZmLiBGb3IgcmF0ZXMgb2YgMTIwIEh6IGdhbWVyIHBhbmVscyBvciBzb21lIDIwMCAKSHog bmV1cm8tc2NpZW5jZSBhcHBsaWNhdGlvbnMgd2UnZCBvbmx5IGdldCBhIGZldyBzZWNvbmRzIG9m ZiBlcnJvciBmcmVlIAp2Ymxhbmsgb2ZmIHdpdGhvdXQgcmVhbCBoYXJkd2FyZSBjb3VudGVycy4K ClNvIGl0J3MgZ29vZCBlbm91Z2ggZm9yIHR5cGljYWwgZGVza3RvcCAKYXBwbGljYXRpb25zL2Nv bXBvc2l0b3JzL2dhbWVzL21lZGlhIHBsYXllcnMsIGFuZCBhIG5pY2UgaW1wcm92ZW1lbnQgCm92 ZXIgdGhlIHByZXZpb3VzIHN0YXRlLCBidXQgbm90IHF1aXRlIHN1ZmZpY2llbnQgZm9yIGFwcGxp Y2F0aW9ucyB0aGF0IApuZWVkIGxvbmcgdGltZSBjb25zaXN0ZW50IHZibGFuayBjb3VudHMgZm9y IGxvbmcgd2FpdHMgb2YgbXVsdGlwbGUgCnNlY29uZHMgb3IgZXZlbiBtaW51dGVzLiBTbyBpdCdz IHN0aWxsIGdvb2QgdG8gaGF2ZSBodyBjb3VudGVycyBpZiB3ZSAKY2FuIGdldCBzb21lIHRoYXQg YXJlIHJlbGlhYmxlIGVub3VnaC4KCi1tYXJpbwoKCj4+Cj4+IC1tYXJpbwo+Pgo+Pj4+Cj4+Pj4g SXQgYWxtb3N0IHNvcnQgb2Ygd29ya3Mgb24gdGhlIHJzNjAwIGNvZGUgcGF0aCwgYnV0IGkgbmVl ZCBhIGJpdCBvZiBpbmZvCj4+Pj4gZnJvbSB5b3U6Cj4+Pj4KPj4+PiAxLiBUaGVyZSdzIHRoaXMg cmVnaXN0ZXIgZnJvbSB0aGUgb2xkIHNwZWNzIGZvciBtNzYucGRmLCB3aGljaCBpcyBub3QKPj4+ PiBwYXJ0IG9mIHRoZSBjdXJyZW50IHJlZ2lzdGVyIGRlZmluZXMgZm9yIHJhZGVvbi1rbXM6Cj4+ Pj4KPj4+PiAiRDFDUlRDX1NUQVRVU19WRl9DT1VOVCAtIFJXIC0gMzIgYml0cyAtIFtHcHVGME1N UmVnOjB4NjBBOF0iCj4+Pj4KPj4+PiBJdCBjb250YWlucyB0aGUgbG93ZXIgMTYgYml0cyBvZiBm cmFtZWNvdW50ZXIgYW5kIHRoZSAxMyBiaXRzIG9mCj4+Pj4gdmVydGljYWwgc2Nhbm91dCBwb3Np dGlvbi4gSXQgc2VlbXMgdG8gZ2l2ZSB0aGUgc2FtZSByZWFkaW5ncyBhcyB0aGUgMjQKPj4+PiBi aXQgUl8wMDYwQTRfRDFDUlRDX1NUQVRVU19GUkFNRV9DT1VOVCB3ZSB1c2UgZm9yIHRoZSBodyBj b3VudGVyLiBUaGlzCj4+Pj4gd291bGQgY29tZSBoYW5keS4KPj4+Pgo+Pj4+IERvZXMgRXZlcmdy ZWVuIGFuZCBsYXRlciBoYXZlIGEgc2FtZS9zaW1pbGFyIHJlZ2lzdGVyIGFuZCB3aGVyZSBpcyBp dD8KPj4+Pgo+Pj4+IDIuIFRoZSBodyBmcmFtZWNvdW50ZXIgc2VlbXMgdG8gaW5jcmVtZW50IHdo ZW4gdGhlIHZlcnRpY2FsIHNjYW5vdXQKPj4+PiBwb3NpdGlvbiB3cmFwcyBiYWNrIGZyb20gKFZU T1RBTCAtIDEpIHRvIDAsIGF0IGxlYXN0IG9uIHRoZSBvbmUgRENFLTMKPj4+PiBncHUgaSB0ZXN0 ZWQgc28gZmFyLiBJcyB0aGlzIHNvIG9uIGFsbCBhc2ljcz8gQW5kIGlzIHRoZSBodyBjb3VudGVy Cj4+Pj4gaW5jcmVtZW50IGhhcHBlbmluZyBleGFjdGx5IGF0IHRoZSBtb21lbnQgdGhhdCB2ZXJ0 aWNhbCBzY2Fub3V0IHBvc2l0aW9uCj4+Pj4ganVtcHMgYmFjayB0byB6ZXJvLCBpZS4gYm90aCBl dmVudHMgYXJlIGRyaXZlbiBieSB0aGUgc2FtZSBzaWduYWw/IE9yIGlzCj4+Pj4gdGhlIGZyYW1l Y291bnRlciBpbmNyZW1lbnQganVzdCBoYXBwZW5pbmcgc29tZXdoZXJlIGluc2lkZSBlaXRoZXIK Pj4+PiBzY2FubGluZSBWVE9UQUwtMSBvciBzY2FubGluZSAwPwo+Pj4+Cj4+Pj4KPj4+PiBJZiB3 ZSBjYW4gZml4IHRoaXMgYW5kIGdldCBpdCBpbnRvIHJjMiBvciByYzMgdGhlbiB3ZSBjb3VsZCBh dm9pZCBhIGJhZAo+Pj4+IHJlZ3Jlc3Npb24gYW5kIHdpdGggYSBiaXQgb2YgbHVjayBhdCB0aGUg c2FtZSB0aW1lIGltcHJvdmUgYnkgYmVpbmcgYWJsZQo+Pj4+IHRvIHNldCBkZXYtPnZibGFua19k aXNhYmxlX2ltbWVkaWF0ZSA9IHRydWUgdGhlbiBhbmQgYWxsb3cgdmJsYW5rIGlycXMKPj4+PiB0 byBnZXQgdHVybmVkIG9mZiBtb3JlIGFnZ3Jlc3NpdmVseSBmb3IgYSBiaXQgb2YgZXh0cmEgcG93 ZXIgc2F2aW5nLgo+Pj4+Cj4+Pj4gdGhhbmtzLAo+Pj4+IC1tYXJpbwo+Pj4KPj4+PiAtLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jCj4+Pj4gQEAgLTE3Miw5ICsxNzIsMTEgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92Ymxh bmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdz KQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICAgc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+Pj4+IC0gICAgICAgdTMyIGN1cl92YmxhbmssIGRpZmY7 Cj4+Pj4gKyAgICAgICB1MzIgY3VyX3ZibGFuaywgZGlmZiA9IDA7Cj4+Pj4gICAgICAgICAgIGJv b2wgcmM7Cj4+Pj4gICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHRfdmJsYW5rOwo+Pj4+ICsgICAg ICAgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRfb2xkOwo+Pj4+ICsgICAgICAgdTY0IGRpZmZfbnM7 Cj4+Pj4gICAgICAgICAgIGludCBjb3VudCA9IERSTV9USU1FU1RBTVBfTUFYUkVUUklFUzsKPj4+ PiAgICAgICAgICAgaW50IGZyYW1lZHVyX25zID0gdmJsYW5rLT5mcmFtZWR1cl9uczsKPj4+Pgo+ Pj4+IEBAIC0xOTUsMTMgKzE5NywxNSBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19j b3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPj4+PiAgICAg ICAgICAgICAgICAgICByYyA9IGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBwaXBlLCAm dF92YmxhbmssIGZsYWdzKTsKPj4+PiAgICAgICAgICAgfSB3aGlsZSAoY3VyX3ZibGFuayAhPSBk ZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgcGlwZSkgJiYgLS1jb3VudCA+IDAp Owo+Pj4+Cj4+Pj4gLSAgICAgICBpZiAoZGV2LT5tYXhfdmJsYW5rX2NvdW50ICE9IDApIHsKPj4+ PiAtICAgICAgICAgICAgICAgLyogdHJ1c3QgdGhlIGh3IGNvdW50ZXIgd2hlbiBpdCdzIGFyb3Vu ZCAqLwo+Pj4+IC0gICAgICAgICAgICAgICBkaWZmID0gKGN1cl92YmxhbmsgLSB2YmxhbmstPmxh c3QpICYgZGV2LT5tYXhfdmJsYW5rX2NvdW50Owo+Pj4+IC0gICAgICAgfSBlbHNlIGlmIChyYyAm JiBmcmFtZWR1cl9ucykgewo+Pj4+IC0gICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXZh bCAqdF9vbGQ7Cj4+Pj4gLSAgICAgICAgICAgICAgIHU2NCBkaWZmX25zOwo+Pj4+IC0KPj4+PiAr ICAgICAgIC8qCj4+Pj4gKyAgICAgICAgKiBBbHdheXMgdXNlIHZibGFuayB0aW1lc3RhbXBpbmcg YmFzZWQgbWV0aG9kIGlmIHN1cHBvcnRlZCB0byByZWplY3QKPj4+PiArICAgICAgICAqIHJlZHVu ZGFudCB2YmxhbmsgaXJxcy4gRS5nLiwgQU1EIGhhcmR3YXJlIG5lZWRzIHRoaXMgdG8gbm90IHNj cmV3IHVwCj4+Pj4gKyAgICAgICAgKiBkdWUgdG8gc29tZSBpcnEgaGFuZGxpbmcgcXVpcmsuCj4+ Pgo+Pj4gSG1tLiBJJ20gdGhpbmtpbmcgaXQgd291bGQgYmUgYmV0dGVyIHRvIHNpbXBseSBub3Qg Y2xhaW0gdGhhdCB0aGVyZSdzIGEgaHcKPj4+IGNvdW50ZXIgaWYgaXQgaXNuJ3QgcmVsaWFibGUu Cj4+Pgo+Pj4+ICsgICAgICAgICoKPj4+PiArICAgICAgICAqIFRoaXMgYWxzbyBzZXRzIHRoZSBk aWZmIHZhbHVlIGZvciB1c2UgYXMgZmFsbGJhY2sgYmVsb3cgaW4gY2FzZSB0aGUKPj4+PiArICAg ICAgICAqIGh3IGRvZXMgbm90IHN1cHBvcnQgYSBzdWl0YWJsZSBodyB2YmxhbmsgY291bnRlci4K Pj4+PiArICAgICAgICAqLwo+Pj4+ICsgICAgICAgaWYgKHJjICYmIGZyYW1lZHVyX25zKSB7Cj4+ Pj4gICAgICAgICAgICAgICAgICAgdF9vbGQgPSAmdmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwg dmJsYW5rLT5jb3VudCk7Cj4+Pj4gICAgICAgICAgICAgICAgICAgZGlmZl9ucyA9IHRpbWV2YWxf dG9fbnMoJnRfdmJsYW5rKSAtIHRpbWV2YWxfdG9fbnModF9vbGQpOwo+Pj4+Cj4+Pj4gQEAgLTIx MiwxMSArMjE2LDI4IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+Pj4+ICAgICAgICAgICAgICAg ICAgICAqLwo+Pj4+ICAgICAgICAgICAgICAgICAgIGRpZmYgPSBESVZfUk9VTkRfQ0xPU0VTVF9V TEwoZGlmZl9ucywgZnJhbWVkdXJfbnMpOwo+Pj4+Cj4+Pj4gLSAgICAgICAgICAgICAgIGlmIChk aWZmID09IDAgJiYgZmxhZ3MgJiBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRKQo+Pj4+IC0gICAgICAg ICAgICAgICAgICAgICAgIERSTV9ERUJVR19WQkwoImNydGMgJXU6IFJlZHVuZGFudCB2YmxpcnEg aWdub3JlZC4iCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRp ZmZfbnMgPSAlbGxkLCBmcmFtZWR1cl9ucyA9ICVkKVxuIiwKPj4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBpcGUsIChsb25nIGxvbmcpIGRpZmZfbnMsIGZyYW1lZHVy X25zKTsKPj4+PiAtICAgICAgIH0gZWxzZSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGlmIChkaWZm ID09IDAgJiYgZmxhZ3MgJiBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRKSB7Cj4+Pj4gKyAgICAgICAg ICAgICAgICAgICBEUk1fREVCVUdfVkJMKCJjcnRjICV1OiBSZWR1bmRhbnQgdmJsaXJxIGlnbm9y ZWQuIgo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIiBkaWZmX25zID0gJWxsZCwgZnJhbWVkdXJf bnMgPSAlZClcbiIsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICBwaXBlLCAobG9uZyBsb25nKSBk aWZmX25zLCBmcmFtZWR1cl9ucyk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgLyog VHJlYXQgdGhpcyByZWR1bmRhbnQgaW52b2NhdGlvbiBhcyBuby1vcC4gKi8KPj4+PiArICAgICAg ICAgICAgICAgICAgIFdBUk5fT05fT05DRShjdXJfdmJsYW5rICE9IHZibGFuay0+bGFzdCk7Cj4+ Pj4gKyAgICAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4gKyAgICAgICAgICAgICAgIH0KPj4+ PiArICAgICAgIH0KPj4+PiArCj4+Pj4gKyAgICAgICAvKgo+Pj4+ICsgICAgICAgICogaHcgY291 bnRlcnMsIGlmIG1hcmtlZCBhcyBzdXBwb3J0ZWQgdmlhIG1heF92YmxhbmtfY291bnQgIT0gMCwK Pj4+PiArICAgICAgICAqICptdXN0KiBpbmNyZW1lbnQgYXQgbGVhZGluZyBlZGdlIG9mIHZibGFu ayBhbmQgaW4gc3luYyB3aXRoCj4+Pj4gKyAgICAgICAgKiB0aGUgZmlyaW5nIG9mIHRoZSBodyB2 YmxhbmsgaXJxLCBvdGhlcndpc2Ugd2UgaGF2ZSBhIHJhY2UgaGVyZQo+Pj4+ICsgICAgICAgICog YmV0d2VlbiBncHUgYW5kIHVzLCB3aGVyZSBzbWFsbCB2YXJpYXRpb25zIGluIG91ciBleGVjdXRp b24KPj4+PiArICAgICAgICAqIHRpbWluZyBjYW4gY2F1c2Ugb2ZmLWJ5LW9uZSBtaXNjb3VudGlu ZyBvZiB2YmxhbmtzLgo+Pj4+ICsgICAgICAgICovCj4+Pj4gKyAgICAgICBpZiAoZGV2LT5tYXhf dmJsYW5rX2NvdW50ICE9IDApIHsKPj4+PiArICAgICAgICAgICAgICAgLyogdHJ1c3QgdGhlIGh3 IGNvdW50ZXIgd2hlbiBpdCdzIGFyb3VuZCAqLwo+Pj4+ICsgICAgICAgICAgICAgICBkaWZmID0g KGN1cl92YmxhbmsgLSB2YmxhbmstPmxhc3QpICYgZGV2LT5tYXhfdmJsYW5rX2NvdW50Owo+Pj4+ ICsgICAgICAgfSBlbHNlIGlmICghKHJjICYmIGZyYW1lZHVyX25zKSkgewo+Pj4+ICAgICAgICAg ICAgICAgICAgIC8qIHNvbWUga2luZCBvZiBkZWZhdWx0IGZvciBkcml2ZXJzIHcvbyBhY2N1cmF0 ZSB2YmwgdGltZXN0YW1waW5nICovCj4+Pj4gICAgICAgICAgICAgICAgICAgZGlmZiA9IChmbGFn cyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpICE9IDA7Cj4+Pj4gICAgICAgICAgIH0KPj4+Cj4+ Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==