From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/16] drm/i915: disable FBC on FIFO underruns Date: Thu, 20 Aug 2015 18:00:02 +0300 Message-ID: <20150820150002.GX5176@intel.com> References: <1439588061-18064-1-git-send-email-paulo.r.zanoni@intel.com> <1439588061-18064-8-git-send-email-paulo.r.zanoni@intel.com> <20150819120644.GQ5176@intel.com> <20150820135814.GW5176@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id D38477A113 for ; Thu, 20 Aug 2015 08:00:19 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBdWcgMjAsIDIwMTUgYXQgMTE6Mjk6MjlBTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IDIwMTUtMDgtMjAgMTA6NTggR01ULTAzOjAwIFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ogo+ID4gT24gVGh1LCBBdWcgMjAsIDIwMTUgYXQgMTA6 MzA6MTdBTSAtMDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+ID4+IDIwMTUtMDgtMTkgOTowNiBH TVQtMDM6MDAgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT46 Cj4gPj4gPiBPbiBGcmksIEF1ZyAxNCwgMjAxNSBhdCAwNjozNDoxMlBNIC0wMzAwLCBQYXVsbyBa YW5vbmkgd3JvdGU6Cj4gPj4gPj4gSWYgd2Ugd2FudCB0byB0cnkgdG8gZW5hYmxlIEZCQyBieSBk ZWZhdWx0IG9uIGFueSBwbGF0Zm9ybSB3ZSBuZWVkIHRvCj4gPj4gPj4gYmUgb24gdGhlIHNhZmUg c2lkZSBhbmQgZGlzYWJsZSBpdCBpbiBjYXNlIHdlIGdldCBhbiB1bmRlcnJ1biB3aGlsZQo+ID4+ ID4+IEZCQyBpcyBlbmFibGVkIG9uIHRoZSBjb3JyZXNwb25kaW5nIHBpcGUuIFdlIGN1cnJlbnRs eSBhbHJlYWR5IGhhdmUKPiA+PiA+PiBvdGhlciByZWFzb25zIGZvciBGSUZPIHVuZGVycnVucyBv biBvdXIgZHJpdmVyLCBidXQgdGhlIG9uZXMgSSBzYXcKPiA+PiA+PiB3aXRoIEZCQyBsZWFkIHRv IGJsYWNrIHNjcmVlbnMgdGhhdCBvbmx5IGdvIGF3YXkgd2hlbiB5b3UgZGlzYWJsZSBGQkMuCj4g Pj4gPgo+ID4+ID4gV2UgZG9uJ3QgdHJ5IHRvIGRlYWwgd2l0aCB1bmRlcnJ1bnMgb24gb3RoZXIg cGxhdGZvcm1zIGVpdGhlciwgYW5kIHllcwo+ID4+ID4gb24gc29tZSwgY291Z2gsIGNodiwgY291 Z2gsIHRoZXkgY2FuIGRlZmluaXRlbHkgYmxhbmsgb3V0IHRoZSBzY3JlZW4KPiA+PiA+IHVudGls IHRoZSBuZXh0IG1vZGVzZXQuIE9uIGV2ZW4gb2xkZXIgcGxhdGZvcm1zIGl0J3MgZXZlbiB3b3Jz ZSBhbmQgYW4KPiA+PiA+IHVuZGVycnVuIGNhbiBraWxsIHRoZSBkaXNwbGF5IGVuZ2luZSB1bnRp bCBkaXNwbGF5IHJlc2V0L3JlYm9vdCA6KAo+ID4+ID4gRXNwZWNpYWxseSBhbm5veWluZyBvbiBn ZW4yIHdoZXJlIHdlIGhhdmUgbm8gcmVzZXQgc3VwcG9ydC4gU28gSSdtIG5vdAo+ID4+ID4gZW50 aXJlbHkgY29udmluY2VkIEZCQyBkZXNlcnZlcyBzcGVjaWFsIHRyZWF0bWVudCBoZXJlLgo+ID4+ Cj4gPj4gSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgbG9naWMuIFRvIG1lLCBpdCBzb3VuZHMgbGlr ZSAieW91J3JlIHByb3Bvc2luZwo+ID4+IGFkZGluZyBhaXJiYWdzIHRvIG5ldyBjYXJzLCBidXQg dGhhdCBpcyBub3QgZ29pbmcgdG8gcHJvdGVjdCBhZ2FpbnN0Cj4gPj4gZXZlcnkgdHlwZSBvZiBh Y2NpZGVudCwgYW5kIGl0J3MgYWxzbyBub3QgZ29pbmcgdG8gaGVscCB0aGUgY2FycyB0aGF0Cj4g Pj4gYXJlIGFscmVhZHkgbWFudWZhY3R1cmVkLCBzbyBJIGRvbid0IHRoaW5rIGZyb250LWNvbGxp c2lvbnMgb2YgbmV3Cj4gPj4gY2FycyBkZXNlcnZlIHNwZWNpYWwgdHJlYXRtZW50Ii4KPiA+Cj4g PiBDdXJyZW50bHkgRkJDIGlzIG1vcmUgbGlrZSBsaWtlICJkcml2aW5nIGJhY2t3YXJkcyBvbiBv bmUgd2hlZWwiLiBJJ20KPiA+IG5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2ludCBpbiB0cnlpbmcg dG8gbWFrZSBpdCBmYXVsdCB0b2xlcmFudCB3aGlsZSB3ZQo+ID4ga25vdyB0aGUgY29kZSBpcyBz dGlsbCBicm9rZW4uCj4gCj4gVGhhdCdzIHdoeSB0aGlzIHNlcmllcyBjb250YWlucyBvdGhlciBw YXRjaGVzIGZpeGluZyB0aGUgb3RoZXIKPiBwcm9ibGVtcy4KCldlbGwgdGhlIHdob2xlIGludGVs X3VwZGF0ZV9mYmMoKSB0aGluZyBpcyBzdGlsbCB2ZXJ5IG11Y2ggYSBmYWlsIHdydC4KbG9ja2lu Zy4gQnV0IG1heWJlIHlvdSdyZSBwbGFubmluZyBvbiByZXN1cnJlY3RpbmcgbXkgZmJjX3Njb3Jl IGlkZWE/CgpBbHNvIG5vdyBJIHRoYXQgSSBnbGFuY2VkIGF0IHRoZSBjb2RlLCBpbnRlbF9mYmNf Zmx1c2goKSBsb29rcyBidXN0ZWQuClRvIGFjdHVhbGx5IG51a2UgdGhlIEZCQyBzdGF0ZSB5b3Ug bmVlZCB0byB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSBuZXh0CnZibGFuayBiZWZvcmUgcmUtZW5h YmxpbmcgRkJDLiBUaGF0IHdhcyBvbmUgcmVhc29uIEkgaGFkIHRoZSB2YmxhbmsKbm90aWZ5IHRo aW5neSBpbiBteSAiZml4IEZCQyIgc2VyaWVzLgoKPiBUaGF0J3MgYWxzbyB3aHkgSSByZWNlbnRs eSBhZGRlZCBhIGZldyB0aG91c2FuZHMgb2YgbGluZXMgb2YKPiBjb2RlIHRvIElHVC4gQmVzaWRl cywgbm8gb25lIGlzIHByb3Bvc2luZyB0byBlbmFibGUgRkJDIGJ5IGRlZmF1bHQgb24KPiBldmVy eSBzaW5nbGUgcGxhdGZvcm0uIEkgZG9uJ3QgdGhpbmsgImZlYXR1cmUgWCBkb2Vzbid0IHdvcmsg YXQgdGhlCj4gbW9tZW50IiBpcyBhIHJlYXNvbiB0byByZWplY3QgYSBwYXRjaCB0aGF0IGltcHJv dmVzIGZlYXR1cmUgWC4KPiAKPiA+IE9uY2UgaXQncyBvdGhlcndpc2Uga25vd24gdG8gYmUgc29s aWQsCj4gPiB0aGVuIGl0IG1pZ2h0IG1ha2Ugc2Vuc2UsIGFsdGhvdWdoIGEgbXVjaCBjb29sZXIg dGhpbmcgd291bGQgYmUgaWYgd2UKPiA+IGNvdWxkIGFjdHVhbGx5IGRldGVjdCB3aGVuIHRoZSBk aXNwbGF5IGhhcyBmYWlsZWQgZW50aXJlbHkgYW5kIHJlY292ZXIKPiA+IGl0IHNvbWVob3cuCj4g Pgo+ID4gT2ggYW5kIHRvIG1ha2UgdGhlIHByb3RlY3Rpb24gbWVjaGFuaXNtIGFjdHVhbGx5IGtp Y2sgaW4gcmVsaWFibHkgeW91Cj4gPiB3b3VsZCBzb21laG93IG5lZWQgdG8gYWRkcmVzcyB0aGUg cHJvYmxlbXMgd2l0aCB0aGUgdW5kZXJydW4gaW50ZXJydXB0cy4KPiAKPiBXaGljaCBwcm9ibGVt cz8KClRoZSBmYWN0IHRoYXQgd2UgZGlzYWJsZSB0aGVtIGFzIHNvb24gYXMgb25lIG9jY3Vycywg YW5kIGV2ZW4gd29yc2UgdGhlCmVycm9yIGludGVycnVwdCBpcyBhIHNoYXJlZCBvbmUgb24gbWFu eSBwbGF0Zm9ybXMsIHNvIG9uZSB1bmRlcnJ1biBhbnkKcGlwZSBvciBzb21lIG90aGVyIHVucmVs YXRlZCBlcnJvciBraWxscyB1bmRlcnJ1biBkZXRlY3Rpb24gZXZlcnl3aGVyZS4KCj4gCj4gV2hl biBJIHRlc3RlZCB0aGlzIHBhdGNoLCBpdCB3YXMgd29ya2luZyB2ZXJ5IHJlbGlhYmx5OiB3ZSBk ZXRlY3RlZAo+IHRoZSB1bmRlcnJ1biBhbmQgZGlzYWJsZWQgRkJDIDEwMCUgb2YgdGhlIHRpbWUu Cj4gCj4gSXQncyBhbHNvIHdvcnRoIG5vdGljaW5nIHRoYXQgdGhlIGNhdXNlIG9mIHRoZSB1bmRl cnJ1biBpcyBhY3R1YWxseQo+IGZpeGVkIGJ5IGEgbGF0ZXIgcGF0Y2ggb2YgdGhpcyBzZXJpZXMs IHNvIHdlIGRvbid0IHJlYWxseSBuZWVkIHRoaXMKPiBwYXRjaCBhcyBwYXJ0IG9mIHRoZSB3aG9s ZSAiZml4IEZCQyIgdGFzaywgYnV0IEkgcmVhbGx5IHRoaW5rIGl0J3MKPiBiZXR0ZXIgdG8gaGF2 ZSBpdCB0aGFuIG5vdCBoYXZlIGl0LCBqdXN0IGluIGNhc2Ugd2UgcmVncmVzcyBzb21laG93Lgo+ IAo+ID4gQXQgdGhlIG1vbWVudCwgdG8gY29udGludWUgeW91ciBjYXIgYW5hbG9neSwgaXQncyBs aWtlIHRoZSBhaXJiYWdzIHdvdWxkCj4gPiByZWZ1c2UgdG8gZGVwbG95IGluIGEgcmVhbCBjcmFz aCBpZiB5b3UgaGFwcGVuZWQgdG8gZGluZyB0aGUgbWFpbGJveAo+ID4gd2hpbGUgcHVsbGluZyBv dXQgb2YgeW91ciBkcml2ZXdheS4KPiA+Cj4gPj4KPiA+PiA+Cj4gPj4gPj4KPiA+PiA+PiBUaGUg Y3VycmVudCBGSUZPIHVuZGVycnVuIEkgc2VlIGhhcHBlbnMgd2hlbiB0aGUgQ0ZCIGlzIHVzaW5n IHRoZSB0b3AKPiA+PiA+PiA4bWIgb2Ygc3RvbGVuIG1lbW9yeS4gVGhpcyBpcyByZXByb2R1Y2li bGUgd2l0aCBhIDI1NjB4MTQ0MCBEUCBNb25pdG9yCj4gPj4gPj4gb24gYSBzeXN0ZW0gd2l0aCAz Mm1iIG9mIHN0b2xlbiBtZW1vcnkuIE9uIHRoaXMgY2FzZSwgYWxsIHRoZSBJR1QKPiA+PiA+PiB0 ZXN0cyBmYWlsIHdoaWxlIGNoZWNraW5nIHRoZSBzY3JlZW4gQ1JDLiBBIGxhdGVyIHBhdGNoIG9u IHRoaXMgc2VyaWVzCj4gPj4gPj4gd2lsbCBmaXggdGhpcyBwcm9ibGVtIGZvciByZWFsLgo+ID4+ ID4+Cj4gPj4gPj4gV2l0aCB0aGlzIHBhdGNoLCB0aGUgdGVzdHMgd2lsbCBzdGFydCBmYWlsaW5n IHdoaWxlIGNoZWNraW5nIGlmIEZCQyBpcwo+ID4+ID4+IGVuYWJsZWQgaW5zdGVhZCBvZiBmYWls aW5nIHdoaWxlIGNvbXBhcmluZyB0aGUgQ1JDIG9mIHRoZSBibGFjayBzY3JlZW4KPiA+PiA+PiBh Z2FpbnN0IHRoZSBjb3JyZWN0IENSQy4gU28gdGhpcyBwYXRjaCBpcyBub3QgaGlkaW5nIGFueSBJ R1QgYnVnczogdGhlCj4gPj4gPj4gdGVzdHMgc3RpbGwgZmFpbCwgYnV0IG5vdyB0aGV5IGZhaWwg d2l0aCBhIGRpZmZlcmVudCByZWFzb24uCj4gPj4gPj4KPiA+PiA+PiBTaWduZWQtb2ZmLWJ5OiBQ YXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+PiA+PiAtLS0KPiA+PiA+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDUgKysrCj4g Pj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAxICsK PiA+PiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAgIHwgNjEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYyB8ICAyICsKPiA+PiA+PiAgNCBmaWxlcyBjaGFuZ2Vk LCA2OSBpbnNlcnRpb25zKCspCj4gPj4gPj4KPiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiA+PiA+PiBpbmRleCA0ZmQ3ODU4Li5lNzRhODQ0IDEwMDY0NAo+ID4+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gPj4gPj4gQEAgLTkyNiw2ICs5MjYsMTEgQEAgc3RydWN0IGk5MTVf ZmJjIHsKPiA+PiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ ID4+ID4+ICAgICAgIH0gKmZiY193b3JrOwo+ID4+ID4+Cj4gPj4gPj4gKyAgICAgc3RydWN0IGlu dGVsX2ZiY191bmRlcnJ1bl93b3JrIHsKPiA+PiA+PiArICAgICAgICAgICAgIHN0cnVjdCB3b3Jr X3N0cnVjdCB3b3JrOwo+ID4+ID4+ICsgICAgICAgICAgICAgc3RydWN0IGludGVsX2NydGMgKmNy dGM7Cj4gPj4gPj4gKyAgICAgfSB1bmRlcnJ1bl93b3JrOwo+ID4+ID4+ICsKPiA+PiA+PiAgICAg ICBlbnVtIG5vX2ZiY19yZWFzb24gewo+ID4+ID4+ICAgICAgICAgICAgICAgRkJDX09LLCAvKiBG QkMgaXMgZW5hYmxlZCAqLwo+ID4+ID4+ICAgICAgICAgICAgICAgRkJDX1VOU1VQUE9SVEVELCAv KiBGQkMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNoaXBzZXQgKi8KPiA+PiA+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4+IGluZGV4IDgxYjdkNzcuLjI0NjkyNWQgMTAwNjQ0Cj4g Pj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+PiA+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4+IEBAIC0xMjQ3LDYgKzEy NDcsNyBAQCB2b2lkIGludGVsX2ZiY19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPj4gPj4gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmcm9udGJ1ZmZl cl9iaXRzLCBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ID4+ID4+ICBjb25zdCBjaGFyICpp bnRlbF9ub19mYmNfcmVhc29uX3N0cihlbnVtIG5vX2ZiY19yZWFzb24gcmVhc29uKTsKPiA+PiA+ PiAgdm9pZCBpbnRlbF9mYmNfY2xlYW51cF9jZmIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiA+PiA+PiArdm9pZCBpbnRlbF9mYmNfaGFuZGxlX2ZpZm9fdW5kZXJydW4oc3Ry dWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4+ID4+Cj4gPj4gPj4gIC8qIGludGVsX2hkbWkuYyAq Lwo+ID4+ID4+ICB2b2lkIGludGVsX2hkbWlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgaGRtaV9yZWcsIGVudW0gcG9ydCBwb3J0KTsKPiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYwo+ID4+ID4+IGluZGV4IGE2M2QxMGEuLjI4ZTU2OWMgMTAwNjQ0Cj4gPj4gPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+PiA+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4+ID4+IEBAIC05NTUsNiArOTU1LDY1IEBAIHZvaWQg aW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiA+ PiAgICAgICBtdXRleF91bmxvY2soJmRldl9wcml2LT5mYmMubG9jayk7Cj4gPj4gPj4gIH0KPiA+ PiA+Pgo+ID4+ID4+ICtzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdW5kZXJydW5fd29ya19mbihzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKPiA+PiA+PiArewo+ID4+ID4+ICsgICAgIHN0cnVjdCBp bnRlbF9mYmNfdW5kZXJydW5fd29yayAqd29yayA9Cj4gPj4gPj4gKyAgICAgICAgICAgICBjb250 YWluZXJfb2YoX193b3JrLCBzdHJ1Y3QgaW50ZWxfZmJjX3VuZGVycnVuX3dvcmssIHdvcmspOwo+ ID4+ID4+ICsgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gd29yay0+Y3J0YzsKPiA+PiA+ PiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRl di0+ZGV2X3ByaXZhdGU7Cj4gPj4gPj4gKwo+ID4+ID4+ICsgICAgIG11dGV4X2xvY2soJmRldl9w cml2LT5mYmMubG9jayk7Cj4gPj4gPj4gKyAgICAgaWYgKCFpbnRlbF9mYmNfZW5hYmxlZChkZXZf cHJpdikgfHwgZGV2X3ByaXYtPmZiYy5jcnRjICE9IGNydGMpCj4gPj4gPj4gKyAgICAgICAgICAg ICBnb3RvIG91dDsKPiA+PiA+PiArCj4gPj4gPj4gKyAgICAgRFJNX0RFQlVHX0tNUygiRGlzYWJs aW5nIEZCQyBkdWUgdG8gRklGTyB1bmRlcnJ1bi5cbiIpOwo+ID4+ID4+ICsgICAgIGk5MTUuZW5h YmxlX2ZiYyA9IDA7Cj4gPj4gPj4gKyAgICAgX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7 Cj4gPj4gPj4gKwo+ID4+ID4+ICtvdXQ6Cj4gPj4gPj4gKyAgICAgd29yay0+Y3J0YyA9IE5VTEw7 Cj4gPj4gPj4gKyAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ID4+ID4+ ICt9Cj4gPj4gPj4gKwo+ID4+ID4+ICsvKioKPiA+PiA+PiArICogaW50ZWxfZmJjX2hhbmRsZV9m aWZvX3VuZGVycnVuIC0gaGFuZGxlIEZJRk8gdW5kZXJydW5zIGlmIEZCQyBpcyBlbmFibGVkCj4g Pj4gPj4gKyAqIEBjcnRjOiB0aGUgQ1JUQyB0aGF0IGNhdXNlZCB0aGUgdW5kZXJydW4KPiA+PiA+ PiArICoKPiA+PiA+PiArICogQWx0aG91Z2ggd2UgY2FuJ3Qga25vdyBmb3Igc3VyZSB3aGF0IGNh dXNlZCBhbiB1bmRlcnJ1biwgb25lIG9mIHRoZSBwb3NzaWJsZQo+ID4+ID4+ICsgKiByZWFzb25z IGlzIEZCQy4gQW5kIG9uIHRoZSBGQkMgY2FzZSwgdGhlIHVzZXIgbWF5IGhhdmUgYSBibGFjayBz Y3JlZW4gdW50aWwKPiA+PiA+PiArICogRkJDIGlzIGRpc2FibGVkLiBTbyB3aGVuZXZlciBhIEZJ Rk8gdW5kZXJydW4gaGFwcGVucyB3aGlsZSBGQkMgaXMgZW5hYmxlZCwKPiA+PiA+PiArICogZGlz YWJsZSBGQkMganVzdCBiZWNhdXNlIGl0IG1heSBoZWxwLgo+ID4+ID4+ICsgKgo+ID4+ID4+ICsg KiBXZSBkaXNhYmxlIEZCQyBieSBjaGFuZ2luZyB0aGUgaTkxNSBwYXJhbSwgc28gRkJDIHdvbid0 IGNvbWUgYmFjayBvbiB0aGUgbmV4dAo+ID4+ID4+ICsgKiBmcmFtZSBqdXN0IHRvIGNhdXNlIGFu b3RoZXIgdW5kZXJydW4uIFRlc3Qgc3VpdGVzIGNhbiBmb3JjZSBGQkMgYmFjayBieQo+ID4+ID4+ ICsgKiBjaGFuZ2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlciBhZ2FpbiB0aHJvdWdoIHN5c2ZzLgo+ ID4+ID4+ICsgKi8KPiA+PiA+PiArdm9pZCBpbnRlbF9mYmNfaGFuZGxlX2ZpZm9fdW5kZXJydW4o c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPj4gPj4gK3sKPiA+PiA+PiArICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 Cj4gPj4gPj4gKyAgICAgc3RydWN0IGludGVsX2ZiY191bmRlcnJ1bl93b3JrICp3b3JrID0gJmRl dl9wcml2LT5mYmMudW5kZXJydW5fd29yazsKPiA+PiA+PiArCj4gPj4gPj4gKyAgICAgaWYgKCFk ZXZfcHJpdi0+ZmJjLmVuYWJsZV9mYmMpCj4gPj4gPj4gKyAgICAgICAgICAgICByZXR1cm47Cj4g Pj4gPj4gKwo+ID4+ID4+ICsgICAgIC8qIFRoZXNlIGNoZWNrcyBhcmUgdW5sb2NrZWQuIFdlIGNh bid0IGdyYWIgdGhlIGxvY2sgc2luY2Ugd2UncmUgaW4gdGhlCj4gPj4gPj4gKyAgICAgICogSVJR IGhhbmRsZXIuIE9UT0gsIGdyYWJiaW5nIGl0IHdvdWxkbid0IGhlbHAgbXVjaCBzaW5jZSB0aGUg dW5kZXJydW4KPiA+PiA+PiArICAgICAgKiBpbnRlcnJ1cHQgaXMgYXN5bmNocm9ub3VzLiBTdGls bCwgdGhpcyBhICJ0cnkgdG8gcmVjb3ZlciBiZWNhdXNlIHdlCj4gPj4gPj4gKyAgICAgICogaGF2 ZSBhbHJlYWR5IGZhaWxlZCIgZnVuY3Rpb24sIHNvIGxldCdzIGF0IGxlYXN0IHRyeSwgYW5kIGlm IHdlIGZhaWwsCj4gPj4gPj4gKyAgICAgICogd2UnbGwgcHJvYmFibHkgYmUgYWJsZSB0byB0cnkg YWdhaW4gbmV4dCBmcmFtZSB3aGVuIGFub3RoZXIgdW5kZXJydW4KPiA+PiA+PiArICAgICAgKiBo YXBwZW5zLiBXZSdsbCBhbHNvIGRvIHRoZSBjaGVja3MgYWdhaW4gaW4gdGhlIHdvcmsgZnVuY3Rp b24sIHdoZXJlCj4gPj4gPj4gKyAgICAgICogd2UgY2FuIGdyYWIgdGhlIGxvY2suICovCj4gPj4g Pj4gKyAgICAgaWYgKCFpbnRlbF9mYmNfZW5hYmxlZChkZXZfcHJpdikgfHwgZGV2X3ByaXYtPmZi Yy5jcnRjICE9IGNydGMpCj4gPj4gPj4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPj4gPj4gKwo+ ID4+ID4+ICsgICAgIC8qIFNvbWV0aGluZyBhbHJlYWR5IHNjaGVkdWxlZCBpdC4gKi8KPiA+PiA+ PiArICAgICBpZiAod29yay0+Y3J0YyAhPSBOVUxMKQo+ID4+ID4+ICsgICAgICAgICAgICAgcmV0 dXJuOwo+ID4+ID4+ICsKPiA+PiA+PiArICAgICB3b3JrLT5jcnRjID0gY3J0YzsKPiA+PiA+PiAr ICAgICBzY2hlZHVsZV93b3JrKCZ3b3JrLT53b3JrKTsKPiA+PiA+PiArfQo+ID4+ID4+ICsKPiA+ PiA+PiAgLyoqCj4gPj4gPj4gICAqIGludGVsX2ZiY19pbml0IC0gSW5pdGlhbGl6ZSBGQkMKPiA+ PiA+PiAgICogQGRldl9wcml2OiB0aGUgaTkxNSBkZXZpY2UKPiA+PiA+PiBAQCAtOTY2LDYgKzEw MjUsOCBAQCB2b2lkIGludGVsX2ZiY19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+PiA+PiAgICAgICBlbnVtIHBpcGUgcGlwZTsKPiA+PiA+Pgo+ID4+ID4+ICAgICAg IG11dGV4X2luaXQoJmRldl9wcml2LT5mYmMubG9jayk7Cj4gPj4gPj4gKyAgICAgSU5JVF9XT1JL KCZkZXZfcHJpdi0+ZmJjLnVuZGVycnVuX3dvcmsud29yaywKPiA+PiA+PiArICAgICAgICAgICAg ICAgaW50ZWxfZmJjX3VuZGVycnVuX3dvcmtfZm4pOwo+ID4+ID4+Cj4gPj4gPj4gICAgICAgaWYg KCFIQVNfRkJDKGRldl9wcml2KSkgewo+ID4+ID4+ICAgICAgICAgICAgICAgZGV2X3ByaXYtPmZi Yy5lbmFibGVkID0gZmFsc2U7Cj4gPj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zp Zm9fdW5kZXJydW4uYwo+ID4+ID4+IGluZGV4IDU0ZGFhNjYuLjkwZTYwZmIgMTAwNjQ0Cj4gPj4g Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gPj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gPj4g Pj4gQEAgLTM1Niw2ICszNTYsOCBAQCB2b2lkIGludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9o YW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiA+PiAgICAgICBp ZiAoaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwg ZmFsc2UpKQo+ID4+ID4+ICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJDUFUgcGlwZSAlYyBGSUZP IHVuZGVycnVuXG4iLAo+ID4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVfbmFtZShw aXBlKSk7Cj4gPj4gPj4gKwo+ID4+ID4+ICsgICAgIGludGVsX2ZiY19oYW5kbGVfZmlmb191bmRl cnJ1bih0b19pbnRlbF9jcnRjKGNydGMpKTsKPiA+PiA+PiAgfQo+ID4+ID4+Cj4gPj4gPj4gIC8q Kgo+ID4+ID4+IC0tCj4gPj4gPj4gMi40LjYKPiA+PiA+Pgo+ID4+ID4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4gPj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+ID4+ID4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiA+PiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4g Pj4gPgo+ID4+ID4gLS0KPiA+PiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4+ID4gSW50ZWwgT1RDCj4g Pj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+ ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID4+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo+ID4+Cj4gPj4KPiA+Pgo+ID4+IC0tCj4gPj4gUGF1bG8gWmFub25pCj4g Pgo+ID4gLS0KPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RDCj4gCj4gCj4gCj4gLS0g Cj4gUGF1bG8gWmFub25pCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=