From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710087.outbound.protection.outlook.com [40.107.71.87]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5FBFE6E1CD for ; Thu, 28 Feb 2019 14:30:02 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Thu, 28 Feb 2019 14:29:59 +0000 Message-ID: <84679210-97a5-2126-3c65-e13f837f38d9@amd.com> References: <20190225154219.8300-1-nicholas.kazlauskas@amd.com> <94fd8aa7-e390-17c6-e7ba-4a55387c58f5@amd.com> <20190228102332.GO2665@phenom.ffwll.local> In-Reply-To: <20190228102332.GO2665@phenom.ffwll.local> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v3] lib/igt_kms: Fix commits for planes with multiple possible CRTCs List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter , "Wentland, Harry" Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gMi8yOC8xOSA1OjIzIEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiBPbiBXZWQsIEZlYiAy NywgMjAxOSBhdCAwODoxMzozN1BNICswMDAwLCBXZW50bGFuZCwgSGFycnkgd3JvdGU6DQo+PiBP biAyMDE5LTAyLTI1IDEwOjQyIGEubS4sIE5pY2hvbGFzIEthemxhdXNrYXMgd3JvdGU6DQo+Pj4g QW4gaWd0X3BsYW5lX3QgaXMgZGVmaW5lZCBwZXIgaWd0X3BpcGVfdC4gSXQgaXMgdHJlYXRlZCBh cyBpdHMNCj4+PiBvd24gaW5kZXBlbmRlbnQgcmVzb3VyY2UgYnV0IERSTSBwbGFuZXMgY2FuIGJl IGV4cG9zZWQgdG8gYmVpbmcgdXNlZCBvbg0KPj4+IGEgbnVtYmVyIG9mIHBvc3NpYmxlIENSVENz IC0gbWFraW5nIGl0IGEgc2hhcmVkIHJlc291cmNlLg0KPj4+DQo+Pj4gSW4gSUdUIHBsYW5lcyB3 aXRoIG11bHRpcGxlIHBvc3NpYmxlIENSVENzIGFyZSBhZGRlZCB0byB0aGUgcGxhbmUgbGlzdA0K Pj4+IGZvciBlYWNoIHBpcGUgdGhhdCB0aGUgcGxhbmUgc3VwcG9ydHMuIFRoZSBpbnRlcm5hbCBz dGF0ZSByZW1haW5zDQo+Pj4gaW5kZXBlbmRlbnQgaW4gSUdUIHNvIHdoZW4gdGhlIHNhbWUgcGxh bmUgaXMgbW9kaWZpZWQgZm9yIG11bHRpcGxlDQo+Pj4gcGlwZXMgaW4gYSBzaW5nbGUgY29tbWl0 IHRoZSBsYXN0IHBpcGUgdG8gbW9kaWZ5IGl0IGlzIHRoZSBvbmUgd2hvc2UNCj4+PiBzdGF0ZSBn ZXRzIGZ1bGx5IGFwcGxpZWQuDQo+Pj4NCj4+PiBUaGlzIHNpdHVhdGlvbiBoYXBwZW5zIGZhaXJs eSBvZnRlbiBpbiBwcmFjdGljZSAtIHJlc2V0dGluZyB0aGUgZGlzcGxheQ0KPj4+IGF0IHRoZSBz dGFydCBvZiB0aGUgdGVzdCBiZWZvcmUgYSBjb21taXQgd2lsbCByZXNldCB0aGUgQ1JUQyBJRCBh bmQgRkINCj4+PiBJRCBmb3IgZWFjaCBwbGFuZS4NCj4+Pg0KPj4+IEZvciBhbiBleGFtcGxlLCBj b25zaWRlciB0aGUNCj4+PiBpZ3RAa21zX3BsYW5lX2FscGhhX2JsZW5kQHBpcGUtYS1jb25zdGFu dC1hbHBoYS1tYXggdGVzdC4NCj4+Pg0KPj4+IFRoaXMgdGVzdCB3aWxsIGZhaWwgZm9yIGFueSBv dmVybGF5IHBsYW5lIGV4cG9zZWQgZm9yIG11bHRpcGxlIENSVENzLg0KPj4+DQo+Pj4gVGhlIHRl c3QgdHJpZXMgdG8gc2V0IGEgZnJhbWVidWZmZXIgZm9yIHBpcGUgQSBidXQgaGFzIGFsbCB0aGUg b3RoZXINCj4+PiBwaXBlcyByZXNldCB0aGUgcGxhbmUgc3RhdGUgaW4gdGhlIHNhbWUgY29tbWl0 LiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUNCj4+PiBwaXBlcyBvbiB0aGUgaGFyZHdhcmUgdGhlbiB0 aGUgbGFzdCBwaXBlIHdpbGwgYmUgdGhlIG9uZSB0byBzZXQgYWxsIHRoZQ0KPj4+IHBsYW5lIHBy b3BlcnRpZXMuIFRoZSBkcml2ZXIgd2lsbCByZWNlaXZlIGEgY29tbWl0IHdpdGggbm8gb3Zlcmxh eQ0KPj4+IHBsYW5lIGVuYWJsZWQgc2luY2UgdGhlIGxhc3QgcGlwZSBzZXQgQ1JUQyBJRCBhbmQg RkIgSUQgdG8gMCwgZGlzYWJsaW5nDQo+Pj4gdGhlIHBsYW5lLiBUaGUgcmVmZXJlbmNlIENSQyBj YXB0dXJlIHdpbGwgYmUgaW5jb3JyZWN0IHNpbmNlIG5vdCBhbGwNCj4+PiB0aGUgcGxhbmVzIGhh dmUgYmVlbiBlbmFibGVkIGFuZCB0aGUgc3Vic2VxdWVudCBDUkMgY2FwdHVyZXMgd2lsbA0KPj4+ IG5vdCBtYXRjaCwgZmFpbGluZyB0aGUgdGVzdC4NCj4+Pg0KPj4+IFRoZSBzaW1wbGVzdCAoYnV0 IGhhY2t5KSBmaXggdG8gdGhpcyBwcm9ibGVtIGlzIHRvIG9ubHkgc2V0IHRoZQ0KPj4+IHByb3Bl cnRpZXMgZm9yIHRoZSBwbGFuZSBmb3IgdGhlIHBpcGUgdGhhdCBsYXN0IGhhZCBpdCBib3VuZC4N Cj4+Pg0KPj4+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGdsb2JhbCBwbGFuZSBsaXN0IG9uIGln dF9kaXNwbGF5X3QgdGhhdCBrZWVwcw0KPj4+IHRyYWNrIG9mIHRoZSBwaXBlIHRoYXQgcGlwZSB0 aGF0IGxhc3QgY2FsbGVkIGlndF9wbGFuZV9zZXRfZmIuIFRoZQ0KPj4+IHByb3BlcnRpZXMgZm9y IHRoZSBwbGFuZSB3aWxsIG9ubHkgYmUgYXBwbGllZCBmcm9tIHRoYXQgc2luZ2xlIHBpcGUNCj4+ PiB3aGVuIGNvbW1pdGluZyB0aGUgc3RhdGUgdG8gRFJNLg0KPj4+DQo+Pj4gTm8gYmVoYXZpb3Jh bCBjaGFuZ2VzIHNob3VsZCBiZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggZm9yIGhhcmR3YXJl DQo+Pj4gd2hvc2UgcGxhbmVzIGFyZSBvbmx5IGV2ZXIgZXhwb3NlZCBvbmUgQ1JUQy4NCj4+Pg0K Pj4+IEl0IHdvdWxkIGxpa2VseSBiZSBiZXN0IHRvIGV2ZW50dWFsbHkgbW9kaWZ5IHRoZSBpZ3Rf cGlwZV90IHBsYW5lIGxpc3QNCj4+PiB0byBiZSBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8gcGxhbmVz IGluc3RlYWQgKGlndF9wbGFuZV90KiopDQo+Pj4gaW5zdGVhZCBvZiBiZWluZyB0aGUgYWN0dWFs IHBsYW5lIG9iamVjdHMsIGJ1dCB0aGF0IGNhbiBjb21lIGxhdGVyLg0KPj4+DQo+Pj4gTWFueSBh cmVhcyBvZiB0aGUgY29kZSBsaWtlIHRvIG1ha2UgdXNlIG9mIHRoZSBiYWNrcG9pbnRlciB0byB0 aGUgcGlwZQ0KPj4+IG9uIHRoZSBwbGFuZSB3aGljaCBtYWtlcyByZWZhY3RvcmluZyB0aGUgY29k ZSBpbiB0aGF0IG1hbm5lciBhIGxpdHRsZQ0KPj4+IHRyaWNraWVyLg0KPj4+DQo+Pj4gdjI6IEFk ZCBpZ3RfcGxhbmVfc2V0X2ZiLCB1c2UgaWd0X3BsYW5lX3QgZm9yIGdsb2JhbCBwbGFuZSBsaXN0 IChEYW5pZWwpDQo+Pj4gdjM6IExlYXZlIFRPRE8gZm9yIGZpbGxpbmcgaW4gYWxsIHN0YXRlL3By b3BzIG9uIGdsb2JhbCBwbGFuZXMNCj4+Pg0KPj4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxA ZmZ3bGwuY2g+DQo+Pj4gU2lnbmVkLW9mZi1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9s YXMua2F6bGF1c2thc0BhbWQuY29tPg0KPj4NCj4+IEFja2VkLWJ5OiBIYXJyeSBXZW50bGFuZCA8 aGFycnkud2VudGxhbmRAYW1kLmNvbT4NCj4+DQo+PiBEYW5pZWwsIHBpbmcuDQo+IA0KPiBTcnks IGRyb3duaW5nIGFuZCBiZWhpbmQgbWFpbHMuIEkgYWNrZWQgdGhlIGdlbmVyYWwgcGxhbiBhbHJl YWR5LCBhcyBsb25nDQo+IGFzIHlvdSBkb24ndCB1cHNldCBDSSBhbGwgZmluZSB3aXRoIG1lLiBP bmNlIGl0J3MgYWxsIGRvbmUgd291bGQgYmUgZ29vZA0KPiB0byBtYWtlIGEgZmluZSBjb21iZWQg cGFzcyBvdmVyIGRvY3MgYW5kIG1ha2Ugc3VyZSBhbGwgdGhlIGZpeGVkDQo+IHBpcGUvcGxhbmUg YXNzb2NpYXRpb24gbGFuZ3VhZ2UgaXMgYWxzbyBnb25lLg0KPiAtRGFuaWVsDQoNClNvdW5kcyBn b29kIHRvIG1lLCB0aGFua3MgZm9yIHRoZSB0aXBzLg0KDQpSZXYzIG9mIHRoaXMgcGF0Y2ggZG9l c24ndCBzZWVtIHRvIGJyZWFrIGFueXRoaW5nIHNpbmNlIGl0IHBhc3NlcyBib3RoIA0KZmFzdCBh bmQgZnVsbCBDSSBydW5zLiBKdXN0IG5lZWRzIGEgcmV2aWV3IGZyb20gYW55b25lIHdpbGxpbmcu DQoNCkxpa2UgbWVudGlvbmVkIGluIHByZXZpb3VzIGVtYWlscywgd2hlbiBJIGdldCBzb21lIHRp bWUgSSdkIGxpa2UgdG8gDQp1cGRhdGUgdGhlIHBsYW5lIGNyZWF0aW9uIHRvIGJlIGRvbmUgb24g Z2xvYmFsIERSTSBwbGFuZSBsaXN0IGVudGlyZWx5LiANClBpcGVzIGNvdWxkIHRoZW4gcmVmZXJl bmNlIHRoZSBsaXN0IHdpdGggaXRzIG93biBpbnRlcm5hbCBsaXN0IHBvaW50aW5nIA0KYmFjayB0 byB0aGUgZ2xvYmFsIG9uZS4NCg0KVGhlbiB0aGUgcGxhbmUgaXRlcmF0aW9uIG1hY3JvIChwZXIg cGlwZSkgY2FuIGJlIHVwZGF0ZWQgdG8gbm90IHRha2UgdGhlIA0KYWRkcmVzcyBvZiB0aGUgcGxh bmUgYnV0IGp1c3QgcmV0dXJuIHRoZSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBsaXN0Lg0KDQpU aGVyZSBhcmUgc3RpbGwgfjUgb3Igc28gcmVtYWluaW5nIHRlc3RzIHRoYXQgdXNlIHRoaXMgbGlz dCBkaXJlY3RseSANCmZyb20gd2hhdCBJIGNhbiB0ZWxsIGJ1dCB0aGV5IGNhbiBwcm9iYWJseSBi ZSB1cGRhdGVkIGFjY29yZGluZ2x5Lg0KDQpUaGVuIHRoZSBsYXN0IGJpdCBpcyB1cGRhdGluZyB0 aGUgZG9jdW1lbnRhdGlvbiB3aGVyZSBhcHByb3ByaWF0ZS4gSXQnZCANCnByb2JhYmx5IGJlIGdv b2QgdG8gbm90ZSB0aGF0IHRoZSBwaXBlcyBhcmUgc2hhcmVkIG9iamVjdHMsIHNvIGFueSBzdGF0 ZSANCm1vZGlmaWNhdGlvbnMgZnJvbSAiZGlmZmVyZW50IiBwaXBlcyB3aWxsIGFmZmVjdCBlYWNo IG90aGVyLiBOb3QgdGhhdCANCmFueXRoaW5nIHVzZXMgcGxhbmVzIGxpa2UgdGhhdCBpbiBpdHMg Y3VycmVudCBzdGF0ZSBmcm9tIHdoYXQgSSBjYW4gdGVsbC4NCg0KSSB0aGluayBpdCdzIGZpbmUg dG8gbGVhdmUgc2V0dGluZyB0aGUgcGlwZSBpbXBsaWNpdGx5IG9uIHdoZW4gc2V0dGluZyANCnRo ZSBGQiBhdCB0aGlzIHBvaW50IGJlY2F1c2UgdGhhdCdzIGdlbmVyYWxseSB3aHkgeW91J2QgYmUg c2V0dGluZyBhbiBGQiANCmluIHRoZSBmaXJzdCBwbGFjZS4gVGhlcmUncyB0aGUgbmV3IGhlbHBl ciBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2ggdGhhdCANCmxldHMgeW91IHJlYXNzaWduIHRoZSBwbGFu ZSB0byBhIGRpZmZlcmVudCBwaXBlIGV2ZW4gd2hlbiB0aGUgRkIgaXMgDQphbHJlYWR5IGJvdW5k IGluIGNhc2UgdGhhdCBmdW5jdGlvbmFsaXR5IGlzIG5lZWRlZCBzb21ld2hlcmUuDQoNCk5pY2hv bGFzIEthemxhdXNrYXMNCg0KPiANCj4+DQo+PiBIYXJyeQ0KPj4NCj4+PiAtLS0NCj4+PiAgIGxp Yi9pZ3Rfa21zLmMgfCAxMDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0NCj4+PiAgIGxpYi9pZ3Rfa21zLmggfCAgIDYgKystDQo+Pj4gICAyIGZpbGVz IGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQ0KPj4+DQo+Pj4gZGlm ZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jDQo+Pj4gaW5kZXggNzYxYmIx OTMuLmE2OGE5MDg3IDEwMDY0NA0KPj4+IC0tLSBhL2xpYi9pZ3Rfa21zLmMNCj4+PiArKysgYi9s aWIvaWd0X2ttcy5jDQo+Pj4gQEAgLTE5MDUsNiArMTkwNSwyNiBAQCB2b2lkIGlndF9kaXNwbGF5 X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkNCj4+PiAgIAlwbGFu ZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJtX2ZkKTsN Cj4+PiAgIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jlc291cmNlcyk7DQo+Pj4gICANCj4+PiArCWRpc3Bs YXktPm5fcGxhbmVzID0gcGxhbmVfcmVzb3VyY2VzLT5jb3VudF9wbGFuZXM7DQo+Pj4gKwlkaXNw bGF5LT5wbGFuZXMgPSBjYWxsb2Moc2l6ZW9mKGlndF9wbGFuZV90KSwgZGlzcGxheS0+bl9wbGFu ZXMpOw0KPj4+ICsJaWd0X2Fzc2VydF9mKGRpc3BsYXktPnBsYW5lcywgIkZhaWxlZCB0byBhbGxv Y2F0ZSBtZW1vcnkgZm9yICVkIHBsYW5lc1xuIiwgZGlzcGxheS0+bl9wbGFuZXMpOw0KPj4+ICsN Cj4+PiArCWZvciAoaSA9IDA7IGkgPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgKytp KSB7DQo+Pj4gKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJmRpc3BsYXktPnBsYW5lc1tpXTsNCj4+ PiArCQl1aW50MzJfdCBpZCA9IHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2ldOw0KPj4+ICsNCj4+ PiArCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRpc3BsYXktPmRybV9mZCwg aWQpOw0KPj4+ICsJCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7DQo+Pj4gKw0KPj4+ICsJ CXBsYW5lLT50eXBlID0gZ2V0X2RybV9wbGFuZV90eXBlKGRpc3BsYXktPmRybV9mZCwgaWQpOw0K Pj4+ICsNCj4+PiArCQkvKg0KPj4+ICsJCSAqIFRPRE86IEZpbGwgaW4gdGhlIHJlc3Qgb2YgdGhl IHBsYW5lIHByb3BlcnRpZXMgaGVyZSBhbmQNCj4+PiArCQkgKiBtb3ZlIGF3YXkgZnJvbSB0aGUg cGxhbmUgcGVyIHBpcGUgbW9kZWwgdG8gYWxpZ24gY2xvc2VyDQo+Pj4gKwkJICogdG8gdGhlIERS TSBLTVMgbW9kZWwuDQo+Pj4gKwkJICovDQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICAgCWZvcl9lYWNo X3BpcGUoZGlzcGxheSwgaSkgew0KPj4+ICAgCQlpZ3RfcGlwZV90ICpwaXBlID0gJmRpc3BsYXkt PnBpcGVzW2ldOw0KPj4+ICAgCQlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+Pj4gQEAgLTE5MjIsMTcg KzE5NDIsMTIgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9kaXNwbGF5X3QgKmRpc3Bs YXksIGludCBkcm1fZmQpDQo+Pj4gICAJCWlndF9maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlw ZSwgSUdUX05VTV9DUlRDX1BST1BTLCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsNCj4+PiAgIA0KPj4+ ICAgCQkvKiBjb3VudCBudW1iZXIgb2YgdmFsaWQgcGxhbmVzICovDQo+Pj4gLQkJZm9yIChqID0g MDsgaiA8IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOyBqKyspIHsNCj4+PiAtCQkJZHJt TW9kZVBsYW5lICpkcm1fcGxhbmU7DQo+Pj4gLQ0KPj4+IC0JCQlkcm1fcGxhbmUgPSBkcm1Nb2Rl R2V0UGxhbmUoZGlzcGxheS0+ZHJtX2ZkLA0KPj4+IC0JCQkJCQkgICAgcGxhbmVfcmVzb3VyY2Vz LT5wbGFuZXNbal0pOw0KPj4+ICsJCWZvciAoaiA9IDA7IGogPCBkaXNwbGF5LT5uX3BsYW5lczsg aisrKSB7DQo+Pj4gKwkJCWRybU1vZGVQbGFuZSAqZHJtX3BsYW5lID0gZGlzcGxheS0+cGxhbmVz W2pdLmRybV9wbGFuZTsNCj4+PiAgIAkJCWlndF9hc3NlcnQoZHJtX3BsYW5lKTsNCj4+PiAgIA0K Pj4+ICAgCQkJaWYgKGRybV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkNCj4+PiAg IAkJCQluX3BsYW5lcysrOw0KPj4+IC0NCj4+PiAtCQkJZHJtTW9kZUZyZWVQbGFuZShkcm1fcGxh bmUpOw0KPj4+ICAgCQl9DQo+Pj4gICANCj4+PiAgIAkJaWd0X2Fzc2VydF9sdCgwLCBuX3BsYW5l cyk7DQo+Pj4gQEAgLTE5NDEsMjAgKzE5NTYsMTQgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJl KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpDQo+Pj4gICAJCWxhc3RfcGxhbmUg PSBuX3BsYW5lcyAtIDE7DQo+Pj4gICANCj4+PiAgIAkJLyogYWRkIHRoZSBwbGFuZXMgdGhhdCBj YW4gYmUgdXNlZCB3aXRoIHRoYXQgcGlwZSAqLw0KPj4+IC0JCWZvciAoaiA9IDA7IGogPCBwbGFu ZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisrKSB7DQo+Pj4gLQkJCWRybU1vZGVQbGFuZSAq ZHJtX3BsYW5lOw0KPj4+IC0NCj4+PiAtCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRp c3BsYXktPmRybV9mZCwNCj4+PiAtCQkJCQkJICAgIHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2pd KTsNCj4+PiAtCQkJaWd0X2Fzc2VydChkcm1fcGxhbmUpOw0KPj4+ICsJCWZvciAoaiA9IDA7IGog PCBkaXNwbGF5LT5uX3BsYW5lczsgaisrKSB7DQo+Pj4gKwkJCWlndF9wbGFuZV90ICpnbG9iYWxf cGxhbmUgPSAmZGlzcGxheS0+cGxhbmVzW2pdOw0KPj4+ICsJCQlkcm1Nb2RlUGxhbmUgKmRybV9w bGFuZSA9IGdsb2JhbF9wbGFuZS0+ZHJtX3BsYW5lOw0KPj4+ICAgDQo+Pj4gLQkJCWlmICghKGRy bV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpIHsNCj4+PiAtCQkJCWRybU1vZGVG cmVlUGxhbmUoZHJtX3BsYW5lKTsNCj4+PiArCQkJaWYgKCEoZHJtX3BsYW5lLT5wb3NzaWJsZV9j cnRjcyAmICgxIDw8IGkpKSkNCj4+PiAgIAkJCQljb250aW51ZTsNCj4+PiAtCQkJfQ0KPj4+ICAg DQo+Pj4gLQkJCXR5cGUgPSBnZXRfZHJtX3BsYW5lX3R5cGUoZGlzcGxheS0+ZHJtX2ZkLA0KPj4+ IC0JCQkJCQkgIHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2pdKTsNCj4+PiArCQkJdHlwZSA9IGds b2JhbF9wbGFuZS0+dHlwZTsNCj4+PiAgIA0KPj4+ICAgCQkJaWYgKHR5cGUgPT0gRFJNX1BMQU5F X1RZUEVfUFJJTUFSWSAmJiBwaXBlLT5wbGFuZV9wcmltYXJ5ID09IC0xKSB7DQo+Pj4gICAJCQkJ cGxhbmUgPSAmcGlwZS0+cGxhbmVzWzBdOw0KPj4+IEBAIC0xOTc1LDYgKzE5ODQsMTQgQEAgdm9p ZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQp DQo+Pj4gICAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7DQo+Pj4gICAJCQlwbGFuZS0+ZHJtX3BsYW5l ID0gZHJtX3BsYW5lOw0KPj4+ICAgCQkJcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0Vf RkRdID0gfjBVTEw7DQo+Pj4gKwkJCXBsYW5lLT5yZWYgPSBnbG9iYWxfcGxhbmU7DQo+Pj4gKw0K Pj4+ICsJCQkvKg0KPj4+ICsJCQkgKiBIQUNLOiBwb2ludCB0aGUgZ2xvYmFsIHBsYW5lIHRvIHRo ZSBmaXJzdCBwaXBlIHRoYXQNCj4+PiArCQkJICogaXQgY2FuIGdvIG9uLg0KPj4+ICsJCQkgKi8N Cj4+PiArCQkJaWYgKCFnbG9iYWxfcGxhbmUtPnJlZikNCj4+PiArCQkJCWlndF9wbGFuZV9zZXRf cGlwZShwbGFuZSwgcGlwZSk7DQo+Pj4gICANCj4+PiAgIAkJCWlndF9maWxsX3BsYW5lX3Byb3Bz KGRpc3BsYXksIHBsYW5lLCBJR1RfTlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1l cyk7DQo+Pj4gICANCj4+PiBAQCAtMjEyNywxNyArMjE0NCw2IEBAIGlndF9vdXRwdXRfdCAqaWd0 X291dHB1dF9mcm9tX2Nvbm5lY3RvcihpZ3RfZGlzcGxheV90ICpkaXNwbGF5LA0KPj4+ICAgDQo+ Pj4gICBzdGF0aWMgdm9pZCBpZ3RfcGlwZV9maW5pKGlndF9waXBlX3QgKnBpcGUpDQo+Pj4gICB7 DQo+Pj4gLQlpbnQgaTsNCj4+PiAtDQo+Pj4gLQlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFu ZXM7IGkrKykgew0KPj4+IC0JCWlndF9wbGFuZV90ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07 DQo+Pj4gLQ0KPj4+IC0JCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7DQo+Pj4gLQkJCWRybU1vZGVG cmVlUGxhbmUocGxhbmUtPmRybV9wbGFuZSk7DQo+Pj4gLQkJCXBsYW5lLT5kcm1fcGxhbmUgPSBO VUxMOw0KPj4+IC0JCX0NCj4+PiAtCX0NCj4+PiAtDQo+Pj4gICAJZnJlZShwaXBlLT5wbGFuZXMp Ow0KPj4+ICAgCXBpcGUtPnBsYW5lcyA9IE5VTEw7DQo+Pj4gICANCj4+PiBAQCAtMjE2Myw2ICsy MTY5LDE1IEBAIHZvaWQgaWd0X2Rpc3BsYXlfZmluaShpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQ0K Pj4+ICAgew0KPj4+ICAgCWludCBpOw0KPj4+ICAgDQo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgZGlz cGxheS0+bl9wbGFuZXM7ICsraSkgew0KPj4+ICsJCWlndF9wbGFuZV90ICpwbGFuZSA9ICZkaXNw bGF5LT5wbGFuZXNbaV07DQo+Pj4gKw0KPj4+ICsJCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7DQo+ Pj4gKwkJCWRybU1vZGVGcmVlUGxhbmUocGxhbmUtPmRybV9wbGFuZSk7DQo+Pj4gKwkJCXBsYW5l LT5kcm1fcGxhbmUgPSBOVUxMOw0KPj4+ICsJCX0NCj4+PiArCX0NCj4+PiArDQo+Pj4gICAJZm9y IChpID0gMDsgaSA8IGRpc3BsYXktPm5fcGlwZXM7IGkrKykNCj4+PiAgIAkJaWd0X3BpcGVfZmlu aSgmZGlzcGxheS0+cGlwZXNbaV0pOw0KPj4+ICAgDQo+Pj4gQEAgLTIxNzIsNiArMjE4Nyw4IEBA IHZvaWQgaWd0X2Rpc3BsYXlfZmluaShpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQ0KPj4+ICAgCWRp c3BsYXktPm91dHB1dHMgPSBOVUxMOw0KPj4+ICAgCWZyZWUoZGlzcGxheS0+cGlwZXMpOw0KPj4+ ICAgCWRpc3BsYXktPnBpcGVzID0gTlVMTDsNCj4+PiArCWZyZWUoZGlzcGxheS0+cGxhbmVzKTsN Cj4+PiArCWRpc3BsYXktPnBsYW5lcyA9IE5VTEw7DQo+Pj4gICB9DQo+Pj4gICANCj4+PiAgIHN0 YXRpYyB2b2lkIGlndF9kaXNwbGF5X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSkNCj4+ PiBAQCAtMjc4OSw2ICsyODA2LDEwIEBAIHN0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9w aXBlX3QgKnBpcGUsDQo+Pj4gICAJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBpKysp IHsNCj4+PiAgIAkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsNCj4+PiAg IA0KPj4+ICsJCS8qIHNraXAgcGxhbmVzIHRoYXQgYXJlIGhhbmRsZWQgYnkgYW5vdGhlciBwaXBl ICovDQo+Pj4gKwkJaWYgKHBsYW5lLT5yZWYtPnBpcGUgIT0gcGlwZSkNCj4+PiArCQkJY29udGlu dWU7DQo+Pj4gKw0KPj4+ICAgCQlyZXQgPSBpZ3RfcGxhbmVfY29tbWl0KHBsYW5lLCBwaXBlLCBz LCBmYWlsX29uX2Vycm9yKTsNCj4+PiAgIAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJv cik7DQo+Pj4gICAJfQ0KPj4+IEBAIC0zMTc3LDYgKzMxOTgsMTAgQEAgc3RhdGljIGludCBpZ3Rf YXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCB1aW50MzJfdCBmbGFncywgdm9p ZCAqdXNlcl8NCj4+PiAgIAkJCWlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChwaXBlX29i aiwgcmVxKTsNCj4+PiAgIA0KPj4+ICAgCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXks IHBpcGUsIHBsYW5lKSB7DQo+Pj4gKwkJCS8qIHNraXAgcGxhbmVzIHRoYXQgYXJlIGhhbmRsZWQg YnkgYW5vdGhlciBwaXBlICovDQo+Pj4gKwkJCWlmIChwbGFuZS0+cmVmLT5waXBlICE9IHBpcGVf b2JqKQ0KPj4+ICsJCQkJY29udGludWU7DQo+Pj4gKw0KPj4+ICAgCQkJaWYgKHBsYW5lLT5jaGFu Z2VkKQ0KPj4+ICAgCQkJCWlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQocGxhbmUsIHBp cGVfb2JqLCByZXEpOw0KPj4+ICAgCQl9DQo+Pj4gQEAgLTM3MDksNiArMzczNCw5IEBAIHZvaWQg aWd0X3BsYW5lX3NldF9mYihpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0cnVjdCBpZ3RfZmIgKmZiKQ0K Pj4+ICAgCQlpZiAoaWd0X3BsYW5lX2hhc19wcm9wKHBsYW5lLCBJR1RfUExBTkVfQ09MT1JfUkFO R0UpKQ0KPj4+ICAgCQkJaWd0X3BsYW5lX3NldF9wcm9wX2VudW0ocGxhbmUsIElHVF9QTEFORV9D T0xPUl9SQU5HRSwNCj4+PiAgIAkJCQlpZ3RfY29sb3JfcmFuZ2VfdG9fc3RyKGZiLT5jb2xvcl9y YW5nZSkpOw0KPj4+ICsNCj4+PiArCQkvKiBIYWNrIHRvIHByaW9yaXRpemUgdGhlIHBsYW5lIG9u IHRoZSBwaXBlIHRoYXQgbGFzdCBzZXQgZmIgKi8NCj4+PiArCQlpZ3RfcGxhbmVfc2V0X3BpcGUo cGxhbmUsIHBpcGUpOw0KPj4+ICAgCX0gZWxzZSB7DQo+Pj4gICAJCWlndF9wbGFuZV9zZXRfc2l6 ZShwbGFuZSwgMCwgMCk7DQo+Pj4gICANCj4+PiBAQCAtMzc0Myw2ICszNzcxLDIzIEBAIHZvaWQg aWd0X3BsYW5lX3NldF9mZW5jZV9mZChpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCBmZW5jZV9mZCkN Cj4+PiAgIAlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9JTl9GRU5D RV9GRCwgZmQpOw0KPj4+ICAgfQ0KPj4+ICAgDQo+Pj4gKy8qKg0KPj4+ICsgKiBpZ3RfcGxhbmVf c2V0X3BpcGU6DQo+Pj4gKyAqIEBwbGFuZTogVGFyZ2V0IHBsYW5lIHBvaW50ZXINCj4+PiArICog QHBpcGU6IFRoZSBwaXBlIHRvIGFzc2lnbiB0aGUgcGxhbmUgdG8NCj4+PiArICoNCj4+PiArICov DQo+Pj4gK3ZvaWQgaWd0X3BsYW5lX3NldF9waXBlKGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X3Bp cGVfdCAqcGlwZSkNCj4+PiArew0KPj4+ICsJLyoNCj4+PiArCSAqIEhBQ0s6IFBvaW50IHRoZSBn bG9iYWwgcGxhbmUgYmFjayB0byB0aGUgbG9jYWwgcGxhbmUuDQo+Pj4gKwkgKiBUaGlzIGlzIHVz ZWQgdG8gaGVscCBhcHBseSB0aGUgY29ycmVjdCBhdG9taWMgc3RhdGUgd2hpbGUNCj4+PiArCSAq IHdlJ3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIHNpbmdsZSBwaXBlIHBlciBwbGFuZSBtb2RlbC4N Cj4+PiArCSAqLw0KPj4+ICsJcGxhbmUtPnJlZi0+cmVmID0gcGxhbmU7DQo+Pj4gKwlwbGFuZS0+ cmVmLT5waXBlID0gcGlwZTsNCj4+PiArfQ0KPj4+ICsNCj4+PiAgIC8qKg0KPj4+ICAgICogaWd0 X3BsYW5lX3NldF9wb3NpdGlvbjoNCj4+PiAgICAqIEBwbGFuZTogUGxhbmUgcG9pbnRlciBmb3Ig d2hpY2ggcG9zaXRpb24gaXMgdG8gYmUgc2V0DQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21z LmggYi9saWIvaWd0X2ttcy5oDQo+Pj4gaW5kZXggNTc1NWIxNjAuLmUxYzVjOTY3IDEwMDY0NA0K Pj4+IC0tLSBhL2xpYi9pZ3Rfa21zLmgNCj4+PiArKysgYi9saWIvaWd0X2ttcy5oDQo+Pj4gQEAg LTMwMCw5ICszMDAsMTAgQEAgdHlwZWRlZiBlbnVtIHsNCj4+PiAgICNkZWZpbmUgSUdUX1JPVEFU SU9OX01BU0sgXA0KPj4+ICAgCShJR1RfUk9UQVRJT05fMCB8IElHVF9ST1RBVElPTl85MCB8IElH VF9ST1RBVElPTl8xODAgfCBJR1RfUk9UQVRJT05fMjcwKQ0KPj4+ICAgDQo+Pj4gLXR5cGVkZWYg c3RydWN0IHsNCj4+PiArdHlwZWRlZiBzdHJ1Y3QgaWd0X3BsYW5lIHsNCj4+PiAgIAkvKjwgcHJp dmF0ZSA+Ki8NCj4+PiAgIAlpZ3RfcGlwZV90ICpwaXBlOw0KPj4+ICsJc3RydWN0IGlndF9wbGFu ZSAqcmVmOw0KPj4+ICAgCWludCBpbmRleDsNCj4+PiAgIAkvKiBjYXBhYmlsaXRpZXMgKi8NCj4+ PiAgIAlpbnQgdHlwZTsNCj4+PiBAQCAtMzcyLDggKzM3MywxMCBAQCBzdHJ1Y3QgaWd0X2Rpc3Bs YXkgew0KPj4+ICAgCWludCBkcm1fZmQ7DQo+Pj4gICAJaW50IGxvZ19zaGlmdDsNCj4+PiAgIAlp bnQgbl9waXBlczsNCj4+PiArCWludCBuX3BsYW5lczsNCj4+PiAgIAlpbnQgbl9vdXRwdXRzOw0K Pj4+ICAgCWlndF9vdXRwdXRfdCAqb3V0cHV0czsNCj4+PiArCWlndF9wbGFuZV90ICpwbGFuZXM7 DQo+Pj4gICAJaWd0X3BpcGVfdCAqcGlwZXM7DQo+Pj4gICAJYm9vbCBoYXNfY3Vyc29yX3BsYW5l Ow0KPj4+ICAgCWJvb2wgaXNfYXRvbWljOw0KPj4+IEBAIC00MTMsNiArNDE2LDcgQEAgdm9pZCBp Z3RfcGlwZV9yZXF1ZXN0X291dF9mZW5jZShpZ3RfcGlwZV90ICpwaXBlKTsNCj4+PiAgIA0KPj4+ ICAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwgc3RydWN0IGlndF9m YiAqZmIpOw0KPj4+ICAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKGlndF9wbGFuZV90ICpw bGFuZSwgaW50IGZlbmNlX2ZkKTsNCj4+PiArdm9pZCBpZ3RfcGxhbmVfc2V0X3BpcGUoaWd0X3Bs YW5lX3QgKnBsYW5lLCBpZ3RfcGlwZV90ICpwaXBlKTsNCj4+PiAgIHZvaWQgaWd0X3BsYW5lX3Nl dF9wb3NpdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB4LCBpbnQgeSk7DQo+Pj4gICB2b2lk IGlndF9wbGFuZV9zZXRfc2l6ZShpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB3LCBpbnQgaCk7DQo+ Pj4gICB2b2lkIGlndF9wbGFuZV9zZXRfcm90YXRpb24oaWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3Rf cm90YXRpb25fdCByb3RhdGlvbik7DQo+Pj4NCj4gDQoNCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldg==