From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH RESEND 9/9] drm/i915: set proper N/M in modeset Date: Wed, 19 Oct 2016 18:08:37 +0300 Message-ID: <87wph4l6kq.fsf@intel.com> References: <356b7b46bb602c250afcbf003afa720c998b3deb.1476111629.git.jani.nikula@intel.com> <96A12704CE18D347B625EE2D4A099D194FA43B07@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0CF336E023 for ; Wed, 19 Oct 2016 15:09:25 +0000 (UTC) In-Reply-To: <96A12704CE18D347B625EE2D4A099D194FA43B07@SHSMSX103.ccr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yang, Libin" , "Lin, Mengdong" , "intel-gfx@lists.freedesktop.org" Cc: "Zhang, Keqiao" , "libin.yang@linux.intel.com" , "Pandiyan, Dhinakaran" , "Zhao, Juan J" List-Id: intel-gfx@lists.freedesktop.org ClNvcnJ5IGl0J3MgdGFrZW4gbWUgZm9yZXZlciB0byBnZXQgYmFjayB0byB0aGlzLiBTb21lIGNv bW1lbnRzIGlubGluZS4KCkJSLApKYW5pLgoKT24gV2VkLCAxMiBPY3QgMjAxNiwgIllhbmcsIExp YmluIiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+IHdyb3RlOgo+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+PiBGcm9tOiBJbnRlbC1nZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0 cy5mcmVlZGVza3RvcC5vcmddIE9uIEJlaGFsZiBPZgo+PiBMaW4sIE1lbmdkb25nCj4+IFNlbnQ6 IFdlZG5lc2RheSwgT2N0b2JlciAxMiwgMjAxNiAxMDo0NiBBTQo+PiBUbzogTmlrdWxhLCBKYW5p IDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+OyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4+IENjOiBOaWt1bGEsIEphbmkgPGphbmkubmlrdWxhQGludGVsLmNvbT47IGxpYmluLnlhbmdA bGludXguaW50ZWwuY29tOwo+PiBQYW5kaXlhbiwgRGhpbmFrYXJhbiA8ZGhpbmFrYXJhbi5wYW5k aXlhbkBpbnRlbC5jb20+Cj4+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggUkVTRU5E IDkvOV0gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9NIGluCj4+IG1vZGVzZXQKPj4gCj4+IAo+PiAK Pj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiA+IEZyb206IEludGVsLWdmeCBbbWFp bHRvOmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24KPj4gPiBCZWhh bGYgT2YgSmFuaSBOaWt1bGEKPj4gPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTAsIDIwMTYgMTE6 MDQgUE0KPj4gPiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiA+IENjOiBO aWt1bGEsIEphbmkgPGphbmkubmlrdWxhQGludGVsLmNvbT47IGxpYmluLnlhbmdAbGludXguaW50 ZWwuY29tOwo+PiA+IFBhbmRpeWFuLCBEaGluYWthcmFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGlu dGVsLmNvbT4KPj4gPiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggUkVTRU5EIDkvOV0gZHJt L2k5MTU6IHNldCBwcm9wZXIgTi9NIGluCj4+ID4gbW9kZXNldAo+PiA+Cj4+ID4gV2hlbiBtb2Rl c2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQgdG8gc29tZSBzcGVjaWFsIHZhbHVlcyBp biBEUAo+PiA+IG1vZGUsIHRoZSBOL00gbmVlZCB0byBiZSBzZXQgbWFudWFsbHkgaWYgYXVkaW8g aXMgcGxheWluZy4gT3RoZXJ3aXNlCj4+ID4gdGhlIGZpcnN0IHNldmVyYWwgc2Vjb25kcyBtYXkg YmUgc2lsZW50IGluIGF1ZGlvIHBsYXliYWNrLgo+PiA+Cj4+ID4gVGhlIHJlbGF0aW9uc2hpcCBv ZiBNYXVkIGFuZCBOYXVkIGlzIGV4cHJlc3NlZCBpbiB0aGUgZm9sbG93aW5nIGVxdWF0aW9uOgo+ PiA+IE1hdWQvTmF1ZCA9IDUxMiAqIGZzIC8gZl9MU19DbGsKPj4gPgo+PiA+IFBsZWFzZSByZWZl ciBWRVNBIERpc3BsYXlQb3J0IFN0YW5kYXJkIHNwZWMgZm9yIGRldGFpbHMuCj4+ID4KPj4gPiBT aWduZWQtb2ZmLWJ5OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT4KPj4g PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+PiA+ IC0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgIHwgICA3ICsrKwo+ PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgMTAwCj4+ID4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+PiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEw NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggaW5kZXggNTk1ZDE5NmY3NTNmLi44ZDlkYmM3ZDViMzIKPj4gPiAxMDA2NDQK Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiA+IEBAIC03MzU5LDYgKzczNTksMTMgQEAg ZW51bSB7Cj4+ID4gICNkZWZpbmUgX0hTV19BVURfTUlTQ19DVFJMX0IJCTB4NjUxMTAKPj4gPiAg I2RlZmluZSBIU1dfQVVEX01JU0NfQ1RSTChwaXBlKQkJX01NSU9fUElQRShwaXBlLAo+PiA+IF9I U1dfQVVEX01JU0NfQ1RSTF9BLCBfSFNXX0FVRF9NSVNDX0NUUkxfQikKPj4gPgo+PiA+ICsjZGVm aW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BCQkweDY1MDI4Cj4+ID4gKyNkZWZpbmUgX0hTV19B VURfTV9DVFNfRU5BQkxFX0IJCTB4NjUxMjgKPj4gPiArI2RlZmluZSBIU1dfQVVEX01fQ1RTX0VO QUJMRShwaXBlKQlfTU1JT19QSVBFKHBpcGUsCj4+ID4gX0hTV19BVURfTV9DVFNfRU5BQkxFX0Es IF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9CKQo+PiA+ICsjZGVmaW5lICAgQVVEX01fQ1RTX01fVkFM VUVfSU5ERVgJKDEgPDwgMjEpCj4+ID4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9QUk9HX0VOQUJM RQkoMSA8PCAyMCkKPj4gPiArI2RlZmluZSAgIEFVRF9DT05GSUdfTV9NQVNLCQkweGZmZmZmCj4+ IAo+PiBUaGUgbGFzdCBsaW5lIGNhdXNlIG1pc2FsaWdubWVudCBhZnRlciBhcHBseWluZyB0aGUg cGF0Y2guCj4+IAo+PiA+ICsKPj4gPiAgI2RlZmluZSBfSFNXX0FVRF9ESVBfRUxEX0NUUkxfU1Rf QQkweDY1MGI0Cj4+ID4gICNkZWZpbmUgX0hTV19BVURfRElQX0VMRF9DVFJMX1NUX0IJMHg2NTFi NAo+PiA+ICAjZGVmaW5lIEhTV19BVURfRElQX0VMRF9DVFJMKHBpcGUpCV9NTUlPX1BJUEUocGlw ZSwKPj4gPiBfSFNXX0FVRF9ESVBfRUxEX0NUUkxfU1RfQSwgX0hTV19BVURfRElQX0VMRF9DVFJM X1NUX0IpIGRpZmYgLS0KPj4gZ2l0Cj4+ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dWRpby5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ID4gaW5k ZXggODFkZjI5Y2E0OTQ3Li4wYmMyNzAxYjZjOWMgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F1ZGlvLmMKPj4gPiBAQCAtNTcsNiArNTcsNzAgQEAKPj4gPiAgICogc3RydWN0ICZp OTE1X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMgQGF1ZGlvX29wcyBpcyBjYWxsZWQgZnJvbQo+ PiA+IGk5MTUgZHJpdmVyLgo+PiA+ICAgKi8KPj4gPgo+PiA+ICsvKiBEUCBOL00gdGFibGUgKi8K Pj4gPiArI2RlZmluZSBMQ181NDBNIDU0MDAwMAo+PiA+ICsjZGVmaW5lIExDXzI3ME0gMjcwMDAw Cj4+ID4gKyNkZWZpbmUgTENfMTYyTSAxNjIwMDAKPj4gPiArCj4+ID4gK3N0cnVjdCBkcF9hdWRf bl9tIHsKPj4gPiArCWludCBzYW1wbGVfcmF0ZTsKPj4gPiArCWludCBjbG9jazsKPj4gPiArCXUx NiBuOwo+PiA+ICsJdTE2IG07Cj4+ID4gK307Cj4+ID4gKwo+PiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRwX2F1ZF9uX20gZHBfYXVkX25fbVtdID0gewo+PiA+ICsJeyAxOTIwMDAsIExDXzU0ME0s IDU2MjUsIDEwMjQgfSwKPj4gPiArCXsgMTc2NDAwLCBMQ181NDBNLCA5Mzc1LCAxNTY4IH0sCj4+ ID4gKwl7IDk2MDAwLCBMQ181NDBNLCA1NjI1LCA1MTIgfSwKPj4gPiArCXsgODgyMDAsIExDXzU0 ME0sIDkzNzUsIDc4NCB9LAo+PiA+ICsJeyA0ODAwMCwgTENfNTQwTSwgNTYyNSwgMjU2IH0sCj4+ ID4gKwl7IDQ0MTAwLCBMQ181NDBNLCA5Mzc1LCAzOTIgfSwKPj4gPiArCXsgMzIwMDAsIExDXzU0 ME0sIDE2ODc1LCA1MTIgfSwKCkFueSBwYXJ0aWN1bGFyIHJlYXNvbiB0aGVzZSBNL04gdmFsdWVz IGFyZSBoYWxmIG9mIHdoYXQgdGhleSdyZSBpbiB0YWJsZQoyLTEwNCBvZiBEUCAxLjQgc3BlYz8g KEFkbWl0dGVkbHkgdGhlIHRhYmxlIGlzIGFuIGluZm9ybWF0aXZlIGV4YW1wbGUuKQoKPj4gPiAr CXsgMTkyMDAwLCBMQ18yNzBNLCA1NjI1LCAyMDQ4IH0sCj4+ID4gKwl7IDE3NjQwMCwgTENfMjcw TSwgOTM3NSwgMzEzNiB9LAo+PiA+ICsJeyA5NjAwMCwgTENfMjcwTSwgNTYyNSwgMTAyNCB9LAo+ PiA+ICsJeyA4ODIwMCwgTENfMjcwTSwgOTM3NSwgMTU2OCB9LAo+PiA+ICsJeyA0ODAwMCwgTENf MjcwTSwgNTYyNSwgNTEyIH0sCj4+ID4gKwl7IDQ0MTAwLCBMQ18yNzBNLCA5Mzc1LCA3ODQgfSwK Pj4gPiArCXsgMzIwMDAsIExDXzI3ME0sIDE2ODc1LCAxMDI0IH0sCj4+ID4gKwl7IDE5MjAwMCwg TENfMTYyTSwgMzM3NSwgMjA0OCB9LAo+PiA+ICsJeyAxNzY0MDAsIExDXzE2Mk0sIDU2MjUsIDMx MzYgfSwKPj4gPiArCXsgOTYwMDAsIExDXzE2Mk0sIDMzNzUsIDEwMjQgfSwKPj4gPiArCXsgODgy MDAsIExDXzE2Mk0sIDU2MjUsIDE1NjggfSwKPj4gPiArCXsgNDgwMDAsIExDXzE2Mk0sIDMzNzUs IDUxMiB9LAo+PiA+ICsJeyA0NDEwMCwgTENfMTYyTSwgNTYyNSwgNzg0IH0sCj4+ID4gKwl7IDMy MDAwLCBMQ18xNjJNLCAxMDEyNSwgMTAyNCB9LAoKRG8gd2Ugbm90IHN1cHBvcnQgMTI4IG9yIDY0 IGtIeiBhdWRpbz8KCj4+ID4gK307Cj4+ID4gKwo+PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRw X2F1ZF9uX20gKgo+PiA+ICthdWRpb19jb25maWdfZHBfZ2V0X25fbShzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywgaW50IHJhdGUpIHsKPj4gPiArCWludCBpOwo+PiA+ICsKPj4gPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRwX2F1ZF9uX20pOyBpKyspIHsKPj4gPiArCQlpZiAo cmF0ZSA9PSBkcF9hdWRfbl9tW2ldLnNhbXBsZV9yYXRlICYmCj4+ID4gKwkJICAgIGludGVsX2Ny dGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBkcF9hdWRfbl9tW2ldLmNsb2NrKQo+PiA+ICsJCQly ZXR1cm4gJmRwX2F1ZF9uX21baV07Cj4+ID4gKwl9Cj4+ID4gKwo+PiA+ICsJcmV0dXJuIE5VTEw7 Cj4+ID4gK30KPj4gPiArCj4+ID4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2RwX2dldF9tKHN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQKPj4gPiArcmF0ZSkgewo+PiA+ICsJY29u c3Qgc3RydWN0IGRwX2F1ZF9uX20gKm5tID0KPj4gPiBhdWRpb19jb25maWdfZHBfZ2V0X25fbShp bnRlbF9jcnRjLAo+PiA+ICtyYXRlKTsKPj4gPiArCj4+ID4gKwlyZXR1cm4gbm0gPyBubS0+bSA6 IDA7Cj4+ID4gK30KPj4gPiArCj4+ID4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2RwX2dldF9u KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQKPj4gPiArcmF0ZSkgewo+PiA+ICsJ Y29uc3Qgc3RydWN0IGRwX2F1ZF9uX20gKm5tID0KPj4gPiBhdWRpb19jb25maWdfZHBfZ2V0X25f bShpbnRlbF9jcnRjLAo+PiA+ICtyYXRlKTsKPj4gPiArCj4+ID4gKwlyZXR1cm4gbm0gPyBubS0+ biA6IDA7Cj4+ID4gK30KPj4gPiArCj4+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+PiA+ICAJ aW50IGNsb2NrOwo+PiA+ICAJdTMyIGNvbmZpZzsKPj4gPiBAQCAtMjI1LDggKzI4OSwxMCBAQCBo c3dfZHBfYXVkaW9fY29uZmlnX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Ywo+PiA+ICppbnRlbF9j cnRjLCBlbnVtIHBvcnQgcG9ydCwKPj4gPiAgCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUpICB7Cj4+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPj4gPiArCXN0cnVjdCBp OTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJpdi0KPj4gPiA+YXVkaW9fY29tcG9u ZW50Owo+PiA+ICsJaW50IHJhdGUgPSBhY29tcCA/IGFjb21wLT5hdWRfc2FtcGxlX3JhdGVbcG9y dF0gOiAwOwo+PiA+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+PiA+IC0J dTMyIHRtcDsKPj4gPiArCXUzMiB0bXAsIG4sIG07Cj4+ID4KPj4gPiAgCXRtcCA9IEk5MTVfUkVB RChIU1dfQVVEX0NGRyhwaXBlKSk7Cj4+ID4gIAl0bXAgJj0gfkFVRF9DT05GSUdfTl9WQUxVRV9J TkRFWDsKPj4gPiBAQCAtMjM0LDcgKzMwMCwzMCBAQCBoc3dfZHBfYXVkaW9fY29uZmlnX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Ywo+PiA+ICppbnRlbF9jcnRjLCBlbnVtIHBvcnQgcG9ydCwKPj4g PiAgCXRtcCAmPSB+QVVEX0NPTkZJR19OX1BST0dfRU5BQkxFOwo+PiA+ICAJdG1wIHw9IEFVRF9D T05GSUdfTl9WQUxVRV9JTkRFWDsKPj4gPgo+PiA+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ cG9ydF9jbG9jayA9PSBMQ181NDBNIHx8Cj4+ID4gKwkgICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5w b3J0X2Nsb2NrID09IExDXzI3ME0gfHwKPj4gPiArCSAgICBpbnRlbF9jcnRjLT5jb25maWctPnBv cnRfY2xvY2sgPT0gTENfMTYyTSkgewoKQWN0dWFsbHksIHRoaXMgY2hlY2sgY291bGQgYmUgcmVt b3ZlZC4gYXVkaW9fY29uZmlnX2RwX2dldF9uX20gd2lsbAphbHdheXMgcmV0dXJuIDAgaWYgdGhp cyBkb2Vzbid0IGhvbGQuIEJ1dCBub3QgYSBiaWcgZGVhbC4KCj4+ID4gKwkJbiA9IGF1ZGlvX2Nv bmZpZ19kcF9nZXRfbihpbnRlbF9jcnRjLCByYXRlKTsKPj4gPiArCQlpZiAobiAhPSAwKSB7Cj4+ ID4gKwkJCXRtcCAmPSB+QVVEX0NPTkZJR19OX01BU0s7Cj4+ID4gKwkJCXRtcCB8PSBBVURfQ09O RklHX04obik7Cj4+ID4gKwkJCXRtcCB8PSBBVURfQ09ORklHX05fUFJPR19FTkFCTEU7Cj4+ID4g KwkJfSBlbHNlIHsKPj4gPiArCQkJRFJNX0RFQlVHX0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBp cyBmb3VuZFxuIik7Cj4+IAo+PiBDb3VsZCBzb21lIGNvbW1lbnRzIGJlIGFkZGVkIGhlcmUgd2h5 IHdlIGRvbid0IHJldHVybiBpZiBubyB2YWxpZCBOIHZhbHVlCj4+IGlzIGZvdW5kPwo+Cj4gVGhp cyBpcyBiZWNhdXNlIGFsdGhvdWdoIHdlIGRvbid0IG5lZWQgc2V0IE4gdmFsdWUgaGVyZSwgYnV0 IHRoZXJlIGFyZSBzb21lCj4gb3RoZXIgYml0cyB0byBiZSBzZXQuIFNvIHlvdSBjYW4gc2VlIHdl IGNhbGwgCj4gSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiBMYXRlci4gCj4K Pj4gRG8gd2Ugc3RpbGwgbmVlZCB0byBwcm9ncmFtIHdyaXRlIHRoZSByZWdpc3RlciB0byBsZXQg SFcgY2FsY3VsYXRlIE4gYnkgaXRzZWxmPwo+Cj4gSWRlYWxseSwgYWxsIHRoZSBmcmVxdWVuY3kg c2hvdWxkIGJlIGluIHRoZSB0YWJsZS4gQnV0IGlmIHRoZSBmcmVxdWVuY3kgaXMgbm90Cj4gaW4g b3VyIHRhYmxlLCB3ZSB3aWxsIGxldCBIVyBjYWxjdWxhdGUgTiBieSBpdHNlbGYuCj4KPj4gCj4+ ID4gKwkJfQo+PiA+ICsJfQo+PiA+ICsKPj4gPiAgCUk5MTVfV1JJVEUoSFNXX0FVRF9DRkcocGlw ZSksIHRtcCk7Cj4+IAo+PiBBbmQgaWYgbm8gdmFsaWQgTiB2YWx1ZSBpcyBmb3VuZCwgbmVlZCB3 ZSBnbyBhaGVhZCB0byBjaGVjayBNIHZhbHVlPwo+Cj4gSWYgdGhlcmUgaXMgbm8gdmFsaWQgTiB2 YWx1ZSwgYXVkaW9fY29uZmlnX2RwX2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+IHdpbGwgYWxz byByZXR1cm4gMCBhbmQgc2tpcCB0aGUgbSBzZXR0aW5nLgoKSWYgd2UgY2FuJ3QgZmluZCBNL04g dmFsdWVzLCB0aGUgSFNXX0FVRF9DRkcgcmVnaXN0ZXIgaXMgc2V0IHRvIHVzZQphdXRvbWF0aWMg TiB2YWx1ZS4gSG93ZXZlciwgdGhlIEhTV19BVURfTV9DVFNfRU5BQkxFIHJlZ2lzdGVyIGlzIG5v dAp1cGRhdGVkIGF0IGFsbCwgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgc3RhbGUgc3R1ZmYu IERvIHdlIG5lZWQgdG8KY2xlYXIgdGhlIEFVRF9NX0NUU19NX1ZBTFVFX0lOREVYIGFuZC9vciBB VURfTV9DVFNfTV9QUk9HX0VOQUJMRSBiaXRzPwoKV2Ugb25seSBkbyB0aGlzIHN0dWZmIGluIGhz d19hdWRpb19jb2RlY19lbmFibGUgbm93LiBEbyB3ZSBuZWVkIHRvIGRvCnNvbWV0aGluZyBpbiBo c3dfYXVkaW9fY29kZWNfZGlzYWJsZSB0b28/CgoKQlIsCkphbmkuCgoKPgo+IFJlZ2FyZHMsCj4g TGliaW4KPgo+PiAKPj4gPiArCj4+ID4gKwltID0gYXVkaW9fY29uZmlnX2RwX2dldF9tKGludGVs X2NydGMsIHJhdGUpOwo+PiA+ICsJaWYgKG0pIHsKPj4gPiArCQl0bXAgPSBJOTE1X1JFQUQoSFNX X0FVRF9NX0NUU19FTkFCTEUocGlwZSkpOwo+PiA+ICsJCXRtcCAmPSB+QVVEX0NPTkZJR19NX01B U0s7Cj4+ID4gKwkJdG1wIHw9IG07Cj4+ID4gKwkJdG1wIHw9IEFVRF9NX0NUU19NX1ZBTFVFX0lO REVYOwo+PiA+ICsJCXRtcCB8PSBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRTsKPj4gPiArCQlJOTE1 X1dSSVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+PiA+ICsJfQo+PiA+ICB9 Cj4+IAo+PiBUaGFua3MKPj4gTWVuZ2RvbmcKPj4gCj4+ID4gIHN0YXRpYyB2b2lkCj4+ID4gQEAg LTI2Nyw2ICszNTYsMTIgQEAgaHN3X2hkbWlfYXVkaW9fY29uZmlnX3VwZGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Ywo+PiA+ICppbnRlbF9jcnRjLCBlbnVtIHBvcnQgcG9ydCwKPj4gPiAgCX0KPj4gPgo+ PiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPj4gPiArCj4+ID4gKwl0 bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSkpOwo+PiA+ICsJdG1wICY9 IH5BVURfQ09ORklHX01fTUFTSzsKPj4gPiArCXRtcCAmPSB+QVVEX01fQ1RTX01fVkFMVUVfSU5E RVg7Cj4+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFCTEU7Cj4+ID4gKwlJOTE1X1dS SVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+PiA+ICB9Cj4+ID4KPj4gPiAg c3RhdGljIHZvaWQKPj4gPiBAQCAtNjg3LDcgKzc4Miw4IEBAIHN0YXRpYyBpbnQKPj4gPiBpOTE1 X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqa2RldiwgaW50 IHBvcnQsCj4+ID4gIAkvKiAxLiBnZXQgdGhlIHBpcGUgKi8KPj4gPiAgCWludGVsX2VuY29kZXIg PSBnZXRfc2F2ZWRfZW5jKGRldl9wcml2LCBwb3J0LCBwaXBlKTsKPj4gPiAgCWlmICghaW50ZWxf ZW5jb2RlciB8fCAhaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjIHx8Cj4+ID4gLQkgICAgaW50ZWxf ZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgewo+PiA+ICsJICAgIChpbnRlbF9l bmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JICYmCj4+ID4gKwkgICAgIGludGVsX2Vu Y29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RQKSkgewo+PiA+ICAJCURSTV9ERUJVR19LTVMo Ik5vdCB2YWxpZCBmb3IgcG9ydCAlY1xuIiwKPj4gcG9ydF9uYW1lKHBvcnQpKTsKPj4gPiAgCQll cnIgPSAtRU5PREVWOwo+PiA+ICAJCWdvdG8gdW5sb2NrOwo+PiA+IC0tCj4+ID4gMi4xLjQKPj4g Pgo+PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9n eSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==