From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [RFC 1/6] drm/dp: get/set phy compliance pattern. Date: Tue, 5 Nov 2019 15:12:00 -0800 Message-ID: <20191105231200.GH32264@intel.com> References: <20191003150653.15881-1-animesh.manna@intel.com> <20191003150653.15881-2-animesh.manna@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 212766EB81 for ; Tue, 5 Nov 2019 23:09:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191003150653.15881-2-animesh.manna@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMDMsIDIwMTkgYXQgMDg6MzY6NDhQTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3 cm90ZToKPiBEdXJpbmcgcGh5IGNvbXBsYWluY2UgYXV0byB0ZXN0IG1vZGUgc291cmNlIG5lZWQg dG8gcmVhZAo+IHJlcXVlc3RlZCB0ZXN0IHBhdHRlcm4gZnJvbSBzaW5rIHRocm91Z2ggRFBDRC4g QWZ0ZXIgcHJvY2Vzc2luZwo+IHRoZSByZXF1ZXN0IHNvdXJjZSBuZWVkIHRvIHNldCB0aGUgcGF0 dGVybi4gU28gc2V0L2dldCBtZXRob2QKPiBhZGRlZCBpbiBkcm0gbGF5ZXIgYXMgaXQgaXMgRFAg cHJvdG9jb2wuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5u YUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMgfCA3 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2Rw X2hlbHBlci5oICAgICB8IDI4ICsrKysrKysrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDEwNSBp bnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gaW5kZXggZjM3Mzc5OGQ4 MmY2Li4zY2I3MTcwZTU1ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9o ZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKPiBAQCAtMTQ4 NCwzICsxNDg0LDgwIEBAIGludCBkcm1fZHBfZHNjX3Npbmtfc3VwcG9ydGVkX2lucHV0X2JwY3Mo Y29uc3QgdTggZHNjX2RwY2RbRFBfRFNDX1JFQ0VJVkVSX0NBUF9TCj4gIAlyZXR1cm4gbnVtX2Jw YzsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9kc2Nfc2lua19zdXBwb3J0ZWRfaW5wdXRf YnBjcyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2RwX2dldF9waHlfdGVzdF9wYXR0ZXJuKCkgLSBn ZXQgdGhlIHJlcXVlc3RlZCBwYXR0ZXJuIGZyb20gdGhlIHNpbmsuCj4gKyAqIEBhdXg6IERpc3Bs YXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBkYXRhOiBEUCBwaHkgY29tcGxpYW5jZSB0ZXN0IHBh cmFtZXRlcnMuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGRybV9kcF9nZXRfcGh5X3Rlc3Rf cGF0dGVybihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ICsJCQkJc3RydWN0IGRybV9kcF9waHlf dGVzdF9wYXJhbXMgKmRhdGEpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gZHJtX2Rw X2xpbmtfcHJvYmUoYXV4LCAmZGF0YS0+bGluayk7CgpIZXJlIHRoaXMganVzdCByZWFkcyB0aGUg U2luayBjYXBhYmlsaXRpZXMgYW5kIHJlYWRzIHRoZSBtYXggbGluayByYXRlIGFuZCBsYW5lIGNv dW50CmFuZCBzdG9yZXMgdGhhdCBpbnRvIHRoZSBwaHkgdGVzdCBsaW5rLiBCdXQgYWZ0ZXIgdGFs a2luZyB0byBDbGludCBoZXJlIGhlIHBvaW50ZWQKb3V0IHRoYXQgZm9yIFBIWSBjb21wbGlhbmNl LCB5b3Ugc2hvdWxkIGJlIHJlYWRpbmcgdGhlIFRFU1RfTElOS19SQVRFIGFuZCBURVNUX0xBTkVf Q09VTlQKYXMgdGhlIHJlcXVlc3RlZCBsaW5rIGNvbmZpZy4KCj4gKwlpZiAoZXJyIDwgMCkKPiAr CQlyZXR1cm4gZXJyOwo+ICsKPiArCWVyciA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9URVNU X1BIWV9QQVRURVJOLCAmZGF0YS0+cGh5X3BhdHRlcm4sIDEpOwo+ICsJaWYgKGVyciA8IDApCj4g KwkJcmV0dXJuIGVycjsKPiArCj4gKwlzd2l0Y2ggKGRhdGEtPnBoeV9wYXR0ZXJuKSB7Cj4gKwlj YXNlIERQX1RFU1RfUEhZX1BBVFRFUk5fODBCSVRfQ1VTVE9NOgo+ICsJCWVyciA9IGRybV9kcF9k cGNkX3JlYWQoYXV4LCBEUF9URVNUXzgwQklUX0NVU1RPTV9QQVRURVJOXzdfMCwKPiArCQkJCSAg ICAgICAmZGF0YS0+Y3VzdG9tODAsIDEwKTsKPiArCQlpZiAoZXJyIDwgMCkKPiArCQkJcmV0dXJu IGVycjsKPiArCj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX1RFU1RfUEhZX1BBVFRFUk5fQ1AyNTIw Ogo+ICsJCWVyciA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9URVNUX0hCUjJfU0NSQU1CTEVS X1JFU0VULAo+ICsJCQkJICAgICAgICZkYXRhLT5oYnIyX3Jlc2V0LCAyKTsKPiArCQlpZiAoZXJy IDwgMCkKPiArCQkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtF WFBPUlRfU1lNQk9MKGRybV9kcF9nZXRfcGh5X3Rlc3RfcGF0dGVybik7Cj4gKwo+ICsvKioKPiAr ICogZHJtX2RwX3NldF9waHlfdGVzdF9wYXR0ZXJuKCkgLSBzZXQgdGhlIHBhdHRlcm4gdG8gdGhl IHNpbmsuCj4gKyAqIEBhdXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBkYXRhOiBE UCBwaHkgY29tcGxpYW5jZSB0ZXN0IHBhcmFtZXRlcnMuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr aW50IGRybV9kcF9zZXRfcGh5X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ ICsJCQkJc3RydWN0IGRybV9kcF9waHlfdGVzdF9wYXJhbXMgKmRhdGEpCj4gK3sKPiArCWludCBl cnIsIGk7Cj4gKwl1OCB0ZXN0X3BhdHRlcm47Cj4gKwo+ICsJZXJyID0gZHJtX2RwX2xpbmtfY29u ZmlndXJlKGF1eCwgJmRhdGEtPmxpbmspOwoKU28gaGVyZSB0aGlzIGZ1bmN0aW9uIHdyaXRlIHN0 byB0aGUgc2luaydzIERQQ0QgcmVnaXN0ZXJzIHRvIHNldCB0aGUKbGluayByYXRlIGFuZCBsYW5l IGNvdW50LCBob3dldmVyIHdlIGhhdmVudCBzZXQgdGhlIGRpc3BsYXkgY29udHJvbGxlciBIVyB0 byB0aGF0IGxpbmsgcmF0ZQpzaW5jZSB3ZSBjYWxsIHRoaXMgb3V0IG9mIGF0b21pYyBtb2Rlc2V0 IGNvbnRleHQuCgpBbm90aGVyIHJlYXNvbiB3aHkgYWxsIHRoaXMgbmVlZHMgdG8gaGFwcGVuIGlu IHRoZSBjb250ZXh0IG9mIGF0b21pYyBtb2Rlc2V0CgpNYW5hc2kKCj4gKwlpZiAoZXJyIDwgMCkK PiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCXRlc3RfcGF0dGVybiA9IGRhdGEtPnBoeV9wYXR0ZXJu Owo+ICsJaWYgKGRhdGEtPmxpbmsucmV2aXNpb24gPCAweDEyKSB7Cj4gKwkJdGVzdF9wYXR0ZXJu ID0gKHRlc3RfcGF0dGVybiA8PCAyKSAmCj4gKwkJCSAgICAgICBEUF9MSU5LX1FVQUxfUEFUVEVS Tl8xMV9NQVNLOwo+ICsJCWVyciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgRFBfVFJBSU5JTkdf UEFUVEVSTl9TRVQsCj4gKwkJCQkJJnRlc3RfcGF0dGVybiwgMSk7Cj4gKwkJaWYgKGVyciA8IDAp Cj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9IGVsc2Ugewo+ICsJCWZvciAoaSA9IDA7IGkgPCBkYXRh LT5saW5rLm51bV9sYW5lczsgaSsrKSB7Cj4gKwkJCWVyciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1 eCwgRFBfTElOS19RVUFMX0xBTkUwX1NFVCArIGksCj4gKwkJCQkJCSZ0ZXN0X3BhdHRlcm4sIDEp Owo+ICsJCQlpZiAoZXJyIDwgMCkKPiArCQkJCXJldHVybiBlcnI7Cj4gKwkJfQo+ICsJfQo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2RwX3NldF9waHlfdGVzdF9w YXR0ZXJuKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gaW5kZXggZWQxYTk4NTc0NWJhLi43N2RjZjU4Nzli ZWIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gQEAgLTY5MSw2ICs2OTEsMTQgQEAKPiAgIyBkZWZp bmUgRFBfVEVTVF9DT1VOVF9NQVNLCQkgICAgMHhmCj4gIAo+ICAjZGVmaW5lIERQX1RFU1RfUEhZ X1BBVFRFUk4gICAgICAgICAgICAgICAgIDB4MjQ4Cj4gKyMgZGVmaW5lIERQX1RFU1RfUEhZX1BB VFRFUk5fTk9ORSAgICAgICAgICAgMAo+ICsjIGRlZmluZSBEUF9URVNUX1BIWV9QQVRURVJOX0Qx MF8yICAgICAgICAgIDEKPiArIyBkZWZpbmUgRFBfVEVTVF9QSFlfUEFUVEVSTl9FUlJPUl9DT1VO VCAgICAyCj4gKyMgZGVmaW5lIERQX1RFU1RfUEhZX1BBVFRFUk5fUFJCUzcgICAgICAgICAgMwo+ ICsjIGRlZmluZSBEUF9URVNUX1BIWV9QQVRURVJOXzgwQklUX0NVU1RPTSAgIDQKPiArIyBkZWZp bmUgRFBfVEVTVF9QSFlfUEFUVEVSTl9DUDI1MjAgICAgICAgICA1Cj4gKwo+ICsjZGVmaW5lIERQ X1RFU1RfSEJSMl9TQ1JBTUJMRVJfUkVTRVQgICAgICAgIDB4MjRBCj4gICNkZWZpbmUgRFBfVEVT VF84MEJJVF9DVVNUT01fUEFUVEVSTl83XzAgICAgMHgyNTAKPiAgI2RlZmluZQlEUF9URVNUXzgw QklUX0NVU1RPTV9QQVRURVJOXzE1XzggICAweDI1MQo+ICAjZGVmaW5lCURQX1RFU1RfODBCSVRf Q1VTVE9NX1BBVFRFUk5fMjNfMTYgIDB4MjUyCj4gQEAgLTE1MjMsNCArMTUzMSwyNCBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgZHJtX2RwX2NlY191bnNldF9lZGlkKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgpCj4gIAo+ICAjZW5kaWYKPiAgCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2RwX3BoeV90ZXN0 X3BhcmFtcyAtIERQIFBoeSBDb21wbGlhbmNlIHBhcmFtZXRlcnMKPiArICogQGxpbms6IExpbmsg aW5mb3JtYXRpb24uCj4gKyAqIEBwaHlfcGF0dGVybjogRFAgUGh5IHRlc3QgcGF0dGVybiBmcm9t IERQQ0QgMHgyNDggKHNpbmspCj4gKyAqIEBoYjJfcmVzZXQ6IERQIEhCUjJfQ09NUExJQU5DRV9T Q1JBTUJMRVJfUkVTRVQgZnJvbSBEQ1BECj4gKyAqICAgICAgICAgICAgMHgyNEEgYW5kIDB4MjRC IChzaW5rKQo+ICsgKiBAY3VzdG9tODA6IERQIFRlc3RfODBCSVRfQ1VTVE9NX1BBVFRFUk4gZnJv bSBEUENEcyAweDI1MAo+ICsgKiAgICAgICAgICAgICAgIHRocm91Z2ggMHgyNTkuCj4gKyAqLwo+ ICtzdHJ1Y3QgZHJtX2RwX3BoeV90ZXN0X3BhcmFtcyB7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2xpbmsg bGluazsKPiArCXU4IHBoeV9wYXR0ZXJuOwo+ICsJdTggaGJyMl9yZXNldFsyXTsKPiArCXU4IGN1 c3RvbTgwWzEwXTsKPiArfTsKPiArCj4gK2ludCBkcm1fZHBfZ2V0X3BoeV90ZXN0X3BhdHRlcm4o c3RydWN0IGRybV9kcF9hdXggKmF1eCwKPiArCQkJCXN0cnVjdCBkcm1fZHBfcGh5X3Rlc3RfcGFy YW1zICpkYXRhKTsKPiAraW50IGRybV9kcF9zZXRfcGh5X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZHJt X2RwX2F1eCAqYXV4LAo+ICsJCQkJc3RydWN0IGRybV9kcF9waHlfdGVzdF9wYXJhbXMgKmRhdGEp Owo+ICAjZW5kaWYgLyogX0RSTV9EUF9IRUxQRVJfSF8gKi8KPiAtLSAKPiAyLjIyLjAKPiAKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8354AC5DF60 for ; Tue, 5 Nov 2019 23:09:20 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2E104206DF for ; Tue, 5 Nov 2019 23:09:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2E104206DF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C0C06EB81; Tue, 5 Nov 2019 23:09:20 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 212766EB81 for ; Tue, 5 Nov 2019 23:09:18 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Nov 2019 15:09:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,271,1569308400"; d="scan'208";a="200533910" Received: from labuser-z97x-ud5h.jf.intel.com (HELO intel.com) ([10.54.75.49]) by fmsmga008.fm.intel.com with ESMTP; 05 Nov 2019 15:09:16 -0800 Date: Tue, 5 Nov 2019 15:12:00 -0800 From: Manasi Navare To: Animesh Manna Message-ID: <20191105231200.GH32264@intel.com> References: <20191003150653.15881-1-animesh.manna@intel.com> <20191003150653.15881-2-animesh.manna@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191003150653.15881-2-animesh.manna@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Subject: Re: [Intel-gfx] [RFC 1/6] drm/dp: get/set phy compliance pattern. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191105231200.9aWBuFSXep4iPsV_GoAJNQSkLPHFfK1ozHBXXhZICrM@z> T24gVGh1LCBPY3QgMDMsIDIwMTkgYXQgMDg6MzY6NDhQTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3 cm90ZToKPiBEdXJpbmcgcGh5IGNvbXBsYWluY2UgYXV0byB0ZXN0IG1vZGUgc291cmNlIG5lZWQg dG8gcmVhZAo+IHJlcXVlc3RlZCB0ZXN0IHBhdHRlcm4gZnJvbSBzaW5rIHRocm91Z2ggRFBDRC4g QWZ0ZXIgcHJvY2Vzc2luZwo+IHRoZSByZXF1ZXN0IHNvdXJjZSBuZWVkIHRvIHNldCB0aGUgcGF0 dGVybi4gU28gc2V0L2dldCBtZXRob2QKPiBhZGRlZCBpbiBkcm0gbGF5ZXIgYXMgaXQgaXMgRFAg cHJvdG9jb2wuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5u YUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMgfCA3 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2Rw X2hlbHBlci5oICAgICB8IDI4ICsrKysrKysrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDEwNSBp bnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gaW5kZXggZjM3Mzc5OGQ4 MmY2Li4zY2I3MTcwZTU1ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9o ZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKPiBAQCAtMTQ4 NCwzICsxNDg0LDgwIEBAIGludCBkcm1fZHBfZHNjX3Npbmtfc3VwcG9ydGVkX2lucHV0X2JwY3Mo Y29uc3QgdTggZHNjX2RwY2RbRFBfRFNDX1JFQ0VJVkVSX0NBUF9TCj4gIAlyZXR1cm4gbnVtX2Jw YzsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9kc2Nfc2lua19zdXBwb3J0ZWRfaW5wdXRf YnBjcyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2RwX2dldF9waHlfdGVzdF9wYXR0ZXJuKCkgLSBn ZXQgdGhlIHJlcXVlc3RlZCBwYXR0ZXJuIGZyb20gdGhlIHNpbmsuCj4gKyAqIEBhdXg6IERpc3Bs YXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBkYXRhOiBEUCBwaHkgY29tcGxpYW5jZSB0ZXN0IHBh cmFtZXRlcnMuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGRybV9kcF9nZXRfcGh5X3Rlc3Rf cGF0dGVybihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ICsJCQkJc3RydWN0IGRybV9kcF9waHlf dGVzdF9wYXJhbXMgKmRhdGEpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gZHJtX2Rw X2xpbmtfcHJvYmUoYXV4LCAmZGF0YS0+bGluayk7CgpIZXJlIHRoaXMganVzdCByZWFkcyB0aGUg U2luayBjYXBhYmlsaXRpZXMgYW5kIHJlYWRzIHRoZSBtYXggbGluayByYXRlIGFuZCBsYW5lIGNv dW50CmFuZCBzdG9yZXMgdGhhdCBpbnRvIHRoZSBwaHkgdGVzdCBsaW5rLiBCdXQgYWZ0ZXIgdGFs a2luZyB0byBDbGludCBoZXJlIGhlIHBvaW50ZWQKb3V0IHRoYXQgZm9yIFBIWSBjb21wbGlhbmNl LCB5b3Ugc2hvdWxkIGJlIHJlYWRpbmcgdGhlIFRFU1RfTElOS19SQVRFIGFuZCBURVNUX0xBTkVf Q09VTlQKYXMgdGhlIHJlcXVlc3RlZCBsaW5rIGNvbmZpZy4KCj4gKwlpZiAoZXJyIDwgMCkKPiAr CQlyZXR1cm4gZXJyOwo+ICsKPiArCWVyciA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9URVNU X1BIWV9QQVRURVJOLCAmZGF0YS0+cGh5X3BhdHRlcm4sIDEpOwo+ICsJaWYgKGVyciA8IDApCj4g KwkJcmV0dXJuIGVycjsKPiArCj4gKwlzd2l0Y2ggKGRhdGEtPnBoeV9wYXR0ZXJuKSB7Cj4gKwlj YXNlIERQX1RFU1RfUEhZX1BBVFRFUk5fODBCSVRfQ1VTVE9NOgo+ICsJCWVyciA9IGRybV9kcF9k cGNkX3JlYWQoYXV4LCBEUF9URVNUXzgwQklUX0NVU1RPTV9QQVRURVJOXzdfMCwKPiArCQkJCSAg ICAgICAmZGF0YS0+Y3VzdG9tODAsIDEwKTsKPiArCQlpZiAoZXJyIDwgMCkKPiArCQkJcmV0dXJu IGVycjsKPiArCj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX1RFU1RfUEhZX1BBVFRFUk5fQ1AyNTIw Ogo+ICsJCWVyciA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9URVNUX0hCUjJfU0NSQU1CTEVS X1JFU0VULAo+ICsJCQkJICAgICAgICZkYXRhLT5oYnIyX3Jlc2V0LCAyKTsKPiArCQlpZiAoZXJy IDwgMCkKPiArCQkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtF WFBPUlRfU1lNQk9MKGRybV9kcF9nZXRfcGh5X3Rlc3RfcGF0dGVybik7Cj4gKwo+ICsvKioKPiAr ICogZHJtX2RwX3NldF9waHlfdGVzdF9wYXR0ZXJuKCkgLSBzZXQgdGhlIHBhdHRlcm4gdG8gdGhl IHNpbmsuCj4gKyAqIEBhdXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBkYXRhOiBE UCBwaHkgY29tcGxpYW5jZSB0ZXN0IHBhcmFtZXRlcnMuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr aW50IGRybV9kcF9zZXRfcGh5X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ ICsJCQkJc3RydWN0IGRybV9kcF9waHlfdGVzdF9wYXJhbXMgKmRhdGEpCj4gK3sKPiArCWludCBl cnIsIGk7Cj4gKwl1OCB0ZXN0X3BhdHRlcm47Cj4gKwo+ICsJZXJyID0gZHJtX2RwX2xpbmtfY29u ZmlndXJlKGF1eCwgJmRhdGEtPmxpbmspOwoKU28gaGVyZSB0aGlzIGZ1bmN0aW9uIHdyaXRlIHN0 byB0aGUgc2luaydzIERQQ0QgcmVnaXN0ZXJzIHRvIHNldCB0aGUKbGluayByYXRlIGFuZCBsYW5l IGNvdW50LCBob3dldmVyIHdlIGhhdmVudCBzZXQgdGhlIGRpc3BsYXkgY29udHJvbGxlciBIVyB0 byB0aGF0IGxpbmsgcmF0ZQpzaW5jZSB3ZSBjYWxsIHRoaXMgb3V0IG9mIGF0b21pYyBtb2Rlc2V0 IGNvbnRleHQuCgpBbm90aGVyIHJlYXNvbiB3aHkgYWxsIHRoaXMgbmVlZHMgdG8gaGFwcGVuIGlu IHRoZSBjb250ZXh0IG9mIGF0b21pYyBtb2Rlc2V0CgpNYW5hc2kKCj4gKwlpZiAoZXJyIDwgMCkK PiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCXRlc3RfcGF0dGVybiA9IGRhdGEtPnBoeV9wYXR0ZXJu Owo+ICsJaWYgKGRhdGEtPmxpbmsucmV2aXNpb24gPCAweDEyKSB7Cj4gKwkJdGVzdF9wYXR0ZXJu ID0gKHRlc3RfcGF0dGVybiA8PCAyKSAmCj4gKwkJCSAgICAgICBEUF9MSU5LX1FVQUxfUEFUVEVS Tl8xMV9NQVNLOwo+ICsJCWVyciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgRFBfVFJBSU5JTkdf UEFUVEVSTl9TRVQsCj4gKwkJCQkJJnRlc3RfcGF0dGVybiwgMSk7Cj4gKwkJaWYgKGVyciA8IDAp Cj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9IGVsc2Ugewo+ICsJCWZvciAoaSA9IDA7IGkgPCBkYXRh LT5saW5rLm51bV9sYW5lczsgaSsrKSB7Cj4gKwkJCWVyciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1 eCwgRFBfTElOS19RVUFMX0xBTkUwX1NFVCArIGksCj4gKwkJCQkJCSZ0ZXN0X3BhdHRlcm4sIDEp Owo+ICsJCQlpZiAoZXJyIDwgMCkKPiArCQkJCXJldHVybiBlcnI7Cj4gKwkJfQo+ICsJfQo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2RwX3NldF9waHlfdGVzdF9w YXR0ZXJuKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gaW5kZXggZWQxYTk4NTc0NWJhLi43N2RjZjU4Nzli ZWIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gQEAgLTY5MSw2ICs2OTEsMTQgQEAKPiAgIyBkZWZp bmUgRFBfVEVTVF9DT1VOVF9NQVNLCQkgICAgMHhmCj4gIAo+ICAjZGVmaW5lIERQX1RFU1RfUEhZ X1BBVFRFUk4gICAgICAgICAgICAgICAgIDB4MjQ4Cj4gKyMgZGVmaW5lIERQX1RFU1RfUEhZX1BB VFRFUk5fTk9ORSAgICAgICAgICAgMAo+ICsjIGRlZmluZSBEUF9URVNUX1BIWV9QQVRURVJOX0Qx MF8yICAgICAgICAgIDEKPiArIyBkZWZpbmUgRFBfVEVTVF9QSFlfUEFUVEVSTl9FUlJPUl9DT1VO VCAgICAyCj4gKyMgZGVmaW5lIERQX1RFU1RfUEhZX1BBVFRFUk5fUFJCUzcgICAgICAgICAgMwo+ ICsjIGRlZmluZSBEUF9URVNUX1BIWV9QQVRURVJOXzgwQklUX0NVU1RPTSAgIDQKPiArIyBkZWZp bmUgRFBfVEVTVF9QSFlfUEFUVEVSTl9DUDI1MjAgICAgICAgICA1Cj4gKwo+ICsjZGVmaW5lIERQ X1RFU1RfSEJSMl9TQ1JBTUJMRVJfUkVTRVQgICAgICAgIDB4MjRBCj4gICNkZWZpbmUgRFBfVEVT VF84MEJJVF9DVVNUT01fUEFUVEVSTl83XzAgICAgMHgyNTAKPiAgI2RlZmluZQlEUF9URVNUXzgw QklUX0NVU1RPTV9QQVRURVJOXzE1XzggICAweDI1MQo+ICAjZGVmaW5lCURQX1RFU1RfODBCSVRf Q1VTVE9NX1BBVFRFUk5fMjNfMTYgIDB4MjUyCj4gQEAgLTE1MjMsNCArMTUzMSwyNCBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgZHJtX2RwX2NlY191bnNldF9lZGlkKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgpCj4gIAo+ICAjZW5kaWYKPiAgCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2RwX3BoeV90ZXN0 X3BhcmFtcyAtIERQIFBoeSBDb21wbGlhbmNlIHBhcmFtZXRlcnMKPiArICogQGxpbms6IExpbmsg aW5mb3JtYXRpb24uCj4gKyAqIEBwaHlfcGF0dGVybjogRFAgUGh5IHRlc3QgcGF0dGVybiBmcm9t IERQQ0QgMHgyNDggKHNpbmspCj4gKyAqIEBoYjJfcmVzZXQ6IERQIEhCUjJfQ09NUExJQU5DRV9T Q1JBTUJMRVJfUkVTRVQgZnJvbSBEQ1BECj4gKyAqICAgICAgICAgICAgMHgyNEEgYW5kIDB4MjRC IChzaW5rKQo+ICsgKiBAY3VzdG9tODA6IERQIFRlc3RfODBCSVRfQ1VTVE9NX1BBVFRFUk4gZnJv bSBEUENEcyAweDI1MAo+ICsgKiAgICAgICAgICAgICAgIHRocm91Z2ggMHgyNTkuCj4gKyAqLwo+ ICtzdHJ1Y3QgZHJtX2RwX3BoeV90ZXN0X3BhcmFtcyB7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2xpbmsg bGluazsKPiArCXU4IHBoeV9wYXR0ZXJuOwo+ICsJdTggaGJyMl9yZXNldFsyXTsKPiArCXU4IGN1 c3RvbTgwWzEwXTsKPiArfTsKPiArCj4gK2ludCBkcm1fZHBfZ2V0X3BoeV90ZXN0X3BhdHRlcm4o c3RydWN0IGRybV9kcF9hdXggKmF1eCwKPiArCQkJCXN0cnVjdCBkcm1fZHBfcGh5X3Rlc3RfcGFy YW1zICpkYXRhKTsKPiAraW50IGRybV9kcF9zZXRfcGh5X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZHJt X2RwX2F1eCAqYXV4LAo+ICsJCQkJc3RydWN0IGRybV9kcF9waHlfdGVzdF9wYXJhbXMgKmRhdGEp Owo+ICAjZW5kaWYgLyogX0RSTV9EUF9IRUxQRVJfSF8gKi8KPiAtLSAKPiAyLjIyLjAKPiAKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4