From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 34/88] drm/amdgpu: add amdgpu.h (v2) Date: Tue, 26 May 2015 23:19:36 -0400 Message-ID: <1432696827-3752-7-git-send-email-alexander.deucher@amd.com> References: <1432696827-3752-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com [209.85.216.182]) by gabe.freedesktop.org (Postfix) with ESMTP id DD23D6E8D2 for ; Tue, 26 May 2015 20:20:40 -0700 (PDT) Received: by qcmi9 with SMTP id i9so9080965qcm.0 for ; Tue, 26 May 2015 20:20:40 -0700 (PDT) In-Reply-To: <1432696827-3752-1-git-send-email-alexander.deucher@amd.com> 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 Cc: Alex Deucher List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyB0aGUgbWFpbiBoZWFkZXIgZmlsZSBmb3IgYW1kZ3B1LgoKdjI6IHJlbW92ZSBzdGFi bGUgY29tbWVudHMKCkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmln QGFtZC5jb20+CkFja2VkLWJ5OiBKYW1teSBaaG91IDxKYW1teS5aaG91QGFtZC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCB8IDIzODcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyMzg3IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNjUyNDZhYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaApAQCAtMCwwICsxLDIzODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAw OCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKiBDb3B5cmlnaHQgMjAwOCBSZWQgSGF0 IEluYy4KKyAqIENvcHlyaWdodCAyMDA5IEplcm9tZSBHbGlzc2UuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRI T1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQXV0aG9yczogRGF2ZSBBaXJsaWUKKyAqICAgICAgICAgIEFsZXggRGV1Y2hlcgorICog ICAgICAgICAgSmVyb21lIEdsaXNzZQorICovCisjaWZuZGVmIF9fQU1ER1BVX0hfXworI2RlZmlu ZSBfX0FNREdQVV9IX18KKworI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgorI2luY2x1ZGUgPGxp bnV4L3dhaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgva3Jl Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVydmFsX3RyZWUuaD4KKyNpbmNsdWRlIDxsaW51eC9o YXNodGFibGUuaD4KKyNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgorCisjaW5jbHVkZSA8dHRtL3R0 bV9ib19hcGkuaD4KKyNpbmNsdWRlIDx0dG0vdHRtX2JvX2RyaXZlci5oPgorI2luY2x1ZGUgPHR0 bS90dG1fcGxhY2VtZW50Lmg+CisjaW5jbHVkZSA8dHRtL3R0bV9tb2R1bGUuaD4KKyNpbmNsdWRl IDx0dG0vdHRtX2V4ZWNidWZfdXRpbC5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KKwor I2luY2x1ZGUgImFtZGdwdV9mYW1pbHkuaCIKKyNpbmNsdWRlICJhbWRncHVfbW9kZS5oIgorI2lu Y2x1ZGUgImFtZGdwdV9paC5oIgorI2luY2x1ZGUgImFtZGdwdV9pcnEuaCIKKyNpbmNsdWRlICJh bWRncHVfdWNvZGUuaCIKKyNpbmNsdWRlICJhbWRncHVfZ2RzLmgiCisKKy8qCisgKiBNb2R1bGVz IHBhcmFtZXRlcnMuCisgKi8KK2V4dGVybiBpbnQgYW1kZ3B1X21vZGVzZXQ7CitleHRlcm4gaW50 IGFtZGdwdV92cmFtX2xpbWl0OworZXh0ZXJuIGludCBhbWRncHVfZ2FydF9zaXplOworZXh0ZXJu IGludCBhbWRncHVfYmVuY2htYXJraW5nOworZXh0ZXJuIGludCBhbWRncHVfdGVzdGluZzsKK2V4 dGVybiBpbnQgYW1kZ3B1X2F1ZGlvOworZXh0ZXJuIGludCBhbWRncHVfZGlzcF9wcmlvcml0eTsK K2V4dGVybiBpbnQgYW1kZ3B1X2h3X2kyYzsKK2V4dGVybiBpbnQgYW1kZ3B1X3BjaWVfZ2VuMjsK K2V4dGVybiBpbnQgYW1kZ3B1X21zaTsKK2V4dGVybiBpbnQgYW1kZ3B1X2xvY2t1cF90aW1lb3V0 OworZXh0ZXJuIGludCBhbWRncHVfZHBtOworZXh0ZXJuIGludCBhbWRncHVfc21jX2xvYWRfZnc7 CitleHRlcm4gaW50IGFtZGdwdV9hc3BtOworZXh0ZXJuIGludCBhbWRncHVfcnVudGltZV9wbTsK K2V4dGVybiBpbnQgYW1kZ3B1X2hhcmRfcmVzZXQ7CitleHRlcm4gdW5zaWduZWQgYW1kZ3B1X2lw X2Jsb2NrX21hc2s7CitleHRlcm4gaW50IGFtZGdwdV9iYXBtOworZXh0ZXJuIGludCBhbWRncHVf ZGVlcF9jb2xvcjsKK2V4dGVybiBpbnQgYW1kZ3B1X3ZtX3NpemU7CitleHRlcm4gaW50IGFtZGdw dV92bV9ibG9ja19zaXplOworCisjZGVmaW5lIEFNREdQVV9NQVhfVVNFQ19USU1FT1VUCQkJMTAw MDAwCS8qIDEwMCBtcyAqLworI2RlZmluZSBBTURHUFVfRkVOQ0VfSklGRklFU19USU1FT1VUCQko SFogLyAyKQorLyogQU1ER1BVX0lCX1BPT0xfU0laRSBtdXN0IGJlIGEgcG93ZXIgb2YgMiAqLwor I2RlZmluZSBBTURHUFVfSUJfUE9PTF9TSVpFCQkJMTYKKyNkZWZpbmUgQU1ER1BVX0RFQlVHRlNf TUFYX0NPTVBPTkVOVFMJCTMyCisjZGVmaW5lIEFNREdQVUZCX0NPTk5fTElNSVQJCQk0CisjZGVm aW5lIEFNREdQVV9CSU9TX05VTV9TQ1JBVENICQkJOAorCisvKiBmZW5jZSBzZXEgYXJlIHNldCB0 byB0aGlzIG51bWJlciB3aGVuIHNpZ25hbGVkICovCisjZGVmaW5lIEFNREdQVV9GRU5DRV9TSUdO QUxFRF9TRVEJCTBMTAorCisvKiBtYXggbnVtYmVyIG9mIHJpbmdzICovCisjZGVmaW5lIEFNREdQ VV9NQVhfUklOR1MJCQkxNgorI2RlZmluZSBBTURHUFVfTUFYX0dGWF9SSU5HUwkJCTEKKyNkZWZp bmUgQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTCQk4CisjZGVmaW5lIEFNREdQVV9NQVhfVkNFX1JJ TkdTCQkJMgorCisvKiBudW1iZXIgb2YgaHcgc3luY3MgYmVmb3JlIGZhbGxpbmcgYmFjayBvbiBi bG9ja2luZyAqLworI2RlZmluZSBBTURHUFVfTlVNX1NZTkNTCQkJNAorCisvKiBoYXJkY29kZSB0 aGF0IGxpbWl0IGZvciBub3cgKi8KKyNkZWZpbmUgQU1ER1BVX1ZBX1JFU0VSVkVEX1NJWkUJCQko OCA8PCAyMCkKKworLyogaGFyZCByZXNldCBkYXRhICovCisjZGVmaW5lIEFNREdQVV9BU0lDX1JF U0VUX0RBVEEgICAgICAgICAgICAgICAgICAweDM5ZDVlODZiCisKKy8qIHJlc2V0IGZsYWdzICov CisjZGVmaW5lIEFNREdQVV9SRVNFVF9HRlgJCQkoMSA8PCAwKQorI2RlZmluZSBBTURHUFVfUkVT RVRfQ09NUFVURQkJCSgxIDw8IDEpCisjZGVmaW5lIEFNREdQVV9SRVNFVF9ETUEJCQkoMSA8PCAy KQorI2RlZmluZSBBTURHUFVfUkVTRVRfQ1AJCQkJKDEgPDwgMykKKyNkZWZpbmUgQU1ER1BVX1JF U0VUX0dSQk0JCQkoMSA8PCA0KQorI2RlZmluZSBBTURHUFVfUkVTRVRfRE1BMQkJCSgxIDw8IDUp CisjZGVmaW5lIEFNREdQVV9SRVNFVF9STEMJCQkoMSA8PCA2KQorI2RlZmluZSBBTURHUFVfUkVT RVRfU0VNCQkJKDEgPDwgNykKKyNkZWZpbmUgQU1ER1BVX1JFU0VUX0lICQkJCSgxIDw8IDgpCisj ZGVmaW5lIEFNREdQVV9SRVNFVF9WTUMJCQkoMSA8PCA5KQorI2RlZmluZSBBTURHUFVfUkVTRVRf TUMJCQkJKDEgPDwgMTApCisjZGVmaW5lIEFNREdQVV9SRVNFVF9ESVNQTEFZCQkJKDEgPDwgMTEp CisjZGVmaW5lIEFNREdQVV9SRVNFVF9VVkQJCQkoMSA8PCAxMikKKyNkZWZpbmUgQU1ER1BVX1JF U0VUX1ZDRQkJCSgxIDw8IDEzKQorI2RlZmluZSBBTURHUFVfUkVTRVRfVkNFMQkJCSgxIDw8IDE0 KQorCisvKiBDRyBibG9jayBmbGFncyAqLworI2RlZmluZSBBTURHUFVfQ0dfQkxPQ0tfR0ZYCQkJ KDEgPDwgMCkKKyNkZWZpbmUgQU1ER1BVX0NHX0JMT0NLX01DCQkJKDEgPDwgMSkKKyNkZWZpbmUg QU1ER1BVX0NHX0JMT0NLX1NETUEJCQkoMSA8PCAyKQorI2RlZmluZSBBTURHUFVfQ0dfQkxPQ0tf VVZECQkJKDEgPDwgMykKKyNkZWZpbmUgQU1ER1BVX0NHX0JMT0NLX1ZDRQkJCSgxIDw8IDQpCisj ZGVmaW5lIEFNREdQVV9DR19CTE9DS19IRFAJCQkoMSA8PCA1KQorI2RlZmluZSBBTURHUFVfQ0df QkxPQ0tfQklGCQkJKDEgPDwgNikKKworLyogQ0cgZmxhZ3MgKi8KKyNkZWZpbmUgQU1ER1BVX0NH X1NVUFBPUlRfR0ZYX01HQ0cJCSgxIDw8IDApCisjZGVmaW5lIEFNREdQVV9DR19TVVBQT1JUX0dG WF9NR0xTCQkoMSA8PCAxKQorI2RlZmluZSBBTURHUFVfQ0dfU1VQUE9SVF9HRlhfQ0dDRwkJKDEg PDwgMikKKyNkZWZpbmUgQU1ER1BVX0NHX1NVUFBPUlRfR0ZYX0NHTFMJCSgxIDw8IDMpCisjZGVm aW5lIEFNREdQVV9DR19TVVBQT1JUX0dGWF9DR1RTCQkoMSA8PCA0KQorI2RlZmluZSBBTURHUFVf Q0dfU1VQUE9SVF9HRlhfQ0dUU19MUwkJKDEgPDwgNSkKKyNkZWZpbmUgQU1ER1BVX0NHX1NVUFBP UlRfR0ZYX0NQX0xTCQkoMSA8PCA2KQorI2RlZmluZSBBTURHUFVfQ0dfU1VQUE9SVF9HRlhfUkxD X0xTCQkoMSA8PCA3KQorI2RlZmluZSBBTURHUFVfQ0dfU1VQUE9SVF9NQ19MUwkJCSgxIDw8IDgp CisjZGVmaW5lIEFNREdQVV9DR19TVVBQT1JUX01DX01HQ0cJCSgxIDw8IDkpCisjZGVmaW5lIEFN REdQVV9DR19TVVBQT1JUX1NETUFfTFMJCSgxIDw8IDEwKQorI2RlZmluZSBBTURHUFVfQ0dfU1VQ UE9SVF9TRE1BX01HQ0cJCSgxIDw8IDExKQorI2RlZmluZSBBTURHUFVfQ0dfU1VQUE9SVF9CSUZf TFMJCSgxIDw8IDEyKQorI2RlZmluZSBBTURHUFVfQ0dfU1VQUE9SVF9VVkRfTUdDRwkJKDEgPDwg MTMpCisjZGVmaW5lIEFNREdQVV9DR19TVVBQT1JUX1ZDRV9NR0NHCQkoMSA8PCAxNCkKKyNkZWZp bmUgQU1ER1BVX0NHX1NVUFBPUlRfSERQX0xTCQkoMSA8PCAxNSkKKyNkZWZpbmUgQU1ER1BVX0NH X1NVUFBPUlRfSERQX01HQ0cJCSgxIDw8IDE2KQorCisvKiBQRyBmbGFncyAqLworI2RlZmluZSBB TURHUFVfUEdfU1VQUE9SVF9HRlhfUEcJCSgxIDw8IDApCisjZGVmaW5lIEFNREdQVV9QR19TVVBQ T1JUX0dGWF9TTUcJCSgxIDw8IDEpCisjZGVmaW5lIEFNREdQVV9QR19TVVBQT1JUX0dGWF9ETUcJ CSgxIDw8IDIpCisjZGVmaW5lIEFNREdQVV9QR19TVVBQT1JUX1VWRAkJCSgxIDw8IDMpCisjZGVm aW5lIEFNREdQVV9QR19TVVBQT1JUX1ZDRQkJCSgxIDw8IDQpCisjZGVmaW5lIEFNREdQVV9QR19T VVBQT1JUX0NQCQkJKDEgPDwgNSkKKyNkZWZpbmUgQU1ER1BVX1BHX1NVUFBPUlRfR0RTCQkJKDEg PDwgNikKKyNkZWZpbmUgQU1ER1BVX1BHX1NVUFBPUlRfUkxDX1NNVV9IUwkJKDEgPDwgNykKKyNk ZWZpbmUgQU1ER1BVX1BHX1NVUFBPUlRfU0RNQQkJCSgxIDw8IDgpCisjZGVmaW5lIEFNREdQVV9Q R19TVVBQT1JUX0FDUAkJCSgxIDw8IDkpCisjZGVmaW5lIEFNREdQVV9QR19TVVBQT1JUX1NBTVUJ CQkoMSA8PCAxMCkKKworLyogR0ZYIGN1cnJlbnQgc3RhdHVzICovCisjZGVmaW5lIEFNREdQVV9H RlhfTk9STUFMX01PREUJCQkweDAwMDAwMDAwTAorI2RlZmluZSBBTURHUFVfR0ZYX1NBRkVfTU9E RQkJCTB4MDAwMDAwMDFMCisjZGVmaW5lIEFNREdQVV9HRlhfUEdfRElTQUJMRURfTU9ERQkJMHgw MDAwMDAwMkwKKyNkZWZpbmUgQU1ER1BVX0dGWF9DR19ESVNBQkxFRF9NT0RFCQkweDAwMDAwMDA0 TAorI2RlZmluZSBBTURHUFVfR0ZYX0xCUFdfRElTQUJMRURfTU9ERQkJMHgwMDAwMDAwOEwKKwor LyogbWF4IGN1cnNvciBzaXplcyAoaW4gcGl4ZWxzKSAqLworI2RlZmluZSBDSUtfQ1VSU09SX1dJ RFRIIDEyOAorI2RlZmluZSBDSUtfQ1VSU09SX0hFSUdIVCAxMjgKKworc3RydWN0IGFtZGdwdV9k ZXZpY2U7CitzdHJ1Y3QgYW1kZ3B1X2ZlbmNlOworc3RydWN0IGFtZGdwdV9pYjsKK3N0cnVjdCBh bWRncHVfdm07CitzdHJ1Y3QgYW1kZ3B1X3Jpbmc7CitzdHJ1Y3QgYW1kZ3B1X3NlbWFwaG9yZTsK K3N0cnVjdCBhbWRncHVfY3NfcGFyc2VyOworc3RydWN0IGFtZGdwdV9pcnFfc3JjOworCitlbnVt IGFtZGdwdV9jcF9pcnEgeworCUFNREdQVV9DUF9JUlFfR0ZYX0VPUCA9IDAsCisJQU1ER1BVX0NQ X0lSUV9DT01QVVRFX01FQzFfUElQRTBfRU9QLAorCUFNREdQVV9DUF9JUlFfQ09NUFVURV9NRUMx X1BJUEUxX0VPUCwKKwlBTURHUFVfQ1BfSVJRX0NPTVBVVEVfTUVDMV9QSVBFMl9FT1AsCisJQU1E R1BVX0NQX0lSUV9DT01QVVRFX01FQzFfUElQRTNfRU9QLAorCUFNREdQVV9DUF9JUlFfQ09NUFVU RV9NRUMyX1BJUEUwX0VPUCwKKwlBTURHUFVfQ1BfSVJRX0NPTVBVVEVfTUVDMl9QSVBFMV9FT1As CisJQU1ER1BVX0NQX0lSUV9DT01QVVRFX01FQzJfUElQRTJfRU9QLAorCUFNREdQVV9DUF9JUlFf Q09NUFVURV9NRUMyX1BJUEUzX0VPUCwKKworCUFNREdQVV9DUF9JUlFfTEFTVAorfTsKKworZW51 bSBhbWRncHVfc2RtYV9pcnEgeworCUFNREdQVV9TRE1BX0lSUV9UUkFQMCA9IDAsCisJQU1ER1BV X1NETUFfSVJRX1RSQVAxLAorCisJQU1ER1BVX1NETUFfSVJRX0xBU1QKK307CisKK2VudW0gYW1k Z3B1X3RoZXJtYWxfaXJxIHsKKwlBTURHUFVfVEhFUk1BTF9JUlFfTE9XX1RPX0hJR0ggPSAwLAor CUFNREdQVV9USEVSTUFMX0lSUV9ISUdIX1RPX0xPVywKKworCUFNREdQVV9USEVSTUFMX0lSUV9M QVNUCit9OworCisvKgorICogSVAgYmxvY2sgZnVuY3Rpb25zCisgKi8KK2VudW0gYW1kZ3B1X2lw X2Jsb2NrX3R5cGUgeworCUFNREdQVV9JUF9CTE9DS19UWVBFX0NPTU1PTiwKKwlBTURHUFVfSVBf QkxPQ0tfVFlQRV9HTUMsCisJQU1ER1BVX0lQX0JMT0NLX1RZUEVfSUgsCisJQU1ER1BVX0lQX0JM T0NLX1RZUEVfU01DLAorCUFNREdQVV9JUF9CTE9DS19UWVBFX0RDRSwKKwlBTURHUFVfSVBfQkxP Q0tfVFlQRV9HRlgsCisJQU1ER1BVX0lQX0JMT0NLX1RZUEVfU0RNQSwKKwlBTURHUFVfSVBfQkxP Q0tfVFlQRV9VVkQsCisJQU1ER1BVX0lQX0JMT0NLX1RZUEVfVkNFLAorfTsKKworZW51bSBhbWRn cHVfY2xvY2tnYXRpbmdfc3RhdGUgeworCUFNREdQVV9DR19TVEFURV9HQVRFID0gMCwKKwlBTURH UFVfQ0dfU1RBVEVfVU5HQVRFLAorfTsKKworZW51bSBhbWRncHVfcG93ZXJnYXRpbmdfc3RhdGUg eworCUFNREdQVV9QR19TVEFURV9HQVRFID0gMCwKKwlBTURHUFVfUEdfU1RBVEVfVU5HQVRFLAor fTsKKworc3RydWN0IGFtZGdwdV9pcF9mdW5jcyB7CisJLyogc2V0cyB1cCBlYXJseSBkcml2ZXIg c3RhdGUgKHByZSBzd19pbml0KSwgZG9lcyBub3QgY29uZmlndXJlIGh3IC0gT3B0aW9uYWwgKi8K KwlpbnQgKCplYXJseV9pbml0KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJLyogc2V0 cyB1cCBsYXRlIGRyaXZlci9odyBzdGF0ZSAocG9zdCBod19pbml0KSAtIE9wdGlvbmFsICovCisJ aW50ICgqbGF0ZV9pbml0KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJLyogc2V0cyB1 cCBkcml2ZXIgc3RhdGUsIGRvZXMgbm90IGNvbmZpZ3VyZSBodyAqLworCWludCAoKnN3X2luaXQp KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwkvKiB0ZWFycyBkb3duIGRyaXZlciBzdGF0 ZSwgZG9lcyBub3QgY29uZmlndXJlIGh3ICovCisJaW50ICgqc3dfZmluaSkoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpOworCS8qIHNldHMgdXAgdGhlIGh3IHN0YXRlICovCisJaW50ICgqaHdf aW5pdCkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCS8qIHRlYXJzIGRvd24gdGhlIGh3 IHN0YXRlICovCisJaW50ICgqaHdfZmluaSkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwor CS8qIGhhbmRsZXMgSVAgc3BlY2lmaWMgaHcvc3cgY2hhbmdlcyBmb3Igc3VzcGVuZCAqLworCWlu dCAoKnN1c3BlbmQpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwkvKiBoYW5kbGVzIElQ IHNwZWNpZmljIGh3L3N3IGNoYW5nZXMgZm9yIHJlc3VtZSAqLworCWludCAoKnJlc3VtZSkoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCS8qIHJldHVybnMgY3VycmVudCBJUCBibG9jayBp ZGxlIHN0YXR1cyAqLworCWJvb2wgKCppc19pZGxlKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dik7CisJLyogcG9sbCBmb3IgaWRsZSAqLworCWludCAoKndhaXRfZm9yX2lkbGUpKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KTsKKwkvKiBzb2Z0IHJlc2V0IHRoZSBJUCBibG9jayAqLworCWlu dCAoKnNvZnRfcmVzZXQpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwkvKiBkdW1wIHRo ZSBJUCBibG9jayBzdGF0dXMgcmVnaXN0ZXJzICovCisJdm9pZCAoKnByaW50X3N0YXR1cykoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCS8qIGVuYWJsZS9kaXNhYmxlIGNnIGZvciB0aGUg SVAgYmxvY2sgKi8KKwlpbnQgKCpzZXRfY2xvY2tnYXRpbmdfc3RhdGUpKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAorCQkJCSAgICAgZW51bSBhbWRncHVfY2xvY2tnYXRpbmdfc3RhdGUgc3Rh dGUpOworCS8qIGVuYWJsZS9kaXNhYmxlIHBnIGZvciB0aGUgSVAgYmxvY2sgKi8KKwlpbnQgKCpz ZXRfcG93ZXJnYXRpbmdfc3RhdGUpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCSAg ICAgZW51bSBhbWRncHVfcG93ZXJnYXRpbmdfc3RhdGUgc3RhdGUpOworfTsKKworaW50IGFtZGdw dV9zZXRfY2xvY2tnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJ ICBlbnVtIGFtZGdwdV9pcF9ibG9ja190eXBlIGJsb2NrX3R5cGUsCisJCQkJICBlbnVtIGFtZGdw dV9jbG9ja2dhdGluZ19zdGF0ZSBzdGF0ZSk7CitpbnQgYW1kZ3B1X3NldF9wb3dlcmdhdGluZ19z dGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkgIGVudW0gYW1kZ3B1X2lwX2Js b2NrX3R5cGUgYmxvY2tfdHlwZSwKKwkJCQkgIGVudW0gYW1kZ3B1X3Bvd2VyZ2F0aW5nX3N0YXRl IHN0YXRlKTsKKworc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIHsKKwllbnVtIGFtZGdw dV9pcF9ibG9ja190eXBlIHR5cGU7CisJdTMyIG1ham9yOworCXUzMiBtaW5vcjsKKwl1MzIgcmV2 OworCWNvbnN0IHN0cnVjdCBhbWRncHVfaXBfZnVuY3MgKmZ1bmNzOworfTsKKworaW50IGFtZGdw dV9pcF9ibG9ja192ZXJzaW9uX2NtcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQll bnVtIGFtZGdwdV9pcF9ibG9ja190eXBlIHR5cGUsCisJCQkJdTMyIG1ham9yLCB1MzIgbWlub3Ip OworCitjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gKiBhbWRncHVfZ2V0X2lw X2Jsb2NrKAorCQkJCQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJZW51bSBhbWRn cHVfaXBfYmxvY2tfdHlwZSB0eXBlKTsKKworLyogcHJvdmlkZWQgYnkgaHcgYmxvY2tzIHRoYXQg Y2FuIG1vdmUvY2xlYXIgZGF0YS4gIGUuZy4sIGdmeCBvciBzZG1hICovCitzdHJ1Y3QgYW1kZ3B1 X2J1ZmZlcl9mdW5jcyB7CisJLyogbWF4aW11bSBieXRlcyBpbiBhIHNpbmdsZSBvcGVyYXRpb24g Ki8KKwl1aW50MzJfdAljb3B5X21heF9ieXRlczsKKworCS8qIG51bWJlciBvZiBkdyB0byByZXNl cnZlIHBlciBvcGVyYXRpb24gKi8KKwl1bnNpZ25lZAljb3B5X251bV9kdzsKKworCS8qIHVzZWQg Zm9yIGJ1ZmZlciBtaWdyYXRpb24gKi8KKwl2b2lkICgqZW1pdF9jb3B5X2J1ZmZlcikoc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLAorCQkJCSAvKiBzcmMgYWRkciBpbiBieXRlcyAqLworCQkJCSB1 aW50NjRfdCBzcmNfb2Zmc2V0LAorCQkJCSAvKiBkc3QgYWRkciBpbiBieXRlcyAqLworCQkJCSB1 aW50NjRfdCBkc3Rfb2Zmc2V0LAorCQkJCSAvKiBudW1iZXIgb2YgYnl0ZSB0byB0cmFuc2ZlciAq LworCQkJCSB1aW50MzJfdCBieXRlX2NvdW50KTsKKworCS8qIG1heGltdW0gYnl0ZXMgaW4gYSBz aW5nbGUgb3BlcmF0aW9uICovCisJdWludDMyX3QJZmlsbF9tYXhfYnl0ZXM7CisKKwkvKiBudW1i ZXIgb2YgZHcgdG8gcmVzZXJ2ZSBwZXIgb3BlcmF0aW9uICovCisJdW5zaWduZWQJZmlsbF9udW1f ZHc7CisKKwkvKiB1c2VkIGZvciBidWZmZXIgY2xlYXJpbmcgKi8KKwl2b2lkICgqZW1pdF9maWxs X2J1ZmZlcikoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAorCQkJCSAvKiB2YWx1ZSB0byB3cml0 ZSB0byBtZW1vcnkgKi8KKwkJCQkgdWludDMyX3Qgc3JjX2RhdGEsCisJCQkJIC8qIGRzdCBhZGRy IGluIGJ5dGVzICovCisJCQkJIHVpbnQ2NF90IGRzdF9vZmZzZXQsCisJCQkJIC8qIG51bWJlciBv ZiBieXRlIHRvIGZpbGwgKi8KKwkJCQkgdWludDMyX3QgYnl0ZV9jb3VudCk7Cit9OworCisvKiBw cm92aWRlZCBieSBodyBibG9ja3MgdGhhdCBjYW4gd3JpdGUgcHRlcywgZS5nLiwgc2RtYSAqLwor c3RydWN0IGFtZGdwdV92bV9wdGVfZnVuY3MgeworCS8qIGNvcHkgcHRlIGVudHJpZXMgZnJvbSBH QVJUICovCisJdm9pZCAoKmNvcHlfcHRlKShzdHJ1Y3QgYW1kZ3B1X2liICppYiwKKwkJCSB1aW50 NjRfdCBwZSwgdWludDY0X3Qgc3JjLAorCQkJIHVuc2lnbmVkIGNvdW50KTsKKwkvKiB3cml0ZSBw dGUgb25lIGVudHJ5IGF0IGEgdGltZSB3aXRoIGFkZHIgbWFwcGluZyAqLworCXZvaWQgKCp3cml0 ZV9wdGUpKHN0cnVjdCBhbWRncHVfaWIgKmliLAorCQkJICB1aW50NjRfdCBwZSwKKwkJCSAgdWlu dDY0X3QgYWRkciwgdW5zaWduZWQgY291bnQsCisJCQkgIHVpbnQzMl90IGluY3IsIHVpbnQzMl90 IGZsYWdzKTsKKwkvKiBmb3IgbGluZWFyIHB0ZS9wZGUgdXBkYXRlcyB3aXRob3V0IGFkZHIgbWFw cGluZyAqLworCXZvaWQgKCpzZXRfcHRlX3BkZSkoc3RydWN0IGFtZGdwdV9pYiAqaWIsCisJCQkg ICAgdWludDY0X3QgcGUsCisJCQkgICAgdWludDY0X3QgYWRkciwgdW5zaWduZWQgY291bnQsCisJ CQkgICAgdWludDMyX3QgaW5jciwgdWludDMyX3QgZmxhZ3MpOworCS8qIHBhZCB0aGUgaW5kaXJl Y3QgYnVmZmVyIHRvIHRoZSBuZWNlc3NhcnkgbnVtYmVyIG9mIGR3ICovCisJdm9pZCAoKnBhZF9p Yikoc3RydWN0IGFtZGdwdV9pYiAqaWIpOworfTsKKworLyogcHJvdmlkZWQgYnkgdGhlIGdtYyBi bG9jayAqLworc3RydWN0IGFtZGdwdV9nYXJ0X2Z1bmNzIHsKKwkvKiBmbHVzaCB0aGUgdm0gdGxi IHZpYSBtbWlvICovCisJdm9pZCAoKmZsdXNoX2dwdV90bGIpKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAorCQkJICAgICAgdWludDMyX3Qgdm1pZCk7CisJLyogd3JpdGUgcHRlL3BkZSB1cGRh dGVzIHVzaW5nIHRoZSBjcHUgKi8KKwlpbnQgKCpzZXRfcHRlX3BkZSkoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCisJCQkgICB2b2lkICpjcHVfcHRfYWRkciwgLyogY3B1IGFkZHIgb2YgcGFn ZSB0YWJsZSAqLworCQkJICAgdWludDMyX3QgZ3B1X3BhZ2VfaWR4LCAvKiBwdGUvcGRlIHRvIHVw ZGF0ZSAqLworCQkJICAgdWludDY0X3QgYWRkciwgLyogYWRkciB0byB3cml0ZSBpbnRvIHB0ZS9w ZGUgKi8KKwkJCSAgIHVpbnQzMl90IGZsYWdzKTsgLyogYWNjZXNzIGZsYWdzICovCit9OworCisv KiBwcm92aWRlZCBieSB0aGUgaWggYmxvY2sgKi8KK3N0cnVjdCBhbWRncHVfaWhfZnVuY3Mgewor CS8qIHJpbmcgcmVhZC93cml0ZSBwdHIgaGFuZGxpbmcsIGNhbGxlZCBmcm9tIGludGVycnVwdCBj b250ZXh0ICovCisJdTMyICgqZ2V0X3dwdHIpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsK Kwl2b2lkICgqZGVjb2RlX2l2KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgc3Ry dWN0IGFtZGdwdV9pdl9lbnRyeSAqZW50cnkpOworCXZvaWQgKCpzZXRfcnB0cikoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpOworfTsKKworLyogcHJvdmlkZWQgYnkgaHcgYmxvY2tzIHRoYXQg ZXhwb3NlIGEgcmluZyBidWZmZXIgZm9yIGNvbW1hbmRzICovCitzdHJ1Y3QgYW1kZ3B1X3Jpbmdf ZnVuY3MgeworCS8qIHJpbmcgcmVhZC93cml0ZSBwdHIgaGFuZGxpbmcgKi8KKwl1MzIgKCpnZXRf cnB0cikoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKKwl1MzIgKCpnZXRfd3B0cikoc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nKTsKKwl2b2lkICgqc2V0X3dwdHIpKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZyk7CisJLyogdmFsaWRhdGluZyBhbmQgcGF0Y2hpbmcgb2YgSUJzICovCisJaW50ICgq cGFyc2VfY3MpKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLCB1aW50MzJfdCBpYl9pZHgpOwor CS8qIGNvbW1hbmQgZW1pdCBmdW5jdGlvbnMgKi8KKwl2b2lkICgqZW1pdF9pYikoc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nLAorCQkJc3RydWN0IGFtZGdwdV9pYiAqaWIpOworCXZvaWQgKCplbWl0 X2ZlbmNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQ2NF90IGFkZHIsCisJCQkgICB1 aW50NjRfdCBzZXEsIGJvb2wgd3JpdGU2NGJpdCk7CisJYm9vbCAoKmVtaXRfc2VtYXBob3JlKShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCisJCQkgICAgICAgc3RydWN0IGFtZGdwdV9zZW1hcGhv cmUgKnNlbWFwaG9yZSwKKwkJCSAgICAgICBib29sIGVtaXRfd2FpdCk7CisJdm9pZCAoKmVtaXRf dm1fZmx1c2gpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgdm1faWQsCisJCQkg ICAgICB1aW50NjRfdCBwZF9hZGRyKTsKKwl2b2lkICgqZW1pdF9nZHNfc3dpdGNoKShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHZtaWQsCisJCQkJdWludDMyX3QgZ2RzX2Jhc2Us IHVpbnQzMl90IGdkc19zaXplLAorCQkJCXVpbnQzMl90IGd3c19iYXNlLCB1aW50MzJfdCBnd3Nf c2l6ZSwKKwkJCQl1aW50MzJfdCBvYV9iYXNlLCB1aW50MzJfdCBvYV9zaXplKTsKKwkvKiB0ZXN0 aW5nIGZ1bmN0aW9ucyAqLworCWludCAoKnRlc3RfcmluZykoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nKTsKKwlpbnQgKCp0ZXN0X2liKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOworCWJvb2wg KCppc19sb2NrdXApKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cit9OworCisvKgorICogQklP Uy4KKyAqLworYm9vbCBhbWRncHVfZ2V0X2Jpb3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp OworYm9vbCBhbWRncHVfcmVhZF9iaW9zKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwor LyoKKyAqIER1bW15IHBhZ2UKKyAqLworc3RydWN0IGFtZGdwdV9kdW1teV9wYWdlIHsKKwlzdHJ1 Y3QgcGFnZQkqcGFnZTsKKwlkbWFfYWRkcl90CWFkZHI7Cit9OworaW50IGFtZGdwdV9kdW1teV9w YWdlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwordm9pZCBhbWRncHVfZHVtbXlf cGFnZV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKworCisvKgorICogQ2xvY2tz CisgKi8KKworI2RlZmluZSBBTURHUFVfTUFYX1BQTEwgMworCitzdHJ1Y3QgYW1kZ3B1X2Nsb2Nr IHsKKwlzdHJ1Y3QgYW1kZ3B1X3BsbCBwcGxsW0FNREdQVV9NQVhfUFBMTF07CisJc3RydWN0IGFt ZGdwdV9wbGwgc3BsbDsKKwlzdHJ1Y3QgYW1kZ3B1X3BsbCBtcGxsOworCS8qIDEwIEtoeiB1bml0 cyAqLworCXVpbnQzMl90IGRlZmF1bHRfbWNsazsKKwl1aW50MzJfdCBkZWZhdWx0X3NjbGs7CisJ dWludDMyX3QgZGVmYXVsdF9kaXNwY2xrOworCXVpbnQzMl90IGN1cnJlbnRfZGlzcGNsazsKKwl1 aW50MzJfdCBkcF9leHRjbGs7CisJdWludDMyX3QgbWF4X3BpeGVsX2Nsb2NrOworfTsKKworLyoK KyAqIEZlbmNlcy4KKyAqLworc3RydWN0IGFtZGdwdV9mZW5jZV9kcml2ZXIgeworCXN0cnVjdCBh bWRncHVfcmluZwkJKnJpbmc7CisJdWludDY0X3QJCQlncHVfYWRkcjsKKwl2b2xhdGlsZSB1aW50 MzJfdAkJKmNwdV9hZGRyOworCS8qIHN5bmNfc2VxIGlzIHByb3RlY3RlZCBieSByaW5nIGVtaXNz aW9uIGxvY2sgKi8KKwl1aW50NjRfdAkJCXN5bmNfc2VxW0FNREdQVV9NQVhfUklOR1NdOworCWF0 b21pYzY0X3QJCQlsYXN0X3NlcTsKKwlib29sCQkJCWluaXRpYWxpemVkOworCWJvb2wJCQkJZGVs YXllZF9pcnE7CisJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQkqaXJxX3NyYzsKKwl1bnNpZ25lZAkJ CWlycV90eXBlOworCXN0cnVjdCBkZWxheWVkX3dvcmsgICAgICAgICAgICAgbG9ja3VwX3dvcms7 Cit9OworCisvKiBzb21lIHNwZWNpYWwgdmFsdWVzIGZvciB0aGUgb3duZXIgZmllbGQgKi8KKyNk ZWZpbmUgQU1ER1BVX0ZFTkNFX09XTkVSX1VOREVGSU5FRAkoKHZvaWQqKTB1bCkKKyNkZWZpbmUg QU1ER1BVX0ZFTkNFX09XTkVSX1ZNCQkoKHZvaWQqKTF1bCkKKyNkZWZpbmUgQU1ER1BVX0ZFTkNF X09XTkVSX01PVkUJCSgodm9pZCopMnVsKQorCitzdHJ1Y3QgYW1kZ3B1X2ZlbmNlIHsKKwlzdHJ1 Y3QgZmVuY2UgYmFzZTsKKworCS8qIFJCLCBETUEsIGV0Yy4gKi8KKwlzdHJ1Y3QgYW1kZ3B1X3Jp bmcJCSpyaW5nOworCXVpbnQ2NF90CQkJc2VxOworCisJLyogZmlscCBvciBzcGVjaWFsIHZhbHVl IGZvciBmZW5jZSBjcmVhdG9yICovCisJdm9pZAkJCQkqb3duZXI7CisKKwl3YWl0X3F1ZXVlX3QJ CQlmZW5jZV93YWtlOworfTsKKworc3RydWN0IGFtZGdwdV91c2VyX2ZlbmNlIHsKKwkvKiB3cml0 ZS1iYWNrIGJvICovCisJc3RydWN0IGFtZGdwdV9ibyAJKmJvOworCS8qIHdyaXRlLWJhY2sgYWRk cmVzcyBvZmZzZXQgdG8gYm8gc3RhcnQgKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICBvZmZz ZXQ7Cit9OworCitpbnQgYW1kZ3B1X2ZlbmNlX2RyaXZlcl9pbml0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KTsKK3ZvaWQgYW1kZ3B1X2ZlbmNlX2RyaXZlcl9maW5pKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KTsKK3ZvaWQgYW1kZ3B1X2ZlbmNlX2RyaXZlcl9mb3JjZV9jb21wbGV0aW9u KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwordm9pZCBhbWRncHVfZmVuY2VfZHJpdmVy X2luaXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOworaW50IGFtZGdwdV9mZW5jZV9k cml2ZXJfc3RhcnRfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCisJCQkJICAgc3RydWN0 IGFtZGdwdV9pcnFfc3JjICppcnFfc3JjLAorCQkJCSAgIHVuc2lnbmVkIGlycV90eXBlKTsKK2lu dCBhbWRncHVfZmVuY2VfZW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHZvaWQgKm93bmVy LAorCQkgICAgICBzdHJ1Y3QgYW1kZ3B1X2ZlbmNlICoqZmVuY2UpOwordm9pZCBhbWRncHVfZmVu Y2VfcHJvY2VzcyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOworaW50IGFtZGdwdV9mZW5jZV93 YWl0X25leHQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKK2ludCBhbWRncHVfZmVuY2Vfd2Fp dF9lbXB0eShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwordW5zaWduZWQgYW1kZ3B1X2ZlbmNl X2NvdW50X2VtaXR0ZWQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKKworYm9vbCBhbWRncHVf ZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGFtZGdwdV9mZW5jZSAqZmVuY2UpOworaW50IGFtZGdwdV9m ZW5jZV93YWl0KHN0cnVjdCBhbWRncHVfZmVuY2UgKmZlbmNlLCBib29sIGludGVycnVwdGlibGUp OworaW50IGFtZGdwdV9mZW5jZV93YWl0X2FueShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK KwkJCSAgc3RydWN0IGFtZGdwdV9mZW5jZSAqKmZlbmNlcywKKwkJCSAgYm9vbCBpbnRyKTsKK2xv bmcgYW1kZ3B1X2ZlbmNlX3dhaXRfc2VxX3RpbWVvdXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCisJCQkJICAgdTY0ICp0YXJnZXRfc2VxLCBib29sIGludHIsCisJCQkJICAgbG9uZyB0aW1l b3V0KTsKK3N0cnVjdCBhbWRncHVfZmVuY2UgKmFtZGdwdV9mZW5jZV9yZWYoc3RydWN0IGFtZGdw dV9mZW5jZSAqZmVuY2UpOwordm9pZCBhbWRncHVfZmVuY2VfdW5yZWYoc3RydWN0IGFtZGdwdV9m ZW5jZSAqKmZlbmNlKTsKKworYm9vbCBhbWRncHVfZmVuY2VfbmVlZF9zeW5jKHN0cnVjdCBhbWRn cHVfZmVuY2UgKmZlbmNlLAorCQkJICAgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cit2b2lk IGFtZGdwdV9mZW5jZV9ub3RlX3N5bmMoc3RydWN0IGFtZGdwdV9mZW5jZSAqZmVuY2UsCisJCQkg ICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgYW1k Z3B1X2ZlbmNlICphbWRncHVfZmVuY2VfbGF0ZXIoc3RydWN0IGFtZGdwdV9mZW5jZSAqYSwKKwkJ CQkJCSAgICAgIHN0cnVjdCBhbWRncHVfZmVuY2UgKmIpCit7CisJaWYgKCFhKSB7CisJCXJldHVy biBiOworCX0KKworCWlmICghYikgeworCQlyZXR1cm4gYTsKKwl9CisKKwlCVUdfT04oYS0+cmlu ZyAhPSBiLT5yaW5nKTsKKworCWlmIChhLT5zZXEgPiBiLT5zZXEpIHsKKwkJcmV0dXJuIGE7CisJ fSBlbHNlIHsKKwkJcmV0dXJuIGI7CisJfQorfQorCitzdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1 X2ZlbmNlX2lzX2VhcmxpZXIoc3RydWN0IGFtZGdwdV9mZW5jZSAqYSwKKwkJCQkJICAgc3RydWN0 IGFtZGdwdV9mZW5jZSAqYikKK3sKKwlpZiAoIWEpIHsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmICghYikgeworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlCVUdfT04oYS0+cmluZyAhPSBiLT5y aW5nKTsKKworCXJldHVybiBhLT5zZXEgPCBiLT5zZXE7Cit9CisKK2ludCBhbWRncHVfdXNlcl9m ZW5jZV9lbWl0KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV91c2VyX2Zl bmNlICp1c2VyLCAKKwkJCSAgIHZvaWQgKm93bmVyLCBzdHJ1Y3QgYW1kZ3B1X2ZlbmNlICoqZmVu Y2UpOworCisvKgorICogVFRNLgorICovCitzdHJ1Y3QgYW1kZ3B1X21tYW4geworCXN0cnVjdCB0 dG1fYm9fZ2xvYmFsX3JlZiAgICAgICAgYm9fZ2xvYmFsX3JlZjsKKwlzdHJ1Y3QgZHJtX2dsb2Jh bF9yZWZlcmVuY2UJbWVtX2dsb2JhbF9yZWY7CisJc3RydWN0IHR0bV9ib19kZXZpY2UJCWJkZXY7 CisJYm9vbAkJCQltZW1fZ2xvYmFsX3JlZmVyZW5jZWQ7CisJYm9vbAkJCQlpbml0aWFsaXplZDsK KworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQorCXN0cnVjdCBkZW50cnkJCQkqdnJhbTsK KwlzdHJ1Y3QgZGVudHJ5CQkJKmd0dDsKKyNlbmRpZgorCisJLyogYnVmZmVyIGhhbmRsaW5nICov CisJY29uc3Qgc3RydWN0IGFtZGdwdV9idWZmZXJfZnVuY3MJKmJ1ZmZlcl9mdW5jczsKKwlzdHJ1 Y3QgYW1kZ3B1X3JpbmcJCQkqYnVmZmVyX2Z1bmNzX3Jpbmc7Cit9OworCitpbnQgYW1kZ3B1X2Nv cHlfYnVmZmVyKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKKwkJICAgICAgIHVpbnQ2NF90IHNy Y19vZmZzZXQsCisJCSAgICAgICB1aW50NjRfdCBkc3Rfb2Zmc2V0LAorCQkgICAgICAgdWludDMy X3QgYnl0ZV9jb3VudCwKKwkJICAgICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Ys CisJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2ZlbmNlICoqZmVuY2UpOworaW50IGFtZGdwdV9tbWFw KHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CisKK3N0cnVj dCBhbWRncHVfYm9fbGlzdF9lbnRyeSB7CisJc3RydWN0IGFtZGdwdV9ibwkJKnJvYmo7CisJc3Ry dWN0IHR0bV92YWxpZGF0ZV9idWZmZXIJdHY7CisJc3RydWN0IGFtZGdwdV9ib192YQkJKmJvX3Zh OworCXVuc2lnbmVkCQkJcHJlZmVyZWRfZG9tYWluczsKKwl1bnNpZ25lZAkJCWFsbG93ZWRfZG9t YWluczsKKwl1aW50MzJfdAkJCXByaW9yaXR5OworfTsKKworc3RydWN0IGFtZGdwdV9ib192YV9t YXBwaW5nIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkCQlsaXN0OworCXN0cnVjdCBpbnRlcnZhbF90cmVl X25vZGUJaXQ7CisJdWludDY0X3QJCQlvZmZzZXQ7CisJdWludDMyX3QJCQlmbGFnczsKK307CisK Ky8qIGJvIHZpcnR1YWwgYWRkcmVzc2VzIGluIGEgc3BlY2lmaWMgdm0gKi8KK3N0cnVjdCBhbWRn cHVfYm9fdmEgeworCS8qIHByb3RlY3RlZCBieSBibyBiZWluZyByZXNlcnZlZCAqLworCXN0cnVj dCBsaXN0X2hlYWQJCWJvX2xpc3Q7CisJdWludDY0X3QJCQlhZGRyOworCXN0cnVjdCBhbWRncHVf ZmVuY2UJCSpsYXN0X3B0X3VwZGF0ZTsKKwl1bnNpZ25lZAkJCXJlZl9jb3VudDsKKworCS8qIHBy b3RlY3RlZCBieSB2bSBtdXRleCAqLworCXN0cnVjdCBsaXN0X2hlYWQJCW1hcHBpbmdzOworCXN0 cnVjdCBsaXN0X2hlYWQJCXZtX3N0YXR1czsKKworCS8qIGNvbnN0YW50IGFmdGVyIGluaXRpYWxp emF0aW9uICovCisJc3RydWN0IGFtZGdwdV92bQkJKnZtOworCXN0cnVjdCBhbWRncHVfYm8JCSpi bzsKK307CisKK3N0cnVjdCBhbWRncHVfYm8geworCS8qIFByb3RlY3RlZCBieSBnZW0ubXV0ZXgg Ki8KKwlzdHJ1Y3QgbGlzdF9oZWFkCQlsaXN0OworCS8qIFByb3RlY3RlZCBieSB0Ym8ucmVzZXJ2 ZWQgKi8KKwl1MzIJCQkJaW5pdGlhbF9kb21haW47CisJc3RydWN0IHR0bV9wbGFjZQkJcGxhY2Vt ZW50c1s0XTsKKwlzdHJ1Y3QgdHRtX3BsYWNlbWVudAkJcGxhY2VtZW50OworCXN0cnVjdCB0dG1f YnVmZmVyX29iamVjdAl0Ym87CisJc3RydWN0IHR0bV9ib19rbWFwX29iagkJa21hcDsKKwl1NjQJ CQkJZmxhZ3M7CisJdW5zaWduZWQJCQlwaW5fY291bnQ7CisJdm9pZAkJCQkqa3B0cjsKKwl1NjQJ CQkJdGlsaW5nX2ZsYWdzOworCXU2NAkJCQltZXRhZGF0YV9mbGFnczsKKwl2b2lkCQkJCSptZXRh ZGF0YTsKKwl1MzIJCQkJbWV0YWRhdGFfc2l6ZTsKKwkvKiBsaXN0IG9mIGFsbCB2aXJ0dWFsIGFk ZHJlc3MgdG8gd2hpY2ggdGhpcyBibworCSAqIGlzIGFzc29jaWF0ZWQgdG8KKwkgKi8KKwlzdHJ1 Y3QgbGlzdF9oZWFkCQl2YTsKKwkvKiBDb25zdGFudCBhZnRlciBpbml0aWFsaXphdGlvbiAqLwor CXN0cnVjdCBhbWRncHVfZGV2aWNlCQkqYWRldjsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QJCWdl bV9iYXNlOworCisJc3RydWN0IHR0bV9ib19rbWFwX29iagkJZG1hX2J1Zl92bWFwOworCXBpZF90 CQkJCXBpZDsKKwlzdHJ1Y3QgYW1kZ3B1X21uCQkqbW47CisJc3RydWN0IGxpc3RfaGVhZAkJbW5f bGlzdDsKK307CisjZGVmaW5lIGdlbV90b19hbWRncHVfYm8oZ29iaikgY29udGFpbmVyX29mKChn b2JqKSwgc3RydWN0IGFtZGdwdV9ibywgZ2VtX2Jhc2UpCisKK3ZvaWQgYW1kZ3B1X2dlbV9vYmpl Y3RfZnJlZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitpbnQgYW1kZ3B1X2dlbV9vYmpl Y3Rfb3BlbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCQlzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdik7Cit2b2lkIGFtZGdwdV9nZW1fb2JqZWN0X2Nsb3NlKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLAorCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK3Vuc2lnbmVk IGxvbmcgYW1kZ3B1X2dlbV90aW1lb3V0KHVpbnQ2NF90IHRpbWVvdXRfbnMpOworc3RydWN0IHNn X3RhYmxlICphbWRncHVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7CitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCQkJc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoLAorCQkJCQkJCXN0cnVjdCBzZ190YWJsZSAqc2cpOworc3RydWN0 IGRtYV9idWYgKmFtZGdwdV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCQkJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iaiwKKwkJCQkJaW50IGZsYWdzKTsKK2lu dCBhbWRncHVfZ2VtX3ByaW1lX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cit2b2lk IGFtZGdwdV9nZW1fcHJpbWVfdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOworc3Ry dWN0IHJlc2VydmF0aW9uX29iamVjdCAqYW1kZ3B1X2dlbV9wcmltZV9yZXNfb2JqKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqKTsKK3ZvaWQgKmFtZGdwdV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIGFtZGdwdV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7CitpbnQgYW1kZ3B1X2dlbV9kZWJ1Z2Zz X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCisvKiBzdWItYWxsb2NhdGlvbiBt YW5hZ2VyLCBpdCBoYXMgdG8gYmUgcHJvdGVjdGVkIGJ5IGFub3RoZXIgbG9jay4KKyAqIEJ5IGNv bmNlcHRpb24gdGhpcyBpcyBhbiBoZWxwZXIgZm9yIG90aGVyIHBhcnQgb2YgdGhlIGRyaXZlcgor ICogbGlrZSB0aGUgaW5kaXJlY3QgYnVmZmVyIG9yIHNlbWFwaG9yZSwgd2hpY2ggYm90aCBoYXZl IHRoZWlyCisgKiBsb2NraW5nLgorICoKKyAqIFByaW5jaXBlIGlzIHNpbXBsZSwgd2Uga2VlcCBh IGxpc3Qgb2Ygc3ViIGFsbG9jYXRpb24gaW4gb2Zmc2V0CisgKiBvcmRlciAoZmlyc3QgZW50cnkg aGFzIG9mZnNldCA9PSAwLCBsYXN0IGVudHJ5IGhhcyB0aGUgaGlnaGVzdAorICogb2Zmc2V0KS4K KyAqCisgKiBXaGVuIGFsbG9jYXRpbmcgbmV3IG9iamVjdCB3ZSBmaXJzdCBjaGVjayBpZiB0aGVy ZSBpcyByb29tIGF0CisgKiB0aGUgZW5kIHRvdGFsX3NpemUgLSAobGFzdF9vYmplY3Rfb2Zmc2V0 ICsgbGFzdF9vYmplY3Rfc2l6ZSkgPj0KKyAqIGFsbG9jX3NpemUuIElmIHNvIHdlIGFsbG9jYXRl IG5ldyBvYmplY3QgdGhlcmUuCisgKgorICogV2hlbiB0aGVyZSBpcyBub3QgZW5vdWdoIHJvb20g YXQgdGhlIGVuZCwgd2Ugc3RhcnQgd2FpdGluZyBmb3IKKyAqIGVhY2ggc3ViIG9iamVjdCB1bnRp bCB3ZSByZWFjaCBvYmplY3Rfb2Zmc2V0K29iamVjdF9zaXplID49CisgKiBhbGxvY19zaXplLCB0 aGlzIG9iamVjdCB0aGVuIGJlY29tZSB0aGUgc3ViIG9iamVjdCB3ZSByZXR1cm4uCisgKgorICog QWxpZ25tZW50IGNhbid0IGJlIGJpZ2dlciB0aGFuIHBhZ2Ugc2l6ZS4KKyAqCisgKiBIb2xlIGFy ZSBub3QgY29uc2lkZXJlZCBmb3IgYWxsb2NhdGlvbiB0byBrZWVwIHRoaW5ncyBzaW1wbGUuCisg KiBBc3N1bXB0aW9uIGlzIHRoYXQgdGhlcmUgd29uJ3QgYmUgaG9sZSAoYWxsIG9iamVjdCBvbiBz YW1lCisgKiBhbGlnbm1lbnQpLgorICovCitzdHJ1Y3QgYW1kZ3B1X3NhX21hbmFnZXIgeworCXdh aXRfcXVldWVfaGVhZF90CXdxOworCXN0cnVjdCBhbWRncHVfYm8JKmJvOworCXN0cnVjdCBsaXN0 X2hlYWQJKmhvbGU7CisJc3RydWN0IGxpc3RfaGVhZAlmbGlzdFtBTURHUFVfTUFYX1JJTkdTXTsK KwlzdHJ1Y3QgbGlzdF9oZWFkCW9saXN0OworCXVuc2lnbmVkCQlzaXplOworCXVpbnQ2NF90CQln cHVfYWRkcjsKKwl2b2lkCQkJKmNwdV9wdHI7CisJdWludDMyX3QJCWRvbWFpbjsKKwl1aW50MzJf dAkJYWxpZ247Cit9OworCitzdHJ1Y3QgYW1kZ3B1X3NhX2JvOworCisvKiBzdWItYWxsb2NhdGlv biBidWZmZXIgKi8KK3N0cnVjdCBhbWRncHVfc2FfYm8geworCXN0cnVjdCBsaXN0X2hlYWQJCW9s aXN0OworCXN0cnVjdCBsaXN0X2hlYWQJCWZsaXN0OworCXN0cnVjdCBhbWRncHVfc2FfbWFuYWdl cgkqbWFuYWdlcjsKKwl1bnNpZ25lZAkJCXNvZmZzZXQ7CisJdW5zaWduZWQJCQllb2Zmc2V0Owor CXN0cnVjdCBhbWRncHVfZmVuY2UJCSpmZW5jZTsKK307CisKKy8qCisgKiBHRU0gb2JqZWN0cy4K KyAqLworc3RydWN0IGFtZGdwdV9nZW0geworCXN0cnVjdCBtdXRleAkJbXV0ZXg7CisJc3RydWN0 IGxpc3RfaGVhZAlvYmplY3RzOworfTsKKworaW50IGFtZGdwdV9nZW1faW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldik7Cit2b2lkIGFtZGdwdV9nZW1fZmluaShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldik7CitpbnQgYW1kZ3B1X2dlbV9vYmplY3RfY3JlYXRlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJaW50IGFsaWdubWVudCwgdTMy IGluaXRpYWxfZG9tYWluLAorCQkJCXU2NCBmbGFncywgYm9vbCBrZXJuZWwsCisJCQkJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICoqb2JqKTsKKworaW50IGFtZGdwdV9tb2RlX2R1bWJfY3JlYXRlKHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCQkgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKK2ludCBhbWRncHVf bW9kZV9kdW1iX21tYXAoc3RydWN0IGRybV9maWxlICpmaWxwLAorCQkJICBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorCQkJICB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90ICpvZmZzZXRfcCk7CisK Ky8qCisgKiBTZW1hcGhvcmVzLgorICovCitzdHJ1Y3QgYW1kZ3B1X3NlbWFwaG9yZSB7CisJc3Ry dWN0IGFtZGdwdV9zYV9ibwkqc2FfYm87CisJc2lnbmVkCQkJd2FpdGVyczsKKwl1aW50NjRfdAkJ Z3B1X2FkZHI7Cit9OworCitpbnQgYW1kZ3B1X3NlbWFwaG9yZV9jcmVhdGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCisJCQkgICAgc3RydWN0IGFtZGdwdV9zZW1hcGhvcmUgKipzZW1hcGhv cmUpOworYm9vbCBhbWRncHVfc2VtYXBob3JlX2VtaXRfc2lnbmFsKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywKKwkJCQkgIHN0cnVjdCBhbWRncHVfc2VtYXBob3JlICpzZW1hcGhvcmUpOworYm9v bCBhbWRncHVfc2VtYXBob3JlX2VtaXRfd2FpdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCisJ CQkJc3RydWN0IGFtZGdwdV9zZW1hcGhvcmUgKnNlbWFwaG9yZSk7Cit2b2lkIGFtZGdwdV9zZW1h cGhvcmVfZnJlZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgIHN0cnVjdCBhbWRn cHVfc2VtYXBob3JlICoqc2VtYXBob3JlLAorCQkJICAgc3RydWN0IGFtZGdwdV9mZW5jZSAqZmVu Y2UpOworCisvKgorICogU3luY2hyb25pemF0aW9uCisgKi8KK3N0cnVjdCBhbWRncHVfc3luYyB7 CisJc3RydWN0IGFtZGdwdV9zZW1hcGhvcmUgKnNlbWFwaG9yZXNbQU1ER1BVX05VTV9TWU5DU107 CisJc3RydWN0IGFtZGdwdV9mZW5jZQkqc3luY190b1tBTURHUFVfTUFYX1JJTkdTXTsKKwlzdHJ1 Y3QgYW1kZ3B1X2ZlbmNlCSpsYXN0X3ZtX3VwZGF0ZTsKK307CisKK3ZvaWQgYW1kZ3B1X3N5bmNf Y3JlYXRlKHN0cnVjdCBhbWRncHVfc3luYyAqc3luYyk7Cit2b2lkIGFtZGdwdV9zeW5jX2ZlbmNl KHN0cnVjdCBhbWRncHVfc3luYyAqc3luYywKKwkJICAgICAgIHN0cnVjdCBhbWRncHVfZmVuY2Ug KmZlbmNlKTsKK2ludCBhbWRncHVfc3luY19yZXN2KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAorCQkgICAgIHN0cnVjdCBhbWRncHVfc3luYyAqc3luYywKKwkJICAgICBzdHJ1Y3QgcmVzZXJ2 YXRpb25fb2JqZWN0ICpyZXN2LAorCQkgICAgIHZvaWQgKm93bmVyKTsKK2ludCBhbWRncHVfc3lu Y19yaW5ncyhzdHJ1Y3QgYW1kZ3B1X3N5bmMgKnN5bmMsCisJCSAgICAgIHN0cnVjdCBhbWRncHVf cmluZyAqcmluZyk7Cit2b2lkIGFtZGdwdV9zeW5jX2ZyZWUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHN0cnVjdCBhbWRncHVfc3luYyAqc3luYywKKwkJICAgICAgc3RydWN0IGFtZGdwdV9m ZW5jZSAqZmVuY2UpOworCisvKgorICogR0FSVCBzdHJ1Y3R1cmVzLCBmdW5jdGlvbnMgJiBoZWxw ZXJzCisgKi8KK3N0cnVjdCBhbWRncHVfbWM7CisKKyNkZWZpbmUgQU1ER1BVX0dQVV9QQUdFX1NJ WkUgNDA5NgorI2RlZmluZSBBTURHUFVfR1BVX1BBR0VfTUFTSyAoQU1ER1BVX0dQVV9QQUdFX1NJ WkUgLSAxKQorI2RlZmluZSBBTURHUFVfR1BVX1BBR0VfU0hJRlQgMTIKKyNkZWZpbmUgQU1ER1BV X0dQVV9QQUdFX0FMSUdOKGEpICgoKGEpICsgQU1ER1BVX0dQVV9QQUdFX01BU0spICYgfkFNREdQ VV9HUFVfUEFHRV9NQVNLKQorCitzdHJ1Y3QgYW1kZ3B1X2dhcnQgeworCWRtYV9hZGRyX3QJCQl0 YWJsZV9hZGRyOworCXN0cnVjdCBhbWRncHVfYm8JCSpyb2JqOworCXZvaWQJCQkJKnB0cjsKKwl1 bnNpZ25lZAkJCW51bV9ncHVfcGFnZXM7CisJdW5zaWduZWQJCQludW1fY3B1X3BhZ2VzOworCXVu c2lnbmVkCQkJdGFibGVfc2l6ZTsKKwlzdHJ1Y3QgcGFnZQkJCSoqcGFnZXM7CisJZG1hX2FkZHJf dAkJCSpwYWdlc19hZGRyOworCWJvb2wJCQkJcmVhZHk7CisJY29uc3Qgc3RydWN0IGFtZGdwdV9n YXJ0X2Z1bmNzICpnYXJ0X2Z1bmNzOworfTsKKworaW50IGFtZGdwdV9nYXJ0X3RhYmxlX3JhbV9h bGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cit2b2lkIGFtZGdwdV9nYXJ0X3RhYmxl X3JhbV9mcmVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK2ludCBhbWRncHVfZ2FydF90 YWJsZV92cmFtX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK3ZvaWQgYW1kZ3B1 X2dhcnRfdGFibGVfdnJhbV9mcmVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK2ludCBh bWRncHVfZ2FydF90YWJsZV92cmFtX3BpbihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cit2 b2lkIGFtZGdwdV9nYXJ0X3RhYmxlX3ZyYW1fdW5waW4oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOworaW50IGFtZGdwdV9nYXJ0X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwor dm9pZCBhbWRncHVfZ2FydF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK3ZvaWQg YW1kZ3B1X2dhcnRfdW5iaW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBv ZmZzZXQsCisJCQlpbnQgcGFnZXMpOworaW50IGFtZGdwdV9nYXJ0X2JpbmQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIG9mZnNldCwKKwkJICAgICBpbnQgcGFnZXMsIHN0cnVj dCBwYWdlICoqcGFnZWxpc3QsCisJCSAgICAgZG1hX2FkZHJfdCAqZG1hX2FkZHIsIHVpbnQzMl90 IGZsYWdzKTsKKworLyoKKyAqIEdQVSBNQyBzdHJ1Y3R1cmVzLCBmdW5jdGlvbnMgJiBoZWxwZXJz CisgKi8KK3N0cnVjdCBhbWRncHVfbWMgeworCXJlc291cmNlX3NpemVfdAkJYXBlcl9zaXplOwor CXJlc291cmNlX3NpemVfdAkJYXBlcl9iYXNlOworCXJlc291cmNlX3NpemVfdAkJYWdwX2Jhc2U7 CisJLyogZm9yIHNvbWUgY2hpcHMgd2l0aCA8PSAzMk1CIHdlIG5lZWQgdG8gbGllCisJICogYWJv dXQgdnJhbSBzaXplIG5lYXIgbWMgZmIgbG9jYXRpb24gKi8KKwl1NjQJCQltY192cmFtX3NpemU7 CisJdTY0CQkJdmlzaWJsZV92cmFtX3NpemU7CisJdTY0CQkJZ3R0X3NpemU7CisJdTY0CQkJZ3R0 X3N0YXJ0OworCXU2NAkJCWd0dF9lbmQ7CisJdTY0CQkJdnJhbV9zdGFydDsKKwl1NjQJCQl2cmFt X2VuZDsKKwl1bnNpZ25lZAkJdnJhbV93aWR0aDsKKwl1NjQJCQlyZWFsX3ZyYW1fc2l6ZTsKKwlp bnQJCQl2cmFtX210cnI7CisJdTY0ICAgICAgICAgICAgICAgICAgICAgZ3R0X2Jhc2VfYWxpZ247 CisJdTY0ICAgICAgICAgICAgICAgICAgICAgbWNfbWFzazsKKwljb25zdCBzdHJ1Y3QgZmlybXdh cmUgICAqZnc7CS8qIE1DIGZpcm13YXJlICovCisJdWludDMyX3QgICAgICAgICAgICAgICAgZndf dmVyc2lvbjsKKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJdm1fZmF1bHQ7CisJYm9vbCAgICAgICAg ICAgICAgICAgICAgaXNfZ2RkcjU7Cit9OworCisvKgorICogR1BVIGRvb3JiZWxsIHN0cnVjdHVy ZXMsIGZ1bmN0aW9ucyAmIGhlbHBlcnMKKyAqLwordHlwZWRlZiBlbnVtIF9BTURHUFVfRE9PUkJF TExfQVNTSUdOTUVOVAoreworCUFNREdQVV9ET09SQkVMTF9LSVEgICAgICAgICAgICAgICAgICAg ICA9IDB4MDAwLAorCUFNREdQVV9ET09SQkVMTF9ISVEgICAgICAgICAgICAgICAgICAgICA9IDB4 MDAxLAorCUFNREdQVV9ET09SQkVMTF9ESVEgICAgICAgICAgICAgICAgICAgICA9IDB4MDAyLAor CUFNREdQVV9ET09SQkVMTF9NRUNfUklORzAgICAgICAgICAgICAgICA9IDB4MDEwLAorCUFNREdQ VV9ET09SQkVMTF9NRUNfUklORzEgICAgICAgICAgICAgICA9IDB4MDExLAorCUFNREdQVV9ET09S QkVMTF9NRUNfUklORzIgICAgICAgICAgICAgICA9IDB4MDEyLAorCUFNREdQVV9ET09SQkVMTF9N RUNfUklORzMgICAgICAgICAgICAgICA9IDB4MDEzLAorCUFNREdQVV9ET09SQkVMTF9NRUNfUklO RzQgICAgICAgICAgICAgICA9IDB4MDE0LAorCUFNREdQVV9ET09SQkVMTF9NRUNfUklORzUgICAg ICAgICAgICAgICA9IDB4MDE1LAorCUFNREdQVV9ET09SQkVMTF9NRUNfUklORzYgICAgICAgICAg ICAgICA9IDB4MDE2LAorCUFNREdQVV9ET09SQkVMTF9NRUNfUklORzcgICAgICAgICAgICAgICA9 IDB4MDE3LAorCUFNREdQVV9ET09SQkVMTF9HRlhfUklORzAgICAgICAgICAgICAgICA9IDB4MDIw LAorCUFNREdQVV9ET09SQkVMTF9zRE1BX0VOR0lORTAgICAgICAgICAgICA9IDB4MUUwLAorCUFN REdQVV9ET09SQkVMTF9zRE1BX0VOR0lORTEgICAgICAgICAgICA9IDB4MUUxLAorCUFNREdQVV9E T09SQkVMTF9JSCAgICAgICAgICAgICAgICAgICAgICA9IDB4MUU4LAorCUFNREdQVV9ET09SQkVM TF9NQVhfQVNTSUdOTUVOVCAgICAgICAgICA9IDB4M0ZGLAorCUFNREdQVV9ET09SQkVMTF9JTlZB TElEICAgICAgICAgICAgICAgICA9IDB4RkZGRgorfSBBTURHUFVfRE9PUkJFTExfQVNTSUdOTUVO VDsKKworc3RydWN0IGFtZGdwdV9kb29yYmVsbCB7CisJLyogZG9vcmJlbGwgbW1pbyAqLworCXJl c291cmNlX3NpemVfdAkJYmFzZTsKKwlyZXNvdXJjZV9zaXplX3QJCXNpemU7CisJdTMyIF9faW9t ZW0JCSpwdHI7CisJdTMyCQkJbnVtX2Rvb3JiZWxsczsJLyogTnVtYmVyIG9mIGRvb3JiZWxscyBh Y3R1YWxseSByZXNlcnZlZCBmb3IgYW1kZ3B1LiAqLworfTsKKwordm9pZCBhbWRncHVfZG9vcmJl bGxfZ2V0X2tmZF9pbmZvKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCXBoeXNfYWRk cl90ICphcGVydHVyZV9iYXNlLAorCQkJCXNpemVfdCAqYXBlcnR1cmVfc2l6ZSwKKwkJCQlzaXpl X3QgKnN0YXJ0X29mZnNldCk7CisKKy8qCisgKiBJUlFTLgorICovCisKK3N0cnVjdCBhbWRncHVf ZmxpcF93b3JrIHsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCWZsaXBfd29yazsKKwlzdHJ1Y3Qgd29y a19zdHJ1Y3QJCXVucGluX3dvcms7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UJCSphZGV2OworCWlu dAkJCQljcnRjX2lkOworCXVpbnQ2NF90CQkJYmFzZTsKKwlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICpldmVudDsKKwlzdHJ1Y3QgYW1kZ3B1X2JvCQkqb2xkX3JibzsKKwlzdHJ1Y3Qg ZmVuY2UJCQkqZmVuY2U7Cit9OworCisKKy8qCisgKiBDUCAmIHJpbmdzLgorICovCisKK3N0cnVj dCBhbWRncHVfaWIgeworCXN0cnVjdCBhbWRncHVfc2FfYm8JCSpzYV9ibzsKKwl1aW50MzJfdAkJ CWxlbmd0aF9kdzsKKwl1aW50NjRfdAkJCWdwdV9hZGRyOworCXVpbnQzMl90CQkJKnB0cjsKKwlz dHJ1Y3QgYW1kZ3B1X3JpbmcJCSpyaW5nOworCXN0cnVjdCBhbWRncHVfZmVuY2UJCSpmZW5jZTsK KwlzdHJ1Y3QgYW1kZ3B1X3VzZXJfZmVuY2UgICAgICAgICp1c2VyOworCXN0cnVjdCBhbWRncHVf dm0JCSp2bTsKKwlib29sCQkJCWlzX2NvbnN0X2liOworCWJvb2wJCQkJZmx1c2hfaGRwX3dyaXRl ZmlmbzsKKwlzdHJ1Y3QgYW1kZ3B1X3N5bmMJCXN5bmM7CisJYm9vbAkJCQlnZHNfbmVlZGVkOwor CXVpbnQzMl90CQkJZ2RzX2Jhc2UsIGdkc19zaXplOworCXVpbnQzMl90CQkJZ3dzX2Jhc2UsIGd3 c19zaXplOworCXVpbnQzMl90CQkJb2FfYmFzZSwgb2Ffc2l6ZTsKK307CisKK2VudW0gYW1kZ3B1 X3JpbmdfdHlwZSB7CisJQU1ER1BVX1JJTkdfVFlQRV9HRlgsCisJQU1ER1BVX1JJTkdfVFlQRV9D T01QVVRFLAorCUFNREdQVV9SSU5HX1RZUEVfU0RNQSwKKwlBTURHUFVfUklOR19UWVBFX1VWRCwK KwlBTURHUFVfUklOR19UWVBFX1ZDRQorfTsKKworc3RydWN0IGFtZGdwdV9yaW5nIHsKKwlzdHJ1 Y3QgYW1kZ3B1X2RldmljZQkJKmFkZXY7CisJY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNz CSpmdW5jczsKKwlzdHJ1Y3QgYW1kZ3B1X2ZlbmNlX2RyaXZlcglmZW5jZV9kcnY7CisKKwlzdHJ1 Y3QgbXV0ZXgJCSpyaW5nX2xvY2s7CisJc3RydWN0IGFtZGdwdV9ibwkqcmluZ19vYmo7CisJdm9s YXRpbGUgdWludDMyX3QJKnJpbmc7CisJdW5zaWduZWQJCXJwdHJfb2ZmczsKKwl1NjQJCQluZXh0 X3JwdHJfZ3B1X2FkZHI7CisJdm9sYXRpbGUgdTMyCQkqbmV4dF9ycHRyX2NwdV9hZGRyOworCXVu c2lnbmVkCQl3cHRyOworCXVuc2lnbmVkCQl3cHRyX29sZDsKKwl1bnNpZ25lZAkJcmluZ19zaXpl OworCXVuc2lnbmVkCQlyaW5nX2ZyZWVfZHc7CisJaW50CQkJY291bnRfZHc7CisJYXRvbWljX3QJ CWxhc3RfcnB0cjsKKwlhdG9taWM2NF90CQlsYXN0X2FjdGl2aXR5OworCXVpbnQ2NF90CQlncHVf YWRkcjsKKwl1aW50MzJfdAkJYWxpZ25fbWFzazsKKwl1aW50MzJfdAkJcHRyX21hc2s7CisJYm9v bAkJCXJlYWR5OworCXUzMgkJCW5vcDsKKwl1MzIJCQlpZHg7CisJdTY0CQkJbGFzdF9zZW1hcGhv cmVfc2lnbmFsX2FkZHI7CisJdTY0CQkJbGFzdF9zZW1hcGhvcmVfd2FpdF9hZGRyOworCXUzMgkJ CW1lOworCXUzMgkJCXBpcGU7CisJdTMyCQkJcXVldWU7CisJc3RydWN0IGFtZGdwdV9ibwkqbXFk X29iajsKKwl1MzIJCQlkb29yYmVsbF9pbmRleDsKKwlib29sCQkJdXNlX2Rvb3JiZWxsOworCXVu c2lnbmVkCQl3cHRyX29mZnM7CisJdW5zaWduZWQJCW5leHRfcnB0cl9vZmZzOworCXVuc2lnbmVk CQlmZW5jZV9vZmZzOworCXN0cnVjdCBkcm1fZmlsZQkJKmN1cnJlbnRfZmlscDsKKwlib29sCQkJ bmVlZF9jdHhfc3dpdGNoOworCWVudW0gYW1kZ3B1X3JpbmdfdHlwZQl0eXBlOworCWNoYXIJCQlu YW1lWzE2XTsKK307CisKKy8qCisgKiBWTQorICovCisKKy8qIG1heGltdW0gbnVtYmVyIG9mIFZN SURzICovCisjZGVmaW5lIEFNREdQVV9OVU1fVk0JMTYKKworLyogbnVtYmVyIG9mIGVudHJpZXMg aW4gcGFnZSB0YWJsZSAqLworI2RlZmluZSBBTURHUFVfVk1fUFRFX0NPVU5UICgxIDw8IGFtZGdw dV92bV9ibG9ja19zaXplKQorCisvKiBQVEJzIChQYWdlIFRhYmxlIEJsb2NrcykgbmVlZCB0byBi ZSBhbGlnbmVkIHRvIDMySyAqLworI2RlZmluZSBBTURHUFVfVk1fUFRCX0FMSUdOX1NJWkUgICAz Mjc2OAorI2RlZmluZSBBTURHUFVfVk1fUFRCX0FMSUdOX01BU0sgKEFNREdQVV9WTV9QVEJfQUxJ R05fU0laRSAtIDEpCisjZGVmaW5lIEFNREdQVV9WTV9QVEJfQUxJR04oYSkgKCgoYSkgKyBBTURH UFVfVk1fUFRCX0FMSUdOX01BU0spICYgfkFNREdQVV9WTV9QVEJfQUxJR05fTUFTSykKKworI2Rl ZmluZSBBTURHUFVfUFRFX1ZBTElECSgxIDw8IDApCisjZGVmaW5lIEFNREdQVV9QVEVfU1lTVEVN CSgxIDw8IDEpCisjZGVmaW5lIEFNREdQVV9QVEVfU05PT1BFRAkoMSA8PCAyKQorCisvKiBWSSBv bmx5ICovCisjZGVmaW5lIEFNREdQVV9QVEVfRVhFQ1VUQUJMRQkoMSA8PCA0KQorCisjZGVmaW5l IEFNREdQVV9QVEVfUkVBREFCTEUJKDEgPDwgNSkKKyNkZWZpbmUgQU1ER1BVX1BURV9XUklURUFC TEUJKDEgPDwgNikKKworLyogUFRFIChQYWdlIFRhYmxlIEVudHJ5KSBmcmFnbWVudCBmaWVsZCBm b3IgZGlmZmVyZW50IHBhZ2Ugc2l6ZXMgKi8KKyNkZWZpbmUgQU1ER1BVX1BURV9GUkFHXzRLQgko MCA8PCA3KQorI2RlZmluZSBBTURHUFVfUFRFX0ZSQUdfNjRLQgkoNCA8PCA3KQorI2RlZmluZSBB TURHUFVfTE9HMl9QQUdFU19QRVJfRlJBRyA0CisKK3N0cnVjdCBhbWRncHVfdm1fcHQgeworCXN0 cnVjdCBhbWRncHVfYm8JCSpibzsKKwl1aW50NjRfdAkJCWFkZHI7Cit9OworCitzdHJ1Y3QgYW1k Z3B1X3ZtX2lkIHsKKwl1bnNpZ25lZAkJaWQ7CisJdWludDY0X3QJCXBkX2dwdV9hZGRyOworCS8q IGxhc3QgZmx1c2hlZCBQRC9QVCB1cGRhdGUgKi8KKwlzdHJ1Y3QgYW1kZ3B1X2ZlbmNlCSpmbHVz aGVkX3VwZGF0ZXM7CisJLyogbGFzdCB1c2Ugb2Ygdm1pZCAqLworCXN0cnVjdCBhbWRncHVfZmVu Y2UJKmxhc3RfaWRfdXNlOworfTsKKworc3RydWN0IGFtZGdwdV92bSB7CisJc3RydWN0IG11dGV4 CQltdXRleDsKKworCXN0cnVjdCByYl9yb290CQl2YTsKKworCS8qIHByb3RlY3RpbmcgaW52YWxp ZGF0ZWQgYW5kIGZyZWVkICovCisJc3BpbmxvY2tfdAkJc3RhdHVzX2xvY2s7CisKKwkvKiBCT3Mg bW92ZWQsIGJ1dCBub3QgeWV0IHVwZGF0ZWQgaW4gdGhlIFBUICovCisJc3RydWN0IGxpc3RfaGVh ZAlpbnZhbGlkYXRlZDsKKworCS8qIEJPcyBmcmVlZCwgYnV0IG5vdCB5ZXQgdXBkYXRlZCBpbiB0 aGUgUFQgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCWZyZWVkOworCisJLyogY29udGFpbnMgdGhlIHBh Z2UgZGlyZWN0b3J5ICovCisJc3RydWN0IGFtZGdwdV9ibwkqcGFnZV9kaXJlY3Rvcnk7CisJdW5z aWduZWQJCW1heF9wZGVfdXNlZDsKKworCS8qIGFycmF5IG9mIHBhZ2UgdGFibGVzLCBvbmUgZm9y IGVhY2ggcGFnZSBkaXJlY3RvcnkgZW50cnkgKi8KKwlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0CSpwYWdl X3RhYmxlczsKKworCS8qIGZvciBpZCBhbmQgZmx1c2ggbWFuYWdlbWVudCBwZXIgcmluZyAqLwor CXN0cnVjdCBhbWRncHVfdm1faWQJaWRzW0FNREdQVV9NQVhfUklOR1NdOworfTsKKworc3RydWN0 IGFtZGdwdV92bV9tYW5hZ2VyIHsKKwlzdHJ1Y3QgYW1kZ3B1X2ZlbmNlCQkqYWN0aXZlW0FNREdQ VV9OVU1fVk1dOworCXVpbnQzMl90CQkJbWF4X3BmbjsKKwkvKiBudW1iZXIgb2YgVk1JRHMgKi8K Kwl1bnNpZ25lZAkJCW52bTsKKwkvKiB2cmFtIGJhc2UgYWRkcmVzcyBmb3IgcGFnZSB0YWJsZSBl bnRyeSAgKi8KKwl1NjQJCQkJdnJhbV9iYXNlX29mZnNldDsKKwkvKiBpcyB2bSBlbmFibGVkPyAq LworCWJvb2wJCQkJZW5hYmxlZDsKKwkvKiBmb3IgaHcgdG8gc2F2ZSB0aGUgUEQgYWRkciBvbiBz dXNwZW5kL3Jlc3VtZSAqLworCXVpbnQzMl90CQkJc2F2ZWRfdGFibGVfYWRkcltBTURHUFVfTlVN X1ZNXTsKKwkvKiB2bSBwdGUgaGFuZGxpbmcgKi8KKwljb25zdCBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0 ZV9mdW5jcyAgICAgICAgKnZtX3B0ZV9mdW5jczsKKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcgICAgICAg ICAgICAgICAgICAgICAgKnZtX3B0ZV9mdW5jc19yaW5nOworfTsKKworLyoKKyAqIGNvbnRleHQg cmVsYXRlZCBzdHJ1Y3R1cmVzCisgKi8KKworc3RydWN0IGFtZGdwdV9jdHhfc3RhdGUgeworCXVp bnQ2NF90IGZsYWdzOworCXVpbnQ2NF90IGhhbmdzOworfTsKKworc3RydWN0IGFtZGdwdV9jdHgg eworCS8qIGNhbGwga3JlZl9nZXQoKWJlZm9yZSBDUyBzdGFydCBhbmQga3JlZl9wdXQoKSBhZnRl ciBDUyBmZW5jZSBzaWduYWxlZCAqLworCXN0cnVjdCBrcmVmIHJlZmNvdW50OworCXN0cnVjdCBh bWRncHVfZnByaXYgKmZwcml2OworCXN0cnVjdCBhbWRncHVfY3R4X3N0YXRlIHN0YXRlOworCXVp bnQzMl90IGlkOworfTsKKworc3RydWN0IGFtZGdwdV9jdHhfbWdyIHsKKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldjsKKwlzdHJ1Y3QgaWRyIGN0eF9oYW5kbGVzOworCS8qIGxvY2sgZm9yIElE UiBzeXN0ZW0gKi8KKwlzdHJ1Y3QgbXV0ZXggaGxvY2s7Cit9OworCisvKgorICogZmlsZSBwcml2 YXRlIHN0cnVjdHVyZQorICovCisKK3N0cnVjdCBhbWRncHVfZnByaXYgeworCXN0cnVjdCBhbWRn cHVfdm0Jdm07CisJc3RydWN0IG11dGV4CQlib19saXN0X2xvY2s7CisJc3RydWN0IGlkcgkJYm9f bGlzdF9oYW5kbGVzOworCXN0cnVjdCBhbWRncHVfY3R4X21nciBjdHhfbWdyOworfTsKKworLyoK KyAqIHJlc2lkZW5jeSBsaXN0CisgKi8KKworc3RydWN0IGFtZGdwdV9ib19saXN0IHsKKwlzdHJ1 Y3QgbXV0ZXggbG9jazsKKwlzdHJ1Y3QgYW1kZ3B1X2JvICpnZHNfb2JqOworCXN0cnVjdCBhbWRn cHVfYm8gKmd3c19vYmo7CisJc3RydWN0IGFtZGdwdV9ibyAqb2Ffb2JqOworCWJvb2wgaGFzX3Vz ZXJwdHI7CisJdW5zaWduZWQgbnVtX2VudHJpZXM7CisJc3RydWN0IGFtZGdwdV9ib19saXN0X2Vu dHJ5ICphcnJheTsKK307CisKK3N0cnVjdCBhbWRncHVfYm9fbGlzdCAqCithbWRncHVfYm9fbGlz dF9nZXQoc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsIGludCBpZCk7Cit2b2lkIGFtZGdwdV9i b19saXN0X3B1dChzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3QgKmxpc3QpOwordm9pZCBhbWRncHVfYm9f bGlzdF9mcmVlKHN0cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdCk7CisKKy8qCisgKiBHRlggc3R1 ZmYKKyAqLworI2luY2x1ZGUgImNsZWFyc3RhdGVfZGVmcy5oIgorCitzdHJ1Y3QgYW1kZ3B1X3Js YyB7CisJLyogZm9yIHBvd2VyIGdhdGluZyAqLworCXN0cnVjdCBhbWRncHVfYm8JKnNhdmVfcmVz dG9yZV9vYmo7CisJdWludDY0X3QJCXNhdmVfcmVzdG9yZV9ncHVfYWRkcjsKKwl2b2xhdGlsZSB1 aW50MzJfdAkqc3JfcHRyOworCWNvbnN0IHUzMiAgICAgICAgICAgICAgICpyZWdfbGlzdDsKKwl1 MzIgICAgICAgICAgICAgICAgICAgICByZWdfbGlzdF9zaXplOworCS8qIGZvciBjbGVhciBzdGF0 ZSAqLworCXN0cnVjdCBhbWRncHVfYm8JKmNsZWFyX3N0YXRlX29iajsKKwl1aW50NjRfdAkJY2xl YXJfc3RhdGVfZ3B1X2FkZHI7CisJdm9sYXRpbGUgdWludDMyX3QJKmNzX3B0cjsKKwljb25zdCBz dHJ1Y3QgY3Nfc2VjdGlvbl9kZWYgICAqY3NfZGF0YTsKKwl1MzIgICAgICAgICAgICAgICAgICAg ICBjbGVhcl9zdGF0ZV9zaXplOworCS8qIGZvciBjcCB0YWJsZXMgKi8KKwlzdHJ1Y3QgYW1kZ3B1 X2JvCSpjcF90YWJsZV9vYmo7CisJdWludDY0X3QJCWNwX3RhYmxlX2dwdV9hZGRyOworCXZvbGF0 aWxlIHVpbnQzMl90CSpjcF90YWJsZV9wdHI7CisJdTMyICAgICAgICAgICAgICAgICAgICAgY3Bf dGFibGVfc2l6ZTsKK307CisKK3N0cnVjdCBhbWRncHVfbWVjIHsKKwlzdHJ1Y3QgYW1kZ3B1X2Jv CSpocGRfZW9wX29iajsKKwl1NjQJCQlocGRfZW9wX2dwdV9hZGRyOworCXUzMiBudW1fcGlwZTsK Kwl1MzIgbnVtX21lYzsKKwl1MzIgbnVtX3F1ZXVlOworfTsKKworLyoKKyAqIEdQVSBzY3JhdGNo IHJlZ2lzdGVycyBzdHJ1Y3R1cmVzLCBmdW5jdGlvbnMgJiBoZWxwZXJzCisgKi8KK3N0cnVjdCBh bWRncHVfc2NyYXRjaCB7CisJdW5zaWduZWQJCW51bV9yZWc7CisJdWludDMyX3QgICAgICAgICAg ICAgICAgcmVnX2Jhc2U7CisJYm9vbAkJCWZyZWVbMzJdOworCXVpbnQzMl90CQlyZWdbMzJdOwor fTsKKworLyoKKyAqIEdGWCBjb25maWd1cmF0aW9ucworICovCitzdHJ1Y3QgYW1kZ3B1X2djYV9j b25maWcgeworCXVuc2lnbmVkIG1heF9zaGFkZXJfZW5naW5lczsKKwl1bnNpZ25lZCBtYXhfdGls ZV9waXBlczsKKwl1bnNpZ25lZCBtYXhfY3VfcGVyX3NoOworCXVuc2lnbmVkIG1heF9zaF9wZXJf c2U7CisJdW5zaWduZWQgbWF4X2JhY2tlbmRzX3Blcl9zZTsKKwl1bnNpZ25lZCBtYXhfdGV4dHVy ZV9jaGFubmVsX2NhY2hlczsKKwl1bnNpZ25lZCBtYXhfZ3ByczsKKwl1bnNpZ25lZCBtYXhfZ3Nf dGhyZWFkczsKKwl1bnNpZ25lZCBtYXhfaHdfY29udGV4dHM7CisJdW5zaWduZWQgc2NfcHJpbV9m aWZvX3NpemVfZnJvbnRlbmQ7CisJdW5zaWduZWQgc2NfcHJpbV9maWZvX3NpemVfYmFja2VuZDsK Kwl1bnNpZ25lZCBzY19oaXpfdGlsZV9maWZvX3NpemU7CisJdW5zaWduZWQgc2NfZWFybHl6X3Rp bGVfZmlmb19zaXplOworCisJdW5zaWduZWQgbnVtX3RpbGVfcGlwZXM7CisJdW5zaWduZWQgYmFj a2VuZF9lbmFibGVfbWFzazsKKwl1bnNpZ25lZCBtZW1fbWF4X2J1cnN0X2xlbmd0aF9ieXRlczsK Kwl1bnNpZ25lZCBtZW1fcm93X3NpemVfaW5fa2I7CisJdW5zaWduZWQgc2hhZGVyX2VuZ2luZV90 aWxlX3NpemU7CisJdW5zaWduZWQgbnVtX2dwdXM7CisJdW5zaWduZWQgbXVsdGlfZ3B1X3RpbGVf c2l6ZTsKKwl1bnNpZ25lZCBtY19hcmJfcmFtY2ZnOworCXVuc2lnbmVkIGdiX2FkZHJfY29uZmln OworCisJdWludDMyX3QgdGlsZV9tb2RlX2FycmF5WzMyXTsKKwl1aW50MzJfdCBtYWNyb3RpbGVf bW9kZV9hcnJheVsxNl07Cit9OworCitzdHJ1Y3QgYW1kZ3B1X2dmeCB7CisJc3RydWN0IG11dGV4 CQkJZ3B1X2Nsb2NrX211dGV4OworCXN0cnVjdCBhbWRncHVfZ2NhX2NvbmZpZwljb25maWc7CisJ c3RydWN0IGFtZGdwdV9ybGMJCXJsYzsKKwlzdHJ1Y3QgYW1kZ3B1X21lYwkJbWVjOworCXN0cnVj dCBhbWRncHVfc2NyYXRjaAkJc2NyYXRjaDsKKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUJCSptZV9m dzsJLyogTUUgZmlybXdhcmUgKi8KKwl1aW50MzJfdAkJCW1lX2Z3X3ZlcnNpb247CisJY29uc3Qg c3RydWN0IGZpcm13YXJlCQkqcGZwX2Z3OyAvKiBQRlAgZmlybXdhcmUgKi8KKwl1aW50MzJfdAkJ CXBmcF9md192ZXJzaW9uOworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZQkJKmNlX2Z3OwkvKiBDRSBm aXJtd2FyZSAqLworCXVpbnQzMl90CQkJY2VfZndfdmVyc2lvbjsKKwljb25zdCBzdHJ1Y3QgZmly bXdhcmUJCSpybGNfZnc7IC8qIFJMQyBmaXJtd2FyZSAqLworCXVpbnQzMl90CQkJcmxjX2Z3X3Zl cnNpb247CisJY29uc3Qgc3RydWN0IGZpcm13YXJlCQkqbWVjX2Z3OyAvKiBNRUMgZmlybXdhcmUg Ki8KKwl1aW50MzJfdAkJCW1lY19md192ZXJzaW9uOworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZQkJ Km1lYzJfZnc7IC8qIE1FQzIgZmlybXdhcmUgKi8KKwl1aW50MzJfdAkJCW1lYzJfZndfdmVyc2lv bjsKKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcJCWdmeF9yaW5nW0FNREdQVV9NQVhfR0ZYX1JJTkdTXTsK Kwl1bnNpZ25lZAkJCW51bV9nZnhfcmluZ3M7CisJc3RydWN0IGFtZGdwdV9yaW5nCQljb21wdXRl X3JpbmdbQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTXTsKKwl1bnNpZ25lZAkJCW51bV9jb21wdXRl X3JpbmdzOworCXN0cnVjdCBhbWRncHVfaXJxX3NyYwkJZW9wX2lycTsKKwlzdHJ1Y3QgYW1kZ3B1 X2lycV9zcmMJCXByaXZfcmVnX2lycTsKKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCXByaXZfaW5z dF9pcnE7CisJLyogZ2Z4IHN0YXR1cyAqLworCXVpbnQzMl90IGdmeF9jdXJyZW50X3N0YXR1czsK KwkvKiBzeW5jIHNpZ25hbCBmb3IgY29uc3QgZW5naW5lICovCisJdW5zaWduZWQgY2Vfc3luY19v ZmZzOworfTsKKworaW50IGFtZGdwdV9pYl9nZXQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBz dHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKKwkJICB1bnNpZ25lZCBzaXplLCBzdHJ1Y3QgYW1kZ3B1X2li ICppYik7Cit2b2lkIGFtZGdwdV9pYl9mcmVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBz dHJ1Y3QgYW1kZ3B1X2liICppYik7CitpbnQgYW1kZ3B1X2liX3NjaGVkdWxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAorCQkgICAgICAgc3RydWN0IGFtZGdw dV9pYiAqaWIsIHZvaWQgKm93bmVyKTsKK2ludCBhbWRncHVfaWJfcG9vbF9pbml0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KTsKK3ZvaWQgYW1kZ3B1X2liX3Bvb2xfZmluaShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldik7CitpbnQgYW1kZ3B1X2liX3JpbmdfdGVzdHMoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpOworLyogUmluZyBhY2Nlc3MgYmV0d2VlbiBiZWdpbiAmIGVuZCBjYW5u b3Qgc2xlZXAgKi8KK3ZvaWQgYW1kZ3B1X3JpbmdfZnJlZV9zaXplKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZyk7CitpbnQgYW1kZ3B1X3JpbmdfYWxsb2Moc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LCB1bnNpZ25lZCBuZHcpOworaW50IGFtZGdwdV9yaW5nX2xvY2soc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1bnNpZ25lZCBuZHcpOwordm9pZCBhbWRncHVfcmluZ19jb21taXQoc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nKTsKK3ZvaWQgYW1kZ3B1X3JpbmdfdW5sb2NrX2NvbW1pdChzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpOwordm9pZCBhbWRncHVfcmluZ191bmRvKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZyk7Cit2b2lkIGFtZGdwdV9yaW5nX3VubG9ja191bmRvKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZyk7Cit2b2lkIGFtZGdwdV9yaW5nX2xvY2t1cF91cGRhdGUoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nKTsKK2Jvb2wgYW1kZ3B1X3JpbmdfdGVzdF9sb2NrdXAoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nKTsKK3Vuc2lnbmVkIGFtZGdwdV9yaW5nX2JhY2t1cChzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsCisJCQkgICAgdWludDMyX3QgKipkYXRhKTsKK2ludCBhbWRncHVfcmluZ19y ZXN0b3JlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKKwkJCXVuc2lnbmVkIHNpemUsIHVpbnQz Ml90ICpkYXRhKTsKK2ludCBhbWRncHVfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCisJCSAgICAgdW5zaWduZWQgcmluZ19zaXpl LCB1MzIgbm9wLCB1MzIgYWxpZ25fbWFzaywKKwkJICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMg KmlycV9zcmMsIHVuc2lnbmVkIGlycV90eXBlLAorCQkgICAgIGVudW0gYW1kZ3B1X3JpbmdfdHlw ZSByaW5nX3R5cGUpOwordm9pZCBhbWRncHVfcmluZ19maW5pKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZyk7CisKKy8qCisgKiBDUy4KKyAqLworc3RydWN0IGFtZGdwdV9jc19jaHVuayB7CisJdWlu dDMyX3QJCWNodW5rX2lkOworCXVpbnQzMl90CQlsZW5ndGhfZHc7CisJdWludDMyX3QJCSprZGF0 YTsKKwl2b2lkIF9fdXNlcgkJKnVzZXJfcHRyOworfTsKKworc3RydWN0IGFtZGdwdV9jc19wYXJz ZXIgeworCXN0cnVjdCBhbWRncHVfZGV2aWNlCSphZGV2OworCXN0cnVjdCBkcm1fZmlsZQkJKmZp bHA7CisJdWludDMyX3QgY3R4X2lkOworCXN0cnVjdCBhbWRncHVfYm9fbGlzdCAqYm9fbGlzdDsK KwkvKiBjaHVua3MgKi8KKwl1bnNpZ25lZAkJbmNodW5rczsKKwlzdHJ1Y3QgYW1kZ3B1X2NzX2No dW5rCSpjaHVua3M7CisJLyogcmVsb2NhdGlvbnMgKi8KKwlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3Rf ZW50cnkJKnZtX2JvczsKKwlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkJKmliX2JvczsKKwlz dHJ1Y3QgbGlzdF9oZWFkCXZhbGlkYXRlZDsKKworCXN0cnVjdCBhbWRncHVfaWIJKmliczsKKwl1 aW50MzJfdAkJbnVtX2liczsKKworCXN0cnVjdCB3d19hY3F1aXJlX2N0eAl0aWNrZXQ7CisKKwkv KiB1c2VyIGZlbmNlICovCisJc3RydWN0IGFtZGdwdV91c2VyX2ZlbmNlIHVmOworfTsKKworc3Rh dGljIGlubGluZSB1MzIgYW1kZ3B1X2dldF9pYl92YWx1ZShzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNl ciAqcCwgdWludDMyX3QgaWJfaWR4LCBpbnQgaWR4KQoreworCXJldHVybiBwLT5pYnNbaWJfaWR4 XS5wdHJbaWR4XTsKK30KKworLyoKKyAqIFdyaXRlYmFjaworICovCisjZGVmaW5lIEFNREdQVV9N QVhfV0IgMTAyNAkvKiBSZXNlcnZlIGF0IG1vc3QgMTAyNCBXQiBzbG90cyBmb3IgYW1kZ3B1LW93 bmVkIHJpbmdzLiAqLworCitzdHJ1Y3QgYW1kZ3B1X3diIHsKKwlzdHJ1Y3QgYW1kZ3B1X2JvCSp3 Yl9vYmo7CisJdm9sYXRpbGUgdWludDMyX3QJKndiOworCXVpbnQ2NF90CQlncHVfYWRkcjsKKwl1 MzIJCQludW1fd2I7CS8qIE51bWJlciBvZiB3YiBzbG90cyBhY3R1YWxseSByZXNlcnZlZCBmb3Ig YW1kZ3B1LiAqLworCXVuc2lnbmVkIGxvbmcJCXVzZWRbRElWX1JPVU5EX1VQKEFNREdQVV9NQVhf V0IsIEJJVFNfUEVSX0xPTkcpXTsKK307CisKK2ludCBhbWRncHVfd2JfZ2V0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1MzIgKndiKTsKK3ZvaWQgYW1kZ3B1X3diX2ZyZWUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiB3Yik7CisKKy8qKgorICogc3RydWN0IGFtZGdwdV9wbSAt IHBvd2VyIG1hbmFnZW1lbnQgZGF0YXMKKyAqIEl0IGtlZXBzIHRyYWNrIG9mIHZhcmlvdXMgZGF0 YSBuZWVkZWQgdG8gdGFrZSBwb3dlcm1hbmFnZW1lbnQgZGVjaXNpb24uCisgKi8KKworZW51bSBh bWRncHVfcG1fc3RhdGVfdHlwZSB7CisJLyogbm90IHVzZWQgZm9yIGRwbSAqLworCVBPV0VSX1NU QVRFX1RZUEVfREVGQVVMVCwKKwlQT1dFUl9TVEFURV9UWVBFX1BPV0VSU0FWRSwKKwkvKiB1c2Vy IHNlbGVjdGFibGUgc3RhdGVzICovCisJUE9XRVJfU1RBVEVfVFlQRV9CQVRURVJZLAorCVBPV0VS X1NUQVRFX1RZUEVfQkFMQU5DRUQsCisJUE9XRVJfU1RBVEVfVFlQRV9QRVJGT1JNQU5DRSwKKwkv KiBpbnRlcm5hbCBzdGF0ZXMgKi8KKwlQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VWRCwKKwlQ T1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VWRF9TRCwKKwlQT1dFUl9TVEFURV9UWVBFX0lOVEVS TkFMX1VWRF9IRCwKKwlQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VWRF9IRDIsCisJUE9XRVJf U1RBVEVfVFlQRV9JTlRFUk5BTF9VVkRfTVZDLAorCVBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxf Qk9PVCwKKwlQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1RIRVJNQUwsCisJUE9XRVJfU1RBVEVf VFlQRV9JTlRFUk5BTF9BQ1BJLAorCVBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfVUxWLAorCVBP V0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfM0RQRVJGLAorfTsKKworZW51bSBhbWRncHVfaW50X3Ro ZXJtYWxfdHlwZSB7CisJVEhFUk1BTF9UWVBFX05PTkUsCisJVEhFUk1BTF9UWVBFX0VYVEVSTkFM LAorCVRIRVJNQUxfVFlQRV9FWFRFUk5BTF9HUElPLAorCVRIRVJNQUxfVFlQRV9SVjZYWCwKKwlU SEVSTUFMX1RZUEVfUlY3NzAsCisJVEhFUk1BTF9UWVBFX0FEVDc0NzNfV0lUSF9JTlRFUk5BTCwK KwlUSEVSTUFMX1RZUEVfRVZFUkdSRUVOLAorCVRIRVJNQUxfVFlQRV9TVU1PLAorCVRIRVJNQUxf VFlQRV9OSSwKKwlUSEVSTUFMX1RZUEVfU0ksCisJVEhFUk1BTF9UWVBFX0VNQzIxMDNfV0lUSF9J TlRFUk5BTCwKKwlUSEVSTUFMX1RZUEVfQ0ksCisJVEhFUk1BTF9UWVBFX0tWLAorfTsKKworZW51 bSBhbWRncHVfZHBtX2F1dG9fdGhyb3R0bGVfc3JjIHsKKwlBTURHUFVfRFBNX0FVVE9fVEhST1RU TEVfU1JDX1RIRVJNQUwsCisJQU1ER1BVX0RQTV9BVVRPX1RIUk9UVExFX1NSQ19FWFRFUk5BTAor fTsKKworZW51bSBhbWRncHVfZHBtX2V2ZW50X3NyYyB7CisJQU1ER1BVX0RQTV9FVkVOVF9TUkNf QU5BTE9HID0gMCwKKwlBTURHUFVfRFBNX0VWRU5UX1NSQ19FWFRFUk5BTCA9IDEsCisJQU1ER1BV X0RQTV9FVkVOVF9TUkNfRElHSVRBTCA9IDIsCisJQU1ER1BVX0RQTV9FVkVOVF9TUkNfQU5BTE9H X09SX0VYVEVSTkFMID0gMywKKwlBTURHUFVfRFBNX0VWRU5UX1NSQ19ESUdJQUxfT1JfRVhURVJO QUwgPSA0Cit9OworCisjZGVmaW5lIEFNREdQVV9NQVhfVkNFX0xFVkVMUyA2CisKK2VudW0gYW1k Z3B1X3ZjZV9sZXZlbCB7CisJQU1ER1BVX1ZDRV9MRVZFTF9BQ19BTEwgPSAwLCAgICAgLyogQUMs IEFsbCBjYXNlcyAqLworCUFNREdQVV9WQ0VfTEVWRUxfRENfRUUgPSAxLCAgICAgIC8qIERDLCBl bnRyb3B5IGVuY29kaW5nICovCisJQU1ER1BVX1ZDRV9MRVZFTF9EQ19MTF9MT1cgPSAyLCAgLyog REMsIGxvdyBsYXRlbmN5IHF1ZXVlLCByZXMgPD0gNzIwICovCisJQU1ER1BVX1ZDRV9MRVZFTF9E Q19MTF9ISUdIID0gMywgLyogREMsIGxvdyBsYXRlbmN5IHF1ZXVlLCAxMDgwID49IHJlcyA+IDcy MCAqLworCUFNREdQVV9WQ0VfTEVWRUxfRENfR1BfTE9XID0gNCwgIC8qIERDLCBnZW5lcmFsIHB1 cnBvc2UgcXVldWUsIHJlcyA8PSA3MjAgKi8KKwlBTURHUFVfVkNFX0xFVkVMX0RDX0dQX0hJR0gg PSA1LCAvKiBEQywgZ2VuZXJhbCBwdXJwb3NlIHF1ZXVlLCAxMDgwID49IHJlcyA+IDcyMCAqLwor fTsKKworc3RydWN0IGFtZGdwdV9wcyB7CisJdTMyIGNhcHM7IC8qIHZiaW9zIGZsYWdzICovCisJ dTMyIGNsYXNzOyAvKiB2YmlvcyBmbGFncyAqLworCXUzMiBjbGFzczI7IC8qIHZiaW9zIGZsYWdz ICovCisJLyogVVZEIGNsb2NrcyAqLworCXUzMiB2Y2xrOworCXUzMiBkY2xrOworCS8qIFZDRSBj bG9ja3MgKi8KKwl1MzIgZXZjbGs7CisJdTMyIGVjY2xrOworCWJvb2wgdmNlX2FjdGl2ZTsKKwll bnVtIGFtZGdwdV92Y2VfbGV2ZWwgdmNlX2xldmVsOworCS8qIGFzaWMgcHJpdiAqLworCXZvaWQg KnBzX3ByaXY7Cit9OworCitzdHJ1Y3QgYW1kZ3B1X2RwbV90aGVybWFsIHsKKwkvKiB0aGVybWFs IGludGVycnVwdCB3b3JrICovCisJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CisJLyogbG93IHRl bXBlcmF0dXJlIHRocmVzaG9sZCAqLworCWludCAgICAgICAgICAgICAgICBtaW5fdGVtcDsKKwkv KiBoaWdoIHRlbXBlcmF0dXJlIHRocmVzaG9sZCAqLworCWludCAgICAgICAgICAgICAgICBtYXhf dGVtcDsKKwkvKiB3YXMgbGFzdCBpbnRlcnJ1cHQgbG93IHRvIGhpZ2ggb3IgaGlnaCB0byBsb3cg Ki8KKwlib29sICAgICAgICAgICAgICAgaGlnaF90b19sb3c7CisJLyogaW50ZXJydXB0IHNvdXJj ZSAqLworCXN0cnVjdCBhbWRncHVfaXJxX3NyYwlpcnE7Cit9OworCitlbnVtIGFtZGdwdV9jbGtf YWN0aW9uCit7CisJQU1ER1BVX1NDTEtfVVAgPSAxLAorCUFNREdQVV9TQ0xLX0RPV04KK307CisK K3N0cnVjdCBhbWRncHVfYmxhY2tsaXN0X2Nsb2NrcworeworCXUzMiBzY2xrOworCXUzMiBtY2xr OworCWVudW0gYW1kZ3B1X2Nsa19hY3Rpb24gYWN0aW9uOworfTsKKworc3RydWN0IGFtZGdwdV9j bG9ja19hbmRfdm9sdGFnZV9saW1pdHMgeworCXUzMiBzY2xrOworCXUzMiBtY2xrOworCXUxNiB2 ZGRjOworCXUxNiB2ZGRjaTsKK307CisKK3N0cnVjdCBhbWRncHVfY2xvY2tfYXJyYXkgeworCXUz MiBjb3VudDsKKwl1MzIgKnZhbHVlczsKK307CisKK3N0cnVjdCBhbWRncHVfY2xvY2tfdm9sdGFn ZV9kZXBlbmRlbmN5X2VudHJ5IHsKKwl1MzIgY2xrOworCXUxNiB2OworfTsKKworc3RydWN0IGFt ZGdwdV9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfdGFibGUgeworCXUzMiBjb3VudDsKKwlzdHJ1 Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV9lbnRyeSAqZW50cmllczsKK307CisK K3VuaW9uIGFtZGdwdV9jYWNfbGVha2FnZV9lbnRyeSB7CisJc3RydWN0IHsKKwkJdTE2IHZkZGM7 CisJCXUzMiBsZWFrYWdlOworCX07CisJc3RydWN0IHsKKwkJdTE2IHZkZGMxOworCQl1MTYgdmRk YzI7CisJCXUxNiB2ZGRjMzsKKwl9OworfTsKKworc3RydWN0IGFtZGdwdV9jYWNfbGVha2FnZV90 YWJsZSB7CisJdTMyIGNvdW50OworCXVuaW9uIGFtZGdwdV9jYWNfbGVha2FnZV9lbnRyeSAqZW50 cmllczsKK307CisKK3N0cnVjdCBhbWRncHVfcGhhc2Vfc2hlZGRpbmdfbGltaXRzX2VudHJ5IHsK Kwl1MTYgdm9sdGFnZTsKKwl1MzIgc2NsazsKKwl1MzIgbWNsazsKK307CisKK3N0cnVjdCBhbWRn cHVfcGhhc2Vfc2hlZGRpbmdfbGltaXRzX3RhYmxlIHsKKwl1MzIgY291bnQ7CisJc3RydWN0IGFt ZGdwdV9waGFzZV9zaGVkZGluZ19saW1pdHNfZW50cnkgKmVudHJpZXM7Cit9OworCitzdHJ1Y3Qg YW1kZ3B1X3V2ZF9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfZW50cnkgeworCXUzMiB2Y2xrOwor CXUzMiBkY2xrOworCXUxNiB2OworfTsKKworc3RydWN0IGFtZGdwdV91dmRfY2xvY2tfdm9sdGFn ZV9kZXBlbmRlbmN5X3RhYmxlIHsKKwl1OCBjb3VudDsKKwlzdHJ1Y3QgYW1kZ3B1X3V2ZF9jbG9j a192b2x0YWdlX2RlcGVuZGVuY3lfZW50cnkgKmVudHJpZXM7Cit9OworCitzdHJ1Y3QgYW1kZ3B1 X3ZjZV9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfZW50cnkgeworCXUzMiBlY2NsazsKKwl1MzIg ZXZjbGs7CisJdTE2IHY7Cit9OworCitzdHJ1Y3QgYW1kZ3B1X3ZjZV9jbG9ja192b2x0YWdlX2Rl cGVuZGVuY3lfdGFibGUgeworCXU4IGNvdW50OworCXN0cnVjdCBhbWRncHVfdmNlX2Nsb2NrX3Zv bHRhZ2VfZGVwZW5kZW5jeV9lbnRyeSAqZW50cmllczsKK307CisKK3N0cnVjdCBhbWRncHVfcHBt X3RhYmxlIHsKKwl1OCBwcG1fZGVzaWduOworCXUxNiBjcHVfY29yZV9udW1iZXI7CisJdTMyIHBs YXRmb3JtX3RkcDsKKwl1MzIgc21hbGxfYWNfcGxhdGZvcm1fdGRwOworCXUzMiBwbGF0Zm9ybV90 ZGM7CisJdTMyIHNtYWxsX2FjX3BsYXRmb3JtX3RkYzsKKwl1MzIgYXB1X3RkcDsKKwl1MzIgZGdw dV90ZHA7CisJdTMyIGRncHVfdWx2X3Bvd2VyOworCXUzMiB0al9tYXg7Cit9OworCitzdHJ1Y3Qg YW1kZ3B1X2NhY190ZHBfdGFibGUgeworCXUxNiB0ZHA7CisJdTE2IGNvbmZpZ3VyYWJsZV90ZHA7 CisJdTE2IHRkYzsKKwl1MTYgYmF0dGVyeV9wb3dlcl9saW1pdDsKKwl1MTYgc21hbGxfcG93ZXJf bGltaXQ7CisJdTE2IGxvd19jYWNfbGVha2FnZTsKKwl1MTYgaGlnaF9jYWNfbGVha2FnZTsKKwl1 MTYgbWF4aW11bV9wb3dlcl9kZWxpdmVyeV9saW1pdDsKK307CisKK3N0cnVjdCBhbWRncHVfZHBt X2R5bmFtaWNfc3RhdGUgeworCXN0cnVjdCBhbWRncHVfY2xvY2tfdm9sdGFnZV9kZXBlbmRlbmN5 X3RhYmxlIHZkZGNfZGVwZW5kZW5jeV9vbl9zY2xrOworCXN0cnVjdCBhbWRncHVfY2xvY2tfdm9s dGFnZV9kZXBlbmRlbmN5X3RhYmxlIHZkZGNpX2RlcGVuZGVuY3lfb25fbWNsazsKKwlzdHJ1Y3Qg YW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSB2ZGRjX2RlcGVuZGVuY3lfb25f bWNsazsKKwlzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSBtdmRk X2RlcGVuZGVuY3lfb25fbWNsazsKKwlzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5k ZW5jeV90YWJsZSB2ZGRjX2RlcGVuZGVuY3lfb25fZGlzcGNsazsKKwlzdHJ1Y3QgYW1kZ3B1X3V2 ZF9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfdGFibGUgdXZkX2Nsb2NrX3ZvbHRhZ2VfZGVwZW5k ZW5jeV90YWJsZTsKKwlzdHJ1Y3QgYW1kZ3B1X3ZjZV9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lf dGFibGUgdmNlX2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZTsKKwlzdHJ1Y3QgYW1kZ3B1 X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSBzYW11X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5k ZW5jeV90YWJsZTsKKwlzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJs ZSBhY3BfY2xvY2tfdm9sdGFnZV9kZXBlbmRlbmN5X3RhYmxlOworCXN0cnVjdCBhbWRncHVfY2xv Y2tfdm9sdGFnZV9kZXBlbmRlbmN5X3RhYmxlIHZkZGdmeF9kZXBlbmRlbmN5X29uX3NjbGs7CisJ c3RydWN0IGFtZGdwdV9jbG9ja19hcnJheSB2YWxpZF9zY2xrX3ZhbHVlczsKKwlzdHJ1Y3QgYW1k Z3B1X2Nsb2NrX2FycmF5IHZhbGlkX21jbGtfdmFsdWVzOworCXN0cnVjdCBhbWRncHVfY2xvY2tf YW5kX3ZvbHRhZ2VfbGltaXRzIG1heF9jbG9ja192b2x0YWdlX29uX2RjOworCXN0cnVjdCBhbWRn cHVfY2xvY2tfYW5kX3ZvbHRhZ2VfbGltaXRzIG1heF9jbG9ja192b2x0YWdlX29uX2FjOworCXUz MiBtY2xrX3NjbGtfcmF0aW87CisJdTMyIHNjbGtfbWNsa19kZWx0YTsKKwl1MTYgdmRkY192ZGRj aV9kZWx0YTsKKwl1MTYgbWluX3ZkZGNfZm9yX3BjaWVfZ2VuMjsKKwlzdHJ1Y3QgYW1kZ3B1X2Nh Y19sZWFrYWdlX3RhYmxlIGNhY19sZWFrYWdlX3RhYmxlOworCXN0cnVjdCBhbWRncHVfcGhhc2Vf c2hlZGRpbmdfbGltaXRzX3RhYmxlIHBoYXNlX3NoZWRkaW5nX2xpbWl0c190YWJsZTsKKwlzdHJ1 Y3QgYW1kZ3B1X3BwbV90YWJsZSAqcHBtX3RhYmxlOworCXN0cnVjdCBhbWRncHVfY2FjX3RkcF90 YWJsZSAqY2FjX3RkcF90YWJsZTsKK307CisKK3N0cnVjdCBhbWRncHVfZHBtX2ZhbiB7CisJdTE2 IHRfbWluOworCXUxNiB0X21lZDsKKwl1MTYgdF9oaWdoOworCXUxNiBwd21fbWluOworCXUxNiBw d21fbWVkOworCXUxNiBwd21faGlnaDsKKwl1OCB0X2h5c3Q7CisJdTMyIGN5Y2xlX2RlbGF5Owor CXUxNiB0X21heDsKKwl1OCBjb250cm9sX21vZGU7CisJdTE2IGRlZmF1bHRfbWF4X2Zhbl9wd207 CisJdTE2IGRlZmF1bHRfZmFuX291dHB1dF9zZW5zaXRpdml0eTsKKwl1MTYgZmFuX291dHB1dF9z ZW5zaXRpdml0eTsKKwlib29sIHVjb2RlX2Zhbl9jb250cm9sOworfTsKKworZW51bSBhbWRncHVf cGNpZV9nZW4geworCUFNREdQVV9QQ0lFX0dFTjEgPSAwLAorCUFNREdQVV9QQ0lFX0dFTjIgPSAx LAorCUFNREdQVV9QQ0lFX0dFTjMgPSAyLAorCUFNREdQVV9QQ0lFX0dFTl9JTlZBTElEID0gMHhm ZmZmCit9OworCitlbnVtIGFtZGdwdV9kcG1fZm9yY2VkX2xldmVsIHsKKwlBTURHUFVfRFBNX0ZP UkNFRF9MRVZFTF9BVVRPID0gMCwKKwlBTURHUFVfRFBNX0ZPUkNFRF9MRVZFTF9MT1cgPSAxLAor CUFNREdQVV9EUE1fRk9SQ0VEX0xFVkVMX0hJR0ggPSAyLAorfTsKKworc3RydWN0IGFtZGdwdV92 Y2Vfc3RhdGUgeworCS8qIHZjZSBjbG9ja3MgKi8KKwl1MzIgZXZjbGs7CisJdTMyIGVjY2xrOwor CS8qIGdwdSBjbG9ja3MgKi8KKwl1MzIgc2NsazsKKwl1MzIgbWNsazsKKwl1OCBjbGtfaWR4Owor CXU4IHBzdGF0ZTsKK307CisKK3N0cnVjdCBhbWRncHVfZHBtX2Z1bmNzIHsKKwlpbnQgKCpnZXRf dGVtcGVyYXR1cmUpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwlpbnQgKCpwcmVfc2V0 X3Bvd2VyX3N0YXRlKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJaW50ICgqc2V0X3Bv d2VyX3N0YXRlKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJdm9pZCAoKnBvc3Rfc2V0 X3Bvd2VyX3N0YXRlKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJdm9pZCAoKmRpc3Bs YXlfY29uZmlndXJhdGlvbl9jaGFuZ2VkKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJ dTMyICgqZ2V0X3NjbGspKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGxvdyk7CisJ dTMyICgqZ2V0X21jbGspKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGxvdyk7CisJ dm9pZCAoKnByaW50X3Bvd2VyX3N0YXRlKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3Ry dWN0IGFtZGdwdV9wcyAqcHMpOworCXZvaWQgKCpkZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9y bWFuY2VfbGV2ZWwpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUg Km0pOworCWludCAoKmZvcmNlX3BlcmZvcm1hbmNlX2xldmVsKShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgZW51bSBhbWRncHVfZHBtX2ZvcmNlZF9sZXZlbCBsZXZlbCk7CisJYm9vbCAoKnZi bGFua190b29fc2hvcnQpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwl2b2lkICgqcG93 ZXJnYXRlX3V2ZCkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZ2F0ZSk7CisJdm9p ZCAoKmVuYWJsZV9iYXBtKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUp OworCXZvaWQgKCpzZXRfZmFuX2NvbnRyb2xfbW9kZSkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHUzMiBtb2RlKTsKKwl1MzIgKCpnZXRfZmFuX2NvbnRyb2xfbW9kZSkoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpOworCWludCAoKnNldF9mYW5fc3BlZWRfcGVyY2VudCkoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiBzcGVlZCk7CisJaW50ICgqZ2V0X2Zhbl9zcGVlZF9wZXJj ZW50KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyICpzcGVlZCk7Cit9OworCitzdHJ1 Y3QgYW1kZ3B1X2RwbSB7CisJc3RydWN0IGFtZGdwdV9wcyAgICAgICAgKnBzOworCS8qIG51bWJl ciBvZiB2YWxpZCBwb3dlciBzdGF0ZXMgKi8KKwlpbnQgICAgICAgICAgICAgICAgICAgICBudW1f cHM7CisJLyogY3VycmVudCBwb3dlciBzdGF0ZSB0aGF0IGlzIGFjdGl2ZSAqLworCXN0cnVjdCBh bWRncHVfcHMgICAgICAgICpjdXJyZW50X3BzOworCS8qIHJlcXVlc3RlZCBwb3dlciBzdGF0ZSAq LworCXN0cnVjdCBhbWRncHVfcHMgICAgICAgICpyZXF1ZXN0ZWRfcHM7CisJLyogYm9vdCB1cCBw b3dlciBzdGF0ZSAqLworCXN0cnVjdCBhbWRncHVfcHMgICAgICAgICpib290X3BzOworCS8qIGRl ZmF1bHQgdXZkIHBvd2VyIHN0YXRlICovCisJc3RydWN0IGFtZGdwdV9wcyAgICAgICAgKnV2ZF9w czsKKwkvKiB2Y2UgcmVxdWlyZW1lbnRzICovCisJc3RydWN0IGFtZGdwdV92Y2Vfc3RhdGUgdmNl X3N0YXRlc1tBTURHUFVfTUFYX1ZDRV9MRVZFTFNdOworCWVudW0gYW1kZ3B1X3ZjZV9sZXZlbCB2 Y2VfbGV2ZWw7CisJZW51bSBhbWRncHVfcG1fc3RhdGVfdHlwZSBzdGF0ZTsKKwllbnVtIGFtZGdw dV9wbV9zdGF0ZV90eXBlIHVzZXJfc3RhdGU7CisJdTMyICAgICAgICAgICAgICAgICAgICAgcGxh dGZvcm1fY2FwczsKKwl1MzIgICAgICAgICAgICAgICAgICAgICB2b2x0YWdlX3Jlc3BvbnNlX3Rp bWU7CisJdTMyICAgICAgICAgICAgICAgICAgICAgYmFja2JpYXNfcmVzcG9uc2VfdGltZTsKKwl2 b2lkICAgICAgICAgICAgICAgICAgICAqcHJpdjsKKwl1MzIJCQluZXdfYWN0aXZlX2NydGNzOwor CWludAkJCW5ld19hY3RpdmVfY3J0Y19jb3VudDsKKwl1MzIJCQljdXJyZW50X2FjdGl2ZV9jcnRj czsKKwlpbnQJCQljdXJyZW50X2FjdGl2ZV9jcnRjX2NvdW50OworCXN0cnVjdCBhbWRncHVfZHBt X2R5bmFtaWNfc3RhdGUgZHluX3N0YXRlOworCXN0cnVjdCBhbWRncHVfZHBtX2ZhbiBmYW47CisJ dTMyIHRkcF9saW1pdDsKKwl1MzIgbmVhcl90ZHBfbGltaXQ7CisJdTMyIG5lYXJfdGRwX2xpbWl0 X2FkanVzdGVkOworCXUzMiBzcV9yYW1waW5nX3RocmVzaG9sZDsKKwl1MzIgY2FjX2xlYWthZ2U7 CisJdTE2IHRkcF9vZF9saW1pdDsKKwl1MzIgdGRwX2FkanVzdG1lbnQ7CisJdTE2IGxvYWRfbGlu ZV9zbG9wZTsKKwlib29sIHBvd2VyX2NvbnRyb2w7CisJYm9vbCBhY19wb3dlcjsKKwkvKiBzcGVj aWFsIHN0YXRlcyBhY3RpdmUgKi8KKwlib29sICAgICAgICAgICAgICAgICAgICB0aGVybWFsX2Fj dGl2ZTsKKwlib29sICAgICAgICAgICAgICAgICAgICB1dmRfYWN0aXZlOworCWJvb2wgICAgICAg ICAgICAgICAgICAgIHZjZV9hY3RpdmU7CisJLyogdGhlcm1hbCBoYW5kbGluZyAqLworCXN0cnVj dCBhbWRncHVfZHBtX3RoZXJtYWwgdGhlcm1hbDsKKwkvKiBmb3JjZWQgbGV2ZWxzICovCisJZW51 bSBhbWRncHVfZHBtX2ZvcmNlZF9sZXZlbCBmb3JjZWRfbGV2ZWw7Cit9OworCitzdHJ1Y3QgYW1k Z3B1X3BtIHsKKwlzdHJ1Y3QgbXV0ZXgJCW11dGV4OworCS8qIHdyaXRlIGxvY2tlZCB3aGlsZSBy ZXByb2dyYW1taW5nIG1jbGsgKi8KKwlzdHJ1Y3Qgcndfc2VtYXBob3JlCW1jbGtfbG9jazsKKwl1 MzIgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NjbGs7CisJdTMyICAgICAgICAgICAgICAg ICAgICAgY3VycmVudF9tY2xrOworCXUzMiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfc2Ns azsKKwl1MzIgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X21jbGs7CisJc3RydWN0IGFtZGdw dV9pMmNfY2hhbiAqaTJjX2J1czsKKwkvKiBpbnRlcm5hbCB0aGVybWFsIGNvbnRyb2xsZXIgb24g cnY2eHgrICovCisJZW51bSBhbWRncHVfaW50X3RoZXJtYWxfdHlwZSBpbnRfdGhlcm1hbF90eXBl OworCXN0cnVjdCBkZXZpY2UJICAgICAgICAqaW50X2h3bW9uX2RldjsKKwkvKiBmYW4gY29udHJv bCBwYXJhbWV0ZXJzICovCisJYm9vbCAgICAgICAgICAgICAgICAgICAgbm9fZmFuOworCXU4ICAg ICAgICAgICAgICAgICAgICAgIGZhbl9wdWxzZXNfcGVyX3Jldm9sdXRpb247CisJdTggICAgICAg ICAgICAgICAgICAgICAgZmFuX21pbl9ycG07CisJdTggICAgICAgICAgICAgICAgICAgICAgZmFu X21heF9ycG07CisJLyogZHBtICovCisJYm9vbCAgICAgICAgICAgICAgICAgICAgZHBtX2VuYWJs ZWQ7CisJc3RydWN0IGFtZGdwdV9kcG0gICAgICAgZHBtOworCWNvbnN0IHN0cnVjdCBmaXJtd2Fy ZQkqZnc7CS8qIFNNQyBmaXJtd2FyZSAqLworCXVpbnQzMl90ICAgICAgICAgICAgICAgIGZ3X3Zl cnNpb247CisJY29uc3Qgc3RydWN0IGFtZGdwdV9kcG1fZnVuY3MgKmZ1bmNzOworfTsKKworLyoK KyAqIFVWRAorICovCisjZGVmaW5lIEFNREdQVV9NQVhfVVZEX0hBTkRMRVMJMTAKKyNkZWZpbmUg QU1ER1BVX1VWRF9TVEFDS19TSVpFCSgxMDI0KjEwMjQpCisjZGVmaW5lIEFNREdQVV9VVkRfSEVB UF9TSVpFCSgxMDI0KjEwMjQpCisjZGVmaW5lIEFNREdQVV9VVkRfRklSTVdBUkVfT0ZGU0VUIDI1 NgorCitzdHJ1Y3QgYW1kZ3B1X3V2ZCB7CisJc3RydWN0IGFtZGdwdV9ibwkqdmNwdV9ibzsKKwl2 b2lkCQkJKmNwdV9hZGRyOworCXVpbnQ2NF90CQlncHVfYWRkcjsKKwl2b2lkCQkJKnNhdmVkX2Jv OworCWF0b21pY190CQloYW5kbGVzW0FNREdQVV9NQVhfVVZEX0hBTkRMRVNdOworCXN0cnVjdCBk cm1fZmlsZQkJKmZpbHBbQU1ER1BVX01BWF9VVkRfSEFORExFU107CisJc3RydWN0IGRlbGF5ZWRf d29yawlpZGxlX3dvcms7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlCSpmdzsJLyogVVZEIGZpcm13 YXJlICovCisJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmc7CisJc3RydWN0IGFtZGdwdV9pcnFfc3Jj CWlycTsKKwlib29sCQkJYWRkcmVzc182NF9iaXQ7Cit9OworCisvKgorICogVkNFCisgKi8KKyNk ZWZpbmUgQU1ER1BVX01BWF9WQ0VfSEFORExFUwkxNgorI2RlZmluZSBBTURHUFVfVkNFX1NUQUNL X1NJWkUJKDEwMjQqMTAyNCkKKyNkZWZpbmUgQU1ER1BVX1ZDRV9IRUFQX1NJWkUJKDQqMTAyNCox MDI0KQorI2RlZmluZSBBTURHUFVfVkNFX0ZJUk1XQVJFX09GRlNFVCAyNTYKKworc3RydWN0IGFt ZGdwdV92Y2UgeworCXN0cnVjdCBhbWRncHVfYm8JKnZjcHVfYm87CisJdWludDY0X3QJCWdwdV9h ZGRyOworCXVuc2lnbmVkCQlmd192ZXJzaW9uOworCXVuc2lnbmVkCQlmYl92ZXJzaW9uOworCWF0 b21pY190CQloYW5kbGVzW0FNREdQVV9NQVhfVkNFX0hBTkRMRVNdOworCXN0cnVjdCBkcm1fZmls ZQkJKmZpbHBbQU1ER1BVX01BWF9WQ0VfSEFORExFU107CisJc3RydWN0IGRlbGF5ZWRfd29yawlp ZGxlX3dvcms7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlCSpmdzsJLyogVkNFIGZpcm13YXJlICov CisJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmdbQU1ER1BVX01BWF9WQ0VfUklOR1NdOworCXN0cnVj dCBhbWRncHVfaXJxX3NyYwlpcnE7Cit9OworCisvKgorICogU0RNQQorICovCitzdHJ1Y3QgYW1k Z3B1X3NkbWEgeworCS8qIFNETUEgZmlybXdhcmUgKi8KKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUJ KmZ3OworCXVpbnQzMl90CQlmd192ZXJzaW9uOworCisJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmc7 Cit9OworCisvKgorICogRmlybXdhcmUKKyAqLworc3RydWN0IGFtZGdwdV9maXJtd2FyZSB7CisJ c3RydWN0IGFtZGdwdV9maXJtd2FyZV9pbmZvIHVjb2RlW0FNREdQVV9VQ09ERV9JRF9NQVhJTVVN XTsKKwlib29sIHNtdV9sb2FkOworCXN0cnVjdCBhbWRncHVfYm8gKmZ3X2J1ZjsKKwl1bnNpZ25l ZCBpbnQgZndfc2l6ZTsKK307CisKKy8qCisgKiBCZW5jaG1hcmtpbmcKKyAqLwordm9pZCBhbWRn cHVfYmVuY2htYXJrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgdGVzdF9udW1iZXIp OworCisKKy8qCisgKiBUZXN0aW5nCisgKi8KK3ZvaWQgYW1kZ3B1X3Rlc3RfbW92ZXMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwordm9pZCBhbWRncHVfdGVzdF9yaW5nX3N5bmMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKmNwQSwKKwkJ CSAgIHN0cnVjdCBhbWRncHVfcmluZyAqY3BCKTsKK3ZvaWQgYW1kZ3B1X3Rlc3Rfc3luY2luZyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisKKy8qCisgKiBNTVUgTm90aWZpZXIKKyAqLwor I2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKK2ludCBhbWRncHVfbW5fcmVnaXN0ZXIo c3RydWN0IGFtZGdwdV9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcik7Cit2b2lkIGFtZGdwdV9t bl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKTsKKyNlbHNlCitzdGF0aWMgaW50IGFt ZGdwdV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRy KQoreworCXJldHVybiAtRU5PREVWOworfQorc3RhdGljIHZvaWQgYW1kZ3B1X21uX3VucmVnaXN0 ZXIoc3RydWN0IGFtZGdwdV9ibyAqYm8pIHt9CisjZW5kaWYKKworLyoKKyAqIERlYnVnZnMKKyAq Lworc3RydWN0IGFtZGdwdV9kZWJ1Z2ZzIHsKKwlzdHJ1Y3QgZHJtX2luZm9fbGlzdAkqZmlsZXM7 CisJdW5zaWduZWQJCW51bV9maWxlczsKK307CisKK2ludCBhbWRncHVfZGVidWdmc19hZGRfZmls ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgICAgIHN0cnVjdCBkcm1faW5mb19s aXN0ICpmaWxlcywKKwkJCSAgICAgdW5zaWduZWQgbmZpbGVzKTsKK2ludCBhbWRncHVfZGVidWdm c19mZW5jZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKworI2lmIGRlZmluZWQo Q09ORklHX0RFQlVHX0ZTKQoraW50IGFtZGdwdV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5v ciAqbWlub3IpOwordm9pZCBhbWRncHVfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBkcm1fbWlub3Ig Km1pbm9yKTsKKyNlbmRpZgorCisvKgorICogYW1kZ3B1IHNtdW1nciBmdW5jdGlvbnMKKyAqLwor c3RydWN0IGFtZGdwdV9zbXVtZ3JfZnVuY3MgeworCWludCAoKmNoZWNrX2Z3X2xvYWRfZmluaXNo KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgZnd0eXBlKTsKKwlpbnQgKCpy ZXF1ZXN0X3NtdV9sb2FkX2Z3KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJaW50ICgq cmVxdWVzdF9zbXVfc3BlY2lmaWNfZncpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50 MzJfdCBmd3R5cGUpOworfTsKKworLyoKKyAqIGFtZGdwdSBzbXVtZ3IKKyAqLworc3RydWN0IGFt ZGdwdV9zbXVtZ3IgeworCXN0cnVjdCBhbWRncHVfYm8gKnRvY19idWY7CisJc3RydWN0IGFtZGdw dV9ibyAqc211X2J1ZjsKKwkvKiBhc2ljIHByaXYgc211IGRhdGEgKi8KKwl2b2lkICpwcml2Owor CXNwaW5sb2NrX3Qgc211X2xvY2s7CisJLyogc211bWdyIGZ1bmN0aW9ucyAqLworCWNvbnN0IHN0 cnVjdCBhbWRncHVfc211bWdyX2Z1bmNzICpzbXVtZ3JfZnVuY3M7CisJLyogdWNvZGUgbG9hZGlu ZyBjb21wbGV0ZSBmbGFnICovCisJdWludDMyX3QgZndfZmxhZ3M7Cit9OworCisvKgorICogQVNJ QyBzcGVjaWZpYyByZWdpc3RlciB0YWJsZSBhY2Nlc3NpYmxlIGJ5IFVNRAorICovCitzdHJ1Y3Qg YW1kZ3B1X2FsbG93ZWRfcmVnaXN0ZXJfZW50cnkgeworCXVpbnQzMl90IHJlZ19vZmZzZXQ7CisJ Ym9vbCB1bnRvdWNoZWQ7CisJYm9vbCBncmJtX2luZGV4ZWQ7Cit9OworCitzdHJ1Y3QgYW1kZ3B1 X2N1X2luZm8geworCXVpbnQzMl90IG51bWJlcjsgLyogdG90YWwgYWN0aXZlIENVIG51bWJlciAq LworCXVpbnQzMl90IGFvX2N1X21hc2s7CisJdWludDMyX3QgYml0bWFwWzRdWzRdOworfTsKKwor CisvKgorICogQVNJQyBzcGVjaWZpYyBmdW5jdGlvbnMuCisgKi8KK3N0cnVjdCBhbWRncHVfYXNp Y19mdW5jcyB7CisJYm9vbCAoKnJlYWRfZGlzYWJsZWRfYmlvcykoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpOworCWludCAoKnJlYWRfcmVnaXN0ZXIpKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1MzIgc2VfbnVtLAorCQkJICAgICB1MzIgc2hfbnVtLCB1MzIgcmVnX29mZnNldCwgdTMy ICp2YWx1ZSk7CisJdm9pZCAoKnNldF92Z2Ffc3RhdGUpKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBib29sIHN0YXRlKTsKKwlpbnQgKCpyZXNldCkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOworCS8qIHdhaXQgZm9yIG1jX2lkbGUgKi8KKwlpbnQgKCp3YWl0X2Zvcl9tY19pZGxlKShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisJLyogZ2V0IHRoZSByZWZlcmVuY2UgY2xvY2sg Ki8KKwl1MzIgKCpnZXRfeGNsaykoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCS8qIGdl dCB0aGUgZ3B1IGNsb2NrIGNvdW50ZXIgKi8KKwl1aW50NjRfdCAoKmdldF9ncHVfY2xvY2tfY291 bnRlcikoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCWludCAoKmdldF9jdV9pbmZvKShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV9jdV9pbmZvICppbmZvKTsK KwkvKiBNTSBibG9jayBjbG9ja3MgKi8KKwlpbnQgKCpzZXRfdXZkX2Nsb2Nrcykoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiB2Y2xrLCB1MzIgZGNsayk7CisJaW50ICgqc2V0X3ZjZV9j bG9ja3MpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgZXZjbGssIHUzMiBlY2Nsayk7 Cit9OworCisvKgorICogSU9DVEwuCisgKi8KK2ludCBhbWRncHVfZ2VtX2NyZWF0ZV9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgIHN0cnVjdCBkcm1fZmls ZSAqZmlscCk7CitpbnQgYW1kZ3B1X2JvX2xpc3RfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKKwkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworCitpbnQgYW1kZ3B1 X2dlbV9pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkg IHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CitpbnQgYW1kZ3B1X2dlbV91c2VycHRyX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bHApOworaW50IGFtZGdwdV9nZW1fbW1hcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAorCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworaW50IGFtZGdwdV9nZW1f d2FpdF9pZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkg ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworaW50IGFtZGdwdV9nZW1fdmFfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgc3RydWN0IGRybV9maWxlICpm aWxwKTsKK2ludCBhbWRncHVfZ2VtX29wX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworaW50IGFtZGdwdV9jc19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bHApOworaW50IGFtZGdwdV9jc193YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CisKK2ludCBhbWRncHVfZ2VtX21ldGFk YXRhX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJc3RydWN0 IGRybV9maWxlICpmaWxwKTsKKworLyogVlJBTSBzY3JhdGNoIHBhZ2UgZm9yIEhEUCBidWcsIGRl ZmF1bHQgdnJhbSBwYWdlICovCitzdHJ1Y3QgYW1kZ3B1X3ZyYW1fc2NyYXRjaCB7CisJc3RydWN0 IGFtZGdwdV9ibwkJKnJvYmo7CisJdm9sYXRpbGUgdWludDMyX3QJCSpwdHI7CisJdTY0CQkJCWdw dV9hZGRyOworfTsKKworLyoKKyAqIEFDUEkKKyAqLworc3RydWN0IGFtZGdwdV9hdGlmX25vdGlm aWNhdGlvbl9jZmcgeworCWJvb2wgZW5hYmxlZDsKKwlpbnQgY29tbWFuZF9jb2RlOworfTsKKwor c3RydWN0IGFtZGdwdV9hdGlmX25vdGlmaWNhdGlvbnMgeworCWJvb2wgZGlzcGxheV9zd2l0Y2g7 CisJYm9vbCBleHBhbnNpb25fbW9kZV9jaGFuZ2U7CisJYm9vbCB0aGVybWFsX3N0YXRlOworCWJv b2wgZm9yY2VkX3Bvd2VyX3N0YXRlOworCWJvb2wgc3lzdGVtX3Bvd2VyX3N0YXRlOworCWJvb2wg ZGlzcGxheV9jb25mX2NoYW5nZTsKKwlib29sIHB4X2dmeF9zd2l0Y2g7CisJYm9vbCBicmlnaHRu ZXNzX2NoYW5nZTsKKwlib29sIGRncHVfZGlzcGxheV9ldmVudDsKK307CisKK3N0cnVjdCBhbWRn cHVfYXRpZl9mdW5jdGlvbnMgeworCWJvb2wgc3lzdGVtX3BhcmFtczsKKwlib29sIHNiaW9zX3Jl cXVlc3RzOworCWJvb2wgc2VsZWN0X2FjdGl2ZV9kaXNwOworCWJvb2wgbGlkX3N0YXRlOworCWJv b2wgZ2V0X3R2X3N0YW5kYXJkOworCWJvb2wgc2V0X3R2X3N0YW5kYXJkOworCWJvb2wgZ2V0X3Bh bmVsX2V4cGFuc2lvbl9tb2RlOworCWJvb2wgc2V0X3BhbmVsX2V4cGFuc2lvbl9tb2RlOworCWJv b2wgdGVtcGVyYXR1cmVfY2hhbmdlOworCWJvb2wgZ3JhcGhpY3NfZGV2aWNlX3R5cGVzOworfTsK Kworc3RydWN0IGFtZGdwdV9hdGlmIHsKKwlzdHJ1Y3QgYW1kZ3B1X2F0aWZfbm90aWZpY2F0aW9u cyBub3RpZmljYXRpb25zOworCXN0cnVjdCBhbWRncHVfYXRpZl9mdW5jdGlvbnMgZnVuY3Rpb25z OworCXN0cnVjdCBhbWRncHVfYXRpZl9ub3RpZmljYXRpb25fY2ZnIG5vdGlmaWNhdGlvbl9jZmc7 CisJc3RydWN0IGFtZGdwdV9lbmNvZGVyICplbmNvZGVyX2Zvcl9ibDsKK307CisKK3N0cnVjdCBh bWRncHVfYXRjc19mdW5jdGlvbnMgeworCWJvb2wgZ2V0X2V4dF9zdGF0ZTsKKwlib29sIHBjaWVf cGVyZl9yZXE7CisJYm9vbCBwY2llX2Rldl9yZHk7CisJYm9vbCBwY2llX2J1c193aWR0aDsKK307 CisKK3N0cnVjdCBhbWRncHVfYXRjcyB7CisJc3RydWN0IGFtZGdwdV9hdGNzX2Z1bmN0aW9ucyBm dW5jdGlvbnM7Cit9OworCitpbnQgYW1kZ3B1X2N0eF9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldixzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKKwkJCQkJCQl1aW50MzJfdCAqaWQs dWludDMyX3QgZmxhZ3MpOworaW50IGFtZGdwdV9jdHhfZnJlZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsCisJCQkJCQkgIHVpbnQzMl90IGlk KTsKK2ludCBhbWRncHVfY3R4X3F1ZXJ5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1 Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKKwkJCQkJCQl1aW50MzJfdCBpZCxzdHJ1Y3QgYW1kZ3B1 X2N0eF9zdGF0ZSAqc3RhdGUpOworCit2b2lkIGFtZGdwdV9jdHhfZmluaShzdHJ1Y3QgYW1kZ3B1 X2Zwcml2ICpmcHJpdik7CisKK2V4dGVybiBpbnQgYW1kZ3B1X2N0eF9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7 CisKKy8qCisgKiBDb3JlIHN0cnVjdHVyZSwgZnVuY3Rpb25zIGFuZCBoZWxwZXJzLgorICovCit0 eXBlZGVmIHVpbnQzMl90ICgqYW1kZ3B1X3JyZWdfdCkoc3RydWN0IGFtZGdwdV9kZXZpY2UqLCB1 aW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKCphbWRncHVfd3JlZ190KShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSosIHVpbnQzMl90LCB1aW50MzJfdCk7CisKK3R5cGVkZWYgdWludDMyX3QgKCphbWRncHVf YmxvY2tfcnJlZ190KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSosIHVpbnQzMl90LCB1aW50MzJfdCk7 Cit0eXBlZGVmIHZvaWQgKCphbWRncHVfYmxvY2tfd3JlZ190KShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpOworCitzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSB7CisJc3RydWN0IGRldmljZQkJCSpkZXY7CisJc3RydWN0IGRybV9kZXZpY2UJCSpkZGV2Owor CXN0cnVjdCBwY2lfZGV2CQkJKnBkZXY7CisJc3RydWN0IHJ3X3NlbWFwaG9yZQkJZXhjbHVzaXZl X2xvY2s7CisKKwkvKiBBU0lDICovCisJZW51bSBhbWRncHVfYXNpY190eXBlICAgICAgICAgICBh c2ljX3R5cGU7CisJdWludDMyX3QJCQlmYW1pbHk7CisJdWludDMyX3QJCQlyZXZfaWQ7CisJdWlu dDMyX3QJCQlleHRlcm5hbF9yZXZfaWQ7CisJdW5zaWduZWQgbG9uZwkJCWZsYWdzOworCWludAkJ CQl1c2VjX3RpbWVvdXQ7CisJY29uc3Qgc3RydWN0IGFtZGdwdV9hc2ljX2Z1bmNzCSphc2ljX2Z1 bmNzOworCWJvb2wJCQkJc2h1dGRvd247CisJYm9vbAkJCQlzdXNwZW5kOworCWJvb2wJCQkJbmVl ZF9kbWEzMjsKKwlib29sCQkJCWFjY2VsX3dvcmtpbmc7CisJYm9vbAkJCQluZWVkc19yZXNldDsK KwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgCQlyZXNldF93b3JrOworCXN0cnVjdCBub3RpZmllcl9ibG9j awkJYWNwaV9uYjsKKwlzdHJ1Y3QgYW1kZ3B1X2kyY19jaGFuCQkqaTJjX2J1c1tBTURHUFVfTUFY X0kyQ19CVVNdOworCXN0cnVjdCBhbWRncHVfZGVidWdmcwkJZGVidWdmc1tBTURHUFVfREVCVUdG U19NQVhfQ09NUE9ORU5UU107CisJdW5zaWduZWQgCQkJZGVidWdmc19jb3VudDsKKyNpZiBkZWZp bmVkKENPTkZJR19ERUJVR19GUykKKwlzdHJ1Y3QgZGVudHJ5CQkJKmRlYnVnZnNfcmVnczsKKyNl bmRpZgorCXN0cnVjdCBhbWRncHVfYXRpZgkJYXRpZjsKKwlzdHJ1Y3QgYW1kZ3B1X2F0Y3MJCWF0 Y3M7CisJc3RydWN0IG11dGV4CQkJc3JibV9tdXRleDsKKwkvKiBHUkJNIGluZGV4IG11dGV4LiBQ cm90ZWN0cyBjb25jdXJyZW50IGFjY2VzcyB0byBHUkJNIGluZGV4ICovCisJc3RydWN0IG11dGV4 ICAgICAgICAgICAgICAgICAgICBncmJtX2lkeF9tdXRleDsKKwlzdHJ1Y3QgZGV2X3BtX2RvbWFp bgkJdmdhX3BtX2RvbWFpbjsKKwlib29sCQkJCWhhdmVfZGlzcF9wb3dlcl9yZWY7CisKKwkvKiBC SU9TICovCisJdWludDhfdAkJCQkqYmlvczsKKwlib29sCQkJCWlzX2F0b21fYmlvczsKKwl1aW50 MTZfdAkJCWJpb3NfaGVhZGVyX3N0YXJ0OworCXN0cnVjdCBhbWRncHVfYm8JCSpzdG9sbGVuX3Zn YV9tZW1vcnk7CisJdWludDMyX3QJCQliaW9zX3NjcmF0Y2hbQU1ER1BVX0JJT1NfTlVNX1NDUkFU Q0hdOworCisJLyogUmVnaXN0ZXIvZG9vcmJlbGwgbW1pbyAqLworCXJlc291cmNlX3NpemVfdAkJ CXJtbWlvX2Jhc2U7CisJcmVzb3VyY2Vfc2l6ZV90CQkJcm1taW9fc2l6ZTsKKwl2b2lkIF9faW9t ZW0JCQkqcm1taW87CisJLyogcHJvdGVjdHMgY29uY3VycmVudCBNTV9JTkRFWC9EQVRBIGJhc2Vk IHJlZ2lzdGVyIGFjY2VzcyAqLworCXNwaW5sb2NrX3QgbW1pb19pZHhfbG9jazsKKwkvKiBwcm90 ZWN0cyBjb25jdXJyZW50IFNNQyBiYXNlZCByZWdpc3RlciBhY2Nlc3MgKi8KKwlzcGlubG9ja190 IHNtY19pZHhfbG9jazsKKwlhbWRncHVfcnJlZ190CQkJc21jX3JyZWc7CisJYW1kZ3B1X3dyZWdf dAkJCXNtY193cmVnOworCS8qIHByb3RlY3RzIGNvbmN1cnJlbnQgUENJRSByZWdpc3RlciBhY2Nl c3MgKi8KKwlzcGlubG9ja190IHBjaWVfaWR4X2xvY2s7CisJYW1kZ3B1X3JyZWdfdAkJCXBjaWVf cnJlZzsKKwlhbWRncHVfd3JlZ190CQkJcGNpZV93cmVnOworCS8qIHByb3RlY3RzIGNvbmN1cnJl bnQgVVZEIHJlZ2lzdGVyIGFjY2VzcyAqLworCXNwaW5sb2NrX3QgdXZkX2N0eF9pZHhfbG9jazsK KwlhbWRncHVfcnJlZ190CQkJdXZkX2N0eF9ycmVnOworCWFtZGdwdV93cmVnX3QJCQl1dmRfY3R4 X3dyZWc7CisJLyogcHJvdGVjdHMgY29uY3VycmVudCBESURUIHJlZ2lzdGVyIGFjY2VzcyAqLwor CXNwaW5sb2NrX3QgZGlkdF9pZHhfbG9jazsKKwlhbWRncHVfcnJlZ190CQkJZGlkdF9ycmVnOwor CWFtZGdwdV93cmVnX3QJCQlkaWR0X3dyZWc7CisJLyogcHJvdGVjdHMgY29uY3VycmVudCBFTkRQ T0lOVCAoYXVkaW8pIHJlZ2lzdGVyIGFjY2VzcyAqLworCXNwaW5sb2NrX3QgYXVkaW9fZW5kcHRf aWR4X2xvY2s7CisJYW1kZ3B1X2Jsb2NrX3JyZWdfdAkJYXVkaW9fZW5kcHRfcnJlZzsKKwlhbWRn cHVfYmxvY2tfd3JlZ190CQlhdWRpb19lbmRwdF93cmVnOworCXZvaWQgX19pb21lbSAgICAgICAg ICAgICAgICAgICAgKnJpb19tZW07CisJcmVzb3VyY2Vfc2l6ZV90CQkJcmlvX21lbV9zaXplOwor CXN0cnVjdCBhbWRncHVfZG9vcmJlbGwJCWRvb3JiZWxsOworCisJLyogY2xvY2svcGxsIGluZm8g Ki8KKwlzdHJ1Y3QgYW1kZ3B1X2Nsb2NrICAgICAgICAgICAgY2xvY2s7CisKKwkvKiBNQyAqLwor CXN0cnVjdCBhbWRncHVfbWMJCW1jOworCXN0cnVjdCBhbWRncHVfZ2FydAkJZ2FydDsKKwlzdHJ1 Y3QgYW1kZ3B1X2R1bW15X3BhZ2UJZHVtbXlfcGFnZTsKKwlzdHJ1Y3QgYW1kZ3B1X3ZtX21hbmFn ZXIJdm1fbWFuYWdlcjsKKworCS8qIG1lbW9yeSBtYW5hZ2VtZW50ICovCisJc3RydWN0IGFtZGdw dV9tbWFuCQltbWFuOworCXN0cnVjdCBhbWRncHVfZ2VtCQlnZW07CisJc3RydWN0IGFtZGdwdV92 cmFtX3NjcmF0Y2gJdnJhbV9zY3JhdGNoOworCXN0cnVjdCBhbWRncHVfd2IJCXdiOworCWF0b21p YzY0X3QJCQl2cmFtX3VzYWdlOworCWF0b21pYzY0X3QJCQl2cmFtX3Zpc191c2FnZTsKKwlhdG9t aWM2NF90CQkJZ3R0X3VzYWdlOworCWF0b21pYzY0X3QJCQludW1fYnl0ZXNfbW92ZWQ7CisKKwkv KiBkaXNwbGF5ICovCisJc3RydWN0IGFtZGdwdV9tb2RlX2luZm8JCW1vZGVfaW5mbzsKKwlzdHJ1 Y3Qgd29ya19zdHJ1Y3QJCWhvdHBsdWdfd29yazsKKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCWNy dGNfaXJxOworCXN0cnVjdCBhbWRncHVfaXJxX3NyYwkJcGFnZWZsaXBfaXJxOworCXN0cnVjdCBh bWRncHVfaXJxX3NyYwkJaHBkX2lycTsKKworCS8qIHJpbmdzICovCisJd2FpdF9xdWV1ZV9oZWFk X3QJCWZlbmNlX3F1ZXVlOworCXVuc2lnbmVkCQkJZmVuY2VfY29udGV4dDsKKwlzdHJ1Y3QgbXV0 ZXgJCQlyaW5nX2xvY2s7CisJdW5zaWduZWQJCQludW1fcmluZ3M7CisJc3RydWN0IGFtZGdwdV9y aW5nCQkqcmluZ3NbQU1ER1BVX01BWF9SSU5HU107CisJYm9vbAkJCQlpYl9wb29sX3JlYWR5Owor CXN0cnVjdCBhbWRncHVfc2FfbWFuYWdlcglyaW5nX3RtcF9ibzsKKworCS8qIGludGVycnVwdHMg Ki8KKwlzdHJ1Y3QgYW1kZ3B1X2lycQkJaXJxOworCisJLyogZHBtICovCisJc3RydWN0IGFtZGdw dV9wbQkJcG07CisJdTMyCQkJCWNnX2ZsYWdzOworCXUzMgkJCQlwZ19mbGFnczsKKworCS8qIGFt ZGdwdSBzbXVtZ3IgKi8KKwlzdHJ1Y3QgYW1kZ3B1X3NtdW1nciBzbXU7CisKKwkvKiBnZnggKi8K KwlzdHJ1Y3QgYW1kZ3B1X2dmeAkJZ2Z4OworCisJLyogc2RtYSAqLworCXN0cnVjdCBhbWRncHVf c2RtYQkJc2RtYVsyXTsKKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCXNkbWFfdHJhcF9pcnE7CisJ c3RydWN0IGFtZGdwdV9pcnFfc3JjCQlzZG1hX2lsbGVnYWxfaW5zdF9pcnE7CisKKwkvKiB1dmQg Ki8KKwlib29sCQkJCWhhc191dmQ7CisJc3RydWN0IGFtZGdwdV91dmQJCXV2ZDsKKworCS8qIHZj ZSAqLworCXN0cnVjdCBhbWRncHVfdmNlCQl2Y2U7CisKKwkvKiBmaXJtd2FyZXMgKi8KKwlzdHJ1 Y3QgYW1kZ3B1X2Zpcm13YXJlCQlmaXJtd2FyZTsKKworCS8qIEdEUyAqLworCXN0cnVjdCBhbWRn cHVfZ2RzCQlnZHM7CisKKwljb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gKmlw X2Jsb2NrczsKKwlpbnQJCQkJbnVtX2lwX2Jsb2NrczsKKwlib29sCQkJCSppcF9ibG9ja19lbmFi bGVkOworCXN0cnVjdCBtdXRleAltbl9sb2NrOworCURFQ0xBUkVfSEFTSFRBQkxFKG1uX2hhc2gs IDcpOworCisJLyogdHJhY2tpbmcgcGlubmVkIG1lbW9yeSAqLworCXU2NCB2cmFtX3Bpbl9zaXpl OworCXU2NCBnYXJ0X3Bpbl9zaXplOworfTsKKworYm9vbCBhbWRncHVfZGV2aWNlX2lzX3B4KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOworaW50IGFtZGdwdV9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKKwkJICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LAorCQkg ICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXYsCisJCSAgICAgICB1aW50MzJfdCBmbGFncyk7Cit2 b2lkIGFtZGdwdV9kZXZpY2VfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CitpbnQg YW1kZ3B1X2dwdV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKKwor dWludDMyX3QgYW1kZ3B1X21tX3JyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQz Ml90IHJlZywKKwkJCWJvb2wgYWx3YXlzX2luZGlyZWN0KTsKK3ZvaWQgYW1kZ3B1X21tX3dyZWco c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdiwKKwkJ ICAgIGJvb2wgYWx3YXlzX2luZGlyZWN0KTsKK3UzMiBhbWRncHVfaW9fcnJlZyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgdTMyIHJlZyk7Cit2b2lkIGFtZGdwdV9pb193cmVnKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmVnLCB1MzIgdik7CisKK3UzMiBhbWRncHVfbW1fcmRv b3JiZWxsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgaW5kZXgpOwordm9pZCBhbWRn cHVfbW1fd2Rvb3JiZWxsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgaW5kZXgsIHUz MiB2KTsKKworLyoKKyAqIENhc3QgaGVscGVyCisgKi8KK2V4dGVybiBjb25zdCBzdHJ1Y3QgZmVu Y2Vfb3BzIGFtZGdwdV9mZW5jZV9vcHM7CitzdGF0aWMgaW5saW5lIHN0cnVjdCBhbWRncHVfZmVu Y2UgKnRvX2FtZGdwdV9mZW5jZShzdHJ1Y3QgZmVuY2UgKmYpCit7CisJc3RydWN0IGFtZGdwdV9m ZW5jZSAqX19mID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBhbWRncHVfZmVuY2UsIGJhc2UpOwor CisJaWYgKF9fZi0+YmFzZS5vcHMgPT0gJmFtZGdwdV9mZW5jZV9vcHMpCisJCXJldHVybiBfX2Y7 CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFJlZ2lzdGVycyByZWFkICYgd3JpdGUgZnVu Y3Rpb25zLgorICovCisjZGVmaW5lIFJSRUczMihyZWcpIGFtZGdwdV9tbV9ycmVnKGFkZXYsIChy ZWcpLCBmYWxzZSkKKyNkZWZpbmUgUlJFRzMyX0lEWChyZWcpIGFtZGdwdV9tbV9ycmVnKGFkZXYs IChyZWcpLCB0cnVlKQorI2RlZmluZSBEUkVHMzIocmVnKSBwcmludGsoS0VSTl9JTkZPICJSRUdJ U1RFUjogIiAjcmVnICIgOiAweCUwOFhcbiIsIGFtZGdwdV9tbV9ycmVnKGFkZXYsIChyZWcpLCBm YWxzZSkpCisjZGVmaW5lIFdSRUczMihyZWcsIHYpIGFtZGdwdV9tbV93cmVnKGFkZXYsIChyZWcp LCAodiksIGZhbHNlKQorI2RlZmluZSBXUkVHMzJfSURYKHJlZywgdikgYW1kZ3B1X21tX3dyZWco YWRldiwgKHJlZyksICh2KSwgdHJ1ZSkKKyNkZWZpbmUgUkVHX1NFVChGSUVMRCwgdikgKCgodikg PDwgRklFTEQjI19TSElGVCkgJiBGSUVMRCMjX01BU0spCisjZGVmaW5lIFJFR19HRVQoRklFTEQs IHYpICgoKHYpIDw8IEZJRUxEIyNfU0hJRlQpICYgRklFTEQjI19NQVNLKQorI2RlZmluZSBSUkVH MzJfUENJRShyZWcpIGFkZXYtPnBjaWVfcnJlZyhhZGV2LCAocmVnKSkKKyNkZWZpbmUgV1JFRzMy X1BDSUUocmVnLCB2KSBhZGV2LT5wY2llX3dyZWcoYWRldiwgKHJlZyksICh2KSkKKyNkZWZpbmUg UlJFRzMyX1NNQyhyZWcpIGFkZXYtPnNtY19ycmVnKGFkZXYsIChyZWcpKQorI2RlZmluZSBXUkVH MzJfU01DKHJlZywgdikgYWRldi0+c21jX3dyZWcoYWRldiwgKHJlZyksICh2KSkKKyNkZWZpbmUg UlJFRzMyX1VWRF9DVFgocmVnKSBhZGV2LT51dmRfY3R4X3JyZWcoYWRldiwgKHJlZykpCisjZGVm aW5lIFdSRUczMl9VVkRfQ1RYKHJlZywgdikgYWRldi0+dXZkX2N0eF93cmVnKGFkZXYsIChyZWcp LCAodikpCisjZGVmaW5lIFJSRUczMl9ESURUKHJlZykgYWRldi0+ZGlkdF9ycmVnKGFkZXYsIChy ZWcpKQorI2RlZmluZSBXUkVHMzJfRElEVChyZWcsIHYpIGFkZXYtPmRpZHRfd3JlZyhhZGV2LCAo cmVnKSwgKHYpKQorI2RlZmluZSBSUkVHMzJfQVVESU9fRU5EUFQoYmxvY2ssIHJlZykgYWRldi0+ YXVkaW9fZW5kcHRfcnJlZyhhZGV2LCAoYmxvY2spLCAocmVnKSkKKyNkZWZpbmUgV1JFRzMyX0FV RElPX0VORFBUKGJsb2NrLCByZWcsIHYpIGFkZXYtPmF1ZGlvX2VuZHB0X3dyZWcoYWRldiwgKGJs b2NrKSwgKHJlZyksICh2KSkKKyNkZWZpbmUgV1JFRzMyX1AocmVnLCB2YWwsIG1hc2spCQkJCVwK KwlkbyB7CQkJCQkJCVwKKwkJdWludDMyX3QgdG1wXyA9IFJSRUczMihyZWcpOwkJCVwKKwkJdG1w XyAmPSAobWFzayk7CQkJCQlcCisJCXRtcF8gfD0gKCh2YWwpICYgfihtYXNrKSk7CQkJXAorCQlX UkVHMzIocmVnLCB0bXBfKTsJCQkJXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIFdSRUczMl9BTkQo cmVnLCBhbmQpIFdSRUczMl9QKHJlZywgMCwgYW5kKQorI2RlZmluZSBXUkVHMzJfT1IocmVnLCBv cikgV1JFRzMyX1AocmVnLCBvciwgfihvcikpCisjZGVmaW5lIFdSRUczMl9QTExfUChyZWcsIHZh bCwgbWFzaykJCQkJXAorCWRvIHsJCQkJCQkJXAorCQl1aW50MzJfdCB0bXBfID0gUlJFRzMyX1BM TChyZWcpOwkJXAorCQl0bXBfICY9IChtYXNrKTsJCQkJCVwKKwkJdG1wXyB8PSAoKHZhbCkgJiB+ KG1hc2spKTsJCQlcCisJCVdSRUczMl9QTEwocmVnLCB0bXBfKTsJCQkJXAorCX0gd2hpbGUgKDAp CisjZGVmaW5lIERSRUczMl9TWVMoc3FmLCBhZGV2LCByZWcpIHNlcV9wcmludGYoKHNxZiksICNy ZWcgIiA6IDB4JTA4WFxuIiwgYW1kZ3B1X21tX3JyZWcoKGFkZXYpLCAocmVnKSwgZmFsc2UpKQor I2RlZmluZSBSUkVHMzJfSU8ocmVnKSBhbWRncHVfaW9fcnJlZyhhZGV2LCAocmVnKSkKKyNkZWZp bmUgV1JFRzMyX0lPKHJlZywgdikgYW1kZ3B1X2lvX3dyZWcoYWRldiwgKHJlZyksICh2KSkKKwor I2RlZmluZSBSRE9PUkJFTEwzMihpbmRleCkgYW1kZ3B1X21tX3Jkb29yYmVsbChhZGV2LCAoaW5k ZXgpKQorI2RlZmluZSBXRE9PUkJFTEwzMihpbmRleCwgdikgYW1kZ3B1X21tX3dkb29yYmVsbChh ZGV2LCAoaW5kZXgpLCAodikpCisKKyNkZWZpbmUgUkVHX0ZJRUxEX1NISUZUKHJlZywgZmllbGQp IHJlZyMjX18jI2ZpZWxkIyNfX1NISUZUCisjZGVmaW5lIFJFR19GSUVMRF9NQVNLKHJlZywgZmll bGQpIHJlZyMjX18jI2ZpZWxkIyNfTUFTSworCisjZGVmaW5lIFJFR19TRVRfRklFTEQob3JpZ192 YWwsIHJlZywgZmllbGQsIGZpZWxkX3ZhbCkJCQlcCisJKCgob3JpZ192YWwpICYgflJFR19GSUVM RF9NQVNLKHJlZywgZmllbGQpKSB8CQkJXAorCSAoUkVHX0ZJRUxEX01BU0socmVnLCBmaWVsZCkg JiAoKGZpZWxkX3ZhbCkgPDwgUkVHX0ZJRUxEX1NISUZUKHJlZywgZmllbGQpKSkpCisKKyNkZWZp bmUgUkVHX0dFVF9GSUVMRCh2YWx1ZSwgcmVnLCBmaWVsZCkJCQkJXAorCSgoKHZhbHVlKSAmIFJF R19GSUVMRF9NQVNLKHJlZywgZmllbGQpKSA+PiBSRUdfRklFTERfU0hJRlQocmVnLCBmaWVsZCkp CisKKy8qCisgKiBCSU9TIGhlbHBlcnMuCisgKi8KKyNkZWZpbmUgUkJJT1M4KGkpIChhZGV2LT5i aW9zW2ldKQorI2RlZmluZSBSQklPUzE2KGkpIChSQklPUzgoaSkgfCAoUkJJT1M4KChpKSsxKSA8 PCA4KSkKKyNkZWZpbmUgUkJJT1MzMihpKSAoKFJCSU9TMTYoaSkpIHwgKFJCSU9TMTYoKGkpKzIp IDw8IDE2KSkKKworLyoKKyAqIFJJTkcgaGVscGVycy4KKyAqLworc3RhdGljIGlubGluZSB2b2lk IGFtZGdwdV9yaW5nX3dyaXRlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgdikK K3sKKwlpZiAocmluZy0+Y291bnRfZHcgPD0gMCkKKwkJRFJNX0VSUk9SKCJyYWRlb246IHdyaXRp bmcgbW9yZSBkd29yZHMgdG8gdGhlIHJpbmcgdGhhbiBleHBlY3RlZCFcbiIpOworCXJpbmctPnJp bmdbcmluZy0+d3B0cisrXSA9IHY7CisJcmluZy0+d3B0ciAmPSByaW5nLT5wdHJfbWFzazsKKwly aW5nLT5jb3VudF9kdy0tOworCXJpbmctPnJpbmdfZnJlZV9kdy0tOworfQorCisvKgorICogQVNJ Q3MgbWFjcm8uCisgKi8KKyNkZWZpbmUgYW1kZ3B1X2FzaWNfc2V0X3ZnYV9zdGF0ZShhZGV2LCBz dGF0ZSkgKGFkZXYpLT5hc2ljX2Z1bmNzLT5zZXRfdmdhX3N0YXRlKChhZGV2KSwgKHN0YXRlKSkK KyNkZWZpbmUgYW1kZ3B1X2FzaWNfcmVzZXQoYWRldikgKGFkZXYpLT5hc2ljX2Z1bmNzLT5yZXNl dCgoYWRldikpCisjZGVmaW5lIGFtZGdwdV9hc2ljX3dhaXRfZm9yX21jX2lkbGUoYWRldikgKGFk ZXYpLT5hc2ljX2Z1bmNzLT53YWl0X2Zvcl9tY19pZGxlKChhZGV2KSkKKyNkZWZpbmUgYW1kZ3B1 X2FzaWNfZ2V0X3hjbGsoYWRldikgKGFkZXYpLT5hc2ljX2Z1bmNzLT5nZXRfeGNsaygoYWRldikp CisjZGVmaW5lIGFtZGdwdV9hc2ljX3NldF91dmRfY2xvY2tzKGFkZXYsIHYsIGQpIChhZGV2KS0+ YXNpY19mdW5jcy0+c2V0X3V2ZF9jbG9ja3MoKGFkZXYpLCAodiksIChkKSkKKyNkZWZpbmUgYW1k Z3B1X2FzaWNfc2V0X3ZjZV9jbG9ja3MoYWRldiwgZXYsIGVjKSAoYWRldiktPmFzaWNfZnVuY3Mt PnNldF92Y2VfY2xvY2tzKChhZGV2KSwgKGV2KSwgKGVjKSkKKyNkZWZpbmUgYW1kZ3B1X2FzaWNf Z2V0X2dwdV9jbG9ja19jb3VudGVyKGFkZXYpIChhZGV2KS0+YXNpY19mdW5jcy0+Z2V0X2dwdV9j bG9ja19jb3VudGVyKChhZGV2KSkKKyNkZWZpbmUgYW1kZ3B1X2FzaWNfcmVhZF9kaXNhYmxlZF9i aW9zKGFkZXYpIChhZGV2KS0+YXNpY19mdW5jcy0+cmVhZF9kaXNhYmxlZF9iaW9zKChhZGV2KSkK KyNkZWZpbmUgYW1kZ3B1X2FzaWNfcmVhZF9yZWdpc3RlcihhZGV2LCBzZSwgc2gsIG9mZnNldCwg dikoKGFkZXYpLT5hc2ljX2Z1bmNzLT5yZWFkX3JlZ2lzdGVyKChhZGV2KSwgKHNlKSwgKHNoKSwg KG9mZnNldCksICh2KSkpCisjZGVmaW5lIGFtZGdwdV9hc2ljX2dldF9jdV9pbmZvKGFkZXYsIGlu Zm8pIChhZGV2KS0+YXNpY19mdW5jcy0+Z2V0X2N1X2luZm8oKGFkZXYpLCAoaW5mbykpCisjZGVm aW5lIGFtZGdwdV9nYXJ0X2ZsdXNoX2dwdV90bGIoYWRldiwgdm1pZCkgKGFkZXYpLT5nYXJ0Lmdh cnRfZnVuY3MtPmZsdXNoX2dwdV90bGIoKGFkZXYpLCAodm1pZCkpCisjZGVmaW5lIGFtZGdwdV9n YXJ0X3NldF9wdGVfcGRlKGFkZXYsIHB0LCBpZHgsIGFkZHIsIGZsYWdzKSAoYWRldiktPmdhcnQu Z2FydF9mdW5jcy0+c2V0X3B0ZV9wZGUoKGFkZXYpLCAocHQpLCAoaWR4KSwgKGFkZHIpLCAoZmxh Z3MpKQorI2RlZmluZSBhbWRncHVfdm1fY29weV9wdGUoYWRldiwgaWIsIHBlLCBzcmMsIGNvdW50 KSAoKGFkZXYpLT52bV9tYW5hZ2VyLnZtX3B0ZV9mdW5jcy0+Y29weV9wdGUoKGliKSwgKHBlKSwg KHNyYyksIChjb3VudCkpKQorI2RlZmluZSBhbWRncHVfdm1fd3JpdGVfcHRlKGFkZXYsIGliLCBw ZSwgYWRkciwgY291bnQsIGluY3IsIGZsYWdzKSAoKGFkZXYpLT52bV9tYW5hZ2VyLnZtX3B0ZV9m dW5jcy0+d3JpdGVfcHRlKChpYiksIChwZSksIChhZGRyKSwgKGNvdW50KSwgKGluY3IpLCAoZmxh Z3MpKSkKKyNkZWZpbmUgYW1kZ3B1X3ZtX3NldF9wdGVfcGRlKGFkZXYsIGliLCBwZSwgYWRkciwg Y291bnQsIGluY3IsIGZsYWdzKSAoKGFkZXYpLT52bV9tYW5hZ2VyLnZtX3B0ZV9mdW5jcy0+c2V0 X3B0ZV9wZGUoKGliKSwgKHBlKSwgKGFkZHIpLCAoY291bnQpLCAoaW5jciksIChmbGFncykpKQor I2RlZmluZSBhbWRncHVfdm1fcGFkX2liKGFkZXYsIGliKSAoKGFkZXYpLT52bV9tYW5hZ2VyLnZt X3B0ZV9mdW5jcy0+cGFkX2liKChpYikpKQorI2RlZmluZSBhbWRncHVfcmluZ19wYXJzZV9jcyhy LCBwLCBpYikgKChyKS0+ZnVuY3MtPnBhcnNlX2NzKChwKSwgKGliKSkpCisjZGVmaW5lIGFtZGdw dV9yaW5nX3Rlc3RfcmluZyhyKSAociktPmZ1bmNzLT50ZXN0X3JpbmcoKHIpKQorI2RlZmluZSBh bWRncHVfcmluZ190ZXN0X2liKHIpIChyKS0+ZnVuY3MtPnRlc3RfaWIoKHIpKQorI2RlZmluZSBh bWRncHVfcmluZ19pc19sb2NrdXAocikgKHIpLT5mdW5jcy0+aXNfbG9ja3VwKChyKSkKKyNkZWZp bmUgYW1kZ3B1X3JpbmdfZ2V0X3JwdHIocikgKHIpLT5mdW5jcy0+Z2V0X3JwdHIoKHIpKQorI2Rl ZmluZSBhbWRncHVfcmluZ19nZXRfd3B0cihyKSAociktPmZ1bmNzLT5nZXRfd3B0cigocikpCisj ZGVmaW5lIGFtZGdwdV9yaW5nX3NldF93cHRyKHIpIChyKS0+ZnVuY3MtPnNldF93cHRyKChyKSkK KyNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9pYihyLCBpYikgKHIpLT5mdW5jcy0+ZW1pdF9pYigo ciksIChpYikpCisjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfdm1fZmx1c2gociwgdm1pZCwgYWRk cikgKHIpLT5mdW5jcy0+ZW1pdF92bV9mbHVzaCgociksICh2bWlkKSwgKGFkZHIpKQorI2RlZmlu ZSBhbWRncHVfcmluZ19lbWl0X2ZlbmNlKHIsIGFkZHIsIHNlcSwgd3JpdGU2NGJpdCkgKHIpLT5m dW5jcy0+ZW1pdF9mZW5jZSgociksIChhZGRyKSwgKHNlcSksICh3cml0ZTY0Yml0KSkKKyNkZWZp bmUgYW1kZ3B1X3JpbmdfZW1pdF9zZW1hcGhvcmUociwgc2VtYXBob3JlLCBlbWl0X3dhaXQpIChy KS0+ZnVuY3MtPmVtaXRfc2VtYXBob3JlKChyKSwgKHNlbWFwaG9yZSksIChlbWl0X3dhaXQpKQor I2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2dkc19zd2l0Y2gociwgdiwgZGIsIGRzLCB3Yiwgd3Ms IGFiLCBhcykgKHIpLT5mdW5jcy0+ZW1pdF9nZHNfc3dpdGNoKChyKSwgKHYpLCAoZGIpLCAoZHMp LCAod2IpLCAod3MpLCAoYWIpLCAoYXMpKQorI2RlZmluZSBhbWRncHVfaWhfZ2V0X3dwdHIoYWRl dikgKGFkZXYpLT5pcnEuaWhfZnVuY3MtPmdldF93cHRyKChhZGV2KSkKKyNkZWZpbmUgYW1kZ3B1 X2loX2RlY29kZV9pdihhZGV2LCBpdikgKGFkZXYpLT5pcnEuaWhfZnVuY3MtPmRlY29kZV9pdigo YWRldiksIChpdikpCisjZGVmaW5lIGFtZGdwdV9paF9zZXRfcnB0cihhZGV2KSAoYWRldiktPmly cS5paF9mdW5jcy0+c2V0X3JwdHIoKGFkZXYpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV9zZXRf dmdhX3JlbmRlcl9zdGF0ZShhZGV2LCByKSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+c2V0X3Zn YV9yZW5kZXJfc3RhdGUoKGFkZXYpLCAocikpCisjZGVmaW5lIGFtZGdwdV9kaXNwbGF5X3ZibGFu a19nZXRfY291bnRlcihhZGV2LCBjcnRjKSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+dmJsYW5r X2dldF9jb3VudGVyKChhZGV2KSwgKGNydGMpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV92Ymxh bmtfd2FpdChhZGV2LCBjcnRjKSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+dmJsYW5rX3dhaXQo KGFkZXYpLCAoY3J0YykpCisjZGVmaW5lIGFtZGdwdV9kaXNwbGF5X2lzX2Rpc3BsYXlfaHVuZyhh ZGV2KSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+aXNfZGlzcGxheV9odW5nKChhZGV2KSkKKyNk ZWZpbmUgYW1kZ3B1X2Rpc3BsYXlfYmFja2xpZ2h0X3NldF9sZXZlbChhZGV2LCBlLCBsKSAoYWRl diktPm1vZGVfaW5mby5mdW5jcy0+YmFja2xpZ2h0X3NldF9sZXZlbCgoZSksIChsKSkKKyNkZWZp bmUgYW1kZ3B1X2Rpc3BsYXlfYmFja2xpZ2h0X2dldF9sZXZlbChhZGV2LCBlKSAoYWRldiktPm1v ZGVfaW5mby5mdW5jcy0+YmFja2xpZ2h0X2dldF9sZXZlbCgoZSkpCisjZGVmaW5lIGFtZGdwdV9k aXNwbGF5X2hwZF9zZW5zZShhZGV2LCBoKSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+aHBkX3Nl bnNlKChhZGV2KSwgKGgpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV9ocGRfc2V0X3BvbGFyaXR5 KGFkZXYsIGgpIChhZGV2KS0+bW9kZV9pbmZvLmZ1bmNzLT5ocGRfc2V0X3BvbGFyaXR5KChhZGV2 KSwgKGgpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV9ocGRfZ2V0X2dwaW9fcmVnKGFkZXYpIChh ZGV2KS0+bW9kZV9pbmZvLmZ1bmNzLT5ocGRfZ2V0X2dwaW9fcmVnKChhZGV2KSkKKyNkZWZpbmUg YW1kZ3B1X2Rpc3BsYXlfYmFuZHdpZHRoX3VwZGF0ZShhZGV2KSAoYWRldiktPm1vZGVfaW5mby5m dW5jcy0+YmFuZHdpZHRoX3VwZGF0ZSgoYWRldikpCisjZGVmaW5lIGFtZGdwdV9kaXNwbGF5X3Bh Z2VfZmxpcChhZGV2LCBjcnRjLCBiYXNlKSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+cGFnZV9m bGlwKChhZGV2KSwgKGNydGMpLCAoYmFzZSkpCisjZGVmaW5lIGFtZGdwdV9kaXNwbGF5X3BhZ2Vf ZmxpcF9nZXRfc2Nhbm91dHBvcyhhZGV2LCBjcnRjLCB2YmwsIHBvcykgKGFkZXYpLT5tb2RlX2lu Zm8uZnVuY3MtPnBhZ2VfZmxpcF9nZXRfc2Nhbm91dHBvcygoYWRldiksIChjcnRjKSwgKHZibCks IChwb3MpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV9hZGRfZW5jb2RlcihhZGV2LCBlLCBzLCBj KSAoYWRldiktPm1vZGVfaW5mby5mdW5jcy0+YWRkX2VuY29kZXIoKGFkZXYpLCAoZSksIChzKSwg KGMpKQorI2RlZmluZSBhbWRncHVfZGlzcGxheV9hZGRfY29ubmVjdG9yKGFkZXYsIGNpLCBzZCwg Y3QsIGliLCBjb2ksIGgsIHIpIChhZGV2KS0+bW9kZV9pbmZvLmZ1bmNzLT5hZGRfY29ubmVjdG9y KChhZGV2KSwgKGNpKSwgKHNkKSwgKGN0KSwgKGliKSwgKGNvaSksIChoKSwgKHIpKQorI2RlZmlu ZSBhbWRncHVfZGlzcGxheV9zdG9wX21jX2FjY2VzcyhhZGV2LCBzKSAoYWRldiktPm1vZGVfaW5m by5mdW5jcy0+c3RvcF9tY19hY2Nlc3MoKGFkZXYpLCAocykpCisjZGVmaW5lIGFtZGdwdV9kaXNw bGF5X3Jlc3VtZV9tY19hY2Nlc3MoYWRldiwgcykgKGFkZXYpLT5tb2RlX2luZm8uZnVuY3MtPnJl c3VtZV9tY19hY2Nlc3MoKGFkZXYpLCAocykpCisjZGVmaW5lIGFtZGdwdV9lbWl0X2NvcHlfYnVm ZmVyKGFkZXYsIHIsIHMsIGQsIGIpIChhZGV2KS0+bW1hbi5idWZmZXJfZnVuY3MtPmVtaXRfY29w eV9idWZmZXIoKHIpLCAocyksIChkKSwgKGIpKQorI2RlZmluZSBhbWRncHVfZW1pdF9maWxsX2J1 ZmZlcihhZGV2LCByLCBzLCBkLCBiKSAoYWRldiktPm1tYW4uYnVmZmVyX2Z1bmNzLT5lbWl0X2Zp bGxfYnVmZmVyKChyKSwgKHMpLCAoZCksIChiKSkKKyNkZWZpbmUgYW1kZ3B1X2RwbV9nZXRfdGVt cGVyYXR1cmUoYWRldikgKGFkZXYpLT5wbS5mdW5jcy0+Z2V0X3RlbXBlcmF0dXJlKChhZGV2KSkK KyNkZWZpbmUgYW1kZ3B1X2RwbV9wcmVfc2V0X3Bvd2VyX3N0YXRlKGFkZXYpIChhZGV2KS0+cG0u ZnVuY3MtPnByZV9zZXRfcG93ZXJfc3RhdGUoKGFkZXYpKQorI2RlZmluZSBhbWRncHVfZHBtX3Nl dF9wb3dlcl9zdGF0ZShhZGV2KSAoYWRldiktPnBtLmZ1bmNzLT5zZXRfcG93ZXJfc3RhdGUoKGFk ZXYpKQorI2RlZmluZSBhbWRncHVfZHBtX3Bvc3Rfc2V0X3Bvd2VyX3N0YXRlKGFkZXYpIChhZGV2 KS0+cG0uZnVuY3MtPnBvc3Rfc2V0X3Bvd2VyX3N0YXRlKChhZGV2KSkKKyNkZWZpbmUgYW1kZ3B1 X2RwbV9kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlZChhZGV2KSAoYWRldiktPnBtLmZ1bmNz LT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlZCgoYWRldikpCisjZGVmaW5lIGFtZGdwdV9k cG1fZ2V0X3NjbGsoYWRldiwgbCkgKGFkZXYpLT5wbS5mdW5jcy0+Z2V0X3NjbGsoKGFkZXYpLCAo bCkpCisjZGVmaW5lIGFtZGdwdV9kcG1fZ2V0X21jbGsoYWRldiwgbCkgKGFkZXYpLT5wbS5mdW5j cy0+Z2V0X21jbGsoKGFkZXYpLCAobCkpCisjZGVmaW5lIGFtZGdwdV9kcG1fcHJpbnRfcG93ZXJf c3RhdGUoYWRldiwgcHMpIChhZGV2KS0+cG0uZnVuY3MtPnByaW50X3Bvd2VyX3N0YXRlKChhZGV2 KSwgKHBzKSkKKyNkZWZpbmUgYW1kZ3B1X2RwbV9kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9y bWFuY2VfbGV2ZWwoYWRldiwgbSkgKGFkZXYpLT5wbS5mdW5jcy0+ZGVidWdmc19wcmludF9jdXJy ZW50X3BlcmZvcm1hbmNlX2xldmVsKChhZGV2KSwgKG0pKQorI2RlZmluZSBhbWRncHVfZHBtX2Zv cmNlX3BlcmZvcm1hbmNlX2xldmVsKGFkZXYsIGwpIChhZGV2KS0+cG0uZnVuY3MtPmZvcmNlX3Bl cmZvcm1hbmNlX2xldmVsKChhZGV2KSwgKGwpKQorI2RlZmluZSBhbWRncHVfZHBtX3ZibGFua190 b29fc2hvcnQoYWRldikgKGFkZXYpLT5wbS5mdW5jcy0+dmJsYW5rX3Rvb19zaG9ydCgoYWRldikp CisjZGVmaW5lIGFtZGdwdV9kcG1fcG93ZXJnYXRlX3V2ZChhZGV2LCBnKSAoYWRldiktPnBtLmZ1 bmNzLT5wb3dlcmdhdGVfdXZkKChhZGV2KSwgKGcpKQorI2RlZmluZSBhbWRncHVfZHBtX2VuYWJs ZV9iYXBtKGFkZXYsIGUpIChhZGV2KS0+cG0uZnVuY3MtPmVuYWJsZV9iYXBtKChhZGV2KSwgKGUp KQorI2RlZmluZSBhbWRncHVfZHBtX3NldF9mYW5fY29udHJvbF9tb2RlKGFkZXYsIG0pIChhZGV2 KS0+cG0uZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKChhZGV2KSwgKG0pKQorI2RlZmluZSBh bWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKGFkZXYpIChhZGV2KS0+cG0uZnVuY3MtPmdl dF9mYW5fY29udHJvbF9tb2RlKChhZGV2KSkKKyNkZWZpbmUgYW1kZ3B1X2RwbV9zZXRfZmFuX3Nw ZWVkX3BlcmNlbnQoYWRldiwgcykgKGFkZXYpLT5wbS5mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wZXJj ZW50KChhZGV2KSwgKHMpKQorI2RlZmluZSBhbWRncHVfZHBtX2dldF9mYW5fc3BlZWRfcGVyY2Vu dChhZGV2LCBzKSAoYWRldiktPnBtLmZ1bmNzLT5nZXRfZmFuX3NwZWVkX3BlcmNlbnQoKGFkZXYp LCAocykpCisKKyNkZWZpbmUgYW1kZ3B1X2dkc19zd2l0Y2goYWRldiwgciwgdiwgZCwgdywgYSkg KGFkZXYpLT5nZHMuZnVuY3MtPnBhdGNoX2dkc19zd2l0Y2goKHIpLCAodiksIChkKSwgKHcpLCAo YSkpCisKKy8qIENvbW1vbiBmdW5jdGlvbnMgKi8KK2ludCBhbWRncHVfZ3B1X3Jlc2V0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KTsKK3ZvaWQgYW1kZ3B1X3BjaV9jb25maWdfcmVzZXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworYm9vbCBhbWRncHVfY2FyZF9wb3N0ZWQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwordm9pZCBhbWRncHVfdXBkYXRlX2Rpc3BsYXlfcHJpb3Jp dHkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworYm9vbCBhbWRncHVfYm9vdF90ZXN0X3Bv c3RfY2FyZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CitpbnQgYW1kZ3B1X2NzX3BhcnNl cl9pbml0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLCB2b2lkICpkYXRhKTsKK2ludCBhbWRn cHVfY3NfZ2V0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiBpcF90eXBlLAor CQkgICAgICAgdTMyIGlwX2luc3RhbmNlLCB1MzIgcmluZywKKwkJICAgICAgIHN0cnVjdCBhbWRn cHVfcmluZyAqKm91dF9yaW5nKTsKK3ZvaWQgYW1kZ3B1X3R0bV9wbGFjZW1lbnRfZnJvbV9kb21h aW4oc3RydWN0IGFtZGdwdV9ibyAqcmJvLCB1MzIgZG9tYWluKTsKK2Jvb2wgYW1kZ3B1X3R0bV9i b19pc19hbWRncHVfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7CitpbnQgYW1kZ3B1 X3R0bV90dF9zZXRfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVpbnQ2NF90IGFkZHIsCisJ CQkJICAgICB1aW50MzJfdCBmbGFncyk7Citib29sIGFtZGdwdV90dG1fdHRfaGFzX3VzZXJwdHIo c3RydWN0IHR0bV90dCAqdHRtKTsKK2Jvb2wgYW1kZ3B1X3R0bV90dF9pc19yZWFkb25seShzdHJ1 Y3QgdHRtX3R0ICp0dG0pOwordWludDMyX3QgYW1kZ3B1X3R0bV90dF9wdGVfZmxhZ3Moc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSwKKwkJCQkgc3RydWN0IHR0 bV9tZW1fcmVnICptZW0pOwordm9pZCBhbWRncHVfdnJhbV9sb2NhdGlvbihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV9tYyAqbWMsIHU2NCBiYXNlKTsKK3ZvaWQgYW1k Z3B1X2d0dF9sb2NhdGlvbihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdw dV9tYyAqbWMpOwordm9pZCBhbWRncHVfdHRtX3NldF9hY3RpdmVfdnJhbV9zaXplKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1NjQgc2l6ZSk7Cit2b2lkIGFtZGdwdV9wcm9ncmFtX3JlZ2lz dGVyX3NlcXVlbmNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCQkgICAgIGNvbnN0 IHUzMiAqcmVnaXN0ZXJzLAorCQkJCQkgICAgIGNvbnN0IHUzMiBhcnJheV9zaXplKTsKKworYm9v bCBhbWRncHVfZGV2aWNlX2lzX3B4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworLyogYXRweCBo YW5kbGVyICovCisjaWYgZGVmaW5lZChDT05GSUdfVkdBX1NXSVRDSEVST08pCit2b2lkIGFtZGdw dV9yZWdpc3Rlcl9hdHB4X2hhbmRsZXIodm9pZCk7Cit2b2lkIGFtZGdwdV91bnJlZ2lzdGVyX2F0 cHhfaGFuZGxlcih2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X3JlZ2lz dGVyX2F0cHhfaGFuZGxlcih2b2lkKSB7fQorc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV91bnJl Z2lzdGVyX2F0cHhfaGFuZGxlcih2b2lkKSB7fQorI2VuZGlmCisKKy8qCisgKiBLTVMKKyAqLwor ZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBhbWRncHVfaW9jdGxzX2ttc1tdOwor ZXh0ZXJuIGludCBhbWRncHVfbWF4X2ttc19pb2N0bDsKKworaW50IGFtZGdwdV9kcml2ZXJfbG9h ZF9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncyk7CitpbnQg YW1kZ3B1X2RyaXZlcl91bmxvYWRfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBh bWRncHVfZHJpdmVyX2xhc3RjbG9zZV9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQg YW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdik7Cit2b2lkIGFtZGdwdV9kcml2ZXJfcG9zdGNsb3NlX2ttcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cit2 b2lkIGFtZGdwdV9kcml2ZXJfcHJlY2xvc2Vfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJ CQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGFtZGdwdV9zdXNwZW5kX2ttcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN1c3BlbmQsIGJvb2wgZmJjb24pOworaW50IGFt ZGdwdV9yZXN1bWVfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcmVzdW1lLCBib29s IGZiY29uKTsKK3UzMiBhbWRncHVfZ2V0X3ZibGFua19jb3VudGVyX2ttcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgY3J0Yyk7CitpbnQgYW1kZ3B1X2VuYWJsZV92Ymxhbmtfa21zKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK3ZvaWQgYW1kZ3B1X2Rpc2FibGVfdmJsYW5r X2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitpbnQgYW1kZ3B1X2dldF92 YmxhbmtfdGltZXN0YW1wX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKKwkJ CQkgICAgaW50ICptYXhfZXJyb3IsCisJCQkJICAgIHN0cnVjdCB0aW1ldmFsICp2YmxhbmtfdGlt ZSwKKwkJCQkgICAgdW5zaWduZWQgZmxhZ3MpOworbG9uZyBhbWRncHVfa21zX2NvbXBhdF9pb2N0 bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwKKwkJCSAgICAgdW5zaWduZWQg bG9uZyBhcmcpOworCisvKgorICogdm0KKyAqLworaW50IGFtZGdwdV92bV9pbml0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cit2b2lkIGFtZGdwdV92 bV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7 CitzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmFtZGdwdV92bV9nZXRfYm9zKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAorCQkJCQkgIHN0cnVjdCBhbWRncHVfdm0gKnZtLAorCQkJCQkg IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpOworc3RydWN0IGFtZGdwdV9mZW5jZSAqYW1kZ3B1X3Zt X2dyYWJfaWQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAorCQkJCSAgICAgICBzdHJ1Y3QgYW1k Z3B1X3ZtICp2bSk7Cit2b2lkIGFtZGdwdV92bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsCisJCSAgICAgc3RydWN0IGFtZGdwdV92bSAqdm0sCisJCSAgICAgc3RydWN0IGFtZGdwdV9m ZW5jZSAqdXBkYXRlcyk7Cit2b2lkIGFtZGdwdV92bV9mZW5jZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKKwkJICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKKwkJICAgICBzdHJ1Y3QgYW1k Z3B1X2ZlbmNlICpmZW5jZSk7Cit1aW50NjRfdCBhbWRncHVfdm1fbWFwX2dhcnQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQ2NF90IGFkZHIpOworaW50IGFtZGdwdV92bV91cGRhdGVf cGFnZV9kaXJlY3Rvcnkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJICAgIHN0cnVj dCBhbWRncHVfdm0gKnZtKTsKK2ludCBhbWRncHVfdm1fY2xlYXJfZnJlZWQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCisJCQkJc3RydWN0IGFtZGdwdV92bSAqdm0pOworaW50IGFtZGdwdV92 bV9jbGVhcl9pbnZhbGlkcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQlzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSk7CitpbnQgYW1kZ3B1X3ZtX2JvX3VwZGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKKwkJCXN0cnVjdCBhbWRncHVfYm9fdmEgKmJvX3ZhLAorCQkJc3RydWN0IHR0 bV9tZW1fcmVnICptZW0pOwordm9pZCBhbWRncHVfdm1fYm9faW52YWxpZGF0ZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKKwkJCSAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8pOworc3RydWN0 IGFtZGdwdV9ib192YSAqYW1kZ3B1X3ZtX2JvX2ZpbmQoc3RydWN0IGFtZGdwdV92bSAqdm0sCisJ CQkJICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmJvKTsKK3N0cnVjdCBhbWRncHVfYm9fdmEgKmFt ZGdwdV92bV9ib19hZGQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJICAgICAgc3Ry dWN0IGFtZGdwdV92bSAqdm0sCisJCQkJICAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8pOworaW50 IGFtZGdwdV92bV9ib19tYXAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCSAgICAgc3Ry dWN0IGFtZGdwdV9ib192YSAqYm9fdmEsCisJCSAgICAgdWludDY0X3QgYWRkciwgdWludDY0X3Qg b2Zmc2V0LAorCQkgICAgIHVpbnQ2NF90IHNpemUsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBhbWRn cHVfdm1fYm9fdW5tYXAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCSAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2JvX3ZhICpib192YSwKKwkJICAgICAgIHVpbnQ2NF90IGFkZHIpOwordm9pZCBh bWRncHVfdm1fYm9fcm12KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkgICAgICBzdHJ1 Y3QgYW1kZ3B1X2JvX3ZhICpib192YSk7CisKKy8qCisgKiBmdW5jdGlvbnMgdXNlZCBieSBhbWRn cHVfZW5jb2Rlci5jCisgKi8KK3N0cnVjdCBhbWRncHVfYWZtdF9hY3IgeworCXUzMiBjbG9jazsK KworCWludCBuXzMya2h6OworCWludCBjdHNfMzJraHo7CisKKwlpbnQgbl80NF8xa2h6OworCWlu dCBjdHNfNDRfMWtoejsKKworCWludCBuXzQ4a2h6OworCWludCBjdHNfNDhraHo7CisKK307CisK K3N0cnVjdCBhbWRncHVfYWZtdF9hY3IgYW1kZ3B1X2FmbXRfYWNyKHVpbnQzMl90IGNsb2NrKTsK KworLyogYW1kZ3B1X2FjcGkuYyAqLworI2lmIGRlZmluZWQoQ09ORklHX0FDUEkpCitpbnQgYW1k Z3B1X2FjcGlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cit2b2lkIGFtZGdwdV9h Y3BpX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworYm9vbCBhbWRncHVfYWNwaV9p c19wY2llX3BlcmZvcm1hbmNlX3JlcXVlc3Rfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KTsKK2ludCBhbWRncHVfYWNwaV9wY2llX3BlcmZvcm1hbmNlX3JlcXVlc3Qoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJCQl1OCBwZXJmX3JlcSwgYm9vbCBhZHZlcnRpc2Up OworaW50IGFtZGdwdV9hY3BpX3BjaWVfbm90aWZ5X2RldmljZV9yZWFkeShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldik7CisjZWxzZQorc3RhdGljIGlubGluZSBpbnQgYW1kZ3B1X2FjcGlfaW5p dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGlu ZSB2b2lkIGFtZGdwdV9hY3BpX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpIHsgfQor I2VuZGlmCisKK3N0cnVjdCBhbWRncHVfYm9fdmFfbWFwcGluZyAqCithbWRncHVfY3NfZmluZF9t YXBwaW5nKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIsCisJCSAgICAgICB1aW50NjRf dCBhZGRyLCBzdHJ1Y3QgYW1kZ3B1X2JvICoqYm8pOworCisjaW5jbHVkZSAiYW1kZ3B1X29iamVj dC5oIgorCisjZW5kaWYKLS0gCjEuOC4zLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==