From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/5] drm/i915: add and enable DP AUX CH mutex Date: Wed, 14 Feb 2018 15:43:15 +0200 Message-ID: <20180214134315.GO5453@intel.com> References: <20180214002917.31252-1-jose.souza@intel.com> <878tbwe4sq.fsf@rdvivi-vienna.i-did-not-set--mail-host-address--so-tickle-me> 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 ESMTPS id 41B13894E0 for ; Wed, 14 Feb 2018 13:43:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <878tbwe4sq.fsf@rdvivi-vienna.i-did-not-set--mail-host-address--so-tickle-me> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMTMsIDIwMTggYXQgMDU6MzA6MjlQTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPiB3cml0 ZXM6Cj4gCj4gPiBXaGVuIFBTUi9QU1IyIGlzIGVuYWJsZWQgaGFyZHdhcmUgY2FuIGRvIEFVWCB0 cmFuc2FjdGlvbnMgYnkgaXQgc2VsZiwgc28KPiA+IGxldHMgdXNlIHRoZSBtdXRleCByZWdpc3Rl ciB0aGF0IGlzIGF2YWlsYWJsZSBpbiBnZW45KyB0byBhdm9pZCBjb25jdXJyZW50Cj4gPiBhY2Nl c3MgYnkgaGFyZHdhcmUgYW5kIGRyaXZlci4KPiA+Cj4gPiBSZWZlcmVuY2U6IGh0dHBzOi8vMDEu b3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG9jdW1lbnRhdGlvbi9pbnRlbC1nZngtcHJtLW9zcmMt c2tsLXZvbDEyLWRpc3BsYXkucGRmCj4gPiBQYWdlIDE5OCAtIEFVWCBwcm9ncmFtbWluZyBzZXF1 ZW5jZQo+ID4KPiA+IEFzIGdlbiA8IDkgZG9uJ3QgaGF2ZSB0aGUgbXV0ZXggUFNSIG5lZWRzIHRv IGJlIGRpc2FibGVkLCB0aGF0IGlzIHdoeSB0aGUKPiA+ICdlbHNlIFRPRE8nIHdhcyBhZGRlZC4g VGhpcyBpcyBhbHNvIGJhY2tlZCBieSBzcGVjOgo+ID4gIkRESSBBIEFVWCBjaGFubmVsIHRyYW5z YWN0aW9ucyBtdXN0IG5vdCBiZSBzZW50IHdoaWxlIFNSRCBpcyBlbmFibGVkLgo+ID4gU1JEIG11 c3QgYmUgY29tcGxldGVseSBkaXNhYmxlZCBiZWZvcmUgYSBEREkgQSBBVVggY2hhbm5lbCB0cmFu c2FjdGlvbiBjYW4KPiA+IGJlIHNlbnQuIiBCU3BlYzogNzUzMAo+ID4KPiA+IENjOiBSb2RyaWdv IFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKb3PDqSBS b2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggIHwgIDkgKysrKysrKysKPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAxICsK PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyB8ICA2ICsrKysrCj4gPiAgNCBm aWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gPiBpbmRleCBmNmFmYTVlNWU3YzEuLjVkNzczNjExN2NiOSAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC01MzE4LDYgKzUzMTgsNyBAQCBlbnVtIHsKPiA+ICAj ZGVmaW5lIF9EUEFfQVVYX0NIX0RBVEEzCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zm c2V0ICsgMHg2NDAxYykKPiA+ICAjZGVmaW5lIF9EUEFfQVVYX0NIX0RBVEE0CShkZXZfcHJpdi0+ aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDAyMCkKPiA+ICAjZGVmaW5lIF9EUEFfQVVY X0NIX0RBVEE1CShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDAyNCkK PiA+ICsjZGVmaW5lIF9EUEFfQVVYX0NIX01VVEVYCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21t aW9fb2Zmc2V0ICsgMHg2NDAyQykKPiA+ICAKPiA+ICAjZGVmaW5lIF9EUEJfQVVYX0NIX0NUTAkJ KGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTEwKQo+ID4gICNkZWZp bmUgX0RQQl9BVVhfQ0hfREFUQTEJKGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQg KyAweDY0MTE0KQo+ID4gQEAgLTUzMjUsNiArNTMyNiw3IEBAIGVudW0gewo+ID4gICNkZWZpbmUg X0RQQl9BVVhfQ0hfREFUQTMJKGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAw eDY0MTFjKQo+ID4gICNkZWZpbmUgX0RQQl9BVVhfQ0hfREFUQTQJKGRldl9wcml2LT5pbmZvLmRp c3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTIwKQo+ID4gICNkZWZpbmUgX0RQQl9BVVhfQ0hfREFU QTUJKGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTI0KQo+ID4gKyNk ZWZpbmUgX0RQQl9BVVhfQ0hfTVVURVgJKGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZz ZXQgKyAweDY0MTJDKQo+ID4gIAo+ID4gICNkZWZpbmUgX0RQQ19BVVhfQ0hfQ1RMCQkoZGV2X3By aXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQyMTApCj4gPiAgI2RlZmluZSBfRFBD X0FVWF9DSF9EQVRBMQkoZGV2X3ByaXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQy MTQpCj4gPiBAQCAtNTMzMiw2ICs1MzM0LDcgQEAgZW51bSB7Cj4gPiAgI2RlZmluZSBfRFBDX0FV WF9DSF9EQVRBMwkoZGV2X3ByaXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQyMWMp Cj4gPiAgI2RlZmluZSBfRFBDX0FVWF9DSF9EQVRBNAkoZGV2X3ByaXYtPmluZm8uZGlzcGxheV9t bWlvX29mZnNldCArIDB4NjQyMjApCj4gPiAgI2RlZmluZSBfRFBDX0FVWF9DSF9EQVRBNQkoZGV2 X3ByaXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQyMjQpCj4gPiArI2RlZmluZSBf RFBDX0FVWF9DSF9NVVRFWAkoZGV2X3ByaXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4 NjQyMkMpCj4gPiAgCj4gPiAgI2RlZmluZSBfRFBEX0FVWF9DSF9DVEwJCShkZXZfcHJpdi0+aW5m by5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDMxMCkKPiA+ICAjZGVmaW5lIF9EUERfQVVYX0NI X0RBVEExCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDMxNCkKPiA+ IEBAIC01MzM5LDYgKzUzNDIsNyBAQCBlbnVtIHsKPiA+ICAjZGVmaW5lIF9EUERfQVVYX0NIX0RB VEEzCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDMxYykKPiA+ICAj ZGVmaW5lIF9EUERfQVVYX0NIX0RBVEE0CShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zm c2V0ICsgMHg2NDMyMCkKPiA+ICAjZGVmaW5lIF9EUERfQVVYX0NIX0RBVEE1CShkZXZfcHJpdi0+ aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDMyNCkKPiA+ICsjZGVmaW5lIF9EUERfQVVY X0NIX01VVEVYCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDMyQykK PiA+ICAKPiA+ICAjZGVmaW5lIF9EUEZfQVVYX0NIX0NUTAkJKGRldl9wcml2LT5pbmZvLmRpc3Bs YXlfbW1pb19vZmZzZXQgKyAweDY0NTEwKQo+ID4gICNkZWZpbmUgX0RQRl9BVVhfQ0hfREFUQTEJ KGRldl9wcml2LT5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0NTE0KQo+ID4gQEAgLTUz NDYsOSArNTM1MCwxMSBAQCBlbnVtIHsKPiA+ICAjZGVmaW5lIF9EUEZfQVVYX0NIX0RBVEEzCShk ZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDUxYykKPiA+ICAjZGVmaW5l IF9EUEZfQVVYX0NIX0RBVEE0CShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsg MHg2NDUyMCkKPiA+ICAjZGVmaW5lIF9EUEZfQVVYX0NIX0RBVEE1CShkZXZfcHJpdi0+aW5mby5k aXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDUyNCkKPiA+ICsjZGVmaW5lIF9EUEZfQVVYX0NIX01V VEVYCShkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDUyQykKPiA+ICAK PiA+ICAjZGVmaW5lIERQX0FVWF9DSF9DVEwocG9ydCkJX01NSU9fUE9SVChwb3J0LCBfRFBBX0FV WF9DSF9DVEwsIF9EUEJfQVVYX0NIX0NUTCkKPiA+ICAjZGVmaW5lIERQX0FVWF9DSF9EQVRBKHBv cnQsIGkpCV9NTUlPKF9QT1JUKHBvcnQsIF9EUEFfQVVYX0NIX0RBVEExLCBfRFBCX0FVWF9DSF9E QVRBMSkgKyAoaSkgKiA0KSAvKiA1IHJlZ2lzdGVycyAqLwo+ID4gKyNkZWZpbmUgRFBfQVVYX0NI X01VVEVYKHBvcnQpCV9NTUlPX1BPUlQocG9ydCwgX0RQQV9BVVhfQ0hfTVVURVgsIF9EUEJfQVVY X0NIX01VVEVYKQo+ID4gIAo+ID4gICNkZWZpbmUgICBEUF9BVVhfQ0hfQ1RMX1NFTkRfQlVTWQkg ICAgKDEgPDwgMzEpCj4gPiAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfRE9ORQkJICAgICgxIDw8 IDMwKQo+ID4gQEAgLTUzNzgsNiArNTM4NCw5IEBAIGVudW0gewo+ID4gICNkZWZpbmUgICBEUF9B VVhfQ0hfQ1RMX0ZXX1NZTkNfUFVMU0VfU0tMKGMpICgoKGMpIC0gMSkgPDwgNSkKPiA+ICAjZGVm aW5lICAgRFBfQVVYX0NIX0NUTF9TWU5DX1BVTFNFX1NLTChjKSAgICgoYykgLSAxKQo+ID4gIAo+ ID4gKyNkZWZpbmUgICBEUF9BVVhfQ0hfTVVURVhfRU5BQkxFCQkoMSA8PCAzMSkKPiA+ICsjZGVm aW5lICAgRFBfQVVYX0NIX01VVEVYX1NUQVRVUwkJKDEgPDwgMzApCj4gPiArCj4gPiAgLyoKPiA+ ICAgKiBDb21wdXRpbmcgR01DSCBNIGFuZCBOIHZhbHVlcyBmb3IgdGhlIERpc3BsYXkgUG9ydCBs aW5rCj4gPiAgICoKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gaW5kZXggZjIwYjI1Zjk4 ZTVhLi5iZDVmMWJiNzMwZmYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBA QCAtMTA4MSw2ICsxMDgxLDI4IEBAIHN0YXRpYyB1aW50MzJfdCBpbnRlbF9kcF9nZXRfYXV4X3Nl bmRfY3RsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCQkJCQkJYXV4X2Nsb2NrX2Rp dmlkZXIpOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF9hdXhfZ2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkgICAgIHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gPiArewo+ID4gKwlpbnQgdHJ5LCByZXQ7Cj4gCj4gSGVyZSB5b3Ug YXJlIG5vdCBnZXR0aW5nIHRoZSBhdXguIFlvdSBhcmUgb25seSBnZXR0aW5nIGNoZWNraW5nIGlm IGF1eAo+IGlzIGF2YWlsYWJsZS4KPiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzcGVjIGlzIHRo YXQgdGhlIGFjdHVhbCBnZXQgaXMgc2V0IEVuYWJsZSBiaXQuCj4gCj4gPiArCj4gPiArCWZvciAo dHJ5ID0gMCwgcmV0ID0gLTE7IHRyeSA8IDMgJiYgcmV0OyB0cnkrKykKPiA+ICsJCXJldCA9IHdh aXRfZm9yKCEoSTkxNV9SRUFEX05PVFJBQ0UoaW50ZWxfZHAtPmF1eF9jaF9tdXRleF9yZWcpCj4g PiArCQkJCSAmIERQX0FVWF9DSF9NVVRFWF9TVEFUVVMpLCAwLjUpOwo+IAo+IHdoYXQgYWJvdXQK PiBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9jaF9tdXRl eF9yZWcsCj4gCQkJCSAgICBEUF9BVVhfQ0hfTVVURVhfU1RBVFVTLCAwLAo+IAkJCQkgICAgNTAw KQoKSUlSQyB3aGVuIEkgYXNrZWQgQXJ0IGFib3V0IHRoZSBtdXRleCBoZSBpbmRpY2F0ZWQgdGhh dCB0aGUgaGFyZHdhcmUgaGFzCm5vIG1hZ2ljIGZhaXIgYXJiaXRyYXRpb24gbWVjaGFuaXNtLiBT byBJIHRoaW5rIHdoYXQgd2Ugd2FudCB0byBkbyBpcwpmaXJzdCBjaGVjayBpZiB0aGUgbXV0ZXgg aXMgZnJlZSwgaWYgbm90IHdlIGNvdWxkIHRyeSB0byB3YWl0IGZvciB0aGUKZXhwZWN0ZWQgNTAw dXMgKG9yIHBvbGwgc29tZXdoYXQgaW5mcmVxdWVudGx5KSwgYnV0IGlmIGFmdGVyIGEgd2hpbGUK dGhlIG11dGV4IHN0aWxsIGlzbid0IGZyZWUgd2Ugc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGhhbW1l cmluZyBpdCBoYXJkCnNvIHRoYXQgaGF2ZSBhIGJldHRlciBjaGFuY2Ugb2YgYWN0dWFsbHkgZ2V0 dGluZyBpdC4KCj4gPwo+IAo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0ID09IDA7Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyB2b2lkIGludGVsX2RwX2F1eF9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gKwkJCSAgICAgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ ICt7Cj4gPiArCS8qIHNldHRpbmcgdGhlIHN0YXR1cyBiaXQgcmVsZWFzZXMgdGhlIG11dGV4ICsg a2VlcCBzZXQgdGhlIGJpdAo+ID4gKwkgKiB0byBrZWVwIHRoZSBtdXRleCBlbmFibGVkLgo+ID4g KwkgKi8KPiA+ICsJSTkxNV9XUklURShpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZywgRFBfQVVY X0NIX01VVEVYX0VOQUJMRSB8Cj4gCj4gVGhlIGVuYWJsZSBiaXQgaXMgb3B0aW9uYWwgaGVyZS4K PiBJIGJlbGlldmUgaXQgZ2V0cyBjbGVhbmVyIHdpdGhvdXQgaXQgYnV0IHdpdGggUk1XLgo+IAo+ ID4gKwkJICAgRFBfQVVYX0NIX01VVEVYX1NUQVRVUyk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRp YyBpbnQKPiA+ICBpbnRlbF9kcF9hdXhfY2goc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ ICAJCWNvbnN0IHVpbnQ4X3QgKnNlbmQsIGludCBzZW5kX2J5dGVzLAo+ID4gQEAgLTExMTUsNiAr MTEzNywyMSBAQCBpbnRlbF9kcF9hdXhfY2goc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ ICAKPiA+ICAJaW50ZWxfZHBfY2hlY2tfZWRwKGludGVsX2RwKTsKPiA+ICAKPiA+ICsJLyogR2V0 IGhhcmR3YXJlIG11dGV4IHdoZW4gUFNSIGlzIGVuYWJsZWQgKi8KPiA+ICsJaWYgKGRldl9wcml2 LT5wc3IuZW5hYmxlZCA9PSBpbnRlbF9kcCkgewo+ID4gKwkJaWYgKGludGVsX2RwLT5hdXhfY2hf bXV0ZXhfcmVnLnJlZykgewo+IAo+IHRoZXNlIGNoZWNrcyBjb3VsZCBiZSBpbnNpZGUgZ2V0IGZ1 bmN0aW9uLgo+IAo+ID4gKwkJCWlmIChpbnRlbF9kcF9hdXhfZ2V0KGRldl9wcml2LCBpbnRlbF9k cCkpIHsKPiA+ICsJCQkJRFJNX1dBUk4oImRwX2F1eF9jaCBwb3J0IGxvY2tlZCBmb3IgdG9vCj4g PiBsb25nIik7Cj4gCj4gYXMgd2VsbCB0aGUgbWVzc2FnZSBEUk1fRVJST1IgaXMgZW5vdWdoIEkg dGhpbmcuCj4gCj4gPiArCQkJCXJldCA9IC1FQlVTWTsKPiBhbHNvIHNwZWNpZmljIGVycm5vCj4g Cj4gPiArCQkJCWdvdG8gb3V0X2xvY2tlZDsKPiA+ICsJCQl9Cj4gPiArCQl9IGVsc2Ugewo+ID4g KwkJCS8qIFRPRE86IGdvIHRvIFBTUiBleGl0IHN0YXRlIHdhaXRpbmcgZm9yIGNoYW5nZSBiZWZv cmUKPiA+ICsJCQkgKiBkbyBhIGF1eCBjaCB0cmFuc2FjdGlvbi4KPiA+ICsJCQkgKi8KPiA+ICsJ CX0KPiA+ICsJfQoKVGhpcyBsb29rcyBuZWVkbGVzc2x5IGNvbXBsaWNhdGVkLiBJTU8gaXQgc2hv dWxkIGp1c3QgYmUgc29tZXRoaW5nIGxpa2U6CgppZiAoIXNrbF9hdXhfaHdfbXV0ZXhfZ2V0KCkp Cglnb3RvIGZhaWw7CgpBbmQgSSdtIHRoaW5raW5nIHdlIHNob3VsZCBqdXN0IGlnbm9yZSB0aGUg UFNSIG9uIHZzLiBvZmYgY2FzZSwKYW5kIGp1c3QgZG8gdGhpcyBmb3IgZURQIGFsd2F5cy4gSSBj YW4ndCByZWNhbGwgaWYgR1RDIGlzIGEgdGhpbmcKZm9yIG5vcm1hayBEUCwgYnV0IGlmIGl0IGlz IGFuZCB3ZSBldmVyIGVuYWJsZSBpdCB0aGVuIHdlJ2Qgb2J2aW91c2x5Cm5lZWQgdG8gc3RhcnQg ZG9pbmcgdGhpcyBmb3IgYWxsIERQIHBvcnQuCgo+ID4gKwo+ID4gIAkvKiBUcnkgdG8gd2FpdCBm b3IgYW55IHByZXZpb3VzIEFVWCBjaGFubmVsIGFjdGl2aXR5ICovCj4gPiAgCWZvciAodHJ5ID0g MDsgdHJ5IDwgMzsgdHJ5KyspIHsKPiA+ICAJCXN0YXR1cyA9IEk5MTVfUkVBRF9OT1RSQUNFKGNo X2N0bCk7Cj4gPiBAQCAtMTI0Myw3ICsxMjgwLDE2IEBAIGludGVsX2RwX2F1eF9jaChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCQkgICAgcmVjdiArIGksIHJlY3ZfYnl0ZXMgLSBp KTsKPiA+ICAKPiA+ICAJcmV0ID0gcmVjdl9ieXRlczsKPiA+ICsKPiA+ICBvdXQ6Cj4gPiArCWlm IChkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPT0gaW50ZWxfZHApIHsKPiAKPiB3ZSBhcmUgY2hlY2tp bmcgcHNyLmVuYWJsZSBvdXQgb2YgcHNyIG11dGV4ZXMuLi4KPiBwcm9iYWJseSBiZXR0ZXIgdG8g b25seSBkbyB0aGlzIG9uY2Ugb24gZ2V0IHBhcnQKPiBhbmQgaWYgeW91IGdvdCB5b3UgcHV0Li4u Cj4gCj4gPiArCQlpZiAoaW50ZWxfZHAtPmF1eF9jaF9tdXRleF9yZWcucmVnKQo+ID4gKwkJCWlu dGVsX2RwX2F1eF9wdXQoZGV2X3ByaXYsIGludGVsX2RwKTsKPiA+ICsJCWVsc2UKPiA+ICsJCQkv KiBUT0RPOiBzY2hlZHVsZSBQU1Igd29yayB0byBhY3RpdmUgUFNSIGFnYWluICovCj4gPiArCX0K PiA+ICsKPiA+ICtvdXRfbG9ja2VkOgo+ID4gIAlwbV9xb3NfdXBkYXRlX3JlcXVlc3QoJmRldl9w cml2LT5wbV9xb3MsIFBNX1FPU19ERUZBVUxUX1ZBTFVFKTsKPiA+ICAKPiA+ICAJaWYgKHZkZCkK PiA+IEBAIC0xNDk2LDYgKzE1NDIsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdXhfcmVnX2luaXQo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJaW50ZWxfZHAtPmF1eF9jaF9jdGxfcmVn ID0gaW50ZWxfYXV4X2N0bF9yZWcoZGV2X3ByaXYsIHBvcnQpOwo+ID4gIAlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShpbnRlbF9kcC0+YXV4X2NoX2RhdGFfcmVnKTsgaSsrKQo+ID4gIAkJaW50 ZWxfZHAtPmF1eF9jaF9kYXRhX3JlZ1tpXSA9IGludGVsX2F1eF9kYXRhX3JlZyhkZXZfcHJpdiwg cG9ydCwgaSk7Cj4gPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCj4gPiAr CQlpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZyA9IERQX0FVWF9DSF9NVVRFWChwb3J0KTsKCk5v IHBvaW50IGluIGFkZGluZyB0aGlzIHRoaW5nIElNTy4KCj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRp YyB2b2lkCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggODk4MDY0ZThiZWE3 Li4wZDIzNWI3ZGFiMjEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBA IC0xMDQwLDYgKzEwNDAsNyBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+ID4gIAlpOTE1X3JlZ190IG91 dHB1dF9yZWc7Cj4gPiAgCWk5MTVfcmVnX3QgYXV4X2NoX2N0bF9yZWc7Cj4gPiAgCWk5MTVfcmVn X3QgYXV4X2NoX2RhdGFfcmVnWzVdOwo+ID4gKwlpOTE1X3JlZ190IGF1eF9jaF9tdXRleF9yZWc7 Cj4gPiAgCXVpbnQzMl90IERQOwo+ID4gIAlpbnQgbGlua19yYXRlOwo+ID4gIAl1aW50OF90IGxh bmVfY291bnQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ID4gaW5kZXggMmVmMzc0Zjkz NmI5Li44YjQ1NmU0ZTFiNDcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiA+ IEBAIC00ODQsNiArNDg0LDkgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9lbmFibGVfc291cmNlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCQkJICAgRURQX1BTUl9ERUJVR19NQVNLX0hQ RCB8Cj4gPiAgCQkJICAgRURQX1BTUl9ERUJVR19NQVNLX0xQU1ApOwo+ID4gIAl9Cj4gPiArCj4g PiArCWlmIChpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZy5yZWcpCj4gPiArCQlJOTE1X1dSSVRF KGludGVsX2RwLT5hdXhfY2hfbXV0ZXhfcmVnLAo+ID4gRFBfQVVYX0NIX01VVEVYX0VOQUJMRSk7 Cj4gCj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHNldCBFbmFibGUgaXMgdGhlIGFjdHVhbCBn ZXQgaHcgbXV0ZXgsCj4gc28gSSBkb24ndCBiZWxpZXZlIHlvdSB3YW50IGRvIGRvIHRoaXMgaGVy ZS4KClRoZSByZWdpc3RlciByZWFkIGlzIHRoZSAnZ2V0Jy4gQnV0IEkgYWxzbyB0aGluayB3ZSBz aG91bGQganVzdCBzZXQgdGhlCmVuYWJsZSBiaXQgaW4gdGhlIF9nZXQoKSBmdW5jdGlvbiBhcyB3 ZWxsLiBJIGRvbid0IHRoaW5rIHRoZXJlIHNob3VsZCBiZQphbnkgaGFybSBpZiB3ZSBqdXN0IGxl YXZlIHRoZSBlbmFibGUgYml0IHNldCBwZXJtZW5lbnRseSBhZnRlciB0aGF0LgoKPiAKPiBBbHNv IHlvdSBhbHJlYWR5IGNoZWNrIGZvciBwc3IuZW5hYmxlIGluc2lkZSB0aGUgYXV4IHRyYW5zYWN0 aW9uLgo+IHNldHRpbmcgdGhlcmUgc2hvdWxkIGJlIGVub3VnaC4KPiAKPiA+ICB9Cj4gPiAgCj4g PiAgLyoqCj4gPiBAQCAtNjE3LDYgKzYyMCw5IEBAIHN0YXRpYyB2b2lkIGhzd19wc3JfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJZWxzZQo+ID4gIAkJCVdBUk5fT04o STkxNV9SRUFEKEVEUF9QU1JfQ1RMKSAmIEVEUF9QU1JfRU5BQkxFKTsKPiA+ICAJfQo+ID4gKwo+ ID4gKwlpZiAoaW50ZWxfZHAtPmF1eF9jaF9tdXRleF9yZWcucmVnKQo+ID4gKwkJSTkxNV9XUklU RShpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZywgfkRQX0FVWF9DSF9NVVRFWF9FTkFCTEUpOwo+ ID4gIH0KPiA+ICAKPiA+ICAvKioKPiA+IC0tIAo+ID4gMi4xNi4xCj4gPgo+ID4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWls aW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUg U3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK