From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [RFC PATCH 3/7] All changes from try2. Date: Fri, 19 Jun 2015 10:02:26 +0200 Message-ID: <1434700950-16242-4-git-send-email-maarten.lankhorst@linux.intel.com> References: <1434700950-16242-1-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 mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTP id 6469C6ED75 for ; Fri, 19 Jun 2015 01:02:45 -0700 (PDT) In-Reply-To: <1434700950-16242-1-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 List-Id: intel-gfx@lists.freedesktop.org QWx3YXlzIHJlYWQgb3V0IHBsYW5lIHN0YXRlLCBhbmQgZG8gYW4gaW5pdGlhbCBtb2Rlc2V0IGlu IG1vZGVzZXRfZ2VtX2luaXQuCgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMg ICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDcgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8ICAgNyAtCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA1MDEgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMyArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwgIDEyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjgwIGlu c2VydGlvbnMoKyksIDI2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRl eCA4ODc5NWQyZjE4MTkuLmVkZTA3ZjZmZTdmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBA IC0zOTMsNiArMzkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGll bnRfb3BzIGk5MTVfc3dpdGNoZXJvb19vcHMgPSB7CiBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rl c2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZTsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcGFyc2VfYmlvcyhkZXYpOwpA QCAtNDMxLDEzICs0MzIsMTggQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkvKiBJbXBvcnRhbnQ6IFRoZSBvdXRwdXQgc2V0dXAg ZnVuY3Rpb25zIGNhbGxlZCBieSBtb2Rlc2V0X2luaXQgbmVlZAogCSAqIHdvcmtpbmcgaXJxcyBm b3IgZS5nLiBnbWJ1cyBhbmQgZHAgYXV4IHRyYW5zZmVycy4gKi8KLQlpbnRlbF9tb2Rlc2V0X2lu aXQoZGV2KTsKKwlzdGF0ZSA9IGludGVsX21vZGVzZXRfaW5pdChkZXYpOwogCiAJcmV0ID0gaTkx NV9nZW1faW5pdChkZXYpOwotCWlmIChyZXQpCisJaWYgKHJldCkgeworCQlpZiAoc3RhdGUpIHsK KwkJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJCQlkcm1fbW9kZXNldF91bmxvY2tf YWxsKGRldik7CisJCX0KIAkJZ290byBjbGVhbnVwX2lycTsKKwl9CiAKLQlpbnRlbF9tb2Rlc2V0 X2dlbV9pbml0KGRldik7CisJaW50ZWxfbW9kZXNldF9nZW1faW5pdChkZXYsIHN0YXRlKTsKIAog CS8qIEFsd2F5cyBzYWZlIGluIHRoZSBtb2RlIHNldHRpbmcgY2FzZS4gKi8KIAkvKiBGSVhNRTog ZG8gcHJlL3Bvc3QtbW9kZSBzZXQgc3R1ZmYgaW4gY29yZSBLTVMgY29kZSAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKaW5kZXggNzhlZjBiYjUzYzM2Li5hMjliMjRiY2EyNWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwpAQCAtNzU4LDcgKzc1OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fcmVz dW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+ aXJxX2xvY2spOwogCiAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKLQlpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKGRldiwgdHJ1ZSk7CisJaW50ZWxfZGlzcGxheV9yZXN1bWUoZGV2KTsK IAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7CiAKIAlpbnRlbF9kcF9tc3RfcmVzdW1lKGRl dik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkOTQxMGJkNGFiNTkuLmU2N2QyZjFlM2Fi OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMjMzLDEzICszMjMzLDEyIEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpbnRlbF91bnJlZ2lzdGVyX2RzbV9oYW5kbGVyKHZvaWQpIHsgcmV0dXJu OyB9CiAKIC8qIG1vZGVzZXR0aW5nICovCiBleHRlcm4gdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRf aHcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4gdm9pZCBpbnRlbF9tb2Rlc2V0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4gdm9pZCBpbnRlbF9tb2Rlc2V0X2dl bV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworZXh0ZXJuIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICppbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRl cm4gdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICopOwogZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVh bnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfY29ubmVjdG9y X3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqKTsKIGV4dGVybiBpbnQgaW50ZWxf bW9kZXNldF92Z2Ffc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgc3RhdGUp OwotZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotCQkJCQkgYm9vbCBmb3JjZV9yZXN0b3JlKTsKK2V4dGVybiB2b2lkIGludGVs X2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkx NV9yZWRpc2FibGVfdmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkx NV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJu IGJvb2wgaXJvbmxha2Vfc2V0X2RycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKaW5kZXggNGQ4NzU3NGEyMDMyLi5mMzZmY2M3 Y2VlY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCkBAIC05OCwxMyArOTgsNiBA QCBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVy biAtRUlOVkFMOwogCX0KIAotCWlmIChjcnRjX3N0YXRlICYmCi0JICAgIGNydGNfc3RhdGUtPnF1 aXJrcyAmIFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExBTkVTKSB7Ci0JCXJldCA9IGRybV9h dG9taWNfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdGF0ZSwgJm51Y2xlYXJfY3J0Yy0+YmFzZSk7Ci0J CWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCX0KLQogCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX3BsYW5lcyhkZXYsIHN0YXRlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDQxMTkzZGFiNThjNS4uOWIyYWNjN2I0 ZTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMDksNiArMTA5LDkg QEAgc3RhdGljIHZvaWQgc2tsX2luaXRfc2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3IKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSk7CiBzdGF0aWMgaW50IGk5eHhfZ2V0X3JlZmNsayhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgIGludCBudW1fY29ubmVjdG9ycyk7CitzdGF0 aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 CitzdGF0aWMgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgoraW50ZWxfbW9kZXNldF9zZXR1cF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGZvcmNlX3Jlc3RvcmUpOwogCiBz dGF0aWMgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2ZpbmRfZW5jb2RlcihzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBwaXBlKQogewpAQCAtMjU2Nyw0MCArMjU3MCw0 MSBAQCB1cGRhdGVfc3RhdGVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAKIHN0YXRpYyB2 b2lkCiBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAotCQkJICAgICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWcgKnBsYW5l X2NvbmZpZykKKwkJCSAgICAgc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnICpwbGFu ZV9jb25maWcsCisJCQkgICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gcGxhbmVfc3RhdGUtPmJhc2Uu c3RhdGU7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2Owog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0J c3RydWN0IGRybV9jcnRjICpjOwotCXN0cnVjdCBpbnRlbF9jcnRjICppOwogCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGludGVs X2NydGMtPmJhc2UucHJpbWFyeTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLCAqZHJtX3BsYW5l OworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsKKwlpbnQgaSwgcmV0 OwogCiAJaWYgKCFwbGFuZV9jb25maWctPmZiKQogCQlyZXR1cm47CiAKIAlpZiAoaW50ZWxfYWxs b2NfaW5pdGlhbF9wbGFuZV9vYmooaW50ZWxfY3J0YywgcGxhbmVfY29uZmlnKSkgewotCQlmYiA9 ICZwbGFuZV9jb25maWctPmZiLT5iYXNlOwotCQlnb3RvIHZhbGlkX2ZiOwotCX0KKwkJaW50IHJl dDsKIAotCWtmcmVlKHBsYW5lX2NvbmZpZy0+ZmIpOworCQlmYiA9ICZwbGFuZV9jb25maWctPmZi LT5iYXNlOworCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwbGFuZSwgZmIsICZw bGFuZV9zdGF0ZS0+YmFzZSwgTlVMTCk7CisJCWlmICghcmV0KQorCQkJZ290byB2YWxpZF9mYjsK KwkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKKwl9IGVsc2UKKwkJa2ZyZWUocGxh bmVfY29uZmlnLT5mYik7CiAKIAkvKgogCSAqIEZhaWxlZCB0byBhbGxvYyB0aGUgb2JqLCBjaGVj ayB0byBzZWUgaWYgd2Ugc2hvdWxkIHNoYXJlCiAJICogYW4gZmIgd2l0aCBhbm90aGVyIENSVEMg aW5zdGVhZAogCSAqLwotCWZvcl9lYWNoX2NydGMoZGV2LCBjKSB7Ci0JCWkgPSB0b19pbnRlbF9j cnRjKGMpOwotCi0JCWlmIChjID09ICZpbnRlbF9jcnRjLT5iYXNlKQorCWZvcl9lYWNoX3BsYW5l X2luX3N0YXRlKHN0YXRlLCBkcm1fcGxhbmUsIGRybV9wbGFuZV9zdGF0ZSwgaSkgeworCQlpZiAo ZHJtX3BsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCiAJCQljb250aW51ZTsK IAotCQlpZiAoIWktPmFjdGl2ZSkKLQkJCWNvbnRpbnVlOwotCi0JCWZiID0gYy0+cHJpbWFyeS0+ ZmI7CisJCWZiID0gZHJtX3BsYW5lX3N0YXRlLT5mYjsKIAkJaWYgKCFmYikKIAkJCWNvbnRpbnVl OwogCkBAIC0yNjExLDE3ICsyNjE1LDIyIEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmoo c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCX0KIAl9CiAKKwlpbnRlbF9wcmVfZGlz YWJsZV9wcmltYXJ5KCZpbnRlbF9jcnRjLT5iYXNlKTsKKwl0b19pbnRlbF9wbGFuZShwbGFuZSkt PmRpc2FibGVfcGxhbmUocGxhbmUsICZpbnRlbF9jcnRjLT5iYXNlKTsKKwogCXJldHVybjsKIAog dmFsaWRfZmI6CisJZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCZwbGFuZV9zdGF0ZS0+YmFz ZSwgZmIpOworCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX3BsYW5lKCZwbGFuZV9zdGF0 ZS0+YmFzZSwgJmludGVsX2NydGMtPmJhc2UpOworCVdBUk5fT04ocmV0KTsKKwlwbGFuZS0+ZmIg PSBmYjsKKworCXBsYW5lX3N0YXRlLT52aXNpYmxlID0gdHJ1ZTsKIAlvYmogPSBpbnRlbF9mYl9v YmooZmIpOwogCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCiAJCWRl dl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwogCi0JcHJpbWFyeS0+ZmIgPSBm YjsKLQlwcmltYXJ5LT5jcnRjID0gcHJpbWFyeS0+c3RhdGUtPmNydGMgPSAmaW50ZWxfY3J0Yy0+ YmFzZTsKLQl1cGRhdGVfc3RhdGVfZmIocHJpbWFyeSk7Ci0JaW50ZWxfY3J0Yy0+YmFzZS5zdGF0 ZS0+cGxhbmVfbWFzayB8PSAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocHJpbWFyeSkpOwogCW9iai0+ ZnJvbnRidWZmZXJfYml0cyB8PSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGludGVsX2NydGMt PnBpcGUpOwogfQogCkBAIC0zMjI5LDcgKzMyMzgsNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNl dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3Nl dHVwKGRldik7CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCi0JaW50 ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShkZXYsIHRydWUpOworCWludGVsX2Rpc3BsYXlfcmVz dW1lKGRldik7CiAKIAlpbnRlbF9ocGRfaW5pdChkZXZfcHJpdik7CiAKQEAgLTYxOTAsNiArNjE5 OSwxMSBAQCB2b2lkIGludGVsX2Rpc3BsYXlfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCQlpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoY3J0Yyk7CiB9CiAKK3ZvaWQgaW50ZWxf ZGlzcGxheV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKGRldiwgdHJ1ZSk7Cit9CisKIC8qIE1hc3RlciBmdW5jdGlvbiB0byBl bmFibGUvZGlzYWJsZSBDUlRDIGFuZCBjb3JyZXNwb25kaW5nIHBvd2VyIHdlbGxzICovCiBpbnQg aW50ZWxfY3J0Y19jb250cm9sKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbmFibGUpCiB7 CkBAIC03NzAwLDkgKzc3MTQsMTQgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWco c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiAJbW9kZS0+dnN5bmNfZW5kID0gcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKIAogCW1vZGUtPmZsYWdz ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFnczsKKwltb2RlLT50eXBlID0g RFJNX01PREVfVFlQRV9EUklWRVI7CiAKIAltb2RlLT5jbG9jayA9IHBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAltb2RlLT5mbGFncyB8PSBwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzOworCisJbW9kZS0+aHN5bmMgPSBkcm1fbW9kZV9oc3lu Yyhtb2RlKTsKKwltb2RlLT52cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOworCWRy bV9tb2RlX3NldF9uYW1lKG1vZGUpOwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29u ZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKQEAgLTExNzcyLDM0ICsxMTc5MSw2IEBA IHN0YXRpYyBib29sIGNoZWNrX2VuY29kZXJfY2xvbmluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2NydGNfY2hl Y2tfaW5pdGlhbF9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJCQkgICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQotewotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyA9Ci0JCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Ci0Jc3Ry dWN0IGRybV9wbGFuZSAqcDsKLQl1bnNpZ25lZCB2aXNpYmxlX21hc2sgPSAwOwotCi0JZHJtX2Zv cl9lYWNoX3BsYW5lX21hc2socCwgY3J0Yy0+ZGV2LCBjcnRjX3N0YXRlLT5wbGFuZV9tYXNrKSB7 Ci0JCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KLQkJCWRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKGNydGNfc3RhdGUtPnN0YXRlLCBwKTsKLQotCQlpZiAo V0FSTl9PTighcGxhbmVfc3RhdGUpKQotCQkJY29udGludWU7Ci0KLQkJaWYgKCFwbGFuZV9zdGF0 ZS0+ZmIpCi0JCQljcnRjX3N0YXRlLT5wbGFuZV9tYXNrICY9Ci0JCQkJfigxIDw8IGRybV9wbGFu ZV9pbmRleChwKSk7Ci0JCWVsc2UgaWYgKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KS0+dmlzaWJsZSkKLQkJCXZpc2libGVfbWFzayB8PSAxIDw8IGRybV9wbGFuZV9pbmRleChwKTsK LQl9Ci0KLQlpZiAoIXZpc2libGVfbWFzaykKLQkJcmV0dXJuOwotCi0JcGlwZV9jb25maWctPnF1 aXJrcyAmPSB+UElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVM7Ci19Ci0KIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAg IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKQEAgLTExODIxLDEwICsxMTgx Miw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQkiW0NSVEM6JWldIG1pc21hdGNoIGJldHdlZW4gc3RhdGUtPmFjdGl2ZSglaSkg YW5kIGNydGMtPmFjdGl2ZSglaSlcbiIsCiAJCWlkeCwgY3J0Yy0+c3RhdGUtPmFjdGl2ZSwgaW50 ZWxfY3J0Yy0+YWN0aXZlKTsKIAotCS8qIHBsYW5lIG1hc2sgaXMgZml4ZWQgdXAgYWZ0ZXIgYWxs IGluaXRpYWwgcGxhbmVzIGFyZSBjYWxjdWxhdGVkICovCi0JaWYgKHBpcGVfY29uZmlnLT5xdWly a3MgJiBQSVBFX0NPTkZJR19RVUlSS19JTklUSUFMX1BMQU5FUykKLQkJaW50ZWxfY3J0Y19jaGVj a19pbml0aWFsX3BsYW5lcyhjcnRjLCBjcnRjX3N0YXRlKTsKLQogCWlmIChtb2RlX2NoYW5nZWQp CiAJCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfd20gPSAhY3J0Y19zdGF0ZS0+YWN0aXZlOwog CkBAIC0xMjM3NCwyNCArMTIzNjEsMzUgQEAgc3RhdGljIGJvb2wgaW50ZWxfZnV6enlfY2xvY2tf Y2hlY2soaW50IGNsb2NrMSwgaW50IGNsb2NrMikKIHN0YXRpYyBib29sCiBpbnRlbF9waXBlX2Nv bmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKLQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnKQorCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcs CisJCQkgIGJvb2wgY2hlY2tfb25seSkKIHsKKwlib29sIHJldCA9IHRydWU7CisKKyNkZWZpbmUg SU5URUxfRVJSX09SX0RCR19LTVMoZm10LCAuLi4pIFwKKwlkbyB7IFwKKwkJaWYgKCFjaGVja19v bmx5KSBcCisJCQlEUk1fRVJST1IoZm10LCAjI19fVkFfQVJHU19fKTsgXAorCQllbHNlIFwKKwkJ CURSTV9ERUJVR19LTVMoZm10LCAjI19fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUgKDApCisKICNk ZWZpbmUgUElQRV9DT05GX0NIRUNLX1gobmFtZSkJXAogCWlmIChjdXJyZW50X2NvbmZpZy0+bmFt ZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBcCi0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gIiAj bmFtZSAiICIgXAorCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFtZSAi ICIgXAogCQkJICAiKGV4cGVjdGVkIDB4JTA4eCwgZm91bmQgMHglMDh4KVxuIiwgXAogCQkJICBj dXJyZW50X2NvbmZpZy0+bmFtZSwgXAogCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKLQkJcmV0 dXJuIGZhbHNlOyBcCisJCXJldCA9IGZhbHNlOyBcCiAJfQogCiAjZGVmaW5lIFBJUEVfQ09ORl9D SEVDS19JKG5hbWUpCVwKIAlpZiAoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25maWct Pm5hbWUpIHsgXAotCQlEUk1fRVJST1IoIm1pc21hdGNoIGluICIgI25hbWUgIiAiIFwKKwkJSU5U RUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNoIGluICIgI25hbWUgIiAiIFwKIAkJCSAgIihleHBl Y3RlZCAlaSwgZm91bmQgJWkpXG4iLCBcCiAJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLCBcCiAJ CQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAotCQlyZXR1cm4gZmFsc2U7IFwKKwkJcmV0ID0gZmFs c2U7IFwKIAl9CiAKIC8qIFRoaXMgaXMgcmVxdWlyZWQgZm9yIEJEVysgd2hlcmUgdGhlcmUgaXMg b25seSBvbmUgc2V0IG9mIHJlZ2lzdGVycyBmb3IKQEAgLTEyNDAyLDMwICsxMjQwMCwzMCBAQCBp bnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAjZGVmaW5l IFBJUEVfQ09ORl9DSEVDS19JX0FMVChuYW1lLCBhbHRfbmFtZSkgXAogCWlmICgoY3VycmVudF9j b25maWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUpICYmIFwKIAkJKGN1cnJlbnRfY29uZmln LT5hbHRfbmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkpIHsgXAotCQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiAiICNuYW1lICIgIiBcCisJCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2gg aW4gIiAjbmFtZSAiICIgXAogCQkJCSAgIihleHBlY3RlZCAlaSBvciAlaSwgZm91bmQgJWkpXG4i LCBcCiAJCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAogCQkJCSAgY3VycmVudF9jb25maWct PmFsdF9uYW1lLCBcCiAJCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKLQkJCXJldHVybiBmYWxz ZTsgXAorCQkJcmV0ID0gZmFsc2U7IFwKIAl9CiAKICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX0ZM QUdTKG5hbWUsIG1hc2spCVwKIAlpZiAoKGN1cnJlbnRfY29uZmlnLT5uYW1lIF4gcGlwZV9jb25m aWctPm5hbWUpICYgKG1hc2spKSB7IFwKLQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1l ICIoIiAjbWFzayAiKSAiCSAgIFwKKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNoIGlu ICIgI25hbWUgIigiICNtYXNrICIpICIJICAgXAogCQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAl aSlcbiIsIFwKIAkJCSAgY3VycmVudF9jb25maWctPm5hbWUgJiAobWFzayksIFwKIAkJCSAgcGlw ZV9jb25maWctPm5hbWUgJiAobWFzaykpOyBcCi0JCXJldHVybiBmYWxzZTsgXAorCQlyZXQgPSBm YWxzZTsgXAogCX0KIAogI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkobmFtZSkg XAogCWlmICghaW50ZWxfZnV6enlfY2xvY2tfY2hlY2soY3VycmVudF9jb25maWctPm5hbWUsIHBp cGVfY29uZmlnLT5uYW1lKSkgeyBcCi0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gIiAjbmFtZSAi ICIgXAorCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAog CQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwKIAkJCSAgY3VycmVudF9jb25maWct Pm5hbWUsIFwKIAkJCSAgcGlwZV9jb25maWctPm5hbWUpOyBcCi0JCXJldHVybiBmYWxzZTsgXAor CQlyZXQgPSBmYWxzZTsgXAogCX0KIAogI2RlZmluZSBQSVBFX0NPTkZfUVVJUksocXVpcmspCVwK QEAgLTEyNTU5LDggKzEyNTU3LDkgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19GTEFHUwogI3VuZGVmIFBJ UEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWQogI3VuZGVmIFBJUEVfQ09ORl9RVUlSSworI3VuZGVm IElOVEVMX0VSUl9PUl9EQkdfS01TCiAKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gcmV0OwogfQog CiBzdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAt MTI3NTcsNyArMTI3NTYsNyBAQCBjaGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBjcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7CiAKIAkJaWYgKGFjdGl2ZSAmJgotCQkgICAgIWludGVs X3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5jb25maWcsICZwaXBlX2NvbmZpZykpIHsK KwkJICAgICFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwgY3J0Yy0+Y29uZmlnLCAmcGlw ZV9jb25maWcsIGZhbHNlKSkgewogCQkJSTkxNV9TVEFURV9XQVJOKDEsICJwaXBlIHN0YXRlIGRv ZXNuJ3QgbWF0Y2ghXG4iKTsKIAkJCWludGVsX2R1bXBfcGlwZV9jb25maWcoY3J0YywgJnBpcGVf Y29uZmlnLAogCQkJCQkgICAgICAgIltodyBzdGF0ZV0iKTsKQEAgLTEzMDY0LDIwICsxMzA2Myw2 IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAodG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjX3N0YXRlKS0+cXVpcmtzICYKLQkJICAgIFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExB TkVTKSB7Ci0JCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RhdGUsIGNy dGMpOwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCi0JCQkvKgotCQkJICogV2Ugb3Vn aHQgdG8gaGFuZGxlIGk5MTUuZmFzdGJvb3QgaGVyZS4KLQkJCSAqIElmIG5vIG1vZGVzZXQgaXMg cmVxdWlyZWQgYW5kIHRoZSBwcmltYXJ5IHBsYW5lIGhhcwotCQkJICogYSBmYiwgdXBkYXRlIHRo ZSBtZW1iZXJzIG9mIGNydGNfc3RhdGUgYXMgbmVlZGVkLAotCQkJICogYW5kIHJ1biB0aGUgbmVj ZXNzYXJ5IHVwZGF0ZXMgZHVyaW5nIHZibGFuayBldmFzaW9uLgotCQkJICovCi0JCX0KLQogCQlp ZiAoIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpIHsKIAkJCXJldCA9IGRybV9hdG9taWNfYWRk X2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNydGMpOwogCQkJaWYgKHJldCkKQEAgLTEzMTQw LDYgKzEzMTI1LDEyIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiAJCQlpbnRlbF9jcnRjLT5hY3RpdmUgPSBmYWxzZTsKIAkJCWlu dGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7CiAJCX0KKworCQkvKiBGSVhNRTog TW92ZSB0aGlzIHRvIGk5eHhfY3J0Y19kaXNhYmxlIHdoZW4gaXQgZ2V0cyBhIHBvaW50ZXIKKwkJ ICogdG8gdGhlIG9sZCBjcnRjX3N0YXRlLiAqLworCQlpZiAodG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjX3N0YXRlKS0+cXVpcmtzICYKKwkJICAgIFBJUEVfQ09ORklHX1FVSVJLX1dST05HX1BMQU5F KQorCQkJaW50ZWxfY3J0Yy0+cGxhbmUgPSAhaW50ZWxfY3J0Yy0+cGxhbmU7CiAJfQogCiAJLyog T25seSBhZnRlciBkaXNhYmxpbmcgYWxsIG91dHB1dCBwaXBlbGluZXMgdGhhdCB3aWxsIGJlIGNo YW5nZWQgY2FuIHdlCkBAIC0xNDk3NSwxMiArMTQ5NjYsMTIgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0 X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnRlbF9lbmFibGVfZ3RfcG93ZXJz YXZlKGRldik7CiB9CiAKLXZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCitzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqaW50ZWxfbW9kZXNldF9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CiAJ aW50IHNwcml0ZSwgcmV0OwogCWVudW0gcGlwZSBwaXBlOwotCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwogCiAJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsKIApAQCAtMTQ5OTksNyArMTQ5OTAs NyBAQCB2b2lkIGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlu dGVsX2luaXRfcG0oZGV2KTsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPm51bV9waXBlcyA9PSAw KQotCQlyZXR1cm47CisJCXJldHVybiBOVUxMOwogCiAJaW50ZWxfaW5pdF9kaXNwbGF5KGRldik7 CiAJaW50ZWxfaW5pdF9hdWRpbyhkZXYpOwpAQCAtMTUwNTQsMzAgKzE1MDQ1LDExIEBAIHZvaWQg aW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50ZWxfZmJjX2Rp c2FibGUoZGV2KTsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Ci0JaW50ZWxfbW9kZXNl dF9zZXR1cF9od19zdGF0ZShkZXYsIGZhbHNlKTsKLQlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRl dik7Ci0KLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewotCQlpZiAoIWNydGMtPmFj dGl2ZSkKLQkJCWNvbnRpbnVlOworCXN0YXRlID0gaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0 ZShkZXYsIGZhbHNlKTsKKwlpZiAoIXN0YXRlKQorCQlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRl dik7CiAKLQkJLyoKLQkJICogTm90ZSB0aGF0IHJlc2VydmluZyB0aGUgQklPUyBmYiB1cCBmcm9u dCBwcmV2ZW50cyB1cwotCQkgKiBmcm9tIHN0dWZmaW5nIG90aGVyIHN0b2xlbiBhbGxvY2F0aW9u cyBsaWtlIHRoZSByaW5nCi0JCSAqIG9uIHRvcC4gIFRoaXMgcHJldmVudHMgc29tZSB1Z2xpbmVz cyBhdCBib290IHRpbWUsIGFuZAotCQkgKiBjYW4gZXZlbiBhbGxvdyBmb3Igc21vb3RoIGJvb3Qg dHJhbnNpdGlvbnMgaWYgdGhlIEJJT1MKLQkJICogZmIgaXMgbGFyZ2UgZW5vdWdoIGZvciB0aGUg YWN0aXZlIHBpcGUgY29uZmlndXJhdGlvbi4KLQkJICovCi0JCWlmIChkZXZfcHJpdi0+ZGlzcGxh eS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcpIHsKLQkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9p bml0aWFsX3BsYW5lX2NvbmZpZyhjcnRjLAotCQkJCQkJCSAgICZjcnRjLT5wbGFuZV9jb25maWcp OwotCQkJLyoKLQkJCSAqIElmIHRoZSBmYiBpcyBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBoZWFk cywgd2UnbGwKLQkJCSAqIGp1c3QgZ2V0IHRoZSBmaXJzdCBvbmUuCi0JCQkgKi8KLQkJCWludGVs X2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooY3J0YywgJmNydGMtPnBsYW5lX2NvbmZpZyk7Ci0JCX0K LQl9CisJcmV0dXJuIHN0YXRlOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcGlwZV9h KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCkBAIC0xNTEyNCwxMyArMTUwOTYsMTcgQEAgaW50ZWxf Y2hlY2tfcGxhbmVfbWFwcGluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAlyZXR1cm4gdHJ1 ZTsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YykKK3N0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCisJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJ CWJvb2wgZm9yY2VfcmVzdG9yZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqaHdfc3RhdGUgPQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJh c2Uuc3RhdGUpOwogCXUzMiByZWc7Ci0JYm9vbCBlbmFibGU7CiAKIAkvKiBDbGVhciBhbnkgZnJh bWUgc3RhcnQgZGVsYXlzIHVzZWQgZm9yIGRlYnVnZ2luZyBsZWZ0IGJ5IHRoZSBCSU9TICovCiAJ cmVnID0gUElQRUNPTkYoY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rlcik7CkBAIC0xNTE0NCwy NyArMTUxMjAsNTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKIAkJZHJtX2NydGNfdmJsYW5rX29uKCZjcnRjLT5iYXNlKTsKIAl9CiAK LQkvKiBXZSBuZWVkIHRvIHNhbml0aXplIHRoZSBwbGFuZSAtPiBwaXBlIG1hcHBpbmcgZmlyc3Qg YmVjYXVzZSB0aGlzIHdpbGwKLQkgKiBkaXNhYmxlIHRoZSBjcnRjIChhbmQgaGVuY2UgY2hhbmdl IHRoZSBzdGF0ZSkgaWYgaXQgaXMgd3JvbmcuIE5vdGUKLQkgKiB0aGF0IGdlbjQrIGhhcyBhIGZp eGVkIHBsYW5lIC0+IHBpcGUgbWFwcGluZy4gICovCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu IDwgNCAmJiAhaW50ZWxfY2hlY2tfcGxhbmVfbWFwcGluZyhjcnRjKSkgewotCQlib29sIHBsYW5l OworCS8qIHNldCB1cCBjdXJyZW50IHN0YXRlICovCisJaWYgKCFmb3JjZV9yZXN0b3JlICYmIGh3 X3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCQlib29sIGVuYWJsZTsKIAotCQlEUk1fREVCVUdfS01T KCJbQ1JUQzolZF0gd3JvbmcgcGxhbmUgY29ubmVjdGlvbiBkZXRlY3RlZCFcbiIsCi0JCQkgICAg ICBjcnRjLT5iYXNlLmJhc2UuaWQpOworCQltZW1jcHkocGlwZV9jb25maWcsIGh3X3N0YXRlLCBz aXplb2YoKnBpcGVfY29uZmlnKSk7CisJCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNh dGVfc3RhdGUoJmNydGMtPmJhc2UsICZwaXBlX2NvbmZpZy0+YmFzZSk7CisJCXBpcGVfY29uZmln LT5iYXNlLnN0YXRlID0gc3RhdGU7CiAKLQkJLyogUGlwZSBoYXMgdGhlIHdyb25nIHBsYW5lIGF0 dGFjaGVkIGFuZCB0aGUgcGxhbmUgaXMgYWN0aXZlLgotCQkgKiBUZW1wb3JhcmlseSBjaGFuZ2Ug dGhlIHBsYW5lIG1hcHBpbmcgYW5kIGRpc2FibGUgZXZlcnl0aGluZwotCQkgKiAuLi4gICovCi0J CXBsYW5lID0gY3J0Yy0+cGxhbmU7Ci0JCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPmJhc2Uu cHJpbWFyeS0+c3RhdGUpLT52aXNpYmxlID0gdHJ1ZTsKLQkJY3J0Yy0+cGxhbmUgPSAhcGxhbmU7 Ci0JCWludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYygmY3J0Yy0+YmFzZSk7Ci0JCWNydGMtPnBs YW5lID0gcGxhbmU7CisJCWVuYWJsZSA9IGZhbHNlOworCQlmb3JfZWFjaF9lbmNvZGVyX29uX2Ny dGMoZGV2LCAmY3J0Yy0+YmFzZSwgZW5jb2RlcikKKwkJCWVuYWJsZSB8PSBlbmNvZGVyLT5jb25u ZWN0b3JzX2FjdGl2ZTsKKworCQlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgPSAhIWVuYWJsZTsK Kwl9CisKKwlpZiAoaHdfc3RhdGUtPnF1aXJrcyAmIFBJUEVfQ09ORklHX1FVSVJLX1dST05HX1BM QU5FKSB7CisJCWlmIChmb3JjZV9yZXN0b3JlIHx8IGk5MTUuZmFzdGJvb3QpCisJCQlwaXBlX2Nv bmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOworCQllbHNlCisJCQlwaXBlX2NvbmZpZy0+ YmFzZS5hY3RpdmUgPSBmYWxzZTsKIAl9CiAKLQlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJL X1BJUEVBX0ZPUkNFICYmCi0JICAgIGNydGMtPnBpcGUgPT0gUElQRV9BICYmICFjcnRjLT5hY3Rp dmUpIHsKKwkvKiBYWFg6IFRoaXMgaXMgbmVlZHMgdG8gYmUgbW9kaWZpZWQgZm9yIG1ha2luZyBm YXN0Ym9vdCBwb3NzaWJsZQorCSAqIGJ5IGRlZmF1bHQgd2l0aG91dCByZXF1aXJpbmcgYSBtb2Rl c2V0LgorCSAqLworCWlmIChod19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYgcGlwZV9jb25maWctPmJh c2UuYWN0aXZlKSB7CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHN3X3N0YXRlOworCisJCW1l bXNldCgmc3dfc3RhdGUsIDAsIHNpemVvZihzd19zdGF0ZSkpOworCQlzd19zdGF0ZS5iYXNlID0g cGlwZV9jb25maWctPmJhc2U7CisJCXN3X3N0YXRlLnNjYWxlcl9zdGF0ZSA9IHBpcGVfY29uZmln LT5zY2FsZXJfc3RhdGU7CisJCXN3X3N0YXRlLnNoYXJlZF9kcGxsID0gcGlwZV9jb25maWctPnNo YXJlZF9kcGxsOworCQlzd19zdGF0ZS5kcGxsX2h3X3N0YXRlID0gcGlwZV9jb25maWctPmRwbGxf aHdfc3RhdGU7CisJCXN3X3N0YXRlLmRkaV9wbGxfc2VsID0gcGlwZV9jb25maWctPmRkaV9wbGxf c2VsOworCisJCWludGVsX21vZGVzZXRfcGlwZV9jb25maWcoJmNydGMtPmJhc2UsICZzd19zdGF0 ZSk7CisKKwkJLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3JjZSBhIG1vZGVzZXQgKi8KKwkJaWYg KCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwgJnN3X3N0YXRlLCBod19zdGF0ZSwgIWk5 MTUuZmFzdGJvb3QpKSB7CisJCQlEUk1fREVCVUdfS01TKCJzdyBhbmQgaHcgc3RhdGUgZGlmZmVy LCBmb3JjaW5nIG1vZGVzZXRcbiIpOworCQkJcGlwZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJCSpwaXBlX2NvbmZpZyA9IHN3X3N0YXRlOworCQl9CisJ fQorCisKKwlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVBX0ZPUkNFICYmICFod19z dGF0ZS0+YmFzZS5hY3RpdmUgJiYKKwkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIXBpcGVf Y29uZmlnLT5iYXNlLmFjdGl2ZSkgewogCQkvKiBCSU9TIGZvcmdvdCB0byBlbmFibGUgcGlwZSBB LCB0aGlzIG1vc3RseSBoYXBwZW5zIGFmdGVyCiAJCSAqIHJlc3VtZS4gRm9yY2UtZW5hYmxlIHRo ZSBwaXBlIHRvIGZpeCB0aGlzLCB0aGUgdXBkYXRlX2RwbXMKIAkJICogY2FsbCBiZWxvdyB3ZSBy ZXN0b3JlIHRoZSBwaXBlIHRvIHRoZSByaWdodCBzdGF0ZSwgYnV0IGxlYXZlCkBAIC0xNTE3Miw0 NCArMTUxNzYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQogCQlpbnRlbF9lbmFibGVfcGlwZV9hKGRldik7CiAJfQogCi0JLyogQWRq dXN0IHRoZSBzdGF0ZSBvZiB0aGUgb3V0cHV0IHBpcGUgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UK LQkgKiBoYXZlIGFjdGl2ZSBjb25uZWN0b3JzL2VuY29kZXJzLiAqLwotCWVuYWJsZSA9IGZhbHNl OwotCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBlbmNvZGVyKQot CQllbmFibGUgfD0gZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmU7Ci0KLQlpZiAoIWVuYWJsZSkK LQkJaW50ZWxfY3J0Y19kaXNhYmxlX25vYXRvbWljKCZjcnRjLT5iYXNlKTsKLQotCWlmIChjcnRj LT5hY3RpdmUgIT0gY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Ci0KLQkJLyogVGhpcyBjYW4g aGFwcGVuIGVpdGhlciBkdWUgdG8gYnVncyBpbiB0aGUgZ2V0X2h3X3N0YXRlCi0JCSAqIGZ1bmN0 aW9ucyBvciBiZWNhdXNlIG9mIGNhbGxzIHRvIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYywK LQkJICogb3IgYmVjYXVzZSB0aGUgcGlwZSBpcyBmb3JjZS1lbmFibGVkIGR1ZSB0byB0aGUKLQkJ ICogcGlwZSBBIHF1aXJrLiAqLwotCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gaHcgc3RhdGUg YWRqdXN0ZWQsIHdhcyAlcywgbm93ICVzXG4iLAotCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlk LAotCQkJICAgICAgY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlID8gImVuYWJsZWQiIDogImRpc2Fi bGVkIiwKLQkJCSAgICAgIGNydGMtPmFjdGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwot Ci0JCWNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSA9IGNydGMtPmFjdGl2ZTsKLQkJY3J0Yy0+YmFz ZS5zdGF0ZS0+YWN0aXZlID0gY3J0Yy0+YWN0aXZlOwotCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBj cnRjLT5hY3RpdmU7Ci0KLQkJLyogQmVjYXVzZSB3ZSBvbmx5IGVzdGFibGlzaCB0aGUgY29ubmVj dG9yIC0+IGVuY29kZXIgLT4KLQkJICogY3J0YyBsaW5rcyBpZiBzb21ldGhpbmcgaXMgYWN0aXZl LCB0aGlzIG1lYW5zIHRoZQotCQkgKiBjcnRjIGlzIG5vdyBkZWFjdGl2YXRlZC4gQnJlYWsgdGhl IGxpbmtzLiBjb25uZWN0b3IKLQkJICogLT4gZW5jb2RlciBsaW5rcyBhcmUgb25seSBlc3RhYmxp c2ggd2hlbiB0aGluZ3MgYXJlCi0JCSAqICBhY3R1YWxseSB1cCwgaGVuY2Ugbm8gbmVlZCB0byBi cmVhayB0aGVtLiAqLwotCQlXQVJOX09OKGNydGMtPmFjdGl2ZSk7Ci0KLQkJZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIpIHsKLQkJCVdBUk5fT04oZW5j b2Rlci0+Y29ubmVjdG9yc19hY3RpdmUpOwotCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVMTDsK LQkJfQotCX0KLQotCWlmIChjcnRjLT5hY3RpdmUgfHwgSEFTX0dNQ0hfRElTUExBWShkZXYpKSB7 CisJaWYgKGh3X3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBIQVNfR01DSF9ESVNQTEFZKGRldikpIHsK IAkJLyoKIAkJICogV2Ugc3RhcnQgb3V0IHdpdGggdW5kZXJydW4gcmVwb3J0aW5nIGRpc2FibGVk IHRvIGF2b2lkIHJhY2VzLgogCQkgKiBGb3IgY29ycmVjdCBib29ra2VlcGluZyBtYXJrIHRoaXMg b24gYWN0aXZlIGNydGNzLgpAQCAtMTUyNjUsNiArMTUyMzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9zYW5pdGl6ZV9lbmNvZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCQlmb3Jf ZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKIAkJCWlmIChjb25uZWN0b3It PmVuY29kZXIgIT0gZW5jb2RlcikKIAkJCQljb250aW51ZTsKKwogCQkJY29ubmVjdG9yLT5iYXNl LmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKIAkJCWNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyID0g TlVMTDsKIAkJfQpAQCAtMTUzMDEsNzQgKzE1MjY5LDU0IEBAIHZvaWQgaTkxNV9yZWRpc2FibGVf dmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29u KGRldik7CiB9CiAKLXN0YXRpYyBib29sIHByaW1hcnlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNy dGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKLQotCXJldHVybiAhIShJOTE1X1JFQUQoRFNQQ05U UihjcnRjLT5wbGFuZSkpICYgRElTUExBWV9QTEFORV9FTkFCTEUpOwotfQotCiBzdGF0aWMgaW50 IHJlYWRvdXRfcGxhbmVfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJ CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcDsKKwlzdHJ1Y3QgaW50ZWxfaW5p dGlhbF9wbGFuZV9jb25maWcgcGxhbmVfY29uZmlnID0ge307CiAJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqZHJtX3BsYW5lX3N0YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcDsKIAlib29sIGFj dGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwotCWludCByZXQgPSAwOwotCi0JaWYgKGFj dGl2ZSkgewotCQljcnRjX3N0YXRlLT5xdWlya3MgfD0gUElQRV9DT05GSUdfUVVJUktfSU5JVElB TF9QTEFORVM7Ci0KLQkJLyogYXBwbHkgdG8gcHJldmlvdXMgc3cgc3RhdGUgdG9vICovCi0JCXRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSktPnF1aXJrcyB8PQotCQkJUElQRV9D T05GSUdfUVVJUktfSU5JVElBTF9QTEFORVM7Ci0JfQogCiAJZm9yX2VhY2hfaW50ZWxfcGxhbmUo Y3J0Yy0+YmFzZS5kZXYsIHApIHsKLQkJYm9vbCB2aXNpYmxlID0gYWN0aXZlOworCQlzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwogCiAJCWlmIChjcnRjLT5waXBlICE9IHAt PnBpcGUpCiAJCQljb250aW51ZTsKIAogCQlkcm1fcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9wbGFuZV9zdGF0ZShzdGF0ZSwgJnAtPmJhc2UpOwotCQlpZiAoSVNfRVJSKGRybV9wbGFuZV9z dGF0ZSkpIHsKLQkJCXJldCA9IFBUUl9FUlIoZHJtX3BsYW5lX3N0YXRlKTsKLQkJCWJyZWFrOwot CQl9CisJCWlmIChJU19FUlIoZHJtX3BsYW5lX3N0YXRlKSkKKwkJCXJldHVybiBQVFJfRVJSKGRy bV9wbGFuZV9zdGF0ZSk7CisJCXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJt X3BsYW5lX3N0YXRlKTsKIAogCQkvKiBQbGFuZSBzY2FsZXIgc3RhdGUgaXMgbm90IHRvdWNoZWQg aGVyZS4gVGhlIGZpcnN0IGF0b21pYwogCQkgKiBjb21taXQgd2lsbCByZXN0b3JlIGFsbCBwbGFu ZSBzY2FsZXJzIHRvIGl0cyBvbGQgc3RhdGUuCiAJCSAqLwogCisJCXBsYW5lX3N0YXRlLT52aXNp YmxlID0gZmFsc2U7CiAJCWlmIChhY3RpdmUgJiYgcC0+YmFzZS50eXBlID09IERSTV9QTEFORV9U WVBFX1BSSU1BUlkpIHsKLQkJCXZpc2libGUgPSBwcmltYXJ5X2dldF9od19zdGF0ZShjcnRjKTsK LQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9zdGF0ZSktPnZpc2libGUgPSB2aXNp YmxlOwotCQl9IGVsc2UgewotCQkJLyoKLQkJCSAqIHVua25vd24gc3RhdGUsIGFzc3VtZSBpdCdz IG9mZiB0byBmb3JjZSBhIHRyYW5zaXRpb24KLQkJCSAqIHRvIG9uIHdoZW4gY2FsY3VsYXRpbmcg c3RhdGUgY2hhbmdlcy4KLQkJCSAqLwotCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5l X3N0YXRlKS0+dmlzaWJsZSA9IGZhbHNlOwotCQl9CisJCQl0b19pOTE1KHN0YXRlLT5kZXYpLT5k aXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhjcnRjLCAmcGxhbmVfY29uZmlnKTsKKwkJ CWludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooY3J0YywgJnBsYW5lX2NvbmZpZywgcGxhbmVf c3RhdGUpOworCQl9IGVsc2UgaWYgKGFjdGl2ZSkKKwkJCXAtPmRpc2FibGVfcGxhbmUoJnAtPmJh c2UsICZjcnRjLT5iYXNlKTsKIAotCQlwLT5iYXNlLmNydGMgPSBkcm1fcGxhbmVfc3RhdGUtPmNy dGM7Ci0JCWlmICh2aXNpYmxlKSB7Ci0JCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgfD0K LQkJCQkxIDw8IGRybV9wbGFuZV9pbmRleCgmcC0+YmFzZSk7Ci0JCX0gZWxzZSB7Ci0JCQljcnRj X3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgJj0KLQkJCQl+KDEgPDwgZHJtX3BsYW5lX2luZGV4KCZw LT5iYXNlKSk7CisJCWlmICghcGxhbmVfc3RhdGUtPnZpc2libGUpIHsKKwkJCWludCByZXQ7CisJ CQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShkcm1fcGxhbmVfc3RhdGUsIE5V TEwpOworCQkJV0FSTl9PTihyZXQpOworCQkJZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKGRy bV9wbGFuZV9zdGF0ZSwgTlVMTCk7CiAJCX0KKwkJcC0+YmFzZS5jcnRjID0gZHJtX3BsYW5lX3N0 YXRlLT5jcnRjOwogCX0KIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBp bnQgcmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK IAkJCQkgc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJaW50 IHJldDsKIApAQCAtMTUzODAsNiArMTUzMjgsNyBAQCBzdGF0aWMgaW50IHJlYWRvdXRfaHdfY3J0 Y19zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAorCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZjcnRj LT5iYXNlLCAmY3J0Y19zdGF0ZS0+YmFzZSk7CiAJbWVtc2V0KGNydGNfc3RhdGUsIDAsIHNpemVv ZigqY3J0Y19zdGF0ZSkpOwogCWNydGNfc3RhdGUtPmJhc2UuY3J0YyA9ICZjcnRjLT5iYXNlOwog CWNydGNfc3RhdGUtPmJhc2Uuc3RhdGUgPSBzdGF0ZTsKQEAgLTE1Mzk3LDYgKzE1MzQ2LDIyIEBA IHN0YXRpYyBpbnQgcmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLAogCQkgICAgICBjcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwogCisJLyogV2UgbmVlZCB0 byBzYW5pdGl6ZSB0aGUgcGxhbmUgLT4gcGlwZSBtYXBwaW5nIGZpcnN0IGJlY2F1c2UgdGhpcyB3 aWxsCisJICogZGlzYWJsZSB0aGUgY3J0YyAoYW5kIGhlbmNlIGNoYW5nZSB0aGUgc3RhdGUpIGlm IGl0IGlzIHdyb25nLiBOb3RlCisJICogdGhhdCBnZW40KyBoYXMgYSBmaXhlZCBwbGFuZSAtPiBw aXBlIG1hcHBpbmcuICAqLworCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgJiYgIWludGVs X2NoZWNrX3BsYW5lX21hcHBpbmcoY3J0YykpIHsKKwkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRd IHdyb25nIHBsYW5lIGNvbm5lY3Rpb24gZGV0ZWN0ZWQhXG4iLAorCQkJICAgICAgY3J0Yy0+YmFz ZS5iYXNlLmlkKTsKKworCQkvKiBQaXBlIGhhcyB0aGUgd3JvbmcgcGxhbmUgYXR0YWNoZWQgYW5k IHRoZSBwbGFuZSBpcyBhY3RpdmUuCisJCSAqIFRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgcGxhbmUg bWFwcGluZyBhbmQgZGlzYWJsZSBldmVyeXRoaW5nCisJCSAqIC4uLiAgKi8KKwkJY3J0Y19zdGF0 ZS0+cXVpcmtzIHw9CisJCQlQSVBFX0NPTkZJR19RVUlSS19XUk9OR19QTEFORTsKKworCQljcnRj LT5wbGFuZSA9ICFjcnRjLT5wbGFuZTsKKwl9CisKIAlyZXR1cm4gcmVhZG91dF9wbGFuZV9zdGF0 ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSk7CiB9CiAKQEAgLTE1NTEyLDcgKzE1NDc3LDcgQEAg c3RhdGljIGludCByZWFkb3V0X2h3X2Nvbm5lY3Rvcl9lbmNvZGVyX3N0YXRlKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCQkJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVyLCBj cnRjX3N0YXRlKTsKIAotCQkJaWYgKGNvbm5lY3Rvcl9zdGF0ZSkKKwkJCWlmICghV0FSTl9PTigh Y29ubmVjdG9yX3N0YXRlKSkKIAkJCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSAmY3J0Yy0+YmFz ZTsKIAkJfSBlbHNlIHsKIAkJCWVuY29kZXItPmJhc2UuY3J0YyA9IE5VTEw7CkBAIC0xNTU2NSw4 ICsxNTUzMCw4IEBAIGVycl9mcmVlOgogCiAvKiBTY2FuIG91dCB0aGUgY3VycmVudCBodyBtb2Rl c2V0IHN0YXRlLCBzYW5pdGl6ZXMgaXQgYW5kIG1hcHMgaXQgaW50byB0aGUgZHJtCiAgKiBhbmQg aTkxNSBzdGF0ZSB0cmFja2luZyBzdHJ1Y3R1cmVzLiAqLwotdm9pZCBpbnRlbF9tb2Rlc2V0X3Nl dHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICBib29sIGZvcmNlX3Jl c3RvcmUpCitzdGF0aWMgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgoraW50ZWxfbW9kZXNldF9z ZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGZvcmNlX3Jlc3RvcmUp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CkBAIC0xNTU3NCwyNyArMTU1MzksNDIgQEAgdm9p ZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlOwogCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgc2hhcmVkX2RwbGxzW0k5 MTVfTlVNX1BMTFNdOwotCWludCBpOworCWludCBpLCByZXQ7CiAKIAlzdGF0ZSA9IGludGVsX21v ZGVzZXRfcmVhZG91dF9od19zdGF0ZShkZXYpOwogCWlmIChJU19FUlIoc3RhdGUpKSB7CiAJCURS TV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgb3V0IGh3IHN0YXRlXG4iKTsKLQkJcmV0dXJuOworCQly ZXR1cm4gTlVMTDsKIAl9CiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3Rh dGUpOwogCi0JLyogc3dhcCBzdy9odyBkcGxsIHN0YXRlICovCi0JaW50ZWxfYXRvbWljX2R1cGxp Y2F0ZV9kcGxsX3N0YXRlKGRldl9wcml2LCBzaGFyZWRfZHBsbHMpOwotCWludGVsX3NoYXJlZF9k cGxsX2NvbW1pdChzdGF0ZSk7Ci0JbWVtY3B5KHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSkt PnNoYXJlZF9kcGxsLAotCSAgICAgICBzaGFyZWRfZHBsbHMsIHNpemVvZigqc2hhcmVkX2RwbGxz KSAqIGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGwpOworCWlmIChmb3JjZV9yZXN0b3JlKSB7CisJ CS8qIHN3YXAgc3cvaHcgZHBsbCBzdGF0ZSAqLworCQlpbnRlbF9hdG9taWNfZHVwbGljYXRlX2Rw bGxfc3RhdGUoZGV2X3ByaXYsIHNoYXJlZF9kcGxscyk7CisJCWludGVsX3NoYXJlZF9kcGxsX2Nv bW1pdChzdGF0ZSk7CisJCW1lbWNweSh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5zaGFy ZWRfZHBsbCwKKwkJICAgICAgIHNoYXJlZF9kcGxscywgc2l6ZW9mKCpzaGFyZWRfZHBsbHMpICog ZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbCk7CisJfSBlbHNlIHsKKwkJaW50ZWxfc2hhcmVkX2Rw bGxfY29tbWl0KHN0YXRlKTsKKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+ZHBsbF9z ZXQgPSBmYWxzZTsKKwl9CiAKIAkvKiBIVyBzdGF0ZSBpcyByZWFkIG91dCwgbm93IHdlIG5lZWQg dG8gc2FuaXRpemUgdGhpcyBtZXNzLiAqLwogCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBl bmNvZGVyKSB7CiAJCWludGVsX3Nhbml0aXplX2VuY29kZXIoZW5jb2Rlcik7CiAJfQogCisJaWYg KCFmb3JjZV9yZXN0b3JlKSB7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlOworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCisJCWZvcl9lYWNoX2Nv bm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7CisJCQlj b25uX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7 CisJCQljb25uX3N0YXRlLT5jcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKKwkJfQorCX0K KwogCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsK IAkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwog CkBAIC0xNTYxNiw3ICsxNTU5Niw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgICZjcnRjLT5zdGF0ZS0+YWRqdXN0 ZWRfbW9kZSk7CiAJCX0KIAotCQlpbnRlbF9zYW5pdGl6ZV9jcnRjKGludGVsX2NydGMpOworCQlp bnRlbF9zYW5pdGl6ZV9jcnRjKGludGVsX2NydGMsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSksIGZvcmNlX3Jlc3RvcmUpOwogCiAJCS8qCiAJCSAqIHNhbml0aXplX2NydGMgbWF5IGhh dmUgZm9yY2VkIGFuIHVwZGF0ZSBvZiBjcnRjLT5zdGF0ZSwKQEAgLTE1NjQ2LDI5ICsxNTYyNiwy OCBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpCiAJCWlsa193bV9nZXRfaHdfc3Rh dGUoZGV2KTsKIAotCWlmIChmb3JjZV9yZXN0b3JlKSB7Ci0JCWludCByZXQ7CisJaWYgKCFmb3Jj ZV9yZXN0b3JlKQorCQlyZXR1cm4gc3RhdGU7CiAKLQkJaTkxNV9yZWRpc2FibGVfdmdhKGRldik7 CisJaTkxNV9yZWRpc2FibGVfdmdhKGRldik7CiAKLQkJcmV0ID0gaW50ZWxfc2V0X21vZGUoc3Rh dGUpOwotCQlpZiAocmV0KSB7Ci0JCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZXN0b3JlIHByZXZp b3VzIG1vZGVcbiIpOwotCQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQkJfQotCX0g ZWxzZSB7CisJcmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOworCWlmIChyZXQpIHsKKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gcmVzdG9yZSBwcmV2aW91cyBtb2RlXG4iKTsKIAkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKIAl9CiAKIAlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKGRl dik7CisJcmV0dXJuIE5VTEw7CiB9CiAKLXZvaWQgaW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVj dCBkcm1fY3J0YyAqYzsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCWludCBy ZXQ7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0 YyAqYzsKKwlpbnQgcmV0LCBpOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwog CWludGVsX2luaXRfZ3RfcG93ZXJzYXZlKGRldik7CkBAIC0xNTY5MywyNyArMTU2NzIsNjcgQEAg dm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJICog cGlubmVkICYgZmVuY2VkLiAgV2hlbiB3ZSBkbyB0aGUgYWxsb2NhdGlvbiBpdCdzIHRvbyBlYXJs eQogCSAqIGZvciB0aGlzLgogCSAqLwotCWZvcl9lYWNoX2NydGMoZGV2LCBjKSB7Ci0JCW9iaiA9 IGludGVsX2ZiX29iaihjLT5wcmltYXJ5LT5mYik7CisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgYywgY3J0Y19zdGF0ZSwgaSkgeworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZTsKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwkJaW50IGo7 CisJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjLT5wcmltYXJ5OworCisJCW9iaiA9IGlu dGVsX2ZiX29iaihwcmltYXJ5LT5zdGF0ZS0+ZmIpOwogCQlpZiAob2JqID09IE5VTEwpCi0JCQlj b250aW51ZTsKKwkJCWdvdG8gZGlzYWJsZTsKIAogCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Ci0JCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGMtPnByaW1hcnksCi0J CQkJCQkgYy0+cHJpbWFyeS0+ZmIsCi0JCQkJCQkgYy0+cHJpbWFyeS0+c3RhdGUsCi0JCQkJCQkg TlVMTCk7CisJCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHByaW1hcnksIHByaW1h cnktPnN0YXRlLT5mYiwKKwkJCQkJCSBwcmltYXJ5LT5zdGF0ZSwgTlVMTCk7CiAJCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAocmV0KSB7Ci0JCQlEUk1fRVJST1IoImZh aWxlZCB0byBwaW4gYm9vdCBmYiBvbiBwaXBlICVkXG4iLAotCQkJCSAgdG9faW50ZWxfY3J0Yyhj KS0+cGlwZSk7Ci0JCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoYy0+cHJpbWFyeS0+ZmIp OwotCQkJYy0+cHJpbWFyeS0+ZmIgPSBOVUxMOwotCQkJYy0+cHJpbWFyeS0+Y3J0YyA9IGMtPnBy aW1hcnktPnN0YXRlLT5jcnRjID0gTlVMTDsKLQkJCXVwZGF0ZV9zdGF0ZV9mYihjLT5wcmltYXJ5 KTsKLQkJCWMtPnN0YXRlLT5wbGFuZV9tYXNrICY9IH4oMSA8PCBkcm1fcGxhbmVfaW5kZXgoYy0+ cHJpbWFyeSkpOworCQlpZiAoIXJldCAmJiAhY3J0Y19zdGF0ZS0+YWN0aXZlKQorCQkJZ290byBk aXNhYmxlOworCisJCWlmICghcmV0KSB7CisJCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSA9CisJCQkJZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUoc3RhdGUs IHByaW1hcnkpOworCisJCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwbGFu ZV9zdGF0ZSwgYyk7CisJCQlXQVJOX09OKHJldCk7CisJCQlkcm1fYXRvbWljX3NldF9mYl9mb3Jf cGxhbmUocGxhbmVfc3RhdGUsIHByaW1hcnktPnN0YXRlLT5mYik7CisJCQljb250aW51ZTsKKwkJ fQorCisKKwkJb2JqLT5mcm9udGJ1ZmZlcl9iaXRzICY9CisJCQl+SU5URUxfRlJPTlRCVUZGRVJf UFJJTUFSWSh0b19pbnRlbF9jcnRjKGMpLT5waXBlKTsKKworCQlEUk1fRVJST1IoImZhaWxlZCB0 byBwaW4gYm9vdCBmYiBvbiBwaXBlICVkOiAlaVxuIiwKKwkJCSAgdG9faW50ZWxfY3J0YyhjKS0+ cGlwZSwgcmV0KTsKKworCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UocHJpbWFyeS0+c3Rh dGUtPmZiKTsKKwkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKHByaW1hcnktPmZiKTsKKwkJ cHJpbWFyeS0+ZmIgPSBwcmltYXJ5LT5zdGF0ZS0+ZmIgPSBOVUxMOworCQlwcmltYXJ5LT5jcnRj ID0gcHJpbWFyeS0+c3RhdGUtPmNydGMgPSBOVUxMOworCQkvKiBEbyBub3QgdXBkYXRlIGNydGNf c3RhdGUtPnBsYW5lX21hc2ssIHRoaXMgZm9yY2VzCisJCSAqIHRoZSBkaXNhYmxpbmcgb2YgdGhl IHByaW1hcnkgcGxhbmUgZHVyaW5nIG1vZGVzZXQuCisJCSAqLworCitkaXNhYmxlOgorCQljcnRj X3N0YXRlLT5hY3RpdmUgPSBjcnRjX3N0YXRlLT5lbmFibGUgPSBmYWxzZTsKKworCQlyZXQgPSBk cm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKGNydGNfc3RhdGUsIE5VTEwpOworCQlXQVJOX09O KHJldCk7CisKKwkJZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3Is IGNvbm5fc3RhdGUsIGopIHsKKwkJCWlmIChjb25uX3N0YXRlLT5jcnRjICE9IGMpCisJCQkJY29u dGludWU7CisKKwkJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25u X3N0YXRlLCBOVUxMKTsKKwkJCVdBUk5fT04ocmV0KTsKIAkJfQorCiAJfQorCXJldCA9IGludGVs X3NldF9tb2RlKHN0YXRlKTsKKwlpZiAocmV0KQorCQlEUk1fRVJST1IoIkluaXRpYWwgbW9kZXNl dCBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKKwlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7 CiAKIAlpbnRlbF9iYWNrbGlnaHRfcmVnaXN0ZXIoZGV2KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKaW5kZXggYmM3ZDBhMDAzYzhlLi5lYTM4MGI4M2ViNWQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewog CSAqLwogI2RlZmluZSBQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZTkNfRkxBR1MJKDE8PDApIC8q IHVucmVsaWFibGUgc3luYyBtb2RlLmZsYWdzICovCiAjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJL X0lOSEVSSVRFRF9NT0RFCSgxPDwxKSAvKiBtb2RlIGluaGVyaXRlZCBmcm9tIGZpcm13YXJlICov Ci0jZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExBTkVTCSgxPDwyKSAvKiBwbGFu ZXMgYXJlIGluIHVua25vd24gc3RhdGUgKi8KKyNkZWZpbmUgUElQRV9DT05GSUdfUVVJUktfV1JP TkdfUExBTkUJCSgxPDwyKSAvKiBpbnRlbF9jcnRjLT5wbGFuZSBpcyB3cm9uZyAqLwogCXVuc2ln bmVkIGxvbmcgcXVpcmtzOwogCiAJLyogUGlwZSBzb3VyY2Ugc2l6ZSAoaWUuIHBhbmVsIGZpdHRl ciBpbnB1dCBzaXplKQpAQCAtNTI4LDcgKzUyOCw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAl1 aW50MzJfdCBjdXJzb3Jfc2l6ZTsKIAl1aW50MzJfdCBjdXJzb3JfYmFzZTsKIAotCXN0cnVjdCBp bnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyBwbGFuZV9jb25maWc7CiAJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNvbmZpZzsKIAogCS8qIHJlc2V0IGNvdW50ZXIgdmFsdWUgd2hlbiB0aGUgbGFz dCBmbGlwIHdhcyBzdWJtaXR0ZWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCmluZGV4 IDYzNzJjZmM3ZDA1My4uNmFjNDk5MGEwYzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMKQEAgLTU4Miw3ICs1ODIsNiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jpb3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmZiID0g TlVMTDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGM7Ci0Jc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnICpwbGFuZV9jb25maWcg PSBOVUxMOwogCXVuc2lnbmVkIGludCBtYXhfc2l6ZSA9IDA7CiAKIAlpZiAoIWk5MTUuZmFzdGJv b3QpCkBAIC01OTAsMjAgKzU4OSwyMSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jp b3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCS8qIEZpbmQgdGhlIGxhcmdlc3QgZmIgKi8K IAlmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykgeworCQlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIg KnBsYW5lX2ZiID0KKwkJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKGNydGMtPnByaW1hcnktPnN0YXRl LT5mYik7CiAJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCi0JCWlmICghaW50 ZWxfY3J0Yy0+YWN0aXZlIHx8ICFjcnRjLT5wcmltYXJ5LT5mYikgeworCQlpZiAoIWludGVsX2Ny dGMtPmFjdGl2ZSB8fCAhcGxhbmVfZmIpIHsKIAkJCURSTV9ERUJVR19LTVMoInBpcGUgJWMgbm90 IGFjdGl2ZSBvciBubyBmYiwgc2tpcHBpbmdcbiIsCiAJCQkJICAgICAgcGlwZV9uYW1lKGludGVs X2NydGMtPnBpcGUpKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKGludGVsX2NydGMtPnBs YW5lX2NvbmZpZy5zaXplID4gbWF4X3NpemUpIHsKKwkJaWYgKHBsYW5lX2ZiLT5vYmotPmJhc2Uu c2l6ZSA+IG1heF9zaXplKSB7CiAJCQlEUk1fREVCVUdfS01TKCJmb3VuZCBwb3NzaWJsZSBmYiBm cm9tIHBsYW5lICVjXG4iLAogCQkJCSAgICAgIHBpcGVfbmFtZShpbnRlbF9jcnRjLT5waXBlKSk7 Ci0JCQlwbGFuZV9jb25maWcgPSAmaW50ZWxfY3J0Yy0+cGxhbmVfY29uZmlnOwogCQkJZmIgPSB0 b19pbnRlbF9mcmFtZWJ1ZmZlcihjcnRjLT5wcmltYXJ5LT5mYik7Ci0JCQltYXhfc2l6ZSA9IHBs YW5lX2NvbmZpZy0+c2l6ZTsKKwkJCW1heF9zaXplID0gZmItPm9iai0+YmFzZS5zaXplOwogCQl9 CiAJfQogCkBAIC02MzgsNyArNjM4LDYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJkZXZfaW5pdF9i aW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlEUk1fREVCVUdfS01TKCJmYiBub3Qgd2lk ZSBlbm91Z2ggZm9yIHBsYW5lICVjICglZCB2cyAlZClcbiIsCiAJCQkJICAgICAgcGlwZV9uYW1l KGludGVsX2NydGMtPnBpcGUpLAogCQkJCSAgICAgIGN1cl9zaXplLCBmYi0+YmFzZS5waXRjaGVz WzBdKTsKLQkJCXBsYW5lX2NvbmZpZyA9IE5VTEw7CiAJCQlmYiA9IE5VTEw7CiAJCQlicmVhazsK IAkJfQpAQCAtNjU5LDcgKzY1OCw2IEBAIHN0YXRpYyBib29sIGludGVsX2ZiZGV2X2luaXRfYmlv cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJRFJNX0RFQlVHX0tNUygiZmIgbm90IGJpZyBl bm91Z2ggZm9yIHBsYW5lICVjICglZCB2cyAlZClcbiIsCiAJCQkJICAgICAgcGlwZV9uYW1lKGlu dGVsX2NydGMtPnBpcGUpLAogCQkJCSAgICAgIGN1cl9zaXplLCBtYXhfc2l6ZSk7Ci0JCQlwbGFu ZV9jb25maWcgPSBOVUxMOwogCQkJZmIgPSBOVUxMOwogCQkJYnJlYWs7CiAJCX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2x2ZHMuYwppbmRleCAxNjFhYjI2ZjgxZmIuLjc4ZDg2YWUwMTYyMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2x2ZHMuYwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfbGlkX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIHZh bCwKIAkgKi8KIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2KSkgewogCQlkcm1fbW9kZXNldF9sb2Nr X2FsbChkZXYpOwotCQlpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKGRldiwgdHJ1ZSk7CisJ CWludGVsX2Rpc3BsYXlfcmVzdW1lKGRldik7CiAJCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2 KTsKIAl9CiAKLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=