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 19:59:06 +0300 Message-ID: <20160802165906.GB4329@intel.com> References: <1470101710-57552-1-git-send-email-libin.yang@linux.intel.com> <20160802104715.GQ4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F7E20@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 853506E624 for ; Tue, 2 Aug 2016 16:59:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F7E20@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 T24gVHVlLCBBdWcgMDIsIDIwMTYgYXQgMDE6NTg6NTFQTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gSGkgVmlsbGUKPiAKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9t OiBWaWxsZSBTeXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0K PiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyLCAyMDE2IDY6NDcgUE0KPiA+IFRvOiBsaWJpbi55 YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmc7IGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbTsgVmV0dGVyLCBEYW5pZWwKPiA+IDxkYW5p ZWwudmV0dGVyQGludGVsLmNvbT47IHRpd2FpQHN1c2UuZGU7IFlhbmcsIExpYmluIDxsaWJpbi55 YW5nQGludGVsLmNvbT4KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGRybS9pOTE1OiBzZXQgcHJv cGVyIE4vTSBpbiBtb2Rlc2V0Cj4gPiAKPiA+IE9uIFR1ZSwgQXVnIDAyLCAyMDE2IGF0IDA5OjM1 OjEwQU0gKzA4MDAsIGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tIHdyb3RlOgo+ID4gPiBGcm9t OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT4KPiA+ID4KPiA+ID4gV2hl biBtb2Rlc2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQgdG8gc29tZSBzcGVjaWFsIHZh bHVlcyBpbiBEUAo+ID4gPiBtb2RlLCB0aGUgTi9NIG5lZWQgdG8gYmUgc2V0IG1hbnVhbGx5IGlm IGF1ZGlvIGlzIHBsYXlpbmcuCj4gPiA+Cj4gPiA+IFRoZSByZWxhdGlvbnNoaXAgb2YgTWF1ZCBh bmQgTmF1ZCBpcyBleHByZXNzZWQgaW4gdGhlIGZvbGxvd2luZwo+ID4gPiBlcXVhdGlvbjoKPiA+ ID4gTWF1ZC9OYXVkID0gNTEyICogZnMgLyBmX0xTX0Nsawo+ID4gPgo+ID4gPiBQbGVhc2UgcmVm ZXIgVkVTQSBEaXNwbGF5UG9ydCBTdGFuZGFyZCBzcGVjIGZvciBkZXRhaWxzLgo+ID4gPgo+ID4g PiBBbHNvLCB0aGUgcGF0Y2ggYXBwbGllcwo+ID4gPiBjb21taXQgN2U4Mjc1YzJmMmJiICgiZHJt L2k5MTU6IHNldCBwcm9wZXIgTi9DVFMgaW4gbW9kZXNldCIpIHRvIEFQTAo+ID4gPiBwbGF0Zm9y bS4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51 eC5pbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgICB8ICAgNiArKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8u YyB8IDEyMgo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+ ICAyIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiA+ ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGluZGV4IDhiZmRlNzUuLjJmOWQw MGUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiBAQCAtNzM1MSw2 ICs3MzUxLDEyIEBAIGVudW0gewo+ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9DT05GSUdfQgkJMHg2 NTEwMAo+ID4gPiAgI2RlZmluZSBIU1dfQVVEX0NGRyhwaXBlKQkJX01NSU9fUElQRShwaXBlLAo+ ID4gX0hTV19BVURfQ09ORklHX0EsIF9IU1dfQVVEX0NPTkZJR19CKQo+ID4gPgo+ID4gPiArI2Rl ZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQQkJMHg2NTAyOAo+ID4gPiArI2RlZmluZSBfSFNX X0FVRF9NX0NUU19FTkFCTEVfQgkJMHg2NTEyOAo+ID4gPiArI2RlZmluZSBIU1dfQVVEX01fQ1RT X0VOQUJMRShwaXBlKQkJX01NSU9fUElQRShwaXBlLAo+ID4gX0hTV19BVURfTV9DVFNfRU5BQkxF X0EsIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9CKQo+ID4gPiArI2RlZmluZSAgIEFVRF9NX0NUU19N X1ZBTFVFX0lOREVYCSgxIDw8IDIxKQo+ID4gPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1BST0df RU5BQkxFCSgxIDw8IDIwKQo+ID4gPiArCj4gPiA+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RS TF9BCQkweDY1MDEwCj4gPiA+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9CCQkweDY1MTEw Cj4gPiA+ICAjZGVmaW5lIEhTV19BVURfTUlTQ19DVFJMKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUs Cj4gPiBfSFNXX0FVRF9NSVNDX0NUUkxfQSwgX0hTV19BVURfTUlTQ19DVFJMX0IpCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiBpbmRleCA2NzAwYTdiLi5kZTU1 ZWNmIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ID4gQEAg LTk4LDYgKzk4LDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiAgCXsgMTkyMDAwLCBU TURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwgIH07Cj4gPiA+Cj4gPiA+ICsjZGVmaW5lIExDXzU0 ME0gNTQwMDAwCj4gPiA+ICsjZGVmaW5lIExDXzE2Mk0gMTYyMDAwCj4gPiAKPiA+IERvIHdlIGhh dmUgc29tZSBleHBsYW5hdGlvbiB3aHkgMi43IGRvZXNuJ3QgbmVlZCBNL04gcHJvZ3JhbW1pbmcs IGJ1dAo+ID4gMS42MiBhbmQgNS40IGRvPwo+IAo+IEkgZGlkbid0IHVzZSAyLjcgYmVjYXVzZSBJ IGNhbid0IGZpbmQgYSBtb2RlIHVzaW5nIDIuNy4KCkhtbS4gTWF5YmUgd2Ugc2hvdWxkIGFkZCBz b21lIGtub2JzIHRvIGZvcmNlIGEgc3BlY2lmaWMgYnBjL2xpbmsgcmF0ZS9udW1iZXIKb2YgbGFu ZXMgdG8gaGVscCB3aXRoIHRoaXMga2luZCBvZiB0ZXN0aW5nLiBDdXJyZW50bHkgeW91IGp1c3Qg Z2V0IHdoYXQKeW91IGdldCwgd2hpY2ggaXNuJ3Qgc28gbmljZSB3aGVuIHlvdSB3YW50IHRvIHRl c3QgYWxsIHZhcmlhdGlvbnMuCi4uLgpPSywgc28gSSBqdXN0IHdlbnQgYWhlYWQgYW5kIGRpZCB0 aGF0LiBIZXJlJ3MgYSBicmFuY2g6CgpnaXQ6Ly9naXRodWIuY29tL3ZzeXJqYWxhL2xpbnV4Lmdp dCBtb2RwYXJhbV9jbG9ja19icHBfbGltaXQKCkZvciB5b3VyIERQIHRlc3RpbmcganVzdCBzZXR0 aW5nCmk5MTUubWF4X3BvcnRfY2xvY2s9MTYyMDAwIG9yIGk5MTUubWF4X3BvcnRfY2xvY2s9Mjcw MDAwIGFuZCB0aGVuCmZvcmNpbmcgYSBtb2Rlc2V0IHNob3VsZCBkbyB0aGUgdHJpY2suCgo+IFNv IEkgY2FuJ3QgZG8gdGhlIHRlc3QuCj4gNS40IGlzIGZvciA0SyBhbmQgMS42MiBpcyBmb3IgMTA4 MHAuCj4gCj4gPiAKPiA+IEFuZCBJIHNlZSB5b3UncmUgb25seSBkb2luZyB0aGlzIG9uIEhTVysu IEVhcmxpZXIgcGxhdGZvcm1zIGRvbid0IG5lZWQgdGhpcz8KPiAKPiBXZSBhcmUgbm90IHN1cHBv cnRpbmcgZWFybGllciBwbGF0Zm9ybXMgYW5kIEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZQo+IG9s ZCBwbGF0Zm9ybXMgc3VwcG9ydHMgNEsgRFAgb3Igbm90LgoKU05CLUlWQiBkb3RjbG9jayBjYW4g Z28gdXAgdG8gMzYwTWh6LCBJTEsgdXAgdG8gNDA1IE1oei4gQXQgbGVhc3QgaW4KdGhlb3J5LiBU aGUgRFAgbGluayBpcyBsaW1pdGVkIHRvIDQgeCAyLjcgZm9yIGFsbC4gRnJvbSB0aGUgdGhvc2Ug dGhlCmRvdGNsb2NrIGxpbWl0IGlzIHRoZSBvbmUgeW91IHNob3VsZCBoaXQgZmlyc3Qgc2luY2Ug RFAgY2FuIGFsd2F5cyBmYWxsCmJhY2sgdG8gNmJwYyBhbmQgdGhhdCBzaG91bGQgYmUgY29ycmVz cG9uZCB0byBhIGRvdGNsb2NrIG9mIDQ4MCBNSHouCkFueXdheXMsIDM2ME1IeiBpcyBwbGVudHkg Zm9yIDRrQDMwLgoKClRoZSBxdWVzdGlvbiByZWFsbHkgaXMgd2h5IHdlIG5lZWQgdG8gZG8gdGhp cyBpbiB0aGUgZmlyc3QgcGxhY2UuClRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgc3BlYyB0ZWxsaW5n IGlzIGl0J3MgcmVhbGx5IHJlcXVpcmVkLiBBbGwgSSBjYW4KZmluZCBpbiB0aGUgRFAgc3BlYyBp cyAiTWF1ZCB2YWx1ZSBpcyBzZXQgdG8gMl4xNSAoPTMyLDc2OCkgd2hlbiB0aGUKYXVkaW8gY2xv Y2sgaXMgYXN5bmNocm9ub3VzIHRvIHRoZSBMU19DbGsuIiwgYW5kIHRoZW4gCgpUaGlua2luZyBh Ym91dCBpdCBhIGJpdCBtb3JlLCBvbiBIU1crIHdlIGRvIGRyaXZlIERQIHBvcnRzIHdpdGggdGhl CkxDUExMLCB3aGljaCBpcyBhbHNvIHJlcG9uc2libGUgZm9yIGNkY2xrLCBhbmQgdGhlcmUgYXJl IHNvbWUgdmFndWUKaGludHMgdGhhdCBhdWRpbyBtYXkgYmUgY2xvY2tlZCB2aWEgY2RjbGsuIFNv IGlmIHRoZSBEREkgY2xvY2sgYW5kIHRoZQphdWRpbyBjbG9jayBhcmUgY29taW5nIGZyb20gdGhl IHNhbWUgcmVmZXJlbmNlLCBJIHN1cHBvc2UgdGhleSBhcmUKY29uc2lkZXJlZCBzeW5jaHJvbm91 cywgd2hpY2ggbWF5IGV4cGxhaW4gd2h5IHRoaXMgaXMgbmVlZGVkLiBJdCdzIGFsbAp2ZXJ5IHBv b3JseSBkb2N1bWVudGVkIHRob3VnaCwgc28gSSBjYW4ndCBiZSBzdXJlLgoKQXMgZm9yIHRoZSBv bGRlciBwbGF0Zm9ybXMsIHRoZSBjbG9ja3MgYXJlIGV2ZW4gbGVzcyB3ZWxsIGRvY3VtZW50ZWQu ClRoZSBhdWRpbyBzdHVmZiBpcyBpbiB0aGUgUENILCB3aGljaCBpcyBhbHNvIHdoZXJlIHRoZSBE UExMcyBsaXZlLCBidXQKSSBoYXZlIG5vIGlkZWEgd2hlcmUgYW55IGF1ZGlvIGNsb2NrcyBjb21l IGZyb20uCgo+IAo+ID4gCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4gKwlpbnQg c2FtcGxlX3JhdGU7Cj4gPiA+ICsJaW50IGNsb2NrOwo+ID4gPiArCWludCBuOwo+ID4gPiArCWlu dCBtOwo+ID4gCj4gPiBDYW4gc2F2ZSBhIGJpdCBvZiBzcGFjZSBieSB1c2luZyB1MTYgZm9yIG0g YW5kIG4uCj4gCj4gT0ssIEkgd2lsbCBkbyBpdCBpbiBuZXh0IHZlcnNpb24uCj4gCj4gPiAKPiA+ ID4gK30gYXVkX25tW10gPSB7Cj4gPiA+ICsJezQ4MDAwLCBMQ181NDBNLCA1NjI1LCAyNTZ9LGAK PiA+ID4gKwl7NDQxMDAsIExDXzU0ME0sIDkzNzUsIDM5Mn0sCj4gPiA+ICsJezMyMDAwLCBMQ181 NDBNLCAxNjg3NSwgNTEyfSwKPiA+ID4gKwl7NDgwMDAsIExDXzE2Mk0sIDMzNzUsIDUxMn0sCj4g PiA+ICsJezQ0MTAwLCBMQ18xNjJNLCA1NjI1LCA3ODR9LAo+ID4gPiArCXszMjAwMCwgTENfMTYy TSwgMTAxMjUsIDEwMjQKPiA+ID4gK307Cj4gPiAKPiA+IFRoZSBudW1iZXJzIGxvb2sgZ29vZCwg YnV0IHdoYXQgYWJvdXQgb3RoZXIgc2FtcGxlIHJhdGVzPyBGb3IgSERNSSB3ZSBnbwo+ID4gdXAg dG8gMTkya0h6LCB3aHkgbm90IGZvciBEUD8KPiAKPiBPdXIgdGVzdCBvbmx5IGluY2x1ZGVzIDMy SywgNDQuMUsgYW5kIDQ4SyA6KQo+IEkgd2lsbCBhZGQgdGhlIHN1cHBvcnQgaWYgeW91IHRoaW5r IHdlIHNob3VsZC4KCldoYXQgc2FtcGxlIHJhdGVzIGNhbiB0aGUgdXNlciBzZWxlY3Q/IFRoYXQg c2hvdWxkIGJlIHRoZSBvbmx5CnJlbGV2YW50IHF1ZXN0aW9uIGhlcmUuCgo+IAo+ID4gCj4gPiA+ ICsKPiA+ID4gIC8qIGdldCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfKiB2YWx1ZSBmb3Ig bW9kZSAqLyAgc3RhdGljIHUzMgo+ID4gPiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQo+ID4gPiAqYWRqdXN0ZWRfbW9kZSkgIHsgQEAg LTEyMSwyMCArMTM3LDUwIEBAIHN0YXRpYyB1MzIKPiA+ID4gYXVkaW9fY29uZmlnX2hkbWlfcGl4 ZWxfY2xvY2soY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkCj4gPiA+ICAJ cmV0dXJuIGhkbWlfYXVkaW9fY2xvY2tbaV0uY29uZmlnOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAt c3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X24oY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCj4gPiA+IGludCByYXRlKQo+ID4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdf Z2V0X24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ICsJCQkgICAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKPiA+ID4gKwkJCSAgICAgIGludCBy YXRlKQo+ID4gPiArewo+ID4gPiArCWludCBpOwo+ID4gPiArCj4gPiA+ICsJaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsKPiA+ID4gKwkJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25jdHMpOyBpKyspIHsKPiA+ID4gKwkJCWlm ICgocmF0ZSA9PSBhdWRfbmN0c1tpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gKwkJCQkoYWRqdXN0 ZWRfbW9kZS0+Y2xvY2sgPT0gYXVkX25jdHNbaV0uY2xvY2spKSB7Cj4gPiA+ICsJCQkJcmV0dXJu IGF1ZF9uY3RzW2ldLm47Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBV VF9EUCkpIHsKPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsr KSB7Cj4gPiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25tW2ldLnNhbXBsZV9yYXRlKSAmJgo+ID4g PiArCQkJCShjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gYXVkX25tW2ldLmNsb2NrKSkKPiA+ IHsKPiA+ID4gKwkJCQlyZXR1cm4gYXVkX25tW2ldLm47Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCX0K PiA+ID4gKwl9Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyBpbnQgYXVkaW9fY29uZmlnX2dldF9tKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBpbnQgcmF0 ZSkKPiA+ID4gIHsKPiA+ID4gIAlpbnQgaTsKPiA+ID4KPiA+ID4gLQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+ID4gPiAtCQlpZiAoKHJhdGUgPT0gYXVkX25j dHNbaV0uc2FtcGxlX3JhdGUpICYmCj4gPiA+IC0JCQkobW9kZS0+Y2xvY2sgPT0gYXVkX25jdHNb aV0uY2xvY2spKSB7Cj4gPiA+IC0JCQlyZXR1cm4gYXVkX25jdHNbaV0ubjsKPiA+ID4gKwlpZiAo aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiA+ ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsrKSB7Cj4gPiA+ICsJ CQlpZiAoKHJhdGUgPT0gYXVkX25tW2ldLnNhbXBsZV9yYXRlKSAmJgo+ID4gPiArCQkJCShjcnRj LT5jb25maWctPnBvcnRfY2xvY2sgPT0gYXVkX25tW2ldLmNsb2NrKSkKPiA+IHsKPiA+ID4gKwkJ CQlyZXR1cm4gYXVkX25tW2ldLm07Cj4gPiA+ICsJCQl9Cj4gPiA+ICAJCX0KPiA+ID4gIAl9Cj4g PiA+ICsKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4KPiA+ID4gLXN0YXRpYyB1aW50 MzJfdCBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoaW50IG4sIHVpbnQzMl90IHZhbCkKPiA+ID4g K3N0YXRpYyB1aW50MzJfdCBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gPiA+ICsJCQkJCSBpbnQgbiwgdWludDMyX3QgdmFsKQo+ID4gPiAgewo+ID4g PiAgCWludCBuX2xvdywgbl91cDsKPiA+ID4gIAl1aW50MzJfdCB0bXAgPSB2YWw7Cj4gPiA+IEBA IC0xNDUsMTcgKzE5MSwzOCBAQCBzdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX25f cmVnKGludCBuLAo+ID4gdWludDMyX3QgdmFsKQo+ID4gPiAgCXRtcCB8PSAoKG5fdXAgPDwgQVVE X0NPTkZJR19VUFBFUl9OX1NISUZUKSB8Cj4gPiA+ICAJCQkobl9sb3cgPDwgQVVEX0NPTkZJR19M T1dFUl9OX1NISUZUKSB8Cj4gPiA+ICAJCQlBVURfQ09ORklHX05fUFJPR19FTkFCTEUpOwo+ID4g PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQ KSkKPiA+ID4gKwkJdG1wIHw9IEFVRF9DT05GSUdfTl9WQUxVRV9JTkRFWDsKPiA+ID4gKwlyZXR1 cm4gdG1wOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdWludDMyX3QgYXVkaW9fY29u ZmlnX3NldHVwX21fcmVnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gPiArCQkJCQkgaW50 IG0sIHVpbnQzMl90IHZhbCkKPiA+ID4gK3sKPiA+ID4gKwl1aW50MzJfdCB0bXAgPSB2YWw7Cj4g PiA+ICsKPiA+ID4gKwlpZiAoIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRF TF9PVVRQVVRfRFApKQo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArCXRtcCB8PSBt Owo+ID4gPiArCXRtcCB8PSBBVURfTV9DVFNfTV9WQUxVRV9JTkRFWDsKPiA+ID4gKwl0bXAgfD0g QVVEX01fQ1RTX01fUFJPR19FTkFCTEU7Cj4gPiA+ICsKPiA+ID4gIAlyZXR1cm4gdG1wOwo+ID4g PiAgfQo+ID4gPgo+ID4gPiAgLyogY2hlY2sgd2hldGhlciBOL0NUUy9NIG5lZWQgYmUgc2V0IG1h bnVhbGx5ICovICBzdGF0aWMgYm9vbAo+ID4gPiBhdWRpb19yYXRlX25lZWRfcHJvZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gLQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUpCj4gPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCj4gPiAq YWRqdXN0ZWRfbW9kZSkKPiA+ID4gIHsKPiA+ID4gLQlpZiAoKChtb2RlLT5jbG9jayA9PSBUTURT XzI5N00pIHx8Cj4gPiA+IC0JCSAobW9kZS0+Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYKPiA+ID4g KwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBUTURTXzI5N00pIHx8Cj4gPiA+ICsJCSAo YWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYKPiA+ID4gIAkJaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkKPiA+ID4gIAkJcmV0 dXJuIHRydWU7Cj4gPiA+ICsJZWxzZSBpZiAoKChjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0g TENfNTQwTSkgfHwKPiA+ID4gKwkJICAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ18x NjJNKSkgJiYKPiA+ID4gKwkJICBpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5U RUxfT1VUUFVUX0RQKSkKPiA+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiA+ICAJZWxzZQo+ID4gPiAg CQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICB9Cj4gPiA+IEBAIC0yODcsNyArMzU0LDcgQEAgc3RhdGlj IHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QKPiA+IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCA9Cj4gPiA+ICAJCWVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiA+ICAJZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ID4gLQl1aW50MzJfdCB0bXA7 Cj4gPiA+ICsJdWludDMyX3QgdG1wLCBtOwo+ID4gPiAgCWludCBsZW4sIGk7Cj4gPiA+ICAJaW50 IG4sIHJhdGU7Cj4gPiA+Cj4gPiA+IEBAIC0zNDMsMTUgKzQxMCwyNSBAQCBzdGF0aWMgdm9pZCBo c3dfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdAo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiAgCQkJRFJNX0VSUk9SKCJpbnZhbGlkIHBvcnQ6ICVkXG4iLCBwb3J0KTsKPiA+ID4g IAkJCXJhdGUgPSAwOwo+ID4gPiAgCQl9Cj4gPiA+IC0JCW4gPSBhdWRpb19jb25maWdfZ2V0X24o YWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gPiA+ICsJCW4gPSBhdWRpb19jb25maWdfZ2V0X24oaW50 ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gPiA+ICAJCWlmIChuICE9IDApCj4gPiA+ IC0JCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiA+ID4gKwkJCXRt cCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnRlbF9jcnRjLCBuLCB0bXApOwo+ID4gPiAg CQllbHNlCj4gPiA+ICAJCQlEUk1fREVCVUdfS01TKCJubyBzdWl0YWJsZSBOIHZhbHVlIGlzIGZv dW5kXG4iKTsKPiA+ID4gIAl9Cj4gPiA+Cj4gPiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhw aXBlKSwgdG1wKTsKPiA+ID4KPiA+ID4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4g PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX0RQKSkgewo+ID4gPiArCQltID0gYXVkaW9fY29uZmlnX2dldF9tKGludGVsX2NydGMsIHJh dGUpOwo+ID4gPiArCQlpZiAobSAhPSAwKSB7Cj4gPiA+ICsJCQl0bXAgPSBJOTE1X1JFQUQoSFNX X0FVRF9NX0NUU19FTkFCTEUocGlwZSkpOwo+ID4gPiArCQkJdG1wID0gYXVkaW9fY29uZmlnX3Nl dHVwX21fcmVnKGludGVsX2NydGMsIG0sIHRtcCk7Cj4gPiA+ICsJCQlJOTE1X1dSSVRFKEhTV19B VURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiAr Cj4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gPiAgfQo+ID4g Pgo+ID4gPiBAQCAtNjM3LDcgKzcxNCw3IEBAIHN0YXRpYyBpbnQKPiA+IGk5MTVfYXVkaW9fY29t cG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICAJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9u ZW50ICphY29tcCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7Cj4gPiA+ICAJZW51bSBwaXBl IHBpcGUgPSBJTlZBTElEX1BJUEU7Cj4gPiA+IC0JdTMyIHRtcDsKPiA+ID4gKwl1MzIgdG1wLCBt Owo+ID4gPiAgCWludCBuOwo+ID4gPiAgCWludCBlcnIgPSAwOwo+ID4gPgo+ID4gPiBAQCAtNjQ1 LDcgKzcyMiw4IEBAIHN0YXRpYyBpbnQKPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVk aW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICAJaWYgKCFJU19TS1lMQUtFKGRldl9w cml2KSAmJgo+ID4gPiAgCSAgICAhSVNfS0FCWUxBS0UoZGV2X3ByaXYpICYmCj4gPiA+ICAJICAg ICFJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmCj4gPiA+IC0JICAgICFJU19IQVNXRUxMKGRldl9w cml2KSkKPiA+ID4gKwkgICAgIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4gPiA+ICsJICAgICFJ U19CUk9YVE9OKGRldl9wcml2KSkKPiA+ID4gIAkJcmV0dXJuIDA7Cj4gPiAKPiA+IEhBU19EREkg cGVyaGFwcz8KPiAKPiBEbyB5b3UgbWVhbiB3ZSBzaG91bGQgYWRkICImJiBIQVNfRERJIj8gCj4g Q291bGQgeW91IHBsZWFzZSBnaXZlIG1lIG1vcmUgZGV0YWlscz8KCkhBU19EREkgYWxvbmUgc2hv dWxkIGJlIGVub3VnaC4KCj4gCj4gUmVnYXJkcywKPiBMaWJpbgo+IAo+ID4gCj4gPiA+Cj4gPiA+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPiA+ID4gQEAgLTY1Myw3ICs3MzEs OCBAQCBzdGF0aWMgaW50Cj4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUo c3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiAgCWludGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGln X3BvcnRfbWFwW3BvcnRdOwo+ID4gPiAgCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBm b3IgRFAgTVNUICovCj4gPiA+ICAJaWYgKCFpbnRlbF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVy LT5iYXNlLmNydGMgfHwKPiA+ID4gLQkgICAgaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9P VVRQVVRfSERNSSkgewo+ID4gPiArCSAgICAoKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxf T1VUUFVUX0hETUkpICYmCj4gPiA+ICsJICAgICAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRF TF9PVVRQVVRfRFApKSkgewo+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJubyB2YWxpZCBwb3J0ICVj XG4iLCBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiAgCQllcnIgPSAtRU5PREVWOwo+ID4gPiAgCQln b3RvIHVubG9jazsKPiA+ID4gQEAgLTY4MSw3ICs3NjAsNyBAQCBzdGF0aWMgaW50Cj4gPiBpOTE1 X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4g PiAgCQlnb3RvIHVubG9jazsKPiA+ID4gIAl9Cj4gPiA+Cj4gPiA+IC0JbiA9IGF1ZGlvX2NvbmZp Z19nZXRfbihtb2RlLCByYXRlKTsKPiA+ID4gKwluID0gYXVkaW9fY29uZmlnX2dldF9uKGNydGMs IG1vZGUsIHJhdGUpOwo+ID4gPiAgCWlmIChuID09IDApIHsKPiA+ID4gIAkJRFJNX0RFQlVHX0tN UygiVXNpbmcgYXV0b21hdGljIG1vZGUgZm9yIE4gdmFsdWUgb24KPiA+IHBvcnQgJWNcbiIsCj4g PiA+ICAJCQkJCSAgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gQEAgLTY5Myw4ICs3NzIsMTcgQEAg c3RhdGljIGludAo+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3Ry dWN0IGRldmljZSAqZGV2LAo+ID4gPgo+ID4gPiAgCS8qIDMuIHNldCB0aGUgTi9DVFMvTSAqLwo+ ID4gPiAgCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBlKSk7Cj4gPiA+IC0JdG1wID0g YXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7Cj4gPiA+ICsJdG1wID0gYXVkaW9fY29u ZmlnX3NldHVwX25fcmVnKGNydGMsIG4sIHRtcCk7Cj4gPiA+ICAJSTkxNV9XUklURShIU1dfQVVE X0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4g PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQ KSkgewo+ID4gPiArCQltID0gYXVkaW9fY29uZmlnX2dldF9tKGNydGMsIHJhdGUpOwo+ID4gPiAr CQlpZiAobSA9PSAwKQo+ID4gPiArCQkJZ290byB1bmxvY2s7Cj4gPiA+ICsJCXRtcCA9IEk5MTVf UkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gPiA+ICsJCXRtcCA9IGF1ZGlvX2Nv bmZpZ19zZXR1cF9tX3JlZyhjcnRjLCBtLCB0bXApOwo+ID4gPiArCQlJOTE1X1dSSVRFKEhTV19B VURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+ID4gPiArCX0KPiA+ID4KPiA+ID4gICB1bmxv Y2s6Cj4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gPiAtLQo+ ID4gPiAxLjkuMQo+ID4gCj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRlbCBPVEMK Ci0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=