From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [RFC 12/13] drm/dp: link: Track capabilities alongside settings Date: Wed, 12 Aug 2015 17:06:40 +0200 Message-ID: <1439392001-29637-12-git-send-email-thierry.reding@gmail.com> References: <1439392001-29637-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D8B6720A7 for ; Wed, 12 Aug 2015 08:08:16 -0700 (PDT) Received: by pawu10 with SMTP id u10so16452011paw.1 for ; Wed, 12 Aug 2015 08:08:16 -0700 (PDT) In-Reply-To: <1439392001-29637-1-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClN0b3JlIGNhcGFiaWxp dGllcyBpbiBtYXhfKiBmaWVsZHMgYW5kIGFkZCBzZXBhcmF0ZSBmaWVsZHMgZm9yIHRoZQpjdXJy ZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8 dHJlZGluZ0BudmlkaWEuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMg ICAgfCAzNSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL21zbS9lZHAvZWRwX2N0cmwuYyB8ICA2ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2RwYXV4LmMgICAgICB8ICA4ICsrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMg ICAgICAgIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJt X2RwX2hlbHBlci5oICAgICAgICB8ICA2ICsrKystLQogNSBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNl cnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2RwX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwppbmRleCBl YTc0ODg0YzljYjMuLjJmMzVhYmE4ZWYxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcF9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCkBAIC00 NDUsMTAgKzQ0NSwxMyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfbGlua19yZXNldChzdHJ1Y3QgZHJt X2RwX2xpbmsgKmxpbmspCiAKIAlsaW5rLT5yZXZpc2lvbiA9IDA7CiAJbGluay0+ZWRwID0gMDsK LQlsaW5rLT5yYXRlID0gMDsKLQlsaW5rLT5udW1fbGFuZXMgPSAwOworCWxpbmstPm1heF9sYW5l cyA9IDA7CisJbGluay0+bWF4X3JhdGUgPSAwOwogCWxpbmstPmNhcGFiaWxpdGllcyA9IDA7CiAJ bGluay0+YXV4X3JkX2ludGVydmFsID0gMDsKKworCWxpbmstPmxhbmVzID0gMDsKKwlsaW5rLT5y YXRlID0gMDsKIH0KIAogLyoqCkBAIC00NzQsOCArNDc3LDggQEAgaW50IGRybV9kcF9saW5rX3By b2JlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAkJ cmV0dXJuIGVycjsKIAogCWxpbmstPnJldmlzaW9uID0gdmFsdWVzWzBdOwotCWxpbmstPnJhdGUg PSBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUodmFsdWVzWzFdKTsKLQlsaW5rLT5udW1fbGFu ZXMgPSB2YWx1ZXNbMl0gJiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOworCWxpbmstPm1heF9yYXRl ID0gZHJtX2RwX2J3X2NvZGVfdG9fbGlua19yYXRlKHZhbHVlc1sxXSk7CisJbGluay0+bWF4X2xh bmVzID0gdmFsdWVzWzJdICYgRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKIAogCWlmIChsaW5rLT5y ZXZpc2lvbiA+PSAweDExKQogCQlpZiAodmFsdWVzWzJdICYgRFBfRU5IQU5DRURfRlJBTUVfQ0FQ KQpAQCAtNTI1LDYgKzUyOCwxMCBAQCBpbnQgZHJtX2RwX2xpbmtfcHJvYmUoc3RydWN0IGRybV9k cF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQogCS8qIERQX1RSQUlOSU5HX0FV WF9SRF9JTlRFUlZBTCBpcyBpbiB1bml0cyBvZiA0IG1pbGxpc2Vjb25kcyAqLwogCWxpbmstPmF1 eF9yZF9pbnRlcnZhbCA9IHZhbHVlc1sxNF0gKiA0MDAwOwogCisJLyogdXNlIGhpZ2hlc3QgYXZh aWxhYmxlIGNvbmZpZ3VyYXRpb24gYnkgZGVmYXVsdCAqLworCWxpbmstPmxhbmVzID0gbGluay0+ bWF4X2xhbmVzOworCWxpbmstPnJhdGUgPSBsaW5rLT5tYXhfcmF0ZTsKKwogCXJldHVybiAwOwog fQogRVhQT1JUX1NZTUJPTChkcm1fZHBfbGlua19wcm9iZSk7CkBAIC02MTksNyArNjI2LDcgQEAg aW50IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3Qg ZHJtX2RwX2xpbmsgKmxpbmspCiAJfQogCiAJdmFsdWVzWzBdID0gZHJtX2RwX2xpbmtfcmF0ZV90 b19id19jb2RlKGxpbmstPnJhdGUpOwotCXZhbHVlc1sxXSA9IGxpbmstPm51bV9sYW5lczsKKwl2 YWx1ZXNbMV0gPSBsaW5rLT5sYW5lczsKIAogCWlmIChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9M SU5LX0NBUF9FTkhBTkNFRF9GUkFNSU5HKQogCQl2YWx1ZXNbMV0gfD0gRFBfTEFORV9DT1VOVF9F TkhBTkNFRF9GUkFNRV9FTjsKQEAgLTkzNiw3ICs5NDMsNyBAQCBzdGF0aWMgYm9vbCBkcm1fZHBf bGlua190cmFpbl92YWxpZChjb25zdCBzdHJ1Y3QgZHJtX2RwX2xpbmtfdHJhaW4gKnRyYWluKQog c3RhdGljIGludCBkcm1fZHBfbGlua19hcHBseV90cmFpbmluZyhzdHJ1Y3QgZHJtX2RwX2xpbmsg KmxpbmspCiB7CiAJc3RydWN0IGRybV9kcF9saW5rX3RyYWluX3NldCAqcmVxdWVzdCA9ICZsaW5r LT50cmFpbi5yZXF1ZXN0OwotCXVuc2lnbmVkIGludCBsYW5lcyA9IGxpbmstPm51bV9sYW5lcywg KnZzLCAqcGUsICpwYywgaTsKKwl1bnNpZ25lZCBpbnQgbGFuZXMgPSBsaW5rLT5sYW5lcywgKnZz LCAqcGUsICpwYywgaTsKIAlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4ID0gbGluay0+YXV4OwogCXU4 IHZhbHVlc1s0XSwgcGF0dGVybiA9IDA7CiAJaW50IGVycjsKQEAgLTEwMjQsNyArMTAzMSw3IEBA IHN0YXRpYyB2b2lkIGRybV9kcF9saW5rX2dldF9hZGp1c3RtZW50cyhzdHJ1Y3QgZHJtX2RwX2xp bmsgKmxpbmssCiAJc3RydWN0IGRybV9kcF9saW5rX3RyYWluX3NldCAqYWRqdXN0ID0gJmxpbmst PnRyYWluLmFkanVzdDsKIAl1bnNpZ25lZCBpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBsaW5r LT5udW1fbGFuZXM7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBsaW5rLT5sYW5lczsgaSsrKSB7 CiAJCWFkanVzdC0+dm9sdGFnZV9zd2luZ1tpXSA9CiAJCQlkcm1fZHBfZ2V0X2FkanVzdF9yZXF1 ZXN0X3ZvbHRhZ2Uoc3RhdHVzLCBpKSA+PgogCQkJCURQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfU0hJ RlQ7CkBAIC0xMDc0LDcgKzEwODEsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9saW5rX3JlY292ZXJf Y2xvY2soc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQogCQlyZXR1cm4gZXJyOwogCX0KIAotCWlm ICghZHJtX2RwX2Nsb2NrX3JlY292ZXJ5X29rKHN0YXR1cywgbGluay0+bnVtX2xhbmVzKSkKKwlp ZiAoIWRybV9kcF9jbG9ja19yZWNvdmVyeV9vayhzdGF0dXMsIGxpbmstPmxhbmVzKSkKIAkJZHJt X2RwX2xpbmtfZ2V0X2FkanVzdG1lbnRzKGxpbmssIHN0YXR1cyk7CiAJZWxzZQogCQlsaW5rLT50 cmFpbi5jbG9ja19yZWNvdmVyZWQgPSB0cnVlOwpAQCAtMTEyNCwxMyArMTEzMSwxMyBAQCBzdGF0 aWMgaW50IGRybV9kcF9saW5rX2VxdWFsaXplX2NoYW5uZWwoc3RydWN0IGRybV9kcF9saW5rICps aW5rKQogCQlyZXR1cm4gZXJyOwogCX0KIAotCWlmICghZHJtX2RwX2Nsb2NrX3JlY292ZXJ5X29r KHN0YXR1cywgbGluay0+bnVtX2xhbmVzKSkgeworCWlmICghZHJtX2RwX2Nsb2NrX3JlY292ZXJ5 X29rKHN0YXR1cywgbGluay0+bGFuZXMpKSB7CiAJCURSTV9FUlJPUigiY2xvY2sgcmVjb3Zlcnkg bG9zdCB3aGlsZSBlcXVhbGl6aW5nIGNoYW5uZWxcbiIpOwogCQlsaW5rLT50cmFpbi5jbG9ja19y ZWNvdmVyZWQgPSBmYWxzZTsKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKCFkcm1fZHBfY2hhbm5l bF9lcV9vayhzdGF0dXMsIGxpbmstPm51bV9sYW5lcykpCisJaWYgKCFkcm1fZHBfY2hhbm5lbF9l cV9vayhzdGF0dXMsIGxpbmstPmxhbmVzKSkKIAkJZHJtX2RwX2xpbmtfZ2V0X2FkanVzdG1lbnRz KGxpbmssIHN0YXR1cyk7CiAJZWxzZQogCQlsaW5rLT50cmFpbi5jaGFubmVsX2VxdWFsaXplZCA9 IHRydWU7CkBAIC0xMjAwLDcgKzEyMDcsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9saW5rX3RyYWlu X2Z1bGwoc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQogCiByZXRyeToKIAlEUk1fREVCVUdfS01T KCJmdWxsLXRyYWluaW5nIGxpbms6ICV1IGxhbmUlcyBhdCAldSBNSHpcbiIsCi0JCSAgICAgIGxp bmstPm51bV9sYW5lcywgKGxpbmstPm51bV9sYW5lcyA+IDEpID8gInMiIDogIiIsCisJCSAgICAg IGxpbmstPmxhbmVzLCAobGluay0+bGFuZXMgPiAxKSA/ICJzIiA6ICIiLAogCQkgICAgICBsaW5r LT5yYXRlIC8gMTAwKTsKIAogCWVyciA9IGRybV9kcF9saW5rX2NvbmZpZ3VyZShsaW5rLT5hdXgs IGxpbmspOwpAQCAtMTI1Niw3ICsxMjYzLDcgQEAgc3RhdGljIGludCBkcm1fZHBfbGlua190cmFp bl9mYXN0KHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAlpbnQgZXJyOwogCiAJRFJNX0RFQlVH X0tNUygiZmFzdC10cmFpbmluZyBsaW5rOiAldSBsYW5lJXMgYXQgJXUgTUh6XG4iLAotCQkgICAg ICBsaW5rLT5udW1fbGFuZXMsIChsaW5rLT5udW1fbGFuZXMgPiAxKSA/ICJzIiA6ICIiLAorCQkg ICAgICBsaW5rLT5sYW5lcywgKGxpbmstPmxhbmVzID4gMSkgPyAicyIgOiAiIiwKIAkJICAgICAg bGluay0+cmF0ZSAvIDEwMCk7CiAKIAllcnIgPSBkcm1fZHBfbGlua19jb25maWd1cmUobGluay0+ YXV4LCBsaW5rKTsKQEAgLTEyOTIsMTIgKzEyOTksMTIgQEAgc3RhdGljIGludCBkcm1fZHBfbGlu a190cmFpbl9mYXN0KHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAkJZ290byBvdXQ7CiAJfQog Ci0JaWYgKCFkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2soc3RhdHVzLCBsaW5rLT5udW1fbGFuZXMp KSB7CisJaWYgKCFkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2soc3RhdHVzLCBsaW5rLT5sYW5lcykp IHsKIAkJRFJNX0VSUk9SKCJjbG9jayByZWNvdmVyeSBmYWlsZWRcbiIpOwogCQllcnIgPSAtRUlP OwogCX0KIAotCWlmICghZHJtX2RwX2NoYW5uZWxfZXFfb2soc3RhdHVzLCBsaW5rLT5udW1fbGFu ZXMpKSB7CisJaWYgKCFkcm1fZHBfY2hhbm5lbF9lcV9vayhzdGF0dXMsIGxpbmstPmxhbmVzKSkg ewogCQlEUk1fRVJST1IoImNoYW5uZWwgZXF1YWxpemF0aW9uIGZhaWxlZFxuIik7CiAJCWVyciA9 IC1FSU87CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2N0cmwu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9jdHJsLmMKaW5kZXggODEyMDBlOWJlMzgy Li4yOGUzNzI2OTk5ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9j dHJsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2N0cmwuYwpAQCAtNDE2LDcg KzQxNiw3IEBAIHN0YXRpYyB2b2lkIGVkcF9maWxsX2xpbmtfY2ZnKHN0cnVjdCBlZHBfY3RybCAq Y3RybCkKIAl1MzIgcHJhdGU7CiAJdTMyIGxyYXRlOwogCXUzMiBicHA7Ci0JdTggbWF4X2xhbmUg PSBjdHJsLT5kcF9saW5rLm51bV9sYW5lczsKKwl1OCBtYXhfbGFuZSA9IGN0cmwtPmRwX2xpbmsu bWF4X2xhbmVzOwogCXU4IGxhbmU7CiAKIAlwcmF0ZSA9IGN0cmwtPnBpeGVsX3JhdGU7CkBAIC03 MTQsNyArNzE0LDcgQEAgc3RhdGljIGludCBlZHBfbGlua19yYXRlX2Rvd25fc2hpZnQoc3RydWN0 IGVkcF9jdHJsICpjdHJsKQogCiAJcmF0ZSA9IGN0cmwtPmxpbmtfcmF0ZTsKIAlsYW5lID0gY3Ry bC0+bGFuZV9jbnQ7Ci0JbWF4X2xhbmUgPSBjdHJsLT5kcF9saW5rLm51bV9sYW5lczsKKwltYXhf bGFuZSA9IGN0cmwtPmRwX2xpbmsubGFuZXM7CiAKIAlicHAgPSBjdHJsLT5jb2xvcl9kZXB0aCAq IDM7CiAJcHJhdGUgPSBjdHJsLT5waXhlbF9yYXRlOwpAQCAtNzcyLDcgKzc3Miw3IEBAIHN0YXRp YyBpbnQgZWRwX2RvX2xpbmtfdHJhaW4oc3RydWN0IGVkcF9jdHJsICpjdHJsKQogCSAqIFNldCB0 aGUgY3VycmVudCBsaW5rIHJhdGUgYW5kIGxhbmUgY250IHRvIHBhbmVsLiBUaGV5IG1heSBoYXZl IGJlZW4KIAkgKiBhZGp1c3RlZCBhbmQgdGhlIHZhbHVlcyBhcmUgZGlmZmVyZW50IGZyb20gdGhl bSBpbiBEUENEIENBUAogCSAqLwotCWRwX2xpbmsubnVtX2xhbmVzID0gY3RybC0+bGFuZV9jbnQ7 CisJZHBfbGluay5sYW5lcyA9IGN0cmwtPmxhbmVfY250OwogCWRwX2xpbmsucmF0ZSA9IGRybV9k cF9id19jb2RlX3RvX2xpbmtfcmF0ZShjdHJsLT5saW5rX3JhdGUpOwogCWRwX2xpbmsuY2FwYWJp bGl0aWVzID0gY3RybC0+ZHBfbGluay5jYXBhYmlsaXRpZXM7CiAJaWYgKGRybV9kcF9saW5rX2Nv bmZpZ3VyZShjdHJsLT5kcm1fYXV4LCAmZHBfbGluaykgPCAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHBhdXguYwpp bmRleCAwN2IyNjk3MmY0ODcuLjU5ZWM2ZTU3YWU2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3RlZ3JhL2RwYXV4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMKQEAg LTUyOCwxNCArNTI4LDE0IEBAIGludCB0ZWdyYV9kcGF1eF90cmFpbihzdHJ1Y3QgdGVncmFfZHBh dXggKmRwYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmssCiAJaWYgKHRwID09IERQX1RSQUlO SU5HX1BBVFRFUk5fRElTQUJMRSkKIAkJcmV0dXJuIDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbGlu ay0+bnVtX2xhbmVzOyBpKyspCisJZm9yIChpID0gMDsgaSA8IGxpbmstPmxhbmVzOyBpKyspCiAJ CXZhbHVlc1tpXSA9IERQX1RSQUlOX01BWF9QUkVfRU1QSEFTSVNfUkVBQ0hFRCB8CiAJCQkgICAg RFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMCB8CiAJCQkgICAgRFBfVFJBSU5fTUFYX1NXSU5HX1JF QUNIRUQgfAogCQkJICAgIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDsKIAogCWVyciA9 IGRybV9kcF9kcGNkX3dyaXRlKCZkcGF1eC0+YXV4LCBEUF9UUkFJTklOR19MQU5FMF9TRVQsIHZh bHVlcywKLQkJCQlsaW5rLT5udW1fbGFuZXMpOworCQkJCWxpbmstPmxhbmVzKTsKIAlpZiAoZXJy IDwgMCkKIAkJcmV0dXJuIGVycjsKIApAQCAtNTQ3LDEzICs1NDcsMTMgQEAgaW50IHRlZ3JhX2Rw YXV4X3RyYWluKHN0cnVjdCB0ZWdyYV9kcGF1eCAqZHBhdXgsIHN0cnVjdCBkcm1fZHBfbGluayAq bGluaywKIAogCXN3aXRjaCAodHApIHsKIAljYXNlIERQX1RSQUlOSU5HX1BBVFRFUk5fMToKLQkJ aWYgKCFkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2soc3RhdHVzLCBsaW5rLT5udW1fbGFuZXMpKQor CQlpZiAoIWRybV9kcF9jbG9ja19yZWNvdmVyeV9vayhzdGF0dXMsIGxpbmstPmxhbmVzKSkKIAkJ CXJldHVybiAtRUFHQUlOOwogCiAJCWJyZWFrOwogCiAJY2FzZSBEUF9UUkFJTklOR19QQVRURVJO XzI6Ci0JCWlmICghZHJtX2RwX2NoYW5uZWxfZXFfb2soc3RhdHVzLCBsaW5rLT5udW1fbGFuZXMp KQorCQlpZiAoIWRybV9kcF9jaGFubmVsX2VxX29rKHN0YXR1cywgbGluay0+bGFuZXMpKQogCQkJ cmV0dXJuIC1FQUdBSU47CiAKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGVncmEvc29yLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMKaW5kZXggZWU4YWQwZDRh MGYyLi5mYjFmODMwZmI5NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3Iu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMKQEAgLTEzMyw3ICsxMzMsNyBAQCBz dGF0aWMgaW50IHRlZ3JhX3Nvcl9kcF90cmFpbl9mYXN0KHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwK IAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCWZvciAoaSA9IDAsIHZhbHVlID0gMDsg aSA8IGxpbmstPm51bV9sYW5lczsgaSsrKSB7CisJZm9yIChpID0gMCwgdmFsdWUgPSAwOyBpIDwg bGluay0+bGFuZXM7IGkrKykgewogCQl1bnNpZ25lZCBsb25nIGxhbmUgPSBTT1JfRFBfVFBHX0NI QU5ORUxfQ09ESU5HIHwKIAkJCQkgICAgIFNPUl9EUF9UUEdfU0NSQU1CTEVSX05PTkUgfAogCQkJ CSAgICAgU09SX0RQX1RQR19QQVRURVJOX1RSQUlOMTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0 aWMgaW50IHRlZ3JhX3Nvcl9kcF90cmFpbl9mYXN0KHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwKIAl2 YWx1ZSB8PSBTT1JfRFBfU1BBUkVfTUFDUk9fU09SX0NMSzsKIAl0ZWdyYV9zb3Jfd3JpdGVsKHNv ciwgdmFsdWUsIFNPUl9EUF9TUEFSRV8wKTsKIAotCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8 IGxpbmstPm51bV9sYW5lczsgaSsrKSB7CisJZm9yIChpID0gMCwgdmFsdWUgPSAwOyBpIDwgbGlu ay0+bGFuZXM7IGkrKykgewogCQl1bnNpZ25lZCBsb25nIGxhbmUgPSBTT1JfRFBfVFBHX0NIQU5O RUxfQ09ESU5HIHwKIAkJCQkgICAgIFNPUl9EUF9UUEdfU0NSQU1CTEVSX05PTkUgfAogCQkJCSAg ICAgU09SX0RQX1RQR19QQVRURVJOX1RSQUlOMjsKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMg aW50IHRlZ3JhX3Nvcl9kcF90cmFpbl9mYXN0KHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwKIAlpZiAo ZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8IGxp bmstPm51bV9sYW5lczsgaSsrKSB7CisJZm9yIChpID0gMCwgdmFsdWUgPSAwOyBpIDwgbGluay0+ bGFuZXM7IGkrKykgewogCQl1bnNpZ25lZCBsb25nIGxhbmUgPSBTT1JfRFBfVFBHX0NIQU5ORUxf Q09ESU5HIHwKIAkJCQkgICAgIFNPUl9EUF9UUEdfU0NSQU1CTEVSX0dBTElPUyB8CiAJCQkJICAg ICBTT1JfRFBfVFBHX1BBVFRFUk5fTk9ORTsKQEAgLTM5NiwxMSArMzk2LDExIEBAIHN0YXRpYyBp bnQgdGVncmFfc29yX2NhbGNfY29uZmlnKHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwKIAl1MzIgbnVt X3N5bXNfcGVyX2xpbmU7CiAJdW5zaWduZWQgaW50IGk7CiAKLQlpZiAoIWxpbmtfcmF0ZSB8fCAh bGluay0+bnVtX2xhbmVzIHx8ICFwY2xrIHx8ICFjb25maWctPmJpdHNfcGVyX3BpeGVsKQorCWlm ICghbGlua19yYXRlIHx8ICFsaW5rLT5sYW5lcyB8fCAhcGNsayB8fCAhY29uZmlnLT5iaXRzX3Bl cl9waXhlbCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlvdXRwdXQgPSBsaW5rX3JhdGUgKiA4ICog bGluay0+bnVtX2xhbmVzOwogCWlucHV0ID0gcGNsayAqIGNvbmZpZy0+Yml0c19wZXJfcGl4ZWw7 CisJb3V0cHV0ID0gbGlua19yYXRlICogOCAqIGxpbmstPmxhbmVzOwogCiAJaWYgKGlucHV0ID49 IG91dHB1dCkKIAkJcmV0dXJuIC1FUkFOR0U7CkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGlu dCB0ZWdyYV9zb3JfY2FsY19jb25maWcoc3RydWN0IHRlZ3JhX3NvciAqc29yLAogCXdhdGVybWFy ayA9IGRpdl91NjQod2F0ZXJtYXJrICsgcGFyYW1zLmVycm9yLCBmKTsKIAljb25maWctPndhdGVy bWFyayA9IHdhdGVybWFyayArIChjb25maWctPmJpdHNfcGVyX3BpeGVsIC8gOCkgKyAyOwogCW51 bV9zeW1zX3Blcl9saW5lID0gKG1vZGUtPmhkaXNwbGF5ICogY29uZmlnLT5iaXRzX3Blcl9waXhl bCkgKgotCQkJICAgIChsaW5rLT5udW1fbGFuZXMgKiA4KTsKKwkJCSAgICAobGluay0+bGFuZXMg KiA4KTsKIAogCWlmIChjb25maWctPndhdGVybWFyayA+IDMwKSB7CiAJCWNvbmZpZy0+d2F0ZXJt YXJrID0gMzA7CkBAIC00NjMsMTIgKzQ2MywxMiBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9jYWxj X2NvbmZpZyhzdHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJaWYgKGxpbmstPmNhcGFiaWxpdGllcyAm IERQX0xJTktfQ0FQX0VOSEFOQ0VEX0ZSQU1JTkcpCiAJCWNvbmZpZy0+aGJsYW5rX3N5bWJvbHMg LT0gMzsKIAotCWNvbmZpZy0+aGJsYW5rX3N5bWJvbHMgLT0gMTIgLyBsaW5rLT5udW1fbGFuZXM7 CisJY29uZmlnLT5oYmxhbmtfc3ltYm9scyAtPSAxMiAvIGxpbmstPmxhbmVzOwogCiAJLyogY29t cHV0ZSB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgcGVyIHZlcnRpY2FsIGJsYW5raW5nIGludGVydmFs ICovCiAJbnVtID0gKG1vZGUtPmhkaXNwbGF5IC0gMjUpICogbGlua19yYXRlOwogCWNvbmZpZy0+ dmJsYW5rX3N5bWJvbHMgPSBkaXZfdTY0KG51bSwgcGNsayk7Ci0JY29uZmlnLT52Ymxhbmtfc3lt Ym9scyAtPSAzNiAvIGxpbmstPm51bV9sYW5lcyArIDQ7CisJY29uZmlnLT52Ymxhbmtfc3ltYm9s cyAtPSAzNiAvIGxpbmstPmxhbmVzICsgNDsKIAogCWRldl9kYmcoc29yLT5kZXYsICJibGFuayBz eW1ib2xzOiBIOiV1IFY6JXVcbiIsIGNvbmZpZy0+aGJsYW5rX3N5bWJvbHMsCiAJCWNvbmZpZy0+ dmJsYW5rX3N5bWJvbHMpOwpAQCAtMTEwMCwxNyArMTEwMCwxNyBAQCBzdGF0aWMgdm9pZCB0ZWdy YV9zb3JfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJLyog cG93ZXIgRFAgbGFuZXMgKi8KIAl2YWx1ZSA9IHRlZ3JhX3Nvcl9yZWFkbChzb3IsIFNPUl9EUF9Q QURDVExfMCk7CiAKLQlpZiAobGluay5udW1fbGFuZXMgPD0gMikKKwlpZiAobGluay5sYW5lcyA8 PSAyKQogCQl2YWx1ZSAmPSB+KFNPUl9EUF9QQURDVExfUERfVFhEXzMgfCBTT1JfRFBfUEFEQ1RM X1BEX1RYRF8yKTsKIAllbHNlCiAJCXZhbHVlIHw9IFNPUl9EUF9QQURDVExfUERfVFhEXzMgfCBT T1JfRFBfUEFEQ1RMX1BEX1RYRF8yOwogCi0JaWYgKGxpbmsubnVtX2xhbmVzIDw9IDEpCisJaWYg KGxpbmsubGFuZXMgPD0gMSkKIAkJdmFsdWUgJj0gflNPUl9EUF9QQURDVExfUERfVFhEXzE7CiAJ ZWxzZQogCQl2YWx1ZSB8PSBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8xOwogCi0JaWYgKGxpbmsubnVt X2xhbmVzID09IDApCisJaWYgKGxpbmsubGFuZXMgPT0gMCkKIAkJdmFsdWUgJj0gflNPUl9EUF9Q QURDVExfUERfVFhEXzA7CiAJZWxzZQogCQl2YWx1ZSB8PSBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8w OwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2VuY29kZXJfbW9k ZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCiAJdmFsdWUgPSB0ZWdyYV9zb3Jf cmVhZGwoc29yLCBTT1JfRFBfTElOS0NUTF8wKTsKIAl2YWx1ZSAmPSB+U09SX0RQX0xJTktDVExf TEFORV9DT1VOVF9NQVNLOwotCXZhbHVlIHw9IFNPUl9EUF9MSU5LQ1RMX0xBTkVfQ09VTlQobGlu ay5udW1fbGFuZXMpOworCXZhbHVlIHw9IFNPUl9EUF9MSU5LQ1RMX0xBTkVfQ09VTlQobGluay5s YW5lcyk7CiAJdGVncmFfc29yX3dyaXRlbChzb3IsIHZhbHVlLCBTT1JfRFBfTElOS0NUTF8wKTsK IAogCS8qIHN0YXJ0IGxhbmUgc2VxdWVuY2VyICovCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBzdGF0 aWMgdm9pZCB0ZWdyYV9zb3JfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCiAJCX0KIAogCQlyYXRlID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGxpbmsu cmF0ZSk7Ci0JCWxhbmVzID0gbGluay5udW1fbGFuZXM7CisJCWxhbmVzID0gbGluay5sYW5lczsK IAogCQl2YWx1ZSA9IHRlZ3JhX3Nvcl9yZWFkbChzb3IsIFNPUl9DTEtfQ05UUkwpOwogCQl2YWx1 ZSAmPSB+U09SX0NMS19DTlRSTF9EUF9MSU5LX1NQRUVEX01BU0s7CkBAIC0xMjM3LDcgKzEyMzcs NyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zb3JfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIsCiAKIAkJLyogZGlzYWJsZSB0cmFpbmluZyBwYXR0ZXJuIGdlbmVyYXRv ciAqLwogCi0JCWZvciAoaSA9IDA7IGkgPCBsaW5rLm51bV9sYW5lczsgaSsrKSB7CisJCWZvciAo aSA9IDA7IGkgPCBsYW5lczsgaSsrKSB7CiAJCQl1bnNpZ25lZCBsb25nIGxhbmUgPSBTT1JfRFBf VFBHX0NIQU5ORUxfQ09ESU5HIHwKIAkJCQkJICAgICBTT1JfRFBfVFBHX1NDUkFNQkxFUl9HQUxJ T1MgfAogCQkJCQkgICAgIFNPUl9EUF9UUEdfUEFUVEVSTl9OT05FOwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCmlu ZGV4IDA4OWQyNzRmODU3ZC4uNTIxZjlkNzU3NzFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9k cm1fZHBfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCkBAIC04MDcs OCArODA3LDggQEAgc3RydWN0IGRybV9kcF9saW5rX29wcyB7CiBzdHJ1Y3QgZHJtX2RwX2xpbmsg ewogCXVuc2lnbmVkIGNoYXIgcmV2aXNpb247CiAJdW5zaWduZWQgY2hhciBlZHA7Ci0JdW5zaWdu ZWQgaW50IHJhdGU7Ci0JdW5zaWduZWQgaW50IG51bV9sYW5lczsKKwl1bnNpZ25lZCBpbnQgbWF4 X2xhbmVzOworCXVuc2lnbmVkIGludCBtYXhfcmF0ZTsKIAl1bnNpZ25lZCBsb25nIGNhcGFiaWxp dGllczsKIAl1bnNpZ25lZCBsb25nIGF1eF9yZF9pbnRlcnZhbDsKIApAQCAtODE2LDYgKzgxNiw4 IEBAIHN0cnVjdCBkcm1fZHBfbGluayB7CiAJc3RydWN0IGRybV9kcF9hdXggKmF1eDsKIAogCXN0 cnVjdCBkcm1fZHBfbGlua190cmFpbiB0cmFpbjsKKwl1bnNpZ25lZCBpbnQgbGFuZXM7CisJdW5z aWduZWQgaW50IHJhdGU7CiB9OwogCiBpbnQgZHJtX2RwX2xpbmtfcHJvYmUoc3RydWN0IGRybV9k cF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKTsKLS0gCjIuNC41CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=