From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [RFC PATCH 2/7] drm/i915: Read hw state into an atomic state struct, try 2. Date: Fri, 19 Jun 2015 10:02:25 +0200 Message-ID: <1434700950-16242-3-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 5EFFF6E64C 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 VG8gbWFrZSB0aGlzIHdvcmsgd2UgbG9hZCB0aGUgbmV3IGhhcmR3YXJlIHN0YXRlIGludG8gdGhl CmF0b21pY19zdGF0ZSwgdGhlbiBzd2FwIGl0IHdpdGggdGhlIHN3IHN0YXRlLgoKVGhpcyBsZXRz IHVzIGNoYW5nZSB0aGUgZm9yY2UgcmVzdG9yZSBwYXRoIGluIHNldHVwX2h3X3N0YXRlKCkKdG8g dXNlIGEgc2luZ2xlIGNhbGwgdG8gaW50ZWxfbW9kZV9zZXQoKSB0byByZXN0b3JlIGFsbCB0aGUK cHJldmlvdXMgc3RhdGUuCgpBcyBhIG5pY2UgYm9udXMgdGhpcyBraWxscyBvZmYgZW5jb2Rlci0+ bmV3X2VuY29kZXIsCmNvbm5lY3Rvci0+bmV3X2VuYWJsZWQgYW5kIGNydGMtPm5ld19lbmFibGVk LiBUaGV5IHdlcmUgdXNlZCBvbmx5CnRvIHJlc3RvcmUgdGhlIHN0YXRlIGFmdGVyIGEgbW9kZXNl dC4KCkNoYW5nZSBzaW5jZSB0cnkxOgotIEZpeCB0aGUgcmVncmVzc2lvbnMgY2F1c2VkIGJ5IG5v dCB1cGRhdGluZyBkcm0gY29yZSBzdyBzdGF0ZS4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgfCAzODEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxNCArLQogMyBmaWxl cyBjaGFuZ2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmMKaW5kZXggNDI5Njc3YTExMWQ1Li40ZDg3NTc0YTIwMzIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCkBAIC0zOTgsNyArMzk4LDcgQEAgaW50IGlu dGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyB2b2lkCit2b2lkCiBpbnRlbF9hdG9taWNfZHVwbGljYXRlX2RwbGxf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGwpCiB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKaW5kZXggYjNkOGQxYTMwYTA0Li40MTE5M2RhYjU4YzUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEwMjMxLDcgKzEwMjMxLDcgQEAgYm9vbCBp bnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAogcmV0cnk6CiAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0aW9uX211 dGV4LCBjdHgpOwogCWlmIChyZXQpCi0JCWdvdG8gZmFpbF91bmxvY2s7CisJCWdvdG8gZmFpbDsK IAogCS8qCiAJICogQWxnb3JpdGhtIGdldHMgYSBsaXR0bGUgbWVzc3k6CkBAIC0xMDI0OSwxMCAr MTAyNDksMTAgQEAgcmV0cnk6CiAKIAkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0 ZXgsIGN0eCk7CiAJCWlmIChyZXQpCi0JCQlnb3RvIGZhaWxfdW5sb2NrOworCQkJZ290byBmYWls OwogCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgY3R4KTsK IAkJaWYgKHJldCkKLQkJCWdvdG8gZmFpbF91bmxvY2s7CisJCQlnb3RvIGZhaWw7CiAKIAkJb2xk LT5kcG1zX21vZGUgPSBjb25uZWN0b3ItPmRwbXM7CiAJCW9sZC0+bG9hZF9kZXRlY3RfdGVtcCA9 IGZhbHNlOwpAQCAtMTAyNzEsOSArMTAyNzEsNiBAQCByZXRyeToKIAkJCWNvbnRpbnVlOwogCQlp ZiAocG9zc2libGVfY3J0Yy0+c3RhdGUtPmVuYWJsZSkKIAkJCWNvbnRpbnVlOwotCQkvKiBUaGlz IGNhbiBvY2N1ciB3aGVuIGFwcGx5aW5nIHRoZSBwaXBlIEEgcXVpcmsgb24gcmVzdW1lLiAqLwot CQlpZiAodG9faW50ZWxfY3J0Yyhwb3NzaWJsZV9jcnRjKS0+bmV3X2VuYWJsZWQpCi0JCQljb250 aW51ZTsKIAogCQljcnRjID0gcG9zc2libGVfY3J0YzsKIAkJYnJlYWs7CkBAIC0xMDI4NCwyMCAr MTAyODEsMTcgQEAgcmV0cnk6CiAJICovCiAJaWYgKCFjcnRjKSB7CiAJCURSTV9ERUJVR19LTVMo Im5vIHBpcGUgYXZhaWxhYmxlIGZvciBsb2FkLWRldGVjdFxuIik7Ci0JCWdvdG8gZmFpbF91bmxv Y2s7CisJCWdvdG8gZmFpbDsKIAl9CiAKIAlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5t dXRleCwgY3R4KTsKIAlpZiAocmV0KQotCQlnb3RvIGZhaWxfdW5sb2NrOworCQlnb3RvIGZhaWw7 CiAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsIGN0eCk7CiAJ aWYgKHJldCkKLQkJZ290byBmYWlsX3VubG9jazsKLQlpbnRlbF9lbmNvZGVyLT5uZXdfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3RvciktPm5l d19lbmNvZGVyID0gaW50ZWxfZW5jb2RlcjsKKwkJZ290byBmYWlsOwogCiAJaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JaW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQgPSB0cnVlOwog CW9sZC0+ZHBtc19tb2RlID0gY29ubmVjdG9yLT5kcG1zOwogCW9sZC0+bG9hZF9kZXRlY3RfdGVt cCA9IHRydWU7CiAJb2xkLT5yZWxlYXNlX2ZiID0gTlVMTDsKQEAgLTEwMzY1LDkgKzEwMzU5LDcg QEAgcmV0cnk6CiAJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7 CiAJcmV0dXJuIHRydWU7CiAKLSBmYWlsOgotCWludGVsX2NydGMtPm5ld19lbmFibGVkID0gY3J0 Yy0+c3RhdGUtPmVuYWJsZTsKLWZhaWxfdW5sb2NrOgorZmFpbDoKIAlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOwogCXN0YXRlID0gTlVMTDsKIApAQCAtMTA0MTMsMTAgKzEwNDA1LDYgQEAg dm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKIAkJCWdvdG8gZmFpbDsKIAot CQl0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+bmV3X2VuY29kZXIgPSBOVUxMOwotCQlp bnRlbF9lbmNvZGVyLT5uZXdfY3J0YyA9IE5VTEw7Ci0JCWludGVsX2NydGMtPm5ld19lbmFibGVk ID0gZmFsc2U7Ci0KIAkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwogCQlj b25uZWN0b3Jfc3RhdGUtPmNydGMgPSBOVUxMOwogCkBAIC0xMTg2OSwzMyArMTE4NTcsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJfZnVu Y3MgPSB7CiAJLmF0b21pY19jaGVjayA9IGludGVsX2NydGNfYXRvbWljX2NoZWNrLAogfTsKIAot LyoqCi0gKiBpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGFnZWRfb3V0cHV0X3N0YXRlCi0gKgotICog VXBkYXRlcyB0aGUgc3RhZ2VkIG91dHB1dCBjb25maWd1cmF0aW9uIHN0YXRlLCBlLmcuIGFmdGVy IHdlJ3ZlIHJlYWQgb3V0IHRoZQotICogY3VycmVudCBodyBzdGF0ZS4KLSAqLwotc3RhdGljIHZv aWQgaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQotewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwotCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOwotCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQot CWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3RvcikgewotCQljb25uZWN0b3It Pm5ld19lbmNvZGVyID0KLQkJCXRvX2ludGVsX2VuY29kZXIoY29ubmVjdG9yLT5iYXNlLmVuY29k ZXIpOwotCX0KLQotCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBlbmNvZGVyKSB7Ci0JCWVu Y29kZXItPm5ld19jcnRjID0KLQkJCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsK LQl9Ci0KLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewotCQljcnRjLT5uZXdfZW5h YmxlZCA9IGNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZTsKLQl9Ci19Ci0KIC8qIFRyYW5zaXRpb25h bCBoZWxwZXIgdG8gY29weSBjdXJyZW50IGNvbm5lY3Rvci9lbmNvZGVyIHN0YXRlIHRvCiAgKiBj b25uZWN0b3ItPnN0YXRlLiBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IGNvZGUgdGhhdCBpcyBwYXJ0 aWFsbHkKICAqIGNvbnZlcnRlZCB0byBhdG9taWMgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCkBAIC0x MjM0OSw3ICsxMjMxMCw2IEBAIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YXRlKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKIAl9CiAKIAlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVn YWN5X21vZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwotCWludGVsX21vZGVzZXRfdXBk YXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUoc3RhdGUtPmRldik7CiAKIAkvKiBEb3VibGUgY2hlY2sg c3RhdGUuICovCiAJZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIHsKQEAgLTEyNjU5LDExICsxMjYx OSwxNCBAQCBjaGVja19jb25uZWN0b3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CiAKIAlmb3JfZWFjaF9pbnRlbF9jb25u ZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKKwkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0g Y29ubmVjdG9yLT5iYXNlLmVuY29kZXI7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpz dGF0ZSA9IGNvbm5lY3Rvci0+YmFzZS5zdGF0ZTsKKwogCQkvKiBUaGlzIGFsc28gY2hlY2tzIHRo ZSBlbmNvZGVyL2Nvbm5lY3RvciBodyBzdGF0ZSB3aXRoIHRoZQogCQkgKiAtPmdldF9od19zdGF0 ZSBjYWxsYmFja3MuICovCiAJCWludGVsX2Nvbm5lY3Rvcl9jaGVja19zdGF0ZShjb25uZWN0b3Ip OwogCi0JCUk5MTVfU1RBVEVfV0FSTigmY29ubmVjdG9yLT5uZXdfZW5jb2Rlci0+YmFzZSAhPSBj b25uZWN0b3ItPmJhc2UuZW5jb2RlciwKKwkJSTkxNV9TVEFURV9XQVJOKHN0YXRlLT5iZXN0X2Vu Y29kZXIgIT0gZW5jb2RlciwKIAkJICAgICAiY29ubmVjdG9yJ3Mgc3RhZ2VkIGVuY29kZXIgZG9l c24ndCBtYXRjaCBjdXJyZW50IGVuY29kZXJcbiIpOwogCX0KIH0KQEAgLTEyNjgzLDggKzEyNjQ2 LDYgQEAgY2hlY2tfZW5jb2Rlcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJICAg ICAgZW5jb2Rlci0+YmFzZS5iYXNlLmlkLAogCQkJICAgICAgZW5jb2Rlci0+YmFzZS5uYW1lKTsK IAotCQlJOTE1X1NUQVRFX1dBUk4oJmVuY29kZXItPm5ld19jcnRjLT5iYXNlICE9IGVuY29kZXIt PmJhc2UuY3J0YywKLQkJICAgICAiZW5jb2RlcidzIHN0YWdlIGNydGMgZG9lc24ndCBtYXRjaCBj dXJyZW50IGNydGNcbiIpOwogCQlJOTE1X1NUQVRFX1dBUk4oZW5jb2Rlci0+Y29ubmVjdG9yc19h Y3RpdmUgJiYgIWVuY29kZXItPmJhc2UuY3J0YywKIAkJICAgICAiZW5jb2RlcidzIGFjdGl2ZV9j b25uZWN0b3JzIHNldCwgYnV0IG5vIGNydGNcbiIpOwogCkBAIC0xMjY5NCw2ICsxMjY1NSw5IEBA IGNoZWNrX2VuY29kZXJfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCWVuYWJsZWQg PSB0cnVlOwogCQkJaWYgKGNvbm5lY3Rvci0+YmFzZS5kcG1zICE9IERSTV9NT0RFX0RQTVNfT0ZG KQogCQkJCWFjdGl2ZSA9IHRydWU7CisKKwkJCUk5MTVfU1RBVEVfV0FSTihjb25uZWN0b3ItPmJh c2Uuc3RhdGUtPmNydGMgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAorCQkJICAgICAiZW5jb2Rlcidz IHN0YWdlIGNydGMgZG9lc24ndCBtYXRjaCBjdXJyZW50IGNydGNcbiIpOwogCQl9CiAJCS8qCiAJ CSAqIGZvciBNU1QgY29ubmVjdG9ycyBpZiB3ZSB1bnBsdWcgdGhlIGNvbm5lY3RvciBpcyBnb25l CkBAIC0xMzI1NSwxMSArMTMyMTksMTEgQEAgdm9pZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICogbmVlZCB0byBjb3B5IHRoZSBzdGFnZWQgY29uZmln IHRvIHRoZSBhdG9taWMgc3RhdGUsIG90aGVyd2lzZSB0aGUKIAkgKiBtb2RlIHNldCB3aWxsIGp1 c3QgcmVhcHBseSB0aGUgc3RhdGUgdGhlIEhXIGlzIGFscmVhZHkgaW4uICovCiAJZm9yX2VhY2hf aW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKLQkJaWYgKCZlbmNvZGVyLT5uZXdfY3J0Yy0+ YmFzZSAhPSBjcnRjKQorCQlpZiAoZW5jb2Rlci0+YmFzZS5jcnRjICE9IGNydGMpCiAJCQljb250 aW51ZTsKIAogCQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKLQkJ CWlmIChjb25uZWN0b3ItPm5ld19lbmNvZGVyICE9IGVuY29kZXIpCisJCQlpZiAoY29ubmVjdG9y LT5iYXNlLnN0YXRlLT5iZXN0X2VuY29kZXIgIT0gJmVuY29kZXItPmJhc2UpCiAJCQkJY29udGlu dWU7CiAKIAkJCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0 ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7CkBAIC0xMzI3MiwxNCArMTMyMzYsMTAgQEAgdm9p ZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCQl9CiAK IAkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyA9IGNydGM7Ci0JCQljb25uZWN0b3Jfc3RhdGUtPmJl c3RfZW5jb2RlciA9ICZlbmNvZGVyLT5iYXNlOwogCQl9CiAJfQogCiAJZm9yX2VhY2hfaW50ZWxf Y3J0YyhkZXYsIGludGVsX2NydGMpIHsKLQkJaWYgKGludGVsX2NydGMtPm5ld19lbmFibGVkID09 IGludGVsX2NydGMtPmJhc2UuZW5hYmxlZCkKLQkJCWNvbnRpbnVlOwotCiAJCWNydGNfc3RhdGUg PSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwogCQlpZiAo SVNfRVJSKGNydGNfc3RhdGUpKSB7CiAJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gYWRkIFtD UlRDOiVkXSB0byBzdGF0ZTogJWxkXG4iLApAQCAtMTMyODgsOSArMTMyNDgsNiBAQCB2b2lkIGlu dGVsX2NydGNfcmVzdG9yZV9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJCWNvbnRpbnVl OwogCQl9CiAKLQkJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgPSBjcnRjX3N0YXRlLT5iYXNlLmVu YWJsZSA9Ci0JCQlpbnRlbF9jcnRjLT5uZXdfZW5hYmxlZDsKLQogCQlpZiAoJmludGVsX2NydGMt PmJhc2UgPT0gY3J0YykKIAkJCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmJhc2UubW9kZSwg JmNydGMtPm1vZGUpOwogCX0KQEAgLTE1MTgxLDggKzE1MTM4LDkgQEAgc3RhdGljIHZvaWQgaW50 ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAogCS8qIHJlc3RvcmUg dmJsYW5rIGludGVycnVwdHMgdG8gY29ycmVjdCBzdGF0ZSAqLwogCWRybV9jcnRjX3ZibGFua19y ZXNldCgmY3J0Yy0+YmFzZSk7Ci0JaWYgKGNydGMtPmFjdGl2ZSkgeworCWlmIChjcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUpIHsKIAkJdXBkYXRlX3NjYW5saW5lX29mZnNldChjcnRjKTsKKwkJZHJt X2NhbGNfdGltZXN0YW1waW5nX2NvbnN0YW50cygmY3J0Yy0+YmFzZSwgJmNydGMtPmJhc2UuaHdt b2RlKTsKIAkJZHJtX2NydGNfdmJsYW5rX29uKCZjcnRjLT5iYXNlKTsKIAl9CiAKQEAgLTE1MzUw LDEyICsxNTMwOCwxNCBAQCBzdGF0aWMgYm9vbCBwcmltYXJ5X2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKIAlyZXR1cm4gISEoSTkxNV9SRUFEKERTUENOVFIoY3J0Yy0+cGxh bmUpKSAmIERJU1BMQVlfUExBTkVfRU5BQkxFKTsKIH0KIAotc3RhdGljIHZvaWQgcmVhZG91dF9w bGFuZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKK3N0YXRpYyBpbnQgcmVhZG91dF9w bGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiB7CiAJc3RydWN0IGludGVsX3BsYW5lICpwOwogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRy bV9wbGFuZV9zdGF0ZTsKIAlib29sIGFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwor CWludCByZXQgPSAwOwogCiAJaWYgKGFjdGl2ZSkgewogCQljcnRjX3N0YXRlLT5xdWlya3MgfD0g UElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVM7CkBAIC0xNTM3MSw3ICsxNTMzMSwxMSBA QCBzdGF0aWMgdm9pZCByZWFkb3V0X3BsYW5lX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCQlpZiAoY3J0Yy0+cGlwZSAhPSBwLT5waXBlKQogCQkJY29udGludWU7CiAKLQkJZHJtX3Bs YW5lX3N0YXRlID0gcC0+YmFzZS5zdGF0ZTsKKwkJZHJtX3BsYW5lX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsICZwLT5iYXNlKTsKKwkJaWYgKElTX0VSUihkcm1fcGxh bmVfc3RhdGUpKSB7CisJCQlyZXQgPSBQVFJfRVJSKGRybV9wbGFuZV9zdGF0ZSk7CisJCQlicmVh azsKKwkJfQogCiAJCS8qIFBsYW5lIHNjYWxlciBzdGF0ZSBpcyBub3QgdG91Y2hlZCBoZXJlLiBU aGUgZmlyc3QgYXRvbWljCiAJCSAqIGNvbW1pdCB3aWxsIHJlc3RvcmUgYWxsIHBsYW5lIHNjYWxl cnMgdG8gaXRzIG9sZCBzdGF0ZS4KQEAgLTE1Mzg4LDEwMSArMTUzNTIsMjE1IEBAIHN0YXRpYyB2 b2lkIHJlYWRvdXRfcGxhbmVfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQl0b19p bnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmVfc3RhdGUpLT52aXNpYmxlID0gZmFsc2U7CiAJCX0K IAorCQlwLT5iYXNlLmNydGMgPSBkcm1fcGxhbmVfc3RhdGUtPmNydGM7CiAJCWlmICh2aXNpYmxl KSB7CiAJCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgfD0KIAkJCQkxIDw8IGRybV9wbGFu ZV9pbmRleCgmcC0+YmFzZSk7Ci0JCX0gZWxzZSBpZiAoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSkg ewotCQkJLyogTWFrZSB0aGlzIHVuY29uZGl0aW9uYWwgZm9yIGF0b21pYyBodyByZWFkb3V0LiAq LworCQl9IGVsc2UgewogCQkJY3J0Y19zdGF0ZS0+YmFzZS5wbGFuZV9tYXNrICY9CiAJCQkJfigx IDw8IGRybV9wbGFuZV9pbmRleCgmcC0+YmFzZSkpOwogCQl9CiAJfQorCisJcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCitzdGF0aWMgaW50IHJlYWRvdXRfaHdfY3J0Y19zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Ci0JZW51bSBwaXBlIHBpcGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0Jc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7Ci0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y OwotCWludCBpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo c3RhdGUtPmRldik7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJaW50 IHJldDsKIAotCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Ci0JCW1lbXNldChjcnRj LT5jb25maWcsIDAsIHNpemVvZigqY3J0Yy0+Y29uZmlnKSk7Ci0JCWNydGMtPmNvbmZpZy0+YmFz ZS5jcnRjID0gJmNydGMtPmJhc2U7CisJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0 Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKKwkJcmV0dXJu IFBUUl9FUlIoY3J0Y19zdGF0ZSk7CiAKLQkJY3J0Yy0+Y29uZmlnLT5xdWlya3MgfD0gUElQRV9D T05GSUdfUVVJUktfSU5IRVJJVEVEX01PREU7CisJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0 ZWRfcGxhbmVzKHN0YXRlLCAmY3J0Yy0+YmFzZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK IAotCQljcnRjLT5hY3RpdmUgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0 YywKLQkJCQkJCQkJIGNydGMtPmNvbmZpZyk7CisJbWVtc2V0KGNydGNfc3RhdGUsIDAsIHNpemVv ZigqY3J0Y19zdGF0ZSkpOworCWNydGNfc3RhdGUtPmJhc2UuY3J0YyA9ICZjcnRjLT5iYXNlOwor CWNydGNfc3RhdGUtPmJhc2Uuc3RhdGUgPSBzdGF0ZTsKIAotCQljcnRjLT5iYXNlLnN0YXRlLT5l bmFibGUgPSBjcnRjLT5hY3RpdmU7Ci0JCWNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSA9IGNydGMt PmFjdGl2ZTsKLQkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+YWN0aXZlOwotCQljcnRjLT5i YXNlLmh3bW9kZSA9IGNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCWNydGNfc3Rh dGUtPnF1aXJrcyB8PSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERTsKIAotCQlyZWFk b3V0X3BsYW5lX3N0YXRlKGNydGMsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0 ZSkpOworCWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID0gY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUg PQorCWNydGMtPmJhc2UuZW5hYmxlZCA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZp ZyhjcnRjLCBjcnRjX3N0YXRlKTsKIAotCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gaHcgc3Rh dGUgcmVhZG91dDogJXNcbiIsCi0JCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQsCi0JCQkgICAg ICBjcnRjLT5hY3RpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKLQl9CisJLyogdXBkYXRl IHRyYW5zaXRpb25hbCBzdGF0ZSAqLworCWNydGMtPmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlOworCWNydGMtPmNvbmZpZyA9IGNydGNfc3RhdGU7CisKKwlEUk1fREVCVUdfS01TKCJb Q1JUQzolZF0gaHcgc3RhdGUgcmVhZG91dDogJXNcbiIsCisJCSAgICAgIGNydGMtPmJhc2UuYmFz ZS5pZCwKKwkJICAgICAgY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgPyAiZW5hYmxlZCIgOiAiZGlz YWJsZWQiKTsKKworCXJldHVybiByZWFkb3V0X3BsYW5lX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlKTsKK30KIAorc3RhdGljIGludCByZWFkb3V0X2h3X3BsbF9zdGF0ZShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29u ZmlnICpzaGFyZWRfZHBsbDsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgaTsKKworCXNoYXJlZF9kcGxsID0gaW50 ZWxfYXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0ZShzdGF0ZSk7CiAJZm9yIChpID0gMDsgaSA8 IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewogCQlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldOwogCiAJCXBsbC0+b24gPSBw bGwtPmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLAotCQkJCQkgICAgJnBsbC0+Y29uZmlnLmh3 X3N0YXRlKTsKKwkJCQkJICAgICZzaGFyZWRfZHBsbFtpXS5od19zdGF0ZSk7CisKIAkJcGxsLT5h Y3RpdmUgPSAwOwotCQlwbGwtPmNvbmZpZy5jcnRjX21hc2sgPSAwOwotCQlmb3JfZWFjaF9pbnRl bF9jcnRjKGRldiwgY3J0YykgewotCQkJaWYgKGNydGMtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjX3Rv X3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkgeworCQlzaGFyZWRfZHBsbFtpXS5jcnRjX21hc2sg PSAwOworCisJCWZvcl9lYWNoX2ludGVsX2NydGMoc3RhdGUtPmRldiwgY3J0YykgeworCQkJY3J0 Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJCQlp ZiAoSVNfRVJSKGNydGNfc3RhdGUpKQorCQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwor CisJCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKKwkJCSAgICBjcnRjX3N0YXRlLT5z aGFyZWRfZHBsbCA9PSBpKSB7CiAJCQkJcGxsLT5hY3RpdmUrKzsKLQkJCQlwbGwtPmNvbmZpZy5j cnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOworCQkJCXNoYXJlZF9kcGxsW2ldLmNydGNfbWFz ayB8PQorCQkJCQkxIDw8IGNydGMtPnBpcGU7CiAJCQl9CiAJCX0KIAogCQlEUk1fREVCVUdfS01T KCIlcyBodyBzdGF0ZSByZWFkb3V0OiBjcnRjX21hc2sgMHglMDh4LCBvbiAlaVxuIiwKLQkJCSAg ICAgIHBsbC0+bmFtZSwgcGxsLT5jb25maWcuY3J0Y19tYXNrLCBwbGwtPm9uKTsKKwkJCSAgICAg IHBsbC0+bmFtZSwgc2hhcmVkX2RwbGxbaV0uY3J0Y19tYXNrLAorCQkJICAgICAgcGxsLT5vbik7 CiAKLQkJaWYgKHBsbC0+Y29uZmlnLmNydGNfbWFzaykKKwkJaWYgKHNoYXJlZF9kcGxsW2ldLmNy dGNfbWFzaykKIAkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01B SU5fUExMUyk7CiAJfQogCi0JZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsK LQkJcGlwZSA9IDA7CisJcmV0dXJuIDA7Cit9CiAKLQkJaWYgKGVuY29kZXItPmdldF9od19zdGF0 ZShlbmNvZGVyLCAmcGlwZSkpIHsKLQkJCWNydGMgPSB0b19pbnRlbF9jcnRjKGRldl9wcml2LT5w aXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXSk7Ci0JCQllbmNvZGVyLT5iYXNlLmNydGMgPSAmY3J0 Yy0+YmFzZTsKLQkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgY3J0Yy0+Y29uZmlnKTsK LQkJfSBlbHNlIHsKLQkJCWVuY29kZXItPmJhc2UuY3J0YyA9IE5VTEw7Ci0JCX0KK3N0YXRpYyBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqCitnZXRfY29ubmVjdG9yX3N0YXRlX2Zvcl9lbmNv ZGVyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCQlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CisJaW50IGk7CiAKLQkJ ZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgPSBmYWxzZTsKLQkJRFJNX0RFQlVHX0tNUygiW0VO Q09ERVI6JWQ6JXNdIGh3IHN0YXRlIHJlYWRvdXQ6ICVzLCBwaXBlICVjXG4iLAotCQkJICAgICAg ZW5jb2Rlci0+YmFzZS5iYXNlLmlkLAotCQkJICAgICAgZW5jb2Rlci0+YmFzZS5uYW1lLAotCQkJ ICAgICAgZW5jb2Rlci0+YmFzZS5jcnRjID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKLQkJCSAg ICAgIHBpcGVfbmFtZShwaXBlKSk7Ci0JfQorCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShz dGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpCisJCWlmIChjb25uZWN0b3Jfc3Rh dGUtPmJlc3RfZW5jb2RlciA9PSAmZW5jb2Rlci0+YmFzZSkKKwkJCXJldHVybiBjb25uZWN0b3Jf c3RhdGU7CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCByZWFkb3V0X2h3X2Nvbm5l Y3Rvcl9lbmNvZGVyX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqZHJtX2NydGNfc3RhdGU7CisJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXI7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CisJZW51bSBwaXBlIHBpcGU7CiAKIAlm b3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKKwkJY29ubmVjdG9yX3N0 YXRlID0KKwkJCWRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rv ci0+YmFzZSk7CisJCWlmIChJU19FUlIoY29ubmVjdG9yX3N0YXRlKSkKKwkJCXJldHVybiBQVFJf RVJSKGNvbm5lY3Rvcl9zdGF0ZSk7CisKIAkJaWYgKGNvbm5lY3Rvci0+Z2V0X2h3X3N0YXRlKGNv bm5lY3RvcikpIHsKIAkJCWNvbm5lY3Rvci0+YmFzZS5kcG1zID0gRFJNX01PREVfRFBNU19PTjsK LQkJCWNvbm5lY3Rvci0+ZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgPSB0cnVlOwogCQkJY29u bmVjdG9yLT5iYXNlLmVuY29kZXIgPSAmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlOwogCQl9IGVs c2UgewogCQkJY29ubmVjdG9yLT5iYXNlLmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKIAkJCWNv bm5lY3Rvci0+YmFzZS5lbmNvZGVyID0gTlVMTDsKIAkJfQorCisJCS8qIFdlJ2xsIHVwZGF0ZSB0 aGUgY3J0YyBmaWVsZCB3aGVuIHJlYWRpbmcgZW5jb2RlciBzdGF0ZSAqLworCQljb25uZWN0b3Jf c3RhdGUtPmNydGMgPSBOVUxMOworCQljb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciA9IGNv bm5lY3Rvci0+YmFzZS5lbmNvZGVyOworCiAJCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6 JXNdIGh3IHN0YXRlIHJlYWRvdXQ6ICVzXG4iLAogCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmJh c2UuaWQsCiAJCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwKIAkJCSAgICAgIGNvbm5lY3Rv ci0+YmFzZS5lbmNvZGVyID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CiAJfQorCisJZm9yX2Vh Y2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKKwkJcGlwZSA9IDA7CisKKwkJY29ubmVj dG9yX3N0YXRlID0KKwkJCWdldF9jb25uZWN0b3Jfc3RhdGVfZm9yX2VuY29kZXIoc3RhdGUsIGVu Y29kZXIpOworCisJCWVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlID0gISFjb25uZWN0b3Jfc3Rh dGU7CisKKwkJaWYgKGVuY29kZXItPmdldF9od19zdGF0ZShlbmNvZGVyLCAmcGlwZSkpIHsKKwkJ CWVuY29kZXItPmJhc2UuY3J0YyA9CisJCQkJZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5n W3BpcGVdOworCQkJY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKKwor CQkJZHJtX2NydGNfc3RhdGUgPQorCQkJCXN0YXRlLT5jcnRjX3N0YXRlc1tkcm1fY3J0Y19pbmRl eCgmY3J0Yy0+YmFzZSldOworCQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoZHJt X2NydGNfc3RhdGUpOworCisJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3Rh dGUpOworCisJCQlpZiAoY29ubmVjdG9yX3N0YXRlKQorCQkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0 YyA9ICZjcnRjLT5iYXNlOworCQl9IGVsc2UgeworCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVM TDsKKwkJfQorCisJCURSTV9ERUJVR19LTVMoIltFTkNPREVSOiVkOiVzXSBodyBzdGF0ZSByZWFk b3V0OiAlcywgcGlwZSAlY1xuIiwKKwkJCSAgICAgIGVuY29kZXItPmJhc2UuYmFzZS5pZCwKKwkJ CSAgICAgIGVuY29kZXItPmJhc2UubmFtZSwKKwkJCSAgICAgIGVuY29kZXItPmJhc2UuY3J0YyA/ ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIsCisJCQkgICAgICBwaXBlX25hbWUocGlwZSkpOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgoraW50 ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGM7CisJaW50IHJldCA9IDA7CisKKwlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2 KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXN0YXRlLT5h Y3F1aXJlX2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7CisKKwlmb3JfZWFjaF9p bnRlbF9jcnRjKGRldiwgY3J0YykgeworCQlyZXQgPSByZWFkb3V0X2h3X2NydGNfc3RhdGUoc3Rh dGUsIGNydGMpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlyZXQgPSBy ZWFkb3V0X2h3X3BsbF9zdGF0ZShzdGF0ZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZnJlZTsK KworCXJldCA9IHJlYWRvdXRfaHdfY29ubmVjdG9yX2VuY29kZXJfc3RhdGUoc3RhdGUpOworCWlm IChyZXQpCisJCWdvdG8gZXJyX2ZyZWU7CisKKwlyZXR1cm4gc3RhdGU7CisKK2Vycl9mcmVlOgor CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAogLyogU2NhbiBvdXQgdGhlIGN1cnJlbnQgaHcgbW9kZXNldCBzdGF0ZSwgc2FuaXRpemVzIGl0 IGFuZCBtYXBzIGl0IGludG8gdGhlIGRybQpAQCAtMTU0OTEsMzcgKzE1NTY5LDYxIEBAIHZvaWQg aW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJ CSAgYm9vbCBmb3JjZV9yZXN0b3JlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JZW51bSBwaXBlIHBpcGU7Ci0Jc3RydWN0IGludGVs X2NydGMgKmNydGM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2Nv bmZpZyBzaGFyZWRfZHBsbHNbSTkxNV9OVU1fUExMU107CiAJaW50IGk7CiAKLQlpbnRlbF9tb2Rl c2V0X3JlYWRvdXRfaHdfc3RhdGUoZGV2KTsKLQotCS8qCi0JICogTm93IHRoYXQgd2UgaGF2ZSB0 aGUgY29uZmlnLCBjb3B5IGl0IHRvIGVhY2ggQ1JUQyBzdHJ1Y3QKLQkgKiBOb3RlIHRoYXQgdGhp cyBjb3VsZCBnbyBhd2F5IGlmIHdlIG1vdmUgdG8gdXNpbmcgY3J0Y19jb25maWcKLQkgKiBjaGVj a2luZyBldmVyeXdoZXJlLgotCSAqLwotCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7 Ci0JCWlmIChjcnRjLT5hY3RpdmUgJiYgaTkxNS5mYXN0Ym9vdCkgewotCQkJaW50ZWxfbW9kZV9m cm9tX3BpcGVfY29uZmlnKCZjcnRjLT5iYXNlLm1vZGUsCi0JCQkJCQkgICAgY3J0Yy0+Y29uZmln KTsKLQkJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBmb3VuZCBhY3RpdmUgbW9kZTogIiwKLQkJ CQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQpOwotCQkJZHJtX21vZGVfZGVidWdfcHJpbnRtb2Rl bGluZSgmY3J0Yy0+YmFzZS5tb2RlKTsKLQkJfQorCXN0YXRlID0gaW50ZWxfbW9kZXNldF9yZWFk b3V0X2h3X3N0YXRlKGRldik7CisJaWYgKElTX0VSUihzdGF0ZSkpIHsKKwkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gcmVhZCBvdXQgaHcgc3RhdGVcbiIpOworCQlyZXR1cm47CiAJfQogCisJZHJtX2F0 b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRlKTsKKworCS8qIHN3YXAgc3cvaHcgZHBs bCBzdGF0ZSAqLworCWludGVsX2F0b21pY19kdXBsaWNhdGVfZHBsbF9zdGF0ZShkZXZfcHJpdiwg c2hhcmVkX2RwbGxzKTsKKwlpbnRlbF9zaGFyZWRfZHBsbF9jb21taXQoc3RhdGUpOworCW1lbWNw eSh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5zaGFyZWRfZHBsbCwKKwkgICAgICAgc2hh cmVkX2RwbGxzLCBzaXplb2YoKnNoYXJlZF9kcGxscykgKiBkZXZfcHJpdi0+bnVtX3NoYXJlZF9k cGxsKTsKKwogCS8qIEhXIHN0YXRlIGlzIHJlYWQgb3V0LCBub3cgd2UgbmVlZCB0byBzYW5pdGl6 ZSB0aGlzIG1lc3MuICovCiAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsK IAkJaW50ZWxfc2FuaXRpemVfZW5jb2RlcihlbmNvZGVyKTsKIAl9CiAKLQlmb3JfZWFjaF9waXBl KGRldl9wcml2LCBwaXBlKSB7Ci0JCWNydGMgPSB0b19pbnRlbF9jcnRjKGRldl9wcml2LT5waXBl X3RvX2NydGNfbWFwcGluZ1twaXBlXSk7Ci0JCWludGVsX3Nhbml0aXplX2NydGMoY3J0Yyk7Ci0J CWludGVsX2R1bXBfcGlwZV9jb25maWcoY3J0YywgY3J0Yy0+Y29uZmlnLAorCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwkJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJCS8qIHByZXZlbnQg dW5ubmVlZGVkIHJlc3RvcmVzIHdpdGggZm9yY2VfcmVzdG9yZSAqLworCQljcnRjX3N0YXRlLT5h Y3RpdmVfY2hhbmdlZCA9CisJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9CisJCWNydGNfc3Rh dGUtPnBsYW5lc19jaGFuZ2VkID0gZmFsc2U7CisKKwkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUp IHsKKwkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+bW9kZSwKKwkJCQl0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7CisJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9j b25maWcoJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlLAorCQkJCXRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpKTsKKworCQkJaWYgKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMo Y3J0Yy0+c3RhdGUsICZjcnRjLT5tb2RlKSA8IDApCisJCQkJZHJtX21vZGVfY29weSgmY3J0Yy0+ c3RhdGUtPm1vZGUsICZjcnRjLT5tb2RlKTsKKworCQkJZHJtX21vZGVfY29weSgmY3J0Yy0+aHdt b2RlLAorCQkJCSAgICAgICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCX0KKworCQlp bnRlbF9zYW5pdGl6ZV9jcnRjKGludGVsX2NydGMpOworCisJCS8qCisJCSAqIHNhbml0aXplX2Ny dGMgbWF5IGhhdmUgZm9yY2VkIGFuIHVwZGF0ZSBvZiBjcnRjLT5zdGF0ZSwKKwkJICogc28gcmVs b2FkIGluIGludGVsX2R1bXBfcGlwZV9jb25maWcKKwkJICovCisJCWludGVsX2R1bXBfcGlwZV9j b25maWcoaW50ZWxfY3J0YywKKwkJCQkgICAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSksCiAJCQkJICAgICAgICJbc2V0dXBfaHdfc3RhdGVdIik7CiAJfQogCkBAIC0xNTU0NSwy MCArMTU2NDcsMTcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCWlsa193bV9nZXRfaHdfc3RhdGUoZGV2KTsKIAogCWlmIChmb3Jj ZV9yZXN0b3JlKSB7Ci0JCWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOworCQlpbnQgcmV0OwogCi0J CS8qCi0JCSAqIFdlIG5lZWQgdG8gdXNlIHJhdyBpbnRlcmZhY2VzIGZvciByZXN0b3Jpbmcgc3Rh dGUgdG8gYXZvaWQKLQkJICogY2hlY2tpbmcgKGJvZ3VzKSBpbnRlcm1lZGlhdGUgc3RhdGVzLgot CQkgKi8KLQkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewotCQkJc3RydWN0IGRybV9j cnRjICpjcnRjID0KLQkJCQlkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV07CisJ CWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOwogCi0JCQlpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShj cnRjKTsKKwkJcmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOworCQlpZiAocmV0KSB7CisJCQlE Uk1fRVJST1IoIkZhaWxlZCB0byByZXN0b3JlIHByZXZpb3VzIG1vZGVcbiIpOworCQkJZHJtX2F0 b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKIAkJfQogCX0gZWxzZSB7Ci0JCWludGVsX21vZGVzZXRf dXBkYXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUoZGV2KTsKKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVl KHN0YXRlKTsKIAl9CiAKIAlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKGRldik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IDRiMTg1NTY0YWVlYS4uYmM3ZDBhMDAzYzhlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTMwLDExICsxMzAsNiBAQCBzdHJ1Y3QgaW50ZWxfZmJk ZXYgewogCiBzdHJ1Y3QgaW50ZWxfZW5jb2RlciB7CiAJc3RydWN0IGRybV9lbmNvZGVyIGJhc2U7 Ci0JLyoKLQkgKiBUaGUgbmV3IGNydGMgdGhpcyBlbmNvZGVyIHdpbGwgYmUgZHJpdmVuIGZyb20u IE9ubHkgZGlmZmVycyBmcm9tCi0JICogYmFzZS0+Y3J0YyB3aGlsZSBhIG1vZGVzZXQgaXMgaW4g cHJvZ3Jlc3MuCi0JICovCi0Jc3RydWN0IGludGVsX2NydGMgKm5ld19jcnRjOwogCiAJZW51bSBp bnRlbF9vdXRwdXRfdHlwZSB0eXBlOwogCXVuc2lnbmVkIGludCBjbG9uZWFibGU7CkBAIC0xOTUs MTIgKzE5MCw2IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgewogCSAqLwogCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwogCi0JLyoKLQkgKiBUaGUgbmV3IGVuY29kZXIgdGhpcyBjb25u ZWN0b3Igd2lsbCBiZSBkcml2ZW4uIE9ubHkgZGlmZmVycyBmcm9tCi0JICogZW5jb2RlciB3aGls ZSBhIG1vZGVzZXQgaXMgaW4gcHJvZ3Jlc3MuCi0JICovCi0Jc3RydWN0IGludGVsX2VuY29kZXIg Km5ld19lbmNvZGVyOwotCiAJLyogUmVhZHMgb3V0IHRoZSBjdXJyZW50IGh3LCByZXR1cm5pbmcg dHJ1ZSBpZiB0aGUgY29ubmVjdG9yIGlzIGVuYWJsZWQKIAkgKiBhbmQgYWN0aXZlIChpLmUuIGRw bXMgT04gc3RhdGUpLiAqLwogCWJvb2wgKCpnZXRfaHdfc3RhdGUpKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKik7CkBAIC01NDEsNyArNTMwLDYgQEAgc3RydWN0IGludGVsX2NydGMgewogCiAJc3Ry dWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnIHBsYW5lX2NvbmZpZzsKIAlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY29uZmlnOwotCWJvb2wgbmV3X2VuYWJsZWQ7CiAKIAkvKiByZXNldCBj b3VudGVyIHZhbHVlIHdoZW4gdGhlIGxhc3QgZmxpcCB3YXMgc3VibWl0dGVkICovCiAJdW5zaWdu ZWQgaW50IHJlc2V0X2NvdW50ZXI7CkBAIC0xNDE4LDYgKzE0MDYsOCBAQCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCBpbnRlbF9hdG9taWNfc3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKik7CiBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICoKIGludGVsX2F0b21pY19n ZXRfc2hhcmVkX2RwbGxfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMpOwordm9pZCBp bnRlbF9hdG9taWNfZHVwbGljYXRlX2RwbGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KiwKKwkJCQkgICAgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqKTsKIAogc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqCiBpbnRlbF9hdG9taWNfZ2V0X2Ny dGNfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotLSAKMi4xLjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==