From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH] drm/i915: Explicit Raw and Adjusted WM latencies. Date: Wed, 21 Feb 2018 07:53:12 -0800 Message-ID: <20180221155312.GM27433@intel.com> References: <20180221015147.31859-1-rodrigo.vivi@intel.com> <20180221130930.GK5453@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id D2A576E794 for ; Wed, 21 Feb 2018 15:53:12 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180221130930.GK5453@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, Ashar Shaikh List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMDM6MDk6MzBQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgRmViIDIwLCAyMDE4IGF0IDA1OjUxOjQ3UE0gLTA4MDAsIFJvZHJp Z28gVml2aSB3cm90ZToKPiA+IEN1cnJlbnQgY29kZSBoYXMgc29tZSBsaW1pdGF0aW9uczoKPiA+ Cj4gPiAxLiBkZWJ1Z2ZzIG9ubHkgc2hvd3MgcmF3IGxhdGVuY3kgd2UgcmVhZCBmcm9tIFBDT0RF LAo+ID4gbm90IHRoZSBvbmVzIHdlIGFyZSBjb25maWd1cmluZy4KPiA+Cj4gPiAyLiBXaGVuIGRl dGVybWluaW5nIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgd2Ugb25seQo+ID4gYXBwbHkgYWRqdXN0 ZWQgd2EsIGJ1dCB3ZSBkb24ndCBhcHBseSB0aGUgSVBDIG9uZS4KPiA+IFNvIHRoZXJlIGlzIHRo ZSByaXNrIG9mIGVuYWJsaW5nIFNBR1Ygd2hlbiB3ZSBzaG91bGQKPiA+IGFjdHVhbGx5IGRpc2Fi bGUgaXQuCj4gPgo+ID4gQ2M6IE1haGVzaCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+ Cj4gPiBDYzogQXNoYXIgU2hhaWtoIDxhemhhci5zaGFpa2hAaW50ZWwuY29tPgo+ID4gU2lnbmVk LW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gLS0tCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCA0OCArKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCAgICAgfCAgNyArKysrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j ICAgICB8IDMxICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwg NDMgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiA+IGluZGV4IGYyNjBiYjM5ZDczMy4uOTRmY2IwMzYwYjE0IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBAQCAtMzY2NCw3ICszNjY0 LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9kaXNwbGF5cG9y dF90ZXN0X3R5cGVfZm9wcyA9IHsKPiA+ICAJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZQo+ID4g IH07Cj4gPgo+ID4gLXN0YXRpYyB2b2lkIHdtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIGNvbnN0IHVpbnQxNl90IHdtWzhdKQo+ID4gK3N0YXRpYyB2b2lkIHdtX2xhdGVuY3lfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IHVpbnQxNl90IHdtWzhdLAo+ID4gKwkJCSAgICBj b25zdCBjaGFyICpoZWFkZXIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRl dl9wcml2LT5kcm07Cj4gPiBAQCAtMzY4MCw2ICszNjgxLDkgQEAgc3RhdGljIHZvaWQgd21fbGF0 ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgdWludDE2X3Qgd21bOF0pCj4gPiAg CWVsc2UKPiA+ICAJCW51bV9sZXZlbHMgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KSArIDE7 Cj4gPgo+ID4gKwlpZiAoaGVhZGVyKQo+ID4gKwkJc2VxX3ByaW50ZihtLCAiJXNcbiIsIGhlYWRl cik7Cj4gPiArCj4gPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4gPgo+ID4gIAlmb3Ig KGxldmVsID0gMDsgbGV2ZWwgPCBudW1fbGV2ZWxzOyBsZXZlbCsrKSB7Cj4gPiBAQCAtMzcwNywx NCArMzcxMSwxMiBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxl ICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKPiA+ICBzdGF0aWMgaW50IHByaV93bV9sYXRlbmN5 X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiA+IC0JY29uc3QgdWlu dDE2X3QgKmxhdGVuY2llczsKPiA+IC0KPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKPiA+IC0JCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiA+IC0JZWxz ZQo+ID4gLQkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5Owo+ID4KPiA+IC0J d21fbGF0ZW5jeV9zaG93KG0sIGxhdGVuY2llcyk7Cj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpIHsKPiA+ICsJCXdtX2xhdGVuY3lfc2hvdyhtLCBkZXZfcHJpdi0+d20uc2tsX2xh dGVuY3kucmF3LCAiUmF3Iik7Cj4gPiArCQl3bV9sYXRlbmN5X3Nob3cobSwgZGV2X3ByaXYtPndt LnNrbF9sYXRlbmN5LmFkanVzdGVkLCAiQWRqdXN0ZWQiKTsKPiA+ICsJfSBlbHNlCj4gPiArCQl3 bV9sYXRlbmN5X3Nob3cobSwgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5LCBOVUxMKTsKPiA+Cj4g PiAgCXJldHVybiAwOwo+ID4gIH0KPiA+IEBAIC0zNzIyLDE0ICszNzI0LDEyIEBAIHN0YXRpYyBp bnQgcHJpX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4g PiAgc3RhdGljIGludCBzcHJfd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IG0tPnByaXZhdGU7Cj4gPiAtCWNvbnN0IHVpbnQxNl90ICpsYXRlbmNpZXM7Cj4gPiAtCj4gPiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJp di0+d20uc2tsX2xhdGVuY3k7Cj4gPiAtCWVsc2UKPiA+IC0JCWxhdGVuY2llcyA9IGRldl9wcml2 LT53bS5zcHJfbGF0ZW5jeTsKPiA+Cj4gPiAtCXdtX2xhdGVuY3lfc2hvdyhtLCBsYXRlbmNpZXMp Owo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPiArCQl3bV9sYXRlbmN5 X3Nob3cobSwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LnJhdywgIlJhdyIpOwo+ID4gKwkJd21f bGF0ZW5jeV9zaG93KG0sIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5hZGp1c3RlZCwgIkFkanVz dGVkIik7Cj4gPiArCX0gZWxzZQo+ID4gKwkJd21fbGF0ZW5jeV9zaG93KG0sIGRldl9wcml2LT53 bS5zcHJfbGF0ZW5jeSwgTlVMTCk7Cj4gPgo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiBAQCAt MzczNywxNCArMzczNywxMiBAQCBzdGF0aWMgaW50IHNwcl93bV9sYXRlbmN5X3Nob3coc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gIHN0YXRpYyBpbnQgY3VyX3dtX2xhdGVuY3lf c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ID4gLQljb25zdCB1aW50 MTZfdCAqbGF0ZW5jaWVzOwo+ID4gLQo+ID4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KQo+ID4gLQkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5Owo+ID4gLQllbHNl Cj4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3k7Cj4gPgo+ID4gLQl3 bV9sYXRlbmN5X3Nob3cobSwgbGF0ZW5jaWVzKTsKPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewo+ID4gKwkJd21fbGF0ZW5jeV9zaG93KG0sIGRldl9wcml2LT53bS5za2xfbGF0 ZW5jeS5yYXcsICJSYXciKTsKPiA+ICsJCXdtX2xhdGVuY3lfc2hvdyhtLCBkZXZfcHJpdi0+d20u c2tsX2xhdGVuY3kuYWRqdXN0ZWQsICJBZGp1c3RlZCIpOwo+ID4gKwl9IGVsc2UKPiA+ICsJCXdt X2xhdGVuY3lfc2hvdyhtLCBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3ksIE5VTEwpOwo+ID4KPiA+ ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gQEAgLTM4MzMsNyArMzgzMSw3IEBAIHN0YXRpYyBzc2l6 ZV90IHByaV93bV9sYXRlbmN5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9f dXNlciAqdWJ1ZiwKPiA+ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiA+Cj4gPiAgCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2ts X2xhdGVuY3k7Cj4gPiArCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kucmF3 Owo+ID4gIAllbHNlCj4gPiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3k7 Cj4gPgo+ID4gQEAgLTM4NDgsNyArMzg0Niw3IEBAIHN0YXRpYyBzc2l6ZV90IHNwcl93bV9sYXRl bmN5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiA+ ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiA+Cj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpCj4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gPiAr CQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kucmF3Owo+ID4gIAllbHNlCj4g PiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3k7Cj4gPgo+ID4gQEAgLTM4 NjMsNyArMzg2MSw3IEBAIHN0YXRpYyBzc2l6ZV90IGN1cl93bV9sYXRlbmN5X3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiA+ICAJdWludDE2X3QgKmxh dGVuY2llczsKPiA+Cj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQls YXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gPiArCQlsYXRlbmNpZXMgPSBk ZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kucmF3Owo+ID4gIAllbHNlCj4gPiAgCQlsYXRlbmNpZXMg PSBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3k7Cj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gPiBpbmRleCA0OTBmZjA0MWZiMWUuLjY5NjliYmIyMDNiYyAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiA+IEBAIC0yMTM2LDExICsyMTM2LDE0IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKPiA+ICAJCS8qIGN1cnNvciAqLwo+ID4gIAkJdWludDE2X3QgY3VyX2xhdGVu Y3lbNV07Cj4gPiAgCQkvKgo+ID4gLQkJICogUmF3IHdhdGVybWFyayBtZW1vcnkgbGF0ZW5jeSB2 YWx1ZXMKPiA+ICsJCSAqIFdhdGVybWFyayBtZW1vcnkgbGF0ZW5jeSB2YWx1ZXMKPiA+ICAJCSAq IGZvciBTS0wgZm9yIGFsbCA4IGxldmVscwo+ID4gIAkJICogaW4gMXVzIHVuaXRzLgo+ID4gIAkJ ICovCj4gPiAtCQl1aW50MTZfdCBza2xfbGF0ZW5jeVs4XTsKPiA+ICsJCXN0cnVjdCB7Cj4gPiAr CQkJdWludDE2X3QgcmF3WzhdOwo+ID4gKwkJCXVpbnQxNl90IGFkanVzdGVkWzhdOwo+ID4gKwkJ fSBza2xfbGF0ZW5jeTsKPiA+Cj4gPiAgCQkvKiBjdXJyZW50IGhhcmR3YXJlIHN0YXRlICovCj4g PiAgCQl1bmlvbiB7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGluZGV4IGEwYTZiNGI3 YzQ3Yi4uNzhiNTJlNWExZjhlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4g QEAgLTMwMzAsOCArMzAzMCw5IEBAIHN0YXRpYyB2b2lkIGlsa19zZXR1cF93bV9sYXRlbmN5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Cj4gPiAgc3RhdGljIHZvaWQgc2ts X3NldHVwX3dtX2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4g IHsKPiA+IC0JaW50ZWxfcmVhZF93bV9sYXRlbmN5KGRldl9wcml2LCBkZXZfcHJpdi0+d20uc2ts X2xhdGVuY3kpOwo+ID4gLQlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRldl9wcml2LCAiR2VuOSBQ bGFuZSIsIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeSk7Cj4gPiArCWludGVsX3JlYWRfd21fbGF0 ZW5jeShkZXZfcHJpdiwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LnJhdyk7Cj4gPiArCWludGVs X3ByaW50X3dtX2xhdGVuY3koZGV2X3ByaXYsICJHZW45IFBsYW5lIiwKPiA+ICsJCQkgICAgICAg ZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LnJhdyk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgYm9v bCBpbGtfdmFsaWRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gQEAgLTM3 NDUsMTIgKzM3NDYsNyBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2VuOyAt LWxldmVsKQo+ID4gIAkJICAgICB7IH0KPiA+Cj4gPiAtCQlsYXRlbmN5ID0gZGV2X3ByaXYtPndt LnNrbF9sYXRlbmN5W2xldmVsXTsKPiA+IC0KPiA+IC0JCWlmIChza2xfbmVlZHNfbWVtb3J5X2J3 X3dhKGludGVsX3N0YXRlKSAmJgo+ID4gLQkJICAgIHBsYW5lLT5iYXNlLnN0YXRlLT5mYi0+bW9k aWZpZXIgPT0KPiA+IC0JCSAgICBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiA+IC0JCQlsYXRl bmN5ICs9IDE1Owo+ID4gKwkJbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5hZGp1 c3RlZFtsZXZlbF07Cj4KPiBUaGUgbGF0ZW5jeSBhZGp1c3RtZW50IGRlcGVuZHMgb24gcGxhbmUg Y29uZmlndXJhdGl1b24gc28gd2UgY2FuJ3QganVzdAo+IHN0aWNrIGludG8gYSBnbG9iYWwgYXJy YXkuCgpEdWghIEluZGVlZC4uLgoKPiBJIHdvdWxkIHN1Z2dlc3QgdGhhdCBmb3IgY2FzZXMgbGlr ZSB0aGlzIHdlCj4gc2hvdWxkIGVpdGhlciBzdHVjayBpbnRvIHRoZSBwbGFuZSBzdGF0ZSBhbmQg ZHVtcCBpdCBvdXQgYWxvbmdzaWRlIHRoZQo+IHJlc3QgKGlmIHdlIGhhZCBkZWNlbnQgcGxhbmUg c3RhdGUgZHVtcHMuLi4gYXMgdXN1YWwgSSBoYXZlIGEgYnJhbmNoCj4gc29tZXdoZXJlIHRoYXQg Y29udmVydHMgdXMgb3ZlciB0byB0aGUgYXRvbWljIHN0YXRlIGR1bXAgZnJhbWV3b3JrKSwgb3IK PiB3ZSBqdXN0IGhhdmUgYSBkZWJ1ZyBwcmludCB3aGVuIGNvbXB1dGluZyB0aGUgdGhpbmcuCgpv biBkZWJ1ZyBzaWRlIGEgZGVidWcgbWVzc2FnZSBpcyBvay4KCkJ1dCBJIHNlZSBvdGhlciBidWdz IG9uIHRoZSBjdXJyZW50IGNvZGU6CgpTQUdWIGFkanVzdGVkIGxhdGVuY3kgaXMgbWlzc2luZyBz b21lIGNhc2VzIHRoYXQgd2UgY29uc2lkZXIgZm9yIGxhdGVuY3krKwpvbiBwbGFuZSBjYWxjdWxh dGlvbi4KClNvIEkgdGhvdWdodCB0aGF0IGZvciB0aGlzIHdlIGNvdWxkIHNpbXBseSBoYXZlIGFu IHVuaWZpZWQgZnVuY3Rpb24uCgpCdXQgYWxzbyBJJ20gbm90IHN1cmUgaWYgdGhpcyB3aWxsIGFj dHVhbGx5IGJlIGVmZmVjdGl2ZS4gSSBkb24ndCBiZWxpZXZlCndlIGFyZSBleGVjdXRpbmcgdGhl IGRpc2FibGUgc2VxdWVuY2UgYXMgZXhwZWN0ZWQgd2hlbiBzb21lIHBsYW5lIGhhcyBsYXRlbmN5 IGJlbG93CnRoYXQgdGhyZXNoaG9sZC4KClNvLCBtYXliZSBhZGQgdGhpcyB1bmlmaWVkIGZ1bmN0 aW9uIGJ1dCBhbHNvIG9uIGF0b21pY19jb21taXRfdGFpbCB3ZSBkbyBtb3JlIG9mCiAgaWYgKCFp bnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICBpbnRl bF9kaXNhYmxlX3NhZ3YoZGV2X3ByaXYpOwoKbm90IG9ubHkgb24gZnVsbCBtb2Rlc2V0Li4uCgpt YXliZSBzb21ldGhpbmcgbGlrZToKICBpZiAoaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0YXRlKSkg ewogICAgIGlmIChkaXNhYmxlZCkgaW50ZWxfZW5hYmxlX3NhZ3YoKQogIH0gZWxzZSB7CiAgICBp ZiAoZW5hYmxlZCkgaW50ZWxfZGlzYWJsZV9zYWd2KCkKICB9Cgo/ISA6LwoKSSByZWFsbHkgYmVs aWV2ZSB3ZSBjYW4gYmUgc21hcnRlciB0aGVyZS4uLiBJJ20ganVzdCBvdXQgb2YgZ29vZCBpZGVh cy4KCj4KPiA+Cj4gPiAgCQkvKgo+ID4gIAkJICogSWYgYW55IG9mIHRoZSBwbGFuZXMgb24gdGhp cyBwaXBlIGRvbid0IGVuYWJsZSB3bSBsZXZlbHMgdGhhdAo+ID4gQEAgLTQ1MDMsNyArNDQ5OSw3 IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGlu dCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiArc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCj4gPiAgCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0 YXRlLAo+ID4gIAkJCQl1aW50MTZfdCBkZGJfYWxsb2NhdGlvbiwKPiA+IEBAIC00NTE0LDcgKzQ1 MTAsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQkJYm9vbCAqZW5hYmxlZCAvKiBvdXQgKi8p Cj4gPiAgewo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAmaW50 ZWxfcHN0YXRlLT5iYXNlOwo+ID4gLQl1aW50MzJfdCBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNr bF9sYXRlbmN5W2xldmVsXTsKPiA+ICsJdWludDE2X3QgbGF0ZW5jeSA9IGRldl9wcml2LT53bS5z a2xfbGF0ZW5jeS5yYXdbbGV2ZWxdOwo+ID4gIAl1aW50X2ZpeGVkXzE2XzE2X3QgbWV0aG9kMSwg bWV0aG9kMjsKPiA+ICAJdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsKPiA+ICAJ dWludDMyX3QgcmVzX2Jsb2NrcywgcmVzX2xpbmVzOwo+ID4gQEAgLTQ1MzgsMTEgKzQ1MzQsMTQg QEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCWlmIChhcHBseV9tZW1vcnlfYndfd2EgJiYgd3AtPnhf dGlsZWQpCj4gPiAgCQlsYXRlbmN5ICs9IDE1Owo+ID4KPiA+IC0JbWV0aG9kMSA9IHNrbF93bV9t ZXRob2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKPiA+IC0JCQkJIHdwLT5jcHAs IGxhdGVuY3ksIHdwLT5kYnVmX2Jsb2NrX3NpemUpOwo+ID4gKwlkZXZfcHJpdi0+d20uc2tsX2xh dGVuY3kuYWRqdXN0ZWRbbGV2ZWxdID0gbGF0ZW5jeTsKPiA+ICsKPiA+ICsJbWV0aG9kMSA9IHNr bF93bV9tZXRob2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwgd3AtPmNwcCwKPiA+ ICsJCQkJIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5hZGp1c3RlZFtsZXZlbF0sCj4gPiArCQkJ CSB3cC0+ZGJ1Zl9ibG9ja19zaXplKTsKPiA+ICAJbWV0aG9kMiA9IHNrbF93bV9tZXRob2QyKHdw LT5wbGFuZV9waXhlbF9yYXRlLAo+ID4gIAkJCQkgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19odG90YWwsCj4gPiAtCQkJCSBsYXRlbmN5LAo+ID4gKwkJCQkgZGV2X3ByaXYtPndtLnNr bF9sYXRlbmN5LmFkanVzdGVkW2xldmVsXSwKPiA+ICAJCQkJIHdwLT5wbGFuZV9ibG9ja3NfcGVy X2xpbmUpOwo+ID4KPiA+ICAJaWYgKHdwLT55X3RpbGVkKSB7Cj4gPiBAQCAtNDU1NSw3ICs0NTU0 LDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQllbHNlIGlmIChkZGJfYWxsb2NhdGlvbiA+PQo+ ID4gIAkJCSBmaXhlZDE2X3RvX3UzMl9yb3VuZF91cCh3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5l KSkKPiA+ICAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtaW5fZml4ZWQxNihtZXRob2QxLCBtZXRob2Qy KTsKPiA+IC0JCWVsc2UgaWYgKGxhdGVuY3kgPj0gd3AtPmxpbmV0aW1lX3VzKQo+ID4gKwkJZWxz ZSBpZiAoZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LmFkanVzdGVkW2xldmVsXSA+PSB3cC0+bGlu ZXRpbWVfdXMpCj4gPiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWluX2ZpeGVkMTYobWV0aG9kMSwg bWV0aG9kMik7Cj4gPiAgCQllbHNlCj4gPiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWV0aG9kMTsK PiA+IEBAIC00NjM0LDcgKzQ2MzMsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dt KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICB9Cj4gPgo+ID4g IHN0YXRpYyBpbnQKPiA+IC1za2xfY29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gK3NrbF9jb21wdXRlX3dtX2xldmVscyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpkZGIsCj4gPiAgCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+ID4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9w c3RhdGUsCj4gPiBAQCAtNDc1Niw3ICs0NzU1LDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGlw ZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gIHsKPiA+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gPiAgCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9ICZjc3RhdGUtPmJhc2U7Cj4gPiAtCWNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gIAlzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq cHN0YXRlOwo+ID4gIAlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKPiA+IC0tCj4gPiAyLjEzLjYK PiA+Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKPgo+IC0tCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RDCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=