From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH REBASED v10 1/6] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Thu, 11 Aug 2016 11:22:13 +0200 Message-ID: References: <1470839281-19639-1-git-send-email-cpaul@redhat.com> <1470839281-19639-9-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1470839281-19639-9-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude , intel-gfx@lists.freedesktop.org, =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Matt Roper Cc: Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTAtMDgtMTYgb20gMTY6Mjcgc2NocmVlZiBMeXVkZToKPiBTaW5jZSB0aGUgd2F0ZXJtYXJr IGNhbGN1bGF0aW9ucyBmb3IgU2t5bGFrZSBhcmUgc3RpbGwgYnJva2VuLCB3ZSdyZSBhcHQKPiB0 byBoaXR0aW5nIHVuZGVycnVucyB2ZXJ5IGVhc2lseSB1bmRlciBtdWx0aS1tb25pdG9yIGNvbmZp Z3VyYXRpb25zLgo+IFdoaWxlIGl0IHdvdWxkIGJlIGxvdmVseSBpZiB0aGlzIHdhcyBmaXhlZCwg aXQncyBub3QuIEFub3RoZXIgcHJvYmxlbQo+IHRoYXQncyBiZWVuIGNvbWluZyBmcm9tIHRoaXMg aG93ZXZlciwgaXMgdGhlIG15c3RlcmlvdXMgaXNzdWUgb2YKPiB1bmRlcnJ1bnMgY2F1c2luZyBm dWxsIHN5c3RlbSBoYW5ncy4gQW4gZWFzeSB3YXkgdG8gcmVwcm9kdWNlIHRoaXMgd2l0aAo+IGEg c2t5bGFrZSBzeXN0ZW06Cj4KPiAtIEdldCBhIGxhcHRvcCB3aXRoIGEgc2t5bGFrZSBHUFUsIGFu ZCBob29rIHVwIHR3byBleHRlcm5hbCBtb25pdG9ycyB0bwo+ICAgaXQKPiAtIE1vdmUgdGhlIGN1 cnNvciBmcm9tIHRoZSBidWlsdC1pbiBMQ0QgdG8gb25lIG9mIHRoZSBleHRlcm5hbCBkaXNwbGF5 cwo+ICAgYXMgcXVpY2tseSBhcyB5b3UgY2FuCj4gLSBZb3UnbGwgZ2V0IGEgZmV3IHBpcGUgdW5k ZXJydW5zLCBhbmQgZXZlbnR1YWxseSB0aGUgZW50aXJlIHN5c3RlbSB3aWxsCj4gICBqdXN0IGZy ZWV6ZS4KPgo+IEFmdGVyIGRvaW5nIGEgbG90IG9mIGludmVzdGlnYXRpb24gYW5kIHJlYWRpbmcg dGhyb3VnaCB0aGUgYnNwZWMsIEkKPiBmb3VuZCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBTQUdWLCB3 aGljaCBpcyByZXNwb25zaWJsZSBmb3IgYWRqdXN0aW5nIHRoZQo+IHN5c3RlbSBhZ2VudCB2b2x0 YWdlIGFuZCBjbG9jayBmcmVxdWVuY2llcyBkZXBlbmRpbmcgb24gaG93IG11Y2ggcG93ZXIKPiB3 ZSBuZWVkLiBBY2NvcmRpbmcgdG8gdGhlIGJzcGVjOgo+Cj4gIlRoZSBkaXNwbGF5IGVuZ2luZSBh Y2Nlc3MgdG8gc3lzdGVtIG1lbW9yeSBpcyBibG9ja2VkIGR1cmluZyB0aGUKPiAgYWRqdXN0bWVu dCB0aW1lLiBTQUdWIGRlZmF1bHRzIHRvIGVuYWJsZWQuIFNvZnR3YXJlIG11c3QgdXNlIHRoZQo+ ICBHVC1kcml2ZXIgcGNvZGUgbWFpbGJveCB0byBkaXNhYmxlIFNBR1Ygd2hlbiB0aGUgZGlzcGxh eSBlbmdpbmUgaXMgbm90Cj4gIGFibGUgdG8gdG9sZXJhdGUgdGhlIGJsb2NraW5nIHRpbWUuIgo+ Cj4gVGhlIHJlc3Qgb2YgdGhlIGJzcGVjIGdvZXMgb24gdG8gZXhwbGFpbiB0aGF0IHNvZnR3YXJl IGNhbiBzaW1wbHkgbGVhdmUKPiB0aGUgU0FHViBlbmFibGVkLCBhbmQgZGlzYWJsZSBpdCB3aGVu IHdlIHVzZSBpbnRlcmxhY2VkIHBpcGVzL2hhdmUgbW9yZQo+IHRoZW4gb25lIHBpcGUgYWN0aXZl Lgo+Cj4gU3VyZSBlbm91Z2gsIHdpdGggdGhpcyBwYXRjaHNldCB0aGUgc3lzdGVtIGhhbmdzIHJl c3VsdGluZyBmcm9tIHBpcGUKPiB1bmRlcnJ1bnMgb24gU2t5bGFrZSBoYXZlIGNvbXBsZXRlbHkg dmFuaXNoZWQgb24gbXkgVDQ2MHMuIEFkZGl0aW9uYWxseSwKPiB0aGUgYnNwZWMgbWVudGlvbnMg dHVybmluZyBvZmYgdGhlIFNBR1YJd2l0aCBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAo+IGFz IGEgd29ya2Fyb3VuZCBmb3IgZGlzcGxheSB1bmRlcnJ1bnMuIFdoaWxlIHRoaXMgcGF0Y2ggZG9l c24ndCBlbnRpcmVseQo+IGZpeCB0aGF0LCBpdCBsb29rcyBsaWtlIGl0IGRvZXMgaW1wcm92ZSB0 aGUgc2l0dWF0aW9uIGEgbGl0dGxlIGJpdCBzbwo+IGl0J3MgbGlrZWx5IHRoaXMgaXMgZ29pbmcg dG8gYmUgcmVxdWlyZWQgdG8gbWFrZSB3YXRlcm1hcmtzIG9uIFNreWxha2UKPiBmdWxseSBmdW5j dGlvbmFsLgo+Cj4gQ2hhbmdlcyBzaW5jZSB2OToKPiAgLSBPbmx5IGVuYWJsZS9kaXNhYmxlIHNh Z3Ygb24gU2t5bGFrZQo+IENoYW5nZXMgc2luY2Ugdjg6Cj4gIC0gQWRkIGludGVsX3N0YXRlLT5t b2Rlc2V0IGd1YXJkIHRvIHRoZSBjb25kaXRpb25hbCBmb3IKPiAgICBza2xfZW5hYmxlX3NhZ3Yo KQo+IENoYW5nZXMgc2luY2Ugdjc6Cj4gIC0gUmVtb3ZlIEdFTjlfU0FHVl9MT1dfRlJFUSwgcmVw bGFjZSB3aXRoIEdFTjlfU0FHVl9JU19FTkFCTEVEICh0aGF0J3MKPiAgICBhbGwgd2UgdXNlIGl0 IGZvciBhbnl3YXkpCj4gIC0gVXNlIEdFTjlfU0FHVl9JU19FTkFCTEVEIGluc3RlYWQgb2YgMHgx IGZvciBjbGFyaWZpY2F0aW9uCj4gIC0gRml4IGEgc3R5bGluZyBlcnJvciB0aGF0IHNudWNrIHBh c3QgbWUKPiBDaGFuZ2VzIHNpbmNlIHY2Ogo+ICAtIFByb3RlY3Qgc2tsX2VuYWJsZV9zYWd2KCkg d2l0aCBpbnRlbF9zdGF0ZS0+bW9kZXNldCBjb25kaXRpb25hbCBpbgo+ICAgIGludGVsX2F0b21p Y19jb21taXRfdGFpbCgpCj4gQ2hhbmdlcyBzaW5jZSB2NToKPiAgLSBEb24ndCB1c2UgaXNfcG93 ZXJfb2ZfMi4gTWFrZXMgdGhpbmdzIGNvbmZ1c2luZwo+ICAtIERvbid0IHVzZSB0aGUgb2xkIHN0 YXRlIHRvIGZpZ3VyZSBvdXQgd2hldGhlciBvciBub3QgdG8KPiAgICBlbmFibGUvZGlzYWJsZSB0 aGUgc2FndiwgdXNlIHRoZSBuZXcgb25lCj4gIC0gU3BsaXQgdGhlIGxvb3AgaW4gc2tsX2Rpc2Fi bGVfc2FndiBpbnRvIGl0J3Mgb3duIGZ1bmN0aW9uCj4gIC0gTW92ZSBza2xfc2Fndl9lbmFibGUv ZGlzYWJsZSgpIGNhbGxzIGludG8gaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKCkKPiBDaGFuZ2Vz IHNpbmNlIHY0Ogo+ICAtIFVzZSBpc19wb3dlcl9vZl8yIGFnYWluc3QgYWN0aXZlX2NydGNzIHRv IGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSA+IDEKPiAgICBwaXBlIGVuYWJsZWQKPiAgLSBGaXggc2ts X3NhZ3ZfZ2V0X2h3X3N0YXRlKCk6ICh0ZW1wICYgMHgxKSBpbmRpY2F0ZXMgZGlzYWJsZWQsIDB4 MAo+ICAgIGVuYWJsZWQKPiAgLSBDYWxsIHNrbF9zYWd2X2VuYWJsZS9kaXNhYmxlKCkgZnJvbSBw cmUvcG9zdC1wbGFuZSB1cGRhdGVzCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiAgLSBVc2UgdGltZV9i ZWZvcmUoKSB0byBjb21wYXJlIHRpbWVvdXQgdG8gamlmZmllcwo+IENoYW5nZXMgc2luY2UgdjI6 Cj4gIC0gUmVhbGx5IGFwcGx5IG1pbm9yIHN0eWxlIG5pdHBpY2tzIHRvIHBhdGNoIHRoaXMgdGlt ZQo+IENoYW5nZXMgc2luY2UgdjE6Cj4gIC0gQWRkZWQgY29tbWVudHMgYWJvdXQgdGhpcyBwcm9i YWJseSBiZWluZyBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyB0bwo+ICAgIGZpeGluZyBTa3lsYWtl J3Mgd2F0ZXJtYXJrIGlzc3Vlcwo+ICAtIE1pbm9yIHN0eWxlIG5pdHBpY2tzIGZyb20gTWF0dCBS b3Blcgo+ICAtIERpc2FibGUgdGhlc2UgZnVuY3Rpb25zIG9uIEJyb3h0b24sIHNpbmNlIGl0IGRv ZXNuJ3QgaGF2ZSBhbiBTQUdWCj4KPiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5k LnJvcGVyQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8Y3Bh dWxAcmVkaGF0LmNvbT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K PiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+Cj4gc3F1YXNoISBkcm0vaTkxNS9za2w6IEFk ZCBzdXBwb3J0IGZvciB0aGUgU0FHViwgZml4IHVuZGVycnVuIGhhbmdzCj4KPiBzcXVhc2ghIGRy bS9pOTE1L3NrbDogQWRkIHN1cHBvcnQgZm9yIHRoZSBTQUdWLCBmaXggdW5kZXJydW4gaGFuZ3MK Pgo+IFNpZ25lZC1vZmYtYnk6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgIDQgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgIDEyICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAg IHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hh bmdlZCwgMTMyIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IDdmMjc1NGEuLmZhM2M5ZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTk0 NCw2ICsxOTQ0LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJc3RydWN0IGk5MTVf c3VzcGVuZF9zYXZlZF9yZWdpc3RlcnMgcmVnZmlsZTsKPiAgCXN0cnVjdCB2bHZfczBpeF9zdGF0 ZSB2bHZfczBpeF9zdGF0ZTsKPiAgCj4gKwlib29sIHNrbF9zYWd2X2VuYWJsZWQ7Cj4gKwo+ICAJ c3RydWN0IHsKPiAgCQkvKgo+ICAJCSAqIFJhdyB3YXRlcm1hcmsgbGF0ZW5jeSB2YWx1ZXM6Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZGE4Mjc0NC4uNmMzOTQ3ZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03MTQzLDYgKzcxNDMsMTAgQEAgZW51bSB7Cj4gICNk ZWZpbmUgICBIU1dfUENPREVfREVfV1JJVEVfRlJFUV9SRVEJCTB4MTcKPiAgI2RlZmluZSAgIERJ U1BMQVlfSVBTX0NPTlRST0wJCQkweDE5Cj4gICNkZWZpbmUJICBIU1dfUENPREVfRFlOQU1JQ19E VVRZX0NZQ0xFX0NPTlRST0wJMHgxQQo+ICsjZGVmaW5lICAgR0VOOV9QQ09ERV9TQUdWX0NPTlRS T0wJCTB4MjEKPiArI2RlZmluZSAgICAgR0VOOV9TQUdWX0RJU0FCTEUJCQkweDAKPiArI2RlZmlu ZSAgICAgR0VOOV9TQUdWX0lTX0RJU0FCTEVECQkweDEKPiArI2RlZmluZSAgICAgR0VOOV9TQUdW X0RZTkFNSUNfRlJFUSAgICAgICAgICAgICAgMHgzCj4gICNkZWZpbmUgR0VONl9QQ09ERV9EQVRB CQkJCV9NTUlPKDB4MTM4MTI4KQo+ICAjZGVmaW5lICAgR0VONl9QQ09ERV9GUkVRX0lBX1JBVElP X1NISUZUCTgKPiAgI2RlZmluZSAgIEdFTjZfUENPREVfRlJFUV9SSU5HX1JBVElPX1NISUZUCTE2 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDBhZTI3MDcuLjMwMmNi MWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEzNzY5LDYg KzEzNzY5LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJICAgICBpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxs X3ZjbyAhPSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbykpCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5 Lm1vZGVzZXRfY29tbWl0X2NkY2xrKHN0YXRlKTsKPiAgCj4gKwkJLyoKPiArCQkgKiBTS0wgd29y a2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIHRoZSBTQUdWIHdoZW4gd2UKPiAr CQkgKiBoYXZlIG1vcmUgdGhlbiBvbmUgcGlwZSBlbmFibGVkCj4gKwkJICovCj4gKwkJaWYgKElT X1NLWUxBS0UoZGV2X3ByaXYpICYmCj4gKwkJICAgIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0 aXZlX2NydGNzKSA+IDEpCj4gKwkJCXNrbF9kaXNhYmxlX3NhZ3YoZGV2X3ByaXYpOwo+ICsKPiAg CQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9kaXNhYmxlZChkZXYpOwo+ICAJfQo+ICAKPiBAQCAtMTM4 NDIsNiArMTM4NTAsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9j cnRjKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBjcnRjLT5zdGF0ZSk7Cj4gIAl9Cj4gIAo+ICsJaWYg KElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIGludGVsX3N0YXRlLT5tb2Rlc2V0ICYmCj4gKwkgICAg aHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpIDw9IDEpCj4gKwkJc2tsX2VuYWJs ZV9zYWd2KGRldl9wcml2KTsKPiArCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9u ZShzdGF0ZSk7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gaW5kZXggY2JjZTc4Ni4uZTM1Nzk5ZCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gQEAgLTE2OTgsNiArMTY5OCw4IEBAIHZvaWQgaWxrX3dtX2dldF9od19z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIHNrbF9kZGJfZ2V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKPiAraW50IHNrbF9lbmFibGVfc2FndihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICtpbnQgc2tsX2Rpc2FibGVfc2FndihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB1aW50MzJfdCBpbGtfcGlwZV9waXhl bF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gIGJv b2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGludCBzYW5p dGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGVu YWJsZV9yYzYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDgxYWIxMTkuLmU5MGI5 NzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjg4NCw2ICsyODg0LDExNiBA QCBza2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQKPiArc2tsX3NhZ3ZfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJdTMyIHRlbXA7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2Rl X3JlYWQoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLCAmdGVtcCk7Cj4gKwltdXRl eF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CllvdSBuZWVkIHRvIGluaXRpYWxpemUg dGVtcCBiZWZvcmUgY2FsbGluZyBzYW5keWJyaWRnZV9wY29kZV9yZWFkLCBpdCdzIGNvbmZ1c2lu ZyBidXQgdGhlIGZ1bmN0aW9uJ3MgcmVhbGx5IHBjb2RlX3dyaXRlcmVhZC4KCkl0IGFsc28gbWVh bnMgeW91IHByb2JhYmx5IGNhbid0IHJlYWQgb3V0IFNBR1Ygd2l0aG91dCBhZGp1c3RpbmcgaXQn cyB2YWx1ZS4gOigKCk1heWJlIHNldCBzYWd2IGluaXRpYWxseSBiYXNlZCBvbiBob3cgbWFueSBj cnRjJ3MgYXJlIGFjdGl2ZSBhZnRlciBodyByZWFkb3V0PwoKPiArCWlmICghcmV0KSB7Cj4gKwkJ ZGV2X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQgPSAhKHRlbXAgJiBHRU45X1NBR1ZfSVNfRElTQUJM RUQpOwo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIElmIGZvciBzb21lIHJlYXNvbiB3ZSBj YW4ndCBhY2Nlc3MgdGhlIFNBR1Ygc3RhdGUsIGZvbGxvdwo+ICsJCSAqIHRoZSBic3BlYyBhbmQg YXNzdW1lIGl0J3MgZW5hYmxlZAo+ICsJCSAqLwo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGdl dCBTQUdWIHN0YXRlLCBhc3N1bWluZyBlbmFibGVkXG4iKTsKPiArCQlkZXZfcHJpdi0+c2tsX3Nh Z3ZfZW5hYmxlZCA9IHRydWU7Cj4gKwl9Cj4gK30KPiArCj4gKy8qCj4gKyAqIFNBR1YgZHluYW1p Y2FsbHkgYWRqdXN0cyB0aGUgc3lzdGVtIGFnZW50IHZvbHRhZ2UgYW5kIGNsb2NrIGZyZXF1ZW5j aWVzCj4gKyAqIGRlcGVuZGluZyBvbiBwb3dlciBhbmQgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnRz LiBUaGUgZGlzcGxheSBlbmdpbmUgYWNjZXNzCj4gKyAqIHRvIHN5c3RlbSBtZW1vcnkgaXMgYmxv Y2tlZCBkdXJpbmcgdGhlIGFkanVzdG1lbnQgdGltZS4gSGF2aW5nIHRoaXMgZW5hYmxlZAo+ICsg KiBpbiBtdWx0aS1waXBlIGNvbmZpZ3VyYXRpb25zIGNhbiBjYXVzZSBpc3N1ZXMgKHN1Y2ggYXMg dW5kZXJydW5zIGNhdXNpbmcKPiArICogZnVsbCBzeXN0ZW0gaGFuZ3MpLCBhbmQgdGhlIGJzcGVj IGFsc28gc3VnZ2VzdHMgdGhhdCBzb2Z0d2FyZSBkaXNhYmxlIGl0Cj4gKyAqIHdoZW4gbW9yZSB0 aGVuIG9uZSBwaXBlIGlzIGVuYWJsZWQuCj4gKyAqLwo+ICtpbnQKPiArc2tsX2VuYWJsZV9zYWd2 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJaW50IHJldDsKPiAr Cj4gKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwkJcmV0dXJuIDA7Cj4gKwlpZiAoZGV2 X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIHRo ZSBTQUdWXG4iKTsKPiArCj4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCj4gKwkJCQkgICAgICBHRU45X1NBR1ZfRFlOQU1J Q19GUkVRKTsKPiArCWlmICghcmV0KQo+ICsJCWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkID0g dHJ1ZTsKPiArCWVsc2UKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgdGhlIFNBR1Zc biIpOwo+ICsKPiArCS8qIFdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgU0FHViB3aGVuIGVuYWJs aW5nICovCj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3NrbF9kb19zYWd2X2Rpc2FibGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJdWlu dDMyX3QgdGVtcDsKPiArCj4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCj4gKwkJCQkgICAgICBHRU45X1NBR1ZfRElTQUJM RSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSB0aGUg U0FHVlxuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBzYW5keWJyaWRn ZV9wY29kZV9yZWFkKGRldl9wcml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKPiArCQkJCSAg ICAgJnRlbXApOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNoZWNr IHRoZSBzdGF0dXMgb2YgdGhlIFNBR1ZcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIHRlbXAgJiBHRU45X1NBR1ZfSVNfRElTQUJMRUQ7Cj4gK30KVGhpcyB3aWxsIHdv cmsgYmV0dGVyIGlmIHlvdSByZW1vdmUgdGhlIHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlLCBhbmQg aW5pdGlhbGlzZSB0ZW1wIHRvIEdFTjlfU0FHVl9ESVNBQkxFLgoKVGhlIHJlYWQgZnVuY3Rpb24g Zmlyc3Qgd3JpdGVzIHNvbWV0aGluZywgdGhlbiByZWNvcmRzIGl0cyByZXNwb25zZS4gUmlnaHQg bm93IGl0J3MgY2hlY2tpbmcgdGhlIHJlc3BvbnNlIHRvIGdhcmJhZ2UuCgpDYW4geW91IHZlcmlm eSB0aGF0IHRoaXMgd29ya3M/Cj4gK2ludAo+ICtza2xfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJaW50IHJldCwgcmVzdWx0Owo+ICsKPiAr CWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCQlyZXR1cm4gMDsKPiArCWlmICghZGV2X3By aXYtPnNrbF9zYWd2X2VuYWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyB0aGUg U0FHVlxuIik7Cj4gKwo+ICsJLyogYnNwZWMgc2F5cyB0byBrZWVwIHJldHJ5aW5nIGZvciBhdCBs ZWFzdCAxIG1zICovCj4gKwlyZXQgPSB3YWl0X2ZvcihyZXN1bHQgPSBza2xfZG9fc2Fndl9kaXNh YmxlKGRldl9wcml2KSwgMSk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7Cj4gKwo+ICsJaWYgKHJldCA9PSAtRVRJTUVET1VUKSB7Cj4gKwkJRFJNX0VSUk9SKCJSZXF1 ZXN0IHRvIGRpc2FibGUgU0FHViB0aW1lZCBvdXRcbiIpOwo+ICsJfSBlbHNlIHsKPiArCQlpZiAo cmVzdWx0ID09IEdFTjlfU0FHVl9JU19ESVNBQkxFRCkKPiArCQkJZGV2X3ByaXYtPnNrbF9zYWd2 X2VuYWJsZWQgPSBmYWxzZTsKPiArCj4gKwkJcmV0ID0gcmVzdWx0Owo+ICsJfQpJJ3ZlIGZvdW5k IG91dCB3aHkgU0FHViBkb2Vzbid0IHdvcmsuIExvb2tpbmcgYXQgdGhlIGRvYyBmb3IgQlNXIGFm dGVyIHRoZSBidXN5IGJpdCBpcyBjbGVhcmVkIHRoZSBsb3dlciBieXRlIGNvbnRhaW5zIHN0YXR1 cy4KSW4gbXkgY2FzZSB0aGUgc3RhdHVzIGlzIDAxaCBJTExFR0FMX0NNRCwgc28gSSdtIGd1ZXNz aW5nIFNBR1YgaXMgbm90IHN1cHBvcnRlZCBvciBmb3JjZWQgZGlzYWJsZWQuCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=