From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/3] drm/i915: set proper N/M in modeset Date: Thu, 4 Aug 2016 11:52:57 +0300 Message-ID: <20160804085257.GA4329@intel.com> References: <1470297484-82178-1-git-send-email-libin.yang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 13F486E7A2 for ; Thu, 4 Aug 2016 08:53:01 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1470297484-82178-1-git-send-email-libin.yang@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: libin.yang@linux.intel.com Cc: tiwai@suse.de, daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBdWcgMDQsIDIwMTYgYXQgMDM6NTg6MDJQTSArMDgwMCwgbGliaW4ueWFuZ0BsaW51 eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5p bnRlbC5jb20+Cj4gCj4gV2hlbiBtb2Rlc2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQg dG8gc29tZQo+IHNwZWNpYWwgdmFsdWVzIGluIERQIG1vZGUsIHRoZSBOL00gbmVlZCB0byBiZSBz ZXQKPiBtYW51YWxseSBpZiBhdWRpbyBpcyBwbGF5aW5nLiBPdGhlcndpc2UgdGhlIGZpcnN0Cj4g c2V2ZXJhbCBzZWNvbmRzIG1heSBiZSBzaWxlbnQgaW4gYXVkaW8gcGxheWJhY2suCj4gCj4gVGhl IHJlbGF0aW9uc2hpcCBvZiBNYXVkIGFuZCBOYXVkIGlzIGV4cHJlc3NlZCBpbgo+IHRoZSBmb2xs b3dpbmcgZXF1YXRpb246Cj4gTWF1ZC9OYXVkID0gNTEyICogZnMgLyBmX0xTX0Nsawo+IAo+IFBs ZWFzZSByZWZlciBWRVNBIERpc3BsYXlQb3J0IFN0YW5kYXJkIHNwZWMgZm9yIGRldGFpbHMuCgpQ bGVhcyBpbmNsdWRlIGEgc21hbGwgY2hhbmdlbG9nIGhlcmUgc28gdGhhdCBJIGtub3cgd2hhdCBo YXMKY2hhbmdlZCB3aXRoIGVhY2ggcmV2aXNpb24gb2YgdGhlIHBhdGNoLiBFZzoKCnYyOiBibGFo CnYzOiB3aGF0ZXZlcgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5n QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICB8ICAgNiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgMTMz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2Vk LCAxMjMgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gaW5kZXggOGJmZGU3NS4uMmY5ZDAwZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+IEBAIC03MzUxLDYgKzczNTEsMTIgQEAgZW51bSB7Cj4gICNkZWZpbmUgX0hTV19BVURf Q09ORklHX0IJCTB4NjUxMDAKPiAgI2RlZmluZSBIU1dfQVVEX0NGRyhwaXBlKQkJX01NSU9fUElQ RShwaXBlLCBfSFNXX0FVRF9DT05GSUdfQSwgX0hTV19BVURfQ09ORklHX0IpCj4gIAo+ICsjZGVm aW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BCQkweDY1MDI4Cj4gKyNkZWZpbmUgX0hTV19BVURf TV9DVFNfRU5BQkxFX0IJCTB4NjUxMjgKPiArI2RlZmluZSBIU1dfQVVEX01fQ1RTX0VOQUJMRShw aXBlKQkJX01NSU9fUElQRShwaXBlLCBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hTV19BVURf TV9DVFNfRU5BQkxFX0IpCj4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9WQUxVRV9JTkRFWAkoMSA8 PCAyMSkKPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1BST0dfRU5BQkxFCSgxIDw8IDIwKQoKUGxl YXNlIHRyeSB0byBrZWVwIHRoZSByZWdpc3RlciBkZWZpbmVzIGluIG9yZGVyIGJ5IHRoZSByZWdp c3RlciBvZmZzZXQuCkllLiB0aGVzZSByZWdpc3RlcnMgc2hvdWxkIGJlIHBsYWNlZCBqdXN0IGFm dGVyIEhTV19BVURfTUlTQ19DVFJMLgoKPiArCj4gICNkZWZpbmUgX0hTV19BVURfTUlTQ19DVFJM X0EJCTB4NjUwMTAKPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQgkJMHg2NTExMAo+ICAj ZGVmaW5lIEhTV19BVURfTUlTQ19DVFJMKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9IU1dfQVVE X01JU0NfQ1RSTF9BLCBfSFNXX0FVRF9NSVNDX0NUUkxfQikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F1ZGlvLmMKPiBpbmRleCA2NzAwYTdiLi4wNGU3MzU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4gQEAgLTk4LDYgKzk4LDM1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ ICAJeyAxOTIwMDAsIFRNRFNfMjk3TSwgMjA0ODAsIDI0NzUwMCB9LAo+ICB9Owo+ICAKPiArI2Rl ZmluZSBMQ181NDBNIDU0MDAwMAo+ICsjZGVmaW5lIExDXzI3ME0gMjcwMDAwCj4gKyNkZWZpbmUg TENfMTYyTSAxNjIwMDAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gKwlpbnQgc2FtcGxlX3Jh dGU7Cj4gKwlpbnQgY2xvY2s7Cj4gKwl1MTYgbjsKPiArCXUxNiBtOwo+ICt9IGF1ZF9ubVtdID0g ewo+ICsJezE5MjAwMCwgTENfNTQwTSwgNTYyNSwgMTAyNH0sCiAgICAgICAgIF4gICAgICAgICAg ICAgICAgICAgICAgICAgIF4KClN0eWxlIG5pdDogcGxlYXNlIGFkZCBzcGFjZXMgaGVyZQoKPiAr CXs5NjAwMCwgTENfNTQwTSwgNTYyNSwgNTEyfSwKPiArCXs4ODIwMCwgTENfNTQwTSwgOTM3NSwg Nzg0fSwKPiArCXs0ODAwMCwgTENfNTQwTSwgNTYyNSwgMjU2fSwKPiArCXs0NDEwMCwgTENfNTQw TSwgOTM3NSwgMzkyfSwKPiArCXszMjAwMCwgTENfNTQwTSwgMTY4NzUsIDUxMn0sCj4gKwl7MTky MDAwLCBMQ18yNzBNLCA1NjI1LCAyMDQ4fSwKPiArCXs5NjAwMCwgTENfMjcwTSwgNTYyNSwgMTAy NH0sCj4gKwl7ODgyMDAsIExDXzI3ME0sIDkzNzUsIDE1Njh9LAo+ICsJezQ4MDAwLCBMQ18yNzBN LCA1NjI1LCA1MTJ9LAo+ICsJezQ0MTAwLCBMQ18yNzBNLCA5Mzc1LCA3ODR9LAo+ICsJezMyMDAw LCBMQ18yNzBNLCAxNjg3NSwgMTAyNH0sCj4gKwl7MTkyMDAwLCBMQ18xNjJNLCAzMzc1LCAyMDQ4 fSwKPiArCXs5NjAwMCwgTENfMTYyTSwgMzM3NSwgMTAyNH0sCj4gKwl7ODgyMDAsIExDXzE2Mk0s IDU2MjUsIDE1Njh9LAo+ICsJezQ4MDAwLCBMQ18xNjJNLCAzMzc1LCA1MTJ9LAo+ICsJezQ0MTAw LCBMQ18xNjJNLCA1NjI1LCA3ODR9LAo+ICsJezMyMDAwLCBMQ18xNjJNLCAxMDEyNSwgMTAyNH0s CgpUaGUgbnVtYmVycyBsb29rcyBnb29kLiBCdXQgbG9va3MgbGlrZSB5b3UgZm9yZ290IGFib3V0 IDE3Ni40IGtIej8KCj4gK307Cj4gKwo+ICAvKiBnZXQgQVVEX0NPTkZJR19QSVhFTF9DTE9DS19I RE1JXyogdmFsdWUgZm9yIG1vZGUgKi8KPiAgc3RhdGljIHUzMiBhdWRpb19jb25maWdfaGRtaV9w aXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkK PiAgewo+IEBAIC0xMjEsMjAgKzE1MCw1MCBAQCBzdGF0aWMgdTMyIGF1ZGlvX2NvbmZpZ19oZG1p X3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZAo+ICAJ cmV0dXJuIGhkbWlfYXVkaW9fY2xvY2tbaV0uY29uZmlnOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50 IGF1ZGlvX2NvbmZpZ19nZXRfbihjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwg aW50IHJhdGUpCj4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9uKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSwKPiArCQkJICAgICAgaW50IHJhdGUpCj4gIHsKPiAgCWludCBpOwo+ICAKPiAt CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7Cj4gLQkJaWYgKChy YXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRlKSAmJgo+IC0JCQkobW9kZS0+Y2xvY2sgPT0g YXVkX25jdHNbaV0uY2xvY2spKSB7Cj4gLQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ICsJaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsK PiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+ICsJCQlp ZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYmCj4gKwkJCQkoYWRqdXN0ZWRf bW9kZS0+Y2xvY2sgPT0gYXVkX25jdHNbaV0uY2xvY2spKSB7CgpJbmRlbnQgZmFpbCwgYW5kIGEg Yml0IHRvbyBtYW55IHBhcmVucyBmb3IgbXkgdGFzdGUuIFNob3VsZCBsb29rIGxpa2U6CgoJCWlm IChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRlICYmCgkJICAgIGFkanVzdGVkX21vZGUt PmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSB7CgoKPiArCQkJCXJldHVybiBhdWRfbmN0c1tp XS5uOwo+ICsJCQl9Cj4gIAkJfQo+ICAJfQo+ICsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkgewoKaW50ZWxfaGFzX2RwX2VuY29kZXIo KSB3aWxsIG1ha2UgdGhpcyB3b3JrIGZvciBNU1QgYXMgd2VsbC4KCiJJbiBNU1QgbW9kZSwgdGhl IFNpbmsgZGV2aWNlIG11c3QgaWdub3JlIHRoZSBNYXVkIGFuZCBNdmlkIHZhbHVlcyBzZW50CmJ5 IGFuIE1TVCBTb3VyY2UgZGV2aWNlIHVubGVzcyB0aGUgTVNUIFNpbmsgZGV2aWNlIGlzIGRpcmVj dGx5IGNvbm5lY3RlZAp0byB0aGUgTVNUIFNvdXJjZSBkZXZpY2UgdmlhIGEgc2luZ2xlIGxpbmsg YXMgdGhlIFNvdXJjZSBkZXZpY2UgZ2VuZXJhdGVzCnRob3NlIHZhbHVlcyBiYXNlZCBvbiB0aGUg TFNfQ2xrIG9mIHRoZSBsaW5rIGl0IGlzIGRyaXZpbmcuIEFuIE1TVCBTaW5rCmRldmljZSBtdXN0 IGJlIGFibGUgdG8gcmVnZW5lcmF0ZSBhIHN0cmVhbSBjbG9jayB3aXRob3V0IGRlcGVuZGluZyBv biBNdmlkCmFuZCBNdmlkIHRpbWUgc3RhbXAgdmFsdWVzIGJlY2F1c2UgdGhlIE1TVCBTaW5rIGRl dmljZSBtaWdodCBiZSBwbHVnZ2VkCmludG8gYW4gTVNUIEJyYW5jaCBkZXZpY2UsIG5vdCBhbiBN U1QgU291cmNlIGRldmljZS4iCgpTbyBpZiBJJ20gcmVhZGluZyB0aGF0IHJpZ2h0LCBhbiBNU1Qg c2luayBjYW4gc3RpbGwgdXNlIHRoZSBNL04gdmFsdWVzCmlmIGl0J3MgZGlyZWNsdHkgaG9va2Vk IHVwIHRvIGEgTVNUIHNvdXJjZS4gSGVuY2Ugd2UgcHJvYmFibHkgd2FudCB0bwpmaWxsIG91dCB0 aGUgTS9OIGV2ZW4gZm9yIE1TVC4KCj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVk X25tKTsgaSsrKSB7Cj4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYm Cj4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGF1ZF9ubVtpXS5jbG9jaykpIHsK CmluZGVudCArIHBhcmVucwoKPiArCQkJCXJldHVybiBhdWRfbm1baV0ubjsKPiArCQkJfQo+ICsJ CX0KPiArCX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGF1ZGlvX2NvbmZp Z19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgaW50IHJhdGUpCj4gK3sKPiArCWludCBp Owo+ICsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX0RQKSkgewoKaW50ZWxfaGFzX2RwX2VuY29kZXIoKQoKPiArCQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShhdWRfbm0pOyBpKyspIHsKPiArCQkJaWYgKChyYXRlID09IGF1ZF9ubVtpXS5z YW1wbGVfcmF0ZSkgJiYKPiArCQkJCShjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gYXVkX25t W2ldLmNsb2NrKSkgewoKaW5kZW50ICsgcGFyZW5zCgo+ICsJCQkJcmV0dXJuIGF1ZF9ubVtpXS5t Owo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludCBuLCB1aW50MzJfdCB2YWwp Cj4gK3N0YXRpYyB1aW50MzJfdCBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gKwkJCQkJIGludCBuLCB1aW50MzJfdCB2YWwpCj4gIHsKPiAgCWludCBu X2xvdywgbl91cDsKPiAgCXVpbnQzMl90IHRtcCA9IHZhbDsKPiBAQCAtMTQ1LDE3ICsyMDQsMzkg QEAgc3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQgbiwgdWludDMy X3QgdmFsKQo+ICAJdG1wIHw9ICgobl91cCA8PCBBVURfQ09ORklHX1VQUEVSX05fU0hJRlQpIHwK PiAgCQkJKG5fbG93IDw8IEFVRF9DT05GSUdfTE9XRVJfTl9TSElGVCkgfAo+ICAJCQlBVURfQ09O RklHX05fUFJPR19FTkFCTEUpOwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29u ZmlnLCBJTlRFTF9PVVRQVVRfRFApKQoKaW50ZWxfaGFzX2RwX2VuY29kZXIoKQoKPiArCQl0bXAg fD0gQVVEX0NPTkZJR19OX1ZBTFVFX0lOREVYOwo+ICsJcmV0dXJuIHRtcDsKPiArfQo+ICsKPiAr c3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiArCQkJCQkgaW50IG0sIHVpbnQzMl90IHZhbCkKPiArewo+ICsJdWludDMyX3Qg dG1wID0gdmFsOwo+ICsKPiArCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcs IElOVEVMX09VVFBVVF9EUCkpCj4gKwkJcmV0dXJuIDA7CgpUaGUgY2FsbGVyIGFscmVhZHkgY2hl Y2tlZCB0aGF0LgoKPiArCj4gKwl0bXAgfD0gbTsKPiArCXRtcCB8PSBBVURfTV9DVFNfTV9WQUxV RV9JTkRFWDsKPiArCXRtcCB8PSBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRTsKPiArCj4gIAlyZXR1 cm4gdG1wOwo+ICB9Cj4gIAo+ICAvKiBjaGVjayB3aGV0aGVyIE4vQ1RTL00gbmVlZCBiZSBzZXQg bWFudWFsbHkgKi8KPiAgc3RhdGljIGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gLQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUpCj4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUp Cj4gIHsKPiAtCWlmICgoKG1vZGUtPmNsb2NrID09IFRNRFNfMjk3TSkgfHwKPiAtCQkgKG1vZGUt PmNsb2NrID09IFRNRFNfMjk2TSkpICYmCj4gKwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9jayA9 PSBUTURTXzI5N00pIHx8Cj4gKwkJIChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBUTURTXzI5Nk0p KSAmJgo+ICAJCWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRf SERNSSkpCj4gIAkJcmV0dXJuIHRydWU7Cj4gKwllbHNlIGlmICgoKGNydGMtPmNvbmZpZy0+cG9y dF9jbG9jayA9PSBMQ181NDBNKSB8fAo+ICsJCSAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9 PSBMQ18yNzBNKSB8fAo+ICsJCSAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ18xNjJN KSkgJiYKPiArCQkgIGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQ VVRfRFApKQoKaW50ZWxfaGFzX2RwX2VuY29kZXIoKQoKPiArCQlyZXR1cm4gdHJ1ZTsKPiAgCWVs c2UKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIH0KPiBAQCAtMjg3LDcgKzM2OCw3IEBAIHN0YXRpYyB2 b2lkIGhzd19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0KPiAgCQll bmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+cG9ydDsKPiAtCXVpbnQzMl90IHRtcDsKPiArCXVpbnQzMl90IHRtcCwgbTsK PiAgCWludCBsZW4sIGk7Cj4gIAlpbnQgbiwgcmF0ZTsKPiAgCj4gQEAgLTM0MywxNSArNDI0LDI1 IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKPiAgCQkJRFJNX0VSUk9SKCJpbnZhbGlkIHBvcnQ6ICVkXG4iLCBwb3J0 KTsKPiAgCQkJcmF0ZSA9IDA7Cj4gIAkJfQo+IC0JCW4gPSBhdWRpb19jb25maWdfZ2V0X24oYWRq dXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gKwkJbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihpbnRlbF9jcnRj LCBhZGp1c3RlZF9tb2RlLCByYXRlKTsKPiAgCQlpZiAobiAhPSAwKQo+IC0JCQl0bXAgPSBhdWRp b19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiArCQkJdG1wID0gYXVkaW9fY29uZmlnX3Nl dHVwX25fcmVnKGludGVsX2NydGMsIG4sIHRtcCk7Cj4gIAkJZWxzZQo+ICAJCQlEUk1fREVCVUdf S01TKCJubyBzdWl0YWJsZSBOIHZhbHVlIGlzIGZvdW5kXG4iKTsKPiAgCX0KPiAgCj4gIAlJOTE1 X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOwo+ICAKPiArCS8qIHNldHVwIG0gdmFsdWUg Zm9yIERQICovCj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjLT5jb25maWcs IElOVEVMX09VVFBVVF9EUCkpIHsKCmludGVsX2hhc19kcF9lbmNvZGVyKCkKCj4gKwkJbSA9IGF1 ZGlvX2NvbmZpZ19nZXRfbShpbnRlbF9jcnRjLCByYXRlKTsKPiArCQlpZiAobSAhPSAwKSB7Cj4g KwkJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gKwkJCXRt cCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhpbnRlbF9jcnRjLCBtLCB0bXApOwo+ICsJCQlJ OTE1X1dSSVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwoKV2Ugc2hvdWxkIHBy b2dyYW0gdGhpcyByZWdpc3RlciBldmVuIGZvciBIRE1JLCBzbyB0aGF0IHdlIGRvbid0IGxlYWsK aW52YWxpZCByZWdpc3RlciB2YWx1ZXMgZWcuIHdoZW4gY2hhbmdpbmcgZnJvbSBEUC0+SERNSS4K Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsK PiAgfQo+ICAKPiBAQCAtNjM3LDcgKzcyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21w b25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlOwo+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29t cCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IElOVkFM SURfUElQRTsKPiAtCXUzMiB0bXA7Cj4gKwl1MzIgdG1wLCBtOwo+ICAJaW50IG47Cj4gIAlpbnQg ZXJyID0gMDsKPiAgCj4gQEAgLTY1Myw3ICs3NDQsOCBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9f Y29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlpbnRlbF9l bmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsKPiAgCS8qIGludGVsX2VuY29k ZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovCj4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwg IWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fAo+IC0JICAgIGludGVsX2VuY29kZXItPnR5cGUg IT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiArCSAgICAoKGludGVsX2VuY29kZXItPnR5cGUgIT0g SU5URUxfT1VUUFVUX0hETUkpICYmCj4gKwkgICAgIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElO VEVMX09VVFBVVF9EUCkpKSB7CgpIbW0uIFNob3VsZCBwcm9iYWJsdCBtb3ZlIHRoaXMgc3R1ZmYg bGF0ZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGNoZWNrCmNydGMtPmNvbmZpZy0+b3V0cHV0X3R5cGVz IGluc3RlYWQuIEJ1dCBJIGd1ZXNzIHRoYXQncyBtb3JlCmFwcHJvcHJpYXRlbHkgbGVmdCB0byBh bnkgTVNUIHBhdGNoLgoKPiAgCQlEUk1fREVCVUdfS01TKCJubyB2YWxpZCBwb3J0ICVjXG4iLCBw b3J0X25hbWUocG9ydCkpOwo+ICAJCWVyciA9IC1FTk9ERVY7Cj4gIAkJZ290byB1bmxvY2s7Cj4g QEAgLTY4MSw3ICs3NzMsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNf YXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAkJZ290byB1bmxvY2s7Cj4gIAl9Cj4g IAo+IC0JbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihtb2RlLCByYXRlKTsKPiArCW4gPSBhdWRpb19j b25maWdfZ2V0X24oY3J0YywgbW9kZSwgcmF0ZSk7Cj4gIAlpZiAobiA9PSAwKSB7Cj4gIAkJRFJN X0RFQlVHX0tNUygiVXNpbmcgYXV0b21hdGljIG1vZGUgZm9yIE4gdmFsdWUgb24gcG9ydCAlY1xu IiwKPiAgCQkJCQkgIHBvcnRfbmFtZShwb3J0KSk7Cj4gQEAgLTY5Myw4ICs3ODUsMTcgQEAgc3Rh dGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmlj ZSAqZGV2LAo+ICAKPiAgCS8qIDMuIHNldCB0aGUgTi9DVFMvTSAqLwo+ICAJdG1wID0gSTkxNV9S RUFEKEhTV19BVURfQ0ZHKHBpcGUpKTsKPiAtCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3Jl ZyhuLCB0bXApOwo+ICsJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGNydGMsIG4sIHRt cCk7Cj4gIAlJOTE1X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOwo+ICsJLyogc2V0dXAg bSB2YWx1ZSBmb3IgRFAgKi8KPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZp ZywgSU5URUxfT1VUUFVUX0RQKSkgewoKaW50ZWxfaGFzX2RwX2VuY29kZXIoKQoKPiArCQltID0g YXVkaW9fY29uZmlnX2dldF9tKGNydGMsIHJhdGUpOwo+ICsJCWlmIChtID09IDApCj4gKwkJCWdv dG8gdW5sb2NrOwo+ICsJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBl KSk7Cj4gKwkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX21fcmVnKGNydGMsIG0sIHRtcCk7Cj4g KwkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSwgdG1wKTsKPiArCX0KPiAg Cj4gICB1bmxvY2s6Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gLS0g Cj4gMS45LjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=