From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-eopbgr730088.outbound.protection.outlook.com [40.107.73.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 69A1D6E0E5 for ; Wed, 27 Feb 2019 20:13:40 +0000 (UTC) From: "Wentland, Harry" Date: Wed, 27 Feb 2019 20:13:37 +0000 Message-ID: <94fd8aa7-e390-17c6-e7ba-4a55387c58f5@amd.com> References: <20190225154219.8300-1-nicholas.kazlauskas@amd.com> In-Reply-To: <20190225154219.8300-1-nicholas.kazlauskas@amd.com> Content-Language: en-US Content-ID: <92A5CE3EE0EE534B8A23C4FC3E01BB02@namprd12.prod.outlook.com> 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: "Kazlauskas, Nicholas" , "igt-dev@lists.freedesktop.org" Cc: Daniel Vetter List-ID: T24gMjAxOS0wMi0yNSAxMDo0MiBhLm0uLCBOaWNob2xhcyBLYXpsYXVza2FzIHdyb3RlOg0KPiBB biBpZ3RfcGxhbmVfdCBpcyBkZWZpbmVkIHBlciBpZ3RfcGlwZV90LiBJdCBpcyB0cmVhdGVkIGFz IGl0cw0KPiBvd24gaW5kZXBlbmRlbnQgcmVzb3VyY2UgYnV0IERSTSBwbGFuZXMgY2FuIGJlIGV4 cG9zZWQgdG8gYmVpbmcgdXNlZCBvbg0KPiBhIG51bWJlciBvZiBwb3NzaWJsZSBDUlRDcyAtIG1h a2luZyBpdCBhIHNoYXJlZCByZXNvdXJjZS4NCj4gDQo+IEluIElHVCBwbGFuZXMgd2l0aCBtdWx0 aXBsZSBwb3NzaWJsZSBDUlRDcyBhcmUgYWRkZWQgdG8gdGhlIHBsYW5lIGxpc3QNCj4gZm9yIGVh Y2ggcGlwZSB0aGF0IHRoZSBwbGFuZSBzdXBwb3J0cy4gVGhlIGludGVybmFsIHN0YXRlIHJlbWFp bnMNCj4gaW5kZXBlbmRlbnQgaW4gSUdUIHNvIHdoZW4gdGhlIHNhbWUgcGxhbmUgaXMgbW9kaWZp ZWQgZm9yIG11bHRpcGxlDQo+IHBpcGVzIGluIGEgc2luZ2xlIGNvbW1pdCB0aGUgbGFzdCBwaXBl IHRvIG1vZGlmeSBpdCBpcyB0aGUgb25lIHdob3NlDQo+IHN0YXRlIGdldHMgZnVsbHkgYXBwbGll ZC4NCj4gDQo+IFRoaXMgc2l0dWF0aW9uIGhhcHBlbnMgZmFpcmx5IG9mdGVuIGluIHByYWN0aWNl IC0gcmVzZXR0aW5nIHRoZSBkaXNwbGF5DQo+IGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdCBiZWZv cmUgYSBjb21taXQgd2lsbCByZXNldCB0aGUgQ1JUQyBJRCBhbmQgRkINCj4gSUQgZm9yIGVhY2gg cGxhbmUuDQo+IA0KPiBGb3IgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlDQo+IGlndEBrbXNfcGxh bmVfYWxwaGFfYmxlbmRAcGlwZS1hLWNvbnN0YW50LWFscGhhLW1heCB0ZXN0Lg0KPiANCj4gVGhp cyB0ZXN0IHdpbGwgZmFpbCBmb3IgYW55IG92ZXJsYXkgcGxhbmUgZXhwb3NlZCBmb3IgbXVsdGlw bGUgQ1JUQ3MuDQo+IA0KPiBUaGUgdGVzdCB0cmllcyB0byBzZXQgYSBmcmFtZWJ1ZmZlciBmb3Ig cGlwZSBBIGJ1dCBoYXMgYWxsIHRoZSBvdGhlcg0KPiBwaXBlcyByZXNldCB0aGUgcGxhbmUgc3Rh dGUgaW4gdGhlIHNhbWUgY29tbWl0LiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUNCj4gcGlwZXMgb24g dGhlIGhhcmR3YXJlIHRoZW4gdGhlIGxhc3QgcGlwZSB3aWxsIGJlIHRoZSBvbmUgdG8gc2V0IGFs bCB0aGUNCj4gcGxhbmUgcHJvcGVydGllcy4gVGhlIGRyaXZlciB3aWxsIHJlY2VpdmUgYSBjb21t aXQgd2l0aCBubyBvdmVybGF5DQo+IHBsYW5lIGVuYWJsZWQgc2luY2UgdGhlIGxhc3QgcGlwZSBz ZXQgQ1JUQyBJRCBhbmQgRkIgSUQgdG8gMCwgZGlzYWJsaW5nDQo+IHRoZSBwbGFuZS4gVGhlIHJl ZmVyZW5jZSBDUkMgY2FwdHVyZSB3aWxsIGJlIGluY29ycmVjdCBzaW5jZSBub3QgYWxsDQo+IHRo ZSBwbGFuZXMgaGF2ZSBiZWVuIGVuYWJsZWQgYW5kIHRoZSBzdWJzZXF1ZW50IENSQyBjYXB0dXJl cyB3aWxsDQo+IG5vdCBtYXRjaCwgZmFpbGluZyB0aGUgdGVzdC4NCj4gDQo+IFRoZSBzaW1wbGVz dCAoYnV0IGhhY2t5KSBmaXggdG8gdGhpcyBwcm9ibGVtIGlzIHRvIG9ubHkgc2V0IHRoZQ0KPiBw cm9wZXJ0aWVzIGZvciB0aGUgcGxhbmUgZm9yIHRoZSBwaXBlIHRoYXQgbGFzdCBoYWQgaXQgYm91 bmQuDQo+IA0KPiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBnbG9iYWwgcGxhbmUgbGlzdCBvbiBp Z3RfZGlzcGxheV90IHRoYXQga2VlcHMNCj4gdHJhY2sgb2YgdGhlIHBpcGUgdGhhdCBwaXBlIHRo YXQgbGFzdCBjYWxsZWQgaWd0X3BsYW5lX3NldF9mYi4gVGhlDQo+IHByb3BlcnRpZXMgZm9yIHRo ZSBwbGFuZSB3aWxsIG9ubHkgYmUgYXBwbGllZCBmcm9tIHRoYXQgc2luZ2xlIHBpcGUNCj4gd2hl biBjb21taXRpbmcgdGhlIHN0YXRlIHRvIERSTS4NCj4gDQo+IE5vIGJlaGF2aW9yYWwgY2hhbmdl cyBzaG91bGQgYmUgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGZvciBoYXJkd2FyZQ0KPiB3aG9z ZSBwbGFuZXMgYXJlIG9ubHkgZXZlciBleHBvc2VkIG9uZSBDUlRDLg0KPiANCj4gSXQgd291bGQg bGlrZWx5IGJlIGJlc3QgdG8gZXZlbnR1YWxseSBtb2RpZnkgdGhlIGlndF9waXBlX3QgcGxhbmUg bGlzdA0KPiB0byBiZSBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8gcGxhbmVzIGluc3RlYWQgKGlndF9w bGFuZV90KiopDQo+IGluc3RlYWQgb2YgYmVpbmcgdGhlIGFjdHVhbCBwbGFuZSBvYmplY3RzLCBi dXQgdGhhdCBjYW4gY29tZSBsYXRlci4NCj4gDQo+IE1hbnkgYXJlYXMgb2YgdGhlIGNvZGUgbGlr ZSB0byBtYWtlIHVzZSBvZiB0aGUgYmFja3BvaW50ZXIgdG8gdGhlIHBpcGUNCj4gb24gdGhlIHBs YW5lIHdoaWNoIG1ha2VzIHJlZmFjdG9yaW5nIHRoZSBjb2RlIGluIHRoYXQgbWFubmVyIGEgbGl0 dGxlDQo+IHRyaWNraWVyLg0KPiANCj4gdjI6IEFkZCBpZ3RfcGxhbmVfc2V0X2ZiLCB1c2UgaWd0 X3BsYW5lX3QgZm9yIGdsb2JhbCBwbGFuZSBsaXN0IChEYW5pZWwpDQo+IHYzOiBMZWF2ZSBUT0RP IGZvciBmaWxsaW5nIGluIGFsbCBzdGF0ZS9wcm9wcyBvbiBnbG9iYWwgcGxhbmVzDQo+IA0KPiBD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPg0KPiBTaWduZWQtb2ZmLWJ5OiBOaWNo b2xhcyBLYXpsYXVza2FzIDxuaWNob2xhcy5rYXpsYXVza2FzQGFtZC5jb20+DQoNCkFja2VkLWJ5 OiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4NCg0KRGFuaWVsLCBwaW5n Lg0KDQpIYXJyeQ0KDQo+IC0tLQ0KPiAgbGliL2lndF9rbXMuYyB8IDEwMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQ0KPiAgbGliL2lndF9rbXMuaCB8 ICAgNiArKy0NCj4gIDIgZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRp b25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMN Cj4gaW5kZXggNzYxYmIxOTMuLmE2OGE5MDg3IDEwMDY0NA0KPiAtLS0gYS9saWIvaWd0X2ttcy5j DQo+ICsrKyBiL2xpYi9pZ3Rfa21zLmMNCj4gQEAgLTE5MDUsNiArMTkwNSwyNiBAQCB2b2lkIGln dF9kaXNwbGF5X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkNCj4g IAlwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJt X2ZkKTsNCj4gIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jlc291cmNlcyk7DQo+ICANCj4gKwlkaXNwbGF5 LT5uX3BsYW5lcyA9IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOw0KPiArCWRpc3BsYXkt PnBsYW5lcyA9IGNhbGxvYyhzaXplb2YoaWd0X3BsYW5lX3QpLCBkaXNwbGF5LT5uX3BsYW5lcyk7 DQo+ICsJaWd0X2Fzc2VydF9mKGRpc3BsYXktPnBsYW5lcywgIkZhaWxlZCB0byBhbGxvY2F0ZSBt ZW1vcnkgZm9yICVkIHBsYW5lc1xuIiwgZGlzcGxheS0+bl9wbGFuZXMpOw0KPiArDQo+ICsJZm9y IChpID0gMDsgaSA8IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOyArK2kpIHsNCj4gKwkJ aWd0X3BsYW5lX3QgKnBsYW5lID0gJmRpc3BsYXktPnBsYW5lc1tpXTsNCj4gKwkJdWludDMyX3Qg aWQgPSBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tpXTsNCj4gKw0KPiArCQlwbGFuZS0+ZHJtX3Bs YW5lID0gZHJtTW9kZUdldFBsYW5lKGRpc3BsYXktPmRybV9mZCwgaWQpOw0KPiArCQlpZ3RfYXNz ZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOw0KPiArDQo+ICsJCXBsYW5lLT50eXBlID0gZ2V0X2RybV9w bGFuZV90eXBlKGRpc3BsYXktPmRybV9mZCwgaWQpOw0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIFRP RE86IEZpbGwgaW4gdGhlIHJlc3Qgb2YgdGhlIHBsYW5lIHByb3BlcnRpZXMgaGVyZSBhbmQNCj4g KwkJICogbW92ZSBhd2F5IGZyb20gdGhlIHBsYW5lIHBlciBwaXBlIG1vZGVsIHRvIGFsaWduIGNs b3Nlcg0KPiArCQkgKiB0byB0aGUgRFJNIEtNUyBtb2RlbC4NCj4gKwkJICovDQo+ICsJfQ0KPiAr DQo+ICAJZm9yX2VhY2hfcGlwZShkaXNwbGF5LCBpKSB7DQo+ICAJCWlndF9waXBlX3QgKnBpcGUg PSAmZGlzcGxheS0+cGlwZXNbaV07DQo+ICAJCWlndF9wbGFuZV90ICpwbGFuZTsNCj4gQEAgLTE5 MjIsMTcgKzE5NDIsMTIgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksIGludCBkcm1fZmQpDQo+ICAJCWlndF9maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwg cGlwZSwgSUdUX05VTV9DUlRDX1BST1BTLCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsNCj4gIA0KPiAg CQkvKiBjb3VudCBudW1iZXIgb2YgdmFsaWQgcGxhbmVzICovDQo+IC0JCWZvciAoaiA9IDA7IGog PCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisrKSB7DQo+IC0JCQlkcm1Nb2RlUGxh bmUgKmRybV9wbGFuZTsNCj4gLQ0KPiAtCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRp c3BsYXktPmRybV9mZCwNCj4gLQkJCQkJCSAgICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7 DQo+ICsJCWZvciAoaiA9IDA7IGogPCBkaXNwbGF5LT5uX3BsYW5lczsgaisrKSB7DQo+ICsJCQlk cm1Nb2RlUGxhbmUgKmRybV9wbGFuZSA9IGRpc3BsYXktPnBsYW5lc1tqXS5kcm1fcGxhbmU7DQo+ ICAJCQlpZ3RfYXNzZXJ0KGRybV9wbGFuZSk7DQo+ICANCj4gIAkJCWlmIChkcm1fcGxhbmUtPnBv c3NpYmxlX2NydGNzICYgKDEgPDwgaSkpDQo+ICAJCQkJbl9wbGFuZXMrKzsNCj4gLQ0KPiAtCQkJ ZHJtTW9kZUZyZWVQbGFuZShkcm1fcGxhbmUpOw0KPiAgCQl9DQo+ICANCj4gIAkJaWd0X2Fzc2Vy dF9sdCgwLCBuX3BsYW5lcyk7DQo+IEBAIC0xOTQxLDIwICsxOTU2LDE0IEBAIHZvaWQgaWd0X2Rp c3BsYXlfcmVxdWlyZShpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQ0KPiAgCQls YXN0X3BsYW5lID0gbl9wbGFuZXMgLSAxOw0KPiAgDQo+ICAJCS8qIGFkZCB0aGUgcGxhbmVzIHRo YXQgY2FuIGJlIHVzZWQgd2l0aCB0aGF0IHBpcGUgKi8NCj4gLQkJZm9yIChqID0gMDsgaiA8IHBs YW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOyBqKyspIHsNCj4gLQkJCWRybU1vZGVQbGFuZSAq ZHJtX3BsYW5lOw0KPiAtDQo+IC0JCQlkcm1fcGxhbmUgPSBkcm1Nb2RlR2V0UGxhbmUoZGlzcGxh eS0+ZHJtX2ZkLA0KPiAtCQkJCQkJICAgIHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2pdKTsNCj4g LQkJCWlndF9hc3NlcnQoZHJtX3BsYW5lKTsNCj4gKwkJZm9yIChqID0gMDsgaiA8IGRpc3BsYXkt Pm5fcGxhbmVzOyBqKyspIHsNCj4gKwkJCWlndF9wbGFuZV90ICpnbG9iYWxfcGxhbmUgPSAmZGlz cGxheS0+cGxhbmVzW2pdOw0KPiArCQkJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmUgPSBnbG9iYWxf cGxhbmUtPmRybV9wbGFuZTsNCj4gIA0KPiAtCQkJaWYgKCEoZHJtX3BsYW5lLT5wb3NzaWJsZV9j cnRjcyAmICgxIDw8IGkpKSkgew0KPiAtCQkJCWRybU1vZGVGcmVlUGxhbmUoZHJtX3BsYW5lKTsN Cj4gKwkJCWlmICghKGRybV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpDQo+ICAJ CQkJY29udGludWU7DQo+IC0JCQl9DQo+ICANCj4gLQkJCXR5cGUgPSBnZXRfZHJtX3BsYW5lX3R5 cGUoZGlzcGxheS0+ZHJtX2ZkLA0KPiAtCQkJCQkJICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tq XSk7DQo+ICsJCQl0eXBlID0gZ2xvYmFsX3BsYW5lLT50eXBlOw0KPiAgDQo+ICAJCQlpZiAodHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZICYmIHBpcGUtPnBsYW5lX3ByaW1hcnkgPT0gLTEp IHsNCj4gIAkJCQlwbGFuZSA9ICZwaXBlLT5wbGFuZXNbMF07DQo+IEBAIC0xOTc1LDYgKzE5ODQs MTQgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlu dCBkcm1fZmQpDQo+ICAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7DQo+ICAJCQlwbGFuZS0+ZHJtX3Bs YW5lID0gZHJtX3BsYW5lOw0KPiAgCQkJcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0Vf RkRdID0gfjBVTEw7DQo+ICsJCQlwbGFuZS0+cmVmID0gZ2xvYmFsX3BsYW5lOw0KPiArDQo+ICsJ CQkvKg0KPiArCQkJICogSEFDSzogcG9pbnQgdGhlIGdsb2JhbCBwbGFuZSB0byB0aGUgZmlyc3Qg cGlwZSB0aGF0DQo+ICsJCQkgKiBpdCBjYW4gZ28gb24uDQo+ICsJCQkgKi8NCj4gKwkJCWlmICgh Z2xvYmFsX3BsYW5lLT5yZWYpDQo+ICsJCQkJaWd0X3BsYW5lX3NldF9waXBlKHBsYW5lLCBwaXBl KTsNCj4gIA0KPiAgCQkJaWd0X2ZpbGxfcGxhbmVfcHJvcHMoZGlzcGxheSwgcGxhbmUsIElHVF9O VU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVzKTsNCj4gIA0KPiBAQCAtMjEyNywx NyArMjE0NCw2IEBAIGlndF9vdXRwdXRfdCAqaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5LA0KPiAgDQo+ICBzdGF0aWMgdm9pZCBpZ3RfcGlwZV9maW5pKGln dF9waXBlX3QgKnBpcGUpDQo+ICB7DQo+IC0JaW50IGk7DQo+IC0NCj4gLQlmb3IgKGkgPSAwOyBp IDwgcGlwZS0+bl9wbGFuZXM7IGkrKykgew0KPiAtCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlw ZS0+cGxhbmVzW2ldOw0KPiAtDQo+IC0JCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7DQo+IC0JCQlk cm1Nb2RlRnJlZVBsYW5lKHBsYW5lLT5kcm1fcGxhbmUpOw0KPiAtCQkJcGxhbmUtPmRybV9wbGFu ZSA9IE5VTEw7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4gIAlmcmVlKHBpcGUtPnBsYW5lcyk7DQo+ ICAJcGlwZS0+cGxhbmVzID0gTlVMTDsNCj4gIA0KPiBAQCAtMjE2Myw2ICsyMTY5LDE1IEBAIHZv aWQgaWd0X2Rpc3BsYXlfZmluaShpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQ0KPiAgew0KPiAgCWlu dCBpOw0KPiAgDQo+ICsJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fcGxhbmVzOyArK2kpIHsN Cj4gKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJmRpc3BsYXktPnBsYW5lc1tpXTsNCj4gKw0KPiAr CQlpZiAocGxhbmUtPmRybV9wbGFuZSkgew0KPiArCQkJZHJtTW9kZUZyZWVQbGFuZShwbGFuZS0+ ZHJtX3BsYW5lKTsNCj4gKwkJCXBsYW5lLT5kcm1fcGxhbmUgPSBOVUxMOw0KPiArCQl9DQo+ICsJ fQ0KPiArDQo+ICAJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fcGlwZXM7IGkrKykNCj4gIAkJ aWd0X3BpcGVfZmluaSgmZGlzcGxheS0+cGlwZXNbaV0pOw0KPiAgDQo+IEBAIC0yMTcyLDYgKzIx ODcsOCBAQCB2b2lkIGlndF9kaXNwbGF5X2ZpbmkoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSkNCj4g IAlkaXNwbGF5LT5vdXRwdXRzID0gTlVMTDsNCj4gIAlmcmVlKGRpc3BsYXktPnBpcGVzKTsNCj4g IAlkaXNwbGF5LT5waXBlcyA9IE5VTEw7DQo+ICsJZnJlZShkaXNwbGF5LT5wbGFuZXMpOw0KPiAr CWRpc3BsYXktPnBsYW5lcyA9IE5VTEw7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIGlndF9k aXNwbGF5X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSkNCj4gQEAgLTI3ODksNiArMjgw NiwxMCBAQCBzdGF0aWMgaW50IGlndF9waXBlX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBlLA0KPiAg CWZvciAoaSA9IDA7IGkgPCBwaXBlLT5uX3BsYW5lczsgaSsrKSB7DQo+ICAJCWlndF9wbGFuZV90 ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07DQo+ICANCj4gKwkJLyogc2tpcCBwbGFuZXMgdGhh dCBhcmUgaGFuZGxlZCBieSBhbm90aGVyIHBpcGUgKi8NCj4gKwkJaWYgKHBsYW5lLT5yZWYtPnBp cGUgIT0gcGlwZSkNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICAJCXJldCA9IGlndF9wbGFuZV9j b21taXQocGxhbmUsIHBpcGUsIHMsIGZhaWxfb25fZXJyb3IpOw0KPiAgCQlDSEVDS19SRVRVUk4o cmV0LCBmYWlsX29uX2Vycm9yKTsNCj4gIAl9DQo+IEBAIC0zMTc3LDYgKzMxOTgsMTAgQEAgc3Rh dGljIGludCBpZ3RfYXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCB1aW50MzJf dCBmbGFncywgdm9pZCAqdXNlcl8NCj4gIAkJCWlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1p dChwaXBlX29iaiwgcmVxKTsNCj4gIA0KPiAgCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3Bs YXksIHBpcGUsIHBsYW5lKSB7DQo+ICsJCQkvKiBza2lwIHBsYW5lcyB0aGF0IGFyZSBoYW5kbGVk IGJ5IGFub3RoZXIgcGlwZSAqLw0KPiArCQkJaWYgKHBsYW5lLT5yZWYtPnBpcGUgIT0gcGlwZV9v YmopDQo+ICsJCQkJY29udGludWU7DQo+ICsNCj4gIAkJCWlmIChwbGFuZS0+Y2hhbmdlZCkNCj4g IAkJCQlpZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29tbWl0KHBsYW5lLCBwaXBlX29iaiwgcmVx KTsNCj4gIAkJfQ0KPiBAQCAtMzcwOSw2ICszNzM0LDkgQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X2Zi KGlndF9wbGFuZV90ICpwbGFuZSwgc3RydWN0IGlndF9mYiAqZmIpDQo+ICAJCWlmIChpZ3RfcGxh bmVfaGFzX3Byb3AocGxhbmUsIElHVF9QTEFORV9DT0xPUl9SQU5HRSkpDQo+ICAJCQlpZ3RfcGxh bmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BMQU5FX0NPTE9SX1JBTkdFLA0KPiAgCQkJCWln dF9jb2xvcl9yYW5nZV90b19zdHIoZmItPmNvbG9yX3JhbmdlKSk7DQo+ICsNCj4gKwkJLyogSGFj ayB0byBwcmlvcml0aXplIHRoZSBwbGFuZSBvbiB0aGUgcGlwZSB0aGF0IGxhc3Qgc2V0IGZiICov DQo+ICsJCWlndF9wbGFuZV9zZXRfcGlwZShwbGFuZSwgcGlwZSk7DQo+ICAJfSBlbHNlIHsNCj4g IAkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCAwLCAwKTsNCj4gIA0KPiBAQCAtMzc0Myw2ICsz NzcxLDIzIEBAIHZvaWQgaWd0X3BsYW5lX3NldF9mZW5jZV9mZChpZ3RfcGxhbmVfdCAqcGxhbmUs IGludCBmZW5jZV9mZCkNCj4gIAlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9Q TEFORV9JTl9GRU5DRV9GRCwgZmQpOw0KPiAgfQ0KPiAgDQo+ICsvKioNCj4gKyAqIGlndF9wbGFu ZV9zZXRfcGlwZToNCj4gKyAqIEBwbGFuZTogVGFyZ2V0IHBsYW5lIHBvaW50ZXINCj4gKyAqIEBw aXBlOiBUaGUgcGlwZSB0byBhc3NpZ24gdGhlIHBsYW5lIHRvDQo+ICsgKg0KPiArICovDQo+ICt2 b2lkIGlndF9wbGFuZV9zZXRfcGlwZShpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9waXBlX3QgKnBp cGUpDQo+ICt7DQo+ICsJLyoNCj4gKwkgKiBIQUNLOiBQb2ludCB0aGUgZ2xvYmFsIHBsYW5lIGJh Y2sgdG8gdGhlIGxvY2FsIHBsYW5lLg0KPiArCSAqIFRoaXMgaXMgdXNlZCB0byBoZWxwIGFwcGx5 IHRoZSBjb3JyZWN0IGF0b21pYyBzdGF0ZSB3aGlsZQ0KPiArCSAqIHdlJ3JlIG1vdmluZyBhd2F5 IGZyb20gdGhlIHNpbmdsZSBwaXBlIHBlciBwbGFuZSBtb2RlbC4NCj4gKwkgKi8NCj4gKwlwbGFu ZS0+cmVmLT5yZWYgPSBwbGFuZTsNCj4gKwlwbGFuZS0+cmVmLT5waXBlID0gcGlwZTsNCj4gK30N Cj4gKw0KPiAgLyoqDQo+ICAgKiBpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uOg0KPiAgICogQHBsYW5l OiBQbGFuZSBwb2ludGVyIGZvciB3aGljaCBwb3NpdGlvbiBpcyB0byBiZSBzZXQNCj4gZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5oDQo+IGluZGV4IDU3NTViMTYwLi5l MWM1Yzk2NyAxMDA2NDQNCj4gLS0tIGEvbGliL2lndF9rbXMuaA0KPiArKysgYi9saWIvaWd0X2tt cy5oDQo+IEBAIC0zMDAsOSArMzAwLDEwIEBAIHR5cGVkZWYgZW51bSB7DQo+ICAjZGVmaW5lIElH VF9ST1RBVElPTl9NQVNLIFwNCj4gIAkoSUdUX1JPVEFUSU9OXzAgfCBJR1RfUk9UQVRJT05fOTAg fCBJR1RfUk9UQVRJT05fMTgwIHwgSUdUX1JPVEFUSU9OXzI3MCkNCj4gIA0KPiAtdHlwZWRlZiBz dHJ1Y3Qgew0KPiArdHlwZWRlZiBzdHJ1Y3QgaWd0X3BsYW5lIHsNCj4gIAkvKjwgcHJpdmF0ZSA+ Ki8NCj4gIAlpZ3RfcGlwZV90ICpwaXBlOw0KPiArCXN0cnVjdCBpZ3RfcGxhbmUgKnJlZjsNCj4g IAlpbnQgaW5kZXg7DQo+ICAJLyogY2FwYWJpbGl0aWVzICovDQo+ICAJaW50IHR5cGU7DQo+IEBA IC0zNzIsOCArMzczLDEwIEBAIHN0cnVjdCBpZ3RfZGlzcGxheSB7DQo+ICAJaW50IGRybV9mZDsN Cj4gIAlpbnQgbG9nX3NoaWZ0Ow0KPiAgCWludCBuX3BpcGVzOw0KPiArCWludCBuX3BsYW5lczsN Cj4gIAlpbnQgbl9vdXRwdXRzOw0KPiAgCWlndF9vdXRwdXRfdCAqb3V0cHV0czsNCj4gKwlpZ3Rf cGxhbmVfdCAqcGxhbmVzOw0KPiAgCWlndF9waXBlX3QgKnBpcGVzOw0KPiAgCWJvb2wgaGFzX2N1 cnNvcl9wbGFuZTsNCj4gIAlib29sIGlzX2F0b21pYzsNCj4gQEAgLTQxMyw2ICs0MTYsNyBAQCB2 b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGlndF9waXBlX3QgKnBpcGUpOw0KPiAgDQo+ ICB2b2lkIGlndF9wbGFuZV9zZXRfZmIoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2Zi ICpmYik7DQo+ICB2b2lkIGlndF9wbGFuZV9zZXRfZmVuY2VfZmQoaWd0X3BsYW5lX3QgKnBsYW5l LCBpbnQgZmVuY2VfZmQpOw0KPiArdm9pZCBpZ3RfcGxhbmVfc2V0X3BpcGUoaWd0X3BsYW5lX3Qg KnBsYW5lLCBpZ3RfcGlwZV90ICpwaXBlKTsNCj4gIHZvaWQgaWd0X3BsYW5lX3NldF9wb3NpdGlv bihpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB4LCBpbnQgeSk7DQo+ICB2b2lkIGlndF9wbGFuZV9z ZXRfc2l6ZShpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB3LCBpbnQgaCk7DQo+ICB2b2lkIGlndF9w bGFuZV9zZXRfcm90YXRpb24oaWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3Rfcm90YXRpb25fdCByb3Rh dGlvbik7DQo+IA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2