From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v18 5/6] drm/i915/dp: Enable Upfront link training on DDI platforms Date: Tue, 20 Sep 2016 15:04:16 -0700 Message-ID: <1474409056-6412-1-git-send-email-manasi.d.navare@intel.com> References: <1473984244-4349-6-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A98C6E1F9 for ; Tue, 20 Sep 2016 22:04:07 +0000 (UTC) In-Reply-To: <1473984244-4349-6-git-send-email-manasi.d.navare@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 VG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0aGUgZGlzcGxheSBkcml2 ZXIgbmVlZHMgdG8Ka25vdyB0aGUgbnVtYmVyIG9mIGxhbmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBw YW5lbCBhcyB3ZWxsIGFzIG51bWJlcgpvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkg dGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKdHlwZS1DIGNhYmxlIG1heSBsaW1pdCB0 aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKbW9yZSBsYW5lcy4gVG8gYWRk cmVzcyB0aGVzZSBzY2VuYXJpb3Mgd2UgbmVlZCB0byB0cmFpbiB0aGUgbGluayBiZWZvcmUKbW9k ZXNldC4gVGhpcyB1cGZyb250IGxpbmsgdHJhaW5pbmcgY2FjaGVzIHRoZSB2YWx1ZXMgb2YgbWF4 IGxpbmsgcmF0ZQphbmQgbWF4IGxhbmUgY291bnQgdGhhdCBnZXQgdXNlZCBsYXRlciBkdXJpbmcg bW9kZXNldC4gVXBmcm9udCBsaW5rCnRyYWluaW5nIGRvZXMgbm90IGNoYW5nZSBhbnkgSFcgc3Rh dGUsIHRoZSBsaW5rIGlzIGRpc2FibGVkIGFuZCBQTEwKdmFsdWVzIGFyZSByZXNldCB0byBwcmV2 aW91cyB2YWx1ZXMgYWZ0ZXIgdXBmcm9udCBsaW5rIHRhcmluaW5nIHNvCnRoYXQgc3Vic2VxdWVu dCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgoKVGhpcyBwYXRjaCBpcyBi YXNlZCBvbiBwcmlvciB3b3JrIGRvbmUgYnkKUixEdXJnYWRvc3MgPGR1cmdhZG9zcy5yQGludGVs LmNvbT4KCkNoYW5nZXMgc2luY2UgdjE3OgoqIFJlYmFzZWQgb24gdGhlIGxhdGVzdCBuaWdodGx5 CkNoYW5nZXMgc2luY2UgdjE2OgoqIFVzZSBIQVNfRERJIG1hY3JvIGZvciBlbmFibGluZyB0aGlz IGZlYXR1cmUgKFJvZHJpZ28gVml2aSkKKiBGaXggc29tZSB1bm5lY2Vzc2FyeSByZW1vdmFscy9j aGFuZ2VzIGR1ZSB0byByZWJhc2UgKFJvZHJpZ28gVml2aSkKCkNoYW5nZXMgc2luY2UgdjE1Ogoq IFNwbGl0IHRoaXMgcGF0Y2ggaW50byB0d28gcGF0Y2hlcyAtIG9uZSB3aXRoIGZ1bmN0aW9uYWwK Y2hhbmdlcyB0byBlbmFibGUgdXBmcm9udCBhbmQgb3RoZXIgd2l0aCBtb3ZpbmcgdGhlIGV4aXN0 aW5nCmZ1bmN0aW9ucyBhcm91bmQgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGZvciB1cGZyb250 IChKYW5pIE5pa3VsYSkKKiBDbGVhbmVkIHVwIHRoZSBjb21taXQgbWVzc2FnZQoKU2lnbmVkLW9m Zi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog SmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5h c2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jICAgICAgICAgICAgICB8ICAyMSArKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8IDE5MCArKysrKysrKysrKysrKysrKysr KysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIHwg ICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAx NCArLQogNCBmaWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCmluZGV4IDA5MzAzOGMuLjhlNTI1MDcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCkBAIC0xNjc2LDcgKzE2NzYsOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlwbGwt PmNvbmZpZy5jcnRjX21hc2sgPSAwOwogCiAJLyogSWYgTGluayBUcmFpbmluZyBmYWlscywgc2Vu ZCBhIHVldmVudCB0byBnZW5lcmF0ZSBhIGhvdHBsdWcgKi8KLQlpZiAoIWludGVsX2RkaV9saW5r X3RyYWluKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsIGxpbmtfbXN0KSkKKwlpZiAo IWludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsIGxp bmtfbXN0LAorCQkJCSAgZmFsc2UpKQogCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGVu Y29kZXItPmJhc2UuZGV2KTsKIAlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwogfQpAQCAt MjQ2NCw3ICsyNDY1LDcgQEAgaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwgaW50IGNsb2NrKQogCiBib29sCiBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKLQkJICAgICB1aW50OF90 IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KQorCQkgICAgIHVpbnQ4X3QgbWF4X2xhbmVf Y291bnQsIGJvb2wgbGlua19tc3QsIGJvb2wgaXNfdXBmcm9udCkKIHsKIAlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwogCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwpAQCAtMjUx Myw2ICsyNTE0LDcgQEAgaW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgaW50IG1heF9saW5rX3JhdGUsCiAJCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYs IHBsbCk7CiAJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwogCQl9CisKIAkJaWYgKHJl dCkgewogCQkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsg cmF0ZTogJWQgbGFuZTogJWRcbiIsCiAJCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50KTsK QEAgLTI1MjIsNiArMjUyNCwyMSBAQCBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKIAogCWludGVsX2RwX3N0b3BfbGlua190 cmFpbihpbnRlbF9kcCk7CiAKKwlpZiAoaXNfdXBmcm9udCkgeworCQlEUk1fREVCVUdfS01TKCJV cGZyb250IGxpbmsgdHJhaW4gJXM6IGxpbmtfY2xvY2s6JWQgbGFuZXM6JWRcbiIsCisJCQkgICAg ICByZXQgPyAiUGFzc2VkIiA6ICJGYWlsZWQiLAorCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2Nv dW50KTsKKwkJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4dCByZXRyeS9j bGVhbiB1cCAqLworCQlpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKGVuY29kZXIsIE5VTEwsIE5VTEwp OworCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7CisJCXBsbC0+Y29uZmlnID0g dG1wX3BsbF9jb25maWc7CisJCWlmIChyZXQpIHsKKwkJCS8qIFNhdmUgdGhlIHVwZnJvbnQgdmFs dWVzICovCisJCQlpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQgPSBsYW5lX2NvdW50OworCQkJ aW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCA9IGxpbmtfcmF0ZTsKKwkJfQorCX0KKwog CWlmICghbGFuZV9jb3VudCkKIAkJRFJNX0VSUk9SKCJMaW5rIFRyYWluaW5nIEZhaWxlZFxuIik7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDhkOWE4YWIuLmEwNThkNWQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwpAQCAtMTUzLDEyICsxNTMsMjEgQEAgaW50ZWxfZHBfbWF4X2xpbmtf Yncoc3RydWN0IGludGVsX2RwICAqaW50ZWxfZHApCiBzdGF0aWMgdTggaW50ZWxfZHBfbWF4X2xh bmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKLQl1 OCBzb3VyY2VfbWF4LCBzaW5rX21heDsKKwl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsK IAogCXNvdXJjZV9tYXggPSBpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVzOwogCXNpbmtfbWF4ID0g ZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwLT5kcGNkKTsKIAotCXJldHVybiBtaW4oc291 cmNlX21heCwgc2lua19tYXgpOworCXRlbXAgPSBtaW4oc291cmNlX21heCwgc2lua19tYXgpOwor CisJLyoKKwkgKiBMaW1pdCBtYXggbGFuZXMgdy5yLnQgdG8gdGhlIG1heCB2YWx1ZSBmb3VuZAor CSAqIHVzaW5nIFVwZnJvbnQgbGluayB0cmFpbmluZyBhbHNvLgorCSAqLworCWlmIChpbnRlbF9k cC0+bWF4X2xhbmVzX3VwZnJvbnQpCisJCXJldHVybiBtaW4odGVtcCwgaW50ZWxfZHAtPm1heF9s YW5lc191cGZyb250KTsKKwllbHNlCisJCXJldHVybiB0ZW1wOwogfQogCiAvKgpAQCAtMTkwLDYg KzE5OSw0MiBAQCBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKGludCBtYXhfbGlua19jbG9jaywgaW50 IG1heF9sYW5lcykKIAlyZXR1cm4gKG1heF9saW5rX2Nsb2NrICogbWF4X2xhbmVzICogOCkgLyAx MDsKIH0KIAorc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKKwkJCQkJIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAq Y3R4LAorCQkJCQkgYm9vbCBlbmFibGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OworCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKKworCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwor CWlmICghc3RhdGUpCisJCXJldHVybiAtRU5PTUVNOworCisJc3RhdGUtPmFjcXVpcmVfY3R4ID0g Y3R4OworCisJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgeworCQlyZXQgPSBQVFJfRVJSKGNydGNf c3RhdGUpOworCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCQlyZXR1cm4gcmV0Owor CX0KKworCURSTV9ERUJVR19LTVMoIiVzYWJsaW5nIGNydGMgJWMgJXMgdXBmcm9udCBsaW5rIHRy YWluXG4iLAorCQkJZW5hYmxlID8gIkVuIiA6ICJEaXMiLAorCQkJcGlwZV9uYW1lKHBpcGUpLAor CQkJZW5hYmxlID8gImFmdGVyIiA6ICJiZWZvcmUiKTsKKworCWNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlID0gZW5hYmxlOworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKKwlpZiAocmV0 KQorCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIHJldDsKK30KKwog c3RhdGljIGludAogaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKIHsKQEAgLTI4MSw2ICszMjYsMTcgQEAgc3RhdGljIGludCBpbnRlbF9k cF9jb21tb25fcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlpbnQgc291cmNlX2xl biwgc2lua19sZW47CiAKIAlzaW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMoaW50ZWxfZHAs ICZzaW5rX3JhdGVzKTsKKworCS8qIENhcCBzaW5rIHJhdGVzIHcuci50IHVwZnJvbnQgdmFsdWVz ICovCisJaWYgKGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpIHsKKwkJaW50IGxlbiA9 IHNpbmtfbGVuIC0gMTsKKworCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3JhdGVzW2xlbl0gPgor CQkgICAgICAgaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKKwkJCWxlbi0tOworCQlz aW5rX2xlbiA9IGxlbiArIDE7CisJfQorCiAJc291cmNlX2xlbiA9IGludGVsX2RwX3NvdXJjZV9y YXRlcyhpbnRlbF9kcCwgJnNvdXJjZV9yYXRlcyk7CiAKIAlyZXR1cm4gaW50ZXJzZWN0X3JhdGVz KHNvdXJjZV9yYXRlcywgc291cmNlX2xlbiwKQEAgLTI4OCw2ICszNDQsOTIgQEAgc3RhdGljIGlu dCBpbnRlbF9kcF9jb21tb25fcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCSAg ICAgICBjb21tb25fcmF0ZXMpOwogfQogCitzdGF0aWMgYm9vbCBpbnRlbF9kcF91cGZyb250X2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKKwlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFz ZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXY7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVj dCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKKwlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbDsKKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9wbGxfY29u ZmlnOworCWJvb2wgZGlzYWJsZV9kcGxsID0gZmFsc2U7CisJaW50IHJldDsKKwlib29sIGRvbmUg PSBmYWxzZSwgaGFzX21zdCA9IGZhbHNlOworCXVpbnQ4X3QgbWF4X2xhbmVzOworCWludCBjb21t b25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKKwlpbnQgY29tbW9uX2xlbjsK KwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKKworCXBvd2Vy X2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7 CisJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7CisKKwlj b21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25fcmF0ZXMp OworCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKKwlpZiAo V0FSTl9PTihjb21tb25fbGVuIDw9IDApKQorCQlyZXR1cm4gdHJ1ZTsKKworCWRybV9tb2Rlc2V0 X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKK3JldHJ5OgorCXJldCA9IGRybV9tb2Rlc2V0X2xvY2so JmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0eCk7CisJaWYgKHJldCkKKwkJZ290byBleGl0 X2ZhaWw7CisKKwlpZiAoaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKSB7CisJCWNydGMgPSBpbnRl bF9lbmNvZGVyLT5iYXNlLmNydGM7CisKKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+ bXV0ZXgsICZjdHgpOworCQlpZiAocmV0KQorCQkJZ290byBleGl0X2ZhaWw7CisKKwkJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsICZjdHgpOworCQlpZiAocmV0 KQorCQkJZ290byBleGl0X2ZhaWw7CisKKwkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7CisJCXBsbCA9IGludGVsX2NydGMtPmNvbmZpZy0+c2hhcmVkX2RwbGw7CisJCWRpc2FibGVf ZHBsbCA9IHRydWU7CisJCWhhc19tc3QgPSBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMt PmNvbmZpZywKKwkJCQkJICAgICAgSU5URUxfT1VUUFVUX0RQX01TVCk7CisJCXJldCA9IGludGVs X2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2NydGMsICZjdHgsIGZhbHNlKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXhpdF9mYWlsOworCX0KKworCW11dGV4X2xvY2soJmRldl9wcml2LT5k cGxsX2xvY2spOworCWlmIChkaXNhYmxlX2RwbGwpIHsKKwkJLyogQ2xlYXIgdGhlIFBMTCBjb25m aWcgc3RhdGUgKi8KKwkJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZpZzsKKwkJcGxsLT5jb25m aWcuY3J0Y19tYXNrID0gMDsKKwl9CisKKwlkb25lID0gaW50ZWxfZHAtPnVwZnJvbnRfbGlua190 cmFpbihpbnRlbF9kcCwKKwkJCQkJICAgIGNvbW1vbl9yYXRlc1tjb21tb25fbGVuLTFdLAorCQkJ CQkgICAgbWF4X2xhbmVzLAorCQkJCQkgICAgaGFzX21zdCwKKwkJCQkJICAgIHRydWUpOworCWlm IChkaXNhYmxlX2RwbGwpCisJCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7CisKKwltdXRl eF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOworCisJaWYgKGNydGMpCisJCXJldCA9IGlu dGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2NydGMsICZjdHgsIHRydWUpOworCitl eGl0X2ZhaWw6CisJaWYgKHJldCA9PSAtRURFQURMSykgeworCQlkcm1fbW9kZXNldF9iYWNrb2Zm KCZjdHgpOworCQlnb3RvIHJldHJ5OworCX0KKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgp OworCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKKwlpbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKKwlyZXR1cm4gZG9uZTsKK30KKwogc3RhdGlj IGVudW0gZHJtX21vZGVfc3RhdHVzCiBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkK QEAgLTMxMSw2ICs0NTMsMTkgQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAogCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKIAl9 CiAKKwlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiAmJiAhaW50ZWxfZHAtPnVwZnJv bnRfZG9uZSkgeworCQlib29sIGRvX3VwZnJvbnRfbGlua190cmFpbjsKKwkJLyogRG8gbm90IGRv IHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQgaXMgYSBjb21wbGlhbmNlCisJCSAqIHJlcXVlc3QK KwkJICovCisJCWRvX3VwZnJvbnRfbGlua190cmFpbiA9ICFpbnRlbF9kcC0+dXBmcm9udF9kb25l ICYmCisJCQkoaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlICE9CisJCQkgRFBfVEVTVF9M SU5LX1RSQUlOSU5HKTsKKworCQlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKQorCQkJaW50ZWxf ZHAtPnVwZnJvbnRfZG9uZSA9IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCk7 CisJfQorCiAJbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9kcF9tYXhfbGlua19yYXRlKGludGVsX2Rw KTsKIAltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7CiAKQEAg LTE0OTksNiArMTY1NCw5IEBAIGludGVsX2RwX21heF9saW5rX3JhdGUoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKIAlpbnQgcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKIAlp bnQgbGVuOwogCisJaWYgKGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpCisJCXJldHVy biBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250OworCiAJbGVuID0gaW50ZWxfZHBfY29t bW9uX3JhdGVzKGludGVsX2RwLCByYXRlcyk7CiAJaWYgKFdBUk5fT04obGVuIDw9IDApKQogCQly ZXR1cm4gMTYyMDAwOwpAQCAtMTY0NCw2ICsxODAyLDIxIEBAIGludGVsX2RwX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWZvciAoOyBicHAgPj0gNiozOyBi cHAgLT0gMiozKSB7CiAJCW1vZGVfcmF0ZSA9IGludGVsX2RwX2xpbmtfcmVxdWlyZWQoYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19jbG9jaywKIAkJCQkJCSAgIGJwcCk7CisKKwkJaWYgKCFpc19lZHAoaW50 ZWxfZHApICYmIGludGVsX2RwLT51cGZyb250X2RvbmUpIHsKKwkJCWNsb2NrID0gbWF4X2Nsb2Nr OworCQkJbGFuZV9jb3VudCA9IGludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udDsKKwkJCWxpbmtf Y2xvY2sgPSBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250OworCQkJbGlua19hdmFpbCA9 IGludGVsX2RwX21heF9kYXRhX3JhdGUobGlua19jbG9jaywKKwkJCQkJCQkgICAgbGFuZV9jb3Vu dCk7CisJCQltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21vZGUt PmNydGNfY2xvY2ssCisJCQkJCQkJICAgYnBwKTsKKwkJCWlmIChtb2RlX3JhdGUgPD0gbGlua19h dmFpbCkKKwkJCQlnb3RvIGZvdW5kOworCQkJZWxzZQorCQkJCWNvbnRpbnVlOworCQl9CisKIAkJ Y2xvY2sgPSBtYXhfY2xvY2s7CiAJCWxhbmVfY291bnQgPSBtYXhfbGFuZV9jb3VudDsKIAkJbGlu a19jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107CkBAIC0xNjcyLDcgKzE4NDUsNiBAQCBmb3Vu ZDoKIAl9CiAKIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IGxhbmVfY291bnQ7Ci0KIAlwaXBl X2NvbmZpZy0+cGlwZV9icHAgPSBicHA7CiAJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBjb21t b25fcmF0ZXNbY2xvY2tdOwogCkBAIC00NDUzLDggKzQ2MjUsMTIgQEAgaW50ZWxfZHBfbG9uZ19w dWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiAKIG91dDoKIAlp ZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKLQkgICAgKGludGVs X2RwLT5pc19tc3QgPT0gZmFsc2UpKQorCSAgICAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxzZSkp IHsKIAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7CisJCWludGVsX2RwLT51cGZyb250 X2RvbmUgPSBmYWxzZTsKKwkJaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250ID0gMDsKKwkJaW50 ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCA9IDA7CisJfQogCiAJaW50ZWxfZGlzcGxheV9w b3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwogCXJldHVybjsKQEAgLTU2OTgs NiArNTg3NCwxMiBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAlpZiAodHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1Jf ZURQKQogCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKIAorCS8qIElu aXRpYWxpemUgdXBmcm9udCBsaW5rIHRyYWluaW5nIHZmdW5jIGZvciBEUCAqLworCWlmIChpbnRl bF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApIHsKKwkJaWYgKEhBU19EREkoZGV2 X3ByaXYpKQorCQkJaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiA9IGludGVsX2RkaV9saW5r X3RyYWluOworCX0KKwogCS8qIGVEUCBvbmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBvbiB2bHYvY2h2 ICovCiAJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpICYmCiAJCSAgICBpc19lZHAoaW50ZWxfZHApICYmIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQg IT0gUE9SVF9DKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xp bmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5p bmcuYwppbmRleCA2ZWI1ZWI2Li43ODJhOTE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCkBAIC0zMDQsNyArMzA0LDYgQEAgaW50ZWxfZHBfbGlu a190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogCWludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxfZHApOwogCiAJcmV0dXJuIGlu dGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1czsKLQogfQogCiB2b2lkIGludGVsX2RwX3N0b3BfbGlu a190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAppbmRleCAwYWViMzE3Li5mZGZjMGI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAt ODg3LDYgKzg4NywxMiBAQCBzdHJ1Y3QgaW50ZWxfZHAgewogCWVudW0gaGRtaV9mb3JjZV9hdWRp byBmb3JjZV9hdWRpbzsKIAlib29sIGxpbWl0ZWRfY29sb3JfcmFuZ2U7CiAJYm9vbCBjb2xvcl9y YW5nZV9hdXRvOworCisJLyogVXBmcm9udCBsaW5rIHRyYWluIHBhcmFtZXRlcnMgKi8KKwlpbnQg bWF4X2xpbmtfcmF0ZV91cGZyb250OworCXVpbnQ4X3QgbWF4X2xhbmVzX3VwZnJvbnQ7CisJYm9v bCB1cGZyb250X2RvbmU7CisKIAl1aW50OF90IGRwY2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdOwog CXVpbnQ4X3QgcHNyX2RwY2RbRURQX1BTUl9SRUNFSVZFUl9DQVBfU0laRV07CiAJdWludDhfdCBk b3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKQEAgLTk0NCw2ICs5NTAs MTEgQEAgc3RydWN0IGludGVsX2RwIHsKIAkvKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgYSBsaW5r IHRyYWluaW5nIGlzIHN0YXJ0ZXJkICovCiAJdm9pZCAoKnByZXBhcmVfbGlua19yZXRyYWluKShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIAorCS8qIEZvciBVcGZyb250IGxpbmsgdHJhaW5p bmcgKi8KKwlib29sICgqdXBmcm9udF9saW5rX3RyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgY2xvY2ssCisJCQkJICAgdWludDhfdCBsYW5lX2NvdW50LCBib29sIGxpbmtfbXN0 LAorCQkJCSAgIGJvb2wgaXNfdXBmcm9udCk7CisKIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlhbmNl IHRlc3RpbmcgKi8KIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwogCXVuc2ln bmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X2RhdGE7CkBAIC0xMTY2LDcgKzExNzcsOCBAQCB2b2lk IGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB2b2lk IGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJv b2wgc3RhdGUpOwogdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCk7CiBib29sIGludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsIGludCBtYXhfbGlua19yYXRlLAotCQkJICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBi b29sIGxpbmtfbXN0KTsKKwkJCSAgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21z dCwKKwkJCSAgYm9vbCBpc191cGZyb250KTsKIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50 ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCQkJCSAg aW50IGNsb2NrKTsKIHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK