From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 06/19] drm/i915: Handle log buffer flush interrupt event from GuC Date: Wed, 17 Aug 2016 12:07:57 +0100 Message-ID: <57B4458D.4000908@linux.intel.com> References: <1471428859-10339-1-git-send-email-akash.goel@intel.com> <1471428859-10339-7-git-send-email-akash.goel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 784426E818 for ; Wed, 17 Aug 2016 11:07:59 +0000 (UTC) In-Reply-To: <1471428859-10339-7-git-send-email-akash.goel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: akash.goel@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzA4LzE2IDExOjE0LCBha2FzaC5nb2VsQGludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBT YWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+Cj4gR3VDIHVrZXJu ZWwgc2VuZHMgYW4gaW50ZXJydXB0IHRvIEhvc3QgdG8gZmx1c2ggdGhlIGxvZyBidWZmZXIKPiBh bmQgZXhwZWN0cyBIb3N0IHRvIGNvcnJlc3BvbmRpbmdseSB1cGRhdGUgdGhlIHJlYWQgcG9pbnRl cgo+IGluZm9ybWF0aW9uIGluIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUsIG9uY2UgaXQgaGFzIGNvbnN1 bWVkIHRoZQo+IGxvZyBidWZmZXIgY29udGVudHMgYnkgY29weWluZyB0aGVtIHRvIGEgZmlsZSBv ciBidWZmZXIuCj4gRXZlbiBpZiBIb3N0IGNvdWxkbid0IGNvcHkgdGhlIGNvbnRlbnRzLCBpdCBj YW4gc3RpbGwgdXBkYXRlIHRoZQo+IHJlYWQgcG9pbnRlciBzbyB0aGF0IGxvZ2dpbmcgc3RhdGUg aXMgbm90IGRpc3R1cmJlZCBvbiBHdUMgc2lkZS4KPgo+IHYyOgo+IC0gVXNlIGEgZGVkaWNhdGVk IHdvcmtxdWV1ZSBmb3IgaGFuZGxpbmcgZmx1c2ggaW50ZXJydXB0LiAoVHZydGtvKQo+IC0gUmVk dWNlIHRoZSBvdmVyYWxsIGxvZyBidWZmZXIgY29weWluZyB0aW1lIGJ5IHNraXBwaW5nIHRoZSBj b3B5IG9mCj4gICAgY3Jhc2ggYnVmZmVyIGFyZWEgZm9yIHJlZ3VsYXIgY2FzZXMgYW5kIGNvcHlp bmcgb25seSB0aGUgc3RhdGUKPiAgICBzdHJ1Y3R1cmUgZGF0YSBpbiBmaXJzdCBwYWdlLgo+Cj4g djM6Cj4gICAtIENyZWF0ZSBhIHZtYWxsb2MgbWFwcGluZyBvZiBsb2cgYnVmZmVyLiAoQ2hyaXMp Cj4gICAtIENvdmVyIHRoZSBmbHVzaCBhY2tub3dsZWRnbWVudCB1bmRlciBycG0gZ2V0ICYgcHV0 LihDaHJpcykKPiAgIC0gUmV2ZXJ0IHRoZSBjaGFuZ2Ugb2Ygc2tpcHBpbmcgdGhlIGNvcHkgb2Yg Y3Jhc2ggZHVtcCBhcmVhLCBhcwo+ICAgICBub3QgcmVhbGx5IG5lZWRlZCwgd2lsbCBiZSBjb3Zl cmVkIGJ5IHN1YnNlcXVlbnQgcGF0Y2guCj4KPiB2NDoKPiAgIC0gRGVzdHJveSB0aGUgd3EgdW5k ZXIgdGhlIHNhbWUgY29uZGl0aW9uIGluIHdoaWNoIGl0IHdhcyBjcmVhdGVkLAo+ICAgICBwYXNz IGRldl9waXYgcG9pbnRlciBpbnN0ZWFkIG9mIGRldiB0byBuZXdseSBhZGRlZCBHdUMgZnVuY3Rp b24sCj4gICAgIGFkZCBtb3JlIGNvbW1lbnRzICYgcmVuYW1lIHZhcmlhYmxlIGZvciBjbGFyaXR5 LiAoVHZydGtvKQo+Cj4gdjU6Cj4gLSBBbGxvY2F0ZSAmIGRlc3Ryb3kgdGhlIGRlZGljYXRlZCB3 cSwgZm9yIGhhbmRsaW5nIGZsdXNoIGludGVycnVwdCwKPiAgICBmcm9tIHRoZSBzZXR1cC90ZWFy ZG93biByb3V0aW5lcyBvZiBHdUMgbG9nZ2luZy4gKENocmlzKQo+IC0gVmFsaWRhdGUgdGhlIGxv ZyBidWZmZXIgc2l6ZSB2YWx1ZSByZXRyaWV2ZWQgZnJvbSBzdGF0ZSBzdHJ1Y3R1cmUKPiAgICBh bmQgZG8gc29tZSBtaW5vciBjbGVhbnVwLiAoVHZydGtvKQo+IC0gRml4IGVycm9yL3dhcm5pbmdz IHJlcG9ydGVkIGJ5IGNoZWNrcGF0Y2guIChUdnJ0a28pCj4gLSBSZWJhc2UuCj4KPiB2NjoKPiAg IC0gUmVtb3ZlIHRoZSBpbnRlcnJ1cHRzX2VuYWJsZWQgY2hlY2sgZnJvbSBndWNfY2FwdHVyZV9s b2dzX3dvcmssIG5lZWQKPiAgICAgdG8gcHJvY2VzcyB0aGF0IGxhc3Qgd29yayBpdGVtIGFsc28s IHF1ZXVlZCBqdXN0IGJlZm9yZSBkaXNhYmxpbmcgdGhlCj4gICAgIGludGVycnVwdCBhcyBsb2cg YnVmZmVyIGZsdXNoIGludGVycnVwdCBoYW5kbGluZyBpcyBhIGJpdCBkaWZmZXJlbnQKPiAgICAg Y2FzZSB3aGVyZSBHdUMgaXMgYWN0dWFsbHkgZXhwZWN0aW5nIGFuIEFDSyBmcm9tIGhvc3QsIHdo aWNoIHNob3VsZCBiZQo+ICAgICBwcm92aWRlZCB0byBrZWVwIHRoZSBsb2dnaW5nIGdvaW5nLgo+ ICAgICBTeW5jIGFnYWluc3QgdGhlIHdvcmsgd2lsbCBiZSBkb25lIGJ5IGNhbGxlciBkaXNhYmxp bmcgdGhlIGludGVycnVwdC4KPiAgIC0gRG9uJ3Qgc2FtcGxlIHRoZSBsb2cgYnVmZmVyIHNpemUg dmFsdWUgZnJvbSBzdGF0ZSBzdHJ1Y3R1cmUsIGRpcmVjdGx5Cj4gICAgIHVzZSB0aGUgZXhwZWN0 ZWQgdmFsdWUgdG8gbW92ZSB0aGUgcG9pbnRlciAmIGRvIHRoZSBjb3B5IGFuZCB0aGF0IGNhbm5v dAo+ICAgICBnbyB3cm9uZyAob3V0IG9mIGJvdW5kcykgYXMgRHJpdmVyIG9ubHkgYWxsb2NhdGVk IHRoZSBsb2cgYnVmZmVyIGFuZCB0aGUKPiAgICAgcmVsYXkgYnVmZmVycy4gRHJpdmVyIHNob3Vs ZCByZWZyYWluIGZyb20gaW50ZXJwcmV0aW5nIHRoZSBsb2cgcGFja2V0LAo+ICAgICBhcyBtdWNo IHBvc3NpYmxlIGFuZCBsZXQgVXNlcnNwYWNlIHBhcnNlciBkZXRlY3QgdGhlIGFub21hbHkuIChD aHJpcykKPgo+IFNpZ25lZC1vZmYtYnk6IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdhci5hLmthbWJs ZUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRl bC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICB8ICAyOCArKysrLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwgICA0ICsKPiAgIDMgZmlsZXMgY2hhbmdl ZCwgMjE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCBiMDYyZGE2Li5hZGU1MWNiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC0xNzIs NiArMTcyLDE1IEBAIHN0YXRpYyBpbnQgaG9zdDJndWNfc2FtcGxlX2ZvcmNld2FrZShzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsCj4gICAJcmV0dXJuIGhvc3QyZ3VjX2FjdGlvbihndWMsIGRhdGEsIEFS UkFZX1NJWkUoZGF0YSkpOwo+ICAgfQo+Cj4gK3N0YXRpYyBpbnQgaG9zdDJndWNfbG9nYnVmZmVy X2ZsdXNoX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiArewo+ICsJdTMyIGRhdGFb MV07Cj4gKwo+ICsJZGF0YVswXSA9IEhPU1QyR1VDX0FDVElPTl9MT0dfQlVGRkVSX0ZJTEVfRkxV U0hfQ09NUExFVEU7Cj4gKwo+ICsJcmV0dXJuIGhvc3QyZ3VjX2FjdGlvbihndWMsIGRhdGEsIDEp Owo+ICt9Cj4gKwo+ICAgLyoKPiAgICAqIEluaXRpYWxpc2UsIHVwZGF0ZSwgb3IgY2xlYXIgZG9v cmJlbGwgZGF0YSBzaGFyZWQgd2l0aCB0aGUgR3VDCj4gICAgKgo+IEBAIC04MjgsNiArODM3LDE2 MyBAQCBlcnI6Cj4gICAJcmV0dXJuIE5VTEw7Cj4gICB9Cj4KPiArc3RhdGljIHZvaWQgZ3VjX21v dmVfdG9fbmV4dF9idWYoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkICpndWNfZ2V0X3dyaXRlX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g K3sKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IGd1Y19n ZXRfbG9nX2J1ZmZlcl9zaXplKGVudW0gZ3VjX2xvZ19idWZmZXJfdHlwZSB0eXBlKQo+ICt7Cj4g KwlpZiAodHlwZSA9PSBHVUNfSVNSX0xPR19CVUZGRVIpCj4gKwkJcmV0dXJuIChHVUNfTE9HX0lT Ul9QQUdFUyArIDEpICogUEFHRV9TSVpFOwo+ICsJZWxzZSBpZiAodHlwZSA9PSBHVUNfRFBDX0xP R19CVUZGRVIpCj4gKwkJcmV0dXJuIChHVUNfTE9HX0RQQ19QQUdFUyArIDEpICogUEFHRV9TSVpF Owo+ICsJZWxzZQo+ICsJCXJldHVybiAoR1VDX0xPR19DUkFTSF9QQUdFUyArIDEpICogUEFHRV9T SVpFOwo+ICt9CgpDb3VsZCBkbyBpdCB3aXRoIGEgc3dpdGNoIHN0YXRlbWVudCB0byBnZXQgYXV0 b21hdGljIHJlbWluZGVyIG9mIHNpemUgCm5vdCBiZWluZyBoYW5kbGVkIGlmIHNvbWUgZGF5IGEg bmV3IGxvZyBidWZmZXIgdHlwZSBnZXRzIGFkZGVkLiBJdCB3b3VsZCAKcHJvYmFibHkgbW9yZSBp biB0aGUgc3R5bGUgb2YgdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciBhcyB3ZWxsLgoKPiArCj4gK3N0 YXRpYyB2b2lkIGd1Y19yZWFkX3VwZGF0ZV9sb2dfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPiArewo+ICsJc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlICpsb2dfYnVmZmVyX3N0YXRl LCAqbG9nX2J1ZmZlcl9zbmFwc2hvdF9zdGF0ZTsKPiArCXN0cnVjdCBndWNfbG9nX2J1ZmZlcl9z dGF0ZSBsb2dfYnVmZmVyX3N0YXRlX2xvY2FsOwo+ICsJdm9pZCAqc3JjX2RhdGFfcHRyLCAqZHN0 X2RhdGFfcHRyOwo+ICsJdW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplOwo+ICsJZW51bSBndWNfbG9n X2J1ZmZlcl90eXBlIHR5cGU7Cj4gKwo+ICsJaWYgKFdBUk5fT04oIWd1Yy0+bG9nLmJ1Zl9hZGRy KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJLyogR2V0IHRoZSBwb2ludGVyIHRvIHNoYXJlZCBHdUMg bG9nIGJ1ZmZlciAqLwo+ICsJbG9nX2J1ZmZlcl9zdGF0ZSA9IHNyY19kYXRhX3B0ciA9IGd1Yy0+ bG9nLmJ1Zl9hZGRyOwo+ICsKPiArCS8qIEdldCB0aGUgcG9pbnRlciB0byBsb2NhbCBidWZmZXIg dG8gc3RvcmUgdGhlIGxvZ3MgKi8KPiArCWRzdF9kYXRhX3B0ciA9IGxvZ19idWZmZXJfc25hcHNo b3Rfc3RhdGUgPSBndWNfZ2V0X3dyaXRlX2J1ZmZlcihndWMpOwo+ICsKPiArCS8qIEFjdHVhbCBs b2dzIGFyZSBwcmVzZW50IGZyb20gdGhlIDJuZCBwYWdlICovCj4gKwlzcmNfZGF0YV9wdHIgKz0g UEFHRV9TSVpFOwo+ICsJZHN0X2RhdGFfcHRyICs9IFBBR0VfU0laRTsKPiArCj4gKwlmb3IgKHR5 cGUgPSBHVUNfSVNSX0xPR19CVUZGRVI7IHR5cGUgPCBHVUNfTUFYX0xPR19CVUZGRVI7IHR5cGUr Kykgewo+ICsJCS8qIE1ha2UgYSBjb3B5IG9mIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgaW4gR3VDIGxv ZyBidWZmZXIgKHdoaWNoCj4gKwkJICogaXMgdW5jYWNoZWQgbWFwcGVkKSBvbiB0aGUgc3RhY2sg dG8gYXZvaWQgcmVhZGluZyBmcm9tIGl0Cj4gKwkJICogbXVsdGlwbGUgdGltZXMuCj4gKwkJICov Cj4gKwkJbWVtY3B5KCZsb2dfYnVmZmVyX3N0YXRlX2xvY2FsLCBsb2dfYnVmZmVyX3N0YXRlLAo+ ICsJCSAgICAgICBzaXplb2Yoc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlKSk7Cj4gKwkJYnVm ZmVyX3NpemUgPSBndWNfZ2V0X2xvZ19idWZmZXJfc2l6ZSh0eXBlKTsKPiArCj4gKwkJaWYgKGxv Z19idWZmZXJfc25hcHNob3Rfc3RhdGUpIHsKPiArCQkJLyogRmlyc3QgY29weSB0aGUgc3RhdGUg c3RydWN0dXJlIGluIHNuYXBzaG90IGJ1ZmZlciAqLwo+ICsJCQltZW1jcHkobG9nX2J1ZmZlcl9z bmFwc2hvdF9zdGF0ZSwgJmxvZ19idWZmZXJfc3RhdGVfbG9jYWwsCj4gKwkJCSAgICAgICBzaXpl b2Yoc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlKSk7CgpJJ3ZlIG5vdGljZWQgbm93IGxvZ19i dWZmZXJfc3RhdGVfbG9jYWwgaXMgdXNlZCBvbmx5IGZvciB0aGUgCnNhbXBsZV93cml0ZV9wdHIg YmVsb3cgYW5kIG90aGVyd2lzZSBpdCBjYXVzZXMgdHdvIGNvcGllcyBvZiB0aGUgc2FtZSBkYXRh LgoKU2luY2UgdGhpcyBicmFuY2ggaXMgYW4gaW50ZXJlc3Rpbmcgb25lLCB5b3UgY291bGQgYXZv aWQgb25lIGNvcHkgYnkgCnVwZGF0aW5nIHRoZSBsb2dfYnVmZmVyX3N0YXRlLT5yZWFkX3B0ciBm cm9tIHRoZSAKbG9nX2J1ZmZlcl9zbmFwc2hvdF9zdGF0ZSBpbiB0aGlzIGJyYW5jaCwgYW5kIGFk ZCBhbiBlbHNlIGJyYW5jaCB0byAKdXBkYXRlIGl0IGRpcmVjdGx5IGZyb20gbG9nX2J1ZmZlcl9z dGF0ZSB3aGVuIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUgCmlzIG5vdCBhdmFpbGFibGUuCgpT b3VuZHMgbGlrZSBpdCB3b3VsZCBiZSB3b3J0aCBlbGltaW5hdGluZyBkb3VibGUgbWVtY3B5LCB3 aGF0IGRvIHlvdSB0aGluaz4KCj4gKwo+ICsJCQkvKiBUaGUgd3JpdGUgcG9pbnRlciBjb3VsZCBo YXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgR3VDCj4gKwkJCSAqIGZpcm13YXJlLCBhZnRlciBzZW5k aW5nIHRoZSBmbHVzaCBpbnRlcnJ1cHQgdG8gSG9zdCwKPiArCQkJICogZm9yIGNvbnNpc3RlbmN5 IHNldCB0aGUgd3JpdGUgcG9pbnRlciB2YWx1ZSB0byBzYW1lCj4gKwkJCSAqIHZhbHVlIG9mIHNh bXBsZWRfd3JpdGVfcHRyIGluIHRoZSBzbmFwc2hvdCBidWZmZXIuCj4gKwkJCSAqLwo+ICsJCQls b2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlLT53cml0ZV9wdHIgPQo+ICsJCQkJbG9nX2J1ZmZlcl9z bmFwc2hvdF9zdGF0ZS0+c2FtcGxlZF93cml0ZV9wdHI7Cj4gKwo+ICsJCQlsb2dfYnVmZmVyX3Nu YXBzaG90X3N0YXRlKys7Cj4gKwo+ICsJCQkvKiBOb3cgY29weSB0aGUgYWN0dWFsIGxvZ3MuICov Cj4gKwkJCW1lbWNweShkc3RfZGF0YV9wdHIsIHNyY19kYXRhX3B0ciwgYnVmZmVyX3NpemUpOwo+ ICsKPiArCQkJc3JjX2RhdGFfcHRyICs9IGJ1ZmZlcl9zaXplOwo+ICsJCQlkc3RfZGF0YV9wdHIg Kz0gYnVmZmVyX3NpemU7Cj4gKwkJfQo+ICsKPiArCQkvKiBGSVhNRTogaW52YWxpZGF0ZS9mbHVz aCBmb3IgbG9nIGJ1ZmZlciBuZWVkZWQgKi8KPiArCj4gKwkJLyogVXBkYXRlIHRoZSByZWFkIHBv aW50ZXIgaW4gdGhlIHNoYXJlZCBsb2cgYnVmZmVyICovCj4gKwkJbG9nX2J1ZmZlcl9zdGF0ZS0+ cmVhZF9wdHIgPQo+ICsJCQlsb2dfYnVmZmVyX3N0YXRlX2xvY2FsLnNhbXBsZWRfd3JpdGVfcHRy Owo+ICsKPiArCQkvKiBDbGVhciB0aGUgJ2ZsdXNoIHRvIGZpbGUnIGZsYWcgKi8KPiArCQlsb2df YnVmZmVyX3N0YXRlLT5mbHVzaF90b19maWxlID0gMDsKPiArCQlsb2dfYnVmZmVyX3N0YXRlKys7 Cj4gKwl9Cj4gKwo+ICsJaWYgKGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUpCj4gKwkJZ3VjX21v dmVfdG9fbmV4dF9idWYoZ3VjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ3VjX2NhcHR1cmVf bG9nc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiArCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUsIGd1Yy5sb2cuZmx1c2hfd29yayk7Cj4gKwo+ICsJaTkxNV9ndWNfY2Fw dHVyZV9sb2dzKGRldl9wcml2KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ3VjX2xvZ19jbGVh bnVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJaWYgKGk5MTUuZ3VjX2xv Z19sZXZlbCA8IDApCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIEZpcnN0IGRpc2FibGUgdGhlIGZs dXNoIGludGVycnVwdCAqLwo+ICsJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2 KTsKPiArCj4gKwlpZiAoZ3VjLT5sb2cuZmx1c2hfd3EpCj4gKwkJZGVzdHJveV93b3JrcXVldWUo Z3VjLT5sb2cuZmx1c2hfd3EpOwo+ICsKPiArCWd1Yy0+bG9nLmZsdXNoX3dxID0gTlVMTDsKPiAr Cj4gKwlpZiAoZ3VjLT5sb2cuYnVmX2FkZHIpCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21h cChndWMtPmxvZy52bWEtPm9iaik7Cj4gKwo+ICsJZ3VjLT5sb2cuYnVmX2FkZHIgPSBOVUxMOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGd1Y19jcmVhdGVfbG9nX2V4dHJhcyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1 Y190b19pOTE1KGd1Yyk7Cj4gKwl2b2lkICp2YWRkcjsKPiArCWludCByZXQ7Cj4gKwo+ICsJbG9j a2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCS8q IE5vdGhpbmcgdG8gZG8gKi8KPiArCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQo+ICsJCXJl dHVybiAwOwo+ICsKPiArCWlmICghZ3VjLT5sb2cuYnVmX2FkZHIpIHsKPiArCQkvKiBDcmVhdGUg YSB2bWFsbG9jIG1hcHBpbmcgb2YgbG9nIGJ1ZmZlciBwYWdlcyAqLwo+ICsJCXZhZGRyID0gaTkx NV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cudm1hLT5vYmosIEk5MTVfTUFQX1dCKTsKPiAr CQlpZiAoSVNfRVJSKHZhZGRyKSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKPiArCQkJ RFJNX0VSUk9SKCJDb3VsZG4ndCBtYXAgbG9nIGJ1ZmZlciBwYWdlcyAlZFxuIiwgcmV0KTsKPiAr CQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCWd1Yy0+bG9nLmJ1Zl9hZGRyID0gdmFkZHI7 Cj4gKwl9Cj4gKwo+ICsJaWYgKCFndWMtPmxvZy5mbHVzaF93cSkgewo+ICsJCUlOSVRfV09SSygm Z3VjLT5sb2cuZmx1c2hfd29yaywgZ3VjX2NhcHR1cmVfbG9nc193b3JrKTsKPiArCj4gKwkJLyog TmVlZCBhIGRlZGljYXRlZCB3cSB0byBwcm9jZXNzIGxvZyBidWZmZXIgZmx1c2ggaW50ZXJydXB0 cwo+ICsJCSAqIGZyb20gR3VDIHdpdGhvdXQgbXVjaCBkZWxheSBzbyBhcyB0byBhdm9pZCBhbnkg bG9zcyBvZiBsb2dzLgo+ICsJCSAqLwo+ICsJCWd1Yy0+bG9nLmZsdXNoX3dxID0gYWxsb2Nfb3Jk ZXJlZF93b3JrcXVldWUoImk5MTUtZ3VjX2xvZyIsIDApOwo+ICsJCWlmIChndWMtPmxvZy5mbHVz aF93cSA9PSBOVUxMKSB7Cj4gKwkJCURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgdGhlIHdx IGZvciBHdUMgbG9nZ2luZ1xuIik7Cj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsJCX0KPiArCX0K PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIGd1Y19jcmVhdGVfbG9n KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK PiBAQCAtODUzLDYgKzEwMTksMTMgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAgCQl9Cj4KPiAgIAkJZ3VjLT5sb2cudm1hID0gdm1hOwo+ICsK PiArCQlpZiAoZ3VjX2NyZWF0ZV9sb2dfZXh0cmFzKGd1YykpIHsKPiArCQkJZ3VjX2xvZ19jbGVh bnVwKGd1Yyk7Cj4gKwkJCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxvZy52bWEp Owo+ICsJCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiAg IAl9Cj4KPiAgIAkvKiBlYWNoIGFsbG9jYXRlZCB1bml0IGlzIGEgcGFnZSAqLwo+IEBAIC0xMDM0 LDYgKzEyMDcsNyBAQCB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmRldl9w cml2LT5ndWM7Cj4KPiAgIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5hZHNfdm1h KTsKPiArCWd1Y19sb2dfY2xlYW51cChndWMpOwo+ICAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxl YXNlKCZndWMtPmxvZy52bWEpOwo+Cj4gICAJaWYgKGd1Yy0+Y3R4X3Bvb2xfdm1hKQo+IEBAIC0x MDk1LDMgKzEyNjksMTUgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPgo+ICAgCXJldHVybiBob3N0Mmd1Y19hY3Rpb24oZ3VjLCBkYXRhLCBBUlJBWV9TSVpF KGRhdGEpKTsKPiAgIH0KPiArCj4gK3ZvaWQgaTkxNV9ndWNfY2FwdHVyZV9sb2dzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJZ3VjX3JlYWRfdXBkYXRlX2xvZ19i dWZmZXIoJmRldl9wcml2LT5ndWMpOwo+ICsKPiArCS8qIEdlbmVyYWxseSBkZXZpY2UgaXMgZXhw ZWN0ZWQgdG8gYmUgYWN0aXZlIG9ubHkgYXQgdGhpcwo+ICsJICogdGltZSwgc28gZ2V0L3B1dCBz aG91bGQgYmUgcmVhbGx5IHF1aWNrLgo+ICsJICovCj4gKwlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7Cj4gKwlob3N0Mmd1Y19sb2didWZmZXJfZmx1c2hfY29tcGxldGUoJmRldl9wcml2 LT5ndWMpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gaW5kZXggZmMxZmU3Mi4uMTljMDA3OCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwo+IEBAIC0xNjYyLDcgKzE2NjIsMzMgQEAgc3RhdGljIHZvaWQgZ2VuNl9y cHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1f aWlyKQo+ICAgc3RhdGljIHZvaWQgZ2VuOV9ndWNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZ3RfaWlyKQo+ICAgewo+ICAgCWlmIChndF9paXIgJiBH RU45X0dVQ19UT19IT1NUX0lOVF9FVkVOVCkgewo+IC0JCS8qIFRPRE86IEhhbmRsZSBldmVudHMg Zm9yIHdoaWNoIEd1QyBpbnRlcnJ1cHRlZCBob3N0ICovCj4gKwkJLyogU2FtcGxlIHRoZSBsb2cg YnVmZmVyIGZsdXNoIHJlbGF0ZWQgYml0cyAmIGNsZWFyIHRoZW0gb3V0IG5vdwo+ICsJCSAqIGl0 c2VsZiBmcm9tIHRoZSBtZXNzYWdlIGlkZW50aXR5IHJlZ2lzdGVyIHRvIG1pbmltaXplIHRoZQo+ ICsJCSAqIHByb2JhYmlsaXR5IG9mIGxvc2luZyBhIGZsdXNoIGludGVycnVwdCwgd2hlbiB0aGVy ZSBhcmUgYmFjawo+ICsJCSAqIHRvIGJhY2sgZmx1c2ggaW50ZXJydXB0cy4KPiArCQkgKiBUaGVy ZSBjYW4gYmUgYSBuZXcgZmx1c2ggaW50ZXJydXB0LCBmb3IgZGlmZmVyZW50IGxvZyBidWZmZXIK PiArCQkgKiB0eXBlIChsaWtlIGZvciBJU1IpLCB3aGlsc3QgSG9zdCBpcyBoYW5kbGluZyBvbmUg KGZvciBEUEMpLgo+ICsJCSAqIFNpbmNlIHNhbWUgYml0IGlzIHVzZWQgaW4gbWVzc2FnZSByZWdp c3RlciBmb3IgSVNSICYgRFBDLCBpdAo+ICsJCSAqIGNvdWxkIGhhcHBlbiB0aGF0IEd1QyBzZXRz IHRoZSBiaXQgZm9yIDJuZCBpbnRlcnJ1cHQgYnV0IEhvc3QKPiArCQkgKiBjbGVhcnMgb3V0IHRo ZSBiaXQgb24gaGFuZGxpbmcgdGhlIDFzdCBpbnRlcnJ1cHQuCj4gKwkJICovCj4gKwkJdTMyIG1z ZywgZmx1c2g7Cj4gKwo+ICsJCW1zZyA9IEk5MTVfUkVBRChTT0ZUX1NDUkFUQ0goMTUpKTsKPiAr CQlmbHVzaCA9IG1zZyAmIChHVUMySE9TVF9NU0dfQ1JBU0hfRFVNUF9QT1NURUQgfAo+ICsJCQkg ICAgICAgR1VDMkhPU1RfTVNHX0ZMVVNIX0xPR19CVUZGRVIpOwo+ICsJCWlmIChmbHVzaCkgewo+ ICsJCQkvKiBDbGVhciB0aGUgbWVzc2FnZSBiaXRzIHRoYXQgYXJlIGhhbmRsZWQgKi8KPiArCQkJ STkxNV9XUklURShTT0ZUX1NDUkFUQ0goMTUpLCBtc2cgJiB+Zmx1c2gpOwo+ICsKPiArCQkJLyog SGFuZGxlIGZsdXNoIGludGVycnVwdCBpbiBib3R0b20gaGFsZiAqLwo+ICsJCQlxdWV1ZV93b3Jr KGRldl9wcml2LT5ndWMubG9nLmZsdXNoX3dxLAo+ICsJCQkJICAgJmRldl9wcml2LT5ndWMubG9n LmZsdXNoX3dvcmspOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCS8qIE5vdCBjbGVhcmluZyBvZiB1bmhh bmRsZWQgZXZlbnQgYml0cyB3b24ndCByZXN1bHQgaW4KPiArCQkJICogcmUtdHJpZ2dlcmluZyBv ZiB0aGUgaW50ZXJydXB0Lgo+ICsJCQkgKi8KPiArCQl9Cj4gICAJfQo+ICAgfQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKPiBpbmRleCAxZmM2M2ZlLi5kMDUzYTE4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKPiBAQCAtMTI0LDYgKzEyNCw5IEBAIHN0cnVjdCBpbnRlbF9ndWNf Zncgewo+ICAgc3RydWN0IGludGVsX2d1Y19sb2cgewo+ICAgCXVpbnQzMl90IGZsYWdzOwo+ICAg CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsJdm9pZCAqYnVmX2FkZHI7Cj4gKwlzdHJ1Y3Qgd29y a3F1ZXVlX3N0cnVjdCAqZmx1c2hfd3E7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZmx1c2hfd29y azsKPiAgIH07Cj4KPiAgIHN0cnVjdCBpbnRlbF9ndWMgewo+IEBAIC0xNjcsNSArMTcwLDYgQEAg aW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gICBpbnQgaTkxNV9ndWNfd3FfY2hlY2tfc3BhY2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpycSk7Cj4gICB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBpOTE1X2d1Y19zdWJt aXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBp OTE1X2d1Y19jYXB0dXJlX2xvZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK Pgo+ICAgI2VuZGlmCj4KCk90aGVyd2lzZSBsb29rcyBPSyB0byBtZS4KClJlZ2FyZHMsCgpUdnJ0 a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==