From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH 4/6] drm/msm: strip down custom event ioctl's Date: Mon, 16 Apr 2018 11:22:19 -0700 Message-ID: <1523902941-2253-5-git-send-email-jsanka@codeaurora.org> References: <1523902941-2253-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1523902941-2253-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org UmVtb3ZlIGN1c3RvbSBpb2N0bCBzdXBwb3J0IGluIFNETTg0NSB3aGljaCBhbGxvd3MKdXNlciBz cGFjZSB0byByZWdpc3Rlci91bnJlZ2lzdGVyIGZvciBodyBldmVudHMuCgpTaWduZWQtb2ZmLWJ5 OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgfCAyMTggKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCB8 ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgIHwgIDMxIC0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyAgICAgICAgICAgIHwgMjAxIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oICAg ICAgICAgICAgfCAgIDIgLQogNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNDUyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCmluZGV4 IDhlNDY0ZmEuLjM4NzkxOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Ny dGMuYwpAQCAtMzksMzEgKzM5LDYgQEAKICNpbmNsdWRlICJkcHVfY29yZV9wZXJmLmgiCiAjaW5j bHVkZSAiZHB1X3RyYWNlLmgiCiAKLXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyB7Ci0Jc3RydWN0 IGRwdV9pcnFfY2FsbGJhY2sgaXJxOwotCXUzMiBldmVudDsKLQlpbnQgKCpmdW5jKShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIGJvb2wgZW4sCi0JCQlzdHJ1Y3QgZHB1X2lycV9jYWxsYmFjayAqaXJx KTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci19OwotCi1zdHJ1Y3QgZHB1X2NydGNfY3VzdG9t X2V2ZW50cyB7Ci0JdTMyIGV2ZW50OwotCWludCAoKmZ1bmMpKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywgYm9vbCBlbiwKLQkJCXN0cnVjdCBkcHVfaXJxX2NhbGxiYWNrICppcnEpOwotfTsKLQotc3Rh dGljIGludCBkcHVfY3J0Y19wb3dlcl9pbnRlcnJ1cHRfaGFuZGxlcihzdHJ1Y3QgZHJtX2NydGMg KmNydGNfZHJtLAotCWJvb2wgZW4sIHN0cnVjdCBkcHVfaXJxX2NhbGxiYWNrICphZF9pcnEpOwot c3RhdGljIGludCBkcHVfY3J0Y19pZGxlX2ludGVycnVwdF9oYW5kbGVyKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Y19kcm0sCi0JYm9vbCBlbiwgc3RydWN0IGRwdV9pcnFfY2FsbGJhY2sgKmlkbGVfaXJx KTsKLQotc3RhdGljIHN0cnVjdCBkcHVfY3J0Y19jdXN0b21fZXZlbnRzIGN1c3RvbV9ldmVudHNb XSA9IHsKLQl7RFJNX0VWRU5UX0FEX0JBQ0tMSUdIVCwgZHB1X2NwX2FkX2ludGVycnVwdH0sCi0J e0RSTV9FVkVOVF9DUlRDX1BPV0VSLCBkcHVfY3J0Y19wb3dlcl9pbnRlcnJ1cHRfaGFuZGxlcn0s Ci0Je0RSTV9FVkVOVF9JRExFX05PVElGWSwgZHB1X2NydGNfaWRsZV9pbnRlcnJ1cHRfaGFuZGxl cn0KLX07Ci0KIC8qIGxheWVyIG1peGVyIGluZGV4IG9uIGRwdV9jcnRjICovCiAjZGVmaW5lIExF RlRfTUlYRVIgMAogI2RlZmluZSBSSUdIVF9NSVhFUiAxCkBAIC0yNDU1LDkgKzI0MzAsNiBAQCBz dGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZv aWQgKmFyZykKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJc3RydWN0IGRwdV9jcnRj X21peGVyICptOwogCXUzMiBpLCBtaXNyX3N0YXR1czsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwot CXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAqbm9kZSA9IE5VTEw7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIWNydGMpIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwpAQCAtMjQ3OSwx NyArMjQ1MSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVudCh1MzIg ZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQogCQkJZHB1X2VuY29kZXJfdmlydF9yZXN0b3JlKGVuY29k ZXIpOwogCQl9CiAKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZs YWdzKTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmZHB1X2NydGMtPnVzZXJfZXZlbnRf bGlzdCwgbGlzdCkgewotCQkJcmV0ID0gMDsKLQkJCWlmIChub2RlLT5mdW5jKQotCQkJCXJldCA9 IG5vZGUtPmZ1bmMoY3J0YywgdHJ1ZSwgJm5vZGUtPmlycSk7Ci0JCQlpZiAocmV0KQotCQkJCURQ VV9FUlJPUigiJXMgZmFpbGVkIHRvIGVuYWJsZSBldmVudCAleFxuIiwKLQkJCQkJCWRwdV9jcnRj LT5uYW1lLCBub2RlLT5ldmVudCk7Ci0JCX0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHB1 X2NydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCiAJCWRwdV9jcF9jcnRjX3Bvc3RfaXBjKGNydGMp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgKytpKSB7CkBAIC0y NTE0LDE4ICsyNDc1LDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50 KHUzMiBldmVudF90eXBlLCB2b2lkICphcmcpCiAJCQkJCQkJZHB1X2NydGMtPm1pc3JfZGF0YVtp XTsKIAkJfQogCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFn cyk7Ci0JCW5vZGUgPSBOVUxMOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0 Yy0+dXNlcl9ldmVudF9saXN0LCBsaXN0KSB7Ci0JCQlyZXQgPSAwOwotCQkJaWYgKG5vZGUtPmZ1 bmMpCi0JCQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRjLCBmYWxzZSwgJm5vZGUtPmlycSk7Ci0JCQlp ZiAocmV0KQotCQkJCURQVV9FUlJPUigiJXMgZmFpbGVkIHRvIGRpc2FibGUgZXZlbnQgJXhcbiIs Ci0JCQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZlbnQpOwotCQl9Ci0JCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQogCQlkcHVfY3BfY3J0 Y19wcmVfaXBjKGNydGMpOwogCQlicmVhazsKIAljYXNlIERQVV9QT1dFUl9FVkVOVF9QT1NUX0RJ U0FCTEU6CkBAIC0yNTUzLDggKzI1MDIsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19kaXNhYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsK IAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAq cHJpdjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAq bm9kZSA9IE5VTEw7CiAJc3RydWN0IGRybV9ldmVudCBldmVudDsKIAl1MzIgcG93ZXJfb247CiAJ aW50IHJldDsKQEAgLTI2MTQsMTcgKzI1NjEsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19kaXNh YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJYXRvbWljX3NldCgmZHB1X2NydGMtPmZyYW1l X3BlbmRpbmcsIDApOwogCX0KIAotCXNwaW5fbG9ja19pcnFzYXZlKCZkcHVfY3J0Yy0+c3Bpbl9s b2NrLCBmbGFncyk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmZHB1X2NydGMtPnVzZXJf ZXZlbnRfbGlzdCwgbGlzdCkgewotCQlyZXQgPSAwOwotCQlpZiAobm9kZS0+ZnVuYykKLQkJCXJl dCA9IG5vZGUtPmZ1bmMoY3J0YywgZmFsc2UsICZub2RlLT5pcnEpOwotCQlpZiAocmV0KQotCQkJ RFBVX0VSUk9SKCIlcyBmYWlsZWQgdG8gZGlzYWJsZSBldmVudCAleFxuIiwKLQkJCQkJZHB1X2Ny dGMtPm5hbWUsIG5vZGUtPmV2ZW50KTsKLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHB1 X2NydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCiAJZHB1X2NvcmVfcGVyZl9jcnRjX3VwZGF0ZShj cnRjLCAwLCB0cnVlKTsKIAogCWRybV9mb3JfZWFjaF9lbmNvZGVyKGVuY29kZXIsIGNydGMtPmRl dikgewpAQCAtMjY1Niw4ICsyNTkyLDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZW5hYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOwogCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owot CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3RydWN0IGRwdV9jcnRjX2lycV9pbmZvICpub2RlID0g TlVMTDsKIAlzdHJ1Y3QgZHJtX2V2ZW50IGV2ZW50OwogCXUzMiBwb3dlcl9vbjsKIAlpbnQgcmV0 OwpAQCAtMjcwOSwxNyArMjY0Myw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAKIAltdXRleF91bmxvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2sp OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQls aXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0Yy0+dXNlcl9ldmVudF9saXN0LCBsaXN0 KSB7Ci0JCXJldCA9IDA7Ci0JCWlmIChub2RlLT5mdW5jKQotCQkJcmV0ID0gbm9kZS0+ZnVuYyhj cnRjLCB0cnVlLCAmbm9kZS0+aXJxKTsKLQkJaWYgKHJldCkKLQkJCURQVV9FUlJPUigiJXMgZmFp bGVkIHRvIGVuYWJsZSBldmVudCAleFxuIiwKLQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZl bnQpOwotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBm bGFncyk7Ci0KIAlkcHVfY3J0Yy0+cG93ZXJfZXZlbnQgPSBkcHVfcG93ZXJfaGFuZGxlX3JlZ2lz dGVyX2V2ZW50KAogCQkmcHJpdi0+cGhhbmRsZSwKIAkJRFBVX1BPV0VSX0VWRU5UX1BPU1RfRU5B QkxFIHwgRFBVX1BPV0VSX0VWRU5UX1BPU1RfRElTQUJMRSB8CkBAIC0zOTk1LDcgKzM5MTgsNyBA QCBzdHJ1Y3QgZHJtX2NydGMgKmRwdV9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJaW5pdF9jb21wbGV0aW9uKCZkcHVfY3J0Yy0+ZnJh bWVfZG9uZV9jb21wKTsKIAogCUlOSVRfTElTVF9IRUFEKCZkcHVfY3J0Yy0+ZnJhbWVfZXZlbnRf bGlzdCk7Ci0JSU5JVF9MSVNUX0hFQUQoJmRwdV9jcnRjLT51c2VyX2V2ZW50X2xpc3QpOworCiAJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHB1X2NydGMtPmZyYW1lX2V2ZW50cyk7IGkrKykg ewogCQlJTklUX0xJU1RfSEVBRCgmZHB1X2NydGMtPmZyYW1lX2V2ZW50c1tpXS5saXN0KTsKIAkJ bGlzdF9hZGQoJmRwdV9jcnRjLT5mcmFtZV9ldmVudHNbaV0ubGlzdCwKQEAgLTQwMzksMTQyICsz OTYyLDMgQEAgc3RydWN0IGRybV9jcnRjICpkcHVfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCURQVV9ERUJVRygiJXM6IHN1Y2Nlc3Nm dWxseSBpbml0aWFsaXplZCBjcnRjXG4iLCBkcHVfY3J0Yy0+bmFtZSk7CiAJcmV0dXJuIGNydGM7 CiB9Ci0KLXN0YXRpYyBpbnQgX2RwdV9jcnRjX2V2ZW50X2VuYWJsZShzdHJ1Y3QgZHB1X2ttcyAq a21zLAotCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLCB1MzIgZXZlbnQpCi17Ci0Jc3RydWN0 IGRwdV9jcnRjICpjcnRjID0gTlVMTDsKLQlzdHJ1Y3QgZHB1X2NydGNfaXJxX2luZm8gKm5vZGU7 Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwot CWJvb2wgZm91bmQgPSBmYWxzZTsKLQlpbnQgcmV0LCBpID0gMDsKLQotCWNydGMgPSB0b19kcHVf Y3J0YyhjcnRjX2RybSk7Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmNydGMtPnNwaW5fbG9jaywgZmxh Z3MpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJmNydGMtPnVzZXJfZXZlbnRfbGlzdCwg bGlzdCkgewotCQlpZiAobm9kZS0+ZXZlbnQgPT0gZXZlbnQpIHsKLQkJCWZvdW5kID0gdHJ1ZTsK LQkJCWJyZWFrOwotCQl9Ci0JfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNydGMtPnNwaW5f bG9jaywgZmxhZ3MpOwotCi0JLyogZXZlbnQgYWxyZWFkeSBlbmFibGVkICovCi0JaWYgKGZvdW5k KQotCQlyZXR1cm4gMDsKLQotCW5vZGUgPSBOVUxMOwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGN1c3RvbV9ldmVudHMpOyBpKyspIHsKLQkJaWYgKGN1c3RvbV9ldmVudHNbaV0uZXZlbnQg PT0gZXZlbnQgJiYKLQkJCWN1c3RvbV9ldmVudHNbaV0uZnVuYykgewotCQkJbm9kZSA9IGt6YWxs b2Moc2l6ZW9mKCpub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JCQlpZiAoIW5vZGUpCi0JCQkJcmV0dXJu IC1FTk9NRU07Ci0JCQlub2RlLT5ldmVudCA9IGV2ZW50OwotCQkJSU5JVF9MSVNUX0hFQUQoJm5v ZGUtPmxpc3QpOwotCQkJbm9kZS0+ZnVuYyA9IGN1c3RvbV9ldmVudHNbaV0uZnVuYzsKLQkJCW5v ZGUtPmV2ZW50ID0gZXZlbnQ7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCWlmICghbm9kZSkgewot CQlEUFVfRVJST1IoInVuc3VwcG9ydGVkIGV2ZW50ICV4XG4iLCBldmVudCk7Ci0JCXJldHVybiAt RUlOVkFMOwotCX0KLQotCXByaXYgPSBrbXMtPmRldi0+ZGV2X3ByaXZhdGU7Ci0JcmV0ID0gMDsK LQlpZiAoY3J0Y19kcm0tPmVuYWJsZWQpIHsKLQkJZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgm cHJpdi0+cGhhbmRsZSwga21zLT5jb3JlX2NsaWVudCwKLQkJCQl0cnVlKTsKLQkJSU5JVF9MSVNU X0hFQUQoJm5vZGUtPmlycS5saXN0KTsKLQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRjX2RybSwgdHJ1 ZSwgJm5vZGUtPmlycSk7Ci0JCWRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJnByaXYtPnBoYW5k bGUsIGttcy0+Y29yZV9jbGllbnQsCi0JCQkJZmFsc2UpOwotCX0KLQotCWlmICghcmV0KSB7Ci0J CXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQkJbGlzdF9hZGRf dGFpbCgmbm9kZS0+bGlzdCwgJmNydGMtPnVzZXJfZXZlbnRfbGlzdCk7Ci0JCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmNydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCX0gZWxzZSB7Ci0JCWtmcmVl KG5vZGUpOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgX2RwdV9jcnRjX2V2 ZW50X2Rpc2FibGUoc3RydWN0IGRwdV9rbXMgKmttcywKLQkJc3RydWN0IGRybV9jcnRjICpjcnRj X2RybSwgdTMyIGV2ZW50KQotewotCXN0cnVjdCBkcHVfY3J0YyAqY3J0YyA9IE5VTEw7Ci0Jc3Ry dWN0IGRwdV9jcnRjX2lycV9pbmZvICpub2RlID0gTlVMTDsKLQlzdHJ1Y3QgbXNtX2RybV9wcml2 YXRlICpwcml2OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JYm9vbCBmb3VuZCA9IGZhbHNlOwot CWludCByZXQ7Ci0KLQljcnRjID0gdG9fZHB1X2NydGMoY3J0Y19kcm0pOwotCXNwaW5fbG9ja19p cnFzYXZlKCZjcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5v ZGUsICZjcnRjLT51c2VyX2V2ZW50X2xpc3QsIGxpc3QpIHsKLQkJaWYgKG5vZGUtPmV2ZW50ID09 IGV2ZW50KSB7Ci0JCQlsaXN0X2RlbCgmbm9kZS0+bGlzdCk7Ci0JCQlmb3VuZCA9IHRydWU7Ci0J CQlicmVhazsKLQkJfQotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjcnRjLT5zcGluX2xv Y2ssIGZsYWdzKTsKLQotCS8qIGV2ZW50IGFscmVhZHkgZGlzYWJsZWQgKi8KLQlpZiAoIWZvdW5k KQotCQlyZXR1cm4gMDsKLQotCS8qKgotCSAqIGNydGMgaXMgZGlzYWJsZWQgaW50ZXJydXB0cyBh cmUgY2xlYXJlZCByZW1vdmUgZnJvbSB0aGUgbGlzdCwKLQkgKiBubyBuZWVkIHRvIGRpc2FibGUv ZGUtcmVnaXN0ZXIuCi0JICovCi0JaWYgKCFjcnRjX2RybS0+ZW5hYmxlZCkgewotCQlrZnJlZShu b2RlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXByaXYgPSBrbXMtPmRldi0+ZGV2X3ByaXZhdGU7Ci0J ZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwga21zLT5jb3JlX2NsaWVu dCwgdHJ1ZSk7Ci0JcmV0ID0gbm9kZS0+ZnVuYyhjcnRjX2RybSwgZmFsc2UsICZub2RlLT5pcnEp OwotCWRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJnByaXYtPnBoYW5kbGUsIGttcy0+Y29yZV9j bGllbnQsIGZhbHNlKTsKLQlyZXR1cm4gcmV0OwotfQotCi1pbnQgZHB1X2NydGNfcmVnaXN0ZXJf Y3VzdG9tX2V2ZW50KHN0cnVjdCBkcHVfa21zICprbXMsCi0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0 Y19kcm0sIHUzMiBldmVudCwgYm9vbCBlbikKLXsKLQlzdHJ1Y3QgZHB1X2NydGMgKmNydGMgPSBO VUxMOwotCWludCByZXQ7Ci0KLQljcnRjID0gdG9fZHB1X2NydGMoY3J0Y19kcm0pOwotCWlmICgh Y3J0YyB8fCAha21zIHx8ICFrbXMtPmRldikgewotCQlEUk1fRVJST1IoImludmFsaWQgZHB1X2Ny dGMgJXBLIGttcyAlcEsgZGV2ICVwS1xuIiwgY3J0YywKLQkJCWttcywgKChrbXMpID8gKGttcy0+ ZGV2KSA6IE5VTEwpKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JaWYgKGVuKQotCQlyZXQg PSBfZHB1X2NydGNfZXZlbnRfZW5hYmxlKGttcywgY3J0Y19kcm0sIGV2ZW50KTsKLQllbHNlCi0J CXJldCA9IF9kcHVfY3J0Y19ldmVudF9kaXNhYmxlKGttcywgY3J0Y19kcm0sIGV2ZW50KTsKLQot CXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgZHB1X2NydGNfcG93ZXJfaW50ZXJydXB0X2hh bmRsZXIoc3RydWN0IGRybV9jcnRjICpjcnRjX2RybSwKLQlib29sIGVuLCBzdHJ1Y3QgZHB1X2ly cV9jYWxsYmFjayAqaXJxKQotewotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGRwdV9jcnRj X2lkbGVfaW50ZXJydXB0X2hhbmRsZXIoc3RydWN0IGRybV9jcnRjICpjcnRjX2RybSwKLQlib29s IGVuLCBzdHJ1Y3QgZHB1X2lycV9jYWxsYmFjayAqaXJxKQotewotCXJldHVybiAwOwotfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKaW5kZXggZmFkZTY1OC4uYmMwODQx NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCkBAIC0yMjMsNyAr MjIzLDYgQEAgc3RydWN0IGRwdV9jcnRjIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7 CiAJc3RydWN0IGxpc3RfaGVhZCBhZF9kaXJ0eTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGFkX2FjdGl2 ZTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJfZXZlbnRfbGlzdDsKIAogCXN0cnVjdCBtdXRleCBj cnRjX2xvY2s7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwppbmRleCAy YzE4N2U5Li41YjA3Zjc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5j CkBAIC05MCw4ICs5MCw2IEBACiAKIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBt c21fa21zICprbXMpOwogc3RhdGljIGludCBfZHB1X2ttc19tbXVfZGVzdHJveShzdHJ1Y3QgZHB1 X2ttcyAqZHB1X2ttcyk7Ci1zdGF0aWMgaW50IF9kcHVfa21zX3JlZ2lzdGVyX2V2ZW50cyhzdHJ1 Y3QgbXNtX2ttcyAqa21zLAotCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosIHUzMiBldmVu dCwgYm9vbCBlbik7CiBib29sIGRwdV9pc19jdXN0b21fY2xpZW50KHZvaWQpCiB7CiAJcmV0dXJu IGRwdWN1c3RvbTsKQEAgLTE3NDUsNyArMTc0Myw2IEBAIHN0YXRpYyBpbnQgZHB1X2ttc19wbV9y ZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCS5wbV9zdXNwZW5kICAgICAgPSBkcHVfa21zX3Bt X3N1c3BlbmQsCiAJLnBtX3Jlc3VtZSAgICAgICA9IGRwdV9rbXNfcG1fcmVzdW1lLAogCS5kZXN0 cm95ICAgICAgICAgPSBkcHVfa21zX2Rlc3Ryb3ksCi0JLnJlZ2lzdGVyX2V2ZW50cyA9IF9kcHVf a21zX3JlZ2lzdGVyX2V2ZW50cywKIAkuZ2V0X2FkZHJlc3Nfc3BhY2UgPSBfZHB1X2ttc19nZXRf YWRkcmVzc19zcGFjZSwKIAkucG9zdG9wZW4gPSBfZHB1X2ttc19wb3N0X29wZW4sCiB9OwpAQCAt MjE1OSwzMSArMjE1NiwzIEBAIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAlyZXR1cm4gJmRwdV9rbXMtPmJhc2U7CiB9CiAKLXN0YXRpYyBpbnQg X2RwdV9rbXNfcmVnaXN0ZXJfZXZlbnRzKHN0cnVjdCBtc21fa21zICprbXMsCi0JCXN0cnVjdCBk cm1fbW9kZV9vYmplY3QgKm9iaiwgdTMyIGV2ZW50LCBib29sIGVuKQotewotCWludCByZXQgPSAw OwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm4gPSBOVUxMOwotCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gTlVMTDsKLQotCWlmICgh a21zIHx8ICFvYmopIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50IGttcyAlcEsgb2Jq ICVwS1xuIiwga21zLCBvYmopOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlkcHVfa21zID0g dG9fZHB1X2ttcyhrbXMpOwotCXN3aXRjaCAob2JqLT50eXBlKSB7Ci0JY2FzZSBEUk1fTU9ERV9P QkpFQ1RfQ1JUQzoKLQkJY3J0YyA9IG9ial90b19jcnRjKG9iaik7Ci0JCXJldCA9IGRwdV9jcnRj X3JlZ2lzdGVyX2N1c3RvbV9ldmVudChkcHVfa21zLCBjcnRjLCBldmVudCwgZW4pOwotCQlicmVh azsKLQljYXNlIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1I6Ci0JCWNvbm4gPSBvYmpfdG9fY29u bmVjdG9yKG9iaik7Ci0JCXJldCA9IGRwdV9jb25uZWN0b3JfcmVnaXN0ZXJfY3VzdG9tX2V2ZW50 KGRwdV9rbXMsIGNvbm4sIGV2ZW50LAotCQkJCWVuKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJu IHJldDsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggNWIxMmU4Ny4uYTcxMGI2MyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmMKQEAgLTEyMjYsMTgwICsxMjI2LDYgQEAgc3RhdGljIGludCBtc21faW9j dGxfc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShmaWxlLT5kcml2ZXJfcHJpdiwgaWQpOwog fQogCi1zdGF0aWMgaW50IG1zbV9kcm1fb2JqZWN0X3N1cHBvcnRzX2V2ZW50KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBkcm1fbXNtX2V2ZW50X3JlcSAqcmVxLCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCi17Ci0JaW50IHJldCA9IC1FSU5WQUw7Ci0Jc3RydWN0IGRybV9tb2RlX29i amVjdCAqYXJnX29iajsKLQotCWFyZ19vYmogPSBkcm1fbW9kZV9vYmplY3RfZmluZChkZXYsIGZp bGUsIHJlcS0+b2JqZWN0X2lkLCByZXEtPm9iamVjdF90eXBlKTsKLQlpZiAoIWFyZ19vYmopCi0J CXJldHVybiAtRU5PRU5UOwotCi0Jc3dpdGNoIChhcmdfb2JqLT50eXBlKSB7Ci0JY2FzZSBEUk1f TU9ERV9PQkpFQ1RfQ1JUQzoKLQljYXNlIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1I6Ci0JCXJl dCA9IDA7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldCA9IC1FT1BOT1RTVVBQOwotCQlicmVh azsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW50IG1zbV9yZWdpc3Rlcl9ldmVu dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCXN0cnVjdCBkcm1fbXNtX2V2ZW50X3JlcSAqcmVx LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIGJvb2wgZW4pCi17Ci0JaW50IHJldCA9IC1FSU5WQUw7 Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3Ry dWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKLQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICph cmdfb2JqOwotCi0JYXJnX29iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwgZmlsZSwgcmVx LT5vYmplY3RfaWQsIHJlcS0+b2JqZWN0X3R5cGUpOwotCWlmICghYXJnX29iaikKLQkJcmV0dXJu IC1FTk9FTlQ7Ci0KLQlyZXQgPSBrbXMtPmZ1bmNzLT5yZWdpc3Rlcl9ldmVudHMoa21zLCBhcmdf b2JqLCByZXEtPmV2ZW50LCBlbik7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBtc21f ZXZlbnRfY2xpZW50X2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBkcm1f bXNtX2V2ZW50X3JlcSAqcmVxX2V2ZW50LCBib29sIGxvY2tlZCkKLXsKLQlzdHJ1Y3QgbXNtX2Ry bV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1bnNpZ25lZCBsb25nIGZsYWcg PSAwOwotCXN0cnVjdCBtc21fZHJtX2V2ZW50ICpub2RlOwotCWludCBjb3VudCA9IDA7Ci0KLQlp ZiAoIWxvY2tlZCkKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7 Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmcHJpdi0+Y2xpZW50X2V2ZW50X2xpc3QsIGJh c2UubGluaykgewotCQlpZiAobm9kZS0+ZXZlbnQudHlwZSA9PSByZXFfZXZlbnQtPmV2ZW50ICYm Ci0JCQlub2RlLT5pbmZvLm9iamVjdF9pZCA9PSByZXFfZXZlbnQtPm9iamVjdF9pZCkKLQkJCWNv dW50Kys7Ci0JfQotCWlmICghbG9ja2VkKQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYt PmV2ZW50X2xvY2ssIGZsYWcpOwotCi0JcmV0dXJuIGNvdW50OwotfQotCi1zdGF0aWMgaW50IG1z bV9pb2N0bF9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAotCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCi17Ci0Jc3RydWN0IG1zbV9kcm1fcHJp dmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGRybV9tc21fZXZlbnRfcmVx ICpyZXFfZXZlbnQgPSBkYXRhOwotCXN0cnVjdCBtc21fZHJtX2V2ZW50ICpjbGllbnQsICpub2Rl OwotCXVuc2lnbmVkIGxvbmcgZmxhZyA9IDA7Ci0JYm9vbCBkdXBfcmVxdWVzdCA9IGZhbHNlOwot CWludCByZXQgPSAwLCBjb3VudCA9IDA7Ci0KLQlyZXQgPSBtc21fZHJtX29iamVjdF9zdXBwb3J0 c19ldmVudChkZXYsIHJlcV9ldmVudCwgZmlsZSk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1Io InVuc3VwcG9ydGVkIGV2ZW50ICV4IG9iamVjdCAleCBvYmplY3QgaWQgJWRcbiIsCi0JCQlyZXFf ZXZlbnQtPmV2ZW50LCByZXFfZXZlbnQtPm9iamVjdF90eXBlLAotCQkJcmVxX2V2ZW50LT5vYmpl Y3RfaWQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2 ZW50X2xvY2ssIGZsYWcpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJnByaXYtPmNsaWVu dF9ldmVudF9saXN0LCBiYXNlLmxpbmspIHsKLQkJaWYgKG5vZGUtPmJhc2UuZmlsZV9wcml2ICE9 IGZpbGUpCi0JCQljb250aW51ZTsKLQkJaWYgKG5vZGUtPmV2ZW50LnR5cGUgPT0gcmVxX2V2ZW50 LT5ldmVudCAmJgotCQkJbm9kZS0+aW5mby5vYmplY3RfaWQgPT0gcmVxX2V2ZW50LT5vYmplY3Rf aWQpIHsKLQkJCURSTV9ERUJVRygiZHVwbGljYXRlIHJlcXVlc3QgZm9yIGV2ZW50ICV4IG9iaiBp ZCAlZFxuIiwKLQkJCQlub2RlLT5ldmVudC50eXBlLCBub2RlLT5pbmZvLm9iamVjdF9pZCk7Ci0J CQlkdXBfcmVxdWVzdCA9IHRydWU7Ci0JCQlicmVhazsKLQkJfQotCX0KLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwotCi0JaWYgKGR1cF9yZXF1ZXN0KQot CQlyZXR1cm4gLUVBTFJFQURZOwotCi0JY2xpZW50ID0ga3phbGxvYyhzaXplb2YoKmNsaWVudCks IEdGUF9LRVJORUwpOwotCWlmICghY2xpZW50KQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWNsaWVu dC0+YmFzZS5maWxlX3ByaXYgPSBmaWxlOwotCWNsaWVudC0+YmFzZS5ldmVudCA9ICZjbGllbnQt PmV2ZW50OwotCWNsaWVudC0+ZXZlbnQudHlwZSA9IHJlcV9ldmVudC0+ZXZlbnQ7Ci0JbWVtY3B5 KCZjbGllbnQtPmluZm8sIHJlcV9ldmVudCwgc2l6ZW9mKGNsaWVudC0+aW5mbykpOwotCi0JLyog R2V0IHRoZSBjb3VudCBvZiBjbGllbnRzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIGZvciBldmVudC4K LQkgKiBFdmVudCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgZmlyc3QgY2xpZW50LCBmb3Igc3Vic2Vx dWVudCBlbmFibGUKLQkgKiBjYWxscyBhZGQgdG8gY2xpZW50IGxpc3QgYW5kIHJldHVybi4KLQkg Ki8KLQljb3VudCA9IG1zbV9ldmVudF9jbGllbnRfY291bnQoZGV2LCByZXFfZXZlbnQsIGZhbHNl KTsKLQkvKiBBZGQgY3VycmVudCBjbGllbnQgdG8gbGlzdCAqLwotCXNwaW5fbG9ja19pcnFzYXZl KCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwotCWxpc3RfYWRkX3RhaWwoJmNsaWVudC0+YmFzZS5s aW5rLCAmcHJpdi0+Y2xpZW50X2V2ZW50X2xpc3QpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0KLQlpZiAoY291bnQpCi0JCXJldHVybiAwOwotCi0J cmV0ID0gbXNtX3JlZ2lzdGVyX2V2ZW50KGRldiwgcmVxX2V2ZW50LCBmaWxlLCB0cnVlKTsKLQlp ZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSBldmVudCAleCBvYmplY3Qg JXggb2JqZWN0IGlkICVkXG4iLAotCQkJcmVxX2V2ZW50LT5ldmVudCwgcmVxX2V2ZW50LT5vYmpl Y3RfdHlwZSwKLQkJCXJlcV9ldmVudC0+b2JqZWN0X2lkKTsKLQkJc3Bpbl9sb2NrX2lycXNhdmUo JmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JCWxpc3RfZGVsKCZjbGllbnQtPmJhc2UubGluayk7 Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JCWtm cmVlKGNsaWVudCk7Ci0JfQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgbXNtX2lvY3Rs X2RlcmVnaXN0ZXJfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJ CQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCi17Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0 ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGRybV9tc21fZXZlbnRfcmVxICpy ZXFfZXZlbnQgPSBkYXRhOwotCXN0cnVjdCBtc21fZHJtX2V2ZW50ICpjbGllbnQgPSBOVUxMLCAq bm9kZSwgKnRlbXA7Ci0JdW5zaWduZWQgbG9uZyBmbGFnID0gMDsKLQlpbnQgY291bnQgPSAwOwot CWJvb2wgZm91bmQgPSBmYWxzZTsKLQlpbnQgcmV0ID0gMDsKLQotCXJldCA9IG1zbV9kcm1fb2Jq ZWN0X3N1cHBvcnRzX2V2ZW50KGRldiwgcmVxX2V2ZW50LCBmaWxlKTsKLQlpZiAocmV0KSB7Ci0J CURSTV9FUlJPUigidW5zdXBwb3J0ZWQgZXZlbnQgJXggb2JqZWN0ICV4IG9iamVjdCBpZCAlZFxu IiwKLQkJCXJlcV9ldmVudC0+ZXZlbnQsIHJlcV9ldmVudC0+b2JqZWN0X3R5cGUsCi0JCQlyZXFf ZXZlbnQtPm9iamVjdF9pZCk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0Jc3Bpbl9sb2NrX2lycXNh dmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5v ZGUsIHRlbXAsICZwcml2LT5jbGllbnRfZXZlbnRfbGlzdCwKLQkJCWJhc2UubGluaykgewotCQlp ZiAobm9kZS0+ZXZlbnQudHlwZSA9PSByZXFfZXZlbnQtPmV2ZW50ICYmCi0JCSAgICBub2RlLT5p bmZvLm9iamVjdF9pZCA9PSByZXFfZXZlbnQtPm9iamVjdF9pZCAmJgotCQkgICAgbm9kZS0+YmFz ZS5maWxlX3ByaXYgPT0gZmlsZSkgewotCQkJY2xpZW50ID0gbm9kZTsKLQkJCWxpc3RfZGVsKCZj bGllbnQtPmJhc2UubGluayk7Ci0JCQlmb3VuZCA9IHRydWU7Ci0JCQlrZnJlZShjbGllbnQpOwot CQkJYnJlYWs7Ci0JCX0KLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9s b2NrLCBmbGFnKTsKLQotCWlmICghZm91bmQpCi0JCXJldHVybiAtRU5PRU5UOwotCi0JY291bnQg PSBtc21fZXZlbnRfY2xpZW50X2NvdW50KGRldiwgcmVxX2V2ZW50LCBmYWxzZSk7Ci0JaWYgKCFj b3VudCkKLQkJcmV0ID0gbXNtX3JlZ2lzdGVyX2V2ZW50KGRldiwgcmVxX2V2ZW50LCBmaWxlLCBm YWxzZSk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCiB2b2lkIG1zbV9tb2RlX29iamVjdF9ldmVudF9u b3RpZnkoc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqLAogCQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2V2ZW50ICpldmVudCwgdTggKnBheWxvYWQpCiB7CkBAIC0xNDUyLDI5 ICsxMjc4LDYgQEAgdm9pZCBtc21fbW9kZV9vYmplY3RfZXZlbnRfbm90aWZ5KHN0cnVjdCBkcm1f bW9kZV9vYmplY3QgKm9iaiwKIAogc3RhdGljIGludCBtc21fcmVsZWFzZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diA9IGZpbHAtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGZpbGVf cHJpdi0+bWlub3I7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5kZXY7Ci0Jc3Ry dWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1z bV9kcm1fZXZlbnQgKm5vZGUsICp0ZW1wOwotCXUzMiBjb3VudDsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwotCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCB0ZW1wLCAmcHJpdi0+Y2xpZW50X2V2ZW50X2xp c3QsCi0JCQliYXNlLmxpbmspIHsKLQkJaWYgKG5vZGUtPmJhc2UuZmlsZV9wcml2ICE9IGZpbGVf cHJpdikKLQkJCWNvbnRpbnVlOwotCQlsaXN0X2RlbCgmbm9kZS0+YmFzZS5saW5rKTsKLQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0JCWNvdW50ID0g bXNtX2V2ZW50X2NsaWVudF9jb3VudChkZXYsICZub2RlLT5pbmZvLCB0cnVlKTsKLQkJaWYgKCFj b3VudCkKLQkJCW1zbV9yZWdpc3Rlcl9ldmVudChkZXYsICZub2RlLT5pbmZvLCBmaWxlX3ByaXYs IGZhbHNlKTsKLQkJa2ZyZWUobm9kZSk7Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50 X2xvY2ssIGZsYWdzKTsKLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9s b2NrLCBmbGFncyk7Ci0KIAlyZXR1cm4gZHJtX3JlbGVhc2UoaW5vZGUsIGZpbHApOwogfQogCkBA IC0xNTk1LDEwICsxMzk4LDYgQEAgaW50IG1zbV9pb2N0bF9ybWZiMihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogI2lmZGVmIENPTkZJR19EUk1fTVNNX1dSSVRFQkFDSwogCURS TV9JT0NUTF9ERUZfRFJWKERQVV9XQl9DT05GSUcsIGRwdV93Yl9jb25maWcsIERSTV9VTkxPQ0tF RHxEUk1fQVVUSCksCiAjZW5kaWYKLQlEUk1fSU9DVExfREVGX0RSVihNU01fUkVHSVNURVJfRVZF TlQsICBtc21faW9jdGxfcmVnaXN0ZXJfZXZlbnQsCi0JCQkgIERSTV9VTkxPQ0tFRHxEUk1fQ09O VFJPTF9BTExPVyksCi0JRFJNX0lPQ1RMX0RFRl9EUlYoTVNNX0RFUkVHSVNURVJfRVZFTlQsICBt c21faW9jdGxfZGVyZWdpc3Rlcl9ldmVudCwKLQkJCSAgRFJNX1VOTE9DS0VEfERSTV9DT05UUk9M X0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihNU01fUk1GQjIsIG1zbV9pb2N0bF9ybWZiMiwK IAkJCSAgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIH07CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2tt cy5oCmluZGV4IDI1ODAwYzAuLjBhZTFkZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCkBAIC05NCw4 ICs5NCw2IEBAIHN0cnVjdCBtc21fa21zX2Z1bmNzIHsKIAl2b2lkICgqcHJlY2xvc2UpKHN0cnVj dCBtc21fa21zICprbXMsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiAJdm9pZCAoKnBvc3RjbG9z ZSkoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9maWxlICpmaWxlKTsKIAl2b2lkICgq bGFzdGNsb3NlKShzdHJ1Y3QgbXNtX2ttcyAqa21zKTsKLQlpbnQgKCpyZWdpc3Rlcl9ldmVudHMp KHN0cnVjdCBtc21fa21zICprbXMsCi0JCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosIHUz MiBldmVudCwgYm9vbCBlbik7CiAJdm9pZCAoKnNldF9lbmNvZGVyX21vZGUpKHN0cnVjdCBtc21f a21zICprbXMsCiAJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgYm9vbCBj bWRfbW9kZSk7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBt ZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFi b3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVl ZHJlbm8K