From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 5/8] drm/i915: Add a atomic evasion step to watermark programming. Date: Wed, 19 Oct 2016 16:15:02 -0700 Message-ID: <20161019231502.GA19156@intel.com> References: <1476278901-15750-1-git-send-email-maarten.lankhorst@linux.intel.com> <1476278901-15750-6-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8443D6EA79 for ; Wed, 19 Oct 2016 23:15:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1476278901-15750-6-git-send-email-maarten.lankhorst@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMTIsIDIwMTYgYXQgMDM6Mjg6MThQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQWxsb3cgdGhlIGRyaXZlciB0byB3cml0ZSB3YXRlcm1hcmtzIGR1cmluZyBh dG9taWMgZXZhc2lvbi4KPiBUaGlzIHdpbGwgbWFrZSBpdCBwb3NzaWJsZSB0byB3cml0ZSB0aGUg d2F0ZXJtYXJrcyBpbiBhIGNsZWFuZXIKPiB3YXkgb24gZ2VuOSsuCj4gCj4gU2lnbmVkLW9mZi1i eTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDYgKysrKy0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE4ICsrKysrKysrLS0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAxOSArKysr KysrKysrKysrKysrKy0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZjY1Y2NmOWIw YmVhLi4wOTU4OGM1ODE0OGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDg0 LDYgKzQ4NCw3IEBAIHN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5nIHsKPiAgCj4gIHN0cnVjdCBp bnRlbF9jb25uZWN0b3I7Cj4gIHN0cnVjdCBpbnRlbF9lbmNvZGVyOwo+ICtzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlOwo+ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKPiAgc3RydWN0IGludGVs X2luaXRpYWxfcGxhbmVfY29uZmlnOwo+ICBzdHJ1Y3QgaW50ZWxfY3J0YzsKPiBAQCAtNDk3LDgg KzQ5OCw5IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgCWludCAoKmNvbXB1 dGVfaW50ZXJtZWRpYXRlX3dtKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICAgICAg IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpuZXdzdGF0ZSk7Cj4gLQl2b2lkICgqaW5pdGlhbF93YXRlcm1hcmtzKShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAtCXZvaWQgKCpvcHRpbWl6ZV93YXRl cm1hcmtzKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiArCXZvaWQgKCppbml0 aWFsX3dhdGVybWFya3MpKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiArCXZvaWQgKCphdG9taWNfZXZhZGVfd2F0ZXJt YXJrcykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUpOwo+ICsJdm9pZCAoKm9wdGltaXplX3dhdGVybWFya3MpKHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl KTsKCmluaXRpYWxfd2F0ZXJtYXJrcygpIGFuZCBvcHRpbWl6ZV93YXRlcm1hcmtzKCkgYXJlIGN1 cnJlbnRseSBvbmx5IHVzZWQKb24gSUxLIChhbmQgcG9zc2libHkgYnkgaW4tZGV2ZWxvcG1lbnQg VkxWL0NIViBwYXRjaGVzIHRoYXQgVmlsbGUgaXMKd29ya2luZyBvbj8pLiAgQXMgZmFyIGFzIEkg Y2FuIHNlZSwgdGhlIHRvcC1sZXZlbCBzdGF0ZSB0aGF0IHdlIGFkZCBhcyBhCnBhcmFtZXRlciBo ZXJlIGRvZXNuJ3QgYWN0dWFsbHkgZ2V0IHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9ucy4gIEFy ZQp5b3UgYWRkaW5nIGl0IHRvIGp1c3QgbWFrZSB0aGVtIG1vcmUgc2ltaWxhciB0byB0aGUgc2ln bmF0dXJlIG9mIHRoZSBuZXcKYXRvbWljX2V2YWRlX3dhdGVybWFya3MgdmZ1bmMgb3IgZGlkIHlv dSBoYXZlIHNvbWV0aGluZyBlbHNlIGluIG1pbmQ/CgpJJ2QgYWxzbyBzdWdnZXN0IGFkZGluZyBh IGJyaWVmIGNvbW1lbnQgdG8geW91ciBuZXcgc2tsX2V2YWRlX2NydGNfd20oKQpmdW5jdGlvbiB0 aGF0IGluZGljYXRlcyB0aGF0IG5lYXJseSBhbGwgb2YgdGhlIGdlbjkgd2F0ZXJtYXJrIHZhbHVl cyBhcmUKcGVyLXBsYW5lIHZhbHVlcyB0aGF0IGdldCB3cml0dGVuIGFzIHBhcnQgb2YgdGhlIGdl bmVyYWwgcGxhbmUgdXBkYXRlIGluCnNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUgYW5kL29y IHNrbF91cGRhdGVfcGxhbmUuICBHaXZlbiB0aGF0IHRob3NlCnR3byBmdW5jdGlvbnMgYXJlIGxv Y2F0ZWQgaW4gb3RoZXIgZmlsZXMgdGhhdCBtYXkgaGVscCBjbGFyaWZ5IHRvIGZ1dHVyZQpkZXZl bG9wZXJzIHdoeSB0aGlzIGZ1bmN0aW9uIGFwcGVhcnMgc28gdHJpdmlhbC4KCgpNYXR0Cgo+ICAJ aW50ICgqY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKPiAgCXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4g IAlpbnQgKCptb2Rlc2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDU1ZjhlYzhjNzZh ZS4uMjNkOGM3MmRhZGUzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC01MTYwLDcgKzUxNjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgCSAqIHVzIHRvLgo+ ICAJICovCj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzICE9IE5V TEwpCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmln KTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3ModG9faW50ZWxfYXRv bWljX3N0YXRlKG9sZF9zdGF0ZSksIHBpcGVfY29uZmlnKTsKPiAgCWVsc2UgaWYgKHBpcGVfY29u ZmlnLT51cGRhdGVfd21fcHJlKQo+ICAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKCZjcnRjLT5i YXNlKTsKPiAgfQo+IEBAIC01Mzc0LDcgKzUzNzQsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9j cnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAlpbnRl bF9jb2xvcl9sb2FkX2x1dHMoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiAgCj4gIAlpZiAoZGV2X3By aXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzICE9IE5VTEwpCj4gLQkJZGV2X3ByaXYtPmRp c3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKGludGVsX2NydGMtPmNvbmZpZyk7Cj4gKwkJZGV2X3By aXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRf c3RhdGUpLCBpbnRlbF9jcnRjLT5jb25maWcpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUoaW50ZWxf Y3J0Yyk7Cj4gIAo+ICAJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ IEBAIC01NDgwLDcgKzU0ODAsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQlpbnRlbF9kZGlfZW5hYmxl X3RyYW5zY29kZXJfZnVuYyhjcnRjKTsKPiAgCj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5p dGlhbF93YXRlcm1hcmtzICE9IE5VTEwpCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93 YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dh dGVybWFya3ModG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSksIHBpcGVfY29uZmlnKTsK PiAgCWVsc2UKPiAgCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAgCj4gQEAgLTE0 NTAzLDcgKzE0NTAzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlpbnRlbF9jc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCj4gIAkJaWYgKGRldl9wcml2LT5kaXNwbGF5 Lm9wdGltaXplX3dhdGVybWFya3MpCj4gLQkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dh dGVybWFya3MoaW50ZWxfY3N0YXRlKTsKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVf d2F0ZXJtYXJrcyhpbnRlbF9zdGF0ZSwgaW50ZWxfY3N0YXRlKTsKPiAgCX0KPiAgCj4gIAlmb3Jf ZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+IEBA IC0xNDkwOCw3ICsxNDkwOCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf aW50ZWxfc3RhdGUgPQo+ICAJCXRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwo+ ICAJYm9vbCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSk7Cj4gLQllbnVtIHBp cGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAo+ICAJLyogUGVyZm9ybSB2YmxhbmsgZXZh c2lvbiBhcm91bmQgY29tbWl0IG9wZXJhdGlvbiAqLwo+ICAJaW50ZWxfcGlwZV91cGRhdGVfc3Rh cnQoaW50ZWxfY3J0Yyk7Cj4gQEAgLTE0OTIzLDEyICsxNDkyMiwxMSBAQCBzdGF0aWMgdm9pZCBp bnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJaWYg KGludGVsX2NzdGF0ZS0+dXBkYXRlX3BpcGUpCj4gIAkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmln KGludGVsX2NydGMsIG9sZF9pbnRlbF9zdGF0ZSk7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAg CQlza2xfZGV0YWNoX3NjYWxlcnMoaW50ZWxfY3J0Yyk7Cj4gIAo+IC0JCUk5MTVfV1JJVEUoUElQ RV9XTV9MSU5FVElNRShwaXBlKSwKPiAtCQkJICAgaW50ZWxfY3N0YXRlLT53bS5za2wub3B0aW1h bC5saW5ldGltZSk7Cj4gLQl9Cj4gKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX2V2YWRl X3dhdGVybWFya3MpCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX2V2YWRlX3dhdGVybWFy a3ModG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9jcnRjX3N0YXRlLT5zdGF0ZSksIGludGVsX2Nz dGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gQEAgLTE2Mzg4LDcgKzE2Mzg2LDcgQEAgcmV0cnk6Cj4g IAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjc3Rh dGUpOwo+ICAKPiAgCQljcy0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IHRydWU7Cj4gLQkJZGV2 X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyhjcyk7Cj4gKwkJZGV2X3ByaXYtPmRp c3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBj cyk7Cj4gIAl9Cj4gIAo+ICAJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiBpbmRleCA0NWZiODI3NWFiZWEuLjA1Y2NkMjUzZmQ3YSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC00MTc3LDYgKzQxNzcsMTggQEAgc2tsX2NvbXB1 dGVfd20oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gK3N0YXRpYyB2b2lkIHNrbF9ldmFkZV9jcnRjX3dtKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRl LT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0g JmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Cj4gKwo+ICsJSTkxNV9XUklURShQSVBFX1dNX0xJTkVUSU1FKHBpcGUpLAo+ICsJCSAgIHBpcGVf d20tPmxpbmV0aW1lKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiBAQCAtNDI3MCw3ICs0MjgyLDggQEAgc3RhdGljIHZv aWQgaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlpbGtfd3JpdGVfd21fdmFsdWVzKGRldl9wcml2LCAmcmVzdWx0cyk7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIGlsa19pbml0aWFsX3dhdGVybWFya3Moc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkKPiArc3RhdGljIHZvaWQgaWxrX2luaXRpYWxfd2F0ZXJtYXJrcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOwo+IEBAIC00 MjgxLDcgKzQyOTQsOCBAQCBzdGF0aWMgdm9pZCBpbGtfaW5pdGlhbF93YXRlcm1hcmtzKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT53 bS53bV9tdXRleCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlsa19vcHRpbWl6ZV93YXRlcm1h cmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGlsa19v cHRpbWl6ZV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJ CQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0YXRlLT5iYXNlLmNydGMtPmRl dik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0 YXRlLT5iYXNlLmNydGMpOwo+IEBAIC03NzE1LDYgKzc3MjksNyBAQCB2b2lkIGludGVsX2luaXRf cG0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA5KSB7Cj4gIAkJc2tsX3NldHVwX3dtX2xhdGVuY3koZGV2KTsKPiAgCQlkZXZfcHJpdi0+ZGlz cGxheS51cGRhdGVfd20gPSBza2xfdXBkYXRlX3dtOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmF0 b21pY19ldmFkZV93YXRlcm1hcmtzID0gc2tsX2V2YWRlX2NydGNfd207Cj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcyA9IHNrbF9jb21wdXRlX3dtOwo+ICAJ fSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsKPiAgCQlpbGtfc2V0dXBfd21fbGF0ZW5j eShkZXYpOwo+IC0tIAo+IDIuNy40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBF bmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9y YXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==