From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 26/35] drm/i915: Stage new modeset state straight into atomic state Date: Tue, 21 Apr 2015 17:13:15 +0300 Message-ID: <1429625604-22252-27-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 9061A6E5E8 for ; Tue, 21 Apr 2015 07:14:10 -0700 (PDT) In-Reply-To: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org VGhlIGxvZ2ljIHRoYXQgc3RhZ2VzIHRoZSBzdGF0ZSBiZWZvcmUgdGhlIG1vZGVzZXQgd2FzIHN0 aWxsIHVwZGF0aW5nCmZpcnN0IHRoZSBvbGQgc3RhZ2VkIGNvbmZpZyBhbmQgdGhlbiBwb3B1bGF0 aW5nIHRoZSBhdG9taWMgc3RhdGUgYmFzZWQKb24gdGhhdC4gQ2hhbmdlIHRoaXMgdG8gdXNlIG9u bHkgdGhlIGF0b21pYyBzdGF0ZS4KCk5vdGUgdGhhdCBub3cgdGhlIHN0YWdlZCBjb25maWcgaXMg dXBkYXRlZCBpbiB0aGUgZnVuY3Rpb24KaW50ZWxfbW9kZXNldF9jb21taXRfb3V0cHV0X3N0YXRl KCkuIFRoaXMgaXMgZG9uZSBzbyB0aGF0IHRoZSBtb2Rlc2V0CmNoZWNrIGFuZCB0aGUgZm9yY2Ug cmVzdG9yZSBwYXRoIGluIHRoZSBodyBzdGF0ZSByZWFkIG91dCBjb2RlIGNvbnRpbnVlCnRvIHdv cmsuCgpTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNv bnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgMTcwICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDE3MjgwMWQuLmY1NTY3NjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTExMDY0LDI3ICsxMTA2NCw0NyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9jb25uZWN0b3JfYXRvbWljX3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAgKiBpbnRlbF9tb2Rlc2V0X2NvbW1pdF9vdXRwdXRfc3Rh dGUKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGNvcGllcyB0aGUgc3RhZ2UgZGlzcGxheSBwaXBlIGNv bmZpZ3VyYXRpb24gdG8gdGhlIHJlYWwgb25lLgorICoKKyAqIEZJWE1FOiB3ZSB3YW50IHRvIHJl cGxhY2UgdGhpcyB3aXRoIGEgcHJvcGVyIHN0YXRlIHN3YXAgaW4gdGhlIGZ1dHVyZQogICovCi1z dGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X2NvbW1pdF9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfY29tbWl0X291dHB1dF9zdGF0 ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX2NydGMg KmNydGM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CiAJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXI7Ci0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKKwlpbnQgaTsKIAotCWZvcl9lYWNo X2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3RvcikgewotCQljb25uZWN0b3ItPmJhc2UuZW5j b2RlciA9ICZjb25uZWN0b3ItPm5ld19lbmNvZGVyLT5iYXNlOworCWZvcl9lYWNoX2Nvbm5lY3Rv cl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKKwkJKmNv bm5lY3Rvci0+c3RhdGUgPSAqY29ubmVjdG9yX3N0YXRlOworCisJCWNvbm5lY3Rvci0+ZW5jb2Rl ciA9IGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyOworCQlpZiAoY29ubmVjdG9yLT5lbmNv ZGVyKQorCQkJY29ubmVjdG9yLT5lbmNvZGVyLT5jcnRjID0gY29ubmVjdG9yX3N0YXRlLT5jcnRj OwogCX0KIAotCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBlbmNvZGVyKSB7Ci0JCWVuY29k ZXItPmJhc2UuY3J0YyA9ICZlbmNvZGVyLT5uZXdfY3J0Yy0+YmFzZTsKKwkvKiBVcGRhdGUgY3J0 YyBvZiBkaXNhYmxlZCBlbmNvZGVycyAqLworCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoc3RhdGUt PmRldiwgZW5jb2RlcikgeworCQlpbnQgbnVtX2Nvbm5lY3RvcnMgPSAwOworCisJCWZvcl9lYWNo X2ludGVsX2Nvbm5lY3RvcihzdGF0ZS0+ZGV2LCBpbnRlbF9jb25uZWN0b3IpCisJCQlpZiAoaW50 ZWxfY29ubmVjdG9yLT5iYXNlLmVuY29kZXIgPT0gJmVuY29kZXItPmJhc2UpCisJCQkJbnVtX2Nv bm5lY3RvcnMrKzsKKworCQlpZiAobnVtX2Nvbm5lY3RvcnMgPT0gMCkKKwkJCWVuY29kZXItPmJh c2UuY3J0YyA9IE5VTEw7CiAJfQogCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsK LQkJY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlID0gY3J0Yy0+bmV3X2VuYWJsZWQ7Ci0JCWNydGMt PmJhc2UuZW5hYmxlZCA9IGNydGMtPm5ld19lbmFibGVkOworCWZvcl9lYWNoX2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwkJY3J0Yy0+c3RhdGUtPmVuYWJsZSA9 IGNydGNfc3RhdGUtPmVuYWJsZTsKKwkJY3J0Yy0+ZW5hYmxlZCA9IGNydGNfc3RhdGUtPmVuYWJs ZTsKIAl9CiAKLQlpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9jb25uZWN0b3JfYXRvbWljX3N0YXRlKGRl dik7CisJLyogQ29weSB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gdG8gdGhlIHN0YWdlZCBzdGF0ZSwg dG8ga2VlcCB0aGUgZmV3CisJICogcGllY2VzIG9mIGNvZGUgdGhhdCBoYXZlbid0IGJlZW4gY29u dmVydGVkIHlldCBoYXBweSAqLworCWludGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRwdXRf c3RhdGUoc3RhdGUtPmRldik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMTUzNCw3ICsxMTU1NCw3 IEBAIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKIAkJCWludGVsX2VuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlID0gZmFsc2U7CiAJfQog Ci0JaW50ZWxfbW9kZXNldF9jb21taXRfb3V0cHV0X3N0YXRlKGRldik7CisJaW50ZWxfbW9kZXNl dF9jb21taXRfb3V0cHV0X3N0YXRlKHN0YXRlKTsKIAogCS8qIERvdWJsZSBjaGVjayBzdGF0ZS4g Ki8KIAlmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykgewpAQCAtMTI2NTEsMTAgKzEyNjcxLDExIEBA IGludGVsX21vZGVzZXRfc3RhZ2Vfb3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25uZWN0 b3I7CiAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKLQlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCWludCBpLCByZXQ7CiAK IAkvKiBUaGUgdXBwZXIgbGF5ZXJzIGVuc3VyZSB0aGF0IHdlIGVpdGhlciBkaXNhYmxlIGEgY3J0 YyBvciBoYXZlIGEgbGlzdAogCSAqIG9mIGNvbm5lY3RvcnMuIEZvciBwYXJhbm9pYSwgZG91Ymxl LWNoZWNrIHRoaXMuICovCkBAIC0xMjY2NCwyMSArMTI2ODUsMjggQEAgaW50ZWxfbW9kZXNldF9z dGFnZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlmb3JfZWFjaF9pbnRl bF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKIAkJYm9vbCBpbl9tb2RlX3NldCA9IGludGVs X2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCk7CiAKKwkJaWYgKCFpbl9tb2Rl X3NldCAmJiBjb25uZWN0b3ItPmJhc2Uuc3RhdGUtPmNydGMgIT0gc2V0LT5jcnRjKQorCQkJY29u dGludWU7CisKKwkJY29ubmVjdG9yX3N0YXRlID0KKwkJCWRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7CisJCWlmIChJU19FUlIoY29ubmVjdG9y X3N0YXRlKSkKKwkJCXJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0ZSk7CisKIAkJaWYgKGlu X21vZGVfc2V0KSB7CiAJCQlpbnQgcGlwZSA9IHRvX2ludGVsX2NydGMoc2V0LT5jcnRjKS0+cGlw ZTsKLQkJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPQotCQkJCWludGVsX2ZpbmRfZW5jb2Rlcihj b25uZWN0b3IsIHBpcGUpOworCQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPQorCQkJ CSZpbnRlbF9maW5kX2VuY29kZXIoY29ubmVjdG9yLCBwaXBlKS0+YmFzZTsKIAkJfQogCi0JCWlm ICghY29ubmVjdG9yLT5iYXNlLmVuY29kZXIgfHwKLQkJICAgIGNvbm5lY3Rvci0+YmFzZS5lbmNv ZGVyLT5jcnRjICE9IHNldC0+Y3J0YykKKwkJaWYgKGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+Y3J0 YyAhPSBzZXQtPmNydGMpCiAJCQljb250aW51ZTsKIAogCQkvKiBJZiB3ZSBkaXNhYmxlIHRoZSBj cnRjLCBkaXNhYmxlIGFsbCBpdHMgY29ubmVjdG9ycy4gQWxzbywgaWYKIAkJICogdGhlIGNvbm5l Y3RvciBpcyBvbiB0aGUgY2hhbmdpbmcgY3J0YyBidXQgbm90IG9uIHRoZSBuZXcKIAkJICogY29u bmVjdG9yIGxpc3QsIGRpc2FibGUgaXQuICovCiAJCWlmICghc2V0LT5mYiB8fCAhaW5fbW9kZV9z ZXQpIHsKLQkJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPSBOVUxMOworCQkJY29ubmVjdG9yX3N0 YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwogCiAJCQlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9S OiVkOiVzXSB0byBbTk9DUlRDXVxuIiwKIAkJCQljb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKQEAg LTEyNjg3LDg2ICsxMjcxNSw1OCBAQCBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAkvKiBjb25uZWN0b3ItPm5ld19lbmNvZGVyIGlz IG5vdyB1cGRhdGVkIGZvciBhbGwgY29ubmVjdG9ycy4gKi8KIAotCS8qIFVwZGF0ZSBjcnRjIG9m IGVuYWJsZWQgY29ubmVjdG9ycy4gKi8KLQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBj b25uZWN0b3IpIHsKLQkJc3RydWN0IGRybV9jcnRjICpuZXdfY3J0YzsKKwlmb3JfZWFjaF9jb25u ZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGRybV9jb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkg eworCQljb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoZHJtX2Nvbm5lY3Rvcik7CisKKwkJ aWYgKCFjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlcikgeworCQkJcmV0ID0gZHJtX2F0b21p Y19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKGNvbm5lY3Rvcl9zdGF0ZSwKKwkJCQkJCQkJTlVMTCk7 CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CiAKLQkJaWYgKCFjb25uZWN0b3ItPm5ld19l bmNvZGVyKQogCQkJY29udGludWU7CisJCX0KIAotCQlpZiAoaW50ZWxfY29ubmVjdG9yX2luX21v ZGVfc2V0KGNvbm5lY3Rvciwgc2V0KSkKLQkJCW5ld19jcnRjID0gc2V0LT5jcnRjOwotCQllbHNl Ci0JCQluZXdfY3J0YyA9IGNvbm5lY3Rvci0+bmV3X2VuY29kZXItPmJhc2UuY3J0YzsKKwkJaWYg KGludGVsX2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCkpIHsKKwkJCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+Y3J0YzsKKworCQkJLyog SWYgdGhpcyBjb25uZWN0b3Igd2FzIGluIGEgcHJldmlvdXMgY3J0YywgYWRkIGl0CisJCQkgKiB0 byB0aGUgc3RhdGUuIFdlIG1pZ2h0IG5lZWQgdG8gZGlzYWJsZSBpdC4gKi8KKwkJCWlmIChjcnRj KSB7CisJCQkJY3J0Y19zdGF0ZSA9CisJCQkJCWRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3Rh dGUsIGNydGMpOworCQkJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCisJCQkJCXJldHVybiBQVFJf RVJSKGNydGNfc3RhdGUpOworCQkJfQorCisJCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zv cl9jb25uZWN0b3IoY29ubmVjdG9yX3N0YXRlLAorCQkJCQkJCQlzZXQtPmNydGMpOworCQkJaWYg KHJldCkKKwkJCQlyZXR1cm4gcmV0OworCQl9CiAKIAkJLyogTWFrZSBzdXJlIHRoZSBuZXcgQ1JU QyB3aWxsIHdvcmsgd2l0aCB0aGUgZW5jb2RlciAqLwotCQlpZiAoIWRybV9lbmNvZGVyX2NydGNf b2soJmNvbm5lY3Rvci0+bmV3X2VuY29kZXItPmJhc2UsCi0JCQkJCSBuZXdfY3J0YykpIHsKKwkJ aWYgKCFkcm1fZW5jb2Rlcl9jcnRjX29rKGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyLAor CQkJCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRjKSkgewogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0K LQkJY29ubmVjdG9yLT5uZXdfZW5jb2Rlci0+bmV3X2NydGMgPSB0b19pbnRlbF9jcnRjKG5ld19j cnRjKTsKLQotCQljb25uZWN0b3Jfc3RhdGUgPQotCQkJZHJtX2F0b21pY19nZXRfY29ubmVjdG9y X3N0YXRlKHN0YXRlLCAmY29ubmVjdG9yLT5iYXNlKTsKLQkJaWYgKElTX0VSUihjb25uZWN0b3Jf c3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoY29ubmVjdG9yX3N0YXRlKTsKLQotCQljb25uZWN0 b3Jfc3RhdGUtPmNydGMgPSBuZXdfY3J0YzsKLQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29k ZXIgPSAmY29ubmVjdG9yLT5uZXdfZW5jb2Rlci0+YmFzZTsKIAogCQlEUk1fREVCVUdfS01TKCJb Q09OTkVDVE9SOiVkOiVzXSB0byBbQ1JUQzolZF1cbiIsCiAJCQljb25uZWN0b3ItPmJhc2UuYmFz ZS5pZCwKIAkJCWNvbm5lY3Rvci0+YmFzZS5uYW1lLAotCQkJbmV3X2NydGMtPmJhc2UuaWQpOwot CX0KLQotCS8qIENoZWNrIGZvciBhbnkgZW5jb2RlcnMgdGhhdCBuZWVkcyB0byBiZSBkaXNhYmxl ZC4gKi8KLQlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2RlcikgewotCQlpbnQgbnVt X2Nvbm5lY3RvcnMgPSAwOwotCQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0 b3IpIHsKLQkJCWlmIChjb25uZWN0b3ItPm5ld19lbmNvZGVyID09IGVuY29kZXIpIHsKLQkJCQlX QVJOX09OKCFjb25uZWN0b3ItPm5ld19lbmNvZGVyLT5uZXdfY3J0Yyk7Ci0JCQkJbnVtX2Nvbm5l Y3RvcnMrKzsKLQkJCX0KLQkJfQotCi0JCWlmIChudW1fY29ubmVjdG9ycyA9PSAwKQotCQkJZW5j b2Rlci0+bmV3X2NydGMgPSBOVUxMOwotCQllbHNlIGlmIChudW1fY29ubmVjdG9ycyA+IDEpCi0J CQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JLyogTm93IHdlJ3ZlIGFsc28gdXBkYXRlZCBlbmNvZGVy LT5uZXdfY3J0YyBmb3IgYWxsIGVuY29kZXJzLiAqLwotCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3Rv cihkZXYsIGNvbm5lY3RvcikgewotCQljb25uZWN0b3Jfc3RhdGUgPQotCQkJZHJtX2F0b21pY19n ZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCAmY29ubmVjdG9yLT5iYXNlKTsKLQkJaWYgKElTX0VS Uihjb25uZWN0b3Jfc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoY29ubmVjdG9yX3N0YXRlKTsK KwkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCk7CiAKLQkJaWYgKGNvbm5lY3Rvci0+ bmV3X2VuY29kZXIpIHsKLQkJCWlmIChjb25uZWN0b3ItPm5ld19lbmNvZGVyICE9IGNvbm5lY3Rv ci0+ZW5jb2RlcikKLQkJCQljb25uZWN0b3ItPmVuY29kZXIgPSBjb25uZWN0b3ItPm5ld19lbmNv ZGVyOwotCQl9IGVsc2UgewotCQkJY29ubmVjdG9yX3N0YXRlLT5jcnRjID0gTlVMTDsKLQkJCWNv bm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0gTlVMTDsKLQkJfQorCQlpZiAoY29ubmVjdG9y X3N0YXRlLT5iZXN0X2VuY29kZXIgIT0gJmNvbm5lY3Rvci0+ZW5jb2Rlci0+YmFzZSkKKwkJCWNv bm5lY3Rvci0+ZW5jb2RlciA9CisJCQkJdG9faW50ZWxfZW5jb2Rlcihjb25uZWN0b3Jfc3RhdGUt PmJlc3RfZW5jb2Rlcik7CiAJfQotCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Ci0J CWNydGMtPm5ld19lbmFibGVkID0gZmFsc2U7Ci0KLQkJZm9yX2VhY2hfaW50ZWxfZW5jb2Rlcihk ZXYsIGVuY29kZXIpIHsKLQkJCWlmIChlbmNvZGVyLT5uZXdfY3J0YyA9PSBjcnRjKSB7Ci0JCQkJ Y3J0Yy0+bmV3X2VuYWJsZWQgPSB0cnVlOwotCQkJCWJyZWFrOwotCQkJfQotCQl9CiAKLQkJaWYg KGNydGMtPm5ld19lbmFibGVkICE9IGNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSkgewotCQkJY3J0 Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Ci0JCQlp ZiAoSVNfRVJSKGNydGNfc3RhdGUpKQotCQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwor CWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwkJ cmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0Yyk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OwogCi0JCQljcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSA9 IGNydGMtPm5ld19lbmFibGVkOwotCQl9CisJCWNydGNfc3RhdGUtPmVuYWJsZSA9IGRybV9hdG9t aWNfY29ubmVjdG9yc19mb3JfY3J0YyhzdGF0ZSwgY3J0Yyk7CiAJfQogCiAJcmV0dXJuIDA7Ci0t IAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK