From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 5/5] drm/i915: Wait for object idle without locks in atomic_commit. Date: Wed, 28 Oct 2015 17:30:51 -0700 Message-ID: <20151029003051.GB9946@intel.com> References: <1443007632-5573-1-git-send-email-maarten.lankhorst@linux.intel.com> <1443007632-5573-6-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A6FC6E3A6 for ; Wed, 28 Oct 2015 17:34:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1443007632-5573-6-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjMsIDIwMTUgYXQgMDE6Mjc6MTJQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTWFrZSBwaW5uaW5nIGFuZCB3YWl0aW5nIGEgc2VwYXJhdGUgc3RlcCwgYW5k IHdhaXQgZm9yIG9iamVjdCBpZGxlCj4gd2l0aG91dCBzdHJ1Y3RfbXV0ZXggaGVsZC4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg ICAgICB8ICAyIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAg fCAgNiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAg MiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgODYgKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICAgICAgICB8ICA3ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmRldi5jICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJs YXkuYyAgICAgIHwgIDYgKystCj4gIDcgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwg MjcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggM2JmOGE5 Yjc3MWQwLi5lYzcyZmQ0NTc0OTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAt Mjk4Miw4ICsyOTgyLDYgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpOwo+ICBpbnQgX19tdXN0X2No ZWNrCj4gIGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQkJICAgICB1MzIgYWxpZ25tZW50LAo+IC0JCQkJICAg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4gLQkJCQkgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqKnBpcGVsaW5lZF9yZXF1ZXN0LAo+ICAJCQkJICAgICBjb25z dCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+ICB2b2lkIGk5MTVfZ2VtX29iamVjdF91 bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDQ2ZjBlODNlZTZlZS4uYWIwMjE4MmM0N2E1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTM3ODIsMTcgKzM3ODIsMTEgQEAgdW5sb2Nr Ogo+ICBpbnQKPiAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCQkgICAgIHUzMiBhbGlnbm1lbnQsCj4gLQkJ CQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnBpcGVsaW5lZCwKPiAtCQkJCSAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVkX3JlcXVlc3QsCj4gIAkJCQkgICAg IGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKPiAgewo+ICAJdTMyIG9sZF9yZWFk X2RvbWFpbnMsIG9sZF93cml0ZV9kb21haW47Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcGlwZWxpbmVkLCBwaXBlbGluZWRfcmVxdWVzdCk7Cj4g LQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAJLyogTWFyayB0aGUgcGluX2Rpc3Bs YXkgZWFybHkgc28gdGhhdCB3ZSBhY2NvdW50IGZvciB0aGUKPiAgCSAqIGRpc3BsYXkgY29oZXJl bmN5IHdoaWxzdCBzZXR0aW5nIHVwIHRoZSBjYWNoZSBkb21haW5zLgo+ICAJICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBpbmRleCBhMTE5ODA2OTY1OTUu LmM2YmIwZmMxZWRmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19w bGFuZS5jCj4gQEAgLTg0LDYgKzg0LDcgQEAgaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ICAJc3RhdGUgPSAmaW50ZWxfc3RhdGUtPmJhc2U7Cj4g IAo+ICAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsIHN0 YXRlKTsKPiArCWludGVsX3N0YXRlLT53YWl0X3JlcSA9IE5VTEw7Cj4gIAo+ICAJcmV0dXJuIHN0 YXRlOwo+ICB9Cj4gQEAgLTEwMCw2ICsxMDEsNyBAQCB2b2lkCj4gIGludGVsX3BsYW5lX2Rlc3Ry b3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqc3RhdGUpCj4gIHsKPiArCVdBUk5fT04oc3RhdGUgJiYgdG9faW50ZWxfcGxhbmVf c3RhdGUoc3RhdGUpLT53YWl0X3JlcSk7Cj4gIAlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0 cm95X3N0YXRlKHBsYW5lLCBzdGF0ZSk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IDJmMDQ2MTM0Y2M5YS4uZDgxN2M0NGVlNDI4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yMjkxLDkgKzIyOTEsNyBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICBpbnQKPiAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LAo+IC0JCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAt CQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcGlwZWxpbmVkLAo+IC0JCQkgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwaXBlbGluZWRfcmVxdWVzdCkKPiArCQkJICAgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBmYi0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMjM0OSw4ICsyMzQ3LDggQEAgaW50ZWxfcGlu X2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkgKi8KPiAgCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBhbGlnbm1lbnQsIHBpcGVsaW5lZCwKPiAtCQkJ CQkJICAgcGlwZWxpbmVkX3JlcXVlc3QsICZ2aWV3KTsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVj dF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFsaWdubWVudCwKPiArCQkJCQkJICAgJnZpZXcp OwoKVGhlIHBpbiB0byBkaXNwbGF5IHBsYW5lIChhbmQgaGVuY2UgdGhlIHdhaXQpIGhhcHBlbnMg aW5zaWRlCmludGVsX3J1bnRpbWVfcG1fZ2V0L3B1dCgpIGluIHRoZSBjdXJyZW50IGNvZGUuICBX aGVuIHlvdSBwdWxsIHRoZSB3YWl0Cm91dCB0byB0aGUgdmFyaW91cyBjYWxsc2l0ZXMsIGl0IGlz bid0IGhvbGRpbmcgcnVudGltZSBwbSBhbnltb3JlIChhdApsZWFzdCBub3QgaW4gYSB3YXkgdGhh dCdzIG9idmlvdXMgdG8gbWUpLiAgQ2FuIHRoaXMgYmUgYSBwcm9ibGVtPwpOZWl0aGVyIHJ1bnRp bWUgUE0gbm9yIEdFTSBpbnRlcm5hbHMgYXJlIHNvbWV0aGluZyBJJ20gdGVycmlibHkgZmFtaWxp YXIKd2l0aCwgc28geW91IG1pZ2h0IHdhbnQgdG8gZ2V0IGFuIGFjayBmcm9tIHNvbWVvbmUgbGlr ZSBQYXVsbyBvciBDaHJpcz8KCgo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVycl9wbTsKPiAgCj4g QEAgLTExMzU3LDkgKzExMzU1LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJICogc3luY2hyb25pc2F0aW9uLCBzbyBhbGwgd2Ug d2FudCBoZXJlIGlzIHRvIHBpbiB0aGUgZnJhbWVidWZmZXIKPiAgCSAqIGludG8gdGhlIGRpc3Bs YXkgcGxhbmUgYW5kIHNraXAgYW55IHdhaXRzLgo+ICAJICovCj4gKwlpZiAoIW1taW9fZmxpcCkg ewo+ICsJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcmluZywgJnJlcXVlc3QpOwo+ ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gY2xlYW51cF9wZW5kaW5nOwo+ICsJfQo+ICsKPiAgCXJl dCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGNydGMtPnByaW1hcnksIGZiLAo+IC0JCQkJ CSBjcnRjLT5wcmltYXJ5LT5zdGF0ZSwKPiAtCQkJCQkgbW1pb19mbGlwID8gaTkxNV9nZW1fcmVx dWVzdF9nZXRfcmluZyhvYmotPmxhc3Rfd3JpdGVfcmVxKSA6IHJpbmcsICZyZXF1ZXN0KTsKPiAr CQkJCQkgY3J0Yy0+cHJpbWFyeS0+c3RhdGUpOwoKUHJvYmFibHkgYSBkdW1iIHF1ZXN0aW9uIGZy b20gc29tZW9uZSB3aG8gaXNuJ3QgZmFtaWxpYXIgd2l0aCBHRU0KaGFuZGxpbmcuLi50aGUgY29t bWVudCBhYm92ZSB0aGUgbGluZXMgeW91IGFkZGVkIGhlcmUgc2F5cyB3ZSBqdXN0IHdhbnQKdG8g cGluIGFuZCBza2lwIGFueSB3YWl0cyB3aGVuIGRvaW5nIE1NSU8gZmxpcHMgKHdoaWNoIG1hdGNo ZXMgdGhlIGxvZ2ljCm9mIHlvdXIgY29kZSBjaGFuZ2UpLiAgSG93ZXZlciBpdCBsb29rcyB0byBt ZSBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcwpzdGlsbCBkb2luZyBhIHdhaXQsIGp1c3Qgd2l0 aCBhIHBvdGVudGlhbGx5IGRpZmZlcmVudCByaW5nIHBhcmFtZXRlci4KV2hhdCBhbSBJIG1pc3Np bmcgaGVyZT8KCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gY2xlYW51cF9wZW5kaW5nOwo+ICAKPiBA QCAtMTI5OTMsNyArMTI5OTYsMTAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9j b21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCQkgICAgICAgYm9vbCBhc3luYykKPiAgewo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Cj4gIAlpbnQgaSwgcmV0Owo+ICAKPiBAQCAtMTMwMDYsNiArMTMwMTIs OSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJCXJldCA9IGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhj cnRjKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlpZiAoYXRvbWlj X3JlYWQoJnRvX2ludGVsX2NydGMoY3J0YyktPnVucGluX3dvcmtfY291bnQpID49IDIpCj4gKwkJ CWZsdXNoX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+ICAJfQo+ICAKPiAgCXJldCA9IGk5MTVf bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gQEAgLTEzMDEzLDYgKzEzMDIyLDM3IEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9w cmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiArCWlmICghcmV0ICYmICFhc3luYykgewo+ICsJ CXUzMiByZXNldF9jb3VudGVyOwo+ICsKPiArCQlyZXNldF9jb3VudGVyID0gYXRvbWljX3JlYWQo JmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfY291bnRlcik7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRl LCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiArCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICppbnRlbF9wbGFuZV9zdGF0ZSA9Cj4gKwkJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9z dGF0ZSk7Cj4gKwo+ICsJCQlpZiAoIWludGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSkKPiArCQkJ CWNvbnRpbnVlOwo+ICsKPiArCQkJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChpbnRlbF9wbGFu ZV9zdGF0ZS0+d2FpdF9yZXEsCj4gKwkJCQkJCSAgcmVzZXRfY291bnRlciwgdHJ1ZSwKPiArCQkJ CQkJICBOVUxMLCBOVUxMKTsKPiArCj4gKwkJCS8qIFN3YWxsb3cgLUVJTyBlcnJvcnMgdG8gYWxs b3cgdXBkYXRlcyBkdXJpbmcgaHcgbG9ja3VwLiAqLwo+ICsJCQlpZiAocmV0ID09IC1FSU8pCj4g KwkJCQlyZXQgPSAwOwo+ICsKPiArCQkJaWYgKHJldCkKPiArCQkJCWJyZWFrOwo+ICsJCX0KPiAr Cj4gKwkJaWYgKCFyZXQpCj4gKwkJCXJldHVybiAwOwo+ICsKPiArCQltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gKwkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2 LCBzdGF0ZSk7Cj4gKwl9Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0xMzAzOSwxNSArMTMwNzksMTcgQEAgc3RhdGljIGludCBp bnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAgICAgICBi b29sIGFzeW5jKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJ aW50IHJldCA9IDA7Cj4gIAlpbnQgaTsKPiAgCWJvb2wgYW55X21zID0gZmFsc2U7Cj4gIAo+ICAJ cmV0ID0gaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KGRldiwgc3RhdGUsIGFzeW5jKTsKPiAt CWlmIChyZXQpCj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0FUT01JQygiUHJlcGFyaW5n IHN0YXRlIGZhaWxlZCB3aXRoICVpXG4iLCByZXQpOwo+ICAJCXJldHVybiByZXQ7Cj4gKwl9Cj4g IAo+ICAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRlKTsKPiAgCj4gQEAg LTEzMzE4LDcgKzEzMzYwLDggQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCQkgKiBUaGlzIHNob3VsZCBvbmx5IGZhaWwgdXBvbiBhIGh1bmcgR1BV LCBpbiB3aGljaCBjYXNlIHdlCj4gIAkJICogY2FuIHNhZmVseSBjb250aW51ZS4KPiAgCQkgKi8K PiAtCQlpZiAobmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPiArCQlpZiAobmVlZHNfbW9kZXNl dChjcnRjX3N0YXRlKSAmJgo+ICsJCSAgICB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3Rh dGUpLT52aXNpYmxlKQo+ICAJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmco b2xkX29iaiwgdHJ1ZSk7Cj4gIAo+ICAJCS8qIFN3YWxsb3cgLUVJTyBlcnJvcnMgdG8gYWxsb3cg dXBkYXRlcyBkdXJpbmcgaHcgbG9ja3VwLiAqLwo+IEBAIC0xMzMzNSwxMSArMTMzNzgsMjEgQEAg aW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQlpZiAo cmV0KQo+ICAJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0XG4i KTsKPiAgCX0gZWxzZSB7Cj4gLQkJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoocGxh bmUsIGZiLCBuZXdfc3RhdGUsIE5VTEwsIE5VTEwpOwo+ICsJCXJldCA9IGludGVsX3Bpbl9hbmRf ZmVuY2VfZmJfb2JqKHBsYW5lLCBmYiwgbmV3X3N0YXRlKTsKPiAgCX0KPiAgCj4gLQlpZiAocmV0 ID09IDApCj4gKwlpZiAocmV0ID09IDApIHsKPiArCQlpZiAob2JqICYmIG9iai0+bGFzdF93cml0 ZV9yZXEgJiYKPiArCQkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKG9iai0+bGFzdF93 cml0ZV9yZXEsIHRydWUpKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUgPQo+ICsJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKTsKPiArCj4gKwkJ CWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZwbGFuZV9zdGF0ZS0+d2FpdF9yZXEsCj4gKwkJCQkJ CW9iai0+bGFzdF93cml0ZV9yZXEpOwo+ICsJCX0KPiArCj4gIAkJaTkxNV9nZW1fdHJhY2tfZmIo b2xkX29iaiwgb2JqLCBpbnRlbF9wbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKPiArCX0KPiAgCj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTEzMzU3LDkgKzEzNDEwLDEyIEBAIGludGVsX2NsZWFu dXBfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9w bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqb2xkX2ludGVsX3N0YXRlOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9v YmogPSBpbnRlbF9mYl9vYmoob2xkX3N0YXRlLT5mYik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKHBsYW5lLT5zdGF0ZS0+ZmIpOwo+ICAKPiArCW9s ZF9pbnRlbF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSk7Cj4gKwo+ICAJ aWYgKCFvYmogJiYgIW9sZF9vYmopCj4gIAkJcmV0dXJuOwo+ICAKPiBAQCAtMTMzNzEsNiArMTM0 MjcsOSBAQCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICAJaWYgKChvbGRfb2JqICYmIChvbGRfb2JqLT5mcm9udGJ1ZmZlcl9iaXRzICYgaW50ZWxfcGxh bmUtPmZyb250YnVmZmVyX2JpdCkpIHx8Cj4gIAkgICAgKG9iaiAmJiAhKG9iai0+ZnJvbnRidWZm ZXJfYml0cyAmIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpKSkKPiAgCQlpOTE1X2dlbV90 cmFja19mYihvbGRfb2JqLCBvYmosIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpOwo+ICsK PiArCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvbGRfaW50ZWxfc3RhdGUtPndhaXRfcmVxLCBO VUxMKTsKPiArCj4gIH0KPiAgCj4gIGludAo+IEBAIC0xNTM0OCw4ICsxNTQwNyw3IEBAIHZvaWQg aW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCW11dGV4 X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNl X2ZiX29iaihjLT5wcmltYXJ5LAo+ICAJCQkJCQkgYy0+cHJpbWFyeS0+ZmIsCj4gLQkJCQkJCSBj LT5wcmltYXJ5LT5zdGF0ZSwKPiAtCQkJCQkJIE5VTEwsIE5VTEwpOwo+ICsJCQkJCQkgYy0+cHJp bWFyeS0+c3RhdGUpOwo+ICAJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJ CWlmIChyZXQpIHsKPiAgCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIGJvb3QgZmIgb24gcGlw ZSAlZFxuIiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGNmZGIwZjI3MTRjZC4u ODUyYTBkMTkyZjgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjcwLDYg KzI3MCw5IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gIAlpbnQgc2NhbGVyX2lkOwo+ ICAKPiAgCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5IGNrZXk7Cj4gKwo+ICsJLyog YXN5bmMgZmxpcCByZWxhdGVkIHN0cnVjdHVyZXMgKi8KPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqd2FpdF9yZXE7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFu ZV9jb25maWcgewo+IEBAIC0xMDU1LDkgKzEwNTgsNyBAQCB2b2lkIGludGVsX3JlbGVhc2VfbG9h ZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCQkJICAg IHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KTsKPiAgaW50IGludGVsX3Bpbl9h bmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgICAgICAgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gLQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAtCQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnBpcGVsaW5lZCwKPiAtCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq KnBpcGVsaW5lZF9yZXF1ZXN0KTsKPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKTsKPiAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCj4gIF9faW50 ZWxfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAgIHN0 cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi ZGV2LmMKPiBpbmRleCA2NTMyOTEyN2YwYjkuLjUxYWZlZTYxYmE3ZSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJkZXYuYwo+IEBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGludCBpbnRl bGZiX2FsbG9jKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4gIAl9Cj4gIAo+ICAJLyog Rmx1c2ggZXZlcnl0aGluZyBvdXQsIHdlJ2xsIGJlIGRvaW5nIEdUVCBvbmx5IGZyb20gbm93IG9u ICovCj4gLQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihOVUxMLCBmYiwgTlVMTCwg TlVMTCwgTlVMTCk7Cj4gKwlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihOVUxMLCBm YiwgTlVMTCk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIG9i ajogJWRcbiIsIHJldCk7Cj4gIAkJZ290byBvdXRfZmI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X292ZXJsYXkuYwo+IGluZGV4IDQ0NDU0MjY5NmEyYy4uMWIxOGNjNmJkYmQ2IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC03NDksNyArNzQ5LDExIEBAIHN0YXRp YyBpbnQgaW50ZWxfb3ZlcmxheV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJsYXkgKm92 ZXJsYXksCj4gIAlpZiAocmV0ICE9IDApCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBp OTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUobmV3X2JvLCAwLCBOVUxMLCBOVUxM LAo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG5ld19ibywgdHJ1ZSk7 CgpBZ2FpbiwgSSdtIG5vdCBzdXBlciBmYW1pbGlhciB3aXRoIEdFTSBpbnRlcm5hbHMuLi5jYW4g dGhpcyBiZSBhCmJlaGF2aW9yIGNoYW5nZSBmcm9tIHRoZSBwcmV2aW91cyBjb2RlPyAgT3JpZ2lu YWxseSB0aGUgcGluX3RvX2Rpc3BsYXkKcGxhbmUgZnVuY3Rpb24gd291bGQgaGF2ZSBwYXNzZWQg KG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbiA9PSAwKQphcyB0aGUgc2Vjb25kIHBhcmFt ZXRlciBoZXJlIChyZWFkb25seSksIGJ1dCB5b3UncmUgdW5jb25kaXRpb25hbGx5CnBhc3Npbmcg dHJ1ZS4gIENhbiB0aGVyZSBub3QgYmUgcGVuZGluZyB3cml0ZXMgYWdhaW5zdCB0aGlzIG9iamVj dD8KCgpPdmVyYWxsIEkgZmVlbCBsaWtlIHRoaXMgcGF0Y2ggZ29lcyBhIGJpdCB0b28gZmFyIG91 dHNpZGUgbXkgYXJlYSBvZgpleHBlcnRpc2UgZm9yIG1lIHRvIHNlcnZlIGFzIHRoZSBmaW5hbCBy ZXZpZXdlciBmb3IgaXQuICBNYXliZSBpdCB3b3VsZApiZSBnb29kIHRvIGhhdmUgc29tZW9uZSBs aWtlIENocmlzIG9yIFZpbGxlIHRha2UgYSBsb29rIHNpbmNlIHRoZXkgaGF2ZQphIGxvdCBtb3Jl IGV4cGVyaWVuY2UgaW4gdGhpcyBhcmVhLgoKCk1hdHQKCj4gKwlpZiAocmV0KQo+ICsJCXJldHVy biByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5l KG5ld19ibywgMCwKPiAgCQkJCQkJICAgJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7Cj4gIAlpZiAo cmV0ICE9IDApCj4gIAkJcmV0dXJuIHJldDsKPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKTWF0dCBSb3BlcgpH cmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxv cG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK