From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH 06/19] drm/i915: Handle log buffer flush interrupt event from GuC Date: Wed, 17 Aug 2016 16:54:36 +0530 Message-ID: <9f742262-6a45-6155-e2db-e530188da642@intel.com> References: <1471428859-10339-1-git-send-email-akash.goel@intel.com> <1471428859-10339-7-git-send-email-akash.goel@intel.com> <57B4458D.4000908@linux.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 79D8F6E265 for ; Wed, 17 Aug 2016 11:25:09 +0000 (UTC) In-Reply-To: <57B4458D.4000908@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: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiA4LzE3LzIwMTYgNDozNyBQTSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAxNy8w OC8xNiAxMToxNCwgYWthc2guZ29lbEBpbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IFNhZ2FyIEFy dW4gS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+Cj4+IEd1QyB1a2VybmVsIHNl bmRzIGFuIGludGVycnVwdCB0byBIb3N0IHRvIGZsdXNoIHRoZSBsb2cgYnVmZmVyCj4+IGFuZCBl eHBlY3RzIEhvc3QgdG8gY29ycmVzcG9uZGluZ2x5IHVwZGF0ZSB0aGUgcmVhZCBwb2ludGVyCj4+ IGluZm9ybWF0aW9uIGluIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUsIG9uY2UgaXQgaGFzIGNvbnN1bWVk IHRoZQo+PiBsb2cgYnVmZmVyIGNvbnRlbnRzIGJ5IGNvcHlpbmcgdGhlbSB0byBhIGZpbGUgb3Ig YnVmZmVyLgo+PiBFdmVuIGlmIEhvc3QgY291bGRuJ3QgY29weSB0aGUgY29udGVudHMsIGl0IGNh biBzdGlsbCB1cGRhdGUgdGhlCj4+IHJlYWQgcG9pbnRlciBzbyB0aGF0IGxvZ2dpbmcgc3RhdGUg aXMgbm90IGRpc3R1cmJlZCBvbiBHdUMgc2lkZS4KPj4KPj4gdjI6Cj4+IC0gVXNlIGEgZGVkaWNh dGVkIHdvcmtxdWV1ZSBmb3IgaGFuZGxpbmcgZmx1c2ggaW50ZXJydXB0LiAoVHZydGtvKQo+PiAt IFJlZHVjZSB0aGUgb3ZlcmFsbCBsb2cgYnVmZmVyIGNvcHlpbmcgdGltZSBieSBza2lwcGluZyB0 aGUgY29weSBvZgo+PiAgICBjcmFzaCBidWZmZXIgYXJlYSBmb3IgcmVndWxhciBjYXNlcyBhbmQg Y29weWluZyBvbmx5IHRoZSBzdGF0ZQo+PiAgICBzdHJ1Y3R1cmUgZGF0YSBpbiBmaXJzdCBwYWdl Lgo+Pgo+PiB2MzoKPj4gICAtIENyZWF0ZSBhIHZtYWxsb2MgbWFwcGluZyBvZiBsb2cgYnVmZmVy LiAoQ2hyaXMpCj4+ICAgLSBDb3ZlciB0aGUgZmx1c2ggYWNrbm93bGVkZ21lbnQgdW5kZXIgcnBt IGdldCAmIHB1dC4oQ2hyaXMpCj4+ICAgLSBSZXZlcnQgdGhlIGNoYW5nZSBvZiBza2lwcGluZyB0 aGUgY29weSBvZiBjcmFzaCBkdW1wIGFyZWEsIGFzCj4+ICAgICBub3QgcmVhbGx5IG5lZWRlZCwg d2lsbCBiZSBjb3ZlcmVkIGJ5IHN1YnNlcXVlbnQgcGF0Y2guCj4+Cj4+IHY0Ogo+PiAgIC0gRGVz dHJveSB0aGUgd3EgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9uIGluIHdoaWNoIGl0IHdhcyBjcmVh dGVkLAo+PiAgICAgcGFzcyBkZXZfcGl2IHBvaW50ZXIgaW5zdGVhZCBvZiBkZXYgdG8gbmV3bHkg YWRkZWQgR3VDIGZ1bmN0aW9uLAo+PiAgICAgYWRkIG1vcmUgY29tbWVudHMgJiByZW5hbWUgdmFy aWFibGUgZm9yIGNsYXJpdHkuIChUdnJ0a28pCj4+Cj4+IHY1Ogo+PiAtIEFsbG9jYXRlICYgZGVz dHJveSB0aGUgZGVkaWNhdGVkIHdxLCBmb3IgaGFuZGxpbmcgZmx1c2ggaW50ZXJydXB0LAo+PiAg ICBmcm9tIHRoZSBzZXR1cC90ZWFyZG93biByb3V0aW5lcyBvZiBHdUMgbG9nZ2luZy4gKENocmlz KQo+PiAtIFZhbGlkYXRlIHRoZSBsb2cgYnVmZmVyIHNpemUgdmFsdWUgcmV0cmlldmVkIGZyb20g c3RhdGUgc3RydWN0dXJlCj4+ICAgIGFuZCBkbyBzb21lIG1pbm9yIGNsZWFudXAuIChUdnJ0a28p Cj4+IC0gRml4IGVycm9yL3dhcm5pbmdzIHJlcG9ydGVkIGJ5IGNoZWNrcGF0Y2guIChUdnJ0a28p Cj4+IC0gUmViYXNlLgo+Pgo+PiB2NjoKPj4gICAtIFJlbW92ZSB0aGUgaW50ZXJydXB0c19lbmFi bGVkIGNoZWNrIGZyb20gZ3VjX2NhcHR1cmVfbG9nc193b3JrLCBuZWVkCj4+ICAgICB0byBwcm9j ZXNzIHRoYXQgbGFzdCB3b3JrIGl0ZW0gYWxzbywgcXVldWVkIGp1c3QgYmVmb3JlIGRpc2FibGlu ZyB0aGUKPj4gICAgIGludGVycnVwdCBhcyBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVwdCBoYW5k bGluZyBpcyBhIGJpdCBkaWZmZXJlbnQKPj4gICAgIGNhc2Ugd2hlcmUgR3VDIGlzIGFjdHVhbGx5 IGV4cGVjdGluZyBhbiBBQ0sgZnJvbSBob3N0LCB3aGljaAo+PiBzaG91bGQgYmUKPj4gICAgIHBy b3ZpZGVkIHRvIGtlZXAgdGhlIGxvZ2dpbmcgZ29pbmcuCj4+ICAgICBTeW5jIGFnYWluc3QgdGhl IHdvcmsgd2lsbCBiZSBkb25lIGJ5IGNhbGxlciBkaXNhYmxpbmcgdGhlIGludGVycnVwdC4KPj4g ICAtIERvbid0IHNhbXBsZSB0aGUgbG9nIGJ1ZmZlciBzaXplIHZhbHVlIGZyb20gc3RhdGUgc3Ry dWN0dXJlLCBkaXJlY3RseQo+PiAgICAgdXNlIHRoZSBleHBlY3RlZCB2YWx1ZSB0byBtb3ZlIHRo ZSBwb2ludGVyICYgZG8gdGhlIGNvcHkgYW5kIHRoYXQKPj4gY2Fubm90Cj4+ICAgICBnbyB3cm9u ZyAob3V0IG9mIGJvdW5kcykgYXMgRHJpdmVyIG9ubHkgYWxsb2NhdGVkIHRoZSBsb2cgYnVmZmVy Cj4+IGFuZCB0aGUKPj4gICAgIHJlbGF5IGJ1ZmZlcnMuIERyaXZlciBzaG91bGQgcmVmcmFpbiBm cm9tIGludGVycHJldGluZyB0aGUgbG9nCj4+IHBhY2tldCwKPj4gICAgIGFzIG11Y2ggcG9zc2li bGUgYW5kIGxldCBVc2Vyc3BhY2UgcGFyc2VyIGRldGVjdCB0aGUgYW5vbWFseS4gKENocmlzKQo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50 ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNv bT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j IHwgMTg2Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDI4ICsrKystCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwgICA0ICsKPj4gICAzIGZpbGVzIGNo YW5nZWQsIDIxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gaW5kZXggYjA2MmRhNi4uYWRl NTFjYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u Ywo+PiBAQCAtMTcyLDYgKzE3MiwxNSBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX3NhbXBsZV9mb3Jj ZXdha2Uoc3RydWN0Cj4+IGludGVsX2d1YyAqZ3VjLAo+PiAgICAgICByZXR1cm4gaG9zdDJndWNf YWN0aW9uKGd1YywgZGF0YSwgQVJSQVlfU0laRShkYXRhKSk7Cj4+ICAgfQo+Pgo+PiArc3RhdGlj IGludCBob3N0Mmd1Y19sb2didWZmZXJfZmx1c2hfY29tcGxldGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+PiArewo+PiArICAgIHUzMiBkYXRhWzFdOwo+PiArCj4+ICsgICAgZGF0YVswXSA9IEhP U1QyR1VDX0FDVElPTl9MT0dfQlVGRkVSX0ZJTEVfRkxVU0hfQ09NUExFVEU7Cj4+ICsKPj4gKyAg ICByZXR1cm4gaG9zdDJndWNfYWN0aW9uKGd1YywgZGF0YSwgMSk7Cj4+ICt9Cj4+ICsKPj4gICAv Kgo+PiAgICAqIEluaXRpYWxpc2UsIHVwZGF0ZSwgb3IgY2xlYXIgZG9vcmJlbGwgZGF0YSBzaGFy ZWQgd2l0aCB0aGUgR3VDCj4+ICAgICoKPj4gQEAgLTgyOCw2ICs4MzcsMTYzIEBAIGVycjoKPj4g ICAgICAgcmV0dXJuIE5VTEw7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIHZvaWQgZ3VjX21vdmVfdG9f bmV4dF9idWYoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCAqZ3VjX2dldF93cml0ZV9idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiAr ewo+PiArICAgIHJldHVybiBOVUxMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQgaW50 IGd1Y19nZXRfbG9nX2J1ZmZlcl9zaXplKGVudW0gZ3VjX2xvZ19idWZmZXJfdHlwZQo+PiB0eXBl KQo+PiArewo+PiArICAgIGlmICh0eXBlID09IEdVQ19JU1JfTE9HX0JVRkZFUikKPj4gKyAgICAg ICAgcmV0dXJuIChHVUNfTE9HX0lTUl9QQUdFUyArIDEpICogUEFHRV9TSVpFOwo+PiArICAgIGVs c2UgaWYgKHR5cGUgPT0gR1VDX0RQQ19MT0dfQlVGRkVSKQo+PiArICAgICAgICByZXR1cm4gKEdV Q19MT0dfRFBDX1BBR0VTICsgMSkgKiBQQUdFX1NJWkU7Cj4+ICsgICAgZWxzZQo+PiArICAgICAg ICByZXR1cm4gKEdVQ19MT0dfQ1JBU0hfUEFHRVMgKyAxKSAqIFBBR0VfU0laRTsKPj4gK30KPgo+ IENvdWxkIGRvIGl0IHdpdGggYSBzd2l0Y2ggc3RhdGVtZW50IHRvIGdldCBhdXRvbWF0aWMgcmVt aW5kZXIgb2Ygc2l6ZQo+IG5vdCBiZWluZyBoYW5kbGVkIGlmIHNvbWUgZGF5IGEgbmV3IGxvZyBi dWZmZXIgdHlwZSBnZXRzIGFkZGVkLiBJdCB3b3VsZAo+IHByb2JhYmx5IG1vcmUgaW4gdGhlIHN0 eWxlIG9mIHRoZSByZXN0IG9mIHRoZSBkcml2ZXIgYXMgd2VsbC4KPgpGaW5lIHdpbGwgdXNlIHN3 aXRjaCBzdGF0ZW1lbnQgaGVyZS4KClNob3VsZCBJIHVzZSBCVUdfT04gZm9yIHRoZSBkZWZhdWx0 L3VuaGFuZGxlZCBjYXNlID8KCWNhc2UgR1VDX0lTUl9MT0dfQlVGRkVSCgkKCWNhc2UgR1VDX0RQ Q19MT0dfQlVGRkVSCgoJY2FzZSBHVUNfTE9HX0NSQVNIX1BBR0VTCgoJZGVmYXVsdAoJCUJVR19P TigxKQoKPj4gKwo+PiArc3RhdGljIHZvaWQgZ3VjX3JlYWRfdXBkYXRlX2xvZ19idWZmZXIoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArICAgIHN0cnVjdCBndWNfbG9nX2J1ZmZlcl9z dGF0ZSAqbG9nX2J1ZmZlcl9zdGF0ZSwKPj4gKmxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGU7Cj4+ ICsgICAgc3RydWN0IGd1Y19sb2dfYnVmZmVyX3N0YXRlIGxvZ19idWZmZXJfc3RhdGVfbG9jYWw7 Cj4+ICsgICAgdm9pZCAqc3JjX2RhdGFfcHRyLCAqZHN0X2RhdGFfcHRyOwo+PiArICAgIHVuc2ln bmVkIGludCBidWZmZXJfc2l6ZTsKPj4gKyAgICBlbnVtIGd1Y19sb2dfYnVmZmVyX3R5cGUgdHlw ZTsKPj4gKwo+PiArICAgIGlmIChXQVJOX09OKCFndWMtPmxvZy5idWZfYWRkcikpCj4+ICsgICAg ICAgIHJldHVybjsKPj4gKwo+PiArICAgIC8qIEdldCB0aGUgcG9pbnRlciB0byBzaGFyZWQgR3VD IGxvZyBidWZmZXIgKi8KPj4gKyAgICBsb2dfYnVmZmVyX3N0YXRlID0gc3JjX2RhdGFfcHRyID0g Z3VjLT5sb2cuYnVmX2FkZHI7Cj4+ICsKPj4gKyAgICAvKiBHZXQgdGhlIHBvaW50ZXIgdG8gbG9j YWwgYnVmZmVyIHRvIHN0b3JlIHRoZSBsb2dzICovCj4+ICsgICAgZHN0X2RhdGFfcHRyID0gbG9n X2J1ZmZlcl9zbmFwc2hvdF9zdGF0ZSA9Cj4+IGd1Y19nZXRfd3JpdGVfYnVmZmVyKGd1Yyk7Cj4+ ICsKPj4gKyAgICAvKiBBY3R1YWwgbG9ncyBhcmUgcHJlc2VudCBmcm9tIHRoZSAybmQgcGFnZSAq Lwo+PiArICAgIHNyY19kYXRhX3B0ciArPSBQQUdFX1NJWkU7Cj4+ICsgICAgZHN0X2RhdGFfcHRy ICs9IFBBR0VfU0laRTsKPj4gKwo+PiArICAgIGZvciAodHlwZSA9IEdVQ19JU1JfTE9HX0JVRkZF UjsgdHlwZSA8IEdVQ19NQVhfTE9HX0JVRkZFUjsgdHlwZSsrKSB7Cj4+ICsgICAgICAgIC8qIE1h a2UgYSBjb3B5IG9mIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgaW4gR3VDIGxvZyBidWZmZXIgKHdoaWNo Cj4+ICsgICAgICAgICAqIGlzIHVuY2FjaGVkIG1hcHBlZCkgb24gdGhlIHN0YWNrIHRvIGF2b2lk IHJlYWRpbmcgZnJvbSBpdAo+PiArICAgICAgICAgKiBtdWx0aXBsZSB0aW1lcy4KPj4gKyAgICAg ICAgICovCj4+ICsgICAgICAgIG1lbWNweSgmbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbCwgbG9nX2J1 ZmZlcl9zdGF0ZSwKPj4gKyAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZ3VjX2xvZ19idWZm ZXJfc3RhdGUpKTsKPj4gKyAgICAgICAgYnVmZmVyX3NpemUgPSBndWNfZ2V0X2xvZ19idWZmZXJf c2l6ZSh0eXBlKTsKPj4gKwo+PiArICAgICAgICBpZiAobG9nX2J1ZmZlcl9zbmFwc2hvdF9zdGF0 ZSkgewo+PiArICAgICAgICAgICAgLyogRmlyc3QgY29weSB0aGUgc3RhdGUgc3RydWN0dXJlIGlu IHNuYXBzaG90IGJ1ZmZlciAqLwo+PiArICAgICAgICAgICAgbWVtY3B5KGxvZ19idWZmZXJfc25h cHNob3Rfc3RhdGUsICZsb2dfYnVmZmVyX3N0YXRlX2xvY2FsLAo+PiArICAgICAgICAgICAgICAg ICAgIHNpemVvZihzdHJ1Y3QgZ3VjX2xvZ19idWZmZXJfc3RhdGUpKTsKPgo+IEkndmUgbm90aWNl ZCBub3cgbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbCBpcyB1c2VkIG9ubHkgZm9yIHRoZQo+IHNhbXBs ZV93cml0ZV9wdHIgYmVsb3cgYW5kIG90aGVyd2lzZSBpdCBjYXVzZXMgdHdvIGNvcGllcyBvZiB0 aGUgc2FtZSBkYXRhLgo+CkFjdHVhbGx5IGxvZ19idWZmZXJfc3RhdGVfbG9jYWwgZ2V0cyB1c2Vk IG1vcmUgaW4gdGhlIHN1YnNlcXVlbnQgCnBhdGNoZXMsIHdoZXJlIHdlIGRvIHRoZSBib29ra2Vl cGluZyBhbmQgb3B0aW1pemUgdGhlIGNvcHlpbmcuCgpbUEFUQ0ggMTAvMTldIGRybS9pOTE1OiBB ZGQgc3RhdHMgZm9yIEd1QyBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVwdHMKW1BBVENIIDExLzE5 XSBkcm0vaTkxNTogT3B0aW1pemF0aW9uIHRvIHJlZHVjZSB0aGUgc2FtcGxpbmcgdGltZSBvZiBH dUMgCmxvZyBidWZmZXIKCj4gU2luY2UgdGhpcyBicmFuY2ggaXMgYW4gaW50ZXJlc3Rpbmcgb25l LCB5b3UgY291bGQgYXZvaWQgb25lIGNvcHkgYnkKPiB1cGRhdGluZyB0aGUgbG9nX2J1ZmZlcl9z dGF0ZS0+cmVhZF9wdHIgZnJvbSB0aGUKPiBsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlIGluIHRo aXMgYnJhbmNoLCBhbmQgYWRkIGFuIGVsc2UgYnJhbmNoIHRvCj4gdXBkYXRlIGl0IGRpcmVjdGx5 IGZyb20gbG9nX2J1ZmZlcl9zdGF0ZSB3aGVuIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUKPiBp cyBub3QgYXZhaWxhYmxlLgo+Cj4gU291bmRzIGxpa2UgaXQgd291bGQgYmUgd29ydGggZWxpbWlu YXRpbmcgZG91YmxlIG1lbWNweSwgd2hhdCBkbyB5b3UgdGhpbms+Cj4KV29uJ3QgdGhlIDJuZCBt ZW1jcHkgKGZyb20gdGhlIGNvcHkgb24gc3RhY2sgdG8gdGhlIHJlbGF5IGJ1ZmZlcikgYmUgCnJl YWxseSBmYXN0ID8KVGhlIGNvcHkgb24gc3RhY2sgKDE2IGJ5dGVzKSB3aWxsIG1vc3QgbGlrZWx5 IGJlIGluIHRoZSBDUFUgY2FjaGUgYW5kIAp0aGUgc2FtZSBhcmVhIGlzIHVzZWQgZm9yIGFsbCAz IGJ1ZmZlciB0eXBlcy4KCkJlc3QgcmVnYXJkcwpBa2FzaAoKPj4gKwo+PiArICAgICAgICAgICAg LyogVGhlIHdyaXRlIHBvaW50ZXIgY291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIEd1Qwo+ PiArICAgICAgICAgICAgICogZmlybXdhcmUsIGFmdGVyIHNlbmRpbmcgdGhlIGZsdXNoIGludGVy cnVwdCB0byBIb3N0LAo+PiArICAgICAgICAgICAgICogZm9yIGNvbnNpc3RlbmN5IHNldCB0aGUg d3JpdGUgcG9pbnRlciB2YWx1ZSB0byBzYW1lCj4+ICsgICAgICAgICAgICAgKiB2YWx1ZSBvZiBz YW1wbGVkX3dyaXRlX3B0ciBpbiB0aGUgc25hcHNob3QgYnVmZmVyLgo+PiArICAgICAgICAgICAg ICovCj4+ICsgICAgICAgICAgICBsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRlLT53cml0ZV9wdHIg PQo+PiArICAgICAgICAgICAgICAgIGxvZ19idWZmZXJfc25hcHNob3Rfc3RhdGUtPnNhbXBsZWRf d3JpdGVfcHRyOwo+PiArCj4+ICsgICAgICAgICAgICBsb2dfYnVmZmVyX3NuYXBzaG90X3N0YXRl Kys7Cj4+ICsKPj4gKyAgICAgICAgICAgIC8qIE5vdyBjb3B5IHRoZSBhY3R1YWwgbG9ncy4gKi8K Pj4gKyAgICAgICAgICAgIG1lbWNweShkc3RfZGF0YV9wdHIsIHNyY19kYXRhX3B0ciwgYnVmZmVy X3NpemUpOwo+PiArCj4+ICsgICAgICAgICAgICBzcmNfZGF0YV9wdHIgKz0gYnVmZmVyX3NpemU7 Cj4+ICsgICAgICAgICAgICBkc3RfZGF0YV9wdHIgKz0gYnVmZmVyX3NpemU7Cj4+ICsgICAgICAg IH0KPj4gKwo+PiArICAgICAgICAvKiBGSVhNRTogaW52YWxpZGF0ZS9mbHVzaCBmb3IgbG9nIGJ1 ZmZlciBuZWVkZWQgKi8KPj4gKwo+PiArICAgICAgICAvKiBVcGRhdGUgdGhlIHJlYWQgcG9pbnRl ciBpbiB0aGUgc2hhcmVkIGxvZyBidWZmZXIgKi8KPj4gKyAgICAgICAgbG9nX2J1ZmZlcl9zdGF0 ZS0+cmVhZF9wdHIgPQo+PiArICAgICAgICAgICAgbG9nX2J1ZmZlcl9zdGF0ZV9sb2NhbC5zYW1w bGVkX3dyaXRlX3B0cjsKPj4gKwo+PiArICAgICAgICAvKiBDbGVhciB0aGUgJ2ZsdXNoIHRvIGZp bGUnIGZsYWcgKi8KPj4gKyAgICAgICAgbG9nX2J1ZmZlcl9zdGF0ZS0+Zmx1c2hfdG9fZmlsZSA9 IDA7Cj4+ICsgICAgICAgIGxvZ19idWZmZXJfc3RhdGUrKzsKPj4gKyAgICB9Cj4+ICsKPj4gKyAg ICBpZiAobG9nX2J1ZmZlcl9zbmFwc2hvdF9zdGF0ZSkKPj4gKyAgICAgICAgZ3VjX21vdmVfdG9f bmV4dF9idWYoZ3VjKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZ3VjX2NhcHR1cmVfbG9n c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+PiArICAgICAgICBjb250YWluZXJfb2Yod29yaywg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIGd1Yy5sb2cuZmx1c2hfd29yayk7Cj4+ICsKPj4gKyAg ICBpOTE1X2d1Y19jYXB0dXJlX2xvZ3MoZGV2X3ByaXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg dm9pZCBndWNfbG9nX2NsZWFudXAoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4+ ICsKPj4gKyAgICBsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4+ICsKPj4gKyAgICBpZiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKPj4gKyAgICAgICAg cmV0dXJuOwo+PiArCj4+ICsgICAgLyogRmlyc3QgZGlzYWJsZSB0aGUgZmx1c2ggaW50ZXJydXB0 ICovCj4+ICsgICAgZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPj4gKwo+ PiArICAgIGlmIChndWMtPmxvZy5mbHVzaF93cSkKPj4gKyAgICAgICAgZGVzdHJveV93b3JrcXVl dWUoZ3VjLT5sb2cuZmx1c2hfd3EpOwo+PiArCj4+ICsgICAgZ3VjLT5sb2cuZmx1c2hfd3EgPSBO VUxMOwo+PiArCj4+ICsgICAgaWYgKGd1Yy0+bG9nLmJ1Zl9hZGRyKQo+PiArICAgICAgICBpOTE1 X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+bG9nLnZtYS0+b2JqKTsKPj4gKwo+PiArICAgIGd1 Yy0+bG9nLmJ1Zl9hZGRyID0gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBndWNfY3Jl YXRlX2xvZ19leHRyYXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArICAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4+ICsgICAg dm9pZCAqdmFkZHI7Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiArICAgIGxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPj4gKwo+PiArICAgIC8qIE5vdGhp bmcgdG8gZG8gKi8KPj4gKyAgICBpZiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKPj4gKyAgICAg ICAgcmV0dXJuIDA7Cj4+ICsKPj4gKyAgICBpZiAoIWd1Yy0+bG9nLmJ1Zl9hZGRyKSB7Cj4+ICsg ICAgICAgIC8qIENyZWF0ZSBhIHZtYWxsb2MgbWFwcGluZyBvZiBsb2cgYnVmZmVyIHBhZ2VzICov Cj4+ICsgICAgICAgIHZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cudm1h LT5vYmosIEk5MTVfTUFQX1dCKTsKPj4gKyAgICAgICAgaWYgKElTX0VSUih2YWRkcikpIHsKPj4g KyAgICAgICAgICAgIHJldCA9IFBUUl9FUlIodmFkZHIpOwo+PiArICAgICAgICAgICAgRFJNX0VS Uk9SKCJDb3VsZG4ndCBtYXAgbG9nIGJ1ZmZlciBwYWdlcyAlZFxuIiwgcmV0KTsKPj4gKyAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBndWMtPmxv Zy5idWZfYWRkciA9IHZhZGRyOwo+PiArICAgIH0KPj4gKwo+PiArICAgIGlmICghZ3VjLT5sb2cu Zmx1c2hfd3EpIHsKPj4gKyAgICAgICAgSU5JVF9XT1JLKCZndWMtPmxvZy5mbHVzaF93b3JrLCBn dWNfY2FwdHVyZV9sb2dzX3dvcmspOwo+PiArCj4+ICsgICAgICAgIC8qIE5lZWQgYSBkZWRpY2F0 ZWQgd3EgdG8gcHJvY2VzcyBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVwdHMKPj4gKyAgICAgICAg ICogZnJvbSBHdUMgd2l0aG91dCBtdWNoIGRlbGF5IHNvIGFzIHRvIGF2b2lkIGFueSBsb3NzIG9m IGxvZ3MuCj4+ICsgICAgICAgICAqLwo+PiArICAgICAgICBndWMtPmxvZy5mbHVzaF93cSA9IGFs bG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWd1Y19sb2ciLCAwKTsKPj4gKyAgICAgICAgaWYg KGd1Yy0+bG9nLmZsdXNoX3dxID09IE5VTEwpIHsKPj4gKyAgICAgICAgICAgIERSTV9FUlJPUigi Q291bGRuJ3QgYWxsb2NhdGUgdGhlIHdxIGZvciBHdUMgbG9nZ2luZ1xuIik7Cj4+ICsgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiArICAg IHJldHVybiAwOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+PiAgIHsKPj4gICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4+IEBAIC04NTMsNiArMTAxOSwxMyBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCj4+ICAgICAgICAgICB9Cj4+Cj4+ICAgICAgICAgICBndWMtPmxv Zy52bWEgPSB2bWE7Cj4+ICsKPj4gKyAgICAgICAgaWYgKGd1Y19jcmVhdGVfbG9nX2V4dHJhcyhn dWMpKSB7Cj4+ICsgICAgICAgICAgICBndWNfbG9nX2NsZWFudXAoZ3VjKTsKPj4gKyAgICAgICAg ICAgIGk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxvZy52bWEpOwo+PiArICAgICAg ICAgICAgaTkxNS5ndWNfbG9nX2xldmVsID0gLTE7Cj4+ICsgICAgICAgICAgICByZXR1cm47Cj4+ ICsgICAgICAgIH0KPj4gICAgICAgfQo+Pgo+PiAgICAgICAvKiBlYWNoIGFsbG9jYXRlZCB1bml0 IGlzIGEgcGFnZSAqLwo+PiBAQCAtMTAzNCw2ICsxMjA3LDcgQEAgdm9pZCBpOTE1X2d1Y19zdWJt aXNzaW9uX2Zpbmkoc3RydWN0Cj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgICAg ICBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKPj4KPj4gICAgICAgaTkx NV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+YWRzX3ZtYSk7Cj4+ICsgICAgZ3VjX2xvZ19j bGVhbnVwKGd1Yyk7Cj4+ICAgICAgIGk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxv Zy52bWEpOwo+Pgo+PiAgICAgICBpZiAoZ3VjLT5jdHhfcG9vbF92bWEpCj4+IEBAIC0xMDk1LDMg KzEyNjksMTUgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikK Pj4KPj4gICAgICAgcmV0dXJuIGhvc3QyZ3VjX2FjdGlvbihndWMsIGRhdGEsIEFSUkFZX1NJWkUo ZGF0YSkpOwo+PiAgIH0KPj4gKwo+PiArdm9pZCBpOTE1X2d1Y19jYXB0dXJlX2xvZ3Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiArewo+PiArICAgIGd1Y19yZWFkX3VwZGF0 ZV9sb2dfYnVmZmVyKCZkZXZfcHJpdi0+Z3VjKTsKPj4gKwo+PiArICAgIC8qIEdlbmVyYWxseSBk ZXZpY2UgaXMgZXhwZWN0ZWQgdG8gYmUgYWN0aXZlIG9ubHkgYXQgdGhpcwo+PiArICAgICAqIHRp bWUsIHNvIGdldC9wdXQgc2hvdWxkIGJlIHJlYWxseSBxdWljay4KPj4gKyAgICAgKi8KPj4gKyAg ICBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+ICsgICAgaG9zdDJndWNfbG9nYnVm ZmVyX2ZsdXNoX2NvbXBsZXRlKCZkZXZfcHJpdi0+Z3VjKTsKPj4gKyAgICBpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+PiBp bmRleCBmYzFmZTcyLi4xOWMwMDc4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4g QEAgLTE2NjIsNyArMTY2MiwzMyBAQCBzdGF0aWMgdm9pZCBnZW42X3Jwc19pcnFfaGFuZGxlcihz dHJ1Y3QKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9paXIpCj4+ICAgc3Rh dGljIHZvaWQgZ2VuOV9ndWNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+PiB1MzIgZ3RfaWlyKQo+PiAgIHsKPj4gICAgICAgaWYgKGd0X2lpciAmIEdFTjlf R1VDX1RPX0hPU1RfSU5UX0VWRU5UKSB7Cj4+IC0gICAgICAgIC8qIFRPRE86IEhhbmRsZSBldmVu dHMgZm9yIHdoaWNoIEd1QyBpbnRlcnJ1cHRlZCBob3N0ICovCj4+ICsgICAgICAgIC8qIFNhbXBs ZSB0aGUgbG9nIGJ1ZmZlciBmbHVzaCByZWxhdGVkIGJpdHMgJiBjbGVhciB0aGVtIG91dCBub3cK Pj4gKyAgICAgICAgICogaXRzZWxmIGZyb20gdGhlIG1lc3NhZ2UgaWRlbnRpdHkgcmVnaXN0ZXIg dG8gbWluaW1pemUgdGhlCj4+ICsgICAgICAgICAqIHByb2JhYmlsaXR5IG9mIGxvc2luZyBhIGZs dXNoIGludGVycnVwdCwgd2hlbiB0aGVyZSBhcmUgYmFjawo+PiArICAgICAgICAgKiB0byBiYWNr IGZsdXNoIGludGVycnVwdHMuCj4+ICsgICAgICAgICAqIFRoZXJlIGNhbiBiZSBhIG5ldyBmbHVz aCBpbnRlcnJ1cHQsIGZvciBkaWZmZXJlbnQgbG9nIGJ1ZmZlcgo+PiArICAgICAgICAgKiB0eXBl IChsaWtlIGZvciBJU1IpLCB3aGlsc3QgSG9zdCBpcyBoYW5kbGluZyBvbmUgKGZvciBEUEMpLgo+ PiArICAgICAgICAgKiBTaW5jZSBzYW1lIGJpdCBpcyB1c2VkIGluIG1lc3NhZ2UgcmVnaXN0ZXIg Zm9yIElTUiAmIERQQywgaXQKPj4gKyAgICAgICAgICogY291bGQgaGFwcGVuIHRoYXQgR3VDIHNl dHMgdGhlIGJpdCBmb3IgMm5kIGludGVycnVwdCBidXQgSG9zdAo+PiArICAgICAgICAgKiBjbGVh cnMgb3V0IHRoZSBiaXQgb24gaGFuZGxpbmcgdGhlIDFzdCBpbnRlcnJ1cHQuCj4+ICsgICAgICAg ICAqLwo+PiArICAgICAgICB1MzIgbXNnLCBmbHVzaDsKPj4gKwo+PiArICAgICAgICBtc2cgPSBJ OTE1X1JFQUQoU09GVF9TQ1JBVENIKDE1KSk7Cj4+ICsgICAgICAgIGZsdXNoID0gbXNnICYgKEdV QzJIT1NUX01TR19DUkFTSF9EVU1QX1BPU1RFRCB8Cj4+ICsgICAgICAgICAgICAgICAgICAgR1VD MkhPU1RfTVNHX0ZMVVNIX0xPR19CVUZGRVIpOwo+PiArICAgICAgICBpZiAoZmx1c2gpIHsKPj4g KyAgICAgICAgICAgIC8qIENsZWFyIHRoZSBtZXNzYWdlIGJpdHMgdGhhdCBhcmUgaGFuZGxlZCAq Lwo+PiArICAgICAgICAgICAgSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMTUpLCBtc2cgJiB+Zmx1 c2gpOwo+PiArCj4+ICsgICAgICAgICAgICAvKiBIYW5kbGUgZmx1c2ggaW50ZXJydXB0IGluIGJv dHRvbSBoYWxmICovCj4+ICsgICAgICAgICAgICBxdWV1ZV93b3JrKGRldl9wcml2LT5ndWMubG9n LmZsdXNoX3dxLAo+PiArICAgICAgICAgICAgICAgICAgICZkZXZfcHJpdi0+Z3VjLmxvZy5mbHVz aF93b3JrKTsKPj4gKyAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgIC8qIE5vdCBjbGVh cmluZyBvZiB1bmhhbmRsZWQgZXZlbnQgYml0cyB3b24ndCByZXN1bHQgaW4KPj4gKyAgICAgICAg ICAgICAqIHJlLXRyaWdnZXJpbmcgb2YgdGhlIGludGVycnVwdC4KPj4gKyAgICAgICAgICAgICAq Lwo+PiArICAgICAgICB9Cj4+ICAgICAgIH0KPj4gICB9Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Yy5oCj4+IGluZGV4IDFmYzYzZmUuLmQwNTNhMTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCj4+IEBAIC0xMjQsNiArMTI0LDkgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7 Cj4+ICAgc3RydWN0IGludGVsX2d1Y19sb2cgewo+PiAgICAgICB1aW50MzJfdCBmbGFnczsKPj4g ICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4+ICsgICAgdm9pZCAqYnVmX2FkZHI7Cj4+ICsg ICAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmZsdXNoX3dxOwo+PiArICAgIHN0cnVjdCB3b3Jr X3N0cnVjdCBmbHVzaF93b3JrOwo+PiAgIH07Cj4+Cj4+ICAgc3RydWN0IGludGVsX2d1YyB7Cj4+ IEBAIC0xNjcsNSArMTcwLDYgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVj dAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ICAgaW50IGk5MTVfZ3VjX3dxX2No ZWNrX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpOwo+PiAgIHZvaWQgaTkx NV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4+ICAgdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPj4gK3ZvaWQgaTkxNV9ndWNfY2FwdHVyZV9sb2dzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+Cj4+ICAgI2VuZGlmCj4+Cj4KPiBPdGhlcndp c2UgbG9va3MgT0sgdG8gbWUuCj4KPiBSZWdhcmRzLAo+Cj4gVHZydGtvCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=