From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH v2 09/12] drm/i915: Rewrite VLV/CHV watermark code Date: Fri, 06 Mar 2015 09:31:20 -0800 Message-ID: <54F9E468.2020901@virtuousgeek.org> References: <1425583192-2584-1-git-send-email-ville.syrjala@linux.intel.com> <1425583192-2584-10-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gproxy9-pub.mail.unifiedlayer.com (gproxy9-pub.mail.unifiedlayer.com [69.89.20.122]) by gabe.freedesktop.org (Postfix) with SMTP id 764796E27F for ; Fri, 6 Mar 2015 09:31:30 -0800 (PST) In-Reply-To: <1425583192-2584-10-git-send-email-ville.syrjala@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: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDMvMDUvMjAxNSAxMToxOSBBTSwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3Jv dGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiAKPiBBc3N1bWluZyB0aGUgUE5EIGRlYWRsaW5lIG1lY2hhbmlzbSB3b3JrcyByZWFzb25h Ymx5IHdlIHNob3VsZCBkbwo+IG1lbW9yeSByZXF1ZXN0cyBhcyBlYXJseSBhcyBwb3NzaWJsZSBz byB0aGF0IFBORCBoYXMgc2NoZWR1bGUgdGhlCj4gcmVxdWVzdHMgbW9yZSBpbnRlbGxpZ2VudGx5 LiBDdXJyZW50bHkgd2UncmUgc3RpbGwgY2FsY3VsYXRpbmcKPiB0aGUgd2F0ZXJtYXJrcyBhcyBp ZiBWTFYvQ0hWIGFyZSBpZGVudGljYWwgdG8gZzR4LCB3aGljaCBpc24ndAo+IHRoZSBjYXNlLgo+ IAo+IFRoZSBjdXJyZW50IGNvZGUgYWxzbyBzZWVtcyB0byBjYWxjdWxhdGUgaW5zdWZmaWNpZW50 IHdhdGVybWFya3MKPiBhbmQgaGVuY2Ugd2UncmUgc2VlaW5nIHNvbWUgdW5kZXJydW5zLCBlc3Bl Y2lhbGx5IG9uIGhpZ2ggcmVzb2x1dGlvbgo+IGRpc3BsYXlzLgo+IAo+IFRvIGZpeCBpdCBqdXN0 IHJpcCBvdXQgdGhlIGN1cnJlbnQgY29kZSBhbmQgcmVwbGFjZSBpcyB3aXRoIHNvbWV0aGluZwo+ IHRoYXQgdHJpZXMgdG8gdXRpbGl6ZSBQTkQgYXMgZWZmaWNpZW50bHkgYXMgcG9zc2libGUuCj4g Cj4gV2Ugbm93IGNhbGN1bGF0ZSB0aGUgV00gd2F0ZXJtYXJrIHRvIHRyaWdnZXIgd2hlbiB0aGUg RklGTyBzdGlsbCBoYXMKPiAyNTZ1cyB3b3J0aCBvZiBkYXRhLiAyNTZ1cyBpcyB0aGUgbWF4aW11 bSBkZWFkbGluZSB2YWx1ZSBzdXBvb3J0ZWQgYnkKPiBQTkQsIHNvIGlzc3VpbmcgbWVtb3J5IHJl cXVlc3RzIGVhcmxpZXIgd291bGQgbWVhbiB3ZSBwcm9iYWJseSBjb3VsZG4ndAo+IHV0aWxpemUg dGhlIGZ1bGwgRklGTyBhcyBQTkQgd291bGQgYXR0ZW1wdCB0byByZXR1cm4gdGhlIGRhdGEgYXQK PiBsZWFzdCBpbiBhdCBsZWFzdCAyNTZ1cy4gV2UgYWxzbyBjbGFtcCB0aGUgd2F0ZXJtYXJrIHRv IGF0IGxlYXN0IDgKPiBjYWNoZWxpbmVzIGFzIHRoYXQncyB0aGUgbWFnaWMgd2F0ZXJtYXJrIHRo YXQgZW5hYmxpbmcgdHJpY2tsZSBmZWVkCj4gd291bGQgYWxzbyBpbXBvc2UuIEknbSBhc3N1bWlu ZyBpdCBtYXRjaGVzIHNvbWUgYnVyc3Qgc2l6ZS4KPiAKPiBJbiB0aGVvcnkgd2UgY291bGQganVz dCBlbmFibGUgdHJpY2tsZSBmZWVkIGFuZCBpZ25vcmUgdGhlIFdNIHZhbHVlcywKPiBleGNlcHQg dHJpY2tsZSBmZWVkIGRvZXNuJ3Qgd29yayB3aXRoIG1heCBmaWZvIG1vZGUgYW55d2F5LCBzbyB3 ZSdkCj4gc3RpbGwgbmVlZCB0byBjYWxjdWxhdGUgdGhlIFNSIHdhdGVybWFya3MuIEl0IHNlZW1z IGNsZWFuZXIgdG8ganVzdAo+IGRpc2FibGUgdHJpY2tsZSBmZWVkIGFuZCBjYWxjdWxhdGUgYWxs IHdhdGVybWFya3MgdGhlIHNhbWUgd2F5LiBBbHNvCj4gdHJpY2tsZSBmZWVkIHdvdWxkbid0IGFj Y291bnQgZm9yIHRoZSAyNTZ1cyBtYXggZGVhZGxpbmUgdmFsdWUsIHRob2d1aAo+IHRoYXQgbWF5 IGJlIGEgbW9vdCBwb2ludCBpbiBub24tbWF4IGZpZm8gbW9kZSBzaWNuZSB0aGUgRklGT3MgYXJl IGZhaXJseQo+IHNtYWxsLgo+IAo+IE9uIFZMViBtYXggZmlmbyBtb2RlIGNhbiBiZSB1c2VkIHdp dGggZWl0aGVyIHByaW1hcnkgb3Igc3ByaXRlIHBsYW5lcy4KPiBTbyB0aGUgY29kZSBub3cgYWxz byBjaGVja3MgYWxsIHRoZSBwbGFuZXMgKGFwYXJ0IGZyb20gdGhlIGN1cnNvcikKPiB3aGVuIGNh bGN1bGF0aW5nIHRoZSBTUiBwbGFuZSB3YXRlcm1hcmsuCj4gCj4gV2UgZG9uJ3QgaGF2ZSB0byB3 b3JyeSBhYm91dCB0aGUgV00xIHdhdGVybWFya3Mgc2luY2Ugd2UncmUgdXNpbmcgdGhlCj4gUE5E IGRlYWRsaW5lIHNjaGVtZSB3aGljaCBtZWFucyB0aGUgaGFyZHdhcmUgaWdub3JlcyBXTTEgdmFs dWVzLgo+IAo+IHYyOiBVc2UgcGxhbmUtPnN0YXRlLT5mYiBpbnN0ZWFkIG9mIHBsYW5lLT5mYgo+ IAo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggfCAgMTEg KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCB8ICAgNCArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIHwgMzMwICsrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgMTU3 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDVkZTY5YTAu LmIxOTFiMTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTUxNiw2ICsxNTE2 LDE3IEBAIHN0cnVjdCBpbGtfd21fdmFsdWVzIHsKPiAgCj4gIHN0cnVjdCB2bHZfd21fdmFsdWVz IHsKPiAgCXN0cnVjdCB7Cj4gKwkJdWludDE2X3QgcHJpbWFyeTsKPiArCQl1aW50MTZfdCBzcHJp dGVbMl07Cj4gKwkJdWludDhfdCBjdXJzb3I7Cj4gKwl9IHBpcGVbM107Cj4gKwo+ICsJc3RydWN0 IHsKPiArCQl1aW50MTZfdCBwbGFuZTsKPiArCQl1aW50OF90IGN1cnNvcjsKPiArCX0gc3I7Cj4g Kwo+ICsJc3RydWN0IHsKPiAgCQl1aW50OF90IGN1cnNvcjsKPiAgCQl1aW50OF90IHNwcml0ZVsy XTsKPiAgCQl1aW50OF90IHByaW1hcnk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXgg ODE3ODYxMC4uOWY5ODM4NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC00MTI3 LDcgKzQxMjcsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgLyogdmx2L2NodiBo aWdoIG9yZGVyIGJpdHMgKi8KPiAgI2RlZmluZSBEU1BIT1dNCQkJKFZMVl9ESVNQTEFZX0JBU0Ug KyAweDcwMDY0KQo+ICAjZGVmaW5lICAgRFNQRldfU1JfSElfU0hJRlQJCTI0Cj4gLSNkZWZpbmUg ICBEU1BGV19TUl9ISV9NQVNLCQkoMTw8MjQpCj4gKyNkZWZpbmUgICBEU1BGV19TUl9ISV9NQVNL CQkoMzw8MjQpIC8qIDIgYml0cyBmb3IgY2h2LCAxIGZvciB2bHYgKi8KPiAgI2RlZmluZSAgIERT UEZXX1NQUklURUZfSElfU0hJRlQJMjMKPiAgI2RlZmluZSAgIERTUEZXX1NQUklURUZfSElfTUFT SwkJKDE8PDIzKQo+ICAjZGVmaW5lICAgRFNQRldfU1BSSVRFRV9ISV9TSElGVAkyMgo+IEBAIC00 MTQ4LDcgKzQxNDgsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSAg IERTUEZXX1BMQU5FQV9ISV9NQVNLCQkoMTw8MCkKPiAgI2RlZmluZSBEU1BIT1dNMQkJKFZMVl9E SVNQTEFZX0JBU0UgKyAweDcwMDY4KQo+ICAjZGVmaW5lICAgRFNQRldfU1JfV00xX0hJX1NISUZU CQkyNAo+IC0jZGVmaW5lICAgRFNQRldfU1JfV00xX0hJX01BU0sJCSgxPDwyNCkKPiArI2RlZmlu ZSAgIERTUEZXX1NSX1dNMV9ISV9NQVNLCQkoMzw8MjQpIC8qIDIgYml0cyBmb3IgY2h2LCAxIGZv ciB2bHYgKi8KPiAgI2RlZmluZSAgIERTUEZXX1NQUklURUZfV00xX0hJX1NISUZUCTIzCj4gICNk ZWZpbmUgICBEU1BGV19TUFJJVEVGX1dNMV9ISV9NQVNLCSgxPDwyMykKPiAgI2RlZmluZSAgIERT UEZXX1NQUklURUVfV00xX0hJX1NISUZUCTIyCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5k ZXggYmRiMGY1ZC4uNDk3ODQ3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC03 NzgsNiArNzc4LDU1IEBAIHN0YXRpYyB2b2lkIHZsdl93cml0ZV93bV92YWx1ZXMoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gIAkJICAgKHdtLT5kZGxbcGlwZV0uc3ByaXRlWzBdIDw8IERETF9T UFJJVEVfU0hJRlQoMCkpIHwKPiAgCQkgICAod20tPmRkbFtwaXBlXS5wcmltYXJ5IDw8IERETF9Q TEFORV9TSElGVCkpOwo+ICAKPiArCUk5MTVfV1JJVEUoRFNQRlcxLAo+ICsJCSAgICgod20tPnNy LnBsYW5lIDw8IERTUEZXX1NSX1NISUZUKSAmIERTUEZXX1NSX01BU0spIHwKPiArCQkgICAoKHdt LT5waXBlW1BJUEVfQl0uY3Vyc29yIDw8IERTUEZXX0NVUlNPUkJfU0hJRlQpICYgRFNQRldfQ1VS U09SQl9NQVNLKSB8Cj4gKwkJICAgKCh3bS0+cGlwZVtQSVBFX0JdLnByaW1hcnkgPDwgRFNQRldf UExBTkVCX1NISUZUKSAmIERTUEZXX1BMQU5FQl9NQVNLX1ZMVikgfAo+ICsJCSAgICgod20tPnBp cGVbUElQRV9BXS5wcmltYXJ5IDw8IERTUEZXX1BMQU5FQV9TSElGVCkgJiBEU1BGV19QTEFORUFf TUFTS19WTFYpKTsKPiArCUk5MTVfV1JJVEUoRFNQRlcyLAo+ICsJCSAgICgod20tPnBpcGVbUElQ RV9BXS5zcHJpdGVbMV0gPDwgRFNQRldfU1BSSVRFQl9TSElGVCkgJiBEU1BGV19TUFJJVEVCX01B U0tfVkxWKSB8Cj4gKwkJICAgKCh3bS0+cGlwZVtQSVBFX0FdLmN1cnNvciA8PCBEU1BGV19DVVJT T1JBX1NISUZUKSAmIERTUEZXX0NVUlNPUkFfTUFTSykgfAo+ICsJCSAgICgod20tPnBpcGVbUElQ RV9BXS5zcHJpdGVbMF0gPDwgRFNQRldfU1BSSVRFQV9TSElGVCkgJiBEU1BGV19TUFJJVEVBX01B U0tfVkxWKSk7Cj4gKwlJOTE1X1dSSVRFKERTUEZXMywKPiArCQkgICAoKHdtLT5zci5jdXJzb3Ig PDwgRFNQRldfQ1VSU09SX1NSX1NISUZUKSAmIERTUEZXX0NVUlNPUl9TUl9NQVNLKSk7Cj4gKwo+ ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwkJSTkxNV9XUklURShEU1BGVzdf Q0hWLAo+ICsJCQkgICAoKHdtLT5waXBlW1BJUEVfQl0uc3ByaXRlWzFdIDw8IERTUEZXX1NQUklU RURfU0hJRlQpICYgRFNQRldfU1BSSVRFRF9NQVNLKSB8Cj4gKwkJCSAgICgod20tPnBpcGVbUElQ RV9CXS5zcHJpdGVbMF0gPDwgRFNQRldfU1BSSVRFQ19TSElGVCkgJiBEU1BGV19TUFJJVEVDX01B U0spKTsKPiArCQlJOTE1X1dSSVRFKERTUEZXOF9DSFYsCj4gKwkJCSAgICgod20tPnBpcGVbUElQ RV9DXS5zcHJpdGVbMV0gPDwgRFNQRldfU1BSSVRFRl9TSElGVCkgJiBEU1BGV19TUFJJVEVGX01B U0spIHwKPiArCQkJICAgKCh3bS0+cGlwZVtQSVBFX0NdLnNwcml0ZVswXSA8PCBEU1BGV19TUFJJ VEVFX1NISUZUKSAmIERTUEZXX1NQUklURUVfTUFTSykpOwo+ICsJCUk5MTVfV1JJVEUoRFNQRlc5 X0NIViwKPiArCQkJICAgKCh3bS0+cGlwZVtQSVBFX0NdLnByaW1hcnkgPDwgRFNQRldfUExBTkVD X1NISUZUKSAmIERTUEZXX1BMQU5FQ19NQVNLKSB8Cj4gKwkJCSAgICgod20tPnBpcGVbUElQRV9D XS5jdXJzb3IgPDwgRFNQRldfQ1VSU09SQ19TSElGVCkgJiBEU1BGV19DVVJTT1JDX01BU0spKTsK PiArCQlJOTE1X1dSSVRFKERTUEhPV00sCj4gKwkJCSAgICgoKHdtLT5zci5wbGFuZSA+PiA5KSA8 PCBEU1BGV19TUl9ISV9TSElGVCkgJiBEU1BGV19TUl9ISV9NQVNLKSB8Cj4gKwkJCSAgICgoKHdt LT5waXBlW1BJUEVfQ10uc3ByaXRlWzFdID4+IDgpIDw8IERTUEZXX1NQUklURUZfSElfU0hJRlQp ICYgRFNQRldfU1BSSVRFRl9ISV9NQVNLKSB8Cj4gKwkJCSAgICgoKHdtLT5waXBlW1BJUEVfQ10u c3ByaXRlWzBdID4+IDgpIDw8IERTUEZXX1NQUklURUVfSElfU0hJRlQpICYgRFNQRldfU1BSSVRF RV9ISV9NQVNLKSB8Cj4gKwkJCSAgICgoKHdtLT5waXBlW1BJUEVfQ10ucHJpbWFyeSA+PiA4KSA8 PCBEU1BGV19QTEFORUNfSElfU0hJRlQpICYgRFNQRldfUExBTkVDX0hJX01BU0spIHwKPiArCQkJ ICAgKCgod20tPnBpcGVbUElQRV9CXS5zcHJpdGVbMV0gPj4gOCkgPDwgRFNQRldfU1BSSVRFRF9I SV9TSElGVCkgJiBEU1BGV19TUFJJVEVEX0hJX01BU0spIHwKPiArCQkJICAgKCgod20tPnBpcGVb UElQRV9CXS5zcHJpdGVbMF0gPj4gOCkgPDwgRFNQRldfU1BSSVRFQ19ISV9TSElGVCkgJiBEU1BG V19TUFJJVEVDX0hJX01BU0spIHwKPiArCQkJICAgKCgod20tPnBpcGVbUElQRV9CXS5wcmltYXJ5 ID4+IDgpIDw8IERTUEZXX1BMQU5FQl9ISV9TSElGVCkgJiBEU1BGV19QTEFORUJfSElfTUFTSykg fAo+ICsJCQkgICAoKCh3bS0+cGlwZVtQSVBFX0FdLnNwcml0ZVsxXSA+PiA4KSA8PCBEU1BGV19T UFJJVEVCX0hJX1NISUZUKSAmIERTUEZXX1NQUklURUJfSElfTUFTSykgfAo+ICsJCQkgICAoKCh3 bS0+cGlwZVtQSVBFX0FdLnNwcml0ZVswXSA+PiA4KSA8PCBEU1BGV19TUFJJVEVBX0hJX1NISUZU KSAmIERTUEZXX1NQUklURUFfSElfTUFTSykgfAo+ICsJCQkgICAoKCh3bS0+cGlwZVtQSVBFX0Fd LnByaW1hcnkgPj4gOCkgPDwgRFNQRldfUExBTkVBX0hJX1NISUZUKSAmIERTUEZXX1BMQU5FQV9I SV9NQVNLKSk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoRFNQRlc3LAo+ICsJCQkgICAo KHdtLT5waXBlW1BJUEVfQl0uc3ByaXRlWzFdIDw8IERTUEZXX1NQUklURURfU0hJRlQpICYgRFNQ RldfU1BSSVRFRF9NQVNLKSB8Cj4gKwkJCSAgICgod20tPnBpcGVbUElQRV9CXS5zcHJpdGVbMF0g PDwgRFNQRldfU1BSSVRFQ19TSElGVCkgJiBEU1BGV19TUFJJVEVDX01BU0spKTsKPiArCQlJOTE1 X1dSSVRFKERTUEhPV00sCj4gKwkJCSAgICgoKHdtLT5zci5wbGFuZSA+PiA5KSA8PCBEU1BGV19T Ul9ISV9TSElGVCkgJiBEU1BGV19TUl9ISV9NQVNLKSB8Cj4gKwkJCSAgICgoKHdtLT5waXBlW1BJ UEVfQl0uc3ByaXRlWzFdID4+IDgpIDw8IERTUEZXX1NQUklURURfSElfU0hJRlQpICYgRFNQRldf U1BSSVRFRF9ISV9NQVNLKSB8Cj4gKwkJCSAgICgoKHdtLT5waXBlW1BJUEVfQl0uc3ByaXRlWzBd ID4+IDgpIDw8IERTUEZXX1NQUklURUNfSElfU0hJRlQpICYgRFNQRldfU1BSSVRFQ19ISV9NQVNL KSB8Cj4gKwkJCSAgICgoKHdtLT5waXBlW1BJUEVfQl0ucHJpbWFyeSA+PiA4KSA8PCBEU1BGV19Q TEFORUJfSElfU0hJRlQpICYgRFNQRldfUExBTkVCX0hJX01BU0spIHwKPiArCQkJICAgKCgod20t PnBpcGVbUElQRV9BXS5zcHJpdGVbMV0gPj4gOCkgPDwgRFNQRldfU1BSSVRFQl9ISV9TSElGVCkg JiBEU1BGV19TUFJJVEVCX0hJX01BU0spIHwKPiArCQkJICAgKCgod20tPnBpcGVbUElQRV9BXS5z cHJpdGVbMF0gPj4gOCkgPDwgRFNQRldfU1BSSVRFQV9ISV9TSElGVCkgJiBEU1BGV19TUFJJVEVB X0hJX01BU0spIHwKPiArCQkJICAgKCgod20tPnBpcGVbUElQRV9BXS5wcmltYXJ5ID4+IDgpIDw8 IERTUEZXX1BMQU5FQV9ISV9TSElGVCkgJiBEU1BGV19QTEFORUFfSElfTUFTSykpOwo+ICsJfQo+ ICsKPiArCVBPU1RJTkdfUkVBRChEU1BGVzEpOwo+ICsKPiAgCWRldl9wcml2LT53bS52bHYgPSAq d207Cj4gIH0KPiAgCj4gQEAgLTgyMiwxNjkgKzg3MSwxMTMgQEAgc3RhdGljIHVpbnQ4X3Qgdmx2 X2NvbXB1dGVfZHJhaW5fbGF0ZW5jeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQlERExf UFJFQ0lTSU9OX0hJR0ggOiBERExfUFJFQ0lTSU9OX0xPVyk7Cj4gIH0KPiAgCj4gLS8qCj4gLSAq IFVwZGF0ZSBkcmFpbiBsYXRlbmN5IHJlZ2lzdGVycyBvZiBtZW1vcnkgYXJiaXRlcgo+IC0gKgo+ IC0gKiBWYWxsZXl2aWV3IFNvQyBoYXMgYSBuZXcgbWVtb3J5IGFyYml0ZXIgYW5kIG5lZWRzIGRy YWluIGxhdGVuY3kgcmVnaXN0ZXJzCj4gLSAqIHRvIGJlIHByb2dyYW1tZWQuIEVhY2ggcGxhbmUg aGFzIGEgZHJhaW4gbGF0ZW5jeSBtdWx0aXBsaWVyIGFuZCBhIGRyYWluCj4gLSAqIGxhdGVuY3kg dmFsdWUuCj4gLSAqLwo+IC0KPiAtc3RhdGljIHZvaWQgdmx2X3VwZGF0ZV9kcmFpbl9sYXRlbmN5 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArc3RhdGljIGludCB2bHZfY29tcHV0ZV93bShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ICsJCQkgIGludCBmaWZvX3NpemUpCj4gK3sKPiArCWludCBjbG9jaywgZW50cmllcywgcGl4ZWxf c2l6ZTsKPiArCj4gKwkvKgo+ICsJICogRklYTUUgdGhlIHBsYW5lIG1pZ2h0IGhhdmUgYW4gZmIK PiArCSAqIGJ1dCBiZSBpbnZpc2libGUgKGVnLiBkdWUgdG8gY2xpcHBpbmcpCj4gKwkgKi8KPiAr CWlmICghY3J0Yy0+YWN0aXZlIHx8ICFwbGFuZS0+YmFzZS5zdGF0ZS0+ZmIpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKHBsYW5lLT5iYXNl LnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCWNsb2NrID0gY3J0Yy0+Y29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCj4gKwllbnRyaWVzID0gRElWX1JPVU5E X1VQKGNsb2NrLCAxMDAwKSAqIHBpeGVsX3NpemU7Cj4gKwo+ICsJLyoKPiArCSAqIFNldCB1cCB0 aGUgd2F0ZXJtYXJrIHN1Y2ggdGhhdCB3ZSBkb24ndCBzdGFydCBpc3N1aW5nIG1lbW9yeQo+ICsJ ICogcmVxdWVzdHMgdW50aWwgd2UgYXJlIHdpdGhpbiBQTkQncyBtYXggZGVhZGxpbmUgdmFsdWUg KDI1NnVzKS4KPiArCSAqIElkZWEgYmVpbmcgdG8gYmUgaWRsZSBhcyBsb25nIGFzIHBvc3NpYmxl IHdoaWxlIHN0aWxsIHRha2luZwo+ICsJICogYWR2YXRhbmdlIG9mIFBORCdzIGRlYWRsaW5lIHNj aGVkdWxpbmcuIFRoZSBsaW1pdCBvZiA4Cj4gKwkgKiBjYWNoZWxpbmVzICh1c2VkIHdoZW4gdGhl IEZJRk8gd2lsbCBhbnl3YXkgZHJhaW4gaW4gbGVzcyB0aW1lCj4gKwkgKiB0aGFuIDI1NnVzKSBz aG91bGQgbWF0Y2ggd2hhdCB3ZSB3b3VsZCBiZSBkb25lIGlmIHRyaWNrbGUKPiArCSAqIGZlZWQg d2VyZSBlbmFibGVkLgo+ICsJICovCj4gKwlyZXR1cm4gZmlmb19zaXplIC0gY2xhbXAoRElWX1JP VU5EX1VQKDI1NiAqIGVudHJpZXMsIDY0KSwgMCwgZmlmb19zaXplIC0gOCk7Cj4gK30KPiArCj4g K3N0YXRpYyBib29sIHZsdl9jb21wdXRlX3NyX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g KwkJCSAgICAgIHN0cnVjdCB2bHZfd21fdmFsdWVzICp3bSkKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7Cj4gKwlpbnQgbnVtX3Bs YW5lcyA9IDA7Cj4gKwlpbnQgZmlmb19zaXplID0gMDsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmU7Cj4gKwo+ICsJd20tPnNyLmN1cnNvciA9IHdtLT5zci5wbGFuZSA9IDA7Cj4gKwo+ICsJ Y3J0YyA9IHNpbmdsZV9lbmFibGVkX2NydGMoZGV2KTsKPiArCS8qIG1heGZpZm8gbm90IHN1cHBv cnRlZCBvbiBwaXBlIEMgKi8KPiArCWlmIChjcnRjICYmIHRvX2ludGVsX2NydGMoY3J0YyktPnBp cGUgIT0gUElQRV9DKSB7Cj4gKwkJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4g KwkJbnVtX3BsYW5lcyA9ICEhd20tPnBpcGVbcGlwZV0ucHJpbWFyeSArCj4gKwkJCSEhd20tPnBp cGVbcGlwZV0uc3ByaXRlWzBdICsKPiArCQkJISF3bS0+cGlwZVtwaXBlXS5zcHJpdGVbMV07Cj4g KwkJZmlmb19zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcyAqIDUxMiAtIDE7 Cj4gKwl9Cj4gKwo+ICsJaWYgKGZpZm9fc2l6ZSA9PSAwIHx8IG51bV9wbGFuZXMgPiAxKQo+ICsJ CXJldHVybiBmYWxzZTsKPiArCj4gKwl3bS0+c3IuY3Vyc29yID0gdmx2X2NvbXB1dGVfd20odG9f aW50ZWxfY3J0YyhjcnRjKSwKPiArCQkJCSAgICAgICB0b19pbnRlbF9wbGFuZShjcnRjLT5jdXJz b3IpLCAweDNmKTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBsYW5lLCAmZGV2LT5tb2Rl X2NvbmZpZy5wbGFuZV9saXN0LCBiYXNlLmhlYWQpIHsKPiArCQlpZiAocGxhbmUtPmJhc2UudHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAo cGxhbmUtPnBpcGUgIT0gcGlwZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXdtLT5zci5wbGFu ZSA9IHZsdl9jb21wdXRlX3dtKHRvX2ludGVsX2NydGMoY3J0YyksCj4gKwkJCQkJICAgICAgcGxh bmUsIGZpZm9fc2l6ZSk7Cj4gKwkJaWYgKHdtLT5zci5wbGFuZSAhPSAwKQo+ICsJCQlicmVhazsK PiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdmFsbGV5 dmlld191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0 Yy0+cGlwZTsKPiArCWJvb2wgY3hzcl9lbmFibGVkOwo+ICAJc3RydWN0IHZsdl93bV92YWx1ZXMg d20gPSBkZXZfcHJpdi0+d20udmx2Owo+ICAKPiAgCXdtLmRkbFtwaXBlXS5wcmltYXJ5ID0gdmx2 X2NvbXB1dGVfZHJhaW5fbGF0ZW5jeShjcnRjLCBjcnRjLT5wcmltYXJ5KTsKPiArCXdtLnBpcGVb cGlwZV0ucHJpbWFyeSA9IHZsdl9jb21wdXRlX3dtKGludGVsX2NydGMsCj4gKwkJCQkJICAgICAg IHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLAo+ICsJCQkJCSAgICAgICB2bHZfZ2V0X2Zp Zm9fc2l6ZShkZXYsIHBpcGUsIDApKTsKPiArCj4gIAl3bS5kZGxbcGlwZV0uY3Vyc29yID0gdmx2 X2NvbXB1dGVfZHJhaW5fbGF0ZW5jeShjcnRjLCBjcnRjLT5jdXJzb3IpOwo+ICsJd20ucGlwZVtw aXBlXS5jdXJzb3IgPSB2bHZfY29tcHV0ZV93bShpbnRlbF9jcnRjLAo+ICsJCQkJCSAgICAgIHRv X2ludGVsX3BsYW5lKGNydGMtPmN1cnNvciksCj4gKwkJCQkJICAgICAgMHgzZik7Cj4gKwo+ICsJ Y3hzcl9lbmFibGVkID0gdmx2X2NvbXB1dGVfc3Jfd20oZGV2LCAmd20pOwo+ICsKPiArCWlmICht ZW1jbXAoJndtLCAmZGV2X3ByaXYtPndtLnZsdiwgc2l6ZW9mKHdtKSkgPT0gMCkKPiArCQlyZXR1 cm47Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBGSUZPIHdhdGVybWFya3MgLSAlYzog cGxhbmU9JWQsIGN1cnNvcj0lZCwgIgo+ICsJCSAgICAgICJTUjogcGxhbmU9JWQsIGN1cnNvcj0l ZFxuIiwgcGlwZV9uYW1lKHBpcGUpLAo+ICsJCSAgICAgIHdtLnBpcGVbcGlwZV0ucHJpbWFyeSwg d20ucGlwZVtwaXBlXS5jdXJzb3IsCj4gKwkJICAgICAgd20uc3IucGxhbmUsIHdtLnNyLmN1cnNv cik7Cj4gKwo+ICsJaWYgKCFjeHNyX2VuYWJsZWQpCj4gKwkJaW50ZWxfc2V0X21lbW9yeV9jeHNy KGRldl9wcml2LCBmYWxzZSk7Cj4gIAo+ICAJdmx2X3dyaXRlX3dtX3ZhbHVlcyhpbnRlbF9jcnRj LCAmd20pOwo+IC19Cj4gLQo+IC0jZGVmaW5lIHNpbmdsZV9wbGFuZV9lbmFibGVkKG1hc2spIGlz X3Bvd2VyX29mXzIobWFzaykKPiAtCj4gLXN0YXRpYyB2b2lkIHZhbGxleXZpZXdfdXBkYXRlX3dt KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiAtCXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDEyMDAwOwo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAtCWludCBwbGFuZWFfd20sIHBsYW5lYl93bSwgY3Vyc29yYV93bSwgY3Vyc29yYl93bTsKPiAt CWludCBwbGFuZV9zciwgY3Vyc29yX3NyOwo+IC0JaW50IGlnbm9yZV9wbGFuZV9zciwgaWdub3Jl X2N1cnNvcl9zcjsKPiAtCXVuc2lnbmVkIGludCBlbmFibGVkID0gMDsKPiAtCWJvb2wgY3hzcl9l bmFibGVkOwo+IC0KPiAtCXZsdl91cGRhdGVfZHJhaW5fbGF0ZW5jeShjcnRjKTsKPiAtCj4gLQlp ZiAoZzR4X2NvbXB1dGVfd20wKGRldiwgUElQRV9BLAo+IC0JCQkgICAgJnZhbGxleXZpZXdfd21f aW5mbywgcGVzc2ltYWxfbGF0ZW5jeV9ucywKPiAtCQkJICAgICZ2YWxsZXl2aWV3X2N1cnNvcl93 bV9pbmZvLCBwZXNzaW1hbF9sYXRlbmN5X25zLAo+IC0JCQkgICAgJnBsYW5lYV93bSwgJmN1cnNv cmFfd20pKQo+IC0JCWVuYWJsZWQgfD0gMSA8PCBQSVBFX0E7Cj4gLQo+IC0JaWYgKGc0eF9jb21w dXRlX3dtMChkZXYsIFBJUEVfQiwKPiAtCQkJICAgICZ2YWxsZXl2aWV3X3dtX2luZm8sIHBlc3Np bWFsX2xhdGVuY3lfbnMsCj4gLQkJCSAgICAmdmFsbGV5dmlld19jdXJzb3Jfd21faW5mbywgcGVz c2ltYWxfbGF0ZW5jeV9ucywKPiAtCQkJICAgICZwbGFuZWJfd20sICZjdXJzb3JiX3dtKSkKPiAt CQllbmFibGVkIHw9IDEgPDwgUElQRV9COwo+IC0KPiAtCWlmIChzaW5nbGVfcGxhbmVfZW5hYmxl ZChlbmFibGVkKSAmJgo+IC0JICAgIGc0eF9jb21wdXRlX3Nyd20oZGV2LCBmZnMoZW5hYmxlZCkg LSAxLAo+IC0JCQkgICAgIHNyX2xhdGVuY3lfbnMsCj4gLQkJCSAgICAgJnZhbGxleXZpZXdfd21f aW5mbywKPiAtCQkJICAgICAmdmFsbGV5dmlld19jdXJzb3Jfd21faW5mbywKPiAtCQkJICAgICAm cGxhbmVfc3IsICZpZ25vcmVfY3Vyc29yX3NyKSAmJgo+IC0JICAgIGc0eF9jb21wdXRlX3Nyd20o ZGV2LCBmZnMoZW5hYmxlZCkgLSAxLAo+IC0JCQkgICAgIDIqc3JfbGF0ZW5jeV9ucywKPiAtCQkJ ICAgICAmdmFsbGV5dmlld193bV9pbmZvLAo+IC0JCQkgICAgICZ2YWxsZXl2aWV3X2N1cnNvcl93 bV9pbmZvLAo+IC0JCQkgICAgICZpZ25vcmVfcGxhbmVfc3IsICZjdXJzb3Jfc3IpKSB7Cj4gLQkJ Y3hzcl9lbmFibGVkID0gdHJ1ZTsKPiAtCX0gZWxzZSB7Cj4gLQkJY3hzcl9lbmFibGVkID0gZmFs c2U7Cj4gLQkJaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCBmYWxzZSk7Cj4gLQkJcGxh bmVfc3IgPSBjdXJzb3Jfc3IgPSAwOwo+IC0JfQo+IC0KPiAtCURSTV9ERUJVR19LTVMoIlNldHRp bmcgRklGTyB3YXRlcm1hcmtzIC0gQTogcGxhbmU9JWQsIGN1cnNvcj0lZCwgIgo+IC0JCSAgICAg ICJCOiBwbGFuZT0lZCwgY3Vyc29yPSVkLCBTUjogcGxhbmU9JWQsIGN1cnNvcj0lZFxuIiwKPiAt CQkgICAgICBwbGFuZWFfd20sIGN1cnNvcmFfd20sCj4gLQkJICAgICAgcGxhbmViX3dtLCBjdXJz b3JiX3dtLAo+IC0JCSAgICAgIHBsYW5lX3NyLCBjdXJzb3Jfc3IpOwo+IC0KPiAtCUk5MTVfV1JJ VEUoRFNQRlcxLAo+IC0JCSAgIChwbGFuZV9zciA8PCBEU1BGV19TUl9TSElGVCkgfAo+IC0JCSAg IChjdXJzb3JiX3dtIDw8IERTUEZXX0NVUlNPUkJfU0hJRlQpIHwKPiAtCQkgICAocGxhbmViX3dt IDw8IERTUEZXX1BMQU5FQl9TSElGVCkgfAo+IC0JCSAgIChwbGFuZWFfd20gPDwgRFNQRldfUExB TkVBX1NISUZUKSk7Cj4gLQlJOTE1X1dSSVRFKERTUEZXMiwKPiAtCQkgICAoSTkxNV9SRUFEKERT UEZXMikgJiB+RFNQRldfQ1VSU09SQV9NQVNLKSB8Cj4gLQkJICAgKGN1cnNvcmFfd20gPDwgRFNQ RldfQ1VSU09SQV9TSElGVCkpOwo+IC0JSTkxNV9XUklURShEU1BGVzMsCj4gLQkJICAgKEk5MTVf UkVBRChEU1BGVzMpICYgfkRTUEZXX0NVUlNPUl9TUl9NQVNLKSB8Cj4gLQkJICAgKGN1cnNvcl9z ciA8PCBEU1BGV19DVVJTT1JfU1JfU0hJRlQpKTsKPiAtCj4gLQlpZiAoY3hzcl9lbmFibGVkKQo+ IC0JCWludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgdHJ1ZSk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyB2b2lkIGNoZXJyeXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAt ewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0YXRpYyBjb25z dCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDEyMDAwOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWludCBwbGFuZWFfd20sIHBsYW5lYl93 bSwgcGxhbmVjX3dtOwo+IC0JaW50IGN1cnNvcmFfd20sIGN1cnNvcmJfd20sIGN1cnNvcmNfd207 Cj4gLQlpbnQgcGxhbmVfc3IsIGN1cnNvcl9zcjsKPiAtCWludCBpZ25vcmVfcGxhbmVfc3IsIGln bm9yZV9jdXJzb3Jfc3I7Cj4gLQl1bnNpZ25lZCBpbnQgZW5hYmxlZCA9IDA7Cj4gLQlib29sIGN4 c3JfZW5hYmxlZDsKPiAtCj4gLQl2bHZfdXBkYXRlX2RyYWluX2xhdGVuY3koY3J0Yyk7Cj4gLQo+ IC0JaWYgKGc0eF9jb21wdXRlX3dtMChkZXYsIFBJUEVfQSwKPiAtCQkJICAgICZ2YWxsZXl2aWV3 X3dtX2luZm8sIHBlc3NpbWFsX2xhdGVuY3lfbnMsCj4gLQkJCSAgICAmdmFsbGV5dmlld19jdXJz b3Jfd21faW5mbywgcGVzc2ltYWxfbGF0ZW5jeV9ucywKPiAtCQkJICAgICZwbGFuZWFfd20sICZj dXJzb3JhX3dtKSkKPiAtCQllbmFibGVkIHw9IDEgPDwgUElQRV9BOwo+IC0KPiAtCWlmIChnNHhf Y29tcHV0ZV93bTAoZGV2LCBQSVBFX0IsCj4gLQkJCSAgICAmdmFsbGV5dmlld193bV9pbmZvLCBw ZXNzaW1hbF9sYXRlbmN5X25zLAo+IC0JCQkgICAgJnZhbGxleXZpZXdfY3Vyc29yX3dtX2luZm8s IHBlc3NpbWFsX2xhdGVuY3lfbnMsCj4gLQkJCSAgICAmcGxhbmViX3dtLCAmY3Vyc29yYl93bSkp Cj4gLQkJZW5hYmxlZCB8PSAxIDw8IFBJUEVfQjsKPiAtCj4gLQlpZiAoZzR4X2NvbXB1dGVfd20w KGRldiwgUElQRV9DLAo+IC0JCQkgICAgJnZhbGxleXZpZXdfd21faW5mbywgcGVzc2ltYWxfbGF0 ZW5jeV9ucywKPiAtCQkJICAgICZ2YWxsZXl2aWV3X2N1cnNvcl93bV9pbmZvLCBwZXNzaW1hbF9s YXRlbmN5X25zLAo+IC0JCQkgICAgJnBsYW5lY193bSwgJmN1cnNvcmNfd20pKQo+IC0JCWVuYWJs ZWQgfD0gMSA8PCBQSVBFX0M7Cj4gLQo+IC0JaWYgKHNpbmdsZV9wbGFuZV9lbmFibGVkKGVuYWJs ZWQpICYmCj4gLQkgICAgZzR4X2NvbXB1dGVfc3J3bShkZXYsIGZmcyhlbmFibGVkKSAtIDEsCj4g LQkJCSAgICAgc3JfbGF0ZW5jeV9ucywKPiAtCQkJICAgICAmdmFsbGV5dmlld193bV9pbmZvLAo+ IC0JCQkgICAgICZ2YWxsZXl2aWV3X2N1cnNvcl93bV9pbmZvLAo+IC0JCQkgICAgICZwbGFuZV9z ciwgJmlnbm9yZV9jdXJzb3Jfc3IpICYmCj4gLQkgICAgZzR4X2NvbXB1dGVfc3J3bShkZXYsIGZm cyhlbmFibGVkKSAtIDEsCj4gLQkJCSAgICAgMipzcl9sYXRlbmN5X25zLAo+IC0JCQkgICAgICZ2 YWxsZXl2aWV3X3dtX2luZm8sCj4gLQkJCSAgICAgJnZhbGxleXZpZXdfY3Vyc29yX3dtX2luZm8s Cj4gLQkJCSAgICAgJmlnbm9yZV9wbGFuZV9zciwgJmN1cnNvcl9zcikpIHsKPiAtCQljeHNyX2Vu YWJsZWQgPSB0cnVlOwo+IC0JfSBlbHNlIHsKPiAtCQljeHNyX2VuYWJsZWQgPSBmYWxzZTsKPiAt CQlpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2X3ByaXYsIGZhbHNlKTsKPiAtCQlwbGFuZV9zciA9 IGN1cnNvcl9zciA9IDA7Cj4gLQl9Cj4gLQo+IC0JRFJNX0RFQlVHX0tNUygiU2V0dGluZyBGSUZP IHdhdGVybWFya3MgLSBBOiBwbGFuZT0lZCwgY3Vyc29yPSVkLCAiCj4gLQkJICAgICAgIkI6IHBs YW5lPSVkLCBjdXJzb3I9JWQsIEM6IHBsYW5lPSVkLCBjdXJzb3I9JWQsICIKPiAtCQkgICAgICAi U1I6IHBsYW5lPSVkLCBjdXJzb3I9JWRcbiIsCj4gLQkJICAgICAgcGxhbmVhX3dtLCBjdXJzb3Jh X3dtLAo+IC0JCSAgICAgIHBsYW5lYl93bSwgY3Vyc29yYl93bSwKPiAtCQkgICAgICBwbGFuZWNf d20sIGN1cnNvcmNfd20sCj4gLQkJICAgICAgcGxhbmVfc3IsIGN1cnNvcl9zcik7Cj4gLQo+IC0J STkxNV9XUklURShEU1BGVzEsCj4gLQkJICAgKHBsYW5lX3NyIDw8IERTUEZXX1NSX1NISUZUKSB8 Cj4gLQkJICAgKGN1cnNvcmJfd20gPDwgRFNQRldfQ1VSU09SQl9TSElGVCkgfAo+IC0JCSAgIChw bGFuZWJfd20gPDwgRFNQRldfUExBTkVCX1NISUZUKSB8Cj4gLQkJICAgKHBsYW5lYV93bSA8PCBE U1BGV19QTEFORUFfU0hJRlQpKTsKPiAtCUk5MTVfV1JJVEUoRFNQRlcyLAo+IC0JCSAgIChJOTE1 X1JFQUQoRFNQRlcyKSAmIH5EU1BGV19DVVJTT1JBX01BU0spIHwKPiAtCQkgICAoY3Vyc29yYV93 bSA8PCBEU1BGV19DVVJTT1JBX1NISUZUKSk7Cj4gLQlJOTE1X1dSSVRFKERTUEZXMywKPiAtCQkg ICAoSTkxNV9SRUFEKERTUEZXMykgJiB+RFNQRldfQ1VSU09SX1NSX01BU0spIHwKPiAtCQkgICAo Y3Vyc29yX3NyIDw8IERTUEZXX0NVUlNPUl9TUl9TSElGVCkpOwo+IC0JSTkxNV9XUklURShEU1BG VzlfQ0hWLAo+IC0JCSAgIChJOTE1X1JFQUQoRFNQRlc5X0NIVikgJiB+KERTUEZXX1BMQU5FQ19N QVNLIHwKPiAtCQkJCQkgICAgICBEU1BGV19DVVJTT1JDX01BU0spKSB8Cj4gLQkJICAgKHBsYW5l Y193bSA8PCBEU1BGV19QTEFORUNfU0hJRlQpIHwKPiAtCQkgICAoY3Vyc29yY193bSA8PCBEU1BG V19DVVJTT1JDX1NISUZUKSk7Cj4gIAo+ICAJaWYgKGN4c3JfZW5hYmxlZCkKPiAgCQlpbnRlbF9z ZXRfbWVtb3J5X2N4c3IoZGV2X3ByaXYsIHRydWUpOwo+IEBAIC0xMDAyLDE3ICs5OTUsNDQgQEAg c3RhdGljIHZvaWQgdmFsbGV5dmlld191cGRhdGVfc3ByaXRlX3dtKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJaW50IHNw cml0ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+cGxhbmU7Cj4gKwlib29sIGN4c3JfZW5hYmxl ZDsKPiAgCXN0cnVjdCB2bHZfd21fdmFsdWVzIHdtID0gZGV2X3ByaXYtPndtLnZsdjsKPiAgCj4g LQlpZiAoZW5hYmxlZCkKPiArCWlmIChlbmFibGVkKSB7Cj4gIAkJd20uZGRsW3BpcGVdLnNwcml0 ZVtzcHJpdGVdID0KPiAgCQkJdmx2X2NvbXB1dGVfZHJhaW5fbGF0ZW5jeShjcnRjLCBwbGFuZSk7 Cj4gLQllbHNlCj4gKwo+ICsJCXdtLnBpcGVbcGlwZV0uc3ByaXRlW3Nwcml0ZV0gPQo+ICsJCQl2 bHZfY29tcHV0ZV93bShpbnRlbF9jcnRjLAo+ICsJCQkJICAgICAgIHRvX2ludGVsX3BsYW5lKHBs YW5lKSwKPiArCQkJCSAgICAgICB2bHZfZ2V0X2ZpZm9fc2l6ZShkZXYsIHBpcGUsIHNwcml0ZSsx KSk7Cj4gKwl9IGVsc2Ugewo+ICAJCXdtLmRkbFtwaXBlXS5zcHJpdGVbc3ByaXRlXSA9IDA7Cj4g KwkJd20ucGlwZVtwaXBlXS5zcHJpdGVbc3ByaXRlXSA9IDA7Cj4gKwl9Cj4gKwo+ICsJY3hzcl9l bmFibGVkID0gdmx2X2NvbXB1dGVfc3Jfd20oZGV2LCAmd20pOwo+ICsKPiArCWlmIChtZW1jbXAo JndtLCAmZGV2X3ByaXYtPndtLnZsdiwgc2l6ZW9mKHdtKSkgPT0gMCkKPiArCQlyZXR1cm47Cj4g Kwo+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBGSUZPIHdhdGVybWFya3MgLSAlYzogc3ByaXRl ICVjPSVkLCAiCj4gKwkJICAgICAgIlNSOiBwbGFuZT0lZCwgY3Vyc29yPSVkXG4iLCBwaXBlX25h bWUocGlwZSksCj4gKwkJICAgICAgc3ByaXRlX25hbWUocGlwZSwgc3ByaXRlKSwKPiArCQkgICAg ICB3bS5waXBlW3BpcGVdLnNwcml0ZVtzcHJpdGVdLAo+ICsJCSAgICAgIHdtLnNyLnBsYW5lLCB3 bS5zci5jdXJzb3IpOwo+ICsKPiArCWlmICghY3hzcl9lbmFibGVkKQo+ICsJCWludGVsX3NldF9t ZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpOwo+ICAKPiAgCXZsdl93cml0ZV93bV92YWx1ZXMo aW50ZWxfY3J0YywgJndtKTsKPiArCj4gKwlpZiAoY3hzcl9lbmFibGVkKQo+ICsJCWludGVsX3Nl dF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgdHJ1ZSk7Cj4gIH0KPiAgCj4gKyNkZWZpbmUgc2luZ2xl X3BsYW5lX2VuYWJsZWQobWFzaykgaXNfcG93ZXJfb2ZfMihtYXNrKQo+ICsKPiAgc3RhdGljIHZv aWQgZzR4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAgLTY0ODUsNyArNjUwNSw3IEBAIHZvaWQg aW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWVsc2UgaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID09IDgpCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tf Z2F0aW5nID0gYnJvYWR3ZWxsX2luaXRfY2xvY2tfZ2F0aW5nOwo+ICAJfSBlbHNlIGlmIChJU19D SEVSUllWSUVXKGRldikpIHsKPiAtCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBjaGVy cnl2aWV3X3VwZGF0ZV93bTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSB2YWxs ZXl2aWV3X3VwZGF0ZV93bTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dt ID0gdmFsbGV5dmlld191cGRhdGVfc3ByaXRlX3dtOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lmlu aXRfY2xvY2tfZ2F0aW5nID0KPiAgCQkJY2hlcnJ5dmlld19pbml0X2Nsb2NrX2dhdGluZzsKPiAK Ckkgd29uZGVyIGlmIHdlIHNob3VsZCBiZSB3YXJuaW5nIGlmIHRoZSB3bSB2YWx1ZXMgd2UgZW5k IHVwIHdpdGggZXhjZWVkCnRoZSBtYXNrIHNpemUgKHRoZSBmYWN0IHRoYXQgeW91IHdyaXRlIHRo ZW0gd2l0aCBhIHNoaWZ0IGFuZCBtYXNrIG1hZGUKbWUgdGhpbmsgb2YgaXQpLCBidXQgdGhhdCBj b3VsZCBiZSBhIGZvbGxvdyBvbiwgb3IgZXZlbiBwdXQgaW50byB0aGUKY2FsYyBjb2RlIGluc3Rl YWQuICBBbnl3YXkgdGhhdCdzIHNvbWV0aGluZyB3ZSBjYW4gZG8gbGF0ZXIgYWZ0ZXIgYWxsCnRo ZSBhdG9taWMgY2hhbmdlcyBoaXQuCgpEb2VzIHRoaXMgZml4IGFueSBvZiBvdXIgdW5kZXJydW4g YnVncz8gIFNob3VsZCBpdCBoYXZlIGFueSByZWZlcmVuY2VzOgpsaW5lcz8KCkVpdGhlciB3YXk6 ClJldmlld2VkLWJ5OiBKZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK