From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 7/8] drm/i915/gen9+: Program watermarks as a separate step during evasion Date: Thu, 20 Oct 2016 14:57:38 -0700 Message-ID: <20161020215738.GD22654@intel.com> References: <1476278901-15750-1-git-send-email-maarten.lankhorst@linux.intel.com> <1476278901-15750-8-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 927DD6EC4D for ; Thu, 20 Oct 2016 22:03:51 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1476278901-15750-8-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 T24gV2VkLCBPY3QgMTIsIDIwMTYgYXQgMDM6Mjg6MjBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSW5zdGVhZCBvZiBydW5uaW5nIHRoZSB3YXRlcm1hcmsgdXBkYXRlcyBmcm9t IHRoZSBjYWxsYmFja3MgcnVuCj4gdGhlbSBmcm9tIGEgc2VwYXJhdGUgaG9vayBhdG9taWNfZXZh ZGVfd2F0ZXJtYXJrcy4KClRoZSBjb21taXQgbWVzc2FnZSBoZXJlIGlzIGEgYml0IHRlcnNlLiAg SSdkIGNsYXJpZnkgdGhhdCB0aGUgY2hhbmdlCndlJ3JlIG1ha2luZyBpcyB0aGF0IHdhdGVybWFy ayByZWdpc3RlciBwcm9ncmFtbWluZyBpcyBubyBsb25nZXIKaGFwcGVuaW5nIGluIHRoZSBzYW1l IGRpc3BsYXkgY2FsbGJhY2tzIHRoYXQgd3JpdGUgZ2VuZXJhbCBwbGFuZQpyZWdpc3RlcnMsIGJ1 dCByYXRoZXIgaW4gYSBuZXcgaW5kZXBlbmRlbnQgaG9vay4gIFRoZSBrZXkgdGhpbmcgdG8KZW1w aGFzaXplIGlzIHRoYXQgZGVzcGl0ZSB0aGUgcmVmYWN0b3JpbmcsIHRoZSB3YXRlcm1hcmsgdmFs dWVzIHdpbGwKc3RpbGwgYmUgd3JpdHRlbiB1bmRlciB0aGUgc2FtZSB2YmxhbmsgZXZhc2lvbiB0 aGF0IGlzIGNvdmVyaW5nIHRoZSByZXN0Cm9mIHRoZSBwbGFuZXMnIHVwZGF0ZXMsIHNvIHRoZXkn bGwgc3RpbGwgdGFrZSBlZmZlY3Qgb24gdGhlIHNhbWUgdmJsYW5rLgoKPiAKPiBUaGlzIGFsc28g Z2V0cyByaWQgb2YgdGhlIGdsb2JhbCBza2xfcmVzdWx0cywgd2hpY2ggd2FzIHJlcXVpcmVkIGZv cgo+IGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnJlbnQgYXRvbWljIGNvbW1pdC4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg NyAtLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDM2ICsr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgIHwgIDcgLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jICAgICAgfCAzOCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTggLS0tLS0tLS0tLS0tLS0t LS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwOTU4OGM1ODE0OGYuLjI4ZTQ0Y2I2 MTFiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMDI3LDEzICsyMDI3LDYg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJCSAqLwo+ICAJCXVpbnQxNl90IHNrbF9s YXRlbmN5WzhdOwo+ICAKPiAtCQkvKgo+IC0JCSAqIFRoZSBza2xfd21fdmFsdWVzIHN0cnVjdHVy ZSBpcyBhIGJpdCB0b28gYmlnIGZvciBzdGFjawo+IC0JCSAqIGFsbG9jYXRpb24sIHNvIHdlIGtl ZXAgdGhlIHN0YWdpbmcgc3RydWN0IHdoZXJlIHdlIHN0b3JlCj4gLQkJICogaW50ZXJtZWRpYXRl IHJlc3VsdHMgaGVyZSBpbnN0ZWFkLgo+IC0JCSAqLwo+IC0JCXN0cnVjdCBza2xfd21fdmFsdWVz IHNrbF9yZXN1bHRzOwo+IC0KPiAgCQkvKiBjdXJyZW50IGhhcmR3YXJlIHN0YXRlICovCj4gIAkJ dW5pb24gewo+ICAJCQlzdHJ1Y3QgaWxrX3dtX3ZhbHVlcyBodzsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMzQwODYxODI2YzQ2Li5kM2Q3ZDlkYzE0YTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTMzNzcsOSArMzM3Nyw2IEBA IHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQljb25zdCBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd20g PSAmZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzOwo+IC0JY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93 bSAqcF93bSA9Cj4gLQkJJmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1swXTsKPiAg CWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiBwbGFuZV9jdGw7Cj4gIAl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiBAQCAtMzQx NSw5ICszNDEyLDYgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCWludGVsX2NydGMtPmFkanVzdGVkX3ggPSBzcmNf eDsKPiAgCWludGVsX2NydGMtPmFkanVzdGVkX3kgPSBzcmNfeTsKPiAgCj4gLQlpZiAod20tPmRp cnR5X3BpcGVzICYgZHJtX2NydGNfbWFzaygmaW50ZWxfY3J0Yy0+YmFzZSkpCj4gLQkJc2tsX3dy aXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHBfd20sICZ3bS0+ZGRiLCAwKTsKPiAtCj4gIAlJOTE1 X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgcGxhbmVfY3RsKTsKPiAgCUk5MTVfV1JJVEUoUExB TkVfT0ZGU0VUKHBpcGUsIDApLCAoc3JjX3kgPDwgMTYpIHwgc3JjX3gpOwo+ICAJSTkxNV9XUklU RShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gQEAgLTM0NTAsMTggKzM0NDQsOCBA QCBzdGF0aWMgdm9pZCBza3lsYWtlX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwcmltYXJ5LAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsKPiAtCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKnBfd20gPSAmY3N0YXRlLT53 bS5za2wub3B0aW1hbC5wbGFuZXNbMF07Cj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Cj4gIAo+IC0JLyoKPiAtCSAqIFdlIG9ubHkgcG9wdWxhdGUgc2tsX3Jlc3VsdHMgb24gd2F0ZXJt YXJrIHVwZGF0ZXMsIGFuZCBpZiB0aGUKPiAtCSAqIHBsYW5lJ3MgdmlzaWJsaXR5IGlzbid0IGFj dHVhbGx5IGNoYW5naW5nIG5laXRoZXIgaXMgaXRzIHdhdGVybWFya3MuCj4gLQkgKi8KPiAtCWlm ICghY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnZpc2libGUpCj4gLQkJc2tsX3dyaXRlX3BsYW5lX3dt KGludGVsX2NydGMsIHBfd20sCj4gLQkJCQkgICAmZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzLmRk YiwgMCk7Cj4gLQo+ICAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgMCksIDApOwo+ICAJSTkx NV9XUklURShQTEFORV9TVVJGKHBpcGUsIDApLCAwKTsKPiAgCVBPU1RJTkdfUkVBRChQTEFORV9T VVJGKHBpcGUsIDApKTsKPiBAQCAtMTA4MjQsMTYgKzEwODA4LDkgQEAgc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+IC0JY29uc3Qgc3Ry dWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0czsKPiAtCWNv bnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKnBfd20gPQo+IC0JCSZjc3RhdGUtPndtLnNrbC5vcHRp bWFsLnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl Owo+ICAJdWludDMyX3QgY250bCA9IDA7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSAmJiB3bS0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMpKQo+IC0JCXNrbF93 cml0ZV9jdXJzb3Jfd20oaW50ZWxfY3J0YywgcF93bSwgJndtLT5kZGIpOwo+IC0KPiAgCWlmIChw bGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gIAkJY250bCA9IE1D VVJTT1JfR0FNTUFfRU5BQkxFOwo+ICAJCXN3aXRjaCAocGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193 KSB7Cj4gQEAgLTE0NDM2LDggKzE0NDEzLDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19j b21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCWludGVsX2No ZWNrX2NwdV9maWZvX3VuZGVycnVucyhkZXZfcHJpdik7Cj4gIAkJCWludGVsX2NoZWNrX3BjaF9m aWZvX3VuZGVycnVucyhkZXZfcHJpdik7Cj4gIAo+IC0JCQlpZiAoIWNydGMtPnN0YXRlLT5hY3Rp dmUpCj4gLQkJCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiArCQkJaWYgKCFjcnRj LT5zdGF0ZS0+YWN0aXZlKSB7Cj4gKwkJCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93 YXRlcm1hcmtzKQo+ICsJCQkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhp bnRlbF9zdGF0ZSwKPiArCQkJCQkJCQkJICAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKSk7Cj4gKwkJCQllbHNlCj4gKwkJCQkJaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7 Cj4gKwkJCX0KPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0xNDU5OSw3ICsxNDU4MSw2IEBAIHN0YXRp YyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAg CWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRydWUpOwo+ICAJZGV2X3ByaXYt PndtLmRpc3RydXN0X2Jpb3Nfd20gPSBmYWxzZTsKPiAtCWRldl9wcml2LT53bS5za2xfcmVzdWx0 cyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzOwo+ICAJaW50ZWxfc2hhcmVkX2RwbGxfY29tbWl0 KHN0YXRlKTsKPiAgCWludGVsX2F0b21pY190cmFja19mYnMoc3RhdGUpOwo+ICAKPiBAQCAtMTQ5 MTMsNyArMTQ4OTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRj KTsKPiAgCj4gIAlpZiAobW9kZXNldCkKPiAtCQlyZXR1cm47Cj4gKwkJZ290byBvdXQ7CgpTaG91 bGQgdGhpcyBjaGFuZ2UgaGF2ZSBiZWVuIGluIGEgcHJldmlvdXMgcGF0Y2g/ICBXZXJlIHdlIG1p c3NpbmcgdGhlCnByb2dyYW1taW5nIG9mIGxpbmV0aW1lIHdhdGVybWFya3Mgb24gbW9kZXNldCBi ZWZvcmU/Cgo+ICAKPiAgCWlmIChjcnRjLT5zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkIHx8IHRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLT51cGRhdGVfcGlwZSkgewo+ICAJCWludGVs X2NvbG9yX3NldF9jc2MoY3J0Yy0+c3RhdGUpOwo+IEBAIC0xNDkyNSw2ICsxNDkwNiw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQlza2xfZGV0YWNoX3Nj YWxlcnMoaW50ZWxfY3J0Yyk7Cj4gIAo+ICtvdXQ6Cj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXku YXRvbWljX2V2YWRlX3dhdGVybWFya3MpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX2V2 YWRlX3dhdGVybWFya3ModG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9jcnRjX3N0YXRlLT5zdGF0 ZSksIGludGVsX2NzdGF0ZSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4 IDlmMDRlMjZjNDM2NS4uMTdjZjFlZTgzYmZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBAQCAtMTc2MSwxMyArMTc2MSw2IEBAIGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX2VxdWFs cyhjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpvbGQsCj4gIAkJCSAgICAgICBlbnVt IHBpcGUgcGlwZSk7Cj4gIGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0Yyk7Cj4gLXZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywKPiAtCQkJIGNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtLAo+IC0JCQkgY29u c3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKTsKPiAtdm9pZCBza2xfd3JpdGVfcGxh bmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gLQkJCWNvbnN0IHN0cnVjdCBz a2xfcGxhbmVfd20gKndtLAo+IC0JCQljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpk ZGIsCj4gLQkJCWludCBwbGFuZSk7Cj4gIHVpbnQzMl90IGlsa19waXBlX3BpeGVsX3JhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAgYm9vbCBpbGtfZGlz YWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgaW50IHNhbml0aXplX3JjNl9v cHRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZW5hYmxlX3JjNik7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggYmUzZGQ4Y2RjN2FlLi4xOGM2MmQxZWVh MTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtNDE3OSwyNyArNDE3OSwzNSBA QCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2V2YWRlX2NydGNfd20oc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gLQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUpCj4gK3N0YXRpYyB2b2lkIHNrbF9ldmFkZV9jcnRjX3dtKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5i YXNlLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0gJmNz dGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4gKwljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9u ICpkZGIgPSAmc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOwo+ICsJaW50IHBsYW5lOwo+ICsKPiArCWlmICghKHN0YXRlLT53bV9yZXN1bHRzLmRp cnR5X3BpcGVzICYgZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSkpKQo+ICsJCXJldHVybjsKClNo b3VsZCB3ZSBoYXZlIGhhZCB0aGlzIHRlc3QgZXZlbiB3aGVuIHdlIHdlcmUganVzdCB3cml0aW5n IHRoZSBsaW5ldGltZQp3YXRlcm1hcmtzPyAgSS5lLiwgc2hvdWxkIHRoaXMgbW92ZSB0byBhbiBl YXJsaWVyIHBhdGNoPwoKPiAgCj4gLQlJOTE1X1dSSVRFKFBJUEVfV01fTElORVRJTUUocGlwZSks Cj4gLQkJICAgcGlwZV93bS0+bGluZXRpbWUpOwo+ICsJSTkxNV9XUklURShQSVBFX1dNX0xJTkVU SU1FKHBpcGUpLCBwaXBlX3dtLT5saW5ldGltZSk7Cj4gKwo+ICsJZm9yIChwbGFuZSA9IDA7IHBs YW5lIDwgaW50ZWxfbnVtX3BsYW5lcyhjcnRjKTsgcGxhbmUrKykKPiArCQlza2xfd3JpdGVfcGxh bmVfd20oY3J0YywgJnBpcGVfd20tPnBsYW5lc1twbGFuZV0sIGRkYiwgcGxhbmUpOwo+ICsKPiAr CXNrbF93cml0ZV9jdXJzb3Jfd20oY3J0YywgJnBpcGVfd20tPnBsYW5lc1tQTEFORV9DVVJTT1Jd LCBkZGIpOwoKVGVjaG5pY2FsbHkgdGhpcyB3aWxsIGNhdXNlIHVzIHRvIChyZSl3cml0ZSB1bmNo YW5nZWQgd2F0ZXJtYXJrIHZhbHVlcwptb3JlIG9mdGVuIHRoYW4gd2UgZGlkIHByZXZpb3VzbHku ICBFLmcuLCB3ZSBwcmV2aW91c2x5IHNraXBwZWQgd3JpdGluZwp2YWx1ZXMgZm9yIGRpc2FibGVk IHBsYW5lcyB0aGF0IHdlcmUgc3RheWluZyBkaXNhYmxlZC4gIE5vdCBzdXJlIGlmIGl0CnJlYWxs eSBtYXR0ZXJzIG9yIG5vdCwganVzdCBzb21ldGhpbmcgSSBmaWd1cmVkIEkgc2hvdWxkIHBvaW50 IG91dC4KCgpNYXR0Cgo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgc2tsX2luaXRpYWxfd20oc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUpCj4gIHsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5j cnRjOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBza2xf d21fdmFsdWVzICpyZXN1bHRzID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0czsKPiArCXN0cnVj dCBza2xfd21fdmFsdWVzICpyZXN1bHRzID0gJnN0YXRlLT53bV9yZXN1bHRzOwo+ICAJc3RydWN0 IHNrbF93bV92YWx1ZXMgKmh3X3ZhbHMgPSAmZGV2X3ByaXYtPndtLnNrbF9odzsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKPiAtCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZjc3RhdGUtPndtLnNrbC5v cHRpbWFsOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAKPiAgCWlm ICgocmVzdWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMpKSA9PSAwKQo+IEBA IC00MjEzLDE2ICs0MjIxLDggQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAkgKiB0aGUgcGlwZSdzIHNodXQgb2ZmLCBqdXN0IGRvIHNvIGhlcmUu IEFscmVhZHkgYWN0aXZlIHBpcGVzIHdpbGwgaGF2ZQo+ICAJICogdGhlaXIgd2F0ZXJtYXJrcyB1 cGRhdGVkIG9uY2Ugd2UgdXBkYXRlIHRoZWlyIHBsYW5lcy4KPiAgCSAqLwo+IC0JaWYgKGNydGMt PnN0YXRlLT5hY3RpdmVfY2hhbmdlZCkgewo+IC0JCWludCBwbGFuZTsKPiAtCj4gLQkJZm9yIChw bGFuZSA9IDA7IHBsYW5lIDwgaW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgcGxhbmUrKykK PiAtCQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsICZwaXBlX3dtLT5wbGFuZXNbcGxh bmVdLAo+IC0JCQkJCSAgICZyZXN1bHRzLT5kZGIsIHBsYW5lKTsKPiAtCj4gLQkJc2tsX3dyaXRl X2N1cnNvcl93bShpbnRlbF9jcnRjLCAmcGlwZV93bS0+cGxhbmVzW1BMQU5FX0NVUlNPUl0sCj4g LQkJCQkgICAgJnJlc3VsdHMtPmRkYik7Cj4gLQl9Cj4gKwlpZiAoY3N0YXRlLT5iYXNlLmFjdGl2 ZV9jaGFuZ2VkKQo+ICsJCXNrbF9ldmFkZV9jcnRjX3dtKHN0YXRlLCBjc3RhdGUpOwo+ICAKPiAg CXNrbF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMsIHJlc3VsdHMsIHBpcGUpOwo+ICAKPiBAQCAt NzcyNyw3ICs3NzI3LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkvKiBGb3IgRklGTyB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+ICAJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkpIHsKPiAgCQlza2xfc2V0dXBfd21fbGF0ZW5jeShkZXYpOwo+IC0J CWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHNrbF91cGRhdGVfd207Cj4gKwkJZGV2X3By aXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzID0gc2tsX2luaXRpYWxfd207Cj4gIAkJZGV2 X3ByaXYtPmRpc3BsYXkuYXRvbWljX2V2YWRlX3dhdGVybWFya3MgPSBza2xfZXZhZGVfY3J0Y193 bTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzID0gc2ts X2NvbXB1dGVfd207Cj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMGZiNzc1YjRjOTNlLi4zNjY5MDBkY2Rl MzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0yMDMsMTMgKzIw Myw4IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3Ry dWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKGRybV9wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ IC0JY29uc3Qgc3RydWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS5za2xfcmVz dWx0czsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiAgCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gIAljb25zdCBpbnQgcGxh bmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+IC0JY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93 bSAqcF93bSA9Cj4gLQkJJmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV07 Cj4gIAl1MzIgcGxhbmVfY3RsOwo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29s b3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAgCXUzMiBzdXJmX2FkZHIgPSBwbGFu ZV9zdGF0ZS0+bWFpbi5vZmZzZXQ7Cj4gQEAgLTIzMyw5ICsyMjgsNiBAQCBza2xfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiAgCj4gIAlwbGFuZV9jdGwgfD0gc2ts X3BsYW5lX2N0bF9yb3RhdGlvbihyb3RhdGlvbik7Cj4gIAo+IC0JaWYgKHdtLT5kaXJ0eV9waXBl cyAmIGRybV9jcnRjX21hc2soY3J0YykpCj4gLQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2Ny dGMsIHBfd20sICZ3bS0+ZGRiLCBwbGFuZSk7Cj4gLQo+ICAJaWYgKGtleS0+ZmxhZ3MpIHsKPiAg CQlJOTE1X1dSSVRFKFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZSksIGtleS0+bWluX3ZhbHVlKTsK PiAgCQlJOTE1X1dSSVRFKFBMQU5FX0tFWU1BWChwaXBlLCBwbGFuZSksIGtleS0+bWF4X3ZhbHVl KTsKPiBAQCAtMjkxLDE5ICsyODMsOSBAQCBza2xfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBkcGxhbmUtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShkcGxhbmUpOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJY29uc3QgaW50IHBpcGUg PSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCWNvbnN0IGludCBwbGFuZSA9IGludGVsX3BsYW5lLT5w bGFuZSArIDE7Cj4gIAo+IC0JLyoKPiAtCSAqIFdlIG9ubHkgcG9wdWxhdGUgc2tsX3Jlc3VsdHMg b24gd2F0ZXJtYXJrIHVwZGF0ZXMsIGFuZCBpZiB0aGUKPiAtCSAqIHBsYW5lJ3MgdmlzaWJsaXR5 IGlzbid0IGFjdHVhbGx5IGNoYW5naW5nIG5laXRoZXIgaXMgaXRzIHdhdGVybWFya3MuCj4gLQkg Ki8KPiAtCWlmICghZHBsYW5lLT5zdGF0ZS0+dmlzaWJsZSkKPiAtCQlza2xfd3JpdGVfcGxhbmVf d20odG9faW50ZWxfY3J0YyhjcnRjKSwKPiAtCQkJCSAgICZjc3RhdGUtPndtLnNrbC5vcHRpbWFs LnBsYW5lc1twbGFuZV0sCj4gLQkJCQkgICAmZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzLmRkYiwg cGxhbmUpOwo+IC0KPiAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIHBsYW5lKSwgMCk7Cj4g IAo+ICAJSTkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIHBsYW5lKSwgMCk7Cj4gLS0gCj4gMi43 LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZv cm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5 NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK