From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xinliang Liu Subject: [PATCH v4 03/11] drm/hisilicon: Add crtc driver for ADE Date: Sat, 6 Feb 2016 11:24:50 +0800 Message-ID: <1454729098-79807-4-git-send-email-xinliang.liu@linaro.org> References: <1454729098-79807-1-git-send-email-xinliang.liu@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1454729098-79807-1-git-send-email-xinliang.liu@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, daniel@ffwll.ch, robh@kernel.org, daniel@fooishbar.org, architt@codeaurora.org, airlied@linux.ie, corbet@lwn.net, catalin.marinas@arm.com, will.deacon@arm.com, emil.l.velikov@gmail.com Cc: andy.green@linaro.org, xuyiping@hisilicon.com, guodong.xu@linaro.org, linux-doc@vger.kernel.org, w.f@huawei.com, zourongrong@huawei.com, linuxarm@huawei.com, xuwei5@hisilicon.com, bintian.wang@huawei.com, haojian.zhuang@linaro.org, benjamin.gaignard@linaro.org, puck.chen@hisilicon.com, liguozhu@hisilicon.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org QWRkIGNydGMgZnVuY3MgYW5kIGhlbHBlciBmdW5jcyBmb3IgQURFLgoKdjQ6IE5vbmUuCnYzOgot IE1ha2UgYWRlIGFzIHRoZSBtYXN0ZXIgZHJpdmVyLgotIFVzZSBwb3J0IHRvIGNvbm5lY3Qgd2l0 aCBlbmNvZGVyLgotIEEgZmV3IGNsZWFudXAuCnYyOgotIFJlbW92ZSBhYnRyYWN0aW9uIGxheWVy LgoKU2lnbmVkLW9mZi1ieTogWGlubGlhbmcgTGl1IDx4aW5saWFuZy5saXVAbGluYXJvLm9yZz4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL01ha2VmaWxlICAgICAgICB8ICAg MyArLQogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9hZGVfcmVnLmggfCAy ODAgKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmlu X2RybV9hZGUuYyB8IDQ1OCArKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2Ry bS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2Rydi5jIHwgIDE1ICsKIGRyaXZlcnMvZ3B1L2Ry bS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2Rydi5oIHwgICA4ICsKIDUgZmlsZXMgY2hhbmdl ZCwgNzYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2FkZV9yZWcuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5j CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4vTWFrZWZpbGUKaW5kZXggY2IzNDZkZTQ3 ZDQ4Li4yYTYxYWIwMDZkZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24v a2lyaW4vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9NYWtl ZmlsZQpAQCAtMSwzICsxLDQgQEAKLWtpcmluLWRybS15IDo9IGtpcmluX2RybV9kcnYubwora2ly aW4tZHJtLXkgOj0ga2lyaW5fZHJtX2Rydi5vIFwKKwkgICAgICAga2lyaW5fZHJtX2FkZS5vCiAK IG9iai0kKENPTkZJR19EUk1fSElTSV9LSVJJTikgKz0ga2lyaW4tZHJtLm8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fYWRlX3JlZy5oIGIvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9hZGVfcmVnLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ODAyMDc0N2FiZmUKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2FkZV9yZWcuaApAQCAtMCww ICsxLDI4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBMaW5hcm8gTGltaXRlZC4KKyAq IENvcHlyaWdodCAoYykgMjAxNC0yMDE2IEhpc2lsaWNvbiBMaW1pdGVkLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX19LSVJJTl9BREVfUkVHX0hfXworI2RlZmlu ZSBfX0tJUklOX0FERV9SRUdfSF9fCisKKy8qCisgKiBBREUgUmVnaXN0ZXJzCisgKi8KKyNkZWZp bmUgTUFTSyh4KQkJCQkoQklUKHgpIC0gMSkKKworI2RlZmluZSBBREVfQ1RSTAkJCTB4MDAwNAor I2RlZmluZSBGUk1fRU5EX1NUQVJUX09GU1QJCTAKKyNkZWZpbmUgRlJNX0VORF9TVEFSVF9NQVNL CQlNQVNLKDIpCisjZGVmaW5lIEFERV9DVFJMMQkJCTB4MDA4QworI2RlZmluZSBBVVRPX0NMS19H QVRFX0VOX09GU1QJCTAKKyNkZWZpbmUgQVVUT19DTEtfR0FURV9FTgkJQklUKDApCisjZGVmaW5l IEFERV9ST1RfU1JDX0NGRwkJCTB4MDAxMAorI2RlZmluZSBBREVfRElTUF9TUkNfQ0ZHCQkweDAw MTgKKyNkZWZpbmUgQURFX1dETUEyX1NSQ19DRkcJCTB4MDAxQworI2RlZmluZSBBREVfU0VDX09W TFlfU1JDX0NGRwkJMHgwMDIwCisjZGVmaW5lIEFERV9XRE1BM19TUkNfQ0ZHCQkweDAwMjQKKyNk ZWZpbmUgQURFX09WTFkxX1RSQU5TX0NGRwkJMHgwMDJDCisjZGVmaW5lIEFERV9FTgkJCQkweDAx MDAKKyNkZWZpbmUgQURFX0RJU0FCTEUJCQkwCisjZGVmaW5lIEFERV9FTkFCTEUJCQkxCisjZGVm aW5lIElOVFJfTUFTS19DUFUoeCkJCSgweDBDMTAgKyAoeCkgKiAweDQpCisjZGVmaW5lIEFERV9G Uk1fRElTR0FSRF9DVFJMCQkweDAwQTQKKy8qIHJlc2V0IGFuZCByZWxvYWQgcmVncyAqLworI2Rl ZmluZSBBREVfU09GVF9SU1RfU0VMKHgpCQkoMHgwMDc4ICsgKHgpICogMHg0KQorI2RlZmluZSBB REVfUkVMT0FEX0RJUyh4KQkJKDB4MDBBQyArICh4KSAqIDB4NCkKKyNkZWZpbmUgUkRNQV9PRlNU CQkJMAorI2RlZmluZSBDTElQX09GU1QJCQkxNQorI2RlZmluZSBTQ0xfT0ZTVAkJCTIxCisjZGVm aW5lIENUUkFOX09GU1QJCQkyNAorI2RlZmluZSBPVkxZX09GU1QJCQkzNyAvKiAzMis1ICovCisv KiBjaGFubmVsIHJlZ3MgKi8KKyNkZWZpbmUgUkRfQ0hfUEUoeCkJCQkoMHgxMDAwICsgKHgpICog MHg4MCkKKyNkZWZpbmUgUkRfQ0hfQ1RSTCh4KQkJCSgweDEwMDQgKyAoeCkgKiAweDgwKQorI2Rl ZmluZSBSRF9DSF9BRERSKHgpCQkJKDB4MTAwOCArICh4KSAqIDB4ODApCisjZGVmaW5lIFJEX0NI X1NJWkUoeCkJCQkoMHgxMDBDICsgKHgpICogMHg4MCkKKyNkZWZpbmUgUkRfQ0hfU1RSSURFKHgp CQkJKDB4MTAxMCArICh4KSAqIDB4ODApCisjZGVmaW5lIFJEX0NIX1NQQUNFKHgpCQkJKDB4MTAx NCArICh4KSAqIDB4ODApCisjZGVmaW5lIFJEX0NIX1BBUlRJQUxfU0laRSh4KQkJKDB4MTAxOCAr ICh4KSAqIDB4ODApCisjZGVmaW5lIFJEX0NIX1BBUlRJQUxfU1BBQ0UoeCkJCSgweDEwMUMgKyAo eCkgKiAweDgwKQorI2RlZmluZSBSRF9DSF9FTih4KQkJCSgweDEwMjAgKyAoeCkgKiAweDgwKQor I2RlZmluZSBSRF9DSF9TVEFUVVMoeCkJCQkoMHgxMDI0ICsgKHgpICogMHg4MCkKKyNkZWZpbmUg UkRfQ0hfRElTUF9DVFJMCQkJMHgxNDA0CisjZGVmaW5lIFJEX0NIX0RJU1BfQUREUgkJCTB4MTQw OAorI2RlZmluZSBSRF9DSF9ESVNQX1NJWkUJCQkweDE0MEMKKyNkZWZpbmUgUkRfQ0hfRElTUF9T VFJJREUJCTB4MTQxMAorI2RlZmluZSBSRF9DSF9ESVNQX1NQQUNFCQkweDE0MTQKKyNkZWZpbmUg UkRfQ0hfRElTUF9FTgkJCTB4MTQyQworLyogY2xpcCByZWdzICovCisjZGVmaW5lIEFERV9DTElQ X0RJU0FCTEUoeCkJCSgweDY4MDAgKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NMSVBfU0la RTAoeCkJCSgweDY4MDQgKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NMSVBfU0laRTEoeCkJ CSgweDY4MDggKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NMSVBfU0laRTIoeCkJCSgweDY4 MEMgKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NMSVBfQ0ZHX09LKHgpCQkoMHg2ODEwICsg KHgpICogMHgxMDApCisvKiBzY2FsZSByZWdzICovCisjZGVmaW5lIEFERV9TQ0wxX01VWF9DRkcJ CTB4MDAwQworI2RlZmluZSBBREVfU0NMMl9TUkNfQ0ZHCQkweDAwMTQKKyNkZWZpbmUgQURFX1ND TDNfTVVYX0NGRwkJMHgwMDA4CisjZGVmaW5lIEFERV9TQ0xfQ1RSTCh4KQkJCSgweDMwMDAgKyAo eCkgKiAweDgwMCkKKyNkZWZpbmUgQURFX1NDTF9IU1AoeCkJCQkoMHgzMDA0ICsgKHgpICogMHg4 MDApCisjZGVmaW5lIEFERV9TQ0xfVVZfSFNQKHgpCQkoMHgzMDA4ICsgKHgpICogMHg4MDApCisj ZGVmaW5lIEFERV9TQ0xfVlNQKHgpCQkJKDB4MzAwQyArICh4KSAqIDB4ODAwKQorI2RlZmluZSBB REVfU0NMX1VWX1ZTUCh4KQkJKDB4MzAxMCArICh4KSAqIDB4ODAwKQorI2RlZmluZSBBREVfU0NM X09SRVMoeCkJCQkoMHgzMDE0ICsgKHgpICogMHg4MDApCisjZGVmaW5lIEFERV9TQ0xfSVJFUyh4 KQkJCSgweDMwMTggKyAoeCkgKiAweDgwMCkKKyNkZWZpbmUgQURFX1NDTF9TVEFSVCh4KQkJKDB4 MzAxQyArICh4KSAqIDB4ODAwKQorI2RlZmluZSBBREVfU0NMX0VSUih4KQkJCSgweDMwMjAgKyAo eCkgKiAweDgwMCkKKyNkZWZpbmUgQURFX1NDTF9QSVhfT0ZTVCh4KQkJKDB4MzAyNCArICh4KSAq IDB4ODAwKQorI2RlZmluZSBBREVfU0NMX1VWX1BJWF9PRlNUKHgpCQkoMHgzMDI4ICsgKHgpICog MHg4MDApCisjZGVmaW5lIEFERV9TQ0xfQ09FRl9DTFIoeCkJCSgweDMwMzAgKyAoeCkgKiAweDgw MCkKKyNkZWZpbmUgQURFX1NDTF9IQ09FRih4LCBtLCBuKQkJKDB4MzEwMCArICh4KSAqIDB4ODAw ICsgXAorCQkJCQkxMiAqIChtKSArIDQgKiAobikpCisjZGVmaW5lIEFERV9TQ0xfVkNPRUYoeCwg aSwgaikJCSgweDM0MEMgKyAoeCkgKiAweDgwMCArIFwKKwkJCQkJMTIgKiAoaSkgKyA0ICogKGop KQorLyogY3RyYW4gcmVncyAqLworI2RlZmluZSBBREVfQ1RSQU41X1RSQU5TX0NGRwkJMHgwMDQw CisjZGVmaW5lIEFERV9DVFJBTl9ESVMoeCkJCSgweDUwMDQgKyAoeCkgKiAweDEwMCkKKyNkZWZp bmUgQ1RSQU5fQllQQVNTX09OCQkJMQorI2RlZmluZSBDVFJBTl9CWVBBU1NfT0ZGCQkwCisjZGVm aW5lIEFERV9DVFJBTl9NT0RFX0NIT09TRSh4KQkoMHg1MDA4ICsgKHgpICogMHgxMDApCisjZGVm aW5lIEFERV9DVFJBTl9TVEFUKHgpCQkoMHg1MDBDICsgKHgpICogMHgxMDApCisjZGVmaW5lIEFE RV9DVFJBTl9DSERDMCh4KQkJKDB4NTAxMCArICh4KSAqIDB4MTAwKQorI2RlZmluZSBBREVfQ1RS QU5fQ0hEQzEoeCkJCSgweDUwMTQgKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NUUkFOX0NI REMyKHgpCQkoMHg1MDE4ICsgKHgpICogMHgxMDApCisjZGVmaW5lIEFERV9DVFJBTl9DSERDMyh4 KQkJKDB4NTAxQyArICh4KSAqIDB4MTAwKQorI2RlZmluZSBBREVfQ1RSQU5fQ0hEQzQoeCkJCSgw eDUwMjAgKyAoeCkgKiAweDEwMCkKKyNkZWZpbmUgQURFX0NUUkFOX0NIREM1KHgpCQkoMHg1MDI0 ICsgKHgpICogMHgxMDApCisjZGVmaW5lIEFERV9DVFJBTl9DU0MwKHgpCQkoMHg1MDI4ICsgKHgp ICogMHgxMDApCisjZGVmaW5lIEFERV9DVFJBTl9DU0MxKHgpCQkoMHg1MDJDICsgKHgpICogMHgx MDApCisjZGVmaW5lIEFERV9DVFJBTl9DU0MyKHgpCQkoMHg1MDMwICsgKHgpICogMHgxMDApCisj ZGVmaW5lIEFERV9DVFJBTl9DU0MzKHgpCQkoMHg1MDM0ICsgKHgpICogMHgxMDApCisjZGVmaW5l IEFERV9DVFJBTl9DU0M0KHgpCQkoMHg1MDM4ICsgKHgpICogMHgxMDApCisjZGVmaW5lIEFERV9D VFJBTl9JTUFHRV9TSVpFKHgpCQkoMHg1MDNDICsgKHgpICogMHgxMDApCisjZGVmaW5lIEFERV9D VFJBTl9DRkdfT0soeCkJCSgweDUwNDAgKyAoeCkgKiAweDEwMCkKKy8qIG92ZXJsYXkgcmVncyAq LworI2RlZmluZSBBREVfT1ZMWV9BTFBIQV9TVAkJMHgyMDAwCisjZGVmaW5lIEFERV9PVkxZX0NI X1hZMCh4KQkJKDB4MjAwNCArICh4KSAqIDQpCisjZGVmaW5lIEFERV9PVkxZX0NIX1hZMSh4KQkJ KDB4MjAyNCArICh4KSAqIDQpCisjZGVmaW5lIEFERV9PVkxZX0NIX0NUTCh4KQkJKDB4MjA0QyAr ICh4KSAqIDQpCisjZGVmaW5lIEFERV9PVkxZX09VVFBVVF9TSVpFKHgpCQkoMHgyMDcwICsgKHgp ICogOCkKKyNkZWZpbmUgT1VUUFVUX1hTSVpFX09GU1QJCTE2CisjZGVmaW5lIEFERV9PVkxZX0JB U0VfQ09MT1IoeCkJCSgweDIwNzQgKyAoeCkgKiA4KQorI2RlZmluZSBBREVfT1ZMWVhfQ1RMKHgp CQkoMHgyMDlDICsgKHgpICogNCkKKyNkZWZpbmUgQURFX09WTFlfQ1RMCQkJMHgwMDk4CisjZGVm aW5lIENIX09WTFlfU0VMX09GU1QoeCkJCSgoeCkgKiA0KQorI2RlZmluZSBDSF9PVkxZX1NFTF9N QVNLCQlNQVNLKDIpCisjZGVmaW5lIENIX09WTFlfU0VMX1ZBTCh4KQkJKCh4KSArIDEpCisjZGVm aW5lIENIX0FMUF9NT0RFX09GU1QJCTAKKyNkZWZpbmUgQ0hfQUxQX1NFTF9PRlNUCQkJMgorI2Rl ZmluZSBDSF9VTkRFUl9BTFBfU0VMX09GU1QJCTQKKyNkZWZpbmUgQ0hfRU5fT0ZTVAkJCTYKKyNk ZWZpbmUgQ0hfQUxQX0dCTF9PRlNUCQkJMTUKKyNkZWZpbmUgQ0hfU0VMX09GU1QJCQkyOAorCisv KgorICogTERJIFJlZ2lzdGVycworICovCisjZGVmaW5lIExESV9IUlpfQ1RSTDAJCQkweDc0MDAK KyNkZWZpbmUgSEJQX09GU1QJCQkyMAorI2RlZmluZSBMRElfSFJaX0NUUkwxCQkJMHg3NDA0Cisj ZGVmaW5lIExESV9WUlRfQ1RSTDAJCQkweDc0MDgKKyNkZWZpbmUgVkJQX09GU1QJCQkyMAorI2Rl ZmluZSBMRElfVlJUX0NUUkwxCQkJMHg3NDBDCisjZGVmaW5lIExESV9QTFJfQ1RSTAkJCTB4NzQx MAorI2RlZmluZSBGTEFHX05WU1lOQwkJCUJJVCgwKQorI2RlZmluZSBGTEFHX05IU1lOQwkJCUJJ VCgxKQorI2RlZmluZSBGTEFHX05QSVhDTEsJCQlCSVQoMikKKyNkZWZpbmUgRkxBR19OREUJCQlC SVQoMykKKyNkZWZpbmUgTERJX0RTUF9TSVpFCQkJMHg3NDE0CisjZGVmaW5lIFZTSVpFX09GU1QJ CQkyMAorI2RlZmluZSBMRElfSU5UX0VOCQkJMHg3NDFDCisjZGVmaW5lIEZSQU1FX0VORF9JTlRf RU5fT0ZTVAkJMQorI2RlZmluZSBMRElfQ1RSTAkJCTB4NzQyMAorI2RlZmluZSBCUFBfT0ZTVAkJ CTMKKyNkZWZpbmUgREFUQV9HQVRFX0VOCQkJQklUKDIpCisjZGVmaW5lIExESV9FTgkJCQlCSVQo MCkKKyNkZWZpbmUgTERJX09SR19JTlQJCQkweDc0MjQKKyNkZWZpbmUgTERJX01TS19JTlQJCQkw eDc0MjgKKyNkZWZpbmUgTERJX0lOVF9DTFIJCQkweDc0MkMKKyNkZWZpbmUgTERJX1dPUktfTU9E RQkJCTB4NzQzMAorI2RlZmluZSBMRElfREVfU1BBQ0VfTE9XCQkweDc0MzgKKyNkZWZpbmUgTERJ X01DVV9JTlRTCQkJMHg3NDUwCisjZGVmaW5lIExESV9NQ1VfSU5URQkJCTB4NzQ1NAorI2RlZmlu ZSBMRElfTUNVX0lOVEMJCQkweDc0NTgKKyNkZWZpbmUgTERJX0hETUlfRFNJX0dUCQkJMHg3NDM0 CisKKy8qCisgKiBtZWRpYSByZWdzCisgKi8KKyNkZWZpbmUgU0NfTUVESUFfUlNURElTCQkJCTB4 MDUzMAorI2RlZmluZSBTQ19NRURJQV9SU1RFTgkJCQkweDA1MkMKKyNkZWZpbmUgTk9DX0FERTBf UU9TR0VORVJBVE9SX01PREUJCTB4MDEwQworI2RlZmluZSBOT0NfQURFMF9RT1NHRU5FUkFUT1Jf RVhUQ09OVFJPTAkweDAxMTgKKyNkZWZpbmUgTk9DX0FERTFfUU9TR0VORVJBVE9SX01PREUJCTB4 MDIwQworI2RlZmluZSBOT0NfQURFMV9RT1NHRU5FUkFUT1JfRVhUQ09OVFJPTAkweDAyMTgKKwor LyoKKyAqIEFERSByZWdzIHJlbGV2YW50IGVudW1zCisgKi8KK2VudW0gZnJhbWVfZW5kX3N0YXJ0 IHsKKwkvKiByZWdzIHRha2UgZWZmZWN0aXZlIGluIGV2ZXJ5IHZzeW5jICovCisJUkVHX0VGRkVD VElWRV9JTl9WU1lOQyA9IDAsCisJLyogcmVncyB0YWtlIGVmZmVjdGl2ZSBpbiBmaXN0IGFkZSBl biBhbmQgZXZlcnkgZnJhbWUgZW5kICovCisJUkVHX0VGRkVDVElWRV9JTl9BREVFTl9GUk1FTkQs CisJLyogcmVncyB0YWtlIGVmZmVjdGl2ZSBpbiBhZGUgZW4gaW1tZWRpYXRlbHkgKi8KKwlSRUdf RUZGRUNUSVZFX0lOX0FERUVOLAorCS8qIHJlZ3MgdGFrZSBlZmZlY3RpdmUgaW4gZmlyc3QgdnN5 bmMgYW5kIGV2ZXJ5IGZyYW1lIGVuZCAqLworCVJFR19FRkZFQ1RJVkVfSU5fVlNZTkNfRlJNRU5E Cit9OworCitlbnVtIGFkZV9mYl9mb3JtYXQgeworCUFERV9SR0JfNTY1ID0gMCwKKwlBREVfQkdS XzU2NSwKKwlBREVfWFJHQl84ODg4LAorCUFERV9YQkdSXzg4ODgsCisJQURFX0FSR0JfODg4OCwK KwlBREVfQUJHUl84ODg4LAorCUFERV9SR0JBXzg4ODgsCisJQURFX0JHUkFfODg4OCwKKwlBREVf UkdCXzg4OCwKKwlBREVfQkdSXzg4OCA9IDksCisJQURFX0ZPUk1BVF9OT1RfU1VQUE9SVCA9IDgw MAorfTsKKworZW51bSBhZGVfY2hhbm5lbCB7CisJQURFX0NIMSA9IDAsCS8qIGNoYW5uZWwgMSBm b3IgcHJpbWFyeSBwbGFuZSAqLworCUFERV9DSF9OVU0KK307CisKK2VudW0gYWRlX3NjYWxlIHsK KwlBREVfU0NMMSA9IDAsCisJQURFX1NDTDIsCisJQURFX1NDTDMsCisJQURFX1NDTF9OVU0KK307 CisKK2VudW0gYWRlX2N0cmFuIHsKKwlBREVfQ1RSQU4xID0gMCwKKwlBREVfQ1RSQU4yLAorCUFE RV9DVFJBTjMsCisJQURFX0NUUkFONCwKKwlBREVfQ1RSQU41LAorCUFERV9DVFJBTjYsCisJQURF X0NUUkFOX05VTQorfTsKKworZW51bSBhZGVfb3ZlcmxheSB7CisJQURFX09WTFkxID0gMCwKKwlB REVfT1ZMWTIsCisJQURFX09WTFkzLAorCUFERV9PVkxZX05VTQorfTsKKworZW51bSBhZGVfYWxw aGFfbW9kZSB7CisJQURFX0FMUF9HTE9CQUwgPSAwLAorCUFERV9BTFBfUElYRUwsCisJQURFX0FM UF9QSVhFTF9BTkRfR0xCCit9OworCitlbnVtIGFkZV9hbHBoYV9ibGVuZGluZ19tb2RlIHsKKwlB REVfQUxQX01VTF9DT0VGRl8wID0gMCwJLyogYWxwaGEgKi8KKwlBREVfQUxQX01VTF9DT0VGRl8x LAkJLyogMS1hbHBoYSAqLworCUFERV9BTFBfTVVMX0NPRUZGXzIsCQkvKiAwICovCisJQURFX0FM UF9NVUxfQ09FRkZfMwkJLyogMSAqLworfTsKKworLyoKKyAqIExESSByZWdzIHJlbGV2YW50IGVu dW1zCisgKi8KK2VudW0gZHNpX3BjbGtfZW4geworCURTSV9QQ0xLX09OID0gMCwKKwlEU0lfUENM S19PRkYKK307CisKK2VudW0gbGRpX291dHB1dF9mb3JtYXQgeworCUxESV9PVVRfUkdCXzU2NSA9 IDAsCisJTERJX09VVF9SR0JfNjY2LAorCUxESV9PVVRfUkdCXzg4OAorfTsKKworZW51bSBsZGlf d29ya19tb2RlIHsKKwlURVNUX01PREUgPSAwLAorCU5PUk1BTF9NT0RFCit9OworCitlbnVtIGxk aV9pbnB1dF9zb3VyY2UgeworCURJU1BfU1JDX05PTkUgPSAwLAorCURJU1BfU1JDX09WTFkyLAor CURJU1BfU1JDX0RJU1AsCisJRElTUF9TUkNfUk9ULAorCURJU1BfU1JDX1NDTDIKK307CisKKy8q CisgKiBSZWdpc3RlciBXcml0ZS9SZWFkIEhlbHBlciBmdW5jdGlvbnMKKyAqLworc3RhdGljIGlu bGluZSB2b2lkIGFkZV91cGRhdGVfYml0cyh2b2lkIF9faW9tZW0gKmFkZHIsIHUzMiBiaXRfc3Rh cnQsCisJCQkJICAgdTMyIG1hc2ssIHUzMiB2YWwpCit7CisJdTMyIHRtcCwgb3JpZzsKKworCW9y aWcgPSByZWFkbChhZGRyKTsKKwl0bXAgPSBvcmlnICYgfihtYXNrIDw8IGJpdF9zdGFydCk7CisJ dG1wIHw9ICh2YWwgJiBtYXNrKSA8PCBiaXRfc3RhcnQ7CisJd3JpdGVsKHRtcCwgYWRkcik7Cit9 CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9r aXJpbl9kcm1fYWRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2Ry bV9hZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI0NTE0OTYx NjcxNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4v a2lyaW5fZHJtX2FkZS5jCkBAIC0wLDAgKzEsNDU4IEBACisvKgorICogSGlzaWxpY29uIEhpNjIy MCBTb0MgQURFKEFkdmFuY2VkIERpc3BsYXkgRW5naW5lKSdzIGNydGMmcGxhbmUgZHJpdmVyCisg KgorICogQ29weXJpZ2h0IChjKSAyMDE2IExpbmFybyBMaW1pdGVkLgorICogQ29weXJpZ2h0IChj KSAyMDE0LTIwMTYgSGlzaWxpY29uIExpbWl0ZWQuCisgKgorICogQXV0aG9yOgorICoJWGlubGlh bmcgTGl1IDx6LmxpdXhpbmxpYW5nQGhpc2lsaWNvbi5jb20+CisgKglYaW5saWFuZyBMaXUgPHhp bmxpYW5nLmxpdUBsaW5hcm8ub3JnPgorICoJWGlud2VpIEtvbmcgPGtvbmcua29uZ3hpbndlaUBo aXNpbGljb24uY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpbmNsdWRl IDxsaW51eC9iaXRvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDx2aWRl by9kaXNwbGF5X3RpbWluZy5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KworI2luY2x1ZGUgImtpcmluX2RybV9kcnYuaCIKKyNpbmNsdWRlICJraXJpbl9hZGVfcmVnLmgi CisKKyNkZWZpbmUgdG9fYWRlX2NydGMoY3J0YykgXAorCWNvbnRhaW5lcl9vZihjcnRjLCBzdHJ1 Y3QgYWRlX2NydGMsIGJhc2UpCisKK3N0cnVjdCBhZGVfaHdfY3R4IHsKKwl2b2lkIF9faW9tZW0g ICpiYXNlOworCXZvaWQgX19pb21lbSAgKm1lZGlhX2Jhc2U7CisJdm9pZCBfX2lvbWVtICAqbWVk aWFfbm9jX2Jhc2U7CisJaW50IGlycTsKKwlzdHJ1Y3QgY2xrICphZGVfY29yZV9jbGs7CisJc3Ry dWN0IGNsayAqbWVkaWFfbm9jX2NsazsKKwlzdHJ1Y3QgY2xrICphZGVfcGl4X2NsazsKKwlib29s IHBvd2VyX29uOworfTsKKworc3RydWN0IGFkZV9jcnRjIHsKKwlzdHJ1Y3QgZHJtX2NydGMgYmFz ZTsKKwlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4OworCWJvb2wgZW5hYmxlOworCXUzMiBvdXRfZm9y bWF0OworfTsKKworc3RydWN0IGFkZV9kYXRhIHsKKwlzdHJ1Y3QgYWRlX2NydGMgYWNydGM7CisJ c3RydWN0IGFkZV9od19jdHggY3R4OworfTsKKworc3RhdGljIHZvaWQgYWRlX3VwZGF0ZV9yZWxv YWRfYml0KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGJpdF9udW0sIHUzMiB2YWwpCit7CisJdTMy IGJpdF9vZnN0LCByZWdfbnVtOworCisJYml0X29mc3QgPSBiaXRfbnVtICUgMzI7CisJcmVnX251 bSA9IGJpdF9udW0gLyAzMjsKKworCWFkZV91cGRhdGVfYml0cyhiYXNlICsgQURFX1JFTE9BRF9E SVMocmVnX251bSksIGJpdF9vZnN0LAorCQkJTUFTSygxKSwgISF2YWwpOworfQorCitzdGF0aWMg dTMyIGFkZV9yZWFkX3JlbG9hZF9iaXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgYml0X251bSkK K3sKKwl1MzIgdG1wLCBiaXRfb2ZzdCwgcmVnX251bTsKKworCWJpdF9vZnN0ID0gYml0X251bSAl IDMyOworCXJlZ19udW0gPSBiaXRfbnVtIC8gMzI7CisKKwl0bXAgPSByZWFkbChiYXNlICsgQURF X1JFTE9BRF9ESVMocmVnX251bSkpOworCXJldHVybiAhIShCSVQoYml0X29mc3QpICYgdG1wKTsK K30KKworc3RhdGljIHZvaWQgYWRlX2luaXQoc3RydWN0IGFkZV9od19jdHggKmN0eCkKK3sKKwl2 b2lkIF9faW9tZW0gKmJhc2UgPSBjdHgtPmJhc2U7CisKKwkvKiBlbmFibGUgY2xrIGdhdGUgKi8K KwlhZGVfdXBkYXRlX2JpdHMoYmFzZSArIEFERV9DVFJMMSwgQVVUT19DTEtfR0FURV9FTl9PRlNU LAorCQkJQVVUT19DTEtfR0FURV9FTiwgQURFX0VOQUJMRSk7CisJLyogY2xlYXIgb3ZlcmxheSAq LworCXdyaXRlbCgwLCBiYXNlICsgQURFX09WTFkxX1RSQU5TX0NGRyk7CisJd3JpdGVsKDAsIGJh c2UgKyBBREVfT1ZMWV9DVEwpOworCXdyaXRlbCgwLCBiYXNlICsgQURFX09WTFlYX0NUTChBREVf T1ZMWTIpKTsKKwkvKiBjbGVhciByZXNldCBhbmQgcmVsb2FkIHJlZ3MgKi8KKwl3cml0ZWwoTUFT SygzMiksIGJhc2UgKyBBREVfU09GVF9SU1RfU0VMKDApKTsKKwl3cml0ZWwoTUFTSygzMiksIGJh c2UgKyBBREVfU09GVF9SU1RfU0VMKDEpKTsKKwl3cml0ZWwoTUFTSygzMiksIGJhc2UgKyBBREVf UkVMT0FEX0RJUygwKSk7CisJd3JpdGVsKE1BU0soMzIpLCBiYXNlICsgQURFX1JFTE9BRF9ESVMo MSkpOworCS8qIGZvciB2aWRlbyBtb2RlLCB0aGF0IGFkZSByZWdpc3RlcnMKKwkgKiBiZWNhbWUg ZWZmZWN0aXZlIGF0IGZyYW1lIGVuZAorCSAqLworCWFkZV91cGRhdGVfYml0cyhiYXNlICsgQURF X0NUUkwsIEZSTV9FTkRfU1RBUlRfT0ZTVCwKKwkJCUZSTV9FTkRfU1RBUlRfTUFTSywgUkVHX0VG RkVDVElWRV9JTl9BREVFTl9GUk1FTkQpOworfQorCitzdGF0aWMgdm9pZCBhZGVfbGRpX3NldF9t b2RlKHN0cnVjdCBhZGVfY3J0YyAqYWNydGMsCisJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqX21vZGUpCit7 CisJc3RydWN0IGFkZV9od19jdHggKmN0eCA9IGFjcnRjLT5jdHg7CisJdm9pZCBfX2lvbWVtICpi YXNlID0gY3R4LT5iYXNlOworCXUzMiB3aWR0aCA9IG1vZGUtPmhkaXNwbGF5OworCXUzMiBoZWln aHQgPSBtb2RlLT52ZGlzcGxheTsKKwl1MzIgaGZwLCBoYnAsIGhzdywgdmZwLCB2YnAsIHZzdzsK Kwl1MzIgcGxyX2ZsYWdzOworCWludCByZXQ7CisKKwlwbHJfZmxhZ3MgPSAobW9kZS0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX05WU1lOQykgPyBGTEFHX05WU1lOQyA6IDA7CisJcGxyX2ZsYWdzIHw9 IChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTkhTWU5DKSA/IEZMQUdfTkhTWU5DIDogMDsK KwloZnAgPSBtb2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNwbGF5OworCWhicCA9IG1vZGUt Pmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloc3cgPSBtb2RlLT5oc3luY19lbmQgLSBtb2Rl LT5oc3luY19zdGFydDsKKwl2ZnAgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZkaXNwbGF5 OworCXZicCA9IG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX2VuZDsKKwl2c3cgPSBtb2RlLT52 c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKKwlpZiAodnN3ID4gMTUpIHsKKwkJRFJNX0RF QlVHX0RSSVZFUigidnN3IGV4Y2VlZGVkIDE1XG4iKTsKKwkJdnN3ID0gMTU7CisJfQorCisJd3Jp dGVsKChoYnAgPDwgSEJQX09GU1QpIHwgaGZwLCBiYXNlICsgTERJX0hSWl9DVFJMMCk7CisJIC8q IHRoZSBjb25maWd1cmVkIHZhbHVlIGlzIGFjdHVhbCB2YWx1ZSAtIDEgKi8KKwl3cml0ZWwoaHN3 IC0gMSwgYmFzZSArIExESV9IUlpfQ1RSTDEpOworCXdyaXRlbCgodmJwIDw8IFZCUF9PRlNUKSB8 IHZmcCwgYmFzZSArIExESV9WUlRfQ1RSTDApOworCSAvKiB0aGUgY29uZmlndXJlZCB2YWx1ZSBp cyBhY3R1YWwgdmFsdWUgLSAxICovCisJd3JpdGVsKHZzdyAtIDEsIGJhc2UgKyBMRElfVlJUX0NU UkwxKTsKKwkgLyogdGhlIGNvbmZpZ3VyZWQgdmFsdWUgaXMgYWN0dWFsIHZhbHVlIC0gMSAqLwor CXdyaXRlbCgoKGhlaWdodCAtIDEpIDw8IFZTSVpFX09GU1QpIHwgKHdpZHRoIC0gMSksCisJICAg ICAgIGJhc2UgKyBMRElfRFNQX1NJWkUpOworCXdyaXRlbChwbHJfZmxhZ3MsIGJhc2UgKyBMRElf UExSX0NUUkwpOworCisJLyogU3VjY2VzcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBpbiBtb2RlX3Zh bGlkIGNhbGwgYmFjaywKKwkgKiBzbyBmYWlsZXIgc2hvdWxkbid0IGhhcHBlbiBoZXJlCisJICov CisJcmV0ID0gY2xrX3NldF9yYXRlKGN0eC0+YWRlX3BpeF9jbGssIG1vZGUtPmNsb2NrICogMTAw MCk7CisJaWYgKHJldCkKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0IHBpeGVsIGNsayAlZEh6 ICglZClcbiIsCisJCQkgIG1vZGUtPmNsb2NrICogMTAwMCwgcmV0KTsKKwlhZGpfbW9kZS0+Y2xv Y2sgPSBjbGtfZ2V0X3JhdGUoY3R4LT5hZGVfcGl4X2NsaykgLyAxMDAwOworCisJLyogY3RyYW42 IHNldHRpbmcgKi8KKwl3cml0ZWwoQ1RSQU5fQllQQVNTX09OLCBiYXNlICsgQURFX0NUUkFOX0RJ UyhBREVfQ1RSQU42KSk7CisJIC8qIHRoZSBjb25maWd1cmVkIHZhbHVlIGlzIGFjdHVhbCB2YWx1 ZSAtIDEgKi8KKwl3cml0ZWwod2lkdGggKiBoZWlnaHQgLSAxLCBiYXNlICsgQURFX0NUUkFOX0lN QUdFX1NJWkUoQURFX0NUUkFONikpOworCWFkZV91cGRhdGVfcmVsb2FkX2JpdChiYXNlLCBDVFJB Tl9PRlNUICsgQURFX0NUUkFONiwgMCk7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJzZXQgbW9kZTog JWR4JWRcbiIsIHdpZHRoLCBoZWlnaHQpOworfQorCitzdGF0aWMgaW50IGFkZV9wb3dlcl91cChz dHJ1Y3QgYWRlX2h3X2N0eCAqY3R4KQoreworCXZvaWQgX19pb21lbSAqbWVkaWFfYmFzZSA9IGN0 eC0+bWVkaWFfYmFzZTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGN0 eC0+bWVkaWFfbm9jX2Nsayk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBl bmFibGUgbWVkaWFfbm9jX2NsayAoJWQpXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwor CXdyaXRlbCgweDIwLCBtZWRpYV9iYXNlICsgU0NfTUVESUFfUlNURElTKTsKKworCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShjdHgtPmFkZV9jb3JlX2Nsayk7CisJaWYgKHJldCkgeworCQlEUk1f RVJST1IoImZhaWxlZCB0byBlbmFibGUgYWRlX2NvcmVfY2xrICglZClcbiIsIHJldCk7CisJCXJl dHVybiByZXQ7CisJfQorCisJYWRlX2luaXQoY3R4KTsKKwljdHgtPnBvd2VyX29uID0gdHJ1ZTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYWRlX3Bvd2VyX2Rvd24oc3RydWN0IGFkZV9o d19jdHggKmN0eCkKK3sKKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBjdHgtPmJhc2U7CisJdm9pZCBf X2lvbWVtICptZWRpYV9iYXNlID0gY3R4LT5tZWRpYV9iYXNlOworCisJd3JpdGVsKEFERV9ESVNB QkxFLCBiYXNlICsgTERJX0NUUkwpOworCS8qIGRzaSBwaXhlbCBvZmYgKi8KKwl3cml0ZWwoRFNJ X1BDTEtfT0ZGLCBiYXNlICsgTERJX0hETUlfRFNJX0dUKTsKKworCWNsa19kaXNhYmxlX3VucHJl cGFyZShjdHgtPmFkZV9jb3JlX2Nsayk7CisJd3JpdGVsKDB4MjAsIG1lZGlhX2Jhc2UgKyBTQ19N RURJQV9SU1RFTik7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGN0eC0+bWVkaWFfbm9jX2Nsayk7 CisJY3R4LT5wb3dlcl9vbiA9IGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBhZGVfc2V0X21lZGlh bm9jX3FvcyhzdHJ1Y3QgYWRlX2NydGMgKmFjcnRjKQoreworCXN0cnVjdCBhZGVfaHdfY3R4ICpj dHggPSBhY3J0Yy0+Y3R4OworCXZvaWQgX19pb21lbSAqYmFzZSA9IGN0eC0+bWVkaWFfbm9jX2Jh c2U7CisJdm9pZCBfX2lvbWVtICpyZWc7CisJdTMyIHZhbDsKKworCXJlZyA9IGJhc2UgKyBOT0Nf QURFMF9RT1NHRU5FUkFUT1JfTU9ERTsKKwl2YWwgPSAocmVhZGwocmVnKSAmIDB4ZmZmZmZmZmMp IHwgMHgyOworCXdyaXRlbCh2YWwsIHJlZyk7CisKKwlyZWcgPSBiYXNlICsgTk9DX0FERTBfUU9T R0VORVJBVE9SX0VYVENPTlRST0w7CisJdmFsID0gcmVhZGwocmVnKSB8IDB4MTsKKwl3cml0ZWwo dmFsLCByZWcpOworCisJcmVnID0gYmFzZSArIE5PQ19BREUxX1FPU0dFTkVSQVRPUl9NT0RFOwor CXZhbCA9IChyZWFkbChyZWcpICYgMHhmZmZmZmZmYykgfCAweDI7CisJd3JpdGVsKHZhbCwgcmVn KTsKKworCXJlZyA9IGJhc2UgKyBOT0NfQURFMV9RT1NHRU5FUkFUT1JfRVhUQ09OVFJPTDsKKwl2 YWwgPSByZWFkbChyZWcpIHwgMHgxOworCXdyaXRlbCh2YWwsIHJlZyk7Cit9CisKK3N0YXRpYyB2 b2lkIGFkZV9kaXNwbGF5X2VuYWJsZShzdHJ1Y3QgYWRlX2NydGMgKmFjcnRjKQoreworCXN0cnVj dCBhZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCXZvaWQgX19pb21lbSAqYmFzZSA9IGN0 eC0+YmFzZTsKKwl1MzIgb3V0X2ZtdCA9IGFjcnRjLT5vdXRfZm9ybWF0OworCisJLyogZGlzcGxh eSBzb3VyY2Ugc2V0dGluZyAqLworCXdyaXRlbChESVNQX1NSQ19PVkxZMiwgYmFzZSArIEFERV9E SVNQX1NSQ19DRkcpOworCisJLyogZW5hYmxlIGFkZSAqLworCXdyaXRlbChBREVfRU5BQkxFLCBi YXNlICsgQURFX0VOKTsKKwkvKiBlbmFibGUgbGRpICovCisJd3JpdGVsKE5PUk1BTF9NT0RFLCBi YXNlICsgTERJX1dPUktfTU9ERSk7CisJd3JpdGVsKChvdXRfZm10IDw8IEJQUF9PRlNUKSB8IERB VEFfR0FURV9FTiB8IExESV9FTiwKKwkgICAgICAgYmFzZSArIExESV9DVFJMKTsKKwkvKiBkc2kg cGl4ZWwgb24gKi8KKwl3cml0ZWwoRFNJX1BDTEtfT04sIGJhc2UgKyBMRElfSERNSV9EU0lfR1Qp OworfQorCitzdGF0aWMgdm9pZCBhZGVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQoreworCXN0cnVjdCBhZGVfY3J0YyAqYWNydGMgPSB0b19hZGVfY3J0YyhjcnRjKTsKKwlzdHJ1 Y3QgYWRlX2h3X2N0eCAqY3R4ID0gYWNydGMtPmN0eDsKKwlpbnQgcmV0OworCisJaWYgKGFjcnRj LT5lbmFibGUpCisJCXJldHVybjsKKworCWlmICghY3R4LT5wb3dlcl9vbikgeworCQlyZXQgPSBh ZGVfcG93ZXJfdXAoY3R4KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybjsKKwl9CisKKwlhZGVfc2V0 X21lZGlhbm9jX3FvcyhhY3J0Yyk7CisJYWRlX2Rpc3BsYXlfZW5hYmxlKGFjcnRjKTsKKwlhY3J0 Yy0+ZW5hYmxlID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgYWRlX2NydGNfZGlzYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9j cnRjKGNydGMpOworCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCisJaWYg KCFhY3J0Yy0+ZW5hYmxlKQorCQlyZXR1cm47CisKKwlhZGVfcG93ZXJfZG93bihjdHgpOworCWFj cnRjLT5lbmFibGUgPSBmYWxzZTsKK30KKworc3RhdGljIGludCBhZGVfY3J0Y19hdG9taWNfY2hl Y2soc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0 YXRlKQoreworCS8qIGRvIG5vdGhpbmcgKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg YWRlX2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0 IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9jcnRjKGNydGMpOworCXN0cnVjdCBhZGVfaHdfY3R4 ICpjdHggPSBhY3J0Yy0+Y3R4OworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNy dGMtPnN0YXRlLT5tb2RlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGpfbW9kZSA9ICZj cnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKKworCWlmICghY3R4LT5wb3dlcl9vbikKKwkJKHZv aWQpYWRlX3Bvd2VyX3VwKGN0eCk7CisJYWRlX2xkaV9zZXRfbW9kZShhY3J0YywgbW9kZSwgYWRq X21vZGUpOworfQorCitzdGF0aWMgdm9pZCBhZGVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRy bV9jcnRjICpjcnRjLAorCQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCit7 CisJc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9jcnRjKGNydGMpOworCXN0cnVjdCBh ZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCisJaWYgKCFjdHgtPnBvd2VyX29uKQorCQko dm9pZClhZGVfcG93ZXJfdXAoY3R4KTsKK30KKworc3RhdGljIHZvaWQgYWRlX2NydGNfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX3N0YXRlKQorCit7CisJc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9jcnRj KGNydGMpOworCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCXZvaWQgX19p b21lbSAqYmFzZSA9IGN0eC0+YmFzZTsKKworCS8qIG9ubHkgY3J0YyBpcyBlYW5ibGVkIHJlZ3Mg dGFrZSBlZmZlY3QgKi8KKwlpZiAoYWNydGMtPmVuYWJsZSkgeworCQkvKiBmbHVzaCBhZGUgcmVn aXRzdGVycyAqLworCQl3cml0ZWwoQURFX0VOQUJMRSwgYmFzZSArIEFERV9FTik7CisJfQorfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBhZGVfY3J0Y19oZWxw ZXJfZnVuY3MgPSB7CisJLmVuYWJsZQkJPSBhZGVfY3J0Y19lbmFibGUsCisJLmRpc2FibGUJPSBh ZGVfY3J0Y19kaXNhYmxlLAorCS5hdG9taWNfY2hlY2sJPSBhZGVfY3J0Y19hdG9taWNfY2hlY2ss CisJLm1vZGVfc2V0X25vZmIJPSBhZGVfY3J0Y19tb2RlX3NldF9ub2ZiLAorCS5hdG9taWNfYmVn aW4JPSBhZGVfY3J0Y19hdG9taWNfYmVnaW4sCisJLmF0b21pY19mbHVzaAk9IGFkZV9jcnRjX2F0 b21pY19mbHVzaCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgYWRl X2NydGNfZnVuY3MgPSB7CisJLmRlc3Ryb3kJPSBkcm1fY3J0Y19jbGVhbnVwLAorCS5zZXRfY29u ZmlnCT0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKKwkucGFnZV9mbGlwCT0gZHJtX2F0 b21pY19oZWxwZXJfcGFnZV9mbGlwLAorCS5yZXNldAkJPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRj X3Jlc2V0LAorCS5zZXRfcHJvcGVydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3NldF9wcm9w ZXJ0eSwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9IGRybV9hdG9taWNfaGVscGVyX2NydGNf ZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZQk9IGRybV9hdG9taWNfaGVs cGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBpbnQgYWRlX2NydGNfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUpCit7CisJc3RydWN0IGtpcmluX2RybV9wcml2YXRlICpwcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnQ7CisJaW50IHJldDsK KworCS8qIHNldCBjcnRjIHBvcnQgc28gdGhhdAorCSAqIGRybV9vZl9maW5kX3Bvc3NpYmxlX2Ny dGNzIGNhbGwgd29ya3MKKwkgKi8KKwlwb3J0ID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5k ZXYtPm9mX25vZGUsICJwb3J0Iik7CisJaWYgKCFwb3J0KSB7CisJCURSTV9FUlJPUigibm8gcG9y dCBub2RlIGZvdW5kIGluICVzXG4iLAorCQkJICBkZXYtPmRldi0+b2Zfbm9kZS0+ZnVsbF9uYW1l KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCW9mX25vZGVfcHV0KHBvcnQpOworCWNydGMtPnBv cnQgPSBwb3J0OworCisJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMs IHBsYW5lLCBOVUxMLAorCQkJCQkmYWRlX2NydGNfZnVuY3MsIE5VTEwpOworCWlmIChyZXQpIHsK KwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBjcnRjLlxuIik7CisJCXJldHVybiByZXQ7CisJ fQorCisJZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmYWRlX2NydGNfaGVscGVyX2Z1bmNzKTsK Kwlwcml2LT5jcnRjW2RybV9jcnRjX2luZGV4KGNydGMpXSA9IGNydGM7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBhZGVfZHRzX3BhcnNlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYsIHN0cnVjdCBhZGVfaHdfY3R4ICpjdHgpCit7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9y ZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sICJhZGVfYmFzZSIpOworCWN0eC0+ YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUihjdHgt PmJhc2UpKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHJlbWFwIGFkZSBpbyBiYXNlXG4iKTsK KwkJcmV0dXJuICBQVFJfRVJSKGN0eC0+YmFzZSk7CisJfQorCisJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgIm1lZGlhX2Jhc2UiKTsKKwlj dHgtPm1lZGlhX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOworCWlmIChJ U19FUlIoY3R4LT5tZWRpYV9iYXNlKSkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byByZW1hcCBt ZWRpYSBpbyBiYXNlXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5tZWRpYV9iYXNlKTsKKwl9 CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLAorCQkJCQkgICAibWVkaWFfbm9jX2Jhc2UiKTsKKwljdHgtPm1lZGlhX25vY19iYXNlID0g ZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGN0eC0+bWVkaWFf bm9jX2Jhc2UpKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHJlbWFwIG1lZGlhIG5vYyBiYXNl XG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5tZWRpYV9ub2NfYmFzZSk7CisJfQorCisJY3R4 LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChjdHgtPmlycSA8IDApIHsK KwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGlycVxuIik7CisJCXJldHVybiAtRU5PREVWOwor CX0KKworCWN0eC0+YWRlX2NvcmVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImNsa19hZGVfY29y ZSIpOworCWlmICghY3R4LT5hZGVfY29yZV9jbGspIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g cGFyc2UgY2xrIEFERV9DT1JFXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJY3R4LT5t ZWRpYV9ub2NfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImNsa19jb2RlY19qcGVnIik7CisJaWYg KCFjdHgtPm1lZGlhX25vY19jbGspIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGFyc2UgY2xr IENPREVDX0pQRUdcbiIpOworCSAgICByZXR1cm4gLUVOT0RFVjsKKwl9CisKKwljdHgtPmFkZV9w aXhfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImNsa19hZGVfcGl4Iik7CisJaWYgKCFjdHgtPmFk ZV9waXhfY2xrKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBhcnNlIGNsayBBREVfUElYXG4i KTsKKwkgICAgcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBhZGVf ZHJtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2ID0gZGV2LT5wbGF0Zm9ybWRldjsKKwlzdHJ1Y3QgYWRlX2RhdGEgKmFkZTsKKwlz dHJ1Y3QgYWRlX2h3X2N0eCAqY3R4OworCXN0cnVjdCBhZGVfY3J0YyAqYWNydGM7CisJaW50IHJl dDsKKworCWFkZSA9IGRldm1fa3phbGxvYyhkZXYtPmRldiwgc2l6ZW9mKCphZGUpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIWFkZSkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvYyBhZGVfZGF0 YVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCBhZGUpOworCisJY3R4ID0gJmFkZS0+Y3R4OworCWFjcnRjID0gJmFkZS0+YWNydGM7CisJYWNy dGMtPmN0eCA9IGN0eDsKKwlhY3J0Yy0+b3V0X2Zvcm1hdCA9IExESV9PVVRfUkdCXzg4ODsKKwor CXJldCA9IGFkZV9kdHNfcGFyc2UocGRldiwgY3R4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgYWRlX2RybV9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+cGxhdGZv cm1kZXY7CisJc3RydWN0IGFkZV9kYXRhICphZGUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2 KTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmYWRlLT5hY3J0Yy5iYXNlOworCisJZHJtX2Ny dGNfY2xlYW51cChjcnRjKTsKK30KKworY29uc3Qgc3RydWN0IGtpcmluX2RjX29wcyBhZGVfZGNf b3BzID0geworCS5pbml0ID0gYWRlX2RybV9pbml0LAorCS5jbGVhbnVwID0gYWRlX2RybV9jbGVh bnVwCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJp bl9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9k cnYuYwppbmRleCA3ODllYmQxZjU5MjIuLjA1NTcyOWMxODg5YyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fZHJ2LmMKQEAgLTMwLDggKzMwLDEyIEBA IHN0YXRpYyBzdHJ1Y3Qga2lyaW5fZGNfb3BzICpkY19vcHM7CiAKIHN0YXRpYyBpbnQga2lyaW5f ZHJtX2ttc19jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IGtpcmlu X2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwogCWRjX29wcy0+Y2xlYW51 cChkZXYpOwogCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7CisJZGV2bV9rZnJlZShkZXYt PmRldiwgcHJpdik7CisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTU1LDggKzU5LDE0IEBAIHN0YXRpYyB2b2lkIGtpcmluX2RybV9tb2RlX2NvbmZpZ19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQga2lyaW5fZHJtX2ttc19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IGtpcmluX2RybV9wcml2YXRlICpw cml2OwogCWludCByZXQ7CiAKKwlwcml2ID0gZGV2bV9remFsbG9jKGRldi0+ZGV2LCBzaXplb2Yo KnByaXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYpCisJCXJldHVybiAtRU5PTUVNOworCisJ ZGV2LT5kZXZfcHJpdmF0ZSA9IHByaXY7CiAJZGV2X3NldF9kcnZkYXRhKGRldi0+ZGV2LCBkZXYp OwogCiAJLyogZGV2LT5tb2RlX2NvbmZpZyBpbml0aWFsaXphdGlvbiAqLwpAQCAtODQsNiArOTQs OCBAQCBlcnJfZGNfY2xlYW51cDoKIAlkY19vcHMtPmNsZWFudXAoZGV2KTsKIGVycl9tb2RlX2Nv bmZpZ19jbGVhbnVwOgogCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7CisJZGV2bV9rZnJl ZShkZXYtPmRldiwgcHJpdik7CisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CiAKIAlyZXR1cm4g cmV0OwogfQpAQCAtMjIxLDYgKzIzMyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50 X21hc3Rlcl9vcHMga2lyaW5fZHJtX29wcyA9IHsKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGtpcmluX2RybV9kdF9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImhp c2lsaWNvbixoaTYyMjAtYWRlIiwKKwkgIC5kYXRhID0gJmFkZV9kY19vcHMsCisJfSwKIAl7IC8q IGVuZCBub2RlICovIH0sCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwga2lyaW5fZHJtX2R0 X2lkcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmlu X2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2Ry di5oCmluZGV4IDc1ZTlkODIzNTZkNC4uNWEwNWFkNmE4MWRiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9kcnYuaApAQCAtMTEsMTAgKzExLDE4IEBA CiAjaWZuZGVmIF9fS0lSSU5fRFJNX0RSVl9IX18KICNkZWZpbmUgX19LSVJJTl9EUk1fRFJWX0hf XwogCisjZGVmaW5lIE1BWF9DUlRDCTIKKwogLyogZGlzcGxheSBjb250cm9sbGVyIGluaXQvY2xl YW51cCBvcHMgKi8KIHN0cnVjdCBraXJpbl9kY19vcHMgewogCWludCAoKmluaXQpKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwogCXZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIH07CiAKK3N0cnVjdCBraXJpbl9kcm1fcHJpdmF0ZSB7CisJc3RydWN0IGRybV9jcnRjICpj cnRjW01BWF9DUlRDXTsKK307CisKK2V4dGVybiBjb25zdCBzdHJ1Y3Qga2lyaW5fZGNfb3BzIGFk ZV9kY19vcHM7CisKICNlbmRpZiAvKiBfX0tJUklOX0RSTV9EUlZfSF9fICovCi0tIAoxLjkuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK