From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA3FC6E169 for ; Thu, 28 Feb 2019 10:23:36 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id h58so16510337edb.5 for ; Thu, 28 Feb 2019 02:23:36 -0800 (PST) Date: Thu, 28 Feb 2019 11:23:32 +0100 From: Daniel Vetter Message-ID: <20190228102332.GO2665@phenom.ffwll.local> References: <20190225154219.8300-1-nicholas.kazlauskas@amd.com> <94fd8aa7-e390-17c6-e7ba-4a55387c58f5@amd.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <94fd8aa7-e390-17c6-e7ba-4a55387c58f5@amd.com> 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: "Wentland, Harry" Cc: "igt-dev@lists.freedesktop.org" , Daniel Vetter List-ID: T24gV2VkLCBGZWIgMjcsIDIwMTkgYXQgMDg6MTM6MzdQTSArMDAwMCwgV2VudGxhbmQsIEhhcnJ5 IHdyb3RlOgo+IE9uIDIwMTktMDItMjUgMTA6NDIgYS5tLiwgTmljaG9sYXMgS2F6bGF1c2thcyB3 cm90ZToKPiA+IEFuIGlndF9wbGFuZV90IGlzIGRlZmluZWQgcGVyIGlndF9waXBlX3QuIEl0IGlz IHRyZWF0ZWQgYXMgaXRzCj4gPiBvd24gaW5kZXBlbmRlbnQgcmVzb3VyY2UgYnV0IERSTSBwbGFu ZXMgY2FuIGJlIGV4cG9zZWQgdG8gYmVpbmcgdXNlZCBvbgo+ID4gYSBudW1iZXIgb2YgcG9zc2li bGUgQ1JUQ3MgLSBtYWtpbmcgaXQgYSBzaGFyZWQgcmVzb3VyY2UuCj4gPiAKPiA+IEluIElHVCBw bGFuZXMgd2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBDUlRDcyBhcmUgYWRkZWQgdG8gdGhlIHBsYW5l IGxpc3QKPiA+IGZvciBlYWNoIHBpcGUgdGhhdCB0aGUgcGxhbmUgc3VwcG9ydHMuIFRoZSBpbnRl cm5hbCBzdGF0ZSByZW1haW5zCj4gPiBpbmRlcGVuZGVudCBpbiBJR1Qgc28gd2hlbiB0aGUgc2Ft ZSBwbGFuZSBpcyBtb2RpZmllZCBmb3IgbXVsdGlwbGUKPiA+IHBpcGVzIGluIGEgc2luZ2xlIGNv bW1pdCB0aGUgbGFzdCBwaXBlIHRvIG1vZGlmeSBpdCBpcyB0aGUgb25lIHdob3NlCj4gPiBzdGF0 ZSBnZXRzIGZ1bGx5IGFwcGxpZWQuCj4gPiAKPiA+IFRoaXMgc2l0dWF0aW9uIGhhcHBlbnMgZmFp cmx5IG9mdGVuIGluIHByYWN0aWNlIC0gcmVzZXR0aW5nIHRoZSBkaXNwbGF5Cj4gPiBhdCB0aGUg c3RhcnQgb2YgdGhlIHRlc3QgYmVmb3JlIGEgY29tbWl0IHdpbGwgcmVzZXQgdGhlIENSVEMgSUQg YW5kIEZCCj4gPiBJRCBmb3IgZWFjaCBwbGFuZS4KPiA+IAo+ID4gRm9yIGFuIGV4YW1wbGUsIGNv bnNpZGVyIHRoZQo+ID4gaWd0QGttc19wbGFuZV9hbHBoYV9ibGVuZEBwaXBlLWEtY29uc3RhbnQt YWxwaGEtbWF4IHRlc3QuCj4gPiAKPiA+IFRoaXMgdGVzdCB3aWxsIGZhaWwgZm9yIGFueSBvdmVy bGF5IHBsYW5lIGV4cG9zZWQgZm9yIG11bHRpcGxlIENSVENzLgo+ID4gCj4gPiBUaGUgdGVzdCB0 cmllcyB0byBzZXQgYSBmcmFtZWJ1ZmZlciBmb3IgcGlwZSBBIGJ1dCBoYXMgYWxsIHRoZSBvdGhl cgo+ID4gcGlwZXMgcmVzZXQgdGhlIHBsYW5lIHN0YXRlIGluIHRoZSBzYW1lIGNvbW1pdC4gSWYg dGhlcmUgYXJlIG11bHRpcGxlCj4gPiBwaXBlcyBvbiB0aGUgaGFyZHdhcmUgdGhlbiB0aGUgbGFz dCBwaXBlIHdpbGwgYmUgdGhlIG9uZSB0byBzZXQgYWxsIHRoZQo+ID4gcGxhbmUgcHJvcGVydGll cy4gVGhlIGRyaXZlciB3aWxsIHJlY2VpdmUgYSBjb21taXQgd2l0aCBubyBvdmVybGF5Cj4gPiBw bGFuZSBlbmFibGVkIHNpbmNlIHRoZSBsYXN0IHBpcGUgc2V0IENSVEMgSUQgYW5kIEZCIElEIHRv IDAsIGRpc2FibGluZwo+ID4gdGhlIHBsYW5lLiBUaGUgcmVmZXJlbmNlIENSQyBjYXB0dXJlIHdp bGwgYmUgaW5jb3JyZWN0IHNpbmNlIG5vdCBhbGwKPiA+IHRoZSBwbGFuZXMgaGF2ZSBiZWVuIGVu YWJsZWQgYW5kIHRoZSBzdWJzZXF1ZW50IENSQyBjYXB0dXJlcyB3aWxsCj4gPiBub3QgbWF0Y2gs IGZhaWxpbmcgdGhlIHRlc3QuCj4gPiAKPiA+IFRoZSBzaW1wbGVzdCAoYnV0IGhhY2t5KSBmaXgg dG8gdGhpcyBwcm9ibGVtIGlzIHRvIG9ubHkgc2V0IHRoZQo+ID4gcHJvcGVydGllcyBmb3IgdGhl IHBsYW5lIGZvciB0aGUgcGlwZSB0aGF0IGxhc3QgaGFkIGl0IGJvdW5kLgo+ID4gCj4gPiBUaGlz IHBhdGNoIGludHJvZHVjZXMgYSBnbG9iYWwgcGxhbmUgbGlzdCBvbiBpZ3RfZGlzcGxheV90IHRo YXQga2VlcHMKPiA+IHRyYWNrIG9mIHRoZSBwaXBlIHRoYXQgcGlwZSB0aGF0IGxhc3QgY2FsbGVk IGlndF9wbGFuZV9zZXRfZmIuIFRoZQo+ID4gcHJvcGVydGllcyBmb3IgdGhlIHBsYW5lIHdpbGwg b25seSBiZSBhcHBsaWVkIGZyb20gdGhhdCBzaW5nbGUgcGlwZQo+ID4gd2hlbiBjb21taXRpbmcg dGhlIHN0YXRlIHRvIERSTS4KPiA+IAo+ID4gTm8gYmVoYXZpb3JhbCBjaGFuZ2VzIHNob3VsZCBi ZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggZm9yIGhhcmR3YXJlCj4gPiB3aG9zZSBwbGFuZXMg YXJlIG9ubHkgZXZlciBleHBvc2VkIG9uZSBDUlRDLgo+ID4gCj4gPiBJdCB3b3VsZCBsaWtlbHkg YmUgYmVzdCB0byBldmVudHVhbGx5IG1vZGlmeSB0aGUgaWd0X3BpcGVfdCBwbGFuZSBsaXN0Cj4g PiB0byBiZSBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8gcGxhbmVzIGluc3RlYWQgKGlndF9wbGFuZV90 KiopCj4gPiBpbnN0ZWFkIG9mIGJlaW5nIHRoZSBhY3R1YWwgcGxhbmUgb2JqZWN0cywgYnV0IHRo YXQgY2FuIGNvbWUgbGF0ZXIuCj4gPiAKPiA+IE1hbnkgYXJlYXMgb2YgdGhlIGNvZGUgbGlrZSB0 byBtYWtlIHVzZSBvZiB0aGUgYmFja3BvaW50ZXIgdG8gdGhlIHBpcGUKPiA+IG9uIHRoZSBwbGFu ZSB3aGljaCBtYWtlcyByZWZhY3RvcmluZyB0aGUgY29kZSBpbiB0aGF0IG1hbm5lciBhIGxpdHRs ZQo+ID4gdHJpY2tpZXIuCj4gPiAKPiA+IHYyOiBBZGQgaWd0X3BsYW5lX3NldF9mYiwgdXNlIGln dF9wbGFuZV90IGZvciBnbG9iYWwgcGxhbmUgbGlzdCAoRGFuaWVsKQo+ID4gdjM6IExlYXZlIFRP RE8gZm9yIGZpbGxpbmcgaW4gYWxsIHN0YXRlL3Byb3BzIG9uIGdsb2JhbCBwbGFuZXMKPiA+IAo+ ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+IFNpZ25lZC1vZmYtYnk6 IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KPiAKPiBB Y2tlZC1ieTogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+Cj4gCj4gRGFu aWVsLCBwaW5nLgoKU3J5LCBkcm93bmluZyBhbmQgYmVoaW5kIG1haWxzLiBJIGFja2VkIHRoZSBn ZW5lcmFsIHBsYW4gYWxyZWFkeSwgYXMgbG9uZwphcyB5b3UgZG9uJ3QgdXBzZXQgQ0kgYWxsIGZp bmUgd2l0aCBtZS4gT25jZSBpdCdzIGFsbCBkb25lIHdvdWxkIGJlIGdvb2QKdG8gbWFrZSBhIGZp bmUgY29tYmVkIHBhc3Mgb3ZlciBkb2NzIGFuZCBtYWtlIHN1cmUgYWxsIHRoZSBmaXhlZApwaXBl L3BsYW5lIGFzc29jaWF0aW9uIGxhbmd1YWdlIGlzIGFsc28gZ29uZS4KLURhbmllbAoKPiAKPiBI YXJyeQo+IAo+ID4gLS0tCj4gPiAgbGliL2lndF9rbXMuYyB8IDEwMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ID4gIGxpYi9pZ3Rfa21zLmggfCAg IDYgKystCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlv bnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5j Cj4gPiBpbmRleCA3NjFiYjE5My4uYTY4YTkwODcgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvaWd0X2tt cy5jCj4gPiArKysgYi9saWIvaWd0X2ttcy5jCj4gPiBAQCAtMTkwNSw2ICsxOTA1LDI2IEBAIHZv aWQgaWd0X2Rpc3BsYXlfcmVxdWlyZShpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2Zk KQo+ID4gIAlwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxh eS0+ZHJtX2ZkKTsKPiA+ICAJaWd0X2Fzc2VydChwbGFuZV9yZXNvdXJjZXMpOwo+ID4gIAo+ID4g KwlkaXNwbGF5LT5uX3BsYW5lcyA9IHBsYW5lX3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOwo+ID4g KwlkaXNwbGF5LT5wbGFuZXMgPSBjYWxsb2Moc2l6ZW9mKGlndF9wbGFuZV90KSwgZGlzcGxheS0+ bl9wbGFuZXMpOwo+ID4gKwlpZ3RfYXNzZXJ0X2YoZGlzcGxheS0+cGxhbmVzLCAiRmFpbGVkIHRv IGFsbG9jYXRlIG1lbW9yeSBmb3IgJWQgcGxhbmVzXG4iLCBkaXNwbGF5LT5uX3BsYW5lcyk7Cj4g PiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsg KytpKSB7Cj4gPiArCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmZGlzcGxheS0+cGxhbmVzW2ldOwo+ ID4gKwkJdWludDMyX3QgaWQgPSBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tpXTsKPiA+ICsKPiA+ ICsJCXBsYW5lLT5kcm1fcGxhbmUgPSBkcm1Nb2RlR2V0UGxhbmUoZGlzcGxheS0+ZHJtX2ZkLCBp ZCk7Cj4gPiArCQlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOwo+ID4gKwo+ID4gKwkJcGxh bmUtPnR5cGUgPSBnZXRfZHJtX3BsYW5lX3R5cGUoZGlzcGxheS0+ZHJtX2ZkLCBpZCk7Cj4gPiAr Cj4gPiArCQkvKgo+ID4gKwkJICogVE9ETzogRmlsbCBpbiB0aGUgcmVzdCBvZiB0aGUgcGxhbmUg cHJvcGVydGllcyBoZXJlIGFuZAo+ID4gKwkJICogbW92ZSBhd2F5IGZyb20gdGhlIHBsYW5lIHBl ciBwaXBlIG1vZGVsIHRvIGFsaWduIGNsb3Nlcgo+ID4gKwkJICogdG8gdGhlIERSTSBLTVMgbW9k ZWwuCj4gPiArCQkgKi8KPiA+ICsJfQo+ID4gKwo+ID4gIAlmb3JfZWFjaF9waXBlKGRpc3BsYXks IGkpIHsKPiA+ICAJCWlndF9waXBlX3QgKnBpcGUgPSAmZGlzcGxheS0+cGlwZXNbaV07Cj4gPiAg CQlpZ3RfcGxhbmVfdCAqcGxhbmU7Cj4gPiBAQCAtMTkyMiwxNyArMTk0MiwxMiBAQCB2b2lkIGln dF9kaXNwbGF5X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKPiA+ ICAJCWlndF9maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05VTV9DUlRDX1BST1BT LCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsKPiA+ICAKPiA+ICAJCS8qIGNvdW50IG51bWJlciBvZiB2 YWxpZCBwbGFuZXMgKi8KPiA+IC0JCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNv dW50X3BsYW5lczsgaisrKSB7Cj4gPiAtCQkJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmU7Cj4gPiAt Cj4gPiAtCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRpc3BsYXktPmRybV9mZCwKPiA+ IC0JCQkJCQkgICAgcGxhbmVfcmVzb3VyY2VzLT5wbGFuZXNbal0pOwo+ID4gKwkJZm9yIChqID0g MDsgaiA8IGRpc3BsYXktPm5fcGxhbmVzOyBqKyspIHsKPiA+ICsJCQlkcm1Nb2RlUGxhbmUgKmRy bV9wbGFuZSA9IGRpc3BsYXktPnBsYW5lc1tqXS5kcm1fcGxhbmU7Cj4gPiAgCQkJaWd0X2Fzc2Vy dChkcm1fcGxhbmUpOwo+ID4gIAo+ID4gIAkJCWlmIChkcm1fcGxhbmUtPnBvc3NpYmxlX2NydGNz ICYgKDEgPDwgaSkpCj4gPiAgCQkJCW5fcGxhbmVzKys7Cj4gPiAtCj4gPiAtCQkJZHJtTW9kZUZy ZWVQbGFuZShkcm1fcGxhbmUpOwo+ID4gIAkJfQo+ID4gIAo+ID4gIAkJaWd0X2Fzc2VydF9sdCgw LCBuX3BsYW5lcyk7Cj4gPiBAQCAtMTk0MSwyMCArMTk1NiwxNCBAQCB2b2lkIGlndF9kaXNwbGF5 X3JlcXVpcmUoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKPiA+ICAJCWxhc3Rf cGxhbmUgPSBuX3BsYW5lcyAtIDE7Cj4gPiAgCj4gPiAgCQkvKiBhZGQgdGhlIHBsYW5lcyB0aGF0 IGNhbiBiZSB1c2VkIHdpdGggdGhhdCBwaXBlICovCj4gPiAtCQlmb3IgKGogPSAwOyBqIDwgcGxh bmVfcmVzb3VyY2VzLT5jb3VudF9wbGFuZXM7IGorKykgewo+ID4gLQkJCWRybU1vZGVQbGFuZSAq ZHJtX3BsYW5lOwo+ID4gLQo+ID4gLQkJCWRybV9wbGFuZSA9IGRybU1vZGVHZXRQbGFuZShkaXNw bGF5LT5kcm1fZmQsCj4gPiAtCQkJCQkJICAgIHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2pdKTsK PiA+IC0JCQlpZ3RfYXNzZXJ0KGRybV9wbGFuZSk7Cj4gPiArCQlmb3IgKGogPSAwOyBqIDwgZGlz cGxheS0+bl9wbGFuZXM7IGorKykgewo+ID4gKwkJCWlndF9wbGFuZV90ICpnbG9iYWxfcGxhbmUg PSAmZGlzcGxheS0+cGxhbmVzW2pdOwo+ID4gKwkJCWRybU1vZGVQbGFuZSAqZHJtX3BsYW5lID0g Z2xvYmFsX3BsYW5lLT5kcm1fcGxhbmU7Cj4gPiAgCj4gPiAtCQkJaWYgKCEoZHJtX3BsYW5lLT5w b3NzaWJsZV9jcnRjcyAmICgxIDw8IGkpKSkgewo+ID4gLQkJCQlkcm1Nb2RlRnJlZVBsYW5lKGRy bV9wbGFuZSk7Cj4gPiArCQkJaWYgKCEoZHJtX3BsYW5lLT5wb3NzaWJsZV9jcnRjcyAmICgxIDw8 IGkpKSkKPiA+ICAJCQkJY29udGludWU7Cj4gPiAtCQkJfQo+ID4gIAo+ID4gLQkJCXR5cGUgPSBn ZXRfZHJtX3BsYW5lX3R5cGUoZGlzcGxheS0+ZHJtX2ZkLAo+ID4gLQkJCQkJCSAgcGxhbmVfcmVz b3VyY2VzLT5wbGFuZXNbal0pOwo+ID4gKwkJCXR5cGUgPSBnbG9iYWxfcGxhbmUtPnR5cGU7Cj4g PiAgCj4gPiAgCQkJaWYgKHR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSAmJiBwaXBlLT5w bGFuZV9wcmltYXJ5ID09IC0xKSB7Cj4gPiAgCQkJCXBsYW5lID0gJnBpcGUtPnBsYW5lc1swXTsK PiA+IEBAIC0xOTc1LDYgKzE5ODQsMTQgQEAgdm9pZCBpZ3RfZGlzcGxheV9yZXF1aXJlKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCj4gPiAgCQkJcGxhbmUtPnBpcGUgPSBwaXBl Owo+ID4gIAkJCXBsYW5lLT5kcm1fcGxhbmUgPSBkcm1fcGxhbmU7Cj4gPiAgCQkJcGxhbmUtPnZh bHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdID0gfjBVTEw7Cj4gPiArCQkJcGxhbmUtPnJlZiA9 IGdsb2JhbF9wbGFuZTsKPiA+ICsKPiA+ICsJCQkvKgo+ID4gKwkJCSAqIEhBQ0s6IHBvaW50IHRo ZSBnbG9iYWwgcGxhbmUgdG8gdGhlIGZpcnN0IHBpcGUgdGhhdAo+ID4gKwkJCSAqIGl0IGNhbiBn byBvbi4KPiA+ICsJCQkgKi8KPiA+ICsJCQlpZiAoIWdsb2JhbF9wbGFuZS0+cmVmKQo+ID4gKwkJ CQlpZ3RfcGxhbmVfc2V0X3BpcGUocGxhbmUsIHBpcGUpOwo+ID4gIAo+ID4gIAkJCWlndF9maWxs X3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1RfTlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxh bmVfcHJvcF9uYW1lcyk7Cj4gPiAgCj4gPiBAQCAtMjEyNywxNyArMjE0NCw2IEBAIGlndF9vdXRw dXRfdCAqaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAo+ ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGlndF9waXBlX2ZpbmkoaWd0X3BpcGVfdCAqcGlwZSkKPiA+ ICB7Cj4gPiAtCWludCBpOwo+ID4gLQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFu ZXM7IGkrKykgewo+ID4gLQkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tpXTsK PiA+IC0KPiA+IC0JCWlmIChwbGFuZS0+ZHJtX3BsYW5lKSB7Cj4gPiAtCQkJZHJtTW9kZUZyZWVQ bGFuZShwbGFuZS0+ZHJtX3BsYW5lKTsKPiA+IC0JCQlwbGFuZS0+ZHJtX3BsYW5lID0gTlVMTDsK PiA+IC0JCX0KPiA+IC0JfQo+ID4gLQo+ID4gIAlmcmVlKHBpcGUtPnBsYW5lcyk7Cj4gPiAgCXBp cGUtPnBsYW5lcyA9IE5VTEw7Cj4gPiAgCj4gPiBAQCAtMjE2Myw2ICsyMTY5LDE1IEBAIHZvaWQg aWd0X2Rpc3BsYXlfZmluaShpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQo+ID4gIHsKPiA+ICAJaW50 IGk7Cj4gPiAgCj4gPiArCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX3BsYW5lczsgKytpKSB7 Cj4gPiArCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmZGlzcGxheS0+cGxhbmVzW2ldOwo+ID4gKwo+ ID4gKwkJaWYgKHBsYW5lLT5kcm1fcGxhbmUpIHsKPiA+ICsJCQlkcm1Nb2RlRnJlZVBsYW5lKHBs YW5lLT5kcm1fcGxhbmUpOwo+ID4gKwkJCXBsYW5lLT5kcm1fcGxhbmUgPSBOVUxMOwo+ID4gKwkJ fQo+ID4gKwl9Cj4gPiArCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX3BpcGVzOyBp KyspCj4gPiAgCQlpZ3RfcGlwZV9maW5pKCZkaXNwbGF5LT5waXBlc1tpXSk7Cj4gPiAgCj4gPiBA QCAtMjE3Miw2ICsyMTg3LDggQEAgdm9pZCBpZ3RfZGlzcGxheV9maW5pKGlndF9kaXNwbGF5X3Qg KmRpc3BsYXkpCj4gPiAgCWRpc3BsYXktPm91dHB1dHMgPSBOVUxMOwo+ID4gIAlmcmVlKGRpc3Bs YXktPnBpcGVzKTsKPiA+ICAJZGlzcGxheS0+cGlwZXMgPSBOVUxMOwo+ID4gKwlmcmVlKGRpc3Bs YXktPnBsYW5lcyk7Cj4gPiArCWRpc3BsYXktPnBsYW5lcyA9IE5VTEw7Cj4gPiAgfQo+ID4gIAo+ ID4gIHN0YXRpYyB2b2lkIGlndF9kaXNwbGF5X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlzcGxh eSkKPiA+IEBAIC0yNzg5LDYgKzI4MDYsMTAgQEAgc3RhdGljIGludCBpZ3RfcGlwZV9jb21taXQo aWd0X3BpcGVfdCAqcGlwZSwKPiA+ICAJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBp KyspIHsKPiA+ICAJCWlndF9wbGFuZV90ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07Cj4gPiAg Cj4gPiArCQkvKiBza2lwIHBsYW5lcyB0aGF0IGFyZSBoYW5kbGVkIGJ5IGFub3RoZXIgcGlwZSAq Lwo+ID4gKwkJaWYgKHBsYW5lLT5yZWYtPnBpcGUgIT0gcGlwZSkKPiA+ICsJCQljb250aW51ZTsK PiA+ICsKPiA+ICAJCXJldCA9IGlndF9wbGFuZV9jb21taXQocGxhbmUsIHBpcGUsIHMsIGZhaWxf b25fZXJyb3IpOwo+ID4gIAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJvcik7Cj4gPiAg CX0KPiA+IEBAIC0zMTc3LDYgKzMxOTgsMTAgQEAgc3RhdGljIGludCBpZ3RfYXRvbWljX2NvbW1p dChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCB1aW50MzJfdCBmbGFncywgdm9pZCAqdXNlcl8KPiA+ ICAJCQlpZ3RfYXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQocGlwZV9vYmosIHJlcSk7Cj4gPiAg Cj4gPiAgCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Cj4g PiArCQkJLyogc2tpcCBwbGFuZXMgdGhhdCBhcmUgaGFuZGxlZCBieSBhbm90aGVyIHBpcGUgKi8K PiA+ICsJCQlpZiAocGxhbmUtPnJlZi0+cGlwZSAhPSBwaXBlX29iaikKPiA+ICsJCQkJY29udGlu dWU7Cj4gPiArCj4gPiAgCQkJaWYgKHBsYW5lLT5jaGFuZ2VkKQo+ID4gIAkJCQlpZ3RfYXRvbWlj X3ByZXBhcmVfcGxhbmVfY29tbWl0KHBsYW5lLCBwaXBlX29iaiwgcmVxKTsKPiA+ICAJCX0KPiA+ IEBAIC0zNzA5LDYgKzM3MzQsOSBAQCB2b2lkIGlndF9wbGFuZV9zZXRfZmIoaWd0X3BsYW5lX3Qg KnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYikKPiA+ICAJCWlmIChpZ3RfcGxhbmVfaGFzX3Byb3Ao cGxhbmUsIElHVF9QTEFORV9DT0xPUl9SQU5HRSkpCj4gPiAgCQkJaWd0X3BsYW5lX3NldF9wcm9w X2VudW0ocGxhbmUsIElHVF9QTEFORV9DT0xPUl9SQU5HRSwKPiA+ICAJCQkJaWd0X2NvbG9yX3Jh bmdlX3RvX3N0cihmYi0+Y29sb3JfcmFuZ2UpKTsKPiA+ICsKPiA+ICsJCS8qIEhhY2sgdG8gcHJp b3JpdGl6ZSB0aGUgcGxhbmUgb24gdGhlIHBpcGUgdGhhdCBsYXN0IHNldCBmYiAqLwo+ID4gKwkJ aWd0X3BsYW5lX3NldF9waXBlKHBsYW5lLCBwaXBlKTsKPiA+ICAJfSBlbHNlIHsKPiA+ICAJCWln dF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgMCwgMCk7Cj4gPiAgCj4gPiBAQCAtMzc0Myw2ICszNzcx LDIzIEBAIHZvaWQgaWd0X3BsYW5lX3NldF9mZW5jZV9mZChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlu dCBmZW5jZV9mZCkKPiA+ICAJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExB TkVfSU5fRkVOQ0VfRkQsIGZkKTsKPiA+ICB9Cj4gPiAgCj4gPiArLyoqCj4gPiArICogaWd0X3Bs YW5lX3NldF9waXBlOgo+ID4gKyAqIEBwbGFuZTogVGFyZ2V0IHBsYW5lIHBvaW50ZXIKPiA+ICsg KiBAcGlwZTogVGhlIHBpcGUgdG8gYXNzaWduIHRoZSBwbGFuZSB0bwo+ID4gKyAqCj4gPiArICov Cj4gPiArdm9pZCBpZ3RfcGxhbmVfc2V0X3BpcGUoaWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3RfcGlw ZV90ICpwaXBlKQo+ID4gK3sKPiA+ICsJLyoKPiA+ICsJICogSEFDSzogUG9pbnQgdGhlIGdsb2Jh bCBwbGFuZSBiYWNrIHRvIHRoZSBsb2NhbCBwbGFuZS4KPiA+ICsJICogVGhpcyBpcyB1c2VkIHRv IGhlbHAgYXBwbHkgdGhlIGNvcnJlY3QgYXRvbWljIHN0YXRlIHdoaWxlCj4gPiArCSAqIHdlJ3Jl IG1vdmluZyBhd2F5IGZyb20gdGhlIHNpbmdsZSBwaXBlIHBlciBwbGFuZSBtb2RlbC4KPiA+ICsJ ICovCj4gPiArCXBsYW5lLT5yZWYtPnJlZiA9IHBsYW5lOwo+ID4gKwlwbGFuZS0+cmVmLT5waXBl ID0gcGlwZTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICogaWd0X3BsYW5lX3NldF9wb3Np dGlvbjoKPiA+ICAgKiBAcGxhbmU6IFBsYW5lIHBvaW50ZXIgZm9yIHdoaWNoIHBvc2l0aW9uIGlz IHRvIGJlIHNldAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5o Cj4gPiBpbmRleCA1NzU1YjE2MC4uZTFjNWM5NjcgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvaWd0X2tt cy5oCj4gPiArKysgYi9saWIvaWd0X2ttcy5oCj4gPiBAQCAtMzAwLDkgKzMwMCwxMCBAQCB0eXBl ZGVmIGVudW0gewo+ID4gICNkZWZpbmUgSUdUX1JPVEFUSU9OX01BU0sgXAo+ID4gIAkoSUdUX1JP VEFUSU9OXzAgfCBJR1RfUk9UQVRJT05fOTAgfCBJR1RfUk9UQVRJT05fMTgwIHwgSUdUX1JPVEFU SU9OXzI3MCkKPiA+ICAKPiA+IC10eXBlZGVmIHN0cnVjdCB7Cj4gPiArdHlwZWRlZiBzdHJ1Y3Qg aWd0X3BsYW5lIHsKPiA+ICAJLyo8IHByaXZhdGUgPiovCj4gPiAgCWlndF9waXBlX3QgKnBpcGU7 Cj4gPiArCXN0cnVjdCBpZ3RfcGxhbmUgKnJlZjsKPiA+ICAJaW50IGluZGV4Owo+ID4gIAkvKiBj YXBhYmlsaXRpZXMgKi8KPiA+ICAJaW50IHR5cGU7Cj4gPiBAQCAtMzcyLDggKzM3MywxMCBAQCBz dHJ1Y3QgaWd0X2Rpc3BsYXkgewo+ID4gIAlpbnQgZHJtX2ZkOwo+ID4gIAlpbnQgbG9nX3NoaWZ0 Owo+ID4gIAlpbnQgbl9waXBlczsKPiA+ICsJaW50IG5fcGxhbmVzOwo+ID4gIAlpbnQgbl9vdXRw dXRzOwo+ID4gIAlpZ3Rfb3V0cHV0X3QgKm91dHB1dHM7Cj4gPiArCWlndF9wbGFuZV90ICpwbGFu ZXM7Cj4gPiAgCWlndF9waXBlX3QgKnBpcGVzOwo+ID4gIAlib29sIGhhc19jdXJzb3JfcGxhbmU7 Cj4gPiAgCWJvb2wgaXNfYXRvbWljOwo+ID4gQEAgLTQxMyw2ICs0MTYsNyBAQCB2b2lkIGlndF9w aXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGlndF9waXBlX3QgKnBpcGUpOwo+ID4gIAo+ID4gIHZvaWQg aWd0X3BsYW5lX3NldF9mYihpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0cnVjdCBpZ3RfZmIgKmZiKTsK PiA+ICB2b2lkIGlndF9wbGFuZV9zZXRfZmVuY2VfZmQoaWd0X3BsYW5lX3QgKnBsYW5lLCBpbnQg ZmVuY2VfZmQpOwo+ID4gK3ZvaWQgaWd0X3BsYW5lX3NldF9waXBlKGlndF9wbGFuZV90ICpwbGFu ZSwgaWd0X3BpcGVfdCAqcGlwZSk7Cj4gPiAgdm9pZCBpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGln dF9wbGFuZV90ICpwbGFuZSwgaW50IHgsIGludCB5KTsKPiA+ICB2b2lkIGlndF9wbGFuZV9zZXRf c2l6ZShpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB3LCBpbnQgaCk7Cj4gPiAgdm9pZCBpZ3RfcGxh bmVfc2V0X3JvdGF0aW9uKGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X3JvdGF0aW9uX3Qgcm90YXRp b24pOwo+ID4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2