From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Explicit Raw and Adjusted WM latencies. Date: Wed, 21 Feb 2018 18:26:23 +0200 Message-ID: <20180221162623.GR5453@intel.com> References: <20180221015147.31859-1-rodrigo.vivi@intel.com> <20180221130930.GK5453@intel.com> <20180221155312.GM27433@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 04DD86E83B for ; Wed, 21 Feb 2018 16:26:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180221155312.GM27433@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, Ashar Shaikh List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMDc6NTM6MTJBTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IE9uIFdlZCwgRmViIDIxLCAyMDE4IGF0IDAzOjA5OjMwUE0gKzAyMDAsIFZpbGxlIFN5 cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgRmViIDIwLCAyMDE4IGF0IDA1OjUxOjQ3UE0gLTA4 MDAsIFJvZHJpZ28gVml2aSB3cm90ZToKPiA+ID4gQ3VycmVudCBjb2RlIGhhcyBzb21lIGxpbWl0 YXRpb25zOgo+ID4gPgo+ID4gPiAxLiBkZWJ1Z2ZzIG9ubHkgc2hvd3MgcmF3IGxhdGVuY3kgd2Ug cmVhZCBmcm9tIFBDT0RFLAo+ID4gPiBub3QgdGhlIG9uZXMgd2UgYXJlIGNvbmZpZ3VyaW5nLgo+ ID4gPgo+ID4gPiAyLiBXaGVuIGRldGVybWluaW5nIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgd2Ug b25seQo+ID4gPiBhcHBseSBhZGp1c3RlZCB3YSwgYnV0IHdlIGRvbid0IGFwcGx5IHRoZSBJUEMg b25lLgo+ID4gPiBTbyB0aGVyZSBpcyB0aGUgcmlzayBvZiBlbmFibGluZyBTQUdWIHdoZW4gd2Ug c2hvdWxkCj4gPiA+IGFjdHVhbGx5IGRpc2FibGUgaXQuCj4gPiA+Cj4gPiA+IENjOiBNYWhlc2gg S3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+ID4gPiBDYzogQXNoYXIgU2hhaWtoIDxh emhhci5zaGFpa2hAaW50ZWwuY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCA0OCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICA3ICsr KystLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgfCAzMSArKysr KysrKysrKystLS0tLS0tLS0tLS0KPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9u cygrKSwgNDMgZGVsZXRpb25zKC0pCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gPiA+IGluZGV4IGYyNjBiYjM5ZDczMy4uOTRmY2IwMzYwYjE0IDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiBAQCAtMzY2NCw3ICszNjY0 LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9kaXNwbGF5cG9y dF90ZXN0X3R5cGVfZm9wcyA9IHsKPiA+ID4gIAkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNlCj4g PiA+ICB9Owo+ID4gPgo+ID4gPiAtc3RhdGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBz ZXFfZmlsZSAqbSwgY29uc3QgdWludDE2X3Qgd21bOF0pCj4gPiA+ICtzdGF0aWMgdm9pZCB3bV9s YXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSwKPiA+ ID4gKwkJCSAgICBjb25zdCBjaGFyICpoZWFkZXIpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiA+ID4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gPiA+IEBAIC0zNjgwLDYgKzM2ODEsOSBA QCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1 aW50MTZfdCB3bVs4XSkKPiA+ID4gIAllbHNlCj4gPiA+ICAJCW51bV9sZXZlbHMgPSBpbGtfd21f bWF4X2xldmVsKGRldl9wcml2KSArIDE7Cj4gPiA+Cj4gPiA+ICsJaWYgKGhlYWRlcikKPiA+ID4g KwkJc2VxX3ByaW50ZihtLCAiJXNcbiIsIGhlYWRlcik7Cj4gPiA+ICsKPiA+ID4gIAlkcm1fbW9k ZXNldF9sb2NrX2FsbChkZXYpOwo+ID4gPgo+ID4gPiAgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8 IG51bV9sZXZlbHM7IGxldmVsKyspIHsKPiA+ID4gQEAgLTM3MDcsMTQgKzM3MTEsMTIgQEAgc3Rh dGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgdWludDE2 X3Qgd21bOF0pCj4gPiA+ICBzdGF0aWMgaW50IHByaV93bV9sYXRlbmN5X3Nob3coc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4gPiA+IC0JY29uc3QgdWludDE2X3QgKmxh dGVuY2llczsKPiA+ID4gLQo+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4g PiA+IC0JCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiA+ID4gLQllbHNl Cj4gPiA+IC0JCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeTsKPiA+ID4KPiA+ ID4gLQl3bV9sYXRlbmN5X3Nob3cobSwgbGF0ZW5jaWVzKTsKPiA+ID4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KSB7Cj4gPiA+ICsJCXdtX2xhdGVuY3lfc2hvdyhtLCBkZXZfcHJpdi0+ d20uc2tsX2xhdGVuY3kucmF3LCAiUmF3Iik7Cj4gPiA+ICsJCXdtX2xhdGVuY3lfc2hvdyhtLCBk ZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kuYWRqdXN0ZWQsICJBZGp1c3RlZCIpOwo+ID4gPiArCX0g ZWxzZQo+ID4gPiArCQl3bV9sYXRlbmN5X3Nob3cobSwgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5 LCBOVUxMKTsKPiA+ID4KPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4gQEAgLTM3MjIs MTQgKzM3MjQsMTIgQEAgc3RhdGljIGludCBwcmlfd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ID4gIHN0YXRpYyBpbnQgc3ByX3dtX2xhdGVuY3lfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiA+ID4gLQljb25zdCB1 aW50MTZfdCAqbGF0ZW5jaWVzOwo+ID4gPiAtCj4gPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkKPiA+ID4gLQkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5Owo+ ID4gPiAtCWVsc2UKPiA+ID4gLQkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5 Owo+ID4gPgo+ID4gPiAtCXdtX2xhdGVuY3lfc2hvdyhtLCBsYXRlbmNpZXMpOwo+ID4gPiArCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiA+ID4gKwkJd21fbGF0ZW5jeV9zaG93KG0s IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5yYXcsICJSYXciKTsKPiA+ID4gKwkJd21fbGF0ZW5j eV9zaG93KG0sIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5hZGp1c3RlZCwgIkFkanVzdGVkIik7 Cj4gPiA+ICsJfSBlbHNlCj4gPiA+ICsJCXdtX2xhdGVuY3lfc2hvdyhtLCBkZXZfcHJpdi0+d20u c3ByX2xhdGVuY3ksIE5VTEwpOwo+ID4gPgo+ID4gPiAgCXJldHVybiAwOwo+ID4gPiAgfQo+ID4g PiBAQCAtMzczNywxNCArMzczNywxMiBAQCBzdGF0aWMgaW50IHNwcl93bV9sYXRlbmN5X3Nob3co c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gPiAgc3RhdGljIGludCBjdXJfd21f bGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ID4gIHsKPiA+ ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ID4g PiAtCWNvbnN0IHVpbnQxNl90ICpsYXRlbmNpZXM7Cj4gPiA+IC0KPiA+ID4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+ID4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2ts X2xhdGVuY3k7Cj4gPiA+IC0JZWxzZQo+ID4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20u Y3VyX2xhdGVuY3k7Cj4gPiA+Cj4gPiA+IC0Jd21fbGF0ZW5jeV9zaG93KG0sIGxhdGVuY2llcyk7 Cj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ID4gPiArCQl3bV9sYXRl bmN5X3Nob3cobSwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LnJhdywgIlJhdyIpOwo+ID4gPiAr CQl3bV9sYXRlbmN5X3Nob3cobSwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LmFkanVzdGVkLCAi QWRqdXN0ZWQiKTsKPiA+ID4gKwl9IGVsc2UKPiA+ID4gKwkJd21fbGF0ZW5jeV9zaG93KG0sIGRl dl9wcml2LT53bS5jdXJfbGF0ZW5jeSwgTlVMTCk7Cj4gPiA+Cj4gPiA+ICAJcmV0dXJuIDA7Cj4g PiA+ICB9Cj4gPiA+IEBAIC0zODMzLDcgKzM4MzEsNyBAQCBzdGF0aWMgc3NpemVfdCBwcmlfd21f bGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYs Cj4gPiA+ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiA+ID4KPiA+ID4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KQo+ID4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xh dGVuY3k7Cj4gPiA+ICsJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5yYXc7 Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVu Y3k7Cj4gPiA+Cj4gPiA+IEBAIC0zODQ4LDcgKzM4NDYsNyBAQCBzdGF0aWMgc3NpemVfdCBzcHJf d21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVi dWYsCj4gPiA+ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiA+ID4KPiA+ID4gIAlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+ID4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2ts X2xhdGVuY3k7Cj4gPiA+ICsJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeS5y YXc7Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc3ByX2xh dGVuY3k7Cj4gPiA+Cj4gPiA+IEBAIC0zODYzLDcgKzM4NjEsNyBAQCBzdGF0aWMgc3NpemVfdCBj dXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIg KnVidWYsCj4gPiA+ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiA+ID4KPiA+ID4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4gPiAtCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20u c2tsX2xhdGVuY3k7Cj4gPiA+ICsJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5j eS5yYXc7Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uY3Vy X2xhdGVuY3k7Cj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBpbmRleCA0 OTBmZjA0MWZiMWUuLjY5NjliYmIyMDNiYyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPiA+IEBAIC0yMTM2LDExICsyMTM2LDE0IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKPiA+ID4gIAkJLyogY3Vyc29yICovCj4gPiA+ICAJCXVpbnQxNl90IGN1cl9sYXRlbmN5 WzVdOwo+ID4gPiAgCQkvKgo+ID4gPiAtCQkgKiBSYXcgd2F0ZXJtYXJrIG1lbW9yeSBsYXRlbmN5 IHZhbHVlcwo+ID4gPiArCQkgKiBXYXRlcm1hcmsgbWVtb3J5IGxhdGVuY3kgdmFsdWVzCj4gPiA+ ICAJCSAqIGZvciBTS0wgZm9yIGFsbCA4IGxldmVscwo+ID4gPiAgCQkgKiBpbiAxdXMgdW5pdHMu Cj4gPiA+ICAJCSAqLwo+ID4gPiAtCQl1aW50MTZfdCBza2xfbGF0ZW5jeVs4XTsKPiA+ID4gKwkJ c3RydWN0IHsKPiA+ID4gKwkJCXVpbnQxNl90IHJhd1s4XTsKPiA+ID4gKwkJCXVpbnQxNl90IGFk anVzdGVkWzhdOwo+ID4gPiArCQl9IHNrbF9sYXRlbmN5Owo+ID4gPgo+ID4gPiAgCQkvKiBjdXJy ZW50IGhhcmR3YXJlIHN0YXRlICovCj4gPiA+ICAJCXVuaW9uIHsKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gPiA+IGluZGV4IGEwYTZiNGI3YzQ3Yi4uNzhiNTJlNWExZjhlIDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gQEAgLTMwMzAsOCArMzAzMCw5IEBA IHN0YXRpYyB2b2lkIGlsa19zZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+ID4KPiA+ID4gIHN0YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9sYXRlbmN5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIHsKPiA+ID4gLQlpbnRl bF9yZWFkX3dtX2xhdGVuY3koZGV2X3ByaXYsIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeSk7Cj4g PiA+IC0JaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXZfcHJpdiwgIkdlbjkgUGxhbmUiLCBkZXZf cHJpdi0+d20uc2tsX2xhdGVuY3kpOwo+ID4gPiArCWludGVsX3JlYWRfd21fbGF0ZW5jeShkZXZf cHJpdiwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LnJhdyk7Cj4gPiA+ICsJaW50ZWxfcHJpbnRf d21fbGF0ZW5jeShkZXZfcHJpdiwgIkdlbjkgUGxhbmUiLAo+ID4gPiArCQkJICAgICAgIGRldl9w cml2LT53bS5za2xfbGF0ZW5jeS5yYXcpOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAgc3RhdGljIGJv b2wgaWxrX3ZhbGlkYXRlX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gQEAg LTM3NDUsMTIgKzM3NDYsNyBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ICAJCSAgICAgIXdtLT53bVtsZXZlbF0ucGxhbmVf ZW47IC0tbGV2ZWwpCj4gPiA+ICAJCSAgICAgeyB9Cj4gPiA+Cj4gPiA+IC0JCWxhdGVuY3kgPSBk ZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwo+ID4gPiAtCj4gPiA+IC0JCWlmIChza2xf bmVlZHNfbWVtb3J5X2J3X3dhKGludGVsX3N0YXRlKSAmJgo+ID4gPiAtCQkgICAgcGxhbmUtPmJh c2Uuc3RhdGUtPmZiLT5tb2RpZmllciA9PQo+ID4gPiAtCQkgICAgSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQpCj4gPiA+IC0JCQlsYXRlbmN5ICs9IDE1Owo+ID4gPiArCQlsYXRlbmN5ID0gZGV2X3By aXYtPndtLnNrbF9sYXRlbmN5LmFkanVzdGVkW2xldmVsXTsKPiA+Cj4gPiBUaGUgbGF0ZW5jeSBh ZGp1c3RtZW50IGRlcGVuZHMgb24gcGxhbmUgY29uZmlndXJhdGl1b24gc28gd2UgY2FuJ3QganVz dAo+ID4gc3RpY2sgaW50byBhIGdsb2JhbCBhcnJheS4KPiAKPiBEdWghIEluZGVlZC4uLgo+IAo+ ID4gSSB3b3VsZCBzdWdnZXN0IHRoYXQgZm9yIGNhc2VzIGxpa2UgdGhpcyB3ZQo+ID4gc2hvdWxk IGVpdGhlciBzdHVjayBpbnRvIHRoZSBwbGFuZSBzdGF0ZSBhbmQgZHVtcCBpdCBvdXQgYWxvbmdz aWRlIHRoZQo+ID4gcmVzdCAoaWYgd2UgaGFkIGRlY2VudCBwbGFuZSBzdGF0ZSBkdW1wcy4uLiBh cyB1c3VhbCBJIGhhdmUgYSBicmFuY2gKPiA+IHNvbWV3aGVyZSB0aGF0IGNvbnZlcnRzIHVzIG92 ZXIgdG8gdGhlIGF0b21pYyBzdGF0ZSBkdW1wIGZyYW1ld29yayksIG9yCj4gPiB3ZSBqdXN0IGhh dmUgYSBkZWJ1ZyBwcmludCB3aGVuIGNvbXB1dGluZyB0aGUgdGhpbmcuCj4gCj4gb24gZGVidWcg c2lkZSBhIGRlYnVnIG1lc3NhZ2UgaXMgb2suCj4gCj4gQnV0IEkgc2VlIG90aGVyIGJ1Z3Mgb24g dGhlIGN1cnJlbnQgY29kZToKPiAKPiBTQUdWIGFkanVzdGVkIGxhdGVuY3kgaXMgbWlzc2luZyBz b21lIGNhc2VzIHRoYXQgd2UgY29uc2lkZXIgZm9yIGxhdGVuY3krKwo+IG9uIHBsYW5lIGNhbGN1 bGF0aW9uLgo+IAo+IFNvIEkgdGhvdWdodCB0aGF0IGZvciB0aGlzIHdlIGNvdWxkIHNpbXBseSBo YXZlIGFuIHVuaWZpZWQgZnVuY3Rpb24uCj4gCj4gQnV0IGFsc28gSSdtIG5vdCBzdXJlIGlmIHRo aXMgd2lsbCBhY3R1YWxseSBiZSBlZmZlY3RpdmUuIEkgZG9uJ3QgYmVsaWV2ZQo+IHdlIGFyZSBl eGVjdXRpbmcgdGhlIGRpc2FibGUgc2VxdWVuY2UgYXMgZXhwZWN0ZWQgd2hlbiBzb21lIHBsYW5l IGhhcyBsYXRlbmN5IGJlbG93Cj4gdGhhdCB0aHJlc2hob2xkLgo+IAo+IFNvLCBtYXliZSBhZGQg dGhpcyB1bmlmaWVkIGZ1bmN0aW9uIGJ1dCBhbHNvIG9uIGF0b21pY19jb21taXRfdGFpbCB3ZSBk byBtb3JlIG9mCj4gICBpZiAoIWludGVsX2Nhbl9lbmFibGVfc2FndihzdGF0ZSkpCj4gICAgICAg ICAgICAgICAgICAgICAgICAgaW50ZWxfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsKPiAKPiBub3Qg b25seSBvbiBmdWxsIG1vZGVzZXQuLi4KPiAKPiBtYXliZSBzb21ldGhpbmcgbGlrZToKPiAgIGlm IChpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpKSB7Cj4gICAgICBpZiAoZGlzYWJsZWQpIGlu dGVsX2VuYWJsZV9zYWd2KCkKPiAgIH0gZWxzZSB7Cj4gICAgIGlmIChlbmFibGVkKSBpbnRlbF9k aXNhYmxlX3NhZ3YoKQo+ICAgfQo+IAo+ID8hIDovCgpZZWFoLCBzZWVtcyBpdCBzaG91bGQgYmUg ZG9uZSBmcm9tIHByZV9wbGFuZV91cGRhdGUgYmFzaWNhbGx5LiBPciBiZWZvcmUKaXQgc2luY2Ug aXQncyBnbG9iYWwgdGhpbmcuIE5vdCBlbnRpcmVseSBoYXBweSB3aXRoIHRoZSBmYWN0IHRoYXQg c2FndgppcyBkb25lIHRvdGFsbHkgZGlmZmVyZW50bHkgdG8gY3hzciBldmVuIHRob3VnaCB0aGV5 J3JlIGtpbmRhIHRoZSBzYW1lCnRoaW5nIChjeHNyIGRvZXMgY2hhbmdlIHRoZSBhY3R1YWwgRklG TyBzaXplcyBvbiBzb21lIHBsYXRmb3JtcyBzbyBpdCdzCm5vdCBxdWl0ZSBhIDEwMCUgbWF0Y2gg dGhvdWdoKS4KCldlIHByb2JhYmx5IHNob3VsZCBwcmUtY29tcHV0ZSB0aGUgInNhZ3Y/IHllcy9u byIgYW5zd2VyIGZvciBlYWNoIGNydGMKKGFuZC9vciBwbGFuZT8pIGR1cmluZyB0aGUgbm9ybWFs IHdtIGNvbXB1dGUsIHRoZW4gY2FuX2VuYWJsZV9zYWd2KCkKc2hvdWxkIHR1cm4gaW50byBzb21l dGhpbmcgcXVpdGUgdHJpdmlhbC4KCj4gCj4gPgo+ID4gPgo+ID4gPiAgCQkvKgo+ID4gPiAgCQkg KiBJZiBhbnkgb2YgdGhlIHBsYW5lcyBvbiB0aGlzIHBpcGUgZG9uJ3QgZW5hYmxlIHdtIGxldmVs cyB0aGF0Cj4gPiA+IEBAIC00NTAzLDcgKzQ0OTksNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9w YXJhbXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCXJl dHVybiAwOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAtc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFu ZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICtzdGF0 aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ID4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiAg CQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAo+ID4gPiAg CQkJCXVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAo+ID4gPiBAQCAtNDUxNCw3ICs0NTEwLDcgQEAg c3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJYm9vbCAqZW5hYmxlZCAvKiBvdXQgKi8pCj4gPiA+ ICB7Cj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gJmludGVs X3BzdGF0ZS0+YmFzZTsKPiA+ID4gLQl1aW50MzJfdCBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNr bF9sYXRlbmN5W2xldmVsXTsKPiA+ID4gKwl1aW50MTZfdCBsYXRlbmN5ID0gZGV2X3ByaXYtPndt LnNrbF9sYXRlbmN5LnJhd1tsZXZlbF07Cj4gPiA+ICAJdWludF9maXhlZF8xNl8xNl90IG1ldGhv ZDEsIG1ldGhvZDI7Cj4gPiA+ICAJdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsK PiA+ID4gIAl1aW50MzJfdCByZXNfYmxvY2tzLCByZXNfbGluZXM7Cj4gPiA+IEBAIC00NTM4LDEx ICs0NTM0LDE0IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCWlmIChhcHBseV9tZW1vcnlfYndf d2EgJiYgd3AtPnhfdGlsZWQpCj4gPiA+ICAJCWxhdGVuY3kgKz0gMTU7Cj4gPiA+Cj4gPiA+IC0J bWV0aG9kMSA9IHNrbF93bV9tZXRob2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwK PiA+ID4gLQkJCQkgd3AtPmNwcCwgbGF0ZW5jeSwgd3AtPmRidWZfYmxvY2tfc2l6ZSk7Cj4gPiA+ ICsJZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5LmFkanVzdGVkW2xldmVsXSA9IGxhdGVuY3k7Cj4g PiA+ICsKPiA+ID4gKwltZXRob2QxID0gc2tsX3dtX21ldGhvZDEoZGV2X3ByaXYsIHdwLT5wbGFu ZV9waXhlbF9yYXRlLCB3cC0+Y3BwLAo+ID4gPiArCQkJCSBkZXZfcHJpdi0+d20uc2tsX2xhdGVu Y3kuYWRqdXN0ZWRbbGV2ZWxdLAo+ID4gPiArCQkJCSB3cC0+ZGJ1Zl9ibG9ja19zaXplKTsKPiA+ ID4gIAltZXRob2QyID0gc2tsX3dtX21ldGhvZDIod3AtPnBsYW5lX3BpeGVsX3JhdGUsCj4gPiA+ ICAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAo+ID4gPiAtCQkJ CSBsYXRlbmN5LAo+ID4gPiArCQkJCSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kuYWRqdXN0ZWRb bGV2ZWxdLAo+ID4gPiAgCQkJCSB3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKTsKPiA+ID4KPiA+ ID4gIAlpZiAod3AtPnlfdGlsZWQpIHsKPiA+ID4gQEAgLTQ1NTUsNyArNDU1NCw3IEBAIHN0YXRp YyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gPiAgCQllbHNlIGlmIChkZGJfYWxsb2NhdGlvbiA+PQo+ID4gPiAgCQkJ IGZpeGVkMTZfdG9fdTMyX3JvdW5kX3VwKHdwLT5wbGFuZV9ibG9ja3NfcGVyX2xpbmUpKQo+ID4g PiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWluX2ZpeGVkMTYobWV0aG9kMSwgbWV0aG9kMik7Cj4g PiA+IC0JCWVsc2UgaWYgKGxhdGVuY3kgPj0gd3AtPmxpbmV0aW1lX3VzKQo+ID4gPiArCQllbHNl IGlmIChkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kuYWRqdXN0ZWRbbGV2ZWxdID49IHdwLT5saW5l dGltZV91cykKPiA+ID4gIAkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2KG1ldGhvZDEs IG1ldGhvZDIpOwo+ID4gPiAgCQllbHNlCj4gPiA+ICAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRo b2QxOwo+ID4gPiBAQCAtNDYzNCw3ICs0NjMzLDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9w bGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICB9 Cj4gPiA+Cj4gPiA+ICBzdGF0aWMgaW50Cj4gPiA+IC1za2xfY29tcHV0ZV93bV9sZXZlbHMoY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiArc2tsX2NvbXB1dGVf d21fbGV2ZWxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAkJICAg ICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+ID4gPiAgCQkgICAgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKPiA+ID4gQEAgLTQ3NTYsNyArNDc1NSw3IEBA IHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSwKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3N0YXRlLT5i YXNlLmNydGMtPmRldjsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUg PSAmY3N0YXRlLT5iYXNlOwo+ID4gPiAtCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiA+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwo+ID4gPiAgCXN0 cnVjdCBza2xfcGxhbmVfd20gKndtOwo+ID4gPiAtLQo+ID4gPiAyLjEzLjYKPiA+ID4KPiA+ID4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cj4gPgo+ID4gLS0KPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RDCgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK