From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 21/25] drm/i915: Convert trace-irq to the breadcrumb waiter Date: Mon, 27 Jun 2016 12:38:37 +0100 Message-ID: <5771103D.4070609@linux.intel.com> References: <1466849588-17558-1-git-send-email-chris@chris-wilson.co.uk> <1466849588-17558-22-git-send-email-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id ED13B6E27B for ; Mon, 27 Jun 2016 11:38:39 +0000 (UTC) In-Reply-To: <1466849588-17558-22-git-send-email-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 Ck9uIDI1LzA2LzE2IDExOjEzLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gSWYgd2UgY29udmVydCB0 aGUgdHJhY2luZyBvdmVyIGZyb20gZGlyZWN0IHVzZSBvZiByaW5nLT5pcnFfZ2V0KCkgYW5kCj4g b3ZlciB0byB0aGUgYnJlYWRjcnVtYiBpbmZyYXN0cnVjdHVyZSwgd2Ugb25seSBoYXZlIGEgc2lu Z2xlIHVzZXIgb2YgdGhlCj4gcmluZy0+aXJxX2dldCBhbmQgc28gd2Ugd2lsbCBiZSBhYmxlIHRv IHNpbXBsaWZ5IHRoZSBkcml2ZXIgcm91dGluZXMKPiAoZWxpbWluYXRpbmcgdGhlIHJlZHVuZGFu dCB2YWxpZGF0aW9uIGFuZCBpcnEgcmVmY291bnRpbmcpLgo+Cj4gUHJvY2VzcyBjb250ZXh0IGlz IHByZWZlcnJlZCBvdmVyIHNvZnRpcnEgKG9yIGV2ZW4gaGFyZGlycSkgZm9yIGEgY291cGxlCj4g b2YgcmVhc29uczoKPgo+ICAgLSB3ZSBhbHJlYWR5IHV0aWxpemUgcHJvY2VzcyBjb250ZXh0IHRv IGhhdmUgZmFzdCB3YWtldXAgb2YgYSBzaW5nbGUKPiAgICAgY2xpZW50IChpLmUuIHRoZSBjbGll bnQgd2FpdGluZyBmb3IgdGhlIEdQVSBpbnNwZWN0cyB0aGUgc2Vxbm8gZm9yCj4gICAgIGl0c2Vs ZiBmb2xsb3dpbmcgYW4gaW50ZXJydXB0IHRvIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBhIGNvbnRl eHQKPiAgICAgc3dpdGNoIGJlZm9yZSBpdCByZXR1cm5zIHRvIHVzZXJzcGFjZSkKPgo+ICAgLSBl bmdpbmUtPmlycV9zZXFubygpIGlzIG5vdCBzdWl0YWJsZSBmb3IgdXNlIGZyb20gYW4gc29mdGly cS9oYXJkaXJxCj4gICAgIGNvbnRleHQgYXMgd2UgbWF5IHJlcXVpcmUgbG9uZyB3YWl0cyAoMTAw LTI1MHVzKSB0byBlbnN1cmUgdGhlIHNlcW5vCj4gICAgIHdyaXRlIGlzIHBvc3RlZCBiZWZvcmUg d2UgcmVhZCBpdCBmcm9tIHRoZSBDUFUKPgo+IEEgc2lnbmFsaW5nIGZyYW1ld29yayBpcyBhIHJl cXVpcmVtZW50IGZvciBlbmFibGluZyBkbWEtZmVuY2VzLgo+Cj4gdjI6IE1vdmUgdG8gYSBzaWdu YWxpbmcgZnJhbWV3b3JrIGJhc2VkIHVwb24gdGhlIHdhaXRlci4KPiB2MzogVHJhY2sgdGhlIGZp cnN0LXNpZ25hbCB0byBhdm9pZCBoYXZpbmcgdG8gd2FsayB0aGUgcmJ0cmVlIGV2ZXJ5dGltZS4K PiB2NDogTWFyayB0aGUgc2lnbmFsZXIgdGhyZWFkIGFzIFJUIHByaW9yaXR5IHRvIHJlZHVjZSBs YXRlbmN5IGluIHRoZQo+IGluZGlyZWN0IHdha2V1cHMuCj4gdjU6IE1ha2UgZmFpbHVyZSB0byBh bGxvY2F0ZSB0aGUgdGhyZWFkIGZhdGFsLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgIHwgICA4IC0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jICAgICAgICAgIHwgICA5ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RyYWNlLmggICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9i cmVhZGNydW1icy5jIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgfCAgIDggKy0KPiAgIDUgZmls ZXMgY2hhbmdlZCwgMjAxIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDA5Yjk2ZDE5M2E1Li5iNzA4OWNlZGI4MGMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzk2NSwxNCArMzk2NSw2IEBAIHdhaXRfcmVt YWluaW5nX21zX2Zyb21famlmZmllcyh1bnNpZ25lZCBsb25nIHRpbWVzdGFtcF9qaWZmaWVzLCBp bnQgdG9fd2FpdF9tcykKPiAgIAkJCSAgICBzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJs ZShyZW1haW5pbmdfamlmZmllcyk7Cj4gICAJfQo+ICAgfQo+IC0KPiAtc3RhdGljIGlubGluZSB2 b2lkIGk5MTVfdHJhY2VfaXJxX2dldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4g LQkJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAtewo+IC0JaWYg KGVuZ2luZS0+dHJhY2VfaXJxX3JlcSA9PSBOVUxMICYmIGVuZ2luZS0+aXJxX2dldChlbmdpbmUp KQo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZlbmdpbmUtPnRyYWNlX2lycV9yZXEsIHJl cSk7Cj4gLX0KPiAtCj4gICBzdGF0aWMgaW5saW5lIGJvb2wgX19pOTE1X3JlcXVlc3RfaXJxX2Nv bXBsZXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IGluZGV4IGZkNTliMzBhMDI0ZC4uZTZkYWExZWU0ZDJkIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gQEAgLTI3NDUsNyArMjc0NSw4IEBAIGk5MTVfZ2VtX2luaXRfc2Vx bm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgc2Vxbm8pCj4KPiAgIAkv KiBJZiB0aGUgc2Vxbm8gd3JhcHMgYXJvdW5kLCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBicmVhZGNy dW1iIHJidHJlZSAqLwo+ICAgCWlmICghaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIGRldl9wcml2 LT5uZXh0X3NlcW5vKSkgewo+IC0JCXdoaWxlIChpbnRlbF9raWNrX3dhaXRlcnMoZGV2X3ByaXYp KQo+ICsJCXdoaWxlIChpbnRlbF9raWNrX3dhaXRlcnMoZGV2X3ByaXYpIHx8Cj4gKwkJICAgICAg IGludGVsX2tpY2tfc2lnbmFsZXJzKGRldl9wcml2KSkKPiAgIAkJCXlpZWxkKCk7Cj4gICAJfQo+ Cj4gQEAgLTMyMTAsMTIgKzMyMTEsNiBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCWk5MTVfZ2VtX29iamVjdF9yZXRp cmVfX3JlYWQob2JqLCBlbmdpbmUtPmlkKTsKPiAgIAl9Cj4KPiAtCWlmICh1bmxpa2VseShlbmdp bmUtPnRyYWNlX2lycV9yZXEgJiYKPiAtCQkgICAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVk KGVuZ2luZS0+dHJhY2VfaXJxX3JlcSkpKSB7Cj4gLQkJZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7 Cj4gLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJmVuZ2luZS0+dHJhY2VfaXJxX3JlcSwgTlVM TCk7Cj4gLQl9Cj4gLQo+ICAgCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMoZW5naW5lLT5kZXYp KTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNl LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRleCAzZDEzZmRlOTVm ZGYuLmY1OWNmMDcxODRhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBAQCAt NDkwLDcgKzQ5MCw3IEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3JpbmdfZGlzcGF0Y2gsCj4gICAJ CQkgICBfX2VudHJ5LT5yaW5nID0gcmVxLT5lbmdpbmUtPmlkOwo+ICAgCQkJICAgX19lbnRyeS0+ c2Vxbm8gPSByZXEtPnNlcW5vOwo+ICAgCQkJICAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsKPiAt CQkJICAgaTkxNV90cmFjZV9pcnFfZ2V0KHJlcS0+ZW5naW5lLCByZXEpOwo+ICsJCQkgICBpbnRl bF9lbmdpbmVfZW5hYmxlX3NpZ25hbGluZyhyZXEpOwo+ICAgCQkJICAgKSwKPgo+ICAgCSAgICBU UF9wcmludGsoImRldj0ldSwgcmluZz0ldSwgc2Vxbm89JXUsIGZsYWdzPSV4IiwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiBpbmRleCA4NGMyYTQ0OWRkMGUuLmJj MGU5ZThiNzg3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVh ZGNydW1icy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMu Ywo+IEBAIC0yMiw2ICsyMiw4IEBACj4gICAgKgo+ICAgICovCj4KPiArI2luY2x1ZGUgPGxpbnV4 L2t0aHJlYWQuaD4KPiArCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPgo+ICAgc3RhdGljIHZv aWQgaW50ZWxfYnJlYWRjcnVtYnNfZmFrZV9pcnEodW5zaWduZWQgbG9uZyBkYXRhKQo+IEBAIC0y NTUsNiArMjU3LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGFpbl93YWtldXAoc3RydWN0IHJi X25vZGUgKnJiLCBpbnQgcHJpb3JpdHkpCj4gICAJcmV0dXJuIHJiICYmIHRvX3dhaXQocmIpLT50 c2stPnByaW8gPD0gcHJpb3JpdHk7Cj4gICB9Cj4KPiArc3RhdGljIGlubGluZSBpbnQgd2FrZXVw X3ByaW9yaXR5KHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiwKPiArCQkJCSAgc3RydWN0IHRh c2tfc3RydWN0ICp0c2spCj4gK3sKPiArCWlmICh0c2sgPT0gYi0+c2lnbmFsZXIpCj4gKwkJcmV0 dXJuIElOVF9NSU47Cj4gKwllbHNlCj4gKwkJcmV0dXJuIHRzay0+cHJpbzsKPiArfQo+ICsKPiAg IHZvaWQgaW50ZWxfZW5naW5lX3JlbW92ZV93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgIAkJCSAgICAgIHN0cnVjdCBpbnRlbF93YWl0ICp3YWl0KQo+ICAgewo+IEBAIC0y NzMsOCArMjg0LDggQEAgdm9pZCBpbnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQlnb3RvIG91dF91bmxvY2s7Cj4KPiAgIAlpZiAoYi0+ Zmlyc3Rfd2FpdCA9PSB3YWl0KSB7Cj4gKwkJY29uc3QgaW50IHByaW9yaXR5ID0gd2FrZXVwX3By aW9yaXR5KGIsIHdhaXQtPnRzayk7Cj4gICAJCXN0cnVjdCByYl9ub2RlICpuZXh0Owo+IC0JCWNv bnN0IGludCBwcmlvcml0eSA9IHdhaXQtPnRzay0+cHJpbzsKPgo+ICAgCQlHRU1fQlVHX09OKGIt PnRhc2tsZXQgIT0gd2FpdC0+dHNrKTsKPgo+IEBAIC0zNDAsMTUgKzM1MSwxNzYgQEAgb3V0X3Vu bG9jazoKPiAgIAlzcGluX3VubG9jaygmYi0+bG9jayk7Cj4gICB9Cj4KPiArc3RydWN0IHNpZ25h bCB7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSBub2RlOwo+ICsJc3RydWN0IGludGVsX3dhaXQgd2FpdDsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiArfTsKPiArCj4gK3N0 YXRpYyBib29sIHNpZ25hbF9jb21wbGV0ZShzdHJ1Y3Qgc2lnbmFsICpzaWduYWwpCj4gK3sKPiAr CWlmIChzaWduYWwgPT0gTlVMTCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyogSWYgYW5v dGhlciBwcm9jZXNzIHNlcnZlZCBhcyB0aGUgYm90dG9tLWhhbGYgaXQgbWF5IGhhdmUgYWxyZWFk eQo+ICsJICogc2lnbmFsbGVkIHRoYXQgdGhpcyB3YWl0IGlzIGFscmVhZHkgY29tcGxldGVkLgo+ ICsJICovCj4gKwlpZiAoaW50ZWxfd2FpdF9jb21wbGV0ZSgmc2lnbmFsLT53YWl0KSkKPiArCQly ZXR1cm4gdHJ1ZTsKPiArCj4gKwkvKiBDYXJlZnVsbHkgY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMg Y29tcGxldGUsIGdpdmluZyB0aW1lIGZvciB0aGUKPiArCSAqIHNlcW5vIHRvIGJlIHZpc2libGUg b3IgaWYgdGhlIEdQVSBodW5nLgo+ICsJICovCj4gKwlpZiAoX19pOTE1X3JlcXVlc3RfaXJxX2Nv bXBsZXRlKHNpZ25hbC0+cmVxdWVzdCkpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJcmV0dXJu IGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNpZ25hbCAqdG9fc2lnbmFsKHN0cnVj dCByYl9ub2RlICpyYikKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihyYiwgc3RydWN0IHNp Z25hbCwgbm9kZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNpZ25hbGVyX3NldF9ydHByaW9y aXR5KHZvaWQpCj4gK3sKPiArCSBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW0gPSB7IC5zY2hlZF9w cmlvcml0eSA9IDEgfTsKPiArCSBzY2hlZF9zZXRzY2hlZHVsZXJfbm9jaGVjayhjdXJyZW50LCBT Q0hFRF9GSUZPLCAmcGFyYW0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2JyZWFkY3J1 bWJzX3NpZ25hbGVyKHZvaWQgKmFyZykKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0gYXJnOwo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+ YnJlYWRjcnVtYnM7Cj4gKwlzdHJ1Y3Qgc2lnbmFsICpzaWduYWw7Cj4gKwo+ICsJLyogSW5zdGFs bCBvdXJzZWx2ZXMgd2l0aCBoaWdoIHByaW9yaXR5IHRvIHJlZHVjZSBzaWduYWxsaW5nIGxhdGVu Y3kgKi8KPiArCXNpZ25hbGVyX3NldF9ydHByaW9yaXR5KCk7Cj4gKwo+ICsJZG8gewo+ICsJCXNl dF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7Cj4gKwo+ICsJCS8qIFdlIGFyZSBl aXRoZXIgd29rZW4gdXAgYnkgdGhlIGludGVycnVwdCBib3R0b20taGFsZiwKPiArCQkgKiBvciBi eSBhIGNsaWVudCBhZGRpbmcgYSBuZXcgc2lnbmFsbGVyLiBJbiBib3RoIGNhc2VzLAo+ICsJCSAq IHRoZSBHUFUgc2Vxbm8gbWF5IGhhdmUgYWR2YW5jZWQgYmV5b25kIG91ciBvbGRlc3Qgc2lnbmFs Lgo+ICsJCSAqIElmIGl0IGhhcywgcHJvcGFnYXRlIHRoZSBzaWduYWwsIHJlbW92ZSB0aGUgd2Fp dGVyIGFuZAo+ICsJCSAqIGNoZWNrIGFnYWluIHdpdGggdGhlIG5leHQgb2xkZXN0IHNpZ25hbC4g T3RoZXJ3aXNlIHdlCj4gKwkJICogbmVlZCB0byB3YWl0IGZvciBhIG5ldyBpbnRlcnJ1cHQgZnJv bSB0aGUgR1BVIG9yIGZvcgo+ICsJCSAqIGEgbmV3IGNsaWVudC4KPiArCQkgKi8KPiArCQlzaWdu YWwgPSBSRUFEX09OQ0UoYi0+Zmlyc3Rfc2lnbmFsKTsKPiArCQlpZiAoc2lnbmFsX2NvbXBsZXRl KHNpZ25hbCkpIHsKPiArCQkJLyogV2FrZSB1cCBhbGwgb3RoZXIgY29tcGxldGVkIHdhaXRlcnMg YW5kIHNlbGVjdCB0aGUKPiArCQkJICogbmV4dCBib3R0b20taGFsZiBmb3IgdGhlIG5leHQgdXNl ciBpbnRlcnJ1cHQuCj4gKwkJCSAqLwo+ICsJCQlpbnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoZW5n aW5lLCAmc2lnbmFsLT53YWl0KTsKPiArCj4gKwkJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVu Y2Uoc2lnbmFsLT5yZXF1ZXN0KTsKPiArCj4gKwkJCS8qIEZpbmQgdGhlIG5leHQgb2xkZXN0IHNp Z25hbC4gTm90ZSB0aGF0IGFzIHdlIGhhdmUKPiArCQkJICogbm90IGJlZW4gaG9sZGluZyB0aGUg bG9jaywgYW5vdGhlciBjbGllbnQgbWF5Cj4gKwkJCSAqIGhhdmUgaW5zdGFsbGVkIGFuIGV2ZW4g b2xkZXIgc2lnbmFsIHRoYW4gdGhlIG9uZQo+ICsJCQkgKiB3ZSBqdXN0IGNvbXBsZXRlZCAtIHNv IGRvdWJsZSBjaGVjayB3ZSBhcmUgc3RpbGwKPiArCQkJICogdGhlIG9sZGVzdCBiZWZvcmUgcGlj a2luZyB0aGUgbmV4dCBvbmUuCj4gKwkJCSAqLwo+ICsJCQlzcGluX2xvY2soJmItPmxvY2spOwo+ ICsJCQlpZiAoc2lnbmFsID09IGItPmZpcnN0X3NpZ25hbCkKPiArCQkJCWItPmZpcnN0X3NpZ25h bCA9IHJiX25leHQoJnNpZ25hbC0+bm9kZSk7Cj4gKwkJCXJiX2VyYXNlKCZzaWduYWwtPm5vZGUs ICZiLT5zaWduYWxzKTsKPiArCQkJc3Bpbl91bmxvY2soJmItPmxvY2spOwo+ICsKPiArCQkJa2Zy ZWUoc2lnbmFsKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZiAoa3RocmVhZF9zaG91bGRfc3RvcCgp KQo+ICsJCQkJYnJlYWs7Cj4gKwo+ICsJCQlzY2hlZHVsZSgpOwo+ICsJCX0KPiArCX0gd2hpbGUg KDEpOwo+ICsJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtpbnQgaW50ZWxfZW5naW5lX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Cj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYnMgKmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKPiArCXN0cnVjdCByYl9ub2RlICpwYXJl bnQsICoqcDsKPiArCXN0cnVjdCBzaWduYWwgKnNpZ25hbDsKPiArCWJvb2wgZmlyc3QsIHdha2V1 cDsKPiArCj4gKwlzaWduYWwgPSBrbWFsbG9jKHNpemVvZigqc2lnbmFsKSwgR0ZQX0FUT01JQyk7 Cj4gKwlpZiAodW5saWtlbHkoIXNpZ25hbCkpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJ c2lnbmFsLT53YWl0LnRzayA9IGItPnNpZ25hbGVyOwo+ICsJc2lnbmFsLT53YWl0LnNlcW5vID0g cmVxdWVzdC0+c2Vxbm87Cj4gKwo+ICsJc2lnbmFsLT5yZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVz dF9yZWZlcmVuY2UocmVxdWVzdCk7Cj4gKwo+ICsJLyogRmlyc3QgYWRkIG91cnNlbHZlcyBpbnRv IHRoZSBsaXN0IG9mIHdhaXRlcnMsIGJ1dCByZWdpc3RlciBvdXIKPiArCSAqIGJvdHRvbS1oYWxm IGFzIHRoZSBzaWduYWxsZXIgdGhyZWFkLiBBcyBwZXIgdXN1YWwsIG9ubHkgdGhlIG9sZGVzdAo+ ICsJICogd2FpdGVyIChub3QganVzdCBzaWduYWxsZXIpIGlzIHRhc2tlZCBhcyB0aGUgYm90dG9t LWhhbGYgd2FraW5nCj4gKwkgKiB1cCBhbGwgY29tcGxldGVkIHdhaXRlcnMgYWZ0ZXIgdGhlIHVz ZXIgaW50ZXJydXB0Lgo+ICsJICoKPiArCSAqIElmIHdlIGFyZSB0aGUgb2xkZXN0IHdhaXRlciwg ZW5hYmxlIHRoZSBpcnEgKGFmdGVyIHdoaWNoIHdlCj4gKwkgKiBtdXN0IGRvdWJsZSBjaGVjayB0 aGF0IHRoZSBzZXFubyBkaWQgbm90IGNvbXBsZXRlKS4KPiArCSAqLwo+ICsJd2FrZXVwID0gaW50 ZWxfZW5naW5lX2FkZF93YWl0KGVuZ2luZSwgJnNpZ25hbC0+d2FpdCk7Cj4gKwo+ICsJLyogTm93 IGluc2VydCBvdXJzZWx2ZXMgaW50byB0aGUgcmV0aXJlbWVudCBvcmRlcmVkIGxpc3Qgb2Ygc2ln bmFscwo+ICsJICogb24gdGhpcyBlbmdpbmUuIFdlIHRyYWNrIHRoZSBvbGRlc3Qgc2Vxbm8gYXMg dGhhdCB3aWxsIGJlIHRoZQo+ICsJICogZmlyc3Qgc2lnbmFsIHRvIGNvbXBsZXRlLgo+ICsJICov Cj4gKwlzcGluX2xvY2soJmItPmxvY2spOwo+ICsJcGFyZW50ID0gTlVMTDsKPiArCWZpcnN0ID0g dHJ1ZTsKPiArCXAgPSAmYi0+c2lnbmFscy5yYl9ub2RlOwo+ICsJd2hpbGUgKCpwKSB7Cj4gKwkJ cGFyZW50ID0gKnA7Cj4gKwkJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHNpZ25hbC0+d2FpdC5zZXFu bywKPiArCQkJCSAgICAgIHRvX3NpZ25hbChwYXJlbnQpLT53YWl0LnNlcW5vKSkgewo+ICsJCQlw ID0gJnBhcmVudC0+cmJfcmlnaHQ7Cj4gKwkJCWZpcnN0ID0gZmFsc2U7Cj4gKwkJfSBlbHNlCj4g KwkJCXAgPSAmcGFyZW50LT5yYl9sZWZ0Owo+ICsJfQo+ICsJcmJfbGlua19ub2RlKCZzaWduYWwt Pm5vZGUsIHBhcmVudCwgcCk7Cj4gKwlyYl9pbnNlcnRfY29sb3IoJnNpZ25hbC0+bm9kZSwgJmIt PnNpZ25hbHMpOwo+ICsJaWYgKGZpcnN0KQo+ICsJCXNtcF9zdG9yZV9tYihiLT5maXJzdF9zaWdu YWwsIHNpZ25hbCk7Cj4gKwlzcGluX3VubG9jaygmYi0+bG9jayk7Cj4gKwo+ICsJaWYgKHdha2V1 cCkKPiArCQl3YWtlX3VwX3Byb2Nlc3MoYi0+c2lnbmFsZXIpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICAgaW50IGludGVsX2VuZ2luZV9pbml0X2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMg KmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKPiArCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrOwo+ Cj4gICAJc3Bpbl9sb2NrX2luaXQoJmItPmxvY2spOwo+ICAgCXNldHVwX3RpbWVyKCZiLT5mYWtl X2lycSwKPiAgIAkJICAgIGludGVsX2JyZWFkY3J1bWJzX2Zha2VfaXJxLAo+ICAgCQkgICAgKHVu c2lnbmVkIGxvbmcpZW5naW5lKTsKPgo+ICsJLyogU3Bhd24gYSB0aHJlYWQgdG8gcHJvdmlkZSBh IGNvbW1vbiBib3R0b20taGFsZiBmb3IgYWxsIHNpZ25hbHMuCj4gKwkgKiBBcyB0aGlzIGlzIGFu IGFzeW5jaHJvbm91cyBpbnRlcmZhY2Ugd2UgY2Fubm90IHN0ZWFsIHRoZSBjdXJyZW50Cj4gKwkg KiB0YXNrIGZvciBoYW5kbGluZyB0aGUgYm90dG9tLWhhbGYgdG8gdGhlIHVzZXIgaW50ZXJydXB0 LCB0aGVyZWZvcmUKPiArCSAqIHdlIGNyZWF0ZSBhIHRocmVhZCB0byBkbyB0aGUgY29oZXJlbnQg c2Vxbm8gZGFuY2UgYWZ0ZXIgdGhlCj4gKwkgKiBpbnRlcnJ1cHQgYW5kIHRoZW4gc2lnbmFsIHRo ZSB3YWl0cXVldWUgKHZpYSB0aGUgZG1hLWJ1Zi9mZW5jZSkuCj4gKwkgKi8KPiArCXRzayA9IGt0 aHJlYWRfcnVuKGludGVsX2JyZWFkY3J1bWJzX3NpZ25hbGVyLCBlbmdpbmUsCj4gKwkJCSAgImly cS9pOTE1OiVkIiwgZW5naW5lLT5pZCk7Cj4gKwlpZiAoSVNfRVJSKHRzaykpCj4gKwkJcmV0dXJu IFBUUl9FUlIodHNrKTsKPiArCj4gKwliLT5zaWduYWxlciA9IHRzazsKPiArCj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4KPiBAQCAtMzU2LDYgKzUyOCw5IEBAIHZvaWQgaW50ZWxfZW5naW5lX2Zpbmlf YnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0 cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+Cj4gKwlp ZiAoIUlTX0VSUl9PUl9OVUxMKGItPnNpZ25hbGVyKSkKPiArCQlrdGhyZWFkX3N0b3AoYi0+c2ln bmFsZXIpOwo+ICsKPiAgIAlkZWxfdGltZXJfc3luYygmYi0+ZmFrZV9pcnEpOwo+ICAgfQo+Cj4g QEAgLTM3NywzICs1NTIsMTggQEAgdW5zaWduZWQgaW50ZWxfa2lja193YWl0ZXJzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+Cj4gICAJcmV0dXJuIG1hc2s7Cj4gICB9Cj4gKwo+ICt1 bnNpZ25lZCBpbnRlbF9raWNrX3NpZ25hbGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJdW5zaWduZWQg bWFzayA9IDA7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSkgewo+ICsJCWlm ICh1bmxpa2VseShSRUFEX09OQ0UoZW5naW5lLT5icmVhZGNydW1icy5maXJzdF9zaWduYWwpKSkg ewo+ICsJCQl3YWtlX3VwX3Byb2Nlc3MoZW5naW5lLT5icmVhZGNydW1icy5zaWduYWxlcik7Cj4g KwkJCW1hc2sgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIG1hc2s7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCj4gaW5kZXggNGQ2YzJiNzczYTY0Li5jMDViNDU3MjdmN2QgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTE0MSw2ICsxNDEsOCBAQCBzdHJ1Y3Qg IGk5MTVfY3R4X3dvcmthcm91bmRzIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwo+ICAgfTsKPgo+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Q7Cj4gKwo+ICAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7 Cj4gICAJY29uc3QgY2hhcgkqbmFtZTsKPiBAQCAtMTc5LDggKzE4MSwxMSBAQCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgewo+ICAgCQlzcGlu bG9ja190IGxvY2s7IC8qIHByb3RlY3RzIHRoZSBsaXN0cyBvZiByZXF1ZXN0cyAqLwo+ICAgCQlz dHJ1Y3QgcmJfcm9vdCB3YWl0ZXJzOyAvKiBzb3J0ZWQgYnkgcmV0aXJlbWVudCwgcHJpb3JpdHkg Ki8KPiArCQlzdHJ1Y3QgcmJfcm9vdCBzaWduYWxzOyAvKiBzb3J0ZWQgYnkgcmV0aXJlbWVudCAq Lwo+ICAgCQlzdHJ1Y3QgaW50ZWxfd2FpdCAqZmlyc3Rfd2FpdDsgLyogb2xkZXN0IHdhaXRlciBi eSByZXRpcmVtZW50ICovCj4gICAJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFza2xldDsgLyogYmgg Zm9yIHVzZXIgaW50ZXJydXB0cyAqLwo+ICsJCXN0cnVjdCB0YXNrX3N0cnVjdCAqc2lnbmFsZXI7 IC8qIHVzZWQgZm9yIGZlbmNlIHNpZ25hbGxpbmcgKi8KPiArCQl2b2lkICpmaXJzdF9zaWduYWw7 Cj4gICAJCXN0cnVjdCB0aW1lcl9saXN0IGZha2VfaXJxOyAvKiB1c2VkIGFmdGVyIGEgbWlzc2Vk IGludGVycnVwdCAqLwo+ICAgCQlib29sIGlycV9lbmFibGVkOwo+ICAgCQlib29sIHJwbV93YWtl bG9jazsKPiBAQCAtMTk5LDcgKzIwNCw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAg CXVuc2lnbmVkIGlycV9yZWZjb3VudDsgLyogcHJvdGVjdGVkIGJ5IGRldl9wcml2LT5pcnFfbG9j ayAqLwo+ICAgCWJvb2wJCWlycV9wb3N0ZWQ7Cj4gICAJdTMyCQlpcnFfZW5hYmxlX21hc2s7CS8q IGJpdG1hc2sgdG8gZW5hYmxlIHJpbmcgaW50ZXJydXB0ICovCj4gLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnRyYWNlX2lycV9yZXE7Cj4gICAJYm9vbCBfX211c3RfY2hlY2sgKCppcnFf Z2V0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAgIAl2b2lkCQkoKmlycV9wdXQp KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+Cj4gQEAgLTU0MCw2ICs1NDQsNyBAQCBi b29sIGludGVsX2VuZ2luZV9hZGRfd2FpdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4gICAJCQkgICBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCk7Cj4gICB2b2lkIGludGVsX2VuZ2lu ZV9yZW1vdmVfd2FpdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgICAg ICBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCk7Cj4gK2ludCBpbnRlbF9lbmdpbmVfZW5hYmxlX3Np Z25hbGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwo+ICAgc3RhdGlj IGlubGluZSBib29sIGludGVsX2VuZ2luZV9oYXNfd2FpdGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlyZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+YnJlYWRjcnVt YnMudGFza2xldCk7Cj4gQEAgLTU2Myw1ICs1NjgsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50 ZWxfZW5naW5lX3dha2V1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB2b2lk IGludGVsX2VuZ2luZV9lbmFibGVfZmFrZV9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKTsKPiAgIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIHVuc2lnbmVkIGludGVsX2tpY2tfd2FpdGVycyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3Vuc2lnbmVkIGludGVsX2tpY2tfc2lnbmFs ZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPgo+ICAgI2VuZGlmIC8qIF9JTlRF TF9SSU5HQlVGRkVSX0hfICovCj4KCkxvb2tzIGdvb2QgdG8gbWUuCgpPbmx5IHRoaW5nIEkgd291 bGQgcG9zc2libHkgY2hhbmdlIGlzIHRoZSB0aHJlYWQgbmFtZSB0byBub3QgbWlzbGVhZCAKYW55 b25lIGludG8gdGhpbmtpbmcgdGhpcyBpcyB0aGUgbWFpbiBhbmQgb25seSBpOTE1IGlycSBhY3Rp dml0eS4gTG9va3MgCnRvIG1lIGl0IHNob3VsZCBqdXN0IGJlIGNhbGxlZCBzb21ldGhpbmcgbGlr ZSBpOTE1L3NpZ25hbGxlcjoldSBvciBzaW1pbGFyLgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==