From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gavin Wan Subject: [PATCH] drm/amdgpu: Support passing amdgpu critical error to host via GPU Mailbox. Date: Fri, 23 Jun 2017 17:32:37 -0400 Message-ID: <20170623213237.27043-1-Gavin.Wan@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: dl.gcr.gpu-virtual-5C7GfCeVMHo@public.gmane.org, brahma_sw_dev-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Gavin Wan VGhpcyBmZWF0dXJlIHdvcmtzIGZvciBTUklPViBlbnZpcm9tZW50LiBGb3Igbm9uLVNSSU9WIGVu dmlyb21lbnQsIHRoZQp0cmFuc19lcnJvciBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCgpUaGUgZXJy b3IgaW5mb3JtYXRpb24gaW5jbHVkZXMgZXJyb3JfY29kZSAoMTZiaXQpLCBlcnJvcl9mbGFncygx NmJpdCkKYW5kIGVycm9yX2RhdGEoNjRiaXQpLiBTaW5jZSB0aGVyZSBhcmUgbm90IG1hbnkgZXJy b3JzLCB3ZSBrZWVwIHRoZQplcnJvcnMgaW4gYW4gYXJyYXkgYW5kIHRyYW5zZmVyIGFsbCBlcnJv cnMgdG8gSG9zdCBiZWZvcmUgYW1kZ3B1CmluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChhbWRncHVf ZGV2aWNlX2luaXQpIGV4aXQuCgpDaGFuZ2UtSWQ6IEliMjAxNTYxMzA1NTNiM2M0NzA0NmU2Y2E5 NjdlMmM2YzAyYjhlOWZmClNpZ25lZC1vZmYtYnk6IEdhdmluIFdhbiA8R2F2aW4uV2FuQGFtZC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwLmMgICAgfCAgIDIgKwog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Jpb3MuYyAgIHwgICAyICsKIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyB8ICAxOCArKy0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5jICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcmluZy5jICAgfCAgIDkgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9zYS5jICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdWNvZGUuYyAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2 ZC5jICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYyAg ICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmlydC5oICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYyAgICAgIHwgIDExICsr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jICAgICAgfCAgIDIgKwogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbXhncHVfYWkuYyAgICAgIHwgIDQ2ICsrKystLS0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L214Z3B1X2FpLmggICAgICB8ICAgNCArLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvbXhncHVfdmkuYyAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L214Z3B1X3ZpLmggICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvcHNwX3YzXzEuYyAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L3V2ZF92N18wLmMgICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS92Y2VfdjRfMC5jICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmZf ZXJyb3IuYyAgICAgIHwgMjEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS92Zl9lcnJvci5oICAgICAgfCAxMjAgKysrKysrKysrKysrKysr KysKIDI0IGZpbGVzIGNoYW5nZWQsIDQ0NiBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Zl9lcnJvci5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmZfZXJyb3Iu aAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKaW5kZXggMjA2MjEyN2IwM2E4Li4wZTQ1 YTVjN2IwZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC0zMSw3ICszMSw3 IEBAIGFtZGdwdS15ICs9IGFtZGdwdV9kZXZpY2UubyBhbWRncHVfa21zLm8gXAogCWFtZGdwdV9w cmltZS5vIGFtZGdwdV92bS5vIGFtZGdwdV9pYi5vIGFtZGdwdV9wbGwubyBcCiAJYW1kZ3B1X3Vj b2RlLm8gYW1kZ3B1X2JvX2xpc3QubyBhbWRncHVfY3R4Lm8gYW1kZ3B1X3N5bmMubyBcCiAJYW1k Z3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdwdV9hdG9t ZmlybXdhcmUubyBcCi0JYW1kZ3B1X3F1ZXVlX21nci5vCisJYW1kZ3B1X3F1ZXVlX21nci5vIHZm X2Vycm9yLm8KIAogIyBhZGQgYXNpYyBzcGVjaWZpYyBibG9jawogYW1kZ3B1LSQoQ09ORklHX0RS TV9BTURHUFVfQ0lLKSs9IGNpay5vIGNpa19paC5vIGt2X3NtYy5vIGt2X2RwbS5vIFwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuYwppbmRleCAwZTUxMmZhMWU5YWUuLmFjMjA2 MjEwNmFlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Fj cC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuYwpAQCAtMzQs NiArMzQsNyBAQAogI2luY2x1ZGUgImFtZGdwdV9hY3AuaCIKIAogI2luY2x1ZGUgImFjcF9nZnhf aWYuaCIKKyNpbmNsdWRlICJ2Zl9lcnJvci5oIgogCiAjZGVmaW5lIEFDUF9USUxFX09OX01BU0sg ICAgICAgICAgICAgICAgMHgwMwogI2RlZmluZSBBQ1BfVElMRV9PRkZfTUFTSyAgICAgICAgICAg ICAgIDB4MDIKQEAgLTM5NSw2ICszOTYsNyBAQCBzdGF0aWMgaW50IGFjcF9od19pbml0KHZvaWQg KmhhbmRsZSkKIAkJCXIgPSBwbV9nZW5wZF9hZGRfZGV2aWNlKCZhZGV2LT5hY3AuYWNwX2dlbnBk LT5ncGQsIGRldik7CiAJCQlpZiAocikgewogCQkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFk ZCBkZXYgdG8gZ2VucGRcbiIpOworCQkJCWFtZGdwdV92Zl9lcnJvcl9wdXQoTURHSU1fRVJST1Jf VkZfQUREX0RFVl9UT19HRU5QRF9GQUlMLCAwLCAwKTsKIAkJCQlyZXR1cm4gcjsKIAkJCX0KIAkJ fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Jpb3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9iaW9zLmMKaW5kZXggMzY1ZTczNWY2 NjQ3Li5iNmU2MzQyZjMyMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9iaW9zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Jp b3MuYwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1 ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNsdWRlICJ2Zl9lcnJvci5oIgogLyoKICAqIEJJT1MuCiAg Ki8KQEAgLTQ1Miw2ICs0NTMsNyBAQCBib29sIGFtZGdwdV9nZXRfYmlvcyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAkJZ290byBzdWNjZXNzOwogCiAJRFJNX0VSUk9SKCJVbmFibGUgdG8g bG9jYXRlIGEgQklPUyBST01cbiIpOworCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9S X1ZGX1VOTE9DQVRFX0JJT1NfUk9NLCAwLCAwKTsKIAlyZXR1cm4gZmFsc2U7CiAKIHN1Y2Nlc3M6 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKaW5kZXggOTExMzNh MTMyZmI2Li5hZjg4NmYxMGY1NTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZGV2aWNlLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJiaWYvYmlmXzRfMV9kLmgi CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNp bmNsdWRlICJ2Zl9lcnJvci5oIgogCiBNT0RVTEVfRklSTVdBUkUoImFtZGdwdS92ZWdhMTBfZ3B1 X2luZm8uYmluIik7CiBNT0RVTEVfRklSTVdBUkUoImFtZGdwdS9yYXZlbl9ncHVfaW5mby5iaW4i KTsKQEAgLTIxNzYsNiArMjE3Nyw3IEBAIGludCBhbWRncHVfZGV2aWNlX2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJciA9IGFtZGdwdV9hdG9tYmlvc19pbml0KGFkZXYpOwogCWlm IChyKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X2F0b21iaW9zX2luaXQgZmFpbGVk XG4iKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfQVRPTUJJT1NfSU5J VF9GQUlMLCAwLCAwKTsKIAkJZ290byBmYWlsZWQ7CiAJfQogCkBAIC0yMTg2LDYgKzIxODgsNyBA QCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlm IChhbWRncHVfdnBvc3RfbmVlZGVkKGFkZXYpKSB7CiAJCWlmICghYWRldi0+YmlvcykgewogCQkJ ZGV2X2VycihhZGV2LT5kZXYsICJubyB2QklPUyBmb3VuZFxuIik7CisJCQlhbWRncHVfdmZfZXJy b3JfcHV0KEFNREdJTV9FUlJPUl9WRl9OT19WQklPUywgMCwgMCk7CiAJCQlyID0gLUVJTlZBTDsK IAkJCWdvdG8gZmFpbGVkOwogCQl9CkBAIC0yMTkzLDYgKzIxOTYsNyBAQCBpbnQgYW1kZ3B1X2Rl dmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlyID0gYW1kZ3B1X2F0b21f YXNpY19pbml0KGFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQpOwogCQlpZiAocikgewogCQkJ ZGV2X2VycihhZGV2LT5kZXYsICJncHUgcG9zdCBlcnJvciFcbiIpOworCQkJYW1kZ3B1X3ZmX2Vy cm9yX3B1dChBTURHSU1fRVJST1JfVkZfR1BVX1BPU1RfRVJST1IsIDAsIDApOwogCQkJZ290byBm YWlsZWQ7CiAJCX0KIAl9IGVsc2UgewpAQCAtMjIwNCw2ICsyMjA4LDcgQEAgaW50IGFtZGdwdV9k ZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJciA9IGFtZGdwdV9hdG9t Ymlvc19nZXRfY2xvY2tfaW5mbyhhZGV2KTsKIAkJaWYgKHIpIHsKIAkJCWRldl9lcnIoYWRldi0+ ZGV2LCAiYW1kZ3B1X2F0b21iaW9zX2dldF9jbG9ja19pbmZvIGZhaWxlZFxuIik7CisJCQlhbWRn cHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9BVE9NQklPU19HRVRfQ0xPQ0tfRkFJTCwg MCwgMCk7CiAJCQlyZXR1cm4gcjsKIAkJfQogCQkvKiBpbml0IGkyYyBidXNlcyAqLwpAQCAtMjIx NSw2ICsyMjIwLDcgQEAgaW50IGFtZGdwdV9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAlyID0gYW1kZ3B1X2ZlbmNlX2RyaXZlcl9pbml0KGFkZXYpOwogCWlmIChyKSB7 CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X2ZlbmNlX2RyaXZlcl9pbml0IGZhaWxlZFxu Iik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0ZFTkNFX0lOSVRfRkFJ TCwgMCwgMCk7CiAJCWdvdG8gZmFpbGVkOwogCX0KIApAQCAtMjIyNCw2ICsyMjMwLDcgQEAgaW50 IGFtZGdwdV9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlyID0gYW1k Z3B1X2luaXQoYWRldik7CiAJaWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICJhbWRncHVf aW5pdCBmYWlsZWRcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9B TURHUFVfSU5JVF9GQUlMLCAwLCAwKTsKIAkJYW1kZ3B1X2ZpbmkoYWRldik7CiAJCWdvdG8gZmFp bGVkOwogCX0KQEAgLTIyODcsMTIgKzIyOTQsMTUgQEAgaW50IGFtZGdwdV9kZXZpY2VfaW5pdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlyID0gYW1kZ3B1X2xhdGVfaW5pdChhZGV2KTsK IAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgImFtZGdwdV9sYXRlX2luaXQgZmFpbGVk XG4iKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfQU1ER1BVX0xBVEVf SU5JVF9GQUlMLCAwLCByKTsKIAkJZ290byBmYWlsZWQ7CiAJfQogCisJYW1kZ3B1X3ZmX2Vycm9y X3RyYW5zX2FsbChhZGV2KTsKIAlyZXR1cm4gMDsKIAogZmFpbGVkOgorCWFtZGdwdV92Zl9lcnJv cl90cmFuc19hbGwoYWRldik7CiAJaWYgKHJ1bnRpbWUpCiAJCXZnYV9zd2l0Y2hlcm9vX2Zpbmlf ZG9tYWluX3BtX29wcyhhZGV2LT5kZXYpOwogCXJldHVybiByOwpAQCAtMzAwMiw2ICszMDEyLDcg QEAgaW50IGFtZGdwdV9ncHVfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCX0K IAl9IGVsc2UgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgImFzaWMgcmVzdW1lIGZhaWxlZCAoJWQp LlxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0FTSUNfUkVT VU1FX0ZBSUwsIDAsIHIpOwogCQlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytp KSB7CiAJCQlpZiAoYWRldi0+cmluZ3NbaV0gJiYgYWRldi0+cmluZ3NbaV0tPnNjaGVkLnRocmVh ZCkgewogCQkJCWt0aHJlYWRfdW5wYXJrKGFkZXYtPnJpbmdzW2ldLT5zY2hlZC50aHJlYWQpOwpA QCAtMzAxNiwxMSArMzAyNywxNCBAQCBpbnQgYW1kZ3B1X2dwdV9yZXNldChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAkJZHJtX2hlbHBlcl9yZXN1bWVfZm9yY2VfbW9kZShhZGV2LT5kZGV2 KTsKIAogCXR0bV9ib191bmxvY2tfZGVsYXllZF93b3JrcXVldWUoJmFkZXYtPm1tYW4uYmRldiwg cmVzY2hlZCk7Ci0JaWYgKHIpCisJaWYgKHIpIHsKIAkJLyogYmFkIG5ld3MsIGhvdyB0byB0ZWxs IGl0IHRvIHVzZXJzcGFjZSA/ICovCiAJCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSByZXNldCBm YWlsZWRcbiIpOwotCWVsc2UKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZf R1BVX1JFU0VUX0ZBSUwsIDAsIHIpOworCX0KKwllbHNlIHsKIAkJZGV2X2luZm8oYWRldi0+ZGV2 LCAiR1BVIHJlc2V0IHN1Y2Nlc3NlZCFcbiIpOworCX0KIAogCXJldHVybiByOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguYwppbmRleCAzYWI0YzY1ZWNjOGIuLjFmZjY1ZDJh NWJlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMKQEAgLTI1LDYgKzI1 LDcgQEAKICNpbmNsdWRlICJhbWRncHUuaCIKICNpbmNsdWRlICJhbWRncHVfaWguaCIKICNpbmNs dWRlICJhbWRncHVfYW1ka2ZkLmgiCisjaW5jbHVkZSAidmZfZXJyb3IuaCIKIAogLyoqCiAgKiBh bWRncHVfaWhfcmluZ19hbGxvYyAtIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIElIIHJpbmcKQEAg LTk1LDYgKzk2LDcgQEAgaW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKIAkJciA9IGFtZGdwdV93Yl9nZXQoYWRldiwg JmFkZXYtPmlycS5paC53cHRyX29mZnMpOwogCQlpZiAocikgewogCQkJZGV2X2VycihhZGV2LT5k ZXYsICIoJWQpIGloIHdwdHJfb2ZmcyB3YiBhbGxvYyBmYWlsZWRcbiIsIHIpOworCQkJYW1kZ3B1 X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfSUhfV0JfQUxMT0NfRkFJTCwgMCwgcik7CiAJ CQlyZXR1cm4gcjsKIAkJfQogCkBAIC0xMDIsNiArMTA0LDcgQEAgaW50IGFtZGdwdV9paF9yaW5n X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKIAkJ aWYgKHIpIHsKIAkJCWFtZGdwdV93Yl9mcmVlKGFkZXYsIGFkZXYtPmlycS5paC53cHRyX29mZnMp OwogCQkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGloIHJwdHJfb2ZmcyB3YiBhbGxvYyBmYWls ZWRcbiIsIHIpOworCQkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfSUhfV0Jf QUxMT0NfRkFJTCwgMCwgcik7CiAJCQlyZXR1cm4gcjsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfa21zLmMKaW5kZXggMDBlZjJmYzhjMzBmLi5jMTA5NzdjMzAyYzEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKQEAgLTM1LDYgKzM1LDcgQEAK ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgog I2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKKyNpbmNsdWRlICJ2Zl9lcnJvci5oIgogCiAvKioK ICAqIGFtZGdwdV9kcml2ZXJfdW5sb2FkX2ttcyAtIE1haW4gdW5sb2FkIGZ1bmN0aW9uIGZvciBL TVMuCkBAIC0xNDQsNiArMTQ1LDcgQEAgaW50IGFtZGdwdV9kcml2ZXJfbG9hZF9rbXMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAlyID0gYW1kZ3B1X2Rldmlj ZV9pbml0KGFkZXYsIGRldiwgZGV2LT5wZGV2LCBmbGFncyk7CiAJaWYgKHIpIHsKIAkJZGV2X2Vy cigmZGV2LT5wZGV2LT5kZXYsICJGYXRhbCBlcnJvciBkdXJpbmcgR1BVIGluaXRcbiIpOworCQlh bWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9HUFVfSU5JVF9GQVRBTF9GQUlMLCAw LCAwKTsKIAkJZ290byBvdXQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfb2JqZWN0LmMKaW5kZXggOGVlNjk2NTJiZThjLi4zYzMzZjQwMTlhNmEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKQEAgLTM2LDcgKzM2LDcgQEAKICNp bmNsdWRlIDxkcm0vZHJtX2NhY2hlLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAi YW1kZ3B1X3RyYWNlLmgiCi0KKyNpbmNsdWRlICJ2Zl9lcnJvci5oIgogCiAKIHN0YXRpYyB1NjQg YW1kZ3B1X2dldF92aXNfcGFydF9zaXplKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAt MjQ2LDE4ICsyNDYsMjEgQEAgaW50IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJICAgICBOVUxMLCBOVUxMLCBib19wdHIpOwogCWlmIChyKSB7 CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSBmYWlsZWQgdG8gYWxsb2NhdGUga2VybmVsIGJv XG4iLCByKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfQk9fQUxMT0Nf S19GQUlMLCAwLCByKTsKIAkJcmV0dXJuIHI7CiAJfQogCiAJciA9IGFtZGdwdV9ib19yZXNlcnZl KCpib19wdHIsIGZhbHNlKTsKIAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkg ZmFpbGVkIHRvIHJlc2VydmUga2VybmVsIGJvXG4iLCByKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1 dChBTURHSU1fRVJST1JfVkZfQk9fUkVTRVJWRV9GQUlMLCAwLCByKTsKIAkJZ290byBlcnJvcl9m cmVlOwogCX0KIAogCXIgPSBhbWRncHVfYm9fcGluKCpib19wdHIsIGRvbWFpbiwgZ3B1X2FkZHIp OwogCWlmIChyKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSBrZXJuZWwgYm8gcGluIGZh aWxlZFxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0JPX1BJ Tl9GQUlMLCAwLCByKTsKIAkJZ290byBlcnJvcl91bnJlc2VydmU7CiAJfQogCkBAIC0yNjUsNiAr MjY4LDcgQEAgaW50IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQlyID0gYW1kZ3B1X2JvX2ttYXAoKmJvX3B0ciwgY3B1X2FkZHIpOwogCQlpZiAo cikgewogCQkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGtlcm5lbCBibyBtYXAgZmFpbGVkXG4i LCByKTsKKwkJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0JPX01BUF9GQUlM LCAwLCByKTsKIAkJCWdvdG8gZXJyb3JfdW5yZXNlcnZlOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKaW5kZXggNzUxNjVlMDdiMWNkLi45MmUwZWFkZmE0 YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwpAQCAtMzMsNiAr MzMsNyBAQAogI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CiAjaW5jbHVkZSAiYW1kZ3B1Lmgi CiAjaW5jbHVkZSAiYXRvbS5oIgorI2luY2x1ZGUgInZmX2Vycm9yLmgiCiAKIC8qCiAgKiBSaW5n cwpAQCAtMTg4LDEyICsxODksMTQgQEAgaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAkJciA9IGFtZGdwdV93 Yl9nZXRfNjRiaXQoYWRldiwgJnJpbmctPnJwdHJfb2Zmcyk7CiAJCWlmIChyKSB7CiAJCQlkZXZf ZXJyKGFkZXYtPmRldiwgIiglZCkgcmluZyBycHRyX29mZnMgd2IgYWxsb2MgZmFpbGVkXG4iLCBy KTsKKwkJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1JJTkdfUl9XQl9BTExP Q19GQUlMLCAwLCByKTsKIAkJCXJldHVybiByOwogCQl9CiAKIAkJciA9IGFtZGdwdV93Yl9nZXRf NjRiaXQoYWRldiwgJnJpbmctPndwdHJfb2Zmcyk7CiAJCWlmIChyKSB7CiAJCQlkZXZfZXJyKGFk ZXYtPmRldiwgIiglZCkgcmluZyB3cHRyX29mZnMgd2IgYWxsb2MgZmFpbGVkXG4iLCByKTsKKwkJ CWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1JJTkdfV19XQl9BTExPQ19GQUlM LCAwLCByKTsKIAkJCXJldHVybiByOwogCQl9CiAKQEAgLTIwMSwxMiArMjA0LDE0IEBAIGludCBh bWRncHVfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsCiAJCXIgPSBhbWRncHVfd2JfZ2V0KGFkZXYsICZyaW5nLT5ycHRyX29mZnMp OwogCQlpZiAocikgewogCQkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIHJpbmcgcnB0cl9vZmZz IHdiIGFsbG9jIGZhaWxlZFxuIiwgcik7CisJCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9F UlJPUl9WRl9SSU5HX1JfV0JfQUxMT0NfRkFJTCwgMCwgcik7CiAJCQlyZXR1cm4gcjsKIAkJfQog CiAJCXIgPSBhbWRncHVfd2JfZ2V0KGFkZXYsICZyaW5nLT53cHRyX29mZnMpOwogCQlpZiAocikg ewogCQkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIHJpbmcgd3B0cl9vZmZzIHdiIGFsbG9jIGZh aWxlZFxuIiwgcik7CisJCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9SSU5H X1dfV0JfQUxMT0NfRkFJTCwgMCwgcik7CiAJCQlyZXR1cm4gcjsKIAkJfQogCkBAIC0yMTUsMTIg KzIyMCwxNCBAQCBpbnQgYW1kZ3B1X3JpbmdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAogCXIgPSBhbWRncHVfd2JfZ2V0KGFkZXYsICZy aW5nLT5mZW5jZV9vZmZzKTsKIAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkg cmluZyBmZW5jZV9vZmZzIHdiIGFsbG9jIGZhaWxlZFxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJv cl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1JJTkdfRl9XQl9BTExPQ19GQUlMLCAwLCByKTsKIAkJcmV0 dXJuIHI7CiAJfQogCiAJciA9IGFtZGdwdV93Yl9nZXQoYWRldiwgJnJpbmctPmNvbmRfZXhlX29m ZnMpOwogCWlmIChyKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSByaW5nIGNvbmRfZXhl Y19wb2xsaW5nIHdiIGFsbG9jIGZhaWxlZFxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQo QU1ER0lNX0VSUk9SX1ZGX1JJTkdfQ19XQl9BTExPQ19GQUlMLCAwLCByKTsKIAkJcmV0dXJuIHI7 CiAJfQogCXJpbmctPmNvbmRfZXhlX2dwdV9hZGRyID0gYWRldi0+d2IuZ3B1X2FkZHIgKyAocmlu Zy0+Y29uZF9leGVfb2ZmcyAqIDQpOwpAQCAtMjMxLDYgKzIzOCw3IEBAIGludCBhbWRncHVfcmlu Z19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsCiAJciA9IGFtZGdwdV9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyaW5nLCBpcnFfc3JjLCBp cnFfdHlwZSk7CiAJaWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICJmYWlsZWQgaW5pdGlh bGl6aW5nIGZlbmNlcyAoJWQpLlxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lN X0VSUk9SX1ZGX0lOSVRfRkVOQ0VfRkFJTCwgMCwgcik7CiAJCXJldHVybiByOwogCX0KIApAQCAt MjQ5LDYgKzI1Nyw3IEBAIGludCBhbWRncHVfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCiAJCQkJCSAgICAodm9pZCAqKikmcmlu Zy0+cmluZyk7CiAJCWlmIChyKSB7CiAJCQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkgcmluZyBj cmVhdGUgZmFpbGVkXG4iLCByKTsKKwkJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9S X1ZGX1JJTkdfQ1JFQVRFX0ZBSUwsIDAsIHIpOwogCQkJcmV0dXJuIHI7CiAJCX0KIAkJYW1kZ3B1 X3JpbmdfY2xlYXJfcmluZyhyaW5nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9zYS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Nh LmMKaW5kZXggNWNhNzVhNDU2YWQyLi5lMmEwOGQ3YzJhN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9zYS5jCkBAIC00Myw2ICs0Myw3IEBACiAgKi8KICNpbmNsdWRlIDxkcm0v ZHJtUC5oPgogI2luY2x1ZGUgImFtZGdwdS5oIgorI2luY2x1ZGUgInZmX2Vycm9yLmgiCiAKIHN0 YXRpYyB2b2lkIGFtZGdwdV9zYV9ib19yZW1vdmVfbG9ja2VkKHN0cnVjdCBhbWRncHVfc2FfYm8g KnNhX2JvKTsKIHN0YXRpYyB2b2lkIGFtZGdwdV9zYV9ib190cnlfZnJlZShzdHJ1Y3QgYW1kZ3B1 X3NhX21hbmFnZXIgKnNhX21hbmFnZXIpOwpAQCAtNjcsNiArNjgsNyBAQCBpbnQgYW1kZ3B1X3Nh X2JvX21hbmFnZXJfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAgMCwg TlVMTCwgTlVMTCwgJnNhX21hbmFnZXItPmJvKTsKIAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYt PmRldiwgIiglZCkgZmFpbGVkIHRvIGFsbG9jYXRlIGJvIGZvciBtYW5hZ2VyXG4iLCByKTsKKwkJ YW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfQk9fQUxMT0NfTV9GQUlMLCAwLCBy KTsKIAkJcmV0dXJuIHI7CiAJfQogCkBAIC05OSw2ICsxMDEsNyBAQCBpbnQgYW1kZ3B1X3NhX2Jv X21hbmFnZXJfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAKIAlpZiAoc2FfbWFu YWdlci0+Ym8gPT0gTlVMTCkgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgIm5vIGJvIGZvciBzYSBt YW5hZ2VyXG4iKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfTk9fQk9f Rk9SX1NBLCAwLCAwKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0xMDYsMTIgKzEwOSwx NCBAQCBpbnQgYW1kZ3B1X3NhX2JvX21hbmFnZXJfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKHNhX21hbmFnZXItPmJvLCBmYWxzZSk7CiAJ aWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGZhaWxlZCB0byByZXNlcnZlIG1h bmFnZXIgYm9cbiIsIHIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9C T19SRVNFUlZFX0ZBSUwsIDAsIHIpOwogCQlyZXR1cm4gcjsKIAl9CiAJciA9IGFtZGdwdV9ib19w aW4oc2FfbWFuYWdlci0+Ym8sIHNhX21hbmFnZXItPmRvbWFpbiwgJnNhX21hbmFnZXItPmdwdV9h ZGRyKTsKIAlpZiAocikgewogCQlhbWRncHVfYm9fdW5yZXNlcnZlKHNhX21hbmFnZXItPmJvKTsK IAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGZhaWxlZCB0byBwaW4gbWFuYWdlciBib1xuIiwg cik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0JPX1BJTl9GQUlMLCAw LCByKTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRncHVfYm9fa21hcChzYV9tYW5hZ2VyLT5i bywgJnNhX21hbmFnZXItPmNwdV9wdHIpOwpAQCAtMTI3LDYgKzEzMiw3IEBAIGludCBhbWRncHVf c2FfYm9fbWFuYWdlcl9zdXNwZW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiAJaWYg KHNhX21hbmFnZXItPmJvID09IE5VTEwpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICJubyBibyBm b3Igc2EgbWFuYWdlclxuIik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZG X05PX0JPX0ZPUl9TQSwgMCwgMCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuYwppbmRleCA0ZjUwZWViNjU4NTUuLjAzOWIx ZWVmYjExNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Vj b2RlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmMKQEAg LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgImFtZGdwdS5o IgogI2luY2x1ZGUgImFtZGdwdV91Y29kZS5oIgorI2luY2x1ZGUgInZmX2Vycm9yLmgiCiAKIHN0 YXRpYyB2b2lkIGFtZGdwdV91Y29kZV9wcmludF9jb21tb25faGRyKGNvbnN0IHN0cnVjdCBjb21t b25fZmlybXdhcmVfaGVhZGVyICpoZHIpCiB7CkBAIC0zODMsMTIgKzM4NCwxNCBAQCBpbnQgYW1k Z3B1X3Vjb2RlX2luaXRfYm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQkJTlVMTCwg TlVMTCwgYm8pOwogCWlmIChlcnIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIEZpcm13 YXJlIGJ1ZmZlciBhbGxvY2F0ZSBmYWlsZWRcbiIsIGVycik7CisJCWFtZGdwdV92Zl9lcnJvcl9w dXQoQU1ER0lNX0VSUk9SX1ZGX0ZXX0FMTE9DX0ZBSUwsIDAsIGVycik7CiAJCWdvdG8gZmFpbGVk OwogCX0KIAogCWVyciA9IGFtZGdwdV9ib19yZXNlcnZlKCpibywgZmFsc2UpOwogCWlmIChlcnIp IHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIEZpcm13YXJlIGJ1ZmZlciByZXNlcnZlIGZh aWxlZFxuIiwgZXJyKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfRldf UkVTRVJWRV9GQUlMLCAwLCBlcnIpOwogCQlnb3RvIGZhaWxlZF9yZXNlcnZlOwogCX0KIApAQCAt Mzk2LDEyICszOTksMTQgQEAgaW50IGFtZGdwdV91Y29kZV9pbml0X2JvKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQogCQkJCSZmd19tY19hZGRyKTsKIAlpZiAoZXJyKSB7CiAJCWRldl9lcnIo YWRldi0+ZGV2LCAiKCVkKSBGaXJtd2FyZSBidWZmZXIgcGluIGZhaWxlZFxuIiwgZXJyKTsKKwkJ YW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfRldfUElOX0ZBSUwsIDAsIGVycik7 CiAJCWdvdG8gZmFpbGVkX3BpbjsKIAl9CiAKIAllcnIgPSBhbWRncHVfYm9fa21hcCgqYm8sICZm d19idWZfcHRyKTsKIAlpZiAoZXJyKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSBGaXJt d2FyZSBidWZmZXIga21hcCBmYWlsZWRcbiIsIGVycik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQo QU1ER0lNX0VSUk9SX1ZGX0ZXX0tNQVBfRkFJTCwgMCwgZXJyKTsKIAkJZ290byBmYWlsZWRfa21h cDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91 dmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYwppbmRleCAyY2Ew OWYxMTFmMDguLmNmNDFiMzA4ZjcyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3V2ZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV91dmQuYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImFtZGdwdV91dmQuaCIKICNpbmNs dWRlICJjaWtkLmgiCiAjaW5jbHVkZSAidXZkL3V2ZF80XzJfZC5oIgorI2luY2x1ZGUgInZmX2Vy cm9yLmgiCiAKIC8qIDEgc2Vjb25kIHRpbWVvdXQgKi8KICNkZWZpbmUgVVZEX0lETEVfVElNRU9V VAltc2Vjc190b19qaWZmaWVzKDEwMDApCkBAIC0xNzUsNiArMTc2LDcgQEAgaW50IGFtZGdwdV91 dmRfc3dfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAocikgewogCQlkZXZf ZXJyKGFkZXYtPmRldiwgImFtZGdwdV91dmQ6IENhbid0IGxvYWQgZmlybXdhcmUgXCIlc1wiXG4i LAogCQkJZndfbmFtZSk7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1VW RF9OT1RfTE9BRF9GVywgMCwgMCk7CiAJCXJldHVybiByOwogCX0KIApAQCAtMTgyLDYgKzE4NCw3 IEBAIGludCBhbWRncHVfdXZkX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ aWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICJhbWRncHVfdXZkOiBDYW4ndCB2YWxpZGF0 ZSBmaXJtd2FyZSBcIiVzXCJcbiIsCiAJCQlmd19uYW1lKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1 dChBTURHSU1fRVJST1JfVkZfVVZEX05PVF9WQUxJREFURV9GVywgMCwgMCk7CiAJCXJlbGVhc2Vf ZmlybXdhcmUoYWRldi0+dXZkLmZ3KTsKIAkJYWRldi0+dXZkLmZ3ID0gTlVMTDsKIAkJcmV0dXJu IHI7CkBAIC0yMjYsNiArMjI5LDcgQEAgaW50IGFtZGdwdV91dmRfc3dfaW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAkJCQkgICAgJmFkZXYtPnV2ZC5ncHVfYWRkciwgJmFkZXYtPnV2 ZC5jcHVfYWRkcik7CiAJaWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGZhaWxl ZCB0byBhbGxvY2F0ZSBVVkQgYm9cbiIsIHIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJ TV9FUlJPUl9WRl9BTExPQ19VVkRfQk9fRkFJTCwgMCwgMCk7CiAJCXJldHVybiByOwogCX0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCmluZGV4IGI2OTJhZDQwMjI1Mi4u YTZkOWEwYmRkNzYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCkBA IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiYW1kZ3B1X3BtLmgiCiAjaW5jbHVkZSAiYW1kZ3B1 X3ZjZS5oIgogI2luY2x1ZGUgImNpa2QuaCIKKyNpbmNsdWRlICJ2Zl9lcnJvci5oIgogCiAvKiAx IHNlY29uZCB0aW1lb3V0ICovCiAjZGVmaW5lIFZDRV9JRExFX1RJTUVPVVQJbXNlY3NfdG9famlm ZmllcygxMDAwKQpAQCAtMTQyLDYgKzE0Myw3IEBAIGludCBhbWRncHVfdmNlX3N3X2luaXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAlpZiAocikgewog CQlkZXZfZXJyKGFkZXYtPmRldiwgImFtZGdwdV92Y2U6IENhbid0IGxvYWQgZmlybXdhcmUgXCIl c1wiXG4iLAogCQkJZndfbmFtZSk7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9S X1ZGX1ZDRV9OT1RfTE9BRF9GVywgMCwgMCk7CiAJCXJldHVybiByOwogCX0KIApAQCAtMTQ5LDYg KzE1MSw3IEBAIGludCBhbWRncHVfdmNlX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRldiwg ImFtZGdwdV92Y2U6IENhbid0IHZhbGlkYXRlIGZpcm13YXJlIFwiJXNcIlxuIiwKIAkJCWZ3X25h bWUpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9WQ0VfTk9UX1ZBTElE QVRFX0ZXLCAwLCAwKTsKIAkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT52Y2UuZncpOwogCQlhZGV2 LT52Y2UuZncgPSBOVUxMOwogCQlyZXR1cm4gcjsKQEAgLTE3MCw2ICsxNzMsNyBAQCBpbnQgYW1k Z3B1X3ZjZV9zd19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBsb25n IHNpemUpCiAJCQkJICAgICZhZGV2LT52Y2UuZ3B1X2FkZHIsICZhZGV2LT52Y2UuY3B1X2FkZHIp OwogCWlmIChyKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSBmYWlsZWQgdG8gYWxsb2Nh dGUgVkNFIGJvXG4iLCByKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZf QUxMT0NfVkNFX0JPX0ZBSUwsIDAsIDApOwogCQlyZXR1cm4gcjsKIAl9CiAKQEAgLTI2NSw2ICsy NjksNyBAQCBpbnQgYW1kZ3B1X3ZjZV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPnZjZS52Y3B1X2JvLCBmYWxzZSk7CiAJaWYg KHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGZhaWxlZCB0byByZXNlcnZlIFZDRSBi b1xuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1ZDRV9SRVNF UlZFX0ZBSUwsIDAsIHIpOwogCQlyZXR1cm4gcjsKIAl9CiAKQEAgLTI3Miw2ICsyNzcsNyBAQCBp bnQgYW1kZ3B1X3ZjZV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKHIp IHsKIAkJYW1kZ3B1X2JvX3VucmVzZXJ2ZShhZGV2LT52Y2UudmNwdV9ibyk7CiAJCWRldl9lcnIo YWRldi0+ZGV2LCAiKCVkKSBWQ0UgbWFwIGZhaWxlZFxuIiwgcik7CisJCWFtZGdwdV92Zl9lcnJv cl9wdXQoQU1ER0lNX0VSUk9SX1ZGX1ZDRV9LTUFQX0ZBSUwsIDAsIHIpOwogCQlyZXR1cm4gcjsK IAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0 LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmlydC5oCmluZGV4IDllMTA2 MmVkYjc2ZS4uZTViMWJhZjM4N2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdmlydC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92aXJ0LmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IGFtZGdwdV92aXJ0X29wcyB7CiAJaW50 ICgqcmVxX2Z1bGxfZ3B1KShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBpbml0KTsK IAlpbnQgKCpyZWxfZnVsbF9ncHUpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGlu aXQpOwogCWludCAoKnJlc2V0X2dwdSkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworCXZv aWQgKCp0cmFuc19tc2cpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmVxLCB1MzIg ZGF0YTEsIHUzMiBkYXRhMiwgdTMyIGRhdGEzKTsKIH07CiAKIC8qIEdQVSB2aXJ0dWFsaXphdGlv biAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKaW5kZXggZDQ3OWE2MjdmMDNl Li43ZDQzNzU4YjYwZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dm eF92OV8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwpAQCAt MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgInNvYzE1X2NvbW1vbi5oIgogI2luY2x1ZGUgImNsZWFy c3RhdGVfZ2Z4OS5oIgogI2luY2x1ZGUgInY5X3N0cnVjdHMuaCIKKyNpbmNsdWRlICJ2Zl9lcnJv ci5oIgogCiAjZGVmaW5lIEdGWDlfTlVNX0dGWF9SSU5HUyAgICAgMQogI2RlZmluZSBHRlg5X01F Q19IUERfU0laRSAyMDQ4CkBAIC01NDgsNiArNTQ5LDcgQEAgc3RhdGljIGludCBnZnhfdjlfMF9p bml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJZGV2X2VycihhZGV2 LT5kZXYsCiAJCQkiZ2Z4OTogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLAogCQkJ ZndfbmFtZSk7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX0dGWF9MT0FE X0ZXX0ZBSUwsIDAsIDApOwogCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdmeC5wZnBfZncpOwog CQlhZGV2LT5nZngucGZwX2Z3ID0gTlVMTDsKIAkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5nZngu bWVfZncpOwpAQCAtMTA4MSw2ICsxMDgzLDcgQEAgc3RhdGljIGludCBnZnhfdjlfMF9uZ2dfY3Jl YXRlX2J1ZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCWlmIChzaXplX3NlIDwgMCkg ewogCQlkZXZfZXJyKGFkZXYtPmRldiwgIkJ1ZmZlciBzaXplIGlzIGludmFsaWQ6ICVkXG4iLCBz aXplX3NlKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfQlVGTF9TSVpF X0lOVkFMSUQsIDAsIHNpemVfc2UpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJc2l6ZV9zZSA9 IHNpemVfc2UgPyBzaXplX3NlIDogZGVmYXVsdF9zaXplX3NlOwpAQCAtMTA5Myw2ICsxMDk2LDcg QEAgc3RhdGljIGludCBnZnhfdjlfMF9uZ2dfY3JlYXRlX2J1ZihzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgICAgTlVMTCk7CiAJaWYgKHIpIHsKIAkJZGV2X2VycihhZGV2LT5kZXYs ICIoJWQpIGZhaWxlZCB0byBjcmVhdGUgTkdHIGJ1ZmZlclxuIiwgcik7CisJCWFtZGdwdV92Zl9l cnJvcl9wdXQoQU1ER0lNX0VSUk9SX1ZGX05HR19DUkVBVEVfQlVGX0ZBSUwsIDAsIHIpOwogCQly ZXR1cm4gcjsKIAl9CiAJbmdnX2J1Zi0+Ym9fc2l6ZSA9IGFtZGdwdV9ib19zaXplKG5nZ19idWYt PmJvKTsKQEAgLTExMzcsNiArMTE0MSw3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfbmdnX2luaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQkJICAgIDY0ICogMTAyNCk7CiAJaWYgKHIp IHsKIAkJZGV2X2VycihhZGV2LT5kZXYsICJGYWlsZWQgdG8gY3JlYXRlIFByaW1pdGl2ZSBCdWZm ZXJcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9WRl9OR0dfQ1JFQVRF X1BSX0JVRl9GQUlMLCAwLCByKTsKIAkJZ290byBlcnI7CiAJfQogCkBAIC0xMTQ2LDYgKzExNTEs NyBAQCBzdGF0aWMgaW50IGdmeF92OV8wX25nZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCQkJCSAgICAyNTYgKiAxMDI0KTsKIAlpZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRl diwgIkZhaWxlZCB0byBjcmVhdGUgUG9zaXRpb24gQnVmZmVyXG4iKTsKKwkJYW1kZ3B1X3ZmX2Vy cm9yX3B1dChBTURHSU1fRVJST1JfVkZfTkdHX0NSRUFURV9QT19CVUZfRkFJTCwgMCwgcik7CiAJ CWdvdG8gZXJyOwogCX0KIApAQCAtMTE1NSw2ICsxMTYxLDcgQEAgc3RhdGljIGludCBnZnhfdjlf MF9uZ2dfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQkgICAgMjU2KTsKIAlp ZiAocikgewogCQlkZXZfZXJyKGFkZXYtPmRldiwgIkZhaWxlZCB0byBjcmVhdGUgQ29udHJvbCBT aWRlYmFuZCBCdWZmZXJcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9W Rl9OR0dfQ1JFQVRFX0NTX0JVRl9GQUlMLCAwLCByKTsKIAkJZ290byBlcnI7CiAJfQogCkBAIC0x MTY3LDYgKzExNzQsNyBAQCBzdGF0aWMgaW50IGdmeF92OV8wX25nZ19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCQkJCSAgICA1MTIgKiAxMDI0KTsKIAlpZiAocikgewogCQlkZXZf ZXJyKGFkZXYtPmRldiwgIkZhaWxlZCB0byBjcmVhdGUgUGFyYW1ldGVyIENhY2hlXG4iKTsKKwkJ YW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfTkdHX0NSRUFURV9QQ19CVUZfRkFJ TCwgMCwgcik7CiAJCWdvdG8gZXJyOwogCX0KIApAQCAtMTM0OSwxOCArMTM1NywyMSBAQCBzdGF0 aWMgaW50IGdmeF92OV8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQogCXIgPSBnZnhfdjlfMF9pbml0 X21pY3JvY29kZShhZGV2KTsKIAlpZiAocikgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb2Fk IGdmeCBmaXJtd2FyZSFcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9W Rl9MT0FEX0dGWF9GSVJNV0FSRV9GQUlMLCAwLCAwKTsKIAkJcmV0dXJuIHI7CiAJfQogCiAJciA9 IGdmeF92OV8wX3JsY19pbml0KGFkZXYpOwogCWlmIChyKSB7CiAJCURSTV9FUlJPUigiRmFpbGVk IHRvIGluaXQgcmxjIEJPcyFcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJP Ul9WRl9STENfQk9fSU5JVF9GQUlMLCAwLCAwKTsKIAkJcmV0dXJuIHI7CiAJfQogCiAJciA9IGdm eF92OV8wX21lY19pbml0KGFkZXYpOwogCWlmIChyKSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRv IGluaXQgTUVDIEJPcyFcbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJTV9FUlJPUl9W Rl9NRUNfQk9fSU5JVF9GQUlMLCAwLCAwKTsKIAkJcmV0dXJuIHI7CiAJfQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ21jX3Y5XzAuYwppbmRleCAxNzViYTVmOTY5MWMuLjkxYWQ2NThkYWMxMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jCkBAIC0zNiw2ICszNiw3IEBACiAj aW5jbHVkZSAibmJpb192N18wLmgiCiAjaW5jbHVkZSAiZ2Z4aHViX3YxXzAuaCIKICNpbmNsdWRl ICJtbWh1Yl92MV8wLmgiCisjaW5jbHVkZSAidmZfZXJyb3IuaCIKIAogI2RlZmluZSBtbURGX0NT X0FPTjBfRHJhbUJhc2VBZGRyZXNzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0NAogI2RlZmluZSBtbURGX0NTX0FP TjBfRHJhbUJhc2VBZGRyZXNzMF9CQVNFX0lEWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKQEAgLTY4Myw2ICs2ODQsNyBAQCBzdGF0aWMg aW50IGdtY192OV8wX2dhcnRfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiAJ aWYgKGFkZXYtPmdhcnQucm9iaiA9PSBOVUxMKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiTm8g VlJBTSBvYmplY3QgZm9yIFBDSUUgR0FSVC5cbiIpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFN REdJTV9FUlJPUl9WRl9OT19WUkFNX0ZPUl9HQVJULCAwLCAwKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCXIgPSBhbWRncHVfZ2FydF90YWJsZV92cmFtX3BpbihhZGV2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L214Z3B1X2FpLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9teGdwdV9haS5jCmluZGV4IGJkZTNjYTNjMjFjMS4uMjgxMmQ4OGE4YmRkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV9haS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L214Z3B1X2FpLmMKQEAgLTcyLDIxICs3Miw2IEBAIHN0 YXRpYyB2b2lkIHhncHVfYWlfbWFpbGJveF9zZXRfdmFsaWQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIGJvb2wgdmFsKQogCQkgICAgICByZWcpOwogfQogCi1zdGF0aWMgdm9pZCB4Z3B1X2Fp X21haWxib3hfdHJhbnNfbXNnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAotCQkJCSAgICAg IGVudW0gaWRoX3JlcXVlc3QgcmVxKQotewotCXUzMiByZWc7Ci0KLQlyZWcgPSBSUkVHMzJfTk9f S0lRKFNPQzE1X1JFR19PRkZTRVQoTkJJTywgMCwKLQkJCQkJICAgICBtbUJJRl9CWF9QRjBfTUFJ TEJPWF9NU0dCVUZfVFJOX0RXMCkpOwotCXJlZyA9IFJFR19TRVRfRklFTEQocmVnLCBCSUZfQlhf UEYwX01BSUxCT1hfTVNHQlVGX1RSTl9EVzAsCi0JCQkgICAgTVNHQlVGX0RBVEEsIHJlcSk7Ci0J V1JFRzMyX05PX0tJUShTT0MxNV9SRUdfT0ZGU0VUKE5CSU8sIDAsIG1tQklGX0JYX1BGMF9NQUlM Qk9YX01TR0JVRl9UUk5fRFcwKSwKLQkJICAgICAgcmVnKTsKLQotCXhncHVfYWlfbWFpbGJveF9z ZXRfdmFsaWQoYWRldiwgdHJ1ZSk7Ci19Ci0KIHN0YXRpYyBpbnQgeGdwdV9haV9tYWlsYm94X3Jj dl9tc2coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgZW51bSBpZGhfZXZlbnQg ZXZlbnQpCiB7CkBAIC0xNTQsMTMgKzEzOSwyNSBAQCBzdGF0aWMgaW50IHhncHVfYWlfcG9sbF9t c2coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGVudW0gaWRoX2V2ZW50IGV2ZW50KQogCXJl dHVybiByOwogfQogCi0KLXN0YXRpYyBpbnQgeGdwdV9haV9zZW5kX2FjY2Vzc19yZXF1ZXN0cyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKLQkJCQkJZW51bSBpZGhfcmVxdWVzdCByZXEpCi17 CitzdGF0aWMgdm9pZCB4Z3B1X2FpX21haWxib3hfdHJhbnNfbXNnIChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKKwkgICAgICBlbnVtIGlkaF9yZXF1ZXN0IHJlcSwgdTMyIGRhdGExLCB1MzIg ZGF0YTIsIHUzMiBkYXRhMykgeworCXUzMiByZWc7CiAJaW50IHI7CiAKLQl4Z3B1X2FpX21haWxi b3hfdHJhbnNfbXNnKGFkZXYsIHJlcSk7CisJcmVnID0gUlJFRzMyX05PX0tJUShTT0MxNV9SRUdf T0ZGU0VUKE5CSU8sIDAsCisJCQkJCSAgICAgbW1CSUZfQlhfUEYwX01BSUxCT1hfTVNHQlVGX1RS Tl9EVzApKTsKKwlyZWcgPSBSRUdfU0VUX0ZJRUxEKHJlZywgQklGX0JYX1BGMF9NQUlMQk9YX01T R0JVRl9UUk5fRFcwLAorCQkJICAgIE1TR0JVRl9EQVRBLCByZXEpOworCVdSRUczMl9OT19LSVEo U09DMTVfUkVHX09GRlNFVChOQklPLCAwLCBtbUJJRl9CWF9QRjBfTUFJTEJPWF9NU0dCVUZfVFJO X0RXMCksCisJCSAgICAgIHJlZyk7CisJV1JFRzMyX05PX0tJUShTT0MxNV9SRUdfT0ZGU0VUKE5C SU8sIDAsIG1tQklGX0JYX1BGMF9NQUlMQk9YX01TR0JVRl9UUk5fRFcxKSwKKwkJCQlkYXRhMSk7 CisJV1JFRzMyX05PX0tJUShTT0MxNV9SRUdfT0ZGU0VUKE5CSU8sIDAsIG1tQklGX0JYX1BGMF9N QUlMQk9YX01TR0JVRl9UUk5fRFcyKSwKKwkJCQlkYXRhMik7CisJV1JFRzMyX05PX0tJUShTT0Mx NV9SRUdfT0ZGU0VUKE5CSU8sIDAsIG1tQklGX0JYX1BGMF9NQUlMQk9YX01TR0JVRl9UUk5fRFcz KSwKKwkJCQlkYXRhMyk7CisKKwl4Z3B1X2FpX21haWxib3hfc2V0X3ZhbGlkKGFkZXYsIHRydWUp OwogCiAJLyogc3RhcnQgdG8gcG9sbCBhY2sgKi8KIAlyID0geGdwdV9haV9wb2xsX2FjayhhZGV2 KTsKQEAgLTE2OCw2ICsxNjUsMTQgQEAgc3RhdGljIGludCB4Z3B1X2FpX3NlbmRfYWNjZXNzX3Jl cXVlc3RzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlwcl9lcnIoIkRvZXNuJ3QgZ2V0 IGFjayBmcm9tIHBmLCBjb250aW51ZVxuIik7CiAKIAl4Z3B1X2FpX21haWxib3hfc2V0X3ZhbGlk KGFkZXYsIGZhbHNlKTsKK30KKworc3RhdGljIGludCB4Z3B1X2FpX3NlbmRfYWNjZXNzX3JlcXVl c3RzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCQllbnVtIGlkaF9yZXF1ZXN0IHJl cSkKK3sKKwlpbnQgcjsKKworCXhncHVfYWlfbWFpbGJveF90cmFuc19tc2coYWRldiwgcmVxLCAw LCAwLCAwKTsKIAogCS8qIHN0YXJ0IHRvIGNoZWNrIG1zZyBpZiByZXF1ZXN0IGlzIGlkaF9yZXFf Z3B1X2luaXRfYWNjZXNzICovCiAJaWYgKHJlcSA9PSBJREhfUkVRX0dQVV9JTklUX0FDQ0VTUyB8 fApAQCAtMzQyLDQgKzM0Nyw1IEBAIGNvbnN0IHN0cnVjdCBhbWRncHVfdmlydF9vcHMgeGdwdV9h aV92aXJ0X29wcyA9IHsKIAkucmVxX2Z1bGxfZ3B1CT0geGdwdV9haV9yZXF1ZXN0X2Z1bGxfZ3B1 X2FjY2VzcywKIAkucmVsX2Z1bGxfZ3B1CT0geGdwdV9haV9yZWxlYXNlX2Z1bGxfZ3B1X2FjY2Vz cywKIAkucmVzZXRfZ3B1ID0geGdwdV9haV9yZXF1ZXN0X3Jlc2V0LAorCS50cmFuc19tc2cgPSB4 Z3B1X2FpX21haWxib3hfdHJhbnNfbXNnLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L214Z3B1X2FpLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdw dV9haS5oCmluZGV4IDlhZWZjNDRkMmMzNC4uMWU5MWI5YTFjNTkxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV9haS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L214Z3B1X2FpLmgKQEAgLTMxLDcgKzMxLDkgQEAgZW51bSBpZGhfcmVxdWVzdCB7 CiAJSURIX1JFTF9HUFVfSU5JVF9BQ0NFU1MsCiAJSURIX1JFUV9HUFVfRklOSV9BQ0NFU1MsCiAJ SURIX1JFTF9HUFVfRklOSV9BQ0NFU1MsCi0JSURIX1JFUV9HUFVfUkVTRVRfQUNDRVNTCisJSURI X1JFUV9HUFVfUkVTRVRfQUNDRVNTLAorCisJSURIX0xPR19WRl9FUlJPUiAgICAgICA9IDIwMCwK IH07CiAKIGVudW0gaWRoX2V2ZW50IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L214Z3B1X3ZpLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV92aS5j CmluZGV4IDE3MWE2NTgxMzViNS4uYzI1YTgzMWY5NGVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9teGdwdV92aS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L214Z3B1X3ZpLmMKQEAgLTYxMyw0ICs2MTMsNSBAQCBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3Zp cnRfb3BzIHhncHVfdmlfdmlydF9vcHMgPSB7CiAJLnJlcV9mdWxsX2dwdQkJPSB4Z3B1X3ZpX3Jl cXVlc3RfZnVsbF9ncHVfYWNjZXNzLAogCS5yZWxfZnVsbF9ncHUJCT0geGdwdV92aV9yZWxlYXNl X2Z1bGxfZ3B1X2FjY2VzcywKIAkucmVzZXRfZ3B1CQk9IHhncHVfdmlfcmVxdWVzdF9yZXNldCwK KwkudHJhbnNfbXNnCQk9IE5VTEwsIC8qIERvZXMgbm90IG5lZWQgdG8gdHJhbnMgVkYgZXJyb3Jz IHRvIGhvc3QuICovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv bXhncHVfdmkuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L214Z3B1X3ZpLmgKaW5kZXgg MmRiNzQxMTMxYmM2Li5jNzkxZDczZDJkNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L214Z3B1X3ZpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbXhn cHVfdmkuaApAQCAtMzIsNyArMzIsOSBAQCBlbnVtIGlkaF9yZXF1ZXN0IHsKIAlJREhfUkVMX0dQ VV9JTklUX0FDQ0VTUywKIAlJREhfUkVRX0dQVV9GSU5JX0FDQ0VTUywKIAlJREhfUkVMX0dQVV9G SU5JX0FDQ0VTUywKLQlJREhfUkVRX0dQVV9SRVNFVF9BQ0NFU1MKKwlJREhfUkVRX0dQVV9SRVNF VF9BQ0NFU1MsCisKKwlJREhfTE9HX1ZGX0VSUk9SICAgICAgID0gMjAwLAogfTsKIAogLyogVkkg bWFpbGJveCBtZXNzYWdlcyBkYXRhICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9wc3BfdjNfMS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEu YwppbmRleCA1OGJhMzk2NmYwNzAuLjAyYTc5ZWY2MzI5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9wc3BfdjNfMS5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAidmVnYTEwL0dDL2dj XzlfMF9vZmZzZXQuaCIKICNpbmNsdWRlICJ2ZWdhMTAvU0RNQTAvc2RtYTBfNF8wX29mZnNldC5o IgogI2luY2x1ZGUgInZlZ2ExMC9OQklPL25iaW9fNl8xX29mZnNldC5oIgorI2luY2x1ZGUgInZm X2Vycm9yLmgiCiAKIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9zb3MuYmluIik7CiBN T0RVTEVfRklSTVdBUkUoImFtZGdwdS92ZWdhMTBfYXNkLmJpbiIpOwpAQCAtMTUzLDYgKzE1NCw3 IEBAIGludCBwc3BfdjNfMV9pbml0X21pY3JvY29kZShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkK IAkJZGV2X2VycihhZGV2LT5kZXYsCiAJCQkicHNwIHYzLjE6IEZhaWxlZCB0byBsb2FkIGZpcm13 YXJlIFwiJXNcIlxuIiwKIAkJCWZ3X25hbWUpOworCQlhbWRncHVfdmZfZXJyb3JfcHV0KEFNREdJ TV9FUlJPUl9WRl9QU1BfTE9BRF9GV19GQUlMLCAwLCAwKTsKIAkJcmVsZWFzZV9maXJtd2FyZShh ZGV2LT5wc3Auc29zX2Z3KTsKIAkJYWRldi0+cHNwLnNvc19mdyA9IE5VTEw7CiAJCXJlbGVhc2Vf ZmlybXdhcmUoYWRldi0+cHNwLmFzZF9mdyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS91dmRfdjdfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3 XzAuYwppbmRleCA5ODdiOTU4MzY4YWMuLjhlZWY2NGYxNjA4NSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS91dmRfdjdfMC5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAidmVnYTEwL0hE UC9oZHBfNF8wX29mZnNldC5oIgogI2luY2x1ZGUgInZlZ2ExMC9NTUhVQi9tbWh1Yl8xXzBfb2Zm c2V0LmgiCiAjaW5jbHVkZSAidmVnYTEwL01NSFVCL21taHViXzFfMF9zaF9tYXNrLmgiCisjaW5j bHVkZSAidmZfZXJyb3IuaCIKIAogc3RhdGljIHZvaWQgdXZkX3Y3XzBfc2V0X3JpbmdfZnVuY3Mo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogc3RhdGljIHZvaWQgdXZkX3Y3XzBfc2V0X2Vu Y19yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKQEAgLTcwMCw2ICs3MDEs NyBAQCBzdGF0aWMgaW50IHV2ZF92N18wX21tc2NoX3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCiAJaWYgKCFsb29wKSB7CiAJCWRldl9lcnIoYWRldi0+ZGV2LCAiZmFpbGVkIHRv IGluaXQgTU1TQ0gsIG1tVkNFX01NU0NIX1ZGX01BSUxCT1hfUkVTUCA9ICV4XG4iLCBkYXRhKTsK KwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfTU1TQ0hfSU5JVF9GQUlMLCAw LCBkYXRhKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAJV0RPT1JCRUxMMzIoYWRldi0+dXZkLnJp bmdfZW5jWzBdLmRvb3JiZWxsX2luZGV4LCAwKTsKQEAgLTEwMDEsNiArMTAwMyw3IEBAIHN0YXRp YyBpbnQgdXZkX3Y3XzBfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQlicmVh azsKIAogCQlEUk1fRVJST1IoIlVWRCBub3QgcmVzcG9uZGluZywgdHJ5aW5nIHRvIHJlc2V0IHRo ZSBWQ1BVISEhXG4iKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1fRVJST1JfVkZfVVZE X05PUkVTUF9SRVNFVCwgMCwgMCk7CiAJCVdSRUczMl9QKFNPQzE1X1JFR19PRkZTRVQoVVZELCAw LCBtbVVWRF9TT0ZUX1JFU0VUKSwKIAkJCQlVVkRfU09GVF9SRVNFVF9fVkNQVV9TT0ZUX1JFU0VU X01BU0ssCiAJCQkJflVWRF9TT0ZUX1JFU0VUX19WQ1BVX1NPRlRfUkVTRVRfTUFTSyk7CkBAIC0x MDEzLDYgKzEwMTYsNyBAQCBzdGF0aWMgaW50IHV2ZF92N18wX3N0YXJ0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQogCiAJaWYgKHIpIHsKIAkJRFJNX0VSUk9SKCJVVkQgbm90IHJlc3BvbmRp bmcsIGdpdmluZyB1cCEhIVxuIik7CisJCWFtZGdwdV92Zl9lcnJvcl9wdXQoQU1ER0lNX0VSUk9S X1ZGX1VWRF9OT1JFU1BfR0lWRVVQLCAwLCAwKTsKIAkJcmV0dXJuIHI7CiAJfQogCS8qIGVuYWJs ZSBtYXN0ZXIgaW50ZXJydXB0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS92Y2VfdjRfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNlX3Y0XzAuYwpp bmRleCAxZWNkNmJiOTBjMWYuLjVkNWFhMWNiZDE0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvdmNlX3Y0XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS92Y2VfdjRfMC5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAidmVnYTEwL1ZDRS92Y2Vf NF8wX3NoX21hc2suaCIKICNpbmNsdWRlICJ2ZWdhMTAvTU1IVUIvbW1odWJfMV8wX29mZnNldC5o IgogI2luY2x1ZGUgInZlZ2ExMC9NTUhVQi9tbWh1Yl8xXzBfc2hfbWFzay5oIgorI2luY2x1ZGUg InZmX2Vycm9yLmgiCiAKICNkZWZpbmUgVkNFX1NUQVRVU19WQ1BVX1JFUE9SVF9GV19MT0FERURf TUFTSwkweDAyCiAKQEAgLTE4OCw2ICsxODksNyBAQCBzdGF0aWMgaW50IHZjZV92NF8wX21tc2No X3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiAJaWYgKCFsb29wKSB7CiAJCWRl dl9lcnIoYWRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXQgTU1TQ0gsIG1tVkNFX01NU0NIX1ZGX01B SUxCT1hfUkVTUCA9ICV4XG4iLCBkYXRhKTsKKwkJYW1kZ3B1X3ZmX2Vycm9yX3B1dChBTURHSU1f RVJST1JfVkZfSU5JVF9NTVNDSF9GQUlMLCAwLCBkYXRhKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9 CiAJV0RPT1JCRUxMMzIoYWRldi0+dmNlLnJpbmdbMF0uZG9vcmJlbGxfaW5kZXgsIDApOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmZfZXJyb3IuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3ZmX2Vycm9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi45YWU1OGYzMjM3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS92Zl9lcnJvci5jCkBAIC0wLDAgKzEsMjEwIEBACisvKgorICogQ29w eXJpZ2h0IDIwMTcgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVU SE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaW5jbHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSAidmZfZXJyb3IuaCIKKy8q IE5lZWRzIGVudW0gSURIX0xPR19WRl9FUlJPUiwgaXQgaXMgZGVmaW5lZCBpbiBib3RoIG14Z3B1 X2FpLmggYW5kIG14Z3B1X3ZpLmguICovCisjaW5jbHVkZSAibXhncHVfYWkuaCIKKworI2RlZmlu ZSBBTURHUFVfVkZfRVJST1JfRU5UUllfU0laRSAgICAgMzIKKworLyogc3RydWN0IGVycm9yX2Vu dHJ5IC0gYW1kZ3B1IFZGIGVycm9yIGluZm9ybWF0aW9uLiAqLworc3RydWN0IGFtZGdwdV92Zl9l cnJvcl9idWZmZXIgeworCWludCByZWFkX2NvdW50OworCWludCB3cml0ZV9jb3VudDsKKwl1aW50 MTZfdCBjb2RlW0FNREdQVV9WRl9FUlJPUl9FTlRSWV9TSVpFXTsKKwl1aW50MTZfdCBmbGFnc1tB TURHUFVfVkZfRVJST1JfRU5UUllfU0laRV07CisJdWludDY0X3QgZGF0YVtBTURHUFVfVkZfRVJS T1JfRU5UUllfU0laRV07Cit9OworCitzdHJ1Y3QgYW1kZ3B1X3ZmX2Vycm9yX2J1ZmZlciBhZG1n cHVfdmZfZXJyb3JzOworCisjaWYgMCAvKiBhbWRncHUgZHJpdmVyIGRvZXMgbm90IG5lZWQgZm9s bG93aW5nIGNvZGUsIGJ1dCB3ZSBzaG91bGQga2VlcCB0aGVtIHNhbWUgYXMgdGhlIGNvZGUgb2Yg QU1EIEdJTSBkcml2ZXIgKi8KK3N0cnVjdCBlcnJvcl90ZXh0Cit7CisJdWludDhfdCBhcmdfdHlw ZTsKKwljaGFyKiB0ZXh0OworfTsKKworZW51bSBlcnJvcl9kYXRhX3R5cGUKK3sKKwlFUlJPUl9E QVRBX0FSR19OT05FID0gMCwgIC8vIE5vIGVycm9yIGRhdGEKKwlFUlJPUl9EQVRBX0FSR182NCwg ICAgICAgIC8vIDY0LWJpdAorCUVSUk9SX0RBVEFfQVJHXzMyXzMyLCAgICAgLy8gMzJiaXQgMzJi aXQKKwlFUlJPUl9EQVRBX0FSR18xNl8xNl8zMiwgIC8vIDE2Yml0IDE2Yml0IDMyYml0Cit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGVycm9yX3RleHQgYW1kZ2ltX2Vycm9yX3ZmIFtBTURHSU1f RVJST1JfVkZfTUFYXSA9Cit7CisJLyogQU1ER0lNX0VSUk9SX1ZGX0dQVV9JTklUX0ZBVEFMX0ZB SUwgKi8gICAgICB7RVJST1JfREFUQV9BUkdfTk9ORSwgIkZhdGFsIGVycm9yIGR1cmluZyBHUFUg aW5pdC4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfQVRPTUJJT1NfSU5JVF9GQUlMICovICAgICAg IHtFUlJPUl9EQVRBX0FSR19OT05FLCAiYW1kZ3B1X2F0b21iaW9zX2luaXQgZmFpbGVkLiJ9LAor CS8qIEFNREdJTV9FUlJPUl9WRl9VTkxPQ0FURV9CSU9TX1JPTSAqLyAgICAgICAge0VSUk9SX0RB VEFfQVJHX05PTkUsICJVbmFibGUgdG8gbG9jYXRlIGEgQklPUyBST00uIn0sCisJLyogQU1ER0lN X0VSUk9SX1ZGX05PX1ZCSU9TICovICAgICAgICAgICAgICAgICB7RVJST1JfREFUQV9BUkdfTk9O RSwgIm5vIHZCSU9TIGZvdW5kIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX0dQVV9QT1NUX0VSUk9S ICovICAgICAgICAgICB7RVJST1JfREFUQV9BUkdfTk9ORSwgImdwdSBwb3N0IGVycm9yLiJ9LAor CisJLyogQU1ER0lNX0VSUk9SX1ZGX0FUT01CSU9TX0dFVF9DTE9DS19GQUlMICovICB7RVJST1Jf REFUQV9BUkdfTk9ORSwgImFtZGdwdV9hdG9tYmlvc19nZXRfY2xvY2tfaW5mbyBmYWlsZWQuIn0s CisJLyogQU1ER0lNX0VSUk9SX1ZGX0ZFTkNFX0lOSVRfRkFJTCAqLyAgICAgICAgICB7RVJST1Jf REFUQV9BUkdfTk9ORSwgImFtZGdwdV9mZW5jZV9kcml2ZXJfaW5pdCBmYWlsZWQuIn0sCisJLyog QU1ER0lNX0VSUk9SX1ZGX0FNREdQVV9JTklUX0ZBSUwgKi8gICAgICAgICB7RVJST1JfREFUQV9B UkdfTk9ORSwgImFtZGdwdV9pbml0IGZhaWxlZC4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfSUJf SU5JVF9GQUlMICovICAgICAgICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiSUIgaW5pdGlh bGl6YXRpb24gZmFpbGVkICglZCkuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX0FNREdQVV9MQVRF X0lOSVRfRkFJTCAqLyAgICB7RVJST1JfREFUQV9BUkdfTk9ORSwgImFtZGdwdV9sYXRlX2luaXQg ZmFpbGVkLiJ9LAorCisJLyogQU1ER0lNX0VSUk9SX1ZGX0FTSUNfUkVTVU1FX0ZBSUwgKi8gICAg ICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAgImFzaWMgcmVzdW1lIGZhaWxlZCAoJWQpLiJ9LAor CS8qIEFNREdJTV9FUlJPUl9WRl9HUFVfUkVTRVRfRkFJTCAqLyAgICAgICAgICAge0VSUk9SX0RB VEFfQVJHX05PTkUsICJHUFUgcmVzZXQgZmFpbGVkLiJ9LAorCS8qIEFNREdJTV9FUlJPUl9WRl9N TVNDSF9JTklUX0ZBSUwgKi8gICAgICAgICAge0VSUk9SX0RBVEFfQVJHXzY0LCAgICJmYWlsZWQg dG8gaW5pdCBNTVNDSCwgbW1WQ0VfTU1TQ0hfVkZfTUFJTEJPWF9SRVNQID0gMHgleC4ifSwKKwkv KiBBTURHSU1fRVJST1JfVkZfVVZEX05PUkVTUF9HSVZFVVAgKi8gICAgICAgIHtFUlJPUl9EQVRB X0FSR19OT05FLCAiVVZEIG5vdCByZXNwb25kaW5nLCBnaXZpbmcgdXAuIn0sCisJLyogQU1ER0lN X0VSUk9SX1ZGX1VWRF9OT1JFU1BfUkVTRVQgKi8gICAgICAgICB7RVJST1JfREFUQV9BUkdfTk9O RSwgIlVWRCBub3QgcmVzcG9uZGluZywgdHJ5aW5nIHRvIHJlc2V0IHRoZSBWQ1BVLiJ9LAorCisJ LyogQU1ER0lNX0VSUk9SX1ZGX0xPQURfR0ZYX0ZJUk1XQVJFX0ZBSUwgKi8gICB7RVJST1JfREFU QV9BUkdfTk9ORSwgIkZhaWxlZCB0byBsb2FkIGdmeCBmaXJtd2FyZS4ifSwKKwkvKiBBTURHSU1f RVJST1JfVkZfTUVDX0JPX0lOSVRfRkFJTCAqLyAgICAgICAgIHtFUlJPUl9EQVRBX0FSR19OT05F LCAiRmFpbGVkIHRvIGluaXQgTUVDIEJPcy4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfQUREX0RF Vl9UT19HRU5QRF9GQUlMICovICAgIHtFUlJPUl9EQVRBX0FSR19OT05FLCAiRmFpbGVkIHRvIGFk ZCBkZXYgdG8gZ2VucGQuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX0lIX1dCX0FMTE9DX0ZBSUwg Ki8gICAgICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAgIklIIHdwdHJfb2ZmcyB3YiBhbGxvYyBm YWlsZWQgKCVkKS4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfQk9fQUxMT0NfS19GQUlMICovICAg ICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiRmFpbGVkIHRvIGFsbG9jYXRlIGtlcm5lbCBi byAoJWQpLiJ9LAorCisJLyogQU1ER0lNX0VSUk9SX1ZGX0JPX1JFU0VSVkVfRkFJTCAqLyAgICAg ICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAgIkZhaWxlZCB0byByZXNlcnZlIGtlcm5lbCBibyAo JWQpLiJ9LAorCS8qIEFNREdJTV9FUlJPUl9WRl9CT19QSU5fRkFJTCAqLyAgICAgICAgICAgICAg e0VSUk9SX0RBVEFfQVJHXzY0LCAgICJLZXJuZWwgYm8gcGluIGZhaWxlZCAoJWQpLiJ9LAorCS8q IEFNREdJTV9FUlJPUl9WRl9CT19NQVBfRkFJTCAqLyAgICAgICAgICAgICAge0VSUk9SX0RBVEFf QVJHXzY0LCAgICJLZXJuZWwgYm8gbWFwIGZhaWxlZCAoJWQpLiJ9LAorCS8qIEFNREdJTV9FUlJP Ul9WRl9SSU5HX1JfV0JfQUxMT0NfRkFJTCAqLyAgICAge0VSUk9SX0RBVEFfQVJHXzY0LCAgICJS aW5nIHJwdHJfb2ZmcyB3YiBhbGxvYyBmYWlsZWQgKCVkKS4ifSwKKwkvKiBBTURHSU1fRVJST1Jf VkZfUklOR19XX1dCX0FMTE9DX0ZBSUwgKi8gICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiUmlu ZyB3cHRyX29mZnMgd2IgYWxsb2MgZmFpbGVkICglZCkuIn0sCisKKwkvKiBBTURHSU1fRVJST1Jf VkZfUklOR19GX1dCX0FMTE9DX0ZBSUwgKi8gICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiUmlu ZyBmZW5jZV9vZmZzIHdiIGFsbG9jIGZhaWxlZCAoJWQpLiJ9LAorCS8qIEFNREdJTV9FUlJPUl9W Rl9SSU5HX0NfV0JfQUxMT0NfRkFJTCAqLyAgICAge0VSUk9SX0RBVEFfQVJHXzY0LCAgICJSaW5n IGNvbmRfZXhlY19wb2xsaW5nIHdiIGFsbG9jIGZhaWxlZCAoJWQpLiJ9LAorCS8qIEFNREdJTV9F UlJPUl9WRl9JTklUX0ZFTkNFX0ZBSUwgKi8gICAgICAgICAge0VSUk9SX0RBVEFfQVJHXzY0LCAg ICJmYWlsZWQgaW5pdGlhbGl6aW5nIGZlbmNlcyAoJWQpLiJ9LAorCS8qIEFNREdJTV9FUlJPUl9W Rl9SSU5HX0NSRUFURV9GQUlMICovICAgICAgICAge0VSUk9SX0RBVEFfQVJHXzY0LCAgICJSaW5n IGNyZWF0ZSBmYWlsZWQgKCVkKS4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfQk9fQUxMT0NfTV9G QUlMICovICAgICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiRmFpbGVkIHRvIGFsbG9jYXRl IGJvIGZvciBtYW5hZ2VyICglZCkuIn0sCisKKwkvKiBBTURHSU1fRVJST1JfVkZfTk9fQk9fRk9S X1NBICovICAgICAgICAgICAgIHtFUlJPUl9EQVRBX0FSR19OT05FLCAiTm8gYm8gZm9yIHNhIG1h bmFnZXIuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX0ZXX0FMTE9DX0ZBSUwgKi8gICAgICAgICAg ICB7RVJST1JfREFUQV9BUkdfNjQsICAgIkZpcm13YXJlIGJ1ZmZlciBhbGxvY2F0ZSBmYWlsZWQg KCVkKS4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfRldfUkVTRVJWRV9GQUlMICovICAgICAgICAg IHtFUlJPUl9EQVRBX0FSR182NCwgICAiRmlybXdhcmUgYnVmZmVyIHJlc2VydmUgZmFpbGVkICgl ZCkuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX0ZXX1BJTl9GQUlMICovICAgICAgICAgICAgICB7 RVJST1JfREFUQV9BUkdfNjQsICAgIkZpcm13YXJlIGJ1ZmZlciBwaW4gZmFpbGVkICglZCkuIn0s CisJLyogQU1ER0lNX0VSUk9SX1ZGX0ZXX0tNQVBfRkFJTCAqLyAgICAgICAgICAgICB7RVJST1Jf REFUQV9BUkdfNjQsICAgIkZpcm13YXJlIGJ1ZmZlciBrbWFwIGZhaWxlZCAoJWQpLiJ9LAorCisJ LyogQU1ER0lNX0VSUk9SX1ZGX1VWRF9OT1RfTE9BRF9GVyAqLyAgICAgICAgICB7RVJST1JfREFU QV9BUkdfTk9ORSwgImFtZGdwdV91dmQ6IENhbid0IGxvYWQgZmlybXdhcmUuIn0sCisJLyogQU1E R0lNX0VSUk9SX1ZGX1VWRF9OT1RfVkFMSURBVEVfRlcgKi8gICAgICB7RVJST1JfREFUQV9BUkdf Tk9ORSwgImFtZGdwdV91dmQ6IENhbid0IHZhbGlkYXRlIGZpcm13YXJlLiJ9LAorCS8qIEFNREdJ TV9FUlJPUl9WRl9BTExPQ19VVkRfQk9fRkFJTCAqLyAgICAgICAge0VSUk9SX0RBVEFfQVJHXzY0 LCAgICJGYWlsZWQgdG8gYWxsb2NhdGUgVVZEIGJvICglZCkuIn0sCisJLyogQU1ER0lNX0VSUk9S X1ZGX1ZDRV9OT1RfTE9BRF9GVyAqLyAgICAgICAgICB7RVJST1JfREFUQV9BUkdfTk9ORSwgImFt ZGdwdV92Y2U6IENhbid0IGxvYWQgZmlybXdhcmUuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX1ZD RV9OT1RfVkFMSURBVEVfRlcgKi8gICAgICB7RVJST1JfREFUQV9BUkdfTk9ORSwgImFtZGdwdV92 Y2U6IENhbid0IHZhbGlkYXRlIGZpcm13YXJlLiJ9LAorCisJLyogQU1ER0lNX0VSUk9SX1ZGX0FM TE9DX1ZDRV9CT19GQUlMICovICAgICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAgIkZhaWxlZCB0 byBhbGxvY2F0ZSBWQ0UgYm8gKCVkKS4ifSwKKwkvKiBBTURHSU1fRVJST1JfVkZfVkNFX1JFU0VS VkVfRkFJTCAqLyAgICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiRmFpbGVkIHRvIHJlc2Vy dmUgVkNFIGJvICglZCkuIn0sCisJLyogQU1ER0lNX0VSUk9SX1ZGX1ZDRV9LTUFQX0ZBSUwgKi8g ICAgICAgICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAgIlZDRSBrbWFwIGZhaWxlZCAoJWQpLiJ9 LAorCS8qIEFNREdJTV9FUlJPUl9WRl9OT19WUkFNX0ZPUl9HQVJUICovICAgICAgICAge0VSUk9S X0RBVEFfQVJHX05PTkUsICJObyBWUkFNIG9iamVjdCBmb3IgUENJRSBHQVJULiJ9LAorCS8qIEFN REdJTV9FUlJPUl9WRl9QU1BfTE9BRF9GV19GQUlMICovICAgICAgICAge0VSUk9SX0RBVEFfQVJH X05PTkUsICJQU1A6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlLiJ9LAorCisJLyogQU1ER0lNX0VS Uk9SX1ZGX0lOSVRfTU1TQ0hfRkFJTCAqLyAgICAgICAgICB7RVJST1JfREFUQV9BUkdfNjQsICAg ImZhaWxlZCB0byBpbml0IE1NU0NILCBtbVZDRV9NTVNDSF9WRl9NQUlMQk9YX1JFU1AgPSAleC4i fSwKKwkvKiBBTURHSU1fRVJST1JfVkZfR0ZYX0xPQURfRldfRkFJTCAqLyAgICAgICAgIHtFUlJP Ul9EQVRBX0FSR19OT05FLCAiZ2Z4OiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZS4ifSwKKwkvKiBB TURHSU1fRVJST1JfVkZfTkdHX0NSRUFURV9CVUZfRkFJTCAqLyAgICAgIHtFUlJPUl9EQVRBX0FS R182NCwgICAiRmFpbGVkIHRvIGNyZWF0ZSBOR0cgYnVmZmVyICglZCkuIn0sCisJLyogQU1ER0lN X0VSUk9SX1ZGX05HR19DUkVBVEVfUFJfQlVGX0ZBSUwgKi8gICB7RVJST1JfREFUQV9BUkdfNjQs ICAgIkZhaWxlZCB0byBjcmVhdGUgUHJpbWl0aXZlIEJ1ZmZlciAoJWQpLiJ9LAorCS8qIEFNREdJ TV9FUlJPUl9WRl9OR0dfQ1JFQVRFX1BPX0JVRl9GQUlMICovICAge0VSUk9SX0RBVEFfQVJHXzY0 LCAgICJGYWlsZWQgdG8gY3JlYXRlIFBvc2l0aW9uIEJ1ZmZlciAoJWQpLiJ9LAorCisJLyogQU1E R0lNX0VSUk9SX1ZGX05HR19DUkVBVEVfQ1NfQlVGX0ZBSUwgKi8gICB7RVJST1JfREFUQV9BUkdf NjQsICAgIkZhaWxlZCB0byBjcmVhdGUgQ29udHJvbCBTaWRlYmFuZCBCdWZmZXIgKCVkKS4ifSwK KwkvKiBBTURHSU1fRVJST1JfVkZfTkdHX0NSRUFURV9QQ19CVUZfRkFJTCAqLyAgIHtFUlJPUl9E QVRBX0FSR182NCwgICAiRmFpbGVkIHRvIGNyZWF0ZSBQYXJhbWV0ZXIgQ2FjaGUgKCVkKS4ifSwK KwkvKiBBTURHSU1fRVJST1JfVkZfQlVGTF9TSVpFX0lOVkFMSUQgKi8gICAgICAgIHtFUlJPUl9E QVRBX0FSR182NCwgICAiQnVmZmVyIHNpemUgaXMgaW52YWxpZDogJWQifSwKKwkvKiBBTURHSU1f RVJST1JfVkZfUkxDX0JPX0lOSVRfRkFJTCAqLyAgICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwg ICAiRmFpbGVkIHRvIGluaXQgcmxjIEJPcyAoJWQpIn0sCisKKwkvKiBBTURHSU1fRVJST1JfVkZf VEVTVCAqLyAgICAgICAgICAgICAgICAgICAgIHtFUlJPUl9EQVRBX0FSR182NCwgICAiVGhpcyBp cyBlcnJvciBsb2cgY29sbGVjdCB0ZXN0IGZvciBWRiBjb21wb25lbnQgKHRlc3QgY291bnQgJWxs dSkuIn0KK307CisKK2ludCBnZXRfdmZfZXJyb3JfdGV4dCAodWludDMyX3QgZXJyb3JfY29kZSwg dWludDY0X3QgZXJyb3JfZGF0YSwgY2hhciogZXJyb3JfbXNnLCBpbnQgYnVmX3NpemUpCit7CisJ aW50IGVycm9yX2NhdGFnb3J5ID0gQU1ER0lNX0VSUk9SX0NBVEFHT1JZKGVycm9yX2NvZGUpOwor CWludCBlcnJvcl9zdWJfY29kZSA9IEFNREdJTV9FUlJPUl9TVUJDT0RFKGVycm9yX2NvZGUpOwor CisJaWYgKEFNREdJTV9FUlJPUl9DQVRFR09SWV9WRiAhPSBlcnJvcl9jYXRhZ29yeSkgeworCQly ZXR1cm4gMDsKKwl9CisJaWYgKGVycm9yX3N1Yl9jb2RlID49IEFNREdJTV9FUlJPUl9WRl9NQVgp IHsKKwkJcmV0dXJuIDA7CisJfQorCXN3aXRjaCAoYW1kZ2ltX2Vycm9yX3ZmW2Vycm9yX3N1Yl9j b2RlXS5hcmdfdHlwZSkgeworCWNhc2UgRVJST1JfREFUQV9BUkdfTk9ORToKKwkJc25wcmludGYg KGVycm9yX21zZywgYnVmX3NpemUgLSAxLCBhbWRnaW1fZXJyb3JfdmZbZXJyb3Jfc3ViX2NvZGVd LnRleHQpOworCQlicmVhazsKKwljYXNlIEVSUk9SX0RBVEFfQVJHXzY0OgorCQlzbnByaW50ZiAo ZXJyb3JfbXNnLCBidWZfc2l6ZSAtIDEsIGFtZGdpbV9lcnJvcl92ZltlcnJvcl9zdWJfY29kZV0u dGV4dCwKKwkJCQllcnJvcl9kYXRhKTsKKwkJYnJlYWs7CisJY2FzZSBFUlJPUl9EQVRBX0FSR18z Ml8zMjoKKwkJc25wcmludGYgKGVycm9yX21zZywgYnVmX3NpemUgLSAxLCBhbWRnaW1fZXJyb3Jf dmZbZXJyb3Jfc3ViX2NvZGVdLnRleHQsCisJCQkJKHVpbnQzMl90KShlcnJvcl9kYXRhID4+IDMy KSwKKwkJCQkodWludDMyX3QpKGVycm9yX2RhdGEgJiAweEZGRkZGRkZGKSk7CisJCWJyZWFrOwor CWNhc2UgRVJST1JfREFUQV9BUkdfMTZfMTZfMzI6CisJCXNucHJpbnRmIChlcnJvcl9tc2csIGJ1 Zl9zaXplIC0gMSwgYW1kZ2ltX2Vycm9yX3ZmW2Vycm9yX3N1Yl9jb2RlXS50ZXh0LAorCQkJCSh1 aW50MTZfdCkoZXJyb3JfZGF0YSA+PiA0OCksCisJCQkJKHVpbnQxNl90KSgoZXJyb3JfZGF0YSA+ PiAzMikgJiAweEZGRkYpLAorCQkJCSh1aW50MzJfdCkoZXJyb3JfZGF0YSAmIDB4RkZGRkZGRkYp KTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJCWJyZWFrOworCX0KKwlyZXR1 cm4gc3RybGVuIChlcnJvcl9tc2cpOworfQorCisjZW5kaWYKKwordm9pZCBhbWRncHVfdmZfZXJy b3JfcHV0KHVpbnQxNl90IHN1Yl9lcnJvcl9jb2RlLCB1aW50MTZfdCBlcnJvcl9mbGFncywgdWlu dDY0X3QgZXJyb3JfZGF0YSkKK3sKKwlpbnQgaW5kZXg7CisJdWludDE2X3QgZXJyb3JfY29kZSA9 IEFNREdJTV9FUlJPUl9DT0RFKEFNREdJTV9FUlJPUl9DQVRFR09SWV9WRiwgc3ViX2Vycm9yX2Nv ZGUpOworCisJaW5kZXggPSBhZG1ncHVfdmZfZXJyb3JzLndyaXRlX2NvdW50ICUgQU1ER1BVX1ZG X0VSUk9SX0VOVFJZX1NJWkU7CisJYWRtZ3B1X3ZmX2Vycm9ycy5jb2RlIFtpbmRleF0gPSBlcnJv cl9jb2RlOworCWFkbWdwdV92Zl9lcnJvcnMuZmxhZ3MgW2luZGV4XSA9IGVycm9yX2ZsYWdzOwor CWFkbWdwdV92Zl9lcnJvcnMuZGF0YSBbaW5kZXhdID0gZXJyb3JfZGF0YTsKKwlhZG1ncHVfdmZf ZXJyb3JzLndyaXRlX2NvdW50ICsrOworfQorCisKK3ZvaWQgYW1kZ3B1X3ZmX2Vycm9yX3RyYW5z X2FsbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwkvL3UzMiBwZjJ2Zl9mbGFncyA9 IDA7CisJdTMyIGRhdGExLCBkYXRhMiwgZGF0YTM7CisJaW50IGluZGV4OworCisJaWYgKChOVUxM ID09IGFkZXYpIHx8ICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB8fCAoIWFkZXYtPnZpcnQub3Bz KSB8fCAoIWFkZXYtPnZpcnQub3BzLT50cmFuc19tc2cpKXsKKwkJcmV0dXJuOworCX0KKy8qCisg CVRPRE86IEVuYWJsZSB0aGVzZSBjb2RlIHdoZW4gcHYydmZfaW5mbyBpcyBtZXJnZWQKKwlBTURH UFVfRldfVlJBTV9QRjJWRl9SRUFEIChhZGV2LCBmZWF0dXJlX2ZsYWdzLCAmcGYydmZfZmxhZ3Mp OworCWlmICghKHBmMnZmX2ZsYWdzICYgQU1ER0lNX0ZFQVRVUkVfRVJST1JfTE9HX0NPTExFQ1Qp KQorCXsKKwkJcmV0dXJuOworCX0KKyovCisJLyogVGhlIGVycm9ycyBhcmUgb3ZlcmxheSBvZiBh cnJheSwgY29ycmVjdCByZWFkX2NvdW50IGFzIGZ1bGwuICovCisJaWYgKGFkbWdwdV92Zl9lcnJv cnMud3JpdGVfY291bnQgLSBhZG1ncHVfdmZfZXJyb3JzLnJlYWRfY291bnQgPiBBTURHUFVfVkZf RVJST1JfRU5UUllfU0laRSkgeworCQlhZG1ncHVfdmZfZXJyb3JzLnJlYWRfY291bnQgPSBhZG1n cHVfdmZfZXJyb3JzLndyaXRlX2NvdW50IC0gQU1ER1BVX1ZGX0VSUk9SX0VOVFJZX1NJWkU7CisJ fQorCisJd2hpbGUgKGFkbWdwdV92Zl9lcnJvcnMucmVhZF9jb3VudCA8IGFkbWdwdV92Zl9lcnJv cnMud3JpdGVfY291bnQpIHsKKwkJaW5kZXggPWFkbWdwdV92Zl9lcnJvcnMucmVhZF9jb3VudCAl IEFNREdQVV9WRl9FUlJPUl9FTlRSWV9TSVpFOworCQlkYXRhMSA9IEFNREdJTV9FUlJPUl9DT0RF X0ZMQUdTX1RPX01BSUxCT1ggKGFkbWdwdV92Zl9lcnJvcnMuY29kZVtpbmRleF0sIGFkbWdwdV92 Zl9lcnJvcnMuZmxhZ3NbaW5kZXhdKTsKKwkJZGF0YTIgPSBhZG1ncHVfdmZfZXJyb3JzLmRhdGFb aW5kZXhdICYgMHhGRkZGRkZGRjsKKwkJZGF0YTMgPSAoYWRtZ3B1X3ZmX2Vycm9ycy5kYXRhW2lu ZGV4XSA+PiAzMikgJiAweEZGRkZGRkZGOworCisJCWFkZXYtPnZpcnQub3BzLT50cmFuc19tc2co YWRldiwgSURIX0xPR19WRl9FUlJPUiwgZGF0YTEsIGRhdGEyLCBkYXRhMyk7CisJCWFkbWdwdV92 Zl9lcnJvcnMucmVhZF9jb3VudCArKzsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS92Zl9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmZf ZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYxMmVkMjQ2 YWE3YwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZmX2Vy cm9yLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBBZHZhbmNlZCBN aWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisg KiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX19W Rl9FUlJPUl9IX18KKyNkZWZpbmUgX19WRl9FUlJPUl9IX18KKworI2RlZmluZSBBTURHSU1fRVJS T1JfQ09ERV9GTEFHU19UT19NQUlMQk9YKGMsZikgICAgKCgoYyAmIDB4RkZGRikgPDwgMTYpIHwg KGYgJiAweEZGRkYpKQorI2RlZmluZSBBTURHSU1fRVJST1JfQ09ERSh0LGMpICAgICAgICgoKHQm MHhGKTw8MTIpfChjJjB4RkZGKSkKKyNkZWZpbmUgQU1ER0lNX0VSUk9SX0NBVEFHT1JZKGMpICAg ICAoKGM+PjEyKSAmIDB4RikKKyNkZWZpbmUgQU1ER0lNX0VSUk9SX1NVQkNPREUoYykgICAgICAo YyYweEZGRikKKyNkZWZpbmUgQU1ER0lNX0dQVV9FUlJPUl9NU0dfU0laRSAgICAgICAgIDI1NiAg ICAgICAgLyogVGhlIGxlbmd0aCBvZiBlcnJvciB0ZXh0IHNob3VsZCBiZSBsZXNzIHRoYW4gdGhp cyBudW1iZXIuICovCisjZGVmaW5lIEFNREdJTV9HUFVfRVJST1JfQlVGX1NBRkVfU0laRSAgICAo QU1ER0lNX0dQVV9FUlJPUl9NU0dfU0laRSArIDEyMCkgLyogVGhlIHNhZmUgbGVuZ3RoIG9mIHBy aW50aW5nIG91dCB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIHRvIGJ1ZmZlci4gKi8KKworCisvKiBQ bGVhc2Uga2VlcCBlbnVtIHNhbWUgYXMgQU1EIEdJTSBkcml2ZXIgKi8KK2VudW0geworCUFNREdJ TV9FUlJPUl9WRl9HUFVfSU5JVF9GQVRBTF9GQUlMID0gMCwKKwlBTURHSU1fRVJST1JfVkZfQVRP TUJJT1NfSU5JVF9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9VTkxPQ0FURV9CSU9TX1JPTSwKKwlB TURHSU1fRVJST1JfVkZfTk9fVkJJT1MsCisJQU1ER0lNX0VSUk9SX1ZGX0dQVV9QT1NUX0VSUk9S LAorCisJQU1ER0lNX0VSUk9SX1ZGX0FUT01CSU9TX0dFVF9DTE9DS19GQUlMLAorCUFNREdJTV9F UlJPUl9WRl9GRU5DRV9JTklUX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX0FNREdQVV9JTklUX0ZB SUwsCisJQU1ER0lNX0VSUk9SX1ZGX0lCX0lOSVRfRkFJTCwKKwlBTURHSU1fRVJST1JfVkZfQU1E R1BVX0xBVEVfSU5JVF9GQUlMLAorCisJQU1ER0lNX0VSUk9SX1ZGX0FTSUNfUkVTVU1FX0ZBSUws CisJQU1ER0lNX0VSUk9SX1ZGX0dQVV9SRVNFVF9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9NTVND SF9JTklUX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX1VWRF9OT1JFU1BfR0lWRVVQLAorCUFNREdJ TV9FUlJPUl9WRl9VVkRfTk9SRVNQX1JFU0VULAorCisJQU1ER0lNX0VSUk9SX1ZGX0xPQURfR0ZY X0ZJUk1XQVJFX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX01FQ19CT19JTklUX0ZBSUwsCisJQU1E R0lNX0VSUk9SX1ZGX0FERF9ERVZfVE9fR0VOUERfRkFJTCwKKwlBTURHSU1fRVJST1JfVkZfSUhf V0JfQUxMT0NfRkFJTCwKKwlBTURHSU1fRVJST1JfVkZfQk9fQUxMT0NfS19GQUlMLAorCisJQU1E R0lNX0VSUk9SX1ZGX0JPX1JFU0VSVkVfRkFJTCwKKwlBTURHSU1fRVJST1JfVkZfQk9fUElOX0ZB SUwsCisJQU1ER0lNX0VSUk9SX1ZGX0JPX01BUF9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9SSU5H X1JfV0JfQUxMT0NfRkFJTCwKKwlBTURHSU1fRVJST1JfVkZfUklOR19XX1dCX0FMTE9DX0ZBSUws CisKKwlBTURHSU1fRVJST1JfVkZfUklOR19GX1dCX0FMTE9DX0ZBSUwsCisJQU1ER0lNX0VSUk9S X1ZGX1JJTkdfQ19XQl9BTExPQ19GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9JTklUX0ZFTkNFX0ZB SUwsCisJQU1ER0lNX0VSUk9SX1ZGX1JJTkdfQ1JFQVRFX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZG X0JPX0FMTE9DX01fRkFJTCwKKworCUFNREdJTV9FUlJPUl9WRl9OT19CT19GT1JfU0EsCisJQU1E R0lNX0VSUk9SX1ZGX0ZXX0FMTE9DX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX0ZXX1JFU0VSVkVf RkFJTCwKKwlBTURHSU1fRVJST1JfVkZfRldfUElOX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX0ZX X0tNQVBfRkFJTCwKKworCUFNREdJTV9FUlJPUl9WRl9VVkRfTk9UX0xPQURfRlcsCisJQU1ER0lN X0VSUk9SX1ZGX1VWRF9OT1RfVkFMSURBVEVfRlcsCisJQU1ER0lNX0VSUk9SX1ZGX0FMTE9DX1VW RF9CT19GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9WQ0VfTk9UX0xPQURfRlcsCisJQU1ER0lNX0VS Uk9SX1ZGX1ZDRV9OT1RfVkFMSURBVEVfRlcsCisKKwlBTURHSU1fRVJST1JfVkZfQUxMT0NfVkNF X0JPX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX1ZDRV9SRVNFUlZFX0ZBSUwsCisJQU1ER0lNX0VS Uk9SX1ZGX1ZDRV9LTUFQX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX05PX1ZSQU1fRk9SX0dBUlQs CisJQU1ER0lNX0VSUk9SX1ZGX1BTUF9MT0FEX0ZXX0ZBSUwsCisKKwlBTURHSU1fRVJST1JfVkZf SU5JVF9NTVNDSF9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9HRlhfTE9BRF9GV19GQUlMLAorCUFN REdJTV9FUlJPUl9WRl9OR0dfQ1JFQVRFX0JVRl9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9OR0df Q1JFQVRFX1BSX0JVRl9GQUlMLAorCUFNREdJTV9FUlJPUl9WRl9OR0dfQ1JFQVRFX1BPX0JVRl9G QUlMLAorCisJQU1ER0lNX0VSUk9SX1ZGX05HR19DUkVBVEVfQ1NfQlVGX0ZBSUwsCisJQU1ER0lN X0VSUk9SX1ZGX05HR19DUkVBVEVfUENfQlVGX0ZBSUwsCisJQU1ER0lNX0VSUk9SX1ZGX0JVRkxf U0laRV9JTlZBTElELAorCUFNREdJTV9FUlJPUl9WRl9STENfQk9fSU5JVF9GQUlMLAorCisJQU1E R0lNX0VSUk9SX1ZGX1RFU1QsCisJQU1ER0lNX0VSUk9SX1ZGX01BWAorfTsKKworZW51bSB7Cisg ICAgQU1ER0lNX0VSUk9SX0NBVEVHT1JZX05PTl9VU0VEID0gMCwKKyAgICBBTURHSU1fRVJST1Jf Q0FURUdPUllfR0lNLAorICAgIEFNREdJTV9FUlJPUl9DQVRFR09SWV9QRiwKKyAgICBBTURHSU1f RVJST1JfQ0FURUdPUllfVkYsCisgICAgQU1ER0lNX0VSUk9SX0NBVEVHT1JZX1ZCSU9TLAorICAg IEFNREdJTV9FUlJPUl9DQVRFR09SWV9NT05JVE9SLAorCisgICAgQU1ER0lNX0VSUk9SX0NBVEVH T1JZX01BWAorfTsKKwordm9pZCBhbWRncHVfdmZfZXJyb3JfcHV0KHVpbnQxNl90IHN1Yl9lcnJv cl9jb2RlLCB1aW50MTZfdCBlcnJvcl9mbGFncywgdWludDY0X3QgZXJyb3JfZGF0YSk7Cit2b2lk IGFtZGdwdV92Zl9lcnJvcl90cmFuc19hbGwgKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsK KworI2VuZGlmIC8qIF9fVkZfRVJST1JfSF9fICovCi0tIAoyLjExLjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=