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: Fri, 23 Feb 2018 01:13:23 +0000 Message-ID: <1519348326.4599.10.camel@intel.com> References: <20180221022347.16405-1-jose.souza@intel.com> <20180221022347.16405-2-jose.souza@intel.com> <20180221204504.GC20790@intel.com> <1519247454.11976.18.camel@intel.com> <20180221222812.GH20790@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 949E26E0BA for ; Fri, 23 Feb 2018 01:13:28 +0000 (UTC) In-Reply-To: <20180221222812.GH20790@intel.com> Content-Language: en-US Content-ID: <1C3E85FCEEA5B247899F7F09E7661EE3@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 T24gV2VkLCAyMDE4LTAyLTIxIGF0IDE0OjI4IC0wODAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6DQo+ IE9uIFdlZCwgRmViIDIxLCAyMDE4IGF0IDAxOjEyOjA4UE0gLTA4MDAsIFNvdXphLCBKb3NlIHdy b3RlOg0KPiA+IE9uIFdlZCwgMjAxOC0wMi0yMSBhdCAxMjo0NSAtMDgwMCwgUm9kcmlnbyBWaXZp IHdyb3RlOg0KPiA+ID4gT24gVHVlLCBGZWIgMjAsIDIwMTggYXQgMDY6MjM6NDdQTSAtMDgwMCwg Sm9zw6kgUm9iZXJ0byBkZSBTb3V6YQ0KPiA+ID4gd3JvdGU6DQo+ID4gPiA+IFdoZW4gUFNSL1BT UjIvR1RDIGlzIGVuYWJsZWQgaGFyZHdhcmUgY2FuIGRvIEFVWCB0cmFuc2FjdGlvbnMNCj4gPiA+ ID4gYnkgaXQNCj4gPiA+ID4gc2VsZiwgc28gbGV0cyB1c2UgdGhlIG11dGV4IHJlZ2lzdGVyIHRo YXQgaXMgYXZhaWxhYmxlIGluIGdlbjkrDQo+ID4gPiA+IHRvDQo+ID4gPiA+IGF2b2lkIGNvbmN1 cnJlbnQgYWNjZXNzIGJ5IGhhcmR3YXJlIGFuZCBkcml2ZXIuDQo+ID4gPiA+IA0KPiA+ID4gPiBS ZWZlcmVuY2U6IGh0dHBzOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG9jdW1lbnRhdGlv bi9pbnQNCj4gPiA+ID4gZWwtZw0KPiA+ID4gPiBmeC1wcm0tb3NyYy1za2wtdm9sMTItZGlzcGxh eS5wZGYNCj4gPiA+ID4gUGFnZSAxOTggLSBBVVggcHJvZ3JhbW1pbmcgc2VxdWVuY2UNCj4gPiA+ ID4gDQo+ID4gPiANCj4gPiA+IENjOiBWaWxsZQ0KPiA+ID4gQ2M6IERLDQo+ID4gPiA+IENjOiBS b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCj4gPiA+ID4g LS0tDQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICB8ICA5ICsrKysr KysrDQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDUwDQo+ID4g PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgIDEgKw0KPiA+ID4gPiAgMyBmaWxlcyBj aGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspDQo+ID4gPiA+IA0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgNCj4gPiA+ID4gaW5kZXggMTQxMmFiY2IyN2Q0Li5hNjJlM2MxYmFk YWIgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgN Cj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+ID4gPiBA QCAtNTMxOCw2ICs1MzE4LDcgQEAgZW51bSB7DQo+ID4gPiA+ICAjZGVmaW5lIF9EUEFfQVVYX0NI X0RBVEEzCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAw eDY0MDFjKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQQV9BVVhfQ0hfREFUQTQJKGRl dl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQwMjApDQo+ ID4gPiA+IA0KPiA+ID4gPiAgI2RlZmluZSBfRFBBX0FVWF9DSF9EQVRBNQkoZGV2X3ByaXYtDQo+ ID4gPiA+ID4gaW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDAyNCkNCj4gPiA+ID4gDQo+ ID4gPiA+ICsjZGVmaW5lIF9EUEFfQVVYX0NIX01VVEVYCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBp bmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MDJDKQ0KPiA+ID4gPiANCj4gPiA+ID4gIA0K PiA+ID4gPiAgI2RlZmluZSBfRFBCX0FVWF9DSF9DVEwJCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBp bmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTEwKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNk ZWZpbmUgX0RQQl9BVVhfQ0hfREFUQTEJKGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxh eV9tbWlvX29mZnNldCArIDB4NjQxMTQpDQo+ID4gPiA+IA0KPiA+ID4gPiBAQCAtNTMyNSw2ICs1 MzI2LDcgQEAgZW51bSB7DQo+ID4gPiA+ICAjZGVmaW5lIF9EUEJfQVVYX0NIX0RBVEEzCShkZXZf cHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MTFjKQ0KPiA+ ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQQl9BVVhfQ0hfREFUQTQJKGRldl9wcml2LQ0KPiA+ ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQxMjApDQo+ID4gPiA+IA0KPiA+ ID4gPiAgI2RlZmluZSBfRFBCX0FVWF9DSF9EQVRBNQkoZGV2X3ByaXYtDQo+ID4gPiA+ID4gaW5m by5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDEyNCkNCj4gPiA+ID4gDQo+ID4gPiA+ICsjZGVm aW5lIF9EUEJfQVVYX0NIX01VVEVYCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlf bW1pb19vZmZzZXQgKyAweDY0MTJDKQ0KPiA+ID4gPiANCj4gPiA+ID4gIA0KPiA+ID4gPiAgI2Rl ZmluZSBfRFBDX0FVWF9DSF9DVEwJCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlf bW1pb19vZmZzZXQgKyAweDY0MjEwKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQQ19B VVhfQ0hfREFUQTEJKGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNl dCArIDB4NjQyMTQpDQo+ID4gPiA+IA0KPiA+ID4gPiBAQCAtNTMzMiw2ICs1MzM0LDcgQEAgZW51 bSB7DQo+ID4gPiA+ICAjZGVmaW5lIF9EUENfQVVYX0NIX0RBVEEzCShkZXZfcHJpdi0NCj4gPiA+ ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MjFjKQ0KPiA+ID4gPiANCj4gPiA+ ID4gICNkZWZpbmUgX0RQQ19BVVhfQ0hfREFUQTQJKGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8u ZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQyMjApDQo+ID4gPiA+IA0KPiA+ID4gPiAgI2RlZmlu ZSBfRFBDX0FVWF9DSF9EQVRBNQkoZGV2X3ByaXYtDQo+ID4gPiA+ID4gaW5mby5kaXNwbGF5X21t aW9fb2Zmc2V0ICsgMHg2NDIyNCkNCj4gPiA+ID4gDQo+ID4gPiA+ICsjZGVmaW5lIF9EUENfQVVY X0NIX01VVEVYCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQg KyAweDY0MjJDKQ0KPiA+ID4gPiANCj4gPiA+ID4gIA0KPiA+ID4gPiAgI2RlZmluZSBfRFBEX0FV WF9DSF9DVEwJCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQg KyAweDY0MzEwKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQRF9BVVhfQ0hfREFUQTEJ KGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQzMTQp DQo+ID4gPiA+IA0KPiA+ID4gPiBAQCAtNTMzOSw2ICs1MzQyLDcgQEAgZW51bSB7DQo+ID4gPiA+ ICAjZGVmaW5lIF9EUERfQVVYX0NIX0RBVEEzCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRp c3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MzFjKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUg X0RQRF9BVVhfQ0hfREFUQTQJKGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlv X29mZnNldCArIDB4NjQzMjApDQo+ID4gPiA+IA0KPiA+ID4gPiAgI2RlZmluZSBfRFBEX0FVWF9D SF9EQVRBNQkoZGV2X3ByaXYtDQo+ID4gPiA+ID4gaW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsg MHg2NDMyNCkNCj4gPiA+ID4gDQo+ID4gPiA+ICsjZGVmaW5lIF9EUERfQVVYX0NIX01VVEVYCShk ZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0MzJDKQ0K PiA+ID4gPiANCj4gPiA+ID4gIA0KPiA+ID4gPiAgI2RlZmluZSBfRFBGX0FVWF9DSF9DVEwJCShk ZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0NTEwKQ0K PiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQRl9BVVhfQ0hfREFUQTEJKGRldl9wcml2LQ0K PiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQ1MTQpDQo+ID4gPiA+IA0K PiA+ID4gPiBAQCAtNTM0Niw2ICs1MzUwLDcgQEAgZW51bSB7DQo+ID4gPiA+ICAjZGVmaW5lIF9E UEZfQVVYX0NIX0RBVEEzCShkZXZfcHJpdi0NCj4gPiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19v ZmZzZXQgKyAweDY0NTFjKQ0KPiA+ID4gPiANCj4gPiA+ID4gICNkZWZpbmUgX0RQRl9BVVhfQ0hf REFUQTQJKGRldl9wcml2LQ0KPiA+ID4gPiA+IGluZm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4 NjQ1MjApDQo+ID4gPiA+IA0KPiA+ID4gPiAgI2RlZmluZSBfRFBGX0FVWF9DSF9EQVRBNQkoZGV2 X3ByaXYtDQo+ID4gPiA+ID4gaW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHg2NDUyNCkNCj4g PiA+ID4gDQo+ID4gPiA+ICsjZGVmaW5lIF9EUEZfQVVYX0NIX01VVEVYCShkZXZfcHJpdi0NCj4g PiA+ID4gPiBpbmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweDY0NTJDKQ0KPiA+ID4gPiANCj4g PiA+ID4gIA0KPiA+ID4gPiAgI2RlZmluZSBEUF9BVVhfQ0hfQ1RMKHBvcnQpCV9NTUlPX1BPUlQo cG9ydCwNCj4gPiA+ID4gX0RQQV9BVVhfQ0hfQ1RMLCBfRFBCX0FVWF9DSF9DVEwpDQo+ID4gPiA+ ICAjZGVmaW5lIERQX0FVWF9DSF9EQVRBKHBvcnQsIGkpCV9NTUlPKF9QT1JUKHBvcnQsDQo+ID4g PiA+IF9EUEFfQVVYX0NIX0RBVEExLCBfRFBCX0FVWF9DSF9EQVRBMSkgKyAoaSkgKiA0KSAvKiA1 IHJlZ2lzdGVycw0KPiA+ID4gPiAqLw0KPiA+ID4gPiBAQCAtNTM3OCw2ICs1MzgzLDEwIEBAIGVu dW0gew0KPiA+ID4gPiAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfRldfU1lOQ19QVUxTRV9TS0wo YykgKCgoYykgLSAxKSA8PCA1KQ0KPiA+ID4gPiAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfU1lO Q19QVUxTRV9TS0woYykgICAoKGMpIC0gMSkNCj4gPiA+ID4gDQo+ID4gPiANCj4gPiA+IA0KPiA+ ID4gSSBiZWxpZXZlIF9EUEFfQVVYX0NIX01VVEVYIGFuZCBfRFBCX0FVWF9DSF9NVVRFWCBzaG91 bGQgYmUNCj4gPiA+IGRlZmluZWQNCj4gPiA+IGhlcmUgYWxvbmcNCj4gPiA+IHdpdGggdGhlIGJp dHMgYXMgSmFuaSBzdWdnZXN0ZWQuDQo+ID4gPiBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvIHRh ZyB0aGF0IGZhciBmcm9tIHRoZSBiaXRzIGFuZCBjbG9zZSB0bw0KPiA+ID4gQ1RMDQo+ID4gPiBh bmQgREFUQS4NCg0KT2theSBtb3ZpbmcgaXQuDQoNCj4gPiA+IA0KPiA+ID4gPiArI2RlZmluZSBE UF9BVVhfQ0hfTVVURVgocG9ydCkJX01NSU9fUE9SVChwb3J0LA0KPiA+ID4gPiBfRFBBX0FVWF9D SF9NVVRFWCwgX0RQQl9BVVhfQ0hfTVVURVgpDQo+ID4gPiA+ICsjZGVmaW5lICAgRFBfQVVYX0NI X01VVEVYX0VOQUJMRQkJKDEgPDwgMzEpDQo+ID4gPiA+ICsjZGVmaW5lICAgRFBfQVVYX0NIX01V VEVYX1NUQVRVUwkJKDEgPDwgMzApDQo+ID4gPiA+ICsNCj4gPiA+ID4gIC8qDQo+ID4gPiA+ICAg KiBDb21wdXRpbmcgR01DSCBNIGFuZCBOIHZhbHVlcyBmb3IgdGhlIERpc3BsYXkgUG9ydCBsaW5r DQo+ID4gPiA+ICAgKg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYw0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4g PiA+ID4gaW5kZXggZjIwYjI1Zjk4ZTVhLi5hZjA3NTYzYmFmYmEgMTAwNjQ0DQo+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPiA+ID4gPiBAQCAtMTA4MSw2ICsxMDgxLDQ1IEBA IHN0YXRpYyB1aW50MzJfdA0KPiA+ID4gPiBpbnRlbF9kcF9nZXRfYXV4X3NlbmRfY3RsKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gPiA+ICAJCQkJCQlhdXhfY2xvY2tfZGl2aQ0KPiA+ ID4gPiBkZXIpDQo+ID4gPiA+IDsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIA0KPiA+ID4gPiArc3Rh dGljIGJvb2wgaW50ZWxfZHBfYXV4X2NoX3RyeWxvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9DQo+ID4gPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsNCj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiA+ID4gPiArCQkJdG9faTkx NShpbnRlbF9kaWdfcG9ydC0NCj4gPiA+ID4gPmJhc2UuYmFzZS5kZXYpOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQ0KPiA+ID4gPiArCQlyZXR1cm4g dHJ1ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCUk5MTVfV1JJVEUoaW50ZWxfZHAtPmF1eF9jaF9t dXRleF9yZWcsDQo+ID4gPiA+IERQX0FVWF9DSF9NVVRFWF9FTkFCTEUpOw0KPiA+ID4gDQo+ID4g PiBZb3UgbWlnaHQgYmUgdG91Y2hpbmcgYml0cy4gV2UgZG9uJ3Qga25vdyBpZiBIVyBpcyB1c2lu ZyB0aGUNCj4gPiA+IHJlc2VydmVkDQo+ID4gPiBiaXRzIG9yIG5vdC4NCj4gPiA+IFNvIFJNVyB8 PSBiaXQgMzEgaGVyZSBpcyBhIGdvb2QgaWRlYS4NCj4gPiANCj4gPiBBcyBhIHJlYWQgaW4gdGhp cyByZWdpc3RlciByZXF1ZXN0IHRoZSBtdXRleCBsb2NrIGlzIGJldHRlciBhdm9pZA0KPiA+IGFu eQ0KPiA+IHJlYWQgdGhhdCBpcyBub3QgbWVhbnQgdG8gcmVxdWVzdCBpdC4NCj4gDQo+IG9rLi4u IEkgYWNjZXB0IHRoZSBmYWN0IHRoYXQgcmVhZCB0aGF0IGlzIGxvY2tpbmcNCj4gc28geW91IGFy ZSByaWdodCBoZXJlLg0KPiANCj4gPiANCj4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyog U3BlYyBzYXlzIHRoYXQgbXV0ZXggaXMgYWNxdWlyZWQgd2hlbiBzdGF0dXMgYml0IGlzDQo+ID4g PiA+IHJlYWQgYXMgdW5zZXQsDQo+ID4gPiA+ICsJICogaWYgc2V0IGl0IHNob3VsZCBiZSByZWFk IGFnYWluIGFmdGVyIDUwMHVzZWMuIEhlcmUNCj4gPiA+ID4gd2FpdGluZyBmb3INCj4gPiA+ID4g KwkgKiAybXNlYyBvciA0IHRyaWVzIGJlZm9yZSBnaXZlIHVwLg0KPiA+ID4gPiArCSAqLw0KPiA+ ID4gPiArCWlmIChfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBpbnRlbF9kcC0N Cj4gPiA+ID4gPiBhdXhfY2hfbXV0ZXhfcmVnLA0KPiA+ID4gPiANCj4gPiA+ID4gKwkJCQkgICAg ICBEUF9BVVhfQ0hfTVVURVhfU1RBVFVTLA0KPiA+ID4gPiAwLA0KPiA+ID4gPiA1MDAsIDIsDQo+ ID4gPiA+ICsJCQkJICAgICAgTlVMTCkpIHsNCj4gPiA+IA0KPiA+ID4gd2h5IG5vdCBpbnRlbF93 YWl0X2Zvcl9yZWdpc3Rlcj8NCj4gPiA+IHRoYXQgc2VlbXMgY2xlYW5lci4uLg0KPiA+IA0KPiA+ IGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCkgd2lsbCBjYWxsIF9faW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoKQ0KPiA+IHdpdGgNCj4gPiBmYXN0X3RpbWVvdXRfdXMgc2V0IGFzIDJ1c2VjIGFuZCBz cGVjcyBzYXlzIHdlIHNob3VsZCB3YWl0IDUwMHVzZWMuDQo+IA0KPiBTbywgSSd2ZSBqdXN0IG5v dGljZWQgdGhhdCBfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyIHNwcmVhZGVkIHRvDQo+IGludGVs X2hkY3AuDQo+IElkZWFsbHkgaWYgd2UgaGF2ZSBfXyBwcmVmaXggdGhpcyBzaG91bGRuJ3QgYmUg Y2FsbGVkIGZvciBtb3JlIHRoYW4gMQ0KPiBwbGFjZS4NCj4gDQo+IFNvIGl0IHNlZW1zIHRoYXQg d2UgaGF2ZSBtb3JlIGNhc2VzIGhlbmNlIGEgcmV3b3JrIHNob3VsZCBiZSBkb25lDQo+IGhlcmUu DQo+IA0KPiBCdXQgYWxzbyB0aGUgZmFzdCBjYXNlIGlzIHRoZSBhdG9taWMgaW5pdGlhbCBjYXNl Li4uIGl0IGlzIHRoZSBmaXJzdA0KPiByZWFkLg0KPiBPbmx5IGlmIGl0IGZhaWxzIGl0IHdpbGwg Y29uc2lkZXIgdGhlIHNsb3cgY2FzZS4gVGhhdCdzIGV4YWN0bHkgd2hhdA0KPiBzcGVjIHRlbGxz DQo+IA0KPiBNYXliZSB3aGF0IHdlIHdhbnQgaGVyZSBpcyBhIGludGVsX3dhaXRfZm9yX3JlZ2lz dGVyX3VzIHRvIGhhdmUgYQ0KPiBzbG93IHZhbHVlDQo+IGJhc2VkIGluIHVzIHJhdGhlciB0aGFu IG1zPw0KPiANCj4gSSdtIG5vdCBmdWxseSBzdXJlIGhlcmUuDQoNCg0KUmVhZGluZyBhZ2FpbiB0 aGUgaW1wbGVtZW50YXRpb24gaXQgZG9uJ3QgZG8gZXhhY3RseSB3aGF0IEkgd2FzDQpleHBlY3Rp bmcuDQpJdCB3aWxsIGNoZWNrIHRoZSByZWdpc3RlciBmb3IgdGhlIGV4cGVjdGVkIHZhbHVlIHVu dGlsIGZhc3RfdGltZW91dF91cw0Kd2l0aG91dCBzbGVlcGluZyBhbmQgaWYgbm90IG1lZXQgdGhl IGV4cGVjdGVkIHZhbHVlIGl0IHdpbGwgd2FpdCB1bnRpbA0Kc2xvd190aW1lb3V0X21zIHNsZWVw aW5nIGZyb20gMTB1c2VjIHRvIDEwMDB1c2VjIGluY3JlYXNpbmcgYXQgZWFjaA0KaXRlcmF0aW9u Lg0KDQpTbyBJIGd1ZXNzIEkgY2FuIHVzZSB0aGUgcmVndWxhciBpbnRlbF93YWl0X2Zvcl9yZWdp c3RlcigpIHdpdGgNCnRpbWVvdXRfbXM9Mm1zZWMsIG9yIHRoZXJlIGlzIGFueSBvdGhlciBzdWdn ZXN0aW9uPw0KDQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICsJCURSTV9XQVJOKCJkcF9hdXhf Y2ggcG9ydCBsb2NrZWQgZm9yIHRvbw0KPiA+ID4gPiBsb25nIik7DQo+ID4gPiA+ICsJCXJldHVy biBmYWxzZTsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4gdHJ1ZTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgaW50ZWxfZHBfYXV4 X2NoX3VubG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0NCj4gPiA+ID4g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9DQo+ID4gPiA+ICsJCQl0b19pOTE1KGludGVsX2RpZ19wb3J0LQ0KPiA+ ID4gPiA+YmFzZS5iYXNlLmRldik7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDkpDQo+ID4gPiA+ICsJCXJldHVybjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CS8qIHNldHRpbmcgdGhlIHN0YXR1cyBiaXQgcmVsZWFzZXMgdGhlIG11dGV4ICsga2VlcA0KPiA+ ID4gPiBtdXRleA0KPiA+ID4gPiBlbmFibGVkICovDQo+ID4gPiA+ICsJSTkxNV9XUklURShpbnRl bF9kcC0+YXV4X2NoX211dGV4X3JlZywNCj4gPiA+ID4gRFBfQVVYX0NIX01VVEVYX0VOQUJMRSB8 DQo+ID4gPiA+ICsJCSAgIERQX0FVWF9DSF9NVVRFWF9TVEFUVVMpOw0KPiA+ID4gDQo+ID4gPiBk aXR0by4NCj4gPiA+IA0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICBzdGF0aWMgaW50 DQo+ID4gPiA+ICBpbnRlbF9kcF9hdXhfY2goc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4g PiA+ID4gIAkJY29uc3QgdWludDhfdCAqc2VuZCwgaW50IHNlbmRfYnl0ZXMsDQo+ID4gPiA+IEBA IC0xMTE1LDYgKzExNTQsMTEgQEAgaW50ZWxfZHBfYXV4X2NoKHN0cnVjdCBpbnRlbF9kcA0KPiA+ ID4gPiAqaW50ZWxfZHAsDQo+ID4gPiA+ICANCj4gPiA+ID4gIAlpbnRlbF9kcF9jaGVja19lZHAo aW50ZWxfZHApOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9hdXhfY2hfdHJ5 bG9jayhpbnRlbF9kcCkpIHsNCj4gPiA+ID4gKwkJcmV0ID0gLUVCVVNZOw0KPiA+ID4gPiArCQln b3RvIG91dF9sb2NrZWQ7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiANCj4gPiA+IEJT cGVjOiA0MzAxDQo+ID4gPiBJIGJlbGlldmUgeW91IGNvdWxkIHJlZHVjZSB0aGUgbG9jayByZWdp b24gZm9sbG93aW5nIHRoZSBzcGVjDQo+ID4gPiBhbmQgbGltaXRpbmcgaXQgdG8gc3RlcHMgNS10 by0xMCwgaS5lLg0KPiA+ID4gaW5zaWRlIHRoZSBsb29wIGJlbG93Lg0KPiA+IA0KPiA+IFdlIGxv b3AgdHJ5aW5nIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2FjdGlvbiBidXQgd2UgY29weSBkYXRhDQo+ ID4gcmVjZWl2ZWQNCj4gPiBvdXQgb2YgdGhlIGxvb3AgYW5kIHRoYXQgaXMgc3RlcCA5LCBzbyB0 aGUgbG9jayBtdXN0IGJlIGhlbGQgdW50aWwNCj4gPiB3ZQ0KPiA+IGNvcHkgdGhlIGRhdGEgZnJv bSBpbnRlbF9kcC0+YXV4X2NoX2RhdGFfcmVnW10gdG8gcmVjdi4NCj4gPiANCj4gPiAiDQo+ID4g CWZvciAoaSA9IDA7IGkgPCByZWN2X2J5dGVzOyBpICs9IDQpDQo+ID4gCQlpbnRlbF9kcF91bnBh Y2tfYXV4KEk5MTVfUkVBRChpbnRlbF9kcC0NCj4gPiA+YXV4X2NoX2RhdGFfcmVnW2kgPj4NCj4g PiAyXSksIHJlY3YgKyBpLCByZWN2X2J5dGVzIC0gaSk7DQo+ID4gDQo+ID4gCXJldCA9IHJlY3Zf Ynl0ZXM7DQo+ID4gb3V0Og0KPiA+IAlpbnRlbF9kcF9hdXhfY2hfdW5sb2NrKGludGVsX2RwKTsN Cj4gPiAiDQo+IA0KPiBobS4uLiBvay4uLiB0aGlzIGlzIHRoZSBhY3R1YWxseSBwYXJ0IDkgdGhh dCBuZWVkcyB0byBiZSBpbnNpZGUNCj4gdGhlIGxvY2tlZCBhcmVhIGluZGVlZC4gSSBtaXNzZWQg dGhhdC4NCj4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gIAkvKiBUcnkgdG8gd2FpdCBmb3IgYW55 IHByZXZpb3VzIEFVWCBjaGFubmVsIGFjdGl2aXR5DQo+ID4gPiA+ICovDQo+ID4gPiA+ICAJZm9y ICh0cnkgPSAwOyB0cnkgPCAzOyB0cnkrKykgew0KPiA+ID4gPiAgCQlzdGF0dXMgPSBJOTE1X1JF QURfTk9UUkFDRShjaF9jdGwpOw0KPiA+ID4gPiBAQCAtMTI0NCw2ICsxMjg4LDggQEAgaW50ZWxf ZHBfYXV4X2NoKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gPiAqaW50ZWxfZHAsDQo+ID4gPiA+ICAN Cj4gPiA+ID4gIAlyZXQgPSByZWN2X2J5dGVzOw0KPiA+ID4gPiAgb3V0Og0KPiA+ID4gPiArCWlu dGVsX2RwX2F1eF9jaF91bmxvY2soaW50ZWxfZHApOw0KPiA+ID4gPiArb3V0X2xvY2tlZDoNCj4g PiA+ID4gIAlwbV9xb3NfdXBkYXRlX3JlcXVlc3QoJmRldl9wcml2LT5wbV9xb3MsDQo+ID4gPiA+ IFBNX1FPU19ERUZBVUxUX1ZBTFVFKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCWlmICh2ZGQpDQo+ ID4gPiA+IEBAIC0xNDk2LDYgKzE1NDIsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXV4X3JlZ19p bml0KHN0cnVjdA0KPiA+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiA+ICAJaW50ZWxf ZHAtPmF1eF9jaF9jdGxfcmVnID0gaW50ZWxfYXV4X2N0bF9yZWcoZGV2X3ByaXYsDQo+ID4gPiA+ IHBvcnQpOw0KPiA+ID4gPiAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGludGVsX2RwLT5h dXhfY2hfZGF0YV9yZWcpOw0KPiA+ID4gPiBpKyspDQo+ID4gPiA+ICAJCWludGVsX2RwLT5hdXhf Y2hfZGF0YV9yZWdbaV0gPQ0KPiA+ID4gPiBpbnRlbF9hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIHBv cnQsIGkpOw0KPiA+ID4gPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsN Cj4gPiA+ID4gKwkJaW50ZWxfZHAtPmF1eF9jaF9tdXRleF9yZWcgPQ0KPiA+ID4gPiBEUF9BVVhf Q0hfTVVURVgocG9ydCk7DQo+ID4gPiA+ICsJCUk5MTVfV1JJVEUoaW50ZWxfZHAtPmF1eF9jaF9t dXRleF9yZWcsDQo+ID4gPiA+IERQX0FVWF9DSF9NVVRFWF9FTkFCTEUpOw0KPiA+ID4gDQo+ID4g PiBJIGRvbid0IGJlbGlldmUgd2UgbmVlZCBhbiBleHRyYSBlbmFibGUgaGVyZS4gQW5kIGhvcGVm dWxseSB3aXRoDQo+ID4gPiBWaWxsZXMNCj4gPiA+IHJld29yayB3ZSBkb24ndCBldmVuIG5lZWQg dG8gZGVmaW5lIGhlcmUgYnV0IG9ubHkgYWNjZXNzaW5nIGl0DQo+ID4gPiBkaXJlY3RseSBmcm9t DQo+ID4gPiB0aGUgYXV4IGZ1bmN0aW9uIHdpdGggaW50ZWxfZHAtPmF1eF9jaCByZWZlcmVuY2Uu DQo+ID4gDQo+ID4gV2hhdCBpZiBoYXJkd2FyZSB3YW50cyB0byBkbyBzb21lIGF1eCB0cmFuc2Fj dGlvbiBiZWZvcmUgd2UgZG8gb3VyDQo+ID4gZmlyc3QgdHJhbnNhY3Rpb24oYW5kIGVuYWJsaW5n IHRoZSBtdXRleCk/IFRoZSBtdXRleCB3aWxsIG5vdCBiZQ0KPiA+IGVuYWJsZWQgc28gaGFyZHdh cmUgd2lsbCBub3QgbG9jayBpdC4NCj4gPiANCj4gPiA+IA0KPiA+ID4gPiArCX0NCj4gPiA+ID4g IH0NCj4gPiA+ID4gIA0KPiA+ID4gPiAgc3RhdGljIHZvaWQNCj4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiA+ID4gaW5kZXggNTA4NzRmNDAzNWNmLi4wYzg4NjU3 ZDYwNjYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4g PiA+IEBAIC0xMDQzLDYgKzEwNDMsNyBAQCBzdHJ1Y3QgaW50ZWxfZHAgew0KPiA+ID4gPiAgCWk5 MTVfcmVnX3Qgb3V0cHV0X3JlZzsNCj4gPiA+ID4gIAlpOTE1X3JlZ190IGF1eF9jaF9jdGxfcmVn Ow0KPiA+ID4gPiAgCWk5MTVfcmVnX3QgYXV4X2NoX2RhdGFfcmVnWzVdOw0KPiA+ID4gPiArCWk5 MTVfcmVnX3QgYXV4X2NoX211dGV4X3JlZzsNCj4gPiA+ID4gIAl1aW50MzJfdCBEUDsNCj4gPiA+ ID4gIAlpbnQgbGlua19yYXRlOw0KPiA+ID4gPiAgCXVpbnQ4X3QgbGFuZV9jb3VudDsNCj4gPiA+ ID4gLS0gDQo+ID4gPiA+IDIuMTYuMg0KPiA+ID4gPiAKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==