From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH i-g-t v2 07/15] igt_kms: Handle atomic pipe properties better. Date: Thu, 21 Jul 2016 13:07:31 +0300 Message-ID: <1469095651.2625.5.camel@gmail.com> References: <1467798955-7324-1-git-send-email-maarten.lankhorst@linux.intel.com> <1467798955-7324-8-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-x242.google.com (mail-pa0-x242.google.com [IPv6:2607:f8b0:400e:c03::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 576006E9C0 for ; Thu, 21 Jul 2016 10:07:39 +0000 (UTC) Received: by mail-pa0-x242.google.com with SMTP id cf3so4979529pad.2 for ; Thu, 21 Jul 2016 03:07:39 -0700 (PDT) In-Reply-To: <1467798955-7324-8-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE2LTA3LTA2IGF0IDExOjU1ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBNb3ZlIHByb3BlcnRpZXMgdG8gdGhlIHBpcGUsIHRoZXkgZG9uJ3QgYmVsb25nIGluIHRo ZSBvdXRwdXQKPiBhbmQgbWFrZSBhdG9taWMgY29tbWl0IHVzZSB0aGUgcGlwZXMgZm9yIGNydGMg cHJvcGVydGllcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKUmV2aWV3ZWQtYnk6IEFuZGVyIENvbnNlbHZh biBkZSBPbGl2ZWlyYSA8Y29uc2VsdmFuMkBnbWFpbC5jb20+Cgo+IC0tLQo+IMKgbGliL2lndF9r bXMuYyB8IDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiAtCj4gwqBsaWIvaWd0X2ttcy5oIHwgMTIgKysrKystLS0KPiDCoDIgZmls ZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCj4gaW5kZXggODhjYWU3ZDUxNzg3 Li44Yzc1OThhODhhNjkgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9rbXMuYwo+ICsrKyBiL2xpYi9p Z3Rfa21zLmMKPiBAQCAtMjEzLDggKzIxMyw3IEBAIGlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9w cyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAo+IGlndF9wbGFuZV90ICpwbGFuZSwKPiDCoCAqIGNv bmZpZy0+YXRvbWljX3Byb3BzX2NydGMgYW5kIGNvbmZpZy0+YXRvbWljX3Byb3BzX2Nvbm5lY3Rv ci4KPiDCoCAqLwo+IMKgc3RhdGljIHZvaWQKPiAtaWd0X2F0b21pY19maWxsX3Byb3BzKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IC0JCQlpbnQgbnVtX2Ny dGNfcHJvcHMsIGNvbnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMsCj4gK2lndF9hdG9taWNfZmls bF9jb25uZWN0b3JfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICpv dXRwdXQsCj4gwqAJCQlpbnQgbnVtX2Nvbm5lY3Rvcl9wcm9wcywgY29uc3QgY2hhcgo+ICoqY29u bl9wcm9wX25hbWVzKQo+IMKgewo+IMKgCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3Bz Owo+IEBAIC0yMjIsMTggKzIyMSwxOCBAQCBpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwKPiBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiDCoAo+IMKgCWZkID0gZGlz cGxheS0+ZHJtX2ZkOwo+IMKgCj4gLQlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVz KGZkLCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLAo+IERSTV9NT0RFX09CSkVDVF9DUlRD KTsKPiArCXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29u ZmlnLmNvbm5lY3Rvci0KPiA+Y29ubmVjdG9yX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9S KTsKPiDCoAlpZ3RfYXNzZXJ0KHByb3BzKTsKPiDCoAo+IMKgCWZvciAoaSA9IDA7IGkgPCBwcm9w cy0+Y291bnRfcHJvcHM7IGkrKykgewo+IMKgCQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4g wqAJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9wc1tpXSk7Cj4gwqAKPiAtCQlm b3IgKGogPSAwOyBqIDwgbnVtX2NydGNfcHJvcHM7IGorKykgewo+IC0JCQlpZiAoc3RyY21wKHBy b3AtPm5hbWUsIGNydGNfcHJvcF9uYW1lc1tqXSkgIT0gMCkKPiArCQlmb3IgKGogPSAwOyBqIDwg bnVtX2Nvbm5lY3Rvcl9wcm9wczsgaisrKSB7Cj4gKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwg Y29ubl9wcm9wX25hbWVzW2pdKSAhPSAwKQo+IMKgCQkJCWNvbnRpbnVlOwo+IMKgCj4gLQkJCW91 dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW2pdID0gcHJvcHMtCj4gPnByb3BzW2ldOwo+ ICsJCQlvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW2pdID0gcHJvcHMtCj4g PnByb3BzW2ldOwo+IMKgCQkJYnJlYWs7Cj4gwqAJCX0KPiDCoAo+IEBAIC0yNDEsMTkgKzI0MCwy OSBAQCBpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKPiBpZ3Rf b3V0cHV0X3QgKm91dHB1dCwKPiDCoAl9Cj4gwqAKPiDCoAlkcm1Nb2RlRnJlZU9iamVjdFByb3Bl cnRpZXMocHJvcHMpOwo+IC0JcHJvcHMgPSBOVUxMOwo+IC0JcHJvcHMgPSBkcm1Nb2RlT2JqZWN0 R2V0UHJvcGVydGllcyhmZCwgb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLQo+ID5jb25uZWN0b3Jf aWQsIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ ICtpZ3RfYXRvbWljX2ZpbGxfcGlwZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3Rf cGlwZV90ICpwaXBlLAo+ICsJCQlpbnQgbnVtX2NydGNfcHJvcHMsIGNvbnN0IGNoYXIgKipjcnRj X3Byb3BfbmFtZXMpCj4gK3sKPiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwo+ ICsJaW50IGksIGosIGZkOwo+ICsKPiArCWZkID0gZGlzcGxheS0+ZHJtX2ZkOwo+ICsKPiArCXBy b3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIHBpcGUtPmNydGNfaWQsCj4gRFJN X01PREVfT0JKRUNUX0NSVEMpOwo+IMKgCWlndF9hc3NlcnQocHJvcHMpOwo+IMKgCj4gwqAJZm9y IChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7Cj4gwqAJCWRybU1vZGVQcm9w ZXJ0eVB0ciBwcm9wID0KPiDCoAkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3Bz W2ldKTsKPiDCoAo+IC0JCWZvciAoaiA9IDA7IGogPCBudW1fY29ubmVjdG9yX3Byb3BzOyBqKysp IHsKPiAtCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCBjb25uX3Byb3BfbmFtZXNbal0pICE9IDAp Cj4gKwkJZm9yIChqID0gMDsgaiA8IG51bV9jcnRjX3Byb3BzOyBqKyspIHsKPiArCQkJaWYgKHN0 cmNtcChwcm9wLT5uYW1lLCBjcnRjX3Byb3BfbmFtZXNbal0pICE9IDApCj4gwqAJCQkJY29udGlu dWU7Cj4gwqAKPiAtCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3RvcltqXSA9 IHByb3BzLQo+ID5wcm9wc1tpXTsKPiArCQkJcGlwZS0+YXRvbWljX3Byb3BzX2NydGNbal0gPSBw cm9wcy0+cHJvcHNbaV07Cj4gwqAJCQlicmVhazsKPiDCoAkJfQo+IMKgCj4gQEAgLTI2MSw3ICsy NzAsNiBAQCBpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0 X291dHB1dF90Cj4gKm91dHB1dCwKPiDCoAl9Cj4gwqAKPiDCoAlkcm1Nb2RlRnJlZU9iamVjdFBy b3BlcnRpZXMocHJvcHMpOwo+IC0KPiDCoH0KPiDCoAo+IMKgY29uc3QgdW5zaWduZWQgY2hhciog aWd0X2ttc19nZXRfYWx0X2VkaWQodm9pZCkKPiBAQCAtMTIyMiw2ICsxMjMwLDkgQEAgc3RhdGlj IHZvaWQgaWd0X291dHB1dF9yZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+IMKgCQkJwqDC oMKgwqDCoMKgwqAtMSk7Cj4gwqAJfQo+IMKgCj4gKwlpZ3RfYXRvbWljX2ZpbGxfY29ubmVjdG9y X3Byb3BzKGRpc3BsYXksIG91dHB1dCwKPiArCQlJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QUywgaWd0 X2Nvbm5lY3Rvcl9wcm9wX25hbWVzKTsKPiArCj4gwqAJaWYgKCFvdXRwdXQtPnZhbGlkKQo+IMKg CQlyZXR1cm47Cj4gwqAKPiBAQCAtMTIzMiw4ICsxMjQzLDYgQEAgc3RhdGljIHZvaWQgaWd0X291 dHB1dF9yZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+IMKgCcKgwqDCoMKga21zdGVzdF9w aXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwo+IMKgCj4gwqAJZGlzcGxheS0+cGlwZXNf aW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5jb25maWcucGlwZTsKPiAtCWlndF9hdG9taWNfZmlsbF9w cm9wcyhkaXNwbGF5LCBvdXRwdXQsIElHVF9OVU1fQ1JUQ19QUk9QUywKPiBpZ3RfY3J0Y19wcm9w X25hbWVzLAo+IC0JCUlHVF9OVU1fQ09OTkVDVE9SX1BST1BTLCBpZ3RfY29ubmVjdG9yX3Byb3Bf bmFtZXMpOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgYm9vbAo+IEBAIC0xMzU5LDYgKzEzNjgsOCBA QCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50Cj4gZHJt X2ZkKQo+IMKgCQkJCcKgwqBOVUxMLAo+IMKgCQkJCcKgwqBOVUxMKTsKPiDCoAo+ICsJCWlndF9h dG9taWNfZmlsbF9waXBlX3Byb3BzKGRpc3BsYXksIHBpcGUsIElHVF9OVU1fQ1JUQ19QUk9QUywK PiBpZ3RfY3J0Y19wcm9wX25hbWVzKTsKPiArCj4gwqAJCS8qIGFkZCB0aGUgcGxhbmVzIHRoYXQg Y2FuIGJlIHVzZWQgd2l0aCB0aGF0IHBpcGUgKi8KPiDCoAkJZm9yIChqID0gMDsgaiA8IHBsYW5l X3Jlc291cmNlcy0+Y291bnRfcGxhbmVzOyBqKyspIHsKPiDCoAkJCWRybU1vZGVQbGFuZSAqZHJt X3BsYW5lOwo+IEBAIC0xNjYwLDExICsxNjcxLDEwIEBAIHN0YXRpYyB1aW50MzJfdAo+IGlndF9w bGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gwqAgKiBBZGQgcG9z aXRpb24gYW5kIGZiIGNoYW5nZXMgb2YgYSBwbGFuZSB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNl dAo+IMKgICovCj4gwqBzdGF0aWMgdm9pZAo+IC1pZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29t bWl0KGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4gK2lndF9hdG9t aWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3RfcGlwZV90ICpw aXBlLAo+IMKgCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKPiDCoHsKPiAtCj4gLQlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5Owo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxh eSA9IHBpcGUtPmRpc3BsYXk7Cj4gwqAJdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7Cj4gwqAKPiDC oAlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOwo+IEBAIC0xNjc0LDEyICsxNjg0LDExIEBA IGlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAo+IGln dF9vdXRwdXRfdCAqb3V0cHV0LAo+IMKgCQkJIXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKTsKPiDC oAo+IMKgCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFuZSk7Cj4gLQljcnRjX2lkID0g b3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKPiArCWNydGNfaWQgPSBwaXBlLT5jcnRjX2lk Owo+IMKgCj4gwqAJTE9HKGRpc3BsYXksCj4gLQnCoMKgwqDCoCIlczogcG9wdWxhdGluZyBwbGFu ZSBkYXRhOiAlcy4lZCwgZmIgJXVcbiIsCj4gLQnCoMKgwqDCoGlndF9vdXRwdXRfbmFtZShvdXRw dXQpLAo+IC0JwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwK PiArCcKgwqDCoMKgInBvcHVsYXRpbmcgcGxhbmUgZGF0YTogJXMuJWQsIGZiICV1XG4iLAo+ICsJ wqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiDCoAnCoMKgwqDCoHBsYW5l LT5pbmRleCwKPiDCoAnCoMKgwqDCoGZiX2lkKTsKPiDCoAo+IEBAIC0yMDQwLDIxICsyMDQ5LDE1 IEBAIHN0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsCj4gwqAvKgo+ IMKgICogQWRkIGNydGMgcHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNl dAo+IMKgICovCj4gLXN0YXRpYyB2b2lkIGlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChp Z3Rfb3V0cHV0X3QgKm91dHB1dCwKPiBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gK3N0YXRpYyB2 b2lkIGlndF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChpZ3RfcGlwZV90ICpwaXBlX29iaiwK PiBkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gwqB7Cj4gLQo+IC0JaWd0X3BpcGVfdCAqcGlwZV9v YmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKPiAtCj4gLQlpZiAoIXBp cGVfb2JqKQo+IC0JCXJldHVybjsKPiAtCj4gwqAJaWYgKHBpcGVfb2JqLT5iYWNrZ3JvdW5kX2No YW5nZWQpCj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwKPiBJ R1RfQ1JUQ19CQUNLR1JPVU5ELCBwaXBlX29iai0+YmFja2dyb3VuZCk7Cj4gKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVfb2JqLAo+IElHVF9DUlRDX0JBQ0tHUk9VTkQs IHBpcGVfb2JqLT5iYWNrZ3JvdW5kKTsKPiDCoAo+IMKgCWlmIChwaXBlX29iai0+Y29sb3JfbWdt dF9jaGFuZ2VkKSB7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1 dCwKPiBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgcGlwZV9vYmotPmRlZ2FtbWFfYmxvYik7Cj4gLQkJ aWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwgSUdUX0NSVENfQ1RNLAo+ IHBpcGVfb2JqLT5jdG1fYmxvYik7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShy ZXEsIG91dHB1dCwgSUdUX0NSVENfR0FNTUFfTFVULAo+IHBpcGVfb2JqLT5nYW1tYV9ibG9iKTsK PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgcGlwZV9vYmosCj4gSUdUX0NS VENfREVHQU1NQV9MVVQsIHBpcGVfb2JqLT5kZWdhbW1hX2Jsb2IpOwo+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfY3J0Y19yZXEocmVxLCBwaXBlX29iaiwgSUdUX0NSVENfQ1RNLAo+IHBpcGVfb2Jq LT5jdG1fYmxvYik7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGVf b2JqLAo+IElHVF9DUlRDX0dBTU1BX0xVVCwgcGlwZV9vYmotPmdhbW1hX2Jsb2IpOwo+IMKgCX0K PiDCoAo+IMKgCS8qCj4gQEAgLTIwODgsNDIgKzIwOTEsMzcgQEAgc3RhdGljIHZvaWQKPiBpZ3Rf YXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJt TW9kZUF0bwo+IMKgc3RhdGljIGludCBpZ3RfYXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpk aXNwbGF5KQo+IMKgewo+IMKgCj4gLQlpbnQgcmV0ID0gMDsKPiArCWludCByZXQgPSAwLCBpOwo+ ICsJZW51bSBwaXBlIHBpcGU7Cj4gwqAJZHJtTW9kZUF0b21pY1JlcSAqcmVxOwo+IMKgCWlndF9v dXRwdXRfdCAqb3V0cHV0Owo+ICsKPiDCoAlpZiAoZGlzcGxheS0+aXNfYXRvbWljICE9IDEpCj4g wqAJCXJldHVybiAtMTsKPiDCoAlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKPiDCoAlkcm1N b2RlQXRvbWljU2V0Q3Vyc29yKHJlcSwgMCk7Cj4gwqAKPiAtCWZvcl9lYWNoX2Nvbm5lY3RlZF9v dXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7Cj4gLQkJaWd0X3BpcGVfdCAqcGlwZV9vYmo7Cj4gKwlm b3JfZWFjaF9waXBlKGRpc3BsYXksIHBpcGUpIHsKPiArCQlpZ3RfcGlwZV90ICpwaXBlX29iaiA9 ICZkaXNwbGF5LT5waXBlc1twaXBlXTsKPiDCoAkJaWd0X3BsYW5lX3QgKnBsYW5lOwo+IC0JCWVu dW0gcGlwZSBwaXBlOwo+IMKgCj4gwqAJCS8qCj4gwqAJCcKgKiBBZGQgQ1JUQyBQcm9wZXJ0aWVz IHRvIHRoZSBwcm9wZXJ0eSBzZXQKPiDCoAkJwqAqLwo+IC0JCWlndF9hdG9taWNfcHJlcGFyZV9j cnRjX2NvbW1pdChvdXRwdXQsIHJlcSk7Cj4gLQo+IC0JCS8qCj4gLQkJwqAqIEFkZCBDb25uZWN0 b3IgUHJvcGVydGllcyB0byB0aGUgcHJvcGVydHkgc2V0Cj4gLQkJwqAqLwo+IC0JCWlndF9hdG9t aWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KG91dHB1dCwgcmVxKTsKPiAtCj4gLQo+IC0JCXBp cGVfb2JqID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7Cj4gLQkJaWYgKCFw aXBlX29iaikKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCXBpcGUgPSBwaXBlX29iai0+cGlwZTsK PiArCQlpZ3RfYXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQocGlwZV9vYmosIHJlcSk7Cj4gwqAK PiDCoAkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewo+IC0J CQlpZ3RfYXRvbWljX3ByZXBhcmVfcGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIHJlcSk7Cj4g KwkJCWlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQocGxhbmUsIHBpcGVfb2JqLAo+IHJl cSk7Cj4gwqAJCX0KPiDCoAo+IMKgCX0KPiDCoAo+ICsJZm9yIChpID0gMDsgaSA8IGRpc3BsYXkt Pm5fb3V0cHV0czsgaSsrKSB7Cj4gKwkJb3V0cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07Cj4g Kwo+ICsJCWlndF9hdG9taWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KG91dHB1dCwgcmVxKTsK PiArCX0KPiArCj4gwqAJcmV0ID0gZHJtTW9kZUF0b21pY0NvbW1pdChkaXNwbGF5LT5kcm1fZmQs IHJlcSwgMCwgTlVMTCk7Cj4gwqAJZHJtTW9kZUF0b21pY0ZyZWUocmVxKTsKPiDCoAlyZXR1cm4g cmV0Owo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAo+IGluZGV4 IDM1MzFkYzIwYjZlMC4uYjllOGQzNDRlZDhjIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgK PiArKysgYi9saWIvaWd0X2ttcy5oCj4gQEAgLTExNyw3ICsxMTcsNiBAQCBzdHJ1Y3Qga21zdGVz dF9jb25uZWN0b3JfY29uZmlnIHsKPiDCoAlib29sIGNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hh bmdlZDsKPiDCoAl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKPiDCoAlib29sIGNvbm5lY3Rvcl9k cG1zX2NoYW5nZWQ7Cj4gLQl1aW50MzJfdCBhdG9taWNfcHJvcHNfY3J0Y1tJR1RfTlVNX0NSVENf UFJPUFNdOwo+IMKgCXVpbnQzMl90IGF0b21pY19wcm9wc19jb25uZWN0b3JbSUdUX05VTV9DT05O RUNUT1JfUFJPUFNdOwo+IMKgCWludCBwaXBlOwo+IMKgCXVuc2lnbmVkIHZhbGlkX2NydGNfaWR4 X21hc2s7Cj4gQEAgLTI1Nyw2ICsyNTYsOSBAQCBzdHJ1Y3QgaWd0X3BpcGUgewo+IMKgCWJvb2wg ZW5hYmxlZDsKPiDCoAlpbnQgbl9wbGFuZXM7Cj4gwqAJaWd0X3BsYW5lX3QgcGxhbmVzW0lHVF9N QVhfUExBTkVTXTsKPiArCj4gKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY3J0Y1tJR1RfTlVNX0NS VENfUFJPUFNdOwo+ICsKPiDCoAl1aW50NjRfdCBiYWNrZ3JvdW5kOyAvKiBCYWNrZ3JvdW5kIGNv bG9yIE1TQiBCR1IgMTZicGMgTFNCICovCj4gwqAJdWludDMyX3QgYmFja2dyb3VuZF9jaGFuZ2Vk IDogMTsKPiDCoAl1aW50MzJfdCBiYWNrZ3JvdW5kX3Byb3BlcnR5Owo+IEBAIC0zOTUsMTMgKzM5 NywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKGVudW0g cGlwZQo+IHBpcGUsCj4gwqAvKioKPiDCoCAqIGlndF9hdG9taWNfcG9wdWxhdGVfY3J0Y19yZXE6 Cj4gwqAgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQo+IC0gKiBAb3V0cHV0 OiBBIHBvaW50ZXIgaWd0X291dHB1dF90Cj4gKyAqIEBwaXBlOiBBIHBvaW50ZXIgaWd0X3BpcGVf dAo+IMKgICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcwo+IMKgICog QHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCj4gwqAgKi8KPiAtI2RlZmluZSBpZ3RfYXRvbWljX3Bv cHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAo+IC0JaWd0X2Fzc2Vy dF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQtPmNvbmZpZy5jcnRj LQo+ID5jcnRjX2lkLFwKPiAtCQkJCQkJwqDCoG91dHB1dC0KPiA+Y29uZmlnLmF0b21pY19wcm9w c19jcnRjW3Byb3BdLCB2YWx1ZSkpCj4gKyNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRj X3JlcShyZXEsIHBpcGUsIHByb3AsIHZhbHVlKSBcCj4gKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1v ZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBpcGUtPmNydGNfaWQsXAo+ICsJCQkJCQnCoMKgcGlw ZS0KPiA+YXRvbWljX3Byb3BzX2NydGNbcHJvcF0sIHZhbHVlKSkKPiDCoC8qKgo+IMKgICogaWd0 X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxOgo+IMKgICogQHJlcTogQSBwb2ludGVyIHRv IGRybU1vZGVBdG9taWNSZXEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==