From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: =?utf-8?q?=5BPATCH_1/3=5D_drm/i915=3A_add_SNB_and_IVB?= =?utf-8?q?_video_sprite_support_v5?= Date: Wed, 7 Dec 2011 12:29:21 -0800 Message-ID: <1323289763-1963-2-git-send-email-jbarnes@virtuousgeek.org> References: <1323289763-1963-1-git-send-email-jbarnes@virtuousgeek.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from oproxy3-pub.bluehost.com (oproxy3-pub.bluehost.com [69.89.21.8]) by gabe.freedesktop.org (Postfix) with SMTP id C1AE3A0AE8 for ; Wed, 7 Dec 2011 12:29:34 -0800 (PST) In-Reply-To: <1323289763-1963-1-git-send-email-jbarnes@virtuousgeek.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIHZpZGVvIHNwcml0ZXMgc3VwcG9ydCB2YXJpb3VzIHZpZGVvIHN1cmZhY2UgZm9ybWF0cyBu YXRpdmVseSBhbmQgY2FuCmhhbmRsZSBzY2FsaW5nIGFzIHdlbGwuICBTbyBhZGQgc3VwcG9ydCBm b3IgdGhlbSB1c2luZyB0aGUgbmV3IERSTSBjb3JlCnNwcml0ZSBzdXBwb3J0IGZ1bmN0aW9ucy4K CnYyOiB1c2UgZHJtIHNwZWNpZmljIGZvdXJjYyBoZWFkZXIgYW5kIGRlZmluZXMKdjM6IGFkZHJl c3MgRGFuaWVsJ3MgY29tbWVudHM6CiAgLSBkb24ndCB0YWtlIHN0cnVjdCBtdXRleCBhcm91bmQg cmVnaXN0ZXIgYWNjZXNzIChvbmx5IG5lZWRlZCBmb3IKICAgIHJlZ3MgaW4gdGhlIEdUIHBvd2Vy IHdlbGwpCiAgLSBkb24ndCBob2xkIHN0cnVjdCBtdXRleCBhY3Jvc3MgdmJsYW5rIHdhaXRzCiAg LSBmaXggdXAgdXBkYXRlX3BsYW5lIEFQSSAocGFzcyBvYmogaW5zdGVhZCBvZiBHVFQgb2Zmc2V0 KQogIC0gYWRkIGludGVybGFjZWQgZGVmaW5lcyBmb3Igc3ByaXRlIHJlZ3MKICAtIGRyb3AgdW5u ZWNlc3NhcnkgJ3JlZycgdmFyaWFibGVzCiAgLSBjb21tZW50IGRvdWJsZSBidWZmZXJlZCByZWcg Zmx1c2hpbmcKICBBbHNvIGZpeCB3L2ggY29uZnVzaW9uIHdoZW4gd3JpdGluZyB0aGUgc2NhbGlu ZyByZWcuCnY0OiBtb3JlIGZpeGVzLCBhZGRyZXNzIG1vcmUgY29tbWVudHMgZnJvbSBEYW5pZWws IGFuZCBpbmNsdWRlIEhhaSdzIGZpeAogIC0gcHJldmVudCBkaXZpZGUgYnkgemVybyBpbiBzY2Fs aW5nIGNhbGN1bGF0aW9uIChIYWkgTGFuKQogIC0gdXBkYXRlIHRvIFZpbGxlJ3MgbmV3IERSTV9G T1JNQVRfKiB0eXBlcwogIC0gZml4IHNwcml0ZSB3YXRlcm1hcmsgaGFuZGxpbmcgKGNhbGMgYmFz ZWQgb24gQ1JUQyBzaXplLCBzZXBhcmF0ZQogICAgZnJvbSBub3JtYWwgZGlzcGxheSB3bSkKICAt IHJlbW92ZSBwcml2YXRlIHJlZmNvdW50cyBub3cgdGhhdCB0aGUgZmIgY2xlYW51cHMgaGFuZGxl cyB0aGluZ3MKdjU6IGFkZCBsaW5lYXIgc3VyZmFjZSBzdXBwb3J0CgpGb3IgdGhpcyB2ZXJzaW9u LCBJIHRlc3RlZCBEUE1TIHNpbmNlIGl0IGNhbWUgdXAgaW4gdGhlIGxhc3QgcmV2aWV3OwpEUE1T IG9mZi9vbiB3b3JrcyBvayB3aGVuIGEgdmlkZW8gcGxheWVyIGlzIHdvcmtpbmcgdW5kZXIgWCwg YnV0IGZvcgpwb3dlciBzYXZpbmcgd2UnbGwgcHJvYmFibHkgd2FudCB0byBkbyBzb21ldGhpbmcg c21hcnRlci4gIEknbGwgbGVhdmUKdGhhdCBmb3IgYSBzZXBhcmF0ZSBwYXRjaCBvbiB0b3AuICBM aWtld2lzZSB3aXRoIHRoZSByZWZjb3VudGluZy9mYgpsYXllciBoYW5kbGluZywgd2hpY2ggYXJl IHJlYWxseSBzZXBhcmF0ZSBjbGVhbnVwcy4KClNpZ25lZC1vZmYtYnk6IEplc3NlIEJhcm5lcyA8 amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg IHwgICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgMTMzICsr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxNzQgKysr KysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMjgg KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiLmMgICAgICB8ICAgIDYgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgIDQ1MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDc5MCBpbnNlcnRpb25zKCspLCA3IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCAwYWU2YTdjLi44MDhiMjU1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMjgsNiArMjgsNyBAQCBpOTE1LXkgOj0gaTkxNV9kcnYubyBp OTE1X2RtYS5vIGk5MTVfaXJxLm8gaTkxNV9tZW0ubyBcCiAJICBpbnRlbF9kdm8ubyBcCiAJICBp bnRlbF9yaW5nYnVmZmVyLm8gXAogCSAgaW50ZWxfb3ZlcmxheS5vIFwKKwkgIGludGVsX3Nwcml0 ZS5vIFwKIAkgIGludGVsX29wcmVnaW9uLm8gXAogCSAgZHZvX2NoN3h4eC5vIFwKIAkgIGR2b19j aDcwMTcubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0YTljMWI5Li4wYzMwNzhjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIwNiw2ICsyMDYsOCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZGlzcGxheV9mdW5jcyB7CiAJaW50ICgqZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQpKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwogCWludCAoKmdldF9maWZvX3NpemUpKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBwbGFuZSk7CiAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7CisJdm9pZCAoKnVwZGF0ZV9zcHJpdGVfd20pKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBwaXBlLAorCQkJCSB1aW50MzJfdCBzcHJpdGVfd2lkdGgsIGludCBwaXhlbF9zaXpl KTsKIAlpbnQgKCpjcnRjX21vZGVfc2V0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKQEAgLTM0Nyw2ICszNDksNyBAQCB0eXBlZGVmIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlIHsKIAogCS8qIG92ZXJsYXkgKi8KIAlzdHJ1Y3QgaW50ZWxfb3Zl cmxheSAqb3ZlcmxheTsKKwlib29sIHNwcml0ZV9zY2FsaW5nX2VuYWJsZWQ7CiAKIAkvKiBMVkRT IGluZm8gKi8KIAlpbnQgYmFja2xpZ2h0X2xldmVsOyAgLyogcmVzdG9yZSBiYWNrbGlnaHQgdG8g dGhpcyB2YWx1ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggYjA4MGNjOC4uYTJjZTQx MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0yNDU5LDYgKzI0NTksOCBAQAogI2RlZmlu ZSBXTTNfTFBfSUxLCQkweDQ1MTEwCiAjZGVmaW5lICBXTTNfTFBfRU4JCSgxPDwzMSkKICNkZWZp bmUgV00xU19MUF9JTEsJCTB4NDUxMjAKKyNkZWZpbmUgV00yU19MUF9JVkIJCTB4NDUxMjQKKyNk ZWZpbmUgV00zU19MUF9JVkIJCTB4NDUxMjgKICNkZWZpbmUgIFdNMVNfTFBfRU4JCSgxPDwzMSkK IAogLyogTWVtb3J5IGxhdGVuY3kgdGltZXIgcmVnaXN0ZXIgKi8KQEAgLTI2NzUsNiArMjY3Nywx MzcgQEAKICNkZWZpbmUgX0RTUEJTVVJGCQkweDcxMTlDCiAjZGVmaW5lIF9EU1BCVElMRU9GRgkJ MHg3MTFBNAogCisvKiBTcHJpdGUgQSBjb250cm9sICovCisjZGVmaW5lIF9EVlNBQ05UUgkJMHg3 MjE4MAorI2RlZmluZSAgIERWU19FTkFCTEUJCSgxPDwzMSkKKyNkZWZpbmUgICBEVlNfR0FNTUFf RU5BQkxFCSgxPDwzMCkKKyNkZWZpbmUgICBEVlNfUElYRk9STUFUX01BU0sJKDM8PDI1KQorI2Rl ZmluZSAgIERWU19GT1JNQVRfWVVWNDIyCSgwPDwyNSkKKyNkZWZpbmUgICBEVlNfRk9STUFUX1JH QlgxMDEwMTAJKDE8PDI1KQorI2RlZmluZSAgIERWU19GT1JNQVRfUkdCWDg4OAkoMjw8MjUpCisj ZGVmaW5lICAgRFZTX0ZPUk1BVF9SR0JYMTYxNjE2CSgzPDwyNSkKKyNkZWZpbmUgICBEVlNfU09V UkNFX0tFWQkoMTw8MjIpCisjZGVmaW5lICAgRFZTX1JHQl9PUkRFUl9SR0JYCSgxPDwyMCkKKyNk ZWZpbmUgICBEVlNfWVVWX0JZVEVfT1JERVJfTUFTSyAoMzw8MTYpCisjZGVmaW5lICAgRFZTX1lV Vl9PUkRFUl9ZVVlWCSgwPDwxNikKKyNkZWZpbmUgICBEVlNfWVVWX09SREVSX1VZVlkJKDE8PDE2 KQorI2RlZmluZSAgIERWU19ZVVZfT1JERVJfWVZZVQkoMjw8MTYpCisjZGVmaW5lICAgRFZTX1lV Vl9PUkRFUl9WWVVZCSgzPDwxNikKKyNkZWZpbmUgICBEVlNfREVTVF9LRVkJCSgxPDwyKQorI2Rl ZmluZSAgIERWU19UUklDS0xFX0ZFRURfRElTQUJMRSAoMTw8MTQpCisjZGVmaW5lICAgRFZTX1RJ TEVECQkoMTw8MTApCisjZGVmaW5lIF9EVlNBTElOT0ZGCQkweDcyMTg0CisjZGVmaW5lIF9EVlNB U1RSSURFCQkweDcyMTg4CisjZGVmaW5lIF9EVlNBUE9TCQkweDcyMThjCisjZGVmaW5lIF9EVlNB U0laRQkJMHg3MjE5MAorI2RlZmluZSBfRFZTQUtFWVZBTAkJMHg3MjE5NAorI2RlZmluZSBfRFZT QUtFWU1TSwkJMHg3MjE5OAorI2RlZmluZSBfRFZTQVNVUkYJCTB4NzIxOWMKKyNkZWZpbmUgX0RW U0FLRVlNQVhWQUwJCTB4NzIxYTAKKyNkZWZpbmUgX0RWU0FUSUxFT0ZGCQkweDcyMWE0CisjZGVm aW5lIF9EVlNBU1VSRkxJVkUJCTB4NzIxYWMKKyNkZWZpbmUgX0RWU0FTQ0FMRQkJMHg3MjIwNAor I2RlZmluZSAgIERWU19TQ0FMRV9FTkFCTEUJKDE8PDMxKQorI2RlZmluZSAgIERWU19GSUxURVJf TUFTSwkoMzw8MjkpCisjZGVmaW5lICAgRFZTX0ZJTFRFUl9NRURJVU0JKDA8PDI5KQorI2RlZmlu ZSAgIERWU19GSUxURVJfRU5IQU5DSU5HCSgxPDwyOSkKKyNkZWZpbmUgICBEVlNfRklMVEVSX1NP RlRFTklORwkoMjw8MjkpCisjZGVmaW5lICAgRFZTX1ZFUlRJQ0FMX09GRlNFVF9IQUxGICgxPDwy OCkgLyogbXVzdCBiZSBlbmFibGVkIGJlbG93ICovCisjZGVmaW5lICAgRFZTX1ZFUlRJQ0FMX09G RlNFVF9FTkFCTEUgKDE8PDI3KQorI2RlZmluZSBfRFZTQUdBTUMJCTB4NzIzMDAKKworI2RlZmlu ZSBfRFZTQkNOVFIJCTB4NzMxODAKKyNkZWZpbmUgX0RWU0JMSU5PRkYJCTB4NzMxODQKKyNkZWZp bmUgX0RWU0JTVFJJREUJCTB4NzMxODgKKyNkZWZpbmUgX0RWU0JQT1MJCTB4NzMxOGMKKyNkZWZp bmUgX0RWU0JTSVpFCQkweDczMTkwCisjZGVmaW5lIF9EVlNCS0VZVkFMCQkweDczMTk0CisjZGVm aW5lIF9EVlNCS0VZTVNLCQkweDczMTk4CisjZGVmaW5lIF9EVlNCU1VSRgkJMHg3MzE5YworI2Rl ZmluZSBfRFZTQktFWU1BWFZBTAkJMHg3MzFhMAorI2RlZmluZSBfRFZTQlRJTEVPRkYJCTB4NzMx YTQKKyNkZWZpbmUgX0RWU0JTVVJGTElWRQkJMHg3MzFhYworI2RlZmluZSBfRFZTQlNDQUxFCQkw eDczMjA0CisjZGVmaW5lIF9EVlNCR0FNQwkJMHg3MzMwMAorCisjZGVmaW5lIERWU0NOVFIocGlw ZSkgX1BJUEUocGlwZSwgX0RWU0FDTlRSLCBfRFZTQkNOVFIpCisjZGVmaW5lIERWU0xJTk9GRihw aXBlKSBfUElQRShwaXBlLCBfRFZTQUxJTk9GRiwgX0RWU0JMSU5PRkYpCisjZGVmaW5lIERWU1NU UklERShwaXBlKSBfUElQRShwaXBlLCBfRFZTQVNUUklERSwgX0RWU0JTVFJJREUpCisjZGVmaW5l IERWU1BPUyhwaXBlKSBfUElQRShwaXBlLCBfRFZTQVBPUywgX0RWU0JQT1MpCisjZGVmaW5lIERW U1NVUkYocGlwZSkgX1BJUEUocGlwZSwgX0RWU0FTVVJGLCBfRFZTQlNVUkYpCisjZGVmaW5lIERW U1NJWkUocGlwZSkgX1BJUEUocGlwZSwgX0RWU0FTSVpFLCBfRFZTQlNJWkUpCisjZGVmaW5lIERW U1NDQUxFKHBpcGUpIF9QSVBFKHBpcGUsIF9EVlNBU0NBTEUsIF9EVlNCU0NBTEUpCisjZGVmaW5l IERWU1RJTEVPRkYocGlwZSkgX1BJUEUocGlwZSwgX0RWU0FUSUxFT0ZGLCBfRFZTQlRJTEVPRkYp CisKKyNkZWZpbmUgX1NQUkFfQ1RMCQkweDcwMjgwCisjZGVmaW5lICAgU1BSSVRFX0VOQUJMRQkJ CSgxPDwzMSkKKyNkZWZpbmUgICBTUFJJVEVfR0FNTUFfRU5BQkxFCQkoMTw8MzApCisjZGVmaW5l ICAgU1BSSVRFX1BJWEZPUk1BVF9NQVNLCQkoNzw8MjUpCisjZGVmaW5lICAgU1BSSVRFX0ZPUk1B VF9ZVVY0MjIJCSgwPDwyNSkKKyNkZWZpbmUgICBTUFJJVEVfRk9STUFUX1JHQlgxMDEwMTAJKDE8 PDI1KQorI2RlZmluZSAgIFNQUklURV9GT1JNQVRfUkdCWDg4OAkJKDI8PDI1KQorI2RlZmluZSAg IFNQUklURV9GT1JNQVRfUkdCWDE2MTYxNgkoMzw8MjUpCisjZGVmaW5lICAgU1BSSVRFX0ZPUk1B VF9ZVVY0NDQJCSg0PDwyNSkKKyNkZWZpbmUgICBTUFJJVEVfRk9STUFUX1hSX0JHUjEwMTAxMAko NTw8MjUpIC8qIEV4dGVuZGVkIHJhbmdlICovCisjZGVmaW5lICAgU1BSSVRFX0NTQ19FTkFCTEUJ CSgxPDwyNCkKKyNkZWZpbmUgICBTUFJJVEVfU09VUkNFX0tFWQkJKDE8PDIyKQorI2RlZmluZSAg IFNQUklURV9SR0JfT1JERVJfUkdCWAkJKDE8PDIwKSAvKiBvbmx5IGZvciA4ODggYW5kIDE2MTYx NiAqLworI2RlZmluZSAgIFNQUklURV9ZVVZfVE9fUkdCX0NTQ19ESVNBQkxFCSgxPDwxOSkKKyNk ZWZpbmUgICBTUFJJVEVfWVVWX0NTQ19GT1JNQVRfQlQ3MDkJKDE8PDE4KSAvKiAwIGlzIEJUNjAx ICovCisjZGVmaW5lICAgU1BSSVRFX1lVVl9CWVRFX09SREVSX01BU0sJKDM8PDE2KQorI2RlZmlu ZSAgIFNQUklURV9ZVVZfT1JERVJfWVVZVgkJKDA8PDE2KQorI2RlZmluZSAgIFNQUklURV9ZVVZf T1JERVJfVVlWWQkJKDE8PDE2KQorI2RlZmluZSAgIFNQUklURV9ZVVZfT1JERVJfWVZZVQkJKDI8 PDE2KQorI2RlZmluZSAgIFNQUklURV9ZVVZfT1JERVJfVllVWQkJKDM8PDE2KQorI2RlZmluZSAg IFNQUklURV9UUklDS0xFX0ZFRURfRElTQUJMRQkoMTw8MTQpCisjZGVmaW5lICAgU1BSSVRFX0lO VF9HQU1NQV9FTkFCTEUJKDE8PDEzKQorI2RlZmluZSAgIFNQUklURV9USUxFRAkJCSgxPDwxMCkK KyNkZWZpbmUgICBTUFJJVEVfREVTVF9LRVkJCSgxPDwyKQorI2RlZmluZSBfU1BSQV9MSU5PRkYJ CTB4NzAyODQKKyNkZWZpbmUgX1NQUkFfU1RSSURFCQkweDcwMjg4CisjZGVmaW5lIF9TUFJBX1BP UwkJMHg3MDI4YworI2RlZmluZSBfU1BSQV9TSVpFCQkweDcwMjkwCisjZGVmaW5lIF9TUFJBX0tF WVZBTAkJMHg3MDI5NAorI2RlZmluZSBfU1BSQV9LRVlNU0sJCTB4NzAyOTgKKyNkZWZpbmUgX1NQ UkFfU1VSRgkJMHg3MDI5YworI2RlZmluZSBfU1BSQV9LRVlNQVgJCTB4NzAyYTAKKyNkZWZpbmUg X1NQUkFfVElMRU9GRgkJMHg3MDJhNAorI2RlZmluZSBfU1BSQV9TQ0FMRQkJMHg3MDMwNAorI2Rl ZmluZSAgIFNQUklURV9TQ0FMRV9FTkFCTEUJKDE8PDMxKQorI2RlZmluZSAgIFNQUklURV9GSUxU RVJfTUFTSwkoMzw8MjkpCisjZGVmaW5lICAgU1BSSVRFX0ZJTFRFUl9NRURJVU0JKDA8PDI5KQor I2RlZmluZSAgIFNQUklURV9GSUxURVJfRU5IQU5DSU5HCSgxPDwyOSkKKyNkZWZpbmUgICBTUFJJ VEVfRklMVEVSX1NPRlRFTklORwkoMjw8MjkpCisjZGVmaW5lICAgU1BSSVRFX1ZFUlRJQ0FMX09G RlNFVF9IQUxGCSgxPDwyOCkgLyogbXVzdCBiZSBlbmFibGVkIGJlbG93ICovCisjZGVmaW5lICAg U1BSSVRFX1ZFUlRJQ0FMX09GRlNFVF9FTkFCTEUJKDE8PDI3KQorI2RlZmluZSBfU1BSQV9HQU1D CQkweDcwNDAwCisKKyNkZWZpbmUgX1NQUkJfQ1RMCQkweDcxMjgwCisjZGVmaW5lIF9TUFJCX0xJ Tk9GRgkJMHg3MTI4NAorI2RlZmluZSBfU1BSQl9TVFJJREUJCTB4NzEyODgKKyNkZWZpbmUgX1NQ UkJfUE9TCQkweDcxMjhjCisjZGVmaW5lIF9TUFJCX1NJWkUJCTB4NzEyOTAKKyNkZWZpbmUgX1NQ UkJfS0VZVkFMCQkweDcxMjk0CisjZGVmaW5lIF9TUFJCX0tFWU1TSwkJMHg3MTI5OAorI2RlZmlu ZSBfU1BSQl9TVVJGCQkweDcxMjljCisjZGVmaW5lIF9TUFJCX0tFWU1BWAkJMHg3MTJhMAorI2Rl ZmluZSBfU1BSQl9USUxFT0ZGCQkweDcxMmE0CisjZGVmaW5lIF9TUFJCX1NDQUxFCQkweDcxMzA0 CisjZGVmaW5lIF9TUFJCX0dBTUMJCTB4NzE0MDAKKworI2RlZmluZSBTUFJDVEwocGlwZSkgX1BJ UEUocGlwZSwgX1NQUkFfQ1RMLCBfU1BSQl9DVEwpCisjZGVmaW5lIFNQUkxJTk9GRihwaXBlKSBf UElQRShwaXBlLCBfU1BSQV9MSU5PRkYsIF9TUFJCX0xJTk9GRikKKyNkZWZpbmUgU1BSU1RSSURF KHBpcGUpIF9QSVBFKHBpcGUsIF9TUFJBX1NUUklERSwgX1NQUkJfU1RSSURFKQorI2RlZmluZSBT UFJQT1MocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfUE9TLCBfU1BSQl9QT1MpCisjZGVmaW5lIFNQ UlNJWkUocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfU0laRSwgX1NQUkJfU0laRSkKKyNkZWZpbmUg U1BSS0VZVkFMKHBpcGUpIF9QSVBFKHBpcGUsIF9TUFJBX0tFWVZBTCwgX1NQUkJfS0VZVkFMKQor I2RlZmluZSBTUFJLRVlNU0socGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfS0VZTVNLLCBfU1BSQl9L RVlNU0spCisjZGVmaW5lIFNQUlNVUkYocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfU1VSRiwgX1NQ UkJfU1VSRikKKyNkZWZpbmUgU1BSS0VZTUFYKHBpcGUpIF9QSVBFKHBpcGUsIF9TUFJBX0tFWU1B WCwgX1NQUkJfS0VZTUFYKQorI2RlZmluZSBTUFJUSUxFT0ZGKHBpcGUpIF9QSVBFKHBpcGUsIF9T UFJBX1RJTEVPRkYsIF9TUFJCX1RJTEVPRkYpCisjZGVmaW5lIFNQUlNDQUxFKHBpcGUpIF9QSVBF KHBpcGUsIF9TUFJBX1NDQUxFLCBfU1BSQl9TQ0FMRSkKKyNkZWZpbmUgU1BSR0FNQyhwaXBlKSBf UElQRShwaXBlLCBfU1BSQV9HQU1DLCBfU1BSQl9HQU1DKQorCiAvKiBWQklPUyByZWdzICovCiAj ZGVmaW5lIFZHQUNOVFJMCQkweDcxNDAwCiAjIGRlZmluZSBWR0FfRElTUF9ESVNBQkxFCQkJKDEg PDwgMzEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNzA4MGViNS4uMzRh Nzk1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtOTE1LDggKzkxNSw4 IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wYW5lbF91bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJICAgICBwaXBlX25hbWUocGlwZSkpOwogfQogCi1zdGF0aWMgdm9p ZCBhc3NlcnRfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQllbnVt IHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKK3ZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkgZW51bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpCiB7CiAJ aW50IHJlZzsKIAl1MzIgdmFsOwpAQCAtOTI5LDggKzkyOSw2IEBAIHN0YXRpYyB2b2lkIGFzc2Vy dF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgICAgICJwaXBlICVj IGFzc2VydGlvbiBmYWlsdXJlIChleHBlY3RlZCAlcywgY3VycmVudCAlcylcbiIsCiAJICAgICBw aXBlX25hbWUocGlwZSksIHN0YXRlX3N0cmluZyhzdGF0ZSksIHN0YXRlX3N0cmluZyhjdXJfc3Rh dGUpKTsKIH0KLSNkZWZpbmUgYXNzZXJ0X3BpcGVfZW5hYmxlZChkLCBwKSBhc3NlcnRfcGlwZShk LCBwLCB0cnVlKQotI2RlZmluZSBhc3NlcnRfcGlwZV9kaXNhYmxlZChkLCBwKSBhc3NlcnRfcGlw ZShkLCBwLCBmYWxzZSkKIAogc3RhdGljIHZvaWQgYXNzZXJ0X3BsYW5lX2VuYWJsZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBlbnVtIHBsYW5lIHBsYW5lKQpAQCAt NDUwOSw3ICs0NTA3LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3dtKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJICovCiB9CiAKLXN0YXRpYyB2b2lkIHNhbmR5YnJpZGdlX3VwZGF0 ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCBzYW5keWJyaWRnZV91cGRhdGVfd20o c3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWludCBsYXRlbmN5ID0gU05CX1JFQURfV00wX0xB VEVOQ1koKSAqIDEwMDsJLyogSW4gdW5pdCAwLjF1cyAqLwpAQCAtNDU2OSw3ICs0NTY3LDggQEAg c3RhdGljIHZvaWQgc2FuZHlicmlkZ2VfdXBkYXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJSTkxNV9XUklURShXTTJfTFBfSUxLLCAwKTsKIAlJOTE1X1dSSVRFKFdNMV9MUF9JTEssIDAp OwogCi0JaWYgKCFzaW5nbGVfcGxhbmVfZW5hYmxlZChlbmFibGVkKSkKKwlpZiAoIXNpbmdsZV9w bGFuZV9lbmFibGVkKGVuYWJsZWQpIHx8CisJICAgIGRldl9wcml2LT5zcHJpdGVfc2NhbGluZ19l bmFibGVkKQogCQlyZXR1cm47CiAJZW5hYmxlZCA9IGZmcyhlbmFibGVkKSAtIDE7CiAKQEAgLTQ2 MTksNiArNDYxOCwxNDkgQEAgc3RhdGljIHZvaWQgc2FuZHlicmlkZ2VfdXBkYXRlX3dtKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJCSAgIGN1cnNvcl93bSk7CiB9CiAKK3N0YXRpYyBib29sCitz YW5keWJyaWRnZV9jb21wdXRlX3Nwcml0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQg cGxhbmUsCisJCQkgICAgICB1aW50MzJfdCBzcHJpdGVfd2lkdGgsIGludCBwaXhlbF9zaXplLAor CQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3dhdGVybWFya19wYXJhbXMgKmRpc3BsYXksCisJ CQkgICAgICBpbnQgZGlzcGxheV9sYXRlbmN5X25zLCBpbnQgKnNwcml0ZV93bSkKK3sKKwlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7CisJaW50IGNsb2NrOworCWludCBlbnRyaWVzLCB0bGJfbWlzczsK KworCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGxhbmUoZGV2LCBwbGFuZSk7CisJaWYgKGNy dGMtPmZiID09IE5VTEwgfHwgIWNydGMtPmVuYWJsZWQpIHsKKwkJKnNwcml0ZV93bSA9IGRpc3Bs YXktPmd1YXJkX3NpemU7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwljbG9jayA9IGNydGMtPm1v ZGUuY2xvY2s7CisKKwkvKiBVc2UgdGhlIHNtYWxsIGJ1ZmZlciBtZXRob2QgdG8gY2FsY3VsYXRl IHRoZSBzcHJpdGUgd2F0ZXJtYXJrICovCisJZW50cmllcyA9ICgoY2xvY2sgKiBwaXhlbF9zaXpl IC8gMTAwMCkgKiBkaXNwbGF5X2xhdGVuY3lfbnMpIC8gMTAwMDsKKwl0bGJfbWlzcyA9IGRpc3Bs YXktPmZpZm9fc2l6ZSpkaXNwbGF5LT5jYWNoZWxpbmVfc2l6ZSAtCisJCXNwcml0ZV93aWR0aCAq IDg7CisJaWYgKHRsYl9taXNzID4gMCkKKwkJZW50cmllcyArPSB0bGJfbWlzczsKKwllbnRyaWVz ID0gRElWX1JPVU5EX1VQKGVudHJpZXMsIGRpc3BsYXktPmNhY2hlbGluZV9zaXplKTsKKwkqc3By aXRlX3dtID0gZW50cmllcyArIGRpc3BsYXktPmd1YXJkX3NpemU7CisJaWYgKCpzcHJpdGVfd20g PiAoaW50KWRpc3BsYXktPm1heF93bSkKKwkJKnNwcml0ZV93bSA9IGRpc3BsYXktPm1heF93bTsK KworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorc2FuZHlicmlkZ2VfY29tcHV0ZV9z cHJpdGVfc3J3bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGxhbmUsCisJCQkJdWludDMy X3Qgc3ByaXRlX3dpZHRoLCBpbnQgcGl4ZWxfc2l6ZSwKKwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxf d2F0ZXJtYXJrX3BhcmFtcyAqZGlzcGxheSwKKwkJCQlpbnQgbGF0ZW5jeV9ucywgaW50ICpzcHJp dGVfd20pCit7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXVuc2lnbmVkIGxvbmcgbGluZV90 aW1lX3VzOworCWludCBjbG9jazsKKwlpbnQgbGluZV9jb3VudCwgbGluZV9zaXplOworCWludCBz bWFsbCwgbGFyZ2U7CisJaW50IGVudHJpZXM7CisKKwlpZiAoIWxhdGVuY3lfbnMpIHsKKwkJKnNw cml0ZV93bSA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwljcnRjID0gaW50ZWxfZ2V0X2Ny dGNfZm9yX3BsYW5lKGRldiwgcGxhbmUpOworCWNsb2NrID0gY3J0Yy0+bW9kZS5jbG9jazsKKwor CWxpbmVfdGltZV91cyA9IChzcHJpdGVfd2lkdGggKiAxMDAwKSAvIGNsb2NrOworCWxpbmVfY291 bnQgPSAobGF0ZW5jeV9ucyAvIGxpbmVfdGltZV91cyArIDEwMDApIC8gMTAwMDsKKwlsaW5lX3Np emUgPSBzcHJpdGVfd2lkdGggKiBwaXhlbF9zaXplOworCisJLyogVXNlIHRoZSBtaW5pbXVtIG9m IHRoZSBzbWFsbCBhbmQgbGFyZ2UgYnVmZmVyIG1ldGhvZCBmb3IgcHJpbWFyeSAqLworCXNtYWxs ID0gKChjbG9jayAqIHBpeGVsX3NpemUgLyAxMDAwKSAqIGxhdGVuY3lfbnMpIC8gMTAwMDsKKwls YXJnZSA9IGxpbmVfY291bnQgKiBsaW5lX3NpemU7CisKKwllbnRyaWVzID0gRElWX1JPVU5EX1VQ KG1pbihzbWFsbCwgbGFyZ2UpLCBkaXNwbGF5LT5jYWNoZWxpbmVfc2l6ZSk7CisJKnNwcml0ZV93 bSA9IGVudHJpZXMgKyBkaXNwbGF5LT5ndWFyZF9zaXplOworCisJcmV0dXJuICpzcHJpdGVfd20g PiAweDNmZiA/IGZhbHNlIDogdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2FuZHlicmlkZ2VfdXBk YXRlX3Nwcml0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSwKKwkJCQkJIHVp bnQzMl90IHNwcml0ZV93aWR0aCwgaW50IHBpeGVsX3NpemUpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgbGF0ZW5jeSA9IFNO Ql9SRUFEX1dNMF9MQVRFTkNZKCkgKiAxMDA7CS8qIEluIHVuaXQgMC4xdXMgKi8KKwlpbnQgc3By aXRlX3dtLCByZWc7CisJaW50IHJldDsKKworCXN3aXRjaCAocGlwZSkgeworCWNhc2UgMDoKKwkJ cmVnID0gV00wX1BJUEVBX0lMSzsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlyZWcgPSBXTTBfUElQ RUJfSUxLOworCQlicmVhazsKKwljYXNlIDI6CisJCXJlZyA9IFdNMF9QSVBFQ19JVkI7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsgLyogYmFkIHBpcGUgKi8KKwl9CisKKwlyZXQgPSBz YW5keWJyaWRnZV9jb21wdXRlX3Nwcml0ZV93bShkZXYsIHBpcGUsIHNwcml0ZV93aWR0aCwgcGl4 ZWxfc2l6ZSwKKwkJCQkJICAgICZzYW5keWJyaWRnZV9kaXNwbGF5X3dtX2luZm8sCisJCQkJCSAg ICBsYXRlbmN5LCAmc3ByaXRlX3dtKTsKKwlpZiAoIXJldCkgeworCQlEUk1fREVCVUdfS01TKCJm YWlsZWQgdG8gY29tcHV0ZSBzcHJpdGUgd20gZm9yIHBpcGUgJWRcbiIsCisJCQkgICAgICBwaXBl KTsKKwkJcmV0dXJuOworCX0KKworCUk5MTVfV1JJVEUocmVnLCBJOTE1X1JFQUQocmVnKSB8IChz cHJpdGVfd20gPDwgV00wX1BJUEVfU1BSSVRFX1NISUZUKSk7CisJRFJNX0RFQlVHX0tNUygic3By aXRlIHdhdGVybWFya3MgRm9yIHBpcGUgJWQgLSAlZFxuIiwgcGlwZSwgc3ByaXRlX3dtKTsKKwor CisJcmV0ID0gc2FuZHlicmlkZ2VfY29tcHV0ZV9zcHJpdGVfc3J3bShkZXYsIHBpcGUsIHNwcml0 ZV93aWR0aCwKKwkJCQkJICAgICAgcGl4ZWxfc2l6ZSwKKwkJCQkJICAgICAgJnNhbmR5YnJpZGdl X2Rpc3BsYXlfc3J3bV9pbmZvLAorCQkJCQkgICAgICBTTkJfUkVBRF9XTTFfTEFURU5DWSgpICog NTAwLAorCQkJCQkgICAgICAmc3ByaXRlX3dtKTsKKwlpZiAoIXJldCkgeworCQlEUk1fREVCVUdf S01TKCJmYWlsZWQgdG8gY29tcHV0ZSBzcHJpdGUgbHAxIHdtIG9uIHBpcGUgJWRcbiIsCisJCQkg ICAgICBwaXBlKTsKKwkJcmV0dXJuOworCX0KKwlJOTE1X1dSSVRFKFdNMVNfTFBfSUxLLCBzcHJp dGVfd20pOworCisJLyogT25seSBJVkIgaGFzIHR3byBtb3JlIExQIHdhdGVybWFya3MgZm9yIHNw cml0ZSAqLworCWlmICghSVNfSVZZQlJJREdFKGRldikpCisJCXJldHVybjsKKworCXJldCA9IHNh bmR5YnJpZGdlX2NvbXB1dGVfc3ByaXRlX3Nyd20oZGV2LCBwaXBlLCBzcHJpdGVfd2lkdGgsCisJ CQkJCSAgICAgIHBpeGVsX3NpemUsCisJCQkJCSAgICAgICZzYW5keWJyaWRnZV9kaXNwbGF5X3Ny d21faW5mbywKKwkJCQkJICAgICAgU05CX1JFQURfV00yX0xBVEVOQ1koKSAqIDUwMCwKKwkJCQkJ ICAgICAgJnNwcml0ZV93bSk7CisJaWYgKCFyZXQpIHsKKwkJRFJNX0RFQlVHX0tNUygiZmFpbGVk IHRvIGNvbXB1dGUgc3ByaXRlIGxwMiB3bSBvbiBwaXBlICVkXG4iLAorCQkJICAgICAgcGlwZSk7 CisJCXJldHVybjsKKwl9CisJSTkxNV9XUklURShXTTJTX0xQX0lWQiwgc3ByaXRlX3dtKTsKKwor CXJldCA9IHNhbmR5YnJpZGdlX2NvbXB1dGVfc3ByaXRlX3Nyd20oZGV2LCBwaXBlLCBzcHJpdGVf d2lkdGgsCisJCQkJCSAgICAgIHBpeGVsX3NpemUsCisJCQkJCSAgICAgICZzYW5keWJyaWRnZV9k aXNwbGF5X3Nyd21faW5mbywKKwkJCQkJICAgICAgU05CX1JFQURfV00zX0xBVEVOQ1koKSAqIDUw MCwKKwkJCQkJICAgICAgJnNwcml0ZV93bSk7CisJaWYgKCFyZXQpIHsKKwkJRFJNX0RFQlVHX0tN UygiZmFpbGVkIHRvIGNvbXB1dGUgc3ByaXRlIGxwMyB3bSBvbiBwaXBlICVkXG4iLAorCQkJICAg ICAgcGlwZSk7CisJCXJldHVybjsKKwl9CisJSTkxNV9XUklURShXTTNTX0xQX0lWQiwgc3ByaXRl X3dtKTsKK30KKwogLyoqCiAgKiBpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyAtIHVwZGF0ZSBGSUZP IHdhdGVybWFyayB2YWx1ZXMgYmFzZWQgb24gY3VycmVudCBtb2RlcwogICoKQEAgLTQ2NTksNiAr NDgwMSwxNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20oZGV2KTsKIH0KIAor dm9pZCBpbnRlbF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3Moc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IHBpcGUsCisJCQkJICAgIHVpbnQzMl90IHNwcml0ZV93aWR0aCwgaW50IHBpeGVsX3Np emUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKworCWlmIChkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtKQorCQlkZXZf cHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtKGRldiwgcGlwZSwgc3ByaXRlX3dpZHRoLAor CQkJCQkJICAgcGl4ZWxfc2l6ZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9wYW5l bF91c2Vfc3NjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpZiAoaTkx NV9wYW5lbF91c2Vfc3NjID49IDApCkBAIC04NTE1LDYgKzg2NjcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJfSBlbHNlIGlmIChJ U19HRU42KGRldikpIHsKIAkJCWlmIChTTkJfUkVBRF9XTTBfTEFURU5DWSgpKSB7CiAJCQkJZGV2 X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gc2FuZHlicmlkZ2VfdXBkYXRlX3dtOworCQkJCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9zcHJpdGVfd20gPSBzYW5keWJyaWRnZV91cGRhdGVfc3By aXRlX3dtOwogCQkJfSBlbHNlIHsKIAkJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBk aXNwbGF5IHBsYW5lIGxhdGVuY3kuICIKIAkJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7CkBA IC04NTI4LDYgKzg2ODEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkJCWRldl9wcml2LT5kaXNwbGF5LmZkaV9saW5rX3RyYWluID0g aXZiX21hbnVhbF9mZGlfbGlua190cmFpbjsKIAkJCWlmIChTTkJfUkVBRF9XTTBfTEFURU5DWSgp KSB7CiAJCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gc2FuZHlicmlkZ2VfdXBkYXRl X3dtOworCQkJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9zcHJpdGVfd20gPSBzYW5keWJyaWRn ZV91cGRhdGVfc3ByaXRlX3dtOwogCQkJfSBlbHNlIHsKIAkJCQlEUk1fREVCVUdfS01TKCJGYWls ZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVuY3kuICIKIAkJCQkJICAgICAgIkRpc2FibGUg Q3hTUlxuIik7CkBAIC04NzExLDcgKzg4NjUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2Rpc2FibGVf dmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB2b2lkIGludGVsX21vZGVzZXRfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JaW50IGk7CisJaW50IGksIHJldDsKIAogCWRybV9tb2Rl X2NvbmZpZ19pbml0KGRldik7CiAKQEAgLTg3NDEsNiArODg5NSwxMiBAQCB2b2lkIGludGVsX21v ZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJZm9yIChpID0gMDsgaSA8IGRl dl9wcml2LT5udW1fcGlwZTsgaSsrKSB7CiAJCWludGVsX2NydGNfaW5pdChkZXYsIGkpOworCQlp ZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7CisJCQlyZXQgPSBpbnRlbF9wbGFuZV9pbml0KGRldiwg aSk7CisJCQlpZiAocmV0KQorCQkJCURSTV9FUlJPUigicGxhbmUgJWQgaW5pdCBmYWlsZWQ6ICVk XG4iLAorCQkJCQkgIGksIHJldCk7CisJCX0KIAl9CiAKIAkvKiBKdXN0IGRpc2FibGUgaXQgb25j ZSBhdCBzdGFydHVwICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDIzYzU2MjIuLjA4 OWNkZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzYsMTAgKzE3NiwyNyBAQCBz dHJ1Y3QgaW50ZWxfY3J0YyB7CiAJYm9vbCB1c2VfcGxsX2E7CiB9OwogCitzdHJ1Y3QgaW50ZWxf cGxhbmUgeworCXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKKwllbnVtIHBpcGUgcGlwZTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCWludCBtYXhfZG93bnNjYWxlOworCXUzMiBs dXRfclsxMDI0XSwgbHV0X2dbMTAyNF0sIGx1dF9iWzEwMjRdOworCXZvaWQgKCp1cGRhdGVfcGxh bmUpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKKwkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSAg ICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGNydGNfdywg dW5zaWduZWQgaW50IGNydGNfaCwKKwkJCSAgICAgdWludDMyX3QgeCwgdWludDMyX3QgeSwKKwkJ CSAgICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKTsKKwl2b2lkICgqZGlzYWJsZV9w bGFuZSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOworfTsKKwogI2RlZmluZSB0b19pbnRlbF9j cnRjKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfY3J0YywgYmFzZSkKICNkZWZpbmUg dG9faW50ZWxfY29ubmVjdG9yKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yLCBiYXNlKQogI2RlZmluZSB0b19pbnRlbF9lbmNvZGVyKHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgaW50ZWxfZW5jb2RlciwgYmFzZSkKICNkZWZpbmUgdG9faW50ZWxfZnJhbWVidWZmZXIo eCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciwgYmFzZSkKKyNkZWZp bmUgdG9faW50ZWxfcGxhbmUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9wbGFuZSwg YmFzZSkKIAogI2RlZmluZSBESVBfSEVBREVSX1NJWkUJNQogCkBAIC0yODksNiArMzA2LDcgQEAg aW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLAogZXh0ZXJuIGJvb2wgaW50ZWxfZHBkX2lzX2VkcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX2VkcF9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqLCBpbnQgKiwgaW50ICopOwogZXh0ZXJuIGJvb2wgaW50ZWxfZW5jb2Rlcl9p c19wY2hfZWRwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7CitleHRlcm4gaW50IGludGVs X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpOwogCiAv KiBpbnRlbF9wYW5lbC5jICovCiBleHRlcm4gdm9pZCBpbnRlbF9maXhlZF9wYW5lbF9tb2RlKHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlLApAQCAtMzc5LDkgKzM5NywxOSBAQCBl eHRlcm4gaW50IGludGVsX292ZXJsYXlfYXR0cnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIGV4dGVybiB2b2lkIGludGVsX2ZiX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBpbnRlbF9mYl9yZXN0b3JlX21vZGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7CiAKK2V4dGVybiB2b2lkIGFzc2VydF9waXBlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCisJCQlib29sIHN0YXRl KTsKKyNkZWZpbmUgYXNzZXJ0X3BpcGVfZW5hYmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCB0 cnVlKQorI2RlZmluZSBhc3NlcnRfcGlwZV9kaXNhYmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBw LCBmYWxzZSkKKwogZXh0ZXJuIHZvaWQgaW50ZWxfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBpbnRlbF93cml0ZV9lbGQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyLAogCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsK IGV4dGVybiB2b2lkIGludGVsX2NwdF92ZXJpZnlfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgcGlwZSk7CiAKKy8qIEZvciB1c2UgYnkgSVZCIExQIHdhdGVybWFyayB3b3JrYXJv dW5kIGluIGludGVsX3Nwcml0ZS5jICovCitleHRlcm4gdm9pZCBzYW5keWJyaWRnZV91cGRhdGVf d20oc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZCBpbnRlbF91cGRhdGVfc3By aXRlX3dhdGVybWFya3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUsCisJCQkJCSAg IHVpbnQzMl90IHNwcml0ZV93aWR0aCwKKwkJCQkJICAgaW50IHBpeGVsX3NpemUpOwogI2VuZGlm IC8qIF9fSU5URUxfRFJWX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiLmMKaW5kZXggZGMxZGI0 Zi4uMDY4YjA4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYi5jCkBAIC0yNzAsOCArMjcwLDE0IEBA IHZvaWQgaW50ZWxfZmJfcmVzdG9yZV9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJ aW50IHJldDsKIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsK KwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAogCXJldCA9IGRybV9mYl9oZWxwZXJfcmVzdG9y ZV9mYmRldl9tb2RlKCZkZXZfcHJpdi0+ZmJkZXYtPmhlbHBlcik7CiAJaWYgKHJldCkKIAkJRFJN X0RFQlVHKCJmYWlsZWQgdG8gcmVzdG9yZSBjcnRjIG1vZGVcbiIpOworCisJLyogQmUgc3VyZSB0 byBzaHV0IG9mZiBhbnkgcGxhbmVzIHRoYXQgbWF5IGJlIGFjdGl2ZSAqLworCWxpc3RfZm9yX2Vh Y2hfZW50cnkocGxhbmUsICZjb25maWctPnBsYW5lX2xpc3QsIGhlYWQpCisJCXBsYW5lLT5mdW5j cy0+ZGlzYWJsZV9wbGFuZShwbGFuZSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZWI3YjgKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMCwwICsxLDQ1 MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDExIEludGVsIENvcnBvcmF0aW9uCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAor ICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6Cisg KiAgIEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPgorICoKKyAqIE5ldyBw bGFuZS9zcHJpdGUgaGFuZGxpbmcuCisgKgorICogVGhlIG9sZGVyIGNoaXBzIGhhZCBhIHNlcGFy YXRlIGludGVyZmFjZSBmb3IgcHJvZ3JhbW1pbmcgcGxhbmUgcmVsYXRlZAorICogcmVnaXN0ZXJz OyBuZXdlciBvbmVzIGFyZSBtdWNoIHNpbXBsZXIgYW5kIHdlIGNhbiB1c2UgdGhlIG5ldyBEUk0g cGxhbmUKKyAqIHN1cHBvcnQuCisgKi8KKyNpbmNsdWRlICJkcm1QLmgiCisjaW5jbHVkZSAiZHJt X2NydGMuaCIKKyNpbmNsdWRlICJkcm1fZm91cmNjLmgiCisjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi CisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitzdGF0aWMg dm9pZAoraXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsCisJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBp bnQgY3J0Y194LCBpbnQgY3J0Y195LAorCQkgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQg aW50IGNydGNfaCwKKwkJIHVpbnQzMl90IHgsIHVpbnQzMl90IHksCisJCSB1aW50MzJfdCBzcmNf dywgdWludDMyX3Qgc3JjX2gpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5k ZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOworCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CisJdTMyIHNwcmN0bCwgc3Byc2Nh bGUgPSAwOworCWludCBwaXhlbF9zaXplOworCisJc3ByY3RsID0gSTkxNV9SRUFEKFNQUkNUTChw aXBlKSk7CisKKwkvKiBNYXNrIG91dCBwaXhlbCBmb3JtYXQgYml0cyBpbiBjYXNlIHdlIGNoYW5n ZSBpdCAqLworCXNwcmN0bCAmPSB+KFNQUklURV9ERVNUX0tFWSB8IFNQUklURV9TT1VSQ0VfS0VZ KTsKKwlzcHJjdGwgJj0gflNQUklURV9QSVhGT1JNQVRfTUFTSzsKKwlzcHJjdGwgJj0gflNQUklU RV9SR0JfT1JERVJfUkdCWDsKKwlzcHJjdGwgJj0gflNQUklURV9ZVVZfQllURV9PUkRFUl9NQVNL OworCisJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1hCR1I4 ODg4OgorCQlzcHJjdGwgfD0gU1BSSVRFX0ZPUk1BVF9SR0JYODg4OworCQlwaXhlbF9zaXplID0g NDsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCQlzcHJjdGwgfD0gU1BS SVRFX0ZPUk1BVF9SR0JYODg4IHwgU1BSSVRFX1JHQl9PUkRFUl9SR0JYOworCQlwaXhlbF9zaXpl ID0gNDsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1lVWVY6CisJCXNwcmN0bCB8PSBTUFJJ VEVfRk9STUFUX1lVVjQyMiB8IFNQUklURV9ZVVZfT1JERVJfWVVZVjsKKwkJcGl4ZWxfc2l6ZSA9 IDI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCQlzcHJjdGwgfD0gU1BSSVRF X0ZPUk1BVF9ZVVY0MjIgfCBTUFJJVEVfWVVWX09SREVSX1lWWVU7CisJCXBpeGVsX3NpemUgPSAy OworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfVVlWWToKKwkJc3ByY3RsIHw9IFNQUklURV9G T1JNQVRfWVVWNDIyIHwgU1BSSVRFX1lVVl9PUkRFUl9VWVZZOworCQlwaXhlbF9zaXplID0gMjsK KwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJCXNwcmN0bCB8PSBTUFJJVEVfRk9S TUFUX1lVVjQyMiB8IFNQUklURV9ZVVZfT1JERVJfVllVWTsKKwkJcGl4ZWxfc2l6ZSA9IDI7CisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9ERUJVR19EUklWRVIoImJhZCBwaXhlbCBmb3JtYXQs IGFzc3VtaW5nIFJHQlg4ODhcbiIpOworCQlzcHJjdGwgfD0gRFZTX0ZPUk1BVF9SR0JYODg4Owor CQlwaXhlbF9zaXplID0gNDsKKwkJYnJlYWs7CisJfQorCisJaWYgKG9iai0+dGlsaW5nX21vZGUg IT0gSTkxNV9USUxJTkdfTk9ORSkKKwkJc3ByY3RsIHw9IFNQUklURV9USUxFRDsKKworCS8qIG11 c3QgZGlzYWJsZSAqLworCXNwcmN0bCB8PSBTUFJJVEVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7CisJ c3ByY3RsIHw9IFNQUklURV9FTkFCTEU7CisKKwkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLworCXNy Y193LS07CisJc3JjX2gtLTsKKwljcnRjX3ctLTsKKwljcnRjX2gtLTsKKworCWludGVsX3VwZGF0 ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkZXYsIHBpcGUsIGNydGNfdywgcGl4ZWxfc2l6ZSk7CisKKwkv KgorCSAqIElWQiB3b3JrYXJvdW5kOiBtdXN0IGRpc2FibGUgbG93IHBvd2VyIHdhdGVybWFya3Mg Zm9yIGF0IGxlYXN0CisJICogb25lIGZyYW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5nLiAgTFAg d2F0ZXJtYXJrcyBjYW4gYmUgcmUtZW5hYmxlZAorCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxl ZC4KKwkgKi8KKwlpZiAoY3J0Y193ICE9IHNyY193IHx8IGNydGNfaCAhPSBzcmNfaCkgeworCQlk ZXZfcHJpdi0+c3ByaXRlX3NjYWxpbmdfZW5hYmxlZCA9IHRydWU7CisJCXNhbmR5YnJpZGdlX3Vw ZGF0ZV93bShkZXYpOworCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKKwkJc3By c2NhbGUgPSBTUFJJVEVfU0NBTEVfRU5BQkxFIHwgKHNyY193IDw8IDE2KSB8IHNyY19oOworCX0g ZWxzZSB7CisJCWRldl9wcml2LT5zcHJpdGVfc2NhbGluZ19lbmFibGVkID0gZmFsc2U7CisJCS8q IHBvdGVudGlhbGx5IHJlLWVuYWJsZSBMUCB3YXRlcm1hcmtzICovCisJCXNhbmR5YnJpZGdlX3Vw ZGF0ZV93bShkZXYpOworCX0KKworCUk5MTVfV1JJVEUoU1BSU1RSSURFKHBpcGUpLCBmYi0+cGl0 Y2gpOworCUk5MTVfV1JJVEUoU1BSUE9TKHBpcGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7 CisJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkgeworCQlJOTE1X1dS SVRFKFNQUlRJTEVPRkYocGlwZSksICh5IDw8IDE2KSB8IHgpOworCX0gZWxzZSB7CisJCXVuc2ln bmVkIGxvbmcgb2Zmc2V0OworCisJCW9mZnNldCA9IHkgKiBmYi0+cGl0Y2ggKyB4ICogKGZiLT5i aXRzX3Blcl9waXhlbCAvIDgpOworCQlJOTE1X1dSSVRFKFNQUkxJTk9GRihwaXBlKSwgb2Zmc2V0 KTsKKwl9CisJSTkxNV9XUklURShTUFJTSVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNf dyk7CisJSTkxNV9XUklURShTUFJTQ0FMRShwaXBlKSwgc3Byc2NhbGUpOworCUk5MTVfV1JJVEUo U1BSQ1RMKHBpcGUpLCBzcHJjdGwpOworCUk5MTVfV1JJVEUoU1BSU1VSRihwaXBlKSwgb2JqLT5n dHRfb2Zmc2V0KTsKKwlQT1NUSU5HX1JFQUQoU1BSU1VSRihwaXBlKSk7Cit9CisKK3N0YXRpYyB2 b2lkCitpdmJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJaW50IHBpcGUgPSBpbnRlbF9wbGFu ZS0+cGlwZTsKKworCUk5MTVfV1JJVEUoU1BSQ1RMKHBpcGUpLCBJOTE1X1JFQUQoU1BSQ1RMKHBp cGUpKSAmIH5TUFJJVEVfRU5BQkxFKTsKKwkvKiBDYW4ndCBsZWF2ZSB0aGUgc2NhbGVyIGVuYWJs ZWQuLi4gKi8KKwlJOTE1X1dSSVRFKFNQUlNDQUxFKHBpcGUpLCAwKTsKKwkvKiBBY3RpdmF0ZSBk b3VibGUgYnVmZmVyZWQgcmVnaXN0ZXIgdXBkYXRlICovCisJSTkxNV9XUklURShTUFJTVVJGKHBp cGUpLCAwKTsKKwlQT1NUSU5HX1JFQUQoU1BSU1VSRihwaXBlKSk7Cit9CisKK3N0YXRpYyB2b2lk CitzbmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKKwkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBj cnRjX3gsIGludCBjcnRjX3ksCisJCSB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQg Y3J0Y19oLAorCQkgdWludDMyX3QgeCwgdWludDMyX3QgeSwKKwkJIHVpbnQzMl90IHNyY193LCB1 aW50MzJfdCBzcmNfaCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7 CisJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZSwgcGl4ZWxfc2l6ZTsKKwl1MzIgZHZzY250 ciwgZHZzc2NhbGUgPSAwOworCisJZHZzY250ciA9IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsK KworCS8qIE1hc2sgb3V0IHBpeGVsIGZvcm1hdCBiaXRzIGluIGNhc2Ugd2UgY2hhbmdlIGl0ICov CisJZHZzY250ciAmPSB+KERWU19ERVNUX0tFWSB8IERWU19TT1VSQ0VfS0VZKTsKKwlkdnNjbnRy ICY9IH5EVlNfUElYRk9STUFUX01BU0s7CisJZHZzY250ciAmPSB+RFZTX1JHQl9PUkRFUl9SR0JY OworCWR2c2NudHIgJj0gfkRWU19ZVVZfQllURV9PUkRFUl9NQVNLOworCisJc3dpdGNoIChmYi0+ cGl4ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4OgorCQlkdnNjbnRyIHw9 IERWU19GT1JNQVRfUkdCWDg4ODsKKwkJcGl4ZWxfc2l6ZSA9IDQ7CisJCWJyZWFrOworCWNhc2Ug RFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJZHZzY250ciB8PSBEVlNfRk9STUFUX1JHQlg4ODggfCBE VlNfUkdCX09SREVSX1JHQlg7CisJCXBpeGVsX3NpemUgPSA0OworCQlicmVhazsKKwljYXNlIERS TV9GT1JNQVRfWVVZVjoKKwkJZHZzY250ciB8PSBEVlNfRk9STUFUX1lVVjQyMiB8IERWU19ZVVZf T1JERVJfWVVZVjsKKwkJcGl4ZWxfc2l6ZSA9IDI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1B VF9ZVllVOgorCQlkdnNjbnRyIHw9IERWU19GT1JNQVRfWVVWNDIyIHwgRFZTX1lVVl9PUkRFUl9Z VllVOworCQlwaXhlbF9zaXplID0gMjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6 CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9ZVVY0MjIgfCBEVlNfWVVWX09SREVSX1VZVlk7CisJ CXBpeGVsX3NpemUgPSAyOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfVllVWToKKwkJZHZz Y250ciB8PSBEVlNfRk9STUFUX1lVVjQyMiB8IERWU19ZVVZfT1JERVJfVllVWTsKKwkJcGl4ZWxf c2l6ZSA9IDI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9ERUJVR19EUklWRVIoImJhZCBw aXhlbCBmb3JtYXQsIGFzc3VtaW5nIFJHQlg4ODhcbiIpOworCQlkdnNjbnRyIHw9IERWU19GT1JN QVRfUkdCWDg4ODsKKwkJcGl4ZWxfc2l6ZSA9IDQ7CisJCWJyZWFrOworCX0KKworCWlmIChvYmot PnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCisJCWR2c2NudHIgfD0gRFZTX1RJTEVE OworCisJLyogbXVzdCBkaXNhYmxlICovCisJZHZzY250ciB8PSBEVlNfVFJJQ0tMRV9GRUVEX0RJ U0FCTEU7CisJZHZzY250ciB8PSBEVlNfRU5BQkxFOworCisJLyogU2l6ZXMgYXJlIDAgYmFzZWQg Ki8KKwlzcmNfdy0tOworCXNyY19oLS07CisJY3J0Y193LS07CisJY3J0Y19oLS07CisKKwlpbnRl bF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3MoZGV2LCBwaXBlLCBjcnRjX3csIHBpeGVsX3NpemUp OworCisJaWYgKGNydGNfdyAhPSBzcmNfdyB8fCBjcnRjX2ggIT0gc3JjX2gpCisJCWR2c3NjYWxl ID0gRFZTX1NDQUxFX0VOQUJMRSB8IChzcmNfdyA8PCAxNikgfCBzcmNfaDsKKworCUk5MTVfV1JJ VEUoRFZTU1RSSURFKHBpcGUpLCBmYi0+cGl0Y2gpOworCUk5MTVfV1JJVEUoRFZTUE9TKHBpcGUp LCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7CisJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkx NV9USUxJTkdfTk9ORSkgeworCQlJOTE1X1dSSVRFKERWU1RJTEVPRkYocGlwZSksICh5IDw8IDE2 KSB8IHgpOworCX0gZWxzZSB7CisJCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworCisJCW9mZnNldCA9 IHkgKiBmYi0+cGl0Y2ggKyB4ICogKGZiLT5iaXRzX3Blcl9waXhlbCAvIDgpOworCQlJOTE1X1dS SVRFKERWU0xJTk9GRihwaXBlKSwgb2Zmc2V0KTsKKwl9CisJSTkxNV9XUklURShEVlNTSVpFKHBp cGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7CisJSTkxNV9XUklURShEVlNTQ0FMRShwaXBl KSwgZHZzc2NhbGUpOworCUk5MTVfV1JJVEUoRFZTQ05UUihwaXBlKSwgZHZzY250cik7CisJSTkx NV9XUklURShEVlNTVVJGKHBpcGUpLCBvYmotPmd0dF9vZmZzZXQpOworCVBPU1RJTkdfUkVBRChE VlNTVVJGKHBpcGUpKTsKK30KKworc3RhdGljIHZvaWQKK3NuYl9kaXNhYmxlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lKTsKKwlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOworCisJSTkxNV9XUklURShEVlND TlRSKHBpcGUpLCBJOTE1X1JFQUQoRFZTQ05UUihwaXBlKSkgJiB+RFZTX0VOQUJMRSk7CisJLyog RGlzYWJsZSB0aGUgc2NhbGVyICovCisJSTkxNV9XUklURShEVlNTQ0FMRShwaXBlKSwgMCk7CisJ LyogRmx1c2ggZG91YmxlIGJ1ZmZlcmVkIHJlZ2lzdGVyIHVwZGF0ZXMgKi8KKwlJOTE1X1dSSVRF KERWU1NVUkYocGlwZSksIDApOworCVBPU1RJTkdfUkVBRChEVlNTVVJGKHBpcGUpKTsKK30KKwor c3RhdGljIGludAoraW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBp bnQgY3J0Y194LCBpbnQgY3J0Y195LAorCQkgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25l ZCBpbnQgY3J0Y19oLAorCQkgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCisJCSAg IHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcGxhbmUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOworCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmI7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9sZF9vYmo7CisJaW50IHBpcGUgPSBp bnRlbF9wbGFuZS0+cGlwZTsKKwlpbnQgcmV0ID0gMDsKKwlpbnQgeCA9IHNyY194ID4+IDE2LCB5 ID0gc3JjX3kgPj4gMTY7CisJaW50IHByaW1hcnlfdyA9IGNydGMtPm1vZGUuaGRpc3BsYXksIHBy aW1hcnlfaCA9IGNydGMtPm1vZGUudmRpc3BsYXk7CisJYm9vbCBkaXNhYmxlX3ByaW1hcnkgPSBm YWxzZTsKKworCWludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOworCW9iaiA9IGlu dGVsX2ZiLT5vYmo7CisKKwlvbGRfb2JqID0gaW50ZWxfcGxhbmUtPm9iajsKKworCS8qIFBpcGUg bXVzdCBiZSBydW5uaW5nLi4uICovCisJaWYgKCEoSTkxNV9SRUFEKFBJUEVDT05GKHBpcGUpKSAm IFBJUEVDT05GX0VOQUJMRSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNydGNfeCA+PSBw cmltYXJ5X3cgfHwgY3J0Y195ID49IHByaW1hcnlfaCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkv KiBEb24ndCBtb2RpZnkgYW5vdGhlciBwaXBlJ3MgcGxhbmUgKi8KKwlpZiAoaW50ZWxfcGxhbmUt PnBpcGUgIT0gaW50ZWxfY3J0Yy0+cGlwZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAq IENsYW1wIHRoZSB3aWR0aCAmIGhlaWdodCBpbnRvIHRoZSB2aXNpYmxlIGFyZWEuICBOb3RlIHdl IGRvbid0CisJICogdHJ5IHRvIHNjYWxlIHRoZSBzb3VyY2UgaWYgcGFydCBvZiB0aGUgdmlzaWJs ZSByZWdpb24gaXMgb2Zmc2NyZWVuLgorCSAqIFRoZSBjYWxsZXIgbXVzdCBoYW5kbGUgdGhhdCBi eSBhZGp1c3Rpbmcgc291cmNlIG9mZnNldCBhbmQgc2l6ZS4KKwkgKi8KKwlpZiAoKGNydGNfeCA8 IDApICYmICgoY3J0Y194ICsgY3J0Y193KSA+IDApKSB7CisJCWNydGNfdyArPSBjcnRjX3g7CisJ CWNydGNfeCA9IDA7CisJfQorCWlmICgoY3J0Y194ICsgY3J0Y193KSA8PSAwKSAvKiBOb3RoaW5n IHRvIGRpc3BsYXkgKi8KKwkJZ290byBvdXQ7CisJaWYgKChjcnRjX3ggKyBjcnRjX3cpID4gcHJp bWFyeV93KQorCQljcnRjX3cgPSBwcmltYXJ5X3cgLSBjcnRjX3g7CisKKwlpZiAoKGNydGNfeSA8 IDApICYmICgoY3J0Y195ICsgY3J0Y19oKSA+IDApKSB7CisJCWNydGNfaCArPSBjcnRjX3k7CisJ CWNydGNfeSA9IDA7CisJfQorCWlmICgoY3J0Y195ICsgY3J0Y19oKSA8PSAwKSAvKiBOb3RoaW5n IHRvIGRpc3BsYXkgKi8KKwkJZ290byBvdXQ7CisJaWYgKGNydGNfeSArIGNydGNfaCA+IHByaW1h cnlfaCkKKwkJY3J0Y19oID0gcHJpbWFyeV9oIC0gY3J0Y195OworCisJaWYgKCFjcnRjX3cgfHwg IWNydGNfaCkgLyogQWdhaW4sIG5vdGhpbmcgdG8gZGlzcGxheSAqLworCQlnb3RvIG91dDsKKwor CS8qCisJICogV2UgY2FuIHRha2UgYSBsYXJnZXIgc291cmNlIGFuZCBzY2FsZSBpdCBkb3duLCBi dXQKKwkgKiBvbmx5IHNvIG11Y2guLi4gIDE2eCBpcyB0aGUgbWF4IG9uIFNOQi4KKwkgKi8KKwlp ZiAoKChzcmNfdyAqIHNyY19oKSAvIChjcnRjX3cgKiBjcnRjX2gpKSA+IGludGVsX3BsYW5lLT5t YXhfZG93bnNjYWxlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICogSWYgdGhlIHNwcml0 ZSBpcyBjb21wbGV0ZWx5IGNvdmVyaW5nIHRoZSBwcmltYXJ5IHBsYW5lLAorCSAqIHdlIGNhbiBk aXNhYmxlIHRoZSBwcmltYXJ5IGFuZCBzYXZlIHBvd2VyLgorCSAqLworCWlmICgoY3J0Y194ID09 IDApICYmIChjcnRjX3kgPT0gMCkgJiYKKwkgICAgKGNydGNfdyA9PSBwcmltYXJ5X3cpICYmIChj cnRjX2ggPT0gcHJpbWFyeV9oKSkKKwkJZGlzYWJsZV9wcmltYXJ5ID0gdHJ1ZTsKKworCW11dGV4 X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2Vf ZmJfb2JqKGRldiwgb2JqLCBOVUxMKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVk IHRvIHBpbiBvYmplY3RcbiIpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJaW50ZWxfcGxh bmUtPm9iaiA9IG9iajsKKworCWludGVsX3BsYW5lLT51cGRhdGVfcGxhbmUocGxhbmUsIGZiLCBv YmosIGNydGNfeCwgY3J0Y195LAorCQkJCSAgY3J0Y193LCBjcnRjX2gsIHgsIHksIHNyY193LCBz cmNfaCk7CisKKwkvKiBVbnBpbiBvbGQgb2JqIGFmdGVyIG5ldyBvbmUgaXMgYWN0aXZlIHRvIGF2 b2lkIHVnbGluZXNzICovCisJaWYgKG9sZF9vYmopIHsKKwkJLyoKKwkJICogSXQncyBmYWlybHkg Y29tbW9uIHRvIHNpbXBseSB1cGRhdGUgdGhlIHBvc2l0aW9uIG9mCisJCSAqIGFuIGV4aXN0aW5n IG9iamVjdC4gIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0bworCQkgKiB3YWl0IGZvciB2 YmxhbmsgdG8gYXZvaWQgdWdsaW5lc3MsIHdlIG9ubHkgbmVlZCB0bworCQkgKiBkbyB0aGUgcGlu ICYgcmVmIGJvb2trZWVwaW5nLgorCQkgKi8KKwkJaWYgKG9sZF9vYmogIT0gb2JqKSB7CisJCQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJCWludGVsX3dhaXRfZm9yX3ZibGFu ayhkZXYsIHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGUpOworCQkJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOworCQl9CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbihvbGRfb2JqKTsKKwl9 CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CitvdXQ6 CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraW50ZWxfZGlzYWJsZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUt PmRldjsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmUpOworCWludCByZXQgPSAwOworCisJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUocGxh bmUpOworCisJaWYgKCFpbnRlbF9wbGFuZS0+b2JqKQorCQlnb3RvIG91dDsKKworCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW4oaW50ZWxfcGxh bmUtPm9iaik7CisJaW50ZWxfcGxhbmUtPm9iaiA9IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CitvdXQ6CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBp bnRlbF9kZXN0cm95X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJaW50ZWxf ZGlzYWJsZV9wbGFuZShwbGFuZSk7CisJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOworCWtmcmVl KGludGVsX3BsYW5lKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mg aW50ZWxfcGxhbmVfZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZSA9IGludGVsX3VwZGF0ZV9wbGFu ZSwKKwkuZGlzYWJsZV9wbGFuZSA9IGludGVsX2Rpc2FibGVfcGxhbmUsCisJLmRlc3Ryb3kgPSBp bnRlbF9kZXN0cm95X3BsYW5lLAorfTsKKworc3RhdGljIHVpbnQzMl90IHNuYl9wbGFuZV9mb3Jt YXRzW10gPSB7CisJRFJNX0ZPUk1BVF9YQkdSODg4OCwKKwlEUk1fRk9STUFUX1hSR0I4ODg4LAor CURSTV9GT1JNQVRfWVVZViwKKwlEUk1fRk9STUFUX1lWWVUsCisJRFJNX0ZPUk1BVF9VWVZZLAor CURSTV9GT1JNQVRfVllVWSwKK307CisKK2ludAoraW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lOworCXVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3M7CisJaW50IHJldDsKKwor CWlmICghKElTX0dFTjYoZGV2KSB8fCBJU19HRU43KGRldikpKSB7CisJCURSTV9FUlJPUigibmV3 IHBsYW5lIGNvZGUgb25seSBmb3IgU05CK1xuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKwor CWludGVsX3BsYW5lID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGludGVsX3BsYW5lKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFpbnRlbF9wbGFuZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoSVNf R0VONihkZXYpKSB7CisJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTY7CisJCWludGVs X3BsYW5lLT51cGRhdGVfcGxhbmUgPSBzbmJfdXBkYXRlX3BsYW5lOworCQlpbnRlbF9wbGFuZS0+ ZGlzYWJsZV9wbGFuZSA9IHNuYl9kaXNhYmxlX3BsYW5lOworCX0gZWxzZSBpZiAoSVNfR0VONyhk ZXYpKSB7CisJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMjsKKwkJaW50ZWxfcGxhbmUt PnVwZGF0ZV9wbGFuZSA9IGl2Yl91cGRhdGVfcGxhbmU7CisJCWludGVsX3BsYW5lLT5kaXNhYmxl X3BsYW5lID0gaXZiX2Rpc2FibGVfcGxhbmU7CisJfQorCisJaW50ZWxfcGxhbmUtPnBpcGUgPSBw aXBlOworCXBvc3NpYmxlX2NydGNzID0gKDEgPDwgcGlwZSk7CisJcmV0ID0gZHJtX3BsYW5lX2lu aXQoZGV2LCAmaW50ZWxfcGxhbmUtPmJhc2UsIHBvc3NpYmxlX2NydGNzLAorCQkJICAgICAmaW50 ZWxfcGxhbmVfZnVuY3MsIHNuYl9wbGFuZV9mb3JtYXRzLAorCQkJICAgICBBUlJBWV9TSVpFKHNu Yl9wbGFuZV9mb3JtYXRzKSk7CisJaWYgKHJldCkKKwkJa2ZyZWUoaW50ZWxfcGxhbmUpOworCisJ cmV0dXJuIHJldDsKK30KKwotLSAKMS43LjQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK