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: Thu, 20 Oct 2016 11:33:54 +0300 Message-ID: <877f93s9l9.fsf@intel.com> References: <356b7b46bb602c250afcbf003afa720c998b3deb.1476111629.git.jani.nikula@intel.com> <96A12704CE18D347B625EE2D4A099D194FA43B07@SHSMSX103.ccr.corp.intel.com> <87wph4l6kq.fsf@intel.com> <96A12704CE18D347B625EE2D4A099D194FA49977@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 6C2816E09B for ; Thu, 20 Oct 2016 08:33:58 +0000 (UTC) In-Reply-To: <96A12704CE18D347B625EE2D4A099D194FA49977@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 T24gVGh1LCAyMCBPY3QgMjAxNiwgIllhbmcsIExpYmluIiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+ IHdyb3RlOgo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBOaWt1bGEsIEph bmkKPj4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDE5LCAyMDE2IDExOjA5IFBNCj4+IFRvOiBZ YW5nLCBMaWJpbiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+OyBMaW4sIE1lbmdkb25nCj4+IDxtZW5n ZG9uZy5saW5AaW50ZWwuY29tPjsgaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBD YzogbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb207IFBhbmRpeWFuLCBEaGluYWthcmFuCj4+IDxk aGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT47IFpoYW5nLCBLZXFpYW8KPj4gPGtlcWlhby56 aGFuZ0BpbnRlbC5jb20+OyBaaGFvLCBKdWFuIEogPGp1YW4uai56aGFvQGludGVsLmNvbT4KPj4g U3ViamVjdDogUkU6IFtJbnRlbC1nZnhdIFtQQVRDSCBSRVNFTkQgOS85XSBkcm0vaTkxNTogc2V0 IHByb3BlciBOL00gaW4KPj4gbW9kZXNldAo+PiAKPj4gCj4+IFNvcnJ5IGl0J3MgdGFrZW4gbWUg Zm9yZXZlciB0byBnZXQgYmFjayB0byB0aGlzLiBTb21lIGNvbW1lbnRzIGlubGluZS4KPj4gCj4+ IEJSLAo+PiBKYW5pLgo+PiAKPj4gT24gV2VkLCAxMiBPY3QgMjAxNiwgIllhbmcsIExpYmluIiA8 bGliaW4ueWFuZ0BpbnRlbC5jb20+IHdyb3RlOgo+PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQo+PiA+PiBGcm9tOiBJbnRlbC1nZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0 cy5mcmVlZGVza3RvcC5vcmddIE9uCj4+ID4+IEJlaGFsZiBPZiBMaW4sIE1lbmdkb25nCj4+ID4+ IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxMiwgMjAxNiAxMDo0NiBBTQo+PiA+PiBUbzogTmlr dWxhLCBKYW5pIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Owo+PiA+PiBpbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+ID4+IENjOiBOaWt1bGEsIEphbmkgPGphbmkubmlrdWxhQGludGVs LmNvbT47IGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tOwo+PiA+PiBQYW5kaXlhbiwgRGhpbmFr YXJhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4+ID4+IFN1YmplY3Q6IFJlOiBb SW50ZWwtZ2Z4XSBbUEFUQ0ggUkVTRU5EIDkvOV0gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9NCj4+ ID4+IGluIG1vZGVzZXQKPj4gPj4KPj4gPj4KPj4gPj4KPj4gPj4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+PiA+PiA+IEZyb206IEludGVsLWdmeCBbbWFpbHRvOmludGVsLWdmeC1ib3Vu Y2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24KPj4gPj4gPiBCZWhhbGYgT2YgSmFuaSBOaWt1 bGEKPj4gPj4gPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTAsIDIwMTYgMTE6MDQgUE0KPj4gPj4g PiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiA+PiA+IENjOiBOaWt1bGEs IEphbmkgPGphbmkubmlrdWxhQGludGVsLmNvbT47Cj4+ID4+ID4gbGliaW4ueWFuZ0BsaW51eC5p bnRlbC5jb207IFBhbmRpeWFuLCBEaGluYWthcmFuCj4+ID4+ID4gPGRoaW5ha2FyYW4ucGFuZGl5 YW5AaW50ZWwuY29tPgo+PiA+PiA+IFN1YmplY3Q6IFtJbnRlbC1nZnhdIFtQQVRDSCBSRVNFTkQg OS85XSBkcm0vaTkxNTogc2V0IHByb3BlciBOL00gaW4KPj4gPj4gPiBtb2Rlc2V0Cj4+ID4+ID4K Pj4gPj4gPiBXaGVuIG1vZGVzZXQgb2NjdXJzIGFuZCB0aGUgTFNfQ0xLIGlzIHNldCB0byBzb21l IHNwZWNpYWwgdmFsdWVzIGluCj4+ID4+ID4gRFAgbW9kZSwgdGhlIE4vTSBuZWVkIHRvIGJlIHNl dCBtYW51YWxseSBpZiBhdWRpbyBpcyBwbGF5aW5nLgo+PiA+PiA+IE90aGVyd2lzZSB0aGUgZmly c3Qgc2V2ZXJhbCBzZWNvbmRzIG1heSBiZSBzaWxlbnQgaW4gYXVkaW8gcGxheWJhY2suCj4+ID4+ ID4KPj4gPj4gPiBUaGUgcmVsYXRpb25zaGlwIG9mIE1hdWQgYW5kIE5hdWQgaXMgZXhwcmVzc2Vk IGluIHRoZSBmb2xsb3dpbmcKPj4gZXF1YXRpb246Cj4+ID4+ID4gTWF1ZC9OYXVkID0gNTEyICog ZnMgLyBmX0xTX0Nsawo+PiA+PiA+Cj4+ID4+ID4gUGxlYXNlIHJlZmVyIFZFU0EgRGlzcGxheVBv cnQgU3RhbmRhcmQgc3BlYyBmb3IgZGV0YWlscy4KPj4gPj4gPgo+PiA+PiA+IFNpZ25lZC1vZmYt Ynk6IExpYmluIFlhbmcgPGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tPgo+PiA+PiA+IFNpZ25l ZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4+ID4+ID4gLS0t Cj4+ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAgIDcgKysrCj4+ ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAxMDAKPj4gPj4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ID4+ID4gIDIgZmlsZXMgY2hh bmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+ID4+ID4KPj4gPj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiA+PiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBpbmRleCA1OTVkMTk2Zjc1M2YuLjhkOWRiYzdk NWIzMgo+PiA+PiA+IDEwMDY0NAo+PiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPj4gPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ ID4+ID4gQEAgLTczNTksNiArNzM1OSwxMyBAQCBlbnVtIHsKPj4gPj4gPiAgI2RlZmluZSBfSFNX X0FVRF9NSVNDX0NUUkxfQgkJMHg2NTExMAo+PiA+PiA+ICAjZGVmaW5lIEhTV19BVURfTUlTQ19D VFJMKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsCj4+ID4+ID4gX0hTV19BVURfTUlTQ19DVFJMX0Es IF9IU1dfQVVEX01JU0NfQ1RSTF9CKQo+PiA+PiA+Cj4+ID4+ID4gKyNkZWZpbmUgX0hTV19BVURf TV9DVFNfRU5BQkxFX0EJCTB4NjUwMjgKPj4gPj4gPiArI2RlZmluZSBfSFNXX0FVRF9NX0NUU19F TkFCTEVfQgkJMHg2NTEyOAo+PiA+PiA+ICsjZGVmaW5lIEhTV19BVURfTV9DVFNfRU5BQkxFKHBp cGUpCV9NTUlPX1BJUEUocGlwZSwKPj4gPj4gPiBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hT V19BVURfTV9DVFNfRU5BQkxFX0IpCj4+ID4+ID4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9WQUxV RV9JTkRFWAkoMSA8PCAyMSkKPj4gPj4gPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1BST0dfRU5B QkxFCSgxIDw8IDIwKQo+PiA+PiA+ICsjZGVmaW5lICAgQVVEX0NPTkZJR19NX01BU0sJCTB4ZmZm ZmYKPj4gPj4KPj4gPj4gVGhlIGxhc3QgbGluZSBjYXVzZSBtaXNhbGlnbm1lbnQgYWZ0ZXIgYXBw bHlpbmcgdGhlIHBhdGNoLgo+PiA+Pgo+PiA+PiA+ICsKPj4gPj4gPiAgI2RlZmluZSBfSFNXX0FV RF9ESVBfRUxEX0NUUkxfU1RfQQkweDY1MGI0Cj4+ID4+ID4gICNkZWZpbmUgX0hTV19BVURfRElQ X0VMRF9DVFJMX1NUX0IJMHg2NTFiNAo+PiA+PiA+ICAjZGVmaW5lIEhTV19BVURfRElQX0VMRF9D VFJMKHBpcGUpCV9NTUlPX1BJUEUocGlwZSwKPj4gPj4gPiBfSFNXX0FVRF9ESVBfRUxEX0NUUkxf U1RfQSwgX0hTV19BVURfRElQX0VMRF9DVFJMX1NUX0IpCj4+IGRpZmYgLS0KPj4gPj4gZ2l0Cj4+ ID4+ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ID4+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ID4+ID4gaW5kZXggODFkZjI5Y2E0OTQ3 Li4wYmMyNzAxYjZjOWMgMTAwNjQ0Cj4+ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXVkaW8uYwo+PiA+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMKPj4gPj4gPiBAQCAtNTcsNiArNTcsNzAgQEAKPj4gPj4gPiAgICogc3RydWN0ICZpOTE1 X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMgQGF1ZGlvX29wcyBpcyBjYWxsZWQKPj4gPj4gPiBm cm9tCj4+ID4+ID4gaTkxNSBkcml2ZXIuCj4+ID4+ID4gICAqLwo+PiA+PiA+Cj4+ID4+ID4gKy8q IERQIE4vTSB0YWJsZSAqLwo+PiA+PiA+ICsjZGVmaW5lIExDXzU0ME0gNTQwMDAwCj4+ID4+ID4g KyNkZWZpbmUgTENfMjcwTSAyNzAwMDAKPj4gPj4gPiArI2RlZmluZSBMQ18xNjJNIDE2MjAwMAo+ PiA+PiA+ICsKPj4gPj4gPiArc3RydWN0IGRwX2F1ZF9uX20gewo+PiA+PiA+ICsJaW50IHNhbXBs ZV9yYXRlOwo+PiA+PiA+ICsJaW50IGNsb2NrOwo+PiA+PiA+ICsJdTE2IG47Cj4+ID4+ID4gKwl1 MTYgbTsKPj4gPj4gPiArfTsKPj4gPj4gPiArCj4+ID4+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHBfYXVkX25fbSBkcF9hdWRfbl9tW10gPSB7Cj4+ID4+ID4gKwl7IDE5MjAwMCwgTENfNTQwTSwg NTYyNSwgMTAyNCB9LAo+PiA+PiA+ICsJeyAxNzY0MDAsIExDXzU0ME0sIDkzNzUsIDE1NjggfSwK Pj4gPj4gPiArCXsgOTYwMDAsIExDXzU0ME0sIDU2MjUsIDUxMiB9LAo+PiA+PiA+ICsJeyA4ODIw MCwgTENfNTQwTSwgOTM3NSwgNzg0IH0sCj4+ID4+ID4gKwl7IDQ4MDAwLCBMQ181NDBNLCA1NjI1 LCAyNTYgfSwKPj4gPj4gPiArCXsgNDQxMDAsIExDXzU0ME0sIDkzNzUsIDM5MiB9LAo+PiA+PiA+ ICsJeyAzMjAwMCwgTENfNTQwTSwgMTY4NzUsIDUxMiB9LAo+PiAKPj4gQW55IHBhcnRpY3VsYXIg cmVhc29uIHRoZXNlIE0vTiB2YWx1ZXMgYXJlIGhhbGYgb2Ygd2hhdCB0aGV5J3JlIGluIHRhYmxl Cj4+IDItMTA0IG9mIERQIDEuNCBzcGVjPyAoQWRtaXR0ZWRseSB0aGUgdGFibGUgaXMgYW4gaW5m b3JtYXRpdmUgZXhhbXBsZS4pCj4KPiBGb3IgSERNSSwgd2UgZm91bmQgb25seSBzZXQgTiBpcyBl bm91Z2guIEhXIHRoZW4gY2FuIGhhbmRsZSB0aGUgcmVtYWluaW5nLgoKSSBtZWFudCwgdGhlIE0g YW5kIE4gdmFsdWVzIGluIHRoaXMgcGFydCBvZiB0aGUgZHBfYXVkX25fbSB0YWJsZSBhcmUgMS8y Cm9mIHdoYXQgdGhleSBhcmUgaW4gdGhlIERQIHNwZWMgdGFibGUuIFdoeT8KCkphbmkuCgoKPgo+ PiAKPj4gPj4gPiArCXsgMTkyMDAwLCBMQ18yNzBNLCA1NjI1LCAyMDQ4IH0sCj4+ID4+ID4gKwl7 IDE3NjQwMCwgTENfMjcwTSwgOTM3NSwgMzEzNiB9LAo+PiA+PiA+ICsJeyA5NjAwMCwgTENfMjcw TSwgNTYyNSwgMTAyNCB9LAo+PiA+PiA+ICsJeyA4ODIwMCwgTENfMjcwTSwgOTM3NSwgMTU2OCB9 LAo+PiA+PiA+ICsJeyA0ODAwMCwgTENfMjcwTSwgNTYyNSwgNTEyIH0sCj4+ID4+ID4gKwl7IDQ0 MTAwLCBMQ18yNzBNLCA5Mzc1LCA3ODQgfSwKPj4gPj4gPiArCXsgMzIwMDAsIExDXzI3ME0sIDE2 ODc1LCAxMDI0IH0sCj4+ID4+ID4gKwl7IDE5MjAwMCwgTENfMTYyTSwgMzM3NSwgMjA0OCB9LAo+ PiA+PiA+ICsJeyAxNzY0MDAsIExDXzE2Mk0sIDU2MjUsIDMxMzYgfSwKPj4gPj4gPiArCXsgOTYw MDAsIExDXzE2Mk0sIDMzNzUsIDEwMjQgfSwKPj4gPj4gPiArCXsgODgyMDAsIExDXzE2Mk0sIDU2 MjUsIDE1NjggfSwKPj4gPj4gPiArCXsgNDgwMDAsIExDXzE2Mk0sIDMzNzUsIDUxMiB9LAo+PiA+ PiA+ICsJeyA0NDEwMCwgTENfMTYyTSwgNTYyNSwgNzg0IH0sCj4+ID4+ID4gKwl7IDMyMDAwLCBM Q18xNjJNLCAxMDEyNSwgMTAyNCB9LAo+PiAKPj4gRG8gd2Ugbm90IHN1cHBvcnQgMTI4IG9yIDY0 IGtIeiBhdWRpbz8KPgo+IE5vLCB3ZSBkb24ndCBzdXBwb3J0IEhCUiBhdWRpby4KPgo+PiAKPj4g Pj4gPiArfTsKPj4gPj4gPiArCj4+ID4+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHBfYXVkX25f bSAqCj4+ID4+ID4gK2F1ZGlvX2NvbmZpZ19kcF9nZXRfbl9tKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLCBpbnQgcmF0ZSkgewo+PiA+PiA+ICsJaW50IGk7Cj4+ID4+ID4gKwo+PiA+PiA+ ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHBfYXVkX25fbSk7IGkrKykgewo+PiA+PiA+ ICsJCWlmIChyYXRlID09IGRwX2F1ZF9uX21baV0uc2FtcGxlX3JhdGUgJiYKPj4gPj4gPiArCQkg ICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGRwX2F1ZF9uX21baV0uY2xvY2sp Cj4+ID4+ID4gKwkJCXJldHVybiAmZHBfYXVkX25fbVtpXTsKPj4gPj4gPiArCX0KPj4gPj4gPiAr Cj4+ID4+ID4gKwlyZXR1cm4gTlVMTDsKPj4gPj4gPiArfQo+PiA+PiA+ICsKPj4gPj4gPiArc3Rh dGljIGludCBhdWRpb19jb25maWdfZHBfZ2V0X20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMsCj4+ID4+ID4gK2ludAo+PiA+PiA+ICtyYXRlKSB7Cj4+ID4+ID4gKwljb25zdCBzdHJ1Y3Qg ZHBfYXVkX25fbSAqbm0gPQo+PiA+PiA+IGF1ZGlvX2NvbmZpZ19kcF9nZXRfbl9tKGludGVsX2Ny dGMsCj4+ID4+ID4gK3JhdGUpOwo+PiA+PiA+ICsKPj4gPj4gPiArCXJldHVybiBubSA/IG5tLT5t IDogMDsKPj4gPj4gPiArfQo+PiA+PiA+ICsKPj4gPj4gPiArc3RhdGljIGludCBhdWRpb19jb25m aWdfZHBfZ2V0X24oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ID4+ID4gK2ludAo+ PiA+PiA+ICtyYXRlKSB7Cj4+ID4+ID4gKwljb25zdCBzdHJ1Y3QgZHBfYXVkX25fbSAqbm0gPQo+ PiA+PiA+IGF1ZGlvX2NvbmZpZ19kcF9nZXRfbl9tKGludGVsX2NydGMsCj4+ID4+ID4gK3JhdGUp Owo+PiA+PiA+ICsKPj4gPj4gPiArCXJldHVybiBubSA/IG5tLT5uIDogMDsKPj4gPj4gPiArfQo+ PiA+PiA+ICsKPj4gPj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4+ID4+ID4gIAlpbnQgY2xv Y2s7Cj4+ID4+ID4gIAl1MzIgY29uZmlnOwo+PiA+PiA+IEBAIC0yMjUsOCArMjg5LDEwIEBAIGhz d19kcF9hdWRpb19jb25maWdfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjCj4+ID4+ID4gKmludGVs X2NydGMsIGVudW0gcG9ydCBwb3J0LAo+PiA+PiA+ICAJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkgIHsKPj4gPj4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9Cj4+ID4+ID4gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7 Cj4+ID4+ID4gKwlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYt Cj4+ID4+ID4gPmF1ZGlvX2NvbXBvbmVudDsKPj4gPj4gPiArCWludCByYXRlID0gYWNvbXAgPyBh Y29tcC0+YXVkX3NhbXBsZV9yYXRlW3BvcnRdIDogMDsKPj4gPj4gPiAgCWVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gPj4gPiAtCXUzMiB0bXA7Cj4+ID4+ID4gKwl1MzIgdG1w LCBuLCBtOwo+PiA+PiA+Cj4+ID4+ID4gIAl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9DRkcocGlw ZSkpOwo+PiA+PiA+ICAJdG1wICY9IH5BVURfQ09ORklHX05fVkFMVUVfSU5ERVg7IEBAIC0yMzQs NyArMzAwLDMwIEBACj4+ID4+ID4gaHN3X2RwX2F1ZGlvX2NvbmZpZ191cGRhdGUoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsIGVudW0gcG9ydAo+PiA+PiA+IHBvcnQsCj4+ID4+ID4gIAl0 bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsKPj4gPj4gPiAgCXRtcCB8PSBBVURfQ09O RklHX05fVkFMVUVfSU5ERVg7Cj4+ID4+ID4KPj4gPj4gPiArCWlmIChpbnRlbF9jcnRjLT5jb25m aWctPnBvcnRfY2xvY2sgPT0gTENfNTQwTSB8fAo+PiA+PiA+ICsJICAgIGludGVsX2NydGMtPmNv bmZpZy0+cG9ydF9jbG9jayA9PSBMQ18yNzBNIHx8Cj4+ID4+ID4gKwkgICAgaW50ZWxfY3J0Yy0+ Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzE2Mk0pIHsKPj4gCj4+IEFjdHVhbGx5LCB0aGlzIGNo ZWNrIGNvdWxkIGJlIHJlbW92ZWQuIGF1ZGlvX2NvbmZpZ19kcF9nZXRfbl9tIHdpbGwgYWx3YXlz Cj4+IHJldHVybiAwIGlmIHRoaXMgZG9lc24ndCBob2xkLiBCdXQgbm90IGEgYmlnIGRlYWwuCj4K PiBZZXMsIHdlIGNhbiByZW1vdmUgaXQuCj4KPj4gCj4+ID4+ID4gKwkJbiA9IGF1ZGlvX2NvbmZp Z19kcF9nZXRfbihpbnRlbF9jcnRjLCByYXRlKTsKPj4gPj4gPiArCQlpZiAobiAhPSAwKSB7Cj4+ ID4+ID4gKwkJCXRtcCAmPSB+QVVEX0NPTkZJR19OX01BU0s7Cj4+ID4+ID4gKwkJCXRtcCB8PSBB VURfQ09ORklHX04obik7Cj4+ID4+ID4gKwkJCXRtcCB8PSBBVURfQ09ORklHX05fUFJPR19FTkFC TEU7Cj4+ID4+ID4gKwkJfSBlbHNlIHsKPj4gPj4gPiArCQkJRFJNX0RFQlVHX0tNUygibm8gc3Vp dGFibGUgTiB2YWx1ZSBpcyBmb3VuZFxuIik7Cj4+ID4+Cj4+ID4+IENvdWxkIHNvbWUgY29tbWVu dHMgYmUgYWRkZWQgaGVyZSB3aHkgd2UgZG9uJ3QgcmV0dXJuIGlmIG5vIHZhbGlkIE4KPj4gPj4g dmFsdWUgaXMgZm91bmQ/Cj4+ID4KPj4gPiBUaGlzIGlzIGJlY2F1c2UgYWx0aG91Z2ggd2UgZG9u J3QgbmVlZCBzZXQgTiB2YWx1ZSBoZXJlLCBidXQgdGhlcmUgYXJlCj4+ID4gc29tZSBvdGhlciBi aXRzIHRvIGJlIHNldC4gU28geW91IGNhbiBzZWUgd2UgY2FsbAo+PiA+IEk5MTVfV1JJVEUoSFNX X0FVRF9DRkcocGlwZSksIHRtcCk7IExhdGVyLgo+PiA+Cj4+ID4+IERvIHdlIHN0aWxsIG5lZWQg dG8gcHJvZ3JhbSB3cml0ZSB0aGUgcmVnaXN0ZXIgdG8gbGV0IEhXIGNhbGN1bGF0ZSBOIGJ5Cj4+ IGl0c2VsZj8KPj4gPgo+PiA+IElkZWFsbHksIGFsbCB0aGUgZnJlcXVlbmN5IHNob3VsZCBiZSBp biB0aGUgdGFibGUuIEJ1dCBpZiB0aGUKPj4gPiBmcmVxdWVuY3kgaXMgbm90IGluIG91ciB0YWJs ZSwgd2Ugd2lsbCBsZXQgSFcgY2FsY3VsYXRlIE4gYnkgaXRzZWxmLgo+PiA+Cj4+ID4+Cj4+ID4+ ID4gKwkJfQo+PiA+PiA+ICsJfQo+PiA+PiA+ICsKPj4gPj4gPiAgCUk5MTVfV1JJVEUoSFNXX0FV RF9DRkcocGlwZSksIHRtcCk7Cj4+ID4+Cj4+ID4+IEFuZCBpZiBubyB2YWxpZCBOIHZhbHVlIGlz IGZvdW5kLCBuZWVkIHdlIGdvIGFoZWFkIHRvIGNoZWNrIE0gdmFsdWU/Cj4+ID4KPj4gPiBJZiB0 aGVyZSBpcyBubyB2YWxpZCBOIHZhbHVlLCBhdWRpb19jb25maWdfZHBfZ2V0X20oaW50ZWxfY3J0 YywgcmF0ZSk7Cj4+ID4gd2lsbCBhbHNvIHJldHVybiAwIGFuZCBza2lwIHRoZSBtIHNldHRpbmcu Cj4+IAo+PiBJZiB3ZSBjYW4ndCBmaW5kIE0vTiB2YWx1ZXMsIHRoZSBIU1dfQVVEX0NGRyByZWdp c3RlciBpcyBzZXQgdG8gdXNlCj4+IGF1dG9tYXRpYyBOIHZhbHVlLiBIb3dldmVyLCB0aGUgSFNX X0FVRF9NX0NUU19FTkFCTEUgcmVnaXN0ZXIgaXMgbm90Cj4+IHVwZGF0ZWQgYXQgYWxsLCBhbmQg Y291bGQgcG90ZW50aWFsbHkgaGF2ZSBzdGFsZSBzdHVmZi4gRG8gd2UgbmVlZCB0byBjbGVhciB0 aGUKPj4gQVVEX01fQ1RTX01fVkFMVUVfSU5ERVggYW5kL29yIEFVRF9NX0NUU19NX1BST0dfRU5B QkxFIGJpdHM/Cj4+IAo+PiBXZSBvbmx5IGRvIHRoaXMgc3R1ZmYgaW4gaHN3X2F1ZGlvX2NvZGVj X2VuYWJsZSBub3cuIERvIHdlIG5lZWQgdG8gZG8KPj4gc29tZXRoaW5nIGluIGhzd19hdWRpb19j b2RlY19kaXNhYmxlIHRvbz8KPgo+IEluIF9kaXNhYmxlKCksIHRoZSBhdWRpbyBkb2Vzbid0IHdv cmsuIFNvIHRoZSB2YWx1ZSB3aWxsIG5vdCBpbXBhY3QgYXVkaW8uCj4gSXQgd2lsbCBub3QgYmUg d29yc2UgdGhhdCB3ZSBkbyBub3QgcmVzZXQgdGhlIHZhbHVlIGluIF9kaXNhYmxlKCkuCj4gV2l0 aG91dCByZXNldCwgdGhlIHZhbHVlIGlzICJjYWNoZWQiLiBOZXh0IHRpbWUsIGl0IG1heSBiZSBh IGxpdHRsZSBxdWlja2VyCj4gZm9yIG1vbml0b3IgcmVzcG9uc2UgaWYgd2UgYXJlIHVzaW5nIHRo ZSBzYW1lIHBhcmFtZXRlciwgSSB0aGluay4KPgo+IFJlZ2FyZHMKPiBMaWJpbgo+Cj4+IAo+PiAK Pj4gQlIsCj4+IEphbmkuCj4+IAo+PiAKPj4gPgo+PiA+IFJlZ2FyZHMsCj4+ID4gTGliaW4KPj4g Pgo+PiA+Pgo+PiA+PiA+ICsKPj4gPj4gPiArCW0gPSBhdWRpb19jb25maWdfZHBfZ2V0X20oaW50 ZWxfY3J0YywgcmF0ZSk7Cj4+ID4+ID4gKwlpZiAobSkgewo+PiA+PiA+ICsJCXRtcCA9IEk5MTVf UkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4+ID4+ID4gKwkJdG1wICY9IH5BVURf Q09ORklHX01fTUFTSzsKPj4gPj4gPiArCQl0bXAgfD0gbTsKPj4gPj4gPiArCQl0bXAgfD0gQVVE X01fQ1RTX01fVkFMVUVfSU5ERVg7Cj4+ID4+ID4gKwkJdG1wIHw9IEFVRF9NX0NUU19NX1BST0df RU5BQkxFOwo+PiA+PiA+ICsJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSks IHRtcCk7Cj4+ID4+ID4gKwl9Cj4+ID4+ID4gIH0KPj4gPj4KPj4gPj4gVGhhbmtzCj4+ID4+IE1l bmdkb25nCj4+ID4+Cj4+ID4+ID4gIHN0YXRpYyB2b2lkCj4+ID4+ID4gQEAgLTI2Nyw2ICszNTYs MTIgQEAgaHN3X2hkbWlfYXVkaW9fY29uZmlnX3VwZGF0ZShzdHJ1Y3QKPj4gaW50ZWxfY3J0Ywo+ PiA+PiA+ICppbnRlbF9jcnRjLCBlbnVtIHBvcnQgcG9ydCwKPj4gPj4gPiAgCX0KPj4gPj4gPgo+ PiA+PiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPj4gPj4gPiArCj4+ ID4+ID4gKwl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSkpOwo+PiA+ PiA+ICsJdG1wICY9IH5BVURfQ09ORklHX01fTUFTSzsKPj4gPj4gPiArCXRtcCAmPSB+QVVEX01f Q1RTX01fVkFMVUVfSU5ERVg7Cj4+ID4+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFC TEU7Cj4+ID4+ID4gKwlJOTE1X1dSSVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXAp Owo+PiA+PiA+ICB9Cj4+ID4+ID4KPj4gPj4gPiAgc3RhdGljIHZvaWQKPj4gPj4gPiBAQCAtNjg3 LDcgKzc4Miw4IEBAIHN0YXRpYyBpbnQKPj4gPj4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5j X2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqa2RldiwgaW50IHBvcnQsCj4+ID4+ID4gIAkvKiAx LiBnZXQgdGhlIHBpcGUgKi8KPj4gPj4gPiAgCWludGVsX2VuY29kZXIgPSBnZXRfc2F2ZWRfZW5j KGRldl9wcml2LCBwb3J0LCBwaXBlKTsKPj4gPj4gPiAgCWlmICghaW50ZWxfZW5jb2RlciB8fCAh aW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjIHx8Cj4+ID4+ID4gLQkgICAgaW50ZWxfZW5jb2Rlci0+ dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgewo+PiA+PiA+ICsJICAgIChpbnRlbF9lbmNvZGVy LT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JICYmCj4+ID4+ID4gKwkgICAgIGludGVsX2VuY29k ZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RQKSkgewo+PiA+PiA+ICAJCURSTV9ERUJVR19LTVMo Ik5vdCB2YWxpZCBmb3IgcG9ydCAlY1xuIiwKPj4gPj4gcG9ydF9uYW1lKHBvcnQpKTsKPj4gPj4g PiAgCQllcnIgPSAtRU5PREVWOwo+PiA+PiA+ICAJCWdvdG8gdW5sb2NrOwo+PiA+PiA+IC0tCj4+ ID4+ID4gMi4xLjQKPj4gPj4gPgo+PiA+PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+ID4+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiA+PiA+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gPj4gPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+PiA+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiA+PiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4+ID4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gPj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4g Cj4+IC0tCj4+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK