From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH -next 05/11] drm/vmwgfx: Improve on hibernation Date: Thu, 22 Mar 2018 11:23:46 +0100 Message-ID: <20180322102352.2881-5-thellstrom@vmware.com> References: <20180322102352.2881-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0077.outbound.protection.outlook.com [104.47.40.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0AD946EBD6 for ; Thu, 22 Mar 2018 10:24:43 +0000 (UTC) In-Reply-To: <20180322102352.2881-1-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com List-Id: dri-devel@lists.freedesktop.org TWFrZSBpdCBwb3NzaWJsZSB0byBoaWJlcm5hdGUgYWxzbyB3aXRoIG1hc3RlcnMgdGhhdCBkb24n dCBzd2l0Y2ggVlQgYXQKaGliZXJuYXRpb24gdGltZS4gV2Ugc2F2ZSBhbmQgcmVzdG9yZSBtb2Rl c2V0dGluZyBzdGF0ZSB1bmxlc3MgZmJkZXYgaXMKYWN0aXZlIGFuZCBlbmFibGVkIGF0IGhpYmVy bmF0aW9uIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0cm9tIDx0aGVsbHN0cm9t QHZtd2FyZS5jb20+ClJldmlld2VkLWJ5OiBTaW5jbGFpciBZZWggPHN5ZWhAdm13YXJlLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYyB8IDc1ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5oIHwgIDUgKysrCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mYi5jICB8IDM1 ICsrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyB8 IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0 aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYwpp bmRleCA1MDU1ZTVmNjhjNGYuLmM2NmYzMmE2YTlkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZHJ2LmMKQEAgLTEyNzksOCArMTI3OSw3IEBAIHN0YXRpYyB2b2lkIHZtd19tYXN0ZXJfZHJv cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXR0bV9sb2NrX3NldF9raWxsKCZkZXZfcHJpdi0+ ZmJkZXZfbWFzdGVyLmxvY2ssIGZhbHNlLCBTSUdURVJNKTsKIAl0dG1fdnRfdW5sb2NrKCZkZXZf cHJpdi0+ZmJkZXZfbWFzdGVyLmxvY2spOwogCi0JaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCi0J CXZtd19mYl9vbihkZXZfcHJpdik7CisJdm13X2ZiX3JlZnJlc2goZGV2X3ByaXYpOwogfQogCiAv KioKQEAgLTEzNzAsMjggKzEzNjksMjMgQEAgc3RhdGljIGludCB2bXdnZnhfcG1fbm90aWZpZXIo c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyB2YWwsCiAKIAlzd2l0Y2gg KHZhbCkgewogCWNhc2UgUE1fSElCRVJOQVRJT05fUFJFUEFSRToKLQkJaWYgKGRldl9wcml2LT5l bmFibGVfZmIpCi0JCQl2bXdfZmJfb2ZmKGRldl9wcml2KTsKLQkJdHRtX3N1c3BlbmRfbG9jaygm ZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSk7Ci0KIAkJLyoKLQkJICogVGhpcyBlbXB0aWVzIFZS QU0gYW5kIHVuYmluZHMgYWxsIEdNUiBiaW5kaW5ncy4KLQkJICogQnVmZmVyIGNvbnRlbnRzIGlz IG1vdmVkIHRvIHN3YXBwYWJsZSBtZW1vcnkuCisJCSAqIFRha2UgdGhlIHJlc2VydmF0aW9uIHNl bSBpbiB3cml0ZSBtb2RlLCB3aGljaCB3aWxsIG1ha2Ugc3VyZQorCQkgKiB0aGVyZSBhcmUgbm8g b3RoZXIgcHJvY2Vzc2VzIGhvbGRpbmcgYSBidWZmZXIgb2JqZWN0CisJCSAqIHJlc2VydmF0aW9u LCBtZWFuaW5nIHdlIHNob3VsZCBiZSBhYmxlIHRvIGV2aWN0IGFsbCBidWZmZXIKKwkJICogb2Jq ZWN0cyBpZiBuZWVkZWQuCisJCSAqIE9uY2UgdXNlci1zcGFjZSBwcm9jZXNzZXMgaGF2ZSBiZWVu IGZyb3plbiwgd2UgY2FuIHJlbGVhc2UKKwkJICogdGhlIGxvY2sgYWdhaW4uCiAJCSAqLwotCQl2 bXdfZXhlY2J1Zl9yZWxlYXNlX3Bpbm5lZF9ibyhkZXZfcHJpdik7Ci0JCXZtd19yZXNvdXJjZV9l dmljdF9hbGwoZGV2X3ByaXYpOwotCQl2bXdfcmVsZWFzZV9kZXZpY2VfZWFybHkoZGV2X3ByaXYp OwotCQl0dG1fYm9fc3dhcG91dF9hbGwoJmRldl9wcml2LT5iZGV2KTsKLQkJdm13X2ZlbmNlX2Zp Zm9fZG93bihkZXZfcHJpdi0+Zm1hbik7CisJCXR0bV9zdXNwZW5kX2xvY2soJmRldl9wcml2LT5y ZXNlcnZhdGlvbl9zZW0pOworCQlkZXZfcHJpdi0+c3VzcGVuZF9sb2NrZWQgPSB0cnVlOwogCQli cmVhazsKIAljYXNlIFBNX1BPU1RfSElCRVJOQVRJT046CiAJY2FzZSBQTV9QT1NUX1JFU1RPUkU6 Ci0JCXZtd19mZW5jZV9maWZvX3VwKGRldl9wcml2LT5mbWFuKTsKLQkJdHRtX3N1c3BlbmRfdW5s b2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtKTsKLQkJaWYgKGRldl9wcml2LT5lbmFibGVf ZmIpCi0JCQl2bXdfZmJfb24oZGV2X3ByaXYpOwotCQlicmVhazsKLQljYXNlIFBNX1JFU1RPUkVf UFJFUEFSRToKKwkJaWYgKFJFQURfT05DRShkZXZfcHJpdi0+c3VzcGVuZF9sb2NrZWQpKSB7CisJ CQlkZXZfcHJpdi0+c3VzcGVuZF9sb2NrZWQgPSBmYWxzZTsKKwkJCXR0bV9zdXNwZW5kX3VubG9j aygmZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSk7CisJCX0KIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJYnJlYWs7CkBAIC0xNDQyLDI1ICsxNDM2LDUwIEBAIHN0YXRpYyBpbnQgdm13X3BtX2ZyZWV6 ZShzdHJ1Y3QgZGV2aWNlICprZGV2KQogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2Rl dihrZGV2KTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYp OwogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdihkZXYpOworCWludCBy ZXQ7CiAKKwkvKgorCSAqIFVubG9jayBmb3Igdm13X2ttc19zdXNwZW5kLgorCSAqIE5vIHVzZXIt c3BhY2UgcHJvY2Vzc2VzIHNob3VsZCBiZSBydW5uaW5nIG5vdy4KKwkgKi8KKwl0dG1fc3VzcGVu ZF91bmxvY2soJmRldl9wcml2LT5yZXNlcnZhdGlvbl9zZW0pOworCXJldCA9IHZtd19rbXNfc3Vz cGVuZChkZXZfcHJpdi0+ZGV2KTsKKwlpZiAocmV0KSB7CisJCXR0bV9zdXNwZW5kX2xvY2soJmRl dl9wcml2LT5yZXNlcnZhdGlvbl9zZW0pOworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBmcmVlemUg bW9kZXNldHRpbmcuXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CiAJZGV2X3ByaXYtPnN1c3BlbmRl ZCA9IHRydWU7CiAJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCi0JCXZtd19maWZvX3Jlc291cmNl X2RlYyhkZXZfcHJpdik7CisJCXZtd19mYl9vZmYoZGV2X3ByaXYpOwogCisJdHRtX3N1c3BlbmRf bG9jaygmZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSk7CisJdm13X2V4ZWNidWZfcmVsZWFzZV9w aW5uZWRfYm8oZGV2X3ByaXYpOworCXZtd19yZXNvdXJjZV9ldmljdF9hbGwoZGV2X3ByaXYpOwor CXZtd19yZWxlYXNlX2RldmljZV9lYXJseShkZXZfcHJpdik7CisJdHRtX2JvX3N3YXBvdXRfYWxs KCZkZXZfcHJpdi0+YmRldik7CisJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCisJCXZtd19maWZv X3Jlc291cmNlX2RlYyhkZXZfcHJpdik7CiAJaWYgKGF0b21pY19yZWFkKCZkZXZfcHJpdi0+bnVt X2ZpZm9fcmVzb3VyY2VzKSAhPSAwKSB7CiAJCURSTV9FUlJPUigiQ2FuJ3QgaGliZXJuYXRlIHdo aWxlIDNEIHJlc291cmNlcyBhcmUgYWN0aXZlLlxuIik7CiAJCWlmIChkZXZfcHJpdi0+ZW5hYmxl X2ZiKQogCQkJdm13X2ZpZm9fcmVzb3VyY2VfaW5jKGRldl9wcml2KTsKIAkJV0FSTl9PTih2bXdf cmVxdWVzdF9kZXZpY2VfbGF0ZShkZXZfcHJpdikpOworCQlkZXZfcHJpdi0+c3VzcGVuZF9sb2Nr ZWQgPSBmYWxzZTsKKwkJdHRtX3N1c3BlbmRfdW5sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25f c2VtKTsKKwkJaWYgKGRldl9wcml2LT5zdXNwZW5kX3N0YXRlKQorCQkJdm13X2ttc19yZXN1bWUo ZGV2KTsKKwkJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCisJCQl2bXdfZmJfb24oZGV2X3ByaXYp OwogCQlkZXZfcHJpdi0+c3VzcGVuZGVkID0gZmFsc2U7CisJCXZtd19mYl9yZWZyZXNoKGRldl9w cml2KTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAKLQlpZiAoZGV2X3ByaXYtPmVuYWJsZV9mYikK LQkJX192bXdfc3ZnYV9kaXNhYmxlKGRldl9wcml2KTsKKwl2bXdfZmVuY2VfZmlmb19kb3duKGRl dl9wcml2LT5mbWFuKTsKKwlfX3Ztd19zdmdhX2Rpc2FibGUoZGV2X3ByaXYpOwogCQogCXZtd19y ZWxlYXNlX2RldmljZV9sYXRlKGRldl9wcml2KTsKLQogCXJldHVybiAwOwogfQogCkBAIC0xNDg0 LDcgKzE1MDMsMTcgQEAgc3RhdGljIGludCB2bXdfcG1fcmVzdG9yZShzdHJ1Y3QgZGV2aWNlICpr ZGV2KQogCWlmIChkZXZfcHJpdi0+ZW5hYmxlX2ZiKQogCQlfX3Ztd19zdmdhX2VuYWJsZShkZXZf cHJpdik7CiAKKwl2bXdfZmVuY2VfZmlmb191cChkZXZfcHJpdi0+Zm1hbik7CisJZGV2X3ByaXYt PnN1c3BlbmRfbG9ja2VkID0gZmFsc2U7CisJdHRtX3N1c3BlbmRfdW5sb2NrKCZkZXZfcHJpdi0+ cmVzZXJ2YXRpb25fc2VtKTsKKwlpZiAoZGV2X3ByaXYtPnN1c3BlbmRfc3RhdGUpCisJCXZtd19r bXNfcmVzdW1lKGRldl9wcml2LT5kZXYpOworCisJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCisJ CXZtd19mYl9vbihkZXZfcHJpdik7CisKIAlkZXZfcHJpdi0+c3VzcGVuZGVkID0gZmFsc2U7CisJ dm13X2ZiX3JlZnJlc2goZGV2X3ByaXYpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2Rydi5oCmluZGV4IDNhNTQ3NmRmN2Q4NC4uYmZiOTc2MjU3MDhiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaApAQCAtNDI1LDYgKzQyNSw3IEBAIHN0cnVjdCB2bXdf cHJpdmF0ZSB7CiAJc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqaW1wbGljaXRfZmI7CiAJc3RydWN0 IG11dGV4IGdsb2JhbF9rbXNfc3RhdGVfbXV0ZXg7CiAJc3BpbmxvY2tfdCBjdXJzb3JfbG9jazsK KwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3VzcGVuZF9zdGF0ZTsKIAogCS8qCiAJICogQ29u dGV4dCBhbmQgc3VyZmFjZSBtYW5hZ2VtZW50LgpAQCAtNDk4LDYgKzQ5OSw3IEBAIHN0cnVjdCB2 bXdfcHJpdmF0ZSB7CiAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBtX25iOwogCWJvb2wgc3VzcGVu ZGVkOwogCWJvb2wgcmVmdXNlX2hpYmVybmF0aW9uOworCWJvb2wgc3VzcGVuZF9sb2NrZWQ7CiAK IAlzdHJ1Y3QgbXV0ZXggcmVsZWFzZV9tdXRleDsKIAlhdG9taWNfdCBudW1fZmlmb19yZXNvdXJj ZXM7CkBAIC05MDksNiArOTExLDcgQEAgaW50IHZtd19mYl9pbml0KHN0cnVjdCB2bXdfcHJpdmF0 ZSAqdm13X3ByaXYpOwogaW50IHZtd19mYl9jbG9zZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9w cml2KTsKIGludCB2bXdfZmJfb2ZmKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13X3ByaXYpOwogaW50 IHZtd19mYl9vbihzdHJ1Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2KTsKK3ZvaWQgdm13X2ZiX3Jl ZnJlc2goc3RydWN0IHZtd19wcml2YXRlICp2bXdfcHJpdik7CiAKIC8qKgogICogS2VybmVsIG1v ZGVzZXR0aW5nIC0gdm13Z2Z4X2ttcy5jCkBAIC05NDUsNiArOTQ4LDggQEAgaW50IHZtd19rbXNf cHJlc2VudChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogaW50IHZtd19rbXNfdXBkYXRl X2xheW91dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCXN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIHZvaWQgdm13X2ttc19sZWdhY3lfaG90c3BvdF9j bGVhcihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCB2bXdfa21zX3N1c3BlbmQo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgdm13X2ttc19yZXN1bWUoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiAKIGludCB2bXdfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCiAJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2ZiLmMKaW5kZXggZmI0ZTU5ZWUyNmM3Li5lODVjMTg2OGVmMTIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfZmIuYwpAQCAtMTYxLDEwICsxNjEsMTcgQEAgc3RhdGljIGludCB2bXdfZmJf YmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAlyZXR1cm4gMDsKIH0KIAot LyoKLSAqIERpcnR5IGNvZGUKKy8qKgorICogdm13X2ZiX2RpcnR5X2ZsdXNoIC0gZmx1c2ggZGly dHkgcmVnaW9ucyB0byB0aGUga21zIGZyYW1lYnVmZmVyCisgKgorICogQHdvcms6IFRoZSBzdHJ1 Y3Qgd29ya19zdHJ1Y3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFzay4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGZsdXNoZXMgdGhlIGRpcnR5IHJlZ2lvbnMgb2YgdGhlIHZtYWxsb2MgZnJhbWVidWZm ZXIgdG8gdGhlCisgKiBrbXMgZnJhbWVidWZmZXIsIGFuZCBpZiB0aGUga21zIGZyYW1lYnVmZmVy IGlzIHZpc2libGUsIGFsc28gdXBkYXRlZCB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgZGlzcGxheXMu IE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJ1bnMgZXZlbiBpZiB0aGUga21zCisgKiBmcmFtZWJ1 ZmZlciBpcyBub3QgYm91bmQgdG8gYSBjcnRjIGFuZCB0aHVzIG5vdCB2aXNpYmxlLCBidXQgaXQn cyB0dXJuZWQKKyAqIG9mZiBkdXJpbmcgaGliZXJuYXRpb24gdXNpbmcgdGhlIHBhci0+ZGlydHku YWN0aXZlIGJvb2wuCiAgKi8KLQogc3RhdGljIHZvaWQgdm13X2ZiX2RpcnR5X2ZsdXNoKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3Qgdm13X2ZiX3BhciAqcGFyID0gY29udGFp bmVyX29mKHdvcmssIHN0cnVjdCB2bXdfZmJfcGFyLApAQCAtODUyLDEyICs4NTksNiBAQCBpbnQg dm13X2ZiX29mZihzdHJ1Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2KQogCWZsdXNoX2RlbGF5ZWRf d29yaygmaW5mby0+ZGVmZXJyZWRfd29yayk7CiAJZmx1c2hfZGVsYXllZF93b3JrKCZwYXItPmxv Y2FsX3dvcmspOwogCi0JbXV0ZXhfbG9jaygmcGFyLT5ib19tdXRleCk7Ci0JZHJtX21vZGVzZXRf bG9ja19hbGwodm13X3ByaXYtPmRldik7Ci0JKHZvaWQpIHZtd19mYl9rbXNfZGV0YWNoKHBhciwg dHJ1ZSwgZmFsc2UpOwotCWRybV9tb2Rlc2V0X3VubG9ja19hbGwodm13X3ByaXYtPmRldik7Ci0J bXV0ZXhfdW5sb2NrKCZwYXItPmJvX211dGV4KTsKLQogCXJldHVybiAwOwogfQogCkBAIC04NzMs MTAgKzg3NCwyNCBAQCBpbnQgdm13X2ZiX29uKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13X3ByaXYp CiAJaW5mbyA9IHZtd19wcml2LT5mYl9pbmZvOwogCXBhciA9IGluZm8tPnBhcjsKIAotCXZtd19m Yl9zZXRfcGFyKGluZm8pOwogCXNwaW5fbG9ja19pcnFzYXZlKCZwYXItPmRpcnR5LmxvY2ssIGZs YWdzKTsKIAlwYXItPmRpcnR5LmFjdGl2ZSA9IHRydWU7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcGFyLT5kaXJ0eS5sb2NrLCBmbGFncyk7CiAgCiAJcmV0dXJuIDA7CiB9CisKKy8qKgorICog dm13X2ZiX3JlZnJlc2ggLSBSZWZyZXNoIGZiIGRpc3BsYXkKKyAqCisgKiBAdm13X3ByaXY6IFBv aW50ZXIgdG8gZGV2aWNlIHByaXZhdGUKKyAqCisgKiBDYWxsIGludG8ga21zIHRvIHNob3cgdGhl IGZiZGV2IGRpc3BsYXkocykuCisgKi8KK3ZvaWQgdm13X2ZiX3JlZnJlc2goc3RydWN0IHZtd19w cml2YXRlICp2bXdfcHJpdikKK3sKKwlpZiAoIXZtd19wcml2LT5mYl9pbmZvKQorCQlyZXR1cm47 CisKKwl2bXdfZmJfc2V0X3Bhcih2bXdfcHJpdi0+ZmJfaW5mbyk7Cit9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2ttcy5jCmluZGV4IDYzMTU5Njc0YmY5Mi4uMzYyOGE5ZmU3MDVmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwpAQCAtMjg0OCwzICsyODQ4LDUxIEBAIGludCB2bXdf a21zX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAogCiAJcmV0dXJuIGRybV9h dG9taWNfaGVscGVyX3NldF9jb25maWcoc2V0LCBjdHgpOwogfQorCisKKy8qKgorICogdm13X2tt c19zdXNwZW5kIC0gU2F2ZSBtb2Rlc2V0dGluZyBzdGF0ZSBhbmQgdHVybiBtb2Rlc2V0dGluZyBv ZmYuCisgKgorICogQGRldjogUG9pbnRlciB0byB0aGUgZHJtIGRldmljZQorICogUmV0dXJuOiAw IG9uIHN1Y2Nlc3MuIE5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IHZt d19rbXNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdihkZXYpOworCisJZGV2X3ByaXYtPnN1c3BlbmRfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKGRldik7CisJaWYgKElTX0VSUihkZXZfcHJp di0+c3VzcGVuZF9zdGF0ZSkpIHsKKwkJaW50IHJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPnN1c3Bl bmRfc3RhdGUpOworCisJCURSTV9FUlJPUigiRmFpbGVkIGttcyBzdXNwZW5kOiAlZFxuIiwgcmV0 KTsKKwkJZGV2X3ByaXYtPnN1c3BlbmRfc3RhdGUgPSBOVUxMOworCisJCXJldHVybiByZXQ7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKKworLyoqCisgKiB2bXdfa21zX3Jlc3VtZSAtIFJlLWVuYWJs ZSBtb2Rlc2V0dGluZyBhbmQgcmVzdG9yZSBzdGF0ZQorICoKKyAqIEBkZXY6IFBvaW50ZXIgdG8g dGhlIGRybSBkZXZpY2UKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLiBOZWdhdGl2ZSBlcnJvciBj b2RlIG9uIGZhaWx1cmUuCisgKgorICogU3RhdGUgaXMgcmVzdW1lZCBmcm9tIGEgcHJldmlvdXMg dm13X2ttc19zdXNwZW5kKCkuIEl0J3MgaWxsZWdhbAorICogdG8gY2FsbCB0aGlzIGZ1bmN0aW9u IHdpdGhvdXQgYSBwcmV2aW91cyB2bXdfa21zX3N1c3BlbmQoKS4KKyAqLworaW50IHZtd19rbXNf cmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiA9IHZtd19wcml2KGRldik7CisJaW50IHJldDsKKworCWlmIChXQVJOX09OKCFkZXZf cHJpdi0+c3VzcGVuZF9zdGF0ZSkpCisJCXJldHVybiAwOworCisJcmV0ID0gZHJtX2F0b21pY19o ZWxwZXJfcmVzdW1lKGRldiwgZGV2X3ByaXYtPnN1c3BlbmRfc3RhdGUpOworCWRldl9wcml2LT5z dXNwZW5kX3N0YXRlID0gTlVMTDsKKworCXJldHVybiByZXQ7Cit9Ci0tIAoyLjE0LjMKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=