From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Courbot Subject: [PATCH v2 02/14] core: add falcon library Date: Thu, 27 Oct 2016 13:36:56 +0900 Message-ID: <20161027043708.22538-3-acourbot@nvidia.com> References: <20161027043708.22538-1-acourbot@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161027043708.22538-1-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org U29tZSBmYWxjb24gZnVuY3Rpb25hbGl0eSwgbGlrZSBsb2FkaW5nIGNvZGUvZGF0YSBpbnRvIElN RU0vRE1FTSwgaXMKcmUtaW1wbGVtZW50ZWQgaW4gdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVy LiBDcmVhdGUgYSBzbWFsbCBmYWxjb24KbGlicmFyeSB0aGF0IHdpbGwgY29udGFpbiBtb3N0IGNv bW1vbiBvcGVyYXRpb25zIGluIG9yZGVyIHRvIGF2b2lkCmR1cGxpY2F0ZSBjb2RlLgoKRm9yIG5v dyB0aGlzIGxpYnJhcnkgY29udGFpbnMgdmFyaW91cyBkZWZpbmVzIHRoYXQgYXJlIHVzZWQgaW4g c2VjdXJlCmJvb3QgY29kZSwgcGx1cyBJTUVNIGFuZCBETUVNIGxvYWRpbmcgZnVuY3Rpb25zLgoK SW4gYWRkaXRpb24gdG8gdGhlIGxpYnJhcnkgaXRzZWxmLCB0aGlzIHBhdGNoIHVwZGF0ZXMgdXNl cnMgb2YgdGhlCnByZXZpb3VzbHkgc2VjdXJlLWJvb3Qgb25seSBkZWZpbml0aW9ucyB0byB1c2Ug dGhlIG5ldyBnbG9iYWwgb25lcy4KClNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBDb3VyYm90IDxh Y291cmJvdEBudmlkaWEuY29tPgotLS0KIGRybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9jb3JlL2Zh bGNvbi5oICAgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJtL25vdXZlYXUvaW5j bHVkZS9udmttL3N1YmRldi9zZWNib290LmggfCAxNiArKy0tLS0tLQogZHJtL25vdXZlYXUvbnZr bS9jb3JlL0tidWlsZCAgICAgICAgICAgICAgfCAgMSArCiBkcm0vbm91dmVhdS9udmttL2NvcmUv ZmFsY29uLmMgICAgICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGRybS9ub3V2ZWF1L252a20vZW5naW5lL2dyL2dmMTAwLmMgICAgICAgIHwgMTYgKysrKy0tLS0K IGRybS9ub3V2ZWF1L252a20vZW5naW5lL2dyL2dtMjAwLmMgICAgICAgIHwgIDYgKy0tCiBkcm0v bm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2Jhc2UuYyAgICB8IDIzICsrKy0tLS0tLS0tLQog ZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9nbTIwMC5jICAgfCA0OCArKysrKysrKysr LS0tLS0tLS0tLS0tLS0KIGRybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvZ20yMGIuYyAg IHwgIDQgKy0KIGRybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvcHJpdi5oICAgIHwgIDgg KystLQogMTAgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9jb3JlL2ZhbGNv bi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJtL25vdXZlYXUvbnZrbS9jb3JlL2ZhbGNvbi5jCgpk aWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL2NvcmUvZmFsY29uLmggYi9kcm0v bm91dmVhdS9pbmNsdWRlL252a20vY29yZS9mYWxjb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjUzMDExOTg0NzE2MwotLS0gL2Rldi9udWxsCisrKyBiL2RybS9u b3V2ZWF1L2luY2x1ZGUvbnZrbS9jb3JlL2ZhbGNvbi5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMTQsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19OVktNX0ZBTENPTl9IX18KKyNkZWZp bmUgX19OVktNX0ZBTENPTl9IX18KKworI2luY2x1ZGUgPGNvcmUvZGV2aWNlLmg+CisKK2VudW0g bnZrbV9mYWxjb25pZHggeworCU5WS01fRkFMQ09OX1BNVQkJPSAwLAorCU5WS01fRkFMQ09OX1JF U0VSVkVECT0gMSwKKwlOVktNX0ZBTENPTl9GRUNTCT0gMiwKKwlOVktNX0ZBTENPTl9HUENDUwk9 IDMsCisJTlZLTV9GQUxDT05fRU5ECQk9IDQsCisJTlZLTV9GQUxDT05fSU5WQUxJRAk9IDB4ZmZm ZmZmZmYsCit9OworCitlbnVtIG52a21fZmFsY29uX2RtYWlkeCB7CisJRkFMQ09OX0RNQUlEWF9V Q09ERQkJPSAwLAorCUZBTENPTl9ETUFJRFhfVklSVAkJPSAxLAorCUZBTENPTl9ETUFJRFhfUEhZ U19WSUQJCT0gMiwKKwlGQUxDT05fRE1BSURYX1BIWVNfU1lTX0NPSAk9IDMsCisJRkFMQ09OX0RN QUlEWF9QSFlTX1NZU19OQ09ICT0gNCwKK307CisKK2V4dGVybiBjb25zdCBjaGFyICpudmttX2Zh bGNvbl9uYW1lW107CisKK3ZvaWQgbnZrbV9mYWxjb25fbG9hZF9pbWVtKHN0cnVjdCBudmttX2Rl dmljZSAqLCB1MzIsIHZvaWQgKiwgdTMyLCB1MzIsIHUzMik7Cit2b2lkIG52a21fZmFsY29uX2xv YWRfZG1lbShzdHJ1Y3QgbnZrbV9kZXZpY2UgKiwgdTMyLCB2b2lkICosIHUzMiwgdTMyKTsKKwor I2VuZGlmCmRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L3NlY2Jv b3QuaCBiL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvc2VjYm9vdC5oCmluZGV4IGIw NGMzOGMwNzc2MS4uZmZjMjIwNGQyYTUwIDEwMDY0NAotLS0gYS9kcm0vbm91dmVhdS9pbmNsdWRl L252a20vc3ViZGV2L3NlY2Jvb3QuaAorKysgYi9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3Vi ZGV2L3NlY2Jvb3QuaApAQCAtMjQsMTUgKzI0LDcgQEAKICNkZWZpbmUgX19OVktNX1NFQ1VSRV9C T09UX0hfXwogCiAjaW5jbHVkZSA8Y29yZS9zdWJkZXYuaD4KLQotZW51bSBudmttX3NlY2Jvb3Rf ZmFsY29uIHsKLQlOVktNX1NFQ0JPT1RfRkFMQ09OX1BNVQk9IDAsCi0JTlZLTV9TRUNCT09UX0ZB TENPTl9SRVNFUlZFRCA9IDEsCi0JTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTID0gMiwKLQlOVktN X1NFQ0JPT1RfRkFMQ09OX0dQQ0NTID0gMywKLQlOVktNX1NFQ0JPT1RfRkFMQ09OX0VORCA9IDQs Ci0JTlZLTV9TRUNCT09UX0ZBTENPTl9JTlZBTElEID0gMHhmZmZmZmZmZiwKLX07CisjaW5jbHVk ZSA8Y29yZS9mYWxjb24uaD4KIAogLyoqCiAgKiBAYmFzZToJCWJhc2UgSU8gYWRkcmVzcyBvZiB0 aGUgZmFsY29uIHBlcmZvcm1pbmcgc2VjdXJlIGJvb3QKQEAgLTQ4LDkgKzQwLDkgQEAgc3RydWN0 IG52a21fc2VjYm9vdCB7CiB9OwogI2RlZmluZSBudmttX3NlY2Jvb3QocCkgY29udGFpbmVyX29m KChwKSwgc3RydWN0IG52a21fc2VjYm9vdCwgc3ViZGV2KQogCi1ib29sIG52a21fc2VjYm9vdF9p c19tYW5hZ2VkKHN0cnVjdCBudmttX3NlY2Jvb3QgKiwgZW51bSBudmttX3NlY2Jvb3RfZmFsY29u KTsKLWludCBudmttX3NlY2Jvb3RfcmVzZXQoc3RydWN0IG52a21fc2VjYm9vdCAqLCB1MzIgZmFs Y29uKTsKLWludCBudmttX3NlY2Jvb3Rfc3RhcnQoc3RydWN0IG52a21fc2VjYm9vdCAqLCB1MzIg ZmFsY29uKTsKK2Jvb2wgbnZrbV9zZWNib290X2lzX21hbmFnZWQoc3RydWN0IG52a21fc2VjYm9v dCAqLCBlbnVtIG52a21fZmFsY29uaWR4KTsKK2ludCBudmttX3NlY2Jvb3RfcmVzZXQoc3RydWN0 IG52a21fc2VjYm9vdCAqLCBlbnVtIG52a21fZmFsY29uaWR4KTsKK2ludCBudmttX3NlY2Jvb3Rf c3RhcnQoc3RydWN0IG52a21fc2VjYm9vdCAqLCBlbnVtIG52a21fZmFsY29uaWR4KTsKIAogaW50 IGdtMjAwX3NlY2Jvb3RfbmV3KHN0cnVjdCBudmttX2RldmljZSAqLCBpbnQsIHN0cnVjdCBudmtt X3NlY2Jvb3QgKiopOwogaW50IGdtMjBiX3NlY2Jvb3RfbmV3KHN0cnVjdCBudmttX2RldmljZSAq LCBpbnQsIHN0cnVjdCBudmttX3NlY2Jvb3QgKiopOwpkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUv bnZrbS9jb3JlL0tidWlsZCBiL2RybS9ub3V2ZWF1L252a20vY29yZS9LYnVpbGQKaW5kZXggODZh MzFhOGUxZTUxLi40MTk2ZTQ2MjBjM2IgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2ZWF1L252a20vY29y ZS9LYnVpbGQKKysrIGIvZHJtL25vdXZlYXUvbnZrbS9jb3JlL0tidWlsZApAQCAtMTMsMyArMTMs NCBAQCBudmttLXkgKz0gbnZrbS9jb3JlL29wcm94eS5vCiBudmttLXkgKz0gbnZrbS9jb3JlL29w dGlvbi5vCiBudmttLXkgKz0gbnZrbS9jb3JlL3JhbWh0Lm8KIG52a20teSArPSBudmttL2NvcmUv c3ViZGV2Lm8KK252a20teSArPSBudmttL2NvcmUvZmFsY29uLm8KZGlmZiAtLWdpdCBhL2RybS9u b3V2ZWF1L252a20vY29yZS9mYWxjb24uYyBiL2RybS9ub3V2ZWF1L252a20vY29yZS9mYWxjb24u YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwNmRlNDA4OGEyOQot LS0gL2Rldi9udWxsCisrKyBiL2RybS9ub3V2ZWF1L252a20vY29yZS9mYWxjb24uYwpAQCAtMCww ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2LCBOVklESUEgQ09SUE9SQVRJT04u IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8Y29yZS9m YWxjb24uaD4KKworY29uc3QgY2hhciAqCitudmttX2ZhbGNvbl9uYW1lW10gPSB7CisJW05WS01f RkFMQ09OX1BNVV0gPSAiUE1VIiwKKwlbTlZLTV9GQUxDT05fUkVTRVJWRURdID0gIjxyZXNlcnZl ZD4iLAorCVtOVktNX0ZBTENPTl9GRUNTXSA9ICJGRUNTIiwKKwlbTlZLTV9GQUxDT05fR1BDQ1Nd ID0gIkdQQ0NTIiwKKwlbTlZLTV9GQUxDT05fRU5EXSA9ICI8aW52YWxpZD4iLAorfTsKKwordm9p ZAorbnZrbV9mYWxjb25fbG9hZF9pbWVtKHN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlLCB1MzIg YmFzZSwgdm9pZCAqZGF0YSwKKwkJICAgICAgdTMyIHN0YXJ0LCB1MzIgc2l6ZSwgdTMyIHRhZykK K3sKKwlpbnQgaTsKKworCW52a21fd3IzMihkZXZpY2UsIGJhc2UgKyAweDE4MCwgc3RhcnQgfCAo MHgxIDw8IDI0KSk7CisJZm9yIChpID0gMDsgaSA8IHNpemUgLyA0OyBpKyspIHsKKwkJLyogd3Jp dGUgbmV3IHRhZyBldmVyeSAyNTZCICovCisJCWlmICgoaSAmIDB4M2YpID09IDApIHsKKwkJCW52 a21fd3IzMihkZXZpY2UsIGJhc2UgKyAweDE4OCwgdGFnICYgMHhmZmZmKTsKKwkJCXRhZysrOwor CQl9CisJCW52a21fd3IzMihkZXZpY2UsIGJhc2UgKyAweDE4NCwgKCh1MzIgKilkYXRhKVtpXSk7 CisJfQorCW52a21fd3IzMihkZXZpY2UsIGJhc2UgKyAweDE4OCwgMCk7Cit9CisKK3ZvaWQKK252 a21fZmFsY29uX2xvYWRfZG1lbShzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwgdTMyIGJhc2Us IHZvaWQgKmRhdGEsCisJCSAgICAgIHUzMiBzdGFydCwgdTMyIHNpemUpCit7CisJaW50IGk7CisK KwludmttX3dyMzIoZGV2aWNlLCBiYXNlICsgMHgxYzAsIHN0YXJ0IHwgKDB4MSA8PCAyNCkpOwor CWZvciAoaSA9IDA7IGkgPCBzaXplIC8gNDsgaSsrKQorCQludmttX3dyMzIoZGV2aWNlLCBiYXNl ICsgMHgxYzQsICgodTMyICopZGF0YSlbaV0pOworfQorCmRpZmYgLS1naXQgYS9kcm0vbm91dmVh dS9udmttL2VuZ2luZS9nci9nZjEwMC5jIGIvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZ3IvZ2Yx MDAuYwppbmRleCAxNTc5MTljNzg4ZTYuLmYwZGFmZTY2NmE1YSAxMDA2NDQKLS0tIGEvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZ3IvZ2YxMDAuYworKysgYi9kcm0vbm91dmVhdS9udmttL2VuZ2lu ZS9nci9nZjEwMC5jCkBAIC0xNDY0LDE2ICsxNDY0LDE2IEBAIGdmMTAwX2dyX2luaXRfY3R4Y3Rs KHN0cnVjdCBnZjEwMF9nciAqZ3IpCiAJCW52a21fbWNfdW5rMjYwKGRldmljZSwgMCk7CiAKIAkJ Lyogc2VjdXJlbHktbWFuYWdlZCBmYWxjb25zIG11c3QgYmUgcmVzZXQgdXNpbmcgc2VjdXJlIGJv b3QgKi8KLQkJaWYgKG52a21fc2VjYm9vdF9pc19tYW5hZ2VkKHNiLCBOVktNX1NFQ0JPT1RfRkFM Q09OX0ZFQ1MpKQotCQkJcmV0ID0gbnZrbV9zZWNib290X3Jlc2V0KHNiLCBOVktNX1NFQ0JPT1Rf RkFMQ09OX0ZFQ1MpOworCQlpZiAobnZrbV9zZWNib290X2lzX21hbmFnZWQoc2IsIE5WS01fRkFM Q09OX0ZFQ1MpKQorCQkJcmV0ID0gbnZrbV9zZWNib290X3Jlc2V0KHNiLCBOVktNX0ZBTENPTl9G RUNTKTsKIAkJZWxzZQogCQkJZ2YxMDBfZ3JfaW5pdF9mdyhnciwgMHg0MDkwMDAsICZnci0+ZnVj NDA5YywKIAkJCQkJICZnci0+ZnVjNDA5ZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0Owog Ci0JCWlmIChudmttX3NlY2Jvb3RfaXNfbWFuYWdlZChzYiwgTlZLTV9TRUNCT09UX0ZBTENPTl9H UENDUykpCi0JCQlyZXQgPSBudmttX3NlY2Jvb3RfcmVzZXQoc2IsIE5WS01fU0VDQk9PVF9GQUxD T05fR1BDQ1MpOworCQlpZiAobnZrbV9zZWNib290X2lzX21hbmFnZWQoc2IsIE5WS01fRkFMQ09O X0dQQ0NTKSkKKwkJCXJldCA9IG52a21fc2VjYm9vdF9yZXNldChzYiwgTlZLTV9GQUxDT05fR1BD Q1MpOwogCQllbHNlCiAJCQlnZjEwMF9ncl9pbml0X2Z3KGdyLCAweDQxYTAwMCwgJmdyLT5mdWM0 MWFjLAogCQkJCQkgJmdyLT5mdWM0MWFkKTsKQEAgLTE0ODcsMTIgKzE0ODcsMTIgQEAgZ2YxMDBf Z3JfaW5pdF9jdHhjdGwoc3RydWN0IGdmMTAwX2dyICpncikKIAkJbnZrbV93cjMyKGRldmljZSwg MHg0MWExMGMsIDB4MDAwMDAwMDApOwogCQludmttX3dyMzIoZGV2aWNlLCAweDQwOTEwYywgMHgw MDAwMDAwMCk7CiAKLQkJaWYgKG52a21fc2VjYm9vdF9pc19tYW5hZ2VkKHNiLCBOVktNX1NFQ0JP T1RfRkFMQ09OX0dQQ0NTKSkKLQkJCW52a21fc2VjYm9vdF9zdGFydChzYiwgTlZLTV9TRUNCT09U X0ZBTENPTl9HUENDUyk7CisJCWlmIChudmttX3NlY2Jvb3RfaXNfbWFuYWdlZChzYiwgTlZLTV9G QUxDT05fR1BDQ1MpKQorCQkJbnZrbV9zZWNib290X3N0YXJ0KHNiLCBOVktNX0ZBTENPTl9HUEND Uyk7CiAJCWVsc2UKIAkJCW52a21fd3IzMihkZXZpY2UsIDB4NDFhMTAwLCAweDAwMDAwMDAyKTsK LQkJaWYgKG52a21fc2VjYm9vdF9pc19tYW5hZ2VkKHNiLCBOVktNX1NFQ0JPT1RfRkFMQ09OX0ZF Q1MpKQotCQkJbnZrbV9zZWNib290X3N0YXJ0KHNiLCBOVktNX1NFQ0JPT1RfRkFMQ09OX0ZFQ1Mp OworCQlpZiAobnZrbV9zZWNib290X2lzX21hbmFnZWQoc2IsIE5WS01fRkFMQ09OX0ZFQ1MpKQor CQkJbnZrbV9zZWNib290X3N0YXJ0KHNiLCBOVktNX0ZBTENPTl9GRUNTKTsKIAkJZWxzZQogCQkJ bnZrbV93cjMyKGRldmljZSwgMHg0MDkxMDAsIDB4MDAwMDAwMDIpOwogCQlpZiAobnZrbV9tc2Vj KGRldmljZSwgMjAwMCwKZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L252a20vZW5naW5lL2dyL2dt MjAwLmMgYi9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9nci9nbTIwMC5jCmluZGV4IDY0MzVmMTI1 NzU3Mi4uN2Y0ZGU4ZTNjNjQzIDEwMDY0NAotLS0gYS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9n ci9nbTIwMC5jCisrKyBiL2RybS9ub3V2ZWF1L252a20vZW5naW5lL2dyL2dtMjAwLmMKQEAgLTE4 NCwxNCArMTg0LDEyIEBAIGdtMjAwX2dyX25ld18oY29uc3Qgc3RydWN0IGdmMTAwX2dyX2Z1bmMg KmZ1bmMsIHN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlLAogCQlyZXR1cm4gcmV0OwogCiAJLyog TG9hZCBmaXJtd2FyZXMgZm9yIG5vbi1zZWN1cmUgZmFsY29ucyAqLwotCWlmICghbnZrbV9zZWNi b290X2lzX21hbmFnZWQoZGV2aWNlLT5zZWNib290LAotCQkJCSAgICAgTlZLTV9TRUNCT09UX0ZB TENPTl9GRUNTKSkgeworCWlmICghbnZrbV9zZWNib290X2lzX21hbmFnZWQoZGV2aWNlLT5zZWNi b290LCBOVktNX0ZBTENPTl9GRUNTKSkgewogCQlpZiAoKHJldCA9IGdmMTAwX2dyX2N0b3JfZnco Z3IsICJnci9mZWNzX2luc3QiLCAmZ3ItPmZ1YzQwOWMpKSB8fAogCQkgICAgKHJldCA9IGdmMTAw X2dyX2N0b3JfZncoZ3IsICJnci9mZWNzX2RhdGEiLCAmZ3ItPmZ1YzQwOWQpKSkKIAkJCXJldHVy biByZXQ7CiAJfQotCWlmICghbnZrbV9zZWNib290X2lzX21hbmFnZWQoZGV2aWNlLT5zZWNib290 LAotCQkJCSAgICAgTlZLTV9TRUNCT09UX0ZBTENPTl9HUENDUykpIHsKKwlpZiAoIW52a21fc2Vj Ym9vdF9pc19tYW5hZ2VkKGRldmljZS0+c2VjYm9vdCwgTlZLTV9GQUxDT05fR1BDQ1MpKSB7CiAJ CWlmICgocmV0ID0gZ2YxMDBfZ3JfY3Rvcl9mdyhnciwgImdyL2dwY2NzX2luc3QiLCAmZ3ItPmZ1 YzQxYWMpKSB8fAogCQkgICAgKHJldCA9IGdmMTAwX2dyX2N0b3JfZncoZ3IsICJnci9ncGNjc19k YXRhIiwgJmdyLT5mdWM0MWFkKSkpCiAJCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJtL25v dXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9iYXNlLmMgYi9kcm0vbm91dmVhdS9udmttL3N1YmRl di9zZWNib290L2Jhc2UuYwppbmRleCAzMTRiZTIxOTJiN2QuLjZiMzM0NmZmMDI1MyAxMDA2NDQK LS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9iYXNlLmMKKysrIGIvZHJtL25v dXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9iYXNlLmMKQEAgLTIxLDE4ICsyMSwxMCBAQAogICov CiAjaW5jbHVkZSAicHJpdi5oIgogCisjaW5jbHVkZSA8Y29yZS9mYWxjb24uaD4KICNpbmNsdWRl IDxzdWJkZXYvbWMuaD4KICNpbmNsdWRlIDxzdWJkZXYvdGltZXIuaD4KIAotc3RhdGljIGNvbnN0 IGNoYXIgKgotbWFuYWdlZF9mYWxjb25zX25hbWVzW10gPSB7Ci0JW05WS01fU0VDQk9PVF9GQUxD T05fUE1VXSA9ICJQTVUiLAotCVtOVktNX1NFQ0JPT1RfRkFMQ09OX1JFU0VSVkVEXSA9ICI8cmVz ZXJ2ZWQ+IiwKLQlbTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTXSA9ICJGRUNTIiwKLQlbTlZLTV9T RUNCT09UX0ZBTENPTl9HUENDU10gPSAiR1BDQ1MiLAotCVtOVktNX1NFQ0JPT1RfRkFMQ09OX0VO RF0gPSAiPGludmFsaWQ+IiwKLX07Ci0KIC8qCiAgKiBIZWxwZXIgZmFsY29uIGZ1bmN0aW9ucwog ICovCkBAIC0xNTUsNyArMTQ3LDYgQEAgbnZrbV9zZWNib290X2ZhbGNvbl9ydW4oc3RydWN0IG52 a21fc2VjYm9vdCAqc2IpCiAJcmV0dXJuIDA7CiB9CiAKLQogLyoqCiAgKiBudmttX3NlY2Jvb3Rf cmVzZXQoKSAtIHJlc2V0IHNwZWNpZmllZCBmYWxjb24KICAqLwpAQCAtMTkwLDggKzE4MSw3IEBA IG52a21fc2VjYm9vdF9zdGFydChzdHJ1Y3QgbnZrbV9zZWNib290ICpzYiwgdTMyIGZhbGNvbikK ICAqIG52a21fc2VjYm9vdF9pc19tYW5hZ2VkKCkgLSBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gZmFs Y29uIGlzIHNlY3VyZWx5LW1hbmFnZWQKICAqLwogYm9vbAotbnZrbV9zZWNib290X2lzX21hbmFn ZWQoc3RydWN0IG52a21fc2VjYm9vdCAqc2VjYm9vdCwKLQkJCWVudW0gbnZrbV9zZWNib290X2Zh bGNvbiBmaWQpCitudmttX3NlY2Jvb3RfaXNfbWFuYWdlZChzdHJ1Y3QgbnZrbV9zZWNib290ICpz ZWNib290LCBlbnVtIG52a21fZmFsY29uaWR4IGZpZCkKIHsKIAlpZiAoIXNlY2Jvb3QpCiAJCXJl dHVybiBmYWxzZTsKQEAgLTI1MywxNCArMjQzLDE0IEBAIG52a21fc2VjYm9vdF9jdG9yKGNvbnN0 IHN0cnVjdCBudmttX3NlY2Jvb3RfZnVuYyAqZnVuYywKIAkJICBzdHJ1Y3QgbnZrbV9kZXZpY2Ug KmRldmljZSwgaW50IGluZGV4LAogCQkgIHN0cnVjdCBudmttX3NlY2Jvb3QgKnNiKQogewotCXVu c2lnbmVkIGxvbmcgZmlkOworCXVuc2lnbmVkIGxvbmcgaWQ7CiAKIAludmttX3N1YmRldl9jdG9y KCZudmttX3NlY2Jvb3QsIGRldmljZSwgaW5kZXgsICZzYi0+c3ViZGV2KTsKIAlzYi0+ZnVuYyA9 IGZ1bmM7CiAKIAkvKiBzZXR1cCB0aGUgcGVyZm9ybWluZyBmYWxjb24ncyBiYXNlIGFkZHJlc3Mg YW5kIG1hc2tzICovCiAJc3dpdGNoIChmdW5jLT5ib290X2ZhbGNvbikgewotCWNhc2UgTlZLTV9T RUNCT09UX0ZBTENPTl9QTVU6CisJY2FzZSBOVktNX0ZBTENPTl9QTVU6CiAJCXNiLT5kZXZpZHgg PSBOVktNX1NVQkRFVl9QTVU7CiAJCXNiLT5iYXNlID0gMHgxMGEwMDA7CiAJCWJyZWFrOwpAQCAt MjcwLDkgKzI2MCw4IEBAIG52a21fc2VjYm9vdF9jdG9yKGNvbnN0IHN0cnVjdCBudmttX3NlY2Jv b3RfZnVuYyAqZnVuYywKIAl9OwogCiAJbnZrbV9kZWJ1Zygmc2ItPnN1YmRldiwgInNlY3VyZWx5 IG1hbmFnZWQgZmFsY29uczpcbiIpOwotCWZvcl9lYWNoX3NldF9iaXQoZmlkLCAmc2ItPmZ1bmMt Pm1hbmFnZWRfZmFsY29ucywKLQkJCSBOVktNX1NFQ0JPT1RfRkFMQ09OX0VORCkKLQkJbnZrbV9k ZWJ1Zygmc2ItPnN1YmRldiwgIi0gJXNcbiIsIG1hbmFnZWRfZmFsY29uc19uYW1lc1tmaWRdKTsK Kwlmb3JfZWFjaF9zZXRfYml0KGlkLCAmc2ItPmZ1bmMtPm1hbmFnZWRfZmFsY29ucywgTlZLTV9G QUxDT05fRU5EKQorCQludmttX2RlYnVnKCZzYi0+c3ViZGV2LCAiLSAlc1xuIiwgbnZrbV9mYWxj b25fbmFtZVtpZF0pOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9u dmttL3N1YmRldi9zZWNib290L2dtMjAwLmMgYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNi b290L2dtMjAwLmMKaW5kZXggZjFlMmRjOTE0MzY2Li5lMzg3NjczZTEzYTYgMTAwNjQ0Ci0tLSBh L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvZ20yMDAuYworKysgYi9kcm0vbm91dmVh dS9udmttL3N1YmRldi9zZWNib290L2dtMjAwLmMKQEAgLTg3LDE0ICs4Nyw2IEBACiAjaW5jbHVk ZSA8Y29yZS9maXJtd2FyZS5oPgogI2luY2x1ZGUgPHN1YmRldi9mYi5oPgogCi1lbnVtIHsKLQlG QUxDT05fRE1BSURYX1VDT0RFCQk9IDAsCi0JRkFMQ09OX0RNQUlEWF9WSVJUCQk9IDEsCi0JRkFM Q09OX0RNQUlEWF9QSFlTX1ZJRAkJPSAyLAotCUZBTENPTl9ETUFJRFhfUEhZU19TWVNfQ09ICT0g MywKLQlGQUxDT05fRE1BSURYX1BIWVNfU1lTX05DT0gJPSA0LAotfTsKLQogLyoqCiAgKiBzdHJ1 Y3QgZndfYmluX2hlYWRlciAtIGhlYWRlciBvZiBmaXJtd2FyZSBmaWxlcwogICogQGJpbl9tYWdp YzoJCWFsd2F5cyAweDNiMWQxNGYwCkBAIC0yOTYsNyArMjg4LDcgQEAgc3RydWN0IGxzX3Vjb2Rl X2ltZ19kZXNjIHsKICAqLwogc3RydWN0IGxzX3Vjb2RlX2ltZyB7CiAJc3RydWN0IGxpc3RfaGVh ZCBub2RlOwotCWVudW0gbnZrbV9zZWNib290X2ZhbGNvbiBmYWxjb25faWQ7CisJZW51bSBudmtt X2ZhbGNvbmlkeCBmYWxjb25faWQ7CiAKIAlzdHJ1Y3QgbHNfdWNvZGVfaW1nX2Rlc2MgdWNvZGVf ZGVzYzsKIAl1MzIgKnVjb2RlX2hlYWRlcjsKQEAgLTUzMSwxNCArNTIzLDE0IEBAIHN0YXRpYyBp bnQKIGxzX3Vjb2RlX2ltZ19sb2FkX2ZlY3Moc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYsIHN0 cnVjdCBsc191Y29kZV9pbWcgKmltZykKIHsKIAlyZXR1cm4gbHNfdWNvZGVfaW1nX2xvYWRfZ2Vu ZXJpYyhzdWJkZXYsIGltZywgImZlY3MiLAotCQkJCQkgTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNT KTsKKwkJCQkJIE5WS01fRkFMQ09OX0ZFQ1MpOwogfQogCiBzdGF0aWMgaW50CiBsc191Y29kZV9p bWdfbG9hZF9ncGNjcyhzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiwgc3RydWN0IGxzX3Vjb2Rl X2ltZyAqaW1nKQogewogCXJldHVybiBsc191Y29kZV9pbWdfbG9hZF9nZW5lcmljKHN1YmRldiwg aW1nLCAiZ3BjY3MiLAotCQkJCQkgTlZLTV9TRUNCT09UX0ZBTENPTl9HUENDUyk7CisJCQkJCSBO VktNX0ZBTENPTl9HUENDUyk7CiB9CiAKIC8qKgpAQCAtNTY0LDkgKzU1Niw5IEBAIGxzX3Vjb2Rl X2ltZ19sb2FkKHN0cnVjdCBudmttX3N1YmRldiAqc3ViZGV2LCBsc2ZfbG9hZF9mdW5jIGxvYWRf ZnVuYykKIH0KIAogc3RhdGljIGNvbnN0IGxzZl9sb2FkX2Z1bmMgbHNmX2xvYWRfZnVuY3NbXSA9 IHsKLQlbTlZLTV9TRUNCT09UX0ZBTENPTl9FTkRdID0gTlVMTCwgLyogcmVzZXJ2ZSBlbm91Z2gg c3BhY2UgKi8KLQlbTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTXSA9IGxzX3Vjb2RlX2ltZ19sb2Fk X2ZlY3MsCi0JW05WS01fU0VDQk9PVF9GQUxDT05fR1BDQ1NdID0gbHNfdWNvZGVfaW1nX2xvYWRf Z3BjY3MsCisJW05WS01fRkFMQ09OX0VORF0gPSBOVUxMLCAvKiByZXNlcnZlIGVub3VnaCBzcGFj ZSAqLworCVtOVktNX0ZBTENPTl9GRUNTXSA9IGxzX3Vjb2RlX2ltZ19sb2FkX2ZlY3MsCisJW05W S01fRkFMQ09OX0dQQ0NTXSA9IGxzX3Vjb2RlX2ltZ19sb2FkX2dwY2NzLAogfTsKIAogLyoqCkBA IC02ODUsNyArNjc3LDcgQEAgbHNfdWNvZGVfaW1nX2ZpbGxfaGVhZGVycyhzdHJ1Y3QgZ20yMDBf c2VjYm9vdCAqZ3NiLCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICppbWcsCiAJCWxoZHItPmZsYWdzID0g TFNGX0ZMQUdfRE1BQ1RMX1JFUV9DVFg7CiAKIAkvKiBHUENDUyB3aWxsIGJlIGxvYWRlZCB1c2lu ZyBQUkkgKi8KLQlpZiAoaW1nLT5mYWxjb25faWQgPT0gTlZLTV9TRUNCT09UX0ZBTENPTl9HUEND UykKKwlpZiAoaW1nLT5mYWxjb25faWQgPT0gTlZLTV9GQUxDT05fR1BDQ1MpCiAJCWxoZHItPmZs YWdzIHw9IExTRl9GTEFHX0ZPUkNFX1BSSVZfTE9BRDsKIAogCS8qIEFsaWduIChzaXplIGJsb2F0 KSBhbmQgc2F2ZSBvZmYgQkwgZGVzY3JpcHRvciBzaXplICovCkBAIC03OTQsNyArNzg2LDcgQEAg bHNfdWNvZGVfbWdyX3dyaXRlX3dwcihzdHJ1Y3QgZ20yMDBfc2VjYm9vdCAqZ3NiLCBzdHJ1Y3Qg bHNfdWNvZGVfbWdyICptZ3IsCiAJCXBvcyArPSBzaXplb2YoaW1nLT53cHJfaGVhZGVyKTsKIAl9 CiAKLQludmttX3dvMzIod3ByX2Jsb2IsIHBvcywgTlZLTV9TRUNCT09UX0ZBTENPTl9JTlZBTElE KTsKKwludmttX3dvMzIod3ByX2Jsb2IsIHBvcywgTlZLTV9GQUxDT05fSU5WQUxJRCk7CiAKIAlu dmttX2RvbmUod3ByX2Jsb2IpOwogCkBAIC04MjQsNyArODE2LDcgQEAgZ20yMDBfc2VjYm9vdF9w cmVwYXJlX2xzX2Jsb2Ioc3RydWN0IGdtMjAwX3NlY2Jvb3QgKmdzYikKIAogCS8qIExvYWQgYWxs IExTIGJsb2JzICovCiAJZm9yX2VhY2hfc2V0X2JpdChmYWxjb25faWQsICZnc2ItPmJhc2UuZnVu Yy0+bWFuYWdlZF9mYWxjb25zLAotCQkJIE5WS01fU0VDQk9PVF9GQUxDT05fRU5EKSB7CisJCQkg TlZLTV9GQUxDT05fRU5EKSB7CiAJCXN0cnVjdCBsc191Y29kZV9pbWcgKmltZzsKIAogCQlpbWcg PSBsc191Y29kZV9pbWdfbG9hZCgmc2ItPnN1YmRldiwgbHNmX2xvYWRfZnVuY3NbZmFsY29uX2lk XSk7CkBAIC0xMjU4LDcgKzEyNTAsNyBAQCBkb25lOgogICogZmFsY29ucyBzaG91bGQgaGF2ZSB0 aGVpciBMUyBmaXJtd2FyZSBsb2FkZWQgYW5kIGJlIHJlYWR5IHRvIHJ1bi4KICAqLwogaW50Ci1n bTIwMF9zZWNib290X3Jlc2V0KHN0cnVjdCBudmttX3NlY2Jvb3QgKnNiLCBlbnVtIG52a21fc2Vj Ym9vdF9mYWxjb24gZmFsY29uKQorZ20yMDBfc2VjYm9vdF9yZXNldChzdHJ1Y3QgbnZrbV9zZWNi b290ICpzYiwgZW51bSBudmttX2ZhbGNvbmlkeCBmYWxjb24pCiB7CiAJc3RydWN0IGdtMjAwX3Nl Y2Jvb3QgKmdzYiA9IGdtMjAwX3NlY2Jvb3Qoc2IpOwogCWludCByZXQ7CkBAIC0xMjc2LDEyICsx MjY4LDEyIEBAIGdtMjAwX3NlY2Jvb3RfcmVzZXQoc3RydWN0IG52a21fc2VjYm9vdCAqc2IsIGVu dW0gbnZrbV9zZWNib290X2ZhbGNvbiBmYWxjb24pCiAJICogT25jZSB3ZSBoYXZlIHByb3BlciBQ TVUgZmlybXdhcmUgYW5kIHN1cHBvcnQsIHRoaXMgd2lsbCBiZSBjaGFuZ2VkCiAJICogdG8gYSBw cm9wZXIgY2FsbCB0byB0aGUgUE1VIG1ldGhvZC4KIAkgKi8KLQlpZiAoZmFsY29uICE9IE5WS01f U0VDQk9PVF9GQUxDT05fRkVDUykKKwlpZiAoZmFsY29uICE9IE5WS01fRkFMQ09OX0ZFQ1MpCiAJ CWdvdG8gZW5kOwogCiAJLyogSWYgV1BSIGlzIHNldCBhbmQgd2UgaGF2ZSBhbiB1bmxvYWQgYmxv YiwgcnVuIGl0IHRvIHVubG9jayBXUFIgKi8KIAlpZiAoZ3NiLT5hY3JfdW5sb2FkX2Jsb2IgJiYK LQkgICAgZ3NiLT5mYWxjb25fc3RhdGVbTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTXSAhPSBOT05f U0VDVVJFKSB7CisJICAgIGdzYi0+ZmFsY29uX3N0YXRlW05WS01fRkFMQ09OX0ZFQ1NdICE9IE5P Tl9TRUNVUkUpIHsKIAkJcmV0ID0gZ20yMDBfc2VjYm9vdF9ydW5faHNfYmxvYihnc2IsIGdzYi0+ YWNyX3VubG9hZF9ibG9iLAogCQkJCQkJJmdzYi0+YWNyX3VubG9hZF9ibF9kZXNjKTsKIAkJaWYg KHJldCkKQEAgLTEzMDAsMTYgKzEyOTIsMTYgQEAgZW5kOgogfQogCiBpbnQKLWdtMjAwX3NlY2Jv b3Rfc3RhcnQoc3RydWN0IG52a21fc2VjYm9vdCAqc2IsIGVudW0gbnZrbV9zZWNib290X2ZhbGNv biBmYWxjb24pCitnbTIwMF9zZWNib290X3N0YXJ0KHN0cnVjdCBudmttX3NlY2Jvb3QgKnNiLCBl bnVtIG52a21fZmFsY29uaWR4IGZhbGNvbikKIHsKIAlzdHJ1Y3QgZ20yMDBfc2VjYm9vdCAqZ3Ni ID0gZ20yMDBfc2VjYm9vdChzYik7CiAJaW50IGJhc2U7CiAKIAlzd2l0Y2ggKGZhbGNvbikgewot CWNhc2UgTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTOgorCWNhc2UgTlZLTV9GQUxDT05fRkVDUzoK IAkJYmFzZSA9IDB4NDA5MDAwOwogCQlicmVhazsKLQljYXNlIE5WS01fU0VDQk9PVF9GQUxDT05f R1BDQ1M6CisJY2FzZSBOVktNX0ZBTENPTl9HUENDUzoKIAkJYmFzZSA9IDB4NDFhMDAwOwogCQli cmVhazsKIAlkZWZhdWx0OgpAQCAtMTM3MywxMSArMTM2NSwxMSBAQCBnbTIwMF9zZWNib290X2Zp bmkoc3RydWN0IG52a21fc2VjYm9vdCAqc2IsIGJvb2wgc3VzcGVuZCkKIAogCS8qIFJ1biB0aGUg dW5sb2FkIGJsb2IgdG8gdW5wcm90ZWN0IHRoZSBXUFIgcmVnaW9uICovCiAJaWYgKGdzYi0+YWNy X3VubG9hZF9ibG9iICYmCi0JICAgIGdzYi0+ZmFsY29uX3N0YXRlW05WS01fU0VDQk9PVF9GQUxD T05fRkVDU10gIT0gTk9OX1NFQ1VSRSkKKwkgICAgZ3NiLT5mYWxjb25fc3RhdGVbTlZLTV9GQUxD T05fRkVDU10gIT0gTk9OX1NFQ1VSRSkKIAkJcmV0ID0gZ20yMDBfc2VjYm9vdF9ydW5faHNfYmxv Yihnc2IsIGdzYi0+YWNyX3VubG9hZF9ibG9iLAogCQkJCQkJJmdzYi0+YWNyX3VubG9hZF9ibF9k ZXNjKTsKIAotCWZvciAoaSA9IDA7IGkgPCBOVktNX1NFQ0JPT1RfRkFMQ09OX0VORDsgaSsrKQor CWZvciAoaSA9IDA7IGkgPCBOVktNX0ZBTENPTl9FTkQ7IGkrKykKIAkJZ3NiLT5mYWxjb25fc3Rh dGVbaV0gPSBOT05fU0VDVVJFOwogCiAJcmV0dXJuIHJldDsKQEAgLTE0MDksOSArMTQwMSw5IEBA IGdtMjAwX3NlY2Jvb3QgPSB7CiAJLmZpbmkgPSBnbTIwMF9zZWNib290X2ZpbmksCiAJLnJlc2V0 ID0gZ20yMDBfc2VjYm9vdF9yZXNldCwKIAkuc3RhcnQgPSBnbTIwMF9zZWNib290X3N0YXJ0LAot CS5tYW5hZ2VkX2ZhbGNvbnMgPSBCSVQoTlZLTV9TRUNCT09UX0ZBTENPTl9GRUNTKSB8Ci0JCQkg ICBCSVQoTlZLTV9TRUNCT09UX0ZBTENPTl9HUENDUyksCi0JLmJvb3RfZmFsY29uID0gTlZLTV9T RUNCT09UX0ZBTENPTl9QTVUsCisJLm1hbmFnZWRfZmFsY29ucyA9IEJJVChOVktNX0ZBTENPTl9G RUNTKSB8CisJCQkgICBCSVQoTlZLTV9GQUxDT05fR1BDQ1MpLAorCS5ib290X2ZhbGNvbiA9IE5W S01fRkFMQ09OX1BNVSwKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbnZrbS9z dWJkZXYvc2VjYm9vdC9nbTIwYi5jIGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9n bTIwYi5jCmluZGV4IGQ1Mzk1ZWJmZThkMy4uNjZhMWQwMWY0NWNlIDEwMDY0NAotLS0gYS9kcm0v bm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2dtMjBiLmMKKysrIGIvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvc2VjYm9vdC9nbTIwYi5jCkBAIC0xOTIsOCArMTkyLDggQEAgZ20yMGJfc2VjYm9v dCA9IHsKIAkuaW5pdCA9IGdtMjBiX3NlY2Jvb3RfaW5pdCwKIAkucmVzZXQgPSBnbTIwMF9zZWNi b290X3Jlc2V0LAogCS5zdGFydCA9IGdtMjAwX3NlY2Jvb3Rfc3RhcnQsCi0JLm1hbmFnZWRfZmFs Y29ucyA9IEJJVChOVktNX1NFQ0JPT1RfRkFMQ09OX0ZFQ1MpLAotCS5ib290X2ZhbGNvbiA9IE5W S01fU0VDQk9PVF9GQUxDT05fUE1VLAorCS5tYW5hZ2VkX2ZhbGNvbnMgPSBCSVQoTlZLTV9GQUxD T05fRkVDUyksCisJLmJvb3RfZmFsY29uID0gTlZLTV9GQUxDT05fUE1VLAogfTsKIAogaW50CmRp ZmYgLS1naXQgYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L3ByaXYuaCBiL2RybS9u b3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvcHJpdi5oCmluZGV4IGE5YThhMGUxMDE3ZS4uYjFl ZjNkMWI0YzlkIDEwMDY0NAotLS0gYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L3By aXYuaAorKysgYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L3ByaXYuaApAQCAtMzAs MTEgKzMwLDExIEBAIHN0cnVjdCBudmttX3NlY2Jvb3RfZnVuYyB7CiAJaW50ICgqaW5pdCkoc3Ry dWN0IG52a21fc2VjYm9vdCAqKTsKIAlpbnQgKCpmaW5pKShzdHJ1Y3QgbnZrbV9zZWNib290ICos IGJvb2wgc3VzcGVuZCk7CiAJdm9pZCAqKCpkdG9yKShzdHJ1Y3QgbnZrbV9zZWNib290ICopOwot CWludCAoKnJlc2V0KShzdHJ1Y3QgbnZrbV9zZWNib290ICosIGVudW0gbnZrbV9zZWNib290X2Zh bGNvbik7Ci0JaW50ICgqc3RhcnQpKHN0cnVjdCBudmttX3NlY2Jvb3QgKiwgZW51bSBudmttX3Nl Y2Jvb3RfZmFsY29uKTsKKwlpbnQgKCpyZXNldCkoc3RydWN0IG52a21fc2VjYm9vdCAqLCBlbnVt IG52a21fZmFsY29uaWR4KTsKKwlpbnQgKCpzdGFydCkoc3RydWN0IG52a21fc2VjYm9vdCAqLCBl bnVtIG52a21fZmFsY29uaWR4KTsKIAogCS8qIElEIG9mIHRoZSBmYWxjb24gdGhhdCB3aWxsIHBl cmZvcm0gc2VjdXJlIGJvb3QgKi8KLQllbnVtIG52a21fc2VjYm9vdF9mYWxjb24gYm9vdF9mYWxj b247CisJZW51bSBudmttX2ZhbGNvbmlkeCBib290X2ZhbGNvbjsKIAkvKiBCaXQtbWFzayBvZiBJ RHMgb2YgbWFuYWdlZCBmYWxjb25zICovCiAJdW5zaWduZWQgbG9uZyBtYW5hZ2VkX2ZhbGNvbnM7 CiB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0cnVjdCBnbTIwMF9zZWNib290IHsKIAkJUkVTRVQs CiAJCS8qIEluIGxvdy1zZWN1cmUgbW9kZSBhbmQgcnVubmluZyAqLwogCQlSVU5OSU5HLAotCX0g ZmFsY29uX3N0YXRlW05WS01fU0VDQk9PVF9GQUxDT05fRU5EXTsKKwl9IGZhbGNvbl9zdGF0ZVtO VktNX0ZBTENPTl9FTkRdOwogCiAJYm9vbCBmaXJtd2FyZV9vazsKIH07Ci0tIAoyLjEwLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5vdXZlYXUgbWFp bGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=