From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4] drm/i915: Signal first fence from irq handler if complete Date: Mon, 27 Feb 2017 10:04:15 +0000 Message-ID: <7201cff8-6a9c-1e9e-73fc-ecd1d5eabc92@linux.intel.com> References: <20170224180149.8737-2-chris@chris-wilson.co.uk> <20170225100503.25980-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 31A276E364 for ; Mon, 27 Feb 2017 10:04:18 +0000 (UTC) In-Reply-To: <20170225100503.25980-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzAyLzIwMTcgMTA6MDUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBcyBleGVjbGlzdHMg YW5kIG90aGVyIG5vbi1zZW1hcGhvcmUgbXVsdGktZW5naW5lIGRldmljZXMgY29vcmRpbmF0ZQo+ IGJldHdlZW4gZW5naW5lcyB1c2luZyBpbnRlcnJ1cHRzLCB3ZSBjYW4gc2hhdmUgb2ZmIGEgZmV3 IDEwcyBvZgo+IG1pY3Jvc2Vjb25kIG9mIHNjaGVkdWxpbmcgbGF0ZW5jeSBieSBkb2luZyB0aGUg ZmVuY2Ugc2lnbmFsaW5nIGZyb20gdGhlCj4gaW50ZXJydXB0IGFzIG9wcG9zZWQgdG8gYSBSVCBr dGhyZWFkLiAoUmVhbGlzdGljYWxseSB0aGUgZGVsYXkgYWRkcwo+IGFib3V0IDElIHRvIGFuIGlu ZGl2aWR1YWwgY3Jvc3MtZW5naW5lIHdvcmtsb2FkLikgV2Ugb25seSBzaWduYWwgdGhlCj4gZmly c3QgZmVuY2UgaW4gb3JkZXIgdG8gbGltaXQgdGhlIGFtb3VudCBvZiB3b3JrIHdlIG1vdmUgaW50 byB0aGUKPiBpbnRlcnJ1cHQgaGFuZGxlci4gV2UgYWxzbyBoYXZlIHRvIHJlbWVtYmVyIHRoYXQg b3VyIGJyZWFkY3J1bWJzIG1heSBiZQo+IHVub3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGlu dGVycnVwdCBhbmQgc28gd2Ugc3RpbGwgcmVxdWlyZSB0aGUKPiB3YWl0ZXIgcHJvY2VzcyB0byBw ZXJmb3JtIHNvbWUgaGVhdnl3ZWlnaHQgY29oZXJlbmN5IGZpeHVwcywgYXMgd2VsbCBhcwo+IHRy YXZlcnNpbmcgdGhlIHRyZWUgb2Ygd2FpdGVycy4KPgo+IHYyOiBObyBuZWVkIGZvciBlYXJseSBl eGl0IGluIGlycSBoYW5kbGVyIC0gaXQgYnJlYWtzIHRoZSBmbG93IGJldHdlZW4KPiBwYXRjaGVz IGFuZCBwcmV2ZW50cyB0aGUgdHJhY2Vwb2ludAo+IHYzOiBSZXN0b3JlIHJjdSBob2xkIGFjcm9z cyBpcnEgc2lnbmFsaW5nIG9mIHJlcXVlc3QKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgICB8IDEzICsrKysrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZXF1ZXN0LmMgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5oICB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAg ICAgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIHwgMzIgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgIDggKysr LS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygt KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNTZjYWFiMzVmMjE2Li4xNmM1ZTdh MzdlYmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDA2Myw5ICs0MDYzLDkg QEAgX19pOTE1X3JlcXVlc3RfaXJxX2NvbXBsZXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICAJICogaXMgd29rZW4uCj4gIAkgKi8KPiAgCWlmIChlbmdpbmUtPmly cV9zZXFub19iYXJyaWVyICYmCj4gLQkgICAgcmN1X2FjY2Vzc19wb2ludGVyKGVuZ2luZS0+YnJl YWRjcnVtYnMuaXJxX3NlcW5vX2JoKSA9PSBjdXJyZW50ICYmCj4gIAkgICAgdGVzdF9hbmRfY2xl YXJfYml0KEVOR0lORV9JUlFfQlJFQURDUlVNQiwgJmVuZ2luZS0+aXJxX3Bvc3RlZCkpIHsKPiAt CQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKPiArCQlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMg KmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKPiArCQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4g IAkJLyogVGhlIG9yZGVyaW5nIG9mIGlycV9wb3N0ZWQgdmVyc3VzIGFwcGx5aW5nIHRoZSBiYXJy aWVyCj4gIAkJICogaXMgY3J1Y2lhbC4gVGhlIGNsZWFyaW5nIG9mIHRoZSBjdXJyZW50IGlycV9w b3N0ZWQgbXVzdAo+IEBAIC00MDg3LDE3ICs0MDg3LDE2IEBAIF9faTkxNV9yZXF1ZXN0X2lycV9j b21wbGV0ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgCQkgKiB0 aGUgc2Vxbm8gYmVmb3JlIHdlIGJlbGlldmUgaXQgY29oZXJlbnQgc2luY2UgdGhleSBzZWUKPiAg CQkgKiBpcnFfcG9zdGVkID09IGZhbHNlIGJ1dCB3ZSBhcmUgc3RpbGwgcnVubmluZykuCj4gIAkJ ICovCj4gLQkJcmN1X3JlYWRfbG9jaygpOwo+IC0JCXRzayA9IHJjdV9kZXJlZmVyZW5jZShlbmdp bmUtPmJyZWFkY3J1bWJzLmlycV9zZXFub19iaCk7Cj4gLQkJaWYgKHRzayAmJiB0c2sgIT0gY3Vy cmVudCkKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmYi0+bG9jaywgZmxhZ3MpOwo+ICsJCWlmIChi LT5maXJzdF93YWl0ICYmIGItPmZpcnN0X3dhaXQtPnRzayAhPSBjdXJyZW50KQo+ICAJCQkvKiBO b3RlIHRoYXQgaWYgdGhlIGJvdHRvbS1oYWxmIGlzIGNoYW5nZWQgYXMgd2UKPiAgCQkJICogYXJl IHNlbmRpbmcgdGhlIHdha2UtdXAsIHRoZSBuZXcgYm90dG9tLWhhbGYgd2lsbAo+ICAJCQkgKiBi ZSB3b2tlbiBieSB3aG9tZXZlciBtYWRlIHRoZSBjaGFuZ2UuIFdlIG9ubHkgaGF2ZQo+ICAJCQkg KiB0byB3b3JyeSBhYm91dCB3aGVuIHdlIHN0ZWFsIHRoZSBpcnEtcG9zdGVkIGZvcgo+ICAJCQkg KiBvdXJzZWxmLgo+ICAJCQkgKi8KPiAtCQkJd2FrZV91cF9wcm9jZXNzKHRzayk7Cj4gLQkJcmN1 X3JlYWRfdW5sb2NrKCk7Cj4gKwkJCXdha2VfdXBfcHJvY2VzcyhiLT5maXJzdF93YWl0LT50c2sp Owo+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmItPmxvY2ssIGZsYWdzKTsKPgo+ICAJCWlm IChfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgc2Vxbm8pKQo+ICAJCQlyZXR1cm4g dHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gaW5kZXggZmJm ZWI1ZjhkMDY5Li43N2MzZWU3YTNmZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5jCj4gQEAgLTEwODMsNyArMTA4Myw3IEBAIGxvbmcgaTkxNV93YWl0X3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAlpZiAoZmxhZ3MgJiBJOTE1 X1dBSVRfTE9DS0VEKQo+ICAJCWFkZF93YWl0X3F1ZXVlKGVycnEsICZyZXNldCk7Cj4KPiAtCWlu dGVsX3dhaXRfaW5pdCgmd2FpdCk7Cj4gKwlpbnRlbF93YWl0X2luaXQoJndhaXQsIHJlcSk7Cj4K PiAgcmVzdGFydDoKPiAgCWRvIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5oCj4gaW5kZXggNWY3M2Q4YzBhMzhhLi4wZWZlZTg3OWRmMjMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCj4gQEAgLTMyLDEwICszMiwxMiBAQAo+Cj4gIHN0 cnVjdCBkcm1fZmlsZTsKPiAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7Cj4gK3N0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdDsKPgo+ICBzdHJ1Y3QgaW50ZWxfd2FpdCB7Cj4gIAlzdHJ1Y3Qg cmJfbm9kZSBub2RlOwo+ICAJc3RydWN0IHRhc2tfc3RydWN0ICp0c2s7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gIAl1MzIgc2Vxbm87Cj4gIH07Cj4KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCBiYzcwZTJjNDUxYjIuLmJjNTIwZWU4ZDZmZSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0xMDMzLDEyICsxMDMzLDQyIEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX3Jwc19jaGFuZ2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+Cj4gIHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0JYm9vbCB3YWl0ZXJzOwo+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4gKwlzdHJ1Y3QgaW50ZWxfd2FpdCAqd2Fp dDsKPgo+ICAJYXRvbWljX2luYygmZW5naW5lLT5pcnFfY291bnQpOwo+ICAJc2V0X2JpdChFTkdJ TkVfSVJRX0JSRUFEQ1JVTUIsICZlbmdpbmUtPmlycV9wb3N0ZWQpOwo+IC0Jd2FpdGVycyA9IGlu dGVsX2VuZ2luZV93YWtldXAoZW5naW5lKTsKPiAtCXRyYWNlX2ludGVsX2VuZ2luZV9ub3RpZnko ZW5naW5lLCB3YWl0ZXJzKTsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwo+ICsJc3Bpbl9s b2NrKCZlbmdpbmUtPmJyZWFkY3J1bWJzLmxvY2spOwo+ICsJd2FpdCA9IGVuZ2luZS0+YnJlYWRj cnVtYnMuZmlyc3Rfd2FpdDsKPiArCWlmICh3YWl0KSB7Cj4gKwkJLyogV2UgdXNlIGEgY2FsbGJh Y2sgZnJvbSB0aGUgZG1hLWZlbmNlIHRvIHN1Ym1pdAo+ICsJCSAqIHJlcXVlc3RzIGFmdGVyIHdh aXRpbmcgb24gb3VyIG93biByZXF1ZXN0cy4gVG8KPiArCQkgKiBlbnN1cmUgbWluaW11bSBkZWxh eSBpbiBxdWV1aW5nIHRoZSBuZXh0IHJlcXVlc3QgdG8KPiArCQkgKiBoYXJkd2FyZSwgc2lnbmFs IHRoZSBmZW5jZSBub3cgcmF0aGVyIHRoYW4gd2FpdCBmb3IKPiArCQkgKiB0aGUgc2lnbmFsZXIg dG8gYmUgd29rZW4gdXAuIFdlIHN0aWxsIHdha2UgdXAgdGhlCj4gKwkJICogd2FpdGVyIGluIG9y ZGVyIHRvIGhhbmRsZSB0aGUgaXJxLXNlcW5vIGNvaGVyZW5jeQo+ICsJCSAqIGlzc3VlcyAod2Ug bWF5IHJlY2VpdmUgdGhlIGludGVycnVwdCBiZWZvcmUgdGhlCj4gKwkJICogc2Vxbm8gaXMgd3Jp dHRlbiwgc2VlIF9faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZSgpKQo+ICsJCSAqIGFuZCB0byBo YW5kbGUgY29hbGVzY2luZyBvZiBtdWx0aXBsZSBzZXFubyB1cGRhdGVzCj4gKwkJICogYW5kIG1h bnkgd2FpdGVycy4KPiArCQkgKi8KPiArCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5n aW5lX2dldF9zZXFubyhlbmdpbmUpLAo+ICsJCQkJICAgICAgd2FpdC0+c2Vxbm8pKQo+ICsJCQly cSA9IHdhaXQtPnJlcXVlc3Q7Cj4gKwo+ICsJCXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50c2spOwo+ ICsJfQo+ICsJc3Bpbl91bmxvY2soJmVuZ2luZS0+YnJlYWRjcnVtYnMubG9jayk7Cj4gKwo+ICsJ aWYgKHJxKQo+ICsJCWRtYV9mZW5jZV9zaWduYWwoJnJxLT5mZW5jZSk7Cj4gKwo+ICsJcmN1X3Jl YWRfdW5sb2NrKCk7Cj4gKwo+ICsJdHJhY2VfaW50ZWxfZW5naW5lX25vdGlmeShlbmdpbmUsIHdh aXQpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgdmx2X2MwX3JlYWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9icmVhZGNydW1icy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMu Ywo+IGluZGV4IDY0ZTFiMGMyZDhiNi4uYmE1ZjcyZmI0ODkwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gQEAgLTI4LDI2ICsyOCwxOCBAQAo+Cj4gIHVu c2lnbmVkIGludCBpbnRlbF9lbmdpbmVfd2FrZXVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgewo+ICsJc3RydWN0IGludGVsX3dhaXQgKndhaXQ7Cj4gKwl1bnNpZ25lZCBsb25n IGZsYWdzOwo+ICAJdW5zaWduZWQgaW50IHJldCA9IDA7Cj4KPiAtCS8qIE5vdGUgdGhhdCBmb3Ig dGhpcyBub3QgdG8gZGFuZ2Vyb3VzbHkgY2hhc2UgYSBkYW5nbGluZyBwb2ludGVyLAo+IC0JICog d2UgbXVzdCBob2xkIHRoZSByY3VfcmVhZF9sb2NrIGhlcmUuCj4gLQkgKgo+IC0JICogQWxzbyBu b3RlIHRoYXQgdHNrIGlzIGxpa2VseSB0byBiZSBpbiAhVEFTS19SVU5OSU5HIHN0YXRlIHNvIGFu Cj4gLQkgKiBlYXJseSB0ZXN0IGZvciB0c2stPnN0YXRlICE9IFRBU0tfUlVOTklORyBiZWZvcmUg d2FrZV91cF9wcm9jZXNzKCkKPiAtCSAqIGlzIHVubGlrZWx5IHRvIGJlIGJlbmVmaWNpYWwuCj4g LQkgKi8KPiAtCWlmIChpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpKSB7Cj4gLQkJc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2s7Cj4gLQo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+ YnJlYWRjcnVtYnMubG9jaywgZmxhZ3MpOwo+ICsJd2FpdCA9IGVuZ2luZS0+YnJlYWRjcnVtYnMu Zmlyc3Rfd2FpdDsKPiArCWlmICh3YWl0KSB7Cj4gIAkJcmV0ID0gRU5HSU5FX1dBS0VVUF9XQUlU RVI7Cj4gLQo+IC0JCXJjdV9yZWFkX2xvY2soKTsKPiAtCQl0c2sgPSByY3VfZGVyZWZlcmVuY2Uo ZW5naW5lLT5icmVhZGNydW1icy5pcnFfc2Vxbm9fYmgpOwo+IC0JCWlmICh0c2sgJiYgIXdha2Vf dXBfcHJvY2Vzcyh0c2spKQo+ICsJCWlmICghd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRzaykpCj4g IAkJCXJldCB8PSBFTkdJTkVfV0FLRVVQX0FDVElWRTsKPiAtCQlyY3VfcmVhZF91bmxvY2soKTsK PiAgCX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YnJlYWRjcnVtYnMubG9j aywgZmxhZ3MpOwo+Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTMwMSw3ICsyOTMsNiBAQCBz dGF0aWMgYm9vbCBfX2ludGVsX2VuZ2luZV9hZGRfd2FpdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gIAl9Cj4gIAlyYl9saW5rX25vZGUoJndhaXQtPm5vZGUsIHBhcmVudCwgcCk7 Cj4gIAlyYl9pbnNlcnRfY29sb3IoJndhaXQtPm5vZGUsICZiLT53YWl0ZXJzKTsKPiAtCUdFTV9C VUdfT04oIWZpcnN0ICYmICFyY3VfYWNjZXNzX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoKSk7Cj4K PiAgCWlmIChjb21wbGV0ZWQpIHsKPiAgCQlzdHJ1Y3QgcmJfbm9kZSAqbmV4dCA9IHJiX25leHQo Y29tcGxldGVkKTsKPiBAQCAtMzEwLDcgKzMwMSw2IEBAIHN0YXRpYyBib29sIF9faW50ZWxfZW5n aW5lX2FkZF93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCQlpZiAobmV4 dCAmJiBuZXh0ICE9ICZ3YWl0LT5ub2RlKSB7Cj4gIAkJCUdFTV9CVUdfT04oZmlyc3QpOwo+ICAJ CQliLT5maXJzdF93YWl0ID0gdG9fd2FpdChuZXh0KTsKPiAtCQkJcmN1X2Fzc2lnbl9wb2ludGVy KGItPmlycV9zZXFub19iaCwgYi0+Zmlyc3Rfd2FpdC0+dHNrKTsKPiAgCQkJLyogQXMgdGhlcmUg aXMgYSBkZWxheSBiZXR3ZWVuIHJlYWRpbmcgdGhlIGN1cnJlbnQKPiAgCQkJICogc2Vxbm8sIHBy b2Nlc3NpbmcgdGhlIGNvbXBsZXRlZCB0YXNrcyBhbmQgc2VsZWN0aW5nCj4gIAkJCSAqIHRoZSBu ZXh0IHdhaXRlciwgd2UgbWF5IGhhdmUgbWlzc2VkIHRoZSBpbnRlcnJ1cHQKPiBAQCAtMzM3LDcg KzMyNyw2IEBAIHN0YXRpYyBib29sIF9faW50ZWxfZW5naW5lX2FkZF93YWl0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCWlmIChmaXJzdCkgewo+ICAJCUdFTV9CVUdfT04ocmJf Zmlyc3QoJmItPndhaXRlcnMpICE9ICZ3YWl0LT5ub2RlKTsKPiAgCQliLT5maXJzdF93YWl0ID0g d2FpdDsKPiAtCQlyY3VfYXNzaWduX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoLCB3YWl0LT50c2sp Owo+ICAJCS8qIEFmdGVyIGFzc2lnbmluZyBvdXJzZWx2ZXMgYXMgdGhlIG5ldyBib3R0b20taGFs Ziwgd2UgbXVzdAo+ICAJCSAqIHBlcmZvcm0gYSBjdXJzb3J5IGNoZWNrIHRvIHByZXZlbnQgYSBt aXNzZWQgaW50ZXJydXB0Lgo+ICAJCSAqIEVpdGhlciB3ZSBtaXNzIHRoZSBpbnRlcnJ1cHQgd2hp bHN0IHByb2dyYW1taW5nIHRoZSBoYXJkd2FyZSwKPiBAQCAtMzQ4LDcgKzMzNyw2IEBAIHN0YXRp YyBib29sIF9faW50ZWxfZW5naW5lX2FkZF93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgCQkgKi8KPiAgCQlfX2ludGVsX2JyZWFkY3J1bWJzX2VuYWJsZV9pcnEoYik7Cj4g IAl9Cj4gLQlHRU1fQlVHX09OKCFyY3VfYWNjZXNzX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoKSk7 Cj4gIAlHRU1fQlVHX09OKCFiLT5maXJzdF93YWl0KTsKPiAgCUdFTV9CVUdfT04ocmJfZmlyc3Qo JmItPndhaXRlcnMpICE9ICZiLT5maXJzdF93YWl0LT5ub2RlKTsKPgo+IEBAIC0zOTYsOCArMzg0 LDYgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCWNvbnN0IGludCBwcmlvcml0eSA9IHdha2V1cF9wcmlv cml0eShiLCB3YWl0LT50c2spOwo+ICAJCXN0cnVjdCByYl9ub2RlICpuZXh0Owo+Cj4gLQkJR0VN X0JVR19PTihyY3VfYWNjZXNzX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoKSAhPSB3YWl0LT50c2sp Owo+IC0KPiAgCQkvKiBXZSBhcmUgdGhlIGN1cnJlbnQgYm90dG9tLWhhbGYuIEZpbmQgdGhlIG5l eHQgY2FuZGlkYXRlLAo+ICAJCSAqIHRoZSBmaXJzdCB3YWl0ZXIgaW4gdGhlIHF1ZXVlIG9uIHRo ZSByZW1haW5pbmcgb2xkZXN0Cj4gIAkJICogcmVxdWVzdC4gQXMgbXVsdGlwbGUgc2Vxbm9zIG1h eSBjb21wbGV0ZSBpbiB0aGUgdGltZSBpdAo+IEBAIC00MzksMTMgKzQyNSwxMSBAQCBzdGF0aWMg dm9pZCBfX2ludGVsX2VuZ2luZV9yZW1vdmVfd2FpdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gIAkJCSAqIGV4Y2VwdGlvbiByYXRoZXIgdGhhbiBhIHNlcW5vIGNvbXBsZXRpb24u Cj4gIAkJCSAqLwo+ICAJCQliLT5maXJzdF93YWl0ID0gdG9fd2FpdChuZXh0KTsKPiAtCQkJcmN1 X2Fzc2lnbl9wb2ludGVyKGItPmlycV9zZXFub19iaCwgYi0+Zmlyc3Rfd2FpdC0+dHNrKTsKPiAg CQkJaWYgKGItPmZpcnN0X3dhaXQtPnNlcW5vICE9IHdhaXQtPnNlcW5vKQo+ICAJCQkJX19pbnRl bF9icmVhZGNydW1ic19lbmFibGVfaXJxKGIpOwo+ICAJCQl3YWtlX3VwX3Byb2Nlc3MoYi0+Zmly c3Rfd2FpdC0+dHNrKTsKPiAgCQl9IGVsc2Ugewo+ICAJCQliLT5maXJzdF93YWl0ID0gTlVMTDsK PiAtCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGItPmlycV9zZXFub19iaCwgTlVMTCk7Cj4gIAkJCV9f aW50ZWxfYnJlYWRjcnVtYnNfZGlzYWJsZV9pcnEoYik7Cj4gIAkJfQo+ICAJfSBlbHNlIHsKPiBA QCAtNDU5LDcgKzQ0Myw2IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZW5naW5lX3JlbW92ZV93YWl0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCUdFTV9CVUdfT04oYi0+Zmlyc3Rf d2FpdCA9PSB3YWl0KTsKPiAgCUdFTV9CVUdfT04ocmJfZmlyc3QoJmItPndhaXRlcnMpICE9Cj4g IAkJICAgKGItPmZpcnN0X3dhaXQgPyAmYi0+Zmlyc3Rfd2FpdC0+bm9kZSA6IE5VTEwpKTsKPiAt CUdFTV9CVUdfT04oIXJjdV9hY2Nlc3NfcG9pbnRlcihiLT5pcnFfc2Vxbm9fYmgpIF4gUkJfRU1Q VFlfUk9PVCgmYi0+d2FpdGVycykpOwo+ICB9Cj4KPiAgdm9pZCBpbnRlbF9lbmdpbmVfcmVtb3Zl X3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IEBAIC02MjEsNiArNjA0LDcg QEAgdm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkJcmV0dXJuOwo+Cj4gIAlyZXF1ZXN0LT5zaWduYWxpbmcu d2FpdC50c2sgPSBiLT5zaWduYWxlcjsKPiArCXJlcXVlc3QtPnNpZ25hbGluZy53YWl0LnJlcXVl c3QgPSByZXF1ZXN0Owo+ICAJcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQuc2Vxbm8gPSBzZXFubzsK PiAgCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDdkNzUzZGMxYjg5ZC4uOTc0ZWMxMWQyYjFkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0yMzUsOCAr MjM1LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAkgKiB0aGUgb3ZlcmhlYWQgb2Yg d2FraW5nIHRoYXQgY2xpZW50IGlzIG11Y2ggcHJlZmVycmVkLgo+ICAJICovCj4gIAlzdHJ1Y3Qg aW50ZWxfYnJlYWRjcnVtYnMgewo+IC0JCXN0cnVjdCB0YXNrX3N0cnVjdCBfX3JjdSAqaXJxX3Nl cW5vX2JoOyAvKiBiaCBmb3IgaW50ZXJydXB0cyAqLwo+IC0KPiAgCQlzcGlubG9ja190IGxvY2s7 IC8qIHByb3RlY3RzIHRoZSBsaXN0cyBvZiByZXF1ZXN0czsgaXJxc2FmZSAqLwo+ICAJCXN0cnVj dCByYl9yb290IHdhaXRlcnM7IC8qIHNvcnRlZCBieSByZXRpcmVtZW50LCBwcmlvcml0eSAqLwo+ ICAJCXN0cnVjdCByYl9yb290IHNpZ25hbHM7IC8qIHNvcnRlZCBieSByZXRpcmVtZW50ICovCj4g QEAgLTU4Miw5ICs1ODAsMTEgQEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfaHdzX3NlcW5vX2Fk ZHJlc3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAvKiBpbnRlbF9icmVhZGNy dW1icy5jIC0tIHVzZXIgaW50ZXJydXB0IGJvdHRvbS1oYWxmIGZvciB3YWl0ZXJzICovCj4gIGlu dCBpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwo+Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF93YWl0X2luaXQoc3RydWN0IGlu dGVsX3dhaXQgKndhaXQpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF93YWl0X2luaXQoc3Ry dWN0IGludGVsX3dhaXQgKndhaXQsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJxKQo+ICB7Cj4gIAl3YWl0LT50c2sgPSBjdXJyZW50Owo+ICsJd2FpdC0+cmVxdWVzdCA9 IHJxOwo+ICB9Cj4KPiAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhaXRfaW5pdF9mb3Jfc2Vx bm8oc3RydWN0IGludGVsX3dhaXQgKndhaXQsIHUzMiBzZXFubykKPiBAQCAtNjM5LDcgKzYzOSw3 IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NhbmNlbF9zaWduYWxpbmcoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPgo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZW5naW5l X2hhc193YWl0ZXIoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4g LQlyZXR1cm4gcmN1X2FjY2Vzc19wb2ludGVyKGVuZ2luZS0+YnJlYWRjcnVtYnMuaXJxX3NlcW5v X2JoKTsKPiArCXJldHVybiBSRUFEX09OQ0UoZW5naW5lLT5icmVhZGNydW1icy5maXJzdF93YWl0 KTsKPiAgfQo+Cj4gIHVuc2lnbmVkIGludCBpbnRlbF9lbmdpbmVfd2FrZXVwKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4KClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK