From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 05/20] drm/i915: Support for GuC interrupts Date: Fri, 12 Aug 2016 14:31:36 +0100 Message-ID: <57ADCFB8.9090603@linux.intel.com> References: <1470983123-22127-1-git-send-email-akash.goel@intel.com> <1470983123-22127-6-git-send-email-akash.goel@intel.com> <57ADB8F7.1070001@linux.intel.com> <8a99de0d-6547-8158-55a4-8ad6777bd428@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 DA2236EB76 for ; Fri, 12 Aug 2016 13:31:38 +0000 (UTC) In-Reply-To: <8a99de0d-6547-8158-55a4-8ad6777bd428@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Goel, Akash" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzA4LzE2IDE0OjEwLCBHb2VsLCBBa2FzaCB3cm90ZToKPiBPbiA4LzEyLzIwMTYgNToy NCBQTSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Cj4+IE9uIDEyLzA4LzE2IDA3OjI1LCBha2Fz aC5nb2VsQGludGVsLmNvbSB3cm90ZToKPj4+IEZyb206IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdh ci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+Pgo+Pj4gVGhlcmUgYXJlIGNlcnRhaW4gdHlwZXMgb2Yg aW50ZXJydXB0cyB3aGljaCBIb3N0IGNhbiByZWNpZXZlIGZyb20gR3VDLgo+Pj4gR3VDIHVrZXJu ZWwgc2VuZHMgYW4gaW50ZXJydXB0IHRvIEhvc3QgZm9yIGNlcnRhaW4gZXZlbnRzLCBsaWtlIGZv cgo+Pj4gZXhhbXBsZSByZXRyaWV2ZS9jb25zdW1lIHRoZSBsb2dzIGdlbmVyYXRlZCBieSB1a2Vy bmVsLgo+Pj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgdG8gcmVjZWl2ZSBpbnRlcnJ1cHRzIGZy b20gR3VDIGJ1dCBjdXJyZW50bHkKPj4+IGVuYWJsZXMgJiBwYXJ0aWFsbHkgaGFuZGxlcyBvbmx5 IHRoZSBpbnRlcnJ1cHQgc2VudCBieSBHdUMgdWtlcm5lbC4KPj4+IEZ1dHVyZSBwYXRjaGVzIHdp bGwgYWRkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG90aGVyIGludGVycnVwdCB0eXBlcy4KPj4+Cj4+ PiB2MjoKPj4+IC0gVXNlIGNvbW1vbiBsb3cgbGV2ZWwgcm91dGluZXMgZm9yIFBNIElFUi9JSVIg cHJvZ3JhbW1pbmcgKENocmlzKQo+Pj4gLSBSZW5hbWUgaW50ZXJydXB0IGZ1bmN0aW9ucyB0byBn ZW45X3h4eCBmcm9tIGdlbjhfeHh4IChDaHJpcykKPj4+IC0gUmVwbGFjZSBkaXNhYmxpbmcgb2Yg d2FrZSByZWYgYXNzZXJ0cyB3aXRoIHJwbSBnZXQvcHV0IChDaHJpcykKPj4+Cj4+PiB2MzoKPj4+ IC0gVXBkYXRlIGNvbW1lbnRzIGZvciBtb3JlIGNsYXJpdHkuIChUdnJ0a28pCj4+PiAtIFJlbW92 ZSB0aGUgbWFza2luZyBvZiBHdUMgaW50ZXJydXB0LCB3aGljaCB3YXMga2VwdCBtYXNrZWQgdGls bCB0aGUKPj4+ICAgIHN0YXJ0IG9mIGJvdHRvbSBoYWxmLCBpdHMgbm90IHJlYWxseSBuZWVkZWQg YXMgdGhlcmUgaXMgb25seSBhCj4+PiAgICBzaW5nbGUgaW5zdGFuY2Ugb2Ygd29yayBpdGVtICYg d3EgaXMgb3JkZXJlZC4gKFR2cnRrbykKPj4+Cj4+PiB2NDoKPj4+IC0gUmViYXNlLgo+Pj4gLSBS ZW5hbWUgZ3VjX2V2ZW50cyB0byBwbV9ndWNfZXZlbnRzIHNvIGFzIHRvIGJlIGluZGljYXRpdmUg b2YgdGhlCj4+PiAgICByZWdpc3Rlci9jb250cm9sIGJsb2NrIGl0IGlzIGFzc29jaWF0ZWQgd2l0 aC4gKENocmlzKQo+Pj4gLSBBZGQgaGFuZGxpbmcgZm9yIGJhY2sgdG8gYmFjayBsb2cgYnVmZmVy IGZsdXNoIGludGVycnVwdHMuCj4+Pgo+Pj4gdjU6Cj4+PiAtIE1vdmUgdGhlIHJlYWQgJiBjbGVh cmluZyBvZiByZWdpc3RlciwgY29udGFpbmluZyBHdWMySG9zdCBtZXNzYWdlCj4+PiAgICBiaXRz LCBvdXRzaWRlIHRoZSBpcnEgc3BpbmxvY2suIChUdnJ0a28pCj4+Pgo+Pj4gU2lnbmVkLW9mZi1i eTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KPj4+IFNpZ25l ZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAgMSArCj4+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgNSArKwo+Pj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgfCAxMDAKPj4+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgICAgICAgICB8ICAxMSArKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAgMyArCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgNCArKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAgIDQgKysKPj4+ICAgNyBmaWxlcyBjaGFuZ2VkLCAx MjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+PiBpbmRleCBhNjA4YTVjLi4yOGZmYWM1IDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+Pj4gQEAgLTE3NzksNiArMTc3OSw3IEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKPj4+ICAgICAgIHUzMiBwbV9pbXI7Cj4+PiAgICAgICB1MzIgcG1faWVyOwo+Pj4g ICAgICAgdTMyIHBtX3Jwc19ldmVudHM7Cj4+PiArICAgIHUzMiBwbV9ndWNfZXZlbnRzOwo+Pj4g ICAgICAgdTMyIHBpcGVzdGF0X2lycV9tYXNrW0k5MTVfTUFYX1BJUEVTXTsKPj4+Cj4+PiAgICAg ICBzdHJ1Y3QgaTkxNV9ob3RwbHVnIGhvdHBsdWc7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+Pj4gaW5kZXggYWQzYjU1Zi4uYzdjNjc5ZiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+PiBA QCAtMTA3MSw2ICsxMDcxLDggQEAgaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4+PiAgICAgICBpZiAoZ3VjLT5ndWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVzICE9 IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQo+Pj4gICAgICAgICAgIHJldHVybiAwOwo+Pj4KPj4+ICsg ICAgZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPj4+ICsKPj4+ICAgICAg IGN0eCA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKPj4+Cj4+PiAgICAgICBkYXRhWzBdID0g SE9TVDJHVUNfQUNUSU9OX0VOVEVSX1NfU1RBVEU7Cj4+PiBAQCAtMTA5Nyw2ICsxMDk5LDkgQEAg aW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ICAgICAgIGlm IChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1Mp Cj4+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pgo+Pj4gKyAgICBpZiAoaTkxNS5ndWNfbG9nX2xl dmVsID49IDApCj4+PiArICAgICAgICBnZW45X2VuYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJp dik7Cj4+PiArCj4+PiAgICAgICBjdHggPSBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4+Pgo+ Pj4gICAgICAgZGF0YVswXSA9IEhPU1QyR1VDX0FDVElPTl9FWElUX1NfU1RBVEU7Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+PiBpbmRleCA1ZjkzMzA5Li41ZjE5NzRmIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+Pj4gQEAgLTE3MCw2ICsxNzAsNyBAQCBzdGF0aWMg dm9pZCBnZW41X2Fzc2VydF9paXJfaXNfemVybyhzdHJ1Y3QKPj4+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+Pj4gICB9IHdoaWxlICgwKQo+Pj4KPj4+ICAgc3RhdGljIHZvaWQgZ2VuNl9y cHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gdTMy IHBtX2lpcik7Cj4+PiArc3RhdGljIHZvaWQgZ2VuOV9ndWNfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gdTMyIHBtX2lpcik7Cj4+Pgo+Pj4gICAvKiBG b3IgZGlzcGxheSBob3RwbHVnIGludGVycnVwdCAqLwo+Pj4gICBzdGF0aWMgaW5saW5lIHZvaWQK Pj4+IEBAIC00MTEsNiArNDEyLDM4IEBAIHZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRz KHN0cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiAgICAgICBnZW42X3Jl c2V0X3Jwc19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPj4+ICAgfQo+Pj4KPj4+ICt2b2lkIGdlbjlf cmVzZXRfZ3VjX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ Pj4gK3sKPj4+ICsgICAgc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4+ICsg ICAgZ2VuNl9yZXNldF9wbV9paXIoZGV2X3ByaXYsIGRldl9wcml2LT5wbV9ndWNfZXZlbnRzKTsK Pj4+ICsgICAgc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+Pj4gK30KPj4+ ICsKPj4+ICt2b2lkIGdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4+ICt7Cj4+PiArICAgIHNwaW5fbG9ja19pcnEoJmRldl9wcml2 LT5pcnFfbG9jayk7Cj4+PiArICAgIGlmICghZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJs ZWQpIHsKPj4+ICsgICAgICAgIFdBUk5fT05fT05DRShJOTE1X1JFQUQoZ2VuNl9wbV9paXIoZGV2 X3ByaXYpKSAmCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBtX2d1Y19l dmVudHMpOwo+Pj4gKyAgICAgICAgZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJsZWQgPSB0 cnVlOwo+Pj4gKyAgICAgICAgZ2VuNl9lbmFibGVfcG1faXJxKGRldl9wcml2LCBkZXZfcHJpdi0+ cG1fZ3VjX2V2ZW50cyk7Cj4+PiArICAgIH0KPj4+ICsgICAgc3Bpbl91bmxvY2tfaXJxKCZkZXZf cHJpdi0+aXJxX2xvY2spOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGdlbjlfZGlzYWJsZV9ndWNf aW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiArewo+Pj4g KyAgICBzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+Pj4gKyAgICBkZXZfcHJp di0+Z3VjLmludGVycnVwdHNfZW5hYmxlZCA9IGZhbHNlOwo+Pj4gKwo+Pj4gKyAgICBnZW42X2Rp c2FibGVfcG1faXJxKGRldl9wcml2LCBkZXZfcHJpdi0+cG1fZ3VjX2V2ZW50cyk7Cj4+PiArCj4+ PiArICAgIHNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4+ICsgICAgc3lu Y2hyb25pemVfaXJxKGRldl9wcml2LT5kcm0uaXJxKTsKPj4+ICsKPj4+ICsgICAgZ2VuOV9yZXNl dF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4+PiArfQo+Pj4gKwo+Pj4gICAvKioKPj4+ICAg ICogYmR3X3VwZGF0ZV9wb3J0X2lycSAtIHVwZGF0ZSBERSBwb3J0IGludGVycnVwdAo+Pj4gICAg KiBAZGV2X3ByaXY6IGRyaXZlciBwcml2YXRlCj4+PiBAQCAtMTE2Nyw2ICsxMjAwLDIxIEBAIHN0 YXRpYyB2b2lkIGdlbjZfcG1fcnBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0Cj4+PiAqd29yaykK Pj4+ICAgICAgIG11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPj4+ICAgfQo+ Pj4KPj4+ICtzdGF0aWMgdm9pZCBnZW45X2d1YzJob3N0X2V2ZW50c193b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9Cj4+PiArICAgICAgICBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUsIGd1Yy5ldmVudHNfd29yayk7Cj4+PiArCj4+PiArICAgIHNwaW5fbG9ja19pcnEo JmRldl9wcml2LT5pcnFfbG9jayk7Cj4+PiArICAgIC8qIFNwZWVkIHVwIHdvcmsgY2FuY2VsbGF0 aW9uIGR1cmluZyBkaXNhYmxpbmcgZ3VjIGludGVycnVwdHMuICovCj4+PiArICAgIGlmICghZGV2 X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJsZWQpIHsKPj4+ICsgICAgICAgIHNwaW5fdW5sb2Nr X2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4+ICsgICAgICAgIHJldHVybjsKPj4KPj4gSSBz dXBwb3NlIGxvY2tpbmcgZm9yIGVhcmx5IGV4aXQgaXMgc29tZXRoaW5nIGFib3V0IGVuc3VyaW5n IHRoZSB3b3JrZXIKPj4gc2VlcyB0aGUgdXBkYXRlIHRvIGRldl9wcml2LT5ndWMuaW50ZXJydXB0 c19lbmFibGVkIGRvbmUgb24gYW5vdGhlciBDUFU/Cj4KPiBZZXMgbG9ja2luZyAocHJvdmlkaW5n IGltcGxpY2l0IGJhcnJpZXIpIHdpbGwgZW5zdXJlIHRoYXQgdXBkYXRlIG1hZGUKPiBmcm9tIGFu b3RoZXIgQ1BVIGlzIGltbWVkaWF0ZWx5IHZpc2libGUgdG8gdGhlIHdvcmtlci4KCldoYXQgaWYg dGhlIGRpc2FibGUgaGFwcGVucyBhZnRlciB0aGUgdW5sb2NrIGFib3ZlPyBJdCB3b3VsZCB3YWl0 IGluIApkaXNhYmxlIHVudGlsIHRoZSBpcnEgaGFuZGxlciBleGl0cy4gU28gdGhlIHNhbWUgYXMg aWYgbm90IGJvdGhlcmluZyAKd2l0aCB0aGUgc3BpbmxvY2sgYWJvdmUsIG5vPwoKPj4gc3luY2hy b25pemVfaXJxIHRoZXJlIGlzIG5vdCBlbm91Z2ggZm9yIHNvbWUgcmVhc29uPwo+Pgo+IHN5bmNo cm9uaXplX2lycSB3b3VsZCBub3QgYmUgZW5vdWdoLCBpdHMgZm9yIGEgZGlmZmVyZW50IHB1cnBv c2UsIHRvCj4gZW5zdXJlIHRoYXQgYW55IG9uZ29pbmcgaGFuZGxpbmcgb2YgaXJxIGNvbXBsZXRl cyAoYWZ0ZXIgdGhlIGNhbGxlciBoYXMKPiBkaXNhYmxlZCB0aGUgaXJxKS4KPgo+IEFzIHBlciBt eSB1bmRlcnN0YW5kaW5nIHN5bmNocm9uaXplX2lycSB3b24ndCBoYXZlIGFuIGVmZmVjdCBvbiB0 aGUKPiB3b3JrZXIsIHdpdGggcmVzcGVjdCB0byB0aGUgbW9tZW50IHdoZW4gdGhlIHVwZGF0ZSBv Zgo+ICdpbnRlcnJ1cHRzX2VuYWJsZWQnIGZsYWcgaXMgdmlzaWJsZSB0byB0aGUgd29ya2VyLgo+ Cj4+PiArICAgIH0KPj4+ICsgICAgc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2sp Owo+Pj4gKwo+Pj4gKyAgICAvKiBUT0RPOiBIYW5kbGUgdGhlIGV2ZW50cyBmb3Igd2hpY2ggR3VD IGludGVycnVwdGVkIGhvc3QgKi8KPj4+ICt9Cj4+Pgo+Pj4gICAvKioKPj4+ICAgICogaXZ5YnJp ZGdlX3Bhcml0eV93b3JrIC0gV29ya3F1ZXVlIGNhbGxlZCB3aGVuIGEgcGFyaXR5IGVycm9yCj4+ PiBpbnRlcnJ1cHQKPj4+IEBAIC0xMzM5LDExICsxMzg3LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5f dCBnZW44X2d0X2lycV9hY2soc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK Pj4+ICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJUaGUgbWFzdGVyIGNvbnRyb2wgaW50ZXJydXB0 IGxpZWQgKEdUMykhXG4iKTsKPj4+ICAgICAgIH0KPj4+Cj4+PiAtICAgIGlmIChtYXN0ZXJfY3Rs ICYgR0VOOF9HVF9QTV9JUlEpIHsKPj4+ICsgICAgaWYgKG1hc3Rlcl9jdGwgJiAoR0VOOF9HVF9Q TV9JUlEgfCBHRU44X0dUX0dVQ19JUlEpKSB7Cj4+PiAgICAgICAgICAgZ3RfaWlyWzJdID0gSTkx NV9SRUFEX0ZXKEdFTjhfR1RfSUlSKDIpKTsKPj4+IC0gICAgICAgIGlmIChndF9paXJbMl0gJiBk ZXZfcHJpdi0+cG1fcnBzX2V2ZW50cykgewo+Pj4gKyAgICAgICAgaWYgKGd0X2lpclsyXSAmIChk ZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyB8Cj4+PiArICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+ cG1fZ3VjX2V2ZW50cykpIHsKPj4+ICAgICAgICAgICAgICAgSTkxNV9XUklURV9GVyhHRU44X0dU X0lJUigyKSwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgZ3RfaWlyWzJdICYgZGV2X3ByaXYt PnBtX3Jwc19ldmVudHMpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICBndF9paXJbMl0gJiAo ZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMgfAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGRldl9wcml2LT5wbV9ndWNfZXZlbnRzKSk7Cj4+PiAgICAgICAgICAgICAgIHJldCA9IElSUV9I QU5ETEVEOwo+Pj4gICAgICAgICAgIH0gZWxzZQo+Pj4gICAgICAgICAgICAgICBEUk1fRVJST1Io IlRoZSBtYXN0ZXIgY29udHJvbCBpbnRlcnJ1cHQgbGllZCAoUE0pIVxuIik7Cj4+PiBAQCAtMTM3 NSw2ICsxNDI1LDkgQEAgc3RhdGljIHZvaWQgZ2VuOF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QKPj4+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4KPj4+ICAgICAgIGlmIChndF9paXJbMl0g JiBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cykKPj4+ICAgICAgICAgICBnZW42X3Jwc19pcnFfaGFu ZGxlcihkZXZfcHJpdiwgZ3RfaWlyWzJdKTsKPj4+ICsKPj4+ICsgICAgaWYgKGd0X2lpclsyXSAm IGRldl9wcml2LT5wbV9ndWNfZXZlbnRzKQo+Pj4gKyAgICAgICAgZ2VuOV9ndWNfaXJxX2hhbmRs ZXIoZGV2X3ByaXYsIGd0X2lpclsyXSk7Cj4+PiAgIH0KPj4+Cj4+PiAgIHN0YXRpYyBib29sIGJ4 dF9wb3J0X2hvdHBsdWdfbG9uZ19kZXRlY3QoZW51bSBwb3J0IHBvcnQsIHUzMiB2YWwpCj4+PiBA QCAtMTYyMSw2ICsxNjc0LDQxIEBAIHN0YXRpYyB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0 cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9paXIpCj4+PiAgICAg ICB9Cj4+PiAgIH0KPj4+Cj4+PiArc3RhdGljIHZvaWQgZ2VuOV9ndWNfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gdTMyIGd0X2lpcikKPj4+ICt7Cj4+ PiArICAgIGJvb2wgaW50ZXJydXB0c19lbmFibGVkOwo+Pj4gKwo+Pj4gKyAgICBpZiAoZ3RfaWly ICYgR0VOOV9HVUNfVE9fSE9TVF9JTlRfRVZFTlQpIHsKPj4+ICsgICAgICAgIHNwaW5fbG9jaygm ZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4+ICsgICAgICAgIGludGVycnVwdHNfZW5hYmxlZCA9IGRl dl9wcml2LT5ndWMuaW50ZXJydXB0c19lbmFibGVkOwo+Pj4gKyAgICAgICAgc3Bpbl91bmxvY2so JmRldl9wcml2LT5pcnFfbG9jayk7Cj4+Cj4+IE5vdCBzdXJlIHRoYXQgdGFraW5nIGEgbG9jayBh cm91bmQgb25seSB0aGlzIHJlYWQgaXMgbmVlZGVkLgo+Pgo+IEFnYWluIHNhbWUgcmVhc29uIGFz IGFib3ZlLCB0byBtYWtlIHN1cmUgYW4gdXBkYXRlIG1hZGUgb24gYW5vdGhlciBDUFUKPiBpcyBp bW1lZGlhdGVseSB2aXNpYmxlIHRvIHRoZSBpcnEgaGFuZGxlci4KCkkgZG9uJ3QgZ2V0IGl0LCBz ZWUgYWJvdmUuIDopCgo+Pj4gKyAgICAgICAgaWYgKGludGVycnVwdHNfZW5hYmxlZCkgewo+Pj4g KyAgICAgICAgICAgIC8qIFNhbXBsZSB0aGUgbG9nIGJ1ZmZlciBmbHVzaCByZWxhdGVkIGJpdHMg JiBjbGVhciB0aGVtCj4+PiArICAgICAgICAgICAgICogb3V0IG5vdyBpdHNlbGYgZnJvbSB0aGUg bWVzc2FnZSBpZGVudGl0eSByZWdpc3RlciB0bwo+Pj4gKyAgICAgICAgICAgICAqIG1pbmltaXpl IHRoZSBwcm9iYWJpbGl0eSBvZiBsb3NpbmcgYSBmbHVzaCBpbnRlcnJ1cHQsCj4+PiArICAgICAg ICAgICAgICogd2hlbiB0aGVyZSBhcmUgYmFjayB0byBiYWNrIGZsdXNoIGludGVycnVwdHMuCj4+ PiArICAgICAgICAgICAgICogVGhlcmUgY2FuIGJlIGEgbmV3IGZsdXNoIGludGVycnVwdCwgZm9y IGRpZmZlcmVudCBsb2cKPj4+ICsgICAgICAgICAgICAgKiBidWZmZXIgdHlwZSAobGlrZSBmb3Ig SVNSKSwgd2hpbHN0IEhvc3QgaXMgaGFuZGxpbmcKPj4+ICsgICAgICAgICAgICAgKiBvbmUgKGZv ciBEUEMpLiBTaW5jZSBzYW1lIGJpdCBpcyB1c2VkIGluIG1lc3NhZ2UKPj4+ICsgICAgICAgICAg ICAgKiByZWdpc3RlciBmb3IgSVNSICYgRFBDLCBpdCBjb3VsZCBoYXBwZW4gdGhhdCBHdUMKPj4+ ICsgICAgICAgICAgICAgKiBzZXRzIHRoZSBiaXQgZm9yIDJuZCBpbnRlcnJ1cHQgYnV0IEhvc3Qg Y2xlYXJzIG91dAo+Pj4gKyAgICAgICAgICAgICAqIHRoZSBiaXQgb24gaGFuZGxpbmcgdGhlIDFz dCBpbnRlcnJ1cHQuCj4+PiArICAgICAgICAgICAgICovCj4+PiArICAgICAgICAgICAgdTMyIG1z ZyA9IEk5MTVfUkVBRChTT0ZUX1NDUkFUQ0goMTUpKSAmCj4+PiArICAgICAgICAgICAgICAgICAg ICAoR1VDMkhPU1RfTVNHX0NSQVNIX0RVTVBfUE9TVEVEIHwKPj4+ICsgICAgICAgICAgICAgICAg ICAgICBHVUMySE9TVF9NU0dfRkxVU0hfTE9HX0JVRkZFUik7Cj4+PiArICAgICAgICAgICAgaWYg KG1zZykgewo+Pj4gKyAgICAgICAgICAgICAgICAvKiBDbGVhciB0aGUgbWVzc2FnZSBiaXRzIHRo YXQgYXJlIGhhbmRsZWQgKi8KPj4+ICsgICAgICAgICAgICAgICAgSTkxNV9XUklURShTT0ZUX1ND UkFUQ0goMTUpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgSTkxNV9SRUFEKFNPRlRfU0NSQVRD SCgxNSkpICYgfm1zZyk7Cj4+Cj4+IENhY2hlIGZ1bGwgdmFsdWUgb2YgU09GVF9TQ1JBVENIKDE1 KSBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBtbWlvIHJlYWQgaXQKPj4gdHdpY2U/Cj4+Cj4gVGhvdWdo dCByZWFkaW5nIGl0IGFnYWluIChqdXN0IGJlZm9yZSB0aGUgdXBkYXRlKSBpcyBiaXQgc2FmZXIg Y29tcGFyZWQKPiB0byByZWFkaW5nIGl0IG9uY2UsIGFzIHRoZXJlIGlzIGEgcG90ZW50aWFsIHJh Y2UgcHJvYmxlbSBoZXJlLgo+IEd1QyBjb3VsZCBhbHNvIHdyaXRlIHRvIHRoZSBTT0ZUX1NDUkFU Q0goMTUpIHJlZ2lzdGVyLCBzZXQgbmV3IGV2ZW50cwo+IGJpdCwgd2hpbGUgSG9zdCBjbGVhcnMg b2ZmIHRoZSBiaXQgb2YgaGFuZGxlZCBldmVudHMuCgpEb24ndCBnZXQgaXQuIElmIHRoZXJlIGlz IGEgcmFjZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIHRoZXJlIHN0aWxsIGlzLCAKZG9uJ3Qgc2Vl IGhvdyBhIHNlY29uZCByZWFkIG1ha2VzIGl0IHNhZmVyLgoKPj4gQWxzbywgaXMgdGhlIFJNVyBv dXRzaWRlIGFueSBsb2NrcyBzYWZlPwo+Pgo+Cj4gSWRlYWxseSBuZWVkIGEgd2F5IHRvIGF0b21p Y2FsbHkgZG8gdGhlIFJNVywgaS5lLiByZWFkIHRoZSByZWdpc3Rlcgo+IHZhbHVlLCBjbGVhciBv ZmYgdGhlIGhhbmRsZWQgZXZlbnRzIGJpdCBhbmQgdXBkYXRlIHRoZSByZWdpc3RlciB3aXRoIHRo ZQo+IG1vZGlmaWVkIHZhbHVlLgo+Cj4gUGxlYXNlIGtpbmRseSBzdWdnZXN0IGhvdyB0byBhZGRy ZXNzIHRoZSBhYm92ZS4KPiBPciBjYW4gdGhpcyBiZSBsZWZ0IGFzIGEgVE9ETywgd2hlbiB3ZSBk byBzdGFydCBoYW5kbGluZyBvdGhlciBldmVudHMgYWxzby4KCiBGcm9tIHRoZSBjb21tZW50IGlu IGNvZGUgYWJvdmUgaXQgc291bmRzIGxpa2UgYSBHdUMgZncgaW50ZXJmYWNlIApzaG9ydGNvbWlu ZyAtIHRoYXQgdGhlcmUgaXMgYSBzaW5nbGUgYml0IGZvciB0d28gZGlmZmVyZW50IGludGVycnVw dCAKc291cmNlcywgaXMgdGhhdCByaWdodD8gSXMgdGhlcmUgYW55IG90aGVyIHJlZ2lzdGVyIG9y IHNvbWV0aGluZyB0aGF0IAp5b3UgY2FuIHJlYWQgdG8gZGV0ZWN0IHRoYXQgdGhlIGludGVycnVw dCBoYXMgYmVlbiByZS1hc3NlcnRlZCB3aGlsZSBpbiAKdGhlIGlycSBoYW5kbGVyPyBBbHRob3Vn aCBJIHRob3VnaHQgeW91IHNhaWQgYmVmb3JlIHRoYXQgdGhlIEd1QyB3aWxsIApub3QgZG8gdGhh dCAtIHRoYXQgaXQgd29uJ3QgcmUtYXNzZXJ0IHRoZSBpbnRlcnJ1cHQgYmVmb3JlIHdlIHNlbmQg dGhlIApmbHVzaCBjb21tYW5kLgoKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgLyogSGFuZGxl IGZsdXNoIGludGVycnVwdCBldmVudCBpbiBib3R0b20gaGFsZiAqLwo+Pj4gKyAgICAgICAgICAg ICAgICBxdWV1ZV93b3JrKGRldl9wcml2LT53cSwgJmRldl9wcml2LT5ndWMuZXZlbnRzX3dvcmsp Owo+Pgo+PiBJTUhPIGl0IHdvdWxkIGJlIG5pY2VyIGlmIHRoZSBjb2RlIHN0YXJ0ZWQgc3RyYWln aHQgYXdheSB3aXRoIGEgZmluYWwgd3EKPj4gc29sdXRpb24uCj4+Cj4+IEVzcGVjaWFsbHkgc2lu Y2UgdGhlIG5leHQgcGF0Y2ggaW4gdGhlIHNlcmllcyBpcyBjYWxsZWQgIkhhbmRsZSBsb2cKPj4g YnVmZmVyIGZsdXNoIGludGVycnVwdCBldmVudCBmcm9tIEd1QyIgYW5kIHRoZSBhY3R1YWwgaGFu ZGxpbmcgb2YgdGhlCj4+IGxvZyBidWZmZXIgZmx1c2ggaW50ZXJydXB0IGlzIHNwbGl0IGJldHdl ZW4gdGhpcyBvbmUKPj4gKEdVQzJIT1NUX01TR19GTFVTSF9MT0dfQlVGRkVSIGFib3ZlKSBhbmQg dGhhdCBvbmUuCj4+Cj4+IFNvIGl0IHdvdWxkIGFsbW9zdCBiZSBuaWNlciB0aGF0IHRoZSBhYm92 ZSBjaHVuayB3aGljaCBoYW5kbGVzCj4+IEdVQzJIT1NUX01TR19GTFVTSF9MT0dfQlVGRkVSIGFu ZCB0aGUgd29ya2VyIGluaXQgaXMgb25seSBhZGRlZCBpbiB0aGUKPj4gbmV4dCBwYXRjaCBhbmQg dGhpcyBvbmUgb25seSBkb2VzIHRoZSBnZW5lcmljIGJpdHMuCj4+Cj4KPiBGaW5lIHdpbGwgbW92 ZSB0aGUgbG9nIGJ1ZmZlciBmbHVzaCBpbnRlcnJ1cHQgZXZlbnQgcmVsYXRlZCBzdHVmZiB0byB0 aGUKPiBuZXh0IHBhdGNoIGFuZCBzbyBpcnEgaGFuZGxlciBpbiB0aGlzIHBhdGNoIHdpbGwganVz dCBiZSBhCj4gcGxhY2Vob2xkZXIuCgpHcmVhdCB0aGFua3MhCgo+PiBJIGRvbid0IGtub3cuLiBJ J2xsIGxlYXZlIGl0IG9uIHlvdXIgY29uc2NpZW5jZSAtIGlmIHlvdSB0aGluayB0aGUgc3BsaXQK Pj4gKHNlcmllcykgY2FuJ3QgYmUgZG9uZSBhbnkgbmljZXIgb3IgaXQgbWFrZXMgc2Vuc2UgdG8g aGF2ZSBpdCBpbiB0aGlzCj4+IG9yZGVyIHRoZW4gb2suCj4+Cj4+PiArICAgICAgICAgICAgfQo+ Pgo+PiBNYWJ5ZToKPj4KPj4gICAgIH0gZWxzZQo+Pgo+PiBBbmQgbG9nIHNvbWV0aGluZyB1bmV4 cGVjdGVkIGhhcyBoYXBwZW5lZCBpbiB0aGUgIW1zZyBjYXNlPwo+Pgo+PiBTaW5jZSBpdCB3b24n dCBjbGVhciB0aGUgbWVzc2FnZSBpbiB0aGF0IGNhc2Ugc28gd291bGQgaXQga2VlcAo+PiB0cmln Z2VyaW5nPwo+Pgo+Cj4gQWN0dWFsbHkgYWZ0ZXIgZW5hYmxpbmcgb2YgR3VDIGludGVycnVwdCwg dGhlcmUgY2FuIGJlIGludGVycnVwdHMgZnJvbQo+IEd1QyBzaWRlIGZvciBzb21lIG90aGVyIGV2 ZW50cyB3aGljaCBhcmUgcmlnaHQgbm93IG5vdCBoYW5kbGVkIGJ5IEhvc3QuCj4KPiBCdXQgbm90 IGNsZWFyaW5nIG9mIHVuaGFuZGxlZCBldmVudCBiaXRzIHdvbid0IHJlc3VsdCBpbiByZS10cmln Z2VyaW5nCj4gb2YgdGhlIGludGVycnVwdC4KCk9rIEkgc3VnZ2VzdCBkb2N1bWVudGluZyB0aGF0 IGFzIGEgY29tbWVudCBpbiBjb2RlIHRoZW4uCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=