From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v4 2/9] drm/i915: Add plumbing for digital connector state, v2. Date: Wed, 12 Apr 2017 12:50:00 +0200 Message-ID: <1491994207-25965-3-git-send-email-maarten.lankhorst@linux.intel.com> References: <1491994207-25965-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 [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3CE176E6C9 for ; Wed, 12 Apr 2017 10:50:37 +0000 (UTC) In-Reply-To: <1491994207-25965-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 U29tZSBhdG9taWMgcHJvcGVydGllcyBhcmUgY29tbW9uIGJldHdlZW4gdGhlIHZhcmlvdXMga2lu ZHMgb2YKY29ubmVjdG9ycywgZm9yIGV4YW1wbGUgYSBsb3Qgb2YgdGhlbSB1c2UgcGFuZWwgZml0 dGluZyBtb2RlLgpJdCBtYWtlcyBzZW5zZSB0byBwdXQgYSBsb3Qgb2YgaXQgaW4gYSBjb21tb24g cGxhY2UsIHNvIGVhY2gKY29ubmVjdG9yIGNhbiB1c2UgaXQgd2hpbGUgdGhleSdyZSBiZWluZyBj b252ZXJ0ZWQuCgpJbXBsZW1lbnQgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgZm9yIHRoZSBjb25u ZWN0b3JzOgotIHNjYWxpbmcgbW9kZSBwcm9wZXJ0eQotIGZvcmNlIGF1ZGlvIHByb3BlcnR5Ci0g YnJvYWRjYXN0IHJnYgotIGFzcGVjdCByYXRpbwoKV2hpbGUgYXQgaXQsIG1ha2UgY2xlYXIgdGhh dCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5CmlzIGEgaGFjayB0 aGF0IGhhcyB0byBiZSByZW1vdmVkIHdoZW4gYWxsIGNvbm5lY3RvciBwcm9wZXJ0aWVzCmFyZSBj b252ZXJ0ZWQgdG8gYXRvbWljLgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBTY2FsaW5nIG1vZGUgYW5k IGFzcGVjdCByYXRpbyBhcmUgcGFydGx5IGhhbmRsZWQgaW4gY29yZSBub3cuCgpTaWduZWQtb2Zm LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8IDE0MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIHwgIDE0ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAg ICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDI3ICsr KysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BhbmVsLmMgICB8ICAgNCArLQogOCBmaWxlcyBjaGFuZ2VkLCAxODAgaW5zZXJ0aW9ucygr KSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwppbmRleCA1 MGZiMWY3NmNjNWYuLmViNzIxNjY2NzVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj LmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKIAogLyoqCi0gKiBp bnRlbF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eSAtIGZldGNoIGNvbm5lY3RvciBwcm9w ZXJ0eSB2YWx1ZQorICogaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBmZXRj aCBsZWdhY3kgY29ubmVjdG9yIHByb3BlcnR5IHZhbHVlCiAgKiBAY29ubmVjdG9yOiBjb25uZWN0 b3IgdG8gZmV0Y2ggcHJvcGVydHkgZm9yCiAgKiBAc3RhdGU6IHN0YXRlIGNvbnRhaW5pbmcgdGhl IHByb3BlcnR5IHZhbHVlCiAgKiBAcHJvcGVydHk6IHByb3BlcnR5IHRvIGxvb2sgdXAKQEAgLTQ1 LDEyICs0NSwxNCBAQAogICogVGhlIERSTSBjb3JlIGRvZXMgbm90IHN0b3JlIHNoYWRvdyBjb3Bp ZXMgb2YgcHJvcGVydGllcyBmb3IKICAqIGF0b21pYy1jYXBhYmxlIGRyaXZlcnMuICBUaGlzIGVu dHJ5cG9pbnQgaXMgdXNlZCB0byBmZXRjaAogICogdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBkcml2 ZXItc3BlY2lmaWMgY29ubmVjdG9yIHByb3BlcnR5LgorICoKKyAqIFRoaXMgaXMgYSBpbnRlcm1l ZGlhcnkgc29sdXRpb24gdW50aWwgYWxsIGNvbm5lY3RvcnMgYXJlCisgKiBjb252ZXJ0ZWQgdG8g c3VwcG9ydCBmdWxsIGF0b21pYyBwcm9wZXJ0aWVzLgogICovCi1pbnQKLWludGVsX2Nvbm5lY3Rv cl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0J CQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKLQkJCQkgICAg c3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCi0JCQkJICAgIHVpbnQ2NF90ICp2YWwpCitp bnQgaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKKwkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0 YXRlLAorCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJdWludDY0X3Qg KnZhbCkKIHsKIAlpbnQgaTsKIApAQCAtNzMsNyArNzUsMTMzIEBAIGludGVsX2Nvbm5lY3Rvcl9h dG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0 dXJuIC1FSU5WQUw7CiB9CiAKLS8qCisvKioKKyAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0 b21pY19nZXRfcHJvcGVydHkgLSBob29rIGZvciBjb25uZWN0b3ItPmF0b21pY19nZXRfcHJvcGVy dHkuCisgKiBAY29ubmVjdG9yOiBDb25uZWN0b3IgdG8gZ2V0IHRoZSBwcm9wZXJ0eSBmb3IuCisg KiBAc3RhdGU6IENvbm5lY3RvciBzdGF0ZSB0byByZXRyaWV2ZSB0aGUgcHJvcGVydHkgZnJvbS4K KyAqIEBwcm9wZXJ0eTogUHJvcGVydHkgdG8gcmV0cmlldmUuCisgKiBAdmFsOiBSZXR1cm4gdmFs dWUgZm9yIHRoZSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zIHRoZSBhdG9taWMgcHJvcGVydHkg dmFsdWUgZm9yIGEgZGlnaXRhbCBjb25uZWN0b3IuCisgKi8KK2ludCBpbnRlbF9kaWdpdGFsX2Nv bm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCisJCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCisJCQkJ CQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJCXVpbnQ2NF90ICp2YWwpCit7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3RhdGUgPQorCQl0b19pbnRlbF9kaWdp dGFsX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSk7CisKKwlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYt PmZvcmNlX2F1ZGlvX3Byb3BlcnR5KQorCQkqdmFsID0gaW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2Vf YXVkaW87CisJZWxzZSBpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPmJyb2FkY2FzdF9yZ2JfcHJv cGVydHkpCisJCSp2YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiOworCWVsc2Ug eworCQlEUk1fREVCVUdfQVRPTUlDKCJVbmtub3duIHByb3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+ bmFtZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAq IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHkgLSBob29rIGZvciBj b25uZWN0b3ItPmF0b21pY19zZXRfcHJvcGVydHkuCisgKiBAY29ubmVjdG9yOiBDb25uZWN0b3Ig dG8gc2V0IHRoZSBwcm9wZXJ0eSBmb3IuCisgKiBAc3RhdGU6IENvbm5lY3RvciBzdGF0ZSB0byBz ZXQgdGhlIHByb3BlcnR5IG9uLgorICogQHByb3BlcnR5OiBQcm9wZXJ0eSB0byBzZXQuCisgKiBA dmFsOiBOZXcgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eS4KKyAqCisgKiBTZXRzIHRoZSBhdG9taWMg cHJvcGVydHkgdmFsdWUgZm9yIGEgZGlnaXRhbCBjb25uZWN0b3IuCisgKi8KK2ludCBpbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCisJCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCisJ CQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJCXVpbnQ2NF90IHZhbCkK K3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0ZSA9CisJCXRvX2ludGVsX2Rp Z2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0YXRlKTsKKworCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJp di0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpIHsKKwkJaW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVk aW8gPSB2YWw7CisJCXJldHVybiAwOworCX0KKworCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+ YnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSkgeworCQlpbnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3Rf cmdiID0gdmFsOworCQlyZXR1cm4gMDsKKwl9CisKKwlEUk1fREVCVUdfQVRPTUlDKCJVbmtub3du IHByb3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+bmFtZSk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisK K2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm4sCisJCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRl KQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3Rh dGUgPQorCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShuZXdfc3RhdGUpOworCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9v bGRfY29ubmVjdG9yX3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUsIGNvbm4pOworCXN0cnVjdCBpbnRl bF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUgPQorCQl0b19pbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShvbGRfc3RhdGUpOworCXN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uKTsKKwlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisKKwlpZiAoaW50ZWxfY29ubmVjdG9yLT5wYW5l bC5hbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNrICYmCisJICAgIChCSVQobmV3X3N0YXRlLT5zY2Fs aW5nX21vZGUpICYgfmludGVsX2Nvbm5lY3Rvci0+cGFuZWwuYWxsb3dlZF9maXR0aW5nX21vZGVf bWFzaykpIHsKKwkJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gUGFuZWwgZml0 dGluZyBtb2RlICV1IG5vdCBhbGxvd2VkLlxuIiwKKwkJCQkgY29ubi0+YmFzZS5pZCwgY29ubi0+ bmFtZSwgbmV3X3N0YXRlLT5zY2FsaW5nX21vZGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlpZiAoIW5ld19zdGF0ZS0+Y3J0YykKKwkJcmV0dXJuIDA7CisKKwljcnRjX3N0YXRlID0gZHJt X2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUobmV3X3N0YXRlLT5zdGF0ZSwgbmV3X3N0YXRlLT5j cnRjKTsKKworCS8qIEludmlzaWJsZSB0byBmYXN0c2V0IHNpbmNlIGl0J3MgYSBwdXJlIGNvbm5l Y3RvciBwcm9wZXJ0eSAqLworCWlmIChuZXdfY29ubl9zdGF0ZS0+YmFzZS5zY2FsaW5nX21vZGUg IT0gb2xkX2Nvbm5fc3RhdGUtPmJhc2Uuc2NhbGluZ19tb2RlKQorCQljcnRjX3N0YXRlLT5jb25u ZWN0b3JzX2NoYW5nZWQgPSB0cnVlOworCisJLyoKKwkgKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBo YW5kbGVkIGJ5IGZhc3RzZXQsIGFuZCBtaWdodCBub3QgZW5kCisJICogdXAgaW4gYSBtb2Rlc2V0 LgorCSAqLworCWlmIChuZXdfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW8gIT0gb2xkX2Nvbm5fc3Rh dGUtPmZvcmNlX2F1ZGlvIHx8CisJICAgIG5ld19jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiICE9 IG9sZF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiIHx8CisJICAgIG5ld19jb25uX3N0YXRlLT5i YXNlLnBpY3R1cmVfYXNwZWN0X3JhdGlvICE9IG9sZF9jb25uX3N0YXRlLT5iYXNlLnBpY3R1cmVf YXNwZWN0X3JhdGlvKQorCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCisJcmV0 dXJuIDA7Cit9CisKKy8qKgorICogaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlIC0gZHVwbGljYXRlIGNvbm5lY3RvciBzdGF0ZQorICogQGNvbm5lY3RvcjogZGlnaXRhbCBj b25uZWN0b3IKKyAqCisgKiBBbGxvY2F0ZXMgYW5kIHJldHVybnMgYSBjb3B5IG9mIHRoZSBjb25u ZWN0b3Igc3RhdGUgKGJvdGggY29tbW9uIGFuZAorICogZGlnaXRhbCBjb25uZWN0b3Igc3BlY2lm aWMpIGZvciB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rvci4KKyAqCisgKiBSZXR1cm5zOiBUaGUgbmV3 bHkgYWxsb2NhdGVkIGNvbm5lY3RvciBzdGF0ZSwgb3IgTlVMTCBvbiBmYWlsdXJlLgorICovCitz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqCitpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9kdXBs aWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlOworCisJc3RhdGUgPSBrbWVtZHVw KGNvbm5lY3Rvci0+c3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0 YXRlKQorCQlyZXR1cm4gTlVMTDsKKworCV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1 cGxpY2F0ZV9zdGF0ZShjb25uZWN0b3IsICZzdGF0ZS0+YmFzZSk7CisJcmV0dXJuICZzdGF0ZS0+ YmFzZTsKK30KKworLyoqCiAgKiBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSAtIGR1cGxpY2F0 ZSBjcnRjIHN0YXRlCiAgKiBAY3J0YzogZHJtIGNydGMKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKaW5kZXggNDhhNTQ2MjEwZDhiLi41ZWI0ZGRiMDQ3OTcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTU5NTYsMTEgKzU5NTYsMjEgQEAgc3RhdGljIHZv aWQgaW50ZWxfY29ubmVjdG9yX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCiAKIGludCBpbnRlbF9jb25uZWN0b3JfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCiB7Ci0JZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0KCZj b25uZWN0b3ItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZTsKIAotCWlmICghY29ubmVjdG9yLT5iYXNlLnN0YXRlKQorCS8qCisJICogQWxs b2NhdGUgZW5vdWdoIG1lbW9yeSB0byBob2xkIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRl LAorCSAqIFRoaXMgbWlnaHQgYmUgYSBmZXcgYnl0ZXMgdG9vIG1hbnksIGJ1dCBmb3IgY29ubmVj dG9ycyB0aGF0IGRvbid0CisJICogbmVlZCBpdCB3ZSdsbCBmcmVlIHRoZSBzdGF0ZSBhbmQgYWxs b2NhdGUgYSBzbWFsbGVyIG9uZSBvbiB0aGUgZmlyc3QKKwkgKiBzdWNjZXNmdWwgY29tbWl0IGFu eXdheS4KKwkgKi8KKwljb25uX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmNvbm5fc3RhdGUpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWNvbm5fc3RhdGUpCiAJCXJldHVybiAtRU5PTUVNOwogCisJX19k cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQoJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkJ ICAgICZjb25uX3N0YXRlLT5iYXNlKTsKKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwppbmRleCA5NDRiMTQ0OWI3ZjkuLjBhZmQ4ZjMwMzdmMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCkBAIC01ODk2LDcgKzU4OTYsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5p dF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCSAgICAgIHBpcGVfbmFt ZShwaXBlKSk7CiAJfQogCi0JaW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5l bCwgZml4ZWRfbW9kZSwgZG93bmNsb2NrX21vZGUpOworCWludGVsX3BhbmVsX2luaXQoJmludGVs X2Nvbm5lY3Rvci0+cGFuZWwsIGZpeGVkX21vZGUsIGRvd25jbG9ja19tb2RlLCAwKTsKIAlpbnRl bF9jb25uZWN0b3ItPnBhbmVsLmJhY2tsaWdodC5wb3dlciA9IGludGVsX2VkcF9iYWNrbGlnaHRf cG93ZXI7CiAJaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGlwZSk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggZjc4ZDdjNWYzODA1Li40ZGY5ZTQ1MzFlZGMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0yNjIsNiArMjYyLDcgQEAgc3RydWN0IGlu dGVsX3BhbmVsIHsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRfbW9kZTsKIAlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZG93bmNsb2NrX21vZGU7CiAJaW50IGZpdHRpbmdfbW9kZTsK Kwl1bnNpZ25lZCBhbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNrOwogCiAJLyogYmFja2xpZ2h0ICov CiAJc3RydWN0IHsKQEAgLTMyMyw2ICszMjQsMTUgQEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7 CiAJc3RydWN0IGludGVsX2RwICptc3RfcG9ydDsKIH07CiAKK3N0cnVjdCBpbnRlbF9kaWdpdGFs X2Nvbm5lY3Rvcl9zdGF0ZSB7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgYmFzZTsKKwor CWVudW0gaGRtaV9mb3JjZV9hdWRpbyBmb3JjZV9hdWRpbzsKKwlpbnQgYnJvYWRjYXN0X3JnYjsK K307CisKKyNkZWZpbmUgdG9faW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUoeCkgY29udGFp bmVyX29mKHgsIHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSwgYmFzZSkKKwog c3RydWN0IGRwbGwgewogCS8qIGdpdmVuIHZhbHVlcyAqLwogCWludCBuOwpAQCAtMTY2OCw3ICsx Njc4LDggQEAgdm9pZCBpbnRlbF9vdmVybGF5X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiAvKiBpbnRlbF9wYW5lbC5jICovCiBpbnQgaW50ZWxfcGFuZWxfaW5pdChz dHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsLAogCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpmaXhlZF9tb2RlLAotCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tf bW9kZSk7CisJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2RlLAor CQkgICAgIHVuc2lnbmVkIGFsbG93ZWRfZml0dGluZ19tb2RlX21hc2spOwogdm9pZCBpbnRlbF9w YW5lbF9maW5pKHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwpOwogdm9pZCBpbnRlbF9maXhlZF9w YW5lbF9tb2RlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlLAogCQkJ ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKTsKQEAgLTE4NzksNiAr MTg5MCwyMCBAQCBpbnQgaW50ZWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKnN0YXRlLAogCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKIAkJ CQkJdWludDY0X3QgKnZhbCk7CisKK2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNf Z2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCQljb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCisJCQkJCQlzdHJ1Y3QgZHJtX3By b3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJCXVpbnQ2NF90ICp2YWwpOworaW50IGludGVsX2RpZ2l0 YWxfY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKKwkJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKKwkJCQkJ CXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCQkJdWludDY0X3QgdmFsKTsKK2lu dCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm4sCisJCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKTsK K3N0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICoKK2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2R1 cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKKwogc3RydWN0 IGRybV9jcnRjX3N0YXRlICppbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOwogdm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2kuYwppbmRleCAzZmZlOGIxZjFkNDguLmU3ODcxNDIwMjVhYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZvaWQgaW50ZWxfZHNp X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNvbm5lY3Rvci0+ZGlz cGxheV9pbmZvLndpZHRoX21tID0gZml4ZWRfbW9kZS0+d2lkdGhfbW07CiAJY29ubmVjdG9yLT5k aXNwbGF5X2luZm8uaGVpZ2h0X21tID0gZml4ZWRfbW9kZS0+aGVpZ2h0X21tOwogCi0JaW50ZWxf cGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgTlVMTCk7CisJ aW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgTlVM TCwgMCk7CiAJaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xpZ2h0KGNvbm5lY3RvciwgSU5WQUxJRF9Q SVBFKTsKIAogCWludGVsX2RzaV9hZGRfcHJvcGVydGllcyhpbnRlbF9jb25uZWN0b3IpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kdm8uYwppbmRleCBjMTU0NGE1MzA5NWQuLjBiNzIzMTU3YzM4YiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIGludGVsX2R2 b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAqLwogCQkJaW50 ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwKIAkJCQkJIGludGVsX2R2b19n ZXRfY3VycmVudF9tb2RlKGNvbm5lY3RvciksCi0JCQkJCSBOVUxMKTsKKwkJCQkJIE5VTEwsIDAp OwogCQkJaW50ZWxfZHZvLT5wYW5lbF93YW50c19kaXRoZXIgPSB0cnVlOwogCQl9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2x2ZHMuYwppbmRleCA4Yjk0MmVmMmIzZWMuLjkxOWQ4NDI5MDc3NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgdm9pZCBpbnRl bF9sdmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogb3V0OgogCW11 dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAKLQlpbnRlbF9wYW5lbF9pbml0 KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9tb2RlLCBkb3duY2xvY2tfbW9kZSk7CisJ aW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgZG93 bmNsb2NrX21vZGUsIDApOwogCWludGVsX3BhbmVsX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3Is IElOVkFMSURfUElQRSk7CiAKIAlsdmRzX2VuY29kZXItPmlzX2R1YWxfbGluayA9IGNvbXB1dGVf aXNfZHVhbF9saW5rX2x2ZHMobHZkc19lbmNvZGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jCmluZGV4IGNiNTBjNTI3NDAxZi4uYzZjZTE1NTUwZTVlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BhbmVsLmMKQEAgLTE4MDEsMTIgKzE4MDEsMTQgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNr bGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKIAogaW50IGludGVsX3BhbmVs X2luaXQoc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCwKIAkJICAgICBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqZml4ZWRfbW9kZSwKLQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZG93 bmNsb2NrX21vZGUpCisJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19t b2RlLAorCQkgICAgIHVuc2lnbmVkIGFsbG93ZWRfZml0dGluZ19tb2RlX21hc2spCiB7CiAJaW50 ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3MocGFuZWwpOwogCiAJcGFuZWwtPmZpeGVkX21v ZGUgPSBmaXhlZF9tb2RlOwogCXBhbmVsLT5kb3duY2xvY2tfbW9kZSA9IGRvd25jbG9ja19tb2Rl OworCXBhbmVsLT5hbGxvd2VkX2ZpdHRpbmdfbW9kZV9tYXNrID0gYWxsb3dlZF9maXR0aW5nX21v ZGVfbWFzazsKIAogCXJldHVybiAwOwogfQotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=