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_v6?= Date: Tue, 13 Dec 2011 13:19:38 -0800 Message-ID: <1323811180-17581-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 oproxy8-pub.bluehost.com (oproxy8-pub.bluehost.com [69.89.22.20]) by gabe.freedesktop.org (Postfix) with SMTP id 99621A08B4 for ; Tue, 13 Dec 2011 13:19:53 -0800 (PST) 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 cyB0aGluZ3MKdjU6IGFkZCBsaW5lYXIgc3VyZmFjZSBzdXBwb3J0CnY2OiByZW1vdmUgY29sb3Ig a2V5IGNsZWFyaW5nICYgc2V0dGluZyBmcm9tIHVwZGF0ZV9wbGFuZQoKRm9yIHRoaXMgdmVyc2lv biwgSSB0ZXN0ZWQgRFBNUyBzaW5jZSBpdCBjYW1lIHVwIGluIHRoZSBsYXN0IHJldmlldzsKRFBN UyBvZmYvb24gd29ya3Mgb2sgd2hlbiBhIHZpZGVvIHBsYXllciBpcyB3b3JraW5nIHVuZGVyIFgs IGJ1dCBmb3IKcG93ZXIgc2F2aW5nIHdlJ2xsIHByb2JhYmx5IHdhbnQgdG8gZG8gc29tZXRoaW5n IHNtYXJ0ZXIuICBJJ2xsIGxlYXZlCnRoYXQgZm9yIGEgc2VwYXJhdGUgcGF0Y2ggb24gdG9wLiAg TGlrZXdpc2Ugd2l0aCB0aGUgcmVmY291bnRpbmcvZmIKbGF5ZXIgaGFuZGxpbmcsIHdoaWNoIGFy ZSByZWFsbHkgc2VwYXJhdGUgY2xlYW51cHMuCgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogSmVzc2UgQmFybmVzIDxqYmFy bmVzQHZpcnR1b3VzZ2Vlay5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg ICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg ICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAxMzMgKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE3NCArKysrKysr KysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyOCArKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYyAgICAgIHwgICAgNiArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgNDUwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNzg4IGluc2VydGlvbnMoKyksIDcgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDBhZTZhN2MuLjgwOGIyNTUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCkBAIC0yOCw2ICsyOCw3IEBAIGk5MTUteSA6PSBpOTE1X2Rydi5vIGk5MTVf ZG1hLm8gaTkxNV9pcnEubyBpOTE1X21lbS5vIFwKIAkgIGludGVsX2R2by5vIFwKIAkgIGludGVs X3JpbmdidWZmZXIubyBcCiAJICBpbnRlbF9vdmVybGF5Lm8gXAorCSAgaW50ZWxfc3ByaXRlLm8g XAogCSAgaW50ZWxfb3ByZWdpb24ubyBcCiAJICBkdm9fY2g3eHh4Lm8gXAogCSAgZHZvX2NoNzAx Ny5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDA2YTM3ZjQuLjA5MjBiNmIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHN0cnVjdCBkcm1faTkxNV9k aXNwbGF5X2Z1bmNzIHsKIAlpbnQgKCpnZXRfZGlzcGxheV9jbG9ja19zcGVlZCkoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CiAJaW50ICgqZ2V0X2ZpZm9fc2l6ZSkoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IHBsYW5lKTsKIAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKKwl2b2lkICgqdXBkYXRlX3Nwcml0ZV93bSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IHBpcGUsCisJCQkJIHVpbnQzMl90IHNwcml0ZV93aWR0aCwgaW50IHBpeGVsX3NpemUpOwog CWludCAoKmNydGNfbW9kZV9zZXQpKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgICAgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiAJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlLApAQCAtMzQ0LDYgKzM0Niw3IEBAIHR5cGVkZWYgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgewogCiAJLyogb3ZlcmxheSAqLwogCXN0cnVjdCBpbnRlbF9vdmVybGF5 ICpvdmVybGF5OworCWJvb2wgc3ByaXRlX3NjYWxpbmdfZW5hYmxlZDsKIAogCS8qIExWRFMgaW5m byAqLwogCWludCBiYWNrbGlnaHRfbGV2ZWw7ICAvKiByZXN0b3JlIGJhY2tsaWdodCB0byB0aGlz IHZhbHVlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA1YTA5NDE2Li5mODcyYmEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTI0NTAsNiArMjQ1MCw4IEBACiAjZGVmaW5lIFdN M19MUF9JTEsJCTB4NDUxMTAKICNkZWZpbmUgIFdNM19MUF9FTgkJKDE8PDMxKQogI2RlZmluZSBX TTFTX0xQX0lMSwkJMHg0NTEyMAorI2RlZmluZSBXTTJTX0xQX0lWQgkJMHg0NTEyNAorI2RlZmlu ZSBXTTNTX0xQX0lWQgkJMHg0NTEyOAogI2RlZmluZSAgV00xU19MUF9FTgkJKDE8PDMxKQogCiAv KiBNZW1vcnkgbGF0ZW5jeSB0aW1lciByZWdpc3RlciAqLwpAQCAtMjY2Niw2ICsyNjY4LDEzNyBA QAogI2RlZmluZSBfRFNQQlNVUkYJCTB4NzExOUMKICNkZWZpbmUgX0RTUEJUSUxFT0ZGCQkweDcx MUE0CiAKKy8qIFNwcml0ZSBBIGNvbnRyb2wgKi8KKyNkZWZpbmUgX0RWU0FDTlRSCQkweDcyMTgw CisjZGVmaW5lICAgRFZTX0VOQUJMRQkJKDE8PDMxKQorI2RlZmluZSAgIERWU19HQU1NQV9FTkFC TEUJKDE8PDMwKQorI2RlZmluZSAgIERWU19QSVhGT1JNQVRfTUFTSwkoMzw8MjUpCisjZGVmaW5l ICAgRFZTX0ZPUk1BVF9ZVVY0MjIJKDA8PDI1KQorI2RlZmluZSAgIERWU19GT1JNQVRfUkdCWDEw MTAxMAkoMTw8MjUpCisjZGVmaW5lICAgRFZTX0ZPUk1BVF9SR0JYODg4CSgyPDwyNSkKKyNkZWZp bmUgICBEVlNfRk9STUFUX1JHQlgxNjE2MTYJKDM8PDI1KQorI2RlZmluZSAgIERWU19TT1VSQ0Vf S0VZCSgxPDwyMikKKyNkZWZpbmUgICBEVlNfUkdCX09SREVSX1JHQlgJKDE8PDIwKQorI2RlZmlu ZSAgIERWU19ZVVZfQllURV9PUkRFUl9NQVNLICgzPDwxNikKKyNkZWZpbmUgICBEVlNfWVVWX09S REVSX1lVWVYJKDA8PDE2KQorI2RlZmluZSAgIERWU19ZVVZfT1JERVJfVVlWWQkoMTw8MTYpCisj ZGVmaW5lICAgRFZTX1lVVl9PUkRFUl9ZVllVCSgyPDwxNikKKyNkZWZpbmUgICBEVlNfWVVWX09S REVSX1ZZVVkJKDM8PDE2KQorI2RlZmluZSAgIERWU19ERVNUX0tFWQkJKDE8PDIpCisjZGVmaW5l ICAgRFZTX1RSSUNLTEVfRkVFRF9ESVNBQkxFICgxPDwxNCkKKyNkZWZpbmUgICBEVlNfVElMRUQJ CSgxPDwxMCkKKyNkZWZpbmUgX0RWU0FMSU5PRkYJCTB4NzIxODQKKyNkZWZpbmUgX0RWU0FTVFJJ REUJCTB4NzIxODgKKyNkZWZpbmUgX0RWU0FQT1MJCTB4NzIxOGMKKyNkZWZpbmUgX0RWU0FTSVpF CQkweDcyMTkwCisjZGVmaW5lIF9EVlNBS0VZVkFMCQkweDcyMTk0CisjZGVmaW5lIF9EVlNBS0VZ TVNLCQkweDcyMTk4CisjZGVmaW5lIF9EVlNBU1VSRgkJMHg3MjE5YworI2RlZmluZSBfRFZTQUtF WU1BWFZBTAkJMHg3MjFhMAorI2RlZmluZSBfRFZTQVRJTEVPRkYJCTB4NzIxYTQKKyNkZWZpbmUg X0RWU0FTVVJGTElWRQkJMHg3MjFhYworI2RlZmluZSBfRFZTQVNDQUxFCQkweDcyMjA0CisjZGVm aW5lICAgRFZTX1NDQUxFX0VOQUJMRQkoMTw8MzEpCisjZGVmaW5lICAgRFZTX0ZJTFRFUl9NQVNL CSgzPDwyOSkKKyNkZWZpbmUgICBEVlNfRklMVEVSX01FRElVTQkoMDw8MjkpCisjZGVmaW5lICAg RFZTX0ZJTFRFUl9FTkhBTkNJTkcJKDE8PDI5KQorI2RlZmluZSAgIERWU19GSUxURVJfU09GVEVO SU5HCSgyPDwyOSkKKyNkZWZpbmUgICBEVlNfVkVSVElDQUxfT0ZGU0VUX0hBTEYgKDE8PDI4KSAv KiBtdXN0IGJlIGVuYWJsZWQgYmVsb3cgKi8KKyNkZWZpbmUgICBEVlNfVkVSVElDQUxfT0ZGU0VU X0VOQUJMRSAoMTw8MjcpCisjZGVmaW5lIF9EVlNBR0FNQwkJMHg3MjMwMAorCisjZGVmaW5lIF9E VlNCQ05UUgkJMHg3MzE4MAorI2RlZmluZSBfRFZTQkxJTk9GRgkJMHg3MzE4NAorI2RlZmluZSBf RFZTQlNUUklERQkJMHg3MzE4OAorI2RlZmluZSBfRFZTQlBPUwkJMHg3MzE4YworI2RlZmluZSBf RFZTQlNJWkUJCTB4NzMxOTAKKyNkZWZpbmUgX0RWU0JLRVlWQUwJCTB4NzMxOTQKKyNkZWZpbmUg X0RWU0JLRVlNU0sJCTB4NzMxOTgKKyNkZWZpbmUgX0RWU0JTVVJGCQkweDczMTljCisjZGVmaW5l IF9EVlNCS0VZTUFYVkFMCQkweDczMWEwCisjZGVmaW5lIF9EVlNCVElMRU9GRgkJMHg3MzFhNAor I2RlZmluZSBfRFZTQlNVUkZMSVZFCQkweDczMWFjCisjZGVmaW5lIF9EVlNCU0NBTEUJCTB4NzMy MDQKKyNkZWZpbmUgX0RWU0JHQU1DCQkweDczMzAwCisKKyNkZWZpbmUgRFZTQ05UUihwaXBlKSBf UElQRShwaXBlLCBfRFZTQUNOVFIsIF9EVlNCQ05UUikKKyNkZWZpbmUgRFZTTElOT0ZGKHBpcGUp IF9QSVBFKHBpcGUsIF9EVlNBTElOT0ZGLCBfRFZTQkxJTk9GRikKKyNkZWZpbmUgRFZTU1RSSURF KHBpcGUpIF9QSVBFKHBpcGUsIF9EVlNBU1RSSURFLCBfRFZTQlNUUklERSkKKyNkZWZpbmUgRFZT UE9TKHBpcGUpIF9QSVBFKHBpcGUsIF9EVlNBUE9TLCBfRFZTQlBPUykKKyNkZWZpbmUgRFZTU1VS RihwaXBlKSBfUElQRShwaXBlLCBfRFZTQVNVUkYsIF9EVlNCU1VSRikKKyNkZWZpbmUgRFZTU0la RShwaXBlKSBfUElQRShwaXBlLCBfRFZTQVNJWkUsIF9EVlNCU0laRSkKKyNkZWZpbmUgRFZTU0NB TEUocGlwZSkgX1BJUEUocGlwZSwgX0RWU0FTQ0FMRSwgX0RWU0JTQ0FMRSkKKyNkZWZpbmUgRFZT VElMRU9GRihwaXBlKSBfUElQRShwaXBlLCBfRFZTQVRJTEVPRkYsIF9EVlNCVElMRU9GRikKKwor I2RlZmluZSBfU1BSQV9DVEwJCTB4NzAyODAKKyNkZWZpbmUgICBTUFJJVEVfRU5BQkxFCQkJKDE8 PDMxKQorI2RlZmluZSAgIFNQUklURV9HQU1NQV9FTkFCTEUJCSgxPDwzMCkKKyNkZWZpbmUgICBT UFJJVEVfUElYRk9STUFUX01BU0sJCSg3PDwyNSkKKyNkZWZpbmUgICBTUFJJVEVfRk9STUFUX1lV VjQyMgkJKDA8PDI1KQorI2RlZmluZSAgIFNQUklURV9GT1JNQVRfUkdCWDEwMTAxMAkoMTw8MjUp CisjZGVmaW5lICAgU1BSSVRFX0ZPUk1BVF9SR0JYODg4CQkoMjw8MjUpCisjZGVmaW5lICAgU1BS SVRFX0ZPUk1BVF9SR0JYMTYxNjE2CSgzPDwyNSkKKyNkZWZpbmUgICBTUFJJVEVfRk9STUFUX1lV VjQ0NAkJKDQ8PDI1KQorI2RlZmluZSAgIFNQUklURV9GT1JNQVRfWFJfQkdSMTAxMDEwCSg1PDwy NSkgLyogRXh0ZW5kZWQgcmFuZ2UgKi8KKyNkZWZpbmUgICBTUFJJVEVfQ1NDX0VOQUJMRQkJKDE8 PDI0KQorI2RlZmluZSAgIFNQUklURV9TT1VSQ0VfS0VZCQkoMTw8MjIpCisjZGVmaW5lICAgU1BS SVRFX1JHQl9PUkRFUl9SR0JYCQkoMTw8MjApIC8qIG9ubHkgZm9yIDg4OCBhbmQgMTYxNjE2ICov CisjZGVmaW5lICAgU1BSSVRFX1lVVl9UT19SR0JfQ1NDX0RJU0FCTEUJKDE8PDE5KQorI2RlZmlu ZSAgIFNQUklURV9ZVVZfQ1NDX0ZPUk1BVF9CVDcwOQkoMTw8MTgpIC8qIDAgaXMgQlQ2MDEgKi8K KyNkZWZpbmUgICBTUFJJVEVfWVVWX0JZVEVfT1JERVJfTUFTSwkoMzw8MTYpCisjZGVmaW5lICAg U1BSSVRFX1lVVl9PUkRFUl9ZVVlWCQkoMDw8MTYpCisjZGVmaW5lICAgU1BSSVRFX1lVVl9PUkRF Ul9VWVZZCQkoMTw8MTYpCisjZGVmaW5lICAgU1BSSVRFX1lVVl9PUkRFUl9ZVllVCQkoMjw8MTYp CisjZGVmaW5lICAgU1BSSVRFX1lVVl9PUkRFUl9WWVVZCQkoMzw8MTYpCisjZGVmaW5lICAgU1BS SVRFX1RSSUNLTEVfRkVFRF9ESVNBQkxFCSgxPDwxNCkKKyNkZWZpbmUgICBTUFJJVEVfSU5UX0dB TU1BX0VOQUJMRQkoMTw8MTMpCisjZGVmaW5lICAgU1BSSVRFX1RJTEVECQkJKDE8PDEwKQorI2Rl ZmluZSAgIFNQUklURV9ERVNUX0tFWQkJKDE8PDIpCisjZGVmaW5lIF9TUFJBX0xJTk9GRgkJMHg3 MDI4NAorI2RlZmluZSBfU1BSQV9TVFJJREUJCTB4NzAyODgKKyNkZWZpbmUgX1NQUkFfUE9TCQkw eDcwMjhjCisjZGVmaW5lIF9TUFJBX1NJWkUJCTB4NzAyOTAKKyNkZWZpbmUgX1NQUkFfS0VZVkFM CQkweDcwMjk0CisjZGVmaW5lIF9TUFJBX0tFWU1TSwkJMHg3MDI5OAorI2RlZmluZSBfU1BSQV9T VVJGCQkweDcwMjljCisjZGVmaW5lIF9TUFJBX0tFWU1BWAkJMHg3MDJhMAorI2RlZmluZSBfU1BS QV9USUxFT0ZGCQkweDcwMmE0CisjZGVmaW5lIF9TUFJBX1NDQUxFCQkweDcwMzA0CisjZGVmaW5l ICAgU1BSSVRFX1NDQUxFX0VOQUJMRQkoMTw8MzEpCisjZGVmaW5lICAgU1BSSVRFX0ZJTFRFUl9N QVNLCSgzPDwyOSkKKyNkZWZpbmUgICBTUFJJVEVfRklMVEVSX01FRElVTQkoMDw8MjkpCisjZGVm aW5lICAgU1BSSVRFX0ZJTFRFUl9FTkhBTkNJTkcJKDE8PDI5KQorI2RlZmluZSAgIFNQUklURV9G SUxURVJfU09GVEVOSU5HCSgyPDwyOSkKKyNkZWZpbmUgICBTUFJJVEVfVkVSVElDQUxfT0ZGU0VU X0hBTEYJKDE8PDI4KSAvKiBtdXN0IGJlIGVuYWJsZWQgYmVsb3cgKi8KKyNkZWZpbmUgICBTUFJJ VEVfVkVSVElDQUxfT0ZGU0VUX0VOQUJMRQkoMTw8MjcpCisjZGVmaW5lIF9TUFJBX0dBTUMJCTB4 NzA0MDAKKworI2RlZmluZSBfU1BSQl9DVEwJCTB4NzEyODAKKyNkZWZpbmUgX1NQUkJfTElOT0ZG CQkweDcxMjg0CisjZGVmaW5lIF9TUFJCX1NUUklERQkJMHg3MTI4OAorI2RlZmluZSBfU1BSQl9Q T1MJCTB4NzEyOGMKKyNkZWZpbmUgX1NQUkJfU0laRQkJMHg3MTI5MAorI2RlZmluZSBfU1BSQl9L RVlWQUwJCTB4NzEyOTQKKyNkZWZpbmUgX1NQUkJfS0VZTVNLCQkweDcxMjk4CisjZGVmaW5lIF9T UFJCX1NVUkYJCTB4NzEyOWMKKyNkZWZpbmUgX1NQUkJfS0VZTUFYCQkweDcxMmEwCisjZGVmaW5l IF9TUFJCX1RJTEVPRkYJCTB4NzEyYTQKKyNkZWZpbmUgX1NQUkJfU0NBTEUJCTB4NzEzMDQKKyNk ZWZpbmUgX1NQUkJfR0FNQwkJMHg3MTQwMAorCisjZGVmaW5lIFNQUkNUTChwaXBlKSBfUElQRShw aXBlLCBfU1BSQV9DVEwsIF9TUFJCX0NUTCkKKyNkZWZpbmUgU1BSTElOT0ZGKHBpcGUpIF9QSVBF KHBpcGUsIF9TUFJBX0xJTk9GRiwgX1NQUkJfTElOT0ZGKQorI2RlZmluZSBTUFJTVFJJREUocGlw ZSkgX1BJUEUocGlwZSwgX1NQUkFfU1RSSURFLCBfU1BSQl9TVFJJREUpCisjZGVmaW5lIFNQUlBP UyhwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9QT1MsIF9TUFJCX1BPUykKKyNkZWZpbmUgU1BSU0la RShwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9TSVpFLCBfU1BSQl9TSVpFKQorI2RlZmluZSBTUFJL RVlWQUwocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfS0VZVkFMLCBfU1BSQl9LRVlWQUwpCisjZGVm aW5lIFNQUktFWU1TSyhwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9LRVlNU0ssIF9TUFJCX0tFWU1T SykKKyNkZWZpbmUgU1BSU1VSRihwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9TVVJGLCBfU1BSQl9T VVJGKQorI2RlZmluZSBTUFJLRVlNQVgocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfS0VZTUFYLCBf U1BSQl9LRVlNQVgpCisjZGVmaW5lIFNQUlRJTEVPRkYocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFf VElMRU9GRiwgX1NQUkJfVElMRU9GRikKKyNkZWZpbmUgU1BSU0NBTEUocGlwZSkgX1BJUEUocGlw ZSwgX1NQUkFfU0NBTEUsIF9TUFJCX1NDQUxFKQorI2RlZmluZSBTUFJHQU1DKHBpcGUpIF9QSVBF KHBpcGUsIF9TUFJBX0dBTUMsIF9TUFJCX0dBTUMpCisKIC8qIFZCSU9TIHJlZ3MgKi8KICNkZWZp bmUgVkdBQ05UUkwJCTB4NzE0MDAKICMgZGVmaW5lIFZHQV9ESVNQX0RJU0FCTEUJCQkoMSA8PCAz MSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAwYmM5M2MzLi5jODEyYjNk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC05MTUsOCArOTE1LDggQEAg c3RhdGljIHZvaWQgYXNzZXJ0X3BhbmVsX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkgICAgIHBpcGVfbmFtZShwaXBlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFz c2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCWVudW0gcGlw ZSBwaXBlLCBib29sIHN0YXRlKQordm9pZCBhc3NlcnRfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCSBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKIHsKIAlpbnQg cmVnOwogCXUzMiB2YWw7CkBAIC05MjksOCArOTI5LDYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Bp cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICAgInBpcGUgJWMgYXNz ZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKIAkgICAgIHBpcGVf bmFtZShwaXBlKSwgc3RhdGVfc3RyaW5nKHN0YXRlKSwgc3RhdGVfc3RyaW5nKGN1cl9zdGF0ZSkp OwogfQotI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIHApIGFzc2VydF9waXBlKGQsIHAs IHRydWUpCi0jZGVmaW5lIGFzc2VydF9waXBlX2Rpc2FibGVkKGQsIHApIGFzc2VydF9waXBlKGQs IHAsIGZhbHNlKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmVfZW5hYmxlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJIGVudW0gcGxhbmUgcGxhbmUpCkBAIC00NTA4 LDcgKzQ1MDYsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfd20oc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkgKi8KIH0KIAotc3RhdGljIHZvaWQgc2FuZHlicmlkZ2VfdXBkYXRlX3dt KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit2b2lkIHNhbmR5YnJpZGdlX3VwZGF0ZV93bShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IGxhdGVuY3kgPSBTTkJfUkVBRF9XTTBfTEFURU5D WSgpICogMTAwOwkvKiBJbiB1bml0IDAuMXVzICovCkBAIC00NTY4LDcgKzQ1NjYsOCBAQCBzdGF0 aWMgdm9pZCBzYW5keWJyaWRnZV91cGRhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlJ OTE1X1dSSVRFKFdNMl9MUF9JTEssIDApOwogCUk5MTVfV1JJVEUoV00xX0xQX0lMSywgMCk7CiAK LQlpZiAoIXNpbmdsZV9wbGFuZV9lbmFibGVkKGVuYWJsZWQpKQorCWlmICghc2luZ2xlX3BsYW5l X2VuYWJsZWQoZW5hYmxlZCkgfHwKKwkgICAgZGV2X3ByaXYtPnNwcml0ZV9zY2FsaW5nX2VuYWJs ZWQpCiAJCXJldHVybjsKIAllbmFibGVkID0gZmZzKGVuYWJsZWQpIC0gMTsKIApAQCAtNDYxOCw2 ICs0NjE3LDE0OSBAQCBzdGF0aWMgdm9pZCBzYW5keWJyaWRnZV91cGRhdGVfd20oc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJICAgY3Vyc29yX3dtKTsKIH0KIAorc3RhdGljIGJvb2wKK3NhbmR5 YnJpZGdlX2NvbXB1dGVfc3ByaXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFu ZSwKKwkJCSAgICAgIHVpbnQzMl90IHNwcml0ZV93aWR0aCwgaW50IHBpeGVsX3NpemUsCisJCQkg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfd2F0ZXJtYXJrX3BhcmFtcyAqZGlzcGxheSwKKwkJCSAg ICAgIGludCBkaXNwbGF5X2xhdGVuY3lfbnMsIGludCAqc3ByaXRlX3dtKQoreworCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKKwlpbnQgY2xvY2s7CisJaW50IGVudHJpZXMsIHRsYl9taXNzOworCisJ Y3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXYsIHBsYW5lKTsKKwlpZiAoY3J0Yy0+ ZmIgPT0gTlVMTCB8fCAhY3J0Yy0+ZW5hYmxlZCkgeworCQkqc3ByaXRlX3dtID0gZGlzcGxheS0+ Z3VhcmRfc2l6ZTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWNsb2NrID0gY3J0Yy0+bW9kZS5j bG9jazsKKworCS8qIFVzZSB0aGUgc21hbGwgYnVmZmVyIG1ldGhvZCB0byBjYWxjdWxhdGUgdGhl IHNwcml0ZSB3YXRlcm1hcmsgKi8KKwllbnRyaWVzID0gKChjbG9jayAqIHBpeGVsX3NpemUgLyAx MDAwKSAqIGRpc3BsYXlfbGF0ZW5jeV9ucykgLyAxMDAwOworCXRsYl9taXNzID0gZGlzcGxheS0+ Zmlmb19zaXplKmRpc3BsYXktPmNhY2hlbGluZV9zaXplIC0KKwkJc3ByaXRlX3dpZHRoICogODsK KwlpZiAodGxiX21pc3MgPiAwKQorCQllbnRyaWVzICs9IHRsYl9taXNzOworCWVudHJpZXMgPSBE SVZfUk9VTkRfVVAoZW50cmllcywgZGlzcGxheS0+Y2FjaGVsaW5lX3NpemUpOworCSpzcHJpdGVf d20gPSBlbnRyaWVzICsgZGlzcGxheS0+Z3VhcmRfc2l6ZTsKKwlpZiAoKnNwcml0ZV93bSA+IChp bnQpZGlzcGxheS0+bWF4X3dtKQorCQkqc3ByaXRlX3dtID0gZGlzcGxheS0+bWF4X3dtOworCisJ cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCitzYW5keWJyaWRnZV9jb21wdXRlX3Nwcml0 ZV9zcndtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSwKKwkJCQl1aW50MzJfdCBz cHJpdGVfd2lkdGgsIGludCBwaXhlbF9zaXplLAorCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF93YXRl cm1hcmtfcGFyYW1zICpkaXNwbGF5LAorCQkJCWludCBsYXRlbmN5X25zLCBpbnQgKnNwcml0ZV93 bSkKK3sKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJdW5zaWduZWQgbG9uZyBsaW5lX3RpbWVf dXM7CisJaW50IGNsb2NrOworCWludCBsaW5lX2NvdW50LCBsaW5lX3NpemU7CisJaW50IHNtYWxs LCBsYXJnZTsKKwlpbnQgZW50cmllczsKKworCWlmICghbGF0ZW5jeV9ucykgeworCQkqc3ByaXRl X3dtID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19m b3JfcGxhbmUoZGV2LCBwbGFuZSk7CisJY2xvY2sgPSBjcnRjLT5tb2RlLmNsb2NrOworCisJbGlu ZV90aW1lX3VzID0gKHNwcml0ZV93aWR0aCAqIDEwMDApIC8gY2xvY2s7CisJbGluZV9jb3VudCA9 IChsYXRlbmN5X25zIC8gbGluZV90aW1lX3VzICsgMTAwMCkgLyAxMDAwOworCWxpbmVfc2l6ZSA9 IHNwcml0ZV93aWR0aCAqIHBpeGVsX3NpemU7CisKKwkvKiBVc2UgdGhlIG1pbmltdW0gb2YgdGhl IHNtYWxsIGFuZCBsYXJnZSBidWZmZXIgbWV0aG9kIGZvciBwcmltYXJ5ICovCisJc21hbGwgPSAo KGNsb2NrICogcGl4ZWxfc2l6ZSAvIDEwMDApICogbGF0ZW5jeV9ucykgLyAxMDAwOworCWxhcmdl ID0gbGluZV9jb3VudCAqIGxpbmVfc2l6ZTsKKworCWVudHJpZXMgPSBESVZfUk9VTkRfVVAobWlu KHNtYWxsLCBsYXJnZSksIGRpc3BsYXktPmNhY2hlbGluZV9zaXplKTsKKwkqc3ByaXRlX3dtID0g ZW50cmllcyArIGRpc3BsYXktPmd1YXJkX3NpemU7CisKKwlyZXR1cm4gKnNwcml0ZV93bSA+IDB4 M2ZmID8gZmFsc2UgOiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzYW5keWJyaWRnZV91cGRhdGVf c3ByaXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlLAorCQkJCQkgdWludDMy X3Qgc3ByaXRlX3dpZHRoLCBpbnQgcGl4ZWxfc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBsYXRlbmN5ID0gU05CX1JF QURfV00wX0xBVEVOQ1koKSAqIDEwMDsJLyogSW4gdW5pdCAwLjF1cyAqLworCWludCBzcHJpdGVf d20sIHJlZzsKKwlpbnQgcmV0OworCisJc3dpdGNoIChwaXBlKSB7CisJY2FzZSAwOgorCQlyZWcg PSBXTTBfUElQRUFfSUxLOworCQlicmVhazsKKwljYXNlIDE6CisJCXJlZyA9IFdNMF9QSVBFQl9J TEs7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJcmVnID0gV00wX1BJUEVDX0lWQjsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0dXJuOyAvKiBiYWQgcGlwZSAqLworCX0KKworCXJldCA9IHNhbmR5 YnJpZGdlX2NvbXB1dGVfc3ByaXRlX3dtKGRldiwgcGlwZSwgc3ByaXRlX3dpZHRoLCBwaXhlbF9z aXplLAorCQkJCQkgICAgJnNhbmR5YnJpZGdlX2Rpc3BsYXlfd21faW5mbywKKwkJCQkJICAgIGxh dGVuY3ksICZzcHJpdGVfd20pOworCWlmICghcmV0KSB7CisJCURSTV9ERUJVR19LTVMoImZhaWxl ZCB0byBjb21wdXRlIHNwcml0ZSB3bSBmb3IgcGlwZSAlZFxuIiwKKwkJCSAgICAgIHBpcGUpOwor CQlyZXR1cm47CisJfQorCisJSTkxNV9XUklURShyZWcsIEk5MTVfUkVBRChyZWcpIHwgKHNwcml0 ZV93bSA8PCBXTTBfUElQRV9TUFJJVEVfU0hJRlQpKTsKKwlEUk1fREVCVUdfS01TKCJzcHJpdGUg d2F0ZXJtYXJrcyBGb3IgcGlwZSAlZCAtICVkXG4iLCBwaXBlLCBzcHJpdGVfd20pOworCisKKwly ZXQgPSBzYW5keWJyaWRnZV9jb21wdXRlX3Nwcml0ZV9zcndtKGRldiwgcGlwZSwgc3ByaXRlX3dp ZHRoLAorCQkJCQkgICAgICBwaXhlbF9zaXplLAorCQkJCQkgICAgICAmc2FuZHlicmlkZ2VfZGlz cGxheV9zcndtX2luZm8sCisJCQkJCSAgICAgIFNOQl9SRUFEX1dNMV9MQVRFTkNZKCkgKiA1MDAs CisJCQkJCSAgICAgICZzcHJpdGVfd20pOworCWlmICghcmV0KSB7CisJCURSTV9ERUJVR19LTVMo ImZhaWxlZCB0byBjb21wdXRlIHNwcml0ZSBscDEgd20gb24gcGlwZSAlZFxuIiwKKwkJCSAgICAg IHBpcGUpOworCQlyZXR1cm47CisJfQorCUk5MTVfV1JJVEUoV00xU19MUF9JTEssIHNwcml0ZV93 bSk7CisKKwkvKiBPbmx5IElWQiBoYXMgdHdvIG1vcmUgTFAgd2F0ZXJtYXJrcyBmb3Igc3ByaXRl ICovCisJaWYgKCFJU19JVllCUklER0UoZGV2KSkKKwkJcmV0dXJuOworCisJcmV0ID0gc2FuZHli cmlkZ2VfY29tcHV0ZV9zcHJpdGVfc3J3bShkZXYsIHBpcGUsIHNwcml0ZV93aWR0aCwKKwkJCQkJ ICAgICAgcGl4ZWxfc2l6ZSwKKwkJCQkJICAgICAgJnNhbmR5YnJpZGdlX2Rpc3BsYXlfc3J3bV9p bmZvLAorCQkJCQkgICAgICBTTkJfUkVBRF9XTTJfTEFURU5DWSgpICogNTAwLAorCQkJCQkgICAg ICAmc3ByaXRlX3dtKTsKKwlpZiAoIXJldCkgeworCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8g Y29tcHV0ZSBzcHJpdGUgbHAyIHdtIG9uIHBpcGUgJWRcbiIsCisJCQkgICAgICBwaXBlKTsKKwkJ cmV0dXJuOworCX0KKwlJOTE1X1dSSVRFKFdNMlNfTFBfSVZCLCBzcHJpdGVfd20pOworCisJcmV0 ID0gc2FuZHlicmlkZ2VfY29tcHV0ZV9zcHJpdGVfc3J3bShkZXYsIHBpcGUsIHNwcml0ZV93aWR0 aCwKKwkJCQkJICAgICAgcGl4ZWxfc2l6ZSwKKwkJCQkJICAgICAgJnNhbmR5YnJpZGdlX2Rpc3Bs YXlfc3J3bV9pbmZvLAorCQkJCQkgICAgICBTTkJfUkVBRF9XTTNfTEFURU5DWSgpICogNTAwLAor CQkJCQkgICAgICAmc3ByaXRlX3dtKTsKKwlpZiAoIXJldCkgeworCQlEUk1fREVCVUdfS01TKCJm YWlsZWQgdG8gY29tcHV0ZSBzcHJpdGUgbHAzIHdtIG9uIHBpcGUgJWRcbiIsCisJCQkgICAgICBw aXBlKTsKKwkJcmV0dXJuOworCX0KKwlJOTE1X1dSSVRFKFdNM1NfTFBfSVZCLCBzcHJpdGVfd20p OworfQorCiAvKioKICAqIGludGVsX3VwZGF0ZV93YXRlcm1hcmtzIC0gdXBkYXRlIEZJRk8gd2F0 ZXJtYXJrIHZhbHVlcyBiYXNlZCBvbiBjdXJyZW50IG1vZGVzCiAgKgpAQCAtNDY1OCw2ICs0ODAw LDE2IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV93YXRlcm1hcmtzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bShkZXYpOwogfQogCit2b2lk IGludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgcGlwZSwKKwkJCQkgICAgdWludDMyX3Qgc3ByaXRlX3dpZHRoLCBpbnQgcGl4ZWxfc2l6ZSkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCisJaWYgKGRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9zcHJpdGVfd20pCisJCWRldl9wcml2 LT5kaXNwbGF5LnVwZGF0ZV9zcHJpdGVfd20oZGV2LCBwaXBlLCBzcHJpdGVfd2lkdGgsCisJCQkJ CQkgICBwaXhlbF9zaXplKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGludGVsX3BhbmVsX3Vz ZV9zc2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWlmIChpOTE1X3Bh bmVsX3VzZV9zc2MgPj0gMCkKQEAgLTg1MDAsNiArODY1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQl9IGVsc2UgaWYgKElTX0dF TjYoZGV2KSkgewogCQkJaWYgKFNOQl9SRUFEX1dNMF9MQVRFTkNZKCkpIHsKIAkJCQlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfd20gPSBzYW5keWJyaWRnZV91cGRhdGVfd207CisJCQkJZGV2X3By aXYtPmRpc3BsYXkudXBkYXRlX3Nwcml0ZV93bSA9IHNhbmR5YnJpZGdlX3VwZGF0ZV9zcHJpdGVf d207CiAJCQl9IGVsc2UgewogCQkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIGRpc3Bs YXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCQkgICAgICAiRGlzYWJsZSBDeFNSXG4iKTsKQEAgLTg1 MTMsNiArODY2Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCQkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBpdmJf bWFudWFsX2ZkaV9saW5rX3RyYWluOwogCQkJaWYgKFNOQl9SRUFEX1dNMF9MQVRFTkNZKCkpIHsK IAkJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBzYW5keWJyaWRnZV91cGRhdGVfd207 CisJCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3Nwcml0ZV93bSA9IHNhbmR5YnJpZGdlX3Vw ZGF0ZV9zcHJpdGVfd207CiAJCQl9IGVsc2UgewogCQkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0 byByZWFkIGRpc3BsYXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCQkgICAgICAiRGlzYWJsZSBDeFNS XG4iKTsKQEAgLTg2OTYsNyArODg1MCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZGlzYWJsZV92Z2Eo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKLQlpbnQgaTsKKwlpbnQgaSwgcmV0OwogCiAJZHJtX21vZGVfY29u ZmlnX2luaXQoZGV2KTsKIApAQCAtODcyNiw2ICs4ODgwLDEyIEBAIHZvaWQgaW50ZWxfbW9kZXNl dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPm51bV9waXBlOyBpKyspIHsKIAkJaW50ZWxfY3J0Y19pbml0KGRldiwgaSk7CisJCWlmIChI QVNfUENIX1NQTElUKGRldikpIHsKKwkJCXJldCA9IGludGVsX3BsYW5lX2luaXQoZGV2LCBpKTsK KwkJCWlmIChyZXQpCisJCQkJRFJNX0VSUk9SKCJwbGFuZSAlZCBpbml0IGZhaWxlZDogJWRcbiIs CisJCQkJCSAgaSwgcmV0KTsKKwkJfQogCX0KIAogCS8qIEp1c3QgZGlzYWJsZSBpdCBvbmNlIGF0 IHN0YXJ0dXAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMjNjNTYyMi4uMDg5Y2Rk ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE3NiwxMCArMTc2LDI3IEBAIHN0cnVj dCBpbnRlbF9jcnRjIHsKIAlib29sIHVzZV9wbGxfYTsKIH07CiAKK3N0cnVjdCBpbnRlbF9wbGFu ZSB7CisJc3RydWN0IGRybV9wbGFuZSBiYXNlOworCWVudW0gcGlwZSBwaXBlOworCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IG1heF9kb3duc2NhbGU7CisJdTMyIGx1dF9y WzEwMjRdLCBsdXRfZ1sxMDI0XSwgbHV0X2JbMTAyNF07CisJdm9pZCAoKnVwZGF0ZV9wbGFuZSko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLAorCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICAgICBp bnQgY3J0Y194LCBpbnQgY3J0Y195LAorCQkJICAgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNp Z25lZCBpbnQgY3J0Y19oLAorCQkJICAgICB1aW50MzJfdCB4LCB1aW50MzJfdCB5LAorCQkJICAg ICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpOworCXZvaWQgKCpkaXNhYmxlX3BsYW5l KShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cit9OworCiAjZGVmaW5lIHRvX2ludGVsX2NydGMo eCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjLCBiYXNlKQogI2RlZmluZSB0b19p bnRlbF9jb25uZWN0b3IoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Is IGJhc2UpCiAjZGVmaW5lIHRvX2ludGVsX2VuY29kZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVj dCBpbnRlbF9lbmNvZGVyLCBiYXNlKQogI2RlZmluZSB0b19pbnRlbF9mcmFtZWJ1ZmZlcih4KSBj b250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyLCBiYXNlKQorI2RlZmluZSB0 b19pbnRlbF9wbGFuZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX3BsYW5lLCBiYXNl KQogCiAjZGVmaW5lIERJUF9IRUFERVJfU0laRQk1CiAKQEAgLTI4OSw2ICszMDYsNyBAQCBpbnRl bF9kcF9zZXRfbV9uKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCiBleHRlcm4gYm9vbCBpbnRlbF9kcGRfaXNfZWRwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZWRwX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICosIGludCAqLCBpbnQgKik7CiBleHRlcm4gYm9vbCBpbnRlbF9lbmNvZGVyX2lzX3Bj aF9lZHAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKK2V4dGVybiBpbnQgaW50ZWxfcGxh bmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSk7CiAKIC8qIGlu dGVsX3BhbmVsLmMgKi8KIGV4dGVybiB2b2lkIGludGVsX2ZpeGVkX3BhbmVsX21vZGUoc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUsCkBAIC0zNzksOSArMzk3LDE5IEBAIGV4dGVy biBpbnQgaW50ZWxfb3ZlcmxheV9hdHRycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogZXh0ZXJuIHZvaWQgaW50ZWxfZmJfb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX2ZiX3Jlc3RvcmVfbW9kZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIAorZXh0ZXJuIHZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKKwkJCWJvb2wgc3RhdGUpOwor I2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIHApIGFzc2VydF9waXBlKGQsIHAsIHRydWUp CisjZGVmaW5lIGFzc2VydF9waXBlX2Rpc2FibGVkKGQsIHApIGFzc2VydF9waXBlKGQsIHAsIGZh bHNlKQorCiBleHRlcm4gdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX3dyaXRlX2VsZChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCiAJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpOwogZXh0 ZXJuIHZvaWQgaW50ZWxfY3B0X3ZlcmlmeV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBwaXBlKTsKIAorLyogRm9yIHVzZSBieSBJVkIgTFAgd2F0ZXJtYXJrIHdvcmthcm91bmQg aW4gaW50ZWxfc3ByaXRlLmMgKi8KK2V4dGVybiB2b2lkIHNhbmR5YnJpZGdlX3VwZGF0ZV93bShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGludGVsX3VwZGF0ZV9zcHJpdGVf d2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSwKKwkJCQkJICAgdWlu dDMyX3Qgc3ByaXRlX3dpZHRoLAorCQkJCQkgICBpbnQgcGl4ZWxfc2l6ZSk7CiAjZW5kaWYgLyog X19JTlRFTF9EUlZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYwppbmRleCBkYzFkYjRmLi4w NjhiMDg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiLmMKQEAgLTI3MCw4ICsyNzAsMTQgQEAgdm9p ZCBpbnRlbF9mYl9yZXN0b3JlX21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlpbnQg cmV0OwogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOworCXN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCiAJcmV0ID0gZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2Zi ZGV2X21vZGUoJmRldl9wcml2LT5mYmRldi0+aGVscGVyKTsKIAlpZiAocmV0KQogCQlEUk1fREVC VUcoImZhaWxlZCB0byByZXN0b3JlIGNydGMgbW9kZVxuIik7CisKKwkvKiBCZSBzdXJlIHRvIHNo dXQgb2ZmIGFueSBwbGFuZXMgdGhhdCBtYXkgYmUgYWN0aXZlICovCisJbGlzdF9mb3JfZWFjaF9l bnRyeShwbGFuZSwgJmNvbmZpZy0+cGxhbmVfbGlzdCwgaGVhZCkKKwkJcGxhbmUtPmZ1bmNzLT5k aXNhYmxlX3BsYW5lKHBsYW5lKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjYWZiZQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0wLDAgKzEsNDUwIEBA CisvKgorICogQ29weXJpZ2h0IMKpIDIwMTEgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoK KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBT SEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAg SmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+CisgKgorICogTmV3IHBsYW5l L3Nwcml0ZSBoYW5kbGluZy4KKyAqCisgKiBUaGUgb2xkZXIgY2hpcHMgaGFkIGEgc2VwYXJhdGUg aW50ZXJmYWNlIGZvciBwcm9ncmFtbWluZyBwbGFuZSByZWxhdGVkCisgKiByZWdpc3RlcnM7IG5l d2VyIG9uZXMgYXJlIG11Y2ggc2ltcGxlciBhbmQgd2UgY2FuIHVzZSB0aGUgbmV3IERSTSBwbGFu ZQorICogc3VwcG9ydC4KKyAqLworI2luY2x1ZGUgImRybVAuaCIKKyNpbmNsdWRlICJkcm1fY3J0 Yy5oIgorI2luY2x1ZGUgImRybV9mb3VyY2MuaCIKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNp bmNsdWRlICJpOTE1X2RybS5oIgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKK3N0YXRpYyB2b2lk CitpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKKwkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBj cnRjX3gsIGludCBjcnRjX3ksCisJCSB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQg Y3J0Y19oLAorCQkgdWludDMyX3QgeCwgdWludDMyX3QgeSwKKwkJIHVpbnQzMl90IHNyY193LCB1 aW50MzJfdCBzcmNfaCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7 CisJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKKwl1MzIgc3ByY3RsLCBzcHJzY2FsZSA9 IDA7CisJaW50IHBpeGVsX3NpemU7CisKKwlzcHJjdGwgPSBJOTE1X1JFQUQoU1BSQ1RMKHBpcGUp KTsKKworCS8qIE1hc2sgb3V0IHBpeGVsIGZvcm1hdCBiaXRzIGluIGNhc2Ugd2UgY2hhbmdlIGl0 ICovCisJc3ByY3RsICY9IH5TUFJJVEVfUElYRk9STUFUX01BU0s7CisJc3ByY3RsICY9IH5TUFJJ VEVfUkdCX09SREVSX1JHQlg7CisJc3ByY3RsICY9IH5TUFJJVEVfWVVWX0JZVEVfT1JERVJfTUFT SzsKKworCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9YQkdS ODg4ODoKKwkJc3ByY3RsIHw9IFNQUklURV9GT1JNQVRfUkdCWDg4ODsKKwkJcGl4ZWxfc2l6ZSA9 IDQ7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJc3ByY3RsIHw9IFNQ UklURV9GT1JNQVRfUkdCWDg4OCB8IFNQUklURV9SR0JfT1JERVJfUkdCWDsKKwkJcGl4ZWxfc2l6 ZSA9IDQ7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCQlzcHJjdGwgfD0gU1BS SVRFX0ZPUk1BVF9ZVVY0MjIgfCBTUFJJVEVfWVVWX09SREVSX1lVWVY7CisJCXBpeGVsX3NpemUg PSAyOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfWVZZVToKKwkJc3ByY3RsIHw9IFNQUklU RV9GT1JNQVRfWVVWNDIyIHwgU1BSSVRFX1lVVl9PUkRFUl9ZVllVOworCQlwaXhlbF9zaXplID0g MjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJCXNwcmN0bCB8PSBTUFJJVEVf Rk9STUFUX1lVVjQyMiB8IFNQUklURV9ZVVZfT1JERVJfVVlWWTsKKwkJcGl4ZWxfc2l6ZSA9IDI7 CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQlzcHJjdGwgfD0gU1BSSVRFX0ZP Uk1BVF9ZVVY0MjIgfCBTUFJJVEVfWVVWX09SREVSX1ZZVVk7CisJCXBpeGVsX3NpemUgPSAyOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUdfRFJJVkVSKCJiYWQgcGl4ZWwgZm9ybWF0 LCBhc3N1bWluZyBSR0JYODg4XG4iKTsKKwkJc3ByY3RsIHw9IERWU19GT1JNQVRfUkdCWDg4ODsK KwkJcGl4ZWxfc2l6ZSA9IDQ7CisJCWJyZWFrOworCX0KKworCWlmIChvYmotPnRpbGluZ19tb2Rl ICE9IEk5MTVfVElMSU5HX05PTkUpCisJCXNwcmN0bCB8PSBTUFJJVEVfVElMRUQ7CisKKwkvKiBt dXN0IGRpc2FibGUgKi8KKwlzcHJjdGwgfD0gU1BSSVRFX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwor CXNwcmN0bCB8PSBTUFJJVEVfRU5BQkxFOworCisJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KKwlz cmNfdy0tOworCXNyY19oLS07CisJY3J0Y193LS07CisJY3J0Y19oLS07CisKKwlpbnRlbF91cGRh dGVfc3ByaXRlX3dhdGVybWFya3MoZGV2LCBwaXBlLCBjcnRjX3csIHBpeGVsX3NpemUpOworCisJ LyoKKwkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxvdyBwb3dlciB3YXRlcm1hcmtz IGZvciBhdCBsZWFzdAorCSAqIG9uZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcgc2NhbGluZy4gIExQ IHdhdGVybWFya3MgY2FuIGJlIHJlLWVuYWJsZWQKKwkgKiB3aGVuIHNjYWxpbmcgaXMgZGlzYWJs ZWQuCisJICovCisJaWYgKGNydGNfdyAhPSBzcmNfdyB8fCBjcnRjX2ggIT0gc3JjX2gpIHsKKwkJ ZGV2X3ByaXYtPnNwcml0ZV9zY2FsaW5nX2VuYWJsZWQgPSB0cnVlOworCQlzYW5keWJyaWRnZV91 cGRhdGVfd20oZGV2KTsKKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgcGlwZSk7CisJCXNw cnNjYWxlID0gU1BSSVRFX1NDQUxFX0VOQUJMRSB8IChzcmNfdyA8PCAxNikgfCBzcmNfaDsKKwl9 IGVsc2UgeworCQlkZXZfcHJpdi0+c3ByaXRlX3NjYWxpbmdfZW5hYmxlZCA9IGZhbHNlOworCQkv KiBwb3RlbnRpYWxseSByZS1lbmFibGUgTFAgd2F0ZXJtYXJrcyAqLworCQlzYW5keWJyaWRnZV91 cGRhdGVfd20oZGV2KTsKKwl9CisKKwlJOTE1X1dSSVRFKFNQUlNUUklERShwaXBlKSwgZmItPnBp dGNoKTsKKwlJOTE1X1dSSVRFKFNQUlBPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gp OworCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpIHsKKwkJSTkxNV9X UklURShTUFJUSUxFT0ZGKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKKwl9IGVsc2UgeworCQl1bnNp Z25lZCBsb25nIG9mZnNldDsKKworCQlvZmZzZXQgPSB5ICogZmItPnBpdGNoICsgeCAqIChmYi0+ Yml0c19wZXJfcGl4ZWwgLyA4KTsKKwkJSTkxNV9XUklURShTUFJMSU5PRkYocGlwZSksIG9mZnNl dCk7CisJfQorCUk5MTVfV1JJVEUoU1BSU0laRShwaXBlKSwgKGNydGNfaCA8PCAxNikgfCBjcnRj X3cpOworCUk5MTVfV1JJVEUoU1BSU0NBTEUocGlwZSksIHNwcnNjYWxlKTsKKwlJOTE1X1dSSVRF KFNQUkNUTChwaXBlKSwgc3ByY3RsKTsKKwlJOTE1X1dSSVRFKFNQUlNVUkYocGlwZSksIG9iai0+ Z3R0X29mZnNldCk7CisJUE9TVElOR19SRUFEKFNQUlNVUkYocGlwZSkpOworfQorCitzdGF0aWMg dm9pZAoraXZiX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOworCWludCBwaXBlID0gaW50ZWxfcGxh bmUtPnBpcGU7CisKKwlJOTE1X1dSSVRFKFNQUkNUTChwaXBlKSwgSTkxNV9SRUFEKFNQUkNUTChw aXBlKSkgJiB+U1BSSVRFX0VOQUJMRSk7CisJLyogQ2FuJ3QgbGVhdmUgdGhlIHNjYWxlciBlbmFi bGVkLi4uICovCisJSTkxNV9XUklURShTUFJTQ0FMRShwaXBlKSwgMCk7CisJLyogQWN0aXZhdGUg ZG91YmxlIGJ1ZmZlcmVkIHJlZ2lzdGVyIHVwZGF0ZSAqLworCUk5MTVfV1JJVEUoU1BSU1VSRihw aXBlKSwgMCk7CisJUE9TVElOR19SRUFEKFNQUlNVUkYocGlwZSkpOworfQorCitzdGF0aWMgdm9p ZAorc25iX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCisJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQg Y3J0Y194LCBpbnQgY3J0Y195LAorCQkgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50 IGNydGNfaCwKKwkJIHVpbnQzMl90IHgsIHVpbnQzMl90IHksCisJCSB1aW50MzJfdCBzcmNfdywg dWludDMyX3Qgc3JjX2gpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUp OworCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGUsIHBpeGVsX3NpemU7CisJdTMyIGR2c2Nu dHIsIGR2c3NjYWxlID0gMDsKKworCWR2c2NudHIgPSBJOTE1X1JFQUQoRFZTQ05UUihwaXBlKSk7 CisKKwkvKiBNYXNrIG91dCBwaXhlbCBmb3JtYXQgYml0cyBpbiBjYXNlIHdlIGNoYW5nZSBpdCAq LworCWR2c2NudHIgJj0gfkRWU19QSVhGT1JNQVRfTUFTSzsKKwlkdnNjbnRyICY9IH5EVlNfUkdC X09SREVSX1JHQlg7CisJZHZzY250ciAmPSB+RFZTX1lVVl9CWVRFX09SREVSX01BU0s7CisKKwlz d2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CisJ CWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9SR0JYODg4OworCQlwaXhlbF9zaXplID0gNDsKKwkJYnJl YWs7CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCQlkdnNjbnRyIHw9IERWU19GT1JNQVRf UkdCWDg4OCB8IERWU19SR0JfT1JERVJfUkdCWDsKKwkJcGl4ZWxfc2l6ZSA9IDQ7CisJCWJyZWFr OworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCQlkdnNjbnRyIHw9IERWU19GT1JNQVRfWVVWNDIy IHwgRFZTX1lVVl9PUkRFUl9ZVVlWOworCQlwaXhlbF9zaXplID0gMjsKKwkJYnJlYWs7CisJY2Fz ZSBEUk1fRk9STUFUX1lWWVU6CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9ZVVY0MjIgfCBEVlNf WVVWX09SREVSX1lWWVU7CisJCXBpeGVsX3NpemUgPSAyOworCQlicmVhazsKKwljYXNlIERSTV9G T1JNQVRfVVlWWToKKwkJZHZzY250ciB8PSBEVlNfRk9STUFUX1lVVjQyMiB8IERWU19ZVVZfT1JE RVJfVVlWWTsKKwkJcGl4ZWxfc2l6ZSA9IDI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9W WVVZOgorCQlkdnNjbnRyIHw9IERWU19GT1JNQVRfWVVWNDIyIHwgRFZTX1lVVl9PUkRFUl9WWVVZ OworCQlwaXhlbF9zaXplID0gMjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0RFQlVHX0RS SVZFUigiYmFkIHBpeGVsIGZvcm1hdCwgYXNzdW1pbmcgUkdCWDg4OFxuIik7CisJCWR2c2NudHIg fD0gRFZTX0ZPUk1BVF9SR0JYODg4OworCQlwaXhlbF9zaXplID0gNDsKKwkJYnJlYWs7CisJfQor CisJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKKwkJZHZzY250ciB8 PSBEVlNfVElMRUQ7CisKKwkvKiBtdXN0IGRpc2FibGUgKi8KKwlkdnNjbnRyIHw9IERWU19UUklD S0xFX0ZFRURfRElTQUJMRTsKKwlkdnNjbnRyIHw9IERWU19FTkFCTEU7CisKKwkvKiBTaXplcyBh cmUgMCBiYXNlZCAqLworCXNyY193LS07CisJc3JjX2gtLTsKKwljcnRjX3ctLTsKKwljcnRjX2gt LTsKKworCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkZXYsIHBpcGUsIGNydGNfdywg cGl4ZWxfc2l6ZSk7CisKKwlpZiAoY3J0Y193ICE9IHNyY193IHx8IGNydGNfaCAhPSBzcmNfaCkK KwkJZHZzc2NhbGUgPSBEVlNfU0NBTEVfRU5BQkxFIHwgKHNyY193IDw8IDE2KSB8IHNyY19oOwor CisJSTkxNV9XUklURShEVlNTVFJJREUocGlwZSksIGZiLT5waXRjaCk7CisJSTkxNV9XUklURShE VlNQT1MocGlwZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKKwlpZiAob2JqLT50aWxpbmdf bW9kZSAhPSBJOTE1X1RJTElOR19OT05FKSB7CisJCUk5MTVfV1JJVEUoRFZTVElMRU9GRihwaXBl KSwgKHkgPDwgMTYpIHwgeCk7CisJfSBlbHNlIHsKKwkJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CisK KwkJb2Zmc2V0ID0geSAqIGZiLT5waXRjaCArIHggKiAoZmItPmJpdHNfcGVyX3BpeGVsIC8gOCk7 CisJCUk5MTVfV1JJVEUoRFZTTElOT0ZGKHBpcGUpLCBvZmZzZXQpOworCX0KKwlJOTE1X1dSSVRF KERWU1NJWkUocGlwZSksIChjcnRjX2ggPDwgMTYpIHwgY3J0Y193KTsKKwlJOTE1X1dSSVRFKERW U1NDQUxFKHBpcGUpLCBkdnNzY2FsZSk7CisJSTkxNV9XUklURShEVlNDTlRSKHBpcGUpLCBkdnNj bnRyKTsKKwlJOTE1X1dSSVRFKERWU1NVUkYocGlwZSksIG9iai0+Z3R0X29mZnNldCk7CisJUE9T VElOR19SRUFEKERWU1NVUkYocGlwZSkpOworfQorCitzdGF0aWMgdm9pZAorc25iX2Rpc2FibGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHBsYW5lLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOworCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CisKKwlJOTE1 X1dSSVRFKERWU0NOVFIocGlwZSksIEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKSAmIH5EVlNfRU5B QkxFKTsKKwkvKiBEaXNhYmxlIHRoZSBzY2FsZXIgKi8KKwlJOTE1X1dSSVRFKERWU1NDQUxFKHBp cGUpLCAwKTsKKwkvKiBGbHVzaCBkb3VibGUgYnVmZmVyZWQgcmVnaXN0ZXIgdXBkYXRlcyAqLwor CUk5MTVfV1JJVEUoRFZTU1VSRihwaXBlKSwgMCk7CisJUE9TVElOR19SRUFEKERWU1NVUkYocGlw ZSkpOworfQorCitzdGF0aWMgaW50CitpbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJICAgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCBjcnRjX3gsIGludCBjcnRjX3ksCisJCSAgIHVuc2lnbmVkIGludCBjcnRj X3csIHVuc2lnbmVkIGludCBjcnRjX2gsCisJCSAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBz cmNfeSwKKwkJICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICpp bnRlbF9mYjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqb2xkX29iajsKKwlp bnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOworCWludCByZXQgPSAwOworCWludCB4ID0gc3Jj X3ggPj4gMTYsIHkgPSBzcmNfeSA+PiAxNjsKKwlpbnQgcHJpbWFyeV93ID0gY3J0Yy0+bW9kZS5o ZGlzcGxheSwgcHJpbWFyeV9oID0gY3J0Yy0+bW9kZS52ZGlzcGxheTsKKwlib29sIGRpc2FibGVf cHJpbWFyeSA9IGZhbHNlOworCisJaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7 CisJb2JqID0gaW50ZWxfZmItPm9iajsKKworCW9sZF9vYmogPSBpbnRlbF9wbGFuZS0+b2JqOwor CisJLyogUGlwZSBtdXN0IGJlIHJ1bm5pbmcuLi4gKi8KKwlpZiAoIShJOTE1X1JFQUQoUElQRUNP TkYocGlwZSkpICYgUElQRUNPTkZfRU5BQkxFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo Y3J0Y194ID49IHByaW1hcnlfdyB8fCBjcnRjX3kgPj0gcHJpbWFyeV9oKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCS8qIERvbid0IG1vZGlmeSBhbm90aGVyIHBpcGUncyBwbGFuZSAqLworCWlmIChp bnRlbF9wbGFuZS0+cGlwZSAhPSBpbnRlbF9jcnRjLT5waXBlKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qCisJICogQ2xhbXAgdGhlIHdpZHRoICYgaGVpZ2h0IGludG8gdGhlIHZpc2libGUgYXJl YS4gIE5vdGUgd2UgZG9uJ3QKKwkgKiB0cnkgdG8gc2NhbGUgdGhlIHNvdXJjZSBpZiBwYXJ0IG9m IHRoZSB2aXNpYmxlIHJlZ2lvbiBpcyBvZmZzY3JlZW4uCisJICogVGhlIGNhbGxlciBtdXN0IGhh bmRsZSB0aGF0IGJ5IGFkanVzdGluZyBzb3VyY2Ugb2Zmc2V0IGFuZCBzaXplLgorCSAqLworCWlm ICgoY3J0Y194IDwgMCkgJiYgKChjcnRjX3ggKyBjcnRjX3cpID4gMCkpIHsKKwkJY3J0Y193ICs9 IGNydGNfeDsKKwkJY3J0Y194ID0gMDsKKwl9CisJaWYgKChjcnRjX3ggKyBjcnRjX3cpIDw9IDAp IC8qIE5vdGhpbmcgdG8gZGlzcGxheSAqLworCQlnb3RvIG91dDsKKwlpZiAoKGNydGNfeCArIGNy dGNfdykgPiBwcmltYXJ5X3cpCisJCWNydGNfdyA9IHByaW1hcnlfdyAtIGNydGNfeDsKKworCWlm ICgoY3J0Y195IDwgMCkgJiYgKChjcnRjX3kgKyBjcnRjX2gpID4gMCkpIHsKKwkJY3J0Y19oICs9 IGNydGNfeTsKKwkJY3J0Y195ID0gMDsKKwl9CisJaWYgKChjcnRjX3kgKyBjcnRjX2gpIDw9IDAp IC8qIE5vdGhpbmcgdG8gZGlzcGxheSAqLworCQlnb3RvIG91dDsKKwlpZiAoY3J0Y195ICsgY3J0 Y19oID4gcHJpbWFyeV9oKQorCQljcnRjX2ggPSBwcmltYXJ5X2ggLSBjcnRjX3k7CisKKwlpZiAo IWNydGNfdyB8fCAhY3J0Y19oKSAvKiBBZ2Fpbiwgbm90aGluZyB0byBkaXNwbGF5ICovCisJCWdv dG8gb3V0OworCisJLyoKKwkgKiBXZSBjYW4gdGFrZSBhIGxhcmdlciBzb3VyY2UgYW5kIHNjYWxl IGl0IGRvd24sIGJ1dAorCSAqIG9ubHkgc28gbXVjaC4uLiAgMTZ4IGlzIHRoZSBtYXggb24gU05C LgorCSAqLworCWlmICgoKHNyY193ICogc3JjX2gpIC8gKGNydGNfdyAqIGNydGNfaCkpID4gaW50 ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBJ ZiB0aGUgc3ByaXRlIGlzIGNvbXBsZXRlbHkgY292ZXJpbmcgdGhlIHByaW1hcnkgcGxhbmUsCisJ ICogd2UgY2FuIGRpc2FibGUgdGhlIHByaW1hcnkgYW5kIHNhdmUgcG93ZXIuCisJICovCisJaWYg KChjcnRjX3ggPT0gMCkgJiYgKGNydGNfeSA9PSAwKSAmJgorCSAgICAoY3J0Y193ID09IHByaW1h cnlfdykgJiYgKGNydGNfaCA9PSBwcmltYXJ5X2gpKQorCQlkaXNhYmxlX3ByaW1hcnkgPSB0cnVl OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0ID0gaW50ZWxfcGlu X2FuZF9mZW5jZV9mYl9vYmooZGV2LCBvYmosIE5VTEwpOworCWlmIChyZXQpIHsKKwkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gcGluIG9iamVjdFxuIik7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisK KwlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOworCisJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZShw bGFuZSwgZmIsIG9iaiwgY3J0Y194LCBjcnRjX3ksCisJCQkJICBjcnRjX3csIGNydGNfaCwgeCwg eSwgc3JjX3csIHNyY19oKTsKKworCS8qIFVucGluIG9sZCBvYmogYWZ0ZXIgbmV3IG9uZSBpcyBh Y3RpdmUgdG8gYXZvaWQgdWdsaW5lc3MgKi8KKwlpZiAob2xkX29iaikgeworCQkvKgorCQkgKiBJ dCdzIGZhaXJseSBjb21tb24gdG8gc2ltcGx5IHVwZGF0ZSB0aGUgcG9zaXRpb24gb2YKKwkJICog YW4gZXhpc3Rpbmcgb2JqZWN0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvCisJCSAq IHdhaXQgZm9yIHZibGFuayB0byBhdm9pZCB1Z2xpbmVzcywgd2Ugb25seSBuZWVkIHRvCisJCSAq IGRvIHRoZSBwaW4gJiByZWYgYm9va2tlZXBpbmcuCisJCSAqLworCQlpZiAob2xkX29iaiAhPSBv YmopIHsKKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJaW50ZWxfd2Fp dF9mb3JfdmJsYW5rKGRldiwgdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSk7CisJCQltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCX0KKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluKG9s ZF9vYmopOworCX0KKworb3V0X3VubG9jazoKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKK291dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpbnRlbF9kaXNhYmxl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBwbGFuZS0+ZGV2OworCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZSk7CisJaW50IHJldCA9IDA7CisKKwlpbnRlbF9wbGFuZS0+ZGlzYWJs ZV9wbGFuZShwbGFuZSk7CisKKwlpZiAoIWludGVsX3BsYW5lLT5vYmopCisJCWdvdG8gb3V0Owor CisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX29iamVjdF91bnBp bihpbnRlbF9wbGFuZS0+b2JqKTsKKwlpbnRlbF9wbGFuZS0+b2JqID0gTlVMTDsKKwltdXRleF91 bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKK291dDoKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyB2b2lkIGludGVsX2Rlc3Ryb3lfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7 CisJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l KTsKKwlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lKTsKKwlkcm1fcGxhbmVfY2xlYW51cChwbGFu ZSk7CisJa2ZyZWUoaW50ZWxfcGxhbmUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w bGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKKwkudXBkYXRlX3BsYW5lID0gaW50ZWxf dXBkYXRlX3BsYW5lLAorCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wbGFuZSwKKwku ZGVzdHJveSA9IGludGVsX2Rlc3Ryb3lfcGxhbmUsCit9OworCitzdGF0aWMgdWludDMyX3Qgc25i X3BsYW5lX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX1hCR1I4ODg4LAorCURSTV9GT1JNQVRf WFJHQjg4ODgsCisJRFJNX0ZPUk1BVF9ZVVlWLAorCURSTV9GT1JNQVRfWVZZVSwKKwlEUk1fRk9S TUFUX1VZVlksCisJRFJNX0ZPUk1BVF9WWVVZLAorfTsKKworaW50CitpbnRlbF9wbGFuZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQoreworCXN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmU7CisJdW5zaWduZWQgbG9uZyBwb3NzaWJsZV9jcnRjczsKKwlp bnQgcmV0OworCisJaWYgKCEoSVNfR0VONihkZXYpIHx8IElTX0dFTjcoZGV2KSkpIHsKKwkJRFJN X0VSUk9SKCJuZXcgcGxhbmUgY29kZSBvbmx5IGZvciBTTkIrXG4iKTsKKwkJcmV0dXJuIC1FTk9E RVY7CisJfQorCisJaW50ZWxfcGxhbmUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaW50ZWxfcGxh bmUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWludGVsX3BsYW5lKQorCQlyZXR1cm4gLUVOT01FTTsK KworCWlmIChJU19HRU42KGRldikpIHsKKwkJaW50ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUgPSAx NjsKKwkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IHNuYl91cGRhdGVfcGxhbmU7CisJCWlu dGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0gc25iX2Rpc2FibGVfcGxhbmU7CisJfSBlbHNlIGlm IChJU19HRU43KGRldikpIHsKKwkJaW50ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUgPSAyOworCQlp bnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lID0gaXZiX3VwZGF0ZV9wbGFuZTsKKwkJaW50ZWxfcGxh bmUtPmRpc2FibGVfcGxhbmUgPSBpdmJfZGlzYWJsZV9wbGFuZTsKKwl9CisKKwlpbnRlbF9wbGFu ZS0+cGlwZSA9IHBpcGU7CisJcG9zc2libGVfY3J0Y3MgPSAoMSA8PCBwaXBlKTsKKwlyZXQgPSBk cm1fcGxhbmVfaW5pdChkZXYsICZpbnRlbF9wbGFuZS0+YmFzZSwgcG9zc2libGVfY3J0Y3MsCisJ CQkgICAgICZpbnRlbF9wbGFuZV9mdW5jcywgc25iX3BsYW5lX2Zvcm1hdHMsCisJCQkgICAgIEFS UkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1hdHMpKTsKKwlpZiAocmV0KQorCQlrZnJlZShpbnRlbF9w bGFuZSk7CisKKwlyZXR1cm4gcmV0OworfQorCi0tIAoxLjcuNC4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=