From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v2 1/1] drm/i915: Add and enable DP AUX CH mutex Date: Wed, 21 Feb 2018 21:12:08 +0000 Message-ID: <1519247454.11976.18.camel@intel.com> References: <20180221022347.16405-1-jose.souza@intel.com> <20180221022347.16405-2-jose.souza@intel.com> <20180221204504.GC20790@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 ESMTPS id 268636E6F3 for ; Wed, 21 Feb 2018 21:12:10 +0000 (UTC) In-Reply-To: <20180221204504.GC20790@intel.com> Content-Language: en-US Content-ID: <89679FE355820E42ABBC1032C8234D9B@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Vivi, Rodrigo" Cc: "intel-gfx@lists.freedesktop.org" , "Syrjala, Ville" , "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE4LTAyLTIxIGF0IDEyOjQ1IC0wODAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6DQo+ IE9uIFR1ZSwgRmViIDIwLCAyMDE4IGF0IDA2OjIzOjQ3UE0gLTA4MDAsIEpvc8OpIFJvYmVydG8g ZGUgU291emENCj4gd3JvdGU6DQo+ID4gV2hlbiBQU1IvUFNSMi9HVEMgaXMgZW5hYmxlZCBoYXJk d2FyZSBjYW4gZG8gQVVYIHRyYW5zYWN0aW9ucyBieSBpdA0KPiA+IHNlbGYsIHNvIGxldHMgdXNl IHRoZSBtdXRleCByZWdpc3RlciB0aGF0IGlzIGF2YWlsYWJsZSBpbiBnZW45KyB0bw0KPiA+IGF2 b2lkIGNvbmN1cnJlbnQgYWNjZXNzIGJ5IGhhcmR3YXJlIGFuZCBkcml2ZXIuDQo+ID4gDQo+ID4g UmVmZXJlbmNlOiBodHRwczovLzAxLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2RvY3VtZW50YXRp b24vaW50ZWwtZw0KPiA+IGZ4LXBybS1vc3JjLXNrbC12b2wxMi1kaXNwbGF5LnBkZg0KPiA+IFBh Z2UgMTk4IC0gQVVYIHByb2dyYW1taW5nIHNlcXVlbmNlDQo+ID4gDQo+IA0KPiBDYzogVmlsbGUN Cj4gQ2M6IERLDQo+ID4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4N Cj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNv bT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAgOSAr KysrKysrKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDUwDQo+ID4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAxICsNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2MCBp bnNlcnRpb25zKCspDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gPiBp bmRleCAxNDEyYWJjYjI3ZDQuLmE2MmUzYzFiYWRhYiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaA0KPiA+IEBAIC01MzE4LDYgKzUzMTgsNyBAQCBlbnVtIHsNCj4gPiAgI2RlZmlu ZSBfRFBBX0FVWF9DSF9EQVRBMwkoZGV2X3ByaXYtDQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29m ZnNldCArIDB4NjQwMWMpDQo+ID4gICNkZWZpbmUgX0RQQV9BVVhfQ0hfREFUQTQJKGRldl9wcml2 LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MDIwKQ0KPiA+ICAjZGVmaW5l IF9EUEFfQVVYX0NIX0RBVEE1CShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zm c2V0ICsgMHg2NDAyNCkNCj4gPiArI2RlZmluZSBfRFBBX0FVWF9DSF9NVVRFWAkoZGV2X3ByaXYt DQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQwMkMpDQo+ID4gIA0KPiA+ICAj ZGVmaW5lIF9EUEJfQVVYX0NIX0NUTAkJKGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1p b19vZmZzZXQgKyAweDY0MTEwKQ0KPiA+ICAjZGVmaW5lIF9EUEJfQVVYX0NIX0RBVEExCShkZXZf cHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDExNCkNCj4gPiBAQCAt NTMyNSw2ICs1MzI2LDcgQEAgZW51bSB7DQo+ID4gICNkZWZpbmUgX0RQQl9BVVhfQ0hfREFUQTMJ KGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTFjKQ0KPiA+ ICAjZGVmaW5lIF9EUEJfQVVYX0NIX0RBVEE0CShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5 X21taW9fb2Zmc2V0ICsgMHg2NDEyMCkNCj4gPiAgI2RlZmluZSBfRFBCX0FVWF9DSF9EQVRBNQko ZGV2X3ByaXYtDQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQxMjQpDQo+ID4g KyNkZWZpbmUgX0RQQl9BVVhfQ0hfTVVURVgJKGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlf bW1pb19vZmZzZXQgKyAweDY0MTJDKQ0KPiA+ICANCj4gPiAgI2RlZmluZSBfRFBDX0FVWF9DSF9D VEwJCShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDIxMCkN Cj4gPiAgI2RlZmluZSBfRFBDX0FVWF9DSF9EQVRBMQkoZGV2X3ByaXYtDQo+ID4gPmluZm8uZGlz cGxheV9tbWlvX29mZnNldCArIDB4NjQyMTQpDQo+ID4gQEAgLTUzMzIsNiArNTMzNCw3IEBAIGVu dW0gew0KPiA+ICAjZGVmaW5lIF9EUENfQVVYX0NIX0RBVEEzCShkZXZfcHJpdi0NCj4gPiA+aW5m by5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDIxYykNCj4gPiAgI2RlZmluZSBfRFBDX0FVWF9D SF9EQVRBNAkoZGV2X3ByaXYtDQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQy MjApDQo+ID4gICNkZWZpbmUgX0RQQ19BVVhfQ0hfREFUQTUJKGRldl9wcml2LQ0KPiA+ID5pbmZv LmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MjI0KQ0KPiA+ICsjZGVmaW5lIF9EUENfQVVYX0NI X01VVEVYCShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDIy QykNCj4gPiAgDQo+ID4gICNkZWZpbmUgX0RQRF9BVVhfQ0hfQ1RMCQkoZGV2X3ByaXYtDQo+ID4g PmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQzMTApDQo+ID4gICNkZWZpbmUgX0RQRF9B VVhfQ0hfREFUQTEJKGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAw eDY0MzE0KQ0KPiA+IEBAIC01MzM5LDYgKzUzNDIsNyBAQCBlbnVtIHsNCj4gPiAgI2RlZmluZSBf RFBEX0FVWF9DSF9EQVRBMwkoZGV2X3ByaXYtDQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNl dCArIDB4NjQzMWMpDQo+ID4gICNkZWZpbmUgX0RQRF9BVVhfQ0hfREFUQTQJKGRldl9wcml2LQ0K PiA+ID5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MzIwKQ0KPiA+ICAjZGVmaW5lIF9E UERfQVVYX0NIX0RBVEE1CShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0 ICsgMHg2NDMyNCkNCj4gPiArI2RlZmluZSBfRFBEX0FVWF9DSF9NVVRFWAkoZGV2X3ByaXYtDQo+ ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQzMkMpDQo+ID4gIA0KPiA+ICAjZGVm aW5lIF9EUEZfQVVYX0NIX0NUTAkJKGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1pb19v ZmZzZXQgKyAweDY0NTEwKQ0KPiA+ICAjZGVmaW5lIF9EUEZfQVVYX0NIX0RBVEExCShkZXZfcHJp di0NCj4gPiA+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDUxNCkNCj4gPiBAQCAtNTM0 Niw2ICs1MzUwLDcgQEAgZW51bSB7DQo+ID4gICNkZWZpbmUgX0RQRl9BVVhfQ0hfREFUQTMJKGRl dl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0NTFjKQ0KPiA+ICAj ZGVmaW5lIF9EUEZfQVVYX0NIX0RBVEE0CShkZXZfcHJpdi0NCj4gPiA+aW5mby5kaXNwbGF5X21t aW9fb2Zmc2V0ICsgMHg2NDUyMCkNCj4gPiAgI2RlZmluZSBfRFBGX0FVWF9DSF9EQVRBNQkoZGV2 X3ByaXYtDQo+ID4gPmluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQ1MjQpDQo+ID4gKyNk ZWZpbmUgX0RQRl9BVVhfQ0hfTVVURVgJKGRldl9wcml2LQ0KPiA+ID5pbmZvLmRpc3BsYXlfbW1p b19vZmZzZXQgKyAweDY0NTJDKQ0KPiA+ICANCj4gPiAgI2RlZmluZSBEUF9BVVhfQ0hfQ1RMKHBv cnQpCV9NTUlPX1BPUlQocG9ydCwNCj4gPiBfRFBBX0FVWF9DSF9DVEwsIF9EUEJfQVVYX0NIX0NU TCkNCj4gPiAgI2RlZmluZSBEUF9BVVhfQ0hfREFUQShwb3J0LCBpKQlfTU1JTyhfUE9SVChwb3J0 LA0KPiA+IF9EUEFfQVVYX0NIX0RBVEExLCBfRFBCX0FVWF9DSF9EQVRBMSkgKyAoaSkgKiA0KSAv KiA1IHJlZ2lzdGVycyAqLw0KPiA+IEBAIC01Mzc4LDYgKzUzODMsMTAgQEAgZW51bSB7DQo+ID4g ICNkZWZpbmUgICBEUF9BVVhfQ0hfQ1RMX0ZXX1NZTkNfUFVMU0VfU0tMKGMpICgoKGMpIC0gMSkg PDwgNSkNCj4gPiAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfU1lOQ19QVUxTRV9TS0woYykgICAo KGMpIC0gMSkNCj4gPiANCj4gDQo+IA0KPiBJIGJlbGlldmUgX0RQQV9BVVhfQ0hfTVVURVggYW5k IF9EUEJfQVVYX0NIX01VVEVYIHNob3VsZCBiZSBkZWZpbmVkDQo+IGhlcmUgYWxvbmcNCj4gd2l0 aCB0aGUgYml0cyBhcyBKYW5pIHN1Z2dlc3RlZC4NCj4gSSBkb24ndCBzZWUgYW55IHJlYXNvbiB0 byB0YWcgdGhhdCBmYXIgZnJvbSB0aGUgYml0cyBhbmQgY2xvc2UgdG8gQ1RMDQo+IGFuZCBEQVRB Lg0KPiANCj4gPiArI2RlZmluZSBEUF9BVVhfQ0hfTVVURVgocG9ydCkJX01NSU9fUE9SVChwb3J0 LA0KPiA+IF9EUEFfQVVYX0NIX01VVEVYLCBfRFBCX0FVWF9DSF9NVVRFWCkNCj4gPiArI2RlZmlu ZSAgIERQX0FVWF9DSF9NVVRFWF9FTkFCTEUJCSgxIDw8IDMxKQ0KPiA+ICsjZGVmaW5lICAgRFBf QVVYX0NIX01VVEVYX1NUQVRVUwkJKDEgPDwgMzApDQo+ID4gKw0KPiA+ICAvKg0KPiA+ICAgKiBD b21wdXRpbmcgR01DSCBNIGFuZCBOIHZhbHVlcyBmb3IgdGhlIERpc3BsYXkgUG9ydCBsaW5rDQo+ ID4gICAqDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMN Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiBpbmRleCBmMjBiMjVm OThlNWEuLmFmMDc1NjNiYWZiYSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0K PiA+IEBAIC0xMDgxLDYgKzEwODEsNDUgQEAgc3RhdGljIHVpbnQzMl90DQo+ID4gaW50ZWxfZHBf Z2V0X2F1eF9zZW5kX2N0bChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ICAJCQkJCQlh dXhfY2xvY2tfZGl2aWRlcikNCj4gPiA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gK3N0YXRpYyBib29s IGludGVsX2RwX2F1eF9jaF90cnlsb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0NCj4g PiBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7DQo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQ0KPiA+ICsJCQl0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2Uu ZGV2KTsNCj4gPiArDQo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpDQo+ID4gKwkJ cmV0dXJuIHRydWU7DQo+ID4gKw0KPiA+ICsJSTkxNV9XUklURShpbnRlbF9kcC0+YXV4X2NoX211 dGV4X3JlZywNCj4gPiBEUF9BVVhfQ0hfTVVURVhfRU5BQkxFKTsNCj4gDQo+IFlvdSBtaWdodCBi ZSB0b3VjaGluZyBiaXRzLiBXZSBkb24ndCBrbm93IGlmIEhXIGlzIHVzaW5nIHRoZSByZXNlcnZl ZA0KPiBiaXRzIG9yIG5vdC4NCj4gU28gUk1XIHw9IGJpdCAzMSBoZXJlIGlzIGEgZ29vZCBpZGVh Lg0KDQpBcyBhIHJlYWQgaW4gdGhpcyByZWdpc3RlciByZXF1ZXN0IHRoZSBtdXRleCBsb2NrIGlz IGJldHRlciBhdm9pZCBhbnkNCnJlYWQgdGhhdCBpcyBub3QgbWVhbnQgdG8gcmVxdWVzdCBpdC4N Cg0KPiANCj4gPiArDQo+ID4gKwkvKiBTcGVjIHNheXMgdGhhdCBtdXRleCBpcyBhY3F1aXJlZCB3 aGVuIHN0YXR1cyBiaXQgaXMNCj4gPiByZWFkIGFzIHVuc2V0LA0KPiA+ICsJICogaWYgc2V0IGl0 IHNob3VsZCBiZSByZWFkIGFnYWluIGFmdGVyIDUwMHVzZWMuIEhlcmUNCj4gPiB3YWl0aW5nIGZv cg0KPiA+ICsJICogMm1zZWMgb3IgNCB0cmllcyBiZWZvcmUgZ2l2ZSB1cC4NCj4gPiArCSAqLw0K PiA+ICsJaWYgKF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsIGludGVsX2RwLQ0K PiA+ID5hdXhfY2hfbXV0ZXhfcmVnLA0KPiA+ICsJCQkJICAgICAgRFBfQVVYX0NIX01VVEVYX1NU QVRVUywgMCwNCj4gPiA1MDAsIDIsDQo+ID4gKwkJCQkgICAgICBOVUxMKSkgew0KPiANCj4gd2h5 IG5vdCBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcj8NCj4gdGhhdCBzZWVtcyBjbGVhbmVyLi4uDQoN CmludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCkgd2lsbCBjYWxsIF9faW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoKSB3aXRoDQpmYXN0X3RpbWVvdXRfdXMgc2V0IGFzIDJ1c2VjIGFuZCBzcGVjcyBzYXlz IHdlIHNob3VsZCB3YWl0IDUwMHVzZWMuDQoNCj4gDQo+ID4gKwkJRFJNX1dBUk4oImRwX2F1eF9j aCBwb3J0IGxvY2tlZCBmb3IgdG9vIGxvbmciKTsNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHRydWU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIGludGVsX2RwX2F1eF9jaF91bmxvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkN Cj4gPiArew0KPiA+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PQ0KPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsNCj4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9DQo+ID4gKwkJCXRvX2k5MTUoaW50ZWxfZGlnX3BvcnQtPmJhc2Uu YmFzZS5kZXYpOw0KPiA+ICsNCj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkNCj4g PiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJLyogc2V0dGluZyB0aGUgc3RhdHVzIGJpdCByZWxl YXNlcyB0aGUgbXV0ZXggKyBrZWVwIG11dGV4DQo+ID4gZW5hYmxlZCAqLw0KPiA+ICsJSTkxNV9X UklURShpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZywNCj4gPiBEUF9BVVhfQ0hfTVVURVhfRU5B QkxFIHwNCj4gPiArCQkgICBEUF9BVVhfQ0hfTVVURVhfU1RBVFVTKTsNCj4gDQo+IGRpdHRvLg0K PiANCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGludA0KPiA+ICBpbnRlbF9kcF9hdXhfY2go c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiAgCQljb25zdCB1aW50OF90ICpzZW5kLCBp bnQgc2VuZF9ieXRlcywNCj4gPiBAQCAtMTExNSw2ICsxMTU0LDExIEBAIGludGVsX2RwX2F1eF9j aChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ICANCj4gPiAgCWludGVsX2RwX2NoZWNr X2VkcChpbnRlbF9kcCk7DQo+ID4gIA0KPiA+ICsJaWYgKCFpbnRlbF9kcF9hdXhfY2hfdHJ5bG9j ayhpbnRlbF9kcCkpIHsNCj4gPiArCQlyZXQgPSAtRUJVU1k7DQo+ID4gKwkJZ290byBvdXRfbG9j a2VkOw0KPiA+ICsJfQ0KPiA+ICsNCj4gDQo+IEJTcGVjOiA0MzAxDQo+IEkgYmVsaWV2ZSB5b3Ug Y291bGQgcmVkdWNlIHRoZSBsb2NrIHJlZ2lvbiBmb2xsb3dpbmcgdGhlIHNwZWMNCj4gYW5kIGxp bWl0aW5nIGl0IHRvIHN0ZXBzIDUtdG8tMTAsIGkuZS4NCj4gaW5zaWRlIHRoZSBsb29wIGJlbG93 Lg0KDQpXZSBsb29wIHRyeWluZyB0byBjb21wbGV0ZSB0aGUgdHJhbnNhY3Rpb24gYnV0IHdlIGNv cHkgZGF0YSByZWNlaXZlZA0Kb3V0IG9mIHRoZSBsb29wIGFuZCB0aGF0IGlzIHN0ZXAgOSwgc28g dGhlIGxvY2sgbXVzdCBiZSBoZWxkIHVudGlsIHdlDQpjb3B5IHRoZSBkYXRhIGZyb20gaW50ZWxf ZHAtPmF1eF9jaF9kYXRhX3JlZ1tdIHRvIHJlY3YuDQoNCiINCglmb3IgKGkgPSAwOyBpIDwgcmVj dl9ieXRlczsgaSArPSA0KQ0KCQlpbnRlbF9kcF91bnBhY2tfYXV4KEk5MTVfUkVBRChpbnRlbF9k cC0+YXV4X2NoX2RhdGFfcmVnW2kgPj4NCjJdKSwgcmVjdiArIGksIHJlY3ZfYnl0ZXMgLSBpKTsN Cg0KCXJldCA9IHJlY3ZfYnl0ZXM7DQpvdXQ6DQoJaW50ZWxfZHBfYXV4X2NoX3VubG9jayhpbnRl bF9kcCk7DQoiDQoNCj4gDQo+ID4gIAkvKiBUcnkgdG8gd2FpdCBmb3IgYW55IHByZXZpb3VzIEFV WCBjaGFubmVsIGFjdGl2aXR5ICovDQo+ID4gIAlmb3IgKHRyeSA9IDA7IHRyeSA8IDM7IHRyeSsr KSB7DQo+ID4gIAkJc3RhdHVzID0gSTkxNV9SRUFEX05PVFJBQ0UoY2hfY3RsKTsNCj4gPiBAQCAt MTI0NCw2ICsxMjg4LDggQEAgaW50ZWxfZHBfYXV4X2NoKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsDQo+ID4gIA0KPiA+ICAJcmV0ID0gcmVjdl9ieXRlczsNCj4gPiAgb3V0Og0KPiA+ICsJaW50 ZWxfZHBfYXV4X2NoX3VubG9jayhpbnRlbF9kcCk7DQo+ID4gK291dF9sb2NrZWQ6DQo+ID4gIAlw bV9xb3NfdXBkYXRlX3JlcXVlc3QoJmRldl9wcml2LT5wbV9xb3MsDQo+ID4gUE1fUU9TX0RFRkFV TFRfVkFMVUUpOw0KPiA+ICANCj4gPiAgCWlmICh2ZGQpDQo+ID4gQEAgLTE0OTYsNiArMTU0Miwx MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdXhfcmVnX2luaXQoc3RydWN0DQo+ID4gaW50ZWxfZHAg KmludGVsX2RwKQ0KPiA+ICAJaW50ZWxfZHAtPmF1eF9jaF9jdGxfcmVnID0gaW50ZWxfYXV4X2N0 bF9yZWcoZGV2X3ByaXYsDQo+ID4gcG9ydCk7DQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShpbnRlbF9kcC0+YXV4X2NoX2RhdGFfcmVnKTsNCj4gPiBpKyspDQo+ID4gIAkJaW50ZWxf ZHAtPmF1eF9jaF9kYXRhX3JlZ1tpXSA9DQo+ID4gaW50ZWxfYXV4X2RhdGFfcmVnKGRldl9wcml2 LCBwb3J0LCBpKTsNCj4gPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsN Cj4gPiArCQlpbnRlbF9kcC0+YXV4X2NoX211dGV4X3JlZyA9DQo+ID4gRFBfQVVYX0NIX01VVEVY KHBvcnQpOw0KPiA+ICsJCUk5MTVfV1JJVEUoaW50ZWxfZHAtPmF1eF9jaF9tdXRleF9yZWcsDQo+ ID4gRFBfQVVYX0NIX01VVEVYX0VOQUJMRSk7DQo+IA0KPiBJIGRvbid0IGJlbGlldmUgd2UgbmVl ZCBhbiBleHRyYSBlbmFibGUgaGVyZS4gQW5kIGhvcGVmdWxseSB3aXRoDQo+IFZpbGxlcw0KPiBy ZXdvcmsgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGRlZmluZSBoZXJlIGJ1dCBvbmx5IGFjY2Vzc2lu ZyBpdA0KPiBkaXJlY3RseSBmcm9tDQo+IHRoZSBhdXggZnVuY3Rpb24gd2l0aCBpbnRlbF9kcC0+ YXV4X2NoIHJlZmVyZW5jZS4NCg0KV2hhdCBpZiBoYXJkd2FyZSB3YW50cyB0byBkbyBzb21lIGF1 eCB0cmFuc2FjdGlvbiBiZWZvcmUgd2UgZG8gb3VyDQpmaXJzdCB0cmFuc2FjdGlvbihhbmQgZW5h YmxpbmcgdGhlIG11dGV4KT8gVGhlIG11dGV4IHdpbGwgbm90IGJlDQplbmFibGVkIHNvIGhhcmR3 YXJlIHdpbGwgbm90IGxvY2sgaXQuDQoNCj4gDQo+ID4gKwl9DQo+ID4gIH0NCj4gPiAgDQo+ID4g IHN0YXRpYyB2b2lkDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+IGluZGV4 IDUwODc0ZjQwMzVjZi4uMGM4ODY1N2Q2MDY2IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgNCj4gPiBAQCAtMTA0Myw2ICsxMDQzLDcgQEAgc3RydWN0IGludGVsX2RwIHsNCj4g PiAgCWk5MTVfcmVnX3Qgb3V0cHV0X3JlZzsNCj4gPiAgCWk5MTVfcmVnX3QgYXV4X2NoX2N0bF9y ZWc7DQo+ID4gIAlpOTE1X3JlZ190IGF1eF9jaF9kYXRhX3JlZ1s1XTsNCj4gPiArCWk5MTVfcmVn X3QgYXV4X2NoX211dGV4X3JlZzsNCj4gPiAgCXVpbnQzMl90IERQOw0KPiA+ICAJaW50IGxpbmtf cmF0ZTsNCj4gPiAgCXVpbnQ4X3QgbGFuZV9jb3VudDsNCj4gPiAtLSANCj4gPiAyLjE2LjINCj4g PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==