From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790053.outbound.protection.outlook.com [40.107.79.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E2E788F06 for ; Fri, 22 Feb 2019 15:01:50 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Fri, 22 Feb 2019 15:01:48 +0000 Message-ID: <9480d4ef-ded8-f5ad-960d-500762c44d2a@amd.com> References: <20190221212336.20486-1-nicholas.kazlauskas@amd.com> <20190222145104.GE2665@phenom.ffwll.local> In-Reply-To: <20190222145104.GE2665@phenom.ffwll.local> Content-Language: en-US Content-ID: <0C7D693729A3304AA106F9D48C6CD2BB@namprd12.prod.outlook.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] 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 Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gMi8yMi8xOSA5OjUxIEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiBPbiBUaHUsIEZlYiAy MSwgMjAxOSBhdCAwNDoyMzozNlBNIC0wNTAwLCBOaWNob2xhcyBLYXpsYXVza2FzIHdyb3RlOg0K Pj4gQW4gaWd0X3BsYW5lX3QgaXMgZGVmaW5lZCBwZXIgaWd0X3BpcGVfdC4gSXQgaXMgdHJlYXRl ZCBhcyBpdHMNCj4+IG93biBpbmRlcGVuZGVudCByZXNvdXJjZSBidXQgRFJNIHBsYW5lcyBjYW4g YmUgZXhwb3NlZCB0byBiZWluZyB1c2VkIG9uDQo+PiBhIG51bWJlciBvZiBwb3NzaWJsZSBDUlRD cyAtIG1ha2luZyBpdCBhIHNoYXJlZCByZXNvdXJjZS4NCj4+DQo+PiBJbiBJR1QgcGxhbmVzIHdp dGggbXVsdGlwbGUgcG9zc2libGUgQ1JUQ3MgYXJlIGFkZGVkIHRvIHRoZSBwbGFuZSBsaXN0DQo+ PiBmb3IgZWFjaCBwaXBlIHRoYXQgdGhlIHBsYW5lIHN1cHBvcnRzLiBUaGUgaW50ZXJuYWwgc3Rh dGUgcmVtYWlucw0KPj4gaW5kZXBlbmRlbnQgaW4gSUdUIHNvIHdoZW4gdGhlIHNhbWUgcGxhbmUg aXMgbW9kaWZpZWQgZm9yIG11bHRpcGxlDQo+PiBwaXBlcyBpbiBhIHNpbmdsZSBjb21taXQgdGhl IGxhc3QgcGlwZSB0byBtb2RpZnkgaXQgaXMgdGhlIG9uZSB3aG9zZQ0KPj4gc3RhdGUgZ2V0cyBm dWxseSBhcHBsaWVkLg0KPj4NCj4+IFRoaXMgc2l0dWF0aW9uIGhhcHBlbnMgZmFpcmx5IG9mdGVu IGluIHByYWN0aWNlIC0gcmVzZXR0aW5nIHRoZSBkaXNwbGF5DQo+PiBhdCB0aGUgc3RhcnQgb2Yg dGhlIHRlc3QgYmVmb3JlIGEgY29tbWl0IHdpbGwgcmVzZXQgdGhlIENSVEMgSUQgYW5kIEZCDQo+ PiBJRCBmb3IgZWFjaCBwbGFuZS4NCj4+DQo+PiBGb3IgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhl DQo+PiBpZ3RAa21zX3BsYW5lX2FscGhhX2JsZW5kQHBpcGUtYS1jb25zdGFudC1hbHBoYS1tYXgg dGVzdC4NCj4+DQo+PiBUaGlzIHRlc3Qgd2lsbCBmYWlsIGZvciBhbnkgb3ZlcmxheSBwbGFuZSBl eHBvc2VkIGZvciBtdWx0aXBsZSBDUlRDcy4NCj4+DQo+PiBUaGUgdGVzdCB0cmllcyB0byBzZXQg YSBmcmFtZWJ1ZmZlciBmb3IgcGlwZSBBIGJ1dCBoYXMgYWxsIHRoZSBvdGhlcg0KPj4gcGlwZXMg cmVzZXQgdGhlIHBsYW5lIHN0YXRlIGluIHRoZSBzYW1lIGNvbW1pdC4gSWYgdGhlcmUgYXJlIG11 bHRpcGxlDQo+PiBwaXBlcyBvbiB0aGUgaGFyZHdhcmUgdGhlbiB0aGUgbGFzdCBwaXBlIHdpbGwg YmUgdGhlIG9uZSB0byBzZXQgYWxsIHRoZQ0KPj4gcGxhbmUgcHJvcGVydGllcy4gVGhlIGRyaXZl ciB3aWxsIHJlY2VpdmUgYSBjb21taXQgd2l0aCBubyBvdmVybGF5DQo+PiBwbGFuZSBlbmFibGVk IHNpbmNlIHRoZSBsYXN0IHBpcGUgc2V0IENSVEMgSUQgYW5kIEZCIElEIHRvIDAsIGRpc2FibGlu Zw0KPj4gdGhlIHBsYW5lLiBUaGUgcmVmZXJlbmNlIENSQyBjYXB0dXJlIHdpbGwgYmUgaW5jb3Jy ZWN0IHNpbmNlIG5vdCBhbGwNCj4+IHRoZSBwbGFuZXMgaGF2ZSBiZWVuIGVuYWJsZWQgYW5kIHRo ZSBzdWJzZXF1ZW50IENSQyBjYXB0dXJlcyB3aWxsDQo+PiBub3QgbWF0Y2gsIGZhaWxpbmcgdGhl IHRlc3QuDQo+Pg0KPj4gVGhlIHNpbXBsZXN0IChidXQgaGFja3kpIGZpeCB0byB0aGlzIHByb2Js ZW0gaXMgdG8gb25seSBzZXQgdGhlDQo+PiBwcm9wZXJ0aWVzIGZvciB0aGUgcGxhbmUgZm9yIHRo ZSBwaXBlIHRoYXQgbGFzdCBoYWQgaXQgYm91bmQuDQo+Pg0KPj4gVGhpcyBwYXRjaCBpbnRyb2R1 Y2VzIGEgZ2xvYmFsIHBsYW5lIGxpc3Qgb24gaWd0X2Rpc3BsYXlfdCB0aGF0IGtlZXBzDQo+PiB0 cmFjayBvZiB0aGUgcGlwZSB0aGF0IHBpcGUgdGhhdCBsYXN0IGNhbGxlZCBpZ3RfcGxhbmVfc2V0 X2ZiLiBUaGUNCj4+IHByb3BlcnRpZXMgZm9yIHRoZSBwbGFuZSB3aWxsIG9ubHkgYmUgYXBwbGll ZCBmcm9tIHRoYXQgc2luZ2xlIHBpcGUNCj4+IHdoZW4gY29tbWl0aW5nIHRoZSBzdGF0ZSB0byBE Uk0uDQo+Pg0KPj4gTm8gYmVoYXZpb3JhbCBjaGFuZ2VzIHNob3VsZCBiZSBpbnRyb2R1Y2VkIGJ5 IHRoaXMgcGF0Y2ggZm9yIGhhcmR3YXJlDQo+PiB3aG9zZSBwbGFuZXMgYXJlIG9ubHkgZXZlciBl eHBvc2VkIG9uZSBDUlRDLg0KPj4NCj4+IEl0IHdvdWxkIGxpa2VseSBiZSBiZXN0IHRvIGV2ZW50 dWFsbHkgbW9kaWZ5IHRoZSBpZ3RfcGlwZV90IHBsYW5lIGxpc3QNCj4+IHRvIGJlIGEgbGlzdCBv ZiBwb2ludGVycyB0byBwbGFuZXMgaW5zdGVhZCAoaWd0X3BsYW5lX3QqKikNCj4+IGluc3RlYWQg b2YgYmVpbmcgdGhlIGFjdHVhbCBwbGFuZSBvYmplY3RzLCBidXQgdGhhdCBjYW4gY29tZSBsYXRl ci4NCj4+DQo+PiBNYW55IGFyZWFzIG9mIHRoZSBjb2RlIGxpa2UgdG8gbWFrZSB1c2Ugb2YgdGhl IGJhY2twb2ludGVyIHRvIHRoZSBwaXBlDQo+PiBvbiB0aGUgcGxhbmUgd2hpY2ggbWFrZXMgcmVm YWN0b3JpbmcgdGhlIGNvZGUgaW4gdGhhdCBtYW5uZXIgYSBsaXR0bGUNCj4+IHRyaWNraWVyLg0K PiANCj4gVGhhbmtzIGEgbG90IGZvciB0YWNrbGluZyB0aGlzIGludGVsLWlzbSBpbiBpZ3QsIHdo aWNoIGluZGVlZCBpcyB0b3RhbGx5DQo+IG5vdCBob3cga21zIHdvcmtzIChvdXRzaWRlIG9mIHJl Y2VudCBpOTE1IGh3KS4NCj4gDQo+IEkgdGhpbmsgeW91ciBwbGFuIHRvIGZpcnN0IGJ1aWxkIHVw IGEgZ2xvYmFsIHBsYW5lIGxpc3Qgd2hpY2ggYWxpYXNlcyB0bw0KPiB0aGUgY3VycmVudCBwZXIt cGlwZSBwbGFuZXMgYXMgYSBmaXJzdCBzdGVwIGlzIHNvdW5kLg0KPiANCj4gVGhlIG5leHQgc3Rl cCB3ZSBjYW4gcHJvYmFibHkgZG8gZ3JhZHVhbGx5LCBpLmUuIGFkZCBhIG5ldw0KPiBpZ3RfcGlw ZS0+cGxhbmVfcmVzIG9yIHNvIHdoaWNoIGlzIHRoZSBsaXN0IG9mIHBvaW50ZXJzIGZvciB0aGUg Z2xvYmFsDQo+IHBsYW5lX3JlcyBhcnJheS4gQW5kIHRoZW4gc3RlcC1ieS1zdGVwIGZhZGUgb3V0 IHVzYWdlIG9mIGlndF9waXBlX3BsYW5lcy4NCj4gDQo+IE5lZWRzIGEgYml0IG9mIGJvb2sta2Vl cGluZyBmb3IgdGhlIHRyYW5zaXRpb24sIGJ1dCBzaG91bGQgYmUgZG9hYmxlLg0KDQpZZWFoLCBJ IHNhdyB0aGlzIGFzIGhhcHBlbmluZyBpbiB0d28gcGhhc2VzIGFzIHdlbGwuDQoNClRob3VnaCBJ IHRoaW5rIGl0IHdvdWxkIGJlIGVhc2llciB0byBqdXN0IGNvbnZlcnQgdGhlIGV4aXN0aW5nIHBs YW5lcyANCmxpc3QgdG8gYW4gYXJyYXkgb2YgcG9pbnRlcnMgYW5kIGF1ZGl0IGV2ZXJ5d2hlcmUg dGhhdCB0cmllZCB1c2luZyBpdCANCmRpcmVjdGx5LiBNb3N0IHRlc3RzIGFjdHVhbGx5IGRvIG1h a2UgdXNlIG9mIHRoZSBpdGVyYXRpb24gaGVscGVycyANCmFscmVhZHkgc28gaXQncyBtb3N0bHkg b25seSBpZ3Rfa21zIGFuZCAzIG9yIDQgdGVzdHMgdGhhdCB3YW50IHRvIGFjY2VzcyANCml0IGRp cmVjdGx5Lg0KDQo+IA0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IE5pY2hvbGFzIEthemxhdXNrYXMg PG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4NCj4+IC0tLQ0KPj4gICBsaWIvaWd0X2ttcy5j IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+PiAgIGxpYi9pZ3Rfa21zLmggfCAxMCArKysrKysrDQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwg NTcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2xp Yi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jDQo+PiBpbmRleCAwODBmOTBhZS4uZjEzM2E1Y2Qg MTAwNjQ0DQo+PiAtLS0gYS9saWIvaWd0X2ttcy5jDQo+PiArKysgYi9saWIvaWd0X2ttcy5jDQo+ PiBAQCAtMTkwNSw2ICsxOTA1LDIwIEBAIHZvaWQgaWd0X2Rpc3BsYXlfcmVxdWlyZShpZ3RfZGlz cGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQ0KPj4gICAJcGxhbmVfcmVzb3VyY2VzID0gZHJt TW9kZUdldFBsYW5lUmVzb3VyY2VzKGRpc3BsYXktPmRybV9mZCk7DQo+PiAgIAlpZ3RfYXNzZXJ0 KHBsYW5lX3Jlc291cmNlcyk7DQo+PiAgIA0KPj4gKwlkaXNwbGF5LT5uX3BsYW5lcyA9IHBsYW5l X3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOw0KPj4gKwlkaXNwbGF5LT5wbGFuZXMgPSBjYWxsb2Mo c2l6ZW9mKGlndF9wbGFuZV9yZXNfdCksIGRpc3BsYXktPm5fcGxhbmVzKTsNCj4+ICsJaWd0X2Fz c2VydF9mKGRpc3BsYXktPnBsYW5lcywgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICVk IHBsYW5lc1xuIiwgZGlzcGxheS0+bl9wbGFuZXMpOw0KPj4gKw0KPj4gKwlmb3IgKGkgPSAwOyBp IDwgcGxhbmVfcmVzb3VyY2VzLT5jb3VudF9wbGFuZXM7ICsraSkgew0KPj4gKwkJaWd0X3BsYW5l X3Jlc190ICpwbGFuZSA9ICZkaXNwbGF5LT5wbGFuZXNbaV07DQo+PiArCQl1aW50MzJfdCBpZCA9 IHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2ldOw0KPj4gKw0KPj4gKwkJcGxhbmUtPmRybV9wbGFu ZSA9IGRybU1vZGVHZXRQbGFuZShkaXNwbGF5LT5kcm1fZmQsIGlkKTsNCj4+ICsJCWlndF9hc3Nl cnQocGxhbmUtPmRybV9wbGFuZSk7DQo+PiArDQo+PiArCQlwbGFuZS0+dHlwZSA9IGdldF9kcm1f cGxhbmVfdHlwZShkaXNwbGF5LT5kcm1fZmQsIGlkKTsNCj4+ICsJfQ0KPj4gKw0KPj4gICAJZm9y X2VhY2hfcGlwZShkaXNwbGF5LCBpKSB7DQo+PiAgIAkJaWd0X3BpcGVfdCAqcGlwZSA9ICZkaXNw bGF5LT5waXBlc1tpXTsNCj4+ICAgCQlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+PiBAQCAtMTkyMiwx NyArMTkzNiwxMiBAQCB2b2lkIGlndF9kaXNwbGF5X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgaW50IGRybV9mZCkNCj4+ICAgCQlpZ3RfZmlsbF9waXBlX3Byb3BzKGRpc3BsYXksIHBp cGUsIElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNfcHJvcF9uYW1lcyk7DQo+PiAgIA0KPj4g ICAJCS8qIGNvdW50IG51bWJlciBvZiB2YWxpZCBwbGFuZXMgKi8NCj4+IC0JCWZvciAoaiA9IDA7 IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisrKSB7DQo+PiAtCQkJZHJtTW9k ZVBsYW5lICpkcm1fcGxhbmU7DQo+PiAtDQo+PiAtCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBs YW5lKGRpc3BsYXktPmRybV9mZCwNCj4+IC0JCQkJCQkgICAgcGxhbmVfcmVzb3VyY2VzLT5wbGFu ZXNbal0pOw0KPj4gKwkJZm9yIChqID0gMDsgaiA8IGRpc3BsYXktPm5fcGxhbmVzOyBqKyspIHsN Cj4+ICsJCQlkcm1Nb2RlUGxhbmUgKmRybV9wbGFuZSA9IGRpc3BsYXktPnBsYW5lc1tqXS5kcm1f cGxhbmU7DQo+PiAgIAkJCWlndF9hc3NlcnQoZHJtX3BsYW5lKTsNCj4+ICAgDQo+PiAgIAkJCWlm IChkcm1fcGxhbmUtPnBvc3NpYmxlX2NydGNzICYgKDEgPDwgaSkpDQo+PiAgIAkJCQluX3BsYW5l cysrOw0KPj4gLQ0KPj4gLQkJCWRybU1vZGVGcmVlUGxhbmUoZHJtX3BsYW5lKTsNCj4+ICAgCQl9 DQo+PiAgIA0KPj4gICAJCWlndF9hc3NlcnRfbHQoMCwgbl9wbGFuZXMpOw0KPj4gQEAgLTE5NDEs MjAgKzE5NTAsMTQgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIGludCBkcm1fZmQpDQo+PiAgIAkJbGFzdF9wbGFuZSA9IG5fcGxhbmVzIC0gMTsNCj4+ ICAgDQo+PiAgIAkJLyogYWRkIHRoZSBwbGFuZXMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoYXQg cGlwZSAqLw0KPj4gLQkJZm9yIChqID0gMDsgaiA8IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxh bmVzOyBqKyspIHsNCj4+IC0JCQlkcm1Nb2RlUGxhbmUgKmRybV9wbGFuZTsNCj4+IC0NCj4+IC0J CQlkcm1fcGxhbmUgPSBkcm1Nb2RlR2V0UGxhbmUoZGlzcGxheS0+ZHJtX2ZkLA0KPj4gLQkJCQkJ CSAgICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7DQo+PiAtCQkJaWd0X2Fzc2VydChkcm1f cGxhbmUpOw0KPj4gKwkJZm9yIChqID0gMDsgaiA8IGRpc3BsYXktPm5fcGxhbmVzOyBqKyspIHsN Cj4+ICsJCQlpZ3RfcGxhbmVfcmVzX3QgKnJlcyA9ICZkaXNwbGF5LT5wbGFuZXNbal07DQo+PiAr CQkJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmUgPSByZXMtPmRybV9wbGFuZTsNCj4+ICAgDQo+PiAt CQkJaWYgKCEoZHJtX3BsYW5lLT5wb3NzaWJsZV9jcnRjcyAmICgxIDw8IGkpKSkgew0KPj4gLQkJ CQlkcm1Nb2RlRnJlZVBsYW5lKGRybV9wbGFuZSk7DQo+PiArCQkJaWYgKCEoZHJtX3BsYW5lLT5w b3NzaWJsZV9jcnRjcyAmICgxIDw8IGkpKSkNCj4+ICAgCQkJCWNvbnRpbnVlOw0KPj4gLQkJCX0N Cj4+ICAgDQo+PiAtCQkJdHlwZSA9IGdldF9kcm1fcGxhbmVfdHlwZShkaXNwbGF5LT5kcm1fZmQs DQo+PiAtCQkJCQkJICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7DQo+PiArCQkJdHlwZSA9 IHJlcy0+dHlwZTsNCj4+ICAgDQo+PiAgIAkJCWlmICh0eXBlID09IERSTV9QTEFORV9UWVBFX1BS SU1BUlkgJiYgcGlwZS0+cGxhbmVfcHJpbWFyeSA9PSAtMSkgew0KPj4gICAJCQkJcGxhbmUgPSAm cGlwZS0+cGxhbmVzWzBdOw0KPj4gQEAgLTE5NzUsNiArMTk3OCwxMCBAQCB2b2lkIGlndF9kaXNw bGF5X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkNCj4+ICAgCQkJ cGxhbmUtPnBpcGUgPSBwaXBlOw0KPj4gICAJCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtX3BsYW5l Ow0KPj4gICAJCQlwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9JTl9GRU5DRV9GRF0gPSB+MFVMTDsN Cj4+ICsJCQlwbGFuZS0+cmVzID0gcmVzOw0KPj4gKw0KPj4gKwkJCWlmICghcmVzLT5zdGF0ZSkN Cj4+ICsJCQkJcmVzLT5zdGF0ZSA9IHBsYW5lOw0KPj4gICANCj4+ICAgCQkJaWd0X2ZpbGxfcGxh bmVfcHJvcHMoZGlzcGxheSwgcGxhbmUsIElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9w cm9wX25hbWVzKTsNCj4+ICAgDQo+PiBAQCAtMjEyNywxNyArMjEzNCw2IEBAIGlndF9vdXRwdXRf dCAqaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihpZ3RfZGlzcGxheV90ICpkaXNwbGF5LA0KPj4g ICANCj4+ICAgc3RhdGljIHZvaWQgaWd0X3BpcGVfZmluaShpZ3RfcGlwZV90ICpwaXBlKQ0KPj4g ICB7DQo+PiAtCWludCBpOw0KPj4gLQ0KPj4gLQlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFu ZXM7IGkrKykgew0KPj4gLQkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsN Cj4+IC0NCj4+IC0JCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7DQo+PiAtCQkJZHJtTW9kZUZyZWVQ bGFuZShwbGFuZS0+ZHJtX3BsYW5lKTsNCj4+IC0JCQlwbGFuZS0+ZHJtX3BsYW5lID0gTlVMTDsN Cj4+IC0JCX0NCj4+IC0JfQ0KPj4gLQ0KPj4gICAJZnJlZShwaXBlLT5wbGFuZXMpOw0KPj4gICAJ cGlwZS0+cGxhbmVzID0gTlVMTDsNCj4+ICAgDQo+PiBAQCAtMjE2Myw2ICsyMTU5LDE1IEBAIHZv aWQgaWd0X2Rpc3BsYXlfZmluaShpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQ0KPj4gICB7DQo+PiAg IAlpbnQgaTsNCj4+ICAgDQo+PiArCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX3BsYW5lczsg KytpKSB7DQo+PiArCQlpZ3RfcGxhbmVfcmVzX3QgKnBsYW5lID0gJmRpc3BsYXktPnBsYW5lc1tp XTsNCj4+ICsNCj4+ICsJCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7DQo+PiArCQkJZHJtTW9kZUZy ZWVQbGFuZShwbGFuZS0+ZHJtX3BsYW5lKTsNCj4+ICsJCQlwbGFuZS0+ZHJtX3BsYW5lID0gTlVM TDsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4gICAJZm9yIChpID0gMDsgaSA8IGRpc3BsYXkt Pm5fcGlwZXM7IGkrKykNCj4+ICAgCQlpZ3RfcGlwZV9maW5pKCZkaXNwbGF5LT5waXBlc1tpXSk7 DQo+PiAgIA0KPj4gQEAgLTIxNzIsNiArMjE3Nyw4IEBAIHZvaWQgaWd0X2Rpc3BsYXlfZmluaShp Z3RfZGlzcGxheV90ICpkaXNwbGF5KQ0KPj4gICAJZGlzcGxheS0+b3V0cHV0cyA9IE5VTEw7DQo+ PiAgIAlmcmVlKGRpc3BsYXktPnBpcGVzKTsNCj4+ICAgCWRpc3BsYXktPnBpcGVzID0gTlVMTDsN Cj4+ICsJZnJlZShkaXNwbGF5LT5wbGFuZXMpOw0KPj4gKwlkaXNwbGF5LT5wbGFuZXMgPSBOVUxM Ow0KPj4gICB9DQo+PiAgIA0KPj4gICBzdGF0aWMgdm9pZCBpZ3RfZGlzcGxheV9yZWZyZXNoKGln dF9kaXNwbGF5X3QgKmRpc3BsYXkpDQo+PiBAQCAtMjc4OSw2ICsyNzk2LDEwIEBAIHN0YXRpYyBp bnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsDQo+PiAgIAlmb3IgKGkgPSAwOyBp IDwgcGlwZS0+bl9wbGFuZXM7IGkrKykgew0KPj4gICAJCWlndF9wbGFuZV90ICpwbGFuZSA9ICZw aXBlLT5wbGFuZXNbaV07DQo+PiAgIA0KPj4gKwkJLyogc2tpcCBwbGFuZXMgdGhhdCBhcmUgaGFu ZGxlZCBieSBhbm90aGVyIHBpcGUgKi8NCj4+ICsJCWlmIChwbGFuZS0+cmVzLT5zdGF0ZSAhPSBw bGFuZSkNCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICAgCQlyZXQgPSBpZ3RfcGxhbmVfY29t bWl0KHBsYW5lLCBwaXBlLCBzLCBmYWlsX29uX2Vycm9yKTsNCj4+ICAgCQlDSEVDS19SRVRVUk4o cmV0LCBmYWlsX29uX2Vycm9yKTsNCj4+ICAgCX0NCj4+IEBAIC0zMTc3LDYgKzMxODgsMTAgQEAg c3RhdGljIGludCBpZ3RfYXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCB1aW50 MzJfdCBmbGFncywgdm9pZCAqdXNlcl8NCj4+ICAgCQkJaWd0X2F0b21pY19wcmVwYXJlX2NydGNf Y29tbWl0KHBpcGVfb2JqLCByZXEpOw0KPj4gICANCj4+ICAgCQlmb3JfZWFjaF9wbGFuZV9vbl9w aXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7DQo+PiArCQkJLyogc2tpcCBwbGFuZXMgdGhhdCBh cmUgaGFuZGxlZCBieSBhbm90aGVyIHBpcGUgKi8NCj4+ICsJCQlpZiAocGxhbmUtPnJlcy0+c3Rh dGUgIT0gcGxhbmUpDQo+PiArCQkJCWNvbnRpbnVlOw0KPj4gKw0KPj4gICAJCQlpZiAocGxhbmUt PmNoYW5nZWQpDQo+PiAgIAkJCQlpZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29tbWl0KHBsYW5l LCBwaXBlX29iaiwgcmVxKTsNCj4+ICAgCQl9DQo+PiBAQCAtMzcwOSw2ICszNzI0LDkgQEAgdm9p ZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwgc3RydWN0IGlndF9mYiAqZmIp DQo+PiAgIAkJaWYgKGlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwgSUdUX1BMQU5FX0NPTE9SX1JB TkdFKSkNCj4+ICAgCQkJaWd0X3BsYW5lX3NldF9wcm9wX2VudW0ocGxhbmUsIElHVF9QTEFORV9D T0xPUl9SQU5HRSwNCj4+ICAgCQkJCWlndF9jb2xvcl9yYW5nZV90b19zdHIoZmItPmNvbG9yX3Jh bmdlKSk7DQo+PiArDQo+PiArCQkvKiBoYWNrIHRvIHByaW9yaXRpemUgcGxhbmUgb24gY3J0YyBp dCB3YXMgbGFzdCBib3VuZCB0byAqLw0KPj4gKwkJcGxhbmUtPnJlcy0+c3RhdGUgPSBwbGFuZTsN Cj4gDQo+IEhtLCBJJ2QgY3JlYXRhIGEgbmV3IGlndF9wbGFuZV9zZXRfcGlwZSBhbmQgcHV0IHRo aXMgaW4gdGhlcmUuIFRoYXQgd291bGQNCj4gZ2l2ZSB5b3UgYSBuaWNlIHBsYWNlIHRvIHVwZGF0 ZSBhbGwgdGhlIG90aGVyIHRyYW5zaXRpb24gcG9pbnRlcnMgd2UgbWlnaHQNCj4gZXZlbnR1YWxs eSBuZWVkLiBQbHVzIHdvdWxkIGFsbG93IHVzIHRvIGdyYWR1YWxseSBzd2l0Y2ggdGVzdHMgb3Zl ciB0byB0aGUNCj4gbmV3IHdvcmxkLCBidXQgbWF5YmUgYmV0dGVyIHRvIGtlZXAgdGhhdCBmb3Ig dGhlIG5leHQgc3RlcC4NCg0KVGhhdCBzb3VuZHMgcmVhc29uYWJsZSB0byBtZSwgSSBjYW4gYWRk IHRoYXQgaW4gYSB2Mi4NCg0KPiANCj4+ICAgCX0gZWxzZSB7DQo+PiAgIAkJaWd0X3BsYW5lX3Nl dF9zaXplKHBsYW5lLCAwLCAwKTsNCj4+ICAgDQo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMu aCBiL2xpYi9pZ3Rfa21zLmgNCj4+IGluZGV4IDY3OWQ0ZTg0Li4zMmQ4NDBjZSAxMDA2NDQNCj4+ IC0tLSBhL2xpYi9pZ3Rfa21zLmgNCj4+ICsrKyBiL2xpYi9pZ3Rfa21zLmgNCj4+IEBAIC0yODUs NiArMjg1LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBpZ3RfcGxhbmVfcHJvcF9uYW1l c1tdOw0KPj4gICANCj4+ICAgdHlwZWRlZiBzdHJ1Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlf dDsNCj4+ICAgdHlwZWRlZiBzdHJ1Y3QgaWd0X3BpcGUgaWd0X3BpcGVfdDsNCj4+ICt0eXBlZGVm IHN0cnVjdCBpZ3RfcGxhbmVfcmVzIGlndF9wbGFuZV9yZXNfdDsNCj4+ICAgdHlwZWRlZiB1aW50 MzJfdCBpZ3RfZml4ZWRfdDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLw0KPj4gICANCj4+ICAg dHlwZWRlZiBlbnVtIHsNCj4+IEBAIC0zMDMsNiArMzA0LDcgQEAgdHlwZWRlZiBlbnVtIHsNCj4+ ICAgdHlwZWRlZiBzdHJ1Y3Qgew0KPj4gICAJLyo8IHByaXZhdGUgPiovDQo+PiAgIAlpZ3RfcGlw ZV90ICpwaXBlOw0KPj4gKwlpZ3RfcGxhbmVfcmVzX3QgKnJlczsNCj4+ICAgCWludCBpbmRleDsN Cj4+ICAgCS8qIGNhcGFiaWxpdGllcyAqLw0KPj4gICAJaW50IHR5cGU7DQo+PiBAQCAtMzMyLDYg KzMzNCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+PiAgIAlpbnQgZm9ybWF0X21vZF9jb3VudDsN Cj4+ICAgfSBpZ3RfcGxhbmVfdDsNCj4+ICAgDQo+PiArdHlwZWRlZiBzdHJ1Y3QgaWd0X3BsYW5l X3JlcyB7DQo+PiArCWlndF9wbGFuZV90ICpzdGF0ZTsNCj4+ICsJZHJtTW9kZVBsYW5lICpkcm1f cGxhbmU7DQo+PiArCWludCB0eXBlOw0KPj4gK30gaWd0X3BsYW5lX3Jlc190Ow0KPiANCj4gV2h5 IG5vdCBqdXN0IHJldXNlIGlndF9wbGFuZV90IGZvciB0aGlzPyBUaGlzIG1lYW5zIHNvbWUgZHVw bGljYXRpb24gYW5kDQo+IHN5bmNpbmcgKHdoaWNoIHlvdSBjb3VsZCBkbyBpbiB0aGUgaWd0X3Bs YW5lX3NldF9waXBlIGZvciB0aGUgdHJhbnNpdGlvbiksDQo+IGJ1dCBJIHRoaW5rIGNsZWFuZXIg cGF0aCBmb3J3YXJkLiBBbmQgZWFzaWVyIHRvIHRyYW5zaXRpb24gdGVzdHMgSSB0aGluay4NCj4g LURhbmllbA0KDQpZZWFoLCB0aGF0J3MgcHJvYmFibHkgY2xlYW5lci4gVGhlIG9uZSBwcm9ibGVt IHdpdGggdGhpcyBpcyB0aGF0IEknZCANCnN0aWxsIG5lZWQgYSB3YXkgdG8gbWFwIHRoZSBnbG9i YWwgcGxhbmUgdG8gdGhlIHBpcGUgcGxhbmUsIGJ1dCBJIHRoaW5rIA0KSSBjb3VsZCBhbHdheXMg dXNpbmcgdGhlIGRybV9wbGFuZSBwb2ludGVyIGl0c2VsZiBhbmQgaXRlcmF0ZSBvdmVyIHRoZSAN Cmxpc3QgZXZlcnkgdGltZSBvciBJIGNvdWxkIGp1c3QgYWRkIGEgbmV3IG1lbWJlciBpbnRvIGln dF9wbGFuZV90IGZvciANCnRoaXMgcHVycG9zZSBkdXJpbmcgdGhlIHRyYW5zaXRpb24uDQoNClRo YW5rcyENCg0KTmljaG9sYXMgS2F6bGF1c2thcw0KDQo+IA0KPj4gKw0KPj4gICBzdHJ1Y3QgaWd0 X3BpcGUgew0KPj4gICAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheTsNCj4+ICAgCWVudW0gcGlwZSBw aXBlOw0KPj4gQEAgLTM3Miw4ICszODAsMTAgQEAgc3RydWN0IGlndF9kaXNwbGF5IHsNCj4+ICAg CWludCBkcm1fZmQ7DQo+PiAgIAlpbnQgbG9nX3NoaWZ0Ow0KPj4gICAJaW50IG5fcGlwZXM7DQo+ PiArCWludCBuX3BsYW5lczsNCj4+ICAgCWludCBuX291dHB1dHM7DQo+PiAgIAlpZ3Rfb3V0cHV0 X3QgKm91dHB1dHM7DQo+PiArCWlndF9wbGFuZV9yZXNfdCAqcGxhbmVzOw0KPj4gICAJaWd0X3Bp cGVfdCAqcGlwZXM7DQo+PiAgIAlib29sIGhhc19jdXJzb3JfcGxhbmU7DQo+PiAgIAlib29sIGlz X2F0b21pYzsNCj4+IC0tIA0KPj4gMi4xNy4xDQo+Pg0KPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IGlndC1kZXYgbWFpbGluZyBsaXN0DQo+PiBp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2DQo+IA0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXY=