From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: cleanup lrc engine state when lrc is freed Date: Mon, 12 Jan 2015 18:24:38 +0200 Message-ID: <20150112162437.GH10649@intel.com> References: <1420724407-11767-1-git-send-email-mika.kuoppala@intel.com> <54B0224D.2050407@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 7BC636E354 for ; Mon, 12 Jan 2015 08:24:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <54B0224D.2050407@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMDksIDIwMTUgYXQgMDY6NDc6NDFQTSArMDAwMCwgRGF2ZSBHb3Jkb24gd3Jv dGU6Cj4gT24gMDgvMDEvMTUgMTM6NDAsIE1pa2EgS3VvcHBhbGEgd3JvdGU6Cj4gPiBpOTE1X2dl bV92YWxpZGF0ZV9jb250ZXh0KCkgd2lsbCBjaGVjayB0aGUgZW5naW5lLT5zdGF0ZSB0byBzZWUg aWYgaXQgY2FuCj4gPiBzdWJtaXQgaW50byBhIHJpbmdidWZmZXIuIEJ1dCB3aGVuIHdlIGFyZSBy ZWxlYXNpbmcgdGhlIGNvbnRleHQgd2UgbGVhdmUgdGhlCj4gPiBlbmdpbmUgc3RhdGUgdG8gYSBu b24gbnVsbCB2YWx1ZS4gVGh1cyBhZnRlciBhIHN1Y2Nlc3NmdWwgaGFuZyByZWNvdmVyeQo+ID4g d2UgbWlnaHQgbWlzdGFrZW5seSBzdWJtaXQgdG8gYSBub24gaW5pdGlhbGl6ZWQgcmluZ2J1ZmZl ciByZXN1bHRpbmcgaW46Cj4gPiAKPiA+IFsgMTk5MS4zNTY0MThdIC0tLS0tLS0tLS0tLVsgY3V0 IGhlcmUgXS0tLS0tLS0tLS0tLQo+ID4gWyAxOTkxLjM1OTE5Ml0gV0FSTklORzogQ1BVOiAxIFBJ RDogMjMzNSBhdCBsaWIvaW9tYXAuYzo0MyBiYWRfaW9fYWNjZXNzKzB4M2QvMHg0MCgpCj4gPiBb IDE5OTEuMzYxOTY2XSBCYWQgSU8gYWNjZXNzIGF0IHBvcnQgMHgyNCAob3V0bCh2YWwscG9ydCkp Cj4gPiBbIDE5OTEuMzY0NzUwXSBNb2R1bGVzIGxpbmtlZCBpbjogc25kX2hkYV9jb2RlY19oZG1p IGk5MTUgeDg2X3BrZ190ZW1wX3RoZXJtYWwgY29yZXRlbXAga3ZtX2ludGVsIGt2bSBzbmRfaGRh X2ludGVsIHNuZF9oZGFfY29udHJvbGxlciBzbmRfaGRhX2NvZGVjIGNyY3QxMGRpZl9wY2xtdWwg Y3JjMzJfcGNsbXVsIGdoYXNoX2NsbXVsbmlfaW50ZWwgc25kX2h3ZGVwIHNuZF9wY20gYWVzbmlf aW50ZWwgYWVzX3g4Nl82NCBnbHVlX2hlbHBlciBscncgaTJjX2FsZ29fYml0IGdmMTI4bXVsIGFi bGtfaGVscGVyIGRybV9rbXNfaGVscGVyIGNyeXB0ZCBzbmRfc2VxX21pZGkgc25kX3NlcV9taWRp X2V2ZW50IHNlcmlvX3JhdyBkcm0gc25kX3Jhd21pZGkgc25kX3NlcSBzbmRfc2VxX2RldmljZSBz bmRfdGltZXIgdmlkZW8gc25kIHNvdW5kY29yZSBtZWlfbWUgbHBjX2ljaCBibmVwIG1hY19oaWQg YWNwaV9wYWQgbWVpIHJmY29tbSBibHVldG9vdGggcGFycG9ydF9wYyBwcGRldiBscCBwYXJwb3J0 IG5sc19pc284ODU5XzEgZTEwMDBlIHB0cCBhaGNpIGxpYmFoY2kgcHBzX2NvcmUgc2RoY2lfYWNw aSBzZGhjaQo+ID4gWyAxOTkxLjM3MDgyN10gQ1BVOiAxIFBJRDogMjMzNSBDb21tOiBnZW1fcmlu Z2ZpbGwgVGFpbnRlZDogRyAgICAgICAgVyAgICAgIDMuMTkuMC1yYzMrICM1MAo+ID4gWyAxOTkx LjM3MzgzOF0gSGFyZHdhcmUgbmFtZTogSW50ZWwgQ29ycG9yYXRpb24gQnJvYWR3ZWxsIENsaWVu dCBwbGF0Zm9ybS9TYXdUb290aCBQZWFrLCBCSU9TIEJEVy1FMVIxLjg2Qy4wMDkyLlIwMC4xNDA4 MzExOTQyIDA4LzMxLzIwMTQKPiA+IFsgMTk5MS4zNzY5MDJdICBmZmZmZmZmZjgxYWExYTQ2IGZm ZmY4ODAxNDkxMGZhYzggZmZmZmZmZmY4MTczZGJjZiAwMDAwMDAwMDAwMDAwMDAxCj4gPiBbIDE5 OTEuMzc5OTc4XSAgZmZmZjg4MDE0OTEwZmIxOCBmZmZmODgwMTQ5MTBmYjA4IGZmZmZmZmZmODEw NzAwN2EgZmZmZjg4MDE0OTEwZmIyOAo+ID4gWyAxOTkxLjM4MzAzN10gIGZmZmY4ODAxNDcyMDk5 NDAgZmZmZjg4MDBhYWZhODcxOCBmZmZmODgwMGFhZmEwMDAwIGZmZmY4ODAwYWFmYTE5MTgKPiA+ IFsgMTk5MS4zODYwOTRdIENhbGwgVHJhY2U6Cj4gPiBbIDE5OTEuMzg5MTQwXSAgWzxmZmZmZmZm ZjgxNzNkYmNmPl0gZHVtcF9zdGFjaysweDQ1LzB4NTcKPiA+IFsgMTk5MS4zOTIyMDddICBbPGZm ZmZmZmZmODEwNzAwN2E+XSB3YXJuX3Nsb3dwYXRoX2NvbW1vbisweDhhLzB4YzAKPiA+IFsgMTk5 MS4zOTUyNjhdICBbPGZmZmZmZmZmODEwNzAwZjY+XSB3YXJuX3Nsb3dwYXRoX2ZtdCsweDQ2LzB4 NTAKPiA+IFsgMTk5MS4zOTgzMzBdICBbPGZmZmZmZmZmYTA1MzI5MGM+XSA/IGludGVsX2xvZ2lj YWxfcmluZ19iZWdpbisweDNjLzB4MjQwIFtpOTE1XQo+ID4gWyAxOTkxLjQwMTM5NV0gIFs8ZmZm ZmZmZmY4MTM5ODViZD5dIGJhZF9pb19hY2Nlc3MrMHgzZC8weDQwCj4gPiBbIDE5OTEuNDA0NDYy XSAgWzxmZmZmZmZmZjgxMzk4NzYzPl0gaW93cml0ZTMyKzB4MzMvMHg0MAo+ID4gWyAxOTkxLjQw NzUyOV0gIFs8ZmZmZmZmZmZhMDUzMzU4NT5dIGdlbjhfaW5pdF9yY3NfY29udGV4dCsweGQ1LzB4 MTcwIFtpOTE1XQo+ID4gWyAxOTkxLjQxMDYwNV0gIFs8ZmZmZmZmZmZhMDUzM2QxNz5dIGludGVs X2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKzB4NjU3LzB4OGUwIFtpOTE1XQo+ID4gWyAxOTkx LjQxMzY2OF0gIFs8ZmZmZmZmZmZhMDUwZWZmMT5dIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIuaXNy YS4yMisweGVkMS8weGY2MCBbaTkxNV0KPiA+IFsgMTk5MS40MTY3MzZdICBbPGZmZmZmZmZmODEx YzAxMjU+XSA/IF9fa21hbGxvYysweDU1LzB4MWIwCj4gPiBbIDE5OTEuNDE5ODAxXSAgWzxmZmZm ZmZmZmEwNTEwMjljPl0gPyBpOTE1X2dlbV9leGVjYnVmZmVyMisweDZjLzB4MmMwIFtpOTE1XQo+ ID4gWyAxOTkxLjQyMjc3Ml0gIFs8ZmZmZmZmZmZhMDUxMDJlMT5dIGk5MTVfZ2VtX2V4ZWNidWZm ZXIyKzB4YjEvMHgyYzAgW2k5MTVdCj4gPiBbIDE5OTEuNDI1NjMyXSAgWzxmZmZmZmZmZmEwMWI4 YWI0Pl0gZHJtX2lvY3RsKzB4MWE0LzB4NjMwIFtkcm1dCj4gPiBbIDE5OTEuNDI4NDU0XSAgWzxm ZmZmZmZmZjgxMTI1OGJjPl0gPyBhY2N0X2FjY291bnRfY3B1dGltZSsweDFjLzB4MjAKPiA+IFsg MTk5MS40MzEyNTVdICBbPGZmZmZmZmZmODExZWUzNzg+XSBkb192ZnNfaW9jdGwrMHgyZjgvMHg1 MTAKPiA+IFsgMTk5MS40MzQwMDldICBbPGZmZmZmZmZmODEwOWY4MzQ+XSA/IHZ0aW1lX2FjY291 bnRfdXNlcisweDU0LzB4NjAKPiA+IFsgMTk5MS40MzY3NzhdICBbPGZmZmZmZmZmODExZWU2MTE+ XSBTeVNfaW9jdGwrMHg4MS8weGEwCj4gPiBbIDE5OTEuNDM5NTUzXSAgWzxmZmZmZmZmZjgxNzQ1 Y2I0Pl0gPyBpbnRfY2hlY2tfc3lzY2FsbF9leGl0X3dvcmsrMHgzNC8weDNkCj4gPiBbIDE5OTEu NDQyMzA2XSAgWzxmZmZmZmZmZjgxNzQ1YTJkPl0gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8w eDFiCj4gPiAKPiA+IEZpeCB0aGlzIGJ5IHNldHRpbmcgYWxsIHRoZSBlbmdpbmUgZmllbGRzIHBy b3Blcmx5IHdoZW4gbHJjIGlzIGZyZWVkLgo+ID4gCj4gPiBDYzogVGhvbWFzIERhbmllbCA8dGhv bWFzLmRhbmllbEBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxt aWthLmt1b3BwYWxhQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jIHwgNCArKysrCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4gaW5kZXggNzY3MGEwZi4uMzI2 ODRkOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4gQEAgLTE3NzcsNiAr MTc3NywxMCBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4KQo+ID4gIAkJCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4g PiAgCQkJa2ZyZWUocmluZ2J1Zik7Cj4gPiAgCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uo JmN0eF9vYmotPmJhc2UpOwo+ID4gKwkJCVdBUk5fT04oY3R4LT5lbmdpbmVbaV0udW5waW5fY291 bnQgIT0gMCk7Cj4gPiArCQkJY3R4LT5lbmdpbmVbaV0udW5waW5fY291bnQgPSAwOwo+ID4gKwkJ CWN0eC0+ZW5naW5lW2ldLnJpbmdidWYgPSBOVUxMOwo+ID4gKwkJCWN0eC0+ZW5naW5lW2ldLnN0 YXRlID0gTlVMTDsKPiA+ICAJCX0KPiA+ICAJfQo+ID4gIH0KPiAKPiBIaSwKPiAKPiBJIGRvbid0 IHF1aXRlIHNlZSBob3cgdGhpcyBjYW4gZml4IHRoZSBwcm9ibGVtIGlsbHVzdHJhdGVkIGJ5IHRo ZSBzdGFjawo+IHRyYWNlIGFib3ZlLiAgQUZBSUNTIGludGVsX2xyX2NvbnRleHRfZnJlZSgpIGlz IGNhbGxlZCAvb25seS8gZnJvbQo+IGk5MTVfZ2VtX2NvbnRleHRfZnJlZSgpLCB3aGljaCBzaG91 bGQgbWVhbiB0aGF0IHRoZSByZWZjb3VudCBvbiB0aGUKPiBpbnRlbF9jb250ZXh0IG9iamVjdCBp cyBhbHJlYWR5IHplcm8sIGFuZCB0aGF0IGl0IHdpbGwgYmUgZnJlZWQgb24KPiByZXR1cm4uIFNv IHRoZSBjb250ZW50cyBvZiBjdHgtPmVuZ2luZVtdIHNob3VsZCBiZSBpcnJlbGV2YW50IC4uLgoK SSd2ZSBub3cgbWFuYWdlZCB0byBoaXQgdGhpcyBmYWlybHkgcmVsaWFibHkgd2l0aAonZ2VtX3Jp bmdmaWxsIC0tciByZW5kZXInICsgY3RybC1jIHN0cmFpZ2h0IGFmdGVyIGJvb3QuCgpUbyBtZSBp dCBsb29rcyBsaWtlIHNvbWUga2luZCBvZiBiaWdnZXIgbWVzcyB3aXRoIG9sci4gSWYgb2xyIHdh cyBhbHJlYWR5IHRoZXJlLApsb2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdCgpIHdpbGwgZG8gYWJz b2x1dGVseSBub3RoaW5nLCB3aGljaCBtZWFucyB0aGUgcmluZ2J1Zgp3b24ndCBldmVuIGJlIHBp bm5lZC9tYXBwZWQgYW5kIHJpbmdidWctPnZpcnR1YWxfc3RhcnQgd2lsbCByZW1haW4gTlVMTC4g QW5kIHRoYXQKbGVhZHMgdG8gdGhlIHcvYSBpbml0IHRvIGNhbGwgaW93cml0ZSgpIHdpdGggc29t ZSBjbG9zZSB0byAwIGlvbWVtIGFkZHJlc3NzZXMuCgpJJ20gbm90IHN1cmUgaG93IHRoaXMgaXMg c3VwcG9zZWQgdG8gYWN0dWFsbHkgd29yay4gVG8gbWUgaXQgbG9va3Mgb2xyIHNob3VsZCBuZXZl cgpiZSBhbGxvd2VkIHRvIGJlICE9IE5VTEwgd2hlbiBjcmVhdGluZyB0aGUgY29udGV4dC9yaW5n YnVmIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4gQW5kCnlldCBzb21laG93IHRoZSBwcmVzZW5jZSBv ZiBvbHIgZG9lc24ndCBhbHdheXMgdHJpZ2dlciB0aGUgJ2JhZCBJTyBhY2Nlc3MnIHdhcm5zLiBJ bgpmYWN0IEkgY2FuJ3Qgc2VlbSB0byB0cmlnZ2VyIGl0IG1vcmUgdGhhbiBvbmNlIHVudGlsIEkg cmVib290IHRoZSBtYWNoaW5lLiBJIHRyaWVkIHRvCmFkZCBhIHdhcm5pbmcgWzFdIHRvIGNhdGNo IGFsbCBjYXNlcyB3aGVuIG9sciBpcyBhbHJlYWR5IHRoZXJlLCBhbmQgaXQgd2lsbCB0cmlnZ2Vy IGluCm1vc3QgY2FzZXMgd2hlbiBJIGhpdCBjdHJsLWMgd2hpbGUgcnVubmluZyBnZW1fcmluZ2Zp bGwuIEFuZCB5ZXQgdGhlICdCYWQgSU8gYWNjZXNzJwpkb2Vzbid0IGZvbGxvdyBpdCBleGNlcHQg b25jZSBhZnRlciBib290LgoKWzFdCkBAIC0xOTA2LDYgKzE5MjYsOCBAQCBpbnQgaW50ZWxfbHJf Y29udGV4dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAogICAg ICAgIH0KIAorICAgICAgIFdBUk5fT04ocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KTsK KwogICAgICAgIHJldCA9IHBvcHVsYXRlX2xyX2NvbnRleHQoY3R4LCBjdHhfb2JqLCByaW5nLCBy aW5nYnVmKTsKICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICAgICAgICBEUk1fREVCVUdfRFJJ VkVSKCJGYWlsZWQgdG8gcG9wdWxhdGUgTFJDOiAlZFxuIiwgcmV0KTsKCgoKPiAKPiB2b2lkIGk5 MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3Qga3JlZiAqY3R4X3JlZikKPiB7Cj4gICAgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjdHggPSBjb250YWluZXJfb2YoY3R4X3JlZiwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKmN0eCksIHJlZik7Cj4g Cj4gICAgIHRyYWNlX2k5MTVfY29udGV4dF9mcmVlKGN0eCk7Cj4gCj4gICAgIGlmIChpOTE1LmVu YWJsZV9leGVjbGlzdHMpCj4gICAgICAgICBpbnRlbF9scl9jb250ZXh0X2ZyZWUoY3R4KTsKPiAK PiAgICAgaTkxNV9wcGd0dF9wdXQoY3R4LT5wcGd0dCk7Cj4gCj4gICAgIGlmIChjdHgtPmxlZ2Fj eV9od19jdHgucmNzX3N0YXRlKQo+ICAgICAgICAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uo JmN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUtPmJhc2UpOwo+IAo+ICAgICBsaXN0X2RlbCgm Y3R4LT5saW5rKTsKPiAgICAga2ZyZWUoY3R4KTsKPiB9Cj4gCj4gLi4uIHVubGVzcyBzb21ldGhp bmcgaXMgdHJ5aW5nIHRvIHJldXNlIHRoZSBjb250ZXh0IHdoaWxlIGl0IGlzIHN0aWxsIGluCj4g dGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVsZXRlZCA6KAo+IAo+IEluIGFkZGl0aW9uLCB0aGUgc3Rh Y2sgdHJhY2UgYWJvdmUgaW1wbGllcyB0aGF0IGN0eC0+ZW5naW5lW10uc3RhdGUgV0FTCj4gTlVM TCB3aGVuIGk5MTVfZ2VtX3ZhbGlkYXRlX2NvbnRleHQoKSB3YXMgY2FsbGVkLCBvdGhlcndpc2Ug aXQgd291bGQgbm90Cj4gaGF2ZSBjYWxsZWQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVh dGUoKQo+IAo+ICAgICBpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzICYmICFjdHgtPmVuZ2luZVty aW5nLT5pZF0uc3RhdGUpIHsKPiAgICAgICAgIGludCByZXQgPSBpbnRlbF9scl9jb250ZXh0X2Rl ZmVycmVkX2NyZWF0ZShjdHgsIHJpbmcpOwo+ICAgICAgICAgaWYgKHJldCkgewo+ICAgICAgICAg ICAgICBEUk1fREVCVUcoIkNvdWxkIG5vdCBjcmVhdGUgTFJDICV1OiAlZFxuIiwgY3R4X2lkLCBy ZXQpOwo+ICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgICAgICAgfQo+ICAg ICB9Cj4gCj4gYW5kIGxpa2V3aXNlIHRoYXQgZnVuY3Rpb24gd291bGQgbm90IGhhdmUgY2FsbGVk IGdlbjhfaW5pdF9yY3NfY29udGV4dCgpCj4gdW5sZXNzIHRoaXMgd2FzIGEgbmV3IGNvbnRleHQ6 Cj4gCj4gICAgIGlmIChjdHggPT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KQo+ICAgICAgICAgbHJj X3NldHVwX2hhcmR3YXJlX3N0YXR1c19wYWdlKHJpbmcsIGN0eF9vYmopOwo+ICAgICBlbHNlIGlm IChyaW5nLT5pZCA9PSBSQ1MgJiYgIWN0eC0+cmNzX2luaXRpYWxpemVkKSB7Cj4gICAgICAgICBp ZiAocmluZy0+aW5pdF9jb250ZXh0KSB7Cj4gICAgICAgICAgICAgcmV0ID0gcmluZy0+aW5pdF9j b250ZXh0KHJpbmcsIGN0eCk7Cj4gICAgICAgICAgICAgaWYgKHJldCkgewo+ICAgICAgICAgICAg ICAgICAgRFJNX0VSUk9SKCJyaW5nIGluaXQgY29udGV4dDogJWRcbiIsIHJldCk7Cj4gICAgICAg ICAgICAgICAgICBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZiA9IE5VTEw7Cj4gICAgICAg ICAgICAgICAgICBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGUgPSBOVUxMOwo+ICAgICAgICAg ICAgICAgICAgZ290byBlcnJvcjsKPiAgICAgICAgICAgICB9Cj4gICAgICAgICB9Cj4gCj4gICAg ICAgICBjdHgtPnJjc19pbml0aWFsaXplZCA9IHRydWU7Cj4gICAgIH0KPiAKPiBOb3RlIHRoYXQg cmNzX2luaXRpYWxpemVkIGlzIG5ldmVyIGNsZWFyZWQsIGV2ZW4gd2l0aCB5b3VyIGNoYW5nZSwg c28KPiB0aGF0IGluIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uIHdlIHdvdWxkbid0IGVuZCB1 cCBpbiB0aGlzIHBhdGguIFNvIEkKPiB0aGluayB0aGUgbXlzdGVyeSBpcyBob3cgdGhpcyBjb250 ZXh0IGVuZGVkIHVwIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZToKPiBoYXMgaXQgYmVlbiBwYXJ0 aWFsbHkgZnJlZWQgYW5kIHRoZW4gcmV1c2VkLCBvciBoYXMgc29tZSBwYXJ0IG9mIHRoZSBuZXcK PiBjb250ZXh0IGFsbG9jYXRpb24gcGF0aCBmYWlsZWQgYnV0IG5vdCBiZWVuIHVud291bmQgY29y cmVjdGx5Pwo+IAo+IEFuZCBpZiBzZXR0aW5nIHRvIE5VTEwgYSBwb2ludGVyIHRoYXQncyBpbnNp ZGUgYSBzdHJ1Y3R1cmUgdGhhdCdzIGluIHRoZQo+IHByb2Nlc3Mgb2YgYmVpbmcgZnJlZWQgYWN0 dWFsbHkgbWFrZXMgYSBkaWZmZXJlbmNlLCBkb2Vzbid0IHRoYXQgbWVhbgo+IHRoZXJlJ3MgYSB1 c2UtYWZ0ZXItZnJlZSBpc3N1ZSBzb21ld2hlcmU/Cj4gCj4gLkRhdmUuCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rs w6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==