From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 14/18] drm/i915: Use full atomic modeset. Date: Thu, 2 Jul 2015 16:36:58 +0200 Message-ID: <1435847822-5318-15-git-send-email-maarten.lankhorst@linux.intel.com> References: <1435847822-5318-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 ESMTPS id E70656ECA9 for ; Thu, 2 Jul 2015 07:37:25 -0700 (PDT) In-Reply-To: <1435847822-5318-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 SHV6emFoISBcby8KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg fCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgIHwgICA1IC0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8IDEyMyAtLS0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyNzcgKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICAgICB8ICAgNSAtCiA2IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDM3MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBkYjQ4YWVlN2YxNDAuLmYxM2Vk MWVmNjY0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0xNzMxLDcgKzE3MzEsNyBAQCBz dGF0aWMgaW50IF9faW5pdCBpOTE1X2luaXQodm9pZCkKIAkgKiB0byB0aGUgYXRvbWljIGlvY3Rs IGFuZCB0aGUgYXRvbWljIHByb3BlcnRpZXMuICBPbmx5IHBsYW5lIG9wZXJhdGlvbnMgb24KIAkg KiBhIHNpbmdsZSBDUlRDIHdpbGwgYWN0dWFsbHkgd29yay4KIAkgKi8KLQlpZiAoaTkxNS5udWNs ZWFyX3BhZ2VmbGlwKQorCWlmIChkcml2ZXIuZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX01PREVT RVQpCiAJCWRyaXZlci5kcml2ZXJfZmVhdHVyZXMgfD0gRFJJVkVSX0FUT01JQzsKIAogCXJldHVy biBkcm1fcGNpX2luaXQoJmRyaXZlciwgJmk5MTVfcGNpX2RyaXZlcik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCBkN2NkMDVhMGFiY2QuLmIwZGY5NTYxZjEwZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC0yNjA1LDcgKzI2MDUsNiBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgewogCWlu dCB1c2VfbW1pb19mbGlwOwogCWludCBtbWlvX2RlYnVnOwogCWJvb2wgdmVyYm9zZV9zdGF0ZV9j aGVja3M7Ci0JYm9vbCBudWNsZWFyX3BhZ2VmbGlwOwogCWludCBlZHBfdnN3aW5nOwogfTsKIGV4 dGVybiBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGFyYW1zLmMKaW5kZXggZDZmOWQ5YTExN2I2Li43MjQzOTc3M2YyZGYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwpAQCAtNTAsNyArNTAsNiBAQCBzdHJ1Y3QgaTkxNV9wYXJh bXMgaTkxNSBfX3JlYWRfbW9zdGx5ID0gewogCS51c2VfbW1pb19mbGlwID0gMCwKIAkubW1pb19k ZWJ1ZyA9IDAsCiAJLnZlcmJvc2Vfc3RhdGVfY2hlY2tzID0gMSwKLQkubnVjbGVhcl9wYWdlZmxp cCA9IDAsCiAJLmVkcF92c3dpbmcgPSAwLAogfTsKIApAQCAtMTcxLDEwICsxNzAsNiBAQCBtb2R1 bGVfcGFyYW1fbmFtZWQodmVyYm9zZV9zdGF0ZV9jaGVja3MsIGk5MTUudmVyYm9zZV9zdGF0ZV9j aGVja3MsIGJvb2wsIDA2MDApOwogTU9EVUxFX1BBUk1fREVTQyh2ZXJib3NlX3N0YXRlX2NoZWNr cywKIAkiRW5hYmxlIHZlcmJvc2UgbG9ncyAoaWUuIFdBUk5fT04oKSkgaW4gY2FzZSBvZiB1bmV4 cGVjdGVkIGh3IHN0YXRlIGNvbmRpdGlvbnMuIik7CiAKLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNh ZmUobnVjbGVhcl9wYWdlZmxpcCwgaTkxNS5udWNsZWFyX3BhZ2VmbGlwLCBib29sLCAwNjAwKTsK LU1PRFVMRV9QQVJNX0RFU0MobnVjbGVhcl9wYWdlZmxpcCwKLQkJICJGb3JjZSBhdG9taWMgbW9k ZXNldCBmdW5jdGlvbmFsaXR5OyBvbmx5IHBsYW5lcyB3b3JrIGZvciBub3cgKGRlZmF1bHQ6IGZh bHNlKS4iKTsKLQogLyogV0EgdG8gZ2V0IGF3YXkgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIGlu IFZCVCBmb3IgZWFybHkgcGxhdGZvcm1zLldpbGwgYmUgcmVtb3ZlZCAqLwogbW9kdWxlX3BhcmFt X25hbWVkX3Vuc2FmZShlZHBfdnN3aW5nLCBpOTE1LmVkcF92c3dpbmcsIGludCwgMDQwMCk7CiBN T0RVTEVfUEFSTV9ERVNDKGVkcF92c3dpbmcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5j CmluZGV4IDBiYmRjMmZjNTI5OC4uOGYxNDhkMDExMmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWMuYwpAQCAtMzUsMTI5ICszNSw2IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9o ZWxwZXIuaD4KICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKIAotCi0vKioKLSAqIGludGVsX2F0b21p Y19jaGVjayAtIHZhbGlkYXRlIHN0YXRlIG9iamVjdAotICogQGRldjogZHJtIGRldmljZQotICog QHN0YXRlOiBzdGF0ZSB0byB2YWxpZGF0ZQotICovCi1pbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCi17Ci0JaW50IG5wbGFuZXMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFu ZTsKLQlpbnQgbmNydGNzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsKLQlpbnQgbmNvbm5l Y3RvcnMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7Ci0JZW51bSBwaXBlIG51Y2xl YXJfcGlwZSA9IElOVkFMSURfUElQRTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqbnVjbGVhcl9jcnRj ID0gTlVMTDsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IE5VTEw7Ci0J aW50IHJldDsKLQlpbnQgaTsKLQlib29sIG5vdF9udWNsZWFyID0gZmFsc2U7Ci0KLQl0b19pbnRl bF9hdG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsayA9IHRvX2k5MTUoZGV2KS0+Y2RjbGtfZnJlcTsK LQotCS8qCi0JICogRklYTUU6ICBBdCB0aGUgbW9tZW50LCB3ZSBvbmx5IHN1cHBvcnQgIm51Y2xl YXIgcGFnZWZsaXAiIG9uIGEKLQkgKiBzaW5nbGUgQ1JUQy4gIENyb3NzLWNydGMgdXBkYXRlcyB3 aWxsIGJlIGFkZGVkIGxhdGVyLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbmVzOyBpKysp IHsKLQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRlLT5w bGFuZXNbaV0pOwotCQlpZiAoIXBsYW5lKQotCQkJY29udGludWU7Ci0KLQkJaWYgKG51Y2xlYXJf cGlwZSA9PSBJTlZBTElEX1BJUEUpIHsKLQkJCW51Y2xlYXJfcGlwZSA9IHBsYW5lLT5waXBlOwot CQl9IGVsc2UgaWYgKG51Y2xlYXJfcGlwZSAhPSBwbGFuZS0+cGlwZSkgewotCQkJRFJNX0RFQlVH X0tNUygiaTkxNSBvbmx5IHN1cHBvcnQgYXRvbWljIHBsYW5lIG9wZXJhdGlvbnMgb24gYSBzaW5n bGUgQ1JUQyBhdCB0aGUgbW9tZW50XG4iKTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JfQot Ci0JLyoKLQkgKiBGSVhNRTogIFdlIG9ubHkgaGFuZGxlIHBsYW5lcyBmb3Igbm93OyBtYWtlIHN1 cmUgdGhlcmUgYXJlIG5vIENSVEMncwotCSAqIG9yIGNvbm5lY3RvcnMgaW52b2x2ZWQuCi0JICov Ci0Jc3RhdGUtPmFsbG93X21vZGVzZXQgPSBmYWxzZTsKLQlmb3IgKGkgPSAwOyBpIDwgbmNydGNz OyBpKyspIHsKLQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHN0YXRl LT5jcnRjc1tpXSk7Ci0JCWlmIChjcnRjKQotCQkJbWVtc2V0KCZjcnRjLT5hdG9taWMsIDAsIHNp emVvZihjcnRjLT5hdG9taWMpKTsKLQkJaWYgKGNydGMgJiYgY3J0Yy0+cGlwZSAhPSBudWNsZWFy X3BpcGUpCi0JCQlub3RfbnVjbGVhciA9IHRydWU7Ci0JCWlmIChjcnRjICYmIGNydGMtPnBpcGUg PT0gbnVjbGVhcl9waXBlKSB7Ci0JCQludWNsZWFyX2NydGMgPSBjcnRjOwotCQkJY3J0Y19zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUtPmNydGNfc3RhdGVzW2ldKTsKLQkJfQotCX0K LQlmb3IgKGkgPSAwOyBpIDwgbmNvbm5lY3RvcnM7IGkrKykKLQkJaWYgKHN0YXRlLT5jb25uZWN0 b3JzW2ldICE9IE5VTEwpCi0JCQlub3RfbnVjbGVhciA9IHRydWU7Ci0KLQlpZiAobm90X251Y2xl YXIpIHsKLQkJRFJNX0RFQlVHX0tNUygiaTkxNSBvbmx5IHN1cHBvcnRzIGF0b21pYyBwbGFuZSBv cGVyYXRpb25zIGF0IHRoZSBtb21lbnRcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQly ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiByZXQ7Ci19Ci0KLQotLyoqCi0gKiBpbnRlbF9h dG9taWNfY29tbWl0IC0gY29tbWl0IHZhbGlkYXRlZCBzdGF0ZSBvYmplY3QKLSAqIEBkZXY6IERS TSBkZXZpY2UKLSAqIEBzdGF0ZTogdGhlIHRvcC1sZXZlbCBkcml2ZXIgc3RhdGUgb2JqZWN0Ci0g KiBAYXN5bmM6IGFzeW5jaHJvbm91cyBjb21taXQKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGNvbW1p dHMgYSB0b3AtbGV2ZWwgc3RhdGUgb2JqZWN0IHRoYXQgaGFzIGJlZW4gdmFsaWRhdGVkCi0gKiB3 aXRoIGRybV9hdG9taWNfaGVscGVyX2NoZWNrKCkuCi0gKgotICogRklYTUU6ICBBdG9taWMgbW9k ZXNldCBzdXBwb3J0IGZvciBpOTE1IGlzIG5vdCB5ZXQgY29tcGxldGUuICBBdCB0aGUgbW9tZW50 Ci0gKiB3ZSBjYW4gb25seSBoYW5kbGUgcGxhbmUtcmVsYXRlZCBvcGVyYXRpb25zIGFuZCBkbyBu b3QgeWV0IHN1cHBvcnQKLSAqIGFzeW5jaHJvbm91cyBjb21taXQuCi0gKgotICogUkVUVVJOUwot ICogWmVybyBmb3Igc3VjY2VzcyBvciAtZXJybm8uCi0gKi8KLWludCBpbnRlbF9hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUsCi0JCQlib29sIGFzeW5jKQotewotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0JaW50IHJldDsKLQlpbnQgaTsKLQotCWlm IChhc3luYykgewotCQlEUk1fREVCVUdfS01TKCJpOTE1IGRvZXMgbm90IHlldCBzdXBwb3J0IGFz eW5jIGNvbW1pdFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXJldCA9IGRybV9hdG9t aWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7Ci0KLQkvKiBQb2ludCBvZiBubyByZXR1cm4gKi8KLQlkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKGRldiwgc3RhdGUpOwotCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQl0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWcgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKLQotCQlkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfcGxhbmVzX29uX2NydGMoY3J0Y19zdGF0ZSk7Ci0JfQotCi0JLyogRklYTUU6IFRoaXMg ZnVuY3Rpb24gc2hvdWxkIGV2ZW50dWFsbHkgY2FsbCBfX2ludGVsX3NldF9tb2RlIHdoZW4gbmVl ZGVkICovCi0KLQlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUp OwotCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwotCWRybV9h dG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogLyoqCiAgKiBpbnRl bF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eSAtIGZldGNoIGNvbm5lY3RvciBwcm9wZXJ0 eSB2YWx1ZQogICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIGZldGNoIHByb3BlcnR5IGZvcgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGQ3Nzg0NmEyM2QxOC4uMmE3ZGFk ZDJkNDgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC04Niw3ICs4Niw2 IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CiAK LXN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KTsKIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCSAgc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppZmIsCiAJCQkJICBzdHJ1Y3Qg ZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCkBAIC0xMTUsMTQgKzExNCw2IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgYm9vbCBm b3JjZSk7CiBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yyk7CiBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwogCi1zdGF0aWMgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVs X2ZpbmRfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBwaXBl KQotewotCWlmICghY29ubmVjdG9yLT5tc3RfcG9ydCkKLQkJcmV0dXJuIGNvbm5lY3Rvci0+ZW5j b2RlcjsKLQllbHNlCi0JCXJldHVybiAmY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X2VuY29kZXJz W3BpcGVdLT5iYXNlOwotfQotCiB0eXBlZGVmIHN0cnVjdCB7CiAJaW50CW1pbiwgbWF4OwogfSBp bnRlbF9yYW5nZV90OwpAQCAtNjI2Myw3ICs2MjU0LDcgQEAgaW50IGludGVsX2Rpc3BsYXlfc3Vz cGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCWlmIChjcnRjX21hc2spIHsKLQkJ cmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOworCQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChz dGF0ZSk7CiAKIAkJaWYgKCFyZXQpIHsKIAkJCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKQpAQCAt NjMxNyw3ICs2MzA4LDcgQEAgaW50IGludGVsX2NydGNfY29udHJvbChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIGJvb2wgZW5hYmxlKQogCX0KIAlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgPSBlbmFi bGU7CiAKLQlyZXQgPSBpbnRlbF9zZXRfbW9kZShzdGF0ZSk7CisJcmV0ID0gZHJtX2F0b21pY19j b21taXQoc3RhdGUpOwogCWlmICghcmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMDQzMSw3ICsx MDQyMiw3IEBAIHJldHJ5OgogCiAJZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YmFzZS5tb2Rl LCBtb2RlKTsKIAotCWlmIChpbnRlbF9zZXRfbW9kZShzdGF0ZSkpIHsKKwlpZiAoZHJtX2F0b21p Y19jb21taXQoc3RhdGUpKSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBzZXQgbW9kZSBv biBsb2FkLWRldGVjdCBwaXBlXG4iKTsKIAkJaWYgKG9sZC0+cmVsZWFzZV9mYikKIAkJCW9sZC0+ cmVsZWFzZV9mYi0+ZnVuY3MtPmRlc3Ryb3kob2xkLT5yZWxlYXNlX2ZiKTsKQEAgLTEwNDk5LDcg KzEwNDkwLDcgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJaWYgKHJldCkKIAkJCWdvdG8gZmFpbDsKIAotCQly ZXQgPSBpbnRlbF9zZXRfbW9kZShzdGF0ZSk7CisJCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0 YXRlKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZmFpbDsKIApAQCAtMTMxMzUsNyArMTMxMjYsNiBA QCBzdGF0aWMgYm9vbCBpbnRlbF9tb2Rlc2V0X2NhbGNfdXBkYXRlX3BpcGUoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCXJldHVybiB0cnVlOwogfQogCi0vKiBDb2RlIHRoYXQgc2hvdWxkIGV2ZW50 dWFsbHkgYmUgcGFydCBvZiBhdG9taWNfY2hlY2soKSAqLwogc3RhdGljIGludCBpbnRlbF9tb2Rl c2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7CkBAIC0xMzE3NiwxNSArMTMxNjYsMjAgQEAgc3Rh dGljIGludCBpbnRlbF9tb2Rlc2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLWludGVsX21vZGVzZXRfY29tcHV0ZV9j b25maWcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQorLyoqCisgKiBpbnRlbF9hdG9t aWNfY2hlY2sgLSB2YWxpZGF0ZSBzdGF0ZSBvYmplY3QKKyAqIEBkZXY6IGRybSBkZXZpY2UKKyAq IEBzdGF0ZTogc3RhdGUgdG8gdmFsaWRhdGUKKyAqLworc3RhdGljIGludCBpbnRlbF9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCWludCByZXQsIGk7CiAJYm9vbCBhbnlfbXMgPSBmYWxz ZTsKIAotCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RhdGUtPmRldiwg c3RhdGUpOworCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoZGV2LCBzdGF0 ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTMyMzUsOSArMTMyMzAsMjYgQEAg aW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCiAJcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdGF0ZS0+ZGV2LCBz dGF0ZSk7CiB9CiAKLXN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCisvKioKKyAqIGludGVsX2F0b21pY19jb21taXQgLSBjb21taXQgdmFs aWRhdGVkIHN0YXRlIG9iamVjdAorICogQGRldjogRFJNIGRldmljZQorICogQHN0YXRlOiB0aGUg dG9wLWxldmVsIGRyaXZlciBzdGF0ZSBvYmplY3QKKyAqIEBhc3luYzogYXN5bmNocm9ub3VzIGNv bW1pdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gY29tbWl0cyBhIHRvcC1sZXZlbCBzdGF0ZSBvYmpl Y3QgdGhhdCBoYXMgYmVlbiB2YWxpZGF0ZWQKKyAqIHdpdGggZHJtX2F0b21pY19oZWxwZXJfY2hl Y2soKS4KKyAqCisgKiBGSVhNRTogIEF0b21pYyBtb2Rlc2V0IHN1cHBvcnQgZm9yIGk5MTUgaXMg bm90IHlldCBjb21wbGV0ZS4gIEF0IHRoZSBtb21lbnQKKyAqIHdlIGNhbiBvbmx5IGhhbmRsZSBw bGFuZS1yZWxhdGVkIG9wZXJhdGlvbnMgYW5kIGRvIG5vdCB5ZXQgc3VwcG9ydAorICogYXN5bmNo cm9ub3VzIGNvbW1pdC4KKyAqCisgKiBSRVRVUk5TCisgKiBaZXJvIGZvciBzdWNjZXNzIG9yIC1l cnJuby4KKyAqLworc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJ ICAgICAgIGJvb2wgYXN5bmMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5k ZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwpAQCAtMTMyNDUsNiArMTMyNTcsMTEgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9t b2RlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpbnQgaTsKIAlib29sIGFueV9t cyA9IGZhbHNlOwogCisJaWYgKGFzeW5jKSB7CisJCURSTV9ERUJVR19LTVMoImk5MTUgZG9lcyBu b3QgeWV0IHN1cHBvcnQgYXN5bmMgY29tbWl0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CiAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKQEAgLTEzMjkyLDM0ICsxMzMwOSwxNCBAQCBzdGF0aWMg aW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCiAJ LyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwogCisJZHJtX2F0b21pY19oZWxwZXJfd2Fp dF9mb3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3Bs YW5lcyhkZXYsIHN0YXRlKTsKLQogCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CiAKLQly ZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBpbnRlbF9zZXRfbW9kZV9jaGVja2VkKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3Rh dGUtPmRldjsKLQlpbnQgcmV0OwotCi0JcmV0ID0gX19pbnRlbF9zZXRfbW9kZShzdGF0ZSk7Ci0J aWYgKHJldCA9PSAwKQorCWlmIChhbnlfbXMpCiAJCWludGVsX21vZGVzZXRfY2hlY2tfc3RhdGUo ZGV2KTsKIAotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRl bF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKHN0YXRlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0 OwotCi0JcmV0dXJuIGludGVsX3NldF9tb2RlX2NoZWNrZWQoc3RhdGUpOworCXJldHVybiAwOwog fQogCiB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK QEAgLTEzMzQ2LDcgKzEzMzQzLDcgQEAgcmV0cnk6CiAJCQlnb3RvIG91dDsKIAogCQljcnRjX3N0 YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCQlyZXQgPSBpbnRlbF9zZXRfbW9kZShzdGF0ZSk7 CisJCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKIAl9CiAKIAlpZiAocmV0ID09IC1F REVBRExLKSB7CkBAIC0xMzM2MiwxOTkgKzEzMzU5LDkgQEAgb3V0OgogCiAjdW5kZWYgZm9yX2Vh Y2hfaW50ZWxfY3J0Y19tYXNrZWQKIAotc3RhdGljIGJvb2wgaW50ZWxfY29ubmVjdG9yX2luX21v ZGVfc2V0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJCQkJc3RydWN0IGRy bV9tb2RlX3NldCAqc2V0KQotewotCWludCBybzsKLQotCWZvciAocm8gPSAwOyBybyA8IHNldC0+ bnVtX2Nvbm5lY3RvcnM7IHJvKyspCi0JCWlmIChzZXQtPmNvbm5lY3RvcnNbcm9dID09ICZjb25u ZWN0b3ItPmJhc2UpCi0JCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQotc3Rh dGljIGludAotaW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKLQkJCQkgc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAotCQkJCSBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yICpkcm1fY29ubmVjdG9yOwotCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRj OwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQlpbnQgaSwgcmV0OwotCi0J LyogVGhlIHVwcGVyIGxheWVycyBlbnN1cmUgdGhhdCB3ZSBlaXRoZXIgZGlzYWJsZSBhIGNydGMg b3IgaGF2ZSBhIGxpc3QKLQkgKiBvZiBjb25uZWN0b3JzLiBGb3IgcGFyYW5vaWEsIGRvdWJsZS1j aGVjayB0aGlzLiAqLwotCVdBUk5fT04oIXNldC0+ZmIgJiYgKHNldC0+bnVtX2Nvbm5lY3RvcnMg IT0gMCkpOwotCVdBUk5fT04oc2V0LT5mYiAmJiAoc2V0LT5udW1fY29ubmVjdG9ycyA9PSAwKSk7 Ci0KLQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKLQkJYm9vbCBp bl9tb2RlX3NldCA9IGludGVsX2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCk7 Ci0KLQkJaWYgKCFpbl9tb2RlX3NldCAmJiBjb25uZWN0b3ItPmJhc2Uuc3RhdGUtPmNydGMgIT0g c2V0LT5jcnRjKQotCQkJY29udGludWU7Ci0KLQkJY29ubmVjdG9yX3N0YXRlID0KLQkJCWRybV9h dG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7Ci0JCWlm IChJU19FUlIoY29ubmVjdG9yX3N0YXRlKSkKLQkJCXJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9z dGF0ZSk7Ci0KLQkJaWYgKGluX21vZGVfc2V0KSB7Ci0JCQlpbnQgcGlwZSA9IHRvX2ludGVsX2Ny dGMoc2V0LT5jcnRjKS0+cGlwZTsKLQkJCWNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0K LQkJCQkmaW50ZWxfZmluZF9lbmNvZGVyKGNvbm5lY3RvciwgcGlwZSktPmJhc2U7Ci0JCX0KLQot CQlpZiAoY29ubmVjdG9yLT5iYXNlLnN0YXRlLT5jcnRjICE9IHNldC0+Y3J0YykKLQkJCWNvbnRp bnVlOwotCi0JCS8qIElmIHdlIGRpc2FibGUgdGhlIGNydGMsIGRpc2FibGUgYWxsIGl0cyBjb25u ZWN0b3JzLiBBbHNvLCBpZgotCQkgKiB0aGUgY29ubmVjdG9yIGlzIG9uIHRoZSBjaGFuZ2luZyBj cnRjIGJ1dCBub3Qgb24gdGhlIG5ldwotCQkgKiBjb25uZWN0b3IgbGlzdCwgZGlzYWJsZSBpdC4g Ki8KLQkJaWYgKCFzZXQtPmZiIHx8ICFpbl9tb2RlX3NldCkgewotCQkJY29ubmVjdG9yX3N0YXRl LT5iZXN0X2VuY29kZXIgPSBOVUxMOwotCi0JCQlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVk OiVzXSB0byBbTk9DUlRDXVxuIiwKLQkJCQljb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKLQkJCQlj b25uZWN0b3ItPmJhc2UubmFtZSk7Ci0JCX0KLQl9Ci0JLyogY29ubmVjdG9yLT5uZXdfZW5jb2Rl ciBpcyBub3cgdXBkYXRlZCBmb3IgYWxsIGNvbm5lY3RvcnMuICovCi0KLQlmb3JfZWFjaF9jb25u ZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGRybV9jb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkg ewotCQljb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoZHJtX2Nvbm5lY3Rvcik7Ci0KLQkJ aWYgKCFjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlcikgewotCQkJcmV0ID0gZHJtX2F0b21p Y19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKGNvbm5lY3Rvcl9zdGF0ZSwKLQkJCQkJCQkJTlVMTCk7 Ci0JCQlpZiAocmV0KQotCQkJCXJldHVybiByZXQ7Ci0KLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJ aWYgKGludGVsX2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCkpIHsKLQkJCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+Y3J0YzsKLQotCQkJ LyogSWYgdGhpcyBjb25uZWN0b3Igd2FzIGluIGEgcHJldmlvdXMgY3J0YywgYWRkIGl0Ci0JCQkg KiB0byB0aGUgc3RhdGUuIFdlIG1pZ2h0IG5lZWQgdG8gZGlzYWJsZSBpdC4gKi8KLQkJCWlmIChj cnRjKSB7Ci0JCQkJY3J0Y19zdGF0ZSA9Ci0JCQkJCWRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwotCQkJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCi0JCQkJCXJldHVybiBQ VFJfRVJSKGNydGNfc3RhdGUpOwotCQkJfQotCi0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRj X2Zvcl9jb25uZWN0b3IoY29ubmVjdG9yX3N0YXRlLAotCQkJCQkJCQlzZXQtPmNydGMpOwotCQkJ aWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQl9Ci0KLQkJLyogTWFrZSBzdXJlIHRoZSBuZXcg Q1JUQyB3aWxsIHdvcmsgd2l0aCB0aGUgZW5jb2RlciAqLwotCQlpZiAoIWRybV9lbmNvZGVyX2Ny dGNfb2soY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIsCi0JCQkJCSBjb25uZWN0b3Jfc3Rh dGUtPmNydGMpKSB7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCURSTV9ERUJVR19LTVMo IltDT05ORUNUT1I6JWQ6JXNdIHRvIFtDUlRDOiVkXVxuIiwKLQkJCWNvbm5lY3Rvci0+YmFzZS5i YXNlLmlkLAotCQkJY29ubmVjdG9yLT5iYXNlLm5hbWUsCi0JCQljb25uZWN0b3Jfc3RhdGUtPmNy dGMtPmJhc2UuaWQpOwotCi0JCWlmIChjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSAm Y29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKQotCQkJY29ubmVjdG9yLT5lbmNvZGVyID0KLQkJCQl0 b19pbnRlbF9lbmNvZGVyKGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKLQl9Ci0KLQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWJv b2wgaGFzX2Nvbm5lY3RvcnM7Ci0KLQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29u bmVjdG9ycyhzdGF0ZSwgY3J0Yyk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCWhh c19jb25uZWN0b3JzID0gISFkcm1fYXRvbWljX2Nvbm5lY3RvcnNfZm9yX2NydGMoc3RhdGUsIGNy dGMpOwotCQlpZiAoaGFzX2Nvbm5lY3RvcnMgIT0gY3J0Y19zdGF0ZS0+ZW5hYmxlKQotCQkJY3J0 Y19zdGF0ZS0+ZW5hYmxlID0KLQkJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGhhc19jb25uZWN0b3Jz OwotCX0KLQotCXJldCA9IGludGVsX21vZGVzZXRfc2V0dXBfcGxhbmVfc3RhdGUoc3RhdGUsIHNl dC0+Y3J0Yywgc2V0LT5tb2RlLAotCQkJCQkgICAgICBzZXQtPmZiLCBzZXQtPngsIHNldC0+eSk7 Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9jcnRjX3N0YXRlKHN0YXRlLCBzZXQtPmNydGMpOwotCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkp Ci0JCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwotCi0JcmV0ID0gZHJtX2F0b21pY19zZXRf bW9kZV9mb3JfY3J0YyhjcnRjX3N0YXRlLCBzZXQtPm1vZGUpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7Ci0KLQlpZiAoc2V0LT5udW1fY29ubmVjdG9ycykKLQkJY3J0Y19zdGF0ZS0+YWN0aXZl ID0gdHJ1ZTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2Nv bmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl djsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBOVUxMOwotCWludCByZXQ7Ci0K LQlCVUdfT04oIXNldCk7Ci0JQlVHX09OKCFzZXQtPmNydGMpOwotCUJVR19PTighc2V0LT5jcnRj LT5oZWxwZXJfcHJpdmF0ZSk7Ci0KLQkvKiBFbmZvcmNlIHNhbmUgaW50ZXJmYWNlIGFwaSAtIGhh cyBiZWVuIGFidXNlZCBieSB0aGUgZmIgaGVscGVyLiAqLwotCUJVR19PTighc2V0LT5tb2RlICYm IHNldC0+ZmIpOwotCUJVR19PTihzZXQtPmZiICYmIHNldC0+bnVtX2Nvbm5lY3RvcnMgPT0gMCk7 Ci0KLQlpZiAoc2V0LT5mYikgewotCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gW0ZCOiVkXSAj Y29ubmVjdG9ycz0lZCAoeCB5KSAoJWkgJWkpXG4iLAotCQkJCXNldC0+Y3J0Yy0+YmFzZS5pZCwg c2V0LT5mYi0+YmFzZS5pZCwKLQkJCQkoaW50KXNldC0+bnVtX2Nvbm5lY3RvcnMsIHNldC0+eCwg c2V0LT55KTsKLQl9IGVsc2UgewotCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gW05PRkJdXG4i LCBzZXQtPmNydGMtPmJhc2UuaWQpOwotCX0KLQotCWRldiA9IHNldC0+Y3J0Yy0+ZGV2OwotCi0J c3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Ci0JaWYgKCFzdGF0ZSkKLQkJcmV0 dXJuIC1FTk9NRU07Ci0KLQlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFj cXVpcmVfY3R4OwotCi0JcmV0ID0gaW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRfc3RhdGUoZGV2 LCBzZXQsIHN0YXRlKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dDsKLQotCXJldCA9IGludGVsX21v ZGVzZXRfY29tcHV0ZV9jb25maWcoc3RhdGUpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0OwotCi0J cmV0ID0gaW50ZWxfc2V0X21vZGVfY2hlY2tlZChzdGF0ZSk7Ci0JaWYgKHJldCkgewotCQlEUk1f REVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUgb24gW0NSVEM6JWRdLCBlcnIgPSAlZFxuIiwK LQkJCSAgICAgIHNldC0+Y3J0Yy0+YmFzZS5pZCwgcmV0KTsKLQl9Ci0KLW91dDoKLQlpZiAocmV0 KQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwotCXJldHVybiByZXQ7Ci19Ci0KIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaW50ZWxfY3J0Y19mdW5jcyA9IHsKIAku Z2FtbWFfc2V0ID0gaW50ZWxfY3J0Y19nYW1tYV9zZXQsCi0JLnNldF9jb25maWcgPSBpbnRlbF9j cnRjX3NldF9jb25maWcsCisJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29u ZmlnLAogCS5kZXN0cm95ID0gaW50ZWxfY3J0Y19kZXN0cm95LAogCS5wYWdlX2ZsaXAgPSBpbnRl bF9jcnRjX3BhZ2VfZmxpcCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX2NydGNf ZHVwbGljYXRlX3N0YXRlLApAQCAtMTU2MzYsNyArMTU0NDMsNyBAQCB2b2lkIGludGVsX2Rpc3Bs YXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50ZWxfbW9kZXNldF9zZXR1cF9o d19zdGF0ZShkZXYpOwogCiAJaTkxNV9yZWRpc2FibGVfdmdhKGRldik7Ci0JcmV0ID0gaW50ZWxf c2V0X21vZGUoc3RhdGUpOworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKIAlpZiAo IXJldCkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGMxOWViNWRj MjgzMi4uZGNiYjIwYWIzNjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTM5NSwx MSArMTM5NSw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLCB1MzIgc3RhcnRfdmJsX2NvdW50KTsKIHZvaWQgaW50ZWxfdHZfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIAogLyogaW50ZWxfYXRvbWljLmMgKi8KLWludCBpbnRlbF9hdG9t aWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJICAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSk7Ci1pbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJYm9vbCBh c3luYyk7CiBpbnQgaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKnN0YXRlLAogCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKLS0gCjIu MS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=