From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v3 06/13] drm/i915: Add plumbing for digital connector state. Date: Mon, 10 Apr 2017 11:07:12 +0200 Message-ID: <1491815239-10685-7-git-send-email-maarten.lankhorst@linux.intel.com> References: <1491815239-10685-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 7D0E96E29F for ; Mon, 10 Apr 2017 09:07:25 +0000 (UTC) In-Reply-To: <1491815239-10685-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 b252ZXJ0ZWQgdG8gYXRvbWljLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1h YXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdG9taWMuYyAgfCAxNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxNCArKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDMyICsrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RzaS5jICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZv LmMgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICB8ICAgNCArLQogOCBm aWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWMuYwppbmRleCA1MGZiMWY3NmNjNWYuLjI3ZDVjNGExNmJjYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs dWRlICJpbnRlbF9kcnYuaCIKIAogLyoqCi0gKiBpbnRlbF9jb25uZWN0b3JfYXRvbWljX2dldF9w cm9wZXJ0eSAtIGZldGNoIGNvbm5lY3RvciBwcm9wZXJ0eSB2YWx1ZQorICogaW50ZWxfY29ubmVj dG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBmZXRjaCBsZWdhY3kgY29ubmVjdG9yIHByb3BlcnR5 IHZhbHVlCiAgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gZmV0Y2ggcHJvcGVydHkgZm9yCiAg KiBAc3RhdGU6IHN0YXRlIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5IHZhbHVlCiAgKiBAcHJvcGVy dHk6IHByb3BlcnR5IHRvIGxvb2sgdXAKQEAgLTQ1LDEyICs0NSwxNCBAQAogICogVGhlIERSTSBj b3JlIGRvZXMgbm90IHN0b3JlIHNoYWRvdyBjb3BpZXMgb2YgcHJvcGVydGllcyBmb3IKICAqIGF0 b21pYy1jYXBhYmxlIGRyaXZlcnMuICBUaGlzIGVudHJ5cG9pbnQgaXMgdXNlZCB0byBmZXRjaAog ICogdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBkcml2ZXItc3BlY2lmaWMgY29ubmVjdG9yIHByb3Bl cnR5LgorICoKKyAqIFRoaXMgaXMgYSBpbnRlcm1lZGlhcnkgc29sdXRpb24gdW50aWwgYWxsIGNv bm5lY3RvcnMgYXJlCisgKiBjb252ZXJ0ZWQgdG8gc3VwcG9ydCBmdWxsIGF0b21pYyBwcm9wZXJ0 aWVzLgogICovCi1pbnQKLWludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpzdGF0ZSwKLQkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVy dHksCi0JCQkJICAgIHVpbnQ2NF90ICp2YWwpCitpbnQgaW50ZWxfY29ubmVjdG9yX2F0b21pY19n ZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkJY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAorCQkJCQlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpwcm9wZXJ0eSwKKwkJCQkJdWludDY0X3QgKnZhbCkKIHsKIAlpbnQgaTsKIApAQCAtNzMs NyArNzUsMTY2IEBAIGludGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLS8qCisvKioK KyAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkgLSBob29rIGZv ciBjb25uZWN0b3ItPmF0b21pY19nZXRfcHJvcGVydHkuCisgKiBAY29ubmVjdG9yOiBDb25uZWN0 b3IgdG8gZ2V0IHRoZSBwcm9wZXJ0eSBmb3IuCisgKiBAc3RhdGU6IENvbm5lY3RvciBzdGF0ZSB0 byByZXRyaWV2ZSB0aGUgcHJvcGVydHkgZnJvbS4KKyAqIEBwcm9wZXJ0eTogUHJvcGVydHkgdG8g cmV0cmlldmUuCisgKiBAdmFsOiBSZXR1cm4gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eS4KKyAqCisg KiBSZXR1cm5zIHRoZSBhdG9taWMgcHJvcGVydHkgdmFsdWUgZm9yIGEgZGlnaXRhbCBjb25uZWN0 b3IuCisgKi8KK2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCQljb25zdCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUsCisJCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9w ZXJ0eSwKKwkJCQkJCXVpbnQ2NF90ICp2YWwpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVs X2Nvbm5fc3RhdGUgPQorCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSk7 CisKKwlpZiAocHJvcGVydHkgPT0gZGV2LT5tb2RlX2NvbmZpZy5zY2FsaW5nX21vZGVfcHJvcGVy dHkpCisJCSp2YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5wYW5lbC5maXR0aW5nX21vZGU7CisJZWxz ZSBpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPmZvcmNlX2F1ZGlvX3Byb3BlcnR5KQorCQkqdmFs ID0gaW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW87CisJZWxzZSBpZiAocHJvcGVydHkgPT0g ZGV2X3ByaXYtPmJyb2FkY2FzdF9yZ2JfcHJvcGVydHkpCisJCSp2YWwgPSBpbnRlbF9jb25uX3N0 YXRlLT5icm9hZGNhc3RfcmdiOworCWVsc2UgaWYgKHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25m aWcuYXNwZWN0X3JhdGlvX3Byb3BlcnR5KSB7CisJCXN3aXRjaCAoaW50ZWxfY29ubl9zdGF0ZS0+ YXNwZWN0X3JhdGlvKSB7CisJCWNhc2UgSERNSV9QSUNUVVJFX0FTUEVDVF9OT05FOiAqdmFsID0g RFJNX01PREVfUElDVFVSRV9BU1BFQ1RfTk9ORTsgYnJlYWs7CisJCWNhc2UgSERNSV9QSUNUVVJF X0FTUEVDVF80XzM6ICp2YWwgPSBEUk1fTU9ERV9QSUNUVVJFX0FTUEVDVF80XzM7IGJyZWFrOwor CQljYXNlIEhETUlfUElDVFVSRV9BU1BFQ1RfMTZfOTogKnZhbCA9IERSTV9NT0RFX1BJQ1RVUkVf QVNQRUNUXzE2Xzk7IGJyZWFrOworCQlkZWZhdWx0OgorCQkJTUlTU0lOR19DQVNFKGludGVsX2Nv bm5fc3RhdGUtPmFzcGVjdF9yYXRpbyk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0gZWxz ZSB7CisJCURSTV9ERUJVR19BVE9NSUMoIlVua25vd24gcHJvcGVydHkgJXNcbiIsIHByb3BlcnR5 LT5uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qKgor ICogaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX3NldF9wcm9wZXJ0eSAtIGhvb2sgZm9y IGNvbm5lY3Rvci0+YXRvbWljX3NldF9wcm9wZXJ0eS4KKyAqIEBjb25uZWN0b3I6IENvbm5lY3Rv ciB0byBzZXQgdGhlIHByb3BlcnR5IGZvci4KKyAqIEBzdGF0ZTogQ29ubmVjdG9yIHN0YXRlIHRv IHNldCB0aGUgcHJvcGVydHkgb24uCisgKiBAcHJvcGVydHk6IFByb3BlcnR5IHRvIHNldC4KKyAq IEB2YWw6IE5ldyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LgorICoKKyAqIFNldHMgdGhlIGF0b21p YyBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBkaWdpdGFsIGNvbm5lY3Rvci4KKyAqLworaW50IGludGVs X2RpZ2l0YWxfY29ubmVjdG9yX2F0b21pY19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKKwkJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwK KwkJCQkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCQkJdWludDY0X3QgdmFs KQoreworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVs X2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0 b3ItPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0 YXRlID0KKwkJdG9faW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUpOworCisJaWYg KHByb3BlcnR5ID09IGRldi0+bW9kZV9jb25maWcuc2NhbGluZ19tb2RlX3Byb3BlcnR5KSB7CisJ CWlmIChCSVQodmFsKSAmIH5pbnRlbF9jb25uZWN0b3ItPnBhbmVsLmFsbG93ZWRfZml0dGluZ19t b2RlX21hc2spIHsKKwkJCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIFBhbmVs IGZpdHRpbmcgbW9kZSAlbGx1IG5vdCBhbGxvd2VkLlxuIiwKKwkJCQkJIGNvbm5lY3Rvci0+YmFz ZS5pZCwgY29ubmVjdG9yLT5uYW1lLCB2YWwpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwor CQlpbnRlbF9jb25uX3N0YXRlLT5wYW5lbC5maXR0aW5nX21vZGUgPSB2YWw7CisJCXJldHVybiAw OworCX0KKworCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkp IHsKKwkJaW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW8gPSB2YWw7CisJCXJldHVybiAwOwor CX0KKworCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+YnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSkg eworCQlpbnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiID0gdmFsOworCQlyZXR1cm4gMDsK Kwl9CisKKwlpZiAocHJvcGVydHkgPT0gZGV2LT5tb2RlX2NvbmZpZy5hc3BlY3RfcmF0aW9fcHJv cGVydHkpIHsKKwkJc3dpdGNoICh2YWwpIHsKKwkJY2FzZSBEUk1fTU9ERV9QSUNUVVJFX0FTUEVD VF9OT05FOgorCQkJaW50ZWxfY29ubl9zdGF0ZS0+YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJF X0FTUEVDVF9OT05FOworCQkJYnJlYWs7CisJCWNhc2UgRFJNX01PREVfUElDVFVSRV9BU1BFQ1Rf NF8zOgorCQkJaW50ZWxfY29ubl9zdGF0ZS0+YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FT UEVDVF80XzM7CisJCQlicmVhazsKKwkJY2FzZSBEUk1fTU9ERV9QSUNUVVJFX0FTUEVDVF8xNl85 OgorCQkJaW50ZWxfY29ubl9zdGF0ZS0+YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVD VF8xNl85OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fREVCVUdfQVRPTUlDKCJVbmtu b3duIHBpY3R1cmUgYXNwZWN0IHJhdGlvICVsbGlcbiIsIHZhbCk7CisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlEUk1fREVCVUdfQVRPTUlDKCJVbmtub3duIHBy b3BlcnR5ICVzXG4iLCBwcm9wZXJ0eS0+bmFtZSk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK2lu dCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm4sCisJCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKQor eworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGUg PQorCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShuZXdfc3RhdGUpOworCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9vbGRf Y29ubmVjdG9yX3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUsIGNvbm4pOworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUgPQorCQl0b19pbnRlbF9kaWdp dGFsX2Nvbm5lY3Rvcl9zdGF0ZShvbGRfc3RhdGUpOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKKworCWlmICghbmV3X3N0YXRlLT5jcnRjKQorCQlyZXR1cm4gMDsKKworCWNy dGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShuZXdfc3RhdGUtPnN0YXRl LCBuZXdfc3RhdGUtPmNydGMpOworCisJLyogSW52aXNpYmxlIHRvIGZhc3RzZXQgc2luY2UgaXQn cyBhIHB1cmUgY29ubmVjdG9yIHByb3BlcnR5ICovCisJaWYgKG5ld19jb25uX3N0YXRlLT5wYW5l bC5maXR0aW5nX21vZGUgIT0gb2xkX2Nvbm5fc3RhdGUtPnBhbmVsLmZpdHRpbmdfbW9kZSkKKwkJ Y3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKKworCS8qCisJICogVGhlc2Ug cHJvcGVydGllcyBhcmUgaGFuZGxlZCBieSBmYXN0c2V0LCBhbmQgbWlnaHQgbm90IGVuZAorCSAq IHVwIGluIGEgbW9kZXNldC4KKwkgKi8KKwlpZiAobmV3X2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlv ICE9IG9sZF9jb25uX3N0YXRlLT5mb3JjZV9hdWRpbyB8fAorCSAgICBuZXdfY29ubl9zdGF0ZS0+ YnJvYWRjYXN0X3JnYiAhPSBvbGRfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYiB8fAorCSAgICBu ZXdfY29ubl9zdGF0ZS0+YXNwZWN0X3JhdGlvICE9IG9sZF9jb25uX3N0YXRlLT5hc3BlY3RfcmF0 aW8pCisJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30K KworLyoqCisgKiBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUgLSBkdXBs aWNhdGUgY29ubmVjdG9yIHN0YXRlCisgKiBAY29ubmVjdG9yOiBkaWdpdGFsIGNvbm5lY3Rvcgor ICoKKyAqIEFsbG9jYXRlcyBhbmQgcmV0dXJucyBhIGNvcHkgb2YgdGhlIGNvbm5lY3RvciBzdGF0 ZSAoYm90aCBjb21tb24gYW5kCisgKiBkaWdpdGFsIGNvbm5lY3RvciBzcGVjaWZpYykgZm9yIHRo ZSBzcGVjaWZpZWQgY29ubmVjdG9yLgorICoKKyAqIFJldHVybnM6IFRoZSBuZXdseSBhbGxvY2F0 ZWQgY29ubmVjdG9yIHN0YXRlLCBvciBOVUxMIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICoKK2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0 ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9kaWdp dGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IGttZW1kdXAoY29ubmVjdG9y LT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOworCWlmICghc3RhdGUpCisJCXJl dHVybiBOVUxMOworCisJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlKGNvbm5lY3RvciwgJnN0YXRlLT5iYXNlKTsKKwlyZXR1cm4gJnN0YXRlLT5iYXNlOworfQor CisvKioKICAqIGludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlIC0gZHVwbGljYXRlIGNydGMgc3Rh dGUKICAqIEBjcnRjOiBkcm0gY3J0YwogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwppbmRleCA0OGE1NDYyMTBkOGIuLjVlYjRkZGIwNDc5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwpAQCAtNTk1NiwxMSArNTk1NiwyMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9j b25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK IAogaW50IGludGVsX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKIHsKLQlkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQoJmNvbm5lY3Rvci0+ YmFzZSk7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl OwogCi0JaWYgKCFjb25uZWN0b3ItPmJhc2Uuc3RhdGUpCisJLyoKKwkgKiBBbGxvY2F0ZSBlbm91 Z2ggbWVtb3J5IHRvIGhvbGQgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUsCisJICogVGhp cyBtaWdodCBiZSBhIGZldyBieXRlcyB0b28gbWFueSwgYnV0IGZvciBjb25uZWN0b3JzIHRoYXQg ZG9uJ3QKKwkgKiBuZWVkIGl0IHdlJ2xsIGZyZWUgdGhlIHN0YXRlIGFuZCBhbGxvY2F0ZSBhIHNt YWxsZXIgb25lIG9uIHRoZSBmaXJzdAorCSAqIHN1Y2Nlc2Z1bCBjb21taXQgYW55d2F5LgorCSAq LworCWNvbm5fc3RhdGUgPSBremFsbG9jKHNpemVvZigqY29ubl9zdGF0ZSksIEdGUF9LRVJORUwp OworCWlmICghY29ubl9zdGF0ZSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwlfX2RybV9hdG9taWNf aGVscGVyX2Nvbm5lY3Rvcl9yZXNldCgmY29ubmVjdG9yLT5iYXNlLAorCQkJCQkgICAgJmNvbm5f c3RhdGUtPmJhc2UpOworCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmlu ZGV4IGZjN2Y0ZjllYWUxZS4uMzEyYTM5MDM4ZGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK QEAgLTU5MDUsNyArNTkwNSw3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJICAgICAgcGlwZV9uYW1lKHBpcGUpKTsK IAl9CiAKLQlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9t b2RlLCBkb3duY2xvY2tfbW9kZSk7CisJaW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9y LT5wYW5lbCwgZml4ZWRfbW9kZSwgZG93bmNsb2NrX21vZGUsIDApOwogCWludGVsX2Nvbm5lY3Rv ci0+cGFuZWwuYmFja2xpZ2h0LnBvd2VyID0gaW50ZWxfZWRwX2JhY2tsaWdodF9wb3dlcjsKIAlp bnRlbF9wYW5lbF9zZXR1cF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwaXBlKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAppbmRleCA0M2VhNzQ4ODJmOWEuLmE2ODZkMTEyZGVhMiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBzdHJ1Y3QgaW50ZWxfcGFuZWwg ewogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlOwogCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICpkb3duY2xvY2tfbW9kZTsKIAlpbnQgZml0dGluZ19tb2RlOworCXVuc2lnbmVk IGFsbG93ZWRfZml0dGluZ19tb2RlX21hc2s7CiAKIAkvKiBiYWNrbGlnaHQgKi8KIAlzdHJ1Y3Qg ewpAQCAtMzIzLDYgKzMyNCwyMCBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKIAlzdHJ1Y3Qg aW50ZWxfZHAgKm1zdF9wb3J0OwogfTsKIAorc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9y X3N0YXRlIHsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSBiYXNlOworCisJc3RydWN0IHsK KwkJaW50IGZpdHRpbmdfbW9kZTsKKwl9IHBhbmVsOworCisJZW51bSBoZG1pX2ZvcmNlX2F1ZGlv IGZvcmNlX2F1ZGlvOworCWludCBicm9hZGNhc3RfcmdiOworCWVudW0gaGRtaV9waWN0dXJlX2Fz cGVjdCBhc3BlY3RfcmF0aW87Cit9OworCisjZGVmaW5lIHRvX2ludGVsX2RpZ2l0YWxfY29ubmVj dG9yX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0 b3Jfc3RhdGUsIGJhc2UpCisKIHN0cnVjdCBkcGxsIHsKIAkvKiBnaXZlbiB2YWx1ZXMgKi8KIAlp bnQgbjsKQEAgLTE2NjUsNyArMTY4MCw4IEBAIHZvaWQgaW50ZWxfb3ZlcmxheV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogLyogaW50ZWxfcGFuZWwuYyAqLwogaW50 IGludGVsX3BhbmVsX2luaXQoc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCwKIAkJICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRfbW9kZSwKLQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqZG93bmNsb2NrX21vZGUpOworCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpkb3duY2xvY2tfbW9kZSwKKwkJICAgICB1bnNpZ25lZCBhbGxvd2VkX2ZpdHRpbmdfbW9kZV9t YXNrKTsKIHZvaWQgaW50ZWxfcGFuZWxfZmluaShzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsKTsK IHZvaWQgaW50ZWxfZml4ZWRfcGFuZWxfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqZml4ZWRfbW9kZSwKIAkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSk7CkBAIC0xODc2LDYgKzE4OTIsMjAgQEAgaW50IGludGVsX2Nvbm5lY3Rvcl9hdG9taWNf Z2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJCWNvbnN0 IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSwKIAkJCQkJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcHJvcGVydHksCiAJCQkJCXVpbnQ2NF90ICp2YWwpOworCitpbnQgaW50ZWxfZGlnaXRh bF9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAorCQkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAor CQkJCQkJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCisJCQkJCQl1aW50NjRfdCAqdmFs KTsKK2ludCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqc3RhdGUsCisJCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJ CXVpbnQ2NF90IHZhbCk7CitpbnQgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAorCQkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKm5ld19zdGF0ZSk7CitzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqCitpbnRlbF9k aWdpdGFsX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3Rvcik7CisKIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqaW50ZWxfY3J0Y19kdXBsaWNhdGVf c3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0 YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKnN0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKaW5kZXggM2ZmZThiMWYxZDQ4Li5l Nzg3MTQyMDI1YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCkBAIC0xODUzLDcgKzE4NTMs NyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IGZpeGVkX21vZGUtPndpZHRo X21tOwogCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IGZpeGVkX21vZGUtPmhl aWdodF9tbTsKIAotCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWwsIGZp eGVkX21vZGUsIE5VTEwpOworCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFu ZWwsIGZpeGVkX21vZGUsIE5VTEwsIDApOwogCWludGVsX3BhbmVsX3NldHVwX2JhY2tsaWdodChj b25uZWN0b3IsIElOVkFMSURfUElQRSk7CiAKIAlpbnRlbF9kc2lfYWRkX3Byb3BlcnRpZXMoaW50 ZWxfY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2 by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMKaW5kZXggYzE1NDRhNTMwOTVk Li4wYjcyMzE1N2MzOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2 by5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCkBAIC01NTQsNyArNTU0 LDcgQEAgdm9pZCBpbnRlbF9kdm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCQkgKi8KIAkJCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWws CiAJCQkJCSBpbnRlbF9kdm9fZ2V0X2N1cnJlbnRfbW9kZShjb25uZWN0b3IpLAotCQkJCQkgTlVM TCk7CisJCQkJCSBOVUxMLCAwKTsKIAkJCWludGVsX2R2by0+cGFuZWxfd2FudHNfZGl0aGVyID0g dHJ1ZTsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKaW5kZXggOGI5NDJlZjJiM2Vj Li45MTlkODQyOTA3NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKQEAgLTExODEsNyAr MTE4MSw3IEBAIHZvaWQgaW50ZWxfbHZkc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIG91dDoKIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwog Ci0JaW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwg ZG93bmNsb2NrX21vZGUpOworCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFu ZWwsIGZpeGVkX21vZGUsIGRvd25jbG9ja19tb2RlLCAwKTsKIAlpbnRlbF9wYW5lbF9zZXR1cF9i YWNrbGlnaHQoY29ubmVjdG9yLCBJTlZBTElEX1BJUEUpOwogCiAJbHZkc19lbmNvZGVyLT5pc19k dWFsX2xpbmsgPSBjb21wdXRlX2lzX2R1YWxfbGlua19sdmRzKGx2ZHNfZW5jb2Rlcik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwppbmRleCBjYjUwYzUyNzQwMWYuLmM2Y2UxNTU1MGU1ZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCkBAIC0xODAxLDEyICsxODAxLDE0IEBAIGlu dGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwp CiAKIGludCBpbnRlbF9wYW5lbF9pbml0KHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwsCiAJCSAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUsCi0JCSAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2RlKQorCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpkb3duY2xvY2tfbW9kZSwKKwkJICAgICB1bnNpZ25lZCBhbGxvd2VkX2ZpdHRpbmdf bW9kZV9tYXNrKQogewogCWludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHBhbmVsKTsK IAogCXBhbmVsLT5maXhlZF9tb2RlID0gZml4ZWRfbW9kZTsKIAlwYW5lbC0+ZG93bmNsb2NrX21v ZGUgPSBkb3duY2xvY2tfbW9kZTsKKwlwYW5lbC0+YWxsb3dlZF9maXR0aW5nX21vZGVfbWFzayA9 IGFsbG93ZWRfZml0dGluZ19tb2RlX21hc2s7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuNy40Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK