From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 02/12] drm/dp: link: Track capabilities alongside settings Date: Mon, 14 Dec 2015 13:55:54 +0100 Message-ID: <1450097764-30063-3-git-send-email-thierry.reding@gmail.com> References: <1450097764-30063-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-f44.google.com (mail-pa0-f44.google.com [209.85.220.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26D016E651 for ; Mon, 14 Dec 2015 04:56:15 -0800 (PST) Received: by pabur14 with SMTP id ur14so103943250pab.0 for ; Mon, 14 Dec 2015 04:56:14 -0800 (PST) In-Reply-To: <1450097764-30063-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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClN0b3JlIGNhcGFiaWxp dGllcyBpbiBtYXhfKiBmaWVsZHMgYW5kIGFkZCBzZXBhcmF0ZSBmaWVsZHMgZm9yIHRoZQpjdXJy ZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MuIFRoaXMgaXMgdXNlZnVsIHRvIGFsbG93IHRoZSBjdXJy ZW50IGxpbmsKY29uZmlndXJhdGlvbiB0byBiZSBzdG9yZWQgd2l0aG91dCBvdmVyd3JpdGluZyB0 aGUgY2FwYWJpbGl0aWVzLgoKQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KU2ln bmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jICAgIHwgMTYgKysrKysrKysrKystLS0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2N0cmwuYyB8ICA4ICsrKystLS0tCiBkcml2ZXJzL2dw dS9kcm0vdGVncmEvZHBhdXguYyAgICAgIHwgIDggKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS90 ZWdyYS9zb3IuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgICB8ICA3ICsrKysrLS0KIDUgZmlsZXMgY2hh bmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVs cGVyLmMKaW5kZXggODQxYjQ5NjUyY2M1Li5jMDA4OTZhYjhiMDQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9o ZWxwZXIuYwpAQCAtMjkwLDkgKzI5MCwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfbGlua19yZXNl dChzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspCiAJCXJldHVybjsKIAogCWxpbmstPnJldmlzaW9u ID0gMDsKLQlsaW5rLT5yYXRlID0gMDsKLQlsaW5rLT5udW1fbGFuZXMgPSAwOworCWxpbmstPm1h eF9yYXRlID0gMDsKKwlsaW5rLT5tYXhfbGFuZXMgPSAwOwogCWxpbmstPmNhcGFiaWxpdGllcyA9 IDA7CisKKwlsaW5rLT5yYXRlID0gMDsKKwlsaW5rLT5sYW5lcyA9IDA7CiB9CiAKIC8qKgpAQCAt MzE4LDEyICszMjEsMTUgQEAgaW50IGRybV9kcF9saW5rX3Byb2JlKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAkJcmV0dXJuIGVycjsKIAogCWxpbmst PnJldmlzaW9uID0gdmFsdWVzWzBdOwotCWxpbmstPnJhdGUgPSBkcm1fZHBfYndfY29kZV90b19s aW5rX3JhdGUodmFsdWVzWzFdKTsKLQlsaW5rLT5udW1fbGFuZXMgPSB2YWx1ZXNbMl0gJiBEUF9N QVhfTEFORV9DT1VOVF9NQVNLOworCWxpbmstPm1heF9yYXRlID0gZHJtX2RwX2J3X2NvZGVfdG9f bGlua19yYXRlKHZhbHVlc1sxXSk7CisJbGluay0+bWF4X2xhbmVzID0gdmFsdWVzWzJdICYgRFBf TUFYX0xBTkVfQ09VTlRfTUFTSzsKIAogCWlmICh2YWx1ZXNbMl0gJiBEUF9FTkhBTkNFRF9GUkFN RV9DQVApCiAJCWxpbmstPmNhcGFiaWxpdGllcyB8PSBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFN SU5HOwogCisJbGluay0+cmF0ZSA9IGxpbmstPm1heF9yYXRlOworCWxpbmstPmxhbmVzID0gbGlu ay0+bWF4X2xhbmVzOworCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9kcF9saW5r X3Byb2JlKTsKQEAgLTQxMCw3ICs0MTYsNyBAQCBpbnQgZHJtX2RwX2xpbmtfY29uZmlndXJlKHN0 cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAlpbnQgZXJy OwogCiAJdmFsdWVzWzBdID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGxpbmstPnJhdGUp OwotCXZhbHVlc1sxXSA9IGxpbmstPm51bV9sYW5lczsKKwl2YWx1ZXNbMV0gPSBsaW5rLT5sYW5l czsKIAogCWlmIChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFN SU5HKQogCQl2YWx1ZXNbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9GUkFNRV9FTjsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9jdHJsLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2VkcC9lZHBfY3RybC5jCmluZGV4IDgxMjAwZTliZTM4Mi4uYzg3YTAzNTYxMjQ2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2VkcC9lZHBfY3RybC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9jdHJsLmMKQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0 aWMgdm9pZCBlZHBfZmlsbF9saW5rX2NmZyhzdHJ1Y3QgZWRwX2N0cmwgKmN0cmwpCiAJdTMyIHBy YXRlOwogCXUzMiBscmF0ZTsKIAl1MzIgYnBwOwotCXU4IG1heF9sYW5lID0gY3RybC0+ZHBfbGlu ay5udW1fbGFuZXM7CisJdTggbWF4X2xhbmUgPSBjdHJsLT5kcF9saW5rLm1heF9sYW5lczsKIAl1 OCBsYW5lOwogCiAJcHJhdGUgPSBjdHJsLT5waXhlbF9yYXRlOwpAQCAtNDI2LDcgKzQyNiw3IEBA IHN0YXRpYyB2b2lkIGVkcF9maWxsX2xpbmtfY2ZnKHN0cnVjdCBlZHBfY3RybCAqY3RybCkKIAkg KiBCeSBkZWZhdWx0LCB1c2UgdGhlIG1heGltdW0gbGluayByYXRlIGFuZCBtaW5pbXVtIGxhbmUg Y291bnQsCiAJICogc28gdGhhdCB3ZSBjYW4gZG8gcmF0ZSBkb3duIHNoaWZ0IGR1cmluZyBsaW5r IHRyYWluaW5nLgogCSAqLwotCWN0cmwtPmxpbmtfcmF0ZSA9IGRybV9kcF9saW5rX3JhdGVfdG9f YndfY29kZShjdHJsLT5kcF9saW5rLnJhdGUpOworCWN0cmwtPmxpbmtfcmF0ZSA9IGRybV9kcF9s aW5rX3JhdGVfdG9fYndfY29kZShjdHJsLT5kcF9saW5rLm1heF9yYXRlKTsKIAogCXByYXRlICo9 IGJwcDsKIAlwcmF0ZSAvPSA4OyAvKiBpbiBrQnl0ZSAqLwpAQCAtNzE0LDcgKzcxNCw3IEBAIHN0 YXRpYyBpbnQgZWRwX2xpbmtfcmF0ZV9kb3duX3NoaWZ0KHN0cnVjdCBlZHBfY3RybCAqY3RybCkK IAogCXJhdGUgPSBjdHJsLT5saW5rX3JhdGU7CiAJbGFuZSA9IGN0cmwtPmxhbmVfY250OwotCW1h eF9sYW5lID0gY3RybC0+ZHBfbGluay5udW1fbGFuZXM7CisJbWF4X2xhbmUgPSBjdHJsLT5kcF9s aW5rLm1heF9sYW5lczsKIAogCWJwcCA9IGN0cmwtPmNvbG9yX2RlcHRoICogMzsKIAlwcmF0ZSA9 IGN0cmwtPnBpeGVsX3JhdGU7CkBAIC03NzIsNyArNzcyLDcgQEAgc3RhdGljIGludCBlZHBfZG9f bGlua190cmFpbihzdHJ1Y3QgZWRwX2N0cmwgKmN0cmwpCiAJICogU2V0IHRoZSBjdXJyZW50IGxp bmsgcmF0ZSBhbmQgbGFuZSBjbnQgdG8gcGFuZWwuIFRoZXkgbWF5IGhhdmUgYmVlbgogCSAqIGFk anVzdGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBkaWZmZXJlbnQgZnJvbSB0aGVtIGluIERQQ0QgQ0FQ CiAJICovCi0JZHBfbGluay5udW1fbGFuZXMgPSBjdHJsLT5sYW5lX2NudDsKKwlkcF9saW5rLmxh bmVzID0gY3RybC0+bGFuZV9jbnQ7CiAJZHBfbGluay5yYXRlID0gZHJtX2RwX2J3X2NvZGVfdG9f bGlua19yYXRlKGN0cmwtPmxpbmtfcmF0ZSk7CiAJZHBfbGluay5jYXBhYmlsaXRpZXMgPSBjdHJs LT5kcF9saW5rLmNhcGFiaWxpdGllczsKIAlpZiAoZHJtX2RwX2xpbmtfY29uZmlndXJlKGN0cmwt PmRybV9hdXgsICZkcF9saW5rKSA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvZHBhdXguYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcGF1eC5jCmluZGV4IDZhZWNiNjY0 NzMxMy4uMmM1NDgwMjY1Y2NkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHBh dXguYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHBhdXguYwpAQCAtNTc4LDE0ICs1Nzgs MTQgQEAgaW50IHRlZ3JhX2RwYXV4X3RyYWluKHN0cnVjdCB0ZWdyYV9kcGF1eCAqZHBhdXgsIHN0 cnVjdCBkcm1fZHBfbGluayAqbGluaywKIAlpZiAodHAgPT0gRFBfVFJBSU5JTkdfUEFUVEVSTl9E SVNBQkxFKQogCQlyZXR1cm4gMDsKIAotCWZvciAoaSA9IDA7IGkgPCBsaW5rLT5udW1fbGFuZXM7 IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbGluay0+bGFuZXM7IGkrKykKIAkJdmFsdWVzW2ldID0g RFBfVFJBSU5fTUFYX1BSRV9FTVBIQVNJU19SRUFDSEVEIHwKIAkJCSAgICBEUF9UUkFJTl9QUkVf RU1QSF9MRVZFTF8wIHwKIAkJCSAgICBEUF9UUkFJTl9NQVhfU1dJTkdfUkVBQ0hFRCB8CiAJCQkg ICAgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wOwogCiAJZXJyID0gZHJtX2RwX2RwY2Rf d3JpdGUoJmRwYXV4LT5hdXgsIERQX1RSQUlOSU5HX0xBTkUwX1NFVCwgdmFsdWVzLAotCQkJCWxp bmstPm51bV9sYW5lcyk7CisJCQkJbGluay0+bGFuZXMpOwogCWlmIChlcnIgPCAwKQogCQlyZXR1 cm4gZXJyOwogCkBAIC01OTcsMTMgKzU5NywxMyBAQCBpbnQgdGVncmFfZHBhdXhfdHJhaW4oc3Ry dWN0IHRlZ3JhX2RwYXV4ICpkcGF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rLAogCiAJc3dp dGNoICh0cCkgewogCWNhc2UgRFBfVFJBSU5JTkdfUEFUVEVSTl8xOgotCQlpZiAoIWRybV9kcF9j bG9ja19yZWNvdmVyeV9vayhzdGF0dXMsIGxpbmstPm51bV9sYW5lcykpCisJCWlmICghZHJtX2Rw X2Nsb2NrX3JlY292ZXJ5X29rKHN0YXR1cywgbGluay0+bGFuZXMpKQogCQkJcmV0dXJuIC1FQUdB SU47CiAKIAkJYnJlYWs7CiAKIAljYXNlIERQX1RSQUlOSU5HX1BBVFRFUk5fMjoKLQkJaWYgKCFk cm1fZHBfY2hhbm5lbF9lcV9vayhzdGF0dXMsIGxpbmstPm51bV9sYW5lcykpCisJCWlmICghZHJt X2RwX2NoYW5uZWxfZXFfb2soc3RhdHVzLCBsaW5rLT5sYW5lcykpCiAJCQlyZXR1cm4gLUVBR0FJ TjsKIAogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYwppbmRleCAzZWZmN2NmNzVkMjUuLjdiZjQ0NGJk MTU4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS90ZWdyYS9zb3IuYwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgdGVn cmFfc29yX2RwX3RyYWluX2Zhc3Qoc3RydWN0IHRlZ3JhX3NvciAqc29yLAogCWlmIChlcnIgPCAw KQogCQlyZXR1cm4gZXJyOwogCi0JZm9yIChpID0gMCwgdmFsdWUgPSAwOyBpIDwgbGluay0+bnVt X2xhbmVzOyBpKyspIHsKKwlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5sYW5lczsg aSsrKSB7CiAJCXVuc2lnbmVkIGxvbmcgbGFuZSA9IFNPUl9EUF9UUEdfQ0hBTk5FTF9DT0RJTkcg fAogCQkJCSAgICAgU09SX0RQX1RQR19TQ1JBTUJMRVJfTk9ORSB8CiAJCQkJICAgICBTT1JfRFBf VFBHX1BBVFRFUk5fVFJBSU4xOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBpbnQgdGVncmFf c29yX2RwX3RyYWluX2Zhc3Qoc3RydWN0IHRlZ3JhX3NvciAqc29yLAogCXZhbHVlIHw9IFNPUl9E UF9TUEFSRV9NQUNST19TT1JfQ0xLOwogCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09S X0RQX1NQQVJFMCk7CiAKLQlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5udW1fbGFu ZXM7IGkrKykgeworCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8IGxpbmstPmxhbmVzOyBpKysp IHsKIAkJdW5zaWduZWQgbG9uZyBsYW5lID0gU09SX0RQX1RQR19DSEFOTkVMX0NPRElORyB8CiAJ CQkJICAgICBTT1JfRFBfVFBHX1NDUkFNQkxFUl9OT05FIHwKIAkJCQkgICAgIFNPUl9EUF9UUEdf UEFUVEVSTl9UUkFJTjI7CkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIGludCB0ZWdyYV9zb3Jf ZHBfdHJhaW5fZmFzdChzdHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJaWYgKGVyciA8IDApCiAJCXJl dHVybiBlcnI7CiAKLQlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5udW1fbGFuZXM7 IGkrKykgeworCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8IGxpbmstPmxhbmVzOyBpKyspIHsK IAkJdW5zaWduZWQgbG9uZyBsYW5lID0gU09SX0RQX1RQR19DSEFOTkVMX0NPRElORyB8CiAJCQkJ ICAgICBTT1JfRFBfVFBHX1NDUkFNQkxFUl9HQUxJT1MgfAogCQkJCSAgICAgU09SX0RQX1RQR19Q QVRURVJOX05PTkU7CkBAIC01ODEsMTEgKzU4MSwxMSBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9j YWxjX2NvbmZpZyhzdHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJdTMyIG51bV9zeW1zX3Blcl9saW5l OwogCXVuc2lnbmVkIGludCBpOwogCi0JaWYgKCFsaW5rX3JhdGUgfHwgIWxpbmstPm51bV9sYW5l cyB8fCAhcGNsayB8fCAhY29uZmlnLT5iaXRzX3Blcl9waXhlbCkKKwlpZiAoIWxpbmtfcmF0ZSB8 fCAhbGluay0+bGFuZXMgfHwgIXBjbGsgfHwgIWNvbmZpZy0+Yml0c19wZXJfcGl4ZWwpCiAJCXJl dHVybiAtRUlOVkFMOwogCi0Jb3V0cHV0ID0gbGlua19yYXRlICogOCAqIGxpbmstPm51bV9sYW5l czsKIAlpbnB1dCA9IHBjbGsgKiBjb25maWctPmJpdHNfcGVyX3BpeGVsOworCW91dHB1dCA9IGxp bmtfcmF0ZSAqIDggKiBsaW5rLT5sYW5lczsKIAogCWlmIChpbnB1dCA+PSBvdXRwdXQpCiAJCXJl dHVybiAtRVJBTkdFOwpAQCAtNjI4LDcgKzYyOCw3IEBAIHN0YXRpYyBpbnQgdGVncmFfc29yX2Nh bGNfY29uZmlnKHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwKIAl3YXRlcm1hcmsgPSBkaXZfdTY0KHdh dGVybWFyayArIHBhcmFtcy5lcnJvciwgZik7CiAJY29uZmlnLT53YXRlcm1hcmsgPSB3YXRlcm1h cmsgKyAoY29uZmlnLT5iaXRzX3Blcl9waXhlbCAvIDgpICsgMjsKIAludW1fc3ltc19wZXJfbGlu ZSA9IChtb2RlLT5oZGlzcGxheSAqIGNvbmZpZy0+Yml0c19wZXJfcGl4ZWwpICoKLQkJCSAgICAo bGluay0+bnVtX2xhbmVzICogOCk7CisJCQkgICAgKGxpbmstPmxhbmVzICogOCk7CiAKIAlpZiAo Y29uZmlnLT53YXRlcm1hcmsgPiAzMCkgewogCQljb25maWctPndhdGVybWFyayA9IDMwOwpAQCAt NjQ4LDEyICs2NDgsMTIgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfY2FsY19jb25maWcoc3RydWN0 IHRlZ3JhX3NvciAqc29yLAogCWlmIChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9MSU5LX0NBUF9F TkhBTkNFRF9GUkFNSU5HKQogCQljb25maWctPmhibGFua19zeW1ib2xzIC09IDM7CiAKLQljb25m aWctPmhibGFua19zeW1ib2xzIC09IDEyIC8gbGluay0+bnVtX2xhbmVzOworCWNvbmZpZy0+aGJs YW5rX3N5bWJvbHMgLT0gMTIgLyBsaW5rLT5sYW5lczsKIAogCS8qIGNvbXB1dGUgdGhlIG51bWJl ciBvZiBzeW1ib2xzIHBlciB2ZXJ0aWNhbCBibGFua2luZyBpbnRlcnZhbCAqLwogCW51bSA9ICht b2RlLT5oZGlzcGxheSAtIDI1KSAqIGxpbmtfcmF0ZTsKIAljb25maWctPnZibGFua19zeW1ib2xz ID0gZGl2X3U2NChudW0sIHBjbGspOwotCWNvbmZpZy0+dmJsYW5rX3N5bWJvbHMgLT0gMzYgLyBs aW5rLT5udW1fbGFuZXMgKyA0OworCWNvbmZpZy0+dmJsYW5rX3N5bWJvbHMgLT0gMzYgLyBsaW5r LT5sYW5lcyArIDQ7CiAKIAlkZXZfZGJnKHNvci0+ZGV2LCAiYmxhbmsgc3ltYm9sczogSDoldSBW OiV1XG4iLCBjb25maWctPmhibGFua19zeW1ib2xzLAogCQljb25maWctPnZibGFua19zeW1ib2xz KTsKQEAgLTEzNDAsMTcgKzEzNDAsMTcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2VkcF9lbmFi bGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCS8qIHBvd2VyIERQIGxhbmVzICovCiAJ dmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29yLCBTT1JfRFBfUEFEQ1RMMCk7CiAKLQlpZiAobGlu ay5udW1fbGFuZXMgPD0gMikKKwlpZiAobGluay5sYW5lcyA8PSAyKQogCQl2YWx1ZSAmPSB+KFNP Ul9EUF9QQURDVExfUERfVFhEXzMgfCBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8yKTsKIAllbHNlCiAJ CXZhbHVlIHw9IFNPUl9EUF9QQURDVExfUERfVFhEXzMgfCBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8y OwogCi0JaWYgKGxpbmsubnVtX2xhbmVzIDw9IDEpCisJaWYgKGxpbmsubGFuZXMgPD0gMSkKIAkJ dmFsdWUgJj0gflNPUl9EUF9QQURDVExfUERfVFhEXzE7CiAJZWxzZQogCQl2YWx1ZSB8PSBTT1Jf RFBfUEFEQ1RMX1BEX1RYRF8xOwogCi0JaWYgKGxpbmsubnVtX2xhbmVzID09IDApCisJaWYgKGxp bmsubGFuZXMgPT0gMCkKIAkJdmFsdWUgJj0gflNPUl9EUF9QQURDVExfUERfVFhEXzA7CiAJZWxz ZQogCQl2YWx1ZSB8PSBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8wOwpAQCAtMTM1OSw3ICsxMzU5LDcg QEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2VkcF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQogCiAJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29yLCBTT1JfRFBfTElOS0NUTDAp OwogCXZhbHVlICY9IH5TT1JfRFBfTElOS0NUTF9MQU5FX0NPVU5UX01BU0s7Ci0JdmFsdWUgfD0g U09SX0RQX0xJTktDVExfTEFORV9DT1VOVChsaW5rLm51bV9sYW5lcyk7CisJdmFsdWUgfD0gU09S X0RQX0xJTktDVExfTEFORV9DT1VOVChsaW5rLmxhbmVzKTsKIAl0ZWdyYV9zb3Jfd3JpdGVsKHNv ciwgdmFsdWUsIFNPUl9EUF9MSU5LQ1RMMCk7CiAKIAkvKiBzdGFydCBsYW5lIHNlcXVlbmNlciAq LwpAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2VkcF9lbmFibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQkJCWVycik7CiAKIAkJcmF0ZSA9IGRybV9k cF9saW5rX3JhdGVfdG9fYndfY29kZShsaW5rLnJhdGUpOwotCQlsYW5lcyA9IGxpbmsubnVtX2xh bmVzOworCQlsYW5lcyA9IGxpbmsubGFuZXM7CiAKIAkJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwo c29yLCBTT1JfQ0xLX0NOVFJMKTsKIAkJdmFsdWUgJj0gflNPUl9DTEtfQ05UUkxfRFBfTElOS19T UEVFRF9NQVNLOwpAQCAtMTQ3MCw4ICsxNDcwLDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2Vk cF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQl0ZWdyYV9zb3Jfd3JpdGVs KHNvciwgdmFsdWUsIFNPUl9EUF9MSU5LQ1RMMCk7CiAKIAkJLyogZGlzYWJsZSB0cmFpbmluZyBw YXR0ZXJuIGdlbmVyYXRvciAqLwotCi0JCWZvciAoaSA9IDA7IGkgPCBsaW5rLm51bV9sYW5lczsg aSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCBsaW5rLmxhbmVzOyBpKyspIHsKIAkJCXVuc2lnbmVk IGxvbmcgbGFuZSA9IFNPUl9EUF9UUEdfQ0hBTk5FTF9DT0RJTkcgfAogCQkJCQkgICAgIFNPUl9E UF9UUEdfU0NSQU1CTEVSX0dBTElPUyB8CiAJCQkJCSAgICAgU09SX0RQX1RQR19QQVRURVJOX05P TkU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9pbmNsdWRlL2Ry bS9kcm1fZHBfaGVscGVyLmgKaW5kZXggYmI5ZDBkZWNhMDdjLi4xMjRmZWEzZmZkNTcgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1f ZHBfaGVscGVyLmgKQEAgLTc1Nyw5ICs3NTcsMTIgQEAgaW50IGRybV9kcF9kcGNkX3JlYWRfbGlu a19zdGF0dXMoc3RydWN0IGRybV9kcF9hdXggKmF1eCwKIAogc3RydWN0IGRybV9kcF9saW5rIHsK IAl1bnNpZ25lZCBjaGFyIHJldmlzaW9uOwotCXVuc2lnbmVkIGludCByYXRlOwotCXVuc2lnbmVk IGludCBudW1fbGFuZXM7CisJdW5zaWduZWQgaW50IG1heF9yYXRlOworCXVuc2lnbmVkIGludCBt YXhfbGFuZXM7CiAJdW5zaWduZWQgbG9uZyBjYXBhYmlsaXRpZXM7CisKKwl1bnNpZ25lZCBpbnQg cmF0ZTsKKwl1bnNpZ25lZCBpbnQgbGFuZXM7CiB9OwogCiBpbnQgZHJtX2RwX2xpbmtfcHJvYmUo c3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKTsKLS0gCjIu NS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=