From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 5/5] drm/i915: Wait for object idle without locks in atomic_commit. Date: Mon, 2 Nov 2015 14:13:48 +0100 Message-ID: <5637618C.4010801@linux.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> <20151029003051.GB9946@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 5C9CA6E4D1 for ; Mon, 2 Nov 2015 05:13:51 -0800 (PST) In-Reply-To: <20151029003051.GB9946@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjktMTAtMTUgb20gMDE6MzAgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIFdlZCwgU2VwIDIz LCAyMDE1IGF0IDAxOjI3OjEyUE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBN YWtlIHBpbm5pbmcgYW5kIHdhaXRpbmcgYSBzZXBhcmF0ZSBzdGVwLCBhbmQgd2FpdCBmb3Igb2Jq ZWN0IGlkbGUKPj4gd2l0aG91dCBzdHJ1Y3RfbXV0ZXggaGVsZC4KPj4KPj4gU2lnbmVkLW9mZi1i eTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K Pj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICB8ICAy IC0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgIHwgIDYgLS0t Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAyICsKPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgODYgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgICAgICAgfCAgNyArLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMgICAgICAgIHwgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku YyAgICAgIHwgIDYgKystCj4+ICA3IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDI3 IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggM2JmOGE5 Yjc3MWQwLi5lYzcyZmQ0NTc0OTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBA QCAtMjk4Miw4ICsyOTgyLDYgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpOwo+PiAgaW50IF9fbXVz dF9jaGVjawo+PiAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAJCQkJICAgICB1MzIgYWxpZ25tZW50LAo+PiAt CQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcGlwZWxpbmVkLAo+PiAtCQkJCSAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVkX3JlcXVlc3QsCj4+ICAJCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+PiAgdm9pZCBpOTE1X2dl bV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4+ICAJCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmll dyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBpbmRleCA0NmYwZTgzZWU2ZWUuLmFiMDIx ODJjNDdhNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0zNzgyLDE3ICsz NzgyLDExIEBAIHVubG9jazoKPj4gIGludAo+PiAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNw bGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAJCQkJICAgICB1 MzIgYWxpZ25tZW50LAo+PiAtCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcGlwZWxp bmVkLAo+PiAtCQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVk X3JlcXVlc3QsCj4+ICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcp Cj4+ICB7Cj4+ICAJdTMyIG9sZF9yZWFkX2RvbWFpbnMsIG9sZF93cml0ZV9kb21haW47Cj4+ICAJ aW50IHJldDsKPj4gIAo+PiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcGlwZWxp bmVkLCBwaXBlbGluZWRfcmVxdWVzdCk7Cj4+IC0JaWYgKHJldCkKPj4gLQkJcmV0dXJuIHJldDsK Pj4gLQo+PiAgCS8qIE1hcmsgdGhlIHBpbl9kaXNwbGF5IGVhcmx5IHNvIHRoYXQgd2UgYWNjb3Vu dCBmb3IgdGhlCj4+ICAJICogZGlzcGxheSBjb2hlcmVuY3kgd2hpbHN0IHNldHRpbmcgdXAgdGhl IGNhY2hlIGRvbWFpbnMuCj4+ICAJICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pY19wbGFuZS5jCj4+IGluZGV4IGExMTk4MDY5NjU5NS4uYzZiYjBmYzFlZGZiIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+PiBAQCAtODQsNiAr ODQsNyBAQCBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUpCj4+ICAJc3RhdGUgPSAmaW50ZWxfc3RhdGUtPmJhc2U7Cj4+ICAKPj4gIAlfX2RybV9hdG9t aWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSwgc3RhdGUpOwo+PiArCWludGVs X3N0YXRlLT53YWl0X3JlcSA9IE5VTEw7Cj4+ICAKPj4gIAlyZXR1cm4gc3RhdGU7Cj4+ICB9Cj4+ IEBAIC0xMDAsNiArMTAxLDcgQEAgdm9pZAo+PiAgaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gIAkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUpCj4+ICB7Cj4+ICsJV0FSTl9PTihzdGF0ZSAmJiB0b19pbnRlbF9wbGFuZV9zdGF0ZShz dGF0ZSktPndhaXRfcmVxKTsKPj4gIAlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0 YXRlKHBsYW5lLCBzdGF0ZSk7Cj4+ICB9Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+PiBpbmRleCAyZjA0NjEzNGNjOWEuLmQ4MTdjNDRlZTQyOCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMjI5MSw5ICsyMjkxLDcgQEAgc3Rh dGljIHVuc2lnbmVkIGludCBpbnRlbF9saW5lYXJfYWxpZ25tZW50KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4gIGludAo+PiAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAJCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKPj4gLQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl LAo+PiAtCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcGlwZWxpbmVkLAo+PiAtCQkJICAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVkX3JlcXVlc3QpCj4+ICsJCQkg ICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPj4gIHsKPj4gIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmItPmRldjsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiBAQCAtMjM0OSw4ICsyMzQ3LDgg QEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ ICAJICovCj4+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiAgCj4+IC0JcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKG9iaiwgYWxpZ25tZW50LCBw aXBlbGluZWQsCj4+IC0JCQkJCQkgICBwaXBlbGluZWRfcmVxdWVzdCwgJnZpZXcpOwo+PiArCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFsaWdubWVudCwK Pj4gKwkJCQkJCSAgICZ2aWV3KTsKPiBUaGUgcGluIHRvIGRpc3BsYXkgcGxhbmUgKGFuZCBoZW5j ZSB0aGUgd2FpdCkgaGFwcGVucyBpbnNpZGUKPiBpbnRlbF9ydW50aW1lX3BtX2dldC9wdXQoKSBp biB0aGUgY3VycmVudCBjb2RlLiAgV2hlbiB5b3UgcHVsbCB0aGUgd2FpdAo+IG91dCB0byB0aGUg dmFyaW91cyBjYWxsc2l0ZXMsIGl0IGlzbid0IGhvbGRpbmcgcnVudGltZSBwbSBhbnltb3JlIChh dAo+IGxlYXN0IG5vdCBpbiBhIHdheSB0aGF0J3Mgb2J2aW91cyB0byBtZSkuICBDYW4gdGhpcyBi ZSBhIHByb2JsZW0/Cj4gTmVpdGhlciBydW50aW1lIFBNIG5vciBHRU0gaW50ZXJuYWxzIGFyZSBz b21ldGhpbmcgSSdtIHRlcnJpYmx5IGZhbWlsaWFyCj4gd2l0aCwgc28geW91IG1pZ2h0IHdhbnQg dG8gZ2V0IGFuIGFjayBmcm9tIHNvbWVvbmUgbGlrZSBQYXVsbyBvciBDaHJpcz8KSSBkb24ndCB0 aGluayB0aGUgR1BVCj4KPj4gIAlpZiAocmV0KQo+PiAgCQlnb3RvIGVycl9wbTsKPj4gIAo+PiBA QCAtMTEzNTcsOSArMTEzNTUsMTQgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJICogc3luY2hyb25pc2F0aW9uLCBzbyBhbGwgd2Ug d2FudCBoZXJlIGlzIHRvIHBpbiB0aGUgZnJhbWVidWZmZXIKPj4gIAkgKiBpbnRvIHRoZSBkaXNw bGF5IHBsYW5lIGFuZCBza2lwIGFueSB3YWl0cy4KPj4gIAkgKi8KPj4gKwlpZiAoIW1taW9fZmxp cCkgewo+PiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJpbmcsICZyZXF1ZXN0 KTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCWdvdG8gY2xlYW51cF9wZW5kaW5nOwo+PiArCX0KPj4g Kwo+PiAgCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGNydGMtPnByaW1hcnksIGZi LAo+PiAtCQkJCQkgY3J0Yy0+cHJpbWFyeS0+c3RhdGUsCj4+IC0JCQkJCSBtbWlvX2ZsaXAgPyBp OTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9iai0+bGFzdF93cml0ZV9yZXEpIDogcmluZywgJnJl cXVlc3QpOwo+PiArCQkJCQkgY3J0Yy0+cHJpbWFyeS0+c3RhdGUpOwo+IFByb2JhYmx5IGEgZHVt YiBxdWVzdGlvbiBmcm9tIHNvbWVvbmUgd2hvIGlzbid0IGZhbWlsaWFyIHdpdGggR0VNCj4gaGFu ZGxpbmcuLi50aGUgY29tbWVudCBhYm92ZSB0aGUgbGluZXMgeW91IGFkZGVkIGhlcmUgc2F5cyB3 ZSBqdXN0IHdhbnQKPiB0byBwaW4gYW5kIHNraXAgYW55IHdhaXRzIHdoZW4gZG9pbmcgTU1JTyBm bGlwcyAod2hpY2ggbWF0Y2hlcyB0aGUgbG9naWMKPiBvZiB5b3VyIGNvZGUgY2hhbmdlKS4gIEhv d2V2ZXIgaXQgbG9va3MgdG8gbWUgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSB3YXMKPiBzdGlsbCBk b2luZyBhIHdhaXQsIGp1c3Qgd2l0aCBhIHBvdGVudGlhbGx5IGRpZmZlcmVudCByaW5nIHBhcmFt ZXRlci4KPiBXaGF0IGFtIEkgbWlzc2luZyBoZXJlPwpBIGxheWVyIG9mIG9iZnVzY2F0aW9uLgoK V2hlbiBkb2luZyBtbWlvIGZsaXBzIGl0IHdhcyB1c2luZyBpOTE1X2dlbV9yZXF1ZXN0X2dldF9y aW5nIGJlY2F1c2UgcGFzc2luZyBOVUxMIHdvdWxkIHJlc3VsdCBpbiBhIENQVSB3YWl0LgpJZiBp dCBkaWQgd2FpdCB3aXRoIG1taW8gZmxpcHMgaXQgd2FzIGEgYnVnLCBiZWNhdXNlIGludGVsX21t aW9fZmxpcF93b3JrX2Z1bmMgZG9lcyB0aGUgd2FpdGluZyBmb3IgbW1pbyBmbGlwcy4KCj4+ICAJ aWYgKHJldCkKPj4gIAkJZ290byBjbGVhbnVwX3BlbmRpbmc7Cj4+ICAKPj4gQEAgLTEyOTkzLDcg KzEyOTk2LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKPj4gIAkJCQkgICAgICAgYm9vbCBhc3luYykKPj4gIHsKPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+PiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4gIAlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4+ICAJaW50IGksIHJldDsKPj4gIAo+PiBAQCAtMTMwMDYsNiArMTMwMTIs OSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiAgCQlyZXQgPSBpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMo Y3J0Yyk7Cj4+ICAJCWlmIChyZXQpCj4+ICAJCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJCWlmIChh dG9taWNfcmVhZCgmdG9faW50ZWxfY3J0YyhjcnRjKS0+dW5waW5fd29ya19jb3VudCkgPj0gMikK Pj4gKwkJCWZsdXNoX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+PiAgCX0KPj4gIAo+PiAgCXJl dCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4+IEBAIC0xMzAxMyw2ICsx MzAyMiwzNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+ICAJcmV0ID0gZHJtX2F0 b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+ICsJaWYgKCFyZXQgJiYg IWFzeW5jKSB7Cj4+ICsJCXUzMiByZXNldF9jb3VudGVyOwo+PiArCj4+ICsJCXJlc2V0X2NvdW50 ZXIgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKTsKPj4g KwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ICsKPj4gKwkJZm9yX2VhY2hf cGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+PiArCQkJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wbGFuZV9zdGF0ZSA9Cj4+ICsJCQkJdG9faW50 ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUpOwo+PiArCj4+ICsJCQlpZiAoIWludGVsX3BsYW5l X3N0YXRlLT53YWl0X3JlcSkKPj4gKwkJCQljb250aW51ZTsKPj4gKwo+PiArCQkJcmV0ID0gX19p OTE1X3dhaXRfcmVxdWVzdChpbnRlbF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEsCj4+ICsJCQkJCQkg IHJlc2V0X2NvdW50ZXIsIHRydWUsCj4+ICsJCQkJCQkgIE5VTEwsIE5VTEwpOwo+PiArCj4+ICsJ CQkvKiBTd2FsbG93IC1FSU8gZXJyb3JzIHRvIGFsbG93IHVwZGF0ZXMgZHVyaW5nIGh3IGxvY2t1 cC4gKi8KPj4gKwkJCWlmIChyZXQgPT0gLUVJTykKPj4gKwkJCQlyZXQgPSAwOwo+PiArCj4+ICsJ CQlpZiAocmV0KQo+PiArCQkJCWJyZWFrOwo+PiArCQl9Cj4+ICsKPj4gKwkJaWYgKCFyZXQpCj4+ ICsJCQlyZXR1cm4gMDsKPj4gKwo+PiArCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4+ICsJCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+PiAr CX0KPj4gIAo+PiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+PiAgCXJldHVy biByZXQ7Cj4+IEBAIC0xMzAzOSwxNSArMTMwNzksMTcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJCQkgICAgICAgYm9vbCBhc3lu YykKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gIAlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiAgCWlu dCByZXQgPSAwOwo+PiAgCWludCBpOwo+PiAgCWJvb2wgYW55X21zID0gZmFsc2U7Cj4+ICAKPj4g IAlyZXQgPSBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoZGV2LCBzdGF0ZSwgYXN5bmMpOwo+ PiAtCWlmIChyZXQpCj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fREVCVUdfQVRPTUlDKCJQcmVw YXJpbmcgc3RhdGUgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7Cj4+ICAJCXJldHVybiByZXQ7Cj4+ ICsJfQo+PiAgCj4+ICAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRlKTsK Pj4gIAo+PiBAQCAtMTMzMTgsNyArMTMzNjAsOCBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgCQkgKiBUaGlzIHNob3VsZCBvbmx5IGZhaWwgdXBv biBhIGh1bmcgR1BVLCBpbiB3aGljaCBjYXNlIHdlCj4+ICAJCSAqIGNhbiBzYWZlbHkgY29udGlu dWUuCj4+ICAJCSAqLwo+PiAtCQlpZiAobmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPj4gKwkJ aWYgKG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkgJiYKPj4gKwkJICAgIHRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGUpCj4+ICAJCQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfd2FpdF9yZW5kZXJpbmcob2xkX29iaiwgdHJ1ZSk7Cj4+ICAKPj4gIAkJLyogU3dhbGxvdyAt RUlPIGVycm9ycyB0byBhbGxvdyB1cGRhdGVzIGR1cmluZyBodyBsb2NrdXAuICovCj4+IEBAIC0x MzMzNSwxMSArMTMzNzgsMjEgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPj4gIAkJaWYgKHJldCkKPj4gIAkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0 byBhdHRhY2ggcGh5cyBvYmplY3RcbiIpOwo+PiAgCX0gZWxzZSB7Cj4+IC0JCXJldCA9IGludGVs X3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHBsYW5lLCBmYiwgbmV3X3N0YXRlLCBOVUxMLCBOVUxMKTsK Pj4gKwkJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoocGxhbmUsIGZiLCBuZXdfc3Rh dGUpOwo+PiAgCX0KPj4gIAo+PiAtCWlmIChyZXQgPT0gMCkKPj4gKwlpZiAocmV0ID09IDApIHsK Pj4gKwkJaWYgKG9iaiAmJiBvYmotPmxhc3Rfd3JpdGVfcmVxICYmCj4+ICsJCSAgICAhaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQob2JqLT5sYXN0X3dyaXRlX3JlcSwgdHJ1ZSkpIHsKPj4gKwkJ CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+PiArCQkJCXRvX2ludGVs X3BsYW5lX3N0YXRlKG5ld19zdGF0ZSk7Cj4+ICsKPj4gKwkJCWk5MTVfZ2VtX3JlcXVlc3RfYXNz aWduKCZwbGFuZV9zdGF0ZS0+d2FpdF9yZXEsCj4+ICsJCQkJCQlvYmotPmxhc3Rfd3JpdGVfcmVx KTsKPj4gKwkJfQo+PiArCj4+ICAJCWk5MTVfZ2VtX3RyYWNrX2ZiKG9sZF9vYmosIG9iaiwgaW50 ZWxfcGxhbmUtPmZyb250YnVmZmVyX2JpdCk7Cj4+ICsJfQo+PiAgCj4+ICAJcmV0dXJuIHJldDsK Pj4gIH0KPj4gQEAgLTEzMzU3LDkgKzEzNDEwLDEyIEBAIGludGVsX2NsZWFudXBfcGxhbmVfZmIo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICB7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHBsYW5lLT5kZXY7Cj4+ICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lKTsKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9p bnRlbF9zdGF0ZTsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGlu dGVsX2ZiX29iaihvbGRfc3RhdGUtPmZiKTsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gaW50ZWxfZmJfb2JqKHBsYW5lLT5zdGF0ZS0+ZmIpOwo+PiAgCj4+ICsJb2xkX2lu dGVsX3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUob2xkX3N0YXRlKTsKPj4gKwo+PiAgCWlm ICghb2JqICYmICFvbGRfb2JqKQo+PiAgCQlyZXR1cm47Cj4+ICAKPj4gQEAgLTEzMzcxLDYgKzEz NDI3LDkgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK Pj4gIAlpZiAoKG9sZF9vYmogJiYgKG9sZF9vYmotPmZyb250YnVmZmVyX2JpdHMgJiBpbnRlbF9w bGFuZS0+ZnJvbnRidWZmZXJfYml0KSkgfHwKPj4gIAkgICAgKG9iaiAmJiAhKG9iai0+ZnJvbnRi dWZmZXJfYml0cyAmIGludGVsX3BsYW5lLT5mcm9udGJ1ZmZlcl9iaXQpKSkKPj4gIAkJaTkxNV9n ZW1fdHJhY2tfZmIob2xkX29iaiwgb2JqLCBpbnRlbF9wbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsK Pj4gKwo+PiArCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvbGRfaW50ZWxfc3RhdGUtPndhaXRf cmVxLCBOVUxMKTsKPj4gKwo+PiAgfQo+PiAgCj4+ICBpbnQKPj4gQEAgLTE1MzQ4LDggKzE1NDA3 LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4+ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPj4gIAkJcmV0ID0gaW50ZWxf cGluX2FuZF9mZW5jZV9mYl9vYmooYy0+cHJpbWFyeSwKPj4gIAkJCQkJCSBjLT5wcmltYXJ5LT5m YiwKPj4gLQkJCQkJCSBjLT5wcmltYXJ5LT5zdGF0ZSwKPj4gLQkJCQkJCSBOVUxMLCBOVUxMKTsK Pj4gKwkJCQkJCSBjLT5wcmltYXJ5LT5zdGF0ZSk7Cj4+ICAJCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+PiAgCQlpZiAocmV0KSB7Cj4+ICAJCQlEUk1fRVJST1IoImZhaWxlZCB0 byBwaW4gYm9vdCBmYiBvbiBwaXBlICVkXG4iLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ PiBpbmRleCBjZmRiMGYyNzE0Y2QuLjg1MmEwZDE5MmY4MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPj4gQEAgLTI3MCw2ICsyNzAsOSBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgewo+PiAgCWludCBzY2FsZXJfaWQ7Cj4+ICAKPj4gIAlzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0 ZV9jb2xvcmtleSBja2V5Owo+PiArCj4+ICsJLyogYXN5bmMgZmxpcCByZWxhdGVkIHN0cnVjdHVy ZXMgKi8KPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndhaXRfcmVxOwo+PiAgfTsK Pj4gIAo+PiAgc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnIHsKPj4gQEAgLTEwNTUs OSArMTA1OCw3IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAJCQkJICAgIHN0cnVjdCBkcm1fbW9kZXNldF9h Y3F1aXJlX2N0eCAqY3R4KTsKPj4gIGludCBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKPj4gLQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSwKPj4gLQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4+ IC0JCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVkX3JlcXVl c3QpOwo+PiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKTsKPj4gIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+PiAgX19pbnRlbF9mcmFtZWJ1ZmZl cl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAkJCSAgIHN0cnVjdCBkcm1fbW9k ZV9mYl9jbWQyICptb2RlX2NtZCwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4+IGlu ZGV4IDY1MzI5MTI3ZjBiOS4uNTFhZmVlNjFiYTdlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiZGV2LmMKPj4gQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgaW50IGludGVsZmJfYWxs b2Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPj4gIAl9Cj4+ICAKPj4gIAkvKiBGbHVz aCBldmVyeXRoaW5nIG91dCwgd2UnbGwgYmUgZG9pbmcgR1RUIG9ubHkgZnJvbSBub3cgb24gKi8K Pj4gLQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihOVUxMLCBmYiwgTlVMTCwgTlVM TCwgTlVMTCk7Cj4+ICsJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooTlVMTCwgZmIs IE5VTEwpOwo+PiAgCWlmIChyZXQpIHsKPj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIG9i ajogJWRcbiIsIHJldCk7Cj4+ICAJCWdvdG8gb3V0X2ZiOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ZlcmxheS5jCj4+IGluZGV4IDQ0NDU0MjY5NmEyYy4uMWIxOGNjNmJkYmQ2IDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4+IEBAIC03NDksNyArNzQ5LDExIEBA IHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXksCj4+ICAJaWYgKHJldCAhPSAwKQo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+ IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKG5ld19ibywgMCwg TlVMTCwgTlVMTCwKPj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcobmV3 X2JvLCB0cnVlKTsKPiBBZ2FpbiwgSSdtIG5vdCBzdXBlciBmYW1pbGlhciB3aXRoIEdFTSBpbnRl cm5hbHMuLi5jYW4gdGhpcyBiZSBhCj4gYmVoYXZpb3IgY2hhbmdlIGZyb20gdGhlIHByZXZpb3Vz IGNvZGU/ICBPcmlnaW5hbGx5IHRoZSBwaW5fdG9fZGlzcGxheQo+IHBsYW5lIGZ1bmN0aW9uIHdv dWxkIGhhdmUgcGFzc2VkIChvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4gPT0gMCkKPiBh cyB0aGUgc2Vjb25kIHBhcmFtZXRlciBoZXJlIChyZWFkb25seSksIGJ1dCB5b3UncmUgdW5jb25k aXRpb25hbGx5Cj4gcGFzc2luZyB0cnVlLiAgQ2FuIHRoZXJlIG5vdCBiZSBwZW5kaW5nIHdyaXRl cyBhZ2FpbnN0IHRoaXMgb2JqZWN0PwpJIGRvbid0IHRoaW5rIGl0IHdvdWxkIGJlIGltcG9ydGFu dCBpbiB0aGUgY2FzZSBvZiBvdmVybGF5cy4gQnV0IG1heWJlIEkgc2hvdWxkCmp1c3QgcmVwbGFj ZSBpdCB3aXRoIGEgY2FsbCB0byBpOTE1X2dlbV9vYmplY3Rfc3luYyBhbmQgd2FpdCBmb3IgZnVs bCBvYmplY3QgaWRsZS4KPiBPdmVyYWxsIEkgZmVlbCBsaWtlIHRoaXMgcGF0Y2ggZ29lcyBhIGJp dCB0b28gZmFyIG91dHNpZGUgbXkgYXJlYSBvZgo+IGV4cGVydGlzZSBmb3IgbWUgdG8gc2VydmUg YXMgdGhlIGZpbmFsIHJldmlld2VyIGZvciBpdC4gIE1heWJlIGl0IHdvdWxkCj4gYmUgZ29vZCB0 byBoYXZlIHNvbWVvbmUgbGlrZSBDaHJpcyBvciBWaWxsZSB0YWtlIGEgbG9vayBzaW5jZSB0aGV5 IGhhdmUKPiBhIGxvdCBtb3JlIGV4cGVyaWVuY2UgaW4gdGhpcyBhcmVhLgo+ClNsaWdodGx5IG91 dHNpZGUgbXkgYXJlYSB0b28uIDopCgp+TWFhcnRlbgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=