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: Thu, 4 Aug 2016 08:39:04 +0300 Message-ID: <20160804053904.GQ4329@intel.com> References: <1470101710-57552-1-git-send-email-libin.yang@linux.intel.com> <20160802104715.GQ4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F7E20@SHSMSX103.ccr.corp.intel.com> <96A12704CE18D347B625EE2D4A099D19119F8A8E@SHSMSX103.ccr.corp.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 228706E381 for ; Thu, 4 Aug 2016 05:39:08 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F8A8E@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" Cc: "'tiwai@suse.de'" , "Vetter, Daniel" , "'libin.yang@linux.intel.com'" , "'intel-gfx@lists.freedesktop.org'" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBdWcgMDQsIDIwMTYgYXQgMDI6NDg6NTRBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gSGkgVmlsbGUsCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJv bTogWWFuZywgTGliaW4KPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyLCAyMDE2IDk6NTkgUE0K PiA+IFRvOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPjsg bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20KPiA+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnOyBqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb207IFZldHRlciwgRGFuaWVsCj4g PiA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+OyB0aXdhaUBzdXNlLmRlCj4gPiBTdWJqZWN0OiBS RTogW1BBVENIXSBkcm0vaTkxNTogc2V0IHByb3BlciBOL00gaW4gbW9kZXNldAo+ID4gCj4gPiBI aSBWaWxsZQo+ID4gCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+IEZyb206 IFZpbGxlIFN5cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMiwgMjAxNiA2OjQ3IFBNCj4gPiA+IFRvOiBsaWJp bi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZzsgamFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tOwo+ID4gPiBWZXR0ZXIsIERhbmll bCA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+OyB0aXdhaUBzdXNlLmRlOyBZYW5nLCBMaWJpbgo+ ID4gPiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+Cj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGRy bS9pOTE1OiBzZXQgcHJvcGVyIE4vTSBpbiBtb2Rlc2V0Cj4gPiA+Cj4gPiA+IE9uIFR1ZSwgQXVn IDAyLCAyMDE2IGF0IDA5OjM1OjEwQU0gKzA4MDAsIGxpYmluLnlhbmdAbGludXguaW50ZWwuY29t Cj4gPiB3cm90ZToKPiA+ID4gPiBGcm9tOiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxpbnV4Lmlu dGVsLmNvbT4KPiA+ID4gPgo+ID4gPiA+IFdoZW4gbW9kZXNldCBvY2N1cnMgYW5kIHRoZSBMU19D TEsgaXMgc2V0IHRvIHNvbWUgc3BlY2lhbCB2YWx1ZXMgaW4KPiA+ID4gPiBEUCBtb2RlLCB0aGUg Ti9NIG5lZWQgdG8gYmUgc2V0IG1hbnVhbGx5IGlmIGF1ZGlvIGlzIHBsYXlpbmcuCj4gPiA+ID4K PiA+ID4gPiBUaGUgcmVsYXRpb25zaGlwIG9mIE1hdWQgYW5kIE5hdWQgaXMgZXhwcmVzc2VkIGlu IHRoZSBmb2xsb3dpbmcKPiA+ID4gPiBlcXVhdGlvbjoKPiA+ID4gPiBNYXVkL05hdWQgPSA1MTIg KiBmcyAvIGZfTFNfQ2xrCj4gPiA+ID4KPiA+ID4gPiBQbGVhc2UgcmVmZXIgVkVTQSBEaXNwbGF5 UG9ydCBTdGFuZGFyZCBzcGVjIGZvciBkZXRhaWxzLgo+ID4gPiA+Cj4gPiA+ID4gQWxzbywgdGhl IHBhdGNoIGFwcGxpZXMKPiA+ID4gPiBjb21taXQgN2U4Mjc1YzJmMmJiICgiZHJtL2k5MTU6IHNl dCBwcm9wZXIgTi9DVFMgaW4gbW9kZXNldCIpIHRvIEFQTAo+ID4gPiA+IHBsYXRmb3JtLgo+ID4g PiA+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5p bnRlbC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICAgfCAgIDYgKysKPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYyB8IDEyMgo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0K PiA+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25z KC0pCj4gPiA+ID4KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBpbmRleCA4 YmZkZTc1Li4yZjlkMDBlIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPiA+ID4gQEAgLTczNTEsNiArNzM1MSwxMiBAQCBlbnVtIHsKPiA+ID4gPiAgI2RlZmluZSBf SFNXX0FVRF9DT05GSUdfQgkJMHg2NTEwMAo+ID4gPiA+ICAjZGVmaW5lIEhTV19BVURfQ0ZHKHBp cGUpCQlfTU1JT19QSVBFKHBpcGUsCj4gPiA+IF9IU1dfQVVEX0NPTkZJR19BLCBfSFNXX0FVRF9D T05GSUdfQikKPiA+ID4gPgo+ID4gPiA+ICsjZGVmaW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9B CQkweDY1MDI4Cj4gPiA+ID4gKyNkZWZpbmUgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IJCTB4NjUx MjgKPiA+ID4gPiArI2RlZmluZSBIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKQkJX01NSU9fUElQ RShwaXBlLAo+ID4gPiBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hTV19BVURfTV9DVFNfRU5B QkxFX0IpCj4gPiA+ID4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9WQUxVRV9JTkRFWAkoMSA8PCAy MSkKPiA+ID4gPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1BST0dfRU5BQkxFCSgxIDw8IDIwKQo+ ID4gPiA+ICsKPiA+ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQQkJMHg2NTAxMAo+ ID4gPiA+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9CCQkweDY1MTEwCj4gPiA+ID4gICNk ZWZpbmUgSFNXX0FVRF9NSVNDX0NUUkwocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwKPiA+ID4gX0hT V19BVURfTUlTQ19DVFJMX0EsIF9IU1dfQVVEX01JU0NfQ1RSTF9CKQo+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4gaW5kZXggNjcwMGE3Yi4uZGU1NWVj ZiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j Cj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ IEBAIC05OCw2ICs5OCwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4gPiAgCXsgMTky MDAwLCBUTURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwgIH07Cj4gPiA+ID4KPiA+ID4gPiArI2Rl ZmluZSBMQ181NDBNIDU0MDAwMAo+ID4gPiA+ICsjZGVmaW5lIExDXzE2Mk0gMTYyMDAwCj4gPiA+ Cj4gPiA+IERvIHdlIGhhdmUgc29tZSBleHBsYW5hdGlvbiB3aHkgMi43IGRvZXNuJ3QgbmVlZCBN L04gcHJvZ3JhbW1pbmcsIGJ1dAo+ID4gPiAxLjYyIGFuZCA1LjQgZG8/Cj4gPiAKPiA+IEkgZGlk bid0IHVzZSAyLjcgYmVjYXVzZSBJIGNhbid0IGZpbmQgYSBtb2RlIHVzaW5nIDIuNy4gU28gSSBj YW4ndCBkbyB0aGUgdGVzdC4KPiA+IDUuNCBpcyBmb3IgNEsgYW5kIDEuNjIgaXMgZm9yIDEwODBw Lgo+ID4gCj4gPiA+Cj4gPiA+IEFuZCBJIHNlZSB5b3UncmUgb25seSBkb2luZyB0aGlzIG9uIEhT VysuIEVhcmxpZXIgcGxhdGZvcm1zIGRvbid0IG5lZWQgdGhpcz8KPiA+IAo+ID4gV2UgYXJlIG5v dCBzdXBwb3J0aW5nIGVhcmxpZXIgcGxhdGZvcm1zIGFuZCBJJ20gbm90IHN1cmUgd2hldGhlciB0 aGUgb2xkCj4gPiBwbGF0Zm9ybXMgc3VwcG9ydHMgNEsgRFAgb3Igbm90Lgo+ID4gCj4gPiA+Cj4g PiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiA+ICsJaW50IHNhbXBsZV9yYXRlOwo+ ID4gPiA+ICsJaW50IGNsb2NrOwo+ID4gPiA+ICsJaW50IG47Cj4gPiA+ID4gKwlpbnQgbTsKPiA+ ID4KPiA+ID4gQ2FuIHNhdmUgYSBiaXQgb2Ygc3BhY2UgYnkgdXNpbmcgdTE2IGZvciBtIGFuZCBu Lgo+ID4gCj4gPiBPSywgSSB3aWxsIGRvIGl0IGluIG5leHQgdmVyc2lvbi4KPiA+IAo+ID4gPgo+ ID4gPiA+ICt9IGF1ZF9ubVtdID0gewo+ID4gPiA+ICsJezQ4MDAwLCBMQ181NDBNLCA1NjI1LCAy NTZ9LGAKPiA+ID4gPiArCXs0NDEwMCwgTENfNTQwTSwgOTM3NSwgMzkyfSwKPiA+ID4gPiArCXsz MjAwMCwgTENfNTQwTSwgMTY4NzUsIDUxMn0sCj4gPiA+ID4gKwl7NDgwMDAsIExDXzE2Mk0sIDMz NzUsIDUxMn0sCj4gPiA+ID4gKwl7NDQxMDAsIExDXzE2Mk0sIDU2MjUsIDc4NH0sCj4gPiA+ID4g Kwl7MzIwMDAsIExDXzE2Mk0sIDEwMTI1LCAxMDI0Cj4gPiA+ID4gK307Cj4gPiA+Cj4gPiA+IFRo ZSBudW1iZXJzIGxvb2sgZ29vZCwgYnV0IHdoYXQgYWJvdXQgb3RoZXIgc2FtcGxlIHJhdGVzPyBG b3IgSERNSSB3ZQo+ID4gPiBnbyB1cCB0byAxOTJrSHosIHdoeSBub3QgZm9yIERQPwo+ID4gCj4g PiBPdXIgdGVzdCBvbmx5IGluY2x1ZGVzIDMySywgNDQuMUsgYW5kIDQ4SyA6KSBJIHdpbGwgYWRk IHRoZSBzdXBwb3J0IGlmIHlvdSB0aGluawo+ID4gd2Ugc2hvdWxkLgo+IAo+IEkgd2lsbCBub3Qg YWRkIDE5MktIeiwgOTZLSHogYW5kIGV0YyByYXRlIHN1cHBvcnQgYXMgYmFzZWQgb24gbXkgdGVz dAo+IHRoZXNlIHJhdGUgd2lsbCBiZSBub3QgdXNlZCBpbiBEUC4gSXQgd2lsbCBiZSBjb252ZXJ0 ZWQgdG8gNDhLSHouCgpIb3cgYWJvdXQgYmFzaW5nIHRoYXQgZGVjaXNpb24gb24gd2hhdCdzIGFj dHVhbGx5IGFsbG93ZWQgYnkgdGhlIGRyaXZlcj8KSSBjYW4gZG8gOTZrSHogRFAgYXVkaW8gb24g bXkgSFNXIGp1c3QgZmluZSBoZXJlLiBTbyBjbGVhcmx5IGlmIHRoZQpkaXNwbGF5IHN1cHBvcnRz IGl0LCB0aGVyZSBpcyBub3RoaW5nIG9uIHRoZSBBTFNBIHNpZGUgdGhhdCB3b3VsZCBwcmV2ZW50 Cml0IGZyb20gYmVpbmcgdXNlZC4KCj4gCj4gPiAKPiA+ID4KPiA+ID4gPiArCj4gPiA+ID4gIC8q IGdldCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfKiB2YWx1ZSBmb3IgbW9kZSAqLyAgc3Rh dGljIHUzMgo+ID4gPiA+IGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlCj4gPiA+ID4gKmFkanVzdGVkX21vZGUpICB7IEBAIC0xMjEsMjAg KzEzNyw1MCBAQCBzdGF0aWMgdTMyCj4gPiA+ID4gYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xv Y2soY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkCj4gPiA+ID4gIAlyZXR1 cm4gaGRtaV9hdWRpb19jbG9ja1tpXS5jb25maWc7ICB9Cj4gPiA+ID4KPiA+ID4gPiAtc3RhdGlj IGludCBhdWRpb19jb25maWdfZ2V0X24oY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsCj4gPiA+ID4gaW50IHJhdGUpCj4gPiA+ID4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dl dF9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gPiA+ICsJCQkgICAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKPiA+ID4gPiArCQkJICAgICAgaW50 IHJhdGUpCj4gPiA+ID4gK3sKPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKSB7 Cj4gPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25jdHMpOyBpKyspIHsK PiA+ID4gPiArCQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRlKSAmJgo+ID4g PiA+ICsJCQkJKGFkanVzdGVkX21vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSkgewo+ ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9uY3RzW2ldLm47Cj4gPiA+ID4gKwkJCX0KPiA+ID4gPiAr CQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKSB7Cj4gPiA+ID4gKwkJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsrKSB7Cj4gPiA+ID4gKwkJCWlmICgocmF0ZSA9 PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYmCj4gPiA+ID4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5w b3J0X2Nsb2NrID09IGF1ZF9ubVtpXS5jbG9jaykpCj4gPiA+IHsKPiA+ID4gPiArCQkJCXJldHVy biBhdWRfbm1baV0ubjsKPiA+ID4gPiArCQkJfQo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCX0KPiA+ ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50 IGF1ZGlvX2NvbmZpZ19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgaW50IHJhdGUpCj4g PiA+ID4gIHsKPiA+ID4gPiAgCWludCBpOwo+ID4gPiA+Cj4gPiA+ID4gLQlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+ID4gPiA+IC0JCWlmICgocmF0ZSA9PSBh dWRfbmN0c1tpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gPiAtCQkJKG1vZGUtPmNsb2NrID09IGF1 ZF9uY3RzW2ldLmNsb2NrKSkgewo+ID4gPiA+IC0JCQlyZXR1cm4gYXVkX25jdHNbaV0ubjsKPiA+ ID4gPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVU X0RQKSkgewo+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9ubSk7IGkr Kykgewo+ID4gPiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25tW2ldLnNhbXBsZV9yYXRlKSAmJgo+ ID4gPiA+ICsJCQkJKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBhdWRfbm1baV0uY2xvY2sp KQo+ID4gPiB7Cj4gPiA+ID4gKwkJCQlyZXR1cm4gYXVkX25tW2ldLm07Cj4gPiA+ID4gKwkJCX0K PiA+ID4gPiAgCQl9Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gKwo+ID4gPiA+ICAJcmV0dXJuIDA7Cj4g PiA+ID4gIH0KPiA+ID4gPgo+ID4gPiA+IC1zdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3Nl dHVwX25fcmVnKGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBh dWRpb19jb25maWdfc2V0dXBfbl9yZWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ID4g KwkJCQkJIGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gIHsKPiA+ID4gPiAgCWludCBuX2xv dywgbl91cDsKPiA+ID4gPiAgCXVpbnQzMl90IHRtcCA9IHZhbDsKPiA+ID4gPiBAQCAtMTQ1LDE3 ICsxOTEsMzggQEAgc3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQK PiA+ID4gPiBuLAo+ID4gPiB1aW50MzJfdCB2YWwpCj4gPiA+ID4gIAl0bXAgfD0gKChuX3VwIDw8 IEFVRF9DT05GSUdfVVBQRVJfTl9TSElGVCkgfAo+ID4gPiA+ICAJCQkobl9sb3cgPDwgQVVEX0NP TkZJR19MT1dFUl9OX1NISUZUKSB8Cj4gPiA+ID4gIAkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJM RSk7Cj4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVM X09VVFBVVF9EUCkpCj4gPiA+ID4gKwkJdG1wIHw9IEFVRF9DT05GSUdfTl9WQUxVRV9JTkRFWDsK PiA+ID4gPiArCXJldHVybiB0bXA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRp YyB1aW50MzJfdCBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gPiA+ID4gKwkJCQkJIGludCBtLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gK3sKPiA+ID4g PiArCXVpbnQzMl90IHRtcCA9IHZhbDsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoIWludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKQo+ID4gPiA+ICsJCXJl dHVybiAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCXRtcCB8PSBtOwo+ID4gPiA+ICsJdG1wIHw9IEFV RF9NX0NUU19NX1ZBTFVFX0lOREVYOwo+ID4gPiA+ICsJdG1wIHw9IEFVRF9NX0NUU19NX1BST0df RU5BQkxFOwo+ID4gPiA+ICsKPiA+ID4gPiAgCXJldHVybiB0bXA7Cj4gPiA+ID4gIH0KPiA+ID4g Pgo+ID4gPiA+ICAvKiBjaGVjayB3aGV0aGVyIE4vQ1RTL00gbmVlZCBiZSBzZXQgbWFudWFsbHkg Ki8gIHN0YXRpYyBib29sCj4gPiA+ID4gYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gPiA+ID4gLQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUpCj4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ID4g KmFkanVzdGVkX21vZGUpCj4gPiA+ID4gIHsKPiA+ID4gPiAtCWlmICgoKG1vZGUtPmNsb2NrID09 IFRNRFNfMjk3TSkgfHwKPiA+ID4gPiAtCQkgKG1vZGUtPmNsb2NrID09IFRNRFNfMjk2TSkpICYm Cj4gPiA+ID4gKwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBUTURTXzI5N00pIHx8Cj4g PiA+ID4gKwkJIChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBUTURTXzI5Nk0pKSAmJgo+ID4gPiA+ ICAJCWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkp Cj4gPiA+ID4gIAkJcmV0dXJuIHRydWU7Cj4gPiA+ID4gKwllbHNlIGlmICgoKGNydGMtPmNvbmZp Zy0+cG9ydF9jbG9jayA9PSBMQ181NDBNKSB8fAo+ID4gPiA+ICsJCSAgIChjcnRjLT5jb25maWct PnBvcnRfY2xvY2sgPT0gTENfMTYyTSkpICYmCj4gPiA+ID4gKwkJICBpbnRlbF9jcnRjX2hhc190 eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkKPiA+ID4gPiArCQlyZXR1cm4gdHJ1 ZTsKPiA+ID4gPiAgCWVsc2UKPiA+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gIH0KPiA+ ID4gPiBAQCAtMjg3LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRpb19jb2RlY19lbmFi bGUoc3RydWN0Cj4gPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiAgCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0KPiA+ID4gPiAgCQllbmNfdG9f ZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+cG9ydDsKPiA+ID4gPiAtCXVpbnQzMl90IHRtcDsKPiA+ID4gPiArCXVpbnQz Ml90IHRtcCwgbTsKPiA+ID4gPiAgCWludCBsZW4sIGk7Cj4gPiA+ID4gIAlpbnQgbiwgcmF0ZTsK PiA+ID4gPgo+ID4gPiA+IEBAIC0zNDMsMTUgKzQxMCwyNSBAQCBzdGF0aWMgdm9pZCBoc3dfYXVk aW9fY29kZWNfZW5hYmxlKHN0cnVjdAo+ID4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4g PiA+ID4gIAkJCURSTV9FUlJPUigiaW52YWxpZCBwb3J0OiAlZFxuIiwgcG9ydCk7Cj4gPiA+ID4g IAkJCXJhdGUgPSAwOwo+ID4gPiA+ICAJCX0KPiA+ID4gPiAtCQluID0gYXVkaW9fY29uZmlnX2dl dF9uKGFkanVzdGVkX21vZGUsIHJhdGUpOwo+ID4gPiA+ICsJCW4gPSBhdWRpb19jb25maWdfZ2V0 X24oaW50ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gPiA+ID4gIAkJaWYgKG4gIT0g MCkKPiA+ID4gPiAtCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7Cj4g PiA+ID4gKwkJCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnRlbF9jcnRjLCBuLCB0 bXApOwo+ID4gPiA+ICAJCWVsc2UKPiA+ID4gPiAgCQkJRFJNX0RFQlVHX0tNUygibm8gc3VpdGFi bGUgTiB2YWx1ZSBpcyBmb3VuZFxuIik7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4KPiA+ID4gPiAgCUk5 MTVfV1JJVEUoSFNXX0FVRF9DRkcocGlwZSksIHRtcCk7Cj4gPiA+ID4KPiA+ID4gPiArCS8qIHNl dHVwIG0gdmFsdWUgZm9yIERQICovCj4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShp bnRlbF9jcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPiArCQltID0gYXVk aW9fY29uZmlnX2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+ID4gPiA+ICsJCWlmIChtICE9IDAp IHsKPiA+ID4gPiArCQkJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUp KTsKPiA+ID4gPiArCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX21fcmVnKGludGVsX2NydGMs IG0sIHRtcCk7Cj4gPiA+ID4gKwkJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlw ZSksIHRtcCk7Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiAgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPiA+ID4gPiAgfQo+ID4gPiA+Cj4gPiA+ ID4gQEAgLTYzNyw3ICs3MTQsNyBAQCBzdGF0aWMgaW50Cj4gPiA+IGk5MTVfYXVkaW9fY29tcG9u ZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBv bmVudCAqYWNvbXAgPSBkZXZfcHJpdi0+YXVkaW9fY29tcG9uZW50Owo+ID4gPiA+ICAJZW51bSBw aXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7Cj4gPiA+ID4gLQl1MzIgdG1wOwo+ID4gPiA+ICsJdTMy IHRtcCwgbTsKPiA+ID4gPiAgCWludCBuOwo+ID4gPiA+ICAJaW50IGVyciA9IDA7Cj4gPiA+ID4K PiA+ID4gPiBAQCAtNjQ1LDcgKzcyMiw4IEBAIHN0YXRpYyBpbnQKPiA+ID4gaTkxNV9hdWRpb19j b21wb25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiAgCWlm ICghSVNfU0tZTEFLRShkZXZfcHJpdikgJiYKPiA+ID4gPiAgCSAgICAhSVNfS0FCWUxBS0UoZGV2 X3ByaXYpICYmCj4gPiA+ID4gIAkgICAgIUlTX0JST0FEV0VMTChkZXZfcHJpdikgJiYKPiA+ID4g PiAtCSAgICAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4gPiA+ID4gKwkgICAgIUlTX0hBU1dFTEwo ZGV2X3ByaXYpICYmCj4gPiA+ID4gKwkgICAgIUlTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gPiA+ ICAJCXJldHVybiAwOwo+ID4gPgo+ID4gPiBIQVNfRERJIHBlcmhhcHM/Cj4gPiAKPiA+IERvIHlv dSBtZWFuIHdlIHNob3VsZCBhZGQgIiYmIEhBU19EREkiPwo+ID4gQ291bGQgeW91IHBsZWFzZSBn aXZlIG1lIG1vcmUgZGV0YWlscz8KPiA+IAo+ID4gUmVnYXJkcywKPiA+IExpYmluCj4gPiAKPiA+ ID4KPiA+ID4gPgo+ID4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPiA+ ID4gPiBAQCAtNjUzLDcgKzczMSw4IEBAIHN0YXRpYyBpbnQKPiA+ID4gaTkxNV9hdWRpb19jb21w b25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiAgCWludGVs X2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOwo+ID4gPiA+ICAJLyogaW50 ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8KPiA+ID4gPiAgCWlmICghaW50 ZWxfZW5jb2RlciB8fCAhaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjIHx8Cj4gPiA+ID4gLQkgICAg aW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ID4gPiA+ICsJICAg ICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgJiYKPiA+ID4gPiAr CSAgICAgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RQKSkpIHsKPiA+ID4g PiAgCQlEUk1fREVCVUdfS01TKCJubyB2YWxpZCBwb3J0ICVjXG4iLCBwb3J0X25hbWUocG9ydCkp Owo+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7Cj4gPiA+ID4gIAkJZ290byB1bmxvY2s7Cj4gPiA+ ID4gQEAgLTY4MSw3ICs3NjAsNyBAQCBzdGF0aWMgaW50Cj4gPiA+IGk5MTVfYXVkaW9fY29tcG9u ZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gIAkJZ290byB1 bmxvY2s7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4KPiA+ID4gPiAtCW4gPSBhdWRpb19jb25maWdfZ2V0 X24obW9kZSwgcmF0ZSk7Cj4gPiA+ID4gKwluID0gYXVkaW9fY29uZmlnX2dldF9uKGNydGMsIG1v ZGUsIHJhdGUpOwo+ID4gPiA+ICAJaWYgKG4gPT0gMCkgewo+ID4gPiA+ICAJCURSTV9ERUJVR19L TVMoIlVzaW5nIGF1dG9tYXRpYyBtb2RlIGZvciBOIHZhbHVlIG9uCj4gPiA+IHBvcnQgJWNcbiIs Cj4gPiA+ID4gIAkJCQkJICBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiA+IEBAIC02OTMsOCArNzcy LDE3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlv X3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+Cj4gPiA+ID4gIAkvKiAzLiBzZXQgdGhl IE4vQ1RTL00gKi8KPiA+ID4gPiAgCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBlKSk7 Cj4gPiA+ID4gLQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiA+ID4g PiArCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhjcnRjLCBuLCB0bXApOwo+ID4gPiA+ ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gPiArCS8qIHNldHVw IG0gdmFsdWUgZm9yIERQICovCj4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj LT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPiArCQltID0gYXVkaW9fY29uZmln X2dldF9tKGNydGMsIHJhdGUpOwo+ID4gPiA+ICsJCWlmIChtID09IDApCj4gPiA+ID4gKwkJCWdv dG8gdW5sb2NrOwo+ID4gPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJM RShwaXBlKSk7Cj4gPiA+ID4gKwkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX21fcmVnKGNydGMs IG0sIHRtcCk7Cj4gPiA+ID4gKwkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBl KSwgdG1wKTsKPiA+ID4gPiArCX0KPiA+ID4gPgo+ID4gPiA+ICAgdW5sb2NrOgo+ID4gPiA+ICAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gPiA+IC0tCj4gPiA+ID4gMS45 LjEKPiA+ID4KPiA+ID4gLS0KPiA+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiA+IEludGVsIE9UQwoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==