From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v3 4/6] drm/msm: strip down custom event ioctl's Date: Fri, 25 May 2018 14:26:05 -0700 Message-ID: <1527283567-6546-5-git-send-email-jsanka@codeaurora.org> References: <1527283567-6546-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: <1527283567-6546-1-git-send-email-jsanka@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: hoegsberg@google.com, Rajesh Yadav List-Id: linux-arm-msm@vger.kernel.org UmVtb3ZlIGN1c3RvbSBpb2N0bCBzdXBwb3J0IGluIFNETTg0NSB3aGljaCBhbGxvd3MKdXNlciBz cGFjZSB0byByZWdpc3Rlci91bnJlZ2lzdGVyIGZvciBodyBldmVudHMuCgpjaGFuZ2VzIGluIHYy OgoJLSBub25lCmNoYW5nZXMgaW4gdjM6CgktIG5vbmUKClJldmlld2VkLWJ5OiBTZWFuIFBhdWwg PHNlYW5wYXVsQGNocm9taXVtLm9yZz4KU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4g PGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1 bEBjaHJvbWl1bS5vcmc+ClNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8cnlhZGF2QGNvZGVh dXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMg fCAyMTggKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuaCB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfa21zLmMgIHwgIDMxIC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu YyAgICAgICAgICAgIHwgMjAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2ttcy5oICAgICAgICAgICAgfCAgIDIgLQogNSBmaWxlcyBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgNDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY3J0Yy5jCmluZGV4IGQ1NzFhZjIuLmMwZTgwMzUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwpAQCAtMzksMzEgKzM5LDYgQEAKICNpbmNsdWRl ICJkcHVfY29yZV9wZXJmLmgiCiAjaW5jbHVkZSAiZHB1X3RyYWNlLmgiCiAKLXN0cnVjdCBkcHVf Y3J0Y19pcnFfaW5mbyB7Ci0Jc3RydWN0IGRwdV9pcnFfY2FsbGJhY2sgaXJxOwotCXUzMiBldmVu dDsKLQlpbnQgKCpmdW5jKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW4sCi0JCQlzdHJ1 Y3QgZHB1X2lycV9jYWxsYmFjayAqaXJxKTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci19Owot Ci1zdHJ1Y3QgZHB1X2NydGNfY3VzdG9tX2V2ZW50cyB7Ci0JdTMyIGV2ZW50OwotCWludCAoKmZ1 bmMpKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbiwKLQkJCXN0cnVjdCBkcHVfaXJxX2Nh bGxiYWNrICppcnEpOwotfTsKLQotc3RhdGljIGludCBkcHVfY3J0Y19wb3dlcl9pbnRlcnJ1cHRf aGFuZGxlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLAotCWJvb2wgZW4sIHN0cnVjdCBkcHVf aXJxX2NhbGxiYWNrICphZF9pcnEpOwotc3RhdGljIGludCBkcHVfY3J0Y19pZGxlX2ludGVycnVw dF9oYW5kbGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0Y19kcm0sCi0JYm9vbCBlbiwgc3RydWN0IGRw dV9pcnFfY2FsbGJhY2sgKmlkbGVfaXJxKTsKLQotc3RhdGljIHN0cnVjdCBkcHVfY3J0Y19jdXN0 b21fZXZlbnRzIGN1c3RvbV9ldmVudHNbXSA9IHsKLQl7RFJNX0VWRU5UX0FEX0JBQ0tMSUdIVCwg ZHB1X2NwX2FkX2ludGVycnVwdH0sCi0Je0RSTV9FVkVOVF9DUlRDX1BPV0VSLCBkcHVfY3J0Y19w b3dlcl9pbnRlcnJ1cHRfaGFuZGxlcn0sCi0Je0RSTV9FVkVOVF9JRExFX05PVElGWSwgZHB1X2Ny dGNfaWRsZV9pbnRlcnJ1cHRfaGFuZGxlcn0KLX07Ci0KIC8qIGxheWVyIG1peGVyIGluZGV4IG9u IGRwdV9jcnRjICovCiAjZGVmaW5lIExFRlRfTUlYRVIgMAogI2RlZmluZSBSSUdIVF9NSVhFUiAx CkBAIC0yNDU1LDkgKzI0MzAsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJf ZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZvaWQgKmFyZykKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7CiAJc3RydWN0IGRwdV9jcnRjX21peGVyICptOwogCXUzMiBpLCBtaXNyX3N0YXR1czsK LQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAqbm9kZSA9 IE5VTEw7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWNydGMpIHsKIAkJRFBVX0VSUk9SKCJpbnZh bGlkIGNydGNcbiIpOwpAQCAtMjQ3OSwxNyArMjQ1MSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRj X2hhbmRsZV9wb3dlcl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQogCQkJZHB1X2Vu Y29kZXJfdmlydF9yZXN0b3JlKGVuY29kZXIpOwogCQl9CiAKLQkJc3Bpbl9sb2NrX2lycXNhdmUo JmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShub2Rl LCAmZHB1X2NydGMtPnVzZXJfZXZlbnRfbGlzdCwgbGlzdCkgewotCQkJcmV0ID0gMDsKLQkJCWlm IChub2RlLT5mdW5jKQotCQkJCXJldCA9IG5vZGUtPmZ1bmMoY3J0YywgdHJ1ZSwgJm5vZGUtPmly cSk7Ci0JCQlpZiAocmV0KQotCQkJCURQVV9FUlJPUigiJXMgZmFpbGVkIHRvIGVuYWJsZSBldmVu dCAleFxuIiwKLQkJCQkJCWRwdV9jcnRjLT5uYW1lLCBub2RlLT5ldmVudCk7Ci0JCX0KLQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZHB1X2NydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCiAJCWRw dV9jcF9jcnRjX3Bvc3RfaXBjKGNydGMpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+ bnVtX21peGVyczsgKytpKSB7CkBAIC0yNTE0LDE4ICsyNDc1LDYgQEAgc3RhdGljIHZvaWQgZHB1 X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUzMiBldmVudF90eXBlLCB2b2lkICphcmcpCiAJCQkJ CQkJZHB1X2NydGMtPm1pc3JfZGF0YVtpXTsKIAkJfQogCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZk cHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Ci0JCW5vZGUgPSBOVUxMOwotCQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0Yy0+dXNlcl9ldmVudF9saXN0LCBsaXN0KSB7Ci0JCQly ZXQgPSAwOwotCQkJaWYgKG5vZGUtPmZ1bmMpCi0JCQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRjLCBm YWxzZSwgJm5vZGUtPmlycSk7Ci0JCQlpZiAocmV0KQotCQkJCURQVV9FUlJPUigiJXMgZmFpbGVk IHRvIGRpc2FibGUgZXZlbnQgJXhcbiIsCi0JCQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZl bnQpOwotCQl9Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRwdV9jcnRjLT5zcGluX2xvY2ss IGZsYWdzKTsKLQogCQlkcHVfY3BfY3J0Y19wcmVfaXBjKGNydGMpOwogCQlicmVhazsKIAljYXNl IERQVV9QT1dFUl9FVkVOVF9QT1NUX0RJU0FCTEU6CkBAIC0yNTUzLDggKzI1MDIsNiBAQCBzdGF0 aWMgdm9pZCBkcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJ c3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0 cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAqbm9kZSA9IE5VTEw7CiAJc3RydWN0IGRybV9ldmVudCBl dmVudDsKIAl1MzIgcG93ZXJfb247CiAJaW50IHJldDsKQEAgLTI2MTQsMTcgKzI1NjEsNiBAQCBz dGF0aWMgdm9pZCBkcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJYXRv bWljX3NldCgmZHB1X2NydGMtPmZyYW1lX3BlbmRpbmcsIDApOwogCX0KIAotCXNwaW5fbG9ja19p cnFzYXZlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRy eShub2RlLCAmZHB1X2NydGMtPnVzZXJfZXZlbnRfbGlzdCwgbGlzdCkgewotCQlyZXQgPSAwOwot CQlpZiAobm9kZS0+ZnVuYykKLQkJCXJldCA9IG5vZGUtPmZ1bmMoY3J0YywgZmFsc2UsICZub2Rl LT5pcnEpOwotCQlpZiAocmV0KQotCQkJRFBVX0VSUk9SKCIlcyBmYWlsZWQgdG8gZGlzYWJsZSBl dmVudCAleFxuIiwKLQkJCQkJZHB1X2NydGMtPm5hbWUsIG5vZGUtPmV2ZW50KTsKLQl9Ci0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZHB1X2NydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCiAJZHB1 X2NvcmVfcGVyZl9jcnRjX3VwZGF0ZShjcnRjLCAwLCB0cnVlKTsKIAogCWRybV9mb3JfZWFjaF9l bmNvZGVyKGVuY29kZXIsIGNydGMtPmRldikgewpAQCAtMjY1Niw4ICsyNTkyLDYgQEAgc3RhdGlj IHZvaWQgZHB1X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHB1 X2NydGMgKmRwdV9jcnRjOwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3Qg bXNtX2RybV9wcml2YXRlICpwcml2OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3RydWN0IGRw dV9jcnRjX2lycV9pbmZvICpub2RlID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX2V2ZW50IGV2ZW50Owog CXUzMiBwb3dlcl9vbjsKIAlpbnQgcmV0OwpAQCAtMjcwOSwxNyArMjY0Myw2IEBAIHN0YXRpYyB2 b2lkIGRwdV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAltdXRleF91bmxv Y2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9jcnRj LT5zcGluX2xvY2ssIGZsYWdzKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0 Yy0+dXNlcl9ldmVudF9saXN0LCBsaXN0KSB7Ci0JCXJldCA9IDA7Ci0JCWlmIChub2RlLT5mdW5j KQotCQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRjLCB0cnVlLCAmbm9kZS0+aXJxKTsKLQkJaWYgKHJl dCkKLQkJCURQVV9FUlJPUigiJXMgZmFpbGVkIHRvIGVuYWJsZSBldmVudCAleFxuIiwKLQkJCQlk cHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZlbnQpOwotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Ci0KIAlkcHVfY3J0Yy0+cG93ZXJfZXZlbnQg PSBkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50KAogCQkmcHJpdi0+cGhhbmRsZSwKIAkJ RFBVX1BPV0VSX0VWRU5UX1BPU1RfRU5BQkxFIHwgRFBVX1BPV0VSX0VWRU5UX1BPU1RfRElTQUJM RSB8CkBAIC0zOTgzLDcgKzM5MDYsNyBAQCBzdHJ1Y3QgZHJtX2NydGMgKmRwdV9jcnRjX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJaW5pdF9j b21wbGV0aW9uKCZkcHVfY3J0Yy0+ZnJhbWVfZG9uZV9jb21wKTsKIAogCUlOSVRfTElTVF9IRUFE KCZkcHVfY3J0Yy0+ZnJhbWVfZXZlbnRfbGlzdCk7Ci0JSU5JVF9MSVNUX0hFQUQoJmRwdV9jcnRj LT51c2VyX2V2ZW50X2xpc3QpOworCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHB1X2Ny dGMtPmZyYW1lX2V2ZW50cyk7IGkrKykgewogCQlJTklUX0xJU1RfSEVBRCgmZHB1X2NydGMtPmZy YW1lX2V2ZW50c1tpXS5saXN0KTsKIAkJbGlzdF9hZGQoJmRwdV9jcnRjLT5mcmFtZV9ldmVudHNb aV0ubGlzdCwKQEAgLTQwMjcsMTQyICszOTUwLDMgQEAgc3RydWN0IGRybV9jcnRjICpkcHVfY3J0 Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQog CURQVV9ERUJVRygiJXM6IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBjcnRjXG4iLCBkcHVfY3J0 Yy0+bmFtZSk7CiAJcmV0dXJuIGNydGM7CiB9Ci0KLXN0YXRpYyBpbnQgX2RwdV9jcnRjX2V2ZW50 X2VuYWJsZShzdHJ1Y3QgZHB1X2ttcyAqa21zLAotCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJt LCB1MzIgZXZlbnQpCi17Ci0Jc3RydWN0IGRwdV9jcnRjICpjcnRjID0gTlVMTDsKLQlzdHJ1Y3Qg ZHB1X2NydGNfaXJxX2luZm8gKm5vZGU7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsK LQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWJvb2wgZm91bmQgPSBmYWxzZTsKLQlpbnQgcmV0LCBp ID0gMDsKLQotCWNydGMgPSB0b19kcHVfY3J0YyhjcnRjX2RybSk7Ci0Jc3Bpbl9sb2NrX2lycXNh dmUoJmNydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwg JmNydGMtPnVzZXJfZXZlbnRfbGlzdCwgbGlzdCkgewotCQlpZiAobm9kZS0+ZXZlbnQgPT0gZXZl bnQpIHsKLQkJCWZvdW5kID0gdHJ1ZTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmNydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwotCi0JLyogZXZlbnQgYWxyZWFk eSBlbmFibGVkICovCi0JaWYgKGZvdW5kKQotCQlyZXR1cm4gMDsKLQotCW5vZGUgPSBOVUxMOwot CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN1c3RvbV9ldmVudHMpOyBpKyspIHsKLQkJaWYg KGN1c3RvbV9ldmVudHNbaV0uZXZlbnQgPT0gZXZlbnQgJiYKLQkJCWN1c3RvbV9ldmVudHNbaV0u ZnVuYykgewotCQkJbm9kZSA9IGt6YWxsb2Moc2l6ZW9mKCpub2RlKSwgR0ZQX0tFUk5FTCk7Ci0J CQlpZiAoIW5vZGUpCi0JCQkJcmV0dXJuIC1FTk9NRU07Ci0JCQlub2RlLT5ldmVudCA9IGV2ZW50 OwotCQkJSU5JVF9MSVNUX0hFQUQoJm5vZGUtPmxpc3QpOwotCQkJbm9kZS0+ZnVuYyA9IGN1c3Rv bV9ldmVudHNbaV0uZnVuYzsKLQkJCW5vZGUtPmV2ZW50ID0gZXZlbnQ7Ci0JCQlicmVhazsKLQkJ fQotCX0KLQotCWlmICghbm9kZSkgewotCQlEUFVfRVJST1IoInVuc3VwcG9ydGVkIGV2ZW50ICV4 XG4iLCBldmVudCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXByaXYgPSBrbXMtPmRldi0+ ZGV2X3ByaXZhdGU7Ci0JcmV0ID0gMDsKLQlpZiAoY3J0Y19kcm0tPmVuYWJsZWQpIHsKLQkJZHB1 X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwga21zLT5jb3JlX2NsaWVudCwK LQkJCQl0cnVlKTsKLQkJSU5JVF9MSVNUX0hFQUQoJm5vZGUtPmlycS5saXN0KTsKLQkJcmV0ID0g bm9kZS0+ZnVuYyhjcnRjX2RybSwgdHJ1ZSwgJm5vZGUtPmlycSk7Ci0JCWRwdV9wb3dlcl9yZXNv dXJjZV9lbmFibGUoJnByaXYtPnBoYW5kbGUsIGttcy0+Y29yZV9jbGllbnQsCi0JCQkJZmFsc2Up OwotCX0KLQotCWlmICghcmV0KSB7Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5zcGluX2xv Y2ssIGZsYWdzKTsKLQkJbGlzdF9hZGRfdGFpbCgmbm9kZS0+bGlzdCwgJmNydGMtPnVzZXJfZXZl bnRfbGlzdCk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNydGMtPnNwaW5fbG9jaywgZmxh Z3MpOwotCX0gZWxzZSB7Ci0JCWtmcmVlKG5vZGUpOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0K LXN0YXRpYyBpbnQgX2RwdV9jcnRjX2V2ZW50X2Rpc2FibGUoc3RydWN0IGRwdV9rbXMgKmttcywK LQkJc3RydWN0IGRybV9jcnRjICpjcnRjX2RybSwgdTMyIGV2ZW50KQotewotCXN0cnVjdCBkcHVf Y3J0YyAqY3J0YyA9IE5VTEw7Ci0Jc3RydWN0IGRwdV9jcnRjX2lycV9pbmZvICpub2RlID0gTlVM TDsKLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Ci0JYm9vbCBmb3VuZCA9IGZhbHNlOwotCWludCByZXQ7Ci0KLQljcnRjID0gdG9fZHB1X2NydGMo Y3J0Y19kcm0pOwotCXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsK LQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZjcnRjLT51c2VyX2V2ZW50X2xpc3QsIGxpc3Qp IHsKLQkJaWYgKG5vZGUtPmV2ZW50ID09IGV2ZW50KSB7Ci0JCQlsaXN0X2RlbCgmbm9kZS0+bGlz dCk7Ci0JCQlmb3VuZCA9IHRydWU7Ci0JCQlicmVhazsKLQkJfQotCX0KLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZjcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQotCS8qIGV2ZW50IGFscmVhZHkg ZGlzYWJsZWQgKi8KLQlpZiAoIWZvdW5kKQotCQlyZXR1cm4gMDsKLQotCS8qKgotCSAqIGNydGMg aXMgZGlzYWJsZWQgaW50ZXJydXB0cyBhcmUgY2xlYXJlZCByZW1vdmUgZnJvbSB0aGUgbGlzdCwK LQkgKiBubyBuZWVkIHRvIGRpc2FibGUvZGUtcmVnaXN0ZXIuCi0JICovCi0JaWYgKCFjcnRjX2Ry bS0+ZW5hYmxlZCkgewotCQlrZnJlZShub2RlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXByaXYgPSBr bXMtPmRldi0+ZGV2X3ByaXZhdGU7Ci0JZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+ cGhhbmRsZSwga21zLT5jb3JlX2NsaWVudCwgdHJ1ZSk7Ci0JcmV0ID0gbm9kZS0+ZnVuYyhjcnRj X2RybSwgZmFsc2UsICZub2RlLT5pcnEpOwotCWRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJnBy aXYtPnBoYW5kbGUsIGttcy0+Y29yZV9jbGllbnQsIGZhbHNlKTsKLQlyZXR1cm4gcmV0OwotfQot Ci1pbnQgZHB1X2NydGNfcmVnaXN0ZXJfY3VzdG9tX2V2ZW50KHN0cnVjdCBkcHVfa21zICprbXMs Ci0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0Y19kcm0sIHUzMiBldmVudCwgYm9vbCBlbikKLXsKLQlz dHJ1Y3QgZHB1X2NydGMgKmNydGMgPSBOVUxMOwotCWludCByZXQ7Ci0KLQljcnRjID0gdG9fZHB1 X2NydGMoY3J0Y19kcm0pOwotCWlmICghY3J0YyB8fCAha21zIHx8ICFrbXMtPmRldikgewotCQlE Uk1fRVJST1IoImludmFsaWQgZHB1X2NydGMgJXBLIGttcyAlcEsgZGV2ICVwS1xuIiwgY3J0YywK LQkJCWttcywgKChrbXMpID8gKGttcy0+ZGV2KSA6IE5VTEwpKTsKLQkJcmV0dXJuIC1FSU5WQUw7 Ci0JfQotCi0JaWYgKGVuKQotCQlyZXQgPSBfZHB1X2NydGNfZXZlbnRfZW5hYmxlKGttcywgY3J0 Y19kcm0sIGV2ZW50KTsKLQllbHNlCi0JCXJldCA9IF9kcHVfY3J0Y19ldmVudF9kaXNhYmxlKGtt cywgY3J0Y19kcm0sIGV2ZW50KTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgZHB1 X2NydGNfcG93ZXJfaW50ZXJydXB0X2hhbmRsZXIoc3RydWN0IGRybV9jcnRjICpjcnRjX2RybSwK LQlib29sIGVuLCBzdHJ1Y3QgZHB1X2lycV9jYWxsYmFjayAqaXJxKQotewotCXJldHVybiAwOwot fQotCi1zdGF0aWMgaW50IGRwdV9jcnRjX2lkbGVfaW50ZXJydXB0X2hhbmRsZXIoc3RydWN0IGRy bV9jcnRjICpjcnRjX2RybSwKLQlib29sIGVuLCBzdHJ1Y3QgZHB1X2lycV9jYWxsYmFjayAqaXJx KQotewotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmgKaW5kZXggODc1NmIyYi4uOTMwNDA1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY3J0Yy5oCkBAIC0yMjMsNyArMjIzLDYgQEAgc3RydWN0IGRwdV9jcnRjIHsKIAlzdHJ1 Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAJc3RydWN0IGxpc3RfaGVhZCBhZF9kaXJ0eTsKIAlz dHJ1Y3QgbGlzdF9oZWFkIGFkX2FjdGl2ZTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJfZXZlbnRf bGlzdDsKIAogCXN0cnVjdCBtdXRleCBjcnRjX2xvY2s7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuYwppbmRleCA2ZmMwYzA0Li4wZmJlYjc1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCkBAIC05MCw4ICs5MCw2IEBACiAKIHN0YXRpYyBpbnQg ZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpOwogc3RhdGljIGludCBfZHB1X2tt c19tbXVfZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyk7Ci1zdGF0aWMgaW50IF9kcHVf a21zX3JlZ2lzdGVyX2V2ZW50cyhzdHJ1Y3QgbXNtX2ttcyAqa21zLAotCQlzdHJ1Y3QgZHJtX21v ZGVfb2JqZWN0ICpvYmosIHUzMiBldmVudCwgYm9vbCBlbik7CiBib29sIGRwdV9pc19jdXN0b21f Y2xpZW50KHZvaWQpCiB7CiAJcmV0dXJuIGRwdWN1c3RvbTsKQEAgLTE4MTQsNyArMTgxMiw2IEBA IHN0YXRpYyBpbnQgZHB1X2ttc19wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCS5wbV9z dXNwZW5kICAgICAgPSBkcHVfa21zX3BtX3N1c3BlbmQsCiAJLnBtX3Jlc3VtZSAgICAgICA9IGRw dV9rbXNfcG1fcmVzdW1lLAogCS5kZXN0cm95ICAgICAgICAgPSBkcHVfa21zX2Rlc3Ryb3ksCi0J LnJlZ2lzdGVyX2V2ZW50cyA9IF9kcHVfa21zX3JlZ2lzdGVyX2V2ZW50cywKIAkuZ2V0X2FkZHJl c3Nfc3BhY2UgPSBfZHB1X2ttc19nZXRfYWRkcmVzc19zcGFjZSwKIAkucG9zdG9wZW4gPSBfZHB1 X2ttc19wb3N0X29wZW4sCiB9OwpAQCAtMjIyOCwzMSArMjIyNSwzIEBAIHN0cnVjdCBtc21fa21z ICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gJmRwdV9rbXMt PmJhc2U7CiB9CiAKLXN0YXRpYyBpbnQgX2RwdV9rbXNfcmVnaXN0ZXJfZXZlbnRzKHN0cnVjdCBt c21fa21zICprbXMsCi0JCXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaiwgdTMyIGV2ZW50LCBi b29sIGVuKQotewotCWludCByZXQgPSAwOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7 Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBOVUxMOwotCXN0cnVjdCBkcHVfa21zICpk cHVfa21zID0gTlVMTDsKLQotCWlmICgha21zIHx8ICFvYmopIHsKLQkJRFBVX0VSUk9SKCJpbnZh bGlkIGFyZ3VtZW50IGttcyAlcEsgb2JqICVwS1xuIiwga21zLCBvYmopOwotCQlyZXR1cm4gLUVJ TlZBTDsKLQl9Ci0KLQlkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMpOwotCXN3aXRjaCAob2JqLT50 eXBlKSB7Ci0JY2FzZSBEUk1fTU9ERV9PQkpFQ1RfQ1JUQzoKLQkJY3J0YyA9IG9ial90b19jcnRj KG9iaik7Ci0JCXJldCA9IGRwdV9jcnRjX3JlZ2lzdGVyX2N1c3RvbV9ldmVudChkcHVfa21zLCBj cnRjLCBldmVudCwgZW4pOwotCQlicmVhazsKLQljYXNlIERSTV9NT0RFX09CSkVDVF9DT05ORUNU T1I6Ci0JCWNvbm4gPSBvYmpfdG9fY29ubmVjdG9yKG9iaik7Ci0JCXJldCA9IGRwdV9jb25uZWN0 b3JfcmVnaXN0ZXJfY3VzdG9tX2V2ZW50KGRwdV9rbXMsIGNvbm4sIGV2ZW50LAotCQkJCWVuKTsK LQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXgg YmQ0NjZkNS4uYTZmZTNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKQEAgLTExMjgsMTgwICsxMTI4 LDYgQEAgc3RhdGljIGludCBtc21faW9jdGxfc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShm aWxlLT5kcml2ZXJfcHJpdiwgaWQpOwogfQogCi1zdGF0aWMgaW50IG1zbV9kcm1fb2JqZWN0X3N1 cHBvcnRzX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBkcm1fbXNtX2V2 ZW50X3JlcSAqcmVxLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCi17Ci0JaW50IHJldCA9IC1FSU5W QUw7Ci0Jc3RydWN0IGRybV9tb2RlX29iamVjdCAqYXJnX29iajsKLQotCWFyZ19vYmogPSBkcm1f bW9kZV9vYmplY3RfZmluZChkZXYsIGZpbGUsIHJlcS0+b2JqZWN0X2lkLCByZXEtPm9iamVjdF90 eXBlKTsKLQlpZiAoIWFyZ19vYmopCi0JCXJldHVybiAtRU5PRU5UOwotCi0Jc3dpdGNoIChhcmdf b2JqLT50eXBlKSB7Ci0JY2FzZSBEUk1fTU9ERV9PQkpFQ1RfQ1JUQzoKLQljYXNlIERSTV9NT0RF X09CSkVDVF9DT05ORUNUT1I6Ci0JCXJldCA9IDA7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJl dCA9IC1FT1BOT1RTVVBQOwotCQlicmVhazsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0 aWMgaW50IG1zbV9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCXN0cnVj dCBkcm1fbXNtX2V2ZW50X3JlcSAqcmVxLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIGJvb2wgZW4p Ci17Ci0JaW50IHJldCA9IC1FSU5WQUw7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKLQlz dHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICphcmdfb2JqOwotCi0JYXJnX29iaiA9IGRybV9tb2RlX29i amVjdF9maW5kKGRldiwgZmlsZSwgcmVxLT5vYmplY3RfaWQsIHJlcS0+b2JqZWN0X3R5cGUpOwot CWlmICghYXJnX29iaikKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQlyZXQgPSBrbXMtPmZ1bmNzLT5y ZWdpc3Rlcl9ldmVudHMoa21zLCBhcmdfb2JqLCByZXEtPmV2ZW50LCBlbik7Ci0JcmV0dXJuIHJl dDsKLX0KLQotc3RhdGljIGludCBtc21fZXZlbnRfY2xpZW50X2NvdW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCi0JCXN0cnVjdCBkcm1fbXNtX2V2ZW50X3JlcSAqcmVxX2V2ZW50LCBib29sIGxv Y2tlZCkKLXsKLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKLQl1bnNpZ25lZCBsb25nIGZsYWcgPSAwOwotCXN0cnVjdCBtc21fZHJtX2V2ZW50ICpub2Rl OwotCWludCBjb3VudCA9IDA7Ci0KLQlpZiAoIWxvY2tlZCkKLQkJc3Bpbl9sb2NrX2lycXNhdmUo JmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmcHJp di0+Y2xpZW50X2V2ZW50X2xpc3QsIGJhc2UubGluaykgewotCQlpZiAobm9kZS0+ZXZlbnQudHlw ZSA9PSByZXFfZXZlbnQtPmV2ZW50ICYmCi0JCQlub2RlLT5pbmZvLm9iamVjdF9pZCA9PSByZXFf ZXZlbnQtPm9iamVjdF9pZCkKLQkJCWNvdW50Kys7Ci0JfQotCWlmICghbG9ja2VkKQotCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwotCi0JcmV0dXJuIGNv dW50OwotfQotCi1zdGF0aWMgaW50IG1zbV9pb2N0bF9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp Ci17Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0J c3RydWN0IGRybV9tc21fZXZlbnRfcmVxICpyZXFfZXZlbnQgPSBkYXRhOwotCXN0cnVjdCBtc21f ZHJtX2V2ZW50ICpjbGllbnQsICpub2RlOwotCXVuc2lnbmVkIGxvbmcgZmxhZyA9IDA7Ci0JYm9v bCBkdXBfcmVxdWVzdCA9IGZhbHNlOwotCWludCByZXQgPSAwLCBjb3VudCA9IDA7Ci0KLQlyZXQg PSBtc21fZHJtX29iamVjdF9zdXBwb3J0c19ldmVudChkZXYsIHJlcV9ldmVudCwgZmlsZSk7Ci0J aWYgKHJldCkgewotCQlEUk1fRVJST1IoInVuc3VwcG9ydGVkIGV2ZW50ICV4IG9iamVjdCAleCBv YmplY3QgaWQgJWRcbiIsCi0JCQlyZXFfZXZlbnQtPmV2ZW50LCByZXFfZXZlbnQtPm9iamVjdF90 eXBlLAotCQkJcmVxX2V2ZW50LT5vYmplY3RfaWQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXNw aW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwotCWxpc3RfZm9yX2VhY2hf ZW50cnkobm9kZSwgJnByaXYtPmNsaWVudF9ldmVudF9saXN0LCBiYXNlLmxpbmspIHsKLQkJaWYg KG5vZGUtPmJhc2UuZmlsZV9wcml2ICE9IGZpbGUpCi0JCQljb250aW51ZTsKLQkJaWYgKG5vZGUt PmV2ZW50LnR5cGUgPT0gcmVxX2V2ZW50LT5ldmVudCAmJgotCQkJbm9kZS0+aW5mby5vYmplY3Rf aWQgPT0gcmVxX2V2ZW50LT5vYmplY3RfaWQpIHsKLQkJCURSTV9ERUJVRygiZHVwbGljYXRlIHJl cXVlc3QgZm9yIGV2ZW50ICV4IG9iaiBpZCAlZFxuIiwKLQkJCQlub2RlLT5ldmVudC50eXBlLCBu b2RlLT5pbmZvLm9iamVjdF9pZCk7Ci0JCQlkdXBfcmVxdWVzdCA9IHRydWU7Ci0JCQlicmVhazsK LQkJfQotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcp OwotCi0JaWYgKGR1cF9yZXF1ZXN0KQotCQlyZXR1cm4gLUVBTFJFQURZOwotCi0JY2xpZW50ID0g a3phbGxvYyhzaXplb2YoKmNsaWVudCksIEdGUF9LRVJORUwpOwotCWlmICghY2xpZW50KQotCQly ZXR1cm4gLUVOT01FTTsKLQotCWNsaWVudC0+YmFzZS5maWxlX3ByaXYgPSBmaWxlOwotCWNsaWVu dC0+YmFzZS5ldmVudCA9ICZjbGllbnQtPmV2ZW50OwotCWNsaWVudC0+ZXZlbnQudHlwZSA9IHJl cV9ldmVudC0+ZXZlbnQ7Ci0JbWVtY3B5KCZjbGllbnQtPmluZm8sIHJlcV9ldmVudCwgc2l6ZW9m KGNsaWVudC0+aW5mbykpOwotCi0JLyogR2V0IHRoZSBjb3VudCBvZiBjbGllbnRzIHRoYXQgaGF2 ZSByZWdpc3RlcmVkIGZvciBldmVudC4KLQkgKiBFdmVudCBzaG91bGQgYmUgZW5hYmxlZCBmb3Ig Zmlyc3QgY2xpZW50LCBmb3Igc3Vic2VxdWVudCBlbmFibGUKLQkgKiBjYWxscyBhZGQgdG8gY2xp ZW50IGxpc3QgYW5kIHJldHVybi4KLQkgKi8KLQljb3VudCA9IG1zbV9ldmVudF9jbGllbnRfY291 bnQoZGV2LCByZXFfZXZlbnQsIGZhbHNlKTsKLQkvKiBBZGQgY3VycmVudCBjbGllbnQgdG8gbGlz dCAqLwotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwotCWxpc3Rf YWRkX3RhaWwoJmNsaWVudC0+YmFzZS5saW5rLCAmcHJpdi0+Y2xpZW50X2V2ZW50X2xpc3QpOwot CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0KLQlpZiAo Y291bnQpCi0JCXJldHVybiAwOwotCi0JcmV0ID0gbXNtX3JlZ2lzdGVyX2V2ZW50KGRldiwgcmVx X2V2ZW50LCBmaWxlLCB0cnVlKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRv IGVuYWJsZSBldmVudCAleCBvYmplY3QgJXggb2JqZWN0IGlkICVkXG4iLAotCQkJcmVxX2V2ZW50 LT5ldmVudCwgcmVxX2V2ZW50LT5vYmplY3RfdHlwZSwKLQkJCXJlcV9ldmVudC0+b2JqZWN0X2lk KTsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JCWxpc3Rf ZGVsKCZjbGllbnQtPmJhc2UubGluayk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ ZXZlbnRfbG9jaywgZmxhZyk7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JfQotCXJldHVybiByZXQ7Ci19 Ci0KLXN0YXRpYyBpbnQgbXNtX2lvY3RsX2RlcmVnaXN0ZXJfZXZlbnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCi17 Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3Ry dWN0IGRybV9tc21fZXZlbnRfcmVxICpyZXFfZXZlbnQgPSBkYXRhOwotCXN0cnVjdCBtc21fZHJt X2V2ZW50ICpjbGllbnQgPSBOVUxMLCAqbm9kZSwgKnRlbXA7Ci0JdW5zaWduZWQgbG9uZyBmbGFn ID0gMDsKLQlpbnQgY291bnQgPSAwOwotCWJvb2wgZm91bmQgPSBmYWxzZTsKLQlpbnQgcmV0ID0g MDsKLQotCXJldCA9IG1zbV9kcm1fb2JqZWN0X3N1cHBvcnRzX2V2ZW50KGRldiwgcmVxX2V2ZW50 LCBmaWxlKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigidW5zdXBwb3J0ZWQgZXZlbnQgJXgg b2JqZWN0ICV4IG9iamVjdCBpZCAlZFxuIiwKLQkJCXJlcV9ldmVudC0+ZXZlbnQsIHJlcV9ldmVu dC0+b2JqZWN0X3R5cGUsCi0JCQlyZXFfZXZlbnQtPm9iamVjdF9pZCk7Ci0JCXJldHVybiByZXQ7 Ci0JfQotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Ci0JbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5vZGUsIHRlbXAsICZwcml2LT5jbGllbnRfZXZlbnRfbGlz dCwKLQkJCWJhc2UubGluaykgewotCQlpZiAobm9kZS0+ZXZlbnQudHlwZSA9PSByZXFfZXZlbnQt PmV2ZW50ICYmCi0JCSAgICBub2RlLT5pbmZvLm9iamVjdF9pZCA9PSByZXFfZXZlbnQtPm9iamVj dF9pZCAmJgotCQkgICAgbm9kZS0+YmFzZS5maWxlX3ByaXYgPT0gZmlsZSkgewotCQkJY2xpZW50 ID0gbm9kZTsKLQkJCWxpc3RfZGVsKCZjbGllbnQtPmJhc2UubGluayk7Ci0JCQlmb3VuZCA9IHRy dWU7Ci0JCQlrZnJlZShjbGllbnQpOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFnKTsKLQotCWlmICghZm91bmQpCi0JCXJl dHVybiAtRU5PRU5UOwotCi0JY291bnQgPSBtc21fZXZlbnRfY2xpZW50X2NvdW50KGRldiwgcmVx X2V2ZW50LCBmYWxzZSk7Ci0JaWYgKCFjb3VudCkKLQkJcmV0ID0gbXNtX3JlZ2lzdGVyX2V2ZW50 KGRldiwgcmVxX2V2ZW50LCBmaWxlLCBmYWxzZSk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCiB2b2lk IG1zbV9tb2RlX29iamVjdF9ldmVudF9ub3RpZnkoc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2Jq LAogCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2V2ZW50ICpldmVudCwgdTgg KnBheWxvYWQpCiB7CkBAIC0xMzU0LDI5ICsxMTgwLDYgQEAgdm9pZCBtc21fbW9kZV9vYmplY3Rf ZXZlbnRfbm90aWZ5KHN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaiwKIAogc3RhdGljIGludCBt c21fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKLQlz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3Qg ZHJtX21pbm9yICptaW5vciA9IGZpbGVfcHJpdi0+bWlub3I7Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IG1pbm9yLT5kZXY7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9kcm1fZXZlbnQgKm5vZGUsICp0ZW1wOwotCXUzMiBj b3VudDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ ZXZlbnRfbG9jaywgZmxhZ3MpOwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCB0ZW1w LCAmcHJpdi0+Y2xpZW50X2V2ZW50X2xpc3QsCi0JCQliYXNlLmxpbmspIHsKLQkJaWYgKG5vZGUt PmJhc2UuZmlsZV9wcml2ICE9IGZpbGVfcHJpdikKLQkJCWNvbnRpbnVlOwotCQlsaXN0X2RlbCgm bm9kZS0+YmFzZS5saW5rKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9s b2NrLCBmbGFncyk7Ci0JCWNvdW50ID0gbXNtX2V2ZW50X2NsaWVudF9jb3VudChkZXYsICZub2Rl LT5pbmZvLCB0cnVlKTsKLQkJaWYgKCFjb3VudCkKLQkJCW1zbV9yZWdpc3Rlcl9ldmVudChkZXYs ICZub2RlLT5pbmZvLCBmaWxlX3ByaXYsIGZhbHNlKTsKLQkJa2ZyZWUobm9kZSk7Ci0JCXNwaW5f bG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQl9Ci0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0KIAlyZXR1cm4gZHJtX3JlbGVh c2UoaW5vZGUsIGZpbHApOwogfQogCkBAIC0xNDk3LDEwICsxMzAwLDYgQEAgaW50IG1zbV9pb2N0 bF9ybWZiMihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogI2lmZGVmIENPTkZJ R19EUk1fTVNNX1dSSVRFQkFDSwogCURSTV9JT0NUTF9ERUZfRFJWKERQVV9XQl9DT05GSUcsIGRw dV93Yl9jb25maWcsIERSTV9VTkxPQ0tFRHxEUk1fQVVUSCksCiAjZW5kaWYKLQlEUk1fSU9DVExf REVGX0RSVihNU01fUkVHSVNURVJfRVZFTlQsICBtc21faW9jdGxfcmVnaXN0ZXJfZXZlbnQsCi0J CQkgIERSTV9VTkxPQ0tFRHxEUk1fQ09OVFJPTF9BTExPVyksCi0JRFJNX0lPQ1RMX0RFRl9EUlYo TVNNX0RFUkVHSVNURVJfRVZFTlQsICBtc21faW9jdGxfZGVyZWdpc3Rlcl9ldmVudCwKLQkJCSAg RFJNX1VOTE9DS0VEfERSTV9DT05UUk9MX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihNU01f Uk1GQjIsIG1zbV9pb2N0bF9ybWZiMiwKIAkJCSAgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9D S0VEKSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCmluZGV4IDMzZWRiMjUuLjViMDljZTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2ttcy5oCkBAIC05Miw4ICs5Miw2IEBAIHN0cnVjdCBtc21fa21zX2Z1bmNzIHsK IAl2b2lkICgqcHJlY2xvc2UpKHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSk7CiAJdm9pZCAoKnBvc3RjbG9zZSkoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRy bV9maWxlICpmaWxlKTsKIAl2b2lkICgqbGFzdGNsb3NlKShzdHJ1Y3QgbXNtX2ttcyAqa21zKTsK LQlpbnQgKCpyZWdpc3Rlcl9ldmVudHMpKHN0cnVjdCBtc21fa21zICprbXMsCi0JCQlzdHJ1Y3Qg ZHJtX21vZGVfb2JqZWN0ICpvYmosIHUzMiBldmVudCwgYm9vbCBlbik7CiAJdm9pZCAoKnNldF9l bmNvZGVyX21vZGUpKHN0cnVjdCBtc21fa21zICprbXMsCiAJCQkJIHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKIAkJCQkgYm9vbCBjbWRfbW9kZSk7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3Zh dGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAph IExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK