From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3] drm/dp: Use large transactions for I2C over AUX Date: Wed, 28 Jan 2015 11:09:21 +0200 Message-ID: <874mrbs24e.fsf@intel.com> References: <1422373429-10137-1-git-send-email-simon.farnsworth@onelan.co.uk> 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 4CDF76E4E0 for ; Wed, 28 Jan 2015 01:08:31 -0800 (PST) In-Reply-To: <1422373429-10137-1-git-send-email-simon.farnsworth@onelan.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Simon Farnsworth , dri-devel@lists.freedesktop.org Cc: Thierry Reding List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyNyBKYW4gMjAxNSwgU2ltb24gRmFybnN3b3J0aCA8c2ltb24uZmFybnN3b3J0aEBv bmVsYW4uY28udWs+IHdyb3RlOgo+IERpc3BsYXlQb3J0IHRvIERWSS1EIER1YWwgTGluayBhZGFw dGVycyBkZXNpZ25lZCBieSBCaXpsaW5rIGhhdmUgYnVncyBpbgo+IHRoZWlyIEkyQyBvdmVyIEFV WCBpbXBsZW1lbnRhdGlvbi4gVGhleSB3b3JrIGZpbmUgd2l0aCBXaW5kb3dzLCBidXQgZmFpbAo+ IHdpdGggTGludXguCj4KPiBJdCB0dXJucyBvdXQgdGhhdCB0aGV5IGNhbm5vdCBrZWVwIGFuIEky QyB0cmFuc2FjdGlvbiBvcGVuIHVubGVzcyB0aGUKPiBwcmV2aW91cyByZWFkIHdhcyAxNiBieXRl czsgc2hvcnRlciByZWFkcyBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIHplcm8KPiBieXRlIHRy YW5zZmVyIGVuZGluZyB0aGUgSTJDIHRyYW5zYWN0aW9uLgo+Cj4gQ29weSBXaW5kb3dzJ3MgYmVo YXZpb3VyLCBhbmQgcmVhZCAxNiBieXRlcyBhdCBhIHRpbWUuIElmIHdlIGdldCBhIHNob3J0Cj4g cmVwbHksIGFzc3VtZSB0aGF0IHRoZXJlJ3MgYSBoYXJkd2FyZSBib3R0bGVuZWNrLCBhbmQgc2hy aW5rIG91ciByZWFkIHNpemUKPiB0byBtYXRjaC4gRm9yIHRoaXMgcHVycG9zZSwgdXNlIHRoZSBh bGdvcml0aG0gaW4gdGhlIERpc3BsYXlQb3J0IDEuMiBzcGVjLAo+IGluIHRoZSBob3BlcyB0aGF0 IGl0J2xsIGJlIGNsb3Nlc3QgdG8gd2hhdCBXaW5kb3dzIGRvZXMsIGFzIG5vIHNpbmsgSSd2ZQo+ IGZvdW5kIGFjdHVhbGx5IGdpdmVzIHNob3J0IHJlcGxpZXMuCj4KPiBBbHNvIHByb3ZpZGUgYSBt b2R1bGUgcGFyYW1ldGVyIGZvciB0ZXN0aW5nIHNtYWxsZXIgdHJhbnNmZXIgc2l6ZXMsIGluIGNh c2UKPiB0aGVyZSBhcmUgc2lua3Mgb3V0IHRoZXJlIHRoYXQgY2Fubm90IHdvcmsgd2l0aCBXaW5k b3dzLgo+Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24gRmFybnN3b3J0aCA8c2ltb24uZmFybnN3b3J0 aEBvbmVsYW4uY28udWs+Cj4gLS0tCj4KPiB2MyBjaGFuZ2VzLCBhZnRlciBmZWVkYmFjayBmcm9t IFZpbGxlIGFuZCBtb3JlIHRlc3Rpbmcgb2YgV2luZG93czoKPgo+ICAqIENoYW5nZSB0aGUgc2hv cnQgcmVwbHkgYWxnb3JpdGhtIHRvIG1hdGNoIFZpbGxlJ3MgZGVzY3JpcHRpb24gb2YgdGhlCj4g ICAgRGlzcGxheVBvcnQgMS4yIHNwZWMgd29yZGluZy4KPgo+ICAqIEFkZCBhIG1vZHVsZSBwYXJh bWV0ZXIgdG8gc2V0IHRoZSBkZWZhdWx0IHRyYW5zZmVyIHNpemUgZm9yCj4gICAgZXhwZXJpbWVu dHMuIFJlcXVlc3RlZCBvdmVyIElSQyBieSBWaWxsZS4KCklNTyBtb2R1bGUgcGFyYW1ldGVycyBh cmUgQUJJIHdlIHNob3VsZG4ndCBhZGQganVzdCBiZWNhdXNlIHdlIG1pZ2h0Cm5lZWQgdGhlbS4g QWxzbyBzZWUgbXkgcmVwbHkgaW4gdGhlIG90aGVyIHRocmVhZApodHRwOi8vbWlkLmdtYW5lLm9y Zy84NzdmdzdzMmxoLmZzZkBpbnRlbC5jb20KCkJSLApKYW5pLgoKPgo+IE5vLW9uZSdzIGJlZW4g YWJsZSB0byBmaW5kIGEgZGV2aWNlIHRoYXQgZG9lcyBzaG9ydCByZXBsaWVzLCBidXQgZXhwZXJp bWVudHMKPiBzaG93IHRoYXQgYmlnZ2VyIHJlYWRzIGFyZSBmYXN0ZXIgb24gbW9zdCBkZXZpY2Vz LiBWaWxsZSBnb3Q6Cj4KPiAgRFAtPkRWSSAoT1VJIDAwMWNmOCk6ICA0MG1zIC0+IDM1bXMKPiAg RFAtPlZHQSAoT1VJIDAwMjJiOSk6ICA0NW1zIC0+IDM4bXMKPiAgWm90YWMgRFAtPjJ4SERNSTog ICAgICAyNW1zIC0+ICA0bXMKPgo+IHYyIGNoYW5nZXMsIGFmdGVyIGZlZWRiYWNrIGZyb20gVGhp ZXJyeSBhbmQgVmlsbGU6Cj4KPiAgKiBIYW5kbGUgc2hvcnQgcmVwbGllcy4gSSd2ZSBkZWNpZGVk IChhcmJpdHJhcmlseSkgdGhhdCBhIHNob3J0IHJlcGx5Cj4gICAgcmVzdWx0cyBpbiB1cyBkcm9w cGluZyBiYWNrIHRvIHRoZSBuZXdseSBjaG9zZW4gc2l6ZSBmb3IgdGhlIHJlc3Qgb2YgdGhpcwo+ ICAgIEkyQyB0cmFuc2FjdGlvbi4gVGh1cywgZ2l2ZW4gYW4gYXR0ZW1wdCB0byByZWFkIHRoZSBm aXJzdCAxNiBieXRlcyBvZgo+ICAgIEVESUQsIGFuZCBhIHNpbmsgdGhhdCBvbmx5IGRvZXMgNCBi eXRlcyBvZiBidWZmZXJpbmcsIHdlIHdpbGwgc2VlIHRoZQo+ICAgIGZvbGxvd2luZyBBVVggdHJh bnNmZXJzIGZvciB0aGUgRURJRCByZWFkIChhZnRlciBhZGRyZXNzIGlzIHNldCk6Cj4KPiAgICA8 c2V0IGFkZHJlc3MsIGJsb2NrIGV0Yz4KPiAgICBSZWFkIDE2IGJ5dGVzIGZyb20gSTJDIG92ZXIg QVVYLgo+ICAgIFJlcGx5IHdpdGggNCBieXRlcwo+ICAgIFJlYWQgNCBieXRlcwo+ICAgIFJlcGx5 IHdpdGggNCBieXRlcwo+ICAgIFJlYWQgNCBieXRlcwo+ICAgIFJlcGx5IHdpdGggNCBieXRlcwo+ ICAgIFJlYWQgNCBieXRlcwo+ICAgIFJlcGx5IHdpdGggNCBieXRlcwo+ICAgIDxlbmQgSTJDIHRy YW5zYWN0aW9uPgo+Cj4gTm90ZSB0aGF0IEkndmUgbm90IGxvb2tlZCBhdCBNU1Qgc3VwcG9ydCAt IEkgaGF2ZSBuZWl0aGVyIHRoZSBEUCAxLjIgc3BlYwo+IG5vciBhbnkgTVNUIGJyYW5jaCBkZXZp Y2VzLCBzbyBJIGNhbid0IHRlc3QgYW55dGhpbmcgSSB3cml0ZSBvciBjaGVjayBpdAo+IGFnYWlu c3QgYSBzcGVjLiBJdCBsb29rcyBmcm9tIHRoZSBjb2RlLCBob3dldmVyLCBhcyBpZiBNU1QgaGFz IHRoZSBicmFuY2gKPiBkZXZpY2UgZG8gdGhlIHNwbGl0IGZyb20gYSBiaWcgcmVxdWVzdCBpbnRv IHNtYWxsIHRyYW5zYWN0aW9ucy4KPgo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5j IHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPiAgaW5jbHVk ZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICB8ICA1ICsrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDc3 IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5j Cj4gaW5kZXggNzk5NjhlMy4uM2RiMTE2YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2RwX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+ IEBAIC0zOTYsMTEgKzM5NiwxMyBAQCBzdGF0aWMgdTMyIGRybV9kcF9pMmNfZnVuY3Rpb25hbGl0 eShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gICAqIHJldHJ5aW5nIHRoZSB0cmFuc2Fj dGlvbiBhcyBhcHByb3ByaWF0ZS4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUKPiAgICogYXV4LT50 cmFuc2ZlciBmdW5jdGlvbiBkb2VzIG5vdCBtb2RpZnkgYW55dGhpbmcgaW4gdGhlIG1zZyBvdGhl ciB0aGFuIHRoZQo+ICAgKiByZXBseSBmaWVsZC4KPiArICoKPiArICogUmV0dXJucyBieXRlcyB0 cmFuc2ZlcnJlZCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVy ZS4KPiAgICovCj4gIHN0YXRpYyBpbnQgZHJtX2RwX2kyY19kb19tc2coc3RydWN0IGRybV9kcF9h dXggKmF1eCwgc3RydWN0IGRybV9kcF9hdXhfbXNnICptc2cpCj4gIHsKPiAgCXVuc2lnbmVkIGlu dCByZXRyeTsKPiAtCWludCBlcnI7Cj4gKwlpbnQgcmV0Owo+ICAKPiAgCS8qCj4gIAkgKiBEUDEu MiBzZWN0aW9ucyAyLjcuNy4xLjUuNi4xIGFuZCAyLjcuNy4xLjYuNi4xOiBBIERQIFNvdXJjZSBk ZXZpY2UKPiBAQCAtNDA5LDE0ICs0MTEsMTQgQEAgc3RhdGljIGludCBkcm1fZHBfaTJjX2RvX21z ZyhzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cgKm1zZykKPiAg CSAqLwo+ICAJZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgNzsgcmV0cnkrKykgewo+ICAJCW11dGV4 X2xvY2soJmF1eC0+aHdfbXV0ZXgpOwo+IC0JCWVyciA9IGF1eC0+dHJhbnNmZXIoYXV4LCBtc2cp Owo+ICsJCXJldCA9IGF1eC0+dHJhbnNmZXIoYXV4LCBtc2cpOwo+ICAJCW11dGV4X3VubG9jaygm YXV4LT5od19tdXRleCk7Cj4gLQkJaWYgKGVyciA8IDApIHsKPiAtCQkJaWYgKGVyciA9PSAtRUJV U1kpCj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJaWYgKHJldCA9PSAtRUJVU1kpCj4gIAkJCQlj b250aW51ZTsKPiAgCj4gLQkJCURSTV9ERUJVR19LTVMoInRyYW5zYWN0aW9uIGZhaWxlZDogJWRc biIsIGVycik7Cj4gLQkJCXJldHVybiBlcnI7Cj4gKwkJCURSTV9ERUJVR19LTVMoInRyYW5zYWN0 aW9uIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gIAkJfQo+ICAKPiAg Cj4gQEAgLTQ1Nyw5ICs0NTksNyBAQCBzdGF0aWMgaW50IGRybV9kcF9pMmNfZG9fbXNnKHN0cnVj dCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ICAJCQkgKiBC b3RoIG5hdGl2ZSBBQ0sgYW5kIEkyQyBBQ0sgcmVwbGllcyByZWNlaXZlZC4gV2UKPiAgCQkJICog Y2FuIGFzc3VtZSB0aGUgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwuCj4gIAkJCSAqLwo+IC0JCQlp ZiAoZXJyIDwgbXNnLT5zaXplKQo+IC0JCQkJcmV0dXJuIC1FUFJPVE87Cj4gLQkJCXJldHVybiAw Owo+ICsJCQlyZXR1cm4gcmV0Owo+ICAKPiAgCQljYXNlIERQX0FVWF9JMkNfUkVQTFlfTkFDSzoK PiAgCQkJRFJNX0RFQlVHX0tNUygiSTJDIG5hY2tcbiIpOwo+IEBAIC00ODIsMTQgKzQ4Miw2NyBA QCBzdGF0aWMgaW50IGRybV9kcF9pMmNfZG9fbXNnKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0 cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ICAJcmV0dXJuIC1FUkVNT1RFSU87Cj4gIH0KPiAg Cj4gKy8qCj4gKyAqIEtlZXAgcmV0cnlpbmcgZHJtX2RwX2kyY19kb19tc2cgdW50aWwgYWxsIGRh dGEgaGFzIGJlZW4gdHJhbnNmZXJyZWQuCj4gKyAqCj4gKyAqIFJldHVybnMgYW4gZXJyb3IgY29k ZSBvbiBmYWlsdXJlLCBvciBhIHJlY29tbWVuZGVkIHRyYW5zZmVyIHNpemUgb24gc3VjY2Vzcy4K PiArICovCj4gK3N0YXRpYyBpbnQgZHJtX2RwX2kyY19kcmFpbl9tc2coc3RydWN0IGRybV9kcF9h dXggKmF1eCwgc3RydWN0IGRybV9kcF9hdXhfbXNnICptc2cpCj4gK3sKPiArCWludCByZXQ7Cj4g KwlzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cgZHJhaW5fbXNnOwo+ICsJaW50IGRyYWluX2J5dGVzOwo+ ICsKPiArCXJldCA9IGRybV9kcF9pMmNfZG9fbXNnKGF1eCwgbXNnKTsKPiArCj4gKwlpZiAocmV0 ID09IG1zZy0+c2l6ZSB8fCByZXQgPD0gMCkKPiArCQlyZXR1cm4gcmV0ID09IDAgPyAtRVBST1RP IDogcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBXZSBoYWQgYSBwYXJ0aWFsIHJlcGx5LiBEcmFpbiBv dXQgdGhlIHJlc3Qgb2YgdGhlIGJ5dGVzIHdlCj4gKwkgKiBvcmlnaW5hbGx5IHJlcXVlc3RlZCwg dGhlbiByZXR1cm4gdGhlIHNpemUgb2YgdGhlIHBhcnRpYWwKPiArCSAqIHJlcGx5LiBJbiB0aGVv cnksIHRoaXMgc2hvdWxkIG1hdGNoIERQIDEuMidzIGRlc2lyZWQgYmVoYXZpb3VyCj4gKwkgKiBm b3IgSTJDIG92ZXIgQVVYLgo+ICsJICovCj4gKwlEUk1fREVCVUdfS01TKCJQYXJ0aWFsIEkyQyBy ZXBseTogcmVxdWVzdGVkICV6dSBieXRlcyBnb3QgJWQgYnl0ZXNcbiIsIG1zZy0+c2l6ZSwgcmV0 KTsKPiArCWRyYWluX21zZyA9ICptc2c7Cj4gKwlkcmFpbl9tc2cuc2l6ZSAtPSByZXQ7Cj4gKwlk cmFpbl9tc2cuYnVmZmVyICs9IHJldDsKPiArCXdoaWxlIChkcmFpbl9tc2cuc2l6ZSAhPSAwKSB7 Cj4gKwkJZHJhaW5fYnl0ZXMgPSBkcm1fZHBfaTJjX2RvX21zZyhhdXgsICZkcmFpbl9tc2cpOwo+ ICsJCWlmIChkcmFpbl9ieXRlcyA8PSAwKQo+ICsJCQlyZXR1cm4gZHJhaW5fYnl0ZXMgPT0gMCA/ IC1FUFJPVE8gOiBkcmFpbl9ieXRlczsKPiArCQlkcmFpbl9tc2cuc2l6ZSAtPSBkcmFpbl9ieXRl czsKPiArCQlkcmFpbl9tc2cuYnVmZmVyICs9IGRyYWluX2J5dGVzOwo+ICsJfQo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICsKPiArLyoKPiArICogQml6bGluayBkZXNpZ25lZCBEUC0+RFZJLUQgRHVh bCBMaW5rIGFkYXB0ZXJzIHJlcXVpcmUgdGhlIEkyQyBvdmVyIEFVWAo+ICsgKiBwYWNrZXRzIHRv IGJlIGFzIGxhcmdlIGFzIHBvc3NpYmxlLiBJZiBub3QsIHRoZSBJMkMgdHJhbnNhY3Rpb25zIG5l dmVyCj4gKyAqIHN1Y2NlZWQuIEhlbmNlIHRoZSBkZWZhdWx0IGlzIG1heGltdW0uCj4gKyAqLwo+ ICtzdGF0aWMgaW50IGRwX2F1eF9pMmNfdHJhbnNmZXJfc2l6ZSBfX3JlYWRfbW9zdGx5ID0gRFBf QVVYX01BWF9QQVlMT0FEX0JZVEVTOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZHBfYXV4X2kyY190 cmFuc2Zlcl9zaXplLCBkcF9hdXhfaTJjX3RyYW5zZmVyX3NpemUsIGludCwgMDYwMCk7Cj4gK01P RFVMRV9QQVJNX0RFU0MoZHBfYXV4X2kyY190cmFuc2Zlcl9zaXplLAo+ICsJCSAiTnVtYmVyIG9m IGJ5dGVzIHRvIHRyYW5zZmVyIGluIGEgc2luZ2xlIEkyQyBvdmVyIERQIEFVWCBDSCBtZXNzYWdl LCAoMS0xNiwgZGVmYXVsdCAxNikiKTsKPiArCj4gIHN0YXRpYyBpbnQgZHJtX2RwX2kyY194ZmVy KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsCj4gIAkJ CSAgIGludCBudW0pCj4gIHsKPiAgCXN0cnVjdCBkcm1fZHBfYXV4ICphdXggPSBhZGFwdGVyLT5h bGdvX2RhdGE7Cj4gIAl1bnNpZ25lZCBpbnQgaSwgajsKPiArCWludCB0cmFuc2Zlcl9zaXplOwo+ ICAJc3RydWN0IGRybV9kcF9hdXhfbXNnIG1zZzsKPiAgCWludCBlcnIgPSAwOwo+ICAKPiArCWlm IChkcF9hdXhfaTJjX3RyYW5zZmVyX3NpemUgPCAxIHx8IGRwX2F1eF9pMmNfdHJhbnNmZXJfc2l6 ZSA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUykgewo+ICsJCURSTV9FUlJPUigiZHBfYXV4X2ky Y190cmFuc2Zlcl9zaXplIGludmFsaWQgLSBjaGFuZ2luZyBmcm9tICVkIHRvICVkXG4iLAo+ICsJ CQkgIGRwX2F1eF9pMmNfdHJhbnNmZXJfc2l6ZSwgRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTKTsK PiArCQlkcF9hdXhfaTJjX3RyYW5zZmVyX3NpemUgPSBEUF9BVVhfTUFYX1BBWUxPQURfQllURVM7 Cj4gKwl9Cj4gKwo+ICAJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKPiAgCj4gIAlmb3Ig KGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKPiBAQCAtNTA3LDIwICs1NjAsMjAgQEAgc3RhdGljIGlu dCBkcm1fZHBfaTJjX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJj X21zZyAqbXNncywKPiAgCQllcnIgPSBkcm1fZHBfaTJjX2RvX21zZyhhdXgsICZtc2cpOwo+ICAJ CWlmIChlcnIgPCAwKQo+ICAJCQlicmVhazsKPiAtCQkvKgo+IC0JCSAqIE1hbnkgaGFyZHdhcmUg aW1wbGVtZW50YXRpb25zIHN1cHBvcnQgRklGT3MgbGFyZ2VyIHRoYW4gYQo+IC0JCSAqIHNpbmds ZSBieXRlLCBidXQgaXQgaGFzIGJlZW4gZW1waXJpY2FsbHkgZGV0ZXJtaW5lZCB0aGF0Cj4gLQkJ ICogdHJhbnNmZXJyaW5nIGRhdGEgaW4gbGFyZ2VyIGNodW5rcyBjYW4gYWN0dWFsbHkgbGVhZCB0 bwo+IC0JCSAqIGRlY3JlYXNlZCBwZXJmb3JtYW5jZS4gVGhlcmVmb3JlIGVhY2ggbWVzc2FnZSBp cyBzaW1wbHkKPiAtCQkgKiB0cmFuc2ZlcnJlZCBieXRlLWJ5LWJ5dGUuCj4gKwkJLyogV2Ugd2Fu dCBlYWNoIHRyYW5zYWN0aW9uIHRvIGJlIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBidXQKPiArCQkg KiB3ZSdsbCBnbyB0byBzbWFsbGVyIHNpemVzIGlmIHRoZSBoYXJkd2FyZSBnaXZlcyB1cyBhCj4g KwkJICogc2hvcnQgcmVwbHkuCj4gIAkJICovCj4gLQkJZm9yIChqID0gMDsgaiA8IG1zZ3NbaV0u bGVuOyBqKyspIHsKPiArCQl0cmFuc2Zlcl9zaXplID0gZHBfYXV4X2kyY190cmFuc2Zlcl9zaXpl Owo+ICsJCWZvciAoaiA9IDA7IGogPCBtc2dzW2ldLmxlbjsgaiArPSBtc2cuc2l6ZSkgewo+ICAJ CQltc2cuYnVmZmVyID0gbXNnc1tpXS5idWYgKyBqOwo+IC0JCQltc2cuc2l6ZSA9IDE7Cj4gKwkJ CW1zZy5zaXplID0gbWluKCh1bnNpZ25lZCl0cmFuc2Zlcl9zaXplLCBtc2dzW2ldLmxlbiAtIGop Owo+ICAKPiAtCQkJZXJyID0gZHJtX2RwX2kyY19kb19tc2coYXV4LCAmbXNnKTsKPiAtCQkJaWYg KGVyciA8IDApCj4gKwkJCXRyYW5zZmVyX3NpemUgPSBkcm1fZHBfaTJjX2RyYWluX21zZyhhdXgs ICZtc2cpOwo+ICsJCQlpZiAodHJhbnNmZXJfc2l6ZSA8IDApIHsKPiArCQkJCWVyciA9IHRyYW5z ZmVyX3NpemU7Cj4gIAkJCQlicmVhazsKPiArCQkJfQo+ICAJCX0KPiAgCQlpZiAoZXJyIDwgMCkK PiAgCQkJYnJlYWs7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBi L2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+IGluZGV4IDExZjhjODQuLjQ0NGQ1MWIgMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2RwX2hlbHBlci5oCj4gQEAgLTQyLDYgKzQyLDggQEAKPiAgICogMS4yIGZvcm1hbGx5 IGluY2x1ZGVzIGJvdGggZURQIGFuZCBEUEkgZGVmaW5pdGlvbnMuCj4gICAqLwo+ICAKPiArI2Rl ZmluZSBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMJMTYKPiArCj4gICNkZWZpbmUgRFBfQVVYX0ky Q19XUklURQkJMHgwCj4gICNkZWZpbmUgRFBfQVVYX0kyQ19SRUFECQkJMHgxCj4gICNkZWZpbmUg RFBfQVVYX0kyQ19TVEFUVVMJCTB4Mgo+IEBAIC01MTksNiArNTIxLDkgQEAgc3RydWN0IGRybV9k cF9hdXhfbXNnIHsKPiAgICogdHJhbnNhY3Rpb25zLiBUaGUgZHJtX2RwX2F1eF9yZWdpc3Rlcl9p MmNfYnVzKCkgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuCj4gICAqIEkyQyBhZGFwdGVyIHRoYXQgY2Fu IGJlIHBhc3NlZCB0byBkcm1fcHJvYmVfZGRjKCkuIFVwb24gcmVtb3ZhbCwgZHJpdmVycwo+ICAg KiBzaG91bGQgY2FsbCBkcm1fZHBfYXV4X3VucmVnaXN0ZXJfaTJjX2J1cygpIHRvIHJlbW92ZSB0 aGUgSTJDIGFkYXB0ZXIuCj4gKyAqIFRoZSBJMkMgYWRhcHRlciB1c2VzIGxvbmcgdHJhbnNmZXJz IGJ5IGRlZmF1bHQ7IGlmIGEgcGFydGlhbCByZXNwb25zZSBpcwo+ICsgKiByZWNlaXZlZCwgdGhl IGFkYXB0ZXIgd2lsbCBkcm9wIGRvd24gdG8gdGhlIHNpemUgZ2l2ZW4gYnkgdGhlIHBhcnRpYWwK PiArICogcmVzcG9uc2UgZm9yIHRoaXMgdHJhbnNhY3Rpb24gb25seS4KPiAgICoKPiAgICogTm90 ZSB0aGF0IHRoZSBhdXggaGVscGVyIGNvZGUgYXNzdW1lcyB0aGF0IHRoZSAudHJhbnNmZXIoKSBm dW5jdGlvbgo+ICAgKiBvbmx5IG1vZGlmaWVzIHRoZSByZXBseSBmaWVsZCBvZiB0aGUgZHJtX2Rw X2F1eF9tc2cgc3RydWN0dXJlLiAgVGhlCj4gLS0gCj4gMi4xLjAKPgo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlz dAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKSmFuaSBOaWt1bGEsIElu dGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==