From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Francis Subject: [PATCH v3 1/2] drm/amd: Load DMCU IRAM Date: Thu, 15 Nov 2018 10:20:21 -0500 Message-ID: <20181115152022.12191-1-David.Francis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Francis RE1DVSBJUkFNIG11c3QgYmUgbG9hZGVkIGJ5IHRoZSBkcml2ZXIgYmVmb3JlIERNQ1UKY2FuIGZ1 bmN0aW9uLgoKTW92ZSB0aGUgSVJBTSBjb2RlIG91dCBvZiB0aGUgc2hhZG93cyBhbmQgaW50byBh IG5ldyBmaWxlCm1vZHVsZXMvcG93ZXIvcG93ZXJfaGVscGVycy5jCgpUaGUgSVJBTSB0YWJsZSBj b250YWlucyB0aGUgYmFja2xpZ2h0IGN1cnZlIGFuZCBBQk0gcGFyYW1ldGVycwoKQWRkIHRoaXMg bmV3IGZpbGUgdG8gdGhlIE1ha2VmaWxlcwoKQ2FsbCBkbWN1X2xvYWRfaXJhbSBpbiBsYXRlIGlu aXQgb2YgRE0KCk1vdmUgc3RydWN0IGRtY3VfdmVyc2lvbiBmcm9tIGRjLmggdG8gZG1jdS5oIHRv IGFsbG93CmRtY3UgdG8gYmUgaW5jbHVkZWQgb24gaXRzIG93bgoKU2lnbmVkLW9mZi1ieTogRGF2 aWQgRnJhbmNpcyA8RGF2aWQuRnJhbmNpc0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9NYWtlZmlsZSAgICAgICAgICB8ICAgMyArLQogLi4uL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHwgIDIxICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGMuaCAgICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9pbmMvaHcvZG1jdS5oICB8ICAgNyArCiAuLi4vZHJtL2FtZC9kaXNwbGF5L21v ZHVsZXMvcG93ZXIvTWFrZWZpbGUgICAgfCAgMzEgKysKIC4uLi9hbWQvZGlzcGxheS9tb2R1bGVz L3Bvd2VyL3Bvd2VyX2hlbHBlcnMuYyB8IDMyNiArKysrKysrKysrKysrKysrKysKIC4uLi9hbWQv ZGlzcGxheS9tb2R1bGVzL3Bvd2VyL3Bvd2VyX2hlbHBlcnMuaCB8ICA0NyArKysKIDcgZmlsZXMg Y2hhbmdlZCwgNDM1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvcG93ZXIvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9w b3dlci9wb3dlcl9oZWxwZXJzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvbW9kdWxlcy9wb3dlci9wb3dlcl9oZWxwZXJzLmgKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvTWFrZWZpbGUKaW5kZXggYzk3ZGM5NjEzMzI1Li5jZmRlMTU2OGM3OWEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvTWFrZWZpbGUKQEAgLTMyLDExICszMiwxMiBAQCBzdWJkaXIt Y2NmbGFncy15ICs9IC1JJChGVUxMX0FNRF9ESVNQTEFZX1BBVEgpL21vZHVsZXMvaW5jCiBzdWJk aXItY2NmbGFncy15ICs9IC1JJChGVUxMX0FNRF9ESVNQTEFZX1BBVEgpL21vZHVsZXMvZnJlZXN5 bmMKIHN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKEZVTExfQU1EX0RJU1BMQVlfUEFUSCkvbW9kdWxl cy9jb2xvcgogc3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoRlVMTF9BTURfRElTUExBWV9QQVRIKS9t b2R1bGVzL2luZm9fcGFja2V0CitzdWJkaXItY2NmbGFncy15ICs9IC1JJChGVUxMX0FNRF9ESVNQ TEFZX1BBVEgpL21vZHVsZXMvcG93ZXIKIAogI1RPRE86IHJlbW92ZSB3aGVuIFRpbWluZyBTeW5j IGZlYXR1cmUgaXMgY29tcGxldGUKIHN1YmRpci1jY2ZsYWdzLXkgKz0gLURCVUlMRF9GRUFUVVJF X1RJTUlOR19TWU5DPTAKIAotREFMX0xJQlMgPSBhbWRncHVfZG0gZGMJbW9kdWxlcy9mcmVlc3lu YyBtb2R1bGVzL2NvbG9yIG1vZHVsZXMvaW5mb19wYWNrZXQKK0RBTF9MSUJTID0gYW1kZ3B1X2Rt IGRjCW1vZHVsZXMvZnJlZXN5bmMgbW9kdWxlcy9jb2xvciBtb2R1bGVzL2luZm9fcGFja2V0IG1v ZHVsZXMvcG93ZXIKIAogQU1EX0RBTCA9ICQoYWRkc3VmZml4IC9NYWtlZmlsZSwgJChhZGRwcmVm aXggJChGVUxMX0FNRF9ESVNQTEFZX1BBVEgpLywkKERBTF9MSUJTKSkpCiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCmluZGV4IDBjMWE1 MzNlYjUzMS4uZjcxZmViYjQyMTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNlbmRpZgogCiAj aW5jbHVkZSAibW9kdWxlcy9pbmMvbW9kX2ZyZWVzeW5jLmgiCisjaW5jbHVkZSAibW9kdWxlcy9w b3dlci9wb3dlcl9oZWxwZXJzLmgiCiAKICNkZWZpbmUgRklSTVdBUkVfUkFWRU5fRE1DVQkJImFt ZGdwdS9yYXZlbl9kbWN1LmJpbiIKIE1PRFVMRV9GSVJNV0FSRShGSVJNV0FSRV9SQVZFTl9ETUNV KTsKQEAgLTY0Myw2ICs2NDQsMjYgQEAgc3RhdGljIGludCBkbV9sYXRlX2luaXQodm9pZCAqaGFu ZGxlKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2 aWNlICopaGFuZGxlOwogCisJc3RydWN0IGRtY3VfaXJhbV9wYXJhbWV0ZXJzIHBhcmFtczsKKwl1 bnNpZ25lZCBpbnQgbGluZWFyX2x1dFsxNl07CisJaW50IGk7CisJc3RydWN0IGRtY3UgKmRtY3Ug PSBhZGV2LT5kbS5kYy0+cmVzX3Bvb2wtPmRtY3U7CisJYm9vbCByZXQ7CisKKwlmb3IgKGkgPSAw OyBpIDwgMTY7IGkrKykKKwkJbGluZWFyX2x1dFtpXSA9IDB4RkZGRiAqIGkgLyAxNTsKKworCXBh cmFtcy5zZXQgPSAwOworCXBhcmFtcy5iYWNrbGlnaHRfcmFtcGluZ19zdGFydCA9IDB4Q0NDQzsK KwlwYXJhbXMuYmFja2xpZ2h0X3JhbXBpbmdfcmVkdWN0aW9uID0gMHhDQ0NDQ0NDQzsKKwlwYXJh bXMuYmFja2xpZ2h0X2x1dF9hcnJheV9zaXplID0gMTY7CisJcGFyYW1zLmJhY2tsaWdodF9sdXRf YXJyYXkgPSBsaW5lYXJfbHV0OworCisJcmV0ID0gZG1jdV9sb2FkX2lyYW0oZG1jdSwgcGFyYW1z KTsKKworCWlmICghcmV0KQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCXJldHVybiBkZXRlY3RfbXN0 X2xpbmtfZm9yX2FsbF9jb25uZWN0b3JzKGFkZXYtPmRkZXYpOwogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kYy5oCmluZGV4IDE4ODY1YTc2ZWE1NS4uNmIwOTg4MzEwMTM4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMuaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAi aW5jL2h3X3NlcXVlbmNlci5oIgogI2luY2x1ZGUgImluYy9jb21wcmVzc29yLmgiCisjaW5jbHVk ZSAiaW5jL2h3L2RtY3UuaCIKICNpbmNsdWRlICJkbWwvZGlzcGxheV9tb2RlX2xpYi5oIgogCiAj ZGVmaW5lIERDX1ZFUiAiMy4yLjA2IgpAQCAtNDcsMTMgKzQ4LDYgQEAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAgKiBEaXNwbGF5IENvcmUgSW50ZXJmYWNlcwogICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLXN0cnVjdCBkbWN1X3ZlcnNpb24gewotCXVuc2lnbmVkIGludCBkYXRlOwotCXVuc2ln bmVkIGludCBtb250aDsKLQl1bnNpZ25lZCBpbnQgeWVhcjsKLQl1bnNpZ25lZCBpbnQgaW50ZXJm YWNlX3ZlcnNpb247Ci19OwotCiBzdHJ1Y3QgZGNfdmVyc2lvbnMgewogCWNvbnN0IGNoYXIgKmRj X3ZlcjsKIAlzdHJ1Y3QgZG1jdV92ZXJzaW9uIGRtY3VfdmVyc2lvbjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvZG1jdS5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9ody9kbWN1LmgKaW5kZXggNDU1MDc0N2ZiNjFjLi5jYjg1 ZWFhOTg1N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMv aHcvZG1jdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvZG1j dS5oCkBAIC0zMiw2ICszMiwxMyBAQCBlbnVtIGRtY3Vfc3RhdGUgewogCURNQ1VfUlVOTklORyA9 IDEKIH07CiAKK3N0cnVjdCBkbWN1X3ZlcnNpb24geworCXVuc2lnbmVkIGludCBkYXRlOworCXVu c2lnbmVkIGludCBtb250aDsKKwl1bnNpZ25lZCBpbnQgeWVhcjsKKwl1bnNpZ25lZCBpbnQgaW50 ZXJmYWNlX3ZlcnNpb247Cit9OworCiBzdHJ1Y3QgZG1jdSB7CiAJc3RydWN0IGRjX2NvbnRleHQg KmN0eDsKIAljb25zdCBzdHJ1Y3QgZG1jdV9mdW5jcyAqZnVuY3M7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9wb3dlci9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL3Bvd2VyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODc4NTFmODkyYTUyCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvcG93ZXIvTWFrZWZpbGUKQEAg LTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQgMjAxNyBBZHZhbmNlZCBNaWNybyBEZXZpY2Vz LCBJbmMuCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisjIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorIyBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorIyBUSEUgQ09QWVJJR0hUIEhPTERFUihT KSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyMgT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCisjIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorIyBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCisjCisjCisjIE1ha2VmaWxlIGZvciB0aGUgJ3Bvd2VyJyBzdWItbW9kdWxlIG9mIERBTC4K KyMKKworTU9EX1BPV0VSID0gcG93ZXJfaGVscGVycy5vCisKK0FNRF9EQUxfTU9EX1BPV0VSID0g JChhZGRwcmVmaXggJChBTUREQUxQQVRIKS9tb2R1bGVzL3Bvd2VyLywkKE1PRF9QT1dFUikpCisj JChpbmZvICoqKioqKioqKioqKiAgREFMIFBPV0VSIE1PRFVMRSBNQUtFRklMRSAqKioqKioqKioq KiopCisKK0FNRF9ESVNQTEFZX0ZJTEVTICs9ICQoQU1EX0RBTF9NT0RfUE9XRVIpClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L21vZHVsZXMvcG93ZXIvcG93ZXJfaGVscGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L21vZHVsZXMvcG93ZXIvcG93ZXJfaGVscGVycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMDBmNjNiN2RkMzJmCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvcG93ZXIvcG93ZXJfaGVscGVycy5jCkBA IC0wLDAgKzEsMzI2IEBACisvKiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2Vz LCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09Q WVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFM SU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNp bmNsdWRlICJwb3dlcl9oZWxwZXJzLmgiCisjaW5jbHVkZSAiZGMvaW5jL2h3L2RtY3UuaCIKKwor I2RlZmluZSBESVZfUk9VTkRVUChhLCBiKSAoKChhKSsoKGIpLzIpKS8oYikpCisKKy8qIFBvc3Np YmxlIE1pbiBSZWR1Y3Rpb24gY29uZmlnIGZyb20gbGVhc3QgYWdncmVzc2l2ZSB0byBtb3N0IGFn Z3Jlc3NpdmUKKyAqICAwICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcg ICAgIDggICAgIDkgICAgIDEwICAgIDExICAgMTIKKyAqIDEwMCAgOTguMCA5NC4xICA5NC4xICA4 NS4xICA4MC4zICA3NS4zICA2OS40ICA2MC4wICA1Ny42ICA1MC4yICA0OS44ICA0MC4wICUKKyAq Lworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWluX3JlZHVjdGlvbl90YWJsZVsxM10gPSB7 CisweGZmLCAweGZhLCAweGYwLCAweGYwLCAweGQ5LCAweGNkLCAweGMwLCAweGIxLCAweDk5LCAw eDkzLCAweDgwLCAweDgyLCAweDY2fTsKKworLyogUG9zc2libGUgTWF4IFJlZHVjdGlvbiBjb25m aWdzIGZyb20gbGVhc3QgYWdncmVzc2l2ZSB0byBtb3N0IGFnZ3Jlc3NpdmUKKyAqICAwICAgIDEg ICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgICAgIDggICAgIDkgICAgIDEwICAg IDExICAgMTIKKyAqIDk2LjEgODkuOCA4NS4xICA4MC4zICA2OS40ICA2NC43ICA2NC43ICA1MC4y ICAzOS42ICAzMC4yICAzMC4yICAzMC4yICAxOS42ICUKKyAqLworc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgbWF4X3JlZHVjdGlvbl90YWJsZVsxM10gPSB7CisweGY1LCAweGU1LCAweGQ5LCAw eGNkLCAweGIxLCAweGE1LCAweGE1LCAweDgwLCAweDY1LCAweDRkLCAweDRkLCAweDRkLCAweDMy fTsKKworLyogUHJlZGVmaW5lZCBBQk0gY29uZmlndXJhdGlvbiBzZXRzLiBXZSBtYXkgaGF2ZSBk aWZmZXJlbnQgY29uZmlndXJhdGlvbiBzZXRzCisgKiBpbiBvcmRlciB0byBzYXRpc2Z5IGRpZmZl cmVudCBwb3dlci9xdWFsaXR5IHJlcXVpcmVtZW50cy4KKyAqLworc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWJtX2NvbmZpZ1thYm1fZGVmaW5lc19tYXhfY29uZmlnXVthYm1fZGVmaW5lc19t YXhfbGV2ZWxdID0geworLyogIEFCTSBMZXZlbCAxLCAgICBBQk0gTGV2ZWwgMiwgICAgQUJNIExl dmVsIDMsICAgIEFCTSBMZXZlbCA0ICovCit7ICAgICAgIDIsICAgICAgICAgICAgICA1LCAgICAg ICAgICAgICAgNywgICAgICAgICAgICAgIDggICAgICAgfSwJLyogRGVmYXVsdCAtIE1lZGl1bSBh Z2dyZXNzaXZlbmVzcyAqLworeyAgICAgICAyLCAgICAgICAgICAgICAgNSwgICAgICAgICAgICAg IDgsICAgICAgICAgICAgICAxMSAgICAgIH0sCS8qIEFsdCAjMSAgLSBJbmNyZWFzZWQgYWdncmVz c2l2ZW5lc3MgKi8KK3sgICAgICAgMCwgICAgICAgICAgICAgIDIsICAgICAgICAgICAgICA0LCAg ICAgICAgICAgICAgOCAgICAgICB9LAkvKiBBbHQgIzIgIC0gTWluaW1hbCBhZ2dyZXNzaXZlbmVz cyAqLworeyAgICAgICAzLCAgICAgICAgICAgICAgNiwgICAgICAgICAgICAgIDEwLCAgICAgICAg ICAgICAxMiAgICAgIH0sCS8qIEFsdCAjMyAgLSBTdXBlciBhZ2dyZXNzaXZlbmVzcyAqLworfTsK KworI2RlZmluZSBOVU1fQU1CSV9MRVZFTCAgICA1CisjZGVmaW5lIE5VTV9BR0dSX0xFVkVMICAg IDQKKyNkZWZpbmUgTlVNX1BPV0VSX0ZOX1NFR1MgOAorI2RlZmluZSBOVU1fQkxfQ1VSVkVfU0VH UyAxNgorCisvKiBOT1RFOiBpUkFNIGlzIDI1NkIgaW4gc2l6ZSAqLworc3RydWN0IGlyYW1fdGFi bGVfdl8yIHsKKwkvKiBmbGFncyAgICAgICAgICAgICAgICAgICAgICAqLworCXVpbnQxNl90IGZs YWdzOwkJCQkJCQkvKiAweDAwIFUxNiAgKi8KKworCS8qIHBhcmFtZXRlcnMgZm9yIEFCTTIuMCBh bGdvcml0aG0gKi8KKwl1aW50OF90IG1pbl9yZWR1Y3Rpb25bTlVNX0FNQklfTEVWRUxdW05VTV9B R0dSX0xFVkVMXTsJCS8qIDB4MDIgVTAuOCAqLworCXVpbnQ4X3QgbWF4X3JlZHVjdGlvbltOVU1f QU1CSV9MRVZFTF1bTlVNX0FHR1JfTEVWRUxdOwkJLyogMHgxNiBVMC44ICovCisJdWludDhfdCBi cmlnaHRfcG9zX2dhaW5bTlVNX0FNQklfTEVWRUxdW05VTV9BR0dSX0xFVkVMXTsJLyogMHgyYSBV Mi42ICovCisJdWludDhfdCBicmlnaHRfbmVnX2dhaW5bTlVNX0FNQklfTEVWRUxdW05VTV9BR0dS X0xFVkVMXTsJLyogMHgzZSBVMi42ICovCisJdWludDhfdCBkYXJrX3Bvc19nYWluW05VTV9BTUJJ X0xFVkVMXVtOVU1fQUdHUl9MRVZFTF07CQkvKiAweDUyIFUyLjYgKi8KKwl1aW50OF90IGRhcmtf bmVnX2dhaW5bTlVNX0FNQklfTEVWRUxdW05VTV9BR0dSX0xFVkVMXTsJCS8qIDB4NjYgVTIuNiAq LworCXVpbnQ4X3QgaWlyX2N1cnZlW05VTV9BTUJJX0xFVkVMXTsJCQkJLyogMHg3YSBVMC44ICov CisJdWludDhfdCBkZXZpYXRpb25fZ2FpbjsJCQkJCQkvKiAweDdmIFUwLjggKi8KKworCS8qIHBh cmFtZXRlcnMgZm9yIGNyZ2IgY29udmVyc2lvbiAqLworCXVpbnQxNl90IGNyZ2JfdGhyZXNoW05V TV9QT1dFUl9GTl9TRUdTXTsJCQkvKiAweDgwIFUzLjEzICovCisJdWludDE2X3QgY3JnYl9vZmZz ZXRbTlVNX1BPV0VSX0ZOX1NFR1NdOwkJCS8qIDB4OTAgVTEuMTUgKi8KKwl1aW50MTZfdCBjcmdi X3Nsb3BlW05VTV9QT1dFUl9GTl9TRUdTXTsJCQkJLyogMHhhMCBVNC4xMiAqLworCisJLyogcGFy YW1ldGVycyBmb3IgY3VzdG9tIGN1cnZlICovCisJLyogdGhyZXNob2xkcyBmb3IgYnJpZ2h0bmVz cyAtLT4gYmFja2xpZ2h0ICovCisJdWludDE2X3QgYmFja2xpZ2h0X3RocmVzaG9sZHNbTlVNX0JM X0NVUlZFX1NFR1NdOwkJLyogMHhiMCBVMTYuMCAqLworCS8qIG9mZnNldHMgZm9yIGJyaWdodG5l c3MgLS0+IGJhY2tsaWdodCAqLworCXVpbnQxNl90IGJhY2tsaWdodF9vZmZzZXRzW05VTV9CTF9D VVJWRV9TRUdTXTsJCQkvKiAweGQwIFUxNi4wICovCisKKwkvKiBGb3IgcmVhZGluZyBQU1IgU3Rh dGUgZGlyZWN0bHkgZnJvbSBJUkFNICovCisJdWludDhfdCBwc3Jfc3RhdGU7CQkJCQkJLyogMHhm MCAgICAgICAqLworCXVpbnQ4X3QgZG1jdV9pbnRlcmZhY2VfdmVyc2lvbjsJCQkJCS8qIDB4ZjEg ICAgICAgKi8KKwl1aW50OF90IGRtY3VfZGF0ZV92ZXJzaW9uX3llYXJfYjA7CQkJCS8qIDB4ZjIg ICAgICAgKi8KKwl1aW50OF90IGRtY3VfZGF0ZV92ZXJzaW9uX3llYXJfYjE7CQkJCS8qIDB4ZjMg ICAgICAgKi8KKwl1aW50OF90IGRtY3VfZGF0ZV92ZXJzaW9uX21vbnRoOwkJCQkvKiAweGY0ICAg ICAgICovCisJdWludDhfdCBkbWN1X2RhdGVfdmVyc2lvbl9kYXk7CQkJCQkvKiAweGY1ICAgICAg ICovCisJdWludDhfdCBkbWN1X3N0YXRlOwkJCQkJCS8qIDB4ZjYgICAgICAgKi8KKworCXVpbnQx Nl90IGJsUmFtcFJlZHVjdGlvbjsJCQkJCS8qIDB4ZjcgICAgICAgKi8KKwl1aW50MTZfdCBibFJh bXBTdGFydDsJCQkJCQkvKiAweGY5ICAgICAgICovCisJdWludDhfdCBkdW1teTU7CQkJCQkJCS8q IDB4ZmIgICAgICAgKi8KKwl1aW50OF90IGR1bW15NjsJCQkJCQkJLyogMHhmYyAgICAgICAqLwor CXVpbnQ4X3QgZHVtbXk3OwkJCQkJCQkvKiAweGZkICAgICAgICovCisJdWludDhfdCBkdW1teTg7 CQkJCQkJCS8qIDB4ZmUgICAgICAgKi8KKwl1aW50OF90IGR1bW15OTsJCQkJCQkJLyogMHhmZiAg ICAgICAqLworfTsKKworc3RhdGljIHVpbnQxNl90IGJhY2tsaWdodF84X3RvXzE2KHVuc2lnbmVk IGludCBiYWNrbGlnaHRfOGJpdCkKK3sKKwlyZXR1cm4gKHVpbnQxNl90KShiYWNrbGlnaHRfOGJp dCAqIDB4MTAxKTsKK30KKworc3RhdGljIHZvaWQgZmlsbF9iYWNrbGlnaHRfdHJhbnNmb3JtX3Rh YmxlKHN0cnVjdCBkbWN1X2lyYW1fcGFyYW1ldGVycyBwYXJhbXMsCisJCXN0cnVjdCBpcmFtX3Rh YmxlX3ZfMiAqdGFibGUpCit7CisJdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQgaW50IG51bV9l bnRyaWVzID0gTlVNX0JMX0NVUlZFX1NFR1M7CisJdW5zaWduZWQgaW50IHF1ZXJ5X2lucHV0Xzhi aXQ7CisJdW5zaWduZWQgaW50IHF1ZXJ5X291dHB1dF84Yml0OworCXVuc2lnbmVkIGludCBsdXRf aW5kZXg7CisKKwl0YWJsZS0+YmFja2xpZ2h0X3RocmVzaG9sZHNbMF0gPSAwOworCXRhYmxlLT5i YWNrbGlnaHRfb2Zmc2V0c1swXSA9IHBhcmFtcy5iYWNrbGlnaHRfbHV0X2FycmF5WzBdOworCXRh YmxlLT5iYWNrbGlnaHRfdGhyZXNob2xkc1tudW1fZW50cmllcy0xXSA9IDB4RkZGRjsKKwl0YWJs ZS0+YmFja2xpZ2h0X29mZnNldHNbbnVtX2VudHJpZXMtMV0gPQorCQlwYXJhbXMuYmFja2xpZ2h0 X2x1dF9hcnJheVtwYXJhbXMuYmFja2xpZ2h0X2x1dF9hcnJheV9zaXplIC0gMV07CisKKwkvKiBT ZXR1cCBhbGwgYnJpZ2h0bmVzcyBsZXZlbHMgYmV0d2VlbiAwJSBhbmQgMTAwJSBleGNsdXNpdmUK KwkgKiBGaWxscyBicmlnaHRuZXNzLXRvLWJhY2tsaWdodCB0cmFuc2Zvcm0gdGFibGUuIEJhY2ts aWdodCBjdXN0b20gY3VydmUKKwkgKiBkZXNjcmliZXMgdHJhbnNmb3JtIGZyb20gYnJpZ2h0bmVz cyB0byBiYWNrbGlnaHQuIEl0IHdpbGwgYmUgZGVmaW5lZAorCSAqIGFzIHNldCBvZiB0aHJlc2hv bGRzIGFuZCBzZXQgb2Ygb2Zmc2V0cywgdG9nZXRoZXIsIGltcGx5aW5nCisJICogZXh0cmFwb2xh dGlvbiBvZiBjdXN0b20gY3VydmUgaW50byAxNiB1bmlmb3JtbHkgc3Bhbm5lZCBsaW5lYXIKKwkg KiBzZWdtZW50cy4gIEVhY2ggdGhyZXNob2xkL29mZnNldCByZXByZXNlbnRlZCBieSAxNiBiaXQg ZW50cnkgaW4KKwkgKiBmb3JtYXQgVTQuMTAuCisJICovCisJZm9yIChpID0gMTsgaSsxIDwgbnVt X2VudHJpZXM7IGkrKykgeworCQlxdWVyeV9pbnB1dF84Yml0ID0gRElWX1JPVU5EVVAoKGkgKiAy NTYpLCBudW1fZW50cmllcyk7CisKKwkJbHV0X2luZGV4ID0gKHBhcmFtcy5iYWNrbGlnaHRfbHV0 X2FycmF5X3NpemUgLSAxKSAqIGkgLyAobnVtX2VudHJpZXMgLSAxKTsKKwkJQVNTRVJUKGx1dF9p bmRleCA8IHBhcmFtcy5iYWNrbGlnaHRfbHV0X2FycmF5X3NpemUpOworCQlxdWVyeV9vdXRwdXRf OGJpdCA9IHBhcmFtcy5iYWNrbGlnaHRfbHV0X2FycmF5W2x1dF9pbmRleF0gPj4gODsKKworCQl0 YWJsZS0+YmFja2xpZ2h0X3RocmVzaG9sZHNbaV0gPQorCQkJCWJhY2tsaWdodF84X3RvXzE2KHF1 ZXJ5X2lucHV0XzhiaXQpOworCQl0YWJsZS0+YmFja2xpZ2h0X29mZnNldHNbaV0gPQorCQkJCWJh Y2tsaWdodF84X3RvXzE2KHF1ZXJ5X291dHB1dF84Yml0KTsKKwl9Cit9CisKK2Jvb2wgZG1jdV9s b2FkX2lyYW0oc3RydWN0IGRtY3UgKmRtY3UsCisJc3RydWN0IGRtY3VfaXJhbV9wYXJhbWV0ZXJz IHBhcmFtcykKK3sKKwlzdHJ1Y3QgaXJhbV90YWJsZV92XzIgcmFtX3RhYmxlOworCXVuc2lnbmVk IGludCBzZXQgPSBwYXJhbXMuc2V0OworCisJaWYgKGRtY3UgPT0gTlVMTCkKKwkJcmV0dXJuIGZh bHNlOworCisJaWYgKCFkbWN1LT5mdW5jcy0+aXNfZG1jdV9pbml0aWFsaXplZChkbWN1KSkKKwkJ cmV0dXJuIHRydWU7CisKKwltZW1zZXQoJnJhbV90YWJsZSwgMCwgc2l6ZW9mKHJhbV90YWJsZSkp OworCisJcmFtX3RhYmxlLmZsYWdzID0gMHgwOworCXJhbV90YWJsZS5kZXZpYXRpb25fZ2FpbiA9 IDB4YjM7CisKKwlyYW1fdGFibGUuYmxSYW1wUmVkdWN0aW9uID0KKwkJY3B1X3RvX2JlMTYocGFy YW1zLmJhY2tsaWdodF9yYW1waW5nX3JlZHVjdGlvbik7CisJcmFtX3RhYmxlLmJsUmFtcFN0YXJ0 ID0KKwkJY3B1X3RvX2JlMTYocGFyYW1zLmJhY2tsaWdodF9yYW1waW5nX3N0YXJ0KTsKKworCXJh bV90YWJsZS5taW5fcmVkdWN0aW9uWzBdWzBdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29u ZmlnW3NldF1bMF1dOworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9uWzFdWzBdID0gbWluX3JlZHVj dGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9u WzJdWzBdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90 YWJsZS5taW5fcmVkdWN0aW9uWzNdWzBdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmln W3NldF1bMF1dOworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9uWzRdWzBdID0gbWluX3JlZHVjdGlv bl90YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzBd WzBdID0gbWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90YWJs ZS5tYXhfcmVkdWN0aW9uWzFdWzBdID0gbWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3Nl dF1bMF1dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzJdWzBdID0gbWF4X3JlZHVjdGlvbl90 YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzNdWzBd ID0gbWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bMF1dOworCXJhbV90YWJsZS5t YXhfcmVkdWN0aW9uWzRdWzBdID0gbWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1b MF1dOworCisJcmFtX3RhYmxlLm1pbl9yZWR1Y3Rpb25bMF1bMV0gPSBtaW5fcmVkdWN0aW9uX3Rh YmxlW2FibV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1pbl9yZWR1Y3Rpb25bMV1bMV0g PSBtaW5fcmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1p bl9yZWR1Y3Rpb25bMl1bMV0gPSBtaW5fcmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsx XV07CisJcmFtX3RhYmxlLm1pbl9yZWR1Y3Rpb25bM11bMV0gPSBtaW5fcmVkdWN0aW9uX3RhYmxl W2FibV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1pbl9yZWR1Y3Rpb25bNF1bMV0gPSBt aW5fcmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1heF9y ZWR1Y3Rpb25bMF1bMV0gPSBtYXhfcmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsxXV07 CisJcmFtX3RhYmxlLm1heF9yZWR1Y3Rpb25bMV1bMV0gPSBtYXhfcmVkdWN0aW9uX3RhYmxlW2Fi bV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1heF9yZWR1Y3Rpb25bMl1bMV0gPSBtYXhf cmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsxXV07CisJcmFtX3RhYmxlLm1heF9yZWR1 Y3Rpb25bM11bMV0gPSBtYXhfcmVkdWN0aW9uX3RhYmxlW2FibV9jb25maWdbc2V0XVsxXV07CisJ cmFtX3RhYmxlLm1heF9yZWR1Y3Rpb25bNF1bMV0gPSBtYXhfcmVkdWN0aW9uX3RhYmxlW2FibV9j b25maWdbc2V0XVsxXV07CisKKwlyYW1fdGFibGUubWluX3JlZHVjdGlvblswXVsyXSA9IG1pbl9y ZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwlyYW1fdGFibGUubWluX3JlZHVj dGlvblsxXVsyXSA9IG1pbl9yZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwly YW1fdGFibGUubWluX3JlZHVjdGlvblsyXVsyXSA9IG1pbl9yZWR1Y3Rpb25fdGFibGVbYWJtX2Nv bmZpZ1tzZXRdWzJdXTsKKwlyYW1fdGFibGUubWluX3JlZHVjdGlvblszXVsyXSA9IG1pbl9yZWR1 Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwlyYW1fdGFibGUubWluX3JlZHVjdGlv bls0XVsyXSA9IG1pbl9yZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwlyYW1f dGFibGUubWF4X3JlZHVjdGlvblswXVsyXSA9IG1heF9yZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZp Z1tzZXRdWzJdXTsKKwlyYW1fdGFibGUubWF4X3JlZHVjdGlvblsxXVsyXSA9IG1heF9yZWR1Y3Rp b25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwlyYW1fdGFibGUubWF4X3JlZHVjdGlvblsy XVsyXSA9IG1heF9yZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKwlyYW1fdGFi bGUubWF4X3JlZHVjdGlvblszXVsyXSA9IG1heF9yZWR1Y3Rpb25fdGFibGVbYWJtX2NvbmZpZ1tz ZXRdWzJdXTsKKwlyYW1fdGFibGUubWF4X3JlZHVjdGlvbls0XVsyXSA9IG1heF9yZWR1Y3Rpb25f dGFibGVbYWJtX2NvbmZpZ1tzZXRdWzJdXTsKKworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9uWzBd WzNdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJs ZS5taW5fcmVkdWN0aW9uWzFdWzNdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3Nl dF1bM11dOworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9uWzJdWzNdID0gbWluX3JlZHVjdGlvbl90 YWJsZVthYm1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJsZS5taW5fcmVkdWN0aW9uWzNdWzNd ID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJsZS5t aW5fcmVkdWN0aW9uWzRdWzNdID0gbWluX3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1b M11dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzBdWzNdID0gbWF4X3JlZHVjdGlvbl90YWJs ZVthYm1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzFdWzNdID0g bWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJsZS5tYXhf cmVkdWN0aW9uWzJdWzNdID0gbWF4X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bM11d OworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzNdWzNdID0gbWF4X3JlZHVjdGlvbl90YWJsZVth Ym1fY29uZmlnW3NldF1bM11dOworCXJhbV90YWJsZS5tYXhfcmVkdWN0aW9uWzRdWzNdID0gbWF4 X3JlZHVjdGlvbl90YWJsZVthYm1fY29uZmlnW3NldF1bM11dOworCisJcmFtX3RhYmxlLmJyaWdo dF9wb3NfZ2FpblswXVswXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblswXVsx XSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblswXVsyXSA9IDB4MjA7CisJcmFt X3RhYmxlLmJyaWdodF9wb3NfZ2FpblswXVszXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9w b3NfZ2FpblsxXVswXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblsxXVsxXSA9 IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblsxXVsyXSA9IDB4MjA7CisJcmFtX3Rh YmxlLmJyaWdodF9wb3NfZ2FpblsxXVszXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3Nf Z2FpblsyXVswXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblsyXVsxXSA9IDB4 MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblsyXVsyXSA9IDB4MjA7CisJcmFtX3RhYmxl LmJyaWdodF9wb3NfZ2FpblsyXVszXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2Fp blszXVswXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblszXVsxXSA9IDB4MjA7 CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2FpblszXVsyXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJy aWdodF9wb3NfZ2FpblszXVszXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2Fpbls0 XVswXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9wb3NfZ2Fpbls0XVsxXSA9IDB4MjA7CisJ cmFtX3RhYmxlLmJyaWdodF9wb3NfZ2Fpbls0XVsyXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdo dF9wb3NfZ2Fpbls0XVszXSA9IDB4MjA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblswXVsx XSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblswXVsyXSA9IDB4MDA7CisJcmFt X3RhYmxlLmJyaWdodF9uZWdfZ2FpblswXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9u ZWdfZ2FpblsxXVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblsxXVsxXSA9 IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblsxXVsyXSA9IDB4MDA7CisJcmFtX3Rh YmxlLmJyaWdodF9uZWdfZ2FpblsxXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdf Z2FpblsyXVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblsyXVsxXSA9IDB4 MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblsyXVsyXSA9IDB4MDA7CisJcmFtX3RhYmxl LmJyaWdodF9uZWdfZ2FpblsyXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2Fp blszXVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblszXVsxXSA9IDB4MDA7 CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2FpblszXVsyXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJy aWdodF9uZWdfZ2FpblszXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2Fpbls0 XVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdodF9uZWdfZ2Fpbls0XVsxXSA9IDB4MDA7CisJ cmFtX3RhYmxlLmJyaWdodF9uZWdfZ2Fpbls0XVsyXSA9IDB4MDA7CisJcmFtX3RhYmxlLmJyaWdo dF9uZWdfZ2Fpbls0XVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfcG9zX2dhaW5bMF1bMF0g PSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bvc19nYWluWzBdWzFdID0gMHgwMDsKKwlyYW1fdGFi bGUuZGFya19wb3NfZ2FpblswXVsyXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfcG9zX2dhaW5b MF1bM10gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bvc19nYWluWzFdWzBdID0gMHgwMDsKKwly YW1fdGFibGUuZGFya19wb3NfZ2FpblsxXVsxXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfcG9z X2dhaW5bMV1bMl0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bvc19nYWluWzFdWzNdID0gMHgw MDsKKwlyYW1fdGFibGUuZGFya19wb3NfZ2FpblsyXVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRh cmtfcG9zX2dhaW5bMl1bMV0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bvc19nYWluWzJdWzJd ID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19wb3NfZ2FpblsyXVszXSA9IDB4MDA7CisJcmFtX3Rh YmxlLmRhcmtfcG9zX2dhaW5bM11bMF0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bvc19nYWlu WzNdWzFdID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19wb3NfZ2FpblszXVsyXSA9IDB4MDA7CisJ cmFtX3RhYmxlLmRhcmtfcG9zX2dhaW5bM11bM10gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX3Bv c19nYWluWzRdWzBdID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19wb3NfZ2Fpbls0XVsxXSA9IDB4 MDA7CisJcmFtX3RhYmxlLmRhcmtfcG9zX2dhaW5bNF1bMl0gPSAweDAwOworCXJhbV90YWJsZS5k YXJrX3Bvc19nYWluWzRdWzNdID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19uZWdfZ2FpblswXVsw XSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfbmVnX2dhaW5bMF1bMV0gPSAweDAwOworCXJhbV90 YWJsZS5kYXJrX25lZ19nYWluWzBdWzJdID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19uZWdfZ2Fp blswXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfbmVnX2dhaW5bMV1bMF0gPSAweDAwOwor CXJhbV90YWJsZS5kYXJrX25lZ19nYWluWzFdWzFdID0gMHgwMDsKKwlyYW1fdGFibGUuZGFya19u ZWdfZ2FpblsxXVsyXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfbmVnX2dhaW5bMV1bM10gPSAw eDAwOworCXJhbV90YWJsZS5kYXJrX25lZ19nYWluWzJdWzBdID0gMHgwMDsKKwlyYW1fdGFibGUu ZGFya19uZWdfZ2FpblsyXVsxXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfbmVnX2dhaW5bMl1b Ml0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX25lZ19nYWluWzJdWzNdID0gMHgwMDsKKwlyYW1f dGFibGUuZGFya19uZWdfZ2FpblszXVswXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtfbmVnX2dh aW5bM11bMV0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX25lZ19nYWluWzNdWzJdID0gMHgwMDsK KwlyYW1fdGFibGUuZGFya19uZWdfZ2FpblszXVszXSA9IDB4MDA7CisJcmFtX3RhYmxlLmRhcmtf bmVnX2dhaW5bNF1bMF0gPSAweDAwOworCXJhbV90YWJsZS5kYXJrX25lZ19nYWluWzRdWzFdID0g MHgwMDsKKwlyYW1fdGFibGUuZGFya19uZWdfZ2Fpbls0XVsyXSA9IDB4MDA7CisJcmFtX3RhYmxl LmRhcmtfbmVnX2dhaW5bNF1bM10gPSAweDAwOworCXJhbV90YWJsZS5paXJfY3VydmVbMF0gPSAw eDY1OworCXJhbV90YWJsZS5paXJfY3VydmVbMV0gPSAweDY1OworCXJhbV90YWJsZS5paXJfY3Vy dmVbMl0gPSAweDY1OworCXJhbV90YWJsZS5paXJfY3VydmVbM10gPSAweDY1OworCXJhbV90YWJs ZS5paXJfY3VydmVbNF0gPSAweDY1OworCXJhbV90YWJsZS5jcmdiX3RocmVzaFswXSA9IGNwdV90 b19iZTE2KDB4MTNiNik7CisJcmFtX3RhYmxlLmNyZ2JfdGhyZXNoWzFdID0gY3B1X3RvX2JlMTYo MHgxNjQ4KTsKKwlyYW1fdGFibGUuY3JnYl90aHJlc2hbMl0gPSBjcHVfdG9fYmUxNigweDE4ZTMp OworCXJhbV90YWJsZS5jcmdiX3RocmVzaFszXSA9IGNwdV90b19iZTE2KDB4MWI0MSk7CisJcmFt X3RhYmxlLmNyZ2JfdGhyZXNoWzRdID0gY3B1X3RvX2JlMTYoMHgxZDQ2KTsKKwlyYW1fdGFibGUu Y3JnYl90aHJlc2hbNV0gPSBjcHVfdG9fYmUxNigweDFmMjEpOworCXJhbV90YWJsZS5jcmdiX3Ro cmVzaFs2XSA9IGNwdV90b19iZTE2KDB4MjE2Nyk7CisJcmFtX3RhYmxlLmNyZ2JfdGhyZXNoWzdd ID0gY3B1X3RvX2JlMTYoMHgyMzg0KTsKKwlyYW1fdGFibGUuY3JnYl9vZmZzZXRbMF0gPSBjcHVf dG9fYmUxNigweDI5OTkpOworCXJhbV90YWJsZS5jcmdiX29mZnNldFsxXSA9IGNwdV90b19iZTE2 KDB4Mzk5OSk7CisJcmFtX3RhYmxlLmNyZ2Jfb2Zmc2V0WzJdID0gY3B1X3RvX2JlMTYoMHg0NjY2 KTsKKwlyYW1fdGFibGUuY3JnYl9vZmZzZXRbM10gPSBjcHVfdG9fYmUxNigweDU5OTkpOworCXJh bV90YWJsZS5jcmdiX29mZnNldFs0XSA9IGNwdV90b19iZTE2KDB4NjMzMyk7CisJcmFtX3RhYmxl LmNyZ2Jfb2Zmc2V0WzVdID0gY3B1X3RvX2JlMTYoMHg3ODAwKTsKKwlyYW1fdGFibGUuY3JnYl9v ZmZzZXRbNl0gPSBjcHVfdG9fYmUxNigweDhjMDApOworCXJhbV90YWJsZS5jcmdiX29mZnNldFs3 XSA9IGNwdV90b19iZTE2KDB4YTAwMCk7CisJcmFtX3RhYmxlLmNyZ2Jfc2xvcGVbMF0gID0gY3B1 X3RvX2JlMTYoMHgzMTQ3KTsKKwlyYW1fdGFibGUuY3JnYl9zbG9wZVsxXSAgPSBjcHVfdG9fYmUx NigweDI5NzgpOworCXJhbV90YWJsZS5jcmdiX3Nsb3BlWzJdICA9IGNwdV90b19iZTE2KDB4MjNh Mik7CisJcmFtX3RhYmxlLmNyZ2Jfc2xvcGVbM10gID0gY3B1X3RvX2JlMTYoMHgxZjU1KTsKKwly YW1fdGFibGUuY3JnYl9zbG9wZVs0XSAgPSBjcHVfdG9fYmUxNigweDFjNjMpOworCXJhbV90YWJs ZS5jcmdiX3Nsb3BlWzVdICA9IGNwdV90b19iZTE2KDB4MWEwZik7CisJcmFtX3RhYmxlLmNyZ2Jf c2xvcGVbNl0gID0gY3B1X3RvX2JlMTYoMHgxNzhkKTsKKwlyYW1fdGFibGUuY3JnYl9zbG9wZVs3 XSAgPSBjcHVfdG9fYmUxNigweDE1YWIpOworCisJZmlsbF9iYWNrbGlnaHRfdHJhbnNmb3JtX3Rh YmxlKAorCQkJcGFyYW1zLCAmcmFtX3RhYmxlKTsKKworCXJldHVybiBkbWN1LT5mdW5jcy0+bG9h ZF9pcmFtKAorCQkJZG1jdSwgMCwgKGNoYXIgKikoJnJhbV90YWJsZSksIHNpemVvZihyYW1fdGFi bGUpKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVz L3Bvd2VyL3Bvd2VyX2hlbHBlcnMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1 bGVzL3Bvd2VyL3Bvd2VyX2hlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmRhNWRmMDBmZWRjZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9tb2R1bGVzL3Bvd2VyL3Bvd2VyX2hlbHBlcnMuaApAQCAtMCwwICsxLDQ3 IEBACisvKiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERF UihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAq IE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNpZm5kZWYgTU9EVUxF U19QT1dFUl9QT1dFUl9IRUxQRVJTX0hfCisjZGVmaW5lIE1PRFVMRVNfUE9XRVJfUE9XRVJfSEVM UEVSU19IXworCisjaW5jbHVkZSAiZGMvaW5jL2h3L2RtY3UuaCIKKworCitlbnVtIGFibV9kZWZp bmVzIHsKKwlhYm1fZGVmaW5lc19tYXhfbGV2ZWwgPSA0LAorCWFibV9kZWZpbmVzX21heF9jb25m aWcgPSA0LAorfTsKKworc3RydWN0IGRtY3VfaXJhbV9wYXJhbWV0ZXJzIHsKKwl1bnNpZ25lZCBp bnQgKmJhY2tsaWdodF9sdXRfYXJyYXk7CisJdW5zaWduZWQgaW50IGJhY2tsaWdodF9sdXRfYXJy YXlfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgYmFja2xpZ2h0X3JhbXBpbmdfcmVkdWN0aW9uOworCXVu c2lnbmVkIGludCBiYWNrbGlnaHRfcmFtcGluZ19zdGFydDsKKwl1bnNpZ25lZCBpbnQgc2V0Owor fTsKKworYm9vbCBkbWN1X2xvYWRfaXJhbShzdHJ1Y3QgZG1jdSAqZG1jdSwKKwkJc3RydWN0IGRt Y3VfaXJhbV9wYXJhbWV0ZXJzIHBhcmFtcyk7CisKKyNlbmRpZiAvKiBNT0RVTEVTX1BPV0VSX1BP V0VSX0hFTFBFUlNfSF8gKi8KLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hbWQtZ2Z4Cg==