From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: set proper N/M in modeset Date: Tue, 2 Aug 2016 13:47:15 +0300 Message-ID: <20160802104715.GQ4329@intel.com> References: <1470101710-57552-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B6ADC6E041 for ; Tue, 2 Aug 2016 10:47:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1470101710-57552-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 T24gVHVlLCBBdWcgMDIsIDIwMTYgYXQgMDk6MzU6MTBBTSArMDgwMCwgbGliaW4ueWFuZ0BsaW51 eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5p bnRlbC5jb20+Cj4gCj4gV2hlbiBtb2Rlc2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQg dG8gc29tZQo+IHNwZWNpYWwgdmFsdWVzIGluIERQIG1vZGUsIHRoZSBOL00gbmVlZCB0byBiZSBz ZXQKPiBtYW51YWxseSBpZiBhdWRpbyBpcyBwbGF5aW5nLgo+IAo+IFRoZSByZWxhdGlvbnNoaXAg b2YgTWF1ZCBhbmQgTmF1ZCBpcyBleHByZXNzZWQgaW4KPiB0aGUgZm9sbG93aW5nIGVxdWF0aW9u Ogo+IE1hdWQvTmF1ZCA9IDUxMiAqIGZzIC8gZl9MU19DbGsKPiAKPiBQbGVhc2UgcmVmZXIgVkVT QSBEaXNwbGF5UG9ydCBTdGFuZGFyZCBzcGVjIGZvciBkZXRhaWxzLgo+IAo+IEFsc28sIHRoZSBw YXRjaCBhcHBsaWVzCj4gY29tbWl0IDdlODI3NWMyZjJiYiAoImRybS9pOTE1OiBzZXQgcHJvcGVy IE4vQ1RTIGluIG1vZGVzZXQiKQo+IHRvIEFQTCBwbGF0Zm9ybS4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgNiArKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdWRpby5jIHwgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggOGJmZGU3NS4uMmY5ZDAwZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03MzUxLDYgKzczNTEsMTIgQEAgZW51 bSB7Cj4gICNkZWZpbmUgX0hTV19BVURfQ09ORklHX0IJCTB4NjUxMDAKPiAgI2RlZmluZSBIU1df QVVEX0NGRyhwaXBlKQkJX01NSU9fUElQRShwaXBlLCBfSFNXX0FVRF9DT05GSUdfQSwgX0hTV19B VURfQ09ORklHX0IpCj4gIAo+ICsjZGVmaW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BCQkweDY1 MDI4Cj4gKyNkZWZpbmUgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IJCTB4NjUxMjgKPiArI2RlZmlu ZSBIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKQkJX01NSU9fUElQRShwaXBlLCBfSFNXX0FVRF9N X0NUU19FTkFCTEVfQSwgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IpCj4gKyNkZWZpbmUgICBBVURf TV9DVFNfTV9WQUxVRV9JTkRFWAkoMSA8PCAyMSkKPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1BS T0dfRU5BQkxFCSgxIDw8IDIwKQo+ICsKPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQQkJ MHg2NTAxMAo+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9CCQkweDY1MTEwCj4gICNkZWZp bmUgSFNXX0FVRF9NSVNDX0NUUkwocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX0hTV19BVURfTUlT Q19DVFJMX0EsIF9IU1dfQVVEX01JU0NfQ1RSTF9CKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYwo+IGluZGV4IDY3MDBhN2IuLmRlNTVlY2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F1ZGlvLmMKPiBAQCAtOTgsNiArOTgsMjIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gIAl7 IDE5MjAwMCwgVE1EU18yOTdNLCAyMDQ4MCwgMjQ3NTAwIH0sCj4gIH07Cj4gIAo+ICsjZGVmaW5l IExDXzU0ME0gNTQwMDAwCj4gKyNkZWZpbmUgTENfMTYyTSAxNjIwMDAKCkRvIHdlIGhhdmUgc29t ZSBleHBsYW5hdGlvbiB3aHkgMi43IGRvZXNuJ3QgbmVlZCBNL04gcHJvZ3JhbW1pbmcsCmJ1dCAx LjYyIGFuZCA1LjQgZG8/CgpBbmQgSSBzZWUgeW91J3JlIG9ubHkgZG9pbmcgdGhpcyBvbiBIU1cr LiBFYXJsaWVyIHBsYXRmb3JtcyBkb24ndCBuZWVkCnRoaXM/Cgo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKPiArCWludCBzYW1wbGVfcmF0ZTsKPiArCWludCBjbG9jazsKPiArCWludCBuOwo+ICsJ aW50IG07CgpDYW4gc2F2ZSBhIGJpdCBvZiBzcGFjZSBieSB1c2luZyB1MTYgZm9yIG0gYW5kIG4u Cgo+ICt9IGF1ZF9ubVtdID0gewo+ICsJezQ4MDAwLCBMQ181NDBNLCA1NjI1LCAyNTZ9LGAKPiAr CXs0NDEwMCwgTENfNTQwTSwgOTM3NSwgMzkyfSwKPiArCXszMjAwMCwgTENfNTQwTSwgMTY4NzUs IDUxMn0sCj4gKwl7NDgwMDAsIExDXzE2Mk0sIDMzNzUsIDUxMn0sCj4gKwl7NDQxMDAsIExDXzE2 Mk0sIDU2MjUsIDc4NH0sCj4gKwl7MzIwMDAsIExDXzE2Mk0sIDEwMTI1LCAxMDI0Cj4gK307CgpU aGUgbnVtYmVycyBsb29rIGdvb2QsIGJ1dCB3aGF0IGFib3V0IG90aGVyIHNhbXBsZSByYXRlcz8g Rm9yIEhETUkgd2UgZ28KdXAgdG8gMTkya0h6LCB3aHkgbm90IGZvciBEUD8KCj4gKwo+ICAvKiBn ZXQgQVVEX0NPTkZJR19QSVhFTF9DTE9DS19IRE1JXyogdmFsdWUgZm9yIG1vZGUgKi8KPiAgc3Rh dGljIHUzMiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKPiAgewo+IEBAIC0xMjEsMjAgKzEzNyw1MCBAQCBz dGF0aWMgdTMyIGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZAo+ICAJcmV0dXJuIGhkbWlfYXVkaW9fY2xvY2tbaV0uY29u ZmlnOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbihjb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgaW50IHJhdGUpCj4gK3N0YXRpYyBpbnQgYXVkaW9f Y29uZmlnX2dldF9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCQkgICAgICBjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKPiArCQkJICAgICAgaW50IHJh dGUpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMt PmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoYXVkX25jdHMpOyBpKyspIHsKPiArCQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ldLnNh bXBsZV9yYXRlKSAmJgo+ICsJCQkJKGFkanVzdGVkX21vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ld LmNsb2NrKSkgewo+ICsJCQkJcmV0dXJuIGF1ZF9uY3RzW2ldLm47Cj4gKwkJCX0KPiArCQl9Cj4g Kwl9Cj4gKwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9P VVRQVVRfRFApKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsr KSB7Cj4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYmCj4gKwkJCQko Y3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGF1ZF9ubVtpXS5jbG9jaykpIHsKPiArCQkJCXJl dHVybiBhdWRfbm1baV0ubjsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywgaW50IHJhdGUpCj4gIHsKPiAgCWludCBpOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7Cj4gLQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ld LnNhbXBsZV9yYXRlKSAmJgo+IC0JCQkobW9kZS0+Y2xvY2sgPT0gYXVkX25jdHNbaV0uY2xvY2sp KSB7Cj4gLQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsrKSB7Cj4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0u c2FtcGxlX3JhdGUpICYmCj4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGF1ZF9u bVtpXS5jbG9jaykpIHsKPiArCQkJCXJldHVybiBhdWRfbm1baV0ubTsKPiArCQkJfQo+ICAJCX0K PiAgCX0KPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHVpbnQzMl90IGF1ZGlv X2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQgbiwgdWludDMyX3QgdmFsKQo+ICtzdGF0aWMgdWludDMy X3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJ CQkJCSBpbnQgbiwgdWludDMyX3QgdmFsKQo+ICB7Cj4gIAlpbnQgbl9sb3csIG5fdXA7Cj4gIAl1 aW50MzJfdCB0bXAgPSB2YWw7Cj4gQEAgLTE0NSwxNyArMTkxLDM4IEBAIHN0YXRpYyB1aW50MzJf dCBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoaW50IG4sIHVpbnQzMl90IHZhbCkKPiAgCXRtcCB8 PSAoKG5fdXAgPDwgQVVEX0NPTkZJR19VUFBFUl9OX1NISUZUKSB8Cj4gIAkJCShuX2xvdyA8PCBB VURfQ09ORklHX0xPV0VSX05fU0hJRlQpIHwKPiAgCQkJQVVEX0NPTkZJR19OX1BST0dfRU5BQkxF KTsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVU X0RQKSkKPiArCQl0bXAgfD0gQVVEX0NPTkZJR19OX1ZBTFVFX0lOREVYOwo+ICsJcmV0dXJuIHRt cDsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCQkgaW50IG0sIHVpbnQzMl90IHZhbCkKPiAr ewo+ICsJdWludDMyX3QgdG1wID0gdmFsOwo+ICsKPiArCWlmICghaW50ZWxfY3J0Y19oYXNfdHlw ZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ dG1wIHw9IG07Cj4gKwl0bXAgfD0gQVVEX01fQ1RTX01fVkFMVUVfSU5ERVg7Cj4gKwl0bXAgfD0g QVVEX01fQ1RTX01fUFJPR19FTkFCTEU7Cj4gKwo+ICAJcmV0dXJuIHRtcDsKPiAgfQo+ICAKPiAg LyogY2hlY2sgd2hldGhlciBOL0NUUy9NIG5lZWQgYmUgc2V0IG1hbnVhbGx5ICovCj4gIHN0YXRp YyBib29sIGF1ZGlvX3JhdGVfbmVlZF9wcm9nKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IC0J CQkJIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICsJCQkJIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+ICB7Cj4gLQlpZiAoKChtb2Rl LT5jbG9jayA9PSBUTURTXzI5N00pIHx8Cj4gLQkJIChtb2RlLT5jbG9jayA9PSBUTURTXzI5Nk0p KSAmJgo+ICsJaWYgKCgoYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gVE1EU18yOTdNKSB8fAo+ICsJ CSAoYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYKPiAgCQlpbnRlbF9jcnRj X2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKQo+ICAJCXJldHVybiB0 cnVlOwo+ICsJZWxzZSBpZiAoKChjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gTENfNTQwTSkg fHwKPiArCQkgICAoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzE2Mk0pKSAmJgo+ICsJ CSAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCj4g KwkJcmV0dXJuIHRydWU7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICB9Cj4gQEAgLTI4 Nyw3ICszNTQsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9Cj4gIAkJZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiAg CWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gLQl1aW50MzJfdCB0bXA7 Cj4gKwl1aW50MzJfdCB0bXAsIG07Cj4gIAlpbnQgbGVuLCBpOwo+ICAJaW50IG4sIHJhdGU7Cj4g IAo+IEBAIC0zNDMsMTUgKzQxMCwyNSBAQCBzdGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZW5h YmxlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCURSTV9FUlJPUigiaW52 YWxpZCBwb3J0OiAlZFxuIiwgcG9ydCk7Cj4gIAkJCXJhdGUgPSAwOwo+ICAJCX0KPiAtCQluID0g YXVkaW9fY29uZmlnX2dldF9uKGFkanVzdGVkX21vZGUsIHJhdGUpOwo+ICsJCW4gPSBhdWRpb19j b25maWdfZ2V0X24oaW50ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gIAkJaWYgKG4g IT0gMCkKPiAtCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7Cj4gKwkJ CXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnRlbF9jcnRjLCBuLCB0bXApOwo+ICAJ CWVsc2UKPiAgCQkJRFJNX0RFQlVHX0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcyBmb3VuZFxu Iik7Cj4gIAl9Cj4gIAo+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiAg Cj4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoaW50ZWxfY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKSB7Cj4gKwkJbSA9IGF1ZGlv X2NvbmZpZ19nZXRfbShpbnRlbF9jcnRjLCByYXRlKTsKPiArCQlpZiAobSAhPSAwKSB7Cj4gKwkJ CXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gKwkJCXRtcCA9 IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhpbnRlbF9jcnRjLCBtLCB0bXApOwo+ICsJCQlJOTE1 X1dSSVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+ICsJCX0KPiArCX0KPiAr Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gIH0KPiAgCj4gQEAgLTYz Nyw3ICs3MTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9f cmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJpdi0+YXVk aW9fY29tcG9uZW50Owo+ICAJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7Cj4gLQl1MzIg dG1wOwo+ICsJdTMyIHRtcCwgbTsKPiAgCWludCBuOwo+ICAJaW50IGVyciA9IDA7Cj4gIAo+IEBA IC02NDUsNyArNzIyLDggQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1 ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJaWYgKCFJU19TS1lMQUtFKGRldl9wcml2 KSAmJgo+ICAJICAgICFJU19LQUJZTEFLRShkZXZfcHJpdikgJiYKPiAgCSAgICAhSVNfQlJPQURX RUxMKGRldl9wcml2KSAmJgo+IC0JICAgICFJU19IQVNXRUxMKGRldl9wcml2KSkKPiArCSAgICAh SVNfSEFTV0VMTChkZXZfcHJpdikgJiYKPiArCSAgICAhSVNfQlJPWFRPTihkZXZfcHJpdikpCj4g IAkJcmV0dXJuIDA7CgpIQVNfRERJIHBlcmhhcHM/Cgo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9w cml2LT5hdl9tdXRleCk7Cj4gQEAgLTY1Myw3ICs3MzEsOCBAQCBzdGF0aWMgaW50IGk5MTVfYXVk aW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlpbnRl bF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsKPiAgCS8qIGludGVsX2Vu Y29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovCj4gIAlpZiAoIWludGVsX2VuY29kZXIg fHwgIWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fAo+IC0JICAgIGludGVsX2VuY29kZXItPnR5 cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiArCSAgICAoKGludGVsX2VuY29kZXItPnR5cGUg IT0gSU5URUxfT1VUUFVUX0hETUkpICYmCj4gKwkgICAgIChpbnRlbF9lbmNvZGVyLT50eXBlICE9 IElOVEVMX09VVFBVVF9EUCkpKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygibm8gdmFsaWQgcG9ydCAl Y1xuIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiAgCQllcnIgPSAtRU5PREVWOwo+ICAJCWdvdG8gdW5s b2NrOwo+IEBAIC02ODEsNyArNzYwLDcgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVu dF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCWdvdG8gdW5sb2NrOwo+ ICAJfQo+ICAKPiAtCW4gPSBhdWRpb19jb25maWdfZ2V0X24obW9kZSwgcmF0ZSk7Cj4gKwluID0g YXVkaW9fY29uZmlnX2dldF9uKGNydGMsIG1vZGUsIHJhdGUpOwo+ICAJaWYgKG4gPT0gMCkgewo+ ICAJCURSTV9ERUJVR19LTVMoIlVzaW5nIGF1dG9tYXRpYyBtb2RlIGZvciBOIHZhbHVlIG9uIHBv cnQgJWNcbiIsCj4gIAkJCQkJICBwb3J0X25hbWUocG9ydCkpOwo+IEBAIC02OTMsOCArNzcyLDE3 IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVj dCBkZXZpY2UgKmRldiwKPiAgCj4gIAkvKiAzLiBzZXQgdGhlIE4vQ1RTL00gKi8KPiAgCXRtcCA9 IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBlKSk7Cj4gLQl0bXAgPSBhdWRpb19jb25maWdfc2V0 dXBfbl9yZWcobiwgdG1wKTsKPiArCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhjcnRj LCBuLCB0bXApOwo+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiArCS8q IHNldHVwIG0gdmFsdWUgZm9yIERQICovCj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj LT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiArCQltID0gYXVkaW9fY29uZmlnX2dldF9t KGNydGMsIHJhdGUpOwo+ICsJCWlmIChtID09IDApCj4gKwkJCWdvdG8gdW5sb2NrOwo+ICsJCXRt cCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gKwkJdG1wID0gYXVk aW9fY29uZmlnX3NldHVwX21fcmVnKGNydGMsIG0sIHRtcCk7Cj4gKwkJSTkxNV9XUklURShIU1df QVVEX01fQ1RTX0VOQUJMRShwaXBlKSwgdG1wKTsKPiArCX0KPiAgCj4gICB1bmxvY2s6Cj4gIAlt dXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gLS0gCj4gMS45LjEKCi0tIApWaWxs ZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=