From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 RFC 5/5] drm/i915: Implement intel_crtc_toggle using atomic state Date: Thu, 23 Apr 2015 08:23:51 +0200 Message-ID: <55388FF7.4050908@linux.intel.com> References: <1429701862-22970-1-git-send-email-maarten.lankhorst@linux.intel.com> <1429701862-22970-6-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 8221189D73 for ; Wed, 22 Apr 2015 23:23:53 -0700 (PDT) In-Reply-To: <1429701862-22970-6-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 Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org QXNzdW1lIHRoZSBmdW5jdGlvbiBpcyBsb2NrZWQgd2l0aCBkcm1fbW9kZXNldF9sb2NrX2FsbCBm b3Igbm93LgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCkNoYW5nZXMgc2luY2UgUkZDIHYxOgogLSBHZXQgcmlk IG9mIHRoZSBjcnRjLT5zdGF0ZS0+YWN0aXZlIGFzc2lnbm1lbnQgaW4gaW50ZWxfY3J0Y19jb250 cm9sLAogICBpdCBjYXVzZWQgdGhlIHdob2xlIHN0YXRlIHRvIGJlIGNvbmZ1c2VkLgogLSBDb252 ZXJ0IHNvbWUgcGxhY2VzIHRoYXQgdXNlIHN0YXRlLT5lbmFibGUgdG8gc3RhdGUtPmFjdGl2ZS4K IC0gY3J0Yy0+c3RhdGUtPmFjdGl2ZSBzaG91bGQgbWlycm9yIGNydGMtPmFjdGl2ZSBub3csIGxh dHRlciBzaG91bGQKICAgYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LgoKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgMTc0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwppbmRleCA5ZGE5NTVlNGYzNTUuLmE2ODE2NTAzYTA4MCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCkBAIC03OTYsNyArNzk2LDcgQEAgc3RhdGljIGludCBpOTE1X2dl dF92YmxhbmtfdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlLAogCQly ZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpIHsKKwlpZiAo IWNydGMtPnN0YXRlLT5hY3RpdmUpIHsKIAkJRFJNX0RFQlVHX0tNUygiY3J0YyAlZCBpcyBkaXNh YmxlZFxuIiwgcGlwZSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IGFjYjVjNWJlYTQyOC4uMmQyYWRhNTgwYjM2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMDYsOCArMTA2LDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHN0YXRpYyB2 b2lkIGludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogc3Rh dGljIHZvaWQgc2tsX2luaXRfc2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Ci1zdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKLXN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoc3RydWN0 IGRybV9jcnRjICpjcnRjKTsKIHN0YXRpYyB2b2lkIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnko c3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfZW5hYmxlX3By aW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIApAQCAtMjE5NywyOCArMjE5NSw2IEBAIHZv aWQgaW50ZWxfZmx1c2hfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJUE9TVElOR19SRUFEKHJlZyk7CiB9CiAKLS8qKgotICogaW50ZWxfZW5hYmxlX3By aW1hcnlfaHdfcGxhbmUgLSBlbmFibGUgdGhlIHByaW1hcnkgcGxhbmUgb24gYSBnaXZlbiBwaXBl Ci0gKiBAcGxhbmU6ICBwbGFuZSB0byBiZSBlbmFibGVkCi0gKiBAY3J0YzogY3J0YyBmb3IgdGhl IHBsYW5lCi0gKgotICogRW5hYmxlIEBwbGFuZSBvbiBAY3J0YywgbWFraW5nIHN1cmUgdGhhdCB0 aGUgcGlwZSBpcyBydW5uaW5nIGZpcnN0LgotICovCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVf cHJpbWFyeV9od19wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKLQkJCQkJICBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0K LQkvKiBJZiB0aGUgcGlwZSBpc24ndCBlbmFibGVkLCB3ZSBjYW4ndCBwdW1wIHBpeGVscyBhbmQg bWF5IGhhbmcgKi8KLQlhc3NlcnRfcGlwZV9lbmFibGVkKGRldl9wcml2LCBpbnRlbF9jcnRjLT5w aXBlKTsKLQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT52aXNpYmxlID0gdHJ1 ZTsKLQotCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBsYW5l LT5mYiwKLQkJCQkJICAgICAgIGNydGMtPngsIGNydGMtPnkpOwotfQotCiBzdGF0aWMgYm9vbCBu ZWVkX3Z0ZF93YShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogI2lmZGVmIENPTkZJR19JTlRF TF9JT01NVQpAQCAtNDQ1NSwyMCArNDQzMSw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRf ZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCX0KIH0KIAotc3RhdGljIHZvaWQgaW50 ZWxfZW5hYmxlX3Nwcml0ZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQotewotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRl bF9jcnRjKGNydGMpLT5waXBlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Ci0KLQlkcm1fZm9yX2VhY2hfbGVnYWN5X3BsYW5lKHBs YW5lLCAmZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0KSB7Ci0JCWludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmUpOwotCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgPT0gcGlwZSkKLQkJ CWludGVsX3BsYW5lX3Jlc3RvcmUoJmludGVsX3BsYW5lLT5iYXNlKTsKLQl9Ci19Ci0KIHZvaWQg aHN3X2VuYWJsZV9pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwpAQCAtNDUzOSw3ICs0NTAxLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfY3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJYm9vbCBy ZWVuYWJsZV9pcHMgPSBmYWxzZTsKIAogCS8qIFRoZSBjbG9ja3MgaGF2ZSB0byBiZSBvbiB0byBs b2FkIHRoZSBwYWxldHRlLiAqLwotCWlmICghY3J0Yy0+c3RhdGUtPmVuYWJsZSB8fCAhaW50ZWxf Y3J0Yy0+YWN0aXZlKQorCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fCAhaW50ZWxfY3J0Yy0+ YWN0aXZlKQogCQlyZXR1cm47CiAKIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2X3ByaXYtPmRldikp IHsKQEAgLTQ2OTgsNDQgKzQ2NjAsNiBAQCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKIAloc3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Yyk7CiB9CiAKLXN0 YXRpYyB2b2lkIGludGVsX2NydGNfZW5hYmxlX3BsYW5lcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Ci17Ci0JaW50ZWxfZW5hYmxlX3ByaW1hcnlfaHdfcGxhbmUoY3J0Yy0+cHJpbWFyeSwgY3J0Yyk7 Ci0JaW50ZWxfZW5hYmxlX3Nwcml0ZV9wbGFuZXMoY3J0Yyk7Ci0JaW50ZWxfY3J0Y191cGRhdGVf Y3Vyc29yKGNydGMsIHRydWUpOwotCi0JaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShjcnRjKTsK LX0KLQotc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKLQlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Ci0KLQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7Ci0KLQlpbnRlbF9w cmVfZGlzYWJsZV9wcmltYXJ5KGNydGMpOwotCi0JaW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlz YWJsZShpbnRlbF9jcnRjKTsKLQlmb3JfZWFjaF9pbnRlbF9wbGFuZShkZXYsIGludGVsX3BsYW5l KSB7Ci0JCWlmIChpbnRlbF9wbGFuZS0+cGlwZSA9PSBwaXBlKSB7Ci0JCQlzdHJ1Y3QgZHJtX2Ny dGMgKmZyb20gPSBpbnRlbF9wbGFuZS0+YmFzZS5jcnRjOwotCi0JCQlpbnRlbF9wbGFuZS0+ZGlz YWJsZV9wbGFuZSgmaW50ZWxfcGxhbmUtPmJhc2UsCi0JCQkJCQkgICBmcm9tID86IGNydGMsIHRy dWUpOwotCQl9Ci0JfQotCi0JLyoKLQkgKiBGSVhNRTogT25jZSB3ZSBncm93IHByb3BlciBudWNs ZWFyIGZsaXAgc3VwcG9ydCBvdXQgb2YgdGhpcyB3ZSBuZWVkCi0JICogdG8gY29tcHV0ZSB0aGUg bWFzayBvZiBmbGlwIHBsYW5lcyBwcmVjaXNlbHkuIEZvciB0aGUgdGltZSBiZWluZwotCSAqIGNv bnNpZGVyIHRoaXMgYSBmbGlwIHRvIGEgTlVMTCBwbGFuZS4KLQkgKi8KLQlpbnRlbF9mcm9udGJ1 ZmZlcl9mbGlwKGRldiwgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlwZSkpOwotfQotCiBz dGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKQEAgLTU0NDEsNyArNTM2NSw3 IEBAIHN0YXRpYyBpbnQgdmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9waXBlcyhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCiAKIAkvKiBhZGQgYWxsIGFjdGl2ZSBwaXBlcyB0byB0aGUg c3RhdGUgKi8KIAlmb3JfZWFjaF9jcnRjKHN0YXRlLT5kZXYsIGNydGMpIHsKLQkJaWYgKCFjcnRj LT5zdGF0ZS0+ZW5hYmxlKQorCQlpZiAoIWNydGMtPnN0YXRlLT5hY3RpdmUpCiAJCQljb250aW51 ZTsKIAogCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0 Yyk7CkBAIC01NTM5LDcgKzU0NjMsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5h YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 CiAJYm9vbCBpc19kc2k7CiAKLQlXQVJOX09OKCFjcnRjLT5zdGF0ZS0+ZW5hYmxlKTsKKwlXQVJO X09OKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKTsKIAogCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCiAJ CXJldHVybjsKQEAgLTU2MTcsNyArNTU0MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy OwogCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAotCVdBUk5fT04oIWNydGMtPnN0YXRl LT5lbmFibGUpOworCVdBUk5fT04oIWNydGMtPnN0YXRlLT5hY3RpdmUpOwogCiAJaWYgKGludGVs X2NydGMtPmFjdGl2ZSkKIAkJcmV0dXJuOwpAQCAtNTcyOCwxMCArNTY1MiwxMyBAQCBzdGF0aWMg dm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB2b2lkIGludGVs X2NydGNfY29udHJvbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmln ICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWly ZV9jdHggKmN0eCA9IGNvbmZpZy0+YWNxdWlyZV9jdHg7CiAJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCWVudW0gaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW4gZG9tYWluOwotCXVuc2lnbmVkIGxvbmcgZG9tYWluczsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGU7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCWludCByZXQ7CiAKIAlp ZiAoZW5hYmxlID09IGludGVsX2NydGMtPmFjdGl2ZSkKIAkJcmV0dXJuOwpAQCAtNTczOSwyNCAr NTY2Niw0MCBAQCB2b2lkIGludGVsX2NydGNfY29udHJvbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGJvb2wgZW5hYmxlKQogCWlmIChlbmFibGUgJiYgIWNydGMtPnN0YXRlLT5lbmFibGUpCiAJCXJl dHVybjsKIAotCWNydGMtPnN0YXRlLT5hY3RpdmUgPSBlbmFibGU7Ci0JaWYgKGVuYWJsZSkgewot CQlkb21haW5zID0gZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhjcnRjKTsKLQkJZm9yX2VhY2hfcG93 ZXJfZG9tYWluKGRvbWFpbiwgZG9tYWlucykKLQkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRl dl9wcml2LCBkb21haW4pOwotCQlpbnRlbF9jcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnMgPSBk b21haW5zOworCS8qIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGRybV9tb2Rl c2V0X2xvY2tfYWxsIGZvciBub3cgKi8KKwlpZiAoV0FSTl9PTighY3R4KSkKKwkJcmV0dXJuOwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+d3dfY3R4KTsKIAotCQlkZXZfcHJpdi0+ZGlzcGxh eS5jcnRjX2VuYWJsZShjcnRjKTsKLQkJaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKGNydGMpOwot CX0gZWxzZSB7Ci0JCWludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoY3J0Yyk7Ci0JCWRldl9wcml2 LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVf YWxsb2MoZGV2KTsKKwlpZiAoV0FSTl9PTighc3RhdGUpKQorCQlyZXR1cm47CiAKLQkJZG9tYWlu cyA9IGludGVsX2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWluczsKLQkJZm9yX2VhY2hfcG93ZXJf ZG9tYWluKGRvbWFpbiwgZG9tYWlucykKLQkJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9w cml2LCBkb21haW4pOwotCQlpbnRlbF9jcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnMgPSAwOwor CXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKwlzdGF0ZS0+YWxsb3dfbW9kZXNldCA9IHRydWU7 CisKKwlwaXBlX2NvbmZpZyA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50 ZWxfY3J0Yyk7CisJaWYgKElTX0VSUihwaXBlX2NvbmZpZykpIHsKKwkJcmV0ID0gUFRSX0VSUihw aXBlX2NvbmZpZyk7CisJCWdvdG8gZXJyOwogCX0KKwlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUg PSBlbmFibGU7CisKKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0 YXRlLCBjcnRjLT5wcmltYXJ5KTsKKwlpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkgeworCQlyZXQg PSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKKwkJZ290byBlcnI7CisJfQorCisJcmV0ID0gaW50ZWxf c2V0X21vZGUoY3J0Yywgc3RhdGUpOworCWlmICghcmV0KQorCQlyZXR1cm47CisKKwlEUk1fRVJS T1IoIkZhaWxlZCB0byB0b2dnbGUgY3J0YyFcbiIpOworCitlcnI6CisJRFJNX0VSUk9SKCJVcGRh dGluZyBjcnRjIGFjdGl2ZSBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKKwlkcm1fYXRvbWljX3N0 YXRlX2ZyZWUoc3RhdGUpOwogfQogCiAvKioKQEAgLTU4MzIsNyArNTc3NSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2Nvbm5lY3Rvcl9jaGVja19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCiAKIAkJCWNydGMgPSBlbmNvZGVyLT5iYXNlLmNydGM7CiAKLQkJCUk5MTVfU1RB VEVfV0FSTighY3J0Yy0+c3RhdGUtPmVuYWJsZSwKKwkJCUk5MTVfU1RBVEVfV0FSTighY3J0Yy0+ c3RhdGUtPmFjdGl2ZSwKIAkJCQkJImNydGMgbm90IGVuYWJsZWRcbiIpOwogCQkJSTkxNV9TVEFU RV9XQVJOKCF0b19pbnRlbF9jcnRjKGNydGMpLT5hY3RpdmUsICJjcnRjIG5vdCBhY3RpdmVcbiIp OwogCQkJSTkxNV9TVEFURV9XQVJOKHBpcGUgIT0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSwK QEAgLTExMjMyLDcgKzExMTc1LDcgQEAgaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhdGUoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlpZiAoIWNydGNfc3RhdGUgfHwgIW5lZWRzX21v ZGVzZXQoY3J0Yy0+c3RhdGUpKQogCQkJY29udGludWU7CiAKLQkJaWYgKGNydGMtPnN0YXRlLT5l bmFibGUpIHsKKwkJaWYgKGNydGMtPnN0YXRlLT5hY3RpdmUpIHsKIAkJCXN0cnVjdCBkcm1fcHJv cGVydHkgKmRwbXNfcHJvcGVydHkgPQogCQkJCWRldi0+bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0 eTsKIApAQCAtMTEyNDMsOCArMTExODYsMTUgQEAgaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhdGUo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCiAJCQlpbnRlbF9lbmNvZGVyID0gdG9f aW50ZWxfZW5jb2Rlcihjb25uZWN0b3ItPmVuY29kZXIpOwogCQkJaW50ZWxfZW5jb2Rlci0+Y29u bmVjdG9yc19hY3RpdmUgPSB0cnVlOwotCQl9IGVsc2UKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBk cm1fcHJvcGVydHkgKmRwbXNfcHJvcGVydHkgPQorCQkJCWRldi0+bW9kZV9jb25maWcuZHBtc19w cm9wZXJ0eTsKKwogCQkJY29ubmVjdG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7CisJCQlk cm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCQkJCSBk cG1zX3Byb3BlcnR5LAorCQkJCQkJCSBEUk1fTU9ERV9EUE1TX09GRik7CisJCX0KIAl9CiAKIH0K QEAgLTExNjkyLDcgKzExNjQyLDcgQEAgY2hlY2tfc2hhcmVkX2RwbGxfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJICAgICBwbGwtPm9uLCBhY3RpdmUpOwogCiAJCWZvcl9lYWNoX2lu dGVsX2NydGMoZGV2LCBjcnRjKSB7Ci0JCQlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlICYm IGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0YykgPT0gcGxsKQorCQkJaWYgKGNydGMtPmJh c2Uuc3RhdGUtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBs bCkKIAkJCQllbmFibGVkX2NydGNzKys7CiAJCQlpZiAoY3J0Yy0+YWN0aXZlICYmIGludGVsX2Ny dGNfdG9fc2hhcmVkX2RwbGwoY3J0YykgPT0gcGxsKQogCQkJCWFjdGl2ZV9jcnRjcysrOwpAQCAt MTE4MjUsNyArMTE3NzUsNyBAQCBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkJCXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCi0JaWYgKCFwaXBl X2NvbmZpZy0+YmFzZS5lbmFibGUpCisJaWYgKCFwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCiAJ CWdvdG8gZG9uZTsKIAogCXJldCA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoY3J0Yywgc3Rh dGUsIHBpcGVfY29uZmlnKTsKQEAgLTExODg1LDcgKzExODM1LDcgQEAgc3RhdGljIGludCBfX2lu dGVsX3NldF9tb2RlX3NldHVwX3BsbHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog CQlnb3RvIGRvbmU7CiAKIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlLCBpKSB7Ci0JCWlmICghbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSB8fCAhY3J0Y19z dGF0ZS0+ZW5hYmxlKQorCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkgfHwgIWNydGNf c3RhdGUtPmFjdGl2ZSkKIAkJCWNvbnRpbnVlOwogCiAJCWludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwpAQCAtMTIwNzIsNyArMTIwMjIsNyBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0 X21vZGUoc3RydWN0IGRybV9jcnRjICptb2Rlc2V0X2NydGMsCiAJICogcGlwZXM7IGhlcmUgd2Ug YXNzdW1lIGEgc2luZ2xlIG1vZGVzZXRfcGlwZSBhbmQgb25seSB0cmFjayB0aGUKIAkgKiBzaW5n bGUgY3J0YyBhbmQgbW9kZS4KIAkgKi8KLQlpZiAocGlwZV9jb25maWctPmJhc2UuZW5hYmxlICYm IG5lZWRzX21vZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNlKSkgeworCWlmIChwaXBlX2NvbmZpZy0+ YmFzZS5hY3RpdmUgJiYgbmVlZHNfbW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpKSB7CiAJCW1v ZGVzZXRfY3J0Yy0+bW9kZSA9IHBpcGVfY29uZmlnLT5iYXNlLm1vZGU7CiAKIAkJLyoKQEAgLTEy MDk1LDcgKzEyMDQ1LDcgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1f Y3J0YyAqbW9kZXNldF9jcnRjLAogCiAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwg cGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCiAJZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQlpZiAoIWNydGMtPnN0YXRl LT5lbmFibGUpCisJCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKIAkJCWNvbnRpbnVlOwogCiAJ CXVwZGF0ZV9zY2FubGluZV9vZmZzZXQodG9faW50ZWxfY3J0YyhjcnRjKSk7CkBAIC0xMjcwOCwx MiArMTI2NTgsMTYgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2tfY3J0YyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJaW50IGksIG5wbGFuZXMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV90 b3RhbF9wbGFuZSwgaWR4OwogCWJvb2wgbW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9kZXNldChjcnRj X3N0YXRlKTsKIAlib29sIGlzX2NydGNfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmFjdGl2ZTsKLQli b29sIHdhc19jcnRjX2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+YWN0aXZlICYmIGludGVsX2NydGMt PmFjdGl2ZTsKKwlib29sIHdhc19jcnRjX2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+YWN0aXZlOwog CiAJbWVtc2V0KCZpbnRlbF9jcnRjLT5hdG9taWMsIDAsIHNpemVvZihpbnRlbF9jcnRjLT5hdG9t aWMpKTsKIAlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gbW9kZV9jaGFuZ2VkOwogCi0J aWR4ID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CisJaWR4ID0gY3J0Yy0+YmFzZS5pZDsKKwlJOTE1 X1NUQVRFX1dBUk4oY3J0Yy0+c3RhdGUtPmFjdGl2ZSAhPSBpbnRlbF9jcnRjLT5hY3RpdmUsCisJ CSJDcnRjICVpIG1pc21hdGNoIGJldHdlZW4gc3RhdGUtPmFjdGl2ZSglaSkgYW5kIGNydGMtPmFj dGl2ZSAoJWkpXG4iLAorCQlpZHgsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGludGVsX2NydGMtPmFj dGl2ZSk7CisKIAlEUk1fREVCVUdfQVRPTUlDKCJDcnRjICVpIHdhcyBlbmFibGVkICVpIG5vdyBl bmFibGVkOiAlaVxuIiwKIAkJCSBpZHgsIHdhc19jcnRjX2VuYWJsZWQsIGlzX2NydGNfZW5hYmxl ZCk7CiAKQEAgLTEyNzM4LDcgKzEyNjkyLDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hl Y2tfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCWZiID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZmI7CiAKIAkJRFJNX0RFQlVHX0FUT01JQygiQ3J0YyAlaSBoYXMgcGxhbmUgJWkgd2l0aCBmYiAl aVxuIiwgaWR4LAotCQkJZHJtX3BsYW5lX2luZGV4KCZwbGFuZS0+YmFzZSksIGZiID8gZmItPmJh c2UuaWQgOiAtMSk7CisJCQlwbGFuZS0+YmFzZS5iYXNlLmlkLCBmYiA/IGZiLT5iYXNlLmlkIDog LTEpOwogCQlEUk1fREVCVUdfQVRPTUlDKCJcdHZpc2libGUgJWkgLT4gJWksIG9mZiAlaSwgb24g JWksIG1zICVpXG4iLAogCQkJd2FzX3Zpc2libGUsIHZpc2libGUsIHR1cm5fb2ZmLCB0dXJuX29u LCBtb2RlX2NoYW5nZWQpOwogCkBAIC0xNDI5NCw3ICsxNDI0OCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJICogaGF2ZSBhY3Rp dmUgY29ubmVjdG9ycy9lbmNvZGVycy4gKi8KIAlpbnRlbF9jcnRjX3VwZGF0ZV9kcG1zKCZjcnRj LT5iYXNlKTsKIAotCWlmIChjcnRjLT5hY3RpdmUgIT0gY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxl KSB7CisJaWYgKGNydGMtPmFjdGl2ZSAhPSBjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUpIHsKIAkJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAKIAkJLyogVGhpcyBjYW4gaGFwcGVuIGVp dGhlciBkdWUgdG8gYnVncyBpbiB0aGUgZ2V0X2h3X3N0YXRlCi0tIAoyLjEuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==