From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH] drm/nouveau: Fix pre-nv50 pageflip events Date: Mon, 9 Nov 2015 14:34:12 +0100 Message-ID: <5640A0D4.7060806@gmail.com> References: <1446242140-6766-1-git-send-email-daniel.vetter@ffwll.ch> <20151106171930.GA24026@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20151106171930.GA24026@ulmo> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Thierry Reding , Daniel Vetter Cc: Nouveau Dev , Thierry Reding , Ben Skeggs , DRI Development , Daniel Vetter List-Id: nouveau.vger.kernel.org SGksCgppIGp1c3Qgc2VudCBvdXQgYSAodjIpIG9mIERhbmllbHMgcGF0Y2gsIHdpdGggbXkgcmV2 aWV3IGNvbW1lbnRzIGFuZCAKcmV2aWV3ZWQtYnkgZm9yIHRoZSBjb2RlIGFscmVhZHkgYXBwbGll ZCB0byB0aGUgY29kZSBmb3IgY29udmVuaWVuY2UuIApJbnRlcnNwZXJzZWQgYmVsb3cgaW4gdGhl IHBhdGNoIHRoZSByZXZpZXcgY29tbWVudHMgZm9yIGEgZmV3IHNtYWxsIGJ1Z3MuCgpUaGlzIGFu ZCBEYW5pZWxzIG9yaWdpbmFsIHBhdGNoIGlzIG9ubHkgY29tcGlsZSB0ZXN0ZWQuIEkgc3RpbGwg aGF2ZSAKdGhhdCBHZUZvcmNlIDc4MDAgR1RYLCBidXQgdW5mb3J0dW5hdGVseSBpIGRvbid0IGhh dmUgdGhlIG9yaWdpbmFsIFBDIAphbnltb3JlIGZvciB0ZXN0aW5nIGl0LiBUb2RheSBpIHRyaWVk IHRvIHB1dCB0aGUgY2FyZCBhcyBhIDJuZCBub24tYm9vdCAKY2FyZCBpbnRvIGEgTWFjUHJvIGZv ciB0ZXN0aW5nLCBidXQgdGhlIEVGSSBiYXNlZCBNYWMgYXBwYXJlbnRseSBkaWRuJ3QgCmxpa2Ug dGhhdCBvbGQgUEMgY2FyZCB0aGF0IG11Y2gsIHNvIHRlc3Rpbmcgd2FzIGEgbm8gZ28uIEJvb3R1 cCBlbmRlZCAKd2l0aCBzb21lIG5vdXZlYXUgTU1JTyByZWFkIGFuZCB3cml0ZSBmYXVsdHMgYW5k IHRoZW4gbG9ja3VwLiBVc3VhbGx5IAptb3JlIHJlY2VudCBOVmlkaWEgUEMgY2FyZHMgZG8gd29y ayBpbiBNYWNzIHVuZGVyIExpbnV4IHdpdGggbm91dmVhdSBhcyAKbm9uLWJvb3QgZ3B1cywgYnV0 IGZvciBzb21lIHJlYXNvbiB0aGlzIG9uZSBkb2Vzbid0LgoKQW55d2F5LCBhZnRlciBkaWdnaW5n IHRocm91Z2ggbXkgb2xkIGUtbWFpbCBjb252ZXJzYXRpb24gd2l0aCBCZW4gZnJvbSBhIAp5ZWFy IGFnbywgaSB0aGluayBEYW5pZWwncyBwYXRjaCBzaG91bGQgd29yayBhbmQgc29sdmUgdGhlIHBy b2JsZW0gcXVpdGUgCmVsZWdhbnRseToKCmlpcmMgQmVuIGV4cGxhaW5lZCB0byBtZSB0aGF0IG9u IHByZS1udjUwLCBub3V2ZWF1X2ZsaXBfY29tcGxldGUoKSAKKHdoaWNoIGNhbGxzIG5vdXZlYXVf ZmluaXNoX3BhZ2VfZmxpcCgpKSwgaXMgbm90IHRyaWdnZXJlZCBieSBhbiBhY3R1YWwgCnBhZ2Vm bGlwIGludGVycnVwdCwgYnV0IGJ5IGEgZmlmbyBzb2Z0d2FyZSBpbnRlcnJ1cHQgcHJvZ3JhbW1l ZCB0byBmaXJlIApzaG9ydGx5IGJlZm9yZSB0aGUgdmJsYW5rLiBPbiBteSB0ZXN0IGNhcmQgaXQg ZmlyZWQgaW4gdGhlIGxhc3Qgc2NhbmxpbmUgCmJlZm9yZSB2YmxhbmssIHByb2JhYmx5IGF0IHRo ZSBlbmQgb2YgYWN0aXZlIHNjYW5vdXQuIApub3V2ZWF1X2ZsaXBfY29tcGxldGUoKSB3b3VsZCBm aXJzdCBjYWxsIG5vdXZlYXVfZmluaXNoX3BhZ2VfZmxpcCgpIHRvIApzZW5kIHRoZSBwYWdlZmxp cCBldmVudCwgYW5kIHRoZW4gbWFudWFsbHkgZmxpcCB0byB0aGUgbmV3IGZyYW1lYnVmZmVyIApi eSBjYWxsaW5nICBudl9zZXRfY3J0Y19iYXNlKCkuIEkgdGhpbmsvYXNzdW1lIG52X3NldF9jcnRj X2Jhc2UoKSBpcyBub3QgCml0c2VsZiBzeW5jaHJvbml6ZWQgdG8gdmJsYW5rLCBzbyB3ZSBzaG91 bGQgZ2V0IHRoZSBjb3JyZWN0IGJlaGF2aW91cjoKCjEuIFNob3J0bHkgYmVmb3JlIHN0YXJ0IG9m IHZibGFuazogZmlmbyBzdyBpbnRlcnJ1cHQgLT4gCm5vdXZlYXVfZmxpcF9jb21wbGV0ZSgpIC0+ IG5vdXZlYXVfZmluaXNoX3BhZ2VfZmxpcCgpIHF1ZXVlcyBwYWdlZmxpcCAKZXZlbnQgZm9yIGxh dGVyIGRlbGl2ZXJ5IGJ5IHZibGFuayBpcnEgaGFuZGxlciAtPiBudl9zZXRfY3J0Y19iYXNlKCkg CmZsaXBzIHRvIHRoZSBuZXcgZmIuIFJldHVybiBmcm9tIGlycS4KCjIuIEEgZmV3IHNjYW5saW5l cyBsYXRlciwgdmJsYW5rIGlycSBmaXJlcyAtPiBkcm1faGFuZGxlX3ZibGFuaygpIAp1cGRhdGVz IHZibGFuayBjb3VudCBhbmQgdGltZXN0YW1wcyAtPiBkcm1faGFuZGxlX3ZibGFua19ldmVudHMo KSAKZGlzcGF0Y2hlcyBxdWV1ZWQgcGFnZWZsaXAgY29tcGxldGlvbiBldmVudCBmcm9tIDEpLCBu b3cgdGFnZ2VkIHdpdGggCnByb3BlciB2YmxhbmsgY291bnQgYW5kIHRpbWVzdGFtcCBvZiBmbGlw IGNvbXBsZXRpb24uCgp0aGFua3MsCi1tYXJpbwoKCk9uIDExLzA2LzIwMTUgMDY6MTkgUE0sIFRo aWVycnkgUmVkaW5nIHdyb3RlOgo+IENjICs9IE1hcmlvIEtsZWluZXIsIE1hcmlvLCBjYW4geW91 IHRha2UgYSBsb29rIHdoZXRoZXIgdGhpcyBwcm9wb3NlZAo+IHNvbHV0aW9uIG1ha2VzIHNlbnNl IGFuZCBmaXhlcyB0aGUgaXNzdWVzIHlvdSB3ZXJlIHNlZWluZyBiYWNrIHdoZW4geW91Cj4gcG9z dGVkIHRoZSBwYXRjaCBpbiBjb21taXQ6Cj4KPiBjb21taXQgYWY0ODcwZTQwNjEyNmI3YWMwYWU3 YzdjZTU3NTFmMjVlYmU2MGYyOAo+IEF1dGhvcjogTWFyaW8gS2xlaW5lciA8bWFyaW8ua2xlaW5l ci5kZUBnbWFpbC5jb20+Cj4gRGF0ZTogICBUdWUgTWF5IDEzIDAwOjQyOjA4IDIwMTQgKzAyMDAK Pgo+ICAgICAgZHJtL25vdXZlYXUva21zL252MDQtbnY0MDogZml4IHBhZ2VmbGlwIGV2ZW50cyB2 aWEgc3BlY2lhbCBjYXNlLgo+Cj4gICAgICBDYXJkcyB3aXRoIG52MDQgZGlzcGxheSBlbmdpbmUg Y2FuJ3QgcmVsaWFibHkgdXNlIHZibGFuawo+ICAgICAgY291bnRzIGFuZCB0aW1lc3RhbXBzIGNv bXB1dGVkIHZpYSBkcm1faGFuZGxlX3ZibGFuaygpLCBhcwo+ICAgICAgdGhlIGZ1bmN0aW9uIGdl dHMgaW52b2tlZCBhZnRlciBzZW5kaW5nIHRoZSBwYWdlZmxpcCBldmVudHMuCj4KPiAgICAgIEZp eCB0aGlzIGJ5IGRlZmF1bHRpbmcgdG8gdGhlIG9sZCBjcnRjaWQgPSAtMSBmYWxsYmFjayBwYXRo Cj4gICAgICBvbiA8PSBOVi01MCBjYXJkcywgYW5kIG9ubHkgdXNpbmcgdGhlIHByZWNpc2UgcGF0 aCBvbiBOVi01MAo+ICAgICAgYW5kIGxhdGVyLgo+Cj4gICAgICBTaWduZWQtb2ZmLWJ5OiBNYXJp byBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4KPiAgICAgIFNpZ25lZC1vZmYt Ynk6IEJlbiBTa2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4KPiAgICAgIENjOiA8c3RhYmxlQHZn ZXIua2VybmVsLm9yZz4gIyAzLjEzKwo+Cj4gRG8geW91IGhhcHBlbiB0byBzdGlsbCBoYXZlIHRo ZSBzZXR1cCBhcm91bmQgd2hlcmUgeW91IHNhdyB0aGlzPwo+Cj4gVGhpZXJyeQo+Cj4gT24gRnJp LCBPY3QgMzAsIDIwMTUgYXQgMTA6NTU6NDBQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToK Pj4gQXBwYXJlbnRseSBwcmUtbnY1MCBwYWdlZmxpcCBldmVudHMgaGFwcGVuIGJlZm9yZSB0aGUg YWN0dWFsIHZibGFuawo+PiBwZXJpb2QuIFRoZXJlZm9yZSB0aGF0IGZ1bmN0aW9uYWxpdHkgZ290 IHNlbWktZGlzYWJsZWQgaW4KPj4KPj4gY29tbWl0IGFmNDg3MGU0MDYxMjZiN2FjMGFlN2M3Y2U1 NzUxZjI1ZWJlNjBmMjgKPj4gQXV0aG9yOiBNYXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRl QGdtYWlsLmNvbT4KPj4gRGF0ZTogICBUdWUgTWF5IDEzIDAwOjQyOjA4IDIwMTQgKzAyMDAKPj4K Pj4gICAgICBkcm0vbm91dmVhdS9rbXMvbnYwNC1udjQwOiBmaXggcGFnZWZsaXAgZXZlbnRzIHZp YSBzcGVjaWFsIGNhc2UuCj4+Cj4+IFVuZm9ydHVuYXRlbHkgdGhhdCBoYWNrIGdvdCB1cHJvb3Rl ZCBpbgo+Pgo+PiBjb21taXQgY2MxZWYxMThmYzA5OTI5NWFlNmFhYmJhY2M4YWY5NGQ4ZDg4ODVl Ygo+PiBBdXRob3I6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+IERhdGU6 ICAgV2VkIEF1ZyAxMiAxNzowMDozMSAyMDE1ICswMjAwCj4+Cj4+ICAgICAgZHJtL2lycTogTWFr ZSBwaXBlIHVuc2lnbmVkIGFuZCBuYW1lIGNvbnNpc3RlbnQKPj4KPj4gVHJpZ2VyaW5nIGEgd2Fy bmluZyB3aGVuIHRyeWluZyB0byBzYW1wbGUgdGhlIHZibGFuayB0aW1lc3RhbXAgZm9yIGEKPj4g bm9uLWV4aXN0aW5nIHBpcGUuIFRoZXJlJ3MgYSBmZXcgd2F5cyB0byBmaXggdGhpczoKPj4KPj4g LSBPcGVuLWNvZGUgdGhlIG9sZCBiZWhhdmlvdXIsIHdoaWNoIGp1c3QgZW5zaHJpbmVzIHRoaXMg c2xpZ2h0Cj4+ICAgIGJyZWFrYWdlIG9mIHRoZSB1c2Vyc3BhY2UgQUJJLgo+Pgo+PiAtIFJldmVy dCBNYXJpbydzIGNvbW1pdCBhbmQgYWdhaW4gaW5mbGljdCBicm9rZW4gdGltZXN0YW1wcywgYWdh aW4gbm90Cj4+ICAgIHByZXR0eS4KPj4KPj4gLSBGaXggdGhpcyBmb3IgcmVhbCBieSBkZWxheWlu ZyB0aGUgcGFnZWZsaXAgVFMgdW50aWwgdGhlIG5leHQgdmJsYW5rCj4+ICAgIGludGVycnVwdCwg dGhlcmVieSBtYWtpbmcgaXQgYWNjdXJhdGUuCj4+Cj4+IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0 aGUgdGhpcmQgb3B0aW9uLiBTaW5jZSBoYXZpbmcgYSBwYWdlIGZsaXAKPj4gaW50ZXJydXB0IHRo YXQgaGFwcGVucyB3aGVuIHRoZSBwYWdlZmxpcCBnZXRzIGFybWVkIGFuZCBub3Qgd2hlbiBpdAo+ PiBjb21wbGV0ZXMgaW4gdGhlIG5leHQgdmJsYW5rIHNlZW1zIHRvIGJlIGZhaXJseSBjb21tb24g KG9sZGVyIGk5MTUgaHcKPj4gd29ya3MgdmVyeSBzaW1pbGFybHkpIGNyZWF0ZSBhIG5ldyBoZWxw ZXIgdG8gYXJtIHZibGFuayBldmVudHMgZm9yCj4+IHN1Y2ggZHJpdmVycy4KPj4KPj4gQnVnemls bGE6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDMxCj4+ IENjOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgo+PiBDYzogTWFyaW8gS2xl aW5lciA8bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5jb20+Cj4+IENjOiBCZW4gU2tlZ2dzIDxic2tl Z2dzQHJlZGhhdC5jb20+Cj4+IENjOiBJbGlhIE1pcmtpbiA8aW1pcmtpbkBhbHVtLm1pdC5lZHU+ Cj4+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29t Pgo+PiAtLS0KPj4KPj4gTm90ZSB0aGF0IGR1ZSB0byBsYWNrIG9mIGh3IHRoaXMgaXMgY29tcGxl dGVseSB1bnRlc3RlZC4gQnV0IEkgdGhpbmsKPj4gaXQncyB0aGUgcmlnaHQgd2F5IHRvIGZpeCB0 aGlzLgo+PiAtRGFuaWVsCj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgICAg ICAgICAgICAgICAgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxheS5jIHwgMTYgKysrKy0tLS0tCj4+ ICAgaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysKPj4g ICAzIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+Pgo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1faXJxLmMKPj4gaW5kZXggNDZkYmMzNGI4MWJhLi5iM2UxZjU4NjY2YTYgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9pcnEuYwo+PiBAQCAtOTcyLDcgKzk3Miw4IEBAIHN0YXRpYyB2b2lkIHNlbmRfdmJsYW5r X2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgCQlzdHJ1Y3QgZHJtX3BlbmRpbmdf dmJsYW5rX2V2ZW50ICplLAo+PiAgIAkJdW5zaWduZWQgbG9uZyBzZXEsIHN0cnVjdCB0aW1ldmFs ICpub3cpCj4+ICAgewo+PiAtCVdBUk5fT05fU01QKCFzcGluX2lzX2xvY2tlZCgmZGV2LT5ldmVu dF9sb2NrKSk7Cj4+ICsJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXYtPmV2ZW50X2xvY2spOwo+PiAr Cj4+ICAgCWUtPmV2ZW50LnNlcXVlbmNlID0gc2VxOwo+PiAgIAllLT5ldmVudC50dl9zZWMgPSBu b3ctPnR2X3NlYzsKPj4gICAJZS0+ZXZlbnQudHZfdXNlYyA9IG5vdy0+dHZfdXNlYzsKPj4gQEAg LTk4NSw2ICs5ODYsNTkgQEAgc3RhdGljIHZvaWQgc2VuZF92YmxhbmtfZXZlbnQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPj4gICB9Cj4+Cj4+ICAgLyoqCj4+ICsgKiBkcm1fYXJtX3ZibGFua19l dmVudCAtIGFybSB2YmxhbmtlIGV2ZW50IGFmdGVyIHBhZ2VmbGlwCgpUeXBvIHZibGFua2UgLT4g dmJsYW5rCgo+PiArICogQGRldjogRFJNIGRldmljZQo+PiArICogQHBpcGU6IENSVEMgaW5kZXgK Pj4gKyAqIEBlOiB0aGUgZXZlbnQgdG8gcHJlcGFyZSB0byBzZW5kCj4+ICsgKgo+PiArICogQSBs b3Qgb2YgZHJpdmVycyBuZWVkIHRvIGdlbmVyYXRlIHZibGFuayBldmVudHMgZm9yIHRoZSB2ZXJ5 IG5leHQgdmJsYW5rCj4+ICsgKiBpbnRlcnJ1cHQuIEZvciBleGFtcGxlIHdoZW4gdGhlIHBhZ2Ug ZmxpcCBpbnRlcnJ1cHQgaGFwcGVucyB3aGVuIHRoZSBwYWdlCj4+ICsgKiBmbGlwIGdldHMgYXJt ZWQsIGJ1dCBub3Qgd2hlbiBpdCBhY3R1YWxseSBleGVjdXRlcyB3aXRoaW4gdGhlIG5leHQgdmJs YW5rCj4+ICsgKiBwZXJpb2QuIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGltcGxlbWVudHMgZXhhY3Rs eSB0aGUgcmVxdWlyZWQgdmJsYW5rIGFybWluZwo+PiArICogYmVoYXZpb3VyLgo+PiArICoKPj4g KyAqIENhbGxlciBtdXN0IGhvbGQgZXZlbnQgbG9jay4gQ2FsbGVyIG11c3QgYWxzbyBob2xkIGEg dmJsYW5rIHJlZmVyZW5jZSBmb3IgdGhlCj4+ICsgKiBldmVudCBAZSwgd2hpY2ggd2lsbCBiZSBk cm9wcGVkIHdoZW4gdGhlIG5leHQgdmJsYW5rIGFycml2ZXMuCj4+ICsgKgo+PiArICogVGhpcyBp cyB0aGUgbGVnYWN5IHZlcnNpb24gb2YgZHJtX2NydGNfYXJtX3ZibGFua19ldmVudCgpLgo+PiAr ICovCj4+ICt2b2lkIGRybV9hcm1fdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlLAo+PiArCQkJICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2 ZW50ICplKQo+PiArewo+PiArCXN0cnVjdCB0aW1ldmFsIG5vdzsKPj4gKwl1bnNpZ25lZCBpbnQg c2VxOwoKRGVhZCBjb2RlOiBub3cgYW5kIHNlcSBhcmUgbm90IHVzZWQuCgo+PiArCWFzc2VydF9z cGluX2xvY2tlZCgmZGV2LT5ldmVudF9sb2NrKTsKPj4gKwo+PiArCWUtPnBpcGUgPSBwaXBlOwoK LT4gQWRkIHRoaXMgbWlzc2luZyBpbml0OgoKKyAgICAgICBlLT5ldmVudC5zZXF1ZW5jZSA9IGRy bV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKCk90aGVyd2lzZSB0YXJnZXQgc2VxdWVuY2UgbnVt YmVyIGZvciBkaXNwYXRjaCBvZiB0aGUgcGFnZWZsaXAgZXZlbnQgYnkgCmRybV9oYW5kbGVfdmJs YW5rX2V2ZW50cygpIHdpbGwgYmUgemVybyBhbmQgd2UgZ2V0IGluIHRyb3VibGUgZm9yIGEgCmZh aWxpbmcgY29tcGFyaXNvbiBmb3IgcnVubmluZyB2YmxhbmsgY291bnQgPiAyXjIzIGFuZCBjbGll bnRzIHByb2JhYmx5IApoYW5nPwoKPj4gKwlsaXN0X2FkZF90YWlsKCZlLT5iYXNlLmxpbmssICZk ZXYtPnZibGFua19ldmVudF9saXN0KTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZHJtX2FybV92 YmxhbmtfZXZlbnQpOwo+PiArCj4+ICsvKioKPj4gKyAqIGRybV9hcm1fdmJsYW5rX2V2ZW50IC0g YXJtIHZibGFua2UgZXZlbnQgYWZ0ZXIgcGFnZWZsaXAKCnZibGFua2UgLT4gdmJsYW5rCgo+PiAr ICogQGNydGM6IHRoZSBzb3VyY2UgQ1JUQyBvZiB0aGUgdmJsYW5rIGV2ZW50Cj4+ICsgKiBAZTog dGhlIGV2ZW50IHRvIHNlbmQKPj4gKyAqCj4+ICsgKiBBIGxvdCBvZiBkcml2ZXJzIG5lZWQgdG8g Z2VuZXJhdGUgdmJsYW5rIGV2ZW50cyBmb3IgdGhlIHZlcnkgbmV4dCB2YmxhbmsKPj4gKyAqIGlu dGVycnVwdC4gRm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFnZSBmbGlwIGludGVycnVwdCBoYXBwZW5z IHdoZW4gdGhlIHBhZ2UKPj4gKyAqIGZsaXAgZ2V0cyBhcm1lZCwgYnV0IG5vdCB3aGVuIGl0IGFj dHVhbGx5IGV4ZWN1dGVzIHdpdGhpbiB0aGUgbmV4dCB2YmxhbmsKPj4gKyAqIHBlcmlvZC4gVGhp cyBoZWxwZXIgZnVuY3Rpb24gaW1wbGVtZW50cyBleGFjdGx5IHRoZSByZXF1aXJlZCB2Ymxhbmsg YXJtaW5nCj4+ICsgKiBiZWhhdmlvdXIuCj4+ICsgKgo+PiArICogQ2FsbGVyIG11c3QgaG9sZCBl dmVudCBsb2NrLiBDYWxsZXIgbXVzdCBhbHNvIGhvbGQgYSB2YmxhbmsgcmVmZXJlbmNlIGZvciB0 aGUKPj4gKyAqIGV2ZW50IEBlLCB3aGljaCB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgbmV4dCB2 YmxhbmsgYXJyaXZlcy4KPj4gKyAqCj4+ICsgKiBUaGlzIGlzIHRoZSBuYXRpdmUgS01TIHZlcnNp b24gb2YgZHJtX3NlbmRfdmJsYW5rX2V2ZW50KCkuCj4+ICsgKi8KPj4gK3ZvaWQgZHJtX2NydGNf YXJtX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICsJCQkgICAgICAgc3Ry dWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSkKPj4gK3sKPj4gKwlkcm1fYXJtX3ZibGFu a19ldmVudChjcnRjLT5kZXYsIGRybV9jcnRjX2luZGV4KGNydGMpLCBlKTsKPj4gK30KPj4gK0VY UE9SVF9TWU1CT0woZHJtX2NydGNfYXJtX3ZibGFua19ldmVudCk7Cj4+ICsKPj4gKy8qKgo+PiAg ICAqIGRybV9zZW5kX3ZibGFua19ldmVudCAtIGhlbHBlciB0byBzZW5kIHZibGFuayBldmVudCBh ZnRlciBwYWdlZmxpcAo+PiAgICAqIEBkZXY6IERSTSBkZXZpY2UKPj4gICAgKiBAcGlwZTogQ1JU QyBpbmRleAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rpc3BsYXkuYwo+PiBp bmRleCAxODQ0NDVkNGFiYmYuLjA0MWU1Zjg0NTM4YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbm91dmVhdV9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbm91dmVhdV9kaXNwbGF5LmMKPj4gQEAgLTgyNiw3ICs4MjYsNiBAQCBub3V2ZWF1 X2ZpbmlzaF9wYWdlX2ZsaXAoc3RydWN0IG5vdXZlYXVfY2hhbm5lbCAqY2hhbiwKPj4gICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGRybS0+ZGV2Owo+PiAgIAlzdHJ1Y3Qgbm91dmVhdV9wYWdl X2ZsaXBfc3RhdGUgKnM7Cj4+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+IC0JaW50IGNydGNp ZCA9IC0xOwo+Pgo+PiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFn cyk7Cj4+Cj4+IEBAIC04MzgsMTYgKzgzNywxNSBAQCBub3V2ZWF1X2ZpbmlzaF9wYWdlX2ZsaXAo c3RydWN0IG5vdXZlYXVfY2hhbm5lbCAqY2hhbiwKPj4KPj4gICAJcyA9IGxpc3RfZmlyc3RfZW50 cnkoJmZjdHgtPmZsaXAsIHN0cnVjdCBub3V2ZWF1X3BhZ2VfZmxpcF9zdGF0ZSwgaGVhZCk7Cj4+ ICAgCWlmIChzLT5ldmVudCkgewo+PiAtCQkvKiBWYmxhbmsgdGltZXN0YW1wcy9jb3VudHMgYXJl IG9ubHkgY29ycmVjdCBvbiA+PSBOVi01MCAqLwo+PiAtCQlpZiAoZHJtLT5kZXZpY2UuaW5mby5m YW1pbHkgPj0gTlZfREVWSUNFX0lORk9fVjBfVEVTTEEpCj4+IC0JCQljcnRjaWQgPSBzLT5jcnRj Owo+PiAtCj4+IC0JCWRybV9zZW5kX3ZibGFua19ldmVudChkZXYsIGNydGNpZCwgcy0+ZXZlbnQp Owo+PiArCQlpZiAoZHJtLT5kZXZpY2UuaW5mby5mYW1pbHkgPCBOVl9ERVZJQ0VfSU5GT19WMF9U RVNMQSkgewo+PiArCQkJZHJtX2FybV92YmxhbmtfZXZlbnQoZGV2LCBzLT5jcnRjLCBzLT5ldmVu dCk7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlkcm1fc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBzLT5j cnRjLCBzLT5ldmVudCk7Cj4+ICsJCQkvKiBHaXZlIHVwIG93bmVyc2hpcCBvZiB2YmxhbmsgZm9y IHBhZ2UtZmxpcHBlZCBjcnRjICovCj4+ICsJCQlkcm1fdmJsYW5rX3B1dChkZXYsIHMtPmNydGMp Owo+PiArCQl9Cj4+ICAgCX0KCk5lZWQgYSBkcm1fdmJsYW5rX3B1dCgpIGhlcmUgaW4gYSBlbHNl IGJyYW5jaCwgc28gcmVmY291bnRpbmcgaXMgCmJhbGFuY2VkIGluIGNhc2Ugb2YgIXMtPmV2ZW50 LgoKPj4KPj4gLQkvKiBHaXZlIHVwIG93bmVyc2hpcCBvZiB2YmxhbmsgZm9yIHBhZ2UtZmxpcHBl ZCBjcnRjICovCj4+IC0JZHJtX3ZibGFua19wdXQoZGV2LCBzLT5jcnRjKTsKPj4gLQo+PiAgIAls aXN0X2RlbCgmcy0+aGVhZCk7Cj4+ICAgCWlmIChwcykKPj4gICAJCSpwcyA9ICpzOwo+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4+IGluZGV4 IGViNTEzMzQxYjZlZS4uNGM5MWFjNDE5ZDVkIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2RybS9k cm1QLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4+IEBAIC05NDgsNiArOTQ4LDEwIEBA IGV4dGVybiB2b2lkIGRybV9zZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1bnNpZ25lZCBpbnQgcGlwZSwKPj4gICAJCQkJICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5r X2V2ZW50ICplKTsKPj4gICBleHRlcm4gdm9pZCBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3BlbmRpbmdf dmJsYW5rX2V2ZW50ICplKTsKPj4gK3ZvaWQgZHJtX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+PiArCQkJICAgc3RydWN0IGRybV9w ZW5kaW5nX3ZibGFua19ldmVudCAqZSk7Cj4+ICt2b2lkIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2 ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gKwkJCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICplKTsKCi0+IENvcHkgJiBQYXN0ZSBlcnJvciwgd3JvbmcgZnVuY3Rpb24gcHJv dG90eXBlLgoKPj4gICBleHRlcm4gYm9vbCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7Cj4+ICAgZXh0ZXJuIGJvb2wgZHJtX2NydGNf aGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+PiAgIGV4dGVybiBpbnQgZHJt X3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwo+ PiAtLQo+PiAyLjUuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=