From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH] drm/amdgpu: cleanup firmware requests Date: Tue, 17 Apr 2018 17:53:53 -0400 Message-ID: <20180417215353.4698-1-andresx7@gmail.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, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org QWRkIGEgbmV3IGZ1bmN0aW9uIGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKCkgdGhhdCBl bmNhcHN1bGF0ZXMgYQpsb3Qgb2YgdGhlIGNvbW1vbiBiZWhhdmlvdXIgd2UgaGF2ZSBhcm91bmQg ZmlybXdhcmUgcmVxdWVzdHMuCgpUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIGluIG15IHF1ZXN0IHRv IGdldCByaWQgb2YgdGhlIGZvbGxvd2luZyBhbm5veWluZwptZXNzYWdlcyB3aGVuIG15IHBvbGFy aXMxMCBib290cyB1cDoKWyAgICAwLjU1ODUzN10gYW1kZ3B1IDAwMDA6MDE6MDAuMDogRGlyZWN0 IGZpcm13YXJlIGxvYWQgZm9yIGFtZGdwdS9wb2xhcmlzMTBfcGZwXzIuYmluIGZhaWxlZCB3aXRo IGVycm9yIC0yClsgICAgMC41NTg1NTFdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IERpcmVjdCBmaXJt d2FyZSBsb2FkIGZvciBhbWRncHUvcG9sYXJpczEwX21lXzIuYmluIGZhaWxlZCB3aXRoIGVycm9y IC0yClsgICAgMC41NTg1NjJdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IERpcmVjdCBmaXJtd2FyZSBs b2FkIGZvciBhbWRncHUvcG9sYXJpczEwX2NlXzIuYmluIGZhaWxlZCB3aXRoIGVycm9yIC0yClsg ICAgMC41NTg1ODBdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IERpcmVjdCBmaXJtd2FyZSBsb2FkIGZv ciBhbWRncHUvcG9sYXJpczEwX21lY18yLmJpbiBmYWlsZWQgd2l0aCBlcnJvciAtMgpbICAgIDAu NTU4NjE5XSBhbWRncHUgMDAwMDowMTowMC4wOiBEaXJlY3QgZmlybXdhcmUgbG9hZCBmb3IgYW1k Z3B1L3BvbGFyaXMxMF9tZWMyXzIuYmluIGZhaWxlZCB3aXRoIGVycm9yIC0yCgpTaWduZWQtb2Zm LWJ5OiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Ci0tLQoKSGV5IENocmlz dGlhbiwKCldhbnRlZCB0byBnbyB0aHJvdWdoIGEgY2xlYW51cCBvZiB0aGUgdWNvZGUgbG9hZGlu ZyBpbiBhbWRncHUKdG8gZmFjaWxpdGF0ZSBzb21lIG9mIG91ciBoZWF0ZWQgZGlzY3Vzc2lvbnMg OikKCkZvciBub3csIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4gT25jZSBf bm93YXJuKCkKbGFuZHMgd2UgY2FuIGNoYW5nZSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2Fy ZSgpIHdpdGggZWl0aGVyOgoKQWx0ZXJuYXRpdmUgQToKLSAgICAgICBlcnIgPSByZXF1ZXN0X2Zp cm13YXJlKCZsb2FkZWRfZncsIG5hbWUsIGFkZXYtPmRldik7CisgICAgICAgZXJyID0gcmVxdWVz dF9maXJtd2FyZV9ub3dhcm4oJmxvYWRlZF9mdywgbmFtZSwgYWRldi0+ZGV2KTsKCkFsdGVybmF0 aXZlIEI6Ci0gICAgICAgZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmbG9hZGVkX2Z3LCBuYW1lLCBh ZGV2LT5kZXYpOworICAgICAgIGlmIChvcHRpb25hbCkKKyAgICAgICAgICAgICAgIGVyciA9IHJl cXVlc3RfZmlybXdhcmVfbm93YXJuKCZsb2FkZWRfZncsIG5hbWUsIGFkZXYtPmRldik7CisgICAg ICAgZWxzZQorICAgICAgICAgICAgICAgZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmbG9hZGVkX2Z3 LCBuYW1lLCBhZGV2LT5kZXYpOwoKSSBwcmVmZXIgQSwgYnV0IEknbSBub3Qgb3Bwb3NlZCB0byBC LiBJJ2xsIGxlYXZlIGl0IHVwIHRvIHlvdS4KClJlZ2FyZHMsCkFuZHJlcwoKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYyAgICB8ICAxNCArLS0tCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCAgMTYgKy0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5jICB8ICAzOSArKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuaCAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jICAgIHwgIDE2ICstLS0tCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdmNlLmMgICAgfCAgMTYgKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92Y24uYyAgICB8ICAxNiArLS0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvY2lfZHBtLmMgICAgICAgIHwgIDE1ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2Npa19zZG1hLmMgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y2XzAuYyAgICAgIHwgIDE5ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjdfMC5jICAgICAgfCAgMzAgKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dmeF92OF8wLmMgICAgICB8IDExMiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYyAgICAgIHwgIDM5ICsrKy0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMgICAgICB8ICAxNyArLS0t LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyAgICAgIHwgIDE0ICstLS0K IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMgICAgICB8ICAxNCArLS0tCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYyAgICAgfCAgMTggKy0tLS0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMgICAgICB8ICAxNSArLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YyXzQuYyAgICAgfCAgIDYgKy0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9zaV9kcG0uYyAgICAgICAgfCAgMTYgKy0tLS0KIDIyIGZpbGVzIGNoYW5nZWQs IDEzOSBpbnNlcnRpb25zKCspLCAzMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Nncy5jCmluZGV4IGE4YTk0MmM2MGVhMi4uMzQ3YWIxNzEwNTIzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY2dzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jCkBAIC00MDIsMTkgKzQwMiw5IEBA IHN0YXRpYyBpbnQgYW1kZ3B1X2Nnc19nZXRfZmlybXdhcmVfaW5mbyhzdHJ1Y3QgY2dzX2Rldmlj ZSAqY2dzX2RldmljZSwKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KIAotCQkJZXJyID0gcmVx dWVzdF9maXJtd2FyZSgmYWRldi0+cG0uZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCQlpZiAo ZXJyKSB7Ci0JCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVxdWVzdCBmaXJtd2FyZVxuIik7CisJ CQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+cG0uZncs IGZ3X25hbWUsIGZhbHNlKTsKKwkJCWlmIChlcnIpCiAJCQkJcmV0dXJuIGVycjsKLQkJCX0KLQot CQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBtLmZ3KTsKLQkJCWlmIChlcnIp IHsKLQkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIiIsIGZ3X25h bWUpOwotCQkJCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+cG0uZncpOwotCQkJCWFkZXYtPnBtLmZ3 ID0gTlVMTDsKLQkJCQlyZXR1cm4gZXJyOwotCQkJfQogCiAJCQlpZiAoYWRldi0+ZmlybXdhcmUu bG9hZF90eXBlID09IEFNREdQVV9GV19MT0FEX1BTUCkgewogCQkJCXVjb2RlID0gJmFkZXYtPmZp cm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9TTUNdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RldmljZS5jCmluZGV4IGFiYzMzNDY0OTU5ZS4uOTY3ZTE0ZjE0YWJjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCkBAIC0xMzU1LDIw ICsxMzU1LDEwIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wYXJzZV9ncHVfaW5mb19mdyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiAKIAlzbnByaW50Zihmd19uYW1lLCBzaXpl b2YoZndfbmFtZSksICJhbWRncHUvJXNfZ3B1X2luZm8uYmluIiwgY2hpcF9uYW1lKTsKLQllcnIg PSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5maXJtd2FyZS5ncHVfaW5mb19mdywgZndfbmFtZSwg YWRldi0+ZGV2KTsKLQlpZiAoZXJyKSB7Ci0JCWRldl9lcnIoYWRldi0+ZGV2LAotCQkJIkZhaWxl ZCB0byBsb2FkIGdwdV9pbmZvIGZpcm13YXJlIFwiJXNcIlxuIiwKLQkJCWZ3X25hbWUpOworCWVy ciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5maXJtd2FyZS5n cHVfaW5mb19mdywKKwkJCQkJICAgIGZ3X25hbWUsIGZhbHNlKTsKKwlpZiAoZXJyKQogCQlnb3Rv IG91dDsKLQl9Ci0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmZpcm13YXJlLmdw dV9pbmZvX2Z3KTsKLQlpZiAoZXJyKSB7Ci0JCWRldl9lcnIoYWRldi0+ZGV2LAotCQkJIkZhaWxl ZCB0byB2YWxpZGF0ZSBncHVfaW5mbyBmaXJtd2FyZSBcIiVzXCJcbiIsCi0JCQlmd19uYW1lKTsK LQkJZ290byBvdXQ7Ci0JfQogCiAJaGRyID0gKGNvbnN0IHN0cnVjdCBncHVfaW5mb19maXJtd2Fy ZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmZpcm13YXJlLmdwdV9pbmZvX2Z3LT5kYXRhOwogCWFtZGdw dV91Y29kZV9wcmludF9ncHVfaW5mb19oZHIoJmhkci0+aGVhZGVyKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmMKaW5kZXggZGQ2Zjk4OTIxOTE4Li43MTBhNGRjY2Qx YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5jCkBAIC0yOCw2 ICsyOCw0NSBAQAogI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUgImFtZGdwdV91Y29kZS5o IgogCitpbnQgYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCisJCQkJICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdywKKwkJCQkgIGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgb3B0aW9uYWwpCit7CisJaW50IGVycjsKKwljb25zdCBzdHJ1Y3Qg ZmlybXdhcmUgKmxvYWRlZF9mdyA9IE5VTEw7CisKKwlpZiAoIWZ3KQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmxvYWRlZF9mdywgbmFtZSwgYWRldi0+ZGV2 KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlk YXRlKGxvYWRlZF9mdyk7CisJaWYgKGVycikKKwkJZ290byBlcnJvcjsKKworCSpmdyA9IGxvYWRl ZF9mdzsKKwlyZXR1cm4gZXJyOworCitlcnJvcjoKKwlpZiAobG9hZGVkX2Z3KQorCQlyZWxlYXNl X2Zpcm13YXJlKGxvYWRlZF9mdyk7CisKKwlpZiAoIW9wdGlvbmFsKQorCQlkZXZfZXJyKGFkZXYt PmRldiwgImZhaWxlZCB0byBsb2FkIGZpcm13YXJlICVzXG4iLCBuYW1lKTsKKworCS8vIE5vdGhp bmcgdXNlZnVsIHdhcyBsb2FkZWQKKwkqZncgPSBOVUxMOworCisJLy8gSWYgd2UgY2FuJ3QgZmlu ZCBvcHRpb25hbCBGVywgZG9uJ3QgcmV0dXJuIGFuIGVycm9yCisJaWYgKG9wdGlvbmFsICYmICFs b2FkZWRfZncpCisJCWVyciA9IDA7CisKKwlyZXR1cm4gZXJyOworfQorCisKIHN0YXRpYyB2b2lk IGFtZGdwdV91Y29kZV9wcmludF9jb21tb25faGRyKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdh cmVfaGVhZGVyICpoZHIpCiB7CiAJRFJNX0RFQlVHKCJzaXplX2J5dGVzOiAldVxuIiwgbGUzMl90 b19jcHUoaGRyLT5zaXplX2J5dGVzKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdWNvZGUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV91Y29kZS5oCmluZGV4IDMwYjU1MDBkYzE1Mi4uYWY3ODhlNDJjMTgxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuaApAQCAtMjA2LDYgKzIwNiw5IEBAIHN0cnVj dCBhbWRncHVfZmlybXdhcmVfaW5mbyB7CiAJdWludDMyX3QgdWNvZGVfc2l6ZTsKIH07CiAKK2lu dCBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKKwkJCQkgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqKmZ3LAorCQkJCSAgY29uc3QgY2hhciAq bmFtZSwgYm9vbCBvcHRpb25hbCk7CiB2b2lkIGFtZGdwdV91Y29kZV9wcmludF9tY19oZHIoY29u c3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcik7CiB2b2lkIGFtZGdwdV91Y29k ZV9wcmludF9zbWNfaGRyKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICpoZHIp Owogdm9pZCBhbWRncHVfdWNvZGVfcHJpbnRfZ2Z4X2hkcihjb25zdCBzdHJ1Y3QgY29tbW9uX2Zp cm13YXJlX2hlYWRlciAqaGRyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV91dmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQu YwppbmRleCA2Mjc1NDJiMjJhZTQuLmZiM2M3NTk1YWQwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV91dmQuYwpAQCAtMTc2LDIxICsxNzYsOSBAQCBpbnQgYW1kZ3B1X3V2ZF9z d19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CiAKLQlyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+dXZkLmZ3LCBmd19uYW1lLCBhZGV2LT5k ZXYpOwotCWlmIChyKSB7Ci0JCWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X3V2ZDogQ2FuJ3Qg bG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIsCi0JCQlmd19uYW1lKTsKLQkJcmV0dXJuIHI7Ci0JfQot Ci0JciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT51dmQuZncpOwotCWlmIChyKSB7Ci0J CWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X3V2ZDogQ2FuJ3QgdmFsaWRhdGUgZmlybXdhcmUg XCIlc1wiXG4iLAotCQkJZndfbmFtZSk7Ci0JCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+dXZkLmZ3 KTsKLQkJYWRldi0+dXZkLmZ3ID0gTlVMTDsKKwlyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmly bXdhcmUoYWRldiwgJmFkZXYtPnV2ZC5mdywgZndfbmFtZSwgZmFsc2UpOworCWlmIChyKQogCQly ZXR1cm4gcjsKLQl9CiAKIAkvKiBTZXQgdGhlIGRlZmF1bHQgVVZEIGhhbmRsZXMgdGhhdCB0aGUg ZmlybXdhcmUgY2FuIGhhbmRsZSAqLwogCWFkZXYtPnV2ZC5tYXhfaGFuZGxlcyA9IEFNREdQVV9E RUZBVUxUX1VWRF9IQU5ETEVTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZjZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5j CmluZGV4IGEzMzgwNGJkMzMxNC4uNGY0MWYzZmQyNzg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZjZS5jCkBAIC0xNDMsMjEgKzE0Myw5IEBAIGludCBhbWRncHVfdmNlX3N3 X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAkJ cmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnZjZS5m dywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQlpZiAocikgewotCQlkZXZfZXJyKGFkZXYtPmRldiwg ImFtZGdwdV92Y2U6IENhbid0IGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLAotCQkJZndfbmFtZSk7 Ci0JCXJldHVybiByOwotCX0KLQotCXIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+dmNl LmZ3KTsKLQlpZiAocikgewotCQlkZXZfZXJyKGFkZXYtPmRldiwgImFtZGdwdV92Y2U6IENhbid0 IHZhbGlkYXRlIGZpcm13YXJlIFwiJXNcIlxuIiwKLQkJCWZ3X25hbWUpOwotCQlyZWxlYXNlX2Zp cm13YXJlKGFkZXYtPnZjZS5mdyk7Ci0JCWFkZXYtPnZjZS5mdyA9IE5VTEw7CisJciA9IGFtZGdw dV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT52Y2UuZncsIGZ3X25hbWUsIGZh bHNlKTsKKwlpZiAocikKIAkJcmV0dXJuIHI7Ci0JfQogCiAJaGRyID0gKGNvbnN0IHN0cnVjdCBj b21tb25fZmlybXdhcmVfaGVhZGVyICopYWRldi0+dmNlLmZ3LT5kYXRhOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMKaW5kZXggNThlNDk1MzMwYjM4Li4wN2YzOTlhNjRj YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMKQEAgLTY3LDIxICs2 Nyw5IEBAIGludCBhbWRncHVfdmNuX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT52 Y24uZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JaWYgKHIpIHsKLQkJZGV2X2VycihhZGV2LT5k ZXYsICJhbWRncHVfdmNuOiBDYW4ndCBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKLQkJCWZ3X25h bWUpOwotCQlyZXR1cm4gcjsKLQl9Ci0KLQlyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYt PnZjbi5mdyk7Ci0JaWYgKHIpIHsKLQkJZGV2X2VycihhZGV2LT5kZXYsICJhbWRncHVfdmNuOiBD YW4ndCB2YWxpZGF0ZSBmaXJtd2FyZSBcIiVzXCJcbiIsCi0JCQlmd19uYW1lKTsKLQkJcmVsZWFz ZV9maXJtd2FyZShhZGV2LT52Y24uZncpOwotCQlhZGV2LT52Y24uZncgPSBOVUxMOworCXIgPSBh bWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+dmNuLmZ3LCBmd19uYW1l LCBmYWxzZSk7CisJaWYgKHIpCiAJCXJldHVybiByOwotCX0KIAogCWhkciA9IChjb25zdCBzdHJ1 Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqKWFkZXYtPnZjbi5mdy0+ZGF0YTsKIAlmYW1pbHlf aWQgPSBsZTMyX3RvX2NwdShoZHItPnVjb2RlX3ZlcnNpb24pICYgMHhmZjsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvY2lfZHBtLmMKaW5kZXggYmU2YjE5OTUxZTZhLi4zNDExODAzMTg4YWEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCkBAIC01Nzg5LDcgKzU3ODksNiBAQCBzdGF0aWMg aW50IGNpX2RwbV9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsK IAljb25zdCBjaGFyICpjaGlwX25hbWU7CiAJY2hhciBmd19uYW1lWzMwXTsKLQlpbnQgZXJyOwog CiAJRFJNX0RFQlVHKCJcbiIpOwogCkBAIC01ODE1LDE4ICs1ODE0LDggQEAgc3RhdGljIGludCBj aV9kcG1faW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJfQogCiAJ c25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX3NtYy5iaW4iLCBj aGlwX25hbWUpOwotCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnBtLmZ3LCBmd19uYW1l LCBhZGV2LT5kZXYpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCWVyciA9IGFtZGdwdV91Y29k ZV92YWxpZGF0ZShhZGV2LT5wbS5mdyk7Ci0KLW91dDoKLQlpZiAoZXJyKSB7Ci0JCXByX2Vycigi Y2lrX3NtYzogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKLQkJ cmVsZWFzZV9maXJtd2FyZShhZGV2LT5wbS5mdyk7Ci0JCWFkZXYtPnBtLmZ3ID0gTlVMTDsKLQl9 Ci0JcmV0dXJuIGVycjsKKwlyZXR1cm4gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRl diwgJmFkZXYtPnBtLmZ3LCBmd19uYW1lLAorCQkJCQkgICAgIGZhbHNlKTsKIH0KIAogc3RhdGlj IGludCBjaV9kcG1faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9jaWtfc2RtYS5jCmluZGV4IGE3NTc2MjU1Y2MzMC4uNzc0ZDlhZWNhYjAyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfc2RtYS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMKQEAgLTEzNSwxNCArMTM1LDEzIEBA IHN0YXRpYyBpbnQgY2lrX3NkbWFfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNf c2RtYS5iaW4iLCBjaGlwX25hbWUpOwogCQllbHNlCiAJCQlzbnByaW50Zihmd19uYW1lLCBzaXpl b2YoZndfbmFtZSksICJyYWRlb24vJXNfc2RtYTEuYmluIiwgY2hpcF9uYW1lKTsKLQkJZXJyID0g cmVxdWVzdF9maXJtd2FyZSgmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdywgZndfbmFtZSwgYWRl di0+ZGV2KTsKKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFk ZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncsCisJCQkJCQkgICAgZndfbmFtZSwgZmFsc2UpOwogCQlp ZiAoZXJyKQogCQkJZ290byBvdXQ7Ci0JCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2 LT5zZG1hLmluc3RhbmNlW2ldLmZ3KTsKIAl9CiBvdXQ6CiAJaWYgKGVycikgewotCQlwcl9lcnIo ImNpa19zZG1hOiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIsIGZ3X25hbWUpOwog CQlmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKIAkJCXJl bGVhc2VfZmlybXdhcmUoYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyk7CiAJCQlhZGV2LT5zZG1h Lmluc3RhbmNlW2ldLmZ3ID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2dmeF92Nl8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5j CmluZGV4IGNkNmJmMjkxYTg1My4uZTViY2JlYzQxYTFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dmeF92Nl8wLmMKQEAgLTMzNiwxMCArMzM2LDcgQEAgc3RhdGljIGludCBnZnhfdjZfMF9p bml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiAKIAlzbnByaW50 Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNfcGZwLmJpbiIsIGNoaXBfbmFt ZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnBmcF9mdywgZndfbmFtZSwg YWRldi0+ZGV2KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVfdWNvZGVf dmFsaWRhdGUoYWRldi0+Z2Z4LnBmcF9mdyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3Rf ZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3X25hbWUsIGZhbHNlKTsKIAlpZiAo ZXJyKQogCQlnb3RvIG91dDsKIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9o ZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5wZnBfZnctPmRhdGE7CkBAIC0zNDcsMTAgKzM0NCw3IEBA IHN0YXRpYyBpbnQgZ2Z4X3Y2XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJYWRldi0+Z2Z4LnBmcF9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9o ZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7CiAKIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2Yo ZndfbmFtZSksICJyYWRlb24vJXNfbWUuYmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0 X2Zpcm13YXJlKCZhZGV2LT5nZngubWVfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JaWYgKGVy cikKLQkJZ290byBvdXQ7Ci0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5t ZV9mdyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYt PmdmeC5tZV9mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCWNw X2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4 Lm1lX2Z3LT5kYXRhOwpAQCAtMzU4LDEwICszNTIsNyBAQCBzdGF0aWMgaW50IGdmeF92Nl8wX2lu aXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWFkZXYtPmdmeC5tZV9m ZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lv bik7CiAKIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNfY2Uu YmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZnguY2Vf ZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0JZXJyID0g YW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5jZV9mdyk7CisJZXJyID0gYW1kZ3B1X3Vj b2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5jZV9mdywgZndfbmFtZSwgZmFs c2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCWNwX2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4 X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4LmNlX2Z3LT5kYXRhOwpAQCAtMzY5LDE3 ICszNjAsMTUgQEAgc3RhdGljIGludCBnZnhfdjZfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAlhZGV2LT5nZnguY2VfZmVhdHVyZV92ZXJzaW9uID0gbGUzMl90 b19jcHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwogCiAJc25wcmludGYoZndfbmFt ZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX3JsYy5iaW4iLCBjaGlwX25hbWUpOwotCWVy ciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5ybGNfZncsIGZ3X25hbWUsIGFkZXYtPmRl dik7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdm eC5ybGNfZncsIGZ3X25hbWUsIGZhbHNlKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKLQllcnIg PSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LnJsY19mdyk7CiAJcmxjX2hkciA9IChj b25zdCBzdHJ1Y3QgcmxjX2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4LnJsY19mdy0+ ZGF0YTsKIAlhZGV2LT5nZngucmxjX2Z3X3ZlcnNpb24gPSBsZTMyX3RvX2NwdShybGNfaGRyLT5o ZWFkZXIudWNvZGVfdmVyc2lvbik7CiAJYWRldi0+Z2Z4LnJsY19mZWF0dXJlX3ZlcnNpb24gPSBs ZTMyX3RvX2NwdShybGNfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwogCiBvdXQ6CiAJaWYg KGVycikgewotCQlwcl9lcnIoImdmeDY6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIlxu IiwgZndfbmFtZSk7CiAJCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+Z2Z4LnBmcF9mdyk7CiAJCWFk ZXYtPmdmeC5wZnBfZncgPSBOVUxMOwogCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdmeC5tZV9m dyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwppbmRleCA0MmI2MTQ0YzFmZDUu LjlhZWQxYmUxYzliNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4 X3Y3XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCkBAIC05 MjYsNTYgKzkyNiw0MCBAQCBzdGF0aWMgaW50IGdmeF92N18wX2luaXRfbWljcm9jb2RlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCX0KIAogCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihm d19uYW1lKSwgInJhZGVvbi8lc19wZnAuYmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0 X2Zpcm13YXJlKCZhZGV2LT5nZngucGZwX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwotCWlmIChl cnIpCi0JCWdvdG8gb3V0OwotCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngu cGZwX2Z3KTsKKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRl di0+Z2Z4LnBmcF9mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0Owog CiAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX21lLmJpbiIs IGNoaXBfbmFtZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lX2Z3LCBm d19uYW1lLCBhZGV2LT5kZXYpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCWVyciA9IGFtZGdw dV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngubWVfZncpOworCWVyciA9IGFtZGdwdV91Y29kZV9y ZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVfZncsIGZ3X25hbWUsIGZhbHNlKTsK IAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAogCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19u YW1lKSwgInJhZGVvbi8lc19jZS5iaW4iLCBjaGlwX25hbWUpOwotCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmFkZXYtPmdmeC5jZV9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQlpZiAoZXJyKQot CQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LmNlX2Z3 KTsKKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4 LmNlX2Z3LCBmd19uYW1lLCBmYWxzZSk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKIAlzbnBy aW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNfbWVjLmJpbiIsIGNoaXBf bmFtZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lY19mdywgZndfbmFt ZSwgYWRldi0+ZGV2KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVfdWNv ZGVfdmFsaWRhdGUoYWRldi0+Z2Z4Lm1lY19mdyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVl c3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUsIGZhbHNlKTsKIAlp ZiAoZXJyKQogCQlnb3RvIG91dDsKIAogCWlmIChhZGV2LT5hc2ljX3R5cGUgPT0gQ0hJUF9LQVZF UkkpIHsKIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX21l YzIuYmluIiwgY2hpcF9uYW1lKTsKLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4 Lm1lYzJfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsK LQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5tZWMyX2Z3KTsKKwkJZXJy ID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZWMyX2Z3 LCBmd19uYW1lLAorCQkJCQkJICAgIGZhbHNlKTsKIAkJaWYgKGVycikKIAkJCWdvdG8gb3V0Owog CX0KIAogCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVvbi8lc19ybGMu YmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngucmxj X2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOworCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zp cm13YXJlKGFkZXYsICZhZGV2LT5nZngucmxjX2Z3LCBmd19uYW1lLCBmYWxzZSk7CiAJaWYgKGVy cikKIAkJZ290byBvdXQ7Ci0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5y bGNfZncpOwogCiBvdXQ6CiAJaWYgKGVycikgewotCQlwcl9lcnIoImdmeDc6IEZhaWxlZCB0byBs b2FkIGZpcm13YXJlIFwiJXNcIlxuIiwgZndfbmFtZSk7CiAJCXJlbGVhc2VfZmlybXdhcmUoYWRl di0+Z2Z4LnBmcF9mdyk7CiAJCWFkZXYtPmdmeC5wZnBfZncgPSBOVUxMOwogCQlyZWxlYXNlX2Zp cm13YXJlKGFkZXYtPmdmeC5tZV9mdyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nZnhfdjhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAu YwppbmRleCBiMGU1OTFlYWE3MWEuLmIxMGNlNDc4NmI4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5jCkBAIC05MzQsNjMgKzkzNCw1NyBAQCBzdGF0aWMgaW50IGdmeF92OF8w X2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlCVUcoKTsKIAl9 CiAKKwlhZGV2LT5nZngucGZwX2Z3ID0gTlVMTDsKIAlpZiAoYWRldi0+YXNpY190eXBlID49IENI SVBfUE9MQVJJUzEwICYmIGFkZXYtPmFzaWNfdHlwZSA8PSBDSElQX1BPTEFSSVMxMikgewogCQlz bnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcGZwXzIuYmluIiwg Y2hpcF9uYW1lKTsKLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnBmcF9mdywg ZndfbmFtZSwgYWRldi0+ZGV2KTsKLQkJaWYgKGVyciA9PSAtRU5PRU5UKSB7Ci0JCQlzbnByaW50 Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcGZwLmJpbiIsIGNoaXBfbmFt ZSk7Ci0JCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngucGZwX2Z3LCBmd19uYW1l LCBhZGV2LT5kZXYpOwotCQl9Ci0JfSBlbHNlIHsKKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVl c3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3X25hbWUsIHRydWUpOworCQlp ZiAoZXJyKQorCQkJZ290byBvdXQ7CisJfQorCisJaWYgKCFhZGV2LT5nZngucGZwX2Z3KSB7CiAJ CXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19wZnAuYmluIiwg Y2hpcF9uYW1lKTsKLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnBmcF9mdywg ZndfbmFtZSwgYWRldi0+ZGV2KTsKKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdh cmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3X25hbWUsIGZhbHNlKTsKKwkJaWYgKGVycikK KwkJCWdvdG8gb3V0OwogCX0KLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVf dWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LnBmcF9mdyk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7 CisKIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFk ZXYtPmdmeC5wZnBfZnctPmRhdGE7CiAJYWRldi0+Z2Z4LnBmcF9md192ZXJzaW9uID0gbGUzMl90 b19jcHUoY3BfaGRyLT5oZWFkZXIudWNvZGVfdmVyc2lvbik7CiAJYWRldi0+Z2Z4LnBmcF9mZWF0 dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7 CiAKKwlhZGV2LT5nZngubWVfZncgPSBOVUxMOwogCWlmIChhZGV2LT5hc2ljX3R5cGUgPj0gQ0hJ UF9QT0xBUklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENISVBfUE9MQVJJUzEyKSB7CiAJCXNu cHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZV8yLmJpbiIsIGNo aXBfbmFtZSk7Ci0JCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZV9mdywgZndf bmFtZSwgYWRldi0+ZGV2KTsKLQkJaWYgKGVyciA9PSAtRU5PRU5UKSB7Ci0JCQlzbnByaW50Zihm d19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWUuYmluIiwgY2hpcF9uYW1lKTsK LQkJCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZV9mdywgZndfbmFtZSwgYWRl di0+ZGV2KTsKLQkJfQotCX0gZWxzZSB7CisJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zp cm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVfZncsIGZ3X25hbWUsIHRydWUpOworCQlpZiAoZXJy KQorCQkJZ290byBvdXQ7CisJfQorCisJaWYgKCFhZGV2LT5nZngubWVfZncpIHsKIAkJc25wcmlu dGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX21lLmJpbiIsIGNoaXBfbmFt ZSk7Ci0JCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZV9mdywgZndfbmFtZSwg YWRldi0+ZGV2KTsKKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwg JmFkZXYtPmdmeC5tZV9mdywgZndfbmFtZSwgZmFsc2UpOworCQlpZiAoZXJyKQorCQkJZ290byBv dXQ7CiAJfQotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCWVyciA9IGFtZGdwdV91Y29kZV92YWxp ZGF0ZShhZGV2LT5nZngubWVfZncpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwogCWNwX2hkciA9 IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4Lm1lX2Z3 LT5kYXRhOwogCWFkZXYtPmdmeC5tZV9md192ZXJzaW9uID0gbGUzMl90b19jcHUoY3BfaGRyLT5o ZWFkZXIudWNvZGVfdmVyc2lvbik7CiAKIAlhZGV2LT5nZngubWVfZmVhdHVyZV92ZXJzaW9uID0g bGUzMl90b19jcHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwogCisJYWRldi0+Z2Z4 LmNlX2Z3ID0gTlVMTDsKIAlpZiAoYWRldi0+YXNpY190eXBlID49IENISVBfUE9MQVJJUzEwICYm IGFkZXYtPmFzaWNfdHlwZSA8PSBDSElQX1BPTEFSSVMxMikgewogCQlzbnByaW50Zihmd19uYW1l LCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfY2VfMi5iaW4iLCBjaGlwX25hbWUpOwotCQll cnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZnguY2VfZncsIGZ3X25hbWUsIGFkZXYtPmRl dik7Ci0JCWlmIChlcnIgPT0gLUVOT0VOVCkgewotCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9m KGZ3X25hbWUpLCAiYW1kZ3B1LyVzX2NlLmJpbiIsIGNoaXBfbmFtZSk7Ci0JCQllcnIgPSByZXF1 ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZnguY2VfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCX0K LQl9IGVsc2UgeworCQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAm YWRldi0+Z2Z4LmNlX2Z3LCBmd19uYW1lLCB0cnVlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0 OworCX0KKwlpZiAoIWFkZXYtPmdmeC5jZV9mdykgewogCQlzbnByaW50Zihmd19uYW1lLCBzaXpl b2YoZndfbmFtZSksICJhbWRncHUvJXNfY2UuYmluIiwgY2hpcF9uYW1lKTsKLQkJZXJyID0gcmVx dWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LmNlX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOworCQll cnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4LmNlX2Z3 LCBmd19uYW1lLCBmYWxzZSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKIAl9Ci0JaWYgKGVy cikKLQkJZ290byBvdXQ7Ci0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5j ZV9mdyk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7CiAJY3BfaGRyID0gKGNvbnN0IHN0cnVjdCBn ZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5nZnguY2VfZnctPmRhdGE7CiAJYWRldi0+ Z2Z4LmNlX2Z3X3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPmhlYWRlci51Y29kZV92ZXJz aW9uKTsKIAlhZGV2LT5nZnguY2VfZmVhdHVyZV92ZXJzaW9uID0gbGUzMl90b19jcHUoY3BfaGRy LT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwpAQCAtMTAwNywxMCArMTAwMSw5IEBAIHN0YXRpYyBp bnQgZ2Z4X3Y4XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CWFkZXYtPnZpcnQuY2hhaW5lZF9pYl9zdXBwb3J0ID0gZmFsc2U7CiAKIAlzbnByaW50Zihmd19u YW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcmxjLmJpbiIsIGNoaXBfbmFtZSk7Ci0J ZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnJsY19mdywgZndfbmFtZSwgYWRldi0+ ZGV2KTsKKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+ Z2Z4LnJsY19mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwotCWVy ciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngucmxjX2Z3KTsKIAlybGNfaGRyID0g KGNvbnN0IHN0cnVjdCBybGNfZmlybXdhcmVfaGVhZGVyX3YyXzAgKilhZGV2LT5nZngucmxjX2Z3 LT5kYXRhOwogCWFkZXYtPmdmeC5ybGNfZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KHJsY19oZHIt PmhlYWRlci51Y29kZV92ZXJzaW9uKTsKIAlhZGV2LT5nZngucmxjX2ZlYXR1cmVfdmVyc2lvbiA9 IGxlMzJfdG9fY3B1KHJsY19oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7CkBAIC0xMDU1LDQz ICsxMDQ4LDM5IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiAJZm9yIChpID0gMCA7IGkgPCAocmxjX2hkci0+cmVnX2xpc3Rf c2l6ZV9ieXRlcyA+PiAyKTsgaSsrKQogCQlhZGV2LT5nZngucmxjLnJlZ2lzdGVyX3Jlc3RvcmVb aV0gPSBsZTMyX3RvX2NwdSh0bXBbaV0pOwogCisJYWRldi0+Z2Z4Lm1lY19mdyA9IE5VTEw7CiAJ aWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX1BPTEFSSVMxMCAmJiBhZGV2LT5hc2ljX3R5cGUg PD0gQ0hJUF9QT0xBUklTMTIpIHsKIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiYW1kZ3B1LyVzX21lY18yLmJpbiIsIGNoaXBfbmFtZSk7Ci0JCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCWlmIChlcnIg PT0gLUVOT0VOVCkgewotCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1k Z3B1LyVzX21lYy5iaW4iLCBjaGlwX25hbWUpOwotCQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgm YWRldi0+Z2Z4Lm1lY19mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQkJfQotCX0gZWxzZSB7CisJ CWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVj X2Z3LCBmd19uYW1lLCB0cnVlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCX0KKwlpZiAo IWFkZXYtPmdmeC5tZWNfZncpIHsKIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiYW1kZ3B1LyVzX21lYy5iaW4iLCBjaGlwX25hbWUpOwotCQllcnIgPSByZXF1ZXN0X2Zpcm13 YXJlKCZhZGV2LT5nZngubWVjX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOworCQllcnIgPSBhbWRn cHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4Lm1lY19mdywgZndfbmFt ZSwgZmFsc2UpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CiAJfQotCWlmIChlcnIpCi0JCWdv dG8gb3V0OwotCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngubWVjX2Z3KTsK LQlpZiAoZXJyKQotCQlnb3RvIG91dDsKIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJt d2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5tZWNfZnctPmRhdGE7CiAJYWRldi0+Z2Z4Lm1l Y19md192ZXJzaW9uID0gbGUzMl90b19jcHUoY3BfaGRyLT5oZWFkZXIudWNvZGVfdmVyc2lvbik7 CiAJYWRldi0+Z2Z4Lm1lY19mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVj b2RlX2ZlYXR1cmVfdmVyc2lvbik7CiAKIAlpZiAoKGFkZXYtPmFzaWNfdHlwZSAhPSBDSElQX1NU T05FWSkgJiYKIAkgICAgKGFkZXYtPmFzaWNfdHlwZSAhPSBDSElQX1RPUEFaKSkgeworCQlhZGV2 LT5nZngubWVjMl9mdyA9IE5VTEw7CiAJCWlmIChhZGV2LT5hc2ljX3R5cGUgPj0gQ0hJUF9QT0xB UklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENISVBfUE9MQVJJUzEyKSB7CiAJCQlzbnByaW50 Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWVjMl8yLmJpbiIsIGNoaXBf bmFtZSk7Ci0JCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVjMl9mdywgZndf bmFtZSwgYWRldi0+ZGV2KTsKLQkJCWlmIChlcnIgPT0gLUVOT0VOVCkgewotCQkJCXNucHJpbnRm KGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZWMyLmJpbiIsIGNoaXBfbmFt ZSk7Ci0JCQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lYzJfZncsIGZ3X25h bWUsIGFkZXYtPmRldik7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlzbnByaW50Zihmd19uYW1lLCBz aXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWVjMi5iaW4iLCBjaGlwX25hbWUpOwotCQkJZXJy ID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lYzJfZncsIGZ3X25hbWUsIGFkZXYtPmRl dik7CisJCQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+ Z2Z4Lm1lYzJfZncsIGZ3X25hbWUsIHRydWUpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsK IAkJfQotCQlpZiAoIWVycikgewotCQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYt PmdmeC5tZWMyX2Z3KTsKKwkJaWYgKCFhZGV2LT5nZngubWVjMl9mdykgeworCQkJc25wcmludGYo ZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX21lYzIuYmluIiwgY2hpcF9uYW1l KTsKKwkJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5n ZngubWVjMl9mdywgZndfbmFtZSwgdHJ1ZSk7CiAJCQlpZiAoZXJyKQogCQkJCWdvdG8gb3V0Owor CQl9CisJCWlmICghZXJyKSB7CiAJCQljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2Fy ZV9oZWFkZXJfdjFfMCAqKQogCQkJCWFkZXYtPmdmeC5tZWMyX2Z3LT5kYXRhOwogCQkJYWRldi0+ Z2Z4Lm1lYzJfZndfdmVyc2lvbiA9CkBAIC0xMTY2LDkgKzExNTUsNiBAQCBzdGF0aWMgaW50IGdm eF92OF8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiBvdXQ6 CiAJaWYgKGVycikgewotCQlkZXZfZXJyKGFkZXYtPmRldiwKLQkJCSJnZng4OiBGYWlsZWQgdG8g bG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIsCi0JCQlmd19uYW1lKTsKIAkJcmVsZWFzZV9maXJtd2Fy ZShhZGV2LT5nZngucGZwX2Z3KTsKIAkJYWRldi0+Z2Z4LnBmcF9mdyA9IE5VTEw7CiAJCXJlbGVh c2VfZmlybXdhcmUoYWRldi0+Z2Z4Lm1lX2Z3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djlfMC5jCmluZGV4IDlkMzlmZDViMTgyMi4uZGEyYTgyOWQ3NzI1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMKQEAgLTQzMCwxMCArNDMwLDcgQEAgc3RhdGljIGludCBnZnhf djlfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiAKIAlz bnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcGZwLmJpbiIsIGNo aXBfbmFtZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnBmcF9mdywgZndf bmFtZSwgYWRldi0+ZGV2KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVf dWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LnBmcF9mdyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3Jl cXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3X25hbWUsIGZhbHNlKTsK IAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJt d2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5wZnBfZnctPmRhdGE7CkBAIC00NDEsMTAgKzQz OCw3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJYWRldi0+Z2Z4LnBmcF9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2Nw dShjcF9oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7CiAKIAlzbnByaW50Zihmd19uYW1lLCBz aXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWUuYmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSBy ZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0J aWYgKGVycikKLQkJZ290byBvdXQ7Ci0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYt PmdmeC5tZV9mdyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwg JmFkZXYtPmdmeC5tZV9mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0 OwogCWNwX2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRl di0+Z2Z4Lm1lX2Z3LT5kYXRhOwpAQCAtNDUyLDEwICs0NDYsNyBAQCBzdGF0aWMgaW50IGdmeF92 OV8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWFkZXYtPmdm eC5tZV9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2ZlYXR1cmVf dmVyc2lvbik7CiAKIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUv JXNfY2UuYmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5n ZnguY2VfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0J ZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5jZV9mdyk7CisJZXJyID0gYW1k Z3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5jZV9mdywgZndfbmFt ZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCWNwX2hkciA9IChjb25zdCBzdHJ1 Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4LmNlX2Z3LT5kYXRhOwpAQCAt NDYzLDEwICs0NTQsOSBAQCBzdGF0aWMgaW50IGdmeF92OV8wX2luaXRfbWljcm9jb2RlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCWFkZXYtPmdmeC5jZV9mZWF0dXJlX3ZlcnNpb24gPSBs ZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7CiAKIAlzbnByaW50Zihm d19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcmxjLmJpbiIsIGNoaXBfbmFtZSk7 Ci0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnJsY19mdywgZndfbmFtZSwgYWRl di0+ZGV2KTsKKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRl di0+Z2Z4LnJsY19mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0Owot CWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngucmxjX2Z3KTsKIAlybGNfaGRy ID0gKGNvbnN0IHN0cnVjdCBybGNfZmlybXdhcmVfaGVhZGVyX3YyXzAgKilhZGV2LT5nZngucmxj X2Z3LT5kYXRhOwogCWFkZXYtPmdmeC5ybGNfZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KHJsY19o ZHItPmhlYWRlci51Y29kZV92ZXJzaW9uKTsKIAlhZGV2LT5nZngucmxjX2ZlYXR1cmVfdmVyc2lv biA9IGxlMzJfdG9fY3B1KHJsY19oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7CkBAIC01MDks MTAgKzQ5OSw3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiAJCWFkZXYtPmdmeC5ybGMucmVnaXN0ZXJfcmVzdG9yZVtpXSA9 IGxlMzJfdG9fY3B1KHRtcFtpXSk7CiAKIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFt ZSksICJhbWRncHUvJXNfbWVjLmJpbiIsIGNoaXBfbmFtZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJt d2FyZSgmYWRldi0+Z2Z4Lm1lY19mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQlpZiAoZXJyKQot CQlnb3RvIG91dDsKLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4Lm1lY19m dyk7CisJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdm eC5tZWNfZncsIGZ3X25hbWUsIGZhbHNlKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAljcF9o ZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5t ZWNfZnctPmRhdGE7CkBAIC01MjEsMjAgKzUwOCwxNyBAQCBzdGF0aWMgaW50IGdmeF92OV8wX2lu aXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiAKIAlzbnByaW50Zihm d19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWVjMi5iaW4iLCBjaGlwX25hbWUp OwotCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZWMyX2Z3LCBmd19uYW1lLCBh ZGV2LT5kZXYpOwotCWlmICghZXJyKSB7Ci0JCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShh ZGV2LT5nZngubWVjMl9mdyk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKKwllcnIgPSBhbWRn cHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4Lm1lYzJfZncsIGZ3X25h bWUsIHRydWUpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJaWYgKGFkZXYtPmdmeC5tZWMy X2Z3KSB7CiAJCWNwX2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8w ICopCiAJCWFkZXYtPmdmeC5tZWMyX2Z3LT5kYXRhOwogCQlhZGV2LT5nZngubWVjMl9md192ZXJz aW9uID0KIAkJbGUzMl90b19jcHUoY3BfaGRyLT5oZWFkZXIudWNvZGVfdmVyc2lvbik7CiAJCWFk ZXYtPmdmeC5tZWMyX2ZlYXR1cmVfdmVyc2lvbiA9CiAJCWxlMzJfdG9fY3B1KGNwX2hkci0+dWNv ZGVfZmVhdHVyZV92ZXJzaW9uKTsKLQl9IGVsc2UgewotCQllcnIgPSAwOwotCQlhZGV2LT5nZngu bWVjMl9mdyA9IE5VTEw7CiAJfQogCiAJaWYgKGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSA9PSBB TURHUFVfRldfTE9BRF9QU1ApIHsKQEAgLTU5OSw5ICs1ODMsNiBAQCBzdGF0aWMgaW50IGdmeF92 OV8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiBvdXQ6CiAJ aWYgKGVycikgewotCQlkZXZfZXJyKGFkZXYtPmRldiwKLQkJCSJnZng5OiBGYWlsZWQgdG8gbG9h ZCBmaXJtd2FyZSBcIiVzXCJcbiIsCi0JCQlmd19uYW1lKTsKIAkJcmVsZWFzZV9maXJtd2FyZShh ZGV2LT5nZngucGZwX2Z3KTsKIAkJYWRldi0+Z2Z4LnBmcF9mdyA9IE5VTEw7CiAJCXJlbGVhc2Vf ZmlybXdhcmUoYWRldi0+Z2Z4Lm1lX2Z3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192Nl8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZf MC5jCmluZGV4IDU2MTdjZjYyYzU2Ni4uYjQ5YWQyMWY1NDY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2dtY192Nl8wLmMKQEAgLTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgaW50IGdtY192Nl8w X2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IGNo YXIgKmNoaXBfbmFtZTsKIAljaGFyIGZ3X25hbWVbMzBdOwotCWludCBlcnI7CiAJYm9vbCBpc181 OF9mdyA9IGZhbHNlOwogCiAJRFJNX0RFQlVHKCJcbiIpOwpAQCAtMTM3LDIxICsxMzYsNyBAQCBz dGF0aWMgaW50IGdtY192Nl8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vc2k1OF9t Yy5iaW4iKTsKIAllbHNlCiAJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJh ZGVvbi8lc19tYy5iaW4iLCBjaGlwX25hbWUpOwotCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFk ZXYtPmdtYy5mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsK LQotCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nbWMuZncpOwotCi1vdXQ6Ci0J aWYgKGVycikgewotCQlkZXZfZXJyKGFkZXYtPmRldiwKLQkJICAgICAgICJzaV9tYzogRmFpbGVk IHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLAotCQkgICAgICAgZndfbmFtZSk7Ci0JCXJlbGVh c2VfZmlybXdhcmUoYWRldi0+Z21jLmZ3KTsKLQkJYWRldi0+Z21jLmZ3ID0gTlVMTDsKLQl9Ci0J cmV0dXJuIGVycjsKKwlyZXR1cm4gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwg JmFkZXYtPmdtYy5mdywgZndfbmFtZSwgZmFsc2UpOwogfQogCiBzdGF0aWMgaW50IGdtY192Nl8w X21jX2xvYWRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dtY192N18wLmMKaW5kZXggODAwNTRmMzZlNDg3Li43YjAxMGZlZGI2ZWMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192N18wLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYwpAQCAtMTI2LDcgKzEyNiw2IEBA IHN0YXRpYyBpbnQgZ21jX3Y3XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiB7CiAJY29uc3QgY2hhciAqY2hpcF9uYW1lOwogCWNoYXIgZndfbmFtZVszMF07Ci0J aW50IGVycjsKIAogCURSTV9ERUJVRygiXG4iKTsKIApAQCAtMTUyLDE4ICsxNTEsNyBAQCBzdGF0 aWMgaW50IGdtY192N18wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQogCWVsc2UKIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVz X21jLmJpbiIsIGNoaXBfbmFtZSk7CiAKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5n bWMuZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0JZXJy ID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdtYy5mdyk7Ci0KLW91dDoKLQlpZiAoZXJy KSB7Ci0JCXByX2VycigiY2lrX21jOiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIs IGZ3X25hbWUpOwotCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdtYy5mdyk7Ci0JCWFkZXYtPmdt Yy5mdyA9IE5VTEw7Ci0JfQotCXJldHVybiBlcnI7CisJcmV0dXJuIGFtZGdwdV91Y29kZV9yZXF1 ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nbWMuZncsIGZ3X25hbWUsIGZhbHNlKTsKIH0KIAog LyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYwppbmRleCBkNzFkNGNiNjhmOWMu LjM2OTM4NzNhZTY0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21j X3Y4XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jCkBAIC0y MTEsNyArMjExLDYgQEAgc3RhdGljIGludCBnbWNfdjhfMF9pbml0X21pY3JvY29kZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBjaGFyICpjaGlwX25hbWU7CiAJY2hhciBm d19uYW1lWzMwXTsKLQlpbnQgZXJyOwogCiAJRFJNX0RFQlVHKCJcbiIpOwogCkBAIC0yMzYsMTgg KzIzNSw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y4XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJfQogCiAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiYW1kZ3B1LyVzX21jLmJpbiIsIGNoaXBfbmFtZSk7Ci0JZXJyID0gcmVxdWVzdF9maXJtd2Fy ZSgmYWRldi0+Z21jLmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwotCWlmIChlcnIpCi0JCWdvdG8g b3V0OwotCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nbWMuZncpOwotCi1vdXQ6 Ci0JaWYgKGVycikgewotCQlwcl9lcnIoIm1jOiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVz XCJcbiIsIGZ3X25hbWUpOwotCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdtYy5mdyk7Ci0JCWFk ZXYtPmdtYy5mdyA9IE5VTEw7Ci0JfQotCXJldHVybiBlcnI7CisJcmV0dXJuIGFtZGdwdV91Y29k ZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nbWMuZncsIGZ3X25hbWUsIGZhbHNlKTsK IH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEw XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jCmluZGV4IDg4NzNk ODMzYTdmNy4uOWFkM2JmNmViYzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9wc3BfdjEwXzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEw XzAuYwpAQCAtMTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgaW50IHBzcF92MTBfMF9pbml0X21pY3Jv Y29kZShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKIAl9CiAKIAlzbnByaW50Zihmd19uYW1lLCBz aXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfYXNkLmJpbiIsIGNoaXBfbmFtZSk7Ci0JZXJyID0g cmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLmFzZF9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsK KwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+cHNwLmFz ZF9mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCi0JZXJyID0g YW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBzcC5hc2RfZncpOwotCWlmIChlcnIpCi0JCWdv dG8gb3V0OworCQlyZXR1cm4gZXJyOwogCiAJaGRyID0gKGNvbnN0IHN0cnVjdCBwc3BfZmlybXdh cmVfaGVhZGVyX3YxXzAgKilhZGV2LT5wc3AuYXNkX2Z3LT5kYXRhOwogCWFkZXYtPnBzcC5hc2Rf ZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KGhkci0+aGVhZGVyLnVjb2RlX3ZlcnNpb24pOwpAQCAt MTIxLDE2ICsxMTcsNiBAQCBzdGF0aWMgaW50IHBzcF92MTBfMF9pbml0X21pY3JvY29kZShzdHJ1 Y3QgcHNwX2NvbnRleHQgKnBzcCkKIAkJCQlsZTMyX3RvX2NwdShoZHItPmhlYWRlci51Y29kZV9h cnJheV9vZmZzZXRfYnl0ZXMpOwogCiAJcmV0dXJuIDA7Ci1vdXQ6Ci0JaWYgKGVycikgewotCQlk ZXZfZXJyKGFkZXYtPmRldiwKLQkJCSJwc3AgdjEwLjA6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJl IFwiJXNcIlxuIiwKLQkJCWZ3X25hbWUpOwotCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPnBzcC5h c2RfZncpOwotCQlhZGV2LT5wc3AuYXNkX2Z3ID0gTlVMTDsKLQl9Ci0KLQlyZXR1cm4gZXJyOwog fQogCiBzdGF0aWMgaW50IHBzcF92MTBfMF9wcmVwX2NtZF9idWYoc3RydWN0IGFtZGdwdV9maXJt d2FyZV9pbmZvICp1Y29kZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3BzcF92M18xLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5jCmluZGV4 IDE5NmU3NWRlZjFmMi4uYjkxZjdhZjExOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9wc3BfdjNfMS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Bz cF92M18xLmMKQEAgLTExNiwxMSArMTE2LDcgQEAgc3RhdGljIGludCBwc3BfdjNfMV9pbml0X21p Y3JvY29kZShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKIAl9CiAKIAlzbnByaW50Zihmd19uYW1l LCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfc29zLmJpbiIsIGNoaXBfbmFtZSk7Ci0JZXJy ID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLnNvc19mdywgZndfbmFtZSwgYWRldi0+ZGV2 KTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQotCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0 ZShhZGV2LT5wc3Auc29zX2Z3KTsKKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2Fy ZShhZGV2LCAmYWRldi0+cHNwLnNvc19mdywgZndfbmFtZSwgZmFsc2UpOwogCWlmIChlcnIpCiAJ CWdvdG8gb3V0OwogCkBAIC0xMzYsMTEgKzEzMiw3IEBAIHN0YXRpYyBpbnQgcHNwX3YzXzFfaW5p dF9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCiAJCQkJbGUzMl90b19jcHUoaGRy LT5zb3Nfb2Zmc2V0X2J5dGVzKTsKIAogCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1l KSwgImFtZGdwdS8lc19hc2QuYmluIiwgY2hpcF9uYW1lKTsKLQllcnIgPSByZXF1ZXN0X2Zpcm13 YXJlKCZhZGV2LT5wc3AuYXNkX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwotCWlmIChlcnIpCi0J CWdvdG8gb3V0OwotCi0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBzcC5hc2Rf ZncpOworCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5w c3AuYXNkX2Z3LCBmd19uYW1lLCBmYWxzZSk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKQEAg LTE1NCw5ICsxNDYsNiBAQCBzdGF0aWMgaW50IHBzcF92M18xX2luaXRfbWljcm9jb2RlKHN0cnVj dCBwc3BfY29udGV4dCAqcHNwKQogCXJldHVybiAwOwogb3V0OgogCWlmIChlcnIpIHsKLQkJZGV2 X2VycihhZGV2LT5kZXYsCi0JCQkicHNwIHYzLjE6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwi JXNcIlxuIiwKLQkJCWZ3X25hbWUpOwogCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPnBzcC5zb3Nf ZncpOwogCQlhZGV2LT5wc3Auc29zX2Z3ID0gTlVMTDsKIAkJcmVsZWFzZV9maXJtd2FyZShhZGV2 LT5wc3AuYXNkX2Z3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Nk bWFfdjJfNC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92Ml80LmMKaW5kZXgg YzcxOTBjMzljNGY1Li43MWUyZDgyMmUyNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3NkbWFfdjJfNC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Nk bWFfdjJfNC5jCkBAIC0xNDYsMTAgKzE0Niw3IEBAIHN0YXRpYyBpbnQgc2RtYV92Ml80X2luaXRf bWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJc25wcmludGYoZndfbmFt ZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWEuYmluIiwgY2hpcF9uYW1lKTsKIAkJ ZWxzZQogCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3Nk bWExLmJpbiIsIGNoaXBfbmFtZSk7Ci0JCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnNk bWEuaW5zdGFuY2VbaV0uZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCWlmIChlcnIpCi0JCQln b3RvIG91dDsKLQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnNkbWEuaW5zdGFu Y2VbaV0uZncpOworCQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAm YWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdywgZndfbmFtZSwgZmFsc2UpOwogCQlpZiAoZXJyKQog CQkJZ290byBvdXQ7CiAJCWhkciA9IChjb25zdCBzdHJ1Y3Qgc2RtYV9maXJtd2FyZV9oZWFkZXJf djFfMCAqKWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZnctPmRhdGE7CkBAIC0xNzAsNyArMTY3LDYg QEAgc3RhdGljIGludCBzZG1hX3YyXzRfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAKIG91dDoKIAlpZiAoZXJyKSB7Ci0JCXByX2Vycigic2RtYV92Ml80OiBGYWls ZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIsIGZ3X25hbWUpOwogCQlmb3IgKGkgPSAwOyBp IDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKIAkJCXJlbGVhc2VfZmlybXdhcmUo YWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyk7CiAJCQlhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3 ID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNf MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92M18wLmMKaW5kZXggYmUyMGEz ODdkOTYxLi5kZTMxNWJhZWYzMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjNfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNf MC5jCkBAIC0yOTgsMTAgKzI5OCw3IEBAIHN0YXRpYyBpbnQgc2RtYV92M18wX2luaXRfbWljcm9j b2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJc25wcmludGYoZndfbmFtZSwgc2l6 ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWEuYmluIiwgY2hpcF9uYW1lKTsKIAkJZWxzZQog CQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWExLmJp biIsIGNoaXBfbmFtZSk7Ci0JCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnNkbWEuaW5z dGFuY2VbaV0uZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91 dDsKLQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0u ZncpOworCQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+ c2RtYS5pbnN0YW5jZVtpXS5mdywgZndfbmFtZSwgZmFsc2UpOwogCQlpZiAoZXJyKQogCQkJZ290 byBvdXQ7CiAJCWhkciA9IChjb25zdCBzdHJ1Y3Qgc2RtYV9maXJtd2FyZV9oZWFkZXJfdjFfMCAq KWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZnctPmRhdGE7CkBAIC0zMjEsNyArMzE4LDYgQEAgc3Rh dGljIGludCBzZG1hX3YzXzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiAJfQogb3V0OgogCWlmIChlcnIpIHsKLQkJcHJfZXJyKCJzZG1hX3YzXzA6IEZhaWxlZCB0 byBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwgZndfbmFtZSk7CiAJCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7IGkrKykgewogCQkJcmVsZWFzZV9maXJtd2FyZShhZGV2 LT5zZG1hLmluc3RhbmNlW2ldLmZ3KTsKIAkJCWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncgPSBO VUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwppbmRleCAyYzYxOGExYmUw M2UuLjA3NzZiZjQxMDc4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv c2RtYV92NF8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMK QEAgLTE5NCwxMCArMTk0LDggQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfaW5pdF9taWNyb2NvZGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2Yo ZndfbmFtZSksICJhbWRncHUvJXNfc2RtYS5iaW4iLCBjaGlwX25hbWUpOwogCQllbHNlCiAJCQlz bnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfc2RtYTEuYmluIiwg Y2hpcF9uYW1lKTsKLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+c2RtYS5pbnN0YW5j ZVtpXS5mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKLQkJaWYgKGVycikKLQkJCWdvdG8gb3V0Owot CQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyk7 CisJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5zZG1h Lmluc3RhbmNlW2ldLmZ3LAorCQkJCQkJICAgIGZ3X25hbWUsIGZhbHNlKTsKIAkJaWYgKGVycikK IAkJCWdvdG8gb3V0OwogCQloZHIgPSAoY29uc3Qgc3RydWN0IHNkbWFfZmlybXdhcmVfaGVhZGVy X3YxXzAgKilhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3LT5kYXRhOwpAQCAtMjE5LDcgKzIxNyw2 IEBAIHN0YXRpYyBpbnQgc2RtYV92NF8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogCX0KIG91dDoKIAlpZiAoZXJyKSB7Ci0JCURSTV9FUlJPUigic2RtYV92NF8w OiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCJcbiIsIGZ3X25hbWUpOwogCQlmb3IgKGkg PSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOyBpKyspIHsKIAkJCXJlbGVhc2VfZmly bXdhcmUoYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyk7CiAJCQlhZGV2LT5zZG1hLmluc3RhbmNl W2ldLmZ3ID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Np X2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmMKaW5kZXggYjEyZDdj OWQ0MmEwLi5iZWUyYjBhNWRmNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NpX2RwbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jCkBA IC03NjA1LDcgKzc2MDUsNiBAQCBzdGF0aWMgaW50IHNpX2RwbV9pbml0X21pY3JvY29kZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBjaGFyICpjaGlwX25hbWU7CiAJY2hh ciBmd19uYW1lWzMwXTsKLQlpbnQgZXJyOwogCiAJRFJNX0RFQlVHKCJcbiIpOwogCXN3aXRjaCAo YWRldi0+YXNpY190eXBlKSB7CkBAIC03NjY1LDIwICs3NjY0LDcgQEAgc3RhdGljIGludCBzaV9k cG1faW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJfQogCiAJc25w cmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX3NtYy5iaW4iLCBjaGlw X25hbWUpOwotCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnBtLmZ3LCBmd19uYW1lLCBh ZGV2LT5kZXYpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCWVyciA9IGFtZGdwdV91Y29kZV92 YWxpZGF0ZShhZGV2LT5wbS5mdyk7Ci0KLW91dDoKLQlpZiAoZXJyKSB7Ci0JCURSTV9FUlJPUigi c2lfc21jOiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZS4gZXJyID0gJWRcIiVzXCJcbiIsCi0JCQkg IGVyciwgZndfbmFtZSk7Ci0JCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+cG0uZncpOwotCQlhZGV2 LT5wbS5mdyA9IE5VTEw7Ci0JfQotCXJldHVybiBlcnI7Ci0KKwlyZXR1cm4gYW1kZ3B1X3Vjb2Rl X3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPnBtLmZ3LCBmd19uYW1lLCBmYWxzZSk7CiB9 CiAKIHN0YXRpYyBpbnQgc2lfZHBtX3N3X2luaXQodm9pZCAqaGFuZGxlKQotLSAKMi4xNC4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1h aWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK