From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 RFC 4/5] drm/i915: make plane helpers fully atomic Date: Thu, 23 Apr 2015 08:19:45 +0200 Message-ID: <55388F01.1050405@linux.intel.com> References: <1429701862-22970-1-git-send-email-maarten.lankhorst@linux.intel.com> <1429701862-22970-5-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 240116E07F for ; Wed, 22 Apr 2015 23:19:49 -0700 (PDT) In-Reply-To: <1429701862-22970-5-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org VGhpcyBraWxscyBvZmYgbW9zdCBvZiB0aGUgdHJhbnNpdGlvbmFsIHNlcnMgYW5kIHVzZXMgYXRv bWljIHBsYW5lIHVwZGF0ZXMKaW4gdGhlIG1vZGVzZXQgcGF0aCB0byB1cGRhdGUgZXZlcnl0aGlu Zy4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYxOgogLSBBZGQgYXRvbWljIGFuZCBz cHJpdGUgcGxhbmVzIGR1cmluZyBhIG1vZGVzZXQgdG9vIHNvIHRoZXkKICAgd2lsbCBiZSByZXN0 b3JlZC4KIC0gRHJvcCBhIFdBUk5fT04oIWNydGNfc3RhdGUtPmVuYWJsZWQpIGluIGF0b21pY19w bGFuZV9jaGVjayBmb3IKICAgY3Vyc29yIGFuZCBzcHJpdGUgcGxhbmVzLiBLZWVwIGl0IGZvciBw cmltYXJ5IGFzIHRoaXMgcHJvYmFibHkKICAgaW5kaWNhdGVzIHdlIG1lc3NlZCB1cCBzb21ld2hl cmUuCgogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgNTggKyst LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCA0ODUgKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyAgICAgICB8ICAzMyArLQogMyBmaWxlcyBjaGFuZ2VkLCAzNjYgaW5zZXJ0aW9ucygrKSwg MjEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKaW5kZXggZjdiZDNiOGZhMjQ1Li5iYTRhYjM5MmI2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jCkBAIC0xMTAsMzIgKzExMCw0MCBAQCBzdGF0aWMgaW50 IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpj cnRjID0gc3RhdGUtPmNydGM7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Ci0Jc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZSk7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9 IHRvX2ludGVsX3BsYW5lX3N0YXRlKHN0YXRlKTsKIAotCWNydGMgPSBjcnRjID8gY3J0YyA6IHBs YW5lLT5jcnRjOwotCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCisJaW50ZWxf c3RhdGUtPnZpc2libGUgPSBmYWxzZTsKIAkvKgogCSAqIEJvdGggY3J0YyBhbmQgcGxhbmUtPmNy dGMgY291bGQgYmUgTlVMTCBpZiB3ZSdyZSB1cGRhdGluZyBhCiAJICogcHJvcGVydHkgd2hpbGUg dGhlIHBsYW5lIGlzIGRpc2FibGVkLiAgV2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZQogCSAqIGFueXRo aW5nIGRyaXZlci1zcGVjaWZpYyB3ZSBuZWVkIHRvIHRlc3QgaW4gdGhhdCBjYXNlLCBzbwogCSAq IGp1c3QgcmV0dXJuIHN1Y2Nlc3MuCiAJICovCi0JaWYgKCFjcnRjKQorCWlmICghY3J0Yykgewor CQlEUk1fREVCVUdfQVRPTUlDKCJJbnZpc2libGU6IG5vIGNydGNcbiIpOwogCQlyZXR1cm4gMDsK Kwl9CisKKwljcnRjX3N0YXRlID0gc3RhdGUtPnN0YXRlLT5jcnRjX3N0YXRlc1tkcm1fY3J0Y19p bmRleChjcnRjKV07CisJaWYgKFdBUk5fT04oIWNydGNfc3RhdGUpKQorCQlyZXR1cm4gMDsKKwor CWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7CisJCURSTV9ERUJVR19BVE9NSUMoIkludmlzaWJs ZTogY3J0YyBvZmZcbiIpOwogCi0JLyogRklYTUU6IHRlbXBvcmFyeSBoYWNrIG5lY2Vzc2FyeSB3 aGlsZSB3ZSBzdGlsbCB1c2UgdGhlIHBsYW5lIHVwZGF0ZQotCSAqIGhlbHBlci4gKi8KLQlpZiAo c3RhdGUtPnN0YXRlKSB7Ci0JCWNydGNfc3RhdGUgPQotCQkJaW50ZWxfYXRvbWljX2dldF9jcnRj X3N0YXRlKHN0YXRlLT5zdGF0ZSwgaW50ZWxfY3J0Yyk7Ci0JCWlmIChJU19FUlIoY3J0Y19zdGF0 ZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKLQl9IGVsc2UgewotCQljcnRjX3N0 YXRlID0gaW50ZWxfY3J0Yy0+Y29uZmlnOworCQkvKgorCQkgKiBQcm9iYWJseSBhbGxvd2VkIGFm dGVyIGNvbnZlcnRpbmcgdG8gYXRvbWljLiBSaWdodAorCQkgKiBub3cgaXQgcHJvYmFibHkgbWVh bnMgd2UgaGF2ZSB0aGUgc3RhdGUgY29uZnVzZWQuCisJCSAqLworCQlJOTE1X1NUQVRFX1dBUk5f T04ocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJCXJldHVybiAwOwor CX0KKworCWlmICghY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CisJCURSTV9ERUJVR19BVE9NSUMoIklu dmlzaWJsZTogZHBtcyBvZmZcbiIpOworCQlyZXR1cm4gMDsKIAl9CiAKIAkvKgpAQCAtMTU1LDI0 ICsxNjMsOCBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkvKiBDbGlwIGFsbCBwbGFuZXMgdG8gQ1JUQyBzaXplLCBvciAweDAg aWYgQ1JUQyBpcyBkaXNhYmxlZCAqLwogCWludGVsX3N0YXRlLT5jbGlwLngxID0gMDsKIAlpbnRl bF9zdGF0ZS0+Y2xpcC55MSA9IDA7Ci0JaW50ZWxfc3RhdGUtPmNsaXAueDIgPQotCQljcnRjX3N0 YXRlLT5iYXNlLmFjdGl2ZSA/IGNydGNfc3RhdGUtPnBpcGVfc3JjX3cgOiAwOwotCWludGVsX3N0 YXRlLT5jbGlwLnkyID0KLQkJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgPyBjcnRjX3N0YXRlLT5w aXBlX3NyY19oIDogMDsKLQotCS8qCi0JICogRGlzYWJsaW5nIGEgcGxhbmUgaXMgYWx3YXlzIG9r YXk7IHdlIGp1c3QgbmVlZCB0byB1cGRhdGUKLQkgKiBmYiB0cmFja2luZyBpbiBhIHNwZWNpYWwg d2F5IHNpbmNlIGNsZWFudXBfZmIoKSB3b24ndAotCSAqIGdldCBjYWxsZWQgYnkgdGhlIHBsYW5l IGhlbHBlcnMuCi0JICovCi0JaWYgKHN0YXRlLT5mYiA9PSBOVUxMICYmIHBsYW5lLT5zdGF0ZS0+ ZmIgIT0gTlVMTCkgewotCQkvKgotCQkgKiAncHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVkIHdoZW4g cGxhbmUgaXMgYmVpbmcgZGlzYWJsZWQsIHNvCi0JCSAqIHdlIG5lZWQgdG8gaGFuZGxlIGZyb250 YnVmZmVyIHRyYWNraW5nIGFzIGEgc3BlY2lhbCBjYXNlCi0JCSAqLwotCQlpbnRlbF9jcnRjLT5h dG9taWMuZGlzYWJsZWRfcGxhbmVzIHw9Ci0JCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUp KTsKLQl9CisJaW50ZWxfc3RhdGUtPmNsaXAueDIgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNf c3RhdGUpLT5waXBlX3NyY193OworCWludGVsX3N0YXRlLT5jbGlwLnkyID0gdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjX3N0YXRlKS0+cGlwZV9zcmNfaDsKIAogCWlmIChzdGF0ZS0+ZmIgJiYgaW50 ZWxfcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsKIAkJaWYgKCEoc3RhdGUt PmZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDJmZmFjYjRjM2ExMi4uYWNiNWM1YmVhNDI4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMDAsMTIgKzEwMCwxNiBAQCBz dGF0aWMgdm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHN0YXRpYyB2 b2lkIGNodl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCSAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOworc3RhdGljIGludCBpbnRl bF9hdG9taWNfY2hlY2tfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2Ny dGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBzdGF0aWMgdm9pZCBpbnRlbF9maW5p c2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHN0YXRpYyB2b2lkIHNrbF9p bml0X3NjYWxlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogc3RhdGlj IHZvaWQgaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7CitzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7CitzdGF0aWMgdm9pZCBpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7CiAKIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZmlu ZF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHBpcGUpCiB7 CkBAIC0zMDU2LDExICszMDYwLDIwIEBAIGludGVsX3BpcGVfc2V0X2Jhc2VfYXRvbWljKHN0cnVj dCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiB7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUgPQorCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmltYXJ5LT5zdGF0 ZSk7CisJYm9vbCB3YXNfdmlzaWJsZSA9IHBsYW5lX3N0YXRlLT52aXNpYmxlOwogCi0JaWYgKGRl dl9wcml2LT5kaXNwbGF5LmRpc2FibGVfZmJjKQorCS8qIE5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93 IGJ5IHRoZSBoZWxwZXIsIGJ1dCBsZXRzIGJlIHRob3JvdWdoLiAqLworCWlmICh3YXNfdmlzaWJs ZSAmJiAhZmIpCisJCWludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoY3J0Yyk7CisJZWxzZSBpZiAo d2FzX3Zpc2libGUgJiYgZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9mYmMpCiAJCWRldl9wcml2 LT5kaXNwbGF5LmRpc2FibGVfZmJjKGRldik7CiAKKwlwbGFuZV9zdGF0ZS0+dmlzaWJsZSA9ICEh ZmI7CiAJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0YywgZmIsIHgs IHkpOworCWlmICghd2FzX3Zpc2libGUgJiYgZmIpCisJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1h cnkoY3J0Yyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTMwODcsMTYgKzMxMDAsMTcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAogCQlkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgTlVMTCk7Ci0JCS8qCi0JCSAqIEZJ WE1FOiBPbmNlIHdlIGhhdmUgcHJvcGVyIHN1cHBvcnQgZm9yIHByaW1hcnkgcGxhbmVzIChhbmQK LQkJICogZGlzYWJsaW5nIHRoZW0gd2l0aG91dCBkaXNhYmxpbmcgdGhlIGVudGlyZSBjcnRjKSBh bGxvdyBhZ2FpbgotCQkgKiBhIE5VTEwgY3J0Yy0+cHJpbWFyeS0+ZmIuCi0JCSAqLwotCQlpZiAo aW50ZWxfY3J0Yy0+YWN0aXZlICYmIGNydGMtPnByaW1hcnktPmZiKQorCisJCWlmIChpbnRlbF9j cnRjLT5hY3RpdmUpIHsKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUg PQorCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKTsKKwogCQkJ ZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0YywKLQkJCQkJCQkgICAg ICAgY3J0Yy0+cHJpbWFyeS0+ZmIsCi0JCQkJCQkJICAgICAgIGNydGMtPngsCi0JCQkJCQkJICAg ICAgIGNydGMtPnkpOworCQkJCQkJCXN0YXRlLT5iYXNlLmZiLAorCQkJCQkJCXN0YXRlLT5zcmMu eDEgPj4gMTYsCisJCQkJCQkJc3RhdGUtPnNyYy55MSA+PiAxNik7CisJCX0KKwogCQlkcm1fbW9k ZXNldF91bmxvY2soJmNydGMtPm11dGV4KTsKIAl9CiB9CkBAIC0xMDY1OSw2ICsxMDY3Myw3IEBA IHN0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGludGVsX2hlbHBlcl9mdW5jcyA9 IHsKIAkubG9hZF9sdXQgPSBpbnRlbF9jcnRjX2xvYWRfbHV0LAogCS5hdG9taWNfYmVnaW4gPSBp bnRlbF9iZWdpbl9jcnRjX2NvbW1pdCwKIAkuYXRvbWljX2ZsdXNoID0gaW50ZWxfZmluaXNoX2Ny dGNfY29tbWl0LAorCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9hdG9taWNfY2hlY2tfY3J0YywKIH07 CiAKIC8qKgpAQCAtMTA3MTMsNyArMTA3MjgsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0 X3VwZGF0ZV9jb25uZWN0b3JfYXRvbWljX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAg Ki8KIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfZml4dXBfc3RhdGUoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cjsKIApAQCAtMTA3MzYsMTEgKzEwNzUwLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9m aXh1cF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCQllbmNvZGVyLT5i YXNlLmNydGMgPSBOVUxMOwogCX0KIAotCWZvcl9lYWNoX2ludGVsX2NydGMoc3RhdGUtPmRldiwg Y3J0YykgewotCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRjLT5iYXNlLnN0YXRlLT5lbmFibGU7 Ci0JCWNydGMtPmNvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7 Ci0JfQotCiAJLyogQ29weSB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gdG8gdGhlIHN0YWdlZCBzdGF0 ZSwgdG8ga2VlcCB0aGUgZmV3CiAJICogcGllY2VzIG9mIGNvZGUgdGhhdCBoYXZlbid0IGJlZW4g Y29udmVydGVkIHlldCBoYXBweSAqLwogCWludGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRw dXRfc3RhdGUoc3RhdGUtPmRldik7CkBAIC0xMTE3MCw2ICsxMTE3OSw4IEBAIGludGVsX21vZGVz ZXRfdXBkYXRlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlpbnQgaTsKIAogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1p dChkZXZfcHJpdik7CiAKQEAgLTExMTg1LDcgKzExMTk2LDI2IEBAIGludGVsX21vZGVzZXRfdXBk YXRlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaW50ZWxfZW5jb2Rl ci0+Y29ubmVjdG9yc19hY3RpdmUgPSBmYWxzZTsKIAl9CiAKLQlkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsKKwkvKgorCSAqIHN3YXAgY3J0YyBhbmQgY29u bmVjdG9yIHN0YXRlLCBwbGFuZSBzdGF0ZSBpcyBhbHJlYWR5IHN3YXBwZWQgaW4KKwkgKiBfX2lu dGVsX3NldF9tb2RlX3VwZGF0ZV9wbGFuZXMuIE9uY2UgLmNydGNfZGlzYWJsZSBpcyBmaXhlZAor CSAqIGFsbCBzdGF0ZSBzaG91bGQgYmUgc3dhcHBlZCBiZWZvcmUgZGlzYWJsaW5nIGNydGMncy4K KwkgKi8KKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBp KSB7CisJCWNydGMtPmVuYWJsZWQgPSBjcnRjX3N0YXRlLT5lbmFibGU7CisJCXRvX2ludGVsX2Ny dGMoY3J0YyktPmNvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7CisKKwkJ Y3J0Yy0+c3RhdGUtPnN0YXRlID0gc3RhdGU7CisJCXN3YXAoc3RhdGUtPmNydGNfc3RhdGVzW2ld LCBjcnRjLT5zdGF0ZSk7CisJCWNydGMtPnN0YXRlLT5zdGF0ZSA9IE5VTEw7CisJfQorCisJZm9y X2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0 ZSwgaSkgeworCQljb25uZWN0b3ItPnN0YXRlLT5zdGF0ZSA9IHN0YXRlOworCQlzd2FwKHN0YXRl LT5jb25uZWN0b3Jfc3RhdGVzW2ldLCBjb25uZWN0b3ItPnN0YXRlKTsKKwkJY29ubmVjdG9yLT5z dGF0ZS0+c3RhdGUgPSBOVUxMOworCX0KKwogCWludGVsX21vZGVzZXRfZml4dXBfc3RhdGUoc3Rh dGUpOwogCiAJLyogRG91YmxlIGNoZWNrIHN0YXRlLiAqLwpAQCAtMTE3NDAsNiArMTE3NzAsMzAg QEAgc3RhdGljIHZvaWQgdXBkYXRlX3NjYW5saW5lX29mZnNldChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIAkJY3J0Yy0+c2NhbmxpbmVfb2Zmc2V0ID0gMTsKIH0KIAorc3RhdGljIGludCBpbnRl bF9tb2Rlc2V0X2NvbXB1dGVfcGxhbmVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK KwkJCQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7CisKKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRl KHN0YXRlLCBjcnRjLT5jdXJzb3IpOworCWlmIChJU19FUlIocGxhbmVfc3RhdGUpKQorCQlyZXR1 cm4gUFRSX0VSUihwbGFuZV9zdGF0ZSk7CisKKwkvKiBBZGQgYWxsIG92ZXJsYXkgcGxhbmVzICov CisJZHJtX2Zvcl9lYWNoX2xlZ2FjeV9wbGFuZShwbGFuZSwgJmNydGMtPmRldi0+bW9kZV9jb25m aWcucGxhbmVfbGlzdCkgeworCQlpZiAodG9faW50ZWxfcGxhbmUocGxhbmUpLT5waXBlID09IHBp cGUpIHsKKwkJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUs IHBsYW5lKTsKKwkJCWlmIChJU19FUlIocGxhbmVfc3RhdGUpKQorCQkJCXJldHVybiBQVFJfRVJS KHBsYW5lX3N0YXRlKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKgogaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK QEAgLTExNzY1LDggKzExODE5LDE0IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCWlmIChJU19FUlIocGlwZV9jb25maWcpKQogCQlyZXR1cm4g cGlwZV9jb25maWc7CiAKKwlpZiAobmVlZHNfbW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpKSB7 CisJCXJldCA9IGludGVsX21vZGVzZXRfY29tcHV0ZV9wbGFuZXMoc3RhdGUsIGNydGMpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwl9CisKIAlpZiAoIXBpcGVfY29uZmln LT5iYXNlLmVuYWJsZSkKLQkJcmV0dXJuIHBpcGVfY29uZmlnOworCQlnb3RvIGRvbmU7CiAKIAly ZXQgPSBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKGNydGMsIHN0YXRlLCBwaXBlX2NvbmZpZyk7 CiAJaWYgKHJldCkKQEAgLTExNzg0LDggKzExODQ0LDggQEAgaW50ZWxfbW9kZXNldF9jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogcmVxdWlyZWQgY2hhbmdlcyBhbmQg Zm9yY2luZyBhIG1vZGUgc2V0LgogCSAqLwogCi0JaW50ZWxfZHVtcF9waXBlX2NvbmZpZyh0b19p bnRlbF9jcnRjKGNydGMpLCBwaXBlX2NvbmZpZywiW21vZGVzZXRdIik7Ci0KKwlpbnRlbF9kdW1w X3BpcGVfY29uZmlnKHRvX2ludGVsX2NydGMoY3J0YyksIHBpcGVfY29uZmlnLCAiW21vZGVzZXRd Iik7Citkb25lOgogCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdGF0ZS0+ ZGV2LCBzdGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKQEAgLTExODY5 LDYgKzExOTI5LDExMyBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGVfY2hlY2tzKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQg X19pbnRlbF9zZXRfbW9kZV91cGRhdGVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJ CQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlpbnQgaTsKKwlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKKworCS8qCisJICogRm9yIG5vdyBvbmx5IHN3YXAgcGxhbmUgc3RhdGUsIHNo b3VsZCBiZSByZXBsYWNlZCB3aXRoIGEKKwkgKiBjYWxsIHRvIGRybV9hdG9taWNfaGVscGVyX3N3 YXBfc3RhdGUKKwkgKi8KKwlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9s ZF9wbGFuZV9zdGF0ZSwgaSkgeworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHN0YXRlLT5w bGFuZXNbaV07CisKKwkJaWYgKCFwbGFuZSkKKwkJCWNvbnRpbnVlOworCisJCXBsYW5lLT5zdGF0 ZS0+c3RhdGUgPSBzdGF0ZTsKKwkJc3dhcChzdGF0ZS0+cGxhbmVfc3RhdGVzW2ldLCBwbGFuZS0+ c3RhdGUpOworCQlwbGFuZS0+c3RhdGUtPnN0YXRlID0gTlVMTDsKKwl9CisKKwlmb3JfZWFjaF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCWNvbnN0IHN0cnVj dCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCisJCWZ1bmNzID0gY3J0Yy0+aGVscGVy X3ByaXZhdGU7CisKKwkJaWYgKCFmdW5jcyB8fCAhZnVuY3MtPmF0b21pY19iZWdpbikKKwkJCWNv bnRpbnVlOworCisJCS8qIFhYWDogSGFjayBiZWNhdXNlIGNydGMgc3RhdGUgaXMgbm90IHN3YXBw ZWQgKi8KKwkJY3J0Yy0+c3RhdGUtPm1vZGVfY2hhbmdlZCA9IGNydGNfc3RhdGUtPm1vZGVfY2hh bmdlZDsKKwkJY3J0Yy0+c3RhdGUtPmFjdGl2ZV9jaGFuZ2VkID0gY3J0Y19zdGF0ZS0+YWN0aXZl X2NoYW5nZWQ7CisKKwkJRFJNX0RFQlVHX0FUT01JQygiQ2FsbGluZyBhdG9taWNfYmVnaW4gb24g Y3J0YyAlaVxuIiwgaSk7CisJCWZ1bmNzLT5hdG9taWNfYmVnaW4oY3J0Yyk7CisJfQorCisJZm9y X2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIGkpIHsK KwkJYm9vbCB2aXNpYmxlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKS0+dmlz aWJsZTsKKwkJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lKTsKKwkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwor CisJCWNydGMgPSBwbGFuZS0+c3RhdGUtPmNydGM7CisJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9w cml2YXRlOworCisJCWlmICghZnVuY3MpCisJCQljb250aW51ZTsKKworCQlEUk1fREVCVUdfQVRP TUlDKCJQbGFuZSAlaSBpcyB2aXNpYmxlOiAlaVxuIiwgaSwgdmlzaWJsZSk7CisKKwkJaWYgKCF2 aXNpYmxlKQorCQkJZnVuY3MtPmF0b21pY191cGRhdGUocGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSk7 CisJCWVsc2UgaWYgKGNydGMtPnN0YXRlLT5tb2RlX2NoYW5nZWQpCisJCQlpbnRlbF9wbGFuZS0+ ZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0YywgdHJ1ZSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBf X2ludGVsX3NldF9tb2RlX2NsZWFudXBfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJ CQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQoreworCWludCBucGxh bmVzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxfcGxhbmU7CisJaW50IG5jcnRjcyA9IGRl di0+bW9kZV9jb25maWcubnVtX2NydGM7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBs YW5lczsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5j czsKKwkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBvbGRfc3RhdGUtPnBsYW5lc1tpXTsKKwkJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlOworCisJCWlmICghcGxhbmUp CisJCQljb250aW51ZTsKKworCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKKworCQlp ZiAoIWZ1bmNzKQorCQkJY29udGludWU7CisKKwkJb2xkX3BsYW5lX3N0YXRlID0gb2xkX3N0YXRl LT5wbGFuZV9zdGF0ZXNbaV07CisKKwkJaWYgKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5z dGF0ZSktPnZpc2libGUpIHsKKwkJCURSTV9ERUJVR19BVE9NSUMoIlBsYW5lICVpIGlzIHVwZGF0 ZWRcbiIsIGkpOworCQkJZnVuY3MtPmF0b21pY191cGRhdGUocGxhbmUsIG9sZF9wbGFuZV9zdGF0 ZSk7CisJCX0gZWxzZQorCQkJRFJNX0RFQlVHX0FUT01JQygiUGxhbmUgJWkgaXMgbGVmdCBhbG9u ZVxuIiwgaSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7CisJCWNvbnN0 IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBvbGRfc3RhdGUtPmNydGNzW2ldOworCisJCWlmICghY3J0YykKKwkJCWNvbnRpbnVl OworCisJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CisKKwkJaWYgKCFmdW5jcyB8fCAh ZnVuY3MtPmF0b21pY19mbHVzaCkKKwkJCWNvbnRpbnVlOworCisJCURSTV9ERUJVR19BVE9NSUMo IkNhbGxpbmcgYXRvbWljX2ZsdXNoIG9uIGNydGMgJWlcbiIsIGkpOworCQlmdW5jcy0+YXRvbWlj X2ZsdXNoKGNydGMpOworCX0KKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYs IG9sZF9zdGF0ZSk7Cit9CisKIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJt X2NydGMgKm1vZGVzZXRfY3J0YywKIAkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcpCiB7CkBAIC0xMTg3Nyw3ICsxMjA0NCw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9z ZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKm1vZGVzZXRfY3J0YywKIAlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCWludCByZXQg PSAwOworCWludCByZXQ7CiAJaW50IGk7CiAKIAlyZXQgPSBfX2ludGVsX3NldF9tb2RlX2NoZWNr cyhzdGF0ZSk7CkBAIC0xMTg4OCwxNCArMTIwNTUsMTQgQEAgc3RhdGljIGludCBfX2ludGVsX3Nl dF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqbW9kZXNldF9jcnRjLAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKKwlfX2ludGVsX3NldF9tb2RlX3VwZGF0ZV9wbGFuZXMoZGV2LCBzdGF0ZSk7CisK IAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CiAJ CWlmICghbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKIAkJCWNvbnRpbnVlOwogCi0JCWludGVs X2NydGNfZGlzYWJsZV9wbGFuZXMoY3J0Yyk7CisJCWludGVsX2NydGNfZHBtc19vdmVybGF5X2Rp c2FibGUodG9faW50ZWxfY3J0YyhjcnRjKSk7CiAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlz YWJsZShjcnRjKTsKLQkJaWYgKCFjcnRjX3N0YXRlLT5lbmFibGUpCi0JCQlkcm1fcGxhbmVfaGVs cGVyX2Rpc2FibGUoY3J0Yy0+cHJpbWFyeSk7CiAJfQogCiAJLyogY3J0Yy0+bW9kZSBpcyBhbHJl YWR5IHVzZWQgYnkgdGhlIC0+bW9kZV9zZXQgY2FsbGJhY2tzLCBoZW5jZSB3ZSBuZWVkCkBAIC0x MTkyNiw4ICsxMjA5Myw2IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJt X2NydGMgKm1vZGVzZXRfY3J0YywKIAogCW1vZGVzZXRfdXBkYXRlX2NydGNfcG93ZXJfZG9tYWlu cyhzdGF0ZSk7CiAKLQlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKGRldiwgc3RhdGUp OwotCiAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwgcGlwZSwgYW5kIGNvbm5lY3Rv cnMgdGhhdCB3ZSBzZXQgdXAuICovCiAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 YywgY3J0Y19zdGF0ZSwgaSkgewogCQlpZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpCkBAIC0xMTkz NSwxMyArMTIxMDAsMTMgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1f Y3J0YyAqbW9kZXNldF9jcnRjLAogCiAJCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQodG9faW50ZWxf Y3J0YyhjcnRjKSk7CiAKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0Yyk7Ci0J CWludGVsX2NydGNfZW5hYmxlX3BsYW5lcyhjcnRjKTsKKwkJaWYgKG5lZWRzX21vZGVzZXQoY3J0 Yy0+c3RhdGUpKQorCQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0Yyk7CiAJfQog Ci0JLyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLworCV9faW50ZWxfc2V0X21vZGVfY2xl YW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKLQlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3Bs YW5lcyhkZXYsIHN0YXRlKTsKKwkvKiBGSVhNRTogYWRkIHN1YnBpeGVsIG9yZGVyICovCiAKIAlk cm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwogCkBAIC0xMjE3MCw2ICsxMjMzNSw3IEBAIGlu dGVsX21vZGVzZXRfc3RhZ2Vfb3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQlyZXR1cm4gcmV0OwogCiAJCWNydGNfc3RhdGUtPmVuYWJsZSA9IGRybV9hdG9taWNfY29ubmVj dG9yc19mb3JfY3J0YyhzdGF0ZSwgY3J0Yyk7CisJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGNydGNf c3RhdGUtPmVuYWJsZTsKIAl9CiAKIAlyZXQgPSBpbnRlbF9tb2Rlc2V0X3NldHVwX3BsYW5lX3N0 YXRlKHN0YXRlLCBzZXQtPmNydGMsIHNldC0+bW9kZSwKQEAgLTEyMTkwLDIwICsxMjM1NiwxMSBA QCBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgYm9vbCBwcmltYXJ5X3BsYW5lX3Zpc2libGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQotewotCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUgPQotCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmltYXJ5LT5zdGF0ZSk7Ci0K LQlyZXR1cm4gcGxhbmVfc3RhdGUtPnZpc2libGU7Ci19Ci0KIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKIHsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2OwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnOwotCWJvb2wgcHJpbWFyeV9wbGFuZV93 YXNfdmlzaWJsZTsKIAlpbnQgcmV0OwogCiAJQlVHX09OKCFzZXQpOwpAQCAtMTIyNDIsMzggKzEy Mzk5LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9tb2Rl X3NldCAqc2V0KQogCiAJaW50ZWxfdXBkYXRlX3BpcGVfc2l6ZSh0b19pbnRlbF9jcnRjKHNldC0+ Y3J0YykpOwogCi0JcHJpbWFyeV9wbGFuZV93YXNfdmlzaWJsZSA9IHByaW1hcnlfcGxhbmVfdmlz aWJsZShzZXQtPmNydGMpOwotCiAJcmV0ID0gaW50ZWxfc2V0X21vZGVfd2l0aF9jb25maWcoc2V0 LT5jcnRjLCBwaXBlX2NvbmZpZyk7Ci0KLQlpZiAocmV0ID09IDAgJiYKLQkgICAgcGlwZV9jb25m aWctPmJhc2UuZW5hYmxlICYmCi0JICAgIHBpcGVfY29uZmlnLT5iYXNlLnBsYW5lc19jaGFuZ2Vk ICYmCi0JICAgICFuZWVkc19tb2Rlc2V0KCZwaXBlX2NvbmZpZy0+YmFzZSkpIHsKLQkJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHNldC0+Y3J0Yyk7Ci0KLQkJ LyoKLQkJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHByaW1hcnkgcGxhbmUgaXMgcmUtZW5h YmxlZCBpZiBpdAotCQkgKiBoYXMgcHJldmlvdXNseSBiZWVuIHR1cm5lZCBvZmYuCi0JCSAqLwot CQlpZiAocmV0ID09IDAgJiYgIXByaW1hcnlfcGxhbmVfd2FzX3Zpc2libGUgJiYKLQkJICAgIHBy aW1hcnlfcGxhbmVfdmlzaWJsZShzZXQtPmNydGMpKSB7Ci0JCQlXQVJOX09OKCFpbnRlbF9jcnRj LT5hY3RpdmUpOwotCQkJaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzZXQtPmNydGMpOwotCQl9 Ci0KLQkJLyoKLQkJICogSW4gdGhlIGZhc3Rib290IGNhc2UgdGhpcyBtYXkgYmUgb3VyIG9ubHkg Y2hlY2sgb2YgdGhlCi0JCSAqIHN0YXRlIGFmdGVyIGJvb3QuICBJdCB3b3VsZCBiZSBiZXR0ZXIg dG8gb25seSBkbyBpdCBvbgotCQkgKiB0aGUgZmlyc3QgdXBkYXRlLCBidXQgd2UgZG9uJ3QgaGF2 ZSBhIG5pY2Ugd2F5IG9mIGRvaW5nIHRoYXQKLQkJICogKGFuZCByZWFsbHksIHNldF9jb25maWcg aXNuJ3QgdXNlZCBtdWNoIGZvciBoaWdoIGZyZXEgcGFnZQotCQkgKiBmbGlwcGluZywgc28gaW5j cmVhc2luZyBpdHMgY29zdCBoZXJlIHNob3VsZG4ndCBiZSBhIGJpZwotCQkgKiBkZWFsKS4KLQkJ ICovCi0JCWlmIChpOTE1LmZhc3Rib290ICYmIHJldCA9PSAwKQotCQkJaW50ZWxfbW9kZXNldF9j aGVja19zdGF0ZShzZXQtPmNydGMtPmRldik7Ci0JfQotCiAJaWYgKHJldCkgewogCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUgb24gW0NSVEM6JWRdLCBlcnIgPSAlZFxuIiwKIAkJ CSAgICAgIHNldC0+Y3J0Yy0+YmFzZS5pZCwgcmV0KTsKQEAgLTEyNDEzLDYgKzEyNTM5LDkgQEAg Ym9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkgICAg cGxhbmUtPnN0YXRlLT5yb3RhdGlvbiAhPSBzdGF0ZS0+cm90YXRpb24pCiAJCXJldHVybiB0cnVl OwogCisJaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0Y193ICE9IHN0YXRlLT5jcnRjX3cpCisJCXJldHVy biB0cnVlOworCiAJcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjUwNyw3NCArMTI2MzYsMjIgQEAg aW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcGxhbmUtPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNy dGM7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CiAJc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKIAlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3Rh dGUtPmRzdDsKIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwogCWNvbnN0IHN0 cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKIAlib29sIGNhbl9wb3NpdGlvbiA9 IGZhbHNlOwotCWludCByZXQ7Ci0KLQljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsK LQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAogCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA5KQogCQljYW5fcG9zaXRpb24gPSB0cnVlOwogCi0JcmV0ID0gZHJtX3BsYW5l X2hlbHBlcl9jaGVja191cGRhdGUocGxhbmUsIGNydGMsIGZiLAotCQkJCQkgICAgc3JjLCBkZXN0 LCBjbGlwLAotCQkJCQkgICAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAotCQkJCQkgICAg RFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAotCQkJCQkgICAgY2FuX3Bvc2l0aW9uLCB0cnVl LAotCQkJCQkgICAgJnN0YXRlLT52aXNpYmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot Ci0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewotCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg Km9sZF9zdGF0ZSA9Ci0JCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwotCi0J CWludGVsX2NydGMtPmF0b21pYy53YWl0X2Zvcl9mbGlwcyA9IHRydWU7Ci0KLQkJLyoKLQkJICog RkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQKLQkJICogcGxh bmVzLCBzbyBkaXNhYmxlIGl0IHdoZW4gcm90YXRpb24gaXMgbm90IDAgYW5kCi0JCSAqIHVwZGF0 ZSBpdCB3aGVuIHJvdGF0aW9uIGlzIHNldCBiYWNrIHRvIDAuCi0JCSAqCi0JCSAqIEZJWE1FOiBU aGlzIGlzIHJlZHVuZGFudCB3aXRoIHRoZSBmYmMgdXBkYXRlIGRvbmUgaW4KLQkJICogdGhlIHBy aW1hcnkgcGxhbmUgZW5hYmxlIGZ1bmN0aW9uIGV4Y2VwdCB0aGF0IHRoYXQKLQkJICogb25lIGlz IGRvbmUgdG9vIGxhdGUuIFdlIGV2ZW50dWFsbHkgbmVlZCB0byB1bmlmeQotCQkgKiB0aGlzLgot CQkgKi8KLQkJaWYgKHN0YXRlLT52aXNpYmxlICYmCi0JCSAgICBJTlRFTF9JTkZPKGRldiktPmdl biA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgotCQkgICAgZGV2X3ByaXYtPmZiYy5jcnRjID09IGlu dGVsX2NydGMgJiYKLQkJICAgIHN0YXRlLT5iYXNlLnJvdGF0aW9uICE9IEJJVChEUk1fUk9UQVRF XzApKSB7Ci0JCQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOwotCQl9Ci0K LQkJaWYgKHN0YXRlLT52aXNpYmxlICYmICFvbGRfc3RhdGUtPnZpc2libGUpIHsKLQkJCS8qCi0J CQkgKiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRlbHkgaWYgdGhlIHBsYW5lCi0JCQkg KiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxhbmUgZW5hYmxlIGlzIGFscmVhZHkKLQkJCSAq IGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZibGFuayA6KAotCQkJICovCi0JCQlpZiAoSVNf QlJPQURXRUxMKGRldikpCi0JCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0gdHJ1 ZTsKLQkJfQotCi0JCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Ci0JCQlJTlRFTF9GUk9O VEJVRkZFUl9QUklNQVJZKGludGVsX2NydGMtPnBpcGUpOwotCi0JCWludGVsX2NydGMtPmF0b21p Yy51cGRhdGVfZmJjID0gdHJ1ZTsKLQotCQlpZiAoaW50ZWxfd21fbmVlZF91cGRhdGUocGxhbmUs ICZzdGF0ZS0+YmFzZSkpCi0JCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gdHJ1ZTsK LQl9Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gZHJtX3BsYW5lX2hlbHBlcl9jaGVja191cGRhdGUo cGxhbmUsIGNydGMsIGZiLAorCQkJCQkgICAgIHNyYywgZGVzdCwgY2xpcCwKKwkJCQkJICAgICBE Uk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCisJCQkJCSAgICAgRFJNX1BMQU5FX0hFTFBFUl9O T19TQ0FMSU5HLAorCQkJCQkgICAgIGNhbl9wb3NpdGlvbiwgdHJ1ZSwKKwkJCQkJICAgICAmc3Rh dGUtPnZpc2libGUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTI2MDAsOCArMTI2NzcsMTAgQEAg aW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkv KiBGSVhNRToga2lsbCB0aGlzIGZhc3Rib290IGhhY2sgKi8KIAkJCWludGVsX3VwZGF0ZV9waXBl X3NpemUoaW50ZWxfY3J0Yyk7CiAKLQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlf cGxhbmUoY3J0YywgcGxhbmUtPmZiLAotCQkJCQkJICAgICAgIGNydGMtPngsIGNydGMtPnkpOwor CQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZShjcnRjLAorCQkJCQkJICAg ICAgIHN0YXRlLT5iYXNlLmZiLAorCQkJCQkJICAgICAgIHN0YXRlLT5zcmMueDEgPj4gMTYsCisJ CQkJCQkgICAgICAgc3RhdGUtPnNyYy55MSA+PiAxNik7CiAJfQogfQogCkBAIC0xMjYxNiw2ICsx MjY5NSwxMjMgQEAgaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIE5V TEwsIDAsIDApOwogfQogCisvKiBUcmFuc2l0aW9uYWwgY2hlY2tpbmcgaGVyZSwgbW9zdGx5IGZv ciBwbGFuZSB1cGRhdGVzICovCitzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVja19jcnRjKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCit7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl ID0gY3J0Y19zdGF0ZS0+c3RhdGU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRl djsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCXVuc2lnbmVkIHBsYW5lX21hc2s7CisJaW50IGksIG5wbGFuZXMgPSBkZXYtPm1vZGVfY29u ZmlnLm51bV90b3RhbF9wbGFuZSwgaWR4OworCWJvb2wgbW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9k ZXNldChjcnRjX3N0YXRlKTsKKwlib29sIGlzX2NydGNfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmFj dGl2ZTsKKwlib29sIHdhc19jcnRjX2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+YWN0aXZlICYmIGlu dGVsX2NydGMtPmFjdGl2ZTsKKworCW1lbXNldCgmaW50ZWxfY3J0Yy0+YXRvbWljLCAwLCBzaXpl b2YoaW50ZWxfY3J0Yy0+YXRvbWljKSk7CisJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bSA9 IG1vZGVfY2hhbmdlZDsKKworCWlkeCA9IGRybV9jcnRjX2luZGV4KGNydGMpOworCURSTV9ERUJV R19BVE9NSUMoIkNydGMgJWkgd2FzIGVuYWJsZWQgJWkgbm93IGVuYWJsZWQ6ICVpXG4iLAorCQkJ IGlkeCwgd2FzX2NydGNfZW5hYmxlZCwgaXNfY3J0Y19lbmFibGVkKTsKKworCXBsYW5lX21hc2sg PSBjcnRjX3N0YXRlLT5wbGFuZV9tYXNrIHwgY3J0Yy0+c3RhdGUtPnBsYW5lX21hc2s7CisJZm9y IChpID0gMDsgaSA8IG5wbGFuZXM7IGkrKykgeworCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlLCAqb2xkX3BsYW5lX3N0YXRlOworCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUoc3RhdGUtPnBsYW5lc1tpXSk7CisJCWJvb2wgdHVybl9vZmYs IHR1cm5fb24sIHZpc2libGUsIHdhc192aXNpYmxlOworCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYjsKKworCQlpZiAoIXBsYW5lKQorCQkJY29udGludWU7CisKKwkJcGxhbmVfc3RhdGUgPSB0 b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZS0+cGxhbmVfc3RhdGVzW2ldKTsKKwkJb2xkX3BsYW5l X3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3RhdGUpOworCisJCXdh c192aXNpYmxlID0gb2xkX3BsYW5lX3N0YXRlLT52aXNpYmxlICYmIHdhc19jcnRjX2VuYWJsZWQ7 CisJCXZpc2libGUgPSBwbGFuZV9zdGF0ZS0+dmlzaWJsZSAmJiBpc19jcnRjX2VuYWJsZWQ7CisK KwkJdHVybl9vZmYgPSB3YXNfdmlzaWJsZSAmJiAoIXZpc2libGUgfHwgbW9kZV9jaGFuZ2VkKTsK KwkJdHVybl9vbiA9IHZpc2libGUgJiYgKCF3YXNfdmlzaWJsZSB8fCBtb2RlX2NoYW5nZWQpOwor CQlmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCisJCURSTV9ERUJVR19BVE9NSUMoIkNydGMg JWkgaGFzIHBsYW5lICVpIHdpdGggZmIgJWlcbiIsIGlkeCwKKwkJCWRybV9wbGFuZV9pbmRleCgm cGxhbmUtPmJhc2UpLCBmYiA/IGZiLT5iYXNlLmlkIDogLTEpOworCQlEUk1fREVCVUdfQVRPTUlD KCJcdHZpc2libGUgJWkgLT4gJWksIG9mZiAlaSwgb24gJWksIG1zICVpXG4iLAorCQkJd2FzX3Zp c2libGUsIHZpc2libGUsIHR1cm5fb2ZmLCB0dXJuX29uLCBtb2RlX2NoYW5nZWQpOworCisJCS8q IHBsYW5lIGJlaW5nIHR1cm5lZCBvZmYgYXMgcGFydCBvZiBtb2Rlc2V0IG9yIGNoYW5nZXM/ICov CisJCWlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZSgmcGxhbmUtPmJhc2UsICZwbGFuZV9zdGF0ZS0+ YmFzZSkpCisJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKKworCQkvKgor CQkgKiAncHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVkIHdoZW4gcGxhbmUgaXMgYmVpbmcgZGlzYWJs ZWQsIHNvCisJCSAqIHdlIG5lZWQgdG8gaGFuZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGFzIGEg c3BlY2lhbCBjYXNlCisJCSAqLworCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLmZiICYmICFw bGFuZV9zdGF0ZS0+YmFzZS5mYikKKwkJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlZF9wbGFu ZXMgfD0KKwkJCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgoJnBsYW5lLT5iYXNlKSk7CisKKwkJc3dp dGNoIChwbGFuZS0+YmFzZS50eXBlKSB7CisJCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToK KwkJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9CisJCQkJSU5URUxfRlJPTlRCVUZGRVJf UFJJTUFSWShpbnRlbF9jcnRjLT5waXBlKTsKKworCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRf Zm9yX2ZsaXBzID0gdHJ1ZTsKKwkJCWludGVsX2NydGMtPmF0b21pYy5wcmVfZGlzYWJsZV9wcmlt YXJ5ID0gdHVybl9vZmY7CisJCQlpbnRlbF9jcnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFy eSA9IHR1cm5fb247CisKKwkJCWlmICh0dXJuX29mZikKKwkJCQlpbnRlbF9jcnRjLT5hdG9taWMu ZGlzYWJsZV9mYmMgPSB0cnVlOworCisJCQkvKgorCQkJICogRkJDIGRvZXMgbm90IHdvcmsgb24g c29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQKKwkJCSAqIHBsYW5lcywgc28gZGlzYWJsZSBpdCB3 aGVuIHJvdGF0aW9uIGlzIG5vdCAwIGFuZAorCQkJICogdXBkYXRlIGl0IHdoZW4gcm90YXRpb24g aXMgc2V0IGJhY2sgdG8gMC4KKwkJCSAqCisJCQkgKiBGSVhNRTogVGhpcyBpcyByZWR1bmRhbnQg d2l0aCB0aGUgZmJjIHVwZGF0ZSBkb25lIGluCisJCQkgKiB0aGUgcHJpbWFyeSBwbGFuZSBlbmFi bGUgZnVuY3Rpb24gZXhjZXB0IHRoYXQgdGhhdAorCQkJICogb25lIGlzIGRvbmUgdG9vIGxhdGUu IFdlIGV2ZW50dWFsbHkgbmVlZCB0byB1bmlmeQorCQkJICogdGhpcy4KKwkJCSAqLworCisJCQlp ZiAodmlzaWJsZSAmJgorCQkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0 WChkZXYpICYmCisJCQkgICAgZGV2X3ByaXYtPmZiYy5jcnRjID09IGludGVsX2NydGMgJiYKKwkJ CSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkKKwkJ CQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOworCisJCQkvKgorCQkJICog QkRXIHNpZ25hbHMgZmxpcCBkb25lIGltbWVkaWF0ZWx5IGlmIHRoZSBwbGFuZQorCQkJICogaXMg ZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5CisJCQkgKiBhcm1l ZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2YmxhbmsgOigKKwkJCSAqLworCQkJaWYgKHR1cm5fb24g JiYgSVNfQlJPQURXRUxMKGRldikpCisJCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5r ID0gdHJ1ZTsKKworCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9mYmMgPSB0cnVlOworCQkJ YnJlYWs7CisJCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgorCQkJaW50ZWxfY3J0Yy0+YXRv bWljLmZiX2JpdHMgfD0KKwkJCQlJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfY3J0Yy0+ cGlwZSk7CisJCQlicmVhazsKKwkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgorCQkJaW50 ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KKwkJCQlJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUo aW50ZWxfY3J0Yy0+cGlwZSk7CisKKwkJCWlmICh0dXJuX29mZikgeworCQkJCWludGVsX2NydGMt PmF0b21pYy53YWl0X3ZibGFuayA9IHRydWU7CisJCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0 ZV9zcHJpdGVfd2F0ZXJtYXJrcyB8PQorCQkJCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgoJnBsYW5l LT5iYXNlKSk7CisJCQl9CisJCQlicmVhazsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKwogc3Rh dGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CkBAIC0xMjY2NCwxMCArMTI4 NjAsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCS8qIFBlcmZv cm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNvbW1pdCBvcGVyYXRpb24gKi8KLQlpZiAoaW50ZWxf Y3J0Yy0+YWN0aXZlKQorCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUgJiYgIW5lZWRzX21vZGVzZXQo Y3J0Yy0+c3RhdGUpICYmCisJICAgICFkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5pbml0X3Bvd2Vy X29uKQogCQlpbnRlbF9jcnRjLT5hdG9taWMuZXZhZGUgPQogCQkJaW50ZWxfcGlwZV91cGRhdGVf c3RhcnQoaW50ZWxfY3J0YywKIAkJCQkJCSZpbnRlbF9jcnRjLT5hdG9taWMuc3RhcnRfdmJsX2Nv dW50KTsKKwllbHNlCisJCWludGVsX2NydGMtPmF0b21pYy5ldmFkZSA9IGZhbHNlOwogfQogCiBz dGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRj KQpAQCAtMTI3MDMsNiArMTI5MDIsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19j b21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJCQkJICAgICAgIGZhbHNlLCBmYWxzZSk7 CiAKIAltZW1zZXQoJmludGVsX2NydGMtPmF0b21pYywgMCwgc2l6ZW9mKGludGVsX2NydGMtPmF0 b21pYykpOworCWNydGMtPnN0YXRlLT5tb2RlX2NoYW5nZWQgPSBmYWxzZTsKKwljcnRjLT5zdGF0 ZS0+YWN0aXZlX2NoYW5nZWQgPSBmYWxzZTsKIH0KIAogLyoqCkBAIC0xMjgxMiwxMyArMTMwMTMs OSBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ c3RydWN0IGRybV9yZWN0ICpzcmMgPSAmc3RhdGUtPnNyYzsKIAljb25zdCBzdHJ1Y3QgZHJtX3Jl Y3QgKmNsaXAgPSAmc3RhdGUtPmNsaXA7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9IGludGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CiAJ dW5zaWduZWQgc3RyaWRlOwogCWludCByZXQ7CiAKLQljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFu ZS0+Y3J0YzsKLQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQogCXJldCA9IGRy bV9wbGFuZV9oZWxwZXJfY2hlY2tfdXBkYXRlKHBsYW5lLCBjcnRjLCBmYiwKIAkJCQkJICAgIHNy YywgZGVzdCwgY2xpcCwKIAkJCQkJICAgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKQEAg LTEyODMwLDcgKzEzMDI3LDcgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCiAJLyogaWYgd2Ugd2FudCB0byB0dXJuIG9mZiB0aGUgY3Vyc29yIGln bm9yZSB3aWR0aCBhbmQgaGVpZ2h0ICovCiAJaWYgKCFvYmopCi0JCWdvdG8gZmluaXNoOworCQly ZXR1cm4gMDsKIAogCS8qIENoZWNrIGZvciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAq LwogCWlmICghY3Vyc29yX3NpemVfb2soZGV2LCBzdGF0ZS0+YmFzZS5jcnRjX3csIHN0YXRlLT5i YXNlLmNydGNfaCkpIHsKQEAgLTEyODQ3LDE5ICsxMzA0NCwxMCBAQCBpbnRlbF9jaGVja19jdXJz b3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAlpZiAoZmItPm1vZGlmaWVyWzBd ICE9IERSTV9GT1JNQVRfTU9EX05PTkUpIHsKIAkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIGNhbm5v dCBiZSB0aWxlZFxuIik7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JfQotCi1maW5pc2g6Ci0JaWYgKGlu dGVsX2NydGMtPmFjdGl2ZSkgewotCQlpZiAocGxhbmUtPnN0YXRlLT5jcnRjX3cgIT0gc3RhdGUt PmJhc2UuY3J0Y193KQotCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bSA9IHRydWU7Ci0K LQkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KLQkJCUlOVEVMX0ZST05UQlVGRkVSX0NV UlNPUihpbnRlbF9jcnRjLT5waXBlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0dXJu IHJldDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0MDg5LDYgKzE0Mjc3LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKIAogCQlXQVJOX09OKGNydGMtPmFjdGl2ZSk7CiAJCWNydGMtPmJhc2Uuc3RhdGUtPmVuYWJs ZSA9IGZhbHNlOworCQljcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgPSBmYWxzZTsKIAkJY3J0Yy0+ YmFzZS5lbmFibGVkID0gZmFsc2U7CiAJfQogCkBAIC0xNDExNyw2ICsxNDMwNiw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJCQkg ICAgICBjcnRjLT5hY3RpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKIAogCQljcnRjLT5i YXNlLnN0YXRlLT5lbmFibGUgPSBjcnRjLT5hY3RpdmU7CisJCWNydGMtPmJhc2Uuc3RhdGUtPmFj dGl2ZSA9IGNydGMtPmFjdGl2ZTsKIAkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+YWN0aXZl OwogCiAJCS8qIEJlY2F1c2Ugd2Ugb25seSBlc3RhYmxpc2ggdGhlIGNvbm5lY3RvciAtPiBlbmNv ZGVyIC0+CkBAIC0xNDI1NSw2ICsxNDQ0NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRf cmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJCQkJCQkgY3J0Yy0+ Y29uZmlnKTsKIAogCQljcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgPSBjcnRjLT5hY3RpdmU7CisJ CWNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSA9IGNydGMtPmFjdGl2ZTsKIAkJY3J0Yy0+YmFzZS5l bmFibGVkID0gY3J0Yy0+YWN0aXZlOwogCiAJCXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUocHJpbWFyeS0+c3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRl eCA3NDE5ZTA0YjExM2YuLjVhMjc3NzU3YWMyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKQEAgLTgxMSwxMiArODExLDggQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAogCWludCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsKIAlpbnQgcGl4 ZWxfc2l6ZTsKIAotCWludGVsX2NydGMgPSBpbnRlbF9jcnRjID8gaW50ZWxfY3J0YyA6IHRvX2lu dGVsX2NydGMocGxhbmUtPmNydGMpOwotCi0JaWYgKCFmYikgewotCQlzdGF0ZS0+dmlzaWJsZSA9 IGZhbHNlOwotCQlnb3RvIGZpbmlzaDsKLQl9CisJaWYgKCFmYikKKwkJcmV0dXJuIDA7CiAKIAkv KiBEb24ndCBtb2RpZnkgYW5vdGhlciBwaXBlJ3MgcGxhbmUgKi8KIAlpZiAoaW50ZWxfcGxhbmUt PnBpcGUgIT0gaW50ZWxfY3J0Yy0+cGlwZSkgewpAQCAtODQ3LDcgKzg0Myw3IEBAIGludGVsX2No ZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl2c2NhbGUgPSBkcm1f cmVjdF9jYWxjX3ZzY2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7 CiAJQlVHX09OKHZzY2FsZSA8IDApOwogCi0Jc3RhdGUtPnZpc2libGUgPSAgZHJtX3JlY3RfY2xp cF9zY2FsZWQoc3JjLCBkc3QsIGNsaXAsIGhzY2FsZSwgdnNjYWxlKTsKKwlzdGF0ZS0+dmlzaWJs ZSA9IGRybV9yZWN0X2NsaXBfc2NhbGVkKHNyYywgZHN0LCBjbGlwLCBoc2NhbGUsIHZzY2FsZSk7 CiAKIAljcnRjX3ggPSBkc3QtPngxOwogCWNydGNfeSA9IGRzdC0+eTE7CkBAIC05NTIsMjkgKzk0 OCw2IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAlkc3QtPnkxID0gY3J0Y195OwogCWRzdC0+eTIgPSBjcnRjX3kgKyBjcnRjX2g7CiAKLWZpbmlz aDoKLQkvKgotCSAqIElmIHRoZSBzcHJpdGUgaXMgY29tcGxldGVseSBjb3ZlcmluZyB0aGUgcHJp bWFyeSBwbGFuZSwKLQkgKiB3ZSBjYW4gZGlzYWJsZSB0aGUgcHJpbWFyeSBhbmQgc2F2ZSBwb3dl ci4KLQkgKi8KLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Ci0JCWludGVsX2NydGMtPmF0b21p Yy5mYl9iaXRzIHw9Ci0JCQlJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfY3J0Yy0+cGlw ZSk7Ci0KLQkJaWYgKGludGVsX3dtX25lZWRfdXBkYXRlKHBsYW5lLCAmc3RhdGUtPmJhc2UpKQot CQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bSA9IHRydWU7Ci0KLQkJaWYgKCFzdGF0ZS0+ dmlzaWJsZSkgewotCQkJLyoKLQkJCSAqIEF2b2lkIHVuZGVycnVucyB3aGVuIGRpc2FibGluZyB0 aGUgc3ByaXRlLgotCQkJICogRklYTUUgcmVtb3ZlIG9uY2Ugd2F0ZXJtYXJrIHVwZGF0ZXMgYXJl IGRvbmUgcHJvcGVybHkuCi0JCQkgKi8KLQkJCWludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFu ayA9IHRydWU7Ci0JCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtz IHw9Ci0JCQkJKDEgPDwgZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Ci0JCX0KLQl9Ci0KIAlyZXR1 cm4gMDsKIH0KIAotLSAKMi4xLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=