From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Thu, 06 Jun 2019 11:47:20 +0300 Message-ID: <87muiv14o7.fsf@intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> <20190604145826.16424-10-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 231F389829 for ; Thu, 6 Jun 2019 08:44:18 +0000 (UTC) In-Reply-To: <20190604145826.16424-10-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak , intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAwNCBKdW4gMjAxOSwgSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPiB3cm90 ZToKPiBGYWN0b3Igb3V0IGhlbHBlcnMgcmVhZGluZy9wYXJzaW5nIHRoZSBUeXBlQyBzcGVjaWZp YyByZWdpc3RlcnMsIG1ha2luZwo+IGN1cnJlbnQgdXNlcnMgb2YgdGhlbSBjbGVhcmVyIGFuZCBs ZXR0aW5nIHVzIHVzZSB0aGVtIGxhdGVyLgo+Cj4gV2hpbGUgYXQgaXQgYWxzbzoKPiAtIFNpbXBs aWZ5IGljbF90Y19waHlfY29ubmVjdCgpIHdpdGggYW4gZWFybHkgcmV0dXJuIGluIGxlZ2FjeSBt b2RlLgo+IC0gU2ltcGxpZnkgdGhlIGxpdmUgc3RhdHVzIGNoZWNrIHVzaW5nIG9uZSBiaXRtYXNr IGZvciBhbGwgSFBEIGJpdHMuCj4gLSBSZW1vdmUgYSBtaWNyby1vcHRpbWlzYXRpb24gb2YgdGhl IHJlcGVhdGVkIHNhZmUtbW9kZSBjbGVhcmluZy4KPiAtIE1ha2Ugc3VyZSB3ZSBmaXggdGhlIGxl Z2FjeSBwb3J0IGZsYWcgaW4gYWxsIGNhc2VzLgo+Cj4gRXhjZXB0IGZvciB0aGUgbGFzdCB0d28s IG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KPgo+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxq b3NlLnNvdXphQGludGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3RjLmMgIHwgMTY2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuaCAgfCAgIDEgKwo+ICAzIGZpbGVzIGNo YW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gaW5kZXggOGYyMjNkNDhkNTYyLi5kMjM2ODM5YmVlMTkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0yOTgzLDcgKzI5ODMsNiBAQCBzdGF0aWMgdm9p ZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAgCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiAtCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0g aW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Cj4gIAl1MzIgbG4wLCBsbjEsIGxhbmVf aW5mbzsKPiAgCj4gIAlpZiAoaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9UQlRf QUxUKQo+IEBAIC0yOTk3LDkgKzI5OTYsNyBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19k cF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICAJCWxu MCAmPSB+KE1HX0RQX01PREVfQ0ZHX0RQX1gxX01PREUgfCBNR19EUF9NT0RFX0NGR19EUF9YMl9N T0RFKTsKPiAgCQlsbjEgJj0gfihNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwgTUdfRFBfTU9E RV9DRkdfRFBfWDJfTU9ERSk7Cj4gIAo+IC0JCWxhbmVfaW5mbyA9IChJOTE1X1JFQUQoUE9SVF9U WF9ERkxFWERQU1ApICYKPiAtCQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0 KSkgPj4KPiAtCQkJICAgIERQX0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19wb3J0KTsKPiArCQls YW5lX2luZm8gPSBpbnRlbF90Y19wb3J0X2dldF9sYW5lX2luZm8oaW50ZWxfZGlnX3BvcnQpOwo+ ICAKPiAgCQlzd2l0Y2ggKGxhbmVfaW5mbykgewo+ICAJCWNhc2UgMHgxOgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdGMuYwo+IGluZGV4IDA3NDg4MjM1YjY3YS4uM2ZkY2ZhMmJiYWVlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF90Yy5jCj4gQEAgLTQzLDEwICs0MywxOSBAQCBzdGF0aWMgY29uc3QgY2hh ciAqdGNfcG9ydF9tb2RlX25hbWUoZW51bSB0Y19wb3J0X21vZGUgbW9kZSkKPiAgCXJldHVybiBu YW1lc1ttb2RlXTsKPiAgfQo+ICAKPiAtaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2Nv dW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICt1MzIgaW50ZWxfdGNf cG9ydF9nZXRfbGFuZV9pbmZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19w b3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAgCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9y dF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gKwl1MzIgbGFuZV9pbmZv ID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKTsKClBsZWFzZSBkb24ndCBkbyByZWdpc3Rl ciByZWFkcyBpbiBkZWNsYXJhdGlvbnMuIERpdHRvIGJlbG93LgoKPiArCj4gKwlyZXR1cm4gKGxh bmVfaW5mbyAmIERQX0xBTkVfQVNTSUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+Pgo+ICsJICAgICAg IERQX0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19wb3J0KTsKPiArfQo+ICsKPiAraW50IGludGVs X3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICAJdTMyIGxhbmVfaW5mbzsKPiAgCj4gQEAgLTU1LDkgKzY0LDcgQEAgaW50IGludGVsX3Rj X3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0KQo+ICAKPiAgCWxhbmVfaW5mbyA9IDA7Cj4gIAl3aXRoX2ludGVsX2Rpc3BsYXlfcG93ZXIo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9ESVNQTEFZX0NPUkUsIHdha2VyZWYpCj4gLQkJbGFuZV9p bmZvID0gKEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJgo+IC0JCQkgICAgIERQX0xBTkVf QVNTSUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+Pgo+IC0JCQkJRFBfTEFORV9BU1NJR05NRU5UX1NI SUZUKHRjX3BvcnQpOwo+ICsJCWxhbmVfaW5mbyA9IGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfaW5m byhkaWdfcG9ydCk7Cj4gIAo+ICAJc3dpdGNoIChsYW5lX2luZm8pIHsKPiAgCWRlZmF1bHQ6Cj4g QEAgLTc1LDYgKzgyLDY5IEBAIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiAgCX0KPiAgfQo+ICAKPiArc3Rh dGljIHZvaWQgdGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCwKPiArCQkJCSAgICAgIHUzMiBsaXZlX3N0YXR1c19tYXNrKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5i YXNlLmJhc2UuZGV2KTsKPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190 YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gKwl1MzIgdmFsaWRfaHBkX21hc2sg PSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPyBCSVQoVENfUE9SVF9MRUdBQ1kpIDoKPiArCQkJ CQkJCX5CSVQoVENfUE9SVF9MRUdBQ1kpOwo+ICsKPiArCWlmICghKGxpdmVfc3RhdHVzX21hc2sg JiB+dmFsaWRfaHBkX21hc2spKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKiBJZiBsaXZlIHN0YXR1 cyBtaXNtYXRjaGVzIHRoZSBWQlQgZmxhZywgdHJ1c3QgdGhlIGxpdmUgc3RhdHVzLiAqLwo+ICsJ RFJNX0VSUk9SKCJQb3J0ICVzOiBsaXZlIHN0YXR1cyAlMDh4IG1pc21hdGNoZXMgdGhlIGxlZ2Fj eSBwb3J0IGZsYWcsIGZpeCBmbGFnXG4iLAo+ICsJCSAgdGNfcG9ydF9uYW1lKGRldl9wcml2LCB0 Y19wb3J0KSwgbGl2ZV9zdGF0dXNfbWFzayk7Cj4gKwo+ICsJZGlnX3BvcnQtPnRjX2xlZ2FjeV9w b3J0ID0gIWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydDsKPiArfQo+ICsKPiArc3RhdGljIHUzMiB0 Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3Bv cnQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ICsJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRl bF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiArCXUzMiB2YWwg PSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+ICsJdTMyIG1hc2sgPSAwOwo+ICsKPiAr CWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RCVCh0Y19wb3J0KSkKPiArCQltYXNrIHw9IEJJVChU Q19QT1JUX1RCVF9BTFQpOwo+ICsJaWYgKHZhbCAmIFRDX0xJVkVfU1RBVEVfVEModGNfcG9ydCkp Cj4gKwkJbWFzayB8PSBCSVQoVENfUE9SVF9EUF9BTFQpOwo+ICsKPiArCWlmIChJOTE1X1JFQUQo U0RFSVNSKSAmIFNERV9UQ19IT1RQTFVHX0lDUCh0Y19wb3J0KSkKPiArCQltYXNrIHw9IEJJVChU Q19QT1JUX0xFR0FDWSk7Cj4gKwo+ICsJLyogVGhlIHNpbmsgY2FuIGJlIGNvbm5lY3RlZCBvbmx5 IGluIGEgc2luZ2xlIG1vZGUuICovCj4gKwlpZiAoIVdBUk5fT04oaHdlaWdodDMyKG1hc2spID4g MSkpCj4gKwkJdGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhkaWdfcG9ydCwgbWFzayk7Cj4gKwo+ ICsJcmV0dXJuIG1hc2s7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGljbF90Y19waHlfc3RhdHVz X2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNl LmJhc2UuZGV2KTsKPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190Yyhk ZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gKwo+ICsJcmV0dXJuIEk5MTVfUkVBRChQ T1JUX1RYX0RGTEVYRFBQTVMpICYKPiArCSAgICAgICBEUF9QSFlfTU9ERV9TVEFUVVNfQ09NUExF VEVEKHRjX3BvcnQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X3NldF9zYWZl X21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCj4gKwkJCQkgICAgIGJv b2wgZW5hYmxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0 ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gKwl1 MzIgdmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUENTU1MpOwo+ICsKPiArCXZhbCAmPSB+ RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwo+ICsJaWYgKCFlbmFibGUpCj4g KwkJdmFsIHw9IERQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KTsKPiArCj4gKwlJ OTE1X1dSSVRFKFBPUlRfVFhfREZMRVhEUENTU1MsIHZhbCk7Cj4gK30KPiArCj4gIC8qCj4gICAq IFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgQ29ubmVjdCBG bG93IGRlc2NyaWJlZCBieSBvdXIKPiAgICogc3BlY2lmaWNhdGlvbiwgR2VuMTEgVHlwZUMgUHJv Z3JhbW1pbmcgY2hhcHRlci4gVGhlIHJlc3Qgb2YgdGhlIGZsb3cgKHJlYWRpbmcKPiBAQCAtMTAw LDM2ICsxNzAsMzEgQEAgc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9jb25uZWN0KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAgCWVudW0g dGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJh c2UucG9ydCk7Cj4gLQl1MzIgdmFsOwo+ICsJdTMyIGxpdmVfc3RhdHVzX21hc2s7Cj4gIAo+ICAJ aWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZICYmCj4gIAkgICAgZGlnX3Bv cnQtPnRjX21vZGUgIT0gVENfUE9SVF9EUF9BTFQpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0J dmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFBNUyk7Cj4gLQlpZiAoISh2YWwgJiBEUF9Q SFlfTU9ERV9TVEFUVVNfQ09NUExFVEVEKHRjX3BvcnQpKSkgewo+ICsJaWYgKCFpY2xfdGNfcGh5 X3N0YXR1c19jb21wbGV0ZShkaWdfcG9ydCkpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVz OiBQSFkgbm90IHJlYWR5XG4iLAo+ICAJCQkgICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRj X3BvcnQpKTsKPiAgCQlXQVJOX09OKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7Cj4gIAkJcmV0 dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAtCS8qCj4gLQkgKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBj YWxsZWQgbWFueSB0aW1lcyBpbiBhIHJvdyB3aXRob3V0IGFuIEhQRCBldmVudAo+IC0JICogaW4g YmV0d2Vlbiwgc28gdHJ5IHRvIGF2b2lkIHRoZSB3cml0ZSB3aGVuIHdlIGNhbi4KPiAtCSAqLwo+ IC0JdmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUENTU1MpOwo+IC0JaWYgKCEodmFsICYg RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpKSkgewo+IC0JCXZhbCB8PSBEUF9Q SFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCk7Cj4gLQkJSTkxNV9XUklURShQT1JUX1RY X0RGTEVYRFBDU1NTLCB2YWwpOwo+IC0JfQo+ICsJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRp Z19wb3J0LCBmYWxzZSk7Cj4gKwo+ICsJaWYgKGRpZ19wb3J0LT50Y19tb2RlID09IFRDX1BPUlRf TEVHQUNZKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWxpdmVfc3RhdHVzX21hc2sgPSB0Y19w b3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwo+ICAKPiAgCS8qCj4gIAkgKiBOb3cgd2Ug aGF2ZSB0byByZS1jaGVjayB0aGUgbGl2ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydCByZWNlbnRs eQo+ICAJICogYmVjYW1lIGRpc2Nvbm5lY3RlZC4gTm90IG5lY2Vzc2FyeSBmb3IgbGVnYWN5IG1v ZGUuCj4gIAkgKi8KPiAtCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAm Jgo+IC0JICAgICEoSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmIFRDX0xJVkVfU1RBVEVf VEModGNfcG9ydCkpKSB7Cj4gKwlpZiAoIShsaXZlX3N0YXR1c19tYXNrICYgQklUKFRDX1BPUlRf RFBfQUxUKSkpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nv bm5lY3RcbiIsCj4gIAkJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCkpOwo+ ICAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9ydCk7Cj4gQEAgLTE0OCw0NCArMjEzLDM2 IEBAIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0KQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gIAllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGlu dGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ICAKPiAtCS8q Cj4gLQkgKiBUQlQgZGlzY29ubmVjdGlvbiBmbG93IGlzIHJlYWQgdGhlIGxpdmUgc3RhdHVzLCB3 aGF0IHdhcyBkb25lIGluCj4gLQkgKiBjYWxsZXIuCj4gLQkgKi8KPiAtCWlmIChkaWdfcG9ydC0+ dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCB8fAo+IC0JICAgIGRpZ19wb3J0LT50Y19tb2RlID09 IFRDX1BPUlRfTEVHQUNZKSB7Cj4gLQkJdTMyIHZhbDsKPiAtCj4gLQkJdmFsID0gSTkxNV9SRUFE KFBPUlRfVFhfREZMRVhEUENTU1MpOwo+IC0JCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05P VF9TQUZFKHRjX3BvcnQpOwo+IC0JCUk5MTVfV1JJVEUoUE9SVF9UWF9ERkxFWERQQ1NTUywgdmFs KTsKPiArCXN3aXRjaCAoZGlnX3BvcnQtPnRjX21vZGUpIHsKPiArCWNhc2UgVENfUE9SVF9MRUdB Q1k6Cj4gKwljYXNlIFRDX1BPUlRfRFBfQUxUOgo+ICsJCWljbF90Y19waHlfc2V0X3NhZmVfbW9k ZShkaWdfcG9ydCwgdHJ1ZSk7Cj4gKwkJZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9B TFQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFRDX1BPUlRfVEJUX0FMVDoKPiArCQkvKiBOb3RoaW5n IHRvIGRvLCB3ZSBzdGF5IGluIFRCVC1hbHQgbW9kZSAqLwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVs dDoKPiArCQlNSVNTSU5HX0NBU0UoZGlnX3BvcnQtPnRjX21vZGUpOwo+ICAJfQo+ICAKPiAgCURS TV9ERUJVR19LTVMoIlBvcnQgJXM6IG1vZGUgJXMgZGlzY29ubmVjdGVkXG4iLAo+ICAJCSAgICAg IHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksCj4gIAkJICAgICAgdGNfcG9ydF9tb2Rl X25hbWUoZGlnX3BvcnQtPnRjX21vZGUpKTsKPiAtCj4gLQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRD X1BPUlRfVEJUX0FMVDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0 X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgIHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+IC0JCQkJICAgIGJvb2wgaXNf bGVnYWN5LCBib29sIGlzX3R5cGVjLCBib29sIGlzX3RidCkKPiArCQkJCSAgICB1MzIgbGl2ZV9z dGF0dXNfbWFzaykKPiAgewo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFz ZS5wb3J0Owo+ICAJZW51bSB0Y19wb3J0X21vZGUgb2xkX21vZGUgPSBpbnRlbF9kaWdfcG9ydC0+ dGNfbW9kZTsKPiAgCj4gLQlXQVJOX09OKGlzX2xlZ2FjeSArIGlzX3R5cGVjICsgaXNfdGJ0ICE9 IDEpOwo+IC0KPiAtCWlmIChpc19sZWdhY3kpCj4gLQkJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUg PSBUQ19QT1JUX0xFR0FDWTsKPiAtCWVsc2UgaWYgKGlzX3R5cGVjKQo+IC0JCWludGVsX2RpZ19w b3J0LT50Y19tb2RlID0gVENfUE9SVF9EUF9BTFQ7Cj4gLQllbHNlIGlmIChpc190YnQpCj4gLQkJ aW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7Cj4gLQllbHNlCj4gKwlp ZiAoIWxpdmVfc3RhdHVzX21hc2spCj4gIAkJcmV0dXJuOwo+ICAKPiArCWludGVsX2RpZ19wb3J0 LT50Y19tb2RlID0gZmxzKGxpdmVfc3RhdHVzX21hc2spIC0gMTsKPiArCj4gIAlpZiAob2xkX21v ZGUgIT0gaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUpCj4gIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAl czogcG9ydCBoYXMgbW9kZSAlc1xuIiwKPiAgCQkJICAgICAgdGNfcG9ydF9uYW1lKGRldl9wcml2 LAo+IEBAIC0yMDcsNDAgKzI2NCwxOSBAQCBzdGF0aWMgdm9pZCBpY2xfdXBkYXRlX3RjX3BvcnRf dHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIGJvb2wgaW50ZWxfdGNf cG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQt PmJhc2UuYmFzZS5kZXYpOwo+IC0JZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0 Owo+IC0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBw b3J0KTsKPiAtCWJvb2wgaXNfbGVnYWN5LCBpc190eXBlYywgaXNfdGJ0Owo+IC0JdTMyIGRwc3A7 Cj4gLQo+IC0JLyoKPiAtCSAqIENvbXBsYWluIGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwg YnV0IFZCVCBkaWRuJ3QgbWFyayB0aGUgcG9ydCBhcwo+IC0JICogbGVnYWN5LiBUcmVhdCB0aGUg cG9ydCBhcyBsZWdhY3kgZnJvbSBub3cgb24uCj4gLQkgKi8KPiAtCWlmICghZGlnX3BvcnQtPnRj X2xlZ2FjeV9wb3J0ICYmCj4gLQkgICAgSTkxNV9SRUFEKFNERUlTUikgJiBTREVfVENfSE9UUExV R19JQ1AodGNfcG9ydCkpIHsKPiAtCQlEUk1fRVJST1IoIlBvcnQgJXM6IFZCVCBpbmNvcnJlY3Rs eSBjbGFpbXMgcG9ydCBpcyBub3QgVHlwZUMgbGVnYWN5XG4iLAo+IC0JCQkgIHRjX3BvcnRfbmFt ZShkZXZfcHJpdiwgdGNfcG9ydCkpOwo+IC0JCWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9IHRy dWU7Cj4gLQl9Cj4gLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cj4gKwl1 MzIgbGl2ZV9zdGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhkaWdfcG9ydCk7 Cj4gIAo+ICAJLyoKPiAgCSAqIFRoZSBzcGVjIHNheXMgd2Ugc2hvdWxkbid0IGJlIHVzaW5nIHRo ZSBJU1IgYml0cyBmb3IgZGV0ZWN0aW5nCj4gIAkgKiBiZXR3ZWVuIFRDIGFuZCBUQlQuIFdlIHNo b3VsZCB1c2UgREZMRVhEUFNQLgo+ICAJICovCj4gLQlkcHNwID0gSTkxNV9SRUFEKFBPUlRfVFhf REZMRVhEUFNQKTsKPiAtCWlzX3R5cGVjID0gZHBzcCAmIFRDX0xJVkVfU1RBVEVfVEModGNfcG9y dCk7Cj4gLQlpc190YnQgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQlQodGNfcG9ydCk7Cj4gLQo+ IC0JaWYgKCFpc19sZWdhY3kgJiYgIWlzX3R5cGVjICYmICFpc190YnQpIHsKPiArCWlmICghbGl2 ZV9zdGF0dXNfbWFzayAmJiAhZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSB7Cj4gIAkJaWNsX3Rj X3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0KTsKPiAgCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ ICAKPiAtCWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRldl9wcml2LCBkaWdfcG9ydCwgaXNfbGVn YWN5LCBpc190eXBlYywKPiAtCQkJCWlzX3RidCk7Cj4gLQo+ICsJaWNsX3VwZGF0ZV90Y19wb3J0 X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZlX3N0YXR1c19tYXNrKTsKPiAgCWlmICghaWNs X3RjX3BoeV9jb25uZWN0KGRpZ19wb3J0KSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdGMuaAo+IGluZGV4IDk0YzYyYWM0YTE2Mi4uZTkzN2Y1MzI2OTU5IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5oCj4gQEAgLTgsNiArOCw3IEBAIHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQ7Cj4gIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKPiAgCj4gIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0 ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwo+ICt1MzIgaW50ZWxfdGNf cG9ydF9nZXRfbGFuZV9pbmZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsK PiAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmRpZ19wb3J0KTsKPiAgCj4gICNlbmRpZiAvKiBfX0lOVEVMX1RDX0hfXyAqLwoK LS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4