From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: [PATCH] drm/i915: add SNB video sprite support Date: Tue, 25 Oct 2011 13:22:06 +0200 Message-ID: <20111025132206.021db014@jbarnes-x220> References: <1319536026-2877-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 oproxy4-pub.bluehost.com (oproxy4-pub.bluehost.com [69.89.21.11]) by gabe.freedesktop.org (Postfix) with SMTP id 379E49F0EF for ; Tue, 25 Oct 2011 04:22:12 -0700 (PDT) In-Reply-To: <1319536026-2877-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 Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIHZpZGVvIHNwcml0ZXMgc3VwcG9ydCB2YXJpb3VzIHZpZGVvIHN1cmZhY2UgZm9ybWF0cyBu YXRpdmVseSBhbmQgY2FuCmhhbmRsZSBzY2FsaW5nIGFzIHdlbGwuICBTbyBhZGQgc3VwcG9ydCBm b3IgdGhlbSB1c2luZyB0aGUgbmV3IERSTSBjb3JlCm92ZXJsYXkgc3VwcG9ydCBmdW5jdGlvbnMu Cgp2MjogY29sbGFwc2UgcGF0Y2hlcyBhbmQgZml4IHBsYW5lIGRpc2FibGUgdnMgdW5waW4gb3Jk ZXJpbmcgYnVnCgpTaWduZWQtb2ZmLWJ5OiBKZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNn ZWVrLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgIHwgICAg MSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgIHwgIDExNiArKysrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgICAyNiArKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgfCAgIDE0ICsrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYi5jICAgICAgIHwgICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5Mi5jIHwgIDM5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDYgZmlsZXMgY2hhbmdlZCwgNTQ3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheTIuYwoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMGFlNmE3Yy4uNjE5MzQ3MSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKQEAgLTI4LDYgKzI4LDcgQEAgaTkxNS15IDo9IGk5MTVfZHJ2Lm8gaTkxNV9kbWEubyBp OTE1X2lycS5vIGk5MTVfbWVtLm8gXAogCSAgaW50ZWxfZHZvLm8gXAogCSAgaW50ZWxfcmluZ2J1 ZmZlci5vIFwKIAkgIGludGVsX292ZXJsYXkubyBcCisJICBpbnRlbF9vdmVybGF5Mi5vIFwKIAkg IGludGVsX29wcmVnaW9uLm8gXAogCSAgZHZvX2NoN3h4eC5vIFwKIAkgIGR2b19jaDcwMTcubyBc CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA1YTA5NDE2Li44Y2JkYTBiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKQEAgLTI2NjYsNiArMjY2NiwxMjIgQEAKICNkZWZpbmUgX0RTUEJTVVJG CQkweDcxMTlDCiAjZGVmaW5lIF9EU1BCVElMRU9GRgkJMHg3MTFBNAogCisvKiBTcHJpdGUgQSBj b250cm9sICovCisjZGVmaW5lIF9EVlNBQ05UUgkJMHg3MjE4MAorI2RlZmluZSAgIERWU19FTkFC TEUJCSgxPDwzMSkKKyNkZWZpbmUgICBEVlNfR0FNTUFfRU5BQkxFCSgxPDwzMCkKKyNkZWZpbmUg ICBEVlNfUElYRk9STUFUX01BU0sJKDM8PDI1KQorI2RlZmluZSAgIERWU19GT1JNQVRfWVVWNDIy CSgwPDwyNSkKKyNkZWZpbmUgICBEVlNfRk9STUFUX1JHQlgxMDEwMTAJKDE8PDI1KQorI2RlZmlu ZSAgIERWU19GT1JNQVRfUkdCWDg4OAkoMjw8MjUpCisjZGVmaW5lICAgRFZTX0ZPUk1BVF9SR0JY MTYxNjE2CSgzPDwyNSkKKyNkZWZpbmUgICBEVlNfU09VUkNFX0tFWQkoMTw8MjIpCisjZGVmaW5l ICAgRFZTX1JHQl9PUkRFUl9SR0JYCSgxPDwyMCkKKyNkZWZpbmUgICBEVlNfWVVWX0JZVEVfT1JE RVJfTUFTSyAoMzw8MTYpCisjZGVmaW5lICAgRFZTX1lVVl9PUkRFUl9ZVVlWCSgwPDwxNikKKyNk ZWZpbmUgICBEVlNfWVVWX09SREVSX1VZVlkJKDE8PDE2KQorI2RlZmluZSAgIERWU19ZVVZfT1JE RVJfWVZZVQkoMjw8MTYpCisjZGVmaW5lICAgRFZTX1lVVl9PUkRFUl9WWVVZCSgzPDwxNikKKyNk ZWZpbmUgICBEVlNfREVTVF9LRVkJCSgxPDwyKQorI2RlZmluZSAgIERWU19UUklDS0xFX0ZFRURf RElTQUJMRSAoMTw8MTQpCisjZGVmaW5lICAgRFZTX1RJTEVECQkoMTw8MTApCisjZGVmaW5lIF9E VlNBU1RSSURFCQkweDcyMTg4CisjZGVmaW5lIF9EVlNBUE9TCQkweDcyMThjCisjZGVmaW5lIF9E VlNBU0laRQkJMHg3MjE5MAorI2RlZmluZSBfRFZTQUtFWVZBTAkJMHg3MjE5NAorI2RlZmluZSBf RFZTQUtFWU1TSwkJMHg3MjE5OAorI2RlZmluZSBfRFZTQVNVUkYJCTB4NzIxOWMKKyNkZWZpbmUg X0RWU0FLRVlNQVhWQUwJCTB4NzIxYTAKKyNkZWZpbmUgX0RWU0FUSUxFT0ZGCQkweDcyMWE0Cisj ZGVmaW5lIF9EVlNBU1VSRkxJVkUJCTB4NzIxYWMKKyNkZWZpbmUgX0RWU0FTQ0FMRQkJMHg3MjIw NAorI2RlZmluZSAgIERWU19TQ0FMRV9FTkFCTEUJKDE8PDMxKQorI2RlZmluZSAgIERWU19GSUxU RVJfTUFTSwkoMzw8MjkpCisjZGVmaW5lICAgRFZTX0ZJTFRFUl9NRURJVU0JKDA8PDI5KQorI2Rl ZmluZSAgIERWU19GSUxURVJfRU5IQU5DSU5HCSgxPDwyOSkKKyNkZWZpbmUgICBEVlNfRklMVEVS X1NPRlRFTklORwkoMjw8MjkpCisjZGVmaW5lIF9EVlNBR0FNQwkJMHg3MjMwMAorCisjZGVmaW5l IF9EVlNCQ05UUgkJMHg3MzE4MAorI2RlZmluZSBfRFZTQlNUUklERQkJMHg3MzE4OAorI2RlZmlu ZSBfRFZTQlBPUwkJMHg3MzE4YworI2RlZmluZSBfRFZTQlNJWkUJCTB4NzMxOTAKKyNkZWZpbmUg X0RWU0JLRVlWQUwJCTB4NzMxOTQKKyNkZWZpbmUgX0RWU0JLRVlNU0sJCTB4NzMxOTgKKyNkZWZp bmUgX0RWU0JTVVJGCQkweDczMTljCisjZGVmaW5lIF9EVlNCS0VZTUFYVkFMCQkweDczMWEwCisj ZGVmaW5lIF9EVlNCVElMRU9GRgkJMHg3MzFhNAorI2RlZmluZSBfRFZTQlNVUkZMSVZFCQkweDcz MWFjCisjZGVmaW5lIF9EVlNCU0NBTEUJCTB4NzMyMDQKKyNkZWZpbmUgX0RWU0JHQU1DCQkweDcz MzAwCisKKyNkZWZpbmUgRFZTQ05UUihwaXBlKSBfUElQRShwaXBlLCBfRFZTQUNOVFIsIF9EVlNC Q05UUikKKyNkZWZpbmUgRFZTU1RSSURFKHBpcGUpIF9QSVBFKHBpcGUsIF9EVlNBU1RSSURFLCBf RFZTQlNUUklERSkKKyNkZWZpbmUgRFZTUE9TKHBpcGUpIF9QSVBFKHBpcGUsIF9EVlNBUE9TLCBf RFZTQlBPUykKKyNkZWZpbmUgRFZTU1VSRihwaXBlKSBfUElQRShwaXBlLCBfRFZTQVNVUkYsIF9E VlNCU1VSRikKKyNkZWZpbmUgRFZTU0laRShwaXBlKSBfUElQRShwaXBlLCBfRFZTQVNJWkUsIF9E VlNCU0laRSkKKyNkZWZpbmUgRFZTU0NBTEUocGlwZSkgX1BJUEUocGlwZSwgX0RWU0FTQ0FMRSwg X0RWU0JTQ0FMRSkKKyNkZWZpbmUgRFZTVElMRU9GRihwaXBlKSBfUElQRShwaXBlLCBfRFZTQVRJ TEVPRkYsIF9EVlNCVElMRU9GRikKKworI2RlZmluZSBfU1BSQV9DVEwJCTB4NzAyODAKKyNkZWZp bmUgICBTUFJJVEVfRU5BQkxFCQkJKDE8PDMxKQorI2RlZmluZSAgIFNQUklURV9HQU1NQV9FTkFC TEUJCSgxPDwzMCkKKyNkZWZpbmUgICBTUFJJVEVfUElYRk9STUFUX01BU0sJCSg3PDwyNSkKKyNk ZWZpbmUgICBTUFJJVEVfRk9STUFUX1lVVjQyMgkJKDA8PDI1KQorI2RlZmluZSAgIFNQUklURV9G T1JNQVRfUkdCWDEwMTAxMAkoMTw8MjUpCisjZGVmaW5lICAgU1BSSVRFX0ZPUk1BVF9SR0JYODg4 CQkoMjw8MjUpCisjZGVmaW5lICAgU1BSSVRFX0ZPUk1BVF9SR0JYMTYxNjE2CSgzPDwyNSkKKyNk ZWZpbmUgICBTUFJJVEVfRk9STUFUX1lVVjQ0NAkJKDQ8PDI1KQorI2RlZmluZSAgIFNQUklURV9G T1JNQVRfWEJHUjEwMTAxMAkoNTw8MjUpCisjZGVmaW5lICAgU1BSSVRFX0NTQ19FTkFCTEUJCSgx PDwyNCkKKyNkZWZpbmUgICBTUFJJVEVfU09VUkNFX0tFWQkJKDE8PDIyKQorI2RlZmluZSAgIFNQ UklURV9SR0JfT1JERVJfUkdCWAkJKDE8PDIwKSAvKiBvbmx5IGZvciA4ODggYW5kIDE2MTYxNiAq LworI2RlZmluZSAgIFNQUklURV9ZVVZfVE9fUkdCX0NTQ19ESVNBQkxFCSgxPDwxOSkKKyNkZWZp bmUgICBTUFJJVEVfWVVWX0NTQ19GT1JNQVRfQlQ3MDkJKDE8PDE4KSAvKiAwIGlzIEJUNjAxICov CisjZGVmaW5lICAgU1BSSVRFX1lVVl9CWVRFX09SREVSX01BU0sJKDM8PDE2KQorI2RlZmluZSAg IFNQUklURV9ZVVZfT1JERVJfWVVZVgkJKDA8PDE2KQorI2RlZmluZSAgIFNQUklURV9ZVVZfT1JE RVJfVVlWWQkJKDE8PDE2KQorI2RlZmluZSAgIFNQUklURV9ZVVZfT1JERVJfWVZZVQkJKDI8PDE2 KQorI2RlZmluZSAgIFNQUklURV9ZVVZfT1JERVJfVllVWQkJKDM8PDE2KQorI2RlZmluZSAgIFNQ UklURV9UUklDS0xFX0ZFRURfRElTQUJMRQkoMTw8MTQpCisjZGVmaW5lICAgU1BSSVRFX0lOVF9H QU1NQV9FTkFCTEUJKDE8PDEzKQorI2RlZmluZSAgIFNQUklURV9USUxFRAkJCSgxPDwxMCkKKyNk ZWZpbmUgICBTUFJJVEVfREVTVF9LRVkJCSgxPDwyKQorI2RlZmluZSBfU1BSQV9TVFJJREUJCTB4 NzAyODgKKyNkZWZpbmUgX1NQUkFfUE9TCQkweDcwMjhjCisjZGVmaW5lIF9TUFJBX1NJWkUJCTB4 NzAyOTAKKyNkZWZpbmUgX1NQUkFfS0VZVkFMCQkweDcwMjk0CisjZGVmaW5lIF9TUFJBX0tFWU1T SwkJMHg3MDI5OAorI2RlZmluZSBfU1BSQV9TVVJGCQkweDcwMjljCisjZGVmaW5lIF9TUFJBX0tF WU1BWAkJMHg3MDJhMAorI2RlZmluZSBfU1BSQV9USUxFT0ZGCQkweDcwMmE0CisjZGVmaW5lIF9T UFJBX1NDQUxFCQkweDcwMzA0CisjZGVmaW5lIF9TUFJBX0dBTUMJCTB4NzA0MDAKKworI2RlZmlu ZSBfU1BSQl9DVEwJCTB4NzAyODAKKyNkZWZpbmUgX1NQUkJfU1RSSURFCQkweDcwMjg4CisjZGVm aW5lIF9TUFJCX1BPUwkJMHg3MDI4YworI2RlZmluZSBfU1BSQl9TSVpFCQkweDcwMjkwCisjZGVm aW5lIF9TUFJCX0tFWVZBTAkJMHg3MDI5NAorI2RlZmluZSBfU1BSQl9LRVlNU0sJCTB4NzAyOTgK KyNkZWZpbmUgX1NQUkJfU1VSRgkJMHg3MDI5YworI2RlZmluZSBfU1BSQl9LRVlNQVgJCTB4NzAy YTAKKyNkZWZpbmUgX1NQUkJfVElMRU9GRgkJMHg3MDJhNAorI2RlZmluZSBfU1BSQl9TQ0FMRQkJ MHg3MDMwNAorI2RlZmluZSBfU1BSQl9HQU1DCQkweDcwNDAwCisKKyNkZWZpbmUgU1BSQ1RMKHBp cGUpIF9QSVBFKHBpcGUsIF9TUFJBX0NUTCwgX1NQUkJfQ1RMKQorI2RlZmluZSBTUFJTVFJJREUo cGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfU1RSSURFLCBfU1BSQl9TVFJJREUpCisjZGVmaW5lIFNQ UlBPUyhwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9QT1MsIF9TUFJCX1BPUykKKyNkZWZpbmUgU1BS U0laRShwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9TSVpFLCBfU1BSQl9TSVpFKQorI2RlZmluZSBT UFJLRVlWQUwocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfS0VZVkFMLCBfU1BSQl9LRVlWQUwpCisj ZGVmaW5lIFNQUktFWU1TSyhwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9LRVlNU0ssIF9TUFJCX0tF WU1TSykKKyNkZWZpbmUgU1BSU1VSRihwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9TVVJGLCBfU1BS Ql9TVVJGKQorI2RlZmluZSBTUFJLRVlNQVgocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfS0VZTUFY LCBfU1BSQl9LRVlNQVgpCisjZGVmaW5lIFNQUlRJTEVPRkYocGlwZSkgX1BJUEUocGlwZSwgX1NQ UkFfVElMRU9GRiwgX1NQUkJfVElMRU9GRikKKyNkZWZpbmUgU1BSU0NBTEUocGlwZSkgX1BJUEUo cGlwZSwgX1NQUkFfU0NBTEUsIF9TUFJCX1NDQUxFKQorI2RlZmluZSBTUFJHQU1DKHBpcGUpIF9Q SVBFKHBpcGUsIF9TUFJBX0dBTUMsIF9TUFJCX0dBTUMpCisKIC8qIFZCSU9TIHJlZ3MgKi8KICNk ZWZpbmUgVkdBQ05UUkwJCTB4NzE0MDAKICMgZGVmaW5lIFZHQV9ESVNQX0RJU0FCTEUJCQkoMSA8 PCAzMSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBlNzQ4MzM4Li5jZDdl MDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC05MTUsOCArOTE1LDgg QEAgc3RhdGljIHZvaWQgYXNzZXJ0X3BhbmVsX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkgICAgIHBpcGVfbmFtZShwaXBlKSk7CiB9CiAKLXN0YXRpYyB2b2lk IGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCWVudW0g cGlwZSBwaXBlLCBib29sIHN0YXRlKQordm9pZCBhc3NlcnRfcGlwZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCSBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKIHsKIAlp bnQgcmVnOwogCXUzMiB2YWw7CkBAIC05MjksOCArOTI5LDYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0 X3BpcGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICAgInBpcGUgJWMg YXNzZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKIAkgICAgIHBp cGVfbmFtZShwaXBlKSwgc3RhdGVfc3RyaW5nKHN0YXRlKSwgc3RhdGVfc3RyaW5nKGN1cl9zdGF0 ZSkpOwogfQotI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIHApIGFzc2VydF9waXBlKGQs IHAsIHRydWUpCi0jZGVmaW5lIGFzc2VydF9waXBlX2Rpc2FibGVkKGQsIHApIGFzc2VydF9waXBl KGQsIHAsIGZhbHNlKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmVfZW5hYmxlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJIGVudW0gcGxhbmUgcGxhbmUpCkBAIC00 NDM5LDcgKzQ0MzcsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfd20oc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJCSAgICBJTEtfTFAwX0NVUlNPUl9MQVRFTkNZLAogCQkJICAgICZw bGFuZV93bSwgJmN1cnNvcl93bSkpIHsKIAkJSTkxNV9XUklURShXTTBfUElQRUFfSUxLLAotCQkJ ICAgKHBsYW5lX3dtIDw8IFdNMF9QSVBFX1BMQU5FX1NISUZUKSB8IGN1cnNvcl93bSk7CisJCQkg ICAocGxhbmVfd20gPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwKKwkJCSAgIChwbGFuZV93bSA8 PCBXTTBfUElQRV9TUFJJVEVfU0hJRlQpIHwgY3Vyc29yX3dtKTsKIAkJRFJNX0RFQlVHX0tNUygi RklGTyB3YXRlcm1hcmtzIEZvciBwaXBlIEEgLSIKIAkJCSAgICAgICIgcGxhbmUgJWQsICIgImN1 cnNvcjogJWRcbiIsCiAJCQkgICAgICBwbGFuZV93bSwgY3Vyc29yX3dtKTsKQEAgLTQ0NTMsNyAr NDQ1Miw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCQkJICAgIElMS19MUDBfQ1VSU09SX0xBVEVOQ1ksCiAJCQkgICAgJnBsYW5lX3dt LCAmY3Vyc29yX3dtKSkgewogCQlJOTE1X1dSSVRFKFdNMF9QSVBFQl9JTEssCi0JCQkgICAocGxh bmVfd20gPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwgY3Vyc29yX3dtKTsKKwkJCSAgIChwbGFu ZV93bSA8PCBXTTBfUElQRV9QTEFORV9TSElGVCkgfAorCQkJICAgKHBsYW5lX3dtIDw8IFdNMF9Q SVBFX1NQUklURV9TSElGVCkgfCBjdXJzb3Jfd20pOwogCQlEUk1fREVCVUdfS01TKCJGSUZPIHdh dGVybWFya3MgRm9yIHBpcGUgQiAtIgogCQkJICAgICAgIiBwbGFuZSAlZCwgY3Vyc29yOiAlZFxu IiwKIAkJCSAgICAgIHBsYW5lX3dtLCBjdXJzb3Jfd20pOwpAQCAtNDUyMSw3ICs0NTIxLDggQEAg c3RhdGljIHZvaWQgc2FuZHlicmlkZ2VfdXBkYXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJCQkgICAgJnNhbmR5YnJpZGdlX2N1cnNvcl93bV9pbmZvLCBsYXRlbmN5LAogCQkJICAgICZw bGFuZV93bSwgJmN1cnNvcl93bSkpIHsKIAkJSTkxNV9XUklURShXTTBfUElQRUFfSUxLLAotCQkJ ICAgKHBsYW5lX3dtIDw8IFdNMF9QSVBFX1BMQU5FX1NISUZUKSB8IGN1cnNvcl93bSk7CisJCQkg ICAocGxhbmVfd20gPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwKKwkJCSAgIChwbGFuZV93bSA8 PCBXTTBfUElQRV9TUFJJVEVfU0hJRlQpIHwgY3Vyc29yX3dtKTsKIAkJRFJNX0RFQlVHX0tNUygi RklGTyB3YXRlcm1hcmtzIEZvciBwaXBlIEEgLSIKIAkJCSAgICAgICIgcGxhbmUgJWQsICIgImN1 cnNvcjogJWRcbiIsCiAJCQkgICAgICBwbGFuZV93bSwgY3Vyc29yX3dtKTsKQEAgLTQ1MzMsNyAr NDUzNCw4IEBAIHN0YXRpYyB2b2lkIHNhbmR5YnJpZGdlX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCQkJICAgICZzYW5keWJyaWRnZV9jdXJzb3Jfd21faW5mbywgbGF0ZW5jeSwK IAkJCSAgICAmcGxhbmVfd20sICZjdXJzb3Jfd20pKSB7CiAJCUk5MTVfV1JJVEUoV00wX1BJUEVC X0lMSywKLQkJCSAgIChwbGFuZV93bSA8PCBXTTBfUElQRV9QTEFORV9TSElGVCkgfCBjdXJzb3Jf d20pOworCQkJICAgKHBsYW5lX3dtIDw8IFdNMF9QSVBFX1BMQU5FX1NISUZUKSB8CisJCQkgICAo cGxhbmVfd20gPDwgV00wX1BJUEVfU1BSSVRFX1NISUZUKSB8IGN1cnNvcl93bSk7CiAJCURSTV9E RUJVR19LTVMoIkZJRk8gd2F0ZXJtYXJrcyBGb3IgcGlwZSBCIC0iCiAJCQkgICAgICAiIHBsYW5l ICVkLCBjdXJzb3I6ICVkXG4iLAogCQkJICAgICAgcGxhbmVfd20sIGN1cnNvcl93bSk7CkBAIC04 NjkyLDcgKzg2OTQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2Rpc2FibGVfdmdhKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiB2b2lkIGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0JaW50IGk7CisJaW50IGksIHJldDsKIAogCWRybV9tb2RlX2NvbmZpZ19pbml0KGRl dik7CiAKQEAgLTg3MjIsNiArODcyNCwxMiBAQCB2b2lkIGludGVsX21vZGVzZXRfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fcGlw ZTsgaSsrKSB7CiAJCWludGVsX2NydGNfaW5pdChkZXYsIGkpOworCQlpZiAoSEFTX1BDSF9TUExJ VChkZXYpKSB7CisJCQlyZXQgPSBpbnRlbF9wbGFuZV9pbml0KGRldiwgaSk7CisJCQlpZiAocmV0 KQorCQkJCURSTV9FUlJPUigicGxhbmUgJWQgaW5pdCBmYWlsZWQ6ICVkXG4iLAorCQkJCQkgIGks IHJldCk7CisJCX0KIAl9CiAKIAkvKiBKdXN0IGRpc2FibGUgaXQgb25jZSBhdCBzdGFydHVwICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDQ2N2ZiNGEuLjUwYjYzM2IgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzYsMTAgKzE3NiwxOCBAQCBzdHJ1Y3QgaW50ZWxfY3J0 YyB7CiAJYm9vbCB1c2VfcGxsX2E7CiB9OwogCitzdHJ1Y3QgaW50ZWxfcGxhbmUgeworCXN0cnVj dCBkcm1fcGxhbmUgYmFzZTsKKwllbnVtIHBpcGUgcGlwZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOworCXUzMiBsdXRfclsxMDI0XSwgbHV0X2dbMTAyNF0sIGx1dF9iWzEwMjRd OworfTsKKwogI2RlZmluZSB0b19pbnRlbF9jcnRjKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3Qg aW50ZWxfY3J0YywgYmFzZSkKICNkZWZpbmUgdG9faW50ZWxfY29ubmVjdG9yKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yLCBiYXNlKQogI2RlZmluZSB0b19pbnRlbF9l bmNvZGVyKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciwgYmFzZSkKICNk ZWZpbmUgdG9faW50ZWxfZnJhbWVidWZmZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRl bF9mcmFtZWJ1ZmZlciwgYmFzZSkKKyNkZWZpbmUgdG9faW50ZWxfcGxhbmUoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBpbnRlbF9wbGFuZSwgYmFzZSkKIAogI2RlZmluZSBESVBfSEVBREVSX1NJ WkUJNQogCkBAIC0yODksNiArMjk3LDcgQEAgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogZXh0ZXJuIGJvb2wgaW50 ZWxfZHBkX2lzX2VkcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVs X2VkcF9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqLCBpbnQgKiwgaW50ICopOwog ZXh0ZXJuIGJvb2wgaW50ZWxfZW5jb2Rlcl9pc19wY2hfZWRwKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2Rlcik7CitleHRlcm4gaW50IGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwaXBlIHBpcGUpOwogCiAvKiBpbnRlbF9wYW5lbC5jICovCiBleHRlcm4gdm9p ZCBpbnRlbF9maXhlZF9wYW5lbF9tb2RlKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9t b2RlLApAQCAtMzc5LDYgKzM4OCwxMSBAQCBleHRlcm4gaW50IGludGVsX292ZXJsYXlfYXR0cnMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIGV4dGVybiB2b2lkIGludGVsX2Zi X291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9p ZCBpbnRlbF9mYl9yZXN0b3JlX21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKK2V4dGVy biB2b2lkIGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwaXBlIHBpcGUsCisJCQlib29sIHN0YXRlKTsKKyNkZWZpbmUgYXNzZXJ0X3BpcGVfZW5hYmxl ZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCB0cnVlKQorI2RlZmluZSBhc3NlcnRfcGlwZV9kaXNh YmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCBmYWxzZSkKKwogZXh0ZXJuIHZvaWQgaW50ZWxf aW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBp bnRlbF93cml0ZV9lbGQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYi5jCmluZGV4IDEx YmFhOTkuLjUxM2E0MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYwpAQCAtMjcwLDggKzI3MCwx NCBAQCB2b2lkIGludGVsX2ZiX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog ewogCWludCByZXQ7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25m aWc7CisJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAKIAlyZXQgPSBkcm1fZmJfaGVscGVyX3Jl c3RvcmVfZmJkZXZfbW9kZSgmZGV2X3ByaXYtPmZiZGV2LT5oZWxwZXIpOwogCWlmIChyZXQpCiAJ CURSTV9ERUJVRygiZmFpbGVkIHRvIHJlc3RvcmUgY3J0YyBtb2RlXG4iKTsKKworCS8qIEJlIHN1 cmUgdG8gc2h1dCBvZmYgYW55IHBsYW5lcyB0aGF0IG1heSBiZSBhY3RpdmUgKi8KKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KHBsYW5lLCAmY29uZmlnLT5wbGFuZV9saXN0LCBoZWFkKQorCQlwbGFuZS0+ ZnVuY3MtPmRpc2FibGVfcGxhbmUocGxhbmUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheTIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE1OTRiNgotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkyLmMKQEAg LTAsMCArMSwzOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxMSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqCisgKiBB dXRob3JzOgorICogICBKZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KKyAq CisgKiBOZXcgcGxhbmUvc3ByaXRlIGhhbmRsaW5nLgorICoKKyAqIFRoZSBvbGRlciBjaGlwcyBo YWQgYSBzZXBhcmF0ZSBpbnRlcmZhY2UgZm9yIHByb2dyYW1taW5nIHBsYW5lIHJlbGF0ZWQKKyAq IHJlZ2lzdGVyczsgbmV3ZXIgb25lcyBhcmUgbXVjaCBzaW1wbGVyIGFuZCB3ZSBjYW4gdXNlIHRo ZSBuZXcgRFJNIHBsYW5lCisgKiBzdXBwb3J0LgorICovCisjaW5jbHVkZSAiZHJtUC5oIgorI2lu Y2x1ZGUgImRybV9jcnRjLmgiCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVkZSAiaTkx NV9kcm0uaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCisvKgorICogTm90ZSBvbiByZWZjb3Vu dGluZzoKKyAqIFdoZW4gdGhlIHVzZXIgY3JlYXRlcyBhbiBmYiBmb3IgdGhlIEdFTSBvYmplY3Qg dG8gYmUgdXNlZCBmb3IgdGhlIHBsYW5lLAorICogYSByZWYgaXMgdGFrZW4gb24gdGhlIG9iamVj dC4gIEhvd2V2ZXIsIGlmIHRoZSBhcHBsaWNhdGlvbiBleGl0cyBiZWZvcmUKKyAqIGRpc2FibGlu ZyB0aGUgcGxhbmUsIHRoZSBEUk0gY2xvc2UgaGFuZGxpbmcgd2lsbCBmcmVlIGFsbCB0aGUgZmJz IGFuZAorICogdW5sZXNzIHdlIHRha2UgYSByZWYgb24gdGhlIG9iamVjdCwgaXQgd2lsbCBiZSBk ZXN0cm95ZWQgYmVmb3JlIHRoZQorICogcGxhbmUgZGlzYWJsZSBob29rIGlzIGNhbGxlZCwgY2F1 c2luZyBvYnZpb3VzIHRyb3VibGUgd2l0aCBvdXIgZWZmb3J0cworICogdG8gbG9vayB1cCBhbmQg dW5waW4gdGhlIG9iamVjdC4gIFNvIHdlIHRha2UgYSByZWYgYWZ0ZXIgd2UgbW92ZSB0aGUKKyAq IG9iamVjdCB0byB0aGUgZGlzcGxheSBwbGFuZSBzbyBpdCB3b24ndCBiZSBkZXN0cm95ZWQgdW50 aWwgb3VyIGRpc2FibGUKKyAqIGhvb2sgaXMgY2FsbGVkIGFuZCB3ZSBkcm9wIG91ciBwcml2YXRl IHJlZmVyZW5jZS4KKyAqLworCitzdGF0aWMgaW50CitpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCSAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgY3J0Y194LCBpbnQgY3J0Y195LAorCQkgICB1bnNpZ25lZCBp bnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAorCQkgICB1aW50MzJfdCBzcmNfeCwgdWlu dDMyX3Qgc3JjX3ksCisJCSAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKK3sKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAq aW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyICppbnRlbF9mYjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqb2xk X29iajsKKwlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOworCXVuc2lnbmVkIGxvbmcgc3Rh cnQsIG9mZnNldDsKKwl1MzIgc3ByY3RsOworCXUzMiByZWcgPSBTUFJDVEwocGlwZSk7CisJaW50 IHJldCA9IDA7CisJaW50IHggPSBzcmNfeCA+PiAxNiwgeSA9IHNyY195ID4+IDE2OworCisJYXNz ZXJ0X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7CisKKwlpbnRlbF9mYiA9IHRvX2ludGVs X2ZyYW1lYnVmZmVyKGZiKTsKKwlvYmogPSBpbnRlbF9mYi0+b2JqOworCisJb2xkX29iaiA9IGlu dGVsX3BsYW5lLT5vYmo7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlz cHJjdGwgPSBJOTE1X1JFQUQocmVnKTsKKworCS8qIE1hc2sgb3V0IHBpeGVsIGZvcm1hdCBiaXRz IGluIGNhc2Ugd2UgY2hhbmdlIGl0ICovCisJc3ByY3RsICY9IH4oU1BSSVRFX0RFU1RfS0VZIHwg U1BSSVRFX1NPVVJDRV9LRVkpOworCXNwcmN0bCAmPSB+U1BSSVRFX1BJWEZPUk1BVF9NQVNLOwor CXNwcmN0bCAmPSB+U1BSSVRFX1JHQl9PUkRFUl9SR0JYOworCXNwcmN0bCAmPSB+U1BSSVRFX1lV Vl9CWVRFX09SREVSX01BU0s7CisKKwlzd2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKKwljYXNl IFY0TDJfUElYX0ZNVF9CR1IzMjoKKwkJc3ByY3RsIHw9IFNQUklURV9GT1JNQVRfUkdCWDg4ODsK KwkJYnJlYWs7CisJY2FzZSBWNEwyX1BJWF9GTVRfUkdCMzI6CisJCXNwcmN0bCB8PSBTUFJJVEVf Rk9STUFUX1JHQlg4ODggfCBTUFJJVEVfUkdCX09SREVSX1JHQlg7CisJCWJyZWFrOworCWNhc2Ug VjRMMl9QSVhfRk1UX1lVWVY6CisJCXNwcmN0bCB8PSBTUFJJVEVfRk9STUFUX1lVVjQyMiB8IFNQ UklURV9ZVVZfT1JERVJfWVVZVjsKKwkJYnJlYWs7CisJY2FzZSBWNEwyX1BJWF9GTVRfWVZZVToK KwkJc3ByY3RsIHw9IFNQUklURV9GT1JNQVRfWVVWNDIyIHwgU1BSSVRFX1lVVl9PUkRFUl9ZVllV OworCQlicmVhazsKKwljYXNlIFY0TDJfUElYX0ZNVF9VWVZZOgorCQlzcHJjdGwgfD0gU1BSSVRF X0ZPUk1BVF9ZVVY0MjIgfCBTUFJJVEVfWVVWX09SREVSX1VZVlk7CisJCWJyZWFrOworCWNhc2Ug VjRMMl9QSVhfRk1UX1ZZVVk6CisJCXNwcmN0bCB8PSBTUFJJVEVfRk9STUFUX1lVVjQyMiB8IFNQ UklURV9ZVVZfT1JERVJfVllVWTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZB TDsKKwkJRFJNX0VSUk9SKCJiYWQgcGl4ZWwgZm9ybWF0XG4iKTsKKwkJZ290byBvdXRfdW5sb2Nr OworCX0KKworCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX1gpIHsKKwkJRFJN X0VSUk9SKCJwbGFuZSBzdXJmYWNlcyBtdXN0IGJlIFggdGlsZWRcbiIpOworCQlyZXQgPSAtRUlO VkFMOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5j ZV9mYl9vYmooZGV2LCBvYmosIE5VTEwpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X3VubG9jazsK KworCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKworCWludGVsX3BsYW5l LT5vYmogPSBvYmo7CisKKwlzcHJjdGwgfD0gU1BSSVRFX1RJTEVEOworCisJLyogbXVzdCBkaXNh YmxlICovCisJc3ByY3RsIHw9IFNQUklURV9UUklDS0xFX0ZFRURfRElTQUJMRTsKKwlzcHJjdGwg fD0gU1BSSVRFX0VOQUJMRTsKKworCXN0YXJ0ID0gb2JqLT5ndHRfb2Zmc2V0OworCW9mZnNldCA9 IHkgKiBmYi0+cGl0Y2ggKyB4ICogKGZiLT5iaXRzX3Blcl9waXhlbCAvIDgpOworCisJSTkxNV9X UklURShTUFJTVFJJREUocGlwZSksIGZiLT5waXRjaCk7CisJSTkxNV9XUklURShTUFJQT1MocGlw ZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKKwlJOTE1X1dSSVRFKFNQUlRJTEVPRkYocGlw ZSksICh5IDw8IDE2KSB8IHgpOworCUk5MTVfV1JJVEUoU1BSU0laRShwaXBlKSwgKGZiLT5oZWln aHQgPDwgMTYpIHwgZmItPndpZHRoKTsKKwlJOTE1X1dSSVRFKFNQUlNDQUxFKHBpcGUpLCAwKTsK KwlJOTE1X1dSSVRFKHJlZywgc3ByY3RsKTsKKwlJOTE1X1dSSVRFKFNQUlNVUkYocGlwZSksIHN0 YXJ0KTsKKwlQT1NUSU5HX1JFQUQoU1BSU1VSRihwaXBlKSk7CisKKwkvKiBBZGp1c3Qgd2F0ZXJt YXJrcyBhcyBuZWVkZWQgKi8KKwlJOTE1X1dSSVRFKFdNMVNfTFBfSUxLLCAweDEwMCk7CisKKwkv KiBVbnBpbiBvbGQgb2JqIGFmdGVyIG5ldyBvbmUgaXMgYWN0aXZlIHRvIGF2b2lkIHVnbGluZXNz ICovCisJaWYgKG9sZF9vYmopIHsKKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgdG9faW50 ZWxfY3J0YyhjcnRjKS0+cGlwZSk7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbihvbGRfb2JqKTsK Kwl9CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitzbmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCSAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgY3J0Y194LCBpbnQgY3J0Y195LAorCQkgICB1bnNpZ25lZCBp bnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAorCQkgICB1aW50MzJfdCBzcmNfeCwgdWlu dDMyX3Qgc3JjX3ksCisJCSAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKK3sKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAq aW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyICppbnRlbF9mYjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqb2xk X29iajsKKwlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOworCXVuc2lnbmVkIGxvbmcgc3Rh cnQsIG9mZnNldDsKKwl1MzIgZHZzY250ciwgZHZzc2NhbGUgPSAwOworCXUzMiByZWcgPSBEVlND TlRSKHBpcGUpOworCWludCByZXQgPSAwOworCWludCB4ID0gc3JjX3ggPj4gMTYsIHkgPSBzcmNf eSA+PiAxNjsKKwlpbnQgYWN0aXZlX3cgPSBjcnRjLT5tb2RlLmhkaXNwbGF5LCBhY3RpdmVfaCA9 IGNydGMtPm1vZGUudmRpc3BsYXk7CisKKwlhc3NlcnRfcGlwZV9lbmFibGVkKGRldl9wcml2LCBw aXBlKTsKKworCWludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOworCW9iaiA9IGlu dGVsX2ZiLT5vYmo7CisKKwlvbGRfb2JqID0gaW50ZWxfcGxhbmUtPm9iajsKKworCWlmIChjcnRj X3ggPj0gYWN0aXZlX3cgfHwgY3J0Y195ID49IGFjdGl2ZV9oKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qCisJICogV2UgY2FuIHRha2UgYSBsYXJnZXIgc291cmNlIGFuZCBzY2FsZSBpdCBkb3du LCBidXQKKwkgKiBvbmx5IHNvIG11Y2guLi4gIDE2eCBpcyB0aGUgbWF4IG9uIFNOQi4KKwkgKi8K KwlpZiAoKChzcmNfdyAqIHNyY19oKSAvIChjcnRjX3cgKiBjcnRjX2gpKSA+IDE2KQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCS8qIENsYW1wIHRoZSB3aWR0aCAmIGhlaWdodCBpbnRvIHRoZSB2aXNp YmxlIGFyZWEgKi8KKwlpZiAoY3J0Y194ICsgY3J0Y193ID4gYWN0aXZlX3cpCisJCWNydGNfdyA9 IGFjdGl2ZV93IC0gY3J0Y194IC0gMTsKKwlpZiAoY3J0Y195ICsgY3J0Y19oID4gYWN0aXZlX2gp CisJCWNydGNfaCA9IGFjdGl2ZV9oIC0gY3J0Y195IC0gMTsKKworCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKKworCWR2c2NudHIgPSBJOTE1X1JFQUQocmVnKTsKKworCS8qIE1hc2sg b3V0IHBpeGVsIGZvcm1hdCBiaXRzIGluIGNhc2Ugd2UgY2hhbmdlIGl0ICovCisJZHZzY250ciAm PSB+KERWU19ERVNUX0tFWSB8IERWU19TT1VSQ0VfS0VZKTsKKwlkdnNjbnRyICY9IH5EVlNfUElY Rk9STUFUX01BU0s7CisJZHZzY250ciAmPSB+RFZTX1JHQl9PUkRFUl9SR0JYOworCWR2c2NudHIg Jj0gfkRWU19ZVVZfQllURV9PUkRFUl9NQVNLOworCisJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0 KSB7CisJY2FzZSBWNEwyX1BJWF9GTVRfQkdSMzI6CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9S R0JYODg4OworCQlicmVhazsKKwljYXNlIFY0TDJfUElYX0ZNVF9SR0IzMjoKKwkJZHZzY250ciB8 PSBEVlNfRk9STUFUX1JHQlg4ODggfCBEVlNfUkdCX09SREVSX1JHQlg7CisJCWJyZWFrOworCWNh c2UgVjRMMl9QSVhfRk1UX1lVWVY6CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9ZVVY0MjIgfCBE VlNfWVVWX09SREVSX1lVWVY7CisJCWJyZWFrOworCWNhc2UgVjRMMl9QSVhfRk1UX1lWWVU6CisJ CWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9ZVVY0MjIgfCBEVlNfWVVWX09SREVSX1lWWVU7CisJCWJy ZWFrOworCWNhc2UgVjRMMl9QSVhfRk1UX1VZVlk6CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9Z VVY0MjIgfCBEVlNfWVVWX09SREVSX1VZVlk7CisJCWJyZWFrOworCWNhc2UgVjRMMl9QSVhfRk1U X1ZZVVk6CisJCWR2c2NudHIgfD0gRFZTX0ZPUk1BVF9ZVVY0MjIgfCBEVlNfWVVWX09SREVSX1ZZ VVk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldCA9IC1FSU5WQUw7CisJCURSTV9FUlJPUigi YmFkIHBpeGVsIGZvcm1hdFxuIik7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwlpZiAob2Jq LT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19YKSB7CisJCURSTV9FUlJPUigicGxhbmUgc3Vy ZmFjZXMgbXVzdCBiZSBYIHRpbGVkXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRf dW5sb2NrOworCX0KKworCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGRldiwgb2Jq LCBOVUxMKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF91bmxvY2s7CisKKwlkcm1fZ2VtX29iamVj dF9yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisKKwlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOworCisJ ZHZzY250ciB8PSBEVlNfVElMRUQ7CisKKwkvKiBtdXN0IGRpc2FibGUgKi8KKwlkdnNjbnRyIHw9 IERWU19UUklDS0xFX0ZFRURfRElTQUJMRTsKKwlkdnNjbnRyIHw9IERWU19FTkFCTEU7CisKKwlz dGFydCA9IG9iai0+Z3R0X29mZnNldDsKKwlvZmZzZXQgPSB5ICogZmItPnBpdGNoICsgeCAqIChm Yi0+Yml0c19wZXJfcGl4ZWwgLyA4KTsKKworCWlmIChjcnRjX3cgIT0gc3JjX3cgfHwgY3J0Y19o ICE9IHNyY19oKQorCQlkdnNzY2FsZSA9IERWU19TQ0FMRV9FTkFCTEUgfCAoc3JjX2ggPDwgMTYp IHwgc3JjX3c7CisKKwlJOTE1X1dSSVRFKERWU1NUUklERShwaXBlKSwgZmItPnBpdGNoKTsKKwlJ OTE1X1dSSVRFKERWU1BPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOworCUk5MTVf V1JJVEUoRFZTVElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7CisJSTkxNV9XUklURShEVlNT SVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7CisJSTkxNV9XUklURShEVlNTQ0FM RShwaXBlKSwgZHZzc2NhbGUpOworCUk5MTVfV1JJVEUocmVnLCBkdnNjbnRyKTsKKwlJOTE1X1dS SVRFKERWU1NVUkYocGlwZSksIHN0YXJ0KTsKKwlQT1NUSU5HX1JFQUQoRFZTU1VSRihwaXBlKSk7 CisKKwkvKiBVbnBpbiBvbGQgb2JqIGFmdGVyIG5ldyBvbmUgaXMgYWN0aXZlIHRvIGF2b2lkIHVn bGluZXNzICovCisJaWYgKG9sZF9vYmopIHsKKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwg dG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSk7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbihvbGRf b2JqKTsKKwl9CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpdmJfZGlzYWJsZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxh bmUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZSk7CisJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKKwlpbnQgcmV0ID0gMDsK KworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWlmICghaW50ZWxfcGxhbmUt Pm9iaikKKwkJZ290byBvdXRfdW5sb2NrOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2Zpbmlz aF9ncHUoaW50ZWxfcGxhbmUtPm9iaik7CisJaWYgKHJldCkKKwkJZ290byBvdXRfdW5sb2NrOwor CisJaTkxNV9nZW1fb2JqZWN0X3VucGluKGludGVsX3BsYW5lLT5vYmopOworCisJZHJtX2dlbV9v YmplY3RfcmVmZXJlbmNlKCZpbnRlbF9wbGFuZS0+b2JqLT5iYXNlKTsKKworb3V0X3VubG9jazoK KwlpbnRlbF9wbGFuZS0+b2JqID0gTlVMTDsKKworCUk5MTVfV1JJVEUoU1BSQ1RMKHBpcGUpLCBJ OTE1X1JFQUQoU1BSQ1RMKHBpcGUpKSAmIH5TUFJJVEVfRU5BQkxFKTsKKwlJOTE1X1dSSVRFKFNQ UlNVUkYocGlwZSksIDApOworCVBPU1RJTkdfUkVBRChTUFJTVVJGKHBpcGUpKTsKKworCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludAorc25iX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOworCWludCBwaXBlID0gaW50ZWxfcGxh bmUtPnBpcGU7CisJaW50IHJldCA9IDA7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CisKKwlpZiAoIWludGVsX3BsYW5lLT5vYmopCisJCWdvdG8gb3V0X3VubG9jazsKKworCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9maW5pc2hfZ3B1KGludGVsX3BsYW5lLT5vYmopOworCWlmIChy ZXQpCisJCWdvdG8gb3V0X3VubG9jazsKKworCWk5MTVfZ2VtX29iamVjdF91bnBpbihpbnRlbF9w bGFuZS0+b2JqKTsKKworCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmaW50ZWxfcGxhbmUtPm9i ai0+YmFzZSk7CisKK291dF91bmxvY2s6CisJaW50ZWxfcGxhbmUtPm9iaiA9IE5VTEw7CisKKwlJ OTE1X1dSSVRFKERWU0NOVFIocGlwZSksIEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKSAmIH5EVlNf RU5BQkxFKTsKKwlJOTE1X1dSSVRFKERWU1NVUkYocGlwZSksIDApOworCVBPU1RJTkdfUkVBRChE VlNTVVJGKHBpcGUpKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxh bmVfZnVuY3M7CisKK3N0YXRpYyB1aW50MzJfdCBzbmJfcGxhbmVfZm9ybWF0c1tdID0geworCVY0 TDJfUElYX0ZNVF9CR1IzMiwKKwlWNEwyX1BJWF9GTVRfUkdCMzIsCisJVjRMMl9QSVhfRk1UX1lV WVYsCisJVjRMMl9QSVhfRk1UX1lWWVUsCisJVjRMMl9QSVhfRk1UX1VZVlksCisJVjRMMl9QSVhf Rk1UX1ZZVVksCit9OworCitpbnQKK2ludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwaXBlIHBpcGUpCit7CisJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFu ZTsKKwl1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzOworCisJaWYgKCEoSVNfR0VONihkZXYp IHx8IElTX0dFTjcoZGV2KSkpIHsKKwkJRFJNX0VSUk9SKCJuZXcgcGxhbmUgY29kZSBvbmx5IGZv ciBTTkIrXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJaW50ZWxfcGxhbmUgPSBremFs bG9jKHNpemVvZihzdHJ1Y3QgaW50ZWxfcGxhbmUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWludGVs X3BsYW5lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChJU19HRU42KGRldikpIHsKKwkJaW50 ZWxfcGxhbmVfZnVuY3MudXBkYXRlX3BsYW5lID0gc25iX3VwZGF0ZV9wbGFuZTsKKwkJaW50ZWxf cGxhbmVfZnVuY3MuZGlzYWJsZV9wbGFuZSA9IHNuYl9kaXNhYmxlX3BsYW5lOworCX0gZWxzZSBp ZiAoSVNfR0VONyhkZXYpKSB7CisJCWludGVsX3BsYW5lX2Z1bmNzLnVwZGF0ZV9wbGFuZSA9IGl2 Yl91cGRhdGVfcGxhbmU7CisJCWludGVsX3BsYW5lX2Z1bmNzLmRpc2FibGVfcGxhbmUgPSBpdmJf ZGlzYWJsZV9wbGFuZTsKKwl9CisKKwlpbnRlbF9wbGFuZS0+cGlwZSA9IHBpcGU7CisJcG9zc2li bGVfY3J0Y3MgPSAoMSA8PCBwaXBlKTsKKwlkcm1fcGxhbmVfaW5pdChkZXYsICZpbnRlbF9wbGFu ZS0+YmFzZSwgcG9zc2libGVfY3J0Y3MsCisJCSAgICAgICAmaW50ZWxfcGxhbmVfZnVuY3MsIHNu Yl9wbGFuZV9mb3JtYXRzLAorCQkgICAgICAgQVJSQVlfU0laRShzbmJfcGxhbmVfZm9ybWF0cykp OworCisJcmV0dXJuIDA7Cit9CisKLS0gCjEuNy40LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=