From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/dp: Use large transactions for I2C over AUX Date: Mon, 26 Jan 2015 18:00:11 +0200 Message-ID: <20150126160011.GB19354@intel.com> References: <1422285768-1655-1-git-send-email-simon.farnsworth@onelan.co.uk> <20150126153335.GA19354@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 3F1906E26E for ; Mon, 26 Jan 2015 08:00:22 -0800 (PST) Content-Disposition: inline In-Reply-To: <20150126153335.GA19354@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Simon Farnsworth Cc: Thierry Reding , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKYW4gMjYsIDIwMTUgYXQgMDU6MzM6MzVQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIE1vbiwgSmFuIDI2LCAyMDE1IGF0IDAzOjIyOjQ4UE0gKzAwMDAsIFNpbW9u IEZhcm5zd29ydGggd3JvdGU6Cj4gPiBEaXNwbGF5UG9ydCB0byBEVkktRCBEdWFsIExpbmsgYWRh cHRlcnMgZGVzaWduZWQgYnkgQml6bGluayBoYXZlIGJ1Z3MgaW4KPiA+IHRoZWlyIEkyQyBvdmVy IEFVWCBpbXBsZW1lbnRhdGlvbi4gVGhleSB3b3JrIGZpbmUgd2l0aCBXaW5kb3dzLCBidXQgZmFp bAo+ID4gd2l0aCBMaW51eC4KPiA+IAo+ID4gSXQgdHVybnMgb3V0IHRoYXQgdGhleSBjYW5ub3Qg a2VlcCBhbiBJMkMgdHJhbnNhY3Rpb24gb3BlbiB1bmxlc3MgdGhlCj4gPiBwcmV2aW91cyByZWFk IHdhcyAxNiBieXRlczsgc2hvcnRlciByZWFkcyBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIHpl cm8KPiA+IGJ5dGUgdHJhbnNmZXIgZW5kaW5nIHRoZSBJMkMgdHJhbnNhY3Rpb24uCj4gPiAKPiA+ IENvcHkgV2luZG93cydzIGJlaGF2aW91ciwgYW5kIHJlYWQgMTYgYnl0ZXMgYXQgYSB0aW1lLiBJ ZiB3ZSBnZXQgYSBzaG9ydAo+ID4gcmVwbHksIGFzc3VtZSB0aGF0IHRoZXJlJ3MgYSBoYXJkd2Fy ZSBib3R0bGVuZWNrLCBhbmQgc2hyaW5rIG91ciByZWFkIHNpemUKPiA+IHRvIG1hdGNoLgo+ID4g Cj4gPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBGYXJuc3dvcnRoIDxzaW1vbi5mYXJuc3dvcnRoQG9u ZWxhbi5jby51az4KPiA+IC0tLQo+ID4gCj4gPiB2MiBjaGFuZ2VzLCBhZnRlciBmZWVkYmFjayBm cm9tIFRoaWVycnkgYW5kIFZpbGxlOgo+ID4gCj4gPiAgKiBIYW5kbGUgc2hvcnQgcmVwbGllcy4g SSd2ZSBkZWNpZGVkIChhcmJpdHJhcmlseSkgdGhhdCBhIHNob3J0IHJlcGx5Cj4gPiAgICByZXN1 bHRzIGluIHVzIGRyb3BwaW5nIGJhY2sgdG8gdGhlIG5ld2x5IGNob3NlbiBzaXplIGZvciB0aGUg cmVzdCBvZiB0aGlzCj4gPiAgICBJMkMgdHJhbnNhY3Rpb24uIFRodXMsIGdpdmVuIGFuIGF0dGVt cHQgdG8gcmVhZCB0aGUgZmlyc3QgMTYgYnl0ZXMgb2YKPiA+ICAgIEVESUQsIGFuZCBhIHNpbmsg dGhhdCBvbmx5IGRvZXMgNCBieXRlcyBvZiBidWZmZXJpbmcsIHdlIHdpbGwgc2VlIHRoZQo+ID4g ICAgZm9sbG93aW5nIEFVWCB0cmFuc2ZlcnMgZm9yIHRoZSBFRElEIHJlYWQgKGFmdGVyIGFkZHJl c3MgaXMgc2V0KToKPiA+IAo+ID4gICAgPHNldCBhZGRyZXNzLCBibG9jayBldGM+Cj4gPiAgICBS ZWFkIDE2IGJ5dGVzIGZyb20gSTJDIG92ZXIgQVVYLgo+ID4gICAgUmVwbHkgd2l0aCA0IGJ5dGVz Cj4gPiAgICBSZWFkIDQgYnl0ZXMKPiA+ICAgIFJlcGx5IHdpdGggNCBieXRlcwo+ID4gICAgUmVh ZCA0IGJ5dGVzCj4gPiAgICBSZXBseSB3aXRoIDQgYnl0ZXMKPiA+ICAgIFJlYWQgNCBieXRlcwo+ ID4gICAgUmVwbHkgd2l0aCA0IGJ5dGVzCj4gPiAgICA8ZW5kIEkyQyB0cmFuc2FjdGlvbj4KPiAK PiBJIHRoaW5rIHRoYXQncyBhZ2Fpc250IHRoZSBzcGVjLiBJSVJDIHlvdSBoYXZlIHRvIGtlZXAg cmVwZWF0aW5nIHRoZQo+IHNhbWUgdHJhbnNhY3Rpb24gKG1lYW5pbmcgYWRkcmVzcy9sZW4gYXJl IHVuY2hhbmdlZCkgdW50aWwgYWxsIHRoZSBkYXRhCj4gd2FzIHRyYW5zZmVycmVkLgoKQWN0dWFs bHkgZm9yIGFuIGkyYyByZWFkIGl0IHNlZW1zIHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBsZW4g b3IgcmVkdWNlCnRoZSBsZW4gYnkgdGhlIGFtb3VudCB5b3UgYWxyZWFkeSByZWNlaXZlZC4gUmVk dWNpbmcgc2VlbXMgbW9yZQphcHByb3JpYXRlIGFzIHRoZSBzcGVjIGdvZXMgdG8gc3RhdGUgdGhh dCB3aGVuIHJlcGVhdGluZyB0aGUgdGhlIG1lc3NhZ2UKd2l0aCB0aGUgb3JpZ2luYWwgbGVuZ3Ro IHRoZSBzaW5rIGlzIGxpa2VseSB0byByZWFkIG1vcmUgaTJjIGRhdGEgdGhhbgp3aWxsIGJlIG5l ZWRlZC4gQWx0aG9ndWggbWF5YmUgaXQgY2FuIGJ1ZmZlciBpdCBzbyB0aGF0IGlmIHRoZSBvcmln aW5hbAphbW91bnQgb2YgZGF0YSB3YXMgbW9yZSB0aGFuIDE2IGJ5dGVzIHdlIG1pZ2h0IGdldCB0 aGUgYW5zd2VyIHRvIHRoZQpuZXh0IG1lc3NhZ2UgcXVpY2tlci4gU28gbWF5YmUgd2Ugc2hvdWxk IGp1c3Qga2VlcCB1cGRhdGluZyB0aGUgbGVuZ3RoCndpdGggJ21pbigxNiwgdG90YWxfYnl0ZXMg LSB0b3RhbF9ieXRlc19yZWNlaXZlZCknID8KCkZvciB3cml0ZXMgd2UgZG9uJ3Qgc2VlbSB0byBk byBhbnl0aGluZyBjb3JyZWN0bHkgYXRtLiBXaGVuIGdldHRpbmcgYQpkZWZlciBvciBhY2sgdy8g TSB2YWx1ZSB3ZSBzaG91bGQgaXNzdWUgYSBJMkNfV1JJVEVfU1RBVFVTX1VQREFURSBjb21tYW5k CnRvIHByb21wdCB0aGUgc2luayB0byByZXBvcnQgYmFjayB3aXRoIGFuIHVwZGF0ZSBNIHZhbHVl LiBDdXJyZW50bHkgd2UKc2VlbSB0byBqdXN0IHJldHJ5IHdpdGggdGhlIHNhbWUgd3JpdGUgbWVz c2FnZS4KCj4gCj4gPiBOb3RlIHRoYXQgSSd2ZSBub3QgbG9va2VkIGF0IE1TVCBzdXBwb3J0IC0g SSBoYXZlIG5laXRoZXIgdGhlIERQIDEuMiBzcGVjCj4gPiBub3IgYW55IE1TVCBicmFuY2ggZGV2 aWNlcywgc28gSSBjYW4ndCB0ZXN0IGFueXRoaW5nIEkgd3JpdGUgb3IgY2hlY2sgaXQKPiA+IGFn YWluc3QgYSBzcGVjLiBJdCBsb29rcyBmcm9tIHRoZSBjb2RlLCBob3dldmVyLCBhcyBpZiBNU1Qg aGFzIHRoZSBicmFuY2gKPiA+IGRldmljZSBkbyB0aGUgc3BsaXQgZnJvbSBhIGJpZyByZXF1ZXN0 IGludG8gc21hbGwgdHJhbnNhY3Rpb25zLgo+ID4gCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9k cF9oZWxwZXIuYyB8IDQyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICB8ICA1ICsrKysrCj4gPiAgMiBm aWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gPiBpbmRleCA3OTk2OGUzLi43MDFiMjAxIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+ID4gQEAgLTM5NiwxMSArMzk2LDEzIEBAIHN0YXRp YyB1MzIgZHJtX2RwX2kyY19mdW5jdGlvbmFsaXR5KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRl cikKPiA+ICAgKiByZXRyeWluZyB0aGUgdHJhbnNhY3Rpb24gYXMgYXBwcm9wcmlhdGUuICBJdCBp cyBhc3N1bWVkIHRoYXQgdGhlCj4gPiAgICogYXV4LT50cmFuc2ZlciBmdW5jdGlvbiBkb2VzIG5v dCBtb2RpZnkgYW55dGhpbmcgaW4gdGhlIG1zZyBvdGhlciB0aGFuIHRoZQo+ID4gICAqIHJlcGx5 IGZpZWxkLgo+ID4gKyAqCj4gPiArICogUmV0dXJucyBieXRlcyB0cmFuc2ZlcnJlZCBvbiBzdWNj ZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+ICAgKi8KPiA+ICBz dGF0aWMgaW50IGRybV9kcF9pMmNfZG9fbXNnKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVj dCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ID4gIHsKPiA+ICAJdW5zaWduZWQgaW50IHJldHJ5Owo+ ID4gLQlpbnQgZXJyOwo+ID4gKwlpbnQgcmV0Owo+ID4gIAo+ID4gIAkvKgo+ID4gIAkgKiBEUDEu MiBzZWN0aW9ucyAyLjcuNy4xLjUuNi4xIGFuZCAyLjcuNy4xLjYuNi4xOiBBIERQIFNvdXJjZSBk ZXZpY2UKPiA+IEBAIC00MDksMTQgKzQxMSwxNCBAQCBzdGF0aWMgaW50IGRybV9kcF9pMmNfZG9f bXNnKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ ID4gIAkgKi8KPiA+ICAJZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgNzsgcmV0cnkrKykgewo+ID4g IAkJbXV0ZXhfbG9jaygmYXV4LT5od19tdXRleCk7Cj4gPiAtCQllcnIgPSBhdXgtPnRyYW5zZmVy KGF1eCwgbXNnKTsKPiA+ICsJCXJldCA9IGF1eC0+dHJhbnNmZXIoYXV4LCBtc2cpOwo+ID4gIAkJ bXV0ZXhfdW5sb2NrKCZhdXgtPmh3X211dGV4KTsKPiA+IC0JCWlmIChlcnIgPCAwKSB7Cj4gPiAt CQkJaWYgKGVyciA9PSAtRUJVU1kpCj4gPiArCQlpZiAocmV0IDwgMCkgewo+ID4gKwkJCWlmIChy ZXQgPT0gLUVCVVNZKQo+ID4gIAkJCQljb250aW51ZTsKPiA+ICAKPiA+IC0JCQlEUk1fREVCVUdf S01TKCJ0cmFuc2FjdGlvbiBmYWlsZWQ6ICVkXG4iLCBlcnIpOwo+ID4gLQkJCXJldHVybiBlcnI7 Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygidHJhbnNhY3Rpb24gZmFpbGVkOiAlZFxuIiwgcmV0KTsK PiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gIAkJfQo+ID4gIAo+ID4gIAo+ID4gQEAgLTQ1Nyw5ICs0 NTksNyBAQCBzdGF0aWMgaW50IGRybV9kcF9pMmNfZG9fbXNnKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ID4gIAkJCSAqIEJvdGggbmF0aXZlIEFD SyBhbmQgSTJDIEFDSyByZXBsaWVzIHJlY2VpdmVkLiBXZQo+ID4gIAkJCSAqIGNhbiBhc3N1bWUg dGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLgo+ID4gIAkJCSAqLwo+ID4gLQkJCWlmIChlcnIg PCBtc2ctPnNpemUpCj4gPiAtCQkJCXJldHVybiAtRVBST1RPOwo+ID4gLQkJCXJldHVybiAwOwo+ ID4gKwkJCXJldHVybiByZXQ7Cj4gPiAgCj4gPiAgCQljYXNlIERQX0FVWF9JMkNfUkVQTFlfTkFD SzoKPiA+ICAJCQlEUk1fREVCVUdfS01TKCJJMkMgbmFja1xuIik7Cj4gPiBAQCAtNDg3LDYgKzQ4 Nyw3IEBAIHN0YXRpYyBpbnQgZHJtX2RwX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4ID0gYWRhcHRlci0+YWxnb19kYXRhOwo+ID4gIAl1bnNpZ25lZCBpbnQgaSwgajsKPiA+ ICsJaW50IHRyYW5zZmVyX3NpemUgPSBEUF9BVVhfTUFYX1BBWUxPQURfQllURVM7Cj4gPiAgCXN0 cnVjdCBkcm1fZHBfYXV4X21zZyBtc2c7Cj4gPiAgCWludCBlcnIgPSAwOwo+ID4gIAo+ID4gQEAg LTUwNywyMCArNTA4LDIzIEBAIHN0YXRpYyBpbnQgZHJtX2RwX2kyY194ZmVyKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsCj4gPiAgCQllcnIgPSBkcm1f ZHBfaTJjX2RvX21zZyhhdXgsICZtc2cpOwo+ID4gIAkJaWYgKGVyciA8IDApCj4gPiAgCQkJYnJl YWs7Cj4gPiAtCQkvKgo+ID4gLQkJICogTWFueSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMgc3Vw cG9ydCBGSUZPcyBsYXJnZXIgdGhhbiBhCj4gPiAtCQkgKiBzaW5nbGUgYnl0ZSwgYnV0IGl0IGhh cyBiZWVuIGVtcGlyaWNhbGx5IGRldGVybWluZWQgdGhhdAo+ID4gLQkJICogdHJhbnNmZXJyaW5n IGRhdGEgaW4gbGFyZ2VyIGNodW5rcyBjYW4gYWN0dWFsbHkgbGVhZCB0bwo+ID4gLQkJICogZGVj cmVhc2VkIHBlcmZvcm1hbmNlLiBUaGVyZWZvcmUgZWFjaCBtZXNzYWdlIGlzIHNpbXBseQo+ID4g LQkJICogdHJhbnNmZXJyZWQgYnl0ZS1ieS1ieXRlLgo+ID4gKwkJLyogQml6bGluayBkZXNpZ25l ZCBEUC0+RFZJLUQgRHVhbCBMaW5rIGFkYXB0ZXJzIHJlcXVpcmUgdGhlCj4gPiArICAgICAgICAg ICAgICAgICAqIEkyQyBvdmVyIEFVWCBwYWNrZXRzIHRvIGJlIGFzIGxhcmdlIGFzIHBvc3NpYmxl LiBJZiBub3QsCj4gPiArICAgICAgICAgICAgICAgICAqIHRoZSBJMkMgdHJhbnNhY3Rpb25zIG5l dmVyIHN1Y2NlZWQuCj4gPiArCQkgKgo+ID4gKwkJICogV2UgdGhlcmVmb3JlIHN0YXJ0IGJ5IHJl cXVlc3RpbmcgMTYgYnl0ZSB0cmFuc2ZlcnMuIElmCj4gPiArCQkgKiB0aGUgaGFyZHdhcmUgZ2l2 ZXMgdXMgYSBwYXJ0aWFsIEFDSywgd2Ugc3RpY2sgdG8gdGhlIG5ldwo+ID4gKwkJICogc21hbGxl ciBzaXplIGZyb20gdGhlIHBhcnRpYWwgQUNLLgo+ID4gIAkJICovCj4gPiAtCQlmb3IgKGogPSAw OyBqIDwgbXNnc1tpXS5sZW47IGorKykgewo+ID4gKwkJZm9yIChqID0gMDsgaiA8IG1zZ3NbaV0u bGVuOyBqICs9IHRyYW5zZmVyX3NpemUpIHsKPiA+ICAJCQltc2cuYnVmZmVyID0gbXNnc1tpXS5i dWYgKyBqOwo+ID4gLQkJCW1zZy5zaXplID0gMTsKPiA+ICsJCQltc2cuc2l6ZSA9IG1pbih0cmFu c2Zlcl9zaXplLCBtc2dzW2ldLmxlbiAtIGopOwo+ID4gIAo+ID4gLQkJCWVyciA9IGRybV9kcF9p MmNfZG9fbXNnKGF1eCwgJm1zZyk7Cj4gPiAtCQkJaWYgKGVyciA8IDApCj4gPiArCQkJdHJhbnNm ZXJfc2l6ZSA9IGRybV9kcF9pMmNfZG9fbXNnKGF1eCwgJm1zZyk7Cj4gPiArCQkJaWYgKHRyYW5z ZmVyX3NpemUgPD0gMCkgewo+ID4gKwkJCQllcnIgPSB0cmFuc2Zlcl9zaXplID09IDAgPyAtRVBS T1RPIDogdHJhbnNmZXJfc2l6ZTsKPiA+ICAJCQkJYnJlYWs7Cj4gPiArCQkJfQo+ID4gIAkJfQo+ ID4gIAkJaWYgKGVyciA8IDApCj4gPiAgCQkJYnJlYWs7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gPiBp bmRleCAxMWY4Yzg0Li40NDRkNTFiIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Rw X2hlbHBlci5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKPiA+IEBAIC00 Miw2ICs0Miw4IEBACj4gPiAgICogMS4yIGZvcm1hbGx5IGluY2x1ZGVzIGJvdGggZURQIGFuZCBE UEkgZGVmaW5pdGlvbnMuCj4gPiAgICovCj4gPiAgCj4gPiArI2RlZmluZSBEUF9BVVhfTUFYX1BB WUxPQURfQllURVMJMTYKPiA+ICsKPiA+ICAjZGVmaW5lIERQX0FVWF9JMkNfV1JJVEUJCTB4MAo+ ID4gICNkZWZpbmUgRFBfQVVYX0kyQ19SRUFECQkJMHgxCj4gPiAgI2RlZmluZSBEUF9BVVhfSTJD X1NUQVRVUwkJMHgyCj4gPiBAQCAtNTE5LDYgKzUyMSw5IEBAIHN0cnVjdCBkcm1fZHBfYXV4X21z ZyB7Cj4gPiAgICogdHJhbnNhY3Rpb25zLiBUaGUgZHJtX2RwX2F1eF9yZWdpc3Rlcl9pMmNfYnVz KCkgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuCj4gPiAgICogSTJDIGFkYXB0ZXIgdGhhdCBjYW4gYmUg cGFzc2VkIHRvIGRybV9wcm9iZV9kZGMoKS4gVXBvbiByZW1vdmFsLCBkcml2ZXJzCj4gPiAgICog c2hvdWxkIGNhbGwgZHJtX2RwX2F1eF91bnJlZ2lzdGVyX2kyY19idXMoKSB0byByZW1vdmUgdGhl IEkyQyBhZGFwdGVyLgo+ID4gKyAqIFRoZSBJMkMgYWRhcHRlciB1c2VzIGxvbmcgdHJhbnNmZXJz IGJ5IGRlZmF1bHQ7IGlmIGEgcGFydGlhbCByZXNwb25zZSBpcwo+ID4gKyAqIHJlY2VpdmVkLCB0 aGUgYWRhcHRlciB3aWxsIGRyb3AgZG93biB0byB0aGUgc2l6ZSBnaXZlbiBieSB0aGUgcGFydGlh bAo+ID4gKyAqIHJlc3BvbnNlIGZvciB0aGlzIHRyYW5zYWN0aW9uIG9ubHkuCj4gPiAgICoKPiA+ ICAgKiBOb3RlIHRoYXQgdGhlIGF1eCBoZWxwZXIgY29kZSBhc3N1bWVzIHRoYXQgdGhlIC50cmFu c2ZlcigpIGZ1bmN0aW9uCj4gPiAgICogb25seSBtb2RpZmllcyB0aGUgcmVwbHkgZmllbGQgb2Yg dGhlIGRybV9kcF9hdXhfbXNnIHN0cnVjdHVyZS4gIFRoZQo+ID4gLS0gCj4gPiAyLjEuMAo+IAo+ IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsIE9UQwoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK